SHA-256 衝突への対処
数学者の友人が指摘したのだが、10年以上存続したハッシュプロトコルはほとんど、あるいはまったく存在しないとのことだ。もし SHA-256 が明日破られたら、ビットコインの解決策はどうなるのだろうか?
BitCoin が普及すれば、暗号が破られたとしてもそれが終わりになるとは思わない。ブロックチェーンはデータをほとんど失わずにフォークできるため、BitCoin のあらゆる側面の変更が可能だ。SHA-256 が破られた場合、アドレスにより強力なハッシュ関数を採用する新バージョンの BitCoin がリリースされるだろう。ブロックに使用されるハッシュ関数の変更は、その脆弱性がなお相当な計算量を必要とするなら、必ずしも必要ではないかもしれない。新バージョンはある時点以降の SHA-256 ブロックを無視するが、古いトランザクションの大部分は生き残る。
SHA-256 の弱体化が突然ではなく漸進的な場合(個人的にはその可能性の方が高いと思う)、BitCoin は別のハッシュアルゴリズムへの切り替えプロセスを長期間にわたって引き伸ばすことができる。まず SHA-256 に加えて SHA-512(あるいは別のもの)を受け入れ、次にデフォルトで SHA-512 を使用し、最終的に新しいブロックでの SHA-256 の受け入れを停止する。
SHA-256 の弱体化が突然ではなく漸進的な場合(個人的にはその可能性の方が高いと思う)、BitCoin は別のハッシュアルゴリズムへの切り替えプロセスを長期間にわたって引き伸ばすことができる。まず SHA-256 に加えて SHA-512(あるいは別のもの)を受け入れ、次にデフォルトで SHA-512 を使用し、最終的に新しいブロックでの SHA-256 の受け入れを停止する。
「オンザフライ」で新しいハッシュ関数に切り替えることは可能なのか? その場合、古いトランザクションはすべて危殆化しないのだろうか(簡単に再計算できるため)?
SHA-256 は既に 16倍弱体化されている(友人によると。その文献は見つけられないが、彼を信頼している)。それは 2^256 のうちの 16 なので、大した問題ではないが、それでも。
これについてもう少し考えた結果、ブロックで使われるハッシュ関数が破られることは、当初思っていたよりも悲惨だと気づいた。しかし、新しい BitCoin リリースに旧チェーンの各実ブロックのセキュアなハッシュを含めることで、ハッシュ関数を「オンザフライ」で変更することはまだ可能なはずだ。(できればもっとエレガントな)何らかのメカニズムが、段階的なハッシュ変更にも使われる必要がある。
全員の残高は公開されているので、BitCoin にどのような変更が加えられても、このデータを保存することは常に可能なはずだ。
SHA-256 は非常に強力だ。MD5 から SHA1 への段階的な進歩とは違う。大規模なブレークスルーがない限り、数十年は持つだろう。
もし SHA-256 が完全に破られた場合、問題が始まる前の正直なブロックチェーンが何であったかについて合意に達し、それを固定して新しいハッシュ関数で継続できると思う。
ハッシュの崩壊が徐々に起きた場合は、秩序立った方法で新しいハッシュに移行できるだろう。ソフトウェアは特定のブロック番号以降に新しいハッシュを使い始めるようにプログラムされる。その時までに全員がアップグレードする必要がある。ソフトウェアは古いブロックの新しいハッシュを保存して、同じ古いハッシュを持つ別のブロックが使用されないようにすることができる。
SHA-256 は非常に強力だ。MD5 から SHA1 への段階的な進歩とは違う。大規模なブレークスルー攻撃がない限り、数十年は持つだろう。
もし SHA-256 が完全に破られた場合、問題が始まる前の正直なブロックチェーンが何であったかについて合意に達し、それを固定して新しいハッシュ関数で継続できると思う。
ハッシュの崩壊が徐々に起きた場合は、秩序立った方法で新しいハッシュに移行できるだろう。ソフトウェアは特定のブロック番号以降に新しいハッシュを使い始めるようにプログラムされる。その時までに全員がアップグレードする必要がある。ソフトウェアは古いブロックの新しいハッシュを保存して、同じ古いハッシュを持つ別のブロックが使用されないようにすることができる。
数学者の友人が指摘したのだが、10年以上存続したハッシュプロトコルはほとんど、あるいはまったく存在しないとのことだ。もし SHA-256 が明日破られたら、ビットコインの解決策はどうなるのだろうか?
SHA-1 は大幅に弱体化されるまで 10年以上もった。今でも、15年経ってもなお、フル SHA-1 には既知の衝突は存在しない。RIPEMD-160 も 10年以上耐えており、GOST や Tiger、おそらく他のものも同様だ。
俺の理解では、使われているハッシュアルゴリズムは完全に置き換え可能だ。SHA-256 の終わりが明らかになったら別のハッシュアルゴリズムに切り替えて新しいチェーンを始められる。ユーザーは古いコインで新しい通貨を買うことになり、古いコインのインフレを生み、新しいバージョンへの需要を生む。これは今、BC に依存する新しいサービスを作っているのと同じことだ。
新しいバージョンへの移行が難しいとは思わない 😁
俺の理解では、使われているハッシュアルゴリズムは完全に置き換え可能だ。SHA-256の終わりが明らかになったら別のハッシュアルゴリズムに切り替えて新しいチェーンを始められる。ユーザーは古いコインで新しい通貨を買うことになり、古いコインのインフレを生み、新しいバージョンへの需要を生む。これは今、BCに依存する新しいサービスを作っているのと同じことだ。
新しいバージョンへの移行が難しいとは思わない
あるいは、現行の blockchain を既存の SHA256 ハッシュに対しては受け入れる形で温存しつつ、新たに有効な SHA256 ハッシュは拒否するという手もある。
もし SHA-256 が完全に破られた場合、問題が始まる前の正直なブロックチェーンが何であったかについて合意に達し、それを固定して新しいハッシュ関数で継続できると思う。
それでは世界は、パッチが開発されて適用されるまで全てのトランザクションを止め、それが終わったら発見時点以降のすべてのトランザクションを再作成するように皆に頼むのか? たとえば大組織で 1時間に 1 万件のトランザクションを処理しているとしたら、やり直しは大変な作業になりかねない。
サトシ・ナカモトの投稿(2010年6月14日 20:39 UTC)ハッシュの崩壊が徐々に起きた場合は、秩序立った方法で新しいハッシュに移行できるだろう。ソフトウェアは特定のブロック番号以降に新しいハッシュを使い始めるようにプログラムされる。その時までに全員がアップグレードする必要がある。ソフトウェアは古いブロックの新しいハッシュを保存して、同じ古いハッシュを持つ別のブロックが使用されないようにすることができる。
それなら、量子コンピューティング理論が現実にならないことを祈ろう。