From 87a5078caf6c9bd66299e65f190162e61e0f2b2d Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 27 May 2021 13:18:16 +0100 Subject: [PATCH] sd values for n \in [256, 2048] --- hybrid_decoding.py | 329 +++++++++++++++++++++++++++++++++++++++++ param_gen_128.sobj | Bin 13606 -> 0 bytes param_gen_80.sobj | Bin 16749 -> 0 bytes params_gen_128_32.sobj | Bin 0 -> 12030 bytes params_gen_128_64.sobj | Bin 0 -> 16556 bytes params_gen_80_32.sobj | Bin 0 -> 8797 bytes params_gen_80_64.sobj | Bin 0 -> 13823 bytes 7 files changed, 329 insertions(+) create mode 100644 hybrid_decoding.py delete mode 100644 param_gen_128.sobj delete mode 100644 param_gen_80.sobj create mode 100644 params_gen_128_32.sobj create mode 100644 params_gen_128_64.sobj create mode 100644 params_gen_80_32.sobj create mode 100644 params_gen_80_64.sobj diff --git a/hybrid_decoding.py b/hybrid_decoding.py new file mode 100644 index 000000000..d70a3b584 --- /dev/null +++ b/hybrid_decoding.py @@ -0,0 +1,329 @@ +# -*- coding: utf-8 -*- +""" +Seucrity estimates for the Hybrid Decoding attack + +Requires a local copy of the LWE Estimator from https://bitbucket.org/malb/lwe-estimator/src/master/estimator.py in a folder called "estimator" +""" + +from sage.all import ZZ, binomial, sqrt, log, exp, oo, pi, prod, RR +from sage.probability.probability_distribution import RealDistribution +from estimator import estimator as est +from concrete_params import concrete_LWE_params + +## Core cost models + +core_sieve = lambda beta, d, B: ZZ(2)**RR(0.292*beta + 16.4) +core_qsieve = lambda beta, d, B: ZZ(2)**RR(0.265*beta + 16.4) + +## Utility functions + +def sq_GSO(d, beta, det): + """ + Return squared GSO lengths after lattice reduction according to the GSA + + :param q: LWE modulus + :param d: lattice dimension + :param beta: blocksize used in BKZ + :param det: lattice determinant + + """ + + r = [] + for i in range(d): + r_i = est.delta_0f(beta)**(((-2*d*i) / (d-1))+d) * det**(1/d) + r.append(r_i**2) + + return r + + +def babai_probability_wun16(r, norm): + """ + Compute the probability of Babai's Nearest Plane, using techniques from the NTRULPrime submission to NIST + + :param r: squared GSO lengths + :param norm: expected norm of the target vector + + """ + R = [RR(sqrt(t)/(2*norm)) for t in r] + T = RealDistribution('beta', ((len(r)-1)/2,1./2)) + probs = [1 - T.cum_distribution_function(1 - s**2) for s in R] + return prod(probs) + + +## Estimate hybrid decoding attack complexity + +def hybrid_decoding_attack(n, alpha, q, m, secret_distribution, + beta, tau = None, mitm=True, reduction_cost_model=est.BKZ.sieve): + """ + Estimate cost of the Hybrid Attack, + + :param n: LWE dimension `n > 0` + :param alpha: noise rate `0 ≤ α < 1`, noise will have standard deviation `αq/sqrt{2π}` + :param q: modulus `0 < q` + :param m: number of LWE samples `m > 0` + :param secret_distribution: distribution of secret + :param beta: BKZ block size β + :param tau: guessing dimension τ + :param mitm: simulate MITM approach (√ of search space) + :param reduction_cost_model: BKZ reduction cost model + + EXAMPLE: + + hybrid_decoding_attack(beta = 100, tau = 250, mitm = True, reduction_cost_model = est.BKZ.sieve, **example_64()) + + rop: 2^65.1 + pre: 2^64.8 + enum: 2^62.5 + beta: 100 + |S|: 2^73.1 + prob: 0.104533 + scale: 12.760 + pp: 11 + d: 1798 + repeat: 42 + + """ + + n, alpha, q = est.Param.preprocess(n, alpha, q) + + # d is the dimension of the attack lattice + d = m + n - tau + + # h is the Hamming weight of the secret + # NOTE: binary secrets are assumed to have Hamming weight ~n/2, ternary secrets ~2n/3 + # this aligns with the assumptions made in the LWE Estimator + h = est.SDis.nonzero(secret_distribution, n=n) + sd = alpha*q/sqrt(2*pi) + + # compute the scaling factor used in the primal lattice to balance the secret and error + scale = est._primal_scale_factor(secret_distribution, alpha=alpha, q=q, n=n) + + # 1. get squared-GSO lengths via the Geometric Series Assumption + # we could also consider using the BKZ simulator, using the GSA is conservative + r = sq_GSO(d, beta, q**m * scale**(n-tau)) + + # 2. Costs + bkz_cost = est.lattice_reduction_cost(reduction_cost_model, est.delta_0f(beta), d) + enm_cost = est.Cost() + enm_cost["rop"] = d**2/(2**1.06) + + # 3. Size of search space + # We need to do one BDD call at least + search_space, prob, hw = ZZ(1), 1.0, 0 + + # if mitm is True, sqrt speedup in the guessing phase. This allows us to square the size + # of the search space at no extra cost. + # NOTE: we conservatively assume that this mitm process succeeds with probability 1. + ssf = sqrt if mitm else lambda x: x + + # use the secret distribution bounds to determine the size of the search space + a, b = est.SDis.bounds(secret_distribution) + + # perform "searching". This part of the code balances the enm_cost with the cost of lattice + # reduction, where enm_cost is the total cost of calling Babai's algorithm on each vector in + # the search space. + + if tau: + prob = est.success_probability_drop(n, h, tau) + hw = 1 + while hw < h and hw < tau: + prob += est.success_probability_drop(n, h, tau, fail=hw) + search_space += binomial(tau, hw) * (b-a)**hw + + if enm_cost.repeat(ssf(search_space))["rop"] > bkz_cost["rop"]: + # we moved too far, so undo + prob -= est.success_probability_drop(n, h, tau, fail=hw) + search_space -= binomial(tau, hw) * (b-a)**hw + hw -= 1 + break + hw += 1 + + enm_cost = enm_cost.repeat(ssf(search_space)) + + # we use the expectation of the target norm. This could be longer, or shorter, for any given instance. + target_norm = sqrt(m * sd**2 + h * RR((n-tau)/n) * scale**2) + + # account for the success probability of Babai's algorithm + prob*=babai_probability_wun16(r, target_norm) + + # create a cost string, as in the LWE Estimator, to store the attack parameters and costs + ret = est.Cost() + ret["rop"] = bkz_cost["rop"] + enm_cost["rop"] + ret["pre"] = bkz_cost["rop"] + ret["enum"] = enm_cost["rop"] + ret["beta"] = beta + ret["|S|"] = search_space + ret["prob"] = prob + ret["scale"] = scale + ret["pp"] = hw + ret["d"] = d + ret["tau"] = tau + + # 5. Repeat whole experiment ~1/prob times + ret = ret.repeat(est.amplify(0.99, prob), select={"rop": True, + "pre": True, + "enum": True, + "beta": False, + "d": False, + "|S|": False, + "scale": False, + "prob": False, + "pp": False, + "tau": False}) + + return ret + + +## Optimize attack parameters + +def parameter_search(n, alpha, q, m, secret_distribution, mitm = True, reduction_cost_model=est.BKZ.sieve): + + """ + :param n: LWE dimension `n > 0` + :param alpha: noise rate `0 ≤ α < 1`, noise will have standard deviation `αq/sqrt{2π}` + :param q: modulus `0 < q` + :param m: number of LWE samples `m > 0` + :param secret_distribution: distribution of secret + :param beta_search: tuple (β_min, β_max, granularity) for the search space of β, default is (60,301,20) + :param tau: tuple (τ_min, τ_max, granularity) for the search space of τ, default is (0,501,20) + :param mitm: simulate MITM approach (√ of search space) + :param reduction_cost_model: BKZ reduction cost model + + EXAMPLE: + + parameter_search(mitm = False, reduction_cost_model = est.BKZ.sieve, **example_64()) + + rop: 2^69.5 + pre: 2^68.9 + enum: 2^68.0 + beta: 110 + |S|: 2^40.9 + prob: 0.045060 + scale: 12.760 + pp: 6 + d: 1730 + repeat: 100 + tau: 170 + + parameter_search(mitm = True, reduction_cost_model = est.BKZ.sieve, **example_64()) + + rop: 2^63.4 + pre: 2^63.0 + enum: 2^61.5 + beta: 95 + |S|: 2^72.0 + prob: 0.125126 + scale: 12.760 + pp: 11 + d: 1666 + repeat: 35 + tau: 234 + + """ + + primald = est.partial(est.drop_and_solve, est.dual_scale, postprocess=True, decision=True) + bl = primald(n, alpha, q, secret_distribution=secret_distribution, m=m, reduction_cost_model=reduction_cost_model) + + # we take the number of LWE samples used to be the same as in the primal attack in the LWE Estimator + m = bl["m"] + + f = est.partial(hybrid_decoding_attack, n=n, alpha=alpha, q=q, m=m, secret_distribution=secret_distribution, + reduction_cost_model=reduction_cost_model, + mitm=mitm) + + # NOTE: we decribe our searching strategy below. To produce more accurate estimates, + # change this part of the code to ensure a more granular search. As we are using + # homomorphic-encryption style parameters, the running time of the code can be quite high, + # justifying the below choices. + # We start at beta = 60 and go up to beta_max in steps of 50 + + beta_max = bl["beta"] + 100 + beta_search = (40, beta_max, 50) + + best = None + for beta in range(beta_search[0], beta_search[1], beta_search[2])[::-1]: + tau = 0 + best_beta = None + count = 3 + while tau < n: + if count >= 0: + cost = f(beta=beta, tau=tau) + if best_beta is not None: + # if two consecutive estimates don't decrease, stop optimising over tau + if best_beta["rop"] < cost["rop"]: + count -= 1 + cost["tau"] = tau + if best_beta is None: + best_beta = cost + if RR(log(cost["rop"],2)) < RR(log(best_beta["rop"],2)): + best_beta = cost + if best is None: + best = cost + if RR(log(cost["rop"],2)) < RR(log(best["rop"],2)): + best = cost + tau += n//100 + + # now do a second, more granular search + # we start at the beta which produced the lowest running time, and search ± 25 in steps of 10 + tau_gap = max(n//100, 1) + for beta in range(best["beta"] - 25, best["beta"] + 25, 10)[::-1]: + tau = max(best["tau"] - 25,0) + best_beta = None + count = 3 + while tau <= best["tau"] + 25: + if count >= 0: + cost = f(beta=beta, tau=tau) + if best_beta is not None: + # if two consecutive estimates don't decrease, stop optimising over tau + if best_beta["rop"] < cost["rop"]: + count -= 1 + cost["tau"] = tau + if best_beta is None: + best_beta = cost + if RR(log(cost["rop"],2)) < RR(log(best_beta["rop"],2)): + best_beta = cost + if best is None: + best = cost + if RR(log(cost["rop"],2)) < RR(log(best["rop"],2)): + best = cost + tau += tau_gap + + return best + +def get_all_security_levels(params): + """ A function which gets the security levels of a collection of TFHE parameters, + using the four cost models: classical, quantum, classical_conservative, and + quantum_conservative + :param params: a dictionary of LWE parameter sets (see concrete_params) + + EXAMPLE: + sage: X = get_all_security_levels(concrete_LWE_params) + sage: X + [['LWE128_256', + 126.692189756144, + 117.566189756144, + 98.6960000000000, + 89.5700000000000], ...] + """ + + RESULTS = [] + + for param in params: + + results = [param] + x = params["{}".format(param)] + n = x["n"] * x["k"] + q = 2 ** 32 + sd = 2 ** (x["sd"]) * q + alpha = sqrt(2 * pi) * sd / RR(q) + secret_distribution = (0, 1) + # assume access to an infinite number of papers + m = oo + + model = est.BKZ.sieve + estimate = parameter_search(mitm = True, reduction_cost_model = est.BKZ.sieve, n = n, q = q, alpha = alpha, m = m, secret_distribution = secret_distribution) + results.append(get_security_level(estimate)) + + RESULTS.append(results) + + return RESULTS \ No newline at end of file diff --git a/param_gen_128.sobj b/param_gen_128.sobj deleted file mode 100644 index 1a305290ea03924964eef8fdd3a2d63f0bef8d3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13606 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 diff --git a/param_gen_80.sobj b/param_gen_80.sobj deleted file mode 100644 index 951a1082e142ae70d7ee2978e6282e182eed9aca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16749 zcmeI3YfzKt`mf~_KoU?uA>k+iqGAxj3zQ(30|!xoT3Z#6ST)G22rePYA_xNEAS%eA zVu?iG#0s8}R#PcKq+PZcO2H?!m5Ly%HNaafT4|JjgXqQudET#k_F-o4*?YzhIym{@ zT;9)p{eE};*^qvJW0j|sQ^v1va-X|CypjI!61Sq))hBoF{hxlB`P0m=(faJj20O;V z`~xo{KfDz``tpg}mSM{^k1Z{nUG4vzoa}6r(ONC~?0>wJcPy?x@yqAVgC6gBZf);M zFLHV_yt?o09v{1@Q&s;z!WlRF z%m1D2A%3&JrTS2uu*L4X=MgVoKNXz&y8#z4N{7pTx70r$=qew{+L0@JFQ0Lh@kwsQ zSk`a3GShs9oT1E()n?h|$~^NK7a7NMV@I=Ua%J}UjPr~uxv?WzALPoAd`2^)Avbm` z>&ILfIiGQkaWl79o5jkNt;lCwW)$W2j%HoUl{x1#niz`Q-jS@#T-mC8Mhl}Rw|6XS zB3EXd--I!)a(AfuY2i(c{TD~F_vG$q>t}~I zUG2X(mi;7mM|(dhyh+}_TboVG{q3uM@9?IJ{kuoAi^BE~rDdJH_phf)U1;;F7lUbO zXYX}ARlW=zU-e=rE%)rbZ=Q;Dp_PonT*`|O+0D4r&U@e0f{uePLxyg~Wq01YU5j_7 zB{enO{e9$scuE$2=G$jqw%q-F?0|ksW^~5$*#Yb>ReOLm<#LvBG1uj{tk;6n3&YgW zm{CF5RKr3+>Sx2$k(g(K=&1&OLF$!Z>R8OLf;&?UmV#8paJ@F>cL8InVVNNH(s2D~ z%!r_As(~sF|2~y?53EG&a0*9#vFG1?X;e^qc zF~O;+hDCzZ^TP=vG0z2?ry2qUsm;R)W8ME2^iMTV1gYnSA85OALGV-qQ;>Rj_`ztm zR?s@t;37zE8h$X+{f8iXsv%5}+A{oLtot{?;z+<4Tp?$KNG}HH3SI8t_+8ab^j{3JJnz%7*hAui-qe=avu|t2d-KP5(@!U!MgRw&|*xRQ2 zg5#G=>W9W&|H)oG-M2D+`=tKi*y|Uirmt7Jf9*EW+1bDG+Z3Mh+wjSf*MCil`EMdg zF^doMysrjoKlSG|-wm>yS*uvaEQN4?>+#~_$B!2sU!L$U=D8*3=sVqauB{XGY*GKB zeoy^X&G|u=D=VC3#F7hlx2`W`sE2-%-SWj^o{Nt*VY~A`B43n8c{22Mh00f ztT2`d>zpvB^@rjgj{i{f!}5f0nAewFr)RlmtrZWl99Y3D8&-=jvh|0uA5N?&Sg|zW z_s(m1YnBMN3l|DEbbp_bKu&N@Fi!a3+R>ysUR_ijx9+4)l@cP%5t@A#eeF`xrie|v zO;MYwuZ-3SgdYh5g$KHyWF(j**di|imD2)w6+vG z;YMMA@N;2$>)y(}g?r2QdL`UpCea_dKlFGQbN@ikE48({a!vHLGfAcHp-V#P?Q8C5 z_gqzHsGq4_Ybb-)7}p%G1z$TMfB zRA2W@`f6ma)>*q%yQ;hH?MWBjDBZ!`!NVcuMrO}JyW@x5)CL{Bd(7bi9Vo)-8Y>@Fl z!~q$$zGa@E$GgXS#K#=W?7627P+wPP)yRe>R!taBcudp? z9a?W5zgcwi=uPhjKQmkC``q_=?29>=)$>pts%}^3)(j0zgijbvESabl+O!@zeyHfs z(L>%3?lI5Ox4Ccg*cS6Dv!`DjtZr3j*K`a`giV-C&?jnzZmqA6zb<-x^tJbcer6~A zu=`<;!!fV2dWO}j)dd{=U(a9avU|Sf=mVv|EuK>N89;S8kI!dl!+yk@=K$m zI8mQCYwN13s;f6tZSXR0PeFttAz8RS=4?_IuPdsH+jY|Ux4IWqFRCr8EWM^P>MiOW z>rLxF%)F4~&G(LOSFcos@+~??I~=bSV$5^buY}Qx2&huo7I1m`B~B~ z{;udz&gdu3BXw<6ZPhtdIbPB2DdEC=p^=c=?Vpigk>HqMn($%fm88Y|#nE+~x=)

dsf4uTH5-@w(G)pfPPDEnykTVE3dg- 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 EZvj3^V*mgE diff --git a/params_gen_128_32.sobj b/params_gen_128_32.sobj new file mode 100644 index 0000000000000000000000000000000000000000..d24b8179b1c6569c7162d2f9c8b2a9e65c31f66c GIT binary patch literal 12030 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 literal 0 HcmV?d00001 diff --git a/params_gen_128_64.sobj b/params_gen_128_64.sobj new file mode 100644 index 0000000000000000000000000000000000000000..97a96c7bd79b59b0a02ca5f542d286a32a82eca8 GIT binary patch literal 16556 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 z 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

?Iz+4PF=mPCT_yL&;~kJfqC zS*9bzI!UB3eorrCdti;SdYEn!k&;&M%I;o~ZO{r>15H|Dhon__WlyizHf-fs-AooD zM6v@c-rXy-{bXHe^)sC&awI#1#d~^T+mLmc)!THRh?l$oCwBL)x81i!SVK%b6MNf_ MPB{OyBWBnC005(?b^rhX literal 0 HcmV?d00001