|
- #!/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")
|