web-dev-qa-db-ja.com

SHA256(ファイルの整合性をチェックするため)と比較して、MD5を使用した衝突の可能性はどれくらいですか?

最近の多くのサイトでは、ダウンロードされたファイルまたはアーカイブの整合性をチェックするためにMD5およびSHA256ハッシュを提供しています。

整合性チェックのためのSHA256ハッシュの使用はどれほど安全ですか?

注:ファイルの内容をランダムな入力と見なしてください(攻撃なし)

注:簡単な質問のようです(そして、私は wikipediaの衝突 について読みました)、それでもこのサイトで答えは見つかりません

7
Marcel

整合性チェックにSHA256ハッシュを使用すると、どれほど安全になるのでしょうか。

注:ファイルの内容をランダムな入力と見なしてください(攻撃なし)

「攻撃なし」のあなたのメモに基づいて、あなたが尋ねているように私には思えます:

「ファイルへのランダムな変更(たとえば、ダウンロード中のビットフリップ)が、元のファイルと同じ同じチェックサムを持つ新しい/異なるファイルを作成する可能性はどれくらいですか?」

MD5の場合、この確率は次のとおりです:1 /(2 ^ 128)= 2.94e-39 = 0.00000000000000000000000000000000000000294

SHA256の場合、この確率は次のとおりです。1 /(2 ^ 256)= 8.64e-78 = 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000864


重要な警告:ランダムな変更の上記の架空のケースでは、MD5とSHA256の両方が適切な選択です。ただし、実際には、MD5ハッシュ関数は壊れている(衝突が検出された)ため、眉をひそめています。したがって、実際のアドバイスは、ファイルの整合性のためにMD5ではなくSHA256を使用することです。

8
hft

衝突攻撃の機能について、いくつかの混乱があるようです。

暗号化ハッシュに必要な2つのプロパティは、 衝突抵抗プリイメージ抵抗 です。

ハッシュが衝突耐性の場合、攻撃者は同じ出力をもたらす2つの入力を見つけることができないことを意味します。ハッシュがプリイメージ耐性の場合、攻撃者は特定の出力を持つ入力を見つけることができないことを意味します。 MD5は今までのところ衝突に対して脆弱ですが、それでもプレイメージ耐性があります。


これは整合性にとって何を意味しますか?

整合性チェックを提供するために最初にデータをハッシュした当事者が悪意のないものであり、誰もが事前にデータを変更することを許可していないと信頼している場合(anyの一部データ、2つの画像、動画、またはPDF外観同一(大幅に異なる場合があります)であっても、MD5は完全性を検証するのに十分であり、SHA-256はあまり提供すべきではありません。より高いセキュリティ(MD5のプリイメージ耐性に対する将来の攻撃を禁止)。

攻撃者がデータに変更を加えた可能性がある場合(害のない変更であっても)、SHA-256の方が安全です。MD5を使用すると、攻撃者は同じハッシュで悪意のあるファイルを作成できた可能性があります。


これらの整合性チェックは役に立ちますか?

多くの場合、そうではありません。ハッシュ値を提供する同じWebサイトからHTTPS経由でファイルをダウンロードしている場合は、信頼性チェックにTLSが使用するMACをすでに利用しているため、MitMは転送中にファイルを変更できません。誰かが悪意を持ってサイトのファイルを変更できる場合は、ハッシュを変更することもできます。

ファイルのMD5またはSHA-256ハッシュを検証することが行うのは、ミラーからファイルをダウンロードし、元の提供のハッシュと照合してハッシュをチェックする場合です信頼できるサイト。

13
AndrolGenhald

MD5衝突の脆弱性が存在します そして、MD5サムが同一の2つのファイルを意図的に生成することは可能です。

SHA256衝突は知られていません。また、アルゴリズムに重大な弱点が存在しない限り、 発見される可能性は非常に低いです

ファイルが誤って破損していないことを確認するには、MD5で十分です。 意図的に変更された可能性がある場合、MD5は安全ではないため、SHA256を使用する必要があります。

3

MD5は128ビットのハッシュを作成しますが、SHA256は256ビットのハッシュを作成します。

SHA256はMD5の「2倍安全」であると言えますが、実際にはランダム衝突の可能性はどちらでも無視できます。 MD5は十分な完全性保護を提供すると思います。

意図的にMD5衝突を作成する攻撃がありますが、偶然に衝突が見つかる可能性はハッシュのサイズによって決定されるため、約2/2です。128

現在、同じSHA256ハッシュを持つ2つの別個のファイルはありません。同じMD5ハッシュを持つ異なるファイルがありますが、それらは意図的にそのように作成されているからです。

2
Sjoerd

現在、MD5とSHA256はどちらもプリイメージ攻撃に耐性があります。

これは、誰かが同じ{MD5 | SHA256}ハッシュを持つ別のファイルでファイルを置き換えることはほぼ不可能であることを意味します。

ただし、注意する必要があります

  • MD5は壊れたハッシュ関数です( 攻撃は増加するだけです( 10年前に理論的な攻撃があり、計算量は2でした123.4 )、2019年に新しいプロジェクトでこのハッシュを使い始める理由はほとんどありません。
  • MD5を使用することはお勧めしません。MD5の実際の使用は悪用できない可能性がありますが、このハッシュを使用することは悪いようです(のみ)。 。
  • 入力は期待したほどランダムではない可能性があります。CAは証明書の署名にMD5を使用しており、作成したコンテンツに対して安全であると考えていました。その後、2008年12月に、攻撃の概念の実際の証明が公開されました。
  • 常に両方を使用できますエンドユーザーを対象とする場合は、複数のハッシュ(MD5、SHA1、SHA256 ...)を指定して決定を移動できます最終ユーザーに。

したがって、MD5とSHA256のどちらを使用するかを決定する必要がある場合は、SHA256を使用してください。

1
Ángel

悪意やその他の意図的な/ MD5対応の動作を除外する場合、MD5は本当に問題ありません。

もちろんaMD5とSHA256の偶発的な衝突の可能性はありますが、SHA256のオッズははるかに低くなります。ただし、一部のコンテキストでは、MD5での偶発的な衝突の確率はfar低くなり、チェックフラグがcomsicレイによって誤って反転する可能性が低くなり、次のようになります。ハッシュが同じでなかった場合のハッシュ ここを参照 には注意が必要です。

非悪意のない入力(悪意など)に関心がある場合は、SHA256mightの方が適していますが、攻撃者が何を制御できるかによって異なります。

システムが事故防止であることを確認したいだけの場合は、どのハッシュアルゴリズムを使用するよりも、時間を費やすのに適した場所があります。

1
drjpizzle