NEM盗難事件からブロックチェーンを読み解く

こんにちは。今日もNEMに夢中ですか?
答えはもちろんYESなしいたけです。

今回のお題は「ブロックチェーン」です。
とある日、こんなリクエストをいただきました。

今、話題のブロックチェーン技術。

サトシナカモトが論文を発表し、優れた分散型台帳技術で、二重払い不可、改ざん不可、独自のコンセンサスアルゴリズムで恒久的に持続する非中央集権の仕組み。

こんなに優れた技術を使った仮想通貨が、盗難に対してはなぜ対処できないのでしょうか?

よい機会ですので、NEM盗難事件からブロックチェーンの仕組みを読み解き、事件がどのように成り立ったのか、そして本記事を執筆している現在まで、なぜ解決していないのか?を一緒に見ていきましょう。

NEM盗難事件とは?

幸か不幸かNEMを一躍有名にした「NEM盗難事件」とは、2018年1月26日に発生した、過去最大被害額の盗難事件です。
日本の企業コインチェック株式会社が運営する仮想通貨取引所「Coincheck」から、5億2630万10XEMが不正に流出しました。

事件の詳細は割愛しますので、詳しく知りたい方は、下記のブログから復習しておきましょう。

ポプ子
ホワイトハッカー(`・ω・´)
しいたけ
ホワイトハッカーJK17が話題になりましたね。
マキさんのブログはTwitterのタイムラインを追いかけるような形式で、当時の緊迫した臨場感をうまく表現していて、すごく読みやすいですね!

ブロックチェーンの仕組み

今回の事件がどのような手口で行われたのかを知るには、ブロックチェーンの仕組みを知る必要があります。

本記事では技術的な話はやめて、ざっくりと理解できるような内容でお届けします。

ブロックチェーンとは?

ブロックチェーンとは一体何なのでしょうか?

あらためて聞かれると、なんと答えてよいのか言葉に詰まってしまいますね…。

ひとつずつ順を追って見ていきましょう。

ブロックチェーンとは、ものすごく簡単に例えると、取引を記録する台帳そのものがブロックの集合体であり、その各ブロックチェーンで連なっていく「ルール」で成り立つ仕組みです。

このブロックを二重払いなく、かつ改ざんできないように連ねていくために必要なルールが、コンセンサスアルゴリズムと呼ばれるものです。
代表的なものにPoW、PoS、PoIがあります。

ブロックとは、いくつかの取引(トランザクション)が入った箱のようなイメージをしてください。

取引(トランザクション)はエクセルの表のような感覚でとらえてください。

取引(トランザクション)とは、NEMの通貨単位であるXEMを使用した送金(トランザクション)のことを指します。

ポプ子
ブロックチェーン(`・ω・´)
しいたけ
今後ブロックチェーンと聞いたら、このブロックとチェーンのイメージを思い出してください。

そして、このブロックチェーンをもう一歩理解するためのキーワードは2つ。

分散型台帳」と「公開鍵と秘密鍵」です。

分散型台帳

分散型台帳とは、NEMのすべての取引を記録している台帳(ブロックの集合体)を指します。

分散型台帳はその名の通り、世界各地に分散しています。

NEM Node Rewards より –

この台帳はWEB上で公開されていて、誰にでも閲覧が可能な状態になっています。

NEMの場合は、nembex v.3.2からWEBブラウザで確認することが可能です。

特定の取引を検索することもできますので、まずは今回流出のあった取引のひとつを見てみましょう。

取引(トランザクション)の解説は以下のとおり。

名称 解説
Block(ブロック高) 最初に作られたブロック(nemesis block)から数えたブロックの番号
Hash(ハッシュ) ひとつ前のトランザクション(取引)のハッシュ値
Sender(送信者) XEMを送信する人のアドレス
Recipient(受信者) XEMを受信する人のアドレス
Amount(数量) 取引するXEMの数量
Fee(手数料) 取引を実行するのに必要なXEMの数量
Timestamp(タイムスタンプ) 取引を実行した日時
Deadline(締め切り) 取引の有効期限
Signature(署名) 秘密鍵を用いて生成した電子的なサイン
取引についての補足
NEMの公式ウォレット「Nanowallet」では上記表の背景が黄色い箇所について画面上で確認できます。
その他の項目については取引(トランザクション)を生成し、ブロックチェーンに記録する際に付与されます。

ここで、もう一度取引(トランザクション)を確認します。

取引(トランザクション)の数量は、1億(100 000 000)XEMと通常の取引ではみたことのない桁数になっていますが、NEMの仕様に反することは一切なく、私たちが仮想通貨取引所から自分のウォレットにXEMを移動する時と同じように、台帳に記録されています。

「NEM盗難」とは言うものの、取引(トランザクション)は正常な形式です。

これは当然ビットコインなどと同様に、ブロックチェーンに記録された取引(トランザクション)は、改ざん(取り消しや書き換え)することはできません。

ポプ子
1億XEMの送金手数料は1.25XEMでいいんだね(`・ω・´)
しいたけ
そうですね。NEMの手数料は仮想通貨の中でも安い方です。
また、なぜ改ざんできないかについては、別の機会にお話しするとして、このルールが善悪関係なしに適用されることがブロックチェーンが堅牢だと言われる理由です。
分散型台帳の説明についての補足
ブロックチェーンの根幹である分散型台帳技術は、複雑な仕組みによって実現できるものであり、本来かんたんに表現することは難しいです。本記事では技術的な話は避けて、なるべくわかりやすい解説に努めておりますが、それでもわかりにくい箇所はキーワードをもとにお調べいただくことおすすめします。

公開鍵と秘密鍵

取引(トランザクション)の解説で署名という項目がありました。
これは秘密鍵を使用したサインです。

例えば、クレジットカードで支払いをする際、伝票に直筆のサインをするように、仮想通貨の取引では送信者の秘密鍵を使用した署名をもって、本人の取引であるとみなします。

ブロックチェーンの署名の仕組みは少し難しいですが、ポイントをつかめば理解が深まります。

計算式を全く使わずに説明しますと、公開鍵と秘密鍵は対で作られます。
そして、それぞれ取引(トランザクション)の暗号化と復号化の際に使用されます。

秘密鍵は、他人に一切漏らしてはいけない自分だけの秘密の鍵です。

公開鍵は、送信先など受け取る側に知っていてもらう必要があります。

しいたけ
もし難しいと感じたら、秘密鍵は「銀行キャッシュカードと暗証番号の組み合わせ」のようなものと覚えてください。

ここで一句引用します。

ポプ子
秘密鍵は金庫に閉まっておこう!
しいたけ
NEMの保有数によっては金庫などアナログの強固なセキュリティ対策は選択肢のひとつですね。

NEMが不正に流出した理由

勘の良い方はお気付きかもしれませんが、先ほどご覧いただいたキーワードをもとに、 NEMが不正に流出した理由を確認しましょう。

キーワードは「分散型台帳」と「公開鍵と秘密鍵」でした。

流出は正しい取引であったか?

コインチェックから流出した取引は、正しい取引であったのでしょうか?

さきほど分散型台帳の項目で確認した取引(トランザクション)は、NEMのブロックチェーン上では「正常な取引」であると説明しました。

しかし、正常な取引と、不正な取引は一見相反するようで両立します。

事件の当事者であるコインチェックはどのように見解を述べているでしょうか?

コインチェック社の見解

コインチェック公式サイトのプレスリリースより引用します。

今般、コインチェック株式会社(代表取締役社長:和田晃一良、以下:当社)が運営する仮想通貨取引サービス「Coincheck」において、お客様からお預かりしていた仮想通貨NEMが不正アクセスにより外部へ不正送金され、また、当該不正送金に伴い同サービスの一部を一時停止するという事態となり、お客様、お取引先、関係者の皆様に多大なご迷惑とご心配をおかけしておりますことを、改めて深くお詫び申し上げます。
仮想通貨NEMの不正送金に関するご報告と対応について

コインチェックは「不正アクセスによる外部への不正送金」という表現を使用しています。

NEMのブロックチェーンでは正常な取引ではあるものの、コインチェックは不正な送金であると認めています。

第三者の不正な利用による取引

前述のプレスリリースより引用します。

(2)調査結果の概要
前記(1)の調査の結果からは、外部の攻撃者が、(a)当社従業員の端末にマルウェアを感染させ、外部ネットワークから当該従業員の端末経由で当社のネットワークに不正にアクセスをし、遠隔操作ツールにより当社のNEMのサーバー上で通信傍受を行いNEMの秘密鍵を窃取したうえで、(b)窃取したNEMの秘密鍵を使用して外部の不審通信先にNEMを不正送金したものであると想定されております。

今回の事件の核心は、悪意のある第三者が不正アクセスでコインチェック社のNEMアドレスの秘密鍵を不正に入手し、コインチェックを利用するユーザーから預かったNEMを不審な外部のアドレスに送金したということです。

しいたけ
コインチェック社のプレスからは不正アクセスに対するセキュリティに不備があったように見受けられますね。詳しくは仮想通貨NEMの不正送金に関するご報告と対応についてよりご確認ください。
仮想通貨の不正アクセスによる損害
「第三者の不正アクセスによって仮想通貨が盗まれた場合に損害を回復することができるか」という興味深い見出しをみつけました。お時間ある方はご一読下さい。
第2回 仮想通貨の取引における当事者間の権利関係とトラブルが生じた場合の法的問題点

そして大事なことなのでもう一度引用させてください。

ブロックチェーンの絶対的ルール

秘密鍵が漏洩してしまうと、今回のようなことが容易に実行できてしまいます。

そして、これはブロックチェーンのルールです。

このルールは、個人のアカウントでも仮想通貨取引所のアカウントでも平等に適用されます。
仮想通貨の種類がビットコインでもリップルでも同様です。

また、仮に秘密鍵を紛失した場合は、署名ができませんので二度とそのアカウントから送金することはできません。
いわゆるGOX(ゴックス)と呼ばれる状況です。

みなさんも、秘密鍵の管理やバックアップには重々気をつけましょう。

GOX(ゴックス)とは
今回のコインチェックNEM流出事件よりも前に、仮想通貨取引所が狙われた同様の流出事件がありました。その取引所の名称(マウントゴックス 株式会社MTGOX)にちなんで、仮想通貨建ての資産を(一時的にではなく永久に)失うという意味を含んだ、仮想通貨界隈で使われるスラングです。

事件後のNEMの行方

さて、気になるNEMの行方について、詳細は割愛しますが、とある場所で不審な取引がなされ、ついに売り切れてしまったようです。

事件直後の「すぐに解決する」との噂に反して、事件は未解決のまま流出NEMは姿を消しました。

しいたけ
NEM自体が本当に消えて無くなってしまったのではなく、NEMの台帳にはすべて記録されています。
捜査機関が動いていますので、不正アクセスから犯人の痕跡を辿り、特定の人物にたどり着ける証拠が残っていれば事件は解決するでしょう。

冒頭のリクエストへの返答

長くなってしまいましたが、冒頭のリクエスト(NEM事件はなぜブロックチェーンで解決できないか?)への返答です。

ブロックチェーンの仕組みでは正常な取引であった今回の騒動の要因は、秘密鍵の漏洩です。

マルチシグやコールドウォレットを使用していれば防げたのかもしれませんが、それは後の祭り。

ブロックチェーンが取引を台帳に記録し続ける仕組みである以上、善悪を問わず秘密鍵を所有していない状況で勝手に取引はできない大前提のルールがあります。

悪意のある第三者に対して、ホワイトハッカーらが犯人の秘密鍵を何らかの方法で探り当て、NEMを取り戻すことは不可能に近いです。
これはブロックチェーンの堅牢性の証明の裏返しになります。

秘密鍵が漏れた以上は、ブロックチェーンのルール上、仕方のない出来事であったといえます。

しいたけ
「仕方ない」という表現は不本意なのですが、現在のブロックチェーン技術を使用した仮想通貨を利用する際に、セキュリティを全く考慮しない場合に起こる事例だと心得ておきましょう。

蛇足

過去にイーサリアムでシステムのバグをついた盗難事件が発生した際、ハードフォークと呼ばれる手法で解決させた事例があるので参考記事をご紹介します。

イーサリアム(ethereum)のDao事件とは~自律分散型組織のDaoという概念を踏まえて徹底解説!~

ちなみにNEM財団は、事件直後にハードフォークはしないと明言しています。
それはNEMのシステムにバグや不具合があった訳ではないからです。

それでも多くの人が損失を被ったり、出金が長らくできない事態になった為、NEM財団はハードフォークして流出したNEMを早期に戻すべきだ(った)という意見もありました。

NEM騒動はブロックチェーンの正式なルール内での出来事であり、このような強引な解決はこのルールを壊すことを意味します。

個人的にはハードフォークは否定的な立場です。
このあたりの考え方については、別記事でまとめてみたいと思います。

ここまでお読みいただきありがとうございました。