シュノア署名の数学的基盤から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
署名(メッセージハッシュ z に対して秘密鍵 d で):
k を選択(x₁, y₁) = k × G を計算r = x₁ mod n を計算(x座標のみ取得)s = k⁻¹ × (z + r × d) mod n を計算(kのモジュラー逆元が必要)対比は即座に明らかだ。ECDSAはモジュラー逆元演算(計算コストが高い)を要求し、ノンス点のy座標を破棄し(情報の損失)、より複雑な検証方程式を含む。シュノアのスキームは線形的で、シンプルな加算と乗算を使い、完全なノンス点を保持する。
シュノア署名の最も重要な優位性は線形性だ。署名方程式 s = r + e × x は秘密鍵 x とノンス r の両方において線形だ。これは複数の署名者からの署名をシンプルな加算で結合できることを意味する。
秘密鍵 x₁ と x₂ を持つ2人の署名者の場合:
P_agg = P₁ + P₂ = (x₁ + x₂) × Gs₁ = r₁ + e × x₁, s₂ = r₂ + e × x₂s_agg = s₁ + s₂ = (r₁ + r₂) + e × (x₁ + x₂)この集約署名は秘密鍵 (x₁ + x₂) とノンス (r₁ + r₂) を持つ単一署名者のシュノア署名と区別できない。検証者は署名が1人によって生成されたか100人によって生成されたか判別できない。
ECDSAにはこの線形性がない。署名方程式のモジュラー逆元が加法構造を破壊する。
シュノア署名はランダムオラクルモデル(ROM)の下で形式的なセキュリティ証明を持つ。離散対数仮定の下で証明可能に安全だ。ECDSAには同等のセキュリティ証明がない。
シュノア署名は非展性を持つ - 有効な署名を同じメッセージに対する別の有効な署名に変換する方法がない。ECDSA署名は展性がある:有効な署名 (r, s) に対して (r, n - s) も有効な署名となる。
シュノアは効率的なバッチ検証をサポートする。複数の署名を単一のマルチ指数演算で一緒に検証できる:
(∑ s_i) × G = ∑ R_i + ∑ (e_i × P_i)
実際にはバッチ検証は典型的なブロック検証で約2-3倍の高速化を提供する。
公開鍵と部分署名を単純に加算するアプローチは「不正鍵(rogue key)」攻撃に脆弱だ。攻撃者は他の参加者の公開鍵を見た後、自分の鍵を P_attack = P_attack_secret × G - P₁ - P₂ - ... と選択できる。
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(2020年、Nick、Ruffing、Seurinが発表)は各署名者が1つの代わりに2つのノンスを使用することでプロトコルを2ラウンドに削減した。最初のラウンド(ノンス交換)は署名するメッセージが分かる前に事前に実行でき、多くの実用的なシナリオで効果的にノンインタラクティブとなる。
MuSig2の2ラウンド構造:
(R_{i,1}, R_{i,2}) を生成し共有MuSig2はシュノア署名を使用するビットコインマルチシグ運用に実際に実装されているプロトコルだ。
BIP-340はPieter Wuille、Jonas Nick、Tim Ruffingが執筆し、ビットコインで使用される正確なシュノア署名スキームを規定する。
BIP-340は「x-only」公開鍵を使用する - 完全な33バイト圧縮公開鍵の代わりに楕円曲線点の32バイトのx座標のみを使用する。トランザクション出力あたり1バイトの節約となる。
BIP-340はクロスプロトコル攻撃を防ぐために「タグ付きハッシュ」を使用する:
TaggedHash(tag, data) = SHA-256(SHA-256(tag) || SHA-256(tag) || data)
Taprootでは、すべての出力が単一の32バイト公開鍵(「出力鍵」)としてエンコードされる:
Taproot以前、2-of-3マルチシグトランザクションはブロックチェーン上で即座に識別可能だった。シュノア/MuSig2鍵集約をTaprootとともに使用すると:
すべてのトランザクションタイプがオンチェーンで同一に見えると、トランザクショングラフ全体がよりプライベートになる。
シュノアの線形性が可能にする最も期待される将来の改善の一つがクロス入力署名集約(CISA)だ。現在のビットコインではすべてのトランザクション入力に独自の署名が必要。
CISAを使えばトランザクション内のすべての署名を単一署名に集約できる:
CISAはまだビットコインに実装されていない。ソフトフォークが必要で技術的課題もあるが、活発に研究されている。
2026年初頭時点でTaproot採用は着実に成長している:
主要ウォレットソフトウェア(Bitcoin Core、Sparrow、BlueWallet、Electrum)がTaprootアドレスをサポート。ライトニングネットワークはTaprootチャネルの使用を増やしており、チャネル開設と協力的クローズトランザクションにMuSig2鍵集約の恩恵を受けている。
シュノア署名はビットコイン史上最も重要な暗号学的アップグレードを代表する。クラウス=ペーター・シュノアの1989年の特許が数十年間阻んだものを、Taprootがついに実現した:数学的に優雅で、証明可能に安全で、効率的に集約可能で、本質的にプライバシーを保護する署名スキーム。
ビットコインは最初の12年間を「十分に良い」署名スキームで過ごした。残りの存在期間は「正しい」もので過ごすだろう。