web-dev-qa-db-ja.com

実行可能ファイルの検証に関して、md5sumはどの程度安全ですか?

webサイトが提供する実際のファイルではなく、悪意のある実行可能ファイルを実行するようにだますことは可能ですか?ファイルをmd5sumすることを想定

3
Tino Uchiha

コメントはMD5コリジョンについての重要な側面をカバーしていますが、この領域、特にプリイメージ攻撃については少し誤解があると思うので、もう少し考え物(とそれを裏付けるための計算)を提供します。

webサイトから提供された実際のファイルではなく、悪意のある実行可能ファイルを実行するようにだますことは可能ですか?ファイルをmd5sumすることを想定

Yes-ish。実行可能性が大きく異なる2つの方法を次に示します。

  1. 実現可能:Webサイトのセキュリティの侵害。完了したら、新しい実行可能ファイルをアップロードし、Webサイトに投稿されたハッシュを変更します。 実現可能性はウェブサイトのセキュリティに依存します。
  2. 扱いにくい:同じ投稿されたハッシュにハッシュする悪質な実行可能ファイルを送信。悪意のある実行可能ファイルを取得し、実行可能ファイルにデータを埋め込み始め、悪意のある実行可能ファイルのMD5ハッシュが正当な実行可能ファイルと同じになるまで結果をハッシュします。 MD5はnot衝突耐性があることを発見しましたが、それでもかなり1番目と2番目のプリイメージ耐性があります(フォレストはこれについて ここ について素晴らしい説明がありました)。

2の前提条件:

  • MD5で最速の 2番目のプリイメージ攻撃 は、組み合わせの数を2 ^ 123.4に減らします(これによると paper )。つまり、9.7 ...×10 ^ 36のハッシュを計算すると、50%の確率で目的の出力ハッシュを見つけることができます(数式1を参照)
  • 最小 可能性のある悪意のあるプログラムを13バイトでハッシュします(可能性が低く、非常に保守的です)。パディングは16バイト(これにより、可能なすべての組み合わせを組み合わせるのに十分なスペースが与えられます)と合計します各プログラムの29バイトのハッシュ。
  • 8 Nvidia 1080 GPUセットアップ は、1秒あたり2x10 ^ 11 "29バイトファイル"をハッシュできます(少し積極的)。

つまり、8 Nvidia 1080 GPUセットアップを使用すると、1.5x10 ^ 26または150000000000000000000000000年50%の確率が必要になります目的のターゲットハッシュにハッシュする悪意のあるプログラム(現在の仮定-数学2を参照)。

うまくいけば、これにより、MD5チェックサムを "偽装"するのに必要な数値がわかります。そしてはい、その数はSHA256でさらにばかげています。


参照:

数学1(x1 - ((2^123.4 - 1)/2^123.4)^x = 0.5で解決します。xは、目的のターゲットハッシュに50%の確率でハッシュするためにハッシュする必要があるプログラムの数です) :

enter image description here

数学2(unitsによる)29バイトのファイルまたは実行する必要があるハッシュの数):

enter image description here

3
Thomas

ユーザーが比較するハッシュサムが、信頼できる悪意のないファイルからのものである場合は、できません。

理論的には、製造されたハッシュサムの衝突が発生する可能性があると言う人は、(パスワードのように)「すべて」のハッシュサムの衝突を必要としないことを忘れますが、ハッシュサムの衝突は最初に実行可能な実行可能ファイルでなければならず、次に私たちが望むことを正確に行います。その時点で私たちは、いいえ、それは不可能であると言っても安全である可能性について話している。

それにもかかわらず、攻撃者がダウンロードされるファイルを危険にさらすことができる場合、ユーザーが受信するハッシュサムも危険にさらす可能性があります。その場合でも、ハッシュサムはダウンロードされたものが輸送中に破損していないことを確認するという目的を果たします。ただし、これを認証しているのは攻撃者であり、(おそらく)信頼できるWebサイトではありません。

MD5に対する他の攻撃もありますが、それらすべては、最初のハッシュサムが生成される前に、攻撃者が最初に何らかの形でファイルにアクセスできることを想定しています。 (例えば、後の攻撃のために無害なファイルを準備することによって)

したがって、ハッシュサムが改ざんされていない悪意のないファイルからのものである場合は安全ですが、それ以外の場合はすべて、ハッシュサムは、Webサイトまたは攻撃者が意図したものを受け取ったことを確認するだけです。

1
ig-dev