LNは発展が進むとともに、欠点の発覚と改善も活発に行われています。研究所でもこれまでに数回、既に発表された攻撃方法について触れていますが、今回は6月に論文が発表された、LNを利用する際の送金のプライバシーに関わる一種のタイミング攻撃について解説させていただきます。

LNの脆弱性に関する過去の記事は「LNの脆弱性”Flood & Loot"の解説」と「LNの大部分を数日間ロックさせる攻撃について」です。近いうちにあと1つか2つ扱う予定です。
ライトニングのプライバシー

オンチェーンだと全世界に公開されていたトランザクションが、LNでは当事者同士のみにしか全貌がわからなくなるので、ブロックチェーン解析のように第三者がUTXO間の関係を推定するようなことはできません。

一方で、特定の第三者には、ネットワーク層を利用したLNトランザクションの分析は可能です。今回のタイミング攻撃も、ネットワーク層から得られる情報を元に、特定のトランザクションが経由するノードが、(本来はわからない)そのトランザクションの送信元と宛先のノードを推定するものです。

ちなみにオンチェーンでも、ノード間の通信からトランザクションの発信源を割り出すという攻撃があります。Chainalysisなどブロックチェーン解析の企業が多くのノードを立てて情報を集めることでトランザクションの発信源のIPアドレスを探ったりするのにこの手法を使っているとされます。

前提知識として、チャネルグラフ(LNのノードとチャネルの地図のようなもの)はルートの計算に使用するため、全てのノードに既知です。
今回紹介するタイミング攻撃とは別に、自分のノードの位置によっては、この知識と実際の送金額を使って自分を経由するトランザクションを発信したノードや宛先のノードがかなり絞り込めてしまう場合もあります。

ノードが増えて大変見にくいですが、LNDExplorerというサイトで確認することができます。
タイミング攻撃の概要

ライトニングのトランザクションは、送信元のノードから宛先のノードまで、複数のノードを経由して送られていきます。(それぞれの間のチャネルの残高をバケツリレーしていくイメージで、中間のノードは最終的な送信元・宛先を知りません。)

今回の攻撃者であるノードは、多くのノードとチャネルを結んでいて、多くのトランザクションが経由するノードです。また、この攻撃を行うには、下準備が必要です。

まず攻撃者のノードは、いろんなノード相手にわざと失敗する送金を送り、失敗したというメッセージが返ってくるまでの時間を測ることで、ネットワークのどの位置までどれくらい伝達に時間がかかるかを記録します。すると、チャネルグラフ上の位置と比較してちょっとした足し算引き算をすることで、それぞれのノードに関してトランザクションのやりとりにかかる時間を推計できます。

この「伝達速度マップ」とでも言うべきデータを作成した後、攻撃者のノードを経由するトランザクションが発生するたびに、まずは「失敗」というメッセージを送金元の方へ返すことで再送を促し、その所要時間から発信元のノードの位置を推定します。
次に、再送されてきたときは通常どおりに処理し、宛先のノードとの送金データのやりとりの所要時間から宛先のノードの位置を推定します。

他にも、金額が多い場合には経路となりうるチャネルの容量と比較するなどしてより細かく発信元や宛先のノードを絞り込むことができる、というのがタイミング攻撃の概要です。

悪意のあるノードの位置による捕捉率と攻撃精度

研究者たちは、悪意のあるノードの集団をmcentral (betweennessによる中心性の最も高いm個のノード)、mrandom (m個のランダムに選ばれたノード)、lnbig (LNBIGが運営する26個のキャパシティの大きなノード)という3つのケースに分けてタイミング攻撃のシミュレーションを行いました。

すると、悪意のあるノードが1個であった場合でも、mcentralでは金額によって全トランザクションの37%~49%を経由させている(記録する機会がある)一方、mrandomでは5%程度で、lnbigは11%~25%と、mcentralとmrandomの中間に位置する結果でした。

mcentralは高額の送金の経路に含まれる確率が高かった一方、LNBIGのノードはbase_feeが0サトシなため、少額の送金ほど経路に含まれる確率が高かったそうです。

興味深いことに、送金元や宛先を正しく推定する精度に関しては3パターンともに悪意のあるノード数が増えるほど上昇しましたが、mcentralよりもlnbigやmrandomのほうが精度が高いという結果になりました。これはほとんどがネットワークの中心に位置するmcentralと異なり、lnbigやmrandomはネットワーク上にまんべんなく存在することで送金元や宛先までの距離が短いノードが存在するためだと考えられます。

攻撃が必要とする前提

送金元や宛先がパブリックノードであること。この攻撃はパブリックチャネルの情報に基づいているので、プライベートノードが発信元か宛先である場合などは攻撃者にノードを推定されないと思われます。ただし、プライベートチャネルが経路上に存在することを検知することは可能かもしれません。

ルーティングに最短経路が選ばれていること。現状では支払いの際は自動的に最短経路が選ばれますが、もし最短経路でなければ、手数料は高くなりますが「伝達速度マップ」と照らし合わせる効果が薄まります。

データの伝達が瞬時に処理されていること。研究者は低減策の1つとして、トランザクション単位で伝達にランダムな遅延を加えたり、PoWのようなものを導入することも考えられるとはしています。ただし、LNの送金速度とのトレードオフや、マイニングに近い構造(PoWが速いノードや遅いノードの存在)を導入することが中央集権化につながりかねない、ともしています。

ノードがTorを使用していないか、Torサーキットを滅多に再構成していないこと。定期的にTorサーキットを変えていれば通信経路が変わり伝達時間も変化するので、攻撃者が作った遅延マップのデータが役に立たなくなります。しかし、Torの使用によって遅延が大幅に増加することで、ネットワーク上の位置によっては却って目立つ場合もあり得ます。

逆に言えば、これらの前提を崩すことが対策になるので様々な案が出ており、遠くないうちに導入されると考えられます。

ノードへの信用度がより重要になっていくか

今回解説した攻撃で漏洩しうる情報は、トランザクションと自分のノードが確率的に紐付けられるかもしれないというものであり、資金の盗難の恐れがあるようなものではありませんが、プライバシー面を大きく損なう可能性のある攻撃です。また、ライトニングネットワークの中央集権化(多くの取引が経由するハブの出現)に関する懸念点でもあります。

現在のLNでは、チャネルを開く相手のノードの信用度をあまり意識していないユーザーがほとんどだと思われます。以前に紹介した攻撃でもそうでしたが、チャネルを開く相手のノードや送金経路上のノードが信用できるか考える必要がありそうです。
そのうち、手数料が最も安くならないとしても特定のノードを選好したり拒絶することができるような仕組みが生まれてくると思います。

特にタイミング攻撃に関しては、自身が気をつけていても、2ホップ先、3ホップ先のノードによってトランザクションを収集されていれば自身もデータ収集の標的になっている可能性があるので、ネットワーク全体の問題です。

現在はほとんど見られなさそうですが、ライトニングネットワークを利用したマネーロンダリングなどが出てくるとこのようなデータ収集を行う主体(ブロックチェーン解析企業や当局など)も増えてくる可能性があるので、それまでにプライバシー面での改善も期待したいですね。