ブロックチェーンはどう攻撃される?分散型ネットワークへの主なハッキング手法
主要な洞察
本記事では、ブロックチェーンネットワークが受けるさまざまな攻撃手法を解説します。ブロックチェーンは中央集権型データベースより安全性が高いものの、51%攻撃、ダブルスペンド、Sybil攻撃、セルフィッシュマイニング、スマートコントラクトの脆弱性、秘密鍵の盗難など、依然としてリスクがあります。実例を交えながら、特に小規模プロジェクトでの被害額の大きさも紹介。セキュリティ対策が進化する一方で、攻撃手法も巧妙化しており、継続的な警戒と技術革新がブロックチェーンの安全性維持に不可欠であると結論づけています。
ブロックチェーンは分散型台帳として機能し、情報の保存や取引において中央集権型データベースよりも信頼性が高い仕組みです。しかし、ハッキングのリスクがゼロではなく、実際に攻撃が頻繁に発生しています。分散型ネットワークへの攻撃手法はさまざまですが、多くの場合、コンセンサスメカニズムの抜け穴を突き、ブロックチェーンのハッシュレートを支配することを目的としています。これにより、攻撃者は台帳データの改ざんや混乱の発生、暗号資産の盗難を引き起こすことができます。
この記事では、ブロックチェーンがどのように攻撃されるのか、代表的な脅威とその仕組みを解説します。
51%攻撃
51%攻撃は、ブロックチェーンにとって最大の脅威のひとつです。特にProof of Work(PoW)コンセンサスアルゴリズムを採用しているネットワークで発生します。
攻撃の仕組み
ネットワーク全体の計算能力(ハッシュレート)の過半数を掌握することで、企業の持株比率の過半数を握るのと同じように、意思決定を独占できます。つまり、ブロックチェーンの計算力の51%を支配することになります。
攻撃者がマイニングパワーの過半数を握ると、トランザクションの並び替えや承認の無効化、他のマイナーによるマイニングの妨害が可能になります。結果としてネットワークの混乱や障害を引き起こし、さらに「ダブルスペンド(二重支払い)」のような不正も実行できてしまいます。
では、どのようにしてこれほどのパワーを得るのでしょうか。大量のマイニング機器をレンタルしたり、マイニングプールを乗っ取ったり、あるいは自ら設立する方法があります。また、他のマイナーを騙したり、マルウェアを使ってボットネットを構築するなど、不正な手段も存在します。
リスクに見合う価値は?
ただし、ビットコインのようにノード数が多く、マイニング機器や電力コストも高い大規模なブロックチェーンでこの攻撃を実行するのは、現実的にはほぼ不可能ですし、労力に見合いません。しかし、小規模なプロジェクトではこの脅威を完全に排除できません。
実際に、ZenCash(ZEN)、Litecoin Cash(LCC)、MonaCoin(MONA)、Verge(XVG)、Bitcoin Gold(BTG)など複数のネットワークが51%攻撃を受けています。
実際の事例
51%攻撃が成功すると、攻撃者はあらゆるプロトコルの脆弱性を突くことができますが、主な目的はやはりダブルスペンドです。
2018年にZenCash(ZEN)ネットワークで発生した攻撃では、攻撃者が13,000 ZENと6,600 ZENという2件の大口トランザクションを二重支払いし、合計55万ドルを奪いました。攻撃は110ブロック・4時間に及び、ネットワーク側のコストは約3万ドルと、被害額に比べて小規模でした。
また、Ethereum Classicも2020年に3度攻撃を受けています。攻撃者はNiceHashというサービスから計算力をレンタルし、ETCのハッシュレートが急落したタイミングを狙いました。GPUをレンタルしてネットワーク全体の51%以上のハッシュレートを確保し、100万ETC超(当時約900万ドル相当)のダブルスペンドを実行しました。
ハッシュレートのレンタル費用は数十万ドル規模で、最終的な「利益」は不明ですが、同様の事例は他にも多数あります。
ダブルスペンド(二重支払い)
ダブルスペンドの問題は、ブロックチェーンや暗号資産が登場する以前から存在していました。
物々交換や取引で、その場で決済を完了せず「後で支払う」と約束した場合、将来的にその資産を持っていないリスクが常にあります。
理論上、支払いを約束する書類(契約書や手形など)を複数の相手に同時に渡すこともできてしまいますが、実際に存在する資産は1つだけです。これがダブルスペンドです。ブロックチェーンでも原理は同じです。
ダブルスペンドの仕組み
攻撃者が同じコインを2回以上使うことで発生します。例えば、1 BTCを持つユーザーが複数の相手に同時に送信し、何かを受け取る場合、最終的に1 BTCを受け取れるのは1人だけです。
ネットワークが正常に稼働していれば、ノードの過半数が承認した1件のみが有効となり、通常は問題ありません。ブロックチェーンにはこの攻撃を防ぐ仕組みが備わっていますが、リスクはゼロではありません。
ダブルスペンドを実現する手段はいくつかあり、51%攻撃もその一例です。攻撃者がハッシュレートの過半数を握れば、自分で新しいブロックを生成・改変し、特定のトランザクションだけを承認することができます。

この図は、攻撃者がメインチェーンをフォークし、不正なトランザクションを承認する一方で、正規のトランザクションが5件処理されている様子を示しています。
この間に、攻撃者はコインを仮想通貨取引所に送金し、1〜5回のブロックチェーン承認が必要な取引を完了、その後別の暗号資産や法定通貨を受け取ることが可能です。
「攻撃のウィンドウ」が閉じると、不正なブロックは破棄されますが、攻撃者から見ると、取引所で売却したコインは手元のブロックチェーン上にも残っているため、実質的に「偽の」仮想通貨を売ったことになります。
Finney攻撃
Finney攻撃は、ビットコインの最初の受取人であり、ブロックチェーン上でダブルスペンドの可能性を最初に指摘したHal Finney氏にちなんで名付けられました。
この攻撃は、未承認トランザクションを相手が受け入れた場合に発生するダブルスペンドの一種です。
マイナーが自分のアドレス「A」から別の自分のアドレス「B」へのトランザクションを含めたブロックを生成し、すぐにネットワークへ公開しません。その後、アドレス「A」から他人のアドレス「C」へ別のトランザクションを実行し、相手が未承認のまま受け取ると、攻撃者は最初のブロックをネットワークに公開します。これにより「A」→「C」の取引は無効となり、攻撃者は二重の利益を得ます。
レース攻撃
この攻撃は、2つのトランザクションを競わせる手法です。攻撃者が同じアドレスから複数の端末で同時に同じコインを2人の受取人に送信し、両者が商品や仮想通貨を送った場合、後から処理された取引は無効になります。
この攻撃は、販売者が未承認トランザクションを受け入れた場合のみ成立します。被害を防ぐには、最低1回の承認を待つだけで十分です。
Sybil攻撃
Sybil攻撃は、同名の書籍の主人公Sybilが多重人格障害の治療を受ける話にちなんで名付けられています。攻撃者が自分の管理下にあるノードをネットワーク上に大量に配置し、被害者ノードを「包囲」してすべてのトランザクションをコントロールするという手法です。
脆弱性を狙う
ビットコインのような大規模ネットワークでは、ノードがランダムに他のノードを選んでトランザクションを承認するため、実現はほぼ不可能です。
そのため、Sybil攻撃は新興の暗号資産プロジェクトが主な標的となります。ネットワークに接続する際、ノードは信頼できるノードのIPアドレスを知らず、問い合わせを行います。
この問い合わせが攻撃者のノードに届くと、攻撃者が管理するノードのアドレスを返すことができます。
これにより攻撃者は以下のことが可能となります:
- ユーザーのトランザクションをブロックし、メインブロックチェーンから切り離す
- どのブロックに「接続」させるかを決定(多くはダブルスペンドが行われているブロック)
- ユーザーのすべてのトランザクションを追跡する
つまり、攻撃者が管理するノードが他のノードに誤ったデータを承認させることができます。
セルフィッシュマイニング
PoWを採用するブロックチェーンには、不正なマイナーが悪用できる脆弱性があります。それは、複数のブロックを同時に承認できる点です。
フォーク問題
2つのブロックが同時に生成され、前のブロックに接続されると、ブロックチェーンは2つのチェーンに分岐(フォーク)します。フォークはブロックチェーンの構造を複雑にし、取引の遅延を招くため、マイナーはブロック承認後すぐに他のノードに情報を伝える必要があります。
しかし、不正なセルフィッシュマイナーはこの情報を隠し、「正直な」ノードを欺いて新たなチェーンを生成させ、ネットワークのフォークを意図的に長引かせます。
実際のシナリオ
たとえば、セルフィッシュマイナーがブロック2001を採掘したのにネットワークに公開しなかった場合、他のノードは2000から新しいブロックを採掘し続けます。つまり、2000番目のブロックが正直なマイナーと攻撃者の2つ存在し、それぞれが独自の2001番ブロックを持つことになります。
詐欺師は自分のチェーンにブロックを追加し続け、チェーンを伸ばします。やがて攻撃者が採掘した2001番ブロックの情報をネットワークに流すと、ネットワークはそれが先に見つかったと認識し、セルフィッシュチェーンを有効とみなして、同期間に正直なノードが追加したブロックを破棄します。結果、正直なマイナーは報酬を得られず、努力が無駄になります。
ルーティング攻撃
これらの攻撃は、ブロックチェーン自体のセキュリティ問題ではなく、インターネットサービスプロバイダー(ISP)の接続プロトコルの脆弱性を突くものです。
プロトコルにアクセスした攻撃者は、偽の経路情報を公開できます。この攻撃はダブルスペンドにも利用されることがあり、新しいブロックの伝達を遅延させることでネットワークから見えなくし、その間に仮想通貨を二重支払いできる「隙間」を生み出します。
スマートコントラクトの脆弱性を突く攻撃
スマートコントラクトは人間がプログラムするため、ミスがつきものです。
コードミスの代償
スマートコントラクトにはさまざまな脆弱性が潜んでいます。検出が難しい複雑な問題から、単純なタイプミスまで、どんなミスも数百万ドル規模の損失につながる可能性があります。
Web3セキュリティ企業Beosinの2023年6月30日付レポートによると、2023年上半期に詐欺やハッキング、スキャムで失われた暗号資産は合計6億5600万ドル。そのうち56%がスマートコントラクトの脆弱性によるものでした。
スマートコントラクト自体の脆弱性だけでなく、記述言語にも問題が潜みます。2023年7月30日には、Curve Financeの4つの流動性プールが、スマートコントラクト記述用言語Vyperの脆弱性によって攻撃を受けました。Curve FinanceはAMM(自動マーケットメイク)技術を用いた分散型取引所で、DeFiにおける主要なステーブルコイン流動性ハブです。被害総額は約6000万ドルで、このうち2000万ドルはホワイトハットによって回収されCurveに返還されました。特にCRV/ETHプールが大規模にハッキングされ、約4000万ドル分の流動性が奪われました。
DDoS・タイムディレーション攻撃
DDoS攻撃は暗号資産の盗難が目的ではなく、プロジェクトを妨害し信用を失墜させることが狙いです。大量の「ダスト」トランザクションをネットワークに送りつけることで、データ転送やブロックチェーンの更新、新規ブロック生成を遅延させ、運用を困難にします。
秘密鍵への攻撃
ブロックチェーン上でのデータ伝送の機密性を保つため、公開鍵暗号方式(非対称暗号)が使われています。秘密鍵と公開鍵は数学的アルゴリズムで結びついており、公開鍵が分かれば相手に暗号化したメッセージを送り、秘密鍵で復号できます。秘密鍵から公開鍵を導くことはできますが、その逆はできません。
秘密鍵はユーザーの暗号資産すべてへのアクセス権を持つため、攻撃者が狙う最大の標的です。
脆弱性と対策
秘密鍵や関連する暗号資産への最も簡単な攻撃方法は、シードフレーズの盗難です。紙に書かれたニーモニックコードを盗む、ソーシャルエンジニアリングやフィッシング攻撃など、さまざまな手口が使われます。
秘密鍵と暗号資産を安全に守るには、Tangem Walletのようなウォレットに保管を任せる方法があります。Tangemの暗号資産ウォレットはシードフレーズを使わないため、盗難リスクがありません。秘密鍵は2枚または3枚のカード(メインカードとバックアップカード)のチップ上で生成・保存され、外部に取り出すことはできません。
まとめ
現在、ブロックチェーンはここで紹介したような大規模攻撃や、プログラムコードや暗号方式の不具合など多くの脅威に直面しています。ハッカーは常に抜け穴を探し、スマートコントラクトの脆弱性やブロックチェーン技術そのものの弱点、仮想通貨取引所への攻撃を試みています。
仮説上の脅威
現時点では理論上にとどまる攻撃も存在します:
- プール間のカニバリズム(プールを破壊しブロックチェーンの運用を妨害)
- P + イプシロン攻撃:Vitalik Buterin氏によれば、PoWネットワークで最も不安な問題の1つで、他の参加者に報酬を与えてブロックチェーンの変更を支持させる手法
- タイムジャッキング(トランザクションのタイムスタンプを操作する試み)
今のところ、ハッカーはこれらの手法にはあまり関心を示していません。
今後の展望
これらすべてへの唯一の解決策は、分散型ネットワークのセキュリティメカニズムを継続的に強化し続けることです。経験上、防御レベルが高まれば高まるほど、マイナーやハッカーもそれを突破するためにより高度な手法を生み出します。この戦いは永遠に続くかもしれません。従来の金融でもATMのハッキングやクレジットカードの盗難、銀行強盗が絶えないように、100%安全な仕組みは存在しません。