99

セキュリティなどのために SHA-256 が MD5 よりも好まれていることは知っていますが、ファイルの整合性のみをチェックする方法 (つまり、パスワードの暗号化などとは関係ありません) を使用する場合、利点はありますか? SHA-256 を使用していますか?

MD5 は 128 ビットで、SHA-256 は 256 ビットなので (したがって 2 倍の大きさ)...

  1. 暗号化には最大で 2 倍の時間がかかりますか?

  2. バックアップ プログラムのように時間が重要ではなく、必要なのはファイルの整合性だけである場合、MD5 のアルゴリズムを変更することに反対したり、別の手法を提案したりする人はいますか?

  3. MD5 を使用するとチェックサムが生成されますか?

4

7 に答える 7

93

SHA256 と MDA5 はどちらもハッシュ アルゴリズムです。入力データ (この場合はファイル) を受け取り、256/128 ビットの数値を出力します。この数値はチェックサムです。実際には衝突はまれですが、無限の数の入力が同じハッシュ値になる可能性があるため、暗号化は行われません。

this answerによると、SHA256 は MD5 よりも計算に時間がかかります。

率直に言って、MD5はおそらく必要なものに適していると思います。

于 2013-01-03T13:26:52.757 に答える
23

すべての回答は、安全なハッシュを使用して仕事をする必要があることを示唆しているようですが、これらはすべて、ブルートフォース攻撃者に多くの計算能力を持たせるために遅くなるように調整されており、ニーズによってはこれが最適なソリューションではない可能性があります.

整合性と比較をチェックするためにファイルをできるだけ速くハッシュするように特別に設計されたアルゴリズムがあります ( murmurXXhash...)。明らかに、これらは安全なハッシュ アルゴリズム (つまりランダム性) の要件を満たしていないため、セキュリティのために設計されていませんが、大きなメッセージの衝突率は低いです。この機能は、セキュリティではなく速度を求めている場合に理想的です.

このアルゴリズムと比較の例は、次の優れた回答にあります:一意性と速度に最適なハッシュ アルゴリズムは? .

例として、私たちの Q&A サイトではmurmur3、ユーザーがアップロードした画像をハッシュ化するために使用しているため、ユーザーが同じ画像を複数の回答でアップロードした場合でも、一度だけ保存します。

于 2016-01-11T11:32:46.083 に答える
23

1): はい、ほとんどの CPU では、SHA-256 は MD5 の約 40% しか高速ではありません。

2) へ: そのような場合、MD5 とは異なるアルゴリズムを主張します。私は間違いなく、安全と見なされるアルゴリズムを好みます。しかし、これはもっと感覚です。これが問題となるケースは、現実的というよりむしろ構築されたものです。たとえば、バックアップ システムが MD5 ベースの証明書に対する攻撃の例に遭遇した場合、そのような例では、データが異なるが同一の MD5 チェックサムを持つ 2 つのファイルが存在する可能性があります。残りのケースでは、MD5 チェックサムが衝突 (= 異なるデータに対して同じチェックサム) するのは、意図的に引き起こされた場合のみであるため、問題ではありません。私はさまざまなハッシュ (チェックサム生成) アルゴリズムの専門家ではないため、別のアルゴリズムを提案することはできません。したがって、質問のこの部分はまだ未解決です。さらに読むことをお勧めします暗号化ハッシュ関数 -ウィキペディアのファイルまたはデータ識別子。また、そのページのさらに下には、暗号化ハッシュ アルゴリズムのリストがあります。

3) へ: MD5 は、チェックサムを計算するアルゴリズムです。このアルゴリズムを使用して計算されたチェックサムは、MD5 チェックサムと呼ばれます。

于 2013-01-03T13:22:05.000 に答える
11
  1. いいえ、それほど速くはありませんが、それほど遅くはありません
  2. バックアッププログラムの場合、MD5よりもさらに高速なものが必要になる場合があります

全体として、ファイル名に加えてMD5は絶対に安全だと思います。SHA-256は、そのサイズが原因で、処理が遅くなり、処理が難しくなります。

MD5よりも安全性の低いものを問題なく使用することもできます。誰もあなたのファイルの完全性をハッキングしようとしないなら、これも安全です。

于 2013-01-03T13:29:37.507 に答える
6

MD5はSHA256よりも高速であることが技術的に承認されているため、ファイルの整合性を検証するだけで十分であり、パフォーマンスが向上します。

次のリソースをチェックアウトできます。

于 2013-01-03T13:30:09.847 に答える
6
  1. はい、ほとんどの CPU では、SHA-256 は MD5 よりも 2 倍から 3 倍遅くなりますが、主にハッシュが長いためではありません。こちらの他の回答と、このスタック オーバーフローの質問に対する回答を参照してください。
  2. MD5 が適切でないバックアップ シナリオを次に示します。
    • バックアップ プログラムは、バックアップされる各ファイルをハッシュします。次に、各ファイルのデータをそのハッシュによって保存するため、同じファイルを 2 回バックアップすると、そのファイルのコピーは 1 つだけになります。
    • 攻撃者は、自分が制御するファイルをシステムにバックアップさせることができます。
    • 攻撃者は、バックアップから削除したいファイルの MD5 ハッシュを知っています。
    • その後、攻撃者は MD5 の既知の弱点を利用して、削除するファイルと同じハッシュを持つ新しいファイルを作成できます。そのファイルがバックアップされると、削除するファイルが置き換えられ、そのファイルのバックアップ データは失われます。
    • このバックアップ システムは、以前に遭遇したハッシュを持つファイルを置き換えないことで少し強化 (および効率化) できますが、攻撃者は、特別に構築された偽のファイルを先制的にバックアップすることで、既知のハッシュを持つターゲット ファイルがバックアップされるのを防ぐことができます。同じハッシュを持つファイル。
    • 明らかに、ほとんどのシステム (バックアップなど) は、この攻撃が実際に行われるために必要な条件を満たしていませんが、SHA-256 が MD5 よりも望ましい状況の例を示したかっただけです。作成しているシステムがこれに該当するかどうかは、MD5 と SHA-256 の特性だけではありません。
  3. はい、MD5 や SHA-256 によって生成されるような暗号化ハッシュは、チェックサムの一種です。

ハッピーハッシュ!

于 2018-02-15T08:46:33.360 に答える