SLIDE 1
SafeCurves: choosing safe curves for elliptic-curve cryptography Daniel J. Bernstein University of Illinois at Chicago & Technische Universiteit Eindhoven Tanja Lange Technische Universiteit Eindhoven http://safecurves.cr.yp.to Cryptography Public-key signatures: e.g., RSA, DSA, ECDSA. Some uses: signed OS updates, SSL certificates, e-passports. Public-key encryption: e.g., RSA, DH, ECDH. Some uses: SSL key exchange, locked iPhone mail download. Secret-key encryption: e.g., AES, Salsa20. Some uses: disk encryption, bulk SSL encryption.
SLIDE 2 SafeCurves:
elliptic-curve cryptography
University of Illinois at Chicago & echnische Universiteit Eindhoven Lange echnische Universiteit Eindhoven http://safecurves.cr.yp.to Cryptography Public-key signatures: e.g., RSA, DSA, ECDSA. Some uses: signed OS updates, SSL certificates, e-passports. Public-key encryption: e.g., RSA, DH, ECDH. Some uses: SSL key exchange, locked iPhone mail download. Secret-key encryption: e.g., AES, Salsa20. Some uses: disk encryption, bulk SSL encryption. Why ECC? “Index calculus”: fastest metho to break Long histo many majo 1975, CFRA 1977, linea 1982, quadratic 1990, numb 1994, function-field 2006, medium-p 2013, ①q ① (FFS is not
SLIDE 3
curves for cryptography Bernstein Illinois at Chicago & Universiteit Eindhoven Universiteit Eindhoven http://safecurves.cr.yp.to Cryptography Public-key signatures: e.g., RSA, DSA, ECDSA. Some uses: signed OS updates, SSL certificates, e-passports. Public-key encryption: e.g., RSA, DH, ECDH. Some uses: SSL key exchange, locked iPhone mail download. Secret-key encryption: e.g., AES, Salsa20. Some uses: disk encryption, bulk SSL encryption. Why ECC? “Index calculus”: fastest method we to break original DH Long history, including many major improvements: 1975, CFRAC; 1977, linear sieve (LS); 1982, quadratic sie 1990, number-field 1994, function-field 2006, medium-prime 2013, ①q ① FFS. (FFS is not relevant
SLIDE 4
Chicago & Eindhoven Eindhoven http://safecurves.cr.yp.to Cryptography Public-key signatures: e.g., RSA, DSA, ECDSA. Some uses: signed OS updates, SSL certificates, e-passports. Public-key encryption: e.g., RSA, DH, ECDH. Some uses: SSL key exchange, locked iPhone mail download. Secret-key encryption: e.g., AES, Salsa20. Some uses: disk encryption, bulk SSL encryption. Why ECC? “Index calculus”: fastest method we know to break original DH and RSA. Long history, including many major improvements: 1975, CFRAC; 1977, linear sieve (LS); 1982, quadratic sieve (QS); 1990, number-field sieve (NFS); 1994, function-field sieve (FFS); 2006, medium-prime FFS/NFS; 2013, ①q ① FFS. (FFS is not relevant to RSA.)
SLIDE 5
Cryptography Public-key signatures: e.g., RSA, DSA, ECDSA. Some uses: signed OS updates, SSL certificates, e-passports. Public-key encryption: e.g., RSA, DH, ECDH. Some uses: SSL key exchange, locked iPhone mail download. Secret-key encryption: e.g., AES, Salsa20. Some uses: disk encryption, bulk SSL encryption. Why ECC? “Index calculus”: fastest method we know to break original DH and RSA. Long history, including many major improvements: 1975, CFRAC; 1977, linear sieve (LS); 1982, quadratic sieve (QS); 1990, number-field sieve (NFS); 1994, function-field sieve (FFS); 2006, medium-prime FFS/NFS; 2013, ①q ① FFS. (FFS is not relevant to RSA.)
SLIDE 6
Cryptography Public-key signatures: RSA, DSA, ECDSA. uses: signed OS updates, certificates, e-passports. Public-key encryption: RSA, DH, ECDH. uses: SSL key exchange, iPhone mail download. Secret-key encryption: AES, Salsa20. uses: disk encryption, SSL encryption. Why ECC? “Index calculus”: fastest method we know to break original DH and RSA. Long history, including many major improvements: 1975, CFRAC; 1977, linear sieve (LS); 1982, quadratic sieve (QS); 1990, number-field sieve (NFS); 1994, function-field sieve (FFS); 2006, medium-prime FFS/NFS; 2013, ①q ① FFS. (FFS is not relevant to RSA.) Also many ✙ 100 scientific Costs of breaking ✙ 2120, 2 ✙ 2110, 2 ✙ 2100, 2 ✙ 280, 2
SLIDE 7
signatures: ECDSA. signed OS updates, e-passports. encryption: ECDH. key exchange, mail download. encryption: 20. encryption, yption. Why ECC? “Index calculus”: fastest method we know to break original DH and RSA. Long history, including many major improvements: 1975, CFRAC; 1977, linear sieve (LS); 1982, quadratic sieve (QS); 1990, number-field sieve (NFS); 1994, function-field sieve (FFS); 2006, medium-prime FFS/NFS; 2013, ①q ① FFS. (FFS is not relevant to RSA.) Also many smaller ✙ 100 scientific pap Costs of these algo breaking RSA-1024, ✙ 2120, 2170, CFRA ✙ 2110, 2160, LS; ✙ 2100, 2150, QS; ✙ 280, 2112, NFS.
SLIDE 8
dates, rts. exchange, wnload. encryption, Why ECC? “Index calculus”: fastest method we know to break original DH and RSA. Long history, including many major improvements: 1975, CFRAC; 1977, linear sieve (LS); 1982, quadratic sieve (QS); 1990, number-field sieve (NFS); 1994, function-field sieve (FFS); 2006, medium-prime FFS/NFS; 2013, ①q ① FFS. (FFS is not relevant to RSA.) Also many smaller improvements: ✙ 100 scientific papers. Costs of these algorithms for breaking RSA-1024, RSA-2048: ✙ 2120, 2170, CFRAC; ✙ 2110, 2160, LS; ✙ 2100, 2150, QS; ✙ 280, 2112, NFS.
SLIDE 9
Why ECC? “Index calculus”: fastest method we know to break original DH and RSA. Long history, including many major improvements: 1975, CFRAC; 1977, linear sieve (LS); 1982, quadratic sieve (QS); 1990, number-field sieve (NFS); 1994, function-field sieve (FFS); 2006, medium-prime FFS/NFS; 2013, ①q ① FFS. (FFS is not relevant to RSA.) Also many smaller improvements: ✙ 100 scientific papers. Costs of these algorithms for breaking RSA-1024, RSA-2048: ✙ 2120, 2170, CFRAC; ✙ 2110, 2160, LS; ✙ 2100, 2150, QS; ✙ 280, 2112, NFS.
SLIDE 10 Why ECC? “Index calculus”: fastest method we know to break original DH and RSA. Long history, including many major improvements: 1975, CFRAC; 1977, linear sieve (LS); 1982, quadratic sieve (QS); 1990, number-field sieve (NFS); 1994, function-field sieve (FFS); 2006, medium-prime FFS/NFS; 2013, ①q ① FFS. (FFS is not relevant to RSA.) Also many smaller improvements: ✙ 100 scientific papers. Costs of these algorithms for breaking RSA-1024, RSA-2048: ✙ 2120, 2170, CFRAC; ✙ 2110, 2160, LS; ✙ 2100, 2150, QS; ✙ 280, 2112, NFS. 1986 Miller “Use of elliptic curves in cryptography”: “It is extremely unlikely that an ‘index calculus’ attack
- n the elliptic curve method
will ever be able to work.”
SLIDE 11 ECC? calculus”: method we know reak original DH and RSA. history, including major improvements: CFRAC; linear sieve (LS); quadratic sieve (QS); number-field sieve (NFS); function-field sieve (FFS); medium-prime FFS/NFS; ①q ① FFS. is not relevant to RSA.) Also many smaller improvements: ✙ 100 scientific papers. Costs of these algorithms for breaking RSA-1024, RSA-2048: ✙ 2120, 2170, CFRAC; ✙ 2110, 2160, LS; ✙ 2100, 2150, QS; ✙ 280, 2112, NFS. 1986 Miller “Use of elliptic curves in cryptography”: “It is extremely unlikely that an ‘index calculus’ attack
- n the elliptic curve method
will ever be able to work.” The clock ② ① This is the ① ② Warning: This is not “Elliptic ✻
SLIDE 12 calculus”: e know DH and RSA. including rovements: sieve (LS); sieve (QS); er-field sieve (NFS); function-field sieve (FFS); rime FFS/NFS; ①q ① FFS. relevant to RSA.) Also many smaller improvements: ✙ 100 scientific papers. Costs of these algorithms for breaking RSA-1024, RSA-2048: ✙ 2120, 2170, CFRAC; ✙ 2110, 2160, LS; ✙ 2100, 2150, QS; ✙ 280, 2112, NFS. 1986 Miller “Use of elliptic curves in cryptography”: “It is extremely unlikely that an ‘index calculus’ attack
- n the elliptic curve method
will ever be able to work.” The clock ② ①
② Warning: This is not an elliptic “Elliptic curve” ✻=
SLIDE 13 RSA. rovements: (QS); (NFS); (FFS); FFS/NFS; ①q ① RSA.) Also many smaller improvements: ✙ 100 scientific papers. Costs of these algorithms for breaking RSA-1024, RSA-2048: ✙ 2120, 2170, CFRAC; ✙ 2110, 2160, LS; ✙ 2100, 2150, QS; ✙ 280, 2112, NFS. 1986 Miller “Use of elliptic curves in cryptography”: “It is extremely unlikely that an ‘index calculus’ attack
- n the elliptic curve method
will ever be able to work.” The clock ② ①
- This is the curve ①2 + ②2 =
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.”
SLIDE 14 Also many smaller improvements: ✙ 100 scientific papers. Costs of these algorithms for breaking RSA-1024, RSA-2048: ✙ 2120, 2170, CFRAC; ✙ 2110, 2160, LS; ✙ 2100, 2150, QS; ✙ 280, 2112, NFS. 1986 Miller “Use of elliptic curves in cryptography”: “It is extremely unlikely that an ‘index calculus’ attack
- n the elliptic curve method
will ever be able to work.” The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.”
SLIDE 15 many smaller improvements: ✙ scientific papers.
reaking RSA-1024, RSA-2048: ✙ , 2170, CFRAC; ✙ , 2160, LS; ✙ , 2150, QS; ✙ 2112, NFS. Miller “Use of curves in cryptography”: extremely unlikely an ‘index calculus’ attack elliptic curve method ever be able to work.” The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” Examples
SLIDE 16 smaller improvements: ✙ papers. algorithms for RSA-1024, RSA-2048: ✙ CFRAC; ✙ LS; ✙ QS; ✙ NFS. “Use of cryptography”: unlikely calculus’ attack curve method to work.” The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” Examples of points
SLIDE 17 rovements: ✙ for RSA-2048: ✙ ✙ ✙ ✙ cryptography”: attack d The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” Examples of points on this curve:
SLIDE 18 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” Examples of points on this curve:
SLIDE 19 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” Examples of points on this curve: (0❀ 1) = “12:00”.
SLIDE 20 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”.
SLIDE 21 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”.
SLIDE 22 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” Examples of points on this curve: (0❀ 1) = “12:00”. (0❀ 1) = “6:00”. (1❀ 0) = “3:00”. (1❀ 0) = “9:00”.
SLIDE 23 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” 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 24 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” 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 25 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” 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 26 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” 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 27 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” 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 28 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” 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 29 The clock ② ①
- This is the curve ①2 + ②2 = 1.
Warning: This is not an elliptic curve. “Elliptic curve” ✻= “ellipse.” 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 30 clock ② ①
rning: not an elliptic curve. “Elliptic curve” ✻= “ellipse.” 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. Addition ② ① ❀ ✎ P ① ❀ ② ✎ ☛ P ① ❀ ② ✎ P ① ❀ ② ✎ ①2 + ②2 ① = sin ☛ ② ☛
SLIDE 31 ② ①
elliptic curve. ✻= “ellipse.” 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. Addition on the clo ② ①
❀ ✎ P ① ❀ ② ✎ ✂ ✂ ✂ ✂ ✂ ✂ ☛1 P ① ❀ ② ✎ ✐ ✐ ✐ ✐ ✐ P ① ❀ ② ✎ P P P P P ①2 + ②2 = 1, parametrized ① = sin ☛, ② = cos ☛
SLIDE 32 ② ① ① ② = 1. e. ✻ “ellipse.” 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. Addition on the clock: ② ①
✎ P1 = (① ❀ ② ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ☛1 P2 = ① ❀ ② ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (① ❀ ② ✎ P P P P P P P ①2 + ②2 = 1, parametrized b ① = sin ☛, ② = cos ☛.
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). (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. Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ☛1 P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①2 + ②2 = 1, parametrized by ① = sin ☛, ② = cos ☛.
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. Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ☛1 P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①2 + ②2 = 1, parametrized by ① = sin ☛, ② = cos ☛. Recall (sin(☛1 + ☛2)❀ cos(☛1 + ☛2)) =
SLIDE 35 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. Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ☛1 P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①2 + ②2 = 1, parametrized by ① = sin ☛, ② = cos ☛. Recall (sin(☛1 + ☛2)❀ cos(☛1 + ☛2)) = (sin ☛1 cos ☛2 + cos ☛1 sin ☛2❀
SLIDE 36 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. Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ☛1 P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①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 37 Examples of points on this curve: ❀ = “12:00”. ❀ 1) = “6:00”. ❀ = “3:00”. ❀ 0) = “9:00”. ♣ ❂ ❀ 1❂2) = “2:00”. ❂ ❀ ♣ 3❂4) = “5:00”. ❂ ❀ ♣ 3❂4) = “7:00”. ♣ ❂ ❀ ♣ 1❂2) = “1:30”. ❂ ❀ ❂5). (3❂5❀ 4❂5). ❂ ❀ 4❂5). (3❂5❀ 4❂5). ❂ ❀ ❂5). (4❂5❀ 3❂5). ❂ ❀ 3❂5). (4❂5❀ 3❂5). more. Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ☛1 P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①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). Clock addition ② ① ❀ ✎ P ① ❀ ② ✎ P ① ❀ ② ✎ P ① ❀ ② ✎ Use Cartesian addition. for the clo ① ② sum of (① ❀ ② ① ❀ ② (①1②2 + ② ① ❀ ② ② ① ①
SLIDE 38
❀ “12:00”. ❀ “6:00”. ❀ ❀ “9:00”. ♣ ❂ ❀ ❂ “2:00”. ❂ ❀ ♣ ❂ “5:00”. ❂ ❀ ♣ ❂ = “7:00”. ♣ ❂ ❀ ♣ ❂ “1:30”. ❂ ❀ ❂ ❂5❀ 4❂5). ❂ ❀ ❂ 3❂5❀ 4❂5). ❂ ❀ ❂ ❂5❀ 3❂5). ❂ ❀ ❂ 4❂5❀ 3❂5). Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ☛1 P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①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). Clock addition without ② ①
❀ ✎ P ① ❀ ② ✎ ✂ ✂ ✂ ✂ ✂ ✂ P ① ❀ ② ✎ ✐ ✐ ✐ ✐ ✐ P ① ❀ ② ✎ P P P P P Use Cartesian coordinates
for the clock ①2 + ② sum of (①1❀ ②1) and ① ❀ ② (①1②2 + ②1①2❀ ②1②2 ① ①
SLIDE 39 this curve: ❀ ❀ ❀ ❀ ♣ ❂ ❀ ❂ ❂ ❀ ♣ ❂ ❂ ❀ ♣ ❂ “7:00”. ♣ ❂ ❀ ♣ ❂ ❂ ❀ ❂ ❂ ❀ ❂ ❂ ❀ ❂ ❂ ❀ ❂5). ❂ ❀ ❂ ❂ ❀ ❂ ❂ ❀ ❂ ❂ ❀ ❂5). Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ☛1 P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①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). Clock addition without sin, cos: ② ①
✎ P1 = (① ❀ ② ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = ① ❀ ② ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (① ❀ ② ✎ P P P P P P P Use Cartesian coordinates fo
- addition. Addition formula
for the clock ①2 + ②2 = 1: sum of (①1❀ ②1) and (①2❀ ②2) (①1②2 + ②1①2❀ ②1②2 ①1①2).
SLIDE 40 Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ☛1 P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①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). Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P 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 Addition on the clock: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ ☛1 P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ① ②2 = 1, parametrized by ① sin ☛, ② = cos ☛. Recall ☛ + ☛2)❀ cos(☛1 + ☛2)) = ☛ cos ☛2 + cos ☛1 sin ☛2❀ ☛ cos ☛2 sin ☛1 sin ☛2). Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P 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). Examples “2:00” + = ( ♣ 3❂4❀ ❂ ❂ ❀ ♣ ❂ = (1❂2❀ ♣ ❂ “5:00” + = (1❂2❀ ♣ ❂ ❀ = ( ♣ 3❂4❀ ❂ 2 ✒3 5❀ 4 5 ✓ ✒ ❀ ✓
SLIDE 42 clock: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ☛ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P ① ② rametrized by ① ☛ ② cos ☛. Recall ☛ ☛ ❀ cos(☛1 + ☛2)) = ☛ ☛ cos ☛1 sin ☛2❀ ☛ ☛ sin ☛1 sin ☛2). Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P 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). Examples of clock “2:00” + “5:00” = ( ♣ 3❂4❀ 1❂2) + (1❂ ❀ ♣ ❂ = (1❂2❀ ♣ 3❂4) “5:00” + “9:00” = (1❂2❀ ♣ 3❂4) + ❀ = ( ♣ 3❂4❀ 1❂2) = “2:00”. 2 ✒3 5❀ 4 5 ✓ = ✒24 25❀ ✓
SLIDE 43 ② ① (0❀ 1) ✎ P (①1❀ ②1) ✎ ☛ P = (①2❀ ②2) ✎ P (①3❀ ②3) ✎ ① ② by ① ☛ ② ☛ ecall ☛ ☛ ❀ ☛ ☛ )) = ☛ ☛ ☛ ☛2❀ ☛ ☛ ☛ ☛2). Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P 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). Examples of clock addition: “2:00” + “5:00” = ( ♣ 3❂4❀ 1❂2) + (1❂2❀ ♣ 3❂ = (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 44 Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P 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). 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 45 Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P 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). 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 46 Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P 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). 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 47 Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P 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). 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 48 Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P 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). 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 49 Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P 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). 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 50 Clock addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P 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). 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 51 addition without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P Cartesian coordinates for
- addition. Addition formula
clock ①2 + ②2 = 1:
- f (①1❀ ②1) and (①2❀ ②2) is
① ② + ②1①2❀ ②1②2 ①1①2). 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). Clocks over ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎ ✎ ✎ ✎ ✎ Clock(F7 ✟ (①❀ ②) ✷ ✂ ① ② ✠ Here F7 ❢ ❀ ❀ ❀ ❀ ❀ ❀ ❣ = ❢0❀ 1❀ 2❀ ❀ ❀ ❀ ❣ with arit e.g. 2 ✁ 5 ❂
SLIDE 52 without sin, cos: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P
Addition formula ① + ②2 = 1: ① ❀ ② and (①2❀ ②2) is ① ② ② ① ❀ ② ②2 ①1①2). 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). Clocks over finite fields ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎ ✎ ✎ ✎ ✎ Clock(F7) = ✟ (①❀ ②) ✷ F7 ✂ F7 ① ② ✠ Here F7 = ❢0❀ 1❀ 2❀ ❀ ❀ ❀ ❣ = ❢0❀ 1❀ 2❀ 3❀ 3❀ ❀ ❣ with arithmetic mo e.g. 2 ✁ 5 = 3 and ❂
SLIDE 53
sin, cos: ② ① (0❀ 1) ✎ P (①1❀ ②1) ✎ P = (①2❀ ②2) ✎ P (①3❀ ②3) ✎ for ① ② ① ❀ ② ① ❀ ②2) is ① ② ② ① ❀ ② ② ① ① ). 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). Clocks over finite fields ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎ ✎ ✎ ✎ ✎ Clock(F7) = ✟ (①❀ ②) ✷ F7 ✂ F7 : ①2 + ②2 ✠ Here F7 = ❢0❀ 1❀ 2❀ 3❀ 4❀ 5❀ 6❣ = ❢0❀ 1❀ 2❀ 3❀ 3❀ 2❀ 1❣ with arithmetic modulo 7. e.g. 2 ✁ 5 = 3 and 3❂2 = 5 in
SLIDE 54
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). 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 arithmetic modulo 7. e.g. 2 ✁ 5 = 3 and 3❂2 = 5 in F7.
SLIDE 55 Examples of clock addition: + “5:00” ♣ 3❂4❀ 1❂2) + (1❂2❀ ♣ 3❂4) ❂2❀ ♣ 3❂4) = “7:00”. + “9:00” ❂2❀ ♣ 3❂4) + (1❀ 0) ♣ 3❂4❀ 1❂2) = “2:00”. ✒ ❀ 4 5 ✓ = ✒24 25❀ 7 25 ✓ . ✒ ❀ 4 5 ✓ = ✒117 125❀ 44 125 ✓ . ✒ ❀ 4 5 ✓ = ✒336 625❀ 527 625 ✓ . ① ❀ ② ) + (0❀ 1) = (①1❀ ②1). ① ❀ ② ) + (①1❀ ②1) = (0❀ 1). 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 arithmetic modulo 7. e.g. 2 ✁ 5 = 3 and 3❂2 = 5 in F7. Larger exa Examples
2(1000❀ 2) ❀
SLIDE 56 ck addition: ♣ ❂ ❀ ❂ (1❂2❀ ♣ 3❂4) ❂ ❀ ♣ ❂4) = “7:00”. ❂ ❀ ♣ ❂4) + (1❀ 0) ♣ ❂ ❀ ❂ “2:00”. ✒ ❀ ✓ ✒24 25❀ 7 25 ✓ . ✒ ❀ ✓ ✒117 125❀ 44 125 ✓ . ✒ ❀ ✓ ✒336 625❀ 527 625 ✓ . ① ❀ ② ❀ = (①1❀ ②1). ① ❀ ② ① ❀ ②1) = (0❀ 1). 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 arithmetic modulo 7. e.g. 2 ✁ 5 = 3 and 3❂2 = 5 in F7. Larger example: Clo Examples of addition
2(1000❀ 2) = (4000❀
SLIDE 57 addition: ♣ ❂ ❀ ❂ ❂ ❀ ♣ 3❂4) ❂ ❀ ♣ ❂ “7:00”. ❂ ❀ ♣ ❂ ❀ 0) ♣ ❂ ❀ ❂ ✒ ❀ ✓ ✒ ❀ ✓ ✒ ❀ ✓ ✒ ❀ ✓ . ✒ ❀ ✓ ✒ ❀ ✓ . ① ❀ ② ❀ ① ❀ ② ). ① ❀ ② ① ❀ ② ❀ 1). 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 arithmetic modulo 7. e.g. 2 ✁ 5 = 3 and 3❂2 = 5 in F7. Larger example: Clock(F1000003 Examples of addition
2(1000❀ 2) = (4000❀ 7).
SLIDE 58 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 arithmetic modulo 7. e.g. 2 ✁ 5 = 3 and 3❂2 = 5 in F7. Larger example: Clock(F1000003). Examples of addition
2(1000❀ 2) = (4000❀ 7).
SLIDE 59 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 arithmetic modulo 7. e.g. 2 ✁ 5 = 3 and 3❂2 = 5 in F7. Larger example: Clock(F1000003). Examples of addition
2(1000❀ 2) = (4000❀ 7). 4(1000❀ 2) = (56000❀ 97).
SLIDE 60 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 arithmetic modulo 7. e.g. 2 ✁ 5 = 3 and 3❂2 = 5 in F7. Larger example: Clock(F1000003). Examples of addition
2(1000❀ 2) = (4000❀ 7). 4(1000❀ 2) = (56000❀ 97). 8(1000❀ 2) = (863970❀ 18817).
SLIDE 61 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 arithmetic modulo 7. e.g. 2 ✁ 5 = 3 and 3❂2 = 5 in F7. Larger example: Clock(F1000003). Examples of addition
2(1000❀ 2) = (4000❀ 7). 4(1000❀ 2) = (56000❀ 97). 8(1000❀ 2) = (863970❀ 18817). 16(1000❀ 2) = (549438❀ 156853).
SLIDE 62 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 arithmetic modulo 7. e.g. 2 ✁ 5 = 3 and 3❂2 = 5 in F7. Larger example: Clock(F1000003). Examples of 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).
SLIDE 63 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 arithmetic modulo 7. e.g. 2 ✁ 5 = 3 and 3❂2 = 5 in F7. Larger example: Clock(F1000003). Examples of 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). “Scalar multiplication”
Given integer ♥ ✕ 0 and clock point (①❀ ②), compute ♥(①❀ ②).
SLIDE 64
✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎ ✎ ✎ ✎ ✎ F7) = ✟ ①❀ ②) ✷ F7 ✂ F7 : ①2 + ②2 = 1 ✠ .
7 = ❢0❀ 1❀ 2❀ 3❀ 4❀ 5❀ 6❣
❢ ❀ 1❀ 2❀ 3❀ 3❀ 2❀ 1❣ rithmetic modulo 7. ✁ 5 = 3 and 3❂2 = 5 in F7. Larger example: Clock(F1000003). Examples of 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). “Scalar multiplication”
Given integer ♥ ✕ 0 and clock point (①❀ ②), compute ♥(①❀ ②). “Binary If ♥ is even, ♥ ①❀ ② by doubling ♥❂ ①❀ ② Otherwise ♥ ①❀ ② by adding ①❀ ② ♥ ①❀ ② This is very
SLIDE 65 ite fields ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎ ✎ ✎ ✎ ✎ ✟ ①❀ ② ✷ ✂
7 : ①2 + ②2 = 1
✠ . ❢ ❀ ❀ 2❀ 3❀ 4❀ 5❀ 6❣ ❢ ❀ ❀ ❀ ❀ ❀ 2❀ 1❣ modulo 7. ✁ and 3❂2 = 5 in F7. Larger example: Clock(F1000003). Examples of 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). “Scalar multiplication”
Given integer ♥ ✕ 0 and clock point (①❀ ②), compute ♥(①❀ ②). “Binary method”: If ♥ is even, compute ♥ ①❀ ② by doubling (♥❂2)(①❀ ② Otherwise compute ♥ ①❀ ② by adding (①❀ ②) to ♥ ①❀ ② This is very fast.
SLIDE 66 ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✎ ✎ ✎ ✎ ✎ ✎ ✎ ✎ ✟ ①❀ ② ✷ ✂ ① ②2 = 1 ✠ . ❢ ❀ ❀ ❀ ❀ ❀ ❀ 6❣ ❢ ❀ ❀ ❀ ❀ ❀ ❀ ❣ ✁ ❂ in F7. Larger example: Clock(F1000003). Examples of 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). “Scalar multiplication”
Given integer ♥ ✕ 0 and clock point (①❀ ②), compute ♥(①❀ ②). “Binary method”: If ♥ is even, compute ♥(①❀ ② by doubling (♥❂2)(①❀ ②). Otherwise compute ♥(①❀ ②) by adding (①❀ ②) to (♥ 1)(①❀ ② This is very fast.
SLIDE 67 Larger example: Clock(F1000003). Examples of 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). “Scalar multiplication”
Given integer ♥ ✕ 0 and clock point (①❀ ②), compute ♥(①❀ ②). “Binary method”: If ♥ is even, compute ♥(①❀ ②) by doubling (♥❂2)(①❀ ②). Otherwise compute ♥(①❀ ②) by adding (①❀ ②) to (♥ 1)(①❀ ②). This is very fast.
SLIDE 68 Larger example: Clock(F1000003). Examples of 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). “Scalar multiplication”
Given integer ♥ ✕ 0 and clock point (①❀ ②), compute ♥(①❀ ②). “Binary method”: If ♥ is even, compute ♥(①❀ ②) by doubling (♥❂2)(①❀ ②). Otherwise compute ♥(①❀ ②) by adding (①❀ ②) to (♥ 1)(①❀ ②). This is very fast. But figuring out ♥ given (①❀ ②) and ♥(①❀ ②) is much more difficult. With 30 clock additions we computed ♥(1000❀ 2) = (947472❀ 736284) for some 6-digit ♥. Can you figure out ♥?
SLIDE 69
example: Clock(F1000003). Examples of addition ck(F1000003): ❀ 2) = (4000❀ 7). ❀ 2) = (56000❀ 97). ❀ 2) = (863970❀ 18817). 16(1000❀ 2) = (549438❀ 156853). 17(1000❀ 2) = (951405❀ 877356). r multiplication” clock: integer ♥ ✕ 0 clock point (①❀ ②), compute ♥(①❀ ②). “Binary method”: If ♥ is even, compute ♥(①❀ ②) by doubling (♥❂2)(①❀ ②). Otherwise compute ♥(①❀ ②) by adding (①❀ ②) to (♥ 1)(①❀ ②). This is very fast. But figuring out ♥ given (①❀ ②) and ♥(①❀ ②) is much more difficult. With 30 clock additions we computed ♥(1000❀ 2) = (947472❀ 736284) for some 6-digit ♥. Can you figure out ♥? Clock cryptography Standardize ♣ and some ①❀ ② ✷
♣
Alice cho ❛ Computes ❛ ①❀ ② Bob cho ❜ Computes ❜ ①❀ ② Alice computes ❛ ❜ ①❀ ② Bob computes ❜ ❛ ①❀ ② They use to encrypt Warning Many choices ♣
SLIDE 70
Clock(F1000003). addition
1000003):
❀ (4000❀ 7). ❀ (56000❀ 97). ❀ (863970❀ 18817). ❀ (549438❀ 156853). ❀ (951405❀ 877356). multiplication” ♥ ✕ 0 (①❀ ②), ♥ ①❀ ②). “Binary method”: If ♥ is even, compute ♥(①❀ ②) by doubling (♥❂2)(①❀ ②). Otherwise compute ♥(①❀ ②) by adding (①❀ ②) to (♥ 1)(①❀ ②). This is very fast. But figuring out ♥ given (①❀ ②) and ♥(①❀ ②) is much more difficult. With 30 clock additions we computed ♥(1000❀ 2) = (947472❀ 736284) for some 6-digit ♥. Can you figure out ♥? Clock cryptography Standardize a large ♣ and some (①❀ ②) ✷
♣
Alice chooses big secret ❛ Computes her public ❛ ①❀ ② Bob chooses big secret ❜ Computes his public ❜ ①❀ ② Alice computes ❛(❜ ①❀ ② Bob computes ❜(❛ ①❀ ② They use this shared to encrypt with AES-GCM Warning #1: Many choices of ♣
SLIDE 71
1000003).
❀ ❀ ❀ ❀ ❀ ❀ 18817). ❀ ❀ 156853). ❀ ❀ 877356). ♥ ✕ ①❀ ② ♥ ①❀ ② “Binary method”: If ♥ is even, compute ♥(①❀ ②) by doubling (♥❂2)(①❀ ②). Otherwise compute ♥(①❀ ②) by adding (①❀ ②) to (♥ 1)(①❀ ②). This is very fast. But figuring out ♥ given (①❀ ②) and ♥(①❀ ②) is much more difficult. With 30 clock additions we computed ♥(1000❀ 2) = (947472❀ 736284) for some 6-digit ♥. Can you figure out ♥? Clock cryptography Standardize a large prime ♣ and some (①❀ ②) ✷ Clock(F♣). 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. Warning #1: Many choices of ♣ are bad!
SLIDE 72
“Binary method”: If ♥ is even, compute ♥(①❀ ②) by doubling (♥❂2)(①❀ ②). Otherwise compute ♥(①❀ ②) by adding (①❀ ②) to (♥ 1)(①❀ ②). This is very fast. But figuring out ♥ given (①❀ ②) and ♥(①❀ ②) is much more difficult. With 30 clock additions we computed ♥(1000❀ 2) = (947472❀ 736284) for some 6-digit ♥. Can you figure out ♥? Clock cryptography Standardize a large prime ♣ and some (①❀ ②) ✷ Clock(F♣). 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. Warning #1: Many choices of ♣ are bad!
SLIDE 73 ry method”: ♥ even, compute ♥(①❀ ②) bling (♥❂2)(①❀ ②). Otherwise compute ♥(①❀ ②) ding (①❀ ②) to (♥ 1)(①❀ ②). very fast. figuring out ♥ (①❀ ②) and ♥(①❀ ②) much more difficult. 30 clock additions computed ♥(1000❀ 2) = (947472❀ 736284)
- me 6-digit ♥.
- u figure out ♥?
Clock cryptography Standardize a large prime ♣ and some (①❀ ②) ✷ Clock(F♣). 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. Warning #1: Many choices of ♣ are bad! Alice’s secret ❛
Alice’s public ❛(①❀ ② ❜ ①❀ ② ❢Alice❀ Bob❣ shared ❛❜(①❀ ② ❢ ❀ ❣ ❜❛ ①❀ ②
SLIDE 74 d”: ♥ compute ♥(①❀ ②) ♥❂2)(①❀ ②). mpute ♥(①❀ ②) ①❀ ② to (♥ 1)(①❀ ②). fast. ♥ ①❀ ② ♥(①❀ ②) difficult. additions ♥ ❀ (947472❀ 736284) ♥.
Clock cryptography Standardize a large prime ♣ and some (①❀ ②) ✷ Clock(F♣). 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. Warning #1: Many choices of ♣ are bad! Alice’s secret key ❛
Alice’s public key ❛(①❀ ②) ▲ ▲ ▲ ▲ ▲ ▲ ❜ ①❀ ② rrrr ❢Alice❀ Bob❣’s shared secret ❛❜(①❀ ②) = ❢ ❀ ❣ ❜❛ ①❀ ②
SLIDE 75 ♥ ♥ ①❀ ②) ♥❂ ①❀ ② ♥ ①❀ ②) ①❀ ② ♥ 1)(①❀ ②). ♥ ①❀ ② ♥ ①❀ ② ♥ ❀ ❀ 736284) ♥ ♥ Clock cryptography Standardize a large prime ♣ and some (①❀ ②) ✷ Clock(F♣). 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. Warning #1: Many choices of ♣ are bad! Alice’s secret key ❛
secret k ❜
public key ❛(①❀ ②)
▲ ▲ ▲ ▲ ▲ ▲ Bob’s public ❜(①❀ ② rrrrrrr ❢Alice❀ Bob❣’s shared secret ❛❜(①❀ ②) = ❢Bob❀ Alice❣ shared s ❜❛(①❀ ②
SLIDE 76 Clock cryptography Standardize a large prime ♣ and some (①❀ ②) ✷ Clock(F♣). 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. Warning #1: Many choices of ♣ are bad! Alice’s secret key ❛
secret key ❜
public key ❛(①❀ ②)
▲ ▲ ▲ ▲ ▲ ▲ Bob’s public key ❜(①❀ ②) rrrrrrr ❢Alice❀ Bob❣’s shared secret ❛❜(①❀ ②) = ❢Bob❀ Alice❣’s shared secret ❜❛(①❀ ②)
SLIDE 77 Clock cryptography Standardize a large prime ♣ and some (①❀ ②) ✷ Clock(F♣). 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. Warning #1: Many choices of ♣ are bad! Alice’s secret key ❛
secret key ❜
public key ❛(①❀ ②)
▲ ▲ ▲ ▲ ▲ ▲ Bob’s public key ❜(①❀ ②) rrrrrrr ❢Alice❀ Bob❣’s shared secret ❛❜(①❀ ②) = ❢Bob❀ Alice❣’s shared secret ❜❛(①❀ ②) Warning #2: Clocks aren’t elliptic! Can use index calculus to attack clock cryptography. To match RSA-3072 security need ♣ ✙ 21536.
SLIDE 78 cryptography Standardize a large prime ♣ some (①❀ ②) ✷ Clock(F♣). chooses big secret ❛. Computes her public key ❛(①❀ ②). chooses big secret ❜. Computes his public key ❜(①❀ ②). computes ❛(❜(①❀ ②)). computes ❜(❛(①❀ ②)). use this shared secret encrypt with AES-GCM etc. rning #1: choices of ♣ are bad! Alice’s secret key ❛
secret key ❜
public key ❛(①❀ ②)
▲ ▲ ▲ ▲ ▲ ▲ Bob’s public key ❜(①❀ ②) rrrrrrr ❢Alice❀ Bob❣’s shared secret ❛❜(①❀ ②) = ❢Bob❀ Alice❣’s shared secret ❜❛(①❀ ②) Warning #2: Clocks aren’t elliptic! Can use index calculus to attack clock cryptography. To match RSA-3072 security need ♣ ✙ 21536. Timing attacks Attacker ❛(①❀ ②) and ❜ ①❀ ② Attacker Alice to ❛ ❜ ①❀ ② Often attack time for performed not just This reveals ❛ Fix: constant-time performing no matter
SLIDE 79 cryptography rge prime ♣ ①❀ ② ✷ Clock(F♣). big secret ❛. public key ❛(①❀ ②). secret ❜. public key ❜(①❀ ②). ❛(❜(①❀ ②)). ❜(❛(①❀ ②)). shared secret AES-GCM etc. ♣ are bad! Alice’s secret key ❛
secret key ❜
public key ❛(①❀ ②)
▲ ▲ ▲ ▲ ▲ ▲ Bob’s public key ❜(①❀ ②) rrrrrrr ❢Alice❀ Bob❣’s shared secret ❛❜(①❀ ②) = ❢Bob❀ Alice❣’s shared secret ❜❛(①❀ ②) Warning #2: Clocks aren’t elliptic! Can use index calculus to attack clock cryptography. To match RSA-3072 security need ♣ ✙ 21536. Timing attacks Attacker sees more ❛(①❀ ②) and ❜(①❀ ②). Attacker sees time Alice to compute ❛ ❜ ①❀ ② Often attacker can time for each operation performed by Alice, not just total time. This reveals secret ❛ Fix: constant-time performing same op no matter what scala
SLIDE 80 ♣ ①❀ ② ✷
♣).
❛. ❛(①❀ ②). ❜ ❜(①❀ ②). ❛ ❜ ①❀ ②)). ❜ ❛ ①❀ ② cret etc. ♣ ad! Alice’s secret key ❛
secret key ❜
public key ❛(①❀ ②)
▲ ▲ ▲ ▲ ▲ ▲ Bob’s public key ❜(①❀ ②) rrrrrrr ❢Alice❀ Bob❣’s shared secret ❛❜(①❀ ②) = ❢Bob❀ Alice❣’s shared secret ❜❛(①❀ ②) Warning #2: Clocks aren’t elliptic! Can use index calculus to attack clock cryptography. To match RSA-3072 security need ♣ ✙ 21536. Timing attacks Attacker sees more than ❛(①❀ ②) and ❜(①❀ ②). Attacker sees time for Alice to compute ❛(❜(①❀ ②)). Often attacker can see time for each operation performed by Alice, not just total time. This reveals secret ❛. Fix: constant-time code, performing same operations no matter what scalar is.
SLIDE 81 Alice’s secret key ❛
secret key ❜
public key ❛(①❀ ②)
▲ ▲ ▲ ▲ ▲ ▲ Bob’s public key ❜(①❀ ②) rrrrrrr ❢Alice❀ Bob❣’s shared secret ❛❜(①❀ ②) = ❢Bob❀ Alice❣’s shared secret ❜❛(①❀ ②) Warning #2: Clocks aren’t elliptic! Can use index calculus to attack clock cryptography. To match RSA-3072 security need ♣ ✙ 21536. Timing attacks Attacker sees more than ❛(①❀ ②) and ❜(①❀ ②). Attacker sees time for Alice to compute ❛(❜(①❀ ②)). Often attacker can see time for each operation performed by Alice, not just total time. This reveals secret ❛. Fix: constant-time code, performing same operations no matter what scalar is.
SLIDE 82 Alice’s secret key ❛
secret key ❜
public key ❛ ①❀ ②)
▲ ▲ ▲ ▲ ▲ ▲ Bob’s public key ❜(①❀ ②) rrrrrrr ❢Alice❀ Bob❣’s red secret ❛❜(①❀ ②) = ❢Bob❀ Alice❣’s shared secret ❜❛(①❀ ②) rning #2: aren’t elliptic! use index calculus attack clock cryptography. match RSA-3072 security ♣ ✙ 21536. Timing attacks Attacker sees more than ❛(①❀ ②) and ❜(①❀ ②). Attacker sees time for Alice to compute ❛(❜(①❀ ②)). Often attacker can see time for each operation performed by Alice, not just total time. This reveals secret ❛. Fix: constant-time code, performing same operations no matter what scalar is. Addition ② ① ❀ ✎ P ① ❀ ② ✎ P ① ❀ ② ✎ P ① ❀ ② ✎ ①2 + ②2
Sum of (① ❀ ② ① ❀ ② ((①1②2+② ① ❂
(②1②2① ① ❂ ① ① ② ②
SLIDE 83 ❛ Bob’s secret key ❜
▲ ▲ Bob’s public key ❜(①❀ ②) rrrr ❢ ❀ ❣ ❛❜ ①❀ ② = ❢Bob❀ Alice❣’s shared secret ❜❛(①❀ ②) elliptic! calculus cryptography. RSA-3072 security ♣ ✙ Timing attacks Attacker sees more than ❛(①❀ ②) and ❜(①❀ ②). Attacker sees time for Alice to compute ❛(❜(①❀ ②)). Often attacker can see time for each operation performed by Alice, not just total time. This reveals secret ❛. Fix: constant-time code, performing same operations no matter what scalar is. Addition on an elliptic ② ①
❀ ✎ P ① ❀ ② ✎ ☞ ☞ ☞ ☞ P ① ❀ ② ✎ ❢ ❢ ❢ ❢ P ① ❀ ② ✎ ❬ ❬ ❬ ❬ ①2 + ②2 = 1 30① ② Sum of (①1❀ ②1) and ① ❀ ② ((①1②2+②1①2)❂(1 ① ① ② ② (②1②2①1①2)❂(1+30① ① ② ②
SLIDE 84 ❛ Bob’s secret key ❜
Bob’s public key ❜ ①❀ ②) ❢ ❀ ❣ ❛❜ ①❀ ② ❢ ❀ Alice❣’s secret ❜❛ ①❀ ②) cryptography. security ♣ ✙ Timing attacks Attacker sees more than ❛(①❀ ②) and ❜(①❀ ②). Attacker sees time for Alice to compute ❛(❜(①❀ ②)). Often attacker can see time for each operation performed by Alice, not just total time. This reveals secret ❛. Fix: constant-time code, performing same operations no matter what scalar is. Addition on an elliptic curve ② ①
✎ P1 = (①1❀ ② ✎ ☞ ☞ ☞ ☞ P2 = (① ❀ ② ✎ ❢ ❢ ❢ ❢ ❢ P3 = (① ❀ ② ✎ ❬ ❬ ❬ ❬ ❬ ❬ ①2 + ②2 = 1 30①2②2. Sum of (①1❀ ②1) and (①2❀ ②2) ((①1②2+②1①2)❂(130①1①2②1② (②1②2①1①2)❂(1+30①1①2②1②
SLIDE 85 Timing attacks Attacker sees more than ❛(①❀ ②) and ❜(①❀ ②). Attacker sees time for Alice to compute ❛(❜(①❀ ②)). Often attacker can see time for each operation performed by Alice, not just total time. This reveals secret ❛. Fix: constant-time code, performing same operations no matter what scalar is. Addition on an elliptic curve ② ①
✎ 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 86 Timing attacks er sees more than ❛ ①❀ ②) and ❜(①❀ ②). er sees time for to compute ❛(❜(①❀ ②)). attacker can see for each operation rmed by Alice, just total time. reveals secret ❛. constant-time code, rming same operations matter what scalar is. Addition on an elliptic curve ② ①
✎ 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)). The clock ② ① ❀ ✎ P ① ❀ ② ✎ P ① ❀ ② ✎ P ① ❀ ② ✎ ①2 + ②2 Sum of (① ❀ ② ① ❀ ② (①1②2 + ② ① ②1②2 ① ①
SLIDE 87 more than ❛ ①❀ ② ❜ ①❀ ②). time for compute ❛(❜(①❀ ②)). can see eration Alice, time. secret ❛. constant-time code,
scalar is. Addition on an elliptic curve ② ①
✎ 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)). The clock again, fo ② ①
❀ ✎ P ① ❀ ② ✎ ✂ ✂ ✂ ✂ ✂ ✂ P ① ❀ ② ✎ ✐ ✐ ✐ ✐ ✐ P ① ❀ ② ✎ P P P P P ①2 + ②2 = 1. Sum of (①1❀ ②1) and ① ❀ ② (①1②2 + ②1①2, ②1②2 ①1①2).
SLIDE 88 ❛ ①❀ ② ❜ ①❀ ② ❛ ❜ ①❀ ②)). ❛ erations Addition on an elliptic curve ② ①
✎ 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)). The clock again, for comparison: ② ①
✎ P1 = (① ❀ ② ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = ① ❀ ② ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (① ❀ ② ✎ P P P P P P P ①2 + ②2 = 1. Sum of (①1❀ ②1) and (①2❀ ②2) (①1②2 + ②1①2, ②1②2 ①1①2).
SLIDE 89 Addition on an elliptic curve ② ①
✎ 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)). The clock again, for comparison: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①2 + ②2 = 1. Sum of (①1❀ ②1) and (①2❀ ②2) is (①1②2 + ②1①2, ②1②2 ①1①2).
SLIDE 90 Addition on an elliptic curve ② ①
✎ P1 = (①1❀ ②1) ✎ ☞ ☞ ☞ ☞ P2 = (①2❀ ②2) ✎ ❢ ❢ ❢ ❢ ❢ P3 = (①3❀ ②3) ✎ ❬ ❬ ❬ ❬ ❬ ❬ ① ②2 = 1 30①2②2.
- f (①1❀ ②1) and (①2❀ ②2) is
① ② +②1①2)❂(130①1①2②1②2), ② ② ①1①2)❂(1+30①1①2②1②2)). The clock again, for comparison: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①2 + ②2 = 1. Sum of (①1❀ ②1) and (①2❀ ②2) is (①1②2 + ②1①2, ②1②2 ①1①2). More elliptic Choose an ♣ Choose a ❞ ✷
♣
❢(①❀ ②) ✷
♣ ✂ ♣
①2 + ② ❞① ② ❣ is a “complete “The Edw (①1❀ ②1) + ① ❀ ② ① ❀ ② where ①3 = ① ② ② ① 1 + ❞① ① ② ② ②3 = ②1② ① ① 1 ❞① ① ② ②
SLIDE 91 elliptic curve ② ①
✎ P1 = (①1❀ ②1) ✎ P2 = (①2❀ ②2) ✎ ❢ ❢ P3 = (①3❀ ②3) ✎ ❬ ❬ ❬ ① ② 30①2②2. ① ❀ ② and (①2❀ ②2) is ① ② ② ① ❂(130①1①2②1②2), ② ② ① ① ❂(1+30①1①2②1②2)). The clock again, for comparison: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①2 + ②2 = 1. Sum of (①1❀ ②1) and (①2❀ ②2) is (①1②2 + ②1①2, ②1②2 ①1①2). More elliptic curves Choose an odd prime ♣ Choose a non-squa ❞ ✷
♣
❢(①❀ ②) ✷ F♣ ✂ F♣ ①2 + ②2 = 1 + ❞① ② ❣ is a “complete Edw “The Edwards addition (①1❀ ②1) + (①2❀ ②2) ① ❀ ② where ①3 = ①1②2 + ②1① 1 + ❞①1①2②1② ②3 = ②1②2 ①1① 1 ❞①1①2②1②
SLIDE 92 curve ② ① (0❀ 1) ✎ P ① ❀ ②1) ✎ P (①2❀ ②2) ✎ P (①3❀ ②3) ✎ ① ②
① ❀ ② ① ❀ ②2) is ① ② ② ① ❂
② ② ① ① ❂ ① ① ②1②2)). The clock again, for comparison: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①2 + ②2 = 1. Sum of (①1❀ ②1) and (①2❀ ②2) is (①1②2 + ②1①2, ②1②2 ①1①2). More elliptic curves Choose an odd prime ♣. Choose a non-square ❞ ✷ F♣ ❢(①❀ ②) ✷ F♣ ✂ F♣ : ①2 + ②2 = 1 + ❞①2②2❣ is a “complete Edwards curve”. “The Edwards addition law”: (①1❀ ②1) + (①2❀ ②2) = (①3❀ ②3 where ①3 = ①1②2 + ②1①2 1 + ❞①1①2②1②2 , ②3 = ②1②2 ①1①2 1 ❞①1①2②1②2 .
SLIDE 93 The clock again, for comparison: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ①2 + ②2 = 1. Sum of (①1❀ ②1) and (①2❀ ②2) is (①1②2 + ②1①2, ②1②2 ①1①2). More elliptic curves Choose an odd prime ♣. Choose a non-square ❞ ✷ F♣. ❢(①❀ ②) ✷ F♣ ✂ F♣ : ①2 + ②2 = 1 + ❞①2②2❣ is a “complete Edwards curve”. “The Edwards addition law”: (①1❀ ②1) + (①2❀ ②2) = (①3❀ ②3) where ①3 = ①1②2 + ②1①2 1 + ❞①1①2②1②2 , ②3 = ②1②2 ①1①2 1 ❞①1①2②1②2 .
SLIDE 94 clock again, for comparison: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ ✂ ✂ ✂ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P P P P P ① ②2 = 1.
- f (①1❀ ②1) and (①2❀ ②2) is
① ② + ②1①2, ② ② ①1①2). More elliptic curves Choose an odd prime ♣. Choose a non-square ❞ ✷ F♣. ❢(①❀ ②) ✷ F♣ ✂ F♣ : ①2 + ②2 = 1 + ❞①2②2❣ is a “complete Edwards curve”. “The Edwards addition law”: (①1❀ ②1) + (①2❀ ②2) = (①3❀ ②3) where ①3 = ①1②2 + ②1①2 1 + ❞①1①2②1②2 , ②3 = ②1②2 ①1①2 1 ❞①1①2②1②2 . “Hey, there in the Edw What if
SLIDE 95 again, for comparison: ② ①
✎ P1 = (①1❀ ②1) ✎ ✂ ✂ P2 = (①2❀ ②2) ✎ ✐ ✐ ✐ ✐ P3 = (①3❀ ②3) ✎ P P P ① ② ① ❀ ② and (①2❀ ②2) is ① ② ② ① ② ② ① ① More elliptic curves Choose an odd prime ♣. Choose a non-square ❞ ✷ F♣. ❢(①❀ ②) ✷ F♣ ✂ F♣ : ①2 + ②2 = 1 + ❞①2②2❣ is a “complete Edwards curve”. “The Edwards addition law”: (①1❀ ②1) + (①2❀ ②2) = (①3❀ ②3) where ①3 = ①1②2 + ②1①2 1 + ❞①1①2②1②2 , ②3 = ②1②2 ①1①2 1 ❞①1①2②1②2 . “Hey, there are divisions in the Edwards addition What if the denominato
SLIDE 96
comparison: ② ① (0❀ 1) ✎ P (①1❀ ②1) ✎ P = (①2❀ ②2) ✎ P (①3❀ ②3) ✎ ① ② ① ❀ ② ① ❀ ②2) is ① ② ② ① ② ② ① ① More elliptic curves Choose an odd prime ♣. Choose a non-square ❞ ✷ F♣. ❢(①❀ ②) ✷ F♣ ✂ F♣ : ①2 + ②2 = 1 + ❞①2②2❣ is a “complete Edwards curve”. “The Edwards addition law”: (①1❀ ②1) + (①2❀ ②2) = (①3❀ ②3) where ①3 = ①1②2 + ②1①2 1 + ❞①1①2②1②2 , ②3 = ②1②2 ①1①2 1 ❞①1①2②1②2 . “Hey, there are divisions in the Edwards addition law! What if the denominators are
SLIDE 97
More elliptic curves Choose an odd prime ♣. Choose a non-square ❞ ✷ F♣. ❢(①❀ ②) ✷ F♣ ✂ F♣ : ①2 + ②2 = 1 + ❞①2②2❣ is a “complete Edwards curve”. “The Edwards addition law”: (①1❀ ②1) + (①2❀ ②2) = (①3❀ ②3) where ①3 = ①1②2 + ②1①2 1 + ❞①1①2②1②2 , ②3 = ②1②2 ①1①2 1 ❞①1①2②1②2 . “Hey, there are divisions in the Edwards addition law! What if the denominators are 0?”
SLIDE 98
More elliptic curves Choose an odd prime ♣. Choose a non-square ❞ ✷ F♣. ❢(①❀ ②) ✷ F♣ ✂ F♣ : ①2 + ②2 = 1 + ❞①2②2❣ is a “complete Edwards curve”. “The Edwards addition law”: (①1❀ ②1) + (①2❀ ②2) = (①3❀ ②3) where ①3 = ①1②2 + ②1①2 1 + ❞①1①2②1②2 , ②3 = ②1②2 ①1①2 1 ❞①1①2②1②2 . “Hey, there are divisions in the Edwards addition law! What if the denominators are 0?” Answer: Can prove that the denominators are never 0. Addition law is complete.
SLIDE 99
More elliptic curves Choose an odd prime ♣. Choose a non-square ❞ ✷ F♣. ❢(①❀ ②) ✷ F♣ ✂ F♣ : ①2 + ②2 = 1 + ❞①2②2❣ is a “complete Edwards curve”. “The Edwards addition law”: (①1❀ ②1) + (①2❀ ②2) = (①3❀ ②3) where ①3 = ①1②2 + ②1①2 1 + ❞①1①2②1②2 , ②3 = ②1②2 ①1①2 1 ❞①1①2②1②2 . “Hey, there are divisions in the Edwards addition law! What if the denominators are 0?” Answer: Can prove that the denominators are never 0. Addition law is complete. This proof relies on choosing non-square ❞.
SLIDE 100 More elliptic curves Choose an odd prime ♣. Choose a non-square ❞ ✷ F♣. ❢(①❀ ②) ✷ F♣ ✂ F♣ : ①2 + ②2 = 1 + ❞①2②2❣ is a “complete Edwards curve”. “The Edwards addition law”: (①1❀ ②1) + (①2❀ ②2) = (①3❀ ②3) where ①3 = ①1②2 + ②1①2 1 + ❞①1①2②1②2 , ②3 = ②1②2 ①1①2 1 ❞①1①2②1②2 . “Hey, there are divisions in the Edwards addition law! What if the denominators are 0?” Answer: Can prove that the denominators are never 0. Addition law is complete. This proof relies on choosing non-square ❞. If we instead choose square ❞: curve is still elliptic, and addition seems to work, but there are failure cases,
- ften exploitable by attackers.
Safe code is more complicated.
SLIDE 101 elliptic curves
- se an odd prime ♣.
- se a non-square ❞ ✷ F♣.
❢ ①❀ ②) ✷ F♣ ✂ F♣ : ① + ②2 = 1 + ❞①2②2❣ “complete Edwards curve”. Edwards addition law”: ① ❀ ② ) + (①2❀ ②2) = (①3❀ ②3) ① ①1②2 + ②1①2 1 + ❞①1①2②1②2 , ② ②1②2 ①1①2 ❞①1①2②1②2 . “Hey, there are divisions in the Edwards addition law! What if the denominators are 0?” Answer: Can prove that the denominators are never 0. Addition law is complete. This proof relies on choosing non-square ❞. If we instead choose square ❞: curve is still elliptic, and addition seems to work, but there are failure cases,
- ften exploitable by attackers.
Safe code is more complicated. A safe example Choose ♣
❂ this is non-squa
♣
①2 + ②2 ❞① ② is a safe
SLIDE 102 curves rime ♣. non-square ❞ ✷ F♣. ❢ ①❀ ② ✷
♣ ✂ ♣ :
① ② 1 + ❞①2②2❣ Edwards curve”. addition law”: ① ❀ ② ① ❀ ②2) = (①3❀ ②3) ① ① ② ② ①2 ❞① ① ②1②2 , ② ② ② ① ①2 ❞① ① ②1②2 . “Hey, there are divisions in the Edwards addition law! What if the denominators are 0?” Answer: Can prove that the denominators are never 0. Addition law is complete. This proof relies on choosing non-square ❞. If we instead choose square ❞: curve is still elliptic, and addition seems to work, but there are failure cases,
- ften exploitable by attackers.
Safe code is more complicated. A safe example Choose ♣ = 2255 Choose ❞ = 121665❂ this is non-square
♣
①2 + ②2 = 1 + ❞①2② is a safe curve for
SLIDE 103 ♣ ❞ ✷ F♣. ❢ ①❀ ② ✷
♣ ✂ ♣
① ② ❞① ② ❣ curve”. w”: ① ❀ ② ① ❀ ② ① ❀ ②3) ① ① ② ② ① ❞① ① ② ② ② ② ② ① ① ❞① ① ② ② “Hey, there are divisions in the Edwards addition law! What if the denominators are 0?” Answer: Can prove that the denominators are never 0. Addition law is complete. This proof relies on choosing non-square ❞. If we instead choose square ❞: curve is still elliptic, and addition seems to work, but there are failure cases,
- ften exploitable by attackers.
Safe code is more complicated. A safe example Choose ♣ = 2255 19. Choose ❞ = 121665❂121666; this is non-square in F♣. ①2 + ②2 = 1 + ❞①2②2 is a safe curve for ECC.
SLIDE 104 “Hey, there are divisions in the Edwards addition law! What if the denominators are 0?” Answer: Can prove that the denominators are never 0. Addition law is complete. This proof relies on choosing non-square ❞. If we instead choose square ❞: curve is still elliptic, and addition seems to work, but there are failure cases,
- ften exploitable by attackers.
Safe code is more complicated. A safe example Choose ♣ = 2255 19. Choose ❞ = 121665❂121666; this is non-square in F♣. ①2 + ②2 = 1 + ❞①2②2 is a safe curve for ECC.
SLIDE 105 “Hey, there are divisions in the Edwards addition law! What if the denominators are 0?” Answer: Can prove that the denominators are never 0. Addition law is complete. This proof relies on choosing non-square ❞. If we instead choose square ❞: curve is still elliptic, and addition seems to work, but there are failure cases,
- ften exploitable by attackers.
Safe code is more complicated. A safe example Choose ♣ = 2255 19. Choose ❞ = 121665❂121666; this is non-square in F♣. ①2 + ②2 = 1 + ❞①2②2 is a safe curve for ECC. ①2 + ②2 = 1 ❞①2②2 is another safe curve using the same ♣ and ❞.
SLIDE 106 “Hey, there are divisions in the Edwards addition law! What if the denominators are 0?” Answer: Can prove that the denominators are never 0. Addition law is complete. This proof relies on choosing non-square ❞. If we instead choose square ❞: curve is still elliptic, and addition seems to work, but there are failure cases,
- ften exploitable by attackers.
Safe code is more complicated. A safe example Choose ♣ = 2255 19. Choose ❞ = 121665❂121666; this is non-square in F♣. ①2 + ②2 = 1 + ❞①2②2 is a safe curve for ECC. ①2 + ②2 = 1 ❞①2②2 is another safe curve using the same ♣ and ❞. Actually, the second curve is the first curve in disguise: replace ① in first curve by ♣1 ✁ ①, using ♣1 ✷ F♣.
SLIDE 107 there are divisions Edwards addition law! if the denominators are 0?” er: Can prove that denominators are never 0. Addition law is complete. roof relies on
instead choose square ❞: is still elliptic, and addition seems to work, there are failure cases, exploitable by attackers. code is more complicated. A safe example Choose ♣ = 2255 19. Choose ❞ = 121665❂121666; this is non-square in F♣. ①2 + ②2 = 1 + ❞①2②2 is a safe curve for ECC. ①2 + ②2 = 1 ❞①2②2 is another safe curve using the same ♣ and ❞. Actually, the second curve is the first curve in disguise: replace ① in first curve by ♣1 ✁ ①, using ♣1 ✷ F♣. Even mo Edwards ①2 + ②2 ❞① ② Twisted ❛①2 + ②2 ❞① ② Weierstrass ✈2 = ✉3 ❛✉ ❜ Montgomery ❜✈2 = ✉3 ❛✉ ✉ Many relationships: e.g., substitute ① ✉❂✈ ② = (✉ ❂ ✉ to obtain
SLIDE 108 divisions addition law! denominators are 0?” rove that rs are never 0. complete.
non-square ❞. choose square ❞: elliptic, and to work, failure cases, by attackers. re complicated. A safe example Choose ♣ = 2255 19. Choose ❞ = 121665❂121666; this is non-square in F♣. ①2 + ②2 = 1 + ❞①2②2 is a safe curve for ECC. ①2 + ②2 = 1 ❞①2②2 is another safe curve using the same ♣ and ❞. Actually, the second curve is the first curve in disguise: replace ① in first curve by ♣1 ✁ ①, using ♣1 ✷ F♣. Even more elliptic Edwards curves: ①2 + ②2 = 1 + ❞①2② Twisted Edwards curves: ❛①2 + ②2 = 1 + ❞① ② Weierstrass curves: ✈2 = ✉3 + ❛✉ + ❜. Montgomery curves: ❜✈2 = ✉3 + ❛✉2 + ✉ Many relationships: e.g., substitute ① = ✉❂✈ ② = (✉ 1)❂(✉ + to obtain Montgomery
SLIDE 109
w! are 0?” never 0. ❞ re ❞: cases, ers. complicated. A safe example Choose ♣ = 2255 19. Choose ❞ = 121665❂121666; this is non-square in F♣. ①2 + ②2 = 1 + ❞①2②2 is a safe curve for ECC. ①2 + ②2 = 1 ❞①2②2 is another safe curve using the same ♣ and ❞. Actually, the second curve is the first curve in disguise: replace ① in first curve by ♣1 ✁ ①, using ♣1 ✷ F♣. Even more elliptic curves Edwards curves: ①2 + ②2 = 1 + ❞①2②2. Twisted Edwards curves: ❛①2 + ②2 = 1 + ❞①2②2. Weierstrass curves: ✈2 = ✉3 + ❛✉ + ❜. Montgomery curves: ❜✈2 = ✉3 + ❛✉2 + ✉. Many relationships: e.g., substitute ① = ✉❂✈, ② = (✉ 1)❂(✉ + 1) in Edw to obtain Montgomery.
SLIDE 110
A safe example Choose ♣ = 2255 19. Choose ❞ = 121665❂121666; this is non-square in F♣. ①2 + ②2 = 1 + ❞①2②2 is a safe curve for ECC. ①2 + ②2 = 1 ❞①2②2 is another safe curve using the same ♣ and ❞. Actually, the second curve is the first curve in disguise: replace ① in first curve by ♣1 ✁ ①, using ♣1 ✷ F♣. Even more elliptic curves Edwards curves: ①2 + ②2 = 1 + ❞①2②2. Twisted Edwards curves: ❛①2 + ②2 = 1 + ❞①2②2. Weierstrass curves: ✈2 = ✉3 + ❛✉ + ❜. Montgomery curves: ❜✈2 = ✉3 + ❛✉2 + ✉. Many relationships: e.g., substitute ① = ✉❂✈, ② = (✉ 1)❂(✉ + 1) in Edwards to obtain Montgomery.
SLIDE 111 example
- se ♣ = 2255 19.
- se ❞ = 121665❂121666;
non-square in F♣. ① ②2 = 1 + ❞①2②2 safe curve for ECC. ① ②2 = 1 ❞①2②2 another safe curve the same ♣ and ❞. Actually, the second curve first curve in disguise: replace ① in first curve ♣1 ✁ ①, using ♣1 ✷ F♣. Even more elliptic curves Edwards curves: ①2 + ②2 = 1 + ❞①2②2. Twisted Edwards curves: ❛①2 + ②2 = 1 + ❞①2②2. Weierstrass curves: ✈2 = ✉3 + ❛✉ + ❜. Montgomery curves: ❜✈2 = ✉3 + ❛✉2 + ✉. Many relationships: e.g., substitute ① = ✉❂✈, ② = (✉ 1)❂(✉ + 1) in Edwards to obtain Montgomery. Addition ✈2 = ✉3 ❛✉ ❜
SLIDE 112
♣ 19. ❞ 121665❂121666; re in F♣. ① ② ❞①2②2 r ECC. ① ② ❞①2②2 curve ♣ and ❞. second curve in disguise: ① curve ♣ ✁ ① using ♣1 ✷ F♣. Even more elliptic curves Edwards curves: ①2 + ②2 = 1 + ❞①2②2. Twisted Edwards curves: ❛①2 + ②2 = 1 + ❞①2②2. Weierstrass curves: ✈2 = ✉3 + ❛✉ + ❜. Montgomery curves: ❜✈2 = ✉3 + ❛✉2 + ✉. Many relationships: e.g., substitute ① = ✉❂✈, ② = (✉ 1)❂(✉ + 1) in Edwards to obtain Montgomery. Addition on Weierstrass ✈2 = ✉3 + ❛✉ + ❜:
SLIDE 113 ♣
❂121666;
♣
① ② ❞① ② ① ② ❞① ② ♣ ❞ disguise: ① ♣ ✁ ① ♣ ✷ F♣. Even more elliptic curves Edwards curves: ①2 + ②2 = 1 + ❞①2②2. Twisted Edwards curves: ❛①2 + ②2 = 1 + ❞①2②2. Weierstrass curves: ✈2 = ✉3 + ❛✉ + ❜. Montgomery curves: ❜✈2 = ✉3 + ❛✉2 + ✉. Many relationships: e.g., substitute ① = ✉❂✈, ② = (✉ 1)❂(✉ + 1) in Edwards to obtain Montgomery. Addition on Weierstrass curves ✈2 = ✉3 + ❛✉ + ❜:
SLIDE 114
Even more elliptic curves Edwards curves: ①2 + ②2 = 1 + ❞①2②2. Twisted Edwards curves: ❛①2 + ②2 = 1 + ❞①2②2. Weierstrass curves: ✈2 = ✉3 + ❛✉ + ❜. Montgomery curves: ❜✈2 = ✉3 + ❛✉2 + ✉. Many relationships: e.g., substitute ① = ✉❂✈, ② = (✉ 1)❂(✉ + 1) in Edwards to obtain Montgomery. Addition on Weierstrass curves ✈2 = ✉3 + ❛✉ + ❜:
SLIDE 115
Even more elliptic curves Edwards curves: ①2 + ②2 = 1 + ❞①2②2. Twisted Edwards curves: ❛①2 + ②2 = 1 + ❞①2②2. Weierstrass curves: ✈2 = ✉3 + ❛✉ + ❜. Montgomery curves: ❜✈2 = ✉3 + ❛✉2 + ✉. Many relationships: e.g., substitute ① = ✉❂✈, ② = (✉ 1)❂(✉ + 1) in Edwards to obtain Montgomery. Addition on Weierstrass curves ✈2 = ✉3 + ❛✉ + ❜: for ✉1 ✻= ✉2, (✉1❀ ✈1)+(✉2❀ ✈2) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (✈2 ✈1)❂(✉2 ✉1); for ✈1 ✻= 0, (✉1❀ ✈1) + (✉1❀ ✈1) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (3✉2
1 + ❛)❂2✈1;
(✉1❀ ✈1) + (✉1❀ ✈1) = ✶; (✉1❀ ✈1) + ✶ = (✉1❀ ✈1); ✶ + (✉2❀ ✈2) = (✉2❀ ✈2); ✶ + ✶ = ✶.
SLIDE 116
Even more elliptic curves Edwards curves: ①2 + ②2 = 1 + ❞①2②2. Twisted Edwards curves: ❛①2 + ②2 = 1 + ❞①2②2. Weierstrass curves: ✈2 = ✉3 + ❛✉ + ❜. Montgomery curves: ❜✈2 = ✉3 + ❛✉2 + ✉. Many relationships: e.g., substitute ① = ✉❂✈, ② = (✉ 1)❂(✉ + 1) in Edwards to obtain Montgomery. Addition on Weierstrass curves ✈2 = ✉3 + ❛✉ + ❜: for ✉1 ✻= ✉2, (✉1❀ ✈1)+(✉2❀ ✈2) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (✈2 ✈1)❂(✉2 ✉1); for ✈1 ✻= 0, (✉1❀ ✈1) + (✉1❀ ✈1) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (3✉2
1 + ❛)❂2✈1;
(✉1❀ ✈1) + (✉1❀ ✈1) = ✶; (✉1❀ ✈1) + ✶ = (✉1❀ ✈1); ✶ + (✉2❀ ✈2) = (✉2❀ ✈2); ✶ + ✶ = ✶. Messy to implement and test.
SLIDE 117 more elliptic curves rds curves: ① ②2 = 1 + ❞①2②2. Twisted Edwards curves: ❛① ②2 = 1 + ❞①2②2. eierstrass curves: ✈ ✉3 + ❛✉ + ❜. Montgomery curves: ❜✈ ✉3 + ❛✉2 + ✉. relationships: substitute ① = ✉❂✈, ② ✉ 1)❂(✉ + 1) in Edwards
Addition on Weierstrass curves ✈2 = ✉3 + ❛✉ + ❜: for ✉1 ✻= ✉2, (✉1❀ ✈1)+(✉2❀ ✈2) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (✈2 ✈1)❂(✉2 ✉1); for ✈1 ✻= 0, (✉1❀ ✈1) + (✉1❀ ✈1) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (3✉2
1 + ❛)❂2✈1;
(✉1❀ ✈1) + (✉1❀ ✈1) = ✶; (✉1❀ ✈1) + ✶ = (✉1❀ ✈1); ✶ + (✉2❀ ✈2) = (✉2❀ ✈2); ✶ + ✶ = ✶. Messy to implement and test. Much nicer Montgomery-curve the “Montgomery
Diffie–Hellman (e.g., for Montgomery
P Montgomery ♥P and ♥ P ❜♥❂2❝P ❜♥❂ ❝ P using one ♥ with no
SLIDE 118 elliptic curves ① ② ❞①2②2. rds curves: ❛① ② ❞①2②2. curves: ✈ ✉ ❛✉ ❜. curves: ❜✈ ✉ ❛✉ + ✉. relationships: ① = ✉❂✈, ② ✉ ❂ ✉ + 1) in Edwards Montgomery. Addition on Weierstrass curves ✈2 = ✉3 + ❛✉ + ❜: for ✉1 ✻= ✉2, (✉1❀ ✈1)+(✉2❀ ✈2) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (✈2 ✈1)❂(✉2 ✉1); for ✈1 ✻= 0, (✉1❀ ✈1) + (✉1❀ ✈1) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (3✉2
1 + ❛)❂2✈1;
(✉1❀ ✈1) + (✉1❀ ✈1) = ✶; (✉1❀ ✈1) + ✶ = (✉1❀ ✈1); ✶ + (✉2❀ ✈2) = (✉2❀ ✈2); ✶ + ✶ = ✶. Messy to implement and test. Much nicer than W Montgomery-curve the “Montgomery
Diffie–Hellman key (e.g., for forward secrecy). Montgomery ladder
- nly with ✉-coordinates
- f curve points P.
Montgomery ladder ♥P and (♥ + 1)P ❜♥❂2❝P and (❜♥❂2❝ P using one bit of ♥ with no branches.
SLIDE 119 ① ② ❞① ② ❛① ② ❞① ② ✈ ✉ ❛✉ ❜ ❜✈ ✉ ❛✉ ✉ ① ✉❂✈ ② ✉ ❂ ✉ Edwards Addition on Weierstrass curves ✈2 = ✉3 + ❛✉ + ❜: for ✉1 ✻= ✉2, (✉1❀ ✈1)+(✉2❀ ✈2) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (✈2 ✈1)❂(✉2 ✉1); for ✈1 ✻= 0, (✉1❀ ✈1) + (✉1❀ ✈1) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (3✉2
1 + ❛)❂2✈1;
(✉1❀ ✈1) + (✉1❀ ✈1) = ✶; (✉1❀ ✈1) + ✶ = (✉1❀ ✈1); ✶ + (✉2❀ ✈2) = (✉2❀ ✈2); ✶ + ✶ = ✶. Messy to implement and test. Much nicer than Weierstrass: Montgomery-curve ECDH using the “Montgomery ladder”—
Diffie–Hellman key exchange (e.g., for forward secrecy). Montgomery ladder works
- nly with ✉-coordinates
- f curve points P.
Montgomery ladder computes ♥P and (♥ + 1)P recursively ❜♥❂2❝P and (❜♥❂2❝ + 1)P using one bit of ♥ with no branches.
SLIDE 120 Addition on Weierstrass curves ✈2 = ✉3 + ❛✉ + ❜: for ✉1 ✻= ✉2, (✉1❀ ✈1)+(✉2❀ ✈2) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (✈2 ✈1)❂(✉2 ✉1); for ✈1 ✻= 0, (✉1❀ ✈1) + (✉1❀ ✈1) = (✉3❀ ✈3) with ✉3 = ✕2 ✉1 ✉2, ✈3 = ✕(✉1 ✉3) ✈1, ✕ = (3✉2
1 + ❛)❂2✈1;
(✉1❀ ✈1) + (✉1❀ ✈1) = ✶; (✉1❀ ✈1) + ✶ = (✉1❀ ✈1); ✶ + (✉2❀ ✈2) = (✉2❀ ✈2); ✶ + ✶ = ✶. Messy to implement and test. Much nicer than Weierstrass: Montgomery-curve ECDH using the “Montgomery ladder”—
- ur recommended method for
Diffie–Hellman key exchange (e.g., for forward secrecy). Montgomery ladder works
- nly with ✉-coordinates
- f curve points P.
Montgomery ladder computes ♥P and (♥ + 1)P recursively from ❜♥❂2❝P and (❜♥❂2❝ + 1)P using one bit of ♥ with no branches.
SLIDE 121 Addition on Weierstrass curves ✈ ✉3 + ❛✉ + ❜: ✉ ✻= ✉2, (✉1❀ ✈1)+(✉2❀ ✈2) = ✉ ❀ ✈ ) with ✉3 = ✕2 ✉1 ✉2, ✈ ✕(✉1 ✉3) ✈1, ✕ ✈2 ✈1)❂(✉2 ✉1); for ✈ ✻ 0, (✉1❀ ✈1) + (✉1❀ ✈1) = ✉ ❀ ✈ ) with ✉3 = ✕2 ✉1 ✉2, ✈ ✕(✉1 ✉3) ✈1, ✕ ✉2
1 + ❛)❂2✈1;
✉ ❀ ✈ ) + (✉1❀ ✈1) = ✶; ✉ ❀ ✈ ) + ✶ = (✉1❀ ✈1); ✶ ✉2❀ ✈2) = (✉2❀ ✈2); ✶ ✶ = ✶. to implement and test. Much nicer than Weierstrass: Montgomery-curve ECDH using the “Montgomery ladder”—
- ur recommended method for
Diffie–Hellman key exchange (e.g., for forward secrecy). Montgomery ladder works
- nly with ✉-coordinates
- f curve points P.
Montgomery ladder computes ♥P and (♥ + 1)P recursively from ❜♥❂2❝P and (❜♥❂2❝ + 1)P using one bit of ♥ with no branches. Curve selection Many different 1999 ANSI 2000 IEEE 2000 SEC 2000 NIST 2001 ANSI 2005 Brainp 2005 NSA 2011 ANSSI Our new http://safecurves.cr.yp.to
SLIDE 122 eierstrass curves ✈ ✉ ❛✉ ❜: ✉ ✻ ✉ ✉ ❀ ✈1)+(✉2❀ ✈2) = ✉ ❀ ✈ ✉ = ✕2 ✉1 ✉2, ✈ ✕ ✉ ✉ ) ✈1, ✕ ✈ ✈ ❂(✉2 ✉1); for ✈ ✻ ✉ ❀ ✈ + (✉1❀ ✈1) = ✉ ❀ ✈ ✉ = ✕2 ✉1 ✉2, ✈ ✕ ✉ ✉ ) ✈1, ✕ ✉ ❛ ❂ ✈1; ✉ ❀ ✈ ✉ ❀ ✈1) = ✶; ✉ ❀ ✈ ✶ (✉1❀ ✈1); ✶ ✉ ❀ ✈ (✉2❀ ✈2); ✶ ✶ ✶ implement and test. Much nicer than Weierstrass: Montgomery-curve ECDH using the “Montgomery ladder”—
- ur recommended method for
Diffie–Hellman key exchange (e.g., for forward secrecy). Montgomery ladder works
- nly with ✉-coordinates
- f curve points P.
Montgomery ladder computes ♥P and (♥ + 1)P recursively from ❜♥❂2❝P and (❜♥❂2❝ + 1)P using one bit of ♥ with no branches. Curve selection Many different standa 1999 ANSI X9.62. 2000 IEEE P1363. 2000 SEC 2. 2000 NIST FIPS 186-2. 2001 ANSI X9.63. 2005 Brainpool. 2005 NSA Suite B. 2011 ANSSI FRP256V1. Our new evaluation http://safecurves.cr.yp.to
SLIDE 123 curves ✈ ✉ ❛✉ ❜ ✉ ✻ ✉ ✉ ❀ ✈ ✉ ❀ ✈2) = ✉ ❀ ✈ ✉ ✕ ✉1 ✉2, ✈ ✕ ✉ ✉ ✈ ✕ ✈ ✈ ❂ ✉ ✉ ); for ✈ ✻ ✉ ❀ ✈ ✉ ❀ ✈ ) = ✉ ❀ ✈ ✉ ✕ ✉1 ✉2, ✈ ✕ ✉ ✉ ✈ ✕ ✉ ❛ ❂ ✈ ✉ ❀ ✈ ✉ ❀ ✈ ✶; ✉ ❀ ✈ ✶ ✉ ❀ ✈ ✶ ✉ ❀ ✈ ✉ ❀ ✈ ✶ ✶ ✶ test. Much nicer than Weierstrass: Montgomery-curve ECDH using the “Montgomery ladder”—
- ur recommended method for
Diffie–Hellman key exchange (e.g., for forward secrecy). Montgomery ladder works
- nly with ✉-coordinates
- f curve points P.
Montgomery ladder computes ♥P and (♥ + 1)P recursively from ❜♥❂2❝P and (❜♥❂2❝ + 1)P using one bit of ♥ with no branches. Curve selection Many different standards: 1999 ANSI X9.62. 2000 IEEE P1363. 2000 SEC 2. 2000 NIST FIPS 186-2. 2001 ANSI X9.63. 2005 Brainpool. 2005 NSA Suite B. 2011 ANSSI FRP256V1. Our new evaluation site: http://safecurves.cr.yp.to
SLIDE 124 Much nicer than Weierstrass: Montgomery-curve ECDH using the “Montgomery ladder”—
- ur recommended method for
Diffie–Hellman key exchange (e.g., for forward secrecy). Montgomery ladder works
- nly with ✉-coordinates
- f curve points P.
Montgomery ladder computes ♥P and (♥ + 1)P recursively from ❜♥❂2❝P and (❜♥❂2❝ + 1)P using one bit of ♥ with no branches. Curve selection Many different standards: 1999 ANSI X9.62. 2000 IEEE P1363. 2000 SEC 2. 2000 NIST FIPS 186-2. 2001 ANSI X9.63. 2005 Brainpool. 2005 NSA Suite B. 2011 ANSSI FRP256V1. Our new evaluation site: http://safecurves.cr.yp.to
SLIDE 125 nicer than Weierstrass: Montgomery-curve ECDH using “Montgomery ladder”— recommended method for Diffie–Hellman key exchange for forward secrecy). Montgomery ladder works with ✉-coordinates curve points P. Montgomery ladder computes ♥P and (♥ + 1)P recursively from ❜♥❂ ❝P and (❜♥❂2❝ + 1)P
no branches. Curve selection Many different standards: 1999 ANSI X9.62. 2000 IEEE P1363. 2000 SEC 2. 2000 NIST FIPS 186-2. 2001 ANSI X9.63. 2005 Brainpool. 2005 NSA Suite B. 2011 ANSSI FRP256V1. Our new evaluation site: http://safecurves.cr.yp.to Avoiding The curve The numb must be a large p ❵ Standard ♣ ❵ ❵ ✙ 2200 ❵ ✙ 2256 ❵ must not ♣; ♣ 1; ♣ ♣3 1; ✿ ✿ ✿ ♣
no “transfers”
SLIDE 126
Weierstrass: Montgomery-curve ECDH using “Montgomery ladder”— recommended method for ey exchange secrecy). ladder works ✉ rdinates P. ladder computes ♥P ♥ P recursively from ❜♥❂ ❝P ❜♥❂2❝ + 1)P ♥ ranches. Curve selection Many different standards: 1999 ANSI X9.62. 2000 IEEE P1363. 2000 SEC 2. 2000 NIST FIPS 186-2. 2001 ANSI X9.63. 2005 Brainpool. 2005 NSA Suite B. 2011 ANSSI FRP256V1. Our new evaluation site: http://safecurves.cr.yp.to Avoiding known attacks The curve must be The number of curve must be divisible b a large prime numb ❵ Standard attacks tak ♣ ❵ ❵ ✙ 2200 is adequate; ❵ ✙ 2256 is conservative. ❵ must not divide ♣; ♣ 1; ♣2 1; ♣3 1; ✿ ✿ ✿ ; ♣20 This guarantees that no “transfers” to clo
SLIDE 127
eierstrass: using ladder”— for exchange ✉ P computes ♥P ♥ P recursively from ❜♥❂ ❝P ❜♥❂ ❝ P ♥ Curve selection Many different standards: 1999 ANSI X9.62. 2000 IEEE P1363. 2000 SEC 2. 2000 NIST FIPS 186-2. 2001 ANSI X9.63. 2005 Brainpool. 2005 NSA Suite B. 2011 ANSSI FRP256V1. Our new evaluation site: http://safecurves.cr.yp.to Avoiding known attacks The curve must be elliptic. The number of curve points must be divisible by a large prime number ❵. Standard attacks take time ♣ ❵ ❵ ✙ 2200 is adequate; ❵ ✙ 2256 is conservative. ❵ must not divide ♣; ♣ 1; ♣2 1; ♣3 1; ✿ ✿ ✿ ; ♣20 1. This guarantees that there a no “transfers” to clocks etc.
SLIDE 128
Curve selection Many different standards: 1999 ANSI X9.62. 2000 IEEE P1363. 2000 SEC 2. 2000 NIST FIPS 186-2. 2001 ANSI X9.63. 2005 Brainpool. 2005 NSA Suite B. 2011 ANSSI FRP256V1. Our new evaluation site: http://safecurves.cr.yp.to Avoiding known attacks The curve must be elliptic. The number of curve points must be divisible by a large prime number ❵. Standard attacks take time ♣ ❵. ❵ ✙ 2200 is adequate; ❵ ✙ 2256 is conservative. ❵ must not divide ♣; ♣ 1; ♣2 1; ♣3 1; ✿ ✿ ✿ ; ♣20 1. This guarantees that there are no “transfers” to clocks etc.
SLIDE 129
selection different standards: ANSI X9.62. IEEE P1363. SEC 2. NIST FIPS 186-2. ANSI X9.63. Brainpool. NSA Suite B. ANSSI FRP256V1. new evaluation site: http://safecurves.cr.yp.to Avoiding known attacks The curve must be elliptic. The number of curve points must be divisible by a large prime number ❵. Standard attacks take time ♣ ❵. ❵ ✙ 2200 is adequate; ❵ ✙ 2256 is conservative. ❵ must not divide ♣; ♣ 1; ♣2 1; ♣3 1; ✿ ✿ ✿ ; ♣20 1. This guarantees that there are no “transfers” to clocks etc. Avoiding Simplify avoid possible even if no Require la discriminant”. SafeCurves. Brainpool, SafeCurves: ♣ Brainpool prohibit ❵ ♣❦ 1 fo ❦ ❁ ❵ ❂
SLIDE 130
standards: X9.62. P1363. 186-2. X9.63. B. FRP256V1. evaluation site: http://safecurves.cr.yp.to Avoiding known attacks The curve must be elliptic. The number of curve points must be divisible by a large prime number ❵. Standard attacks take time ♣ ❵. ❵ ✙ 2200 is adequate; ❵ ✙ 2256 is conservative. ❵ must not divide ♣; ♣ 1; ♣2 1; ♣3 1; ✿ ✿ ✿ ; ♣20 1. This guarantees that there are no “transfers” to clocks etc. Avoiding unnecessa Simplify the securit avoid possible attack even if no attacks Require large “CM discriminant”. See, SafeCurves. Brainpool, Suite B, SafeCurves: require ♣ Brainpool and SafeCurves: prohibit ❵ dividing ♣❦ 1 for each ❦ ❁ ❵ ❂
SLIDE 131
http://safecurves.cr.yp.to Avoiding known attacks The curve must be elliptic. The number of curve points must be divisible by a large prime number ❵. Standard attacks take time ♣ ❵. ❵ ✙ 2200 is adequate; ❵ ✙ 2256 is conservative. ❵ must not divide ♣; ♣ 1; ♣2 1; ♣3 1; ✿ ✿ ✿ ; ♣20 1. This guarantees that there are no “transfers” to clocks etc. Avoiding unnecessary structure Simplify the security story: avoid possible attack vectors even if no attacks are known. Require large “CM field discriminant”. See, e.g., SafeCurves. Brainpool, Suite B, ANSSI, SafeCurves: require prime ♣. Brainpool and SafeCurves: prohibit ❵ dividing ♣❦ 1 for each ❦ ❁ (❵ 1)❂
SLIDE 132
Avoiding known attacks The curve must be elliptic. The number of curve points must be divisible by a large prime number ❵. Standard attacks take time ♣ ❵. ❵ ✙ 2200 is adequate; ❵ ✙ 2256 is conservative. ❵ must not divide ♣; ♣ 1; ♣2 1; ♣3 1; ✿ ✿ ✿ ; ♣20 1. This guarantees that there are no “transfers” to clocks etc. Avoiding unnecessary structure Simplify the security story: avoid possible attack vectors even if no attacks are known. Require large “CM field discriminant”. See, e.g., SafeCurves. Brainpool, Suite B, ANSSI, SafeCurves: require prime ♣. Brainpool and SafeCurves: prohibit ❵ dividing ♣❦ 1 for each ❦ ❁ (❵ 1)❂100.
SLIDE 133 Avoiding known attacks curve must be elliptic. number of curve points e divisible by prime number ❵. Standard attacks take time ♣ ❵. ❵ ✙
200 is adequate;
❵ ✙
256 is conservative.
❵ must not divide ♣ ♣ 1; ♣2 1; ♣ 1; ✿ ✿ ✿ ; ♣20 1. guarantees that there are “transfers” to clocks etc. Avoiding unnecessary structure Simplify the security story: avoid possible attack vectors even if no attacks are known. Require large “CM field discriminant”. See, e.g., SafeCurves. Brainpool, Suite B, ANSSI, SafeCurves: require prime ♣. Brainpool and SafeCurves: prohibit ❵ dividing ♣❦ 1 for each ❦ ❁ (❵ 1)❂100. Rigidity Another
✎ there’s a small ✎ public has missed ✎ the attack figured ✎ the attack choices to allow
SLIDE 134 attacks be elliptic. curve points by number ❵. attacks take time ♣ ❵. ❵ ✙ adequate; ❵ ✙ conservative. ❵ divide ♣ ♣ ♣ 1; ♣ ✿ ✿ ✿ ♣ 1. that there are to clocks etc. Avoiding unnecessary structure Simplify the security story: avoid possible attack vectors even if no attacks are known. Require large “CM field discriminant”. See, e.g., SafeCurves. Brainpool, Suite B, ANSSI, SafeCurves: require prime ♣. Brainpool and SafeCurves: prohibit ❵ dividing ♣❦ 1 for each ❦ ❁ (❵ 1)❂100. Rigidity Another conceivable
✎ there’s another attack a small fraction ✎ public ECC cryptana has missed this attack; ✎ the attacker has figured out this attack; ✎ the attacker has choices of standa to allow the attack.
SLIDE 135 elliptic.
❵ time ♣ ❵. ❵ ✙ ❵ ✙ ❵ ♣ ♣ ♣ ♣ ✿ ✿ ✿ ♣
etc. Avoiding unnecessary structure Simplify the security story: avoid possible attack vectors even if no attacks are known. Require large “CM field discriminant”. See, e.g., SafeCurves. Brainpool, Suite B, ANSSI, SafeCurves: require prime ♣. Brainpool and SafeCurves: prohibit ❵ dividing ♣❦ 1 for each ❦ ❁ (❵ 1)❂100. Rigidity Another conceivable source
✎ there’s another attack against a small fraction of curves; ✎ public ECC cryptanalysis has missed this attack; ✎ the attacker has figured out this attack; ✎ the attacker has manipulated choices of standard curves to allow the attack.
SLIDE 136 Avoiding unnecessary structure Simplify the security story: avoid possible attack vectors even if no attacks are known. Require large “CM field discriminant”. See, e.g., SafeCurves. Brainpool, Suite B, ANSSI, SafeCurves: require prime ♣. Brainpool and SafeCurves: prohibit ❵ dividing ♣❦ 1 for each ❦ ❁ (❵ 1)❂100. Rigidity Another conceivable source
✎ there’s another attack against a small fraction of curves; ✎ public ECC cryptanalysis has missed this attack; ✎ the attacker has figured out this attack; ✎ the attacker has manipulated choices of standard curves to allow the attack.
SLIDE 137 Avoiding unnecessary structure Simplify the security story: possible attack vectors if no attacks are known. Require large “CM field discriminant”. See, e.g., SafeCurves.
SafeCurves: require prime ♣.
rohibit ❵ dividing ♣❦ for each ❦ ❁ (❵ 1)❂100. Rigidity Another conceivable source
✎ there’s another attack against a small fraction of curves; ✎ public ECC cryptanalysis has missed this attack; ✎ the attacker has figured out this attack; ✎ the attacker has manipulated choices of standard curves to allow the attack. NIST curves “verifiably ②2 = ①3 ① ❜ ❜ is derived SHA-1 hash
SLIDE 138 unnecessary structure security story: attack vectors attacks are known. “CM field See, e.g., B, ANSSI, require prime ♣. SafeCurves: ❵ dividing ♣❦ ❦ ❁ (❵ 1)❂100. Rigidity Another conceivable source
✎ there’s another attack against a small fraction of curves; ✎ public ECC cryptanalysis has missed this attack; ✎ the attacker has figured out this attack; ✎ the attacker has manipulated choices of standard curves to allow the attack. NIST curves claim “verifiably random”: ②2 = ①3 3① + ❜ where ❜ is derived from SHA-1 hash of a public
SLIDE 139 structure ry: vectors wn. ANSSI, ♣. SafeCurves: ❵ ♣❦ ❦ ❁ ❵ 1)❂100. Rigidity Another conceivable source
✎ there’s another attack against a small fraction of curves; ✎ public ECC cryptanalysis has missed this attack; ✎ the attacker has figured out this attack; ✎ the attacker has manipulated choices of standard curves to allow the attack. NIST curves claim to be “verifiably random”: ②2 = ①3 3① + ❜ where ❜ is derived from SHA-1 hash of a public seed.
SLIDE 140 Rigidity Another conceivable source
✎ there’s another attack against a small fraction of curves; ✎ public ECC cryptanalysis has missed this attack; ✎ the attacker has figured out this attack; ✎ the attacker has manipulated choices of standard curves to allow the attack. NIST curves claim to be “verifiably random”: ②2 = ①3 3① + ❜ where ❜ is derived from SHA-1 hash of a public seed.
SLIDE 141 Rigidity Another conceivable source
✎ there’s another attack against a small fraction of curves; ✎ public ECC cryptanalysis has missed this attack; ✎ the attacker has figured out this attack; ✎ the attacker has manipulated choices of standard curves to allow the attack. NIST curves claim to be “verifiably random”: ②2 = ①3 3① + ❜ where ❜ is derived from SHA-1 hash of a public seed. But is the seed actually random? Attacker could have tried many seeds to find a curve with a one-in-a-billion weakness. Not “verifiable” at all!
SLIDE 142 Rigidity Another conceivable source
✎ there’s another attack against a small fraction of curves; ✎ public ECC cryptanalysis has missed this attack; ✎ the attacker has figured out this attack; ✎ the attacker has manipulated choices of standard curves to allow the attack. NIST curves claim to be “verifiably random”: ②2 = ①3 3① + ❜ where ❜ is derived from SHA-1 hash of a public seed. But is the seed actually random? Attacker could have tried many seeds to find a curve with a one-in-a-billion weakness. Not “verifiable” at all! ANSSI response: use our “random” curve instead.
SLIDE 143 y Another conceivable source security problems: ✎ there’s another attack against small fraction of curves; ✎ public ECC cryptanalysis missed this attack; ✎ attacker has figured out this attack; ✎ attacker has manipulated choices of standard curves allow the attack. NIST curves claim to be “verifiably random”: ②2 = ①3 3① + ❜ where ❜ is derived from SHA-1 hash of a public seed. But is the seed actually random? Attacker could have tried many seeds to find a curve with a one-in-a-billion weakness. Not “verifiable” at all! ANSSI response: use our “random” curve instead. Rigidity that can by a curve-generation Brainpool, ❜ is some
✙ ❡
SLIDE 144 conceivable source roblems: ✎ another attack against tion of curves; ✎ cryptanalysis this attack; ✎ has this attack; ✎ has manipulated standard curves attack. NIST curves claim to be “verifiably random”: ②2 = ①3 3① + ❜ where ❜ is derived from SHA-1 hash of a public seed. But is the seed actually random? Attacker could have tried many seeds to find a curve with a one-in-a-billion weakness. Not “verifiable” at all! ANSSI response: use our “random” curve instead. Rigidity limits numb that can be generated by a curve-generation Brainpool, somewhat ❜ is some sort of ha
SLIDE 145 source ✎ against curves; ✎ lysis ✎ ✎ manipulated curves NIST curves claim to be “verifiably random”: ②2 = ①3 3① + ❜ where ❜ is derived from SHA-1 hash of a public seed. But is the seed actually random? Attacker could have tried many seeds to find a curve with a one-in-a-billion weakness. Not “verifiable” at all! ANSSI response: use our “random” curve instead. Rigidity limits number of curves that can be generated by a curve-generation process. Brainpool, somewhat rigid: ❜ is some sort of hash
SLIDE 146 NIST curves claim to be “verifiably random”: ②2 = ①3 3① + ❜ where ❜ is derived from SHA-1 hash of a public seed. But is the seed actually random? Attacker could have tried many seeds to find a curve with a one-in-a-billion weakness. Not “verifiable” at all! ANSSI response: use our “random” curve instead. Rigidity limits number of curves that can be generated by a curve-generation process. Brainpool, somewhat rigid: ❜ is some sort of hash
SLIDE 147 NIST curves claim to be “verifiably random”: ②2 = ①3 3① + ❜ where ❜ is derived from SHA-1 hash of a public seed. But is the seed actually random? Attacker could have tried many seeds to find a curve with a one-in-a-billion weakness. Not “verifiable” at all! ANSSI response: use our “random” curve instead. Rigidity limits number of curves that can be generated by a curve-generation process. Brainpool, somewhat rigid: ❜ is some sort of hash
Not completely explained: why this particular hash? why ✙ and not ♣ 2? etc. But not much flexibility.
SLIDE 148 NIST curves claim to be “verifiably random”: ②2 = ①3 3① + ❜ where ❜ is derived from SHA-1 hash of a public seed. But is the seed actually random? Attacker could have tried many seeds to find a curve with a one-in-a-billion weakness. Not “verifiable” at all! ANSSI response: use our “random” curve instead. Rigidity limits number of curves that can be generated by a curve-generation process. Brainpool, somewhat rigid: ❜ is some sort of hash
Not completely explained: why this particular hash? why ✙ and not ♣ 2? etc. But not much flexibility. Our recommendation, fully rigid: ❜ is smallest positive integer passing explained criteria.
SLIDE 149 curves claim to be “verifiably random”: ② ①3 3① + ❜ where ❜ derived from hash of a public seed. the seed actually random? er could have tried seeds to find a curve with
- ne-in-a-billion weakness.
“verifiable” at all! ANSSI response: use our “random” curve instead. Rigidity limits number of curves that can be generated by a curve-generation process. Brainpool, somewhat rigid: ❜ is some sort of hash
Not completely explained: why this particular hash? why ✙ and not ♣ 2? etc. But not much flexibility. Our recommendation, fully rigid: ❜ is smallest positive integer passing explained criteria. ECC securit Covered hard to compute secret key But real-w is still being ECC implementations ✎ produce for some ✎ leak secret for input ✎ leak secret through
SLIDE 150 claim to be random”: ② ① ① ❜ where ❜ public seed. actually random? have tried find a curve with weakness. at all!
instead. Rigidity limits number of curves that can be generated by a curve-generation process. Brainpool, somewhat rigid: ❜ is some sort of hash
Not completely explained: why this particular hash? why ✙ and not ♣ 2? etc. But not much flexibility. Our recommendation, fully rigid: ❜ is smallest positive integer passing explained criteria. ECC security Covered so far: hard to compute ECC secret key from public But real-world ECC is still being broken! ECC implementations ✎ produce incorrect for some rare inputs; ✎ leak secret data for input points off ✎ leak secret data through timing;
SLIDE 151 ② ① ① ❜ ❜ seed. ndom? curve with eakness. Rigidity limits number of curves that can be generated by a curve-generation process. Brainpool, somewhat rigid: ❜ is some sort of hash
Not completely explained: why this particular hash? why ✙ and not ♣ 2? etc. But not much flexibility. Our recommendation, fully rigid: ❜ is smallest positive integer passing explained criteria. ECC security Covered so far: hard to compute ECC user’s secret key from public key. But real-world ECC is still being broken! ECC implementations ✎ produce incorrect results for some rare inputs; ✎ leak secret data for input points off curve; ✎ leak secret data through timing;
- etc. Attackers exploit this.
SLIDE 152 Rigidity limits number of curves that can be generated by a curve-generation process. Brainpool, somewhat rigid: ❜ is some sort of hash
Not completely explained: why this particular hash? why ✙ and not ♣ 2? etc. But not much flexibility. Our recommendation, fully rigid: ❜ is smallest positive integer passing explained criteria. ECC security Covered so far: hard to compute ECC user’s secret key from public key. But real-world ECC is still being broken! ECC implementations ✎ produce incorrect results for some rare inputs; ✎ leak secret data for input points off curve; ✎ leak secret data through timing;
- etc. Attackers exploit this.
SLIDE 153 Rigidity limits number of curves can be generated curve-generation process.
❜ some sort of hash digits of ✙ and ❡. completely explained: this particular hash? ✙ and not ♣ 2? etc. not much flexibility. recommendation, fully rigid: ❜ smallest positive integer passing explained criteria. ECC security Covered so far: hard to compute ECC user’s secret key from public key. But real-world ECC is still being broken! ECC implementations ✎ produce incorrect results for some rare inputs; ✎ leak secret data for input points off curve; ✎ leak secret data through timing;
- etc. Attackers exploit this.
Better choices allow simple to be secure This is the motivation
SLIDE 154 number of curves generated curve-generation process. somewhat rigid: ❜ hash ✙ and ❡. explained: rticular hash? ✙ ♣ 2? etc. flexibility. recommendation, fully rigid: ❜
explained criteria. ECC security Covered so far: hard to compute ECC user’s secret key from public key. But real-world ECC is still being broken! ECC implementations ✎ produce incorrect results for some rare inputs; ✎ leak secret data for input points off curve; ✎ leak secret data through timing;
- etc. Attackers exploit this.
Better choices of curves allow simple implementations to be secure implementations. This is the primary motivation for SafeCurves.
SLIDE 155 curves cess. rigid: ❜ ✙ ❡ ✙ ♣ fully rigid: ❜ integer ECC security Covered so far: hard to compute ECC user’s secret key from public key. But real-world ECC is still being broken! ECC implementations ✎ produce incorrect results for some rare inputs; ✎ leak secret data for input points off curve; ✎ leak secret data through timing;
- etc. Attackers exploit this.
Better choices of curves allow simple implementations to be secure implementations. This is the primary motivation for SafeCurves.
SLIDE 156 ECC security Covered so far: hard to compute ECC user’s secret key from public key. But real-world ECC is still being broken! ECC implementations ✎ produce incorrect results for some rare inputs; ✎ leak secret data for input points off curve; ✎ leak secret data through timing;
- etc. Attackers exploit this.
Better choices of curves allow simple implementations to be secure implementations. This is the primary motivation for SafeCurves.
SLIDE 157 ECC security Covered so far: hard to compute ECC user’s secret key from public key. But real-world ECC is still being broken! ECC implementations ✎ produce incorrect results for some rare inputs; ✎ leak secret data for input points off curve; ✎ leak secret data through timing;
- etc. Attackers exploit this.
Better choices of curves allow simple implementations to be secure implementations. This is the primary motivation for SafeCurves. Example of new requirement: twist security. If curve isn’t twist-secure: Twist attacks break ladder implementations that don’t check whether input point is on curve. Security-simplicity conflict.
SLIDE 158 security Covered so far: to compute ECC user’s key from public key. real-world ECC being broken! implementations ✎ duce incorrect results
✎ secret data input points off curve; ✎ secret data through timing; ttackers exploit this. Better choices of curves allow simple implementations to be secure implementations. This is the primary motivation for SafeCurves. Example of new requirement: twist security. If curve isn’t twist-secure: Twist attacks break ladder implementations that don’t check whether input point is on curve. Security-simplicity conflict.
SLIDE 159 ECC user’s public key. ECC roken! implementations ✎ rect results inputs; ✎ data
✎ data timing; exploit this. Better choices of curves allow simple implementations to be secure implementations. This is the primary motivation for SafeCurves. Example of new requirement: twist security. If curve isn’t twist-secure: Twist attacks break ladder implementations that don’t check whether input point is on curve. Security-simplicity conflict.
SLIDE 160
user’s . ✎ ✎ curve; ✎ this. Better choices of curves allow simple implementations to be secure implementations. This is the primary motivation for SafeCurves. Example of new requirement: twist security. If curve isn’t twist-secure: Twist attacks break ladder implementations that don’t check whether input point is on curve. Security-simplicity conflict.
SLIDE 161
Better choices of curves allow simple implementations to be secure implementations. This is the primary motivation for SafeCurves. Example of new requirement: twist security. If curve isn’t twist-secure: Twist attacks break ladder implementations that don’t check whether input point is on curve. Security-simplicity conflict.
SLIDE 162
choices of curves simple implementations secure implementations. the primary motivation for SafeCurves. Example of new requirement: security. curve isn’t twist-secure: attacks break implementations don’t check whether point is on curve. Security-simplicity conflict.
SLIDE 163
implementations implementations. rimary SafeCurves. requirement: wist-secure: reak implementations whether curve. y-simplicity conflict.
SLIDE 164
implementations implementations. SafeCurves. requirement: conflict.
SLIDE 165