仮想通貨取引所から仮想通貨を盗まれる事件がときどきニュースになります。
記憶に新しいところでは、コインチェック社が580億円相当を盗まれました。その前には、マウントゴックス社の事件もたびたび報道され有名になりました。
ところで、仮想通貨を盗む、というのはいったい何を盗むのでしょうか。仮想なので、お札やコインがあるわけではありません。仮想通貨は「ブロックチェーン」という「絶対に修正できない」を実現する分散型台帳を利用しています。何を盗まれていて、それを防止するためにどんなことが考えられているのか、明らかにします。
パスワードは普通どうやって保存するのか
仮想通貨が出てくる前にも、個人情報やアクセス権限が盗まれる事件はありました。
なかでも厳重に保管しなければならないのは「パスワード」です。
多くのシステムでは、保存されているパスワードを盗み出しても、パスワードがわからないようになっています。つまり、保存されている文字を見ても元のパスワードがわからないように、暗号化されています。パスワードを保存しているシステムの担当者でさえもパスワードが何なのか知ることができません。
元に戻せない計算を「ハッシュ」と呼びます。仮想通貨でも利用されている技術です。
パスワードを照合するには?
では、ユーザーから入力されたパスワードが合っているかどうか、どうやって照合するのでしょうか。
ユーザーから入力されたパスワードを、保存した時と同じように暗号化、つまり、計算して変換します。その変換結果がまったく同じになったら、パスワードが合っている、と判定するわけです。
ですので、もし個人情報やログインIDといっしょに、パスワードが盗み出されたとしても、そのままではパスワードを復元することはできません。
(※)厳密には総当たり的にパスワードを計算してみて合致するかどうか試すことで、パスワードは復元できますが、ここではこれ以上深入りしません。)
仮想通貨を引き出すには、秘密鍵が必要
多くの仮想通貨で、公開鍵と秘密鍵という2つの鍵・パスワードを使います。
たとえば、「ビットコイン」では、公開鍵が口座番号となっていて、その口座番号からおカネを引き出す、つまり送金するときに、秘密鍵が必要、という仕組みとなっています。
つまり、ある口座から仮想通貨が盗まれる、というのは、「秘密鍵が盗まれる」ということを意味しています。
秘密鍵が盗み見されれば、あとはその口座から自由に送金できるので、盗み出す人の持っている口座に送ってしまえばよいわけです。
秘密鍵が盗まれてしまう理由
だったら、「秘密鍵も従来のパスワードと同じように、暗号化して保存すればいいじゃん?」と思うのですが、そういうわけにはいきません。
仮想通貨取引所では、ユーザーの口座を使うために「秘密鍵」を預からなければなりません。「秘密鍵」を知らないとそこから送金することができないからです。たとえば、ユーザーの送金指示に応えるためにはその口座の秘密鍵が必要です。
よって、仮想通貨取引所は、暗号化して元に戻せない状態ではなく、いつでも元に戻せる形で保管しなければなりません。
つまり、仮想通貨取引所を運営している誰かが、ユーザーの秘密鍵を見ることができる状態です。そのアクセス権限を持っている担当者のパソコンに侵入され、その担当者に成り代わられた場合、打つ手がないのです。
秘密鍵を保存するむずかしさ
秘密鍵のコントロールをユーザーにまかせてしまって、使うときにはユーザーから毎回送ってもらうこともできるでしょう。
しかし、もし秘密鍵をなくしてしまった場合、その口座から仮想通貨を引き出すことは、誰にもできなくなってしまいます。秘密鍵以外に正当性を証明するものがないからです。
また、秘密鍵は、実際に見ればわかるとおり、覚えられるようなものではありませんので、どうしてもどこかに書いておくことになります。
解決事例:「ウォレット」アプリ
取引所に預けないで、個人個人がそれぞれ自分で持つけど、カンタンに盗まれないように安全に保管できれば、少なくとも取引所からまとめてごっそり盗まれることはなくなるわけです。
それを実現しているのが「仮想通貨ウォレット」と呼ばれるサービスです。
たとえば、Ginco」というサービスがあります。
秘密鍵を自分のスマホの中に保存できて、使いたいときにカンタンな操作で使えるようになっています。
こうすることで、例にあげたようなコインチェック社やマウントゴックス社のようなタイプの大規模な盗難事件が起こらなくなります。
まとめ
仮想通貨が盗難されるニュースから、秘密鍵の保存にまつわる課題とその解決事例を紹介しました。
お役に立てば幸いです。
コメント