GoogleのQuantum AIチームは、今週初めに、将来の量子コンピューターなら公開鍵からビットコインの秘密鍵をおよそ9分で導き出せる可能性があると述べていました。この数字はソーシャルメディア上で飛び交い、市場を震え上がらせました。
では、実際にはそれは何を意味するのでしょうか?
まずは、ビットコインのトランザクションがどのように機能するかを見てみましょう。ビットコインを送るとき、ウォレットは秘密鍵でトランザクションに署名します。秘密鍵とは、コインを所有していることを証明する秘密の数です。
その署名は、共有できるアドレスである公開鍵も明らかにします。公開鍵はネットワークにブロードキャストされ、マイナーがブロックに含めるまで、メンプールと呼ばれる待機エリアに置かれます。平均すると、その確認には約10分かかります。
秘密鍵と公開鍵は、「楕円曲線離散対数問題」と呼ばれる数学の問題によって結び付けられています。古典コンピューターでは、役に立つ時間枠内でこの数学を逆算できません。一方で、Shorのアルゴリズムと呼ばれるアルゴリズムを実行する、十分に強力な将来の量子コンピューターなら可能です。
ここで9分という部分が出てきます。Googleの論文では、量子コンピューターは、特定の公開鍵に依存しない攻撃の要素を事前に計算しておくことで、「前もって作動可能な状態(primed)」にしておけることが分かったとされています。
あなたの公開鍵がメンプールに現れたら、あとは機械が仕事を仕上げて秘密鍵を導き出すのに、さらに約9分しか必要ありません。ビットコインの平均的な確認時間は10分です。つまり、攻撃者があなたの鍵を導き出し、元のトランザクションが確定する前に資金を振り向けられる確率は、およそ41%ということになります。
それは、泥棒が何時間もかけて万能の金庫破りマシンを作り上げるようなものです(事前準備=事前の計算)。そのマシンはどんな金庫でも使えますが、新しい金庫が現れるたびに、最後の微調整だけが必要になります。そして、その最後の工程にかかるのが約9分なのです。
これがメンプール攻撃です。心配な話ではありますが、まだ存在していない量子コンピューターが必要です。Googleの論文の推定では、そうしたマシンには50万未満の物理量子ビットが必要だとされています。今日の最大級の量子プロセッサは、およそ1,000です。
より大きく、すぐに差し迫った懸念は、すでに公開鍵が恒久的に露出しているウォレットに存在する6.9百万ビットコイン、つまり総供給の約3分の1です。
これには、ネットワークの最初の数年間に使われていた、pay-to-public-keyと呼ばれる形式の初期のビットコインアドレスが含まれます。この形式では、公開鍵がデフォルトでブロックチェーン上に表示されます。さらに、アドレスを使い回しているウォレットも含まれます。というのも、あるアドレスからの支出が、残っているすべての資金について公開鍵を明らかにしてしまうからです。
これらのコインには、9分間の勝負は必要ありません。十分に強力な量子コンピューターを持つ攻撃者なら、時間に追われることなく、露出した鍵を1つずつ順に解読して、ゆっくりと進めることができます。
CoinDeskが先週火曜日に報じたように、ビットコインの2021年のTaprootアップグレードは、この状況をさらに悪化させました。Taprootはアドレスの仕組みを変更し、公開鍵がデフォルトでオンチェーン上に表示されるようになったため、意図せず、将来の量子攻撃に対して脆弱になり得るウォレットの母数が拡大しました。
ビットコインのネットワーク自体は動き続けます。マイニングはSHA-256と呼ばれる別のアルゴリズムを使っており、量子コンピューターは、現在のアプローチでは実質的に大きく高速化できません。そのため、ブロックは引き続き生成されるでしょう。
台帳も引き続き存在します。しかし、秘密鍵が公開鍵から導き出せてしまうなら、ビットコインの価値を支えている所有権に関する保証が崩れます。公開鍵が露出している人は盗難の危険にさらされ、ネットワークのセキュリティモデルに対する機関投資家の信頼が崩壊します。
対策はポスト量子暗号です。これは、壊れやすい(脆弱な)数学を、量子コンピューターでは解読できないアルゴリズムに置き換えるものです。イーサリアムは、この移行に向けて8年間取り組んできました。ビットコインは、まだ始まっていません。