ビットコイン・インスティテュート

SHA-256衝突への対処

数学者の友人が指摘したのだが、10年以上存続したハッシュプロトコルはほとんど、あるいはまったく存在しないとのことだ。もしSHA-256が明日破られたら、ビットコインの解決策はどうなるのだろうか?

BitCoinが普及すれば、暗号が破られたとしてもそれが終わりになるとは思わない。ブロックチェーンはデータをほとんど失わずにフォークできるため、BitCoinのあらゆる側面の変更が可能だ。SHA-256が破られた場合、アドレスにより強力なハッシュ関数を採用する新バージョンのBitCoinがリリースされるだろう。ブロックに使用されるハッシュ関数の変更は、その脆弱性がなお相当な計算量を必要とするなら、必ずしも必要ではないかもしれない。新バージョンはある時点以降のSHA-256ブロックを無視するが、古いトランザクションの大部分は生き残る。

SHA-256の弱体化が突然ではなく漸進的な場合(個人的にはその可能性の方が高いと思う)、BitCoinは別のハッシュアルゴリズムへの切り替えプロセスを長期間にわたって引き伸ばすことができる。まずSHA-256に加えてSHA-512(あるいは別のもの)を受け入れ、次にデフォルトでSHA-512を使用し、最終的に新しいブロックでのSHA-256の受け入れを停止する。

Xunie 2010年6月14日04:30 UTC
マイケル・マーカートの投稿(2010年6月14日02:34 UTC)

SHA-256の弱体化が突然ではなく漸進的な場合(個人的にはその可能性の方が高いと思う)、BitCoinは別のハッシュアルゴリズムへの切り替えプロセスを長期間にわたって引き伸ばすことができる。まずSHA-256に加えてSHA-512(あるいは別のもの)を受け入れ、次にデフォルトでSHA-512を使用し、最終的に新しいブロックでのSHA-256の受け入れを停止する。

ユーザーのコインが失われてしまうのでは?

つまり、「オンザフライ」で新しいハッシュ関数に切り替えることは可能なの? その場合、古いトランザクションはすべて危殆化しないのだろうか(簡単に再計算できるため)?

SHA-256は既に16倍弱体化されている(友人によると。その文献は見つけられないが、彼を信頼している)。それは2^256のうちの16なので、大した問題ではないが、それでも。

これについてもう少し考えた結果、ブロックで使われるハッシュ関数が破られることは、当初思っていたよりも悲惨だと気づいた。しかし、新しいBitCoinリリースに旧チェーンの各実ブロックのセキュアなハッシュを含めることで、ハッシュ関数を「オンザフライ」で変更することはまだ可能なはずだ。(できればもっとエレガントな)何らかのメカニズムが、段階的なハッシュ変更にも使われる必要がある。

全員の残高は公開されているので、BitCoinにどのような変更が加えられても、このデータを保存することは常に可能なはずだ。

SHA-256は非常に強力だ。MD5からSHA-1への段階的な改良とは違う。よほど大規模な画期的攻撃でもない限り、数十年はもつ。

もしSHA-256が完全に破られた場合、問題が始まる前の正直なブロックチェーンが何であったかについて合意に達し、それを固定して新しいハッシュ関数で継続できると思う。

もしハッシュの崩壊が徐々に進むなら、新しいハッシュへ秩序立てて移行できる。ソフトウェアは、特定のブロック番号以降、新しいハッシュを使い始めるように組んでおけばいい。その時までに全員がアップグレードする必要がある。ソフトウェアは古いブロックの新しいハッシュを保存して、同じ古いハッシュを持つ別のブロックが使用されないようにすることができる。

EricJ2190 2010年7月19日00:44 UTC
エリック・スワンソンの投稿(2010年6月14日01:01 UTC)

数学者の友人が指摘したのだが、10年以上存続したハッシュプロトコルはほとんど、あるいはまったく存在しないとのことだ。もしSHA-256が明日破られたら、ビットコインの解決策はどうなるのだろうか?

SHA-1は大幅に弱体化されるまで10年以上もった。今でも、15年経ってもなお、フルSHA-1には既知の衝突は存在しない。RIPEMD-160も10年以上耐えており、GOSTやTiger、おそらく他のものも同様だ。

Cdecker 2010年7月27日21:02 UTC

私の理解では、使われているハッシュアルゴリズムは完全に置き換え可能だ。SHA-256の終わりが明らかになったら別のハッシュアルゴリズムに切り替えて新しいチェーンを始められる。ユーザーは古いコインで新しい通貨を買うことになり、古いコインのインフレを生み、新しいバージョンへの需要を生む。これは今、BCに依存する新しいサービスを作っているのと同じことだ。

新しいバージョンへの移行が難しいとは思わない 😁

Olipro 2010年7月27日21:04 UTC
Cdeckerの投稿(2010年7月27日21:02 UTC)

私の理解では、使われているハッシュアルゴリズムは完全に置き換え可能だ。SHA-256の終わりが明らかになったら別のハッシュアルゴリズムに切り替えて新しいチェーンを始められる。ユーザーは古いコインで新しい通貨を買うことになり、古いコインのインフレを生み、新しいバージョンへの需要を生む。これは今、BCに依存する新しいサービスを作っているのと同じことだ。

新しいバージョンへの移行が難しいとは思わない

あるいは、現行のblockchainを既存のSHA256ハッシュに対しては受け入れる形で温存しつつ、新たに有効なSHA256ハッシュは拒否するという手もある。

Inedible 2010年8月21日15:03 UTC
サトシ・ナカモトの投稿(2010年6月14日20:39 UTC)

もしSHA-256が完全に破られた場合、問題が始まる前の正直なブロックチェーンが何であったかについて合意に達し、それを固定して新しいハッシュ関数で継続できると思う。

それでは世界は、パッチが開発されて適用されるまで全てのトランザクションを止め、それが終わったら発見時点以降のすべてのトランザクションを再作成するように皆に頼むことになるのかな? たとえば大組織で1時間に1万件のトランザクションを処理しているとしたら、やり直しは大変な作業になりかねない。

サトシ・ナカモト

もしハッシュの崩壊が徐々に進むなら、新しいハッシュへ秩序立てて移行できる。ソフトウェアは、特定のブロック番号以降、新しいハッシュを使い始めるように組んでおけばいい。その時までに全員がアップグレードする必要がある。ソフトウェアは古いブロックの新しいハッシュを保存して、同じ古いハッシュを持つ別のブロックが使用されないようにすることができる。

それなら、量子コンピューティング理論が現実にならないことを祈ろう。