現在、ビットコインを含めた仮想通貨の入手方法は取引所で購入するというのが最も一般的です。
取引所では、アカウント(口座)を開設すると自分専用の仮想通貨受取アドレスが発行されます。皆さんが取引所で購入した仮想通貨は、取引所が代わりに作成してくれたウォレットを使って管理されている状態です。
取引所で頻繁に取引や、送金を行っている場合は取引所のウォレットに入れておくほうが管理しやすいですが、長期保有目的で購入した仮想通貨、高値づかみしてしまい塩漬け状態の仮想通貨を取引所に預けっぱなしにしておくのは危険です。
皆さんもご存知、コインチェックがハッキングされて580億円相当のネムが盗まれるという事件が起きたように、仮想通貨取引所はハッカーの標的にされています。
コインチェック以外にも2017年~2018年の間に世界中の取引所で4件ハッキング事件が発生しています。
これだけを見ると仮想通貨は怖いと思ってしうかもしれませんが、ウォレットを理解して適切に管理・保管すればご自身の大切な仮想通貨を守ることができます。
この記事の目次
ウォレットの仕組み
ここではビットコインを例に説明しますが、基本的には他の仮想通貨も同じと考えて問題ありません。
ビットコインを受け取る(送金する)際にはビットコインアドレスというものを利用します。これは銀行で例えると口座番号のようなものです。
ビットコインアドレスは、1もしくは3から始める27~34文字の英数字の羅列で、取引所でビットコインを送金する際に表示される
1BitQEtcoxAnViwUYX9k6KupmmsEfWrGne
このようなものです。
送りたい相手のビットコインアドレスにビットコインを送ると、相手にビットコインを送る事ができます。
例えば、Aさんが10BTCをBさんのビットコインアドレスに送ると、Bさんのウォレット残高に10BTCが反映されます。
このとき、Bさんのウォレットには残高として10BTCが反映されていますが、ウォレットの中にビットコインが入っているというわけではありません。
ウォレットの中にビットコインが入っていないなら、ビットコインはどこにあるの?と思いますよね。
ここの部分を理解するために、まずはビットコインの送金の仕組みを見ていきましょう。
ビットコインの送金の仕組み
上の例で、AさんのアドレスからBさんのアドレスに10BTCを送っていますが、実際にビットコインがアドレス間を移動しているのではなく、取引記録データをビットコインのネットワークに送っています。
この取引データをブロックチェーン(元帳)に記録して、ビットコインのネットワークに参加する全コンピュータに共有することでビットコインの送金は成り立っています。
公開鍵暗号
ビットコインのネットワークは誰でも参加することができるので、この仕組だとAさん以外でも取引データを流すことが出来てしまいます。
例えば、盗人Cさんが勝手にAさんのアドレスからビットコインを自分のアドレスに送るといった取引データを送ってしまえば、AさんのビットコインはCさんに盗まれてしまいます。
これでは決済システムとして成立しないので、それを防ぐために「公開鍵暗号と電子署名」という仕組みを利用しています。
ビットコンアドレスは「公開鍵」というものから作られています。そして、公開鍵は「秘密鍵」というものから作られています。
鍵と言っても実際には英数字の羅列で、アルゴリズムに沿って変換・生成されています。
この変換の流れは不可逆と言って、ビットコインアドレスから公開鍵を作ることは出来ませんし、公開鍵から秘密鍵を作ることもできません。
そして、この3つはセットで成立するようになっています。
始めの例に戻ると、Aさんがビットコインのネットワークに流した取引データは、Aさんの持つ秘密鍵で暗号化されています。
この暗号を解除するためには、Aさんの持つ秘密鍵とペアで作られた公開鍵が必要です。取引データをネットワークに流す際には、公開鍵も一緒に流されます。
流された取引データは、公開鍵で暗号をちゃんと解除できるか検証されます。
Aさんが流した公開鍵は、Aさんの持つ秘密鍵から作られた本物なので暗号が解除できます。
秘密鍵によって暗号化された取引データを解除できるのは秘密鍵とペアで作られた公開鍵だけなので、その公開鍵で開けられる取引データは本物ということになります。
仮に盗人Cさんが「AさんのアドレスからCさんのアドレスに10BTCを送金」という偽の取引データを流そうとします。
Aさんのアドレスは誰にでも公開されているので盗人Cさんもアドレスは知ることができますが、アドレスから公開鍵は不可逆なので公開鍵が作れません。
公開鍵を持っていたとしても、取引データを暗号化する秘密鍵がないので正しい取引データを作れません。
仮に当てずっぽで公開鍵と秘密鍵を作ったとしてもそれが当たることはまずありえません。これは本物の取引データを途中で改ざんしても同じで、鍵が合わなくなるので取引データは無効となります。
アドレス、公開鍵、秘密鍵は全てはセットになっていて、秘密鍵を持つ者でないと公開鍵は作れませんし、公開鍵を持つ者でないとアドレスは作れない、つまり、秘密鍵を持つ者がアドレスと取引データの作成者であり、ビットコインの所有者であると証明する仕組みなのです。
秘密鍵は絶対に他者に知られてはならない
ここまで読んで頂けた方には分かると思いますが、秘密鍵は取引データの暗号化・公開鍵の作成に必要なものです。
つまり、秘密鍵が他者に知られてしまえば簡単に本物の取引データの作成と、公開鍵の作成ができてしまいます。
他者があなたのビットコイン(仮想通貨)を勝手に送金できるということですね。
上の例で出てきた盗人Cさんがやろうとしていたことが簡単にできるということです。
ですので、ウォレットを作成する際の秘密鍵は絶対に他人に知られないようにして、厳重に保管しておかなければならないのです。
ウォレットの役割とは?
ここで最初の疑問「ウォレットの中にビットコインは入っていない」に戻ります。
何度も出てきたようにAさんからBさんに10BTCを送金するといった取引は、あくまでも取引のデータです。
取引データはブロックチェーン(全ての取引が記録された台帳)に記録されているので誰でも見ることができますが、分かるのは送金元と送金先のアドレス・送金枚数だけです。
アドレスを作り出した秘密鍵を使うことでビットコインの所有者と証明されるため、ウォレットは秘密鍵・公開鍵・アドレスそのものだと考えることが出来ます。
誤解を恐れずにもっと簡単に言えばウォレットは「取引記録を照会・作成するためのツール」と言えます。
ビットコインのネットワークとブロックチェーンによって世界中に公開される取引記録にアクセスして、「この取引は私のですよ」と伝えているようなイメージですね。
なので、ウォレットの中には取引記録もビットコインも入っていないという訳なのです。
SEED(シード)
ウォレットの中にはアドレスを複数作ることが出来ます。
(説明が長くなるので省きますが、実際には送金毎に自動で新しいアドレスが生成されています。)
アドレスが複数作れるということは、その数だけ秘密鍵が作られるというとです。
この秘密鍵ですが、ウォレットにある「SEED(シード)」と呼ばれるものを基に作られています。
秘密鍵はウォレットの中にあるアドレスごとに存在しますが、SEEDはウォレットに一つだけです。
SEEDは日本語にすると「種」ですから、一つの種から複数の芽が出てくるようなイメージですね。
このSEEDを使うことで、ウォレットの中にあるアドレス・公開鍵・秘密の全てを再現できます。
例えば、デスクトップウォレットと呼ばれるパソコン上で使うウォレットを利用していて、パソコンが壊れて起動できなくななったとします。前の節で説明したように、ウォレットの中にはビットコインは入っていないのでビットコイン自体はなくなりませんが、所有者であると証明するのに必要な秘密鍵が分からないとそのビットコインを動かすことができなくなり、実質的に失うのと同じことになるわけです。
このとき、秘密鍵があれば新しいパソコンでも、他のウォレット上でもアドレスを開くことができます。
ですが複数のアドレスを作っていた場合、全てを再現するのが大変になります。
ここでSEEDを使うと、そのウォレット内で生成されたアドレス・公開鍵・秘密鍵の全てを再現できるというわけです。
SEED・復元フレーズ・パスフレーズ
SEEDは百桁以上にもなる英数字の羅列なのでとても人間が覚えることはできませんし、管理する上でも大変です。
これをより管理しやすいものに変換されたものが、復元フレーズやパスフレーズと呼ばれるものです。
この辺りは実際にウォレットを使ってみると分かると思いますが、復元フレーズは12個の英単語です。
「fish、 rhythm、pupil、・・・」といったような単語が12個表示されます。この12単語を表示される順番通りに入力することでウォレットを再現することができます。
万が一の時には便利な復元フレーズですが、これがあればウォレットの中身を全て再現できるため、秘密鍵と同様に絶対に他人に知られてはなりません。
復元フレーズを控える時は、スペル間違えをしないように手書きで紙に写して厳重に保管しましょう。
写真や、スクリーンショットを撮る場合は、紙に印刷して必ず画像データは削除しておきましょう。万が一PC・スマホがハッキング、盗難、紛失した際に復元フレーズを盗まれる可能性があります。
取引所に預けっぱなしにするのが危険な理由
皆さんがビットコインを入手する一般的な方法は取引所で購入するというものですね。取引所でビットコインを購入すると、取引所が用意したあなた用のビットコインアドレスに取引所から送金されていることになります。
ここで気になるのが、秘密鍵の存在です。
取引所でビットコインアドレスを用意してくれていますが、秘密鍵は渡されていません。
頼んでも渡してもらえません。
なぜなら、取引所が秘密鍵を管理しているからです。
ここから分かるのは、冒頭で書いた「取引所のハッキング事件」です。
取引所がハッキング被害に遭ってビットコイン(仮想通貨)を盗まれるというのは、仮想通貨そのものがハッキングされたのではなく、取引所が管理している秘密鍵が盗まれたことによって起きているのです。
前の節で説明したように、秘密鍵さえあれば誰でも簡単に仮想通貨を送金することができます。
もちろん取引所側もセキュリティ対策を行っていますが、対策が甘かったり、構造的欠陥・人為的ミスがあるとそこを狙われてしまうわけです。
そして一番のポイントは、現時点では取引所は仮想通貨の不正送金に対する補償をしてくれないということです。
コインチェックの場合は利用者に返還するだけの資金がありましたが、それ以外の事件では返還されないどころか取引所が倒産したケースもあります。
bitFlyerでは国内取引所で唯一不正送金に対しての補償を用意していますが、補償額には上限があるため安心とは言えないでしょう。
これらのことから、金額の大きい仮想通貨を取引所に預けっぱなしにしておくのはリスクが大きいと言えます。
仮想通貨はまだまだ新しい分野で、まだまだ制度が整っていません。自分の仮想通貨は自分で守ることがリスクヘッジに繋がるので、数量や目的に合わせてウォレットを用意していきましょう。