先週から今週はビットコイン界隈は大変な週だった。
ビットコイン取引所のmt.Goxがビットコインの引き出しを停止するというアナウンスから憶測が飛び、ビットコインの取引価格は急落。
その後、ビットコインソフトウェアのバグによるセキュリティホールだということが判明し、その対応におわれ、大混乱がおきた。
*Transaction mutabilityと呼ぶ
さて、このバグだが、どのようなものか、ようやく理解できたので、噛み砕いて説明しておこうと思う。(情報&解説をいただいた@seapollo さんありがとうございます)
簡単にいうと、このバグを突くと、ビットコインが正しくおくられたのに、送った側からみると、あたかも送られてないように見せかけることができる。
これを使うと、相手をだますことが出来る。
例えば、あなたが私にビットコインを送ったとする。
私はこのバグをつかって、その取引をすこし変えてしまう。すると、実際には私にはビットコインが届いているのに、貴方の財布の表示では、送られてないように見える。
そこで、私は貴方に通知する。
「取引がうまく承認されなかったみたいです(実際こういうことはたまにある)。届いてないので、もう一回おくってもらえないでしょうか?」
あなたは、もう一回送る。実際は届いているのに。
あなたは、ビットコインが届いてないものと勘違いして、また送ってしまうのだ。
「おかしいですね。今度もとどいてないです。もうっかいやってみてください」
そして3回めの送金を行う。
しかし、送金不成立となっているものの、残高だけはちゃんと減っている。
何かがおかしい・・・・
私はその時点でトンズラする。ビットコインの振り込め詐欺の成立である。
と言った具合。
東京にあるビットコイン取引所のmt.Goxがまずはじめにこれに気付き、顧客の引き出し要求のどれが正しいものなのか判断できなくなった。その時点で彼らは引き出しを停止した。これが、取り付け騒ぎのような混乱につながった。
再送金は普通手動で行う。しかし、届いてないという通知を受け取ると、自動的に再送してしまうというようなお馬鹿な仕組みを構築していたところもあったようなのだ。
ビットコインは麻薬取引に使われているというのは聞いたことがあるかもしれない。その闇サイトのsilkroad 2 という(オリジナルは閉鎖されたが、別の人がまた作ったver.2)がこの詐欺で騙された。
顧客からのビットコインの引き出しの要求をうけてビットコインを引き出したが、この顧客はこのバグを利用したハッカーだったのだ。silkroadは自動的に再送金してしまうような仕組みをとっていたようで、程なくして彼らの財布にあったすべてのビットコインがこのハッカーの元に送られてしまったようなのだ。この件で、silkroad運営者が半泣きのコメントをだしている。
その額は時価2億7000億円だといわれている。しかし、麻薬取引の闇サイトが、ハッキングされて詐欺に遭うという、ほとんど冗談としか思えない状況になっている。まるで北斗の拳である。
なお、この問題はすでに解決策として、新しいIDを取引に埋め込むことにより検証ができるようバージョンアップが取られる模様だ。
同じく引き出しを停止していた取引所のbitstampもすでにこの解決策を実装。テスト後に引き出しを開始するとアナウンスしている。※現在手動での引き出しが再開
この問題は技術的には解決された模様だ。あとは誰がどのくらい詐欺にあったのか、その全容はまだ判明していない。mt.Goxが被害にあったのかどうか、その額がどのくらいなのかは、顧客のビットコインは守られたのか、まだ発表されていない。
(解説)正確には、トランザクションハッシュを付け替えることで、違うIDながら、同じ取引内容という、つまり、トランザクションのコピーをネットワークに発生させることができるというバグだ。
取引は、ビットコインネットワークによって最終的に検証され、どちらかの取引が2重支払として承認されずに落ちるのだが、ここに巧妙な罠がある。オリジナルの取引が落ちて、コピーのほうが承認される。このことにより、送金者は、あたかも元の取引が不承認になったものだと勘違いしてしまう。
※今回の問題はややテクニカルで、私も出来る範囲で理解しました。理解が間違っていたら、ぜひご指摘いただけますようお願いします。正しい知識を広めたいと思います。
日本デジタルマネー協会フェロー コンサルタント・作家 大石哲之
(ビットコインに関する取材、講演等はtyk@tetsuyuki.comまでお問い合わせください)
(参考)What you need to know about Transaction mutability …
(参考)[速報] [updated] Mt. Goxいわゆる「払戻し停止」問題に関する2014年2月10日発表の試訳