2018年7月現在、ビットコインの送金は世界中の人にとって日々身近になってきています。
そこで今回は、
「自分の持っているビットコインが他の誰かに送金されてしまうことはないの?」
「自分が送金したデータの内容がハッカーによって変えられてしまわないの?」
など疑問を持っている方のために、ビットコインの送金の安全を守ってる「電子署名」と「公開鍵暗号」の仕組みをわかりやすく解説します。
ビットコインの送金が安全な理由
安全にビットコインの送金ができるのは、2つの技術が採用されているからです。
1.電子署名
2.公開鍵暗合
ではそれぞれの技術をできるだけわかりやすく解説します。
ビットコインの電子署名とは
ビットコインの送金における「電子署名」とは、送金側のユーザーが行うビットコインの正しい持ち主であることの証明です。
この作業のおかげで、ビットコインを持ち主以外の誰かが送金できないようになっています。
もう少し噛み砕いて説明します。
一般的な電子署名とは
用語 | 説明 |
---|---|
署名 | 本人であることを明らかにするために記すこと |
電子署名 | データに対して行う「署名」 |
電子署名とはデータに対しておこなう署名のことです。
更にわかりやすく言うと、「そのデータは私のデータですよ」と記すことです。
そもそも「署名」とは、本人であることを記す行為です。
例えば実際の生活で行う代表的な署名を挙げるとイメージしやすくなります。
・クレジットカードの支払いの際の署名(サイン)
・宅配を受け取る際の署名(サイン)
また別の例として、日本では公的文章には印鑑を使って捺印をしますが、これもまた署名と同じ役割です。
なので、以下の3点とも「これは私ですよ」と本人であることを説明していることです。
- 署名
- サイン
- 捺印
【例】ビットコイン送金の際の電子署名方法
実際にビットコインの送金の際にはどのような手順で電子署名がおこなわれているかを解説します。
まずビットコインの電子署名とは、送金データを自分の秘密鍵※を使い暗号化することです。
※秘密鍵の説明は次の項目でします
- まずユーザーは、手元にあるビットコインから送金をおこなう時に送金データを作ります。
- そしてその送金データを秘密鍵を使い暗号化します。
これで電子署名は完了し、ビットコインの正しい持ち主から送金が行われることが確認できるようになりました。
次の項目では、なぜ電子署名をすることで他人によって送金データの偽造ができなくなるのかを解説します。
データの内容を守る「公開鍵暗合」とは
ビットコインにおける「公開鍵暗号」とは、ペアの鍵を用いて送金データを暗号化することで、内容が改ざんされてしまわないようにする技術です。
また上でも説明した通り、ビットコインの電子署名にもこの技術が用いられています。
この項目は少し専門的になるので、事前に用語を説明します。
用語 | 説明 |
---|---|
暗号化 | データを一定の規則によって加工すること |
復号 | 暗号化されたデータを元にもどすこと |
ハッシュ化 | データを復元できない他の値に変換すること |
秘密鍵 | データを暗号化する際に利用する値。一般的に所有者しか知り得ないように管理する。 |
公開鍵 | 秘密鍵によって暗号化されたデータを復号する値。秘密鍵を元にして作られ、所有者以外の者が公開鍵を知っても問題はない。 |
ビットコインアドレス | ビットコインの送金先となる値で、公開鍵を元に作られる。 |
電子署名 | 秘密鍵によって暗号化すること。 |
ビットコインは、電子署名の方法に「公開鍵暗合」を採用することで、送金データが偽造されないようにしています。
①まず、ビットコインの送金データはハッシュ化されます。
なので、送金データに記載されている内容自体が改ざんされることはありません。
②次にハッシュ化された送金データは送り主の秘密鍵によって暗号化されます。
③そして、以下の3点が相手のビットコインアドレス宛に送信されます。
- 送金データ(未ハッシュ未暗号)
- 暗号化された送金データハッシュ
- 送り主の公開鍵
その送信されたビットコインの送金データは、ブロックチェーン上のマイナーによって正しい署名か確認されます。
そこで問題がなければ、送金データはブロックに追加され、そのブロックが順次ブロックチェーンに追加されると送金が完了します。
ちなみにですが、秘密鍵を紛失してまうと電子署名ができなくなってしまいます。
これはつまりそのビットコインは、も二度と送金できなくなってしまうことと同義なのです。
なので秘密鍵の保管はビットコインにおいて最重要なことなのです。
【例】ビットコイン送金時の電子署名の流れ
【状況】AからBにビットコインを1BTC分送金したい
- Aは、すでに自分のビットコインアドレス宛に送られてきていた1BTC分の送金データを持っています。
- 次にAはBのビットコインアドレス宛に「AからBに1BTCを送る」といった内容の新たな送金データを作ります
- 新たに作成したB宛の送金データに、Aが自分の秘密鍵を使い暗号化します(電子署名)。
- その後ビットコインのシステムにより署名が正しいか検証されます。
- 検証の結果問題なくAの署名だと証明がされると、その送金データは順次ブロックチェーンに追加されます。
- その後順次ブロックが追加される約10分〜60分がたつと、Bはその受け取った1BTCのUTXOを次のアドレスに向けて送金ができるようになります。
【まとめ】ビットコインの「電子署名」と「公開鍵暗号」
ビットコインの送金データは、電子署名と公開鍵暗暗号によって不正がされないように守られています。
ビットコインにおける「公開鍵暗号」とは、ペアの鍵を用いて送金データを暗号化することで、内容が改ざんされてしまわないようにする技術です。
また「電子署名」とは、送金側のユーザーが行うビットコインの正しい持ち主であることの証明なのです。