Schnorr 署名と multisig 集約

·9 分で読める·SSP Editorial Team 著
ネイビーの SSP カバー、暗いグラデーション上の鍵・盾・CPU・稲妻アイコン、Multisig Deep Dive シリーズの Schnorr 章

前回の記事では、SSP が実際にどのように multisig ウォレットをオンチェーンで構築するかを辿った:BIP48 パス、辞書順に並んだ 2 つの xpub、チェーンが検査する redeem スクリプト。その仕組みは、ある特定の署名スキームの上に成り立っている — secp256k1 曲線上の ECDSABitcoin が 2009 年に出荷したのと同じスキームで、ほとんどのチェーンが継承したものだ。

本稿は 別の 署名スキーム — Schnorr — と、その上に multisig を載せると何が変わるかについて。見出しになる変化は、Schnorr が 集約(aggregation) をサポートすることだ。正しいプロトコルの下で、n の共同署名者からの n 個の署名は 1 つの 署名にまとめられ、オンチェーンでは単一鍵からの普通の署名のように見える。ウォレットは multisig ウォレットとして振る舞うが、チェーンは決して「multi であること」を見ない。これは手数料、プライバシー、そしてどの種類の multisig が経済的に成立するかに、現実の帰結をもたらす。

TL;DR

  • ECDSA は、現在のほとんどの multisig(今日の SSP を含む)が署名に使うもの。各共同署名者は別々の署名を作り、チェーンはそれらすべてを検査する。コストとフットプリントは n に応じてスケールする。
  • Schnorr は別の署名スキームで、2021 年の Taproot アップグレードによって Bitcoin で有効になった。ECDSA には無い数学的性質 — 線形性 — を持つ。線形性のおかげで、複数の Schnorr 署名を 足し合わせて 合成鍵に対する単一の有効な署名にできる。
  • MuSig2 はその数学的性質を実用可能な multisig プロトコルへと変える、現代的で実践的なプロトコルだ。n の共同署名者は短い対話的プロトコルを走らせ、それぞれが nonce の 1 ラウンドと部分署名を 1 つずつ寄せる;結果は単一鍵の署名と区別できない 1 つの Schnorr 署名となる。
  • これは検証側では明確な勝ち — 手数料、ブロックチェーンの肥大、プライバシーがすべて利益を得る。署名側では タダ の勝ちではない:集約には注意深い nonce 取り扱いが要り、バグのある実装は秘密鍵を漏らし得る。
  • SSP は今日、サポートする各チェーンで BIP48 + ECDSA multisig を使っている。ロードマップは、チェーンが対応する場所では Schnorr/MuSig2 のパスを足すこと — ただしユーザーがすでに持っている 2-of-2 モデルを壊さずに。

署名が何をするかの 30 秒復習

電子署名は検証者に 2 つのことを証明する:このまさにこのメッセージが、この公開鍵に対応する秘密鍵を持つ誰かによって署名された。オンチェーンでは「メッセージ」はトランザクションのハッシュ、「公開鍵」はアドレス(あるいはアドレスを派生させるもの)、「検証者」はネットワーク上の各ノード。署名が通れば、トランザクションは有効;通らなければ拒否される。

ECDSA — Bitcoin とほとんどの EVM チェーンが使うスキーム — はよく理解されていて、保守的で、単独の署名者には十分機能する。問題は、複数の 署名者に同じトランザクションを認可させたい場合に起きる。ECDSA には署名をまとめる方法が無い。Two-of-two を望めば、チェーンは両方の署名を保存し、両方を検査しなければならない。Three-of-five なら 5 つの署名。トランザクションは共同署名者数に応じて大きくなる。

What is multisigプロトコル 部分を述べた — n のうち m 鍵、redeem ルール、閾値を強制するチェーン。あの前回の記事が深掘りしないのはコストだ:ECDSA の下では、これら署名のすべてがトランザクションに収まる。2-of-2 P2WSH のトランザクションは、同じ効果を持つ single-sig トランザクションよりも実際に大きく、ブロードキャストにコストがかかる。

Schnorr が変えるもの

Schnorr 署名は 1980 年代後半に最初に提案され、当時の特許不確実性のため Bitcoin の原設計では避けられた。ある特定の点で ECDSA より数学的に 清潔 だ:線形 である。s1 が鍵 P1 の下でメッセージに対する有効な署名で、s2 が同じメッセージに対する鍵 P2 の下での有効な署名であれば、s1 + s2 はそのメッセージに対する P1 + P2 の下での有効な署名になる。鍵も署名も加算可能だ。

なぜそれが重要か:チェーンに届く 前に 署名をまとめることが急に可能になる。トランザクションに 2 つの署名を入れる代わりに、1 つ — その和 — を入れる。検証者は、両方の署名者が事前に算出できる 2 つの公開鍵の に対し、その単一の署名を検査する。チェーンの視点では、結果のトランザクションは単一鍵で署名されたトランザクションと区別できない。

ECDSA はそれができない。ECDSA の数学は線形性を壊す乗法逆元を含む;ECDSA 署名の和は有効な署名にならない。だから ECDSA に基づく multisig はすべての個別署名をオンチェーンで送らねばならない。チェーンはそれらを一つ一つ検査する。

Bitcoin は 2021 年の Taproot ソフトフォークの一環として(BIP340 経由で)Schnorr 署名を出荷した。署名そのものは ECDSA 署名よりわずかに小さい(64 バイト対 ~71)が、はるかに大きな話は、その線形性が multisig と組み合わさったときに可能にすることだ。

MuSig2 — オンチェーンで 1 つの署名のように見える multisig

「Schnorr 署名は足し合わせられる」の正直な版は、注意深く やらねばならない、ということだ。素朴なアプローチ — 各共同署名者が nonce を選び、自分の部分署名を共有し、全部を足し合わせる — は、繰り返し署名すると鍵の素材を漏らし、「ローグ・キー」攻撃の系統に対して脆弱だ。実用的な集約プロトコルは両方に対して防御せねばならない。

MuSig2 はこの問題を約 10 年にわたって洗練してきた結果だ。n-of-n の Schnorr multisig の事実上の標準だ:署名時に共同署名者は nonce を 2 ラウンド交換し、各自が部分署名を作り、そのうちの 1 人が部分を足して最終の集約署名に至る。結果は単一の Schnorr 署名で、単一の集約公開鍵に対して有効で、オンチェーンでは単一鍵の署名と区別できない。

MuSig2 についていくつか重要な点:

  • 現状は n-of-n。本物の m-of-n(例:2-of-3)を集約下で得るには追加の機構が必要 — FROST が有力候補で、まだ実用化が進行中だ。だから 2026 年に SSP がきれいに集約できるのはデフォルトの 2-of-2 だ。セレクター記事の 2-of-3 以上の構成は、依然として ECDSA 風のオンチェーン可視性をほとんど使っている。
  • 依然として両共同署名者がオンラインで署名する必要がある。集約は必要な署名者の数を減らさない;最終の出力を圧縮するだけだ。UX は今日と同じ — 2 つのデバイスが同じトランザクションに署名する — が、結果の オンチェーンフットプリント は小さくなる。
  • MuSig2 のバグ実装は鍵を漏らし得る。Nonce 取り扱いは微妙だ。この理由で本番デプロイは(libsecp256k1 の MuSig2 モジュール、rust-bitcoin スタックなどの)よく監査されたライブラリに依存する。

これが今日の SSP にとって意味すること

SSP は今日、サポートする各チェーンで BIP48 由来の ECDSA multisig を使っている。2 台のデバイス、2 つの秘密鍵、オンチェーン上の 2 つの別個の署名。これは 正しい監査済み(Halborn による — 既存の 2-of-2 記事内の inside-ssp-2025-halborn-audits 参照)、そして BIP48 準拠の他のすべてのウォレットと相互運用可能だ。欠点は 2-of-2 のオンチェーンコストをフルに払うこと。

ここからのロードマップを平易に言えば:Bitcoin(Taproot が生きており安定している)向けに Schnorr/MuSig2 のコードパスを追加し、同じ 2-of-2 ウォレットを集約で署名する。ウォレットの 閾値セマンティクス は変わらない — 両方のデバイスがまだ署名する必要がある。オンチェーンのバイト が縮み、結果のトランザクションは single-sig の支出のように見える。

ユーザにとっては、これは主に次のように現れる:

  • 1 トランザクションあたり わずかに低い Bitcoin 手数料
  • 改善されたプライバシー — ウォレットがチェーン分析へ「私は multisig ウォレットだ」と叫ぶのをやめる。
  • ウォレット UI の より速い照合(アドレスごとに取得・解析するデータがやや少なくなる)。

これは セキュリティアップグレードではない — ハッキリ言うに値する。暗号は同程度に難しいが、ただ別構造にされているだけ。採用の理由は効率とプライバシーであり、生のセキュリティではない。

これがコスト、プライバシー、UX にとって意味すること

集約があるチェーン上で広く展開された後、これは 3 つの場所に着地する:

コスト。 Bitcoin の手数料はだいたいトランザクションサイズ(vbyte)に応じる。2-of-2 の ECDSA P2WSH トランザクションは、等価な Taproot-MuSig2 トランザクションよりも有意に大きい。残高が小さく少額を送るウォレットでは、相対的な手数料節約は 20–30% にもなり得る。スループットの高いビジネスでは、年間手数料の絶対的な節約は本物の金額になる。

プライバシー。 今日、ウォレットが P2WSH 2-of-2 の支出を放送すると、その事実はブロックチェーンエクスプローラを動かす誰にでも見える。洗練されたチェーン分析企業は支出パターンでアドレスをクラスタリングし、「このアドレスは multisig」は強いクラスタ信号だ。Schnorr 集約された支出は single-sig 支出と同一に見える。クラスタ信号は消える。

UX。 SSP の署名 UX — ブラウザで署名し、次に電話で確認 — は変わらない。両方のデバイスは依然として部分署名を作る;ウォレットは両方を放送する代わりに放送前にそれらを結合するだけだ。ユーザの視点では、見える唯一の変化は「ウォレットがより安く使える気がする」というもの。

地平線にはより深い UX の勝ちもある。m-of-n 集約(FROST 等経由)が本番準備になれば、前回の記事が述べたソロ・リカバリ構成のような 2-of-3 SSP ウォレットを想像できる — オンチェーンでは普通の single-sig ウォレットのように 見える。3 番目の「リカバリ」鍵は本当に 3 つ目の署名鍵だが、チェーンはそれを知る必要が決して無い。

あなたにとってこれが意味すること

要点 3 つ:

  1. SSP を正しく使うのに Schnorr を考える必要はない。 あなたが今日持つ 2-of-2 構成はよく監査された ECDSA multisig の上に作られており、集約がどう着地しようとそのままだ。シリーズの次稿(social recovery vs multisig)は集約を意図的に無視する — 誰が支出できるか の問いは 署名がオンチェーンでどう見えるか と独立だからだ。
  2. 集約は「手数料とプライバシー」のアップグレードであって、「セキュリティ」のアップグレードではない。 「MuSig2 = より安全」と売り込むウォレットを見かけたら、懐疑的になろう。よく実装された MuSig2 の暗号的安全性は、よく実装された ECDSA multisig と同程度だ;勝ちは他のところにある。
  3. ウォレットのマーケティングではなく、チェーンのサポートを見よ。 Schnorr は Bitcoin で生きており、EVM 世界では account abstraction を通じて採用されつつある。それをよくサポートするチェーンは、SSP が集約 multisig を最初に展開する場所だ;それ以外では BIP48 + ECDSA が正しく安全なデフォルトのままだ。

本シリーズの次稿 Social recovery vs multisig は焦点を暗号から運用へ移す:multisig に手を伸ばすのはいつで、ソーシャル・リカバリが勝つのはいつか?両者とも鍵紛失から守るが、答える問いは違う。SSP が今日どのデバイスを使い、なぜかの簡単な復習には、Meet SSP Wallet が出発点のままだ。

この記事をシェアする

関連記事