仮想通貨(ビットコイン)における秘密鍵とは?
Crypto Times 編集部
はじめまして、ぼにふぁ(@bonifasan)です。
今回は仮想通貨でよく耳にする、秘密鍵について解説していきます。
秘密鍵と聞くと技術的で難しそうに感じますが、できるだけわかりやすく書きましたので、ぜひ最後までご覧ください。
1.公開鍵暗号とは、暗号化と復号化に2種類の鍵を使う暗号方式のこと
2.署名とは、所有者であることを証明する数学的なメカニズムである
3.秘密鍵は厳重に管理しなければならない
秘密鍵とは?公開鍵暗号方式から理解しよう
bitFlyerの用語集にはこうあります。
秘密鍵とは、公開鍵暗号において公開鍵と対になる鍵です。ビットコインにおいては、送金時の取引で署名を行うために必要です。
これを読む限り、どうやら秘密鍵は公開鍵暗号やビットコインにおける署名というものに関係しているようですが、公開鍵暗号や署名がそもそもよくわかりませんよね。
公開鍵暗号とは、暗号化と復号化に2種類の鍵を使う暗号方式のことです。ビットコインにおいては、署名にこの暗号方式が使われています。署名は後ほど解説します。
まず、公開鍵は持ち運んで箱に鍵をかけられる南京錠、秘密鍵は南京錠を開ける鍵をイメージしてください。この2つは対になっていますね。
まず大事なのが、図のように秘密鍵から公開鍵が作られるということです。現実では、鍵を元に南京錠を作るのはおかしいですが、デジタルなのでこれが可能です。
ちなみにこの秘密鍵から公開鍵を作る手順には楕円曲線暗号方式という高度な暗号技術が使われているため、公開鍵から秘密鍵を割り出すことは不可能です。
公開鍵暗号は、複数の送信者がそれぞれデータを暗号化して送ってくる場合でも、受信者は送信者別の鍵を作成する必要がありません。受信者は、それぞれの送信者にに同じ鍵穴の南京錠(公開鍵)を渡し、暗号化(施錠)してもらいます。
そしてそれぞれの送信者が、受信者が渡した南京錠でデータを暗号化(施錠)してこちらに送ってきます。そのデータを受信者は南京錠を開ける鍵を使うことで復号化(開錠)できます。
送信者によって暗号化されたデータを復号化するには秘密鍵が必要ですが、その秘密鍵(南京錠を開ける鍵)は受信者本人しか持っていません。もし、暗号化されたデータが他人に伝わって復号化されそうになっても、公開鍵(南京錠)でデータを復号化することはできませんので、非常に安全な仕組みになっています。
このような2種類の鍵を使う公開鍵暗号方式はインターネットのSSLという暗号通信(https)にも使われています。皆さんもインターネットのアドレスがでよく見かけると思います。
秘密鍵(公開鍵暗号方式)を用いたビットコインの送金
2種類の鍵を使い暗号化・復号化をする公開鍵暗号方式は、ビットコインにも用いられています。
以下では、
●署名について
●送金の流れ
●検証プロセス
の3つに分けて解説します。
署名について
署名(デジタル署名、電子署名)とは、所有者であることを証明する数学的なメカニズムです。
ビットコインでは、ビットコインの所有者の署名がブロックチェーン上に記録され、署名が一致する場合だけ所有者が書き換えられます。この仕組みに先ほど解説した公開鍵暗号方式が使われています。
極端な話、もしビットコインの署名が公開鍵暗号方式によって暗号化されず無防備な状態だと、ビットコインの所有者が何者かによって改ざんされてしまいます。すなわち、ビットコインが簡単に盗まれることになります。
送金の流れ
まず、ビットコインの送金には送金者の秘密鍵(南京錠を開ける鍵)と、送金先のビットコインアドレスが必要です。そして送金者は自分の秘密鍵をもとに公開鍵(南京錠)を作成します。
次に送金者は、’’私が〇〇さんに〇〇BTC送金します’’という取引データを作成します。
そして、この取引データを送金者は自分の秘密鍵を使い暗号化します。これが署名データです。
そうなんです。ビットコインの署名は秘密鍵(南京錠を開ける鍵)によって暗号化します。公開鍵ではありません。
南京錠の例えを使うとここが厄介なのですが、ビットコインの署名は秘密鍵(南京錠を開ける鍵)で鍵をかける、すなわち暗号化すると考えてください。
つまり、
・秘密鍵(南京錠を開ける鍵)は対となる鍵を開けることもできるし、鍵をかけることもできる。
・公開鍵(南京錠)は鍵をかけることしかできない。
ということです。
検証プロセス
続いて検証です。先程の取引データと署名データを暗号化したら、次にそれらをネットワーク上に公開します。また、同時に公開鍵もネットワーク上に公開します。その後マイナー(採掘者)がこれらを検証します。
検証というのは、この公開された取引データと署名データが、公開された公開鍵とペア(対)になっているかの確認です。
前述の通り、公開鍵は鍵をかけることしかできませんので、すなわち開けることはできません。ですがコンピュータは、ペアになっているかどうかは確認できます。
こうすることで、送金したのが本当にビットコインの保有者本人であるのかという、いわば本人確認を行っているのです。これが検証です。マイニングに報酬があるのも納得ですよね!
図で表すとこのようになりますね。
検証が終われば、送金は完了になります。
なお、これらの取引データは全世界のマイナーで共有するので、改ざんされることはありません。これがブロックチェーン技術の強みです。
秘密鍵の管理
ブロックチェーンへの署名は、秘密鍵を持つものだけが行うことができる仕組みになっています。つまり、秘密鍵を持つものだけがビットコインを送金できます。
これは、万が一秘密鍵が漏洩してしまうと、第三者に勝手に送金されてしまうということを意味します。
つまり、秘密鍵こそがビットコインの所有権を証明できる唯一のものと言えます。そのため、秘密鍵は厳重に管理しなければなりません。
まとめ
今回は、秘密鍵とは何かについて解説しました。
取引所を使用する場合、秘密鍵を自分自身で見ることはありません。取引所が秘密鍵を管理や、送金の署名を行ってくれているからです。
私達はアドレスさえ分かっていれば、簡単に送金や受取ができます。ですがこのようにシステムが動くことでビットコインが成り立っているということは、知っていて損はないと思います。