公開鍵、秘密鍵、ビットコインアドレス
最初に「公開鍵」「秘密鍵」「ビットコインアドレス」の意味を確認しましょう。ビットコインを送金するために、とても重要な役割を持っています。次に、これらを使った送金の仕組みを確認します。
ウォレットは、以下の3つの情報を持っています。
ウォレットの中身
- 公開鍵(パブリックキー、public key)
- 秘密鍵(プライベートキー、private key)
- ビットコインアドレス(銀行口座の口座番号に相当するもの)
下の絵を見ながら、この3つを確認しましょう。
ビットコインアドレスの役割
ビットコインアドレスとは、銀行口座でいえば口座番号に相当するものです。ビットコインアドレスを指定して送金すれば、そこに送金することができます。
上の図で、最も右に書かれているのがビットコインアドレスです。数字の1または3から始まるという特徴を持っています。
公開鍵(パブリックキー)の役割
公開鍵(パブリックキー)は、全世界に公開されます。
送金要請をビットコインのネットワークに送信するとき、秘密鍵を使って、そのリクエストを暗号化します。その暗号化された送金要請は、秘密鍵に対応する公開鍵でのみ復号(暗号を解読すること)できます。
上の図で、「1」の部分です。
このため、他のコンピュータは、広く一般に公開されている公開鍵を使って復号できることを確認すれば、それに対応する秘密鍵を持った人からの送金要請だな、と判断できます。
復号できなければ、その送金要請は偽物だと分かります。その場合は、送金要請を受け付けないで無視します。
つまり、公開鍵の機能がないと、その送金要請が本物か偽物かを判断できなくなってしまいます。とても重要な機能です。
パブリックキーとは、送金要請の真偽を判断するためのIDのようなものです。
秘密鍵(プライベートキー)の役割
次に、プライベートキーの役割です。
プライベートキーは、そのウォレットに関する全ての操作をするために必要な秘密の鍵です。銀行預金でいえば、キャッシュカードと暗証番号に相当します。
このプライベートキーが誰かの手に渡ってしまったら、それはそのウォレットに入っているビットコイン全てをあげたということを意味します。どこかに勝手に送金されてしまうからです。このため、このプライベートキーは絶対に他言無用です。
銀行預金だったら、仮に口座番号と暗証番号が外部に漏れてしまっても、あるいは何か悪い事件が起きても、すぐに銀行に届け出れば必要な措置をとってもらえるでしょう。
しかし、ビットコインにはそのような監督や管理をする機関がありませんので、プライベートキーの流出は、イコール(=)ビットコインを失うことに直結してしまうのです。
以上の理由から、プライベートキーは他言無用です。しかし、相続に影響が出そうだという額の場合は、相続人にプライベートキーが分かるようにしておきましょう。
でないと、相続で多額のビットコインが残され、相続人の目の前にビットコインが入っている外部記憶装置(ハードウェア・ウォレットなど)があるのに、使えない・・・という、笑えない話になりかねません。
公開鍵、秘密鍵、ビットコインアドレスの関係
公開鍵、秘密鍵そしてビットコインアドレスについて、その意味を確認しました。では、これらの関係について、下の絵を見ながら確認しましょう。
秘密鍵を元に計算して公開鍵を作り、そして、公開鍵を元に計算してビットコインアドレスを作ります。公開鍵で暗号化されたデータは、その公開鍵に対応する秘密鍵でのみ復号(暗号を解読すること)が可能です。
その逆も成り立ちます。秘密鍵で暗号化されたデータは、その秘密鍵に対応する公開鍵でのみ復号できます。
また、秘密鍵から公開鍵を作りますが、公開鍵を分析しても、秘密鍵を特定することはできません。
同様に、公開鍵からビットコインアドレスを作りますが、ビットコインアドレスから公開鍵を特定することはできません。
なお、公開鍵から自由にいくつでもビットコインアドレスを作ることができます。ハッカーからの攻撃を避けて取引を安全にするために、送金するたびにビットコインアドレスを作った方が良いと言われる場合もあります。
送金リクエストの流れ
では、ビットコインの送金の仕組みを確認しましょう。実際に送金を依頼する場合、以下の作業が行われます。
送金の流れ
送金内容の記述
送金したいというリクエストに、送金内容を記載します。「自分のウォレットからAさんのビットコインアドレスに○○BTC」という具合です。
電子署名
その送金内容を、秘密鍵を使って暗号化します(電子署名)。
リクエストをP2Pへ送信
公開鍵情報とともに、そのリクエストをP2P(パソコンがお互いにインターネットで結び付いて作られたネットワーク)に送ります。送信したい相手に向けて送る必要はありません。
P2Pに送るというのは、分かりづらいかもしれません。銀行送金だったら、銀行に送金の内容を送ります。しかし、ビットコインには銀行のような中央管理者がいません。そこで、P2Pを構成しているパソコンに送ります。
つまり、送金の実行をP2Pネットワークに依頼するのです。
こうして、送金リクエストが完了します。なお、このP2Pネットワークに参加しているパソコン等のことを「ノード」といいます。
このようにして送金リクエストが完了した後、このリクエストが正しいかどうかの「検証作業」が行われます。