秘密鍵ラグ構造: L1 ブロックチェーン全般
狙った公開鍵ビット長から、有効な秘密鍵[影の鍵]を奪取
(量子アニーリング対策、グローバー対策、量子ウォーク対策)

狙った公開鍵ビット長から、有効な秘密鍵[偽物]を奪取可能な構造とは?

多くのL1ブロックチェーンでは、
ユーザーの認証や署名に公開鍵と秘密鍵のペアが使われています。
このとき、多くのプロトコルでは次のような簡略化が行われています。

「公開鍵から得られるハッシュ(アドレス)と署名が一致すればOK」

つまり、公開鍵そのものではなく、
その圧縮ハッシュ(例:160ビット)をもとに署名の正当性が検証されているのです。

このとき発生する重大なリスクを「秘密鍵ラグ構造」と定義してみました。
この状況的に、公開鍵のラグプルに似ているためです。

「正当な公開鍵と同じアドレスになるような別の秘密鍵が存在しうる構造的ゆがみ
を指します。

  • 通常、secp256k1やEd25519の公開鍵は256ビット以上あります。
  • しかしアドレスは、160ビットという幅しかない、
    そんなビット長です。ハッシュで圧縮されるからです。
  • つまり、公開鍵 → ハッシュ の過程で失われた分、
    別の有効な秘密鍵が発生します
    その数は、2の96乗です。ちょっと増えた、とかではないです。
    2の96乗=79,228,162,514,264,337,593,543,950,336という値で、
    ぴったりこの数だけ別の有効な秘密鍵が生成してしまうのです。

本来、楕円曲線暗号の秘密鍵は「たった1つ」しか存在しないはずです。
しかし、公開鍵をハッシュ関数で圧縮した瞬間、
その構造に「2の96乗」=79,228,162,514,264,337,593,543,950,336個の
別の秘密鍵が同じアドレスを名乗れる「影の鍵」として、
楕円曲線暗号上にばら撒かれることになるのです。

これはまるで、ひとつの正常な秘密鍵に対して無数の別の秘密鍵がばら撒かれるようなものであり、
量子時代では、署名の正しさという判断自体が成立しなくなる恐れがあります。
しかもそれは、量子の演算精度が極めて高くなければ
成立しないショアのアルゴリズムによる脅威ではありません。
D-Waveなど、すでに商用化されている
「比較的容易な量子探索系」によって出現しうる、とても危険な構造なのです。

この結果、同じアドレスを生成する別の秘密鍵(影の鍵)が、確率的に存在してしまう探索的余白が生まれ、解の候補が無数に膨れ上がっていきます。そして量子探索系というものは、このように候補が膨大なモデルに対しては非常に強いのです。一方で、ショアのアルゴリズムのように「たった1つの解」を狙う構造は、極めて高い精度が要求されるため、むしろ苦手とされています。

ここで重要な前提があります。

ハッカーは本物の秘密鍵など求めていません。
OP_CHECKSIG(またはecrecover)が通過できて、
署名が「正当」に見えれば、別の秘密鍵でも、それでいいのです。
なぜならハッカーの目的は、そこにある資産を全額盗むことですから。

つまり……。

  • 本物の秘密鍵かどうかは、
    実際には誰も検証していないし、そんな方法はない。
  • ブロックチェーン上では
    「署名が正しい=正当」と見なされる。

この脆弱性に追い打ちをかけるのが、
量子探索(特にアニーリング型)による影の鍵の発掘です。
この構造……複数の偽鍵が「正しい署名」とみなされる空間は、
まさにアニーリングなどの量子探索系の得意分野です。

ショアのアルゴリズムは、たったひとつの正解(秘密鍵)を高精度で狙うが、
それには高性能な汎用量子コンピュータが必要です。
その一方、D-Waveのような量子アニーリング系量子マシン
「無数の候補から有効なものを見つけ出す」ことに特化しています。

この「秘密鍵ラグ構造」と、
量子探索系の得意分野を照らし合わせると、見事なまでに完全に一致しています。

量子暗号の脅威といえばショアのアルゴリズム──そればかりが語られてきました。
でも、本当に沈黙していた半分は、グローバーのアルゴリズムの方だったのです。

グローバーのアルゴリズム(Grover’s Algorithm)は、
量子コンピュータで動作する探索アルゴリズムの一種で、特定の条件を満たすデータを
“未知の中から見つけ出すという処理を、
古典コンピュータよりも大幅に高速に実行できます。

このアルゴリズムは、
暗号ハッシュ関数の逆像探索(元の入力を求める)や、
全体の総当たり探索において、
従来の常識を覆す効率を持ちます。

古典的な探索では、N個の候補を1つずつ調べるため、
平均してO(N)の時間がかかります。
しかしグローバーのアルゴリズムでは、これをO(√N)に短縮できます。
つまり、2^n個の候補がある場合、古典では2^n回かかるところを、
量子なら約2^(1/2)回で済むのです。

アドレスの検証過程(OP_EQUALVERIFY等)でハッシュに依存しない構造。これしかないです。

  • 公開鍵を圧縮しない設計(フル長アドレスとして、そのまま使う)
  • SPHINCS+などのハッシュベース署名で、短縮アドレスに依存しない構造
  • 公開鍵を晒さない構造(ZKP等)での検証(ただし匿名になる)