2018年9月12日はじめにブロックチェーンはP2P方式を用いた分散型台帳により不正が行われないと信頼した上で暗号通貨の取引等価値交換が可能なシステムである、とされています。実際には暗号通貨に関する不正が起きており、「コインチェックのNEM流出」、「モナコインの流出」この2つの事件は強いインパクトを与えました。これらの事件はブロックチェーンシステムの何が問題であったのかブロックチェーン自体に内包されているリスクは何なのかそれを解消する術はあるのかこの記事では以上のポイントを、まず実際に想定されうるブロックチェーンにおける不正を分類し、その後実例を見ていくことで、まとめました。ブロックチェーンで不正を起こす方法ブロックチェーンに対して不正を起こすために行われる攻撃には以下の2種類があります。ブロックチェーンシステムそのものに対する攻撃ブロックチェーンシステムの周辺に対する攻撃まず1つめの「ブロックチェーンシステムそのものに対する攻撃」は、ブロックチェーンシステムの問題点をうまく利用することによって、ブロックチェーン自体のデータを改ざんする手法です。ブロックチェーンの特に不正を行う余地を与えている2つの問題点としては、51%問題ファイナリティ(決済完全性)の不確実性があげられます。51%問題とは、プルーフ・オブ・ワークをコンセンサスアルゴリズムに用いているネットワーク全体の51%以上の計算力を抑えれば理論上マイニングを自由にコントロールできる問題です。ファイナリティの不確実性は、ブロックチェーンにおいて取引が確実に認められることに対して不確実性が存在する問題です。2018年のモナコインの流出では、ファイナリティの不確実性から起因した「セルフィッシュ・マイニング攻撃」という攻撃手法が用いられています。これらの問題はブロックチェーン自体が抱えている問題であり、暗号通貨やブロックチェーンの普及を阻害している要因の1つになっています。2つめの「ブロックチェーンシステムの周辺に対する攻撃」は、ブロックチェーンの周辺にある物、例えば取引所の個人のウォレット等に対して攻撃する手法です。コインチェックの流出は、取引所で管理されている個人のウォレットがオンライン上に存在していたことから、攻撃の対象になりました。これはブロックチェーンそのものではなく、取引される暗号通貨を管理するための周辺技術の脆弱性に起因した問題点が攻撃対象となりました。それぞれの問題点と攻撃手法、解決策について詳しく見ていきます。51%問題51%問題とは?51%問題とは、プルーフ・オブ・ワークをコンセンサスアルゴリズムに用いているブロックチェーン全体の51%以上のマイニング計算力を抑えれば理論上マイニングを自由にコントロールできる問題です。簡単に考えるならば、51%以上の計算量を不正なマイナーが抑えたとすると、他の正しいマイナーが正しいデータをブロックに書き込むより早く、不正なマイナーが不正なデータをブロックに書き込むことができる、と言えます。結果的に、51%以上の計算量を抑えられるとプルーフ・オブ・ワークを用いたブロックチェーンは正常に機能しなくなります。51%問題の解決法51%問題の解決方法は、「ブロックチェーン全体の計算量(ハッシュレート)を上げていくこと」、「プルーフ・オブ・ワーク以外のコンセンサスアルゴリズムを用いる」が最も良い方法でしょう。51%問題は、プルーフ・オブ・ワークそのものが内包する問題であり、それを根本から解決することは不可能です。したがって、プルーフ・オブ・ワークを用いないか、あるいはそのネットワークに対する参加者を増やして、全体の計算量を上げていく以外に51%問題を起こさせない方法はありません。ビットコインやイーサリアム等のパブリックな暗号通貨のブロックチェーンの計算量を51%以上抑えることは、現状のマイナーの数から見て現実的に実現困難です。それを行うと仮想通貨の信頼が下がり価値が目減りすることから、そのコストに見合ったリターンを得ることが難しくなることが想定されます。これは、ブロックチェーンにおいてマイナーを不正に向かわせないインセンティブになっています。ファイナリティの不確実性ファイナリティの不確実性とは?ファイナリティ(決済完全性)とは、「送金等の決済処理が確実に執行されれこと」を言います。ブロックチェーンにおいて取引が確実に認められることに対して不確実性が存在する問題です。ビットコイン等のブロックチェーンでは、データの改ざん等によりブロックチェーンが分岐した場合に「長いブロックチェーンを正しいとする」ルールがあります。このルールにより、正しいデータを記録している短いブロックチェーンが、長いブロックチェーンに切り替わることで、取引データが変化してしまう可能性があり、例えば、取引データそのものが消えてしまったり、自分の口座残高が変化してしまいます。ファイナリティの不確実性の解決方法ファイナリティの不確実性を解決するための1つの手法として、「ウォレットにおける承認数を上げる」という手法が挙げられます。ビットコインでは、取引がブロックチェーンにおいて確定したとしても、数ブロック以上ブロックが追加されないと、そのビットコインを用いて次の取引を実行できないように制限しているものもあります。これは、数ブロックが追加される時間に、本来正しかったブロックチェーンが不正なブロックチェーンとの長さの伸ばし合い競争に勝利し、正しいデータがブロックチェーンに記録される、ということを期待したものです。承認数を上げれば上げるほど正しいチェーンがチェーンの伸ばし合い競争に負けるリスクは低くなりますが、1つの決済にかかる時間は延びていくことで、決済の即時性から来る利便性は失われます。2018年には、このファイナリティの不確実性を用いた「セルフィッシュ・マイニング攻撃」を用いて暗号通貨モナコインの流出事件が起きてしまいました。セルフィッシュ・マイニング攻撃によるモナコイン流出事件2018年5月13日〜15日に、Livecoinという取引所が攻撃を受け、1000万円相当の「モナコイン」が流出しました。attackの1種である、「セルフィッシュ・マイニング攻撃」です。正しい取引データのあった短いブロックチェーンを、不正なマイナーが伸ばしていた取引データのないブロックチェーンに再編成するとなります。これは、「長い方のブロックチェーンを正しいとする」ルールに起因している問題です。この攻撃手法を用いると、理論上はネットワーク全体の33%以上の計算能力を持っていれば攻撃可能とされています。モナコイン、またこの取引所が被害を受けた理由としては以下の2点が挙げられます。取引所の入金に関する承認数が少なかったことモナコインのハッシュレートが低かったこと実際に、この事件のあと他の取引所はモナコインに関する承認数を上げています。仮にモナコインのハッシュレート(計算能力)にイーサリアムのマイナーが20台程度追加されただけで、この攻撃を起こすことはできなかったと言われています。これはブロックチェーンそのものに対する攻撃として大きなインパクトを与えました。ブロックチェーンシステムの周辺に対する攻撃コインチェックのNEM流出事件ブロックチェーンシステムの周辺に対する攻撃は、コインチェックの暗号通貨NEM流出事件をベースに説明していきます。詳細の説明は、新聞記事や他のサイトの記事において十二分に説明されているので省きますが、この攻撃が対象になったものは「取引所のウォレット」です。ウォレットとは、暗号通貨を管理している財布のようなもので、これはブロックチェーン本体のシステムとは切り離されて、取引所や交換所のサーバーの中に存在します。コインチェックのNEM流出では、このウォレットがハッキングされたことによって個人が所有していたNEMが流出しました。攻撃を受け、結果的に流出を受けた要因として大きく以下の2つがあげられます。ウォレットがオンライン上で管理されていた1つの秘密鍵でしか管理していなかった1点目のウォレットがオンライン上で管理されていることを「ホットウォレット」と呼びます。ホットウォレットはオンライン上で管理されていることから取引がしやすく、また管理するコストもオフライン時(コールドウォレットと呼びます)よりは低く済みます。したがって、取引量が増大することからスプレッドで儲けている取引所は儲かる反面、ハッキングのリスクが高まります。2点目は、コインチェックでは「マルチシグネチャー」という複数の秘密鍵により暗号通貨を管理する手法を採用していませんでした。複数個の秘密鍵があれば、その秘密鍵が盗まれるリスクを分散することができます。この流出事件が起きるリスクは「コールドウォレット・マルチシグニチャー」で暗号通貨を管理していれば、大きく下がっていたことでしょう。一方で、それを実現するためにはコインチェックがその時点で管理していた手法と比較すると現実的にコストが大きくかさみ、コインチェク側にそれを導入するインセンティブは働かなかったことも事実です。この1件を通して、ブロックチェーン周辺技術においても、高いセキュリティーが要求されることが広く認知されることになりました。まとめここまで、ブロックチェーンにおいて不正流出を起こす攻撃手法をまとめてきました。大切なポイントは、「ブロックチェーンそのものに対する攻撃」と「ブロックチェーンの周辺に対する攻撃」の2種類があるということです。後者の問題に関しては、前もって使用する取引所等をしっかり調べるだけ、未然に被害を被ることを防ぐことができると思います。Blockmania。