стандартный способ заключается в использовании оценщик LWE (если это просто или нет спорно).
Он оценивает стоимость известных атак на экземпляры LWE с заданными параметрами.
$n$, $\альфа$, и $q$, куда $\альфа$ представляет собой отношение шума и может быть получено из параметра $\сигма$ из дискретного гауссиана по формуле $\alpha = \sqrt{2 \pi} \cdot \sigma/q$, уже реализованный в команде альфа = альфаf (сигмаф (сигма), q)
.
Оценщик в основном находит размер блока $\бета$ которые алгоритм BKZ должен будет использовать для решения проблемы LWE. Но оценивая время работы БКЗ-$\бета$ не так просто, поэтому для получения актуального уровня безопасности необходимо выбрать стоимостную модель для БКЗ.
Короче говоря, БКЗ работает на решетке размерности $д$ и делает несколько вызовов решателя SVP в измерении $\бета$. Часто предполагается, что оракул SVP требует $2^{0,292\cdot\beta}$ операций на классической ЭВМ и $2^{0,265\cdot\beta}$ в квантовом.
Таким образом, используя reduce_cost_model=BKZ.сито
в оценщике LWE даст вам количество операций как $2^{0,292\cdot \beta + 16,4 + \log_2(8 \cdot d)}$ и вы хотите, чтобы он был больше, чем $2^\лямбда$ за $\лямбда$ кусочки безопасности.
Некоторые люди более консервативны (параноики?) и игнорируют стоимость, связанную с измерением. $д$ и множество обращений к оракулу СВП, поэтому оценивают количество операций БКЗ как одно обращение к солверу СВП, таким образом, получают $2^{0,292\cdot\beta}$ или же $2^{0,265\cdot\beta}$. Это называется моделью затрат «ядро-SVP» и использовалась, например, для оценки безопасности САБЛЯ.