2009-03-03 11 views
2

2009年に平均的な新しいアプリを書くとき、セキュリティとパフォーマンスの点で、最も合理的なダイジェスト関数は何ですか? (条件の変化に応じそして、どのように私は、将来的にこれを決定することができますか?)ベスト汎用ダイジェスト機能?

similarquestionswereaskedは以前、答えはSHA1、SHA2、SHA-256、SHA-512、MD5、bcryptの、およびフグが含まれているとき。

インテリジェントに使用すると、これらのいずれかがうまく機能することがわかりましたが、私はサイコロを振ってランダムに1つを選んではいけません。ありがとう。

答えて

7

私はNIST/FIPS guidelinesに従ってくださいしたい:

2006年3月15日: ハッシュ関数のSHA-2ファミリー(すなわち、SHA-224、 SHA-256、SHA-384とSHA-512)安全なハッシュ アルゴリズムを使用しているすべてのアプリケーションについて、連邦政府機関によって使用される である場合があります。連邦機関は とすぐ 実用などのデジタル 署名、デジタルタイムスタンプと 衝突耐性を必要と 他の用途のためにSHA-1を使用して停止する必要があり、そして2010年以降、これらの アプリケーション用のハッシュ関数のSHA-2 ファミリを使用する必要があります。 。2010年以降 連邦政府機関は、SHA-1を0​​のみのアプリケーションで使用することがあります。 ハッシュベースのメッセージ認証 コード(HMAC)。キー導出 関数(KDF);乱数 ジェネレータ(RNG)です。使用にかかわらず、 NISTは、アプリケーションおよびプロトコルの設計者 が、新しいすべての アプリケーションおよびプロトコルにSHA-2 ハッシュ関数ファミリを使用するように推奨しています。

3

あなたは「ダイジェスト機能」と言います。おそらく、それはあなたが "長い"メッセージのダイジェストを計算するのに使うことを意味するでしょう(パスワードのような "短い"メッセージをハッシュするだけではありません)。それはbCryptと同様の選択肢が出ていることを意味します。パスワードデータベースに対する無差別な攻撃を阻止するのが遅くなるように設計されています。 MD5は完全に壊れており、SHA-0とSHA-1は弱すぎて適切な選択肢にはなりません。ブローフィッシュはストリーム暗号です(ダイジェストを生成するモードで実行することはできますが)ので、それほど良い選択でもありません。

これには、SHA-2、HAVAL、RIPEMD、WHIRLPOOLなどのハッシュ関数がいくつかあります。これらのうち、SHA-2ファミリは最も完全に暗号解読されているので、一般的な使用のための私の推奨になります。これらの2つのサイズが最も一般的であり、今後SHA-3によってサポートされる可能性が高いので、通常のアプリケーションではSHA2-256またはSHA2-512を推奨します。

+0

うん、それは私が意味していたことです(もっとはっきりしていたはずです)。ありがとう。 – Anirvan

2

これは本当に必要なものによって異なります。

実際のセキュリティが必要な場合、衝突を簡単に見つける機能がシステムを危険にさらす可能性がある場合は、SHA-256またはSHA-512のようなものを使用します。

速いものを必要としていて、何かを一意に識別するために使用することはできますが、実際のセキュリティ要件はありません(つまり、攻撃者が衝突を見つけたら厄介なことをすることはできません)私はMD5のようなものを使用します。

MD4、MD5、およびSHA-1は、予想よりも誕生日攻撃方法による衝突を検出するという意味で、より簡単に破壊可能であることが示されています。 RIPEMD-160は十分に考慮されていますが、わずか160ビットで誕生日攻撃は2^80回の操作しか必要としないため、永遠に続くことはありません。 WhirlpoolはSHA-256やSHA-512と同じバッキングを持っていませんが、SHA-256やSHA-512に問題があった場合、適切なチャネルを介してそれについて調べる可能性が高くなります。

+1

MD5をリモート暗号化に使用しないでください。これは現在、腐敗防止チェックサムです。*何もありません。それは非常に徹底的に壊れています。忘れてしまいなさい;他のハッシュ関数がうまくできないことは何もありません。 – kquinn

+0

が確認されました。セキュリティが要因の場合は、MD5またはSHA-1を使用しないでください。 – thomasrutter

+0

SHA1は依然としてまともです。しかし、MD5は完全に***壊れています。その継続使用の理由はありません。なし。 MD5を使用しないでください!偶発的な伝送問題から保護したい場合は、CRC32を使用してください。それはより速く、暗号的に安全です。それはMD5が壊れた方法です!避けてください! – kquinn

関連する問題