インターネットの運用方法に存在する脆弱性を利用して、ビットコインネットワークを攻撃する方法を発見した、と研究チームが発表しました。
スイス連邦工科大学チューリヒ校 (ETH Zurich) の研究チームによって作成されたこのエクスプロイトは、Border Gateway Protocol (BGP) と呼ばれるインターネットの基盤テクノロジーの重要な部分に存在する問題を利用したものです。
インターネットは、複数のネットワークから成るネットワークであり、自律システム (AS) として知られます。ネットワーク間のトラフィックのルーティングには BGP が使用されます。ほとんどのユーザーは BGP を使用することはありませんが、トラフィックをルーティングする ISP にとっては必要なテクノロジーです。
ISP が本当に信頼できるのであれば、この仕組みで問題はありません。しかし、ISP が信頼できない場合はどうでしょうか。インターネットの大部分がそうであるように、BGP の開発は、現在のようなサイバー犯罪がほとんど行われていない環境の中で、技術的な問題の解決を目的とした他人を疑うことのないエンジニアによって行われました。
これらのエンジニアによる BGP の開発は、1989 年に 3 枚のナプキンに書かれたメモから始まりました。その目的は、ネットワークの急速な拡大に伴って発生していたルーティングの問題を解決することでした。当初は、自主管理のもとで運用される短期的な解決策でしたが、その後これに代わる長期的な解決策は現れませんでした。BGP の歴史については、こちらのワシントンポスト紙による優れた記事で詳しく紹介されています。
28 年後の現在、BGP を悪用した攻撃が可能になっています。BGP が原因で発生する問題の中には、意図的でないものもあります。たとえば、2008 年に Pakistan Telecom が BGP を使用して YouTube へのトラフィックを遮断しようとした際、大部分のインターネット利用者が YouTube にアクセスできなくなったことがあります。この時、Pakistan Telecom が入力したルーティング設定が世界中に拡散されました。
意図的な攻撃の場合、その被害は深刻です。BGP の乗っ取りは珍しいことではありません。攻撃者は BGP を乗っ取ることで、トラフィックにインターネットの特定の部分を通過させることができます。
分岐 (フォーク) の問題
ビットコインネットワーク上のトラフィックの大半が、一握りの ISP をトラバースしていることが、研究チームによって発見されました。ビットコイン接続の 60% は 3 つの ISP しか通過していません。そのうちの 1 つまたは複数の ISP が BGP を使用してトラフィックの乗っ取りを試みた場合、2 種類の攻撃が可能だと報告書は警告しています。
1 つ目の攻撃では、ネットワーク内のコンピュータ間の接続を切断するように BGP を設定することによって、ビットコインネットワークを一時的に 2 つに分割します。これにより、ビットコインのブロックチェーンアルゴリズムで問題が発生します。なぜなら、ブロックチェーンアルゴリズムが機能するには、すべてのコンピュータが一斉にネットワーク全体で共有されている台帳をビットコイントランザクションに関する同じ情報で更新する必要があるからです。
マシンを人為的に 2 つのグループに分けると、各グループがそれぞれの別の台帳で作業することを意味し、マシンはすぐに非協調状態に陥ります。この状態は道路の分岐 (フォーク) に似ているため、ブロックチェーン用語で「フォーク」と呼びます。
ビットコインネットワークでは、すべてのコンピュータが互いにやり取りできるようになると、フォークが解決されます。この時点で、トランザクションが多い方の台帳が勝ち、ブロックチェーンのもう一方のフォークは破棄されます。
BGP を乗っ取る能力を持った攻撃者はこの状況に乗じて、小規模な方のグループのユーザーと取り引きし (たとえば、オンラインサービスの代金としてビットコインをいくらか送信する)、その後フォークを崩壊させて、トランザクションなど最初からなかったと主張します。これは二重支払い攻撃と呼ばれるものです。
2 つ目の攻撃では、1 つのビットコインノードだけを標的にし、BGP 乗っ取りを実行してビットコインブロックの配信を遅延させます。
ビットコインネットワークは、およそ 10 分ごとに新しいブロックを作成します。作成されたブロックには、ネットワーク上で発生した最新のトランザクションが格納されます。これらのブロックは、個々のノードからの要求を受けてネットワーク全体に拡散します。こうすることで、ネットワーク上の全ユーザーが同じ状態を共有でき、誰が誰にビットコインを送信したのかを把握できます。
BGP 乗っ取りを実行する攻撃者は、ネットワークルーティングを改ざんし、最新のビットコインブロックを要求している標的ユーザーに対して最新のトランザクションではない古い方のブロックを送信することができます。そして、20 分経過する直前に最新のブロックの通過を許可します。これにより、標的となったユーザーはネットワーク上の最新のトランザクションを見ることができません。この攻撃方法を用いることで、ビットコインを 2 回使うことも、多数のノードを標的にしてネットワークを混乱させることもできます (ネットワークの信頼性を損なうことによってビットコインの価値を改ざんできる可能性があります)。
1 つ目の攻撃の詳細はいずれネットワーク参加者によって明らかになると思われるが、2 つ目の攻撃については一切検出されないだろう、と研究チームは指摘しています。
これは、ビットコインプロトコル自体の問題ではありません。結局のところ、インターネットとインターネット関連のプロトコル (BGP など) は、ビットコインなど数多くのサービスという名の列車が走るためのレールに過ぎません。責められるべきは、問題を悪化させているビットコインの仕組みです。ビットコインのマイニングが中国に集中していることも (全ビットコインの半分以上が中国のマイニングプールを使ってマイニングされています)、問題を悪化させています。