シュノア署名とビットコイン:暗号学的アップグレード
シュノア署名の数学的基盤からECDSA比の優位性、鍵集約、MuSig2、バッチ検証、BIP-340によるTaproot統合まで深く探究します。
ビットコインの最初の12年間、すべてのトランザクション署名は楕円曲線デジタル署名アルゴリズム(ECDSA)に依存していた。機能した。しかし最適な選択ではなかった。サトシ・ナカモトがECDSAを選んだのは、広く利用可能で、よく理解されており、決定的に特許の制約がなかったからだ。数学的に優れた代替案であるシュノア署名スキームは、発明者クラウス=ペーター・シュノアが保有する特許に縛られていた。1989年に出願され1991年に付与されたその特許は、2008年に失効した — サトシがビットコインホワイトペーパーを発表したまさにその年だ。タイミングは不運だった。2009年1月のビットコインローンチ時には、ECDSAはすでにコードベースに深く組み込まれていた。
10年以上、3つのBIP(Bitcoin Improvement Proposal)、そしてSegWit以来最大のコンセンサスアップグレードを経て、ようやくシュノア署名がビットコインにもたらされた。2021年11月14日、ブロック高709,632でTaprootがアクティベートされ、BIP-340がシュノア署名をビットコインのネイティブ署名スキームとして導入した。これは単なる暗号学的な入れ替えではなかった — 鍵集約、バッチ検証、複雑なトランザクションのプライバシー強化、そしてECDSAでは決して実現できなかった将来のプロトコル最適化への道を開く基盤的改善だった。
歴史:クラウス=ペーター・シュノアと特許問題
クラウス=ペーター・シュノアはフランクフルト大学のドイツ人数学者・教授で、1989年に自身の署名スキームを発表した。そのスキームは同時代のものと比べて優雅なほど簡潔だった。1991年にNISTが標準化したDSA(デジタル署名アルゴリズム)がシュノアの特許を回避するために設計された複雑なモジュラー演算を要求したのに対し、シュノアのアプローチは直接的で、数学的にクリーンで、標準的な暗号学的仮定の下で証明可能に安全だった。
シュノアの米国特許4,995,082は1991年2月19日に付与され、17年の期間を持った。2008年2月19日に失効した。
特許の存在は暗号学の風景に深い影響を与えた。NISTは特許のあるアルゴリズムを標準化できず、DSAを特許フリーの代替として開発した。楕円曲線暗号が登場すると、ECDSA(DSAの楕円曲線変形)はこれらの同じ制限を引き継いだ。業界全体が、優れたものが特許されていたために劣った署名スキームを採用したのだ。
数学的基盤
シュノア署名がなぜ優れているかを理解するには、両スキームの数学を検証する必要がある。両方とも楕円曲線上で動作する — 具体的にはビットコインはsecp256k1曲線を使用する。両方のセキュリティは楕円曲線離散対数問題(ECDLP)の困難さに依存する。
シュノア署名スキーム
鍵生成:
- ランダムな秘密鍵
x(256ビット整数)を選択 - 公開鍵
P = x × G(secp256k1上の点)を計算
署名(メッセージ m に対して秘密鍵 x で):
- ランダムなノンス
rを選択(各署名に対して一意かつ秘密でなければならない) - ノンス点
R = r × Gを計算 - チャレンジ
e = H(R || P || m)を計算(Hはハッシュ関数、||は連結) s = r + e × xを計算(シンプルなスカラー演算、モジュラー逆元不要)- 署名はペア
(R, s)
検証(公開鍵 P、メッセージ m、署名 (R, s) が与えられて):
e = H(R || P || m)を計算s × G = R + e × Pを確認
これが機能する理由:
s × G = (r + e × x) × G = r × G + e × x × G = R + e × P
比較のためのECDSA
署名(メッセージハッシュ z に対して秘密鍵 d で):
- ランダムなノンス
kを選択 (x₁, y₁) = k × Gを計算r = x₁ mod nを計算(x座標のみ取得)s = k⁻¹ × (z + r × d) mod nを計算(kのモジュラー逆元が必要)
対比は即座に明らかだ。ECDSAはモジュラー逆元演算(計算コストが高い)を要求し、ノンス点のy座標を破棄し(情報の損失)、より複雑な検証方程式を含む。シュノアのスキームは線形的で、シンプルな加算と乗算を使い、完全なノンス点を保持する。
ECDSAに対する優位性
1. 線形性が鍵・署名集約を可能にする
シュノア署名の最も重要な優位性は線形性だ。署名方程式 s = r + e × x は秘密鍵 x とノンス r の両方において線形だ。これは複数の署名者からの署名をシンプルな加算で結合できることを意味する。
秘密鍵 x₁ と x₂ を持つ2人の署名者の場合:
- 集約公開鍵:
P_agg = P₁ + P₂ = (x₁ + x₂) × G - 各自が部分署名を計算:
s₁ = r₁ + e × x₁,s₂ = r₂ + e × x₂ - 集約署名:
s_agg = s₁ + s₂ = (r₁ + r₂) + e × (x₁ + x₂)
この集約署名は秘密鍵 (x₁ + x₂) とノンス (r₁ + r₂) を持つ単一署名者のシュノア署名と区別できない。検証者は署名が1人によって生成されたか100人によって生成されたか判別できない。
ECDSAにはこの線形性がない。署名方程式のモジュラー逆元が加法構造を破壊する。
2. 証明可能なセキュリティ
シュノア署名はランダムオラクルモデル(ROM)の下で形式的なセキュリティ証明を持つ。離散対数仮定の下で証明可能に安全だ。ECDSAには同等のセキュリティ証明がない。
3. 非展性
シュノア署名は非展性を持つ — 有効な署名を同じメッセージに対する別の有効な署名に変換する方法がない。ECDSA署名は展性がある:有効な署名 (r, s) に対して (r, n - s) も有効な署名となる。
4. バッチ検証
シュノアは効率的なバッチ検証をサポートする。複数の署名を単一のマルチ指数演算で一緒に検証できる:
(∑ s_i) × G = ∑ R_i + ∑ (e_i × P_i)
実際にはバッチ検証は典型的なブロック検証で約2-3倍の高速化を提供する。
鍵集約:MuSigとMuSig2
ナイーブなアプローチとその脆弱性
公開鍵と部分署名を単純に加算するアプローチは「不正鍵(rogue key)」攻撃に脆弱だ。攻撃者は他の参加者の公開鍵を見た後、自分の鍵を P_attack = P_attack_secret × G - P₁ - P₂ - ... と選択できる。
MuSig:最初の安全なプロトコル
MuSig(2018年、Maxwell、Poelstra、Seurin、Wuilleが発表)は鍵集約係数を導入して不正鍵問題を解決した:
a_i = H(L || P_i) ここで L = H(P₁ || P₂ || ... || P_n)
P_agg = ∑ (a_i × P_i)
MuSigは3ラウンドの通信が必要だ。
MuSig2:2ラウンド、実用的効率
MuSig2(2020年、Nick、Ruffing、Seurinが発表)は各署名者が1つの代わりに2つのノンスを使用することでプロトコルを2ラウンドに削減した。最初のラウンド(ノンス交換)は署名するメッセージが分かる前に事前に実行でき、多くの実用的なシナリオで効果的にノンインタラクティブとなる。
MuSig2の2ラウンド構造:
- ノンスラウンド(事前実行可能):各署名者が2つのノンスペア
(R_{i,1}, R_{i,2})を生成し共有 - 署名ラウンド:メッセージが与えられ、各署名者が結合ノンスを計算して部分署名を計算
MuSig2はシュノア署名を使用するビットコインマルチシグ運用に実際に実装されているプロトコルだ。
Taproot統合:BIP-340
BIP-340はPieter Wuille、Jonas Nick、Tim Ruffingが執筆し、ビットコインで使用される正確なシュノア署名スキームを規定する。
X-Only公開鍵
BIP-340は「x-only」公開鍵を使用する — 完全な33バイト圧縮公開鍵の代わりに楕円曲線点の32バイトのx座標のみを使用する。トランザクション出力あたり1バイトの節約となる。
タグ付きハッシュ
BIP-340はクロスプロトコル攻撃を防ぐために「タグ付きハッシュ」を使用する:
TaggedHash(tag, data) = SHA-256(SHA-256(tag) || SHA-256(tag) || data)
Taproot(BIP-341)との統合
Taprootでは、すべての出力が単一の32バイト公開鍵(「出力鍵」)としてエンコードされる:
-
鍵パス支出:出力鍵にシュノア署名で直接署名。他の単一鍵支出と区別不可能。MuSig2による複数鍵の集約でも、オンチェーンのフットプリントは単一鍵トランザクションと同一。
-
スクリプトパス支出:出力鍵が内部鍵の「微調整された」バージョンで、微調整が支出スクリプトのマークルツリーにコミット。
マルチシグプライバシーへの含意
Taproot以前、2-of-3マルチシグトランザクションはブロックチェーン上で即座に識別可能だった。シュノア/MuSig2鍵集約をTaprootとともに使用すると:
- オンチェーン出力は単一32バイト公開鍵
- 支出トランザクションは単一64バイトシュノア署名を含む
- 署名者数、閾値、個別公開鍵を観察者が判別不可能
すべてのトランザクションタイプがオンチェーンで同一に見えると、トランザクショングラフ全体がよりプライベートになる。
クロス入力署名集約:未来
シュノアの線形性が可能にする最も期待される将来の改善の一つがクロス入力署名集約(CISA)だ。現在のビットコインではすべてのトランザクション入力に独自の署名が必要。
CISAを使えばトランザクション内のすべての署名を単一署名に集約できる:
- 10入力トランザクション:10 × 64 = 640バイトの署名 → 64バイト(1つの集約署名)
- ネットワークレベルでトランザクションに必要な総データを約20-30%削減
CISAはまだビットコインに実装されていない。ソフトフォークが必要で技術的課題もあるが、活発に研究されている。
現在のビットコインへの実質的影響
2026年初頭時点でTaproot採用は着実に成長している:
- Taproot支出トランザクション:全トランザクションの約35-40%がTaproot入力を使用
- Taproot出力:新規出力の45%以上がTaproot(P2TR)アドレスで作成
- 鍵パス支出:Taproot支出の大多数が鍵パスを使用し、シュノアの効率性とプライバシーの利点を享受
主要ウォレットソフトウェア(Bitcoin Core、Sparrow、BlueWallet、Electrum)がTaprootアドレスをサポート。ライトニングネットワークはTaprootチャネルの使用を増やしており、チャネル開設と協力的クローズトランザクションにMuSig2鍵集約の恩恵を受けている。
結論
シュノア署名はビットコイン史上最も重要な暗号学的アップグレードを代表する。クラウス=ペーター・シュノアの1989年の特許が数十年間阻んだものを、Taprootがついに実現した:数学的に優雅で、証明可能に安全で、効率的に集約可能で、本質的にプライバシーを保護する署名スキーム。
ビットコインは最初の12年間を「十分に良い」署名スキームで過ごした。残りの存在期間は「正しい」もので過ごすだろう。