ビットコイン - BTC

Schnorr署名とMuSig2:ビットコインのマルチシグとプライバシーを変える暗号技術の詳解

2021年11月のTaprootアップグレードによってビットコインに導入されたSchnorr署名(Schnorr Signatures)は、暗号理論的な観点から非常に重要なイノベーションです。それまでのECDSA(楕円曲線デジタル署名アルゴリズム)に代わるこの署名方式は、マルチシグのプライバシーと効率性を根本的に変え、さらにはビットコインの将来的な機能拡張の基盤ともなっています。本記事では、Schnorr署名の数学的な基礎からMuSig2の実用的な仕組みまで、技術的な詳細を分かりやすく解説します。

デジタル署名の基礎

公開鍵暗号とデジタル署名の役割

ビットコインはデジタル署名によってコインの所有権と送金の正当性を証明します。秘密鍵を持つ者のみが有効な署名を生成でき、誰でも公開鍵を使ってその署名を検証できます。これにより、中央管理者なしにピアツーピアの価値移転が安全に実現されます。デジタル署名の安全性は、特定の数学的問題(離散対数問題)を解くことが計算量的に非現実的であることに基づいています。ビットコインが使用する楕円曲線暗号(secp256k1)は、コンパクトな鍵サイズで高いセキュリティを実現します。

ECDSAの仕組みと限界

ECDSA(楕円曲線デジタル署名アルゴリズム)はビットコインがSchnorr採用前から使用してきた署名方式です。署名生成ではランダムなnonceを生成し、それを使って署名(r, s)を計算します。検証では公開鍵と署名から生成時のnonce点を復元し、メッセージハッシュとの整合性を確認します。ECDSAの主な限界は「非線形性」にあります。複数の署名を数学的に統合することができないため、マルチシグでは各参加者の署名を個別に記録する必要があり、トランザクションサイズが増大します。また、ランダムなnonce生成に依存するため、nonce再利用が秘密鍵の漏洩につながるという実装上のリスクもあります。

Schnorr署名の数学的基礎

Schnorr署名の構造

Schnorr署名はClaus-Peter Schnorrが1989年に考案した署名方式で、数学的にシンプルで美しい構造を持ちます。署名(R, s)の生成は以下の手順で行われます。まず署名者は秘密のnonce kを生成し、楕円曲線上の点R = kGを計算します。次にチャレンジハッシュe = H(R || P || m)を計算します(Pは公開鍵、mはメッセージ)。最後に s = k + ex を計算します(xは秘密鍵)。検証者はsG = R + ePを確認することで署名の正当性を検証します。この構造の重要な特性は線形性です。s = k + e*xは線形方程式であるため、複数の署名を自然に統合できます。

Schnorr署名の線形性とその意味

Schnorr署名の線形性とは、二つの署名(R1, s1)と(R2, s2)があるとき、それらを統合した有効な署名(R1+R2, s1+s2)を作成できるという性質です。この特性がキー集約とバッチ検証を可能にします。バッチ検証とは、複数の署名を個別に検証するのではなく、一度にまとめて検証できる機能です。これによりノードが多数のトランザクションを検証する際の処理速度が向上します。また、複数の署名者が協調して一つの集約署名を生成できるため、マルチシグが外部から単一署名と区別できなくなります。この線形性はECDSAには存在しない重要な特性です。

MuSig2によるキー集約の仕組み

MuSig2プロトコルの設計原理

MuSig2(ムジグツー)はSchnorr署名の線形性を活用した安全なキー集約プロトコルです。複数の参加者が各自の公開鍵と秘密鍵を持ち、インタラクティブなプロトコルを通じて一つの集約公開鍵と署名を生成します。集約公開鍵は各参加者の公開鍵から決定論的に導出され、外部からは通常の単一公開鍵と区別がつきません。署名生成には参加者間の2ラウンドの通信が必要です(初期のMuSig1が3ラウンドだったのに対して改良)。前提として、すべての参加者が誠実に参加する必要があり、一人でも欠けると署名は生成できません。これはn-of-nマルチシグの要件に対応しています。

FROST(Flexible Round-Optimized Schnorr Threshold)

MuSig2がn-of-nマルチシグに対応するのに対して、FROSTはt-of-nマルチシグをSchnorr署名で実現するプロトコルです。例えば5名のうち3名の同意でコインを使用できる3-of-5マルチシグをFROSTで実装すると、外部からは通常の単一署名と区別がつきません。FROSTは閾値秘密共有(Shamir’s Secret Sharing)の技術を組み合わせており、セキュリティ的に頑健な設計です。現在も研究開発が進んでおり、将来的にはビットコインウォレットへの組み込みが期待されています。MuSig2とFROSTの組み合わせにより、任意のマルチシグ構成でTaprootのプライバシー恩恵が受けられるようになります。

Taprootにおける実装

BIP340(Schnorr Signatures for secp256k1)

ビットコインにSchnorr署名を導入するBIP340(Bitcoin Improvement Proposal 340)では、secp256k1楕円曲線向けの実装仕様が定義されています。重要な点として、BIP340ではnonce生成の安全性向上のためにタグ付きハッシュ(tagged hash)を採用しています。これにより、異なるコンテキストでのハッシュの混同を防ぎ、セキュリティを強化しています。また、署名はx-only pubkey(公開鍵のx座標のみ)を使用することで、y座標の曖昧さを排除し、実装を簡素化しています。BIP340はBIP341(Taproot)およびBIP342(Tapscript)と合わせてTaprootの技術仕様を構成しています。

キーパスとスクリプトパスにおける署名

TaprootのP2TRアドレスでは、コインの使用方法として「キーパス」と「スクリプトパス」の二つがあります。キーパスでは、内部公開鍵をMASのコミットメントでツイーク(調整)した公開鍵に対して単一のSchnorr署名を提供します。最もシンプルで軽量な方法で、外部からはごく普通の署名トランザクションに見えます。スクリプトパスでは、特定のスクリプトとそのマークル証明を提供し、スクリプトの条件に従った署名を行います。MuSig2を使用したマルチシグの場合、複数の参加者が集約署名を生成することでキーパスを使用でき、完全にプライベートなマルチシグが実現します。

Schnorr署名の将来的な応用

Cross-Input Signature Aggregation(CISA)

前述のCISA(Cross-Input Signature Aggregation)はSchnorr署名の線形性を活用した提案で、一つのトランザクション内の全インプットの署名を単一の集約署名にまとめる技術です。これが実現すれば、インプット数に関わらず署名のサイズが一定になり、トランザクションのデータ量が大幅に削減されます。特にCoinJoinへの恩恵が大きく、多数の参加者を集めたCoinJoinの手数料を大幅に下げることができます。CISAにはビットコインのコンセンサス変更(ソフトフォーク)が必要で、現在も技術的・社会的なコンセンサス形成が進められています。

アダプター署名とDLC・アトミックスワップ

アダプター署名(Adapter Signatures)はSchnorr署名の線形性を活用した高度な暗号技術で、特定の秘密が公開された時にのみ有効な署名になるという「条件付き署名」を実現します。これはアトミックスワップ(Atomic Swap)の実装に活用でき、異なるブロックチェーン間でのノンカストディアルな取引が可能になります。例えば、ビットコインとライトコインを信頼できる第三者なしに交換する際、アダプター署名によって両者のトランザクションが「同時に」成立するか「どちらも成立しない」かを保証できます。DLC(Discreet Log Contract)でもアダプター署名を使った実装が研究されており、プライバシーを保ちながら高度なスマートコントラクト機能を実現できます。

ECDSAからSchnorrへの移行

後方互換性と移行戦略

Taprootはソフトフォークとして実装されたため、既存のECDSAベースのP2PKHやP2WKHアドレスは引き続き有効です。古いウォレットや取引所はECDSAトランザクションを送受信し続けることができます。ただし、TaprootとSchnorrのプライバシー・効率性の恩恵を受けるには、送受信の両者が新しい形式に移行する必要があります。現時点ではTaprootアドレスの採用率は増加中ですが、まだエコシステム全体には普及していません。時間とともにTaprootの採用が進むにつれ、Schnorr署名による恩恵をより多くのユーザーが享受できるようになります。

開発者向けの実装ガイド概観

ビットコインアプリケーションを開発する上でSchnorr署名とTaprootを実装するためのライブラリが複数提供されています。libsecp256k1はBitcoin Coreが使用するC言語ライブラリで、Schnorr署名とMuSig2のリファレンス実装を含みます。Python向けにはpython-bitcoinlibやbitcoin-script、JavaScript向けにはbitcoinjsなどが対応しています。また、BDK(Bitcoin Development Kit)はRustで書かれたビットコインウォレット開発フレームワークで、TaprootとMuSig2を含む最新機能を包括的にサポートしています。開発者は公式のBIPドキュメントとテストベクターを参照しながら安全な実装を行うことが重要です。

Schnorr署名のセキュリティ分析

既知の攻撃と対策

Schnorr署名の最も重要なセキュリティ上の注意点はnonce管理です。ECDSAと同様に、同一メッセージまたは異なるメッセージに対して同じnonceを使用した場合、秘密鍵が漏洩します。BIP340では決定論的なnonce生成(RFC6979を参考にしたHMAC-DRBG)を規定しており、実装の安全性を高めています。MuSig2においてはRogue Key攻撃(不正な公開鍵を提出することで他の参加者の署名を偽造する攻撃)への対策が重要で、KeyAgg(鍵集約)時に係数を用いることで防御しています。これらの対策はBIP327(MuSig2)に詳細に記述されています。

量子コンピュータへの耐性

ECDSAとSchnorr署名はどちらも楕円曲線暗号に基づいており、理論的には十分に強力な量子コンピュータによるShorのアルゴリズムで破られる可能性があります。ただし、現在の量子コンピュータ技術では実用的な攻撃は不可能であり、暗号学的に意味ある計算能力の実現には数十年以上かかるとされています。将来的に量子コンピュータが脅威になる場合、ビットコインは量子耐性を持つ署名方式へのアップグレードが必要になります。現時点ではSchnorr署名への移行が安全性の向上に寄与しており、将来の量子耐性化への基盤としても有用です。

まとめ

Schnorr署名はTaprootを通じてビットコインに導入された重要な暗号技術で、ECDSAに比べてシンプルで安全、かつ線形性による強力な特性を持ちます。MuSig2による鍵集約によって、任意のマルチシグが外部から単一署名と区別できなくなり、ビットコインのプライバシーが大幅に向上しました。さらにFROST、アダプター署名、CISAなど次世代技術への応用も活発に研究されており、ビットコインのスマートコントラクト能力とプライバシーは今後も継続的に強化されます。暗号学的な基礎理解はビットコインの安全な利活用において重要な知識です。

よくある質問

Schnorr署名はECDSAより安全ですか?

Schnorr署名とECDSAは同等の暗号学的安全性を持つとされていますが、Schnorrはより単純な数学構造から安全性を証明でき(provable security)、実装の正確性を検証しやすいという利点があります。また、ECDSAのnonce再利用による秘密鍵漏洩リスクに対し、BIP340では決定論的nonceが採用されており、実装上のミスが起きにくい設計です。

MuSig2は現在ビットコインで使えますか?

MuSig2はTaprootを前提とした技術であり、2021年11月のTaproot有効化以降、理論的には使用可能です。BIP327としてMuSig2の仕様が策定されており、libsecp256k1にリファレンス実装が含まれています。ただし、ユーザーフレンドリーなウォレット実装はまだ発展途上です。技術的なユーザー向けにはBDKを使ったカスタムウォレットでMuSig2を利用できます。

Schnorr署名はライトニングネットワークにも影響しますか?

はい、Schnorr署名はLightning Networkにも大きな影響を与えます。Taproot対応のSimple Taproot Channelsでは、チャネルの開設・閉鎖トランザクションにSchnorr署名(MuSig2)を使用することで、ライトニングチャネルとビットコインの通常トランザクションを区別できなくなります。これによりプライバシーが向上し、将来的にはPTLC(Point Time Lock Contract)の実装によってルーティングの相関分析も困難になります。

※本記事は情報提供を目的としており、投資を推奨するものではありません。暗号資産への投資は元本割れのリスクがあります。投資判断はご自身の責任で行ってください。

Bitcoin Analyze 編集部

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください