2

「パスワード派生バイト」を AES キーとして使用したいとします。たとえば、パスワード「topsecret」があり、その SHA-1 ハッシュ (160 ビット) を計算し、それらのバイトを AES-128 のキーとしてフィードしたいとします。

128 ビットの後で切り捨てるか、何らかの折りたたみを行う必要がありますか? AES-256はどうですか?バイトを繰り返すか、0 を埋め込むか、「展開」操作を行う必要がありますか?

後者の場合、256 ビットのパスワードのプールが 2 ^ 160 の可能な組み合わせに削減されるため、セキュリティが 160 ビットのままであることはわかっていますが、技術的な制限 (AES-160 なし) を克服しようとしているだけです。

どんな理論が言っていますか?(いいえ、128 ビットに MD5 を使用し、256 ビット長のハッシュに SHA-256 を使用することはオプションではありません)

4

2 に答える 2

5

典型的なパスワードには数十ビットのエントロピーしかなく、ハッシュ関数を介してパスワードを実行してもエントロピーは追加されません。したがって、そのようなキーは、辞書やブルート フォースを使用して簡単に攻撃されます。

最も一般的に受け入れられている解決策は、ハッシュ関数を非常に遅くすることです。このために設計されたアルゴリズムは、「パスワードベースのキー派生関数」と呼ばれます。PBKDF2 と bcrypt は、最も人気のあるものの 1 つです。

于 2013-11-08T15:50:43.673 に答える
3

理論は、それは問題ではないと言っています。0 でパディングすることも、繰り返すことでパディングすることもできます。結果のエントロピーの量は同じです。ブルート フォースも同様に困難です。

128 ビットへの切り捨てに関しては、どのように切り捨てるかは問題ではありません。一般に、ハッシュ出力のすべてのバイトは、均等にランダムで無相関であると見なされます。「よりエントロピーな」側面などはありません。

したがって、技術的には、好きなように実行してください。パスワードと同じくらい強力なままです。

于 2013-11-08T18:09:49.280 に答える