Moneroのステルスアドレスとリング署名の違いを徹底解説
Moneroのステルスアドレスとリング署名の違いを徹底解説
2026年4月、Moneroネットワークではおよそ120万件の取引が処理されましたが、そのうち送信者・受信者・正確な金額のいずれかが公開台帳上で明らかになった取引は一件も存在しません。この性質は、単一の暗号技術によってもたらされているわけではありません。少なくとも三つの異なる層が重なり合うことで初めて成立しており、そのうちの二つ――ステルスアドレスとリング署名――は初心者だけでなく、長年Bitcoinに触れてきた経験者ですら混同しがちな概念です。両者はMoneroの解説記事で必ず同じ段落に登場し、どちらも「Moneroを匿名にしている仕組み」とひとくくりに語られがちです。しかし実際には、両者は同じ取引の異なる側面を保護しており、両者を混同してしまうと、チェーン観測者から何が見えて何が見えないのかを正確に把握することができなくなります。
MoneroSwapperでは、こうした質問をほぼ毎日のように受け取ります。多くの場合、当サービスのスワップ画面を使ってみてKYCが不要であることに気づき、その暗号学的な根拠を理解したいという方々からです。本記事では、両方のプリミティブを丁寧に分解し、両者が重なり合う部分と切り離されている部分、そしてもし明日プロトコルからどちらか一方が消えたら何が漏洩するのかを順を追って解説します。読み終わる頃には、それぞれの技術がどの問題を解いているのか、なぜどちらか一方でも欠ければMoneroのプライバシー保証が崩壊するのかを、明確に理解できるはずです。
両者を混同するとメンタルモデルが崩れる理由
Moneroのプライバシーを「匿名性を担う仕組み」という一つのバケツでまとめて考えてしまう人は、決まって三つの典型的な誤りに陥ります。第一に、「ビューキーを共有してもリング署名が全てを守ってくれるから安全だ」と思い込むこと。第二に、「リングサイズを大きくすれば受信側のプライバシーも強化される」と勘違いすること。第三に、「支払い受取人を匿名化している仕組みと、送信側が入力を選ぶ際に身を隠している仕組みは同じものだ」と信じてしまうことです。いずれも事実ではなく、すべて実運用上の重大なミスにつながります。
送信側のプライバシーと受信側のプライバシーを切り分けて理解することは、Moneroを正しく扱うために絶対に必要な視点です。Moneroのプロトコルは、両者にまったく異なる暗号技術を適用しています。なぜなら、解くべき問題が根本的に異なるからです。「誰があなたに支払っているか」を隠すには、公開アドレスとオンチェーン上のアウトプットを結びつけられないようにする必要があります。一方、「自分が過去のどのアウトプットを使っているか」を隠すには、自分のインプットを多数のデコイ(おとり)群と区別不可能にする必要があります。両者は対称な問題ではありません。
- 受信側のプライバシー: ステルスアドレスが担当します(受取人の公開アドレスから導出される一回限りの出力鍵)。
- 送信側のプライバシー: リング署名が担当します(2020年10月のハードフォーク以降はCLSAG方式)。
- 金額のプライバシー: Bulletproofs+のレンジ証明を組み合わせたRingCTが担当します――これは独立した第三の層です。
「Moneroは追跡可能か?」という問いに正直に答えるなら、その答えは、質問者が三つの層のどれを念頭に置いているかによって変わります。ビューキーの漏洩が損なうのは第一の層だけです。リングの選び方が弱いと損なわれるのは第二の層だけです。そして将来Bulletproofs+に致命的な欠陥が見つかった場合に損なわれるのは第三の層だけです。これらは互いに独立して破綻し得るため、それぞれを独立した概念として理解することが極めて重要なのです。
ステルスアドレスとは何か
ステルスアドレスとは、支払いを行う側がその瞬間に生成する一回限りの公開鍵のことです。誰かが同じMonero公開アドレス宛に支払いを行うたびに、毎回まったく新しい、数学的にも無関係な宛先鍵がチェーン上に現れます。同じウォレットに向けて、同じ送信者から、同じ時間帯に複数の支払いがあったとしても、宛先鍵が一致することは絶対にありません。
この仕組みは楕円曲線ディフィー・ヘルマン鍵共有を基礎としています。あなたの公開アドレスには、支出鍵に紐づく点とビュー鍵に紐づく点という二つの公開点がエンコードされています。アリスがあなたに支払う際、彼女のウォレットはランダムな一時スカラーを生成し、それをあなたのビュー鍵の点と掛け合わせて共有秘密を導出し、その秘密をハッシュ化したうえで、あなたの支出鍵の点に加算します。こうして得られた結果が、取引のアウトプットに記録される一回限りの宛先鍵となります。アリスは自分の一時公開点だけを公開しますが、宛先鍵の導出に使われた秘密はチェーン上のいかなる情報からも復元することができません。
自分宛ての支払いをウォレットが見つける仕組み
あなたのウォレットは、自分のビュー鍵を使って、目にするすべてのアウトプットに対して同じディフィー・ヘルマン演算を逆方向に実行します。計算結果が一致すれば、そのアウトプットが自分のものだと分かります。一致しなければ、そのアウトプットは静かに無視されます。Moneroウォレットの動作にチェーン全体のスキャンが必要なのはこのためであり、検索インデックスでアドレスを引くという方法は取れません。なぜなら、チェーン上には引くべき「アドレス」が存在しないからです。
重要な点として、実際にアウトプットを使えるのは支出鍵を持つ者だけです。ビュー鍵は「どのアウトプットが自分のものか」を明らかにできますが、それらを動かす力はありません。これがMoneroにビュー専用ウォレットという仕組みが存在する構造的な理由です。経理担当者や監査人、あるいは閲覧専用のサービスは、資金を動かす権限を得ることなく、受け取った金額を確認できます。
サブアドレスは同じ原理を拡張したもの
多くのユーザーは、主アドレスを直接他人に渡すことはほとんどありません。代わりに、主鍵ペアから固定のインデックスを使って導出されるサブアドレスを配布します。各サブアドレスは主アドレスからも、他のサブアドレスからも、リンク不可能です。たとえそれらすべてを把握している人物が観察したとしてもです。これこそが、加盟店向けツールや寄付ページ、そして当社MoneroSwapperの入金フローにおける「顧客ごとのアドレス生成」を支える技術であり、注文ごとに新しいサブアドレスを発行することで、オンチェーン観測者がそれらを一つのウォレットに紐付けて集約することを不可能にしているのです。
新規ユーザーが最も犯しがちなプライバシー上の失敗は、単一の主アドレスを使い回してしまうことです。プロトコルは無制限のサブアドレスを無料で提供しています――必ず活用してください。
リング署名とは何か
リング署名とは、あるグループを代表して生成されるデジタル署名のことです。検証者は「このグループの誰か一人が署名した」ことは確認できますが、それが誰であるかは特定できません。Moneroはこのリング署名を用いて、新しい取引のインプットとして使用される過去のどのアウトプットが実際に消費されているかを隠しています。
あなたが送金を行う際、ウォレットは自分のものではない他のチェーン上のアウトプットを15個選び、実際のインプットと合わせて16個のリングに束ねます。署名は、16人のメンバーのうち1人が対応する支出鍵を保有している場合にのみ有効となりますが、検証者(および公開チェーン)はそれが誰なのかを知ることができません。あなたのアウトプットと、関連性のない15個のデコイは、すべて等しく真のインプット候補として扱われます。
CLSAGと現在の最先端
Moneroが採用している具体的な構成はCLSAG(Concise Linkable Spontaneous Anonymous Group signatures)と呼ばれ、2020年10月のハードフォークでMLSAGから置き換えられました。CLSAGは同等のセキュリティを保ちながら、取引サイズを約25%削減し、検証速度を約20%高速化しました。リングサイズは2019年以降プロトコル全体で固定値となっており、当初は11、2022年8月のハードフォーク以降は16となっています。リングサイズを統一しているのは、可変サイズにしてしまうとサイズそのものがウォレットソフトウェア、取引タイプ、ユーザー行動に関する情報を漏洩させかねないためです。
キーイメージが二重支払いを防ぐ仕組み
どのインプットが本物かを誰も識別できない以上、二重支払いを防ぐためには別の仕組みが必要になります。それがキーイメージです。キーイメージは支出鍵と一回限りの出力鍵から決定的に導出される値です。すべてのアウトプットには、生成可能なキーイメージがたった一つだけ存在し、ネットワークは過去に出現したキーイメージを持つ取引をすべて拒否します。このイメージはアウトプットの正体については何も明かさない一方で、一回限りの使用を保証してくれます。
並べて比較:それぞれが何を隠すのか
下表は、両者の役割分担を明確に整理したものです。送信者・受信者・金額の三つを同時に隠せる単一のプリミティブは存在しないことに注目してください。多くのユーザーが「Moneroの匿名性」として連想するプライバシー特性を実現するには、これらすべての層が組み合わさる必要があります。
| 性質 | ステルスアドレス | リング署名(CLSAG) |
|---|---|---|
| 何を隠すか | 公開アドレスとオンチェーン上のアウトプット宛先の結びつき | オンチェーン上のアウトプットと、それを使う取引との結びつき |
| 取引のどちら側か | 受信側(アウトプット) | 送信側(インプット) |
| 基盤となるプリミティブ | 楕円曲線ディフィー・ヘルマン + ハッシュ | 連結可能自発的匿名グループ署名 |
| 調整可能なパラメータ | なし――アウトプットごとに一回きりの導出 | リングサイズ(現在は16固定) |
| 破られる条件 | 敵対的相手へのビュー鍵開示 | 毒入りアウトプット攻撃、EAEヒューリスティック、極端に小さな匿名集合 |
| 隠さないもの | 取引金額、送信者のインプット | 宛先、金額、タイミング |
| 取引あたりのコスト | 極小――スカラー乗算が一回追加されるだけ | 大きい――リングサイズに応じて増加し、現在は取引サイズの大半を占める |
ここで一つ立ち止まって考えるべきことがあります。ステルスアドレスは確率的な推測ではありません。ビュー鍵がなければ、アウトプットの宛先を受取人のアドレスと結びつけることは絶対にできないという、強い暗号学的保証なのです。一方、リング署名は統計的な保証です。デフォルトでは観測者の信頼度はおよそ16分の1であり、デコイ選択プロセスを支配する攻撃者や、リングメンバーの多くを所有する攻撃者が現れた場合、この数値はさらに悪化し得ます。
実際のMonero取引で両者がどう組み合わさるか
どちらか片方だけでは不十分である理由を理解するために、一つの支払いを通して見てみましょう。アリスはボブに2 XMRを送りたいと考えており、ボブのMoneroアドレスは公開された寄付ページから入手したものとします。
- アリスのウォレットがステルスアウトプットを計算する。一時スカラーを生成し、ボブのビュー鍵の点とディフィー・ヘルマン演算を行い、一回限りの宛先公開鍵を導出します。これが取引のアウトプット一覧に組み込まれます。チェーンを観測している者は、このアウトプットをボブの公開アドレスに結びつけることができません。
- アリスのウォレットがリングを選択する。支払いの資金とするには、アリスは自身の過去のアウトプットの一つを使用しなければなりません。彼女のウォレットはその実際のアウトプットを選び、さらにチェーンの最近および過去のアウトプット群から15個のデコイを選択します。デコイの選択は、実ユーザーの支出パターンを反映するように公開されたガンマ分布に従って行われます。
- アリスのウォレットがCLSAGで署名する。署名は、16人のリングメンバーのうち1人が支出に同意したことを証明します。検証者は、それがどのメンバーなのか一切知ることができません。署名に付随するキーイメージにより、その実際のアウトプットを再度使用することは不可能になります。
- アリスのウォレットがRingCTで金額を隠す。インプットとアウトプットはペダーセン・コミットメントとしてエンコードされます。Bulletproofs+のレンジ証明により、どのアウトプットもインプット総額を超えていないことを、具体的な数値を一切明かさずにネットワークに納得させます。
- ボブのウォレットが新しいブロックをスキャンする。ビュー鍵を使い、ボブはすべてのアウトプットに対してディフィー・ヘルマン演算を実行します。計算結果がアリスの支払いと一致したとき、そのアウトプットが「自分宛て」であることを判明させます。ボブは2 XMRを受け取ったことを知りますが、チェーン本体は不透明な塊しか示していません。
もしステルスアドレスを取り除いたとしたら、ボブのウォレットは依然として支払いを見つけられますが、同時にあらゆるチェーン分析企業も見つけられるようになってしまいます。ボブのアドレス宛のすべての支払いが同じ宛先に着地するため、彼の入金履歴全体が公開されてしまうのです。リング署名を取り除けば、アリスの送金は過去のたった一つのアウトプットを直接指し示してしまい、彼女のウォレットの取引グラフが暴かれます。RingCTを取り除けば金額が漏洩し、他の二つの層も金額相関による匿名化解除の餌食になりやすくなります。それぞれの層は、異なる敵対者から守る役割を担っているのです。
実例:MoneroSwapperでのスワップ
あるユーザーがMoneroSwapperで0.05 BTCを入金し、Feather walletに新規生成したサブアドレスでXMRを受け取るケースを考えてみましょう。この取引には二つの台帳がそれぞれ別の側面を記録しており、それぞれの観測者から何が見えるかは示唆に富みます。
Bitcoin側では、入金アドレスは明確に可視化されています。Chainalysis、Elliptic、TRM Labsといったチェーン分析ツールは、当社の入金パターンに対するヒューリスティックを持っていれば、そのアドレスを非カストディアル型スワップサービスのものとしてタグ付けします。金額、タイミング、起点となるUTXOはすべて公開されています。これはBitcoinとしては通常の状態であり、ユーザーがそもそもMoneroを求める理由の一つです。スワップエンジンはBTCを流動性プールに送り、BTCチェーン上の軌跡はそのプールで事実上途切れます。
Monero側の景色は、根本的に異なります。当社の支払いトランザクションは、ユーザーのサブアドレスを鍵としたステルスアウトプットを生成します。チェーン観測者から見れば、そのアウトプットは新規の公開鍵であり、MoneroSwapperともユーザーとも見かけ上の繋がりはありません。この取引は16個からなるリングで署名され、その中には当社のアウトプット1つと15個のデコイが含まれているため、当社自身の送金すらチェーン状態だけからは透明に識別できません。RingCTは正確な支払い金額を不明瞭にします。結果として、スワップが行われたことを知っている観測者でさえ、該当するブロック内のどのMonero取引が支払いだったのか、どのサブアドレスが受け取ったのかを証明することはできません。
この非対称性――入りは透明なBTC、出は不透明なXMR――こそが、Moneroをあらゆる支払いをエンドツーエンドで処理する取引通貨としてではなく、プライバシー層として利用する真の意義です。ステルスアドレスはスワップのアウトプットがユーザーのアドレスに紐付かないことを保証し、リング署名は当社のホットウォレット履歴を通じて当社の支払いが追跡されないことを保証します。
日本のユーザーが特に気をつけたい運用上のポイント
日本国内でMoneroを取り扱う際には、技術面と運用面の双方で注意すべきポイントがあります。資金決済法および金融商品取引法に基づき、暗号資産交換業者が国内でMoneroを上場することは事実上不可能となっており、Moneroを入手するには海外取引所もしくは当社のようなノンカストディアル型スワップサービスを利用するのが一般的です。当然ながら、Moneroの保有および利用そのものは合法であり、暗号学的プライバシー機能を理解した上で適切に運用することは、自衛のための合理的な行動です。
税務面では、国税庁(NTA)が暗号資産に関する課税ガイドラインを継続的に更新しており、原則として暗号資産同士の交換も雑所得として課税対象となります。ビュー鍵を税務調査の証拠として開示するかどうかは慎重に検討すべき問題であり、ビュー鍵を渡すことで「閲覧専用」の権限が永続的に第三者の手に渡る点を必ず理解した上で判断してください。閲覧専用とはいえ、過去の入金履歴をすべて遡って参照できるため、軽い気持ちで共有してよい情報ではありません。
ウォレット選定の面では、Feather walletやCake Walletといった成熟したオープンソースのMoneroウォレットを推奨します。日本語UIの対応状況や、Torとの統合、Hardware Wallet(LedgerやTrezor)とのインターフェース対応など、選定基準は利用シーンによって異なります。日常的な少額決済と長期保管とでは、求められるプロパティが大きく異なる点を意識して使い分けるのが賢明です。
脅威モデル別に見る両者の役割
ステルスアドレスとリング署名は、それぞれ異なる種類の攻撃者に対して防御を提供します。具体的な脅威モデルを並べてみると、両者の役割分担はさらに明確になります。
受動的なチェーン観測者(ブロックチェーンエクスプローラーを眺めるだけの分析者や、過去のチェーンデータを蓄積して関連性を見出そうとする研究者)に対しては、ステルスアドレスが第一の防壁として機能します。受信者の公開アドレスとオンチェーン上のアウトプットの結びつきを暗号学的に断ち切るため、観測者がいくら過去ログを掘り下げても、特定の公開アドレス宛の支払いをまとめて抽出することはできません。同じ観測者に対して、リング署名は送金者のアウトプットを15個のデコイの中に紛れ込ませることで、過去の送金グラフを再構築されにくくしています。
能動的な攻撃者(自分自身がチェーン上に多数のアウトプットを作り出してリングメンバーになり込み、デコイ集合を汚染しようとする攻撃者)に対しては、リング署名の防御力が問われます。極端な例として、ある送金のリング16人のうち15人が同一の攻撃者の所有物だった場合、消去法によって真のインプットが特定されてしまいます。これは「毒入りアウトプット攻撃」または「フラッディング攻撃」と呼ばれ、Moneroコミュニティはデコイ選択アルゴリズムの継続的改良によってこの種の攻撃の有効性を抑え込み続けています。ステルスアドレスはこの種の攻撃にはまったく関与しません。受信側の保護は能動的攻撃者にも揺るがず、ビュー鍵が漏れていない限り破られません。
取引相手による事後的調査に対しては、両者の役割が分かれます。あなたが誰かに支払いを行った場合、その相手は支払いを受け取った事実とアウトプットの宛先鍵を当然知っています。しかし、その相手があなたの他のアウトプット(つまり、同じウォレットが過去に受け取った他の支払い)を芋づる式に発見する能力は持っていません。これはステルスアドレスの直接的な恩恵です。逆に、あなたが過去に受け取ったアウトプットを使って送金を行った場合、その送金トランザクションを精査した相手は、リング内のどれが真のインプットかを判定する手立てを持たず、したがってあなたの送金履歴を遡って分析することができません。これはリング署名の直接的な恩恵です。
脅威モデルを区別する習慣を身につけると、「Moneroで安全か?」という問いを「どの種類の観測者に対して安全か?」という、より具体的で答えやすい問いに置き換えられるようになります。これこそが、暗号通貨のプライバシーを実務的に語る上で最も重要な思考の枠組みであり、Moneroを真に理解するための鍵となります。プライバシーは単なる属性ではなく、特定の敵対者に対する具体的な保証の集合体だと捉えるべきです。
よくある質問
ステルスアドレスは匿名化解除されることがあるのか?
解除可能なのは、受取人のビュー鍵を保有する者のみです。ビュー鍵はどのアウトプットがどのウォレットに属するかを明らかにできますが、それらを使うことはできません。もし第三者にビュー鍵を共有してしまうと――たとえば監査人に対する財務健全性の証明のために――その第三者は過去に遡って、あらゆる入金履歴を永続的に閲覧可能になります。ビュー鍵は「安全に公開できる読み取り専用パスワード」ではなく、機微情報として取り扱ってください。
なぜMoneroはリングサイズを16に引き上げたのか?
2022年8月のFluorine Fermiハードフォークによって、リングサイズは11から16に引き上げられました。これは送金ごとの匿名集合を拡大するための措置です。16という数値は、追加のデコイが取引サイズの増大というコストに見合うプライバシー向上をもたらさなくなる、いわばちょうど良いバランス点です。次世代のFCMP++(全チェーンメンバーシップ証明)では、固定サイズのリングを廃止し、アウトプット集合全体に対する証明によって、匿名集合を実質的にチェーン全体へ拡大することが計画されています。
FCMP++によってリング署名はなくなるのか?
はい、最終的にはなくなります。FCMP++は送信側プライバシーにおけるCLSAGの後継として計画されており、2026年現在も活発に開発が進行中です。Curve TreesとSAL証明という異なる暗号学的構成を用いて、16人のリング内ではなくUTXO集合全体に対する入力メンバーシップを証明する仕組みになります。ステルスアドレスはこの変更の影響を受けず、引き続き使用されます。両者は元々独立した層であり、まさにそれゆえに、片方を他方に触れることなく更新できるのです。
日常的なプライバシーにとって、どちらがより重要か?
支払いを受け取る場面では、ステルスアドレスがほぼすべての仕事をしています。それなしでは、公に共有された任意のアドレスがこれまで受け取ったすべての支払いを露見させてしまいます。送金する場面では、リング署名こそが、あなたのウォレットの取引グラフが公的な記録となってしまうのを防いでくれます。両者ともに重要ですが、重要となるシナリオが異なります。Moneroを受け入れる加盟店はステルスアドレスにより強く依存し、プライバシーを重視する送金者はリング署名により強く依存します。
MoneroSwapperのようなスワップサービスは、ユーザーから何らかの鍵を必要とするのか?
いいえ。ユーザーが提供するのは宛先のMoneroアドレス(もしくはサブアドレス)だけです。スワップエンジンは、他のあらゆる送信者と同じ方法でステルスアウトプットを導出するだけであり、ユーザーの支出鍵やビュー鍵にアクセスすることは一切ありません。これこそが、ノンKYCのMonoroスワップが構造的に成立する根拠です。暗号技術はユーザーの身元を識別することをサービスに要求しておらず、ユーザーのプライバシーもまた、秘密を守るサービスを信頼することに依存していません。
ステルスアドレスとサブアドレスは何が違うのか?
サブアドレスはユーザー側が生成する公開可能なアドレスであり、相手に渡して使ってもらうものです。一方、ステルスアドレス(正確には一回限りの宛先公開鍵)は、送信者がそのサブアドレス宛に支払う際に内部的に生成される鍵で、チェーン上に実際に書き込まれるものです。サブアドレスは「受け取り口」であり、ステルスアドレスは「支払いごとに作られる実際のオンチェーン上の受け皿」だと考えると分かりやすいでしょう。
まとめ
ステルスアドレスとリング署名は、同じものに付けられた二つの異なる名前ではありません。両者はプライバシーという問題の正反対の半分をそれぞれ解決しています――一方は資金がどこへ向かうかを隠し、他方は資金がどこから来たかを隠します。そして両者は異なる脅威モデルのもとで破綻します。この切り分けを理解することは、Moneroを「魔法の箱」として扱うのではなく、自分自身のプライバシー態勢を自分で論理的に考えられるようになるための分岐点です。実装の詳細を一つひとつ自分で考えることなく、どちらの層も実際に活用したいというのであれば、まさにそのためにMoneroSwapperは作られています。ノンKYCの匿名スワップにおいて、毎回新しいステルスアウトプットを生成し、16人からなるリングで保護された状態で、お客様の手元にお届けします。