ビットコインやイーサリアムの保管、仮想通貨の公開鍵と秘密鍵

目次

    ビットコイン(Bitcoin,BTC)やイーサリアム(Ethereum,ETH)をはじめとした仮想通貨、ホット/コールドウォレットやハードウェアウォレット等、様々な保管方法があり、セキュリティ対策が必要です。日本の大手取引所コインチェックで盗難事件が起き、仮想通貨のセキュリティに関心を寄せた方も多いでしょう。

    本記事では、仮想通貨における暗号技術や送金の仕組み、セキュリティに関する基礎を技術的に解説します。どのウォレットに保管すべきか詳しく知りたい方は、ウォレットの記事をご覧ください。

    Coincheck NEM盗難事件

    2018年1月26日、日本の大手取引所 Coincheckから5億2千3百万XEM(時価580億円相当)がハッキングされるという事件がおきました。XEMの総発行数は約90億ですので、全体の6%ほどが盗まれたことになります。また実際に被害を受けたアカウント数は、約26万とアナウンスされています。被害総額・人数が非常に大きいことから、仮想通貨史に名を残す大事件であったと言えるでしょう。

    この事件を巡っては、Coincheckのセキュリティ管理の甘さが指摘されています。確かに、取引所として然るべきセキュリティ対策を怠っていたことは、重大な問題です。ただ、この事件を取引所だけの出来事として捉えるのではなく、ユーザー側の仮想通貨に関するリテラシーを改善する機会として捉えることもできます。

    今回の記事では、仮想通貨のセキュリテイを支える公開鍵暗号方式(公開鍵/秘密鍵)とその他の技術(マルチシグ/コールドウォレット)を紹介します。この記事を読むことで、仮想通貨をより深く理解し、安全に保管できるようになるでしょう。

    公開鍵暗号方式

    ビットコインやイーサリアムをはじめとする仮想通貨を送金する際には、“秘密鍵”と“公開鍵”と呼ばれる二つのペアになった暗号鍵が使われています。この秘密鍵と公開鍵を用いた仕組みは、公開鍵暗号方式と呼ばれています。この暗号化の仕組みは、仮想通貨だけではなく、暗号化を必要とする様々な通信において利用されています。

    秘密鍵、公開鍵は、その名前からイメージできるように、それぞれ“秘密にしておくべき鍵”と“公開してもよい鍵”です。秘密鍵はランダムに生成され、公開鍵は秘密鍵から生成されます。しかし公開鍵から秘密鍵を知ることはできません。ですので公開鍵が公開されているからといって、他人があなたの秘密鍵を推測できる訳ではありません。

    まずは、仮想通貨における秘密鍵と公開鍵の役割を解説する前に、公開鍵暗号方式をより深く学んでみましょう。データの送信者と受信者の間において、どのようにして秘密鍵と公開鍵を利用して暗号化/復号化を実行するか説明します。

    1. データの送信者は、受信者が公開している公開鍵を取得する。
    2. データの送信者は、取得した公開鍵を用いてデータを暗号化&送信する。
    3. データの受信者は、秘密鍵を用いてデータを復号化する。

     公開鍵を用いて暗号化されたデータは秘密鍵でしか復号化することができません。つまり、公開鍵暗号方式のポイントは、開けることしかできない鍵と閉めることしかできない鍵が存在するということです。

    このやり取りは、“南京錠(公開鍵)”と“南京錠の鍵(秘密鍵)”の関係に非常に近いです。南京錠と南京錠の鍵の例を用いて、再度、暗号化/復号化の手順を考えてみましょう。

    1. データの送信者は、受信者から南京錠をもらいます。この時、南京錠の鍵は開いたままです。
    2. 送信者は、もらった南京錠を用いてデータに鍵をかけ、送信します。
    3. データの受信者は、南京錠の鍵を用いてデータに付けられた南京錠を開けます。

    南京錠を使った例は非常に分かりやすいですね。この例を通じて、開けることしかできない鍵(南京錠の鍵)と閉めることしかできない鍵(南京錠)の重要性がわかったかと思います。

    電子署名

    さて、先ほどの例では公開鍵を暗号化、秘密鍵を復号化に使用しましたが、この逆は可能でしょうか。つまり秘密鍵を暗号化、公開鍵を復号化に使用するということです。

    これは実際に可能で、秘密鍵を閉めることしかできない鍵公開鍵を開けることしかできない鍵、として利用することができるのです。

    ここで疑問となるのが、公開鍵は公開されているのだから、秘密鍵で暗号化したところで、誰にでも復号化されてしまうのではないか?ということです。一見すると、このような暗号化は無意味に思えるかもしれません。

    しかし秘密鍵での暗号化は、送信者の「電子署名」として利用することができるのです。例を考えてみましょう。

    1. データの送信者は、自分自身の秘密鍵を用いて、データを暗号化する。
    2. データの送信者は、同時に、自分自身の公開鍵を公開する。
    3. データの受信者は、公開鍵を取得し、データを復号化する。

     この一連の流れによって、受信者は、データが確かに送信者のものであると確かめることができます。なぜならば、受信者がデータを公開鍵で復号化できるということは、そのデータが送信者の秘密鍵で暗号化されていることに他ならないからです。秘密鍵は送信者しか持っていませんので、署名したのが送信者本人であるという理屈は成り立ちます。

    秘密鍵を用いた仮想通貨送金プロセス

    仮想通貨における秘密鍵・公開鍵の利用方法を考えて行きましょう。送金は以下の手順で実行されます。

    1. Aさんは、送金情報を自分自身の秘密鍵を用いて“電子署名”する。
    2. Aさんは、この電子署名された送金情報と自分自身の公開鍵をセットにして、ビットコインネットワークに送信する。
    3. Bさんは、公開鍵を用いて、電子署名された送金情報の有効性を確認する。

    このように秘密鍵を用いた電子署名によって、送金情報がAさんのものであると証明することができます。

    では秘密鍵が盗まれてしまった場合はどうなるでしょう?秘密鍵を盗んだ人は、その秘密鍵を使って電子署名ができる=送金することができるので、あなたの仮想通貨は盗まれてしまうことになります。秘密鍵は仮想通貨を送金できる唯一の鍵です。絶対に他人に知られてはいけません。

    秘密鍵の管理

    取引所での管理

    Coincheckのハッキング事件でも問題になりましたが、多くの人が取引所に仮想通貨を預けているのが現状です。通常、取引所に預けている仮想通貨の秘密鍵は、取引所が保管しており、ユーザーが目にすることはありません。

    秘密鍵は絶対に他人に知られてはいけないものですが、それを取引所が管理している(預けている)ということは、ユーザーが取引所を信用していることに他なりません。

    取引所も秘密鍵の保管には細心の注意を払っていますが、残念ながらハッキングによって秘密鍵が盗まれ、送金されてしまう事件は度々起きています。

    取引所に預けているからといって、あなたの仮想通貨が100%安全であるという保証はどこにもないのです。

    ウォレットでの管理

    取引所に仮想通貨を預ける以外に、ウォレットを利用する方法があります。

    ウォレットには、その種類・性質に応じてホットウォレット、コールドウォレット、ハードウェアウォレット、ソフトウェアウォレットなどの分類が存在しますが、どれもお財布のようなものだと思っていただいて構いません。ウォレットに関する詳細は、本メディアのウォレットに関する記事が参考になるでしょう。

    ウォレットの利用においては、秘密鍵の保管はユーザー自身に任されています。取引所に秘密鍵を預けていない分、セキュリティが高いように思えます。しかし、あなたが保管する秘密鍵が誰かに盗まれてしまう可能性がありますし、また秘密鍵を紛失してしまう可能性もあります。あくまでも自己責任において保管しなければならず、盗まれてしまった場合は誰も補償してはくれません。

    セキュリティを高める技術

    秘密鍵の保管が仮想通貨の保有において非常に大切であることは、先に述べた通りです。以下では、秘密鍵をより安全に保管するいくつかの方法について解説します。

    マルチシグ

    秘密鍵を複数に分割し分散して保管する手法があり、これは”マルチシグ”と呼ばれています。複数に分割された秘密鍵が一定数以上揃わない限り、送金が実行できない仕組みになっています。

    いくつの秘密鍵を揃えば送金ができるかに関しては、“2/3”のように表記されています。この意味は、3つに分割された秘密鍵のうち、2つで署名が行われた場合に送金を実行する、ということです。

    分割された秘密鍵は、通常異なる場所に保管されるため、ハッキングによる仮想通貨流出のリスクを下げることが可能です。マルチシグに対応した一部の取引所やウォレットは、高いセキュリティを提供していると言えるでしょう。

    マルチシグを用いることで、確かにハッキングのリスクを下げることができますが、100%安全という訳ではありません。もし取引所が保管する分割された秘密鍵が一箇所で保管されていたらどうなるでしょう。これは秘密鍵を分割していないに等しく、ハッキングされた場合はマルチシグの意味がありません。

    実際に取引所がどのようにして分割された秘密鍵を保管しているかは明らかにされていない場合が多く、ブラックボックスとなっています。とはいえ、マルチシグに対応した取引所が絶対に安全であるという確固たる保証はありませんので、取引所の利用には十分に注意しましょう。

    コールドウォレット

    秘密鍵が盗まれてしまうことが問題ならば、インターネットから隔絶したウォレットに保管すれば安心かもしれません。このようなインターネットから切り離されたウォレットのことを“コールドウォレット”と呼んでいます。一方で、インターネットに接続されたウォレットのことを“ホットウォレット”と呼びます。

    コールドウォレットの種類としては、秘密鍵を紙に書き出して保管する“ペーパーウォレット”や、特別なデバイスに入れて保管する“ハードウェアウォレット”が存在します。

    しかしコールドウォレットも100%安全であるとは言えないでしょう。例えばペーパーウォレットを物理的に盗まれたり、紛失してしまった場合には、仮想通貨を失ったことと同じになります。金庫等で保管するといった、さらなる対策も必要になるでしょう。

    まとめ

    仮想通貨のセキュリティを支える技術として公開鍵暗号方式を紹介しました。その中でも特に、秘密鍵が仮想通貨の送金において重要な役割を果たしていることは理解していただけたと思います。

    秘密鍵の管理に細心の注意を払うことはもはや大前提です。確かに、マルチシグやコールドウォレットを使うことで、ハッキングの被害に遭う確率は下げることができます。しかし、今回の事件のように、取引所内に保管していては、肝心の秘密鍵は取引所任せとなってしまいます。取引所にある、あなたの仮想通貨も自身のコールドウォレットに移した方がいいかもしれません。

    コメントする

    メールアドレスが公開されることはありません。