2

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

以前に同様の 質問 がされ とき、回答には SHA1、SHA2、SHA-256、SHA-512、MD5、bCrypt、および Blowfish が含まれていました。

賢く使えば、これらのどれでも大部分は機能することはわかっていますが、サイコロを振ってランダムに 1 つ選ぶのは避けたいと思います。ありがとう。

4

3 に答える 3

7

NIST/FIPS ガイドラインに従います。

2006 年 3 月 15 日: ハッシュ関数の SHA-2 ファミリ (つまり、SHA-224、SHA-256、SHA-384、および SHA-512) は、安全なハッシュ アルゴリズムを使用するすべてのアプリケーションに対して連邦政府機関によって使用される可能性があります。連邦機関は、2010 年以降、デジタル署名、デジタル タイム スタンプ、および衝突耐性を必要とするその他のアプリケーションに SHA-1 を使用することをできるだけ早く停止し、これらのアプリケーションに SHA-2 ファミリーのハッシュ関数を使用する必要があります。2010 年以降、連邦機関は、 SHA-1 は、次のアプリケーションにのみ使用してください。ハッシュベースのメッセージ認証コード (HMAC)。鍵派生関数 (KDF); および乱数発生器 (RNG)。用途に関係なく、NIST はアプリケーションとプロトコルの設計者がすべての新しいアプリケーションとプロトコルに SHA-2 ファミリのハッシュ関数を使用することを推奨しています。

于 2009-03-03T01:42:00.283 に答える
3

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

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

于 2009-03-03T02:08:58.423 に答える
2

それは本当にあなたがそれを必要とするものに依存します.

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

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

MD4、MD5、および SHA-1 は、バースデー アタック メソッドを介して衝突を検出するという意味で、予想よりも簡単に解読できることが示されています。RIPEMD-160 は高く評価されていますが、わずか 160 ビットのバースデー アタックは 2^80 演算しか必要としないため、永久に続くわけではありません。SHA-256 や SHA-512 と同じような裏付けはありませんが、Whirlpool には優れた特性があり、最も強力に見えます。つまり、SHA-256 または SHA-512 に問題があった場合、適切なチャネルを通じてそれについて知る可能性が高くなります。

于 2009-03-03T02:27:22.747 に答える