42

現在、SHA256 とソルトを使用してパスワードをハッシュしています。SHA256 を使い続けた方がよいですか、それとも SHA512 に変更する必要がありますか?

4

5 に答える 5

72

SHA512 に切り替えても、Web サイトの安全性が向上することはほとんどありません。独自のパスワード ハッシュ関数を記述しないでください。代わりに、既存の実装を使用してください。

SHA256 と SHA512 はメッセージ ダイジェストであり、パスワード ハッシュ (またはキー派生) 機能を意図したものではありません。(ただし、メッセージ ダイジェストは、HMAC-SHA256 を使用した PBKDF2 など、KDF のビルディング ブロックとして使用できます。)

パスワード ハッシュ関数は、辞書攻撃とレインボー テーブルを防御する必要があります。辞書攻撃を防御するために、パスワード ハッシュ スキームには、可能な限り遅くするための作業要素を含める必要があります。

現在、最良の選択はおそらくArgon2です。このパスワード ハッシュ関数ファミリは、2015 年のパスワード ハッシュ コンペティションで優勝しました。

Argon2が利用できない場合、他の標準化されたパスワードハッシュ関数またはキー派生関数は、古い NIST 標準である PBKDF2 だけです標準を使用する必要がない場合、その他の選択肢にはbcryptscryptが含まれます。

ウィキペディアには、次の関数のページがあります。

編集: NIST は、SHA2 や SHA3 などのメッセージ ダイジェストを直接使用してパスワードをハッシュすることを推奨していません! NIST の推奨事項は次のとおりです。

記憶された秘密は、適切な一方向キー導出関数を使用してソルト化およびハッシュ化する必要があります。キー派生関数は、入力としてパスワード、ソルト、およびコスト ファクターを受け取り、パスワード ハッシュを生成します。それらの目的は、パスワード ハッシュ ファイルを取得した攻撃者による各パスワード推測の試行を高価なものにすることであり、したがって推測攻撃のコストを高くしたり法外なものにしたりすることです。適切な鍵導出関数の例には、パスワードベースの鍵導出関数 2 (PBKDF2) [SP 800-132] およびバルーン [BALLOON] が含まれます。

于 2013-12-18T13:08:10.127 に答える
6

ほとんどの 64 ビット プロセッサで SHA256ses の 32 ビット演算として計算すると、SHA512 は大幅に高速になる可能性があります。

于 2013-05-21T09:44:18.343 に答える
6

あなたが私に尋ねれば、これはすでにかなりよく答えられています:https://stackoverflow.com/questions/3897434/password-security-sha1-sha256-or-sha512

Jeff もハッシュに関する興味深い記事を書いています: http://www.codinghorror.com/blog/2012/04/speed-hashing.html

SHA512 は SHA256 よりも計算が非常に遅いことに注意してください。安全なハッシュのコンテキストでは、これは資産です。ハッシュの計算が遅いということは、クラックするのに計算時間がかかることを意味するため、計算コストに余裕がある場合は、SHA512 がより安全になります。

于 2012-07-24T05:05:09.043 に答える