117 / 736ECL

Eclipse Attack

接続は続いていても、攻撃者がネットワークの残りを隠している

インターネットも接続も動いているのに、ノードは Bitcoin の実際の状況を見られないことがあります。Eclipse Attack では、攻撃者が他の参加者への経路を支配し、届くメッセージを選びます。

Eclipse Attack は、攻撃者との接続を残したまま、ノードを正直なピアから意図的に隔離する攻撃です。Full Node は、Bitcoin のルールを自分で検証するプログラムです。隔離されても検証は続きますが、不完全な情報や古い情報しか得られない場合があります。無効なデータを有効にするのではなく、ノードに見えない部分を悪用します。

アンナがビットコインの支払いを受け取り、自分のノードを見ています。ノードとは、Bitcoin ネットワークに参加するプログラムを動かすコンピューターのことです。接続は有効と表示されていますが、重要な外向きの経路はすべて攻撃者の支配下です。メッセージは来ても、見せることを許されたものだけです。これが Eclipse Attack の本質です。通常、悪意ある接続が一つあるだけでは足りません。正直なノードへの機能する経路があれば、隠されたブロックが届き、支配が崩れる可能性があります。ブロックは、共有する履歴に追加する取引のまとまりです。 [1] [6]

Ethan Heilman、Alison Kendler、Aviv Zohar、Sharon Goldberg は、2015 年に当時の Bitcoin ネットワークへの攻撃を報告しました。ノードのアドレス表を攻撃者のアドレスで埋め、再接続時に攻撃者のコンピューターだけを接続先として選ばせる方法を研究したのです。接続先の選び方を悪用したのであり、デジタル署名などを守る数学的な仕組みを破ったわけではありません。対策も提案されていますが、過去の実験結果は現在の Bitcoin Core に対する成功率を測ったものではありません。 [1] [7]

隔離に成功すると、攻撃者はアンナに渡すブロックや取引と、渡さないものを選べます。アンナが送った取引の拡散を止めたり、発信元を観察したりもできます。接続の支配そのものに、採掘能力の過半数は必要ありません。ただし、その先のあらゆる攻撃が追加の負担なしにできるわけではなく、新しいブロックを作るには実際の仕事量が必要です。 [1] [6]

アンナの Full Node は、署名、支出条件、許される採掘報酬を引き続き検証します。ここでの署名は、秘密の数値である秘密鍵を使い、支払いを許可したことを検証できる証拠を作る操作です。他の人は、その秘密を知らなくても署名を確認できます。アンナのノードは、唯一の接続先が送ったからといって、不正な取引を受け入れません。しかし、届いていない有効なブロックを検証だけで発見することはできません。届いた手紙が本物だと確認できても、後から来た手紙がすべて隠されていることまでは分からないのと同じです。情報の有効性と完全性は別の問題です。 [5] [9]

ほかが進んでいる間も、隔離されたノードは最後に知ったブロックで止まる場合があります。隔離された採掘者が、捨てられた枝で採掘を続け、期待した報酬を失うこともあります。ただし、長くブロックを待つだけで攻撃の証拠にはなりません。採掘には偶然性があり、普通の障害も遅れを生みます。画面の更新が遅いという一点ではなく、複数の兆候を合わせて考えます。 [1] [5] [8]

攻撃者は、アンナへの支払いを含む有効な非公開の枝を見せつつ、同じ資金をネットワークのほかの場所で別の用途に使えます。接続が回復すると、ノードは累積仕事量の多い有効な枝に切り替わるかもしれません。これが Reorg、つまり受け入れた履歴の一部の置き換えです。捨てられた枝の支払いは、確認済みでなくなる場合があります。ただし攻撃者のブロックにも Proof of Work が必要です。これは、多くの計算を要する探索の結果を検証できる証拠であり、その枝のブロックにも必要です。必要な仕事量は、攻撃者に隔離された採掘者が生み出す場合もあります。確認数をでっち上げても Full Node はだませず、成功には隔離時間や攻撃者の資源も関係します。 [1] [5] [6]

対策は、すべての接続が同じ敵につながることを防ごうとします。Bitcoin Core は既知のアドレスをグループ分けし、外向きの接続でネットワークの多様性を重視します。IP アドレスは、プログラムが接続するネットワーク上の場所を示します。それでも、異なる IP アドレスが同じ運営者に属したり、同じ設備を通ったりする可能性はあります。集中を減らして攻撃を難しくする対策であり、すべてのピアが独立しているという証明ではありません。 [3] [4]

Bitcoin Core は feeler という短い接続で、別のアドレスに到達できるかを試します。追加のブロック中継接続は別の役割を持ち、新しいブロックヘッダー(ブロックの情報をまとめた短い技術的な記録)やチェーンの続きについて別の情報を得られます。したがって、すべての feeler が即座に最新の履歴をダウンロードする、という説明は不正確です。参照した Bitcoin Core 29.0 のコードは、この異なる防御を示しています。どれも単独で隔離の解消を保証しません。 [4] [8]

既知のピアを手動で追加すると、相手が利用可能で、実際にネットワークの残りへつながっていれば、別の経路になります。ただし同じ事業者を通る複数の接続は、独立しているとは限りません。他人のアドレス一覧を無条件に取り込むより、サポートされるソフトウェアを使い、設定を理解することが大切です。自分での検証は続きます。情報源が利用可能だと信頼しても、無効なブロックを送る権限を与えるわけではありません。 [2] [4] [6]

Sybil Attack は、一人の敵が多数の識別情報で活動することです。Eclipse Attack を助ける場合があります。Eclipse は、特定のノードや選ばれた集団を正直な情報源から隔離することに成功した状態を指します。より広いネットワーク分断は、ネットワーク全体の各部分を切り離し、必ずしも同じ方法で起こるわけではありません。利用者にとって大切なのは、Full Node で自主的に検証できても、攻撃者の外にある情報へのアクセスも必要だという点です。 [1] [6]

理解を深めるには、この項目とあわせて次もお読みください Sybil Attack, Block Propagation, Compact Blocks, Nakamoto Consensus, Bitcoin, Full Node. 次の項目からも参照されています 二重支払い, Byzantine Generals Problem, Nakamoto Consensus, Sybil Attack.

DOC · 001Heilman et al. — Eclipse Attacks on Bitcoin一次資料 DOC · 002Bitcoin Developer Guide — P2P Network文書 DOC · 003Bitcoin Core v29.0 — addrman文書 DOC · 004Bitcoin Core v29.0 — Peer connections文書 DOC · 005Bitcoin Developer Guide — Block Chain文書 DOC · 006Bitcoin Optech — Eclipse attacks文書 DOC · 007USENIX Security 2015 — Eclipse Attacks on Bitcoin’s Peer-to-Peer Network一次資料 DOC · 008Bitcoin Core v29.0 — Message processing文書 DOC · 009Bitcoin Core v29.0 — Block validation文書
改訂日: 一次資料を優先 · 投資助言ではありません