estimator.reduction.Kyber

estimator.reduction.Kyber#

class estimator.reduction.Kyber(nn='classical')[source]#
Parameters:

nn – Nearest neighbor cost model. We default to “ListDecoding” (i.e. BDGL16) and to the “depth × width” metric. Kyber uses “AllPairs”.

__call__(beta, d, B=None, C=5.46)[source]#

Runtime estimation from [Kyber20] and [AC:AGPS20].

Parameters:
  • beta – Block size ≥ 2.

  • d – Lattice dimension.

  • B – Bit-size of entries.

  • C – Progressive overhead lim_{β → ∞} ∑_{i ≤ β} 2^{0.292 i + o(i)}/2^{0.292 β + o(β)}.

EXAMPLE:

>>> from math import log
>>> from estimator.reduction import RC, Kyber
>>> log(RC.Kyber(500, 1024), 2.0)
176.61534319964488
>>> log(Kyber(nn="list_decoding-ge19")(500, 1024), 2.0)
172.68208507350872

Methods

LLL(d[, B])

Runtime estimation for LLL algorithm based on [AC:CheNgu11].

__init__([nn])

beta()

Estimate required block size β for a given root-hermite factor δ based on [PhD:Chen13].

d4f(beta)

Dimensions "for free" following [EC:Ducas18].

delta(beta)

Compute root-Hermite factor δ from block size β.

short_vectors(beta, d[, N, B, preprocess])

Cost of outputting many somewhat short vectors using BKZ-β.

short_vectors_simple(beta, d[, N, B, preprocess])

Cost of outputting many somewhat short vectors.

svp_repeat(beta, d)

Return number of SVP calls in BKZ-β.

Attributes