/
Автор: Василенко О.Н.
Теги: теория чисел математическая кибернетика кибернетика математика алгоритмы монография криптография
ISBN: 5-94057-103-4
Год: 2003
Текст
ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ: КРИПТОГРАФИЯ
Институт проблем информационной
безопасности МГУ
О. Н. ВАСИЛЕНКО
ТЕОРЕТИКО-ЧИСЛОВЫЕ
АЛГОРИТМЫ В КРИПТОГРАФИИ
МЦНМО, 2003
УДК 511+519.719.2 Издание осуществлено при поддержке РФФИ
ББК 32.81в6 {издательский проект №03-01-14110).
В19
Василенко О. Н.
В19 Теоретико-числовые алгоритмы в криптографии. — М.:
МЦНМО, 2003. — 328 с.
ISBN 5-94057-103-4
В монографии представлено современное состояние алгоритмической теории
чисел, имеющей важные приложения в криптографии.
Предназначено для студентов старших курсов и аспирантов математических
факультетов вузов, а также для специалистов, желающих познакомиться с по-
последними достижениями в данной области.
ББК 32.81в6
© О. Н. Василенко, 2003.
ISBN 5-94057-103-4 © МЦНМО, 2003.
Оглавление
Предисловие 7
Обозначения 10
Глава 1. Тестирование чисел на простоту и построение
больших простых чисел 12
§1.1. Введение 12
§1.2. Элементарные методы проверки простоты чисел 12
§ 1.3. Тесты на простоту для чисел специального вида 15
§ 1.4. (N ± 1)-методы проверки простоты чисел и построения
больших простых чисел 22
§ 1.5. Алгоритм Конягина—Померанса 28
§ 1.6. Алгоритм Миллера 32
§ 1.7. Вероятностные тесты на простоту 37
§ 1.8. Современные методы проверки простоты чисел 43
§1.9. Заключение. Детерминированный полиномиальный
алгоритм проверки простоты чисел 48
Глава 2. Факторизация целых чисел с экспоненциальной
сложностью 57
§ 2.1. Введение. Метод Ферма 57
§2.2. (Р — 1)-метод Полларда 60
§ 2.3. р-метод Полларда 62
§ 2.4. Метод Шермана—Лемана 65
§ 2.5. Алгоритм Ленстры 67
§ 2.6. Алгоритм Полларда—Штрассена 73
§2.7. (Р+ 1)-метод Уильямса и его обобщения 74
§ 2.8. Методы Шзнкса 75
§ 2.9. Прочие методы. Заключение 76
Глава 3. Факторизация целых чисел с субэкспоненциальной
сложностью 77
§3.1. Введение 77
§ 3.2. Метод Диксона. Дополнительные стратегии 78
§ 3.3. Алгоритм Бриллхарта—Моррисона 83
§ 3.4. Квадратичное решето 87
Оглавление
§ 3.5. Методы Шнорра—Ленстры и Ленстры—Померанса .. 92
§ 3.6. Алгоритмы решета числового поля 93
§ 3.7. Заключение 107
Глава 4. Применение кривых для проверки простоты
и факторизации 108
§4.1. Введение. Эллиптические кривые и их свойства 108
§4.2. Алгоритм Ленстры для факторизации целых чисел
с помощью эллиптических кривых 110
§ 4.3. Вычисление порядка группы точек эллиптической кри-
кривой над конечным полем 115
§4.4. Тестирование чисел на простоту с помощью эллипти-
эллиптических кривых 124
§ 4.5. Заключение 129
Глава 5. Алгоритмы дискретного логарифмирования 130
§5.1. Введение. Детерминированные методы 130
§5.2. р-метод Полларда для дискретного логарифмирования 132
§5.3. Дискретное логарифмирование в простых полях 134
§5.4. Дискретное логарифмирование в полях Галуа 138
§5.5. Дискретное логарифмирование и решето числового поля 141
§ 5.6. Частное Ферма и дискретное логарифмирование по со-
составному модулю 146
§5.7. Заключение 161
Глава 6. Факторизация многочленов над конечными полями 163
§6.1. Введение. Вероятностный алгоритм решения алгебра-
алгебраических уравнений в конечных полях 163
§ 6.2. Решение квадратных уравнений 167
§6.3. Алгоритм Берлекэмпа 171
§ 6.4. Метод Кантора—Цассенхауза 176
§6.5. Некоторые другие усовершенствования алгоритма
Берлекэмпа 179
§6.6. Вероятностный алгоритм проверки неприводимости
многочленов над конечными полями 182
§ 6.7. Заключение 185
Глава 7. Приведенные базисы решеток и их приложения .. 187
§7.1. Введение. Решетки и базисы 187
§7.2. LLL-приведенный базис и его свойства 189
Оглавление
§ 7.3. Алгоритм построения LLL-приведенного базиса ре-
решетки 191
§ 7.4. Алгоритм Шнорра—Ойхнера и целочисленный LLL-
алгоритм 195
§ 7.5. Некоторые приложения LLL-алгоритма 199
§ 7.6. Алгоритм Фергюсона—Форкейда 204
§7.7. Заключение 217
Глава 8. Факторизация многочленов над полем рациональ-
рациональных чисел 218
§8.1. Введение 218
§ 8.2. LLL-алгоритм факторизации: разложение по простому
модулю 220
§8.3. LLL-алгоритм факторизации: использование решеток 221
§ 8.4. LLL-алгоритм факторизации: подъем разложения .... 226
§ 8.5. LLL-алгоритм факторизации: полное описание 229
§8.6. Практичный алгоритм факторизации 231
§ 8.7. Факторизация многочленов с использованием прибли-
приближенных вычислений 233
§ 8.8. Заключение 239
Глава 9. Дискретное преобразование Фурье 240
§9.1. Введение. Дискретное преобразование Фурье и его
свойства 240
§ 9.2. Вычисление дискретного преобразования Фурье 242
§9.3. Дискретное преобразование Фурье и умножение мно-
многочленов 243
§9.4. Дискретное преобразование Фурье и деление много-
многочленов 249
§ 9.5. Применение дискретного преобразования Фурье в ал-
алгоритме Полларда—Штрассена 252
§ 9.6. Заключение 254
Глава 10. Целочисленная арифметика многократной точности 255
§ 10.1. Введение. Сложение и вычитание 255
§ 10.2. Умножение 256
§ 10.3. Деление 260
§ 10.4. Некоторые алгоритмы модулярной арифметики 271
Оглавление
Глава 11. Решение систем линейных уравнений над конеч-
конечными полями 275
§11.1. Введение 275
§ 11.2. Решение систем линейных уравнений в целых числах . 276
§ 11.3. Гауссово и структурированное гауссово исключение .. 281
§ 11.4. Алгоритм Ланцоша 282
§11.5. Алгоритм Видемана 288
§ 11.6. Другие методы. Заключение 292
Приложение. Сведения из теории чисел 293
Литература 304
Предметный указатель 323
Предисловие
Данная книга посвящена алгоритмической теории чисел — интен-
интенсивно развивающемуся последние тридцать лет направлению в теории
чисел, имеющему важные приложения в криптографии. Актуальность
этого направления неизмеримо увеличилась в 70-е годы XX века в свя-
связи с появлением криптосистем Диффи—Хеллмана и RSA. В настоящее
время, по некоторым оценкам, практически весь мировой парк средств
асимметричной криптографии в математическом плане основан на тео-
теоретико-числовых задачах.
Для целей криптографии (как для практической реализации и обо-
обоснования стойкости криптографических средств, так и для разработки
методов их вскрытия) необходимо в первую очередь повышать эффек-
эффективность следующих методов и алгоритмов:
• алгоритмы проверки простоты целых чисел;
• методы факторизации (т. е. методы поиска разложения целых чи-
чисел на множители);
• вычисления, использующие эллиптические кривые над конечными
полями;
• алгоритмы дискретного логарифмирования;
• методы разложения многочленов на множители над конечными
полями и над полем рациональных чисел;
• способы решения систем линейных уравнений над конечными по-
полями;
• алгоритмы для выполнения арифметических операций с большими
целыми числами;
• алгоритмы полиномиальной арифметики.
В нашей книге мы стремились представить современное состоя-
состояние алгоритмической теории чисел, стараясь при этом дать достаточно
аккуратные обоснования описываемых алгоритмов. Некоторые наибо-
наиболее сложные и объемные алгоритмы и методы (такие, как проверка
простоты чисел с помощью тригонометрических сумм, алгоритмы ре-
решета числового поля) мы приводим лишь на идейном уровне, в ви-
виде некоторых общих схем. Мы также старались (хотя бы обзорно)
охватить современные работы по данной тематике как можно более
Предисловие
полно. Заинтересованный читатель может пополнить наш список ли-
литературы, обратившись к книгам [ ; ], а также к интернет-сайтам
www.cryptography.ru; www.math.uga.edu/~ntheory.
Данная книга написана на основе спецкурсов по алгоритмической
теории чисел, которые автор читал на механико-математическом фа-
факультете МГУ им. М.В.Ломоносова с 1993 по 2001 год. Кроме то-
того, в течение ряда лет автор руководил спецсеминарами по теорети-
теоретико-числовым алгоритмам в МГУ, последние годы — межведомствен-
межведомственным спецсеминаром «Теоретико-числовые алгоритмы в криптографии»
на кафедре информационной безопасности МГУ (совместно с акаде-
академиком Академии криптографии Российской Федерации В.М. Сидель-
никовым). Ряд результатов, приведенных в данной книге, был получен
автором в сотрудничестве с лабораторией по математическим пробле-
проблемам криптографии МГУ им. М.В.Ломоносова.
Эта книга не является книгой по элементарной математике. Для ее
чтения требуется достаточно серьезная подготовка, например, в объеме
первых двух-трех курсов математического факультета университета.
Мы предполагаем, что читатель знаком с теорией чисел в объеме
книги И.М. Виноградова «Основы теории чисел» (любое издание). Для
чтения некоторых параграфов требуется знание теории непрерывных
(цепных) дробей, см., например, книги [ ; ]. Для удобства читате-
читателя мы поместили основные определения и факты в Приложение. Для
чтения некоторых параграфов требуется знание основ теории конеч-
конечных полей, изложенной, например, в книге [ ], а также знание основ
алгебраической теории чисел, см., например, книгу [ ]. В некоторых
параграфах требуется более глубокое знание алгебраической теории
чисел; в таких местах мы даем ссылки на соответствующую литера-
литературу. Из учебных пособий по криптографии мы рекомендуем книгу [ ].
Во многих описываемых алгоритмах в качестве вспомогательных
используются алгоритмы нахождения наибольшего общего делителя
целых чисел и алгоритмы возведения в натуральную степень. Эти ал-
алгоритмы общеизвестны и изложены в различных книгах, см., напри-
например, [ ; ; ]. Мы приводим эти алгоритмы в Приложении, некото-
некоторые без обоснования корректности.
Везде в книге, когда речь заходит о том, что алгоритм делает какое-
либо количество арифметических операций, имеются в виду арифмети-
арифметические операции (сложение, вычитание, умножение, деление) с боль-
большими целыми числами (арифметика многократной точности).
Сложность алгоритма — это количество выполняемых им ариф-
арифметических операций. Обычно сложность алгоритма представляют
Предисловие
в виде какой-либо функции от длины входа, т. е. от количества би-
битов N, требуемых для записи входных данных. Если эта функция —
многочлен от N, то говорят, что алгоритм имеет полиномиальную
сложность (полиномиальный алгоритм); если эта функция име-
имеет вид La,[y; c] = e(c+oA))(los/V)T(loslos'V)'"T, где 0<у<1, с = const,
О 0, то оценка сложности алгоритма называется субэкспоненци-
субэкспоненциальной, с показателем у; если функция имеет вид ecN, где с = const,
то алгоритм имеет экспоненциальную сложность. Пусть, например,
п € N и мы хотим разложить п на множители. Длина входа равна
N= [\og2n] + 1 = O(logtt). Полиномиальный алгоритм факторизации
имеет поэтому сложность O((\ogn)c), субэкспоненциальный — слож-
сложность e(c+o(i))(iogn)T(iogiogn)'-T) экспоненциальный — сложность 0{пс).
Мы называем число В-гладким, если все его простые делители
не превосходят В (здесь В — некоторое положительное число, назы-
называемое границей гладкости). Целое число называется В-степенно-
гладким, если все его примарные делители (степени простых чисел)
не превосходят В.
Через logx мы обозначаем натуральный логарифм положительного
числа х.
Автор благодарит А. А. Сальникова, В. В. Ященко и Д. В. Матюхина
за помощь в работе над книгой, неоднократные обсуждения и много-
многочисленные советы по улучшению содержания рукописи.
Автор также благодарит Д. В. Матюхина за огромную работу по на-
научному редактированию рукописи.
Обозначения
N множество натуральных чисел;
Z кольцо целых чисел;
Ъ-^а множество целых чисел, больших или равных а;
К поле действительных чисел;
Ш^а множество действительных чисел, больших или рав-
равных а;
С поле комплексных чисел;
Р множество простых чисел;
|5|, #5 количество элементов в множестве 5;
Re а действительная часть числа а;
Ima мнимая часть числа а;
а | b а делит Ь\
а\Ь а не делит Ь;
рк\\а рк делит а, но pk+l не делит а;
b I a b делится на а (нацело);
va(b) наибольшее k € Z^o такое, что ак \ Ь;
(а, Ь), НОД(а, Ь) наибольший общий делитель а и Ь, где а и b — целые
числа или многочлены над некоторым полем;
[а, Ь], НОК(а, Ь) наименьшее общее кратное а и Ь;
[а] целая часть числа а;
\а] целая часть сверху, т. е. наименьшее п € Z, для ко-
которого п ^ а;
{а} дробная часть числа а;
const какая-либо положительная постоянная;
ях 10* натуральное число п записывается k десятичными
цифрами;
а = b (mod с) a — b делится на с в рассматриваемом кольце (це-
(целых чисел или многочленов);
а ф b (mod с) a — b не делится на с;
Обозначения
, GF{p), Zp
GF{q)
Z/nZ
(Z/nZ)*
R*
orda
char IK
cp(rt)
logx
0
My;
rank M
Res(/(x),
y:=x
поле из р элементов, где р — простое число;
поле из q элементов, где q — степень простого
числа;
кольцо вычетов по модулю п;
группа обратимых по умножению элементов кольца
Z/nZ;
группа обратимых по умножению элементов коль-
кольца R;
циклическая группа из п элементов с образую-
образующим g;
порядок элемента а в конечной группе;
характеристика поля К;
функция Эйлера от натурального числа п;
символы Лежандра и Якоби;
функция Чебышёва, равная количеству простых чи-
чисел, не превосходящих х;
натуральный логарифм х;
биномиальный коэффициент, число сочетаний из I
по/;
е\^ ~~Г~^\ ^ //V^S -^/ V^S ^й -^ / /~l ill ч. I I ТТ1Л IX V i. | гч/^\ Г* Л Л \f
у 1у| II г \J HUH Л- —* ~|~LaJ •, С- ii Y
постоянные;
транспонированная матрица (или вектор) М;
ранг матрицы М;
линейная оболочка векторов Ь\, ..., Ь„;
ортогональное дополнение к линейному подпро-
подпространству L в евклидовом пространстве;
кольцо многочленов от переменных х\, ¦¦¦, х„ над
кольцом К;
степень многочлена f(x)\
результант многочленов f(x) и g(x)\
у присвоить значение х.
Глава 1. Тестирование чисел на простоту
и построение больших простых чисел
§1.1. Введение
Натуральное число р, большее единицы, называется простым, если
оно делится нацело только на 1 и на себя. Основная теорема арифме-
арифметики гласит, что любое натуральное число п, большее единицы, может
быть разложено в произведение простых чисел, причем это разложение
единственно с точностью до порядка простых сомножителей. Канони-
Каноническое разложение натурального числа п имеет вид
где р\ < р2 < ¦ ¦ ¦ < Pk — различные простые числа, oti, ..., ak € N.
Задача проверки простоты натурального числа и задача построения
больших простых чисел имеют важные приложения в криптографии.
В данной главе мы опишем различные алгоритмы решения этих задач.
§ 1.2. Элементарные методы проверки
простоты чисел
Пусть яеЕ Как проверить, является ли п простым?
Метод пробных делений
Если п — составное, то п = ab, где 1 < а < Ь, причем а < фь. По-
Поэтому для d = 2, 3, ..., [у/п] мы проверяем, делится ли п на d? Если
делитель числа п не будет найден, то я — простое. В противном слу-
случае будет найден минимальный простой делитель числа п, т. е. мы даже
разложим п на два множителя. Сложность метода составляет О(я'/2)
арифметических операций с целыми числами.
Возможны модификации этого метода. Например, мы можем прове-
проверить, делится ли я на 2 и на 3, и если нет, то перебираем далее только
числа d вида 1 + 6/ и 5 + 6/, / = 1, 2, ... Сложность метода отличается
от предыдущей лишь постоянной в О() (см. об этом также [ ]).
§ 1.2. Элементарные методы проверки простоты чисел 13
Решето Эратосфена
Если мы хотим составить таблицу всех простых чисел среди чисел
2, 3, ..., N, то нужно сперва вычеркнуть все числа, делящиеся на 2,
кроме 2. Затем взять число 3 и вычеркнуть все последующие числа,
делящиеся на 3. Затем взять следующее невычеркнутое число (т. е. 5)
и вычеркнуть все последующие делящиеся на него числа, и так далее.
В итоге останутся лишь простые числа. Для реализации метода нужен
большой объем памяти ЭВМ, однако для составления таблиц простых
чисел он является наилучшим.
В книге [ , гл. 3] описаны эффективные алгоритмы, реализующие
решето Эратосфена для построения таблиц простых чисел и вычисление
факторных баз.
Тест на основе малой теоремы Ферма
Для проверки простоты чисел п порядка 1030—1040 метод пробных
делений уже неприменим. Следующий тест основан на малой теореме
Ферма: если п простое, то для любого а € Z выполнено сравнение
если
же
при
этом
(а,
п) =
ап =
1,то
а"
: а
=
(mod n);
1 (mod n).
Поэтому для проверки простоты п мы выбираем какое-либо а € Z
и проверяем выполнение малой теоремы Ферма за O(\ogn) арифмети-
арифметических операций (с помощью бинарного возведения в степень в кольце
Z/nZ). Если малая теорема Ферма не выполнена, то я — составное.
Если же она выполнена, то мы еще не можем сделать вывод о про-
простоте п, поскольку теорема дает лишь необходимое условие. Этот тест
является эффективным для обнаружения составных чисел. Например,
для 100-значных чисел п вида
я=10" + 8, 8=1,3,5,7,...,
мы проверяли выполнение теста 13™ 1 = 1 (mod n), и первые десять
чисел, прошедших этот тест, оказались впоследствии простыми (даль-
(дальнейшая проверка простоты проводилась алгоритмом Ленстры—Коена,
о котором будет рассказано в одном из следующих параграфов).
Однако существуют такие составные числа п, называемые числами
Кармайкла, что для любого а € Z выполнено сравнение ап = а (mod n).
14 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
Наименьшее такое п равно 561 = 3 • 11 • 17. Докажем, что 561 — чис-
число Кармайкла. Сравнение a56l=a (mod 561) равносильно тому, что
аш = а (mod 3), аш = а (mod 11), аш = а (mod 17). Если 3 | а,
то а561=а = 0 (mod 3). Если же 3{а, то а2 = 1 (mod 3), откуда
а560 = 1 (mod 3), a56l=a (mod 3). Аналогичная проверка делается
для 11 и 17. В работе [ ] показано, что чисел Кармайкла бесконечно
много.
Таким образом, для проверки простоты чисел малой теоремы Ферма
недостаточно.
Определение 1.1. Пусть п>\ —нечетное натуральное число,
п — 1 = 2s • d, где d — нечетно. Число п называется строго псевдо-
псевдопростым в базе а, а € N, если (а, п) = 1 и либо ad = 1 (mod n), либо
ad'2' = —1 (mod п) при некотором г, 0 < г < s.
Основанием для такого определения служат следующие рассужде-
рассуждения. Если п простое, то Ъ/пЪ — поле, и а"~1 = 1 (mod п), т.е. a2 'd =
= 1 (mod п). Отсюда a2" 'd = ±l (mod п). Если a2" d = —\ (mod n),
то мы останавливаемся, если a2" 'd = 1 (mod n), то снова извлекаем
корень до тех пор, пока не дойдем до ad или пока корень не будет
сравним с —1.
В работе [ ] эмпирическим путем получен следующий тест про-
проверки простоты нечетных чисел п, 7 < п< 25 • 109.
1 шаг. Проверить строгую псевдопростоту п в базах 2, 3, 5, 7. Ес-
Если п не строго псевдопростое в одной из баз, то оно составное.
2 шаг. Если « = 3215031751, то п — составное, иначе — простое.
Итак, мы видим, что тест на строгую псевдопростоту является эф-
эффективным для обнаружения составных чисел, однако и он является
лишь необходимым условием для простоты п. В работе [ ] предло-
предложен алгоритм, содержащий необходимые и достаточные условия для
проверки простоты чисел п < F7107840J. Он использует кроме тестов
на псевдопростоту некоторые свойства чисел Ферма.
Новые результаты о тестах на псевдопростоту были получены в ра-
работе [ ]. В частности, было показано, что существует бесконечно мно-
много нечетных составных п, для которых наименьшее со (я) € N, такое,
что п не является строго псевдопростым в базе со(я), удовлетворяет
неравенству
co(«)>(log«KIORloRloR".
Об элементарных методах проверки простоты чисел см. также об-
обзорные работы [ ; ] и книгу [ ].
§ 1.3. Тесты на простоту для чисел специального вида 15
§ 1.3. Тесты на простоту для чисел
специального вида
Рассмотрим сначала числа п вида п = 2т + 1, где т € N. Если т
делится на простое р > 2, т.е. т = рт\, пц ^ 1, то п = Bгщ)р + 1 де-
делится на 2т' + 1, т. е. является составным. Поэтому простым число п
может быть лишь при т = 2к.
Определение 1.2. Числа /7j,=22 + 1, k = 0, I, 2, ..., называются
числами Ферма.
В настоящее время известно, что числа Fo, F\, F<z, F3, /4 — про-
простые, а все последующие числа Ферма, которые удалось проверить
на простоту, оказались составными. При этом такая проверка оказалась
возможной, например, для /3471 (это рекорд 1984 г. [ ]), а про F3i
до сих пор неизвестно (см. [ ]), простое оно или составное.
Для проверки простоты чисел Ферма существует следующий тест.
Теорема 1.3. Число n = Fh при k>0 является простым тогда
и только тогда, когда
я-1
3 2 = — 1 (mod п).
Доказательство. Докажем достаточность. Поскольку п — 1 =
= 22 — степень 2, порядок 3 (mod п) равен п — 1 = 22 . Следовательно,
(Z/nZ)* содержит не менее п — 1 элемента, и поэтому все ненулевые
элементы Ъ/пЪ обратимы, т. е. п — простое число.
Теперь докажем необходимость. Заметим, что 22 = 42 =1 (mod 3).
Поэтому п > 3, п = 2 (mod 3), п = 1 (mod 4). По квадратичному закону
взаимности 1-1 = 1-1 • (—1) z z = I - 1 = I - 1 = — 1; по критерию
Эйлера (- ] =3 2 (mod n). ?
Тест теоремы проверяется за O(\ogn) арифметических операций
по модулю п, однако числа Ферма растут очень быстро, и поэтому
данный тест так же быстро становится неэффективным.
Теперь рассмотрим числа п вида п = 2т — 1. Если т — составное,
т = ab, 1 <а^Ь, то п = 2аЬ — 1 делится на 2а — 1. Поэтому простым
число п может быть лишь при простом т.
Определение 1.4. Пусть р — простое число, и Мр = 2Р — 1 —также
простое. Тогда Мр называется числом Мерсенна.
С помощью чисел Мерсенна получаются все четные совершен-
совершенные числа; они имеют вид 2Р~1 ¦ Мр. Числа Мерсенна крайне редки;
16 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
в 2001 г. было найдено тридцать девятое число Мерсенна — это
j^f 13466917- О числах Мерсенна см. также [ , Приложения 5.1, 5.2].
Для проверки простоты чисел Мерсенна используется следующий
тест.
Теорема 1.5. Пусть q — простое число, q>2, n = 2q — 1. Рас-
Рассмотрим последовательность to, L\,Li, ..., определяемую соот-
соотношениями
L0 = 4; L-l+\ = L2 — 2 (mod n).
Число п — простое тогда и только тогда, когда Lq_2 = 0 (mod n).
Доказательство этой теоремы мы приведем в конце данного пара-
параграфа.
Некоторые результаты о простоте чисел Ферма получены в рабо-
работе [ ]. Например, справедлива следующая теорема.
Теорема 1.6. Пусть р — простое число, р = Ъ (mod 4), Мр =
= 2р—\ — число Мерсенна. Число Ферма Fp является простым
тогда и только тогда, когда
M{pp-l)/2 = -l (mod Fp).
Доказательство. Достаточность доказывается аналогично тео-
теореме 1.3. Докажем необходимость. По малой теореме Ферма 22Р~1 =
= 2 (mod Мр), откуда Fp = 2- 22"~l + 1=5 (mod Мр). Следовательно,
{Fp, Мр) = 1. Далее,
(mod Fp)
(мы воспользовались критерием Эйлера и квадратичным законом
взаимности для символа Лежандра). Далее, Mp = 2ik+3 — \=23—
/Os
-1 (mod 5) = 2 (mod 5), (^) = (J)=-1.D
Прежде чем приступить к доказательству теоремы 1.5, мы должны
изучить свойства последовательностей чисел Люка. Эти последова-
последовательности используются также в более общем (N + 1)-методе проверки
простых чисел (см. следующий параграф).
Определение 1.7. Последовательности щ, и\, и2, ¦¦¦ и vq, vi,
V2, ..., где Мо = О. = 1, Щ = 2, Wi=4, а последующие члены по-
получаются по рекуррентной формуле х-1+\ =Ах; — Xy_i, называются
последовательностями чисел Люка.
Очевидно, что u<z = 4, м3 = 15, v<z = 14. Рассмотрим свойства после-
последовательностей чисел Люка.
Лемма 1.8. V; = щ+\ — щ_\ при /' ^ 1.
§ 1.3. Тесты на простоту для чисел специального вида 17
Доказательство. Для /'= 1, 2 утверждение очевидно. Пусть оно
верно для всех номеров, не превосходящих /'. Тогда при /' ^ 2 получим
= Av, - vHi = 4(m/+i - My_i) - (и/ - М/_2) =
= 4m/+i - My - Dм/_1 - М/_2) = М/+2 - м/.
Лемма доказана. ?
Лемма 1.9. щ = d+^bj^M. при у = 0, 1, 2, ...
Доказательство. При /' = 0, 1 утверждение очевидно. Далее, ха-
характеристическое уравнение рекуррентной последовательности имеет
вид X2 — 4Х + 1 = 0; его корни равны 2 ± л/3. Утверждение леммы те-
теперь очевидно. ?
Лемма 1.10. v, = B + л/ЗУ + B- л/ЗУ npuj = 0, 1, 2, ...
Доказательство аналогично предыдущему.
Лемма 1.11. М/+? = UjUh+i — Uj_\uk ярм условии, что /'—1^0,
Доказательство. Проведем индукцию по j + k = N. Если Л/= 1,
то /' = 1, й = 0. Тогда равенство Mi = mi«i — щщ, очевидно, выполнено.
Пусть утверждение верно при j + k^N. Докажем его для N+1.
Представим N + 1 в виде N + 1 = /' + (k + 1). Тогда N = j + k, N — 1 =
= / + (*-1),
м/v+i =4m/V-m/V_i =A(ujUk+i - Uj-iUk) - {UjUk - Uj-iUk-i) =
= Uj{4uk+i - Uk) - Uj-iiiUk - Mft_i) = UjUk+2 - U
что и требовалось доказать. Случай ^V + 1 = (/' + 1) + k рассматривается
аналогично. ?
Лемма 1.12. U2n = unvn.
Доказательство легко следует из лемм 1.9 и 1.10.
Лемма 1.13. v^n = v2n — 2.
Доказательство. В самом деле,
V3)n + B-V3)nJ = v2n + 2. ?
Лемма 1.14. Пусть р — простое число, eeN. Если щ =
= 0 (mod ре), то иР1 =0 (mod pe+l).
Доказательство. Пусть числа а и b таковы, что щ =ре ¦ b, uj+\ = a.
Тогда
и,Bи,+1 — Auj) = UjBDuj — Uj-i) — Ащ) = щ{Ащ — 2щ-\) =
= Uj{uj+i + Uj-i - 2щ-\) = u/Uj+i - Uj-iUj = u2j
2 О. Н. Василенко
18 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
по лемме 1.11. Поэтому
u2j = b-peBa- Abpe) = Чащ (mod pe+l).
Далее, по лемме 1.11
M2/+i = «(/+D+/ = "/+1 ~ "/ = fl2 (mod Pe+l)-
Предположим, что выполнены следующие соотношения:
А) «(*_!)/ = (k- \)ак-2щ (mod pe+l),
Б) u{k-i)j+i =ak~l {mod pe+l).
Тогда по лемме 1.11 при kj = j + (k — \)j получим
11ц = U(k-[)j+[Uj — U(k-[)jUj-[ =
= ak-lUj -(k- l)ak-2UjUHi (mod pe+l) =
= ak-lUj -(k- \)ak-2Uj{Auj - uj+{) (mod pe+l) =
Также при kj + 1 =/' + 1 + (k — \)j получим
ukj+i =M(ft_i)/+iM/+i - u(k_V)jUj = ak (mod
Это означает, что соотношения А) и Б) выполняются и при замене k — 1
на k.
Положим k—\=p. Тогда
upj = pap-lUj (mod pe+l) = 0 (mod pe+l),
что и требовалось доказать. ?
Лемма 1.15. Справедливы равенства:
6 ' V'~ 2^
Доказательство. По лемме 1.9 имеем
/=0
/' \9j-Bk+l) ok
= ?
0^l=2k-
Формула для Vj получается из леммы 1.10. ?
§1.3. Тесты на простоту для чисел специального вида 19
Лемма 1.16. Если р— нечетное простое число, то
р-1
ир = 3 2 (mod p), vp
(mod p), vp = 2p+l (mod p) =4 (mod p).
Доказательство. Поскольку биномиальный коэффициент удовле-
удовлетворяет сравнению ( J = 0 (mod р) при 0 < / < р, доказательство сле-
следует из леммы 1.15.П
Лемма 1.17. Пусть «2 = 0 (mod 2), м3 = 0 (mod 3), и для любого
простого р, р>3, найдется значение s(p) € {±1} такое, что
up+t{p) = 0 (modp).
Доказательство. По лемме 1.16 при р>3 выполнены сравнения
р-1
ир = Ъ 2 = ±1 (mod р). Если ир = 1 (mod p), то по лемме 1.8 получаем
мр_1 = 4ир - up+l =4-vp- up_i (mod p) = -ир_\ (mod p),
откуда г(р) = -1.
Если ир = — 1 (mod p), то
ир+1 = 4ир - Up-i =-4 + vp- Up+i (mod p) = -up+i (mod p),
откуда e(p) = +1. П
Определение 1.18. Пусть N ? N. Рангом m(N) появления N в по-
последовательности {му} называется величина
m(Af) = min {т ^ 1 | ит = 0 (mod jV)} .
Если же такого т не существует, то ранг m(N) не определен.
Лемма 1.19. Если ранг m(N) определен, то щ = 0 (mod N) тогда
и только тогда, когда / = 0 (mod m(N)).
Доказательство. Положим m = m(N), a = um+\ (mod N). Из ре-
рекуррентной формулы легко следует, что (и,, M/+i) = 1 для любого /' ^.
Поэтому (а, ит) = 1. По лемме 1.11 при /' ^ 1 имеем
ит+; = UjUm+i - Uj-ium = UjUm+i (mod N) = ащ (mod N).
Значит, члены последовательности ит, ит+\, ит+2, ¦¦¦ сравнимы
по модулю N с членами последовательности ащ, аи\, au<z, ¦¦¦
Следовательно, um+j делится на jV тогда и только тогда, когда аи;
делится на N, что равносильно делимости на N числа щ. Отсюда сле-
следует утверждение леммы. ?
20 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
Лемма 1.20. Для последовательности чисел Lj из теоремы 1.5
справедливо соотношение Lj = v2i (mod n).
Доказательство. Очевидно, что Lq = v\. Если утверждение леммы
верно для /', то, применяя лемму 1.13, получаем
Lj+\ = (LJ — 2) (mod n) = v\, — 2 (mod n) = w^+i (mod n),
что и требовалось доказать. ?
Лемма 1.21. При /' ^ 0 справедливы утверждения:
1) (ц, uj+i) = 1;
2) НОД(и/, иу) < 2.
Доказательство. Первое утверждение было проверено при дока-
доказательстве леммы 1.19. Второе утверждение следует из первого и из ра-
равенства 2uj+i =4ц + Vj, которое справедливо по лемме 1.8. ?
Приступим к доказательству теоремы 1.5.
Сначала докажем достаточность. Пусть Lq_2 = 0 (mod n). Тогда
и2,_2 =0 (mod 2q — 1) по лемме 1.20. Далее,
м2,_, = м2,_2и2,_2 = 0 (mod 2Ч - \)
по лемме 1.12. Кроме того,
м2,_2^0 (mod 2" - 1),
так как по лемме 1.21 числа щ и V/ не имеют общих нечетных простых
делителей.
Пусть га = тBч — 1) — ранг появления числа п = 2Ч — 1 в последо-
последовательности {и/}. Число т определено и, по лемме 1.19, га делит 2q~l,
но не делит 2q~2. Значит, га = 2q~l = ——.
Предположим, что п — составное, и придем к противоречию. Пусть
п = ре{' ¦¦¦ре/ —разложение п на простые сомножители, и либо г> 1,
либо е\ > 1. Все pj > 3, так как п = (— XL — 1 = — 2 (mod 3).
Положим
где z, = z(pj) e {±1} — величины из леммы 1.17, е/€{±1}. Тогда
щ = 0 (mod 2* — 1) по леммам 1.14, 1.17, 1.19. Следовательно, по лем-
1 1 г. j Я + 1
ме 1.19 число t делится на га= —г—.
§1.3. Тесты на простоту для чисел специального вида 21
Пусть
г
Тогда, так как р/ ^ 5, то
г
Поскольку числа р/ + s, четные, по свойству наименьшего общего крат-
п
ного получаем, что / < —гр. Тогда
Так как п = 1т — 1 < 2т, то
т<4•(- • т<Ът
/3\' 3
в силу неравенств 4 • I - ) ^ 4 • - < 3. Кроме того, при г ^ 3 имеем
/3\г 27
4 • ( - ) < 4 • --ГЗ < 1. Значит, г = 1 или г = 2.
\5/ 125
Поскольку / делится на m и m < / < 3m, то t = m = 2q~i или
t = 2m = 2q. To есть / является степенью числа 2. Следовательно,
по определению числа / получим, что е\ = \= ег. Кроме того, р\ + si
и pr + er — степени 2, т. е. р\ + si = 2k, p2 + ?2= 21. Если п составное,
то г = 2, и тогда
(Sl = _е2) так как я = -1 (mod 4)). Отсюда 2" = 2fc+/ ± 21 =р 2*. Поль-
Пользуясь делимостью всех слагаемых на 2тах^''\ находим, что й = /. Тогда
п = 2Ч — 1 = Bк + \)Bк — 1), что противоречит нечетности q. Достаточ-
Достаточность доказана.
Теперь докажем необходимость. Пусть п = 2Ч — 1 — простое чис-
число. Покажем, что U2?-2=0 (mod n), и тогда по лемме 1.20 получим
Lq_2 = 0 (mod n), что и требуется доказать.
По лемме 1.13 имеем w2,-i = fe-sJ ~ 2, поэтому надо показать, что
w2,-i = —2 (mod я). Справедливо равенство
22 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
Тогда по лемме 1.10 получаем:
„ /я+1\
Так как я — нечетное простое число, то у 2k j
^k)\{n+\-2k)\
делится на я при всех k, кроме k = 0 и k = —г—. Следовательно,
я—1 я+1
я+1
2 2 -w2,_, = 1+3 2 (mod я).
Но
«—1 ,п, 3—1 «—1
Поэтому
я-1
2 2 w2,_, = l + 3-(-l) = -2 (mod я).
Далее, я = 2* — 1 = — 1 (mod 8), откуда
2^" = 0) = 1 (mod я).
В итоге w2,_, = —2 (mod я), что мы и хотели доказать.
Теорема 1.5 полностью доказана.
Замечание 1.22. В книгах Рибенбойма [ ; ] содержится опи-
описание различных рекордов в области проверки простоты чисел, в част-
частности, для чисел Ферма и Мерсенна, для построения пар близнецов
(простых чисел вида р и р + 2) и для других простых чисел специаль-
специального вида.
§ 1.4. (iV± 1)-методы проверки простоты чисел
и построения больших простых чисел
В данном параграфе мы описываем методы, с помощью которых
можно проверять простоту натурального числа N, если известно полное
или частичное разложение N — 1 или N + 1 на множители. Прекрас-
§1.4. (N ± 1)-методы проверки простоты 23
ная библиография по этому вопросу содержится в работе [ ], а более
поздние работы можно найти в библиографии к [ ]. Мы также опишем
здесь некоторые способы построения больших простых чисел, широко
используемых в криптографии. Иные способы можно найти в рабо-
работах [ ; ; ; ].
Докажем сначала теорему, относящуюся к (N — 1)-методам провер-
проверки простоты чисел.
k
Теорема 1.23. Пусть neN, п > 1, п нечетно, п — 1 = П pf —
известное разложение п — 1 на простые множители. Если для
каждого 1=\, ..., k существует такое а,- € N, что
я-1
а"'1 = 1 (mod п), а,- р' ф 1 (mod n),
то п — простое число.
Доказательство. Обозначим пц порядок a,- (mod n) в коль-
кольце Z/nZ. Из условия следует, что пц\п— 1, пц\{п— \)/pi, поэтому
p*'\rrii для i=\,...,k. Следовательно, bl = ai ' (mod n) имеют
порядок pf в (Z/nZ)*, а элемент b = b[- ...¦ bk (mod я)—порядок
/?"' •... ¦ pakk =n — 1 в (Z/nZ)*. Поэтому Z/nZ— поле, и число я —
простое. П
Как применять теорему 1.23 на практике? Зная разложение п — 1
на множители, надо либо перебором подряд а = 2, 3, ..., либо случай-
случайным выбором а искать числа а,-, удовлетворяющие условию теоремы.
Если для некоторого а, \<а<п, окажется, что а"~1 ф 1 (mod n), то
п составное. Если же мы найдем а\, ..., а^, то тем самым покажем, что
п простое.
Заметим, что мы фактически уже пользовались методом теоре-
теоремы 1.23 применительно к числам Ферма (см. теорему 1.3 из § 1.3). При
этом числа а,- искать было не нужно, нам заранее известно, что а = 3.
Аналогичный результат справедлив в случае, когда известно полное
разложение п + 1 на множители.
Теорема 1.24. Пусть Р, QeZ, D = P2 -4Q^0. Определим по-
последовательность чисел Люка щ,и\,... дискриминанта D следу-
следующими соотношениями: щ = 0, и\ = 1, м/+2 = Pty+i — Quj при j ^ 0.
k „
Пусть п — нечетное натуральное число, п> 1, п+ 1 = П qy —
разложение на простые множители, и (—) =— 1. Если для каж-
каждого i=\,...,k найдутся такие Pi,Qi&Z, D = Pf — 4Qi, что
24 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
связанная с ними последовательность Люка и$\ uf, ... удовле-
удовлетворяет условиям
то число п — простое. Если же существует такая последова-
последовательность Люка {uj} дискриминанта D, что п\ип+\, то п — со-
составное число.
Эта теорема принадлежит к так называемым (N + 1)-методам про-
проверки простоты чисел. Ее доказательство, равно как и описание других
результатов, относящихся к (N + 1)-методам, выходит за рамки данной
книги. Заметим, что простейший результат здесь, связанный с провер-
проверкой простоты чисел Мерсенна, мы рассмотрели в теореме 1.5 из § 1.3.
Вернемся теперь к (N — 1)-методам проверки простоты чисел и по-
покажем, как с их помощью можно строить большие простые числа.
Теорема 1.25. Пусть п € N, п > 1, п нечетно, п — 1 = Fi ¦ Ri, где
k
(Fi, Ri) = 1. Пусть известно полное разложение Л = П Я\ на пР°~
/=1
стые сомножители. Если для любого ] = 1, ..., k найдется такое
a,j € N, что
aj-1 = 1 (mod n), (af~V)/q> - 1, п) = 1,
то, при условии, что
число п — простое.
Доказательство. Пусть р — произвольный простой делитель чис-
числа п. Мы покажем, что р > л/п, откуда следует простота п.
Из а"~1 = 1 (mod п) следует, что а" = 1 (mod p), откуда (а/, р) = 1
и порядок в) элемента а} (mod р) в Ъ/рЪ делит п — 1. Кроме того, по ма-
малой теореме Ферма е}\р —\. Далее, из условия теоремы следует, что
я- /я, ф j (moc| р^ 0ТКуда q*i | е. Следовательно, q*' \ р — 1, и поэтому
F{ = J[q*'\p-\. Значит, р - 1 ^ Fu p > F{ > у/Я. ?
Покажем, как с помощью теоремы 1.25 можно строить боль-
большие простые числа. Мы строим последовательность простых чисел
Р\ < Р2 < Рз < •••, пока не найдем простое число нужной нам вели-
величины. Простое нечетное число р\ выбираем произвольно, например,
р{ =3. Пусть мы уже построили простое pi-\. Выберем случайное г,
1 ^ r^pi-i — 1. Пусть r = 2s ¦ t, t — нечетно. Тогда в качестве канди-
кандидата на очередное простое /?,- возьмем n = 2rpt_i + I =2s+1/?,-_1 -t+\.
§1.4. (N ± 1)-методы проверки простоты 25
Положим F\ =2s+1p,_i, Ri = t. Очевидно, что (Fi,Ri)=l. Далее,
Fi > у/Я, поскольку п = 2s+lpi_it+ 1 < 2s+2pi_[t< 2s+2p2_l < F2. Сле-
Следовательно, для доказательства простоты п нужно найти (перебором)
числа а\ и п2 такие, что
а\~х = а~1 = 1 (mod п), (а^~ -\,п\ = (af1* -\,n) = \.
Если в ходе перебора найдется такое а, что а" ' ф 1 (mod п), или один
из двух наибольших общих делителей с п дает нетривиальный делитель
числа я, то я — составное; тогда нужно выбрать другое случайное г
(и другое п). Если же мы докажем простоту п, то положим /?,- = п.
Другой способ применения теоремы 1.25 заключается в следующем.
Мы снова строим цепочку простых чисел, и пусть построено p,_i > 3.
Выберем случайное четное г, 1 < г < pt_i — 3, и положим я = р,_1г+ 1.
Пусть F[ = Pi-i, Ri= r, (F[, R[) = \. Нам нужно найти всего лишь одно
натуральное а такое, что ап~1 = 1 (mod п), (аг — 1, п) = 1 (поскольку
= /¦). Действительно, неравенство Fi= pt_i> у/Я выполнено,
Pi-i
так как
n = pi-ir+ 1 </?,-_!(/?,-_! -3) + 1 =/?f_i — 3/7/_i + 1 <
</>?_! -3-5+ К/7?.!.
Перебор а осуществляется так же, как в предыдущем способе.
Следующая теорема является более эффективной для построения
больших простых, поскольку в ней отсутствует вычисление наиболь-
наибольшего общего делителя.
Теорема 1.26. Пусть n = 2rq + 1, где q — нечетное простое чис-
число, и г < 2q + 1. Если существует такое а € N, что
ап~1 = 1 (mod n), а2г ф 1 (mod n),
то п — простое число.
Доказательство. Пусть п — составное, п = pN, где р — простое,
/V> 1. Поскольку п\а2г — 1, то найдется простой делитель п, кото-
который входит в я в большей степени, чем в а2г — 1. Его и обозначим
через р. Тогда vp(n) > vp(a2r — 1), и при s = vp(a2r — 1) + 1 ^ 1 имеем
ps\n, ps\a2r-\.
Пусть d — порядок a (mod ps) в Z/psZ. Число d определено
и d | п — 1 =2rq, поскольку а" = 1 (mod п). Кроме того, d \ <f{ps) =
= ps~l(p — 1). Но из соотношения а2''ф 1 (mod ps) следует, что d\2r.
26 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
Значит, q\d. Поэтому q\ps~l(p — 1). Числа q и р различны, так
как р\п, q\n—\. Следовательно, q\p—\. Отсюда р=\ (mod q),
и в силу нечетности р и q получаем, что р = 1 (mod 2q). Кроме того,
п = 1 (mod 2q). Поэтому, так как n = pN, N= I (mod 2q). Поскольку
p>\ и N>\, то p^l+2q, N^l+2q. Значит, n = pN^ A + 2qJ.
Однако n = 2rq + 1 < 2qBq + 1) + 1 < A + 2qJ. Полученное противо-
противоречие доказывает теорему. ?
Замечание 1.27. Из теоремы 1.26 также следует метод построения
простых чисел, аналогичный предыдущим.
Замечание 1.28. Если заменить неравенство г < 2q + \ на нера-
неравенство r^2q + 2, то утверждение теоремы 1.26 о простоте п будет
неверным. Можно даже привести пример а и п, для которых условия
теоремы будут выполнены, но п будет составным. Следующая теорема
показывает, как можно увеличить верхнюю границу для г.
Теорема 1.29. Пусть n = 2rq+l, где q — простое число, г<
< \q + 2. Пусть существует такое aeN, что
ап~1 = 1 (mod п), а2г ф 1 (mod n).
Тогда либо п — простое, либо п = р2, где р = 2q + 1 — простое чис-
число и ар~1 = 1 (mod р2).
Доказательство. Пусть п — составное, п = pN, где р и N те же,
что в доказательстве теоремы 1.26. Мы показали, что
n = p = N=\ (mod 2q).
Если одно из чисел р и N строго больше 1 + 2q, то оно больше
или равно 1+4<7, и тогда n = pN^ A +2q)(\ +4q) = 8q2 + Qq + 1.
Но по условию n < 2qDq + 2) + 1 = 8q2 + \q + 1. Следовательно,
p = N = \ +2q, n = p2. Осталось показать, что ap~l = \ (mod p2).
Действительно, по условию aP ~l = 1 (mod p2), и по теореме Эйлера
aP ~p = 1 (mod p2), откуда следует требуемое сравнение. ?
Замечание 1.30. Если q известно, то проверить равенство п =
= Bq + IJ очень легко. То есть, узнав а, мы будем знать, простое п
или составное. Тест теоремы 1.29 очень эффективен для построения
больших простых чисел, так как чем больше верхняя граница для
выбора случайного г, тем дальше мы можем «шагнуть» при построении
очередного простого числа.
В рассмотренных выше теоремах 1.25—1.29 величина разложен-
разложенной части п — 1 имеет порядок л/п. Следующая теорема ослабляет это
условие до величины порядка я1/3 (см. [ ]).
§1.4. (N ± 1)-методы проверки простоты 27
Теорема 1.31. Пусть п— нечетно, п>\, n—\=FiRi, где
(Fi, Ri) = \, F[ — четно, и известно полное разложение F\
на простые множители. Пусть для любого простого делите-
делителя q числа F\ найдется такое aq € N, что
anq-{ = 1 (mod п), {а%-{)/ч -\,п) = \.
Пусть т € N и для каждого I = 1, 2, ..., т — 1 верно, что IF\ + 1 \ п.
Если
п < (mFi + l)BF2i + {L- m)Fi + 1),
где Ri = 1F\L\ + L, 1 < L < 2F\, mo n — простое тогда и только
тогда, когда либо R\ = L, либо число L2 — 8Li не является полным
квадратом.
Обзор результатов, относящихся к (Л/± 1)-методам проверки про-
простоты, см. в [ ; ].
Ряд результатов о построении больших простых чисел, соединя-
соединяющих в себе /V— 1-метод и тесты с тригонометрическими суммами,
приведен в работе [ ]. Например, справедлива следующая теорема.
Теорема 1.32. Пусть neN, п> 1, C0, п) = 1 и I — мнимая еди-
единица. Пусть также выполнены следующие условия:
1) з^-^/2 = (—l)("-1>/2(g) (mod я);
2) если п = 1 (mod8), то существует aeN такое, что aSn~i)/2 =
= — 1 (mod n);
3) если п = 3, 5 (mod 8), то 2^~1)/2 = -1 (mod п);
4) если п = 1 (mod 4), то при I = (— II/2 € С
Bi + l)*»-1)/2 • 5{п~1)/4 = I (mod nZ[i\),
а если п = Ъ (mod 4), то
Bi + 1)("+1>/2 . 5(")/4 = I (mod пЪЩ),
где1А=\;
5) если п = 7 (mod 8), то
и
{21 + 1)("+1>/2 . 5<"-3)/4 = l (mod п)ЪЩ),
где \ = I или \ = —I.
Тогда для любого seN, делящего п, выполнено сравнение
s = n1 (mod 240) при некотором /', 0 < /' < 3.
28 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
Эта теорема также применима для построения больших простых
чисел. При этом, если уже построено простое число Pj-i, то очередное
простое число ищется в виде n = rpj_\ + 1, где г — случайное четное
число, (г, Pj-i) = 1, удовлетворяющее неравенству
r<576OOpHi.
Таким образом, мы получили дальнейшее увеличение верхней границы
для г из теоремы 1.29, альтернативное теореме 1.31.
В заключение отметим, что существуют методы проверки простоты,
соединяющие в себе информацию от разложений N — 1 и N + 1, а так-
также использующие разложение N2 + 1 и т. д. Информацию о них можно
найти в обзорах [ ; ].
В конце этого параграфа дадим понятие сертификата простоты
числа.
Определение 1.33. Сертификатом Пратта для простого нечет-
нечетного натурального числа п называется набор {pi, ..., ри, а}, состоящий
из всех различных простых делителей pi числа п — 1 и натурального
числа а, удовлетворяющего соотношениям
а" = 1 (mod п), а{п-1)/р' ф 1 (mod я), /= 1, ..., k.
Если число п — простое, то для него существует сертификат Прат-
Пратта, хотя задача нахождения его для конкретного п может оказаться
непростой. Если же сертификат Пратта известен, то с его помо-
помощью можно убедиться в простоте п за O(\og п) арифметических
операций.
Сертификат простоты может иметь и другой вид; в частности, та-
такой сертификат может быть получен с помощью эллиптических кривых.
Об этом будет рассказано далее, в главе 4.
§ 1.5. Алгоритм Конягина—Померанса
Если п € N и известно полное разложение п — 1 на простые мно-
множители, или достаточно большая часть этого разложения, то можно
с полиномиальной сложностью проверить, простое п или составное.
Наилучшая оценка сложности здесь получена в алгоритме Конягина—
Померанса [ ]: k
Теорема 1.34. Пусть n e N, n > 1, п — нечетно, п — 1 = f[ q*1 —
/=i
известное разложение п— 1 на простые множители. Тогда про-
§1.5. Алгоритм Конягина—Померанса 29
^/(log«)/\
верку простоты п можно провести за ОI 1 арифмети-
арифметических операций.
Теорема 1.35. Пусть яеК,я>1, п — нечетно, п — 1 = FiRi, где
(Fi, Ri) = 1, и известно разложение Fi на простые сомножите-
сомножители. Если Fi^nin , где е — положительная постоянная, то про-
проверку простоты п можно провести за O((logn)c(E)) арифметиче-
арифметических операций (здесь с(е) — положительная постоянная, завися-
зависящая от е).
Мы приведем здесь более бесхитростный алгоритм, который в усло-
условиях теоремы 1.34 проверяет, простое п или составное, за O((lognM)
арифметических операций. Далее мы предполагаем, что выполнены
обозначения и условия этой теоремы. Мы также будем считать, что п>Ъ.
Лемма 1.36. Пусть а, т € N, ат = 1 (mod n), и пусть для любого
простого числа q, делящего т, (amlq — \, п) = \. Тогда, если р —
простое и р\п, то р = 1 (mod га).
Доказательство. Очевидно, что га — порядок a (mod n) в Z/nZ.
Пусть р — простое число, делящее п, и пусть k — порядок a (mod p).
Тогда k = т. Действительно, k \ т, так как из а = 1 (mod n) следует,
что ат = 1 (mod p). Если k < га, то найдется простое число q, q \ га, что
k | т/q. Отсюда a'nlq = 1 (modр), т. е. р \ (a'nlq —\,n), что противоречит
условию леммы.
Далее, по малой теореме Ферма ар~1 = 1 (mod p). Следовательно,
га | р — 1, что и требовалось доказать. ?
Алгоритм проверки простоты числа.
1 этап. Заготавливаем таблицу всех простых чисел, не превосходя-
превосходящих [log2 п] + 1. Присваиваем F(\) := 1. Затем для каждого а = 2, 3, ...
..., [log п] + 1 осуществляем 2-й этап, пока не докажем, что п — про-
простое или же что п — составное число.
2 этап.
1 шаг. Если а — составное (см. таблицу 1 этапа), то F(a) :=F(a— 1)
и идем на 6 шаг. Если а — простое, и aF{-a~V) = 1 (mod n),
то F(a) := F(a — 1) и идем на 6 шаг. Иначе проверяем, выполняет-
выполняется ли сравнение:
а"~1 = 1 (mod n).
Если нет, то п составное.
2 шаг. Используя разложение п — 1 на простые сомножители, най-
найти порядок числа a (mod п), т.е. наименьшее натуральное число Е(а),
такое, что aEi-d) = 1 (mod n).
30 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
3 шаг. Проверяем, выполняется ли условие:
НОД( YI (аЕ(а)/ч - 1), л) = 1-
^ q\E(a) '
q — простое
Если нет, то я — составное.
4 шаг. F(a) := HOK(F(a - 1), Е{а)).
5 шаг. Если F(a) ^ л/п, то п — простое число.
6 шаг. Если а ^ [log п], то возвращаемся к началу выполнения
2 этапа для следующего значения а. Если же а = [log2 я] + 1, то п —
составное.
Конец алгоритма.
Докажем корректность алгоритма и получим оценку его слож-
сложности.
Таблица простых чисел на 1 этапе находится с помощью решета
Эратосфена за O(log4n) арифметических операций.
Текущее значение F(a) является делителем п—\, поэтому 1 шаг
2 этапа выполняется за O(logn) операций (бинарное возведение в
степень).
2 шаг 2 этапа выполняется за O(log n) операций с помощью сле-
следующего вспомогательного алгоритма (см. [ , гл. 1]).
Алгоритм нахождения порядка элемента.
N
На входе алгоритма заданы а, п е N, п — 1 = J\ /??' — известное
разложение п — 1 на простые множители; на выходе порядок a (mod n)
в Z/nZ.
1 шаг. М := п — 1, /' := 0.
2 шаг. /:=/+ 1, М:= М/р*1, А:=ам.
3 шаг (цикл). Для 1 = 0, 1, ..., а/ проверить, выполнено ли срав-
сравнение:
А = 1 (mod n).
Если да, то перейти на 4 шаг. Иначе
M:=Mph A:=Api;
перейти к следующему значению / в цикле.
4 шаг. Если /' < N, то вернуться на 2 шаг; иначе выдать М.
Конец алгоритма.
§1.5. Алгоритм Конягина—Померанса 31
Корректность алгоритма нахождения порядка очевидна. Для полу-
получения оценки его сложности заметим, что
N
откуда N = O(logn), Pj = O(logn); также а,- = O(logn). Поэтому внеш-
внешний и внутренний циклы делают О (log я) шагов, и на каждом шаге
делается O(logn) арифметических операций. Суммарная сложность —
O(log3n) операций.
Вернемся к алгоритму проверки простоты. Если НОД на 3 шаге
2 этапа не равен 1, то п составное. Действительно, по определению Е(а)
ни одно из чисел aEi>a^q — 1 не делится на п. Значит, если НОД больше 1,
то одно из чисел aEtt-a^q — 1 имеет с п нетривиальный общий делитель d,
1 <d<n. Сложность 3 шага 2 этапа — Oflog2n) операций.
После прохождения 4 шага выполнено следующее: для всех Ь,
2 < b < a,
bF(a) =
Докажем корректность 5 шага. У нас af(-a>~1 ф 1 (mod n), аЕ(-а> =
= 1 (mod п), и для любого простого q, q \ E(a),
НОД(а?(а)/" - 1, п) = \.
Также aF{-a) = 1 (mod n). Если мы докажем, что для любого простого р,
р | п, выполнено сравнение р = 1 (mod F(a)), то р ^ 1 + F(a) ^ 1 + т/п,
откуда следует простота п. Сравнение р = 1 (mod F(a)) докажем ин-
индукцией по а. Предположим, что р = 1 (mod F(a — 1)). Тогда по лемме
получим р = 1 (mod Е(а)), откуда
р = 1 (mod HOK{F{a - 1), Е{а))) = 1 (mod F{a)),
что и требовалось доказать.
Теперь обоснуем 6 шаг 2 этапа. Предположим, что п — простое
число, a>[log2«], F = F(a)<y/n, и придем к противоречию. По по-
построению F(a) | п — 1, так как Е(а) \ п — 1. Положим
#={б€{1, ...,n-\}\bF{a)=\ (mod я)}.
Из простоты п следует, что \Н\ = F. Действительно, хп~1 = 1 (mod n)
для всех х € Z/nZ; также п — 1 = F ¦ М,
х"-1 - 1 =хГ-м - 1 = (xF-\)(x^M-l) + ... + 1),
32 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
т. е. ровно F элементов Z/«Z — корни xF — 1. Множество Н содержит
все а-гладкие числа, не превосходящие п — 1, т. е.
Н Э Н[ = {Ь | 1 < Ь < п, все простые делители Ь не превосходят а}.
Это следует из того, что если г — простое, г^а, то rFtt-a) = 1 (mod n).
Само я не входит в Я|, т. к. оно простое и п > а. Отсюда \Н\ ^ \Н\ .
Справедлив следующий результат из теории распределения простых
чисел (см. для справок [ ]): если обозначить ф(я, а) = \Н\\, то при
я^5, 2^а^п выполнено неравенство
t log log п
Цп,а)>п l0Ra .
ОтСЮДа
log log n [ log log n
l0Ra >n 2l0Rl0R"
так как из а > log2 n следует log a > 2 log log я. Полученное противоре-
противоречие завершает наши рассуждения.
§ 1.6. Алгоритм Миллера
В работе [ ] приведен алгоритм, который детерминированно про-
проверяет простоту п за О(п1^7) арифметических операций. Тот же алго-
алгоритм можно модифицировать так, что он будет делать O(log n) ариф-
арифметических операций; однако в этом случае его корректность опирается
на справедливость расширенной гипотезы Римана. Эта гипотеза гласит,
что если х(а) — числовой характер по модулю т, то нули L-функции
Дирихле
Дх, *) = ?*?
k=i
в полосе 0 < Res < 1 лежат на прямой Res = 1/2.
Пусть /: N —>• R>o — некоторая функция на множестве натуральных
чисел, причем f(n) < п.
Алгоритм Миллера Af.
На входе задано нечетное число п, п > 1.
1 шаг. Проверить, выполняется ли равенство п = ms при некоторых
s, т € N, s ^ 2. Если выполняется, то я — составное число, и алгоритм
останавливается.
2 шаг. Выполнить шаги (i)—(iii) для всех а ^ f(n).
(i) Проверить условие а \ п.
(Н) Проверить условие ап~1 ф 1 (mod n).
§1.6. Алгоритм Миллера 33
(Hi) Выяснить, верно ли, что при некотором k, I ^ k ^ V2(« — 1),
1 < H(Wa^~ - 1 (mod п), п) < п.
п-\
2*
Если одно из условий (i)—(Hi) выполнено, то п— составное, и алгоритм
останавливается.
3 шаг. Если мы дошли до этого шага, то я — простое число.
Конец алгоритма.
Теорема 1.37. Если f(n) = с • п°'133 (где с— некоторая положи-
положительная постоянная), то алгоритм детерминированно проверя-
проверяет простоту п за О(п1/Г7) арифметических операций. Если же
f(n) = с log2 n, то алгоритм детерминированно проверяет про-
простоту п за O(log4n) операций в предположении справедливости
расширенной гипотезы Римана.
Замечание 1.38. В работе [ ] показано, что проверку 1 шага мож-
можно выполнить за (\ogn)l+0^ арифметических операций.
Мы докажем вторую часть этой теоремы, следуя работе [ ]. Мы
будем считать, что f(n) = с log n для некоторой достаточно большой
абсолютной постоянной с, и что п не является степенью, т.е. n^ms,
т, s € N, s > 1. Значение с = 2 было получено в более поздних работах,
см. для справок [ , гл. 9; ].
Пусть п — нечетное составное число, п > 1, п = /?"' ... р'°ии — разло-
разложение п на простые сомножители. Везде далее используем это обозна-
обозначение. Тогда и ^ 2.
Определение 1.39. Функция Кармайкла определяется равенством
функция Х'(п) определяется равенством Х'(п) = HOK(Pi — !)¦
Лемма 1.40. Нечетное neN удовлетворяет малой теореме
Ферма ап = а (mod п) для всех aeN, (а, п) = 1, тогда и только
тогда, когда \(п) \п—\.
Доказательство. Сравнение а" = а (mod п) при (а, п) = 1 равно-
равносильно тому, что выполнена система сравнений
a"-l = \ (mod/?J'). j=\,...,k.
Поскольку найдется а, € N такое, что a, (mod p°:') является пер-
первообразным корнем (т.е. имеет порядок р°'~ (р} — \)), и при этом
uj = 1 (mod p°i) при /фj, то наша система сравнений равносильна
тому, что <р(/?а') | п — 1, /' = 1, ..., и, что равносильно \(п) \ п — 1. ?
3 О. Н. Василенко
34 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
Лемма 1.41. Если \'(п)\п — 1, то найдутся простые числа р, q
такие, что
\) р\п, р — \\п — 1 и при некотором т^\ qm\p — 1, qm\n— I;
2) если для этих р и q число а является невычетом q-й сте-
степени по модулю р {т.е. уравнение хч = а (mod p) неразрешимо),
то ап~1 ф 1 (mod n).
Доказательство. 1) По условию среди чисел /?,- найдется число р,
такое, что р— \\п— 1. Это, в свою очередь, означает, что найдутся
простое q и натуральное т, для которых qm\p — \, qm\n—\.
2) Если ап~1 = 1 (mod п), то ап~1 = 1 (mod р). Пусть Ь — пер-
первообразный корень по модулю р, a = bmda (mod р); тогда ft("~1)inda =
= 1 (mod р). Отсюда р — 1 | (inda)(n — 1). Тогда qm | (inda)(n — 1), от-
откуда q | ind а, что противоречит тому, что а невычет q-й степени. ?
Определение 1.42. Обозначим через N(p, q) наименьшее нату-
натуральное число а такое, что (а, р) = 1 и а есть невычет q-й степени
по модулю р. Число N(p, q) определено лишь при q \ р — 1.
Теорема 1.43 (см. [ ]). При условии выполнения расширенной
гипотезы Римана
Следствие 1.44. Если \'(п)\п— 1 и выполняется расширенная
гипотеза Римана, то случай (И) 2 шага алгоритма обнару-
обнаружит, что п составное. Действительно, достаточно взять
в качестве а число N(p, g)<clog2p ^clog2^; no лемме 1.41
а"~1 ф 1 (mod п).
Фактически мы обосновали алгоритм Миллера и доказали теорему
в случае Х'(я) \п — 1. Далее считаем, что Х'(я) | п — 1.
Определение 1.45. Скажем, что число п имеет тип А, если найдется
такой номер /', что
V2(X'(n))>V2(/7/-l).
Иначе п имеет тип В, т.е. в этом случае для любого /', 1^/^м,
V2(X'(n))=V2(/7/-l).
Лемма 1.46. Пусть п — составное типа А, простые р, q де-
делят п, причем
Пусть 1 <а<п, (-]=—1. Тогда либо а, либо (ax'(n)/2 — 1) (mod n)
имеет нетривиальный наибольший общий делитель с п (т. е. этот
делитель отличен от 1 и п).
§1.6. Алгоритм Миллера 35
Доказательство. Заметим, что V2(X'(«)) ^ 2, поскольку V2(q — 1)
1. Пусть (а, я) = 1. Так как q — 1
, то ах'(п)/2 = 1 (mod q). Кроме
2
того,
аХ»/2 = ±1 (mod;,)
Если ах'(")/2 = 1 (mod р), то (ind а) ¦ Х'(я)/2 = 0 (mod р - 1), где ind а —
индекс a (mod /?) по отношению к какому-либо первообразному корню
в Z/pZ. Так как V2(X'(n)) = V2(p — 1), то ind a — четен; значит, (-1 = 1,
что противоречит условию. Итак,
д\ (п)/2 _ j ^mod q^ a^ («)/2 = _j (mod p).
Поэтому (ax'(n)/2 — 1, я) делится на q и не делится на р, что и требова-
требовалось доказать. ?
Лемма 1.47. Пусть п — составное число типа В, простые чис-
числа р и q делят п, рф q, и число а удовлетворяет условиям
\<а<п, (
\pq
Тогда либо а, либо (ax'(n)/2 — 1) (mod n) имеет с п нетривиальный
наибольший общий делитель.
Доказательство. Пусть (а, п) = 1, и предположим, не ограничивая
общности, что (-]=—1, (-1 = 1. Так как п типа В, то \<i{p — 1) =
= V2(q — 1) = V2(X («)). Рассуждая аналогично доказательству лем-
леммы 1.46, получим
al'(n)/2 = j (mod ^ al'(n)/2 = _j (mod py
Отсюда НОД((ах'(п)/2 — 1) (mod n), п) делится на q и не делится на р.
Лемма доказана. ?
Теперь нужно обеспечить проверку утверждений лемм 1.46, 1.47,
не зная Х'(я).
Лемма 1.48. Пусть р — простое число, р \ п, Х'(я) | п — 1,
Пусть а € N, 1 <а<п, (а, п) = 1. Тогда
Замечание 1.49. Поскольку Х'(я) четно, то 1 ^ k ^ V2(« — 1).
Доказательство леммы 1.48. Поскольку a1 (n) = I (mod p), то
ак'{п)/2 = ±\ (mod р).
36 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
1) Пусть ах(п)/2 = 1 (mod р). У нас X' (п) \ п — 1, и по определению k
X»
п-\
Значит, утверждение леммы в этом случае выполнено.
2) Пусть ах'(п)/2 = -1 (mod p). Но тогда
d == yd } = у— 1}
При этом V2( 1—г)=0 по определению k. Поэтому а^"*/2 =
\Х (яJк~1 /
= -1 (modp). D
Следствие 1.50. Пусть Х'(п)\п— 1, и пусть п имеет тип А. Если
aeN, I <а<п, и I - J = — 1, то либо (а, я) ^ 1, «, либо ярм неко-
некотором k, I < k < V2(« — 1),
НОД((а 2* - 1) (mod n), п) ф 1, п.
Поэтому, если в ходе перебора в алгоритме Миллера мы дой-
дойдем до этого значения а, то в пункте (Hi) 2 шага алгоритма будет
обнаружено, что п — составное. Очевидно, что наименьшее такое
а = N(p, 2) = O(log2 /?)< с log2 n (по теореме 1.43, сформулированной
выше) содержится среди перебираемых в алгоритме значений при
достаточно большом с, т. е. алгоритм корректно работает для п типа А.
Следствие 1.51. Пусть Х'(п)\п— 1, и пусть п имеет тип В. Если
aeN, \ <а<п, и (— ]= — 1, то либо {а, п)ф\,п, либо при неко-
некотором k, I < k < V2(« — 1),
НОДИа 2" - 1) (mod п), п) ф 1, п.
Поэтому для доказательства корректности алгоритма Миллера
для п типа В нужна оценка сверху для величины
l(w) = min|a aeN, ( — \=-\\.
Теорема 1.52 (см. [ ]). При условии выполнения расширенной
гипотезы Римана
N(pq) = O(\og2pq).
Следовательно, в алгоритме Миллера для п типа В значение
a = N{pq) < с log2 n будет найдено, и в пункте (Hi) 2 шага будет обна-
обнаружено, что п — составное.
§ 1.7. Вероятностные тесты на простоту 37
Это рассуждение завершает обоснование алгоритма Миллера и до-
доказательство теоремы.
§ 1.7. Вероятностные тесты на простоту
Пусть п € N, п нечетно, п > 1. Вероятностный тест на простоту про-
проводится следующим образом. Выбирается случайное а € N, 1 ^ а < п,
и для него проверяется выполнение некоторых условий. Если какое-
то из условий не выполнено, то число п — составное, поскольку для
простых чисел эти условия являются необходимыми. Если же все усло-
условия выполнены, то из этого еще не следует простота п. Однако можно
будет считать, что «п — простое число с некоторой вероятностью».
Кроме того, обычно доказывают оценку снизу для этой вероятности.
Чем больше значений а мы протестируем, тем ближе эта вероятность
к единице.
Рассмотрим тест Соловея—Штрассена [ ].
Теорема 1.53. Пусть п— нечетное составное число. Тогда ко-
количество целых чисел а, 0 < а < п — 1, удовлетворяющих условиям
1) (а,п) = \,
2)о<»-1)/2=(?) (mod я),
не превышает я/2.
Следствие 1.54. Если я— простое, то условия 1 и 2 теоремы,
очевидно, выполняются для всех а, 1<а<я—1. Если же п —
составное, то для случайно выбранного а из промежутка
О < а < п — 1 вероятность выполнения обоих условий теоремы
не превосходит 1/2. Поэтому, если для k случайных значений а
мы проверим выполнение условий теоремы и не обнаружим,
что п — составное, то будем считать, что п — простое с веро-
вероятностью, не меньшей чем 1 — 1/2*.
Доказательство теоремы 1.53. Покажем сперва, что существу-
ет 6eN, для которого (Ь, п) = 1 и b 2 ^(~) (mod п). Пусть п =
= р*1 ...pakk — разложение п на простые сомножители.
Если п делится на квадрат простого числа, то найдется b € N,
п-\
{Ь,п)=\, такое, что bn~l ф 1 (mod n), откуда b 2 ^±1 (mod n).
Действительно, фиксируем номер i такой, что а,- ^ 2. По китайской
теореме об остатках можно найти b € N, для которого b (mod pf)
является первообразным корнем в Ъ/pfL, а при ]^i b=\ (mod p*1).
38 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
Если b"~l = 1 (mod я), то b"~l = 1 (mod pf), откуда п-\\ср (/?"'') =
= pf'~ {Pi — 1), что невозможно, так как я — 1 не делится на /?,-.
Предположим теперь, что я бесквадратно, я = р\...ри- Най-
Найдем такое Ь € N, что b (mod p\) — первообразный корень в Ъ/р\Ъ,
и b = 1 (mod /?/) при /' > 1. Тогда (Ь, я) = 1 и
n-l n-l
Сравнение b 2 = —1 (mod я) равносильно сравнению b 2 =
n-l
= — 1 (mod pj) для /' = 1, ..., k. Так как й ^ 2, то \=b 2 = — 1 (mod p%),
что невозможно.
Итак, число Ь существует. Зафиксируем его и рассмотрим два мно-
множества:
п-1 . .
<а<я — 1, (а, я) = 1, а 2 =(-) (modi
< а <я — 1, (а, я) = 1, а 2 ^(-) (modfi)>,
Если а{ е Гь а2 е Г2) то сюг е W2, поскольку f^i^) = f^t
\ п / \п 1 \ п
Поэтому для каждого а€ W\ наименьший неотрицательный вычет
ba (mod я) принадлежит W^. Следовательно, \W^\ ^ |№i|, откуда выте-
вытекает утверждение теоремы. ?
Теперь рассмотрим более эффективный тест Миллера—Рабина
(см. [ ; ]).
Теорема 1.55. Пусть я — нечетное составное число. Пусть
Ъ\п, я— 1 =27, где г^ 1, / — нечетно. Тогда количество таких
чисел а, 0 < а < я — 1, что либо а1 = 1 (mod я), либо при некото-
некотором ], !</</•,
не превосходит я/4.
Следствие 1.56. Из теоремы 1.55 аналогично следствию 1.54
получаем вероятностный тест на простоту. При этом, если
для k случайных значений а мы не обнаружим, что я — составное,
то будем считать, что я — простое с вероятностью, не меньшей
чем 1 - А.
Замечание 1.57. Если я — простое, то Ъ/пЪ — поле, а"~1 =
= 1 (mod я) для всех а, 1 < а < я — 1. Так как уравнение х2 = 1 (mod я)
§ 1.7. Вероятностные тесты на простоту 39
имеет в Z/nZ ровно два решения ±1, то сравнения теоремы 1.55
выполнены для всех а, 1 ^ а ^ п — 1.
Замечание 1.58. Тест Миллера—Рабина всегда сильнее теста
Соловея—Штрассена, как показано в работе [ ]. Точнее, если при
фиксированном п число а проходит тест Миллера—Рабина и не по-
показывает, что п составное, то оно проходит тест Соловея—Штрассена
с тем же результатом.
Замечание 1.59. В работе [ ] показано, что некоторый аналог
алгоритма Миллера—Рабина может быть применен для проверки про-
простоты главных идеалов в круговых полях. В работе [ ] показана воз-
возможность применения этого алгоритма в некоторых криптосистемах
типа RSA.
Для доказательства теоремы 1.55 нам потребуется ряд лемм. Обо-
Обозначим через 5 множество a (mod п), 1 ^а^п, таких, что либо
а' = 1 (mod п), либо при некотором /', 1 </' < г, a{-n~V)l'1' = —1 (mod п).
Мы считаем далее, что п — нечетное, составное, не делящееся на 3
число.
Лемма 1.60. Если существует простое число р такое, что
р2 | п, то множество
G = \\+k- (moAn)
является подгруппой (Z/nZ)* порядка р.
Доказательство. Из сравнений
1 + —) (l + —) = 1 + ((/г + /г') (mod /?))- (mod n)
Ъп \ ^ п
1 + —J = 1 + (/г/ (mod p))- (mod п)
легко следует утверждение леммы. ?
Определение 1.61. Обозначим/! множество элементов a€(Z/«Z)*,
для которых выполнено одно из следующих двух условий:
1) а"~1 ф 1 (mod n);
2) ak ф — 1 (mod п) для любого k € Z, и для некоторого простого р,
р | п, порядок a (mod р) равен р — 1.
Лемма 1.62. Пусть а € A, s € 5. Тогда as g S, т. е. aS П 5 = 0.
Доказательство. Если ап~1 ф 1 (mod п), то поскольку sn~l =
= 1 (mod п), получим (as)n~l ф 1 (mod п), т. е. as ?S.
40 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
Пусть далее а не удовлетворяет первому, но удовлетворяет второму
условию в определении множества А. Тогда ап~1 = 1 (mod n) и для лю-
любого целого k выполнено сравнение ak ф — 1 (mod n). Также фиксируем
простое число р, р\п, для которого порядок a (mod p) равен р—\.
Зафиксируем число I такое, что
Такие i существуют, например, i = 0. Кроме того, поскольку р \ п, то
г-г П— \ . ,
Iю условию тогда . ¦.р — \, откуда в силу четности р — 1 получаем
неравенство 0 ^ i < г. В частности, отсюда следует,что
Покажем, что если s е 5, то при всех /' таких, что 0 < /' < I < г, вы-
выполнено сравнение
s("-1)/2' = l (mod я). A.1)
Если s е 5 и s(n~l)/2r = 1 (mod n), то сравнение A.1) выполнено. Пред-
Предположим теперь, что s € 5 и для некоторого /i, 0 ^ /i ^ г,
В случае /i >i отсюда следует, что при всех /', О^/'^г, выполнено
сравнение
т.е. формула A.1) верна.
Рассмотрим случай /i ^ i и придем к противоречию. Поскольку
s(«-i)/2" = _j (moc| п^
то
5(„-1)/2'1^_1 {modp)
§1.7. Вероятностные тесты на простоту 41
Кроме того, по предположению /i ^ I, откуда по доказанному выше
. п — 1 п — 1
р-{ ~^г -^г-
Из малой теоремы Ферма тогда следует, что
s(«-i)/2' = j (moc| ру
Это и есть противоречие, так как 1^—1 (mod p).
Итак, формула A.1) верна. Далее, из A.1) следует, что
s("-1)/2'+'=±l (mod я),
поскольку s e 5.
Теперь выберем i максимальным. Тогда, поскольку по доказанному
i < г, имеем
(Мы воспользовались тем, что ак ф — 1 (mod я) для всех k € Z.) Тогда
при всех /', 0 < /' < I, выполнено сравнение
но
Отсюда следует, что as g S. ?
Лемма 1.63. Пусть a, b&(Z/nZ)*, афЬ. Множества aS и bS
не пересекаются тогда и только тогда, когда не пересекаются
множества ab~lS и S.
Доказательство очевидно.
Следствие 1.64. Пусть G — подгруппа (Z/nZ)*.Множестваg\S
и g2S не пересекаются при всех gi, g2 e 5, gi ф gi, тогда и только
тогда, когда не пересекаются множества S и gS для всех g€G,
Лемма 1.65. Пусть п составное и п делится на р2, где р —
простое число. Тогда
|S|<|
Доказательство. Пусть G — подгруппа (Z/nZ)* из леммы 1.60.
Поскольку р | п, то р\п — 1, и тогда для любого g€G, g^\, выпол-
выполнено сравнение gn~l ф 1 (mod n). Поэтому g&A и по лемме 1.62
42 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
множества 5 и gS не пересекаются. Значит, по следствию лем-
леммы 1.63 множества gS, g&G, попарно не пересекаются. Поэтому
U Sg =\G\-\S\=p\S\, и /7|S|<|(Z/nZ)*|=9(n), откуда
так как р ^ 5 по условию теоремы. Лемма 1.65 доказана. ?
Лемма 1.66. Пусть п = р\р2, где р\ и рч — различные простые
числа. Тогда п—\ не делится на одно из двух чисел /?,• — 1.
Доказательство следует из равенства
n-\=pip2- l = (pi — 1)(Р2— 1) Ч- (/7i — 1) + (Р2— 1).
Лемма 1.67. Пусть n = piP2, где р\ фр2- Тогда |5| <ср(я)/4.
Доказательство. По китайской теореме об остатках найдутся чис-
числа а\ и п2 такие, что а,- = 1 (mod рз-i), и а,- (mod /?,-) — первообразный
корень по модулю /?,- для i = 1, 2. Тогда а\ф—\ (mod /?з-<) для любого
й € Z; кроме того, af = 1 (mod /?,-) тогда и только тогда, когда /?,- — 1 | й.
Это значит, что а,- € А. Очевидно также, что a~l (mod n) € А. Далее, для
элемента а = а\п2 (mod п) сравнение ак = 1 (mod n) выполнено тогда
и только тогда, когда af = 1 (mod /?,-) для г = 1, 2, что равносильно усло-
условию pi — 1 | й. Отсюда по лемме 1.66 получаем, что ап~1 ф 1 (mod n),
т.е. а = а\п2 &А. Аналогично а\а^ ?А.
Рассмотрим теперь множества 5, Sai, Su2, Sa. По леммам 1.62
и 1.63 они попарно не пересекаются. Кроме того, 5, Sai, 5a2, 5а со-
содержатся в (Z/nZ)* и состоят из одинакового количества элементов.
Поэтому |S|<||(Z/nZ)*|. ?
Лемма 1.68. Пусть п бесквадратно и делится на три различ-
различных простых числа р\, р2, рз- Тогда |5| < ф(я)/4.
Доказательство. Как и при доказательстве леммы 1.67, найдутся
а\, п2 € (Z/«Z)* такие, что а,-= 1 (mod — ), a,- (mod /?,-) — перво-
\ Pi '
образный корень по модулю pt, i=l,2. Тогда a,-= 1 (mod рз) для
г = 1,2; п[п2 = а=\ (mod р3), Ь = а\а^ = \ (mod p3). Кроме того
а\ф—\ (mod п) для любого &€Z (так как 1^—1 (mod рз)). Так-
Также акф— 1 (mod я) при а = а\п2 и Ькф—\ (mod я) при 6 = aia^"'.
Значит, ai, а2, а, бе Л (требование о порядке элемента во втором
условии из определения множества А выполнено по построению а\
и п2). По леммам 1.62 и 1.63 множества 5, Sai, Sa2, Sa попарно
§ 1.8. Современные методы проверки простоты чисел 43
не пересекаются и равномощны. Аналогично доказательству лем-
леммы 1.67 получим неравенство |5| ^ -|(Z/nZ)*| =ср(я)/4. Лемма 1.68
доказана. ?
Доказательство теоремы 1.55 очевидным образом получается
из лемм 1.65, 1.67, 1.68.
§ 1.8. Современные методы проверки
простоты чисел
В начале 80-х годов Адлеман, Померанс и Румели [ ] предложили
детерминированный алгоритм проверки простоты чисел. Для заданного
натурального числа п алгоритм делает O((log«)cloRloRloR") арифметиче-
арифметических операций (с — некоторая абсолютная постоянная) и выдает верный
ответ, составное п или простое. Описание схемы алгоритма можно най-
найти также в [ ]. Этот алгоритм оказался непрактичным и довольно
сложным для реализации на компьютере.
Существенные теоретические упрощения алгоритма Адлемана—
Померанса—Румели были получены X. Ленстрой [ ]. Он предложил
детерминированный алгоритм, также делающий O((log«)cloRloRloR")
арифметических операций. Реализация этого алгоритма позволила
проверять на простоту числа п порядка 10100 за несколько минут.
Замечание 1.69. Оценка сложности в алгоритмах Адлемана—По-
Адлемана—Померанса—Румели и Ленстры является неулучшаемой, т. е. для простого
числа п алгоритм выполнит не менее ci(logn)C2loRloRloR" операций для
некоторых положительных постоянных с\ и c<i-
Приведем упрощенную и несколько модифицированную схему ал-
алгоритма Ленстры для того, чтобы читатель мог получить представление
о его внутренней структуре и используемых им средствах.
Схема алгоритма Ленстры.
Алгоритм проверяет на простоту нечетное число п € N, п > 1.
1 шаг. Выбираем различные простые числа р\, ..., ри (называемые
начальными простыми) так, чтобы нашлись нечетные простые числа
qi, ..., qs (называемые евклидовыми простыми), удовлетворяющие сле-
следующим условиям:
а) q,- I \pi...pk,j=\, ...,s;
б) 2<7i ...qs^y/n.
Пример 1.70. {p} = {2, 3, 5, 7}, {q} = {3, 7, 11, 31, 43, 71, 211},
2<7i ...qs ^ 143 • 109 > 1011. Следовательно, данные наборы {/?,-}, {g,}
можно использовать для проверки простоты всех чисел п, п^ 1022.
44 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
2 шаг. Проверяем, верно ли, что п = pi или п = qt для некоторого I
или /'. Если да, то п — простое. Иначе проверяем равенство
НОД(Р1.../?*<71-"<75, п)= 1.
Если оно неверно, то я — составное.
3 шаг. Для каждой пары р, q, такой, что р | q — 1, находим перво-
первообразный корень cq по модулю q и числа a, b € N, которые при р > 2
удовлетворяют следующим условиям:
ab(a + b) фО (mod p),
ар + Ьр ф (а + b)p (modp2).
Известно, что такие a, b существуют, и обычно а = b = 1. Далее опре-
определяем числовой характер Хр.д п0 модулю q порядка р:
где Ср = е2Ш//р, ind^fx) € Z/(g — 1)Z, с" qX = x (mod ^). Эти характеры
при различных р \ q — 1 порождают всю группу числовых характеров
по модулю q.
Вычисляем сумму Якоби
Это вычисление проводится быстро, поскольку евклидовы простые чис-
числа q невелики, и значения ind^x быстро определяются перебором.
4 шаг. Для каждого начального простого числа р находим наиболь-
наибольшее натуральное число h = h(p), I < h < / = vp(np~l — 1), такое, что для
всех q таких, что р \ q — 1, выполнено сравнение
v(xpl(,n(n) = lP,q (mod nZ[CP]). A.2)
Это основной тест алгоритма. Здесь \p<q —некоторый корень степени р
из 1; ал (я) — некоторый явно определяемый по п элемент группово-
группового кольца Z[Gal(Q(Cp))], имеющий вид а^(п) = ^ а^о/, где a^j €
<jj € Gal(Q(CP)), Oj(Z,p) =Zjp, 1 < /' < p - 1. При этом, если
p-2
/=0
§ 1.8. Современные методы проверки простоты чисел 45
то
/ 1=0
где В[ е Z. Поскольку \,Х,Р, ... ,Xj*p~ есть Z-базис Z-модуля
мы работаем с (р — 1)-мерными векторами, имеющими целочисленные
координаты. Сравнение A.2) означает, что координаты двух таких век-
векторов сравнимы по модулю п.
Если сравнение A.2) не выполнено при некоторых р, q с h= 1 и
то я — составное число (аналогом этого теста является невыполнение
малой теоремы Ферма ап~1 = 1 (mod n)).
5 шаг. Для тех р, у которых h = h(p) <t= t(p) и при этом \рд = 1
для всех q таких, что р \ q — 1, далее проверяем следующее условие:
найдется евклидово простое q, для которого р | q — 1 и при всех
/' = 0, 1, ..., р — 1 элемент
представленный как вектор в базисе 1, Z,p, ..., ?,р~ , имеет коэффици-
коэффициент, взаимно простой с п.
Если это условие не выполнено, то можно показать, что на этом
шаге будет найден нетривиальный делитель п.
6 шаг. Найденные на 4-м шаге числа \рд представим в ви-
виде \рл = CPP'q, ирд^Ъ^. Затем для каждого q найдем xq такое, что
для каждого р, р | q — 1, справедливо сравнение
—п§рф)хч = ир>(! (mod p).
Здесь
— целое число, зависящее от р. Нахождение xq проводится с помощью
китайской теоремы об остатках.
Далее находим v € Z, 1 < v < 2q\ ...qs, удовлетворяющее системе
сравнений
v=\ (mod 2), v = cxq4 (mod q),
где q пробегает евклидовы простые числа.
46 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
7 шаг. Для каждого /', /' = 1, ..., р\ ... ри — 1, находим q € N,
rj = v' (mod 2<7i • • • qs), 0 < г,- < 1q\... qs,
и проверяем, делится ли наше число п на /у? Если для всех /' г/]п,
то п — простое число.
Конец алгоритма.
Вывод. Для п проверяются некоторые тесты, обобщающие ма-
малую теорему Ферма. Если все они выполнены, то делители числа п
лежат в небольшом явно описываемом множестве: это степени
v'l (mod 2q\...qs) для некоторого явно построенного натурального
числа v.
Сложность алгоритма составляет O((pi...pk)const) арифметических
операций, и можно показать, что для заданного п найдутся р\, ..., р^
такие, что
Отсюда и получается приведенная выше оценка сложности алгоритма.
Впоследствии удалось снять условие бесквадратности чисел qt — 1,
что позволило использовать меньшие наборы чисел /?,-. Например, име-
имеется 27 простых чисел qt таких, что
qi - 1 | 24 • З2 • 5 • 7,
причем Y\qj> Ю50. С этими наборами {/?,-} и {д,} можно проверять
на простоту числа п, не превосходящие 10100.
Указанные дальнейшие усовершенствования алгоритма Адлемана—
Померанса—Румели и алгоритма Ленстры были предложены Ленстрой
и Коеном [ ]. Для алгоритма Ленстры—Коена нельзя получить оценку
сложности O((log«)c'loRloRloR") арифметических операций без исполь-
использования некоторых недоказанных гипотез. Однако на практике он ока-
оказался наиболее эффективным. При правильной организации его работы
алгоритм всегда достаточно быстро выдает правильный ответ, простое п
или составное. Описание и теоретическое обоснование алгоритма Лен-
стра—Коена довольно-таки объемно и выходит за рамки данной кни-
книги. Этот алгоритм проверяет на простоту числа порядка 10100—10200
за несколько минут. Заметим также, что алгоритм Ленстры—Коена лег-
легко распараллелить на несколько компьютеров по количеству пар р и q.
В 1986 г. Голдвассер и Килиан [ ] предложили алгоритм, позво-
позволяющий проверить простоту чисел с помощью эллиптических кривых.
Этот алгоритм был существенно улучшен Аткином и Морейном [ ].
§ 1.8. Современные методы проверки простоты чисел 47
В работе [ ] приведены результаты тестирования алгоритма Аткина—
Морейна на числах порядка 10800—101000. Для проверки на простоту
одного числа такой величины потребовалось несколько недель. Описа-
Описание алгоритма Голдвассер—Килиана будет приведено в главе 4.
Естественным образом встал вопрос о том, является ли алго-
алгоритм Аткина—Морейна более быстрым, чем алгоритм Ленстры—
Коена, а также вопрос о том, какого размера числа могут проверены
на простоту каждым из этих алгоритмов за реальное время. Такие
исследования проводились П.Михалеску (алгоритм Ленстры—Коена)
и Ф.Морейном (алгоритм Аткина—Морейна), см. работы [ ; ;
; ; ; ].
Рекордные значения проверенных на простоту чисел для некото-
некоторого усовершенствования алгоритма Ленстры—Коена можно найти
в работе [ ]. С его помощью было проверено на простоту число
п= B11279 + 1)/3. С помощью метода эллиптических кривых было
проверено на простоту число п= B12391 + 1)/3, см. [ ]. Сравнение
этих двух алгоритмов проверки простоты, проведенное в [ ] и [ ],
показывает, что алгоритм Ленстры—Коена, по-видимому, значительно
быстрее. Преимущество метода эллиптических кривых заключается
в том, что он предоставляет легко проверяемый сертификат простоты
числа.
Несколько теоретических усовершенствований алгоритма Лен-
Ленстры—Коена было предложено в работе [ ]. В ней было показано,
как можно применять тригонометрические суммы Гаусса и Якоби для
аддитивных и мультипликативных характеров в конечных полях для
проверки ряда условий в алгоритме Ленстры—Коена.
В работе [ ] также были предложены некоторые усовершенство-
усовершенствования алгоритма Ленстры—Коена.
В заключение скажем еще несколько слов об одном методе про-
проверки простоты чисел. В 1992 г. Адлеман и Хуанг [ ] предложили
вероятностный алгоритм, имеющий полиномиальную сложность и поз-
позволяющий проверять простоту чисел с помощью гиперэллиптических
кривых. В ходе его работы приходится проводить вычисления на яко-
якобианах алгебраических кривых. Алгоритм не реализован на компью-
компьютере и вряд ли когда-либо будет использоваться на практике. Теоре-
Теоретическая оценка его сложности составляет величину порядка log n,
где п — проверяемое на простоту число. Заметим, что лишь немно-
немногие специалисты в области алгебраической геометрии и алгебраической
теории чисел понимают описание и обоснование алгоритма Адлемана—
Хуанга.
48 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
На основе изложенного в данной главе материала можно сделать
вывод о том, что в нашем распоряжении имеются быстрые и эффек-
эффективные алгоритмы для проверки простоты чисел и построения больших
простых чисел.
§ 1.9. Заключение. Детерминированный
полиномиальный алгоритм проверки
простоты чисел
К тому моменту, когда большая часть этой книги уже была на-
написана, появилась замечательная работа индийских математиков
Агравала, Кайала и Саксены [ ], в которой получен детермини-
детерминированный алгоритм проверки простоты натуральных чисел, имеющий
сложность O(log12n(loglogn)c) арифметических операций (п — про-
проверяемое на простоту число, с — некоторая абсолютная константа).
Далее мы приводим описание и обоснование этого алгоритма. Символ
O(t(n)) мы будем использовать для обозначения O(t(n) loga n), где a —
какая-либо положительная постоянная.
Алгоритм работы [ ] основан на следующей теореме.
Теорема 1.71. Пусть р — нечетное натуральное число, aeZ,
(a, р) = 1. Число р является простым тогда и только тогда, когда
(х - а)р = хр - a (mod p) A.3)
(соотношение A.3) означает, что коэффициенты многочленов
сравнимы по модулю р).
Доказательство. Очевидно, что
Р-\
(х - а)р - (хр - а) = ^2 (Pi)xi{-a)p-i + a-ap. A.4)
Если р—простое число, то соотношение A.3) следует из A.4), так
как при 1 ^ i ^ р — 1 число ( А делится на р.
Пусть соотношение A.3) выполнено, и предположим, что р — со-
составное. Тогда найдется простое число q и натуральное k такие, что
qk || р, причем q < р. Очевидно, что qk не делит
pip — 1)... ip — q+ 1)
и поэтому коэффициент при х4 в A.4) не делится на р, что противоречит
выполнению A.3). Теорема доказана. ?
§ 1.9. Заключение. Детерминированный полиномиальный алгоритм 49
Символом Р(т) мы обозначаем наибольший простой делитель на-
натурального числа т. Через ог(т) мы обозначаем порядок т (mod r)
в группе (Z/rZ)*.
Лемма 1.72. Пусть р и г — различные простые числа. Тогда
1) для каждого t€~N группа GF(p1)* является циклической;
2) для каждого многочлена f(x) € Z[x] выполнено соотношение
f(x)p = f(xp) (mod р);
3) если h(x) € Z[x], h(x) \ хг — 1, т\, гщ € Z^o, m = mr (mod r), то
хт = хт' (modh(x))\
4) если ог(р) — порядок р (mod r) e (Z/rZ)*, mo e Z/pZ[x] мно-
многочлен раскладывается на различные неприводимые мно-
многочлены, каждый из которых имеет степень ог(р).
Доказательство. Первое и второе утверждения леммы общеиз-
общеизвестны.
Пусть m^mr, m = mr + kr, где fteZ^o- Поскольку xkr =
= 1 (mod xr — 1), то xkr+rrir = х' (mod h(x)), что доказывает третье
утверждение леммы. Г
Положим d = o,(p). Пусть h(x)—неприводимый делитель -
в Z/pZ[x], degh(x) = k. Тогда Х~
Z/pZ[x]/(h(xj) = GF(pk),
(Z/pZ[x]/(h(xW = (g(x) (mod h(x))}pt_h
где g(x) — некоторый многочлен из Z/pZ[x]. Очевидно, что g(x)p =
= g(xP ) (mod h(x)). Поскольку pd = 1 (mod г) и h(x) | xr — 1, то хр =
= x (mod h(x)). Следовательно, g(x)p = g(x) (mod h(x)), откуда
g(x)p ~l = 1 (mod h(x)). Это означает, что pk — \\pd— 1, и поэто-
поэтому k | d.
Далее, xr = 1 (mod h(x)) в Z/pZ[x]. Поскольку xr — 1 не имеет крат-
кратных неприводимых делителей в Z/pZ[x], то h(x) фх — 1. Следователь-
Следовательно, порядок х (mod /г(х)) равен простому числу г. Это, в свою очередь,
означает, что г \ рк — 1 = IG/7^*)*!, т. е. рк = 1 (mod r). По определе-
определению d тогда d | й.
Из доказанного выше следует, что k = d. Четвертое утверждение
леммы доказано. ?
Следующие две леммы содержат некоторые результаты о распреде-
распределении простых чисел.
4 О. Н. Василенко
50 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
Лемма 1.73. Существуют положительная постоянная со
и натуральное число щ такие, что для всех х^щ выполнено
неравенство
ф{р\р-простое, р <х, Р(р - 1) >^
Доказательство можно найти в работах [ ; ].
Лемма 1.74. При всех ш^2 выполнено неравенство
т , , , , 8т
т-j < 1г(т) < : ,
b log2 m log2 m
где тг(т) — функция Чебышёва.
Доказательство см. в [ ].
Теперь опишем алгоритм проверки простоты натуральных чисел.
Алгоритм.
На входе задано нечетное число п € N, п > 1.
1 шаг. Если п имеет вид аь, где а € N, b € N, b^2, то выдать со-
сообщение о том, что п составное, и закончить работу. (В работе [ ]
показано, что этот шаг может быть выполнен за O(logn1+oA)) арифме-
арифметических операций.)
2 шаг. г := 2.
3 шаг. Для текущего значения г выполнить шаги 4—8.
4 шаг. Если г < п и НОД(г, п) > 1, то п — составное; в этом случае
закончить работу с выдачей сообщения о том, что п — составное.
5 шаг. Если г — простое число, то выполнить шаги 6—7, иначе пе-
перейти на шаг 8.
6 шаг. Найти q — наибольший простой делитель числа г — 1.
г-1
7 шаг. Если q ^ 4V/Hog2 лил ч ф\ (mod r), то перейти к 9 шагу
с данным значением г.
8 шаг. г := г + 1. Если г ^ п, то выдать сообщение, что п — простое,
и закончить работу. Иначе вернуться на 3 шаг.
9 шаг. 1 случай. Если п — 1 < [2v/rlog2«], то для всех а из проме-
промежутка г <а^п— 1 проверить выполнение условия (а, п) = 1.
2 случай. Если п— 1 > [2^/r\og2n], то для всех а из промежутка
1 ^ а^ [2^/r\og2n\ проверить выполнение соотношения
(х-а)п = хп-а (modxr- 1)
в кольце Ъ/пЩх\. Если для некоторого а в 1-м случае выполнено нера-
неравенство (а, п) > 1, либо во 2-м случае соотношение по модулю хг — 1
не выполняется, то я — составное, и алгоритм заканчивает работу.
§1.9. Заключение. Детерминированный полиномиальный алгоритм 51
10 шаг. Если мы дошли до этого шага, то число п— простое.
Конец алгоритма.
Теорема 1.75. Алгоритм верно определяет, является ли чис-
число п простым или составным. При этом рассматриваемые в нем
значения г не превосходят Л log6 я для некоторой абсолютной
константы А.
Для доказательства теоремы 1.75 нам потребуется еще несколько
лемм.
Лемма 1.76. Существуют абсолютные положительные по-
постоянные с\, с2 такие, что если число п достаточно вели-
велико, то на отрезке [с\ log6 n; с2 log6 n] найдется простое чис-
число г, удовлетворяющее следующим условиям: либо г | п, либо
у г — 1 есть простой делитель q, удовлетворяющий неравенству
q ^ \ф log2 п, такой, что q \ ог(п) и «(r~1>/<7 ф \ (mod r).
Доказательство. Рассмотрим простые числа г, лежащие на от-
отрезке [й log6 n; C2 log6 n] и удовлетворяющие неравенству
P(r-l)>(c2log^J/3, A.5)
где с\ и с2 —некоторые положительные постоянные, которые мы выбе-
выберем позже; такие простые числа мы назовем специальными. Их количе-
количество не меньше, чем количество простых чисел на отрезке [1; c2log2n],
удовлетворяющих A.5), минус количество всех простых чисел на отрез-
отрезке [1; с\ log6я]. С помощью лемм 1.73 и 1.74 получим, что количество
специальных простых чисел будет не меньше, чем
CQC2log2« 8C[ logf П
log2 c2 + 6 log2 log2 n log2 с i + 6 log2 log2 n -" 7 log2 log2 n 6 log2 log2 n
= logfw /c0c2 _ 8ci_\ =c log6n
log2 log2 я V 7 6 / log2 log2 n'
если число п достаточно велико. Мы будем считать, что с\ > 46, с2 > с\,
и что с3 > 0. Пусть х = с2 log6 п. Обозначим через П произведение
П=(л- 1)(/г2 — 1)(«3 — 1)... («[jcl/3] -1). A.6)
В этом произведении [х1^3] сомножителей, и каждый состоит из произ-
произведения не более чем \og2{nx — 1) ^ х1/3 log2 n простых чисел. Поэто-
Поэтому П состоит из произведения не более чем х2^3 log2 n простых. Далее,
g2 n
52 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
при всех достаточно больших п. Значит, хотя бы одно специальное
простое г не делит П. Покажем, что оно будет удовлетворять утвер-
утверждению леммы. Пусть г\п. Тогда пг~1 = 1 (mod r). Из A.5) следует, что
Р(г — 1) > г2/3, т. е. г — \ имеет простой делитель q такой, что q > г2/3.
Заметим, что г2!3 ^ Ал/г log2 п, поскольку г ^ с\ log2 п и с\ > 46. Зна-
Значит, q^4y/7\og2n и q2\r— 1. Если q\or{n), то nSr~{^4 = \ (mod г),
г | ni-r~V)lq — 1. Покажем, что < [х1/3]. Действительно, г — 1 ^xl//3q,
так как выполнено даже более сильное неравенство
поскольку г ^ х = c<i log2 п. Из доказанного следует, что г | П, но это
противоречит выбору г. Итак, q\or(n) и ni-r~V)lq ф 1 (mod r). Лемма
доказана. ?
Замечание 1.77. Из леммы 1.76 следует, что если п достаточно ве-
велико, то на 3 шаге алгоритма либо обнаружится, что п составное, либо
найдется простое число г, г < a log2 п, такое, что у г — 1 есть простой
делитель q, удовлетворяющий условиям 7 шага.
Лемма 1.78. Если число п — простое, то алгоритм закончит
работу с выдачей сообщения о том, что п — простое.
Доказательство. Если п не очень велико, то алгоритм может про-
просто перебрать все значения г < п и на 8 шаге при г = п выдать сооб-
сообщение о том, что п — простое; либо мы перейдем к 9 шагу с некоторым
значением г и (по теореме 1.71) тесты 9 шага будут выполнены для всех
рассматриваемых а, вследствие чего алгоритм выдаст сообщение о том,
что п — простое.
Предположим теперь, что п достаточно велико. Тогда по лем-
лемме 1.76 на 3 шаге алгоритма обнаружится простое число г такое, что
г ^ с2 log2 п < п, причем г — 1 имеет простой делитель q, удовлетворяю-
удовлетворяющий условиям 7 шага. На 9 шаге соотношение по модулю хг — 1 будет
выполнено (по теореме 1.71) для всех рассматриваемых значений а,
так как
а <2л/гlog2п < 2V/C2 log2n< n— 1,
если п достаточно велико. Значит, мы дойдем до 10 шага, и алгоритм
выдаст сообщение о простоте п. ?
Теперь предположим, что п — составное число. Пусть п = р\... Pk —
разложение п на простые множители (не обязательно различные). До-
Допустим, что в ходе перебора значений г на 3 шаге мы не обнару-
обнаружили, что п составное, нашли простые числа г и q, удовлетворяю-
удовлетворяющие условиям 6 и 7 шагов и перешли к 9 шагу. Поскольку q \ ог(п)
§ 1.9. Заключение. Детерминированный полиномиальный алгоритм 53
и ог(п) | HOK(or(Pi)), то существует простое число р, делящее п, такое,
что q | ог(р). Зафиксируем это р.
Положим l=[2y/?\og2n], и пусть 1<п—\. На 9 шаге мы пе-
перебираем значения а, 1<а</. По п. 4 леммы 1.72 в Z/pZ[x]
существует неприводимый многочлен h(x), делящий хг — 1, причем
degft(x) = d = or(p) ^ 2 (так как q делит d). Если соотношение по мо-
модулю хг — 1 на 9 шаге для какого-то конкретного а будет выполнено,
то будет выполнено и соотношение
(х - а)" =хп-a (mod h(xj) A.7)
в кольце Z/pZ[x], т.е. {х-а)п=хп-а в поле {Z/pZ[x])/{h{x)) =
= GF(pd). При этих предположениях и обозначениях докажем лем-
леммы 1.79—1.81.
Лемма 1.79. Рассмотрим мультипликативную группу GC
C((Z/pZ[x])/(h(xW,
г '
G = < Y\_(x-a)aa (mod h(x)) |aaeZ>0, a= 1, ...,
порожденную биномами х — a, a=l, ...,/. Это группа являет-
является циклической. Кроме того, \G\ > (d/lI, если алгоритм доходит
до 9-го шага и 1<п—\.
Доказательство. Поскольку degft(x)^2, то элементы х —
—a (mod h(x)) имеют конечный порядок в ((Z/pZ[x\)/(h(x)))*, и G
является группой. Так как G —подгруппа циклической группы GF(pd)*,
то она тоже является циклической.
Покажем, что элементы подмножества
Г ' '
L=i fl=i
группы G различны в (Z/pZ[x])/(h(x)), если алгоритм дошел до вы-
выполнения 9 шага и 1<п—\. На 9 шаге будет проверяться условие
2 случая и г >q ^ 4л/?\оц2п^ 11. При этом рассматриваемые значе-
значения а различны по модулю р, так как если а\ =п2 (mod p), а\ <а^,
то р ^ а2 — а\ < I < г, и тогда мы бы уже на 4-м шаге для значения
г\=р < г обнаружили, что п — составное. Итак, величины a (mod p)
i
различны. Поэтому многочлены YI (х ~ а)а" в кольце Z/pZ[x] раз-
I
личны, а так как J^ aa ^ d — 1 < degft(x), то и элементы множества 5
а=\
54 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
различны в (Z/pZ[x])/(h(x)). Поскольку в множестве 5 содержится
(l + d-\\ (l + d-\\ jd\l ,„,. ,ск /./a/ i-i
( ) элементов и ( ) > I у J , то \G\ ^ \S\ > (d/ly. D
Ч/г/ V /• / \ /• /
Пусть алгоритм дошел до выполнения 9 шага, причем I<п— 1. Так
как d = ог(п): q, q^ \\f~r log2 n ^ 2/, то d ^ 2/ и
\G\ >2/ = 2[2^/?l0R2«] >22v/?l»s2«-i =n2Vr/2. A.8)
Пусть g(x) —образующий циклической группы G. Его порядок будет
больше п2^Гг/2. Положим
fg(x) = {т | т € Z>0, gWm = g(xm) (mod xr - 1) в кольце Z/pZ[x]}.
Лемма 1.80. Множество Ig(X) замкнуто относительно умно-
умножения.
Доказательство. Пусть Ш], т% € Ig(X)- Тогда в кольце Z/pZ[x] вы-
выполнены сравнения
g(x)mi =g(xmi) (mod xr - 1), g(x)m2 =g(xm2) (mod xr - 1).
Подставим хт' вместо х во второе сравнение. Тогда
g(xm>)m2 = g(xm>m2) (mod x™1 - 1),
откуда
g(xmi)m2=g(xmim2) (mod xr - 1).
Поэтому
g(x)mm2 = (g(x)mv)m2 = (g(xmv))m2 =g(xmim2) (mod xr - 1),
т.е. mim2G/g(i). ?
Лемма 1.81. Пусть og — порядок g(x) в Ъ/рЪ[х]/(п(х)). Пусть
ггц, m2Glg(X). Тогда из сравнения m\=m<i (mod r) следует, что
т\ =гп2 (mod og).
Доказательство. Пусть гщ > гщ. Тогда m<i = пц + kr, где k e Z^0-
Так как в кольце Z/pZ[x] выполнено соотношение g(x)m2 =g(xm2)
(mod xr - 1) и h(x) \ xr - 1, то g(x)m2 = g(*m2) (mod ft(x)). Отсюда
= g(xm|+fcr) =g(xmi) (mod
Так как miGlg(X), то получаем, что g(x)fcr=l (mod h(x)), т.е. йг =
= 0 (mod og). Из этого следует утверждение леммы. ?
Замечание 1.82. Из леммы 1.81 вытекает, что в Ig(X) найдется не бо-
более чем г чисел, меньших og.
Лемма 1.83. Если число п — составное, то алгоритм закончит
работу с выдачей сообщения о том, что п — составное.
§ 1.9. Заключение. Детерминированный полиномиальный алгоритм 55
Доказательство. Предположим, алгоритм выдал сообщение,
что п — простое. Это не может произойти на шаге 8, так как тогда мы
проверили бы условия шага 4 для всех г < п и нашли бы делитель п.
Поэтому алгоритм дошел до шага 10. Значит, был выполнен шаг 9.
Если п — 1 < [2y/T\og2 п], то на шаге 9 мы бы обнаружили а, а < п — 1,
такое, что (а, п) > 1, и алгоритм сообщил бы, что п составное. Значит,
[2y/r log2 п] < п — 1, и для всех а, 1 < а < [2y/r log2 n] = /, выполнено
соотношение:
(х-а)п=хп-а (modxr-\) ъЪ/рЪ[х]. A.9)
Тогда в обозначениях лемм 1.80 и 1.81 (где g(x) —по-прежнему обра-
образующий элемент группы G) получим, что
g(x)n=g(xn) (mod xr - 1) в Z//?Z[*],
поскольку g(x) есть произведение биномов х — а, для которых выпол-
выполнено A.9). Значит, n€lg(X). Также по п. 2 леммы 1.72 p€lg(x); кроме
ТОГО, 1 ?lg(x).
Рассмотрим множество Е= {n'pi' \ 0< I, j < [v^]}- По лемме 1.80
Е Я Ig(x)- Так как |?| = {[у/г] + IJ > г, то найдутся две различные пары
('1, /i), ih, /2), такие, что nhpn =nl2p'2 (mod r). Тогда по лемме 1.81
tt'V' =«'2/У2 (mod Og). Так как og делит pd -\ = \(Z/pZ[x]/(h(x)))*\,
то p{Og, и элемент р (mod og) обратим в Z/ogZ. He ограничивая общ-
общности, будем считать, что /2 ^/ь Тогда
n'1 = nkph41 (mod og). A.10)
Поскольку 3 ^ р ^ я/3, справедливы неравенства
Из A.10) и A.8) следует теперь, что
nh=ni2pj2-h_ A.11)
Поскольку /? —простой делитель натурального числа я, то из A.11)
вытекает, что составное число п является степенью р. (Действительно,
если у числа п есть простой делитель s, s ф р, то из A.11) следует, что
i\ = 12. Но тогда и /! =/2, что противоречит условию (г'ь j\) ф (г'г, /г)-)
Однако такие составные числа мы обнаруживаем уже на шаге 1 алго-
алгоритма. Полученное противоречие доказывает лемму. ?
Теперь докажем теорему 1.75. Корректность работы алгоритма
следует из лемм 1.78 и 1.83. Неравенство г < A log6 n для небольших
56 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел
значений п обеспечивается за счет выбора постоянной А, а для всех
достаточно больших п в силу леммы 1.76 можно рассматривать г ^
<C2log2«- Теорема 1.75 полностью доказана.
Оценим количество арифметических операций, требуемых для вы-
выполнения алгоритма.
Теорема 1.84. Количество арифметических операций, необхо-
необходимых для выполнения алгоритма, равно O(log12n).
Доказательство. Можно считать, что п достаточно велико. Шаг 1
алгоритма выполняется за O((\ogn)l+oi-1^) арифметических операций,
согласно [ ]. Количество значений г, рассматриваемых на шаге 3,
по лемме 1.76 не превосходит c<i log2 п. Для каждого г шаг 4 выпол-
выполняется за O(logn) арифметических операций, а шаги 5 и 6 с помо-
помощью решета Эратосфена выполняются за O(rl/2(\ogr)const) = O(log3n).
Шаг 7 выполняется за O(logr) = O(loglogn) операций, шаг 8 тривиа-
тривиален. На шаге 9 (в силу того, что п достаточно велико) будет проверяться
условие 2 случая. При этом проверка соотношения
(х - а)" = х" - a (modxr- 1)
в кольце Ъ/рЪ\х\ составляет с помощью бинарного возведения
в степень (см. Приложение) и быстрого преобразования Фурье
(см. гл. 9) O(\ogn- rlogn) операций. Поэтому 9 шаг будет выпол-
выполнен за OBy/r\ogn ¦ rlog2n) = O(log12n) арифметических операций.
Таким образом, теорема доказана. ?
Замечание 1.85. Проверка соотношения 2 случая 9 шага ал-
алгоритма может производиться и без быстрого преобразования Фу-
Фурье. Оценка сложности останется полиномиальной, но несколько
худшей.
Замечание 1.86. В работе [ ] показано, что если выполнена неко-
некоторая гипотеза о распределении простых чисел Софи Жермен, т. е. пар
простых чисел q и р = 2q + 1, то можно предложить алгоритм проверки
простоты чисел со сложностью O(log n). В предположении справед-
справедливости некоторой другой гипотезы можно описать алгоритм проверки
простоты чисел со сложностью O(log3«).
Замечание 1.87. Пока не совсем ясно, будет ли описанный выше
алгоритм эффективен на практике. Двенадцатая степень логарифма п
в оценке сложности — это все же довольно много. Кроме того, значение
параметра г в алгоритме теоретически может иметь величину порядка
log n, и поэтому нам придется работать с многочленами высоких сте-
степеней. Результаты практической реализации данного алгоритма пока
неизвестны.
Глава 2. Факторизация целых чисел
с экспоненциальной сложностью
§2.1. Введение. Метод Ферма
В данной главе мы рассматриваем алгоритмы разложения натураль-
натурального числа п на множители, делающие О(пс) арифметических операций,
где с — некоторая постоянная, 0<с< 1; либо делающие О(яС| logC2 n)
арифметических операций при некоторых постоянных с\, сч,- Мы бу-
будем ограничиваться поиском разложения на два множителя: п = ab,
1 < а < b < п. Если алгоритм находит такое разложение за O(f(n))
арифметических операций, то полное разложение п на простые мно-
множители будет найдено за O(f(n)\ogn) арифметических операций,
поскольку п состоит из произведения не более чем log2 n простых
чисел.
Прежде чем приступать к факторизации целого числа, следует убе-
убедиться, что оно действительно составное. Для этого лучше всего ис-
использовать один из вероятностных тестов на простоту, например, алго-
алгоритм Миллера—Рабина из главы 1.
Простейший метод пробных делений для разложения п на множите-
множители был описан в § 1.2 главы 1. Он требует О(п1^2) арифметических опе-
операций. Другие алгоритмы факторизации, имеющие сложность О(я'/2),
можно найти в книге Д. Кнута [ , §4.5.4] (см. также первое изда-
издание этой книги). Мы опишем здесь алгоритм П. Ферма, полученный им
в 1643 г. Этот алгоритм вычисляет наибольший множитель а числа п,
не превосходящий я1/2. При этом в алгоритме не используется опера-
операция деления, а только сложение, вычитание и умножение. Заметим, что
если п = pq, где р и q — простые числа, примерно одинаковые по ве-
величине, то алгоритм Ферма быстро разложит п. Это следует учитывать
при выборе модулей в криптосистеме RSA.
Алгоритм Ферма
Пусть п — составное число, n = ab, где 1 < а < Ь, причем а —
наибольшее возможное. Положим а = и — v, b = u + v, где и и v —
58 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
a+b b-а . о о,
натуральные числа, и=—г—, v = —„—, п = ао = и —v . Алгоритм
Ферма ищет представление п в виде п = и2 — и2, откуда получается
разложение п = (и — и) (и + v) = ab.
Мы работаем с величинами
гк=х\-у\-п, 6 = 0,1,2,...
Начальное значение (xq, г/о) = ([л/^]> 0)- Увеличение номера k проис-
происходит по следующим правилам. Если г^ = 0, то наша цель достигну-
достигнута, п = х\ — у\ = (Xk — yk)(Xk + Уk), и алгоритм останавливается. Если
rh > 0, то
(Хк, Ук + 1),
если же rh < 0, то
(xk+i, yk+i):={xk + 1, уk)\
затем
2 2
Гк+\ '-=xk+l — yk+i -n.
Наша цель—доказать, что за конечное число шагов алгоритм дой-
дойдет до значения г^ = 0, и что для первого такого значения справедливо
равенство xh — Ук = а, где а — наибольший натуральный делитель п,
не превосходящий я1/2. Если п является полным квадратом, то это оче-
очевидно по определению хо и г/о- Далее мы считаем, что п — не полный
квадрат.
Рассмотрим функцию г(х, у) = х2 — г/2 — п. Очевидно, что при неот-
неотрицательных х и г/ выполнены неравенства
г(х, у + 1) < г(х, у)<г(х+1, у).
Кроме того, в алгоритме Ферма Хи и yk всегда неотрицательны и не
убывают (по построению).
Рассмотрим декартову систему координат на плоскости и решет-
решетку целых точек Z2. Она разбивает плоскость на единичные квадраты;
каждый квадрат будем нумеровать точкой (х, у), стоящей в его левом
нижнем углу. В квадрат, пронумерованный точкой (х, у) € Z2 мы впи-
впишем знак величины г(х, у): + (плюс), — (минус) или 0, если г(х, у) = 0.
Очевидно, что если в некотором квадрате стоит знак — (минус), то и
во всех квадратах над ним тоже стоит знак — (минус); если в некотором
квадрате стоит знак + (плюс), то и во всех квадратах правее тоже стоит
знак + (плюс).
В алгоритме Ферма мы двигаемся по квадратам. Начало движе-
движения— квадрат, занумерованный (xq, у о); в нем стоит знак — (минус).
§2.1. Введение. Метод Ферма 59
Очередной шаг мы делаем вверх, если в квадрате стоит знак + (плюс),
и вправо — если в квадрате стоит знак — (минус). Самый первый шаг
мы делаем вправо.
При движении по квадратам в алгоритме Ферма мы не можем дви-
двигаться все время вверх, а обязательно будем делать шаги вправо. Пусть
мы достигли точки (Xk, У к), где у к ^ 1. Покажем индукцией по k, что
тогда r(Xk, Ук~ 1) > 0, т. е. под квадратом (Хк, У к) стоит знак + (плюс).
Основание индукции мы проверяем для значения k = I, для которого
квадрат, занумерованный (Х[, yi) = (Х[, 1), есть первый квадрат, в кото-
котором yi=\, a (xi-i, yi-i) = (xi-i, 0). В этот квадрат мы пришли снизу,
а это означает, что r(xi-i, yi-i) = r(xi, yi— 1) > 0. Это и есть выполне-
выполнение основания индукции.
В квадрат (xk, у к) мы попали либо слева, либо снизу. Если снизу,
то мы наращивали у, и тогда очевидно, что r(xk, Ук~ 1) > 0. Если слева,
то (xk-i, Ук-i) = {Xk — 1, Уk)- Тогда по предположению индукции
r(xk-i, Ук-\ - 1)>0.
Из предположения индукции теперь следует, что r(Xk-\ + 1, Ук-i — 1) >
> 0, т. е. r(Xk, У к — 1) > 0, что и требовалось доказать.
Заметим, что число и — наименьшее натуральное число, для ко-
которого возможно представление n = u2 — v2. В самом деле, n = ab,
п а + Ь 1 / п\ ,, w 1 /, п\ о
и I а + 1; и (а) I 1) и поскольку а
, п а + Ь 1 / п\ ,, w 1 /, п\ о
о = -, и= —-— = -I а + - 1; и (а) = - I 1 ^ )> и поскольку а <п,
то и'(а) < 0; с ростом а величина и = и(а) убывает и принимает наи-
наименьшее значение при наибольшем а, а2 < п.
Пусть мы первый раз достигли точки (хь, Ук), в которой Xk = u
(этот момент обязательно наступит согласно доказанному выше). Если
yk = v, то мы достигли желаемого результата, r(xk, Ук)=О, алгоритм
заканчивает работу и выдает пару (a, b) = (u — v, u + v).
Если у к < v, то г(Хк, Ук) = и2 —у\ —п = и2—у\ — (и2 — v2) = v2 — у\ >
> 0. В этом случае мы двигаемся вверх, наращивая у, до тех пор, пока
Ук+j = v, т. е. мы найдем Xk+j = и, yk+j = v, r(Xk+j, Ук+j) = 0 и алгоритм
закончит работу и выдаст пару (a, b) = (u — v, u + v).
Осталось рассмотреть последний случай уи > v. Этот случай невоз-
невозможен, так как по доказанному выше под квадратом (Хк, у к) стоит знак
+ (плюс), т.е. г(и, ук — 1) >0. Значит, и всюду ниже стоит знак +
(плюс). А в нашем квадрате (xk, Ук) = (и, Ук),
r(xk, Ук) = и2 - у\ - п = v2 - у\ < 0,
т.е. стоит знак — (минус). Значит, 0 здесь нигде не может стоять, а он
должен быть в этом столбце, поскольку п = и2 — и2.
60 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
Итак, мы достигнем в алгоритме точки (xt, Уи) = (и, v), получим
значение rk = 0 и найдем а = и — v, что и требовалось доказать.
Замечание 2.1. В работе [ ] описано некоторое усовершенство-
усовершенствование метода Ферма.
§ 2.2. (Р — 1)-метод Полларда
Этот метод был впервые описан в работе [ ], см. также, [ , гл. 8].
Он основан на следующей идее. Допустим, что у числа п, которое мы
хотим разложить на множители, есть простой делитель р такой, что
число р — 1 является В-степенно-гладким для некоторой границы глад-
гладкости В > 0. Это означает, что для любого простого числа q, q \ р — 1,
выполнено неравенство
Отсюда следует, что р— 1 |НОКA, 2, ..., В). Если мы выберем aeN
такое, что (а, п) = 1, то по малой теореме Ферма
аН0КA-2 fi) = l (mod/7).
Следовательно, НОД(анок-^'2 В) — \,п) делится нар и поэтому со-
содержит нетривиальный делитель п (НОД может быть и равен п).
1 стадия (Р — 1)-метода Полларда
В (Р — 1)-методе Полларда мы выбираем априорную границу глад-
гладкости В, исходя из возможностей нашего компьютера и времени, кото-
которое мы рассчитываем потратить. Обычно Вх 105—106. Далее состав-
составляем таблицу q\ < q<z < ... < qk < В всех простых чисел, не превосхо-
превосходящих В, и для каждого qt полагаем
т-е-
Далее мы выбираем значение а (например, а = 2). Затем последова-
последовательными возведениями в степень и приведениями по модулю п вычис-
вычисляем
Р20= а"> - 1 а"> "г -1 ... а"| -"го - 1 (mod я)
(параметр 20 также априорный). Далее вычисляем НОД(Р20> п). Если
этот НОД тривиальный, то добавляем к Р2о следующее произведение
длины 20, т. е. находим
Р40=Р20- (a"' -«S» -1 ... o«i ""* -1) (mod я),
§2.2. (P — 1)-метод Полларда 61
снова считаем НОД(Р40, п) и так далее. Предположим, что при неко-
некотором k ^ 1 оказалось, что НОД(Р20?, я) > 1. Тогда мы возвращаемся
к значению k — 1 и, полагая Ь = аЧх ¦¦¦чжк-^ , начинаем последова-
последовательно вычислять наибольшие общие делители
НОДF0<*-|»+| - 1 (mod я), я),
НОД(б»<*-|)+| - 1 (mod я), я),
P(?20(t-i;
-l(modn), n),
/ P<?20(t-l) + l' \
НОДF0<*-|)+| '0(*-1)+2 _ 1 (mod я), п),
НОДF'=' -1 (mod я), я
до первого нетривиального общего делителя.
Значение нахождения Р20, Рю, Рво, • ••, состоящих из порций
по 20 степеней простых чисел, состоит именно в экономии на вы-
вычислениях наибольшего общего делителя. Заметим, что поскольку
количество простых чисел qi не обязано делится на 20, то последняя
порция может быть неполной.
2 стадия (Р — 1)-метода Полларда
Предположим, что р | я, р — 1 не является В-степенно-гладким чис-
числом, но р — 1 = / • г, где / — В-степенно-гладкое число иг — простое
число, В < г <В\. Допустим, что на 1-й стадии (Р — 1)-метода Поллар-
Полларда мы вычислили
Ь = аИОЩ,2 В) (mod ny
Тогда br = 1 (mod р), и НОДFГ — 1 (mod я), я) будет делиться на р
по малой теореме Ферма.
Поэтому на 2 стадии (Р — 1)-метода Полларда мы находим все про-
простые числа п, ..., rN, В < ri < г2< ¦¦¦< rN <В[,и составляем разности
di = r-i — /•,•_!, i = 2, ..., Л/. Эти разности обычно невелики и количество
различных таких разностей также невелико (при подходящем выбо-
выборе В\). Затем мы табулируем элементы bdi (mod я) для всех различных
значений di.
62 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
После этого в алгоритме мы находим
Х\ = ЬГ{ (mod n),
после чего вычисляем
Xi = b'1 (mod п) = Xi-i ¦ bdi (mod n), i = 2, ..., N,
и находим
HOJX{Xi - 1 (mod n),n), i = 1, ..., N.
Здесь также возможна организация вычислений порциями по 20 для
экономии количества нахождений наибольших общих делителей.
Замечание 2.2. Оценка сложности (Р — 1)-метода Полларда в худ-
худшем случае составляет О(я'/2 logc n) арифметических операций. Однако
в некоторых случаях алгоритм может быстро выдать делитель числа п.
Во всех случаях алгоритм хорошо находит небольшие простые дели-
делители п, потому что они являются степенно-гладкими для небольшой
границы гладкости В.
Замечание 2.3. Если какой-либо из вычисляемых в алгоритме наи-
наибольших общих делителей оказался равным п, то имеет смысл попро-
попробовать другое основание а, например, а = 3.
Замечание 2.4. В работе [ ] предложено усовершенствование
(Р — 1)-метода Полларда с помощью дискретного преобразования
Фурье.
Вывод. На практике (Р— 1)-метод Полларда обычно используют
до применения более сильных алгоритмов факторизации для того, чтобы
отделить небольшие простые делители числа п.
§ 2.3. р-метод Полларда
р-метод Полларда был впервые описан в работе [ ]. С его помо-
помощью было разложено на множители число Ферма F% = 2256 + 1, см. [ ].
Усовершенствования этого метода можно найти в работе [ ], см. так-
также книги [ ; ; , гл. 4; ]. Поскольку р-метод изложен во многих
книгах и статьях, мы приводим здесь достаточно конспективное его опи-
описание.
Схема р-метода.
На входе задано число п € N, которое мы хотим разложить на мно-
множители.
1 шаг. Выбрать отображение
§2.3. р-метод Полларда 63
Обычно f(x) — многочлен степени большей или равной 2, например,
f(x)=x2 + \.
2 шаг. Случайно выбрать хо € Ъ/пЪ и вычислять члены рекуррент-
рекуррентной последовательности xq, Х\, x<z, ¦¦¦ по правилу
Xi=f(Xi_i) (mod я).
3 шаг. Для некоторых номеров /', k проверять условие
1 <НОД(ху -хк, п)<п
до тех пор, пока не будет найден делитель числа п, или пока не закон-
закончится время, отведенное для работы алгоритма.
Конец алгоритма.
Замечание 2.5. Выбор номеров /', k на третьем шаге алгоритма
обычно делают одним из следующих способов.
1. Для каждого /' перебирают все k, k<j; это долго, и требуется
большая память компьютера.
2. Рассматривают пары k и 2k, т. е. проверяют условие
1 < НОЩх2к - хк, п) < п.
3. Если /' заключено в пределах 2h < /' < 2h+l, где h € N, то полагают
k = 2h-\.
Замечание 2.6. Основная идея р-метода очень проста. Если пе-
период последовательности хь (mod п) может быть порядка п, то период
последовательности xt (mod p) для простого делителя р числа п не пре-
превосходит р. Это значит, что X/ и хк могут быть различными по модулю п,
но совпадать по модулю р, т. е. р | НОД(ху — Хк, п).
Замечание 2.7. Для нахождения периодов рекуррентных последо-
последовательностей мы рекомендуем методы, описанные в работе [ ]. Имен-
Именно на этих методах основан оптимальный алгоритм выбора номеров /'
и k на третьем шаге алгоритма. Более детальное описание реализаций
различных выборов /' и k см. в [ ; ; ].
р-метод Полларда имеет эвристическую оценку сложности О(я'/4)
арифметических операций. Он очень популярен и обычно используется
для отделения небольших простых делителей факторизуемого числа п.
Покажем, как получается оценка его сложности.
Утверждение 2.8. Пусть S — фиксированное множество из г
элементов, f—какое-либо отображение f:S—>S, хо € 5, по-
последовательность хо, х\, Х2, ¦¦¦ определяется соотношением
Xj=f(Xj-\). Пусть Х>0, /= 1 + [л/2Хг] < г. Тогда доля тех пар
(/, хо) {где f пробегает все отображения из S в S и xq пробегает
64 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
все множество S), у которых хо, х\, Х2, ...xi попарно различны,
среди всех пар (/, xq) не превосходит е~х.
Доказательство. Всего имеется f ¦ r = rr+l различных пар (/, xq).
Пар (/, Хо), у которых xq, X\, x<z, • ••Х/ попарно различны будет
г(г- 1)... (г-/)•/-'.
Доля таких пар составляет величину
Поскольку при 0 < х < 1 выполнено неравенство log(l — х) < —х, то
Л v^ / /(/+1) /2 2Хг ,
<> = 5^<<= Х
log/=> log 1--
1
г
что и требовалось доказать. ?
Для чего нужно доказанное утверждение? Если у п есть неболь-
небольшой простой делитель р, то величина 1 = 1{п) = 1 + [л/2Хя] имеет по-
порядок я1/2, в то время как величина / = 1{р) = 1 + [^/2\р] существенно
меньше. А доля наборов (/, xq (mod п)), где /: Z/«Z —> Z/nZ, у кото-
которых элементы длинного набора xq (mod n), ..., хщ (mod n) различны,
не превосходит той же величины е~х, что и доля наборов (/, хо (mod p)),
где /: Ъ/рЪ —> Ъ/рЪ, у которых различны элементы короткого набора
Xq (mod p), ..., хцр) (mod p). Из этих рассуждений вытекает следующий
результат (см. [ ]).
Теорема 2.9. Пусть п — нечетное составное число, р — про-
простой делитель п, р < л/п, f(x) € Щх\, хо € Z, причем f хорошо реду-
редуцируется к модулю п, т. е. f корректно определяет отображение
Предположим также, что f(x) хорошо редуцируется к модулю р.
Если пара (/, xq (mod p)) является не слишком редкой по сво-
своим статистическим свойствам, то р-мегпод Полларда найдет р
за 0{n1'4 log3 n) битовых операций.
Точнее, существует константа с, такая, что для любо-
любого X > 0 вероятность не найти нетривиальный делитель п
за с ¦ л/Хя ' • log3 n битовых операций будет меньше, чем е~х.
Другой метод получения оценки сложности р-метода Полларда
можно найти в [ , гл. 8]. Рассуждения являются эвристическими
§2.4. Метод Шермана—Лемана 65
и апеллируют к понятию вероятности, но иного способа получить
оценку сложности для р-метода Полларда нет.
§ 2.4. Метод Шермана—Лемана
В работе [ ] описан алгоритм Шермана—Лемана, детерминиро-
ванно раскладывающий я на множители за 0(я'/3) арифметических
операций.
Алгоритм.
Пусть я нечетно, я > 8.
1 шаг. Для а = 2, 3, ..., [я1/3] проверить условие а | я. Если на этом
шаге мы не разложили я на множители, то переходим к шагу 2.
2 шаг. Если на 1 шаге делитель не найден и я — составное, то
я = pq, где р, q — простые числа, и
я1/3 <p^q<n2/3.
Тогда для всех k=\, 2, ..., [я1/3] и всех d = 0, 1, ..., [nl/6/DVk)] +\
проверить, является ли число
([V4kn] + df - 4kn
квадратом натурального числа. Если является, то для А = [у'\kn\ + d
и В = VA2 — 4kn выполнено сравнение
А2=В2 (mod я).
В этом случае проверить условие
\<{А±В, п)<п.
Если это условие выполнено, то мы разложили я на два множителя
и алгоритм останавливается.
Конец алгоритма.
Если алгоритм не нашел разложение я на два множителя, то я —
простое число. Докажем это. Нам нужно рассмотреть лишь случай
я = pq, где р, q — простые числа,
п1/3 < р ^ q < п2/3.
Лемма 2.10. При этих условиях существуют натуральные
числа г, s такие, что
rs<nl/3, \pr-qs\<nl/3.
5 О. Н. Василенко
66
Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
Воспользуемся этой леммой и положим в алгоритме k = rs ¦¦
Тогда
Akn = Arspq = (pr + qsJ — (pr — qsJ.
Следовательно,
(pr + qsJ - Akn = (pr - qsJ = B2,
где В = \pr — qs\ < я1/3. Пусть
d = pr + qs - [V'Akn].
Тогда
я2/3 > (pr + qsJ - Akn =
= (pr + qs
Отсюда получаем
d<
- 1).
,2/3
+ 1 =
,1/6
+ 1.
Значит, k и d лежат в установленных в алгоритме пределах. Поэто-
Поэтому в алгоритме мы найдем число А = pr + qs = \\jAkn] + d такое, что
В = VA2 — Akn = \pr — qs\ является натуральным числом. При этом
А2 — В2 = Akn = 0 (mod я). Далее, одно из двух чисел А ± В равно 2рг
и имеет с я общий делитель, равный р, так как я нечетно и не делится
на все числа, не превосходящие я1/3, а г < я1/3. То есть мы с помощью
НОД(Л ± В, я) разложим я на множители.
Доказательство леммы 2.10. Если р = q, т. е. я = р2, то утвержде-
утверждение леммы выполнено для г = s = 1. Далее будем считать р < q.
Разложим q/p в непрерывную дробь. Мы обозначаем р\1ц\ /-ю под-
подходящую дробь к q/p. Тогда
Po = [q/p], <7о=1, 0 < poQo < п1/ГЗ,
я2/3
поскольку - < —щ = я1/3. Выберем первый номер т такой, что
РтЯт < П ' , рт+\Ят+\ >П> .
Такой номер обязательно найдется, поскольку у последней подходящей
дроби знаменатель q^ = р> я1/3. Докажем, что г = рт и s = qm удовле-
удовлетворяют утверждению леммы. Очевидно, что rs < я1/3. Далее,
< г рт+1 1
Qm+l
sqm+i
по свойствам подходящих дробей.
§2.5. Алгоритм Ленстры
67
Рассмотрим сначала случай m+1 < -. В этом случае
Ят+l Р
\pr-qs\=ps
что и требовалось доказать.
Теперь рассмотрим случай m+1 > -. Тогда перевернем неравенства
Ят+\ Р
Ргп+\ q Pm qm Р qm+\ /-.
—— > - > ^—, откуда -— > — > ——. Следовательно, по свойствам
Qm+l P qm Pm <? Pm+l
непрерывных дробей, выполнены неравенства
? _ Е
г q
Prn+l
Отсюда
rq
rPm+\ Prn+l
q
Prn+l Pm+\
pm+iqm+l " П1/6 ~'"
Лемма доказана. ?
Замечание 2.11. При реализации алгоритма Шермана—Лемана
возможно эффективное использование параллельных вычислений.
§ 2.5. Алгоритм Ленстры
В работе [ ] получен следующий результат.
Теорема 2.12. Пусть г, s, n — натуральные числа, удовлетво-
удовлетворяющие условиям
г<s<n,
{r,s) =
Тогда существует не более 11 делителей г,- числа п таких, что
г,- = г (mod s). Имеется алгоритм, который находит все эти г,-
за O(logn) арифметических операций.
Следствие 2.13. Используя алгоритм из теоремы 2.12, можно
получить метод факторизации числа п за О(п1//3 log2 n) арифме-
арифметических операций. Положим s = [я1/3] + 1. С помощью алгоритма
Евклида представим п в виде п=п\Пч, где (m,s)=\, а число пч рав-
равно произведению степеней тех простых чисел, которые делят s.
68 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
Мы факторизуем п\, а для факторизации n<z поступим аналогич-
аналогично, заменив s на s + 1. Теперь перебираем г = 1, 2, ..., s — 1 и для
тех г, которые взаимно просты с s, находим с помощью алгорит-
алгоритма теоремы делители гь числа щ, rt = r (mod s). В силу взаимной
простоты п\ и s мы полностью разложим п\ на множители.
Следствие 2.14. В § 1.8 главы 1 приведено описание схемы ал-
алгоритма Ленстры для проверки простоты натуральных чисел.
Оценка сложности этого алгоритма зависит от начальных про-
простых чисел pi, ..., pi, таких, что
s= 1Ь>«1/2-
q — простое
q-l\p,...pt
Теорема 2.12 позволяет уменьшить количество простых чисел
р\, ..., pi и ослабить это неравенство до s>n1^. Затем на по-
последней стадии алгоритма проверки простоты нам придется
восстанавливать возможные делители числа п по остаткам
г' (mod s).
Это усовершенствование на практике позволяет ускорить
работу алгоритма проверки простоты чисел.
Мы докажем здесь теорему 2.12 лишь частично. А именно, мы пол-
полностью опишем алгоритм нахождения всех г,- = г (mod s) и докажем
оценку сложности. Доказательство того, что таких делителей может
быть не более 11, является комбинаторным и его можно найти в [ ].
Замечание 2.15. Можно доказать, что для любой постоянной а,
- > а > -, существует постоянная с (а) > 0 такая, что при 1 < г < s < п,
(г, s) = 1, s>na, существует не более с(а) положительных делителей
числа п, сравнимых с г по модулю s. Однако полиномиальный алгоритм
для их нахождения пока неизвестен.
Алгоритм.
На входе заданы числа г, s, n € N, удовлетворяющие условиям тео-
теоремы.
1 шаг. С помощью обобщенного алгоритма Евклида найти г* € N,
г*г = 1 (mod s). Найти г1 такое, что г' = r*n (mod s), 0 ^ г' < s.
2 шаг. Для очередного значения г = 0, 1, 2, ... найти числа а,-, Ьи с,-
по следующим правилам:
= r'r* (mod s), 0<ai<s, bi = \, c\ = -—— ¦ r* (mod s)
§2.5. Алгоритм Ленстры 69
и при i ^ 2
щ = Щ-2 - qidi-u bi = bi-2 - qtbi-и ct = c,_2 - <7,-c,-_i (mod s).
Здесь целые числа q-t однозначно определяются условиями
О < а,- < a,-_i при I четном,
О < щ < а,_1 при г нечетном.
Фактически, qt — частное от деления а,-_2 на а,-_ь за исключением слу-
случая, когда I нечетно и остаток от деления равен нулю. Отметим, что а,-
монотонно не возрастают и на четных номерах — убывают.
3 шаг. Для очередного набора a,-, bi, с,- найти все целые числа с,
удовлетворяющие условиям
c = Cj (mod s),
с| < s, если г четное,
2a,-ft; < с < ^т + uibi, если г нечетное.
Таких с будет не более двух; для четного I это очевидно, а для нечетных г
мы докажем это ниже.
4 шаг. Для каждого с из шага 3 решить в целых числах систему
уравнений
{xai + ybi = c,
y(xs + r)(ys + г') = п.
Если х и у окажутся неотрицательными целыми числами, то добавить
xs + г к списку искомых делителей.
5 шаг. Если щ = 0, то алгоритм заканчивает работу. Иначе возвра-
возвращаемся на шаг 2 к следующему значению I.
Конец алгоритма.
Замечание 2.16. Систему линейных уравнений, возникающую
на 4 шаге алгоритма, можно свести к одному квадратному уравне-
уравнению. Положим
u = a,i(xs + r), v = bi(ys + г').
Тогда
uv = naibi, u + v = s(a,iX + biy) + aj + Ь/ = cs + щг + bj',
т. е. числа и и v являются корнями многочлена
Т2 - {cs + aj + bj')T + a-ibiU.
70 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
Эти корни должны быть целыми числами, одно из которых делится
на а,-, а другое — на ft,-. Поскольку мы работаем с большими целыми
числами, на практике многократное извлечение корня из дискриминанта
для нахождения корней многочлена является достаточно трудоемким.
Замечание 2.17. Обозначим через / номер, для которого а/ =0. По-
Поскольку а,- получается с помощью алгоритма Евклида, примененного
к ао = s и а\, а\ < s, то очевидно, что / = O(logs). Кроме того, по опре-
определению чисел а,- номер / четен.
Лемма 2.18. Числа щ, bi обладают следующими свойствами:
1. а,- > 0, bi > 0 для нечетных I, 0 <l <t;
2. а,- ^ 0, ft,- < 0, (а,-, bi) ф @, 0) для четных i, O^i^t;
3. bi+idi — ai+\bi = (—1)' • s для 0 < i < t.
Доказательство. Свойство 1 для i = 1, свойства 2 и 3 для I = 0
выполняются по определению ао, bo, a\ wb\. Дальнейшее доказатель-
доказательство проведем по индукции.
Свойство 3 следует из соотношения
- (a,- -
Неравенства a,- > 0 для нечетных i и a,-^ 0 для четных i следуют
из определения а,-, а неравенство (a,-, ft,-) Ф @, 0) следует из свойства 3.
Докажем неравенства для ft,-.
Если г нечетно, то i < t. Тогда
поскольку ft,-_2 >0 и ft,_i ^0 по предположению индукции и числа д,-
неотрицательны по определению. Точнее, в этом случае справедливо
более сильное неравенство: ft,- ^ft,_2.
Пусть I четно, I ^ /. Тогда по предположению индукции ft,-_2 ^ 0,
ft,-_i > 0, и здесь д,- — настоящее частное, т. е. ^,-^ 1. Тогда ft,- = ft,_2 —
— <7(ft(-i < 0, и даже ft,- < ft,_2. Лемма ?
Лемма 2.19. Пусть a,-, ft,-, / — числа мз алгоритма. Пусть
х, у € К^о. Y € R>o- Тогда найдется номер I, 0 < г < /, такой,
что либо
—ys < xai + ybi < ys, если I четно,
либо
XII
2ya,-ft,- < ха, + ybi < — + ущЬ,, если i нечетно.
§2.5. Алгоритм Ленстры 71
Доказательство. Если х = у = О, то утверждение леммы очевидно.
Пусть далее х или у отлично от нуля. Поскольку по лемме 2.18
xuq + у bo = xs ^ 0, xat + ybt = ybt^O,
то найдется четный номер i такой, что
xa-i + ybi ^ 0, xai+2 + ybi+2 < 0.
Если хщ + ybi < ys или хщ+2 + ybi+2 > —ys, то все доказано. Если же
хщ + ybi ^ ys и ХЩ+2 + i/bi+2 ^ —JS, то по лемме 2.18 имеем
^ s = bi+idi - a-i+\bi ^
Тогда xai + ybi ^ybi+iui, откуда в силу неположительности ybi нахо-
находим, что х ^ ybi+i (заметим, что а,- ф 0, так как I < t). Кроме того,
откуда xdj+2 + ybi+2 ^ ybj+2dj+i, и в силу неотрицательности xdi+2 по-
получаем ybi+2 ^ ybi+2di+\. Заметим, что b-t+2 < 0, так как xai+2 + ybi+2 ^
< — ys < 0. Тогда у ^ Ya«+i ¦
Из доказанных оценок снизу для х и у получаем
xdi+i+ybi+i ^ 2ydi+ibi+i,
т. е. выполнено нижнее неравенство утверждения леммы для нечетного
номера I + 1. Также
Поэтому
ху - yai+ix - ybi+iy + y2bi+iai+i ^ 0.
Следовательно
отсюда следует и верхнее неравенство для номера I + 1. ?
Теперь докажем, что алгоритм находит все делители числа п, срав-
сравнимые с г по модулю s. Пусть xs + г — такой делитель (число х € Z^o
нам неизвестно). Тогда при некотором deN выполнено равенство
(xs + r)d = n, откуда dr = n (mod s) и d = nr* = r' (mod s). Значит,
d = r' + ys, где у € Z^o, поскольку / < s. Отсюда
(xs + r)(ys + r1) =n.
72 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
Тогда
г г1 + s(xr' + yr) = n (mod s2),
Отсюда
J , П-ГГ1 , .
xr + yr = (mod s).
xr1 r* + у = г* (mod s),
s
т. e.
xa\ +yb\ =c\ (mod s).
Сравнение xuq + у bo = cq (mod s) также выполняется очевидным обра-
образом. Тогда с помощью рекуррентных формул находим, что
хщ + ybj = Ci (mod s), i = 0, ..., /.
Применим лемму 2.19 при у = 1- Найдется i такое, что либо
хщ +ybj\ < s, если I четно,
либо
2щЬ-1 < хщ + ybi < ху + щЬи если I нечетно.
Фиксируем это I и положим c = xai+ ybi. Тогда c = Ci (mod s). Из не-
неравенства
/
мы получим, что
с\ < s, если I четно,
2aibi < с < -т; + aibi, если г нечетно.
sz
Значит, с попадает в множество значений, проверяемых на 3 шаге
алгоритма. Мы уже заметили ранее, что для четного i таких значе-
значений будет не более двух. Для нечетного i число с лежит на отрезке
\1щЬ\, -п + щЬЛ длины -п — щЬ\ < -п. Поскольку n/s3 < 1, то только
L sz I sz sz
один элемент из арифметической прогрессии с,- (mod s) может попасть
в этот отрезок. Итак, в алгоритме на 3 шаге мы дойдем до этого
значения с = хщ+ ybj. Решив систему на 4 шаге, мы найдем х и у,
и, следовательно, найдем делитель xs + г.
Теперь оценим сложность алгоритма. Так как щ получаются с помо-
помощью алгоритма Евклида, то / = O(\ogn). Шаги 2, 3, 4 можно выполнить
§2.6. Алгоритм Полларда—Штрассена 73
за 0A) арифметических операций, поскольку согласно [ ] извлече-
извлечение квадратного корня из целого числа имеет такую же сложность,
как умножение. В итоге мы доказали теоретическую оценку сложно-
сложности O(logn) арифметических операций, хотя реально неоднократное
извлечение квадратного корня из дискриминанта на 4 шаге является
трудоемким, как уже отмечалось выше.
§ 2.6. Алгоритм Полларда—Штрассена
Алгоритм Полларда—Штрассена впервые описан в работе [ ],
(см. также [ ]). Он детерминированно находит разложение п на два
множителя за 0(я'/4 log п) арифметических операций, т. е. имеет наи-
наилучшую оценку сложности среди детерминированных алгоритмов фак-
факторизации. Алгоритм основан на следующей теореме.
Теорема 2.20. Пусть z € N, у = z2. Тогда для любого натураль-
натурального числа t наименьший простой делитель числа НОД(/, у\) мо-
может быть найден за O(zlog2zlog2 /) арифметических операций.
Алгоритм Полларда—Штрассена
Положим z = [я1/4] + 1, у = z2 > я1/2, t = п. Далее с помощью ал-
алгоритма теоремы 2.20 найдем наименьший простой делитель числа
НОД(я, у\). Поскольку у\ делится на наименьший простой делитель р
числа п (так как р ^я1/2 < у), то алгоритм выдаст именно это чис-
число р. Сложность алгоритма Полларда—Штрассена O(zlog2zlog2/) =
= 0{п1/4 log4 n).
Доказательство теоремы 2.20. Справедливо равенство
11 ((/-l)z)! ¦
Если мы будем вычислять
то первый нетривиальный НОД покажет, что минимальный простой де-
делитель числа НОД(/, у\) лежит среди чисел
(/•-1J+1, (/'-1J + 2, ..., JZ.
Тогда первое число в этом наборе, которое делит / будет искомым ми-
минимальным простым делителем числа НОД(/, г/!); для его нахождения
потребуется не более чем z операций деления / на числа данного на-
набора.
74 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
г-1
Обозначим f(x) = П (х — 0- Тогда
(=0
f(jz) = 77r'""
Ниже в главе 9, посвященной дискретному преобразованию Фурье, бу-
будет показано, что набор чисел
f{jz) (mod t), j=\,...,z,
можно найти за O(z log z log; /) арифметических операций. Кроме того,
для нахождения первого нетривиального
НОД(/, f(jz) (mod t)), j=l,...,z,
надо затратить zO(log/) = O(z\ogt) арифметических операций. Итого-
Итоговая оценка сложности составляет
что и завершает доказательство теоремы. ?
Алгоритм Полларда—Штрассена может использоваться как непо-
непосредственно для факторизации не очень больших целых чисел, так
и в качестве вспомогательного алгоритма в дополнительной страте-
стратегии PS в субэкспоненциальных алгоритмах факторизации целых чисел.
Об этом будет рассказано в следующей главе.
§2.7. (Р + 1)-метод Уильямса и его обобщения
В работе [ ] описан метод факторизации чисел п € N с помощью
последовательностей чисел Люка. Этот метод аналогичен (Р— ^-ме-
^-методу Полларда, но использует разложение на множители числа Р+ 1.
В работе [ ] метод был обобщен на основе использования произволь-
произвольных круговых многочленов. Суть (Р+ 1)-метода заключается в следу-
следующем.
Рассматривается последовательность чисел Люка, определяемая
соотношениями
где Р, Q — фиксированные целые числа. Пусть р — простой делитель
факторизуемого натурального числа п такой, что р + 1 является В-сте-
пенно-гладким, т. е.
(=1
§2.8. Методы Шэнкса 75
где qi — простые числа, qf ^ В. Пусть числа C,- € N таковы, что
qf^B, qf+l>B, i=\,...,k.
k
Положим R = Yl q{ ¦ Тогда p + 1 \ R. Если для последовательности чи-
(=i
сел Люка параметр Q взаимно прост с я и выполнено условие
P2-AQ\_ x
Р >
(оба эти условия эвристически обеспечиваются некоторым случайным
перебором Р и Q), то по свойствам последовательностей чисел Люка
р | НОД(м«, п).
Дальнейшая работа алгоритма заключается в достаточно быстром вы-
вычислении элемента последовательности иц и нахождении НОД(м^, п).
В работе [ ] указано, что данный метод является довольно-та-
довольно-таки медленным на практике. В работе [ ] доказано, что для обобщения
(Р+ 1)-метода Уильямса с применением круговых многочленов в пред-
предположении расширенной гипотезы Римана может быть доказана веро-
вероятностная полиномиальная оценка сложности.
§ 2.8. Методы Шэнкса
Два метода факторизации целых чисел, использующих бинарные
квадратичные формы, принадлежат Д. Шэнксу, см. [ ; ; ].
Первый из них работает с положительно определенными бинарными
квадратичными формами заданного отрицательного дискриминанта,
и в группе классов форм он находит амбигову форму, которая дает
разложение дискриминанта на множители. Сложность этого метода
составляет О(п ' +t) арифметических операций при условии выпол-
выполнения расширенной гипотезы Римана. Второй метод носит название
SQUFOF и использует группу классов бинарных квадратичных форм с
положительным дискриминантом. Здесь также происходит нахождение
амбиговой формы, дающей разложение дискриминанта. Сложность
SQUFOF составляет О(п ' +t) арифметических операций; при этом
алгоритм работает с целыми числами, не превосходящими 2^/п. Среди
алгоритмов факторизации с экспоненциальной сложностью SQUFOF
считается одним из самых эффективных.
76 Гл. 2. Факторизация целых чисел с экспоненциальной сложностью
Детальное описание алгоритмов Шзнкса выходит за рамки данной
книги, поскольку требует привлечения ряда фактов из теории бинарных
квадратичных форм. Для справок см. [ ; , гл. 8].
§ 2.9. Прочие методы. Заключение
Для чисел п специального вида возможны особые подходы к фак-
факторизации, поскольку делители таких чисел могут также иметь специ-
специальный вид.
Теорема 2.21. Пусть Ь, й € N, Ь> \,п = Ьк — 1. Если р — простое
число, делящее п, то выполнено одно из двух утверждений:
1. р | bd — 1 при некотором d < k, d\k;
2. р = 1 (mod k).
При этом, если р>2 и k — нечетно, то во втором случае
р = 1 (mod 2k).
Доказательство. По малой теореме Ферма bp~l = 1 (mod p),
а также bk = 1 (mod р). Пусть d = НОД(й, р — 1), тогда bd = 1 (mod p).
Если d < k, то это означает выполнение первого утверждения теоремы.
Если же d = k, то k \ р — 1, т. е. р = 1 (mod k). ?
Пример 2.22. Пусть п = 2п — 1. Тогда первое утверждение теоре-
теоремы не выполняется, так как 11 — простое число и d = 1 не подходит
B1 — 1 = 1). Следовательно, р= 1 (mod 22). После этого сразу нахо-
находим п = 23 • 89.
Обзор методов факторизации с экспоненциальной сложностью
можно найти в работе [ ]. Более поздние работы см. в списках
литературы книг [ ; ]. Заметим, что в печати достаточно часто
появляются новые работы, содержащие алгоритмы факторизации
с экспоненциальной сложностью. Однако практическая значимость
таких алгоритмов, как правило, невелика. Наиболее популярными
в практических вычислениях являются (Р— 1)-метод Полларда, р-ме-
тод Полларда и алгоритм Полларда—Штрассена. Они используются
в сочетании с субэкспоненциальными методами факторизации, которые
будут описаны в главе 3, и применяются, как правило, для предвари-
предварительного отделения небольших простых делителей у факторизуемого
числа.
Глава 3. Факторизация целых чисел
с субэкспоненциальной сложностью
§ 3.1. Введение
В данной главе мы рассматриваем алгоритмы факторизации на-
натуральных чисел п, делающие Ln[y; с] арифметических операций при
11 „ „
у = н или Y = it и ПРИ некоторой положительной, зависящей от ал-
алгоритма, постоянной с. Алгоритмов факторизации, имеющих оценки
сложности лучше указанных, в настоящее время не существует.
Мы предполагаем далее, что число п — составное (это быстро про-
проверяется с помощью вероятностных алгоритмов из главы 1) и что п
не делится на небольшие простые числа (все небольшие простые де-
делители мы находим перебором, а также с помощью алгоритмов из гла-
главы 2).
Описываемые далее алгоритмы находят натуральные числа х, у та-
такие, что х2 = у2 (mod п), и затем проверяют условие
1 <НОЩх±у, п)<п.
Если делитель п найден, то алгоритм останавливается, иначе строит
следующую пару х, у.
Утверждение 3.1. Пусть п— нечетное составное число, не яв-
являющееся степенью простого числа. Тогда для случайной пары х,
у, 1 < х, у < п — 1, удовлетворяющей соотношениям
НОД(х, я) = НОД(г/, п) = \,
х2 =у2 (mod n),
вероятность того, что
1 < НОД(х ±у, п)< п,
будет не меньше 1/2.
Доказательство. Пусть п = /?"' •••pakk, й^2, есть разложение п
на простые сомножители. Паре х, у, удовлетворяющей условиям утвер-
утверждения, соответствует число z, 1 < z < n — 1, z2 = 1 (mod n) (очевидно,
78 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
z = xy~l (mod п)). Нам достаточно доказать, что количество таких z,
для которых дополнительно выполнено неравенство
1 <Н0ДB±1, п)<п,
будет не меньше половины. Очевидно, что условие z2 = 1 (mod n) рав-
равносильно совокупности условий
z = ±\
z = ±\ {той p*kk),
где знаки ± произвольны. Отсюда количество возможных значений
для z равно 2к, и только для двух значений z = ±1 (mod n) наибольший
общий делитель НОД(г± 1, п) будет равен 1 или п. Поскольку k ^ 2,
то наше утверждение теперь очевидно. ?
Построение пар х, у таких, что х2 = у2 (mod n), будет неэффектив-
неэффективным для факторизации п, равного степени простого числа р, т. е. п = ра.
Такие числа п довольно редки. Для их обнаружения можно предло-
предложить следующий способ. Если а € N, р\а, то ар = a (mod p). Отсюда
ап = а (mod р), и поэтому НОД(а" — а, п)\ р, т. е. НОД(а" — а, п) > 1.
Поэтому, если для некоторого случайно выбранного а выполнено ра-
равенство НОД(а" — а, п) = 1, то п ф ра. Если же для нескольких значе-
значений а окажется НОД(а" — а, п) > 1, то мы либо разложим п на множи-
множители (если НОД(а" — а, п) < п), либо будем считать п степенью про-
простого числа и попробуем факторизовать его, извлекая корни степени
2, 3, 5, 7, ... из п.
В описываемых далее алгоритмах мы будем считать дополнительно,
что п не является степенью простого числа.
Везде в этой главе, за исключением двух последних параграфов, мы
обозначаем L = L(n) = exp((log«loglognI/2). Мы также будем пред-
предполагать, что п не делится на простые числа р такие, что р ^ L(n)\ это
легко проверяется с помощью перебора за O(L(n)) = Ln -, 1 арифме-
арифметических операций.
§ 3.2. Метод Диксона. Дополнительные стратегии
Пусть neN — число, которое мы хотим разложить на множите-
множители, L = L(n) = exp((log« log log яI/2). Пусть а — некоторая постоянная,
О < а < 1, значение которой будет определено ниже. Факторной базой
§ 3.2. Метод Диксона. Дополнительные стратегии 79
мы будем называть множество простых чисел р, лежащих в промежутке
Пусть k — количество простых чисел в факторной базе, 2 = р\ <р%<...
...<Pk ^La. Символом Q(ni) мы будем обозначать наименьший неот-
неотрицательный вычет в классе т2 (mod n).
Опишем алгоритм Диксона, следуя работе [ ].
Алгоритм Диксона.
1 шаг. Случайным перебором ищем числа гщ, ..., rrik+i такие, что
1 < гщ < п, Q(rrii) = /?"''•' ... pakik
для 1= 1, ..., k+ 1. Это означает, что mf = Q(m,-) (mod n) являются
гладкими числами, то есть раскладываются на множители в нашей фак-
факторной базе. Обозначим ц,- = (а(д, ..., а,^) € Ък — векторы показателей
в разложении Q(m,-) на множители.
2 шаг. Решая систему линейных уравнений
х\г)\ + ... + Xk+\Vk+\ = 0 (mod 2)
в векторном пространстве (Z/2Z)*, находим значения х\, ..., xk+i €
€{0, 1}, не все равные нулю (такое решение существует, поскольку
число уравнений k меньше числа неизвестных).
3 шаг. Для найденных х\, ..., Xk справедливо соотношение
4+1 4+1
К1 ...mxkk+lJ = p[=l ' '¦'... р'=1 ' "¦* (mod я).
Обозначая
/4+1
у _ тХ\
k
'~
(числа Yj xiai,j /2 — целые по определению х,), мы получим соот-
ношение
X2 = Y2 (mod n).
Далее проверяем условие
1 < НОД(^ ±Y,n)< п.
В случае успеха мы разложили п на множители (вероятность успеха
была оценена в §3.1). В случае неудачи мы возвращаемся на 1 шаг
и ищем другие значения гщ.
Конец алгоритма.
80 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
Замечание 3.2. Факторизация чисел Q(m,-) на 1 шаге алгоритма
Диксона проводится пробными делениями на элементы фактор-
факторной базы.
Замечание 3.3. Решение системы линейных уравнений на 2 шаге
алгоритма можно проводить методом Гаусса.
Проанализируем сложность алгоритма Диксона, следуя рабо-
работе [ ]. При этом примем следующее соглашение. Вместо /jconst+°A)
будем писать просто Lconst; величина оA) все равно будет при-
присутствовать в итоговой оценке сложности Ln -; с . Очевидно, что
const • Lconst = Lconst по нашему определению; также Ti(Lconst) = Lconst,
где п(х) — число простых чисел, не превосходящих х.
Для одного случайно выбранного значения т на 1 этапе алгоритма
поиск разложения Q(m) в нашей факторной базе составит La арифме-
арифметических операций. Действительно, простых чисел р ^ La в факторной
базе будет k = Ti(La) = La по нашему соглашению. Простое число р мо-
может входить в разложение Q(m) с кратностью ар < logp Q(m) < log2 «.
Следовательно, общее количество операций деления для разложения
Q(m) на множители не будет превосходить величины
log logo
La ¦ log, n = La ¦ -—— = La ¦ LoA) = La
bz log 2
по нашему соглашению.
Пусть мы делали случайный выбор т на 1 этапе Lb раз для
некоторой постоянной Ь. Тогда будет потрачено La+t> арифметических
операций на разложение Q(m) на множители. Если мы нашли k + 1
значение пц, то на 2-м этапе, решая систему линейных уравнений
от k + 1 = La + 1 = La неизвестных методом Гаусса, мы потратим еще
L3a арифметических операций. В работе [ ] с помощью теорем о рас-
распределении простых чисел показано, что при b = а + -^- за Lb выборов
числа т мы с высокой вероятностью найдем n(La) + 1 =La = k+ 1
значений пц таких, что Q(m\) раскладываются на множители из на-
нашей факторной базы. Тогда суммарная оценка сложности алгоритма
Диксона составит
j max(a+b,3a) _ r mRx[2a+^,3aj
арифметических операций. Минимум величины max Bа + ^-, За
на интервале @; +оо) достигается и равен 2. В итоге получаем оценку
§3.2. Метод Диксона. Дополнительные стратегии 81
сложности алгоритма при а = „'¦
арифметических операций.
Вывод. Если факторная база состоит из всех простых чисел
р ^ЦяI/2 и мы случайно выбираем ЦяK/2 значений т, то с высокой
вероятностью будет построена пара х, у € N такая, что х2 = у2 (mod я).
При этом будет выполнено Ln -; 2 арифметических операций (ес-
(если на 2 этапе алгоритма Диксона использовать обычное гауссово
исключение для решения линейных систем).
Теперь обсудим дополнительные стратегии ускоряющие работу ал-
алгоритма Диксона (см. [ ]).
Стратегия LP (использование больших простых чисел)
Эта стратегия была впервые предложена в работе [ ]. Обычно она
всегда используется на практике в субэкспоненциальных алгоритмах
факторизации целых чисел и алгоритмах дискретного логарифмирова-
логарифмирования в конечных простых полях.
Суть стратегии LP заключается в следующем. Пусть мы раскла-
раскладываем на множители Q(m) = m2 (mod я); поделили на все простые
р < La, и у Q(m) еще осталась неразложенная часть s, то есть
Q(m) = s
Очевидно, что s>La. Если дополнительно выполняется неравенство
s ^ L2a, то s — простое число (иначе у s был бы простой делитель,
не превосходящий -^/s ^ La). Тогда мы включаем дополнительное боль-
большое простое число s в факторную базу и храним те значения т,
для которых Q(m) делится на данное s. Это увеличивает длину
векторов-показателей на 1 этапе алгоритма. Для того, чтобы вернуться
к исходной длине векторов k, после выполнения 1 этапа следует про-
провести исключение дополнительных больших простых чисел. А именно,
если в нашем списке есть дополнительное большое простое число s,
и только одно Q(m) делится на него, то мы вычеркиваем s и Q(m)
из списка. Если же, например, есть два значения Q{rri\) и Q{rri2),
делящиеся на s, то значение Q{rri\) ¦ Q{rri2) = (ггцгг^J (mod n) будет
делиться на s2. Следовательно, показатель числа s войдет в вектор
б О. Н. Василенко
82 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
показателей в четной степени и будет отсутствовать в системе линейных
уравнений над Z/2Z.
Можно использовать стратегию LP с двумя, тремя и т. д. дополни-
дополнительными большими простыми числами, то есть искать такие т € N,
для которых т2 = Q(m) (mod п) и
Q(m)=
где s\, ...,St—дополнительные большие простые числа, не содер-
содержащиеся в факторной базе. В этом случае для исключения дополни-
дополнительных простых чисел используется теория графов: строится граф,
в котором затем ищутся циклы, дающие четную степень произведений
si, ..., st.
Замечание 3.4. Теоретическая оценка сложности алгоритма Дик-
Диксона с применением стратегии LP не улучшается и по-прежнему со-
составляет Ln -; 2 арифметических операций.
Стратегия PS (применение алгоритма Полларда—Штрассена)
В §2.6 мы описали алгоритм Полларда—Штрассена, который для
z € N и у = г2 находит наименьший простой делитель числа НОД(/, у\)
за Ofzlog^log2 /) арифметических операций.
Применительно к алгоритму Диксона мы хотим в числе Q(ni) выде-
выделить часть разложения на простые множители, состоящую из простых
чисел р, p^La. Тогда полагаем z = \Lal2\ + \,y = z2xLa,y^Lan при-
применяем алгоритм Полларда—Штрассена не более, чем log2 n раз при
t=Q(m). В итоге мы выделим у числа Q(m) разложение на p^La
за О (log я • Lal2 log n) = Lal2 арифметических операций (по нашему со-
соглашению). Следовательно, оценка сложности алгоритма Диксона сос-
составит
,тах(|+6,3а)
арифметических операций.
Теорема 3.5. Сложность алгоритма Диксона со стратеги-
стратегией PS минимальна при а = —^ и Ь = а + ^- и составляет Ln\-; л/3
арифметических операций.
Стратегия EAS (стратегия раннего обрыва)
Пусть а, с, 0 — некоторые фиксированные постоянные, 0 < а, с, 0 <
< 1. В алгоритме Диксона мы факторизовали Q(m) пробными делени-
§ 3.3. Алгоритм Бриллхарта—Моррисона 83
ями на р ^ La. В стратегии EAS мы сначала делаем пробные деления
Q(m) на р < LaB, и если после этого неразложенная часть Q(rn) остает-
остается больше, чем nl~c, то мы отбрасываем данное т и переходим к сле-
следующему. В работе [ ] проведен детальный анализ стратегии EAS.
Теорема 3.6. Алгоритм Диксона со стратегией EAS при
a=J-, с=-, 9=о делает Ln -; J-\ арифметических опе-
операций. При этом мы перебираем т в количестве Lb значений при
, с 1-е
Замечание 3.7. Можно проводить стратегию EAS с несколькими
обрывами, то есть при некоторой возрастающей последовательности 0,-
и убывающей последовательности с,-.
Методы исключения
Имеются более тонкие, чем алгоритм Гаусса, методы решения ли-
линейных систем уравнений над конечными полями. О них будет рас-
рассказано в последней главе книги. Например, в работе [ ] предложен
алгоритм решения систем линейных уравнений от k неизвестных в поле
Z/2Z за О(й2>495548) арифметических операций.
Теорема 3.8. Алгоритм Диксона со стратегиями PS, EAS
с несколькими обрывами и алгоритмом решения линейной си-
системы уравнений от k неизвестных за O(kx) арифметических
Л г /п , Г 1 /5^1 ,
операции при к < 5/2 имеет оценку сложности Ln\-; w - ариф-
арифметических операций.
Замечание 3.9. Алгоритм Диксона представляет собой очень удоб-
удобную модель для получения теоретических оценок сложности без ис-
использования каких-либо эвристических и недоказанных гипотез. Од-
Однако, на практике он не применяется; вместо случайного выбора т
используются другие подходы, о которых мы расскажем в следующих
параграфах.
§ 3.3. Алгоритм Бриллхарта—Моррисона
В алгоритме Бриллхарта—Моррисона случайный выбор т из ал-
алгоритма Диксона заменяется на детерминированное определение оче-
очередного значения т, для которого мы ищем разложение т2 (mod п)
на простые множители из факторной базы. Этот выбор т делается
84
Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
с помощью непрерывных дробей для числа у/п. Алгоритм впервые был
описан в работе [ ]; с его помощью было разложено на множители
число Ферма F7. Данный метод факторизации был наиболее популяр-
популярным до появления в 1981 г. алгоритма квадратичного решета Померан-
са, о котором будет рассказано в следующем параграфе. Об алгоритме
Бриллхарта—Моррисона см. также [ ; ].
Алгоритм основан на следующей теореме.
Теорема 3.10. Пусть я € N, п> 16, y/n^N. Обозначим через —,
г = 0, 1, 2, ... подходящие дроби для разложения т/п в непрерыв-
непрерывную дробь. Тогда абсолютно наименьший вычет р2 (mod n) равен
pf — nq2 и выполняется неравенство
\p2-nq2\<2jn.
Доказательство. Обозначим х = л/п>\. Тогда по свойствам
непрерывных дробей получим
\pf-nqf\=qf
Далее,
«й-
Pi+l _ Pi_
Qi+i Qi
P,
x+—<x+x+
Pi+i _ Pi
Qi+i Qi
= 2x
1
<?«<?«+1
поскольку f-i+1 и El расположены по разные стороны от х. Следова-
Следовательно,
\pf-xzqf\-2x<2x -1
2xq2+l
2x -
= 2х(-1
если I ^ 1 (так как тогда qi + 1 ^ qi+\)- Отсюда при I ^ 1 получим
так как я>16. Это означает, что при г'
теоремы 3.10.
При I = 0, ро = [у/п], qo = 1 и при s =
-п\ = \{у/п - sJ - п
Теорема доказана. ?
выполнено утверждение
получим
п - е)
§ 3.3. Алгоритм Бриллхарта—Моррисона 85
Разложение \[п в непрерывную дробь легко может быть найдено
по следующей теореме.
Теорема 3.11. Пусть а — квадратичная иррациональность,
где fleN VDgN v € N и € Z v | D2
а= , где fleN, VDgN, v € N, и € Z, v | D2 - и. Тогда для
любого k^O справедливо разложение в непрерывную дробь
а=[ао, аи ..., ak, a*+i],
где ао е Z, а\, ..., ak € N, ak+[ — (k + 1)-м остаток. При этом спра-
справедливы соотношения:
ао = [а], vo = v, щ = и + uqv
и при k^O
где vk+l=
а числа Uk получаются с помощью рекуррентной формулы
Доказательство. Проведем индукцию по k. При k = 0 имеем
_ 1 _ 1 _ и _
а-ап s/d - и VD -и-va0
а0
Число V\ —целое, поскольку
D — tin D—(u-\-anv) D — u o 2 ^ ч,
= = Шпи — unV t IL
Vq V V
по условию. Очевидно также, что V\ ф 0 так как D ф и2.
Пусть формулы теоремы 3.11 справедливы для номера k + 1. Дока-
Докажем, что они выполнены и для k + 2. По определению (k + 2)-го остатка
выполнены равенства
VD + uk-ak+lvk+l
vk+i
vk+i
(D - u2k+l)/vk+i Vk+2
Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
По определению неполного частного a.k+2 = [«4+2]. Осталось лишь до-
D-u\+[
казать, что Vk+2 = — является целым числом. Число
D-u2k+l D-(ak+lvk+l-ukf
Vk+2 = —
* ¦ D-u\
будет целым тогда и только тогда, когда целым будет число = Vk\
но Vk —целое по предположению индукции. П
Следствие 3.12. По теореме 3.11 мы найдем разложение т/п
в непрерывную дробь, используя только операции с целыми чис-
числами и нахождения целой части чисел вида .
Алгоритм Бриллхарта—Моррисона.
Будем обозначать через />,-/<?,• подходящие дроби разложения л/п
в непрерывную дробь (чтобы не путать их с элементами факторной
базы {/?,•}). Факторную базу составляют ро = —\ и простые числа /?,-,
Pi^L(n)a = La, где а = const; при этом мы берем лишь те простые
числа, для которых ( — ) = +1. Алгоритм Бриллхарта—Моррисона ра-
работает так же как алгоритм Диксона, только вместо случайных зна-
значений т мы берем т,- = Р,-, и по теореме 3.10 абсолютно наименьший
вычет rnf (mod n) равен
о о
Q(rrii) = Pf — nQf,
причем |Q(m,)| <2^fn. В последнем неравенстве и заключается основ-
основная идея алгоритма: если в методе Диксона Q(m) < n, то в методе
Бриллхарта—Моррисона |Q(m)| существенно меньше (не превосходит
2у/п). Следовательно, вероятность того, что Q(m) будет гладким (т. е.
разложится в нашей факторной базе), из эвристических соображений
значительно выше.
Замечание 3.13. Если р — простое число из факторной базы
и р | Q(rrii) для некоторого номера i, то p\Qi, поскольку (/>,-, (?,•)= 1.
Тогда Q2n = Pf (mod р), откуда и следует условие (-) = +1.
Приведем оценки сложности алгоритма Бриллхарта—Моррисона,
следуя работе [ ]. При получении этих оценок делаются некото-
некоторые эвристические допущения. Например, предполагают, что если
с помощью алгоритма построено 1 + [log2 n] пар (х, у) таких, что
х2 = у2 (mod n), то хотя бы для одной из них выполнены неравенства
1 <НОД(х±г/, п).
§ 3.4. Квадратичное решето 87
Утверждение 3.14. Если а= 1/л/2 и факторная база состоит
из р = — 1 и всех простых чисел р таких, что
то при вычислении Lb подходящих дробей (где b = а+ — ] можно
ожидать, что алгоритм разложит п на два множителя с эври-
эвристической оценкой сложности Ln -; л/2 арифметических опе-
операций.
Утверждение 3.15. В условиях утверждения 3.14 использова-
использование стратегии LP дает ту же оценку сложности алгоритма
(но на практике эту стратегию следует использовать обяза-
обязательно).
Утверждение 3.16. Использование стратегии PS при a=—j=,
1 V6
b = a+— дает эвристическую оценку сложности алгоритма
. rl /31 ,
"9' \/9 аРиФметических операции.
Утверждение 3.17. Использование стратегий PS, EAS с k
обрывами и алгоритмом решения линейной системы уравнений
от k неизвестных в Z/2Z за O(kx) арифметических операций
при X < 5/2 дает эвристическую оценку сложности алгоритма
Ln -; J-\ арифметических операций.
Метод Бриллхарта—Моррисона существенно менее эффективен,
чем метод квадратичного решета, о котором мы расскажем в следую-
следующем параграфе.
§ 3.4. Квадратичное решето
Алгоритм квадратичного решета был предложен К- Померансом
в начале 1981 г. (см. [ ; ; ]). Ряд усовершенствований этого
метода был предложен впоследствии в работах [ ; ; ; ; ;
; ], см. также [ ].
Эвристическая оценка сложности усовершенствованного алгоритма
1
квадратичного решета составляет Ln -; 1 арифметических операций.
Рекордное значение для факторизованных этим методом чисел состав-
составляет 129-значное RSA-число п (см. [ ]).
88 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
Опишем схему исходного алгоритма квадратичного решета Поме-
ранса. Мы по-прежнему будем строить соотношения X2 = Y2 (mod n)
и проверять выполнение неравенства:
1 < НОД(^ ±Y,n)< п.
Для этого рассмотрим многочлен
Q(x) = {x+ [Vn]J -n = H{xf (mod n),
где И(х) =х+ [^/п] . Значения Q(x) в целых точках, очевидно, являются
квадратами по модулю п. Коэффициенты Q{x) невелики, порядка я1/2.
В качестве факторной базы 5 рассматриваем ро = — \ и все простые
числа pi, Pi^B, такие, что (—) =+1. Затем с помощью некоторого
просеивания мы находим значения Xj, для которых
т. е. Q(Xj) раскладывается в нашей факторной базе. Тогда, обозначая
Bj = H(xj), получаем сравнение В2 =A-t (mod n), и, накопив достаточно
много таких соотношений, мы проводим исключение переменных и по-
построим соотношение X2 = Y2 (mod n) так же, как в алгоритме Диксона.
Замечание 3.18. Условие I - ] =+1 для простых чисел р из фак-
факторной базы следует из сравнения (х+ [у/п]J = п (mod p), которое
должно будет выполняться для некоторого х € Z.
Просеивание. Значения хь € Z, для которых Q{xi) являются глад-
гладкими, определяются следующим образом. Для каждого простого
числа р из факторной базы находим решения rf и r;f уравнения
Q(x) = 0 (mod p) (например, вероятностным алгоритмом, см. гл. 6
настоящей книги). Затем мы меняем х € Z в достаточно большом про-
промежутке [—М; М], М € N, заводим массив, пронумерованный этими
значениями х, и в элемент массива с номером х помещаем достаточно
грубо вычисленные значения log|Q(x)|. Затем для каждого просто-
простого р из факторной базы 5 мы выполняем процедуру просеивания:
из элементов массива, номера которых лежат в арифметических про-
прогрессиях x = rf (mod p) и х = Г2 (mod p), мы вычитаем достаточно
грубо вычисленное значение log/?. Смысл такого вычитания состоит
в том, что для элементов х в этих прогрессиях значение Q(x) будет
делиться на р, но деление Q(x) на р мы пока что заменяем вычитанием
- После окончания процедуры просеивания в элементе
§ 3.4. Квадратичное решето 89
массива с номером х будет содержаться значение
p€S, p\Q(x)
На самом деле необходимо проводить просеивание также и по сте-
степеням простых чисел р1 для нескольких небольших /. То есть надо
находить решения г^'1), г^'1) уравнения Q(x) = 0 (mod р1), и затем в хо-
ходе просеивания из элементов массива с номерами х = rf' (mod pl)
и x = r^'l) (mod pl) проводить вычитание log/?. Тогда после просеива-
просеивания в элементе массива с номером х будет стоять значение
log I <?(*)|- Е п°ёР-
Pes,p'\Q(x)
После завершения процедуры просеивания мы идем по массиву
и берем те номера х, для которых значения элементов массива неве-
невелики по абсолютной величине. Для этих номеров х значение Q(x)
скорее всего разложится в нашей факторной базе и мы факторизуем
теперь число Q(x) пробными делениями и оставляем те х, для которых
Aj = Q(xj) полностью разложится в нашей факторной базе.
Замечание 3.19. Смысл процедуры просеивания заключается
в экономии большого количества операций деления больших це-
целых чисел. То есть, вместо того, чтобы сразу для каждого х € [—М; М]
пытаться разложить Q(x) в факторной базе, мы предварительно с помо-
помощью простых операций сложения и вычитания существенно сокращаем
множество тех х, для которых мы затем будем факторизовать чис-
числа Q(x) пробными делениями. Эта экономия дает на практике очень
существенный эффект, из-за которого метод квадратичного решета
превзошел все предыдущие алгоритмы факторизации.
Замечание 3.20. Поскольку каждое второе целое число делится
на 2, каждое третье на 3 и т.д., то можно не проводить просеивание
по степеням маленьких простых, т.е. например, по рк ^ 100. Вместо
этого, после окончания процедуры просеивания надо брать не просто
маленькие элементы итогового массива, а элементы, не превосходящие
по абсолютной величине некоторой небольшой границы, которая учи-
учитывает невычтенные нами из log|Q(x)| несколько значений Iog2, Iog3,
log5 и т.д.
Замечание 3.21. В алгоритме квадратичного решета следует обя-
обязательно использовать стратегию LP (в книге [ ] рекомендуется ис-
использовать LP с двумя большими простыми числами).
90 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
Силвермен [ ] предложил в методе квадратичного решета исполь-
использовать не один, а несколько многочленов Q{x) вида
Q{x) = Ах2 + 2Вх + С,
где А € N, В, С € Z, В2 - АС > 0, причем п \ В2 - АС. Мы опишем это
усовершенствование квадратичного решета, следуя [ ]. Для многочле-
многочлена AQ(x) выполнено соотношение
AQ(x) = {Ах + ВJ - {В2 - АС) = {Ах + ВJ (mod n).
Для того, чтобы значения Q{x) были невелики, мы проводим просеива-
просеивание по интервалу
D
с центром — -г в вершине параболы (здесь М — некоторый выбираемый
нами параметр). Очевидно, что для х € / справедливы неравенства
Значения Q{x) будут невелики, если
— Q[— -г + М); Q( — -r+M)\. Отсюда находим
Следовательно,
*2Т
откуда А и ^ . Кроме того, п\В2 — АС, и если В2 — АС = п, то
В\\ В2-АС п
Данная величина имеет порядок у/п, если М много меньше, чем у/п.
§3.4. Квадратичное решето 91
Поэтому для выбора многочленов Q(x) мы сперва выбираем М
(М много меньше чем у/п, обычно М вида L<^ „; const ). Затем выби-
выбираем простое число А,
*»# E)-+'-
Далее находим В е Z,
В2 = п (mod A)
(алгоритмы решения квадратных уравнений в конечных простых полях
мы описываем далее в гл. 6). Затем полагаем С = —-:—, и
Q{x) = Ах2 + 2Вх + С.
Замечание 3.22. 1. Технические детали можно найти в [ ].
2. Коен [ ] не рекомендует слишком часто менять многочлены.
3. Можно брать А составным, состоящим из произведения несколь-
ких простых q, для которых 1-1 =+1. шгда для В существует
несколько значений — решений уравнения z2 = n (mod А). Такой вы-
выбор А и В упростит процедуру инициализации перед просеиванием
массива {log|Q(x)|} для данного набора многочленов.
В работе [ ] предложен несколько иной выбор многочленов.
А именно, предлагается выбирать
u(x) = a2x + b, v(x) = a, w(x) = a2x2+ 2bx +с
и затем с помощью просеивания искать значения х,-€ [—М; М], для
которых
2 fXi) (mod n), м(х,J ф v(Xif
и при этом значения да(х,) являются гладкими. Потом с помощью неко-
некоторой техники исключения мы найдем множество индексов / такое, что
П w(Xj) является квадратом. Тогда при
ш
мы получим искомое соотношение
X2 = Y2 (mod n).
92 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
В работе [ ], в отличие от [ ], предлагается часто менять мно-
многочлены и(х), v(x) и w(x). При этом инициализация перед просеива-
просеиванием массива значений {log|tw(x)|} делается некоторым эффективным
«трубочным» способом. Дальнейшее развитие метода [ ] предложено
в работе [ ].
В работе [ ] описано эффективное применение стратегии LP в ме-
методе квадратичного решета.
В работе [ ] описана возможность эффективного распараллели-
распараллеливания алгоритма квадратичного решета на несколько компьютеров.
Вывод. Метод квадратичного решета с использованием несколь-
нескольких многочленов является эффективным и достаточно легко реализу-
реализуемым на компьютере алгоритмом. Он, по-видимому, является наилуч-
наилучшим из известных алгоритмов факторизации произвольных чисел п € N,
п < 10110, если не считать метода факторизации с помощью эллиптиче-
эллиптических кривых (см. далее гл. 4), который в некоторых случаях может
сработать быстрее. Однако для чисел п, больших 10110, алгоритмы
решета числового поля работают быстрее метода квадратичного ре-
решета. Об этих алгоритмах мы расскажем далее в § 3.6. Заметим, что
сравнение эффективности квадратичного решета и алгоритмов решета
числового поля было проведено в работах [ — ], см. также [ ].
§ 3.5. Методы Шнорра—Ленстры
и Ленстры—Померанса
В этом параграфе мы вкратце опишем два субэкспоненциальных
вероятностных алгоритма для факторизации целых чисел. Один из них
принадлежит Ленстре и Померансу [ ], другой—Ленстре и Шнорру,
см. [ ; ].
Алгоритм Шнорра—Ленстры был первым субэкспоненциальным
алгоритмом, для которого требуется лишь небольшой объем памяти
компьютера. Объем памяти здесь составляет величину O(\ogn) би-
битов, а в методах, описанных в предыдущих параграфах, этот объем
субэкспоненциален. Сложность метода составляет в среднем Ln -; 1
арифметических операций; алгоритм является вероятностным. Алго-
Алгоритм работает с бинарными квадратичными формами отрицательного
дискриминанта и с помощью некоторого случайного выбора ищет ам-
бигову форму в группе классов квадратичных форм. Эта форма может
дать разложение п на множители; в случае неудачи следует сделать
следующий случайный выбор.
§ 3.6. Алгоритмы решета числового поля 93
Отметим, что на практике алгоритм Шнорра—Ленстры никогда ак-
активно не использовался. Алгоритм Ленстры для факторизации с по-
помощью эллиптических кривых (о котором см. 4) имеет ту же оценку
сложности и так же требует немного памяти, но групповые операции
на кривой выполняются значительно быстрее, чем операции в груп-
группе классов квадратичных форм. Поэтому алгоритм Ленстры считается
значительно более эффективным и активно используется на практике.
Алгоритм Ленстры—Померанса также является вероятностным
и раскладывает п на множители в среднем за Ln -; 1 арифметических
операций. Этот алгоритм, так же как и алгоритм Шнорра—Ленстры,
работает с группой классов бинарных квадратичных форм отри-
отрицательно дискриминанта и также ищет амбигову форму. Однако
оценка сложности алгоритма Ленстры—Померанса является строгой
и не использует недоказанные гипотезы и эвристические рассуждения.
Более того, в работе [ ] показано, что для некоторой бесконечной
достаточно плотной последовательности натуральных чисел п эвристи-
эвристические рассуждения, лежащие в основе оценки сложности алгоритма
Шнорра—Ленстры, являются неверными. Поэтому фактически у нас
нет сейчас оснований считать, что алгоритм Шнорра—Ленстры имеет
указанную выше оценку сложности.
Заметим, что алгоритм Ленстры—Померанса, как и алгоритм
Шнорра—Ленстры, никогда активно не использовался на практике.
§ 3.6. Алгоритмы решета числового поля
Алгоритм решета числового поля для факторизации целых чи-
чисел специального вида (special number field sieve, или SNFS) был
впервые предложен в 1990 г. в работе [ ]. С его помощью было
разложено на множители число Ферма /"д=2512+1, записываемое
155 десятичными знаками (см. об этом [ ]). Эвристическая оцен-
оценка сложности составляет Ln[l/3; с] арифметических операций при
с= C2/9I/3 = 1,5263... Числа п, к которым применяется SNFS, име-
имеют вид п = f — s, где г € N, s € Z, г и \s\ невелики.
Впоследствии метод был обобщен и применен для факторизации
произвольных целых чисел. Он получил название general number field
sieve или, сокращенно, GNFS. Оценка сложности также составляет
Ln[l/3; с] при некоторой постоянной с.
В настоящее время рекордным значением для натуральных чисел,
разложенных с помощью SNFS, является число специального вида,
94 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
записываемое 227 десятичными знаками, см. [ ]. Для RSA-чисел п,
не имеющих специального вида, рекордные разложения были найдены
в 1999 г.: сначала было разложено 140-значное RSA-число (см. [ ]),
а затем 155-значное RSA-число E12 битов), см. [ ]. На факториза-
факторизацию этого последнего числа потребовалось около 8400 mips-year1.
Метод решета числового поля и его усовершенствования описаны
в ряде работ, см. [;;;;;;;;;;;
; ]. В настоящее время, согласно [ ], это самый эффективный
метод факторизации для чисел п> 10110 (сравнение NFS с методом
квадратичного решета см. в конце § 3.4); см. об этом также обзоры [ ]
и[ ].
Фактически решето числового поля не является алгоритмом. Это
метод вычисления, состоящий из нескольких этапов, и каждый из этих
этапов обслуживается несколькими алгоритмами. Подробное описание
SNFS и GNFS выходит далеко за рамки данной книги. Для того, что-
чтобы читатель получил представление о методе решета числового поля
и об используемым этим методом средствах, мы схематически опишем
факторизацию числа Ферма F9, следуя работе [ ].
Далее в этом параграфе мы предполагаем, что читатель знаком
с основами алгебраической теории чисел в объеме, например, кни-
ги[ ].
Обозначим N = F$ = 2512 + 1. Еще в 1903 г. был найден простой
делитель pj = 2424833. Мы обозначим п = N/pj. Это число было далее
разложено с помощью SNFS на два сомножителя: я = /?4д- /?д9. Для
этого потребовалось около 700 рабочих станций и один суперкомпьютер
для решения системы линейных уравнений; работа заняла несколько
месяцев. Предполагалось предварительно (хотя это и не проверялось),
что п не есть степень простого числа; это допущение в конечном счете
оказалось верным.
Схема метода SNFS для п.
1 этап. Выбор факторной базы.
Факторная база состоит из некоторого множества элементов
ар € Z/nZ, ар ф 0, где р пробегает некоторое конечное множество ин-
индексов Ро. Все ар обратимы в Ъ/пЪ (иначе был бы найден делитель п).
Обозначим через Zp° множество |Р0|-мерных векторов:
1 Mips (англ.) — сокр. от million instructions per second — миллион команд в секунду
(единица измерения быстродействия ЭВМ); year—год, mips-year — единица измерения
числа операций за год.
§ 3.6. Алгоритмы решета числового поля 95
Рассмотрим отображение
/: Zp° -+ (Z/nZ)*, /((ир)реРо) = П а? (mod «)•
Это отображение на, если {ар} порождают (Z/nZ)*; обычно так и бы-
бывает, хотя доказать это, как правило, достаточно сложно.
2 этап. Нахождение соотношений.
Здесь мы ищем векторы и€Кег/, т.е. такие v = (vp)p&p0, для ко-
которых
Y[ ар = 1 (mod n).
per о
Нам нужно найти достаточно большое множество V = {v € Кег/} этих
векторов, точнее, \V\ должно быть немного больше |Ро|.
3 этап. Нахождение зависимостей.
Здесь мы ищем нетривиальную линейную зависимость по модулю 2
найденных векторов v € V; их количество больше, чем их размерность,
поэтому такая зависимость существует. Для ее нахождения мы решаем
систему линейных уравнений
^2zjVj = ~O (mod 2),
где V={i)j}. Это большая разреженная система линейных уравнений
над полем Z/2Z. Решив ее, мы тем самым найдем непустое подмноже-
подмножество W С V, для которого
^^ = * (mod 2).
vew
Тогда да = - J^ v — есть вектор с целыми коэффициентами, причем
2 vew
2да е Кег/. Это означает, что при X = f(W) (mod n) выполнено срав-
сравнение
X2=f{2W)=l (mod я).
Тогда мы проверяем, выполняется ли неравенство
Если да, то делитель п найден, и мы останавливаемся. Иначе возвра-
возвращаемся либо на 2 этап (находим новые соотношения), либо на 1 этап
(строим новую факторную базу).
Конец схемы.
96 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
Для факторизации нашего числа п = Fy/pj рассматривается чис-
4
ловое поле K = Q(v^2). Элементы C поля К имеют вид C = ^ qi(\f2I,
i=0
где Qi ? Q; им соответствуют векторы (до, Я\, Яъ Яз, Яа) € Q5- Сложение
таких элементов (векторов) проводится покоординатно, а умножение
выполняется с помощью соотношения (v^2M = 2. Мы обозначаем че-
через NormC норму алгебраического числа C € К в поле К; символом (З^
мы обозначаем элемент ау(C), где аь аг, аз, ga, as—все изоморфизмы
К в С.
Лемма 3.23. Пусть 1 < / < 4, а, 6 е К. 7Ъг<Эа Norm(a - (^2)^) =
= а5 - 2'б5.
Доказательство. Поскольку Oj{\/2I — корни многочлена х5 — 2',
выполняются равенства
Norm(a - (^2)lb) = b
/=1
Лемма доказана. ?
Обозначим через Zk кольцо целых алгебраических чисел поля К;
можно доказать, что Zk = Z[v//2]. Зафиксируем границу гладкости
В € К>о (это достаточно большое число).
Определение 3.24. Число C € ZK называется В-гладким, если
NormCeZ является В-гладким числом (т.е. NormC = ± fl РГр>
р — простое,
где гр е Z^o)- р~~~
Пусть R — коммутативное кольцо с единицей, ф — кольцевой гомо-
гомоморфизм:
Тогда для с = ф(-^2) € N выполнено равенство с5 = фB) = 2е R.
Обратно, если найдется элемент с € R такой, что с5 = 2 ? R, то мы
можем определить кольцевой гомоморфизм ф : Z[v^2] —>• R соотношени-
соотношениями фA) = 1, ф(\/2)=с.
Пример 3.25. Для n = F^/pj мы положим R = Z/nZ, c = 2205 (mod n).
Так как 2512 = —1 (mod я), то с5=21025=2 (mod я). Поэтому суще-
существует гомоморфизм ер : Z[v^2] —>• Z/«Z такой, что срA) = 1, (p(-v^2) =
= 2205 (mod я).
Лемма 3.26. Пусть р — простое число, рф\ (mod 5). Тогда
в Ъ/рЪ существует единственное с такое, что с5 = 2 (mod /?).
§ 3.6. Алгоритмы решета числового поля 97
Доказательство. Существует единственное k € N такое, что 5k =
= 1 (mod p — 1), 1 <&</?— 1. Тогда, если f(x) и g(x) — отображения
Z//?Z в себя, /(х)=х5, g(x) = xfc, то f(g(x))—тождественное отобра-
отображение. Следовательно, f(x) есть отображение на, откуда следует наше
утверждение. ?
Лемма 3.27. Если р = 1 (mod 5), то в Ъ/рЪ либо нет ни одно-
одного такого с, что с5 = 2 (mod p), либо есть 5 таких элементов
, что с5 = 2 (mod р). Если обозначить их через cq, ..., с\,
p-i.
то су = со • а 5 , где а — первообразный корень по модулю р.
Теперь рассмотрим ненулевые идеалы 25 в дедекиндовом кольце
Zm = Z[v^2]. Норма идеала 25 определяется равенством Norm25 =
= |ZK/25|.
Норма мультипликативна, т. е. Norm 2125 = Norm 21 Norm 25. Можно
доказать, что поле К одноклассное, т. е. группа классов идеалов состо-
состоит из одного элемента; другими словами, любой идеал в Zk является
главным.
Пусть ф ф @) — простой идеал ZK. Тогда ZK/*P = GF(pk) для неко-
некоторого простого числа р и натурального k.
Определение 3.28. Простой идеал ф называется простым идеа-
идеалом первой степени, если ZK/*p = GF(p), где р — простое число.
По теореме Куммера простые идеалы первой степени в Zk имеют
вид ф = (р, \/2 — с), где р — простое число, с € Z, f(x) = х5 — 2, /(с) =
= 0 (mod p). При этом для естественного гомоморфизма ZK —> ZK/*P =
= GF(p) элемент \/2 переходит в \/2 = с (mod p), и с5 = 2 (mod p).
Лемма 3.29. Если рф 1 (mod 5), то в кольце ZK существует
единственный простой идеал ф нормы р. При этом для элемен-
элемента tzGZk равенство ф = (л) справедливо тогда и только тогда,
когда \ Norrrm:| = р.
Доказательство. По теореме Куммера простые идеалы ZK, лежа-
лежащие над р, имеют вид ф,- = (р, /,-(v^2)), где/,(х) е Ъ\х\ —унитарные мно-
многочлены, fi(x) (mod р) неприводимы в Ъ/рЪ\х\, и f(x) = П ff{x) (mod p).
Кроме того, Norm*p,- =pdes/«W, Следовательно, ф,-—простой идеал
первой степени тогда и только тогда, когда /,(х)—линейный много-
многочлен. Но f(x) (mod p) по лемме 3.26 имеет единственный линейный
множитель; из этого следует единственность ф.
Далее, если ф = (тс), то Norm*p= | Norrrm:| =p. Обратно, если
NormTi| = Norm(Ti) =р, то из разложения идеала (л) в произведение
простых идеалов, мультипликативности нормы и единственности ф
следует, что (л) = ф. ?
7 О. Н. Василенко
98 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
Пример 3.30. Пусть р = 2. Тогда f(x) = х5 - 2 = х5 (mod 2), B) =
= B, уУ2M = ф5, где ф = (у/2) — простой идеал первой степени. При
этом Z/ф = Z/2Z.
Пример 3.31. Пустьр = 3,/(х)=л;5-2 = л;5 + 1 (mod 3) = (х + 1) х
х (х4 — х3 + х2 — х + 1) (mod 3). Тогда ф = C, \/2 +1) — единственный
простой идеал первой степени нормы 3. Далее, для элемента тг = 1 + уУ2
с помощью леммы 3.23 находим, что Norm ti = 3. Поэтому ф =
)
Определение 3.32. Пусть р — простое число, с € Z/pZ, с5 =
= 2 (mod p). Через \fPiC мы будем обозначать кольцевой гомомор-
гомоморфизм ФР)С: ZK^Z/pZ, определяемый равенством *PiC(v^2) = c.
Лемма 3.33. Пусть ф — простой идеал первой степени в Щу/2],
%$= (р, у/2 — с), где р — простое число, с5 = 2 (mod р). Пусть
тг € Щу/2\. Равенство ф = (л) имеет место тогда и только тогда,
когда \ Norm л | = р и Ф^Дл) = 0.
Доказательство. Очевидно, что
Поэтому КегФР)С — простой идеал в ZK, содержащий р и у/2 —с; сле-
следовательно, КегФР)С = ф.
Если | Norrrm:| =ри *PiC(ti) = 0, то тг € ф и нормы (л) и ф совпадают,
откуда (тг) = ф.
Если же ф= (л), то л е ф, откуда Фр,с(тт:) =0. При этом равенство
| Norrrml = p очевидно. ?
Пример 3.34. Пусть тг = \ + (у/2J - 2(y/2f, Nornm = -151, p =
= 151 —простое число. Если с = 116, то с5 = 2 (mod 151). Нетруд-
Нетрудно убедиться в том, что Ф151,иб(л) = 0 (mod 151). Поэтому ф =
= A51, \/2 — 116) = (тг) —простой идеал первой степени в Zr.
Следствие 3.35. С помощью леммы 3.33 можно находить обра-
образующие простых идеалов первой степени в ZK.
Определение 3.36. Число s e ZK называется единицей поля К, ес-
если s € Zr.
По теореме Дирихле о единицах любая единица е поля К имеет вид
е = ±е/1|е^2, /i,/2ez,
где si и ?2 — основные единицы поля К.
Поскольку поле К одноклассное, то любой ненулевой простой иде-
идеал ф имеет вид ф = (тт:<р) для некоторого тс«р € Zr. Тогда для любого
§ 3.6. Алгоритмы решета числового поля 99
элемента р € ?<к \U из разложения
следует равенство
где s — единица поля К. При этом также | NormC| = Yl I
Ф
Пример 3.37. Пусть р = -1 + (\/2L, Normp = 15. Тогда (Р) = <
где фь фг — простые идеалы нормы 3 и 5 соответственно. Такие идеалы
единственны, причем ф( = A + ^2) (пример 3.31), а фг = A + (\^2J)-
Поэтому -1 + (л/2)А = si A + у/2){\ + (^2J), откуда мы находим,
что si = — \ + \/2. Элемент si является единицей поля К, причем
Normsi = 1.
Пример 3.38. Пусть р = 1 + (v^2K. Тогда, аналогично примеру 3.37,
находим 1 + (Щ3 = е2A + Щ2, и е2 = -1 + (^2J - (Щ3 + (Щ4 -
еще одна единица поля К, Norms2 = 1.
Далее в алгоритме решета числового поля для факторизации
п = F9/p7 авторы [ ] считали, что найденные в примерах 3.37 и 3.38
единицы Е| и Е2 являются основными единицами поля К. При этом
никаких противоречий в ходе работы алгоритма не возникало, и он
успешно завершил работу. Заметим, что существуют алгоритмы по-
построения основных единиц числового поля (см. [ ]), однако в данном
случае они не применялись.
Пусть s — произвольная единица поля К. Тогда s = Sq°Sj's22, где
so = — 1, а единицы si, ?2 были найдены нами в примерах 3.37 и 3.38;
Vj € Z. Нам далее нужно уметь находить vq, V\, v% зная s. Очевидно,
что vq = 0, если Norm е > 0; vq = 1, если Norm e < 0. Положим
2m+log2
Xl=e(loS2)/5; ¦k2 = e 5 ) ХЬХ2еС,
и рассмотрим кольцевые гомоморфизмы
= X/, /'=1,2. Тогда при /'=1,2 справедливы равенства
log |Ф/(е)| =V\ log I Фу (е i) | +i>2 Iog|\l//(s2)|, и можно показать, что опре-
определитель матрицы | log|\I//(?ft)| |. k[ 2 отличен от нуля. Поскольку
vi, V2 — целые числа, то с помощью приближенных вычислений мы
сможем их найти, зная е.
100 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
Теперь осуществим первый этап алгоритма — построение фак-
факторной базы. Мы выбираем границу гладкости В =1294973 для
n = F9/p7. Рассматриваем все простые числа р^В. Для каждого р
ищем c€Z//?Z, с5 = 2 (mod p), и составляем таблицу пар (р, с), со-
соответствующих простым идеалам первой степени ф= (р, \/2 —с). Для
нахождения с можно применять вероятностный алгоритм решения
уравнения f(x) = O (mod p) (см. гл. 6). Точнее, если рф\ (mod 5),
то с = 2к (mod р), где 5k = 1 (mod p— 1). Если же р = 1 (mod 5),
то сперва проверяем выполнение сравнения 2(р~1)/5 = 1 (mod p). Ес-
Если оно не выполняется, то уравнение с5 = 2 (mod p) неразрешимо;
в противном случае для решения х5 — 2 = 0 (mod p) применяем веро-
вероятностный алгоритм.
После нахождения множества простых идеалов первой степени
ф= (р, \/2 —с) мы должны найти ттлр eZK, такие, что ф= (ттлр). Для
этого можно использовать следующий перебор. Рассмотрим множество
rt € Z, rt < const
(=0
Теоретические оценки для значения const в определении Т можно из-
извлечь из результатов [ , гл. 2]. Для лёГ вычисляем Norm п. Если
Norm ti = р — простое число и р ^ В, то затем мы перебираем простые
идеалы первой степени ф, делящие данное р, т. е. ф = (р, \/2 — с). Если
такой идеал ф единственен, то л = тс«р — его образующий. Если же таких
ф несколько, то п — образующий того из них, для которого ФР)С(т1) =0
(по утверждению 3.33).
На деле авторы [ ] использовали несколько более тонкий
4
перебор: перебирали Ti = ^s,-a', где а = —{\^2K. Здесь s,-—вза-
(=0
имно простые целые числа, причем s,-^0, если s,-+i =... =S4 = 0,
4
и 2_, s(- • z ' %s юиии.
(=0
С помощью этого перебора было найдено 49 726 образующих про-
простых идеалов первой степени. Всего затем было найдено 99 500 об-
образующих простых идеалов первой степени для нашей таблицы пар
(р, с) ^ ф. Оставшиеся образующие искали аналогичным перебором
идеалов аф нормы 8 Norm*p (здесь а = —(v^2K); т. е. находили элемен-
элементы тг' нормы 8р и, поделив тг' на а, находили образующие тт:<р.
Далее можно считать (заменяя при необходимости тт:<р на —л<р), что
§3.6. Алгоритмы решета числового поля 101
Теперь рассмотрим гомоморфизм ср:
ср : Ъ\Ш\ -> Z/nZ,
срA) = 1 (mod п), ф(^2) = 2205 (mod n), из примера 3.25. При а = -(^2K
ф(а) = -2615 = 2103 (mod n),
поскольку 2512 = —1 (mod n). Величина 2103 имеет порядок я1/5,
и из этого в дальнейшем мы извлечем немалую пользу. Заметим,
что при а, Ь € Z верно сравнение
ф(а + Ьа) = а + 2mb (mod n).
Факторная база Ро, которую мы строим сейчас, будет состоять из:
1) 99700 простых чисел р, р < В{ = 1295377;
2) so = — 1, si, ?2 — из примеров 3.37 и 3.38;
3) Titp — образующих для 99 500 простых идеалов первой степени
ф С ZK, Norm«p < B2 = 1294973.
Для любого индекса р € Ро мы полагаем
ар = ф(р) е Z/nZ,
и это есть завершение 1 этапа алгоритма.
Теперь опишем 2 этап алгоритма — нахождение соотношений. Три-
Тривиальные соотношения вида Sq = 1 и 2 = (v^2M мы не используем. Да-
Далее, имеется 4944 простых числа р из нашей факторной базы, для
которых f(x) = х5 — 2 (mod p) разлагается на линейные множители. Для
этих р справедливо равенство
р = е П ЛЧЗ'
У\(р)
где Titp — найденные нами образующие простых идеалов ф, a s — еди-
единицы поля К. Для s мы находим представление s = Sj1 • s^2 с помо-
помощью приближенных вычислений (как это было описано выше); so = — 1
не входит в это представление, так как р > 0 и все тс«р положительны
по построению. Отсюда получаем соотношения
У\(р)
Эти соотношения составили приблизительно 2,5% от всех соотноше-
соотношений, построенных на 2 этапе.
102 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
Дальнейшее построение соотношений происходит с помощью мето-
методов решета. Мы перебираем пары a, ft € Z, ft > 0, такие, что
1)НОД(а, ft) = l;
2) |a + 2103ft| = |cp(a + fta)| является В[-гладким числом, за исклю-
исключением, может быть, одного простого делителя р\, В\ <р\ < 108;
3) \а5 — 8Ь5\ является Вг-гладким, за исключением, может быть,
одного простого делителя рч, Вч<рч< Ю8.
Если р\ и р2 отсутствуют, то пара a, b дает нам полное соотноше-
соотношение; в противном случае соотношение называется частичным. Заметим,
что поскольку Norm(a + ba) = a5 — 8b5, то при p<z = 1 число а + ba яв-
является Вг-гладким.
Лемма 3.39. Пусть a,b&Z, (a, ft)=l. Тогда любой простой
идеал ф кольца ZK, делящий а + ba, является простым идеа-
идеалом первой степени. При этом, если разложение Norm(a + ba)
на простые множители имеет вид
k=i
то идеал (а + ba) в кольце ZK раскладывается на простые идеалы
следующим образом:
k=i
Здесь Q.k I (qk) и при k>2 определяется по формуле
Uk = (qk, л/2-2-1{аЬ~1J (mod qk)),
а при qh = 2 идеал Q.k =
Доказательство. Пусть р > 2 — простое число, ф — простой иде-
идеал, такой, что ф | (р) и ф | (а + ba). Поскольку (а, Ь) = 1, то р\Ь. Сле-
Следовательно, ab~l (mod p) € ф, откуда
(ab~l (mod pjf - а2 = (ab~l (mod pjf - 2^2 e ф,
л/2 - B (aftJ) (mod p) € ф.
По утверждению 3.23, Norm(a + ba) = a5 — 8b5. Поскольку a5 — 8b5 =
= 0 (mod p), то
B (aftJM-2 = 0 (modp).
§3.6. Алгоритмы решета числового поля 103
Положим с = 2~l(ab~1J (mod р). По теореме Куммера ?2 = (р, уУ2 — с)
является простым идеалом первой степени, причем ?2 ? ф. Следова-
Следовательно, ?2 = ф — простой идеал первой степени.
Мы показали также, что для каждого простого числа p = qt, де-
делящего Norm(a + 6a), простой идеал ?2^ в ZK, делящий а + ba и qk,
определен однозначно по указанной в лемме 3.39 формуле. Отсюда сле-
т
дует равенство (а + Ьа) = П ^-t ¦ ^
k=i
Следствие 3.40. Лемма 3.39 сводит факторизацию идеа-
идеала (а + ba) (где (a,b)=l) на простые идеалы к целочисленной
факторизации нормы Norm(a + ba) = a5 — 8b5 на простые числа
следующим образом. Пусть
(a + ba) =
ф — простые идеалы
Тогда по лемме 3.39 Norm*p — простое число, и
Norm(a + ba) = ]J(Norm ф)**.
Пусть ф — простой идеал, делящий а + ba, Norm ф = р — простое
число.
1) Если рф 1 (mod 5), то для данного р идеал ф единственен
по лемме 3.29; тогда k<$ = v<p((a + ba)) = vp(a5 — 8b5).
2) Если р = 1 (mod 5), то сначала надо выяснить, для како-
какого с из имеющегося набора значений простой идеал ф = (р, у/2 — с)
входит в разложение идеала (а + ba). Воспользуемся отображе-
отображением Ф из доказательства леммы 3.39. Тогда
2) (mod«P),
и если ф | (а + ba), то
Ф(а + 6а) = аФA) + 6Ф(а) = 0 (mod p).
Отсюда
Ф(а) = с3 (mod P) = \ (mod p).
Поэтому 2
cQ = 2c=[l) (mod/7),
= 2~1 (
откуда с = 2~1 (-) (mod р) определяется по a, b и р однозначно.
Тогда для этого с ф = (р, \/2 - с) и v<p(a + ba) = vp{a5 - 8b5).
104 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
Итак, мы можем находить разложение идеала (а + Ьа) в произве-
произведение простых идеалов кольца ZK.
Вернемся теперь к нахождению соотношений на 2 этапе алго-
алгоритма. Пусть (а, Ь) = 1 и пара a, b дает полное соотношение, т. е.
a + 2l<i3b\ является Bi-гладким числом и Norm(a + Ьа) = а5 — 8Ь5
является Вг-гладким числом. Тогда имеют место следующие соотно-
соотношения.
1) а + Ьа = s П tuj* , где е — единица, ф — простые идеалы, Normф <
V
^^2- Описанным выше способом мы находим показатели м<р. Затем
вычисляем
V
и находим разложение для е:
s — е0 е, е2 .
Показатель vo определяется знаком е, а v\ и V2 мы находим с помощью
приближенных вычислений, как это было описано ранее.
2) а + 21036 = ± YI РШр> и 9ТО разложение мы находим с помощью
просеивания, о котором будет сказано чуть позже.
Теперь применим отображение ср из примера 3.25. Тогда
± Y[ pWp = а + 2тЬ = <?(а + ba) (mod n) =
2
^Пф^'ПфЫ3 (mod я),
(=0 ф
и это есть соотношение между элементами факторной базы, которое мы
построили на 2 этапе алгоритма.
Мы ограничились рассмотрением пары а, Ь, дающей полное соотно-
соотношение. Если соотношение частичное, т. е. появляются дополнительные
простые числа р\, р2, то далее с помощью некоторой техники исклю-
исключения из нескольких таких соотношений делают одно полное соотно-
соотношение. Здесь используется теория графов; мы не рассматриваем эту
технику в деталях.
Накопив достаточно много соотношений, мы переходим к 3 этапу
алгоритма и находим X € Z, X2 = 1 (mod n), с помощью решения систе-
системы линейных уравнений над полем Z/2Z. При факторизации п = F^/pj
использовалось структурированное гауссово исключение для решения
систем линейных уравнений над Z/2Z (см. об этом гл. 11).
§3.6. Алгоритмы решета числового поля 105
Теперь объясним, как проводилось нахождение пар a, b € Z,
(а, Ь) = \, таких, что a + 2l<i3b и а5 — 8Ь5 являются В[- и Вг-глад-
кими числами соответственно. Для этого использовалось просеивание,
аналогичное просеиванию в методе квадратичного решета из § 3.4.
Зафиксируем Ь, 0 < b <2, 5 • 106. Выберем некоторый отрезок
[—А; А] (где А зависит от Ь), в котором будут изменяться значения а.
Заводим массив, пронумерованный элементами а€[—A; A], a€Z,
(a, b) = 1. В элемент массива с номером а мы заносим достаточно гру-
грубо вычисленное значение log|a + 21036|. Далее для каждого простого
числа р, р ^ В\, мы идем по арифметической прогрессии номеров а, для
которых а + 2тЬ = 0 (mod р), т. е. а = ао(р) + jp, j € Z. Из элементов
массива с номерами а вычитаем грубо вычисленное значение log/?.
Аналогичное просеивание делаем для некоторых степеней рк простого
числа р: в прогрессии a + 2l<i3b = 0 (mod pk) из элементов массива
с номерами а также вычитаем log p.
После того, как мы проведем просеивание по всем р, в нашем мас-
массиве образуются некоторые результирующие значения. Если элемент
массива с номером а окажется маленьким, то, скорее всего, а + 21036
будет В\ -гладким числом. Тогда мы факторизуем а + 21036 пробными
делениями на р ^ В\. Если а + 21036 окажется В\-гладким, за исключе-
исключением, может быть, одного простого р\, В\ <pi < 108, то мы сохраняем
пару a, b в некотором массиве М.
Замечание 3.41. На деле просеивание происходит более тонким
способом, но мы не будем здесь это обсуждать. Читатель может об-
обратиться к оригинальной работе [ ] за дальнейшими разъяснениями.
Теперь для пар a, b из массива М мы проводим аналогичное про-
просеивание для нахождения Вг-гладких чисел а5 — 8b5 = Norm(a + ba).
В итоге мы найдем некоторое множество пар а, Ь, дающих полное или
частичное соотношение.
Для факторизации я = /7д/р7 было найдено 44106 полных соотно-
соотношений и 2 903 999 частичных соотношения. Для этого использовалось
около 700 рабочих станций в течение около 5 недель. Было затрачено
примерно 340 mips-year. Затем решение системы линейных уравнений
над полем Z/2Z заняло около 6 недель на суперкомпьютере. В итоге п
разложилось на два множителя, простота каждого из которых была
проверена с помощью алгоритма Ленстры—Коена (см. гл. 1). На этом
факторизация числа Ферма Fg была завершена.
Замечание 3.42. Нам осталось лишь пояснить, каким образом
было выбрано числовое поле K = Q(-v^2) для факторизации чис-
числа п = Fg/рт. Мы опишем выбор числового поля для факторизации
106 Гл. 3. Факторизация целых чисел с субэкспоненциальной сложностью
числа п вида n = re — s, следуя [ ]. Выбираем небольшое deN
(обычно d = 3, 5, 7) и затем полагаем k равным наименьшему нату-
натуральному числу, для которого kd ^ е. Пусть t = s ¦ rkd~e; t — небольшое
целое число. Положим
f(x)=xd-t, m = rk^nl/d.
Тогда f(m) = md - t = rkd - srkd~e = 0 (mod n). Если f(x)?Z[x] яв-
является неприводимым многочленом, то мы полагаем K = Q(ot), где
а € С, /(а) = 0. Очевидно, [К: Q] = d.
Дальнейшая работа алгоритма проводится в кольце Z[a] С ZK.
В нашем распоряжении также имеется кольцевой гомоморфизм ср,
срA) = 1 (mod n), (p(a) = m (mod n). В случае, когда Z[a] =ZK и по-
поле К — одноклассное (как это было для п = Fg/рт), алгоритмы решета
числового поля работают более эффективно.
На этом мы заканчиваем схематичное описание алгоритмов решета
числового поля для факторизации целых чисел.
§ 3.7. Заключение
Подведем итоги. Если мы хотим факторизовать натуральное чис-
число п, то сначала перебором р = 2, 3, 5, 7, ... до некоторой границы
следует отделить маленькие простые делители нашего числа. Затем
следует проверить, является ли наше число, которое мы хотим фак-
факторизовать, составным. Для этого лучше всего использовать вероят-
вероятностный тест Миллера—Рабина из гл. 1. Если наше число — вероят-
вероятно простое, то нужно попробовать доказать его простоту с помощью
алгоритма Ленстры—Коена из гл. 1. Если наше число — составное,
то можно попытаться получить его разложение на множители с помо-
помощью (Р — 1)-метода Полларда и р-метода Полларда из гл. 2, а также
с помощью метода эллиптических кривых Ленстры (из гл. 4). После
этого для факторизации следует применить метод квадратичного ре-
решета, если наше число п не превосходит 10110. Для чисел большей
величины следует использовать алгоритмы решета числового поля.
Применительно к криптографии с открытым ключом мы видим, что
RSA-модули п, равные произведению двух простых чисел, не являют-
являются безопасными для шифрования при условии яи2512. Согласно [ ]
RSA-модули пи21024 будут оставаться безопасными еще по крайней
мере 15 лет с момента написания [ ], если только не будут найде-
найдены принципиально новые алгоритмы факторизации или не будет создан
эффективный квантовый компьютер.
Глава 4. Применение эллиптических
кривых для проверки простоты
и факторизации целых чисел
§4.1. Введение. Эллиптические кривые
и их свойства
Уже более пятнадцати лет эллиптические кривые активно исполь-
используются в различных криптосистемах, а также в теоретико-числовых
алгоритмах проверки простоты и факторизации целых чисел. В данной
главе мы опишем некоторые основные свойства эллиптических кривых
и их алгоритмические приложения в теории чисел. Подробное изложе-
изложение теории эллиптических кривых можно найти в книгах [ ; ; ].
Применение эллиптических кривых в криптографии описано в кни-
книге [ ], а также в работах [ ; ; ; ; ].
Пусть К — поле, char IK ф2, 3. Эллиптическая кривая над К зада-
задается уравнением
у2=х3 + ах + Ь, где a, b € К, 4а3 + 27Ь2^0.
Она обозначается символом Е или Eaj,. Если К[ —поле, содержащее К,
то мы обозначаем множество точек кривой через
= ?(Ki) = {(х, y)?K2:y2=x3 + ax + b}U {О}.
Здесь О — «ноль» кривой, или «бесконечно удаленная точка». Это
формальная точка, не имеющая координат. Она становится обычной
точкой, только если мы перейдем в проективное пространство. Поло-
Положим х = X/Z, у = У/Z в уравнении кривой; тогда Y2Z = X3 + aXZ2 + bZ3.
Мы получаем точки (X: Y: Z) в проективном пространстве над полем К
(или над К! э К), удовлетворяющие этому однородному уравнению.
Точки, у которых Z ф 0 (можно считать тогда, что Z = 1), соответствуют
точкам (X/Z, Y/Z) аффинной кривой Еа>ь(Щ (или ?a;,(IKi)). Если же
Z = 0, то из уравнения находим, что и ^ = 0. Тогда Y^O и можно
считать, что Y = 1. Эта точка @:1:0) в проективном пространстве
соответствует бесконечно удаленной точке О аффинной кривой.
108 Гл. 4. Применение кривых для проверки простоты и факторизации
На эллиптической кривой над полем К можно определить опера-
операцию сложения ф, относительно которой множества Eaj,(Ki) для полей
К[ D К становятся абелевыми группами. Правила, по которым осу-
осуществляется сложение, таковы.
1. (х,у)фО = (х,у),ОфО = О.
2. (х, у) © (х, -у) = О.
3. Пусть Р=(х\, у\), Q = {x2,y2) и Х\фх2- Проведем «прямую»
через Р и Q:
у = у1+Цх-Х1), ^=gff[-
Найдем точки пересечения прямой и кривой. Это Р, Q и R, где
R= (х3, Уз), Хз —третий корень уравнения
(г/! + Цх -
По теореме Виета
Х1+Х2 + Х3 = ~к2, Хз = -Х[ - Х2 + X2.
Тогда уз = г/i +Цхз — х{). Мы полагаем по определению сумму Рф Q
точек Р и Q равной
P®Q={x3, -уз).
4. Пусть Р= (хо, г/i), Q = (хо, г/г), где у\ ф —г/2- Тогда из уравнения
кривой следует, что у\ =У2^0. Обозначим уо = У\ =У2- Тогда удвое-
удвоение точки Р=(хо, у о), т.е. точка 2Р = Рф Р, определяется с помощью
«касательной». Из уравнения кривой находим, что 2г/ dy = (Зх2 + a) dx.
Касательная к кривой в точке Р имеет вид
У = Уо + Цх — хо), Х=—;т- .
Подставляя уравнение касательной в уравнение кривой, получим урав-
уравнение
(г/о + Цх - х0)J = х3 + ах + Ь;
Хо — его корень кратности два. Поэтому по теореме Виета третий корень
равен хз = —2хо + X2. Отсюда г/3 = У а + Цхз — xq). По определению по-
полагаем 2Р = Р© Р = (хз, -г/з).
Можно показать, что относительно введенной операции сложения
множество fa^pCi) образует абелеву группу. Если поле Ki конечно,
то это конечная абелева группа.
§4.2. Алгоритм Ленстры для факторизации целых чисел 109
Теорема 4.1 (Теорема Хассе). Пусть р — простое число, /? > 3,
Еа,ь — эллиптическая кривая над полем Ъ/рЪ. Тогда
\\Еа,ь{Ъ/рЩ-{р+\)\<2^р.
Величину \Еа>ьA,/рЩ\ можно найти по следующей очевидной фор-
формуле
1 +
v Р
= р+\
(здесь ( - j —символ Лежандра).
Пусть \Еа,ь№/рЩ\ =Р+ 1 — t. Тогда для всех /eN величина
\Ea,b(GF(pi))\ находится по следующей формуле:
\Eafi{GF(pi))\=pi + l-th
где tj удовлетворяют рекуррентному соотношению
tj+i=tit]-ptHi, j>\, h=t, t0 = 2.
В §4.3 мы опишем алгоритмы нахождения порядка группы точек
эллиптической кривой над конечным простым полем.
Определение 4.2. j-инвариантом эллиптической кривой называ-
называется величина
• = /•(?) = 1728-
4а3
4а3
§ 4.2. Алгоритм Ленстры для факторизации целых
чисел с помощью эллиптических кривых
Вероятностный алгоритм Ленстры [ ; ] для факторизации це-
целых чисел с помощью эллиптических кривых имеет среднюю оценку
сложности
для количества выполняемых арифметических операций; здесь р — ми-
минимальный простой делитель п. Если мы заменим р на я1/2, то получим
субэкспоненциальную оценку сложности Ln[\/2; 1]. Метод был усо-
усовершенствован в работе [ ], см. также [ ; ; , гл. 10; ; ].
ПО Гл.4. Применение кривых для проверки простоты и факторизации
С помощью этого метода в 1995 г. было разложено на множители число
Ферма Fio = 21024 + 1 (см. [ ]). Разложение имеет вид
FlO = Р% • Рю • PiO • Р252,
где Pj обозначает простое число, записываемое /' десятичными знаками.
Факторизация заняла приблизительно 240 mips-years.
Заметим, что поскольку приведенная выше оценка сложности алго-
алгоритма Ленстры зависит от величины минимального простого делителя
факторизуемого числа, этот метод может быть эффективно исполь-
использован для отделения небольших простых делителей. Преимуществом
метода является также использование лишь небольшого объема па-
памяти компьютера. Получение оценки сложности алгоритма Ленстры
требует довольно глубоких знаний в области теории эллиптических кри-
кривых и модулярных форм. Однако сам алгоритм описывается достаточно
просто и так же просто реализуется на компьютере. Описание алгорит-
алгоритма Ленстры, кроме указанных выше работ, можно найти в книге [ ].
Для описания алгоритма Ленстры нам потребуются эллиптические
кривые уже не над полем, а над кольцом Z/nZ, где п — нечетное не де-
делящееся на 3 составное число, которое мы хотим разложить на мно-
множители. Рассмотрим тройки чисел (х, у, z) € (Z/nZK, такие, что идеал,
порожденный х, у и z, совпадает с Z/nZ. Это выполняется, напри-
например, при НОД(х, п) = 1. Орбитой такого элемента (х, у, z) € (Z/nZK
называется множество
{(их, иу, uz)\uG(Z/nZ)*};
оно обозначается через (х: у : z). Множество всех орбит мы обозначим
?2(Z/nZ) — это аналог проективного пространства над полем.
Эллиптическая кривая Е = Еа,ь над кольцом Z/«Z задается уравне-
уравнением
у2 = х3 + ах + Ь,
где a, b € Z/nZ, 6Dа3 +2762) е (Z/nZ)*. Обозначим множество точек
кривой через
Е = Eaib(Z/nZ) = {(x:y:z)& ?2(Z/nZ) | y2z = x3 + axz2 + bz3}.
Это множество имеет естественный закон сложения, относительно ко-
которого оно является конечной абелевой группой. Однако мы будем
использовать такие же групповые операции, как для конечного про-
§ 4.2. Алгоритм Ленстры для факторизации целых чисел 111
стого поля (см. §4.1). Именно, мы обозначим
C = @:l:0)eP2(Z/«Z),
Yn = {(x:y:\)\x,y? Z/nZ} U {О}.
Для Р ? Yn и для любого простого числа р, делящего п, мы обозначаем
через Рр точку из V2(Z/pZ), полученную приведением координат точ-
точки Р по модулю р. Очевидно, что Рр = Ор тогда и только тогда, когда
Р = О.
Сложение точек Р, Q e Yn мы будем проводить следующим образом
(считаем, что а задано). При вычислении суммы Р(В Q мы либо найдем
делитель d числа п (и тогда наша цель факторизации п будет достиг-
достигнута), либо найдем точку RGYn, для которой выполнено следующее
условие:
если р\п, а = а (mod p), и если для р найдется b€Z/pZ такое,
что 6Dа3 + 27Ь2) ф 0 в Z/pZ и при этом Рр, Qp € Ea^(Z/pZ), то тогда
Rp = Рр® Qp в Euj}(Z/pZ)\ здесь сумма вычисляется по правилам для
эллиптической кривой над полем, которые были описаны в §4.1.
Замечание 4.3. Если у нас есть точка Р=(х:у:1), есть р и а,
то у2 = х3 + ах + b (mod п). Отсюда Ь = у2 — х3 — ах (mod n) опреде-
определяется по модулю п однозначно. Тогда однозначно определяется и зна-
значение b = b (mod р). Если для каждого р \ п редуцированная точка Qp
попадет на кривую у2 = х3 + ах + b (mod p) над полем Z/pZ, то мы мо-
можем складывать Рр и Qp на кривой над Z/pZ и вычислять сумму Р ф Q
над Z/nZ. Если же для некоторого р точка Qp не попадет на кривую
у2 = х3 + ах + В (mod р), то складывать точки Р и Q нельзя.
Сложение точек Р и Q из множества Yn осуществляется следующим
образом. Если Р = О, то R = Q; если Q = О, то R = Р. Пусть далее Р,
Q^O, Р={хг-УГА), Q=(x2:y2-A). Найдем d = HOJ\(xl-х2, п)
с помощью алгоритма Евклида. Если 1 < d < n, то мы нашли дели-
делитель п, и алгоритм останавливается. Если d=\, то х\фх2 (mod n),
тлх\фхч (mod p) для любого простого числа р, р\п. Тогда (с помощью
обобщенного алгоритма Евклида) найдем (х\ — X2)~l (mod n). Далее
положим
Х = (г/i — У2){Х[ — X2)~l (mod я), v = yi —Xxi (mod я),
хз = —х\ — Х2 + X2 (mod п), г/з = —Ххз — v (mod n).
Тогда по определению сумма Р и Q равна R = Р © Q = (хз : г/з : 1).
Заметим, что в случае d = 1 сумму Р ф Q мы находим по формуле
секущей из §4.1.
112 Гл.4. Применение кривых для проверки простоты и факторизации
Теперь рассмотрим случай d = HOJX(xi — Х2, п)=п. Тогда х\ =
= Х2 (mod n), и сложение надо проводить по формуле касательной.
Найдем d\=WOJ\(yi+уъ, п). Если 1 < d\ < n, то мы нашли дели-
делитель п, и алгоритм останавливается. Если d\ = п, т. е. у\ = — г/2 (mod n),
то положим R = Р ф Q = О. Если d\ = 1, то находим
Xi = Cxf + а)(у\ + г/г) (mod n), v = г/i - Xxi (mod я),
х3 = — 2xi + X2 (mod п), г/3 = —Хх3 — v (mod n)
и полагаем R = Р ф Q = (хз : г/з : 1).
Итак, мы определили сложение точек Yn. Теперь определим умно-
умножение точек Р € Yn на натуральные числа й. В результате этого умно-
умножения мы либо находим делитель d числа п, 1 <d< n, либо получаем
точку R<EYn, удовлетворяющую следующим условиям:
если р — простое число, р\п, а = а mod p, и если для р най-
найдется Ь^Ъ/рЪ такое, что 6Dа3 + Tib2) ф 0 (mod p), и при этом
Рр € Eaj(Z/pZ), то тогда Rp = kPp в группе Ea^(Z/pZ); здесь ЙРР вы-
вычисляется по правилам сложения для эллиптической кривой над полем,
описанным в §4.1.
Замечание 4.4. Вычисление R = kP eVn проводится аналогично
описанному выше вычислению R = Рф Q GYn. При этом бинарный
метод возведения в степень в алгоритме Ленстры не используется;
это означает, что для бинарной записи k = J^ 2'1 мы не вычисляем
kP = ф2/гР, предварительно найдя множество точек 2'Р. Вместо этого
мы рассматриваем разложение k = k\ ...kt B произведение неболь-
небольших натуральных чисел &,-, k\ > k<2 > ... > kt. Именно такие k будут
рассматриваться далее в алгоритме факторизации. Точку kP мы пред-
представляем в виде k[(k2(... (ktP)...)) и вычисляем ее последовательными
умножениями на kj, i = t, ..., 1; здесь уже допустим бинарный метод
вычислений.
Алгоритм факторизации с одной эллиптической кривой.
На входе алгоритма задано факторизуемое число п и парамет-
параметры v, w € N, зависящие от п. Также даны а, х, у ? Ъ/пЪ такие, что
Р= (х: у: 1) € Yn и для Ь = у2—х3 — ах (mod n) выполнено условие
6Dа3 + 2762) € (Z/nZ)*. Алгоритм находит натуральный делитель d
числа п, 1 <d <n.
Для каждого г € N, 2 ^ г ^ да, мы полагаем
e(r) = max{m | m € Z>0, /" < и + 2^ + 1},
§4.2. Алгоритм Ленстры для факторизации целых чисел 113
и затем
г — простое
Пусть Р = (х: у : 1) € Yn. Тогда Р лежит на эллиптической кривой Еа<ь
над Z/nZ, определенной уравнением Y2 = X3 + аХ + Ь. Мы вычисля-
вычисляем точку kP так, как было объяснено выше. Если в ходе вычисления
найден делитель d числа п, 1 < d < п, то мы разложили п на множите-
множители и алгоритм останавливается. Если мы нашли kP и делитель d при
этом не найден, то алгоритм заканчивает работу и выдает сообщение
о неудачной попытке факторизации.
Конец алгоритма.
Замечание 4.5. Как следует выбирать параметры v, да, а, х, у?
Элементы а, х, у ? Z/nZ выбираются случайно; тогда при Ь=у2 —
— х3 — ах (mod n) мы получим эллиптическую кривую Eaj, над Ъ/пЪ
1
и точку на ней. Параметр да теоретически равен w = L(p)^2 ,
где L(i) = exp y/log~71oglog7, p — минимальный простой делитель
числа п. Поскольку р нам неизвестен, но р ^ я1/2, то L(p) ^ L(n1^2) =
= exp((—=+ о(\)) ^/\og~n\og\ogn), откуда получаем верхнюю оценку
На практике следует испытать несколько последовательно увеличиваю-
увеличивающихся значений да. Параметр и, который оценивает степени небольших
простых чисел г, входящих в значение k из алгоритма, на практике так-
также следует выбирать эмпирически, используя некоторую возрастающую
последовательность значений.
Замечание 4.6. На практике алгоритм факторизации при задан-
заданных п, v, да состоит в следующем. Случайно выбирают очередные
а, х, у € Z/«Z и выполняют алгоритм факторизации с одной кривой.
Так повторяется до тех пор, пока мы не разложим п на множители или
пока не закончится отведенное для работы алгоритма время.
Замечание 4.7. Усовершенствование Монтгомери [ ] заключа-
заключается в одновременном вычислении обратных элементов для нескольких
элементов а\ (mod п), ...,сц (mod п) в кольце Z/«Z (см. также [ ,
гл. 10]). Это позволяет одновременно работать сразу с нескольки-
несколькими кривыми. Другое усовершенствование алгоритма Ленстры заклю-
заключается в использовании только проективных координат; в этом случае
8 О. Н. Василенко
114 Гл.4. Применение кривых для проверки простоты и факторизации
нам вообще не нужно будет проводить деление по модулю п. Однако
Коен [ , гл. 10] все же рекомендует аффинные координаты в сочета-
сочетании с усовершенствованием Монтгомери.
Замечание 4.8. Алгоритм Ленстры аналогичен (Р — 1)-методу Пол-
ларда, описанному в гл. 2. В нем, так же, как и в (Р— 1)-методе,
возможна вторая стадия, см. [ ; ; ].
§ 4.3. Вычисление порядка группы точек
эллиптической кривой над конечным полем
Вычисление порядка группы точек на эллиптической кривой над ко-
конечным простым полем имеет важные приложения как в криптографии,
так и в алгоритмах проверки простоты чисел, о которых будет расска-
рассказано в следующем параграфе.
Пусть р — простое число, р > 3, эллиптическая кривая Е = Еа,ь
над полем Z/pZ задана уравнением у2 =х3 + ах + b. Для нахожде-
нахождения \E(Z/pZ)\ Р. Шуф в 1985 г. в работе [ ] предложил алгоритм,
имеющий полиномиальную сложность O(log8 p) битовых операций
(см. также [ ]). Дальнейшие усовершенствования алгоритма Шуфа
были предложены Аткином, Элкисом, Мюллером и другими авторами,
см. [ ; ; ; ; ]. Это позволило на практике вычислять
порядки групп точек для простых полей, число элементов которых
записывается несколькими сотнями десятичных цифр; рекордное зна-
значение р равно 10499 + 153.
В данном параграфе мы опишем первоначальный алгоритм Шуфа
из работы [ ].
Обозначим через Z/pZ алгебраическое замыкание поля Z/pZ.
Отображение Фробениуса ср: E(Z/pZ) —> E(Z/pZ) определяется соот-
соотношениями
Нетрудно доказать, что ср является гомоморфизмом и вложением
E(Z/pZ) в себя; очевидно, что точки E(Z/pZ) остаются неподвижными
при действии ср. Пусть
\E(Z/pZ)\=p+\-t,
по теореме Хассе |/| <2^/р. Целое число / называется следом отоб-
отображения Фробениуса; отображение ср удовлетворяет уравнению
ср2 -/ср + р = 0.
§4.3. Вычисление порядка группы точек эллиптической кривой 115
Для каждого натурального числа п обозначим через Е[п] подгруппу
?(Z//?Z), состоящую из точек, порядок которых делит п:
Е[п] ={Р? E(Z/pZ) \nP=O}.
Теорема 4.9 (см. [ ]). Если п> 1 up не делит п, то группа Е[п]
изоморфна Ъ/рЪ х Ъ/рЪ.
Пример 4.10. Рассмотрим х\, х2, х3—три различных корня урав-
уравнения х3 + ах + b = 0 в Ъ/рЪ. Тогда
Определим многочлены ф„(х, у) €Z//?Z[x, у], п = — 1, 0, 1, 2, ...,
следующими соотношениями:
ф_1(х, у) = -\, фо(х, У) = 0, <\>i(x,y)=l, ф2(х, у) = 2у,
ф3(х, у) = Зх* + Qax2 + \2bx-a2,
ф4(х, у) = 4у{х6 + ЪахА + 20Ьх3 - Ъа2х2 - Aabx - 8Ь2 - а3);
далее при п ^ 3
<\>2п(х, у) = <\)„(х, уЩп+2(х, y)<\>n-i(x, уJ -<\>„-2(х, у)<\>п+1(х, уJ)/Bу),
и при п ^ 2
<\>2n+i(x, у) = <\>„+2(х, у)<\>„(х, уK -<\>n+l(x, yK<\>n-i(x, у);
везде у2 следует заменять на х3 + ах + Ь.
Многочлены <\>„(х, у) называются многочленами деления. Нетруд-
Нетрудно доказать по индукции, что fn(x), определенные равенством
\ <\>„(х, у), если п нечетное,
/п (х) = \ .
I ф„(х, у)/у, если п четное,
являются многочленами от х, т. е. fn(x) € Ъ/рЩх\. Кроме того, если п —
нечетно, р\п, то deg/n(x) = (п2 — 1)/2.
Теорема 4.11. Пусть Р = (х, у) е E{Z/pZ)\E[2]. Пусть п ^ 3. Ра-
Равенство пР = О выполнено тогда и только тогда, когда fn(x) = 0.
Теорема 4.12. Пусть Р = (х, у) € E{Z/pZ) \E[2], п^2, причем
пРфО. Тогда
, У) <\>п+2(х, У)<\>п-1(Х, yf-<\>n-2(x, УЦп+lix, У?
ф„(х, уJ ' Щп{х, уK
Далее в алгоритме Шуфа мы будем находить значение / (mod /)
для небольших простых чисел /. Если таких / будет достаточно много,
116 Гл.4. Применение кривых для проверки простоты и факторизации
точнее, если Ш > 4^/р, то, найдя затем по китайской теореме об остат-
остатках значение / (mod Ш), мы получим, что искомое значение / рав-
равно абсолютно наименьшему вычету в классе / (mod Ш). Это следу-
следует из теоремы Хассе (см. §4.1). Тогда мы найдем искомое значение
\E(Z/pZ)\=p+l-t.
Рассмотрим сначала случай 1 = 2. Согласно приведенному вы-
выше примеру, в ?(Z//?Z) найдется ненулевая точка Р = (х, 0) второго
порядка, если и только если выполнено условие
НОЩхр - х, х3 + ах + Ь) ф 1.
Это условие равносильно четности числа \Е(Ъ/рЩ\ что, в свою очередь,
равносильно четности /, поскольку р + 1 четно. Итак, t = 0 (mod 2)
тогда и только тогда, когда
Н ОД (хр - х, х3 + ах + Ь) ф 1;
в противном случае / = 1 (mod 2).
Везде далее мы обозначаем через / нечетное фиксированное
(небольшое) простое число, 1фр. Реально в алгоритме следует рас-
рассматривать простые числа / порядка O(\ogp).
Рассмотрим группу ?[/]; очевидно, что ср(?[/]) С ?[/]. Легко пока-
показать, что ер является изоморфизмом ЕЩ. Обозначим ф/ = ф|.е[/]. Тогда (pi
удовлетворяет уравнению
Покажем, что если ф/ удовлетворяет уравнению
при некотором /' е Z, то /= /' (mod /). Действительно, вычитая второе
уравнение из первого, получим
(t-t')(fi = O на ЕЩ,
откуда /= /' (mod /), поскольку ф/ — изоморфизм.
Теперь нам надо найти значение т, 0 ^ т ^ / — 1, для которого
ф|-тф/ + р = 0 на?[/].
Тем самым мы определим значение / (mod /). Другими словами, нам
нужно найти т € Z//Z, для которого на ЕЩ выполняется равенство
Ф^ + р = тф/. Случай т = 0 рассматривается отдельно. Если же т^О,
то, для
/г = р (mod/), 1</г</-1,
§4.3. Вычисление порядка группы точек эллиптической кривой 117
мы, по теореме 4.12, примененной к точке Р=(х, у) ? Е[1]\О можем
переписать наше равенство cpf(P) + /?Р = тср/(Р) в виде
х, у)
(X, У?
, У)\р
фх(х, уJ
фт+2(х, y)<\ix_i(x, уJ -фт_2(х, г/)фт+1(х, уJ\Р
4(/фт(х, уK
Знак ф обозначает операцию сложения точек на кривой. Последнее
равенство приводится к виду
J Hi (х) = 0 (mod
j#2W = 0 (mod
гдеЯ^х), Я2(х) е Ъ/рЪ\х\. В результате перебора т = 0, 1, ...,/— 1 мы
найдем истинное значение / = т (mod /). Так выглядит основная идея
алгоритма, которую мы далее конкретизируем.
Алгоритм Шуфа.
Алгоритм находит / (mod /) для таких простых чисел /, что
Yl I > ^\[Р- Затем с помощью китайской теоремы об остатках на-
находится истинное значение /. Значение / (mod 2) находим так, как
было сказано выше. Пусть далее / > 2, / — фиксированное простое
число, 1ф р.
1 этап алгоритма для фиксированного /. Мы проверяем, суще-
существует ли точка Р = (х, у) € Е[1] \О такая, что
где k = p (mod /), 1 < k < / — 1. Сначала проверяем по первой коорди-
координате; это означает, что должно выполняться равенство
, У)
=х_
Фа(х, уJ
При четном k это равенство имеет вид
у _ fk-i(x)fk+i(x)
118 Гл.4. Применение кривых для проверки простоты и факторизации
а при нечетном k —
2 _ fk_{(x)fk+{(x)(xu
f
_
Следовательно, по теореме 4.11 точка Р= (х, у) €Е[1]\О, удовлетво-
удовлетворяющая соотношению ф2(Р) = ±йР, существует тогда и только тогда,
когда
НОЛи* -x)fk(xf(x3 + ax + b) + fk-i(x)fk+i(x), fi(x)) ф 1
при четном k, и
НОЩ(хр2 -x)fk(xf + fk-i(x)fk+i(x)(x3 + ax + b), fi(x)) ф 1
при нечетном k. Если же соответствующий НОД (при k четном или
нечетном) равен 1, то искомое т не сравнимо с 0 по модулю /. Действи-
Действительно, если т = 0 (mod /), то
(ср?+ &)(/>) = 0 для всех Р €?[/],
а в нашем случае (при НОД= 1) таких точек нет, за исключением О.
В случае неразрешимости уравнения ф2(P) = ±kP на Е[1] \О мы пере-
переходим на 2-й этап алгоритма.
Предположим, что существует точка РG Е[1]\О, для которой
1 случай. Если $(Р) = —рР, то (ф| + р)Р= О. Так как (ф2 — Щ +
+ р)(Р) = О для любой точки Р на кривой, то отсюда (t<pi)(P) = O.
Поскольку ф/ — изоморфизм Е[1], получаем, что / = 0 (mod /). Таким
образом, в данном случае мы нашли искомое / (mod /).
2 случай. Если ф2(Р)=рР, то, пользуясь снова уравнением ф2—
— t(f + p = 0, получаем соотношение Bр — /ф/)(Р) = О. Поскольку
2рРфО для PgE[1]\O, to t^O (mod /). Поэтому ф/(Р) = ^-Р
(здесь - обозначает /~' (mod /)). Применяя снова ф/, получим
Отсюда
p = 4p2/t2 (mod/),
или t2 = Ар (mod /). В частности, в этом случае р является квадратич-
квадратичным вычетом по модулю /.
Теперь решим уравнение w2 = p (mod /) (алгоритм решения таких
уравнений см. далее в главе 6; для малых / возможен перебор). Для его
§4.3. Вычисление порядка группы точек эллиптической кривой 119
решения да будет выполнено сравнение / = ±2да (mod /), и нам оста-
останется лишь определить истинный знак + или —.
Подставляя / = ±2да (mod /) в уравнение для ср/, получим
cpf =F 2даср/ + да2 = О,
или (cp/=Ft<yJ = 0 тождественно на ?[/]. Поэтому собственное значе-
значение линейного отображения ср/ на Е[1] может быть только ±да (mod /)
(если г — собственное значение, то (r^pwJ = 0 (mod /)). Проверку су-
существования решения QgE[1] уравнения (<f^fw)Q = O осуществляем
так же, как выше мы осуществляли проверку существования решения
уравнения ср2(Р) = ±йР. Точнее, пусть Q = (x, у). Тогда для выполне-
выполнения равенства cp/(Q) = ±wQ по первой координате должно выполняться
равенство
ty( )ty(x, У)
4}w(x, уI
Отсюда при да четном
p _ fw-l(x)fw+l(x)
а при да нечетном
X — X
fw_i(x)fw+i(x)(x3
fwixf
Существование такой точки Q € Е[1] равносильно тому, что
НОД((х" - x)fw(xf(x3 + ax + b) + fw-i(x)fw+l(x),
при да четном, а при да нечетном
НОД((х" - x)fw{xf + /ш_!(х)/ш+1(х)(х3 + ах + Ь), Щх)) ф 1.
Если теперь такая точка Q существует (т. е. соответствующий НОД
не равен 1), то надо определить знак ±да по второй координате. Если
,У)
фш+2(х, (/)фш_1(х, уJ - фш_2(х, y)<\>w+l(x, yf
4(/фш(х, уK
то отсюда
р_ fw+2JX) ¦ yfw-l ~ fw-2JX) ¦ yfw+l (X.
120 Гл. 4. Применение кривых для проверки простоты и факторизации
при да четном и
р _
У
fj_i - fw-2(x) ¦ y2fw
при да нечетном. Пользуясь соотношением у2 =х3 + ах + Ь, получаем,
что при да четном будет выполняться соотношение <p/(Q) = wQ, если
-fw+2(x)fw-i(xJ+fa-2(x)fa,+i(xf,
Соответственно, при да нечетном
HOJXDfw(xf(x3+ax+b) 2 -fw+2(x)fa-i(xf+U,-2(x)fw+i(xf,
В случае, когда <pz(Q) = — wQ, вторая координата меняет знак. Тогда
при да четном
НОЦШт(хK(х3+ах+Ь) 2 +fw+2{x)fw-dxJ-fw-2{x)fw+dxJ, fi{x)U\,
HOJxDUxf(x3+ax+bJ +
при да нечетном.
Теперь предположим, что не существует точки Q € Е[1]\О такой,
что <fi(Q) = ±wQ. Кроме того, мы находимся в условиях 2 случая,
т.е. существует Р€Е[1]\О такая, что с?2(Р) = kP. Покажем, что на-
наше предположение невозможно. У нас cpf(P) = (±даJР; кроме того,
выше мы показали, что (ср/ =F wJP = О. Из этих двух соотношений
следует, что
w2P т 2да<р/ {Р) + w2P = О,
т. е. 2w2P = ±2даср/(Р). Так как 2да ф 0 (mod /), то отсюда <р/(Р) = ±wP.
Мы же предположили, что для всех точек Q GE[l]\O (включая и Р),
равенство (pi(Q) = ±wQ невозможно. Это означает, что наше предпо-
предположение было неверным.
Итак, если существует точка Р€Е[1]\О такая, что (p2(P) = kP,
то существует и точка Q € Е[1]\О такая, что <p/(Q) = ±wQ.
В итоге 1 этап алгоритма реализуется следующим образом. Ес-
Если не существует точки Р? Е[1]\О, для которой ср2(Р) = ±kP, то мы
§4.3. Вычисление порядка группы точек эллиптической кривой 121
переходим на 2 этап алгоритма. Если же такая точка Р существу-
существует (т. е. соответствующий НОД в начале описания первого этапа не
равен 1), то при \^)=—\ мы полагаем / = 0 (mod /) (поскольку
2 случай невозможен). Если же ( у J = +1, то мы находим да ? Z такое,
у
что да2 = р (mod /) и 0 < да < /. Затем проверяем, будет ли +да или —да
собственным значением для ср/ на Е[1] (проверку осуществляем так, как
это описано выше). Если ±да не является собственным значением ср/
на Е[1], то t = 0 (mod /) — искомое значение, как это было объяснено
выше.
Если (fi(Q) = wQ для некоторой точки Q? Е[1]\О, то cp2(Q) = pQ.
Тогда, пользуясь соотношением <pi(Q) = -j-Q, найденным ранее, по-
получим
да- у =0 (mod /).
Так как p = w2^0 (mod /), то отсюда t = 2w (mod /) есть искомое
значение / по модулю /.
Если cp/(Q) = —wQ для некоторой точки Q ? Е[1] \О, то аналогично
получим
да + ^=0 (mod/),
откуда /= —2да (mod /).
Таким образом, если на 1 этапе окажется, что существует Р ?
? Е[1]\О, для которой ср2 (Р) = ±kP, то мы определим искомое значение
/ (mod /), и тогда 2-й этап для данного / будет не нужен.
2 этап алгоритма для фиксированного /. Пусть на 1 этапе ока-
оказалось, что не существует точки Р ? Е[1] \О, для которой
Тогда искомое значение т, т= / (mod /), для которого на Е[1] выполня-
выполняется равенство
ср? +/?=тср/,
будет не равно нулю, т ф 0, как это уже показано ранее.
Далее мы перебором т, 1 < т < —^—, ищем то значение, для которого
соотношение
122 Гл. 4. Применение кривых для проверки простоты и факторизации
выполняется на Е[1] тождественно. Для Р = (х, у) € Е[1] \О левая часть
запишется при k = р (mod /), 1 ^ k < I в виде
х, у) ^k+2(x, y)j>k-i(x, yf-j>k-2(x, уЩ+\{х, уJ
х, УK
причем сложение © на кривой проводится по формуле секущей, по-
поскольку сейчас ЦJ(Р)^±рР для всех Р€ Е[1]\О. Правая часть, т.е.
±тфДР) = ±ф/(тР), имеет вид
гИ _ Фт-ifo УЖ+1(х, У) у
1 Фх(х, уJ ) '
о о
± ( — ! '-—— \о ^ " ^ )
\ 4(/фт(х, у)й I
Поскольку (ф2 + р)(Р) = ±T(fi(P) тождественно на Е[1], нам уже не на-
надо вычислять наибольший общий делитель с fi(x), а надо проверять
делимость на fi(x). Для написания соответствующих формул надо рас-
рассмотреть четыре случая в зависимости от четности & и т.
Пусть, например, k четно и т четно. Тогда
I Р2 Р2\п,(„ fk-\(x)fk+\(x) fk+2(x)fk-\(xf ~ fk-2(x)fk + \(xf
Ш2(х3
/т_1 (х)/т+1 (х) у //т+2(х)/т_1 (хJ - /т_2(х)/т+1 (xf у
/x(xJ(x3 + ax + b))' V 4(x3 + ax + b)fT(xK • у
Пользуясь соотношением у2 =х3 + ах + Ь, нетрудно показать, что ле-
левая часть этого равенства имеет вид
(Hi(x) H3(x) ±1
\Н2(х)' Я4(х) '*
а правая часть —
(Н5(х) Н7(х) ±1
\Н6(х)' Я8(х) *
где Hi(х), ..., Hs(x) e Z/pZ[x]. Тогда для проверки тождества
по первой координате нам нужно проверить, что H\(x)H§(x)—H$(x)H2(x)
делится на fi(x) в Ъ/рЪ\х\. Если это не так, то мы переходим к сле-
следующему т. Если это так, то мы выбираем знак ± числа т, выполняя
§4.4. Тестирование чисел на простоту с помощью эллиптических кривых 123
аналогичную проверку по второй координате. Точнее, мы приводим
разность
Н8(х)
„
9
к виду 9 • y±l, где Нэ(х), Я10(х) € Z/pZ[x], и затем проверяем де-
П1 о (X)
лимость Н<з(х) на fi{x). Три остальных возможности для четности k и т
рассматриваются аналогично. На этом заканчивается 2 этап для фик-
фиксированного /.
3 этап алгоритма. Пусть мы нашли / (mod /) для простых / таких,
что П / > Ау/р. По китайской теореме об остатках находим / (mod П /);
абсолютно наименьший вычет в этом классе вычетов и есть искомое /.
Тогда полагаем |?(Z/pZ)| =p+\ —t.
Конец алгоритма Шуфа.
Замечание 4.13. При фиксированном />2 вычисления с много-
многочленами и рациональными функциями следует проводить по модулю
многочлена fi(x). To есть нам не нужно, например, использовать хр; это
многочлен очень высокой степени, поскольку р велико. Вместо этого
мы вычисляем хр (mod fi(x)) — многочлен степени, не превосходящей
deg/Дх)- 1 = ^-1.
Замечание 4.14. Основная трудоемкость алгоритма Шуфа заклю-
2 2
чается именно в вычислении высоких степеней хр, ур, хр , ур по моду-
модулю fi(x).
Замечание 4.15. В работе [ ] описано эффективное сочетание
алгоритма Шуфа с различными его усовершенствованиями для опти-
оптимального вычисления порядка группы точек эллиптической кривой над
конечным простым полем.
§ 4.4. Тестирование чисел на простоту с помощью
эллиптических кривых
В 1986 г. Голдвассер и Килиан [ ] предложили вероятностный
алгоритм проверки простоты чисел с помощью эллиптических кривых.
Теорема 4.16 (см. [ ]). Существует вероятностный алго-
алгоритм доказательства простоты натуральных чисел с помощью
эллиптических кривых. При этом для любого натурального
числа k доля k-значных простых чисел, для которых сред-
124 Гл. 4. Применение кривых для проверки простоты и факторизации
нее время работы алгоритма полиномиально, будет не мень-
меньше, чем
Замечание 4.17. В предположении некоторой недоказанной гипо-
гипотезы о распределении простых чисел среднее время работы алгоритма
Голдвассер—Килиана будет полиномиальным для всех простых чисел.
Замечание 4.18. Алгоритм случайным образом выбирает эллипти-
эллиптическую кривую и проверяет выполнение некоторых условий. Он либо
выдает верный ответ, является ли данное число простым или составным,
либо делает следующий случайный выбор. Алгоритм работает до тех
пор, пока либо проверка простоты не будет проведена, либо не закон-
закончится отведенное для работы компьютера время.
Замечание 4.19. Чередуя тест Голдвассер—Килиана с тестом Со-
Соловея—Штрассена (или Миллера—Рабина) из гл. 1, мы получаем ве-
вероятностный метод доказательства того, что данное натуральное число
является простым или составным. Среднее время его работы будет по-
полиномиальным для всех й-значных чисел за исключением, может быть,
указанной в теореме доли й-значных простых чисел.
Замечание 4.20. Если алгоритм Голдвассер—Килиана доказал
простоту числа, то он также выдает «сертификат простоты». С по-
помощью этого сертификата вторичная проверка простоты данного
й-значного числа может быть детерминированно проведена за O(k3+Z)
битовых операций.
Замечание 4.21. В работе [ ] улучшена оценка количества
тех простых чисел, для которых среднее время работы алгоритма
Голдвассер—Килиана полиномиально. Доказано, что количество про-
простых чисел, не превосходящих х, для которых среднее время работы
не является полиномиальным, не превосходит О(х15/16).
Мы опишем схему работы алгоритма Голдвассер—Килиана для про-
проверки простоты нечетного, не делящегося на 3 натурального числа п.
Мы будем рассматривать эллиптическую кривую Еп над кольцом Z/nZ,
определенную уравнением
у2 = х3 + ах + b (mod п), Dа3 + 27Ь2, п) = \.
Для множества
En{Z/nZ) = {{х, у)\х,у? Z/nZ, у2 = х3 + ах + b} U {О}
мы будем использовать тот же закон сложения, который был описан
в §4.1 для случая простого п. При этом для q € N, Р ? En(Z/nZ) крат-
§4.4. Тестирование чисел на простоту с помощью эллиптических кривых 125
ную точку qP мы вычисляем рекуррентно по следующему правилу:
qP =
|2(|PJ, если q четно,
[Рф {q — 1)Л если q нечетно.
Также мы будем использовать редукцию: если р — простое число, р\п,
и Р={х, y)?En(Z/nZ), то
(Р)р = (х (mod р), у (mod p)) e Ep(Z/pZ).
Здесь Ep{Z/pZ) = {{х, у) \ х, у € Z/pZ, y2 = x3 + ax + b (mod p)} U О
является уже настоящей эллиптической кривой над полем Z/pZ, по-
поскольку Аа3 + 27Ь2фО (mod р). Очевидно, что если Р, Q GEn(Z/nZ)
и точка Р © Q определена, то (Р © Q)p = PP®QP.
Схема алгоритма Голдвассер—Килиана.
1 шаг. Полагаем ро = п, i = 0. Выбираем kGN такое, что 2k~l <
<Po<2k.
2 шаг. Случайно выбираем А, В е Z/piZ и проверяем условие D =
= DА3 + 27В2, pi) = 1. Если i = 0 и данный наибольший общий дели-
делитель лежит в интервале A; ро), то ро = п — составное, и алгоритм за-
заканчивает работу. Если I > 0 и 1 < D < /?,-, то возвращаемся на 1 -й шаг.
Если I > 0 и D = pi, то возвращаемся на 2-й шаг (т. е. выбираем другие
А, В).
3 шаг. В предположении, что /?,¦ — простое число, ищем для ре-
редуцированной кривой у2 = х3 + ах + b (mod /?,-) величину \EPi(Z/piZ)\
(например, с помощью алгоритма Шуфа из §4.3). Если найденное зна-
значение \EPi(Z/piZ)\ нечетно, то возвращаемся на 2-й шаг. В противном
случае полагаем
q=\EPi(Z/PiZ)\/2
и проверяем выполнение теоремы Хассе
Если это последнее неравенство не выполняется для i > 0, то мы воз-
возвращаемся на 1 шаг. Если оно не выполняется при i = 0, то п = ро —
составное.
4 шаг. Делаем / проходов вероятностного теста Соловея—Штрас-
сена (или Миллера—Рабина), описанного в гл. 1, для проверки про-
простоты q. Если оказалось, что q — составное, то возвращаемся на 2 шаг.
/1 \1
Значение / выбираем так, чтобы выполнялось неравенство ( ^ J ^ 1/р3-
126 Гл. 4. Применение кривых для проверки простоты и факторизации
5 шаг. Выбираем случайную точку Р = (х, у), Р € EPl(Z/piZ). To есть
? п, I п, /х3 + ах + Ь\ ,
мы случайно выбираем х € ?/Pi? и при I I = 1 находим
у = (х3 + ах + bI/2 (mod p), затем полагаем Р=(х,у); иначе делаем
следующий выбор х.
6 шаг. Найдя Р= (х, у) € ЕР1{Ъ/р{Е), мы проверяем выполнение ра-
равенства 2qP=O на EPi^L/p{E). Если это равенство не выполняется
и I > О, то мы возвращаемся на 1 шаг. Если оно не выполняется и I = О,
то п составное. Если же оно выполнено, то мы полагаем pi+\ = q.
7 шаг. Проверяем выполнение неравенства
Здесь постоянная с взята из оценки сложности
O((log«)cloRloRloR")
алгоритма проверки простоты чисел Адлемана—Померанса—Румели
или алгоритма Ленстры, о которых было рассказано в гл. 1. Если
неравенство не выполняется, то мы полагаем I := I + 1 и возвраща-
возвращаемся на 2 шаг. Если же неравенство для q выполнено, то мы детер-
минированно проверяем простоту q с помощью алгоритма Адлемана—
Померанса—Румели или алгоритма Ленстры. Если q окажется состав-
составным, то мы возвращаемся на 1 шаг. Иначе алгоритм заканчивает работу
и выдает ответ, что число п — простое.
Конец алгоритма.
Обоснование корректности работы алгоритма основано на следую-
следующем утверждении.
Утверждение 4.22. Пусть п € N, п > 1, (п, Ь) = \, Еп — эллипти-
эллиптическая кривая над Z/nZ, P= (х, у) e?n(Z/«Z), РфО. Пусть q —
простое число, q > п1^2 + 2я'/4 + 1, qP=O. Тогда п — простое
число.
Доказательство. Предположим, что п — составное, и обозначим
через р простой делитель п, р ^ ^/п. При редукции по модулю р мы
получим точку Мр = (Р)р, для которой
МрфОр, qMp = Op.
Отсюда по теореме Лагранжа
\Ер{Ъ/рЩ\ ^q> я1/2
§4.4. Тестирование чисел на простоту с помощью эллиптических кривых 127
Поэтому
что противоречит теореме Хассе. Утверждение доказано. ?
В алгоритме Голдвассер—Килиана в случае успеха будет построена
цепочка
и из простоты pi будет следовать простота п, согласно доказанному
утверждению. Действительно, очередное q удовлетворяет неравенству
\2q-Pi-\\<2pf,
это проверяется на 3 шаге. Тогда неравенство q > р1/2 + 2р\'А + 1 также
будет выполнено, так как при /?,- > 5 справедливо неравенство
В силу доказанного утверждения из простоты q следует простота /?,-.
Поэтому для построенной в алгоритме цепочки простых чисел из про-
простоты последнего числа следует простота первого числа, т. е. числа п.
Замечание 4.23. Построенная цепочка
и есть тот сертификат простоты п, о котором говорилось в замеча-
замечании 4.20.
Алгоритм Голдвассер—Килиана оказался непрактичным из-за мно-
многократного использования алгоритма Шуфа для вычисления порядков
групп точек выбираемых в алгоритме проверки простоты эллиптических
кривых. Аткин и Морейн [ ] предложили использовать эллиптические
кривые с комплексным умножением. Для таких кривых порядок груп-
группы точек находится по несложной формуле; несколько более сложным
оказывается процесс построения самих кривых с комплексным умно-
умножением. Алгоритм Аткина и Морейна был реализован на компьютере
и в настоящее время успешно применяется для проверки простоты
чисел, так же как и алгоритмы Адлемана—Померанса—Румели—Лен-
стры—Коена из гл. 1. Сравнение этих двух методов было проведено
в §2.8, см. также [ , гл. 9]. Дополнительную информацию об алгорит-
алгоритме Аткина—Морейна можно найти в [ ].
128 Гл. 4. Применение кривых для проверки простоты и факторизации
§ 4.5. Заключение
В заключение сделаем еще несколько замечаний об алгоритмах, ис-
использующих эллиптические кривые.
Как мы видели выше, в ряде случаев приходится вычислять крат-
кратную точку kP для точки Р на эллиптической кривой (здесь k € Z). Такие
вычисления проводятся и во многих криптосистемах. Эффективные ал-
алгоритмы для решения этой задачи можно найти в работах [ ; ].
Вычисление порядка группы точек эллиптической кривой над полем
GFBl) описано в работе [ ].
Построение кривых с комплексным умножением описано в рабо-
работах [ ; ].
В работе [ ] отмечено, что если криптосистема использует эллип-
эллиптические кривые с некоторыми специальными свойствами (например,
аномальные или суперсингулярные кривые), то на такую криптосисте-
криптосистему возможны более эффективные атаки (см. [ ]).
В работе [ ] доказано, что с помощью эллиптических кривых
можно получить сертификат простоты для каждого простого числа р,
проверяемый за O(\ogp) арифметических операций. Однако отсутствует
оценка на количество таких сертификатов для фиксированного р. Ме-
Метод этой работы, скорее всего, неприменим для практической проверки
простоты чисел.
Глава 5. Алгоритмы дискретного
логарифмирования
§5.1. Введение. Детерминированные методы
Пусть G— мультипликативная абелева группа, a, b € G. Задача на-
нахождения решения уравнения
ах = Ь
называется задачей дискретного логарифмирования в группе G. Ее ре-
решение х называется дискретным логарифмом элемента b по основа-
основанию а и обозначается loga b, если основание а фиксировано и если
решение существует; loga b € Z/|G|Z, если \G\ < оо.
Задача дискретного логарифмирования имеет важные приложения
в криптографии. Особенно важен случай G = GF(q)*, где q = pl, p —
простое число, / € N, а также случай, когда G является группой точек
эллиптической кривой над конечным полем.
Рассмотрим уравнение
ах = b (modp) E.1)
в группе (Z//?Z)*, где р — простое число. Мы будем предполагать, что
порядок a (mod р) равен р — 1. Тогда уравнение разрешимо, и реше-
решение х является элементом Z/(p — 1)Z. В данном параграфе мы опишем
детерминированные методы решения E.1).
С помощью перебора можно решить уравнение E.1) за О(р) ариф-
арифметических операций.
Решение \ogab уравнения E.1) можно находить по формуле
р-2
loga b = J2{1 - а')-1Ь> (mod p - 1),
/=i
см. [ ]. Однако сложность вычисления по этой формуле хуже, чем
для перебора.
Следующий алгоритм решения E.1) имеет сложность O(pl^2\ogp)
арифметических операций (см. [ , гл. 6]).
9 О. Н. Василенко
130 Гл. 5. Алгоритмы дискретного логарифмирования
Алгоритм согласования.
1 шаг. Присвоить Я:= [р^2] + 1.
2 шаг. Найти с = ан (mod р).
3 шаг. Составить таблицу значений с" (mod р), 1 ^ и ^ Я, и упоря-
упорядочить ее.
4 шаг. Составить таблицу значений b ¦ a" (mod р), 0 ^ v ^ Я, и упо-
упорядочить ее.
5 шаг. Найти совпавшие элементы из первой и второй таблиц. Для
них
с" = Ь ¦ а° (mod p),
откуда aHu~v = b (mod p).
6 шаг. Выдать x = Hu — v (mod p — 1).
Конец алгоритма.
Докажем, что алгоритм работает корректно. Любое целое чис-
ло х, 0 ^ х ^ р — 2, можно представить в виде х = Ни — v (mod /? — 1),
где 1^м^Я, О^и^Я. Действительно, набор чисел Я, Я — 1,
Я-2, ...,Я-Я, 2Я, 2Я-1, ..., 2Я-Я, ...,Я2, Я2-1, ..., Я2-Я
содержит в себе набор чисел 0, 1, ..., р — 2, поскольку Я2 > р. Из этого
следует корректность алгоритма. Оценка сложности также очевидна,
поскольку набор из N элементов можно упорядочить за O(N\ogN)
арифметических операций, см. [ , гл. 3].
Замечание 5.1. Некоторые усовершенствования алгоритма согла-
согласования см. в [ , гл. 6]. Все они также имеют экспоненциальную
сложность.
Предположим теперь, что известно разложение р — 1 на простые
множители:
(=1
Тогда решение E.1) можно найти за О[ J2 a,(logp + g,)) арифмети-
4=1 '
ческих операций с помощью следующего алгоритма, см. [ ]. (Для
некоторого усовершенствования алгоритма справедлива аналогичная
1/2 ч
оценка с заменой q, на q/ .)
Алгоритм Полига—Хеллмана.
1 шаг. Для каждого простого числа q, q \ р — 1, составляем таблицу
чисел
rqj = aiip~V)lq (mod p), j = 0, ..., q - 1.
2 шаг. Для каждого простого q, qa || р — 1, находим loga b (mod ga).
§5.2. р-метод Полларда для дискретного логарифмирования 131
Пусть
x = \ogab (mod <7ol)=*o+*i<7 + -" + *a-i<7a~1 (mod 4a),
где 0 < Xi < q — 1. Тогда из E.1) следует, что
b(p-l)/q= axo(p-D/4 (mod /7).
С помощью таблицы 1 шага находим хо. Тогда выполнено сравнение
фа-х^(р-1)/ч2 = aXl{p-l)/c> {mod р).
По таблице находим х\, и т.д. Значение хь находится из сравнения
(ba-xo-xiq-...-xi_iqi-lj(p-l)/qi+l =aXi(p-\)/q (mod /7).
3 шаг. Найдя loga b (mod qf), I = 1, ..., s, находим loga b (mod /7—1)
по китайской теореме об остатках.
Конец алгоритма.
Докажем оценку сложности алгоритма. Набор элементов
а(р-!)/<?« (mod p) вычисляется за J2 O(\ogp) арифметических операций.
1=1 S
Затем набор rqij для всех q-u j вычисляется за Y, 0{qi) арифметиче-
(=1
ских операций. Для нахождения очередного х, на шаге 3 надо возвести
в степень (т.е. найти ax'-'q' ), найти обратный элемент, умножить,
возвести в степень и пройти по таблице. Обратный элемент находится
с помощью обобщенного алгоритма Евклида за O(\ogp) операций. Все
вместе дает указанную выше оценку сложности алгоритма Полига—
Хеллмана.
Замечание 5.2. Алгоритм Полига—Хеллмана имеет полиномиаль-
полиномиальную сложность O((log/?)C|) в случае, когда все простые делители qb
числа р не превосходят (log/?)C2, где с\, c<i — положительные по-
постоянные. Это имеет место, например, для простых чисел р вида
р = 2а + 1, р = 2е" За2 + 1. Если же у р — 1 есть простой делитель q,
q ^ /7е, где О 0, то алгоритм Полига—Хеллмана будет иметь экспо-
экспоненциальную сложность.
§ 5.2. р-метод Полларда для дискретного
логарифмирования
В § 2.3 мы описали р-метод Полларда для факторизации целых чи-
чисел. В работе [ ] аналогичный метод был предложен для дискретного
132 Гл. 5. Алгоритмы дискретного логарифмирования
логарифмирования по простому модулю р. Мы хотим решить уравнение
ах = Ь (mod p). Для этого рассмотрим три числовые последователь-
последовательности
{и,-}, {и,}, {Zi}, i = 0, 1,2, ...,
определенные следующим образом:
щ = vo = 0, zo = 1;
м,- + 1 (mod р — 1), если 0 < z,- < /7/3;
2
{
2
2м,- (mod /7-1), если /7/3 < z,- < тг/7;
2
м,-(mod/7-1), если ^/7<
{и,- (mod /7—1), если 0 < z,- < /7/3;
2
2w,- (mod /7-1), если /7/3 < z,- < ^р;
2
-+ I (mod p - 1), если -p<zi<p;
z,-+i = 6"'+' а°'+' (mod /7-1).
Здесь под с (mod p) мы понимаем наименьший неотрицательный вычет
в данном классе вычетов.
Далее мы рассматриваем наборы (z,-, м,-, w,-, Z2,-, М2,-, W2i)> i = 1, 2, 3,...,
и ищем номер i, для которого z,- = Z2,-. Из последнего равенства следу-
следует, что
6'-"' = а0'-02' (mod/7).
Если окажется, что (мг,- — м,-, /7 — 1) = 1, то при / € Z, /(мг,- — м,-) = 1
(mod /7 — 1) мы получим
6 = а/@<-°2<> (mod /7),
откуда искомый х равен loga 6 = /(и,- —1>2,) (mod /7—1).
Дальнейшие детали, в частности, методы для нахождения совпав-
совпавших элементов z,-, Z2,-, см. в [ ]. Эвристическая оценка сложности
метода составляет О(р1//2) операций.
Заметим, что в [ ] с помощью некоторого усовершенствования
р-метода Полларда было проведено дискретное логарифмирование
по простому модулю, записываемому 22 десятичными цифрами.
В работе [ ] также было предложено некоторое усовершенство-
усовершенствование описанного выше метода.
§5.3. Дискретное логарифмирование в простых полях 133
§ 5.3. Дискретное логарифмирование
в простых полях
В данном параграфе мы рассмотрим алгоритмы решения уравнения
ах = b (mod р), E.2)
где р — простое число, имеющие эвристическую оценку сложности
1
Lp -; с\ при некоторых значениях постоянной с. Мы будем считать,
что a (mod р) имеет порядок /7—1. Первый такой алгоритм предло-
предложил Адлеман в работе [ ]. Мы опишем некоторую модификацию его
метода.
Алгоритм Адлемана.
1 этап. Сформировать факторную базу, состоящую из всех простых
чисел q,q^B = gConstyVpiogiog^
2 этап. С помощью некоторого перебора найти натуральные числа г,-
такие, что
Yi 4a" (mod p)
q — простое
Отсюда следует, что
А- = ^2 &iq loga q (mod /7-1). E.3)
q — простое
3 этап. Набрав достаточно много соотношений E.3), решить по-
получившуюся систему линейных уравнений относительно неизвестных
\ogaq — дискретных логарифмов элементов факторной базы.
4 этап. С помощью некоторого перебора найти одно значение г, для
которого
ar-b=Y[q^-pi...pk (mod/7),
где pi, ..., pk — простые числа «средней» величины, т. е. В < pi < Bi,
где Bi — также некоторая суб экспоненциальная граница, Bi =
_ gconst^/logploglogp
5 этап. С помощью вычислений, аналогичных 2 и 3 этапам алгорит-
алгоритма, найти дискретные логарифмы loga/7,- для фиксированных простых
чисел средней величины pi, ..., р^ из 4 этапа.
134 Гл. 5. Алгоритмы дискретного логарифмирования
6 этап. Определить искомый loga b:
к
eaPi (mod P ~
Конец алгоритма.
Замечание 5.3. Идея использования факторной базы для на-
нахождения дискретных логарифмов применялась и ранее, например,
в [ ]. Описания алгоритма Адлемана см. также в [ ; ; ].
Отметим, что на практике алгоритм Адлемана все же недостаточно
эффективен.
В 1986 г. Копперсмит, Одлыжко и Шреппель предложили алго-
алгоритм дискретного логарифмирования с эвристической оценкой слож-
сложности Lp\-; 1 арифметических операций. В работе [ ] в 1991 г.
с помощью метода [ ] (версия с гауссовыми целыми) было прове-
проведено логарифмирование по модулю рхЮ58. В 1997 г. Вебер [ ]
провел логарифмирование по модулю рх 1085 также с помощью вер-
версии алгоритма [ ] с гауссовыми целыми. Он, кроме того, показал,
что метод [ ] с гауссовыми целыми лучше, чем решето числового по-
поля, для данного рх 1085. В работе [ ] экспериментально показано,
что для р ^ 1090 метод [ ] лучше решета числового поля. Однако для
р> 10100 алгоритмы решета числового поля работают быстрее алго-
алгоритма Копперсмита—Одлыжко—Шреппеля, что также было показано
в [ ]. Об алгоритмах решета числового поля для дискретного лога-
логарифмирования, о версии [ ] с гауссовыми целыми и о работе [ ]
мы расскажем более подробно далее, в §5.5 этой главы. Здесь же
мы опишем простейшую версию алгоритма Копперсмита—Одлыжко—
Шреппеля.
Алгоритм COS.
1 этап. Положим Н = [р1/Г2] + 1, / = Я2 — р > 0. Сформируем мно-
множество
S = {q\q — простое, q < L1/2} li{H + c\0<c< Ll/2+t},
где L и s — постоянные величины, L = Lp\-; 1 , 0 < s < 1.
2 этап. С помощью некоторого просеивания мы ищем пары целых
чисел с\, c<i таких, что 0 < с,- < L2 , I = 1, 2, и абсолютно наименьший
вычет элемента (Н + С\)(Н + с^) (mod p) гладок по отношению к границе
§5.3. Дискретное логарифмирование в простых полях 135
гладкости L1/2, т. е.
(Н + с{)(Н + с2) = ]J Qaq{c"C2) (mod p).
q — простое
При этом, поскольку /= О(р'/2), то
с2) = J+ (ci + с2)Н + ас2 (mod p),
причем абсолютно наименьший вычет в этом классе вычетов равен
/+ (С[ +с2)Н + С[С2 и имеет величину O(pl//2+t). Поэтому вероятность
его гладкости выше, чем для произвольных чисел на отрезке [1, р — 1].
Логарифмируя по основанию а, получим соотношение
^ga(H + Ci) + \oga(H + c2)= Y^ <xq(ci, c2)\oga q (mod p-\).
q<L"\
q — простое
Это однородное уравнение относительно неизвестных величин
1о?а(Я + с), loga q. Мы можем считать, что а также является ?'/2-глад-
ким, а= П ^'> откуда получим неоднородное уравнение
°ga Я (mod p- 1).
q
3 этап. Набрав на 2-м этапе достаточно много уравнений, мы ре-
решим получившуюся систему линейных уравнений в кольце Z/(p — 1)Z
и найдем значения \oga(H + с), \ogaq.
4 этап. Для нахождения конкретного логарифма х = loga b мы вве-
введем новую границу гладкости L2. Случайным перебором находим одно
значение w такое, что
awb= Y[ qg* Y[ uK (mod/?).
q<L}l\
q — простое и — простое
В этом соотношении участвуют несколько новых простых чисел и сред-
средней величины.
5 этап. С помощью методов, аналогичных 2 и 3 этапам, мы находим
логарифмы нескольких простых чисел и средней величины, возникших
на 4 этапе.
6 этап. Находим ответ
x = \ogab = -w+ Y gq^gaq + ^2hu\oga и (mod p-\).
q — простое
Конец алгоритма.
136 Гл. 5. Алгоритмы дискретного логарифмирования
Замечание 5.4. Значения \oga(H + c), возникающие на 2 эта-
этапе, являются несущественными. Они не нужны впоследствии для
нахождения индивидуальных логарифмов loga b. Поэтому на 3 эта-
этапе их сперва исключают из системы линейных уравнений; техника
такого исключения описана в [ ]. Получившуюся систему отно-
относительно неизвестных loga q решают методом структурированного
гауссова исключения с последующим применением алгоритма Лан-
цоша, как в работе [ ], или сразу методом Ланцоша, как в рабо-
те[ ].
Замечание 5.5. Опишем просеивание, применяемое на 2 этапе. За-
Зафиксируем значение с\. Пусть q— простое число, / — небольшое нату-
натуральное число, причем ql делит J + (ci + С2)Н + с\Сч. Тогда
C2 = -(J + clH)(H + cl)-1 (modqs).
Отсюда следует, что значения С2 для данных g и / лежат в арифме-
арифметической прогрессии. Теперь уже ясно, что просеивание мы можем
проводить аналогично методу квадратичного решета, описанному
в гл. 3. Мы заводим массив из L'/2+E элементов, номер элемента — это
значение с?.. Сначала элементы массива равны 0. Затем мы перебираем
степени простых чисел q* и для фиксированного q* к элементам массива
с номерами С2, С2 = — {J + С\Н)(Н + а)~1 (mod qf), прибавляем доста-
достаточно грубо вычисленные значения logg. После окончания просеивания
по всем q < L1/2 и некоторым небольшим / элементы нашего массива
будут приближенно равны логарифмам от гладких частей элементов
/+ (с\ +С2)Н + с\С2- Если значение элемента массива с номером С2
окажется примерно равно значению log|/+ (c\ + С2)Н + с\С2\, то число
/+ (С[ +С2)Н + С[С2 скорее всего будет гладким, и мы факторизуем его
пробными делениями на a, a<L1/2. Смысл применения просеивания,
как и в методе квадратичного решета для факторизации, заключается
в сокращении количества делений.
Замечание 5.6. В работе [ ] описано логарифмирование по про-
простому модулю р= [ 1089ti] + 156137, *-—— —простое. Использо-
Использовалась версия алгоритма COS с гауссовыми целыми. Для рабо-
работы алгоритма потребовалось 60 mips-years для нахождения соот-
соотношений, и около трех недель ушло на решение системы линей-
линейных уравнений. При решении системы линейных уравнений сначала
использовалось структурированное гауссово исключение, а затем
к уплотненной системе меньшего размера применялся алгоритм Лан-
Ланцоша.
§ 5.4. Дискретное логарифмирование в полях Галуа 137
§ 5.4. Дискретное логарифмирование в полях Галуа
Фиксируем простое число р, натуральное число п> 1, и обозначим
q = pn. Пусть а — образующий элемент циклической группы GF(q)*.
Мы хотим решить уравнение
ах = b E.4)
в GF(q). Для этого также используются алгоритмы с факторными база-
базами. В случае, когда р невелико, такой алгоритм описан в [ , гл. 4]. Он
имеет эвристическую оценку сложности Lq -; const арифметических
операций.
Алгоритм index-calculus.
1 этап. (Предварительные вычисления.) Поле GF(q) изоморф-
изоморфно GF(p)[y]/(f(y)), где f(y)€GF(p)[y]—неприводимый унитарный
многочлен степени п. Поэтому элементы поля GF(q) представимы
в виде многочленов степени не более п — 1. Умножение таких многочле-
многочленов производится по модулю f(y). В частности, а = а(у)— некоторый
многочлен. Элемент п[=а{-ч~Г)^р~Г) имеет порядок р— 1 и образует
GF(p)*. С его помощью мы составляем таблицу логарифмов «кон-
«констант»— т.е. элементов простого поля GF(p) С GF(q). Для этого мы
вычисляем а\ = \, а,\, а\, ..., а\~ ; это делается быстро, так как мы
предположили, что р невелико.
2 этап. (Выбор факторной базы.) Факторная база В С GF(q) состо-
состоит из всех неприводимых многочленов g степени не выше /, где / —
некоторый параметр, t < п (выбор параметра / связан с оценкой слож-
сложности алгоритма).
3 этап. (Нахождение соотношений.) Случайно перебирая т, 1 ^ га ^
^ q — 2, мы находим те значения, для которых выполнено соотношение
где Cq € GF(p). Для факторизации нам приходится использовать де-
деление многочленов над конечным полем. Из найденного соотношения
следует, что
га = loga cq + Y^ u-gim) loga g (mod q - 1).
g6B
Здесь loga Cq нам уже известны, а logag — неизвестные величины.
138 Гл. 5. Алгоритмы дискретного логарифмирования
4 этап. (Нахождение алгоритмов элементов факторной базы.) Най-
Найдя на 3 этапе достаточно много соотношений (больше, чем |В|), мы
решаем систему линейных уравнений в кольце Ъ/{ц— 1)Z и находим
loga g Для g е В.
5 этап. (Нахождение индивидуального логарифма.) В простейшей
версии алгоритма мы ищем одно значение т, для которого
(mod/(*)),
где с\ € GF(p). Отсюда находим искомое значение
!oga b = -т + loga a + Y^ P<7 loga g (mod q-\).
Конец алгоритма.
В случае, когда р велико, описанный выше алгоритм неэффекти-
неэффективен. Для логарифмирования в поле GF(p2) Эль Гамаль в работе [ ]
предложил алгоритм, имеющий оценку сложности Lp -; const ариф-
арифметических операций. В его методе используется вложение поля GF(p2)
в кольцо целых алгебраических чисел Zk некоторого мнимого квадра-
квадратичного одноклассного поля К
Одноклассность поля К означает, что в Zk есть однозначное разложе-
разложение на простые множители, и каждый идеал является главным. Наше
уравнение ах = b в GF(p2) тогда перейдет в уравнение ах = C в Zk,
где а = /(а), р = /F). Далее используется стандартная схема логариф-
логарифмирования с факторной базой, неоднократно описанная нами выше.
При этом в качестве элементов факторной базы используются простые
(неразложимые) элементы кольца Zk с небольшой нормой.
Заметим, что алгоритм Эль Гамаля явился, по сути, предвестником
алгоритма решета числового поля.
Еще один алгоритм был предложен Эль Гамалем в работе [ ].
Это алгоритм дискретного логарифмирования в поле GF(pn), где р —
большое простое число, п > 2. Он также имеет эвристическую субэкс-
субэкспоненциальную оценку сложности Lp« -; const . В нем используется
представление GF(pn) в виде ZK/*P, где ZK — кольцо целых алгеб-
алгебраических чисел числового поля К, ф — простой идеал Zk с нормой,
равной рп.
§ 5.4. Дискретное логарифмирование в полях Галуа 139
Теперь рассмотрим случай р = 2, q = 2n. В 1984 г. в работе [ ]
Д. Копперсмит предложил алгоритм, который имеет эвристическую
оценку сложности iJ-; const . Это был первый субзкспоненциаль-
L о J
1
ный алгоритм с показателем ^; для факторизации алгоритмы с такой
о
оценкой сложности появились лишь в 1990 г. (решето числового поля;
см. гл. 3).
Опишем идею алгоритма Копперсмита на примере. Этот алго-
алгоритм основан на нахождении хорошего представления поля GF(q)
в виде GF(q) = GFB)[x]/(P(xj), где неприводимый многочлен Р(х)
имеет вид Р(х) = хп + Q(x), deg Q(x) < я2/3. Пусть п = 127; можно по-
положить Р(х) = х127 +х + 1 —неприводимый многочлен в GFB)[x].
Мы будем рассматривать поле GFBl27) = GFB)[x]/(P(xj). Пусть
а = а(х)—образующий циклической группы GFB127)*. Предположим,
что мы выбрали А(х), В(х) € GFB)[x], degA(x) < 10, deg В (х) < 10,
НОЩА(х), В(х)) = 1. Мы рассматриваем А(х), В(х) как элементы
GF{2127). Пусть С{х)=х32А{х)+В{х), тогда degC(x)<42. Если мы
рассмотрим многочлен D(x),
D(x) = C(xL (mod P(x)), degD(x) < 127,
то
D{x) = хшА{х)А + В{х)А (mod P{x)),
и поскольку
хт=х2
то
D{x) = {х2 + х)А{х)А +В{х)А (mod P{x)).
Таким образом,
С(х)А =D(x) (mod P(xj), degD(x) < 42, degC(x) < 42.
Поскольку степени С(х) и D(x) невелики, то с достаточно высокой ве-
вероятностью они разложатся в произведение неприводимых многочленов
малой степени, которые составляют факторную базу. То есть
(mod P{x)),
(mod P{x)).
140 Гл. 5. Алгоритмы дискретного логарифмирования
Тогда сравнение
4 Yj ei 1о&* & (х) = Yj fi l°Sa Si (x) (mod q - 1)
есть соотношение для неизвестных \ogag/(x)—дискретных логариф-
логарифмов элементов факторной базы нашего поля GFB127). Это однородные
уравнения. Однако можно считать, что наше основание а = а(х) в урав-
уравнении E.4) само есть неприводимый многочлен малой степени, или что
оно раскладывается в произведение таких многочленов:
а = а(х) = \\gj(x)vi (mod P(x)).
Это дает нам неоднородное уравнение
l=\ogaa = Y^ v;logag,{x) (mod q-\),
i
и мы получаем неоднородную систему линейных уравнений относи-
относительно неизвестных величин logagy(x). В остальном схема алгорит-
алгоритма Копперсмита аналогична схеме алгоритма Адлемана, описанного
в §5.3.
В работах [ ; ] с помощью некоторого усовершенствования
алгоритма Копперсмита было проведено дискретное логарифмиро-
логарифмирование в поле G/7B607). Этап нахождения соотношений занял около
19000 mips-years. Для решения систем линейных уравнений было
использовано структурированное гауссово исключение, и затем для
уплотненной системы был применен алгоритм Видемана (см. об этом
алгоритме гл. 11). На решение системы линейных уравнений ушло
более двух месяцев. Автор [ ] также делает вывод о том, что ис-
использованный им метод не позволяет осуществлять в настоящее время
дискретное логарифмирование в GFBn) для п ^ 997.
О дискретном логарифмировании в поле GF(p") см. также [ ; ].
§ 5.5. Дискретное логарифмирование и решето
числового поля
В данном параграфе мы расскажем об алгоритмах решета числового
поля для дискретного логарифмирования по простому модулю. Алго-
Алгоритмы решета числового поля для факторизации появились несколько
раньше (см. об этом § 3.6). Основываясь на идеях этих алгоритмов, Д. Гор-
§5.5. Дискретное логарифмирование и решето числового поля 141
дон в 1993 г. в работе [ ] предложил алгоритм решения уравнения
ах= b (mod p), E.5)
где р — простое число; сложность алгоритма составляет эвристически
Lp -; З2/3 арифметических операций.
Метод Гордона оказался непрактичным. Широкауер в работе [ ]
предложил свою версию алгоритма решета числового поля для реше-
решения E.5) со сложностью Lp\^; F4/9I/3 арифметических операций.
Его алгоритм был реализован Вебером, и в работе [ ] описано лога-
логарифмирование по модулю р х 1040, а в работе [ ] 1996 г. — по модулю
р х 1065. Также Вебер в работе [ ] провел некоторые предваритель-
предварительные вычисления, связанные с дискретным логарифмированием по пред-
предложенному МакКарли модулю р х 10129; позднее в [ ] было найдено
решение задачи E.5) для данного р. Однако это число р имеет спе-
специальный вид, и поэтому используется специальное решето числового
поля, работающее быстрее. Вебер в 1997 г. в своей диссертации [ ]
провел логарифмирование по модулю рх 1085, не имеющему специ-
специального вида, как решетом числового поля (метод Широкауера), так
и с помощью алгоритма Копперсмита—Одлыжко—Шреппеля (версия
с гауссовыми целыми). При этом оказалось, что алгоритм решета чис-
числового поля работает медленнее для данного р (см. [ ; ]), чем
алгоритм Копперсмита—Одлыжко—Шреппеля. Позднее Жу и Лерсье
показали, что для р > 10100 алгоритмы решета числового поля работают
быстрее, чем алгоритм Копперсмита—Одлыжко—Шреппеля, см. [ ].
В январе 2001 г. Жу и Лерсье провели логарифмирование по моду-
модулю рхЮ110 (см. [ ]), а в апреле 2001 г. — по модулю рхЮ120
(см. [ ]). В настоящее время это — рекордное значение р для дис-
дискретного логарифмирования по простому модулю, не имеющему специ-
специального вида.
Прежде чем описать схему алгоритмов решета числового поля для
решения E.5), скажем еще несколько слов о других результатах в этой
области.
Широкауер в работе [ ] обобщил алгоритм работы [ ] на
случай поля GF(p"). При q = р" оценка сложности составляет
Lq[l/2>; F4/9I/3] арифметических операций. Фактически это верно при
фиксированном р и п^оо. Согласно [ ], указанная оценка спра-
справедлива и при log/? > n2+t для некоторого s > 0. Семаев в работе [ ]
также получил ряд результатов о дискретном логарифмировании в ко-
конечных непростых полях.
142 Гл. 5. Алгоритмы дискретного логарифмирования
В работе [ ] идеи Копперсмита и Широкауера применены для
получения алгоритма дискретного логарифмирования в простом по-
поле GF(p) с наилучшей известной оценкой сложности Lp Lr; с , где с =
= (92+ 26v/13I/3/3« 1,902.
Для чисел специального вида в работе [ ] была предложена
, Г2 1
версия алгоритма решета числового поля со сложностью Lp\-\ с\,
L о J
где с « 1,00475. За счет того, что с близка к 1, такой алгоритм в неко-
некоторых случаях работает быстрее алгоритмов со сложностью Lp\-=; с\,
как показывает пример работы [ ].
См. также [ ; ].
Теперь мы опишем, следуя [ ], общую схему алгоритмов ре-
решета числового поля для решения задачи E.5). Мы опишем также,
в виде некоторого частного случая этой схемы, версию алгоритма
Копперсмита—Одлыжко—Шреппеля с гауссовыми целыми. Принято
рассматривать алгоритм работы [ ] как отдельный метод, отличный
от решета числового поля, поскольку он был придуман раньше и имеет
собственную оценку сложности.
Далее в этом параграфе мы снова, как и в § 3.6, предполагаем,
что читатель знаком с алгебраической теорией чисел в объеме кни-
ги[ ].
Схема алгоритма.
1 этап. На этом этапе мы сводим решение уравнения E.5) к реше-
решению уравнений
ах = s (mod p), s € S,
где 5 — некоторое конечное множество достаточно малых натуральных
чисел. Грубо говоря, мы ищем одно z € N, такое, что
аг ¦ b = Y\Sj (mod p),
I
где Sj — не очень большие простые числа, скажем, Sj^Lp -; const .
Факторизацию az ¦ b (mod p) мы можем проводить методом эллип-
эллиптических кривых Ленстры (см. гл. 4). Тогда 5 = {sy}, \ogab = — z +
+ Y^ loga Sj (mod /7—1).
i
2 этап. С помощью некоторой техники мы выбираем два многочле-
многочлена gi(x), g2(x) &Z[x], deggi(x) = rii, i=\,2, имеющих общий корень
§5.5. Дискретное логарифмирование и решето числового поля 143
т (mod р). Мы обозначаем для /'=1,2:
а,- € С — фиксированный корень gj(x),
h; € N — старший коэффициент gj(x),
Kj = q(aj),
О/ = Ъщ — кольцо целых алгебраических чисел поля Щ.
Замечание 5.7. Версия алгоритма Копперсмита—Одлыжко—
Шреппеля с гауссовыми целыми в рамках данной схемы выглядит
следующим образом:
1) п,\ = 2; g[ (х) — неприводимый многочлен второй степени; поле К[
есть мнимое квадратичное одноклассное поле;
2) «2=1, g2 (х) — линейный многочлен вида Ux + V, U, V € Z.
3 этап. (Выбор факторной базы.) Для /' = 1, 2 мы находим фактор-
факторные базы
Fj = {p\p — простые идеалы О,, Norm р < Bj} U {hj}.
Здесь В/ — некоторые постоянные, субзкспоненциально зависящие
от р.
4 этап. С помощью некоторого просеивания мы находим множество
пар С = {(с, d)} € Z2 такое, что для ?=1,2 идеалы (ft,(c + йщ)) в коль-
кольце Oj гладки по отношению к факторной базе F/. При этом множество С
должно быть достаточно велико, \С\ >\Fi\ + \F2 .
5 этап. Для каждого s G S мы находим специальные соотношения.
Для каждого простого идеала ps€0i, лежащего над s, мы находим
пару чисел с, d такую, что идеал (h\ (с + ad))/pi гладок по отношению
к F[ и идеал (/^(с + ^аг)) гладок по отношению к F^-
6 этап. Для каждого большого простого числа q, делящего р — 1
(мы считаем, что факторизация р — 1 нам известна), делаем следующее.
1. Вычисляем так называемые аддитивные характеры Широкауера
(определение см. ниже) от элементов h,(c + da.,), /'=1,2, (с, d) € С.
2. Находим матрицу А с элементами из поля Ъ/цЪ. Ее столбцы
состоят из векторов показателей в разложении hj(c + da/) на простые
идеалы и из значений аддитивных характеров.
3. Путем решения системы линейных уравнений АХ = 0 (mod q) на-
находим элементы у» € С,-, i = 1, 2, такие, что у» = Щ, &,• € С», г = 1, 2.
4. С помощью кольцевых эндоморфизмов
Фу: "L[hj(Xj\ -> Z/pZ, <p/(V/) = him (mod P)> / = 1.2,
мы переходим от q-x степеней в кольцах О/ к целым числам и на-
находим k, /eZ такие, что ak-bl = dq (mod р). Из этого следует, что
144 Гл. 5. Алгоритмы дискретного логарифмирования
k + lx = 0 (mod q), где х (mod р — 1) — решение E.5). Отсюда мы на-
находим значение х (mod q).
Замечание 5.8. Для версии [ ] с гауссовыми целыми нам не нужно
вычислять аддитивные характеры Широкауера, поскольку мы работаем
в кольцах О, с однозначным разложением на множители и с конечной
группой единиц.
7 этап. На 6 этапе мы нашли значение х (mod q) для больших
простых делителей q числа р — 1. Предположим, что р — 1 не делит-
делится на квадрат большого простого числа. Тогда недостающие значения
х (mod qa<>), где q — небольшие простые числа, qa<i\\p — 1, мы найдем
с помощью алгоритма Полига—Хеллмана. Затем с помощью китайской
теоремы об остатках мы найдем искомое значение х (mod p — 1).
Конец алгоритма.
Определим теперь аддитивные характеры Широкауера, возникаю-
возникающие на 6 этапе алгоритма. Пусть а — алгебраическое число, dega = n,
f(x) = а„х" + ... + по € Щх\ — минимальный многочлен для а, К = Q(a),
О = Zk — кольцо целых алгебраических чисел поля К. Положим
? = НОК{|(б>/Ь)*| | Ь —простые идеалы О, Ь|(/)}.
Очевидно, что Г является подгруппой относительно умножения. Рас-
Рассмотрим отображение
X: (Г, •) -> Ю/12О, Х(у) = Ге - 1 (mod /2O).
Нетрудно видеть, что X является гомоморфизмом мультипликативной
полугруппы в аддитивную группу Ю/12О. Пусть
где coi, ..., (х>п — целый базис кольца О. Тогда Ю/12О является
линейным пространством над Z//Z с базисом /coi (mod PO), ...
..., /со„ (mod PO). Пусть П,- = /со,- (mod fO), и пусть Х,-(у)= Х>А,
(=1
где bi € Z//Z. Рассмотрим отображения X,-: Г —>• Z//Z, Х,(у) = b-t (mod /).
Эти отображения называются аддитивными характерами Широкауера,
причем X однозначно определяется набором Хь ..., Х„.
В работе [ ] показано, что при некоторых условиях из равенства
My) = 0 следует, что у = §', где 8 € О. Это обеспечивает нам нахождение
элементов у» = Щ на 6 этапе алгоритма.
Теперь вкратце опишем просеивание, применяемое на 4 этапе алго-
алгоритма. Условие гладкости идеала (hi(с + da,)) в кольце С,- равносильно
§5.6. Частное Ферма и дискретное логарифмирование по составному модулю 145
гладкости нормы ЫоппкдД/гДс + йа,-)) в кольце целых чисел. Данная
норма представляет собой некоторый однородный многочлен /,(с, d),
где fi(X, Y) &ЩХ, Y]. Предположим, что мы хотим найти те значения
с, d, для которых fi(c, d) гладко по отношению к некоторой границе
гладкости В. Если мы фиксируем d, простое число q и натуральное
число h, то значения с, такие, что qh\f(c, d), будут лежать в арифмети-
арифметической прогрессии
c = d ¦ r-j (mod qh),
где r-j (mod qh) — какой-либо из корней уравнения f(Z, 1) = 0 (mod qh).
Теперь ясно, что мы можем организовать просеивание аналогич-
аналогично алгоритмам, описанным в §3.4, 3.6. Этот вид просеивания на-
называется линейным просеиванием. Существует также просеива-
просеивание по векторам (тогда мы движемся не по арифметической про-
прогрессии, а по некоторой решетке в 1?) и решетчатое просеивание,
см. [ ].
На этом мы закончим описание алгоритмов решета числового поля
для дискретного логарифмирования. Подробное описание этих алго-
алгоритмов может, пожалуй, составить предмет для написания отдельной
монографии.
Замечание 5.9. При помощи некоторого развития методов реше-
решета числового поля в работе [ ] получен алгоритм дискретного лога-
логарифмирования в конечных полях GF(pn) со сложностью Lpn -; const
арифметических операций. Однако эта оценка сложности справедлива
не для всех значений р", см. [ ]. Точнее, должно выполняться нера-
неравенство log/? < я1/2.
§ 5.6. Частное Ферма и дискретное
логарифмирование по составному модулю
В данном параграфе мы описываем некоторые методы проверки раз-
разрешимости и решения задачи дискретного логарифмирования в коль-
кольцах вычетов Ъ/тЪ по составному модулю т, а также в кольцах ви-
вида GF(p)[x]/(f(x)), где f(x) €GF(p)[x]—многочлен, не являющийся
неприводимым. Ряд результатов в этом направлении был получен в ра-
работах [ ; ; ].
Определение 5.10. Пусть г eN, r = 2a°p*1 .../?"', есть разложение г
на простые множители, 2 < р\ < ... < pt. Определим функцию Кармайк-
ла Х(г):
= НОК(сроBао), Ц>(РТ),...
10 О. Н. Василенко
146 Гл. 5. Алгоритмы дискретного логарифмирования
где ср —функция Эйлера, фОA) = сроB) = 1, фОD) =2, сроBа°) =2а°-2
при ао ^ 3.
Нетрудно видеть, что при а € Z, (а, г) = 1, выполнено сравне-
сравнение ах(г) = 1 (mod г).
Определение 5.11. Пусть re Z>i, aeZ, (о, г) = 1. Частное Фер-
Ферма Q(a, г) определяется соотношением
(здесь обозначает результат деления ах{-г) — 1 на г в кольце Zj.
а() - 1
Q(a, г) = (mod г)
чает результат деления ах{-
Опишем некоторые свойства частного Ферма; более подробно
см. [ ; ; ; ].
Лемма 5.12. Пусть a, b € Z, (а, г) = (Ь, г) = 1. Тогда
Q{ab, г) = Q{a, r) + Q{b, r) (mod r).
Доказательство. Поскольку
a\{r) ^
ТО
{ab)x(r) = 1 + r(Q(a, r) + Q{b, r)) (mod r2).
Из этого сравнения следует утверждение леммы. ?
Замечание 5.13. Мы показали, что частное Ферма обладает тем же
свойством, что и логарифм: оно переводит произведение в сумму.
Определение 5.14. Рассмотрим Q(r, x) как функцию на множестве
х € Z, (х, г) = 1. Назовем т ? Z, т Ф 0, периодом Q(r, x), если
1) т делится на все простые числа, делящие г;
2) Q(a + т, г) = Q(a, r) (mod г) для всех а € Z, (а, г) = 1.
,¦2
Лемма 5.15. Число R= -г——г является периодом Q(r, x).
(л(Г), Г)
Доказательство. Поскольку R = г ¦ ———-, то г \ R; следователь-
но, первое условие в определении периода выполнено. Далее, поскольку
R2
— =0 (mod r), то
Q(a + R,r)= {a + R) " ~l (mod r) = a ' ~ 1 + X^c^^ • у (mod r).
Далее,
Л2-1 = n,\ ч = 0 mod r).
r r(k(r), r)
Поэтому Q(a + R, r) = Q{a, r) (mod г), что и требовалось доказать. ?
§5.6. Частное Ферма и дискретное логарифмирование по составному модулю 147
Замечание 5.16. Если т — период Q(x, r), то частное Ферма явля-
является гомоморфизмом мультипликативной группы (Z/mZ)* в аддитивную
группу Z/rZ.
Рассмотрим теперь задачу дискретного логарифмирования ах =
= b (mod m), где т — период для частного Ферма Q(x, r). Из равенств
(а, т) = (Ь, т) = 1 следует, что (а, г) = (Ь, г) = 1. Поэтому в силу
периодичности справедливо соотношение
Q(b, г) = Q{ax, r) (mod r) = xQ(a, r) (mod r).
Если выполняется условие (Q(a, г), г) = 1, то
х= Q{b, r)Q{a, r)~l (mod r).
Таким образом, мы найдем х (mod r); нам же надо найти х по моду-
модулю порядка элемента a (mod m) в (Z/mZ)*. В некоторых случаях это
возможно; они описаны в работе [ ]. Эти случаи связаны с так на-
называемыми Х-низкими числами. О Х-низких числах см. также [ ].
Пример 5.17. т= 1600 = 2652, а = 3. Рассмотрим уравнение
3х = Ь (mod 1600).
Положим г = 80 = 245; Х(г) = 4, R= п.. . = ^ = 1600 = т. По
(Х(г), г) 4
лемме 5.15 число т является периодом Q(x, r). Далее,
0C, г) = ^=i (mod 80) = 1 (mod r).
Поэтому в силу периодичности
Q(b, г) = Q{3X, r) = xQ{3, r) = x (mod 80) = x (mod X(m)),
поскольку X(m) = 80. Так как порядок 3 (mod m) в (Z/mZ)* делит X(m),
то решение уравнения 3х = b (mod 1600) задается формулой
х=Ь-^- (mod 80).
Для найденного по этой формуле х следует сделать проверку, так как
не для каждого b € (Z/mZ)* уравнение 3х = b (mod m) разрешимо.
В этом примере мы пользуемся тем, что для данных т и г выполнено
условие X(m) | г; это условие выполняется далеко не всегда.
С помощью частного Ферма можно проводить подъем решения
уравнения ax = b (mod pa), и находить решение уравнения ах =
= b (modpa+1).
ю*
148 Гл. 5. Алгоритмы дискретного логарифмирования
Теорема 5.18. Пусть р — нечетное простое число, a
т = ра. Пусть g € Z, g (mod m) — первообразный корень по моду-
модулю т, b € Z, (b, p) = 1. Обозначим х= [\ogb]a eZ/cp(/?a)Z— решение
уравнения gx = b (mod m). Тогда [logft]a есть единственное по мо-
модулю ц>(ра) решение системы уравнений
(Q(g, p*-l)x=Q(b, р«-1) (mod pa-'),
\x=[\ogb]i (modp- 1),
где [\ogb]i означает решение уравнения gy = b (mod p).
Следствие 5.19. Из теоремы следует, что дискретное лога-
логарифмирование в группе (Z/paZ)* при р>2 сводится к дискретно-
дискретному логарифмированию в (Z/pZ)*.
Доказательство теоремы. Обозначим г = ра~1. Тогда
г2 р2а~2
R = = =P* = т
) (р«-2(р _ 1), pa-l) P т-
По лемме 5.15 число т является периодом Q(x, г). Поэтому из gx =
= b (mod m) следует, что xQ(g, r) = Q(b, r) (mod r); т. е. выполне-
выполнено первое уравнение системы. Также из gx = b (mod m) следует, что
gx = b (mod p). Это означает, что выполнено и второе уравнение.
Для доказательства единственности достаточно показать, что
Q(g, pa~l)^0 (mod p). Поскольку g (mod pa) является первооб-
первообразным корнем, то gp~l ф 1 (mod p2). Отсюда по индукции получаем,
что для и = 1, 2, 3, ... выполнено равенство
С1 *
где Аи е Z, Аи ф 0 (mod р). Положим и = a — 2; тогда число ?ф(рС1 * — 1
делится на ра~1 и не делится на ра. Так как Xfp") = cpf/?1*), то из ра-
равенства
i р-^""') -1
следует, что Q(g, p") ^0 (mod p). ?
Теорема 5.20. Пусть гп = 2а, где a € Z^. Пусть b € Z, 6 не-
нечетно,
6 = (-l)fc»5fc| (mod2a),
гCе йо = О при b = \ (mod 4), йо = 1 при 6 = 3 (mod 4), м 0<&i<
^ 2a~2 — 1. Положим [logft]a = йь Тогда [logft]a есть единственное
§5.6. Частное Ферма и дискретное логарифмирование по составному модулю 149
по модулю 2а~2 решение уравнения
xQ{5, 2а) = Q{b, 2а) (mod 2а).
Следствие 5.21. Из теоремы 5.20 следует, что дискретное ло-
логарифмирование в группе Z/2aZ* при а ^ 5 сводится к вычислению
Q{b, 2a)QE, 2а-2)-' (mod 2a).
Доказательство теоремы. Положим г = 2а~2. Тогда
Л c,2a-i
п _ ' _ z _ oa _ m
(Х(г), г) B«-4, 2«-2)
является периодом Q(x, г). Если Ь = (—1)*°5*' (mod 2a), то
, r) = Q((-l)*°5fc|, r) = U 1} °r) = -—-—- (mod r),
поскольку \(г) четно в силу условия a ^ 5. Значит,
Q(b, r) = Q{5kl, r) = ki Q{5, r) (mod r).
Для доказательства единственности достаточно проверить, что QE, r)
нечетно. Поскольку
гХB-2) , г2=—' ,
QE, 2-2) = 2a_2 = ^r^ (mod 2-2),
то достаточно показать, что 52° ф 1 (mod 2a~') при a ^5; это легко
проверяется индукцией по а. Теорема 5.20 доказана. ?
Рассмотрим теперь уравнение
a-^Mmods), (a, s) = (b, s) = I, E.6)
где s € N, s> I, s — нечетно, и известно полное разложение s на про-
простые множители ц{.
k
s = l[q«>, k>2. E.7)
(=i
Пусть также известно полное разложение qi — 1 на простые множители:
и,-
/=1
Мы будем изучать вопрос о проверке разрешимости уравнения дис-
дискретного логарифмирования E.6).
Обсудим сначала, как можно решать уравнение E.6). Пусть g,- —
первообразные корни по модулям q"', i=\, ..., k; их можно найти,
150 Гл. 5. Алгоритмы дискретного логарифмирования
зная E.8). Пусть с,- при i= 1, ..., k удовлетворяют сравнениям
ici = gi (mod<7"'')>
| с, = 1 (mod q"') при /' ф i.
Тогда Ci (mod s) имеют порядки y(q"') = Mi, и
(Z/sZ)* = {сi (mod s))^, x ... x (ck (mod s))^
есть разложение (Z/sZ)* в прямое произведение циклических групп.
Пусть
Га.cf'...^ (mods),
}ft = cf' ...cf* (mods).
Числа Л,-, 0<Л,<УИ,— 1, мы находим, решая уравнения gf = a (mod qf)
(аналогично находим В,). Решение таких уравнений с помощью теоре-
теоремы 5.18 сводится к решению уравнений gf = a (mod qi). To есть для
нахождения Ait Bt нам нужно уметь решать задачу дискретного ло-
логарифмирования по простому модулю. В предыдущих параграфах мы
видели, что это трудная задача, если модуль велик.
Допустим, что нам все же известны числа А-и В,- в E.9). Тогда
из E.6) и E.9) следует, что
Отсюда
Aix = Bi (mod <?(q"')), i=\, ..., k. E.10)
Для того, чтобы система уравнений E.10) имела решение, необходимо,
чтобы числа
ф(<7!")) E.11)
делили Bi. Если это выполняется, то из E.10) следует, что
^i) (mod <pto|")/A-). г = 1, ..., k. E.12)
В свою очередь, для разрешимости системы E.12) необходимо
и достаточно, чтобы при всех 1ф] правые части г'-го и /'-го уравнений
из E.12) были сравнимы по модулю НОД(ср(д"')/Д-, <p(q:')/Df). В этом
случае мы найдем решение системы E.12); обозначим его
х0 (mod НОКМО/А, ..., <р(<#)М)). E.13)
§5.6. Частное Ферма и дискретное логарифмирование по составному модулю 151
Лемма 5.22. Для определенных по формулам E.11) чисел Д вы-
выполнено равенство
orda (mods) = HOK(<p«l)/'Db ..., (f(q"kk)/Dk),
где orda (mod s) обозначает порядок элемента a (mod s) € (Z/sZ)*
Доказательство. Поскольку
orda (mod s) = HOK,=i *(ord(a (mod q"'))),
то достаточно доказать, что
ord(a (mod qf)) = (f{qf)/Dit i=\,...,k.
По определению чисел А, справедливо равенство a = gf' (mod qf).
Пусть р — простое число, a = vP(<p(q"')) ^ 1. Если \p(Ai)^a, то
vp(ord(a (mod q"')))=0 и vp(A) = a. Если же $ = vp(Ai) и 0<p<a,
то очевидно, что vp(ord(a (mod q"')))=a — fi, и vp(Z),)=p. Во всех
случаях
vp(ord(a (mod qf))) =
Лемма 5.22 доказана. ?
Замечание 5.23. Числа Д = НОД(Л,-, <p(q"')) нетрудно найти, зная
ord(a (mod qfj), даже если мы не знаем A-t. Это следует из до-
доказательства леммы 5.22. Действительно, пусть р и а те же, что
в доказательстве леммы 5.22, ?,- = ord(a (mod q"')). Если р\Е-и
то pa\At, откуда vp(Di) = a. Если же ре \\ ?,-, где 1 < е< vp((p(^"')),
то \p(Ai) = vp(<p(q"')) - е; поэтому \p(Di)=\p(<p(q"'))-е. Заметим
также, что ?,¦ можно вычислить, зная разложение E.8); алгоритм
нахождения порядка элемента см. в §1.5.
Замечание 5.24. Из леммы 5.22 вытекает, что E.13) есть искомое
решение уравнения E.6) в случае, когда система уравнений E.12) раз-
разрешима.
Мы показали, как можно решить уравнение E.6), зная чис-
числа А{, ..., Ak, B\, ..., Bk. Далее мы докажем две теоремы, дающие
необходимые и достаточные условия для разрешимости E.6). В этих
теоремах мы не предполагаем, что Л,- и В,- нам известны.
п
Лемма 5.25. Пусть q — нечетное простое число, q — 1 = П р*' —
/=1
разложение q — 1 на простые множители. Пусть и € N, a, b €
€ (Z/g"Z)*, а ф 1 (mod qu). Пусть также g — первообразный корень
по модулю qu. Тогда выполнены следующие утверждения.
152 Гл. 5. Алгоритмы дискретного логарифмирования
1) Если
п
ord(a(mod qu)) = q^^^p*^1', где ру € Z
то
a = g '=' (mod 4"),
где 0 < / < <р(<7"). При этом, если и>\ и (Зо < и — 1 млм если м = 1,
то <71 /; если /' > 0 и Р/ < ay, то р} \ I.
2) Сравнение ах = Ь (mod qu) разрешимо тогда и только тогда,
когда ordF(mod qu)) делит ord(a(mod qu)).
Доказательство. Первое утверждение леммы очевидно, а второе
вытекает из цикличности группы (Z/g"Z)*. ?
Вернемся к вопросу о разрешимости E.6), используя обозначе-
обозначения E.7), E.8), E.9).
Лемма 5.26. Уравнение E.6) разрешимо тогда и только тогда,
когда разрешима система сравнений
r),
= Bi (mod/7^), j=\,...,Vi, i=\,...,k.
Доказательство. Сравнение ах = b (mod s) выполнено тогда
и только тогда, когда
с?" = cf (mod #'), i=\,...,k.
Для этого необходимо и достаточно, чтобы система Л,х = В,- (mod <p(q"')),
l=\, ..., k, была разрешима. Очевидно, что ее разрешимость эквива-
эквивалентна разрешимости E.14). ?
Теорема 5.27. Пусть в формуле E.8) рп = 2, a,i = 1 для I = 1,..., k.
Пусть также все простые числа qt и рц для ] = 2, ..., и,-, I = 1, ..., k,
различны. Предположим, что аф 1 (mod qf),
ord(a (mod q?)) = qf-l-^f[p-r{i', i=l •••- *>
причем fiio<Ui — 1, если м,->1, м р,-/ < a,y (Зля всех / = 1, ..., w,-,
г = 1, ..., й. Пусть также ordF(mod g"')) | ord(a(mod ^"')) «Зля 1 =
= 1, ..., й. Уравнение E.6) разрешимо тогда и только тогда,
когда
§5.6. Частное Ферма и дискретное логарифмирование по составному модулю 153
Доказательство. Мы предположили, что й^2 в E.7). Тогда
из E.9) и п. 1 леммы 5.25 следует, что
где Ц € N, (Li, <p(q"')) = 1. Заметим также, что если щ = 1, то C,о = 0;
кроме того, qi\Li. Пусть
ordF (mod q?)) = q?-1-™ f[p*rr\ i=\,...,k.
/=i
Тогда из условия теоремы следует, что Y«/^P«7 ПРИ всех /'= 1> •••> vi>
i=\, ..., k. Из леммы 5.25 получаем, что
где Ni € N. Применим лемму 5.26 и сведем разрешимость E.6) к раз-
разрешимости системы E.14). Если мы рассмотрим уравнение
из этой системы, то оно будет равносильно уравнению
?-1-**). E.15)
Данное уравнение разрешимо; при щ = 1 это очевидно, а при щ > 1
разрешимость следует из того, что qi\Li. Если мы рассмотрим урав-
уравнение
*1), />1, E.16)
из системы E.14), то оно также будет разрешимо, поскольку vPij(Ai) =
= flij ^Yij ^Vpij(Bi)- Поскольку модули в уравнениях E.15) и E.16)
нечетны и различны по условию теоремы, то для разрешимости E.14)
необходимо и достаточно, чтобы была разрешима подсистема урав-
уравнений
AiX = Bi (mod 2), i=\,...,k. E.17)
Так как a,i = 1, то (За =0 для 1= 1, ..., k, и числа L,- нечетны. По-
Поэтому Ai=\ (mod 2), i=l, ..., й. Следовательно, E.17) примет вид
154 Гл. 5. Алгоритмы дискретного логарифмирования
x = Bi (mod 2), i = 1, ..., k. Теперь для разрешимости E.17) необходи-
необходимо и достаточно, чтобы выполнялось условие
Bi = E (mod 2), i=\,...,k,
где Е = 0 или ? = 1. Далее,
r'teD/^' = (_1)в1 (mod ^
Из последнего соотношения следует утверждение теоремы. ?
Теорема 5.28. Пусть qi, • • •, ^а — различные нечетные простые
числа,
и,-
qi-\=2\[p4f, i=\,...,k,
г<3е р,у — нечетные простые числа. Пусть числа рц при /' = 2, ..., и,-,
i = 1, ..., й, различны. Обозначим через s = q\...qk. Пусть а, Ь € N,
(a, s) = (ft, s) = 1, /eN, 1</<й. Предположим, что a (mod ^,)
имеет порядок qt — 1 (Зля г = 1, ..., t и порядок (qi — 1 )/2 (Зля
i = t+\, ..., k. Уравнение E.6) разрешимо тогда и только тогда,
когда
где (- j — символ Лежандра.
Доказательство. Из E.9) и условия теоремы следует, что А-ь вза-
взаимно просты с cp(<7i) = <7( — 1 Для г = 1, ..., t, а для г = / + 1, ..., k чис-
числа А, четны и взаимно просты с (qi— l)/2. Из леммы 5.10 получаем
систему
: = B«(mod2),
где j = 2, ..., Vj, l=\, ..., k. Эта система разрешима тогда и только
тогда, когда разрешима подсистема
Эта подсистема имеет вид
\х = Вг (mod 2), i=\,...,t,
\Bi = 0 (mod 2), г = /+1, ..., k.
§5.6. Частное Ферма и дискретное логарифмирование по составному модулю 155
Заметим, что В,- = 0 (mod 2) тогда и только тогда, когда ( — 1 = 1.
Утверждение теоремы теперь очевидно. ?
Замечание 5.29. В теоремах 5.27 и 5.28 наибольшим общим де-
делителем чисел <7( — 1 и Qj ~ 1 является число 2. Это позволяет полу-
получить необходимые и достаточные условия для разрешимости E.6). Если
<7( — 1 и Qj — 1 имеют в качестве общего делителя небольшое простое
число р > 2, то для проверки разрешимости E.6) можно предложить
алгоритм, аналогичный алгоритму Полига—Хеллмана. Мы предлагаем
читателю описать этот алгоритм в качестве упражнения.
Зафиксируем простое число р и рассмотрим задачу дискретного ло-
логарифмирования ах = Ь в группе обратимых элементов (Z/pZ[x]/(F(x))y*
факторкольца Z/pZ[x]/(F(xj), где многочлен F(x) € Z/pZ[x] — при-
приводим.
Зафиксируем неприводимый многочлен f = f(x) = x"+An_lxn~l +...
... + Aq g Z/pZ[x] степени п, п>\. Приведем несколько вспомо-
вспомогательных утверждений о свойствах колец Rk = Z/pZ[x\/(fk(x)),
k = 1, 2, 3, ... Хорошо известно, что R\ = GF(p") и что существует
g(x) &Z/pZ[x], deg g(x)<n, такой, что g(x) (mod /) имеет порядок
рп — 1 (см., например, [ , гл. 2]). Зафиксируем g(x).
Лемма 5.30.
1) Найдется многочлен gi (х) (равный либо g(x), либо g(x) + f(x)),
такой, что deggi(x) <пи gi(x)p"~l ф 1 (mod /2).
2) Если h = h{x) € Z/pZ[x], f\h, то при всех j ^ 0
3) Если /^1 p'~l <k^p>, то порядок любого обратимого
по умножению элемента кольца Rn делит р'(рп — 1), и существу-
существует элемент такого порядка.
Доказательство. Пусть g(x)p"~l = 1 + f(x)t(x), где t(x) ? Z/pZ[x],
f{x) \ t(x), I € N. Если / = 1, то gi (x) = g{x). Если / ^ 2, то
Ш + f{x)f~l = g(xf~l + (pn - \)g(xf~2f(x) + ...=
где t\(x) € Z/pZ[x]. Следовательно, gi(x) = g(x) + f(x) удовлетворяет
первому утверждению леммы при /^2. Далее, пусть h{x)p ~l = 1 +
+ f(x)t(x). Тогда /г(х)(р"~1)/У = 1 + t(x)plf(x)pl, что доказывает второе
утверждение. Легко видеть, что элемент g\{x) (mod fk{x)), где gi(x)
определен выше, имеет порядок р'(р" — 1) в R^; третье утверждение
леммы теперь также очевидно. ?
156 Гл. 5. Алгоритмы дискретного логарифмирования
Лемма 5.31. Пусть k>\. Тогда \Rk\=pnk, \R*k\=pn(k-^(pn - 1).
Далее, при p'~l <k^p' справедливо разложение R% в прямое про-
произведение циклических групп
R*k = (lkfi)P"-i х Eад)д, х ... х (lk,Sk)p>t,Sb,
где 4д + ... + lKSk =n{k-l) uj = lk<l ^ lk<2 ^ ... ^ lk<Sk. В частности,
при 1 < k^p sk = n(k — 1) и
R*k = {lkfi)p«-l X (lKi)p X ... X {lkfl(k-V))p-
Доказательство. Элементы Rh\R*k — это многочлены вида
f{x) ¦ (ao + aix + ... + an(?_i)_ix"(fc~1)~1). Отсюда следует утвержде-
утверждение о \Rl\. Утверждение о разложении R% в прямое произведение
следует из теоремы о разложении конечной абелевой группы в прямое
произведение циклических групп и леммы 5.12. ?
Лемма 5.32. Пусть k ^ 2, \ е Rk- Тогда элемент \ единственным
образом представим в виде
I = ао(х) + ci (x)f(x) + ... + afc_! [x)f"' (x) (mod f{x)),
где ai(x) € Z/pZ[x], deg < п. При этом \&R*k тогда и только тогда,
когда uq (х) Ф 0. Далее, порядок \ равен степени числа р тогда
и только тогда, когда ао(х) = 1.
Доказательство. Докажем только последнее утверждение леммы.
k k l.
Достаточность следует из равенства Е,р =ао{х)р (mod / ). Необходи-
Необходимость следует из леммы 5.31, так как количество элементов порядка,
равного степени р, равно p"(k~l) — как раз столько, сколько имеется
элементов \, у которых uq (х) = 1. ?
Лемма 5.33. Пусть 2< k </?, М = n(k — 1), и т)ь ..., т\м есть сле-
следующий набор элементов порядка р в R*k:
\+f{x), \+xf{x), ..., \+x"-lf(x);
1 +f(xf, 1 +xf(xf, ..., 1 +xn-lf(xf;
\+f{x)k-\ \+xf{x)k-\ ..., \+xk-lf(x)"-1.
Тогда R.% = (r)o)p«_i x (t)i)p x ... x (г\м}р есть разложение R*k в пря-
прямое произведение (здесь т)о — какой-либо элемент порядка р" — 1
eR*k).
Доказательство. Очевидно, что при/' = 1, ..., М элементы гц име-
имеют порядок р. Теперь для доказательства леммы достаточно показать,
§5.6. Частное Ферма и дискретное логарифмирование по составному модулю 157
что из равенства
«•••C^oV---^ (mod/*),
где 0 < г/о, zo < р" — 1, 0 < г/у, zy < р, j = 1, ..., М, следует, что г/у = zy,
j=\,...,M. Действительно, так как гу = 1 (mod /(х)) при /^1,
то г]* = г]д° (mod f(xj). Отсюда порядок элемента г]о делит (г/0 — z$)pk.
Поэтому г/о = Zq. Сократив наше равенство на rfo° и редуцируя его по
mod /2, получим
...т^=гЦ1...г^ (mod/2).
Но
(mod/2);
T)f ...r]^ = (l + (z1+z2x + ... + znx"-1)/(x)) (mod/2).
Следовательно, у\ = Z\, ..., у„ = zn и т. д. ?
Следующая лемма общеизвестна.
Лемма 5.34. Пусть mi,m2€N, й = {т\,тч). Тогда (ргщ — 1,
Лемма 5.35. Пусть k e N, й ^ 2, /г е Л^, порядок h делит р. Рас-
Рассмотрим функцию
^^ (mod/*).
Тогда Qo(h) корректно определена и
Qo(hih2) = Q0{hi) + Q0(h2) (mod fk).
Доказательство. По лемме 5.32 h представим в виде
h= I + aif + ... + ak-ifh~l (mod/*), dega,<«.
По условию
h" = 1 + </" + ... + apk_Jp{k-l) (mod/*") = ! (mod/*).
Пусть /'^1, (j — \)p < k^jp; тогда очевидно, что ai = ... = ay_i =0.
Поэтому
A" - 1 = a?/w + ... + apk_Jp{k-l) (mod f) = 1 (mod /*")¦
Отсюда следует корректность определения Qo(h). Далее,
hp = l+pQ0{h) (mod/2*).
158 Гл. 5. Алгоритмы дискретного логарифмирования
Поэтому
(/цА2)" = \+fk- (Q0(Ai) + Qo(h2)) (mod f2k).
Лемма доказана. ?
Теорема 5.36. Пусть k^2, hi, h2&R*k. Если порядок hi делит
pn — 1, то для разрешимости уравнения h\ = h\ необходимо и до-
достаточно, чтобы порядок hi делил порядок h2.
Доказательство. Следует из леммы 5.31 и цикличности подгруппы
(lkfi}P«-i3hi,h2. П
Теорема 5.37. Пусть р/2< k^p, элементы hi, h2 группы R%
имеют порядок р. Пусть (по лемме 5.32)
hi = 1 + ci(x)f(x) + ... + ak-i(x)f(x)k-1 (mod fk),
h2=\ + bi(x)Hx) + ... + bk_i{x)f{x)k~l (mod f),
dega,-, degft/<«. Если Ь\(х)фО и уравнение hi=h\ разрешимо,
то г/i = (ai(x)bi(x)-l)p (mod f(x)).
Доказательство. По лемме 5.35 выполнено сравнение Q0(^i) =
= yQ(j(h2) (mod fk). Далее, так как р ^ k, то
Qo(Ai) = </""* (mod fk), Q0(h2) = b\f~k (mod fk).
Поскольку 2k — p^\, то получаем сравнение a\=yb\ (mod f2h~p),
из которого следует утверждение теоремы. ?
Замечание 5.38. Если заданы элементы hi, h2, имеющие порядок р,
и bi (x) ф 0, то, найдя у по формуле теоремы 5.37, можно затем провер-
проверкой убедиться, выполнено ли равенство hi = hy2.
Теорема 5.39. Пусть р/2 <k^p. Пусть hi, h2 € R%, порядок hi
равен pd\, порядок h2 равен pd2, и di\d2\pn — 1. Пусть (по лем-
лемме 5.22)
1 (mod/*),
hp"~l = 1 + bi(x)Hx) + ... + bk-iWnx)"-1 (mod fk),
dega,-, degft/ <n«&](x)^0.
1) Предположим, что найдется у^^Ъ/рЪ, для которого вы-
1
полнено сравнение г/о = {а\Ь{ l)p (mod f(x)). Если
то уравнение hi = hi разрешимо.
§5.6. Частное Ферма и дискретное логарифмирование по составному модулю 159
2) Если класс вычетов (а\Ь^{)р (mod f(x)) не содержит эле-
элемента г/о € Ъ/рЪ, или он содержит г/о € Ъ/рЪ, но hp~{ ф {hp ~1)Уо,
то уравнение hi = h\ неразрешимо.
Доказательство. Докажем первое утверждение. По лемме 5.31
hi = iukiiuk\...CS-D 'mod fk">> ft2=CoSfc'i • • • CS-D *mod fk">-
Если di\d<z, то найдется г/i, 0^yi<pn— 1, такое, что Z,uk°0 = (Ckoo)yi
(mod /*). Кроме того, из условия следует, что
(?U<i?Ul f п^—^ \Р = /fv0fv\ f Ф — I) \\" >У® {гпг\А fk\
yS^O^fel * * * ^>k nik— 1)/ — V^feO^fel ' ' ' ^k nik— 1)/ \ILLU\1 / }.
Очевидно, что натуральное число у такое, что г/=г/о (mod p), у =
= г/i (mod р" — 1), будет решением уравнения hi = h\.
Второе утверждение теоремы доказывается аналогично теоре-
теореме 5.37. ?
Рассмотрим теперь задачу дискретного логарифмирования
P=Qy (mod F), (P, F) = (Q,F)=\,
где P, Q, F ?Z/pZ[x], degF = N ^2, F — унитарный многочлен. Пусть
F = F(x) = h(x)...fs(x), s>%
где fj(x) — различные унитарные неприводимые многочлены из Z/'рЪ\х\,
deg/y = rij.
Очевидно, что P=Qy (mod F) тогда и только тогда, когда Р= Qy
(mod fj(x)), /=1, ..., s. Обозначим через xy порядок Q (mod /y(x)).
Уравнение P=Qy (mod /y(x)) разрешимо тогда и только тогда, когда по-
порядок Р (mod fj(x)) делит xy. В этом случае найдется г/у (mod xy), такое,
что Р = Qyi (mod fj(x)). Для проверки разрешимости P=Qy (mod F) те-
теперь надо проверить разрешимость системы уравнений у = г/у (mod xy),
j = \, ..., s. Для разрешимости этой системы необходимо и достаточно,
чтобы г/,- = г/у (mod х,у) при всех I ф/', где х,у = (х,-, ху). Если х,у невелики,
то yi (mod x,y) можно определить перебором из сравнений
и затем убедиться в том, что г/( = г/у (mod x,y). Таким образом, мы
описали алгоритм проверки разрешимости уравнения P=Qy (mod F),
который в некоторых случаях будет быстрым. Например, если р неве-
невелико и числа щ попарно взаимно просты, то по лемме 5.34 все х,у
не превосходят р — 1, и перебор будет коротким. Заметим также, что
для определения порядков элементов нам надо знать разложение чисел
рщ — 1 на множители.
160 Гл. 5. Алгоритмы дискретного логарифмирования
Замечание 5.40. Для произвольного приводимого многочлена
F(x) € Ъ/рЪ\х\ также можно описать аналогичный алгоритм проверки
разрешимости в случае, когда все кратности неприводимых делителей
F(x) невелики.
§ 5.7. Заключение
Из более старых работ по дискретному логарифмированию читатель
может обратить внимание на [ ; ; ].
Из обзоров по дискретному логарифмированию мы можем рекомен-
рекомендовать [ ; ; ; ].
В работе [ ] содержится великолепный обзор по сложности тео-
теоретико-числовых алгоритмов, включая задачу дискретного логарифми-
логарифмирования.
Вопросам получения оценок сложности в задаче дискретного ло-
логарифмирования посвящены работы [ ; ; ; ; ; ; ].
В частности, в работе [ ] оценивается снизу порядок линейной ре-
рекуррентной последовательности щ, обладающей тем свойством, что
loga /' = щ (mod р) для всех номеров /' из некоторого промежутка.
В работе [ ] содержится обзор алгоритмов дискретного логариф-
логарифмирования в произвольной группе G со сложностью O(|G|'/2) группо-
групповых операций. См. также [ ].
Работа [ ] посвящена параллельному вычислению дискретных
логарифмов.
В работе [ ] рассматриваются вопросы дискретного логарифмиро-
логарифмирования в произвольной конечной абелевой группе G, а также алгоритмы
нахождения порядка элемента и определения структуры G. Доказана,
в частности, следующая теорема.
Теорема 5.41. Имеется алгоритм, который для заданных
g,d€G, йф\, определяет, принадлежит ли d подгруппе (g),
и если да, то находит logg d. Если х = \ (g) | при dg (g) и х = logg d
при d€ (g), то алгоритм выполняет не более 6|\/*1 + /
умножений в G. Он использует таблицу из не более чем
пар (h, r) e G х {1, ..., 2т/х}. Общее число обращений к таблице
не превосходит 4 \^[х ].
В работе [ ] получена оценка для наименьшего первообразного
корня а по простому модулю р. В предположении расширенной гипо-
гипотезы Римана
§5.7. Заключение 161
где г — число различных простых делителей р — 1.
В различных криптографических схемах используются пары про-
простых чисел q и р, где р = 2q + 1. В частности, для тестирования алго-
алгоритмов дискретного логарифмирования по простому модулю р обычно
используют такие пары. В этом случае первообразный корень по мо-
модулю р можно определить с помощью следующей теоремы, см. [ ,
с. 168—170].
Теорема 5.42. Пусть р, q — простые числа.
1) Если q = An+\, p = 2q+\, то 2 является первообразным
корнем по модулю р.
2) Если q = An + 3, р = 1q + 1, то —2 является первообразным
корнем по модулю р.
Доказательство. Для того, чтобы число а являлось первообраз-
первообразным корнем по модулю р, необходима и достаточна неразрешимость
уравнений
х2 = a (mod р), хч = a (mod p).
Пусть q = An + 1, тогда р = 8п + 3. В этом случае уравнение
х2=2 (mod p) неразрешимо, так как (-|=—1. Предположим, что
уравнение хАп+{ = 2 (mod р) разрешимо. Тогда х8п+2 = 4 (mod 8п + 3).
Отсюда по малой теореме Ферма получим, что 4= 1 (mod p). Так как
р > 3, то это невозможно.
Пусть q = An + 3, р = 8п + 7. Уравнение х2 = —2 (mod p) неразре-
неразрешимо, поскольку
Предположим, что уравнение xitl+3 = —2 (mod p) разрешимо. То-
Тогда х8п+6 = A (mod p), и мы получаем противоречие аналогично
предыдущему случаю. ?
11 О. Н. Василенко
Глава 6. Факторизация многочленов над
конечными полями
§6.1. Введение. Вероятностный алгоритм решения
алгебраических уравнений в конечных полях
В данной главе мы рассматриваем алгоритмы разложения на мно-
множители многочленов над конечными полями, а также некоторые методы
решения алгебраических уравнений в конечных полях.
Пусть р— простое число, р>2, f(x) GGF(p)[x], degf(x) = n^2.
Рассмотрим вероятностный алгоритм решения уравнения f(x) = 0 в по-
поле GF{p).
Алгоритм решения f(x) = 0 в GF(p).
1 шаг. Вычислить
g(x) = НОД(/(х), xp-x)G GF(p)[x].
Заметим, что все корни f(x) в GF(p) являются корнями многочлена g(x)
кратности 1, и других корней у g(x) нет. Если degg(x) = 0, то корней
у f(x) в GF(p) нет. Если degg(x) = 1, g(x) = x — а, то а — единственный
корень f(x) в поле GF(p) (без учета кратности). Если degg(x) = p, то все
элементы GF(p) являются корнями f(x). Далее мы предполагаем, что
2 < degg(x) < р, и ищем корни g(x) в GF(p).
2 шаг. Случайным образом выбрать элемент 8 € GF(p) и вычислить
р-1
3 шаг. Если d(x) = 1 или d(x) = g(x), то вернуться на шаг 2. Если
degd(x) = I, d(x)=x — b, то b — корень многочлена f(x)\ мы заносим
его в список найденных корней, заменяем g(x) на g(x)/(x — b) и возвра-
возвращаемся на шаг 2. Аналогично, при degd(x) = degg(x) — 1 мы находим
х — b = ^гг4, заносим b в список корней, заменяем g(x) на d(x) и воз-
возвращаемся на 2-й шаг. Если 2 < degd(x) < degg(x) — 1, то мы рассмат-
рассматриваем вместо g(x) два его делителя — многочлены d(x) и g(x)/d(x),
§6.1. Введение. Вероятностный алгоритм решения уравнений в конечных полях 163
и к каждому из них мы применяем 2 и 3 шаги алгоритма, чтобы найти
их корни.
Конец алгоритма.
Теорема 6.1. Если g(x) € GF(p)[x], 2< degg(x) < р и g(x) \хр — х,
то при случайном выборе 8 на 1-м шаге с вероятностью, не мень-
меньшей, чем „ — „-, будет выполнено неравенство l<degd(x)<
<degg{x).
Доказательство. Пусть а\, a<z € GF(p), а\ ф a<z, g(ai) =g(a2) = 0.
Пусть 8 ф —а\, 8 ф —п2- Тогда
?-1
(а,- + 8) 2 — 1 равно 0 или —2 при i = 1, 2.
Если
то ровно одно из чисел а\, a<i является корнем d(x) и поэтому
1 < degd(x) < degg(x). Теперь предположим, что 8 ф —а\, —а%, и
р-1 р-1
(ai+8) 2 -l = (a2 + 8) 2 -1
р-1 р-1
Такие 8 являются корнями многочлена (х + а{) 2 — (х + аъ) 2 , ко-
р — 1 . „
торыи имеет степень —z 1. Поэтому, если мы рассмотрим все
8 € GF(p), то не более чем для 2 + —= 1 = —^— элементов 8 много-
многочлен d(x) может не удовлетворять неравенству 1 < degd(x) < degg(x).
Отсюда следует утверждение теоремы. ?
Теорема 6.2. В условиях теоремы 6.1 обозначим через k сте-
степень degg(x); тогда вероятность будет равна 1 — -^у + Оу — J;
постоянная в О(-) зависит от k.
k
Лемма 6.3. Пусть g{x) = П (х — а,), где а,- € GF(p), а,- различны;
i=i
пусть ei, ..., zk — какой-либо фиксированный набор из ±1. Рас-
Рассмотрим 8, удовлетворяющие условиям
7ог<3а количество таких 8 равно N = ^ + О(у/р), где постоянная
в О(-) зависит от k.
164 Гл. 6. Факторизация многочленов над конечными полями
Выведем теорему 6.2 из леммы. Пусть 0 <§</?— 1,
1=\, ..., k. Предположим, что degd(x) = 0. Тогда
Следовательно,
р-1
(щ + Ь) 2 -1^0, i=\, ..., k.
?-1
(с,-+ 8) 2 =-1, г=1, ..., к,
т.е. si =... =8^ = — 1. Теперь рассмотрим случай degd{x) = k. Тогда
аналогично получаем, что
(а,- + 8) 2 =1, г = 1, ..., й,
откуда si = ...=Sfc = l. Таким образом, среди всех значений 8 ко-
количество тех 8, для которых 1 ^ degd(x) < k, будет по лемме равно
р — k — 2(-^ + О(у/р)). Отсюда следует утверждение теоремы 6.2.
Доказательство. Пусть а — фиксированный квадратичный невы-
невычет по модулю р. Положим di = а, если е,- = — 1, и d,- = 1, если s,- = 1.
Рассмотрим систему уравнений
= di(x + ai) (mod/?),
ak) (mod p),
относительно неизвестных х, у\, ..., у к €Z//?Z. Обозначим для крат-
краткости yid) = ( - )¦ Уравнение у2 = d (mod р) имеет 1 + y(d) решений.
\р/
Поэтому число решений системы равно
Р-1 к
р-1
р-1
= Р+ J2
§6.1. Введение. Вероятностный алгоритм решения уравнений в конечных полях 165
где gj(x) = (d\(x + а\)Iх ... (dk{x + аи)Iк. Справедливо неравенство
(см. [ , теорема 5.41])
Р-\
<(deggj(x)-
которое следует из оценок тригонометрических сумм Вейля. Поэтому
к
г=2
р-\
так как если deggy(x) = 1, то Yl X(g'i(x)) =0- Поскольку
У >\r) r\(k-r)\ (r-\)\(k-r)\ Vr-17'
то \M-p\4:ky/p{2k-l-l).
Рассмотрим 8, удовлетворяющие условию леммы. Тогда
по определению d,-. Поэтому каждое уравнение yf = d,(8 + щ) (mod p)
имеет два решения, и система при х = Ь имеет 2к решений. Следова-
Следовательно,
M = 2kN + Ni,
где Л/i — некоторые решения системы, возникающие при 8, не удовле-
8
творяющих условию леммы. Ьсли 8 Ф —щ, 1= 1,...,«, но I J = — е,-
f( 8) d
при некотором i, то I -LLJ 1 = 1 — 1 (—s,) = — 1, и система при х = 8
неразрешима. Если же 8 = —а,- при некотором I, то при х = 8 система
имеет не более чем 2к решений. Поэтому N\ ^ k ¦ 2к. Следовательно,
\2к ¦ N - р\^\М - р\ + \2к N - M\^k^pBk~l - \) + k -2k.
Отсюда следует утверждение леммы 6.3. ?
Скажем еще несколько слов о других методах нахождения корней
многочленов над конечными полями. Эти методы описаны в [ , гл. 4,
§3]. Если конечное поле GF(q) велико, но его характеристика р мала,
т-1 .
то при q = pm следует вычислить многочлен S(x) = ^ х^, и пытаться
/=о
166 Гл. 6. Факторизация многочленов над конечными полями
находить корни f(x), вычисляя либо
НОД(/(х), S(x)-c), cgGF(p),
либо
НОД(/(х), S<$x) -с), се GF(p),
где C е GF(q) такое, что 1, C, ..., (Зт~' образуют базис GF(q) mj\GF(p)
как линейного пространства. Если же и поле GF(q) велико, и его харак-
п
теристика р велика, то при f(x) = ^2щх' мы сначала строим многочлены
(=0
/=о
rn-l
Затем для многочлена F(x)= Y[ fk(x) € GF(p)[x] находим разложе-
ние F(x) = G\(x) ...Gr(x) в кольце GF(p)[x] на степени различных
неприводимых многочленов и пытаемся найти корни f(x), вычисляя
НОД(/(х), Gt(x)), t=\,...,r.
На этом мы закончим описание методов нахождения корней про-
произвольных многочленов над GF(q). В следующем параграфе мы будем
решать квадратные уравнения в конечных полях.
§ 6.2. Решение квадратных уравнений
Рассмотрим уравнение
х2 = a (mod p), F.1)
где р > 2, р — простое число. С помощью очевидной замены переменной
к уравнению F.1) сводится произвольное уравнение АХ2 + ВХ + С =
= 0 (mod p). Если а^О (mod p), то уравнение F.1) разрешимо тогда
и только тогда, когда — = 1, т. е.
Предположим, что р = 3 (mod 4), т. е. р = 4k + 3. Тогда ^—^— = 2k+\,
и из F.2) следует, что a2k+l = 1 (mod р). Отсюда а2к+2 = a (mod р),
и мы находим решение F.1):
x = ±ak+l {mod p).
§6.2. Решение квадратных уравнений 167
Предположим, что р=\ (mod 4), p = 4k+l. Тогда —^—=2k,
и F.2) принимает вид
а24 = 1 (mod р), F.3)
где 2k = 2st, s^ \, t нечетно. Для решения F.1) нам нужно знать какой-
либо квадратичный невычет N по модулю р. Для N выполнено соотно-
соотношение
Теперь будем извлекать квадратные корни. Из F.3) следует, что
а2" ' = ±1 (mod p).
Если а2" ' = +\ (mod p), то мы снова извлекаем квадратный корень,
если жеа2' / = — 1 (mod р), то а2" ' ¦ N2 = 1 (mod p), и мы извлекаем
корень из левой части этого уравнения. Продолжая этот процесс извле-
извлечения квадратных корней и домножения на N2"( = —1 (mod p), если при
извлечении корня появляется —1 (mod p), мы придем к соотношению
a' -N2l=\ (mod p)
при некотором / € Z^o- Отсюда (a<-t+l)/'2N1J = a (mod p), и мы находим
x = ±ait+l)/2Nl (mod p) — решение F.1).
Замечание 6.4. С помощью случайного выбора N из множества
{1, 2, ..., р — 1} мы с вероятностью - найдем невычет. Оценка на вели-
величину наименьшего квадратичного вычета по модулю р была приведена
в § 1.6 (при условии выполнения расширенной гипотезы Римана). Для
некоторых значений р = 1 (mod 4) невычет N известен заранее; напри-
например, N = 2 при р = 5 (mod 8).
Несколько более эффективным для решения уравнения F.1) в слу-
случае р = 1 (mod 4) является алгоритм Тонелли—Шэнкса. В нем мы
сохраняем обозначениер —\=4k = 2S+1 ¦ t = 2e • t; N — какой-либо из-
известный нам квадратичный невычет по модулю р. Мы считаем, что
©=+¦¦
Алгоритм Тонелли—Шэнкса.
1 шаг. Вычисляем следующие значения:
у := N< (mod р), г:=е, х := а(/)/2 (mod p),
Ь := ах2 (mod р), х := ах (mod p).
2 шаг. Если Ь = 1 (mod р), то х является искомым решением F.1),
и алгоритм останавливается.
168 Гл. 6. Факторизация многочленов над конечными полями
3 шаг. Находим наименьшее т € N такое, что Ь2"" = 1 (mod р). Оно
удовлетворяет неравенству 1 ^ т ^ г — 1.
4 шаг. Вычисляем значения
l:=y2' m (mod р), у.= 12, г:=т
x:=xl (mod р), b := by (mod p)
и возвращаемся на 2-й шаг.
Конец алгоритма.
Покажем, что алгоритм работает корректно. Мы хотим найти числа
А\, ..., Ae_i, равные 0 или 1, такие, что
at . Nt(Al.2+Ai.2?+...+A,-l.r-1) = J (mod ру
Числа А[, ..., Ае_[ мы определяем последовательно. При первом про-
проходе алгоритма на 1 -м шаге
6 = a'(mod/?), x= a{t+l)/2 {mod p), r = e.
На 3 шаге мы находим т такое, что Ь2" = а1'2т = 1 (mod p), b2" =
= а1'2 = — 1 (mod р), ив силу F.2), т ^ г — 1 = е — 1. Тогда мы по-
полагаем А\ = ... = Ле_т_1 = 0, Ае_т = 1, и получаем соотношение
где /' = е — т+ 1. Далее на 4 шаге мы вычисляем
t+i
х = а 2 •А^л'+-+Л—2
b = at. ^рА1+...+Ае-а2Г") (mod р)
Если b = 1 (mod p), то очевидно, что х является решением F.1). Если
b ф 1 (mod p), то алгоритм продолжает работу.
Предположим, что после нескольких проходов шагов 2—4 мы на-
нашли числа /^2 и А[, ..., А/_[ € {0; 1}, причем А/_[ = 1 и выполнены
соотношения, являющиеся предположением индукции:
) (mod/,))
(mod/,))
§6.2. Решение квадратных уравнений 169
Если /' = е, то мы определили все А\, ...,Ае-\, и х будет ответом.
Если j<e, но b=\ (mod р), то х также будет ответом, и алгоритм
закончит работу. Если же /' < е и b ф 1 (mod p), то при следующем про-
проходе шагов 2—4 алгоритма мы находим очередное значение /' и числа
Aj = Aj+i = ... = Aj>_\ = О, Ay = 1, для которых
p)
При этом формулы, выражающие х, Ь, I, у, г через /', А\, ..., Ау_\,
сохраняются. Таким образом мы по индукции доказали корректность
алгоритма Тонелли—Шзнкса.
Замечание 6.5. Алгоритм Тонелли—Шзнкса описан в [ , гл. 1],
см. также [ , гл. 7]. Он имеет полиномиальную сложность при усло-
условии, что невычет N нам известен.
Замечание 6.6. В работе [ ] предложен алгоритм решения F.1)
со сложностью О(\а\ +E(log/?)9) битовых операций. Знание невыче-
невычета здесь не предполагается; при фиксированном а € Z алгоритм имеет
полиномиальную сложность по переменной величине р.
Замечание 6.7. В книге [ , гл. 7] описан вероятностный алгоритм
Чипполы для решения уравнения х2 = а в конечном поле GF(q) при не-
нечетном q, имеющий среднее время работы O(log q) битовых операций.
Рассмотрим теперь уравнение
xN = a(modp), F.4)
где р — простое число, N € N, N > 2. Если (N, р — 1) = 1, то решение
этого уравнения имеет вид х = ам (mod р), где NM= I (mod p— 1).
В работах [ ; ] предложены некоторые методы решения F.4) при
условии (N, р — 1) > 1; см. также [ , гл. 7].
Если мы хотим решить уравнение х2 = a (mod п), где п = pq, p, q —
различные простые числа, то решение этого уравнения будет трудной
задачей, при условии, что разложение п на множители нам неизвест-
неизвестно. На сложности решения этого уравнения основан ряд криптосистем,
см. [ , гл. 3, 4].
Если п € N, то для нахождения т = [^/п] можно использовать сле-
следующий алгоритм, описанный в [ , гл. 1].
Алгоритм.
1 шаг. х := п.
2 шаг. Используя целочисленные деления и сдвиги (деление на 2),
вычислить
170 Гл. 6. Факторизация многочленов над конечными полями
3 шаг. Если у < х, то х := у и вернуться на 2-й шаг. Иначе х будет
искомым значением [у/п].
Конец алгоритма.
Покажем, что алгоритм выдает верный ответ. Если / > 0, то выпол-
выполнено неравенство
Поэтому в алгоритме всегда х ^ [\/п], так как из неравенства х-\— ^
^ 2у/п следует, что х + - ^ [2у/п] ^ 2[у/п]. Пусть на 3 шаге выпол-
L X А
нено неравенство у^х. Мы хотим доказать, что х= [у/п]. Предполо-
Предположим, что х ^ [у/п] + 1, и придем к противоречию. Действительно,
2
I— \П~\ ^ П г- \П~\ ^rl—л rl—л i i
поскольку x > у/п и - < - < у/п, т. е. - — х < [у/п] — [у/п] — 1 = — 1.
L X А X L X А
С помощью данного алгоритма можно решать уравнения х2 = п,
п € N, в целых числах; прежде чем извлекать корень из п, следует про-
проверить, является ли п квадратичным вычетом по нескольким небольшим
модулям, см. [ , гл. 1].
§ 6.3. Алгоритм Берлекэмпа
Пусть р — простое число, q = pm. В данном параграфе мы опишем
алгоритм Берлекэмпа (см. [ ; , гл. 4; ]) для разложения унитарного
многочлена f(x) € GF(q)[x] на множители. Пусть deg/(x) = п ^ 2. Обо-
Обозначим
/(*) = Л Wei-Ше* F-5)
разложение f(x) на различные неприводимые унитарные многочлены
/i (х), ..., fk(x). Сначала мы покажем, как нахождение разложения F.5)
сводится к нахождению разложения многочлена
fix) = /«, (х)... fh (х), 1 < h < k < ¦ ¦ ¦ < ii < z, F.6)
не имеющего кратных неприводимых множителей. Для этого рас-
рассмотрим
d{x) = nOJX{f{x),f{x)).
§6.3. Алгоритм Берлекэмпа 171
Если f'(x) — нулевой многочлен, то f(x)=go(xp), где go (у) € GF(q)[y].
Поскольку возведение в степень р является автоморфизмом по-
поля GF(q) и так как (А + В)р=Ар + ВР для всех A, fie GF{q)[x],
то f(x) = go(xp) = (g(x))p, и задача разложения f(x) сводится к нахожде-
нахождению разложения g{x), имеющего меньшую степень. Коэффициенты g(x)
быстро вычисляются по коэффициентам f(x), если GF(q) не слишком
велико и т > 1. Если же q = р (т. е. т = 1), то g(x) = go(x), поскольку
ар = а для всех а € GF(p).
Предположим теперь, что f'(x) — ненулевой многочлен. Тогда оче-
очевидно, что
где и, = е,— 1 при p\ei, и,- = е,- при р | еь. При этом найдется и,- ф е,-. То-
Тогда многочлен f(x) = f(x)/d(x) равен произведению тех из многочленов
fi(x), ..., fk(x), для которых p\et. Если мы разложим f(x) на неприво-
неприводимые множители, то затем пробными делениями найдем показатели е,-
такие, что p\et. Вычислим f(x)/ П fi(x)e'. У этого многочлена произ-
i ¦¦ р\е-,
водная будет нулевой. Если он отличен от константы, то мы представим
его в виде g(x)p, как это описано выше, и далее будем расклады-
раскладывать g(x) аналогичным образом, и т. д.
Замечание 6.8. В [ , гл. 3, алгоритм 3.4.2] описан алгоритм, кото-
который находит представление унитарного многочлена f(x) € Ъ/рЩх\ в ви-
виде f(x) = П Ai(x)', где Aj(x) € Ъ/рЪ\х\, А-ь не имеют кратных неприво-
<>1
димых множителей, и при i ф j(Aj(x), A/(x) = 1.
Далее мы будем считать, что в разложении F.5) все показатели е,-
равны 1.
Теорема 6.9. Пусть h(x) € GF(q)[x], I < degft(x) < п, и выполнено
условие
h{x)q = h(x) (mod f(xj).
Тогда справедливо равенство
f{x)= [] НОД(/(х), h{x)-с), F.7)
причем правая часть этого равенства представляет собой
нетривиальное разложение f(x) на взаимно простые множители.
Доказательство. Поскольку при с\, Сч € GF(q), с\фсч, много-
многочлены h(x) — с\ и h(x) — С2 взаимно просты, то множители в правой
части F.7) взаимно просты. Поскольку deg(h(x) — с) <п, то из вы-
выполнения равенства F.7) следует, что это нетривиальное разложение
172 Гл. 6. Факторизация многочленов над конечными полями
f(x) (т. е. F.7) есть разложение f(x) на несколько многочленов мень-
меньшей степени). Само же равенство F.7) следует теперь из того, что
h(x)q — h(x) = Yl (h(x) — c)=0 (mod f(x)), и из взаимной простоты
ceGF(q)
многочленов h(x) — с при различных с € GF(q). ?
Определение 6.10. Многочлен h(x) € GF(q)[x] такой, что 1<
< degh(x) < п, h(x)q = h(x) (mod f{x)), называется /-разлагающим
многочленом.
Из теоремы 6.9 следует, что если мы построим какой-нибудь /-раз-
/-разлагающий многочлен, то сможем с его помощью разложить f(x)
на не менее чем два множителя. Опишем процедуру построения таких
многочленов.
Теорема 6.11. Определим матрицу В = ||fti/||i,/=o «-1 из срав-
сравнений
п-\
xiq = Y^ Ьцх1 (mod f(xj), i = 0, ..., n - 1.
/=o
Многочлен h(x) = ao + a\x + ... + an-ixn~l e GF(q)[x] будет удовле-
удовлетворять условию h(x)q = h(x) (mod f(x)) тогда и только тогда,
когда
{ао, ..., an-i)B = {ао, ..., an-i),
т. е. тогда и только тогда, когда вектор его коэффициентов яв-
является левым собственным вектором матрицы В с собственным
значением 1.
Доказательство. Условие h(x)q = h(x) (mod f(x)) равносильно ус-
условию
«-1 «-1
^2 aiXiq = ^2 aiX1 (mod f(xj).
i=0 i=0
Отсюда по определению матрицы В получим равенство
я—1 я—1 я—1
i=0 j=0 i=0
поэтому
я-1
Y^bij = ah / = 0, ..., п- 1,
1=0
что равносильно утверждению теоремы. ?
§6.3. Алгоритм Берлекэмпа 173
Алгоритм Берлекэмпа.
На входе алгоритма задан унитарный многочлен f(x) €GF(q)[x],
deg/(x) = п ^ 2, про который известно, что он не имеет кратных непри-
неприводимых множителей. На выходе — разложение f(x) на неприводимые
множители.
1 шаг. Вычислить матрицу В из теоремы 6.11.
2 шаг. Найти базис пространства решений системы линейных урав-
уравнений
/хо\
... = 0, F.8)
\Xn-lJ
где В\ = (В — 1п)т, /„ — единичная матрица, знак (-)т означает транспо-
транспонирование. Пусть ei = A, 0, ...,0), ?2, ...,~ek — найденный базис.
Замечание 6.12. Поскольку хщ = 1 (mod f(x)) при г = 0, то в мат-
матрице В первая строка всегда имеет вид A, 0, ..., 0), и первый столбец
матрицы В[ будет нулевым. Поэтому ~ё\ = A, 0, ..., 0) будет присут-
присутствовать в базисе пространства решений.
3 шаг. При k = 1 многочлен f(x) неприводим; вообще, найденное
значение k равно количеству неприводимых делителей f(x) в GF(q)[x].
При k > 1 надо взять ёг = (/&2,o> •••, /J2,«-i) и построить / — разлагаю-
п-\
щий многочлен h?.(x) = ^ h2jxl. С его помощью, применяя теорему 6.9,
(=0
т. е. вычисляя НОД(/(х), h<i(х) — с) при с € GF(q), найти разложение
f(x)=gl(x)...gl(x),
rmgi(x) e GF(q)[x], 1^2. Если /= k, то алгоритм останавливается. Ес-
«-1
ли / < k, то мы берем ё3 = (изо • • •, ^3,«-i), строим h3{x) = Yj hziXl\ вы-
(=0
числяя НОД(§,(х), кз(х) —с) для найденных g,(x), мы получаем даль-
дальнейшее разложение f(x), и т.д. Алгоритм закончит работу, когда мы
переберем все базисные векторы ?2> • • • > ^*> и Для соответствующих им
многочленов hi(x) вычислим наибольшие общие делители найденных
множителей f(x) с hi(x) — с, с& GF(q).
Замечание 6.13. Алгоритм останавливается, как только мы найдем
разложение f(x) на k множителей, где k = n — rankfii.
Конец алгоритма.
Теорема 6.14. Алгоритм Берлекэмпа работает корректно
и находит полное разложение f(x) на множители.
174 Гл. 6. Факторизация многочленов над конечными полями
Доказательство. Поскольку f(x) = fi(x)... fk(x) — произведение
различных унитарных неприводимых многочленов, то по китайской
теореме об остатках для любого набора с\, ..., ch € GF(q) существует
единственный многочлен h(x) € GF(q)[x] такой, что h(x) = c-t (mod /,(х)),
i = 1, ..., k, degh(x) < п. Этот многочлен h(x) удовлетворяет условию
h{x)q = с] = а = h(x) (mod /,-(*)), i=\, ...,k,
и поэтому является /-разлагающим. Обратно, любой /-разлагающий
многочлен h(x) удовлетворяет соотношению
hq{x) - h(x) = Y[ (h(x) - с) = 0 (mod f(x)),
ceGF(q)
откуда для каждого /,(х) найдется c = Ci такое, что h(x) = с,- (mod fi(xj).
Таким образом, мы получили взаимно однозначное соответствие меж-
между /-разлагающими многочленами h(x) и наборами с,-, ..., ch € GF(q).
Поскольку по теореме 6.11 вектор коэффициентов (ft0, ..., ftn_i) мно-
многочлена h(x) удовлетворяет системе уравнений F.8), то ранг матри-
матрицы В\ равен п — k, и пространство решений й-мерно. Обозначим через
h\(x), ...,hk(x) /-разлагающие многочлены, векторы коэффициентов
которых образуют базис пространства решений системы F.8); мы счи-
считаем, что h\(x) = 1. Пусть fi(x) и fj(x) — какие-либо два неприводимых
делителя f{x), I ф /'. Мы хотим показать, что найдется номер и, 2 ^ и ^ k,
и постоянная с € GF(q) такая, что
hu{x) = с (mod fi(x)), hu(x) фс (mod /y(x)).
Предположим противное, т.е. для всех и = 2, ..., k при некоторых
cuGGF(q) выполнены сравнения hu{x) = cu (mod /,(x) ¦ fj(xj). To же
верно и для и= 1, так как h\(x)= \=c\. Но тогда, поскольку лю-
любой /-разлагающий многочлен h(x) является линейной комбинацией
над GF(q) многочленов h\(x), ..., hk(x), то
h{x) = c {mod fi{x)-fj{x)),
где с € GF(q), с зависит от h(x). Однако найдется /-разлагающий мно-
многочлен h(x) такой, что
h(x) = 0 (mod fi(x)), h(x) = 1 (mod fj{x)).
Полученное противоречие завершает доказательство теоремы и обос-
обоснование алгоритма Берлекэмпа. ?
Замечание 6.15. Сложность алгоритма составляет O(n3+qkn)
арифметических операций (см. [ , с. 191]). Поэтому алгоритм будет
§ 6.4. Метод Кантора—Цассенхауза 175
эффективен лишь для сравнительно небольших значений q (в частно-
частности, из-за перебора с € GF(q) на 3 шаге алгоритма); т. е. для небольших
полей.
В последующих параграфах мы рассмотрим ряд усовершенствова-
усовершенствований алгоритма Берлекэмпа, а также методы факторизации в случае
больших полей GF(q).
Приведем еще два результата, связанных с факторизацией много-
многочленов из GF(q)[x]. В работе [ ] приведен следующий результат,
позволяющий установить четность количества неприводимых делите-
делителей f(x).
Теорема 6.16. Пусть р — простое число, f(x) € Z//?Z, deg/(x) =
= п< р. Пусть D — дискриминант f(x), w — число неприводимых
множителей f{x), и пусть p\D. Тогда ( —) = (—1)"~ш.
Другой результат о /-разлагающих многочленах приведен в [ , тео-
теорема 4.3].
Теорема 6.17. Пусть f(x) € GF(q)[x] — унитарный многочлен,
f(x) = fi (x)... fk(x) — разложение f(x) на различные унитар-
унитарные неприводимые многочлены, где k^2. Пусть deg/,(x) = щ,
i= \, ..., k, N = НОК(я1, ..., пи). Положим
Т(х) = х + хч + х + ... + xqN~\
и определим многочлены 7,(х) € GF(q)[x]:
Ti(x) = T{xl) (mod f{x)), deg7}(x) < n, i=\,2, ...
Тогда по крайней мере один из многочленов Т\(х), ..., Тп_\(х) яв-
является ^-разлагающим.
§ 6.4. Метод Кантора—Цассенхауза
Зафиксируем простое число р. Пусть f(x) € Z/pZ[x], f(x) унитарен
и не имеет кратных неприводимых множителей. Ниже мы опишем алго-
алгоритм, который для заданного d € N находит произведение всех непри-
неприводимых делителей f(x), имеющих степень d. Предварительно докажем
лемму.
Лемма 6.18. Пусть g(x) € Ъ/рЪ\х\ —унитарный неприводимый
многочлен.
1. Если deg g(x) = d, то g(x) делит хр — х.
2. Если g(x) делит хр — х и g(x) не делит хр* — х для всех е <d,
то deg g(x) = d.
176 Гл. 6. Факторизация многочленов над конечными полями
Доказательство. Первое утверждение следует из того, что К =
= Z/pZ[x]/igix)) = GFipd), и элемент х = х (mod g(x)) € К удовле-
удовлетворяет соотношению ~хр =~х. Для доказательства второго утвержде-
утверждения обозначим l=degg(x), Ki = GF(pl) = Z/pZ[x]/(g(xj). Посколь-
Поскольку хр =х (mod g(x)), то из условия утверждения следует, что l^d.
С другой стороны, для произвольного многочлена f(x) € Z/pZ[x] вы-
выполнены соотношения
/(*/ = f{xpd) = f{x) (mod g(x)). F.9)
Поскольку К* является циклической группой порядка р1 — 1 и по-
порождается элементом fix) (mod gix)) для некоторого fix) €Z/pZ[x],
то из F.9) следует, что р1 — 1 \pd — 1, т.е. /^d. Значит, l = d, что
и требовалось доказать. ?
Применим лемму 6.18. Рассмотрим
Biix) = HOJXifix),xp -х).
Очевидно, B\ix) состоит из всех неприводимых делителей fix) первой
степени. Заменим fix) на /i(x) = fix)/B\ix). Тогда вычислим
B2ix) = HOJXifi ix), хр2 - х).
B%ix) состоит из всех неприводимых делителей fix) второй степени.
Положим /2(*) = /i ix)/B2ix). Продолжая этот процесс, мы получим, что
состоит из всех неприводимых делителей fix), имеющих степень d; да-
далее fdix) = fd-iix)/Bdix), и т.д.
Замечание 6.19. Этот алгоритм нахождения произведений всех
неприводимых делителей fix), имеющих фиксированную степень, мож-
можно применять до того, как мы применяем алгоритм Берлекэмпа для
факторизации fix).
Лемма 6.20. Пусть gix) € Z/pZ[x], gix) унитарен, deggix) = d,
причем все неприводимые делители gix) имеют одинаковую сте-
степень и gix) не имеет кратных делителей. Многочлен gix) непри-
неприводим тогда и только тогда, когда хр = х (mod gix)) и для любого
простого q, делящего d,
pdlq -x,gix)\ = \.
Доказательство. Необходимость очевидна. Докажем достаточ-
достаточность. Если g(x) приводим и имеет неприводимый делитель g\{x),
deggi (х) = I < d, то g[ (х) \хр — х. Кроме того, по условию l\d,l= d/k.
§ 6.4. Метод Кантора—Цассенхауза 177
Если k простое, то мы получили противоречие условию леммы. Если
k = qr, где г ^ 2, и q — простое, то мы также получили противоречие,
поскольку g\ (х) | хр — х | хр' — х = xdlq — х. ?
Далее мы считаем, что f(x) € Z/pZ[x], f(x) бесквадратен, и все
его неприводимые делители имеют одинаковую степень d, известную
нам. Сейчас мы опишем метод Кантора—Цассенхауза для факториза-
факторизации f(x) (см. [ ]). В нем различаются случаи р = 2 и р > 2.
Теорема 6.21. Если р>2, то для любого многочлена Т = Т(х) €
€ Z/pZ[x] справедливо равенство
fix) = НОД(/(х), Т) НОД(/(х), Т^~1)/2 + 1) НОД(/(х), Т^~1)/2 - 1).
Доказательство. Все элементы поля GF(pd) представляют собой
корни многочлена хр — х. Пусть Т= Т(х) € Z/pZ[x]. Тогда многочлен
Т(х)р — Т(х) = Т(хр ) — Т(х) делится на хр — х. Из леммы 6.18 следует,
что f(x) делит Тр" -Т= Т{Т^~{)/2 - \){Т^~{)/2 + 1), причем поскольку
р > 2, то многочлены Т, Т^р ~ХI2 — 1 и Т^р ~V)/2+\ взаимно просты.
Теорема доказана. П
Замечание 6.22. Можно доказать, что для случайно выбранного
многочлена ТGZ/pZ[x] такого, что degT^2d— 1, наибольший общий
делитель D= НОД(/(х), Т^р ~1У2 — 1) нетривиален с вероятностью,
близкой к 1/2, см. [ , гл. 3, §3.4.4]. Факторизация f(x) методом
Кантора—Цассенхауза как раз состоит в случайном выборе Т и вы-
вычислении D. Если degZ) = 0 или degZ) = degf(x), то выбирается другой
многочлен Т; иначе мы факторизуем D и f{x)/D тем же способом.
При этом найденные делители f(x), имеющие степень d, являются
по условию неприводимыми.
Теперь рассмотрим случай р = 2.
Теорема6.23. Пусть р = 2, U(x) = x+x2 + x4 +... + x2"~' eZ/2Z[x].
Тогда для любого многочлена Т=Т(х) &Z/2Z[x] справедливо ра-
равенство
f(x) = НОД(/(х), U(Tj) НОД(/(х), U(T) + 1).
Доказательство. Поскольку
U(TJ = U(T2) =
т0
U(T) + U(TJ = T2 +Т=Т2 -Т.
Дальнейшие рассуждения аналогичны доказательству теоремы 6.21. ?
12 О.Н.Василенко
178 Гл. 6. Факторизация многочленов над конечными полями
Как и в случае р > 2, можно доказать, что для случайно вы-
выбранного многочлена Т=Т(х), degT^2d—\, наибольший общий
делитель f(x) и U(T) будет нетривиален с вероятностью, примерно
равной -=. Также можно выбирать Т(х) среди степеней х, х3, ..., x2d~l,
т.е. при некотором нечетном /', \^j^2d — 1, наибольший общий
делитель (U(x'), f(x)) будет нетривиален с вероятностью, пример-
примерно равной -. Докажем это. Предположим противное, т.е., что для
любого нечетного /', l</'<2<i — 1, либо U(x')=0 (mod f(xj), либо
U(x' = 1 (mod f(xj) (использовалась теорема 6.23). Также из теоре-
теоремы 6.23 следует, что U{T2) = U{TJ = U{T) (mod f{x)). Поэтому для
всех /', 1 ^ /' ^ 2d — 1 выполнено сравнение U(x') = 0 (mod f(x)) или
сравнение U{xi) = \ (mod f(x)). Так как U{Tl + T2) = U{Tl) + U{T2),
то для любого многочлена Н = Н(х) € Z/2Z[x], degH(x) ^2d—I,
выполнено сравнение U(H) = 0 (mod f(x)) или U(H)=l (mod f(x)).
Поскольку мы считаем, что degf(x) > d (если deg f(x) = d, то f(x)
неприводим), то у f(x) есть два различных неприводимых делите-
делителя f\{x) и f2(x), degfi(x) = degf2(x) = d. Пусть а — корень f2(x)
в GF{2d). Поскольку f2(x) неприводим, то GF{2d) =Z/2Z[a]. Так
как degU{x) = 2d-1, то существует $&GF{2d), иф)^0. Для неко-
некоторого Р(х) eZ/2Z[x], degP(x) < d— 1, справедливо равенство C =
= Р(а). По китайской теореме об остатках построим многочлен
7=7(x)eZ/2Z[x] такой, что deg Т(х) < 2d - 1, 7(х) = 0 (mod Д(л;)),
Т(х) = Р(х) (mod /2(х)). Тогда i/G) = i/@) = 0 (mod f{{x)), U(T) =
= U{P{x))^0 (mod f2(x)), так как Цф) = U{P{a)) ^0. Однако это
противоречит тому, что U(T) = 0 (mod f(x)) или (/G) = 1 (mod /(x)).
Полученное противоречие доказывает, что при некотором нечетном /',
1 </<2d— 1, наибольший общий делитель (U(x'), f(x)) будет нетри-
нетривиален.
§ 6.5. Некоторые другие усовершенствования
алгоритма Берлекэмпа
Вернемся вновь к алгоритму Берлекзмпа, описанному в § 6.3. Огра-
Ограничимся случаем простого поля Ъ/рЪ.
Пусть р велико. Тогда перебор значений с € Ъ/рЪ и вычисление
НОД(/(х), h(x) —с) займут много времени. Мы хотим определить мно-
множество М с Z/pZ, состоящее из тех с, для которых НОД(/(х), h(x) — с)
нетривиален.
§ 6.5. Некоторые другие усовершенствования алгоритма Берлекэмпа
179
Первый подход к нахождению множества М заключается в вы-
вычислении результанта Res(/(x), h(x) — с). Определение и свойства
п
результанта можно найти в [ , гл. 5]. Если f(x) = ^ А-Ьх1 € Z/pZ[x],
т
и h{x) = Yj Bjx' €Z/pZ[x], то Res(/(x), h{x) — с) равен определителю
(=0
матрицы R размера (п + т) х (п + т), где
B0-cJ
Мы видим, что Res(/(x), h(x) — с) является многочленом степени п
от переменной с с коэффициентами из Z/pZ. Его корни являются
в точности теми значениями с, для которых НОД(/(х), h(x) — с) нетри-
нетривиален. Поэтому для определения множества М мы находим корни
Res(/(x), h(x) — c), как многочлена от с, лежащие в поле Z/pZ; мы
можем находить их, например, с помощью вероятностного алгоритма,
описанного в §6.1.
Другой подход к отысканию множества М был предложен Цас-
сенхаузом. Сохраняя введенные выше обозначения, мы предположим
дополнительно, что f(x) унитарен, т < п, и что h(x)p = h(x) (mod f(x)).
Тогда
¦с). F.10)
сем
Обозначим G(y) = Ц{у-с)& Z/pZ[x].
Теорема 6.24. Многочлен f(x) делит G(h(x))\ при этом G(y) —
многочлен минимальной степени среди всех многочленов g(y) €
€Z/pZ[y]\{0} таких, что f(x) делит g(h(x)).
Доказательство. Обозначим через / идеал кольца Z/pZ[y],
состоящий из многочленов g(y) таких, что f(x) делит g(h(x)). По опре-
определению G(y)€l. Кроме того, идеал / является главным, I = {go{y))
для некоторого go(y) &Z/pZ[y]\{0}. Из определения множества М
12*
180 Гл. 6. Факторизация многочленов над конечными полями
и равенства F.10) следует, что М'=М. Поскольку go(y)\G(y),
т0 go (у) = П (У — с) Для некоторого подмножества М' С М. п
Применим теорему 6.24 для нахождения М. Пусть \М\ = k — неиз-
k
вестное нам число. Тогда G(y) = Y Ь/у*, где bk = 1, причем число т —
/=о
минимальное натуральное число, обладающее тем свойством, что мно-
многочлены 1, h(x), ..., h(x)h —линейно зависимы над Ъ/рЪ по модулю
многочлена f(x). Тогда мы находим векторы коэффициентов много-
л-1 л-1
членов h(x)° (mod f(x)) = 1 = Y hojx', h(x) (mod f(x)) = Y, hijx', ...
n-l /=° /=°
...,h{xI (mod f(x)) = J2 hijx', ¦¦¦, и берем первый номер k, такой,
i=o
что вектор (hkto, ...,hk>n-i) линейно выражается над Ъ/рЪ через
(fto.o, •••, ^o,n-i), ..., (hk-ito, ..., hk-\fi-\)- Это дает нам соотношение
и
Y^bjh(x)i = 0 (mod f(xj), bk = \,
M
с минимальным значением k. Тогда мы полагаем G(y) = Y^/У'¦ Мно-
/=о
жество М будет состоять из всех корней многочлена G(y)\ мы находим
эти корни, например, вероятностными методами из §6.1.
Еще один метод разложения унитарного многочлена f(x) из коль-
кольца GF(q)[x], не имеющего кратных неприводимых множителей, описан
в [ , гл. 4, §2]. Он основан на приведении некоторой эффективно
вычислимой с помощью алгоритма Берлекэмпа матрицы А к диаго-
диагональному виду. Однако сам процесс диагонализации довольно сложен.
В работе [ ] предложена вероятностная версия алгоритма Бер-
Берлекэмпа. С ее помощью можно разложить на множители многочлен
из GF(q)[x] степени п в среднем за O((n\ogn + \ogq)n(\ognJ loglogn)
арифметических операций в поле GF(q). В алгоритме был использо-
использован метод Видемана для решения систем линейных уравнений над ко-
конечными полями (см. об этом гл. 11 далее). Алгоритм Калтофена—
Лобо был реализован на компьютере. Многочлены небольшой степе-
степени (скажем, до 250) быстрее раскладывать на множители с помощью
обычного алгоритма Берлекэмпа, если рассматриваемые поля не слиш-
слишком велики. Для многочленов высокой степени алгоритм Калтофена—
Лобо в ряде случаев оказался эффективным; например, для многочле-
многочленов степени 10001 над полем Z/127Z он работает около 102,5 часов
на компьютере Sun 4.
§6.6. Вероятностный алгоритм проверки неприводимости многочленов 181
§ 6.6. Вероятностный алгоритм проверки
неприводимости многочленов
над конечными полями
Пусть р— простое число, р>2, reN, r^ I, q = pr, K = GF(q).
Пусть f=f(x) — фиксированный унитарный многочлен из К[х], п =
= deg/(x) ^ 2. В данном параграфе мы опишем вероятностный алгоритм
проверки неприводимости f(x), аналогичный алгоритму Миллера—Ра-
бина для проверки простоты чисел (см. § 1.7).
Обозначим q" — 1 = 2k ¦ t, где / нечетно, R = K[x]/(f) — кольцо из q"
элементов. Если f(x) неприводим, то R является полем, \R*\ = qn— 1,
и для любого а е ^\{0} выполнено равенство aq"~l = а^1 = 1. Извле-
Извлекая квадратный корень, мы получим, что
либо а'= 1, либо а1'2' = — 1 при некотором /', 0</<й. F.11)
Для многочлена f(x) мы обозначим через 5 множество элементов
а € R, для которых выполнено условие F.11).
Теорема 6.25. Если f(x) приводим, то
Следствие 6.26. Проверяя условие F.11) для случайно выбран-
выбранного a€R, мы с высокой вероятностью обнаружим, что f(x) при-
приводим. Если же условие F.11) выполнено для I случайно выбранных
элементов a€R, то можно считать, что f(x) неприводим с ве-
1
роятностъю не меньшей, чем 1 — —г
Доказательство теоремы разбивается на два случая.
1 случай. Пусть существует неприводимый многочлен g=g(x)GK[x]
такой, что g2 | /. Зафиксируем его и обозначим через G множество
^j\ (mod f(x)) h(x)€K[x],degh(x)<degg\.
Лемма 6.27. Справедливы следующие утверждения:
1. G — подгруппа в R*;
2. для любого h € G\ 1 порядок h равен р;
3. \G\ = qm, 2dem = degg{x).
Доказательство. Поскольку
l + (A1+A2)/ (mod/),
182 Гл. 6. Факторизация многочленов над конечными полями
то первое утверждение очевидно. Если да € G\ I, да = 1 + -, то wp =
/ f\p fp~2 f
= f 1 + hL J = 1 + hPf1—^ Л, = 1 (mod /). Третье утверждение леммы
& о о
также очевидно. ?
Лемма 6.28. Если да € G\l, то wS П5 = 0.
Доказательство. По лемме 6.27 порядок да равен р, поэто-
поэтому wq"~l^l. Если ае5, то ач"~1 = 1, откуда (aw)q"~l ф 1. Значит,
ада ^5, что и требовалось доказать. ?
Лемма 6.29. Пусть a, b, € G, афЬ. Тогда aSC\bS = 0.
Доказательство. aS<~)bS = 0 тогда и только тогда, когда 5 П
П a~lbS = 0, а последнее равенство верно по лемме 6.28. ?
Лемма 6.30. Справедливо неравенство
|5| < \R*\/qm,
где т = deg g.
Доказательство. Обозначим через w\ = 1, даг, ..., wqm все эле-
элементы GCR*. Тогда множества t^iS, ..., wqmS содержатся в R*
и не пересекаются по лемме 6.29. Поэтому \R*\^qm\S\, что и тре-
требовалось доказать. ?
Из леммы 6.30 следует утверждение теоремы 6.25 в рассматривае-
рассматриваемом нами случае.
2 случай. Пусть многочлен / бесквадратен, т. е. /= Д ... //, где /,¦ —
различные неприводимые многочлены из К[х], и /^2.
Обозначим di = degfi, Ri = K[x]/(fi) = GF(qd>), i=\, ..., /. По ки-
китайской теореме об остатках, R изоморфно Ri х ... х Ri; для элемента
а € R мы будем обозначать а,- = a (mod /,) G Ri, i= \, ..., I. Если m € N,
то ат = 1 в R тогда и только тогда, когда а-" = 1 в Rit i':= 1, ..., /. По-
Поэтому
/ /
#{а е /? | ат = 1} = Л #{а е /?,-1 ат = 1} = JJ НОД(ш, / - 1),
так как ^* — циклические группы порядка qdi — 1. Также
(=1
а е /?,-1 а2т = 1} - #{а е /?,-1 ат = 1}) =
= П(Н0ДBш, qdi - 1) - НОД(ш, qdi - 1)).
§6.6. Вероятностный алгоритм проверки неприводимости многочленов 183
Поэтому 5 = 5i U S2, где
i
Si={ce/?|c'=l}, \S{\ = \{HOJX{t,qdi-\),
(=i
52 = {а е R | а^2 ' = — 1 при некотором /', 1 < /' < k},
к I
|52| = ^[](НОД(/2*-/+1, /' - 1) - НОД(Й*-/, /' - 1)).
/=1 (=1
Пусть
/<-1=2с<&«, i=\,...,l,
где 6,- — нечетные числа. Очевидно, что при е € Z^o
НОДBе/, T'bi) = 2га1п<ед) НОД(/, bt),
НОЩГ+Ч, 2<%) - Н0Щ2% Т%) = I
10 при е^ с,-.
Поэтому при c = min(ci, ..., с/) и при u = min(c, k) выполнено равен-
равенство
/=0 «=1
Следовательно,
Далее,
Н(
откуда
i
«=1
CiJMf АЛ I 1
\JJ-l\l,Oi) 11-
"- 1, qdi- \
0-1 N
/=0 '
«=1
(fc-c') НОД(/
ii у ii
i=i i=i
Следовательно,
Ij^^<A+2T
184 Гл. 6. Факторизация многочленов над конечными полями
Нетрудно видеть, что справедливо неравенство
2vl_
поскольку v ^ 1. Так как по условию теоремы / ^ 2, то |5| ^ \R*\/2. Тео-
Теорема 6.25 доказана. ?
Замечание 6.31. В ряде случаев для проверки неприводимости мно-
многочленов над конечным простым полем эффективен следующий ме-
метод (см. [ ]). Пусть р— простое число, f(x) € Z/pZ[x], degf(x) = n.
Многочлен f(x) неприводим тогда и только тогда, когда для любого k,
1 ^ k ^ я/2, выполнено равенство
НОД(/(х), хрк-х) = \. F.12)
Действительно, если f(x) приводим, то у него найдется неприводимый
делитель g(x), degg(x) = k < я/2. Все корни g(x) лежат в GF(pk), сле-
следовательно, являются корнями хр — х. Поэтому для k = degg(x) усло-
условие F.12) не будет выполнено. Если же f(x) неприводим, то его корни
не будут являться корнями хр — х при k < п. Алгоритм проверки непри-
неприводимости f(x) заключается в проверке условия F.12) для всех k ^ я/2.
§ 6.7. Заключение
В книге [ , гл. 4, заключение] содержится превосходный обзор
методов факторизации многочленов над конечными полями. Там же
в виде обзора описаны различные методы реализации арифметики в ко-
конечных полях, арифметики многочленов над конечными полями и ме-
методы решения уравнений в конечных полях.
В гл. 3 книги [ ] описан ряд алгоритмов для реализации полиноми-
полиномиальной арифметики над конечными полями и над кольцом целых чисел,
а также алгоритмы факторизации многочленов.
Ряд полезных сведений о факторизации многочленов над конечны-
конечными полями и решении алгебраических уравнений в GF(q) можно найти
в книге [ , гл. 7]. Там же описан детерминированный метод нахожде-
нахождения неприводимого многочлена над конечным полем, имеющий в пред-
предположении расширенной гипотезы Римана полиномиальную сложность,
и метод решения кубических уравнений в GF(q) за O(log q) бито-
битовых операций (также в предположении расширенной гипотезы Римана).
В этой книге содержится и отличный обзор результатов о факторизации
многочленов и решении алгебраических уравнений в конечных полях.
§6.7. Заключение 185
В работе [ ] была разработана новая алгоритмическая техни-
техника применительно к алгоритму Кантора—Цассенхауза. С ее помощью
многочлен из GF(q)[x], равный произведению различных неприводимых
многочленов одинаковой степени, может быть разложен на неприводи-
неприводимые множители в среднем за
операций в GF(q)\ здесь да— показатель в оценке сложности умно-
умножения квадратных матриц. В работе [ ] был получен аналогичный
результат: для любого C, 0 ^ C ^ 1 существует вероятностный алгоритм
факторизации многочлена степени п из GF(q)[x], делающий в среднем
3)(ш-1)/2 +А11+р+0A) j ^
арифметических операций в GF(q).
Из вероятностных алгоритмов факторизации многочленов отметим
также алгоритмы Бен-Ора, см. [ ].
Новый подход к факторизации многочленов над конечными полями
был разработан Нидеррайтером, см. [ ; ; ]. С точки зрения
сложности этот метод близок к оригинальному алгоритму Берлекзмпа.
В работе [ ] предложен эффективный алгоритм факторизации
многочленов в GF(q)[x] со сложностью О(п2>5 + nl+0^ \ogq) операций
в GF(q), требующий памяти для О(я3/2) элементов GF(q). Оказалось,
что на практике этот алгоритм при большом q является в ряде случаев
более эффективным, чем все предыдущие методы.
В работах [ ; ] предложен ряд алгоритмов для нахождения
неприводимых многочленов над конечными полями. Работа [ ] по-
посвящена вопросам сложности алгоритмов факторизации многочленов
над конечными полями.
Работа [ ] посвящена разложению многочленов над большими
алгебраическими расширениями конечных полей.
В работе [ ] приведен обзор алгоритмов факторизации много-
многочленов.
Для решения систем алгебраических уравнений применяется ли-
либо алгоритм Лазара, либо методы, использующие базисы Грёбнера;
см. об этом [ ; ; ; ; ; ; ].
Отметим здесь также работу [ ]. Она посвящена эффективно-
эффективному нахождению изоморфизма между двумя представлениями конечного
поля и имеет важные приложения как к задаче дискретного логарифми-
логарифмирования, так и к вопросам факторизации многочленов над конечными
полями.
Глава 7. Приведенные базисы решеток
и их приложения
§7.1. Введение. Решетки и базисы
Пусть Ш" — я-мерное евклидово пространство со скалярным произ-
произведением (•, •). Пусть &i, ..., Ь„ € Ш" —линейно независимые вектора.
Решеткой в W1 называется множество
векторы &i, ..., Ьп называются базисом решетки. Определителем
решетки называется величина d(K),
= (det||F/N/)||y=i „I/2.
Базис решетки можно выбирать разными способами; однако по-
поскольку один базис выражается через другой с помощью целочисленной
матрицы с определителем ±1, d(K) является инвариантом решетки.
Имеет место неравенство Адамара:
где |&|—евклидова норма вектора 6еК". Если е\, ..., еп — ортонор-
п
мированный базис Ш", и 6,- = Y, Ьцв/, I = 1, ..., п, то
et||fty||w=i п\.
Замечание 7.1. Превосходным введением в геометрию чисел яв-
является книга Касселса [ ]. В ней можно найти описание различных
свойств решеток и их приложений.
Решетка является дискретным множеством, т. е. в любом огра-
ограниченном множестве пространства W содержится лишь конечное число
точек решетки.
Напомним процесс ортогонализации Грама—Шмидта. Пусть
&ь ..., Ь„ —линейно независимые векторы в Ш". Пусть векторы
§7.1. Введение. Решетки и базисы 187
6*, ..., 6* определяются соотношениями
(-1
Ь\ = Ь\, Ь* = 6, — У2\>-цЬ*, i = 2, ..., п,
/=1
где
W/= (&,-, Ь*)/(Ь*,Ь*), U/<i.
Тогда векторы 6*, ..., 6* попарно ортогональны.
При применении решеток в различных теоретико-числовых алго-
алгоритмах важную роль играют базисы, состоящие из достаточно коротких
векторов. Ниже мы рассмотрим различные виды таких базисов.
Фиксируем решетку Л в Ш" и рассмотрим множество Ga, состо-
состоящее из всех ее базисов. Рассмотрим на Ga следующее отношение
упорядоченности: при {а\, ..., ап}, {&i, ..., &n}eGA
{аь ..., а„}<{&1, ..., &„},
если существует номер /' такой, что при всех i < j справедливо равенство
а,-| = |6,-|, но \a,j\< \bj\.
Определение 7.2. Минимальный элемент Ga по отношению < на-
называется приведенным по Минковскому базисом решетки.
Поскольку норма на решетке принимает дискретное множество зна-
значений, то приведенный по Минковскому базис существует. Однако он
может быть не единственен. Например, в решетке Z" любая переста-
перестановка единичных векторов е\, ..., еп образует приведенный по Мин-
Минковскому базис.
Рассмотрим теперь другое отношение упорядоченности <j. Пусть
а = (х\, ..., хп), Ь = (г/i, ..., уп, ), а, Ь е К". Скажем, что а<тЬ, ес-
если \а\ < \Ь\, либо \а\ = \Ь\ и существует номер /' такой, что х,- = г/,- при
I < /', но Xj > yj (т. е. у меньшего вектора первая отличная координата
больше). Очевидно, что любые два вектора из W сравнимы по отноше-
отношению <т- Теперь продолжим это отношение <т на множество Ga: если
{аь ..., а„}, {&ь ..., 6n}eGA, то
{аи ..., ап}<т{Ьи ..., &„},
если существует номер /' такой, что а,- = 6,- при I < /', но а} <т Ь}.
Определение 7.3. Минимальный элемент множества Ga по отно-
отношению <т называется вполне приведенным базисом.
Замечание 7.4. Легко видеть, что вполне приведенный базис су-
существует и единственен. В [ , гл. 3] приведен алгоритм нахождения
вполне приведенного базиса решетки.
188 Гл. 7. Приведенные базисы решеток и их приложения
Приведенные по Минковскому и вполне приведенные базисы ре-
решеток имеют важные приложения в вычислительной алгебраической
теории чисел, см. [ , гл. 3, 5]. В теоретико-числовых алгоритмах ча-
часто используются базисы, приведенные по Ленстре—Ленстре—Ловасу
(LLL-приведенные базисы), о которых мы расскажем в следующих па-
параграфах.
§ 7.2. LLL-приведенный базис и его свойства
Определение 7.5. Базис Ь\,...,Ьп решетки Лс:
LLL-приведенным, если для векторов 6*, ..., 6* и коэффициентов \хц,
полученных с помощью процесса ортогонализации Грама—Шмидта
(см. §7.1), выполнены неравенства:
,,* ,* |2 3 , * 2
Замечание 7.6. LLL-приведенные базисы впервые были введены
в работе [ ]. Условие G.2) означает, что вектор b* + \iu-ib*_l, рав-
равный проекции вектора 6, на L0(,(bi, ..., bi-2)±, не является очень ма-
маленьким по сравнению с проекцией вектора 6, на Lo6(bi, ..., б^-г)-
Опишем ряд важных свойств LLL-приведенных базисов.
Теорема 7.7. Пусть bi, ..., Ь„ — LLL-приведенный базис ре-
решетки Л С W. Тогда:
1. \bj\2 < 2'16*|2 при всех i, /', 1 < /' < i < п;
2. d(A) < П
Доказательство. Поскольку векторы 6* ортогональны, то
Так как \dfi_l ^ 1/4, то из неравенства G.2) следует, что
Ю2>1\ьи\2.
Отсюда следует неравенство
|6*|<2'-/|6*|2, G.3)
§ 7.2. LLL-приведенный базис и его свойства
189
выполняющееся при всех I ^/. В силу ортогональности Ь*, получим
Поэтому |6/f<2/-1|6*|2<2/-1.2'-/|6*|2, что доказывает первое
утверждение теоремы.
Первое неравенство во втором утверждении теоремы есть неравен-
неравенство Адамара. Второе неравенство выполняется, поскольку
п(п-\)
Е'=' 2
Здесь мы воспользовались тем (обозначая через [Ь\, ..., 6„] матри-
матрицу, в i-й строке которой стоят координаты вектора 6,), что выполнены
равенства
= |det[61,...,6n]| = |det[6t, ...,b*n]\ =
= |det[6t, ...,&:]• [61,
Наконец, из неравенства
следует, что
*|2
что доказывает последнее утверждение теоремы. ?
Теорема 7.8. Пусть &!,...,&„ — LLL-приведенный базис ре-
решетки Л. Тогда для любого вектора х € Л \ 0 справедливо нера-
неравенство
Замечание 7.9. Утверждение теоремы 7.8 означает, что вектор &i
является одним из самых коротких векторов решетки.
п
Доказательство. Пусть дс= ?]/•,•&,• еЛ\0, где г,- € Z. Предста-
« (=1
вим л: в виде л:= ^г*Ь*, где г* е К. Если iq — максимальный номер,
190 Гл. 7. Приведенные базисы решеток и их приложения
для которого гьф§, то очевидно, что 'fo = 'V Поэтому (учитывая
ортогональность 6*) получим неравенства
откуда следует утверждение теоремы. ?
Теорема 7.10. Пусть Ь\, ...,Ьп — LLL-приведенный базис ре-
решетки Л, х\, ..., Xt — линейно независимые векторы решетки Л.
Тогда при всех j < / выполнены неравенства
\2 <2"-1max(|xi|2 \xt\2)
\0j ^/ maxyxi , ..., |х/| ).
Доказательство. Разложим дс,- по базису:
п
Xi = ^2 rijbj, rij e Z, i = 1,...,/.
Обозначим для каждого I, 1 < I < /, через /'(г) наибольший номер /' такой,
что Гц ф 0. Тогда, аналогично доказательству теоремы 7.8, выполнены
неравенства
Не ограничивая общности рассуждений, можно считать, что /'A) ^
^/B) ^... ^ /'(/). Тогда j(i)^i, i=l,...,t, так как если найдется
номер I такой, что j(i)<i, то Xi, ..., дс,-€L06Fi, ..., &/(,-)), что проти-
противоречит линейной независимости дсь ..., дс,-. По теореме 7.7 имеем
последнее неравенство следует из определения j(i). D
§ 7.3. Алгоритм построения LLL-приведенного
базиса решетки
В этом параграфе мы опишем построение LLL-приведенного базиса
решетки Л С W. Мы сохраняем обозначения §7.2.
Алгоритм построения LLL-приведенного базиса.
В начале работы алгоритма задан &1; ..., Ьп — какой-то базис ре-
решетки Л. В конце работы Ь\, ..., Ь„ — LLL-приведенный базис.
Проводится индукция по й € {1, 2, ..., я + 1}. В начале k = 2; ко-
когда k = п + 1, алгоритм заканчивает работу и выдает LLL-приведенный
базис.
§7.3. Алгоритм построения LLL-приведенного базиса решетки 191
Для каждого k символом (*)j, мы будем обозначать совокупность
неравенств
Если k = 2, то условия (*J выполнены, поскольку для i получится пу-
пустое множество значений 1 <i<2. Если k = n+ 1, то (*)n+i означает,
что базис приведенный (по определению).
Предположим, что для некоторого k, 1 < k < n + 1, выполнены нера-
неравенства (*)k- Мы хотим обеспечить выполнение (*)k+i- Для начала
обеспечим выполнение неравенства
K*-il<^ G-4)
Если G.4) уже выполнено, то двигаемся дальше. В противном случае
находим г — ближайшее целое к \ik,k-i, и заменяем bh на
к-Ч
bk - rbk-i = b*k + J2^k) - rV-k-i,j)b* + (y.k,k-i - r)b*k_{.
Тогда коэффициент \Xk,k-\ заменится на \iktk-i — г, что обеспечит
выполнение G.4). Коэффициенты \j.kj заменятся на \хщ — r\j.k-\j,
/' = 1, ..., k — 2. Все остальные коэффициенты \хц и векторы 6* при I < k
и при I > k, а также вектор Ь\ не изменятся. Действительно, 6* есть
проекция 6,- на L0(,(bi, ..., bj-i)-1; при замене bk на bk — rbk-i данные
линейные оболочки не изменяются, значит, не изменяются и все 6*.
Далее, поскольку \хц = F,-, &*)/(&*, &*), то, при I ф k, \хц не меняются
в силу того, что 6,- не изменился и все 6* также не изменились.
Продолжим обеспечение условий (*)k+\ в предположении, что G.4)
выполнено.
1 случай. Пусть k ^ 2 и выполнено неравенство
|6,* + цм_16,*_1|2<^|6,*_1|2. G.5)
Тогда мы меняем местами вектора bk и Ь^-\- При этом изменят-
изменятся векторы b*k_{ и b*k и коэффициенты \ik,k-i, Ц*-1,/, Ца,/, Ц«,а-ь Ц«,а,
где /' < k — 1 или г > й. Остальные 6,-, 6* и [i,y не изменятся по тем же
причинам, что и ранее, т. е. потому, что Lo6(&i, ..., б,)-1 при i^k,k—\
остается той же самой, и векторы 6* при 1ф k, k— 1 не изменятся.
192 Гл. 7. Приведенные базисы решеток и их приложения
Что произошло при замене местами Ьи и &?_i? Вектор Ь\ +
+ Hk,k-ib*k_l ранее был равен проекции bh на Lo6(&i, ..., bk-2)J~,
а теперь он равен проекции нового вектора 6j,_i на L0(,(bi, ..., bk_2)±-
Далее, &]*_! был равен проекции bk-\ на Lo6(&i, ..., б^-г), а теперь
это есть проекция нового вектора bk на Lo6(&i, ..., б,)-1. Из неравен-
неравенства G.5) следует, что при нашей замене значение |&?_i|2 уменьшилось
более чем в 3/4 раза.
Сделав эту замену местами bk и bk-i, мы заменяем k на k — 1 и ока-
оказываемся В УСЛОВИЯХ (*)ft_l.
2 случай. Пусть либо k = 1, либо
I&I + ^^&U^I&U2. G.6)
Если й = 1, то присваиваем k значение 2 и продолжаем процесс,
т. е. обеспечиваем выполнение (*)г.
Если выполнено условие G.6) и й > 1, то обеспечиваем выполнение
неравенств
К/|<1> 1 </<*-1 G.7)
(для j = k—\ G.7) уже выполнено в силу G.4)). Пусть / — наибольший
номер, для которого \\±ki\ > „• Тогда /<й — 2. Возьмем г — ближай-
ближайшее целое к [ifc/ — и заменим bk на 6^ — rbi. При этом [ift/- заменятся
на \iki — г. Все остальные \1ц и все векторы 6* останутся при этом
неизменными. Мы продолжаем этот процесс, уменьшая /, пока не до-
достигнем значения /= 1. В этом случае мы обеспечим выполнение усло-
условий (*)*+!.
Если мы достигли выполнения условий (*)п+ь то алгоритм останав-
останавливается, поскольку &i, ..., Ьп образуют приведенный базис; в против-
противном случае мы продолжаем процесс, т. е. увеличиваем значение k.
Конец алгоритма.
Докажем, что алгоритм заканчивает работу. Обозначим через
di = det || Fу, bi) || i</,/<,-, i = 1, ..., п.
Очевидно, что
d/= det 11F/11Г 2
§7.3. Алгоритм построения LLL-приведенного базиса решетки 193
Поскольку 2 случай срабатывает за конечное число операций
и увеличивает значение k на единицу, то нам нужно доказать, что
1 случай встретится лишь конечное число раз. Заметим, что при
прохождении 1 случая при некотором значении k величина dk-\ умень-
уменьшается более чем в 3/4 раза, поскольку так уменьшается значе-
ние \bk_i\z.
Однако величины di ограничены снизу некоторой положительной
постоянной, зависящей только от решетки Л. Точнее, если обозначить
через т(Л) квадрат длины кратчайшего ненулевого вектора Л, то вы-
выполнены неравенства
/4\A-1)/2 ,,,
d\'\ i=\,...,n
(см. [ , гл. 2]). Поэтому для каждого значения k 1 случай может встре-
встретиться лишь конечное число раз. Это означает, что алгоритм закончит
работу.
Теорема 7.11 (см. [ ]). Если Л — решетка в II1 с базисом
&ь ..., Ьп, причем
где В е К, В ^ 2, то алгоритм построения LLL-приведенного ба-
базиса делает O(n4\ogB) арифметических операций. При этом це-
целые числа, встречающиеся в ходе работы алгоритма, имеют дво-
двоичную длину O(n\ogB) битов.
Замечание 7.12. В книге [ , гл. 2] приведена блок-схема алго-
алгоритма построения LLL-приведенного базиса, удобная для практической
реализации.
Замечание 7.13. В работе [ ] рассмотрена возможность измене-
изменения значения постоянной с = 3/4 в условии Ловаса
При этом значение с меняется в ходе работы алгоритма приведения
от - + s до 0,99.
Замечание 7.14. Многочисленные усовершенствования алгорит-
алгоритма построения LLL-приведенного базиса содержатся в работе [ ].
В следующем параграфе мы опишем некоторые из них.
13 О. Н. Василенко
194 Гл. 7. Приведенные базисы решеток и их приложения
§ 7.4. Алгоритм Шнорра—Ойхнера
и целочисленный LLL-алгоритм
В этом параграфе мы вкратце изложим некоторые модификации ал-
алгоритма построения LLL-приведенного базиса. Эти модификации опи-
описаны в работах [ ; ; ; ] и в книге [ ].
Мы будем обозначать через В,- следующие величины:
Bi = (b*,b*), i=\,...,n.
Одна из модификаций LLL-алгоритма была предложена Шнорром
и Ойхнером. Она называется LLL-алгоритмом с глубокой вставкой.
Для этой модификации теоретическая оценка сложности хуже, чем для
исходного LLL-алгоритма, однако на практике с ее помощью зачастую
можно получать более короткие вектора решетки, что немаловажно для
практических приложений.
Идея LLL-алгоритма с глубокой вставкой заключается в следу-
следующем. Пусть k > i; вставим вектор bk между 6,_i и 6, в процессе
построения приведенного базиса. Поскольку
bk = Ь1 + ^2 V-щЬ* = b*k+v + YJ V-ktf,
/=1 1=1
k-l
где v = J2 У-kjb*, то после вставки bk между 6, и 6,_i новое значение
/¦=«
вектора 6* будет равно 6*new:
k-i
Ciew = К + V = Ь\ +
Новое значение квадрата длины вектора 6* равно Bitmw:
) Ё
Если новое значение Bi<new меньше старого (например, Bj<new ^-
то такая замена местами уместна; если i = k — 1, то такая замена
равносильна одному из шагов LLL-алгоритма. Однако если i^k— 1,
то приходится перевычислять больше значений коэффициентов \1ц, чем
в исходном LLL-алгоритме; это увеличивает время работы алгоритма
§7.4. Алгоритм Шнорра—Ойхнера и целочисленный LLL-алгоритм 195
Шнорра—Ойхнера. Блок-схему LLL-алгоритма с глубокой вставкой
можно найти в [ , гл. 2, алгоритм 2.6.4].
Другая модификация LLL-алгоритма называется целочисленным
LLL-алгоритмом. Она была предложена Де Вегером. Эта модифи-
модификация применима в случае, когда матрица Грама G = ||F,-, 6/)||y=i „
базиса &i, ..., Ь„ решетки Л является целочисленной (это имеет ме-
место, например, в случае, когда сама решетка Л содержится в II1). Тогда
справедлива следующая теорема, описывающая некоторые арифмети-
арифметические свойства решетки.
Теорема ТАБ. Пусть (как и в §7.3) do = \, di =
= det ||Fу, &/) 11/^=1 ,-, i=\,...,n. Если матрица Грама решет-
решетки Л является целочисленной, то для всех номеров i, 1 < i < п,
и всех j < I выполнены следующие утверждения:
1. di-iBi?Z,dmij?Z;
2. для всех т, j < т < I, d,- • Y, V-ikV-mkBk € Z.
Доказательство. В § 7.3 мы видели, что
Поэтому di = di-iBj e Z. Пусть /' < I. Рассмотрим вектор
Очевидно, что (v, b*k) = 0 при k = 1, ...,/'. Поскольку Lo6(&i, ..., bk) =
= Lo6(b*i, ..., b*k), то
(o,6ft) = О, Й=1, ...,/ G.9)
G.10)
при некоторых хь ..., Xk € К. Из G.8) и G.9) получаем систему линей-
линейных уравнений
13*
196 Гл. 7. Приведенные базисы решеток и их приложения
Решая эту систему по правилу Крамера, получим, что Хи = —г,
k=\, ...,/', где mh € Z. Поскольку '
i i
k=i k=i
то Xj = \хц, откуда следует первое утверждение теоремы.
Докажем второе утверждение. Для вектора V, определенного в фор-
формуле G.8), справедливо равенство
причем по доказанному выше diXk € Z. Это означает, что d/V € Л, откуда
(djV, bm) € Z для всех т= \, ..., п. Тогда
^2 y-tkbt, bm J € Z, m = 1, ..., n.
k=i '
Поэтому
(^2 Z, m=\,...,n.
Пусть /' < m < i. Тогда bm = b*n+ Y, V-mib* и
2^ Ц«6*, 6m I = dj I 2^ Hi***. 6m + 2^ ^я/6, I =
= 1 ' ^fc=l /=1 '
/
что и требовалось доказать. ?
Следствие 7.16. В условиях теоремы положим дополнительно
Xij = dj\iij € Z при i < j, \ц = di.
При фиксированных I, /', таких, что j < I, рассмотрим последова-
последовательность
Тогда uk e Z, m,-_i = \ц.
§7.4. Алгоритм Шнорра—Ойхнера и целочисленный LLL-алгоритм 197
Доказательство. Покажем, что
«*=¦
При k = 0 это очевидно. Пусть для m<k формула G.11) верна.
Тогда
((h
}— = dk (Oi, Oj) — } —. -r-j—Ki
dk у " j-^ dLdi_i dkdk_i
что доказывает G.11) для k. Из G.11) следует, что
uk = dk ((bi, bj) - ]Г twy/fi/), G.12)
поскольку
\ihi di D
Из теоремы и G.12) следует, что мйе2. Равенство m/_i=X,/- также
следует из G.12), поскольку
b* + Y, V-ub*, b* + Y, У-jsK j - Y,
/=1 s=l ^ 1=1
= dj-i I \j.ijBj + Y Y
^ s=i
Следствие доказано. П
Целочисленный LLL-алгоритм устроен следующим образом. Он ра-
работает не с векторами Ь\, ..., Ь„, а с целочисленной матрицей Грама G.
Выход алгоритма — целочисленная матрица Н, выражающая координа-
координаты LLL-приведенного базиса через координаты исходного базиса ре-
решетки Л. При этом с помощью теоремы и следствия из нее все вы-
вычисления проводятся только с целыми числами. Блок-схему алгоритма
можно найти в [ , гл. 2, алгоритм 2.6.7].
Последней модификацией LLL-алгоритма, о которой мы упо-
упомянем в данном параграфе, является MLLL-алгоритм Поста. Этот
198 Гл. 7. Приведенные базисы решеток и их приложения
алгоритм работает с векторами Ь\, ..., Ь„ € Ш", образующими мно-
множество Л = Z&i +... + Z6n С R", причем линейная независимость
&ь ..., Ь„ не предполагается. MLLL-алгоритм вычисляет ранг Z-mo-
дуля Л и находит его LLL-приведенный базис. Блок-схему алгоритма
также можно найти в [ , гл. 2, алгоритм 2.6.8].
§ 7.5. Некоторые приложения LLL-алгоритма
Одним из возможных приложений LLL-алгоритма является нахо-
нахождение ядра и образа линейного отображения евклидова простран-
пространства, задаваемого целочисленной матрицей. Соответствующие алгорит-
алгоритмы описаны в [ , §2.7]. В данном параграфе мы опишем другие при-
приложения LLL-алгоритма: нахождение целочисленной линейной зави-
зависимости для заданных действительных чисел и нахождение коротких
векторов в решетках.
Пусть z\, ..., zn — фиксированные действительные числа, z\ ^0.
Мы хотим найти целочисленную линейную зависимость
xiZi + ... + xnzn = 0, xi, ..., xn?Z, G.13)
где не все x-t равны 0. Выберем достаточно большое натуральное чис-
число /V и рассмотрим квадратичную форму
Q{ai, ..., an) = Q{a) = а\ + ... + а2п + N{z{a{ + ... + znanf. G.14)
Поскольку Q{a) — положительно определенная квадратичная фор-
форма, она задает скалярное произведение на W. Идея нахождения
х\, ...,хп, удовлетворяющих G.13), заключается в следующем: если
вектор (а\, ..., а„) € Z" является коротким относительно нормы, инду-
индуцированной квадратичной формой Q(a), то величина z\d\ +... + znan
будет небольшой, небольшими будут и коэффициенты а/ при />1.
Поэтому если z\, ..., zn линейно зависимы, то мы скорее всего найдем
решение G.13).
Мы начинаем со стандартного базиса решетки ACR", состо-
состоящего из векторов 6,-= (8а, ..., Sm), i=l,...,n, где §,у — символ
Кронекера. С помощью LLL-алгоритма из §7.3 (или его модифи-
модификаций из § 7.4) мы находим LLL-приведенный базис Л (скалярное
произведение в W задается квадратичной формой Q(a) из G.14)).
Когда LLL-приведенный базис будет построен, один из его коротких
векторов, возможно, даст решение G.13), как это было объяснено
выше.
§7.5. Некоторые приложения LLL-алгоритма 199
Лемма7.17. ЕслиЬ\, ..., Ьп — стандартный базис IT, то в про-
процессе ортогонализации Грама—Шмидта выполняются равен-
равенства
\xn=Zi/zi, 1 = 2, ...,п;
V-ц = 0, 2 < / < i < п;
b* = bi-^-bu i = 2,...,n.
Далее, если Bt = \b*\2 — длины векторов Ь* в нашей метрике, за-
задаваемой Q(a), то
Bi=Nzf, Bi = \ при i = 2,...,n.
Доказательство. Пусть [и, v] — скалярное произведение на Ш",
индуцируемое Q(a). Тогда по определению
[и, v] = ±(Q(u + v) - Q(u) - <?(»)).
Теперь легко видеть, что векторы
6* = 6, = A, 0, ...,0),
b* = bi-^-bi = (-^-,O, ..., 1, ...,0\ i = 2, ...,n,
являются ортогональными. В самом деле, при i, j ^2, 1ф j,
Q(b* + b*) - Q(b*) - Q(b*) =
= 1 + 1 + N((-Zi - Zj) + Zi + Zjf -
- A + Щ-Zi + zd2) - A + N(-Zj + zjf) = 0
и, при /' ^ 2,
Q{b\ + bj) - Q{b\) - Q(b*) =
= 1 + N((zy - Zj) + ZjJ -Nz\-{\+ Щ-zi + z^2) = 0.
Утверждение леммы о значениях В,- также очевидно. ?
Прежде чем описывать алгоритм нахождения линейной зависи-
зависимости, скажем несколько слов о выборе натурального параметра N
в формуле G.14). Число N выбирается эвристически; можно попробо-
попробовать несколько различных значений N. В книге [ , гл. 2] рекомендуется
выбирать N из промежутка (-; -^J, если все значения z,- не слишком
удалены от 1 (скажем, лежат в интервале A0~6; Ю6)) и известны нам
с точностью s. Число s также должно быть достаточно малым: если мы
200 Гл. 7. Приведенные базисы решеток и их приложения
предполагаем, что решения x-t в G.13) не превосходят X, то е можно
взять равным Х~3"/2. Число всегда следует выбирать меньшим Х~"
(здесь, однако, значение X нам неизвестно и также определяется
эвристически).
Алгоритм нахождения линейной зависимости (эвристический).
На входе алгоритма заданы z\, ..., zn ? К, не все равные нулю, и па-
параметр N ? N. На выходе малая по абсолютной величине линейная ком-
комбинация x\Z\ + ... + xnzn с небольшими коэффициентами х,- ? Z, не все-
всеми равными нулю.
1 шаг. Для стандартного базиса Ь\, ..., Ьп решетки Z" по лем-
лемме 7.17 находим ортогональный базис Ь\, ..., 6* и коэффициенты \1ц.
2 шаг. Теперь к базису Ь\, ..., Ь„ (и соответствующему ему ортого-
ортогональному базису 6^, ..., 6* и коэффициентам fi(/) применяем LLL-ал-
горитм из § 7.3; скалярное произведение в Ш" задается квадратичной
формой G.14). В результате будет построен LLL-приведенный базис Л
решетки II1.
3 шаг. Берем короткие векторы из найденного LLL-приведенного
базиса; их координаты х—1, ...,х„, возможно, являются решения-
решениями G.13), что устанавливается проверкой.
Конец алгоритма.
Замечание 7.18. Вместо стандартного LLL-алгоритма можно ис-
использовать LLL-алгоритм с глубокой вставкой, описанный в § 7.4, по-
поскольку он зачастую выдает более короткие векторы.
Теперь опишем алгоритм для нахождения всех достаточно корот-
коротких векторов решетки. Точнее, пусть A = Z&i + ... + Z6n—решетка
в Ш.", С — положительная постоянная; требуется найти все векторы
6 € Л такие, что
|&|2<С. G.15)
Эта задача является трудной; описываемый ниже алгоритм в некоторых
случаях может иметь сложность, экспоненциально зависящую от раз-
размерности пространства п.
Если Ь € Л, то Ь = Х\Ь{ + ...+ хпЬп при некоторых х\, ..., х„ ? Z.
Тогда неравенство G.15) примет вид
...,xn)\^ С,
где
Q(xi, ...,xn) = (xibi + ... + xnb
§7.5. Некоторые приложения LLL-алгоритма 201
— положительно определенная квадратичная форма. Ее мы приводим
к более удобному виду
п , п s 2
Q{x) = Y^Qai xi + Y^ <liixi) > Qa>0. G.16)
Для этого запишем Q(x) в виде
Число аи = F1, 61) положительно. Тогда
Q(x) =,
/=2 i=2 /=2
II II /II
1=2 /=2 V/=2
где
Qi (x2, ¦¦¦,xn) = (
/=2 /=2 \=2
также является положительно определенной квадратичной формой, по-
поскольку при очевидной замене переменных справедливо равенство
Q(xi, ..., xn) = any2 + Qi(y2, ••., уп).
Далее аналогично поступаем с Q\ (x%, ¦ ¦ ¦, хп) и в конечном итоге приво-
приводим Q(x) к виду G.16). Представление G.16) называется разложением
Холецкого для квадратичной формы Q(x).
Алгоритм нахождения коротких векторов решетки.
На входе алгоритма заданы положительно определенная квадратич-
квадратичная форма Q(x) = Q{x\, ..., хп) вида G.16) и положительная постоян-
постоянная С. На выходе получаются все векторы х € Z" такие, что Q(x) < С
(из каждой пары ±дс выдается только один вектор).
202 Гл. 7. Приведенные базисы решеток и их приложения
1 шаг. I := п, Ti := С, V,- := 0.
2 шаг. z := y/Ti/qu, U '¦= [z - Vi\, xt := \—z - V{\ - 1.
3 шаг. х,- := x,- + 1. Если x,- > L,-, то i := i + 1 и вернуться на 3-й шаг.
Иначе при i > 1 присвоить
и вернуться на 2-й шаг.
4 шаг. Если (хь ..., х„) = @, ..., 0), то алгоритм заканчивает ра-
работу. Иначе выдается очередной вектор х = (х\, ..., х„), значение
Q(x) = С — Т\ + qn{xi + ViJ и мы возвращаемся на 3 шаг.
Конец алгоритма.
Покажем, что алгоритм работает корректно. По сути, в этом алго-
алгоритме мы описали перебор значений х\, ..., х„. В начале i = n, Tn = C,
Vn =0, z= \fCjq~rm, Ln = y/C/qnn, xn = \— ^/C/qnn ] — 1. Это минималь-
минимальное возможное значение хп € Z, для которого вектор х=(х\, ..., хп)
может удовлетворять неравенству Q(x) ^ С. Действительно, для век-
вектора х= (х\, ..., хп) из неравенства Q(x) < С в силу G.16) следует,
что qnnX2n < С, \хп\ < y/+C/qnn, откуда хп < Ln (это проверка окончания
перебора) и х„ ^ \—^/C/qnn\. Затем на 3 шаге мы присвоим вели-
величине Тп-\ значение с — qnfl_\X2n, Vn_\ —значение qn-i,nXn и вернемся
на 2 шаг. Здесь мы аналогично выберем минимально возможное (при
уже имеющемся значении х„) значение хп-\. Оно будет удовлетворять
неравенству
откуда
¦^- = г.
Поэтому
Xn-^\-Z-Vn-{\,
и также хп-\ <z— Vn-\, откуда xn_i<Ln_i. Из этого следует, что
если на 3 шаге хп-\ > Ln_\, то мы вышли за пределы диапазона из-
изменения хп-\ (при данном хп), и тогда мы перейдем к следующему
значению хп. Далее, аналогично, при заданных хп и хп-\, мы пере-
перебираем хп-2 и так далее. Перебор закончится, когда (возрастающая)
переменная х„ достигнет значения 0 и все остальные (возрастающие)
§7.6. Алгоритм Фергюсона—Форкейда 203
переменные при х„ = 0 также достигнут значения 0. Тогда, действи-
действительно, из каждой пары ±х, удовлетворяющей неравенству Q(x) < С,
мы найдем ровно один вектор. Заметим также, что на шаге 3 очередное
значение Г,-_1 := Г,- — qu{xi + V,J удовлетворяет неравенству 7}_i ^ 0,
поскольку из неравенства х,- < L,- и неравенства х,- ^ \—z — V{\ следует,
что \xi + Vj | < \jTilqu = z.
Дальнейшее усовершенствование данного алгоритма было предло-
предложено Финке и Постом. В нем после нахождения разложения Холецкого
для квадратичной формы Q{x) = xTAx, что равносильно представле-
представлению А в виде А = RTR для некоторой верхнетреугольной матрицы R,
применяется LLL-алгоритм к строкам матрицы R~l. В результате мы
сможем существенно уменьшить перебор значений x-t в алгоритме;
на практике это значительно ускоряет его работу. Дальнейшие детали
см. в [ ] и [ , гл. 2].
Замечание 7.19. Неизвестно, является ли задача нахождения крат-
кратчайшего вектора решетки NP-полной. NP-полнота этой задачи дока-
доказана для нормирований | • |оо и | • |i пространства W, см. [ ].
§ 7.6. Алгоритм Фергюсона—Форкейда
В данном параграфе мы опишем алгоритм Фергюсона—Форкейда,
см. [ ], а также см. [ ; ; ; ; ]. Этот алгоритм предна-
предназначен для нахождения целочисленной линейной зависимости заданного
конечного набора действительных чисел. Один алгоритм для решения
этой задачи мы уже описали выше в § 7.5.
Введем некоторые обозначения. Фиксируем neN, п ^ 2. Для ве-
/
щественной матрицы А = ||а,у|| размера п х п положим \А\ = , / Y, afj-
Очевидно, что |Л +В| < |Л| + |В|, \АВ\ < |Л| • |В|. V '•/=1
Фиксируем вектор х={х\, ..., х„) ? К". Вектор m € Z", m^O, мы
будем называть соотношением, если
хтТ = 0. G.17)
Мы будем считать, что все координаты вектора х отличны от нуля,
поскольку в противном случае поиск соотношения G.17) тривиален.
Также обозначим через Р матрицу размера п х п:
Р = ххт ¦ 1„-хтх, G.18)
где // обозначает единичную матрицу размера / х /, / = 1, 2, 3, ... Тогда
204 Гл. 7. Приведенные базисы решеток и их приложения
хР = ххт{х1„ -х) = 0. Далее, если у е Ш", уР = 0, то
у(х, х)-(у,х)х = 0,
откуда Di = Xi ¦ y1—г. Следовательно, rank P = n— 1.
Рассмотрим матрицу Н размера пх (п— 1), столбцы которой со-
составляют базис (^(х))-1. Очевидно, rank Н = п — 1, хН = 0. Далее мы
покажем, как вычислить матрицу Н. Обозначим через f,- г'-ю строку
матрицы Н, i= \, ..., п; ViG Rn~l. Положим Яо = 0 € К",
G.19)
При i ^1 Hi — матрицы размера i х (п — 1), Нп = Н.
Также положим Go = 1 и рассмотрим i x i матрицы
(Vi,Vi)\
=^iH], G.20)
\{Vi, Vi) ... (Vi,Vi)J
I = 1, ..., п. Так как все координаты вектора х отличны от нуля, то мат-
матрицы G,- обратимы при 1 ^ г < п. Действительно, поскольку хН = 0,
то x\V\ + ... + xnvn = 0. Следовательно, vn линейно выражается через
1>ь ..., Р„_1, и так как rank Я = п — 1, то V\, ..., fn_i линейно незави-
независимы. Значит, G,- — матрицы Грама для V\, ..., f,- и поэтому являются
невырожденными при i < п. Положим
Pt = HjG~lHi, i = 0,\,...,n, G.21)
Pi — матрицы размера (п— 1) х (п— 1). Также обозначим
Qi=In-i-Pi, G.22)
и рассмотрим числа
C(k, /) = vkPjQj-iv], I < / < й < п. G.23)
Для всех остальных номеров /', k положим C(k, /') = 0. Получаем массив
значений С(Н), определяемый матрицей Н.
Следующий алгоритм является вспомогательным. Он переводит па-
пару х, Н в пару хА~1, АН для некоторой матрицы А, вычисляемой
в ходе его работы.
Алгоритм 1.
Шаг 0. Если существует координата х,- = 0, то алгоритм заканчивает
работу.
§7.6. Алгоритм Фергюсона—Форкейда 205
Шаг 1. Пусть Г =|| Тщ\\ —нижняя треугольная матрица размера
пх п, на диагонали которой стоят единицы, а при 1 < /' < k < n эле-
элемент Тц равен ближайшему целому к числу
C{k,j) v- TkiC(i, j)
(Ниже мы покажем, что C(j, j) ф 0, т. е. числа Тц определены.) Тогда
набор х, Н, С(Н) переводится в набор хТ~1, ТН, С(ТН).
Шаг 2. Пусть номер i, I ^i < п, такой, что
2'С(г, i) = max 2'C{j, j).
Пусть Е — я x я-матрица перестановки i-й и (i+ 1)-й строк Н. Тогда
набор х, Н, С(Н) переводится в набор хЕ~1, ЕН, С(ЕН).
Шаг 3. Положить А = ЕТ.
Конец алгоритма.
Заметим, что матрица А, построенная на 3 шаге, является целочис-
целочисленной и невырожденной.
Матрица Н, определенная выше, может быть найдена следующим
способом. Если мы рассмотрим матрицу
'1 ... 0
Х =
то РХ = (Я0т). Действительно, последний столбец РХ равен Рх1 = 0,
как показано выше, поскольку Р = РТ. Далее, в силу невырожденно-
невырожденности матрицы X имеем rank Н = rank РХ = rank Р = п— 1. Так как хР = 0,
то хРХ = 0, следовательно, матрица Н — искомая.
Положим Ао = 1п, х^=х, Н^ = Н и определим последователь-
последовательность
x{k),H{k),Ak, /e=l,2, ... G.24)
Если для некоторого k^ 1 мы уже построили x^*, Н*-к~^ и вектор
x(k-i) не имеет нулевых координат, то применим к паре л:^*, Я^*
алгоритм 1. На 3-м шаге им будет построена матрица А= Аи- Тогда мы
полагаем х^ = х{-к~Г)А^{, Н^ =AkH<-k~l) (фактически, это есть выход
алгоритма 1). Если обозначить
Rk=A-l...A~l, G.25)
206 Гл. 7. Приведенные базисы решеток и их приложения
то
x{k)=xRk, H{k)=R~lH. G.26)
Предположим дополнительно, что вектор х удовлетворяет условиям
хх1 = 1, 0 <xi <...<*„. G.27)
Такой вектор мы будем называть нормализованным.
Теорема 7.20. Пусть вектор х нормализован и имеет соот-
соотношение т нормы М. Тогда при некотором k, удовлетворяющем
неравенству
k<2n+ln\ogCn3M2), G.28)
один из столбцов матрицы Rk является соотношением.
Прежде, чем приступить к доказательству теоремы, докажем ряд
вспомогательных утверждений. Пусть по-прежнему Яу, Gj, Pj, Qj
задаются формулами G.19), G.20), G.21), G.22), гапкЯу=/ при
1 </<«— 1, rankЯ = п — 1, Vj — строки Я, матрицы Gj обратимы
при /' ^ п — 1. Если
V = Lo6 (v !,...,»„), G.29)
то dim V = п — 1.
Лемма 7.21. Для всех /', k, 1 </', k^n, справедливы следующие
утверждения:
1) P] = Ph Qj = Qh PjPj = Ph QjQj = Qh PjQj = O, и если vgR",
vPj ф 0 (vQj ф 0), то vPjV1 > 0 (vQjV1 > 0);
2) PjPk = Pmm(j,k), QjQk = Qmax(j,k) >PjQk= Pj ~ Pmm(j,k) = Qk~ Qmax(j,k) >
3) При j < k VPj С VPk, VQj D VQh, Vj = VjPk, PjQk = 0;
5) /„_[ = ^ (Q/-1 — Qj) = Y, PjQj-i есть ортогональ-
разложения единичной матрицы /„_ь
6) rankP/Q/.! = 1, VjQHi ф0 при 1 </ < п - 1.
Доказательство. Так как Gj = G/, то очевидно, что Pj = Py, от-
откуда (?/ = (?/. Далее, Р,Р, = Н](Н/Н])-1Н/Н](Н/Н])-1Н/ = Pf, тогда
из G.22) следует, что QjQj = Qj. Поэтому P/Qj = Pj - Pj = 0. Нако-
Наконец, из vPj ф 0 следует, что vPjV1 = vPjvT = vPjPjv1 > 0; аналогично,
из vQj ф 0 следует vQjVT > 0. Таким образом, первое утверждение
леммы доказано.
§7.6. Алгоритм Фергюсона—Форкейда 207
Далее, поскольку V = ^Rvj, то
k
VPk = Y^ Щ- G.30)
Действительно,
откуда при / < k получаем
{{Vl'Vl '"{Vl'Vk k [v'J
А при / > k имеем
Из формулы G.30) следует, что при /' < k
VPjC VPk, Vj = VjPk. G.31)
Так как ln-\= Pj+ Qj, то V =VPj +VQj. Это разложение явля-
является ортогональным, поскольку P/Q/ = 0. Действительно, {иР/, wQj) =
= (uPjQj, w) = 0. Поэтому из включения VP/ С VP^ при /' ^ k следует,
что VQj 3 VQk. Из этого также следует, что при /' ^ k имеем P/Qk = 0,
так как если PjQk ф 0, то найдется вектор и такой, что w = uPjQk ф 0.
Отсюда 0 < (о>, w) = (uPjQk, uPjQk) = {uPjQk, uPj). Ho uPjQk e VQk,
uPj e VPj, и по доказанному VPj ортогонально VQk. Таким образом,
доказано третье утверждение леммы.
Из определения Go и Но следует, что Pq = 0 — нулевая матрица,
Qo=In-i. Также Pn_i =//J_1G^_1//n_i =/n_i, поскольку матри-
матрица Я„_1 —квадратная, и Gn_i = Hn_[H1n_[. Следовательно, Qn-i =0.
Поэтому
п-\
\-Qi). G.32)
Докажем, что PjPk = Pmm(j,k) ¦ Пусть /> k. Тогда PjPk = (/„_i - Q/)Pfc =
= Pk — QjPk = Pk, так как (QjPk)T = QjPk = O по доказанному нами
208 Гл. 7. Приведенные базисы решеток и их приложения
третьему утверждению леммы. Аналогично доказываются остальные
равенства второго пункта леммы.
Четвертое утверждение леммы следует теперь из равенств
QkPj = (PjQk) = {Pj — Pmm(j,k)) =Pj — Pmm(j,k)= PjQk-
n-l
Равенство /„_i = Yj PjQj-i следует из доказанной формулы G.32)
/=i
и равенства Q,_i — Qj = PjQj_\.
Докажем ортогональность разложений в пятом утверждении леммы.
При iф j имеем
(Qi-i - QjHQi-i - Qi) = Qj-iQi-i - QjQj-i - Qj-iQi + QiQi = Mij.
Если i < j, то Мц = Qy_i — Qj — Qy_i + Qj = 0, аналогично рассматри-
рассматривается случай i > j. Пятое утверждение леммы доказано.
Наконец, докажем шестое утверждение леммы. Выполнены нера-
неравенства rankP/Qy_i ^ 1, поскольку для вектора VGV имеем
VPjQHi = f ^ <*lVl ) Qi-l = Yj alVl(fn-l - Pj-l) = <*№Aп-1 - Pj-l)-
To есть PjQj-i переводит (п— 1)-мерное пространство V в не более
чем одномерное. Но так как матрица /„_i = Y, PjQj-i имеет ранг п — 1,
/=1
то ранг каждого слагаемого равен 1 и f/Q/_i ф 0 при /' = 1, ..., п — 1. ?
Следствие 7.22. С (у, /) = VjPjQHlv] > 0.
Лемма 7.23. Пусть В — вещественная матрица размера п х п\
обозначим Bj матрицы размера j x /', образованные первыми j
строками и столбцами матрицы В, j = 1, ..., п. Пусть detfi/^O,
Hj = BjHj, j = \, ..., п, и матрицы Pj, Qj получены с помощью
формул G.21) и G.22) с заменой Н} на Н}. Тогда Р} = Pj, Qj = Qj.
Доказательство. По определению
Pj = H](HjHl)-lHj = HjBj(BjHjHjBj)-lBjHj =
= H]B](B]rl(HjH])-lB-lBjHj = Pj.
Равенство Qj = Qj теперь очевидно. ?
В этом параграфе для действительного числа а мы будем обозначать
через [[а]] ближайшее целое к а число и {{а}} = а — [[а]]; при а = ^ + п,
п € Z, будем для определенности считать, что [[а]] = п.
§7.6. Алгоритм Фергюсона—Форкейда 209
Из доказательства леммы 7.21 следует, что справедливы равенства
к
vk = »*/„_! = ]Г auViPiQi-i G.33)
при некоторых аи € К, k = 1, ..., п. Действительно, поскольку v,-Р,- = f ,•
(-1
и VjQj_i=Vi— VjPi_i = Vi+ Yjaijvj> т0 такие числа а& можно най-
/=1
ти. При этом, очевидно, akk = \, k=\,...,n. Рассмотрим числа
C{k, j) = vkPjQj-iv] из G.23). Тогда
Действительно, по G.23) и лемме 7.21 имеем
C(k, I) = vkQ]_iPjv] = (vk, ViPiQi-i) =
= aki(ViPiQi_i, ViPiQi_i) = akiC(i, I),
что доказывает G.34).
Теперь определим последовательность Dkf.
Il. k = 2,...,n, G.35)
и для очередной пары чисел k, /', где k ^ n, k — 1 > /' ^ 1, положим
G-36)
Для всех остальных значений k и /', п ^ й, /' ^ 1, положим
Д*/ = 0. G.37)
Матрица ?>=|| ^*,/ IU,/=i «> является нижней треугольной, а матрица
B = In-D G.38)
является обратимой целочисленной. При этом
В = /„ + D + D2 + ... + Dn~l.
Положим
Н = ВН. G.39)
Строки матрицы Н составляют вектора Vk,
vk = vk- ]T DkJVj. G.40)
14 О. Н. Василенко
210 Гл. 7. Приведенные базисы решеток и их приложения
По лемме 7.23 и формуле G.33) получим (пользуясь тем, что Р/ = Р/
и Qj = Qj) ортогональное разложение векторов vk, k = 1, ..., п:
G.41)
Лемма 7.24. При 1 </'<й<я справедливы неравенства \akj
<1/2.
Доказательство. Пусть /' < k. Тогда по G.40) и лемме 7.21, п. 4
имеем
= akjVjPjQj-i- Y DkJviPjQj-i =
= (a"i- Y. Dkjai^VjPjQj-i, G.42)
последние два равенства следуют из G.33) и ортогональности разло-
разложения. Также из G.40) и леммы 7.21 получаем
VjPjQj-^VjPjQj-i. G.43)
Тогда
VjPjQj_lv] = v]PjQHlv],
поскольку
= (VjPj, (Vj ~Y;DjlVl)Qj-l) = (*>JPh VjQj-O-
Kj
Далее, по G.42) и G.43) получаем
Dkiaij\vjPjQHiv] =
PjQj-iv] = [akj ^2 Dkiaij\C(j, j).
§7.6. Алгоритм Фергюсона—Форкейда
211
Поэтому
^=1къ.п'~11т=ак1- Е
ij = akj -
DkiaV] - Dkj.
Утверждение леммы теперь вытекает из формулы G.36) и равенства
ап = \. U
Зафиксируем I, 1 < I < п. Пусть Т-т — матрица перестановки I и I + 1
строк матрицы Я (Tin — матрица размера п х п). Положим
о. \
H=TinH =
\Vn
и обозначим Hi, Pj, Qj — матрицы, получающиеся по формулам G.19),
G.21) и G.22), где Н и Я,- заменены на Я и Я,-. Тогда матрица Я,- удо-
удовлетворяет равенству
Строки Я„ обозначим Vj, j = 1, ..., п. Пусть Тц — матрица размера /' х /',
образованная первыми /' строками и столбцами матрицы Т-т. Если /' ф I,
то матрица Тц обратима, и вычисление, проведенное в доказательстве
леммы 7.23, верно для В} = Тц. Следовательно,
Pj=Ph Qj = Qh l</<
Отсюда получим ортогональное разложение
G.44)
Л-1
1-1
n-\
E
Далее мы обозначаем символом (и, w) угол между векторами и иш,
отсчитываемый от первого вектора ко второму и по модулю не превос-
превосходящий TI.
Лемма 7.25. Пусть 1 < I < п, 0 = (f,+iQ,_i, f,Q,_i). Тогда
i>iQi-iv] = vi+i Qtvj+l esc2 0, vi+iQtvj+l = ViQi-ivJ sin2 0.
Доказательство. Если v = u + cm, где «t«T = 0, то
(vw1J = c2(ww1J, c2wwJ = vvJ -cos2(v, w), uu1 = vvJ-sin2(v,w).
14*
212 Гл. 7. Приведенные базисы решеток и их приложения
Кроме того, Q = (Vi+iQi-i, ViQi-i} = {viQi-i, Vi+iQi-i) = —Q. Поло-
Положим
и = vi+1 Qi = vi+1 Pi+1 Qi = vi Qi, v = vi+iQi-i = vt <?,-_ i,
w = ViPi Qi-i = Vi Qi-i= vi+iQi-i.
Из леммы 7.21 следует, что uwJ =0. Отсюда, поскольку (w, f) = 0,
следует второе утверждение леммы, при v = u + cm для некоторого с.
Но по лемме 7.21 имеем
_ PiQi-\ = Qi-\-Qu
v-u = vi+i{Qi_i - Qi) = Vi+iPiQi-i = cViQi-i = cm
при некотором сей.
Для доказательства первого утверждения леммы положим
и = vi+1 Qi =
w = ViQi-i = ViPiQi-i ф 0.
Снова uw1 = 0. Так как Qt_\ — Qi = PiQt_i, то
vi+i(Qi-i - Qi) = Vi+iPiQi-i = cViPiQi-i = cw
при некотором с € К. Поскольку (v, w) = 0, из наших рассуждений сле-
следует первое утверждение леммы. ?
Лемма 7.26. Если найдется номер I, 1 < I < п такой, что a,-+i>(- =
= {{a(+i)(}} и при этом
то
SVi Q^ i vj > 4vi+iQi-i vj+1.
Доказательство. Поскольку Qt_i — Qi = PiQi-i, то
причем слагаемые в правой части этого равенства являются ортого-
ортогональными векторами. Отсюда
Тогда, пользуясь условием леммы, получим
4w,-+iQi-ivj+i <2viQi_iv] +
поскольку 4o|+1 ( < 1. ?
§7.6. Алгоритм Фергюсона—Форкейда 213
Теперь приведем некоторые оценки, связанные с величиной
ЦН) = ]ГBя - 2/ + \)VjQHiv]. G.45)
Мы будем обозначать символом А(А) сумму диагональных элементов
квадратной матрицы А.
Лемма 7.27. Пусть матрица В и числа ащ определены форму-
формулами G.33) и G.38). Тогда
1) А(ННТ) = "е (l + ± ^ atyvjQj-iv];
2) если для всех k, /', кф], выполнено равенство ащ = {{ащ}},
то К(ННТ) < ЦН); _ _
3) для матрицы Н = ВН выполнено равенство ЦН) = ЦН).
Доказательство. Нетрудно видеть, что справедливо равенство
k
'J = Е a\'vjQj-i'v)' ¦ Тогда
п п k я—1
k=i k=i /=i /=i ^ k=j+i
(мы воспользовались тем, что a,kk = 1, Q«-i = 0). Далее, если йа/ =
„ г
4
п „ г
при кф], то 1 + Е а1; ^ 1 "I Г"^- Из этого следует второе утвер-
4
k=j+i
ждение леммы. Наконец, при Н = ВН из доказательства леммы 7.24
следует, что
откуда вытекает третье утверждение леммы. П
Лемма 7.28. Пусть номер i, I ^ i ^ п — 1, такой, что
для всех j = 1, ..., п — 1. Тогда
L(H)H2n
Доказательство. Поскольку
214 Гл. 7. Приведенные базисы решеток и их приложения
то
ЦН) < VviQi-iv] J2
так как i < я — 1 и я ^ 2. П
Лемма 7.29. Пусть I — то же, что в лемме 7.28; рассмотрим
матрицу перестановок Т-т и матрицу Н=7тН. Пусть ац+i =
= {{аи+1}}. Тогда
Доказательство. В силу G.44) и леммы 7.25 имеем
ЦП) - ЦП) = Bл - 2i + l){ViQi-ivf - Ш-iv]) +
+ Bл - 2t - J J
= Bл - Ti +
+ Bn - 2i - l)(viQi-1vj sin2 0 - viQ,_ivj sin20) =
= Bл - 2t+ 1 - Bл - 2t - 1) sin2 Q){ViQi-iv] - vi+i QtvJ+l).
Тогда L(#) - 1(Я) ^ 2(w,-Q,-_it»/' - vi+iQivJ+l). По выбору г выполнено
условие леммы 7.26, откуда, используя лемму 7.28, получим
ЦП) - ЦП) > 2(O,-Q,-_lO?-/4) > Ш^.
Лемма доказана. П
Лемма 7.30. Имеет место неравенство
ЦН) < (xxJfn2.
Доказательство. Поскольку /„_i =P,_i + Qi-i есть ортогональ-
ортогональное разложение матрицы 1п-\, и так как VjPj_ivJ ^0, то
VjvJ = VjPj-iv] + VjQj-iv] ^ VjQj-iv] ^ 0.
Из определения матрицы Р следует, что
VjV] = (XX1J - x](XXJ +Х2п) < (XX1J,
при /' = 1, ..., п — 1. Поэтому
л-1
что и требовалось доказать. ?
§7.6. Алгоритм Фергюсона—Форкейда 215
Лемма 7.31. Пусть вектор т € Z"\0 является соотношением.
Тогда для любой невырожденной целочисленной матрицы А раз-
размера пх п выполнены неравенства:
О < {хх1J < {ттТ)\АР\2,
(xxT+xi(n- 1))
Доказательство. Поскольку 1 < |Лтт|, то
\т .
Далее, Р=(Н0Т)Х-1, откуда \АР\2 ^\АН\2\Х~1\2, причем \Х~1\2 =
= п—\ +ххт/х21. Из этого следует второе утверждение леммы. ?
Докажем теорему 7.20. Поскольку хх1 = 1, 0<Х\ <...<хп, то хх;т<
<ш^, откуда ~2 < я. Положим Л=^'. Пусть х/нт = 0; матрица
РХ = [Н0т]. Справедливо неравенство |^~' | < 2п — 1. Тогда по леммам
7.27 и 7.31 получим, что
\АН\2 < ЦАН),
1 < Щтп^ЩАН). G.46)
Положим ?„ = —-т—. По лемме 7.29
2п+[п
Тогда по лемме 7.30
ЦАН) = L(R~lH) < A - en)k(xxTJn2 = A - en)kn2.
Из G.46) теперь следует, что
1 <3я3(ш/нт)A -sn)k.
Так как для любого /, 0 < / < 1, выполнено неравенство е~1 > 1 — /, то
Поэтому k < logCw {mm ^ =2n+ln \ogCn3M2). Теорема 7.20 доказана.
Алгоритм 2 (нахождение соотношения).
На входе алгоритма задан нормализованный вектор хеК". Ал-
Алгоритм 2 состоит в нахождении с помощью алгоритма 1 последо-
последо() <> ~{ ...А~{
р
вательности х(к), #<*>, Ак из G.24) и Rk = A~{ ...А~{, /е=1,2, ...
216 Гл. 7. Приведенные базисы решеток и их приложения
Если существует ненулевой вектор meZ" нормы М, удовлетворя-
удовлетворяющий G.17), то при некотором k, удовлетворяющем G.28), один
из столбцов Rk даст нам соотношение.
Конец алгоритма.
Замечание 7.32. Лагариас и Хастад показали, что алгоритм 2 де-
делает ОBп2 logTVf + 20я3) арифметических операций с действительными
числами.
§ 7.7. Заключение
В данной главе мы описали некоторые виды приведенных бази-
базисов решеток. Основное внимание было уделено LLL-приведенному ба-
базису, алгоритму его построения и различным его приложениям. Од-
Одно из основных приложений LLL-приведенного базиса будет описано
в следующей главе — это алгоритм разложения на неприводимые мно-
множители многочленов с рациональными коэффициентами, имеющий по-
полиномиальную сложность от длины входа.
Заметим, что приложения LLL-алгоритма в линейной алгебре, опи-
описанные в данной главе, не всегда являются достаточно эффективными.
Это видно и на примере алгоритма нахождения целочисленной линей-
линейной зависимости действительных чисел из § 7.5, и на примере алгоритма
нахождения коротких векторов решеток из того же параграфа.
Нахождение целочисленной линейной зависимости для заданного
набора действительных чисел имеет важные приложения в криптогра-
криптографии. В § 7.5 и § 7.6 мы описали два алгоритма для решения этой задачи.
Еще один алгоритм можно найти в [ ].
Глава 8. Факторизация многочленов над
полем рациональных чисел
с полиномиальной сложностью
§ 8.1. Введение
В данной главе мы рассматриваем алгоритмы разложения на непри-
неприводимые множители многочленов из Щх]. Центральное место в ней
займет описание LLL-алгоритма факторизации многочленов, предло-
предложенного А.Ленстрой, Х.Ленстрой и Л.Ловасом в работе [ ]. Этот
алгоритм имеет полиномиальную сложность от длины входа. Мы также
приводим и другие алгоритмы факторизации, эффективные на практике.
Мы будем называть многочлен f(x) € Щх] примитивным, если наи-
наибольший общий делитель всех его коэффициентов равен 1.
Разложение на неприводимые множители многочленов в коль-
кольце Q[x] сводится к разложению на неприводимые многочлены в коль-
кольце Щх] с помощью леммы Гаусса. Пусть мы хотим разложить
fo(x)?Q[x] на неприводимые множители в Q[x]. Домножив fo(x)
на общий знаменатель коэффициентов и вынося наибольший общий
делитель получившихся целочисленных коэффициентов, мы сводим
нашу задачу факторизации к задаче факторизации примитивного мно-
многочлена f(x) € Q[x] на неприводимые многочлены в Q[x].
Лемма Гаусса. Если f(x), g(x), h(x) € Щх], degg(x) ^ 1, degh(x) ^ 1,
g(x) и h(x) — примитивные, f(x) = g(x) ¦ h(x), mo f(x) также прими-
примитивен. I m n
Доказательство. Пусть g(x) = Y btxl, h(x) = Y, Cjx', f(x) = Y, auxk-
Тогда <=° /=0 k=0
ak= Y^ biCh 0</e<tt. (8.1)
Предположим, что f(x) не примитивен. Тогда найдется простое число р,
делящее все а^, k = 0, ..., п. В силу примитивности g(x) найдется но-
номер г'о, такой, что р\Ьь при всех i>io, p\bi0. Аналогично, найдется
218 Гл. 8. Факторизация многочленов над полем рациональных чисел
номер /о, такой, что р \ с/ при всех/ >/о, р]с/0. Пусть йо = г'о +/о- Но то-
тогда в силу (8.1) число р не делит
ako = bkck + J2 bi°i>
i+j=k+k,
либо (>(р>
либо />/'о
поскольку первое слагаемое в правой части этого равенства не делится
на р, а второе — делится. ?
Лемма 8.2. Пусть f(x)€Z[x], f(x) примитивен и неприводим
в Z[x]. Тогда f(x) неприводим и в Q[x].
Доказательство. Предположим, что f(x) =g(x) ¦ h(x), где g(x),
h(x) GQ[x], degg(x) ^ 1, degh(x) ^ 1. Тогда, вынося общие знамена-
знаменатели коэффициентов g(x) и h(x) и затем вынося наибольшие общие
делители получившихся целочисленных коэффициентов, мы можем
представить наше разложение в виде
где/leZ, BeN, (A, B)=\,gi{x), hi{x)€Z[x],gi{x) и hi(x) — прими-
примитивные. Отсюда
Bf(x)=Agl(x)hl(x). (8.2)
Поскольку из этого равенства следует, что В делит все коэффициен-
коэффициенты многочлена Ag[(x)hi(x), в силу примитивности g\(x)h\(x) (лемма
Гаусса) и равенства (А, В)= 1 получаем, что В=\. Но тогда из (8.2)
следует, что f(x) приводим в Z[x], что противоречит условию леммы. ?
Итак, мы свели задачу факторизации многочлена /о € Q[x] к задаче
факторизации примитивного многочлена f(x) € Z[x] на неприводимые
множители в кольце Z[x]. Обозначим через
п
f(x) = Y,UiXi, n = degf(x)>2, (8.3)
(=0
где щ € Z, i = 0, ..., п— 1, an€N, числа йо,...,ап взаимно просты
в совокупности. Эти обозначения и условия мы будем использовать
в §8.2—8.5.
т
Нормой многочлена h(x) = Y,nixl e QM мы будем называть вели-
ГТп <=о
чину \h\ = , / ^2 hf — евклидову длину вектора коэффициентов много-
члена.
§8.2. LLL-алгоритм факторизации: разложение по простому модулю 219
Мы также будем переходить от многочленов из кольца Ъ\х\
к многочленам из кольца Z//Z[x], где / — какое-либо натуральное
число; для многочлена h(x) = ^2 ft,x'€Z[x] мы будем обозначать через
т 1=0
h(x) (mod /) многочлен J2 hi (mod l)xl €Z//Z[x]. Соответственно, за-
(=0
пись h(x) (mod /) | g(x) (mod /) означает делимость в Z//Z[x].
Также напомним, что кольцо многочленов Щх\ является фактори-
альным (см., например, [ , гл. 9]).
§ 8.2. LLL-алгоритм факторизации: разложение
по простому модулю
Пусть примитивный многочлен f(x) тот же, что в формуле (8.3)
из §8.1. Предположим, что задано простое число р, натуральное чис-
число k и многочлен h(x) € Z[x], обладающие следующими свойствами:
A) старший коэффициент h(x) равен 1;
Б) h(x) (mod pk) делит f(x) (mod pk) в кольце Z/pkZ[x]\
B) h(x) (mod p) неприводим в Z/pZ[x]\
Г) (h(x) (mod p)f\f(x) (mod p) в Z/pZ[x].
Лемма 8.З. Существует единственный примитивный непри-
неприводимый многочлен ho(x) € Z[x] такой, что ho(x) делит f(x) в Z[x],
h(x) (mod р) | ho(x) (mod p). При этом для многочленов g(x) € Z[x],
делящих f(x) в Z[x], эквивалентны следующие условия:
1) h(x) (mod p) | g(x) (mod p);
2) h{x) (mod pk) \ g{x) (mod pk);
3) ho(x) делит g(x) в Z[x].
Доказательство. Из свойства Б) следует, что h(x) (mod p) де-
делит f(x) (mod p) в Z/pZ[x]. Если мы разложим f(x) на неприводимые
множители в Z[x] (они также будут примитивными в силу примитивно-
примитивности f(x)), то один из них, взятый по модулю р, делится на h(x) (mod p).
В силу свойства Г) такой неприводимый делитель f(x) будет единстве-
единственен; его и обозначим через ho(x).
Теперь докажем эквивалентность условий 1)—3). Очевидно, что
из третьего условия следует первое, и что из второго условия также
следует первое.
Покажем, что из первого условия следует второе.
Пусть h(x) (mod p) \ g(x) (mod p). Тогда в силу свойства Г)
h(x) (mod р)\('-^Л (mod p).
220 Гл. 8. Факторизация многочленов над полем рациональных чисел
Поскольку Ъ/рЪ является полем и h{x) (mod p) неприводим,
h{x) (mod р) и (-^т-т) (mod p) взаимно просты в Ъ/рЩх]. Следо-
Следовательно, найдутся многочлены \{х), ц{х) € Щх] такие, что
Х(х) (mod p)h{x) (mod p) + [i{x) (mod
или, эквивалентно,
f(x)
\{x)h{x) + li{x)^ = 1 - pv(x)
для некоторого v(x)eZ[x]. Умножая это равенство на A +pv(x) + ...
... + pk~lv{x)k~l)g{x), получим, что
ЫхЩх) + и W/W = A - pkAx)k)g{x),
где \\{х), \л\(х) € Щх]. Отсюда
\[{х) (modpk)h{x) {modрк)+щ{х) {modpk)f{x) {modpk)=g{x) (modp*),
и в силу Б) получаем, что h{x) (mod pk)\g(x) (mod pk).
Теперь докажем, что из первого условия следует третье. Из свой-
свойства Г) вытекает, что h{x) (mod /?)]А^г (mod p). Поэтому ho{x)\^r
в Щх]. Поскольку h(j{x) неприводим, ho(x) | g(x). D
В следующих параграфах мы подходящим образом выберем р, k
и h{x) так, чтобы выполнялись свойства А)—Г). Это приведет нас в ко-
конечном счете к нахождению разложения f{x) на множители в Щх].
§ 8.3. LLL-алгоритм факторизации:
использование решеток
Мы предполагаем, что f{x), p, k и h{x) € Щх] —те же, что и в §8.2,
и выполняются свойства А)—Г). Обозначим l = degh{x). Тогда 1^п
в силе свойств А), Б) и примитивности f{x)\ равенство 1 = п будет
по лемме 8.3 означать, что f{x) неприводим.
Фиксируем натуральный параметр т, т ^ /.
Рассмотрим множество
L = {P(x)€Z[x]\degP^m,h(x) (mod рк) \ Р{х) (modp*)},
и отображение
Фо: L -+ Zm+1, Фо (j2zix') = <ао- аь • • •, ат).
§8.3. LLL-алгоритм факторизации: использование решеток 221
Очевидно, что L = Фо(Ь) С Zm+1 является аддитивной подгруппой Zm+1.
Мы далее покажем, что L на самом деле является решеткой в Zm+1,
т. е., состоит из всех целочисленных линейных комбинаций некоторых
т + 1 линейно независимых векторов.
Заметим, что \Р(х)\ = \Фо(Р(х))\, где слева стоит рассматриваемая
нами норма многочленов (см. §8.1), а справа — евклидова норма век-
векторов в Rm+1.
Образующими L над Z являются следующие векторы:
(О, ...,0, рк, 0, ...,0) = Ф0(рк- х1), 1 = 0, 1, ...,/- 1, (8.4)
-1), i = l,...,m. (8.5)
Действительно, если Р(х) € L, то Р(х) (mod pk) = h(x) (mod pk) ¦ Q(x)
(mod pk) для некоторого Q(x)€Z[x]. Отсюда P(x) = h(x)Q(x) +pk ¦ T(x)
при некотором Т(х) € Щх\, и можно считать, что deg7(x) < degft(x) = /,
так как h(x) унитарен. Но тогда, если Q(x) ф 0, то degQ(x) = degP(x) —
— degft(x) < m — l. Кроме того, все многочлены указанного вида
Р(х) = h(x)Q(x) + ркТ(х) е Щх\, имеющие степень не выше m, coj
держатся в L. Теперь очевидно, что векторы (8.4) и (8.5) образуют L.
Их линейная независимость над Z и над Q также очевидна: матрица,
строки которой образуют векторы (8.4) и (8.5), является треугольной,
и на ее диагонали стоят числа рк (/ раз) и единицы (ш — /+ 1 раз).
Поэтому L является решеткой, и ее определитель (см. §7.1) равен
d{L)=pkl. (8.6)
Лемма 8.4. Пусть многочлен ho(x) — из утверждения лем-
леммы 8.3. Пусть b(x) &L, причем выполнено неравенство
pkl>\f{x)\m-\b{x)\n.
Тогда ho(x) делит Ь(х) в Щх\.
Доказательство. Пусть Ь(х) Ф 0 (иначе утверждение тривиально).
Пусть g(x) = НОД(/(х), Ь(х)) — наибольший общий делитель в Щх\.
По лемме 8.3 достаточно доказать, что h(x) (mod p)\g{x) (mod p). Если
мы предположим, что h(x) (mod p) \g(x) (mod p), то в силу свойства В)
из §8.2 будет выполнено равенство
+ Mx)g{x) = 1 - рМх) (8.7)
при некоторых Х3(х), [1з(х), v3(x) eZ[x]. Обозначим mi=degb(x),
222 Гл. 8. Факторизация многочленов над полем рациональных чисел
ГП2 = degg(x). Тогда т ^ т\ ^ т2 ^ 0. Рассмотрим множество
М = {kf + \ib | X, [i е Z[x], degX < т\ — т, deg[i < п — гщ},
где f=f(x), b = b(x). Степень многочленов из М не превосходит
п + т,[ — т.2 — 1.
Докажем, что если Xf + [ibGM и deg(Xf + [ib) < тч, то X = [i = 0.
Действительно, так как g(x) =g\\f + \ib, degg = rri2, то
Х- = —[i-. Но НОД(-, -) = 1; поэтому - [а в Z[x]. Так как deg[i <
о о ^ о о ' о
< я — Ш2 = deg/ — degg, то у. = 0; тогда и X = 0.
Рассмотрим отображение
Ф: М ^,
т\—т2 — 1 ч
/^ а,х' j = {ат2,
1=0 ^
По доказанному выше Ф является вложением и гомоморфизмом адди-
аддитивных групп. Также по доказанному векторы
Ф (*7М) > г = 0, 1, ..., m 1 - ш2 - 1, (8.8)
Ф(х/6(х)), / = 0, 1, ..., п - т2 - 1, (8.9)
являются линейно независимыми над Z и порождают Ф(М). Значит,
Ф(М) является решеткой в jJnJr"lx~22. По неравенству Адамара и усло-
условию леммы определитель ё(Ф(М)) решетки Ф(М) удовлетворяет нера-
неравенству
ё(Ф(М)) < \f(x)\mi-m"\b(x)\n-m" < \f\m\b\n < phl.
Покажем теперь, что выполняется и обратное неравенство; полу-
полученное противоречие будет доказывать утверждение нашей леммы.
Докажем включение множеств
{\(х) € М | degv(x) < m2 + /} С pk ¦ Z[x]. (8.10)
Пусть v(x) e M, degv(x) < гщ + /. Тогда -j-t- € Z[x]. Умножим равен-
равенство (8.7) на ~y~{ и на 1 + рчз{х) + ... + pk~lv^~l{x). Получим, что
ЩхЩх) + МФ(х) ~ ^ € pfcZ[x]. (8.11)
Поскольку v(x) € УИ, 6(х) е L, то h(x) (mod р*) делит v(x) (mod
Тогда из (8.11) следует, что
h(x) (mod рк) | ^| (mod pfc).
§8.3. LLL-алгоритм факторизации: использование решеток 223
Но deg -j-!- < гщ + I — гщ = I = degft(x) = deg{h{x) (mod pk)). Значит,
^/Z[x], откуда следует (8.10).
Хорошо известно, что в любой решетке, содержащейся в Ъы, мож-
можно выбрать треугольный базис (см. [ , гл. 1]). Выберем такой базис
в Ф(уИ) С Z"+m'~2m2. Обозначим его элементы через bj = (bn, •••, Ьц,
0, ..., 0), где Ьц €Z,bu^0,i=\,...,n + гщ - 2га2. При этом йЩМ)) =
П-\-ТП\ —2Ш2
= YI \bu\- Прообразы Ф~'F() векторов 6, являются многочле-
(=1
нами из М степени i + тъ — I, i = 1, ..., п + гщ — Ъп^. Из форму-
формулы (8.10) следует тогда, что Ьц = О (mod pk) для I = 1, ...,/. Поэтому
Лемма 8.5. Пусть ho(x) — неприводимый делитель f(x) такой,
что h(x) (mod p)\ho(x) (mod р). Пусть Ь\, ..., Ьт+\ — приведенный
базис решетки L = Фо(^), и пусть выполнено неравенство
ры.
Степень многочлена ho(x) не превосходит т тогда и только то-
тогда, когда
(8.13)
Доказательство. Из (8.13) следует, что |6i|"|/|m <pkl, т.е. выпол-
выполнены условия леммы 8.4 для многочлена Ь(х) = Фо(б1) € L. По опреде-
определению L выполнено неравенство degb(x)^m. Из леммы 8.4 следует,
что ho(x) | b(x), поэтому degho(x) < га.
Пусть degho(x) ^ т. Тогда ho(x) € L. Поскольку ho(x) делит f(x),
выполнено неравенство
|AoWI< VnTTe"|/W| (8.14)
(доказательство этого неравенства см. в работе [ ]; оно оценива-
оценивает величину коэффициентов многочлена-делителя через коэффициенты
делимого). Применим теорему 7.8 к вектору \ = Фо(йоМ) € ^ = Фо(^)-
Поскольку ^0и1еRm+1, то
Отсюда
1&1П/МГ <2т"/2(я+ I)"/2
224 Гл. 8. Факторизация многочленов над полем рациональных чисел
Из (8.12) тогда получим, что
откуда следует (8.13). ?
Лемма 8.6. В обозначениях и условиях предыдущей леммы
предположим дополнительно, что
"} (8.15)
Тогда degfto(x) = m+ \ — t и
(Фо(&')Фо^) (8.16)
где т — наибольшее целое неотрицательное число, для которо-
которого рТ делит все коэффициенты НОД(Ф(^(б1), ..., Ф^'F/)) eZ[x].
Доказательство. Рассмотрим множество / = \ j | 1 < /' < га + 1,
ы ^
|6у|< (^— )}т^0- По лемме 8.4 для /€/ /го(х) | Ф^^бу). Пусть
/г1(х) = НОД/е/(Ф^1F/)); тогда ho(x) \ h\{x). Докажем, что/={1, ..., /}
и что ho(x) = ±hi(x)/pT, где т из (8.16).
Поскольку с^Ф^б/Хт лля ]=\,---,т—\, и многочлены
Ф^~'(&/¦) линейно независимы над Z, то
*). (8.17)
Далее, |/го(х) -х/| = \ho{x)\ < V«+ len\f(x)\ в силу (8.14), и для г = 0, 1,...
..., т — degho(x) многочлены ho(x) • х' содержатся в L и линейно
независимы. Тогда по теореме 7.10 при /'= 1, 2, ..., т+ 1 —deg
выполнены неравенства
= 2т/2|Ф0(/г0(л:))| = 2m/2\ho{x)\
Отсюда, аналогично доказательству предыдущей леммы, получим
\bj\n\f{x)\m<pkl (8.18)
для/'= 1, ..., т+ 1 -deg/го(х). Поэтому 1, 2, ..., m+ I -deg/го(х) е/.
Следовательно, m + 1 — degfto(x) < |/| < га + 1 — degfti(x); значит,
< degfto(x). Поскольку ho(x)\hi(x) в Щх\, то
hi(x) = dho(x), где deZ, d^O. (8.19)
§8.4. LLL-алгоритм факторизации: подъем разложения 225
Мы доказали, что |/| = т+\ — degfto(*), / = {1, ..., га+ 1 — degfto(*)},
и что / = |/|, т.е. degftoW = m+ \ —t.
Теперь докажем, что h[(x) в (8.19) является почти примитивным,
т. е. наибольший общий делитель его коэффициентов может быть равен
лишь некоторой степени числа р; из этого будет следовать (8.16). Пред-
Предположим противное, т. е. что найдется простое число q, q ф р, такое, что
h[(x)/q € Щх]. По определению h[(x) получим, что вектор -Ь[ лежит
в L, так как 1 €/. Пусть b\ = (b\o, .^., &im)eZm+1. Тогда bu = qb'u,
где b'u € Z, I = 0, ..., т. Так как b\ € L, то
h{x) (mod pk) q[y2 b'uxi (mod Pk)) ¦
Поскольку q^p, то отсюда следует, что
h(x) (mod p )
V^ ui J
b'nxl (mod
4(=0
т. e. (b'l(j, ..., b\m) € L. Но это невозможно, так как &i является элемен-
элементом базиса решетки L. П
§ 8.4. LLL-алгоритм факторизации:
подъем разложения
В этом параграфе мы покажем, как соотношение
м0{x)v0(х) = w(x) (mod рт),
где р — простое число, т е N, щ(х), vo(x), то(х)€Щх], может быть
преобразовано в соотношение
U2(x)v2(x) = w(x) (mod pmv)
для некоторых эффективно вычислимых многочленов и,2(х), V2(x) € Щх]
и некоторого т\ > т.
В этом параграфе штрих не является знаком производной, а служит
для обозначения какого-либо другого многочлена.
Для начала рассмотрим произвольное поле К. Пусть g(x), h(x) €
€ Щх], degg(x) ^ degft(x) ^ 1, d{x) = HOJ\{g{x), h{x)).
Алгоритм 1.
На входе алгоритма заданы и(х), v(x) e Щх]. На выходе получается
представление u(x)g(x) + v(x)h(x) = d(x).
15 О. Н. Василенко
226 Гл. 8. Факторизация многочленов над полем рациональных чисел
1 шаг. Присвоить (mi, «2, «з) := A, 0, g(x)), (vi, V2, Уз) := @, 1, h(x)).
2 шаг. Если и3 = 0, то выдать значение и(х) = и\, v(x) = щ, d(x) = щ
и закончить работу.
3 шаг. Разделить с остатком:
u3 = qv3 + r, degr < degU3.
4 шаг. Присвоить (t[, t^, ^з):=("ь ,"з) —<7(wi, ^2, ^з), ("ь, Чз)'-=
:= (wi, W2, из), (fi, иг, Уз) := (^ь h, ^з) и вернуться на 2 шаг.
Конец алгоритма.
Легко видеть, что найденные многочлены и(х), v(x), d(x) дей-
действительно удовлетворяют равенству u(x)g(x) + v(x)h(x) = d(x) =
= HOJ\(g(x), h(x)). Это проверяется в точности так же, как в обычном
алгоритме Евклида для целых чисел (см. Приложение). Можно пока-
показать (см. [ , §4.6.1, упр. 3]), что degu(x) < degg(x), deg«(x) <degft(x).
Теперь рассмотрим поле IK = Z/pZ.
Алгоритм 2.
На входе задано простое число р, j € N, многочлены а(х), Ь(х), с(х),
gj(x), hj(x) €Z/pZ[x], такие, что старший коэффициент hj(x) обратим
в Z///Z и a(x)gj(x) + b(x)hj(x) = \ в Z/piZ[x\. На выходе получаем
многочлены а'(х), Ь'(х) ? Z/p'Z такие, что a'(x)gj(x) + b'(x)hj(x) = с(х)
в Z/piZ[x], и при этом dega'(x) < degfty(x).
1 шаг. Ввиду обратимости старшего коэффициента hj(x) можно
произвести деление с остатком:
а(х)с(х) = hj(x) ¦ q(x) + r(x), degr(x) < degfty(x).
2 шаг. Присвоить
a'(x) := r(x), b'(x) := b(x)c(x) + gj{x)q{x).
Конец алгоритма.
Корректность работы алгоритма следует из равенств
gj(x)a'(x) + hj(x)b'(x) =
= gj(x)(a(x)c(x) - hj{x)q{x)) + hj{x){b{x)c{x) + gj{x)q{x)) =
= c(x)(gj(x)a(x) + hj{x)b{x)) = c{x).
Лемма 8.7. Пусть р — простое число, /€N, i(x)eZ/p2'Z[i].
Пусть gj(x), hj(x) €Z/p'Z[x], t(x) =gj(x)hj(x) (mod p'), старший
коэффициент hj(x) обратим в Z/p>Z[x] и существуют много-
многочлены aj(x), bj(x) &Z/p'Z[x] такие, что aj(x)gj(x) + bj(x)hj(x) = I
§8.4. LLL-алгоритм факторизации: подъем разложения 227
в Z/p'Z[x]. Тогда можно определить многочлены a2j(x), Ьщ{х),
g2j{x), h2j(x)€l1/p2i'Il[x] такие, что
t(x)=g2j(x)h2j(x) {тоАр2'),
Щ{x)g2j(x) + b2j(x)h2j(х) = \ в Z/p2'Z[x],
g2j(x) = gj (mod pi), h2j(x) = hj(x) (mod p1),
degh2j(x) = deg hj(x).
Доказательство. Определим многочлен Cj(x) € Z/p'Z[x] при по-
помощи равенства
С помощью алгоритма 2 вычислим а'Ах), Ь'Ах) такие, что
a'j(x)gj(x) + b'j(x)hj(x) = Cj{x) в
Положим g2j(x) = gj(x) + p'b'jix), h2j(x) = hj(x) + р'а^х), g2j(x), h2j(x) e
€ Z/p2iZ[x]. Тогда очевидно, что degft2/(*) = deghj(x) и что g2j(x)=gj(x)
(mod pi), h2j(x) = hj(x) (mod pi). Далее,
g2j(x)h2j(x) = &(хЩ(х) + piia'jWgjix) + Ц(хЩ(х)) (mod p2') =
= t{x)- picj{x) + picj{x) (mod p2') = t{x) (mod p2').
Определим многочлен c\j(x) € Ъ/р'Щх] равенством
g2j{x)aj{x) + h2j(x)bj(x) = 1 + picij{x) в Z/рЩх].
С помощью алгоритма 2 найдем а"(х), Ь"(х) такие, что в Z///Z[x] вы-
выполнено равенство
Положим
a2j(x) = aj(x) - pia'/(x) e
b2j(x) = bj(x) - pib'l(x) e Z/p2iZ[x].
Тогда
g2j{x)a2j{x) + h2j{x)b2j{x) = g2j(x)aj(x) + h2j{x)bj{x) - р!си{х) = 1
в Z/p2/Z[x]. Лемма доказана. ?
Замечание 8.8. В лемме описан квадратичный подъем, т. е. переход
от соотношений по модулю р' к соотношениям по модулю р2'. Можно
15*
228 Гл. 8. Факторизация многочленов над полем рациональных чисел
описать также линейный подъем, т. е. переход от соотношений по мо-
модулю pi к соотношениям по модулю p'+l (см. [ , гл. 6; , гл. 3]).
Однако если мы хотим получить из соотношений по модулю р соотно-
соотношения по модулю рк, где k достаточно велико, то лучше использовать
квадратичный подъем, так как он быстрее приведет нас к требуемому
результату.
§ 8.5. LLL-алгоритм факторизации:
полное описание
Теперь мы можем детально описать LLL-алгоритм факторизации
многочленов в кольце Ъ\х\.
Алгоритм (LLL-факторизация).
На входе алгоритма задан примитивный многочлен fo(x) &Щх],
deg/o = «о > 1- На выходе получается разложение fo(x) на неприводи-
неприводимые множители в Щх].
1 шаг. Вычисляем g(x) = НОД(/о(х), f'0(x)) € Щх], где f'0(x) —про-
—производная. Полагаем f(x) = . Заметим, что, если
h(xr...fk(xr (8.20)
— разложение fo(x) на неприводимые множители в Щх], то оно же
есть разложение fo(x) на неприводимые множители в Q[x] (см. лемму
8.2). Поэтому g(x) = /i(x)C(|~1 ...fk(x)at-l~l есть примитивный много-
многочлен, и его можно найти с помощью алгоритма Евклида в Q[x]. Тогда
f(x) = f[(x)... fk(x) — многочлен, не имеющий кратных неприводимых
множителей.
Обозначим п = deg/(x). Далее мы считаем, что п ^ 2 (f(x) неприво-
неприводим при п = 1 и /о(х) = f{x)a, где а = deg/o(x)).
2 шаг. Вычисляем результант Res(/, /') € Z; Res(/, f) ф 0 (так как /
и /' взаимно просты). Определение и свойства результанта см. в [ ,
гл. 5].
3 шаг. Находим наименьшее простое число р, такое, что /?{Res(/, /')¦
Тогда р не делит старший коэффициент f(x), и f(x) (mod p) &Z/pZ[x]
не имеет кратных неприводимых делителей. Можно доказать (см. [ ]),
что р удовлетворяет неравенству
поэтому мы быстро найдем его, перебирая все простые числа подряд.
§8.5. LLL-алгоритм факторизации: полное описание 229
4 шаг. Раскладываем f(x) (mod р) в Z/pZ[x] на неприводимые уни-
унитарные множители с помощью алгоритма Берлекзмпа. Пусть 5 — спи-
список этих множителей. Заводим список 5i неприводимых делителей f(x)
в Z[x], Si :=0. Полагаем F(x) = f(x),N = degf(x). Если |5| = 1, то f(x)
неприводим в Щх\ (так как неприводим в Ъ/рЪ\х\).
5 шаг. Берем какой-либо многочлен h\(x)^S\ пусть degfti(x) = 1\
(мы считаем, что |5|^2). Пусть F(x) = h\(x)g\(x) (mod p). Посколь-
Поскольку h\(x) и gi(x) взаимно просты в Z/pZ[x], с помощью алгоритма 1
из §8.4 находим представление u(x)hi(x) + v(x)gi(x) = 1 в Z/pZ[x],
где degu(x) < deggi(x), degu(x) < deghi(x). Находим минимальное на-
натуральное число k такое, что
6 шаг. С помощью метода доказательства леммы 8.7 из §8.4
(применяемого последовательно несколько раз), находим многочлен
hi (х) € Z/pkZ[x], такой, что
h[(x) (mod pk) | F(x) (mod pk),
= degfti(x), старший коэффициент h\(x) обратим по моду-
модулю pk. Если в качестве коэффициентов h(x)€Z/pkZ[x] рассматри-
рассматривать наименьшие неотрицательные вычеты элементов Z/pkZ, то можно
считать, что h(x) GZ[x]. Тогда для многочлена h\(x) выполнены свой-
свойства Б), В) и Г) из §8.2. Домножив hi(x) &Z/pkZ[x] на некоторый
элемент а € (Z/pkZ)*, а = 1 (mod p), можно обеспечить и условие А).
7 шаг. Перебирая последовательно значения
л'-П ,, ,
b\>N-l>
будем для них выполнять шаг 8, переходя к шагу 9, как только найдем
ho(x)€Z[x], ho(x) \F(x). Если делитель не будет найден для всех т,
то F(x) неприводим в Z[x] (это будет следовать из леммы 8.5).
8 шаг. Для данного т рассматриваем множества LCZ[x],
L = Фо(^) С Zm+1, определенные в §8.3. По базису
{Фо(рV) | 0 < I < / - 1} U {Ф0(/я (х)х1) | 0 < I < т - 1}
решетки L находим приведенный базис &i, ..., bm+i- Если выполняется
неравенство
230 Гл. 8. Факторизация многочленов над полем рациональных чисел
то выполнены условия леммы 8.6. Тогда положим
Н0Д(Ф°"'(>1) Ф°"'F())
,
где /их — из той же леммы. Мы нашли многочлен Iiq(x) &Щх], яв-
являющийся неприводимым делителем F(x). Заносим Iiq(x) в список 5i
и идем на 9 шаг. Если же (8.21) не выполнено, то переходим к следу-
следующему значению т.
9 шаг. Полагаем N:=deg(F(x)/ho(x)), F(x) = F(x)/ho(x) и из мно-
множества 5 удаляем делители многочлена ho(x) (mod p) (которые мы на-
находим путем перебора по множеству 5). Если N > 1 и |5| > 1, то возвра-
возвращаемся на 5 шаг. Если N = 0 или N= 1 или |5| = 1, то многочлен F(x)
неприводим (или F(x) = 1). Тогда мы добавляем F(x) в список 5i (если
/V > 0) и переходим на 10 шаг.
10 шаг. Теперь список 5i состоит из многочленов /i(s), ..., fk(x)
(см. формулу (8.20)). Пробными делениями находим показатели
oti, ..., аи и выдаем разложение /о(х) = /i(x)a' ... fk(x)at.
Конец алгоритма.
Корректность алгоритма легко следует из доказанных в §8.2—8.4
утверждений.
Теорема 8.9 (см. [ ]). Алгоритм раскладывает fo(x) на непри-
неприводимые множители за О(п6 + n5\og\f\) арифметических опе-
операций.
Замечание 8.10. В книге [ ] приведено развернутое описание
LLL-алгоритма факторизации многочленов, а также блок-схемы вспо-
вспомогательных и основного алгоритмов.
§ 8.6. Практичный алгоритм факторизации
В книге [ , §3.5.5] отмечено, что хотя описанный в §8.5 алгоритм
имеет полиномиальную сложность от длины входа, все же на практике
он работает довольно медленно. В главе 3 этой книги приведен алго-
алгоритм факторизации, который, хотя и имеет экспоненциальную оценку
сложности, на практике работает гораздо быстрее LLL-алгоритма. Мы
вкратце опишем здесь его схему.
Алгоритм факторизации в Щх\.
На входе примитивный многочлен fo(x) € Щх\, который мы хотим
разложить на неприводимые множители.
§8.6. Практичный алгоритм факторизации 231
1 шаг. Как и в LLL-алгоритме из §8.5, мы сводим задачу фак-
факторизации fo(x) к задаче факторизации примитивного многочлена
f(x) € Z[x], не имеющего кратных неприводимых делителей.
2 шаг. Находим наименьшее простое число р, для которого
НОД(/(х) (mod p),f'(x) (mod p))= 1 в Z/pZ[x]. С помощью какого-либо
из алгоритмов, описанных в гл. 6, находим разложение f(x) на непри-
неприводимые множители в Ъ/рЩх\ (это разложение будет бесквадратным).
3 шаг. Если h(x) € Z[x], h(x) \ f(x), то можно оценить максимум мо-
модулей коэффициентов h(x) некоторой величиной В, зависящей от f(x)
(см. [ , теорема 3.5.1] или формулу (8.14) из §8.3, следующую из ра-
работы [ ]). Находим В и затем находим наименьшее е € N, такое, что
pe>2l(f)B, где /(/) обозначает старший коэффициент f(x) (/(/)eN).
Положим щ = deg/(x). Заводим список 5i неприводимых делителей
/(*), 5i := 0.
4 шаг. Используя результаты § 8.4, находим разложение
= l(f)gi(x)...gr(x)(modpe)
в кольце Z/peZ[x].
Присваиваем d := 1, 5 := {g\(х), ..., gr(x)}.
5 шаг. На этом шаге мы рассматриваем всевозможные комбинации
G(x) = git(x)...gh(x) (mod pe).
Мы вычисляем для каждой из них однозначно определенный многочлен
G(x) € Z[x] такой, что:
1) коэффициенты G(x) принадлежат полуинтервалу — -ре; -кРе\,
2) G{x) = l{f)G{x) (mod ре), если degG(x) < ^ deg/(x), и G(x) =
1
= f(x)/G(x) (mod ре), если degG(x) > ^ deg/(x).
Если G(x) делит l(f)f(x), то мы выносим наибольший общий
делитель коэффициентов G(x) и получаем неприводимый прими-
примитивный многочлен Gi(x), делящий f(x) в Z[x]. Мы заносим его
в список 5i неприводимых делителей f(x), удаляем соответствующие
g,,(x), ..., gij(x) из списка 5 и заменяем f(x) на f(x)/G\(x).
6 шаг. Мы увеличиваем d на 1, т. е. d := d + 1. Если d ^ по/2, то воз-
возвращаемся на 5 шаг. Если же d > щ/2, то оставшийся после выпол-
выполнения 5 шага многочлен f(x) будет неприводимым, и мы добавляем его
в список 5i (если он не равен константе).
Конец алгоритма.
Замечание 8.11. Дальнейшие детали см. в [ , §3.5.4]. Аналогич-
Аналогичные методы факторизации описаны в [ , гл. 6] и [ , §4.6.2].
232 Гл. 8. Факторизация многочленов над полем рациональных чисел
§ 8.7. Факторизация многочленов с использованием
приближенных вычислений
В данном параграфе мы опишем два алгоритма из работы [ ].
Один из них находит минимальный многочлен алгебраического чис-
числа, а второй раскладывает на неприводимые множители многочлены
из Q[x] и Щх\. В этих алгоритмах также используются LLL-приведен-
ные базисы решеток в сочетании с приближенным вычислением корней
многочленов.
Напомним, что число а € С называется алгебраическим, если
оно является корнем некоторого многочлена h(x) из Q[x], не равного
тождественно нулю. Можно считать, что h(x) € Щх], h(x) неприво-
неприводим и примитивен. В этом случае h(x) называется минимальным
многочленом а, его степень degh(x) называется степенью dega
алгебраического числа, корни h(x) называются сопряженными с а
алгебраическими числами, максимум модулей коэффициентов h(x)
называется высотой алгебраического числа а.
Для многочленов g(x) = J2 gi*1 € QM мы будем обозначать
(=0
\g{x)\00= max \gt.
1=0 m
Норма многочлена \g{x)\ та же, что и в §8.1.
В этом параграфе нам понадобятся решетки неполного ранга, т. е.
множества к = ЪЬ\ + ... +Z6fc CR", где k <я и векторы Ь\, ..., &fc ли-
линейно независимы. В таких решетках приведенные базисы определяют-
определяются так же, как и в случае k = n, и существует полиномиальный алгоритм
их построения, см. [ ]. При этом выполняется неравенство
V\\ <2(*~1)/2|t«| (8.22)
для всех w € Л, w ф 0 (см. [ ]); здесь vi — первый вектор из приве-
приведенного базиса решетки Л.
Пусть а — алгебраическое число, которое известно нам лишь при-
приближенно; d и Н — известные оценки сверху для степени и высоты а.
Тогда достаточно хорошее приближение а к числу а позволит нам найти
минимальный многочлен h(x) для а.
Если а фиксировано, то можно найти приближения а,- к сте-
степеням а'. Пусть они также фиксированы. Тогда для многочленов
g(x) =g = Yjgix' e Q*] через ga мы будем обозначать сумму
g* = Ym- (8.23)
§8.7. Факторизация многочленов с использованием приближенных вычислений 233
Зафиксируем п, 1 < п < d, и s € N. Рассмотрим решетку Ls в Шп+3,
порожденную строками матрицы
/1 ... О 2s Recto 2sIma0\
(8.24)
\0 ... 1 2sRean 2sIman/
размера (я+1) x (я+3). Эти строки мы будем обозначать 61, ..., bn+i €
п
€ М.п+3. Для многочлена g = g{x) = Y^ gi*' € Щ_х\ обозначим через
(=0
Ls. (8.25)
(=0
Легко видеть, что
1=0 7 x 1=0
Очевидно, что формула (8.25) задает взаимно однозначное соответствие
между многочленами из Z[x] степени не выше п и векторами решет-
решетки Ls.
Идея метода нахождения минимального многочлена h(x) для а за-
заключается в следующем. Пусть п = degh(x) = dega. Тогда для всех
многочленов g(x)€Z[x], deg g(x)^n, таких, что g(a)^0, будет вы-
выполнено неравенство
|gf >2"|й|2, (8.26)
если мы подходящим образом выберем значение s и если величины
а1 — а,-| достаточно малы. Найдем приведенный базис Ls. Пусть v —
первый его вектор, и v(x) — соответствующий ему (по формуле (8.25)
многочлен. Поскольку h € Ls, то в силу (8.22)
|0|2<2"|й|2.
Тогда из (8.26) следует, что w(a) = 0, откуда h(x) \ v(x). Посколь-
Поскольку degu(x)< n = degh(x), то v(x) = h(x) ¦ с, где ceZ. Так как v —
из базиса решетки Ls и h?Ls, то с = ±1, v(x) = ±h(x) — искомый
минимальный многочлен.
Теперь приступим к аккуратному описанию и обоснованию метода.
Лемма 8.12. Пусть а, Щ,..., а„ еС, ао = 1, |а' — а,-|<е, i= 1,..., п.
Пусть f(x) € С[х], degf(x) < п. Тогда
234 Гл. 8. Факторизация многочленов над полем рациональных чисел
Доказательство. В самом деле
п
1/Н-/сг|= ^2щ{а'-а
i=i
Лемма доказана. П
Лемма 8.13. Пусть h{x), g(x) € Щх\ \{0}, degft(x) = n, degg(x) =
= т. Пусть а € С, |а|< 1, h(a) = 0. Если h(x) неприводим и g(a) ф 0,
то выполнено неравенство
-\h{x)\-m\g{x]
i-n+1
Доказательство. Если m = 0, то неравенство очевидно. Пусть
т ^ 1. Рассмотрим матрицу УИ размера (я + т) х (п + т), у которой г'-й
столбец составляют коэффициенты многочлена x'~lh(x) при 1 ^ г ^ т,
и коэффициенты многочлена x'~m~lg(x) при m + 1 < I < п + т. Пусть
R=\detM\ = \Res(h(x), g(x))\. Тогда по свойству результанта ЯфО,
так как h(x) неприводим и g(a) ф 0. При г = 2, ..., п + т прибавим г'-ю
строку матрицы М, умноженную на х'~1, к первой строке и затем
раскроем определитель М по первой строке. Получим равенство
R = \h{x){a0 + сцх + ... + ат_{хт-{) + g{x){c0 + ... сп_{хп-{)\,
где a,-, Cj — определители миноров М. При х = а получим R =
= \g(a.)\\co +... + cn-ian~l\. В силу неравенства Адамара для опре-
определителей матриц
1
Так как |а|< 1, то \со +¦¦¦ +cn-ia"~l\^n\h{x)\m\g{x)\n~l. Теперь
из неравенства R ^ 1 следует утверждение леммы. ?
Лемма 8.14. Пусть seN, а — алгебраическое число, |а|< 1,
h(x) — минимальный многочлен a, degh(x) = d ^ 1, высота h(x)
не превосходит Н. Пусть Щ, ..., Щ € С, ао = 1, |а,- — а'К „j при
1 < I < d. Пусть g(x)?Z[x], degg(x) < d, g(a)^0. Предположим,
что выполнено неравенство
2s > 2d2/2(d + \)<&+№ны. (8.27)
Тогда (в обозначениях (8.25))
\h\<{d+\)H, \g\>2d/2(d+\)H.
Доказательство. Очевидно, что для любого многочлена f(x)€C[x],
degf(x) < d, выполнено неравенство \f(x)\2 < (d + l)|/(x)|;^. Поскольку
§8.7. Факторизация многочленов с использованием приближенных вычислений 235
\h\2 = \h{x)\2 + 22s|ft«|2, и по лемме 8.12 |/г«| = \h(a) - /г«| < 2~sdH, то
\h\2 < |/г(х)|2 + ^2Я2 < (d + \)Н2 + d2H2 <{d+ \JH2.
Теперь докажем неравенство для \g\. Если \g(x)\>2df2(d+\)H,
то из равенства |g|2 = |g(x)|2 + 22s|ga|2 следует требуемое неравенство.
Допустим, что \g{x)\ ^2d/2(d+ 1)Я. По лемме 8.13 тогда
,,11 11 1 1
№)| " d ' \h()\d ' \()\dl " d ' >
d ' \h(x)\d ' \g(x)\d~l " d ' ((fl(+l)/^)^/2 ' Bd/2(d+l)H)d-1
>2-d(d-l)/2,{d+Y)-ldH
Поэтому
\)~~2dH-2d+l
Так как |g(x)U < |g(jc)| < 2d/2(d + 1)Я, то
откуда с учетом (8.27) получим требуемое неравенство \g\ >
>H-2d/2{d+\). D
Теорема 8.15. Пусть s, a, h(x), d, h и числа а,- е 2~sZ[v/—T],
г = 0, ..., d, удовлетворяют условиям леммы 8.14, включая нера-
неравенство (8.27). Пусть п € N, 1<«<L, и пусть LLL-алгоритм
построения приведенного базиса, примененный к векторам
&ь ..., 6„+ь являющимися строками матрицы (8.24), дает приве-
п
денный базис с первым вектором v=Y^ v'fii- Тогда три следующих
условия эквивалентны:
2) а — корень многочлена v(x) = ^vix1;
3) dega<«. «=°
Далее, если dega = я, mo h(x) = ±v(x).
Доказательство. По формуле (8.22) выполняется неравенство
\v\^2"/2\w\ для всех w e Ls =Z6i + ... +Z6n+i, й)^0. Пусть вы-
выполнено первое условие теоремы. Тогда из леммы 8.14 следует, что
и (а) = 0.
236
Гл. 8. Факторизация многочленов над полем рациональных чисел
Очевидно, что из второго условия следует третье. Пусть выпол-
выполнено третье условие. Тогда degh(x) < п, поэтому h—вектор из Ls.
По лемме 8.14 имеем \h\<(d+X)H. Тогда из (8.22) следует, что
\v\ ^ 2"/2(d + \)Н, т. е. из третьего условия следует первое.
Наконец, пусть dega = n. Тогда в силу доказанного и(а)=0. Так
как h(x) неприводим, то из леммы Гаусса (см. §8.1) следует, что h(x)
делит v(x) в Щх\; v(x) = h(x) ¦ /, где / € Z. Отсюда v = h • I. Так как v —
из базиса решетки Ls и h € Ls, то /= ±1. ?
Алгоритм 1 (нахождение минимального многочлена).
На входе алгоритма заданы верхние оценки d и Н для степени и вы-
высоты алгебраического числа а,
приближение а € Q + V— 1
|а| ^ 1, такое, что |a — a| ^2~s/Dd), где s — минимальное натуральное
число, удовлетворяющее неравенству
На выходе — минимальный многочлен для а.
1 шаг. Вычисляем а,- € 2~S(Q + \J — 1Q), i = 0, ..., d, такие, что
од = 1, |a' — a,-1 ^ 2~s~2, 1 ^ [ ^ d. Для этого округляем вещественную
и мнимую части числа а' до s битов после запятой. Заметим, что тогда
а' - а,-
2 s, поскольку
(-1
Это означает, что выполнено условие теоремы 8.15.
2 шаг (цикл). Для п= 1, 2, ..., d выполняем шаги 3 и 4, пока
не найдем минимальный многочлен для а.
3 шаг. Применяя LLL-алгоритм, находим приведенный базис ре-
решетки Ls = Z&o + ... + Z6n, порожденной строками матрицы (8.24).
4 шаг. Если первый вектор v приведенного базиса удовлетворя-
п
ет неравенству \v\ <2d/2(<i+ \)H, то выдаем многочлен v{x) = Yjvix'
П ч «=0
где v=Y^ vibi) в качестве минимального многочлена для а.
1=0 '
Конец алгоритма.
Корректность алгоритма следует из теоремы 8.15.
Замечание 8.16. Неравенство |a| ^ 1 не является серьезным огра-
ограничением. Если |ос| > 1 и a — корень многочлена h(x) то I/a — корень
§8.7. Факторизация многочленов с использованием приближенных вычислений 237
многочлена
¦Hi-
< 1. При этом, если а — приближение
к а, |а — а| < s, где 0 < s < ^, и C —приближение к 1/а, |р — 1/а| < s, то
а| — |а — а|
а|е
-, то | C| < 3s, т.е. C при-
Поскольку I a
ближает I/a с точностью 3s.
Теорема 8.17 (см. [ ]). Пусть a—алгебраическое число, d
и Н — оценки на степень и высоту a, a — приближение к а такое,
, где s— минимальное натуральное число, для ко-
что а — а
Ш
торого выполнено неравенство (8.27). Тогда алгоритм 1 находит
минимальный многочлен для а за O(d5(d + 1о?Я)) арифметических
операций с целыми числами, имеющими величину O(d2(d + \ogH))
битов.
Теперь перейдем к факторизации многочленов. Пусть f(x) € Щх] —
фиксированный примитивный многочлен, deg/(x) = d ^ 2, и мы хотим
разложить f(x) на неприводимые множители в Щх]. Если h(x) ?Щх],
h(x)—делитель f(x), degh(x) = n, то высота h(x) не превосходит
( ¦ ) I/WI + ( ¦ _ ) \ad I при всех / = 1, ..., п - 1, где ad — старший
коэффициент f(x) (см. [ , упр. 4.6.2.20; , теорема 3.5.1]). Отсюда,
считая, что п ^ d/2 (если f(x) приводим), мы можем выбрать оценку Н
сверху для коэффициентов искомого h(x), которая понадобится для
применения алгоритма 1.
Алгоритм 2 (факторизация f(x) в Щх]).
На входе алгоритма заданы f(x), d, H. Алгоритм последовательно
выдает неприводимые делители f(x), пока полностью не разложит f(x)
на множители в Щх].
1 шаг. Если d^ 1, то f(x) неприводим, и алгоритм заканчивает ра-
работу.
2 шаг. Найдем наименьшее s € N такое, что
3 шаг. Вычислим (каким-либо способом) такое приближение
_ 2~s
'Q к некоторому корню а многочлена f(x), что |а — а| ^ —^—,
(если |а| ^ 1, то достаточно выполнения неравенства |а — а| ^ ——
238 Гл. 8. Факторизация многочленов над полем рациональных чисел
4 шаг. Применяя алгоритм 1, находим минимальный многочлен h(x)
для алгебраического числа а.
5 шаг. Пробными делениями находим наибольшее k € N такое,
что h(x)k | f(x), и выдаем h(x) и k. Этот шаг можно не делать, ес-
если многочлен f(x) бесквадратен; бесквадратность можно обеспечить
так же, как в алгоритме из § 8.5.
6 шаг. Заменяем d на d — kdegh(x), f(x) на f(x)/h(x)k и возвраща-
возвращаемся на 1 шаг.
Конец алгоритма.
Корректность алгоритма 2 очевидна. Оценим его сложность. Нам
осталось выбрать метод приближенного вычисления корней многочле-
многочлена из Щх] на 3 шаге алгоритма 2. Существуют различные методы для
решения этой задачи, см. [ ; , гл. 3]. В частности, существуют алго-
алгоритмы, имеющие полиномиальную сложность от d, log|/(x)| и количе-
количества требуемых битов, см. [ ; ]. Использование этих алгоритмов
позволяет указать полиномиальную оценку сложности и для алгорит-
алгоритма 2 (см. [ , теорема 3.7]).
§ 8.8. Заключение
Появление в начале 80-х годов XX века LLL-алгоритма для факто-
факторизации многочленов из Щх] с полиномиальной сложностью от длины
входа вызвало огромный интерес у математиков во всем мире. До сих
пор сложность имеющихся алгоритмов для факторизации целых чисел
гораздо хуже, как мы видели в гл. 2—4. LLL-приведенные базисы ре-
решеток нашли применение во многих задачах математики; часть из них
была описана в гл. 7. Дальнейшее развитие метода работы [ ] было
получено в ряде работ отечественных авторов, см., например, [ ; ].
Кроме описанных в данной главе алгоритмов факторизации много-
многочленов из Щх] и Q[x] имеются алгоритмы факторизации многочленов
с коэффициентами из числовых полей, см., например, [ , гл. 3].
В последние годы появились работы, связанные с применением
LLL-приведенных базисов в алгоритмах решета числового поля для
факторизации и дискретного логарифмирования, см., например, [ ].
В основном это применение относится к оптимальному выбору много-
многочленов, порождающих числовые поля.
Глава 9. Дискретное преобразование
Фурье и его приложения
§9.1. Введение. Дискретное преобразование
Фурье и его свойства
Дискретное преобразование Фурье имеет важные приложения в тео-
теории чисел и алгебре. Оно подробно описано во многих книгах, см., на-
например, [ ; ]. Мы не претендуем здесь на полноту изложения. Будут
описаны лишь некоторые основные свойства и некоторые важные при-
приложения дискретного преобразования Фурье. В частности, будет до-
доказана теорема, необходимая для обоснования алгоритма Полларда—
Штрассена из главы 2; ее доказательство взято из работы [ ].
Введем некоторые обозначения. Пусть / € N, п = 21. Пусть R— ком-
коммутативное кольцо с единицей 1, содержащее 2~1 — элемент, обратный
к 2. Пусть также R содержит элемент ^2« — некоторый фиксированный
корень уравнения уравнения х" + 1 = 0. Положим ?« = Cl«-
Лемма 9.1. Элемент G« порождает в мультипликативной
группе обратимых элементов кольца R циклическую подгруппу
порядка In.
Доказательство. Так как ^|„ = — 1, то мультипликативный порядок
элемента Сг« равен 2t+l =2п. ?
Определение 9.2. Пусть (/о, ..., fn-i) &Rn—произвольный вектор.
Дискретным преобразованием Фурье 1-го типа для этого век-
вектора называют я-мерный вектор (/о, ..., fn-i) ^R", определяемый ра-
равенствами
/=0
Дискретным преобразованием Фурье 2-го типа называют
я-мерный вектор (Д, /з, ..., fen-i) &Rn, определяемый равенствами
3U. 1=1,3,..., 2л-1.
240 Гл. 9. Дискретное преобразование Фурье
Замечание 9.3. Элементы /,- являются значениями многочлена
F(x) = S fjx' € R[x] в точках х = ^1п\ элементы /,- являются значениями
/=0
многочлена F(x) в точках х = Z^2n при нечетных L
В следующей лемме содержатся формулы обращения для преобра-
преобразования Фурье.
Лемма 9.4. Справедливы следующие равенства:
л-1
/=0
/ — нечетно
Доказательство. Пусть k € Z. Тогда C^f = ^2^"*. где г е Z, 2яг —
— й ^ 0. Кроме того, поскольку мультипликативный порядок элемен-
элемента ?„ равен я, то справедливы равенства
я-1
У^я
/=0
я-1
/=0
= n
= 0
при
при
1 = 0
1^0
(mod
(mod
л),
n).
(9.3)
(9.4)
Равенство (9.1) выполняется, поскольку
я —1 я—1 я —1 я —1 я—1
/=0 /=0 fc=0 fc=0 /=0
в силу (9.3) и (9.4).
Справедливость (9.2) следует из
л-1
lr-Ч
M =
/1 k=0
j — нечетно . . . .
=j:j: f^+%r+i)=e f^-n e
k=0 1=0 1=0 k=0
С учетом (9.3) и (9.4) получаем равенство (9.2). ?
§9.2. Вычисление дискретного преобразования Фурье 241
Заметим, что вычисление дискретного преобразования Фурье непо-
непосредственно по формулам (9.1) и (9.2) требует О(п2) операций сложения
и умножения в кольце R. В следующем параграфе мы приведем ме-
метод, который позволяет вычислить дискретное преобразование Фурье
за O(n\ogn) операций. Этот метод называется быстрым преобразо-
преобразованием Фурье.
§ 9.2. Вычисление дискретного
преобразования Фурье
В этом параграфе мы сохраняем обозначения и предположения
из §9.1.
Теорема 9.5. Дискретное преобразование Фурье (/о, ...,fn-\)
может быть вычислено за nt сложений в кольце Runt умножений
в кольце R на степени элемента Z,n.
Дискретное преобразование Фурье (Д, ..., /2«-i) может быть
вычислено за nt сложений в кольце R и nt умножений в кольце R
на степени элемента 'Сзп-
Если задан вектор (/о, ..., fn-i) или (/ь ..., /2«-i), то вектор
(/о, •••, /«-О может быть вычислен за nt сложений в кольце R, nt
умножений в кольце R на степени элемента Сг« " п умножений
на n~l &R.
Доказательство. Обозначим
«-1
F(x) = ^fixi= ]Г />•*'¦+ ]Г ft*''= /=b(*2)+*Fi (Л
/=0 0</<л-1 0</<л-1
/ — четно / — нечетно
где degFo(x), degFi(x) < „ =2'~1. Отсюда
F&) = Fo(^) + C^i (С) , i = 0, • • •, n - 1. (9.5)
Положим ?„/2 = ~Cn. Тогда
Далее рассуждаем по индукции. Вычисление дискретного преобразо-
преобразования Фурье первого типа, т.е. вычисление набора (F(?,®), ..., F(Z,^~1))
по формуле (9.5) можно выполнить за п сложений в кольце R и п
умножений в R на степени ?„, если известны наборы значений
и F[(Z,'n,2), I = 0, ...,- — 1. Если t=\ и я = 2 = 2/ (это основание
16 О. Н. Василенко
242 Гл. 9. Дискретное преобразование Фурье
индукции), то для вычисления (/о,/i) надо найти Fo + ZfeFi, где Fq
и F[ — элементы кольца R, i = О, 1. То есть при я = 2 требуется 2 = nt
умножений в R на степени С« = Сг и 2 = я/ сложений в R.
Теперь предположим, что при всех j < t для вычисления дискретного
преобразования Фурье первого типа от 2'-мерного вектора требуется
2' • /' умножений в R на степени ?2/ = (С«J ' и 2' • /' сложений в R. Тогда
при /'=/ вычисление вектора (/о, ..., fn-\) по формуле (9.5) состоит
в вычислении /(^/2) и ^1 (^«/2) ПРИ * = 0, ..., я — 1, т. е. в вычислении
преобразований Фурье для векторов длины я/2, состоящих из коэф-
коэффициентов Fq(x) и Fi(x), плюс еще я сложений в^ия умножений в R
на степени ?„. Тогда, учитывая индуктивное предположение, вычисление
вектора (/о, ..., /n_i) потребует не более чем я сложений в R, плюс я
умножений в R, плюс 2 • 2(~l(t — 1) сложений в R, плюс 2 • 2(~l(t — 1)
умножений в ^ на степени ?„. То есть требуется я + я(/ — 1) = nt сложе-
сложений в R и я + я(/ — 1) = я/ умножений в ^ на степени ?„. Это доказывает
первое утверждение теоремы.
Второе утверждение теоремы доказывается аналогично, достаточно
лишь заменить Z,n на ^2«-
Третье утверждение теоремы следует из первых двух и леммы 9.4. ?
§ 9.3. Дискретное преобразование Фурье
и умножение многочленов
В этом параграфе мы покажем, как с помощью дискретного преоб-
преобразования Фурье можно быстро умножать многочлены. Мы сохраняем
обозначения и предположения из §9.1.
Лемма 9.6. Одно умножение в кольце R[x]/(x2 + 1) можно вы-
выполнить за я = 2/ умножений в R, 3/я сложений в R, 3/я умно-
умножений в R на степени элемента Сг« и п умножений в R на эле-
элемент я.
Замечание 9.7. Лемма неприменима в случае R = Z и R = Q, по-
поскольку в Z и Q нет элемента Сг«-
п-\ . п-\
Доказательство. Пусть F= J2 fax', G=J2 giX1, F, GgR[x] и явля-
являло i=0
ются представителями каких-либо классов факторкольца ^[х]/(х2 + 1).
я-1
Пусть H=Y, Ых' € R[x], FG = H (mod x" + 1), т. е. Н есть результат
1=0
умножения F на G в факторкольце; его нужно вычислить.
§ 9.3. Дискретное преобразование Фурье и умножение многочленов 243
Преобразование Фурье 2-го типа для векторов (/о, ..., fn-i)
и (go, ¦¦¦, gn-i) дает нам равенства
при нечетных i, I ^ i ^ 2п — 1, так как Х^п +1=0. Если все /,• и gi нам
известны, то все /г,- вычисляются за п умножений в R. По теореме 9.5 все
элементы /,- и gi можно вычислить за 2tn сложений в R и 2tn умножений
в R на степени элемента Сг«- По той же теореме все /г,- можно вычислить,
зная щ, за tn сложений в R, tn умножений в R на степени элемента Сг«
и я умножений в R на элемент я. Отсюда легко следует утверждение
леммы. ?
Следствие 9.8. Пусть Т — коммутативное кольцо с едини-
единицей, 2~1 е Т, ?,4п = ?,2'+2 &Т—корень уравнения х2п+\=0. Если
F(x), G(x)€T[x], degF(x) <п, degG(x) <n, mo произведение мно-
многочленов F(x) ¦ G(x) € Т[х] можно вычислить за 2п умножений
в Т, Qn(t + 1) сложений в Т, Qn(t + 1) умножений в Т на степени
элемента ^4« и 2п умножений в Т на элемент B~')/+1.
Доказательство. Из-за ограничений на степени многочленов F(x)
и G(x) многочлен F(x) ¦ G(x) имеет степень меньше, чем 2п, и поэто-
поэтому равен остатку от деления F(x) ¦ G(x) на 22п + 1. Поэтому результат
умножения F(x) на G(x) в кольце R[x] можно найти за одно умножение
в кольце R[x]/(x2n + 1). Утверждение следствия вытекает из леммы 9.1,
где п заменено на 2п и / заменено на / + 1. ?
Пусть далее Т обозначает коммутативное кольцо с единицей, со-
содержащее элемент 2~1. Говоря об операции сложения в Т, мы будем
подразумевать также и операцию вычитания. Все постоянные в симво-
символах О(-) далее абсолютные. Справедлива следующая фундаментальная
лемма.
Лемма 9.9. Если t^2, mo одно умножение в кольце Т[х]/(х2 + 1)
можно выполнить за 0B' ¦ t) умножений в Т и 0B' ¦ t ¦ log/) сло-
сложений в Т.
Замечание 9.10. Этот результат применим и к кольцу целых чисел
Z, если рассматривать в качестве Т следующее кольцо:
T=\ ^r
raez, /eez>o}, nz.
В компьютере элементы кольца Т представимы точно, например, в ви-
виде пар (m, k).
Прежде чем привести довольно длинное доказательство леммы 9.9,
выведем из нее следующую важную теорему.
16*
244 Гл. 9. Дискретное преобразование Фурье
Теорема 9.11. Произведение двух многочленов из кольца Т[х]
степеней, не превосходящих п (я^З), может быть вычислено
за M(n) = O(n\ogn) умножений в Т и A(n) = O(n\ogn\og\ogn) сло-
сложений в Т.
Доказательство. Пусть / € N такое, что 2'~1 < 2п< 2'. Очевидно,
что / ^ 2, 2п < 2l ^ An. Поэтому умножение двух многочленов степени
не выше п по модулю х2 + 1 есть обычное их умножение. Тогда по лем-
лемме 9.9 мы можем найти их произведение за М(п) = 0B' ¦ t) = О(п ¦ \ogn)
умножений в Т и А(п) = ОB1 ¦ t\ogt) = O(n-\ogn\og\ogn) сложений
вГ.П
Доказательство леммы 9.9. Пусть F = F(x) и G = G(x)— мно-
2'-1
гочлены степеней не выше, чем 21 — 1, Н = Н(х)= ^ Я(х', причем
(=0
Н = FG (mod х2 +1). Мы должны вычислить Но, ..., П<^-\ по ко-
коэффициентам многочленов F и G. Пусть k — натуральный параметр,
1 ^ k < t, который мы выберем ниже. Представим F и G в виде
2'-*-1 2'-*-1
F= -? ЬА^2\ G= Y, ё1(х)х\
i=0 i=0
где П(х), gi(x) e T[x], degfi(x) < 2k - 1, degg«(x) < 2k - 1.
Алгоритм вычисления F ¦ G заключается в следующем.
2'-*-i . 2'-*-1
1 шаг. Умножаем J] fi{x)Yl на J] g»W^' в кольце
(=0 (=0
Т[х, Y]/(Y2 — 1). Результат обозначим через Н= J2 Ы(х)У1.
i=0
2 шаг. Подставим Y = х2 в Я и приведем по модулю х2 + 1 =
= Y2'~" + \. Тогда
1- Е
(mod (x )
(=0
Отсюда на шаге 2 мы найдем Н(х) = ^ Я,х'. Надо только понять,
i=0
как на шаге 2 из набора {/г,(х)} при приведении по модулю х2 + 1
получаются коэффициенты Я,-.
§ 9.3. Дискретное преобразование Фурье и умножение многочленов 245
На 1 шаге мы перемножаем
о/ — ^ I о'— ^ I 9'— ^ I
]Г ШУ1- ]Г ei^)Yi= ]Г Ы(х)Г (mod Y2'~b + I).
1=0 /=0 i=0
Здесь / + j' ^ 2(~k+l — 2 < 2(~k+l — 1. При этом возможны два случая.
1 случай. Если 0 < / + / < 2'~к - 1, то
Yi.Yi = Yl+i (mod Y2'~" + X).
2 случай. Если 2'~к < / + / < 2 • 2'-* - 2, то
где i = l + j-
Поэтому
Ц Ц
'+/¦=« Z+/=i+2'-*
где г = 0, ..., 2/-* — 1. Отсюда следует, что degft,(x) < deg//(x) =
= deggy(x) < 2fc+1 - 2 < 2fc+1 - 1. Поскольку k<t,m deg/г,- < 2/ - 1.
2 шаг выполняется не более чем за 2* сложений в Т, поскольку
2*+' —1 k
если мы уже знаем /г,(х)= Y, hijx'> т0 ПРИ подстановке Y = x2 мы
получим выражение /=°
(mod/'
1=0 /=0
Приведение по модулю х2 + 1 будет происходить с теми слагаемыми,
у которых /' + 12к ^ 2'. Тогда при /' + 12к = г2' + I, где 0 < / < 2', будет
происходить замена x'+l2 на (— \)г -х1, т.е. величину {—\)г-1щ надо
будет прибавить к коэффициенту при х1 (т. е. надо выполнить одно сло-
сложение или вычитание). Таких сложений будет не больше, чем число
слагаемых, т.е. не больше, чем 2l~k ¦ 2k+l =2t+l. Но на самом деле
при 0 < I < 2'~к~1 выполнено неравенство
/ + 2*-г<2*+1- \+2<~1 -2к=2к + 2<~1 -\ ^2< - 1,
поскольку k ^ / — 1. То есть для таких i приведение выполнять не нуж-
нужно. Остаются значения i в интервале 2(~к~1 ^1^2(~к — 1; таких зна-
значений будет не более чем 21~к~1. Следовательно, пар (I, /') для которых
246 Гл. 9. Дискретное преобразование Фурье
на втором шаге придется выполнять приведение, будет не больше, чем
2(~k~l -2k+l = 2l. Мы показали, что 2 шаг выполняется не более чем
за 21 сложений в Т.
Теперь рассмотрим 1 шаг. Умножение мы можем выполнять
не в кольце Т[х, Y]/(Y2'~k - 1), а в кольце R[Y]/(Y2'~k + 1), где R =
= Т[х]/(х2 +' + 1). В самом деле, поскольку deg/,(x) < 2к, degg,(x) < 2к,
то их произведение в кольце Т[х] совпадает с их произведением в коль-
кольце Т[х]/(х2 +' + 1). В кольце R есть элемент ?2*+г = х (mod х2 +' + 1) —
корень уравнения X2 +' + 1 = 0.
Положим k = [t/2] ^ 1. Тогда
k>*-^, k^t<t. (9.6)
Поскольку 2l~k+l < 2к+2, в R есть элемент ^2'-*+' — 9ТО степень эле-
элемента ^2*+2-
Одно умножение на степень элемента ^2'-*+' в кольце R выпол-
выполняется не более чем за 2k+l сложений в Т. В самом деле, поскольку
х = Сг*+2 (mod х2 +1 + 1), то
f с,-е Г, i = 0, ...,2k+l-\}.
Умножение на {J2,+k_, =ZJ2\+2 с учетом равенства <^,k% = — 1 приводит
к перестановке коэффициентов clq, п\, ..., a2t+\_l, и при этом некото-
некоторые из них меняют знак.
Применим лемму 9.6 для оценки сложности одного умножения
в кольце ^[У]/(У2 + 1). Нам нужно выполнить 2l~k умножений в R,
3• (/ — k) ¦ 2l~k сложений в R (что составляет 3 • (/ — k) -21~к ¦ 2k+l
сложений в Т, поскольку элементы кольца R представимы в виде мно-
многочленов из Т[х] степени не выше 2k+l — 1), 3 • (/ — k) ¦ 2l~k умножений
в R на степени элемента ^2'-*+' > 2/~* умножений в R на элемент B~1I~к
(что опять-таки составляет 21~к ¦ 2k+l =2t+l умножений в Т на эле-
элемент B~1У~к). Всего получается 2'~к умножений в R, 6- (/ — k) ¦ 2t+l
сложений в Т и 2t+l умножений в Т на элемент B~lY~k.
Учтем еще 21 сложений в Т на 2 шаге. Положим
[|]1^2. (9.7)
Тогда одно умножение в 7[х]/(х2*+' + 1) выполняется за 2/~fc(/)+1 умно-
умножений в кольце R = T[x]/(x2 + 1) плюс не более, чем 12- t-2l сло-
сложений в Т, плюс 2t+l умножение в Т.
§ 9.3. Дискретное преобразование Фурье и умножение многочленов 247
Если / ^ 3, то k(t) < t. Мы сводим описанным выше способом умно-
умножение в кольце Т[х]/(х2 + 1) к умножению в кольце Т[х]/(х2 + 1)
и далее вниз, пока не попадем в кольцо Т[х]/(х4 + 1), где умножение
выполняем любым способом за 0A) операций сложения и умножения
в Т.
Обозначим через M[Bi) и ^4iB') число умножений в Т и сложе-
сложений в Т, соответственно необходимых для выполнения указанным выше
способом одного умножения в кольце Т[х]/(х2' + 1). Тогда, при /^3
выполнены неравенства
где k{t)
из (9
.7).
yWiB')<2'"
Положим
a(j)=A
-*@+1Л]
iB0/2',
lB*@) +
Bfc(/)) +
/ = 2,
-2й,
12-/-2^
3, ...
(9.8)
(9.9)
(9.10)
Тогда a(t) ^ 2a(k(t)) + 12/. Предположим, что при 2^/</ выполне-
выполнено неравенство а(у) ^ с] log/ при некоторой абсолютной постоянной с.
Тогда выполнены неравенства
a(/) < 2сй(/) logft(/) + 12/ < 2c[^ + 1J log(J + 1J + 12/ < c/log/,
если постоянная с достаточно велика. Итак, А[B() ^2( ¦ c/log/ =
= 0B' ¦ t log /) — это доказывает утверждение 2 леммы 9.9 о количестве
сложений.
Теперь положим
¦¦^Ф-, / = 2,3,... (9.11)
Справедливо неравенство Р(/) <2C(й(/)) + 2. Отсюда
р@ < 2Bр(й(й(/))) + 2) + 2 = 22р(й(й(/))) + 22 + 2,
и т.д. Поскольку kit) < | + 1, то й((й(/)) <^(| + 1) + 1 = ^ + 1 + 1;
&(&(... (й(/)) ...))< -т + 2 для всех /' ^ 1. Поэтому при /' = [log2 /] будет
выполнено неравенство
2' • d + 2 + 22 + ... + 2' < 2' • d + 2'+1 < c2 ¦ t,
где с\, С2 —абсолютные постоянные. Итак, M\(i) = O(t ¦ 2(). Лемма 9.9
полностью доказана. ?
248 Гл. 9. Дискретное преобразование Фурье
§ 9.4. Дискретное преобразование Фурье
и деление многочленов
Мы сохраняем обозначения и предположения из §9.1. Функции
М(п) и А (я) —те же, что в теореме 9.11.
Теорема 9.12. Пусть Т—коммутативное кольцо с едини-
единицей, в котором содержится элемент 2~1. Пусть F(x), G(x) € Т[х],
degF(x) ^n, degG(x)^n, где я ^ 3, и пусть задан элемент коль-
кольца Т, обратный к старшему коэффициенту многочлена G(x).
Тогда, если мы обозначим результат деления с остатком
F{x) = Q{x)G{x) + R{x), где Q(x), R(x)gT[x], degR{x) < degG(x),
mo Q(x) и R(x) можно вычислить за O(n\ogn) умножений в Т
и О (я log я log log я) сложений в Т.
Доказательство. Можно предположить, что n = degF(x), m =
п т
= degG(x) и ш<я. Пусть F(x) = ^2 fix', G{x)=Y gjx'¦ Нам нужно
i=o /=о
найти элементы qo, ..., qn-m, fo, ¦¦¦, fm-i € T такие, что
п n—m m m — \
\ ^ tj. \ ^ /j.jc' . \ ^ p.vj _|_ \ ^ f.yi <Q 1 О\
/__J ' /__J ' /__J о/ /__J
1=0 1=0 /=0 1=0
Заменив х на x~l и умножив на х", преобразуем (9.12) в соотно-
соотношение
п n—m m
Е/^""' = Е яи?~т~1 ¦ Е^""' *mod x"~m+l)- (9ЛЗ)
1=0 1=0 /=0
Обозначим через Т[[х]] кольцо формальных степенных рядов вида
по + а\Х + п2Х2 + ... с коэффициентами из Т. Пусть Н = Н(х) € Т[[х]] —
m
формальный степенной ряд, обратный к G*(x) = Yj gix'n~l¦ Такой ряд Н
1=0
существует, поскольку по условию теоремы коэффициент gm обратим
в Т. Тогда, найдя Н (mod xNl) для некоторого N\ ? N и умножив
на него (9.13), мы найдем Q(x) (mod xNx).
Для элемента Р € Т[[х]] мы обозначаем f(P) = - — G* е Т[[х]], если
элемент - е Т[[х]] определен. Очевидно, что f(H) = 0. Для Р € Т[[х]]
§ 9.4. ДПФ и деление многочленов 249
положим
i = 2Р- P2G* =H-G*(P-HJG T[[x]]. (9.14)
Предположим, что Р= Н (mod хк) для некоторого k € N. Тогда из (9.14)
следует, что Ф(Р)=Н (mod х2к). Если задан элемент Р такой, что
Р = Н (mod хк), то Ф{Р) (mod x2k) вычисляем следующим образом:
обрезаем ряд G* на х2к, умножаем на (—Р), прибавляем 2 и также об-
обрезаем на х2к; полученный элемент 2 + (—P)G* (mod х2к) мы умножаем
на Р и обрезаем ряд на х2к. Получится соотношение
Ф(Р) (mod х2к) = Р{2 - PG*) (mod х2к) = Н (mod х2к).
То есть если Р = Н (mod хк), то Ф(Р) = Н (mod x2fc), и мы можем найти
Ф(Р) (mod х2к) за два умножения в Т[х] многочленов меньшей степени,
чем 2k, и одно сложение в Т (прибавление элемента 2).
Мы начинаем итерацию с P = g~lGT, где g = gm — известный
нам старший коэффициент G(x). Тогда Р = Н (mod x). Затем мы вы-
вычисляем Ф(Р) (mod х2), Ф(Ф(Р)) (mod x4), ..., Ф'(Р) (mod x2'), ...,
где Ф' обозначает отображение Ф, примененное /' раз. При этом
ф1(Р) = Н (mod х2'), и, в частности, Ф'(Р) е Г[[х]] будут обратимы.
Обозначим через A*(k) и M*(k) число сложений и умножений в Т,
необходимых, чтобы вычислить Н (mod хк). Мы показали, что
\, (9.15)
M*Bk)^M*(k) + 2MBk). (9.16)
При этом А*(\) = М*(\) =0, поскольку g~l € Т нам известен. Из §9.3
следует, что М(п) = O(n\ogn), и можно считать, что М(п) = Смп\оцп
при п>\, М(\) = См, где См — некоторая абсолютная постоянная.
Аналогично можно считать, что А (п) = С а п log n log log п при п ^4
и Л (я) = С а при я= 1, 2, 3, где Сл — абсолютная постоянная. Тогда
М(х), А(х), ——, ———растущие функции. Из (9.16) по индукции
легко следует, что
М*B')^4МB<). (9.17)
Далее, из (9.15) следует, что
Л*B')<6ЛB'). (9.18)
250 Гл. 9. Дискретное преобразование Фурье
В самом деле,
А*{2<) < А*{2<-1) + 2/1B') + 1 < ...
_
2' 2^ Л B0
1
последнее неравенство верно, так как числа АB')/2' возрастают. От-
Отсюда
М _ 1
Л*B') < / + 2/1B0 ' ы ^ * +
поскольку /< 2/1B0-
Выберем наименьшее / е N такое, что 2/ ^ я — m + 1. Тогда 2/ <
^2(п — т), если п>т (в случае п = т вычисление Я (mod x"~m+l)
тривиально). Вычисление Н (mod x"~m+l) будет выполнено не более,
чем за А*B() сложений и УИ*B0 умножений в Т. Из (9.17) и (9.18)
следует, что нам понадобится не более чем 6/1 B(я — т)) сложений
и АМB(п — т)) умножений в Т.
Теперь вычисляем
/ "
Н (mod x"-m+l) ¦ [y^fiX11-1 (mod xn~m+v)
\=o
n—m
и обрезаем ряд на xn~m+l. В силу (9.13) мы найдем J] qjXn~m~l.
i=0
То есть мы определили коэффициенты искомого частного в форму-
,п-т д / т д
ле (9.12). Далее находим произведение I Yj Qix'j • (Sg'/x/) за °ДНО
V(=0 У \=0 У
умножение многочленов степени п — т и m в Г[х], а затем определяем
m-l
J^ rbxl за одно вычитание многочленов степени не выше п.
Оценим число выполняемых операций сложения и умножения. Сло-
Сложений было сделано не более чем
QAB(n - т)) + А(п - т) + А(та.х(т, п-т)) + п. (9.19)
§9.5. ДПФ в алгоритме Полларда—Штрассена 251
Умножений было сделано не более чем
4МB(п - т)) + М(п - т) + М(тах(т, п - т)). (9.20)
Величина (9.19) не превосходит
ЪА{2п) + А(п) + А{п) + п = O(n\ogn\og\ogn),
а величина (9.20) не превосходит АМBп) + 2М(п) = O(n\ogn).
Теорема доказана. П
§ 9.5. Применение дискретного преобразования
Фурье в алгоритме Полларда—Штрассена
Здесь мы докажем теорему, необходимую для полного обоснова-
обоснования алгоритма Полларда—Штрассена из § 6.2. Доказательство теоре-
теоремы можно найти в [ ; ]. Мы сохраняем обозначения и предполо-
предположения из §9.1; под сложениями мы подразумеваем и вычитания в Т.
Теорема 9.13. Пусть Т — коммутативное кольцо с единицей,
содержащее элемент 2~1. Пусть заданы элементы х\, ..., хп € Т
и многочлен F(x)€T[x], причем F(x) представлен либо в ви-
п п
де F(x) = Yjhx', либо в видеF(x) = П{х — у{), и n = deg/^x)^3. Тогда
i=0 i=l
о
элементы F(xi), ..., F{xn) могут быть вычислены за O(n\og n x
х loglog«) сложений в Т и O(n log2 n) умножений в Т.
Доказательство. Обозначим через / наименьшее натуральное чис-
число такое, что п < 21. Положим х,- = 0 при п< I < 21.
Сначала мы вычисляем коэффициенты вспомогательных много-
многочленов
/•2'
Gij(X)= [] (*"**)> 0<К<, К/<2'-''. (9.21)
k=(j-l)-2> + l
При i = 0 имеем Gqj(X)=X — Xj; /'= 1, ..., 2*. Предположим, что для
некоторого I, 0 ^ I ^ / — 1, мы уже вычислили коэффициенты 21~1 мно-
многочленов Gjj(X) степени 2'. Тогда вычисляем набор 2t~i-l+l^ многочле-
многочленов Gi+ij(X),j=l, ..., 2'-(-i+l), степени 2'+1 з&2'~^+1) умножений двух
соседних многочленов Gjj(X) степени 2'. Поэтому весь набор многочле-
/-1
нов (9.21) может быть найден за не более чем ^ 2/~('+1МB') сложений
/-1 . «=0
в Т и не более чем ^ 2/~^+1*УИB') умножений в Т (функции А(х) и М(х)
(=0
те же, что в теореме 9.11). Функция А(х)/х по определению является
252 Гл. 9. Дискретное преобразование Фурье
возрастающей, так как мы берем не точное значение А(х), а верхнюю
оценку вида Сд logxloglogx, где Сд — некоторая постоянная. Анало-
Аналогично, в качестве М мы используем величину C^xlogx. Тогда
V^o/-i ЛB'Ъ, о/-1 ЛB'-')
(=0
(=0
Дальнейшее доказательство разделяется на два случая.
1 случай. Многочлен F(x) задан в виде ^ /,х', т. е. известны козф-
(=0
фициенты /о, ..., fn € Т. Положим F/д (х) = F(x), и далее при 0 ^ I < t,
1^у'^2/~' положим Fjj(x) равным остатку от деления F [7+1] (х)
на Gjj(x) (с уменьшением I диапазон изменения у растет). Тогда при
0 < I < /, 1 < у < 2'~' и при (у — 1J' < k < у • 2' справедливы равенства
если B/ - 2J'-' < /г < B/ - 1J'-'; (9.22)
если B/ - 1 J'"' < й < 2/2'-'. (9.23)
Это следует из того, что если Gij(Xk) = 0, то значение делимого и остатка
в точке Xk совпадают. В самом деле, если
Fij(x) = Н{х) ¦ G,-_ii2/-i (х) + Fit2j-i (x),
то при доказательстве (9.22) мы пользуемся тем, что Gj-it2j-i(Xk)=0
при B/ — 2J'-' < k < B/ — 1J'-'; аналогично доказывается (9.23).
Следовательно, вычисление F(x) = /7/i(x) в точках хь ..., х<$ сводится
к вычислению Ft-\t\(x) и Ft-\2.(x) в точках х\, ...,х<#-\ h^-i+i, •••,л;2'
соответственно. И вообще, вычисление Fitj(xk), где (у — 1J' < й <у • 2',
сводится к вычислению /Vi^y-i (^fc) при B/ — 2J'~' < й < B/ — 1) • 2'
и Fi-i2j(Xk) при B/ — 1J'~' < й <2у- 2' соответственно. Так мы
спускаемся по первому индексу вниз, пока не доходим до Fqj(x),
где 1 ^ у' ^ 21. Но Fqj(x) — константы, это остатки от деления исходного
F(x) на Gqj(x)=x — Xj. То есть Fqj(x) = F(xj)—искомые величины.
Оценим число операций, необходимых для вычисления Fqj(x). Если все
многочлены G(/(x) уже найдены, то мы последовательно находим остат-
остатки Fjj(x). Так как degF^+i^^) < degG,+i,/(x) = 2'+1, то по теореме 9.12
(которая применима, так как все G(/(x)—унитарные многочлены) для
§9.6. Заключение 253
нахождения остатка Fij(x) требуется
OB'+1 Iog2'+1 log log 2'+') < С'А ¦ ABi+l)
сложений в Т и
OB'+1log2'+1)<CVyVfB'+1)
умножений в Т (С'д и С'м — некоторые постоянные). Поэтому для
нахождения всех многочленов Fij(x) при заданных G,y(x) требуется
не более, чем ? С'д •ЛB<+1J/-< сложений в Т и ? С'м ¦MBi+lJt-i
(=0 (=0
умножений в 7. Аналогично доказательству теоремы из предыдущего
параграфа число сложений тогда оценится величиной С'дгАBг), а число
умножений — величиной С'^МB(), где С"А и С"м — некоторые постоян-
постоянные. С учетом доказанной выше оценки сложности для вычисления всех
многочленов Gjj(X) и неравенства 21 ^ 2п, из которого следует, что /=
=О (log n), мы получаем утверждение теоремы в рассматриваемом случае.
2 случай. Пусть многочлен F(x) задан в виде произведения ]] {х—уд-
i=i
Тогда мы уже показали, что коэффициенты многочлена G/1 (х) =
2' , п
= YI =х2 ~" Yl(x ~ xk) могут быть вычислены в рамках указанного
k=i k=i
в утверждении теоремы количества сложений и умножений в Т. По-
После этого вычисления мы оказываемся в условиях 1 случая, для
которого теорема уже доказана.
Теорема полностью доказана. ?
§ 9.6. Заключение
Применение дискретного преобразования Фурье в арифметике мно-
многочленов действительно является эффективным на практике. Дискрет-
Дискретное преобразование Фурье можно также использовать в целочисленной
арифметике. В частности, с его помощью доказывается теорема Шенха-
ге—Штрассена: произведение двух я-разрядных двоичных чисел можно
вычислить за O(«log«loglog«) битовых операций. Однако на практике
алгоритм Шенхаге—Штрассена неэффективен, хотя и имеет наилуч-
наилучшую известную оценку сложности среди алгоритмов умножения це-
целых чисел. Постоянная в символе О(-) в указанной оценке сложности
алгоритма слишком велика, что делает его практичным лишь для чи-
чисел, записываемых несколькими тысячами десятичных цифр, см. [ ;
; ]. В следующей главе мы опишем эффективные алгоритмы для
умножения больших целых чисел.
Глава 10. Целочисленная арифметика
многократной точности
§ 10.1. Введение. Сложение и вычитание
В данной главе мы описываем основные алгоритмы для выполне-
выполнения арифметических операций с большими целыми числами, а также
некоторые алгоритмы в кольцах вычетов Ъ/пЪ.
Мы считаем, что числа записаны в 6-ичной системе счисления,
где b — фиксированное натуральное число, Ь^2. При этом натураль-
натуральное число, записываемое не более чем п цифрами в 6-ичной системе
счисления, мы обозначаем и\...ип (допуская, что несколько старших
разрядов Mi, ..., Uk могут равняться нулю). Основание b не всегда
равно 2; иногда оно соответствует размеру машинного слова, отведен-
отведенному под запись обычных целых чисел. В этом случае мы работаем
с массивом, содержащим большое целое число.
При работе с большими целыми числами удобно хранить знак такого
числа в отдельной ячейке или переменной. Если мы хотим, например,
перемножить два числа, то знак произведения мы вычисляем отдельно.
Заметим, что программы, реализующие арифметику многократной
точности, лучше всего писать на ассемблере.
Опишем сложение и вычитание.
Алгоритм А (сложение неотрицательных целых чисел).
Для двух неотрицательных чисел щ ...пп и v\...vn вычисляется их
сумма WQ...wn\ при этом дао— цифра переноса — всегда равна 0 или 1.
1 шаг. Присвоить /' := п, k:=0 (здесь /' идет по разрядам, k следит
за переносом).
2 шаг. Присвоить да, := щ + Vj + k (mod b), Wj — наименьший неот-
неотрицательный вычет в данном классе вычетов;
(Заметим, что Wj — очередная цифра, k — перенос; всегда k = 0 или
k = 1. При этом, если b = 2 или b — размер машинного слова, то для
§ 10.2. Умножение 255
вычисления w/ и k не нужно использовать деления, достаточно взять
соответствующий разряд (или разряды) в записи щ + vt + k.)
3 шаг. Присвоить /':=/'— 1. Если /' > 0, то идти на шаг 2; если /' = О,
то присвоить Wo:= k и закончить работу.
Конец алгоритма.
Обоснование корректности алгоритма очевидно.
Алгоритм S (вычитание неотрицательных целых чисел).
По двум я-разрядным неотрицательным целым числам u = u\...un^
^ v = v\... vn ^ 0 вычисляется их разность w = w\ ...wn = u — v.
Замечание 10.1. Для того, чтобы в общем случае установить, что
U\... un ^ v\... vn, надо пройти по цифрам, вычисляя щ — V/. Это про-
простая проверка; с ее помощью находится знак разности u — v в общем
случае.
1 шаг. Присвоить /:=«, k:=0 (переменная k — это заем из стар-
старшего разряда).
2 шаг. Присвоить Wj := щ — V/ + k (mod b) — наименьший неотри-
неотрицательный вычет в данном классе вычетов;
k:=
b
3 шаг. ]'.= ]— 1. Если /' > 0, то идти на шаг 2; при /' = 0 закончить
работу.
Конец алгоритма.
Обоснование алгоритма достаточно очевидно. При j = n мы нахо-
находим wn = и„ — vn, если и„ ^ vn, и wn = b + и„ — vn, если ип < vn. Соот-
Соответственно, k = 0 и k = —\ —это заем из п — 1 разряда. Дальнейшие
рассуждения аналогичны.
§ 10.2. Умножение
Здесь мы опишем несколько методов умножения целых чисел, при-
приводящих к эффективным на практике алгоритмам.
Алгоритм М (умножение неотрицательных целых чисел стол-
столбиком).
Для чисел и = и\... ип и v = v\... vm в системе счисления с основа-
основанием b мы находим их произведение w = uv = w\ ... wm+n-
1 шаг. Присвоить wm+i := 0, ..., wm+n '¦= 0, /' := га. (Значение /' пе-
перемещается по номерам разрядов v от младших к старшим.)
256 Гл. 10. Целочисленная арифметика многократной точности
2 шаг. Если V/ = 0, то присвоить W/ := 0 и перейти на шаг 6. (Этот
шаг можно пропустить. Однако если b мало, например, b = 2, то V/
равно нулю с достаточно большой вероятностью. В этом случае вы-
выполнение шага 2 дает значительную экономию.)
3 шаг. Присвоить I := п, k := 0. (Значение I идет по номерам разря-
разрядов числа и, k отвечает за перенос.)
4 шаг. Присвоить / := щ ¦ Vj + тщ + k, да,-+/- := / (mod b) — наи-
наименьший неотрицательный вычет в данном классе вычетов, k := [t/b].
(По прежнему, как и в §10.1, при вычислении хющ и А в ряде слу-
случаев можно обходиться без деления. Легко показать, что выполняются
неравенства 0 < / < Ь2, 0 < k < b.)
5 шаг. i:=i — 1. Если I > 0, то идти на шаг 4. Если I = 0, то при-
присвоить Wj := k.
6 шаг. /':=/'— 1. Если /' > 0, то идти на шаг 2. Если /' = 0, то закон-
закончить работу.
Конец алгоритма.
Проведем обоснование корректности алгоритма по индукции.
Пусть /' = т. Если на 2 шаге vm = 0, то в последних п + 1 раз-
разрядах w будут стоять нули. Если же vm > 0, то на 4-м шаге мы
фактически находим Uibn~'vmbm~m = UiVjbm+n~{-l+i) и добавляем в раз-
разряд Wi+j с учетом переноса k. При этом определяется истинное
значение цифры хющ и очередной перенос k. В итоге при /' = т по-
после шагов 2—5 мы нашли wmwm+i ...wm+n = u ¦ vn. Это основание
индукции.
Теперь предположим, что мы прошли 2—6 шаги / раз и верно опре-
определили U ¦ (um_/+1Um_/+2 ... Vm) = Wm-(l-\)Wm-(l-2) ¦ ¦ ¦ Wm+n. Тогда ПО-
сле 6 шага /' = т — I, мы уходим на 2 шаг и вычисляем и ¦ vm-i • Ь1.
Снова идем по разрядам ип, ..., и\, находим Ujbn~lvm-ibl = щь-}Ьп+[~1
и соответственно изменяем цифру с номером п + т — (п +1 — i) = i +/'.
На этом мы завершим наше краткое обоснование алгоритма М.
Теперь мы опишем метод умножения, предложенный Комбой,
см. [ ; ]. Мы будем называть этот метод «быстрым столбиком». Нам
п п
нужно умножить и=и\.. .ип = ^2,щЬп~1 на v = v\...vm = ^Vjbm~i. Будем
(=1 /=1
считать, что п ^ т. В алгоритме М нам требовалось кроме тп умноже-
умножений UjVj и некоторого количества сложений определенное количество
чтений записей памяти. А именно, элементы V/ мы читали т раз, эле-
элементы щ мы читали тп раз (по п раз при каждом фиксированном /'),
элементы хющ мы тп раз читали и тп раз записывали для них но-
новые значения. То есть нам нужно тп умножений и около Ътп чтений
§ 10.2. Умножение 257
записей памяти. В алгоритме М мы вычисляли uv по формуле
uv = ^2uvjbm~i. A0.1)
Однако справедлива и другая формула:
т+п-2 , s n,
uv= ]Г bs(y2un-iVm-s+iY A0.2)
s=0 4=0 '
где при / ^ 0 мы полагаем ui = vi = 0. В самом деле,
т+п-2 п-\
UV = ^2 bS ^2 Un-iVm-j = ^2 Yj un-iVm-s+ibS =
s=0 i+j=s i=0 i^s^m—l+i
1 m+n-2
= Y. b" Y. "n-iVrn-s+i- (Ю.З)
s=0 s—m+l<i<s
Формула A0.3) эквивалентна формуле A0.2). Действительно, ес-
если s — т + 1 < 0, т. е. s < т — 1, то при I < 0 величина ип_,- рав-
равна 0 по определению. Если же s — т+ 1 >0, т.е. s>m— 1, то при
0 < г < s — m + 1 значение I + т — s < 1, и wm_s+,- = 0 по определению.
Теперь воспользуемся формулой A0.2), чтобы умножить и на v.
Алгоритм FM («быстрый столбик»)..
1 шаг. / := 0.
2 шаг. (цикл) Для s от 0 до т + п — 1 с шагом 1 выполнить ша-
шаги 3 и 4.
3 шаг. Для I от 0 до s с шагом 1 выполнить присвоение
t := t + un-i ¦ vm—s+i.
4 шаг. Присвоить wm+n-s := / (mod b) — наименьший неотрица-
неотрицательный вычет по модулю b (опять-таки, это не деление, а чтение записи
памяти, если Ь = 2 или b — размер машинного слова);
t:=[t/b].
Конец алгоритма.
Корректность алгоритма следует из формулы A0.2).
Операций умножения здесь столько же, сколько в алгоритме М,
поскольку каждое щ надо умножить на каждое V/, только в другом по-
порядке. Однако количество чтений записей памяти сокращается: мы чи-
читаем щ и Vj столько раз, сколько перемножаем — т. е. Чтп раз (тп раз
17 О. Н. Василенко
258 Гл. 10. Целочисленная арифметика многократной точности
читаем щ и тп раз читаем Vj). И еще требуется т + п записей в память
значений wm+n-s. В итоге число чтений записей памяти в «быстром
столбике» существенно меньше, чем в алгоритме М, и реализация алго-
алгоритма FM дает реальный выигрыш во времени на практике (если писать
программу на ассемблере и если b — это размер слова в ассемблере).
Теперь опишем метод Карацубы для умножения целых чисел
(см. [ ]). Предположим, что у нас имеется два 2я-разрядных числа
в двоичной системе счисления:
M = M2n_l...Mo, V = V2n-l ¦¦¦ Щ-
Положим и = 2V + и", v = 2V + v", где
и'= U2n-l ¦ ¦ ¦ Un, и" = Un-l ... Uo,
v' = V2n-l...Vn, v" = Vn-l...Vo.
Тогда
uv = B2п + 2>V + 2"(и' - u")(v" - v') + B" + \)u"v". A0.4)
Поэтому для умножения двух 2я-разрядных чисел по формуле A0.4)
нужно три умножения я-разрядных чисел и 0A) сложений, вычита-
вычитаний и сдвигов 4я-разрядных чисел, которые делаются за О(п) битовых
операций. Если обозначить через Т(п) число битовых операций для
умножения двух я-разрядных чисел, то
ТBп) < ЗТ(п) + сп, A0.5)
где с — некоторая абсолютная постоянная. Из A0.5) по индукции сле-
следует неравенство
TBk)^cCk-2k), k=\,2, 3, ... A0.6)
Действительно, при k = 1 ТB) < с (это обеспечивается за счет выбора
постоянной с). Далее, если A0.6) верно для k, то
TBk+l) < 37B*) + c2k < ЗсC* - 2k) + c2k = c{3k+l - 2k+l).
Поскольку умножение двух я-разрядных чисел сводится к умноже-
умножению 2[|OR2"]+1-разрядных чисел (старшие биты при необходимости по-
полагаем равными нулю), то из A0.6) получим неравенство
Т(п) < 7B[l0R2«]+i) < c3[l0R2"]+i ^ Cl3los2« = С1я1ок2з
Это есть оценка сверху количества битовых операций, требуемых для
умножения двух «-разрядных чисел методом Карацубы.
§10.3. Деление 259
Метод Карацубы становится более эффективным, чем «быстрый
столбик», для достаточно больших чисел. По разным источникам, гра-
граница находится где-то между числами порядка 2450 и 2640. Поскольку
в методе Карацубы умножение 2я-разрядных чисел сводится к умно-
умножению я-разрядных, то, сделав несколько тактов алгоритма Карацубы,
мы приходим к умножению чисел того размера, где более эффективен
«быстрый столбик», и с его помощью завершаем умножение. В этом
и заключается практичный алгоритм умножения целых чисел.
Замечание 10.2. Алгоритм Карацубы был впоследствии обобщен
Тоомом и Куком, см. [ ; ]. В частности, можно показать, что в ал-
алгоритме Тоома—Кука
Алгоритм Тоома—Кука описан в [ , §4.3.3]. Там же описан модуляр-
модулярный метод Шенхаге. Еще лучшую, чем алгоритм Тоома—Кука, оцен-
оценку сложности имеет алгоритм Шенхаге—Штрассена, о котором было
вкратце рассказано в гл. 9.
В работах [ ] и [ ] описаны методы распараллеливания умно-
умножения целых чисел многократной точности.
§ 10.3. Деление
В этом параграфе мы опишем методы деления целых чисел много-
многократной точности.
Для начала рассмотрим алгоритм деления многоразрядного числа
на одноразрядное.
Алгоритм DO (деление на одноразрядное число).
Находим частное w = w\ ...wn от деления числа и = и\ ...ип в си-
системе счисления с основанием b на одноразрядное число и, 1 < v < b,
и остаток r = u — vw.
1 шаг. г :=0, / := 1.
2 шаг. w — j := ; r:=rb + щ (mod v) — наименьший неот-
неотрицательный вычет в данном классе вычетов.
3 шаг. /':=/'+ 1 ¦ Если /' ^ п, то идти на 2 шаг. Если /' > п, то выдать
W = W\ ...Wn И Г.
Конец алгоритма.
Корректность алгоритма DO очевидна — это обычное деление
углом.
17*
260 Гл. 10. Целочисленная арифметика многократной точности
Теперь рассмотрим простой алгоритм деления многоразрядных це-
целых чисел из [ , гл. 14]. Пусть b — основание системы счисления,
u = un...u\UQ, v = vt...v\VQ — натуральные числа, я^/^1, vt^O
(случай / = 0, т. е. деление на одноразрядное число, рассмотрен выше
в алгоритме DO).
Алгоритм деления.
На входе и, и; на выходе частное q = qn-t • • • <7о и остаток r = rt... го,
u = qv + г, 0< г < v.
1 шаг. Для /' от 0 до п — t присвоить q} := 0.
2 шаг. До тех пор, пока и ^ vb"~t, выполнять следующие действия:
qn-t:=qn-t+l, u:=u-vbn~'
(здесь определяется старшая цифра частного).
3 шаг. Для I = п, п — 1,...,/+ 1 выполнять пункты 1 —4:
1) если щ ^ vt, то присвоить qi-t-i '.= b — 1, иначе присвоить
щ
2) до тех пор, пока qi-t-\{vtb + Vt-i) > щЬ2 + Щ-\Ь + м,-_2, выпол-
выполнять
(заметим, что всегда будет выполняться неравенство qt-t-i ^ 0);
3) присвоить и:= и — <7(-f-ift'~'~'w;
4) если и < 0, то присвоить
4 шаг. г := и. Выдать q и г.
Конец алгоритма.
Покажем, что алгоритм работает верно. После 1 шага q = 0. По-
После второго шага найдена старшая цифра qn-t частного, и текущее
значение и меньше, чем иЬп~1. Возьмем первое значение I = п\ нам
нужно определить цифру частного qn_t-\- Если ип ^и/ (неравенство 1
пункта 3 шага), то наибольшее возможное значение qn-t-\ равно b — 1
(например, при un = b —\,Vt = \). Если же ип < и/, то наибольшее воз-
[unb + un_n „
можное значение qn-t-\ равно . Действительно,
unbn + u^b"-1 + ... + uo<
§10.3. Деление 261
так как справедливо даже более сильное неравенство:
Vt
Последнее верно, так как
unbn + un-ibn~l = (unb + un-i)bn~l <
•г-i.
и поскольку обе части строгого неравенства делятся нацело на bn~l,
добавление к левой части величины ип_фп~2 +... + щ, меньшей,
чем bn~l, сохраняет неравенство. Итак, мы обосновали 1-й пункт
3-го шага. Здесь величина Qi-t-i не меньше истинного значения циф-
цифры частного с номером I — t — 1, и не больше, чем b — 1, так как при
vt^ un + l имеем
_ \и х un_i-b]
— \U T
L vt J " L un+l J L и„ + ]
Во втором пункте З шага мы находим более точное значение g,_/_i.
В самом деле, пусть
{qn-t-i + 1)(и/6 + vt-i) > unb2 + Un-ib + ип-2, (Ю.7)
qn-t-i(vtb< + vt-i)^ unb2 + un_ib + м„_2. A0.8)
Из первого неравенства следует, что
^-'-'(^-/-l + Щи{Ь< + vt-ib'-1) > unbn + Un-ib"-1 + м„_2.
Так как обе части делятся на Ьп~2 и м„_36"~3 + ... + щ < Ьп~2, то
ft"-'-1(<7n-/-i + l)M' + w<-i&'-1)>«.
Тем более btl~t~i(qn-t-i + 1)и > м; значит, qn-t-\ + 1 больше искомой
цифры частного, a qn-t-\ —не меньше.
Пусть для найденного значения qn_t-\ выполнено неравенст-
неравенство A0.8). Покажем, что тогда qn-t-\ либо равно истинной цифре част-
частного, либо на единицу больше. Предположим противное. Тогда qn-t-i
больше истинной цифры хотя бы на 2, т. е.
м<(^_/_1-1N"-/-1и. A0.9)
Отсюда
unbn + ип_фп-1 + ип_2Ь"-2 < {qn-t-i ~ V)bn-<l<
262 Гл. 10. Целочисленная арифметика многократной точности
Применяя A0.8), получим
< (qn-t-i ~ \)Ьп-1-{(уф1 + vt-ib1-1 + vt-2b1-2 + ... + wo).
Пользуясь делимостью на b"~2, неравенствами Vt-<ibl~2 + ¦ ¦ ¦ + Uo < b(~l
и 0 < qn-t-\ < b, получим, что
qn-t-i(vtb + vt-x)bn-2 < (qn_t_i - l)ftn-<->,ft< + Vt-ib'-1),
а это невозможно.
Итак, найденное во 2 пункте 3 шага значение qn-t-i равно истинно-
истинному значению цифры частного, или на единицу больше. Отсюда следует
обоснование 3 и 4 пунктов 3 шага.
После прохождения 3 шага для i = п будет выполнено неравенство
и = unbn + ... + м0 < vb"-'-1 = bn-'-l(vtb' + ... + wo).
Отсюда следует, что и„ = 0. Поэтому мы возвращаемся на 3-й шаг
к значению i = п — 1, и т. д.
Мы обосновали корректность работы 3-го шага для i = п. Для мень-
меньших значений i все рассуждения повторяются дословно.
На этом завершается обоснование данного алгоритма деления.
Теперь мы опишем более тонкий алгоритм деления целых чисел мно-
многократной точности, следуя [ , гл. 4]. Мы дадим лишь несколько более
подробные доказательства вспомогательных утверждений, чем это сде-
сделано в книге [ ]. Заметим, что в книге [ ] приведена также блок-
схема алгоритма деления.
Пусть и = uq ... и„ и v = wi ... vn — неотрицательные целые числа,
записанные в системе счисления с основанием Ь, причем wi > 0, u/v < b.
Нам нужно найти частное от деления и на v
q=[u/v], A0.10)
0 ^ q ^ b — 1. Нахождение q при сделанных нами предположениях мы
будем называть основной задачей.
Заметим, что u/v < b тогда и только тогда, когда u/b < v, что рав-
равносильно неравенству
Мо...М„_1 <Wl ... Vn. A0.11)
Обозначим
(pto]) A0.12)
§10.3. Деление 263
Значение q вычислить нетрудно, нужно найти частное от деления двух-
двухразрядного числа щЬ + Ui на одноразрядное Vi (см. алгоритм DO
выше).
Теорема 10.3. В условиях основной задачи справедливо нера-
неравенство q^q.
Доказательство. Поскольку q = [u/v] < b — 1, теорема верна при
q = Ь — 1. Пусть q < b — 1. Тогда а = — . Из этого следует, что
L vi 1
qvi^ щЬ + ui — vi + l. A0.13)
В самом деле, если — е Z, то A0.13) верно, так как vi ^ 1.
„ Unb + Ui ' Unb + Ui [Unb + Ui~\ k
Ьсли же -^ — не целое число, то — = — -\ -\ ,
vi vi V vi J v\
где k€~N, 1 < й < ui — 1. Тогда
откуда следует A0.13).
С помощью A0.13) получаем неравенства
и — qv < м — qvib"~l <
< мой" + ... + «„- («oft" + Mi*" - vibn~l + bn-1) =
= и2Ьп~2 + ...«„- 6" + vibn~{ < vibn~{ < u.
Так как м>(?иин<(^+1)и,то^(/, что и требовалось доказать. ?
Теорема 10.4. Если в условиях основной задачи также выпол-
выполнено неравенство vi ^ [Ь/2], то
<?-2< q.
Доказательство. Так как (по теореме 10.3) q^q, то, предположив,
что q < q — 2, мы придем к противоречию. Пусть q ^ q + 3. По опреде-
определению
ирЬп + unbn~l и
q~ щ vibn~l v -bn~1
При этом v>bn~l, так как если v = bn~l, то q= \-\ = uob +Ui,
и по условию q^b—l. Из этого следует, что q = Uob + Ui =q, а это
противоречит сделанному предположению.
Поскольку g — частное, то q > u/v — 1. Тогда
U , U ЬП~1 ,
hi = ;—г + 1-
264 Гл. 10. Целочисленная арифметика многократной точности
Значит
и bn~l „
v v — bn~l
Далее, так как q < Ь — 1, то
b-u^q-3^q= [u/v] ^ 2v{ - 2.
Поэтому v\ ^ -z — 1, v\ < [b/2], что противоречит условию теоремы. ?
Замечание 10.5. Мы показали, что если v\ ^ [Ь/2], то пробное
частное q никогда не отличается от истинного частного q больше, чем
на две единицы.
Теперь обратимся к задаче нормализации: как, находясь в усло-
условиях основной задачи, попасть в условия теоремы 10.4? Оказывается,
Г b 1 i-r
следует умножить и и v на . 11ри этом частное q не изменится,
и будет выполнена следующая теорема.
Теорема 10.6. В условиях основной задачи у числа v' = v\
l
старший разряд будет не меньше, чем [Ь/2], и число v' останет-
останется п-разрядным. При этом число и' = и\ г будет не более чем
IV1 + 1 J
(п + X)-разрядным.
Доказательство. Покажем сначала, что если а, с € N, 1 < а < с,
то
Второе и третье неравенства в A0.14) очевидны; докажем первое.
Рассмотрим сначала случай а^[с/2]. Тогда, поскольку с^а+1,
Ь] []
Пусть теперь 1 < а < [с/2]. Тогда
Здесь мы воспользовались тем, что
2ас-2а2 -2а-са-с
ас - 2а2 - с + 2 _ (а- \){с-2а-2)
2а~+2 ~ 2а~+2 ^ '
§ 10.3. Деление
265
так как из неравенства а < [с/2] < с/2 следует, что а + 1 < с/2,
с^2а + 2. Итак, формула A0.14) доказана.
Теперь докажем теорему 10.6. Положим в A0.14) a = V\, c = b. Тогда
un—\
+ 1) ¦
VI +
b
b.
A0.15)
A0.16)
Так как одно из неравенств A0.16) строгое, то из A0.15) и A0.16)
получим, что
Однако
+
еще не является старшим разрядом числа и , так как
возможен перенос из младших разрядов. Но если этот перенос будет
Г b 1 » i А
строго меньше, чем , то старший разряд числа v будет строго
меньше, чем
¦>[;
, а это число не превосходит b. Поэтому v'
останется я-разрядным. Осталось показать лишь, что перенос из млад-
/ Г b 1
ших разрядов v в п-и строго меньше, чем .
Перенос из последнего разряда v' в предпоследний составит не бо-
более чем
поскольку 1 — - < 1. Далее применим индукцию: предположим, что пе-
перенос из (/'+ 1)-го разряда в /'-й строго меньше, чем . Тогда
перенос из /'-го в (/' — 1)-й разряд будет не превосходить
Ь 1 A.n-i . Г b
+
'-D -
-v<
266 Гл. 10. Целочисленная арифметика многократной точности
Итак, мы доказали, что v' останется я-разрядным. Из A0.17) следу-
следует, что старший разряд v' будет не меньше [Ь/2]. Наконец, и' будет
не более чем (п + 1)-разрядным, так как — = - < Ь. ?
Теперь опишем алгоритм деления целых чисел многократной точно-
точности, основанный на теоремах 10.3—10.6.
Алгоритм D (деление неотрицательных целых чисел).
Для чисел и = Ui... ит+„ и v = vi ...vn, записанных в системе
счисления с основанием Ь, где vi ^0, находим частное - =q§...qm
и остаток г = и — qv = г\ ...гп. Здесь т^ 0. Если п = 1, то применяем
алгоритм DO. Далее считаем, что п ^ 2.
1 шаг (нормализация). Присвоить d :=
+
... ит+п :=U[ ... Um+n ' d, V\ ... Vn := V\ ... Vn ¦ d.
(Из теоремы 10.6 следует, что новое значение v\ больше или равно
[Ь/2].)
2 шаг. /' := 0.
3 шаг (обеспечение выполнения условий основной задачи). Присво-
Присвоить /:=0. Если ''" ' ^ Ь, то выполнены условия основной задачи;
мы переходим на 4 шаг. Если ''" ' < Ь, то
Uj... Uj+n := Uj... Uj+n — bv, I := / + 1.
Uj... Uj+n
Снова проверить выполнение неравенства — — < о; если да, то пе-
перейти на 4 шаг. Иначе еще раз присвоить
ц ... Uj+n := ц ... Uj+n — bv, I := / + 1.
Замечание 10.7. Покажем, что после 3 шага будет выполнено нера-
неравенство - < Ь, т. е. выполнены условия основной задачи. Поскольку
vi ^ [b/2], to v = vl...vn^[b/2]bn-1. Также Uj... Uj+n ^bn+l -1. По-
Покажем, что
Uj...uj+n<3,bv. A0.18)
Действительно,
3bv ^ 3bvibn~l ^ 3bn[b/2] > bn+l -\>щ... uj+n,
так как при b = 2 неравенство
§10.3. Деление 267
очевидно, а при Ь^Ъ либо [Ь/2] = Ь/2, либо [Ь/2] = - — -, и тогда
Ж[Ь/2] > 1 + Ж (J - ±) =
bn+l
1 S
так как -bn+l ^ ^ft". Итак, после 3 шага и/... U/+n < bv.
Замечание 10.8. Значение переменной / показывает, что из перво-
первоначального значения tij...Uj+n мы вычли Ibv. Впоследствии нам на-
надо будет добавить lb в соответствующий разряд итогового частного
на 9 шаге.
4 шаг (нахождение q). На этом шаге выполнено неравенство щ ^ х)\,
так как, если tij>v\, то
.Uj+n - b -vi ...vn ^ u/b" - (vibn + v2b"~l + ... + vnb) ^
что противоречит условию основной задачи, которое выполнено.
rujb + Uj+ii г uj+n
Ьсли щ = vi, то -! — = \Ь + —— ^ о, и тогда мы присваи-
присваиваем <7 '=Ь — 1.
[Uib + Ui+[ i
Если My < wi, то -! — < b — 1, так как иначе
ц/ +"/+1 ^b>
что невозможно, поскольку
b — 1 ^ м/+ь
В этом случае мы присваиваем
I
V[ }
5 шаг. Проверить выполнение неравенства
U2<7> (Ujb + Uj+i - cjvi)b + Uj+2- A0.19)
Если оно выполнено, то cj :=cj — 1. Снова проверить A0.19), и если оно
выполнено, то присвоить еще раз q := q — 1.
Замечание 10.9. Поскольку п^2, то v — не менее чем двухраз-
двухразрядное, а число м = «о ... мт+„ — не менее чем трехразрядное; значит,
цифра Uj+2 с номером /' + 2 определена.
Замечание 10.10. После 4 шага выполнены условия теорем 10.3
и 10.4. Значит, q — 2^q^q, т.е. q равно либо q, либо д+1, либо
268 Гл. 10. Целочисленная арифметика многократной точности
q + 2. Положим г := Ujb + щ+\ —cjvi —выражение, стоящее в форму-
формуле A0.19) в скобках. Покажем, что если
v2q>rb + uj+2, A0.20)
то q > q. В самом деле, надо доказать, что
щ...Uj+n -qv<0.
Справедливы следующие соотношения:
ц ... Uj+tl -qv^Uj... Uj+tl - qv[bn~{ - qv2bn~2 =
= uj+2bn-2 + ... + uj+n + щЬп + uj+lbn-1 -qvibn~l -qv2bn-2 =
= rbn~l + uj+2bn-2 + ... + uj+n - qv2bn~2 <
< rbn~l + (щ+2 + \)bn~2 - qv2bn~2 =
= b"-2(rb + uj+2+\-qv2). A0.21)
Если выполнено неравенство A0.20), то в формуле A0.21)
rb + uj+2 + 1 - qv2 < rb + uj+2 +\—{rb + uj+2) = 1.
Поэтому
rb + Uj+2 + 1 - q v2 < 0,
и из A0.21) следует, что
щ... Uj+n - q v < О,
т.е. q^q+l. Следовательно, надо заменить q на q— 1 —это будет
лучшим приближением к q. Эта процедура 5 шага делается не более
двух раз, так как q < q + 2 по теореме 10.4.
Замечание 10.11. Сейчас для текущего значения q, удовлетворя-
удовлетворяющего неравенству q ^q ^q + 2, и для значения f=Ujb + Uj+\—qv\
выполняется неравенство
v2q^bf+uj+2. A0.22)
Докажем, что в этом случае q равно либо q, либо q + 1. Предположим
противное, т. е. что q = q — 2. Но тогда
щ... uj+n <{q- \)v < q{vibn~l + {v2 + \)bn~2) -v<
<qvibn~l + qv2bn~2 + bn~l -v,
§10.3. Деление 269
поскольку qb" 2 < b" 'по определению q. Отсюда, с учетом A0.22),
получим
щ... uj+n < qvib"~l + (br + Uj+2)b"~2 + b"~l -v =
= qvib"-1 + (Ujb2 + uj+lb + uj+2 - qv{b)bn-2 + b"~l - v <
< Ujb" + uj+ibn-1 + Uj+2b"-2, A0.23)
поскольку b"~l — v^O. Формула A0.23) означает, что Uj...Uj+n<
<Uj...Uj+n, но это невозможно.
Итак, q равно q или q равно q+\.
6 шаг. Находим разность
Uj...uj+n-qvi...vn A0.24)
и заносим ее абсолютную величину в Uj... Uj+n, а знак в переменную 8.
7 шаг. q-j\=q. Если разность A0.24) неотрицательна, то уходим
на 9 шаг.
8 шаг. Присваиваем qj\=qj— 1 (так как разность A0.24) в этом
случае отрицательна, то q = q + 1), а также
и/... Uj+tl :=V[...vn-Uj... Uj+n.
9 шаг. К значению qj прибавляем величину lb из 3 шага.
Замечание 10.12. На 3-м шаге мы обеспечивали выполнение усло-
условий основной задачи, вычитая из исходного числа щ...щ+п число Ibv.
Поэтому к найденному частному qj от деления нового (после 3 шага)
числа Uj... Uj+n на v надо добавить lb. После этого значение qj уже
не всегда будет цифрой в 6-ичной системе счисления, оно может стать
больше, чем Ь.
10 шаг. Сейчас в текущем значении числа щ...щ+п цифра щ рав-
равна 0, так как в нем фактически стоит остаток от деления на я-разрядное
число V\...vn. Присваиваем /':=/'+1. Если /'< га, то возвращаемся
на 3 шаг.
11 шаг. Искомое частное от деления и на v равно
q:=qobm + qlbr"-l + ... qm-ib + qm
(здесь qj уже могут не быть цифрами в 6-ичной системе счисления,
см. замечание на шаге 9). Остаток от деления и на v равен
где d — из 1 шага алгоритма, ит+\ ¦ ¦ ¦ ит+п — значение, полученное по-
после последнего выполнения 10 шага.
Конец алгоритма.
270 Гл. 10. Целочисленная арифметика многократной точности
Корректность работы алгоритма деления мы обосновали по ходу его
описания.
Замечание 10.13. Описание некоторых алгоритмов для выполне-
выполнения арифметики многократной точности можно найти в книгах [ ,
гл. 9; , гл. 14]. Обзор арифметики многократной точности содер-
содержится в работе [ ].
§ 10.4. Некоторые алгоритмы
модулярной арифметики
В этом параграфе мы описываем некоторые алгоритмы для вычис-
вычисления в кольцах вычетов Ъ/пЪ.
Начнем с китайской теоремы об остатках. В Приложении мы
привели формулировку этой теоремы о решении системы сравнений
'х = а\ (mod m\),
A0.25)
' = uk (mod mk),
где (га,-, ray) = 1 при i ф j. Формулировка является конструктивной, т. е.
представляет собой метод решения A0.25). Однако в ряде случаев бо-
более эффективным является алгоритм Гарнера, см. [ , § 4.3.2; ; ,
гл. 14]. По сравнению с классической китайской теоремой об остатках
он не требует приведения по модулю М = гщ ...rrik.
Алгоритм Гарнера.
На входе алгоритма заданы числа а\, ..., ak,m\, ..., mh, (m,-, ray) =
= 1 при iф j, и число М = mi... ffik- На выходе получается решение х
системы A0.25), 0 < х < М.
1 шаг. Для i = 2, ..., k выполнить пункты 1) и 2):
2) для /'= 1, ..., i— 1 выполнить: и:=т~ (mod га,) (нахождение
обратного элемента можно делать с помощью обобщенного бинарного
алгоритма, см. Приложение), с,- := ись (mod га,).
2 шаг. и:=а\, х:=и.
3 шаг. Для 1 = 2, ..., k вычислить и := (а,- — х)с,- (mod га,) — наи-
наименьший неотрицательный вычет по модулю га,-,
(-1
х:=х + и
§10.4. Некоторые алгоритмы модулярной арифметики 271
Полученное значение х является искомым решением.
Конец алгоритма.
Покажем, что алгоритм Гарнера выдает верный ответ, и что
0 < х < М. Мы считаем, что 0 < а,- < т,- — 1, I = 1, ..., k. Тогда по по-
построению
k i-i
0 < х < mi - 1 + X^m< ~ ') П mi = rn\---mk-\=M-\.
i=2 /=1
Далее, при I ^2 с,-= (mi ...m,-_i)~' (mod m,-). Очевидно, что х =
= а\ (mod mi). Обозначим через хь значение х в алгоритме, которое
получается после выполнения 3 шага для значения переменной i
B < I < k)\ x\ = а\. Тогда
i-i
xi = xi-i + ((щ - Xi-i)ci (mod гщ)) JJ mh
x,- (mod m,-) = x,_i (a,- - x,_i) • ( c, ^Q my) (mod m,) = a,- (mod гщ).
^ /=i ^
Поскольку итоговое значение х в алгоритме по построению удовлетво-
удовлетворяет сравнениям x = xt (mod гщ), 1=\, ..., k, алгоритм Гарнера рабо-
работает верно.
Теперь опишем вкратце модулярное умножение и возведение в сте-
степень по Монтгомери, см. [ , гл. 9; , гл. 14; ]. Зафиксируем
натуральное число (V>1 и натуральное число R, R>N, (R,N)=l.
Число R выбирается так, чтобы вычисления по модулю R были до-
достаточно легкими (например, R — размер машинного слова или степень
двойки). Пусть заданы R', N' € Z, такие, что
0 < R' < N, RR' - Л/Л/' = 1
(R' и N' можно найти с помощью обобщенного алгоритма Евклида,
см. Приложение). Для целого числа Т, 0^T<RN, можно быст-
быстро найти наименьший неотрицательный вычет в классе вычетов
TR' (mod N) с помощью следующего алгоритма (фактически здесь
R' = R~l (mod Л/)).
Алгоритм REDC (приведение по Монтгомери).
1 шаг. m := T (mod R) — наименьший неотрицательный вычет.
2 шаг. m := mN' (mod R) — наименьший неотрицательный вычет.
272 Гл. 10. Целочисленная арифметика многократной точности
о , T+mN
3 шаг. /:= —-—.
К
4 шаг. Если / ^ N, то выдать t — N, иначе выдать /.
Конец алгоритма.
Покажем, что алгоритм работает верно. Поскольку значение т, по-
получающееся на 2 шаге, удовлетворяет сравнению
mN=TN'N = -T (mod R),
то значение /, определяемое на 3 шаге, будет целым числом. Да-
Далее, tR=T + mN=T (mod N), т.е. t = TR~l (mod N). Наконец,
0 < T + rnN < RN + RN, откуда 0 < / < 2N. Это завершает обоснование
корректности алгоритма REDC.
Заметим, что поскольку мы считаем вычисления по модулю R (в том
числе, деление на R) быстрыми, то сложность выполнения алгоритма
REDC в основном заключается в двух умножениях целых чисел, по мо-
модулю не превосходящих R.
Аналогично можно описать приведение по Монтгомери для целых
чисел многократной точности, умножение по Монтгомери (т. е. для
х, у € Z и N € N мы находим xyR~l (mod Nj) и возведение в степень
по Монтгомери (т. е. для х, N, е € N вычисляется хе (mod Л/)), см. [ ,
гл. 9; , гл. 14; ]. Возведение в степень по Монтгомери оказыва-
оказывается эффективным и рекомендуется для практического использования,
см. также [ ].
Еще один алгоритм для эффективного модулярного возведе-
возведения в степень был предложен в работе [ ]. Авторы этой рабо-
работы утверждают, что их алгоритм эффективнее алгоритма Монтго-
Монтгомери.
Для вычисления х (mod rri) при заданных х и m эффективен ал-
алгоритм Баррета, см. [ ; , гл. 14]. В [ , гл. 9] описаны быстрые
алгоритмы для вычисления по модулям специального вида, например,
по модулю N = 2Ч + с, с € Z, q € N, или по модулям Прота, имеющим
вид N = k ¦ 2" + с.
Ряд методов возведения в степень элементов конечных групп и спо-
способов записи и представления показателей описан в [ , § 14.6, 14.7].
Теперь опишем еще один алгоритм Монтгомери, который при за-
заданном /VeN и заданных а\, ..., OjeZ находит 6[...,^eZ такие,
что uibi= I (mod /V), i= 1, ..., k. Этот алгоритм описан в [ , гл. 10];
он может применяться в алгоритме факторизации целых чисел с помо-
помощью эллиптических кривых, см. гл. 4. С его помощью можно работать
одновременно с несколькими кривыми.
§ 10.4. Некоторые алгоритмы модулярной арифметики 273
Алгоритм.
1 шаг. Присвоить с\ := а\ и для 1 = 2, ..., k
a :=c,-_i • щ (mod N).
2 шаг. С помощью обобщенного алгоритма Евклида или одной
из его модификаций (см. Приложение) найти и, d, v такие, что
uck + vN=d = HOR{ck,N).
3 шаг. Для I = k, k — 1, ..., 2 сделать следующее:
1) bi :=ucj_i (mod N);
2) выдать bi\
3) и :=ищ (mod N).
Полученное значение и — искомая величина.
Конец алгоритма.
Обоснуем правильность работы алгоритма в предположении,
что (a,-, N)=\, i= \, ..., k, т.е. на 2 шаге алгоритма d=\. Оче-
Очевидно, что Ci = a\...a,i, l=\,...,k. Поэтому после 2 шага и =
= {а\ ...ak)~l (mod N). Тогда на 3 шаге при i = k bh = a^{ (mod N),
и затем и= {а\ ...a,k-i)~l (mod N). Теперь очевидно, что и для всех I,
1 <г<й, bt = a~l {modN).
Ряд алгоритмов для вычисления в конечных полях и кольцах вы-
вычетов был предложен By, см. [ ; ; ; ]. В частности, в ра-
работе [ ] предложено развитие метода Монтгомери для умножения
и возведения в степень в полях GFBm), а в работе [ ] рассмат-
рассматривается приведение по Монтгомери для модулей специального вида,
например, N = 2" - 2т - 1, 0 < т < "^-.
18 О. Н. Василенко
Глава П. Решение систем линейных
уравнений над конечными полями
§ 11.1. Введение
В этой главе мы рассмотрим некоторые алгоритмы решения си-
систем линейных уравнений над конечными полями. Как мы видели
в гл. 3 и 5, такие системы возникают в алгоритмах факторизации
и дискретного логарифмирования, использующих факторные базы.
В алгоритмах факторизации это разреженные системы линейных урав-
уравнений над полем Z/2Z. В алгоритмах дискретного логарифмирования
по простому модулю р это системы линейных уравнений над кольцом
вычетов Ъ/{р — 1)Z, однако их решение сводится к решению систем
линейных уравнений над конечным простым полем. Действительно,
пусть
N
^2aijXj= bi (mod/?- 1), i=\,...,M, A1.1)
— система уравнений относительно неизвестных х\, ..., Хм, кото-
t
рую мы хотим решить. Если р — 1 = YI Я^ есть разложение р — 1
k=i
на простые множители, то по китайской теореме об остатках решение
системы A1.1) сводится к решению систем
N
Y.a4xi= bi (mod О- /= L ¦¦¦>M> I11-2)
для k=\, ..., t, т.е. к нахождению х-} (mod qakk). Представим для
фиксированного k неизвестные значения X/ (mod qakk) в виде
(п-3)
где 0<Х//<^—1, 1 = 0, 1, ..., ак — 1. Редуцируя систему A1.2)
§ 11.2. Решение систем линейных уравнений в целых числах 275
к модулю qu, мы получим систему линейных уравнений
N
Y^= bj (mod qk), j=\, ..., M, A1.4)
над конечным простым полем Z/g^Z. Если мы найдем все Xjq,
/'= 1, ..., N, то, подставляя X/ в виде A1.3) с известными хю в систе-
систему A1.2), редуцируя ее к модулю q\ и затем поделив на qk, мы получим
систему линейных уравнений над полем Z/g^Z относительно неизвест-
неизвестных Xji, ] = 1, ..., N, и так далее. В конечном счете, найдя значение
Xj (mod qlh) для всех k, мы найдем х-} (mod p — 1) по китайской теореме
об остатках.
Далее в этой главе мы рассмотрим методы решения систем ли-
линейных уравнений, наиболее часто используемые в современных ал-
алгоритмах факторизации и дискретного логарифмирования. Кроме того,
в § 11.2 мы опишем методы решения систем линейных уравнений в це-
целых числах.
§ 11.2. Решение систем линейных уравнений
в целых числах
В этом параграфе мы рассмотрим два алгоритма решения систем
линейных уравнений над кольцом целых чисел. По сути эти алгоритмы
являются обобщениями алгоритма Евклида.
Сначала рассмотрим случай, когда система состоит из одного урав-
уравнения
... + а„х„ = d, (П-5)
где а\, ..., а„, d € Z. Мы хотим описать алгоритм нахождения всех ре-
решений A1.5) в целых числах xi, ..., х„. Для этого составим матрицу
А =
О ... 1
размера (п+ 1) х п, у которой в первой строке стоят коэффициенты
а\, ..., ап, а под ними единичная матрица. За один проход алгоритма
мы выполняем следующие действия.
1) Выбираем в первой строке матрицы А наименьший по абсолютной
величине ненулевой элемент щ.
2) Выбираем номер /' ФI такой, что а/ Ф 0.
18*
276 Гл. 11. Решение систем линейных уравнений над конечными полями
3) Делим с остатком: at = qai + r, 0 < г < \щ .
4) Вычитаем из /'-го столбца матрицы А г'-й столбец, умноженный
на q.
В результате этих действий получится новая матрица А, у которой
на месте элемента а, появится либо 0 (если г = 0), либо элемент, кото-
который будет меньше модуля самого маленького по абсолютной величине
ненулевого элемента первой строки у предыдущей матрицы А.
Очевидно, что после нескольких проходов алгоритма (т. е. несколь-
нескольких выполнений действий 1—4), исходная матрица А превратится
в матрицу
0 ... 0 X 0 ... 0 ^ @ ... X ... 0\
СЦ ... CliS_l Си Cl,s+1 ••• С 1„
С
I
A1.6)
\Cfil ... Cfi^s—l Cns Cfi,s-\-l ¦¦¦ Cn
где X, сц € Z, X^O. Если \\d, то система A1.5) не имеет решений в це-
целых числах. Если же X\d, то общее решение системы A1.5) в целых
числах имеет вид
— IС 1 ~т~ ¦ ¦ ¦ ~т~ ^5 1 S 1 ~Г ^~ S ~Г ^S4~ I S-|-l ~Г ¦ ¦ ¦ "Т" *"fitsfi) ух I . I )
где t\, ..., /s_i, /s+i, ..., /„ пробегают все целые числа, а векторы
с\, ..., сп обозначают столбцы матрицы С из A1.6).
Докажем, что формула A1.7) действительно дает все решения си-
системы A1.5) в целых числах. Очевидно, что в результате одного прохода
алгоритма (т. е. выполнения действий 1—4) матрица А переходит в мат-
матрицу ADjj, где у матрицы D-ц размера п х п на диагонали стоят единицы,
элемент в г'-й строке и /-м столбце равен —q, а все остальные эле-
элементы равны 0. Матрица Оц является целочисленной с определителем
detZ)(y = 1; значит, обратная матрица Djj1 также целочисленная. Запи-
Запишем уравнение A1.5) в векторном виде:
Тогда
§ 11.2. Решение систем линейных уравнений в целых числах
277
Рассмотрим новые переменные
= Д7'
\Уп
'XI
\Хп
Относительно этих переменных получим уравнение а[у\ +... + а'пу„ = Ь,
где (а\, ..., а'п) = (а\, ..., ап)Оц. Значения у\, ..., уп являются цело-
целочисленными тогда и только тогда, когда х\, ..., х„ € Z.
Если мы выполнили k проходов алгоритма для значений индек-
индексов i\, /1, i2, /2, • • •, ik, Ik, то пришли к системе уравнений относительно
неизвестных z\, ..., zn,
Если при этом первая строка матрицы А стала равной
(О, ...,0, X, 0, ...,0) = (au...,an)Dhh...Dith,
то система уравнений примет вид
Xzi=b. A1.8)
Если \\Ь, то решений нет, а если X | Ь, то общее решение A1.8) имеет
вид (zu ..., zn)= (tu ..., /s_i, -, /s+i, ..., /„), где tu ..., /„ пробега-
ют все целые числа. Тогда
Ь/\
4+1
\tn )
Осталось лишь заметить, что матрица С из A1.6) равна Д-ь/-, ... Д-а,/4,
поскольку с остальными строками исходной матрицы А мы делали те же
действия, что и с первой строкой, т. е. единичная (п х я)-подматрица
матрицы А последовательно умножалась на А,/,, A2/2> •••, At/*-
278
Гл. 11. Решение систем линейных уравнений над конечными полями
Теперь рассмотрим произвольную систему линейных уравнений
A1.9)
ат\х\
amnxn = bm,
где a.jj, b[ € Z. Опишем алгоритм нахождения всех решений A1.9) в це-
целых числах. Составим матрицу А размера т х п и матрицу В размера
(т + п) х (п + 1), в которой под матрицей А стоит единичная матрица
размера п х п:
A =
an ¦¦¦ a\n
\dm{ ... amnj
В =
A ...
-bm
1 ... 0 0
\0 ... 1 0 /
С первыми п столбцами матрицы В можно производить следующие дей-
действия:
1) переставлять их;
2) вычитать из одного столбца другой, умноженный на целое число.
Также можно переставлять какие-либо из первых т строк матрицы В.
С помощью этих действий мы преобразуем матрицу В к частично-
треугольному виду
/ МЦ
«21
О
«22
О
о
о
о
о
-ь\ \
О -Ь'
«41
«? + 1,1
«ml
uk2
«fc + 1,2
«m2
С12
Ukk
¦¦¦ Uk+l,k
Itmk
... clk
0
0
0
... 0
... 0
... 0
••• С1„
~b'k
-Ь'ш
-Kn
0
\ Cn\
С„2
Cnk
)
A1.10)
при некотором k^l, k < min(m, n), и и\\ ^0, ..., Ukk^O. (Элементы
b\, ..., b'm — перестановка элементов b\, ..., bm, которая получилась,
когда мы переставляли первые т строк матрицы В.) Для того что-
чтобы привести В к виду A1.10), надо сначала в первой строке В (без
§ 11.2. Решение систем линейных уравнений в целых числах
279
последнего элемента —Ь\) обнулить все элементы, кроме одного (как
в предыдущем алгоритме), и потом столбец, содержащий этот нену-
ненулевой элемент, поставить на первое место. Затем так же поступить
со второй строкой получившейся матрицы (не затрагивая ее первый
столбец) и т. д.
После того как матрица В\ вида A1.10) построена, мы преобразуем
ее к виду
/ МЦ
«21
о
«22
о
о
о
о
0\
о
Ukl
«?+1,1
U ml
Cll
Ukl ••
«?+1,2 ••
«m2
Cll ¦¦
Ukk
¦ Uk+l,k
Umm
¦ С ik
0
0
0
С1Л+1
... 0
... 0
... 0
... hn
\ Сп\
С„2
Cnk cn,k+l
Inn)
A1.11)
Для этого мы умножаем первые k столбцов матрицы В\ на целые числа
и прибавляем их к последнему столбцу. Точнее, сначала мы прибавля-
прибавляем первый столбец B<i, умноженный на число Ь[/иц, которое должно
быть целым, к последнему столбцу и получаем ноль в первом элемен-
элементе (я+1)-го столбца. Затем с помощью второго столбца и элемен-
элемента «22 мы получаем ноль во втором элементе (п+ 1)-го столбца и так
далее.
Если такой переход от матрицы A1.10) к матрице A1.11) указанным
способом невозможен, то система A1.9) не имеет решений в целых
числах. Если же мы нашли матрицу В% из A1.11), то общее решение
системы A1.9) в целых числах имеет вид
где t\, ..., tn-k пробегают все множество целых чисел.
Обоснование данного алгоритма решения системы A1.9) аналогич-
аналогично обоснованию алгоритма решения A1.5); мы предлагаем читателю
придумать это обоснование самостоятельно.
280 Гл. 11. Решение систем линейных уравнений над конечными полями
§ 11.3. Гауссово и структурированное гауссово
исключение
Пусть К — произвольное поле. Рассмотрим систему линейных урав-
уравнений
п
]Г aijXj = bi, i=\,...,m A1.12)
/=i
над полем К. Общеизвестным методом решения этой системы являет-
является гауссово исключение, т. е. приведение системы к треугольному виду.
Сложность этого метода составляет 0(тп2) арифметических операций
в поле К. С помощью приведения к треугольному виду можно также
вычислять определитель квадратной матрицы размера п х п за О(п3)
арифметических операций, находить обратную матрицу, находить ядро
и образ линейного отображения конечномерных линейных пространств.
Мы не приводим здесь соответствующие алгоритмы ввиду их очевидно-
очевидности и общеизвестности. При желании эти алгоритмы можно найти в [ ;
; , гл. 2].
Применительно к решению систем линейных уравнений, возникаю-
возникающих в алгоритмах дискретного логарифмирования, был разработан ме-
метод структурированного гауссова исключения, см. [ ; ; ].
Этот метод применяется в случае, когда матрица системы уравнений
является разреженной. Суть его заключается в следующем. Столбцы
матрицы коэффициентов системы уравнений разбиваются на «легкие»
(содержащие мало ненулевых элементов) и «тяжелые». Неизвестные X/,
соответствующие «легким» столбцам, мы также называем «легкими»,
а соответствующие «тяжелым» — «тяжелыми» неизвестными. Строки
матрицы (соответствующие линейным уравнениям) мы также разделяем
на 2 категории: на «легкую» и «тяжелую» часть матрицы. Первоначаль-
Первоначально в «легкую» часть матрицы мы относим все те уравнения, которые
содержат какую-либо из переменных, встречающихся только в одном
из уравнений системы (это означает, что такая переменная с помощью
данного уравнения однозначно выражается через остальные). Столбец,
соответствующий такой переменной, содержит лишь один ненулевой
элемент; мы объявляем его «легким».
Далее, возьмем какой-либо из столбцов, не являющихся «легки-
«легкими», но такой, что в нем все же мало ненулевых элементов. При этом
столбец выбирается так, чтобы одна из строк, содержащих его нену-
ненулевые элементы, содержала нули почти во всех других столбцах. То-
Тогда, вычитая строки матрицы, умноженные на подходящие числа, мы
§11.4. Алгоритм Ланцоша 281
можем сделать так, чтобы в этом столбце все элементы, за исключени-
исключением одного, соответствующего выбранной строке, стали равными нулю.
После этого данный столбец станет «легким», и соответствующая его
ненулевому элементу строка также объявляется «легкой». Другие же
столбцы в большинстве своем не утяжелятся ввиду выбора строки, ко-
которую мы вычитали из других. Переносим эту строку в «легкую» часть
матрицы. Так мы получим еще несколько «легких» столбцов. Одна-
Однако, поскольку мы вычитали строки матрицы, в ней появится некоторое
количество новых ненулевых элементов. То есть матрица станет менее
разреженной, чем была ранее. Тогда мы некоторые строки переносим
в «тяжелую» часть матрицы. Эти строки мы выбираем так, чтобы они
имели наибольшее количество ненулевых элементов в наиболее разре-
разреженных столбцах. В результате перенесения строк в «тяжелую» часть
эти столбцы станут еще более разреженными в «легкой» части матри-
матрицы. Тогда мы сделаем некоторые из них «легкими» (описанным выше
способом, т. е. вычитанием строк), и так далее.
Через некоторое время в нашей системе линейных уравнений вы-
выделится подматрица, матрица которой уже не является разреженной,
и переменные этой подсистемы являются «тяжелыми» (т. е. «тяжелы-
«тяжелыми» являются соответствующие им столбцы). Тогда мы решим эту си-
систему каким-нибудь способом (например, гауссовым исключением или
с помощью алгоритма Ланцоша). Найдя значения «тяжелых» перемен-
переменных, мы затем с помощью «легкой» части матрицы найдем и «легкие»
переменные.
Такова приблизительная схема метода структурированного гауссова
исключения. Эффективность ее реализации во многом зависит от ква-
квалификации программиста.
Структурированное гауссово исключение применялось не только
в алгоритмах дискретного логарифмирования, но и при факторизации
методом решета числового поля, см. [ ; ].
§ 11.4. Алгоритм Ланцоша
Алгоритм Ланцоша впервые был описан в работе [ ]. Впослед-
Впоследствии этот алгоритм был модифицирован таким образом, чтобы приме-
применяться для решения систем линейных уравнений, возникающих в алго-
алгоритмах факторизации и дискретного логарифмирования, см. [ ; ;
]. В работе [ ] описан блочный алгоритм Ланцоша, который яв-
является эффективным при решении линейных систем над полем GFB).
282 Гл. 11. Решение систем линейных уравнений над конечными полями
В работе [ ] описана модификация алгоритма Ланцоша, допускаю-
допускающая распараллеливание.
Пусть К — поле, А — матрица размера я х я над К, b — я-мерный
вектор, 6^0. Мы хотим решить систему линейных уравнений
Ах = Ь. A1.13)
Предположим дополнительно, что матрица А — симметричная, а век-
вектор 6 удовлетворяет условию b АЬ ф 0. Рассмотрим последователь-
последовательность Крылова 5, состоящую из я-мерных векторов sq, Si, S2, ¦¦¦, где
so = 6, Sj = Alb = Asi-u /=1,2,... (П.14)
Лемма 11.1. Пусть т € N, sq, ...,sm_i—линейно независимы
над К, a so,...,sm — линейно зависимы. Тогда любой элемент
из множества S линейно выражается через sq, ..., sm_i.
rn-l
Доказательство. Поскольку sm = Yj ajsj> гДе aj € К, то в си-
/=о
т-2 т-1
лу A1.14) получаем, что sm+i =Asm = J2 a/*/+i+am-i J2 а/«/-Даль-
/=o /=o
нейшие рассуждения очевидны. П
Везде далее параметр т — из условия леммы 11.1. „
Рассмотрим стандартное скалярное произведение (х, у) = ^х,-г/,-,
где х= (х\, ..., х„), у = (г/ь ..., у„). Для векторов х и у положим
(х, у)А = (х, Ау) = хТАу = (Ах, у) € К;
выражение (х, у)д мы также будем называть скалярным произведением
векторов.
Попробуем ортогонализировать последовательность Крылова отно-
относительно скалярного произведения (х, у)д методом Грама—Шмидта,
т.е. найти последовательность векторов ш>о, ^ь ш>2, •••, удовлетворя-
удовлетворяющую условию
(Wi,Wj)A=0 при 1ф\ A1.15)
и такую, что
Щ = so,
A1.16)
§ 11.4. Алгоритм Ланцоша 283
где а,у € К. При этом, если i >/' и (ш>,-, ш>у)л ^ 0> т0 коэффициент а,у мы
будем определять с помощью равенства
(Wi, Wj)A = (Si, Wj)A - OLij(Wj, Wj)A = 0.
Процесс ортогонализации можно продолжать до тех пор, пока мы
не дойдем до номера k такого, что
(wk,wk)A = 0. A1.17)
Лемма 11.2. В процессе ортогонализации при некотором k < га
будет выполнено равенство A1.17).
Доказательство. В силу A1.16) векторы sq,...,si выража-
выражаются через векторы Wq,...,Wi с помощью треугольной матрицы,
на диагонали которой стоят единицы. Поэтому векторы w§, ..., Wi
линейно независимы тогда и только тогда, когда sq,...,Si линей-
линейно независимы. Предположим, что мы нашли векторы Wo,...,wm,
т.е. при k<m равенство A1.17) не выполняется.Следовательно, век-
векторы щ>о, •••, ш>т-1 линейно независимы, a Wo,...,wm зависимы,
т-\
и поэтому wm = J2 CiWi, с,- € К. Но отсюда в силу ортогональности
(=0
0 = (wm, Wi) = q, I = 0, ..., га — 1, т. е. wm = 0. ?
Лемма 11.3. Пусть процесс ортогонализации закончился век-
вектором wh. Если wh = 0, то k = га; если же wh ф 0, то k < га.
Доказательство. Из доказательства леммы 11.2 следует, что при
k < га вектор Wk не может быть равен нулю, так как so, ..., Sk линейно
независимы. Поэтому, если Wk = 0, то k = га. Если же k = га, то wm = 0
(см. доказательство леммы 11.2). ?
Вернемся к системе уравнений A1.13). Предположим, что ее реше-
решение имеет при некотором г ^ 0 вид
г
x = J2dWi, CiGK. A1.18)
(=0
г
Так как Ax=Y^ CiAwi = b, то
(=0
При (wi, Wi)A^0 мы получим, что Ci = (Wi, b)/(Wi, Wi)A. Теперь мы
284 Гл. 11. Решение систем линейных уравнений над конечными полями
можем предположить, что решение A1.13) имеет вид
х = Урш. (Ц.19)
^ (Wj, Wj) V '
(=0
Лемма 11.4. Пусть процесс ортогонализации завершился при
k = т, при этом были построены линейно независимые векторы
Wo, ..., wm-i, a wm = 0. Тогда формула A1.19) при г = т— 1 дает
решение A1.13).
Доказательство. Для вектора дс из A1.19) выполняются равенства
т — \ . .,
(wit Ах) = ]Г („)л (о»/, Awj) = (Wi,b), i = 0,...,m-l.
Поэтому вектор Ах — Ь ортогонален (относительно стандартного ска-
скалярного произведения) векторам wo, ¦¦¦, tvm-i, и, значит, ортогонален
линейному пространству fl = L0(,(S). Так как АП С П, то для любого
w € ft выполнено равенство
(Aw,Ax-b) = 0. A1.20)
Поскольку 6 = soefi и Ах^п, то вектор Ах — b= Yl, \Wi, X,-е К.
(=0
Из A1.20) и симметричности матрицы А следует, что
/ т—1 ч т—\
0= (Awh ^XiwA =^2Xi(wh Wi)A = \j{Wj, Wj)A, / = 0, ..., m- 1.
^ 1=0 ' i=0
Поэтому Xo =... = Xm_i = 0, Ax = b, что и требовалось доказать. ?
Замечание 11.5. Если в процессе ортогонализации последователь-
последовательности Крылова мы получим нулевой вектор, то найдем решение системы
уравнений A1.13).
Алгоритм Ланцоша основан на некоторой модификации процес-
процесса ортогонализации A1.16). Рассмотрим последовательность векторов
w'o, w[, ..., удовлетворяющую равенствам
w'0 = s0 = b,
w[ = Aw'o - aiow'o,
A1.21)
§ 11.4. Алгоритм Ланцоша 285
(где a'ij € К) и являющуюся ортогональной, т. е.
(w'hw'j)A=0 при 1ф\. A1.22)
Коэффициенты а!ц находятся по формуле
Ч (W' w')A '
при условии, что (w'j, w'j)а ф 0.
Лемма 11.6. Если для номера i векторы ш>,- и w't определены,
rno w\ = Wi.
Доказательство. Для i = 0 выполняется равенство w'o = sq = Wq.
Предположим, что w\ = ш>,- при всех i < /, и пусть Wt+\ и w't+l опреде-
t
лены. Тогда w't+l=Awt— J2a't+ijwi- Поскольку векторы щ>,- удовле-
/=о
творяют A1.16) и Si = Alb, то Awt = At+lb-A\YJ^tilWi] =At+lb-
V/=o /
~Yjaawi ПРИ некоторых а", € К. Следовательно, w't+l=At+lb —
1=0
t
— Y, a'/+i i®i- Для вектора t«/+i из A1.16) выполняется аналогичное ра-
1=0
t t
венство wt+i = At+lb — J2 <*t+i №i- Тогда вектор w't+l — wt+i =
i=o ' i=o
(где C/ € К) по предположению индукции ортогонален векторам Wq
( \
..., Wt- Значит, 0= ^2$iWi, Wj =р/-(ш)/-, Wj)a =0 при / = 0, ..., /.
\/=о /л
Так как (t«/, Wj)a ф 0, то Ру = 0, /' = 0, ..., /, и w't+l = Wt+i. ?
Из A1.21), A1.22) и леммы 11.6 получим, что если векторы щ>,- и w\
определены, то формула A1.23) может быть записана в виде
(П.24)
4 (Wj,Wj)A
Следовательно, при /' ^ i — 1 выполнено равенство
, (Wj_ 1, Awj)a (Wi-1, W/+1 + Jl'i=o a
4 (Wj, Wj)a (tW;, W;)/j
286 Гл. 11. Решение систем линейных уравнений над конечными полями
Отсюда при /' + 1 < I — 1 следует, что а'^ = 0. Это означает, что форму-
формула A1.21) имеет вид
Wi = AWi-l -. г—Wi-l -. ~. г—Wi-2, A1./О)
т. е. содержит лишь три слагаемых в правой части. Поэтому вычис-
вычисления по ней проводятся быстрее, чем непосредственно по форму-
формулам A1.16).
Алгоритм Ланцоша работает следующим образом. Мы вычисляем
последовательность векторов Wo = b, W\, w%, ..., пользуясь формула-
формулами A1.21), A1.23), A1.25) (в предположении, что выполнены условия
леммы 11.6). Если на некотором шаге будет построен вектор щ>,- ф 0
такой, что (Wi, Wi)a =0, то мы не сможем найти решение A1.13) этим
методом. Если же будет построен вектор wm = 0, то решение х мы
находим по формуле A1.19) при г=т—\. При этом следует сде-
сделать проверку, поскольку мы предполагаем выполнение некоторых
условий.
В алгоритмах факторизации и дискретного логарифмирования мат-
матрица Л системы A1.13) не является симметричной (и даже квадратной).
В этом случае предлагается случайным образом выбрать диагональную
матрицу D и рассмотреть систему уравнений
ATD2Ax = ATD2b. A1.26)
Ее матрица ATD2A = (DAIDA будет квадратной и симметрич-
симметричной, и к системе A1.26) мы затем применяем алгоритм Ланцоша.
Если алгоритм закончится неудачей либо найденный вектор х
не будет решением A1.13), то следует выбрать другую мат-
матрицу D.
Однородная система Ах = 0 может быть преобразована в неодно-
неоднородную в предположении, что в ее решении (xi, ..., х„) последняя ко-
координата х„ т^О. Положив тогда х„ = 1, мы сможем перенести столбец
соответствующих х„ коэффициентов в правую часть и затем применить
алгоритм Ланцоша.
Дальнейшее обсуждение деталей реализации алгоритма Ланцоша
можно найти в прекрасной диссертации [ ].
Заметим, что последние рекорды в области дискретного логариф-
логарифмирования в простых полях были достигнуты с помощью алгоритма
Ланцоша (см. выше гл. 5).
§11.5. Алгоритм Видемана 287
§ 11.5. Алгоритм Видемана
В этом параграфе мы опишем алгоритм Видемана [ ] для решения
системы линейных уравнений
Ах = Ь, 6^0, A1.27)
над конечным полем К = GF(q). Матрица А предполагается раз-
разреженной; да обозначает число ненулевых элементов А. Мы будем
считать, что А квадратная размера п х п и невырожденная; рассмот-
рассмотрение других случаев, а также алгоритм вычисления определителя
матрицы можно найти в работе [ ]. Полученные Видеманом оцен-
оценки сложности алгоритмов являются наилучшими из известных, и их
применение позволяет улучшать оценки сложности в других алгорит-
алгоритмах, использующих методы решения линейных систем. В частности,
описываемый ниже алгоритм 2 является детерминированным и тре-
требует O(n(w + n\ogn\og\ogn)) операций поля. Заметим, что первое
время после появления работы [ ] алгоритмы Видемана считались
непрактичными и полезными лишь для получения наилучших оценок
сложности. Однако в последние годы алгоритмы были реализованы
на компьютере и использовались, например, для разложения много-
многочленов на множители над конечными полями, см. [ ]. Появились
различные модификации, в частности, блочный алгоритм Видемана,
см. [ ; ; ; ; ].
Вернемся к решению системы A1.27). Матрица А задает невы-
невырожденное линейное отображение (которое мы также обозначаем А)
на пространстве К". Рассмотрим пространство 5, порожденное мно-
множеством векторов {A'b\i = O, 1, 2, ...}, и положим А$ = А\$—линей-
А\$—линейное отображение 5 на 5. Обозначим f(z) € K[z] — минимальный мно-
многочлен As, т. е. ненулевой многочлен наименьшей степени, такой, что
f{A$) — нулевое отображение 5. Мы считаем f(z) нормализованным
таким образом, что его свободный член равен 1. Заметим, что если
g(z) € K[z], то g(As) — нулевое отображение 5 тогда и только тогда,
когда g(A)b = O. Кроме того, f(z) делит многочлен det(z/n —А), и по-
поэтому deg/(z) <я.
Обозначим d = deg/(z), f(z) = J2f[i]zl, где f[i] e IK — коэффициенты
(=0
f(z). Если мы сможем найти f(z), то найдем и решение системы A1.27):
так как f(A)b = 0 и /[0] = 1, то
d
^-lb. A1.28)
288 Гл. 11. Решение систем линейных уравнений над конечными полями
Пусть и — какой-либо фиксированный вектор из К"; (•, •) — стан-
стандартное билинейное отображение К" в К,
п
((VI, ..., Vn), (Wl, ..., Wn)) = y^ViWi.
(=1
Поскольку f(A)b = О, то последовательность
(и,А1Ь), 1 = 0, 1,2, ... A1.29)
удовлетворяет линейному рекуррентному соотношению, характеристи-
характеристический многочлен которого равен f(z). Пусть fu(z) —минимальный мно-
многочлен для последовательности A1.29) (т.е. характеристический мно-
многочлен самого короткого рекуррентного соотношения). Тогда fu \ f(z).
Действительно, если мы разделим с остатком
f{z) = q{z)fu{z) + r{z), degr(z) < deg/«(z),
то из равенств
О = (и, f(A)b) = (и, q(A)fu(A)b) + (и, r(A)b),
{u,fu{A)A>b) = 0, / = 0,1,2,...,
и минимальности /u(z) будет следовать, что r(z)=0. Поскольку сво-
свободный член f(z) равен 1, мы можем считать, что и свободный член /„
равен 1.
Минимальный многочлен /u(z) для последовательности A1.29) мо-
может быть вычислен с помощью алгоритма Берлекзмпа—Месси (см. [ ;
, гл. 2; ]) по первым 2я ее членам. Поэтому возможен следую-
следующий метод решения A1.27): выбрать случайный вектор и, построить
fu(z) и в предположении, что f(z) =fu(z), найти х по формуле A1.28).
Согласно [ ], мы этим путем с достаточно высокой вероятностью
найдем решение системы A1.27).
Рассмотрим другой подход к решению A1.27). Пусть &о = 6,
f\(z)=fUx(z) для некоторого вектора и\. Если вектор &i =f[(A)bo ра-
равен 0, то мы находим х по формуле A1.28) (так как тогда f\(z) = f(z)).
Если же &i7^0, то повторяем процедуру, т.е. выбираем случайный
вектор «2 и строим минимальный многочлен /2B) = fU2{z) для последо-
последовательности («2, A'bi). Если &2 = f2{A)bi =0, то (как будет показано
ниже) f(z) = f\(z)f2{z) и мы находим решение х по формуле A1.28),
иначе выбираем «з и т. д.
§11.5. Алгоритм Видемана 289
Покажем, что если мы сделали k итераций, то /i(z) ...fk{z) де-
делит f(z). Действительно, выше было показано, что f\(z)\f(z). Да-
Далее, если мы предположим, что f\(z)... fk-\{z) делит f(z), то по-
поскольку fk{z) — минимальный многочлен для последовательности
{(«,, Albk_i)}i = {(«*,/*_!(A)...f{{A)Aib)}h а многочлен /(f
ее аннулирует, то fk(z)
что и требовалось дока-
^ ,
зать.
Теперь очевидно, что если bh = fk(A)...Д(A)b = О, то f(x) = fi(x)...
...fk(x). Следовательно, как только будет построен нулевой вектор
bk = fk(A)bk-\, мы сможем найти решение A1.27) по формуле A1.28).
Формализуем сказанное в виде алгоритма 1. Для произвольного
многочлена g(z) € K[z] мы будем обозначать g(z) = ^-^—^-Л
Алгоритм 1.
1 шаг. Присвоить 60 := 6, k := 0, у0 := 0, do := 0.
2 шаг. Если bh = 0, то решение A1.27) равно х= —yk, и алгоритм
завершает работу.
3 шаг. Выбрать случайный вектор Uk+i € К", Uk+i ф 0.
4 шаг. Вычислить первые 2(я — dk) членов последовательности
5 шаг. С помощью алгоритма Берлекзмпа—Месси вычислить ми-
минимальный многочлен fk+i(z) последовательности шага 4, нормализо-
нормализованный так, чтобы его свободный член равнялся единице.
6 шаг. Присвоить
bk+l :=bo + Ayk+l,
dk+i :=dk + deg fk+i(z).
7 шаг. Присвоить k := k + 1 и вернуться на 2 шаг.
Конец алгоритма.
Приведем обоснование корректности алгоритма. Заметим, что
f{z) = — соответствует правой части формулы A1.28) (без знака
минус). При k = 0 мы выбираем и\, рассматриваем 2я членов последо-
последовательности {(«1, A'b)}j=otit... и находим f\(x) по алгоритму Берлекзм-
Берлекзмпа—Месси. Тогдау[ = /i(A)b, bl = b0 + Ayl = b + A^A\~ lЬ = Д (А)Ь,
d[ = degf[(z). Далее рассуждаем по индукции. Пусть после k проходов
19 О. Н. Василенко
290 Гл. 11. Решение систем линейных уравнений над конечными полями
алгоритма выполнены равенства
bk = fk(A)...h(A)b. A1.31)
Тогда после k + 1 прохода
h(A)...f{(A)-\ fk+l(A)-l , (Mh Jk+i(.A)...h(.A)-l
-д °H -д lk\A) ¦¦¦11\Л)О— ^ 0,
To есть формулы A1.30) и A1.31) сохраняются. Корректность алгорит-
алгоритма 1 следует теперь из сказанного выше перед его описанием.
Теперь опишем детерминированный алгоритм.
Алгоритм 2.
1 шаг. Вычислить A'b, i = 0, 1, ..., 2я — 1.
2 шаг. Присвоить k :=0, go{z) := 1.
3 шаг. Присвоить Uk+i '¦= @, ..., 0, 1, 0, ..., 0) (единица стоит
на (k+ 1)-м месте).
4 шаг. Используя результаты 1 -го шага, вычислить последователь-
последовательность
{иш,А1Ь), < = 0, 1 2л- 1.
5 шаг. Вычислить последовательность
(иа+ь gk{A)Alb), i = 0, ..., 2л- 1 -deg gk(z)
(здесь можно использовать дискретное преобразование Фурье,
см. [ ]).
6 шаг. Найти (с помощью алгоритма Берлекзмпа—Месси) ми-
минимальный многочлен fk+i(z) для последовательности, полученной
на 5-м шаге (свободный член /j,+i(z) равен 1).
7 шаг. Присвоить gk+i(z) :=fk+i(z)gk(z).
8 шаг. Присвоить k:=k+\. Если deggk(z) < n и k<n, то идти
на 3 шаг.
9 шаг. Для многочлена f(z) = gk (z) с помощью найденных на 1 шаге
значений A'b найти решение х системы A1.27) по формуле A1.28).
Конец алгоритма.
Обоснуем корректность алгоритма 2. Заметим, что фактически алго-
алгоритм 2 работает так же, как алгоритм 1, только векторы tik выбираются
§11.6. Другие методы. Заключение 291
не случайно, а идет перебор единичных векторов @, ..., 0, 1, 0, ..., 0).
Легко видеть, что gh{z)=fh{z)...fi(z), где fk(z) — минимальный мно-
многочлен для последовательности
(uft) fk_i(A)...fi(A)Alb), i = 0,...,2n-\-deg(fk_l(z)... fY(z)).
Пусть алгоритм закончил работу при некотором значении параметра k.
Рассмотрим сначала случай k < п и deggk(z) = п. Так как deg/(z) < п
и gk(z) | f(z), то gk(z) =f(z). Следовательно, на 9 шаге действительно
будет найдено решение A1.27).
Теперь предположим, что k = n. Поскольку мы перебрали все еди-
единичные векторы «1, ..., «„, то вектор gn(A)b ортогонален и\, ..., ип
(очевидно по построению). Следовательно, gn(A)b = 0. Так как
gn(z)\f(z) и f(z) — минимальный, то gk{z) =f{z). Поэтому и в дан-
данном случае алгоритм 2 работает корректно.
На этом мы закончим описание алгоритмов Видемана. Получение
оценок сложности для них можно найти в работе [ ].
§ 11.6. Другие методы. Заключение
Обзор методов решения систем линейных уравнений примени-
применительно к алгоритмам факторизации и дискретного логарифмирования
содержится в работе [ ]. Отметим, в частности метод сопряженных
градиентов (см. [ ; ]), работающий, согласно [ ], пример-
примерно столько же времени, сколько и алгоритм Ланцоша. Оба эти
алгоритма используют сравнительно небольшое пространство па-
памяти.
Другие методы решения линейных систем основаны на алгоритмах
быстрого умножения матриц, таких, как алгоритмы Штрассена и Коп-
персмита—Винограда (см. обзор [ ]). В работе Коновальцева [ ]
предложен алгоритм решения квадратной системы линейных уравне-
уравнений с п неизвестными над полем GF(q) за О(п3/ log^ n) арифметических
операций. Бриллхарт [ ] предложил алгоритм решения линейных си-
систем над GFB), являющийся, по сути, некоторой вариацией гауссова
исключения; см. также [ ].
Обсуждение возможностей применения различных методов решения
систем линейных уравнений в алгоритмах факторизации и дискретно-
дискретного логарифмирования можно найти в недавних обзорах [ ] и [ ].
В последние годы предпочтение все же отдается методу Ланцоша (воз-
(возможно, в сочетании со структурированным гауссовым исключением для
получения более плотной матрицы подсистемы).
19*
Приложение. Сведения из теории чисел
В данном Приложении мы приводим основные определения и факты
из элементарной теории чисел, наиболее часто используемые в кни-
книге. Доказательства теорем можно найти в [ ]. Также мы описываем
ряд усовершенствований алгоритма Евклида; их обоснование см. в [ ,
гл. 4.5.2; , гл. 4; , гл. 1].
Начнем с алгоритма Евклида. Пусть а € Z, b € N, и мы хотим най-
найти d = НОД(а, Ь). Разделим а на Ь с остатком: а = цф + го, 0 < го < Ь.
Если г0 >0, то разделим b на r0: b = q\r§ + г\, 0< г\ < г0, и т.д. По-
Получим последовательность равенств с убывающими остатками rf.
rH2 = qirj-i+rj, / = 0,1,2..., A)
где r_2 = a, r_i = Ь. Если г^ —последний ненулевой остаток, то r^-i =
= qk+\rh. Тогда справедливо равенство й!=НОД(а, b) = rh. Вычисле-
Вычисление последовательности A) и есть алгоритм Евклида.
Теперь найдем представление d = гкв виде d = au + bv, где и, v € Z.
Мы можем последовательно выражать г^ из A), поднимаясь снизу
вверх: сначала через rk-\ и гк-ч из предпоследнего равенства в A); за-
затем, подставив rk-\ = гк-ъ — qk-\rk-2, мы выразим rk через гк-ч и гк-ъ,
и так далее. В конце мы выразим rk через а и Ь.
Однако более удобен обобщенный алгоритм Евклида. В нем мы
работаем с системой равенств
ia + V2b = V3, B)
На 1 шаге полагаем
(ui,u2,u3):=(l,0,a), (vlt v2, v3) := @, 1, b), (tlt t2, t3) := @, 0, 0).
Затем при очередном проходе алгоритма мы проверяем условие из = 0.
Если оно выполнено, то искомые значения d, и, v равны м3, «ь «2
соответственно. Если же из ф 0, то производим деление с остатком:
Приложение 293
и3 = qv3 + г. Затем присваиваем:
(ti, h, t3):=(vu v2, v3),
(vi, V2, v3):={ui -qvi, u2 -qv2, u3-qv3),
(mi, u2, u3):={ti, t2, t3).
Поскольку значение из € Z^o монотонно убывает, то алгоритм закан-
заканчивает работу и выдает верный ответ. Заметим, что с переменными
и2, f2> h можно не работать, поскольку их значения однозначно вос-
восстанавливаются по «i, «з, V\, v3, t\, t3 соответственно.
Теорема 1 (Ламе). Параметр k в формуле A) удовлетворяет
неравенству
*<5([log10ft] + l).
Следствие 2. Для выполнения алгоритма Евклида и обобщен-
обобщенного алгоритма Евклида требуется O(\ogb) арифметических
операций.
Замечание 3. В алгоритме Евклида можно использовать деление
с выбором наименьшего по абсолютной величине остатка: при каждом
делении какого-либо целого числа а' на какое-либо натуральное чис-
число Ь' мы находим q', г' € Z такие, что а' = q'b' + г', 0 < \r'\ < b'/2. Это
ускоряет работу алгоритма Евклида.
Теперь перейдем к сравнениям.
Определение 4. Пусть а, Ь € Z, т ? N. Мы говорим, что а сравни-
сравнимо с b по модулю т (и обозначаем это а = b (mod m)), если т\а — b,
или, эквивалентно, а и b имеют одинаковые остатки от деления на т;
или, эквивалентно, а = b + rnt, где / € Z.
Если т фиксировано, то Z разбивается на классы 0, 1, ..., т — 1
чисел, имеющих остатки 0, 1, ..., т— 1 от деления на т. Эти клас-
классы вычетов образуют Z/mZ— кольцо вычетов по модулю т. Для а € Z
символом a (mod rri) мы обозначаем класс вычетов по модулю т, содер-
содержащий а. Обратимые по умножению элементы Z/mZ образуют муль-
мультипликативную группу (Z/mZ)*. Число a€Z является элементом об-
обратимого по умножению класса вычетов по модулю т тогда и только
тогда, когда разрешимо уравнение
ах= 1 (mod т). C)
Уравнение C) разрешимо тогда и только тогда, когда (а, т) = 1. Реше-
Решение C) можно найти с помощью обобщенного алгоритма Евклида: мы
находим и, v € Z такие, что аи + mv = 1, и тогда a (mod m)u (mod т) =
= 1 (mod m), т. е. м = a (mod m).
294 Приложение
Полной системой вычетов по модулю т мы называем какой-
либо набор целых чисел а\, ..., ат, попарно не сравнимых по моду-
модулю т. Приведенной системой вычетов по модулю т мы называем
какой-либо набор целых чисел Ь\, ..., bh, где k= |(Z/mZ)*|, попарно
не сравнимых по модулю т и взаимно простых с т.
Теперь определим функцию Эйлера ср(ш): если т € N, то ср(т) =
= |(Z/mZ)*|. Эквивалентно, ср(т) равна количеству чисел в набо-
наборе {0, 1, ..., т — 1}, взаимно простых с т. В частности, срA)=1,
<р(р) = /7—1, где р — простое число. Справедлива следующая формула
k
для нахождения ср(ш): если т = П pf — разложение т на простые
/=1
k
множители, то ср(ш) = т П A — 1//?/).
/=1
Теорема 5 (Эйлер). ?а/ш (а, т) = 1, гао
Теорема 6 (малая теорема Ферма). Если р — простое число, р
не делит а, то
ар~1 = 1 (mod p).
Теорема 7 (китайская теорема об остатках). Рассмотрим си-
систему сравнений
''х = а\ (mod
D)
' = пи (mod rrik),
где (mi, rrij) = 1 при всех 1ф]. Положим М = гщ ...mk; Mi = М/гщ,
1=\, ..., k. Найдем (с помощью обобщенного алгоритма Евклида)
числа Ь\, ..., bk такие, что Mjbi= I (mod гщ), 1=\, ..., k. Тогда
общее решение системы D) в целых числах имеет вид
и
х = У^ Miuibi (mod M),
k ~
т. е. х = ^Miuibi + Mt, где t € Z.
Теперь рассмотрим группу (Z/mZ)*. Она является циклической то-
тогда и только тогда, когда т = 1, 2, 4, pk, 2pk, где р обозначает нечетное
простое число, k € N. Число g € Z такое, что класс вычетов g (mod m)
является образующим (Z/mZ)* (в случае, когда эта группа — цикличе-
циклическая), называется первообразным корнем по модулю т.
Приложение 295
Теорема 8. Пусть р — простое число, р>2.
k
1) Пусть р — 1 = П q"*' есть разложение р — 1 на простые мно-
/=1
жители. Число g является первообразным корнем по модулю р
тогда и только тогда, когда
(g,p) = l, ^)/<7' Ф 1 (mod p), j=\,...,k.
2) Пусть g — первообразный корень по модулю р, число g\
равно тому из чисел g или g + p, которое удовлетворяет сравне-
сравнению хр~1 ф 1 (mod p2). Тогда gi является первообразным корнем
по модулю р2.
3) Если число g2 является первообразным корнем по модулю р2,
то g2 является первообразным корнем по модулю рк для всех
/e€N.
Теорема 9. Справедливо равенство (Z/4Z)* = C (mod 4))г. Да-
Далее, при k ^ 3 имеем
(Z/2*Z)* = (-1 (mod 2*)J x E (mod 2*)J*-2
есть разложение (Z/2*Z)* в прямое произведение циклических
групп.
Если т = 2а°р"' ...p\k есть разложение т на простые множители,
то можно указать полную систему образующих группы (Z/mZ)*, зная
первообразные корни по модулям /?"'', I = 1, ..., k (см. [ , гл.6]).
Если g — первообразный корень по модулю т, а^Ъ, (а, т) = 1,
то решение уравнения gx = a (mod m) называется индексом элемента а
по основанию g или дискретным логарифмом а по основанию g и обо-
обозначается indga или logga. Эта величина определена по модулю ср(га),
т.е., indgaeZ/{p(m)Z.
Пусть т е Z. Числовым характером по модулю т называется
отображение х : Z —>• С со следующими свойствами:
1) Х(п) =0 тогда и только тогда, когда (т, п) > 1;
2) х(« + т) = х(п) для всех п е Z;
3) x(«i«2)=x(«i)x(«2) для всех щ, п2 € Z.
По сути х является характером группы (Z/mZ)*, естественным образом
продолженным на все множество Z.
Теперь рассмотрим символы Лежандра и Якоби.
Пусть р — простое число, р > 2. Пусть a e Z, (a, /?) = 1. Число а
называется квадратичным вычетом по модулю р, если уравнение
х2 = a (mod p) E)
296 Приложение
разрешимо; иначе оно называется квадратичным невычетом. Сим-
Символ Лежандра (-) (где а € Z) равен +1, если а — квадратичный вычет
по модулю р\ I — ) = — 1, если а — квадратичный невычет; 1-1 =0, если
а = 0 (mod p).
Символ Лежандра обладает следующими свойствами:
1) критерий Эйлера:
) = а^~^ (mod p);
2) если а = b (mod р), то (-) = (-);
5) B)=(_1
6) квадратичный закон взаимности Гаусса: если /?, g — нечет-
нечетные простые числа, р ф q, то
Если m e N, т — нечетное составное число и т = П Р,"' есть Раз~
/=1
ложение т на простые множители, то для а € Z символ Якоби {—
определяется равенством
/=1
Свойства символа Якоби:
1) если а = b (mod т), то ( — ) = ( — );
' \т) \т)
mJ \m
5) если тип — натуральные взаимно простые нечетные числа, то
\т
Приложение 297
Нетрудно написать алгоритмы для вычисления символов Лежанд-
ра и Якоби, основываясь на их свойствах. Эти алгоритмы приведены,
например, в [ , гл. 1].
Пусть т €N, f(x) €Z[x]. Если мы хотим решить уравнение f(x) =
= 0 (mod т), то с помощью китайской теоремы об остатках мы можем
свести нашу задачу к уравнению f(x) = 0 (mod ра), где р — простое
число, aeN (это называется редукцией). Если мы знаем решение а
уравнения f(x) = 0 (mod ра), то можем построить решение а,\ уравнения
f(x) = O (mod pa+l) (это — подъем решения). О редукции и подъеме
решения см. [ , гл. 4]. Наиболее известные методы решения уравнений
f(x) = 0 (mod p) мы описали в гл. 6 нашей книги.
Теперь приведем определения и факты из теории непрерывных
(или цепных) дробей, см., например, [ ; ]. Пусть n€Z^0, ao€Z,
а\, ..., а„ € N. п-членной непрерывной дробью [uq; а\, ..., ап] на-
называется рациональное число
[а0; аь ..., а„] =ао-\ = .
1
«2 + p
an
В частности, 0-членная непрерывная дробь [а^; ] = ао — это просто це-
целое число.
Теорема 10. Любое рациональное число аф\ представи-
мо в виде а=[ао\ ai, ..., а„] при некоторых я е Z^o, ao€Z,
ai, ..., an&N. Это представление единственно, если считать,
что ап > 1.
Замечание 11. Число a = 1 = [ 1; ] = [0; 1 ] разложимо двумя спосо-
способами, и в каждом разложении последний элемент равен 1. Если аф 1,
а= [ао; а\, ..., ап], где ап € N, ап > 1, то а также представимо в ви-
виде a=[a0; а\, ..., а„ - 1, 1].
Подходящие дроби к а= [а^, а\, ..., а„] имеют вид Pk/Qk =
= [ао; п[, ..., ak], k = 0, I, ..., я, причем pk e Z, qk e N, (pk, qk)=\.
Для удобства положим р_\ = 1, q_\ = 0. Тогда справедливы соотноше-
соотношения
\ +Pk-2, qk = akqk-i+qk-2 при k
которые позволяют быстро вычислять подходящие дроби.
298 Приложение
Подходящие дроби к числу а обладают следующими свойствами:
3) подходящие дроби с четными номерами возрастают, с нечетны-
нечетными — убывают;
4) любая подходящая дробь с четным номером меньше любой под-
подходящей дроби с нечетным номером;
5) 1=,
6)
7)
Рк
а — —
Як
<^<4:
Як+1Як
_Ок±2_
Як+2Як '
Если ао € Z, а\, а,2, • •• € N, то бесконечной непрерывной дробью
[ао; а\, п2, ¦¦¦] называется предел
а=[а0; аь а2, ¦¦¦]= lim [а0; аь ..., а„]. F)
п—>оо
Дроби pn/qn = [ao; ai, ..., а„] называются подходящими дробями
к бесконечной непрерывной дроби. Они обладают теми же свойствами,
что и подходящие дроби к конечной непрерывной дроби; в частности,
легко видеть, что предел F) существует.
Теорема 12. Любое действительное иррациональное число а
единственным образом представимо в виде бесконечной непре-
непрерывной дроби а= [ао; а\, ач ...].
Замечание 13. Разложение числа а € К в непрерывную дробь мож-
можно получить с помощью следующего алгоритма. Пусть а=[а] + {а}.
Положим ао = [а], г\ = 1/{а}, а = ао + 1/л • Затем г\ = [г\ ] + —г-—г- =
= а\ + 1// и так далее. После (k + 1)-го вычисления целой части и пе-
переворачивания дробной части получим
а =
• •• + ¦
Гк
Если а = a/b € Q, то этот процесс эквивалентен алгоритму Евклида для
чисел а и Ь. Если же а € K\Q, то этот процесс будет бесконечным.
Для некоторых иррациональных чисел разложение в непрерывную
дробь периодично: дробь а= [ао; а\, ..., аи-\, аи, •••, at+т] —пери-
—периодическая, если аи, ¦¦¦, at+т периодически повторяются. Например,
V5=[2; 4] = [2; 4, 4, 4, ...].
Приложение 299
Теорема 14 (Эйлер—Лагранж). Число a eK\Q раскладывает-
раскладывается в периодическую непрерывную дробь тогда и только тогда,
когда а является квадратичной иррациональностью, т. е. кор-
корнем уравнения ах2 + Ьх + с = О, где а € N, Ь, с € Z.
Теперь мы опишем несколько модификаций алгоритма Евклида
и обобщенного алгоритма Евклида. В этих алгоритмах мы стремимся
к экономии операций деления, поскольку деление целых чисел много-
многократной точности отнимает много времени. Деление же на 2 по сути
не является делением, а всего лишь сдвигом двоичной записи числа
в машинном представлении.
Бинарный алгоритм.
На входе алгоритма заданы числа a, b € N, а ^ Ь. На выхо-
выходе d = НОД(а, Ь).
1 шаг. Присвоить г остаток от деления а на Ь. Затем а:=Ь,Ь := г.
2 шаг. Если Ь = 0, то выдать а и закончить работу. Иначе k := О,
и затем, пока а и b оба четные, выполнять:
G)
(После этого 2к идет в НОД(а, Ь), оставшаяся часть НОД будет нечет-
нечетной.)
3 шаг. Сейчас по крайней мере одно из чисел а и b нечетно. Если а
четное, то делать присвоения а := а/2 до тех пор, пока а не станет
нечетным. То же для Ь.
4 шаг. Сейчас а и b оба нечетны. Присвоить t := (a — b)/2. Если
/ = 0, то выдать 2ка и закончить работу.
5 шаг. До тех пор, пока / четное, делать / := t/2.
6 шаг. Сейчас / нечетное, / ф 0. Если / > 0, то а := t. Если / < 0,
то b := —t. Идти на 4 шаг.
Конец алгоритма.
Замечание 15. Анализ сложности алгоритма см. в [ , гл. 4.5.2].
Алгоритм Лемера.
На входе и, v € N, и ^ v (и, v — целые числа многократной точно-
точности). На выходе d = HOJX(u, v). Вспомогательные переменные: t,w —
многократной точности, и, v, А, В, С, D, T, q — однократной точно-
точности, р-значные. То есть длина записи числа, не превосходящая р,
считается однократной точностью; запись числа — в системе счисления
с основанием b € N.
300 Приложение
1 шаг. (Начальная установка.)
1) Если v — однократной точности (в частности, и = 0), то приме-
применяем алгоритм Евклида к и и v и находим d, после чего заканчиваем
работу.
2) Если запись и в системе счисления с основанием b занима-
занимает k\ порций по р разрядов, а запись v — k<i порций по р разрядов,
и k\ > &2, то выполняем одно деление многократной точности с остат-
остатком u = tv + w, и затем присваиваем u:=v, v := w. (Эвристически по-
после этого и и v будут примерно одинаковой величины.)
3) В и заносим число, записываемое р старшими цифрами и; то же
для v и v. Затем
А:=\, В:=0, С:=0, D:=\.
2 шаг. (Проверка окончания.) Сейчас й^О, v^O, u^v. Если
й^О, но й + А = 0 или и + В = 0 (это возможно, поскольку данные
переменные — однократной точности; например, если й = Ьр — \,А=\,
то и + А = 0), то перейти на 4 шаг. Аналогично, если х)фО, нои + С = 0
„ п . ,. \й+Ал
или v + и = 0, то также перейти на 4 шаг. Иначе находим а := -—-^ .
Iv + Ci
„ , Гм + Bl „ ,
Если q ф -—— , то перейти на 4 шаг.
3 шаг. Выполняем вычисления:
Если v = 0, перейти на 4 шаг. Иначе перейти на 2 шаг.
4 шаг. Если В = 0, то произвести деление многократной точности
с остатком и на и: u = wv + t, 0 < / < v — 1. Затем u:=v, v := /, и пе-
перейти на 1-й шаг. Если же В ф 0, то вычислить с помощью арифметики
многократной точности
t:=Au + Bv, w:=Cu + Dv,
затем присвоить u:=t, v := w. Перейти на 1 шаг.
Конец алгоритма.
Обобщенный бинарный алгоритм.
На входе алгоритма заданы a, b € N, а ^ Ь. На выходе d =
= НОД(а, Ь) € N и числа и, v € Z такие, что au + bv = d. Используют-
Используются вспомогательные переменные многократной точности v\, из, t\, /3
и две булевы переменные Д, /2.
Приложение 301
1 шаг. (Одноразовое уменьшение размера.) Если а < Ь, то поменять
местами а и b и присвоить Д := 1. Иначе Д := 0. Если b = 0, то выдать
(м, и, d) = A, 0, а) при Д =0, и (и, v, d) = @, 1, а) при Д = 1; закон-
закончить работу. Иначе поделить с остатком а = bq + г, 0 ^ г < Ь, и присво-
присвоить а:= b, b := г.
2 шаг. (Вычисление степеней двойки.) Если b = 0, то выдать
(и, v, d) = @, 1, а) при Д=0, (м, и, d) = A, 0, а) при Д = 1 и за-
закончить работу. Иначе k := 0, и до тех пор, пока а и b оба четные,
выполнять:
3 шаг. (Инициализация.) Если b четно, то поменять местами а и b
и присвоить /г := 1. Иначе /г := 0. Далее,
м:=1, d:=a, t»i := 0, и3 := 6.
Если а нечетно, то Д:=0, t^:=—b, и перейти на 5 шаг. Иначе
*i:=(ft + l)/2,*3:=a/2.
4 шаг (Удаление лишних двоек.) Если ts четно, то присвоить
jt3:=t3/2, tr.= ti/2, если t{ четно,
\ h := /з/2, Д := (Д + ft)/2, если Д нечетно,
и вернуться на 4 шаг.
5 шаг. (Петля.) Если /з>0, то м:=Д, d:=h\ иначе Ui := 6 — Д,
6 шаг. (Вычитание.) Присвоить
Если Д <0, то Д := Д + Ь. Если /3 т^0> т0 перейти на 4-й шаг.
7 шаг. (Окончание.) Присвоить v:=(d — au)/b, d:=2kd. Если
^2=1, то поменять и и v местами. Присвоить u:=u — vq. Выдать
(u, v, d) при Д = 1, (и, и, d) при Д =0.
Конец алгоритма.
Мы закончим наше Приложение описанием двух методов возведе-
возведения в степень. Пусть G — какая-либо мультипликативная группа, g&G,
яеЕ Мы хотим найти h = g"GG. Пусть п = bk2k +bk-i2k~l +...
... + b[2 + 60 есть двоичное представление п, т.е. 6,- € {0; 1}, bk = 1.
302 Приложение
1 способ. Сначала находим элементы hj = g2'', / = 0, 1, ..., k; при
этом ho = g, hj+\ := hj ¦ hj. Затем находим
h= п к
j: bj=l
Для нахождения h этим способом требуется не более чем 2k + 1 =
= O(logn) операций умножения в группе G.
2 способ. Находим последовательно
ft. = gbk2<-l+bk-l2<-4...+bk4+lt j=it2,...,k+l.
В начале hi =g = gbk. Далее, если мы уже нашли hj, то hj+i :=hj ¦ hj,
если bk-j = O; hj+i := hj ¦ hj ¦ g, если bk-j=l. В конце hk+i=h = gn.
Здесь также нужно О (log я) операций умножения в группе G.
Преимущество второго способа перед первым заключается в сле-
следующем. Пусть мы хотим найти 510000 € Z. Степени 52' быстро растут.
В первом способе мы возводим в квадрат и затем перемножаем боль-
большие числа. Во втором способе при нахождении hj+i мы перемножаем
большие числа hj ¦ hj, но домножаем на g = 5 (при bk-j = 1), т. е. на ма-
маленькое число. В этом заключается существенная экономия.
Описанные способы называются бинарными методами возведе-
возведения в степень.
Литература
[1] Акритас А. Основы компьютерной алгебры с приложениями.
М.: Мир, 1994.
[2] Алексеев В. Б. Сложность умножения матриц. Обзор // Кибер-
нетич. сборн. 1988. Вып. 25. С. 189—236.
[3] Алферов А. П., Зубов А.Ю., Кузьмин А. С, Черёмушкин А.В.
Основы криптографии. М.: Гелиос АРВ, 2002. 2-е изд.
[4] Анохин М.И., Варновский Н.П., Сидельников В.М., Ящен-
ко В. В. Криптография в банковском деле. М.: МИФИ, 1997.
[5] Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вы-
вычислительных алгоритмов. М.: Мир, 1979.
[6] Березин И. С, Жидков Н.П. Методы вычислений. Т. 1. М.: На-
Наука, 1966.
[7] Берлекэмп Э. Алгебраическая теория кодирования. М.: Мир,
1971.
[8] Боревич 3. И., Шафаревич И. Р. Теория чисел. М.: Наука, 1985.
[9] Ван дер Варден Б. Л. Алгебра. М.: Наука, 1976.
[10] Василенко О.Н. Современные способы проверки простоты чи-
чисел. Обзор // Кибернетич. сборн. 1988. Вып. 25. С. 162—188.
[11] Василенко О.Н. Некоторые алгоритмы построения больших
простых чисел // Вестн. Моск. ун-та. Сер. 1. Матем. Механ.
1997. №5. С. 62—64.
[12] Василенко О.Н. О некоторых свойствах чисел Ферма // Вестн.
Моск. ун-та. Сер. 1. Матем. Механ. 1998. №5. С. 56—58.
[13] Василенко О.Н. Об алгоритме Миллера—Рабина // Вестн.
Моск. ун-та. Сер. 1. Матем. Механ. 2000. №2. С. 41—42.
[14] Василенко О.Н. О дискретном логарифмировании в некоторых
группах // Вестн. Моск. ун-та. Сер. 1. Матем. Механ. 2000. №5.
С. 53—55.
[15] Василенко О.Н. О дискретном логарифмировании по состав-
составному модулю И IV Международная конференция «Современные
проблемы теории чисел и ее приложения». Тула, 10—15 сентяб-
сентября, 2001 / Тезисы докладов. С. 35—36.
[16] Василенко О.Н. Об одном применении тригонометрических
сумм для проверки простоты чисел Ц Вестн. Моск. ун-та. Сер.
1. Матем. Механ. 2001. №5. С. 49—51.
304 Литература
[17] Василенко О.Н. Применение круговых полей в криптосистемах
RSA И IV Международная конференция «Современные пробле-
проблемы теории чисел и ее приложения». Тула, 10-15 сентября, 2001 /
Тезисы докладов. С 36—37.
[18] Виноградов И.М. Основы теории чисел. М.: Наука, 1972.
[19] Гантмахер Ф.Р. Теория матриц. М., 1954.
[20] Гашков СБ. Упрощенное обоснование вероятностного теста
Миллера-Рабина для проверки простоты чисел // Дискретная
математика. 1998. Т. 10 D). С. 35—38.
[21] Григорьев Д. Ю. Разложение многочленов над конечным полем
и решение систем алгебраических уравнений // Зап. науч. семин.
ЛОМИ АН СССР. 1984. № 137. С. 20-79.
[22] ДэвенпортДж., Сирэ И., ТурньеЭ. Компьютерная алгебра. М.:
Мир, 1991.
[23] Карацуба А. А., Офман Ю.П. Умножение многозначных чисел
на автоматах //ДАН СССР. 1961. Т. 145 B). С. 293—294.
[24] Касселс Дж. Введение в геометрию чисел. М.: Мир, 1965.
[25] Кнут Д. Искусство программирования. Т. 2. Получисленные ал-
алгоритмы. Вильяме: М.—СПб.—Киев, 2000. 3-е издание.
[26] Коновальцев И. В. Об одном алгоритме решения систем линеных
уравнений в конечных полях // Проблемы кибернетики. 1967.
Вып. 19. С. 269—274.
[27] Кострикин А. И. Введение в алгебру. М.: Наука, 1977.
[28] Лемеш А.Н. О Х-низких числах // Тезисы докл. 12 междунар.
конф. «Проблемы теоретической кибернетики». Часть II. Ниж.
Новг., 1999. С. 135.
[29] Ленг С. Введение в теорию диофантовых приближений. М.: Мир,
1970.
[30] Ленг С. Эллиптические функции. М.: Наука, 1984.
[31] ЛидлР., Нидеррайтер Г. Конечные поля. Т. 1, 2. М.: Мир, 1988.
[32] Матюхин Д. В. Об асимптотической сложности дискретного ло-
логарифмирования в поле GF(p) I/ Дискретная математика. 2002.
Т. 15 A). С. 28—49.
[33] Матюхин Д. В., Мурашов Н.Н. Модификация метода реше-
решета числового поля для дискретного логарифмирования в поле
GF{p) I/ Обозр. прикл. и промышл. матем. 2000. Т. 7 B).
С. 387—389,
[34] Нечаев В. И. Сложность дискретного логарифма // Научные тру-
труды МГПУ 1994. С. 46-49.
Литература 305
[35] Нечаев В. И. К вопросу о сложности детерминированного алго-
алгоритма для дискретного логарифма // Мат. заметки. 1994. Т. 55 B).
С. 91 —101.
[36] Нечаев В. И. Элементы криптографии. М.: Высшая школа, 1999.
[37] Ноден П., Кцтте К- Алгебраическая алгоритмика. М.: Мир,
1999.
[38] Панкратьев Е.В. Компьютерная алгебра. Факторизация мно-
многочленов. М.: Изд-во МГУ, 1988.
[39] Тоом А. Л. О сложности схемы из функциональных элемен-
элементов, реализующей умножение целых чисел //ДАН СССР. 1963.
Т. 150 C). С. 496—498.
[40] Уильяме X. Проверка чисел на простоту с помощью вычисли-
вычислительных машин // Кибернетич. сборн. 1986. Вып. 23. С. 51—99.
[41] Хинчин А.Я. Цепные дроби. М.: Наука, 1978.
[42] Чебышев П. Л. Полное собрание сочинений. Т. 1. Теория чисел.
Изд-во АН СССР, 1946.
[43] Чистов А.Л. Алгоритм полиномиальной сложности для раз-
разложения многочленов и нахождения компонент многообразия в
субзкепоненциальное время // Зап. науч. семин. ЛОМИ АН
СССР. 1984. №137. С. 124—188.
[44] Adleman L. A subexponential algorithm for the discrete logarithm
problem with applications to cryptography // Proc. 20th Ann. IEEE
Symp. Found. Comput. Sci. 1979. P. 55—60.
[45] Adleman L. The function field sieve // Proceedings of ANTS-I.
1994. (Lect. Notes in Comput. Sci.; V. 877). P. 108—121.
[46] Adleman L., Pomerance C, Rumely R. S. On distinguishing prime
numbers from composite numbers // Ann. Math. 1983. V. 117.
P. 173—206.
[47] Adleman L., Huang M.-D.A. Primality testing and abelian varietes
over finite fields. 1992. (Lect. Notes in Math.; V. 1512).
[48] Adleman L., McCurley K- Open problems in number theoretic
complexity // Proceedings of ANTS-I. 1994. (Lect. Notes in
Comput. Sci.; V. 877). P. 291—322.
[49] Adleman L.M., Manders K-, Miller G.L. On taking roots in
finite fields // Proc. 18th Ann. Symp. Found. Comput. Sci. 1977.
p. 175—178.
[50] Agrawal M., Kayal N., Saxena N. PRIMES is in P. Preprint,
August 2002.
[51 ] Alford W. R., Granville A., Pomerance C. There are infinitely many
Carmichael numbers // Ann. Math. 1994. V. 140. P. 703—722.
20 О. Н. Василенко
306 Литература
[52] Alford W.R., Granville A., Pomerance С On the difficulty of
finding reliable witnesses (invited talk) // Proceedings of ANTS-
I. 1994. (Lect. Notes in Comput. Sci.; V. 877). P. 1 — 16.
[53] Alt H. Square rooting is as difficult as multiplication // Computing.
1979. V. 21. P. 221—232.
[54] Ankeny N. C. The least quadratic non-residue // Ann. Math. 1952.
V. 55. P. 65—72.
[55] Apostol T.M. Introduction to analytic number theory. Springer-
Verlag, 1997.
[56] At kin A.O.L., Morain F. Elliptic curves and primality proving //
Math. Сотр. 1993. V. 61 B03). P. 29—67.
[57] At kin A. 0. L., Morain F. Finding suitable curves for elliptic method
of factoring // Math. Сотр. 1993. V. 60 B01). P. 399—405.
[58] Atkins D., Graff M., Lenstra /L/C, Leyland P.С The magic
words are squeamish ossifrage // Advances in cryptology —
ASIACRYPT'94 (Wollongong, 1994). 1995. (Lecture Notes in
Computer Science; V. 917). P. 263—277.
[59] Bach E., Shallit J. Factoring with cyclotomic polynomials // Math.
Сотр. 1989. V. 52 A85). P. 201—219.
[60] Bach E., Shallit J. Algorithmic number theory. V. 1. MIT Press,
1996.
[61] Baker R.C., Harman G. The Brun—Titchmarsh theorem on
average // Proc. Conf. in Honour of Heini Halberstam. V. 1. 1996.
P. 39—103.
[62] Ben-Or M. Probabilistic algorithms in finite fields // Proc. 22nd
Ann. IEEE Symp. Found. Comput. Sci. 1981. P. 394—398.
[63] Berlekamp E.R. Factoring polynomials over finite fields // Bell
System Tech. J. 1967. V. 46. P. 1853—1859.
[64] Bernstein D. J. Detecting perfect powers in essentially linear time //
Math. Сотр. 1998. V. 67 B23). P. 1253—1283.
[65] Blake I.F., Seroussi G., Smart N.P. Elliptic curves in
cryptography. Cambridge University Press, 1999.
[66] Boender H., te Riele H.J.J. Factoring integers with large prime
variations of the quadratic sieve / CWI Report NM-R9513. 1995.
[67] Borodin А. В., Munro I. The computational complexity of algebraic
and numeric problems. N. Y.: American Elsevier, 1975.
[68] Bosnia W., van der Hulst M.P. Faster primality testing (extended
abstract) // Advances in Cryptology — EuroCrypt'89 / Jean-
Jacques Quisquater and Joos Vandewalle, editors. Berlin: Springer-
Verlag, 1989. (Lect. Notes in Comput. Sci.; V. 434). P. 652—656.
Литература 307
[69] Bosselaerts A., Govaerts R., Vandewalle J. Comparison of
three modular reduction functions // Advances in Cryptology —
Crypto'93 / Douglas R. Stinson, editor. Berlin: Springer-Verlag,
1993. (Lect. Notes in Comput. Sci.; V. 773). P. 175—186.
[70] Brassard G., Monet S., Zuffelato D. Algorithmes pour
l'arithmetique des tres grands entiers // Techniques and Science
Informatique. 1986. V. 5. P. 89—102.
[71] Brent R.P. An improved Monte Carlo factorization algorithm //
BIT. 1980. V. 20. P. 176—184.
[72] Brent R.P. Some integer factorization algorithms using elliptic
curves // Austral. Comput. Sci. Comm. 1986. V. 8. P. 149—163.
[73] Brent R.P. Factorization of the tenth Fermat number // Math.
Сотр. 1999. V. 68. P. 429—451.
[74] Brent R.P. Some parallel algorithms for integer factorisation //
Lect. Notes in Comput. Sci. 1999. V. 1685. P. 1—22.
[75] Brent R.P., Pollard J.M. Factorization of the eighth Fermat
number// Math. Сотр. 1981. V. 36. P. 627—630.
[76] Brentjes A.J. Multidimensional continued fraction algorithms.
Amsterdam, 1981. (Mathematical Centre Tracts; V. 145).
[77] Bressoud D. M. Factorization and primality testing. Springer-
Verlag, 1989.
[78] Brillhart J. A note on finding depencensies over GFB) // Utilitas
Math. 1989. V. 36. P. 211—213.
[79] Brillhart J., Morrison M.A. A method of factoring and the
factorization of F7 // Math. Сотр. 1975. V. 29. P. 183—205.
[80] Brillhart J., Tonascia J., Weinberger P. On the Fermat quotient //
Computers in number theory. London, N. Y.: Acad. Press, 1971.
P. 213—222.
[81] Buchberger В., Winkler F. Grobner bases and applications.
Cambridge Univ. Press, 1998. (London Math. Soc. Lecture Notes
Series; V. 251).
[82] Buchmann J., Jacobson M.J., Teske E. On some computational
problems in finite abelian groups // Math. Сотр. 1997. V. 66 B20).
P. 1663—1687.
[83] Buchmann /., Weber D. Discrete logarithms: Recent progress //
Proc. Internat Conf. on Coding Theory, Cryptography and Related
Areas, Guanajuato. Springer-Verlag, 2000. P. 42—56.
[84] Buell D.A. Binary quadratic forms: classical theory and modern
computations. Springer-Verlag, 1989.
20*
308 Литература
[85] Cantor D. G., Zassenhaus H. A new algorithm for factoring
polynomials over finite fields // Math. Сотр. 1981. V. 36.
P. 587—592.
[86] Caron T.R., Silverman R.D. Parallel implementation of the
quadratic sieve. J. Supercomputing. 1988. V. 1. P. 273—290.
[87] Cavallar S., Dodson В., Lenstra A.K-, Leyland P.C.,
Lioen W.M., Montgomery P.L., Murphy В., te Riele H.J.J.,
Zimmerman P. Factorization of RSA-140 using the number field
sieve / CWI Report MAS-R9925, September 1999.
[88] Cavallar S., Lioen W.M., te Riele H.J.J., Dodson В.,
Lenstra A.K-, Montgomery P.L., Murphy B. et al. Factorization
of 512-bit RSA-modulus / CWI Report MAS-R0007, February
2000.
[89] Cohen H. A course in computational algebraic number theory.
Springer-Verlag, 1993.
[90] Cohen H., Lenstra H. W. Primality testing and Jacobi sums //
Math. Сотр. 1984. V. 42 A65). P. 297—330.
[91] Comba P.G. Experiments in fast multiplication of integers /
Technical Report G320-2158, IBM, Cambridge Scientific Center,
February 1989.
[92] Comba P. G. Exponentiation cryptosystems on IBM PC // IBM
Systems J. 1990. V. 29 D). P. 29—37.
[93] Contini S. Factoring integers with the self initializing quadratic
sieve / Master's thesis. Univ. Georgia, 1997.
[94] Cook S.A. On the minimum computation time of functions /
Doctoral thesis. Harvard University, Cambridge, Mass., 1966.
[95] Coppersmith D. Fast evaluation of discrete logarithms in fields of
characteristic two. IEEE Trans // Inform. Theory. 1984. V. 30 D).
P. 587—594.
[96] Coppersmith D. Solving homogeneous linear equations over GFB)
via block Wiedemann algorithm // Math. Сотр. 1994. V. 62 B05).
P. 333—350.
[97] Coppersmith D., Odlyzko A., Schroeppel R. Discrete logarithms
in GF{p) I/ Algorithmica. 1986. V. 1. P. 1 — 15.
[98] Coppersmith D., Winograd S. On the asymptotic complexity of
matrix multiplication // SIAM J. Comput. 1982. V. 11. P. 472—492.
[99] Couvreur C, Quisquater J.J. An introduction to fast generation of
large primes // Philips J. Res. 1982. V. 37. P. 231—264. Errata in:
1983. V. 38. P. 77.
Литература 309
[100] Сох D., Little /, О'Shea D. Ideals, verietes and algorithms. N. Y.:
Springer-Verlag, 1992. (Undergraduate Texts in Mathematics).
[101] Crandall R., Pomerance C. Prime numbers: a computational
perspective. Springer-Verlag, 2001.
[102] de Weger B. Algorithms for Diophantine equations / Dissertation.
Centrum voor Wiskunde en Informatica, Amsterdam, 1988.
[103] Denny Т., Milller V. On the reduction of composed relations from
the number field sieve // Proceedings of ANTS-II. 1996. (Lect.
Notes in Comput. Sci.; V. 1122). P. 75—90.
[104] Denny T.F. Losen grofier dunnbesetzter Gleichungssysteme uber
endlichen Primkorpern / Dissertation. Universitat des Saarlandes,
Saarbrucken, 1997.
[105] Diaz A., Hitz M., Kaltofen E., Lobo A. Process scheduling in
DSC and the large sparce linear systems challenge // Lect. Notes
in Comput. Sci. 1993. V. 722. P. 66—80.
[106] Dixon В., Lenstra A. K. Massively parallel elliptic curve factoring //
Lect. Notes in Comput. Sci. V. 658. 1993. P. 183—193.
[107] Dodson В., Lenstra A. K- NFS with four large primes: an explosive
experiment // Advances in Cryptology — Crypto'95. 1995. (Lect.
Notes in Comput. Sci.; V. 963). P. 372—385.
[108] ElGamal T. A subexponential-time algorithm for computing
discrete logarithms over GF(p2) // IEEE Trans. Inform. Theory.
1985. V. 31. P. 473—481.
[109] ElGamal T. On computing logarithm over finite fields // Advances
in cryptology —CRYPTO'85 (Santa Barbara, Calif., 1985). 1986.
(Lect. Notes in Comput. Sci.; V. 218). P. 396—402.
[110] Elkenbracht-Huizing M. An implementation of the number field
sieve // Experimental Mathematics. 1996. V. 5. P. 231—253.
[Ill] Elkenbracht-Huizing M. A multiple polynomial general number
field sieve // Proceedings of ANTS-II. 1996. (Lect. Notes in
Comput. Sci.; V. 1122). P. 99—114.
[112] Elkenbracht-Huizing M. Factoring integers with the number field
sieve / PhD thesis. Leiden Univ., 1997.
[113] Elkies N. D. Elliptic and modular curves over finite fields and related
computaional issues // Computational perspectives in number
theory: Proc. of a Conf. in Honor of A. O. L. Atkin / J. T. Teitelbaum
and D.A.Buell, editors. 1998. (Amer. Math. Soc. Inf. Press; V. 7).
P. 21—76.
[114] Ernvall R., Metsankyla T. On the p-divisibility of Fermat
quotients // Math. Сотр. 1997. V. 66 B19). P. 1353—1365.
310 Литература
[115] Fagin B.S. Large integers multiplication on massively parallel
processors И Proc. Frontiers'90: Third Symp. on the Frontiers of
Massively Parallel Computation. IEEE Press, 1990. P. 38—42.
[116] Ferguson H. R. P. A short proof of the existence of vector Eucledian
algorithm // Proc. Amer. Math. Soc. 1986. V. 97. P. 8—10.
[117] Ferguson H.R.P. A non-inductive GL(n,2) algorithm that
constructs integral linear relations for n Z-linearly dependent real
numbers // J. Algorithms. 1987. V. 8 A). P. 131 —142.
[118] Ferguson H.R.P., Bailey D.H., Arno S. Analysis of integer relation
finding algorithm // Math. Сотр. 1999. V. 68 B25). P. 351—369.
[119] Ferguson H.R.P., Forcade R. W. Generalization of the Eucledian
algorithm for real numbers to all dimensions higher than two //
Bull. Amer. Math. Soc. (N. S.). 1979. V. 1. P. 912—914.
[120] Ferguson H.R.P., Forcade R.W. Multidimensional Eucledian
algorithms // J. Reine Angew. Math. 1982. V. 334. P. 171 — 181.
[121] Fincke U., Pohst M. Improved methods for calculating vectors of
short length in a lattice, including acomplexity analysis Ц Math.
Сотр. 1985. V. 44. P. 463—471.
[122] Fleischmann P. Connections between the algorithms of Berlekamp
and Niederraiter for factoring polynomials over ?q // Linear Algebra
and Applications. 1993. V. 192. P. 101 — 108.
[123] Fouvry E. Theoreme de Brun-Titchmarsh: application an theoreme
de Fermat // Invent. Math. 1985. V. 79. P. 383—407.
[124] Garner H. The residue number system // IRE Transactions on
Electronic Computers. 1959. V. 8. P. 140—147.
[125] Gianni P., Mora T. Algebraic solution of systems of polynomial
equations using Grobner bases // Applied algebra, algebraic
algorithms and error-correcting codes (Menorca, 1987). 1989.
(Lect. Notes in Comput. Sci.; V. 356). P. 247—257.
[126] Goldwasser S., Kilian J. Almost all primes can be quickly
certified // Proc. 18-th Ann. ACM Symp. on Theory of Computing.
1986. P. 316—329.
[127] Gordon D. Discrete logarithms in GF(p) using the number field
sieve // SIAM J. Disc. Math. 1993. V. 6. P. 124—138.
[128] Gordon D.M., McCurley K.S. Massively parallel computation
of discrete logarithms // Advances in Cryptology — Crypto'92 /
Ernest F Brickell, editor. Berlin: Springer-Verlag, 1993. (Lect.
Notes in Comput. Sci.; V. 740). P. 312—323.
Литература 311
[129] Hastad J., Just В., Lagarias J. С, Schnorr С. Р. Polynomial time
algorithms for finding integer relations among real numbers //
SIAM J. Comput. 1989. V. 18. P. 859—881.
[130] Hellman M.E., Reynerl J.M. Fast computation of discrete
logarithms in GF(q) // Advances in Cryptology — CRYPTO'82.
N. Y.: Plenum Press, 1983. P. 3—13.
[131] Herlestam Т., Johannesson R. On computing logarithms over
GFBP) I/ BIT. 1981. V. 21. P. 326—336.
[132] Hong S.M., Oh S.Y., Yoon H. New modular multiplication
algorithms for fast modular exponentiation // Lect. Notes in
Comput. Sci. 1996. V. 1070. P. 166—177.
[133] Izu Т., Kpgure J., Noro M., Yokoyama K- Efficient implementation
of Schoof's algorithm // Advances in cryptology — ASIACRYPT'98
(Beijing). 1998. (Lect. Notes in Comput. Sci.; V. 1514). P. 66—79.
[134] Joux A., Lercier R. Improvements to the general number
field sieve for discrete logarithms in prime fields. Preprint.
http://www.medicis.polytechnique.fr/~lercier.
[135] Joux A., Lercier R. Discrete logarithms in GF(p) / e-mail to the
NMBRTHRY mailing list, January 2001.
http://listserv.nodak.edu/archives/nmbrthry.html.
[136] Joux A., Lercier R. Discrete logarithms in GF(p) / e-mail to the
NMBRTHRY mailing list, April 2001.
http://listserv.nodak.edu/archives/nmbrthry.html.
[137] Kaltofen E. Polynomial factorization 1987—1991 // LATIN'92
(Sao Paulo, 1992). 1992. (Lect. Notes in Comput. Sci.; V. 583).
P. 294—313.
[138] Kaltofen E. Analysis of Coppersmith's block Wiedemann algorithm
for the parallel solution of sparce linear systems // Applied algebra,
algebraic algorithms and error-correcting codes (San Juan, PR,
1993). 1993. (Lect. Notes in Comput. Sci.; V. 673). P. 195—212.
[139] Kaltofen E., Lobo A. Factoring high-degree polynomials by the
black box Berlekamp algorithm // Proceedings of IS SAC'94. ACM
Press, 1994. P. 90—98.
[140] Kaltofen E., Sanders B.D. On Wiedemann's method of solving
sparce linear systems // Applied algebra, algebraic algorithms and
error-correcting codes (New Orleans, LA, 1991). 1991. (Lect. Notes
in Comput. Sci.; V. 539). P. 29—38.
[141] Kaltofen E., Shoup V. Fast polynomial factorization over high
algebraic extensions of finite fields // Proceedings of IS SAC'97.
ACM Press, 1997. P. 184—188.
312 Литература
[142] Kaltofen E., Shoup V. Subquadratic-time factoring of polynomials
over finite fields // Math. Сотр. 1998. V. 67 B23). P. 1179—1197.
[143] Kannan R., Lenstra A.K., Lovasz L. Polynomial factorization
and nonrandomness of bits of algebraic and some transcendental
numbers // Math. Сотр. 1988. V. 50 A81). P. 235—250.
[144] Kpblitz N. A course in number theory and cryptography. Springer-
Verlag, 1987.
[145] Kpblitz N. Elliptic curve cryptosystems// Math. Сотр. 1987. V. 48.
P. 203—209.
[146] Kpblitz N. Algebraic aspects of cryptography. Springer-Verlag,
1998.
[147] Kpnyagin S., Shparlinski I. Linear complexity of discrete
logarithm. Preprint, December 2000.
[148] Kpnyagin 5.1/., Pomerance C. On primes recognizable in
deterministic polynomial time // Algorithms and combinatorics.
Springer-Verlag, 1997. (The mathematics of Paul Erdos; V. 1).
P. 176—198.
[149] LaMacchia B. Basis reduction algorithms and subset sum
problems / Thesis. MIT Artifical Intelligence Lab., 1991.
[150] LaMacchia В., Odlyzko A. Solving large sparse linear systems
over finite fields // Advances in Cryptology —CRYPTO'90. 1990.
(Lecture Notes in Computer Science; V. 537). P. 109—133.
[151] LaMacchia B.A., Odlyzko A.M. Computation of discrete
logarithm in prime fields // Des. Codes Cryptogr. 1991. V. 1.
p. 47—62.
[152] Lambert R. Computational aspects of discrete logarithms / PhD
thesis. Univ. of Waterloo, Dept. Electrical Сотр. Eng., 1996.
[153] Lanczos C. Solution of systems of linear equations by minimized
iterations // J. Res. Nat. Bur. Standards. 1952. V. 49. P. 33—53.
[154] Lay G.-J., Zimmer H.G. Constructing elliptic curves with given
group order over large finite fields // Algorithmic number theory
(Ithaca, NY, 1994). 1994. (Lect. Notes in Comput. Sci.; V. 877).
P. 250—263.
[155] Lazard D. Resolution des systems d'equations algebraiques //
Theor. Comput. Sci. 1981. V. 15. P. 77—110.
[156] Lazard D. Ideal basis and primary decomposition: case of two
variables // J. Symb. Comput. 1985. V. 1. P. 261—270.
[157] Lazard D. Solving zero-dimensional algebraic systems // J. Symb.
Comput. 1992. V. 13. P. 117—131.
Литература 313
[158] Lehman R.S. Factoring large integers // Math. Сотр. 1974. V. 28.
P. 637—646.
[159] Lenstra A.K-, Lenstra H.W., editors. The development of the
number field sieve. 1993. (Lecture Notes in Mathematics; V. 1554).
[160] Lenstra A.K-, Lenstra H.W., Lovasz L. Factoring polynomials
with rational coefficients // Math. Ann. 1982. V. 261. P. 515—534.
[161] Lenstra A.K., Lenstra H. W., Manasse M.S., Pollard J.M. The
number field sieve // Proc. 22nd ACM Symposium on Theory of
Computing. 1990. P. 564—572.
[162] Lenstra A.K-, Lenstra H. W., Manasse M.S., Pollard J.M. The
factorization of the ninth Fermat number // Math. Сотр. 1993.
V. 61 B03). P. 319—349.
[163] Lenstra A.K-, Manasse M.S. Factoring with two large primes //
Math. Сотр. 1994. V. 63. P. 785—798.
[164] Lenstra H. W. Primality testing algorithms (after Adleman, Rumely
and Williams) // Bourbaki Seminar. V. 1980/81. 1981. (Lect. Notes
in Math.; V. 901). P. 243—257.
[165] Lenstra H.W. Divisors in residue classes // Math. Сотр. 1984.
V. 42 A65). P. 331—340.
[166] Lenstra H. W. Elliptic curves and number-theoretic algorithms //
International Congress of Mathematicians. 1986. P. 99—120.
[167] Lenstra H. W. Factoring integers with elliptic curves // Ann. Math.
1987. V. 126. P. 649—673.
[168] Lenstra H. W. Finding isomorphisms between finite fields // Math.
Сотр. 1991. V. 56 A93). P. 329—347.
[169] Lenstra H. W., Pomerance C. A rigorous time bound for factoring
integers // J. Amer. Math. Soc. 1992. V. 5 C). P. 483—516.
[170] Lerch M. Zur Theorie des Fermatischen Quotienten
———=q{a) I/ Math. Ann. 1905. V. 60. P. 471—490.
[171] Lercler R. Algorithmique des courbes dans les corps finis / These.
L'Ecole Polytechnique, Laboratoire D'lnformatique, CNRC, Paris,
1997.
[172] Li T.Y. Solving polynomial systems // Math. Intelligencer. 1987.
V. 9. P. 33—39.
[173] Lovorn Bender R. Rigorous, subexponential algorithms for discrete
logarithms in GF(p2) // SIAM J. Discrete Math., to appear.
314 Литература
[174] Lovorn Bender R., Pomerance C. Rigorous discrete logarithm
computations in finite fields via smooth polynomials //
Computational perspectives in number theory (Chicago, 1995).
Amer. Math. Soc, 1998. (AMS/IS Stud. Adv. Math.; V. 7).
P. 221—232.
[175] Massey J.L. Shift-register synthesis and BCH decoding// IEEE
Trans. Inform. Theory. 1969. V. 15. P. 122—127.
[176] McCurley K-S. The discrete logarithm problem // Cryptology and
computational number theory (Boulder, CO, 1989). Amer. Math.
Soc, 1990. (Proc. of Symp. Appl. Math.; V. 42). P. 49—74.
[177] McCurley K-S. Odds and ends from cryptology and computational
number theory // Cryptology and computational number theory
(Boulder, CO, 1989). Amer. Math. Soc, 1990. (Proc. of Symp.
Appl. Math.; V. 42). P. 145—166.
[178] McKee J. Speeding Fermat's factoring method // Math. Сотр.
1999. V. 68 B28). P. 1729—1737.
[179] Menezes A. Elliptic curve public key cryptosystems. Kluwer Acad.
Publ, 1993.
[180] Menezes A., Van Oorschot P.C., Vanstone S.A. Handbook of
applied cryptography. CRC Press, 1997.
[181] Menezes A., Qu M., Vanstone S. IEEE P1363 Standard, Part 4:
Elliptic curve systems, 1995.
[182] Menezes A.J., Vanstone S.A., Zuccherato R.J. Counting points
on elliptic curves over /> // Math. Сотр. 1993. V. 60 B01).
p. 407—420.
[183] Mlgnotte M. An inequality about factors of polynomials // Math.
Сотр. 1974. V. 28. P. 1153—1157.
[184] Mihailescu P. Cyclotomic primality proving — recent
developments // Proceedings of ANTS-III. 1998. (Lect. Notes in
Comput. Sci.; V. 1423). P. 95—110.
[185] Mihailescu P. Cyclotomy of rings and primality testing / PhD
thesis. Swiss Federal Institute of Technology, Zurich, 1998.
[186] Mihailescu P. Fast generation of provable primes using search in
arithmetic progressions. Preprint, 1998.
[187] Miller G.L. Riemann's hypothesis and tests for primality //
J. Comput. and Syst. Sci. 1976. V. 13. P. 300—317. [Перевод:
Кибернетический сборник. 1986. Вып. 23. С. 31—50.]
[188] Miller V. Use of elliptic curves in cryptography // Advances in
cryptology—CRYPTO'85 (Santa Barbara, Calif, 1985). 1986.
(Lecture Notes in Comput. Sci.; V. 218). P. 417—426.
Литература 315
[189] Miyaji A. Elliptic curves over Fp suitable for cryptosystems //
Advances in cryptology — AUSCRYPT'92 (Gold Coast, 1992).
1993. (Lect. Notes in Comput. Sci.; V. 718). P. 479—471.
[190] Monier L. Evaluation and comparision of two efficient probabilistic
primality testing algorithms // Theor. Comput. Sci. 1980. V. 12.
P. 97—108.
[191] Montgomery P.L. Modular multiplication without trial division //
Math. Сотр. 1985. V. 44 A70). P. 519—521.
[192] Montgomery P.L. Speeding the Pollard and elliptic curve methods
of factorization // Math. Сотр. 1987. V. 48 A77). P. 243—264.
[193] Montgomery P.L. A block Lanczos algorithm for finding
dependencies over GFB) // Advances in Cryptology —
EuroCrypt'95 / Louis C.Guillou and Jean-Jacques Quisquater,
editors. Berlin: Springer-Verlag, 1995. (Lect. Notes in Comput.
Sci.; V. 921). P. 106—120.
[194] Montgomery P. L., Silverman R. D. A FFT-extension to the p — 1
factoring algorithm//Math. Сотр. 1990. V. 54 A90). P. 839—854.
[195] Morain F. Atkin's test: news from the front. Preprint.
[196] Morain F. Elliptic curves, primality proving and some titanic
primes. Preprint.
[197] Morain F. Solving equations of small degree modulo large primes.
Preprint.
[198] Morain F. Distributed primality proving and the primality of
B3539 + i)/3. Preprint, 1990.
[199] Morain F. Primality proving using elliptic curves: an update //
Proceedings of ANTS-III. 1998. (Lect. Notes in Comput. Sci.;
V. 1423). P. 111 — 127.
[200] Morain F., Olivos J. Speeding up the computations on an elliptic
curve using addition-subtraction chains // Inform. Theor. et Appl.
1990. V. 24. P. 531—544.
[201] Mullen G.L., White D. A polynomial representation for logarithms
in GF(q) I/ Acta Arithm. 1986. V. 47. P. 255—261.
[202] Miiller V. Ein Algorithmus zur Bestimmung der Punktzahl
elliptischer Kurvenflber endlichen Korpern der Characteristic
grossen drei / PhD thesis, Universitat des Saarlandes, 1995.
[203] Murphy B.A. Modelling the yield of number field sieve
polynomials // Proceedings of ANTS-III. 1998. (Lect. Notes in
Comput. Sci.; V. 1423). P. 137—150.
316 Литература
[204] Murphy В.A. Polynomial selection for the number field sieve
integer factorisation algorithm / PhD thesis. Australian National
University, July 1999.
[205] Murphy B.A., Brent R.P. On quadratic polynomials for the number
field sieve//Austral. Comput. Sci. Comm. 1998. V. 20. P. 199—213.
[206] Niederreiter H. A new efficient factorization algorithm for
polynomials over small finite fields // Appl. Algebra Engrg. Comm.
Comput. 1993. V. 4. P. 81—87.
[207] Niederreiter H., Gottfert R. Factorization of polynomials over finite
fields and characteristic sequences // J. Symbolic Computation.
1993. V. 16 E). P. 401—412.
[208] Odlyzko A. Discrete logarithms and smooth polynomials //
Contemp. Math. 1994. V. 168. P. 269—278.
[209] Odlyzko A. Discrete logarithms: the past and the future // Designs,
Codes and Cryptography. 2000. V. 19. P. 129—145.
[210] Odlyzko A.M. Discrete logarithms in finite fields and their
cryptographic significance // Advances in Cryptology: Proceedings
of EuroCrypt'84 / Thomas Beth, Norbert Cot, and Ingemar
Ingemarsson, editors. Berlin: Springer-Verlag, 1984. (Lect. Notes
in Comput. Sci.; V. 209). P. 224—316.
[211] Odlyzko A.M. The future of integer factorization // CryptoBytes.
1995. V. 1 B). P. 5—12.
[212] Parkinson D., Wunderlich M. A compact algorithm for Gaussian
elimination over GFB) implemented on highly parallel computers //
Parallel Computing. 1984. V. 1. P. 65—73.
[213] Peralta R. Implementation of the hypercube multiple polynomial
sieve. Preprint.
[214] Plaisted D.A. Fast verification, testing and generation of large
primes // Theoret. Сотр. Sci. 1979. V. 9. P. 1 — 16. Errata in: 1981.
V. 14. P. 345.
[215] Pohlig S., Hellman M. An improved algorithm for computing
logarithms over GF(p) and its cryptographic significance // IEEE
Trans. Inform. Theory. 1978. V. 24. P. 106—110.
[216] Pohst M. A modification of the LLL-reduction algorithm //
J. Symb. Сотр. 1987. V. 4. P. 123—128.
[217] Pohst M., Zassenhaus H. Algorithmic algebraic number theory.
Cambridge University Press, 1989.
[218] Pollard J.M. Theorems on factorization and primality testing //
Proc. Cambridge Phil. Soc. 1974. V. 76. P. 521—528.
Литература 317
[219] Pollard J.M. A Monte Carlo method for factorization // BIT. 1975.
V. 15. P. 331—334.
[220] Pollard J.M. Monte Carlo methods for index computation
(mod p) I/ Math. Сотр. 1978. V. 32 A43). P. 918—924.
[221] Pomerance C. Analysis and comparision of some integer
factoring algorithms // Computational methods in number theory.
V. 1 / H.W. Lenstra and R.Tijdeman, editors. Amsterdam, 1982.
P. 89—139.
[222] Pomerance C. The quadratic sieve factoring algorithm // Advances
in cryptology (Paris, 1984). 1985. (Lecture Notes in Comput. Sci.;
V. 209). P. 169—183.
[223] Pomerance C. Fast, rigorous factorization and discrete
logarithms // Discrete Algorithms and complexity / A. Nozaki
D.S. Johnson, T. Nishizeki and H.S.Wilf, editors. Orlando: Acad.
Press, 1987. P. 119—144.
[224] Pomerance C. Very short primality proofs // Math. Сотр. 1987.
V. 48 A77). P. 315—322.
[225] Pomerance С Factoring// Proc. of Symp. Appl. Math. 1990. V. 42.
P. 24—47.
[226] Pomerance C. The number field sieve // Proc. of Symp. Appl. Math.
1994. V. 48. P. 465—480.
[227] Pomerance C. A tale of two sieves // Notices Amer. Math. Soc.
1996. V. 43. P. 1473—1485.
[228] Pomerance C, Self ridge J.L., Wagstaff 5.5. The pseudoprimes
to 2.5- 109 // Math. Сотр. 1980. V. 36 A51). P. 1003—1026.
[229] Pomerance C, Smith J. W., Tuler R. A pipeline architecture for
factoring large integers with the quadratic sieve algorithm // SI AM
J. Comput. 1988. V. 17 B). P. 387—403.
[230] Rabin M. Probabilistic algorithms for testing primality // J. Number
Theory. 1980. V. 12. P. 128—138.
[231] Ribenboim P. The book of prime number records. Springer-Verlag,
1988.
[232] Ribenboim P. The new book of prime number records. Springer-
Verlag, 1996.
[233] Riesel H. Prime numbers and computer methods for factorization.
Birkhauser, 1985. (Progr. in Math.; V. 57).
[234] Riesel H. Some soluble cases of the discrete logarithm problem //
BIT. 1988. V. 28 D). P. 839—851.
318 Литература
[235] Satoh Т., Araki К- Fermat quotients and polynomial time discrete
log algorithm for anomalous elliptic curves // Comment. Math.
Univ. Sancti Pauli. 1998. V. 47. P. 81—92.
[236] Schlrokauer 0. Discrete logarithms and local units. Phil. Trans.
R. Soc. bond. A. 1993. V. 345. P. 409—423.
[237] Schlrokauer 0. Using number fields to compute discrete logarithms
in finite fields // Math. Сотр. 2000. V. 69. P. 1267—1283.
[238] Schirokauer 0., Weber D., Denny T. Discrete logarithms: the
effectiveness of the index calculus method // Proceedings of ANTS-
II. 1996. (Lect. Notes in Comput. Sci.; V. 1122). P. 337—362.
[239] Schnorr С P. A more efficient algorithm for lattice basis
reduction // J. Algorithms. 1988. V. 9. P. 47—62.
[240] Schnorr C.P., Euchner M. Lattice basis reduction: improved
practical algorithms and solving subset sum problems //
Fundamentals of computation theory (Gosen, 1991). 1991. (Lect.
Notes in Comput. Sci.; V. 529). P. 68—85.
[241] Schnorr C.P., Lenstra H. W. A Monte-Carlo factoring algorithm
with linear storage // Math. Сотр. 1984. V. 43. P. 289—312.
[242] Schonhage A. The fundamental theorem of algebra in terms
of computational complexity / Preliminary report, 1982. Math.
Institute Univ. Tubingen.
[243] Schonhage A., Grotfeld A.F.W., Vetter E. Fast algorithms:
a multitape Turing mashine implementation. Mannheim: BI-
Wissenschaftsverlag, 1994.
[244] Schoof R. Elliptic curves over finite fields and the computation of
square roots modp // Math. Сотр. 1985. V. 44. P. 483—494.
[245] Schoof R. Counting points on elliptic curves over finite fields //
J. Theorie des Nombres des Bordeaux. 1995. V. 7. P. 219—254.
[246] Sedgewick R., Szymanski T.G., Yao A. C. The complexity of
finding cycles in periodic functions // SIAM J. Comput. 1982.
V. 11 B). P. 376—390.
[247] Sernaev I. A. An algorithm for evaluation of discrete logarithms
in some nonprime finite fields // Math. Сотр. 1998. V. 67.
P. 1679—1689.
[248] Shanks D. Class number, a theory of factorization and genera //
Proc. Symp. Pure Math. V. 20. Providence, R. I.: AMS, 1971.
p. 415—440.
[249] Shoup V. The deterministic complexity of factoring polynomials
over finite fields // Inform. Process. Lett. 1990. V. 33 E).
P. 261—267.
Литература 319
[250] Shoup V. New algorithm for finding irreducible polynomials over
finite fields // Math. Сотр. 1990. V. 54. P. 435—447.
[251] Shoup V. Searching for primitive roots in finite fields // Math.
Сотр. 1992. V. 58 A97). P. 369—380.
[252] Shoup V. Fast construction of irreducible polynomials over finite
fields // J. Symbolic Comput. 1994. V. 17 E). P. 371—391.
[253] Shoup V. A new polynomial factorization algorithm and its
implementation // J. Symbolic Comput. 1995. V. 20. P. 364—397.
[254] Shoup V. Lower bounds for discrete logarithms and related
problems // Advances in Cryptology — EuroCrypt'97 / Walter
Fumy, editor. Berlin: Springer-Verlag, 1997. (Lect. Notes in
Comput. Sci.; V. 1233). P. 256—266.
[255] Shparllnskl I.E. Number theoretic methods in cryptography:
Complexity lower bounds. Birkhauser, 1999.
[256] Sllverman J. H. The arithmetic of elliptic curves, Springer-Verlag,
1986. (Graduate Texts in Mathematics; V. 106).
[257] Silverman J. H. Advanced topics in the arithmetic of elliptic curves.
Springer-Verlag, 1994. (Graduate Texts in Mathematics; V 151).
[258] Sllverman R. D. The multiple polynomial quadratic sieve // Math.
Сотр. 1987. V 48 A77). P. 329—339.
[259] Silverman R.D. Fast generation of random strong RSA primes.
Preprint. RSA Laboratories, 1997.
[260] Silverman R.D., Wagstaff 5.5. A practical analysis of the elliptic
curve factoring algorithm // Math. Сотр. 1993. V 61. P. 445—462.
[261] So Unas J.A. An improved algorithm for arithmetic on a family
of elliptic curves // Advances in Cryptology — Crypto'97 / Burt
Kaliski, editor. Berlin: Springer-Verlag, 1997. (Lecture Notes in
Computer Science; V 1294). P. 357—371.
[262] Solovay R., Strassen V. A fast Monte-carlo test for primality //
SIAM J. Comput. 1977. V 6. P. 84—85. Errata in: 1978. V 7.
P. 117.
[263] Stewart /., Tall D. Algebraic number theory. London—N. Y.:
Chapman and Hall, 1986.
[264] Strassen V. Einige Resultate flber Berechnungskomplexitat //
Jahresber. Deutsch. Math.-Verein. 1976/77. V 78. P. 1—8.
[265] te Riele H. 227-digit SNFS factorization.
ftp://ftp.cwi.nl/pub/herman/SNFSgiants/SNFS-227,
January 2002.
320 Литература
[266] te Riele H.J.J., Lioen W., Winter D. Factoring with the quadratic
sieve on large vector computers // Belgian J. Сотр. Appl. Math.
1989. V. 27. P. 267—278.
[267] Teske E. Speeding up Pollard's rho method for computing discrete
logarithms // Proceedings of ANTS-III. 1998. (Lect. Notes in
Comput. Sci.; V. 1423). P. 541—554.
[268] Teske E. Square root algorithms for the discrete logarithm problem
(a survey). Preprint, January 2001.
[269] Thome E. Computation of discrete logarithms in GFBmi) //
Advances in Cryptology — AsiaCrypt'2001. 2001. (Lect. Notes in
Comput. Sci.; V. 2248). P. 107—124.
[270] Thome E. Discrete logarithms in G/7B607). e-mail to the
NMBRTHRY mailing list, February 2002.
http://listserv.nodak.edu/archives/nmbrthry.html.
[271] Turk J.W.M. Fast arithmetic operations on numbers and
polynomials // Computational methods in number theory.
V. 2 / H.W.Lenstra and R.Tijdeman, editors. Amsterdam, 1982.
P. 43—54.
[272] von zur Gathen J., Shoup V. Computing Frobenius maps
and factoring polynomials // Comput. Complexity. 1992. V. 2.
P. 187—224.
[273] Voorhoeve M. Factorization algorithms of exponential order //
Computational methods in number theory. V. 1 / H. W. Lenstra and
R.Tijdeman, editors. Amsterdam, 1982. P. 79—88.
[274] Weber D. An implementation of the general number field sieve to
compute discrete logarithms mod/? // Advances in Cryptology —
EuroCrypt'95 / Louis C.Guillou and Jean-Jacques Quisquater,
editors. Berlin: Springer-Verlag, 1995. (Lecture Notes in Computer
Science; V. 921). P. 95—105.
[275] Weber D. Computing discrete logarithms with the general number
field sieve // Proceedings of ANTS-II. 1996. (Lect. Notes in
Comput. Sci.; V. 1122). P. 391—404.
[276] Weber D. On the computation of discrete logarithms in finite prime
fields / PhD thesis. Univ. des Saarlandes, Saarbrflcken, 1997.
[277] Weber D. Computing discrete logarithms with quadratic number
rings // Advances in Cryptology — EUROCRYPT'98. Springer-
Verlag, 1998. (Lect. Notes in Comput. Sci.; V. 1403). P. 171 — 183.
[278] Weber D., Denny T. The solution of McCurley's discrete log
challenge // Advances in Cryptology — CRYPTO'98. Springer-
Verlag, 1998. (Lect. Notes in Comput. Sci.; V. 1462). P. 458—471.
Литература 321
[279] Weber К. An experiment in high-precision arithmetic on shared
memory multiprocessors // ACM SIGSAM Bull. 1990. V. 24 B).
p. 22—44.
[280] Western A. E., Miller J. C. P. Tables of indices and primitive roots.
Cambridge University Press, 1968. (Royal Society Mathematical
Tables; V. 9).
[281] Wledemann D.H. Solving sparce linear equations over finite
fields // IEEE Trans. Inform. Theory. 1986. V. 32 A). P. 54—62.
[282] Williams H.C. Some algorithms for solving xq = N (mod p) //
Proc. 3rd South East Conf. on Combinatorics, Graph Theory and
Computing. 1972. P. 451—462.
[283] Williams H.C. Ap + l method of factoring// Math. Сотр. 1982.
V. 39 A59). P. 225—234.
[284] Williams H.C. Factoring on a computer // Math. Intell. 1984.
V. 6 C). P. 29—36.
[285] Williams H. C, Wunderlich M. С On the parallel generation of
the residues for the continued fraction factoring algorithm // Math.
Сотр. 1987. V. 48 A77). P. 405—423.
[286] Wu H. Efficient computations in finite fields with cryptographic
significance / PhD thesis. Univ. of Waterloo, Waterloo, Ontario,
Canada, 1998.
[287] Wu H. Montgomery multiplier and squarer in GFBn) / Technical
report, Univ. of Waterloo, The Centre for applied cryptographic
research, May 2000.
[288] Wu H. On computation of polynomial modular reduction / Technical
report, Univ. of Waterloo, The Centre for applied cryptographic
research, June 2000.
[289] Wu H. On modular reduction / Technical report, Univ. of Waterloo,
The Centre for applied cryptographic research, June 2000.
[290] layer J. Factorisieren mit dem Number Field Sieve / PhD thesis,
Universitat der Saarlandes, 1995.
[291] Zierler N. A conversion algorithm for logarithms on GFBn) //
J. Pure and Appl. Algebra. 1974. V. 4. P. 353—356.
[292] Zuras D. On squaring and multiplying large integers // Proceedings
of 1 lth IEEE Symp. Сотр. Arith. IEEE Press, 1993. P. 260—271.
21 О.Н.Василенко
Предметный указатель
(Р+ 1)-метод Уильямса 74
(Р — 1)-метод Полларда 60
Х-низкое число 147
р-метод Полларда 62
р-метод Полларда для дискретно-
дискретного логарифмирования 132
В-гладкое число 9
В-степенно-гладкое число 9
/-разлагающий многочлен 172
/'-инвариант 109
LLL-алгоритм с глубокой встав-
вставкой 194
— факторизации многочленов 228
— целочисленный 195
MLLL-алгоритм Поста 197
А
Адамара неравенство 186
алгоритм index-calculus 137
— Адлемана 133
— Адлемана—Померанса—
Румели 43
— Адлемана—Хуанга 47
— Аткина—Морейна 47
— Бен-Ора 185
— Берлекзмпа 173
— Берлекзмпа—Месси 288
— бинарный 299
— Бриллхарта—Моррисона 83
— вероятностный проверки
неприводимости 181
— Видемана 287
— Гарнера 270
¦ Голдвассер—Килиана 47
¦ детерминированный проверки
простоты чисел 48
¦ Диксона 79
¦ Евклида 292
¦ Евклида обобщенный 292
¦ квадратичного решета 87
¦ Копперсмита 139
Копперсмита—Винограда 291
Копперсмита—Одлыжко—
Шреппеля 134
Лазара 185
Ланцоша 281
Ланцоша блочный 281
Лемера 299
Ленстры 68
Ленстры—Коена 46
Ленстры—Померанса 93
Монтгомери 272
нахождения коротких векторов
решетки 201
нахождения линейной зависи-
зависимости 200
нахождения минимального
многочлена 236
нахождения порядка элемента
30
обобщенный бинарный 300
Полига—Хеллмана 130
полиномиальный 9
Полларда—Штрассена 73
построения LLL-приведенного
базиса 190
Предметный указатель
323
— решения f(x) =0 в GF(p) 162
— решета числового поля 93
— согласования 130
— Тонелли—Шзнкса 167
— Тоома—Кука 259
— Фергюсона—Форкейда 203
— Ферма 57
— Шенхаге—Штрассена 253
— Шермана—Лемана 65
— Шнорра—Ленстры 92
— Штрассена 291
— Шуфа 114
— Эль Гамаля 138
Б
базис LLL-приведенный 188
— вполне приведенный 187
— Грёбнера 185
— приведенный по Минковскому
187
— решетки 186
бесконечно удаленная точка 107
бинарная квадратичная форма 75
быстрое преобразование Фурье
241
«быстрый столбик» 257
В
вектор нормализованный 206
возведение в степень по Монтго-
Монтгомери 271
высота алгебраического числа 232
Г
гауссово исключение 280
структурированное 280
Грама матрица 195
Грама—Шмидта процесс ортого-
нализации 186
д
дискретное логарифмирование 129
— преобразование Фурье 1 -го ти-
типа 239
2-го типа 239
дискретный логарифм 129
длина входа 9
дробь я-членная непрерывная 297
— бесконечная непрерывная 298
— непрерывная 297
— периодическая 298
— подходящая 297
— цепная 297
Е
единица поля 98
задача дискретного логарифмиро-
логарифмирования 129
К
каноническое разложение нату-
натурального числа 12
Кармайкла числа 13
квадратичный вычет 295
— закон взаимности Гаусса 296
— невычет 296
китайская теорема об остатках 294
Крылова последовательность 282
Л
Лежандра символ 295
лемма Гаусса 217
логарифм дискретный 129
М
метод SQUFOF 75
— возведения в степень 301
— Кантора—Цассенхауза 177
— Карацубы 258
— пробных делений 12
— Шзнкса 75
многочлен деления 115
21*
324
Предметный указатель
— минимальный 232
— примитивный 217
множество дискретное 186
Н
ноль кривой 107
норма многочлена 218
О
операция сложения на эллиптиче-
эллиптической кривой 108
определитель решетки 186
основная теорема арифметики 12
П
первообразный корень 294
подъем квадратичный 227
— линейный 228
полиномиальная сложность 9
полиномиальный алгоритм 9
Полларда (Р — 1)-метод 60
— р-метод 62
полная система вычетов 294
последовательность Крылова 282
Пратта сертификат 28
приведение по Монтгомери 271
приведенная система вычетов 294
просеивание 88
простое число 12
простой идеал 97
первой степени 97
процесс ортогонализации 283
Р
разложение Холецкого 201
разрешимость уравнения дискрет-
дискретного логарифмирования 149
расширенная гипотеза Римана 32
результант 179
решетка 186
решето числового поля 93
для дискретного лога-
логарифмирования 140
— Эратосфена 13
символ Лежандра 295
— Якоби 295
система вычетов полная 294
приведенная 294
сложность алгоритма 8
— полиномиальная 9
— субэкспоненциальная 9
— экспоненциальная 9
сравнение 293
степень алгебраического числа
232
стратегия EAS 82
— LP 81
— PS82
субэкспоненциальная сложность 9
сумма Якоби 44
Т
теорема Дирихле о единицах 98
— китайская об остатках 294
— Ламе 293
— Ферма малая 294
— Хассе 109
— Шенхаге—Штрассена 253
— Эйлера 294
— Эйлера—Лагранжа 299
тест Миллера—Рабина 38
— Соловея—Штрассена 37
У
умножение по Монтгомери 271
Ф
факторная база 78
Фробениуса отображение 114
функция Кармайкла 33, 145
— Эйлера 294
Предметный указатель
325
Холецкого разложение 201
Ч
частное Ферма 146
число В-гладкое 9, 96
— В-степенно-гладкое 9
— алгебраическое 232
— евклидово простое 43
— Люка 16
— Мерсенна 15
— начальное простое 43
— сопряженное алгебраическое
232
— Софи Жермен 56
— строго псевдопростое 14
— Ферма 15
числовой характер 295
Ш
Широкауера аддитивный характер
144
Эйлера критерий 296
экспоненциальная сложность 9
эллиптическая кривая 107
Эратосфена решето 13
Я
Якоби символ 295
Олег Николаевич Василенко
Теоретико-числовые алгоритмы в криптографии
Редактор Т. Л. Коробкова
Издательство Московского Центра
непрерывного математического образования
Лицензия ИД №01335 от 24.03.2000 г.
Подписано в печать 07.10.2003 г. Формат 60 х 90 '/ig. Бумага офсетная № 1.
Печать офсетная. Усл. печ. л. 20.5. Тираж 1000 экз. Заказ №
МЦНМО
119002, Москва, Большой Власьевский пер., 11
Отпечатано во ФГУП «Производственно-издательский комбинат ВИНИТИ».
140010, г. Люберцы Московской обл., Октябрьский пр-т, 403. Тел. 554 21 86
Книги издательства МЦНМО можно приобрести в магазине «Математическая книга»,
Большой Власьевский пер., д. 11. Тел. 241 72 85. E-mail: biblio@mccme.ru