diff --git a/ch04.asciidoc b/ch04.asciidoc index d089bd2b..1c6a1b87 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -182,32 +182,6 @@ large number. It is approximately 10^77^ in decimal. For comparison, the visible universe is estimated to contain 10^80^ atoms. ==== -[[pubkey]] -==== Public Keys - -((("keys and addresses", "overview of", "public key -calculation")))((("generator point")))The public key is calculated from -the private key using elliptic curve multiplication, which is -irreversible: _K_ = _k_ * _G_, where _k_ is the private key, _G_ is a -constant point called the _generator point_, and _K_ is the resulting -public key. The reverse operation, known as "finding the discrete -logarithm"—calculating _k_ if you know __K__—is as difficult as trying -all possible values of _k_, i.e., a brute-force search. Before we -demonstrate how to generate a public key from a private key, let's look -at elliptic curve cryptography in a bit more detail. - -[TIP] -==== -Elliptic curve multiplication is a type of function that cryptographers -call a "trap door" function: it is easy to do in one direction -(multiplication) and impossible to do in the reverse direction -(division). Someone with a private key can easily create the public -key and then share it with the world knowing that no one can reverse the -function and calculate the private key from the public key. This -mathematical trick becomes the basis for unforgeable and secure digital -signatures that prove control over bitcoin funds. -==== - [[elliptic_curve]] ==== Elliptic Curve Cryptography Explained @@ -339,7 +313,30 @@ that k is sometimes confusingly called an "exponent" in this case.((("", startref="eliptic04")))((("", startref="Celliptic04"))) [[public_key_derivation]] -==== Generating a Public Key +==== Public Keys + +((("keys and addresses", "overview of", "public key +calculation")))((("generator point")))The public key is calculated from +the private key using elliptic curve multiplication, which is +irreversible: _K_ = _k_ * _G_, where _k_ is the private key, _G_ is a +constant point called the _generator point_, and _K_ is the resulting +public key. The reverse operation, known as "finding the discrete +logarithm"—calculating _k_ if you know __K__—is as difficult as trying +all possible values of _k_, i.e., a brute-force search. Before we +demonstrate how to generate a public key from a private key, let's look +at elliptic curve cryptography in a bit more detail. + +[TIP] +==== +Elliptic curve multiplication is a type of function that cryptographers +call a "trap door" function: it is easy to do in one direction +(multiplication) and impossible to do in the reverse direction +(division). Someone with a private key can easily create the public +key and then share it with the world knowing that no one can reverse the +function and calculate the private key from the public key. This +mathematical trick becomes the basis for unforgeable and secure digital +signatures that prove control over bitcoin funds. +==== ((("keys and addresses", "overview of", "public key generation")))((("generator point")))Starting with a private key in the