estimator.sis.Estimate

estimator.sis.Estimate#

class estimator.sis.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 – SIS 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 *
>>> _ = SIS.estimate(schemes.Dilithium2_MSIS_StrUnf)
lattice  :: rop: ≈2^150.8, red: ≈2^149.6, sieve: ≈2^149.9, β: 421, η: 429, ζ: 0, d: 2304, ...
>>> params = SIS.Parameters(n=113, q=2048, length_bound=512, norm=2)
>>> _ = SIS.estimate(params)
lattice  :: rop: ≈2^47.0, red: ≈2^47.0, δ: 1.011391, β: 61, d: 276, tag: euclidean
>>> _ = SIS.estimate(params.updated(length_bound=16, norm=oo), red_shape_model="cn11")
lattice  :: rop: ≈2^65.9, red: ≈2^64.9, sieve: ≈2^64.9, β: 113, η: 142, ζ: 0, d: 2486, ...

Methods

__init__()

rough(params[, jobs, catch_exceptions])

This function makes the following somewhat routine assumptions: