仮想通貨モナコイン(Monacoin)、ビットコインゴールド(Bitcoin Gold)、ヴァージ(Verge)のブロックチェーンがいとも簡単、無残に改ざんされた理由とは?

現在の仮想通貨にはブロックチェーンと呼ばれる分散型台帳という方法が採用されています。ブロックチェーンが分散型台帳と呼ばれるのは、取引が行われた都度、ネットワークに参加するマシンすべてに記録が送信され、その記録をもとにして次の記録を紐づけるといった作業を行っているからです。

すなわち行われた取引が1対1では完結せずに、参加者全員に知らせることで不正や間違いを防いでいます。

万が一、間違いがあれば前回の取引内容が参照されますので、すぐに間違いが発見されます。また、マシンの電源が落ちるなどの不測の事態が起こってもネットワークに参加したマシンすべてに取引記録が逐一、周知されていますので、世界中のネットワークに参加しているマシンすべてがダウンしないかぎりは、どこかのマシンに残された記録と照合することができます。

このように一見すると不正や改ざんが100%不可能にみえますが、2018年5月15日にMonacoin(モナコイン)、16日にBitcoin Gold(ビットコインゴールド)、22日にVerge(ヴァージ)のブロックチェーンのブロック(台帳)が改ざんされて、内容を書き換えられて二重にコインが存在するという事態が起こっています。

具体的にどのような手口だったのか?

今回のビットコインゴールドにおける改ざん行為の具体的な手順として、以下のように報じられています。

    1. 攻撃者はまず、取引所の自らの口座にコインを預け入れる

      1. その預け入れたコインをすぐに引き出す

        1. 表面的にはマイニング権を取得してでマイニングを正規に行う一方、裏では表よりも偽の長いチェーンを高速で造成

          1. 裏で造成した偽の長いチェーンを送信してブロックにする

            1. その取引自体を無かったこと(取り消す)にする(表のブロックをもとに戻す)=改ざん

              1. 引き出したコインを口座からウォレットに送る

  • ブロックチェーンが無残にも改ざんされた理由

    ブロックチェーンが改ざんされた理由は、当然、不正を働くためですが、不正が不可能とまで言われるブロックチェーンにおいて不正を働くためにはそれなりの知識や準備が必要となります。

    匿名の報告者によれば、

    『「Block withholding attack」や「Selfish Mining」というブロックチェーンの仕様を悪用した方法により、実際に行われた取引情報が削除されて元のブロックに戻された状態で再計算された』

    と報じられています。

    分かりやすく言えば、処理能力の高いマシンを保有するなどして、高速で計算(マイニング)できる状況を作った上で「偽の長いチェーン」を一時的に造成して、不正が終わった後にブロックを元の状態に戻したと報じられています。

    ブロックチェーンには、マイニングしてブロックが衝突した際、長いチェーンを持つ方のチェーンを「正しい」としてそのチェーンが選択されます。

    ここでの衝突とは、1つの取引において2つの異なる結果が送信された際に起こる衝突のことで、この状態ではどちらの結果が正しいのか分かりません。しかし前述したようにブロックチェーンには「長いチェーンを持つ方が正しい」とする仕様になっていますので、仮に長いチェーンの内容が間違っていたとしてもそれが正しいとされてしまうのです。

    また、衝突に関して具体的に解説すれば、ハッシュ値の出力時に起こるエラーのことです。ハッシュ値のもととなる「ハッシュ関数」には様々な種類がありますが、出力した値はケタ数が定まっていますので同一になる必要があります。と、いうよりもむしろ同一にしなければエラーになります。

    入力値が異なるのだが、出力値が同じである時に判定の状態、いわゆる衝突が起こります。

    すなわち「Block withholding attack」「Selfish Mining」とは、ブロックチェーンの仕様である「長いチェーンを持つ方の記録を正しいとする」という機能を悪用した攻撃のことです。

    攻撃を行う際は、ハッシュレートの高い(マイニング速度の早い=計算の早い)マシンを大量に保有するなどして、処理速度を高めた上で自分のマシン内部で長い「偽のチェーン」を造成して、それをブロックチェーンにつなげて不正を働きます。

     

    マイニングに用いる高性能なマシンとは?

    前述のように長いチェーンを造成するためには高速でマイニングを行う必要があります。そのためには高性能なマシンが必要不可欠ですが、通常のパソコンでは処理能力に限界があります。

    そこでパソコンに実装できる別売りタイプの「GPU(グラフィックボード/ビデオカード)」を利用してGPUに計算(マイニング作業)をさせることで大幅にスペックを高めることができます。

    GPUとは、複雑な3Dグラフィック映像などを出力する時に使用されるプロセッサであり、一般的にGPUを用いてマイニングを行うマイナーを「GPU採掘者」と呼びます。

     

    「Block withholding attack」「Selfish Mining」を行うには51%のマイニングシェアが必要なのか?

    現在までの定説では、ブロックチェーンの改ざんを行うためには51%以上のマイニングシェアを握る必要があるとされていますが、近年の調査では40%ほどでも不正を行うことが可能だと報告されています。