ブロックチェーンは本来、誰でも参加が可能なオープンで透明性の高いネットワークです。そのため、ブロックチェーンならではのリスクと、それを防ぐセキュリティの仕組みが存在します。このリスクとセキュリティについて、用語とともに解説します。
ブロックチェーンのセキュリティとは?
ブロックチェーンにおける「セキュリティ」とは、不正な取引やデータの改ざんが行われないように保つことを指します。
ブロックチェーンは元々、分散する台帳間の情報が一致した場合しか取引が成立しない事、改ざんはすぐに見つかることから、セキュリティ上堅牢な構造を持っています。
一方でこの仕組み特有のリスクや攻撃手法も存在します。さまざまな攻撃手法やリスク、それを防ぐセキュリティの仕組みを、各種の用語とともに解説します。
P2Pネットワークに共通するリスクと対策
Byzantine Generals Problem:ビザンチン将軍問題
P2P等の分散ネットワーク環境において、ノードの一部が故障または故意によって偽の情報を伝達する可能性がある場合に、全体として正しい合意を形成できるかを問う問題。
この用語はビザンチン帝国(東ローマ帝国)の将軍たちが、それぞれ軍団を率いて敵国のひとつの都市を包囲している場面に由来しています。
・敵都市を落とすなら総攻撃は必須。
・このため投票による多数決で総攻撃or全軍撤退どちらかを合意したい。
・将軍たちは互いに距離をとって都市を包囲しているため、投票は伝令に頼ることになる。
・9人の将軍のうち1人が実は反逆者である。(故障もしくは悪意を持ったノードに相当)
この状況で、4人が攻撃に投票、別の4人が撤退に投票した場合、反逆者は前者には攻撃票、後者には撤退票を送る。
すると、前者は(攻撃が過半数と信じて)攻撃、後者は(撤退が過半数と信じて)撤退し、結果として攻撃は失敗に終わることになる。
Byzantine Fault Tolerance:ビザンチン耐性
ビザンチン将軍問題が発生しても全体として正しく動作するシステムを、ビザンチン耐性があるといいます。不特定多数のノードが参加するパブリックチェーンにはビザンチン耐性は必須です。
Practical Byzantine Fault Tolerance(PBFT):実用的ビザンチン耐性
サトシ・ナカモトは、ビザンチン障害耐性を持つ、決済システムを実現するために、ビットコインにProof of Work(PoW)を導入しました。PoWは、ネットワークにおける、挙動の信頼性を、仕事量(≒投下したCPUパワー)によって評価するアルゴリズムです。
ビットコインの取引データをブロックに記録する権利を得るためには膨大な計算力が必要です。そのため、悪意あるノードが不正な取引を記録するためには、他の善良なノードの持つCPUパワーの総和を超えるCPUパワーが必要になります。これは現実的には不可能であることに加えて、それだけのCPUパワーを持っているのならルールに則って、報酬のビットコインを貰った方が利益がでることから、取引履歴を改ざんするインセンティブがなくなるというロジックです。
このような設計を組み込むことで、ビットコインは実用的ビザンチン耐性を持つ、世界初のP2P決済システムとなりました。
Acynchronous Byzantine Fault Tolerance(ABFT):非同期ビザンチン耐性
PBFT(Practical Byzantine Fault tolerance)は、実用に耐えうるレベルの耐性は認められるものの、数学的にビザンチン耐性が証明されている訳ではありません。
非同期ビザンチン耐性は理論上、ビザンチン将軍問題が生じないことが数学的に証明されたもので、ゴシップアルゴリズムやハッシュグラフアルゴリズムがこれに当たります。
Hedera Hashgraphなどが非同期ビザンチン耐性を実現していることが知られています。
Civil Attack:シビルアタック
P2Pネットワークにおいて、大量の悪意あるノードを参加させる攻撃手法。
Ecplise Attack:エクリプスアタック
P2Pネットワークにおいて、 2つのネットワークを繋ぐ悪意のあるノードが、A側から来た通信データを書き換えてB側に送り、B側から来たデータを書き換えてA側に送る、またはデータを送らないという攻撃。
これによりネットワークAとネットワークBに違うデータが流れるため、同じ一つのネットワークではなく、別々のネットワークとして分断されてしまいます。
Front Running:フロントランニング
取引情報が公開されているブロックチェーンの仕組みを利用した攻撃。フロントランナーは、トランザクション処理前の取引情報が格納されているメモリプールを見て、その中から自分に有利になる取引を探し、その取引よりも先に自身の売買を成立させようとします。
Nakamoto Consensus(NC):ナカモト・コンセンサス
サトシ・ナカモトによって考案されたコンセンサスのこと。ファイナリティに確率論的なアプローチを持ち込むことで、オープンな分散型ネットワークにノードが自由に出入りできるようしました。
EigenTrust++:アイゲントラスト++
NEMブロックチェーンにおけるセキュリティアルゴリズム。ノード間でやり取りされる情報の信頼度を蓄積し、信頼度の低いノードの情報を拒否する仕組み。P2P方式の「誰でも参加できる」という特徴における問題点「悪意あるノードの参加」を拒否することが可能となります。
Multisig(Multi Signature):マルチシグ(マルチシグネチャー)
取引データ送信のために複数の署名が必要な状態。データ送信時に複数の秘密鍵を用います。例として「2 of 3」または「2/3」などと表現される手順では、事前に3つの秘密鍵が作られ、データ送信のためには2つの秘密鍵で署名する必要があります。秘密鍵は、利用者の端末と仮想通貨交換業者のサーバーなどに分割して管理されるケースが多いです。
PoW(Ploof of Work)のリスクと対策
51%攻撃
コンセンサスアルゴリズムにPoWを採用しているブロックチェーンにおいて、特定のマイナーが計算能力の51%以上を支配することで理論上可能となる攻撃手法。不正な取引を正当なものとして承認したり、正当な取引を拒否するなどして不正に利益を得る行為を指します。
但し、実際に51%攻撃を行った場合、そのマイナーが不正に得る利益よりも損失の方が大きいと考えらます。なぜなら、攻撃が起きた暗号資産は信頼性を失い市場価格が暴落することとなり、攻撃したマイナー自身が保有していると想定される大量の暗号資産の価値も下がるためです。よって、マイナーにとっては51%攻撃を行うよりも、膨大な計算力を正当なマイニングに充てて報酬を得るほうがメリットが大きいといえます。
PoS(Ploof of Stake)のリスクと対策
Long Range Attack:ロングレンジアタック
コンセンサスアルゴリズムにProof of Stake(PoS)を採用しているチェーンにおける攻撃手法。
コインを沢山持っていれば高いマイニングコストを支払わずにブロックを生成できるため、長大なチェーンを安価に生成して現在の正規チェーンに長さ競争で打ち勝って過去のトランザクションの一部または全部を無効化する事ができるとういうものです。
Nothing At Stake問題
Proof of Stake(PoS)に存在する以下の問題点のことを指します。
- PoSの場合、PoWと異なり、多量のマイニングコストが不要なため、必ずしも正しいチェーンを支持するインセンティブがない。コイン保有者は分岐したふたつのチェーンに同時に賭けることができ、事態を収集する動機をもたない。
- ジェネシスブロックの時点でチェーンの「開始者」の持ち分は100%のため、「開始者」は何度でも”リセット”できる。その他の参加者も自分の持ち分がある地点に戻って、チェーンを分岐してしまうことが可能。
- 攻撃者は利他的なノード(元のチェーンに専念する)の力を超えさえすればよい。合理的なノードは元のチェーンと攻撃者のチェーンの両方に投資すると想定できるため。
イーサリアムのPoSでは、この問題の対策として、Slashing:スラッシングという仕組みを導入しています。これは、不正なチェーンを生成した場合にステークしていたETHが没取される仕組みです。
コメント