Posts about Crypto
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_2wlj3/styles/communityIcon_6ddnoarvwchb1.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://b.thumbs.redditmedia.com/JU-wLC9f1XJIRWiHlHls5GDMUcickAvpsS_NkyleyVc.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_37jgj/styles/communityIcon_l7xonpvbt0e61.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_2s3qj/styles/communityIcon_0b7iyz6hc6i51.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_39obp/styles/communityIcon_2sy6qo8bget41.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_2zcp2/styles/communityIcon_gflpzojnfs621.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_3ni6j/styles/communityIcon_usv3gtcmzcf91.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_3fzwp/styles/communityIcon_0z9dfrbsy6u61.jpg?format=pjpg&s=eab99df15fb701c235c626064a844a210a07d3f3)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_2si5v/styles/communityIcon_zteh2uijqwe31.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_ldcor/styles/communityIcon_3wiidh8zh4m11.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_35vl8/styles/communityIcon_0ujfhlck5fc71.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://b.thumbs.redditmedia.com/NIbkywHRGL0VPaRylMleuWbTrdSUJ9R5tSGjEZFoxSM.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_3ug1ww/styles/communityIcon_89b6mtsapjbb1.jpg?format=pjpg&s=2f17eff7cd76a49381ac1b524ce9334da76d61a6)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://b.thumbs.redditmedia.com/aPqJW2u4QwaTp_oUgsvgXE2XQTD6Z4dpbwepe6J1GDo.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://b.thumbs.redditmedia.com/y-LZaz0_34grKjI9RHzATACVePqIRR9aH4q8fPwwYNI.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_3u1ogh/styles/communityIcon_odizd8gg5z6a1.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_2y15qk/styles/communityIcon_pppczbmyqek51.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_3psfm/styles/communityIcon_7cbhs3vr9ru01.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_42kuwz/styles/communityIcon_14b6ngtsc8o61.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_2zf9m/styles/communityIcon_hebckbd64w811.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_3n82c/styles/communityIcon_7kjm224yfcbb1.jpeg?format=pjpg&s=c47f6ac252d677634d03e52e6c35cadd482d313a)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_4147ke/styles/communityIcon_lwl9gso33qk61.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_3pg5z/styles/communityIcon_abvfvwuspnw31.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_46bnjs/styles/communityIcon_2e0mxdg1zyt91.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_2g94rz/styles/communityIcon_dw1koyy0wyi41.png)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_4zyvn0/styles/communityIcon_bgvl5vmt7ol71.jpg?format=pjpg&s=0624e920f69efe7275e7761fc6230d39fc66f22f)
![Subreddit Icon](http://web.archive.org./web/20230923201934im_/https://styles.redditmedia.com/t5_dy66n/styles/communityIcon_0yaj7nybhzd71.png)
All of us who went to school at some point of time have probably seen all those graphs on coordinate grids, where the y variable somehow depends on x. Consider, for example, the trivial case of y = x:
Easy right?? Now with all the mumbo-jumbo of cryptography, the equation for an elliptic curve is not much different! It has the form of y^2 = x^3 + ax + b. Whatโs a and b? Just some arbitrary (not really...more of that in the end) constants. Letโs see how it looks with a = 0, b = 7, just like in the Bitcoin curve:
Now the REAL POWER OF THIS CURVE IS THE ABILITY TO PERFORM 3 IMPORTANT OPERATIONS: ADDITION/SUBTRACTION, DOUBLING AND INVERSING (MULTIPLYING BY -1), WHILE NOT BEING ABLE TO PERFORM DIVISION AND DIRECT MULTIPLICATION OF TWO POINTS ON THE CURVE.
Let me explain with a few examples:
The elliptic curve is symmetric along the X-axis. It means that for any point on the curve A, we can get its mirror point (INVERSING), called -A, by simply mirroring its y coordinate:
If we draw a line through any of two points not lying on a vertical line, it will meet the curve at exactly one more point! Letโs draw a line through the A and B points, and call the third point โC. Then letโs reflect it to get point C and it so happens (if you do the algebra) that this point C = A + B (ADDITION) !!
Finally, if we draw a line that just touches any point A lying on a curve (tangent line), it will pass through the curve at exactly one other point. And this point happens to be -2A!! We already know how to get 2A by mirroring it and voila! we have just achieved POINT DOUBLING!!
And thats it! We have just defined 3 fundamental operations that define elliptical curves. The only drawback, for now, is the need to draw it. But of course, there are mathematical formulas for reflecting, addition, and doubling a point...lets not bother with those boring formulas since the concept is all that matters atm.
Now you will say, okay...and why do we care about this exactly??? Hold on...this is where all the fun starts. By using combinations of these 3 fundamental operations, we can choose an arbitrary number k ( our secret 'key') and a random point on the curve G ( called a 'generator point' by crypto geeks) to compute:
K = k ร G
Do you see where I am going?? You guessed it right! K is our public key! Now the challenge lies in deciphering k even if you somehow managed to find out what G is. Thats where the magic of elliptical curves manifests...you can add, multiply or reflect points but you cannot divide them by numbers. Now you can brute force it for k = 2/3/4/5... etc. But this approach won't help you for long as my choice of k gets larger and larger. We can multiply a point by any integer, but there is no way to get the integer back! This is the gist of it! And this is what makes the elliptic curves very good for cryptography. This algebra works for infinitely large numbers.
When implementing elliptical curves in practical applications like blockchain security you need to constrain the possible numbers you are allowed to play with. This is necessary to ensure that the integrity and structure of the math is maitained and performance is not compromised. For example, consider a extra-paranoid user who might think of using a private key which has 1000 quadrillion digits. Of course its maximum SAFU but good luck computing the public key. To make things a little more structured, the possible numbers are constrained using a set of allowed numbers. This is known as a finite field. Since cryptographers love prime numbers, these finite fields are usually defined over huge prime numbers. But hey, thats a topic that needs its own post...more of that in the future.
Finally, a parting trivia from a Monero maximalist:
Consider the elliptical curve used by bitcoin which I have discussed above: y^2 = x^3 + 7. Cryptographers call it by the fancy name of Secp256k1. This curve was invented by a company called Certicom (it was acquired by Blackberry in 2009). Now, in terms of security vulnerabilities, experts assign a rigidty to elliptical curves. In their lingo, a fully rigid curve is one where the process of curve generation is completely explained. Take for example the bitcoin elliptical curve above. Why is there a 7? Why not add a - sign before y^2? If the designers of the curve can fully explain why they chose these values, subject to scrutiny by the wider research community then its fully rigid aka safe. Now, the interesting part is, as per this criteria of rigidity assignment, the bitcoin curve is classified as somewhat rigid. Now that translates to 'the curve-generation process is not completely explained, but the unexplained parts do not give the curve generators many bits of control'. In contrast, Monero uses a different elliptical curve called the Twisted Edwards curve (formally known as Curve25519):
Now the good news is...drumrolls...the Monero curve is fully rigid i.e., the curve generation process is fully open source.
Thats all folks! I'll be back soon with more citizen science of cryptography...