SLIDE 1
ECC minicourse Daniel J. Bernstein University of Illinois at Chicago Tanja Lange Technische Universiteit Eindhoven
SLIDE 2 January 2010 news: An academic team announces successful RSA-768 factorization. Used ✙ 2 years of computation
“Factoring a 1024-bit RSA modulus would be about a thousand times harder.”
SLIDE 3 January 2010 news: An academic team announces successful RSA-768 factorization. Used ✙ 2 years of computation
“Factoring a 1024-bit RSA modulus would be about a thousand times harder.” Many users of 1024-bit RSA: https://www.fnb.co.za, the root DNSSEC trial, etc. 2009 Kolkman et al.: “It is estimated that most zones can safely use 1024-bit keys for at least the next ten years.”
SLIDE 4
1000 cores in perspective: Typical laptop has 2 cores.
SLIDE 5
1000 cores in perspective: Typical laptop has 2 cores. A GTX 295 graphics card has 60 cores (“MPs”).
SLIDE 6
1000 cores in perspective: Typical laptop has 2 cores. A GTX 295 graphics card has 60 cores (“MPs”). EPFL’s 200-Playstation cluster has 1200 cores.
SLIDE 7
1000 cores in perspective: Typical laptop has 2 cores. A GTX 295 graphics card has 60 cores (“MPs”). EPFL’s 200-Playstation cluster has 1200 cores. Dan has an account on the TACC Ranger supercomputer, which has 62976 cores.
SLIDE 8
1000 cores in perspective: Typical laptop has 2 cores. A GTX 295 graphics card has 60 cores (“MPs”). EPFL’s 200-Playstation cluster has 1200 cores. Dan has an account on the TACC Ranger supercomputer, which has 62976 cores. The Conficker/Downadup criminal-controlled botnet has ✙ 10 000 000 cores.
SLIDE 9
2003 Shamir et al.: An attacker building ASICs for 10 million USD can break RSA-1024 in a year. 2003 RSA company: Move to 2048 bits “over the remainder of this decade.”
SLIDE 10
2003 Shamir et al.: An attacker building ASICs for 10 million USD can break RSA-1024 in a year. 2003 RSA company: Move to 2048 bits “over the remainder of this decade.” 2007 NIST: Same.
SLIDE 11
2003 Shamir et al.: An attacker building ASICs for 10 million USD can break RSA-1024 in a year. 2003 RSA company: Move to 2048 bits “over the remainder of this decade.” 2007 NIST: Same. Another big reason to worry: Attackers with more money can use batch algorithms that save time in breaking many keys together.
SLIDE 12 A 1024-bit RSA key is built from two secret 512-bit primes. There are ✙ 2503 possible 512-bit primes. Can’t imagine trying them all. But the attacks are much faster:
SLIDE 13 A 1024-bit RSA key is built from two secret 512-bit primes. There are ✙ 2503 possible 512-bit primes. Can’t imagine trying them all. But the attacks are much faster:
2048-bit key: 1024-bit primes; ✙ 21014 possible primes. Still below modern standards! Attacks: ✙ 2112 calculations.
SLIDE 14 A 1024-bit RSA key is built from two secret 512-bit primes. There are ✙ 2503 possible 512-bit primes. Can’t imagine trying them all. But the attacks are much faster:
2048-bit key: 1024-bit primes; ✙ 21014 possible primes. Still below modern standards! Attacks: ✙ 2112 calculations. 3072-bit key: 1536-bit primes; ✙ 21526 possible primes. Attacks: ✙ 2128 calculations.
SLIDE 15
Attacks use “index calculus” = “combining congruences.” Long history, including many major improvements: 1975, CFRAC; 1977, linear sieve (LS); 1982, quadratic sieve (QS); 1990, number-field sieve (NFS). Also many smaller improvements. Costs of these algorithms for breaking RSA-1024, RSA-2048: ✙ 2120, 2170, CFRAC; ✙ 2110, 2160, LS; ✙ 2100, 2150, QS; ✙ 280, 2112, NFS.
SLIDE 16
1977: RSA is introduced. 1985: Miller proposes switching from RSA to elliptic curves. Explains several obstacles to congruence-combination attacks on elliptic curves. Subsequent ECC history: Negligible security losses. Subsequent RSA history: Continued security losses from improved algorithms for combining congruences. Major loss in 1990 (NFS); many smaller losses since then.
SLIDE 17
256-bit ECC keys match security of 3072-bit RSA keys. When properly implemented, 256-bit ECC is much faster than 3072-bit RSA for almost all real-world applications. ANSI, IEEE, NIST issued ECC standards ten years ago. US government “Suite B” now prohibits RSA, requires ECC. For much more information see the Handbook of Elliptic and Hyperelliptic Curve Cryptography: www.hyperelliptic.org/HEHCC
SLIDE 18
Diffie-Hellman key exchange Uses public base, e.g. ❣ = 2, and prime, e.g. ♣ = 11. User ❆ picks random secret integer ❛, e.g. ❛ = 4, and computes ❤❆ = ❣❛ mod ♣, e.g. ❤❆ = 24 = 16 ✑ 5 mod 11. User ❇ picks random secret integer ❜, e.g. ❜ = 3, and computes ❤❇ = ❣❜ mod ♣, e.g. ❤❇ = 23 = 8 ✑ 8 mod 11.
SLIDE 19
Then ❆ sends ❤❆ to ❇ and ❇ sends ❤❇ to ❆. Finally ❆ computes ❤❇❛ mod ♣, e.g. for ♣ = 11: 84 = (82)2 = 642 ✑ (2)2 ✑ 4; and ❇ computes ❤❆❜ mod ♣, e.g. for ♣ = 11: 53 = (25) ✁ 5 ✑ 3 ✁ 5 ✑ 4. Both results are the same. No surprise since ❤❛
❇ = (❣❜)❛ = ❣❛❜ = (❣❛)❜ = ❤❜ ❆.
If ❛ and ❜ are secret then so is ❣❛❜; value can be used in symmetric crypto.
SLIDE 20
Problems The prime ♣ = 11 is too small: attacker can read off ❛ or ❜ and then imitate ❆ or ❇. Solution: use much larger primes. The exponent ❜ is too small: 8 = 23 over the integers. Solution: big ❛❀ ❜ so ❣❛❀ ❣❜ are much larger than ♣. This happens automatically for random ❛ and ❜ and large ♣. Biggest problem: Index calculus.
SLIDE 21 An adapted version
- f the index calculus method
works for any prime ♣. Also works for the generalization to finite fields Fq with q = ♣r. Solution: huge primes q ✙ ◆, where ◆ is an RSA modulus. No benefit compared to RSA?! Better solution: Alice and Bob did not actually use any property
- ther than ❣ is a generator of
a cyclic group. There are many cyclic groups.
SLIDE 22 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.”
SLIDE 23
Examples of points on this curve:
SLIDE 24
Examples of points on this curve: (0❀ 1) = “12:00”.
SLIDE 25
Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”.
SLIDE 26
Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”.
SLIDE 27
Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”. (1❀ 0) = “9:00”.
SLIDE 28
Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”. (1❀ 0) = “9:00”. ( ♣ 3❂4❀ 1❂2) =
SLIDE 29
Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”. (1❀ 0) = “9:00”. ( ♣ 3❂4❀ 1❂2) = “2:00”.
SLIDE 30
Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”. (1❀ 0) = “9:00”. ( ♣ 3❂4❀ 1❂2) = “2:00”. (1❂2❀ ♣ 3❂4) =
SLIDE 31
Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”. (1❀ 0) = “9:00”. ( ♣ 3❂4❀ 1❂2) = “2:00”. (1❂2❀ ♣ 3❂4) = “5:00”. (1❂2❀ ♣ 3❂4) =
SLIDE 32
Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”. (1❀ 0) = “9:00”. ( ♣ 3❂4❀ 1❂2) = “2:00”. (1❂2❀ ♣ 3❂4) = “5:00”. (1❂2❀ ♣ 3❂4) = “7:00”.
SLIDE 33
Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”. (1❀ 0) = “9:00”. ( ♣ 3❂4❀ 1❂2) = “2:00”. (1❂2❀ ♣ 3❂4) = “5:00”. (1❂2❀ ♣ 3❂4) = “7:00”. ( ♣ 1❂2❀ ♣ 1❂2) = “1:30”. (3❂5❀ 4❂5). (3❂5❀ 4❂5).
SLIDE 34
Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”. (1❀ 0) = “9:00”. ( ♣ 3❂4❀ 1❂2) = “2:00”. (1❂2❀ ♣ 3❂4) = “5:00”. (1❂2❀ ♣ 3❂4) = “7:00”. ( ♣ 1❂2❀ ♣ 1❂2) = “1:30”. (3❂5❀ 4❂5). (3❂5❀ 4❂5). (3❂5❀ 4❂5). (3❂5❀ 4❂5). (4❂5❀ 3❂5). (4❂5❀ 3❂5). (4❂5❀ 3❂5). (4❂5❀ 3❂5). Many more.
SLIDE 35 Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎
P2 = (①2❀ ②2) ✎
✎
- ①2 + ②2 = 1, parametrized by
① = sin ☛, ② = cos ☛.
SLIDE 36 Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎
P2 = (①2❀ ②2) ✎
✎
- ①2 + ②2 = 1, parametrized by
① = sin ☛, ② = cos ☛. Recall (sin(☛1 + ☛2)❀ cos(☛1 + ☛2)) =
SLIDE 37 Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎
P2 = (①2❀ ②2) ✎
✎
- ①2 + ②2 = 1, parametrized by
① = sin ☛, ② = cos ☛. Recall (sin(☛1 + ☛2)❀ cos(☛1 + ☛2)) = (sin ☛1 cos ☛2 + cos ☛1 sin ☛2❀
SLIDE 38 Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎
P2 = (①2❀ ②2) ✎
✎
- ①2 + ②2 = 1, parametrized by
① = sin ☛, ② = cos ☛. Recall (sin(☛1 + ☛2)❀ cos(☛1 + ☛2)) = (sin ☛1 cos ☛2 + cos ☛1 sin ☛2❀ cos ☛1 cos ☛2 sin ☛1 sin ☛2).
SLIDE 39
Adding two points corresponds to adding the angles ☛1 and ☛2. Angles modulo 360✍ are a group, so points on clock are a group. Neutral element: angle ☛ = 0; point (0❀ 1); “12:00”. The point with ☛ = 180✍ has order 2 and equals 6:00. 3:00 and 9:00 have order 4. Inverse of point with ☛ is point with ☛ since ☛ + (☛) = 0. There are many more points where angle ☛ is not “nice.”
SLIDE 40 Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎
✎
✎
- Use Cartesian coordinates for
- addition. Addition formula
for the clock ①2 + ②2 = 1: sum of (①1❀ ②1) and (①2❀ ②2) is (①1②2 + ②1①2❀ ②1②2 ①1①2).
SLIDE 41
Examples of clock addition: “2:00” + “5:00” = ( ♣ 3❂4❀ 1❂2) + (1❂2❀ ♣ 3❂4) = (1❂2❀ ♣ 3❂4) = “7:00”. “5:00” + “9:00” = (1❂2❀ ♣ 3❂4) + (1❀ 0) = ( ♣ 3❂4❀ 1❂2) = “2:00”. 2 ✒3 5❀ 4 5 ✓ = ✒24 25❀ 7 25 ✓ .
SLIDE 42
Examples of clock addition: “2:00” + “5:00” = ( ♣ 3❂4❀ 1❂2) + (1❂2❀ ♣ 3❂4) = (1❂2❀ ♣ 3❂4) = “7:00”. “5:00” + “9:00” = (1❂2❀ ♣ 3❂4) + (1❀ 0) = ( ♣ 3❂4❀ 1❂2) = “2:00”. 2 ✒3 5❀ 4 5 ✓ = ✒24 25❀ 7 25 ✓ . 3 ✒3 5❀ 4 5 ✓ = ✒117 125❀ 44 125 ✓ .
SLIDE 43
Examples of clock addition: “2:00” + “5:00” = ( ♣ 3❂4❀ 1❂2) + (1❂2❀ ♣ 3❂4) = (1❂2❀ ♣ 3❂4) = “7:00”. “5:00” + “9:00” = (1❂2❀ ♣ 3❂4) + (1❀ 0) = ( ♣ 3❂4❀ 1❂2) = “2:00”. 2 ✒3 5❀ 4 5 ✓ = ✒24 25❀ 7 25 ✓ . 3 ✒3 5❀ 4 5 ✓ = ✒117 125❀ 44 125 ✓ . 4 ✒3 5❀ 4 5 ✓ = ✒336 625❀ 527 625 ✓ .
SLIDE 44
Examples of clock addition: “2:00” + “5:00” = ( ♣ 3❂4❀ 1❂2) + (1❂2❀ ♣ 3❂4) = (1❂2❀ ♣ 3❂4) = “7:00”. “5:00” + “9:00” = (1❂2❀ ♣ 3❂4) + (1❀ 0) = ( ♣ 3❂4❀ 1❂2) = “2:00”. 2 ✒3 5❀ 4 5 ✓ = ✒24 25❀ 7 25 ✓ . 3 ✒3 5❀ 4 5 ✓ = ✒117 125❀ 44 125 ✓ . 4 ✒3 5❀ 4 5 ✓ = ✒336 625❀ 527 625 ✓ . (①1❀ ②1) + (0❀ 1) =
SLIDE 45
Examples of clock addition: “2:00” + “5:00” = ( ♣ 3❂4❀ 1❂2) + (1❂2❀ ♣ 3❂4) = (1❂2❀ ♣ 3❂4) = “7:00”. “5:00” + “9:00” = (1❂2❀ ♣ 3❂4) + (1❀ 0) = ( ♣ 3❂4❀ 1❂2) = “2:00”. 2 ✒3 5❀ 4 5 ✓ = ✒24 25❀ 7 25 ✓ . 3 ✒3 5❀ 4 5 ✓ = ✒117 125❀ 44 125 ✓ . 4 ✒3 5❀ 4 5 ✓ = ✒336 625❀ 527 625 ✓ . (①1❀ ②1) + (0❀ 1) = (①1❀ ②1).
SLIDE 46
Examples of clock addition: “2:00” + “5:00” = ( ♣ 3❂4❀ 1❂2) + (1❂2❀ ♣ 3❂4) = (1❂2❀ ♣ 3❂4) = “7:00”. “5:00” + “9:00” = (1❂2❀ ♣ 3❂4) + (1❀ 0) = ( ♣ 3❂4❀ 1❂2) = “2:00”. 2 ✒3 5❀ 4 5 ✓ = ✒24 25❀ 7 25 ✓ . 3 ✒3 5❀ 4 5 ✓ = ✒117 125❀ 44 125 ✓ . 4 ✒3 5❀ 4 5 ✓ = ✒336 625❀ 527 625 ✓ . (①1❀ ②1) + (0❀ 1) = (①1❀ ②1). (①1❀ ②1) + (①1❀ ②1) =
SLIDE 47
Examples of clock addition: “2:00” + “5:00” = ( ♣ 3❂4❀ 1❂2) + (1❂2❀ ♣ 3❂4) = (1❂2❀ ♣ 3❂4) = “7:00”. “5:00” + “9:00” = (1❂2❀ ♣ 3❂4) + (1❀ 0) = ( ♣ 3❂4❀ 1❂2) = “2:00”. 2 ✒3 5❀ 4 5 ✓ = ✒24 25❀ 7 25 ✓ . 3 ✒3 5❀ 4 5 ✓ = ✒117 125❀ 44 125 ✓ . 4 ✒3 5❀ 4 5 ✓ = ✒336 625❀ 527 625 ✓ . (①1❀ ②1) + (0❀ 1) = (①1❀ ②1). (①1❀ ②1) + (①1❀ ②1) = (0❀ 1).
SLIDE 48
Problems The coordinates show a clear growth; e.g. 625 = 54 clearly shows the scalar 4. Solution: Use modular reduction as in Diffie-Hellman example.
SLIDE 49
Clocks over finite fields ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎ ✎ ✎ ✎ ✎ Clock(F7) = ✟ (①❀ ②) ✷ F7 ✂ F7 : ①2 + ②2 = 1 ✠ . Here F7 = ❢0❀ 1❀ 2❀ 3❀ 4❀ 5❀ 6❣ = ❢0❀ 1❀ 2❀ 3❀ 3❀ 2❀ 1❣ with +❀ ❀ ✂ modulo 7.
SLIDE 50
Larger example: Clock(F1000003). Examples of clock addition: 2(1000❀ 2) = (4000❀ 7). 4(1000❀ 2) = (56000❀ 97). 8(1000❀ 2) = (863970❀ 18817). 16(1000❀ 2) = (549438❀ 156853). 17(1000❀ 2) = (951405❀ 877356). With 30 clock additions we computed ♥(1000❀ 2) = (947472❀ 736284) for some 6-digit ♥. Can you figure out ♥?
SLIDE 51
Clock cryptography Standardize a large prime ♣ and some (❳❀ ❨ ) ✷ Clock(F♣). Follow standard security criteria. Alice chooses big secret ❛. Computes her public key ❛(❳❀ ❨ ). Bob chooses big secret ❜. Computes his public key ❜(❳❀ ❨ ). Alice computes ❛(❜(❳❀ ❨ )). Bob computes ❜(❛(❳❀ ❨ )). They use this shared secret to encrypt with AES-GCM etc.
SLIDE 52 Alice’s secret key ❛
secret key ❜
public key ❛(❳❀ ❨ )
public key ❜(❳❀ ❨ )
shared secret ❛❜(❳❀ ❨ ) = ❢Bob❀ Alice❣’s shared secret ❜❛(❳❀ ❨ )
SLIDE 53 Alice’s secret key ❛
secret key ❜
public key ❛(❳❀ ❨ )
public key ❜(❳❀ ❨ )
shared secret ❛❜(❳❀ ❨ ) = ❢Bob❀ Alice❣’s shared secret ❜❛(❳❀ ❨ ) Warning: Clocks aren’t elliptic! Can attack clock cryptography by combining congruences. To match RSA-3072 security need ♣ ✙ 21536.
SLIDE 54
Exercise How many multiplications do you need to compute (①1②2 + ②1①2❀ ②1②2 ①1①2)? How many multiplications do you need to double a point, i.e. to compute (①1②1 + ②1①1❀ ②1②1 ①1①1)? How can you optimize the computation if squarings are cheaper than multiplications? Assume S ❁ M ❁ 2S.
SLIDE 55 Addition on an elliptic curve ② ①
✎ P1 = (①1❀ ②1) ✎
✎
✎
Sum of (①1❀ ②1) and (①2❀ ②2) is ((①1②2+②1①2)❂(130①1①2②1②2), (②1②2①1①2)❂(1+30①1①2②1②2)).
SLIDE 56 The clock again, for comparison: ② ①
✎ P1 = (①1❀ ②1) ✎
✎
✎
Sum of (①1❀ ②1) and (①2❀ ②2) is (①1②2 + ②1①2, ②1②2 ①1①2).
SLIDE 57
“Hey, there were divisions in the Edwards addition law! What if the denominators are 0?” Answer: They aren’t! If ①✐ = 0 or ②✐ = 0 then 1 ✝ 30①1①2②1②2 = 1 ✻= 0. If ①2 + ②2 = 1 30①2②2 then 30①2②2 ❁ 1 so ♣ 30 ❥①②❥ ❁ 1.
SLIDE 58
“Hey, there were divisions in the Edwards addition law! What if the denominators are 0?” Answer: They aren’t! If ①✐ = 0 or ②✐ = 0 then 1 ✝ 30①1①2②1②2 = 1 ✻= 0. If ①2 + ②2 = 1 30①2②2 then 30①2②2 ❁ 1 so ♣ 30 ❥①②❥ ❁ 1. If ①2
1 + ②2 1 = 1 30①2 1②2 1
and ①2
2 + ②2 2 = 1 30①2 2②2 2
then ♣ 30 ❥①1②1❥ ❁ 1 and ♣ 30 ❥①2②2❥ ❁ 1
SLIDE 59
“Hey, there were divisions in the Edwards addition law! What if the denominators are 0?” Answer: They aren’t! If ①✐ = 0 or ②✐ = 0 then 1 ✝ 30①1①2②1②2 = 1 ✻= 0. If ①2 + ②2 = 1 30①2②2 then 30①2②2 ❁ 1 so ♣ 30 ❥①②❥ ❁ 1. If ①2
1 + ②2 1 = 1 30①2 1②2 1
and ①2
2 + ②2 2 = 1 30①2 2②2 2
then ♣ 30 ❥①1②1❥ ❁ 1 and ♣ 30 ❥①2②2❥ ❁ 1 so 30 ❥①1②1①2②2❥ ❁ 1 so 1 ✝ 30①1①2②1②2 ❃ 0.
SLIDE 60
The Edwards addition law (①1❀ ②1) + (①2❀ ②2) = ((①1②2+②1①2)❂(130①1①2②1②2), (②1②2①1①2)❂(1+30①1①2②1②2)) is a group law for the curve ①2 + ②2 = 1 30①2②2. Some calculation required: addition result is on curve; addition law is associative. Other parts of proof are easy: addition law is commutative; (0❀ 1) is neutral element; (①1❀ ②1) + (①1❀ ②1) = (0❀ 1).
SLIDE 61
More Edwards curves Fix an odd prime power q. Fix a non-square ❞ ✷ Fq. ❢(①❀ ②) ✷ Fq ✂ Fq : ①2 + ②2 = 1 + ❞①2②2❣ is a commutative group with (①1❀ ②1) + (①2❀ ②2) = (①3❀ ②3) defined by Edwards addition law: ①3 = ①1②2 + ②1①2 1 + ❞①1①2②1②2 , ②3 = ②1②2 ①1①2 1 ❞①1①2②1②2 .
SLIDE 62
Denominators are never 0. But need different proof; “①2 + ②2 ❃ 0” doesn’t work.
SLIDE 63
Denominators are never 0. But need different proof; “①2 + ②2 ❃ 0” doesn’t work. If ①2
1 + ②2 1 = 1 + ❞①2 1②2 1
and ①2
2 + ②2 2 = 1 + ❞①2 2②2 2
and ❞①1①2②1②2 = ✝1
SLIDE 64
Denominators are never 0. But need different proof; “①2 + ②2 ❃ 0” doesn’t work. If ①2
1 + ②2 1 = 1 + ❞①2 1②2 1
and ①2
2 + ②2 2 = 1 + ❞①2 2②2 2
and ❞①1①2②1②2 = ✝1 then ❞①2
1②2 1(①2 + ②2)2
= ❞①2
1②2 1(①2 2 + ②2 2 + 2①2②2)
SLIDE 65
Denominators are never 0. But need different proof; “①2 + ②2 ❃ 0” doesn’t work. If ①2
1 + ②2 1 = 1 + ❞①2 1②2 1
and ①2
2 + ②2 2 = 1 + ❞①2 2②2 2
and ❞①1①2②1②2 = ✝1 then ❞①2
1②2 1(①2 + ②2)2
= ❞①2
1②2 1(①2 2 + ②2 2 + 2①2②2)
= ❞①2
1②2 1(❞①2 2②2 2 + 1 + 2①2②2)
SLIDE 66
Denominators are never 0. But need different proof; “①2 + ②2 ❃ 0” doesn’t work. If ①2
1 + ②2 1 = 1 + ❞①2 1②2 1
and ①2
2 + ②2 2 = 1 + ❞①2 2②2 2
and ❞①1①2②1②2 = ✝1 then ❞①2
1②2 1(①2 + ②2)2
= ❞①2
1②2 1(①2 2 + ②2 2 + 2①2②2)
= ❞①2
1②2 1(❞①2 2②2 2 + 1 + 2①2②2)
= ❞2①2
1②2 1①2 2②2 2+❞①2 1②2 1+2❞①2 1②2 1①2②2
SLIDE 67
Denominators are never 0. But need different proof; “①2 + ②2 ❃ 0” doesn’t work. If ①2
1 + ②2 1 = 1 + ❞①2 1②2 1
and ①2
2 + ②2 2 = 1 + ❞①2 2②2 2
and ❞①1①2②1②2 = ✝1 then ❞①2
1②2 1(①2 + ②2)2
= ❞①2
1②2 1(①2 2 + ②2 2 + 2①2②2)
= ❞①2
1②2 1(❞①2 2②2 2 + 1 + 2①2②2)
= ❞2①2
1②2 1①2 2②2 2+❞①2 1②2 1+2❞①2 1②2 1①2②2
= 1 + ❞①2
1②2 1 ✝ 2①1②1
SLIDE 68
Denominators are never 0. But need different proof; “①2 + ②2 ❃ 0” doesn’t work. If ①2
1 + ②2 1 = 1 + ❞①2 1②2 1
and ①2
2 + ②2 2 = 1 + ❞①2 2②2 2
and ❞①1①2②1②2 = ✝1 then ❞①2
1②2 1(①2 + ②2)2
= ❞①2
1②2 1(①2 2 + ②2 2 + 2①2②2)
= ❞①2
1②2 1(❞①2 2②2 2 + 1 + 2①2②2)
= ❞2①2
1②2 1①2 2②2 2+❞①2 1②2 1+2❞①2 1②2 1①2②2
= 1 + ❞①2
1②2 1 ✝ 2①1②1
= ①2
1 + ②2 1 ✝ 2①1②1
SLIDE 69
Denominators are never 0. But need different proof; “①2 + ②2 ❃ 0” doesn’t work. If ①2
1 + ②2 1 = 1 + ❞①2 1②2 1
and ①2
2 + ②2 2 = 1 + ❞①2 2②2 2
and ❞①1①2②1②2 = ✝1 then ❞①2
1②2 1(①2 + ②2)2
= ❞①2
1②2 1(①2 2 + ②2 2 + 2①2②2)
= ❞①2
1②2 1(❞①2 2②2 2 + 1 + 2①2②2)
= ❞2①2
1②2 1①2 2②2 2+❞①2 1②2 1+2❞①2 1②2 1①2②2
= 1 + ❞①2
1②2 1 ✝ 2①1②1
= ①2
1 + ②2 1 ✝ 2①1②1
= (①1 ✝ ②1)2.
SLIDE 70
Case 1: ①2 + ②2 ✻= 0. Then ❞ = ✒ ①1 ✝ ②1 ①1②1(①2 + ②2) ✓2 , contradiction.
SLIDE 71
Case 1: ①2 + ②2 ✻= 0. Then ❞ = ✒ ①1 ✝ ②1 ①1②1(①2 + ②2) ✓2 , contradiction. Case 2: ①2 ②2 ✻= 0. Then ❞ = ✒ ①1 ✞ ②1 ①1②1(①2 ②2) ✓2 , contradiction.
SLIDE 72
Case 1: ①2 + ②2 ✻= 0. Then ❞ = ✒ ①1 ✝ ②1 ①1②1(①2 + ②2) ✓2 , contradiction. Case 2: ①2 ②2 ✻= 0. Then ❞ = ✒ ①1 ✞ ②1 ①1②1(①2 ②2) ✓2 , contradiction. Case 3: ①2 + ②2 = ①2 ②2 = 0. Then ①2 = 0 and ②2 = 0, contradiction.
SLIDE 73
Group operations Can compute on Edwards curve, do Diffie–Hellman key exchange. Formulas use divisions. Denominators are nonzero but divisions are expensive. Better: postpone divisions and work with fractions. ❆ = ❩1 ✁ ❩2; ❇ = ❆2; ❈ = ❳1 ✁ ❳2; ❉ = ❨1 ✁ ❨2; ❊ = ❞ ✁ ❈ ✁ ❉; ❋ = ❇ ❊; ● = ❇ + ❊; ❳3 = ❆ ✁ ❋ ✁ ((❳1 + ❨1) ✁ (❳2 + ❨2) ❈ ❉); ❨3 = ❆ ✁ ● ✁ (❉ ❈); ❩3 = ❋ ✁ ●. Needs 1S+10M+1M❞.
SLIDE 74
Edwards curves are elliptic! Can use Edwards group in crypto. ✿ ✿ ✿ if it’s a “strong” curve. Need to compute group order. If no large prime factor in order, must switch to another ❞; this very often happens. Also check “twist security,” “embedding degree,” et al. IEEE Std 1363 is good source for most security criteria except twist security. Safe example, “Curve25519”: q = 2255 19; ❞ = 1 1❂121666.
SLIDE 75
Using ECC sensibly Typical starting point: Client knows secret key ❛ and server’s public key ❜(❳❀ ❨ ). Client computes (and caches) shared secret ❛❜(❳❀ ❨ ). Client has packet for server. Generates unique nonce. Uses shared secret to encrypt and authenticate packet. Total packet overhead: 24 bytes for nonce, 16 bytes for authenticator, 32 bytes for client’s public key.
SLIDE 76
Server receives packet, sees client’s public key ❛(❳❀ ❨ ). Server computes (and caches) shared secret ❛❜(❳❀ ❨ ). Server uses shared secret to verify authenticator and decrypt packet. Client and server encrypt, authenticate, verify, and decrypt all subsequent packets in the same way, using the same shared secret.
SLIDE 77 Easy-to-use packet protection: crypto_box from nacl.cace-project.eu. High-security curve (Curve25519). High-security implementation (e.g., no secret array indices). Extensive code validation. Server can compute shared secrets for 1000000 new clients in 40 seconds of computation
Now you are ready to run software using elliptic curves. But there is more to know.
SLIDE 78
More curves Can we use Edwards curve ①2 + ②2 = 1 + ❞①2②2 when ❞ is a square? ❞ = 0: Clock. Not very secure. ❞ = 1: Even worse problems. Other squares ❞: The Edwards curve is elliptic but it is not “complete.” Need “points at ✶.” These are the points where ① or ② has division by 0.
SLIDE 79 Example of how ✶ appears: Define ❞ = 4❂49 = (2❂7)2. (4❀ 7) is a point
(7❂8❀ 1❂2) is a point
Try adding these points: ①3 = 4 ✁ 1
2 7 ✁ 7 8
1 4
49 ✁ 4 ✁ 7 8 ✁ 7 ✁ 1 2
=
33 8
0 , ②3 = 7 ✁ 1
2 + 4 ✁ 7 8
1 + 4
49 ✁ 4 ✁ 7 8 ✁ 7 ✁ 1 2
= 7 2.
SLIDE 80
New definition of set of curve points when ❞ is a square: ✟ (①❀ ②) : ①2 + ②2 = 1 + ❞①2②2✠ ❬ ♥ (✝1❂ ♣ ❞❀ ✶) ♦ ❬ ♥ (✶❀ ✝1❂ ♣ ❞) ♦ .
SLIDE 81 Even more trouble: Again take ❞ = 4❂49 = (2❂7)2. (4❀ 7) is a point
(7❂8❀ 1❂2) is a point
Try adding these points: ①3 = 4 ✁ 1
2 + 7 ✁ 7 8
1 + 4
49 ✁ 4 ✁ 7 8 ✁ 7 ✁ 1 2
= 65 16, ②3 = 7 ✁ 1
2 4 ✁ 7 8
1 4
49 ✁ 4 ✁ 7 8 ✁ 7 ✁ 1 2
= 0 0.
SLIDE 82 Generalize addition law: Represent (①✐❀ ②✐) by (❳✐❂❩✐❀ ❨✐❂❚✐) and use (❳1❂❩1❀ ❨1❂❚1) + (❳2❂❩2❀ ❨2❂❚2) =
(❩1❩2❚1❚2 + ❞❳1❳2❨1❨2)❀ (❨1❨2❩1❩2 ❛❳1❳2❚1❚2)❂ (❩1❩2❚1❚2 ❞❳1❳2❨1❨2) ✁ if defined;
SLIDE 83
❳1❳2❚1❚2 + ❨1❨2❩1❩2), (❳1❨1❩2❚2 ❳2❨2❩1❚1)❂ (❳1❨2❩2❚1 ❳2❨1❩1❚2) ✁ if defined. Have shown in ePrint 2009/580 that at least one of these two expressions is defined for any pair
Have 2 addition laws to cover all inputs even in the incomplete case where ❞ is a square. As a designer can choose parameters and choose ❞ not to be a square.
SLIDE 84
The second law is interesting also outside the context of square values of ❞. Hisil et al. at Asiacrypt 2008 obtained better addition speed by using (①1❀ ②1) + (①2❀ ②2) = ①1②1+①2②2
①1①2+②1②2 ❀ ①1②1①2②2 ①1②2①2②1
✁ . Attention: these formulas fail for doubling. Curious fact: formulas do not involve curve parameter ❞
SLIDE 85
Twisted Edwards curves Generalization to cover more curves over given finite field Fq: Use ❛❀ ❞ ✷ F✄
q with ❛ ✻= ❞ and
consider twisted Edwards curve ❛①2 + ②2 = 1 + ❞①2②2. Particular fast choice: ❛ = 1 gives additions in 8M.
SLIDE 86 There are many perspectives on elliptic-curve computations. Early development: 1984 (published 1987) Lenstra: ECM, the elliptic-curve method
1984 (published 1985) Miller, and independently 1984 (published 1987) Koblitz: Elliptic-curve cryptography. Bosma, Goldwasser–Kilian, Chudnovsky–Chudnovsky, Atkin: elliptic-curve primality proving.
SLIDE 87
The Edwards perspective is new! 1761 Euler, 1866 Gauss introduced an addition law for ①2 + ②2 = 1 ①2②2, the “lemniscatic elliptic curve.” 2007 Edwards generalized to many curves ①2+②2 = 1+❝4①2②2. Theorem: have now obtained all elliptic curves over Q. 2007 Bernstein–Lange: Edwards addition law is complete for ①2 + ②2 = 1 + ❞①2②2 if ❞ ✻= ; and gives new ECC speed records.
SLIDE 88
Representing curve points Crypto 1985, Miller, “Use of elliptic curves in cryptography”: Given ♥ ✷ Z, P ✷ ❊(Fq), division-polynomial recurrence computes ♥P ✷ ❊(Fq) “in 26 log2 ♥ multiplications”; but can do better! “It appears to be best to represent the points on the curve in the following form: Each point is represented by the triple (①❀ ②❀ ③) which corresponds to the point (①❂③2❀ ②❂③3).”
SLIDE 89 1986 Chudnovsky–Chudnovsky, “Sequences of numbers generated by addition in formal groups and new primality and factorization tests”: “The crucial problem becomes the choice of the model
- f an algebraic group variety,
where computations mod ♣ are the least time consuming.” Most important computations: ADD is P❀ ◗ ✼✦ P + ◗. DBL is P ✼✦ 2P.
SLIDE 90 “It is preferable to use models of elliptic curves lying in low-dimensional spaces, for otherwise the number of coordinates and operations is
- increasing. This limits us ✿ ✿ ✿ to
4 basic models of elliptic curves.” Short Weierstrass: ②2 = ①3 + ❛① + ❜. Jacobi intersection: s2 + ❝2 = 1, ❛s2 + ❞2 = 1. Jacobi quartic: ②2 = ①4+2❛①2+1. Hessian: ①3 + ②3 + 1 = 3❞①②.
SLIDE 91 Some Newton polygons ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎
✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎
✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎
✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎
✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎ Edwards ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎ ✎ ✎ ✎ ✎
SLIDE 92 Birational equivalence Starting from point (①❀ ②)
Define ❆ = 2(1 + ❞)❂(1 ❞), ❇ = 4❂(1 ❞); ✉ = (1 + ②)❂(❇(1 ②)), ✈ = ✉❂① = (1 + ②)❂(❇①(1 ②)). (Skip a few exceptional points.) Then (✉❀ ✈) is a point on a long Weierstrass curve: ✈2 = ✉3 + (❆❂❇)✉2 + (1❂❇2)✉; Easily invert this map: ① = ✉❂✈, ② = (❇✉ 1)❂(❇✉ + 1). ✮ Same discrete-log security!
SLIDE 93 Optimizing Jacobian coordinates For “traditional” (❳❂❩2❀ ❨❂❩3)
1986 Chudnovsky–Chudnovsky state explicit formulas using 10M for DBL; 16M for ADD. Consequence: ✙ ✒ 10 lg ♥ + 16 lg ♥ lg lg ♥ ✓ M to compute ♥❀ P ✼✦ ♥P using sliding-windows method
Notation: lg = log2.
SLIDE 94
Squaring is faster than M. Here are the DBL formulas: ❙ = 4❳1 ✁ ❨ 2
1 ;
▼ = 3❳2
1 + ❛❩4 1;
❚ = ▼2 2❙; ❳3 = ❚; ❨3 = ▼ ✁ (❙ ❚) 8❨ 4
1 ;
❩3 = 2❨1 ✁ ❩1. Total cost 3M + 6S + 1D where S is the cost of squaring in Fq, D is the cost of multiplying by ❛. The squarings produce ❳2
1❀ ❨ 2 1 ❀ ❨ 4 1 ❀ ❩2 1❀ ❩4 1❀ ▼2.
SLIDE 95
Most ECC standards choose curves that make formulas faster. Curve-choice advice from 1986 Chudnovsky–Chudnovsky: Can eliminate the 1D by choosing curve with ❛ = 1. But “it is even smarter” to choose curve with ❛ = 3. If ❛ = 3 then ▼ = 3(❳2
1 ❩4 1)
= 3(❳1 ❩2
1) ✁ (❳1 + ❩2 1).
Replace 2S with 1M. Now DBL costs 4M + 4S.
SLIDE 96
2001 Bernstein: 3M + 5S for DBL. 11M + 5S for ADD. How? Easy S M tradeoff: instead of computing 2❨1 ✁ ❩1, compute (❨1 + ❩1)2 ❨ 2
1 ❩2 1.
DBL formulas were already computing ❨ 2
1 and ❩2 1.
Same idea for the ADD formulas, but have to scale ❳❀ ❨❀ ❩ to eliminate divisions by 2.
SLIDE 97
ADD for ②2 = ①3 + ❛① + ❜: ❯1 = ❳1❩2
2, ❯2 = ❳2❩2 1,
❙1 = ❨1❩3
2, ❙2 = ❨2❩3 1,
many more computations. 1986 Chudnovsky–Chudnovsky: “We suggest to write addition formulas involving (❳❀ ❨❀ ❩❀ ❩2❀ ❩3).” Disadvantages: Allocate space for ❩2❀ ❩3. Pay 1S+1M in ADD and in DBL. Advantages: Save 2S + 2M at start of ADD. Save 1S at start of DBL.
SLIDE 98
1998 Cohen–Miyaji–Ono: Store point as (❳ : ❨ : ❩). If point is input to ADD, also cache ❩2 and ❩3. No cost, aside from space. If point is input to another ADD, reuse ❩2❀ ❩3. Save 1S + 1M! Best Jacobian speeds today, including S M tradeoffs: 3M + 5S for DBL if ❛ = 3. 11M + 5S for ADD. 10M + 4S for reADD. 7M + 4S for mADD (i.e. ❩2 = 1).
SLIDE 99
Compare to speeds for Edwards curves ①2 + ②2 = 1 + ❞①2②2 in projective coordinates (2007 Bernstein–Lange): 3M + 4S for DBL. 10M + 1S + 1D for ADD. 9M + 1S + 1D for mADD. Inverted Edwards coordinates (2007 Bernstein–Lange): 3M + 4S + 1D for DBL. 9M + 1S + 1D for ADD. 8M + 1S + 1D for mADD. Even better speeds from extended/completed coordinates (2008 Hisil–Wong–Carter–Dawson).
SLIDE 100
②2 = ①3 0✿4① + 0✿7
SLIDE 101
SLIDE 102
①2 + ②2 = 1 300①2②2
SLIDE 103
SLIDE 104
SLIDE 105
SLIDE 106
SLIDE 107
SLIDE 108
SLIDE 109
Speed-oriented Jacobian standards 2000 IEEE “Std 1363” uses Weierstrass curves in Jacobian coordinates to “provide the fastest arithmetic on elliptic curves.” Also specifies a method of choosing curves ②2 = ①3 3① + ❜. 2000 NIST “FIPS 186–2” standardizes five such curves. 2005 NSA “Suite B” recommends two of the NIST curves as the only public-key cryptosystems for U.S. government use.
SLIDE 110
Projective for Weierstrass 1986 Chudnovsky–Chudnovsky: Speed up ADD by switching from (❳❂❩2❀ ❨❂❩3) to (❳❂❩❀ ❨❂❩). 7M + 3S for DBL if ❛ = 3. 12M + 2S for ADD. 12M + 2S for reADD. Option has been mostly ignored: DBL dominates in ECDH etc. But ADD dominates in some applications: e.g., batch signature verification.
SLIDE 111
Montgomery curves 1987 Montgomery: Use ❜②2 = ①3 + ❛①2 + ①. Choose small (❛ + 2)❂4. 2(①2❀ ②2) = (①4❀ ②4) ✮ ①4 = (①2
2 1)2
4①2(①2
2 + ❛①2 + 1).
(①3❀ ②3) (①2❀ ②2) = (①1❀ ②1), (①3❀ ②3) + (①2❀ ②2) = (①5❀ ②5) ✮ ①5 = (①2①3 1)2 ①1(①2 ①3)2 .
SLIDE 112
Represent (①❀ ②) as (❳:❩) satisfying ① = ❳❂❩. ❇ = (❳2 + ❩2)2, ❈ = (❳2 ❩2)2, ❉ = ❇ ❈, ❳4 = ❇ ✁ ❈, ❩4 = ❉ ✁ (❈ + ❉(❛ + 2)❂4) ✮ 2(❳2:❩2) = (❳4:❩4). (❳3:❩3) (❳2:❩2) = (❳1:❩1), ❊ = (❳3 ❩3) ✁ (❳2 + ❩2), ❋ = (❳3 + ❩3) ✁ (❳2 ❩2), ❳5 = ❩1 ✁ (❊ + ❋)2, ❩5 = ❳1 ✁ (❊ ❋)2 ✮ (❳3:❩3) + (❳2:❩2) = (❳5:❩5).
SLIDE 113
This representation does not allow ADD but it allows DADD, “differential addition”: ◗❀ ❘❀ ◗ ❘ ✼✦ ◗ + ❘. e.g. 2P❀ P❀ P ✼✦ 3P. e.g. 3P❀ 2P❀ P ✼✦ 5P. e.g. 6P❀ 5P❀ P ✼✦ 11P. 2M + 2S + 1D for DBL. 4M + 2S for DADD. Save 1M if ❩1 = 1. Easily compute ♥(❳1 : ❩1) using ✙ lg ♥ DBL, ✙ lg ♥ DADD. Almost as fast as Edwards ♥P. Relatively slow for ♠P + ♥◗ etc.
SLIDE 114 Doubling-oriented curves 2006 Doche–Icart–Kohel: Use ②2 = ①3 + ❛①2 + 16❛①. Choose small ❛. Use (❳ : ❨ : ❩ : ❩2) to represent (❳❂❩❀ ❨❂❩2). 3M + 4S + 2D for DBL. How? Factor DBL as ˆ ✬(✬) where ✬ is a 2-isogeny. 2007 Bernstein–Lange: 2M + 5S + 2D for DBL
SLIDE 115 12M + 5S + 1D for ADD. Slower ADD than other systems, typically outweighing benefit
But isogenies are useful. Example, 2005 Gaudry: fast DBL+DADD on Jacobians of genus-2 hyperelliptic curves, using similar factorization. Tricky but potentially helpful: tripling-oriented curves (see 2006 Doche–Icart–Kohel), double-base chains, ✿ ✿ ✿
SLIDE 116 Hessian curves Credited to Sylvester by 1986 Chudnovsky–Chudnovsky: (❳ : ❨ : ❩) represent (❳❂❩❀ ❨❂❩)
12M for ADD: ❳3 = ❨1❳2 ✁ ❨1❩2 ❩1❨2 ✁ ❳1❨2, ❨3 = ❳1❩2 ✁ ❳1❨2 ❨1❳2 ✁ ❩1❳2, ❩3 = ❩1❨2 ✁ ❩1❳2 ❳1❩2 ✁ ❨1❩2. 6M + 3S for DBL.
SLIDE 117
2001 Joye–Quisquater: 2(❳1 : ❨1 : ❩1) = (❩1 : ❳1 : ❨1) + (❨1 : ❩1 : ❳1) so can use ADD to double. “Unified addition formulas,” helpful against side channels. But need to permute inputs. 2009 Bernstein–Kohel–Lange: Easily avoid permutation! 2008 Hisil–Wong–Carter–Dawson: (❳ : ❨ : ❩ : ❳2 : ❨ 2 : ❩2 : 2❳❨ : 2❳❩ : 2❨ ❩). 6M + 6S for ADD. 3M + 6S for DBL.
SLIDE 118
①3 ②3 + 1 = 0✿3①②
SLIDE 119
SLIDE 120 Jacobi intersections 1986 Chudnovsky–Chudnovsky: (❙ : ❈ : ❉ : ❩) represent (❙❂❩❀ ❈❂❩❀ ❉❂❩) on s2 + ❝2 = 1, ❛s2 + ❞2 = 1. 14M + 2S + 1D for ADD. “Tremendous advantage”
- f being strongly unified.
5M + 3S for DBL. “Perhaps (?) ✿ ✿ ✿ the most efficient duplication formulas which do not depend on the coefficients of an elliptic curve.”
SLIDE 121
2001 Liardet–Smart: 13M + 2S + 1D for ADD. 4M + 3S for DBL. 2007 Bernstein–Lange: 3M + 4S for DBL. 2008 Hisil–Wong–Carter–Dawson: 13M + 1S + 2D for ADD. 2M + 5S + 1D for DBL. Also (❙ : ❈ : ❉ : ❩ : ❙❈ : ❉❩): 11M + 1S + 2D for ADD. 2M + 5S + 1D for DBL.
SLIDE 122 Jacobi quartics (❳:❨ :❩) represent (❳❂❩❀ ❨❂❩2)
1986 Chudnovsky–Chudnovsky: 3M + 6S + 2D for DBL. Slow ADD. 2002 Billet–Joye: New choice of neutral element. 10M + 3S + 1D for ADD, strongly unified. 2007 Bernstein–Lange: 1M + 9S + 1D for DBL.
SLIDE 123 2007 Hisil–Carter–Dawson: 2M + 6S + 2D for DBL. 2007 Feng–Wu: 2M + 6S + 1D for DBL. 1M + 7S + 3D for DBL
- n curves chosen with ❛2+❝2 = 1.
More speedups: 2007 Duquesne, 2007 Hisil–Carter–Dawson, 2008 Hisil–Wong–Carter–Dawson: use (❳ : ❨ : ❩ : ❳2 : ❩2)
- r (❳ : ❨ : ❩ : ❳2 : ❩2 : 2❳❩).
Can combine with Feng–Wu. Competitive with Edwards!
SLIDE 124
①2 = ②4 1✿9②2 + 1
SLIDE 125
SLIDE 126
SLIDE 127
SLIDE 128
SLIDE 129
SLIDE 130
SLIDE 131 More addition formulas Explicit-Formulas Database: hyperelliptic.org/EFD EFD has 581 computer-verified formulas and operation counts for ADD, DBL, etc. in 51 representations
- n 13 shapes of elliptic curves.
Not yet handled by computer: generality of curve shapes (e.g., Hessian order ✷ 3Z); complete addition algorithms (e.g., checking for ✶).