Monero の Dandelion++ ネットワークプライバシー解説
Monero の Dandelion++ が守るネットワークプライバシーの仕組み
Monero を手に入れた人の多くは、ウォレットから送金した瞬間にプロトコルがすべてを隠してくれると思い込んでいます。ブロックチェーン上に限れば、それはおおむね正しい話です。RingCT が金額を秘匿し、リング署名がどの出力(アウトプット)を使ったのかを曖昧にし、ステルスアドレスが受取人とのつながりを断ち切ります。ところが、台帳とはまったく無関係なところに、もうひとつ静かなレイヤーが存在します。あなたのノードからマイナーへとトランザクションを運ぶ、ピアツーピアのネットワークです。「送信」を押した瞬間、あなたのトランザクションはネットワーク全体に広がる前に、まずひとつの IP アドレスから姿を現します。その発信元を捉えたネットワーク監視者は、暗号学的には完璧に秘匿された取引を、現実世界のインターネット接続へと結びつけてしまうことがあるのです。
この隙間を塞ぐために設計されたのが Dandelion++ です。これは Monero が採用している伝播プロトコルで、トランザクションがネットワークを通過する経路をかき混ぜ、表に出てくるノードが、それを作り出したノードとはほぼ別物になるようにします。MoneroSwapper のようなサービスで Monero にスワップすれば、あなたのコインはこの保護を自動的に引き継ぎます。とはいえ、その仕組みを理解しておくことで、保護の限界がどこにあるのか、そして上に何を積み増すべきかが見えてきます。本稿では、ステム&フラフ(stem-and-fluff)という設計思想、Monero が実際に出荷しているパラメータ、現実的な脅威モデル、そして 2026 年に自分の環境を堅牢にする方法を順を追って解説します。
ネットワークレベルのプライバシーがなぜ別問題なのか
プライバシーコインは通常、「チェーン上に何が記録されるか」という観点で語られます。しかしこの枠組みは、漏洩のひとつのカテゴリをまるごと見落としています。ブロックチェーンは公開された記録ですが、トランザクションをブロードキャストする行為そのものは、特定の場所と時刻で起きるライブのイベントであり、そのメタデータは透明な台帳と同じくらい身元を特定しうるのです。
取引を行うたびに、性質の異なる 3 つの「面」が同時にさらされています。そして Dandelion++ が扱うのは、そのうち 3 番目だけです。
- オンチェーンの内容:金額、送信者、受信者。Monero はこれを RingCT、リング署名、ステルスアドレス、そして二重支払いを防ぎつつどのコインが動いたかを明かさないキーイメージで守っています。
- チェーン上のリンク可能性:2 つのトランザクションが再利用されたデータでひも付けられてしまうかどうか。サブアドレスの生成と一度きりのステルスアドレスがこれらをリンク不能に保ち、それが Monero の代替可能性(ファンジビリティ)を支えています。
- ネットワークのメタデータ:トランザクションを最初に告知した IP アドレス、告知のタイミング、そして最初にそれをメモリプールに抱えたノード。前述の暗号技術はどれもここには手が届きません。これはプロトコルの下層、ゴシップ層に存在するからです。
よく接続された待ち受けノードの艦隊を運用する敵対者は、3 番目の面を攻撃するのに暗号を一切破る必要がありません。彼らはただ、それぞれのトランザクションを最初にどの IP から聞いたかを記録するだけです。素朴なフラッド型のブロードキャストネットワークでは、トランザクションを最初に中継したノードは、それを書き込んだ本人である可能性が非常に高くなります。たったその 1 回の観測が、それ以外は非の打ちどころのない秘匿決済の匿名性を崩壊させてしまうのです。Bitcoin の初期ネットワークは、まさにこの「最初のスパイ(first-spy)」型の匿名性剥奪に対して脆弱だと繰り返し示されてきました。Dandelion を生んだ研究は、こうした発見から直接育っていったものです。
Dandelion++ は実際どう動くのか
Dandelion++ は、2018 年に Fanti らによって提唱された学術的なプロトコルで、2017 年の元祖 Dandelion の提案を洗練させたものです。Monero は 2019 年末の v0.15「Carbon Chameleon」リリースで実装を出荷し、以来ずっとネットワーク上のトランザクション伝播を守り続けています。中心となるアイデアは、伝播をまったく振る舞いの異なる 2 つのフェーズに分けることです。すなわち、秘匿的なルーティングのフェーズと、公開されたフラッディングのフェーズです。
ステム(stem)フェーズ
あなたのノードはトランザクションを作成しても、すべてのピアに向かって叫び出したりはしません。代わりにステムフェーズに入ります。トランザクションは、擬似ランダムに選ばれたたったひとつのピアへと転送されます。そのピアは次に確率的な判断を下します。ホップごとのわずかな確率(Monero は低いフラフ確率を使っており、おおむね 10 パーセント程度です)で、トランザクションを公開フェーズへと切り替えます。そうでなければ、自分が選んだただひとつのステムピアへとさらに転送していきます。
結果として、トランザクションは公開される前に、予測不能なノードの一本道──「ステム(茎)」──をたどって進みます。ネットワーク全体に姿を現すころには、発信者から何ホップも離れた場所にいるかもしれません。最初にそのトランザクションを耳にした観測者が目にするのは、作者ではなく無実の中継ノードであり、その鎖を逆向きにたどる信頼できる手段は持ち合わせていないのです。
フラフ(fluff)フェーズ
あるノードが移行を決断すると、トランザクションはフラフフェーズに入ります。ここでの振る舞いは通常のゴシップそのものです。ノードはそれを自分のすべてのピアにブロードキャストし、ピアはさらに自分のすべてのピアへと送り、ネットワーク全体にあふれ出してマイナーに届き、全員のメモリプールに収まります。フラフフェーズは速くて確実です。その仕事は秘匿ではなく配送です。秘匿の作業はすべて、その上流のステムで済んでいるのです。
エポックと 4-正則グラフ
「++」を獲得した改良は、ステムの経路がどう選ばれるかにあります。元祖 Dandelion は各トランザクションを単純な一本の線に沿ってルーティングしており、執念深い敵対者はそれを少しずつ地図化できてしまいました。Dandelion++ はその代わりに 4-正則グラフを用います。各ノードは自分のステムを固定された少数のアウトバウンド中継先の集合につなぎ、その選択はエポックごと──数分程度の時間枠──に再ランダム化されます。ルーティングのトポロジーが絶えずシャッフルされ、多数のユーザーのステムが入り混じるため、連続するトランザクションをひとつの発信元へと相関づけることは、ネットワークの一部を支配する敵対者にとってさえ、はるかに困難になります。
Dandelion++ は匿名性の剥奪を不可能にするわけではありません。それを確率的で高コストなものにするのです。辛抱強く資金力のある Sybil 型の敵対者なら、いまだにその効果を削ぐことができます。だからこそ、Dandelion++ を単独で信頼するのではなく、匿名化ネットワークと重ね合わせて使うべきなのです。
エンバーゴタイマー
抜け目のない攻撃者は「ブラックホール」攻撃を試みるかもしれません。ステムの経路上に居座ってトランザクションを呑み込み、決してフラフフェーズに到達させず、検閲するか、あるいは結局やり直す送信者を指紋採取しようとするのです。Monero はこれにエンバーゴタイマーで対抗します。ノードがトランザクションをステムに引き渡すと、数十秒のランダム化されたカウントダウンが始まります。タイマーが切れる前に、そのトランザクションが公開フラフフェーズに入るのを観測できなければ、ノードは何かがおかしいと判断し、自らそのトランザクションをブロードキャストします。これによりライブネス──あなたの決済は必ず通る──が保証されると同時に、タイミングが揺らがされている(ジッター)ので、フォールバックそのものも悪用しにくくなっています。
数字で見る Dandelion++ のパラメータ
抽象論だけでは実感が湧きにくいので、Monero が実際に出荷している設定をいくつか数字で押さえておきましょう。設計上の「なぜ」が見えてきます。
- フラフ確率は約 10 パーセント。ステム上の各ホップで、トランザクションが公開フェーズへ切り替わる確率です。低く抑えてあるからこそ、トランザクションは平均して何ホップもステムを進み、発信元から十分に離れてから表に出ます。逆に高すぎれば、すぐに公開されて隠れる距離が稼げません。
- エポックは数分単位。ステムのルーティング先がこの周期で再ランダム化されます。短すぎれば各ユーザーの経路パターンが安定せず混乱しますが、長すぎれば敵対者に同じトポロジーを観測し続ける時間を与えてしまいます。数分という値は、その綱引きの落としどころです。
- エンバーゴタイマーは数十秒のランダム値。固定値にすると、攻撃者はその秒数を狙ってトランザクションを握りつぶし、フォールバックの瞬間を予測できてしまいます。ランダム化(ジッター)によって、その予測を封じています。
- 4-正則グラフ。各ノードがステムをつなぐアウトバウンド中継先は少数の固定集合です。多くのユーザーのステムがこのグラフ上で交差・合流するため、ひとつの発信元へ相関づける作業が指数的に難しくなります。
これらの数字は固定の魔法ではなく、コミュニティの研究と実運用の観測に基づいて調整されてきた均衡点です。攻撃者が払うコストと、一般ユーザーが受け取る遅延や信頼性とのバランスを取った結果だと理解しておくと、なぜ「もっと隠せばいい」という単純な話にならないのかが腑に落ちます。
Dandelion++ とネットワークプライバシーの完全なスタック
Dandelion++ は必要ですが、十分ではありません。それはクリアネットの P2P グラフの内部で発信元を隠しますが、あなたのノードは依然として本物の IP アドレスを通じてピアと会話しています。あなたの ISP の地点に陣取ったネットワークレベルの敵対者や、ノードの非常に大きなシェアを運用する敵対者は、それでもシグナルを集められます。最も強固な構成は、Dandelion++ をその下に敷いた匿名化ネットワークと組み合わせます。一般的な選択肢を比較すると次のようになります。
| 構成 | 何を隠すか | トレードオフ |
|---|---|---|
| クリアネット、Dandelion++ なし(レガシー) | ネットワーク層では何も隠さない。最初の中継=発信元の可能性大 | 最速だが、待ち受けノードに容易に匿名性を剥奪される |
| クリアネット + Dandelion++(現在の既定) | P2P グラフ内で発信元ノードを曖昧にする | IP はピアにまだ見える。大規模な Sybil 艦隊には脆弱 |
| Dandelion++ + Tor(tx プロキシ) | 発信元ノードと、ピアから見たあなたの本物の IP | 遅延が増える。exit/guard の考慮が必要。有効化は容易 |
| Dandelion++ + I2P | 発信元と IP を、ガーリックルーティングの送受信で隠す | ネットワークが小さく、設定の手間が多い。常時稼働ノードに強い |
要点はこうです。Dandelion++ は、最も安価な攻撃のコストを、無料かつ既定で引き上げます。そのうえで Tor または I2P が、あなたの生の接続を見られる敵対者に対して扉を閉ざします。両者は重なりつつも別個の問題を解決しており、本気のユーザーは両方を併用します。
Tor と I2P、Monero ノードでどちらを選ぶか
下に敷く匿名化ネットワークとして、Monero では Tor と I2P の両方がサポートされています。どちらも IP を隠す目的は同じですが、性格はかなり違います。自分の使い方に合うほうを選ぶための目安を挙げておきます。
Tor が向いている人。導入が圧倒的に手軽です。Tor デーモンを立ち上げ、--tx-proxy tor 系のオプションを足すだけで、発信するトランザクションが Tor 回線から出ていきます。たまにスワップして送金する、ノードを常時は動かさない、という使い方なら Tor で十分です。難点は、出口・ガードノードの考慮や、回線が混んでいるときの遅延です。
I2P が向いている人。ノードを 24 時間つなぎっぱなしにする運用なら、I2P の利点が活きてきます。ガーリックルーティングによって送受信の両方向が隠れ、外部の「出口」に依存しません。代償として、ネットワーク規模が小さく、初期設定の手間が多く、ピア探索に時間がかかることがあります。腰を据えてフルノードを育てる人向けの選択肢です。
迷ったら、まず Tor から始めるのが現実的です。設定を間違えにくく、効果もすぐに得られます。運用に慣れ、常時稼働ノードを持つようになってから I2P を検討すれば十分でしょう。両方を同時に有効化して、用途で使い分けることもできます。
Monero のネットワークプライバシーを堅牢にする方法
もし自分のノードを運用しているなら──そして日本を含む各地で取引所からの上場廃止が続いたあと、セルフカストディはますます唯一の持続可能な選択肢になりつつあります──いくつかの具体的なステップで、現実的なプライバシー曲線の頂点近くに立てます。Dandelion++ はすでに有効です。以下は、それ単独では提供できないレイヤーを足すものです。
- アウトバウンドのトランザクションを Tor 経由でルーティングする。デーモンをトランザクションプロキシ付き(
--tx-proxy tor形式のオプション)で起動し、ブロードキャストが Tor を通って出ていくようにします。あなたが発信したトランザクションについて、ピアはあなたの本物の IP を決して見ません。 - 匿名のインバウンドアドレスを追加する。
--anonymous-inboundを Tor 秘匿サービスまたは I2P の宛先で設定し、ノードが自分の所在地をさらさずに接続も受けられるようにします。これはステムの接続性を改善します。 - リモートノードではなく自分のノードを動かす。リモートノードは、あなたが送信するすべてのトランザクションとあなたの IP を見ています。自分のデーモンを動かす──あるいはウォレットを自分が支配するノードと組み合わせる──ことで、その信頼を要する仲介者を丸ごと取り除けます。
- ノードをオンラインかつ最新に保つ。つなぎっぱなしのノードは、より多くのエポックに参加し、より多くのステムに溶け込みます。予定されたネットワークアップグレードに先んじて、最新の伝播・コンセンサス修正を含むリリースを常に走らせましょう。
- ほかの場所でメタデータを漏らさない。同じアドレスを公開で使い回したり、スワップを KYC 済みの身元に結びつけたりすれば、ネットワークプライバシーは台無しです。新しいサブアドレスを生成し、そもそもコインを匿名で入手しましょう。
- OS のレイヤーまで意識する。本当に分離したい用途なら、Tails や Whonix のように、すべての通信を Tor 経由に強制する環境からウォレットとノードを動かす手もあります。これは Dandelion++ の上流ではなく、あなたの端末そのものから漏れる痕跡を減らすレイヤーで、OS 由来の DNS リークや偶発的なクリアネット接続を防ぎます。
現実的な脅威モデル
これが、実際に存在する種類の敵対者に対してどう展開するかを考えてみましょう。Chainalysis のようなブロックチェーン分析企業は、ネットワーク監視能力を法執行機関に売り込んでいます。よく報じられたあるリーク情報は、Monero を標的にした「モジュール」を描写していましたが、それは RingCT を破ることではなく、悪意あるノードを運用してタイミングと IP のデータを収集することに大きく依存していました。それこそが、Dandelion++ が狙いを定める攻撃面そのものです。
あるユーザーが MoneroSwapper を通じて Bitcoin を Monero にスワップし、その XMR を長期保管用のウォレットに送る場面を思い描いてください。オンチェーンでは、宛先はステルスアドレスに、金額は RingCT に守られています。ネットワークプライバシーがなければ、待ち受けノードを運用する分析者は、それでも「このトランザクションを最初に告知した IP は 14:02 UTC の 203.0.113.x だった」と記録し、ほかの記録と突き合わせられます。Dandelion++ があれば、トランザクションは匿名のホップを数回隔てた、そのユーザーが一度も支配したことのないノードから姿を現します。さらに下に Tor を敷けば、その姿を現す地点さえ、ユーザーの接続にひも付けることはできません。分析者の手元に残るのは、中継ノードとタイムスタンプ、そして彼らを錨でつなぎ止めるものは何もない、という状況だけです。
これは、Monero のオンチェーン暗号技術が進化しても、ネットワークプライバシーが意味を持ち続ける理由でもあります。来たる FCMP++(Full-Chain Membership Proofs)アップグレードは、固定サイズのリング署名を、出力集合全体から引き出される証明に置き換えます。また Seraphis や Jamtis のような次世代のアドレッシング作業もロードマップに載っています。そのすべてが台帳を強化しますが、トランザクションがどこかから告知されねばならないという事実を変えるものはひとつもありません。その告知を守るプロトコルは、これからも Dandelion++ なのです。
Dandelion++ をめぐるよくある誤解
この仕組みは強力ですが、過信も誤解も禁物です。実際によく聞く思い込みを、いくつか正しておきます。
- 「Dandelion++ があれば IP は完全に隠れる」── 誤り。Dandelion++ が隠すのは、P2P グラフの内側でどのノードが発信したかです。あなたのノードは依然として本物の IP でピアに接続しています。IP そのものを隠したいなら Tor か I2P が必要です。
- 「設定をいじらないと有効にならない」── 誤り。v0.15 以降、Dandelion++ は既定で動いています。何も設定しなくてもステム&フラフの恩恵は受けられます。設定が要るのは、その上に重ねる Tor / I2P の部分です。
- 「確率的な保護=弱い保護」── 誤り。確率的であることは、攻撃を不可能ではなく高コストにするという意味です。安価な「最初のスパイ」攻撃を無料で潰せる時点で、ネットワーク全体の匿名性の底上げとして十分に価値があります。
- 「リモートノードでも同じように守られる」── 誤り。あなたが接続するリモートノードは、あなたのトランザクションと IP を直接見ています。Dandelion++ が他人に対して提供する保護を、その相手だけは迂回できてしまうのです。
要するに、Dandelion++ は「土台」であって「全部」ではありません。土台の上に何を積むかで、最終的なプライバシーの高さが決まります。
日本のユーザーにとっての意味
日本は、プライバシーコインを取り巻く規制が早くから動いた市場のひとつです。2018 年、金融庁(FSA)の方針を受けて、国内の登録交換業者は Monero をはじめとする匿名性の高い通貨の取り扱いを相次いで取りやめました。その結果、日本のユーザーが Monero を保有・利用する経路は、自然と海外サービスやセルフカストディ、そして DEX 的なスワップへと移っていきました。この流れは、ネットワークレベルのプライバシーを理解しておくことの実利を、日本のユーザーにとってむしろ高めています。
もうひとつ知っておくべきは課税の扱いです。国税庁は暗号資産の売却や交換で生じた利益を、原則として雑所得として扱う立場を示しています。つまり Bitcoin から Monero へのスワップそのものが課税イベントになり得るということです。Dandelion++ や Tor が守るのはあくまでネットワーク上の匿名性であって、納税義務を消すものではありません。プライバシーを守ることと、適切に記録を残して申告することは、両立させるべき別々の課題だと割り切るのが現実的です。技術が守るのはあなたの接続情報であり、法的な責任を肩代わりしてくれるわけではないからです。
よくある質問(FAQ)
Dandelion++ は Monero における Tor の代わりになりますか?
いいえ。Dandelion++ は、ピアツーピアネットワークの内側でどのノードがトランザクションを発信したのかを隠しますが、あなたのノードは依然として本物の IP アドレスでピアに接続しています。その IP を隠すのが Tor または I2P です。両者は補完関係にあります。Dandelion++ は安価な「最初の中継」型の匿名性剥奪を無料で打ち負かし、匿名化ネットワークは、あなたの生の接続を見られる観測者から守ってくれます。
Dandelion++ は Monero で既定で有効になっていますか?
はい。2019 年末の v0.15「Carbon Chameleon」リリース以降、標準的な Monero ノードはすべて、Dandelion++ を使って自動的にトランザクションを伝播します。ステム&フラフのルーティングの恩恵を受けるのに、何かを設定する必要はありません。これは通常のトランザクション中継の一部です。
強力な敵対者なら、Dandelion++ のトラフィックでも匿名性を剥がせますか?
条件が揃えば、部分的には可能です。Dandelion++ が提供するのは絶対的な保護ではなく、確率的な保護です。ネットワークノードの大きな割合を支配する敵対者(Sybil 攻撃)は、多数のステムを同時に観測することで、その保証を削ることができます。これこそが、Monero コミュニティが Dandelion++ を単独で頼るのではなく、上に Tor や I2P を重ねるよう推奨する中心的な理由です。
ステムフェーズとフラフフェーズの違いは何ですか?
ステムフェーズは秘匿的なルーティングの段階です。トランザクションは単一のピアの一本道に沿って静かに渡され、各ピアがわずかな確率でそれを公開するかどうかを決めます。フラフフェーズは通常のフラッディングの段階で、ノードがトランザクションを自分のすべてのピアにブロードキャストし、ネットワーク全体とマイナーに届けます。匿名性はステムから生まれ、配送はフラフから生まれます。
リモートノードを使うと Dandelion++ は弱くなりますか?
弱くなり得ます。あなたが接続するリモートノードは、あなたが送信するトランザクションと、それを送ってきた IP を見ているので、Dandelion++ がほかの観測者に提供している保護を迂回できてしまいます。自分のノードを動かすか、あるいは信頼できて Tor 経由で到達できるノードを使えば、その発信元情報を第三者の手の届かない場所に保てます。
Dandelion++ を使うと送金は遅くなりますか?
体感できるほどではありません。ステムフェーズはトランザクションを単一のピアの一本道で渡していくため、フラッディングに比べれば理論上わずかに時間がかかりますが、フラフへ移行したあとは通常どおり高速に伝播します。さらにエンバーゴタイマーが、ステム上で何かが詰まった場合でも数十秒以内に確実に公開へ移すので、決済が永遠に保留になることはありません。日常的な送金で遅延を意識する場面はまずないでしょう。下に Tor を敷いた場合の遅延のほうが、よほど体感に効きます。
結論
Monero の評判は、その台帳に書き込まれた暗号技術の上に成り立っています。しかし本当のプライバシーは、最も弱いレイヤーと同じ強さしか持ちません。そして長年、その弱いレイヤーがネットワークでした。Dandelion++ は、あなたのトランザクションを告知するノードを、それを作ったノードとはほぼ別物にすることでその隙間を塞ぎ、エンバーゴタイマーがその保護を検閲の武器に転用されないよう守ります。Tor または I2P、そして自分のノードと組み合わせれば、敵対者が実際に展開している安価でスケールする攻撃の射程の、はるか外側に身を置けます。最初からこの保護の内側に届くコインが欲しいなら、MoneroSwapper を通じてMonero を匿名で購入し、スワップからウォレットまでプライバシーを損なわずに保ちましょう。
🌍 他の言語で読む