厳密に言えば、bcryptは実際にテキストを暗号化します。
OrpheanBeholderScry疑い
64回。
ただし、パスワードから派生したキーとランダムに生成されたソルトを使用してそれを行います。
パスワードハッシュはハッシュではありません
「パスワード ハッシュ アルゴリズム」 (bcrypt など)の真の長所は、大量の RAM を使用することです。
SHA2 は高速になるように設計されています。あなたがリアルタイム Web サーバーで、ファイルの整合性を検証したい場合は、非常に高速に実行され、リソース使用量が非常に少ないものが必要です。これは、パスワードハッシュのアンチテーゼです。
- SHA2 は高速になるように設計されています
- SHA2 は 128 バイトの RAM で動作可能
- SHA2 はハードウェアに簡単に実装可能
- 毎秒3 億 3000 万のハッシュを計算できる USB スティック デバイスを所有しています
- 実際、私はそれらの17を所有しています
「高速」ハッシュを複数回実行する場合(たとえば、 PBDKF2 の一般的な推奨値は10,000 です)、実際にはセキュリティを追加していません。
必要なのは、ハードウェアに実装するのが難しいハッシュです。必要なのは、GPU で並列化するのが難しいハッシュです。
過去数十年にわたって、RAM がパスワード ハッシュの試みを遅くする鍵であることを学びました。カスタム ハードウェアは生の計算を実行する際に優れています (実際、CPU の 1% だけが計算専用であり、残りはマシン命令をより高速なものに変換することに専念しています。プリフェッチ、アウトオブオーダー実行、分岐予測、キャッシュ)。カスタム ハードウェアを台無しにする方法は、アルゴリズムが大量の RAM に触れる必要があるようにすることです。
- SHA2: 128 バイト
- 暗号化: 4 KB
- scrypt (設定可能): LiteCoin で 16 MB
- Argon2 (構成可能): ドキュメントの例で 64 MB
パスワードハッシュとは、単純に高速ハッシュを複数回使用することを意味するものではありません。
- 最近推奨される bcrypt のコスト ファクターは 12 です。そのため、計算には約 250 ミリ秒かかります。
- 最新のシングルコア CPU でその時間コストに匹敵するには、約 330,000 回の SHA2 の反復を実行する必要があります。
しかし、2.5W、USB、SHA2 スティックに戻ると、330 Mhashes/sec です。それを防ぐには、8,300 万回の反復が必要になります。
- CPUコストだけを追加しようとしている場合: 負けています。
- メモリコストを追加する必要があります
bcrypt は 21 年前のもので、4KB しか使用しません。それでも、MD5、SHA-1、または SHA2 ハッシュよりも無限に優れています。