モナコインが受けたセルフィッシュ・マイニング攻撃とは?【分かりやすく解説】

2018年の5月は、立て続けにPoWの仮想通貨が攻撃を受けた月でした。

モナコインがセルフィッシュ・マイニング攻撃を受け、ビットコインゴールドとVergeは51%攻撃受けました。Vergeに至っては2回目の攻撃です。

今回の攻撃によりモナコインが約1,000万円、ビットコインゴールドが約20億円、Vergeが約3億円のハッキング被害を受けました。

共通点はどの通貨もPoW(Proof of Work)の通貨という事です。

今回は以前ブログでも紹介したモナコインが受けた、セルフィッシュ・マイニング攻撃について解説させて頂こうと思います。

PoWやマイニングの事が分からないと、今回の記事の理解は難しいので、以前ブログで書いた:PoWについての記事を先に読んでみて下さい。

PoWについての記事
モナコインについての記事

セルフィッシュ・マイニング攻撃とは

モナコインが受けた攻撃は「セルフィッシュ・マイニング攻撃」や「Block Withholding Attack」と呼ばれています。

まず、今回モナコインが受けたセルフィッシュマイニング攻撃によって、チェーンそのものが壊されたわけでもなく、ユーザーのモナコインが消失わけでは無い為、ブロックチェーン自体が改ざんされたわけではありません。

また、下記がキーワードになりますので、頭にいれておきましょう。

➊ブロックチェーンが分岐した時、長い方のチェーンが正しいチェーンと認識される

❷取引所は一定のブロック数が生成された段階で、入金処理を確定(承認)する
(6承認の場合、6つの新しいブロックが生成された時点で入金を確定させるという意味)

今回のセルフィッシュ・マイニング攻撃では、モナコインのマイニング参加者(マイナー)が、PoWの計算競争で最初に回答を見つけたにも関わらず、ブロードキャストを故意にしませんでした。

*ブロードキャストとは*
自分が導き出した計算結果をビットコインネットワークのノードへ送信する事。

PoWでは1番最初に計算を解いたマイナーだけに、報酬として新規コインが割り当てられるので、本来であれば、ブロードキャストを保留する事はあり得ません。

そして、そのマイナーはその後もブロードキャストを行わず、正規ブロックが生成されるより早いスピードで、不正なブロックを秘密裏に作り続けました。

上図のように他のマイナーは正規ブロックをPoWによって繋げていきますが、攻撃者が秘密裏につくっている別ブロックには気が付いていません。

そして、攻撃者は秘密のブロック作成中に、①モナコインを扱っている取引所へモナコインを送金します。

取引所は送金後に、②ブロックチェーン上のブロックが所定の個数生成された後に入金確定を行います。尚、モナコインの場合、各取引所は通常20前後のブロックが生成された後(20承認)に入金を確定させていました。

*上記の図は分かりやすくする為に、仮で3承認にしています。

入金が確定され次第、③攻撃者はその取引所で他の仮想通貨や法定通貨にモナコインを換えた後、即座に出金します。

そして最終的に、攻撃者はあらかじめ秘密裏に作りこんでいたブロックを、一気にブロードキャストします。

ここで、ブロックチェーンの決まり事である、長いほうのチェーンが正式なブロックチェーンとして採用されるという事が起こり、攻撃者のチェーンが正当なものになってしまいました。

これによってどうなるかというと、取引所が攻撃者から受け取ったはずのモナコインが、ブロックチェーンの消滅と共になかった事になります。この現象をReorganization(巻き戻し)と言い、Reorg攻撃とも呼ばれています。

そして攻撃者はあらかじめ作りこんでおいたブロックに、「取引所に送金したモナコインが別のアドレスに送られた」というデータを書き込んでいました。

攻撃者が作ったチェーンが正規チェーンと見なされている為、攻撃者はモナコインを取り返したばかりか、取引所で換金・出金していた別の仮想通貨 or 法定通貨まで手に入れました。

原因と今後の対策

実は今回モナコインで発生したセルフィッシュ・マイニング攻撃は、以前から関係者の間ではPoWコインで懸念されていた問題でした。

原因の一つして、モナコインのハッシュレートがビットコインやイーサリアムに比べて非常に小さいという事があげられます。

「ハッシュレート」「マイニングに参加しているマシンの総計算能力」の事で、モナコインのハッシュレートはビットコインと比べると非常に小さいです。

このハッシュレートが大きければ大きいほど、1マイナーが全体ハッシュレートの大部分を確保する事が困難になる為、ハッシュレートの高さそのコインの安全性の指標になります。

上図の通り、ハッシュレートに関しては、ビットコインが圧倒的な数字を誇っており、モナコインはビットコインのハッシュレートの約2,500,000分の1(0.00004%)に過ぎません。

マイニングの計算方法(アルゴリズム)が異なる為、一概に比べる事は出来ませんが、ビットコインの2,500,000分の1のハッシュレートをモナコインに割り当てるだけで、モナコインのネットワークを完全に支配し、セルフィッシュ・マイニング等が実行できるようになります。

また、もう一つの原因としては、取引所での承認数の少なさです。

今回セルフィッシュ・マイニング攻撃を受けたロシア系のLivecoinは、モナコインのブロックチェーンを反映させた未熟な自社システムを信じて、少ない承認数(ブロック数)で入金確定としていました。

この承認時間が短かった為に、短時間の間にチェーンを巻き戻されてしまいました。

対策として、モナコインを扱っているBitflyerやZaifなどの日本の取引所は、すぐにモナコインの承認数をあげました。

通常20前後の承認数を100承認まで上げる事により、攻撃者は分岐したチェーンを長く維持する(マイニングし続ける)必要がある為、マイニング費用が成果に見合わなくなります。

ただし、上記だけではハッシュレートの過半数を占有してチェーンを改ざんしようとする51%攻撃に対して不十分です。そこでもう一つ「チェックポイント」という対策が講じられました。

このチェックポイントは、チェックポイントが打たれた以前のブロックチェーンを無条件に正しいものとし、チェックポイント以前のブロックチェーンを分岐させる事を不可能にする機能です。

モナコインのアナウンスでは、ジャッジノードと呼ばれる特別なノードをネットワーク上に複数設置し、あらかじめ定められたルールに基づいてチェーンを確定させる、とあります。

ジャッジノードによって、マイニングから数ブロックの経過がモニタリングされ、確定したブロックがチェックポイントとして配信されるようになります。

取引所などはこの配信を受信しチェックポイントを打つことにより、大規模なReorg(巻き戻し)攻撃を防ぐ対策を取る事が出来ます。

以上、上記2つの対策により、現在モナコインに差し迫った脅威は、ほぼ解消されました。

ただ、承認数を100に上げた事により、現在取引所でモナコインの送金 ⇒ 受信を完了させるには、約3時間かかるという支障が出ています。

チェックポイントに関しても、第三者によって設置されている事から、P2Pの分散型台帳の本質に沿っていないという考えても出ています。

モナコインプロジェクトの技術者であるWatanebe氏は「まずチェーンを安定させる事を最優先に考えたうえでの対応」と言っていますが、これには自分も賛成です。

非中央集権にこだわって、チェーンがぐちゃぐちゃにされたのでは本末転倒で、なによりも一番被害を受けるのは各モナコインユーザーですからね。

PoW形式をとる他通貨でも同様の事が起こる可能性があるので、このタイミングで約1,000万円の被害で済んだのは、モナコインだけでなく他のPoW通貨にとっても、かえっていい教訓になったとさえ思います。

今回の件をバネに、モナコインには更なる発展を遂げてもらいたいです。

お勧めの仮想通貨取引所

取引量やセキュリティ等総合的に考えて、初心者の方に一番お勧めできる取引所です。 bitbank