Рейтинг:0

Количество нечетных целых чисел, которые мы должны проверить, пока не найдем то, которое является простым для любого произвольного размера модуля RSA.

флаг at

Популярные размеры модуля RSA: $1024$, $2048$, $3072$ и $4092$ кусочек. Сколько в среднем случайных нечетных целых чисел нам нужно проверить, пока мы не ожидаем найти одно простое число? Я знаю примерно каждый $\ln р$ целые числа имеет простое число. Для $1024$ кусочек $р$, $\ln р = 710$. В среднем нужно протестировать около $710/2=355$ нечетные числа, прежде чем найти простое. Верно ли это и можем ли мы извлечь формулу $(\ln р)/2$ для любого произвольного размера модуля RSA?

kelalaka avatar
флаг in
См. вопрос: [Теорема о простых числах - RSA] (https://crypto.stackexchange.com/q/11106/18298)
Mohammadsadeq Borjiyan avatar
флаг at
Спасибо. Да, я знаю формулу простых чисел меньше x, которую вы упомянули. Верен ли мой вывод?
poncho avatar
флаг my
Чтобы сложность реальных реализаций не мешала, мы часто используем просеивание, чтобы исключить кратные маленькие простые числа (например, все маленькие простые числа меньше 10 000); это значительно уменьшает ожидаемое количество значений, которые нам нужно подвергнуть более полным проверкам; однако это также усложняет простое применение теоремы о простых числах...
gnasher729 avatar
флаг kz
Кекалака, вам нужен натуральный логарифм.
Рейтинг:-1
флаг kz

Для n-битного RSA вам нужно найти два простых числа, произведение которых является n-битным числом, то есть примерно n/2 бит каждое. На самом деле один немного меньше, а другой немного больше, потому что вы не хотите, чтобы простые числа располагались слишком близко друг к другу.

Примерно одно из ln M чисел вокруг M является простым числом; это натуральный логарифм. ln (2) близко к 0,7. Если M = 2^(n/2), то ln M ≈ 0,35n. Вы проверяете только нечетные целые числа, которые в два раза чаще являются простыми, с вероятностью 2/0,35n. Проверка 0,175n нечетных целых чисел находит простое число. Вам нужно два, так что около 0,35n.

Но обратите внимание, что многие из них имеют маленькие делители и могут быть идентифицированы очень быстро; например, с помощью сита, удаляющего числа с коэффициентами < 1000 или 10 000. Чтобы принять простое число, вы проведете тест Миллера-Рабина 50 или 100 раз, в то время как для 3/4 не простых чисел вы выполните его один раз, для 3/4 остальных — дважды и т. д. Дело в том, что проверка не простого числа на простоту обычно выполняется довольно быстро.Тестирование двух реальных простых чисел занимает много времени. Количество составных частей, которые вы проверяете на простоту, не имеет большого значения.

PS Я только что понял, что все переоценивают в 2 раза. Скажем, я решил, что мне нужно простое число около некоторого нечетного K, поэтому я проверяю K, K+2, K+4 и т. д., пока не наткнусь на простое число. Пусть p — наибольшее простое число, меньшее K, а q — первое простое число >= K. Количество неверных чисел для проверки — это не промежуток q-p, разделенный на 2 (поскольку мы проверяем только нечетные числа), а половина этого числа, поскольку K может быть где угодно в этом промежутке.

PPS Я только что понял, что с этим аргументом что-то не так…

флаг cn
Что вы имеете в виду под «в то время как для 3/4 не простых чисел вы запускаете его один раз, для 3/4 остальных вы запускаете его дважды и т. д.»? Похоже, вы предполагаете, что не простое число проходит тест Миллера-Рабина с вероятностью 1/4, что слишком много. Если кто-то (возможно, зло, создавшее специальное число) не дал вам главного кандидата, вы можете быть вполне уверены, что 1000-битное случайное число, прошедшее тест Миллера-Рабина, является простым. Причина повторения MR-тестов состоит в том, чтобы убедить оценщика в том, что вероятность того, что число не является простым, *доказуемо* меньше, скажем, $2^{-80}$.
poncho avatar
флаг my
Этот ответ также предполагает, что вы будете использовать Миллера-Рабина для теста на простоту; это не обязательно верно. Например, если вы используете алгоритм Шоу-Тейлора (который начинается с большого простого множителя $p-1$), вам потребуется только одна итерация, если вы нажмете простое число. По моему опыту, задача построения возрастающих простых значений (чтобы быть большим множителем $p-1$ для следующего большего простого числа) выполняется быстрее, чем повторение Миллера-Рабина.
флаг cn
Половина этого ответа касается вопроса, который вообще не задавался в вопросе.
gnasher729 avatar
флаг kz
Легко доказать вероятность 3/4 того, что составное число не пройдет один проход Рабина-Миллера. Таким образом, по крайней мере 3/4 чисел, которые вы проверяете на простоту, терпят неудачу при одном проходе, 3/4 оставшейся четверти терпят неудачу при втором проходе и т. д. Только когда вы проверяете фактическое простое число, вам нужно много проходов. Таким образом, количество кандидатов, которых вы тестируете, не имеет большого значения; вы тратите большую часть работы на одно значение, которое является простым.
Рейтинг:-2
флаг cn

Нет, ты ошибаешься, потому что

Я знаю, что примерно у каждого ln p целых чисел есть простое число.

это грубая оценка, которая на самом деле неверна.

Оценка функции счета простых чисел $\Pi(p)=p /ln(p)$ оценивает общее количество простых чисел от 0 до $р$. Итак, для числа с x битами вам нужно посмотреть на $\Pi(2^{x}) - \Pi(2^{x-1})$ и сравните его с общим количеством кандидатов, которые $2^{х-2}$, когда вы рассматриваете только нечетные числа.

Вы не за горами, и разница невелика для больших чисел, но формула не так проста.

gnasher729 avatar
флаг kz
«Примерно». Он примерно прав. И ваши показатели отклоняются на единицу, И функция подсчета простых чисел не оценивает.
флаг cn
@ gnasher729 Это примерно так же правильно, как сказать $\Pi=3$. Вы правы в том, что показатели степени уменьшаются на единицу, я изменил это.
Daniel S avatar
флаг ru
Более точной оценкой функции подсчета простых чисел является $\pi(x)\sim\int_2^x\frac{dt}{\log t}$, которая эвристически приравнивается к наблюдению Гаусса о том, что простые числа вокруг $t$ имеют плотность около $1/\log t$. Другими словами, оценка в вопросе точнее, чем $(2^x/(\log 2^x)-2^{x-1}/(\log 2^{x-1}))/2^{ х-2}$.
флаг cn
Плотность в определенной точке не совпадает с плотностью на большом интервале. И это было здесь главным.
Daniel S avatar
флаг ru
Согласно sagemath $\mathrm{li}(2^{1024})-\mathrm{li}(2^{1023})\приблизительно 1,2669e305$, тогда как $2^{1023}/1024\log(2)\приблизительно 1,2663e305$ и $2^{1024}/1024\log(2)-2^{1023}/1023\log(2)\приблизительно 1,2651e305$. Обратите внимание, что ошибка в оценке $\mathrm{li}(x)$ (при условии RH) составит $O(x^{1/2+\epsilon})$ и, следовательно, меньше, скажем, 1e200. Оценка в вопросе более точная.

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

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