Introduction to ECC
- 1.Public-key cryptography based on the concept of elliptic curves over finite fields.
- 2.Smaller key size, relative to RSA.
- My PGP software uses a 2048-bit RSA (Rivest–Shamir–Adleman) key.
- To crack my PGP key, an attacker needs to expend the same amount of energy as bringing the Mediterranean sea to boil.
- My Ledger Nano X uses a 256-bit ECC key.
- To crack my Ledger Nano X key, an attacker needs to expend the same amount of energy as bringing all the water on Earth to boil.
- ECC offers 400 times more security with a key that is 8 times smaller.
- Schematically, with the current knowledge.
- Difficulty increases with larger curves.
- 3.Widely used for digital-signatures and key-exchange.
- Secures HTTPs connections (on modern browsers).
- google.com uses the elliptic curve secp256r1, with key-size of 256 bits.
- twitter.com uses RSA, with key-size of 2048 bits.
- 4.Military-grade technology ®
- Cryptography was once part of the United State Munitions List (USML).
Elliptic curve for the equation y² = x³ + ax + b
An elliptic curve follows the general equation of
Examples of various kinds of elliptic curves
An elliptic curve over a finite field.
For an elliptic curve to be used for meaningful cryptography, they should also have the following two properties:
- 1.Non-singularity → should not have cusps or points of self-intersections.
- 2.Projective → a line between two points will always intersect a third point.
Singularity in curves (ref. Wolfram MathWorld)
Projective property in elliptic curves
- Supports 256-bit integer math.
- Python simply regards everything as an unbounded number.
- Easy to read.
- Cryptographic algorithms should be secure even if the attacker can read them. Security should not be by obscurity.
- Good language to write reference implementations in. Ethereum's reference implementation is written in Python.
- Thanks to Python's magic methods, we can express finite field math using ordinary mathematical operators.
- You can get a lot of people excited about traditionally opaque technology, just by thinking in Python.