Solving the Discrete Logarithm of a 113-bit Koblitz Curve with an FPGA Cluster
Erich Wenger and Paul Wolfger Graz University of Technology WECC 2014, Chennai, India
Solving the Discrete Logarithm of a 113-bit Koblitz Curve with an - - PowerPoint PPT Presentation
Solving the Discrete Logarithm of a 113-bit Koblitz Curve with an FPGA Cluster Erich Wenger and Paul Wolfger Graz University of Technology WECC 2014, Chennai, India We solved the discrete logarithm of a 113-bit Koblitz Curve.
Erich Wenger and Paul Wolfger Graz University of Technology WECC 2014, Chennai, India
Binary Koblitz curve - ECC2K-108 using 9,500 PCs in 126 days
Binary elliptic curve - ECC2-109 using 2,600 PCs for 510 days
Elliptic curve over 112-bit prime field using 200 Playstation 3 for 6 months
The higher the security level… …the lower the speed. With knowledge on the best attacks… …realistic security bounds are possible. …potentially smaller parameters can be used. …potentially faster algorithms can be used.
Parallelized Pollard’s Rho Algorithm
Iteration function Parallelized Pollard’s Rho
Reference Iteration function Expected Measured iterations iterations Teske [29] f(Xi) = Xi + R[j] 929 · 103 906 · 103 Wiener and Zuccherato [31] f(Xi) = min
0≤l<m
145 · 103 147 · 103 Gallant et al. [14] f(Xi) = Xi + σl(Xi) 145 · 103 166 · 103 Bailey et al. [4] f(Xi) = Xi + σ(l mod 16)/2+3(Xi) 145 · 103 166 · 103
41-bit Koblitz Curve
One NAND Gate:
~5 GE
AND OR NAND NOR XNOR XOR
µm2 1 GE 1.25 1.25 2.5 2.5 1
LUT FF
Time Area
ECC Breaker NextInput Iteration Function Point Addition Point Automorphism FIFO adder multiplier FIFO FIFO Xi ci di Xi+1 ci+1 di+1 Branching Table multiplier squarer inverter adder multiplier Interface Distinguished Point Storage Lambda Table F2m F2m F2m
Fn Fn Fn Fn
14 %
S + M 3S + M 7S + M 14S + M 28S + M 56S + M S + M S + M S
y1 y2 x1 x2 ADD ADD FIFO FIFO ADD a FIFO FIFO INV MUL SQU MUL ADD ADD FIFO ADD x3 y3
Method Size Parallel 5,497 LUTs Mastrovito 7,104 LUTs Bernstein’s Batch Binary Edwards 4,409 LUTs Recursive Karatsuba 3,757 LUTs
Square Square Compare x y x' y' x y x' y'
smallest Point
σi(P)
i+1
σi+1(P)
comparator tree x y rot 0 rot 1 rot 2 rot 3 C → N C → N FIFO BARREL ROTATE N → C N → C FIFO x' y' ...
Fn
F2m tion m F2m tion m
Distinguished Triples 1,750,000 3,500,000 5,250,000 7,000,000 Time [Days] 10 20 30 40 50
April 19th, 2014 Extrapolated: 24 days
import hashlib PX = str_to_poly(hashlib.sha256(str (0)). hexdigest ()) PY= PolynomialRing (K, ’PY’).gen() P_ROOTS = (PY^2+PX*PY+PX^3+a*PX^2+b). roots () P=E([PX ,P_ROOTS [0][0]]); P=P*h QX = str_to_poly(hashlib.sha256(str (1)). hexdigest ()) Q_ROOTS = (PY^2+QX*PY+QX^3+a*QX^2+b). roots () Q=E([QX ,Q_ROOTS [0][0]]); Q=Q*h
Series Development Kit LUTs used maximum Frequency Price Virtex-6 ML605 38% 261 MHz 2,495 USD Spartan-6 LX150T
995 USD Artix-7 AC701 62% 264 MHz 999 USD Virtex-7 VC707 28% 313 MHz 3,495 USD Kintex-7 KC705 42% 313 MHz 1,695 USD
Target Iterations Costs [USD] Days (Estimated) ECC2K-112 8.5 x 10 42,000 22 ECC2-113 90 x 10 42,000 118 ECC2K-130 4,055 x 10 1,000,000 127 ECC2-131 46,239 x 10 10,000,000 145 ECC2-163 3,030 x 10 1,000,000,000 189,934
2x speed equals 2 extra bits to attack 128x speed equals 14 extra bits to attack
0" 10" 20" 30" 40" 50" 60" 70" 1 1 3 * b i t " K
l i t z " a = 1 " 1 1 3 * b i t " K
l i t z " a = " 1 1 3 * b i t " W e i e r s t r a s s " 1 2 7 * b i t " K
l i t z " a = 1 " 1 2 7 * b i t " K
l i t z " a = " 1 2 7 * b i t " W e i e r s t r a s s " 1 3 1 * b i t " K
l i t z " a = 1 " 1 3 1 * b i t " K
l i t z " a = " 1 3 1 * b i t " W e i e r s t r a s s " Expected(Number(of(Itera2ons([bits]( Without"Speedup" With"Speedup"
Prime numbers: 109, 113, 127, 131, …
Prime numbers: 109, 113, 127, 131, …
Erich Wenger and Paul Wolfger Graz University of Technology WECC 2014, Chennai, India