web-dev-qa-db-ja.com

鍵導出関数が重要なのはなぜですか?

このopensslコマンドを考えてみましょう:

openssl enc -aes-256-cbc -pass pass:PASSWORD

優れた鍵導出機能を持つことがなぜ重要なのですか? 別の質問に対するこの回答 opensslのKDFは弱いため、GnuPGがopensslよりも望ましいことを示唆しています。私の理解では、暗号化されたファイルを解読するために重要なことは、AESで使用される256ビットのキーだけです。パスワードがその256ビットキーに変換される方法がなぜそれほど重要なのですか?

5
Gradient

"暗号化されたファイルを復号化するために取得することが重要な唯一のこと":私はこれがあなたの反射で間違っているところだと思いますそう言うことができます。

重要なことは、暗号化されたファイルを解読することではありませんが、パスワードを推測して他のユーザーが解読するのを防ぐことです。

したがって、適切なキー導出関数を使用すると、パスワードからキーを導出するのが計算上困難で遅くなり、攻撃者が長期間にわたって比較的少数の異なるキー候補をテストできるようになります。あなたがリンクする答えは、GPGが多数の反復を使用してこれを実装し、パスワードから実際のキーを導き出すことを言及しています。

キー導出関数がこの予防策を講じない場合、攻撃者は非常に多数のパスワード候補をテストすることができますveryすばやく(リンクの答えは「1秒あたり数千万の潜在的なパスワード(GPUで数億が達成可能になる)」と示されています)、この速度では、8文字の英数字の文字列すべてを1時間未満でカバーすることが期待できるため、パスワードは推測可能な辞書の単語である必要もありません)。

7
WhiteWinterWolf