Опубликован: 19.01.2010 | Доступ: свободный | Студентов: 3503 / 600 | Оценка: 4.28 / 4.00 | Длительность: 26:16:00
ISBN: 978-5-9963-0242-0
Специальности: Математик
Лекция 12:

Простые числа

РО (Rho) – метод Полларда

В 1975 г. Джон М. Поллард разработал второй метод для разложения на множители, который базируется на следующих положениях:

a. Предположим, что есть два целых числа, x1 и x2, таких, что p делит x1 – x2, но эта разность не делится на n.

b. Может быть доказано, что p = НОД (x1 – x2, n). Поскольку p делит x1 – x2 , можно записать, что {x_1}-{x_2} = q \times p. Но поскольку n не делит x1 – x2, очевидно, что q не делится n. Это означает, что НОД (x1 – x2, n) является либо 1, либо сомножитель.

Следующий алгоритм повторно выбирает x1 и x2, пока не находит соответствующую пару.

  1. Выберите x1 — малое случайное целое число, называемое первоисточником.
  2. Используйте функцию, чтобы вычислить x2, такую, чтобы n не делило x1 – x2. Функция, которая может быть применена, — это x2 = f (x1 ) = x1 2 + a (a обычно выбирается как 1).
  3. Вычислить НОД (x1 – x2 , n). Если это не 1, результат – сомножитель. Алгоритм останавливается. Если это 1, то происходит возвращение, чтобы повторить процесс с x1. Теперь мы вычисляем x3. Заметим, что в следующем раунде мы начинаем с x3 и так далее. Если мы перечислим значения нескольких x, используя РО (rho) алгоритм Полларда, мы увидим, что дуга значений в конечном счете повторяется, создавая форму, подобную греческой букве РО (rho) или в греческом алфавите \rho), как это показано на рис. 12.2.
 Успешные числа  в Ро алгоритме Полларда

Рис. 12.2. Успешные числа в Ро алгоритме Полларда

Чтобы уменьшить число итераций, алгоритм был немного изменен. Он начинается с пары (x0, x0), и итеративно вычисляет (x1, x2), (x 2, x4), (x3, x6), …. (xi .x2i), используя равенство xi+1 = f (xi). В каждой итерации мы применяем функцию f (xi) (начиная с шага 2). При этом вычисление идут следующим образом: в паре вычисляется один раз первый элемент и дважды вычисляется второй элемент (см. алгоритм 12.6).

\tt\parindent0pt

Pollard\_  rho \_ Factorization (n, B)\ \ \ \      // n — число, которое надо разложить

\{ 

\ \ $x \gets  2$

\ \ $y \gets  2$

\ \ $p \gets  i$

\ \ while (p = 1)

\ \ \ \{ 

\ \ \ \ $x \gets  f(x) \mod\ n$

\ \ \ \ $y \gets  f(f(y) \mod\ n) \mod\ n$

\ \ \ \ $p \gets  gcd (x - y, n)$\ \ \ \           // gsd (a,b) – это НОД (a,b)

\ \ \ \} 

\ \ return p

\}\ \ \ \ \          // если p = n, программа не выполнена
12.6. Алгоритм 12.6

Сложность. Метод требует \sqrt p арифметических операций. Однако поскольку мы предполагаем, что p будет меньше или равняться \sqrt n , мы ожидаем около n1/4 арифметические операций. Это означает, что сложность разрядной операции 0 ({2^{{\raise0.7ex\hbox{${{n_b}}$} \!\mathord{\left/ {\vphantom {{{n_b}} 4}}\right.\kern-\nulldelimiterspace}
\!\lower0.7ex\hbox{$4$}}}}) показательна.

Пример 12.32

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

a. 60 десятичных цифр

b. 100 десятичных цифр

Решение

a. Множество 60 десятичных цифр имеют почти 200 битов. Сложность — {2^{{\raise0.7ex\hbox{${{n_b}}$} \!\mathord{\left/ {\vphantom {{{n_b}} 4}}\right.\kern-\nulldelimiterspace}
\!\lower0.7ex\hbox{$4$}}}}или 250. Со скоростью 230 операций в секунду алгоритм может быть выполнен в 220 секунды или почти за 12 дней

b. Множество 100 десятичных цифр — это почти 300 битов. Сложность — 275. Со скоростью 230 операций в секунду алгоритм может быть выполнен в 245 секунд или за много лет

Пример 12.33

Мы написали программу, чтобы вычислить разложение 434617. Результат — 709 (434617 = 709 \times 613) Таблица 12.2 показывает значения пар (x и y) и p в этом процессе.

Более эффективные методы

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

Таблица 12.2. Значения x, y и p в примере 12.33
x y p
2 2 1
5 26 1
26 23713 1
677 142292 1
23713 157099 1
345589 52128 1
142292 41831 1
380320 68775 1
157099 427553 1
369457 2634 1
52128 63593 1
102901 161353 1
41831 64890 1
64520 21979 1
68775 16309 709
Квадратичное решето

Померанс изобрел метод разложения на множители, называемый методом квадратичного решета. Метод применяет процедуру просеивания, чтобы найти значение x2mod n. Метод используется, чтобы разложить на множители целые числа с более чем 100 цифрами. Его сложность — 0 (ec), где C \approx 2{(\ln n\ln \ln n)^{1/2}}. Обратите внимание, что это – субпотенциальная сложность.

Решето поля чисел

Эндрик Ленстра и Арджин Ленстра изобрели метод разложения на множители и назвали его метод решета поля чисел. Метод использует процедуру просеивания в алгебраической кольцевой структуре к {x^2} \equiv {y^2}\bmod n. Показано, что этот метод быстрее для разложения чисел с более чем 120 десятичными цифрами. Его сложность – O(eС) где C \approx {(\ln n)^{1/3}}{(\ln \ln n)^{2/3}} . Обратите внимание, что это — также субпоказательная сложность.

Пример 12.34

Предположим, что есть компьютер, который может выполнить 230 (почти 1 миллиард) битовых операций в секунду. Какое приблизительно время требуется для этого компьютера, чтобы разложить на множители целое число из 100 десятичных цифр, используя один из следующих методов?

a. Метод квадратичного решета

b. Метод решета поля чисел

Решение

Номер с 100 десятичными цифрами имеет почти 300 битов (n = 2300).

ln (2300) = 207 и lnln (2300) = 5.

a. Для метода квадратичного решета мы имеем

{\left( {207} \right)^{1/2}} \times {\left( 5 \right)^{1/2}} = 14 \times 2,23 = 32.

Это означает, что нам надо e32 битовых операций, которые могут быть сделаны в (e32)/ (230) = 20 часов.

b. При методе решета поля чисел мы имеем \left( {207} \right) \times {\left( 5 \right)^{2/2}} = 6 \times 3 \approx 18. Это означает, что нам надо e 18 битовых операций, которые могут быть сделаны за ({e^{30}})/({2^{30}}) \approx 6 секунд. Однако эти результаты правильны, только если мы имеем компьютер, который может выполнить 1 миллиард битовых операций в секунду.

Другие проблемы

В лекциях 14-15 мы обсудим прикладные вопросы задачи разложения на множители для вскрытия криптосистем с открытым ключом. Если будут изобретены более эффективные методы разложения на множители, то криптосистемы с открытым ключом вынуждены будут использовать большие целые числа, чтобы противостоять криптоанализу. Изобретатели RSA создали основу для конкуренции методов разложения на множители номеров до 2048 битов (больше чем 600 цифр).

Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Дмитрий Плешаков
Дмитрий Плешаков

Здравствуйте. На данныйц момент я изучаю курс Математика криптографии и теория шифрования. Стоимость обучения на данном курсе указана 1 руб., но, при этом доступ к лекциям указан платный. Не могли бы Вы прояснить данный момент, и, если доступ платный, какова стоимость лекций и общая стоимость курса.

Заранее благодарен.