SoK: Jamming Attacks and Defenses
on the Lightning Network
なぜ Jamming は深刻な問題か
攻撃の根本的な非対称性
正常な支払いは成功すれば手数料を払う。しかし失敗する HTLC には手数料が不要(or ごくわずか)。攻撃者はほぼゼロコストでチャネルのスロットを埋め続けられる。
攻撃コストの実態
| 攻撃タイプ | 推定月間コスト |
|---|---|
| Slow Slot Jamming | 〜$10/月 |
| Fast Slot Jamming | 数十〜数百ドル |
| Amount Jamming | チャネル残高相当 |
① 有効性(攻撃コスト引き上げ量)
② 副作用(正常支払いへのオーバーヘッド)
③ 実装複雑性(BOLT 互換性)
④ 情報要件(グローバル vs. ローカル)
の4軸で評価できる共通フレームワークを設計する。
攻撃の 4 象限マトリクス
| Quick(短時間・高頻度) | Slow(長時間・低頻度) | |
|---|---|---|
| Slot Jamming | 高コスト・発見しやすい | ⚠ 最安・最危険(月$10〜) |
| Amount Jamming | 中〜高コスト | 中コスト(残高相当の資本が必要) |
(2軸分類)
の月間コスト
防げる防御策
(攻撃の根源)
| 防御策 | Quick Jamming | Slow Jamming | 副作用 | 実装難度 |
|---|---|---|---|---|
| Upfront fees(無条件) | 高 | 高 | 全 HTLC に fee 追加 | 中 |
| Upfront fees(条件付き) | 中 | 中 | 低 | 高 |
| Local Reputation | 低 | 中 | 低 | 中 |
| HTLC Endorsement | 中 | 中 | 低 | 中 |
| Circuit Breaker | 中 | 低 ⚠ | 低 | 低 |
Channel Balance Interpolation
in the Lightning Network via Machine Learning
なぜパッシブ ML 推定が革命的なのか
従来の攻撃(能動 probing)
故意に失敗する HTLC を送って残高の上下界を絞る二分探索。痕跡が残る・コストがかかる・DP 防御が有効。
本手法(パッシブ ML)
Gossip データ + グラフ構造だけ。痕跡なし・コストゼロ・既存防御が効かない。根本的に異なる攻撃面。
p_{u,v} = y_{u,v} / c_{u,v} ∈ [0,1] という比率で定義。容量 c_{u,v} は公開情報だが、各方向の残高 y_{u,v} は非公開。これを予測する回帰問題として定式化。保存則 p_{u,v} + p_{v,u} = 1 を制約として明示する。
② エッジ特徴量: Time Lock Delta、Min/Max HTLC、Fee Rate (ppm)、Fee Base
③ Positional Encoding(鍵): グラフ Laplacian の固有ベクトル。ノードの「グラフ上の位置」を数値化。約1秒で計算可能。
Nodes only / Edges only / Concatenated / Shallow(PE only)/ Joint(全結合)
の6種を Random Forest で実装・評価。MAE_p(比率誤差)と R²(決定係数)で比較。
の MAE_p 削減
の MDI 重要度
Precision
の決定係数
| モデル | MAE_p ↓ | R² ↑ | 改善率 |
|---|---|---|---|
| Equal Split(baseline) | 0.358 | -0.001 | — |
| Nodes Only | 0.313 | 0.097 | -12.6% |
| Edges Only | 0.316 | 0.115 | -11.7% |
| Shallow (PE only) | 0.285 | 0.275 | -20.4% |
| Concatenated | 0.265 | 0.351 | -26.0% |
| Joint (best) | 0.259 | 0.365 | -27.6% ★ |
Securing Lightning Channels
against Rational Miners
攻撃の仕組み:Timelock Bribing
攻撃者 A が古い状態を Broadcast: A ──publishes──► txA,0 (古い状態, A が全額 v を保有) B ──publishes──► revocation TX (fee = f_b) A ──bribes ──► miners (fee = f_a, ここで f_a > f_b) Miner ──accepts► A's tx, ignores B's tx → A が勝つ → A は最大 v(チャネル全額)を bribe として提供できる
Corollary 2: Byzantine party + Rational miner の組み合わせでは LC は本質的に安全でない。Byzantine A は損失を厭わないため、v+δ の bribe を提示できてしまう。
v + c を得られるようにする(c = 担保)。攻撃者が提供できる最大 bribe は v(チャネル残高)のみ。v + c > v → Rational miner は常に revocation を選ぶ → 攻撃が経済的に無意味になる。c = v/2 で十分なことを Section 4.3 で証明。
最小担保額
Miner + Offline 対応
(均衡分析)
スクリプト要件
| 設計 | Byzantine 攻撃者 | Rational Miner | Offline 対応 | Permissionless |
|---|---|---|---|---|
| Lightning Channel (LC) | ✗ | △ | ✗ | ✓ |
| Sleepy Channels | ✗ | ✗ | ✓ | ✓ |
| Cerberus | ✗ | ✗ | ✓ | ✓ |
| CRAB(本論文) | ✓ | ✓ | ✗ | ✓ |
| Sleepy CRAB(本論文) | ✓ | ✓ | ✓ | ✓ ★ |
A Mathematical Theory of
Payment Channel Networks
S = ζ/ρ を導出。Lightning が Visa 規模のスループットを達成するには Multi-Party Channel が数学的必須 であることを厳密に示した。
なぜ幾何学で PCN を捉えるのか
「残高が偏る(Depletion)」「大口送金が失敗する(Infeasibility)」という現象の原因について、従来の説明は矛盾していた。幾何学的フレームワークはこれらを 高次元ポリトープの射影 として統一的に説明する。
流動性状態 LG ≅ m次元整数ハイパーボックス(チャネルごとに1自由度) 資産分布 WG = LG の射影(n次元空間への写像) → WG は必ずW(C,n)の真の部分集合 → 必ず「実現不可能な資産分布」が存在する
LG ≅ {0,...,c1} × ... × {0,...,cm} を証明。各チャネルの残高が1つの独立した自由度を持つため、m チャネルで m 次元ボックスになる。
送金の feasibility 判定: 送金後の資産分布 w' が WG に留まるかどうかに帰着(実際の残高配置 λ ではなく資産分布 ω だけに依存)。
S = ζ / ρ(オフチェーン TPS = オンチェーン TPS ÷ 期待不可能送金率)を導出。Bitcoin の ζ = 7 TPS 固定、Visa 並み S = 47,000 TPS に必要な ρ < 0.015%。
2-party channel の実測 ρ はこれより大幅に高い → 2-party PCN は幾何学的にスケールしない。
3つの緩和策: ①対称 fee ②凸/tier 手数料 ③協調 replenishment。
(オフチェーン TPS)
な ρ(不可能率)
資本効率改善
幾何的次元
| 定理 / 補題 | 内容 | 意義 |
|---|---|---|
| Lemma 3.2 | LG ≅ m次元整数ハイパーボックス | 流動性状態空間の完全な幾何的表現 |
| Lemma 4.2 | WG ⊊ W(C,n)(n>2) | PCN には必ず実現不可能な資産分布が存在 |
| Theorem(Throughput) | S = ζ/ρ | オフチェーンスループットの数学的上限 |
| Lemma 5.1 | k-party channel → WG 単調拡大 | Multi-party channel が capital efficiency を線形改善 |
| Depletion Theorem | 線形非対称fee → 全チャネルが depleted | Channel Depletion の数学的必然性を証明 |
A Formally Verified
Lightning Network
なぜ機械検証か — 手書き証明の限界
従来アプローチ(Litos-Zindros 2020)
UC(Universal Composability)フレームワークで LN をモデル化。ただし UC ペーパープルーフは人間が書いた証明 → 見落としのリスクが残る。
本論文のアプローチ
Why3 + SMT solver(Alt-Ergo, CVC4)でコンピュータが全証明パスを検証。digital signature を理想機能として抽象化 → PPT 前提不要でより強い保証。
signaturesFunctionality.mlw)。
Funds Security: 「honest party が close を要求すれば、有界時間 T 以内に正当残高を受け取る」。
honestPartyInterface.mlw)。Stage 2: requirements を満たす任意実装が fund safety を享受することを証明。
→ Stage 2 は Blueprint: lnd/CLN も同 requirements を満たすと別途示せば fund safety が得られる。
machine-checkable 証明
(行数、WhyML)
(行数)
ケース(仕様バグ)
| 観点 | Fabiański (Why3, 本論文) | Grundmann (TLA+) |
|---|---|---|
| アプローチ | 定理証明(SMT solver) | モデル検査(状態空間探索) |
| 強み | Unconditional proof 機械検証・無限パスに対応 | 自動反例探索 Multi-hop 対応 |
| 弱み | 2-party のみ HTLC 非対応 | 有限状態空間の coverage に限る |
| 対象 | Fund safety(2-party, HTLC なし) | Multi-hop security |
| 敵モデル | Unbounded(非 PPT) | 通常モデル |
honestPartyInterface.mlw の requirements を満たすことを別途示せば、それらの fund safety も guarantee できる。実用的な検証パスを初めて提示した。Anonymous Multi-Hop Locks for
Blockchain Scalability & Interoperability
Wormhole攻撃——HTLCの構造的欠陥
攻撃の仕組み
A→B→C→D→E という経路でAがEに支払う際、BとDが共謀して中間ノードCをスキップ。Cに向かうHTLCをBが先にDへ渡し、Cのルーティング手数料を横取りする。
HTLCの根本問題
HTLCは同一ハッシュpreimageをパス全体で共有。共謀ノードが先読みしてpreimageを取得できるため、防御は原理的に不可能。
形式的証明
(Wormhole耐性・匿名性・原子性)
(per hop vs HTLC)
(Taproot + Schnorr)
| 性質 | HTLC | AMHL (AS-PoP) |
|---|---|---|
| Wormhole耐性 | ✗ 本質的に脆弱 | ✓ 形式証明済み |
| 関係匿名性 | ✗ 同一ハッシュで特定可 | ✓ ホップごとに独立 |
| 原子性 | ✓ | ✓ |
| Bitcoin現時点互換 | ✓ | △ Taproot後 |
Flood & Loot: A Systemic Attack
on the Lightning Network
攻撃の2ステップ
Step 1: Flood(洪水)
攻撃者が同時に多数のHTLC付きチャネルを強制クローズ。on-chainに大量のTXを送り込んでmempool輻輳を作り出す。
Step 2: Loot(略奪)
HTLCタイムロック切れ前に被害者が防御TXを確認させられない。タイムロック後に攻撃者がHTLC resourceを回収(preimageなしで)。
(この数以上で収益)
(攻撃の源泉)
(攻撃者有利)
定量分析
| 対策 | 効果 | 限界 |
|---|---|---|
| タイムロック延長 | 攻撃コスト増加 | 資本効率低下 |
| Anchor Outputs (CPFP) | 被害者が反撃しやすい | 極端な輻輳では不十分 |
| HTLC数制限 | 被害上限を下げる | ルーティング容量も低下 |
Probing Channel Balances in the
Lightning Network
「Worst of Both Worlds」診断
現状の問題
HTLC失敗は無料。攻撃者は繰り返し試せる。エラー種別(unknown_next_peer vs temporary_channel_failure)が残高情報を開示する。
防御の딜레마
エラーを統一すれば(unknown_failure)残高は隠せるが、送金者・開発者がデバッグできなくなる。どちらも選べない「板挟み」状態。
temporary_channel_failure(残高不足)と成功の境界を検出することで1 sat精度を達成。~30回のプローブで完了。残高推定精度
プローブ回数
(失敗HTLCは無料)
プロファイリング時間推定
| エラーコード | 意味 | 漏洩情報 |
|---|---|---|
temporary_channel_failure | 残高不足 | 正確な残高境界 |
unknown_next_peer | ノード到達不能 | トポロジー情報 |
fee_insufficient | 手数料不足 | fee policy |
permanent_channel_failure | チャネル閉鎖 | 少(閉鎖の事実のみ) |
Payout Races and Congested Channels:
Model Checking LN
なぜモデル検査が必要だったか
人手レビューの限界
BOLT仕様はHTMLドキュメントで記述。状態機械の全遷移パスを人手で追うのは事実上不可能。並行する双方向通信のinterleaving空間は指数的に拡大する。
Spinの強み
Spinは状態空間を自動的に網羅的に探索し、デッドロック・assertion違反・競合状態を自動検出。LTL(線形時相論理)での性質を検証できる。
HTLCコミット競合状態
LN実装(lnd/CLN/LDK)
(Promela + LTL)
パッチ適用状況
Optimally Reliable & Cheap
Payment Flows on Lightning
なぜルーティングは難しいか
残高の不可視性
Lightning gossipはチャネルの容量は公開するが残高は非公開。どちらの方向にどれだけ流せるかが分からない状態でルーティングを決定しなければならない。
MPP分割の最適化
大きな送金を複数部分に分割して送る(MPP)場合、分割数・分割比・経路の組み合わせが指数的に存在。直感的な分割は最適でないことが多い。
(Dijkstra比)
(既存ソルバーを直接適用)
(lnd / CLN / LDK)
(実データで検証済み)
| ルーティング手法 | 成功率(大口送金) | 計算コスト | MPP最適性 |
|---|---|---|---|
| Dijkstra(単一最短経路) | 低(〜50%) | O(E log V) | なし |
| K-最短経路 | 中 | O(kE log V) | 部分的 |
| Pickhardt MCF | 高(〜90%+) | 中(MCFソルバー) | 最適 |
Horcrux: Synthesize Fast and
Depletion-Resilient Virtual Channels
仮想チャネルのDepletion問題
攻撃の仕組み
A—B—Cの仮想チャネルで、BがAに対して一方的に多数のHTLCを送り付け、A→C方向の残高を枯渇させる。AはBとの実チャネルでの支払い能力を失う。
なぜ難しいか
仮想チャネルの中継ノード(B)は中間でリバランスができない。実チャネルと仮想チャネルの残高が分離されているため、不均衡を直接補正する手段がない。
形式証明した仮想チャネル
オーバーヘッド
(UCより強い合成保証)
(スクリプト変更不要)
Twilight: A Differentially Private
Payment Channel Network
DP × Lightning の新しさ
従来防御の問題
レートリミット・エラー統一・Onionパディングはいずれもヒューリスティックで理論的保証なし。攻撃者がパラメータを調整すれば回避可能。
DPが与えるもの
ε-DPは「n回プローブしても攻撃者が得られる情報はε-bounded」という数学的証明付き保証。機械学習・統計の分野で広く確立されたフレームワーク。
系統的に適用した研究
推定誤差(ε=1)
低下(ε=1)
(HTLC互換のまま)
| εパラメータ | DP保護強度 | 正常送金影響 | 推奨用途 |
|---|---|---|---|
| ε = 0.1 | 非常に強い | 成功率 -10〜20% | 高セキュリティノード |
| ε = 1 | 強い | -2〜5% | 実用バランス |
| ε = 3 | 中程度 | 〜0% | 一般ルーティングノード |
| ε = 10+ | 弱い | 影響なし | 実質DP無効 |
Congestion Attacks in
Payment Channel Networks
2種類のJamming攻撃
Slot Exhaustion(スロット枯渇)
攻撃者が最小額HTLCを483個(上限)送り付けてスロットを全占有。自分宛てに送ってpreimageを出さずに保留。資本コストは微々たる額。
Value Exhaustion(残高枯渇)
大額HTLCでチャネルの流動性をまるごとlock。スロットが空でも残高がなければ送金不能。チャネル容量ぶんの資本が一時的に必要。
(成功率20%→0%)
(同効果)
の推定コスト
(Hub集中型のため)
Suborn Channels:
Incentivizing Miners to Attack Lightning
なぜこれは見落とされていたか
従来の前提
LN仕様は「revocation TX はタイムロックなし → minerが即座に採掘する」と前提。この前提は「miner = 正直」または「手数料競争でrevocationが勝つ」を暗黙に仮定していた。
本論文の反論
攻撃者が「古いTXを採掘したら高額手数料を払う」と約束できる。これはフォーク不要・miner側リスクゼロの検閲攻撃。賄賂がrevocation fee × ~50倍を超えると Nash 均衡になる。
攻撃合理性閾値
閾値が独立(驚きの結果)
Attackerのリスク
攻撃を完全無効化
| 比較項目 | Suborn (本論文) | CRAB (Aumayr 2024) |
|---|---|---|
| 攻撃者モデル | Rational party | Byzantine party |
| 対象プロトコル | DMC + LN | LN |
| 防御機構 | Script変更 / 動的fee | 担保コイン(collateral) |
| オフライン対応 | 考慮外 | Sleepy CRABで対応 |
An Empirical Analysis of Privacy in
the Lightning Network
4つの攻撃の組み合わせ
| 攻撃 | 手法 | 成功率 |
|---|---|---|
| 残高発見 | 二分探索プロービング | 100%(全テストチャネル) |
| 送金額推定 | 残高変動の時系列観察 | 〜90% |
| 送受信者リンク | 複数チャネルの同期残高変化 | 〜50% |
| クロスレイヤー同一性 | funding TX のChain Analysis | 〜30%+ |
(テスト全チャネル)
成功率
特定成功率
初期投資額