estimator.lwe.Estimate

estimator.lwe.Estimate#

class estimator.lwe.Estimate[source]#
__call__(params, red_cost_model=<estimator.reduction.MATZOV object>, red_shape_model='gsa', deny_list=(), add_list=(), jobs=1, catch_exceptions=True)[source]#

Run all estimates.

Parameters:
  • params – LWE parameters.

  • red_cost_model – How to cost lattice reduction.

  • red_shape_model – How to model the shape of a reduced basis (applies to primal attacks)

  • deny_list – skip these algorithms

  • add_list – add these (name, function) pairs to the list of algorithms to estimate.a

  • jobs – Use multiple threads in parallel.

  • catch_exceptions – When an estimate fails, just print a warning.

EXAMPLE

>>> from estimator import *
>>> _ = LWE.estimate(schemes.Kyber512)
bkw                  :: rop: ≈2^178.8, m: ≈2^166.8, mem: ≈2^167.8, b: 14, t1: 0, t2: 16, ℓ: 13, #cod: 448...
usvp                 :: rop: ≈2^143.8, red: ≈2^143.8, δ: 1.003941, β: 406, d: 998, tag: usvp
bdd                  :: rop: ≈2^140.3, red: ≈2^139.7, svp: ≈2^138.8, β: 391, η: 421, d: 1013, tag: bdd
dual                 :: rop: ≈2^149.9, mem: ≈2^97.1, m: 512, β: 424, d: 1024, ↻: 1, tag: dual
dual_hybrid          :: rop: ≈2^139.2, red: ≈2^139.0, guess: ≈2^136.2, β: 385, p: 6, ζ: 15, t: 30, ...

Methods

__init__()

rough(params[, jobs, catch_exceptions])

This function makes the following somewhat routine assumptions: