ブロックチェーンの秘密鍵と公開鍵の仕組み
今回は、Wor…… ブロックチェーンの秘密鍵と公開鍵の仕組みについてまとめていきます。
この先、この秘密鍵から公開鍵を作成する際に用いられる楕円曲線暗号を説明したいのですが、ここで一気に説明するのは大変です。
なので、まず、ブロックチェーンで使われる秘密鍵と公開鍵とは何かを説明していきます。
●そもそも秘密鍵と公開鍵とは?
ざっくり言うと、
秘密鍵は、ある特定の人が持てるたった一つの大事な鍵です。
公開鍵は、みんなが持てる鍵です。
かつ、秘密鍵と公開鍵は常にセットで存在します。
意味不明なので、説明していきます。
これを理解するには、公開鍵暗号式を理解するのが不可欠です。
●公開鍵暗号式とは?
公開鍵暗号式は、世の中で広まっている情報が複数の意味を持っていて、誤解を生みやすいですが、本当の意味はこっちです。
公開鍵暗号式には特徴が2つあります。
1、逆計算が難しい(公開鍵から秘密鍵を割り出せない)
2、公開鍵と秘密鍵のそれぞれで、別々の操作を行う
という特徴です。
●公開鍵暗号式の種類
公開鍵暗号式の種類は、現時点では、全部で3つあります。これが公開鍵暗号式の意味をややこしくしてる原因です。
その種類は、
1、鍵交換
2、公開鍵暗号(狭義)
3、署名
の3つです。
今回は、公開鍵暗号(狭義)、署名について紹介していきます。
●公開鍵暗号(狭義)とは?
多くの人が公開鍵暗号式と間違っているのがこちらです。公開鍵暗号(狭義)はあくまで、公開鍵暗号式の一種です。
公開鍵暗号(狭義)とは、データの送信を安全に行うための方式です。
公開鍵暗号(狭義)の手順としては、データのやり取りにおいて、
1、送信者が受信者が用意した公開鍵を取得
2、送信者が公開鍵を使って、データを暗号化して送信
3、受信者が秘密鍵を使って、データを復号化する
という一連の流れがあり、その中で使うのが公開鍵、秘密鍵です。
●公開鍵暗号(狭義)での公開鍵とは?
誰でも使える鍵です。上の方法であれば、公開鍵が知られても、データを復元するのは秘密鍵なので、データが外部に漏れることがないです。
●公開鍵暗号(狭義)での秘密鍵とは?
公開鍵暗号式において、公開鍵と対になる鍵です。ある特定の人しか使えない大切な鍵です。
ビットコインにおいては、送金時の取引で署名を行うために必要です。盗まれると、ブロックチェーン上のデータの権限を盗まれます。
●署名とは?
署名とは、「公開鍵暗号式」の一種です。先程の公開鍵暗号(狭義)とは別の鍵の使い方をします。
署名は、データが正しいものかどうかを確認します。ビットコインの場合であれば、送金した人の本人確認です。
署名の手順としては、
1、秘密鍵を持っている人が秘密鍵で、被署名データから署名データを作成
2、公開鍵を持っている人が被署名データと署名データを検証する
3、データの検証ができたら、確かにそのデータは秘密鍵を持っている人のもので、本人確認が取れたとなる。
のような流れです。先程の公開鍵暗号(狭義)とは鍵の使い方が違います。
このように、署名をすることで、データが正確なものかどうかの判断をすることができます。
ちなみに、秘密鍵で被署名データから署名データを作成する際に使われる方法の中に、楕円曲線暗号が使われるECDSA,EdDSAといった方法があります。
楕円曲線暗号が使われるのってここなんですね。
ちなみに、検証の方法については、ここでは取り上げません。
●ブロックチェーンにおける秘密鍵と公開鍵の仕組みとは?
ブロックチェーンでは、買い物をしたりとか、投資をしたり、みたいなお金の取引がチェーン状につながっていて、
それをたくさんのネットユーザー同士で管理しています。その取引が改ざんされないようにみんなで見張っています。
下の画像はイメージです。
この時に、取引をした人が署名をします。(上の画像で言う所の「たかし」とか)そうすることで、ネットユーザーがその人の取引であることや、改ざんがされていない事を確認でき、うまく管理をすることができます。
では、仮に、BさんがAさんに300円送金するとして、「Bさんに送金をするAさんの視点」と「検証をするネットユーザーの視点」で見てみましょう。
●Bさんに送金をするAさんの視点
ちなみにハッシュ化はハッシュ関数を用いていて、入力データが変わると異なる値を返す写像です。
例えば、「Bさんに1億円送金する」だったら違うハッシュ化されたデータを返します。
●検証をするネットユーザーの視点
公開鍵を用いて、Aさんがハッシュ化したデータと比較します。もし、データが改ざんされたり、署名データが違っていたりすれば、検証は失敗します。
●まとめ
少々雑でしたが、
ブロックチェーンにおける秘密鍵と公開鍵の仕組みは、署名というものが使われていて、
1、秘密鍵を持っている人が秘密鍵で、被署名データから署名データを作成
2、公開鍵を持っている人が被署名データと署名データを検証する
3、データの検証ができたら、確かにそのデータは秘密鍵を持っている人のもので、本人確認が取れたとなる。
といった工程を踏んで、ネットユーザーがブロックチェーンのブロックを認証しています。
ちなみに、楕円曲線暗号が関わってくるのが、この秘密鍵から公開鍵を作成する際に用いられます。
次回は、この公開鍵を作成する際の楕円曲線暗号の数学的な処理について紹介していきます。