web-dev-qa-db-ja.com

2回ハッシュするのは良いアプローチでしょうか?

SHA-2を使用してユーザーのパスワードを保存するシステムがあるとします。さて、パスワードのMD5ハッシュを取得して、結果のMD5ハッシュのSHA-2を計算するのは良いアプローチでしょうか?重複する可能性はありますか?

1
Umair Afzal

重複の可能性は常にありますが、ほとんどの場合、可能性はかなり低いです(しかし、あなたが考えるよりも高いです。誕生日の「パラドックス」を見てください)

2回ハッシュしても、追加のセキュリティが大幅に増えることはありません。これは、ハッシュ1のセキュリティ+ハッシュ2のセキュリティです。

パスワードハッシュのセキュリティを高めるには、ソルトを使用する必要があります。これにより、各パスワードにハッシュされるたびにパスワードに追加される個別のランダム文字列が与えられます。これにより、事前計算されたテーブル(レインボーテーブル)の脅威が取り除かれ、パスワード。

現在ポッドキャストのセキュリティで述べたように、パスワードを複数回ハッシュしても問題はありません。パスワードの暗号化に使用するハッシュを変更したい場合は、パスワードが再度入力されるのを待つ必要がないため、実際に推奨されます。新しいハッシュでハッシュします。新しいハッシュで古いハッシュをすべてハッシュできます。これにより、誰もが新しいハッシュのセキュリティをすぐに得ることができます。

MD5とSHA-2は、パスワードのハッシュ関数としては不適切であることも指摘しておきます。パスワードハッシュ関数は「遅い」必要があり、MD5は高速になるように設計されました(SHA-2については知りません)。Argon2、bcrypt、scrypt、またはPBKDF2などの高速化が難しい関数を使用する必要があります。

0
Topher Brink

ハッシュの目的は、任意のサイズのデータ​​を固定サイズのデータ​​に一意的かつ不可逆的にマッピングすることであるため、何のメリットもありません。

SHA2より前のMD5​​の問題

MD5衝突の例はたくさんあるので、2つのデータs1とs2が同じMD5ハッシュにつながり、同じSHA-2出力につながる可能性があります。

これがあなたの望んでいることだとは思いません。

0
8zero2.ops