Sybil Attack は、一人の攻撃者が複数の識別情報を操り、それぞれを独立した参加者に見せかける攻撃です。Bitcoin では、ネットワーク接続を増やすだけでは採掘能力もルールを変更する権利も増えません。ただし、特定のノードがどこから情報を得るかに影響を与える手段にはなります。
アンナが掲示板の評判を見てサービスを選んでいます。何十ものアカウントが褒めていますが、実はすべてサービスの運営者が動かしています。名前が違っても、独立した意見が一致したわけではありません。John R. Douceur は 2002 年の The Sybil Attack で、コンピューターネットワークにおける同様の問題を説明しました。一人が複数の参加者を装えるのです。名前を作るのは簡単でも、必要なアドレス、サーバー(他の機器にサービスを提供するコンピューター)、接続の確保には費用や時間がかかる場合があります。 [1]
Bitcoin ネットワークのピアとは、プログラムがデータを交換する相手のことです。ペーターは複数のノードを運用でき、企業ならさらに多くを運用できます。Bitcoin には、一人につき一つのノードを割り当てるための名簿は必要ありません。IP アドレスは、プログラムが接続するネットワーク上の場所を示します。したがって、IP アドレスが違っても所有者が違う証拠にはなりません。複数ノードの運用自体も攻撃ではなく、独立しているように見せて悪用することが問題です。 [1] [3]
ペーターの Full Node は、Bitcoin のルールを自分で検証するプログラムです。ここでの署名は、秘密の数値である秘密鍵を使い、支払いを許可したことを検証できる証拠を作る操作です。他の人は、その秘密を知らなくても署名を確認できます。接続中のピアすべてが無効な署名の取引を送ってきても、ペーターのノードはその取引を拒否します。同じ答えを票として数えるわけではありません。ブロックは、共有する履歴に追加する取引のまとまりです。ノードはブロック全体についても、使用済みの資金を再び使っていないか、認められていない報酬を作っていないかなどを確認します。ネットワークはデータを届けますが、有効性は送信者の人気ではなくノードのルールで判断します。 [2] [6] [9]
有効な履歴の枝が二つ競合する場合があります。Proof of Work は、見つかったブロックの難易度から求める重み、つまり累積仕事量を比較できるようにします。採掘には実際の計算の試行が必要で、コンピューターの名前を変えても仕事量は増えません。同じ採掘機器を多数の識別情報に分けても、合計の計算能力は増えません。ここでは一アカウント一票にはならないのです。 [2] [6]
千本の接続があっても、他人のビットコインを使うための秘密鍵の代わりにはなりません。識別情報を増やすだけで発行ルールを破ったり、正しく検証するノードに無効なブロックを受け入れさせたりもできません。ただし、あらゆる攻撃に安全という保証ではありません。攻撃者は採掘能力も入手したり、ソフトウェアの不具合を突いたりするかもしれません。そうした能力は、アカウント数とは分けて評価する必要があります。 [2] [9]
ペーターのノードに戻りましょう。攻撃者は既知のアドレス一覧を埋め、自分の接続で占めようとすることがあります。ネットワークの他の部分へ通じる重要な経路をすべて支配すれば、ブロックを渡さず、不完全な状況や古い状況だけを見せられます。この隔離が Eclipse Attack です。Sybil Attack はその手助けになりますが、多数の攻撃者の識別情報があるだけでは隔離の成功を意味しません。届いたデータを検証できても、隠されたデータの存在まで分かるわけではありません。 [3] [5] [8]
Bitcoin Core は複数の対策を組み合わせます。自動で外向きの接続先を選ぶ際にはネットワークの多様性を求め、既知のアドレスをグループ分けして、一つの情報源が選択全体を支配しにくくします。feeler と呼ばれる短い試験接続で、ほかのピアへの到達性も調べます。攻撃を難しくする仕組みですが、各サーバーの実際の所有者を特定したり、隔離を必ず防いだりするものではありません。実装は変化しており、ここでの資料は Bitcoin Core 29.0 を示しています。 [4] [7] [8]
IP アドレスや Tor サービスのアドレスは、接続先をプログラムに教えます。その先に新たな独立した人がいることの証明ではありません。一人の運営者が多数のアドレスを持つ場合も、複数の利用者が公開 IP アドレスや経路の一部を共有する場合もあります。Tor は接続のプライバシーに役立ちますが、そのアドレスだけでピアの独立性は証明できません。メッセージを届ける方法と、Bitcoin の履歴選択における重みは別の問題です。 [3] [4]
Proof of Work が対処するのは、偽の多数派という問題の重要な一部分であり、通信上のリスクすべてではありません。参加者が直接データを交換する P2P ネットワークには、大量通信による妨害、監視、メッセージの留め置きといった危険があります。そのため接続管理や資源消費の制限も必要です。安全性を考えるには、攻撃者が名前だけを操るのか、経路や計算能力も持つのか、それらを組み合わせるのかを区別します。 [1] [5] [6]
外部から到達できるノード数は、人数でもルールへの投票結果でもありません。情報の入手先と、自分で何を検証するかも重要です。自分の Full Node があれば受け取ったブロックを検証できますが、ネットワークの残りの部分への接続は必要です。ウォレットは、ビットコインを受け取ったり送ったりするためのアプリや機器です。それが他人のサーバーを使っているなら、ほかで多数のノードが動いていても、その依存は消えません。接点が多いことと独立性が高いことは、必ずしも同じではありません。 [1] [3] [9]
理解を深めるには、この項目とあわせて次もお読みください Nakamoto Consensus, Eclipse Attack, Selfish Mining, Block Propagation, Bitcoin, Proof of Work. 次の項目からも参照されています Byzantine Generals Problem, Nakamoto Consensus, Eclipse Attack, Selfish Mining.