Fork of the official github repository of the framework Leaky-LWE-Estimator, a Sage Toolkit to attack and estimate the hardness of LWE with Side Information. https://github.com/lducas/leaky-LWE-Estimator
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

  1. #!/usr/bin/sage -python
  2. # -*- coding: latin-1 -*-
  3. load("../framework/instance_gen.sage")
  4. verbosity = 0
  5. report_every = None
  6. """ Example
  7. Uncomment the following to get the detailed computation
  8. """
  9. # verbosity = 2
  10. # report_every = 50
  11. for params in ['LAC-128', 'LAC-192', 'LAC-256']:
  12. logging("Set of parameters: " + params)
  13. if params == 'LAC-128':
  14. n = 512
  15. m = 512
  16. q = 251
  17. D_e = {-1: 0.25, 0: 0.5, 1: 0.25}
  18. D_s = D_e
  19. elif params == 'LAC-192':
  20. n = 1024
  21. m = 1024
  22. q = 251
  23. D_e = {-1: 0.125, 0: 0.75, 1: 0.125}
  24. D_s = D_e
  25. elif params == 'LAC-256':
  26. n = 1024
  27. m = 1024
  28. q = 251
  29. D_e = {-1: 0.25, 0: 0.5, 1: 0.25}
  30. D_s = D_e
  31. # Assessement of the attack without hints
  32. A, b, dbdd = initialize_LAC_instance(DBDD_predict_diag, n, q,
  33. m, D_e, D_s,
  34. verbosity=verbosity)
  35. if report_every is not None:
  36. dbdd.integrate_q_vectors(q, indices=range(0, n + m), report_every=report_every)
  37. else:
  38. dbdd.integrate_q_vectors(q, indices=range(0, n + m))
  39. (beta, _) = dbdd.estimate_attack()
  40. logging("Attack without hints: %3.2f bikz" % beta, style="HEADER")
  41. # Assessement of the attack with hints
  42. A, b, dbdd = initialize_LAC_instance(DBDD_predict, n, q,
  43. m, D_e, D_s,
  44. verbosity=verbosity)
  45. v = vec([1 if i < m else 0 for i in range(m + n)])
  46. dbdd.integrate_perfect_hint(v, 0)
  47. v = vec([0 if i < m else 1 for i in range(m + n)])
  48. dbdd.integrate_perfect_hint(v, 0)
  49. M = q * identity_matrix(n + m)
  50. i = 0
  51. V = vec(M[0] - M[1])
  52. logging("[...%d]" % report_every, newline=False)
  53. while dbdd.integrate_short_vector_hint(V):
  54. if report_every is not None and ((i % report_every == 0) or (i == m - 1)):
  55. verbose = 2
  56. else:
  57. verbose = 0
  58. dbdd.verbosity = verbose
  59. if verbose == 2:
  60. logging("[...%d]" % report_every, newline=False)
  61. i += 1
  62. V = vec(M[i] - M[i + 1])
  63. (beta, _) = dbdd.estimate_attack()
  64. logging("Attack with hints: %3.2f bikz" % beta, style="HEADER")