- 秘密鍵はブロックチェーンにおいて「電子署名」に使われる
- 電子署名で送金データが改ざんされていないことを証明できる
- 秘密鍵を盗まれるとコインを失う
この記事では、ブロックチェーンにおける秘密鍵の役割とその重要性について解説します。
「博報堂」や「三菱UFJ銀行」など、日系の大手企業でも研究が進んでいることで話題の「ブロックチェーン」。秘密鍵はその「ブロックチェーン」の根幹を支えていると言っても過言ではありませんので、秘密鍵についてしっかりと押さえましょう。
ブロックチェーンについて
ブロックチェーンとは、仮想通貨が最初に生み出されてから、今に至るまでの全取引が記録されているデータベースです。
一定時間毎の取引データがひとつの「ブロック」となり、検証が終わったブロックが1本の鎖のように順番につながっていくことから、「ブロックチェーン」と呼ばれます。
ブロックチェーンは、世界中の「ノード」と呼ばれるコンピュータに分散して保管されているため、1つのノードがハッキングにあってもブロックチェーン自体が停止することはありません。
ブロックチェーンが作成される流れ
ブロックチェーンが作成される流れは以下のとおりです。
- 「アドレスAからアドレスBに、いつ、いくら送金する」といった送金データが作成される
- ノードがその送金データが正しいか検証する
- 検証された送金データが一定時間ごとにブロックにまとめられる
- 競争によって選ばれたコンピュータが新しいブロックをブロックチェーンへ追加し、同時に新しいコインが発行される
ちなみに秘密鍵は、上記の1つ目「送金データが作成される」の部分で利用されます。
公開鍵と秘密鍵について
「公開鍵」と「秘密鍵」はデータを暗号化したり、解読したりするためのパスワードです。
公開鍵はたくさんの人に公開しても問題ないパスワードですが、秘密鍵は自分だけが管理する非公開のパスワードです。
公開鍵と秘密鍵は一対となっており、公開鍵で暗号化したものは対応する秘密鍵でしか解読できません。同様に秘密鍵で暗号化したものは対応する公開鍵でしか解読できないようになっています。
このような「公開鍵」と「秘密鍵」をペアにした暗号技術を「公開鍵暗号技術」と呼びますが、「データの暗号化」と「電子署名」の2つの利用方法があります。仮想通貨においては、このうち「電子署名」にのみ利用されます。
データの暗号化
データの暗号化とは、鍵を持たない第三者がデータを読めないように難読化させることです。
例えば、「私は元気です」を暗号化すると
「53616c7465645f5fc9c97a3dd98fae188ff0ae43979bd922dd23fd4f38b1117726dbc8709d82f867」
となり、何が書かれているのかわかりません。
データを受け取る人は、自身の秘密鍵に対応した公開鍵を、あらかじめ送信者に伝えておきます。送信者は受信者の公開鍵を使ってデータを暗号化しますが、データは「秘密鍵」でしか解読できないため、データが盗まれたとしても第三者に解読されることはありません。
電子署名
電子署名とは、「送信されたデータが間違いなく送信者本人のものである」ことを証明する機能です。
例えば、送信者が「私は元気です」というメッセージを送るとき、「私は元気です」というメッセージに、署名「ABCDE」を付加して相手へ送ります。この署名は、送信者の秘密鍵を使って作成されます。
データを受け取った人は、公開鍵を使って署名「ABCDE」を解読します。解読して出てきたものと、メッセージ「私は元気です」を見比べることで、そのデータが改ざんされていないか確認できます。
共通鍵暗号技術について
暗号技術を大別すると、先述した「公開鍵暗号技術」と、暗号用と解読用の鍵が同じ「共通鍵暗号技術」に分けられます。
エクセルのデータを「123456」というパスワードで暗号化して送付すると、相手は同じ「123456」を入力してエクセルのデータを開きますが、これは共通鍵暗号技術です。
この共通鍵暗号技術の最大の問題は、パスワード(鍵)を何かしらの方法で相手へ渡さなくてはいけないことです。どのように配送すればパスワードが第三者に漏洩しないか注意する必要があり、インターネット上の不特定の相手に送付する場合はさらに難しくなるでしょう。
また、送付ごとに別のパスワードを作成しなくてはいけないので手間となります。
公開鍵暗号では、暗号化するパスワード(公開鍵)は解読には利用できないため、公にしても問題なく、パスワードの配送に困ることがありません。また、送信者のパスワードはすべて同じでも問題ありませんので、ユーザー別にパスワードを発行する手間がかかりません。
公開鍵と秘密鍵の関係性について
私たちが通貨を保有するにはアドレスが必要となりますが、このアドレスを作成するときに、「秘密鍵」と「公開鍵」が作られます。
アドレスを作る際、最初に仮想通貨のプログラムから「秘密鍵」が生成され、その「秘密鍵」にさまざまな関数を使い「公開鍵」が作られます。そしてその公開鍵を基に「アドレス」が作られます。
送金の流れ
では、具体的な例を挙げて「秘密鍵」と「公開鍵」を使った送金の流れを見ていきましょう。ここでは、アドレスAからアドレスBに0.1BTCの送金を行うときの、署名や検証の流れを見ていきます。
1.トランザクションが起きる | 「アドレスAからアドレスBに0.1BTC送る」という送金データ(トランザクション)が作られます。 |
2.トランザクションデータが送信される | 送金データに秘密鍵を使って電子署名し、送信します。この際に、公開鍵が送金データに書き込まれます。 |
3.検証プロセス | 送金データは、ビットコインネットワークに参加するコンピュータに送信されます。コンピュータは、添付された公開鍵を使って送金データについている電子署名を検証し、そのデータが送金者本人が作成したものであるか確認します。 |
改ざんがないと確認できたデータは、ほかに検証されたデータと一緒に一つのブロックにまとめられます。
秘密鍵の管理について
通貨を送金する際には署名が必要となり、その署名には送信者の秘密鍵を使うことはご理解いただけたと思います。
これを逆に言うと、送信者の秘密鍵が分かれば、誰でも自由に通貨を送付できるということになります。
当然、秘密鍵を盗まれてしまうことはそのままコインを失ってしまうことと同義となります。私たちは秘密鍵を無くさないよう厳重に保管しなければいけません。
仮想通貨交換所にコインを保管している方の秘密鍵は、仮想通貨交換所が保管しており、利用者は秘密鍵を管理することができません。仮に仮想通貨交換所がハッキングにあい、秘密鍵が盗まれてしまうと、自分の資産がハッカーに奪われかねません。
仮想通貨交換所ではなく、ウォレットと呼ばれるツールを使ってコインを保管すると、秘密鍵を自分で管理できます。
過去の流出事件のほとんどが秘密鍵の流出
仮想通貨交換所から数百億円分の仮想通貨が盗まれた事件の要因のほとんどが、交換所に保管されていた秘密鍵がハッキングによって流出したことです。
秘密鍵を盗んだハッカーは、取引所のアドレスから自分たちのアドレスへ通貨を自由に送金させることができたため、取引所に保管されていた仮想通貨も容易に盗むことができたというわけです。
秘密鍵は自分で管理することが大切
先述した通り、交換所がハッキングに合い秘密鍵を奪われてしまうと、自分の資産を失ってしまいます。
ですから、仮想通貨交換所に預けておく資産は最小限にし、秘密鍵を自分で管理できるウォレットを利用して残りの資産を保管しておくほうが安全でしょう。
復元フレーズの管理も大切
ウォレットを利用する時、秘密鍵と同様に復元フレーズを管理することが大切です。
復元フレーズとは、ウォレットを入れたスマホを紛失してしまったり、ウォレットそのものを紛失してしまったりしたときに、ウォレットを復元するためのパスワードのようなものです。
復元フレーズを他人に知られてしまうと、誰でもウォレットを復元できるようになってしまうので、厳重に保管する必要があります。安全なウォレットについて
ウォレットと一口に言っても、さまざまな種類があります。ここでは、
- 秘密鍵を自分で管理できるウォレット
- 秘密鍵を自分で管理できないウォレット
について、それぞれの特徴を詳しく見ていきます。
秘密鍵を自分で管理できるウォレット
自分で秘密鍵の管理を行えるウォレットについて、種類別に見ていきましょう。
モバイルウォレット
スマホのアプリから利用するタイプのウォレットです。持ち運びができるため、外出先でも通貨を送金できます。
- Ginco
- Bread wallet
- Copay
- Mycelium
デスクトップウォレット
パソコンにインストールするタイプのウォレットです。他のウォレットに比べて多機能であることが特徴です。
- Electrum
- Multi bit
ウェブウォレット
Webブラウザを利用してアクセスするウォレットです。ソフトをインストールせずお手軽に利用できることがメリットですが、ウェブベースのためセキュリティは高くありません。
- Blockchain.info
ハードウェアウォレット
ハードウェアウォレットとは、ウォレットが別の媒体となっているタイプのものです。通貨を送金するときにパソコンに接続し、使い終わったらパソコンから取り外して保管します。インターネットと切り離されているため、最も安全に保管できます。
- Trezor
- Ledger wallet
- Keep key
秘密鍵を自分で管理できないウォレット
ウォレットサービスを提供する企業が、秘密鍵を管理するウォレットは以下のとおりです。
サービス名 | 概要 |
Coinbase | アメリカの仮想通貨取引所Coinbaseが提供するモバイルウォレット |
XAPO | オンラインウォレットに紐づいたビットコインデビットカードを発行できる |
コインチェックウォレット | コインチェック社が提供する、モバイルウォレットサービス |
取引所の口座 | 各仮想通貨取引所の口座 |
デビットカードの口座 | ビットコインデビットカードと紐づいたウォレット |
まとめ
改めておさらいしますと、以下となります。秘密鍵については以下のことを押さえましょう。
- 仮想通貨において秘密鍵は「電子署名」に使われる
- 電子署名によって「送金データが改ざんされていないこと」を示す
- 送金の流れは、「送金者が秘密鍵を使って電子署名」→「ノードが公開鍵を使って電子署名を検証」→「データが改ざんされていないことを確認し、ブロックに入れる」
- 秘密鍵があればだれでも通貨を送金できるため、秘密鍵を厳重に保管する必要がある
秘密鍵の管理については以下のことを押さえましょう。
- 仮想通貨交換所を利用するときは、交換所が秘密鍵を管理している
- ウォレットを利用すると自分で秘密鍵を管理できる
秘密鍵の仕組みを理解し、秘密鍵を自分で管理できるウォレットを利用するのがベターです。ぜひ参考にしてみてください。