TOUCH THE SECURITY Powered by Security Service G

コラム

2019.03.14

4枚の図解でわかるブロックチェーン技術(改竄編)

仮想通貨などで有名になったブロックチェーン技術。よく「改竄不可能な分散型台帳」などと言われ、仮想通貨の取引記録だけでなく、不動産取引、食品トレーサビリティなどへの応用も考えられ始めています。

前回の「4枚の図解でわかるブロックチェーン技術」では、ブロックチェーンは「改竄されてもすぐに正本に置き換えられる」仕組みと表現しましたが、今回は、この改竄という試みについて、改めて考えてみましょう。

1.おさらい ――マイニングとはナンス値を求める行為

ブロックチェーンのブロックは、取引データとナンス値などからなり、これらの数値を合成してハッシュ値を求めた結果が、次のブロックとのジョイント部分となっています。

ブロックチェーンのひとつのブロックには、取引データだけでなく、ひとつ前のブロックのハッシュ値、ナンス値などが保存され、これを合成して、ハッシュ値を計算し、ブロックのジョイントとして利用する。

しかも、ジョイントとして使えるハッシュ値には、厳しい条件をクリアしていることが必要です。例えば、「ハッシュ値の上位3桁が000」などです。

ハッシュ値は、ブロックの中身を入力として、一定のアルゴリズムに従って計算されるので、いつもこのような都合のいい数値になるとは限りません。そこで、最終的なハッシュ値がジョイントとしての条件を満たすようになるナンス値を見つけなければなりません。

ナンス値を求めるには、適当なナンス値を置いてみて、それからブロック全体のハッシュ値を計算、そのハッシュ値が条件を満たしているかどうかを確認するということを繰り返していきます。いわば総当たりで調べていくしかなく、大量の計算が必要になります。これがマイニング(発掘)です。

マイニングには膨大な計算が必要になるので、利用できるナンス値を発見したマイニング業者には報酬が与えられます。仮想通貨のブロックチェーンであれば、一定量の仮想通貨が与えられるのが一般的です。マイニング業者は、この報酬を求めて、ビジネスとしてナンス値を計算しているのです。

2.ブロック単体への改竄を考える

では、悪意のある人が、取引データを改竄し、さらには自力でナンス値も計算し、最終的に計算されるハッシュ値が、ジョイントとしての条件を満たすようになったらどうでしょう。次のブロックは接続できるのでしょうか。

それもできません。ブロックの基本要素は、取引データとナンス値の他に、ひとつ前のブロックのハッシュ値も入っています。改竄をしたブロックのハッシュ値は、次のブロックに保存されている値と違ってしまいます。これもやはり接続ができず、ブロックチェーンは途切れてしまうことになります。

取引データを改竄すると、ジョイントに使うハッシュ値が変わってしまい、次のブロックと接続できなくなる。次のブロックには以前のハッシュ値が保存されたままになっているので、齟齬が生じるからだ。

ブロックチェーンでは、複数のブロックチェーンのうち、いちばん長いものが「正本」というルールがあるので、途切れて短くなったブロックチェーンは、いちばん長いブロックチェーンに置き換えられてしまいます。

つまり、改竄は不可能ではないけど、改竄したら、すぐに正しいデータで置き換えられてしまうという仕組みになっているのです。

ブロックチェーンの途中のブロックを改竄すると(赤)、ブロックが途中で途切れてしまう。ブロックチェーンでは、「いちばん長いブロックチェーンが正しい」というルールがあるので、改竄されたチェーンは、正しいものに上書きをされてしまう。

ところが、ブロックチェーンのセキュリティも完全ではありません。いくつか改竄できる可能性がある攻撃手法が考案されています。

悪意のある人が、単に取引データを改竄し、ナンス値まで計算してもブロックチェーンは途切れるのみですが、ブロックが途切れたら、さらにその次のブロックも計算し、分散型台帳の中でいちばん長いブロックチェーンを作ってしまえばいいのです。

これは、その悪意の人が、高速計算が可能な大規模マイニング工場を持っていて、しかもそのブロックチェーンに参加するマイニング業者が極めて少ない場合に発生しうる問題です。

3.小規模なブロックチェーンに起こり得ること

特に危ないのは、小規模なブロックチェーンを運営する場合です。

ブロックチェーンは「改竄が難しい分散型台帳」として、不動産取引や食品トレーサビリティなどへの応用が考えられていますが、マイニングコストを誰が負担するかという大きな課題があります。

前途の通り、ブロックチェーンは適切なナンス値を発見したマイニング業者への相応の報酬という、競争の原理によって成り立っています。仮想通貨のブロックチェーンでは、仮想通貨そのものが報酬として支払われるでしょう。

しかし、例えば不動産取引などのブロックチェーン台帳では、利用者から使用料を取り、マイニング業者に報酬を与えるような仕組みが必要になってきます。ここで、労力に見合う報酬が得られる場合、多くのマイニング業者が参加をすることになり、その分チェーンの信頼性は高まります。

しかしその状態が担保されておらず、中でも悪意の特定の人の間で、計算量に圧倒的な格差があった場合、自分の都合のいい取引データを入れた、いちばん長いチェーンを作ってしまえることになります。

マイニング業者よりも圧倒的に高速の計算パワーがあれば、改竄した複数のブロックを改竄して、長いチェーンを作ることで、それを「正本」だと誤解させることが可能。

もちろん、利用者からは「記録されている取引データがおかしい」というクレームが多数上がるでしょうし、誰もが改竄に気がつくでしょう。しかし、悪意のある人が作ったでたらめなデータが「正本」になってしまった以上、そのブロックチェーンは放棄するしかなくなります。

4.脆弱性はブロックチェーンそのものに由来するのではない

2019年1月、仮想通貨取引所のコインベースは、仮想通貨イーサリアムから分岐派生した「イーサーリアムクラッシック」における二重使用の事象があったことを主張。(イーサリアム・クラッシック側は否定)。同取引所のセキュリティエンジニアは、米wiredに対して、何者かによる乗っ取りの結果(51パーセント攻撃)によって生じたものとの見解を述べている。

もちろん、これは簡単に実現しうることではありません。有名な仮想通貨などでは世界中から多数のマイニング業者が参加をしているので、このようなことが起きるとは考えづらいことです。

しかし、今後ブロックチェーンが広まっていくにつれ、参加しているマイニング業者が少ないマイナーなブロックチェーンも登場してくるでしょう。その時、このような攻撃を受けないという保証できません。

これを防ぐためには、マイニングコストをある程度かけ、参加するマイニング業者の層を厚く保つようにしなければなりません。

逆に言えば、ブロックチェーンの技術的な課題を検討する段階はすでに終わっていて、このような実際に運営していくための課題が議論される段階になっているとも言えます。

ブロックチェーン技術が私たちの身近な世界にどんどん近づいてきていることだけは間違いありません。

記事一覧に戻る