今回はブロックチェーンを支える暗号技術、公開鍵暗号について紹介します。
できる限り「Short & Simple」を心がけます。
なお、私もブロックチェーン初学者なので、内容に誤り等ありましたらご指摘いただけると幸いです。
そもそも暗号技術の目的は?
現代における暗号技術には以下のような目的がある。
- 文書へのアクセス権を特定の人に限定する
- 文書の内容を改ざんされていないことを保証する
- 文書の作成者の署名を検証し証明する
- 文書がある時点に存在した事実を証明する
- 文書に記された内容を否認できないようにする
公開鍵暗号はどのような暗号技術か
- 「秘密鍵」と「公開鍵」の2種類の鍵を生成して、文書を暗号化する方式
- 「公開鍵」は「秘密鍵」から一意に生成される
- 公開鍵は通信相手に公開しても安全とされている
- 「公開鍵」を用いて暗号化した文書は「秘密鍵」を持ってのみ復号化できる
- 代表的な暗号方式として「RSA」「楕円曲線暗号(ECDSA)」などがある(ブロックチェーンではECDSAがよく使われている)
ブロックチェーンでの応用
署名
仮想通貨の場合、「公開鍵」は通貨を受け取るために使われ、「秘密鍵」は通貨を支払うためのトランザクションに署名するのに使われる。
例えば、ビットコインの所有者がビットコインを使う時、自分の公開鍵と署名(秘密鍵から生成される。生成するごとに署名は異なる。)をトランザクションに記載する。
ビットコインネットワークのすべての参加者は、この公開鍵と署名が示されていることで、トランザクションを検証し、有効なものとして受け入れることができる。
ウォレットアドレス
ウォレットアドレスは、「公開鍵」から一方向性ハッシュ関数を用いて生成される。
※「ウォレット」については別途記事を書こうと思います
秘密鍵と公開鍵
秘密鍵
秘密鍵は無作為に選ばれる数値。秘密鍵を所有していることは、ウォレットアドレスに結びついた資金を所有していることと同義である。
上述した通り、秘密鍵は署名の生成に用いられ、この署名は資金を使うときにその資金を所有していることを証明するのに必要となる。
公開鍵
公開鍵は、楕円曲線上のスカラー倍算を使って秘密鍵から生成(計算)される。なお、この逆の計算(公開鍵から秘密鍵を計算)は、現在の技術では事実上不可能(離散対数問題)。
ちなみに量子コンピュータが実用化されれば公開鍵暗号は役に立たなくなる(公開鍵から秘密鍵を求められるようになる)と考えられているが、そうなるのは20年以上先と言われている。(でも20年先て意外と近い未来な気もする。。。)
ということで、今回はブロックチェーンを支える暗号技術、「公開鍵暗号」について書いてみました。
個人的にしっくりきていない(ブロックチェーンにおける公開鍵暗号の使われ方の理解・説明が十分でない気がする)ので、
引き続き勉強して記事を追記・修正していきたいと思います。