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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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
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
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
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
Pairings DH key DDH Signatures exchange (DSA and Schnorr) 93
Pairings DH key DDH Signatures exchange (DSA and Schnorr) Could there exist a generic dlog preprocessing attack with ! = # = $ %/%' ? 94
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
96
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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