web-dev-qa-db-ja.com

cryptsetupのハッシュアルゴリズム

私はcryptsetupを使用してSSDを暗号化します。使用するハッシュアルゴリズムを知りたいのですが。

まず、cryptsetupベンチマーク:

PBKDF2-sha256 262144反復/秒

PBKDF2-sha512 167397反復/秒

PBKDF2-ripemd160 362077反復/秒

PBKDF2-whirlpool 190511回/秒

私はPBKDF2-sha512を使用することを考えていましたが、おそらくPBKDF2-whirlpoolの方が良いですか?ハッシュ化のために起動時に約2秒待つので、ワールプールの場合は400k反復、sha512の場合は350kのようになります。

何が一番いいと思いますか?

2
trog

強力なパスワードハッシュ関数 のポイントは、パスワードの処理を遅くして、攻撃者がパスワードに対してブルートフォース攻撃を実行するのを困難にすることです。残念ながらそれはあなたにとっても遅くなります。これが運動の限界です。 せいぜい、関数nの時間が遅くなり、n攻撃者にとって(同じnの場合)時間は遅くなります。しかし、攻撃者は「特殊なハードウェア」(GPUやFPGAなど)を購入することができます。これにより、使用される機能によっては、すべての反復から受ける苦し​​みが軽減されます。

したがって、回避したいのは、攻撃者よりも計算タスクを増やす関数です。単純な汎用CPU、おそらく何らかのx86互換PCを使用しています。攻撃者はPCを購入できますが、同じ予算でより高い処理能力(1秒あたりのパスワード試行回数など)を提供できるGPUまたはFPGAを購入することもできます。

したがって、SHA-256とRIPEMD-160は避けてください。どちらもGPUで 著しく効率的 である32ビット整数演算に依存しています。 SHA-512の方がお買い得です。お使いのPC CPUは、64ビット操作(64ビットモードまたは32ビットモードのSSE2オペコードのいずれか)に優れていますが、一般的なGPUには適していません。 SHA-512を使用すると、GPUを使用する攻撃者のタスクが2倍または3倍難しくなります(SHA-256ほどではありませんが、GPUを使用することで得られます)。

Whirlpoolは通常、ルックアップテーブルで実装されており、GPUではおそらく非常に遅くなります(ただし、ビットスライスの実装を検討する必要があります)。ただし、Whirlpoolが(AESと同様に)FPGAにかなりうまくマッピングすることを期待できるため、FPGAの使用をためらわない上級の攻撃者を恐れる場合は、ここでWhirlpoolを使用しないでください。

要約すると、PBKDF2/SHA-512が最良の選択であると言えます(おそらく、bcryptを使用できればより良いでしょう)。ただし、そのような違いは 強力なパスワード で実現できることによって小さくなります。エントロピーの高いパスワードを使用することが防御の最前線であり、ハッシュ関数の選択よりも重要です。

2
Thomas Pornin