ビットコインアドレスの作り方と公開鍵暗号を超簡単に説明する

  • このエントリーをはてなブックマークに追加
  • LINEで送る

 こんにちは!てくいのタチキです。今回はビットコインアドレスの作成からビットコインの送金までの流れについて簡単におはなしします。

はじめに

 はじめに、ビットコインで取引をする際に「秘密鍵」、「公開鍵」、「ビットコインアドレス」の3つが必要になります。これら3つの情報が入っているモノをWalletといいます。まずは、ビットコインアドレスを作成するまでのおおまかな流れについて説明します。

  1. 秘密鍵の作成
  2. 秘密鍵から楕円曲線暗号を利用して公開鍵を作成
  3. 公開鍵の二重ハッシュ化
  4. Base58エンコードを使用し、ビットコインアドレスの作成

 秘密鍵の作成は意図的に指定できるものではなく、無作為に選ばれる数値です。ビットコインの秘密鍵生成は、256bitのランダムさを作り出すOSのランダム値生成器を使っています。この鍵を作り出すことは、1から2の256乗までの間の数字を選ぶということと本質的には同じで、予測可能であったり、再現可能性があったりしない方法です。秘密鍵から公開鍵を生成する際には、楕円曲線暗号方式を使用しています。楕円曲線暗号についての詳細は省きますが、自分の持っている秘密鍵から安全な公開鍵を生成するアルゴリズムです。その公開鍵に対してSHA256とRIPEMD160でハッシュ化します。そのハッシュ値をBase58を使用しエンコードします。これは”0(数字)”や”O(大文字のo)”、”l(小文字のL)”や”I(大文字のi)”などを除いたりして、人間にとってわかりやすい形にした状態でビットコインアドレスを作成します。

ビットコインアドレス作成後の取引を公開鍵暗号方式の説明からしていきます。

公開鍵暗号方式とは

 そもそも、コンピュータを使って通信を行うインターネットなどの世界では、「重要な情報を他の人に知られてしまう」「伝えたい内容を誰かに書き換えられてしまう」「やりとりしている相手が実は本人ではない」といった事態が発生するリスクがあります。これらのリスクを避けるために「暗号技術」が必要になってきます(atmarkIT なぜいろいろな「暗号技術」が必要なの? 2020年7月27日閲覧)。

 公開鍵暗号方式について、順を追って説明していきます。一般的な暗号のイメージとしては、刑事ドラマで出てくるようなダイイングメッセージや、モールス信号のようなものだと思います。

                  

これらは、「伝えたい文章」を「暗号文」にすることによって、解読方法を理解している人以外には本当の内容を伝えれないようにしています。実際に暗号の解き方を口頭で教えることができる間柄であれば、問題なく解読方法を共有することができるのですが、ネット上ではそうはいきません。さらに、先述したようにネット上では、顔が見えない相手との通信が多く、安全に解読方法を共有することは非常に困難です。

 ここで、「解読方法の共有」を必要とせずに、安全に通信できる暗号方式を「公開鍵暗号方式」といいます。公開鍵暗号方式は「暗号化する鍵」と「暗号化を復元する鍵」の2 つの鍵を使用します。暗号化する鍵を「公開鍵」、暗号化を復元する鍵を「秘密鍵」といいます。

  • 公開鍵
     秘密鍵でしか解錠できない鍵みたいなもの
     秘密鍵により複数作成可能
  • 秘密鍵
     公開鍵を作成できる鍵みたいなもの
     公開鍵を開場できる唯一の手段

(Yone’s Archive 共通鍵暗号方式と公開鍵暗号方式の仕組みと特徴[図解] 2020年 7月27日閲覧)

公開鍵暗号方式の手順

①受信者が秘密鍵を用いて公開鍵を用意する


②受信者が送信者に公開鍵を送る


③送信者は送りたい文を公開鍵で暗号化して送る


④受信者は送られてきた公開鍵を秘密鍵で復元する


以上の手順で公開鍵暗号方式は行われます。秘密鍵は自分自身で常に持っているので、盗まれる心配がありません。デメリットとしては秘密鍵を無くしてしまった場合、暗号文を復元できなることです。以上のことから秘密鍵を大切に保管しておく必要があります。

 

公開鍵暗号方式、ビットコイン取引

 実際に、ビットコインを送金する際イメージは上述の手順とは少し異なりますので簡単に下図に示します。


 ビットコインの公開鍵暗号方式では、公開鍵が「ビットコインを受け取る」ため、秘密鍵は「ビットコイントランザクションに署名する」ために使用されます。この公開鍵と署名によってビットコインを送る時点でビットコインを所有しているということを確認することができます。秘密鍵から公開鍵を作成するときも高度な計算を行い、そこからビットコインを送受信するときも高度な暗号化を行っているのでビットコイン取引は安全にできるということが理解できるかと思います。

その他の暗号方式

SNSでもご購読できます。