Это не официальный сайт wikipedia.org 01.01.2023

p−1-метод Полларда — Википедия

p−1-метод Полларда

(перенаправлено с «P-1 метод Полларда»)

p 1 -метод Полларда — один из методов факторизации целых чисел.

Впервые опубликован британским математиком Джоном Поллардом[en] в 1974 году[1]. Именно появление данного алгоритма привело[2] к изменению понятия сильного простого числа, используемого в криптографии, нестрого говоря, простого числа, для которого p 1 имеет достаточно большие делители. В современных криптосистемах стараются[2] использовать именно сильные простые числа, так как это повышает стойкость используемых алгоритмов и систем в целом.

Определения и математические сведенияПравить

Число называется B  -гладкостепенным[en][3], если все его простые делители, в степенях, в которых они входят в разложение этого числа p ν  , удовлетворяют p ν B  . Согласно малой теореме Ферма для любого простого числа p   и для любого целого числа a  , такого что a   и p   взаимно просты, или, что в данном случае равносильно, p   не делит a  , справедливо:

a ( p 1 ) 1 mod p  , более того M = ( p 1 ) l , l N a M 1 mod p  .

Оригинальный алгоритм (1974 год)Править

Джон Поллард впервые опубликовал описанный ниже алгоритм в своей статье «Методы факторизации и проверка простоты» («Theorems of Factorization and Primality Testing») в 1974 году в «Трудах Кембриджеского философского общества»[1]. Статья посвящена теоретической оценке сложности факторизации большого числа N   или же, в случае простого N  , проверке его на простоту. Нижеприведённый алгоритм явился следствием и иллюстрацией теоретических выкладок Полларда.

Первая стадияПравить

  1. Задача состоит в том, чтобы найти собственный делитель числа N   отличный от единицы. Прежде всего необходимо выбрать два числа B , M ,   такие, что 1 < B < M < N , M < B 2  .
  2. Вычислим теперь число M ( B ) = k = 1 m p k c k  , где p k   — все простые числа меньшие B  . Здесь допускается некоторая свобода в выборе c k  , однако точно известно, что для маленьких p k  , c k   должно быть больше единицы[1].
  3. Выберем небольшое целое a > 1   и вычислим
b = a M ( B ) mod N  
q = ( b 1 , N )   если q 1   мы нашли делитель N  , в противном случае переходим ко второй стадии.

Вторая стадияПравить

  • На этом шаге необходимо вычислить последовательность
F m b m 1 1 mod N ,   где m   — простое, B < m < M  , надеясь, что на каком-нибудь шаге получится
g m = ( F m , N ) > 1  
  • Легче всего[1] это сделать вычислением b m   для каждого нечётного m   домножением на b 2  , беря G i = ( b i , N )   через равные промежутки. Если 1 < G i < N   делитель найден. Если же G i = N , G i 1 = 1  , то необходимо точнее исследовать этот участок.

ЗамечаниеПравить

С помощью данного метода мы сможем найти только такие простые делители p   числа N  , для которых выполнено[1]:

p 1 = A   или p 1 = A q  , где A   является B  -гладкостепенным, а q   — простое, такое что B < q < M  [1].

Современная версияПравить

Эта переработанная по сравнению с оригинальной версия алгоритма использует понятия степенной гладкости[en] и ориентирована на практическое применение. Значительные изменения претерпела первая стадия, в то время, как вторая сохранилась практически без изменений, опять же, с теоретической точки зрения, ничего значительного, по сравнению предыдущей версией, добавлено не было. Именно приведённый ниже алгоритм имеют в виду, когда говорят о «методе Полларда»[4][5].

Первая стадияПравить

  1. Пусть N   B  -гладкостепенное, и требуется найти делитель числа N  . В первую очередь вычисляется число M ( B ) = i p i k i   где произведение ведётся по всем простым p i   в максимальных степенях k i : p i k i < B  
  2. Тогда искомый делитель q = ( b 1 , N )  [4], где b = a M ( B ) mod N  .
  • Возможно два случая, в которых приведенный выше алгоритм не даст результата[5].
  1. В случае, когда ( b 1 , N ) = N   точно можно сказать, что у n   есть делитель, являющийся B  -гладкостепенным и проблему должен решить иной выбор a  .
  2. В более частом случае, когда ( b 1 , N ) = 1   стоит перейти ко второй стадии алгоритма, которая значительно повышает вероятность результата, хотя и не гарантирует его.

ПримерПравить

Пусть N = 10001   выберем B = 10  , тогда M ( B ) = 2 3 3 2 5 7 = 2520  , возьмём a = 2   и вычислим теперь b = a M ( B ) mod N = 2 2520 mod 10001 = 3578  , и наконец ( b 1 , N ) = ( 3578 1 , 10001 ) = 73  .

ЗамечанияПравить

  • При больших B   число M ( B )   может оказаться весьма большим, сравнимым по значению с B !  , в таких случаях может оказаться целесообразно разбить M ( B )   на множители приблизительно одинаковой величины M ( B ) = i M i   и вычислять последовательность
a 1 = a M 1 mod N ;  
a k + 1 = a k M k + 1 mod N  .

Вторая стадияПравить

  • Прежде всего необходимо зафиксировать границы B 1 = B , B 2 B  , обычно B 2 B 2  [5][4].
  • Вторая стадия алгоритма находит делители N  , такие что p 1 = q A  , где A   — B  -гладкостепенное, а q   простое, такое что B 1 < q < B 2  .
  1. Для дальнейшего нам потребуется вектор из простых чисел q i   от B 1   до B 2  , из которого легко получить вектор разностей между этими простыми числами D = ( D 1 , D 2 , . . . ) , D i = q i + 1 q i  , причём D i   — относительно небольшие числа, и D i Δ  , где Δ   — конечно множество[4]. Для ускорения работы алгоритма полезно предварительно вычислить все b δ i , δ i Δ  [4] и при пользоваться уже готовыми значениями.
  2. Теперь необходимо последовательно вычислять c 0 = b 1 mod N , c i = c i 1 δ i mod N  , где b 1 = a M ( B 1 ) mod N  , вычисленное в первой стадии, на каждом шаге считая G = ( c i 1 , N )  . Как только G 1  , можно прекращать вычисления.

Условия сходимостиПравить

  • Пусть p   наименьший делитель N  , q t = m a x ( q i t i )   максимум берется по всем степеням q i t i  , делящим p 1  [4].
    • Если q t < B 1  , то делитель будет найден на первой стадии алгоритма[4].
    • В противном случае для успеха алгоритма необходимо, чтобы q t < B 2  , а все остальные делители p 1   вида q r   были меньше B 1  [4].

Модификации и улучшенияПравить

  • Позднее сам Поллард высказал мнение о возможности ускорения алгоритма с использованием быстрого преобразования Фурье[4] во второй стадии, однако он не привел реальных способов, как сделать это[6].
  • Ещё позже, в 1990 году это сделали математики Питер Монтгомери (Peter Montgomery) и Роберт Силверман (Robert Silverman)[6]. Авторам удалось добиться увеличения скорости исполнения второй стадии алгоритма.

Оценка эффективностиПравить

  • Сложность первой стадии оценивается как O ( B ln B ( ln N ) 2 + ( ln N ) 3 )  , оставляя только слагаемое высшего порядка получаем оценку первой стадии алгоритма[4] O ( B ln B ( ln N ) 2 )  .
  • Согласно оценке Монтгомери, сложность второй стадии, с точностью до слагаемых наивысшего порядка составляет O ( π ( B 2 ) )  [1][4], где π ( s )   — число простых чисел, меньших s  . Оценка Чебышева дает приближённое равенство π ( s ) s ln s  .

РекордыПравить

На данный момент (10.10.2016) три самых больших простых делителя, найденных методом P-1, состоят из 66, 64 и 59 десятичных цифр[7].

Кол-во цифр p Делитель числа Кем найден Когда найден B B2
66 672038771836751227845696565342450315062141551559473564642434674541
= 22 · 3 · 5 · 7 · 17 · 23 · 31 · 163 · 401 · 617 · 4271 · 13681 · 22877 · 43397 · 203459 · 1396027 · 6995393 · 13456591 · 2110402817 + 1
960 119 1   Т. Ногара 29.06.2006 10 8   10 10  
64 1939611922516629203444058938928521328695726603873690611596368359
= 2 · 3 · 11 · 1187 · 9233729 · 13761367 · 43294577 · 51593573 · 100760321 · 379192511 · 2282985164293 + 1
10 243 4 10 121 1   М. Тервурен 13.09.2012 10 9   10 13  
59 12798830540286697738097001413455268308836003073182603569933
= 22 · 17 · 59 · 107 · 113 · 20414117 · 223034797 · 269477639 · 439758239 · 481458247 · 1015660517 + 1
8069000260399979023963141 17 1   A. Круппа 30.06.2011 10 9   10 10  

ПримененияПравить

  • GMP-ECM[8] — пакет включает в себя эффективное применение p 1  -метода.
  • Prime95 и MPrime — официальные клиенты GIMPS — используют метод, чтобы отсеять кандидатов.

См. такжеПравить

ПримечанияПравить

  1. 1 2 3 4 5 6 7 Pollard, 1974.
  2. 1 2 Karaarslan E. Primality Testing Techniques and The Importance of Prime Numbers in Security Protocols (англ.) // ICMCA'2000: Proceedings of the Third International Symposium Mathematical & Computational ApplicationsKonya: 2000. — P. 280—287.
  3. Василенко, 2003, с. 60.
  4. 1 2 3 4 5 6 7 8 9 10 11 Ишмухаметов, 2011, с. 53—55.
  5. 1 2 3 Cohen, 2000, pp. 439.
  6. 1 2 Montgomery, Silverman, 1990.
  7. Циммерман, Поль. Record Factors Found By Pollard's p-1 Method (англ.). Les pages des personnels du LORIA et du Centre Inria NGE. Дата обращения: 10 октября 2016. Архивировано 11 октября 2016 года.
  8. InriaForge: GMP-ECM (Elliptic Curve Method): Project Home  (неопр.). Дата обращения: 15 ноября 2012. Архивировано 21 июля 2012 года.

ЛитератураПравить