#!/usr/bin/sage -python # -*- coding: latin-1 -*- load("../framework/instance_gen.sage") verbosity = 0 report_every = None """ Example Uncomment the following to get the detailed computation """ # verbosity = 2 # report_every = 50 for params in ['LAC-128', 'LAC-192', 'LAC-256']: logging("Set of parameters: " + params) if params == 'LAC-128': n = 512 m = 512 q = 251 D_e = {-1: 0.25, 0: 0.5, 1: 0.25} D_s = D_e elif params == 'LAC-192': n = 1024 m = 1024 q = 251 D_e = {-1: 0.125, 0: 0.75, 1: 0.125} D_s = D_e elif params == 'LAC-256': n = 1024 m = 1024 q = 251 D_e = {-1: 0.25, 0: 0.5, 1: 0.25} D_s = D_e # Assessement of the attack without hints A, b, dbdd = initialize_LAC_instance(DBDD_predict_diag, n, q, m, D_e, D_s, verbosity=verbosity) if report_every is not None: dbdd.integrate_q_vectors(q, indices=range(0, n + m), report_every=report_every) else: dbdd.integrate_q_vectors(q, indices=range(0, n + m)) (beta, _) = dbdd.estimate_attack() logging("Attack without hints: %3.2f bikz" % beta, style="HEADER") # Assessement of the attack with hints A, b, dbdd = initialize_LAC_instance(DBDD_predict, n, q, m, D_e, D_s, verbosity=verbosity) v = vec([1 if i < m else 0 for i in range(m + n)]) dbdd.integrate_perfect_hint(v, 0) v = vec([0 if i < m else 1 for i in range(m + n)]) dbdd.integrate_perfect_hint(v, 0) M = q * identity_matrix(n + m) i = 0 V = vec(M[0] - M[1]) logging("[...%d]" % report_every, newline=False) while dbdd.integrate_short_vector_hint(V): if report_every is not None and ((i % report_every == 0) or (i == m - 1)): verbose = 2 else: verbose = 0 dbdd.verbosity = verbose if verbose == 2: logging("[...%d]" % report_every, newline=False) i += 1 V = vec(M[i] - M[i + 1]) (beta, _) = dbdd.estimate_attack() logging("Attack with hints: %3.2f bikz" % beta, style="HEADER")