初心者でもわかる秘密鍵・公開鍵の仕組みとそれぞれの役割

秘密鍵と公開鍵を解説

仮想通貨の取引や保管に必要なウォレットの信頼性に欠かせないのが「暗号」であり、暗号の信頼性を担っているのが秘密鍵と公開鍵です。しかし、その仕組みがどのようなものか正しく理解されているとは言えない部分があります。
今回は、暗号の基本的な仕組みと仮想通貨にどのように取り入れられているのかを見てみましょう。

暗号方式と秘密鍵・公開鍵

暗号化と聞くと大仰なことに思えますが、その仕組は意外と単純であり、他人に見られたくないデータを一定の法則に基づいて外部からみても意味がわからないデータに変換する仕組みのことです。

秘密鍵と公開鍵

暗号化をすることで万が一データが流出しても、第三者にデータを読み取れるリスクを減らすことができます。自分自身がそのデータを読み取るときには、もとに戻す(復号)ことで読み取りができます。

暗号化の流れとメリット

まず、元データ(平文)を用意して、この平文を「暗号アルゴリズム」という法則に基づいて変換します。これを「暗号化」といい、出力されるデータを「暗号文」と呼びます。暗号化や復号に使うデジタルな道具を「鍵」といいます。暗号化に使う鍵が「暗号鍵」、復号に使う鍵が「復号鍵」です。平文と暗号アルゴリズムが同じでも、別の鍵を使うと作成される暗号文は別のものになります。

第三者に見られたくないデータを送信するときには、まず送信者が暗号鍵で暗号化を行って送信します。次に受信者が復号鍵を使ってそれを平文に戻します。送信の途中で第三者がそのデータを盗み見ても、復号鍵を持っていないのでその意味をうかがい知ることはできません。

共通鍵暗号と公開鍵暗号

暗号化方式は、大きく共通鍵暗号と公開鍵暗号に分類できます。共通鍵暗号では暗号鍵と復号鍵に同じ鍵(共通鍵)を用いて、送信者が共通鍵で平文を暗号化して、受信者が共通鍵で復号します。共通鍵暗号では、鍵の安全な受け渡しをどうするかが大きな課題となります。手渡しでは時間がかかり、鍵を送信中に盗み見られれば暗号文も解読されてしまいます。
また、通信する相手によって鍵を使い分ける必要があります。N人で互いにやり取りできるネットワークには、N(N-1)/2本の鍵が必要になります。10人なら45本、100人なら4950本とその数は膨大になるので、鍵の管理も重要な要素になります。

開鍵暗号方式の解説図

これに対して公開鍵暗号では、受信者は公開鍵と秘密鍵を作成して公開鍵のみを公開します。送信者はそれを取得して平文を暗号化・送信して、受信者は自身の秘密鍵でそれを復号します。

公開鍵暗号で暗号の復号ができるのは秘密鍵を持つ受信者だけなので、鍵の受け渡しについて考える必要はありません。それだけ秘密鍵の安全な保管が必要になりますが、安全な鍵の受け渡しに比べれば遥かに簡単です。また、公開鍵暗号では、N本人で互いにやり取りできるネットワークを作るためには、2N本の鍵があればOKです。

このように、公開鍵暗号のほうがメリットが多いため、主流になっています。仮想通貨でも、ウォレットの秘密保全に公開鍵暗号を採用しています。

秘密鍵とは

秘密鍵とは、公開鍵暗号で受信者が発行して手元にとどめておく復号鍵です。公開鍵で暗号化されたデータは、対になる秘密鍵でしか複合できません。仮想通貨ではウォレットに保管・管理するためのものであり、銀行でいえば暗証番号に相当します。

秘密鍵の譲渡や紛失は、ウォレットの信頼性を損なうことにつながります。他人に漏らさず、なおかつ自分が忘れないように管理するのは簡単なことではなく、これが仮想通貨取引の難しさにも繋がっています。

公開鍵とは

公開鍵とは、公開鍵暗号で受信者が発行して他者に向けて公開する暗号鍵です。公開鍵暗号では、受信者に向けてデータを送信したい人全員が、同じ公開鍵を使用します。
公開鍵から秘密鍵を特定することは原則不可能なので、公開鍵を使ってデータを送信しても、それを正規の受信者でない人(秘密鍵を持たない人)に読み取られることはまずありません。公開鍵は文字通り公開されている鍵ですので、管理に気を使う必要はありません。

公開鍵暗号を導入しているビットコインアドレス

ビットコインアドレスとは、ビットコインのやり取りに必要な文字列であり、送信側と受信側それぞれのウォレットに割り当てられるものです。例えば仮想通貨取引所に登録すると、ビットコインアドレスが割り当てられます。他の仮想通貨も取り扱いがあれば、専用のアドレスが割り当てられます。

ビットコインにおいては、ビットコインアドレスが公開鍵に相当します。正確には、公開鍵を元にハッシュ値を2回取り、そこからさらにチェックサムを加えてBase58フォーマットしたものがビットコインアドレスになります。わかりやすく言えば、公開鍵をハッシュ関数と呼ばれる逆算が極めて難しい関数に複数回通すと、ビットコインアドレスが導けます。公開鍵からビットコインアドレスを導くことは出来ますが、その逆はできません。

公開鍵と秘密鍵の役割

ビットコインを送金したいというリクエストを送るときには、受取人が公開している公開鍵を使って送金リクエストを暗号化して。受取人はリクエストを所有する秘密鍵を使って復号します。
秘密鍵は受取人しか持っていないので、受取人だけがビットコインを受け取る権利を有していることになります。逆に言えば、秘密鍵が流出すると受取人以外にもビットコインを受け取る権利が発生してしまうということでもあります。

秘密鍵の管理方法

公開鍵暗号では公開鍵はもともと公開されるものであるため、その管理に悩む必要はありません。これに対して秘密鍵は自分以外に知られてはならず、なおかつ自分も忘れてはならないものであるため、確実に管理する必要があります。
秘密鍵の管理方法は、ウォレットによって異なります。ウォレットごとの管理方法の違いを見てみましょう。

ウォレットアプリ

ウォレットアプリとは、パソコンやスマートフォンにダウンロード・インストールするタイプのウォレットです。秘密鍵を自分で管理できるため安全性は高い反面、管理方法は自分で考える必要があります。できれば複数箇所に保存することを前提にするべきでしょう。

また、端末を常時インターネットに接続しているなら、ハッキングによる秘密鍵流出のリスクも考慮しなければなりません。できれば保管専用のオフライン端末がほしいところですが、難しいようならセキュリティ対策はしっかりとしましょう。

ウォレットサービス

ウォレットサービスとは、ウェブ上で公開されているウォレットサービスであり、仮想通貨取引所もここに該当します。この方式では、秘密鍵はそのサービスの提供者が管理します。これは秘密鍵を他者に知られてはならないという原則に真っ向から反するものであり、望ましいことではありません。

サービス提供者へのハッキングリスクや、取引所自体が秘密鍵を不正使用するリスクも否定できません。仮想通貨取引所やウェブ上のウォレットなどには大金を預けないほうがいいと言われているのは、このようなデメリットがあるためです。ウォレットサービスを使うなら、複数のサービスを使い分けるなどの工夫をしましょう。

ブレインウォレット

ブレインウォレットとはブレイン、つまり脳をそのままウォレット代わりにすることです。他者から脳をハッキングされることは現時点ではありえないので、最も安全といえば安全です。

ただし、人間の脳は常に忘れるものでもあるため、ブレインウォレットだけに頼り切るのは極めて危険です。ブレインウォレットをメインに使うなら、リカバリーを前提に別のウォレットにも保存することは欠かせません。

ハードウェアウォレット

ハードウェアウォレットとは、最初から仮想通貨の保存だけを目的に作られた専用機器です。秘密鍵を自分で管理できるだけではなく、オフラインで保管できるので安全性という点ではかなり優秀です。

万が一ハードウェアウォレット自体をなくしてしまっても、別のハードウェアウォレットがあれば復元できます。難点はハードウェアウォレット自体が有料(1万円程度)することです。

ペーパーウォレット

ペーパーウォレットとは文字通り紙のウォレットであり、秘密鍵を印刷した紙です。安全性は非常に高いですが、管理に気をつけないと紛失、紙質の劣化などが起こりかねません。

暗号方式の仕組みを理解してウォレットを使い分けよう

ここまで見てきたように、仮想通貨の取引の信頼性を担保する暗号方式とウォレットにはいくつかの違いがあります。暗号方式やウォレットの違いを知り、使いわけることが取引の安全性を高めることが欠かせません。

0 0

この記事の共有はここから