Научная статья на тему 'Об одной стратегии в процедуре просеивания для факторизации больших натуральных чисел'

Об одной стратегии в процедуре просеивания для факторизации больших натуральных чисел Текст научной статьи по специальности «Математика»

CC BY
284
58
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ФАКТОРИЗАЦИЯ / КВАДРАТИЧНОЕ РЕШЕТО / РЕШЕТО ЧИСЛОВОГО ПОЛЯ / FACTORIZATION / QUADRATIC SIEVE / NUMBER FIELD SIEVE

Аннотация научной статьи по математике, автор научной работы — Зиятдинов Дмитрий Булатович, Рубцова Рамиля Гакилевна

В работе дано описание стратегии в процедуре просеивания, применимой для эффективных алгоритмов целочисленной факторизации квадратичного решета (the Quadratic Sieve), решета числового поля (the Number Field Sieve), а также модификации квадратичного решета - метода Занга. Приводятся примеры и теоретические оценки, позволяющие сделать вывод о целесообразности использования данного подхода для усовершенствования процедур факторизации целых чисел.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

This work describes a sieving strategy applied for the efficient algorithms of the quadratic sieve and the numberfield sieve integer factorization. A modification of the quadratic sieve method (Zhang's method) is also considered. Examples and theoretical estimations are given which show practicability of this approach for improving integer factorization procedures.

Текст научной работы на тему «Об одной стратегии в процедуре просеивания для факторизации больших натуральных чисел»

_____________УЧЕНЫЕ ЗАПИСКИ КАЗАНСКОГО УНИВЕРСИТЕТА

Том 153, кн. 1 Физико-математические пауки

2011

УДК 510.17

ОБ ОДНОЙ СТРАТЕГИИ В ПРОЦЕДУРЕ ПРОСЕИВАНИЯ ДЛЯ ФАКТОРИЗАЦИИ БОЛЬШИХ НАТУРАЛЬНЫХ ЧИСЕЛ

Д. Б. Зиятдипов, Р. Г. Рубцова

Аннотация

В работе дапо описание стратегии в процедуре просеивания, применимой для эффективных алгоритмов целочисленной факторизации квадратичного решета (t.lie Quadratic Sieve), решета числового поля (the Number Field Sieve), а также модификации квадратичного решета метода Запга. Приводятся примеры и теоретические оценки, позволяющие сделать вывод о целесообразности использования даппого подхода для усовершенствования процедур факторизации целых чисел.

Ключевые слова: факторизация, квадратичное решето, решето числового поля.

Введение

Разложение больших составных натуральных чисел в произведение простых множителей является трудоемкой задачей. Известная система шифрования с открытым ключом RSA построена на значительной вычислительной сложности ее решения при использовании даже самых эффективных из известных на сегодняшний день алгоритмов. К ним относятся, в первую очередь, алгоритмы факторизации квадратичного решета (the Quadratic Sieve или QS) и решета числового поля (the Number Field Sieve или NFS). Для более подробной информации см. [1, 2]. а также [3] для дополнительной информации о возможных стратегиях в процедуре просеивания для этих алгоритмов.

Просеивание является самым затратным по времени и ресурсам этапом любого классического алгоритма факторизации. В квадратичном решете оно используется для нахождения пар чисел (A, B) таких, что

A2 = B mod n (1)

где n - целое число, которое требуется факторизовать, B - так называемое гладкое число, (или просто гладкое). Число над некоторым множеством простых чисел F называется гладким, если оно представимо в виде произведения множителей из F. F

F

просеивания, определяющих его эффективность.

Чтобы разложить число n, достаточно отыскать k' > k + 2 тар (A, B), удовлетворяющих (1), где k - размер факторной базы. Затем формируется система линейных уравнений размерности k х k' с коэффициентами из поля F2 = {0,1} и пулевым столбцом свободных членов. Система недоопределена, и следовательно, имеет нетривиальное решение. Получив вектор решения системы, можно найти пару (C, D) такую, что C2 = D2 mod n, перемножая все пары (A, B), вошедшие в решение. Делитель p исходного n определяется как НОД(п, C + D) или

НОД (n, C — D). В некоторых случаях оба найденных делителя оказываются тривиальными (равными 1 или n), тогда нужно искать другое решение системы и другую пару (C, D).

Таким образом, последовательность действий в методе квадратичного решета будет следующей.

1. Выбираем факторную базу из всех простых чисел, меньших некоторой верхней границы B: FB = {2, 3, 5,... pk}, pk < B. Для n = 0(10100) граница B выбирается в пределах от 106 до 107 (см. [1, с. 8-9]).

2. Фильтруем факторную базу, оставив в FB только те элементы р, для кото-np

n = k2 mod р

должно иметь целое решение k. Такие р могут быть быстро отобраны с помощью вычислений соответствующего символа Лежандра, так как вычислительная сложность этой операции O (log n log р) (см. [4, с. 29-31]) полиномиальна по отношению n

3. Следующий шаг заключается в формировании генерирующего полинома, который в случае QS будет иметь вид

q(x) = (x + m)2 — n = x2 + 2mx — a, (2)

где m = \yfn\ и a = n — m2 .

Любое значение q(x) обладает свойством: (x + m)2 = q(x) mod n.

4. Затем для каждого p £ {FB} находим корни , r2p) уравнения

q(x) = 0 mod p. (3)

p 0, 1 , . . . , p — 1

p

ритм Шэнкса (см. [5, с. 110-115]) находит корни выражения (3) в среднем за время O(log2 p). В случае квадратичного полинома если один корень найден, то второй легко находится с помощью теоремы Виета: = 2m mod p.

Предположим теперь, что для всех p £ FB тройки (p, ) уже найдены.

5. Далее выбирается интервал [—L; L] и выполняется просеивание полинома

(2) по элементам множества FB, то есть производится быстрый поиск гладких

относительно FB чисел среди всех значений полинома па выбранном интервале. По идее Померанца (см. [1, с. 4 6]) этот поиск может быть осуществлен аналогично тому, как в случае решета Эратосфена происходит отсеивание простых чисел от составных. Действительно, по определению гладкости мы хотим найти такие целые значения q(x), которые после всевозможных делений на элементы факторной базы обращались бы в 1 (или — 1). Из квадратнчности полинома q(x) следует, что если для некоторых x и p выполняется q(x) = 0 mod p, то каждое последующее q(x + + kp), k £ Z также делимо на p. Таким образом, суть процедуры просеивания становится очевидной. А именно простейший вид этой процедуры заключается в

p

с ними корней x, удовлетворяющих (3), делении на p каждого значения q(x + kp), где x £ [—L; L], и последующем поиске тех значений q(x), которые обратились 1

6. Решая СЛАУ, составленную из найденных гладких пар вида (1). находим пару (C, D) такую, что C2 = D2 mod n, и, возможно, нетривиальную факториза-n

Сложная проблема оптимизации процедуры просеивания заключается в выборе подходящих параметров полиномиального решета для наиболее эффективного поиска достаточного количества гладких чисел для последнего этапа алгоритма.

Очевидно, что для любой процедуры просеивания независимо от того, реализуется ли она в рамках алгоритмов QS или NFS, ключевым этапом является выбор BL взаимосвязаны. Когда мы увеличиваем размер факторной базы, нам требуется найти большее количество гладких, соответствующих уравнениям в системе линейных

B

большим, то на интервале просеивания [—L; L] будет найдено недостаточное чне-

L

аргумента полинома просеивания соответствующие значения полинома растут со значительно большей скоростью, и это уменьшает вероятность нахождения новых гладких чисел. Эти рассуждения верны как для метода NFS со степенью генерирующего полинома d = 5 или 6, так и для классического QS, работающего с полиномами второй степени. Мы также рассматриваем модификацию квадратичного решета Занга (см. [6]), которая особым образом использует в QS полиномы четвёртой степени н в специальных случаях является более эффективной.

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

B

базе.

n

B

факторной базы FB и радиус интервала просеивания L.

1. Просеивание по подынтервалам исходного интервала [—L; L]

Рассмотрим ситуацию, когда процедура просеивания завершила свою работу. Мы получаем некоторое множество пар

S = {(A, B) : A = x + m, B = q(x)}, (4)

удовлетворяющих (1). Это множество должно быть отфильтровано так, чтобы

(A, B) (A, B) = 1

просеивание и фильтрацию как первый шаг нашей процедуры. Предположим, что

S

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

L

ния границы B наибольшего простого в FB произвести дополнительный поиск гладких среди значений полиномов qp(k) = q(x + pk)/p, где q(x) = 0 (mod p). Рассмотрим эту идею подробнее.

Назовем 1-гладким число z, если оно является произведением гладкого числа r p B1 = B2

После завершения первого этапа просеивания мы находим большое количество 1-гладких чисел. Пусть для некоторого x значение q(x) будет 1-гладким, то есть q(x) = r • p, где B < p < B1. Заметим, что каждое последующее значение q(x+p• k)

также делимо на p для всех k £ Z. Запишем многочлен q(x + p ■ k) в виде:

q(x + p ■ k) = (x + p ■ k)2 + 2m(x + p ■ k) — a = q(x) + p2k2 + 2pk(x + m).

Обозначим через qp(k) последнее выражение, поделенное на p:

qp(k) = q(x + p ■ k)/p = pk2 + 2k(x + m) + r, (5)

так как q(x) = p ■ r. Принимая во внимание, что основной вклад в выражения q(x) и qp(k) вносят коэффициенты при m, мы видим, что скорости роста этих функций приблизительно совпадают. Таким образом, мы получаем новый объект для просеивания. Так как просеивание полинома (5) эквивалентно просеиванию исходного полинома q(x) по аргументам xk = x + p ■ k, назовем эту стадию просеиванием по п одын т ер в ал ам.

1.1. Пример просеивания по подынтервалам в QS. Рассмотрим пример: пусть n = 21683-34613 = 750513679 - составное число, факторизацию которого мы хотим найти. Выбрав m = 27396, получим генерирующий полином для алгоритма квадратичного решета q(x) = x2 + 54274x + 27137, так как n = m2 — 27137.

Выберем границу просеивания B (максимальный элемент факторной базы) и радиус L интервала просеивания равными 100. После фильтрации простых чисел, для которых n mod p не является квадратичным вычетом, получим факторную базу

FB = {2, 3, 5, 11, 17, 23, 29, 43, 47, 53, 59, 61, 67, 83}.

k

ти не меньше k +1 = 15 гладких чисел. Сначала, используя алгоритм Шэнкса, найдем корпи r(p) выражения (2) для каждого p £ FB. Теперь, используя эту информацию, выполним первый этап нашей процедуры, состоящий в просеивании исходного полинома q(x) = x2 + 2mx — a и фильтрации результатов. Этот этап дает нам 13 пар (A, B) удовлетворяющих (1) среди 2L + 1 = 201 просеянных пар, а также 56 1-гладких чисел с простым множителем p < B2 = 10000, располо-

103 8719

дополнителыгого просеивания.

В экспериментальных целях было выполнено просеивание с теми же параметрами L = 100, B = 100 для каждого из 56 простых p, соответствующих найденным 1

содержит аргументы x, для которых q(x) 1-гладкое, второй ряд - значения со-

p

гладких пар (после отбрасывания пар, уже найденных на первом этапе) после просеивания по соответствующему подынтервалу.

Табл. 1

X 89 81 59 33 31 4 1 1 2 8 13 27

р 863 181 2659 1471 103 252 419 2731 1823 5381 2417 6029

14 6 10 10 8 10 10 9 10 5 8 7

Среднее количество найденных гладких пар из 62 дополнительных просеиваний оказалось равным 8.48. Это число меньше, чем количество гладких пар найденных на первом этапе (13), но вопреки ожиданиям мы обнаружили, что 1-гладкие с относительно небольшим простым множителем р (например, р = 103 щи х = -31) не дали много решений, тогда как наибольшее количество решений (14) было найдено при просеивании для х = — 89 и относительно большого простого р = 863.

Общее число найденных гладких пар достигло 488. что потребовало просеивания интервала общей длины, равной (2L + 1) (56 + 1) = 11457. Соответствующий поиск по исходному полиному q(x) без просеивания по подынтервалам показыва-

x

просеивании полинома q(x) по непрерывному интервалу такой же длины, как в предыдущем случае, то есть по интервалу с радиусом L = [11457/2] = 5728, было найдено только 69 решений (в 7 раз меньше).

1.2. Оценка эффективности просеивания по подынтервалам. Оценим количество дополнительной работы, требуемое для просеивания по подынтервалам в алгоритме QS. Пусть h = q(x) = r ■p' - найденное на первом этапе 1-гладкое число с гладким множителем r и простым p' < B2.

1. Поскольку множитель p' уже вошел в разложение значения q(x), то n является квадратичным вычетом по модулю p', следовательно, вычисления символа

p'

2. На следующем шаге иужно найти корни выражения

qp> (k) = p'k2 + 2(m + x)k + r = 0 mod p (6)

для каждого p £ FP. Дискриминант Di этого выражения равен (m + x)2 — p' ■ r = (m + x)2 — q(x) = m2 + 2mx + x2 — x2 — 2mx + a = m2 + a = n.

Так как квадратные корни из n то модулю всех p £ FP уже найдены, то корни кг = (ж + т ± а/й) modp уравнения (6) могут быть найдены сразу. Таким образом, просеивание по подынтервалам можно начинать непосредственно после нахождения 1-гладкого числа, без дополнительных вычислений:

p'

бавлен к факторной базе FB, увеличивая возможности поиска.

Более того, поиск гладких чисел может быть реализован в параллельных процессах, просеивающих новые подынтервалы, с постоянно растущей факторной ба-FB

2. Просеивание по подынтервалам в методе Занга

2.1. Описание метода. Модификация алгоритма квадратичного решета, которая называется методом Занга, заключается в следующем.

Рассмотрим значения многочлена W(x) = Q(x)2 mod P(x), где P(x) = x3 + + aix2 + a2x + a3 - фиксированный полином со свойством P(m) = n, m = [n1/3], а n

При этом Q(x) = bix2 + &2x + 63 - полином с произвольными коэффициентами 6j.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

По определению P(x) получаем: W(m) = Q(m)2 mod n, то есть, перебирая различные полиномы Q(m) так же, как и в методе QS, мы можем найти достаточное количество гладких пар вида (1), составить систему линейных алгебраических уравнений для нахождения сравнения вида C2 = D2 mod n и получить искомую n

Несложно показать, что W(m) = c1m2 + c2m + c3, где

ci — b1(a1 — a2) — 2aibib2 + b2 + 26163,

C2 = 62(aia2 — a3) — 2a2bib2 + 2a2bib2 + 26263, C3 = 63aia3 — 2a36i62 + 63.

Идея Занга (см. [6. с. 3 4]) состояла в том. чтобы параметризовать переменные 61; 62, 63 так, чтобы старший коэффициент в Ж(т) обращался в 0, то есть

б1(а2 - а2) - 2016162 + 62 + 26163 = 0.

Последнее выполняется, если

а262 — 26163 = 62а1 — 2а16162 + 62 = (62 — а^)2 или 61(а2 — 263) = (62 — а161)2.

Вводя два новых независимых параметра и и V и приравнивая 62 — 0161 к их удвоенному произведению (двойка добавляется, чтобы исключить появление дробей при вычислении 63), получим параметризацию Занга:

Оценивая величину значений Ш(и, «), можно выделить два крайних случая: и = 1, тогда Ш(и, V) = /(«) = 0(т/у3) = 0(п1/3-у3), и = V, тогда Ш(и,«) = и4/(1) = 0(т-у4) = 0(п1/3-у4).

В этих оценках мы считаем, что коэффициенты а* многочлена Р (ж) не вносят значительного вклада в оценку величины Ш(и,«). То есть а* = 0(1), а следовательно, dj = О(т). Действительно, на практике для получения преимущества над квадратичным решетом метод Занга используется, как правило, только для чисел специального вида, например п = т3 + с при небольшом с, либо просеивание осуществляется по небольшому интервалу и выигрыш достигается за счет меньшего

т

Очевидно, данная параметризация порождает не один, а множество полиномов

и

сводится к идентичной задаче в алгоритме квадратичного решета.

2.2. Оценка эффективности просеивания по подынтервалам. Для метода Занга также можно применить процедуру просеивания по подынтервалам, однако ее использование уже будет менее эффективным, чем в случае квадратичного решета.

Зафиксируем и. Для простоты положим и = 1, тогда Ш(и,«) = /(«). Если нам известно такое ж, что р|/(ж), то для просеивания по соответствующему подынтервалу будет использован полином

Итак, получаем функцию W(u, v) = dou4 + diu3v + d2u2v2 — 4muv3 + v4, где

Пусть t = v/u, тогда W(u, v) = u4f (t), где

f = d0 + dit + d2t2 — 4mt3 + t4.

fx,p(l) = f (x + pl)/p = f (x)/p + d1Q1,x,p(l) + d2Q2,x,p(l) + d3Q3,x,p(l) + Q4,a:,p(0j

где Qi,x,p = ((ж + р/)г — ¿г) /р> а именно:

Q4,x,P(/) = Р314 + 4жр2/3 + 6ж2р/2 + 4ж3/,

Qз,x,p(l) = Р2/3 + 3жр/2 + 3ж2/,

(9)

Q2,x,p(/) = р/2 + 2ж/,

Q1!x!p(/) = /*

Грубо величину получившегося выражения можно оценить как 0(р2/3т + + / (ж) /р) • Если сравнить эту оценку с полученной ранее оценкой для Ж (1, V), то видно, что она больше на множитель р2 . Нужно еще учесть, что вклад Q4,x,P(/) в /^(О всегда будет больше, чем вклад V4 в Ж (и, V). На практике это означа-

/

быстро сокращается (относительно исходного интервала просеивания) с ростом р,

и

Пример. Для факторизации числа

п = (229)3 + 3 = 67 6 3 4 8 2 8 6 641 • 228791153858291

можно воспользоваться методом Занга, в котором т = 229 = 536870912, Р(ж) = = ж3 + 3. Тогда /(4) = 44 — 214748364843 — 244 — 6442450944. Если и = 1, то просеивание осуществляется по значениям полинома /(V), V £ [—Ь, Ь].

Ограничив максимальный элемент факторной базы числом В = 2, 5 • 104, проведем тестовое просеивание по небольшому интервалу с радиусом Ь = 104.

Исходный интервал дает 51 гладкое число с максимальным фактором 24419. Однако просеивание по подынтервалам для тех же параметров и ртах = 24419 уже не дает новых гладких, и для любого р, сравнимого с ртах, такое просеивание либо совсем не дает результата, либо находит только одно новое гладкое, несмотря

р

/ £ [—Ь, Ь] и просеиваются значения полинома /^(0 = /(ж + р/)/р).

р

количество новых гладких, просеивая меньший интервал / £ [—Ь', Ь'], где Ь' = еЬ для некоторого положительного числа е < 1.

Пусть, например, р = 107. Так как 107|/(62) = —511811910536640, то можно применить просеивание по подынтервалам для ж = 62, р = 107, то есть искать гладкие среди значений / (ж + р/)/р.

В результате такого просеивания были найдены следующие гладкие числа:

/ (62 — 938р) /р = / ( —100304)/р = 20254481488906598093440 =

= 27 • 5 • 7 • 17 • 103 • 463 • 643 • 839 • 2389 • 4327,

/ (62 — 164р)/р = / ( —17486)/р = 107305268678342604832 =

= 25 • 907 • 3371 • 4967 • 12611 • 17509,

/ (62 + 222р) /р = / (23816)/р = —271111372974448257600 =

= —26 • 32 • 52 • 257 • 1483 • 2903 • 4001 • 4253,

/ (62 + 311р)/р = / (33339)/р = —743698752112238207493 =

= 13 • 59^ 67^ 172^ 1777 • 259^ 5923.

Чтобы найти эти гладкие числа, достаточно было просеять интервал с радиусом Ь' = Ь/10, однако фактически найденные гладкие числа располагаются на интервале, большем в 10 раз, чем исходный. При этом увеличение радиуса исходного Ь'

Ь'

дополнительное количество гладких чисел (см. табл. 2).

Табл. 2

Функция Интервал Количество новых гладких

/(15 + 107fe)/107 к G [-L\L'] 1

/(18 + 103fe)/103 к G [-L\L'] 1

/(26 + 103fe)/103 к G [-L\L'] 3

/(41 + 109fc)/109 к G [-L\L'] 3

Итак, возможно найти 12 гладких чисел в результате просеивания 5 интервалов длины 2L. При этом увеличение исходного интервала на 10L и повторное просеивание дали бы только 6 новых гладких (в 2 раза меньше).

Таким образом, пример показывает, что несмотря на то что в ситуации, когда найдено недостаточное количество гладких, как правило, выгоднее расширять исходный интервал просеивания (так как при этом находятся гладкие со всевозможными факторами из факторной базы, а не только с заданным фактором р), все-таки просеивание по подынтервалам в модификации Занга можно использовать, например, в тех случаях, когда удачно подобранные простые р позволяют быстро найти небольшое недостающее количество гладких чисел для последнего этапа алгоритма.

Заключение

Мы описали стратегию просеивания в методе факторизации квадратичного решета (QS), которую также можно использовать в методе факторизации числового поля (NFS) и в модификации QS Занга. На примере QS видно, что эта стратегия может давать существенный выигрыш, уменьшая величины верхней границы простых чисел в факторной базе и радиуса интервала просеивания, предоставляя дополнительные возможности для параметризации алгоритма, а также допуская его распараллеливание. Поскольку перечисленные методы являются лучшими на сегодняшний день для разложения произвольного большого составного n на простые множители, это позволяет говорить о том, что с помощью описанного подхода можно сделать процедуру факторизации более эффективной.

Summary

В.В. Ziyatdinov, R.G. Rubtsova. Он a Strategy in t.lie Sieving Procedure for the Factorization of Large Natural Numbers.

This work describes a sieving strategy applied for the efficient algorithms of the quadratic sieve and the number field sieve integer factorization. A modification of the quadratic sieve method (Zhang’s method) is also considered. Examples and theoretical estimations are given which show practicability of this approach for improving integer factorization procedures.

Key words: factorization, quadratic sieve, number field sieve.

Литература

1. Ротегапсе С. Smooth Numbers and the Quadratic Sieve // Algorithmic Number Theory. MSRI Publications. 2008. V. 44. P. 69 81.

2. Briggs M. An Introduction to the General Number Field Sieve: Master’s Thesis.

Blacksburg. Virginia: Virginia Polytechnic Institute and State University, 1998. 84 p.

URL: http://scholEir.lib.vt.edu/theses/available/etd-32298-93111/uiirestricted/etd.pdf,

свободный.

3. Бойко А.А., Зиятдииоо Д.Б., Ишмухаметов Ш.Т. Об одном подходе к проблеме

факторизации натуральных чисел // Изв. вузов. Матем. 2011. Л'! 4. С. 15 22.

4. Cohen Н. A Course in Computational Algebraic Number Theory. Berlin: Springer,

1993. 545 p.

5. Niven I., Zuckrrnan H., Mongomery H. An introduction to the number theory. Willey

Publ., 1991. 541 p.

6. Zhang M. Factorization of the Numbers of the Form m3 + c2m2 + cim + co // Proc. 5th Int. Symposium on Algorithmic Number Theory / Lecture Notes in Computer Science. V. 1423. Berlin: Springer-Verlag, 1998. P. 131 136.

Поступила в редакцию 25.04.10

Зиятдинов Дмитрий Булатович аспирант кафедры системного анализа и информационных технологий Казанского (Приволжского) федерального университета. Е-шаіІ: (ІгіуаМі вуа. ги

Рубцова Рамиля Гакилевна старший преподаватель кафедры системного анализа и информационных технологий Казанского (Приволжского) федерального университета. Е-шаіІ: Ramilya.Ruhtsovaeksu.ru

i Надоели баннеры? Вы всегда можете отключить рекламу.