ファイルは、元の SHA-1 ハッシュを維持しながら悪意を持って変更される可能性がありますか?

ファイルは、元の SHA-1 ハッシュを維持しながら悪意を持って変更される可能性がありますか?

によるとこれ記事や他の多くの人によると、SHA-1 は安全ではないそうです。

私の場合、パスワードやデジタル証明書については心配していません。心配しているのはファイルの整合性です。

ファイル (ISO イメージや実行可能ファイルなど) が次のような方法で悪意を持って変更される可能性は十分にありますか。

  • 元のファイルのSHA-1ハッシュを維持し、
  • ファイルの全体的な内容と動作は維持されます (ただし、当然ながら、元々は存在しなかった悪意のあるコンテンツも含まれるようになります)

私の見解では、SHA-1 衝突を引き起こすような方法でファイルを変更すると、ファイルは完全に役に立たなくなります。ISO は完全に破損するか、実行可能ファイルは完全にスクランブル化されて、もはや実行可能ファイルではなくなります。

しかし、私の見方は間違っている可能性があります。これまでのところ、Google 検索では、SHA-1 がファイル検証に引き続き適しているという情報は何も見つかりませんでした。何か知見はありますか?

答え1

SHA-1 でこれを達成した人は誰もいません。理論的には可能ですが、まだ現実的ではありません。SHA-1 のセキュリティの低さに関する報告は、セキュリティ レベルが期待するほど高くないことを意味しており、これは、私たちが考えていたほど、この問題を心配する必要のある年数が長くないことを意味します。

特定のファイルと同じ SHA-1 ハッシュを持つファイルを作成することは、同じ SHA-1 ハッシュを持つ 2 つのファイルを自分で作成することよりも困難です。そして、私たちの知る限り、この簡単なタスクさえも、世界中のどこにもまだ達成した人はいません。しかし、明日実現できないというわけではありません。

答え2

理論的には可能ですが、まだ実現されていません。

あなたが探しているのは「ハッシュ衝突」と呼ばれるもので、同じハッシュを持つ 2 つのファイルです。SHA-1 などの暗号化ハッシュ コードは、通常、これを困難にするように設計されています。SHA-1 は 160 ビット コードであるため、重複を見つけるには平均 2^159 回のブルート フォース試行が必要になります。暗号化ハッシュに対して確実にそれよりも優れた結果を出すアルゴリズムが見つかった場合、ハッシュは「破損」していると見なされます。

MD-5 は、非常に破綻したハッシュの一例です。128 ビットの強度を持つはずで、平均 2^127 回の試行が必要です。現状では、既知の脆弱性を悪用すると、実際に必要な試行回数は 2^47 回まで少なくなります。これは 2^127 回よりはるかに少ない数です。実際、最新のコンピューティング クラスターでは 1 日もかからずに完了しています。

この例を挙げたのは、これが SHA-1 の使用法として最も適しているからです。ただし、これはハッシュが破られないようにするために暗号解析で使用される最も一般的なアプローチではありません。通常、1 つのファイルを選択し、攻撃者がそれと一致するものを探すのではなく、攻撃者が選択した 2 つのファイル間の衝突を許可します。この種の攻撃には、ベンチマークが簡単であるという利点があります。ファイルを解読するのが「難しい」とわかった場合、別のファイルも同様に強力であることを意味しますか? 攻撃者が両方のファイルを選択するこの攻撃により、最悪の事態を確実に捉えることができます。

この種の攻撃は、「誕生日攻撃簡単に言うと、誕生日攻撃を使用するとアルゴリズムの強度が半分になるため、SHA-1 では 2^80 回 (平均)、MD5 では 2^64 回 (平均) の試行が必要になります。これらはそれぞれ 160 回と 128 回の半分です。

SHA-1には、その強度を2^80から2^69に低下させる攻撃が知られています。これはあまり問題になりません。2^69回の試行は長さ時間。

しかし、歴史から、ハッシュ アルゴリズムは自然に破られるのではなく、時間の経過とともに破られることがわかっています。MD-5 のようなアルゴリズムを 2^64 から 2^47 に一夜にして解読できる人はいません。これは、多くの人がそれに対して使用している数学に関する論文を発表するにつれて、時間の経過とともに起こります。通常、アルゴリズムの開始から攻撃の複雑さが徐々に減少していくのを見ることができます (この場合、最も効果的な攻撃は通常、誕生日攻撃です)。

衝突に何らかの変化が見られるという事実は、SHA-1 がトンネルの出口に光を見出したことを示しています。SHA-1 は依然として強力ですが、現在はるかに安全な最新の SHA-3 に移行したいという要望があるかもしれません。

脅威モデルの観点から、このような決定を下すべきです。攻撃者がこのような衝突のいずれかに遭遇した場合、どの程度の損害を与えることができるか。攻撃者は、数台のラップトップにアクセスできるスクリプト キディでしょうか、それともスーパー コンピューティング クラスター全体を自由に使える政府でしょうか。攻撃者がハッシュを破るのに、どれくらいの時間枠があるでしょうか (暗号化の多くの用途には、パスワード ローテーションなどの「ガード変更」が含まれます)。これらすべてが、衝突をどの程度真剣に考慮する必要があるかに影響します。

答え3

この記事で議論されているSHA-1の欠陥は非常に具体的です。攻撃者はハッシュ値が同じ2つのものを作成できるのです(これは「衝突攻撃」と呼ばれます)。しかし、衝突攻撃には攻撃者が制御する必要があります。両方関係するファイル。攻撃者が元のファイルを制御していない場合は、衝突攻撃によって同じハッシュ値を持つ別のファイルを見つけることができません。

TLS/SSL(および一般的な署名)にとってこれが重要な理由は、攻撃者ができる両方のファイルを制御します。TLS 証明書は、ほとんどの場合、それを要求した人によって作成されます (制御できない部分は予測可能であることが多い)。そのため、衝突により、正当な証明書と不正な証明書が作成され、正当な証明書に署名されて、署名が転送される可能性があります。

ファイルの場合、同じ状況が常に当てはまるとは限りません。ファイルを作成する人が攻撃者であるという懸念がある場合 (たとえば、攻撃者が 1 つのことを独立して検証し、同じハッシュを持つ悪意のあるペイロードを送信する場合)、SHA-1 攻撃が適用され、段階的に廃止することを検討する必要があります (ただし、David Schwartz が述べたように、まだ重大ではありません)。元のファイルが信頼できる場合、攻撃者は現在知られている SHA-1 攻撃を適用することはできませんが、可能であれば段階的に廃止することを検討する必要があります (選択できる場合は、SHA-2 などの既知の攻撃のないハッシュを使用します)。


「衝突は役に立たない」という回答に対して、攻撃者は攻撃者から攻撃を受ける必要はないが、役に立つ衝突はありますが、一般的に「衝突」を「有用な衝突」に変えるというのはそれほど難しいことではありません。多くのファイル形式には、ファイルの機能に影響を与えずに何でも好きなようにできるかなりの余地があります。攻撃者は通常、衝突を起こすためにそれを変更することができます (衝突が実際に見つけられる場合)。ただし、機能部分は好きなようにできます。「学術的な攻撃」と「実際の攻撃」の間のギャップは大きい場合がありますが、「あらゆる衝突」と「有用な衝突」の間のギャップは、一般的にはるかに小さくなります。


アルゴリズムの選択とは関係のない、より深刻な問題は、ハッシュを取得する方法です。ハッシュが行うことは、問題を「実際のファイルを取得する」から「実際のハッシュ値を取得する」に移すことだけです。ファイルと同じサーバーから同じ接続タイプで送信されたハッシュ値は、悪意のある変更に対してはまったく役に立ちません (ファイルを改ざんできる攻撃者はハッシュを改ざんできます)。ハッシュは、ファイルよりもハッシュを信頼できる場合にのみ役立ちます。それが当てはまる場合もありますが (トレント、ミラー)、そうでない場合によく使用されます。したがって、整合性の検証にハッシュを使用する場合は、常にその点に十分注意する必要があります。

答え4

一般的な質問で参照されている記事の要点は、SHA1 は非推奨であり、スムーズに実行できる時間があるうちに段階的に廃止する必要があるということです。一部の領域では、Google と Microsoft が期限を強制しているため、時間がなくなってきています。

経験則非推奨テクノロジー:

  • 新しいデザインを行ったり機能を追加したりする場合は、これを使用しないでください (SHA1)。
  • 古いものを維持する場合は、いつ交換するか計画を立ててください (SHA1)。

ブルース・シュナイアーによる 2012 年のブログ投稿からの要約引用: 「重要なのは、私たちコミュニティが今すぐに SHA-1 から SHA-2/SHA-3 への移行を開始する必要があるということです。」

関連情報