Рейтинг:5

Средняя частота ложноположительных результатов для раунда Миллера-Рабина

флаг vn

Я знаю, что тест Миллера-Рабина на простоту будет требовать простоты для составного числа с в большинстве а $\фракция{1}{4}$ вероятность для некоторого произвольного нечетного составного $n$ и случайный свидетель $а$ выбираются равномерно в диапазоне $[2,n-1)$. Что это действительный средняя вероятность того, что тест ложно утверждает, что число простое? Как меняется шанс в зависимости от размера $n$ Продолжается? Как изменится шанс, если $n$ не делится ни на какие малые простые числа до, скажем, 2000?

Я спрашиваю, потому что Эта бумага описывает вероятность того, что композит выдержит определенное количество циклов испытаний. Вероятность $p_{k,t}$ с $к$ размер проверяемого числа в битах и $t$ количество раундов, которые нужно запустить. Бумага доказывает, что $\forall k \ge 2:p_{k,1} \le k^2 4^{2-\sqrt{k}}$, но это неравенство является лишь верхней оценкой, и существует отдельное доказательство, показывающее гораздо более сильную оценку $p_{600,1} \le 2^{-75}$. Я хотел бы найти функцию с сильной верхней границей для $p_{k,t,n}$ с $n$ будучи пробным делением против всех простых чисел, меньших, чем $n$, но я недостаточно хорошо понимаю математику этой статьи, чтобы придумать это.

В таблице 2 в статье приведены некоторые примеры нижних границ для $-\lg{p_{k,t}}$:

\begin{массив}{c|ccccccccc} к/т&1&2&3&4&5&6&7&8&9&10\ \hline 100&5&14&20&25&29&33&36&39&41&44\ 150&8&20&28&34&39&43&47&51&54&57\ 200&11&25&34&41&47&52&57&61&65&69\ 250&14&29&39&47&54&60&65&70&75&79\ 300&19&33&44&53&60&67&73&78&83&88\ 350&28&38&48&58&66&73&80&86&91&97\ 400&37&46&55&63&72&80&87&93&99&105\ 450&46&54&62&70&78&85&93&100&106&112\ 500&56&63&70&78&85&92&99&106&113&119\ 550&65&72&79&86&93&100&107&113&119&126\ 600, 75, 82, 88, 95, 102, 108, 115, 121, 127, 133 \конец{массив}


Генерация ключей OpenSSL, по-видимому, предполагает, что это не так, поскольку она увеличивает количество раундов для больших простых чисел, создавая иллюзию того, что частота ложных срабатываний каким-то образом влияет на безопасность сгенерированного простого числа. Обратите внимание, что этот код используется в основном поколение рутина, поэтому гарантируется, что простые числа-кандидаты будут равномерно распределены и не подвержены ложноположительному результату в наихудшем случае.

От крипто/bn/bn_prime.c:87:

/*
 * Используйте минимум 64 патрона Миллера-Рабина, что должно дать ложный результат.
 * положительная скорость 2^-128. Если размер простого числа больше 2048
 * пользователь, вероятно, хочет более высокий уровень безопасности, чем 128, поэтому переключитесь
 * до 128 раундов, что дает ложноположительный результат 2^-256.
 * Возвращает количество раундов.
 */
статический интервал bn_mr_min_checks (целые биты)
{
    если (бит > 2048)
        вернуть 128;
    вернуть 64;
}
Mark avatar
флаг ng
Вас может заинтересовать [это] (https://crypto.stackexchange.com/questions/17707/trial-divisions-before-miller-rabin-checks).
forest avatar
флаг vn
@Mark Это интересно (и частично послужило источником вдохновения для этого вопроса), но не отвечает на вопрос, существует ли более сильная верхняя граница, чем $\forall k \ge 2:p_{k,1} \le k^2 4^ {2-\sqrt{k}}$, _также_ с учетом пробных делений.
Mark avatar
флаг ng
[Ответ Томаса Порнина] (https://crypto.stackexchange.com/a/17711) не дает закрытой формулы или чего-то еще, но звучит так, будто конкретная формула, которую вы получаете, не имеет большого значения, так как большинство раунд MR, который вы проведете, будет проводиться на композитах, которые будут отклонены после первого раунда.
Meir Maor avatar
флаг in
Я считаю, что указанная вами граница не требует, чтобы составное число выбиралось случайным образом, составное число может быть выбрано противником, если свидетель является случайным (и проверьте, что мы не достигли 1 преждевременно при вычислении показателя)
forest avatar
флаг vn
@MeirMaor Если свидетель случайный, но входное число выбрано противником, то оценка равна $\frac{1}{4}$. Если и свидетель, и входные данные выбраны противником, вероятность ложных срабатываний, конечно, составляет $1$. Оценка из статьи основана на том, что входные данные выбираются случайным образом.
Sam Jaques avatar
флаг us
В защиту OpenSSL: если вы проверите фиксацию, которая создала эту функцию: https://github.com/openssl/openssl/commit/42619397eb5db1a77d077250b0841b9c9f2b8984, в ней упоминаются Джейк Массимо и Кеннет Патерсон, которые являются половиной авторов этой статьи: https ://eprint.iacr.org/2018/749. Несмотря на то, что есть контексты, в которых вы знаете, что простые числа генерируются равномерно и могут использовать надежность в среднем регистре, это иногда использовалось в случаях, когда нужна противоборствующая надежность, поэтому я думаю, что они решили избежать «пешехода» и иметь одно безопасное простое число. генератор на все случаи жизни.
forest avatar
флаг vn
@SamJaques Хотя подпрограмма используется как для надежных, так и для ненадежных источников простых чисел-кандидатов, сама функция ведет себя странно. Было бы разумнее жестко запрограммировать количество итераций на уровне 128 (как для надежных, так и для ненадежных источников), а не выбирать между 128 и 64.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.