さて、しばらくBRC20やマイニングの話題が続いていましたが、久しぶりのライトニング回です。

今回は読者様から寄せられた以下の匿名質問にお答えします。

Amboss Ghost Addressesの仕組みについて、LN Markets blogの説明を読みましたが理解できませんでした。
解説をお願いします!

Amboss Ghost Addressとは「独自のサーバーを立てずにノンカストディアルにLightning Addressを利用してプッシュ型の送金を受け付けたい」という課題を改善する1つのプロダクトです。ところが、名前のせいかプライバシー面でのメリットが期待されやすいプロダクトで、実際そういう側面にも少しポテンシャルを感じる技術的な部分はあります。

今日はLN送金を受け取る際のプライバシー面での課題についておさらいして、Amboss Ghost Addressの具体的な仕組みと、もし使用する場合に理解しておきたいトレードオフを解説します。

・「LN送金を受け取る」際のプライバシー問題

・Ghost Addressは第一にはノンカストディアルなLightning Addressサービス

・Ghost Addressを利用するにあたって意識すべきトレードオフとは?

「LN送金を受け取る」際のプライバシー問題

ライトニング送金は必ず宛先ノードが送金額・期限などを指定した「インボイス」を発行するところから始まります。これを「プル型」の送金と言います。(オンチェーンでは宛先の許可なくコインを送りつけることができ、これは「プッシュ型」の送金となります。)

ライトニングで送金を受け取る際のプライバシー面の問題はすべてこの仕組みに起因していると言っても過言ではありません。なぜなら、送金者に必ず渡さないといけないインボイスに「ノードID」という宛先ノードの識別子が含まれているためです。送金者はこの情報を使って送金経路を作成します。

したがって、自分でノードを動かしてセルフカストディしているライトニングユーザーが送金を受け取るとき、自分のノードを相手に開示することになります。すると、送金者(や、そのインボイスを共有された第三者)はそのノードに絡むチャネル開設・閉鎖などのオンチェーントランザクションも調べることができてしまい、それらのトランザクションから連鎖して資産額や利用している取引所などまで推測可能な場合もあります。

この問題については既に使用できるものから提案されているものまで様々な軽減方法があります。

例えば受け取り時にはカストディ型のウォレットを使い、後に自身のウォレットに出金することで送金者からは自身のノードを秘匿できます。(ただし、カストディ型のウォレットの出金手数料がかさみます。) 本末転倒感もありますが、この亜種としてLNは極力送金にしか使わない、という手もあります。

あるいは、トランポリンルーティングという提案されている仕組みでは送金者が宛先ノードまでの経路を途中までしか計算しないため、送金者にノードIDを教える必要がありません。トランポリンルーティングについては以下の記事をどうぞ:

LNの送金者・支払先を互いに秘匿する
ライトニングによる支払いはオンチェーンの支払いと大きく異るプライバシーの特性があります。一般にオンチェーンの取引と比較してプライバシーが高いと言われることの多いライトニングですが、それでもプライバシー面で独自の課題がたくさんあります。 その1つである、ライトニングで送金を受け付ける際にインボイスにノードIDやチャネルIDを含める必要がある問題に対しての、ルートブラインディングという機能提案を紹介しようと思います。 ついでに似たコンセプトであるランデブールーティング、そしてトランポリンペイメントと組み合わせた際の効果についても説明します。 ランデブールーティング 冒頭で触れた通り、通常のライトニングインボイスにはノードIDやプライベートチャネルの情報などが含まれてしまうため、インボイスが漏洩するだけでノードやチャネルの情報、ひいてはオンチェーンの資金に関する情報まで漏れてしまいかねません。また、複数のインボイスを入手した攻撃者はそれらの情報を照らし合わせることで同じ支払先のインボイスを結びつけることもできてしまいます。 そこでランデブールーティングではインボイスを発行する際に

他にも、Private Channelと呼ばれる種類のチャネルはネットワーク全体には存在を配信(Announce)しないためプライバシー面のメリットがありそうですが、これもデフォルトではインボイスにそのチャネルのFunding UTXOの情報(scid: ブロック高・トランザクション位置・Outputの番号)をリークしてしまいます。

ちなみに2022年からは両者がScid Aliasというオプションを有効化してPrivate Channelを開設していればインボイス内でこのscidを公開せずに済みます。自ノードのすべてのチャネルがscid aliasを利用しているPrivate Channelで、かつ他に”Public Channel"が1つもなければインボイスのノードIDに紐付けるノードの情報が送金者に非常に見つかりにくいのである程度プライバシーは改善します。

ちなみに最近はプライバシー面で過大な期待を抱かせないように"Unannounced Channel"と呼ぶようになってきています。

では、Amboss Ghost Addressはどのような仕組みになっているのでしょうか?

Ghost Addressは第一にはノンカストディアルなLightning Addressサービス

Amboss Ghost Addressのリリース時のブログ記事を見ると最初の段落にアピールポイントが書いてありました:

(訳)これを使えば自身でライトニングノードを実行している誰もがカストディアルな第三者を信頼したり公開のサーバーを立てたりすることなくLightning Addressを持つことができるようになります。
This means that anyone running their own lightning node will be able to have a Lightning Address without needing a custodial third party and without needing a publicly accessible server.

つまり、第一にGhost AddressとはノンカストディアルにLightning Addressを取得し利用する方法で、プライバシー面でのメリットが得られるとすればそれは使用している技術の副効用なのです。もう少し具体的に見ていきましょう。

正攻法でノンカストディアルなLightning Addressを取得するには自身のライトニングノードに紐づけたLightning Addressサーバー(LNURLサーバー)を用意する必要があります。送金者はこのサーバーに問い合わせてインボイスを取得し、そのインボイスに対して送金を行います。ここにプライバシー面でのメリットはありませんが、インボイスの自動発行機としてプッシュ型の送金を実現します。

Amboss Ghost Addressの一番の特徴は「Ambossがユーザーの代わりにインボイスを発行する」仕組みです。順序立てて見ていきましょう。ここからはAmboss Ghost Addressに登録して利用する送金先ノードを「ユーザー」と呼びます。

1.ユーザーはAmbossが運用するLightning AddressサーバーにLightning Addressを割り当ててもらいます。送金者はAmbossに問い合わせてインボイスを取得することになります。

2.通常ならノンカストディアルに送金を受け取りたい場合、Ambossはユーザーからインボイスを発行してもらって送金者に渡す必要がありますが、それだと結局ユーザーもサーバーを運用する必要があり本末転倒です。

3.ここでPhantom Nodes / Phantom Paymentsというコンセプトが登場します。Ambossはあたかも「ユーザーの先に(実在しない)Private Channelで繋がっている(実在しない)宛先ノード」としてインボイスを発行し、送金者に渡します。もちろん、決済に必要なPreimageもAmbossが生成したものです。

4.このインボイスに対する送金経路は必ず最後の経由地としてユーザーを経由します。ユーザーのノードは実在しないPrivate Channelから出て行きたがる支払いをGhost Address宛の送金だと判断し、AmbossにAPI経由でPreimageを問い合わせます。

5.ユーザーがAmbossから受け取ったPreimageをあたかもPhantom Nodeから受け取ったかのように送金者側のチャネルでの決済に使えば、あとは通常のLN支払いと同様に送金者まで各チャネルで支払いが決済されていきます。

このように、ノンカストディアルに第三者(Amboss)にPreimageを発行させる仕組みとしてPhantom Nodeを使ったことによってプライバシー面でのメリットを得られそうになっています。「得られそう」としたのは現時点では次項で述べる問題があるためです。

キーワードとなるPhantom Nodes / Phantom Paymentsですが、これも過去にカバーしているのでぜひご覧ください。

LDKのPhantom Node Payments機能はLN支払いをロードバランシングする大口向けソリューション
一般的なライトニングユーザーはモバイルアプリのライトニングウォレットを利用していたり、自宅にあるラズパイでノードを運用していることはあっても、複数のノードを運用している場合は稀でしょう。そのような一握りのパワーユーザーは決済事業者や取引所、大手ルーティングノードにとどまります。 多額のビットコインを複数のノードに分散させて運用するに際して、ノード間の送受金のロードバランシングという新たな要求が生まれてきます。今日はその方法の1つとしてSpiral社のLDK (Lightning Dev Kit)が提供するPhantom Node Payments機能を紹介します。 LDKベースで仮想のノードを利用する他のソリューションとして、過去にMutiny Walletを取り上げました。お時間のある方はそちらもどうぞ。 ライトニングユーザーがプライバシーを最重視するならどう使う?ライトニングネットワークはオンチェーンの送金と比較してプライバシーの高い側面と低い側面があります。今日紹介するMutiny Walletはライトニングをプライバシーを最重視して使うユーザーを想定して開発されている奇特

Ghost Addressを利用するにあたって意識すべきトレードオフとは?

さて、まずはノンカストディアルなLightning Addressサーバーとしての特徴を考えていきましょう。比較対象はLNMarketsのニュースレターにあるように「Lightning Address Bridge」と呼ばれる、代理でLightning Addressサーバーを運用してくれるサービスです。

サーバーを公開する必要がなく、ユーザーのIPアドレスを送金者から秘匿できる

この点はAmboss Ghost Address、Lightning Address Bridgeに共通しています。ただしライトニングノードのIPアドレスは特に対策していない場合は公開情報です。(Torのみで利用するか、VPS経由で公開しない限り、結局ノードが動いている自宅ネットワークやクラウドなどのIPになります)

サービス提供者が自分になりすましたインボイスで本来は自分宛の送金を着服しないことをトラストする必要がある

これはLightning Addressサーバーの運用を委託していることの弊害で、そのサーバーに問い合わせて得られたインボイスが本当にユーザーのものかを保証することはできません。一種の中間者攻撃で、ユーザーはされていても送金者からの報告がなければ気づきません。

またGhost Addressの場合は追加でAmbossがPreimageを教えてくれない・教えられなくなるリスクがあり、その場合は送金を受け取ることはできません。(エラーとしてキャンセルすることになります)

ライトニングノードが予想していない使い方であり、ウォレットの挙動が不便

これはライトニングあるあるですが、こういう「ハッキー」な仕組みはウォレット開発者が想定していないので表示がわかりにくかったりします。具体的には自身で発行したインボイスではないので受信履歴に残らず、気づいたら残高が増えているという気持ち悪めな挙動になります。Lightning Address Bridgeでは自分で発行したインボイスなので通常通りの履歴が残ります。

さて、本題ですがGhost Addressという名前からプライバシー面での効果を期待しやすく、実際にPhantom Nodeの利用によってプライバシー面を強化するポテンシャルのある仕組みと言えますが、現状では決定的な問題があります:

プライバシー面でのメリットは現状ではほぼない

前述の通りLNでは送金者が送金経路を決定しますが、ghst.toで終わるLightning AddressはGhost Addressであると推定されるため、そこから取得したインボイスの実際の宛先ノードは最終の一歩手前のノードだと推測できてしまいます。

この問題はより不規則・複雑なルートヒントの使用などで改善可能だとは思いますが、現状ではAmboss Ghost Addressがプライバシー面を売りにできない根本的な理由です。(リリース時のブログ記事ではカストディアルなLightning Address、つまりカストディアルウォレットに対する優位性のみ述べられており、ノンカストディアルなLightning Address Bridgeに対しては現状では優位性があるとは言えません)

もし将来的により上手に「本当の宛先」を秘匿できるようになったら見直される可能性がある技術だとは思うので、これからの創意工夫に期待したいところです。

ちなみに以下の記事もプライバシー関連で面白いので、読んでいない方がいればおすすめです。

ビットコインの”外側”のプライバシー
ビットコインでは「プライバシー」がよく話題に上がります。どんな人でも平等に利用できるように、政府や組織や他人に干渉されることなく個人の秘密が守られたマネーにするために、さまざまな取り組みが日々なされています。 これはビットコイン内部の仕組みやビットコイン関連機器で解決できることもありますし、今年7月に行われたConsensus 2022でエドワード・スノデーン氏が議題にしたように、ビットコインに到達するまでのインターネットの利用環境に問題がある場合もあります。 本稿では、プライバシーについて、ビットコイン内部の仕組みから始め、インターネットプロトコルでの取り組みまで見ていきます。 ビットコインのプライバシーモデル まず初めにビットコインのプライバシーの仕組みをざっとおさらいしておきます。サトシ・ナカモト氏のホワイトペーパーでは「公開鍵による匿名化」がアイディアの核となっていました。 [論文より引用 https://bitcoin.org/bitcoin.pdf] 従来の銀行モデルでは、トランザクションを機関の外へは非公開にすることにより、外部に個人情報が知られないよ

他に回答してほしいご質問がある方はぜひ匿名質問投稿フォームよりお願いします。