ビットコインは2021年11月のTaprootアップグレードにより、署名アルゴリズムを従来のECDSA(楕円曲線デジタル署名アルゴリズム)からSchnorr署名へと移行しました。署名とはビットコインの送金を「このコインは私が管理しています」と証明するための暗号的証拠ですが、その生成・検証方式を変えることで、プライバシー・効率・セキュリティに関する多くの問題が改善されます。
「署名アルゴリズム」と聞くと難しく感じるかもしれませんが、本質的な概念は比較的シンプルです。本記事では、ECDSAとSchnorr署名それぞれの仕組みを対比しながら、Taprootがなぜ署名方式を変えたのか、そしてその変更がビットコインユーザーにとってどのような意味を持つのかを詳しく説明します。
暗号技術の詳細な数学を理解していなくても、概念的なレベルでの理解を目指して解説していきますので、ぜひ最後までお読みください。
1. デジタル署名の基本:なぜ署名が必要なのか
1-1. 公開鍵暗号の仕組みと署名の役割
ビットコインは「公開鍵暗号」という仕組みを使って所有権を証明します。各ユーザーは秘密鍵(private key)と公開鍵(public key)のペアを持っており、秘密鍵は絶対に公開せず、公開鍵はビットコインアドレスの元となる情報として公開します。
コインを送金する際、送金者は「私が秘密鍵を知っている」ことを証明する必要がありますが、秘密鍵そのものを公開してしまうと誰でもそのコインを使えるようになってしまいます。そこで「デジタル署名」が登場します。デジタル署名は、秘密鍵と送金データ(トランザクション)を組み合わせて計算される数学的証明であり、秘密鍵を公開せずに「秘密鍵の知識」を証明できます。
1-2. ビットコイン誕生時から使われてきたECDSA
2009年のビットコイン誕生時から採用されてきたのがECDSA(Elliptic Curve Digital Signature Algorithm:楕円曲線デジタル署名アルゴリズム)です。ECDSAは楕円曲線上の数学的操作を使って署名を生成・検証します。
ビットコインが使う楕円曲線は「secp256k1」と呼ばれ、プライム体(素数を法とする有限体)上で定義されています。ECDSAはNSAが標準化したDSAアルゴリズムを楕円曲線に適用したもので、広く使われている信頼性の高い方式ですが、いくつかの理論的・実用的な制限があります。
2. ECDSAの問題点:なぜ変更が必要だったのか
2-1. ランダム性への依存とセキュリティリスク
ECDSAの最大の弱点の一つは、署名生成時にランダムな値「k」を使用する点です。同じトランザクションに対して署名を2回生成する場合でも、毎回異なるkを使わなければなりません。もし同じkを2回以上使用してしまうと、数学的に秘密鍵が逆算されてしまうという致命的な脆弱性があります。
実際に2010年のPlayStation 3のハッキング事件では、Sony がECDSA署名に固定の「k」値を使用したため秘密鍵が漏洩するという事態が発生しました。ビットコインウォレットでも、適切なランダム数生成ができない実装では同様のリスクがあり得ます。
2-2. マルチシグの非効率性
ECDSAにはもう一つ大きな問題があります。複数人が署名する「マルチシグ」を実現する場合、各署名者がそれぞれ個別の署名を生成し、すべての署名をトランザクションに含める必要があります。例えば「3人中2人の署名が必要」な場合、少なくとも2つのECDSA署名データが必要で、各署名はおよそ71〜73バイトあります。
署名データが多いほどトランザクションサイズが大きくなり、ブロックチェーン手数料が増加します。また、「このトランザクションはマルチシグだ」という情報がブロックチェーン上に公開されるため、プライバシー面でも問題があります。
3. Schnorr署名の数学的基盤:シンプルで美しい設計
3-1. Schnorrの基本的な仕組み
Schnorr署名はClaus-Peter Schnorrが1989年に発明した署名方式です。ECDSAより先に発明されましたが、Schnorrが特許を保有していたため、オープンソースの標準として広く採用されることが長年できませんでした。2008年に特許が切れたことで、ビットコインへの採用が議論され始めました。
Schnorr署名の基本的な仕組みは次の通りです。秘密鍵xを持つ署名者は、ランダムな値kを選びR = k × G(Gは楕円曲線の基点)を計算します。次に、e = Hash(R || P || m)を計算します(Pは公開鍵、mはメッセージ)。最後にs = k + e × xを計算します。署名は(R, s)のペアです。
3-2. 線形性:Schnorrが持つ最重要特性
Schnorr署名の最も重要な特性は「線形性(Linearity)」です。これはSchnorr署名において、署名と鍵を数学的に「足し合わせる」ことができる性質を指します。ECDSAにはこの性質がないため、マルチシグを実現するには各署名を個別に含める必要がありました。
Schnorrの線形性を使えば、複数の署名者の秘密鍵x1, x2の署名(R1, s1)と(R2, s2)を合成して、「一つの」署名(R, s)を作ることができます。この合成署名は、合成公開鍵P = P1 + P2に対する正当な署名として検証されます。外部からは、1人が署名したのか複数人が協力して署名したのかを区別できません。
4. MuSig:Schnorrを使ったマルチシグプロトコル
4-1. MuSigの動作原理
複数人でSchnorr署名を生成する標準的な方法が「MuSig(マルチシグナチャプロトコル)」です。MuSigでは参加者全員が3回のラウンドトリップ通信を経て一つの署名を生成します。第1ラウンドでは各参加者がランダム値のコミットメント(約束)を交換し、第2ラウンドでは実際のランダム値を公開、第3ラウンドで部分署名をまとめて最終署名を生成します。
2021年にはMuSig2と呼ばれる改良版が提案され、通信ラウンドが2回に削減されました。MuSig2はLightning Networkの実装にも採用されており、チャネルの開設・クローズ処理を効率化するために活用されています。
4-2. Musig2の実用化とLNDK実装
MuSig2はLightning Networkの主要実装であるLND(Lightning Network Daemon)でサポートが進んでいます。これにより、Lightning Networkのペイメントチャネル開設・クローズトランザクションがP2TRアドレスを使用できるようになり、チャネルトランザクションが通常の送金トランザクションと見た目上区別できなくなります。プライバシーとコスト効率の両面で大きなメリットがあります。
5. バッチ検証:ネットワーク全体の効率化
5-1. バッチ検証とは何か
Schnorr署名のもう一つの重要な利点は「バッチ検証(Batch Verification)」が可能な点です。バッチ検証とは、複数の署名を個別に一つずつ検証するのではなく、まとめて一度に検証する技術です。
ECDSAでは、各署名の検証に独立した計算が必要で、nの署名を検証するのにO(n)の計算量がかかります。Schnorr署名のバッチ検証では、nの署名をまとめて検証することで、計算量を実質的にO(1)に近づけることができます(正確には検証の計算コストが大幅に削減されます)。
5-2. フルノードの検証コスト削減
ビットコインのフルノードは、受信した全トランザクションの署名を検証する必要があります。バッチ検証を使えば、ブロック内の多数のSchnorr署名を一括検証できるため、ノードの処理負荷が軽減されます。これはビットコインネットワーク全体の効率向上につながり、より多くの一般ユーザーがフルノードを運用できる環境を整えます。
6. Schnorr署名とセキュリティ証明
6-1. ECDSAより証明が簡潔
暗号学的な観点から、Schnorr署名はECDSAよりもセキュリティ証明が簡潔で厳密です。Schnorr署名のセキュリティは「離散対数問題の困難性」という一つの前提に基づいており、ランダムオラクルモデルの下で証明可能な安全性が示されています。
一方、ECDSAのセキュリティ証明はより複雑であり、いくつかの追加的な仮定が必要です。これはECDSAが実質的に安全でないことを意味するわけではありませんが、理論的な整合性という点でSchnorrの方が優れているとされます。
6-2. 量子コンピュータへの対抗性
SchnorrとECDSAはどちらも楕円曲線上の離散対数問題に基づいているため、十分に強力な量子コンピュータに対しては同様の脆弱性を持ちます。ショアのアルゴリズムを使った量子コンピュータが実現すれば、どちらの署名方式も理論的には破られる可能性があります。ただし、現時点では実用的な量子コンピュータの実現は数十年先と考えられており、その時点でビットコインが量子耐性署名方式に移行するための準備も進んでいます。
まとめ
Schnorr署名とECDSAの最も重要な違いは「線形性」にあります。この特性によって、複数の署名を一つに合成する鍵集約が可能になり、マルチシグのプライバシー向上・手数料削減・バッチ検証による効率化が実現します。ECDSAは12年以上ビットコインを支えてきた信頼性の高い方式ですが、Schnorrへの移行によってビットコインはより安全でスケーラブルなシステムへと進化しています。
Taprootが有効化されたことで、新しいP2TRアドレスを使うウォレットはすべてSchnorr署名を利用できます。徐々に対応ウォレットが普及するにつれ、ビットコインネットワーク全体のプライバシーと効率性が向上していくと期待されています。
よくある質問(FAQ)
- Q. 既存のECDSAベースのビットコインアドレスはSchnorr署名に移行できますか?
- A. 既存のアドレス(P2PKH、P2SHなど)はそのまま使用できますが、Schnorr署名を使いたい場合はP2TRアドレス(bc1p〜)を新しく作成し、そこへ資金を移す必要があります。強制的な移行はなく、ユーザーの判断で選択できます。
- Q. Schnorr署名の採用はハードフォークではなくソフトフォークで行えたのですか?
- A. はい。P2TRというアウトプットタイプは既存のノードから見ると「誰でも使える(anyone-can-spend)」な新しい形式として扱われるため、古いノードはP2TRトランザクションを拒否しません。アップグレード済みのノードだけが新しいルールを適用します。これがソフトフォークの仕組みです。
- Q. Schnorr署名の実装はすべてのウォレットで完了していますか?
- A. 2025年時点では多くの主要ウォレットがSchnorr署名(P2TR)に対応していますが、対応状況はウォレットによって異なります。ハードウェアウォレットのLedger・TrezorもP2TRに対応しており、Sparrow WalletやElectrumなどのデスクトップウォレットも対応済みです。ただし、一部の古いウォレットやサービスではまだ非対応の場合があります。
免責事項
※本記事は情報提供を目的としており、投資を推奨するものではありません。暗号資産への投資は元本割れのリスクがあります。投資判断はご自身の責任で行ってください。