アドレスの生成方法とは?非対称暗号とは何ですか?#
アドレス生成の手順#
- 256 ビットのランダムな秘密鍵(32 バイト)を生成します
- 楕円曲線暗号を使用して公開鍵を取得します
- 公開鍵は 2 回のハッシュ関数を経て、20 バイトのアドレスが生成されます
楕円曲線#
ここで、秘密鍵 K、公開鍵 P。
曲線上でランダムに点 A (x,y) を取り、Kx+Ky が P に等しいように計算します。つまり、KA=P であり、実際には P は曲線上の 1 つの座標点です。 Bitcoin では、G という公認の点が A の役割を果たし、つまりランダムな点は公開されており、G は定数のようなものです。
メッセージの暗号化#
NP 問題:P と G が与えられた場合、K を求めることは難しいが、K と G に基づいて P が正しいことを迅速に検証できます
Alice と Bob という 2 人がそれぞれ公開鍵と秘密鍵を持っています
- Alice:Pa Ka
- Bob:Pb Kb
Pa = Ka * G
Pb = Kb * G
ここで、公開鍵は公開されています。つまり、2 人はお互いの情報を知ることができます
- Alice: Ka * Pb = Ka * Kb * G
- Bob : Kb * Pa = Kb * Ka * G
これら 2 つの情報は等しいため、このキーは 2 人だけの対称鍵と見なすことができます。
Alice が Bob にメッセージを送りたい場合、Pb で情報を暗号化し、Bob は Kb で復号化します。つまり、可逆演算を行います。
デジタル署名#
m:メッセージ
Alice は m に対して Ka を使用して署名し、m * Ka = N、これは秘密鍵から公開鍵を生成するのと同様です(m は G です)
相手がこの文が Alice のものであることを検証したい場合
m * Pa = m * G * Ka、つまり = G * N、G が公開されているため、m が Alice のものであるかどうかを迅速に検証できます