ブロックチェーンの安全性

伊藤 天輝

ef-4インターン生の伊藤です。今回は前回投稿した簡単なブロックチェーンの説明から想定される危険性に対してブロックチェーンがとっている対策を紹介します。

 必要な知識

以下の知識を用います。

・公開鍵暗号

隠しておく秘密鍵と公開していい公開鍵を使う暗号方式。公開鍵で暗号化→秘密鍵で復号が一般的だが、秘密鍵で暗号化→公開鍵で復号も可能。

・ハッシュ関数

任意の数列から不規則な固定長の数列を作る関数。出力をハッシュ値という。ハッシュ値を計算することは簡単だが、ハッシュ値から元の値を計算することは不可能。

 他人の支払いを偽造

誰の宣言かしっかり確認しないとこのようなことも起こりえます。ブロックチェーンはこれを公開鍵暗号の署名を用いて防止しています。この3つをまとめて送信することによって、暗号化されたものを復号することができなかったら偽造と見抜くことができます。逆に言うと、秘密鍵さえあれば自由に取引ができてしまうので絶対に他人には教えないようにしましょう。もし他人に知られてしまったら、管理者がいないので取引の停止ができず資産がなくなってしまします。対策としてマルチシグを用いることもあります。マルチシグとは秘密鍵を分割し、暗号化するには一定数集めないといけないもので1つ秘密鍵が流出しても資産を守ることができます。

 ブロック作成の仕組み

始めに前回省略したブロックチェーンに必要な計算について説明します。

ブロックは取引情報とは別にナンス値と前のハッシュ値を持っています。ナンス値とはブロックのハッシュ値を調整するためのものです。条件を満たすハッシュ値になるナンス値を見つけた人がブロックを追加できるけれど、この条件がとても厳しいです。ハッシュの性質上、検証は簡単なので適当なナンス値を入れても偽造がばれてしまいます。ブロックを作ると報酬がもらえるので、報酬を狙っている人たちは時間と電力を使ってナンス値を計算してブロックを作っています。

ブロックチェーンではチェーンが複数伸びてしまうことがありますが、その場合は長いほうのチェーンが採用され、短いほうのチェーンはなくなります。ブロックを改ざんするには正しいチェーンより長いチェーンを作ればいいことになります。

 過去のブロックの改ざん

ブロックの情報を改ざんするとハッシュ値が変わってしまうためナンス値を計算しなおす必要があり、もしできたとしても次のブロックが前のブロックのハッシュ値を持っているためそこも計算しなおし…と繰り返し現在のブロックまでのナンス値を計算しなおし、正しいチェーンより長いチェーンを作らなければいけません。これは不可能に近いと言われています。

 不正ブロックの追加

正しいチェーンよりも長いチェーンを作ることができればこれは可能です。過去には1000万円相当のモナコインが流出したことがあります。全体の過半数の計算能力を手に入れることができれば不正ができるので「51%攻撃」とも呼ばれます。ブロックチェーンの規模が大きくなるほど全体の計算コストも大きくなるので、過半数の計算能力を手に入れることはコスト的に現実的ではありません。しかし、規模が小さいと比較的簡単に過半数の計算能力が手に入るので51%攻撃が成功しやすくなります。不正ブロックを追加すれば、過去に起こった取引を長いチェーンによって消して同じお金を使える(二重支払い)などが可能です。

51%攻撃への効果的な対策はなく、チェーンが十分伸びたら取引を承認するといったような対策がされています。

 最後に

51%攻撃の危険性はありますが、ビットコインやイーサリアムといった規模の大きいものを使えばリスクは少ないと思われます。セキュリティ以外で、仮想通貨で危惧すべきなのは価値変動のしやすさでしょうか。暴落してしまうこともあるので仮想通貨を始める人はニュースをしっかり見ておくようにしましょう。

現在さまざまなサービスがブロックチェーンを利用しています。自分のサービスがブロックチェーンを生かせそうならブロックチェーンの利用を検討してみてはいかがでしょうか。

伊藤 天輝 数理計算科学系 学士課程3年