鍵ペア — ETH.BUILD
教育ツールETH.BUILDを使用した公開鍵と秘密鍵のペアのデモンストレーション。暗号技術による鍵ペアがどのようにイーサリアムのアカウントを保護し、トランザクションの署名を可能にするかを理解します。
Date published: 2021年1月14日
オースティン・グリフィスによるチュートリアル。ビジュアルプログラミングツールETH.BUILDを使用して、公開鍵と秘密鍵のペアがどのように機能するかをデモンストレーションし、秘密鍵の生成、公開鍵の導出、メッセージの署名、署名の復元について解説します。
このトランスクリプトは、オースティン・グリフィスが公開した元のビデオのトランスクリプト (opens in a new tab)のアクセシブルなコピーです。読みやすさのために軽く編集されています。
秘密鍵 (0:00)
最初のビデオではハッシュを使用しました。ハッシュは今後も重要になります。しかし、次に重要な要素は鍵ペアです。鍵ペアの最も重要な部分は秘密鍵です。さっそく生成してみましょう。これは基本的にランダムな64文字の16進数文字列で、先ほど扱ったハッシュと同じサイズです。
それを秘密鍵として使い始め、次に楕円曲線暗号技術(サイドクエストとしてWikipediaで調べてみてください)を使用して、公開鍵を導出します。これで秘密鍵と公開鍵が揃いました。何もないところから秘密鍵を生成し、公開鍵からアドレスが得られます。ここが、実際に人々が送金できる場所です。誰かが「私のイーサリアムのアドレスに送って」と言うとき、それがこれに当たります。
もしウェルズ・ファーゴで口座(アカウント)を作ろうと思ったら、銀行まで車で行き、たくさんの情報を提供しなければなりません。時間がかかるでしょう。しかし、このような暗号技術システム内で送受信できるアカウントを生成するには、この秘密鍵を生成するだけです。この64文字の16進数の秘密鍵が、他のすべてを導き出します。
メッセージの署名と復元 (1:54)
この鍵ペアには、探求すべき非常に素晴らしい特性があります。それはメッセージの署名と復元です。基本的には、秘密鍵を使って何らかのメッセージに署名します。メッセージを入力してみましょう。「the bear is sticky with honey(クマはハチミツでベタベタしている)」とします。
これをメッセージとして入力し、自動署名を有効にすると、署名が返されます。ハッシュと同じように、署名は基本的にメッセージと秘密鍵を受け取り、何かに署名するものです。そこから得られるのが署名です。
私はこれを世界中に発信することができます。この署名文字列とメッセージを、誰にでも公開して送信できるのです。数学を使えば、誰でも私が間違いなく署名した本人であることを検証できます。
署名者のアドレスの復元 (3:17)
それがどのように機能するかお見せしましょう。「recover(復元)」メソッドを使用します。2つの入力が必要です。メッセージ(「the bear is sticky with honey」)と署名です。そこから出力されるのは、署名に使用されたアドレスです。BlockieのIdenticon(アイコン)を使えば、そのアカウントがメッセージに署名したことを視覚的に確認できます。
これを改ざんする方法はありません。誰かがたった一語でも変更した場合(例えば「bear」を「badger」に入れ替えるなど)、すべてが変わってしまいます。同じ署名であっても、異なるメッセージからは正しいアドレスではなく、異なるアドレスが出力されます。
このメッセージは改ざんできません。そこにタイムスタンプを入れることもできます。「この日、私は何かが起こると予測する」と書いて署名し、署名とメッセージを公開すれば、その後ずっと、誰でもあなたがその時にそのメッセージに署名したことを数学的に証明できます。
鍵ペアの重要な特性 (4:58)
これが鍵ペアの重要な特性です。64文字のランダムな16進数文字列から生成された鍵ペアを使用してメッセージに署名し、その後そのメッセージを復元することができます。
- 秘密鍵 + メッセージ = 署名
- 署名 + メッセージ = 公開アドレス
私たちは秘密鍵でデータに署名でき、人々は私たちが署名したことを証明できます。これは次のステップに向けた重要な要素となります。