Argon2などの最新のKDFを使用してパスワードを保護したいとします。情報の流れは次のようになります:$hash,$salt = argon2id($password, $salt)
。
最初にSHA256/512を使用してパスワードをハッシュする利点はありますか?$hash,$salt = argon2id(sha256($password), $salt)
?
その仕様 を見ると、argon2アルゴリズムの最初のステップは、BLAKE2bハッシュ関数を使用してパスワードをハッシュすることです。したがって、最初にSHA2でパスワードをハッシュしてから、argon2idに渡すことはできません。
キー導出関数は内部でハッシュ関数を使用します。これの最もわかりやすい例はPBKDF2で、使用するハッシュ関数を選択することもできます(これは通常PBKDF2-HMAC-SHA256ですが、他の暗号化ハッシュ関数を使用するように変更できます)。
Argon2は内部的にBLAKE2b( Argon2仕様 の3.1を参照)を使用します SHA256よりもパフォーマンスが高い と最も一般的なハッシュ関数です。
BLAKE2bは、パスワードハッシュ方式の要件に正確に適合するx64プラットフォーム用に最適化されています。 SHA512も問題ありませんが、SHA256はソフトウェアではるかに遅くなり、SHA256はビットコインマイニングに使用されるため、SHA-256のカスタムハードウェアは非常に安価です–これはまさに、パスワードハッシュに必要ないものですスキーム。
したがって、一般的に、それ自体ではプレーンArgon2に比べて大幅なセキュリティの向上は得られません。これは、比較的最近のアルゴリズムですが、パスワードハッシュスキームのすべての要件を満たし、暗号化コミュニティによって吟味されています。
新しいシステムでArgon2を100%使用する理由をよりよく説明する Mediumに関する記事 があります。