web-dev-qa-db-ja.com

Gitは暗号攻撃をクラウドソーシングしていますか?

強力な暗号ハッシュは衝突を起こしにくくします。多くの暗号プロトコルはその事実に基づいています。しかし、Gitはオブジェクト識別子として SHA-1 ハッシュを使用しています。したがって、たくさんのハッシュが既に公開されており、それらを再現する方法の詳細とともに、ウェブのGitリポジトリに公開されています。

これが利用される可能性があるいくつかのプロトコルに対する既知の攻撃はありますか? 「まあ、この未知のプレーンテキストを同じSHA-1ハッシュを持つ他のプレーンテキストで置き換えると、何か悪いことができるので、衝突を計算する代わりに、グーグルで検索します。」もちろん、すべてのハッシュのスペースはまだGitコミットでカバーされているわけではありませんが、それでも、Gitコミットがすべて実行されると、SHA-1ハッシュの計算にかなりのCPU時間を要する可能性があります。しかし、その推測が正当化されるかどうかはわかりません。

私の知る限り、このような攻撃は、ハッシュが表示されていて、ハッシュが生成されたプレーンテキストが見えない場合にのみ機能しますが、生成された一部の暗号テキスト、および別のテキストも暗号化できます。したがって、これは暗号化はできるが復号化できない公開鍵ベースのプロトコルに適用される可能性があるようです。さらに、衝突するプレーンテキストを制御することはできないため、一部の金融取引の受益者として自分の名前を付けるなどの明白なことは機能しません。このようなクラウドソースのハッシュ衝突が無視できない確率で深刻な問題を引き起こす可能性があるシナリオはありますか?

48
MvG

GitはSHA-1の生産をクラウドソーシングしていますか preimages ?意味のある程度ではありません。

Githubは、追跡しているコミットの数を明らかにしていませんが、おそらく数十億以下です。比較のために、1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976の可能なSHA-1ハッシュがあるため、関心のある任意のハッシュに一致する平文を見つける確率は事実上存在しません。

50
Mark

おそらく、他の誰かが計算したハッシュを取得するよりも、小さな任意のテキストからより高速に独自のSHA1ハッシュを計算できます。しかし、世界中の原子と同じくらい多くの可能なSHA1ダイジェストがあります。これは、すべての既知のダイジェストのリストを保持し、そのリストを検索する場合の課題を示しています。

13
rvdheij

Gitで見つかったSHA-1ハッシュのそれぞれを計算するために費やした人間の努力の量は重要です。つまり、その方法で計算されるハッシュの数はかなり制限されます。

衝突を検出したい場合は、ハッシュごとに人間の労力を必要とせず、各ハッシュに費やすコンピューター時間はほとんどありません。

ビットコインは、ブルートフォースによるSHA-1衝突を見つけるために必要な2 ^ 80暗号操作を実行するのに十分な計算能力を持つ唯一のシステムである可能性があります。ただし、この計算能力のほとんどは SHA-2 のみを実行する特殊なハードウェアであり、SHA-1ハッシュの計算に転用することはできません。

それでも、そのようなブルー​​トフォース攻撃に必要な展開の規模についてのアイデアは提供されます。ビットコインは、2 ^ 80暗号操作が実行可能であることを証明しています。その理由だけで、SHA-1 ASAPよりも強力なハッシュに移行する必要があります。

ビットコインがSHA-1に基づいていた場合、衝突はすでに発生していました。そして、それはSHA-1の弱点を利用することさえせずに、力ずくで行われたでしょう。これは、ビットコインは常にハッシュを計算するだけであり、それを行うための専用ハードウェアを備えているためです。

ビットコインで使用される実際のハッシュ関数は、SHA-1よりも出力が大きいため、衝突が発生した可能性はほとんどありません。さらに、現在のビットコインはほとんどのハッシュをすぐに破棄するため、衝突が発生したかどうかを確認するには別の設計が必要でした。そのため、衝突が発生したとしても、それについてはわかりません。

10
kasperd