ビットコインの「秘密鍵」はどんな存在?

秘密鍵
ビットコイン
2018-09-26 更新

ビットコインに関する記述において、頻繁に目にするのに「秘密鍵」という言葉があります。これはいったい何を意味し、どのような役割を担っているのでしょうか? そのネーミングからも、非常に重要なものであることをイメージできるでしょう。

ここでは、ビットコインにおける「秘密鍵」の役割やその仕組み、用いられるシーンなどについて詳しく説明します。

ビットコインにおける「秘密鍵」と「公開鍵」とは?

「秘密鍵」はプライベートキーとも呼ばれ、自分がそのビットコインの所有者であることを証明するための暗号コード(文字列)です。自分だけが知っており、銀行の預金口座で言えば、暗証番号に相当するような役割を担っています。つまり、ビットコインにとって「秘密鍵」は最も重要な存在で、これを中心に管理が行われています。

ビットコインには「公開鍵暗号方式」という技術が採用されており、暗号化とその解読において「秘密鍵」と「公開鍵」という別々のキーを用いるのが大きな特徴です。「公開鍵」はパブリックキーとも言います。

前述した「暗号化とその解読」は、ビットコインが人から人に移動する際に、万全のセキュリティ環境を整えるために欠かせない作業です。つまり、「秘密鍵」と「公開鍵」の2つのキーを用いることで、安全にビットコインを送ったり受け取ったりすることが可能となっているのです。

たとえば、AさんがBさんにビットコインを送りたい場合、まずBさんが「公開鍵」を暗号化してAさんに送ります。Aさんは、Bさんの「公開鍵」を用いて、そのビットコインに関する情報を送ります。その情報を受け取ったBさんは自分だけが知っている「秘密鍵」によってその解読を行い、無事にビットコインを受け取ることができます。「公開鍵」によって暗号化されたデータは、Bさんだけが持っている「秘密鍵」でしか解読できないため、AさんからBさんのもとへ安全にビットコインを送金できるわけです。なお、Aさんからビットコインを受け取ったBさんは、それを「公開鍵」によって解読することで所有権を他者にアピールしたり、使用したりすることが可能となります。

ビットコインの「秘密鍵」と「公開鍵」の違いは?

「秘密鍵」はそのビットコインを保有している人だけが知っているものであるのに対し、「公開鍵」は誰でも知ることが可能です。そして、「公開鍵」は「秘密鍵」を暗号化することによって不可逆的に生成されます。

ビットコインの送金先を指定するために用いられるビットコインアドレスは「公開鍵」をもとに生成されていますが、この「公開鍵」にも暗号化が施されています。送金を受け取る側は、その情報の解読に「秘密鍵」を用います。つまり、「秘密鍵」をもとに「公開鍵」が作られ、「公開鍵」からビットコインアドレスが作られるという流れになっているのです。それぞれのプロセスにおいて高度な暗号化が行われているので、遡って「秘密鍵」を盗み取るのは不可能とされています。

つまり、すべてを解読できるのは「秘密鍵」だけだということです。

あらゆるビットコインアドレスに送金されたビットコインの額は、誰でも把握することが可能です。なぜなら、ブロックチェーン上にすべてのトランザクション(取引)履歴が記載されており、それが一般公開されているからです。大勢の監視下にあるため、履歴を改ざんしたり、不正操作を行ったりするのが難しいのです。

一方で、送金されたビットコインの金額がオープンになっていても、そのビットコインアドレスが誰のものであるのかは判明しません。「秘密鍵」を持っている人だけが自分のビットコインアドレスを判読できるようになっています。「秘密鍵」によって、自分のビットコインアドレスにどういった送金があり、現時点の残高確認を把握できるわけです。

自分から誰かに送金する際にも、やはり「秘密鍵」が用いられます。「秘密鍵」による電子署名によって、「自分が保有していたビットコインを送金したこと」を表明するのです。そして、その履歴がブロックチェーン上に記録されるわけですが、明らかになっているのは金額だけであり、上で述べたように誰が誰に送ったのかは当事者以外にはわかりません。

ビットコインの「秘密鍵」生成法と管理法

ビットコインにおいて極めて重要な「秘密鍵」は、ランダムな状態で並んでいる文字列をハッシュ関数によって演算することで生成されます。このランダムな状態で並んでいる文字列は、「Number used once(一度だけ用いる数字)」を語源にナンスと呼ばれています。

一方、ハッシュ関数のハッシュを直訳すると「細切れ」となりますが、この場合は「細切れ状態で復元が不可能な」という意味合いで用いられています。要するにハッシュ関数とは、復元が不可能な値(ハッシュ値)を算出するためのものです。

まるで一方通行の道路のように、ハッシュ関数には逆進できないという特性があります。したがって、「秘密鍵」からナンスを逆算することは不可能です。

「秘密鍵」は自分が所有者であることの証しであるため、うっかり紛失や消去をしてしまうと、そのビットコインを失う羽目になります。また、悪意のある第三者に「秘密鍵」の内容を知られてしまうと、ビットコインを盗まれる恐れが生じます。そのため、日頃から「秘密鍵」は厳重に管理すべきです。

オンラインで決済や送金などを行うとき以外は、日常的に「秘密鍵」はコールド・ストレージ(コールド・ウォレット)で管理しておくのが良いでしょう。なぜなら、オフライン状態にあるものには、悪意のある第三者がアクセスできないからです。主なコールド・ストレージとしては、①一般的に普及しているUSBメモリや外付けハードディスク、②専用のハードウェア・ウォレット、③ペーパー・ウォレットの3つが挙げられます。

②のハードウェア・ウォレットは、①の市販のUSBメモリなどと比べて初期設定も比較的簡単です。また、③のペーパー・ウォレットは「秘密鍵」などをQRコードに変換し、それを印刷して紙で保管します。電子機器と違って読み取り不能になる恐れは少ないものの、紙では破損や劣化も心配です。

これらコールド・ストレージに対し、基本的にオンライン状態となっているオンラインウォレットには全幅の信頼を寄せづらいのも実情でしょう。たとえば、オンラインウォレットサービスではセキュリティをサイト運営者側に一任することになるため、信用できるところを選ぶ眼力が求められます。ユーザーは、サイト運営者のサーバー内に「秘密鍵」と「公開鍵」を保管しているので、ハッカーからの攻撃が気になるところです。また、スマホなどにダウンロードして用いるウォレットアプリは非常に便利ではあるものの、ネット接続時にはやはりハッキングのリスクが生じます。本来、オンライン上に保存されているバックアップデータは暗号化しておくべきでしょう。

なお、「秘密鍵」と「公開鍵」のペアは、ストレージ(ウォレット)内で管理されていますが、一般に使っている財布とお金の関係とは異なり、ビットコイン自体がその中に入っているわけではありません。また、この2つのキーとともに、自分が所有しているUTXOに関するデータなども管理されています。UTXOは「Unspent Transaction Output」の略で、「自分が所有している未使用のビットコインに関するトランザクション(取引)履歴」という意味合いです。

ビットコインの「秘密鍵」は復元できる?

「秘密鍵」によって「公開鍵」が作られ、「公開鍵」からビットコインアドレスが作られているうえ、それぞれのプロセスで暗号化は行われていることについては、すでに説明した通りです。さらに、一方向性で逆算できないハッシュ関数を用いて生成されていることからも想像できるように、ビットコインの「秘密鍵」自体は復元できません。

ですから、いずれかのコールド・ストレージ(コールド・ウォレット)でしっかりと管理することが大前提となります。そして、ストレージ(ウォレット)を利用する際に習慣付けておきたいのは、「秘密鍵」とともに復元用パスフレーズの管理も万全にすることです。

この復元用パスフレーズとは、ストレージ(ウォレット)に保存していたデータを復活させる際に用いるデータです。機器の故障やエラーなどのトラブルでデータが読み込めなくなっても、復元用パスフレーズがわかれば復元が可能なのです。

別の言い方をすれば、ビットコインの「秘密鍵」を自分ではよく把握していなかったとしても、復元用パスフレーズがストレージ(ウォレット)内で保管してあれば復元できるということでもあります。つまり、ストレージ(ウォレット)内に復元用パスフレーズがあれば、実質的に「秘密鍵」を復元可能であるということです。

だからこそ、復元用パスフレーズは必ず何らかのかたちで記録し、紛失や漏洩を防ぐために「秘密鍵」の保管と同様、厳重管理するのが賢明です。復元用パスフレーズはストレージ(ウォレット)をセットアップした時点で表示されるので、それを記録しておけば、後日、端末変更をしたり、トラブル対応でデータを初期化したりした際に、ウォレットの中身を復元できます。

「秘密鍵」は先にも述べたように、ハッシュ関数を用いてシステマティックに生成された文字列であり、規則性はまったくありません。特に厳格なルールは定められておらず、64文字のものが一般的ですが、もっと長いケースも短いケースもあります。いずれにしても、人間の目にはアトランダムに並べられた長い文字列にしか映らないので、脳内に記憶しておくのはかなり困難なことでしょう。

「秘密鍵」と比べれば、復元用パスフレーズは12個もしくは24個の単語となっているのが主流で、比較的覚えやすいかもしれません。とはいえ、忘れたり、間違えて覚えたりしてしまう恐れもあり、正しいデータがわからなくなるとデータの復元ができなくなってしまいます。

また、他の人に復元用パスフレーズが知られてしまえば、ストレージ(ウォレット)内のバックアップを別の場所で復元されてしまう可能性が生じます。つまり、その中に入っていた「秘密鍵」や「公開鍵」を盗み出されてしまう恐れがあるわけです。

復元用パスフレーズは「秘密鍵」と同じく、絶対に自分以外には知られてはいけないものだと理解しておきましょう。その保管はオフライン状態で行うのが賢明です。どこからでもアクセスできるようにクラウドサービス上で復元用パスフレーズを保管しておきたい場合は、暗号化ソフトで暗号化を施しておくべきでしょう。

結局のところ、利便性と安全性はトレードオフ(二律背反)の関係にあり、特にビットコインのような仮想通貨の場合は、利便性を求めれば求めるほどセキュリティ面に不安を抱えることになりがちです。逆に安全性を第一に考えると、「秘密鍵」や復元用パスフレーズなどの管理に関して、それなりの手間がかかってしまいます。「面倒だな……」と思った瞬間、「だけど、ここで油断すると危うい」と自分に言い聞かせる姿勢が求められていると言えるでしょう。こうしたことから、DMM bitcoinでは顧客から預かっている資産の90%以上をコールド・ウォレットで分別管理する体制を貫いています。

「秘密鍵」と復元用パスフレーズの徹底管理を!

ビットコインには「公開鍵暗号方式」という技術が採用されており、暗号化とその解読に「秘密鍵」と「公開鍵」という2つのキーを使用します。銀行預金にたとえると、「秘密鍵」はキャッシュカードの暗証番号、「公開鍵」は口座番号のような役割です。どちらもビットコインを送金したり受け取ったりする際に必要となるもので、特に「秘密鍵」は他人に絶対知られてはならない情報ですから、オフライン状態のコールド・ストレージ(コールド・ウォレット)で慎重に管理するのが良いでしょう。その際、バックアップデータを復活させるために復元用パスフレーズが必要となるので、きちんとメモやデータで保管しておき、こちらも他人に知られないようにすることが大切です。

ビットコインのセキュリティについて詳しく知りたい方は「ビットコインのセキュリティについて」もご参照ください。

※掲載されている内容は更新日時点の情報です。現在の情報とは異なる場合がございます。予めご了承ください。

関連記事

今、仮想通貨を始めるなら
DMMビットコイン