Алгоритм Полларда p - 1
Алгоритм Полларда p - 1 — это теоретико-числовой факторизации целых чисел алгоритм , изобретенный Джоном Поллардом в 1974 году. Это алгоритм специального назначения, что означает, что он подходит только для целых чисел с определенными типами факторов; это простейший пример алгоритма факторизации алгебраической группы .
Факторы, которые он находит, - это те, для которых число, предшествующее фактору, p - 1, является степенным ; существенное наблюдение состоит в том, что, работая в мультипликативной группе по модулю составного числа N , мы также работаем в мультипликативных группах по модулю всех N множителей.
Существование этого алгоритма приводит к понятию безопасных простых чисел , которые представляют собой простые числа, для которых p - 1 дважды является простым числом Софи Жермен q и, следовательно, минимально гладкими. Эти простые числа иногда рассматриваются как «безопасные для криптографических целей», но они могут быть небезопасными — в текущих рекомендациях для криптографически сильных простых чисел ( например, ANSI X9.31 ) необходимо, но недостаточно , чтобы p − 1 имело хотя бы одно большое простое число. фактор. Большинство достаточно больших простых чисел являются сильными; если простое число, используемое в криптографических целях, окажется ненадежным, то это, скорее всего, произойдет по злому умыслу, чем по ошибке генерации случайных чисел . Эта терминология считается устаревшей в криптографической отрасли: метод факторизации ECM более эффективен, чем алгоритм Полларда, и находит безопасные простые множители так же быстро, как и небезопасные простые множители аналогичного размера, поэтому размер p является ключевым параметром безопасности. , а не гладкость p-1 . [ 1 ]
Базовые концепции
[ редактировать ]Пусть n — составное целое число с простым множителем p . По малой теореме Ферма мы знаем, что для всех целых чисел, взаимно простых с p, и для всех натуральных чисел K :
Если число x конгруэнтно 1 по модулю фактора n , то НОД ( x − 1, n ) будет делиться на этот фактор.
Идея состоит в том, чтобы сделать показатель степени кратным p - 1, сделав его числом с очень большим количеством простых множителей; обычно мы берем произведение всех степеней простых чисел меньше некоторого предела B . Начните со случайного x и неоднократно заменяйте его на поскольку w проходит через эти основные степени. Проверяйте на каждом этапе или один раз в конце, если хотите, ли gcd( x − 1, n ) не равен 1.
Несколько факторов
[ редактировать ]Вполне возможно, что для всех простых множителей числа n p p − 1 делится на маленькие простые числа, и в этот момент алгоритм Полларда p − 1 просто возвращает n .
Алгоритм и время работы
[ редактировать ]Основной алгоритм можно записать следующим образом:
- Входные данные : n : составное число.
- Выход : нетривиальный фактор n или отказ.
- выберите границу гладкости B
- определять (примечание: явное вычисление M может не потребоваться)
- случайным образом выбрать положительное целое число a , которое взаимно просто с n (примечание: на самом деле мы можем зафиксировать a , например, если n нечетное, то мы всегда можем выбрать a = 2, случайный выбор здесь не обязателен)
- вычислить g = НОД( a М − 1, n ) (примечание: возведение в степень можно выполнить по модулю n )
- если 1 < g < n, то вернуть g
- если g = 1 , выберите больший B и перейдите к шагу 2 или верните ошибку.
- если g = n , выберите меньший B и перейдите к шагу 2 или верните ошибку.
Если g = 1 на шаге 6, это означает, что не существует простых множителей p, для которых p-1 является B -степенным гладким. Если g = n на шаге 7, это обычно указывает на то, что все факторы были B -степенно гладкими, но в редких случаях это может указывать на то, что a имеет малый порядок по модулю n . Кроме того, когда в некоторых редких случаях максимальные простые множители p-1 для каждого простого множителя p из n одинаковы, этот алгоритм потерпит неудачу.
Время работы этого алгоритма составляет O( B × log B × log 2 п ) ; большие значения B заставляют его работать медленнее, но с большей вероятностью создают коэффициент.
Пример
[ редактировать ]Если мы хотим факторизовать число n = 299.
- Выбираем В = 5.
- Таким образом, М = 2 2 × 3 1 × 5 1 .
- Выбираем а = 2.
- g = НОД( а М − 1, п ) = 13.
- Поскольку 1 < 13 < 299, верните 13.
- 299/13 = 23 — простое число, поэтому оно полностью факторизовано: 299 = 13 × 23.
Методы выбора Б
[ редактировать ]Поскольку алгоритм является инкрементным, он может продолжать работать с постоянно увеличивающейся границей.
Предположим, что p − 1, где p — наименьший простой делитель числа n , можно смоделировать как случайное число размером меньше √ n . По теореме Диксона вероятность того, что наибольший делитель такого числа меньше ( p − 1) 1/е примерно равно ε − е ; так что вероятность около 3 −3 = 1/27, что B значение n 1/6 даст факторизацию.
На практике метод эллиптических кривых работает быстрее, чем метод Полларда p - 1, если факторы вообще велики; выполнение метода p - 1 до B = 2 32 найдет четверть всех 64-битных факторов и 1/27 всех 96-битных факторов.
Двухступенчатый вариант
[ редактировать ]Иногда используется вариант основного алгоритма; вместо того, чтобы требовать, чтобы все факторы p − 1 были меньше B , мы требуем, чтобы все факторы, кроме одного, были меньше некоторого B 1 , а оставшийся фактор был меньше некоторого B 2 ≫ B 1 . После завершения первого этапа, аналогичного базовому алгоритму, вместо вычисления нового
для B 2 и проверка НОД( a М' − 1, n ) , мы вычисляем
где Н = а М и проверьте, создает ли gcd( Q , n ) нетривиальный множитель n . Как и раньше, возведение в степень можно выполнять по модулю n .
Пусть { q 1 , q 2 , …} — последовательные простые числа в интервале ( B 1 , B 2 ] и d n = q n − q n −1 — разность между последовательными простыми числами. Поскольку обычно B 1 > 2 , d n — четные числа. Распределение простых чисел таково, что все d n будут относительно малы. Предполагается, что d n ≤ ln. 2 Б 2 . Следовательно, значения H 2 , Ч 4 , Ч 6 , … (mod n ) можно хранить в таблице, а H q н быть вычислено из H q п -1 ⋅ H д н , сохраняя необходимость возведения в степень.
Реализации
[ редактировать ]- Пакет GMP-ECM включает эффективную реализацию метода p - 1.
- Prime95 и MPrime , официальные клиенты Great Internet Mersenne Prime Search , используют модифицированную версию алгоритма p-1 для исключения потенциальных кандидатов.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Что такое сильные простые числа и необходимы ли они для системы RSA? , Лаборатории RSA (2007)
- Поллард, Дж. М. (1974). «Теоремы факторизации и проверки простоты». Труды Кембриджского философского общества . 76 (3): 521–528. Бибкод : 1974PCPS...76..521P . дои : 10.1017/S0305004100049252 . S2CID 122817056 .
- Монтгомери, Польша; Сильверман, Р.Д. (1990). «Расширение БПФ алгоритма факторинга P - 1» . Математика вычислений . 54 (190): 839–854. Бибкод : 1990MaCom..54..839M . дои : 10.1090/S0025-5718-1990-1011444-3 .
- Сэмюэл С. Вагстафф-младший (2013). Радость факторинга . Провиденс, Род-Айленд: Американское математическое общество. стр. 138–141. ISBN 978-1-4704-1048-3 .