the discrete logarithm problem with preprocessing
play

The Discrete Logarithm Problem with Preprocessing Henry - PowerPoint PPT Presentation

The Discrete Logarithm Problem with Preprocessing Henry Corrigan-Gibbs and Dmitry Kogan Stanford University Eurocrypt 1 May 2018 Tel Aviv, Israel 38 Signatures (DSA and Schnorr) 39 DH key Signatures exchange (DSA and Schnorr) 40


  1. Preliminaries Define a pseudo-random walk on ! : " # ↦ " #%& where ' = Hash " # is a random function " #%& ) " #%& ) %& , " #%∑ + & + " # = - . … If you know the dlog of the endpoint of a walk, you know the dlog of the starting point! 72 [M10, LCH11, BL13]

  2. Preliminaries Define a pseudo-random walk on ! : " # ↦ " #%& where ' = Hash " # is a random function " #%& ) " #%& ) %& , " #%∑ + & + " # = - . … / If you know the dlog of the endpoint of a walk, you know the dlog of the starting point! 73 [M10, LCH11, BL13]

  3. Preliminaries Define a pseudo-random walk on ! : " # ↦ " #%& where ' = Hash " # is a random function " #%& ) " #%& ) %& , " #%∑ + & + " # = - . … / If you know the dlog of the endpoint of a walk, you know the dlog of the starting point! 74 [M10, LCH11, BL13]

  4. Preliminaries Define a pseudo-random walk on ! : " # ↦ " #%& where ' = Hash " # is a random function " #%& ) " #%& ) %& , " #%∑ + & + " # = - . … … / If you know the dlog of the endpoint of a walk, you know the dlog of the starting point! 75 [M10, LCH11, BL13]

  5. Preliminaries Define a pseudo-random walk on ! : " # ↦ " #%& where ' = Hash " # is a random function " #%& ) " #%& ) %& , " #%∑ + & + " # = - . … … / If you know the dlog of the endpoint of a walk, you know the dlog of the starting point! 76 [M10, LCH11, BL13]

  6. Preliminaries Define a pseudo-random walk on ! : " # ↦ " #%& where ' = Hash " # is a random function " #%& ) " #%& ) %& , " #%∑ + & + " # = - . … … / If you know the dlog of the endpoint of a walk, you know the dlog of the starting point! 77 [M10, LCH11, BL13]

  7. Preliminaries Define a pseudo-random walk on ! : " # ↦ " #%& where ' = Hash " # is a random function " #%& ) " #%& ) %& , " #%∑ + & + " # = - . … … / If you know the dlog of the endpoint of a walk, you know the dlog of the starting point! 78 [M10, LCH11, BL13]

  8. Preliminaries Define a pseudo-random walk on ! : " # ↦ " #%& where ' = Hash " # is a random function " #%& ) " #%& ) %& , " #%∑ + & + " # = - . … … / 0 If you know the dlog of the endpoint of a walk, you know the dlog of the starting point! 79 [M10, LCH11, BL13]

  9. Preprocessing phase Length: ! "/$ Build ! "/$ chains of • length ! "/$ • Store dlogs of chain ! "/$ chains endpoints Online phase Walk %(! "/$ ) steps • … … • When you hit a stored point, output the discrete log Advice string 80 [M10, LCH11, BL13]

  10. Preprocessing phase Length: ! "/$ Build ! "/$ chains of • length ! "/$ • Store dlogs of chain ! "/$ chains endpoints Advice: ( %(! "/$ ) bits Online phase Walk %(! "/$ ) steps • … … • When you hit a stored point, output the discrete log Advice string 81 [M10, LCH11, BL13]

  11. Preprocessing phase Length: ! "/$ Build ! "/$ chains of • length ! "/$ • Store dlogs of chain ! "/$ chains endpoints Advice: ( %(! "/$ ) bits Online phase Walk %(! "/$ ) steps • … … • When you hit a stored point, output the discrete log Advice string 82 [M10, LCH11, BL13]

  12. Preprocessing phase Length: ! "/$ Build ! "/$ chains of • length ! "/$ • Store dlogs of chain ! "/$ chains endpoints Advice: ( %(! "/$ ) bits Online phase Walk %(! "/$ ) steps • … … ) * • When you hit a stored point, output the discrete log Advice string 83 [M10, LCH11, BL13]

  13. Preprocessing phase Length: ! "/$ Build ! "/$ chains of • length ! "/$ • Store dlogs of chain ! "/$ chains endpoints Advice: ( %(! "/$ ) bits Online phase Walk %(! "/$ ) steps • … … ) * • When you hit a stored point, output the discrete log Advice string 84 [M10, LCH11, BL13]

  14. Preprocessing phase Length: ! "/$ Build ! "/$ chains of • length ! "/$ • Store dlogs of chain ! "/$ chains endpoints Advice: ( %(! "/$ ) bits Online phase Walk %(! "/$ ) steps • … … ) * • When you hit a stored point, output the discrete log Advice string 85 [M10, LCH11, BL13]

  15. Preprocessing phase Length: ! "/$ Build ! "/$ chains of • length ! "/$ • Store dlogs of chain ! "/$ chains endpoints Advice: ( %(! "/$ ) bits Online phase Walk %(! "/$ ) steps • … … ) * • When you hit a stored point, output the discrete log Advice string 86 [M10, LCH11, BL13]

  16. Preprocessing phase Length: ! "/$ Build ! "/$ chains of • length ! "/$ • Store dlogs of chain ! "/$ chains endpoints Advice: ( %(! "/$ ) bits Online phase Walk %(! "/$ ) steps • … … ) * • When you hit a stored point, output the discrete log Time: ( %(! "/$ ) steps Advice string 87 [M10, LCH11, BL13]

  17. Preprocessing phase Length: ! "/$ Build ! "/$ chains of • length ! "/$ • Store dlogs of chain ! "/$ chains endpoints Advice: ( %(! "/$ ) bits Online phase Walk %(! "/$ ) steps • … … ) * • When you hit a stored point, output the discrete log Time: ( %(! "/$ ) steps Preprocessing time: + Ω(! -/$ ) Advice string 88 [M10, LCH11, BL13]

  18. Generic discrete log 25 256-bi bit ECDL à Without preprocessing: Ω " #/% & '&( ti time à With preprocessing: ) *(" #/, ) & (. ti time Related preprocessing attacks break: • Multiple discrete log problem [This paper] “ • One-round Even-Mansour cipher [FJM14] • Merkle-Damgård hash with random IV [CDGS17] 89

  19. Generic discrete log 25 256-bi bit ECDL à Without preprocessing: Ω " #/% & '&( ti time à With preprocessing: ) *(" #/, ) & (. ti time Related preprocessing attacks break: • Multiple discrete log problem [This paper] • One-round Even-Mansour cipher [FJM14] • Merkle-Damgård hash with random IV [CDGS17] 90

  20. Generic discrete log 256-bi 25 bit ECDL à Without preprocessing: Ω " #/% & '&( ti time à With preprocessing: ) *(" #/, ) & (. ti time Is this dlog attack the best possible?! Related preprocessing attacks break: • Multiple discrete log problem [This paper] • One-round Even-Mansour cipher [FJM14] • Merkle-Damgård hash with random IV [CDGS17] 91

  21. Generic discrete log 25 256-bi bit ECDL à Without preprocessing: Ω " #/% & '&( ti time à With preprocessing: ) *(" #/, ) & (. ti time Related preprocessing attacks break: • Multiple discrete log problem [This paper] • One-round Even-Mansour cipher [FJM14] • Merkle-Damgård hash with random IV [CDGS17] 92

  22. Pairings DH key DDH Signatures exchange (DSA and Schnorr) 93

  23. Pairings DH key DDH Signatures exchange (DSA and Schnorr) Could there exist a generic dlog preprocessing attack with ! = # = $ %/%' ? 94

  24. Pairings DH key DDH Signatures exchange (DSA and Schnorr) Could there exist a generic Preprocessing attacks dlog preprocessing attack with ! = # = $ %/%' ? might make us worry about 256-bit EC groups 95

  25. 96

  26. This talk Background: Preprocessing attacks are relevant • Preexisting ! = # = $ %(' (/* ) generic attack on discrete log Our results: Preprocessing lower-bounds and attacks • The $ %(' (/* ) generic dlog attack is optimal • Any such attack must use lots of preprocessing: Ω(' -/* ) • New $ %(' (/. ) preprocessing attack on DDH-like problem Open questions 97

  27. Th Theorem. [Our paper] Every generic dlog algorithm with preprocessing that: • uses ! bits of group-specific advice, • uses " online time, and • succeeds with probability # , must satisfy: !" $ = & Ω(#)) 98

  28. Th Theorem. [Our paper] Every generic dlog algorithm with preprocessing that: • uses ! bits of group-specific advice, • uses " online time, and • succeeds with probability # , must satisfy: !" $ = & Ω(#)) This bound is tight for the full range of parameters (up to log factors) 99

  29. Th Theorem. [Our paper] Every generic dlog algorithm with preprocessing that: • uses ! bits of group-specific advice, • uses " online time, and • succeeds with probability # , must satisfy: !" $ = & Ω(#)) 100

  30. Th Theorem. [Our paper] Every generic dlog algorithm with preprocessing that: • uses ! bits of group-specific advice, • uses " online time, and • succeeds with probability # , must satisfy: !" $ = & Ω(#)) Shoup’s proof technique (1997) relies on + having no information about the group , when it starts running à Need different proof technique 101

  31. Th Theorem. [Our paper] Every generic dlog algorithm with preprocessing that: • uses ! bits of group-specific advice, • uses " online time, and • succeeds with probability # , must satisfy: !" $ = & Ω(#)) 102

  32. Th Theorem. [Our paper] Every generic dlog algorithm with preprocessing that: • uses + bits of group-specific advice, • uses " online time, and • succeeds with probability ( , must satisfy: +" $ = , Ω(()) Th Theorem. [Our paper] Furthermore, the preprocessing time ! must satisfy !" + " $ = Ω(()) 103

  33. Th Theorem. [Our paper] Every generic dlog algorithm with preprocessing that: • uses + bits of group-specific advice, • uses " online time, and • succeeds with probability ( , must satisfy: +" $ = , Online time ) -// implies Ω(()) Ω() $// ) preprocessing Th Theorem. [Our paper] Furthermore, the preprocessing time ! must satisfy !" + " $ = Ω(()) 104

  34. Th Theorem. [Our paper] Every generic dlog algorithm with preprocessing that: • uses + bits of group-specific advice, • uses " online time, and • succeeds with probability ( , must satisfy: +" $ = , Ω(()) Th Theorem. [Our paper] Furthermore, the preprocessing time ! must satisfy !" + " $ = Ω(()) 105

  35. Reminder: Generic-group model • A group is defined by an injective “l “lab abeling” function !: ℤ $ → 0,1 ∗ • Algorithm has access to a gr group up-op operation on or oracle : * + ! , , ! - ↦ ! , + - , representing (2, 2 3 ), E.g., A dlog algorithm takes as input ! 1 , ! 0 make queries to * + , outputs 0 . 106

  36. We prove the lower bound using an incompressibility argument [Yao90, GT00, DTT10, DHT12, DGK17…] Use ! to compress the mapping ": ℤ % → 0,1 ∗ that defines the group Similar technique used in [DHT12] (Random) Encoder Decoder 4 "(4) 4 "(4) Compressed 1 101 1 101 representation 2 110 2 110 Enc (") ! ! 3 001 3 001 … … • Adv ! uses advice + and online time , such that +, - = /(1) ⇒ Encoder compresses well ⇒ Lower bound on + and , • Random string is incompressible 107

  37. We prove the lower bound using an incompressibility argument [Yao90, GT00, DTT10, DHT12, DGK17…] Use ! to compress the mapping ": ℤ % → 0,1 ∗ that defines the group Similar technique used in [DHT12] (Random) Encoder Decoder 4 "(4) 4 "(4) Compressed 1 101 1 101 representation 2 110 2 110 Enc (") ! ! 3 001 3 001 … … • Adv ! uses advice + and online time , such that +, - = /(1) ⇒ Encoder compresses well ⇒ Lower bound on + and , • Random string is incompressible 108

  38. We prove the lower bound using an incompressibility argument [Yao90, GT00, DTT10, DHT12, DGK17…] Use ! to compress the mapping ": ℤ % → 0,1 ∗ that defines the group Similar technique used in [DHT12] (Random) Encoder Decoder 4 "(4) 4 "(4) Compressed 1 101 1 101 representation 2 110 2 110 Enc (") ! ! 3 001 3 001 … … • Adv ! uses advice + and online time , such that +, - = /(1) ⇒ Encoder compresses well ⇒ Lower bound on + and , • Random string is incompressible 109

  39. We prove the lower bound using an incompressibility argument [Yao90, GT00, DTT10, DHT12, DGK17…] Use ! to compress the mapping ": ℤ % → 0,1 ∗ that defines the group Similar technique used in [DHT12] (Random) Encoder Decoder 4 "(4) 4 "(4) Compressed 1 101 1 101 representation 2 110 2 110 Enc (") ! ! 3 001 3 001 … … Wlog, assume ! is • Adv ! uses advice + and online time , such that +, - = /(1) deterministic ⇒ Encoder compresses well ⇒ Lower bound on + and , • Random string is incompressible 110

  40. We prove the lower bound using an incompressibility argument [Yao90, GT00, DTT10, DHT12, DGK17…] Use ! to compress the mapping ": ℤ % → 0,1 ∗ that defines the group Similar technique used in [DHT12] (Random) Encoder Decoder 4 "(4) 4 "(4) Compressed 1 101 1 101 representation 2 110 2 110 Enc (") ! ! 3 001 3 001 … … • Adv ! uses advice + and online time , such that +, - = /(1) ⇒ Encoder compresses well ⇒ Lower bound on + and , • Random string is incompressible 111

  41. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Encoder & %(&) 1 101 2 110 3 001 4 000 5 1111 … 112

  42. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % & %(&) 1 101 2 110 3 001 4 000 5 1111 … 113

  43. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " & %(&) 1 101 2 110 3 001 4 000 5 1111 … 114

  44. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " & %(&) 1 101 2 110 3 001 4 000 5 1111 … 115

  45. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & ' %(') 1 101 2 110 3 001 4 000 5 1111 … 116

  46. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & * %(*) 1 101 ! $ (000) 2 110 3 001 4 000 5 1111 … 117

  47. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & * %(*) 1 101 ! $ (000) 2 110 3 001 First bitstring in image of % , representing some + , 4 000 5 1111 … 118

  48. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & * %(*) 1 101 ! $ (000) 2 110 3 001 4 000 5 1111 … 119

  49. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & * %(*) 1 101 ! $ (000) 2 110 3 001 4 000 5 1111 … 120

  50. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & * %(*) 1 101 Responses to ! $ ’s ! $ (000) 2 110 queries on 3 001 “000” 4 000 5 1111 … 121

  51. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & + %(+) 1 101 Responses to ! $ ’s ! $ (000) 2 110 queries on 3 001 “000” 4 000 ! $ (001) 5 1111 … 122

  52. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & + %(+) 1 101 Responses to ! $ ’s ! $ (000) 2 110 queries on 3 001 “000” 4 000 ! $ (001) 5 1111 … 123

  53. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & + %(+) 1 101 Responses to ! $ ’s ! $ (000) 2 110 queries on 3 001 “000” Responses 4 000 to ! $ ’s ! $ (001) 5 1111 queries on “001” … 124

  54. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & + %(+) 1 101 Responses to ! $ ’s ! $ (000) 2 110 queries on 3 001 “000” Responses 4 000 to ! $ ’s ! $ (001) 5 1111 queries on “001” … … … 125

  55. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & , %(,) 1 101 Responses to ! $ ’s ! $ (000) 2 110 queries on 3 001 “000” Run ! $ on + instances, Responses 4 000 for some parameter + to ! $ ’s ! $ (001) 5 1111 queries on “001” … … … 126

  56. a: Use preprocessing dlog adversary ! " , ! $ to build a Pr Proof oof idea: compressed representation of the mapping % . [Yao90, GT00, DHT12] Compressed Encoder representation of % ! " st & , %(,) 1 101 Responses to ! $ ’s ! $ (000) 2 110 queries on 3 001 “000” Run ! $ on + instances, Responses 4 000 for some parameter + to ! $ ’s ! $ (001) 5 1111 queries on “001” … … … Rest of % 127

  57. a: Use preprocessing dlog adversary % & , % ( to build a Pr Proof oof idea: compressed representation of the mapping " . [Yao90, GT00, DHT12] Compressed Decoder representation of " st ) ! "(!) • Run % ( on - instances 110 1 101 111 • Whenever % ( outputs a … 2 110 dlog, we get one value "(!) “for free” 3 001 101 4 000 … 5 1111 … … Rest of " 128

  58. a: Use preprocessing dlog adversary % & , % ( to build a Pr Proof oof idea: compressed representation of the mapping " . [Yao90, GT00, DHT12] Compressed Decoder representation of " st ) ! "(!) • Run % ( on - instances 110 1 101 % ( (000) 111 • Whenever % ( outputs a … 2 110 dlog, we get one value "(!) “for free” 3 001 101 4 000 … 5 1111 … … Rest of " 129

  59. a: Use preprocessing dlog adversary % & , % ( to build a Pr Proof oof idea: compressed representation of the mapping " . [Yao90, GT00, DHT12] Compressed Decoder representation of " st ) ! "(!) • Run % ( on - instances 110 1 101 % ( (000) 111 • Whenever % ( outputs a … 2 110 dlog, we get one value "(!) “for free” 3 001 101 4 000 … 5 1111 … … Rest of " 130

  60. a: Use preprocessing dlog adversary % & , % ( to build a Pr Proof oof idea: compressed representation of the mapping " . [Yao90, GT00, DHT12] Compressed Decoder representation of " st ) ! "(!) • Run % ( on - instances " 2 = ? 110 1 101 % ( (000) 111 • Whenever % ( outputs a … 2 110 dlog, we get one value "(!) “for free” 3 001 101 4 000 … 5 1111 … … Rest of " 131

  61. a: Use preprocessing dlog adversary % & , % ( to build a Pr Proof oof idea: compressed representation of the mapping " . [Yao90, GT00, DHT12] Compressed Decoder representation of " st ) ! "(!) • Run % ( on - instances " 2 = ? 110 1 101 % ( (000) 111 • Whenever % ( outputs a “110” … 2 110 dlog, we get one value "(!) “for free” 3 001 101 4 000 … 5 1111 … … Rest of " 132

  62. a: Use preprocessing dlog adversary % & , % ( to build a Pr Proof oof idea: compressed representation of the mapping " . [Yao90, GT00, DHT12] Compressed Decoder representation of " st ) ! "(!) • Run % ( on - instances " 2 = ? 110 1 101 % ( (000) 111 • Whenever % ( outputs a “110” … 2 110 dlog, we get one value "(!) “for free” 3 001 101 4 000 … 5 1111 … … Rest of " 133

  63. a: Use preprocessing dlog adversary % & , % ( to build a Pr Proof oof idea: compressed representation of the mapping " . [Yao90, GT00, DHT12] Compressed Decoder representation of " st ) ! "(!) • Run % ( on - instances 110 1 101 % ( (000) 111 • Whenever % ( outputs a … 2 110 dlog, we get one value "(!) “for free” 3 001 101 4 000 … 5 1111 … … Rest of " 134

  64. a: Use preprocessing dlog adversary % & , % ( to build a Pr Proof oof idea: compressed representation of the mapping " . [Yao90, GT00, DHT12] Compressed Decoder representation of " st ) ! "(!) • Run % ( on - instances " 5 = ? 110 1 101 % ( (000) 111 • Whenever % ( outputs a … 2 110 dlog, we get one value "(!) “for free” 3 001 101 4 000 … 5 1111 … … Rest of " 135

  65. a: Use preprocessing dlog adversary % & , % ( to build a Pr Proof oof idea: compressed representation of the mapping " . [Yao90, GT00, DHT12] Compressed Decoder representation of " st ) ! "(!) • Run % ( on - instances " 5 = ? 110 1 101 % ( (000) 111 • Whenever % ( outputs a “111” … 2 110 dlog, we get one value "(!) “for free” 3 001 101 4 000 … 5 1111 … … Rest of " 136

Recommend


More recommend