質問

2009年に平均的な新しいアプリを作成する場合、セキュリティとパフォーマンスの観点から、使用する最も合理的なダイジェスト機能は何ですか? (そして、状況が変わったときに、これをどのように判断できますか?)

類似 < a href = "https://stackoverflow.com/questions/184089/what-is-the-strongest-hashing-algorithm-commonly-available-today">質問 were 問い合わせ以前の回答には、SHA1、SHA2、SHA-256、SHA-512、MD5、bCrypt、およびBlowfishが含まれていました。

インテリジェントに使用すれば、これらのどれでも大部分が機能することを理解していますが、サイコロを振ってランダムに1つを選ぶのは避けたいです。ありがとう。

役に立ちましたか?

解決

NIST / FIPSガイドラインに従う:

>
  

2006年3月15日:SHA-2ファミリーの   ハッシュ関数(つまり、SHA-224、   SHA-256、SHA-384、SHA-512)   すべてのために連邦政府機関によって使用される   安全なハッシュを使用するアプリケーション   アルゴリズム。連邦政府機関は   デジタル用のSHA-1の使用をやめる   署名、デジタルタイムスタンプ、   を必要とする他のアプリケーション   すぐに衝突抵抗   実用的で、SHA-2を使用する必要があります   これらのハッシュ関数のファミリー   2010年以降のアプリケーション。2010年以降、   連邦政府機関はSHA-1のみを使用できます   次のアプリケーション用:   ハッシュベースのメッセージ認証   コード(HMAC);キー派生   関数(KDF);乱数   ジェネレーター(RNG)。使用に関係なく、   NISTは申請を奨励し、   SHA-2を使用するプロトコル設計者   すべての新しいハッシュ関数のファミリー   アプリケーションとプロトコル。

他のヒント

「ダイジェスト機能」と言います;おそらく、それを使用して「long」のダイジェストを計算することを意味します。メッセージ(パスワードのようにハッシュするだけではありません&quot; short&quot;&quot; messages&quot;)。つまり、bCryptと同様の選択肢があります。パスワードデータベースへのブルートフォース攻撃を阻止するために低速になるように設計されています。 MD5は完全に壊れており、SHA-0とSHA-1は弱すぎて適切な選択にはなりません。 Blowfishはストリーム暗号であるため(ダイジェストを生成するモードで実行できます)、あまり良い選択ではありません。

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

本当に必要なものに依存します。

実際のセキュリティが必要な場合、衝突を簡単に見つけることができるとシステムが危険にさらされるため、さまざまな機関から強く推奨されているSHA-256やSHA-512などを使用します。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top