ECC minicourse Daniel J. Bernstein University of Illinois at - - PDF document

ecc minicourse daniel j bernstein university of illinois
SMART_READER_LITE
LIVE PREVIEW

ECC minicourse Daniel J. Bernstein University of Illinois at - - PDF document

ECC minicourse Daniel J. Bernstein University of Illinois at Chicago Tanja Lange Technische Universiteit Eindhoven January 2010 news: An academic team announces successful RSA-768 factorization. Used 2 years of computation on 1000 CPU


slide-1
SLIDE 1

ECC minicourse Daniel J. Bernstein University of Illinois at Chicago Tanja Lange Technische Universiteit Eindhoven

slide-2
SLIDE 2

January 2010 news: An academic team announces successful RSA-768 factorization. Used ✙ 2 years of computation

  • n ✙ 1000 CPU cores.

“Factoring a 1024-bit RSA modulus would be about a thousand times harder.”

slide-3
SLIDE 3

January 2010 news: An academic team announces successful RSA-768 factorization. Used ✙ 2 years of computation

  • n ✙ 1000 CPU cores.

“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
SLIDE 4

1000 cores in perspective: Typical laptop has 2 cores.

slide-5
SLIDE 5

1000 cores in perspective: Typical laptop has 2 cores. A GTX 295 graphics card has 60 cores (“MPs”).

slide-6
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
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
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
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
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
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
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:

  • nly ✙ 280 calculations.
slide-13
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:

  • nly ✙ 280 calculations.

2048-bit key: 1024-bit primes; ✙ 21014 possible primes. Still below modern standards! Attacks: ✙ 2112 calculations.

slide-14
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:

  • nly ✙ 280 calculations.

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
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
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
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
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
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
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
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
SLIDE 22

The clock ② ①

  • This is the curve ①2 + ②2 = 1.

Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.”

slide-23
SLIDE 23

Examples of points on this curve:

slide-24
SLIDE 24

Examples of points on this curve: (0❀ 1) = “12:00”.

slide-25
SLIDE 25

Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”.

slide-26
SLIDE 26

Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”.

slide-27
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
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
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
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
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
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
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
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
SLIDE 35

Addition on the clock: ② ①

  • neutral = (0❀ 1)

✎ P1 = (①1❀ ②1) ✎

  • ☛1

P2 = (①2❀ ②2) ✎

  • P3 = (①3❀ ②3)

  • ①2 + ②2 = 1, parametrized by

① = sin ☛, ② = cos ☛.

slide-36
SLIDE 36

Addition on the clock: ② ①

  • neutral = (0❀ 1)

✎ P1 = (①1❀ ②1) ✎

  • ☛1

P2 = (①2❀ ②2) ✎

  • P3 = (①3❀ ②3)

  • ①2 + ②2 = 1, parametrized by

① = sin ☛, ② = cos ☛. Recall (sin(☛1 + ☛2)❀ cos(☛1 + ☛2)) =

slide-37
SLIDE 37

Addition on the clock: ② ①

  • neutral = (0❀ 1)

✎ P1 = (①1❀ ②1) ✎

  • ☛1

P2 = (①2❀ ②2) ✎

  • P3 = (①3❀ ②3)

  • ①2 + ②2 = 1, parametrized by

① = sin ☛, ② = cos ☛. Recall (sin(☛1 + ☛2)❀ cos(☛1 + ☛2)) = (sin ☛1 cos ☛2 + cos ☛1 sin ☛2❀

slide-38
SLIDE 38

Addition on the clock: ② ①

  • neutral = (0❀ 1)

✎ P1 = (①1❀ ②1) ✎

  • ☛1

P2 = (①2❀ ②2) ✎

  • P3 = (①3❀ ②3)

  • ①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
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
SLIDE 40

Clock addition without sin, cos: ② ①

  • neutral = (0❀ 1)

✎ P1 = (①1❀ ②1) ✎

  • P2 = (①2❀ ②2)

  • P3 = (①3❀ ②3)

  • 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
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
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
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
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
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
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
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
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
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
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
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
SLIDE 52

Alice’s secret key ❛

  • Bob’s

secret key ❜

  • Alice’s

public key ❛(❳❀ ❨ )

  • Bob’s

public key ❜(❳❀ ❨ )

  • ❢Alice❀ Bob❣’s

shared secret ❛❜(❳❀ ❨ ) = ❢Bob❀ Alice❣’s shared secret ❜❛(❳❀ ❨ )

slide-53
SLIDE 53

Alice’s secret key ❛

  • Bob’s

secret key ❜

  • Alice’s

public key ❛(❳❀ ❨ )

  • Bob’s

public key ❜(❳❀ ❨ )

  • ❢Alice❀ Bob❣’s

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
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
SLIDE 55

Addition on an elliptic curve ② ①

  • neutral = (0❀ 1)

✎ P1 = (①1❀ ②1) ✎

  • P2 = (①2❀ ②2)

  • P3 = (①3❀ ②3)

  • ①2 + ②2 = 1 30①2②2.

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
SLIDE 56

The clock again, for comparison: ② ①

  • neutral = (0❀ 1)

✎ P1 = (①1❀ ②1) ✎

  • P2 = (①2❀ ②2)

  • P3 = (①3❀ ②3)

  • ①2 + ②2 = 1.

Sum of (①1❀ ②1) and (①2❀ ②2) is (①1②2 + ②1①2, ②1②2 ①1①2).

slide-57
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
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
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
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
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
SLIDE 62

Denominators are never 0. But need different proof; “①2 + ②2 ❃ 0” doesn’t work.

slide-63
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
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
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
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
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
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
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
SLIDE 70

Case 1: ①2 + ②2 ✻= 0. Then ❞ = ✒ ①1 ✝ ②1 ①1②1(①2 + ②2) ✓2 , contradiction.

slide-71
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
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
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
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
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
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
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

  • n a Core 2 Quad.

Now you are ready to run software using elliptic curves. But there is more to know.

slide-78
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
SLIDE 79

Example of how ✶ appears: Define ❞ = 4❂49 = (2❂7)2. (4❀ 7) is a point

  • n ①2 + ②2 = 1 + ❞①2②2.

(7❂8❀ 1❂2) is a point

  • n ①2 + ②2 = 1 + ❞①2②2.

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
SLIDE 80

New definition of set of curve points when ❞ is a square: ✟ (①❀ ②) : ①2 + ②2 = 1 + ❞①2②2✠ ❬ ♥ (✝1❂ ♣ ❞❀ ✶) ♦ ❬ ♥ (✶❀ ✝1❂ ♣ ❞) ♦ .

slide-81
SLIDE 81

Even more trouble: Again take ❞ = 4❂49 = (2❂7)2. (4❀ 7) is a point

  • n ①2 + ②2 = 1 + ❞①2②2.

(7❂8❀ 1❂2) is a point

  • n ①2 + ②2 = 1 + ❞①2②2.

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
SLIDE 82

Generalize addition law: Represent (①✐❀ ②✐) by (❳✐❂❩✐❀ ❨✐❂❚✐) and use (❳1❂❩1❀ ❨1❂❚1) + (❳2❂❩2❀ ❨2❂❚2) =

  • (❳1❨2❩2❚1 + ❳2❨1❩1❚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;

  • r
slide-83
SLIDE 83
  • ❳1❨1❩2❚2 + ❳2❨2❩1❚1❂

❳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

  • f input points.

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
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
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
SLIDE 86

There are many perspectives on elliptic-curve computations. Early development: 1984 (published 1987) Lenstra: ECM, the elliptic-curve method

  • f factoring integers.

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
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
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
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
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
SLIDE 91

Some Newton polygons ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎

  • Short Weierstrass

✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎

  • Montgomery

✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎

  • Jacobi quartic

✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎

  • Hessian

✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎ Edwards ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎ ✎ ✎ ✎ ✎

  • Binary Edwards
slide-92
SLIDE 92

Birational equivalence Starting from point (①❀ ②)

  • n ①2 + ②2 = 1 + ❞①2②2:

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
SLIDE 93

Optimizing Jacobian coordinates For “traditional” (❳❂❩2❀ ❨❂❩3)

  • n ②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

  • f scalar multiplication.

Notation: lg = log2.

slide-94
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
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
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
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
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
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
SLIDE 100

②2 = ①3 0✿4① + 0✿7

slide-101
SLIDE 101
slide-102
SLIDE 102

①2 + ②2 = 1 300①2②2

slide-103
SLIDE 103
slide-104
SLIDE 104
slide-105
SLIDE 105
slide-106
SLIDE 106
slide-107
SLIDE 107
slide-108
SLIDE 108
slide-109
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
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
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
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
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
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

  • n the same curves.
slide-115
SLIDE 115

12M + 5S + 1D for ADD. Slower ADD than other systems, typically outweighing benefit

  • f the very fast DBL.

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
SLIDE 116

Hessian curves Credited to Sylvester by 1986 Chudnovsky–Chudnovsky: (❳ : ❨ : ❩) represent (❳❂❩❀ ❨❂❩)

  • n ①3 + ②3 + 1 = 3❞①②.

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
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
SLIDE 118

①3 ②3 + 1 = 0✿3①②

slide-119
SLIDE 119
slide-120
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
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
SLIDE 122

Jacobi quartics (❳:❨ :❩) represent (❳❂❩❀ ❨❂❩2)

  • n ②2 = ①4 + 2❛①2 + 1.

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
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
SLIDE 124

①2 = ②4 1✿9②2 + 1

slide-125
SLIDE 125
slide-126
SLIDE 126
slide-127
SLIDE 127
slide-128
SLIDE 128
slide-129
SLIDE 129
slide-130
SLIDE 130
slide-131
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 ✶).