From 053b26739b94aa4482e4fba5edbb64ed1acee26a Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Wed, 21 May 2014 18:21:47 -0400 Subject: [PATCH] ECC illustrated --- ch04.asciidoc | 94 +++++++++++++++++------------------ images/ecc-curve.png | Bin 0 -> 8535 bytes images/ecc-over-F17-math.png | Bin 0 -> 21343 bytes images/ecc_illustrated.png | Bin 0 -> 51535 bytes 4 files changed, 47 insertions(+), 47 deletions(-) create mode 100644 images/ecc-curve.png create mode 100644 images/ecc-over-F17-math.png create mode 100644 images/ecc_illustrated.png diff --git a/ch04.asciidoc b/ch04.asciidoc index 5185e371..afef4548 100644 --- a/ch04.asciidoc +++ b/ch04.asciidoc @@ -25,51 +25,6 @@ In bitcoin, we use public key cryptography to create a key pair that controls ac In most implementations, the private and public keys are stored together as a _key pair_ for convenience. However, it is trivial to reproduce the public key if one has the private key, so storing only the private key is also possible. ==== -==== Elliptic Curve Cryptography -((("elliptic curve cryptography", "ECC"))) -Elliptic Curve Cryptography is a type of asymmetric or public-key cryptography based on the discrete logarithm problem as expressed by addition and multiplication on the points of an elliptic curve. - -<< Replace chart below with one showing the K = k * G key generation as a line on the curve >> - -[[ecc_addition]] -.Elliptic Curve Cryptography: Visualizing the addition operator on the points of an elliptic curve -image::images/ecc-addition.png["Addition operator on points of an elliptic curve"] - -Bitcoin specifically uses the +secp256k1+ elliptic curve: -((("secp256k1"))) -[latexmath] -++++ -\begin{equation} -{y^2 = (x^3 + 7)} \text{over} \mathbb{F}_p -\end{equation} -++++ -or - -[latexmath] -++++ -\begin{equation} -{y^2 \mod p = (x^3 + 7) \mod p} -\end{equation} -++++ - -where +latexmath:[\(p = 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1\)]+, a very large prime number. - -The +mod p+ indicates that this curve is over a finite field of prime order +p+, also written as latexmath:[\(\mathbb{F}_p\)]. The curve looks like a pattern of dots scattered in two dimensions, which makes it difficult to visualize. However, the math is identical as that of an elliptic curve over the real numbers shown above. - -<< Replace chart below with one showing the K = k * G key generation as a line on the curve >> - -[[ecc-over-F37-math]] -.Elliptic Curve Cryptography: Visualizing the addition operator on the points of an elliptic curve over F(p) -image::images/ecc-over-F37-math.png["Addition operator on points of an elliptic curve over F(p)"] - -Once a private key has been generated, the public key equivalent can be derived from it using the elliptic curve multiplication function. Many software implementations of bitcoin use the OpenSSL library, specifically the https://www.openssl.org/docs/crypto/ec.html[Elliptic Curve library]. - - -[TIP] -==== -The size of bitcoin's private key, 2^256^ is a truly unfathomable number. It is equal to approximately 10^77^ in decimal. The visible universe contains approximately 10^80^ atoms. -==== - === Keys Your bitcoin wallet contains a collection of key pairs, each consisting of a private key and a public key. @@ -118,7 +73,44 @@ $ sx newkey The public key is calculated from the private key using elliptic curve multiplication, which is irreversible: latexmath:[\(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 (division), or calculating +k+ if you know +K+ is as difficult as trying all possible values of +k+, i.e. a brute-force search. -Starting with a private key in the form of a randomly generated number +k+, we multiply it with a predetermined point on the curve called the _generator point_ +G+ to produce another point somewhere else on the curve, which is the corresponding public key +K+. +==== Elliptic Curve Cryptography +((("elliptic curve cryptography", "ECC"))) +Elliptic Curve Cryptography is a type of asymmetric or public-key cryptography based on the discrete logarithm problem as expressed by addition and multiplication on the points of an elliptic curve. + +Below we see an exaple of an elliptic curve, similar to that used by bitcoin: + +[[ecc-curve]] +.An Elliptic Curve +image::images/ecc-curve.png["ecc-curve"] + +Bitcoin specifically uses a specific curve and a set of constants, defined as a standard called +secp256k1+, by the National Institute of Standards and Technology (NIST). The +secp256k1+ is defined by the following function, which produces an elliptic curve: +((("secp256k1"))) +[latexmath] +++++ +\begin{equation} +{y^2 = (x^3 + 7)} \text{over} \mathbb{F}_p +\end{equation} +++++ +or + +[latexmath] +++++ +\begin{equation} +{y^2 \mod p = (x^3 + 7) \mod p} +\end{equation} +++++ + +The +mod p+ indicates that this curve is over a finite field of prime order +p+, also written as latexmath:[\(\mathbb{F}_p\)], where latexmath:[\(p = 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1\)], a very large prime number. + +The curve looks like a pattern of dots scattered in two dimensions, which makes it difficult to visualize. However, the math is identical as that of an elliptic curve over the real numbers shown above. Below is the same elliptic curve over a much smaller finite field of prime order 17, showing a pattern of dots on a grid. The bitcoin elliptic curve can be thought of as a much more complex pattern of dots on a unfathomably large grid. + +[[ecc-over-F17-math]] +.Elliptic Curve Cryptography: Visualizing an elliptic curve over F(p), with p=17 +image::images/ecc-over-F17-math.png["ecc-over-F17-math"] + +==== Generating a public key + +Starting with a private key in the form of a randomly generated number +k+, we multiply it with a predetermined point on the curve called the _generator point_ +G+ to produce another point somewhere else on the curve, which is the corresponding public key +K+. The generator point is specified as part of the +secp256k1+ standard and is always the same for all keys in bitcoin. [latexmath] ++++ @@ -128,7 +120,15 @@ Starting with a private key in the form of a randomly generated number +k+, we m ++++ [[key_derivation]] -where +k+ is the private key, +G+ is a fixed point on the curve called the _generator point_, ((("generator point"))) and +K+ is the resulting public key, another point on the curve. +where +k+ is the private key, +G+ is a fixed point on the curve called the _generator point_, ((("generator point"))) and +K+ is the resulting public key, another point on the curve. Since the generator point is always the same, a private key k multiplied with G will always produce the same public key K. + +To visualize multiplication of a point with an integer, we will use the simpler elliptic curve over the real numbers - remember, the math is the same. Starting with the generator point G, we take the tangent of the curve at G until it crosses the curve again at another point. This new point is the negative of G+G, or -2G. Reflectign that point across the x-axis gives us 2G. If we take the tangent at 2G, it crosses the curve at -3G, which we can reflect on the x-axis to find 3G. Continuing this process, we can bounce around the curve finding the multiples of G, 2G, 3G, 4G etc. As you can see, a randomly selected large number k, when multiplied against the generator point G is like bouncing around the curve until we land on the point kG which is the public key. This process is irreversible, meaning that it is infeasible to find the factor k (the secret k) in any way other than trying all multiples of G (1G, 2G, 3G etc) in a brute-force search for k. Since k can be an enormous number, that brute-force search would take forever. + + +[[ecc_illustrated]] +.Elliptic Curve Cryptography: Visualizing the multiplication of a point G by an integer k on an elliptic curve +image::images/ecc_illustrated.png["ecc_illustrated"] + [TIP] ==== diff --git a/images/ecc-curve.png b/images/ecc-curve.png new file mode 100644 index 0000000000000000000000000000000000000000..1597c0bcf29f64a8e1c7602abd5a0b919768aad8 GIT binary patch literal 8535 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 z%0D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 F1OO+T2=o8| literal 0 HcmV?d00001 diff --git a/images/ecc_illustrated.png b/images/ecc_illustrated.png new file mode 100644 index 0000000000000000000000000000000000000000..088ecb879edeaef1a6199e90f2121d8e1e356610 GIT binary patch literal 51535 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 literal 0 HcmV?d00001