Author: Коблиц Н.  

Tags: математика  

Year: 2001

Text
                    Н.Коблиц
КУРС ТЕОРИИ ЧИСЕЛ И КРИПТОГРАФИИ
Москва: Научное изд-во ТВП, 2001, х+254 с.
Цель данной книги — ввести читателя в те области арифметики, как классические, так и самые современные, которые находятся в центре внимания приложений теории чисел, особенно криптографии. Предполагается, что знание высшей алгебры и теории чисел ограничено самым скромным знакомством с их основами; по этой причине излагаются также необходимые сведения из этих областей математики. Авторами избран алгоритмический подход, причем особое внимание уделяется оценкам эффективности методов, предлагаемых теорией. Особенностью книги является изложение совсем недавно разработанных приложений теории эллиптических кривых. Перевод на русский язык осуществлен с оригинала второго издания, существенно пересмотренного по сравнению с первым изданием и снабженного обновленным списком литературы. Каждая глава включает в себя тщательно составленную подборку задач, как правило, снабженных подробными указаниями и решениями.
Все это позволяет рекомендовать книгу не только в качестве ценного пособия для общетеоретической подготовки специалистов по защите информации, но и как полезный источник примеров практической применимости целого ряда абстрактных разделов математики и кибернетики. Книга прекрасно подходит и для самообразования.
СОДЕРЖАНИЕ
Предисловие	V
Предисловие ко второму изданию	vii
Глава I. Некоторые вопросы элементарной теории чисел	1
§ 1.	Временные оценки сложности арифметических операций	1
§ 2.	Делимость и алгоритм Евклида	13
§ 3.	Сравнения	20
§ 4.	Некоторые применения к разложению на множители	30
Глава II. Конечные поля и квадратичные вычеты	34
§ 1.	Конечные поля	36
§ 2.	Квадратичные вычеты и закон взаимности	47
Глава III. Криптография	61
§ 1.	Некоторые простые криптосистемы	61
§ 2.	Шифрующие матрицы	73
Глава IV. Открытый ключ	91
§ 1.	Суть криптографии с открытым ключом	91
§ 2.	Криптосистема RSA	101
§ 3.	Дискретное логарифмирование	107
§ 4.	Задача о рюкзаке	123
§ 5.	Протоколы с нулевым разглашением и скрытая передача	130
Глава V. Простота и факторизация	139
§ 1.	Псевдопростые числа	140
§ 2.	Ро-метод	155
§ 3.	Факторизация Ферма и факторные базы
§ 4.	Метод цепных дробей
§ 5.	Метод квадратичного решета
Глава VI. Эллиптические кривые
§ 1.	Основные факты
§ 2.	Криптосистемы на эллиптических кривых
§ 3.	Критерий простоты, использующий эллиптические кривые
§ 4.	Разложение на множители при помощи эллиптических кривых
Ответы к упражнениям
Предметный указатель
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
Абелева группа 37 тип 197
автоморфизм 35, 41
Адлемана-Померанца-Румели тест на простоту 151
Адлемана-Хуана тест на простоту 215-216
алгебраический элемент 35 алгоритм 10
-	Берлекампа 116
-	вероятностный 95, 104-105, 141-142 - детерминистический 142
-	дискретного логарифмирования 113-118
-	индексный 114-118
-	Силвера-Полига-Хеллмана 113-114,208
-	факторных баз 115-116, 166
-	Шуфа 202, 207
алфавит 92
аутентичность, подлинность 97, 105 аффинная плоскость 192
аффинное отображение 64, 67, 76, 84 Бесконечно удаленная прямая 192 бесконечность 193
-	- точка 189, 193 биграмма 61 бит 3 «больших и малых шагов» метод 114 Бонд Джеймс 90, 210, 236, 239 бросание монетки 100, 106, 240 быстрорастущий набор 123
5-число 162, 180-181
Вейля
-	гипотеза 198
160
174
180
188
188
200
212
217
227
255
-	спаривание 204
векторное пространство 34
вероятностное шифрование 99 вероятностный алгоритм 95, 104-105,
141-142
вещественные точки на
эллиптической кривой 199, 251
взаимно простые (числа) 16
Виженера шифр 74
Вильсона теорема 28
возведение в степень 25-26, 107
-	в кольце 26, 107
временные оценки 5
для
-	алгоритма Евклида 15-16, 18, 19
-	алгоритма факторных баз 166-172
-	арифметических операций 3-8
-	возведения в степень в кольце вычетов 26
-	извлечения квадратного корня по модулю р 57-58
-	метода квадратичного решета 185
-	нахождения обратного 21
-	перевода в новую систему счисления 10-11
-	ро-метода 158-159
-	теста Миллера-Рабина на простоту 153
-	точек на эллиптической кривой 201
-	факторизации на эллиптической
кривой 224-226
-	факторизационных алгоритмов 171 
172
вскрытие кода 63 вычет
-	квадратичный 49
-	наименьший абсолютный 162
-	по модулю m 20-21, 219
Галуа расширение поля 35 гауссова сумма 50, 52, 151 гауссовы числа 19, 42, 48, 193 гладкая точка 189 гладкое целое 113
глобальная эллиптическая кривая 208 граф 130
группа
-	абелева 37
-	циклическая 38
Двоичная
-	операция 3
-	система счисления 1-3
двоичный разряд (бит) 3 делимость 13
-	точная 13 делитель 13
-	нетривиальный 13
-	собственный 13
делящая точка 195
детерминистический алгоритм 142 дешифрование 61
-	, ключ 91
-	, преобразование 61 дзета-функция 198
-	на эллиптической кривой 198 дискретный логарифм 107-108
-	на эллиптической кривой 203
DES (стандарт шифрования данных) 111-112
DSS (стандарт цифровой подписи) 111-113
Евклида алгоритм 14-15
-	для гауссовых чисел 19-20
-	для многочленов 19
Жермен Софи 233
-	простое число 233
Закон сложения на эллиптической кривой 190
зашифрование 61
Изоморфизм 35
индексный алгоритм 114-118
Казакова 92-93
квадратичная взаимность 51, 54 квадратичное решето 180-182
квадратичный
-	вычет 49
-	невычет 49
-	характер 196
квадратный корень в конечном поле
47, 55, 59, 106, 203
кириллица 71, 87
китайская теорема об остатках 23
классическая криптосистема 96
ключ 64
-	дешифрования 91
-	шифрования 64, 91
ключами обмен 98, 108
кодирование 202
кольцо 76
-	матриц 76-77
-	многочленов 34
коммивояжера задача 124
комплексные точки на
эллиптической кривой 193
комплексные числа 19
композиция криптосистем 72, 87-88 конечное поле 21, 36
-	, автоморфизм 41
-	, образующий элемент 38
-	, подполе 43
-	, существование и единственность
40
корень из единицы в конечном поле 47
Коэна-Ленстры тест на простоту 151
КПСС 237
кратная точка 201
кратность корня 36
криптоанализ 63
криптография 61
-	с открытым ключом 93 криптосистема 61-62, 91
-	Диффи-Хеллмана 108-109, 205
-	классическая 96-97
-	Меркля-Хеллмана 124
-Мэсси-Омуры 110-111, 120-121,206-207, 241
-	на эллиптических кривых 204-206
-рюкзачная 124-128
-	с секретным ключом 96
-	симметричная 96
-	Эль-Гамаля 111, 121, 206-207
-RSA24, 101-103, 118, 139-
140,154,172
кручения подгруппа 195, 209
Лагранжа теорема 176
Лежандра символ 49, 196
Ленстры факторизация на эллиптической кривой 217, 221-222
линейная алгебра 66, 74-76
-	по модулю N 76-79, 116-117
-	по модулю 2 164
линейное отображение 65, 74, 76, 78
Z-ряды Дирихле 151
Матрица 74-76
-	обратная 75, 77
Меркля-Хеллмана криптосистема 124-126
Мерсенна простое (число) 31, 32, 58, 139,216, 233
-	гауссово 252
Миллера-Рабина тест на простоту
146
многочлен 19
-	неприводимый 35
-	нормированный 19, 35
-	примитивный 43 модуль 20
Монте-Карло метод факторизации 155-159
Морделла теорема 195
Мэсси-Омуры криптосистема ПО-
111, 120-121,206-207, 241
Наибольший общий делитель 14
-	гауссовых чисел 19
-	многочленов 19, 36
наименьшее общее кратное 14
наименьший абсолютный вычет 162 невычет квадратичный 49 неинтерактивность 136 неприводимый многочлен 35, 115, 122
-	над конечным полем 43-45, 115, 122
нормированный многочлен 19, 35 нулевое разглашение 130
для
-	задачи дискретного логарифмирования 130, 137
-	разложения на множители 136-137
-	раскраски карты 131-132
нулевой элемент 190
(п, ^-пороговая система 29
Образующий элемент конечного поля 38
обратный (по умножению) элемент 21
однонаправленная функция 94
-	с замком (лазейкой) 93
определитель 75
основание системы счисления 1 основная теорема арифметики 13, 29 открытый
-	ключ 95, 97
-	текст 61
О-болыпое (символика) 8
Параметры криптосистемы 64, 91
Пепина тест на простоту 216 периодическая дробь 12, 227, 246 повторного возведения в квадрат метод 26, 107, 116
подпись 97, 105
подъем (квадратного корня) 59, 89
Поклингтона тест на простоту
212,216
поле 34
-	изр элементов 21, 36
-	конечное 21, 36
-	простое 36
-	разложения 36
Полига-Силвера-Хеллмана алгоритм 113-114, 208
полиномиальное время 11 Полларда (р - 1)-метод 217-219 поля
-	автоморфизм 35, 41
-	изоморфизм 35
-	расширение Галуа 35
-	характеристика 36 порядок
-	точки 195
-	элемента 37
предварительный этап вычислений дискретного логарифма 115
предположение Диффи-Хеллмана 109, 135
представление открытого текста 202 преобразование
-	дешифрования 61
-	на биграммах 67
-	сдвига 63
приближение (цепной дроби) 175 примитивный
-	корень из единицы 47
-	многочлен 43
пробы делением 140, 155
проективная - плоскость 192
-	точка 192
проективное уравнение 192
производная многочлена 35 простое
-	поле 36
-	число 13
-	- в арифметической прогрессии 39
-	- Мерсенна 31, 32, 58, 139, 216, 233
-	-Ферма 32, 58-59, 121,216
псевдопростое (число) 140
-	, сильно 145
-	Эйлера 144
Разделение секрета 29
разложения на множители алгоритм цепных дробей 177-179
разложения поле 36
разряд двоичный (бит) 3
ранг эллиптической кривой 195
раскрашивание
-	в три цвета 130-131
-	карты или графа 131
расшифрование 61
редукция эллиптической кривой 209, 219-221
решетка 193
решето
-	квадратичное 180-182
-	Эратосфена 181
Римана гипотеза 57, 151
ро-метод 155-159
русский алфавит 71, 87
рюкзачная система Чора-Райвеста
127
RSA 24,101-103, 118, 139-140, 154, 172
Силвера-Полига-Хеллмана алгоритм
113-114, 208
сильно псевдопростое 145
симметричная криптосистема 96
система обмена ключами Диффи-
Хеллмана 108-109, 205
скрытая передача 134-137
след 210
случайное блуждание 196
случайность 101
Соловея-Штрассена тест на простоту
144
сообщения элемент 61
сопряженный корень 35
составное число 13
сравнение 20-21, 219
СССР 236
Стирлинга формула для п\ 11,
166,173
структура криптосистемы 63
суперсингулярная эллиптическая
кривая 204
Теорема о простых числах 12-13, 102 тест на простоту
-	Адлемана-Померанца-Румели 151
-	Адлемана-Хуана 215-216
-	Коэна-Ленстры 151
-	методом проб делением 140
-	Миллера-Рабина 146
-	на эллиптических кривых 213-215
-	Пепина 216
-	Поклингтона 212, 216
-	Соловея-Штрассена 144
-	Эткина 212,215 тор 194
триграмма 61
Факторизации метод
-	квадратичного решета 180-182
-	Монте-Карло 155-157
-	Лолларда (р -1) 217-219
-	проб делением 140, 155
-	ро-метод 155-159
-	Ферма 106, 160-161
-	цепных дробей 177-179 факторизация
-	, разложение на множители 30-32,101
-	с помощью эллиптических кривых 217, 221-226
факторная база 162
факторных баз алгоритм 115, 166
Ферма
-	малая теорема 22, 140
-	простое число 32, 58-59, 121, 216
-	факторизация 106, 160-161
Фибоначчи числа 18, 86-87, 180, 237, 247
фиксированная биграмма 89 фиксированный элемент сообщения
71,72
Фробениус 207, 252 функция
-	Вейерштрасса 193-194
-	однонаправленная 94
-	с замком (лазейкой) 93
Характеристика поля 36
Хассе теорема 197 хеш-функция 98 Цезарь Юлий 63 цепная дробь 174 циклическая группа 38 Частотный анализ 64 число Кармайкла 142-143, 152-153 число разрядов 3
Шестнадцатиричная система 12 шифрование 61
-	, ключ 64, 91
-	, матрица 80
-	, преобразование 61 шифртекст 61
Шуфа алгоритм 202, 207
Эллиптическая кривая 188-189 - над конечным полем 196 эллиптическая функция 194-195 эллиптической кривой - подгруппа кручения 195, 209 - редукция 209, 219-221 Эль-Гамаля
-	криптосистема 111, 121, 206-207 - система подписи 121
Эткина тест на простоту 212, 215 Якоби символ 54
ПРЕДИСЛОВИЕ
«. .. Гаусс, а также другие математики, по-видимому, справедливо утверждали, что существует, по крайней мере, одна наука (теория чисел), которая, ввиду своей отдаленности от обыденной человеческой деятельности, остается чистой и благородной.»
— G.H. Hardy, A Mathematician’s Apology, 1940
Харди был бы удивлен и, возможно, огорчен ростом интереса к приложениям теории чисел в таких областях «обычной человеческой деятельности», как передача информации (коды, исправляющие ошибки) и криптография (секретные коды). Не прошло и полувека с того момента, как Харди написал приведенные выше строки, а уже не кажется невероятным (хотя пока этого не произошло), что АНБ (Аген-ство Национальной Безопасности, работа которого в области криптографии обеспечивает потребности правительства США) будет требовать предварительной экспертизы для разрешения на публикацию теоретических работ по определенным направлениям теории чисел.
Одной из причин, благодаря которым отдельные вопросы, интересовавшие специалистов по теории чисел, превратились в новое направление, названное «вычислительной теорией чисел», явился быстрый рост мощности и сложности компьютеров.
Книга почти не предполагает знания основ алгебры или теории чисел. Ее цель — ввести читателя в те области арифметики, как классические, так и самые современные, которые находятся в центре внимания приложений, особенно криптографии. По этой причине мы избрали алгоритмический подход, выделяя особенно вопрос оценки эффективности методов, предлагаемых теорией. Особенностью нашей книги является изложение совсем недавно разработанных приложений теории эллиптических кривых (глава VI). Эллиптические кривые долгое время были центральной темой некоторых направлений математики. Теперь оказалось, что арифметика эллиптических кривых может иметь и практические приложения.
Во все главы включены задачи, которые должны помочь читателям, интересующимся более широким кругом вопросов, полнее усвоить изучаемый материал.
ПРЕДИСЛОВИЕ
Первые две главы посвящены общим вопросам. Студентам, не имевшим дела с алгеброй (расширениями полей, конечными полями) или элементарной теорией чисел (сравнениями), изложение покажется весьма сжатым, но они могут обратиться к более подробным курсам. С другой стороны, читатели с большей математической подготовкой, возможно, лишь бегло просмотрят эти главы, остановившись только на некоторых упражнениях.
При соответствующей подготовке слушателей первые пять глав можно взять за основу семестрового курса. Главы III—VI можно использовать в семестровом курсе, продолжающем семестровый курс элементарной теории чисел.
Зависимость между материалом глав следующая (исходя из ссылок в главах V и VI на предыдущий материал):
Глава I
Глава II
/ I \
Глава III Глава V Глава VI
Глава IV
За основу этой книги взяты курсы, прочитанные в университете штата Вашингтон (Сиэтл) в 1985-86 годах и в Институте математики (Мадрас, Индия) в 1987 году. Мне приятно поблагодарить Гэри Нельсон и Дугласа Линда за апробацию рукописи и полезные замечания.
Рисунок на фронтисписе, принадлежащий профессору А. Т. Фоменко из Московского государственного университета, иллюстрирует тему книги. Обратите внимание, что коды десятичных цифр настенах здания вовсе не случайны.
Эта книга посвящена памяти студентов Вьетнама, Никарагуа и Сальвадора, отдавших свои жизни в борьбе против американской агрессии. Авторский гонорар от продажи книги будет использован на покупку научной литературы для университетов и институтов этих трех стран.
Сиэтл, май 1987 года
ПРЕДИСЛОВИЕ КО ВТОРОМУ ИЗДАНИЮ
Вместе с возникновением в криптографии новых понятий и методов расширился и круг криптографических приложений теории чисел. В дополнение к элементарной и аналитической теории чисел все более широко используется алгебраическая теория чисел (тесты на простоту с применением сумм Гаусса и Якоби, криптосистемы, основанные на квадратичных полях, решето числового поля) и арифметическая алгебраическая геометрия (факторизация при помощи эллиптических кривых, криптосистемы, основанные на эллиптических и гиперэллиптических кривых и абелевых многообразиях). Некоторые из современных применений теории чисел в криптографии (наиболее значительное из них — способ разложения больших целых чисел на множители применением метода решета числового поля, разработанный после выхода первого издания) остались за пределами книги. Однако за счет небольшого увеличения объема книги удалось включить в нее некоторые новые темы, что позволило более полно отразить разнообразие применений теории чисел в этой увлекательной междисциплинарной области.
Следующий список суммирует основные изменения во втором издании.
— Внесены исправления и разъяснения, добавлены многочисленные ссылки.
— В главу VI добавлен раздел о доказательствах с нулевым разглашением и скрытой передаче.
— В главу V добавлен раздел о разложении на множители методом квадратичного решета.
— В главу VI включен раздел об использовании эллиптических кривых в тестах на простоту.
— Добавлено беглое обсуждение следующих вопросов: (^/^-пороговые схемы, вероятностное шифрование, хеш-функции, рюкзачная криптосистема Чора-Райвеста и американский стандарт цифровой подписи DSS.
Сиэтл, май 1994 года
ГЛАВА I
НЕКОТОРЫЕ ВОПРОСЫ ЭЛЕМЕНТАРНОЙ ТЕОРИИ ЧИСЕЛ
Большинство понятий, рассматриваемых в настоящей главе, вероятно, хорошо известно читателям. Цель этой главы — напомнить те обозначения и факты из элементарной теории чисел, которые будут необходимы при работе с этой книгой. Большинство доказательств опускается, поскольку их можно найти почти в каждом учебнике по теории чисел. Одна тема, которая будет играть центральную роль далее, — оценивание числа двоичных операций, необходимых для решения различных теоретико-числовых задач на компьютере, — еще не вошла в стандартные курсы по элементарной теории чисел. Поэтому мы будем более детально рассматривать вопросы, связанные с оценками сложности, особенно в § 1.
§ 1. Временные оценки сложности арифметических операций
Числа в разных базах. Разложение неотрицательного целого числа п по основанию (базе) b представляет собой обозначение для п вида (d^_1dk_2 . .. (/i(/o)i>! где — цифры, т. е. символы целых чисел от 0 до b — 1. Эта запись означает, что п = dk_-lbk 1 + tZ/-_26 2 + • •  + d\b + d0. Если цифра первого разряда отлична от нуля, то число п к — 1 называют ^-разрядным 6-ичным числом. Любое целое число от b к
до 6 - 1 является Агразрядным по основанию Ь. Мы будем опускать скобки и индекс (.. .)(, в случае десятичной системы счисления (6 = 10) и в тех случаях, когда основание системы счисления ясно из контекста, особенно в случае двоичной системы (6 = 2). Поскольку иногда удобно пользоваться системами, отличными от десятичной, приходится производить арифметические операции по произвольному основанию и переходить от одного основания к другому. Продемонстрируем это
2
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
на нескольких примерах.
Замечания. 1) Дробные числа также можно разлагать по любому основанию, т. е. представлять в виде
(^t-i^fc-2 • • • d]d0, d_]d_2   -)ь-
2) При b > 10 принято использовать буквы для выражения цифр, больших девяти. Можно вообще использовать буквы вместо цифр.
Пример 1. а) (11001001)2 = 201.
Ь) При b = 26 будем использовать буквы латинского алфавита А-Z для записи цифр 0-25 соответственно. Тогда (BAD)26 = 679, тогда как (В, AD)26 = lg|g.
Пример 2. Умножить 160 на 199 в системе счисления по основанию 7.
Решение:
316
403
1254
16030
161554
Пример 3. Разделить (11001001)2 на (100111 )2 и (HAPPY)26 на (SAD)26.
Решение:
11001001	1100111	HAPPY	\SAD
100111	101	GYBE	KD
101101		COLY	
100111		CCAJ	
по	(ост)	MLP	(oct)
Пример 4. Выразить 102 * * * 6 в системах счисления по основаниям			
2, 7 и 26 (в последнем случае использовать буквенную запись).
Решение. Чтобы разложить число п по основанию Ь, надо
сначала получить младший разряд, разделив п на b и взяв остаток от деления. Потом п заменяется частным от деления, описанный процесс повторяется и дает второй от конца знак разложения и т. д. В данном случае получаем
106 = (11110100001001000000)2 = (11333311)? = (СЕХНО)26.
Пример 5. Выразить тг = 3,1415926... в двоичной системе счисления (выписывая 15 цифр после запятой) и по основанию 26 (выписывая 3 цифры после запятой).
§ 1. BPEMEHHblE ОЦЕНКИ СЛОЖНОСТИ
3
Решение. Сначала представляется целая часть. Потом дробная часть умножается на основание Ь. Целая часть полученного числа дает , а к его дробной части применяется та же процедура, что последовательно дает <Z_2, d-з,     Таким способом получаем:
3,1415926... = (11,001001000011111... )2 = (D, DRS .. .)26.
Число разрядов. Как было упомянуто выше, целое число, удо-/с —1	к
влетворяющее неравенствам b п < b , имеет к разрядов по основанию b. С помощью логарифмов это можно переписать в следующем виде («[ ]» обозначает целую часть числа):
число разрядов
г, , Г log Д
= l°gb n + 1 = ;—г + 1 L log b J
(здесь и всюду далее log понимается как натуральный логарифм loge).
Двоичные операции. Начнем с очень простой арифметической задачи сложения двух двоичных целых чисел, например,
ini
1111000 + 0011110 10010110
Предположим, что оба числа имеют длину в к бит (слово «бит» является сокращением выражения «бгпагу digiZ»). Если запись одного из чисел короче, ее можно дополнить нужным числом нулей слева. Хотя в примере рассматриваются маленькие целые (складываются 120 и 30), следует иметь в виду, что число к может быть очень большим, скажем, 500 или 1000.
Детально проанализируем всю процедуру сложения. При сложении необходимо к раз повторить следующие шаги.
1.	Посмотреть на верхний и нижний биты, а также проверить, имеется ли перенос единицы от сложения младших разрядов.
2.	Если оба бита нулевые, а переноса нет, то в данном разряде суммы записываем нуль и двигаемся дальше.
3.	Если либо а) оба бита нулевые и есть перенос, либо Ь) один бит — нуль, другой — единица и переноса нет, то записываем единицу и двигаемся дальше.
4.	Если либо а) один бит — нуль, другой — единица и есть перенос, либо Ь) оба бита — единицы и переноса нет, то записываем нуль в данный разряд, записываем единицу переносов в следующий столбец и двигаемся дальше.
4
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
5.	Если оба бита — единицы и есть перенос, то в данном разряде суммы записываем единицу, записываем единицу переносов в следующий столбец и двигаемся дальше.
Однократное выполнение этих шагов называется двоичной (битовой) операцией. Сложение двух Агразрядных двоичных чисел требует к двоичных операций. Мы увидим ниже, что и более сложные задачи тоже могут быть разбиты на двоичные операции. Время, которое расходует компьютер на решение задачи, по сути дела пропорционально числу двоичных операций. Конечно, константа пропорциональности — число наносекунд, расходуемых на одну двоичную операцию, — зависит от вида компьютера. (Сказанное является упрощением, так как это время может зависеть также от «технических» факторов, например, времени доступа к памяти.) Когда мы говорим об оценке времени работы, подразумевается оценка числа двоичных операций. В этих оценках мы будем пренебрегать временем, расходуемым на запись информации или на логические шаги, отличные от двоичных операций. На практике основное время занимает выполнение именно двоичных операций.
Теперь рассмотрим процесс умножения ^-разрядного двоичного числа на /-разрядное двоичное число. Например,
11101
1101
11101
111010
11101
101111001
Предположим, что мы пользуемся обычным способом умножения ^-разрядного двоичного числа п и /-разрядного двоичного числа т. Мы получаем самое большее / строк (каждый нулевой бит числа т уменьшает это количество на единицу), где каждая строка содержит копию числа п, сдвинутую влево на некоторое расстояние, т. е. копию, дополненную нулями справа. Пусть имеется /	/ строк. Посколь-
ку мы ограничиваемся двоичными операциями, мы не можем сложить все строки сразу. Правильнее будет двигаться от второй строки к l'-й, складывая каждую строку с накопившейся суммой верхних строк. На каждом этапе сначала отмечаем, как далеко сдвинуто влево число п в рассматриваемой строке. Сносим вниз крайние правые разряды накопленной суммы верхних строк, а остальную часть записи накопленной суммы складываем (описанным выше способом) с числом п, что требует к двоичных операций. В примере выше 11101 х 1101 после сложения первых двух строк получаем 10010001, сносим вниз послед
§ 1. ВРЕМЕННЫЕ ОЦЕНКИ СЛОЖНОСТИ	5
ние три разряда 001 и складываем остальное (т.е. 10010) с п = 11101. И наконец, к сумме 10010+ 11101 = 101111 приписываем 001 и получаем 101111001 — сумму l' — 3 строк.
Это описание показывает, что задача умножения может быть разложена на / — 1 сложений, по к двоичных операций каждое. Так как l' — 1 < I + /, то получаем простую оценку
Time (умножение ^-разрядного и /-разрядного двоичных чисел) < kl.
Здесь и далее Time (4) обозначает число двоичных операций, необходимых для выполнения процедуры А.
Сделаем несколько замечаний об этом выводе оценки для числа двоичных операций, необходимых для двоичного умножения. Во-первых, как упоминалось выше, мы подсчитали только число двоичных операций. Мы пренебрегли временем на сдвиг числа п влево и временем на снос крайних правых разрядов накопленной суммы. На практике операции сдвига и копирования являются быстрыми по сравнению с большим числом производимых двоичных операций, так что можно без опаски проигнорировать их. Другими словами, мы определим «временную оценку (сложности)» арифметической задачи как верхнюю границу для числа двоичных операций без учета операций сдвига, копирования, обращения в память и т.п. Заметим, что мы могли бы применить эту же временную оценку к умножению к-разрядной и /-разрядной двоичных дробей. Единственное отличие состоит в необходимости правильного определения места для запятой, разделяющей целую и дробную части.
Во-вторых, если мы хотим получить простую и удобную в работе оценку, мы всегда должны предполагать, что имеем дело с «самым плохим случаем». Например, если двоичное разложение числа т имеет много нулей, то l' будет значительно меньше /. Поэтому можно использовать оценку Time (умножение ^-разрядного и /-разрядного двоичных чисел)< Аг-(число единиц в двоичном разложении т). Однако обычно вместо такого уточнения (понижения) нашей временной оценки удобнее пользоваться простой равномерной оценкой, зависящей лишь от длины записи п и т, а не от конкретных значений битов.
Как частный случай, имеем оценку:
Time (умножение двух ^-разрядных двоичных чисел) < к2.
Наконец, наша оценка kl может быть выражена в терминах пит, если вспомнить приведенную выше формулу для числа разрядов, из которой следует, что к = [log2 n] + 1 X + 1 и / = [log2 т] + 1 log т [ 1 log 2 + К
6
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
Пример 6. Найти верхнюю границу для числа двоичных операций, необходимых для вычисления nl.
Решение. Используем следующую процедуру. Сначала умножим 2 на 3, затем результат умножим на 4, новый результат умножим на 5 и т. д., пока не получим nl. На (J — 1)-м шаге (J = 2, 3,..., п — 1) производится умножение jl на j + 1. Поэтому есть п - 2 шагов, каждый из которых состоит в умножении частичного произведения jl на очередное целое число. Частичные произведения быстро станут очень большими. В качестве оценки для числа разрядов частичного произведения в наихудшем случае возьмем число разрядов последнего произведения, т.е. числа nl.
При определении числа двоичных разрядов в произведении мы используем тот факт, что это число не превосходит суммы числа разрядов у сомножителей (см. выше рассуждение об умножении). Следовательно, произведение п целых Агразрядных чисел имеет не более пк разрядов. Таким образом, если п — двоичное /с-разрядное число (тогда любое меньшее число имеет не больше к разрядов), то п\ имеет самое большее пк разрядов.
Итак, в каждом из п — 2 умножений, необходимых при вычислении nl, мы умножаем не более чем /с-разрядное целое число j + 1 на не более чем пАгразрядное целое число jl. Это требует самое боль-шее пк двоичных операций. Всего таких умножений п — 2. Поэтому общее число двоичных операций ограничено величиной (п — 2)пк = n(n — 2)([log2 п] + I)2, что приблизительно равно n2(log2 п)2.
П ример 7. Определить верхнюю границу для числа двоичных операций, необходимых для умножения многочлена ^atx степени не выше щ на многочлен ]С bjX] степени не выше п2', коэффициенты многочленов — положительные целые числа, не превосходящие т. Считается, что П2 О].
Решение. Для вычисления выражения 52г+7 = д,	являю-
щегося коэффициентом при хv в произведении многочленов (здесь О С и П1 + п2), требуется не более n2 +1 умножений и п2 сложений. Перемножаемые числа ограничены величиной т, а складываемые чи-2
ела ограничены величиной т ; но, так как мы должны сложить п2 таких чисел, надо взять в качестве границы для слагаемых величину n2m2. Таким образом, необходимое для вычисления коэффициента при х" число двоичных операций не превосходит
(n2 + l)(log2 т 4- I)2 + n2(log2(n2m2) + 1).
Поскольку в произведении многочленов имеется п1 + п2 ф! степеней х",
§ 1. ВРЕМЕННЫЕ ОЦЕНКИ СЛОЖНОСТИ
7
наша временная оценка умножения многочленов выражается как
(rij + 7l2 + 1) ^(n2 + l)(l°g2 m + 1) + n20°g2(n2m ) + 1)^ •
Пренебрегая единицами, получаем менее строгую, но более компактную оценку
n2(ni + п2) /(logm)2	\
log 2	+ (10g"2 + 2 loS 
Замечание. Положим п = п1 п2, и пусть m 16 и т у/п? (что обычно выполняется на практике). Тогда последнее выражение можно упростить до 4n2(log2 m)2. Этот пример показывает, что в общем случае нет единого «правильного ответа» на вопрос о нахождении границы для времени решения задачи. Можно искать границу как достаточно простую функцию от исходных данных (в рассмотренном случае это п1, п2 и т), которая для большинства исходных данных дает оценку, по порядку более или менее близкую к числу реально выполняемых двоичных операций. Поэтому, скажем, в примере 7 нет смысла заменять нашу оценку оценкой 4п т, так как при больших т она на много порядков больше реального числа операций.
До сих пор мы имели дело со сложением и умножением целых чисел. Две другие арифметические операции — вычитание и деление — имеют те же самые оценки временной сложности, что сложение и умножение соответственно: Time (вычитание ^-разрядного двоичного числа из /-разрядного) С max (&,/), Time (деление /с-разрядного двоичного числа на /-разрядное) A kl. Более точно, для описания вычитания надо расширить круг двоичных операций, включив в него операцию вычитания нуля или единицы из других нуля или единицы, возможно, с займом единицы из старшего разряда (см. пример 8).
Анализируя деление в двоичной системе, будем ориентироваться на иллюстрацию, подобную примеру 3. Пусть к I (если к < I, деление тривиально, т. е. частное равно нулю, а все делимое образует остаток). Нахождение частного и остатка требует самое большее к — / + 1 вычитаний. Каждое вычитание требует / или / + 1 двоичных операций, но в последнем случае в самом левом разряде разности будет стоять нуль, поэтому можно опустить одну двоичную операцию (считая, что это скорее операция «по учету данных», а не вычисление). Подобным образом мы игнорируем и другие технические детали, например, сравнение двоичных целых чисел (при определении минимального числа разрядов делимого, которые образуют число, большее
8
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
делителя), снос разрядов и т.п. Таким образом, наша оценка есть просто (& — I ф 1)/, что не больше kl.
Пример 8. Найти верхнюю границу для числа двоичных операций, необходимых для вычисления биномиального коэффициента
Решение. Так как = (n"m), то без потери общности можно предположить, что т ф п/2. Будем использовать следующую процедуру вычисления (п) = п(п — 1)(п - 2) • • • (п — т ф 1 )/(2 • 3 • • • т). Мы имеем т - 1 умножений и последующие т - 1 делений. Каждый раз максимально возможная величина пе,рвого числа при умножении и делении есть п(п — 1)(п - 2) • • • (п - т ф 1), а граница для второго числа есть п. Рассуждая аналогично примеру 6, убеждаемся в том, что граница, для общего числа двоичных операций есть 2 (m — l)m([log2 п] ф I)2, что при больших тип приблизительно равно 2m2(log2 п)2.
Теперь обсудим весьма удобное обозначение для краткой записи временных оценок сложности.
О-большое. Пусть /(п) и д(п) — функции положительного целочисленного аргумента, принимающие положительные (не обязательно целые) значения при всех п. Скажем, что /(п) = О(^(п)) (или просто f = 0(g)), если существует такая константа С, что /(п) всегда меньше С д(п). Например, 2п2 ф Зп - 3 = О(п2) (действительно, нетрудно доказать, что левая часть меньше Зп2).
Поскольку мы хотим использовать обозначение О-большое в более общей ситуации, дадим более широкое определение. Рассмотрим f и д как функции нескольких переменных и не будем обращать внимание на соотношение между ними при небольших значениях п. Так же, как это делается в теории пределов в анализе, будем рассматривать лишь большие значения п.
Определение. Пусть /(nj, п2,..., пг) и g(ni, п2,..., пг) — две функции, определенные на наборах из г положительных целых чисел. Предположим, что существуют такие константы В и С, что, когда все rij больше В, обе функции положительны и f(n^ ,п2,..., пг) < Сд(п1,п2,... ,пг). В этом случае говорим, что функция f ограничена функцией д, и пишем f = 0(g).
Заметим, что равенство в обозначении f = 0(g) следует, скорее, понимать как неравенство <, а (9-болыпое — как некоторую мультипликативную константу.
Пример 9. а) Пусть f(n) — произвольный многочлен степени d с положительным старшим коэффициентом. Тогда, как легко показать, f(n) = 0(nd). В более общем случае можно показать, что
§ 1. ВРЕМЕННЫЕ ОЦЕНКИ СЛОЖНОСТИ	9
f = 0(g), если f(n)/g(ri) имеет конечный предел при п —> оо.
Ь)	Если £ — сколь угодно малое положительное число, можно показать, что log п — О(пе) (т.е. при больших п функция log меньше любой степенной, сколь малой ни была бы степень). Это следует из равенства	= 0, которое доказывается с помощью правила
Лопиталя.
с)	Если /(п) обозначает число к двоичных разрядов числа п, то, как следует из приведенных выше формул для к, f(n) = O(logn). Заметим, что такое же соотношение выполнено, если Дп) — число разрядов в разложении п по произвольному фиксированному основанию b. С другой стороны, если основание b не фиксированно, а может расти, и f(n,b) — число разрядов в записи по основанию 6, то Л".'>) = о(^).
d)	Имеем Time (п • m) = O(logn • logm), где в левой части стоит число двоичных операций, требующихся для умножения п на т.
е)	В примере 6 можно записать Time(n!) = 0((пlogп)2).
f)	В примере 7
Time (Е^’-Е bjX1^ = О ^n1n2((logm)2 +log(min(n1,n2)))) •
Функции f(n) и f(ni, п-2,..., nr) у нас будут часто обозначать время, которое требуется для решения некоторой арифметической задачи с целым числом п или с набором целых чисел пг, п2,..., пг в качестве исходных данных. Мы хотим получить наши оценки в виде достаточно простых функций д(п). При этом желательно, чтобы функции д(п) не давали чрезмерно завышенное представление о времени решения задач (хотя с чисто математической точки зрения замена функции д(п) в соотношении f = О (д) любой большей функцией корректна).
Образно говоря, соотношение Дп) = 0(nd) показывает, что функция f растет приблизительно как d-я степень аргумента. Например, если d = 3, то оно говорит нам, что удвоение аргумента приведет к увеличению функции приблизительно в 8 раз. Соотношение Дп) = O(logdn) (где logd п означает (logn)d) показывает, что функция возрастает приблизительно как d-я степень числа двоичных разрядов в п. Это так, потому что с точностью до мультипликативной константы число бит равно приблизительно logn (а именно, log п/ log 2 = l,44271ogn). Так, например, если Дп) = O(log3n), то удвоение числа бит в п (что гораздо сильнее увеличивает аргумент, нежели его удвоение) приводит к увеличению f(n) приблизительно в 8 раз.
10
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
Заметим, что запись /(п) = 0(1) означает, что функция f ограничена некоторой константой.
Замечание. Как мы видели, при умножении двух чисел приблизительно одинакового размера можно использовать формулу Time (^-разрядное двоичное число • Апразрядное двоичное число) = 0(А?2). Следует заметить, что было предпринято много усилий по повышению скорости умножения двух Агразрядных двоичных чисел при больших к. Используя специальные приемы, много более сложные, чем обычный школьный способ умножения, математики смогли придумать процедуру умножения двух целых чисел из к бит, требующую всего 0(A;log A? log log Ат) двоичных операций. Это лучше, чем <Э(А:2), и даже лучше, чем 0(А,1+е) при любом сколь угодно малом £ > 0. Однако дальше мы будем пользоваться только приведенными выше грубыми оценками для времени, необходимого для умножения.
13 общем случае, когда оценивается число двоичных операций, требующихся для решения какой-либо задачи, сначала надо определить и выписать подробную процедуру решения задачи. Конкретная пошаговая процедура выполнения вычислений называется алгоритмом. Конечно, может существовать много разных алгоритмов, выполняющих одну и ту же работу. Можно воспользоваться тем из них, который попроще в записи, или тем, который быстрее работает, или выбрать какой-то компромисс между простотой и быстродействием. Использованный выше алгоритм умножения п на т далек от самого быстрого из известных. Но вместе с этим он много быстрее метода повторного сложения (m-кратного сложения числа п с собой).
Пример 10. Оценить время, требующееся для перевода числа из к бит в десятичную систему счисления.
Решение. Пусть п - целое из к бит, записанное в двоичной системе счисления. Алгоритм перевода следующий. Разделим п на 10 = (1010)2- Остаток от деления — который является одним из чисел 0, 1, 10, 11, 100, 101, ПО, 111, 1000 или 1001 — даст содержимое d0 разряда единиц. Частное от деления возьмем вместо п, поделим на (1010)2 и возьмем остаток от этого деления в качестве dr, а частное — в качестве делимого при следующем делении на (1010)2-Это процесс должен повторяться столько раз, сколько десятичных разрядов содержится в числе п, т. е. ] + 1 = O(k') раз. Тогда процесс будет завершен. (Наши записи мы могли вести и в десятичной системе, используя более привычные обозначения для остатков 0,1,2,3,..., 9 вместо 0, 1,10, И,. - -, 1001.) Как много двоичных операций будет сделано? Мы сделали О(к) делений, каждое из них требовало О(4А;) операций (делимое содержит не более к бит, а де
§ 1. ВРЕМЕННЫЕ ОЦЕНКИ СЛОЖНОСТИ
11
литель (1010)2 — 4 бита). Но <9(4fc) эквивалентно 0(к) (постоянный множитель несуществен в обозначении О-большое). Поэтому общее число двоичных операций равно 0(к)  0(к) = 0(k2). Если желательно выразить оценку в терминах п, а не к, то, используя равенство к — O(logn), можно записать
Time (перевод п в десятичную систему счисления) = O(log2 п).
Пример И. Оценить время, требующееся для перевода числа п из к бит в систему счисления по основанию 6, которое может быть очень большим.
Решение. Используя алгоритм примера 10 (только делим теперь на число b из I бит), получаем, что каждое деление выполняется дольше (если I велико) и требует О(кГ) двоичных операций. А сколько раз придется делить? Следует заметить, что число разрядов при записи п в 6-ичной системе равно О(к/1) (см. пример 9(c)). Поэтому общее число двоичных операций во всех делениях равно О(к/Г)  О(кГ) = О(к ). Это тот же ответ, что и в примере 10. Значит, наша оценка для времени перевода числа в новую систему счисления не зависит от основания системы (сколь бы большим оно ни было). Это так, поскольку увеличение времени для определения содержимого каждого разряда компенсируется уменьшением числа этих разрядов.
Пример 12. Выразить при помощи О-большого время, требующееся для вычисления а) п\, Ь) (Д) (см. примеры 6 и 8).
Решение, a) O(n2 log2 n), b) O(m2 log2 п).
В завершение дадим одно определение, являющееся фундаментальным в вычислительных науках и в теории алгоритмов.
Определение. Алгоритм для проведения вычислений, определяющихся целыми числами п2,..., пг из кх, к2,. .., кг бит, соответственно, называется полиномиальным по времени алгоритмом, если существуют такие целые числа d1, d2,   ., dr, что число двоичных операций при работе этого алгоритма равно О (к^1 к22   к^г').
Таким образом, обычные арифметические операции +, -, X, 4-дают примеры полиномиальных по времени алгоритмов. Еще один пример — перевод чисел из одной системы счисления в другую. С другой стороны, вычисление п\ не является такой операцией. (Однако, если требуется найти лишь заданное число значащих цифр, например, первые 1000 двоичных разрядов, то можно найти п\ за полиномиальное время при помощи формулы Стирлинга.)
12
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
УПРАЖНЕНИЯ
1.	Умножить (212)з на (122)з.
2.	Разделить (40122)? на (126)?.
3.	Перемножить двоичные числа 101101 и 11001 и разделить 10011001 на 1011.
4.	В системе счисления по основанию 26, представляя 0-25 буквами A-Z: а) умножить YES на NO, б) разделить JQVXHJ на WE.
5.	Записать число е = 2,7182818... а) в двоичной системе счисления (с 15 знаками после запятой), б) по основанию 26 (с 3 знаками после запятой).
6.	Под чисто периодической дробью с периодом f в 6-ичной системе понимается число между 0 и 1, в 6-ичной записи которого после запятой стоит периодическая последовательность периода f. Например, в десятичной системе счисления 1/3 — чисто периодическая дробь с периодом 1, а 1/7 — чисто периодическая дробь с периодом 6. Доказать, что несократимая дробь c/d между 0 и 1 является чисто периодической с периодом f в 6-ичной системе тогда и только тогда, когда — 1 есть кратное числа d.
7.	а) В шестнадцатиричной системе с Ь — 16 буквы А-F изображают цифры от 10 до 15, соответственно. Разделить (131B6C3)ie на (lA2F)is.
б) Объяснить, как переводятся числа из двоичной системы в шестнадцатиричную и обратно и почему эти операции требуют много меньше времени, чем в полученной в примере 11 общей оценке для перевода из двоичной системы в 6-ичную.
8.	Описать двоичные операции при вычитании битов аналогично тому, как это было сделано в тексте для сложения (список из 5 возможностей).
9.	а) Используя обозначение О-большое, оценить в терминах простой функции от п число двоичных операций при вычислении Зп в двоичной системе.
б) 'Го же самое для пп.
10.	Оценить в терминах простой функции от п и N число двоичных операций при вычислении Nn.
11.	Для суммы квадратов первых п натуральных чисел справедлива формула
2 _ n(n + 1)(2n + 1) “	6
а)	Используя обозначение О-большое, оценить в терминах п число двоичных операций, требующихся для вычисления левой части этого равенства.
б)	Оценить число двоичных операций, требующихся для вычисления правой части этого равенства.
12.	Используя обозначение О-большое, оценить число двоичных операций, требующихся для умножения г х n-матрицы на п х s-матрицу, если все элементы матриц не превосходят т.
13.	Цель этого упражнения — оценить в терминах п число двоичных операций, требующихся для вычисления произведения всех простых чисел, меньших п. При этом предполагается, что список всех простых чисел, не превосходящих п, уже составлен.
а)	Обозначим тг(п) число простых чисел, не превосходящих п. Согласно теореме о распределении простых чисел тг(п) имеет асимптотику n/logn. Это означает, что пу । п стремится к 1 при п —» оо. Используя этот факт, оценить число двоичных разрядов в произведении всех простых чисел, меньших п.
§ 2. ДЕЛИМОСТЬ И АЛГОРИТМ ЕВКЛИДА
13
б)	Найтн границу для числа двоичных операций при любом из умножений, которые производятся при вычислении этого произведения.
в)	Оценить число двоичных операций, требующихся для вычисления произведения всех простых чисел, меньших п.
14.	а) Пусть надо проверить простоту числа п при помощи последовательного деления на все нечетные числа, не превосходящие у/п. Оценить число двоичных операций.
б) В постановке п. а) дополнительно предположим, что имеется список простых чисел, не превосходящих у/п. Тогда можно ограничиться делением на числа из этого списка (а не делить на все нечетные). Дать оценку числа двоичных операций в этом случае. Использовать теорему о распределении числа простых чисел.
15.	Оценить время, необходимое для проверки того, имеет ли число п простой делитель, не превосходящий т. Предположим, что имеется список всех простых чисел, не превосходящих т. Опять воспользоваться теоремой о распределении числа простых чисел.
16.	Пусть п — очень большое целое число, записанное в двоичной системе счисления. Найти простой алгоритм вычисления [т/Е] за O(log3 п) двоичных операций. Здесь [ ] — целая часть числа.
§ 2.	Делимость и алгоритм Евклида
Делители и делимость. Для данных целых чисел а и Ь говорят, что а делит Ь (или Ь делится на а), и используют обозначение а\Ь, если существует такое целое число d, что b = ad. В этом случае а называют делителем Ь. Любое целое число b > 1 имеет, по крайней мере, два положительных делителя: 1 и Ь. Под собственным делителем Ь подразумевают любой положительный делитель, не равный Ь, а под нетривиальным делителем b — любой положительный делитель, не равный 1 или Ь. Простым числом, по определению, является целое число, большее 1, которое не имеет положительных делителей,'отличных от 1 и самого себя; число называется составным, если оно имеет, по крайней мере, один нетривиальный делитель. Следующие свойства делимости легко выводятся непосредственно из определений:
1.	Если а\Ь ис — любое целое число, то а\Ьс.
2.	Если а\Ь и Ь\с, то а\с.
3.	Если а\Ь и а\с, то а\Ь ± с.
Для простого р и целого неотрицательного числа а мы используем запись ра11Ь, подразумевая, что ра — наивысшая степень р, делящая Ь, т.е. pa\b, а р“+1 /6. В этом случае говорят, что ра точно делит Ь.
Основная теорема арифметики утверждает, что любое натуральное число п может быть записано в виде произведения простых чисел единственным образом (с точностью до перестановки сомножителей). Принято записывать это разложение в виде произведения различных простых сомножителей в соответствующих степенях, располагая простые числа в порядке возрастания. Например,
14
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
1200 = 23 • 3 • 52 • 7.
Следующие два свойства делимости вытекают из основной теоремы.
4.	Если простое число р делит ab, то р\а или р\Ь.
5.	Если т\а и п\а и если т и п не имеют общих делителей, больших 1, то тп\а.
Из единственности разложения целых чисел на простые множители следует также простой способ отыскания всех делителей п по его разложению. А именно, любой делитель d числа п должен быть произведением тех же простых сомножителей в степенях, не превышающих степени, точно делящие п. Таким образом, если ра||п, то для некоторого /3, удовлетворяющего условию 0	/3 С а. Например,
для нахождения делителей числа 4200 нужно взять 2 в степени 0, 1, 2 или 3, умножить на 3 в степени 0 или 1, на 5 в степени 0, 1 или 2 и на 7 в степени 0 или 1. Число всех сомножителей, таким образом, есть произведение числа способов выбора степени для каждого простого сомножителя, которое, в свою очередь, равно а + 1. Иначе говоря, число п = pVpV ' ' 'РгГ имеет (ад + 1)(а2 + 1) • • • (аг + 1) различных делителей. В частности, у числа 4200 их 48.
Наибольшим общим делителем двух данных целых чисел а и b (обозначаемым НОД (а, Ь) или просто (а, Ь)), не равных одновременно нулю, называется наибольшее целое число Д делящее и а, и Ь. Нет рудно доказать, что приведенное выше определение эквивалентно следующему: НОД (а, 6) — это единственное положительное число, которое делит а и b и делится на любой другой их общий делитель.
Если имеются разложения на простые множители двух чисел а и 6, — легко записать и НОД (а, Ь). Следует взять все простые числа, входящие в оба разложения, и каждое возвести в степень, равную минимуму из двух соответствующих показателей. Например, сравнивая разложение 10780 = 22 • 5•7 с приведенным выше разложением числа 4200, получаем, ч то НОД (4200,10780) = 22 • 5 • 7 = 140.
Наименьшее общее кратное чисел а и Ь обозначается НОК(а,6) и по определению является наименьшим целым положительным числом, делящимся как на а, так и на Ь. Имея разложение на простые множители чисел а и 6, можно получить НОК (а, 6), взяв все простые числа, входящие хотя бы в одно из разложений, и каждое возвести в степень, равную максимуму из двух показателей. Легко показать, что НОК (а, 6) = |аЬ|/НОД (а,Ь).
Алгоритм Евклида. При работе с большими числами часто случается, что их разложение на простые множители неизвестно. В частности, важным направлением исследований в теории чисел явля
§ 2. ДЕЛИМОСТЬ И АЛГОРИТМ ЕВКЛИДА
15
ется отыскание быстрых методов разложения больших чисел на простые множители. К счастью, существует сравнительно быстрый способ нахождения НОД (а, 6) даже в том случае, когда неизвестны простые делители а или Ь. Он называется алгоритмом Евклида.
Алгоритм Евклида работает следующим образом. Чтобы найти НОД (а, 6), где а > Ь, сначала делят а на Ь и записывают частное qt и остаток Гр а = q^b + гг. Затем производят второе деление, в котором b играет роль а, а Г} — роль b: b = q2r^ + г2. Затем делят гц на г2- Деление продолжают, каждый раз деля предпоследний остаток на последний, получая новые частное и остаток. Когда в конце концов получается остаток, который является делителем предыдущего остатка, то этот последний ненулевой остаток и есть наибольший общий делитель чисел а и Ь.
Пример 1. Найти НОД (1547, 560). Решение.
1547 = 2-560 + 427
560 = 1-427+ 133
427 = 3- 133 + 28
133 = 4 • 28 + 21
28 = 1 • 21 + 7.
Так как 7|21, то НОД (1547,560) = 7.
Предложение 1.2.1. Алгоритм Евклида всегда дает наибольший общий делитель за конечное число шагов. Кроме того, для а > Ь
Time (нахождение НОД (а, 6) по алгоритму Евклида) = 0(logJ(a)).
Доказательство. Доказательство первого утверждения детально изложено во многих учебниках по элементарной теории чисел, поэтому изложим его кратко. Во-первых, легко показать, что остатки строго уменьшаются с каждым шагом и, следовательно, в конце концов достигнут нуля. Чтобы убедиться, что последний остаток есть НОД, воспользуемся вторым определением НОД. Получаем, что если некоторое число делит и а, и Ь, то оно должно делить а так как оно делит 6 и то оно должно делить г2, и т. д. В конце концов, получаем, что оно должно делить последний ненулевой остаток. С другой стороны, переходя от последнего шага к предыдущему, легко видеть, что последний остаток должен делить все предыдущие остатки, а также а и Ь. Итак, это НОД, так как НОД — это единственное число, которое делит а и b и в то же время делится на любой их общий делитель.
16
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
Теперь докажем второе утверждение. Главный вопрос состоит в том, сколько раз производится деление. Покажем, что остатки не просто убывают, а убывают довольно быстро.
Лемма. Tj+z < rj/2.
Доказательство леммы. Если rj+1 rj/2, то сразу получаем Tj+2 < С гз1^- Пусть теперь rj+1 > Xj/2. В этом случае следующее деление дает гj = 1 • rj+1 + rj+2 и Vj+2 = rj - Tj+i < Tj/2. Лемма доказана.
Вернемся к доказательству теоремы. Так как за каждые два шага остаток уменьшается, по крайней мере, вдвое и так как остаток не может стать меньше 1, то производится самое большее 2 [log2 а] делений. Эта величина есть O(loga). Каждое деление производится над числами, не превышающими а, и, следовательно, проводится за O(log a) двоичных операций. Таким образом, общее время работы составляет О (log а) • О (log2 а) = О (log3 а), что и требовалось доказать.
Замечание. Если провести более тщательный подсчет числа двоичных операций, учитывая уменьшение чисел, участвующих в делении, можно улучшить оценку времени работы алгоритма Евклида до О (log2 a).
Предложение 1.2.2. Пусть d = НОД (а, 6), где а > Ь. Тогда существуют такие целые числа и и и, что d = иа + Ьи. Другими словами, НОД двух чисел можно представить в виде линейной комбинации этих чисел с целыми коэффициентами. Кроме того, для нахождения чисел и и и достаточно O(log3 а) двоичных операций.
Схема доказательства. Проходя последовательность равенств в алгоритме Евклида снизу вверх и выражая каждый раз d через все более ранние остатки, в конце концов получаем выражение d через а и Ь. На каждом шаге необходимо произвести одно умножение и одно сложение или вычитание. Таким образом, как легко убедиться, число двоичных операций снова есть O(log3a).
Пример 1 (продолжение). Чтобы представить 7 в виде линейной комбинации 1547 и 560,запишем
7 = 28 - 1 • 21 = 28 - 1 • (133 - 4 • 28)
= 5 • 28 - 1 • 133 = 5 • (427 - 3 • 133) -1-133
= 5 • 427 - 16 • 133 = 5 • 427 - 16 • (560 - 1 • 427)
= 21 • 427 - 16 • 560 = 21 • (1547 - 2 • 560) - 16 • 560
= 21-1547 - 58-560.
Определение. Говорят, что два целых числа а и Ь взаимно просты, если НОД (а, 6) = 1, т.е. если а и b не имеют общих делителей, больших 1.
§ 2. ДЕЛИМОСТЬ И АЛГОРИТМ ЕВКЛИДА
17
Следствие. Если а и b— взаимно простые числа и а > Ь, то можно найти представление 1 в виде целочисленной линейной комбинации этих чисел за полиномиальное время, точнее, за O(log3 а) двоичных операций.
Определение. Для любого целого положительного п функция Эйлера tp(n) определяется как число неотрицательных целых Ь, меньших п и взаимно простых с п:
у>(п) = |{0 < b < п | НОД (6, п) = 1}|.
def
Легко проверить, что <^(1) = 1 и что р(р) — р — 1 для любого простого р. Можно убедиться также, что для любого простого р
/ а\ а	а —1	а ( ,	1\
RP ) = Р - р = р 1---------.
\ Р/
Для этого достаточно заметить, что числа от 0 до ра — 1, которые не взаимно просты с ра, — это в точности те числа, которые делятся на р, а их количество равно р
В следующем параграфе главе будет показано, что функция Эйлера <р(п) обладает «мультипликативными свойствами», что дает возможность быстро вычислять значение используя разложение числа п на простые множители. А именно, если п записано в виде произведения степеней различных простых чисел ра, то (р(п) является произведением чисел
УПРАЖНЕНИЯ
1.	а) Доказать следующие свойства отношения р“||6: (i) если ра ||а и р^||6, то ра + /31| аб; (ii) если ра || а, р'1 ||6 и а < (3, то ра ||а ± 6.
б) Найти пример, опровергающий утверждение: если р“||а и ра || Ь, то р“ ||а + 6.
2.	Сколько делителей имеет число 945? Перечислить их все.
3.	Пусть п - положительное нечетное число.
а)	Доказать, что существует взаимно однозначное соответствие между такими делителями числа п, которые меньше у/п, и такими, которые больше у/п. (В этой части п может быть и четным.)
б)	Доказать, что существует взаимно однозначное соответствие между множеством тех делителей числа п, которые не меньше у/п, и множеством представлений п в виде разности s’2 — t2 квадратов двух неотрицательных целых чисел. (Например, 15 имеет два делителя 5, 15, которые не меньше -\/Т5, и 15 = 42 - I2 = 82 - 72.)
в)	Укажите все возможные способы записи числа 945 в виде разности квадратов двух неотрицательных целых чисел.
4.	а) Показать, что степень простого р, точно делящая п!, равна [n/p]-f-[n/p2]-|-[п/р3] + • • •. (Заметим, что эта сумма конечна.)
18
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
б)	Найти степени чисел 2, 3, 5, 7, точно делящие 100!, а затем выписать разложение 100! на простые множители.
в)	Пусть S(,(n) означает сумму цифр числа п в системе счисления по основанию Ь. Доказать, что степень числа 2, точно делящая п!, равна n — S^^n'). Вывести аналогичную формулу для произвольного простого р.
5.	Найти d = НОД (360, 294) двумя способами: а) найдя разложение обоих чисел на простые множители, найти затем разложение d; и б) при помощи алгоритма Евклида.
6.	При помощи алгоритма Евклида найти наибольший общий делитель для следующих четырех пар чисел и выразить его как линейную комбинацию этих чисел с целыми коэффициентами, а) 26, 19. б) 187, 34. в) 841, 160. г) 2613, 2171.
7.	Часто можно ускорить поиск НОД по алгоритму Евклида, если использовать деление с отрицательным остатком, т. е. выбирать из равенств гу = qj + 2Tj + \ — Tj+-2 и rj = q}+2rj+\ + гу+2 то, в котором значение ry+j наименьшее. При этом всегда будет г,+2 Д r; + i/2. Решить все четыре примера из упражнения 6, используя этот метод.	• -
8.	а) Доказать, что следующий алгоритм находит d = НОД (а, Ь) за конечное число шагов. Сначала заметим, что НОД (а, hj = НОД (|а|, |6|), т. е. без ограничения общности можно предполагать, что а и b — положительные числа. Если а и b оба четные, положим d = 2d', где d' = НОД (а/2, 6/2). Если одно из этих двух чисел нечетное, а другое (скажем, Ь) четное, то положим d = d1, где d' = НОД (а, 6/2). Если оба числа нечетные и различные, скажем, а > 6, то положим d = d', где d' = НОД (а — Ь,Ь). Наконец, если а = 6, положим d = а. Повторяем этот процесс, пока не получаем последний случай (когда числа равны между собой).
б)	Воспользоваться алгоритмом из пункта а) для нахождения НОД (2613, 2171), производя все действия в двоичной системе счисления, т. е. найти
НОД ((101000110101)2, (100001111011)2).
в)	Доказать, что алгоритм в пункте а) требует всего O(log2 а) двоичных Операций (если а > 6).
г)	Почему этот алгоритм в приведенном выше виде не всегда лучше алгоритма Евклида?
9.	Пусть а много больше Ь. Найти временную оценку сложности вычисления НОД (а, Ь) в терминах О-большого, которая была бы лучше, чем O(log3 а).
10.	Цель этой задачи — найти «наилучшую» оценку для числа делений в алгоритме Евклида. Числа Фибоначчи можно определить правилом /1 = 1, /2 = 1, fn + \ = fn + fn-l для n > 2, или, что то же самое, матричным равенством
//п-и Акр к71
к fn fn-J U 0 J
а)	Допустим, что а > 6 > 0 и для нахождения НОД (а, 6) по алгоритму Евклида (в стандартном варианте с неотрицательными остатками) требуется к делений. Показать, что а fk+2-
б)	Используя матричное определение для fn, доказать, что
ап - aln	1 + у/5	,	1 - у/5
А =	а =	а = —Г~ •
в)	Используя пункты а) и б), найти верхнюю оценку для k в терминах а. Сравнить с оценкой, получающейся из доказательства предложения 1.2.1.
§ 2. ДЕЛИМОСТЬ И АЛГОРИТМ ЕВКЛИДА
19
11.	Цель этой задачи — найти оценку времени, необходимого для вычисления НОД (а, 6) (где а > Ь), которая лучше оценки, полученной в предложении I. 2. 1.
а)	Показать, что число двоичных операций, требующихся для проведения деления а = qb + г, есть O((log 6)(1 + log q)).
б)	Применяя результат а) к каждому из O(loga) делений вида r,_i = g,+ir,+ г,-+1, получить временную оценку в виде O((log 6)(logа)).
12.	Рассмотрим многочлены с вещественными коэффициентами (можно рассматривать ту же задачу для многочленов с коэффициентами из произвольного поля). Пусть есть два многочлена fug. Будем говорить, что /[д, если существует такой многочлен /г, что д = fh. Определим НОД (f,g) аналогично тому, как это делалось для целых чисел, а именно, как многочлен наибольшей степени, делящий /ид. Многочлен НОД (f,g) определяется не однозначно, так как, умножая его на любую ненулевую константу, можно получить другой многочлен с теми же свойствами. Однако единственности можно добиться, если потребовать, чтобы многочлен НОД был нормированным, т. е. имел старший коэффициент 1. Многочлены /ид называются взаимно простыми, если их НОД есть многочлен-константа 1. Постройте процедуру нахождения НОД для многочленов, полностью аналогичную алгоритму Евклида для целых чисел, и примените ее для нахождения а) НОД (z4+z2 + l,z2 + l) и б) НОД (z4 — 4z3 + 6z2 — 4х + 1, z3 — z2 + х — 1). В каждом случае найдите многочлены u(z) и v(z), представляющие НОД в виде u(z)/(z) + v(x)g(x).
13.	Из алгебры известно, что многочлен имеет кратный корень тогда и только тогда, когда он имеет общий делитель со своей производной, в этом случае кратные корни многочлена /(х) являются корнями многочлена НОД (/,/'). Найти кратные корни многочлена х4 — 2z3 — z2 + 2х + 1.
14.	(Прежде, чем приступить к этому упражнению, вспомните правила действий с комплексными числами. Заметьте, что так как (а + Ы)(а — Ы) есть вещественное число а2 + 62, то можно производить деление по формуле (с + </г)/(а + 6г) = (с + di)(a — 6г)/(а2 + 62).) Гауссовыми числами называются комплексные числа, у которых действительная и мнимая части суть целые числа. На комплексной плоскости они изображаются вершинами квадратов, которые образуют целочисленную решетку. Если а и /? — гауссовы числа, то говорят, что а|/?, если существует такое гауссово число 7, что /3 = a~f. Определим НОД (а,/3) как максимальное по модулю гауссово число 6, делящее как а, так и /?. (Напомним, что модуль |6| — это расстояние от точки 6 на комплексной плоскости до точки 0, т. е. квадратный корень из суммы квадратов действительной и мнимой частей). НОД определен не единственным образом, потому что его можно умножить на ±1 или ±г и получить другое 6 с тем же модулем и тоже делящее и а, и /3. Это дает четыре возможности. Мы будем рассматривать любое из этих четырех чисел как НОД.
Заметим, что любое комплексное число может быть записано в виде суммы гауссова числа и комплексного числа, действительная и мнимая части которого заключены в промежутке от —1/2 до 1/2. Показать, что поэтому мы можем разделить одно гауссово число а на другое гауссово число /3 и получить частное и остаток в виде гауссовых чисел, причем остаток по модулю будет меньше 0. Используйте этот факт, чтобы сформулировать алгоритм Евклида для получения НОД двух гауссовых чисел. Воспользуйтесь этим алгоритмом для нахождения а) НОД (5 + 6г, 3 — 2г) и б) НОД (7 — 11г, 8 — 9г). В каждом случае представьте НОД в виде линейной комбинации ua+vfi, где и и v являются гауссовыми числами.
15.	Последняя задача дает эффективный способ представления некоторых больших простых чисел в виде суммы двух квадратов. Например, предположим,
20
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
что р — простое число, делящее число вида Ь6 + 1. Мы хотим записать р в виде р = с1 + d2, где с и d — целые. Это эквивалентно нахождению нетривиального гауссова делителя числа р, так как с2 + d2 = (c-f-di)(c — di). Мы можем действовать следующим образом. Заметим, что
Ь6 + 1 = (62 + 1)(64 - b2 + 1) и 64 - fe2 + 1 = (62 - I)2 + 62.
По четвертому свойству делимости простое число р должно делить один из множителей в правой части первого равенства. Если р|(62 + 1) = (6 + г)(6 — г), то НОД (р, 6 +г) дает нам нужное c + di. Если р|(64 — 62 +1) = ((62 — 1) + 6г)((62 — 1) —6 г), то НОД (р, (62 — 1) + Ы) дает нам с + di.
Пример. Простое число 12277 делит второй сомножитель в произведении 206 + 1 = (2П2 + 1)(204 - 202 + 1). Поэтому найдем НОД (12277, 399 + 20г):
12277 = (31 - 2г)(399 + 20г) + (-132 + 178г),
399 + 20г = (-1 - г)( —132 + 178г) + (89 + 66г),
-132 + 178г = (2г)(89 + 66г).
Таким образом, НОД есть 89 + 66г, т. е. 12277 = 892 + 662.
а)	Воспользовавшись равенством 196 + 1 = 2- 132 • 181 • 769 и алгоритмом Евклида для гауссовых чисел, представить 769 в виде суммы двух квадратов.
б)	/Хналогично представить простое число 3877 в виде суммы двух квадратов, зная, что 3877 делит 156 + 1.
в)	Зная, что простое число 38737 делит 236 + 1, представить 38737 в виде суммы двух квадратов.
§ 3. Сравнения
Основные свойства. Пусть даны три целых числа а, b и т; говорят, что а сравнимо с b по модулю т, если разность а — Ь делится на т. Записывают это так: а = b (mod m). Число т называется модулем сравнения. Из определения легко выводятся следующие свойства:
1.	(i) а = a (mod m): (ii) а = b (mod m) тогда и только тогда, когда b = a (mod m); (iii) если а = b (mod m) и b = c (mod m), то a ~ c (mod m). Для фиксированного m свойства (i)-(iii) означают, что сравнимость по модулю т есть отношение эквивалентности.
2.	Для фиксированного т каждый класс эквивалентности по этому отношению обладает в точности одним представителем в множестве чисел от 0 до т — 1. (Другими словами, любое целое число сравнимо по модулю т ровно с одним целым числом в промежутке от 0 до т — 1). Множество классов эквивалентности (они называются классами вычетов) будет обозначаться Z/mZ. Любое множество представителей (по одному от каждого класса — прим, перев.) называется полной системой вычетов по модулю т.
§ 3. СРАВНЕНИЯ
21
3.	Если а = Ь (mod т) и с = d (mod m), то а ± с = b ± d (mod m) и ас = bd (mod m). Другими словами, сравнения (по одному и тому же модулю) можно складывать, вычитать и перемножать. Таким образом, множество Z/mZ является коммутативным кольцом, т. е. классы вычетов можно складывать, вычитать и перемножать (причем результат не зависит от того, какие представители классов эквивалентности используются), и эти операции удовлетворяют обычным аксиомам ассоциативности, коммутативности, существования противоположного элемента и т. д.
4.	Если а = b (mod m), то а = b (mod d) для любого делителя d\m.
5.	Если а = b (mod m), а = b (mod п) и если тип взаимно просты, то а = b (mod mn). (См. пятое свойство делимости в § L2.)
Предложение 1.3.1. Обратимыми по умножению являются те элементы из Ъ/тЪ, представители которых взаимно просты с т, т. е. числа а, для которых существует такое Ь, что ab = 1 (mod m), — это те и только те числа а, для которых НОД (а, т) = 1. Кроме того, если НОД (а,т) = 1, то обратный элемент b может быть найден за O(log m) двоичных операций.
Доказательство. Если бы d = НОД (а, т) был больше 1, то ни для какого b сравнение ab = 1 (mod m) не могло бы выполняться, так как в противном случае d делил бы ab — 1 и, следовательно, d\ 1. Обра тно, если НОД (a, m) = 1, то согласно свойству 2 можно считать, что а < т. Тогда в соответствии с предложением L2.2 существуют целые числа и и и, которые можно найти за О (log3 т) двоичных операций и для которых аи + vm = 1. Полагая b = и, получаем, что m|l - аи = 1 - ab, что и требовалось.
Замечание. Если НОД (a,m) = 1, то под отрицательной степенью а п (mod п) подразумевают п-ю степень обратного класса вычетов, т.е. класс вычетов, содержащий п-ю степень любого целого числа b такого, что ab = 1 (mod m).
Пример 1. Найти 160 1 (mod 841), т.е. элемент, обратный к 160 по модулю 841.
Решение. Воспользовавшись результатом упражнения 6 с) из предыдущего раздела, получим ответ 205.
Следствие 1. Если р — простое число, то каждый ненулевой класс вычетов по модулю р имеет обратный, который может быть найден за O(log3 р) двоичных операций. Кольцо Т^рЪ является полем. Мы часто будем обозначать это поле Fp и называть полем из р элементов.
Следствие 2. Пусть требуется решить линейное сравнение ах = b (mod m); не теряя общности, можно считать, что 0
22
ГЛ. 1. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
а,Ь < т. Тогда если НОД (a,m) = 1, то сравнение имеет решение xq, которое можно найти за O(log m) двоичных операций, и любое решение имеет вид х = х0 + тп, где п — некоторое целое число. Если же НОД (a, m) = d, то сравнение имеет решение тогда и только тогда, когда d\b, и в этом случае данное сравнение эквивалентно (в смысле совпадения множества решений) сравнению ах = b' (mod т'), где а' = а/d, b' = b/d, т = m/d.
Первое следствие есть просто частный случай предложения I. 3. I. Второе следствие легко вывести из предложения 1.3. 1 и определений. Так же, как при решении аналогичных линейных уравнений с вещественными коэффициентами, для решения линейных уравнений в Z/mZ умножают обе части на элемент, мультипликативно обратный коэффициенту при неизвестном.
Вообще, при вычислениях по модулю т аналогом понятия «ненулевой» является «взаимно простой с т». Выше было показано, что так же, как уравнения, сравнения можно складывать, вычитать и умножать (см. свойство 3 для сравнений). Их можно также делить, если «знаменатель» взаимно прост с т.
Следствие 3. Если а = b (mod т), с = d (mod m) и НОД (с, т) = 1 (е этом случае, конечно, НОД (d,m) = 1), то ас 1 = bd 1 (mod т) (где с и d обозначают целые числа, являющиеся обратными к с и d по модулю т).
Для доказательства следствия 3 рассмотрим сравнения с(ас 1 — bd ) = (асе — bdd ) = а — b = 0 (mod т), и так как т не имеет общих делителей с с, го т должно делить ас ' - bd \
Предложение 1.3.2 (Малая теорема Ферма). Пусть р — простое число. Любое целое число а удовлетворяет сравнению ар = a (mod р), и любое целое число а, не делящееся на р, удовлетворяет сравнению ар =1 (mod р).
Доказательство. Предположим сначала, что р /а. Покажем, что Оа, 1а, 2а, За,..., (р — 1)а есть полная система вычетов по модулю р. В самом деле, если бы какие-либо два из этих чисел, скажем ia и ja, принадлежали одному классу вычетов, т. е. ia = ja (mod р), это означало бы, что p\(i — j)a, а так как а не делится на р, мы получили бы p\i — j. Так как i и j меньше р, это возможно лишь в случае i = j. Таким образом, числа а,2а,... ,(р — 1)а, рассматриваемые по модулю р, являются перестановкой чисел 1,2,... ,р — 1. Отсюда следует, что произведение всех чисел первого набора сравнимо по модулю р с произведением чисел второго набора, т. е. ар (р— 1)! = (р-1)! (mod р). Получаем, что р|(р — 1)!(ар 1 — 1). Так как (р — 1)! не делится на р, получим р\ар~1 — 1, что и требовалось доказать. Наконец, если умно
§ 3. СРАВНЕНИЯ
23
жить обе части сравнения ар 1 = 1 (mod р) на а, получится первое
сравнение из утверждения теоремы для случая, когда а не делится на р. Если же а делится на р, то сравнение ар = a (mod р) является
тривиальным, так как обе части его сравнимы с нулем по модулю р. Это завершает доказательство предложения.
Следствие. Если а не делится на р и если п = т (mod (р — 1)), то а = a (mod р).
Доказательство следствия. Пусть п > т. Так как р — 1|п — т, то п = т + с (р — 1) для некоторого положительного целого с. Умножив почленно с сравнений ар = 1 (mod р) и сравнение а = a (mod р), получим искомый результат: а = a (mod р).
Пример 2. Найти последнюю цифру в семиричной записи чи-„1000000 ела 2
Решение. Пусть р = 7. Так как 1000000 при делении на р — 1 = 6 дает остаток 4, получаем 2	= 2 = 16 = 2 (mod 7), и,
значит, последняя цифра равна 2.
Предложение 1.3.3 (Китайская теорема об остатках). Пусть требуется решить систему сравнений по различным модулям:
х = О1 (mod mi), х = а2 (mod m2),
х = ar (mod mr),
причем любые два модуля взаимно просты: НОД (m,,mj = 1 для i j. Тогда эта система разрешима и любые два решения сравнимы по модулю М = т1т2   -тГ.
Доказательство. Сначала докажем единственность по модулю М (последнее утверждение теоремы). Пусть х' и х" — два решения системы. Положим х = х' — х". Тогда х сравним с нулем по любому модулю mi, а значит, и по модулю М (по пятому свойству сравнений). Теперь покажем, как найти решение х.
Обозначим через Mi = М/пц произведение всех модулей, кроме ?-го. Очевидно, что НОД (m,-,Mj = 1 и, следовательно, существует такое целое TV,, что MiNi = 1 (mod mJ (число TV,- может быть найдено, например, по алгоритму Евклида). Положим теперь х = ^Te^MiNi. Тогда для каждого i все слагаемые в этой сумме, за исключением i-го, делятся на т,, так как mt\Mj для всех i j. Таким образом, для каждого i имеем х = aiMiNi = ai (mod mJ, что и требовалось доказать.
Следствие. Функция Эйлера обладает свойством «мультипликативности», т. е. tp(mn} = <p(m)<p(n), если НОД (m,n) = 1.
24
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
Доказательство следствия. Для доказательства необходимо подсчитать количество целых чисел между нулем и тп— 1, не имеющих общих делителей с тп. Для каждого j из этого множества обозначим через Д наименьший неотрицательный вычет по модулю т (т. е. О С Д < т и j = Д (mod m)) и через Д наименьший неотрицательный вычет по модулю п (т. е. О Д Д < п и j = Д (mod п)). Из китайской теоремы об остатках следует, что каждой паре Д, Д соответствует одно и только одно число j в промежутке от 0 до тп — 1, для которого j = Д (mod пТ) и j = j2 (mod п). Заметим, что число j не имеет общих делителей с тп тогда и только тогда, когда оно не имеет общих делителей с т (это эквивалентно взаимной простоте Д и т) и не имеет общих делителей с п (что эквивалентно взаимной простоте Д и п). Таким образом, числа Д взаимно простые с тп, находятся во взаимно однозначном соответствии с парами Д,Д, для которых О Д Д < т, НОД (Д,т) = 1, 0 Д < п, НОД (Д,п) = 1. Число возможных значений для Д равно <р(т), а для Д равно <р(тг). Итак, число пар равно tp^m')tp(n'). Следствие доказано.
Поскольку каждое число п может быть представлено в виде произведения степеней различных простых чисел и уже установлена формула ср(р“) = р°(1 — р Х), следствие означает, что при п = р^'р?2   р°г
/	1 \	/	1 \	/	1 \
/	\	О' ] Il Х \	02 1-1	I	<*г / 1	I
Ч(га) = Р1 1------Р2 1------------ • • Pr 1---
\ P1J \	Р1)	\ Рг)
Из формулы для <р(п) выводится следующее утверждение, которое будет использовано при обсуждении криптосистемы RSA с открытым ключом.
Предложение 1.3.4. Пусть известно, что п есть произведение двух простых чисел. Тогда, зная эти числа р и q, можно найти ip(n) и обратно, зная п и <р(тг), можно найти р и q. Точнее, (р(п) можно вычислить по р и q за O(logTi) двоичных операций, а числа р и q можно вычислить по п и <р(тг) за O(log3 п) двоичных операций.
Доказательство. Утверждение очевидно, если п четно, так как в этом случае р = 2, q = п/2 и <р(п) = п/2 — 1; поэтому предположим, что п нечетно. В силу мультипликативности функции <р для п = pq получаем <р(п) = (р — 1)(<? — 1) = п + 1 — (р + q). Таким образом, значение <р(п) может быть получено из чисел р и q при помощи одного сложения и одного вычитания. Обратно, предположим, что известны п и <р(п), и надо найти р и q. Для неизвестных величин р и q известны их произведение п и сумма p + q— п + 1 — <р(п).
§ 3. СРАВНЕНИЯ
25
Обозначим последнее выражение через 2b (р + q — число четное). Но два числа, произведение которых равно п, а сумма 26, должны быть корнями квадратного уравнения z — 2b z + п = 0. Итак, р и q равны b ± Vo—п. Наибольшее время при вычислении занимает процедура извлечения квадратного корня: в соответствии с упражнением 16 из § 1.1 на нее потребуется O(log3 п) двоичных операций. Предложение доказано.
Перейдем к обобщению малой теоремы Ферма, принадлежащему Эйлеру.
Предложение 1.3. 5. Если НОД (a, т) = 1, то ар('т} = 1 (mod т}.
Доказательство. Сначала докажем это утверждение в случае, когда т есть степень простого числа: т = ра. Проведем индукцию по о. При о=1 получается малая теорема Ферма (предложение I. 3.2). Пусть о 2 и формула верна для (о - 1)-й степени р. Тогда ар р = 1 + р b для некоторого целого Ь. Возводя обе части этого равенства в степень р и используя тот факт, что все биномиальные коэффициенты в выражении (1 + а?)р, кроме первого и последнего, делятся на р, получаем, что ар р на 1 больше суммы, каждое слагаемое которой делится на р . Другими словами, а — 1 делится на ра. Итак, теорема доказана для степеней простых чисел.
Наконец, из мультипликативности функции р следует, что если р“||т, то ар(т'> = 1 (mod р°) (достаточно возвести обе части сравнения ) = 1 (mod р“) в соответствующую степень). Поскольку это верно для любого р ||т и поскольку степени различных простых чисел взаимно просты, из свойства 5 сравнений следует, что а<р(т) 1 (mod m).
Следствие. Если НОД (a, m) = 1 и если п — наименьший неотрицательный вычет п по модулю р(тп), то ап = ап (mod m).
Это следствие доказывается так же, как следствие из предложения 1.3.2.
Замечание. Как видно из доказательства предложения I. 3. 5, существует и меньшая степень а, сравнимая с 1 по модулю т: наименьшее общее кратное показателей степеней, сравнимых с 1 по модулю ра для каждого р“||т. Например, а = 1 (mod 105) для а, взаимно простого с 105, потому что 12 кратно 3 — 1,5 — 1 и 7-1. Заметим, что 92(105) = 48. А вот еще один пример.
Пример 3. Вычислить 21000000 (mod 77).
Решение. Так как 30 есть наименьшее общее кратное чисел </?(7) = 6 и «/’(И) = Ю, на основании приведенного выше замечания получим 230 = 1 (mod 77). Так как 1000000 = 30 -33333+ 10, получим
26
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
„1000000 _ „10	,,
2	= 2	= 23 (mod 77). Другой способ решения заключается в
том, чтобы вычислить 21000000 (mod 7) (так как 1000000 = 6-166666+4, то это 24 = 2), то же проделать для 21000000 (mod 11) (так как 1000000 делится на 11 — 1, это 1) а затем, используя китайскую теорему об остатках, в промежутке от 0 до 76 найти такое х, что х = 2 (mod 7) и х = 1 (mod 11).
Возведение вычетов в степень методом повторного возведения в квадрат. Основным действием, которое часто встречается в арифметике вычетов, является отыскание значения bn (mod т) (т.е. нахождение наименьшего неотрицательного вычета) в случае, когда тип очень велики. Существует способ, гораздо более эффективный, чем вычисление Ь последовательным умножением на Ь. В дальнейшем будем предполагать, что Ь < т и что, вычислив произведение, мы тут же приводим его по модулю т (т.е. заменяем произведение его наименьшим неотрицательным вычетом). Тогда в процессе вычислений никогда не возникнут числа, превосходящие т2. Теперь опишем алгоритм.
Используем символ а для обозначения промежуточного результата умножения. В конце а примет значение наименьшего неотрицательного вычета величины bn (mod т). Вначале положим а = 1. Пусть п0, Til, • • •, пк-1 — цифры двоичной записи числа п, т.е. п — к—1
ng + 2^ + 4тг2 +  • • + 2	тг^._1. Каждое nj равно 0 или 1. Если tzq = 1,
заменим а на Ь (в противном случае оставим а = 1). Затем возведем Ь в квадрат и положим Ь, = b (mod m) (т. е. 6] есть наименьший неотрицательный вычет b по модулю тп). Если = 1, умножим а на b-t (и приведем по модулю тп); в противном случае сохраним прежнее значение а. Затем возведем в квадрат bi и положим 62 = ^i (mod т). Если n2 = 1, умножаем а на 62, в противном случае сохраняем прежнее значение а. Продолжаем далее по тому же правилу. Таким образом, на j-м шаге вычисляем bj = b2 (mod т). Если nj — 1, т.е. если 2J входит в двоичное представление числа п, используем bj как множитель для вычисления нового значения а (и не делаем этого при nj = 0). Легко убедиться, что после {к — 1)-го шага получим а = bn (mod тп).
Сколько двоичных операций потребует алгоритм? На каждом шаге необходимо выполнить 1 или 2 умножения чисел, которые меньше т . И потребуется выполнить к — 1 шагов. Так как на каждом шаге требуется О (log2 (т2)) = O(log2 т) двоичных операций, то получаем следующую оценку.
Предложение I. 3.6. Time(6n mod тп) = O((log n)(log2 m)).
Замечание. Если n очень велико, можно попробовать вое-
§ 3. СРАВНЕНИЯ
27
пользоваться следствием из предложения 1.3.5, заменив п его наименьшим неотрицательным вычетом по модулю 9?(т). Но для этого нужно знать </?(т). Если 9?(т) известно и НОД (6,m) = 1, то можно заменить п его наименьшим неотрицательным вычетом по модулю и оценка в правой части предложения 1.3.6 примет вид О (log3 т + (logn)logm) (Слагаемое (logn)logm соответствует вычислению остатка от деления п на <р(гп). — Прим, ред.)
Применяя еще раз мультипликативность функции Эйлера ср(п), выведем формулу, которая будет использована в начале главы II.
“Предложение 1.3.7. Edln’P(^) = п.
Доказательство. Обозначим через f(ji) левую часть этого равенства, т.е. пусть /(п) — сумма значений ip(d') по всем делителям d числа п (включая 1 и п). Требуется доказать, что /(п) = п. Покажем сначала, что функция /(п) мультипликативна, т. е. f(mn) = /(m)/(n) при НОД (m,n) = 1. Заметим сначала, что любой делитель d числа тп может быть единственным образом представлен в виде произведения d^d2, где d^m, с?2|та. Так как НОД (dt,d2) = 1, то <p(d) = cp(d1)cp(d2) в силу мультипликативности функции ср. Мы получим все возможные делители d числа тп, взяв все возможные пары d1,d2,rne d1\m,d2\n. Таким образом,/(mn) = '£d^m'£d^ncp(d1')cp{d2') = (Edjm<P(di))(Ed2|n‘P(d2)) =	Теперь для доказательства
теоремы предположим, что п = Р\'р22 •р^' есть разложение п на простые множители. Так как f мультипликативна, то /(п) есть произведение чисел вида f(pa)- Поэтому достаточно доказать предложение для ра, т.е. доказать, что /(р0) = р°. Но все делители числа ра имеют вид р3, где 0 С j а, и поэтому f{p°) = Ej=o ^(Р^) = 1 + Ej=i(pJ — Р3 *) = ра• Это доказывает теорему для чисел вида ра, а значит, и для всех п.
УПРАЖНЕНИЯ
1.	Опишите все решения следующих сравнений:
а)	Зх = 4 (mod 7); г) 27z = 25 (mod 256);
б)	Зх = 4 (mod 12); д) 27z = 72 (mod 900);
в)	9z = 12 (mod 21); е) 103z = 612 (mod 676).
2.	Какой цифрой может заканчиваться полный квадрат в шестнадцатиричной системе счисления (см. упражнение 7 к §1.1)?
3.	Какой цифрой может заканчиваться произведение двух последовательных нечетных положительных чисел в двенадцатиричной системе счисления?
4.	Доказать, что в десятичной системе счисления целое число тогда и только тогда делится на 3, когда сумма его цифр делится на 3, и что число делится на 9 тогда и только тогда, когда сумма его цифр делится на 9.
28
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
5.	Доказать, что п5 — п всегда делится на 30.
6.	Чтобы выложить плиткой пол размером 8 футов х 9 футов, вы купили 72 плитки по цене, которую не можете вспомнить. Общая сумма покупки, проставленная в вашем чеке, меньше $100, однако первая и последняя цифры неразборчивы. Запись выглядит так: $?0.6?. Сколько стоила одна плитка?
7.	а) Пусть т есть либо степень ра простого числа р > 2, либо удвоенная степень простого нечетного числа. Доказать, что если х1 = 1 (mod m), то либо х = 1 (mod m), либо х = — 1 (mod m).
б)	Доказать, что утверждение п. а) неверно, если т не представимо в виде р“ или 2ра и т 4.
в)	Доказать, что если т — нечетное число, которое делится на г различных простых чисел, то сравнение х2 = 1 (mod m) имеет 2Г различных решений между 0 и т.
8.	Доказать теорему Вильсона, которая утверждает, что (р— 1)! = —1 (mod р) для любого простого р. Доказать, что (т — 1)! не сравнимо с —1 по модулю т, если т не является простым.
9.	Найти трехзначное (в десятичной записи) целое число, которое дает остаток 4 при делении на 7, 9 и 11.
10.	Найти наименьшее целое положительное число, которое при делении на 11 дает остаток 1, при делении на 12 — остаток 2, а при делении на 13 — остаток 3.
11.	Найти наименьшее неотрицательное решение каждой из следующих систем сравнений:
х =	2	(mod	3)	х = 12	(mod	31)
х =	3	(mod	5)	х ~ 87	(mod	127)	19z	=	103	(mod	900)
а)	б)	в)
x =	4	(mod	11)	x = 91	(mod	255)	10г	=	511	(mod	841)
x =	5	(mod	16)
12.	Предположим, что трехзначное (в десятичной записи) положительное целое число, дающее остаток 7 при делении на 9 и 10 и остаток 3 при делении на 11, является делителем некоторого шестизначного натурального числа, которое при делении на 9, 10 и 11 дает, соответственно, остатки 8, 7 и 1. Найти частное.
13.	В условиях предложения 1.3.3 предположим, что 0 С aj < mj < В для всех j, где В — некоторое число, превосходящее все модули. Предположим, что г также велико. Найти оценку для числа двоичных операций, необходимых для решения системы. Оценка должна быть функцией Виги должна охватывать случаи, когда г либо очень мало, либо очень велико по сравнению с числом двоичных знаков в записи В.
14.	Применить метод повторного возведения в квадрат для нахождения числа 3875 (mod 103).
15.	Сберегает ли время метод повторного возведения в квадрат при обычных арифметических операциях с целыми числами (в отличие от операций по модулю)? Объясните ответ, используя оценки вида О-большое.
16.	Заметим, что для а, взаимно простого с р, ар~2 является обратным элементом к а в кольце вычетов по модулю р. Предположим, что р очень велико. Сравнить метод повторного возведения в квадрат для вычисления а₽~2 с алгоритмом Евклида (как эффективные способы отыскания a-1 (mod р)) в случаях, когда: а) а имеет примерно столько же цифр, что и р, и б) когда а много меньше р.
§ 3. СРАВНЕНИЯ
29
17.	Найти <^(m) Для всех т от 90 до 100.
18.	Перечислите все для которых < 12, и докажите, что ваш список полон.
19.	Предположим, что п не является полным квадратом и что п — 1 > <р(п) > п — п2!3. Доказать, что п есть произведение двух различных простых чисел.
20.	Если т 8 есть степень 2, то показатель степени в предложении 1.3.5 можно заменить на </з(т)/2. Доказать.
21.	Пусть т = 7785562197230017200 = 2Ч-З3-52-7-11  13• 19-31 -37-41 -61 -73-181.
а)	Найти наименьший неотрицательный вычет числа 6647362 по модулю т.
б)	Пусть а — целое положительное число, меньшее т и взаимно простое с т. Сначала найдите такое положительное число к, меньшее 500, что ak сравнимо с а-1 по модулю т. Затем опишите алгоритм возведения а в эту степень к, использующий операции по модулю т. Сколько умножений и делений потребует этот алгоритм (приведение по модулю т рассматривать как одно деление). Какое максимальное количество двоичных разрядов может быть в записи чисел, с которыми вы будете работать?
Наконец, укажите хорошую оценку числа двоичных операций, необходимых для отыскания a-1 (mod m) этим способом (ваш ответ должен быть конкретным числом — без использования обозначений О-болыпое).
22.	Проведите другое доказательство предложения 1.3.7 следующим способом. Для каждого делителя d числа п обозначим через Sj подмножество в Z/nZ, состоящее из всех кратных n/d. Таким образом, Sd содержит d элементов.
а)	Докажите, что Sd имеет <p(d) различных элементов г, которые порождают Si в том смысле, что кратные х (рассматриваемые по модулю п) дают все элементы из Sd-
б)	Докажите, что каждый элемент х порождает одно из подмножеств Sd и, следовательно, число элементов в Z/nZ равно сумме (взятой по всем делителям rf) чисел элементов, порождающих Sd- Отсюда и из п. а) следует предложение 1.3.7.
23.	а) Используя основную теорему арифметики, докажите, что	1/(1—р-1),
где произведение берется по всем простым р, стремится к бесконечности.
б)	Используя результат а), докажите, что ряд, состояний из дробей, обратных к простым числам, расходится.
в)	Найти такую последовательность п;, стремящуюся к оо, для которой limj_.no <^(пу)/пу = 1, и последовательность П], для которой limj_.no <^(пу)/пу = 0.
24.	Пусть N — очень большое секретное число, используемое для разблокирования ракетной системы, т.е. знание N позволяет запустить ракету. Предположим, что есть командующий генерал и п генерал-лейтенантов. Чтобы застраховаться от ситуации, когда командующий генерал (который знает /V) будет выведен из строя, желательно, чтобы каждый из генерал-лейтенантов обладал частичной информацией относительно N, достаточной для того, чтобы любые три генерал-лейтенанта могли бы, действуя согласованно, запустить ракеты (но никакие два из них не могли бы сделать этого).
а)	Пусть pi,... ,рп — различные простые числа, каждое из которых больше, yCV, но значительно меньше a//V. Используя эти числа р,-, опишите частичную информацию о числе N, которую нужно предоставить генерал-лейтенантам.
б)	Обобщите этот способ на случай, когда требуется, чтобы доступ к системе открывался при согласованном действии любых к генерал-лейтенантов (к 2), а никакие к — 1 из них не могли бы разблокировать систему. Структура такого типа при п участниках называется (п, к)-пороговой системой разделения секрета.
30
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
§ 4. Некоторые применения к разложению на множители
Предложение 1.4.1. Для любого целого Ъ и любого целого положительного п число Ь — 1 делится на b — 1, и частное имеет вид [П— 1	.	1 П— 2	1 2 I L I 1
6	+ 6	+ • • • + о + 6 + 1.
Доказательство. Существует полиномиальное тождество, вытекающее из того, что 1 есть корень многочлена хп — 1 и, следовательно, разность х — 1 делит х — 1. При делении многочленов получается х —! = (□?—!)(□?	+ х + • • • + х + х + 1). (Это тожде-
п-1	п-2	2	,
ство можно получить также, умножая х на х фж ф- ••фа: фа:ф1 и затем вычитая х ф х +--- + Х ф х ф 1; после приведения подобных членов получится х —1.) Подстановкой Ь вместо х доказательство завершается.
Другое доказательство состоит в переходе к системе счисления по основанию Ь. Запись числа bn — 1 в такой системе состоит из п цифр 6—1 (например, 106 - 1 = 999999). С другой стороны, число Ьп 1 -j- Ьп 2 + • •  ф Ь2 ф b ф 1 состоит из п единиц. Умножая 111 ... 111 на однозначное число 6—1, получим ((6 — 1)(6 — 1)(6 — 1)  • • (6 — 1)(6 — l)(6-l))fc = 6n-l.
Следствие. Для любого целого b и любых целых положительных пит выполняется равенство
Ьтп-[ = (Ьт - 1ХЬт(п~1} + 6m(n-2) + • •. + 62m + 6m +1).
Доказательство. Просто подставим Ьт вместо 6 в последнем предложении.
В качестве примера применения этого следствия находим, что 235 - 1 делится на 25 — 1 = 31 и на 27 - 1 = 127. Действительно, положим 6 = 2 и либо т — 5, п = 7, либо т = 7, п = 5.
Предложение 1.4.2. Пусть bum взаимно просты, а числа а и с — целые положительные. Если ba = 1 (mod m), 6е = 1 (mod m) и d = НОД (а, с), то bd = 1 (mod m).
Доказательство. Используя алгоритм Евклида, можно записать d в виде d = иа ф ис с целыми коэффициентами и и v. Легко проверить, что одно из двух чисел и и v положительно, а другое отрицательно или нуль. Положим для определенности и > 0, v 0. Возведем теперь обе части сравнения Ьа = 1 (mod m) в степень и, а обе части сравнения 6=1 (mod m) возведем в степень — и. Поделив полученные сравнения, получим bau = 1 (mod m). Но аи ф си = d; таким образом, утверждение доказано.
Предложение I. 4. 3. Если р — простой делитель числа bn - 1, то либо (i) р|6 — 1 для некоторого собственного делителя d числа
S 4. РАЗЛОЖЕНИЕ НА МНОЖИТЕЛИ
31
п, либо (ii) р = 1 (mod п). Если р > 2, а п нечетно, то в случае (ii) р = 1 (mod 2л).
Доказательство. По условию Ьп = 1 (mod п); кроме того, по малой теореме Ферма Ьр~1 = 1 (mod р). По предыдущему предложению это означает, что bd = 1 (mod р), где d = НОД (n,p— 1). Если d < п, это означает, что p\bd — 1 для некоторого собственного делителя d числа п, т.е. имеет место случай (i). С другой стороны, если d = п, то поскольку d\p — 1, имеет место сравнение р = 1 (mod п). Наконец, если р и п нечетны и п\р — 1 (т.е. имеет место случай (ii)), то, очевидно, 2п\р — 1.
Покажем теперь, как можно применять это предложение при разложении на множители некоторых больших целых чисел.
Примеры.
1.	Разложить на множители 211 - 1 = 2047. Если р|2П - 1, то согласно нашему предложению р = 1 (mod 22). Поэтому проверяем р = 23, 67,89,. .. (на самом деле достаточно проверить лишь числа до \/2047 = 45,.. .). Сразу получаем разложение 2047 = 23 • 89. Совер-13
шенно аналогичным способом легко показать, что 2 - 1 = 8191 есть простое число. Простые числа вида 2П — 1 называются «простыми числами Мерсенна».
12
2.	Разложить на множители 3 — 1 = 531440. В соответствии
1	2
с предложением 1.4.3 сначала проверяем делители чисел 3 — 1,3 — 1,3 — 1,34 — 1 и те делители числа З6 — 1 = (З3 — 1)(33 + 1), которых не было в разложении З3 — 1. Так получаем 24 • 5 • 7 • 13. Так как 531440/(24 - 5 • 7  13) = 73 есть простое число, задача решена. Заметим, что, как и следовало ожидать, простое число, отсутствующее среди делителей чисел вида 3d — 1, где d — собственный делитель числа 12, а именно 73, — сравнимо с единицей по модулю 12.
3.	Разложить на множители 235 — 1 = 34 3 5 9 7 3 8 3 6 7. Сначала рассмотрим делители чисел 2d — 1 для d = 1,5,7. Это даст нам простые множители 31 и 127. Имеем (235 - 1)/(31 • 127) = 8727391. По нашему предложению все остальные простые делители должны быть сравнимы с 1 по модулю 70. Поэтому проверим, не являются ли 71,211,281,... делителями числа 8727391. Может показаться, что необходимо проверить все такие числа до \/8727391 « 2954. Однако сразу получается 8727391 = 71-122921, и остается проверить лишь числа до х/122921 и 350. Получаем, что 122921 — простое число. Итак, 235 - 1 = 31 • 71 • 127 • 122921 — разложение на простые множители.
Замечание. Каким образом в примере 3 можно производить вычисления на калькуляторе, который показывает, скажем, всего 8 десятичных знаков? Нужно просто разбивать числа на части. На-
32
ГЛ. I. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ЧИСЕЛ
О35
пример, при вычислении 2 мы достигаем предела возможностей нашего калькулятора уже при 226 = 67108864. Чтобы умножить это число на 29 = 512, запишем 235 = 512 • (67108 • 1000 + 864) = 34359296 • 1000 + 442368 = 34359738368. Далее, когда приходится де-лить 2 - 1 на 31 • 127 = 3937, сначала надо разделить 34359738 на 3937, взять целую часть дроби	= 8727, а затем записать
34359738 = 3937 • 8727 + 1539. Далее,
34359738367 _ (3937•8727 + 1539)•1000 + 367
3937	“	3937
1539367
= 8727000 +--------= 8727391.
3937
УПРАЖНЕНИЯ
1.	Докажите двумя различными способами, что если п нечетно, то Ьп + 1 = (б -|- 1)(ЬП-1 — Ьп “2 -|- • •  + Ь2 — b -|- 1). В одном доказательстве используйте полиномиальное тождество, в другом — вычисления в системе счисления по основанию Ь.
2.	Доказать, что если 2п — 1 — простое, то п — простое, а если 2п + 1 — простое, то п есть степень двойки. В первом случае простые числа называются простыми числами Мерсенна, как уже упоминалось выше, а во втором случае — простыми числами Ферма. Первые несколько чисел Мерсенна — это 3, 7, 31, 127; первые несколько чисел Ферма — это 3, 5, 17, 257.
3.	Предположим, что Ь взаимно просто с т, где m > 2, и что а и с — положительные целые числа. Доказать, что если Ьа = —1 (mod m), bc = ±1 (mod m) и d — НОД (а, с), то bd ~ —1 (mod m) и а/d нечетно.
4.	Доказать, что если p|6n-|-l, то либо (i) p\bd +1 для некоторого собственного делителя d числа п, для которого п/d нечетно, либо (ii) р = 1 (mod 2п).
5.	Положим т = 224 + 1 = 16777217. а) Найти простое число Ферма, делящее т. б) Доказать, что любой другой простой делитель сравним с 1 по модулю 48. в) Разложить т на простые множители.
6.	Разложить на множители З15 — 1 и З24 — 1.
7.	Разложить на множители 512 — 1.
8.	Разложить на множители 105 — 1, 106 — 1 и 108 — 1.
9.	Разложить на множители 233 — 1 и 221 — 1.
10.	Разложить на множители 215 — 1, 230 — 1 и 260 — 1.
11.	а) Доказать, что если d = НОД (т, п) и a > 1 есть целое число, то НОД (a771 - 1,ап - 1) = ad - 1.
б) Пусть нужно перемножить числа а и 6, записывающиеся в двоичной системе счисления к битами, причем к очень велико. Пусть I — фиксированное целое число, много меньшее к, и г = [4A:/Z] + 1. Выберем множество чисел m,-, 1 i г, так, что 1/2 < mt < I для всех i и НОД (т,-, т;-) = 1 при i 0 j. Предположим, что большое число а представлено г-набором (ai,. .., ат), где а,- — наименьший положительный вычет числа а по модулю 2m‘ — 1. Доказать, что каждое из чисел а, b и ab однозначно определяется своим г-набором, и оценить число двоичных операций, необходимых для построения г-набора числа аЪ по г-наборам чисел а и Ь.
§ 4. РАЗЛОЖЕНИЕ НА МНОЖИТЕЛИ
33
ЛИТЕРАТУРА к ГЛАВЕ I
1.	Brillhart J., Lehmer D.H., Selfridge J.L., Tuckerman В., Wagstaff S. S., Jr. Factorizations of bn = ±1, b = 2, 3, 5, 6, 7, 10, 11, 12, up to High Powers. Providence: Amer. Math. Soc., 1983.
2.	Dickson L. E. History of the Theory of Numbers. 3 volumes. N.Y.: Chelsea, 1952.
3.	Guy R. K. Unsolved Problems in Number Theory. Heidelberg etc.: Springer, 1982.
4.	Hardy G. H., Wright E. M. An Introduction to the Theory of Numbers. 5th ed. Oxford: Oxford Univ. Press, 1979.
5.	LeVeque W.J. Fundamentals of Number Theory. Reading: Addison-Wesley, 1977.
6.	Rademacher H. Lectures on Elementary Number Theory. Krieger, 1977.
7.	Rosen К. H. Elementary Number Theory and Its Applications. 3rd ed. Reading: Addison-Wesley.
8.	Schroeder M. R. Number Theory in Science and Communications. 2nd ed. Heidelberg etc.: Springer, 1986.
9.	Shanks D. Solved and Unsolved Problems in Number Theory. 3rd ed. N.Y.: Chelsea, 1985.
10.	Sierpinski If. A Selection of Problems in the Theory of Numbers. Oxford: Pergamon, 1964.
11.	Spencer D. D. Computers in Number Theory. Oxford-N.Y.: Computer Science Press, 1982.
ГЛАВА II
КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
В этой главе мы предполагаем знакомство читателя с основными определениями и свойствами полей. Кратко напомним то, что нам потребуется в дальнейшем.
1.	Поле — это множество F с операциями умножения и сложения, которые удовлетворяют обычным правилам: как умножение, так и сложение ассоциативны и коммутативны; справедлив дистрибутивный закон; существует аддитивная единица 0 и мультипликативная единица 1; существуют аддитивные обратный элемент и для всех отличных от нуля элементов — мультипликативные обратные элементы. Следующие примеры полей являются основными во многих областях математики: (1) поле Q, состоящее из всех рациональных чисел; (2) поле R вещественных чисел; (3) поле С комплексных чисел; (4) поле Z/pZ классов вычетов целых чисел по модулю простого числа р.
2.	Векторное пространство можно определить над любым полем F при помощи тех же свойств, которые используются при определении векторного пространства над вещественными числами. Любое векторное пространство имеет базис, и число элементов в базисе называется его размерностью. Расширение, т.е. большее поле, содержащее F, является векторным пространством над F. Мы называем его конечным расширением, если оно представляет собой конечномерное векторное пространство над F. Степень конечного расширения — это его размерность как векторного пространства. Один из способов получить расширение поля F — это присоединить к нему новый элемент: мы обозначаем через К = F(a) поле, состоящее из всех рациональных выражений, образованных элементом а и элементами F.
3.	Аналогично, кольцо многочленов можно определить над любым полем F. Оно обозначается F[X] и состоит из всех конечных сумм степеней X с коэффициентами из F. Многочлены в F[X] складываются и перемножаются так же, как многочлены с вещественными коэффици-
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
35
ентами. Степень d многочлена — это наибольшая степень X, которая встречается с ненулевым коэффициентом; в нормированном многочлене коэффициент при Xd есть 1. Будем говорить, что д делит f, где f.g Е F[X], если существует такой многочлен h Е F[X], что / = gh. Неприводимые многочлены / Е F[X] — это те многочлены, которые не делятся ни на какие многочлены меньшей степени, кроме констант; они играют ту же роль среди многочленов, что простые числа среди целых. Кольцо многочленов обладает свойством единственности разложения, т.е. любой нормированный многочлен разлагается, притом единственным (с точностью до порядка сомножителей) способом, в произведение нормированных неприводимых многочленов. (Ненормированный многочлен может быть однозначно представлен в виде такого произведения, умноженного на константу.)
4.	Элемент а в некотором расширении К, содержащем F, называется алгебраическим над F, если существует многочлен с коэффициентами из F, обращающийся в 0 при подстановке в него а. В этом случае существует единственный нормированный неприводимый многочлен в F[X], корнем которого является а (и всякий другой многочлен из F[X], корнем которого является а, должен делиться на этот приведенный неприводимый многочлен). Если этот нормированный неприводимый многочлен имеет степень d, то любой элемент F(a) (т.е. любое рациональное выражение, включающее в себя степени а и элементы из F) можно представить как линейную комбинацию степеней 1, а, о2,.. ., ad \ Таким образом, эти степени а образуют базис поля F(a) над F, и степень расширения, полученного присоединением а, равна степени нормированного неприводимого многочлена с корнем а. Любой другой корень а того же неприводимого многочлена называется сопряженным к а над F. Поля F(a) и F(a/) изоморфны: можно отобразить любое выражение, включающее в себя а, в то же самое выражение, отличающееся лишь заменой а на а . Слово «изоморфно» означает, что мы имеем взаимно однозначное соответствие, которое сохраняет сложение и умножение. В некоторых случаях поля F(o) и F(c/) совпадают, и тогда мы получаем автоморфизм поля. Например, •\/2 имеет сопряженный элемент, а именно, — \/2, над Q, и отображение а + Ьу/2 —> а — Ьу/2 есть автоморфизм поля Q(\/2) (которое состоит из всех вещественных чисел вида а + Ьу/2, где а и b — рациональные числа). Если все сопряженные к а числа принадлежат полю F(o), то поле F(a) называется расширением Галуа.
5.	Производная многочлена определяется посредством правила пХп 1 (а не как предел, так как предельные переходы не имеют смысла, если в F не определены расстояние или топология). Многочлен f
36
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
степени d может не иметь корня г Е F, т.е. значения, которое дает О при подстановке в многочлен вместо X. Если корень г существует, то многочлен первой степени X — г делит /; если (X — г) — наибольшая степень X — г, которая делит /, то мы говорим, что г есть корень кратности т. Ввиду однозначности разложения на множители общее число корней f в F, с учетом кратностей, не может превосходить d. Если многочлен f Е F[X] имеет кратный корень г, то г должен быть корнем наибольшего общего делителя f и его производной f (см. упражнение 13 к § L 2).
6.	Для любого многочлена /(X) Е F[X] существует такое расширение К поля F, что /(X) разлагается на произведение линейных сомножителей (или, что равносильно, многочлен f степени d имеет d корней в К с учетом кратностей). Более того, существует наименьшее расширение F, содержащее эти корни; оно называется полем разложения f. Поле разложения К определяется однозначно с точностью до изоморфизма, т. е. если К* — другое поле с этими свойствами, то существует взаимно однозначное соответствие К , сохраняющее сложение и умножение. Например, Q(\/2) есть поле разложения /(X) = X2 - 2, а чтобы получить поле разложения /(X) = X3 - 2, нужно к Q присоединить как \/2, так и у/—3.
7.	Если сложение с собой мультипликативной единицы 1 в поле F никогда не дает аддитивную единицу 0, то говорят, что F имеет характеристику 0. В этом случае F содержит в себе копию поля рациональных чисел. В противном случае существует такое простое число р, что сумма р слагаемых 1 + 1 + • • • + 1 равна 0; тогда р называется характеристикой поля F. В этом случае F содержит в себе копию поля Z/pZ (см. следствие 1 предложения I. 3.1), которое называется простым полем.
§ 1. Конечные поля
Пусть Fg обозначает поле, состоящее из конечного числа q элементов. Ясно, что конечное поле не может иметь характеристику 0, так что характеристика F, — простое число р. Тогда F? содержит в себе простое поле Fp = Z/pZ и, следовательно, является векторным пространством (разумеется, конечномерным) над Fp. Пусть f обозначает его размерность как Ер-векторного пространства. Выбор базиса позволяет нам установить взаимно однозначное соответствие между элементами этого /-мерного векторного пространства и множеством всех /-выборок элементов из Fp. Поэтому в F9 должно быть р^ элементов. Таким образом, q — степень характеристики р.
§ 1. КОНЕЧНЫЕ ПОЛЯ
37
Мы вскоре увидим, что для каждой степени q = простого числа р существует единственное (с точностью до изоморфизма) поле из q элементов. Но сначала мы изучим мультипликативный порядок элементов в множестве Fg ненулевых элементов нашего конечного поля. Под «порядком» ненулевого элемента мы подразумеваем наименьшую положительную его степень, равную 1.
Существование мультипликативных образующих конечных полей. В Fg имеется q — 1 ненулевых элементов. Согласно определению поля они образуют абелеву группу по умножению. Это означает, что произведение двух ненулевых элементов — не нуль, выполняются ассоциативный и коммутативный законы, существует единичный элемент 1 и любой ненулевой элемент имеет обратный. Число элементов в группе делится на порядок любого элемента — это факт, общий для всех конечных групп. В целях полноты изложения мы даем его доказательство для нашей группы Fg.
Предложение II. 1.1. Порядок любого а Е F* делит q - 1.
Первое доказательство. Пусть d — наименьшая степень а, для которой ad = 1. (Такая степень, действительно, существует, так как ввиду конечности F* степени элемента а не могут быть все различны между собой, и если а' = а3. j > г, то а3 1 — 1.) Пусть S —	г -1	2	d — 1 з	v
обозначает множество	j всех различных степеней а.
Для любого b Е F* пусть bS обозначает смежный класс, состоящий из всех элементов вида Ьа3 (например, IS = S'). Нетрудно заметить, что любые два смежных класса либо совпадают, либо не содержат общих элементов. (Действительно, пусть элемент Ьхаг из b\S принадлежит также b2S, т. е. b^a1 — Ь?а3. Тогда для любого bia1 из b\S имеем ЬАаг = Ь^а1*1 1 = bia3 + l '.) Каждый смежный класс состоит из d элементов. Объединение всех смежных классов исчерпывает F* — это означает, что Fg есть объединение попарно непересекающихся d-элементных подмножеств. Следовательно, d\(q — 1).
Второе доказательство. Покажем, во-первых, что а9-1 = 1. Чтобы убедиться в этом, напишем произведение всех ненулевых элементов из Fg. Таковых имеется q — 1. Так как при умножении на а любые два различных элемента остаются различными, то, умножив каждый элемент произведения на а, мы вновь получаем то же произведение (при другом порядке сомножителей). Однако при этом мы умножили произведение на а9 \ Следовательно, aq 1 — 1 (ср. с доказательством предложения 1.3.2). Пусть теперь d — порядок а, т. е. наименьшая положительная степень а, которая дает 1. Если бы q — 1 не делилось на d, т. е. q — 1 = bd + г, 0 < г < d, то
38
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
меньшее, чем d, число г обладало бы свойством (Г = а4 1 bd = 1. Но это противоречит минимальности d. Доказательство завершено.
Определение. Образующим элементом д конечного поля F9 называется элемент порядка q — 1; это равносильно тому, что степени д пробегают все элементы F,.
Следующее предложение описывает одно из наиболее фундаментальных свойств конечных полей. Оно утверждает, что отличные от нуля элементы любого конечного поля образуют циклическую группу, т. е. все они суть степени одного и того же элемента.
Предложение II. 1.2. Каждое конечное поле имеет образующий элемент. Если д — образующий элемент F*, то д3 — также образующий тогда и только тогда, когда НОД (У, g—1) — 1. В частности, всего в F9 имеется ^(q — 1) различных образующих элементов.
Доказательство. Предположим, что а Е Fj имеет порядок d, т.е. ad = 1 и никакая меньшая степень а не равна 1. Согласно предложению II. 1. 1 число d делит q- 1. Так как ad есть наименьшая степень, равная 1, все элементы а, а ,..., а =1 различны между собой. Мы утверждаем, что элементы порядка d — это в точности те ф(</) значений а3, для которых НОД (j,d) = 1. Во-первых, так как все d различных степеней различны, они представляют собой множество всех корней уравнения Xd = 1 (см. п. 5 списка свойств полей в начале главы). Любой элемент порядка d должен тем самым быть среди степеней а. Однако не каждая степень а имеет порядок d, так как при НОД (j,d) = d! > 1 элемент а3 имеет меньший порядок: числа d/d' и j/d' — целые, и поэтому {a3)d^d = {ad)3^d = 1. Обратно, теперь покажем, что а3 при НОД (j,d) = 1 имеет порядок d. Действительно, допустим, что НОД (,j,d) = 1 и а3 имеет порядок d” < d. Тогда / d\j , d!\d ,	i d'\HOfl(;,d) d" 1 ,
(a ) = (a ) = 1, следовательно, (a )	= a =1 (доказы-
вается аналогично предложению 1.4.2). Ho ad 1, так как а имеет порядок d. Таким образом, а3 имеет порядок d тогда и только тогда, когда НОД (j,d) = 1.
Это значит, что если имеется элемент порядка d, то существует в точности ф(</) элементов порядка d. Итак, для всякого d\(q — 1) существуют лишь две возможности: либо элементов порядка d нет, либо таких элементов в точности <p(d').
Но каждый элемент имеет некоторый порядок — 1), и имеется либо 0, либо </?(d) элементов порядка d. Согласно предложению I. 3. 7 справедливо равенство 52d|(9-i) V’(^) = Ч ~ правая часть которого совпадает с числом элементов в F9. Отсюда и из того, что каждый элемент имеет некоторый порядок, следует, что для каждого d|(g- 1)
§ 1. КОНЕЧНЫЕ ПОЛЯ
39
всегда имеется в точности <^>(d) (и никогда — нуль) элементов порядка d. В частности, существует в точности <^>(q — 1) элементов порядка q — 1. Как мы показали выше, если элемент д имеет порядок q — 1, то все остальные элементы порядка q — 1 — это такие степени gJ, что НОД (J, q — 1) = 1. Предложение доказано.
Следствие. Для каждого простого р существует такое целое число д, что его степени пробегают все ненулевые классы вычетов по модулю р.
Пример 1. Мы можем получить все вычеты по модулю 19 от 1 до 18, взяв степени 2. А именно, последовательные степени 2, приведенные по модулю 19 —это 2, 4, 8, 16, 13, 7, 14, 9, 18, 17, 15, 11, 3, 6, 12, 5, 10, 1.
Во многих ситуациях при работе с такими конечными полями, как Fp, р — простое число, бывает полезно найти образующий элемент. Что получится, если выбрать элемент д £ Fp случайно? Какова вероятность того, что он будет образующим? Другими словами, какую часть от ненулевых элементов составляют образующие? В силу предложения II. 1.2, эта часть равна ф(р — 1)/(р— 1). Согласно формуле для ф(р-1) из следствия предложения I. 3. 3 эта дробь равна П(1~I )> где произведение берется по всем простым делителям I числа р — 1. Таким образом, шансы найти образующий элемент путем случайного угадывания сильно зависят от разложения числа р - 1. Например, справедливо следующее утверждение.
Предложение II. 1. 3. Существует такая последовательность простых чисел р, что случайно выбранный в Fp элемент д оказывается образующим с вероятностью, стремящейся к нулю с ростом р.
Доказательство. Пусть {nJ}j=2i3	— любая последова-
тельность натуральных чисел, которые с ростом j к оо делятся на все большие количества последовательных простых чисел 2,3,5,7,... Можно взять, например, nj = j\. Выберем в качестве pj любое такое простое число, что pj = 1 (mod п7). Почему такой выбор возможен? Это следует из теоремы Дирихле о простых числах в арифметической прогрессии, которая утверждает, что если целые числа кип взаимно просты, то существует бесконечно много простых чисел, сравнимых с к по модулю п. (Более того, простые числа «равномерно распределены» среди возможных вычетов к mod п, т.е. доля тех простых, которые сравнимы с данным к по модулю п, составляет 1/ф(п). Но этот факт нам здесь не понадобится.) Тогда множество простых, делящих pj — 1, содержит в себе простые, делящие nj, и, значит,
40
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
п (-!)
простые l\rij
При j оо это произведение стремится к ПВСе простые Д1 - ^-1)’ которое есть 0 (см. упражнение 23 §1.3). Предложение доказано.
Существование и единственность конечных полей с числом элементов, равным степени простого числа.
Как существование, так и единственность мы установим, доказав, что конечное поле с q = элементами есть поле разложения многочлена Xя — X. Следующее предложение показывает, что для каждого числа q, равного степени простого числа, существует одно и (с точностью до изоморфизма) только одно конечное поле с q элементами.
Предложение II. 1.4. Если F9 есть поле с q = р" элементами, то каждый его элемент удовлетворяет уравнению Xя — X = 0 и Fq — это в точности множество корней этого уравнения. Обратно, для любой степени простого q = р^ поле разложения над Fp многочлена Xя — X есть поле из q элементов.
Доказательство. Предположим сначала, что F9 — конечное поле. Так как порядок каждого ненулевого элемента делит q — 1, такой элемент должен удовлетворять уравнению Xя 1 — 1 = О, а следовательно, и уравнению Xя - X = 0. Конечно, элемент 0 также удовлетворяет последнему уравнению. Таким образом, все элементы поля — корни многочлена Xя — X степени q. Так как этот многочлен не может иметь более q корней, его корни — в точности элементы Fg. Заметим: это означает, что F9 есть поле разложения для многочлена Xя — X, т. е. наименьшее расширение Fp, которое содержит все его корни.
Обратно, пусть q = р^ есть степень простого числа р и F — поле разложения над Fp многочлена Xя — X. Заметим, что Xя - X имеет производную qX4 1 — 1 = —1 (так как q кратно р и, следовательно, равно нулю в Fp). Поэтому Xя — X не имеет общих корней с производной (у которой вообще корней нет) и, следовательно, не имеет кратных корней. Поэтому F должно содержать, по крайней мере, q различных корней Xя — X. Однако мы утверждаем, что множество из q корней уже составляет поле. Ключевым является тот факт, что сумма и произведение корней многочлена Xя — X — снова его корни. Это нетрудно проверить для произведения: если а и b — корни многочлена, то ая = а, Ьч = b и, значит, (аб)9 - ab = аяЬя - ab = ab - ab = 0, т. е. ab — корень Xя — X. Чтобы убедиться в том, что сумма а + b также есть корень Xя — X, мы установим важное свойство полей ха
§ 1. КОНЕЧНЫЕ ПОЛЯ
41
рактеристики р.
Лемма. Для любых элементов а, b поля характеристики р выполняется соотношение (а + 6)р — ар 4- Ьр.
Утверждение леммы следует из того, что все промежуточные члены в биномиальном разложении (p)aJbp 3 обращаются в нуль, так как р!/((р — j)!j!) делится нар, если 0 < j < р. 2
Последовательное применение леммы дает: ар-\-Ьр — (а-\-Ь)р,ар 4-Ьр = (ар 4- Ьр)р = (а + Ь)р ,..., а4 4- Ьч = (а 4- b)q. Таким образом, если aq = а и bq = b, то (а 4- 6)9 = а4 4- bq = а 4- Ь, и а 4- b есть корень Xq — X. Мы заключаем теперь, что множество из q корней есть наименьшее поле, содержащее все корни многочлена Xq — X, т. е. поле разложения этого многочлена есть поле из q элементов. Предложение доказано.
По ходу доказательства мы показали, что возведение элементов в степень р сохраняет сложение и умножение. В следующем предложении мы выведем другие важные следствия этого факта.
Предложение II. 1.5. Пусть Fg — конечное поле из q = р^ элементов и пусть а — отображение Fg, при котором элементу а сопоставляется ар: <т(а) = ар. Тогда а есть автоморфизм поля Fg (m. е. взаимно однозначное отображение поля в себя, сохраняющее сложение и умножение'). Элементы Fg, не изменяющиеся при действии а, — это в точности элементы простого поля Fp; f-я степень а есть тождественное отображение, и меньшие степени а этим свойством не обладают.
Доказательство. Отображение возведения в степень всегда сохраняет умножение, а сохранение сложения вытекает из леммы в доказательстве предложения II. 1.4. Заметим, что j-я степень <т (результат j-кратного применения <т) есть отображение а3: а i—► ар . Таким образом, неподвижные элементы отображения а3 — это корни Хр - X. При j = 1 они совпадают с р элементами простого поля (это — частный случай q = р предложения II. 1.4, а именно, малая теорема Ферма). Неподвижные элементы — это корни Xq — X, т.е. все элементы Fg. Так как /-я степень <т — тождественное отображение, <т должно быть взаимно однозначным. Обратным для <т является отображение djf а м ар . Никакая меньшая f степень о не является тождественным отображением, так как при j < f не все элементы Fg являются корнями многочлена Хр — X. Это завершает доказательство.
Предложение II. 1. 6. Если (в обозначениях предложения II. 1. 5) а — любой элемент Fg, то все сопряженные с а над Fp элементы (тд. е. элементы Fq, являющиеся вместе с а корнями нормированно
42
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
го неприводимого многочлена с коэффициентами из Fp) имеют вид o-J(a) = ар .
Доказательство. Пусть поле Fp(a) как расширение Fp имеет степень </. т.е. представляет собой копию Fpd. Тогда а удовлетворяет уравнению Хр - X = 0 и ар - а 0, каково бы ни было j < d. Таким образом, повторным применением ст к о получаем d различных элементов. Теперь достаточно показать, что все они являются корнями того же самого нормированного неприводимого многочлена, что и а; в этом случае они составляют d его корней. Чтобы сделать это, достаточно показать, что если а — корень многочлена /(X) G Fp[A'], то и /(ор) = 0. Пусть /(А') = Y.ajXJ. aj G Fp. Тогда 0 = f(a) = ^ajd'’. Возводя обе части в степень р, согласно лемме получаем 0 = ^2(а;а'7)р. Но по малой теореме Ферма ар = ttj, и мы имеем 0 = ^а^ару = f(ap), что и требовалось доказать.
Явные построения. До сих пор наши рассмотрения конечных полей имели теоретический характер. Единственным реальным примером были поля вида Fp = Т^рЪ. Теперь мы обсудим, как следует работать с конечными расширениями Fp. Здесь нам следует повторить, как мы обращались с такими расширениями поля рациональных чисел Q, как поле Q(\/2). Это поле получалось, когда мы брали корень а уравнения X —2 = 0. Затем мы рассматривали выражения вида а 4- Ьа, а,Ь G Q, которые обычным образом складывали и перемножали, лишь заменяя каждый раз а2 на 2 (в случае Q(a/2) работаем с выражениями вида а 4- Ьа + со2, при умножении заменяя всякий раз а на. 2). Тот же самый общий подход можно применить к конечным полям.
Пример 2. Для построения F9 берем любой приведенный квадратичный многочлен в F3[X], не имеющий корней в F3. Перебирая все наборы коэффициентов и проверяя, не являются ли 0, ±1 G F3 корнями получающихся многочленов, мы обнаруживаем лишь т]эи приведенных неприводимых квадратичных многочлена: X 4-1, А? ±Х — 1. Если мы, например, берем корень многочлена X 4- 1 (его лучше обозначить i, а не о, — ведь мы фактически присоединяем 1), то элементами F9 будут все возможные комбинации а 4- Ы, где а,Ь = 0,±1. Арифметические действия в F9 поэтому аналогичны арифметике гауссовых целых чисел (см. упражнение 14 к § I. 2) с той лишь разницей, что коэффициенты а, Ь принадлежат крошечному полю F3.
Заметим, что элемент г, который мы присоединим, не является образующим, так как его порядок 4, а не q — 1 = 8. Если, однако, мы присоединяем корень а многочлена X —X — 1, то можем получить все
§ 1. КОНЕЧНЫЕ ПОЛЯ
43
ненулевые элементы F9, взяв последовательные степени а (напомним, что а всегда следует заменять на а + 1, так как а — корень уравне-
тг2 х/- . и \	1	2	. -1	3	.	1	4	н S
ния л = Л + 1): а = а, а = а + 1, а = — а + 1, а = —1,0 = — а. а6 = —а — 1, а7 = а — 1, а8 = 1. Мы иногда будем называть такие многочлены, как X2 -X -1, примитивными, имея в виду, что каждый корень такого неприводимого многочлена является образующим элементом мультипликативной группы ненулевых элементов поля. В Fg имеется 4 = </?(8) образующих (по предложению II. 1.2): два корня X2 - X - 1 и два корня X2 4- X - 1 (второй из корней X2 - X - 1 сопряжен с а: <т(о) = а3 = -а + 1). Остальные 4 ненулевых элемента — это ±г = ±(а + 1) (корни X2 + 1) и 2 ненулевых элемента ±1 поля F3 (корни нормированных многочленов А' 4- 1 и А' — 1 степени 1).
Вообще, в любом конечном поле Fg, q = р^, всякий ненулевой элемент а удовлетворяет единственному неприводимому нормированному многочлену над Fp некоторой степени d. Тогда поле Fp(a), полученное присоединением этого элемента к простому полю, есть расширение степени d, содержащееся в Fg, т. е. это копия Fpd. Так как большое поле Fpj содержит Fpd и поэтому является векторным пространством над Fpd некоторой размерности f', то число элементов в Fp/ равно (pdy = pf, т.е. f = df'. Следовательно, d\f. Обратно, для любого d\f конечное поле Fpd содержится в Fp/, так как любое решение уравнения Хр = X есть решение Хр = X (чтобы убедиться в этом, заметим, что если в левой части уравнения л = л заменить f — f /d раз X на Xp , то получится соотношение Хр = X). Таким образом, мы доказали следующий результат.
Предложение II. 1.7. Подполя Fpf — это поля Fpd для d\f. Если элемент а £ Fp/ присоединяется к Fp, то получается одно из этих полей.
Теперь нетрудно доказать формулу, которая используется при нахождении числа неприводимых многочленов данной степени.
Предложение II. 1. 8. Для любого q = р^ многочлен Xя — X разлагается в FP[X] в произведение всех нормированных неприводимых многочленов степеней d, делящих f.
Доказательство. Если присоединить к Fp корень а любого нормированного неприводимого многочлена h(x} степени d|/, мы получаем копию Fpd, которая содержится в Fpj. Так как а — корень Xя - X, этот многочлен делится на h(x'). Обратно, пусть h(x~) — нормированный неприводимый многочлен, делящий Xя — X. Тогда корни h(E) лежат в Fg (поскольку там лежат все корни Xя — X). Поэтому степень h(x') делит /, согласно предложению II. 1.7, так как присо-
44
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
единение корня дает подполе в F?. Таким образом, нормированные неприводимые многочлены, делящие Хч — X, — это в точности те, степени которых делят /. Как мы видели, Хч - X не имеет кратных корней, и это означает, что Хч — X есть произведение всех таких неприводимых многочленов, что и требовалось доказать.
Следствие. Если f есть простое число, то в Fp[X] существует всего (j/ — р)/f неприводимых нормированных многочленов степени f.
Заметим, что (р^ — р)// при простом f — целое число, так как малая теорема Ферма гарантирует нам, что р^ = р (mod /). Пусть п — число неприводимых нормированных многочленов степени /. Со-гласно предложению, многочлен X — X степени р есть произведение п многочленов степени f и р неприводимых многочленов X - а, a g F, степени 1. Приравнивая показатели степеней, получаем равенство р^ = nf + р, из которого следует искомая формула для п.
Предположим теперь, что f — не обязательно простое число. Через nd обозначим число неприводимых нормированных многочленов степени d над Fp. Тогда имеем п/ = (р^ - ^dnf)/f, где суммирование распространяется на все делители d числа f,d<f.
Мы распространим теперь временные оценки из главы I, касающиеся арифметики по модулю р, на конечные поля общего вида.
Предложение II. 1. 9. Пусть Fg, где q = р^, есть конечное поле и F(X) — неприводимый многочлен степени f над Fp. Тогда два элемента из Fg можно перемножить или поделить за <9(log3 д) двоичных операций. Если к — целое положительное число, то элемент поля F,; можно возвести в степень к за O((logk)(log3 q)) двоичных операций.
Доказательство. Элемент Fq — это многочлен с коэффициентами из Fp = Z/pZ, рассматриваемый по модулю F(X). Чтобы перемножить два таких элемента, мы сначала перемножаем многочлены. Это требует O(f ) умножений целых чисел по модулю р (и последующего сложения целых чисел по- модулю р, что занимает значительно меньше времени). Затем мы делим полученный многочлен на F(A'): остаток от деления и дает искомое произведение. Деление многочленов требует 0(f) делений целых чисел по модулю р и 0(/2) умножений целых чисел по модулю р. Так как умножение по модулю р требует С1 (log р) двоичных операций, а деление по модулю р (при использовании, например, алгоритма Евклида) — O(log3p) двоичных операций (см. следствие из предложения I. 2.2), общее число двоичных операций равно 0(/2 log2 р + /log3p) = 0((/logp)3) = O(log3g). Что
§ 1. КОНЕЧНЫЕ ПОЛЯ
45
бы установить такую же оценку для деления, достаточно показать, что обратный элемент можно найти за время €2(log q). Используя алгоритм Евклида для многочленов над полем Fp (см. упражнение 12 §1.2), мы должны записать 1 как линейную комбинацию данного нам элемента из F? (т.е. многочлена степени меньше /) и фиксированного многочлена Г(А') степени f. Это включает в себя 0(f) делений многочленов степени меньше f$ а каждое деление многочленов требует 0(f log р + /log р) = 0(/ log р) двоичных операций. Таким образом, общее время составляет 0(/3log3p) = <9(log3 q). Наконец, возведение в к-ю степень можно производить методом повторного возведения в квадрат тем же способом, что и возведение в степень по модулю (см. конец §1.3). Для этого нужно 0(logA;) умножений (или возведений в квадрат) элементов из F? и, следовательно, O((log fc)(log3 q)) двоичных операций. Доказательство завершенно.
В заключение этого параграфа мы дадим пример вычислений с многочленами над конечными полями. Для иллюстрации мы выбрали пример над самым маленьким (но, быть может, наиболее важным) конечным полем — 2-элементным полем F2 = {0,1}. Многочлен в F2[A] — это просто сумма нескольких степеней X. В некотором смысле многочлены над Fp похожи на разложения целых чисел в р-ичной системе счисления: коэффициенты многочлена аналогичны значениям разрядов. Например, при бинарном разложении целое число записывается как сумма степеней 2 (с коэффициентами 0 или 1) — и точно так же многочлен над F2 — это сумма степеней X. Однако это сравнение может вводить в заблуждение. Например, сумма любого числа многочленов степени d есть многочлен степени не больше d. В то'же время сумма нескольких (/-битовых чисел будет числом, имеющим более d двоичных разрядов.
Пример 3. Пусть/(Х) = А’4 + Х3 + Х2 + 1,5 = A'3 + l G F2[A']. Найти НОД (f,g), используя алгоритм Евклида для многочленов, и представить этот НОД в виде м(А)/(А) + v(X)g(X).
Решение. Деление многочленов дает нам приведенную ниже последовательность равенств, которая приводит к заключению: НОД (f,g) = А' + 1. Другая последовательность равенств позволяет нам, действуя в обратном направлении, выразить X + 1 в виде линейной комбинации / и д. (Заметим, кстати, что в поле характеристики 2 сложение эквивалентно вычитанию: a — b = a + b — 2Ь = а-\-Ь.) Имеем
/ = (А + 1)5 + А2 + А,
д = (А+ 1)(А2 + Х) + (А+ 1),
А'2 + А' = А(А + 1),
46
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
и затем
X 4- 1 = д + (X + 1)(А’2 + X) =
— 9 + (X + 1)(/ + {X + 1)<?) = = (X + 1)/ + (А )д.
УПРАЖНЕНИЯ
1. Для р = 2, 3, 5, 7, 11, 13, 17 найти наименьшее положительное целое число, которое порождает F*, и определить, сколько среди чисел 1, 2, 3,. .., р — 1 образующих.
2. Пусть (Z/p“Z)‘ обозначает множество всех обратимых (т. е. не делящихся на р) вычетов по модулю ра. Внимание: следует различать множество вычетов ’Z/pc"Z (в котором ра —ра-1 обратимых элементов) и поле Fpa (в котором каждый ненулевой элемент обратим). Они совпадают лишь при а = 1.
а)	Пусть р > 2 и д — целое число, порождающее F*. Пусть а — любое целое число, большее 1. Показать, что либо д, либо (р+1)д порождают (Z/ра Z)*. Таким образом, (Z/p“Z)* — циклическая группа.
б)	Показать, что при а > 2 группа (Z/2“Z)* нециклическая, однако число 5 порождает подгруппу, состоящую из половины ее элементов, а именно, из элементов, сравнимых с 1 по модулю 4.
3.	Сколько элементов в наименьшем расширении Fg, содержащем все корни многочленов X2 + X + 1 и X3 + X + 1?
4.	Для каждой степени d + 6 найти число всех неприводимых многочленов над F2 степени d и построить их список.
5.	Для каждого d + 6 найти число нормированных неприводимых многочленов над F3 степени d и для d + 3 построить их список.
6.	Предположим, что f есть степень простого числа I. Найти простую формулу для числа нормированных неприводимых многочленов над Fp.
7.	При помощи обобщения алгоритма Евклида на многочлены (см. упражнение 12 к §1.2) найти НОД (f,g) для f,g g Fp[X] в каждом из следующих примеров. В каждом случае выразить НОД (/, д) как комбинацию f и д, т. е. в виде d(X) = u(X)f(X) + г>(Х)д(Х).
a)	f = X3 + X + 1, д = X2 + X + 1, р = 2;
б)	f = X6 + X5 + X4 + X3 + X2 + X + 1, д = X4 + X2	+	X	+	1, р = 2;
в)	f = X3 - X + 1, д = X2 + 1, р = 3;
г)	f = X5 + X4 + X3 - X2 - X + 1, д = X3 + X2 + X	+	1,	р	=	3;
д)	f = X5 + 88Х4 + 73Х3 + 83Х2 -I- 51Х + 67, д = X3 + 97Х2 + 40Х + 38, р = 101.
8.	Вычислив НОД (/, /') (см. упражнение 13 к § I. 2), найти все кратные корни /(X) = X7 + .Y5 + X4 — X3 — X2 — X + 1 g Fs[X] в его поле разложения.
9.	Предположим, что a g Fp2 удовлетворяет уравнению X2 + аХ + 6 = 0, где а, 6 g Fp.
а)	Доказать, что ар также удовлетворяет этому уравнению.
б)	Доказать, что если а £ Fp, то а = —а — ар и 6 = ар + 1. в) Доказать, что если а £ Fp, а с, d g Fp, то (ас + d)p + 1 = d2 — acd + 6c2 g Fp.
г)	Пусть i — квадратный корень из —1 в F192. Использовать пункт в), чтобы найти (2 + 3i)101 (т. е. представить его в виде а + bi, a,b g F19).
§ 2. КВАДРАТИЧНЫЕ ВЫЧЕТЫ И ЗАКОН ВЗАИМНОСТИ
47
10.	Пусть d — максимум степеней двух многочленов f,g € FP[X], В терминах d и р оценить число двоичных операций, необходимых для вычисления НОД (f,g) по алгоритму Евклида.
11.	Для каждого из следующих полей Fg, где q = р!, найти неприводимый многочлен с коэффициентами из простого поля, корень которого а был бы примитивен (т.е. порождал бы FJ), и выписать все степени а в виде многочленов от а степени меньше f. a) F4. б) Fg. в) F27- г) F25.
12.	Пусть F(X) g Гг[Х] есть примитивный неприводимый многочлен степени f. Это означает, что если а — его корень, то степенями а исчерпываются все элементы F*y. Используя обозначение О-большое, оценить (в терминах /) число двоичных операций, необходимое для записи каждой степени а в виде многочлена от а степени меньше f.
13.	а) При каких условиях на р и f каждый элемент Fpy , кроме 0 и 1, является образующим F*y?
б)	При каких условиях каждый элемент, отличный от 0 и 1, является либо образующим, либо квадратом образующего?
14.	Доказать, что для любого фиксированного р существует такая последовательность qj = pF степеней р, что случайный элемент F9j является образующим F*^ с вероятностью, стремящейся к 0 при j —• 00.
15.	Какие многочлены в FP[X] имеют тождественно нулевую производную?
16.	Пусть а — автоморфизм поля Fg из предложения II. 1.5. Доказать, что множество элементов, остающихся неподвижными при действии а1, — это поле Fpd, где d = НОД (j, /).
17.	Доказать, что если Ъ — образующий F*n и d|n, то б(РП-1)/(ра-1) — образующий F*d.
§ 2. Квадратичные вычеты и закон взаимности
Корни из единицы. Во многих ситуациях полезно знать решения уравнения X =1. Предположим, что мы работаем в конечном поле Fg. Мы сейчас найдем ответ на вопрос: сколько корней п-тл степени из единицы содержится в Fg?
Предложение II. 2.1. Пусть g — образующий элемент поля Fg. Элемент д3 является корнем п-й степени из единицы тогда и только тогда, когда nj = 0 (mod q — 1). Число корней п-й степени из единицы есть НОД (n,q — 1). В частности, Fq содержит примитивный корень п-й степени из единицы (т. е. такой элемент %, что степени £ пробегают все корни п-й степени из единицы) тогда и только тогда, когда n\(q — 1). Если £ — примитивный корень п-й степени из единицы в Fg, то £3 — также примитивный корень п-й степени из единицы тогда и только тогда, когда НОД (j, n) = 1.
Доказательство. Любой элемент F, можно записать как степень д3 образующего элемента д. Степень элемента д равна 1 в том и только том случае, когда ее показатель делится на q — 1. Таким образом, д3 — корень п-й степени из единицы, если и только если jn =
48
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
О (mod q - 1). Далее, пусть d = НОД (n,q - 1). Согласно следствию 2 из предложения 1.3. 1 сравнение nj = 0 (mod q — 1) относительно j эквивалентно сравнению = 0 (mod ^jp). Так как и взаимно просты, последнее сравнение эквивалентно тому, что j кратно (q -l)/d. Другими словами, d различных степеней элемента	—
это в точности корни п-й степени из 1. Число таких корней равно п тогда и только тогда, когда d = п, т.е. n\(q — 1). Наконец, если n|(g — 1), то полагаем £ = д^4 1^п. Тогда — 1 тогда и только тогда, когда n\j. Далее, к-я степень равна 1 тогда и только тогда, когда kj ~ 0 (mod п). Нетрудно заметить, что имеет порядок п (т.е. последнее сравнение не выполняется ни при каком положительном к < п) тогда и только тогда, когда j и п взаимно просты. Таким образом, при n|(g - 1) существует ip(n) различных примитивных корней п-й степени из единицы. Доказательство завершено.
Следствие 1. Если НОД (n,Q — 1) = 1, то 1 есть единственный корень п-й степени из единицы.
Следствие 2. Элемент — 1 Е F, имеет квадратный корень в F, в том и только том случае, когда q = 1 (mod 4).
Следствие 1 — частный случай предложения. Чтобы доказать следствие 2, заметим, что квадратный корень из —1 — это то же самое, что примитивный корень четвертой степени из 1, а необходимое и достаточное условие его существования — это 4|(g — 1).
Следствие 2 утверждает, что при q = 3 (mod 4) мы всегда можем получить квадратичное расширение F,2, присоединяя корень многочлена X2 + 1, т.е. путем рассмотрения выражений типа «гауссовых целых чисел» а 4- Ы. Мы проделали это при q = 3 в предыдущем параграфе.
Предположим, например, что р — простое число и р = 3 (mod 4). Имеется красивый способ рассмотрения поля Fp2, который обобщается также на другие ситуации. Пусть R обозначает кольцо гауссовых целых чисел (см. упражнение 14 к §1.2). Иногда используется запись R = Z + Z«, подразумевающая, что R состоит из всех линейных комбинаций элементов 1 и i с целыми коэффициентами. Если т — произвольное гауссово число, а — а + Ы, /3 = с + di — два гауссовых целых, то пишем а = (3 (mod т), если а — (3 делится на т, т.е. если частное (а — (З^/т есть целое гауссово число. Мы можем рассматривать множество R/mR совершенно так же, как кольцо классов вычетов в случае обычных целых чисел: при сложении и умножении получающийся класс вычетов не зависит от того, какие представители были выбраны в слагаемых (или сомножителях). Если теперь т = р + 0? есть простое число и р = 3 (mod 4), то, как нетрудно
§ 2. КВАДРАТИЧНЫЕ ВЫЧЕТЫ И ЗАКОН ВЗАИМНОСТИ	49
заметить, R/pR — не что иное, как поле Fp2.
Квадратичные вычеты. Пусть р — нечетное простое число, т.е. р > 2. Нам интересно знать, какие из ненулевых элементов {1,2, ...,р— 1} в Fp являются квадратами. Если а Е F* — квадрат, скажем, а = Ь2, то а имеет в точности 2 квадратных корня ±6 (так как уравнение А' — а = 0 имеет в поле не более двух решений). Таким образом, все квадраты в Fp можно найти, вычисляя b по модулю р для b = 1,2,...,(р — 1)/2 (каждое из остальных чисел сравнимо с — Ь для некоторого из этих 6), т.е. в точности половина элементов Fp — квадраты. Например, квадраты в Fu — это 1 = 1, 2 =4, З2 = 9, |2 = 5, 52 = 3. Квадраты в Fp называются квадратичными вычетами по модулю р. Остальные ненулевые элементы называются невычетами. Для р = 11 невычеты — это 2, 6, 7, 8, 10. Имеется (р - 1)/2 вычетов и (р - 1)/2 невычетов.
Если g — образующий в Fp, то любой элемент можно записать как д3. Тогда, квадрат любого элемента имеет вид д3 с четным j. Обратно, любой элемент д3, где j четно, есть квадрат: д3 = (^д3^2')2.
Символ Лежандра. Пусть а — целое число и р > 2 — простое число. Символ Лежандра определим равенством
/ \	0, если р|а,
а\	’	'' '
— =	1, если а — квадратичный вычет по модулю р,
\р )	,
4 7	— 1, если а — невычет по модулю р.
Таким образом, символ Лежандра — это просто способ обозначать, является данное целое число квадратичным вычетом или невычетом по модулю р.
Предложение II. 2. 2. Имеет место соотношение
((mod р). \Р/
Доказательство. Если а делится на р, то обе части соотношения сравнимы с нулем по модулю р. Пусть р /а. По малой теореме Ферма квадрат </р-1)/2 в Fp есть 1. Поэтому а^р Х^2 = ±1. Пусть д — образующий в F* и а = д3. Как мы видели, а — вычет тогда и только тогда, когда у четно. Далее, а — 9 равно 1 в том и только том случае, когда j^- делится на р — 1, т. е. когда j четно. Таким образом, обе части в сравнении равны ±1 в Fp, и каждая из них равна +1 тогда и только тогда, когда j четно. Предложение доказано.
50
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
Предложение II. 2.3. Символ Лежандра обладает следующими свойствами:
а)	зависит только от класса вычетов по модулю р, к которому принадлежит а-,
Ь)
с)	если b и р взаимно просты, то
d)	Ш= i u (f) = (-i)(p~i)/z.
Доказательство. Свойство а) непосредственно следует из определения. Свойство Ь) следует из предложения II. 2. 2, так как пра-(р—1)/2 ,(р-1)/2	, ,Лр-1)/2	„	„
вая часть сравнима с а о = \аоу , как и левая. Свойство с) следует непосредственно из свойства Ь). Первое равенство свойства d) очевидно, так как I2 = 1. Второе равенство d) вытекает из следствия 2 предложения II. 2.1 (или из предложения II. 2.2 с а = —1). Предложение доказано.
Часть Ь) предложения II. 2. 3 показывает, что можно определить, является ли а квадратичным вычетом по модулю р, т. е. вычислить если разложить на множители число а и найти символы Лежандра сомножителей. Первый шаг к этому — записать а как произведение степени 2 и нечетного числа. Рассмотрим теперь, как вычисляется (?)
Предложение II. 2.4. Имеет место соотношение
2\ _ , (р2_1)/8 _ I 1, если р = ±1 (mod 8), р J	( —1, если р = ±3 (mod 8).
Доказательство. Пусть /(га) = ( — 1/п 1^8 при га нечетном, /(га) = 0 при п четном. Мы хотим показать, что (jQ = f(p). Из различных доказательств мы выберем эффективный метод, основанный на том, что нам уже известно о конечных полях. Так как р2 = 1 (mod 8) для любого нечетного простого р, то поле Fp2 содержит примитивный корень 8-й степени из единицы. Обозначим его Заметим, что £4 = -1. Положим G = ^7_0 (G — пример того, что называется гауссовой суммой'). ТогдаС = £—£3—/5+/7 = 2(£—£3) (так как £5 = £4£ =	£7 = -£3) и G2 = 4(£2 - 2£4 + £6) = 8. Поэтому
в поле Fp2 имеем:
Gp = (G2){p'1)/2G = 8(p~1)/2G = f-'j G = G \P/ \PJ
§ 2. КВАДРАТИЧНЫЕ ВЫЧЕТЫ И ЗАКОН ВЗАИМНОСТИ	51
согласно предложению II. 2.2 и предложению II. 2.3 с). С другой стороны, используя определение G, соотношение (а + 6)р = ар + Ьр, справедливое в Fp2, а также очевидное равенство /(j)p = f(j), находим, что Gp =	Легко проверить, что /(;) = f(p')f(pj'). Про-
изведем теперь замену переменных j' = pj (ясно, что по модулю 8 индекс j так же, как и j, пробегает 0,1,..., 7). Тогда
ж = £ ej = /(?) £ л/) е = f(P) g.
j=0	j’ = 0
Сравнение двух равенств для Gp дает желаемый результат (деление на G возможно, так как G = 8, т.е. G 0 в Fpz).
Далее мы будем иметь дело с простыми нечетными делителями числа а. Обозначим такой нечетный делитель через q. Внимание: в оставшейся части параграфа q всегда будет обозначать простое нечетное число, отличное от р, а не степень р, как это было в предыдущем параграфе.
Число а в силу предложения II. 2. За) мы всегда можем считать меньшим р, поэтому и его простые делители q будут меньше р. Следующее предложение — фундаментальный квадратичный закон взаимности — связывает и Последний символ Лежандра считать легче, так как можно заменить р его наименьшим положительным вычетом по' модулю q, следовательно, свести к символу Лежандра для меньших чисел. Квадратичный закон взаимности утверждает, что (р) И (f) не совпадают между собой, только если и р, и q сравнимы с 3 по модулю 4: в этом случае они противоположны по знаку. Это условие можно выразить формулой, используя тот факт, что (р—1)(р—1)/4 нечетно лишь тогда, когда р, q = 3 (mod 4), а в остальных случаях четно.
Предложение II. 2. 5 (Квадратичный закон взаимности). Пусть р, q — два нечетных простых числа. Тогда
= (^(p-DU-DM (р_\	" (?) ’ если Р = Ч = 3 (mod 4);
\Р/	\Ч/	|	в остальных случаях.
Доказательство. Опубликовано несколько дюжин доказательств квадратичного закона взаимности. Мы дадим весьма короткое доказательство в духе предыдущего предложения, используя конечные поля. Пусть / — такая степень р, что р^ = 1 (mod q\ Мы можем, например, всегда полагать f = q — 1. Как мы установили в
52
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
начале параграфа (предложение II. 2.1), поле Fp/ содержит примитивный корень q-й степени из единицы, который мы обозначим £ (напомним, что здесь q обозначает отличное от р простое число, а не р^). Определим «гауссову сумму» G формулой G =	Ниже
мы докажем лемму о том, что G2 = (-1/9 1^2q. Покажем сначала, как с ее помощью получается нужный нам результат. Это доказательство очень похоже на доказательство предложения II. 2. 4. Во-первых (применяя лемму, которая будет доказана ниже), мы находим, что
Gp = (G2)(p-1)/2G = ((- 1)(-1)/29)(Р 1)/2 G
_ (_ i)(p~1)(?~1 )/4 ^(р-1 )/2с — (_ 1 )(р~1)(|?-1)/4 яА q
согласно предложению II. 2.2 с q вместо а (напомним, что мы действуем в поле Fp/ характеристики р и поэтому сравнения по модулю р становятся равенствами). С другой стороны, из определения G, равенства (а + 6)р = ар + Ьр в поле Fp/ и очевидного соотношения (чУ = (?)имеем
Gp
в силу частей Ь) и с) предложения II. 2. 3. Вынося (^ j за знак суммы и меняя порядок суммирования (j —> j' = pj), приходим к соотношению Gp = G. Приравнивая два выражения для Gp и производя деление на G (что возможно, так как G2 = ±q и потому не равно нулю в Fpy), получаем квадратичный закон взаимности.
Итак, остается лишь доказать следующую лемму.
Лемма. Справедливо равенство G2 = ( —l/9 1^2q'.
Доказательство. Воспользуемся определением G, в одном из сомножителей G заменим индекс суммирования j на — к и заметим, что суммирование можно производить, начиная с 1, так как I 7 ) =0. Мы можем записать
j=i fc=i
§ 2. КВАДРАТИЧНЫЕ ВЫЧЕТЫ И ЗАКОН ВЗАИМНОСТИ
53
здесь мы воспользовались частью d) предложения II. 2. 3, чтобы заменить на (-1/9 И произвели замену переменных к —> jk во внутреннем суммировании (так как для каждого фиксированного j элементы jk пробегают вместе с к все ненулевые вычеты по модулю q, а слагаемые зависят только от соответствующих вычетов по модулю q). Мы далее используем часть с) предложения II. 2. 3, изменяем f к\
порядок суммирования и выносим ( - I за пределы внутренней суммы по j, что дает G2 =	(|) jTj к\ В обеих двойных суммах сум-
мирование распространяется от 1 до q - 1. Но мы можем, не изменяя величины общей суммы, добавить слагаемые с j = 0: это равносильно прибавлению величины (^)> которая равна нулю, так как число вычетов совпадает с числом невычетов. Поэтому двойная сумма принимает вид
9-1 /9-1 еОе^”4-fc=i j=0
Но при каждом к 1 внутренняя сумма равна 0 как сумма всех различных степеней примитивного корня £ из 1. В этом легко убедиться, заметив, что умножение такой суммы на сводится к перестановке слагаемых, т. е. произведение такой суммы и £z- 1	0 равно 0. Следо-
вательно, вклад дает только слагаемое с к = 1, и мы в итоге получаем
/1\ 9-1
с2 = (_1)(9-1)/2/П^е0 = (_1)(9_1)/29
j-0
Лемма доказана и, таким образом, доказан квадратичный закон взаимности.
Пример 1. Определить, является ли 7411 квадратичным вычетом по модулю простого числа 9283.
Решение. Так как 7411 и 9283 — простые числа, сравнимые с 3 по модулю 4, имеем (Щ|) = -	= - (Ни) согласно пред-
ложению II. 2. 3, часть а). Так как 1872 = 24 • З2 • 13, согласно предложению II. 2.3, часть с), имеем - (Цуу) = — (т^уу)- Применяем теперь квадратичный закон взаимности, учитывая, что 13 = 1 (mod 4): _ (тттт) = —	= — (тт) = —1- Тем самым мы видим, что 7411 —
невычет по модулю 9283.
Неудобство при подобном вычислении символа Лежандра заключается в том, что каждый раз верхнее число надо разлагать на множители, чтобы иметь возможность применить предложение II. 2. 5. Если наши числа астрономически велики, то это потребует чрезмерных затрат времени. К счастью, можно обойтись без какого бы то ни было
54
ГЛ. П. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
разложения (исключая выделение степеней 2, что сделать очень легко). Мы докажем сейчас обобщение квадратичного закона взаимности, применимое ко всем нечетным положительным целым числам, не обязательно простым. Но сначала введем определение, обобщающее определение символа Лежандра.
Символ Якоби. Пусть а — целое число, п — любое нечетное натуральное число. Пусть п = Pi'p?2  • -Prг есть разложение п на простые множители. Символ Якоби определяется как произведение символов Лежандра по всем простым делителям числа п:
Важно иметь в виду: равенство = 1 для составного п не означает, что а есть квадрат по модулю п. Например, = (|)	=
( —1)( — 1) = 1, однако нет такого целого числа, квадрат которого был бы сравним с 2 по модулю 15.
Обобщим теперь предложения II. 2. 4 и II. 2. 5 на символ Якоби.
Предложение II. 2.6. Для любого нечетного натурального п
= (-1)(п2-1)/8
J
Доказательство. Пусть /(и), как и в доказательстве предложения II. 2. 4, обозначает функцию в правой части равенства. Легко заметить, что	= /(^i)/(^2) для любых двух нечет-
ных чисел п\ и п? (достаточно рассмотреть все возможности для щ и ?г2 как вычетов по модулю 8). Но отсюда следует, что правая часть (\ Од /	\ СХГ
Ру) ’‘ \P~J (ПО ПРеДЛОЖе" нию II. 2. 4), что, по определению, равно (-).
Предложение II. 2. 7. Для любых двух натуральных нечетных чисел тип имеем
\ п/	\т/
Доказательство. Заметим, во-первых, что если тип имеют общий множитель, то по определению символов Лежандра и Якоби обе части равны нулю. Поэтому можно считать, что НОД (т, д) = 1. Затем мы записываем т и п в виде произведений простых чисел: т = PiP2'''Pr^ п = 4i92"'4s (в записях могут встречаться повторения, если тип делятся на квадраты). Чтобы перейти от (я) = riij (fj) к (£) = Щ, мы должны rs раз применить
§ 2. КВАДРАТИЧНЫЕ ВЫЧЕТЫ И ЗАКОН ВЗАИМНОСТИ
55
квадратичный закон взаимности для символа Лежандра. Число -1 получится столько же раз, сколько встретится случаев, когда как Pi в разложении т, так и qj в разложении п сравнимы с 3 по модулю 4; а число таких случаев равно произведению числа простых сомножителей в разложении т, сравнимых с 3 по модулю 4, и числа таких же простых сомножителей в разложении п. Значит, (^) = (^-) всегда, кроме случая, когда число простых сомножителей, сравнимых с 3 по модулю 4, в каждом разложении нечетно; в последнем случае (^•) — — Но произведение нечетных простых (в частности, т или п') сравнимо с 3 по модулю 4 тогда и только тогда, когда оно содержит нечетное число простых, сравнимых с 3 по модулю 4. Итак, в результате перехода от (^) к (^) коэффициент —1 может возникнуть только при т = п = 3 (mod 4). Тем самым мы получили закон взаимности для символа Якоби.
Пример 2. Вернемся к примеру 1: покажем, как можно вычислить символ Лежандра, не разлагая 1872 на множители полностью, но лишь выделяя в нем максимальную степень 2. По квадратичному закону взаимности для символа Якоби имеем:
/1872\	/ 16 \ / 117 \	/7411\	/ 40 \
~ \7411 ) ~ ~ \7411 / \74117 “ - \ 117 J ~ ~	’
это равняется - (^)	= (^ = (^) = (|) = -1.
Квадратные корни в кольце вычетов по модулю р. Используя квадратичный закон взаимности, можно быстро определить, является ли данное целое число а квадратичным вычетом или невычетом по модулю р. Однако если а — вычет, то этот факт не помогает решить сравнение х2 = a (mod р), — он лишь означает, что решение существует. В заключение этого параграфа мы приведем алгоритм, позволяющий для данного квадратичного вычета а найти его квадратный корень, если известен какой-либо невычет п.
Предположим, что р — нечетное простое число и предположим, что нам известен квадратичный невычет п по модулю р. Пусть а — такое целое число, что (^) = 1. Мы хотим найти такое целое число х, что х.2 = a (mod р). Для этого выполняем следующие действия. Во-первых, записываем р — 1 в виде 2°з (з нечетно). Вычисляем п3 по модулю р и обозначаем его через Ь. Далее вычисляем a^s+1'^2 по модулю р и обозначаем его через г. Покажем, что г в определенном смысле близко к квадратному корню из а. Точнее, покажем, что отно-шение г к а есть корень 2 -и степени из единицы по модулю р. Для краткости мы вместо сравнений по модулю р будем писать равенства
56
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
и через а 1 обозначать обратный элемент к а по модулю р. Тогда
7 -1 2\2°-1	з2“-1	(р-1)/2	/	,
(а г )	= a —o'
\PJ
Теперь нужно умножением г на некоторый корень 2°-й степени из 1 получить такой х, чтобы выполнялось равенство х /а = 1. Убедимся, прежде всего, что Ь есть примитивный корень 2°-й степени из единицы, т. е. что каждый корень 2°-й степени из единицы можно представить как степень Ь. Сначала заметим, что Ъ есть корень 1 -и степени из единицы: о — п — п =1. Если бы корень Ь не был примитивным, то существовала бы некоторая меньшая его степень (делитель 2°), возведение в которую дало бы 1. Но тогда Ь был бы четной степенью примитивного корня 2°-й степени из 1, т. е. квадратом в Fp, что невозможно, так как b = пя, п — невычет, a s нечетно, и потому (^) =	= -1- Таким образом, Ь — примитив-
ный корень 2“-й степени из единицы. Остается найти подходящую степень Ь3. где 0 j < 2°, так, чтобы х = Ь3 г оказалось искомым квадратным корнем из а. Для этого представим j в двоичной записи j = jo + 2j’i + • • • + 2° ja — 2 и покажем, что можно последовательно определять, какие значения (0 или 1) принимают	. (Заметим,
что всегда можно предполагать, что j < 2	, так как о = — 1,
и, следовательно, изменение j на 2 дает значение j , для которо-го Ь3 г является другим квадратным корнем из а.) Вот индуктивная процедура для нахождения двоичных цифр в разложении j.
1. Возводим г2/а в степень 2° 2. Как мы доказали, квадрат этого элемента есть 1. Следовательно, мы получаем ±1. Если мы получили 1, то полагаем j0 = 0, если мы получили —1, то полагаем = 1. Заметим, что jo тем самым выбрано так, что (Ь3огУ /а является корнем 2 -и степени из единицы.
2. Пусть такие jo, Ji,... ,jfc-i, что (^°+2jl + ’”+2	Jt-1r)2/а явля-
ется корнем 2° к 1-й степени из 1, уже найдены, и мы хотим определить j\. Возводим полученный корень в степень 2° к 2 и выбираем j\ в зависимости от того, получается при этом +1 или —1:
ла — к — 2
/ z^Jo + 2л +--+2* — 1 _ i х2 \	1
если ------------------------ = < d ,
\ а / ~ 1
к	/О	п
то берем jk = I соответственно. Легко проверить, что при таком выборе jk «исправленное» значение оказывается ближе к квадратному корню из а, т. e. (о	г) /а — корень 2 -и степени из 1.
§ 2. КВАДРАТИЧНЫЕ ВЫЧЕТЫ И ЗАКОН ВЗАИМНОСТИ
57
Наконец, когда мы дойдем до к = а —2 и найдем ja-2, мы получим, что
(bJo+2jl + -+2“’2j“-27-)2/a = 1,
т.е. bJr — искомый квадратный корень из а, что и требовалось.
Пример 3. Используем предложенный алгоритм, чтобы найти квадратный корень из а = 186 по модулю р = 401.
Решение. Число п = 3 — невычет. Имеем р — 1 = 24 • 25, поэтому b = З25 = 268 и г = а13 = 103 (вместо сравнений по модулю р пишем равенства). Вычислив а 1 = 235, получим, что число г2/а = 98 должно быть корнем степени 8 из единицы. Мы подсчитываем далее, что 984 = -1. Следовательно, Jo = 1. Затем находим, что (&r)2/a = —1. Так как квадрат этого числа равен 1, то ji = 0 и, наконец, /2 = 1- Итак, j = 5 и искомый квадратный корень есть Ь5т = 304.
Замечания. 1. Наиболее простым этот алгоритм оказывается в случае, когда р = 3 (mod 4), р — простое. Тогда а = 1, s = (р — 1)/2 и (з + 1)/2 = (р + 1)/4. Легко проверить, что (р+1)/4
х = г = а — искомый квадратный корень.
2. Оценим время работы этого алгоритма. Предположим, что невычет п известен с самого начала. Действия по нахождению s, b и г = б/84"1)/2 (проводимые в кольце вычетов по модулю р) требуют не более O(log р) двоичных операций (см. предложение 1.3.6). Далее, при нахождении j наиболее трудоемкая часть к-го шага индукции — возведение в степень 2° к 2 — требует а — к — 2 возведений в квадрат по модулю р чисел, меньших р. Так как а — к — 2 < а, для каждого шага справедлива оценка O(alog р). Так как всего шагов а — 1, окончательная оценка имеет вид O(log3 р+о2 log2 р) = О ((log р-|-a2) log2 р). В худшем случае (если р— 1 лишь небольшим множителем отличается от степени 2) это составляет O(log4p), так кар а < log2 р = O(logp). Таким образом, если дан невычет п по модулю р, то можно извлечь квадратный корень по модулю р за полиномиальное время (ограниченное 4-й степенью числа бит в записи р).
3. В настоящее время не известны строгие (не использующие так называемую «гипотезу Римана») доказательства существования алгоритма, который находит за полиномиальное время невычет по модулю р. Однако, для любого е > 0 существует алгоритм, который за полиномиальное время находит невычет с вероятностью, большей 1 — е. А именно, случайно выбранное число п, 0 < п < р, с вероятностью 1/2 является невычетом, и это можно проверить за полиномиальное время (см. упражнение 17 ниже). Если мы проделаем это для более
58
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
чем 1о§2(1/е) различных случайно выбранных п, то с вероятностью, большей, чем 1 - £, по крайней мере, одно из них будет невычетом.
УПРАЖНЕНИЯ
1.	Составить таблицу всех квадратичных вычетов и невычетов по модулю р для р = 3, 5, 7, 13, 17, 19.
. q к
2.	Предположим, что р|2	+1, где к > 1.
а)	Используя упражнение 4 §1.4 показать, что р = 1 (mod 2* + 1).
б)	Используя предложение II. 2. 4, доказать, что р = 1 (mod 2*: + 2).
в)	Используя часть б), показать, что 215 16 + 1 — простое число.
3.	Сколько корней степени 84 из единицы содержится в поле из II3 элементов?
4.	Доказать, что (-^) = 1, если р = 1 или 3 (mod 8); (-^) = — 1, если р = 5 или 7 (mod 8).
5.	Найти (уу?), используя закон квадратичной взаимности.
6.	Найти гауссову сумму G — 52jZ}(^)£J (где £ — корень q-й степени из 1 в поле F / , где р' = 1 (mod q)), если
a)	q = 7, р =	29,	f = 1,	£	=	7;
б)	q = 5, р =	19,	f = 2,	£	=	2 — 4г,	где	i	—	корень	.Y2	+	1;
в)	q = 7, р =	13,	f = 2,	£	=	4 + а,	где	а	—	корень	№	—	2.
7.	Пусть т = а4 + 1, а 2. Найти такое натуральное х между 0 и т/2, что х2 = 2 (mod т). Воспользовавшись этим, найти у/2 в Fp в каждом из случаев: р = 17, 257, 65537 (простые числа Ферма); р = 41 = (З4 + 1)/2; р = 1297; р = 1201. (Указание: см. доказательство предложения II. 2. 4.)
8.	Пусть р и q — простые числа, q = 1 (mod р). Пусть £ — примитивный корень р-й степени из 1 в F9. В терминах £ найти формулу для квадратного корня из (^-)р в F,.
9.	а) Пусть т = ар — 1, где р — нечетное простое число и а 2. Найти такое натуральное число х между 0 и т/2, что х2 = (-^—)р (mod т). Использовать это для нахождения у/5 в F31,	7 в Fi27, \/Тз в Fgi91, Vв F1093.
б)	Пусть q = 2Р — 1 есть простое число Мерсенна. Найти выражение для такого наименьшего натурального числа Ъ, что Ь2 = (-^-)р (mod q).
10.	Вычислить символ Лежандра (: а) используя квадратичный закон взаимности только для символа Лежандра (т.е. разлагая на множители все появляющиеся числа), б) не разлагая на множители нечетные числа, т.е. используя квадратичный закон взаимности для символа Якоби.
11.	Вычислить следующие символы Лежандра:
*) СНГ °) (й): ) (от): о (от): ») (от»): «) йот): «) (®Ц).
12.	а) Пусть р — нечетное простое. Доказать, что —3 является вычетом в Fp тогда и только тогда, когда р = 1 (mod 3).
б)	Показать, что 3 является невычетом по модулю любого простого числа Мерсенна, большего 3.
13.	Найти условие на последнюю десятичную цифру простого числа р, эквивалентное тому, что 5 — квадрат в Fp.
14.	Доказать, что квадратичный вычет никогда не может быть образующим
15. Пусть р — простое число Ферма.
а) Показать, что любой квадратичный невычет есть образующий в F*.
§ 2. КВАДРАТИЧНЫЕ ВЫЧЕТЫ И ЗАКОН ВЗАИМНОСТИ
59
б)	Показать, что 5 — образующий в F*, если р/5.
в)	Показать, что 7 — образующий в F*, если р # 3.
16.	Пусть р — простое число Мерсенна. Положим д = р2. Пусть г — корень X2 4-1 = 0, так что F, = Fp(i).
а)	Предположим, что целое число а2 + Ь2 — образующий элемент в F*. Показать, что тогда а + Ы — образующий для F*.
б)	Показать, что как 4 + i, так и 3 4- 2i являются образующими для F*12.
17.	Пусть р — нечетное простое число, а — целое число между 1 и р — 1. Оценить в терминах р число двоичных операций, требующихся для вычисления (^): а) при использовании квадратичного закона взаимности для символа Якоби и б) при использовании предложений II. 2. 2 и 1.3.6.
18.	а) Пусть р — нечетное простое число, а, Ь, с — целые числа и р / а. Доказать, что число решений zg{0,l,2,...,p—1} сравнения ах2 + Ьх + с = 0 (mod р) дается формулой 1 4- (у), где D = Ь2 — 4ас есть дискриминант.
б)	Сколько решений в Fg3 имеется для каждого из следующих уравнений: 1) X2 4- 1 = 0; 2) X2 4- X 4- 1 = 0; 3) X2 4- 21Х -11 = 0; 4) X2 4- X 4- 21 = 0; 5) X2 - 4Х - 13 = 0?
в)	Сколько решений в F97 имеется для каждого из уравнений в части б)?
19.	Пусть р = 2081 и п — наименьший положительный невычет по модулю р. Найти п и, используя описанный в § II.2 метод, вычислить квадратный корень из 302 по модулю р.
20.	Пусть т = p“J ••р“г — разложение на простые множители целого нечетного числа т. Предположим, что а — целое число, взаимно простое с т и являющееся квадратом по модулю т. Ваша цель — найти такое целое х, что х2 = a (mod т). Предположим, что для каждого j мы знаем некоторый невычет , п. .
по модулю pj, т.е. такое целое пу, что (^) = — 1.
а)	Для каждого j = 1, . . . , г фиксируем р = Pj и а =	. Предположим, что,
пользуясь методом § II.2, мы нашли такое хо, что х2 = a (mod р). Показать, как можно найти такое х = хо 4- х;р 4- х?р2 4-  •  + xa-ipa~1, что х2 = a (mod р“).
б)	Описать, как найти затем такое х, что х2 = a (mod m). Метод, описанный в этом упражнении, называется «подъемом» квадратного корня от Fp (1 j г) до Z/mZ.
21.	Выше мы видели, что если п — нечетное простое число, и НОД (6, п) = 1, то
j(n-l)/2 = Г—) (mod п).	(*)
\ п /
Цель этого упражнения — показать, что если п — нечетное составное число, то соотношение (*) не выполняется не менее чем для 50% таких Ь, что НОД (6,n) = 1.
а)	Доказать, что если соотношение (*) выполняется для bi и не выполняется для 62, то оно не выполняется для bib?. Используя это, показать, что если (*) не выполняется хотя бы для одного Ь, то число элементов Ь, для которых (*) не выполняется, не меньше числа элементов, для которых оно справедливо.
б)	Пусть п делится на квадрат простого числа р. Показать, как найти такое целое число Ь, взаимно простое с п, что j(n i)/2	.(.j (mod п).
в)	Пусть п — произведение различных простых чисел и р — одно из них, а b удовлетворяет условиям: (|) = -1 и J = 1 (mod п/р). Доказать, что для Ъ соотношение (*) не выполняется. Показать, что такое b всегда существует.
22.	Объяснить, почему следующий вероятностный алгоритм дает квадратный корень из а по модулю р. Выбираем t g Fp случайно до тех пор, пока не окажется,
60
ГЛ. II. КОНЕЧНЫЕ ПОЛЯ И КВАДРАТИЧНЫЕ ВЫЧЕТЫ
что I2 — а является невычетом по модулю р. Пусть а = у/С1 — а обозначает элемент в квадратичном расширении Fp2. Затем вычисляем Ь = (/ + С[)(р + 1)/2. Показать, что ft G Fp и что 62 = а.
23.	Предположим, что р — простое число, р = 1 (mod 4) и известен квадратичный невычет п по модулю р. Описать алгоритм, дающий представление р = с2 + d2 и имеющий временную оценку O(log3p).
ЛИТЕРАТУРА к ГЛАВЕ II
1.	Adleman L., Manders К., Miller G. On taking roots in finite fields. — In: Proceedings of the 20th Annual Symposium on the Foundations of Computer Science, 1979, p. 175-178.
2.	Berlekamp E. R. Factoring polynomials over large finite fields. — Math. Comp., 1970, v. 24, p. 713-735.
3.	Blake I., Gao A'., Menezes A., Mullen R., Vanstone S., Yaghoobian T. Applications of Finite Fields. Dordrecht etc.: Kluwer Acad. Publ., 1992.
4.	Gauss С. E. Disquisitiones Arithmeticae. London-New Haven: Yale Univ. Press, 1966.
5.	Grosswald E. Topics from the Theory of Numbers. 2nd ed. Basel: Birkhauser, 1984.
6.	Herstein I. N. Topics in Algebra. 2nd ed. N.Y.-Chichester: Wiley, 1975.
7.	Ireland K., Rosen M. I. A Classical Introduction to Modern Number Theory. 2nd ed. Heidelberg etc.: Springer, 1990.
8.	Ленг С. Алгебра. M.: Мир, 1968.
9.	Лидл В., Нидеррайтер Г. Конечные поля. М.: Мир, 1988.
10.	Pless V. Introduction to the Theory of Error-Correcting Codes. N.Y.-Chichester: Wiley, 1982.
11.	Shanks D. Solved and Unsolved Problems in Number Theory. 3rd ed. N.Y.: Chelsea Publ. Co., 1985.
121 Виноградов И. M. Основы теории чисел. М.: Наука, 1972.
13*. Боревич 3. И., Шафаревич И. Р. Теория чисел. М.: Наука, 1985.
Добавлено при переводе. — Прим. ред.
ГЛАВА III
КРИПТОГРАФИЯ
§ 1. Некоторые простые криптосистемы
Основные обозначения. Криптография изучает методы пересылки сообщений в замаскированном виде, при которых только намеченные отправителем получатели могут удалить маскировку и прочитать сообщение. Предназначенное для пересылки сообщение называется открытым текстом, а замаскированное сообщение — шифрованным текстом или кратко шифртекстом. Открытый текст и шифртекст записываются в некоторых алфавитах', обычно, но не всегда, эти алфавиты совпадают и состоят из некоторого числа N букв. Термин «буква» (или «символ») может относится не только к обычным буквам, но также к цифрам, к пробелам, к знакам пунктуации и ко всяким другим символам, используемым при записи сообщения. (Если мы не включим, например, пробелы, то все слова слипнутся и сообщение будет трудно читать.) Процесс преобразования открытого текста в шифртекст называется шифрованием (или зашифрованием), а обратная процедура называется дешифрованием (или расшифрованием).
Открытый и шифрованный тексты разбиваются на элементарные сообщения («элементы»). Элементом может быть отдельная буква, пара букв (биграмма), тройка букв (триграмма) или даже блок из 50 букв. Шифрующее преобразование является функцией, которая преобразует элемент открытого текста в элемент шифртекста. Другими словами, это — отображение / из множества Р всех возможных элементов открытого текста в множество С всех возможных элементов шифртекста. Будем всегда предполагать, что это отображение взаимно однозначное, т. е. для одного элемента шифртекста существует один и только один элемент открытого текста, из которого элемент шифртекста получается при шифровании.- Дешифрующее преобразование действует в обратном направлении, это — функция f , вое-
62
ГЛ. III. КРИПТОГРАФИЯ
станавливающая открытый текст по шифртексту. Всю эту ситуацию можно схематически изобразить диаграммой
P-Lcf^ Р.
Любая такая конструкция называется криптосистемой.
Первый шаг в создании криптосистемы состоит в обозначении всех возможных элементов открытого и шифрованного текстов математическими объектами, на которых легко строить функции. Часто такими объектами являются числа из некоторого диапазона. Например, если элементами открытого и шифрованного текстов являются отдельные буквы латинского 26-буквенного алфавита от А до Z, то можно обозначать буквы числами 0,1,...,25, которые будем называть их «числовыми эквивалентами». Так, вместо А мы пишем 0, вместо S — 18, а вместо X — 23. Если же, например, элементарными сообщениями являются биграммы букв 27-буквенного алфавита, состоящего из букв A-Z и пробела, то можно сопоставить пробелу числовой эквивалент 26 (следующий за эквивалентом для Z), а в качестве обозначения для биграммы, состоящей из двух букв с эквивалентами х.уЕ {0,1,..., 26}, взять целое число
27т + у е {0,1,.. .,728}.
Таким образом, мы рассматриваем отдельные буквы как разряды 27-ричного числа, а саму биграмму — как двузначное число по основанию 27. Например, биграмме «NO» соответствует целое число 27-13+14 = 365. Аналогично, если в качестве элементов текста используются триграммы, их можно обозначать числами 729т + 272/+ z £ {0,1,..., 19682}. В общем случае ^-буквенные блоки TV-буквенного k алфавита можно обозначать целыми числами между 0 и N - 1, рассматривая каждый такой блок как /с-разрядное целое число в системе, счисления с основанием N.
, Иногда удобнее обозначать элементарные сообщения иными математическими объектами, нежели целые числа, например, векторами или точками некоторой кривой. Hq в данной главе в качестве обозначений используются только целые числа.
Примеры. Начнем со случая, когда элементами сообщений (как открытого, так и шифрованного) являются буквы IV-бу к венного алфавита, обозначенные числами 0,1,2,...,7V — 1. Тогда по определению преобразование шифрования является перестановкой этих N чисел.
Для ускорения шифрования и дешифрования удобно иметь относительно простое правило реализации такой перестановки. Один из
§ 1. НЕКОТОРЫЕ ПРОСТЫЕ КРИПТОСИСТЕМЫ
63
способов — рассматривать множество целых {0,1,2,..., N - 1} как Z/7VZ и использовать на нем операции сложения и умножения по модулю N.
Пример 1. Предположим, что используется 26-буквенный алфавит А-Z с числовыми эквивалентами 0-25. Пусть буква Р Е {0,1,...,25} представляет собой элемент открытого текста. Определим функцию f из множества {0,1,..., 25} на себя правилом
г, f Р + 3, если Р < 23, [ Р — 23, если х 23.
Другими словами, f просто прибавляет 3 по модулю 26: f(P) = Р + 3 (mod 26). Последнее определение, использующее модульную арифметику, удобнее для записи и для работы с ним. Так, в данной системе для зашифрования слова «YES» сначала мы преобразуем буквы в цифры: 24 4 18, затем прибавляем 3 по модулю 26: 1 7 21 и переходим обратно к буквам: «BHV». Для дешифровки сообщения надо вычесть 3 по модулю 26. Например, шифртекст «ZKB» переходит в открытый текст «WHY». Эта криптосистема, по-видимому, использовалась в Древнем Риме Юлием Цезарем, который, как предполагается, изобрел ее сам.
Пример 1 можно обобщить следующим образом. Предположим, что используется jV-буквенный алфавит с числовыми эквивалентами 0,1,..., N — 1. Пусть b — фиксированное целое. Под преобразованием сдвига мы понимаем функцию /, определенную по правилу С = f(P) = Р + b (mod N). Шифрсистема Юлия Цезаря отвечает случаю N = 26, b = 3. Для дешифрования элемента шифртекста С € {0,1,..., N — 1} надо просто вычислить Р = / 1 (С) = С - b (mod N).
Теперь предположим, что вы не обладаете информацией о правилах зашифрования и дешифрования, но, тем не менее, хотите прочитать кодированное сообщение. Такое действие называется вскрытием кода, а наука о вскрытии кодов называется криптоанализом.
Для вскрытия криптосистемы нужна, информация двух видов. Первый вид — это информация о природе (структуре) криптосистемы. Например, может быть известно, что криптосистема использует преобразование сдвига отдельных букв 26-буквенного алфавита A-Z с числовыми эквивалентами 0-25 соответственно. Второй вид информации — это информация о конкретном выборе некоторых параметров рассматриваемой криптосистемы. В нашем примере второй тип информации — это значение параметра сдвига Ь. Имея эту информацию, можно по формулам С = Р + b (mod N) и Р = С - b (mod N) производить шифрование и дешифрование.
64
ГЛ. III. КРИПТОГРАФИЯ
Будем всегда предполагать, что общая структура системы известна. На практике пользователи часто имеют оборудование для шифрования и дешифрования, предназначенное для реализации только одной криптосистемы. Со временем возможна утечка, информации о типе используемой системы. Поэтому для повышения надежности производят частую смену выбираемых параметров системы. Например, два пользователя криптосистемы с преобразованием сдвига могут встречаться раз в год. При каждой встрече они согласовывают список из 52 вариантов выбора параметра Ь, по одному варианту на каждую неделю следующего года.
Параметр b (более сложные криптосистемы обычно используют несколько параметров) называется ключом или, более точно, ключом шифрования.
Пример 2. Так, предположим, что перехвачено сообщение «FQOCUDEM», которое, как нам известно, зашифровано с использованием преобразования сдвига на буквах 26-буквенного алфавита, как в примере выше. Нам остается найти Ь. Сделать это можно при помощи частотного анализа. Он работает следующим образом. Предположим, что нами перехвачен длинный отрезок шифртекста, скажем, несколько сотен букв. Мы знаем, что «Е» — наиболее часто встречающаяся буква английского языка. Поэтому разумно предположить, что наиболее часто встречающаяся в шифртексте буква является результатом шифрования буквы «Е». Пусть чаще других в шифртексте встречается буква «U». Это значит, что сдвиг преобразует «Е»= 4 в «U»= 20, т.е. 20 = 4 + b (mod 26), так что b = 16. Чтобы дешифровать сообщение, остается вычесть 16 (по модулю 26) из числовых эквивалентов «FQOCUDEM»:
«FQOCUDEM» = 516142203412
15 0 2412413 1422 = «PAYMENOW».
Если шифрование сдвигом применяется к буквам 26-буквенного алфавита, то нет необходимости иметь длинный отрезок шифртекста, позволяющий найти наиболее часто встречаемую букву. В конце концов, для Ь имеется всего 26 возможностей, и можно просто попробовать их все. Скорее всего, лишь одному из значений Ь будет соответствовать осмысленное сообщение, такое b и есть ключ шифрования.
Значит, этот тип криптосистем слишком прост, чтобы быть хорошим. Вскрыть его очень легко. Его можно усовершенствовать, используя более широкий класс преобразований Z/2VZ, называемых аффинными отображениями: С = aP-\-b (mod А), где а и b — фиксированные целые числа (вместе они образуют ключ шифрования). Если,
§ 1. НЕКОТОРЫЕ ПРОСТЫЕ КРИПТОСИСТЕМЫ
65
например, опять имея дело с 26-буквенным алфавитом, мы хотим зашифровать сообщение «PAYMENOW», используя аффинное отображение с ключом шифрования а = 7 и b = 12, то получим
15 0 24 12 4 13 14 22 w 13 12 24 18 14 256 10 = «NMYSOZGK».
Чтобы расшифровать сообщение, зашифрованное применением аффинного отображения С = аР + b (mod TV), нужно просто выразить Р через С: Р = а'С + b' (mod TV), где а = а 1 есть обратное к а по модулю N число, a b' равно —а 1Ь. Заметим, что это возможно лишь при НОД (a, TV) = 1. В противном случае нельзя выразить Р через С: если НОД (а,Лг) > 1, то, как нетрудно убедиться, одной букве шифртекста отвечает несколько букв открытого текста, и поэтому нельзя однозначно восстановить открытый текст по шифрованному. По определению такое преобразование не является шифрующим, так как последнее обязано быть взаимно однозначным, т. е. открытый текст должен определяться шифртекстом однозначно. Итак, аффинная криптосистема над TV-буквенным алфавитом с параметрами a 6 (Z/TVZ)* и Ь б Z/'VZ задается правилами
С = аР + b (mod А), Р = а С + b' (mod TV),
где а = а 1 в (Z/TVZ)*, b' = —а 16.
Как частный случай аффинной криптосистемы при а = 1 получаем преобразования сдвига. В другом частном случае при 6 = 0 получаем Р = аС (mod TV), С = а Р (mod N). Такое преобразование называется линейным. Оно отображает сумму в сумму, т. е. если Pi при шифровании переходит в Ci, а Р^ — в С2, то Pj + Р2 переходит в Ci + С2 (сложение, конечно, производится по модулю N).
Пусть теперь нам известно, что перехваченное сообщение зашифровано применением аффинного отображения букв TV-буквенного алфавита. Мы хотим определить ключ а, Ь, чтобы прочитать это сообщение. Для этого нужно знать, как зашифровываются какие-нибудь две буквы.
Пример 3. По-прежнему используем 26-буквенный алфавит. Допустим, что в шифртексте чаще всего встречается буква «К», а вторая по встречаемости буква — «D». Разумно предположить, что ими зашифрованы две наиболее часто встречающиеся буквы английского языка «Е» и «Т». Заменяя буквы их числовыми эквивалентами и подставляя последние в формулу дешифрования, получаем:
10а + b' = 4 (mod 26), За' ф b' = 19 (mod 26).
66
ГЛ. III. КРИПТОГРАФИЯ
Мы имеем два сравнения с двумя неизвестными а и b'. Кратчайший способ решения — вычесть одно сравнение из другого, чтобы исключить b'. Получаем Та = 11 (mod 26) и а = 7 111 = 9 (mod 26). Наконец, находим Ь , подставив это значение а в одно из сравнений: b' = 4 —10а = 18 (mod 26). Итак, сообщение может быть дешифровано применением формулы Р = ОС + 18 (mod 26).
Из линейной алгебры известно, что п уравнений позволяют определить п неизвестных только тогда, когда эти уравнения независимы (т.е. когда определитель системы отличен от нуля). Например, в случае двух уравнений с двумя неизвестными это означает, что прямолинейные графики уравнений пересекаются в одной точке (не параллельны). В нашем случае при попытке провести криптоанализ аффинной системы на базе информации о двух наиболее часто встречаемых буквах шифртекста может оказаться, что два сравнения не могут быть однозначно разрешены относительно а и b .
Пример 4. Пусть имеется отрезок шифртекста, полученного применением аффинного преобразования 28-буквенного алфавита, содержащего буквы A-Z, пробел и знак ?, причем буквы имеют численные эквиваленты 0-25, пробел=26, 1=27. Пусть частотный анализ показал, что чаще всего в шифртексте встречаются «В» и «?» (в указанном порядке). Поскольку самыми частыми буквами в английском письменном тексте в таком 28-буквенном алфавите являются пробел и «Е» (в указанном порядке), мы предполагаем, что пробел при шифровании переходит в «В», а «Е» — в «?». Это приводит к двум сравнениям a -\-b' = 26 (mod 28), 27 а +b' = 4 (mod 28). Вычитая одно из другого, получаем 2а = 22 (mod 28), что эквивалентно сравнению а = 11 (mod 14). Это означает, что а = 11 или 25 (mod 28), а тогда b' ~ 15 или 1 (mod 28) соответственно. Оба допустимых аффинных преобразования 11С + 15 и 25(7 + 1 дают пробел и «Е» как буквы открытого текста, отвечающие «В»и «?» соответственно. Теперь можно испытать обе возможности и определить, какой вариант дает осмысленное сообщение. А можно продолжить частотный анализ. Пусть «I» — третья по частоте встречаемости буква шифртекста. Используя тот факт, что «Т» — третья по частоте встречаемости буква английского языка (из наших 28 букв), получаем третье сравнение 8а' 4- b' = 19 (mod 28). Эта дополнительная информация достаточна для того, чтобы выбрать из двух аффинных отображений правильное: 11(7+15.
Преобразования биграмм. Предположим теперь, что элементами открытого и шифрованного текстов являются двухбуквенные блоки, называемые биграммами. Это значит, что открытый текст
§ 1. НЕКОТОРЫЕ ПРОСТЫЕ КРИПТОСИСТЕМЫ
67
разбивается на двухбуквенные сегменты. Если открытый текст состоит из нечетного числа букв, то, чтобы получить целое число биграмм, добавим к концу текста еще одну букву, выбрав ее так, чтобы не исказить смысл, например, добавим пробел, если он содержится в нашем алфавите, и «X» или «Q», если имеем дело с 26-буквенным алфавитом.
Каждой биграмме приписывается далее ее числовой эквивалент. Простейший способ — взять его в виде xN + у где х — числовой эквивалент первой буквы биграммы, у — числовой эквивалент второй буквы биграммы, a N — число букв в алфавите, т.е. рассматривать биграмму как запись двузначного целого числа в системе счисления с основанием N. Это дает взаимно однозначное соответствие между множеством всех биграмм в TV-буквенном алфавите и множеством всех неотрицательных целых, меньших N . Выше мы рассмотрели частный случай этой процедуры при N — 27.
Следующий шаг — выбор шифрующего преобразования, т.е. перестановки целых чисел {0,1, 2,..., N — 1}. Примером простейших шифрующих преобразований служат аффинные преобразования: указанное множество целых чисел отождествляется с 7j/N27j и при ши-фровании Р переходит в неотрицательное целое число, меньшее N и удовлетворяющее сравнению С = aP + b (mod N2). Здесь, как и раньше, число а должно не иметь общих множителей с N (что означает отсутствие общих множителей и с 7V2) для того, чтобы существовало обратное преобразование, указывающее способ дешифрования: Р = а С + b' (mod N ), где а' = а 1 (mod TV2), b' = —а (mod TV2). Мы преобразуем С в двухбуквенный блок шифртекста, записывая его в виде С = х' N + у и затем выписывая буквы с числовыми эквива-/ I лентами х и у .
Пример 5. Пусть мы имеем дело с 26-буквенным алфавитом и используем биграммное шифрующее преобразование С = 159Р + 580 (mod 676). Тогда биграмма «NO» имеет числовой эквивалент 13-26 + 14 = 352, и ей соответствует биграмма шифртекста 159 • 352 + 580 = 440 (mod 676), что есть «QY». Биграмма «ON» имеет числовой эквивалент 377 и переходит в 359=«NV». Заметим, что биграмма преобразуется как единое целое, и между зашифрованными биграммами, имеющими общую букву или даже составленными из одних и тех же букв, но в разном порядке, нет явной связи.
Для того чтобы вскрыть биграммную систему, использующую аффинное преобразование С = aP+b (mod N надо знать шифртекст, соответствующий двум разным элементам открытого текста. Так как элементами текста являются биграммы, то частотный анализ означа
68
ГЛ. III. КРИПТОГРАФИЯ
ет выделение в длинном отрезке шифртекста двухбуквенных блоков, встречающихся чаще других (разумеется, надо считать только элементы текста и игнорировать пары, образованные буквами соседних элементов), и сравнение с известными частотами биграмм в английских текстах (записанных в том же алфавите). Например, если используется 26-буквенный алфавит, то статистический анализ, скорее всего, покажет, что наиболее частыми биграммами являются «ТН» и «НЕ» (в указанном порядке). Информации о двух парах отвечающих друг другу биграмм открытого и шифрованного текстов зачастую (но не всегда) бывает достаточно для определения а и Ь.
Пример 6. Вы знаете, что ваш противник использует криптосистему с 27-буквенным алфавитом, в которой буквы А-Z имеют числовые эквиваленты 0-25 и пробел=26. Каждой биграмме отве-чает числовой эквивалент — целое число между 0 и 728 = 27 — 1, определяемое по правилу 27г + у, где х и у — числовые эквиваленты букв биграммы. Пусть анализ длинного шифртекста показал, что чаще всего в нем встречаются биграммы «ZA», «1А» и «IW» (в указанном порядке). Предположим, что самыми частыми биграммами в английском языке (в текстах в нашем 27-буквенном алфавите) являются биграммы «Е » (т.е. Е и пробел), «S » и « Т». Мы знаем, что криптосистема использует аффинное шифрующее преобразование по модулю 729. Найти ключ дешифрования и прочитать сообщение «NDXBHO». Найти также ключ шифрования.
Решение. Мы знаем, что открытый текст шифруется по правилу С = aPpb (mod 729) и что шифртекст может быть расшифрован по правилу Р = а С + b' (mod 729), где а, b образуют ключ шифрования, a a ,b' — ключ дешифрования. Сначала мы хотим найти а и Ь1. Нам известно, как расшифровываются три биграммы. Заменив эти биграммы их числовыми эквивалентами, получим три сравнения
675а' + b' = 134 (mod 729), 216а' + Ь' = 512 (mod 729), 238а' + Ь' = 721 (mod 729).
Если исключить b', взяв разность первых двух сравнений, то получим 459а = 351 (mod 729), что не дает единственного решения a (mod 729) (имеется 27 решений). Будет лучше, если вычесть из первого сравнения третье, что даст 437а' = 142 (mod 729). Для решения последнего сравнения надо найти число, обратное к 437 по модулю 729. Воспользуемся алгоритмом Евклида:
§ 1. НЕКОТОРЫЕ ПРОСТЫЕ КРИПТОСИСТЕМЫ
69
729 = 437 + 292
437 = 292 + 145
292 = 2 • 145 + 2
145 = 72-2 + 1
и затем
1 = 145 - 72  2
= 145 - 72(292 - 2 • 145)
= 145 • 145 - 72 • 292
= 145(437 - 292) - 72•292
= 145-437 - 217-292
= 145-437 - 217(729 - 437)
= 362-437 (mod 729).
Итак, а' = 362 • 142 = 374 (mod 729), и, следовательно, b' = 134 -675 • 374 = 647 (mod 729). Теперь применим преобразование дешифрования к биграммам «ND», «ХВ» и «НО» нашего сообщения (им соответствуют целые числа 354, 622 и 203 соответственно) и получим числа 365, 724 и 24. Записав 365 = 13 • 27 + 14, 724 = 26 • 27 + 22, 24 = 0-27 + 21, мы соединим биграммы о ткрытого текста в сообщение «NO \VA\ ». Наконец, для нахождения ключа шифрования мы вычисляем а = а = 374	= 614 (mod 729) (снова используя алгоритм
Евклида) и b = —a 1b' = —614 • 647 ы 47 (mod 729).
Замечание. Хотя аффинные криптосистемы с биграммами (т.е. по модулю N ) лучше аналогичных однобуквенных систем (т.е. по модулю AQ, они также имеют недостатки. Заметим, что вторая буква каждой биграммы шифртекста зависит только от второй буквы биграммы открытого текста. Так получается из-за топк что эта вторая буква определяется значением С = аР + b (mod Аг) по модулю N, а оно зависит только от Р по модулю Л^, т.е. только от второй буквы биграммы открытого текста. Поэтому можно получить важную информацию (а именно, значения параметров а и b по модулю ./V) из частотного анализа четных букв шифртекста. Подобное замечание справедливо и для аффинных преобразований ^-буквенных блоков по к модулю N .
70
ГЛ. III. КРИПТОГРАФИЯ
УПРАЖНЕНИЯ
1.	В некоторых компьютерных сетях принято в том случае, если надо послать сообщение, которое может шокировать кого-либо (например, скабрезную шутку), шифровать буквы (но не пробелы или знаки препинания) применением преобразования С = Р -|- b (mod 26). Тогда любой при желании сможет легко дешифровать текст, но никто не будет вынужден смотреть на сообщение, которое бьет по нервам. Используя частотный анализ для нахождения Ь, дешифруйте заключительную фразу (она приводится на английском языке) в следующем анекдоте.
На международном конгрессе хирургов представители различных стран хвастались последними достижениями в области пересадки органов. Особенно гордились французы, американцы и русские. Французский хирург сказал: «Мы пришили оторванную ногу бегуну, а год спустя он принял участие в национальных соревнованиях по бегу на 1000 метров». «Используя новейшие достижения хирургии, — заявил русский хирург, — мы смогли пришить на место потерянную руку аглету, а через год он этой самой рукой установил мировой рекорд в толкании ядра». Но все они смущенно умолкли, когда американец, не желая отставать от других, объявил, что «Jr frjrq n fzvyr ba n ubefr’f nff, naq n Irne yngre vg jnf ryrpgrq Cerfvqrag!».
Примечание. В записи использован 26-буквенный алфавит, а пробелы и знаки препинания использованы для облегчения чтения.
2.	Используя частотный метод, провести криптоанализ и дешифровать сообщение, зашифрованное применением преобразования сдвига букв 26-буквенного алфавита:
PXPXKXENVDRUXVTN LXHY MXGMAXYKXJN
XGV RFXM AHWGX X\V LEHGZXKV BI АХ КМ XQM
3.	В 27-буквенном алфавите (пробел=26), используя аффинное шифрующее преобразование с ключом а = 13, 6 = 9, зашифровать сообщение «HELP МЕ».
4.	В длинном отрезке шифртекста, полученного применением аффинного отображения букв 26-буквенного алфавита, чаще всех встречаются буквы «Y» и «V» (в указанном порядке). Предполагая, что эти элементы шифртекста получены шифрованием букв «Е» и «Т» соответственно, прочитать сообщение «QAOOYQQEVHEQV».
5.	Вы анализируете аффинное шифрующее преобразование букв 37-буквенного алфавита, включающего в себя цифры 0-9, помеченные сами собой (т. е. целыми числами 0-9), буквы A-Z, имеющие числовые эквиваленты 10-35 соответственно, и пробел=36. Перехвачено сообщение «OH7F86BB46R3627O266BB9» (здесь О обозначает букву, а не цифру). Вам известно, что открытый текст заканчивается подписью «007» (ноль-ноль-семь). Что это за сообщение?
6.	Вы перехватили шифртекст «QFJDFOHFXOL», полученный применением аффинного преобразования букв 27-буквенного алфавита (пробел = 26). Вам известно, что первым словом является слово «I» (за I следует пробел!). Определить ключ шифрования и прочитать сообщение.
7.	а) Сколько существует различных преобразований сдвига для А-буквенного алфавита?
б)	Найти формулу для числа различных аффинных шифрующих преобразований при A-буквенном алфавите.
§ 1. НЕКОТОРЫЕ ПРОСТЫЕ КРИПТОСИСТЕМЫ
71
в)	Сколько существует аффинных преобразований при № = 26, 27, 29, 30?
8.	Говорят, что элемент Р открытого текста неподвижен при данном шифрующем преобразовании f, если f(P) = Р. Предположим, что используется аффинное шифрующее преобразование букв №-буквенного алфавита. Будем считать также, что это отображение не является сдвигом, т. е. а 1.
а)	Доказать, что если N — простое число, то всегда существует ровно одна неподвижная буква.
б)	Доказать (для любого №), что если наше аффинное преобразование линейно, т. е. b = 0, то имеется, по крайней мере, одна неподвижная буква, и что если N четно, то линейное шифрующее преобразование имеет, по крайней мере, две неподвижных буквы.
в)	Привести пример (при некотором N) аффинного преобразования, не имеющего неподвижных букв.
9.	Пусть элементами сообщения являются биграммы №-буквенного алфавита. Найти формулу для числа различных аффинных шифрующих преобразований. Сколько их при № = 26, 27, 29, 30?
10.	Перехвачено шифрованное сообщение «PWULPZTQAWHF», полученное применением аффинного отображения биграмм 26-буквенного алфавита, где, как и ранее, биграмме из букв с числовыми эквивалентами х и у соответствует целое число 26г + у. Статистический анализ предшествующих шифртекстов, полученных применением того же отображения, показал, что в шифртексте чаще всего встречаются биграммы «IX» и «TQ» (в указанном порядке). Известно, что наиболее часто встречающимися биграммами английского текста являются «ТН» и «НЕ» (в указанном порядке).
а)	Найти ключ дешифрования и прочитать сообщение.
б)	Вы решили захватить получателя сообщения, но так, чтобы отправитель не заподозрил неладное. Поэтому вы хотите выдать себя за сообщника отправителя и отвечаете «GOODWORK» («отлично»). Найти ключ шифрования и соответствующий шифртекст.
11.	Вы перехватили сообщение «DXM SCE DCCUVGX », зашифрованное применением аффинного отображения биграмм 30-буквенного алфавита, в котором буквы А-Z имеют числовые эквиваленты 0-25, пробел= 26, ? = 27, ! = 28, ’ = 29. Частотный анализ показывает, что в предыдущих шифртекстах чаще всех встречались биграммы «М », «U » и «1Н» (в указанном порядке). Допустим, что в английском языке (для данного алфавита) самыми частыми являются биграммы «Е », «S » и « Т» (в указанном порядке).
а)	Определить ключ дешифрования и прочитать сообщение.
б)	Найти ключ шифрования и зашифровать сообщение «YES ГМ JOKING!».
12.	Описанные приемы, разумеется, можно использовать при любых алфавитах. Рассмотрим пример для русского алфавита. Используем следующие числовые эквиваленты для букв кириллицы
А БВГДЕЁЖЗИЙ 0123456789	10
КЛМНОПРСТУФ 11	12	13	14	15	16	17	18	19	20	21
ХЦЧШЩЪЫЬ ЭЮЯ 22	23	24	25	26	27	28	29	30	31	32
72
ГЛ. III. КРИПТОГРАФИЯ
Предположим, что перехвачено кодированное сообщение «ЦНТИ», зашифрованное применением аффинного отображения биграмм 33-буквенного русского алфавита. Частотный анализ предыдущих шифртекстов показал, что чаще всего в нем встречаются биграммы «ЦА» и «ЫТ» (в указанном порядке). Допустим, что двумя самыми часто встречающимися биграммами в русском языке являются «НО» и «ЕТ» (в указанном порядке). Найти ключ дешифрования и выписать открытый текст сообщения.
13.	Пусть, как и в упражнении 8, неподвижным элементом открытого текста называется элемент, не изменяющийся при данном шифрующем преобразовании. Найти все неподвижные биграммы для шифрующего преобразования примера 11.
14.	Под композицией (или произведением) двух криптосистем понимается криптосистема, в которой открытый текст шифруется первой криптосистемой, а полученный шифртекст рассматривается как открытый текст для второй криптосистемы, т.е. шифруется еще раз с помощью второй криптосистемы. При более строгом изложении следует потребовать, чтобы множество С} элементов шифртекста первой криптосистемы содержалось в множестве элементов открытого текста второй криптосистемы. Пусть /1 и Д — шифрующие функции, тогда композиция криптосистем задается шифрующей функцией f = fiof\. Если обозначить через I («intermediate text» — промежуточный текст) элемент шифртекста первой системы, а через I = Ci обозначить множество элементов промежуточного текста, то композицию криптосистем можно схематически изобразить диаграммой
P^I^C.
Доказать, что:
а)	композиция двух шифрующих преобразований сдвига также является шифрующим преобразованием сдвига;
б)	композиция двух шифрующих линейных преобразований является шифрующим линейным преобразованием;
в)	композиция двух аффинных шифрующих преобразований является аффинным шифрующим преобразованием.
15.	Рассмотрим немного более сложную криптосистему, в которой открытый и шифрованный тексты записываются в разных алфавитах. Мы возьмем для открытого текста A-буквенный алфавит, а для шифртекста — М-буквенный, М > N. Как обычно, мы рассматриваем биграммы в JV-буквенном алфавите как двузначные числа в системе счисления с основанием N, т.е. как целые числа между 0 и № — 1. Аналогично, биграммы в M-буквенном алфавите рассматриваются как целые числа между 0 и М2 — 1. Теперь выберем любое целое L между № и М2: N2 Д ДД М2. Выберем также целые числа а и Ь с НОД (a, L) = 1. Биграмма Р открытого текста шифруется по правилу С = aP+b (mod L) (где С — наименьший неотрицательный вычет по модулю L, удовлетворяющий этому сравнению). Здесь Р — множество всех возможных биграмм Р — состоит из всех целых чисел из диапазона от 0 до № — 1. Множество С всех возможных биграмм С шифртекста (т. е. биграмм в большем алфавите) составляет лишь часть множества всех целых из диапазона от 0 до М2 — 1 и на самом деле представляет собой подмножество множества тех целых чисел, Меньших L, которые получаются применением шифрующего преобразования ко всем возможным биграммам открытого текста. Пусть открытый текст записан в 27-буквенном алфавите упражнения 3, а шифртекст — в 30-буквенном алфавите упражнения 11. Предположим, что L = 853. Предположим также, что самые часто встречающиеся биграммы открытого текста
§ 2. ШИФРУЮЩИЕ МАТРИЦЫ
73
«Е » и «S » при шифровании переходят в биграммы «FQ» и «ЬЕ» соответственно. Найти ключ дешифрования и прочитать сообщение «YAVAOCH’D!».
16.	Продолжая упражнение 15, покажем, как можно без особого труда построить криптоситему, вскрыть которую существенно труднее. Пусть fi — криптосистема описанного в упражнении 15 типа, т. е. заданная правилом /1(Р) = a-iP + bi (mod £)), и пусть /г — другая криптосистема того же типа. Параметры .V и Л£ у этих систем одни и те же, но параметры а, b и L у каждой системы свои. Пусть Li > L\. Построим композицию (произведение) этих двух криптоситем (см. упражнение 14), т. е. будем зашифровывать элемент Р открытого текста по правилам
I = ai Р + i>i (mod £1),
С = ail + bi (mod £3).
(В первом случае I — неотрицательное целое число, меньшее Li и удовлетворяющее первому сравнению, во втором правиле С меньше Li.) Поскольку модули L\ и £2 различны, утверждения из упражнения 14 в) здесь неприменимы, и эта композиция криптосистем, вообще говоря, не является аффинной системой. Здесь мы предполагаем, что алфавиты из N и М букв заданы, но можно произвольным образом выбирать параметры at, bj, Li, аг, bi, Li, подчиненные, разумеется, условиям № Sj Li < £2	Л/2, НОД (at, Li) = 1, НОД (аг, £2) = 1- Та-
ким образом, ключ состоит из шестерки параметров {at, Ji, £1, аг, 62, £г } Пусть, как и в упражнении 15, алфавиты открытого и шифрованного текстов содержат по 27 и 30 букв, соответственно. Пусть ключ шифрования имеет вид {247,109,757,675,402,881}. Объяснить, как проводить дешифрование, и дешифровать сообщение «DIRAJ’KCTN».
§ 2. Шифрующие матрицы
Пусть имеется А-буквенный алфавит и нам надо передавать биграммы (двухбуквенные блоки) как элементы сообщения. В §1 было показано, что каждой биграмме можно сопоставить целое число по 2	2
модулю N , т. е. элемент из Z/N Z. Другая возможность состоит в сопоставлении биграмме некоторого вектора, т. е. пары целых чисел (*) с х и у, рассматриваемыми по модулю N. Например, если имеется 26-буквенный алфавит А-Z с числовыми эквивалентами 0-25 соответственно, то биграмме NO отвечает вектор как показано на. диаграмме.
Мы изображаем каждую биграмму как узел в квадратной решетке размера N х N. Наше изображение аналогично обычной координатной плоскости с той разницей, что каждая из осей соответствует не множеству вещественных чисел, а множеству Z/7VZ. Аналогично обо-значению R для обычной плоскости будем использовать обозначение (Z/A'Z) для этой решетки размера N X N.
Изобразив биграммы векторами (точками на плоскости), мы можем интерпретировать «шифрующее преобразование» как перестановку узлов нашей N х TV-решетки. Точнее, шифрующее отображе
74
ГЛ. III. КРИПТОГРАФИЯ
ние — это взаимно однозначное отображение {'L/N'L')2' в себя.
Замечание. В течение нескольких веков одним из самых распространенных способов шифрования был так называемый «шифр Ви-женера». Его можно описать следующим образом. При некотором заданном к рассмотрим блоки из к букв как векторы в (7i/N'L')k. Зафиксируем некоторый вектор b G (Z/A’Z)fc (обычно выбирается вектор, соответствующий какому-нибудь легко запоминаемому «ключевому слову»). Шифрование проводится посредством векторного сдвига С = Р + Ь, где элемент шифртекста С и элемент открытого текста Р представляют собой векторы с целочисленными координатами по модулю N. К сожалению, эта. криптосистема вскрывается почти так же просто, как сдвиг отдельных букв (см. пример 1 в предыдущем разделе). А именно, при известных или угаданных N и к нужно просто разбить текст на блоки по к букв и провести частотный анализ первых букв в каждом блоке, чтобы определить первую компоненту вектора Ь. Затем исследуются вторые буквы блоков, и т. д.
Сведения из линейной алгебры. Напомним, как проводятся операции с векторами в вещественной двумерной плоскости и с 2 х 2-матрицами из вещественных чисел. Напомним, что, имея 2x2-матрицу (“ и вектор (*) (мы будем записывать векторы как столбцы), можно получить новый вектор, применив матрицу к вектору по правилу
a b \ (х\ def fax + by c d J \УJ \cx + d-У
При фиксированной матрице эта функция, переводящая вектор в вектор, называется линейным преобразованием, так как она перестановочна с операциями сложения векторов и умножения векторов на кон
§ 2. ШИФРУЮЩИЕ МАТРИЦЫ
75
станты. В этих обозначениях любая система уравнений вида ах + by = е, сх + dy = f эквивалентна матричному уравнению АХ = В, где А обозначает матрицу
(a b\ с d J ’
X обозначает вектор неизвестных (*), а В — вектор констант (J). Словесно эту систему уравнений можно интерпретировать как задачу поиска вектора, при «умножении» которого на заданную матрицу получается заданный вектор. Таким образом, эта система аналогична уравнению ах = Ь, которое решается умножением обеих частей на а 1 (если а 0). Аналогичный вид имеет один из способов решения матричного уравнения АХ = В: находится обратная к матрице А матрица А \ умножение на которую обеих частей уравнения дает единственное векторное решение X = А 1 В.
Под обратной к матрице А понимается такая матрица, умножение которой на А дает единичную матрицу
f 1 (А
(применение этой матрицы к любому вектору оставляет этот вектор неизменным). Но не все матрицы имеют обратные. Нетрудно показать, что матрица
имеет обратную тогда и только тогда, когда отличен от нуля ее опре-def
делитель D = ad — be. В этом случае обратная матрица равна
— ( d -b\ = ( D~ld -D~4\
D \-с a J \-D~1c	D"1 а / '
Сущетвует три возможных вида множества решений системы уравнений АХ = В. Во-первых, если определитель D отличен от нуля, то система имеет единственное решение X = (^). Если же D = 0, то либо решений нет, либо их бесконечно много. Эти три варианта имеют простую геометрическую интерпретацию. Два уравнения соответствуют двум прямым на координатной плоскости. Если D 0, то прямые пересекаются в единственной точке (ж, г/). В противном случае они либо параллельны и не пересекаются вовсе (уравнения системы не имеют общих решений), либо совпадают (уравнения системы имеют бесконечно много общих решений).
76
ГЛ. III. КРИПТОГРАФИЯ
Пусть имеется набор векторов А\ = (*’),... ,Хк — расположенных в столбцах 2 X А;-матрицы. Определим произведение матриц
. „ а
АХ =
\ с
b\ fx1 ...zЛ def /ахг + byt ... ахк + Ьук й)\У1---Ук) Xcxi + dy^ ... схк + dyk
т.е. матрица А просто применяется поочередно к каждому столбцу, давая при этом очередной столбец произведения. Например, произведение 2 х 2-матриц вычисляется по формуле
а
с
b\ f а d / \с'
b'\ d' )
аа + be са + de
ab' + bd'\ cb' + dd'J
Аналогичными свойствами обладают 3 X 3-матрицы, которые применяются к трехмерным векторам, и т. д. Однако формулы для определителя и обратной матрицы усложняются. На этом мы завершаем краткий обзор линейной алгебры над множеством вещественных чисел.
Линейная алгебра по модулю N. В § 1, имея дело с отдельными символами и шифрующими отображениями Z/jVZ, мы обнаружили два удобных для использования класса, отображений:
(а)	«линейные» отображения С — аР, где а обратимо в Z/JVZ,
(Ь)	«аффинные» отображения С = аР + b, где а обратимо в Z/JVZ.
Аналогичная ситуация возникает, когда элементами сообщения являются биграммы-векторы. Сначала рассмотрим линейные отображения. При работе с (Z/A'Z)2, в отличие от случая Z/A'Z, вместо целого а мы используем 2 X 2-матрицу, которую будем обозначать через А. Сначала выясним, матрицы какого типа нам потребуются.
Пусть R — любое коммутативное кольцо, т. е. множество с умножением и сложением, удовлетворяющими тем же правилам, что и в поле, за исключением того, что допускается существование ненулевых элементов, не имеющих обратных по умножению. Например, Z/JVZ — всегда кольцо, но оно не поле, если число N не является простым. Через R обозначим подмножество обратимых элементов R. Например, (Z/7VZ)* = {0 < j < А I НОД О’Л) = 1}.
Для коммутативного кольца R обозначим через М2(Я) множество всех 2 X 2-матриц с элементами из R с обычными для матриц операциями сложения и умножения. Мы называем М2(Л) кольцом матриц над R-, М2(Т?) — кольцо, но некоммутативное, так как произведение матриц зависит от порядка сомножителей.
Ранее в этом разделе рассматривался случай, когда R = R есть кольцо (более того, поле) вещественных чисел. Напомним, что
§ 2. ШИФРУЮЩИЕ МАТРИЦЫ
77
матрица
а Ь\ с d J
с вещественными элементами a, b, с, d имеет обратную тогда и только тогда, когда определитель D = ad— be отличен от нуля. В этом случае обратная матрица имеет вид
D^d
-D~Xc
-D~rb\
n-l
Такая же ситуация имеет место для произвольного кольца R.
Именно, пусть
а= (а е m2(R) \ с d /
и D = det .4 d=f ad — be принадлежит R*. Пусть D 1 обозначает обратный по умножению элемент к D в R. Тогда.
D~'d -D~Xb\ fa b\ _ f D \da - be) 0
— D Jc D 'a J \c dJ \	0 D !( —cb + ad)
_ /1 0\
~ \ 0 1 I ’
Тот же результат
1 О
О
1
же самой формулой, что и для
мы получим, умножив матрицы в обратном порядке. Таким образом, обратная к А матрица задается той матриц из вещественных чисел:
D~Xd
-D~'c
-D~'b D~la
А
Пример 1. Найти обратную к матрице
/9 Ч \
М G Af2(Z/26Z).
Решение. Здесь D = 2  8 — 3-7 = —5 = 21 в Z/26Z. Так как НОД (21,26) = 1, то определитель D обратим, а именно, 21 1 = 5. Таким образом,
-1 _ / 5-8	-5 • 3 \
'	\-5-7 5-2 )
40
-35
-15
10
14
17
11
10
78
ГЛ. III. КРИПТОГРАФИЯ
Проверим:
14 11\/2 3\ _ /105 130\_/1 0\
17 10/ \7 8/ \ 104 131/	\0 1/’
Здесь, поскольку операции проводятся в Z/26Z, знак « = » означает, что элементы матриц сравнимы по модулю 26.
Как и в случае вещественных чисел, 2 X 2-матрицу
с элементами из кольца R можно умножить на вектор-столбец с х,у Е R и получить новый вектор (*):
f х'\ fa b\ fх\ /ах + Ьу\ \У/ \с J \уJ \сх + dyJ
Это отображение является линейным: оно переводит линейную комбинацию + где кх и к2 принадлежат R, в	Един“
ственное отличие рассматриваемого случая от предыдущего состоит в гом, что вместо вещественных чисел здесь мы имеем дело с элементами кольца R.
Нас особенно будет интересовать случай R = 1/N1. Следующее предложение формулируется именно для этого случая, хотя аналогичное утверждение верно для любого R.
Предложение III. 2.1. Пусть
А = (а J ) £ A/MZAVZ) и D = ad-bc. \ с d /
Следующие утверждения эквивалентны:
а)	НОД (P,7V) = 1;
b)	матрица А имеет обратную',
с)	если хотя бы один из элементов х,у £ 'LIN'L отличен от нуля, то AQ^Q.
d)	матрица .4 задает взаимно однозначное отображение множества (Z/1VZ)2 на себя.
Доказательство. Мы уже видели, что а) => Ь). Поэтому достаточно показать, что Ь) => d) => с) => а).
Предположим, что выполнено Ь). Тогда выполнено и утверждение d), так как А 1 задает обратное отображение в Далее, если выполнено d), то (*) / (°) влечет за собой, что А(*) / Д(°) = (°), и, следовательно, с) выполнено. Наконец, докажем, что с) => а),
§ 2. ШИФРУЮЩИЕ МАТРИЦЫ
79
рассуждением от противного. Итак, пусть а) неверно. Положим m = НОД (2?,7V) > 1 и т = N/m. Возможны три случая.
Случай 1. Если все четыре элемента матрицы А делятся на т, то возьмем = (™,), что приведет к противоречию со свойством с).
Случай 2. Если хотя бы один из элементов а и b не делится на т, то возьмем Q = (©™ ). Тогда
А
— abm + bam' — cbm' + dam'
так как m\D и, следовательно, N = mm'\Dm'.
Случай 3. Если хотя бы один из элементов с и d не делится на т, (х\	( dm1 \
у) = \-ст') И продолжим рассуждения, как в предыдущем случае.
Рассмотренные случаи исчерпывают все возможности. Таким образом, нарушение а) влечет за собой нарушение с). Это завершает
доказательство предложения.
Пример 2. Решить следующие системы сравнений:
а)
2х + Зг/ = 1 (mod 26),
7х + 8у = 2 (mod 26);
b)
х + Зу = 1 (mod 26),
7х + 9у = 2 (mod 26);
с)
х + Зу = 1 (mod 26), 7х + 9у = 1 (mod 26).
Решение. В матричной форме система а) имеет вид АХ = В (mod 26), где А — матрица, из примера. 1, X = (*), В = Q). Получаем единственное решение
А = ii) © ' CD (mod 26)'
Матрица систем Ь) и с) не имеет обратной по модулю 26, так как ее определитель равен 14 и имеет с модулем 26 общий множитель 2. Однако можно перейти к модулю 13, найти решение системы по этому модулю и проверить, не дает ли оно решений по модулю 26. По модулю 13 получаем
х
.У
9 10\ /е\
6 1 )\fj
80
ГЛ. III. КРИПТОГРАФИЯ
(где (J) = Q) для системы Ь) и (J) для системы с)). Это дает (®) = (g) и (?) (mod 13) соответственно. Проверяя варианты, возникающие при переходе к модулю 26, убеждаемся, что система Ь) решений не имеет, а система с) имеет два решения х — 6, у = 7 и х = 19, у = 20.
Другой способ решения систем уравнений (иногда более предпочтительный, особенно при необратимой матрице) состоит в исключении одного из неизвестных (так, в системах Ь) и с) можно было вычесть семь раз первое сравнение из второго).
Возвращаясь к криптографии, видим, что согласно предложению III. 2.1 можно построить преобразование шифрования наших биграмм-векторов, используя матрицы А £ _Л/2 (Z/7V Z), у которых определитель не имеет общих множителей с N:
(а
\ с )
D = ad-bc, НОД (Г, А) =1.
А именно, элемент открытого текста Р = преобразуется в элемент шифртекста С = (*,) по правилу
Чтобы дешифровать сообщение, просто применяем обратную матрицу: Р = А 1 АР — .1 'С, т.е.
D-1d -D~'c
-D~lb\ (х'\ D~1(1 J \y'J'
ПримерЗ. В 26-буквенном алфавите, используя матрицу А примера 1, зашифровать элемент «NO».
Решение. Имеем
/ 2 ЗА /13\ _ /68\	/16\
V 8 7 W ~ \203/ “ \21/ ’
и С = АР есть «QV».
Замечание. Чтобы зашифровать последовательность Р = Р1Р2Р3  • - Рк из биграмм открытого текста, можно построить 2 X ^-матрицу из к век торов-столбцов (обозначим ее также через Р) и, умножив 2 х 2-матрицу А на 2 X Агматрицу Р, получить 2 х Аьматрицу С = АР из шифрованных биграмм-векторов.
Пример 4. Продолжая пример 3, зашифровать открытый текст «NOANSWER».
§ 2. ШИФРУЮЩИЕ МАТРИЦЫ
81
Решение. Числовым эквивалентом для «NOANSWER» является последовательность векторов (14) (1°3) (22) (1*7)' Имеем
/ 2 3 \	/ 13	0	18	4 А
\7 8/	\14	13	22	17/
( 16 13	24	7 А
^21 0	16	8/	’
68	39 102 59 \
203 104 302 164 J
т.е. шифрованное сообщение имеет вид «QVNAYQHI».
Пример 5. В ситуации примеров 3 и 4 дешифровать сообщение «FWMDIQ».
Решение. Имеем
= ,-1г /14 11 \ / 5 12 8 \ \17 10/ \22 3 16/
= (19	0
Как и в § 1. будем считать, что у нас имеется некоторая ограни
ченная информация, которую мы хотим использовать для дешифрования отрезка шифртекста. Нам известно, что «противник» использует биграммы-векторы и линейное шифрующее преобразование С = АР в jV-буквенном алфавите. Однако мы не знаем ни ключа шифрования (матрицы А), ни ключа дешифрования (матрицы А '). Но предположим, что у нас есть возможность найти две пары биграмм открытого и шифрованного текстов 6*1 = APj и С2 = АР2. Возможно, эти сведения нам удалось получить частотным анализом биграмм в длинном отрезке шифртекста или каким-либо образом стало известно, во что шифруется некоторый четырехбуквенный отрезок текста. В этом случае для определения матриц А и .4 1 мы можем сделать следующее. Объединим два столбца /( и Р2 в 2 X 2-матрицу Р и таким же образом поступим со столбцами шифртекста. Мы получим уравнение для 2x2-матриц: С = АР, где С и Р нам известны, а А является неизвестной. Можно решить это уравнение, домножив обе части на Р :
А = АРР'1 = СР'1.
Аналогично, из уравнения Р = А 1С находится А \ А 1 = PC \
Пример 6. Пусть известно, что противник использует при шифровании 2 X 2-матрицу с элементами из 29-буквенного алфавита, где А-Z имеют обычные числовые эквиваленты, пробел=26, ?=27, !=28. Принято сообщение
«GFPYJP X7UYXSTLADPLW»,
82
ГЛ. III. КРИПТОГРАФИЯ
причем предполагается, что последние пять букв открытого текста — подпись «KARLA». Этих букв хватает для построения лишь двух биграмм. Итак, биграммам «DP» и «LW» шифртекста в открытом тексте отвечают биграммы «AR» и «LA» соответственно. Значит, матрица Р, составленная из «AR» и «LA», получается как результат умножения неизвестной матрицы дешифрования А на матрицу С. составленную из «DP» и «LW»:
0 ИА _ д-1 ( 3 11\ 17 0 ) ~	\ 15 22 / ’
Таким образом,
О 11\ / 3 11 \
17 О J \15 22 J
О 11 \ / 3 13\ _ /21 19\
17 О J 23 7 /	V22 18 /
и все открытое сообщение имеет вид
/21	19 \ /6	15	9	26	27	24	18	И	3	11 \
у 22	18/ \ 5	24	15	23	20	23	19	0	15	22 J
/18	17	10	26	19	13	14	28	0	11 \
- \19	8	4	0	26	14	13	10	17	0 )
= «STRIKE AT NOONiKARLA».
Замечание. Чтобы описанный метод работал, нужна обратимость матрицы Р, образованной из двух известных биграмм открытого текста, т. е. определитель D не должен иметь общих множителей с числом букв N. Что же делать, если нам не повезет? Если известна еще одна пара биграмм открытого и шифрованного текстов, можно попробовать использовать ее в матрицах Р и С вместо первых или вторых столбцов в надежде получить обратимую матрицу. Пусть у нас нет такой возможности или ни одна известная пара не дает обратимой матрицы Р. Тогда мы не можем определить матрицу А точно. Однако имеющейся у нас информации достаточно для того, чтобы значительно сократить число возможных вариантов для дешифрующей матрицы. Проиллюстрируем это на примере. (См. также упражнения в конце раздела.)
Пример 7. Известно, что противник использует шифрующую матрицу А с элементами из 26-буквенного алфавита. Перехвачено сообщение «WKNCCHSSJH». Известно также, что первое слово — это «GIVE». Мы хотим найти матрицу дешифрования А 1 и прочитать сообщение.
Решение. Воспользовавшись процедурой примера 6 и записав
Р = «GIVE» =
6 21 \
8 4 J ’
§ 2. ШИФРУЮЩИЕ МАТРИЦЫ
83
С = «WKNC» =
13 \
2 ) '
zC1 = РС~\
мы сразу столкнемся с трудностями, так как det С = 18 и НОД (18, 26) = 2. Мы можем продолжить следующим образом. Пусть А обозначает приведенную по модулю 13 матрицу А. Аналогичный смысл имеют обозначения Р и С. Рассматривая эти матрицы в M2(Z/13Z), можно найти С 1 (точнее, С ), так как НОД (det С, 13) = 1. Поэтому из равенства Р = А С получим
8W 9	1-(2 4>)
°	\8 47 V1° 2/	\32/'
Таким образом, элементы матрицы А \ являющиеся целыми по модулю 26, должны приводится по модулю 13 к элементам матрицы
f2 4 А \3 2 7
Следовательно, для каждого элемента этой матрицы есть по две возможности. Точнее,
л-1 = (I + 13Д15 К о Z /
где Al £ Af2(Z/2Z) есть 2 X 2-матрица из нулей и единиц. Поэтому остается 2 = 16 возможных вариантов. Однако, что самое главное, так как матрица А обратима, ее определитель должен быть взаимно прост с 26 и, в частности, быть нечетным. Это соображение оставляет возможными всего шесть вариантов для 4р Далее, когда мы подставим
/2 4\	4
(о 9 I + 1341
\ о Z у
вместо А 1 в уравнение
-1 ( 22 13\ _ /6 21 А А 10 2 J ~ \8 4 у
(последнее равенство имеет смысл поэлементного сравнения по модулю 26), мы исключим все возможности, кроме двух следующих:
1
1 1 /
41
или
1
1 1 / ’
т. е.
или
15
16
17\
15 / ’
4
15 J
4"1
84
ГЛ. IЛ. КРИПТОГРАФИЯ
Попытка дешифрования с первой матрицей приводит к заведомо сомнительному варианту «GIVEGHEMHP». Дешифрование с матрицей
А~^(15 И \16 15/
дает ответ «GIVETHEMUP». Значит, последний вариант — правильный. Этот метод предполагает некоторое количество проб и ошибок, но в любом случае это лучше проверки всех 157 248 вариантов матрицы дешифрования А Е	.
Замечание. В примере 7, возможно, удобнее было бы подправить элемен ты матрицы А \ прибавив к ним кратные 13 так, чтобы все они делились на два, т.е. определить матрицу Аг равенством
-1	/ 2	4\
А = _ 9 +13ДР у 1о 2/
Тогда можно искать матрицу А1; оперируя по модулю 2, так как .4,С = Р (mod 2).
Шифрующие аффинные преобразования. Более общий способ шифрования биграммы-вектора Р — состоит в умножении его на. 2 X 2-матрицу А = (“	и прибавлении к результату
век тора констант В =
С = АР + В,
т. е.
Р х \ Ра b\ Рх\ Р е\ Р ах + by + е\ \у'J V' dj \yj \fj \сх + dy + f J ‘
Это преобразование называется аффинным отображением. Оно аналогично шифрующей функции С = аР + b из §1, где рассматривались однобуквенные элементы сообщений. Разумеется, как и раньше, знак равенства понимается как сравнимость элементов по модулю N.
Обратное преобразование, выражающее Р через С, может быть получено вычитанием вектора В из обеих частей и последующим применением к ним А :
Р = Д-1С - А1 В.
Оно также является аффинным преобразованием Р = А'С + В' с А1 = А и В' = -А В. Заметим, что для однозначности дешифрования требуется обратимость матрицы А.
Пусть известно, что противник использует аффинное шифрующее преобразование биграмм-векторов из JV-буквенного алфавита. Для нахождения А и В (или А — А и В = —А В) теперь нужны, по
§ 2. ШИФРУЮЩИЕ МАТРИЦЫ
85
крайней мере, три пары биграмм. Пусть, например, известно, что биграммы С2, С3 шифртекста отвечают биграммам открытого текста Р], Р2, Рз-
л = а'с. + в',
Р2 = А' с2 + В',
Рз = А'Сз + В'.
Для нахождения А' и В' мы можем сделать следующее. Вычтем последнее уравнение из первых двух и образуем 2 X 2-матрицу Р из столбцов Р^ — Р3 и Р2 - Рз, а 2 х 2-матрицу С — из столбцов С] - С3 и С2 — Сз- Получим матричное уравнение Р = А С, которое, как и в случае линейных преобразований, может быть разрешено относительно А' (при условии, что матрица С обратима). Наконец, определив А' = А \ находим из любого из приведенных выше уравнений В', например. В = Рг — A Ci-
УПРАЖНЕНИЯ
1. Используя частотный метод, дешифровать сообщение в 26-буквенном алфавите, закодированное шифром Виженера с трехбуквенным ключевым словом. Сделать это следующим образом. Для определения первой буквы ключевого слова использовать последовательность из каждой третьей буквы сообщения, начиная с первой. Не надо предполагать, что самой частой буквой сообщения обязательно является буква «Е». Следует просмотреть в качестве варианта шифра для буквы «Е» чет ыре наиболее часто встречающихся буквы. Если при выборе варианта для «Е» оказывается, что хотя бы одна из трех других часто встречающихся букв отвечает сравнительно редкой букве, скажем, «Q» или «Z», то это свидетельствует о неправильном выборе шифра для «Е». Исключая такие варианты, найти шифр для «Е», затем букву ключевого слова, использованного при шифровании. Таким способом определить ключевое слово и дешифровать сообщение
AWYVPQCTBLWYLPASQJWUPGBUSHFACELDLLDLWLBWA
FAHSEBY JXXACELWCJTQMARKDDLWCSXBUDLKDPLXSEQCJT XWPRWSRGBCLWPGJEZIFWIMJDLLDAGCQMAYLTGLPPJXTWS
GFRMVTLGUYUXJAIGWHCPXQLTBXDPVTAGSGFVRZTWTGM
MVFLXRLDKWPRLWCSXPHDPLPKSHQGULMBZWGQAPQCTBA
URZTWSHQMBCVXAGJ JVGCSSGLIFWNQSXBFDGSHIWSFGLRZ
TWEPLSVCVIFWNQSXBOWCFHMETRZXLYPPJXTWSGFRMVTR ZTWHWMFTBOPQZXLYIMFPLVWYVIFWDPAVGFPJETQKPEWG
CSSRGIFWB
86
ГЛ. III. КРИПТОГРАФИЯ
2. Найти обратные к следующим матрицам по модулю N. Записать элементы
обратных матриц как неотрицательные целые, меньшие N.
, /1 3\	,	, /1 3\ ,	, ч / 15 17 X
а) (	3 /	5)>	1 (mod 29), в) I	) (mod 26),
ч /40	0 \ ,	,	/197	62 \ ,
г) I	| (mod 841), д) (	) (mod 841).
0 21 /	к 603 271 /
В упражнениях 3 5 найдите все решения (*) по модулю N, рассматривая х и у как неотрицательные целые числа, меньшие N.
а) х + Ау = 1 (mod 9) 5х + 7у = 1 (mod 9)
в) х + Ay = 1 (mod 9)
5х + 8у = 2 (mod 9)
а)	17г + 11 у = 7 (mod 29)
13т + 10у = 8 (mod 29)
в) 9х + 20?/ = 0 (mod 29)
16z + 13?/ = 0 (mod 29)
б)	х 4- Ay = 1 (mod 9)
5х + 8у = 1 (mod 9)
г) х + Ay = 0 (mod 9)
5х + 8у = 0 (mod 9)
б) 17г + 11?/ = 0 (mod 29)
13г + 10?/ = 0 (mod 29)
г) 9х + 20у = 10 (mod 29) 16г 4- 13?/ = 21 (mod 29)
д) 9х 4- 20?/ = 1 (mod 29)
16г 4- 13?/ = 2 (mod 29)
5.
a)	480z 4-9713/= 416 (mod 1111)
297z 4- 398$? = 319 (mod 1111)
6)	480z 4-971?/a 109 (mod 1111)
297z 4- 398$? = 906 (mod 1111)
в) 480z 4- 971y = 0 (mod 1111)
297z 4- 398?/ = 0 (mod 1111)
г) 480z 4- 971?/ = 0 (mod 1111)
298z 4- 398j/ = 0 (mod 1111)
д) 480z 4- 971?/ = 648 (mod 1111)
298z 4- 398j/ = 1004 (mod 1111)
6. Числа Фибоначчи
fn 4- fn-i при n > 1, или,
определяются правилами fi = 1, /2 = 1, /3 = 2, /п + 1 в эквивалентной форме, матричным уравнением
f п +1	fn \   /1 1 \
fn	fn-1 J ~ V 0 J
(см. упражнение 10 к §1.2). Используя определение в матричной форме, доказать, что fn четно тогда и только тогда, когда п делится на 3. Обобщить этот результат, доказав, что fn делится на а тогда и только тогда, когда п делится на 6, при
§ 2. ШИФРУЮЩИЕ МАТРИЦЫ
87
следующих а и Ь: а) а = 2, b = 3; б) а = 3, b = 4; в) а = 5, b = 5; г) а = 7, 6 = 8; д) а = 8, b = 6; е) а = 11, b = 10.
7.	Перехвачено сообщение «SONAFQCHMWPTVEVY», зашифрованное линейным отображением биграмм-векторов, причем известно, что отправитель использовал обычный 26-буквенный алфавит А-Z с числовыми эквивалентами 0-25 соответственно. Предварительный статистический анализ длинного отрезка перехваченного шифртекста показал, что самыми частыми биграммами в шифртексте являются «КН» и «XW» (в указанном порядке). Предположим, что эти биграммы отвечают биграммам «ТН» и «НЕ» соответственно, как самым частым биграммам в большинстве длинных открытых текстов, относящихся к предполагаемому предмету переписки. Найти дешифрующую матрицу и прочитать сообщение.
8.	Перехвачено сообщение «ZRIXXYVBMNPO», зашифрованное линейным отображением биграмм-векторов при использовании 27-буквенного алфавита, причем буквы А-Z имеют числовые эквиваленты 0-25 соответственно, пробел = 26. Обнаружено, что чаще всего в шифртексте встречаются биграммы «РК» и «RZ». Предположим, что они отвечают самым частым биграммам 27-буквенного алфавита «Е » (Е и пробел) и «S » соответственно. Найти дешифрующую матрицу и прочитать сообщение.
9.	Перехвачено сообщение «IIWGVIEXIZRADRYD», зашифрованное линейным шифрующим отображением биграмм-векторов при использовании 29-буквен-ного алфавита, причем буквы А-Z имеют числовые эквиваленты 0-25 соответственно, пробел = 26, ? = 27, ! = 28. Известно, что последние пять букв открытого текста — подпись отправителя «MARIA».
а)	Найти дешифрующую матрицу и прочитать сообщение.
б)	Найти шифрующую матрицу и, представившись другом Марии по имени Джо, зашифровать сообщение «DAMN FOG! JO».
10.	В этом упражнении снова имеем дело с кириллицей (см. упражнение 12 предыдущего раздела). Мы используем 34-буквенный алфавит с традиционными числовыми эквивалентами для букв, пробел = 33. Предположим, что наиболее частыми биграммами в русском языке являются «НО» и «ЕТ». Пусть известно, что в длинных отрезках шифртекста чаше всех встречаются биграммы «ЮТ» и «ЧМ». Известно также, что шифрование производится линейным преобразованием биграмм-векторов для 34-буквенного алфавита. Прочитать перехваченное сообщение «СХНСЪШОНЩЗ».
11.	Доказать, что композиция (см. упражнение 14 предыдущего раздела) криптосистемы с шифрующей матрицей Ai G Л/г (Z/.YZ)* и криптосистемы с шифрующей матрицей Аг Е Afi(Z/NZ)* также является криптосистемой с линейным шифрующим преобразованием.
12.	Для того чтобы затруднить вскрытие криптосистемы, решено сначала зашифровать биграмму-вектор в 26-буквенном алфавите, используя матрицу
3 11 \
4 15 /
по модулю 26, а потом к результату применить матрицу
10 15 X
5	9 /
по модулю 29. (Заметим, что последовательное применение двух матриц по одному модулю, как показано в упражнении 11, эквивалентно применению одной матрицы,
88
ГЛ. III. КРИПТОГРАФИЯ
применение двух матриц по разным модулям дает более сложное преобразование.) Таким образом, открытый текст будет записан в 26-буквенном алфавите, а шифртекст — в 29-буквенном алфавите упражнения 9.
а)	Зашифровать сообщение «SEND».
б)	Описать, как производится дешифрование, и дешифровать сообщение «ZMOY».
13.	Доказать, что если биграммы-векторы зашифровываются по формуле С = АР с необратимой матрицей .4 6 A^Z/NZ), то любой посланный шифртекст может быть дешифрован, по крайней мере, в два различных открытых текста.
14.	Перехвачено сообщение «S GNLIKD7KOZQLLIOMKUL.VY» (пробел после S является частью сообщения). Предположим, что использовано линейное шифрующее преобразование С = АР в 30-буквенном алфавите, в котором А-Z имеют числовые эквиваленты 0-25, пробел = 26, . = 27, ,= 28, ? = 29. Известно также, что последние шесть букв открытого текста --- подпись KARLA и точка. Найти дешифрующую матрицу А-1 и весь открытый текст.
15.	Перехвачено сообщение «KVW? TAIKJB7FVR». (Пробелы после ? и R входят в сообщение, а завершающая точка — нет). Известно, что использовано линейное шифрующее преобразование в 30-буквенном алфавите, в котором A-Z имеют числовые обозначения 0-25, пробел = 26, ? = 27, ! = 28, . = 29. Известно также, что первые шесть букв сообщения — это «С.1.А.». Найти дешифрующую матрицу А-1 и весь открытый текст.
16.	Предположим, что N = пт, где НОД (m, п) = 1. Любую матрицу .4 G A/g(Z/NZ) можно вложить в MzlZ/mZ) или M?(Z/nZ) простым приведением элементов по модулю т или п. Пусть .4 и .4 обозначают соответствующие матрицы в ILfZ/mZ) или M-^Z/nZ).
а)	Доказать, что отображение, сопоставляющее матрице А пару (А, А), является взаимно однозначным соответствием между A/2(Z/AZ) и множеством .UjfZ/mZ) х A/2(Z/nZ) всех пар матриц, одна из которых является матрицей по модулю т, а другая — по модулю п.
б)	Доказать, что это отображение задает взаимно однозначное соответствие между множеством A/^fZ/NZ)* обратимых матриц по модулю N и множеством A/2(Z/mZ)* х A/2(Z/nZ)‘.
17.	При простом р найти двумя разными способами число элементов множества A/2(Z/pZ)* и убедиться в совпадении результатов:
а)	подсчитать число решений в Fp уравнения ad — be = 0 и вычесть эту величину из числа элементов множества M2(Z/pZ);
б)	любая A g A/2(Z/pZ)* переводит векторы (J) и (°) в пару линейно независимых векторов, из которых первый — любой ненулевой вектор, а второй не пропорционален первому; подсчитать число вариантов.
18.	Доказать, что матрица в A/2(Z/p“Z) обратима тогда и только тогда, когда результат ее приведения по модулю р обратим в MitZ/pZ). Затем найти число элементов А/г(2/p“Z)*.
19.	Используя упражнения 16-18, найти формулу для числа элементов множества M^iZ/NZ)*. Обозначим это число через <P2(TV). Использовать формулу ip(AQ = А^Пр|п(1 — Р-1) для числа ip(AQ элементов множества (Z/WZ)*. Записать формулу для <P2(TV) в аналогичном виде. Сколько существует шифрующих 2 х 2-матриц при N = 26, 29, 30?
20.	Пусть	обозначает число обратимых к X fc-матриц с элементами из
(Z/AZ). Угадайте формулу для ipk(N). Эту формулу нетрудно доказать методом упражнения 16 6).
§ 2, ШИФРУЮЩИЕ МАТРИЦЫ
89
Замечание. Прием, использованный в упражнениях 16-20, типичен для доказательств и вычислений в кольцах вычетов по модулю N. Сначала, используя свойство мультипликативности, можно свести задачу к случаю, когда модуль является степенью простого числа. Затем при помощи процедуры «подъема» (другой пример этой процедуры см. в упражнении 20 к §11.2) задача приводится к случаю простого модуля. Теперь мы имеем дело с полем Fp. Работая в полях, можно в большей степени использовать геометрическую интуицию (как, например, в упражнении 17 6) выше). Все положения линейной алгебры, изученные нами в случае вещественных чисел, дословно переносятся на любое поле. Например, сравнение вида ах 4- by = с (mod р) может быть изображено как «прямая» в «плоскости» над полем Fp. Прямая, соответствующая второму сравнению, либо пересечется с первой прямой в единственной точке, либо будет параллельной первой прямой, либо совпадет с ней. В случае сравнений по составному модулю имеются и другие возможности, возникающие, когда определитель матрицы коэффициентов имеет нетривиальный общий множитель с N.
21.	Сколько существует аффинных шифрующих преобразований для биграмм в TV-буквенном алфавите? Сколько их при ,V = 26, 29, 30?
22.	Предположим, что надо найти дешифрующую матрицу A-1 G Л/2 (Z/NZ)* по уравнению Р = А-1 С, где Р и С получены из двух известных пар биграмм открытого и шифрованного текстов. Пусть НОД (det С, TV) = р, где р — простое число, только первая степень которого делит N. Положим п = N/р.
а)	Найти число вариантов для А-1, остающихся при решении сравнения Р = А-1С (mod п) с учетом того, что р /det А-1.
б)	Предположим, что не все элементы матрицы С делятся на р. Как можно воспользоваться сравнением Р = А-1 С (mod р) для уменьшения числа вариантов значений А-1? Сколько вариантов остается после этого? В упражнениях 8 и 15 это применялось в случае р = 2.
23.	Требуется определить шифрующую 2 х 2-матрицу А по модулю 30. Имеется две пары биграмм открытого и шифрованного текстов в 30-буквенном алфавите, которые позволяют записать соотношение АР = С (mod 30), где
/ 2 3 \	/17 8
Р =	, С =
\2 5/	\ 8 29
а)	Используя приведение по модулю 10, записать матрицу А в виде А ЕЕ Aq + lOAi (mod 30), где Ai — неизвестная матрица по модулю 3 (с 0, 1 и 2 в качестве элементов) и Ао — матрица, получаемая в результате вычислений по модулю 10. Выбрать Ао так, чтобы все ее элементы лежали между 0 и 29 и делились на 3.
б)	Используя приведение по модулю 3, найти второй столбец матрицы Aj. в) Сколько есть вариантов для исходной матрицы А? Перечислить их.
24.	Пусть
/а b \
А=	е M2(Z/NZy
\ с а /
— матрица линейного шифрующего преобразования биграмм TV-буквенного алфавита. Под неподвижной биграммой матрицы А мы понимаем биграмму-вектор Р, которому соответствует вектор шифртекста С = Р, т. е. АР = Р. В этом упражнении предполагается, что матрица А не является единичной. (Нет ведь никакого смысла рассматривать шифрующее преобразование, которое ничего не скрывает.)
90
ГЛ. III. КРИПТОГРАФИЯ
а)	Показать, что биграмма «АА»= (°) всегда неподвижна. Какой должна быть матрица
а Ь\
с d /
для того, чтобы «АА» была ее единственной неподвижной биграммой?
б)	Пусть N — простое число и «АА» — не единственная неподвижная биграмма. Доказать, что имеется ровно N неподвижных биграмм.
25.	Перехвачено сообщение
«WUXHURWZNQR XVUEXU! JHALGQGJ?»,
которое зашифровано аффинным преобразованием векторов (*) в 841-буквенном алфавите. Здесь числовыми эквивалентами биграмм являются числа х = 29rri +%?, где xi — эквивалент первой и rj — эквивалент второй букв биграммы (29 букв алфавита занумерованы, как в упражнении 9). Таким образом, каждый блок из четырех букв дает столбец (*): две первые буквы дают целое х, а две другие дают у. Известно также, что последние 12 букв приведенного выше шифртекста отвечают подписи «HEADQUARTERS».
а)	Найти дешифрующее преобразование и прочитать сообщение.
б)	Найти шифрующее преобразование и построить шифрованное сообщение от имени штаба следующего содержания: слова «CANCEL LAST ORDER!» после двух пробелов сопровождаются подписью «HEADQUARTERS».
26.	Сколько имеется аффинных шифрующих преобразований в ситуации упражнения 25 (с 841-элементным алфавитом биграмм)?
27.	Сколько имеется аффинных шифрующих преобразований для триграмм (векторов из 3 элементов) 26-буквенного алфавита?
28.	Перехвачено сообщение
«FBRTLWUGAJQINZTHHXTEPHBNXSW»,
зашифрованное линейным шифрующим преобразованием триграмм 26-буквенного алфавита А-Z с числовыми эквивалентами 0-25. Известно, что последние три триграммы — это подпись отправителя «JAMESBOND». Найти дешифрующую матрицу и прочитать сообщение.
ЛИТЕРАТУРА к ГЛАВЕ III
1.	Hill L. S. Concerning certain linear transformation apparatus of cryptography. — Amer. Math. Monthly, 1931, v. 38, p. 135-154.
2.	Kahn D. The Codebreakers, the Story of Secret Writing. N.Y. etc.: Macmillan, 1967.
3.	Rosen К. H. Elementary Number Theory and Its Applications. 3rd ed. Reading: Addison-Wesley, 1993.
ГЛАВА IV
ОТКРЫТЫЙ ключ
§ 1. Суть криптографии с открытым ключом
Напомним, что криптосистема состоит из взаимно однозначного шифрующего преобразования f из множества Р всех возможных элементов открытого текста в множество С всех возможных элементов шифртекста. На самом деле термин «криптосистема» чаще применяется к целому семейству таких преобразований, зависящих от выбора некоторых параметров (от них могут зависеть как отображение /, так и множества Р и С). Например, при фиксированном УУ-буквенном алфавите (с раз и навсегда выбранными числовыми эквивалентами) можно рассмотреть аффинную криптосистему (или «семейство криптосистем»), которая при каждом а Е (Z/./VZ)* и b Е l/NZ является отображением из Г = Z^Z в С = Z/./VZ, заданным формулой С = аР + Ь (mod УУ). В этом примере множества Р и С фиксированны (так как N — фиксированное число), но шифрующее преобразование / зависит от выбора параметров а и Ь. Поэтому шифрующее преобразование можно задать: (i) алгоритмом, единым для всего семейства, и (ii) значениями параметров. Значения параметров называются ключом шифрования Kg. В нашем примере — это пара (а, 6). На практике считается, что алгоритм известен (т.е. общий вид процедуры шифрования сохранить в тайне нельзя). Однако ключи легко меняются и, если это необходимо, держатся в секрете.
Для дешифрования (т.е. вычисления f ') также необходимы алгоритм и ключ. Этот ключ называется ключом дешифрования Kjj. В нашем примере аффинной криптосистемы дешифрование производится также аффинным преобразованием Р = а 1С — a b (mod N), т.е. алгоритм дешифрования совпадает с алгоритмом шифрования, но с другим ключом, а именно, (а-1, -а-16). (В некоторых криптосистемах алгоритм дешифрования, как и ключ, отличается от алгоритма шифрования.) Мы всегда будем предполагать, что алгоритмы ши-
92
ГЛ. IV. ОТКРЫТЫЙ КЛЮЧ
фрования и дешифрования общеизвестны, а скрыты могут быть лишь ключи Ке и Кп.
Пусть кто-либо пытается использовать для засекречивания связи описанную выше аффинную криптосистему С = аР + Ь. Как мы видели в § III. 1, эту систему нетрудно вскрыть, если используются однобуквенные элементы текста в yV-буквенном алфавите. Немного сложнее вскрыть эту систему при использовании биграмм, что мож-но рассматривать как использование N -буквенного алфавита. Еще лучше использовать блоки из к букв с числовыми эквивалентами из Z/NkrL. При к > 3 использовать частотный анализ уже затруднительно, так как число возможных Ai-грамм очень велико и многие из них можно с равным основанием считать наиболее часто встречающимися. Если идти по пути увеличения к, то надо учитывать затраты времени на решение различных арифметических задач (самая важная из них — нахождение а с помощью алгоритма Евклида) как при выборе ключей, так и при шифровании и дешифровании каждого сообщения. В частности, полезно иметь оценки типа О-большое (при увеличении количественных параметров, т. е. когда криптосистема становится «большой») времени, необходимого для: а) шифрования при известном Ке, б) дешифрования при известном К/), в) вскрытия кода шифрования без знания Ке, г) вскрытия кода дешифрования без знания Ке>-
Во всех приведенных выше примерах, как и во всех криптосистемах, использовавшихся более пятнадцати лет назад, не было необходимости задавать ключ дешифрования, если ключ (и алгоритм) шифрования были известны. Даже имея дело с такими большими числами, к
как N при весьма большом к, можно определить ключ дешифрования по ключу шифрования за время, близкое по порядку ко времени работы стандартных алгоритмов. Например, в случае аффинного преобразования в 7j/Nk7j, зная ключ шифрования Ке — можно вычислить ключ дешифрования К d = (а 1 (mod TV*1),—а *b (mod Nky) с помощью алгоритма Евклида за O(log3 TV*1) двоичных операций.
Таким образом, в традиционных криптосистемах любой, кто имел возможность дешифровать сообщение, мог с небольшими усилиями или совсем без них определить ключ шифрования. Казалось наивностью или глупостью думать, что человек, вскрывший шифр, может, тем не менее, не знать ключа шифрования. Об этом свидетельствует следующий отрывок из автобиографии хорошо известного исторического персонажа.
«... Пять или шесть недель спустя она (мадам Дюрфе) спросила меня, расшифровал ли я послание, записанное с помощью транс-
§ 1. СУТЬ КРИПТОГРАФИИ С ОТКРЫТЫМ ключом
93
мутации. Я ответил утвердительно.
— Извините меня, сэр, но я уверена, что такое без ключа невозможно.
— Мадам! Вы хотите, чтобы я назвал вам ключ?
— Будьте добры.
Тогда я сказал ей ключевое слово, которое не принадлежало ни одному языку, и увидел ее изумление. Она ответила мне, что это невозможно, что она полагала себя единственным обладателем этого слова, которое она держала в своей памяти и никогда не записывала.
Я мог бы сказать ей правду — что те же самые вычисления, при помощи которых я расшифровал послание, позволили мне найти это слово, — но что-то заставило меня сказать, что его открыл мне дух. Это лживое признание приворожило мадам Дюрфе ко мне. В тот день я стал властителем ее души и злоупотребил своей властью. До сих пор мне неприятно и стыдно вспоминать об этом эпизоде, и я рассказал о нем лишь потому, что обязался писать в своих мемуарах одну лишь правду...» — Казанова, 1757, перевод отрывка, цитированного по книге D. Kahn «Codebreakers».
Ситуация оставалась без изменений почти 220 лет после этого разговора между Казановой и мадам Дюрфе: для любой криптосхемы знание способа шифрования и знание способа дешифрования рассматривались как по сути дела эквивалентные. Однако в 1976 году Диффи и Хеллман открыли принципиально новый тип криптосистем и изобрели «криптографию с открытым ключом».
По определению, криптосистема с открытым ключом обладает тем свойством, что знание шифрующего преобразования не позволяет по ключу шифрования найти ключ дешифрования, избежав чрезвычайно длинных вычислений. Другими словами, шифрующая функция f-.P-^C легко вычисляется, если ключ шифрования Ке известен, но вычислять значения обратной функции f : С —> Р очень сложно. С точки зрения практической вычислимости это значит, что функция f необратима (без дополнительной информации — ключа дешифрования Кр). Такую функцию будем называть функцией с замком*'*. Таким образом, функция f с замком — это легко вычислимая функция, для которой обратную функцию f вычислить трудно, если не иметь некоторой дополнительной информации сверх той, что используется
Для английского термина «trapdoor function» в русскоязычной литературе используется также перевод «функция с лазейкой». — Прим. ред.
94
ГЛ. IV. ОТКРЫТЫЙ КЛЮЧ
при вычислении f. Обратная функция /-1, однако, легко вычислима, если известна дополнительная информация KD — ключ дешифрования.
Очень близким является понятие однонаправленной функции. Это такая функция, которую легко вычислить, но для которой обратную функцию f вычислить трудно даже при наличии некоторой дополнительной информации. В то время как понятие функции с замком появилось впервые в 1978 году в связи с разработкой криптосистемы RSA с открытым ключом, понятие однонаправленной функции немного старше. По-видимому, впервые использование однонаправленных функций в криптографии было описано в книге Уилкеса о системах разделения времени, опубликованной в 1968 году. Автор описывает новый однонаправленный шифр, использованный Нидхамом для того, чтобы компьютер мог проверять пароли, не храня информацию, которая позволила бы злоумышленнику выдавать себя за легального пользователя.
В системе Нидхама при установлении или смене пароля он немедленно шифруется и хранится в компьютере в зашифрованном виде. Когда пароль вводится в ответ на запрос при идентификации пользователя, пароль снова шифруется и результат сравнивается с хранящейся версией. Для злоумышленника нет прямого смысла добывать список хранящихся зашифрованных паролей, так как прежде, чем им пользоваться, эти пароли надо расшифровать. Для этого, даже имея доступ к компьютеру и зная во всех деталях алгоритм шифрования, придется затратить массу времени для процедуры дешифрования.
В 1974 году Дж. Парди впервые подробно описал такую однонаправленную функцию. Исходный пароль и зашифрованный пароль рассматриваются как целые числа по большому простому модулю р, а однонаправленное отображение Fp —> Fp задается многочленом /(т), который нетрудно вычислить на компьютере, но обратить его за разумное время невозможно. Парди использовал р = 264 — 59, ,, \ 224 + 17 , 224+3 ,3,2,	,	. .
J(x) = х + а4х + а2х + а3х + а4х + а5, где коэффициентами являются произвольные 19-разрядные целые числа.
Данные выше определения криптосистемы с открытым ключом, однонаправленной функции и функции с замком строгими с математической точки зрения не являются. Они опираются на понятие «практической вычислимости». Но это понятие — эмпирическое, на его содежание влияют как достижения вычислительной техники (например, появление компьютеров с параллельными процессорами), так и открытие новых алгоритмов, ускоряющих решение арифметических
§ 1. СУТЬ КРИПТОГРАФИИ С ОТКРЫТЫМ ключом
95
задач. Поэтому шифрующее преобразование, с полным основанием рассматривавшееся в 1994 году как однонаправленная функция или функция с замком, может потерять этот статус в 2004 или 2994 году.
Не исключено, что для некоторых преобразований можно доказать, что они являются функциями с замком. Например, может существовать теорема, дающая нетривиальную нижнюю границу для числа двоичных операций, необходимых («в среднем», при случайном выборе ключевых параметров) для того, чтобы описать и реализовать дешифрующий алгоритм, не зная ключ дешифрования. При этом следовало бы допускать возможность использования большого числа соответствующих друг другу элементов открытого и шифрованного текстов (как это делалось при частотном анализе простых систем в главе III), так как, по определению системы с открытым ключом кто угодно может выработать произвольно большое число таких пар. Необходимо было бы также учесть возможность использования «вероятностных» методов, которые, не гарантируя вскрытия кода при однократном применении, рано или поздно дают нужный результат, если применять их много раз. (Примеры вероятностных алгоритмов будут приведены в следующей главе.) К сожалению, ни одной такой теоремы не доказано ни для одной из функций, используемых как шифрующие отображения. Таким образом, хотя сейчас есть много криптосистем, представляющихся заслуживающими названия «систем с открытым ключом», нет ни одной криптосистемы, для которой это свойство было бы доказано.
Смысл названия «открытый ключ» состоит в том, что информация, используемая при отправке секретных сообщений — ключ шифрования КЕ — может быть раскрыта без риска, что кто-либо получит возможность прочесть секретные сообщения. Так, пусть имеется некоторая группа пользователей криптосистемы, каждый из которых хочет иметь возможность принимать и дешифрировать конфиденциальные сообщения от любого другого без участия третьих лиц (как пользователей, так и посторонних). Какой-нибудь центральный узел может собрать ключи шифрования КЕ}л от каждого пользователя А и опубликовать их в «телефонной книге» в следующем виде
AAA Banking Company (9974398087453939,2975290017591012)
Aardvark, Aaron	(8870004228331,7234752637937)
Желающий послать сообщение просто должен найти ключ шифрования получателя в такой «телефонной книге» и использовать его в общем шифрующем алгоритме как ключевой параметр. Только этот получатель имеет в своем распоряжении ключ дешифрования, необхо
96
ГЛ. IV. ОТКРЫТЫЙ КЛЮЧ
димый для прочтения сообщения.
Раньше никто бы не подумал, что системы этого типа обладают какими-либо особенно поразительными преимуществами. Традиционно криптография использовалась, главным образом, военными и дипломатами. Обычно требовалось распределить систему ключей внутри небольшой строго определенной группы пользователей, и эта система ключей периодически (с помощью курьеров) обновлялась, чтобы лишить противника возможности вскрыть ее.
Однако в последние годы сфера реальных и потенциальных приложений криптографии расширилась и включила в себя ряд других областей, в которых системы связи играют важнейшую роль: создание и хранение баз конфиденциальной информации, электронные финансовые расчеты и т. д. Зачастую имеется большая сеть пользователей, любые два из которых должны иметь возможность сделать переписку между ними секретной как для других пользователей сети, так и для посторонних злоумышленников. Два участника могут в какой-то момент установить секретную связь, позднее один из них может захотеть послать конфиденциальное сообщение третьему. Таким образом, множество участников, между которыми поддерживается секретная связь, может постоянно изменяться. Было бы неудобно каждый раз обмениваться ключами со всеми потенциальными корреспондентами.
Заметим, что система с открытым ключом позволяет двум участникам начать секретный обмен данными без предварительного контакта, без взаимной проверки и без предварительного обмена какой-либо информацией. Вся необходимая для посылки шифрованного сообщения информация является общедоступной.
Классическая версия открытого ключа. Под классической криптосистемой (иначе, системой с секретным ключом или симметричной криптосистемой) понимается криптосистема, в которой, имея информацию о преобразовании шифрования, можно реализовать преобразование дешифрования примерно за такое же время, что и преобразование шифрования. Все криптосистемы главы III были классическими. Бывает, что дешифрование в них требует несколько большего времени, поскольку приходится использовать алгоритм Евклида, чтобы найти обратное число по модулю N, или обращать матрицу (а обращение к х /с-матриц при больших к также занимает значительное время); тем не менее, это дополнительное время не слишком велико. (Более того, это дополнительное время используется лишь один раз — при определении К и — после чего дешифрование становится не сложнее шифрования.) Например, может понадобиться лишь O(log2 В) двоичных операций для шифрования одного элемента сооб
§ 1. СУТЬ КРИПТОГРАФИИ С ОТКРЫТЫМ КЛЮЧОМ	97
щения и O(log3B) двоичных операций для определения KD по КЕ. Здесь В — граница для размера ключевого параметра. Заметьте, какую роль играют здесь оценки вида О-большое.
С другой стороны, если бы время шифрования было полиномиально по log В, а время дешифрования (при известном КЕ, но не А'р) полиномиально по В, а не log В, то это, скорее, была бы система с открытым ключом, а не классическая криптосистема.
Аутентикация. Часто одной из наиболее важных частей сообщения является подпись. Человеческая подпись, написанная машинальным росчерком пера, которую трудно повторить, позволяет быть уверенным, что сообщение получено действительно от лица, чье имя написано ниже. Если сообщение имеет особенную важность, могут потребоваться дополнительные способы заверения подлинности (ау-тентикации) сообщения. А в электронных средствах связи, где нельзя передать физическую подпись, приходится полагаться совершенно на. другие методы. Например, когда сотрудник компании хочет снять деньги со счета компании по телефону, его часто просят сообщить некоторую личную информацию (например, девичью фамилию матери), которую знают как сотрудник, так и банк (эти данные подаются при открытии счета), но навряд ли знает посторонний.
Криптография с открытым ключом предоставляет очень простой способ доказать, что вы — это именно вы, которым не может воспользоваться никто другой, желающий выдать себя за вас. Пусть А (Алиса) и В (Боб) — два пользователя системы. Пусть fA — шифрующее преобразование, которым должен воспользоваться любой, кто отправляет сообщение Алисе, a fB — соответствующее преобразование для Боба. Для простоты считаем, что множества. Р и С элементов открытого и шифрованного текстов совпадают и одинаковы у всех пользователей. Пусть Р — подпись Алисы (включающая в себя, возможно, идентификационный номер Алисы, время отправления сообщения и т.п.). Если Алиса просто пошлет Бобу некоторое сообщение /в(Р), то (поскольку способ вычисления fB(P) общеизвестен) нет способа проверки, гарантирующего, что подпись принадлежит Алисе. Однако, если в начале или конце сообщения будет помещено /в/а\Р)> то Боб, применив дешифрует сообщение, включая этот добавок, и все превратится в открытый текст, за исключением добавка, который примет вид /д1(Р). Так как Боб знает, что сообщение должно
*1 Английский термин authentication означает удостоверение (или доказательство) подлинности. В русскоязычной литературе часто используется его искаженная калька «аутентификация». — Прим. ред.
98
ГЛ. IV. ОТКРЫТЫЙ КЛЮЧ
было быть послано от Алисы, то он применит к добавку /д (ключ Алисы открыт и ему известен) и получит Р. Так как никто, кроме Алисы, не может воспользоваться функцией /д1, обратной к /д, то он удостоверяется в том, что сообщение послано Алисой.
Хеш-функции. Обычно документы подписывают с помощью хеш-функции. Образно говоря, хеш-функция — это легко вычислимое отображение f:x\—>h очень длинного входа х во много более короткий выход h (например, отрезок в 106 бит отображается в отрезок длиной 3 50 или 200 бит), обладающее следующим свойством: вычислительная сложность нахождения двух различных входов х и х , для которых /(х) = f(x'), чрезвычайно велика. Если «подпись» Алисы содержит значение хеш-функции h — /(т), где х — полный текст ее сообщения, то Боб может не только проверить, что сообщение действительно послано Алисой, но и убедиться, что оно не было изменено при передаче. А именно, Боб применяет хеш-функцию к дешифрованному открытому тексту и проверяет, совпадает ли результат с величиной h из подписи Алисы. По предположению, никто не в состоянии изменить х, не меняя h = /(т).
Обмен ключами. Существующие криптосистемы с открытым ключом работают медленнее, чем современные системы классического типа. Число элементов открытого текста, которые могут быть переданы за одну секунду, у них меньше. Однако, если группа пользователей предпочитает традиционный тип криптосистем, она может воспользоваться криптосистемой с открытым ключом как вспомогательным средством для рассылки друг другу своих ключей К = (А£, Ар) для классической системы. Таким образом, можно соблюдать основные правила классической криптосистемы и периодически проводить обмен ключами при помощи сравнительно медленной системы с открытым ключом, в то время как основной поток сообщений пересылается с использованием более быстрых прежних методов.
Вероятностное шифрование. Большинство криптосистем для передачи сообщений, основанных на теоретико-числовых идеях, является детерминированными в том смысле, что один и тот же открытый текст всегда шифруется в один и тот же шифртекст. Такое шифрование имеет два недостатка: (1) если злоумышленник знает, что имеется мало возможных вариантов для открытого текста (например, «да» или «нет»), то он может зашифровать все эти варианты и определить, который из них составляет сообщение, и (2) очень трудно доказать содержательное утверждение о надежности системы детерминированного шифрования. По этим причинам было введено
§ 1. СУТЬ КРИПТОГРАФИИ С ОТКРЫТЫМ ключом
99
понятие вероятностного шифрования. В этой книге мы не будем обсуждать этот вопрос подробнее или приводить примеры. Ознакомиться с ним можно по основопологающим работам Голдвассера и Микали (Proceedings of the 14th ACM Symposium on the Theory of Computing, 1982, c. 365-377, и J. Comput. System Sci., 1984, t. 28, c. 270-299).
УПРАЖНЕНИЯ
1.	Пусть m пользователей хотят обеспечить возможность связи каждого с каждым с помощью классической криптосистемы. При этом каждый настаивает на том, чтобы его переписка с любым другим пользователем была недоступна для остальных т — 2 пользователей. Сколько для этого потребуется ключей К = (Ke'KdY? Сколько потребуется ключей, если в этой ситуации используется система с открытым ключом? Сколько требуется ключей для криптосистем каждого типа при т = 1000?
2.	Пусть в сети, обслуживающей инвесторов и биржевых брокеров, используется криптосистема с открытым ключом. Инвесторы опасаются, что их брокеры будут покупать акции без согласования с ними (чтобы присвоить комиссионные), а если деньги инвестора будут потеряны, заявят, что они лишь выполняли их инструкции (предъявив в доказательство шифрованное распоряжение о покупке акций, полученное якобы от инвестора). Брокеры, со своей стороны, опасаются, что в случае, если они купят акции согласно инструкции клиента, а акции упадут в цене, инвестор может заявить, что никакой инструкции не посылал или что она послана посторонним или самим брокером. Объяснить, как можно решить эту проблему применением криптографии с открытым ключом, так что когда все они потянут друг друга в суд, можно будет доказать, кто именно виноват в неосторожном вложении денег и последующей их потере. (Предполагается, что в случае тяжбы между инвестором А и брокером В суду будут предъявлены вся относящаяся к делу информация о шифровании и дешифровании — ключи К а = (Ке,а, К D,a) и Кд = {Ке,В , КD,b), а также программное обеспечение, необходимое для шифрования и дешифрования.)
3.	Предположим, что две страны А и В пытаются достичь соглашения о запрещении подземных ядерных испытаний. Ни одна из сторон не доверяет другой, имея на это веские причины. Тем не менее, они вынуждены согласиться разместить в различных точках территории обеих стран системы контрольного оборудования. Каждый набор оборудования состоит из сложного сейсмографа, небольшого компьютера для обработки наблюдений сейсмографа и составления сообщений, а также радиопередатчика. Объяснить, как криптография с открытым ключом позволяет удовлетворить всем следующим условиям (которые, на первый взгляд, кажутся несовместимыми).
а)	Страна А настаивает на ознакомлении с содержанием (открытым текстом) всех сообщений, отправляемых с ее территории, чтобы быть уверенной в том, что оборудование не используется страной В в целях шпионажа.
б)	Страна В настаивает на том, чтобы страна А не могла сфабриковать сообщение, передаваемое оборудованием с его территории (т. е. сообщение типа «все нормально», когда сейсмограф зафиксировал нарушение договора).
в)	Страна А настаивает на том, чтобы в случае, если страна В сделает ложное заявление о получении от оборудования сигнала о нарушении договора, любая
100
ГЛ. IV. ОТКРЫТЫЙ ключ
заинтересованная третья страна была в состоянии определить, что в реальности сообщения о нарушении не посылалось.
г)	Условия а)-в) с переменой сторон.
д)	Контрольное оборудование в обеих странах должно быть идентичным и созданным совместно учеными обеих стран.
4. В этой задаче требуется с помощью какой-нибудь функции с замком типа два-в-один организовать игру в монетку на большом расстоянии между игроками. Например, двое, находясь в различных частях света, собираются сыграть партию в шахматы по переписке или по телефону и им надо определить, кто играет белыми. Или, при подготовке к международному хоккейному матчу, представители команд решили бросить монетку для определения того, кто будет считаться хозяином, но не хотят ради этого встречаться или привлекать третью сторону.
Под системой функций с замком типа два-в-один мы понимаем пару алгоритмов: алгоритм, который при заданном ключе Ке подходящего типа строит такую функцию f: Р —» С, что каждому элементу с образа f отвечают ровно два таких прообраза pi,P2 € Р, что /(pi) = /(рг) = с, и алгоритм, который при заданном ключе Ке, «обратном к Ке», может найти оба прообраза для любого с из образа f. Здесь предполагается, что вычислительная сложность нахождения Ке по Ке чрезвычайно велика. Заметим, что при заданном элементе pi £ Р можно найти другой элемент рг, имеющий тот же образ (т. е. найти оба обратных к /(pi)), если знать как Ке, так и Ке- Однако мы предполагаем, что, зная лишь Ке, практически невозможно найти рг ни для какого pi.
Предположим, что игроки А (Анюта) и В (Бьерн) хотят использовать этот подход для игры в монетку. Игрок А вырабатывает пару ключей Ке и Ке и посылает Ке (но не Ке) игроку В. Объяснить процедуру, предоставляющую каждому из игроков равные шансы на «выигрыш» (дать подходящее определение «выигрыша») и надежную защиту от обмана.
ЛИТЕРАТУРА к § 1 ГЛАВЫ IV
1.	Blum М. Coin-flipping by telephone — a protocol for solving imposible problems. — IEEE Proc., Spring Compcon., p. 133-137.
2.	Diffie W., Hellman M. E. New directions in cryptography. — IEEE Trans. Inform. Theory IT-22, 1976, p. 644-654.
3.	Chaum D. Achieving electronic privacy. — Sci. American, 1992, v. 267, p. 96-101.
4.	Goldwasser S. The search for provably secure cryptosystems. — Crypt. Comput. Number Theory, Proc. Symp. Appl. Math., 1990, v. 42, p. 89-113.
5.	Hellman M. E. The mathematics of public-key cryptography. — Sci. American, 1979, v. 241, p. 146-157.
6.	Kranakis E. Primality and Cryptography. N.-Y. etc.: Wiley, 1986.
7.	Rivest R. Cryptography. — In: Handbook of Theoretical Computer Science. Vol. A. Amsterdam: Elsevier, 1990, p. 717-755.
8.	Ruggiu G. Cryptology and complexity theories. — In: Advances in Cryptology. Proceedings of Eurocrypt 84. Heidelberg etc.: Springer, 1985, p. 3-9.
§ 2. КРИПТОСИСТЕМА RSA
§ 2. Криптосистема RSA
101
При подборе функции с замком f для системы с открытым ключом желательно, чтобы идея шифрования была проста концептуально и несложна в реализации. С другой стороны, хотелось бы иметь убедительное эмпирическое обоснование — основанное на многолетних попытках построения алгоритма для f 1 — свидетельствующее о том, что дешифрование реально не осуществимо без знания секретного ключа дешифрования. По этой причине естественно обратить внимание на старинную проблему теории чисел — задачу полной факторизации большого составного целого числа при неизвестных заранее простых множителях. Успех так называемой криптосистемы «RSA» (названной по именам ее создателей: Rivest, Shamir и Adleman), являющейся одной из самых старых (16 лет) и самых популярных криптосистем с открытым ключом, определен чрезвычайной трудностью этой задачи.
Теперь опишем, как работает криптосистема RSA. Сначала каждый пользователь выбирает два очень больших простых числа р и q (имеющих, скажем, по 100 десятичных разрядов каждое) и вычисляет п = pq. Зная факторизацию числа п, несложно вычислить <^(п) = (р - 1)(<? - 1) = п + 1 - р - q. Затем пользователь выбирает случайно целое число е между 1 и которое взаимно просто с
Замечание. Когда мы говорим «случайно», то всегда подразумеваем, что число выбрано с помощью датчика случайных (или псевдослучайных) чисел, т.е. компьютерной программы, генерирующей последовательность цифр, которую никто не может повторить или предугадать, и которая, по-видимому, имеет те же статистические свойства, что и истинно случайная последовательность. Много написано об эффективных и надежных способах генерации случайных чисел, но здесь мы не будем касаться этого вопроса. В системе RSA генератор случайных чисел используется не только для выбора е, но и для выбора больших простых чисел р и q (чтобы никто не смог предугадать наш выбор, взяв таблицы простых чисел специального к вида, например, простых Мерсенна или делителей чисел вида b ± 1 при малых b и сравнительно малых fc). Что понимается под «случайно выработанным» простым числом? Это следующее. Сначала вырабатывается большое случайное целое число т. Если т четное, то оно заменяется на т+ 1. Потом, чтобы проверить, является ли это нечетное число простым, используется тест на простоту числа (тесты на простоту подробно изучаются в следующей главе). Если число т не является простым, то проверяются т + 2, потом т + 4 и т. д., пока не будет получено первое простое число, превосходящее т, которое и берется в качестве «случайного» простого. Поскольку по теореме
102
ГЛ. IV. ОТКРЫТЫЙ ключ
о простых числах (формулировку см. в упражнении 13 раздела 1.1) доля простых среди целых вблизи т составляет примерно 1/logm, можно ожидать, что для нахождения первого простого, большего или равного т, потребуется проверить O(logm) чисел.
Подобным образом вырабатывается «случайное» число е, взаимно простое с ф(п). Сначала вырабатывается случайное (нечетное) целое число подходящего размера, которое последовательно увеличивается, пока не будет найдено е с НОД (е,ф(п)) = 1. (Можно поступать по-другому: проводить проверку на простоту, пока не найдется простое е, скажем, между тах(р, (?) и ф(п); такое простое обязательно удовлетворяет условию НОД (е,ф(п)) = 1.)
Итак, каждый пользователь А выбирает два простых числа рА, qA, а вслед за этим — случайное число ед, которое не имеет общих множителей с (рд - 1)(?д - 1). Далее, А вычисляет пА — РаЧа, = пА + 1 — Ра ~ Ча и число, обратное относительно умножения к ед по модулю р(па)'- dAA= ед1 (mod <р(пд)). Ключ шифрования Ке,а = (пд,ед) делается открытым, а ключ дешифрования Kd,a = (па->^а) — секретным. Шифрующее преобразование — это отображение Z/nAZ в себя по формуле /(Р) = РвА (mod Пд). Дешифрующее преобразование — это отображение Z/nAZ/ в себя по формуле f 1(С) = CdA (mod пд). Нетрудно заметить, что согласно нашему выбору dA эти два отображения взаимно обратны. А именно, последовательное применение в любом порядке f и f приводит к возведению в степень (/дед. Поскольку (2дСд дает при делении на р(па) остаток 1, это эквивалентно возведению в первую степень (см. следствие из предложения 1.3.5, которое гарантирует это, когда Р не имеет общих множителей с пА', случай НОД (F, Пд) > 1 рассматривается ниже в упражнении 6).
В приведенном описании множества Р и С элементов открытого и шифрованного текстов удовлетворяли условию Р = С и были различными для разных пользователей. На практике может возникнуть необходимость выбирать Р и С единообразно для всей системы. Пусть, например, используется A-буквенный алфавит и k < I — та-кие натуральные числа, что N и А имеют приблизительно по 200 десятичных разрядов каждое. В качестве элементов открытого текста рассмотрим все блоки по к букв, которые интерпретируются как ^-разрядные А-ичные числа, т. е. им присваиваются числовые экви-к
валенты из диапазона между 0 и А - 1. Аналогично, элементами шифртекста будут блоки из I букв того же алфавита. Каждый пользователь А должен выбрать большие простые числа рА и qA так, чтобы к	I
пА — РаЧа удовлетворяло неравенствам А < пА < N  Тогда любой
§ 2. КРИПТОСИСТЕМА RSA	103
к
элемент открытого текста, т. е. целое число, меньшее N , соответствует вычету из Z/rz^Z (для пользователя А) и, так как пА < N1, то образ € 71/пА71 может быть записан в виде /-буквенного блока единственным образом. (При этом возникают не все /-буквенные блоки, а только те, которые отвечают целым, меньшим значения пА, выбранного данным пользователем.)
Пример 1. Ради читателей, не имеющих под рукой компьютера и программного обеспечения, позволяющего производить вычисления с большим числом знаков, мы отойдем от реальности и будем использовать в большинстве наших примеров сравнительно небольшие целые числа. Выберем N = 26, к = 3, / = 4. Таким образом, открытый текст составлен из триграмм, а шифртекст — из четырехграмм 26-буквенного алфавита. Чтобы послать сообщение «YES» пользователю А с ключом шифрования (пА,еА) = (46927,39423), мы определяем числовой эквивалент для «YES»: 24 • 262 + 4 • 26 + 18 = 16346, и затем вычисляем 16 3 4 639423 (mod 46927), что есть 21166 = 1 • 263 + 5 • 262 + 8 • 26 + 2=«BFIC». Адресат А знает ключ дешифрования (nA,dA) = (46927,26767) и вычисляет 2116626767 (mod 46927) = 16346 =«YES». Как же пользователь А построил свои ключи? Сначала он перемножил простые числа рА = 281 и qA = 167 и получил пА, затем случайно (но при условии, что НОД (еА, 280) = НОД (ед, 166) = 1) было выбрано еА. В итоге было найдено dA = еА (mod 280 • 166). Числа рд, qA, dA остались секретными.
Сколь громоздки вычисления в примере 1? Самым трудоемким по времени является возведение в степень по модулю, т. е. вычисление 1634639423 (mod 46927). Но оно может быть выполнено методом повторного возведения в квадрат (см. §1.3) за О(к3) двоичных операций, где к — число бит в наших целых числах. Если бы использовались очень большие целые числа, то для пользователя А самым трудоемким этапом мог бы оказаться поиск пары больших простых чисел рА и qA. Чтобы ускорить поиск очень больших простых чисел, нужно использовать эффективные тесты на простоту. Такие тесты описываются в следующей главе.
Замечания. 1. При выборе р и q пользователь А должен позаботиться о выполнении ряда условий. Самые важные из них следующие: эти простые числа не должны быть слишком близки друг к ДРУГУ (например, одно должно быть на несколько десятичных разрядов длиннее другого), числа р—1 и д-1 должны иметь очень маленький наибольший общий делитель и каждое из них должно иметь хотя бы один большой простой делитель. Некоторые причины появления таких условий указаны в последующих упражнениях. Разумеется, если
104
ГЛ. IV. ОТКРЫТЫЙ ключ
будет изобретен метод факторизации, который быстро находит ответ при некоторых ограничениях на р и q, то будущим пользователям RSA придется накладывать на выбор р и q дополнительные условия.
2. В §1.3 мы видели, что, когда п является произведением двух простых чисел р и q, знание 'р(п') эквивалентно знанию разложения. Предположим теперь, что мы решили вскрыть систему RSA посредством нахождения такого натурального d, что aed = a (mod п) для всех а, взаимно простых с п. Это эквивалентно тому, что ed—1 кратно наименьшему общему кратному чисел р - 1 и q — 1. Знание т = ed — 1 несет в себе меньше информации, чем точное знание <р(п). Однако сейчас мы приведем процедуру, позволяющую по т с большой вероятностью разложить п.
Итак, предположим, что даны целое число п, которое является произведением двух неизвестных простых чисел, и такое целое число т, что ат = 1 (mod га) для всех а, взаимно простых с га. Заметим, что такое т обязательно четно (в чем можно убедиться, взяв а = -1). Сначала проверим, обладает ли тем же самым свойством число т/2, в случае чего можно заменить т на т/2. Если ат^ не сравнимо с 1 по модулю га для некоторых а, взаимно простых с га, то ат^ 1 (mod га), по крайней мере, для половины элементов множества (Z/raZ) (это доказывается точно так же, как пункт а) упражнения 21 к § II. 2). Таким образом, если мы выберем случайно несколько дюжин значений а и обнаружим, что во всех этих случаях ат^2 = 1 (mod га), то можно с большой надежностью считать, что это сравнение выполнено для всех а, взаимно простых с га, и можно снова заменить т на т/2. Эта процедура повторяется до тех пор, пока сравнение не перестанет выполняться. Тогда имеется две возможности.
1)	т/2 кратно одному из чисел р - 1 или q — 1 (скажем, р — 1), но не обоим. В этом случае ап^‘1 всегда сравнимо с 1 по модулю р и точно в половине случаев сравнимо по модулю q с -1, а не с 1.
2)	т/2 не кратно ни одному из чисел р — 1 и 1.В этом слу-чае а сравнимо с 1 как по модулю р, так и по модулю q (а значит, и по модулю га) ровно в 25% случаев, сравнимо с -1 как по модулю р, так и по модулю q ровно в 25% случаев, а в остальных 50% случаев выбора а оно сравнимо с 1 по одному модулю и с —1 по другому.
Таким образом, случайно выбирая значения а, мы с большой ве-роятностью быстро найдем такое а, при котором а ' — 1 делится только на одно из наших двух простых чисел (скажем, р). (Случайно выбранное а с вероятностью 50% удовлетворяет этому условию.) Как только такое а найдено, мы сразу можем разложить га, так как НОД (ra,am/2 - 1) = р.
§ 2. КРИПТОСИСТЕМА RSA
105
Приведенная процедура дает пример вероятностного алгоритма. Мы еще встретимся с вероятностными алгоритмами в следующей главе.
3.	Как послать подпись в системе RSA? При обсуждении проблемы аутентикации в предыдущем разделе мы предполагали для простоты, что V = С. Для системы RSA ситуация немного сложнее. Существует способ, который позволяет избежать сложностей с неодинаковостью чисел пА и размеров блоков (число букв к в элементе открытого текста меньше числа букв I в элементе шифртекста). Предположим, как и в предыдущем разделе, что Алиса посылает свою подпись (некоторый открытый текст Р) Бобу. Ей известны ключ шифрования Боба КЕВ = (пв,ев) и собственный ключ дешифрования КЕ'А = (пд,(/д). Она должна послать /в/д1(Р), если пА < пв, и если пА > пв. В первом случае она берет наименьший положительный вычет Р А по модулю пА, затем, приведя это число по модулю ng, она вычисляет (^pdA (mod пд))ев (mod ng), что и посылает в качестве элемента шифртекста. Если пА > пв, то она сначала вычисляет Рев (mod пв) и потом возводит это выражение в степень dA по модулю пА. Ясно, что Боб, чтобы проверить подлинность сообщения, в первом случае использует возведение в степень dB по модулю пв, а потом в степень еА по модулю пА. Во втором случае эти операции применяются в обратном порядке.
УПРАЖНЕНИЯ
1.	Пусть для открытых и шифрованных текстов во всех случаях используется 40-буквенный алфавит с числовыми эквивалентами 0-25 для A-Z, пробел =26, . = 27, ? = 28, $ = 29 и с числовыми эквивалентами 30-39 для цифр 0-9. Пусть элементами открытого текста являются биграммы, а шифртекста — триграммы (т. е. к = 2, I = 3, 402 < пА < 403 для всех пА).
а)	Послать сообщение «SEND $7500» пользователю с ключом шифрования (пА, ел) = (2047, 179).
б)	Вскрыть код, разложив пА на множители и вычислив затем ключ дешифрования (пд,(/д).
в)	Объяснить, почему аналитик может сравнительно быстро определить ключ дешифрования, не прибегая к факторизации пд. Другими словами, почему число 2047, помимо своего малого размера, является очень плохим вариантом для пд?
2.	Попробуйте вскрыть код, в котором используется ключ шифрования (пд, ед) = (536813567, 3602561). Используйте для разложения на множители числа пд компьютер и простейший известный алгоритм, состоящий в делении на все нечетные числа по очереди. Если нельзя воспользоваться компьютером, попробуйте угадать простой делитель пд, пробуя специальные классы простых чисел. После факторизации пд найдите ключ дешифрования. После этого дешифруйте сообщение «BNBPPKZAVQZLBJ» в предположении, что открытый текст состоит из шестибуквенных блоков в обычном 26-буквенном алфавите (преобразуемых в целые от 0
106
ГЛ. IV. ОТКРЫТЫЙ ключ
до 26б — 1 обычным способом), а шифртекст состоит из семибуквенных блоков в том же самом алфавите. Из этого упражнения должно стать ясно, что даже 29-битовое число пд слишком мало.
3.	Пусть элементы открытого и шифрованного текстов — это триграммы, но открытый текст написан в 27-буквенном алфавите (буквы А-Z и пробел = 26), а шифртекст записан в 28-буквенном алфавите, полученном из 27-буквенного добавлением знака «/» с числовым эквивалентом 27. Предполагается, что каждый пользователь А выбирает пд в диапазоне между 273 = 19683 и 283 = 21952, так что триграмма открытого текста в 27-буквенном алфавите соответствует вычету Р по модулю па - Тогда С = РеА (mod пд) соответствует триграмме шифртекста в 28-буквенном алфавите.
а)	Пусть ваш ключ дешифрования — это К d = (n, d) = (21583, 20787). Дешифровать сообщение «YSNAUOZHXXH » (в конце сообщения стоит один пробел).
б)	В условиях а) известно, что ip(n) = 21280. Найти: 1) е = d~l (mod <p(n)); 2) разложение числа п.
4.	Показать, что 35-битовое целое 23360947609 является очень плохим вариантом для п = рд из-за того, что два его простых делителя слишком близки друг к другу. Иначе говоря, показать, что п легко разлагается «методом Ферма», состоящим в следующем. Заметим, что если п = pq (скажем, р > q), то п = (~^)2 — (^у2-)2- Если р и q близки, то s = (р — д)/2 мало и t = (р + q)/2 есть целое число, лишь немного большее у/п, причем I2 — п является полным квадратом. Проверяя подряд целые числа t > у/п, вы довольно быстро найдете такое, для которого п = /2 — s2. Тогда p = t + sHq = t — s (см. упражнение 3к§1.2и§3 главы V.)
5.	Предположим, что имеется быстрый (вероятностный) алгоритм решения уравнения z2 = a (mod р) при любом простом р и любом квадратичном вычете а. Например, выбирая случайно целые числа и вычисляя символ Лежандра, с большой вероятностью можно найти невычет. Затем можно применить алгоритм, описанный в §11.2. Предположим также, что не существует хорошего алгоритма для решения уравнения х2 = a (mod п), где а является квадратом по модулю п, а п = рд есть произведение двух больших простых чисел, причем разложение числа п на множители неизвестно (при известных множителях можно найти квадратный корень по каждому из модулей и потом воспользоваться китайской теоремой об остатках для нахождения квадратного корня по модулю п). Пусть оба числа р и q не сравнимы с 1 по модулю 4. Положим Ке = п и Kd = {?,?}• Рассмотрим множество Р = С = (Z/nZ)*/ ± 1, которое получается из множества вычетов, взаимно простых с п, «склеиванием» противоположных элементов х и — х. Пусть f: Р -+ С — это отображение х i—> х2 (mod п). Показать, что это отображение является примером отображения упражнения 4 из предыдущего раздела. Оно дает способ реализации игры в монетку на большом расстоянии.
6.	Пусть п — целое число, свободное от квадратов (т. е. произведение различных простых). Пусть d и е — такие положительные целые числа, что de — 1 делится на р — 1 для каждого простого делителя р числа п. (Например, так будет, если de = 1 (mod <р(п)).) Доказать, что aie = a (mod п) для любого целого а (вне зависимости от того, имеет ли оно общие делители с п).
7.	Доказать утверждения замечания 2 о вероятностях выполнения различных сравнений в пп. 1) и 2).
§ 3. ДИСКРЕТНОЕ ЛОГАРИФМИРОВАНИЕ
107
ЛИТЕРАТУРА к §2 ГЛАВЫ IV
1.	Adleman L. М., Rivest R. L., Shamir A. A method for obtaining digital signatures and public-key cryptosystems. — Comm. ACM, 1978, v. 21, p. 120-126.
2.	Rivest R. L. RSA chips (past/present/future). — In: Advances in Cryptology. Proceedings of Eurocrypt 84. Heidelberg etc.: Springer, 1985, p. 159-165.
3.	Gordon J. A. Strong primes are easy to find. — In: Advances in Cryptology. Proceedings of Eurocrypt 84. Heidelberg etc.: Springer, 1985, p. 216-223.
§ 3. Дискретное логарифмирование
Обсуждавшаяся в предыдущем разделе система RSA основана на том, что найти и перемножить два больших простых числа значительно проще, чем выполнить обратную операцию (имея п, найти эти два простых числа). Имеются и другие фундаментальные теоретикочисловые процедуры, обладающие, по всей видимости, свойствами однонаправленности или функции с замком. Одной из самых важных таких процедур является возведение в степень в большом конечном поле.
В поле вещественных чисел возведение в степень (нахождение Ьх с заданной точностью) не намного проще обратной операции (нахождения logfc х с заданной точностью). Рассмотрим теперь конечную группу, например, (Т/пТ')* или F* (с умножением в качестве групповой операции). Метод повторного возведения в квадрат (см. §1.3), позволяет вычислить Ьх при больших х сравнительно быстро (за полиномиальное по log я время). Пусть теперь задан элемент у, допускающий представление Ьх (считается, что «основание» b задано); как найти степень элемента Ь, в которой он равен у, т. е. вычислить х = logfc у (здесь «log» имеет отличный от обычного, хотя и близкий, смысл)? Этот вопрос называется «задачей дискретного логарифмирования». Слово «дискретное» подчеркивает отличие случая конечной группы постановки от классического непрерывного случая.
Определение. Пусть G — конечная группа, Ь — элемент группы Gay — элемент группы G, являющийся степенью Ь. Любое целое число х, для которого Ьх = у, называется дискретным логарифмом у по основанию Ь.
Пример 1. Возьмем G — F19 = (Z/19Z)* и порождающий элемент 2 в качестве b (см. пример 1 в § II.1). Тогда дискретный логарифм числа 7 по основанию 2 равен 6.
Пример 2. Если а G F9 есть корень уравнения X — X - 1 (см. пример 2 в §11. 1), то дискретный логарифм числа -1 по основанию а равен 4.
108
ГЛ. IV. ОТКРЫТЫЙ ключ
В конце раздела будет приведен краткий обзор известных алгоритмов решения задачи дискретного логарифмирования в конечных полях. Сначала же опишем несколько криптосистем с открытым ключом и систем специального назначения с открытым ключом, основанных на вычислительной сложности задачи дискретного логарифмирования в конечных полях.
Система Диффи—Хеллмана обмена ключами. Так как криптосистемы с открытым ключом значительно медленнее классических криптосистем (по крайней мере, при нынешнем состоянии науки и техники), то разумнее использовать их в качестве дополнения к классическим криптосистемам, с помощью которых и передаются сообщения. Зато процедуру согласования ключей классической криптосистемы можно очень эффективно реализовать с помощью системы с открытым ключом. Первая такая детально проработанная схема, предложенная Диффи и Хеллманом, основана на задаче дискретного логарифмирования.
Пусть ключом классической криптосистемы является большое случайно выбранное натуральное число (или набор таких чисел). Пусть, например, используется матричное аффинное преобразование пар биграмм (см. § III. 2)
2)р+С)(mod
где 0 С a,b,c, d,e,f < N и Р — вектор-столбец, составленный из числовых эквивалентов двух соседних биграмм (составляющих вместе четырехбуквенный блок) открытого текста в TV-буквенном алфавите. Выбрав случайно целое число к между 0 и N , мы сразу определим а, Ь, с, d. е, f как значения шести разрядов числа к в N -ичной системе счисления. (При этом надо проверить, что ad — bc обратимо по модулю N , т. е. что это число не имеет общих множителей с А; в противном случае выбирается новое к.)
Заметим, что выбор случайного целого в некотором интервале эквивалентен выбору случайного элемента большого конечного поля приблизительно такого же размера. Пусть, например, мы хотим выбрать случайное положительное к < А12 и наше конечное поле простое и состоит из р элементов. Элементам поля Fp сопоставим, как обычно, целые от 0 до р — 1. Если полученное таким образом целое не лг12	дг12
меньше А , то приводим его по модулю А .
Если же наше поле имеет вид Fp/, то сначала выбирается Fp-базис этого поля. Таким образом, каждому элементу поля сопоставляется набор из f элементов поля Fp. Затем, рассматривая составляющие
§ 3. ДИСКРЕТНОЕ ЛОГАРИФМИРОВАНИЕ	109
набора как разряды целого числа, записанного в р-ичной системе счисления, получаем целое число, меньшее . Предупреждение. Эта процедура устанавливает взаимно однозначное соответствие между Fp/ и Ъ/р^Ъ = {0,1,1}. Эти два множества имеют совершенно различную структуру относительно операций сложения и умножения. Первое является полем, т.е. все р^ — 1 ненулевых элементов имеют обратные, а второе — кольцом, в котором это свойство нарушается /-1 ' f	t	\
для р из р элементов (для элементов, кратных р).
Теперь опишем метод построения случайного элемента большого конечного поля Fg, разработанный Диффи и Хеллманом. Пусть значение q общеизвестно, т. е. все знают, из какого конечного поля выбирается ключ. Пусть, далее, д — некоторый фиксированный элемент Fg, который также не является секретным. В идеале, д должен быть порождающим элементом группы F*. Однако в нашем случае в этом нет необходимости, так как описываемый ниже метод построения ключа дает только те элементы Fg, которые являются степенями элемента д. Если же мы хотим, чтобы случайный элемент мог принимать любые значения из Fg, то д должен быть порождающим элементом.
Пусть два пользователя (Аида и Бернардо) хотят согласовать ключ - случайный элемент из F*, — посредством которого они будут зашифровывать переписку между собой. Аида выбирает случайное число а между 1 и q — 1, которое она держит в секрете, и вычисляет да £ Fg, которое объявляет открыто. Бернардо делает то же самое: он случайно выбирает Ь и объявляет дЬ. В качестве секретного ключа используется даЬ. Оба пользователя могут вычислить этот ключ. Например, Аида знает д (это открытая информация) и свой собственный секретный ключ а. Однако посторонние знают только да и дЬ. Если для мультипликативной группы F* выполнено следующее предположение, то посторонние не смогут определить ключ.
Предположение Диффи—Хеллмана. Сложность вычисления даЬ по да и дЬ чрезвычайно велика.
Предположение Диффи-Хеллмана априори не слабее предположения о чрезвычайной сложности дискретного логарифмирования в конечной группе. Если бы можно было вычислять дискретные логарифмы, то, очевидно, предположение Диффи-Хеллмана было бы неверным. Некоторые считают, что справедливо и обратное, однако пока этот вопрос остается открытым. Другими словами, никто еще не предложил способ получения д из д и д без использования а и о. Однако вполне возможно, что такой способ существует.
Пример 3. Пусть при шифровании используется преобразование сдвига однобуквенных элементов в 26-буквенном алфавите (см.
по
ГЛ. IV. ОТКРЫТЫЙ ключ
пример 1 в §Ш. 1): С = Р + В (mod 26). (Мы используем для параметра сдвига обозначение В, чтобы отличить его от символа b в предыдущем абзаце.) В качестве В возьмем наименьший неотрицательный вычет по модулю 26 случайного элемента из F53. Пусть д = 2 (это порождающий элемент в F53). Предположим, что Аида выбрала случайно а = 29 и ей известен открытый ключ Бернардо 2Ь, скажем, 12 G F53. Тогда она находит, что ключом шифрования является 12	= 21 G F53, т.е. В = 21. В то же время она публикует
29
свой открытый ключ 2 =45. Поэтому Бернардо тоже может найти ключ В = 21 возведением 45 в степень Ъ (его секретный показатель Ь = 19). Конечно, система с таким маленьким полем не дает надежной защиты: посторонний может легко найти дискретный логарифм по основанию 2 для 12 или 45 по модулю 53. И уж, во всяком случае, не является надежным шифрование сдвигом для однобуквенных элементов сообщения. Этот пример лишь иллюстрирует механизм данной системы обмена ключами.
Криптосистема Мэсси—Омуры для передачи сообщений. Предположим, что все согласились использовать конечное поле F?; оно зафиксировано и общеизвестно. Каждый пользователь системы втайне выбирает такое случайное целое е между 0 и q — 1, что НОД (е, 9- 1) = 1, ис помощью алгоритма Евклида вычисляет обратное к нему число d = е 1 (mod q - 1), т.е. de = 1 (mod q - 1). Если Алиса (пользователь А) намерена передать сообщение Р Бобу, она сначала посылает ему элемент РеА. Это послание для Боба бессодержательно, так как он не знает dA (или еА, что то же самое) и не может восстановить Р. Не пытаясь понять смысл сообщения, Боб возводит его в сбою степень ев и отсылает РеАвв обратно Алисе. Третий шаг состоит в том, что Алиса несколько «распутывает» сообщение, возводя его в степень dA, так как pdABA = р (по предложению II.1.1), то, по сути дела, она отсылает Бобу Рев, который теперь может прочитать сообщение, возведя его в степень dB.
Весьма простая идея этой системы может быть реализована и в схемах, где используются процедуры, отличные от возведения в степень в конечных полях. Однако не все так просто. Прежде всего, отметим, что при использовании системы Мэсси-Омуры абсолютно необходима хорошая схема подписи сообщений. Без нее любое постороннее лицо С, которому сообщение Р не предназначено, может представиться Бобом и вернуть Алисе сообщение реАес. Алиса, не зная, что оно прислано самозванцем, пользовавшимся своим ключом ес, продолжит процедуру, возведя сообщение в степень dA, дав тем самым С возможность прочитать сообщение. Поэтому промежуточное сообще
§ 3. ДИСКРЕТНОЕ ЛОГАРИФМИРОВАНИЕ	111
ние релев от Боба Алисе должно сопровождаться аутентикацией, т. е. некоторым сообщением в схеме подписи, которое может послать только Боб.
Кроме того, важно, чтобы такие пользователи, как В или С, которые после дешифрования различных сообщений Р будут знать пары (Р, РеА), не могли воспользоваться этим для определения еА. Так, если бы Боб мог решать задачу дискретного логарифмирования в и по Р и РеА определять, каким должно быть еА, то он мог бы легко вычислить dA = еА (mod q — 1) и затем перехватывать и читать все дальнейшие сообщения Алисы, кому бы они ни были адресованы.
Криптосистема Эль-Гамаля. Сначала зафиксируем очень большое конечное поле F9 и элемент д g F^ (желательно, хотя и не обязательно, чтобы он был порождающим). Предположим, что используются элементы открытого текста с численными эквивалентами Р в F?. Каждый пользователь А выбирает случайно целое число а — аА, скажем, из диапазона 0 < а < q — 1. Это секретный ключ дешифрования. Открытым ключом шифрования является элемент да g Fg.
Чтобы передать сообщение Р пользователю А, мы выбираем случайно целое число к и посылаем А следующую пару элементов из F?:
{g\PgakY
Заметим, что вычислить дак можно, не зная а, просто возведя да в степень к. Теперь А, зная а, может по этой паре раскрыть Р, возве-ч,	к
дя первый элемент д в а-ю степень и разделив на результат второй элемент (или, что эквивалентно, возведя дк в степень q — 1 — а и умножив на второй элемент). Другими словами, наше послание состоит из замаскированного сообщения (Р «несет маску» дак') и «ключа», а /с	/
именно, д , которым можно снять маску (но воспользоваться ключом может лишь тот, кто знает а).
Тот, кто умеет решать задачу дискретного логарифмирования в Fg, вскроет эту криптосистему, определив ключ дешифрования а по ключу шифрования да. Вообще говоря, может существовать способ ак к а	,
определения д по д п д , п значит, и вскрытия шифра, не связанный с дискретным логарифмированием. Однако, как уже упоминалось при обсуждении системы Диффи-Хеллмана, считается, что нет способа ак к а
получить д из д и д , не решив, по существу, задачи дискретного логарифмирования.
Стандарт цифровой подписи. В 1991 году Национальный институт стандартов и технологий (НИСТ) при правительстве США
112
ГЛ. IV. ОТКРЫТЫЙ ключ
предложил стандарт цифровой подписи (Digital Signature Standard, сокращенно, DSS). Как ожидается, роль DSS будет аналогична роли принятого много раньше стандарта шифрования данных (DES), т.е. он будет стандартом цифровой подписи для использования как государственными, так и коммерческими организациями. В отличие от DES, который является классической криптосистемой с секретным ключом, при построении цифровой подписи необходимо использовать криптосистему с открытым ключом. НИСТ заложил в основу своей схемы подписи задачу дискретного логарифмирования в простом конечном поле. DSS очень похож на схему подписи, предложенную первоначально Шнорром (см. ссылки ниже). Он похож также на схему подписи Эль-Гамаля (см. упражнение 9 ниже). Теперь расскажем, как работает DSS.
Чтобы получить возможность подписывать сообщения, каждым пользователем (Алисой) осуществляется следующая последовательность действий: 1) выбирается простое число q приблизительно в 160 бит (для этого используются генератор случайных чисел и тест на простоту); 2) выбирается другое простое число р, сравнимое с 1 по модулю q размером приблизительно в 512 бит; 3) выбирается порождающий элемент д единственной циклической подгруппы в Fp порядка q (т. е. вычисляется д = PqP (mod р) для случайного целого р0; если д 1, то он и будет порождающим элементом); 4) выбирается секретный ключ как случайное целое число х из диапазона 0 < х < q. В качестве открытого ключа берется у = дх (mod р).
Пусть Алиса хочет подписать сообщение. Сначала она применяет к своему открытому тексту хеш-функцию (см. § 1) и получает целое число h из диапазона 0 < h < q. Затем она выбирает случайное целое к из того же диапазона и вычисляет дк (mod р). Пусть г — наименьший неотрицательный вычет по модулю q последнего выражения (значит, д сначала вычисляется по модулю р, а результат приводится по меньшему простому модулю q). Наконец, Алиса находит такое целое s, что sk = h + xr (mod q). Пара (r, s') вычетов по модулю д является ее подписью.
Чтобы проверить подпись, получатель Боб вычисляет щ = s h (mod q) и u2 = s r (mod q). Потом он вычисляет pU1 p“2 (mod p). Если результат сравним с г по модулю q, то подпись считается подлинной, /о	ui u2 s_1(/i+rr) к/ j \ \
(Заметим, что д у = д	=9 (mod р).)
Достоинством этой схемы является сравнительно малый размер подписи, состоящей из двух чисел по 160 бит (размер д'). С другой стороны, надежность системы зависит, очевидно, от сложности решения задачи дискретного логарифмирования в большом конечном поле Fp.
3. ДИСКРЕТНОЕ ЛОГАРИФМИРОВАНИЕ
113
Хотя для вскрытия рассмотренной системы достаточно решения этой задачи в меньшей подгруппе, порожденной д, представляется маловероятным, что эта задача намного проще задачи дискретного логарифмирования для всей группы Fp. Таким образом, DSS, по-видимому, имеет очень высокий уровень надежности при небольшом размере подписи и малом времени на вычисления.
Алгоритмы дискретного логарифмирования в конечных полях. Сначала мы рассмотрим случай, когда все простые делители числа q — 1 малы. Такие числа q — 1 будем называть «гладкими». Для них существует быстрый алгоритм вычисления дискретного логарифма по основанию b элемента из Fg. Для простоты будем считать, что Ь является порождающим элементом группы F,. Теперь опишем этот алгоритм, предложенный Силвером, Полигом и Хеллманом.
Сначала для каждого простого р, делящего q — 1, вычисляются корни p-и степени из единицы: rpj = b	при j = 0,1,... ,р — 1.
(Как обычно, при возведении b в большую степень используется метод последовательного возведения в квадрат.) Эта таблица значений {гр Д является основой для вычисления дискретного логарифма любого у G Fg. (Заметим, что при фиксированном Ь эти вычисления производятся лишь один раз, и одна и та же таблица используется при любом у.')
Наша цель — найти такой элемент х, 0 х < q — 1, что Ьх = у. Пусть q — 1 = Пр Р° есть разложение числа q — 1 на простые множители. Достаточно найти х (mod ра} для каждого р, делящего q— 1; после этого х однозначно определяется применением алгоритма из доказательства китайской теоремы об остатках (предложение 1.3.3). Итак, мы зафиксируем простое р, делящее q — 1, и покажем, как найти х (mod ра).
Предположим, что х = х0 + х,р + • + ха_1ра 1 (mod pQ) с О Xi < р. Для того чтобы найти х0, мы вычисляем y^q . Это корень р-й степени из единицы, так как уч~1 = 1. Из равенства у = Ьх следует, что у' = b	= о	= гР1Ео. Сравниваем
(<? — l)/p	Г )
у с {Tp,j!o^j<p и полагаем х0 равным тому значению j, при (<? — 1)/р
котором у	= Гр j.
Далее, чтобы найти Xi, мы заменяем у на у\ = у/Ьх°. Тогда у^ имеет дискретный логарифм х — Xq = х^р + • • • + ха_-[ра 1 (mod pQ). гр	(q~i)/p	-1	(g—i)/p2
Хак как у\ — это p-я степень, то получаем у^ = 1 и у\ = 6(г-хо)(9-1)/р2 = 6(.l + l2p+...)(g-l)/p = 6х1(?-1)/р =	3начиТ5 мы
можем сравнить	с {rpJ} и положить х-[ равным тому J, при
(<?-1)/р2
котором У{ '	= rp j.
114
ГЛ. IV. ОТКРЫТЫЙ КЛЮЧ
Теперь должно быть понятно, как можно продолжить этот процесс, чтобы получить все Xq, х± ,..., xQ_i. А именно, для каждого г = 1,2,..., а — 1 полагаем
у. =
дискретный логарифм этого выражения сравним по модулю ра с тгр! + •• + ха_\р . 1ак как yi является р -и степенью, то у\ =1 И Уг(?“1)/р, + 1 =	+	=	= Поэтому мы
(q-l)/p‘ + 1
полагаем равным тому j, при котором у-	= rpj.
Завершив этот процесс, мы получим х (mod р“). Повторив такие вычисления для каждого p\(q — 1), мы воспользуемся китайской теоремой об остатках и найдем х.
Этот алгоритм хорошо работает, когда все простые делители числа q—1 малы. Очевидно, однако, что для составления таблицы {грj} (q-l)/p'+1	_
и сравнения величин у-	с ее элементами потребуется много
времени, если q—1 имеет большой простой делитель. (Под «большим» понимается число хотя бы в 20 разрядов. Если p\(q — 1) по порядку меньше 10 , то можно использовать комбинацию алгоритма Силвера-Полиса-Хеллмана и алгоритма, использующего метод «больших и малых шагов» Шэнкса; см. с. 9 и с. 575-576 второго тома книги Кнута.)
Пример 4. Найти дискретный логарифм 28 по основанию 2 в F37, используя алгоритм Силвера-Полига-Хеллмана (2 является порождающим элементом в F37).
Решение. Имеем 37 - 1 = 22  З2. Вычисляем 218 = 1 (mod 37) и г2,о = 1, Г2,1 = _1- (При р = 2 всегда {rjj} = {±1}.) Далее, 236/3 = 26 (mod 37), 22'36/3 = 10 (mod 37) и {r3j} = {1,26,10}. Пусть теперь 28 = 2х (mod 37). Сначала возьмем р = 2 и найдем вычет х (mod 4), который запишем как х0 ~1~2х1. Имеем 2836'/2 = 1 (mod 37), и, следовательно, х0 = 0. Далее, 2836?/4 = — 1 (mod 37), и поэтому Xj = 1, т.е. х = 2 (mod 4). Теперь берем р = 3 и находим вычет х (mod 9), который записываем как х0 + 3xi. (Разумеется, для каждого р значения Xi свои.) Чтобы найти ж0, вычисляем 2836'/3 = 26 (mod 37). Таким образом, х0 = 1. Затем вычисляем (28/2)36?/9 = 144 = 10 (mod 37) и получаем х^ = 2. Итак, х = 1 + 2- 3 = 7 (mod 9). Остается найти единственный элемент х (mod 36), при котором х = 2 (mod 4) и х = 7 (mod 9). Это х = 34. Таким образом, 28 = 234 в F37.
Индексный алгоритм дискретного логарифмирования. Читатель может пропустить этот раздел или прочитать его бегло и вер
§ 3. ДИСКРЕТНОЕ ЛОГАРИФМИРОВАНИЕ	115
нуться к нему потом, при работе с § V. 3, поскольку индексный алгоритм вычисления дискретных логарифмов в конечных полях имеет много общего с методом факторных баз для разложения больших целых чисел.
Здесь мы будем предполагать, что q = рп есть весьма большая степень малого простого р и b — порождающий элемент группы F*. Индексный алгоритм для любого у £ F* находит такой вычет х (mod q — 1), что у = b .
Пусть /(X) £ Fp[X] — неприводимый многочлен степени п. Тогда F9 изоморфно кольцу вычетов Fp[X]//(X). Любой элемент Fp[X]//(X) может быть записан (единственным образом) как многочлен а(Х) £ Fp[X] степени не выше п— 1. В частности, основание b = Ь(Х) — тоже многочлен: «константы» являются элементами в Fp С Fg.
Заметим сначала, что b' =	является порождающим
элементом группы Fp (см. упражнение 17 к §11.1). Значит, решение задачи дискретного логарифмирования в F* (по основанию b') дает значения дискретных логарифмов этих констант по основанию Ь. Так как по условию р мало, то таблицу таких дискретных логарифмов легко составить. В важном частном случае р — 2 единственной ненулевой константой является 1, и ее дискретный логарифм по любому основанию равен 0. Далее будем предполагать, что можно легко найти дискретный логарифм любой константы.
До конца этого раздела будем через inda(X) (от слова «index») обозначать дискретный логарифм a(X) £ Ff; по основанию 6(Х). Основание 6(Х) зафиксировано, поэтому оно не вошло в обозначение.
Индексный алгоритм состоит из двух основных этапов. Первый этап мы называем «предварительным», поскольку он не зависит от элемента ?/(Х) g F*, логарифм которого мы хотим вычислить. Этот этап выполняется один раз и его результаты можно многократно использовать при вычислении дискретных логарифмов по фиксированному основанию Ь(Х). (Напомним, что аналогичный предварительный этап имеется и в алгоритме Силвера-Полига-Хеллмана — это составление таблицы {rpj}.)
Сначала выберем подмножество В С Fg, которое будет служить нам «базисом». Обычно В состоит из всех нормированных неприводимых многочленов над Fp степени не выше т, где т < п определяется некоторым оптимальным образом так, чтобы множество В имело подходящий размер h = #(В) промежуточного порядка между р = #(Fp) и q = рп = #(Fg). Предварительный этап состоит в нахождении дискретных логарифмов для всех а(Х) £ В и заключается в следующем.
116
ГЛ. IV. ОТКРЫТЫЙ ключ
Выберем случайное целое t между 1 и q — 2 и вычислим b* £ F?, т.е. вычислим такой многочлен с(Х) £ Fp[X] степени ниже п, что
с(А') = 6(Х)г (mod /(X)).
(При этом используется метод повторного возведения в квадрат с приведением после каждого шага по модулю /(X).) Вынеся за скобки старший коэффициент с0 в с(х), проверяем, можно ли полученный нормированный многочлен представить в виде произведения многочленов а(Х) £ В, т.е. может ли с(Х) быть записан в виде
с(Х) = с0
а£В
Один из способов такой проверки — просмотреть все а(Х) £ В, деля с(Х) последовательно на a(X)Qc,a (где ас а — наибольшая степень а(А'), на которую делится с(Х) в Fp[X]). Если после всех этих делений от многочлена остается лишь константа с0, то с(Х) имеет указанную выше форму. В противном случае все повторяется для нового случайно выбранного целого t. (Другой — иногда более быстрый — способ проверки того, разлагается ли с(Х) в произведение а(Х) £ В, состоит в нахождении всех делителей с(Х) с помощью какого-нибудь алгоритма разложения элементов Fp[X], Например, удобный алгоритм Берлекампа описан в § 4.6.2 второго тома книги Кнута.)
Теперь допустим, что найден элемент с(Х) = b(X)1 (mod /(X)), имеющий разложение искомого типа. Взяв дискретный логарифм от обеих частей этого равенства, получаем
ind с(Х) — ind с0 = ас,а ind a(X), aEB
где равенство должно пониматься как сравнение по модулю q - 1 (так как дискретный логарифм определен только по модулю q — 1). Левая часть этого равенства известна: indc(X) = t, а дискретные логарифмы констант мы считаем известными. Коэффициенты ас,а в правой части также известны. Неизвестными являются h значений inda(X), a(Ar) £ В, в правой части.
Таким образом, мы получили линейное уравнение с h неизвестными в 1/{q — 1)Z. Представим себе, что мы продолжаем выбирать случайные целые t, пока не получим много разных с(Х), разложимых в произведение многочленов а(Х). Как только мы получим h независимых сравнений вида
t - ind со = aCia ind a(X) (mod q - 1)
at В
§ 3. ДИСКРЕТНОЕ ЛОГАРИФМИРОВАНИЕ	117
(здесь «независимость» означает, что определитель матрицы {ас,а} взаимно прост с q - 1), мы сможем решить эту систему относительно неизвестных по модулю q - 1. (Элементы линейной алгебры по mod N = q — 1 изложены в § III.2.) На этом предварительная стадия индексного алгоритма завершается. Она создала большую «базу данных», а именно, значений дискретных логарифмов для всех а(Х) £ В, с помощью которых можно вычислить дискретный логарифм любого элемента, из Fg.
Прежде чем приступить к описанию второй фазы индексного алгоритма, обсудим способ выбора т, который не был конкретизирован при определении В С Fp[X] как множества всех нормированных неприводимых многочленов степени не выше т. Размер h множества В быстро растет с ростом т. Например, при простом т (см. следствие из предложения II.1.8) существует (рт — р)1т нормированных неприводимых многочленов только степени т. Так как необходимо найти не менее h различных с(.¥), которые дадут систему из h линейных сравнений относительно h неизвестных ind а(Х), и эту систему надо будет решать, то желательно, чтобы h (и, значит, т) были не слишком большими. С другой стороны, если т мало, то «типичный» нормированный многочлен с0 1 с(Х) степени не выше п — 1, скорее всего, не разложится в произведение многочленов а(Х) степени не выше т и будет иметь, по крайней мере, один неприводимый множитель степени выше т. Таким образом, при малом т придется слишком долго ждать даже первого появления t, при котором с(Л’) = Ъ{Х)1 (mod /(X)) имеет разложение желаемого вида. Итак, т должно быть, с одной стороны, не слишком мало, а с другой — заметно меньше п. Оптимальный выбор 777, зависящий, разумеется, от р и п, требует глубокого исследования вероятностей и оценок трудоемкости, что выходит за рамки данной книги. Ограничимся примером: при р = 2 и п = 127 наилучшим значением является т = 17 (тогда h = 16510). Величина q = 2 берется часто, так как ^(F^izt) = 2127 - 1 есть простое число Мерсенна.
Теперь вернемся к индексному алгоритму и опишем его заключительный этап. Пусть требуется вычислить дискретный логарифм элемента у(Х') £ Fg и на первом этапе найдены величины inda(X) для всех а(А') £ В. Опять выбираем случайно t между 1 и q — 2 и вычисляем у\ — ybl, т.е. единственный многочлен J/i(X) £ Fp[X] степени ниже п, удовлетворяющий условию j/i(X) = j/(X)6(X)* (mod /(X)). Как и на первом этапе алгоритма, проверяем, разлагается ли 2/i(X) в произведение константы со и степеней многочленов а(Х') £ В. Если это не так, то случайно выбираем новое t и т. д., пока не будет найдено такое целое t, что yi(X') = у0 Паев а(Х)а“. Как только это произойдет,
118
ГЛ. IV. ОТКРЫТЫЙ ключ
цель достигнута, так как по определению у^ выполняются равенства ind у = ind уг — t и ind уА = ind у0 + ^2 аа ind а(Х). Все слагаемые члены в правой части последнего равенства известны. Это завершает описание индексного алгоритма.
Следует заметить, что Д. Копперсмит предложил метод, который в наиболее интересном случае р = 2 значительно ускоряет процесс вычисления дискретного логарифма. Поэтому криптосистемы, использующие дискретное логарифмирование в F^n, считаются ненадежными, если п меньше 1000. Несмотря на это, поля Ег» часто используются ввиду удобства для программирования. Хороший обзор этих вопросов (охватывающий то, что было известно к 1985 году) имеется в статье А. Одлыжко (см. приведенный ниже список литературы).
Если q = рп есть степень нечетного простого числа, имеющая длину к бит, то оказывается, что время решения задачи дискретного логарифмирования в F) сравнимо по порядку со временем работы алгоритмов разложения на множители fc-битового целого числа. Поэтому с эмпирической точки зрения задача дискретного логарифмирования, по-видимому, столь же трудна, как и задача разложения на множители (хотя еще никому не удалось доказать теорему такого рода). Действительно, когда в следующей главе будут рассматриваться алгоритмы разложения на множители, мы увидим, что один из основных методов разложения больших целых чисел поразительно похож на индексный алгоритм дискретного логарифмирования.
Поэтому еще рано судить о том, какие из криптосистем: типа RSA (основанные на сложности разложения целых чисел) или системы дискретного логарифмирования, окажутся более надежными.
УПРАЖНЕНИЯ
Замечание. Упражнения 4, 6, 7 в) и 8 предназначены для читателей, располагающих компьютерами с программами умножения многократной точности. (Необходимы лишь программы для вычисления ab (mod т) для очень больших целых чисел а,Ъ,т. Напомним, что a-1 (mod р) может быть вычислено как a"”2.)
1. Если приходится проводить много вычислений в некотором не очень большом конечном поле Fg, то можно сэкономить время, составив полную «таблицу логарифмов». Для этого выбирается порождающий элемент д в F, и строится таблица пар п, дп для всех п от 1 до q — 1. К двум столбцам этой таблицы присоединяются третий и четвертый столбцы, содержащие все пары a,logff а. Для этого располагаем элементы а из F* в третьем столбце в некотором удобном для нас порядке, а затем просматриваем первые два столбца, и ставим в четвертый столбец рядом с а то значение п, при котором дп = а. Например, для Fg (см. пример 2 в
3. ДИСКРЕТНОЕ ЛОГАРИФМИРОВАНИЕ
119
§11.1) выбираем д как корень	а многочлена X2 — J		V-1 и строим таблицу
п	9п	а	logff“
1	а	1	8
2	а + 1	-1	4
3	—а + 1	а	1
4	-1	а + 1	2
5	—а	а — 1	7
6	—а — 1	—а	5
7	а — 1	— а + 1	3
8	1	—а — 1	6
После этого умножение и деление сводятся к сложению или вычитанию по модулю д — 1 и использованию таблицы. Например, для умножения а — 1 на —а — 1 надо найти эти два числа в третьем столбце, сложить отвечающие им логарифмы: 7 + 6 = 5 (mod 8), и, наконец, найти ответ —а во втором столбце рядом с числом 5 из первого столбца.
а)	Построить таблицу логарифмов для Fjj и воспользоваться ею для вычисления 16  17, 19 • 13, 1/17, 20/23.
б)	Построить таблицу логарифмов для FJ и воспользоваться ею для вычисления следующих элементов (здесь а — корень X3 + X + 1): (а + 1)(а2 + а), (а2 + а + 1)(а2 + 1), 1/(а2 + 1), аЦа2 + а + 1). Ответы должны быть записаны в виде многочленов от а не выше второй степени.
2.	На первый взгляд кажется, что при постановке задачи дискретного логарифмирования вместо F* можно использовать циклическую группу (Z/p“Z)* (см. упражнение 2 а) к § II.1). Однако задача дискретного логарифмирования для Z/p“Z при а > 1 даже при больших а лишь немногим сложнее задачи логарифмирования при а = 1 (т.е. для Fp). Точнее, используя приемы, описанные в этом упражнении, можно доказать, что если мы можем решать задачу дискретного логарифмирования «по модулю р», то для логарифмирования «по модулю р°» остается произвести лишь небольшую дополнительную работу за полиномиальное по logpa = alogp время. (Напомним, что пока нет алгоритма дискретного логарифмирования «по модулю р» при больших р за полиномиальное относительно logp время, и специалисты сомневаются в том, что такой алгоритм существует.) В этом упражнении мы увидим, что при р = 3 существует несложный алгоритм дискретного логарифмирования «по модулю 3“» за полиномиальное по а время.
Итак, возьмем д = 2 (легко показать, что 2 — порождающий элемент (Z/3“Z)* при любом а). Пусть а — некоторое целое не делящееся на 3 число, и нужно решить сравнение 2х = a (mod 3“). Показать, что приводимый ниже алгоритм всегда позволяет найти х за полиномиальное относительно а время, и оценить (в терминах О-большое) необходимое для этого число двоичных операций.
1)	Показать, что эта задача дискретного логарифмирования эквивалентна решению сравнения 2ха = 1. Далее показать, что без потери общности можно считать, что а = 1 (mod 3), а х — четное число. Поэтому исходное сравнение можно заменить сравнением 4ха = 1 (mod 3“).
2)	Запишем х = хо + 3zi +• • •+3Q-2ха-2, где xj — разряды числа х в троичной системе счисления. Возьмем z_i = 0. Тогда сравнение
4«o+3r1+-+V-^]_2a = j (mod
1 ZU
ГЛ. IV. ОТКРЫТЫЙ ключ
выполнено при j = 1. Положим дх = 4. В процессе работы в качестве промежуточных результатов наш алгоритм будет вычислять д^й=431 1 (mod 3“).
Положим а\ = а. При j > 1 определим aj как наименьший положительный вычет по модулю 3“ числа 4®o+3xi+ - +3^ 2х^2а По ходу алгоритма мы будем последовательно вычислять aj.
3)	Пусть j > 1 и уже найдены такие го,..., г;-з> что выполнено сравнение (*) j — 1  Предположим также, что мы уже вычислили gj - х — 43J 2 (mod 3“) и aj . Сначала полагаем равным (1 — aj _i )/3J-1 по модулю 3. (Заметим, что в силу (*);-! имеем aj_i = 1 (mod З-'-1).) Далее вычисляем a; =	(mod 3“).
Наконец, если j < а, вычисляем gj, возводя gj-x в третью степень в кольце вычетов по модулю 3Q.
4)	Если j = а, то алгоритм свою работу заканчивает.
3.	Вы с вашим другом договорились поддерживать связь, используя аффинное преобразование шифрования С = АР 4- В (mod N) (см. примеры 3 и 4 в § III. 1; в этих примерах коэффициенты преобразования обозначались строчными буквами а и Ь). Элементами сообщений являются отдельные буквы 31-буквенного алфавита, в котором А-Z имеют числовые эквиваленты 0-25, пробел = 26, . = 27, ? =28, ! = 29, ’ = 30. Вы рассматриваете ключ Ке = (А, В) как элемент А + Bi поля из 312 элементов (г обозначает корень из —1 в этом поле). Вы также договорились обменяться ключами с помощью системы Диффи-Хеллмана и взять д = 4 + г. Затем вы выбираете случайно секретное целое число а = 209. Ваш друг прислал вам свое значение дь = 1 + 19г.
а)	Определить ключ шифрования.
б)	Какой элемент из Fggi вы должны послать вашему другу для того, чтобы он мог определить этот ключ?
в)	Найти преобразование дешифрования.
г)	Прочитать сообщение «BUVCFIWOUJTZ1H».
4.	Вы получили шифртекст «VHNHDOAM», зашифрованный с помощью матрицы размера (2 х 2)
а Ь\
с d J ’
применяемой к биграммам обычного 26-буквенного алфавита. Эта матрица шифрования была построена с помощью обмена ключами по методу Диффи-Хеллмана следующим образом. Имеется простое поле из 3602561 элементов. Ваш корреспондент послал вам дь = 983776. Вы выбрали случайно показатель а — 1082389. Наконец, вы договорились получать матрицу из ключевого числа Ke € F3602561, выражая наименьший неотрицательный вычет Ке по модулю 264 в форме а-263 + b  262 + с  26 + d, где a,b,c,d — содержимое разрядов в записи вычета в системе счисления по основанию 26. Если полученная таким образом матрица необратима по модулю 26, то заменяем Ке на Ке + 1 и повторяем процесс построения снова. В качестве матрицы шифрования возьмем первую обратимую матрицу, встретившуюся среди построенных.
а)	Воспользоваться имеющейся информацией для определения матрицы шифрования.
б)	Найти матрицу дешифрования и прочитать сообщение.
5.	Пусть каждый пользователь А имеет секретную пару преобразований /4 и /д 1 из Р в Р, где Р — заданное множество элементов открытого текста. Для защиты информации используется метод Мэсси-Омуры, а именно, пользователь
§ 3. ДИСКРЕТНОЕ ЛОГАРИФМИРОВАНИЕ
121
А посылает пользователю В сообщение	получает от В назад /в(/а(РУ)
и т. д. Указать условия на совокупность /4, необходимые для работоспособности этой системы.
6.	Пусть р — простое число Ферма 65537 и д = 5. Вы приняли сообщение (29095, 23846), которое построено с помощью криптосистемы Эль-Гамаля в F* и вашего открытого ключа да. Ваш секретный ключ для дешифрования а = 13908. Вы договорились преобразовывать целые из Fp в триграммы 31-буквенного алфавита из упражнения 3, записывая их в системе счисления по основанию 31 и принимая содержимое разрядов в этой записи (от старшего разряда к младшему) в качестве числовых эквивалентов букв триграммы. Дешифровать принятое сообщение.
7.	а) Показать, что выбор Fp с простым числом Ферма р = 22 +1 является исключительно неудачным, построив алгоритм, производящий дискретное логарифмирование в F* за полиномиальное по log р время. Пусть д — порождающий элемент (например, 5 или 7, как показано в упражнении 15 к § II. 2) и для заданного а требуется найти такое г, что 0 г < р — 1= 22* и дх = a (mod р). Записать х в двоичной системе и построить алгоритм по образцу алгоритма извлечения квадратного корня по модулю р, описанному в конце § II. 2.
б)	Найти оценку вида О-большое (в терминах р) для числа двоичных операций, необходимых для нахождения х с помощью алгоритма пункта а).
в)	Использовать алгоритм пункта а) для нахождения величины к в упражнении 6.
8.	Пусть элементами открытого текста являются 18-буквенные блоки обычного 26-буквенного алфавита, числовыми эквивалентами которых являются 18-разрядные -- в системе счисления по основанию 26 — целые числа (разряды записываются в порядке убывания степеней основания). Получено сообщение
(82746592004375034872957717, 164063768437915425954819351),
зашифрованное с помощью криптосистемы Эль-Гамаля в простом поле из 297262705009139006771611927 элементов и вашего открытого ключа да. Ваш секретный ключ а = 10384756843984756438549809. Дешифровать полученное сообщение.
9.	Ниже описана схема (также предложенная Эль-Гамалем) посылки подписи, использующая большое простое конечное поле Fp. Объяснить, почему Алиса может выполнить все необходимые для пересылки подписи шаги за полиномиальное по logp время, почему Боб может проверить, что это именно Алиса послала свою подпись, и почему эта система не дает защиты от злоумышленника, если он может решать задачу дискретного логарифмирования в F*.
Пусть зафиксированы и общеизвестны р и элемент д 6 F*. Каждый пользователь А выбирает случайно и сохраняет в секрете целое ад,0 < а л < р — 1, a публикует J/.4 = даА .
Для посылки своей подписи, состоящей из элементов с числовыми эквивалентами S из диапазона 0 S < р— 1, Алиса сначала выбирает случайно целое число к, взаимно простое с р — 1. Она вычисляет г = дк (mod р) и после этого решает сравнение gs = y\rx (mod р) относительно х. Затем она посылает пару (г, х) Бобу вместе со своей подписью S. Борис проверяет, что в самом деле gs = yTArx (mod р). Убедившись в этом, он может быть вполне уверен, что именно Алиса прислала сообщение S.
LZ~Z
ГЛ. IV. ОТКРЫТЫЙ ключ
10.	Используя алгоритм Силвера Полига -Хеллмана, найти дискретный логарифм числа 153 по основанию 2 в F‘gl (2 — порождающий элемент в F*gl).
11.	а) Какова вероятность (в процентах) того, что случайный многочлен над F2 степени 10 разлагается в произведение многочленов степени не выше второй? Какова вероятность (в процентах) того, что случайный ненулевой многочлен над F2 степени не выше 10 разлагается в такое произведение?
б) Какова вероятность того, что случайный нормированный многочлен над F3 десятой степени разлагается в произведение многочленов степени не выше второй? Какова вероятность того, что случайный нормированный многочлен над F3 степени не выше 10 разлагается в такое произведение?
12.	При п > т р 1 обозначим Рр(п,т) вероятность того, что случайный нормированный многочлен над Fp степени не выше п является произведением неприводимых сомножителей степени не выше т.
а)	Доказать, что при любых фиксированных п и т существует Р(п, т) = limp-,00 Рр(п, т) и 0 < F(n, т) < 1.
б)	Найти точное выражение для Р(тг,2).
в)	Вычислить Р(п, 2) при всех п Т 7.
ЛИТЕРАТУРА к §3 ГЛАВЫ IV
1.	Adleman L. М. A subexponential algorithm for the discrete logarithm problem with applications to cryptography. — In: Proceedings of the 20th Annual Symposium on the Foundations of Computer Science, 1979, p. 55-60.
2.	Adleman L. M., DeMarrais J. A subexponential algorithm for discrete logarithms over all finite fields. — Math. Comput., 1993, v. 61, p. 1-15.
3.	Coppersmith D. Fast evaluation of logarithms in fields of characteristic two. — IEEE Trans. Inform. Theory IT-30, 1984, p. 587-594.
4.	Coppersmith D., Odlyzko A., Schroeppel R. Discrete logarithms in GF(p). — Algorithmica, 1986, v. 1, p. 1-15.
5.	Dzffie. W., Hellman At. E. New directions in cryptography. — IEEE Trans. Inform. Theory IT-22, 1976, p. 644-654.
6.	ElGamal T. A public key cryptosystem and a signature scheme based on discrete logarithms. — IEEE Trans. Inform. Theory IT-31, 1985, p. 469-472.
7.	ElGamal T. A subexponential-time algorithm for computing discrete logarithms over GFlj?). — IEEE Trans. Inform. Theory IT-31, 1985, p. 473-481.
8.	Fellows M., Koblitz N. Fixed-parameter complexity and cryptography. — In: Proceedings of the Tenth International Symposium on Applied Algebra, Algebraic Algorithms and Error Correcting Codes (San Juan, Puerto Rico), 1993.
9.	Gordon D. Discrete logarithms in GF(p) using the number field sieve. — SIAM J. Discrete Math., 1993, v. 6, p. 124-138.
10.	Gordon D., McCurley K. Massively parallel computation of discrete logarithms. — Advances in Cryptology — Crypto ’92. Berlin etc.: Springer, 1992.
11.	Knuth D. E. The Art of Computer Programming. V. II. Reading etc.: Addison-Wesley, 1973.
12.	LaMacchia B., Odlyzko A. Computation of discrete logarithms in prime fields. — Designs, Codes and Cryptography, 1991, v. 1, p. 47-62.
§ 4. ЗАДАЧА О РЮКЗАКЕ
123
13.	Massey J. L. Logarithms in finite cyclic groups — cryptographic issues. — In: Proceedings of the 4th Benelux Symposium on Information Theory, 1983, p. 17-25.
14.	McCurley K. The discrete logarithm problem. — Crypt. Comput. Number Theory, Proc. Symp. Appl. Math., 1990, v. 42, p. 49-74.
15.	Odlyzko A.M. Discrete logarithms in finite fields and their cryptographic significance. — In: Advances in Cryptology. Proceedings of Eurocrypt 84. Heidelberg etc.: Springer, 1985, p. 224-314.
16.	Wah P. K. S., Wang M. Z. Realization and application of the Massey-Omura lock. — In: Proceedings of the International Ziirich Seminar, 1984, p. 175-182.
§ 4. Задача о рюкзаке
В этом разделе мы опишем иной тип криптосистем с открытым ключом, использующих так называемую «задачу о рюкзаке». Представьте себе, что у вас есть большой рюкзак объема V, с которым вы собираетесь идти в долгий поход по диким местам. Имеется большое число предметов (скажем, их к штук) объемов vt, i = 0,..., к - 1, соответственно, которые можно положить в рюкзак. Предположим, что вы опытный упаковщик рюкзаков и можете заполнить его, не оставляя свободного места. Чтобы взять максимально возможный груз, вам надо определить совокупность предметов, которая полностью заполнит рюкзак. Другими словами, требуется найти такое подмножество /С {1,. .., к}, что Vi = V, если оно существует. Это общая задача, о рюкзаке. Далее мы предполагаем, что V и все Vi являются натуральными числами. Тогда задача может быть поставлена в следующей форме.
Задача о рюкзаке. Пусть заданы множество {г,;} из к натуральных чисел и целое число V. Требуется найти такое ^-разрядное двоичное число п = (£/c_1E/c_2 ...£160)2 (где £j g {0,1} суть значения разрядов в двоичной записи числа и), что £iVi = V, если такое п существует.
Заметим, что, в зависимости от значений набора {д;} и числа V, такого решения может не быть вообще, решений может быть несколько или решение будет единственным.
Частным случаем задачи о рюкзаке является задача о рюкзаке с быстрорастущим набором. Это случай, когда величины д,-, будучи упорядоченными в порядке возрастания, обладают тем свойством, что каждое число больше суммы всех предыдущих.
Пример 1. Набор {2,3,7,15,31} является быстрорастущим набором.
Известно, что общая задача о рюкзаке относится к классу очень
124
ГЛ. IV. ОТКРЫТЫЙ КЛЮЧ
трудных задач, называемых «NP-полными задачами». Это означает, что она эквивалентна по сложности известной «задаче о коммивояжере». В частности, если верна основная гипотеза теории сложности, в чем уверено большинство специалистов, то не существует алгоритма, который бы решал произвольную задачу о рюкзаке за время, полиномиальное по А? и по log В, где В — граница для значений V и д,-.
Однако задача о рюкзаке с быстрорастущим набором несравненно проще. А именно, просмотрим (упорядоченный по убыванию) список Vj, начиная с наибольшего, до тех пор, пока не найдем первый элемент, который не превосходит V. Соответствующее значение i мы включим в наше множество I (т.е. положим £; = 1), заменим V на V — д, и продолжим простмотр списка д, по убыванию, пока опять не найдем элемент, не превосходящий эту разность. Продолжая действовать таким способом, мы, очевидно, построим подмножество элементов д^, в сумме равных V, или же исчерпаем все элементы Д;, не доведя разность V — Vi до нуля, что будет в случае, когда задача не имеет решения. Теперь мы запишем алгоритм решения в более формальном виде, удобном для преобразования в компьютерную программу.
Следующий алгоритм (полиномиальной сложности) решает задачу о рюкзаке при заданном быстрорастущем наборе {д;} и целом V.
1.	Положим W равным V и j равным к.
2.	Начиная с Ej-i и последовательно уменьшая j, полагаем все Sj = 0 до тех пор, пока не придем к первому такому значению г (обозначаем его через г0), что дго W. Положим £,0 = 1.
3.	Заменим W на W - д,0, положим j — io и, если W > 0, то переходим к шагу 2.
4.	Если VE = 0, то цель достигнута. Если W > 0 и все оставшиеся г, больше W, то ясно, что решения п = (еь-1 •  - £0)2 нашей задачи не существует. Заметим, что решение, если оно есть, единственно.
Пример 2. Пусть д, те же, что в примере 1, а V = 24. Тогда, проходя пятерку {2,3,7,15,31} справа налево, мы видим, что £4 = О, £3 = 1 (в этот момент мы заменяем 24 на 24 - 15 = 9), £2 = 1 (в этот момент мы заменяем 9 на 9 — 7 = 2), £j = 0, £о = 1. Таким образом, п = (01101)2 = 13.
Теперь мы опишем, как построить рюкзачную криптосистему (называемую также системой Меркля-Хеллмана). Сначала предположим, что элементы открытого текста имеют в качестве своих числовых эквивалентов А:-разрядные двоичные числа Р. Например, если мы имеем дело с отдельными буквами 26-буквенного алфавита, то каждой букве естественным образом ставится в соответствие свое пятиразрядное двоичное число от 0 = (00000)2 до 25 = (11001)2-
Далее каждый пользователь выбирает быстрорастущий набор
§ 4. ЗАДАЧА О РЮКЗАКЕ
125
{«о,..., ffc-i}, целое число т, большее v0 + ••• + w/c-i, и взаимно простое с т целое число а, 0 < а < т. Это делается с помощью случайной процедуры. Например, мы можем выбрать произвольно последовательность из к + 1 положительных целых чисел z0,...,zk, меньших некоторого подходящего предела, положить v0 = z0, Vj = zt +	+ ^_2 +  •  + v0 для i = 1,. .., к - 1 и т = zk + 5ш=о г>г.
Затем мы можем выбрать случайно положительное а0 < т и выбрать а как наименьшее целое, большее или равное До, которое взаимно просто с т. После этого вычисляются b = a (modm) (т.е. Ь является наименьшим положительным целым, удовлетворяющим условию ab = 1 (mod m)) и fc-элементный набор {wj, определяемый равенствами Wj = avi (mod m) (т.е. w; является наименьшим положительным вычетом avi по модулю т). Пользователь держит числа v±, т, а и Ь в секрете, а набор {wj делает общеизвестным. Таким образом, ключом шифрования является набор {w0,.. ., wk_^}, а ключом дешифрования К — пара (£>,т) (которая вместе с ключом шифрования позволяет определить набор {г>0,..., vk_^}).
Желающий передать сообщение Р — (£к_-[,..., £}, £q) пользователю с ключом шифрования {w;} вычисляет С = /(Р) = X^i=0 £iWi и передает это целое число.
Чтобы прочитать это сообщение, пользователь сначала находит наименьший положительный вычет V числа ЬС по модулю т. Так как ЪС = ^Sibwi = ^2 £ivi (mod т) (поскольку bwi = bav, = Vi (mod m)), то V = ^£гУг. (Здесь мы воспользовались тем фактом, что каждое из условий V < т и	52 Ч < т превращает сравнение по
модулю т в равенство.) Теперь можно воспользоваться приведенным выше алгоритмом для задачи о рюкзаке с быстрорастущим набором и найти единственное решение (£fc_j .. .£0)2 = Р задачи о подмножестве {г>,} с суммой, равной V. Так мы восстанавливаем сообщение Р.
Заметим, что злоумышленнику, знающему только набор {wj, придется решать задачу о рюкзаке С = Yl£iwi Уже не с быстрорастущим набором, поскольку свойство быстрого роста {г>;} разрушается умножением на а и приведением по модулю т. Поэтому приведенный выше алгоритм уже нельзя использовать, и возникающая перед злоумышленником задача кажется значительно более сложной. Мы вернемся к этому позднее.
Пример 3. Предположим, что элементами открытого текста являются буквы 26-буквенного алфавита, которым, как и выше, отвечают двоичные числа от 0 = (00000)2 до 25 = (11001)2, а наш секретный ключ дешифрования — это быстрорастущий набор из примера 1. Выберем т — 61, а = 17. Тогда b = 18 и ключ шифрования — это
126
ГЛ. IV. ОТКРЫТЫЙ КЛЮЧ
набор (34, 51, 58, 11, 39). Чтобы послать сообщение «WHY», наш корреспондент должен вычислить «W»= (10110)2 ьн- 51 + 58 + 39 = 148, «Н»= (00111)2 34 + 51 + 58 = 143, «У»= (11000)2 11 + 39 = 50. Чтобы прочитать сообщение 148, 143, 50, мы сначала умножаем эти числа на 18 и приводим результаты по модулю 61; получаем 41, 12, 46. Далее, взяв поочередно V = 41, V = 12 и V — 46 и проведя такие же рассуждения, как в примере 2, мы восстановим сообщение (10110)2, (001’11)2, (И000)2.
Конечно, использование однобуквенных элементов открытого текста со столь малым к = 5 не обеспечивает надежной защиты. Пример 3 призван лишь проиллюстрировать механизм системы.
Одно время многие специалисты очень оптимистично оценивали возможности рюкзачных криптосистем. Раз задача раскрытия системы принадлежит классу очень трудных задач (NP-полные задачи), то, считали они, система должна быть надежной.
Однако в этих рассуждениях крылась ошибка. Порождаемые такими системами задачи о рюкзаке С =	хотя и не соответству-
ют быстрорастущим наборам, но имеют весьма специфический тип, а именно, получаются из задач с быстрорастущим набором простым преобразованием: умножением всех величин на а и приведением по модулю т. В 1982 году Шамир нашел полиномиальный по к алгоритм решения задач о рюкзаке такого типа. Поэтому исходная криптосистема Меркля-Хеллмана. не может считаться надежной криптосистемой с открытым ключом.
Одним из способов защиты от алгоритма Шамира может быть некоторое усложнение рюкзачной системы последовательностью преобразований вида х и-> ах (mod m). Например, можно просто применить два преобразования с параметрами	и (а2,т2) соот-
ветственно. Мы сначала, заменяем нашу быстрорастущую последовательность {т,} на {н;г}, где w, — наименьший положительный вычет (mod mJ, а. затем получаем третью последовательность {д,}, взяв наименьшие положительные вычеты щ = а2и\ (mod m2). Здесь мы выбираем т15 т2 и ах, а2 случайно так, чтобы они удовлетворяли условиям тг > Vi, т2 > кггц и НОД (a^mt) = НОД (a2,m2) = 1. Тогда открытым ключом будет набор величин и,, а шифрующей функцией — функция С = /(Р) = EiUi, где Р = (ek--i •£0)2- При дешифровании шифртекста используется ключ К = (b1,mi,b2,m2) (где Ьг — a/' (mod mJ и b2 — a21 (mod m2)). Сначала вычисляется наименьший положительный вычет Ь2С по модулю т2, затем результат домножается на bi и приводится по модулю mi. Так как b2C =	(mod m2) и m2 > kmi > то результат приведе-
§ 4. ЗАДАЧА О РЮКЗАКЕ
127
ния 62С по модулю т2 совпадает с	Потом, когда мы берем
b1'^P,£iwi (mod TTii), получаем	откуда можно определить еь
используя приведенный выше алгоритм для задачи о рюкзаке с быстрорастущим набором.
В настоящее время еще не найден полиномиальный алгоритм решения итерированной задачи о рюкзаке (т.е. криптосистемы с открытым ключом, описанной в предыдущем абзаце). Однако Брикелю с соавторами удалось обобщить алгоритм Шамира и показать, что к итерированной рюкзачной криптосистеме применимы эффективные методы криптоанализа. Во всяком случае, после достижения Шамира большинство экспертов потеряло доверие к стойкости криптосистем с открытым ключом данного типа.
Одна до сих пор не вскрытая рюкзачная система. Теперь опишем метод передачи сообщений, основанный на однонаправленной функции рюкзачного типа, который использует многочлены над конечным полем. Эту криптосистему предложили Чор и Райвест; мы изложим слегка упрощенный (и менее эффективный) вариант их конструкции.
Опять предположим, что Алиса хочет принимать сообщения в форме наборов из к битов Ео, • • •, £fc-i • (Число к Алиса выбирает так, чтобы выполнялись указанные ниже условия.) Как и раньше, ее открытым ключом является последовательность натуральных чисел До,..., 1:^-1, построенная описываемым ниже способом. Но теперь Боб должен посылать ей не только целое число с = ^2£jvj> но и сумму разрядов с = ^2£j-
Алиса строит последовательность Vj следующим образом. Выбор всех параметров, которые упоминаются в этом абзаце, можно делать секретным образом, так как Бобу для посылки сообщения необходим лишь итоговый набор п0, • • •, Сначала Алиса выбирает такую степень простого q =	, что q — 1 не имеет больших простых дели-
телей (в этом случае возможно практическое вычисление логарифмов в группе F,, см. §3), причем как р, так и f имеют умеренные значения (например, записываются двумя или тремя десятичными разрядами). Так, в работе Чора и Райвеста 1988 г. рассматривалась величина q = 19724. Далее Алиса выбирает нормированный неразложимый многочлен F(X) G Fp[X'] степени /, так что Fg может рассматриваться как Fp[JV]/f [X]. Она выбирает также образующий элемент g в F* и целое число z. Алиса производит выбор F, g и z каким-нибудь случайным образом.
Пусть t € Fg = Fp[X]/F(X) обозначает класс вычетов, содержащий X. Алиса выбирает в качестве к любое целое число, меньшее р и
128
ГЛ. IV. ОТКРЫТЫЙ КЛЮЧ
f одновременно. Для j — 0,..., к — 1 она вычисляет такие неотрицательные целые bj < q—1, что gb> = t + j (согласно предположению, Алиса может легко вычислять дискретные логарифмы в Fj). Наконец, Алиса выбирает случайно перестановку 7Г элементов множества {О,..., к — 1} и полагает Vj равным наименьшему неотрицательному вычету + z по модулю q — 1. Она объявляет (н0,.. ., vk_y) своим открытым ключом.
Расшифрование происходит следующим образом. Получив от Бо-
-	/	*	с—ZC1
ба с и с , Алиса сначала, вычисляет элемент д , который единствен-ным образом представляется в виде многочлена G(A’) € Fp[X] степени ниже f. Но она знает, что этот элемент равен также	=
П(^ + 7Г(Д)£) > что соответствует многочлену П(-^ + 7r(j))£j • Поскольку многочлены G(A”) и П(Х +7r(J))e-' имеют степень ниже f и представляют собой один и тот же элемент по модулю F(A), должно выполняться равенство
С(Х) = П^ + 7Г«Л-
Теперь Алиса может найти величины Ej, разлагая G(A’) на множители (для чего имеется эффективный алгоритм; см. второй том книги Кнута).
УПРАЖНЕНИЯ
1.	Для каждого из приводимых вариантов наборов и «объемов» определить, является ли набор быстрорастущим, имеет ли задача о рюкзаке решение и, если имеет, то сколько:
а) {2,3,7,20,35,69}, V - 45; б) {1,2,5,9,20,49}, V = 73;
в) {1, 3, 7, 12, 22,45}, V - 67; г) {2, 3, 6, 11, 21, 40}, V = 39;
д) {4, 5, 10, 30, 50, 101}, V = 186; е) {3, 5, 8,15, 28, 60}, V = 43.
2.	а) Показать, что быстрорастущая последовательность с наименьшими членами — это последовательность 1, 2, 4, 8,.. . , 21,. ..
б)	Показать, что задача о рюкзаке с этим быстрорастущим набором всегда имеет решение п, а именно, п = V, и что не существует других быстрорастущих наборов, при которых задача всегда имеет решение.
3.	Показать, что всякая последовательность натуральных чисел {и,} со свойством гч+1	2в, при всех г является быстрорастущей.
4.	Предположим, что элементами открытого текста являются буквы 26-буквен-ного алфавита А-Z, которым отвечают числа от 0 до 25. Вы принимаете последовательность элементов шифртекста 14, 25, 89, 3, 65, 24, 3, 49, 89, 24, 41, 25, 68, 41, 71. Открытым ключом является последовательность {57, 14, 3, 24, 8}, а секретным ключом — пара b = 23, т -- 61.
а)	Попробуйте дешифровать сообщение, не пользуясь ключом дешифрования; проверьте результат, используя ключ дешифрирования и алгоритм решения задач о рюкзаке с быстрорастущим набором.
б)	Использовать открытый ключ для посылки сообщения «TENFOUR».
§ 4. ЗАДАЧА О РЮКЗАКЕ
129
5. Предположим, что элементами открытого текста являются тройки букв 32-буквенного алфавита, где буквам А-Z отвечают числа 0-25, пробел = 26, ? = 27, ! = 28, . = 29, ’= 30, $ = 31. Вы получили последовательность элементов шифртекста 152472, 116116, 68546, 165420, 168261. Открытым ключом является набор {24038, 29756, 34172, 34286, 38334, 1824, 18255, 19723, 143, 17146, 35366, 11204, 32395, 12958, 6479}, а секретным ключом — пара Ь = 30966, т = 47107. Расшифруйте сообщение.
6. Предположим, что элементами открытого текста являются биграммы букв 32-буквенного алфавита из примера 5. Вы получили последовательность элементов шифртекста 33219, 7067, 18127, 43099, 37953, которые зашифрованы с помощью двухступенчатого рюкзачного ключа {23161, 6726, 4326, 16848, 21805, 11073, 120, 15708, 2608, 341}. Секретный ключ: 6| = 533, mi = 2617, 62 = 10175, m2 = 27103. Расшифруйте сообщение.
ЛИТЕРАТУРА к §4 ГЛАВЫ IV
1.	Brickell Е. Breaking iterated knapsacks. — In: Advances in Cryptology. Crypto’84. Heidelberg etc.: Springer, 1985, p. 342-358.
2.	Brickell E., Odlyzko A. Cryptanalysis: A survey of recent results. — Proc. IEEE, 1988, v. 76, p. 578-593.
3.	Chor B., Rivest R. A knapsack-type public key cryptosystem based on arithmetic in finite fields. — In: Advances in Cryptology. Crypto’84. Heidelberg etc.: Springer, 1985, p. 54-65; revised version in IEEE Trans. Inform. Theory IT-34, 1988, p. 901-909.
4.	Garey M. R., Johnson D. S. Computers and Intractability: A Guide to the Theory of NP-Completeness. San-Francisco: W. H. Freeman, 1979. (Русск. ne-рев. — l opu'.I.. Джонсон Д. С. Вычислительные машины и труднорешаемые задачи. М.: Мир, 1982.)
5.	Goodman R. М. F., McAuley A. J. A new trapdoor knapsack public key cryptosystem. — In: Advances in Cryptology. Proceedings of Eurocrypt 84. Heidelberg etc.: Springer, 1985, p. 150-158.
6.	Hellman M. E. The mathematics of public-key cryptology. — Sci. American, 1979, v. 241, p. 146-157.
7.	Hellman M. E., Merkle R. C. Hiding information and signatures in trapdoor knapsack. — IEEE Trans. Inform. Theory IT-24, 1978, p. 525-530.
8.	Odlyzko A. The rise and fall of knapsack cryptosystems. — Crypt. Comput. Number Theory, Proc. Symp. Appl. Math., 1990, v. 42, p. 75-88.
9.	Schnorr C. Efficient identification and signatures for smart cards. — In: Advances in Cryptology. Crypto ’89. Heidelberg etc.: Springer, 1990, p. 239-251.
10.	Shamir A. A polynomial time algorithm for breaking the basic Mercle-Hellman cryptosystem. — In: Proceedings of the 23rd Annual Symposium on the Foundations of Computer Science, 1982, p. 145-152.
11.	van Oorschot P. A comparison of practical public-key cryptosystems based on integer factorisation and discrete logarithms. — In: Contemporary Cryptology: The Science of Information Integrity./Ed. by G. Simmons. Piscataway: IEEE Press, 1992, p. 289-322.
130
ГЛ. IV. ОТКРЫТЫЙ ключ
§ 5. Протоколы с нулевым разглашением и скрытая передача
«Нулевое разглашение» — это название криптографического понятия, введенного в начале восьмидесятых годов в связи со следующей задачей. Пусть кто-либо желает убедить кого-то в том, что он умеет делать нечто, например, решать некоторое уравнение, доказывать теорему или разгадывать головоломку, не передавая при этом никакой информации о способе решения. Возможно ли это? Как можно убедить кого-либо в том, что вы имеете некоторое решение, не демонстрируя его? Удивительно, но во многих ситуациях это вполне возможно.
«Доказывающая», которую мы назовем Пикара, знает решение. «Проверяющий», которого мы назовем Вивалес, — это тот, кого нужно убедить в том, что Пикара знает решение, не дав ему при этом даже смутного представления о том, в чем состоит это решение.
В этом разделе мы сначала приведем простой и наглядный пример интерактивного (т. е. в режиме двусторонней связи между Пи-карой и Вивалесом) доказательства с нулевым разглашением. Этот пример связан с раскрашиванием карты и не имеет отношения к теории чисел. Затем мы рассмотрим другой пример: как доказать, что вы нашли дискретный логарифм, никак не помогая проверяющему найти его значение. Далее мы обсудим понятие «скрытой передачи», с помощью которого можно строить неинтерактивные доказательства с нулевым разглашением. Наконец, мы используем скрытую передачу для доказательства знания разложения на простые множители с нулевым разглашением.
Раскраска карты. Рассмотрим первый пример. В настоящее время уже известно, что любую плоскую карту можно раскрасить четырьмя цветами. Некоторые карты можно раскрасить тремя цветами, а некоторые нет. Предположим, что Пикара имеет сложную карту, которую после долгих усилий она научилась раскрашивать только тремя цветами (г — красный, Ь — голубой, д — зеленый). Как ей убедить Вивалеса в том, что она умеет делать это, не давая ему намека, облегчающего ему поиск раскраски?
Сначала мы переформулируем задачу на языке теории графов.
Определение. Графом называется пара, состоящая из множества V, элементы которого называются «вершинами», и некоторого подмножества Е множества всех (неупорядоченных) пар элементов множества V. Элементы Е называются «ребрами». «Ребро» е = {д, v}, где и, v Е V, можно изображать линией, соединяющей вершины и И V.
Определение. Говорят, что граф можно раскрасить в цвета г, Ь,д, если существует такая функция /: V —> {г, Ь,д}, что {u, и} Е
§ 5. ПРОТОКОЛЫ С НУЛЕВЫМ РАЗГЛАШЕНИЕМ
131
Е => f(u) y(v), т.е. никакое ребро не соединяет вершины одного и того же цвета.
Задача о трех красках состоит в определении того, можно ли данный граф раскрасить тремя цветами г,Ь,д.
Чтобы переформулировать задачу о раскрашивании карты в задачу о раскрашивании графа, следует просто взять в качестве V множество стран (изображая их теперь точками) и «соединять» две страны ребром в том и только том случае, если они имеют общую границу.
Задача о трех красках имеет два приятных свойства, делающих ее удобной для обсуждения многих вопросов: 1) она наглядна; 2) это NP-полная задача (по поводу этого понятия см. §4). Из свойства NP-полноты следует, что верификацию с нулевым разглашением любой NP-задачи можно свести к верификации с нулевым разглашением задачи о раскрашиваемости в три цвета.
Однако это не означает, что после построения верификации с нулевым разглашением некоторой NP-полной задачи Pj (скажем, раскрашиваемости в три цвета), ничего не стоит построить верификацию с нулевым разглашением для другой NP-полной задачи Р2. Напротив, в процессе сведения задачи Р2 к задаче Pj обычно значительно увеличивается размер входных данных. Поэтому более эффективной процедурой, скорее всего, будет прямая верификация с нулевым разглашением задачи Р2, нежели сведение Р2 к Рг с последующей верификацией с нулевым разглашением Plt Так, ниже мы приведем непосредственное доказательство с нулевым разглашением для возможности дискретного логарифмирования. Было бы в высшей степени неэффективно строить такое доказательство сведением задачи дискретного логарифмирования к задаче о трех красках для некоторого графа.
Доказательство с нулевым разглашением для задачи о трех красках. Предположим, что Пикара имеет некоторый граф. Мы будем представлять его вершины в виде маленьких цветных лампочек, помещенных внутри шариков, соединенных между собой трубками, изображающими ребра. Лампочки могут испускать красный, голубой или зеленый свет. У Пикары есть: 1) устройство А, позволяющее переключить любую вершину на любой из трех цветов, 2) устройство В, позволяющее нажатием одной кнопки совершить случайную перестановку на множестве цветов и переключение всех вершин в соответствии с этой перестановкой. Например, если устройство В выбрало транспозицию красного и голубого цветов, то все вершины, светившие голубым светом, переключаются на красный, все вершины, светившие красным, переключаются на голубой свет, а вершины, светившие зеленым светом, сохраняют его. Вивалес не управляет устрой
132
ГЛ. IV. ОТКРЫТЫЙ ключ
ством В и даже не знает, какая перестановка произошла.
Предположим далее, что поверхность шариков не позволяет увидеть свет лампочек снаружи. Однако, если проникнуть внутрь трубки, соединяющей две вершины, то будут видны огни находящихся в этих вершинах лампочек (и только они).
Пусть Пикара знает раскрашивание в три цвета и использует устройство А для установки соответствующих цветов в вершинах. Вот процедура, призванная убедить Вивалеса в том, что Пикара действительно знает такое раскрашивание.
1.	Вивалес может заглянуть в любую трубку и увидеть цвета вершин на ее концах. Убедившись, что эти цвета различны, он получит определенное подтверждение того, что Пикара действительно знает правильную раскраску (напомним, что «правильной» является раскраска, при которой смежные вершины имеют разные цвета).
2.	Далее Пикара нажимает кнопку устройства В и переставляет цвета.
3.	Вивалес снова заглядывает в одну из трубок.
4.	Пикара и Вивалес поочередно повторяют шаги 2 и 3 до тех пор, пока Вивалес не проверит все трубки (или, по его желанию, пока он не проверит все трубки несколько раз — он может подозревать, что Пикара мошенничает при переключении лампочек в вершинах ранее проверенных ребер).
При недолгом размышлении становятся понятными следующие две вещи. 1) Если бы Пикара не знала правильного раскрашивания в три цвета, то она не смогла дурачить Вивалеса — рано или поздно с помощью шага 3 он обнаружил бы пару смежных вершин одного цвета. 2) Благодаря случайному переключению цветов Вивалес ничего не узнает о реальной раскраске, он лишь убедится в том, что она Пикаре удалась. Если он тоже хочет решить задачу о трех красках для данного графа, то после описанной процедуры эта задача останется для него столь же трудной, как и до того.
Чтобы доказать, что Вивалес ничего не узнал о раскрашивании, приведем следующее рассуждение. Пусть некоторое третье лицо, скажем, Клайд, не знает, как раскрасить граф тремя красками, но зато знает заранее, в какую трубку заглянет Вивалес. Тогда Клайд, зажигая на концах этого ребра лампочки разного цвета, может добиться в точности того же эффекта, что и Пикара. Таким образом, информация, которую Вивалес получает от Клайда, неотличима от той, которую ой мог бы получить от Пикары. Но Клайд едва ли может сообщить ему что-нибудь полезное о раскрашивании, так как сам ничего об этом не знает. Говорят, что Клайд «имитирует» действия Пикары. Этот прием имитации является стандартным способом до
§ 5. ПРОТОКОЛЫ С НУЛЕВЫМ РАЗГЛАШЕНИЕМ
133
казательства того, что данный протокол является доказательством с нулевым разглашением.
Доказательство знания одного дискретного логарифма с нулевым разглашением. Как и в § 3, предположим, что G — конечная группа (относительно умножения) из N элементов, b — фиксированный элемент Gay — элемент G, для которого Пикара вычислила дискретный логарифм по основанию 6, т.е. решила уравнение Ьх = у относительно положительного целого х. Ей надо доказать Вивалесу, что она знает это решение, не давая никакой зацепки для определения этого решения. Сначала предположим, что Вивалесу известен порядок N рассматриваемой группы. Вот последовательность шагов, которые они оба должны сделать.
1.	Пикара вырабатывает случайное натуральное число е < N и посылает Вивалесу b' = 6е.
2.	Вивалес бросает монету. Если выподает «решка», то Пикара должна раскрыть значение е и Вивалес может проверить, что действительно Ь = Ье.
3.	Если выпадает «орел», то Пикара должна сообщить наименьший положительный вычет числа х + е по модулю N, а Вивалес проверяет равенство уЪ' = Ьх+е.
4.	Шаги 1-3 повторяются до тех пор, пока Вивалес не поверит, что Пикара знает значение х дискретного логарифма.
Заметим, что если Пикара в действительности не знает величины л, то она может давать правильный ответ не более чем при одном варианте выпадения монеты. Если при выполнении шага 1 она ожидает, что выпадет решка, то она может, не зная х. послать Вивалесу именно b' = 6е. Если она ожидает, что выпадет орел, то она должна послать Вивалесу b' = Ье/у (тогда на шаге 3 вместо х + е она сможет послать просто е), но если в этом случае выпадет решка, то она не сможет дать правильный ответ, так как не знает, в какую степень нужно возвести Ь, чтобы получить b .
Свойство отсутствия разглашения у этого протокола может быть обосновано с помощью приема имитации. А именно, пусть Клайд не знает дискретного логарифма у по основанию 6, но зато знает заранее, как выпадет монета. Тогда он может имитировать шаги Пикары (посылая b' = Ье перед выпадением решки и b' — Ье/у перед выпадением орла). Получаемая в этом случае Вивалесом информация будет неотличима от информации, которую он мог бы получить от Пикары. При этом Клайд не может сообщить Вивалесу ничего полезного о значении дискретного логарифма, так как сам не знает его.
В упражнениях мы изучим ситуацию, когда Вивалес не знает
134
ГЛ. IV. ОТКРЫТЫЙ ключ
величину N. Например, он может знать, что G = (Z/MZ)’, но не знать разложения числа М. (Напомним, что если М — произведение двух простых чисел, то знание разложения эквивалентно знанию N = <р(М), см. §1.3.) Тогда Пикара (или изображающий ее Клайд), которая пользуется величиной N на шаге 1, не должна давать Вивалесу никакой информации о N (иначе это не будет доказательством с нулевым разглашением). Это условие может показаться излишним, но любой вправе потребовать, чтобы передавалась лишь самая минимальная информация.
Скрытая передача. «Каналом скрытой передачи» информации от Пикары к Вивалесу называется система пересылки от Пикары к Вивалесу двух пакетов зашифрованной информации, удовлетворяющая следующим условиям.
1.	Вивалес может дешифровать и прочитать только один пакет из двух.
2.	Пикара не знает, который именно пакет он может дешифровать.
3.	И Пикара, и Вивалес должны быть уверены, что условия 1 и 2 выполнены.
На первый взгляд, эти требования производят странное впечатление. Однако такой канал оказывается одним из фундаментальных понятий криптографии. Скоро мы увидим, как с его помощью строится неинтерактивное (т.е. без взаимодействия сторон) доказательство с нулевым разглашением. Но сначала, мы опишем способ построения такого канала, использующий сложность решения задачи дискретного логарифмирования.
Точнее, пусть имеются такие большое конечное поле Fg и фиксированный элемент b мультипликативной группы F*, что не существует практически реализуемого способа вычисления Ьху по значениям Ьх и Ьу. Это — условие Диффи-Хеллмана, и считают, что оно выполняется, если задача дискретного логарифмирования в Fg трудноразрешима (см. § 3).
Пусть, далее, существует легко вычислимое (и легко обратимое) отображение ф нашего конечного поля в n-мерное векторное пространство F2 над полем F2. Пусть образ Fg при этом отображении содержит все элементы F2 1 (т.е. все векторы, заканчивающиеся нулем). Например, если q взаимно просто с р, то можно определить п условием 2"	< р < 2п ихотображать элемент Fg (например, неотрицательное
целое, меньшее /)) в отвечающую ему последовательность двоичных знаков.
Пусть элементами сообщения являются наборы по п бит, т.е.’элементы т £ F2. Наконец, зафиксируем раз и навсегда некоторый эле
§ 5. ПРОТОКОЛЫ С НУЛЕВЫМ РАЗГЛАШЕНИЕМ	135
мент С Е F*, выбранный так, чтобы никто не знал его дискретного логарифма. (Напомним, что по предположению задача дискретного логарифмирования трудноразрешима в F*.) Элемент С может быть предложен «Центром доверия» (т.е. специальным посредником, которому доверяют обе стороны) или выбран с помощью случайной или интерактивной процедуры с участием Пикары и Вивалеса.
Скрытая передача происходит следующим образом. Вивалес выбирает случайно целое число х,0 < х < q — 1, и элемент i 6 {1,2}-. Далее символы х и i будут обозначать фиксированные целые числа из множеств {1,.— 2} и {1,2} соответственно. Вивалес полагает /3, = Ьх и /Зз_^ = С/Ьх. Он объявляет своим открытым ключом пару (/31, /Зг) и сохраняет секретными величины х и г. Заметим, что Вивалес не может знать дискретный логарифм /Зз_г, который мы обозна-чим через х : если бы он его знал, то он мог бы вычислить дискретный логарифм С = /3г/3з_^, что противоречит нашим предположениям.
Пусть у Пикары имеется два элемента текста: mi £ F2 из первого пакета и m2 Е Fj из второго пакета. Она выбирает случайно два целых числа 0 < Уг,У2 < Я — 1 и посылает Вивалесу две пары элементов: ЬУ1, ЬУ2 G F* и ан = тщ ф ф((3У1), о2 = т2 + ^(/Зг2) £ F£ (сложение производится в n-мерном векторном пространстве F^; такая операция известна как «исключающее или»). Пикара оставляет у, и у2 секретными.
Поскольку (Зу‘ = (by' )г и Вивалес знает числа Ьу' их, он может легко найти i^(/3y'), а следовательно, ит; = ф-|- i^(/3y'). Однако, если бы он захотел найти Шз_,, то ему пришлось бы найти величину /3|1~‘ = Ьх Уз~', зная лишь ЬУз~‘ и Ьх и не зная ни уз-i, ни х'. Поэтому (в силу условия Диффи-Хеллмана) найти т3_, он не может.
Заметим, что Пикара может легко проверить, что Д1/З2 = С и, следовательно, убедиться, что Вивалес не знает дискретных логарифмов сразу обоих элементов своего открытого ключа (/31, /З2). Так как в интересах Вивалеса иметь всю возможную информацию, Пикара может быть уверена в том, что дискретный логарифм одного из элементов этой пары он знает. Но у Пикары нет возможности различить /Зг и /32, чтобы узнать, какое из них Вивалес получил как Ьх, а какое — как С/Ьх. Значит, как для Вивалеса, так и для Пикары условия 1 и 2 выполнены.
Если один ключ /31 и /32 (т. е. одни и те же х и г) используется для последовательности пар (mi,m2), то Пикара знает, что дешифрованные Вивалесом элементы т, занимают в парах mi,m2 одинаковые места. Если требуется, чтобы новая последовательность элементов была послана независимым (от предыдущей) образом, то Вивалес должен
136
ГЛ. IV. ОТКРЫТЫЙ ключ
выбрать случайно новые величины х и г и послать новый открытый КЛЮЧ /?1 И /?2-
Использование скрытой передачи для неинтерактивного доказательства того, что разложение на множители известно. Смысл слова «неинтерактивное» можно представить диаграммой
Центр
Пикара —> Вивалес
Здесь «Центр доверия» можно понимать как источник случайных битов, посылаемых одновременно Пикаре и Вивалесу (Центр может перед рассылкой производить над битами какие-нибудь арифметические операции). Комбинация этих битов и реакция на них Пикары (сообщение, посланное ею Вивалесу) должны быть достаточны для того, чтобы Вивалес поверил, что она на самом деле сделала то, о чем сообщает (т. е. чтобы вероятность того, что Вивалеса обманули, была экспоненциально мала).
Под «неинтерактивностью» понимается то, что в процессе проверки Вивалес не переписывается с Пикарой. Однако допускается, чтобы в самом начале процедуры Пикара получила длинную последовательность открытых ключей скрытой передачи (/Ц,/32) для Вивалеса, описанных выше. Это не рассматривается как переписка Вивалеса с Пикарой. Фактически, теми же самыми открытыми ключами (в соответствии со смыслом термина «открытый») может пользоваться каждый, кто захочет играть роль Пикары. И Пикара может использовать одну и ту же последовательность открытых ключей во многих различных доказательствах с нулевым разглашением, которые она направляет Вивалесу.
Теперь опишем процедуру, с помощью которой Пикара может убедить Вивалеса в том, что она знает разложение на множители целого числа п = pq, не сообщая ему никакой информации о значениях сомножителей. Мы будем использовать эквивалентность знания р и q возможности извлечения из произвольного числа квадратного корня в арифметике по модулю п = pq (см. упражнение 5 ниже). Процедура имеет следующий вид.
1.	Центр вырабатывает случайно целое число х и посылает Пика-ре и Вивалесу наименьший неотрицательный вычет из х по модулю п; полагаем у = х2 (mod п).
2.	Пикара находит четыре квадратных корня из у по модули?» п, а именно, ±х, ix'. Она произвольным образом выбирает из них один;
§ 5. ПРОТОКОЛЫ С НУЛЕВЫМ РАЗГЛАШЕНИЕМ
137
обозначаем его через х0.
3.	Пикара выбирает случайно целое число т и посылает Вивалесу число s ~ г2 (mod п). Она также вычисляет тщ = г (mod п) и m2 = xor (mod п) и посылает эти два сообщения Вивалесу с помощью скрытой передачи.
4.	Вивалес может прочитать только одно из этих сообщений. Он проверяет, что квадрат этого числа по модулю п равен s (если его случайное i равно 1) или равен ys (если i = 2).
5.	Шаги 1-4 повторяются (с различными открытыми ключами (/31,Если Пикара выдержит Т проверок, то Вивалес убедится (с вероятностью ошибки 1-2	) в том, что Пикара действительно знает
это разложение.
УПРАЖНЕНИЯ
1.	Рассмотрим процедуру доказательства с нулевым разглашением знания одного дискретного логарифма. Пусть Пикара в действительности не знает значение дискретного логарифма. Какова вероятность того, что она сможет успешно обманывать Вивалеса при Т-кратном повторении шагов 1-3 этой процедуры?
2.	Опять рассмотрим процедуру доказательства с нулевым разглашением знания одного дискретного логарифма. Пусть Вивалес не знает величину N.
а)	Объяснить, почему описанный в тексте протокол не обладает свойством нулевого разглашения.
б)	Как Пикара может уменьшить количество информации о N, поступающей к Вивалесу?
3.	Пусть Пикара не знает N и поэтому на шаге 1 выбирает случайное число в < В, где В — граница для возможного значения N. На шаге 3 она посылает просто число х + е вместо наименьшего положительного вычета из х + е по модулю N. Объяснить, почему это не будет доказательством с нулевым разглашением? Почему эта процедура, проделанная Клайдом, не будет правильно имитировать поведение Пикары?
4.	Объяснить, как можно использовать приведенную в тексте процедуру доказательства с нулевым разглашением знания одного дискретного логарифма в системе электронной идентификации с открытым ключом. (Это означает, что Пикара убеждает Вивалеса в том, что она действительно Пикара.)
5.	Объяснить, почему умение извлекать квадратные корни по модулю п = pq по существу эквивалентно знанию разложения числа п на простые множители.
6.	Может ли один и тот же открытый ключ (/?1,/?2) для скрытой передачи использоваться несколькими лицами для представления Вивалесу доказательств с нулевым разглашением того, что они все, независимо друг от друга, знают разложение на простые множители одного и того же числа? Считается, что все они имеют доступ ко всем передаваемым сообщениям.
7.	Используя скрытую передачу, построить неинтерактивное доказательство с нулевым разглашением знания дискретного логарифма. (Предполагается, что порядок N группы известен всем.)
8.	Недавно была предложена следующая схема протокола с нулевым разглашением, позволяющего Пикаре показать Вивалесу, что она знает делители р и q
138
ГЛ. IV. ОТКРЫТЫЙ ключ
целого числа п, о котором известно, что оно является произведением двух простых чисел, сравнимых с 3 по модулю 4. Найти основной изъян этой схемы.
Шаг 1. Вивалес, который знает п, но не знает р и q. выбирает случайно целое число х. Он вычисляет наименьший неотрицательный вычет числа г4 по модулю п и посылает результат (который мы обозначим через у) Пикаре.
Шаг 2. Получив у, Пикара вычисляет квадратный корень в кольце вычетов по модулю п (что ей нетрудно сделать, так как она знает разложение п, см. упражнение 5 выше). Из четырех возможных квадратных корней она (единственным образом) выбирает тот, который является квадратичным вычетом как по модулю р, так и по модулю q. Это число должно быть наименьшим положительным вычетом из х2 по модулю п. Она посылает его Вивалесу.
Шаг 3. Вивалес проверяет, что полученное число на самом деле является вычетом числа х2 по модулю п. Тем самым он убеждается, что Пикара действительно извлекла квадратный корень по модулю п, что возможно лишь при знании разложения числа п.
9.	Найти недостаток следующей процедуры доказательства с нулевым разглашением знания разложения. Пусть п является произведением двух простых р и q. Предположим, что «Центр доверия» вырабатывает бесконечную последовательность ут.,У2,... квадратов случайных чисел (приведенных по модулю п), как это описано в тексте. Поочередно для каждого г/, Пикара находит один из его квадратных корней Xi и посылает его Вивалесу, который проверяет, что х2 = ух (mod п).
ЛИТЕРАТУРА к § 5 ГЛАВЫ IV
1.	Bellare М., Micali S. Non-interactive oblivious transfer and applications. — In: Advances in Cryptology: Crypto’89. Heidelberg etc.: Springer, p. 547 -557.
2.	Ben-Or M., Goldreich O., Goldwasser S., Hastad J., Kilian J., Micali S., Roga-way P. Everything provable is provable in zero-knowledge. — In: Advances in Cryptology: Crypto’88. Heidelberg etc.: Springer, 1990, p. 37-56.
3.	Blum M., Feldman P., Micali S. Non-interactive zero-knowledge proofs and their applications. — In: Proceedings of the 20th ACM Symposium on the Theory of Computing, 1988.
4.	Chaum D., Evertse J.-H., van de Graaf J., Peralta R. Demonstrating possession of a discrete logarithm without revealing it. — In: Advances in Cryptology: Crypto’86. Heidelberg etc.: Springer, 1987, p. 200-212.
5.	Garey M. R., Johnson D. S. Computers and intractability: A Guide to the Theory of NP-completeness. San-Francisco: W. H. Freeman, 1979. (Русск. ne-рев. — ГэриМ., Джонсон Д. С. Вычислительные машины и труднорешаемые задачи. М.: Мир, 1982.)
6.	Goldwasser S., Micali S., Rackoff C. The knowledge complexity of interactive proof systems. — SIAM J. Comput., 1989, v. 18, p. 186-208.
7.	Kilian J. Founding cryptography on oblivious transfer. — In: Proceedings of the 20th ACM Symposium on the Theory of Computing, 1988, p. 20-31.
8.	Rabin M. How to exchange secrets by obvilious transfer. — Techn. Report TR-81. Aiken Computation Laboratory, Harvard University, 1981.
9.	Shamir A. The search for provably secure identification schemes. — In: Proceedings of the International Congress of Mathematicians, 1986, p. 1488-1495.
ГЛАВА V
ПРОСТОТА И ФАКТОРИЗАЦИЯ
Во многих случаях требуется выяснить, является ли большое число п простым. Например, в системе открытого ключа RSA и различных системах, основанных на задаче дискретного логарифмирования в конечных полях, нам нужно найти большое «случайное» простое число. Один из подходов к этому заключается в том, чтобы выбрать большое нечетное целое число п0, используя генератор случайных чисел, и затем проверять п0,п0 + 2,... на простоту до тех пор, пока мы не найдем первое простое число, большее или равное п0. Другой тип использования тестов на простоту — выяснение того, является ли некоторое число весьма специального типа простым. Например, нас может интересовать, является ли число 2^ — 1 для данного большого числа f простым числом Мерсенна: в поле из 2^ элементов, как мы видели (см. упражнение 13 а) к §11.1) все элементы, отличные от 0 и 1, являются образующими Fjj/ в том и только том случае, когда 2^ — 1 есть простое число.
Тест на простоту представляет собой критерий того, что число п не является простым. Если п «проходит» этот тест, то оно, возможно, простое число. Если оно «проходит» целый набор тестов на простоту, то весьма вероятно, что оно действительно является простым. С другой стороны, если п не проходит хотя бы одного теста на простоту, то оно совершенно определенно является составным. Однако при этом остается нерешенной трудная задача нахождения простых делителей числа п (задача факторизации). В общем случае для разложения на множители большого числа, о котором известно, что оно составное (поскольку оно не прошло теста на простоту), требуется гораздо больше времени, чем для нахождения простого числа того же порядка величины. (Это — эмпирическое утверждение, а не теорема; ни одного утверждения такого рода не доказано). Надежность криптосистемы RSA основывается на том предположении, что значительно
140
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
легче найти два чрезвычайно больших простых числа р и q, чем, зная п — pq, но не р или q, найти делители числа п. После рассмотрения тестов на простоту в § 1 мы опишем три различных метода факторизации в §§ 2-5.
§ 1. Псевдопростые числа
Замечали ли вы, что не делается попыток найти большие числа, которые не являются простыми? Было бы вам интересно услышать в выпуске новостей сообщение о том, что «Сегодня Отдел вычислительных наук в Вашингтонском университете объявил, что 2	+ « — четное число. Ото — самое большое не
простое число, известное ныне»
— надпись в душевой комнате Вашингтонского университета.
«Явление, вероятность которого 10-50, так никогда бы и не проявилось, или, во всяком случае, никогда бы не было замечено» — Э. Борель Вероятность и жизнь.
Пусть п — большое нечетное число, и мы хотим определить, является ли п простым. Простейший тест на простоту — «пробы делением». Это значит, что вы берете нечетное целое число т и проверяете, делится ли п на т. Если т / 1,т / п и т\п, то п — составное; в противном случае п проходит тест на простоту «деление на т». Если по мере того, как т пробегает одно за другим нечетные числа, начиная с 3, число п проходит все пробы делением, то становится все более и более вероятным, что п — простое число. Мы полностью убедимся в простоте п, если т достигнет значения у/п. Конечно, это чрезвычайно неэффективный способ проверки простоты числа п. Другие тесты, описанные в этом параграфе, значительно быстрее.
Почти все известные эффективные тесты на простоту аналогичны в общих чертах следующему.
Если п — простое число, то согласно малой теореме Ферма для любого такого Ь, что НОД (6,п) = 1,
Ьп 1 = 1 (mod п).	(1)
Если п — не простое число, то (1) тоже может выполняться (хотя это маловероятно).
Определение. Если п — нечетное составное число, b — целое число, НОД (n,6) = 1, и (1) выполняется, то п называется псев-допростым числом по основанию Ь.
Другими словами, «псевдопростое» число — это число п, которое «претендует» быть простым, проходя тест (1).
§ 1. ПСЕВДОПРОСТЫЕ ЧИСЛА
141
Пример 1. Число п = 91 — псевдопростое по основанию 6 = 3, так как З90 = 1 (mod 91). Однако, 91 не есть псевдопростое число по основанию 2, так как 290 = 64 (mod 91). Если бы мы еще не знали, что 91 составное число, то соотношение 290	1 (mod 91) доказало бы
нам это.
Предложение V. 1.1. Пусть п — нечетное составное число.
а)	Число п тогда и только тогда является псевдопростым по основанию Ь, для которого НОД (6,n) = 1, когда порядок 6 в группе (Z/nZ)* (ттг. е. наименьшее натуральное d, при котором bd = 1 (mod п)) делит п - 1.
b)	Если п является псевдопростым по основаниям Ь{ и 62, для которых НОД (615п) = НОД (62,п) = 1, то п — псевдопростое по основаниям 6i62 u 6i62 1 (62 1 обозначает элемент, обратный к 62 по модулю п).
с)	Если п не является псевдопростым хотя бы по одному основанию 6 £ (Z/nZ)*, то п не проходит тест (1), по крайней мере, для половины оснований 6 G (Z/nZ)*.
Док азательство. Части а) и Ь) очевидны, и мы оставляем их проверку читателю.
с)	Пусть {61,62,..., bs] — множество всех оснований, по которым п — псевдопростое число, т. е. множество всех таких натуральных чисел, меньших п, для которых выполняется соотношение (1). Пусть 6 — фиксированное основание, по которому п не является псевдопростым. Если п было бы псевдопростым хотя бы по одному основанию bbi, то, ввиду части Ь), оно было бы псевдопростым по основанию 6 = (66^)6г (mod п), что противоречит выбору 6. Таким образом, для •s различных оснований {66г, 662,..., ЬЬЯ} число п не проходит тест (1). Поэтому в группе (Z/nZ)* число оснований, по которым п не есть псевдопростое, не меньше числа оснований, для которых выполняется (1). Доказательство завершено.
Таким образом, если п удовлетворяет условию (1) не для всех возможных 6 с НОД (6, n) = 1, то при случайно выбранном 6 с вероятностью, не меньшей 50%, условие (1) для п не выполняется. Допустим теперь, что мы хотим выяснить, является ли данное большое нечетное число п простым. Мы можем случайно выбрать 6 в интервале 0 < 6 < п. Вначале находим d = НОД (6, п), применяя алгоритм Евклида. Если d > 1, то п — не простое число, и мы фактически уже нашли его нетривиальный делитель d\n. Если d = 1, возводим 6 в степень п — 1 (используя метод повторного возведения в квадрат, см. §1.3). Если (1) не выполняется, то п —составное число. Если (1) выполняется, то мы получаем некоторое подтверждение того, что п —
142
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
простое число. Мы выбираем тогда другое Ь и повторяем весь процесс. Если (1) нарушается для какого-либо Ь, то можно остановиться, убедившись в том, что п — составное число. Предположим, что мы сделали к попыток с различными b и нашли, что п — псевдопростое число по всем к основаниям. По предложению V. 1.1 вероятность того, что составное п пройдет к тестов, не превышает l/2fc (если только п не таково, что (1) выполняется для каждого b £ (Z/nZ)*). Если к велико, мы можем быть уверены «с большой вероятностью», что п — простое (если только п не является псевдопростым по всем основаниям). Этот метод нахождения простых чисел называется вероятностным методом. Он отличается от детерминистического метода: слово «детерминистический» значит, что метод со 100%-й вероятностью определяет, является число п составным или простым.
Существуют ли такие составные п, что (1) выполняется для каждого Ь, взаимно простого с п? В таком случае вероятностный метод не может обнаружить, что п — составное (если только нам не повезет выбрать такое 6, что НОД (6, n) > 1). Ответ на вопрос известен: такие числа существуют и называются числами Кармайкла.
Определение. Числом Кармайкла называется составное число п, для которого (1) выполняется при любом b Е (’L/n'L')*.
Предложение V. 1.2. Пусть п — нечетное составное число.
а)	Если п делится на квадрат целого числа, большего 1, то п не есть число Кармайкла.
Ь)	Если п свободно от квадратов, то п — число Кармайкла в том и только том случае, когда (р — 1)|(п — 1) для всякого простого делителя р числа п.
Доказательство, а) Предположим, что р2|п. Пусть g — образующий по модулю р , т. е. такое целое число, что g есть наименьшая степень д, сравнимая с 1 по модулю р . Согласно упражнению 2 к §11.1 такое д всегда существует. Пусть п обозначает произведение всех простых делителей числа п, отличных от р. По китайской теореме об остатках существует решение системы из двух сравнений: b = д (mod р ) и b = 1 (mod п'). Тогда Ь, как и д, есть образующий по модулю р2, и, кроме того, НОД (6,n) = 1, так как Ъ не !
делится ни на р, ни на простые делители числа п .
Покажем, что п не есть псевдопростое число по основанию Ъ. Действительно, заметим, что если (1) выполняется, то автоматически Ьп 1 = 1 (mod р ), так как р |п. Но в этом случае р(р — 1)|(п - 1), так как р(р - 1) — порядок b по модулю р2. Однако п — 1 = -1 (mod р), так как р|п, а это означает, что п — 1 не делится на р(р — 1).' Это противоречие доказывает, что Ъ — такое основание, по которому п не
§ 1. ПСЕВДОПРОСТЫЕ ЧИСЛА
143
является псевдопростым.
Ь) Предположим сначала, что (р — 1)|(тг — 1) для каждого простого делителя р числа п. Пусть b — любое такое основание, что НОД (6, n) = 1. Тогда для всякого простого р\п мы имеем: 6П-1 есть степень Ьр 1 и, значит, Ъп 1 = 1 (mod р). Таким образом, 671-1 — 1 делится на каждый из простых делителей числа п, следовательно, делится и на их произведение, которое равно п. Поэтому (1) выполняется для всех оснований Ь. Обратно, предположим, что существует такое простое число р|п, что п - 1 не делится на р - 1. Пусть д — целое число, порождающее (’L/p'L') . Как в доказательстве части а), найдем такое целое число 6, что b = д (mod р), b = 1 (mod п/р). Тогда НОД (6,п) = 1 и 6П-1 = р"-1 (mod р). Однако pn-1 1 (mod р), так как п - 1 не делится на порядок р — 1 числа д по модулю р. Стало быть, Ьп 1 (mod р) и (1) не может выполняться. Доказательство предложения завершено.
Пример 2. Число п = 561 = 3 • 11 • 17 есть число Кармайкла, так как п - 1 = 560 делится на 3 - 1 = 2, 11 - 1 = 10, 17 - 1 = 16. В упражнениях мы увидим, что 561 — наименьшее число Кармайкла.
Предложение V. 1.3. Число Кармайкла должно быть произведением не менее 3 различных простых чисел.
Доказательство. Согласно предложению V. 1.2 число Кармайкла должно быть произведением различных простых чисел. Следовательно, остается лишь исключить возможность того, что п = pq есть произведение двух различных простых.
Пусть р < q. Тогда, если бы п было числом Кармайкла, мы имели бы п — 1 = 0 (mod q — 1) по части Ь) предложения V. 1.2. Однако п — 1 = p(q— 1 + 1)— 1 = р — 1 (mod q — 1), и так как 0<р—1<р — 1,то правая часть не сравнима с нулем по модулю q— 1. Полученное противоречие с частью Ь) предложения V. 1.2 завершает доказательство.
Замечание. Лишь недавно Альфорд, Грэнвиль и Померанц доказали, что существует бесконечно много чисел Кармайкла. См. отчет Грэнвиля в Notices of the Amer. Math. Soc., 1992, т. 39, c. 696-700.
Эйлеровы псевдопростые. Пусть n — нечетное целое число и (£) обозначает символ Якоби (см. §11.2). Если п — простое число, то по предложению II. 2. 2
^("-П/2 = (mod ri)	(2)
\д/
для любого целого b. С другой стороны, если п — составное, то согласно упражнению 21 к §11.2 не менее 50% всех b £ (Z/nZ)* не удо
144
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
влетворяют (2). Эти два факта позволяют построить эффективный вероятностный тест для проверки простоты большого числа п.
Начнем со следующего определения.
Определение. Если п — нечетное составное число, а Ь — такое целое число, что НОД (6, п) = 1 и выполняется (2), то п называется эйлеровым псевдопростым числом по основанию Ь.
Предложение V. 1.4. Если п — эйлерово псевдопростое число по основанию Ь, то оно — псевдопростое по основанию Ь.
Доказательство. Мы должны доказать, что если выполнено (2), то выполнено и (1). Но это очевидно: достаточно возвести обе части (2) в квадрат.
Пример 3. Предложение, обратное к V. 1.4, неверно. Так, в примере 1 мы видели, что 91 — псевдопростое по основанию 3. Однако 3	=27 (mod 91), так что (2) не выполняется для п = 91, 6 = 3.
(Заметим, что знание порядка 6 в (Z/91Z)* упрощает возведение 6 в высокую степень по модулю 91: так как 3 = 1 (mod 91), то 3	=
3 (mod 91).) Число 10 дает пример основания, по которому 91 — эйлерово псевдопростое число: 1045 = 103	-1 (mod 91) и (|у) = -1.
Пример 4. Легко убедиться, что любое нечетное составное п является псевдопростым по основаниям ±1; в дальнейшем мы будем исключать эти «тривиальные» основания 6.
Опишем теперь тест Соловея-Штрассена. Пусть дано нечетное натуральное число и мы хотим знать, простое оно или составное. Выбираем случайно к натуральных чисел 6, меньших п. Для каждого из них вычисляем значения обеих частей (2). Вычисление ft!71-1)/2 проводится за О (log п) двоичных операций при использовании метода повторного возведения в квадрат (предложение 1.3.6); вычисление символа Якоби в правой части также проводится за O(log п) двоичных операций (см. упражнение 17 к §11.2). Если эти два значения не сравнимы по модулю п, то мы убедились, что п — составное число, и прекращаем тест. В противном случае переходим к следующему 6. Вероятность того, что при составном п сравнение (2) выполняется для всех к случайно выбранных 6, не превышает l/2fc. Таким образом, тест Соловея-Штрассена — вероятностный алгоритм, который приводит либо к выводу о том, что п — составное число, либо к выводу о том, что п — «вероятно» простое.
Отметим, что не существует эйлеровых псевдопростых чисел, аналогичных псевдопростым числам Кармайкла: для любого составного п критерий (2) не выполняется, по меньшей мере, для половины всех возможных 6.
§ 1. ПСЕВДОПРОСТЫЕ ЧИСЛА
145
Сильно псевдопростые. Рассмотрим теперь еще один вид критериев простоты, который в определенном смысле даже лучше теста Соловея-Штрассена, основанного на определении псевдопростоты по Эйлеру. Это — тест Миллера-Рабина, основанный на вводимом ниже понятии «сильной псевдопростоты». Предположим, что п — большое нечетное натуральное число и b Е (Z/nZ)*. Пусть, далее, п — псевдопростое по основанию 6, т. е. Ьп 1 = 1 (mod п). Идея критерия сильной псевдопростоты такова. Пусть п — 1 = 2st, t — нечет-
,	,(п-1)/2 ,(п-1)/4	,(п-1)/25
но. Если последовательно вычислять о , о	,
то при простом п первым элементом, отличным от 1, должен быть элемент -1, так как при простом п единственными решениями сравнения Л' -1 = 0 (mod п) являются + 1 и -1. Практически действия выполняются «в обратном направлении». Полагаем п — 1 = 2st, t — нечетно. Вычисляем b'~ по модулю п. Если 6*	1 (mod п), то возводим
6* в квадрат по модулю п, получая b2t (mod п), затем вновь возводим в квадрат и т. д. до тех пор, пока не получим 1: 6 2 * = 1 (mod п). Тогда, если п — простое, предыдущим числом должно быть —1, в противном случае мы получаем доказательство того, что п составное.
Определение. Пусть п — нечетное составное число и п — 1 = 2st, I - - нечетно. Пусть b Е (Z/nZ)*. Если п и b удовлетворяют одному из условий:
1) 6г = 1 (mod п);
2) существует такое г, 0 С г < з, что
62 ( = -1 (mod п),
(3)
то п называется сильно псевдопростым по основанию Ь.
Предложение V. 1.5. Если п = 3 (mod 4), то п — сильно псевдопростое число по основанию b тогда и только тогда, когда оно — эйлерово псевдопростое по основанию Ь.
Доказательство. Так как в этом случае з=1и/ = (тг — 1)/2, мы видим, что п — сильно псевдопростое по основанию b тогда и только тогда, когда Ь^п Х^2 = ±1 (mod п). Если п —эйлерово псевдопростое, то это условие выполнено по определению. Обратно, пусть ^п-1^2 = ±1 (mod п). Мы должны показать, что ±1 справа — это (£). Но если п = 3 (mod 4), то ±1 = (^-). Таким образом,
6(62)(п-з)/4 п
------------ 1 = b(n 1)'/2 (mod п),
что и требовалось.
Следующие два важных предложения несколько труднее для доказательства.
146
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
Предложение V. 1.6. Если п — сильно псевдопростое по основанию Ь, то оно также эйлерово псевдопростое по основанию Ь.
Предложение V. 1.7. Если п — нечетное составное целое число, то п — сильно псевдопростое по основанию b не более чем для 25% чисел Ь, 0 < b < п.
Замечание. Как мы увидим в упражнениях, в общем случае обратное утверждение к предложению V. 1.6 неверно.
Перед доказательством этих двух предложений мы опишем тест Миллера—Рабина на простоту. Предположим, что мы хотим определить, является большое натуральное число п простым или составным. Представим п - 1 в виде 2s/, t нечетно, и выберем случайное целое число Ь, 0 < b < п. Сначала вычисляем // по модулю п. Если получается ±1, то заключаем, что п прошло тест (3) при данном Ь, и производим новый случайный выбор Ь. В противном случае возводим Ь1 в квадрат по модулю п, результат вновь возводим в квадрат по модулю п и продолжаем так до тех пор, пока не получим -1. Если это происходит, то мы считаем, что п прошло тест. Если же этого не происходит, т. е. если мы получаем Ъ =1 (mod п), в то время как b — 1 (mod п), то п не проходит тест, и это доказывает, что п — составное число. Если мы к раз случайно выбирали разные основания Ь и п каждый раз проходило соответствующий тест, то, согласно предложению V.1.7, число п имеет не более одного шанса из 4* быть составным. Это следует из того факта, что если п — составное, то не более 1/4 всех возможных оснований Ь, 0 < b < п, удовлетворяет (3). Заметим, что это несколько лучше, чем в тесте Соловея-Штрассена, где аналогичная оценка шансов — 1 из 2к (мы увидим в одном из упражнений, что существуют составные числа п, являющиеся псевдопростыми эйлеровыми относительно половины всех возможных оснований).
Переходим к доказательствам предложений V. 1.6 и V. 1. 7.
Доказательство предложения V. 1.6. Пусть п и b удовлетворяют (3). Докажем, что они удовлетворяют (2). Полагаем п - 1 = 2s/, / нечетное.
Случай 1. Пусть Ьг — 1 (mod п). Тогда левая часть (2) есть, очевидно, 1. Нам нужно показать, что (£) = 1. Но 1 = (^) =	—
 Так как / нечетно, то (£) = 1.
Случай 2. Теперь предположим, что	= —1 (mod zz).
Мы должны показать, что (£) = -1. Пусть р — любой простой делитель п. Представим р — 1 в виде 2s t', t' нечетно.
§ 1. ПСЕВДОПРОСТЫЕ ЧИСЛА
147
Утверждение. Справедливы соотношения s' s и
b
Р
-1,
1,
если
если
/
5
I
8
= S, > s.
Доказательство утверждения. Так как 6^п-1^2= 62 * = -1 (mod п), то, возведя обе части в степень t', получаем (62	* У = — 1 (mod п). Так как р\п, это сравнение справедливо и по
модулю р. В случае s' < s мы имели бы Ьр 1 = Ь2 *	1 (mod р'}, что
противоречит малой теореме Ферма. Поэтому s' s. Если s = s, то (62	1 У = —1 (mod р). Поэтому (^) = Ь^р г^2 = Ь2 1 =
— 1 (mod р). Пусть теперь s' > s. Возведя обе части сравнения , j \	.г’'-1!'	>(р —1)/2
о = — 1 (mod р) в степень 2	, получаем о = о ' =
(() = 1 (mod р). Утверждение доказано.
Вернемся к доказательству случая 2 предложения V. 1.6. Запишем тг в виде произведения простых чисел (не обязательно различных): п = ПР- Представим также каждое р — 1 в виде р - 1 = 23 t', t' нечетно. Как было показано, л/ .s и (^) = — 1 лишь при s' = s. Число таких случаев обозначим через к (учитывая кратность, т.е. к «	/	а
со свойством 5 = 8 дает вклад о, если п делится на р и не делится на р“+1). Тогда (£) = П(|) — (-1)У Далее, если р— такой делитель п, что s' > s, то р = 1 (mod 2s+1), а для остальных к делителей р числа п имеем s' = s а р = 1 + ?23 = 1 + 2s (mod 2з+1). Так как п = 1 -|-2s t = 1 + 23 (mod 2з+1), то п = 1 + 23 s П? = (1 + 23/ = 1 + к23 (mod 2з+1) (последнее — по формуле бинома Ньютона). Это показывает, что к должно быть нечетным, т.е. (£) = ( — l)fe = —1, что и требовалось доказать.
Случай 3. Предположим, наконец, что b = —1 (mod тг) для некоторого г, 0 < г < s (используем г — 1 вместо г в (3)). Имеем тогда b{n А^2 = 1 (mod тг), и нам нужно показать, что (£) = 1 в случае 3.
Пусть опять р — простой делитель тг, р — 1 = 2s t', t' нечетно.
Утверждение. Справедливы соотношения s г и
если
если
/
s = г, /
s > г.
Доказательство этого утверждения идентично доказательству соответствующего утверждения в случае 2.
Для доказательства предложения в случае 3 обозначим через к число простых р (не обязательно различных) в произведении п — П Р->
148
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
для которых выполнена первая альтернатива, т.е. s' — г. Тогда, как и в случае 2, мы, очевидно, имеем (£) = ( —1)\ С другой стороны, так как п = 1 + 2st = 1 (mod 2r+1) Hn = J([p=(l + 2r)fc (mod 2r+1), to к должно быть четным, т.е. (£) = 1. Это завершает доказательство предложения V. 1.6.
Перед доказательством предложения V. 1. 7 мы докажем одну лем-му общего характера о числе решении уравнения х — I в «цикличе-ской группе», содержащей т элементов. Мы уже однажды встречались с этой леммой в начале § II. 2; данное ниже доказательство следует сравнить с доказательством предложения II. 2.1.
Лемма 1. Пусть d — НОД (Адт). В группе {д,д2,д3,... ,дт = 1} порядка т имеется ровно d элементов, удовлетворяющих урав-к . нению х =1.
Доказательство. Элемент gJ удовлетворяет этому урав-7 А:
нению тогда и только тогда, когда g — 1, т.е. в том и только том случае, когда jk = 0 (mod m), т.е. m\jk. Это эквивалентно условию Но m/d и k/d взаимно просты, поэтому j кратно m/d. Среди чисел {1,2,..., т] имеется в точности d таких значений j.
Нам нужна еще одна лемма, которая доказывается аналогично
предыдущей.
Лемма 2. Пусть р — нечетное простое число, р — 1 = 2s t', где t нечетно. Тогда число х £ (Z/pZ) , удовлетворяющих уравнению х'1 1 = — 1 (mod р) (/ нечетно), равно нулю, если г s', и равно 2Г НОД (Z, t'), если г < s'.
Доказательство. Пусть g — образующий элемент группы (Ъ/рЪ)* и л =	0 j < р - 1. Так как УР-1)/2 = —1 (mod р) и
р — 1 = 2s t', то сравнение из условия леммы эквивалентно сравнению 2rtj = 2s ~}t' (mod 2s t') (с неизвестным j). Ясно, что при г > s' — 1 оно не имеет решений. Если же г s' - 1, то делим обе части сравне
ния и модуль на НОД модуля и коэффициента при j, т.е. на 2rd, где d — НОД (£,<'). Получившееся сравнение по модулю 2s г(^-) имеет единственное решение. Поэтому исходное сравнение имеет 2 d реше-
ний, как и утверждалось. Лемма доказана.
Доказательство предложения V. 1.7.
Случай 1. Предположим сначала, что п делится на квадрат простого числа р, т.е. ра||п, а 2. Покажем, что в этом случае п не может быть даже псевдопростым (не говоря уже о сильной псевдопростоте) для более, чем (п — 1)/4 оснований Ь, 0 < b < п. Для этого предположим, от противного, что Ьп 1	1 (mod п), и, значит,
Ьп~г = 1 (mod р2), и найдем условия, которым должен удовлетворять
§ 1. ПСЕВДОПРОСТЫЕ ЧИСЛА
149
вычет b по модулю р2. Напомним, что (Z/p2Z)* — циклическая группа порядка р(р — 1) (см. упражнение 2 к § II. 1), т. е. существует такое целое число д, что (Z/p2Z)* = {д,д2,д3, .. ,дР^Р Согласно лемме I, число решений сравнения Ъп 1 = 1 (mod р2) в (Z/p2Z)* равно d = НОД (р(р - 1),п — 1). Но р — делитель п, поэтому р не делит п — 1 и, следовательно, р не делит d. Стало быть, d С р — 1. Поэтому доля не делящихся на. р чисел в интервале от 0 до п, обладающих свойством Ьп 1 = 1 (mod р ), не превышает	С |. Так как
эта величина оценивает сверху долю таких оснований Ь, что 0 < Ь < п и Ьп 1 = 1 (mod п), то п может быть псевдопростым не больше, чем по четверти оснований Ь, 0 < b < п. В случае 1 предложение доказано.
Замечание. Эта верхняя 25%-я граница достигается в случае 1 при п = 9 (т. е. 9 есть сильное псевдопростое для двух из 8 возможных значений 6, именно, для Ь = ±1).
С л у ч а. й 2. Теперь предположим, что п — произведение двух различных простых чисел р и q: п = pq*. Пусть р — 1 = 2s t', t' нечетно, q - 1 = 2s t", t" нечетно. Без ущерба для общности можем предположить, что s' s". Чтобы элемент b £ (Z/nZ)* мог служить основанием, по которому п является сильно псевдопростым, должно случиться одно из двух: 1) b' = I (mod р) и b* = I (mod q) или 2) Ь2 1 = — 1 (mod р) и Ь2 f = — 1 (mod q~) для некоторого г, 0 С г < s. По лемме 1 число оснований 6, для которых реализуется первая возможность, равно НОД (/, t')  НОД (/, 1") (произведению чисел классов вычетов по модулям р и д); ясно, что это число не превосходит i t". По лемме 2 для каждого г < min (s', s") = s' число таких 6, что Ъ2 г = — 1 (mod п), равно 2Г НОД (1,	• 2Г НОД (t, t"') < 4rt't". Так как п - 1 > <р(тг) =
2s +я t't", то доля оснований b £ (Z/nZ)*, по которым п — сильно псевдопростое, не превышает
t't" + t't" + 4t't" + 42t't" + •  • + 4я'-1/'/"	(	4s' - 1
2s’+s”t't"	~ 2	\1 + 4-1
t? " _	'	n-2s—1/9 4a \	n“32 , 1	1
Если s > s , то это не превосходит 2 (у + — J < 2 у + £ = у, что и требовалось доказать. С другой стороны, если s' = s", то одно из неравенств НОД (/,/) ^ t', НОД (t,t">) < t" должно быть строгим: если бы мы имели одновременно t'\t и t"\t, то из сравнения п — 1 = 23t = pq—1 = q — 1 (mod t') следовало бы, что t'\(q - 1) = 2s t", т.е. t'\t ; аналогично t"\t' и, значит, t' = t". Но тогда p = q, вопреки
В дальнейшем предполагается, что п — 1 — 2я/, i нечетно. — Прим. ред.
150
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
предположению. В строгом неравенстве вида НОД (i,f) < t* левая часть составляет не более 1/3 от правой (так как все числа в этом неравенстве — нечетные). Таким образом, в нашем случае можно за-менить t г на t в числителе оценки для числа основании о, по которым п является сильно псевдопростым. Это приводит к следующей оценке сверху доли тех оснований Ь, 0 < b < тг, по которым тг — сильно псевдопростое:
1 _2? /2	1	1	1	1
-2	-	+ —	—
3 уЗ 3 у	18	9	6	4
что и требовалось. Это завершает доказательство предложения в случае 2.
Случай 3. Предположим, наконец, что тг — произведение более, чем двух различных простых чисел: тг = pip2 '' -Р/с, к 3. Положим Pj — 1 = 2Sj tj, где tj нечетно, и будем действовать в точности так же, как в случае 2. Без ущерба для общности можно предполагать, что С Sj, j = 2,.. ., к. Мы получаем следующую верхнюю оценку доли возможных оснований 6, по которым п — сильно псевдопростое число:
Г)
2 — 2	2
2к - 1	2к - 1
n-^2fc~2 ,	1	^o_fc2fc-2,	1 oi-^ 1
~ 2	L	I L.	L	'А-	— 2	,
2 - 1	2-1	2-1	2-1	4
так как О 3 в случае 3. Тем самым доказательство предложения V.1. 7 закончено.
Замечания. 1. Практически не возникает необходимости брать большое количество оснований Ь, чтобы быть «почти» уверенным, что число тг простое, если оно сильно псевдопростое по каждому из оснований Ь. Например, было показано, что существует лишь одно составное число, меньшее 2,5 • 1О10, а именно, 3215031751, которое является сильно псевдопростым по каждому из оснований b = 2, 3,5,7.
2. Полностью полагаться на вероятностный тест не вполне надежно. Несмотря на заверение Эмиля Бореля, цитированное в начале параграфа, было бы неплохо иметь быстрые методы доказательства того, что данное число п действительно простое (особенно, если важно с практической или теоретической точки зрения знать, что данное тг действительно простое). Например, допустим, что существует такое небольшое число В (зависящее от тг), что любое составное тг не является сильно псевдопростым хотя бы по одному основанию b < В.
§ 1. ПСЕВДОПРОСТЫЕ ЧИСЛА
151
Если бы мы знали такое В, то для абсолютной уверенности в простоте п было бы достаточно провести тест (3) для первых В оснований.
Подобное утверждение имеет место, однако оно является следствием недоказанного предположения, называемого «обобщенной гипотезой Римана». Обычная гипотеза Римана утверждает, что все комплексные нули так называемой дзета-функции Римана C(s) (определяемой при s > 1 как сумма дробей 1 /п ), которые лежат в «критической полосе» (где действительная часть .s находится между 0 и 1), должны лежать на «критической прямой» (действительная часть s равна |). «Обобщенная гипотеза Римана» — это то же самое утверждение для некоторых обобщений £(з), называемых «Z-рядами Дирихле». Следующее предложение, доказательство которого выходит за рамки этой книги, показывает, что условие (3) в критерии Миллера-Рабина дает детерминистический тест на простоту, временная сложность которого является полиномиальной функцией от log п, если справедлива обобщенная гипотеза Римана (ОГР).
Если ОГР справедлива и п — составное нечетное число, то п не удовлетворяет условию (3) хотя бы для одного основания Ь, меньшего 2 log п.
3. В 1980-е гг. был разработан эффективный детерминистический тест на простоту, который хотя и не является, строго говоря, полиномиальным по logn, на практике может доказать простоту чисел, имеющих свыше ста цифр в десятичной записи, в течение каких-то секунд (на современных больших компьютерах). Этот метод Адлемана-Померанца-Рамли (Adleman-Pomerance-Rumely) и Коэна-Ленстры (Cohen-Lenstra) основывается на тех же идеях, что и рассмотренные выше тесты на простоту, с той разницей, что он использует аналоги малой теоремы Ферма в расширениях полей рациональных чисел. Основную роль играют гауссовы суммы (некоторые их типы были введены в § II. 2 для доказательства закона квадратичной взаимности) и тесно с ними связанные «суммы Якоби». Подробное рассмотрение их метода завело бы нас слишком далеко. Обстоятельное и не слишком сложное изложение имеется в статье Коэна и Ленстры в «Mathematics of Computation».
УПРАЖНЕНИЯ
1.	а) Найти все основания Ъ, для которых 15 — псевдопростое число (не включать тривиальные основания ±1).
б)	Найти все основания, для которых 21 — псевдопростое число.
в)	Доказать, что существует 36 оснований b g (Z/91Z)* (т.е. половина всех возможных оснований), для которых 91 — псевдопростое число.
г)	Обобщая часть в), показать, что если р и 2р — 1 — простые числа и п =
152
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
р(2р — 1), то п — псевдопростое для 50% возможных оснований 6, а именно, для тех Ь, которые являются квадратичными вычетами по модулю 2р — 1.
2.	Пусть п — нечетное составное натуральное число и пусть НОД (6, п) = 1.
а)	Показать, что если р — простой делитель п и п’ = n/р, то п — псевдопростое по основанию b только при Ьп -1 =1 (mod р).
б)	Доказать, что никакое целое число п = Зр (р > 3 есть простое число) не может быть псевдопростым по основаниям 2, 5 или 7.
в)	Доказать, что никакое целое п = 5р (р > 5 есть простое число) не может быть псевдопростым по основаниям 2, 3 или 7.
г)	Доказать, что 91 — наименьшее псевдопростое число по основанию 3.
3.	Пусть р — простое число. Показать, что р2 — псевдопростое по основанию Ь тогда и только тогда, когда 6р-1 = 1 (mod р2).
4.	а) Найти наименьшее псевдопростое по основанию 5.
б)	Найти наименьшее псевдопростое по основанию 2.
5.	Пусть п = pq есть произведение двух различных простых чисел.
а)	Пусть d = НОД (р — 1, q — 1). Доказать, что п — псевдопростое по основанию b в том и только том случае, когда 6^ = 1 (mod п). Выразить через d число различных оснований, по которым п — псевдопростое.
б)	Сколько имеется оснований, по которым п — псевдопростое, если q — 2р + 1? Привести их полный список (в терминах р).
в)	Пусть п = 341. Какова вероятность того, что случайно выбранное Ь, взаимно простое с п, будет основанием, по которому п — псевдопростое число?
6.	Показать, что если п — псевдопростое по основанию b £ (Z/nZ)*, то оно будет также псевдопростым по основаниям —Ь и 6-1.
7.	а) Доказать, что если п — псевдопростое по основанию 2, то N = 2П — 1 — также псевдопростое по тому же основанию.
б)	Доказать, что если п — псевдопростое по основанию Ь и НОД (6— l,n) = 1, то целое число N = (bn — 1 )/(Ь — 1) — псевдопростое по основанию Ь.
в)	Доказать, что существует бесконечно много псевдопростых чисел по основаниям 2, 3, 5.
г)	Привести пример, показывающий, что без условия НОД (6 — 1, n) = 1 часть б) неверна.
8.	Пусть Ъ > 1 есть любое натуральное число, р — нечетное простое, не делящее 6—1, 6, 6+1. Положим п = (b2p — 1)/(62 — 1).
а)	Показать, что п — составное.
б)	Показать, что 2р|(п — 1).
в)	Показать, что п — псевдопростое по основанию 6; вывести отсюда, что для любого основания 6 существует бесконечно много псевдопростых по этому основанию.
9.	а) Использовать тест (1), чтобы показать, что число 2047 = 211 — 1 — составное.
б)	Объяснить, почему никогда не следует пытаться использовать тест (1) с 6 = 2 для проверки на простоту чисел Ферма 22 +1 или чисел Мерсенна 2Р — 1. Как обстоит дело с тестом (2) по основанию 6 = 2? Как обстоит дело с тестом (3) по основанию 6 = 2?
10.	Пусть тп — такое натуральное число, что 6m + 1, 12m + 1, 18m + 1 — простые числа. Положим п = (6m + l)(12m + l)(18m + 1). Доказать, что п — число Кармайкла.
§ 1. ПСЕВДОПРОСТЫЕ ЧИСЛА
153
Замечание. Неизвестно, существует ли бесконечно много чисел Кармайкла вида (6m + l)(12m + l)(18m + 1). Эвристические соображения, однако, показывают, что это так.
11.	Показать, что следующие натуральные числа — это числа Кармайкла: 1105 = 5  13 • 17; 1729 = 7 - 13- 19; 2465 = 5-17-29; 2821 = 7-13-31; 6601 = 7-23-41; 29341 = 13 • 37 • 61; 172081 = 7-13-31-61; 278545 = 5-17-29-113.
12.	а) Найти все числа Кармайкла вида Зр<? (р, q — простые).
б)	Найти все числа Кармайкла вида 5р<? (p,q — простые).
в)	Доказать, что для любого фиксированного простого г имеется лишь конечное множество чисел Кармайкла вида rpq (р, q — простые).
13.	Доказать, что 561 -- наименьшее число Кармайкла.
14.	Привести пример составного числа п и основания Ь таких, что б(п-1)/2 = ±1 (mod п), однако п не есть эйлерово псевдопростое число по основанию Ь.
15.	а) Доказать, что если п — эйлерово псевдопростое по основанию b £ (Z/nZ)*, то оно также эйлерово псевдопростое по основаниям — Ь и Ъ~1.
б)	Доказать, что если п — эйлерово псевдопростое по основаниям bi и Ь?, то оно также эйлерово псевдопростое по основанию 61&2-
16.	Пусть п имеет вид р(2р — 1), как в упражнении 1 г).
а)	Доказать, что п — эйлерово псевдопростое по 25% возможных оснований b Е (Z/nZ)*.
б)	Найти класс чисел п такого типа, являющихся сильно псевдопростыми по 25% возможных оснований.
17.	Пусть п имеет вид (6m + l)(12m + l)(18m + 1), как в упражнении 10.
а)	Доказать, что если т нечетно, то п — эйлерово псевдопростое по 50% всех возможных оснований b g (Z/nZ)*.
б)	Если т четно, то п — эйлерово псевдопростое по 25% возможных оснований b £ (Z/nZ)*.
18.	а) Используя обозначение О-большое, оценить число двоичных операций в ситуации, когда тест Миллера-Рабина применяется столько раз, что вероятность прохождения составного числа п через эти тесты меньше 1/т (пит очень велики).
б) Предполагая справедливой обобщенную гипотезу Римана, оценить число двоичных операций в ситуации, когда тест Миллера-Рабина применяется столько раз, сколько необходимо для достаточной уверенности в том, что прошедшее все тесты число п является простым.
19.	а) Доказать, что если п — псевдопростое по основанию 2, то N = 2П — 1 является сильно псевдопростым и эйлеровым псевдопростым по основанию 2.
б) Доказать, что существует бесконечно много сильно псевдопростых и эйлеровых псевдопростых по основанию 2.
20.	Доказать, что если п — сильно псевдопростое по основанию 6, то оно сильно псевдопростое также по основанию Ьк для любого целого к.
21.	Пусть п — число Кармайкла 561.
а)	Найти число оснований b g (Z/561Z)*, для которых 561 — эйлерово псевдопростое.
б)	Найти число оснований, для которых 561 — сильно псевдопростое. Привести их список.
22.	Доказать, что если п = ра есть степень простого числа, где а > 1, то п — сильно псевдопростое по основанию 6 тогда и только тогда, когда оно — псевдопростое по основанию 6.
154
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
23.	а) Показать, что 65 — сильно псевдопростое число по основанию 8 и по основанию 18, однако не является таковым по основанию 14 = 8 • 18 (mod 65).
б)	Для любого нечетного составного числа п пусть (*) обозначает утверждение: если п — сильно псевдопростое по основанию 61 и по основанию 62, то оно — сильно псевдопростое по основанию 61^2 (другими словами, свойство сильной простоты сохраняется при перемножении оснований). Доказать, что (*) справедливо тогда и только тогда, когда п — либо степень простого числа, либо делится на простое число, сравнимое с 3 по модулю 4.
24.	а) Доказать, что если найдется такое Ь, что п — псевдопростое число по основанию Ь. но не является сильно псевдопростым по Ь, то можно быстро найти нетривиальный делитель числа п.
б)	Объяснить, как можно защититься от этого при выборе п = pq в криптосистеме RSA.
Замечание. Во многих тестах на простоту оказывается, что если составное п проходит начальный тест, но не проходит какого-либо из последующих, полученная информация не только доказывает, что п — составное число, но и позволяет легко найти его нетривиальный множитель. Упражнение 24 — тому пример: если п проходит тест на псевдопростоту по основанию Ь, а затем не проходит тест на сильную псевдопростоту по основанию 6, то можно найти делитель п. Однако это не означает, что тесты на простоту можно использовать в задаче факторизации. Если п — большое составное число (например, произведение больших случайно выбранных простых чисел р и q), то очень маловероятно, что мы найдем основание Ь, по которому п — псевдопростое (упражнение 5 а) дает представление о вероятности выбора такого 6). Таким образом, различные изощренные тесты на псевдопростоту позволяют лишь подтвердить простоту действительно простого числа. На практике составное число, которое мы хотим разложить на множители, не будет проходить любой отдельный тест на простоту, но сами тесты не помогу!' нам найти его множители.	;
ЛИТЕРАТУРА к § 1 ГЛАВЫ V
1.	Adleman L. М., Pomerance С., Rumely R. S. On distinguishing prime numbers from composite numbers. — Ann. Math., 1983, v. 117, p. 173-206.
2.	Cohen H., Lenstra H. W.,Jr. Primality testing and Jacobi sums. — Math. Comp., 1984, v. 42, p. 297-330.
3.	Dixon J. D. Factorization and primality tests. — Amer. Math. Monthly, 1984, v. 91, p. 333-352.
4.	Kranakis £’. Primality and Cryptography. N.Y. etc.: Wiley, 1986.
5.	Lenstra A. Primality testing. — Crypt. Comput. Number Theory, Proc. Symp. Appl. Math., 1990, v. 42, p. 13-25.
6.	Miller G. L. Riemann’s hypothesis and test for primality. — In: Proceedings of the 7th Annual ACM Symposium on the Theory of Computing, p. 234-239.
7.	Pomerance C. Recent developments in primality testing. — Math. Intelligencer, 1981, v. 3, p. 97-105.
8.	Pomerance C. The search for prime numbers. — Sci. American, 1982, v. 247, p. 136-147.
9.	Rabin M. O. Probabilistic algorithms for testing primality. — J. Number Theory, 1980, v. 12, p. 128-138.
§ 2. РО-МЕТОД
155
10.	Solovay R., Strassen V. A fast Monte Carlo test for primality. — SIAM J. Comput., 1977, v. 6, p. 84-85; erratum: 1978, v. 7, p. 118.
11.	Wagon S. Primality testing. — Math. Intelligencer, 1986, v. 8, .V” 3, p. 58-61.
§ 2. Po-метод
Предположим, что нам известно, что некоторое большое нечетное число п составное. Например, оно не прошло один из тестов на простоту из § 1. Как уже упоминалось, это не значит, что мы имеем какое-либо представление о его делителях. Из рассмотренных нами методов проверки простоты лишь самый медленный — последовательное деление п на простые числа, меньшие у/п, — одновременно с установлением непростоты конкретно указывает делитель числа п. Все более быстрые алгоритмы проверки простоты лишь устанавливают факт существования делителей числа п, но не дают о них информации.
Метод пробных делений на простые числа, меньшие у/п, может потребовать более О(у/п) двоичных операций. Простейший алгоритм, работающий существенно быстрее, — это «ро-метод» факторизации Полларда (называемый также «методом Монте-Карло»).
Первый шаг ро-метода заключается в выборе легко вычислимого отображения кольца Z/nZ в себя, а именно, простого многочлена с целыми коэффициентами, например, /(ж) = х2 + 1. Затем выбираем некоторое конкретное значение х0 (это может быть 1 или 2 или случайно порожденное целое число) и последовательно вычисляем итерации Х1 = Л^о),	= ЛЛ^о)), Тз = ЛЛЛ^о))) и т.д. Таким образом, мы
полагаем
^+1 = ЛЖ;Л J = 0,1,2,...
После этого производится сравнение различных Xj с целью найти два, принадлежащих различным классам вычетов по модулю п, но одному классу вычетов по модулю некоторого делителя числа п. Как только такие Xj, Хк найдены, сразу находим собственный делитель числа п как НОД (xj — Хк, п).
Пример 1. Разложим на множители число 91, взяв /(ж) = х +1, х0 = 1. Имеем Х\ = 2, х2 = 5, х3 = 26 и т. д. Находим НОД (х3 — х2,п) = НОД (21,91) = 7, т.е. 7 — делитель. Конечно, этот пример тривиален: делитель 7 быстрее было найти пробным делением.
В ро-методе важно выбрать многочлен /(ж), отображающий Z/nZ в себя нерегулярным, «случайным» образом. Так, вскоре мы убедимся, что /(ж) должен не быть линейным многочленом и должен не порождать взаимно однозначное отображение.
156
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
Предположим теперь, что /(т) — «случайное» отображение Z/nZ в себя, и оценим, как долго нам придется ждать появления двух таких итераций Xj и х^, что Xj — х^ и п имеют нетривиальный общий делитель. Для этого для фиксированного (но не известного нам) делителя г числа п найдем типичную (б среднем по всем отображениям Z/nZ в себя и по всем значениям то) величину первого такого значения к, что Хк = Xj (mod г) при некотором j < к. Иными словами, мы рассматриваем /(аг) как отображение Т^тЪ в себя и интересуемся, сколько потребуется итераций до возникновения первого повторения Xj — х^ в ijri.
Предложение V. 2.1. Пусть S — множество из г элементов. Для отображения f множества S в себя и элемента xg Е S полагаем Xj+1 = f(xj), j = 0,1,2,... Пусть X — положительное вещественное число и пусть I = 1 + [\/2Аг]. Тогда доля пар (J, т0), для которых все x0,xj,.. . ,xt различны (где f пробегает все отображения из S в S, а Хд пробегает все элементы S), меньше е
Доказательство. Общее число рассматриваемых пар равно rr+1, так как существует всего г вариантов выбора для т0 и для каждого из г различных элементов х Е S имеется г вариантов выбора f(x). Сколько существует таких пар (f,xg), для которых хд,хг, ...,Х[ различны? Значение т0 можно выбрать г способами, значение f(xg) можно выбрать г — 1 способами (так как f(x0)	т0), значение
можно выбрать г - 2 способами и т. д., пока функция f не будет определена для всех xq, Т],... ,z/_i- Значения функции f на остальных значениях аргумента произвольны и имеется г вариантов их выбора. Поэтому общее число таких способов выбора т0 и задания функции f(x), что все xo,xi,... ,xt различны, равно
1=о
а доля тех пар, которые обладают указанным свойством (отношение г+1 \
приведенного выражения кг	равна
г”''1	= П г) •
1=0	1=1 4	'
Предложение утверждает, что логарифм этого выражения меньше -X (где I — 1 + [^2Аг]). Чтобы доказать это, возьмем логарифм произведения в правой части и используем неравенство log(l — х) < -х при О < х < 1 (на геометрическом языке это означает, что логарифмическая кривая лежит ниже касательной к ней в точке (1,0)). Используя
§ 2. РО-МЕТОД
157
формулу для суммы первых I натуральных чисел, получаем
что и требовалось показать. Предложение доказано.
Предложение V. 2. 1 дает оценку для вероятного времени работы ро-метода при условии, что выбранный многочлен ведет себя как «случайное» отображение Z/rZ в себя. Прежде чем обсуждать эту оценку, мы изложим более эффективную версию ро-метода.
Напомним, что ро-метод состоит в последовательном вычислении хк = f(xk_1) и сравнении ж*, с ранее полученными Xj до тех пор, пока не найдется пара с НОД (хк - Xj,n) = г > 1. Однако с ростом к вычисление НОД (ж*, - Xj,n) для всех j < к становится очень трудоемким. Покажем теперь, как надо действовать, чтобы при каждом к вычислять лишь один НОД. Сначала заметим, что если при некоторых к0, j0 для делителя г числа п выполняется сравнение хко = Xj0 (mod г), то хк = Xj (mod г) для любой последующей пары индексов j, к, имеющих ту же разность: к — j = к$ — у0 = т- Чтобы убедиться в этом, достаточно к сравнению хко = Xj0 (mod г) применить т раз многочлен f.
Опишем теперь работу алгоритма. Последовательно вычисляя хк, на. каждом шаге делаем следующее. Пусть к является (/г ф 1)-разрядным целым числом в двоичной системе счисления, т.е. 2Л ф к 2Л+1. Пусть j — наибольшее число из h двоичных разрядов: j = 2h - 1. Сравниваем хк с Xj, т.е. вычисляем НОД (хк — Xj,n). Если в результате получаем нетривиальный делитель числа п, то останавливаемся, если нет, то переходим к к ф 1.
Преимущество этой модификации состоит в том, что при каждом к вычисляется лишь один НОД, а недостаток — в том, что алгоритм может пропустить первый такой момент к®, что НОД (хко - Xj0,n) = г > 1 при некотором j0 < Ар- Однако довольно быстро пара элементов xk,Xj, разность которых имеет нетривиальный общий множитель с п, все же будет обнаружена. А именно, пусть j = 2/l+1 — 1 и к = j + (^o_Jo)- Тогда; — максимальное (Лф 1)-разрядное число, к состоит из h ф 2 разрядов, при этом НОД (хк — Xj,n) > 1. Заметим, что к < 2л+2 _ 4 2^ 4А.о
Пример 2. Вернемся к примеру 1, но теперь будем сравнивать каждое хк лишь с тем Xj, для которого j является наибольшим из меньших к чисел вида 2h — 1. Для п = 91, /(ж) = ж2 ф 1, х0 = 1 имеем Ж1 = 2, жг = 5, ж3 = 26, как и выше, и ж4 = 40 (так как 262 ф 1 = 40 (mod 91)). Следуя описанному выше алгоритму, находим
158
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
делитель числа п, вычисляя НОД (х4 - х3, п) = НОД (14,91) = 7.
Пример 3. Разложить на. множители число 4087, используя /(х) = X1 + X + 1 И Xq = 2.
Решение. Проводим вычисления в следующем порядке:
xi = /(2) = 7; НОД (aij - х0, п) = НОД (7 - 2,4087) = 1;
х2 = /(7) = 57; НОД (х2 -	, п) = НОД (57 - 7,4087) = 1;
х3 = f(57) = 3307; НОД (х3 - х3,п) = НОД (3307 - 7,4087) = 1;
,т4 = /(3307) = 2745 (mod 4087);
НОД (ж4 - х3,п) = НОД (2745 - 3307,4087) = 1;
х5 = /(2745) = 1343 (mod 4087);
НОД (ат5 - х3,п) = НОД (1343 - 3307,4087) = 1;
х6 = /(1343) = 2626 (mod 4087);
НОД (х6 - г3,п) = НОД (2626 - 3307,4087) = 1;
х7 = /(2626) = 3734 (mod 4087);
НОД (х7 - х3,п) = НОД (3734 - 3307,4087) = 61.
Итак, мы получили 4087 = 61  67. Разложение найдено.
Предложение V.2.2. Пусть п — нечетное составное целое число иг— его нетривиальный делитель, не превосходящий у/п (т. е. г|п, 1 < г < у/п-/мы хотим найти такое г). Пусть пара (/, г0), состоящая из многочлена / с целыми коэффициентами и начального значения xq, выбрана так, что ведет себя подобно «случайной» паре (/, Xq) в смысле предложения V. 2. 1 (/ отображает Z/rZ в себя, Xq — целое число). Тогда ро-метод выявляет делитель г за О(</п log3 п) двоичных операций с высокой степенью вероятности. Точнее, существует такая константа С, что для любого вещественного положительного числа X вероятность того, что ро-метод не найдет нетривиального делителя числа п за C'/X'/niog п
„	-А
двоичных операции, меньше е
Доказательство. Пусть — такая константа, что НОД (у — z,n) можно вычислить за 6/log3п двоичных операций, если у, z п (см. §1.3). Пусть С2 — такая константа, что наименьший неотрицательный вычет из /(ж) по модулю п можно вычислить за С/ log2 п двоичных операций, если х < п (см. §1.1). Если к0 — первый из индексов, для которых существует /0 < со свойством XkQ = Xj0 (mod г), то ро-метод в том виде, как он был описал выше, позволяет найти г на k-м. шаге, где k < 4&0. (Строго говоря, может
§ 2. РО-МЕТОД
159
случиться, что НОД (хк — Xj,n) > т, т.е. НОД ((ж/- — х^/туп/т) > 1. Однако вероятность случайно выбрать целое число, не взаимно простое с п/r, мала, особенно если п — произведение небольшого количества больших простых чисел. Поэтому мы пренебрежем этой возможностью, которая, в худшем случае, потребовала бы увеличения константы в предположениях предложения V. 2. 2.)
Таким образом, число двоичных операций, необходимых для нахождения г, ограничено величиной 4&o(C'i log3 п + С2 log2 п). Согласно предложению V.2.1 вероятность того, что kQ > 1 + х/2Лт, меньше е~ . Если k0 1 + х/2Лг, то число двоичных операций, необходимых для нахождения г, оценивается (с учетом того, что г < у/ri) величиной 4(1+л/2Аг)(С’1 log3 п + С? log2 п) < 4(1 + \/2х/ГХ\/п)(С1 log3 п+С? log2 п).
Если мы выберем С несколько больше, чем 4y/2(Ci + С2) (позаботившись о прибавлении 1), получим, что, как и утверждалось, делитель г будет найден за Сх/Л-Уп log п двоичных операций, если только мы не сделаем неудачного выбора пары (/, яг0), вероятность -А чего меньше е
Замечания. 1. Основное предположение, лежащее в основе ро-метода, состоит в том, что можно найти многочлены, которые ведут себя подобно случайным отображениям в смысле предложения V. 2.1. Этого доказано не было. Однако практический опыт разложения чисел ро-методом позволяет предположить, что «случайный» многочлен ведет себя подобно случайному отображению и что есть очень простые многочлены (чаще всего используется fix') = х2 + 1), обладающие этим свойством «случайности».
2. Согласно предложению V.2.2, если мы выберем Л достаточно большим, чтобы быть уверенными в успехе (например, выберем Л — 9, тогда е А ~ 0,0001), то мы почти наверное разложим число п за 36*у/п log3 п двоичных операций.
УПРАЖНЕНИЯ
В упражнениях 1-4 применить ро-метод с указанными f(x) и го для разложения заданного числа п. В каждом случае сравнивать х^ лишь с Xj, для которого j = 2Л — 1, если к является (h + 1)-разрядным двоичным числом.
1.	х2	—	1,	хо = 2,	п = 91.
2.	х2	+	1,	хо = 1,	п = 8051.
3.	х2	-	1,	zo = 5,	п = 7031.
4.	х3	+	х	+ 1, хо = С п = 2701.
5.	Пусть множество S состоит из г элементов, а отображение f в паре (/, хо) пробегает все биекции S на себя (т. е. / : S —► S есть взаимно однозначное соответствие S с самим собой, т. е. никакие два разных элемента не имеют одинакового
160
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
образа при отображении /). Как и прежде, пусть Xj + l = f(xj), j = 0,1,... Для каждой пары (f, хо) пусть к обозначает первый из таких индексов, для которого найдется j < к со свойством xj = х^. Доказать, что:
а)	к не превосходит г и принимает каждое значение от 1 до г с вероятностью 1 /г;
б)	среднее значение для к равно (г + 1)/2 (среднее берется по всем парам (/, хо), гДе f — биекция).
6. Используя упражнение 5, объяснить, почему в ро-методе в качестве /(х) никогда не следует брать линейный многочлен ах + 6.
7. Предположим, что ро-метод используется для разложения числа, имеющего простой делитель г. В качестве функции для итерации решено взять /(х) = х2. (Это плохой выбор, что станет ясно ниже.) Нас интересует первое значение к, при котором хj. = Xj (mod г) для некоторого j < к, т.е. первое значение к, при котором не все хд, xj, . . . , х^ различны (по модулю г). Предположим, что в качестве хд выбран порождающий элемент группы (Z/rZ)*. Положим г — 1 = 231, где t нечетно.
а)	Написать сравнение по модулю г — 1, эквивалентное соотношению xj, = х/ (равенство обозначает сравнение по модулю г).
б)	Найти первые значения к и I, для которых выполнено условие из а), выразив ответ в терминах s и двоичного разложения дроби 1/t.
в)	Сколь велико должно быть к по сравнению с г? Почему сделанный выбор функции /(х) является плохим для ро-метода?
ЛИТЕРАТУРА к §2 ГЛАВЫ V
1.	Blair W.D., Lacampagne С. В., Selfridge J.L. Factoring large numbers on a pocket calculator. — Amer. Math. Monthly, 1986, v. 93, p. 802-808.
2.	Brent R. P. An improved Monte Carlo factorization algorithm. — BIT, 1980, v. 20, p. 176-184.
3.	Brent R. P., Pollard J. M. Factorization of the eighth Fermat number. — Math. Comp., 1981, v. 36, p. 627-630.
4.	Guy R. K. How to factor a number. — In: Proceedings of the 5th Manitoba Conference on Numerical Mathematics, 1975, p. 49-89.
5.	Pollard J. M. A Monte Carlo method for factorization. — BIT, 1975, v. 15, p. 331— 334.
§ 3. Факторизация Ферма и факторные базы
Факторизация Ферма. Как мы видели раньше (см. упражнение 3 к § I. 2 и упражнение 4 к § IV. 2), существует способ факторизации составного числа п, который эффективен, если п — произведение двух целых чисел, близких одно к другому. Этот метод, называемый «факторизацией Ферма», основывается на том факте, что п в этом случае равно разности двух квадратов, значение одного из которых очень невелико.
§ 3. ФАКТОРИЗАЦИЯ ФЕРМА И ФАКТОРНЫЕ БАЗЫ
161
Предложение V.3.I. Пусть п — натуральное число. Существует взаимно однозначное соответствие между факторизациями п в виде п = аб, где а Ъ > 0, и представлениями числа п в виде / — з2, где s и t — неотрицательные целые числа. Это соответствие дается уравнениями:
а + b а - b t = ----, s = -----, а = t + s, о = t — з.
2	2
Доказательство. Если дана такая факторизация, мы пишем п = ab = ((а ф Ь)/2)2 - ((а - 6)/2)2, таким образом, мы получаем представление в виде разности двух квадратов. Обратно, если дано 2	2
что п = t — з , мы можем разложить правую часть на множители: (Z + з)(/ - з). Приведенные в предложении уравнения дают в явном виде взаимно однозначное соответствие между двумя способами представления числа п.
Если п = ab, где а и b близки друг к другу, то з = (а —Ь)/2 мало, и таким образом, t лишь немного больше у/п. В этом случае мы можем найти а и Ь, пробуя все значения для t, начиная с [\/д| + Д пока не 2	2
найдем такое значение, при котором t — п = s есть полный квадрат.
Везде в дальнейшем мы будем предполагать, что п никогда не является полным квадратом; тем самым нам не нужно беспокоиться о тривиальных исключениях в тех или иных процедурах и утверждениях.
Пример 1. Разложить на множители 200819.
Решение. Имеем [д/200819] + 1 = 449. Находим, что 4492 -200819 = 782, и это не есть полный квадрат. Далее, мы пробуем t = 450: 4502 - 200819 = 1681 = 412. Итак, 200819 = 4502 - 412 = (450 + 41)(450 — 41) = 491 -409.
Заметим, что если даже а и b в разложении п = ab не близки, то метод факторизации Ферма все равно найдет а и Ь, но только после большого числа проб для t = [д/та] + 1, |д/п] + 2,.. . Существует обобщение метода факторизации Ферма, которое зачастую работает лучше в такой ситуации. Мы выбираем малое к, последовательно полагаем t = [y/kn] + 1, [у/кп] + 2 и т. д. до тех пор, пока не получим такое t, для которого t — кп = з является полным квадратом. Тогда (t + s/t - s) = кп, и, таким образом, t + з имеет с п общий нетривиальный делитель. Он может быть найден путем вычисления НОД (<4-з, п).
Пример 2. Разложить на множители 141467.
Решение. Если мы попытаемся использовать факторизацию Ферма, полагая t = 377,378,..., то через некоторое время мы утомимся пробовать различные t. Однако, если мы будем пробовать t = [г/Зп]+1 = 652,... , мы скоро обнаружим, что 6552-3-141467 — 682;
162
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
тогда мы вычислим НОД (655 + 68,141467) = 241. Мы получаем тем самым, что 141467 = 241 • 587. Обобщенная факторизация Ферма при к = 3 дала результат потому, что в разложении п = ab множитель b близок к За. При к = 3 нам пришлось пробовать только четыре значения t, тогда как при простой факторизации Ферма (т.е. с к = 1) пришлось бы испробовать 38 значений t.
Факторные базы. Еще одно обобщение идеи, лежащей в основе факторизации Ферма, приводит к значительно более эффективному методу факторизации. А именно, если нам удается получить сравнение вида /2 = s2 (mod п) с / ±s (mod п), то можно сразу найти множитель числа п, вычисляя НОД (Z-f-s, п) (или НОД (t - s, п)). Действительно, п делит t2 — s2 = (i + s)(t — s), но не делит ни t + 5, ни t — з; таким образом, НОД (2 + з,п) должен быть собственным делителем а числа п, и тогда b = п/а делит НОД (/ — s,n).
Пример 3. Предположим, что мы хотим разложить на множители 4633 и замечаем, что 118 = 25 = 5 (mod 4633). Тогда мы находим, что НОД (118 + 5,4633) = 41, а НОД (118 - 5,4633) = 113, и 4633 = 41 • ИЗ.
Скептик, скорее всего, усомнится в том, что в примере 3 можно было угадать число 118, наименьший положительный вычет квадрата. которого является полным квадратом. Возможно ли при случайном выборе разных b быстро получить такое значение, что наименьший положительный вычет b по модулю п есть полный квадрат? Это крайне маловероятно, если п велико. Поэтому возникает необходимость обобщить этот подход таким образом, чтобы он допускал значительно большую свободу при выборе тех Ь, для которых мы рассматриваем Ь2 (mod п). Идея заключается в выборе нескольких 6г, обладающих тем свойством, что Ъ2 (mod п) есть произведение степеней малых простых чисел, а произведение некоторого подмножества bi дает число, сравнимое по модулю п с полным квадратом. Перейдем теперь к деталям.
Под «наименьшим абсолютным вычетом» числа а по модулю п мы понимаем целое число в интервале от —п/2 до п/2, сравнимое с а. Мы будем обозначать его a (mod п).
Определение. Факторной базой называется множество В = {pi,P2,    ,Ph}, состоящее из различных простых чисел, кроме числа Pi, которое может равняться —1. Мы скажем, что квадрат числа b есть В-число (при заданном п), если наименьший абсолютный вычет Ъ2 (mod п) можно записать как произведение чисел из В.
Пример 4. Пусть п = 4633 и В ~ { — 1,2,3}. Тогда квадраты трех целых чисел — 67, 68, 69 являются В-числами. Действительно, 672 = -144 (mod 4633), 682 = -9 (mod 4633), 692 = 128 (mod 4633).
§ 3. ФАКТОРИЗАЦИЯ ФЕРМА И ФАКТОРНЫЕ БАЗЫ
163
Пусть f£ обозначает векторное пространство над полем из двух элементов, которое состоит из наборов нулей и единиц, по h в каждом наборе. Если дано п и факторная база В, состоящая из h чисел, то каждому В-числу можно сопоставить некоторый вектор Е g F2. А именно, запишем b2 (mod п) в виде П>=1 и положим j-ю компоненту Ej равной oij (mod 2), т.е. Ej = 0, если oij четно, и Ej = 1, если о; нечетно.
Пример 5. В ситуации примера 4 вектор, соответствующий 67 — это (1,0,0), числу 68 соответствует также (1,0,0), а числу 69 — вектор (0,1,0).
Предположим, что у нас есть такое множество В-чисел bi (mod n), что сумма соответствующих векторов Е = (ел,...,£д) есть нулевой вектор в f£. Тогда произведение наименьших абсолютных вычетов Ь2 равно произведению четных степеней всех Pj, входящих в В, т.е. если для каждого i обозначим через аг наименьший абсолютный вычет Ь2 (mod п) и положим аг = П^=1 P°j'’ 1 то получим
h
7 = 1
показатель каждого pj в правой части — четное число. Тогда правая часть равенства есть квадрат числа Пj Pj’ г гДе 7j =	Та-
ким образом, наименьшие положительные вычеты b = 6г (mod п) и с = П; р]1 (mod п), полученные совершенно различными путями (одно — как произведение чисел 6,„ другое — как произведение чисел Pj), имеют квадраты, сравнимые по модулю п.
Если оказывается, что b = ±с (mod m), то нам не повезло, и мы должны начать снова, с другой совокупностью В-чисел, у которых соответствующие им векторы дают в сумме нуль. Так произойдет, например, если мы по недосмотру выберем все bi < ^п/2\ все векторы будут тогда нулевыми, и мы придем в итоге к тривиальному сравнению.
Однако при составном п и более случайном выборе bi следует ожидать, что b и с будут сравнимыми (с точностью до ±1) по модулю п не более чем в 50% случаев. Дело в том, что квадрат по модулю п имеет 2Г 4 квадратных корней, если п имеет г 2 различных простых множителей (см. упражнение 7 к § I. 3); значит, случайный квадратный корень из Ь2 лишь с вероятностью 2/2г	| совпадает
с b или —Ь. А если у нас есть такие b и с, что b2 = с2 (mod п), но b ±с (mod п), мы сразу можем найти нетривиальный множитель НОД (6 + с, п). Таким образом, если мы к раз повторяем описанную
164
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
процедуру нахождения Ь и с для получения пары, дающей нетривиальный делитель п, то вероятность неудачи в результате всех этих к попыток не превосходит l/2fc.
Как же практически выбирать факторную базу В и 6г? Один из методов: в качестве В взять первые h простых чисел (или первые h- 1 простых и р\ = —1); числа bi выбирать случайно, пока не найдется несколько таких, что их квадраты — В-числа. Другой метод: выбрать сначала, несколько чисел bi, для которых bi (mod п) (наименьшие абсолютные вычеты) малы по абсолютной величине (например, выбрать bi близкими к у/кп для малых к или так, как будет описано в § 4). Затем выбираем в качестве В небольшую совокупность малых простых чисел (включая в него также рг = -1), чтобы несколько 62 (mod п) можно было выразить через числа из В.
Пример 6. В ситуации примеров 4-5 мы выбирали 67 и 68, так как они близки к у/4633. Обнаружив, что 67 = -144 (mod 4633), 682 = -9 (mod 4633), мы положили В = {-1,2,3}. Как мы видели, числам 67 и 68 соответствуют векторы (1,0, 0), и их сумма — нулевой вектор. Поэтому b = 67-68 = -77 (mod 4633) и с = 272373 (степенью -1 в с мы можем пренебречь), т. е. с = 36. Так как —77 У ±36 (mod 4633), то мы находим делитель, вычисляя НОД ( — 77 + 36,4633) = 41.
Сколько нужно иметь bi, чтобы можно было найти сумму е,, равную нулевому вектору? Другими словами, какой объем должна иметь совокупность векторов из Е2л_цтобы она содержала в себе подмножество векторов с нулевой суммой, т.е. чтобы она была линейно зависимой над полем F2. Согласно основам линейной алгебры (справедливым над полем F2 так же, как и над полем вещественных чисел) любые h ± 1 векторов линейно зависимы. Поэтому в худшем случае нам нужно образовать h, ± 1 различных В-чисел, чтобы найти первый пример сравнения вида ПЛ = (П; рр) (modn). (Пример 6 показывает, что линейно зависимые векторы могут получиться и раньше; в этом примере h = 3, а мы остановились, найдя два В-числа). Если h велико, то, возможно, поверхностный просмотр не позволит выделить подмножество векторов с нулевой суммой. В этом случае нам следует записать векторы в виде строк матрицы и с помощью методов линейной алгебры (обнуляя строки) найти множество линейно зависимых строк.
Пример 7. Пусть п = 4633. Найти такую наименьшую факторную базу В, чтобы квадраты 68, 69 и 96 были В-числами, и затем разложить 4633.
Решение. Как мы уже убедились, 682 (mod п) и 692 (mod п) являются произведениями чисел —1,2 и 3; так как 962 = —50 (mod п),
§ 3. ФАКТОРИЗАЦИЯ ФЕРМА И ФАКТОРНЫЕ БАЗЫ
165
наименьшие абсолютные вычеты всех трех квадратов можно выразить через элементы факторной базы В = { — 1,2, 3,5}. Мы уже нашли векторы Ej = (1,0, 0,0) и е2 = (0,1,0,0), отвечающие, соответственно, 68 и 69. Так как 962 = -50 (mod 4633), то е3 = (1,1,0,0). Эти три вектора, имеют нулевую сумму, поэтому возьмем 6 = 68-69-96 = 1031 (mod 4633) и с = 24-3-5. Находим: НОД (1031 + 240,4633) = 41.
Примеры 6 и 7 демонстрируют систематический способ поиска нескольких bi таких, что наименьшие абсолютные вычеты bi (mod n) оказываются произведениями малых простых чисел. Вероятность того, что 62 (mod п) есть произведение малых простых, увеличивается, если этот вычет мал по абсолютному значению. Таким образом, мы можем последовательно пробовать целые числа bi, близкие к \/Гкп для малых значений к. Например, мы можем выбрать , [-y/Am] + 1 для к = 1,2,...
Пример 8. Разложим на множители п = 1829, выбирая в качестве bi все такие числа [У1829А:], [ч/1829А:] + 1 , к = 1,2,..., что Ь2 (mod п) есть произведение простых чисел, меньших 20. Представляем такие числа в виде bi (mod n) = JJ. и составляем таблицу из aij. Рассмотрев к = 1,2,3,4, получаем таблицу, в которой первым элементом j-ro столбца является pj, а элемент этого столбца в строке, соответствующей значению bi, — это показатель, с которым pj входит в разложение 62 (mod п).
bi	-1	2	3 5	7	11 13
42	1	—	- 1	—	- 1
43	—	2	- 1	—	— —
61	—	—	2 -	1	— —
74	1	—	— —	—	1 -
85	1		— —	1	- 1
86	—	4	- 1	—	— —
Ищем теперь множества	строк,		у которых		суммы элементов в ка-
ждом столбце четны. Сразу видно, что сумма 2-й и 6-й строк четная: -6-2----------. Это дает сравнение (6266)2 = (26?/252?/2)2 (mod п), т.е.
(43-86)2 = 402 (mod 1829). Но так как 43-86 = 40 (mod 1829), мы нашли лишь тривиальное соотношение. Поэтому приходится искать другие подмножества строк, суммы которых содержат лишь четные элементы. Мы замечаем, что таковы строки 1, 2, 3 и 5; их сумма 2 222 2 — 2; это дает сравнение (42 • 43 • 61 • 85)2 = (2 • 3 • 5 • 7 • 13)2 (mod п), т.е. 14592 = 9012 (mod 1829). Мы получаем отсюда, что делителем 1829 является НОД (1459 + 901,1829) = 59.
166
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
Алгоритм факторных баз. Опишем теперь систематический метод факторизации очень большого п при помощи случайного выбора чисел Выбираем целое число у «промежуточной» величины, например, если п — 50-значное десятичное число, то выбираем в качестве у число с 5 или 6 десятичными знаками. Пусть В состоит из -1 и всех простых чисел, не превосходящих у. Выбираем случайным образом много 6г и пытаемся разложить 6, (mod п) (наименьшие абсолютные вычеты) в произведение чисел из В. Получив большое количество В-чисел b2 (mod п) (достаточно найти 7г(у) + 2 таких чисел, где 7г(г/) — число простых, не превосходящих у), вычисляем соответствующие векторы в F2 (где h = тг(у) + 1) и с помощью обнуления строк находим такое подмножество 6г, что сумма соответствующих векторов е, дает нулевой вектор. Затем образуем b = (mod п) и с = rij р]’ (mod п) так, как это было описано выше. Тогда b2 = с2 (mod п). Если b = ±с (mod п), повторяем действия с начала, с другой совокупностью В-чисел (или, что более эффективно, выбираем в матрице из ег другое подмножество строк с нулевой суммой, находя, если необходимо, несколько большее количество В-чисел и соответствующих им строк). Когда мы, наконец, получим Ь2 = с2 (mod п) и b ±с (mod п), вычисляем НОД (Ь + с, п), который и будет нетривиальным делителем п.
Эвристическая временная оценка. Мы дадим теперь очень грубый вывод оценки числа .двоичных операций, требующихся для факторизации очень большого п при применении описанного выше алгоритма. Мы воспользуемся несколькими упрощающими предположениями и приближенными соотношениями; в любом случае наш результат — лишь вероятностная оценка. Если нам очень не повезло при выборе алгоритм будет работать дольше.
Нам потребуются следующие факты.
Ф а к т 1 (формула Стирлинга). Приближенное значение log п! есть пlog п — п.
Слово «приближенное» означает, что разность величин растет при п —> оо много медленнее, чем п. Это соотношение можно доказать, заметив, что log п\ — сумма Римана для определенного интеграла .["(log х) dx = п log п — п + 1, построенная по крайним правым точкам разбиения [1, п] на отрезки единичной длины.
Ф а к т 2. Если N — натуральное число и и > 0, то общее число таких TV-выборок (qj, а25  • • > qn); состоящих из неотрицательных целых чисел, что	и, равно биномиальному коэффициенту
(МГ)-
§ 3. ФАКТОРИЗАЦИЯ ФЕРМА И ФАКТОРНЫЕ БАЗЫ
167
Здесь [и] обозначает функцию целой части (наибольшее целое число, не превосходящее и). Факт 2 можно доказать, если сопоставить каждой TV-выборке а некоторую TV-выборку (3 из чисел 1,2,..., TV + [и] по правилам: = од + 1 и /Зу+1 = (3j + oj+1 + 1 для j 1, т.е. мы выбираем числа (3j так, что между fij^ и (3j имеется aj чисел. Это дает взаимно однозначное соответствие между множеством TV-выборок а с од + • •  + aN и и множеством способов выбора TV чисел из совокупности TV -|- [и] чисел.
Основным этапом при оценке времени работы нашего алгоритма является оценка вероятности того, что случайное число, меньшее х, будет произведением простых чисел, меньших у (где у — число, значительно меньшее х). Прежде всего, обозначим через и дробь Таким образом, если х есть r-разрядное целое число в двоичной записи, а у — s-разрядное целое число в двоичной записи, то и близко к отношению г/в.
По ходу оценок удобно делать некоторые упрощения, пренебрегая малыми членами. Для этого будем предполагать, что и значительно меньше у. Как обычно, мы обозначаем через тг(у) количество простых чисел, не превосходящих у. Так как по теореме о простых числах 7г(у) приближенно равно у/ log у, мы предполагаем также, что и значительно меньше л(у'). В типичном практическом применении алгоритма мы можем выбирать для х, у, и приблизительно такие по величине значения:
х и 10 ;
у та 106 (так что 7г(у) « 7 • 104 и log у та 14);
и ~ 8.
Как обычно, пусть Ф(а7, ?/) обозначает число всех целых, не превосходящих х, которые не делятся ни на какие простые числа, большие у, т.е. число целых, которые можно записать в виде Пр/* х, где произведение берется по всем простым, не превосходящим у, и aj — неотрицательные целые числа. Существует очевидное взаимно однозначное соответствие между такими тг(у)-выборками неотрицательных целых чисел aj, что f[j PjJ z, и целыми числами, не превосходящими х, которые не делятся на простые числа, большие у. Логарифмируя, находим, что Ф(ж,у) равно числу целочисленных решений aj неравенства y^j=i aj l°gPj log х. Заметим теперь, что большинство простых pj имеет логарифмы, не намного меньшие, чем log у. Действительно, большинство простых, меньших у, имеют почти то же число цифр, что и у, лишь относительно немногие имеют существенно меньшее число цифр и, следовательно, много меньший логарифм. Поэтому мы позволим себе в предыдущем неравенстве заменить logpj на logy. Поделив обе части получившегося неравенства
168
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
на log?/ и заменив logх/log?/ на и, мы можем сказать, что Ф(ж,^) примерно равно числу решении неравенства 2>j=i аз и-
Сделаем теперь еще одно важное упрощение: заменим число переменных 7г(г/) на у. Это может, на первый взгляд, показаться довольно-таки опрометчивой модификацией нашей задачи. В самом деле, при замене тг(у) на у появляются дополнительные ненулевые слагаемые; однако оказывается, что они сокращаются, и итоговый результат получается тем же самым, что при значительно более точной аппроксимации Ф(х, у). Таким образом, мы будем предполагать, что Ф(ж, г/) приближенно равно числу неотрицательных целочисленных решений неравенства =1 aj и.
Используя факт 2 с N = у, мы получаем, что Ф (ш, у) приближенно равно Оценим теперь величину log (Ф(ж, ?/)/ж) — логарифм вероятности того, что случайно взятое целое число между 1 и г представляется в виде произведения простых чисел, не превосходящих у. Заметим теперь, что log ж = и log г/ по определению и, и применим полученное приближение для Ф(х, ?/) и факт 1:
,	/'^(х,у')\	,	/'([“] + J/)!\
log ------- ~ log \ п ,	- U log у
~ (Ы + у) log (Ы + 2/) - ([и] +
- ([и] log [и] - [и]) - (?/log у -у) - и log?/.
Сделаем еще несколько приближений. Во-первых, заменим [и] на и. Затем, учитывая, что и значительно меньше у (в силу нашего предположения), заменим log(^ + и) на log у. После сокращения получим:
------ I » -ulog?z,
X / т. е.
Ф0,2/) -и —------ ~ и
X
Отсюда, например, следует, что если х « 1048 и у » 106 (как выше), то вероятность того, что случайно выбранное целое число между 1 и х есть произведение простых чисел, не превосходящих у, равна примерно 1/88.
Теперь мы можем оценить число двоичных операций, используемых описанным выше алгоритмом факторных баз. Для простоты будем предполагать, что наша факторная база В состоит из первых h = 7r(j/) простых чисел, т.е. из всех простых, не превосходящих у. Для упрощения анализа мы будем также предполагать, что —1 не
log
§ 3. ФАКТОРИЗАЦИЯ ФЕРМА И ФАКТОРНЫЕ БАЗЫ
169
включается в В и что мы рассматриваем наименьшие положительные вычеты (а не наименьшие абсолютные вычеты) 6? (mod п).
Итак, мы оцениваем число двоичных операций, требующихся для выполнения следующих шагов.
Шаг 1. Выбираем случайно числа Ь, в интервале от 1 до п; находим наименьший неотрицательный вычет b, (mod п) и выражаем его, если это возможно, в виде произведения простых чисел, не превосходящих у, останавливаемся тогда, когда удается набрать 7г(г/) + 1 различных Ьг, для которых b2 (mod п) записываются как такие произведения.
Ш а г 2. Находим множество из линейно зависимых строк в соответствующей (0,1)-матрице размера (тг(г/) + 1) X тг(г/), чтобы получить сравнение вида 62 = с2 (mod п).
Ш а г 3. Если b = ±с (mod тг), то повторяем шаги 1 и 2 с новыми Ьг до тех пор, пока не получим сравнение b2 = с2 (mod п) с b ±с (mod п). Тогда находим нетривиальный множитель п, вычисляя НОД (Ь + с, п).
Если предполагать, что b2 (mod п) (понимаемые как наименьшие неотрицательные вычеты по модулю п) распределены равномерно между 1 и п, то в соответствии с приведенными выше соображениями нам придется выбрать порядка ии (где и = log п/ log у) чисел до появления такого bi, что b2 (mod п) есть произведение простых чисел, не превосходящих у. Мы решим позднее, как выбрать у, чтобы минимизировать время ожидания. Суть дела заключается в том, что, выбирая у большим, мы делаем ии малым и поэтому будем часто встречать bi, для которых bi (mod n) — произведение простых, не превосходящих у. Однако в этом случае разложение bi (mod п) в произведение таких простых (для чего нам придется проводить тг(?/) + 1 делений) и последующее обнуление строк матрицы становятся слишком трудоемкими операциями. С другой стороны, если выбрать у очень малым, то последние задачи станут легче, однако придется слишком долго ждать появления такого bi, что b, (mod п) разлагается в произведение простых чисел, не превосходящих у, так как в этом случае ии станет очень большим. Следовательно, у нужно выбирать в некоторой промежуточной области, чтобы избежать этих крайностей.
Чтобы решить вопрос о выборе у, мы сначала получим грубую оценку числа двоичных операций в терминах у (и, конечно, тг). Затем мы минимизируем ее по у (используя элементарные вычисления и некоторые упрощающие приближения) и найдем временную оценку для того у, который дает минимальное время работы.
Предположим, что п — r-разрядное, а у — .s-разрядное числа;
170
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
тогда и весьма близко к г/s. Прежде всего, сколько нужно двоичных операций для каждой проверки случайно выбранного 6,? Мы утверждаем, что это число операций полиномиально по г и у, т.е. что оно есть О(г11ка') для некоторых (довольно малых) целых чисел k и I. Для порождения случайного бита требуется некоторое фиксированное время и, таким образом, нужно О(г) двоичных операций, чтобы породить случайное целое число между 1 и п. Далее, вычисление b2 (mod п) требует О(г2) двоичных операций. Затем нам придется последовательно делить 6- (mod п) на все простые числа, не превосходящие у, на которые оно делится без остатка (или на степени таких простых), надеясь после всех делений получить 1. Простой способ проделать это (хоть и не самый эффективный) — делить на два и затем на все нечетные простые р от 3 до у, записывая по ходу дела, на какую степень р происходит деление без остатка. Заметим, что если р — не простое, то оно не делит без остатка, так как его простые сомножители были уже удалены из 62 (mod п). Так как деление r-разрядного целого числа на s-разрядное целое число в двоичной системе счисления проводится за время O(rs), то каждая проверка случайно выбранного 6г требует O(rsy') двоичных операций.
При выполнении шага 1 придется проверить приблизительно ди(тг(?/)+ 1) значений 6,-, чтобы найти 7г(г/) + 1 таких значений 6^, что 6г (mod п) представляется в виде произведения простых, не превосходящих у. Так как 7г(у) ~	= Р{у/з), то на шаг 1 затрачивается
О(иигу2) двоичных операций.
Шаг 2 включает в себя операции со сложностью, полиномиальной по у и г (такие, как преобразования матриц и нахождение b и с по модулю п). Таким образом, шаг 2 выполняется за O(y7r/l) двоичных операций для некоторых целых j и h. При каждом выполнении шагов Г-2 вероятность успеха, т.е. нахождения b ±с (mod п), не меньше 50%. Точнее, вероятность успеха равна 50%, если п делится в точности на два разных простых числа, и больше, если п имеет более двух простых делителей. Поэтому, если нас устраивает, скажем, ве-роятность 1-2 нахождения нетривиального делителя п, то шаги 1-2 нам достаточно пройти 50 раз. Принимая эту величину достаточной для практических целей, при подходящих целых k и h получаем окончательную оценку
<9(50(uUT’2 у2 + yj	= O(r/lu“j/J) = 0{rhuueks) = О(т\г / s')r/aeka').
Мы найдем теперь у — или, что равносильно, s, — для которого эта оценка минимальна. Так как число г бит в записи п фиксированно, это означает минимизацию (r/s) е по s, или, что эквивалентно,
§ 3. ФАКТОРИЗАЦИЯ ФЕРМА И ФАКТОРНЫЕ БАЗЫ
171
минимизацию его логарифма, который равен log -s + ks. Для этого мы полагаем
d /т т \ т / т \	т т
° = di blog; +ks) = (log j +0 + i “ -?10g; + *•
т.е. мы выбираем s так, чтобы ks было примерно равно ~ log , другими словами, чтобы два сомножителя в (r/s)rlseks были примерно равны между собой. Так как к — константа, из последнего приближенного равенства следует, что порядки з2 и г log (г/s') = г (log г - logs) одинаковы; поэтому s имеет порядок величины между у/r и log г. Значит, logs близок к |logr. Делая подстановку logs « | log г, мы приводим полученное выше соотношение к виду
уйlogr
О ~----т- log г + к или s »
2s2
Оценим теперь время работы при этом значении s. Так как при оптимальном выборе s множители (r/s)rSs и екз приблизительно равны по величине, то временная оценка упрощается: О(е 3) = ту Заменяя константу у/2к на С, мы, наконец, приходим к следующей оценке числа двоичных операций, затраченных на фак-z, / Cy/r log Г\ торизацию r-разрядного двоичного числа п: О(е ).
Приведенные выше выкладки не являются строгими. Мы не пытались обосновывать наши упрощения или оценивать погрешности в приближенных равенствах. К тому же как сам алгоритм, так и наша оценка времени его работы — вероятностные.
До последнего времени, пока не был изобретен метод решета в числовом поле (см. замечание в конце § 5), все оценки времени работы самых лучших универсальных алгоритмов факторизации имели вид 0(eC^rlog г). В некоторых случаях оценки доказывались строго, а в иных — основывались на правдоподобных, но не доказанных предположениях. Оценки для различных алгоритмов различались, в основном, константой С в показателе. В этом отношении история задачи факторизации совершенно не похожа на историю рассмотренных в § 1 критериев простоты, где улучшение временных оценок (в особенности в детерминистических тестах на простоту) было прямо-таки поразительным. Подробный обзор и сравнение методов факторизации, которые были известны к началу 80-х гг., имеется в статье Померанца (Pomerance) 1982 г., указанной в приводимом ниже списке литературы.
172
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
Замечание. Так как г = O(logn), приведенную выше временную оценку можно выразить в виде
Time (Разложить n) = O(eC'/lognlogIog n).
За исключением метода решета в числовых полях, эвристические оценки времени работы всех асимптотически быстрых универсальных факторизационных алгоритмов имеет указанный выше вид при С = 1 + Е, где £ произвольно мало.
Применения к RSA. Напомним, что надежность криптосистемы с открытым ключом RSA (см. §IV.2) основана на том, что разложение на множители очень большого числа п вида п = pq требует значительно больших затрат времени, чем действия, которые должны выполнять законные пользователи системы и сложность которых (как при проверке простоты) является полиномиальной или почти полиномиальной функцией от числа г бит в п. Мы только что видели, почему при анализе факторизационных алгоритмов часто возникают временные оценки вида 0(еС rlogr). Так как полиномиальную функцию от г можно записать в виде 0(eC'logr), то для больших г время, затрачиваемое на факторизацию, много больше времени работы полиномиальных или почти полиномиальных алгоритмов. (Однако факториза-ционные алгоритмы с временной оценкой 0(еС rlogr) для больших г лучше, чем ро-метод, временная оценка которого — приблизительно 0(^/п) = 0(еСг), где С = |log2.)^
Наконец, отметим, что вопрос о замене log г в показателе меньшей функцией от г — это не единственный вопрос, имеющий практическое значение при оценке надежности системы RSA. В конце концов, полиномиальная функция от числа г бит становится значительно „	z , С2 х/r log г
меньшей, чем С^е	, лишь когда г велико, а насколько велики
такие значения г, в сильной степени зависит от констант Ci и С?. Поэтому даже построение алгоритма факторизации с той же временной оценкой, но с меньшими константами, повлияло бы на оценку надежности системы RSA с открытым ключом.
УПРАЖНЕНИЯ
1.	Использовать факторизацию Ферма, чтобы разложить на множители:
а) 8633; б) 809009; в) 92296873; г) 88169891; д) 4061.
2.	Показать, что если делитель числа п отстоит от i/n не более, чем на у/п, то факторизация Ферма дает результат при первой попытке (т.е. для t = [у/п] + 1).
3.	а) Доказать, что обобщенная факторизация Ферма не позволяет найти делитель большого нечетного числа п, если выбрано к = 2 или если к — любое целое число, делящееся на 2, но не на 4.
§ 3. ФАКТОРИЗАЦИЯ ФЕРМА И ФАКТОРНЫЕ БАЗЫ
173
б) Доказать, что если к = 4 и если обобщенная факторизация Ферма работает для некоторого t, то и «простая» (с к = 1) факторизация Ферма работает столь же хорошо.
4.	Использовать обобщенную факторизацию Ферма, чтобы разложить на множители:
а) 68987; б) 29895581; в) 19578079; г) 17018759.
5.	Пусть п = 2701. Использовать В-числа 521 2 3 4,532 (mod п) (при подходящей факторной базе В), чтобы разложить 2701. Какие векторы е соответствуют 52 и 53?
6.	Пусть п = 4633. Использовать 68, 152 и 153 с соответствующей факторной базой В, чтобы разложить 4633. Каковы соответствующие векторы?
7.	а) Доказать, что log n! — (n log п — n) = O(log п).
б)	Вывести более точную оценку log n! — ((n + |) log п — п) = 0(1).
в)	Каково математическое ожидание log j для случайно выбранного j в интервале от 1 до у!
8.	а) Какова вероятность того, что к случайно выбранных векторов в FJ линейно независимы (при к п)?
б)	Какова вероятность того, что 5 случайно выбранных векторов в F® образуют базис?
9.	Пусть п — r-разрядное двоичное целое число. На какой множитель умножается каждое из выражений у/п (которое входит во временную оценку для ро-метода) и ел/г log г (которое входит во временную оценку для метода факторных баз), когда п возрастает от 50-значного десятичного числа до 100-значного?
10.	а) Пусть /(з) — положительная монотонно убывающая функция, а — положительная монотонно возрастающая функция на некотором интервале. Предположим, что /(so) = ff(so)- Доказать, что функция h(s) — f(s) + д(з) «по существу» достигает минимума в точке so в том смысле, что минимальное значение h(s) лежит между fi(so) и ^h(so).
б) Предположим, что /(s) >1 — монотонно убывающая функция, g(s) >1 — монотонно возрастающая функция на интервале и /(so) = g(so). Доказать, что A(s) = /(s)g(s) «по существу» достигает минимума в точке Зд в том смысле, что минимальное значение Zi(s) лежит между fi(so) и y/h(so).
в) Используя часть б), показать, что функция h(s) = (г/з)гI’екя на интервале (0, г) (здесь к иг — положительные константы) «по существу» достигает своего минимального значения при (r/s)r/s = екз.
ЛИТЕРАТУРА к § 3 ГЛАВЫ V
1. Dickson L. Е. History of the Theory of Numbers. Vol. 1. N.Y.: Chelsea, 1952.
2. Kraitchik M. Theorie des nombers. Vol. 2. Paris-Montrouge: Gauthier-Villars, 1926.
3. Lehman R. S. Factoring large integers. — Math. Comp., 1974, v. 28, p. 637-646.
4. Pomerance C. Analysis and comparison of some integer factoring algorithms. —
Computational Methods in Number Theory. Part I. Amsterdam: Mathematic Centrum, 1982.
174
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
§ 4. Метод цепных дробей
В последнем параграфе мы видели, что эффективность метода факторных баз для нахождения нетривиального делителя большого составного натурального числа п зависит от наличия хорошего метода получения целых чисел b между 1 и тг, для которых наименьший абсолютный вычет b (mod тг) разлагается в произведение малых простых чисел. Вероятность такого разложения тем больше, чем меньше значение наименьшего абсолютного вычета b2 (mod п). В этом параграфе мы опишем метод (восходящий к Лежандру) поиска многих b с тем свойством, что |62 (mod п)| < 2у/п. Этот метод использует «цепные дроби». Поэтому мы начнем с краткого введения в теорию представления вещественных чисел в виде цепных дробей. Наше описание коснется лишь свойств, которые потребуются в дальнейшем. Более подробное изложение теории цепных дробей можно найти, например, в классической книге Давенпорта (Davenport), см. ссылки в конце параграфа*.
Цепные дроби. Для вещественного числа х построим его разложение в виде цепной дроби следующим образом. Пусть яд = [ж] ([ж] — наибольшее целое число, не превосходящее ж). Положим 2г0 = X — Яд; ПуСТЬ Я| = [l/z] И 2Д = l/zg — Я| ; для i > 1 положим Я; = [1/я:г_1] и Xi = [/хг_1 — ai. Когда оказывается, что l/x^i — целое число, то Xi = 0 и процесс прекращается. Нетрудно понять, что процесс заканчивается в том и только том случае, когда х — рациональное число (потому что в этом случае дроби Xi — рациональные числа с уменьшающимися знаменателями). В силу построения чисел яд,я15...,я; для каждого i мы можем записать:
1 х = я0 + -------------------,
а1 н------------
я2 + • • •	•
O'i + Xi что обычно записывается в более компактной форме:
1
1 1 1
х = яд Н--------------- ’'------•
+ <22 d“ аз +	<2j + Х^
Предположим, что х — иррациональное вещественное число. Если мы выполняем описанное разложение до г-го члена и затем
удаляем xt
* На русском языке теория цепных дробей излагается в книгах А.Я.Хинчина «Цепные дроби» (М.: ГИФМЛ, 1961), Дж. В. С. Касселса «Введение в теорию диофантовых приближений» (М.: ИЛ, 1961) и др. — Прим. ред.
§ 4. МЕТОД ЦЕПНЫХ ДРОБЕЙ	175
то получаем рациональное число Ь{/с,, называемое г-м приближением цепной дроби х:
bi	111	11
— — <zq 4------------• • -------.
Ci	а14" a2 4" a3 4“	Д;_14_ аг
Предложение V. 4.1. В обозначениях, введенных выше, имеем: а)	. Ь = OflOidd. L = g.b-i+fe-2 для i 2;
Ь) в п. а) дроби в правых частях — несократимые, т. е. если 4- bi-? и Ci = aiCi-x 4- c,_2, то НОД {bi, c^ = 1;
c) biCi-i — b^Ci = ( — 1)' 1 для i 1.
Доказательство. Определим последовательности {6,} и {cj} с помощью соотношений из части а) (приравнивая соответствующие числители и знаменатели — прим. ред.\, докажем по индукции, что тогда bi/Ci — i-e приближение. Докажем это, не предполагая, что ai — целые числа, т. е. докажем, что для любых вещественных чисел а, отношение bi/ci с bi и с,, определенными формулами в части а), равно а0 4- ~~ ''' База индукции {г — 0,1,2) тривиальна. Предположим теперь, что утверждение справедливо вплоть до г-го приближения, и докажем его для (г 4- 1)-го приближения. Заметим, что мы получим (г 4- 1)-е приближение, заменяя аг на аг 4- l/«i+i в формуле, которая выражает числитель и знаменатель г-го приближения в терминах (г — 1)-го и (г — 2)-го приближений. Таким образом, (г 4- 1)-е приближение в силу предположения индукции равно
a1 + i )^г-1 4" ^t-2 _ (a^i-i 4- ^-2) 4- Ьг-1 _	4- bi_^
{ai 4- 57^-)cj_i 4- Ci_2 ai+1{atCi_-i + Ci_2) + Ci^i ai+1Ci + c^
Тем самым часть а) доказана.
. Часть с) также легко доказать по индукции. Шаг индукции проводится следующим образом:
^i-f-14	— {ai+lbi 4~ —	4“ Ci —i)	bi_^Ci ЬгСг_[
= -(-i/-1 = (-i)‘,
Таким образом, из того, что часть с) справедлива для г, следует соответствующее утверждение для г 4- 1-
Наконец, часть Ь) следует из части с), так как любой общий делитель bi и с,- должен быть делителем числа (—1)’ \ равного ±1. Предложение доказано.
Если разделить равенство в предложении V.4. 1 с) на CjC^j, то получим:
bi bi^ _ (-1Г1
Ci Ci — 1	—1
176
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
Так как сг, очевидно, образуют строго возрастающую последовательность натуральных чисел, это равенство показывает, что последовательность приближений ведет себя подобно знакопеременному ряду, т.е. она колеблется вперед и назад с уменьшающейся амплитудой, и, значит, последовательность приближений сходится к пределу.
Наконец, нетрудно заметить, что предел последовательности есть само число х, для которого строится разложение. Чтобы показать это, заметим, что х получается, если в (г+1)-м приближении заменить а,+1 на L/x{. Таким образом, по предложению V.4.1 а) (с г + 1 вместо г и заменой ai+1 на I/24) имеем:
^г/^г + ^i — 1	Т —1
X = ----------- = --------,
Т 4 — 1	+ *44 — 1
при этом х оказывается в промежутке между	и Ъ^/сг. (Чтобы
убедиться в этом, рассмотрим два вектора u = (bi, с,) и v = (Ь^—1,4-1) в плоскости, оба расположенные в одном и том же квадранте; заметим, что направление вектора u+a?;v является промежуточным между направлениями векторов и и V.) Стало быть, последовательность колеблется вокруг х и сходится к х.
Цепные дроби имеют много интересных свойств, что обусловило их применения в различных областях математики. Например, они доставляют «наилучший возможный» способ рациональной аппроксимации вещественных чисел (в том смысле, что любое рациональное число, более близкое к х, чем 6,/Ci, должно иметь знаменатель, больший, чем С;). Другое свойство аналогично Тому факту, что в представлении вещественного числа х в десятичной (или Ь-ичной) системе знаки периодически повторяются тогда и только тогда, когда х рационально. В разложении х в цепную дробь, как мы видели, последовательность целых чисел а, обрывается в том и только том случае, когда х рационально. Можно показать, что последовательность целых чисел а, становится периодической последовательностью в том и только том случае, когда х — квадратичная иррациональность, т. е. имеет вид х1 + х2у/п, где хг и а?2 — рациональны, а тг не есть полный квадрат. Это — известная теорема Лагранжа.
Пример 1. Выписывая по порядку первые члены разложения \/3 в цепную дробь, получаем
ч/з — 1 j_____________________
1+2+1+2+1+2+	'
Естественно предположить, что а; попеременно принимают значения 1 и 2. Докажем это. Пусть х равно бесконечной цепной дроби в правой части с чередующимися 1 и 2. Согласно определению цепной дроби
§ 4. МЕТОД ЦЕПНЫХ ДРОБЕЙ
177
для х мы, очевидно, имеем х — 1 4-	1 д . Упрощая это рациональное
1 + 1+х
выражение и умножая затем обе части равенства на х + 2, получаем 2х 4- х2 = 3 + 2а?, т. е. а? = у/З.
Предложение V. 4. 2. Пусть а? > 1 — вещественное число, при разложении в цепную дробь имеющее приближения Ь/щ.
Тогда \Ьг — х щ | < 2а? при любом i.
Доказательство. Как мы видели, а? лежит в промежутке между Ьг/сг и 6г+1/сг + 1. Разность между этими величинами по абсолютной величине равна с (предложение V. 4. 1 с)). Поэтому
IА2 2 2,	2| II . bj I 2	1	/	(	1	\\
|ог - х с г | — с i а:-г 4-< сг-------- а? 4- а? 4-
I	СI I Сг I СIС 2	\ х	Сг Сг _|_ 1 / /
Следовательно,
\Ъ2 - х2щ\ - 2х < 2х ( - 1 4-г~—I--о—< 2х( — 1 4———| —
' сгД-1 2xci+1'	'	<4 + 1	<4' + 17
< 2a?f- 1 +	= 0.
<4+1 7
Предложение доказано.
Предложение V.4.3. Пусть п — натуральное число, не являющееся полным квадратом. Пусть bi/щ — приближения при разложении у/п в цепную дробь. Тогда наименьший по абсолютному значению вычет bi (mod тг) (расположенный между — п/2 и п/2) меньше 2у/п.
Доказательство. Применим предложение V. 4. 2 при а? = у/п. Тогда Ьг = bi — пс, (mod п), а это последнее число меньше 2у/п по абсолютной величине.
Предложение V. 4. 3 — ключевое для алгоритма цепных дробей. Оно показывает, что можно найти последовательность чисел bi, квадраты которых имеют малые вычеты по модулю п. Для этого нужно брать числители приближений при разложении /п в цепную дробь. Заметим, что нам нужно находить не сами приближения, а только их числители bi, и то лишь по модулю п. Поэтому быстрый рост числителей и знаменателей приближений не является препятствием. Нам никогда не придется работать с числами, большими п (при умножении чисел по модулю п).
Опишем теперь последовательно, как работает алгоритм цепных дробей. Он отличается от метода факторных баз из § 3 лишь использованием предложения V.4.3 вместо случайного выбора чисел 6,.
Алгоритм разложения на множители при помощи цепных дробей. Пусть п — целое число, которое нужно разложить на
178
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
множители. Все вычисления будем проводить по модулю п, т.е. произведения и суммы целых чисел будем приводить по модулю тг к их наименьшему неотрицательному вычету (или к наименьшему абсолютному вычету в шаге 3). Вначале полагаем 6_i = 1, Ьо = а0 = Хо = у/п - а0- Вычисляем bo (mod тг) (фактически h'o - тг). Далее для г = 1,2,.. . последовательно выполняем следующие действия.
1)	Полагаем аг = [1/ат^_1] и затем Xi = l/xi_i — <ц.
2)	Полагаем bi =	4- 6j_2 (приводим по модулю тг).
3)	Вычисляем b\ (mod тг). Проделав это для нескольких г, обращаем внимание на те из чисел на шаге 3, абсолютная величина которых представляется в виде произведения малых простых чисел. Пусть факторная база В состоит из -1 и простых чисел, которые встречаются более чем в одном из bi (mod тг) (или входят только в одно из bi (mod тг) в четной степени). Составляем список всех тех чисел b? (mod тг), которые являются В-числами, и соответствующих векторов Ej из нулей и единиц. Если возможно, находим подмножество векторов с нулевой суммой. Полагаем b = bi (проводя вычисления по модулю тг; произведение берется по подмножеству с Ег = 0). Полагаем с = П?р где Pj — элементы из В (исключая — 1), и | ctjj (где сумма берется по тому же подмножеству индексов г, см. § 3). Если b ±с (mod тг), то НОД (6фс,тг) — нетривиальный делитель тг. Если b = ±с (mod тг), то ищем другое подмножество индексов i, для которого Ej = 0. Если невозможно найти такое подмножество индексов г, что Ej = 0, то нужно продолжать, вычисляя новые dj, dj, dj (mod тг) и при необходимости расширяя факторную базу В.
Замечание. Чтобы упростить вычисление с =	> удобно
для каждого В-числа b? (mod тг) записывать вектор ог = (..., Ojj,...), —>	—+
а не Ej, который представляет собой вектор о,, приведенный по модулю 2.
Пример 2. Используем изложенный алгоритм для разложения 9073 на множители.
Решение. Вначале выпишем по порядку aj и 6; (где bi — наименьший неотрицательный вычет ajdj_j 4-dj_2 по модулю тг), а также наименьшие абсолютные вычеты b? (mod тг):
i	0	1	2	3	4
	95	3	1	26	2
	95	286 381		1119	2619
2 bi (mod тг)	-48	139 —7		87	-27
Рассматривая последнюю	строку	таблицы,		мы	видим, что в каче-
стве В разумно взять множество {-1,2,3,7}. Тогда b? (mod тг) — В-
§ 4. МЕТОД ЦЕПНЫХ ДРОБЕЙ
179
числа при i = 0,2,4. Соответствующие векторы равны (1,4,1,0), (1,0,0,1) и (1,0,3,0). Сумма первого и третьего — нулевой вектор по модулю 2. Поэтому полагаем b = 95 • 2619 = 3834 (mod 9073) и с = 22 • З2 = 36. Таким образом, 38342 = 362 (mod 9073). Так как 3834	36 (mod 9073), мы получаем нетривиальный делитель:
НОД (3834 + 36, 9073) = 43. Итак, 9073 = 43 • 211.
Пример 3. Разложить на множители 17873.
Решение. Как и в примере 2, мы начинаем с таблицы:
i	0	1	2	3	4	5
аг	133	1	2	4	2	3
bi	133	134	401	1738	3877	13369
6-	(mod п) -184	83	-56	107	-64	161
Если положить В = { — 1,2,7,23}, то В-числа получаются при i = 0,2,4,5; соответствующие векторы о, равны (1,3,0,1), (1,3,1,0), (1,6,0,0) и (0,0,1,1). Сумма 1-го, 2-го и 4-го из этих векторов — нулевой вектор по модулю 2. Однако если вычислить b = 133  401 • 13369 = 1288 (mod 17873) и с = 23 • 7 • 23 = 1288, то окажется, что b = с (mod 17873). Поэтому приходится продолжить поиск В-чисел, которым соответствуют векторы с суммой, равной нулю по модулю 2. Продолжая таблицу, получаем:
i	6	7	8
12	1
bt	17246	12115	11488
b2 (mod	n)	-77	149	-88
Если мы теперь расширим В, включив туда еще простое число 11, т.е. В = {-1,2,7,11,23}, то для i = 0,2,4,5,6,8 получаем В-числа со следующими векторами о:;: (1,3,0,0,1), (1,3,1,0,0), (1,6,0,0,0), (0,0,1,0,1), (1,0,1,1,0), (1,3,0,1,0). Замечаем, что сумма 2-го, 3-го, 5-го и 6-го векторов равна нулю по модулю 2. Это дает Ъ = 7272, с = 4928, и мы находим, наконец, нетривиальный делитель: НОД (7272 + 4928,17873) = 61. Таким образом, 17873 = 61 • 293.
УПРАЖНЕНИЯ
1.	Найти представление в виде цепной дроби следующих рациональных чисел: а) 45/89; б) 55/89; в) 1,13.
2.	а) Предположим, что х — вещественное число, в представлении которого в виде бесконечной цепной дроби
1111 х = а 4-----------  
flt-f- Д-|- (Z-f- flt-f-
180
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
бесконечно много раз повторяется натуральное число а. Как записать это вещественное число х в простом виде?
б)	Доказать, что при а = 1 в части а) х есть золотое сечение, а числители и знаменатели его приближений суть числа Фибоначчи.
3.	Разложить в цепную дробь число е и попытаться угадать схему образования последовательности а,.
4.	Объяснить, почему в алгоритме цепных дробей нецелесообразно включать в факторную базу такие простые числа р, что = —1.
5.	Следуя примерам 2 и 3, применить алгоритм цепных дробей для разложения на множители следующих чисел: а) 9509; б) 13561; в) 8777; г) 14429; д) 12403; е) 14527; ж) 10123; з) 12449; и) 9353; к) 25511; л) 17873.
ЛИТЕРАТУРА к §4 ГЛАВЫ V
1. Davenport Н. The Higher Arithmetic. 5th ed. N.Y.: Cambridge Univ. Press, 1982. 2. Knuth D. The Art of Computer Programming. Vol. 2. Reading: Addison-Wesley, 1973.
3.	Lehmer D. H., Powers R. E. On factoring large numbers. — Bull. Amer. Math. Soc., 1931, v. 37, p. 770-776.
4.	Morrison M. A., Brillhart J. A method of factoring and the factorization of Ft. — Math. Comp., 1975, v. 29, p. 183-205.
5.	Pomerance C., Wagstaff S.S., Jr. Implementation of the continued fraction integer factoring algorithm. — In: Proceedings of the 12th Winnipeg Conference on Numerical Methods and Computing, 1983.
6.	Wunderlich M. C. A running time analysis of Brillhart’s continued fraction factoring method. — Leet. Notes Math., 1979, B. 751, S. 328-342.
7.	Wunderlich M. C. Implementing the continued fraction factoring algorithm on parallel machines. — Math. Comp., 1985, v. 44, p. 251-260.
§ 5. Метод квадратичного решета
Метод квадратичного решета для факторизации больших целых чисел, разработанный Померанцем в начале 80-х гг., долгое время превосходил другие методы факторизации целых чисел п общего вида, не имеющих простых делителей, порядок величины которых значительно меньше у/п. (Для целых п специального вида могут существовать более быстрые методы с узкой областью применимости, а для чисел п, имеющих простые делители, много меньшие у/п, более быстрым является метод факторизации на эллиптических кривых, описанный в § VI. 4. См. также обсуждение метода числового решета в конце данного параграфа.)
Квадратичное решето представляет собой вариант метода факторных баз § 3. В качестве факторной базы В мы берем множество простых чисел, состоящее из р = 2 и всех таких нечетных простых
§ 5. МЕТОД КВАДРАТИЧНОГО РЕШЕТА
181
чисел р, не превосходящих заданной границы Р (выбираемой из соображений оптимальности), что п— квадратичный вычет по модулю р. Множество целых чисел S, в котором мы ищем 5-числа (напомним, что В-число — это целое, делящееся только на простые числа из В), — то же самое, что используется при факторизации Ферма (см. §3), а именно:
S = {/2 - п | [Уй] + 1 t [у/п] + А}
при надлежаще выбранной границе А.
Основная идея метода состоит в следующем: вместо того, чтобы брать одно за другим каждое s £ S и делить его на простые числа из В, чтобы определить, является ли В-числом число s, мы берем одно за другим каждое р £ В и проверяем делимость на р (и его степени) одновременно для всех s £ S. Слово «решето» соответствует этой идее. Известное «решето Эратосфена» можно использовать для составления списка всех простых р, не превосходящих А. Например, чтобы составить список простых чисел, не превосходящих 1000, берется список всех целых, не превосходящих 1000, и затем для каждого р — 2, 3,5, 7,11,13,17,19,23,29,31 из него удаляются все числа, кратные р и большие р; они «проваливаются в отверстия решета, удаленные одно от другого на расстояние р». Оставшиеся числа — простые.
Изложим в общих чертах способ реализации рассматриваемого метода и затем приведем пример. Описанная ниже версия — это лишь один из возможных вариантов метода, и не обязательно самый эффективный. Кроме того, в нашем примере число тг, которое нужно разложить (а также соответствующие числа в упражнениях в конце параграфа) взяты из области « 106, чтобы избежать работы с большими матрицами. Однако такие п слишком малы для того, чтобы продемонстрировать, как решето позволяет экономить время при нахождении большого множества В-чисёл.
Итак, предположим, что дано нечетное составное число п.
1.	Выбираем границы Р и А порядка величины приблизительно n log log п
Число А должно быть больше Р, но не превышать сравнительно малой его степени, например, Р < А < Р .
С функцией exp{-0og п log log п}, традиционно обозначаемой В(д), мы уже сталкивались в этой главе. Порядок ее роста находится в промежутке между многочленом от logn и многочленом от п. Если тг ~ 10 , то В(тг) ~ 400. В примерах, приведенных ниже, выберем Р = 50, А = 500.
182
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
2.	Для t = [у/п] + 1, [у/п] 4- 2,+ А выписываем в столбец ,2
по порядку целые числа t - п.
3.	Для каждого нечетного простого числа р С Р проверяем условие (^) = 1 (см. §11.2); если оно не выполняется, то удаляем р из факторной базы.
4.	Предполагая, что р — такое нечетное простое число, что п — квадратичный вычет по модулю р (случай р = 2 разберем далее отдельно), решаем уравнение t2 = п (mod р^3) для (3 — 1,2,... методом упражнения 20 к § II. 2. Берем значения f3 в порядке возрастания, пока не окажется, что уравнение не имеет решений /, сравнимых по модулю р‘3 с каким-либо из чисел в области [у/й] + 1	[у/п| +А. Обозначим
через f3 наибольшее из таких чисел, для которых в указанной области найдется число t со свойством t2 = п (mod р^). Пусть и t2 — два решения t2 = п (mod р^3) и t2 = (mod р^3) (мы не требуем, чтобы и принадлежали отрезку [[у/п] + 1, [у/п| + А]).
5.	При том же самом значении р просматриваем список значений t2 - п, полученный в п. 2. Б столбце, соответствующем р, ставим 1 против всех значений t — п, для которых t отличается от р на некоторое кратное р, после этого заменяем 1 на 2 для всех таких значений t — п, что t отличается от на кратное р , затем заменяем 2 на 3 у 2	3
всех значений t — п, для которых t отличается от на кратное р , и так далее до р@. Затем делаем то же самое с /2 вместо . Наибольшим числом, которое появляется в этом столбце, будет Д.
6.	Когда производим действия в пл5, каждый раз, когда ставим 1 или заменяем 1 на 2, 2 на 3 и т.д., делим соответствующее число ,2
t — тг на р и сохраняем полученный результат.
7.	В столбце под р = 2 при п / 1 (mod 8) просто ставим 1 против t —пс нечетным t и делим соответствующее t - тг на 2. При п = 1 (mod 8) решаем уравнение t2 = п (mod 2^) и продолжаем в точности так же, как в случае нечетного р (за исключением того, что при Д Д 3 уравнение будет иметь 4 различных решения t2,t3,t/).
8.	Когда указанные действия будут проведены для всех простых чисел, не превосходящих Р, отбросим все t — п, кроме тех, которые обратились в 1 после деления на все степени р, не превосходящих Р. Тогда получится таблица того же вида, что в примере 9 из § 3, в которой столбец, помеченный bi, будет содержать все такие значения t из интервала [[у/п] +1, [у/п| + А], что t2 — п есть В-число, а остальные столбцы будут соответствовать тем значениям р С Р, для которых тг — квадратичный вычет.
9.	Оставшаяся часть процедуры в точности совпадает с процедурой из § 3.
§ 5. МЕТОД КВАДРАТИЧНОГО РЕШЕТА	183
Пример. Давайте попытаемся разложить на множители п = 1042387, выбрав границы Р = 50 и А = 500. Здесь [л/д] = 1020. Наша факторная база состоит из 8 простых чисел {2,3,11,17,19,23,43,47}, для которых 1042387 — квадратичный вычет. Так как п 1 (mod 8), то в столбце, соответствующем р = 2, стоят лишь 0 и 1, причем 1 проставляется во всех случаях, когда t нечетно, 1021 С t С 1520.
Опишем подробно, как образуется столбец для р = 3. Мы хо-тим найти решение = /10 + <i,i3 4- t123 + • • • +	13 сравне-
ния t2 = 1042387 (mod 3^), где £ {0,1,2} (за другое решение /2 можно принять /2 = З'й — Н). Мы можем, очевидно, взять /10 = 1-(Для каждого из наших 8 простых чисел первый шаг — решение сравнения t2 = 1042387 (mod р) — можно сделать быстро методом проб и ошибок; если бы мы работали с большими простыми числами, мы могли бы использовать процедуру, описанную в конце §11.2.) Затем мы работаем по модулю 9: (1 4- З^д) = 1042387 = 7 (mod 9), откуда 6£1д = 6 (mod 9), т.е. 2/ltl = 2 (mod 3) и = 1. Далее, по модулю 27: (1 + 34- 9/1]2)2 = 1042387 = 25 (mod 27), т.е. 16 + 18/1Д = 25 (mod 27) и 2/д,2 = 1 (mod 3), так что /1>2 = 2. Затем по модулю 81: (1 4- 3 4- 18 + 27/113)2 = 1042387 = 79 (mod 81), откуда следует, что /13 = 0. Продолжая действовать так же до З7, мы находим решение (в обозначениях § I. 1 для чисел, записываемых в троичной системе): = (210211)3 (mod З7) и /2 = (2012012)3 (mod З7). Однако в интервале между 1021 и 1520 нет числа t, сравнимого с /1 или /2 по модулю З7. Таким образом, мы имеем (3 = 6, и можно взять lt = (210211)з = 589 = 1318 (mod З6) и t2 = З6 -	= 140 = 1112 (mod З5)
(заметим, что в отрезке [1021,1520] нет числа t, сравнимого с t2 по модулю 3 ).
Построим теперь наше «решето» для р = 3. Начиная с 1318, делаем «прыжки» на 3 вниз, пока не достигнем 1021, и такие же «прыжки» вверх, пока не достигнем 1519; каждый раз ставим 1 в столбец, если t — п делится на 3, и записываем результат деления (на самом деле для нечетного t число, которое мы делим на 3, равно (/2 - п)/2, так 2
как мы уже делили t - п пополам, когда формировали столбец из 0 и 1 для р = 2). Затем мы делаем то же самое, «прыгая» на 9, изменяя каждый раз 1 на 2 в столбце под 3, деля еще раз на 3 то, что осталось от соответствующего t2 — п, и записывая результат. Проделываем аналогичную процедуру со скачками на 27, 81, 243, 729 (для 729 скачка не существует — мы только изменяем 5 на 6 в графе, соответствующей 1318, и делим еще раз на 3 то, что осталось от 13182 — 1042387). Наконец, мы проделываем те же шаги с t2 = 1112 вместо Ц = 1318, на
184
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
сей раз останавливаясь на скачках величины 243.
После прохождения этой процедуры для остальных 6 чисел нашей факторной базы мы получаем таблицу размера 500 X 8 из показателей степеней, в которой каждая строка соответствует значению t от 1021 до 1520. Теперь мы отбрасываем все строки, для которых /2 — п не превратилось в 1 при повторном делении на степени р в процессе фор-2 мирования таблицы, т. е. мы берем только строки, для которых t — п есть В-число. В рассматриваемом примере с п = 1042387 останется следующая таблица (с прочерками на месте нулевых показателей степени).
t	t2 - п	2	3	11	17 19	23	43	47
1021	54	1	3	—	— —	—	—	—
1027	12342	1	1	2	1 -	—	—	—
1030	18513	—	2	2	1 -	—	—	—
1061	83334	1	1	—	1 1	—	1	—
1112	194157	—	5	—	1 -	—	—	1
1129	232254	1	3	1	1 -	1	—	—
1148	275517	—	2	3	— —	1	—	—
1175	338238	1	2	—	- 1	1	1	—
1217	438702	1	1	1	2	-	1	—	—
1390	889713	—	2	2	- 1	—	1	—
1520	1268013	—	1	—	1 -	2	—	1
Продолжая так	же, как	мы делали		в п)	эимере 9	из j	13,	ищем теперь
соотношения по модулю 2 между строками этой матрицы, т.е., двигаясь сверху вниз, ищем такие наборы строк, суммы элементов которых в каждом столбце четны. Первый обнаруживаемый набор такого типа — это первые три строки, сумма которых — удвоенная строка 1321 - - — — . Таким образом, мы получаем сравнение
(1021 • 1027 • 1030)2 = (2 • З3 • И2 • 17)2 (mod 1042387).
Однако, хотя нам и повезло быстро найти подмножество строк, линейно зависимых по модулю 2, эта удача неполная: оба возводимые в квадрат числа в последнем сравнении сравнимы с 111078 по модулю 1042387, и мы получаем лишь тривиальную факторизацию. Продвигаясь вниз по таблице, мы находим еще несколько наборов линейно зависимых строк, которые также не дают нетривиальной факторизации. Наконец, когда мы уже почти готовы сдаться и начать все сначала с увеличенным А, мы замечаем, что последняя строка, соответствующая нашему самому последнему значению Z, зависит от предшествующих строк. А именно, по модулю 2 она равна 5-й строке. Это дает нам (1112 • 1520)2 = (З3 • 17 • 23 • 47)2 (mod 1042387),
§ 5. МЕТОД КВАДРАТИЧНОГО РЕШЕТА	185
т.е. 6478532 = 4961792 (mod 1042387), и мы получаем нетривиальный делитель: НОД (647853 - 496179,1042387) = 1487.
Используя некоторые правдоподобные предположения, можно показать, что математическое ожидание времени работы метода разложения при помощи квадратичного решета имеет порядок
О(е^1+£^х/1°® nl°s *°s ") для любого е > 0.
Метод исйользует очень большой объем памяти (также порядка ехр {og тг log log тг}). Подробное обсуждение характеристик алгоритма факторизации при помощи квадратичного решета (и некоторых других) можно найти в статье Померанца из списка литературы к этому параграфу.
Решето в числовом поле. До недавнего времени все оценки времени работы лучших универсальных алгоритмов разложения на множители имели вид
ехр { О (\/log n log log n)}.
Некоторые даже предполагали, что эта функция п является естественной нижней границей для времени работы. Однако в течение последних нескольких лет был разработан новый метод, названный решетом в числовом поле. Эвристическая оценка времени его работы значительно лучше (асимптотически):
ехр {О((logтг)1 /3(loglog тг)2/3)}.
Практически он оказался самым быстрым методом для разложения на множители чисел, которые имеют величину, максимально допустимую для современных (1994 г.) методов факторизации, или немного превышают ее, т.е. для чисел, имеющих в десятичной системе счисления немного больше 150 знаков.
Факторизационный алгоритм решета в числовом поле во многом подобен ранее рассмотренным алгоритмам, в которых проводится поиск наборов сравнений, дающих соотношение вида л2 = у2 (mod тг). Однако в нем используется «факторная база» в кольце целых чисел некоторого надлежаще выбранного поля алгебраических чисел. Таким образом, наряду с основной техникой квадратичного решета, в этом методе факторизации применяется также теория алгебраических чисел. Видимо, это наиболее сложный из известных факторизационных алгоритмов. Мы дадим только его набросок.
Основные требования алгоритма можно кратко описать следующим образом. Если нужно разложить на множители число тг, то нужно
186
ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ
выбрать некоторую степень d и выразить п как значение при некотором целом т неприводимого нормированного многочлена степени d:
_ d .	d 1.	d 2.	।
m) = m 4- ad_^m + ad_2m +----------(-«im-l-ao,
где m и afc — целые числа, порядок величины которых — O(ni^d'). Один из способов найти такой многочлен — это взять в качестве т целую часть корня степени d из п и затем разложить п по основанию т. Для 125-значных чисел анализ алгоритма показывает, что d должно равняться 5, и потому т и коэффициенты должны быть примерно 25-значными.
Решето числового поля тогда отыскивает (с помощью того же процесса, что и в случае квадратичного решета) максимально возможное число таких пар (а, 6), что как число а + Ьт, так и число
bd = (-a)d + ad_1(-a)d_16 + ad_2(-a)6/~2b2 +-----axabd~X +aobd
— гладкие относительно данной факторной базы (т. е. делятся лишь на простые числа, принадлежащие факторной базе). Подробности того, как это делается и как это приводит к факторизации п, можно найти в книге [3] из списка литературы к данному параграфу. Чтобы процедура была успешной, нужно, чтобы доля гладких чисел среди значений многочлена f была приблизительно такой же, как доля гладких чисел среди всех чисел той же длины. Хотя это выглядит правдоподобно и выполняется во всех примерах, которые были просчитаны, тем не менее, утверждение выглядит чрезвычайно трудным для доказательства. Поскольку оценка времени работы алгоритма основана на этом недоказанном предположении, она является эвристической. Хотя это обстоятельство не очень существенно для практической факторизации чисел, оно указывает на некоторые важные нерешенные задачи теоретического анализа асимптотической сложности факторизации.
Автор хотел бы поблагодарить Дж. Булера (Joe Buhler), предоставившего для настоящей книги это краткое описание решета над числовым полем.
УПРАЖНЕНИЯ
1.	В приведенном примере найти все отношения линейной зависимости по модулю 2 между строками матрицы и показать, что если Р = 50 и А С 499, то получить нетривиальную факторизацию 1042387 этим методом невозможно.
2.	Пусть п —» сю. Предположим, что Р и А всегда выбираются величинами одинакового порядка (например, что ci (log A)/(log Р) с2 для некоторых положительных констант ci и с2). Какой из шагов 1-7 изложенной выше версии метода квадратичного решета является асимптотически наиболее трудоемким? Дать в терминах О-большого оценку числа двоичных операций на этом шаге.
§ 5. МЕТОД КВАДРАТИЧНОГО РЕШЕТА
187
3.	Использовать метод этого параграфа с Р = 50 и А = 500, чтобы разложить
на множители: а) 1046603; б) 1059691; в) 998771.
ЛИТЕРАТУРА к § 5 ГЛАВЫ V
1.	Caron Т., Silverman R. Parallel implementation of the quadratic sieve. — J. Supercomputing, 1988, v. 1, p. 273-290.
2.	Gerver J. L. Factoring large numbers with a quadratic sieve. — Math. Comp., 1983, v. 41, p. 287-294.
3.	The Development of the Number Field Sieve./ Ed. by A. Lenstra, H.W.Lenstra, Jr.. Berlin-Heidelberg etc.: Springer, 1993.
4.	Lenstra H. W.,Jr., Pomerance C. A rigorous time bound for factoring integers. — J. Amer. Math. Soc., 1992, v. 5, p. 483-516.
5.	Pomerance C. Analysis and comparison of some integer factoring algorithms. — In: Computational Methods in Number Theory./ Ed. by H. W. Lenstra, Jr., R. Tijde-man. Amsterdam: Mathematisch Centrum, 1982, p. 89-139.
6.	Pomerance C. Factoring. — Crypt. Comput. Number Theory, Proc. Symp. AppL Math., 1990, v. 42, p. 27-47.
ГЛАВА VI
ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
В последнее время одна из областей теории чисел и алгебраической геометрии — эллиптические кривые (точнее, теория эллиптических кривых над конечными полями) — нашла применение в криптографии. Основная причина этого состоит в том, что эллиптические кривые над конечными полями доставляют неисчерпаемый источник конечных абелевых групп, которые (даже если они велики) удобны для вычислений и обладают богатой структурой. Ранее (в § IV. 3) мы работали с мультипликативными группами полей. Во многих отношениях эллиптические кривые — естественный аналог этих групп, но более удобный, так как существует большая свобода в выборе эллиптической кривой, чем в выборе конечного поля.
Начнем с изложения основных определений и свойств эллиптических кривых. Мы ограничимся минимальным числом основных фактов, необходимых для понимания приложений к криптографии (см. § § 2-4), уделяя больше внимания примерам и конкретным описаниям и меньше заботясь о доказательствах и общности. Более систематическое изложение этого предмета можно найти по ссылкам в конце § Г
§ 1. Основные факты
В этом параграфе мы предполагаем, что К — поле: либо поле R вещественных чисел, либо поле Q рациональных чисел, либо поле С комплексных чисел, либо поле Fq из q — рг элементов.
Определение. Пусть К — поле характеристики, отличной от 2, 3, и х3 +ах + Ь (где a, b £ ТГ) — кубический многочлен без кратных корней. Эллиптическая кривая над К — это множество точек (ж, у), х,у G К, удовлетворяющих уравнению
у2 — х3 + ах + Ь,	(1)
§ 1. ОСНОВНЫЕ ФАКТЫ
189
вместе с единственным элементом, обозначаемым О и называемым «точка в бесконечности» (о ней подробнее будет сказано ниже).
Если К — поле характеристики 2, то эллиптическая кривая над К — это множество точек, удовлетворяющих уравнению либо типа
у2 + су = х3 + ах + Ь,	(2а)
либо типа
у2 4- ху — х3 + ах2 4- Ь	(26)
(здесь кубические многочлены в правых частях могут иметь кратные корни), вместе с «точкой в бесконечности» О.
Если К — поле характеристики 3, то эллиптическая кривая над К — это множество точек, удовлетворяющих уравнению
у2 = а?3 4- ах2 4- Ьх 4- с	(3)
(где кубический многочлен справа не имеет кратных корней), вместе с «точкой в бесконечности» О.
Замечания. 1. Имеется общая форма уравнения эллиптиче-скои кривой, которая применима при любом поле: у 4- ахху 4- а-Лу = х 4- а^х 4- а^х 4- а6- в случае, когда char К 2, ее можно привести к виду у2 = х3 4- ах2 4- Ьх 4- с (или к виду у2 = х3 4- Ьх 4- с, если К > 3). В случае, когда поле К имеет характеристику 2, это уравнение преобразуется либо к виду (2а), либо к виду (26).
2. Если Е(а?,у) = 0 — неявное уравнение, выражающее у как функцию ж в (1) (или в (2), (3)), т. е. F(x, у) = у2 - х3 - ах - Ь (или г[х,у) = у 4- су 4- х +ах + Ь,у 4- ху 4- х + ах-\-Ь,у —х —ах — Ьх — с), то точка (а?, у) этой кривой называется неособенной (или гладкой) точкой, если, по крайней мере, одна из частных производных dF/dx, dF/ду в этой точке не равна нулю. (Производные многочленов можно определить обычными формулами над любым полем; см. 5-й абзац в начале главы II.)
Нетрудно показать, что условие отсутствия кратных корней у кубических многочленов в правой части в (1) и (3) эквивалентно требованию, чтобы все точки кривой были неособенными.
Эллиптические кривые над вещественными числами. Перед обсуждением конкретных примеров эллиптических кривых над разными полями мы отметим чрезвычайно важное свойство множества точек эллиптической кривой: они образуют абелеву группу. Чтобы объяснить наглядно, как это получается, мы временно будем полагать, что К = R, т. е. что эллиптическая кривая — обычная плоская кривая (с добавлением еще одной точки О «в бесконечности»).
190
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
Определение. Пусть Е — эллиптическая кривая над вещественными числами, и пусть Р и Q — две точки на Е. Определим точки -Р и Р + Q по следующим правилам.
1.	Если Р — точка в бесконечности О, то— P = OaP + Q = Q, т.е. О — тождественный элемент по сложению («нулевой элемент») группы точек. В следующих пунктах предполагается, что ни Р, ни Q не являются точками в бесконечности.
2.	Точки Р = (а?, у) и — Р имеют одинаковые аг-координаты, а их ^/-координаты различаются только знаком, т.е. — (х,у) — (х,—у'). Из (1) сразу следует, что (ж, —у) — также точка на Е.
3.	Если Р и Q имеют различные ж-координаты, то прямая I = PQ имеет с Е еще в точности одну точку пересечения R (за исключением двух случаев: когда она оказывается касательной в F, и мы тогда полагаем R = Р, или касательной в Q, и мы тогда полагаем R = Q). Определяем теперь Р + Q как точку —7?, т.е. как отражение от оси х третьей точки пересечения. Геометрическое построение, дающее Р + Q, приводится ниже в примере 1.
4.	Если Q = — Р (т.е. z-координата Q та же, что и у Р, а у-координата отличается лишь знаком), то полагаем Р + Q = О (точке в бесконечности; это является следствием правила 1).
5.	Остается возможность Р = Q. Тогда считаем, что I — касательная к кривой в точке Р. Пусть R — единственная другая точка пересечения I с Е. Полагаем Р + Q = —R (вкачестве R берем Р, если касательная прямая в Р имеет «двойное касание», т.е. если Р есть точка перегиба кривой).	К
Пример 1. На рисунке справа изображены эллиптическая кри-2	3
вая у — х — х в плоскости ху и ти-личный случай сложения точек Р и Q. Чтобы найти Р + Q, проводим прямую PQ и в качестве Р + Q берем точку, симметричную относительно оси х третьей точке, определяемой пересечением прямой PQ и кривой. Если бы Р совпадала с Q, т.е. если бы нам нужно было найти 2Р, мы использовали бы касательную к кривой в Р; тогда точка 2Р симметрична третьей точке, в которой эта касательная пересекает кривую.
§ 1. ОСНОВНЫЕ ФАКТЫ
191
Теперь мы покажем, почему существует в точности еще одна точка, где прямая I, проходящая через Р и Q, пересекает кривую; заодно мы выведем формулу для координат этой третьей точки и тем самым — для координат Р + Q.
Пусть (zj,^), (ж2, J/г) и (2д,3/з) обозначают координаты соответственно Р, Q и Р + Q. Мы хотим выразить х3,у3 через ху,уу,х2,у2.
Предположим, что мы находимся в ситуации п. 3 определения P + Q, и пусть у = ах+(3 есть уравнение прямой, проходящей через Р и Q (в этой ситуации она не вертикальна). Тогда а = (у2 — У1)/(х2 -Ху) и (3 = у1— аху. Точка на I, т. е. точка (аг, ах + /3), лежит на эллиптической кривой тогда и только тогда, когда (аа?4-/3)2 = х3 + ах + Ь. Таким образом, каждому корню кубического многочлена х3 — (ах + Р)2 + ах + b соответствует точка пересечения. Мы уже знаем, что имеется два корня Ху и аг2, так как (жцО:!] + /3), (х2,ах2 ф /3) — точки Р, Q на кривой. Так как сумма корней нормированного многочлена равна взятому с обратным знаком коэффициенту при второй по старшинству степени многочлена, то в нашем случае третий корень — это х3 = а — Ху — х2. Тем самым получаем выражение для аг3, и, следовательно, Р + Q — (х3, —(ах3 + /3)) или, в терминах Ху, уу, а?2, у2,
/	\ 2
/ 2/2 - 2/1 А
а\з = ------------ - Ху - х2,
\Х2 - Ху)
. У2-У1 f X
Уз = -У1 + -------(Я1 - Хз).
Х2 - Ху
(4)
Ситуация в п. 5 аналогична, только теперь а — производная dy/dx в Р. Дифференцирование неявной функции, заданной уравнением (1), приводит к формуле а = (За;2 + а)/(2у1'), и мы получаем следующие формулы для координат удвоенной точки Р:
2	\ 2
Зху + а \
2yi /
х3 =
- 2а?!,
2/з = -2/1 +
Зх2 + а
(Ху - Х3).
(5)
Пример 2. На эллиптической кривой у2 = х3 — 36а: пусть Р = (-3,9) и Q = (-2,8). Найти Р + Q и 2Р.
Решение. Подстановка Ху = -3, уу = 9, х2 = -2, у2 = 8 в первое из уравнений (4) дает х3 = 6; тогда второе из уравнений (4) дает уз = 0. Далее, подставляя Ху = -3,?/i = 9, а = -36 в первое из уравнений (5), получаем для ж-координаты точки 2Р значение 25/4, а второе из уравнений (5) дает для у-координаты значение —35/8.
192
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
Существует несколько способов доказать, что принятое выше определение Р + Q превращает множество точек на эллиптической кривой в абелеву группу. Можно использовать результаты из проективной геометрии, из комплексного анализа двоякопериодических функций или алгебраическое доказательство, использующее теорию дивизоров на кривых. Доказательства каждого из этих типов можно найти по ссылкам в конце параграфа.
Если п — целое число, то, как и в любой абелевой группе, пР обозначает сумму п точек Р при п > 0 и сумму |п| точек — Р, если п С 0.
Мы пока что мало сказали о «точке в бесконечности» О. По определению, это — тождественный элемент группового закона. На рисунке (см. выше) следует себе представлять ее расположенной на оси у в предельном направлении, определяемом все более «крутыми» касательными к кривой. Она является «третьей точкой пересечения» с кривой для любой вертикальной прямой: такая прямая пересекается с кривой в точках вида (а?15 т/i), (а?15-у{) и О. Мы изложим сейчас более естественный способ введения точки О.
Под проективной плоскостью мы понимаем множество классов эквивалентности троек (X,Y, Z) (не все компоненты равны нулю), при этом две тройки называются эквивалентными, если одна из них — скалярное кратное другой, т.е. (XX, XY, AZ)/~ (X, Y, Z). Такой класс эквивалентности называется проективной г^очкой. Если проективная точка имеет ненулевую компоненту Z, то существует, причем только одна, тройка в ее классе эквивалентности, имеющая вид (х, у, 1): просто полагаем х = X/Z,y = Y/Z. Тем самым проективную плоскость можно представить как объединение всех точек (х,у) обычной («аффинной») плоскости с точками, для которых Z = 0. Эти последние точки составляют то, что называется бесконечно удаленной прямой', наглядно ее можно себе представить на плоскости как «горизонт». Любому алгебраическому уравнению F(x,y) = 0 кривой в аффинной плоскости отвечает уравнение F(X,Y,Z) = 0, которому удовлетворяют соответствующие проективные точки: нужно заменить х на X/Z, у — H&Y/Z и умножить на подходящую степень Z, чтобы освободиться от знаменателей. Например, если применить эту процедуру к аффинному уравнению (1) эллиптической кривой, то получится «проективное уравнение» Y2 Z = X3 + аХ Z2 + bZ3. Этому уравнению удовлетворяют все проективные точки (X, Y, Z) с Z 0, для которых соответствующие аффинные точки (х,у), где х = X/Z,y = Y/Z, удовлетворяют (1). Помимо них, какие еще точки бесконечно удаленной прямой удовлетворяют последнему уравнению? Если положить
§ 1. ОСНОВНЫЕ ФАКТЫ
193
в уравнении Z = 0, то уравнение примет вид X3 = 0, т. е. X = 0. Но единственный класс эквивалентности троек с X — 0, Z = 0 — это класс тройки (0,1,0). Это и есть точка, которую мы обозначили О; она лежит на пересечении оси у с бесконечно удаленной прямой.
Эллиптические кривые над комплексными числами. Алгебраические формулы (4)-(5) для сложения точек на эллиптической кривой над вещественными числами на самом деле имеют смысл над любым полем. (В полях характеристики 2 или 3 можно вывести аналогичные равенства, исходя из уравнений (2) или (3).) Можно показать, что эти формулы выражают закон абелевой группы на эллиптической кривой над любым полем.
В частности, пусть Е — эллиптическая кривая, определенная над полем С комплексных чисел, т.е. Е — множество пар (х,у) комплексных чисел, удовлетворяющих уравнению (1), вместе с точкой в бесконечности О. Мы называем Е «кривой», однако с точки зрения обычных геометрических представлений она двумерна, т. е. представляет собой поверхность в 4-мерном вещественном пространстве, координатами в котором являются действительные и мнимые части х и у. Покажем теперь, как можно наглядно представить себе Е в качестве поверхности.
Пусть L — решетка в комплексной плоскости. Это означает, что L — абелева группа, состоящая из всех целочисленных линейных комбинаций двух данных комплексных чисел и и>2 (где и и>2 «заметают» плоскость, т. е. не лежат на одной прямой, проходящей через начало координат): L = Zo>i + Zu>2. Например, если = l,w2 = то L — множество всех гауссовых целых чисел, т. е. квадратная сетка, состоящая из всех комплексных чисел с целыми действительными и мнимыми частями.
Если задана эллиптическая кривая (1) над комплексными числами, то, как оказывается, существуют решетка L и функция комплексного переменного, называемая «p-функцией Вейерштрасса» и обозначаемая Pl(z), со следующими свойствами:
1.	p(z) аналитична всюду, кроме точек L, в каждой из которых имеет полюс второго порядка;
2.	p(z) удовлетворяет дифференциальному уравнению р = р + ар + b и, следовательно, при любом z 0 L точка (p(z), pz(z)) лежит на эллиптической кривой Е\
3.	два комплексных числа z^ и z2 дают одну и ту же точку (p(z),p*(z)) на Е тогда и только тогда, когда zj — z2 G L;
4.	отображение, которое любой точке z 0 L ставит в соответствие точку (p(z), pZ(z)) на Е, а любой точке z G L — точку в бесконечности
194
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
О, дает взаимно однозначное соответствие между Е и факторгруппой С/L комплексной плоскости по подгруппе Z;
5.	это взаимно однозначное соответствие есть изоморфизм абелевых групп, иными словами, если z\ соответствует точке Р Е Е, a z2 — точке Q 6 Е, то zj + z2 соответствует точке Р + Q.
Таким образом, можно представлять себе абелеву группу Е как комплексную плоскость «по модулю» некоторой решетки. Чтобы эту последнюю группу изобразить наглядно, заметим, что у каждого класса эквивалентности z + L существует один и только один представитель в «фундаментальном параллелограмме», состоящем из комплексных чисел вида + 6w2, 0 a,b < 1 (если, например, L — гауссовы числа, то фундаментальный параллелограмм — это единичный квадрат). Так как разность между противоположными точками на параллельных сторонах границы параллелограмма есть точка решетки, они равны в С/L, и их можно считать «склеенными». Наглядно это означает, что мы сгибаем параллелограмм так, чтобы одна из сторон соприкоснулась с противоположной (получая при этом часть цилиндра), и затем, вновь сгибая полученную цилиндрическую трубку, склеиваем противоположные окружности — и получаем «тор» (бублик), изображенный ниже.
Как группа, тор есть произведение двух экземпляров группы окружности, т.е. его точки можно параметризовать парой углов (а,/3). (Точнее, если тор получен из решетки L = Zcjj + Zw2, то следует представить элемент из С/Z в виде + 6аг2, полагая а = 2тга, b = 2тг/Т) Таким образом, можно рассматривать эллиптическую кривую над комплексными числами как двумерное обобщение окружности в вещественной плоскости. Фактически эта аналогия идет значительно дальше, чем может показаться. «Эллиптические функции» (которые показывают, как по точке (ж, у) g Е найти то комплексное число
§ 1. ОСНОВНЫЕ ФАКТЫ
195
z, для которого (ж, з/) = (p(z), p'(z))), как оказывается, имеют свойства, аналогичные свойствам известной функции Arcsin (которая показывает, как найти вещественное число, которое соответствует точке единичной окружности при «наматывании» вещественной прямой на окружность). При рассмотрении эллиптических кривых с точки зрения теории алгебраических чисел обнаруживается глубокая аналогия между координатами «точек, делящих эллиптические кривые на п частей» (т.е. таких точек Р, что пР = О') и точками, делящими на п частей единичную окружность (которые соответствуют корням степени п из единицы в комплексной плоскости). Более подробные сведения об этом, а также об определении p-функции Вейерштрасса и ее свойствах можно найти по ссылкам в конце параграфа.
Эллиптические кривые над рациональными числами. Если в уравнении (1) а и b — рациональные числа, то естественно рассматривать рациональные решения (ж, у), т.е. эллиптическую кривую над полем Q рациональных чисел. Теория эллиптических кривых над рациональными числами очень обширна. Было доказано, что соответствующие абелевы группы являются конечно порожденными (теорема Морделла). Это означает, что каждая из таких групп есть сумма конечной «подгруппы кручения» (точек конечного порядка) и подгруппы, порожденной конечным числом точек бесконечного порядка. Число (минимальное) образующих бесконечной части называется рангом г; оно равно нулю тогда и только тогда, когда вся группа конечна. Изучение ранга г и других свойств группы точек эллиптической кривой над Q связано со многими интересными вопросами теории чисел и алгебраической геометрии. Например, известный с древних времен вопрос «Существует ли прямоугольный треугольник с рациональными сторонами, площадь которого равна данному целому п?» эквивалентен следующему: «Верно ли, что ранг эллиптической кривой у2 = х3 — п2 х больше нуля?» Случай п = 6 и прямоугольного треугольника со сторонами 3, 4 и 5 соответствует точке Р = (-3,9) из примера 2, которая является точкой бесконечного порядка на эллиптической кривой у = х — 36т. За более подробной информацией об этом предмете мы вновь отсылаем читателя к литературе в конце параграфа.
Точки конечного порядка. Порядком N точки Р на эллиптической кривой называется такое наименьшее натуральное число, что NР = 0\ конечно, такого конечного N может и не существовать. Часто требуется найти точки конечного порядка на эллиптической кривой, в особенности, на эллиптических кривых, определенных над полем Q.
196
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
Пример 3. Найти порядок точки Р — (2,3) на у2 — х3 + 1.
Решение. Применяя (5), находим, что 2Р = (0,1), и вновь с помощью (5), что 4F = 2(2Р) = (0,-1). Поэтому 4F = — 2Р и, следовательно, 6Р = О. Тем самым порядок Р может быть равен 2, 3 или 6. Но 2Р = (0,1) О, а если бы Р имела порядок 3, то было бы 4Р = Р, что неверно. Итак, Р имеет порядок 6.
Эллиптические кривые над конечным полем. До конца параграфа предполагаем, что К — конечное поле Fq с q = р элементами. Пусть Е — эллиптическая кривая, определенная над Fq. Если р = 2 или 3, то Е задается уравнением вида (2) или (3) соответственно.
Легко усмотреть, что эллиптическая кривая может иметь не более 2<? + 1 различных Fg-точек, т. е. точку в бесконечности и не более чем 2q пар (х,у), х,у £ Fq, удовлетворяющих (1) (или (2) или (3), если р = 2 или 3). А именно, для каждого из q возможных значений х имеется не более двух значений у, удовлетворяющих (1).
Но так как лишь у половины элементов Fq имеются квадратные корни, естественно ожидать (если бы х3 + ах + b были случайными элементами поля), что количество Fg-точек примерно вдвое меньше этого числа. Точнее, пусть х — квадратичный характер Fq. Это — отображение, переводящее х g Fq в 1 или —1 в зависимости от того, является или нет элемент х квадратом элемента из Fq (полагаем также у(0) — 0). Например, если q — это простое число р, то х(а?) = (р) есть символ Лежандра (см. §11.2). В любом случае число решений у g Fq уравнения у = и равно 1 + х{и) и> значит, число решений (1) (с учетом точки в бесконечности) равно
1 + 52 (1 + х(ж3 + ах + &)) = q + 1 + 52 X(^3 + ах + b).	(6)
i€F,	r6F,
Следует ожидать, что х(^3 + ах + 6) одинаково часто принимает значения + 1 и —1. Вычисление суммы очень похоже на «случайное блуждание», когда мы подбрасываем монету q раз, продвигаясь на шаг вперед, если выпал герб, и назад — если решетка. В теории вероятностей подсчитывается, что после q бросаний случайное блуждание оказывается на расстоянии порядка y/q от исходного положения. Сумма х(я3 + ах + Ь) ведет себя в чем-то аналогично случайному блужданию. Точнее, удалось доказать, что она ограничена величиной 2^/д. Этот результат — теорема Хассе; ее доказательство см. в § V. 1 указанной в списке литературы книги Силвермена (J. Silverman) об эллиптических кривых.
§ 1. ОСНОВНЫЕ ФАКТЫ
197
Теорема Хассе. Пусть N — число ~Еч-точек на эллиптической кривой, определенной над F?. Тогда
\N-(q + 1)| ^2^.
В дополнение к числу N элементов на эллиптической кривой над Fq нам бывает нужно знать строение этой абелевой группы. Она — не обязательно циклическая, но можно показать, что она — всегда произведение двух циклических групп. Это означает, что группа изоморфна произведению р-примарных групп вида Z/p“Z X Ъ/р^Ъ, где произведение берется по всем простым делителям N (здесь а 1,/3	0).
Под типом абелевой группы Fg-точек на Е мы понимаем список (... ,р ,р ,.. порядков циклических р-примарных сомножителей в упомянутом представлении в виде произведения (если /3 = 0, р@ опускаем). Найти тип не всегда легко.
Пример 4. Найти тип для кривой у2 = а?3 — х над F71.
Решение. Находим сначала число точек N. Заметим, что в сумме (6) члены для х и для —х сокращаются друг с другом: х((-т)3-(-т)) = у(-1)у(+!-х) = -%(х3-х), так как 71 = 3 (mod 4), и потому у(—1) = -1. Следовательно, N = q1 = 72. Далее, имеется в точности четыре точки порядка 2 (включая «бесконечную» точку О'): они соответствуют корням многочлена х — х = х(х + 1)(а? — 1) (см. упражнение 4 а ниже). Это означает, что 2-примарная часть группы имеет тип (4, 2) и, таким образом, тип группы — это (4, 2, 3, 3) или (4, 2, 9), в зависимости от того, равно 9 или 3 число точек порядка 3. Следовательно, остается выяснить, существует ли 9 точек порядка 3. Заметим, что условие ЗР = О при Р О эквивалентно условию 2Р = ЕР, т.е. тому, что а?-координаты точек 2Р и Р одинаковы. Согласно (5) это означает, что ((За?2 — 1)2/(2т/))2 - 2х = х, т.е. (За?2 - I)2 = 12а?у2 = 12а?4 — 12а?2. Упрощая, получаем За?4 —6а?2 -1 = 0. Это уравнение имеет, самое большее, 4 корня в F77. Каждый корень может давать не более двух точек (при у = ±\/а?3 — а?, если а?3 — а? есть квадрат по модулю 71), и если было бы 4 корня, то получилось бы 9 точек порядка 3 (включая точку О). В противном случае должно было бы быть меньше 9 точек порядка 3 (и, стало быть, в точности 3 таких точки). Но если корень х биквадратного уравнения таков, что х3 — х есть квадрат по модулю 71, то для другого его корня —х получаем, что (-а:)3 — (—а?) = — (—х3 — а?) не есть квадрат. Значит, число точек порядка 3 не может быть равно 9 и потому тип группы — (4, 2, 9).
198
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
Расширения конечных полей, гипотеза Вейля. Если эллиптическая кривая определена над Fg, она определена также над F?r, г = 1,2,..., и имеет смысл рассматривать F^r-точки, т.е. решения (1) над расширениями поля. Отправляясь от поля F, как поля, над которым задана Е, определяем число Nr как число F?r-точек на Е. (Таким образом, А^ = N есть число точек с координатами в нашем «основном поле» Fg.)
Для чисел Nr можно рассмотреть «производящий ряд» Z(T; E/Fq) -формальный степенной ряд в Q[[T]]:
Z(T;E/FJ = еЕ^ТГ/г,	(7)
где Т — неизвестная; обозначение E/Fq указывает эллиптическую кривую и поле, которое мы берем в качестве основного, а сумма в правой части берется по всем г = 1,2,... Можно показать, что ряд справа (рассматриваемый как бесконечное произведение экспоненци-
«гТ7г\
альных степенных рядов е ) имеет положительные целые коэффициенты. Этот степенной ряд называется дзета-функцией эллиптической кривой (над F?) и представляет собой весьма важный объект, связанный с Е.
«Гипотеза Вейля» (ныне теорема Делиня (Р. Deligne)) в значительно более общем контексте (алгебраические многообразия произвольной размерности) утверждает, что дзета-функция имеет весьма специальный вид. В случае эллиптической кривой E/Fq Вейль (А. Weil) доказал следующее утверждение.
Гипотеза (теорема) Вейля для эллиптической кривой. Дзета-функция есть рациональная функция от Т вида
где от эллиптической кривой Е зависит лишь целое число а. Значение а связано с числом N = соотношением N = q ф 1 - а. Кроме того, дискриминант квадратного трехчлена в числителе отрицателен (m. е. а < 4q — теорема Хассе), таким образом, этот трехчлен имеет два комплексно сопряженных корня а и 0, оба по модулю равные ^/q (точнее, корнями являются \/а и 1//3, а а,(3 — корни «возвратного» уравнения).
Доказательство см. в § V. 2 упомянутой выше книги Сил-вермена.
Замечание. Если записать числитель (8) в виде (1 — аТ)(1 — (iT) и затем взять производную от логарифмов обеих частей (заменяя
g 1. ОСНОВНЫЕ ФАКТЫ
199
Nr =
левую часть по формуле (7), определяющей дзета-функцию), то нетрудно убедиться, что формула (8) эквивалентна последовательности соотношений
Nr = qr + 1 -а -рг, г = 1,2,...
Так как а и /3, наряду с а, определяются значением N = NT, то число точек над FQ однозначно определяет число точек над любым его расширением. Таким образом, теорему Вейля для эллиптических кривых можно использовать, в частности, для нахождения числа точек над расширениями высокой степени.
Пример 5. Легко вычисляется дзета-функция эллиптической кривой у + у = а?3 над F2, так как имеется всего три Г2-точки. Она равна (1 + 2Т )/((1 — Т)(1 - 2Т)). Таким образом, обратные корни числителя — это ±г\/2. Отсюда следует формула
2Г + 1,	если г нечетно,
2Г + 1 - 2(-2)Гу/2, если г четно.
В заключение этого параграфа заметим, что существует много аналогий между группой Fg-точек на эллиптической кривой и мультипликативной группой F*. Например, по теореме Хассе они имеют примерно одинаковое число элементов. Однако абелевы группы, которые строятся по эллиптическим кривым, имеют одно значительное преимущество, которое объясняет их ценность для криптографии: для одного и того же (большого) q существует богатый выбор различных эллиптических кривых с разными значениями N. Эллиптические кривые составляют богатый источник «естественно возникающих» конечных абелевых групп. Мы воспользуемся этой возможностью в последующих трех параграфах.
УПРАЖНЕНИЯ
1.	Пусть Е — эллиптическая кривая, определенная над С, уравнение (1) которой имеет коэффициенты a, b g R; тогда точки Е с вещественными координатами образуют подгруппу. Описать все возможные виды структуры такой подгруппы комплексной кривой Е (которая как группа изоморфна произведению окружности на себя). Приведите пример для каждой из них.
2.	Сколько точек Р порядка п (т.е. таких, что пР = О) имеется на эллиптической кривой над С? Сколько таких точек на эллиптической кривой над R?
3.	Привести пример эллиптической кривой над R, имеющей в точности 2 точки порядка 2, и пример кривой, имеющей в точности 4 точки порядка 2.
4.	Пусть Р — точка на эллиптической кривой над R. Предположим, что Р не есть точка в бесконечности. Найти геометрическое условие, эквивалентное тому, что Р — точка порядка а) 2; б) 3; в) 4.
200
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
5.	Каждая из следующих точек имеет конечный порядок на данной эллиптической кривой над Q. Найти в каждом случае порядок Р.
а)	Р = (0, 16) на у2 = х3 + 256.
6)	Р = (|, |) на у2 = х3 + ±х.
в)	Р = (3, 8) на у2 = х3 - 43г + 166.
г)	Р = (0,0) на у2+у = х3 — х2 (уравнение можно привести к виду (1) заменой переменных у —* у —	х —+ х + |).
6.	Вывести формулы сложения, аналогичные (4)-(5), для эллиптических кривых над полем характеристики 2, 3 (см. уравнения (2)-(3)).
7.	Доказать, что число Fg-точек на каждой из следующих эллиптических кривых равно q 4- 1:
а)	у2 = х3 — х, когда q = 3	(mod 4);
б)	у2 = х3 — 1, когда 5 = 2	(mod 3) (q нечетно);
с)	у2 + у = х3, когда 5 = 2	(mod 3) (здесь q может	быть	четным).
8.	Для всех степеней нечетных простых чисел	q	=	рг	до	27	включительно
найти порядок и тип группы Fg-точек на эллиптических кривых у2 = х3 — х и у2 = х3 — 1 (в последнем случае — при р У 3). В некоторых случаях вам нужно будет проверить, сколько точек имеют порядок 3 или 4.
9.	Пусть q = 2Г и пусть эллиптическая кривая Е над F, имеет уравнение у2 + у = х3.
а)	Выразить координаты — Р и 2Р в терминах координат Р.
б)	Показать, что при 5 = 16 каждая Р g Е есть точка порядка 3.
в)	Показать, что любая точка Е с координатами в F16 фактически есть точка с координатами в F4. Далее с помощью теоремы Хассе при 5 = 4 и 16 определить число точек на кривой.
10.	Вычислить дзета-функцию двух кривых из упражнения 8 над Fp для р = 5,7, 11, 13.
11.	Вычислить дзета-функцию кривой у2 + у = х3 — z + 1 над Fp для р = 2 и 3. (Сначала покажите, что в обоих случаях N\ =\1.) Пусть N(z) = х • х обозначает норму комплексного числа. В терминах нормы найТи простую формулу для Nr.
ЛИТЕРАТУРА к § 1 ГЛАВЫ VI
1.	Fulton W. Algebraic Curves. Menlo Park: Benjamin, 1969.
2.	Husemoller D. Elliptic Curves. Heidelberg etc.: Springer, 1987.
3.	Koblitz N. Introduction to Elliptic Curves and Modular Forms. 2nd ed. Heidelberg etc.: Springer, 1993.
4.	Koblitz N. Why study equations over finite fields? — Math. Mag., 1982, v. 55, p. 144-149.
5.	Lang S. Elliptic Curves: Diophantine Analysis. Heidelberg etc.: Springer, 1978.
6.	Silverman J. The Arithmetic of Elliptic Curves. Heidelberg etc.: Springer, 1986.
§ 2. Криптосистемы на эллиптических кривых
В § IV. 3 мы показали, как можно конечную абелеву группу F* — мультипликативную группу конечного поля — использовать для создания криптосистемы с открытым ключом. Точнее, именно слож
§ 2. КРИПТОСИСТЕМЫ НА ЭЛЛИПТИЧЕСКИХ КРИВЫХ
201
ность решения задачи дискретного логарифмирования приводит к криптосистемам, обсуждавшимся в § IV. 3. Цель этого параграфа — построение аналогичных систем с открытым ключом, основанных на конечной абелевой группе эллиптической кривой, определенной над Fg.
Прежде чем описывать криптосистемы, нужно обсудить некоторые вспомогательные понятия.
Кратные точки. Для эллиптических кривых аналогом умножения двух элементов группы F* служит сложение двух точек эллиптической кривой Е, определенной над Fg. Таким образом, аналог возведения в степень к элемента из F* — это умножение точки Р € Е на целое число к. Возведение в к-ю степень в F, методом повторного возведения в квадрат можно осуществить за О (log к log3 q) двоичных операций (см. предложение II. 1. 9). Аналогично, мы покажем, что кратное кР € Е можно найти за O(log&log3 q) двоичных операций методом повторного удвоения.
Пример 1. Чтобы найти 100Р, записываем 100Р = 2(2(Р + 2(2(2(Р + 2Р))))) и приходим к цели, производя 6 удвоений и 2 сложения точек на кривой.
Предложение VI. 2.1. Пусть эллиптическая кривая Е определена уравнением Вейерштрасса (уравнением (1), (2) или (3) из предыдущего параграфа) над конечным полем F?. Если задана точка Р на Е, то координаты кР можно вычислить за €?(log A; log3 q) двоичных операций.
Доказательство. Заметим, что вычисление координат суммы двух точек по уравнениям (4)-(5) (или по аналогичным уравнениям из упражнения 6 к § 1) требует не более 20 действий в F, (умножений, делений, сложений или вычитаний). Поэтому, согласно предложению II. 1.9, сложение двух точек (или удвоение точки) занимает время О (log3 q). Так как при методе повторного удвоения выполняется O(log&) одинаковых шагов (см. доказательство предложения 1.3.6), мы получаем, что координаты точки кР вычисляются за O(log&log3 q) двоичных операций.
Замечание 1. Оценки времени работы в предложении VI. 2.1 не являются наилучшими, особенно для конечных полей характеристики р = 2. Нам, однако, достаточно этих оценок, которые следуют из наиболее очевидных алгоритмов арифметики в конечных полях.
Замечание 2. Если известно число N точек на нашей эллиптической кривой Е и если к > N, то в силу равенства NP = О мы можем заменить к его наименьшим неотрицательным вычетом по модулю А; в этом случае временная оценка заменяется на O(log4 q)
202
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
(напомним, что N q + 1 + 2^/q = 0(g)). Рене Шуф (R. Schoof) предложил алгоритм, вычисляющий N за O(log8 д) двоичных операций.
Представление открытого текста. Мы намереваемся кодировать наши открытые тексты точками некоторой заданной эллиптической кривой Е, определенной над конечным полем Fg. Мы хотим это осуществить простым и систематическим способом так, чтобы открытый текст т (который можно рассматривать как целое число из некоторого интервала) можно было легко прочитать, зная координаты соответствующей точки Рт. Заметим, что это «кодирование» — не то же самое, что засекречивание. Позднее мы будем рассматривать способы шифрования точек Рт открытого текста. Однако законный пользователь системы должен быть в состоянии восстановить т после дешифрования точки шифртекста.
Следует сделать два замечания. Во-первых, не известно детерминистического полиномиального (по logg) алгоритма для выписывания большого числа точек произвольной эллиптической кривой Е над Fq. Однако, как мы увидим далее, существуют вероятностные алгоритмы с малой вероятностью неудачи. Во-вторых, порождать случайные точки на Е недостаточно: чтобы закодировать большое число возможных сообщений т, необходим какой-то систематический способ порождения точек, которые были бы связаны с т определенным образом, например, чтобы х-координата имела с т простую связь.
Приведем один возможный вероятностный метод представления открытых текстов как точек на эллиптический кривой Е, определенной над Fq, где q = рг предполагается большим (и нечетным (см. ниже упражнение 8 при g = 2Г)). Пусть х — достаточно большое целое число, настолько, что можно считать допустимым, если попытка представить в нужном нам виде элемент («слово») открытого текста т оказывается неудачной в одном случае из 2х; практически достаточно х = 30 или, на худой конец, х = 50. Пусть элементы нашего сообщения т — целые числа, 0 т М. Предположим также, что выбранное нами конечное поле имеет g элементов, g > Мн. Записываем целые числа от 1 до Мн в виде mx-f-j, где 1 j х, и устанавливаем взаимно однозначное соответствие между такими числами и некоторым множеством элементов из Fg. Например, можно записать такое число как r-значное число в р-ичной системе счисления и, отождествляя цифры в этой записи с элементами Fp * Z/pZ, рассматривать их как коэффициенты многочлена степени не выше г - 1 над Fp, соответствующего элементу поля FQ. Таким образом, числу (ar_iar_2 ... ai«o)p ставится в соответствие многочлен Хл=о который, будучи рассмотрен по модулю некоторого фиксированного неприводимого многочлена степе
§ 2. КРИПТОСИСТЕМЫ НА ЭЛЛИПТИЧЕСКИХ КРИВЫХ
203
ни г над Fp, дает элемент Fg.
Итак, при данном т при каждом j = 1,2,..., х мы получаем элемент х из Fg, соответствующий mx + j. Для такого х вычисляем правую часть уравнения
У2 =	= х3 + ах + b
и пытаемся найти квадратный корень из /(л), используя метод, изложенный в конце §11.2. (Хотя этот алгоритм был приведен для простого поля Fp, он дословно переносится на любое конечное поле Fg. Чтобы воспользоваться им, нужно иметь элемент д в этом поле, не являющийся квадратом; его можно легко найти с помощью вероятностного алгоритма.) Если мы находим такой у, что у2 = /(л), то берем Рт = (х,у). Если /(л) не оказывается квадратом, то увеличиваем j на 1 и повторяем попытку с соответствующим значением л. Если мы находим л, для которого /(л) — квадрат, прежде, чем j превысит х, то мы можем восстановить т по известной точке (х, у) с помощью формулы т — [(л — j)/x], где л — целое число, соответствующее л при установленном взаимно однозначном соответствии между целыми числами и элементами Fg. Так как /(л) — квадрат приблизительно в 50% случаев, то вероятность того, что метод не приведет к результату и мы не найдем точки Рт с л-координатой, соответствующей целому числу л между тх + 1 и тх + х, равна примерно 2 *. (Точнее, вероятность того, что /(л) есть квадрат, фактически равна N/(2q), однако N/(2q) очень близко к 1/2.)
Дискретный логарифм на Е. В § IV. 3 мы рассматривали криптосистемы с открытым ключом, основанные на задаче дискретного логарифмирования в мультипликативной группе конечного поля. Теперь мы сделаем то же самое в группе (относительно сложения точек) эллиптической кривой, определенной над конечным полем Fq.
Определение. Пусть Е — эллиптическая кривая над Fg и В — точка на Е. Задачей дискретного логарифмирования на Е (с основанием В) называется задача нахождения для данной точки Р g Е такого целого числа л g Z (если оно существует), что хВ = Р.
Вполне возможно, что задача дискретного логарифмирования на эллиптической кривой окажется более трудной для решения, чем задача дискретного логарифмирования в конечных полях. Наиболее сильные методы, разработанные для конечных полей, по-видимому, не работают в случае эллиптических кривых. Это обстоятельство по-особенному отчетливо проявляется в случае полей характеристики 2. Как объясняется в обзорной статье Одлыжко, упомянутой в списке литературы, специальные методы решения задачи дискретного лога
204
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
рифмирования в F2r позволяют сравнительно легко вычислять пис-кретные логарифмы и, следовательно, вскрывать криптосистемы, рассмотренные в §IV. 3, если г не выбрано очень большим. Аналогичные системы, использующие эллиптические кривые над F2r (см. ниже), судя по всему, являются надежными при значительно меньших значениях г. Так как имеются практические причины (связанные с устройством ЭВМ и программированием) предпочтительности арифметических операций над полями F2r, криптосистемы с открытым ключом, рассматриваемые ниже, могут оказаться более удобными для практического применения, чем системы, основанные на задаче дискретного логарифмирования в F*.
До 1990 г. единственными известными алгоритмами дискретного логарифмирования на эллиптических кривых были те, которые работают в любой группе и не используют особенности ее строения. Эти алгоритмы с экспоненциальным временем работы применимы к случаям, когда порядок группы делится на большое простое число. Однако впоследствии Менезес (Menezes), Окамото (Okamoto) и Вэн-стон (Vanstone) предложили новый подход к задаче дискретного логарифмирования на эллиптической кривой Е, определенной над F?. А именно, они использовали спаривание Вейля (см. § III. 8 учебника Силвермена (Silverman) из списка литературы к § 1) для вложения группы Е в мультипликативную группу некоторого расширения Fqk поля F?. Это вложение сводит задачу дискретного логарифмирования на Е к соответствующей задаче для F*k. \
Однако такое сведение полезно, лишь есм'степень к расширения мала. Фактически единственный вид эллиптических кривых, для которых к мало, — это так называемые «суперсингулярные» эллиптические кривые, наиболее известными примерами которых являются кривые вида у2 = х3 ах надполем F, характеристики р = -l(mod4) и кривые вида у2 — х ф b над полем Fg, когда р = — 1 (mod 3). Как правило, эллиптические кривые не являются суперсингулярными. Для них такое сведение почти никогда не приводит к субэкспоненциальным алгоритмам (см. мою работу в J. of Cryptology, приведенную в списке литературы).
Таким образом, основные преимущества криптосистем на эллиптических кривых заключаются в том, что не известны субэкспоненциальные алгоритмы вскрытия этих систем, если в них не используются суперсингулярные кривые, а также кривые, порядки которых делятся на большое простое число.
Теперь мы опишем аналоги систем с открытым ключом из § IV. 3, основанные на задаче дискретного логарифмирования на эллиптической кривой, определенной над конечным полем F,.
§ 2. КРИПТОСИСТЕМЫ НА ЭЛЛИПТИЧЕСКИХ КРИВЫХ
205
Аналог ключевого обмена Диффи-Хеллмана. Предположим, что Аида и Бернардо хотят договориться о ключе, которым будут впоследствии пользоваться в некоторой классической криптосистеме. Прежде всего они открыто выбирают какое-либо конечное поле Г, и какую-либо эллиптическую кривую Е над ним. Их ключ строится по случайной точке Р на этой эллиптической кривой. Если у них есть случайная точка Р, то, например, ее х-координата дает случайный элемент Fg, который можно затем преобразовать в г-разрядное целое число в р-ичной системе счисления (где q = р ), и это число может служить ключом в их классической криптосистеме. (Здесь мы пользуемся словом «случайный» в неточном смысле; мы лишь хотим сказать, что выбор из некоторого большого множества допустимых ключей произволен и непредсказуем). Они должны выбрать точку Р так, чтобы все их сообщения друг другу были открытыми и все же никто, кроме них двоих, ничего бы не знал о Р.
Аида и Бернардо первым делом открыто выбирают точку В € Е в качестве «основания»; В играет ту же роль, что образующий д в системе Диффи--Хеллмана для конечных полей. Мы, однако, не требуем, чтобы В была образующим элементом в группе точек кривой Е. Эта группа может и не быть циклической. Даже если она циклическая, мы не хотим тратить время на проверку того, что В — образующий элемент (или даже на нахождение общего числа N точек, которое нам не понадобится в последующем). Нам хотелось бы, чтобы порожденная В подгруппа была большой, предпочтительно того же порядка величины, что и сама Е. Позже мы обсудим этот вопрос. Пока что предположим, что В — взятая открыто точка на Е весьма большого порядка (равного либо N, либо большому делителю А).
Чтобы образовать ключ, Аида вначале случайным образом выбирает целое число а, сравнимое по порядку величины с q (которое близко кА); это число она держит в секрете. Она вычисляет а В € Е и передает эту точку открыто. Бернардо делает то же самое: он выбирает случайно Ь и открыто передает ЬВ 6 Е. Тогда используемый ими секретный ключ — это Р = abB G Е. Оба пользователя могут вычислить этот ключ. Например, Аида знает ЬВ (точка была передана открыто) и свое собственное секретное а. Однако любая третья сторона знает лишь аВ и ЬВ. Кроме решения задачи дискретного логарифмирования — нахождения а по В и аВ (или нахождения Ь по В и ЬВ), — по-видимому, нет способа найти аЬВ, зная лишь аВ и ЬВ.
Аналог системы Мэсси-Омуры. Как и в случае конечного поля, это — криптосистема с открытым ключом для передачи элементов сообщения ттг, которые мы теперь предположим представлен-
206
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
ними точками Рт фиксированной (и не скрываемой) эллиптической кривой Е над F9 (q берется большим). Предполагается также, что общее число N точек на Е вычислено и не составляет секрета. Каждый пользователь системы секретно выбирает такое целое случайное число е между 1 и N, что НОД (е, JV) = 1. Используя алгоритм Евклида, он находит затем обратное е к числу е по модулю А, т. е. такое целое число d, что de = 1 (mod А). Если Алиса хочет послать Бобу сообщение Рт, то она сначала посылает ему точку еАРт (индекс А указывает на пользователя Алису). Это ничего не говорит Бобу, который, не зная ни еА, ни dA, не может восстановить Рт. Однако, не придавая этому значения, он умножает ее на свое ев и посылает обратно Алисе евеАРт. На третьем шаге Алиса должна частично раскрыть свое сообщение, умножив евеАРт на dA. Так как NРт = О и dAeA = 1 (mod N), при этом получается точка евРт, которую Алиса возвращает Бобу. Тот может теперь прочитать сообщение, умножив точку евРт на dB.
Заметим, что злоумышленник может знать еАРт, евеАРт и евРт. Если бы он умел решать задачу дискретного логарифмирования на Е, то он мог бы определить ев по первым двум точкам, вычислить dB = ед1 (mod А) и Рт = dBeBPm.
Аналог системы Эль-Гамаля. Это — другая криптосистема с открытым ключом для передачи сообщений Рт. Как и в описанной выше системе ключевого обмена, мы исходим из данных несекретных: а) конечного поля Fg, б) определенной над ниъг эллиптической кривой Е и в) точки-«основания» В на ней. (Знать общее число N точек на Е нам не нужно.) Каждый из пользователей выбирает случайное целое число а, которое держит в секрете, затем находит и делает общедоступной точку аВ.
Чтобы послать Бьорну сообщение Рт, Анюта выбирает случайно целое число к и посылает пару точек (кВ,Рт + к(авВУ) (где авВ — открытый ключ Бьорна). Чтобы прочитать сообщение, Бьорн умножает первую точку из полученной пары на свое секретное число ав и вычитает результат умножения из второй точки:
Рт + к(авВ) - aB(kB) = Рт.
Таким образом, Анюта посылает замаскированное Рт вместе с «подсказкой» кВ, при помощи которой можно снять «маску» кавВ, если знать секретное число ав. Злоумышленник, который умеет решать задачу дискретного логарифмирования на Е, может, конечно, найти ав, зная авВ и В.
§ 2. КРИПТОСИСТЕМЫ НА ЭЛЛИПТИЧЕСКИХ КРИВЫХ
207
Выбор кривой и точки. Существуют различные способы выбора эллиптической кривой и (в системах Диффи -Хеллмана и ЭльГамаля) точки В на ней.
Случайный выбор (Е,В). Взяв какое-либо большое конечное поле F?, можно следующим образом осуществить одновременный выбор Е и В = (а?, у) € Е. (Будем предполагать, что характеристика р поля F9 больше 3, так что эллиптическая кривая задана уравнением (1) из § 1; при q = 2Г или 3 нетрудно сделать очевидные изменения в дальнейшем изложении.) Выбираем сначала случайным образом три элемента из Fg в качестве х, у, а. Далее полагаем b = у2 — (а:3 + ах). Убеждаемся в том, что кубический многочлен х + ах + b не имеет кратных корней, что равносильно проверке условия 4а3 + 27b2	0.
(Если это условие не выполняется, берем другую случайную тройку ж, у, а.) Полагаем В = (х, у). Тогда В — точка, на эллиптической кри-2	3
вой у = х + ах + Ь.
Число N точек кривой можно найти несколькими способами. Первый полиномиальный алгоритм для вычисления # Е, построенный Рене Шуфом (Rene Schoof), является даже детерминистическим. Он основывается на нахождении значения # Е по модулю I для всех простых чисел /, меньших некоторой границы. Для этого анализируется действие автоморфизма Фробениуса (отображения в р-ю степень) на точках порядка I.
В статье Шуфа оценка времени работы была фактически О (log8 q), т.е. хотя и полиномиальной, однако быстро растущей. Вначале казалось, что алгоритм не имеет практического значения. Однако с тех пор многие пытались повысить скорость алгоритма Шуфа (Миллер (V. Miller), Элкис (N. Elkis), Бухман (J. Buchman), Мюллер (V. Muller), Менезес (A. Menezes), Чарлап (L. Charlap), Коули (R. Coley) и Роббинс (D. Robbins)). Кроме того, Эткин (А. О. L. Atkin) разработал другой метод, который, хотя и не гарантирует полиномиального времени работы, на практике дает весьма удовлетворительные результаты. В результате всех этих усилий стало возможным вычислять порядок произвольной эллиптической кривой над Fg, если q — степень простого числа, записываемая 50 или даже 100 знаками. Некоторые методы нахождения числа точек на эллиптической кривой рассматриваются в работах из списка литературы в конце этого параграфа.
Следует также отметить, что хотя для реализации систем Диффи-Хеллмана или Эль-Гамаля знать N не нужно, на практике желательно быть уверенным в их надежности, которая зависит от того, имеет ли N большой простой делитель. Если N есть произведение малых простых чисел, то для решения задачи дискретного логарифми
208
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
рования можно использовать метод Полига-Силвера-Хеллмана (см. § IV. 3). Заметим, что метод Полига-Силвера-Хеллмана решает задачу дискретного логарифмирования в любой конечной абелевой группе (в отличие от также рассмотренного в § IV. 3 алгоритма вычисления индекса, который зависит от особенностей F9). Таким образом, нужно знать, что N не есть произведение малых простых чисел и не похоже, что это можно узнать, если не найти фактически значение N.
Редукция глобальной пары (Е,В) по модулю р. Упомянем теперь второй способ нахождения пары, состоящей из эллиптической кривой и точки на ней. Выберем сначала раз и навсегда «глобальную» эллиптическую кривую и точку бесконечного порядка на ней. Итак, пусть Е — эллиптическая кривая, определенная над полем рациональных чисел (или, для большей общности, можно было бы использовать эллиптическую кривую, определенную над некоторым числовым полем), и В — точка бесконечного порядка на Е.
Пример 2. Точка В = (0,0) является точкой бесконечного по-2	3
рядка на эллиптической кривой Е: у + у = х — хи фактически порождает всю группу рациональных точек на Е.
Пример 3. Точка В = (0,0) является точкой бесконечного по-2	3	2
рядка на Е: у + у = х + а? и порождает всю группу рациональных точек.
Далее, мы выбираем большое простое число р (или, если наша эллиптическая кривая определена над расширением К поля Q, выбираем некоторый простой идеал в К) и рассматриваем редукцию Е и В по модулю р. Точнее, для всех р, за исключением нескольких малых простых чисел, коэффициенты в уравнении для Е имеют взаимно простые с р знаменатели и, следовательно, могут рассматриваться как коэффициенты в уравнении по модулю р. Если сделать замену переменных, приведя полученное уравнение над Fp к виду у = х + ах + Ь, то кубический многочлен в правой части не будет иметь кратных корней (за исключением нескольких малых простых р) и дает поэтому эллиптическую кривую над Fp (которую мы будем обозначать Е (mod р)). Координаты точки В, будучи также приведенными по модулю р, дают точку на эллиптической кривой Е (mod р), которую мы будем обозначать В (mod р).
При использовании этого второго способа мы раз и навсегда фиксируем Е и В и за счет этого получаем много различных возможностей посредством изменения простого р.
Порядок точки В. С какой вероятностью «случайная» точка В на «случайной» эллиптической кривой оказывается порождающим
§ 2. КРИПТОСИСТЕМЫ НА ЭЛЛИПТИЧЕСКИХ КРИВЫХ	209
элементом? Или, в случае нашего второго метода выбора (Е, В), какова вероятность того, что (для случайного р) точка В при редукции по модулю р дает образующий элемент кривой Е (mod р)? Этот вопрос близок к следующему вопросу о мультипликативных группах конечных полей: пусть целое b фиксированно, а простое р случайно; какова вероятность того, что Ъ — образующий в F*? Вопрос изучался как для конечных полей, так и для эллиптических кривых. Более подробное изложение можно найти в работе Гупты (Gupta) и Мурти (Murty), приведенной в списке литературы.
Как упоминалось выше, описанные криптосистемы могут быть надежными, даже если точка В не является порождающим элементом. Фактически нужно, чтобы в циклической группе, порождаемой В, задача дискретного логарифмирования не была эффективно разрешима. Это будет так (т.е. все известные методы решения задачи дискретного логарифмирования в произвольной абелевой группе оказываются слишком медленными), если порядок В делится на очень большое простое число, скажем, имеющее порядок величины, близкий к N.
Один из способов гарантировать, что наш выбор В является надлежащим (а фактически, что В порождает эллиптическую кривую) — это взять такую эллиптическую кривую и такое конечное поле, чтобы число точек N было простым числом. Тогда всякая точка В О будет порождающим элементом. Если использовать первый из описанных выше методов, то при фиксированном Fp можно продолжать выбор пар (Е,В), пока не найдется такая, для которой число точек на Е есть простое число (что можно определить одним из тестов на простоту, обсуждавшихся в § V. 1). Если применять второй метод, то для фиксированной глобальной эллиптической кривой Е над Q можно продолжать выбирать простые р, пока не найдем кривую Е (mod р), число точек на которой — простое. Как долго нам придется ждать? Этот вопрос аналогичен следующему вопросу о группах F*: является ли (р — 1)/2 простым числом, т.е. верно ли, что любой элемент, отличный от ±1, — либо порождающий, либо квадрат порождающего элемента (см. упражнение 13 к §11.1)? Ни для эллиптических кривых, ни для конечных полей вопрос пока не получил явного ответа, однако в обоих случаях предполагается, что вероятность выбора р с требующимся свойством есть 0(1/logр).
Замечание. Для того чтобы Е (mod р) имела простой порядок N при большом р, надо выбирать Е так, чтобы она имела тривиальное кручение, т. е. чтобы на ней не было точек конечного порядка, кроме О. В противном случае N будет делиться на порядок периодической подгруппы.
210
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
УПРАЖНЕНИЯ
1.	Построить вероятностный алгоритм для нахождения элемента, не являющегося квадратом в F?.
2.	Описать полиномиальный детерминистический алгоритм для представления открытых текстов в виде точек на эллиптических кривых в следующих случаях:
(а)	Е имеет уравнение у2 = х3 — г и g Е 3 (mod 4);
(б)	Е имеет уравнение у2 + j = г3 и g Е 2 (mod 3).
3.	Пусть Е — эллиптическая кривая у2 4- у = х3 — х, определенная над полем из р = 751 элементов (заменой переменных вида у' = у 4- 376 это уравнение приводится к виду (1) из § 1). Эта кривая содержит N = 727 точек. Предположим, что передаваемые элементы открытого текста — это десятичные цифры 0-9 и буквы А-Z с числовыми эквивалентами 10-35 соответственно. Берем х = 20.
а)	Применяя изложенный метод, написать сообщение «STOP007» в виде последовательности семи точек на кривой.
б)	Перевести последовательность точек (361, 383), (241, 605), (201, 380), (461, 467), (581, 395) в ответное сообщение.
4.	Пусть Е — эллиптическая кривая, определенная над Q, и р — большое простое число, в частности, настолько большое, что, приводя уравнение у2 = х3 4-ах 4- Ъ по модулю р, мы получаем эллиптическую кривую над Fp. Показать, что
а)	если многочлен х3 4- ат 4- Ъ разлагается по модулю р на три линейных множителя, то Е (mod р) — не циклическая;
б)	если этот многочлен имеет корень по модулю р, то число N элементов на Е (mod р) четно.
5.	Пусть Е — эллиптическая кривая из примера 5 в § 1. Полагаем q = 2Г, и пусть Nr — число F2r-точек на Е.	\
а)	Показать, что при г > 1 число Nr не может быть простым.
б)	В случае 4|г найти условия, эквивалентные тому, что Nr делится на (г/4)-разрядное или (г/4 4- 1)-разрядное простое число в двоичной записи.
6.	Пусть Е — эллиптическая кривая, определенная над Fp, и Nr обозначает число Fpг-точек на Е.
а)	Доказать, что при г > 1 и р > 3 число NT не может быть простым.
б)	Привести контрпримеры к части а) в случаях р = 2 и р = 3.
7.	а) Найти эллиптическую кривую Е, определенную над F4, которая имеет лишь одну Г4-точку (точку в бесконечности О).
б)	Показать, что число F4 г-точек на кривой из части а) есть квадрат числа Мерсенна 2Г — 1.
в)	Найти простую формулу удвоения Р4>--точки на этой кривой.
г)	Доказать, что если 2Г — 1 — простое число Мерсенна, то всякая Р4г-точка (за исключением О) имеет порядок в точности 2Г — 1.
8.	Пусть г нечетно и пусть К обозначает поле F2r. Для z g К пусть j(z) обозначает	z2 1, a tr г (называемый «следом») обозначает z2’ .
а)	Доказать, что tr z € F2; tr (zi + Z2) = trzi 4-trz2; tri = 1; g(z) -I- g(z)2 = z 4- tr z.
б)	Показать, что tr z — 0 для одной половины элементов из К и tr z = 1 для другой половины.
§ 2. КРИПТОСИСТЕМЫ НА ЭЛЛИПТИЧЕСКИХ КРИВЫХ
211
в)	Описать вероятностный алгоритм порождения Гг^-точек на эллиптической кривой у"2 + у = т3 + аг + Ь.
9.	Пусть Е — эллиптическая кривая у2 = х3 + az + b с a, b g Z. Пусть Р g Е. Пусть р > 3 обозначает такое простое число, что ни 4а3 + 27Ь2, ни знаменатели х-и ^/-координат точки Р не делятся на р. Показать, что порядок точки Р (mod р) на эллиптической кривой Е (mod р) — это такое наименьшее натуральное число к, что либо 1) кР = О на Е, либо 2) р делит знаменатель координат кР.
10.	Пусть Е — эллиптическая кривая у2 + у = х3 — х, определенная над Q, и пусть Р = (0, 0). Вычисляя 2J Р для j = 1,2,..., найти пример такого простого р, что Е (mod р) не порождается точкой Р (mod р). (Замечание. Можно показать, что Р порождает группу рациональных точек на Е.)
11.	Использовать построенный по эллиптической кривой аналог системы ЭльГамаля, чтобы послать сообщение упражнения За, выбирая Е и р так же, как в упражнении 3, и полагая В = (0,0). Предположим, что открытый ключ вашего корреспондента — это точка (201, 380) и что ваша последовательность случайных значений к — это 386, 209, 118, 589, 312, 483, 335 (каждое из них используется для посылки одного элемента сообщения). Какую последовательность из 7 пар точек вы посылаете?
Заметим, что в этом упражнении мы использовали довольно малое значение р; более реальный пример такого рода, с которым можно встретиться на практике, потребовал бы работы с числами, записанными с помощью нескольких дюжин десятичных цифр.
ЛИТЕРАТУРА к § 2 ГЛАВЫ VI
1.	Agnew G., Mullin R., Vanstone S.A. An implementation of elliptic curve cryptosystems over F2is5. — IEEE J. Select. Areas Comm., 1993, v. 11, p. 804-813.
2.	Gupta R., Murty M. R. Primitive points on elliptic curves. — Compositio Math., 1986, v. 58, p. 13-44.
3.	Koblitz N. Elliptic curve cryptosystems. — Math. Comp., 1987, v. 48.
4.	Koblitz N. Primality of the number of points on an elliptic curve over a finite field. — Pacific J. Math., 1988, v. 131, p. 157-165.
5.	Koblitz N. Constructing elliptic curve cryptosystems in characteristic 2. — In: Advances in Cryptology —Crypto’90. Heidelberg etc.: Springer, 1991, v. 156-167.
6.	Koblitz N. Elliptic curve implementation of zero-knowledge blobs. — J. Cryptology, 1991, v. 4, p. 207-213.
7.	Koblitz N. CM-curves with good cryptographic properties. — In: Advances in Cryptology —Crypto’91. Heidelberg etc.: Springer, 1992, p. 279-287.
8.	Lenstra H. W., Jr. Elliptic curves and number-theoretic algorithms. — Report 86-19. Amsterdam: Mathematisch Instituut, Universiteit van Amsterdam, 1986.
9.	Menezes A. Elliptic Curve Public Key Cryptosystem. Dordrecht: Kluwer Acad. Publ., 1993.
10.	Menezes A., Okamoto T., Vanstone S.A. Reducing elliptic curve logarithms to logarithms in a finite field. — IEEE Trans. Inform. Theory IT-39, 1993, p. 1639-1646.
11.	Menezes A., Vanstone S., Zuccherato R. Counting points on elliptic curves over Fa”». — Math. Comp., 1993, v. 60, p. 407-420.
212
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
12.	Miller V. Use of elliptic curves in cryptography. — In: Abstracts for Crypto 85, 1985.
13.	Odlyzko A. M. Discrete logarithms in finite fields and their cryptographic significance. — In: Advances in Cryptology, Proceedings of Eurocrypt 84. Heidelberg etc.: Springer, 1985, p. 224-314.
14.	Schoof R. Elliptic curves over finite fields and the computation of square roots mod p. — Math. Comp., 1985, v. 44, p. 483-494.
§ 3. Критерий простоты, использующий эллиптические кривые
Критерий простоты, использующий эллиптические кривые, который предложили Гольдвассер (S. Goldwasser), Килиан (J. Kilian) и (в другом варианте) Эткин (А. О. L. Atkin), представляет собой аналог следующего связанного с группой (Z/nZ)* критерия простоты Поклингтона (Н. Pocklington).
Предложение VI. 3.1. Пусть п — натуральное число. Предположим, что имеется простой делитель q числа п— 1, больший у/п— 1. Если существует такое целое число а, что 1) а" 1 = 1 (mod п) и 2) НОД (с/"	— l,n) = 1, то п — простое число.
Доказательство. Если п — не простое, то существует простой делитель р числа п, не превосходящий у/п. Так как q > р— 1, имеем НОД (q,p — 1) = 1, и, следовательно, существует такое целое и, что uq = 1 (mod р — 1). Тогда o'71	аич^п~['1/4 =	=
1 (mod р) (по условию 1)). Однако это противоречит условию 2).
Замечания. Это — отличный тест при условии, что п — 1 делится на простое число q > у/п — 1 и что мы в самом деле можем найти это q (и доказать его простоту). В противном случае им пользоваться нельзя. (Впрочем, это не совсем так — существует более общий вариант, применимый тогда, когда известны большой делитель п — 1 и известно его разложение на простые множители, см. упражнение 2 ниже.)
Отметим, что этот критерий простоты является вероятностным лишь в том смысле, что случайно выбранное а может либо удовлетворять, либо не удовлетворять условию 2) (но, конечно, а обязано удовлетворять условию 1), иначе п — не простое). Однако, как только такое а найдено (обычно достаточно взять а = 2), критерий доказывает, что п — простое число. В отличие от тестов § V. 1 (тестов Соловея-Штрассена и Миллера-Рабина), заключение теста Поклингтона — совершенно определенное: п — простое число (а не «вероятно простое»).
§ 3. КРИТЕРИЙ ПРОСТОТЫ
213
Критерий простоты, использующий эллиптические кривые, основан на аналогичном предложении, в котором предполагается заданным уравнение у2 = х + ах + Ь, рассматриваемое по модулю п. Иначе говоря, целые числа а, Ь рассматриваются как вычеты по модулю п и Е обозначает множество всех пар (х,у) целых чисел из Z/tzZ, удовлетворяющих этому уравнению, вместе с символом О, который мы называем «точкой в бесконечности». Если п — простое число (а это почти всегда так, ибо практически мы рассматриваем лишь числа, прошедшие тесты на вероятную простоту из § V. 1), то Е — эллиптическая кривая с нейтральным элементом О.
Прежде чем формулировать аналог предложения VI. 3. 1 для Е, заметим, что даже не зная, что п — простое число, можно для сложения элементов из Е применять формулы из § 1. При сложении двух точек (или удвоении точки) возможны три случая: 1) мы получаем корректно определенную точку; 2) если точки имеют вид (х, у~) и (ж,-?/) по модулю п, то мы получаем точку в бесконечности; 3) формулы оказываются неопределенными, поскольку встретился знаменатель, не обратимый по модулю п. Однако случай 3) означает, что п — составное число, и мы можем найти его нетривиальный делитель, взяв НОД от п и этого знаменателя. Таким образом, без ущерба для общности мы можем в дальнейшем предполагать, что случай 3) исключен.
Можно показать, что если Р — элемент Е по модулю п, то даже при составном п ответ, который наш алгоритм дает для тР, не зависит от последовательности сложений или удвоений точек (a priori это не очевидно). Однако этот факт ниже не используется. Достаточно условиться обозначать тР любую точку, полученную из Р путем вычислений по модулю п по формулам из § 1.
Вполне аналогично тому, как сложение точек по модулю п можно проводить без предположения о простоте п, можно применить к нашему множеству Е по модулю п алгоритм нахождения числа точек на эллиптической кривой (например, метод Шуфа). Мы либо получим некоторое целое т, которое при простом п равно числу точек эллиптической кривой Е, либо столкнемся с неопределенным выражением, знаменатель которого имеет с п нетривиальный общий делитель. Как и в случае сложения точек, без ущерба для общности можно предположить, что последний случай никогда не встречается.
Такое т будет играть роль п - 1 в предложении VI. 3. 1; отметим, что п - 1 — это порядок группы (Z/nZ)*, если п — простое число.
Теперь сформулируем аналог критерия Поклингтона для эллиптических кривых.
Предложение VI. 3.2. Пусть п — натуральное число. Пусть Е — множество, определяемое уравнением у2 = ж3 + ах + b по моду
214
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
лю п, как описано выше (и НОД (4а3 + 27b2,п) =1 — прим, перевР). Пусть т — целое число. Предположим, что у т есть простой делитель q, больший (n't4 + I)2. Если существует такая точка Р на Е, что 1) тР = О и 2) — определена и не равна О, то п — простое число.
Доказательство (ср. с доказательством предложения VI. 3. 1). Если п — не простое, то у него есть простой делитель р -/п. Пусть Е1 — эллиптическая кривая, заданная тем же уравнением, что и Е, но рассматриваемая по модулю р, и пусть т — порядок группы Е1. По теореме Хассе т' р + 1 + 2у/р = (у/р + I)2 V (n1^4 + I)2 < q и поэтому НОД(?,т/) = 1. Следовательно, существует такое целое и, что uq = 1 (mod т). Пусть Р £ Е' — это точка Р, рассматриваемая по модулю р. Тогда в Е' имеем / Р' = uq/Г’ = итР1 = О ввиду 1), так как тР' получается в точности тем же путем, что и тР, только все действия производятся не по модулю п, а по модулю его делителя р. Но это противоречит 2), так как если /Р определена и не равна О по модулю п, то, производя при вычислении /Р' те же действия, только по модулю р, мы должны получить /Р' / О. Предложение доказано.
Это предложение приводит к алгоритму для доказательства простоты данного натурального числа п (о котором уже известно, что оно «вероятно простое»). Действуем следующим образом. Выбираем случайно три целых числа а,х,у по модулю п и полагаем b = у2 — х3 —ах (mod п/. (Если при этом НОД (4а +276 , п) > 1, то выбираем другую тройку (а, х, у). — Прим, перев.) Тогда Р = (х,?/) есть эле-мент множества Е, которое определяется уравнением у = х + ах + 6. Используем метод Шуфа (или другой метод для подсчета числа точек на эллиптической кривой), чтобы найти число т, которое при простом п равно числу точек эллиптической кривой Е над Fn. Если мы не можем представить т в виде т = kq, где к 2 — малое целое число, a q - «вероятно простое» (т. е. прошедшее один из тестов § V. 1), то выбираем другую случайную тройку (а, х,у) и повторяем действия с начала. Предположим, что мы получили, наконец, эллиптическую кривую, для которой т имеет искомый вид. Тогда с помощью формул из § VI. 1 (работая по модулю п) находим тР и кР. Если мы в какой-то момент получаем неопределенное выражение — либо при нахождении кратной для точки Р, либо при использовании алгоритма Шуфа, то мы сразу находим нетривиальный делитель числа п. Мы можем предположить, что этого не случается. Если тР / О, то п — составное (так как, если бы п было простым, группа Е имела бы порядок т и
§ 3. КРИТЕРИЙ ПРОСТОТЫ
215
любой элемент Е при умножении на т обращался бы в нуль). Если кР = О (что весьма маловероятно), то нам не повезло и нужно начинать заново с другой тройкой. Но если тР = О и кР О, то согласно предложению VI. 3. 2 число п — простое, если большой делитель q числа т — действительно простое число (а мы знаем только, что q — «вероятно простое»). Это сводит задачу к доказательству простоты числа q, которое не превосходит п/2. Мы затем начинаем снова с q вместо п. Таким образом, мы получаем рекуррентную процедуру с t применениями критерия простоты, где t не больше log2 п. В конце работы мы получаем число qt, о котором знаем, что оно простое; отсюда следует, что предыдущее qt_1 было на самом деле простым (а не только «вероятно простым»), то же самое справедливо для qt_z и далее, до q} = q, и, наконец, получаем, что само п — действительно простое. Этим описание критерия простоты, использующего эллиптические кривые, завершено.
С данным критерием связаны две трудности, одна — практическая, а другая — теоретическая. Во-первых, хотя алгоритм Шуфа и работает полиномиальное время от logn, для практических применений он очень сложен. В последнее время были достигнуты некоторые успехи в его разработке и упрощении, но все равно приходится подсчитывать число точек на большом количестве кривых Е, пока мы не найдем, наконец, кривую, у которой т имеет нужный нам вид — т — kq. Чтобы справиться с этой проблемой, Эткин (А. О. L. Atkin) разработал вариант критерия простоты, использующего эллиптические кривые, с тщательным подбором эллиптических кривых с комплексным умножением, для которых значительно легче находить число точек в их редукциях по модулю п. Более подробно о методе Эткина см. статью Ленстры и Ленстры из приведенного ниже списка литературы.
Вторая трудность — теоретическая. Чтобы найти эллиптическую кривую Е над Fn (предполагая, что п — простое), у которой число точек — «почти простое» (т. е. имеет вид т = qk для малого к и простого q), мы должны знать кое-что о распределении простых чисел (вернее, «почти простых») в интервале р + 1 — 2^р,р + 1 + 2у/р, где по теореме Хассе находится число т. Пока что не доказаны теоремы, гарантирующие, что в результате полиномиально зависящего от log п числа попыток с высокой вероятностью будет обнаружена кривая Е, число точек которой имеет указанный вид и лежит в интервале столь (относительно) малой длины. Однако существует весьма правдоподобная гипотеза, которая могла бы это гарантировать, чего вполне достаточно для практических целей. Построение доказуемо полиномиального вероятностного алгоритма значительно сложнее: такой критерий простоты, разработанный Адлеманом (L. Adleman) и Хуа-
216
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
ном (М. Huang), использует двумерные абелевы многообразия, представляющие собой обобщение эллиптических кривых на размерность’ 2. Однако этот алгоритм очень громоздок и совершенно неприменим на практике.
УПРАЖНЕНИЯ
1.	а) Пусть в критерии простоты Поклингтона п — простое число, п — 1 делится на простое число q, как в предложении VI. 3. 1, и а выбирается случайно в (Z/nZ)*. Какова вероятность того, что а будет удовлетворять условиям этого предложения?
б) Пусть в критерии простоты, использующем эллиптические кривые, п — простое число, имеется эллиптическая кривая, порядок которой делится на простое число q, как в предложении VI. 3.2, и Р — случайно выбранная точка на ней. Какова вероятность того, что Р будет удовлетворять условиям этого предложения?
2.	Обобщить критерий простоты Поклингтона на случай, когда известен делитель s числа п — 1, больший у/п — 1, и известны все его простые делители q. Условие 2) должно выполняться для всех <у|з.
3.	а) (Критерий простоты Пепина (Pepin) для чисел Ферма). Доказать, что число Ферма п = 2	+1 простое тогда и только тогда, когда существует такое
2*-1
целое число а, что а2 = —1 (mod п). Доказать, что если п — простое, то 50% из всех а Е (Z/nZ)* обладают этим свойством. Доказать также, что если к > 1, то в качестве а всегда можно выбрать одно из чисел 3, 5, 7.
б) Доказать, что число Мерсенна п = V — 1 является простым в том и только том случае, когда на кривой Е: у1, = z3-|-z (mod п) найдется такая точка Р = (z, у), что 1) при вычислении 2₽-1 Р не возникают необратимые по модулю п знаменатели и 2) г/-координата точки 2₽-1Р равна нулю. Для этого покажите, во-первых, что если п = 2₽ — 1 является простым, то группа точек на (mod n) — циклическая порядка 2Р и 50% всех Р Е Е (mod п) имеют отмеченные выше свойства 1)-2). Объясните, как можно порождать случайные точки Е (mod п). Вы можете пользоваться любым алгоритмом, который предполагает, что 6n-1 = 1 (mod п) (т. е. что п — псевдопростое по различным основаниям 6), так как, если вы когда-либо столкнетесь с Ь, для которого это сравнение не выполняется, то ваш критерий прекратит работу, выдав заключение, что п — составное число.
Заметим, что этот критерий простоты — вероятностный в том смысле, что если п — простое число, то нет никаких гарантий относительно времени, за которое нужная нам точка Р обнаружится. Но, как только такая точка Р найдена, критерий заключает, что п — простое число. В этом отношении он отличается от критериев псевдопростоты из § V. 1. Обобщенную процедуру проверки на простоту любого нечетного п можно найти в работе Босма (W. Bosma) из приведенного ниже списка литературы.
ЛИТЕРАТУРА к § 3 ГЛАВЫ VI
1. Adleman L., Huang М. Recognizing primes in random polynomial time. — In: Proceedings of the 19th Annual ACM Symposium on Theory of Computing, 1987, p. 462-469.
§ 4. РАЗЛОЖЕНИЕ НА МНОЖИТЕЛИ
217
2.	Bosma W. Primality testing using elliptic curves. — Report 85-12. Amsterdam: Mathematisch Instituut, Universiteit van Amsterdam, 1985.
3.	Goldwasser S., Kilian J. Almost all primes can be quickly certified. — In: Proceedings of the 18th Annual ACM Symposium on Theory of Computing, 1986, p. 316-329.
4.	Lenstra A. K., Lenstra H. W.,Jr. Algorithms in number theory. — Technical Report 87-008. Chicago: University of Chicago, 1987.
5.	Morain F. Implementation of the Goldwasser-Kilian-Atkin primality testing algorithm. — INRIA report 911, 1988.
6.	Pocklington H. The determination of the prime and composite nature of large numbers by Fermat’s theorem. — Proc. Cambridge Phil. Soc., 1914-16, v. 18, p. 29-30.
7.	Schoof R. Elliptic curves over finite fields and the computation of square roots mod p. — Math. Comp., 1985, v. 44, p. 483-494.
§ 4. Разложение на множители при помощи эллиптических кривых
Основной причиной повышенного интереса части криптографов к эллиптическим кривым послужило недавно найденное Ленстрой (Н. W. Lenstra) остроумное применение эллиптических кривых в новом методе факторизации, которой во многих отношениях лучше су-ществоваших ранее. С точки зрения практики, это продвижение не настолько значительно, чтобы угрожать надежности криптосистем, основанных на. трудности задачи разложения на множители (оценки времени имеют тот же вид, с которым мы уже встречались в § V. 3). Тем не менее, открытие более совершенного метода, использующего неожиданный новый инструментарий, предостерегает от благодушия по поводу невозможности существенных продвижений в задаче разложения на множители. Цель этого последнего параграфа — описание метода Ленстры.
Предваряя изложение алгоритма Ленстры разложения на множители с помощью эллиптических кривых, мы напомним один классический способ факторизации, аналогичный методу Ленстры.
(р — 1)-метод Полларда. Пусть мы хотим разложить на множители составное число п и предполагаем, что р — его (еще не известный) простой делитель. Если р таков, что р — 1 не имеет больших простых делителей, то р можно найти следующим способом.
1.	Выбираем целое число к, кратное всем или большинству целых чисел, меньших некоторой границы В. Например, в качестве к можно взять В\ или общее наименьшее кратное всех целых чисел, не превосходящих В.
218
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
2.	Выбираем целое число а между 2 и п - 2. Например, а может быть равно 2, 3 или случайно выбранному целому числу.
k
3.	Вычисляем а по модулю п повторным возведением в квадрат.
4.	Вычисляем d = НОД (ак — 1, тг), используя алгоритм Евклида и вычет ак (mod тг) из шага 3.
5.	Если d не есть нетривиальный делитель тг, то повторяем все шаги с новым а и/или новым к.
Чтобы понять, при каких условиях этот алгоритм будет работать, предположим, что к делится на все натуральные числа, не превосходящие В. Далее, пусть р — простой делитель п, для которого р — 1 представляется в виде произведения степеней небольших простых чисел, причем каждый из сомножителей меньше В. Отсюда следует, что к кратно р- 1 (так как оно кратно каждому из сомножителей в разложении р— 1). Поэтому, по малой теореме Ферма, имеем а = 1 (mod р). Тогда НОД (ак — 1, п) делится на р. Таким образом, единственное препятствие, которое может помешать нам получить на шаге 4 нетривиальный делитель тг, — это случай, когда ак = 1 (mod тг).
Пример 1. Разложим указанным методом п = 540143. Выбираем В = 8 (и, следовательно, к равно 840 — общему наименьшему кратному 1,2,..., 8) и а — 2. Находим, что 2840 (mod тг) — это 53047 и НОД (53046, тг) = 421. Тем самым приходим к разложению 540143 = 421 • 1283.
Основная слабость метода Полларда, очевидно, проявляется при попытках его применения в тех случаях, когда все простые делители р числа тг таковы, что р— 1 делится на относительно большое простое число (или на большую степень простого числа).
Пример 2. Пусть тг = 491389. Вряд ли мы найдем нетривиальный делитель, если выберем В < 191. Причина этому — разложение тг = 383 • 1283: мы имеем 383 - 1 = 2 • 191, 1283 - 1 = 2 • 641 (как 191, так и 641 — простые числа). За исключением а = 0, ±1 (mod 383), все другие а имеют порядки по модулю 383 либо 191, либо 382; за исключением а = 0,±1 (mod 1283), все другие значения а имеют порядки по модулю 1283 либо 641, либо 1282. Таким образом, если к не делится на 191 (или 641) то, скорее всего, на шаге 4 мы вновь и вновь будем получать НОД (ак — 1, тг) = 1.
Основной недостаток (р — 1)-метода Полларда состоит в том, что в нем используется только группа (Z/pZ)* (точнее, различные такие группы, когда р пробегает простые делители тг). Для данного тг эти группы фиксированны. Если порядок каждой из них делится на большое простое число, метод не работает.
Принципиальное отличие метода Ленстры, как мы увидим, со
§ 4. РАЗЛОЖЕНИЕ НА МНОЖИТЕЛИ
219
стоит в том, что при использовании эллиптических кривых над полем Fp= Z/pZ мы неожиданно получаем целый сонм групп и поэтому можем рассчитывать найти среди них такую, у которой порядок не делится на большое простое число или большую степень простого числа.
Мы начнем описание алгоритма Ленстры с некоторых комментариев по поводу редукции точек на эллиптических кривых по модулю п, где п — составное число (в отличие от §2, где мы работали по модулю простых чисел и в конечных полях).
Эллиптические кривые — редукция по модулю п. До конца этого параграфа мы будем обозначать через п нечетное составное число и через р (пока неизвестный) простой делитель п. Будем считать, что р > 3. Пусть т — целое число и х1} х2 — два рациональных числа со знаменателями, взаимно простыми с ггг. будем писать xj = х2 (mod m), если числитель разности х^ — х2, записанной в виде несократимой дроби, делится на т. Для любого рационального числа х^ со знаменателем, взаимно простым с т, существует такое однозначно определенное целое х2 между 0 и т — 1 («наименьший неотрицательный вычет»), что Xi = х2 (mod m). Иногда мы будем обозначать наименьший неотрицательный вычет как х^ (mod т).
Пусть даны уравнение вида у2 = х3 + ах + b, a, b Е Z, и удовлетворяющая ему точка Р = (х,у). На практике эллиптическая кривая Е вместе с точкой Р будут порождаться некоторым «случайным» образом. Например, можно выбрать три случайных целых числа а,х,у из некоторой области и положить затем b = у2 — х —ах. Будем предполагать, что кубический многочлен х3 + ах 4- b имеет различные корни, т. е. что 4а3 + 2762	0; это условие выполняется почти всегда, если ко-
эффициенты выбираются описанным выше случайным образом. Для простоты мы предполагаем также в дальнейшем, что 4а + 276 не имеет с п общих множителей; другими словами, что х + ах + b не имеет кратных корней по модулю р для любого простого делителя р числа п. Практически, выбрав а, Ь, мы можем проверить это, найдя НОД (4а3 + 27b2,п). Если это число больше 1, то либо п[(4а3 + 27б2) (и тогда нам следует выбрать другие а и 6), либо мы уже обнаружили нетривиальный делитель п (и тогда задача решена). Итак, мы будем предполагать, что НОД (4aJ + 27b , n) = 1.
Пусть нам нужно найти кратную кР для точки Р методом повторного удвоения, изложенным в § VI. 2. Есть много различных способов сделать это за O(logAr) шагов, каждый из которых — либо удвоение точки, либо сложение двух различных точек. Можно, например, записать к в двоичной системе счисления: к — а0 + аг2 + • • • + ат_12т~1
220
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
и затем последовательно удваивать Р, прибавляя 23 Р к уже накопленной сумме, если соответствующий бит aj равен 1. Можно также разложить к в произведение простых чисел /1;/2,... (расположенных, скажем, в неубывающем порядке) и затем последовательно вычислять /jP, l2(JiP) и т. д. Здесь каждая точка IjPj, где Pj = lj~ilj_2 -hP, вычисляется повторным удвоением с использованием двоичной записи чисел lj.
Пусть выбран какой-либо из таких приемов вычисления кратных кР. Будем рассматривать точку Р и все ее кратные по модулю п. Это означает, что мы полагаем Р (mod п) = (х (mod п),у (mod п)) и всякий раз при вычислении кратной точки кР мы фактически вычисляем лишь вычеты ее координат по модулю п. Все вычисления при удвоении и сложении точек можно проводить по модулю п, если выполнено нетривиальное условие: все знаменатели должны быть взаимно просты с п.
Предложение VI. 4.1. Пусть Е — эллиптическая кривая с уравнением у2 = х3 ах + Ь, где a,b g Z и НОД (4а3 + 27b2,п) = 1. Пусть Р2 — дбе точки на Е, у которых знаменатели координат взаимно просты с п, и Р] / -Pi- Тогда Рг + Р2 £ Е имеет координаты, у которых знаменатели взаимно просты с п, в том и только том случае, когда у п нет простого делителя р, для которого сумма точек Pi (mod р) и Р2 (mod р) на эллиптической кривой Е (mod р) была бы равна точке в бесконечности О (mod р) £ Е (mod р). Здесь Е (mod р) обозначает эллиптическую кривую[над Fp, полученную приведением по модулю р коэффициентов уравнения у2 = х3 + ах + Ь.
Доказательство. Пусть все точки Рг = (aij, уг), Р2 = (г2, р2) и Pi + Р2 £ Е поначалу имеют координаты со знаменателями, взаимно простыми с п. Требуется доказать, что для любого простого делителя р числа п сумма Pi (mod р) + Р2 (mod р) ф О (mod р). Если Xi х2 (mod р), то в соответствии с описанием закона сложения на Е (mod р) мы сразу же заключаем, что Pi (mod р) + Р2 (mod р) ф О (mod р). Теперь предположим, что хг = х2 (mod р). При Pj = Р2 координаты точки Pi + Р2 = 2Pi определяются формулой (5) из §1, и 2Pi (mod р) находится по той же формуле с заменой каждого члена его вычетом по модулю р. Нам нужно показать, что знаменатель 2yi дроби в правой части (5) не делится на р. Но если бы он делился на р, то 3^1 + а делилось бы на р (так как знаменатель ж-координаты точки 2Pi на р не делится). Тогда Xi был бы корнем по модулю р как мно-гочлена х + ах + Ь, так и его производной За: + а, что противоречит нашему предположению об отсутствии кратных корней по модулю р у этого многочлена. Теперь пусть Pi Р2. Так как а:2 = хг (mod р)
§ 4. РАЗЛОЖЕНИЕ НА МНОЖИТЕЛИ	221
и х2 xi, мы можем записать т2 = Х1 + рГх, где г > 1 выбрано так, что ни числитель, ни знаменатель х не делятся на р. По предположению знаменатели координат точки Рг + Р2 не делятся на р, поэтому из формулы (4) в § 1 следует, что у2 имеет вид уг + ргу. С другой стороны,
3/2 = 01 + РГ + а(ж! + рт х) + b
н х-[ + ахг + о + р х[бх-[ + а) = yi + р х{бх-[ + a) (mod р ).
Так как х2 = хг (mod р) и у2 = yi (mod р), то Р1 (mod р) = Р2 (mod р), т.е. Р± (mod р) + Р2 (mod р) = 2Р] (mod р). Очевидно, что 2Р1 (mod р) = О (mod р) тогда и только тогда, когда у, = у2 = О (mod р). Если это сравнение выполнено, то у2 — у\ = (у2 — У\ )(р2 + Pi) должно делиться на р (т. е. должен делиться на р числитель этого рационального числа). Поэтому из сравнения (1) следовало бы, что 3xi + а = 0 (mod р). Но это невозможно, поскольку х3 + ах + Ь не имеет кратных корней по модулю р, т.е. х1 не может быть общим корнем этого многочлена и его производной. Значит, Р\ (mod р) + Р2 (mod р) О (mod р), как и утверждалось.
Обратно, пусть Pi (mod р) + Р2 (mod р) О (mod р) для каждого простого делителя р числа п. Покажем, что знаменатели координат Pi pPi взаимно просты с п, т. е. что знаменатели не делятся ни на какой простой делитель р числа п. Фиксируем некоторое р\п. Формулы (4), (5) из § 1 показывают, что если х2 хг (mod р), то делящихся на р знаменателей нет. Поэтому предположим, что х2 = хг (mod р). Тогда у2 = ±pi (mod р); но так как Р; (mod р) + Р2 (mod р) 0 О (mod р), то у2 = pi 0 (mod р). При Р2 = Pi формула (5) из § 1 вместе с условием i/i^O (mod р) показывает, что знаменатели координат точки Pi + Р2 = 2Pi взаимно просты с р. Наконец, если Р2 Рь мы вновь пишем х2 = х1 + х с х, не делящимся на р, и, используя сравнение (1), получаем (у2 - yi)/(x2 — Xi) = 3zi + a (mod р). Так как р не делит /л + 2/2 = 22/i (mod р), отсюда следует, что знаменатель числа	= rl-x} не Делится на р, и в силу формулы (4)
из § 1 знаменатели координат точки Pi + Р2 не делятся на р. Теорема доказана.
Метод Ленстры. Пусть дано составное целое нечетное число п и нам нужно найти его нетривиальный делитель d\n, 1 < d < п. Берем сначала какую-либо эллиптическую кривую Е: у = х + ах + Ь с целыми а, b и точку Р = (ж, у) на ней. Пару (Е,Р) можно выбирать случайным образом или использовать любой детерминистический метод, который порождает много таких пар (как в примере 4 ниже). Мы
222
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
попытаемся с помощью Е и Р разложить п способом, описанным ниже; если попытка окажется неудачной, то возьмем другую пару (Е,Р) и будем продолжать до тех пор, пока не найдем делитель d\n. Если вероятность неудачи равна р < 1, то вероятность того, что все h последовательно выбранных пар (Е,Р) окажутся неудачными, равна ph, т.е. очень мала для больших h. Таким образом, с высокой вероятностью мы разложим п за приемлемое число шагов.
Имея пару (Е, Р), мы выбираем целое число k, которое делится на степени малых простых чисел (т.е. не больших некоторого В), не превосходящие С. Таким образом, мы полагаем
£=ПП	(2)
l^B
где а/ = [(logC)/(log/)] есть такой наибольший возможный показатель, что 1а' С. Далее мы пытаемся вычислить кР, выполняя все действия по модулю п. Результаты этих вычислений не представляют для нас интереса до тех пор, пока при попытке найти число, обратное к л2 — х± в формуле (4) из § 1 или к 2у^ в (5), мы не столкнемся с числом, которое не взаимно просто с п. Согласно предложению VI. 4. 1 это произойдет, когда появится такая точка к\Р (частичная сумма в процессе вычисления кР), что к^(Р (mod р)) = О (mod р) для некоторого простого делителя р\п, иными словами, порядок Р (mod р) в группе Е (mod р) является делителем кг. Когда мы, применяя алгоритм Евклида, пытаемся обратить знаменатель, 'делящийся на р, мы вместо этого находим НОД числа п и этого знаменателя. Этот НОД и будет искомым собственным делителем п, если он отличен от п, т. е. если знаменатель не делится на само п. Однако такая делимость означала бы, по предложению VI.4. 1, что кгР (mod р) = О (mod р) для всех простых делителей р числа п, а это очень маловероятно, если п имеет не менее двух очень больших простых делителей. Таким образом, почти с полной гарантией при попытке вычисления kiP по модулю п для к^, которое делится на порядок точки Р (mod р) при некотором р|п, мы получим собственный делитель числа п.
Отметим сходство с (р — 1)-методом Полларда. Вместо группы (Z/pZ)* мы используем группу Е (mod р). Однако на сей раз, если наш выбор Е неудачен, т. е. для каждого р\п порядок группы Е (mod р) делится на большое простое число (и, следовательно, кР (mod р), скорее всего, не совпадает с О (mod р) для к, определенного формулой (2)), то нам нужно просто отбросить ее и выбрать другую эллиптическую кривую Е вместе с точкой Р Е Е. В методе Полларда такой возможности не было.
§ 4. РАЗЛОЖЕНИЕ НА МНОЖИТЕЛИ
223
Алгоритм. Пусть п — нечетное составное натуральное число. Опишем теперь вероятностный метод Ленстры разложения п на множители.
Пусть у нас есть метод порождения пар (Е,Р), состоящих из эллиптической кривой у2 = х3 + ах + b, a, b £ Z, и точки Р = (х, у) Е Е. Если дана такая пара, то мы проводим описанную ниже последовательность действий. Если посредством этой процедуры не удается получить нетривиальный делитель п, то мы образуем новую пару (Е, Р~) и повторяем процесс.
До начала работы с кривой Е по модулю п нужно проверить, что это — действительно эллиптическая кривая по модулю любого р\п, т. е. что кубический многочлен в правой части уравнения не имеет кратных корней по модулю р. Это справедливо тогда и только тогда, когда дискриминант 4а +276 взаимно прост с а. Таким образом, если НОД (4а3 + 276 , n) = 1, мы можем действовать. Конечно, если НОД не равен 1 или п, мы получаем искомый делитель тг. Если этот НОД равен тг, то нам следует выбрать другую эллиптическую кривую.
Далее, предположим, что мы выбрали два натуральных числа В и С. Здесь В — максимальная величина простого делителя того целого числа к, на которое мы будем умножать точку Р. Чем больше В, тем больше вероятность того, что кР (mod р) = О (mod р) для нашей пары (Е,Р) и некоторого р|тг; с другой стороны, чем больше В, тем дольше придется вычислять кР (mod р). Поэтому В нужно выбирать таким образом, чтобы (по нашей оценке) минимизировать время работы. Число С должно служить как бы верхней границей для того простого делителя р\п, с которым мы надеемся в конце концов получить соотношение кР (mod р) = О (mod р). Затем мы выбираем к по формуле (2), т.е. представленным в виде произведения степеней простых чисел, не превосходящих В, каждая из которых не превосходит С. Тогда, согласно теореме Хассе, если р + 1 + 2у/р < С и порядок кривой Е (mod р) не делится ни на какое простое число, большее В, то к кратно этому порядку и потому кР (mod р) = О (mod р).
Пример 3. Предположим, что мы выбрали В = 20 и хотим разложить на множители 10-значное (в десятичной системе) число тг, которое может быть произведением двух 5-значных простых чисел (т. е. п не делится ни на какое простое число, записываемое менее, чем 5 знаками). Тогда выбираем С = 100700 и к = 216 • З10 • 57 • 75 • II4 • 134  174 • 193.
Вернемся к описанию алгоритма. Работая по модулю тг, пытаемся вычислять кР следующим образом. Используя метод повторного удвоения, находим 2Р, 2(2Р), 2(4Р),..., 2“2Р, вслед за этим 3(2“2)Р,
224
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
3(3 • 2“2Р),..., 3“32“2Р и т.д., пока, наконец, не получим П/<В/“'Р (умножаем, последовательно переходя от самых малых простых делителей I числа к к самым большим). В этих вычислениях при каждом делении по модулю п применяем алгоритм Евклида для нахождения обратного элемента. Если на какой-либо стадии алгоритм Евклида не дает обратного элемента, то либо найден нетривиальный делитель п, либо в качестве НОД п и этого знаменателя получено само п. В последнем случае следует возвратиться к началу и взять другую пару (Е,Р). Если алгоритм Евклида всегда дает обратный элемент — и, таким образом, кР (mod п) вычисляется, — следует возвратиться к началу и взять другую пару (Е,Р). Описание алгоритма завершено.
Пример 4. Используем семейство эллиптических кривых у = х3 + ах - а, а — 1,2,..., каждая из которых содержит точку Р = (1,1). Перед использованием а мы должны проверить, что дискриминант 4а +27а взаимно прост с п. Попытаемся разложить п = 5429, полагая В = 3 и С = 92. (В этом примере и в приведенных ниже упражнениях мы иллюстрируем метод, используя небольшие значения п. Конечно, на практике достоинства метода проявляются лишь при несравненно больших п). Здесь наш выбор С объясняется желанием найти простой делитель, который может принимать значения до у/п « 73; для р = 73 верхняя оценка общего числа Ер-точек — это 74 + 2\/73 < 92. Согласно (2) выбираем к = 26 • З4. При каждом значении а мы последовательно умножаем шесть раз точку Р на 2 и затем четыре раза на 2	3
3, работая по модулю п на эллиптической крцвой у = х + ах - а. Когда а = 1, все вычисления проходят гладко щ тем самым выясняется, что 3426Р (mod р) — конечная точка на Е (mod р) для каждого р\п. Следующая попытка — с а = 2. В этом случае при вычислении 3226Р (mod р) мы получаем знаменатель, у которого НОД с п равен 61, т.е. находим собственный делитель п. Таким образом, порядок точки (1,1) на кривой у2 = х3 + 2х - 2 по модулю 61 является делителем 322 (см. упражнение 5 ниже). Итак, вторая попытка оказалась успешной. Кстати, если мы возьмем а = 3, то при вычислении 3426Р найдем другой простой делитель числа, равный 89. (Обычно, но не всегда, этот метод дает наименьший простой делитель.)
Время работы. Центральным вопросом при оценке времени работы является вычисление вероятности того, что при заданном р и заданной границе В (выбранной некоторым оптимальным образом) порядок N случайной эллиптической кривой по модулю р не делится ни на какое простое число, большее В. Известно, что порядки N эллиптических кривых, находящиеся (по теореме Хассе) в интервале [р + 1 — 2у/р, р + 1 + 2^/р], распределены в нем довольно равномерно (с
§ 4. РАЗЛОЖЕНИЕ НА МНОЖИТЕЛИ
225
тем исключением, что вблизи концов интервала плотность значений JV падает). Значит, эта вероятность приближенно равна вероятности того, что случайно выбранное целое число величины примерно р не делится ни на какое простое число, большее В. Мы уже видели при выводе эвристической временной оценки в § V. 3, что эта вероятность есть примерно и и, где и = (logp)/(log В). Это приводит к оценке вида 0(eC^rl°s г), где г — число бит в п. Подробный вывод оценки времени работы можно найти в статье Ленстры.
Точнее, предположим, что п — натуральное число, которое не есть степень простого и не делится на 2 и на 3. Используя правдоподобное предположение о распределении целых чисел, не делящихся на простые числа, большие В, в малом интервале вокруг р, Ленстра доказывает следующую вероятностную временную оценку для числа двоичных операций, требующихся для получения нетривиального делителя п:
е\/(2 + £) logploglogp	(3)
где р — наименьший простой делитель п и е сколь угодно близко к нулю для достаточно больших р. Так как всегда р < у/п, из (3) получается также оценка
e\/(l + e) lognloglogn	(4)
Оценка (4) имеет тот же самый вид, что и (эвристические) временные оценки для лучших из известных общих методов факторизации. Однако метод Ленстры имеет следующий ряд преимуществ перед своими конкурентами.
1.	Это — единственный метод, время работы которого существенно уменьшается, если п делится на простое число, значительно меньшее у/п.
2.	По этой причине его можно использовать в сочетании с другими методами факторизации, когда требуется разлагать на множители какие-либо вспомогательные числа. (Например, в методе цепных дробей из § V. 4 нам нужно полное разложение числа bj (mod п), если оно есть произведение относительно малых простых чисел.)
3.	В отличие от своих конкурентов он использует небольшой объем памяти.
Однако самой замечательной особенностью факторизационного алгоритма Ленстры является исторически первое использование эллиптических кривых — интенсивно изучаемого объекта современной теории чисел и алгебраической геометрии, обладающего богатой структурой. Это показывает возможность появления новых методов раз
226
ГЛ. VI. ЭЛЛИПТИЧЕСКИЕ КРИВЫЕ
ложения на множители, использующих неожиданные построения из доселе весьма далеких областей математики.
УПРАЖНЕНИЯ
1.	Используя метод Полларда с к = 840 и а — 2, попытаться разложить на множители п — 53467. Затем сделать попытку с а = 3.
2.	Предположим, что лишь один из простых делителей р числа п таков, что р — 1 не делится на большие простые числа. Предположим, что в алгоритме Полларда берется значение к, которое не кратно р — 1, и пробуются различные значения а. Оцените в терминах к и р — 1 вероятность получить d = р на шаге 4.
3.	Для следующих значений р и В найти (используя, если необходимо, компьютер) долю целых чисел между р + 1 — 2^/р и р + 1 + 2^/р, которые не имеют простых делителей, больших В: а) р = 109, В = 3; б) р = 109, В = 19; в) р = 1009, В = 19; г) р = 1009, В = 97; д) р = 9973, В = 97.
4.	Каждое из чисел п в упражнении 5 из §V.4 имеет делитель р < 100. В каждом из случаев а)-л) найти этот делитель методом Ленстры эллиптических кривых, выбирая В = 5, С = 120, Р = (1, 1) и Е'. у1 2 = x3-f-ax — a при а = 1,2,... (взяв те а, для которых дискриминант взаимно прост с п). Каково в каждом из случаев первое значение а, для которого вы находите делитель, и каково при этом первое значение к\, для которого найденный делитель появляется как НОД (знаменатель, п) при вычислении ki Pl
5.	Пусть к задано равенством (2). Предположим, что вы находите делитель числа п в процессе вычисления к, Р по модулю п, где р — частичное произведение в (2). (Напомним, что мы вычисляем кР, умножая последовательно на числа I в порядке возрастания.) Докажите, что к\ Р (mod р) = О (mod р) для некоторого р\п, исключив тем самым возможность получения знаменателя, не взаимно простого с п, при вычислении Z((Ai /1)Р) на одном из этапов метода удвоения, предшествующем последнему шагу.
6.	а) Предположим, что для любого а Е Z имеется эффективный способ нахождения такой точки Р = (х,у), что у2 = х3 + ах (mod п). Объясните, чем плоха идея использовать для разложения п эллиптическую кривую у2~х3 р ах с различными а.
б)	Тот же вопрос для семейства эллиптических кривых у2 = х3 + b с различными Ъ.
7.	Предположим, что вы хотите немного увеличить вероятность того, что порядок Е (mod р) для некоторого р^ есть произведение малых простых множителей, обеспечивая делимость этого порядка на 4. Опишите, как это сделать.
ЛИТЕРАТУРА к § 4 ГЛАВЫ VI
1. Lenstra Н. IV., Jr. Factoring integers with elliptic curves. — Ann. Math., 1987, v. 126, p. 649-673.
2. Montgomery P. Speeding the Pollard and elliptic curves methods of factorization. — Math. Comp., 1987, v. 48, p. 243-264.
3. Pollard J. M. Theorems on factorization and primality testing. — Proc. Cambridge Phil. Soc., 1974, v. 76, p. 521-528.
ОТВЕТЫ К УПРАЖНЕНИЯМ
§1-1
1.	(112111)з.
2.	(260J£)7.
3.	10001100101; 1101
4.	MPJNS; LIKE-^r (другими словами, JQVXHJ=WE-LIKE+IT).
5.	a) 10.101101111110000. 6) C.SRO.
6.	Если b-r — 1 кратно d, то дробь можно записать в виде а / (Ъ? — 1), где а — целое число не более чем из f разрядов. Теперь воспользуйтесь формулой для суммы геометрической прогрессии с первым членом ab~^ и знаменателем Обратно, при заданном чисто периодическом разложении х с периодом f покажите, что b‘ х отличается от х на /-значное целое а. Это означает, что х = а/(fc^ — 1).
7.	a) (BAD)ig. б) Никакого деления не требуется. Например, при переходе от двоичной к шестнадцатиричной системе просто разбиваем число (начав справа) на блоки по четыре разряда и рассматриваем каждую четверку как шестнадцатиричное число (или заменяем на один из символов 0-9, A-F).
8.	1) Посмотреть на верхний и нижний биты и проверить, не занималась ли единица для вычитания в младшем разряде. 2) Если биты одинаковы и единица не занималась или если верхний бит — это 1, а нижний — это 0 и единица занималась, то пишем 0 и идем дальше. 3) Если верхний бит — это 1, а нижний — это 0 и единица не занималась, то пишем 1 и идем дальше. 4) Если верхний бит — это 0, а нижний — это 1 и единица занималась, то занимаем единицу в старшем разряде, в текущий разряд разности помещаем 0 и идем дальше. 5) Если оба бита одинаковы и единица занималась или сверху стоит 0, а снизу 1 и единица не занималась, то занимаем единицу в старшем разряде, в текущий разряд разности помещаем 1 и идем дальше.
9.	а) Требуется п — 1 умножений; в каждом из них промежуточное произведение 3J имеет не более О(п) разрядов и 3 имеет 2 разряда, поэтому требуется О(п) двоичных операций. Таким образом, в итоге получаем О(п2). б) Здесь промежуточное произведение имеет О(п log п) разрядов. Поэтому каждое произведение требует О(п log2 п) двоичных операций. Общая трудоемкость составляет O(n2 log2 п) двоичных операций.
10.	O(n2 log2 А).
11.	a) O(n log2 п). б) O(log2 п).
12.	O(rsn(log2 т + logn)).
13.	а) Произведение O(n/logn) чисел из O(logn) разрядов каждое состоит О(п/log п)  O(log п) = О(п) разрядов. 6)O(nlogn). в)О(п2).
14.	a) O(-y6ilog2 п). б) O(y/n\ogn).
15.	О(т log п).
16.	Предположим, что п состоит из fc+1 бит. В качестве первого приближения для т = [х/п] возьмем единицу с [fc/2] нулями за ней. Находим знаки разрядов числа т, сдвигаясь от единицы слева направо и поочередно пробуя заменить 0 на 1. Если при этой замене квадрат полученного числа т становится больше п, то в этом разряде оставляем 0.
228
ОТВЕТЫ К УПРАЖНЕНИЯМ
§1.2
1.	б) Простой контрпример: пусть Ь = —а.
2.	16	делителей: 1, 3, 5, 7,	9, 15, 21, 27, 35, 45, 63,	105, 135, 189, 315, 945.
3.	а)	Если а|п,	то пишем	п = ab и полагаем а <-----------------► Ъ.	б) Имея п = ab, где
а	>	Ь, полагаем s =	(а + 6)/2 и	t = (а — 6)/2. Обратно,	имея	п = s2 — t2, положим
а	=	s + t,	Ъ = s - t.	в) 4732 -	4722, 1592 - 1562, 972 - 922,	712 - 642, 572 - 482,
392 - 242, ЗЗ2 - 122, 312 - 42.
4.	б) = 100! = 297 • З48 • 524 • 716  11э • 137  175 • 195 • 234  293  З13  372 • 412  432 • 472  53 • 59 • 61 • 67  71 • 73 • 79 • 83  89  97. в) Формула имеет вид (n — 5р(п))/(р — 1). Чтобы доказать это, запишем п = (/*,-iP*-1+--- + dip + do и заметим, что [п/р;] = dfc-ip*-1 + • + rfj + iP + dj для каждого j. Далее воспользуемся формулой из пункта а).
6.	а) 1 = 11 • 19 - 8 • 26. б) 17 = 1 • 187 - 5 • 34. в) 1 = 205  160 - 39 • 841. г) 13 = 65  2171 - 54  2613.
7.	Для примера сравниваем два способа в случае г):
2613 = 2171 + 442
2613 = 2172 + 442
2171 = 4 • 442 + 403
2171 = 5-442 - 39
442 = 403 + 39
442 = 11  39 + 13
403 = 10-39 + 13
39 = 3  13
39 = 3 • 13
8.	б)
НОД (101000110101, 100001111011)
= НОД (110111010, 100001111011)
= НОД (11011101, 100001111011) = НОД (11011101, 11110011110)
= НОД (11011101,1111001111) = НОД (11011101, 1011110010)
= НОД (11011101, 101111001) = НОД (11011101, ЮОШОО)4^—х
= НОД (11011101,100111) = НОД (10110110, 100111)
= НОД (1011011, 100111) = НОД (110100, 100111)
= НОД (1101, 100111) = НОД (1101, пою)
= НОД (1101, 1101) = 1101.
в) Рассмотреть произведение аЬ и показать, что через каждые два шага произведение двух чисел, для которых вычисляется наибольший общий делитель, уменьшается, по крайней мере, в два раза. Таким образом, потребуется O(log а) шагов. Каждый шаг — это не более чем вычитание, требующее O(loga) двоичных операций (заметим, что ни делений, ни умножений алгоритм не содержит), г) Этот алгоритм не позволяет выразить НОД в виде целочисленной линейной комбинации двух исходных чисел. Однако его можно модифицировать так, что это будет возможным, см. статью G.H. Norton «Extending the binary GCD algorithm» в книге Algebraic Algorithms and Error Correcting Codes. Heidelberg etc.: Springer, 1986, c. 363-372.
ОТВЕТЫ К УПРАЖНЕНИЯМ
229
9.	O(log a log b + log3 6).
10.	а) Остаток уменьшается медленнее всего, когда все частные равны единице. б) Пишем = ВАВ~4, где А = (0“а°,) — диагональная матрица из собственных значений, а столбцы матрицы В являются собственными векторами, т.е. В = в) Так как л/5а >/5Д+2 = а*-1-2 — а'к+2 > ак+2 — 1, то к < (log(l + >/5a))/(log а) — 2. Можно также получить более простую оценку к < (log a)/(log а). Последняя равна 1,44042...  log2 а, в то время как оценка из доказательства предложения 1.2. 1 равна 21og2a.
11.	б) К сумме величин (logr,)(l + log <у, _|_ i) применить неравенства Г{ Ь и П 9i+l “ Вывести, что эта сумма ограничена величиной O((log 6)(log а + log а)).
12.	а) х4 + х2 + 1 = (z2)(z2 4- 1) -f- 1, 1 = l(z4 + х2 + 1) — z2(z2 + 1). б) х4 — 4х3 + 6z2 — 4х + 1 = (z — 3)(z3 — х2 + х — 1) + (2z2 — 2), х3 — х2 + х — 1 = (|z — |)(2z2 — 2) + (2г — 2), 2z2 — 2 = (z + l)(2z — 2), так что НОД равен х — 1; г- 1 = (-^r + l)/+(lz2 -Z + |)ff.
13.	НОД (/,/') = х2 — х — 1, кратные корни — это (1 ± л/5)/2 («золотое сечение» и сопряженное с ним число).
14.	а) 5 + 6г = 2г(3 - 2г) + 1,1 = 1(5 + 6г) - 2г(3	- 2г). б)	8 -	19г	= 2(7	- 11г)	+
( — 6 + Зг), 7 — 11г = ( — 2 + г)( — 6 + Зг) + ( — 2 + г), —6	+ Зг = 3(	—2	+	г),	так	что	НОД
равен -2 + г; -2 + г = (-3 + 2г)(7 - 11г) + (2 - г)(8	- 19г).
15.	а) 122 + 252. б) 542 + 312. в) 1162 + 1592.
§1.3
1.	а) х = 6 + 7п при произвольном целом п. б) Нет решений, в) То же самое, что в а), г) 219 + 256п. д) 36 + 100п. е) 636 + 676п.
2.	0, 1, 4, 9.
3.	3, В.
4.	Разность между п =	+ •  • + 10di + do и суммой цифр d^-i +
  di +do есть сумма слагаемых, кратных числам вида 10J — 1, которые делятся на 9.
5.	Доказать, что это число делится на 2, на 3 и на 5.
6.	Пусть эти две цифры есть х и у. Тогда 72, а следовательно, и 8, и 9 делят сумму 1000г + 60 + у центов. Таким образом, 81(60 + у), а это означает, что у = 4. Далее, 9|(1000z + 64), что сравнимо с х + 1 по модулю 9. Поэтому х = 8. Итак, каждая плитка стоит $ 1,12.
7.	а) Например, предположим, что т = 2ра. Так как m|(z2 — 1) = (z + l)(z —1), то произведение чисел х + 1 и х — 1 должно делиться на ра. Но так как р 3, то р не может делить и z + 1, и г — 1 (которые отличаются всего на два), и значит, ра должно делить одно из этих чисел. Если pa|(z + 1), то это означает, что х = — 1 (mod ра); если pa|(z — 1), то х = 1 (mod р“). Наконец, так как 2|(z2 — 1), то х должно быть нечетным, т.е. х = 1 = — 1 (mod 2). Итак, по свойству 5 для сравнений либо х = 1 (mod 2pa), либо х = —1 (mod 2pa). б) Во-первых, если т 8 есть степень двойки, то легко показать, что х = m/2 + 1 приводит к противоречию с частью а). Затем предположим, что т не является степенью простого числа (или удвоенной степенью простого числа) и что р“ || т. Положим т1 = т/ра. Воспользуемся китайской теоремой об остатках, чтобы найти такое х, которое было бы сравнимо с 1 по модулю р“ и сравнимо с —1 по модулю т1. Показать, что это противоречит пункту а).
8.	Разобьем все числа от 1 до р — 1 на пары взаимно обратных по умножению. На основании упражнения 7а) лишь 1 и —1 совпадают со своими обратными.
230
ОТВЕТЫ К УПРАЖНЕНИЯМ
Таким образом, когда эти р — 1 чисел перемножаются, каждая пара дает в произведении единицу и остаются еще 1 и —1.
9.	Разумеется, 4 обладает нужными свойствами, но не является трехзначным числом. В силу последнего утверждения китайской теоремы об остатках любое другое число, имеющее нужные остатки, должно отличаться от 4 на число, кратное 7-9-11 = 693. Единственное такое трехзначное число — это 4 + 693 = 697.
10.	Можно применить китайскую теорему об остатках к сравнениям х = 1 (mod 11), х = 2 (mod 12), х = 3 (mod 13). Другой способ: можно заметить, что —10 дает нужные остатки, и затем, рассуждая, как в упражнении 9, получить -10 + 11 • 12 • 13 = 1706.
11.	а) 1973. б) 63841. в) 58837.
12.	Частное дает остатки 5, 1, 4 при делении на 9, 10, 11, и, следовательно (по китайской теореме об остатках), имеет вид 851 + 990m. Соответственно, делитель имеет вид 817 + 990п. Так как делитель трехзначный, то п = 0. Так как произведение шестизначное, то и т = 0. Ответ: 851.
13.	Больше всего времени при применении китайской теоремы об остатках занимают: 1) вычисление М; 2) вычисление М{ = М/ггц для каждого из г различных модулей; 3) отыскание обратного для Л/,- по модулю гщ при каждом г; 4) умножение aiMiNi в формуле для х при каждом г; 5) деление полученного х на М для получения наименьшего неотрицательного значения. Для числа двоичных цифр в записи чисел m;, a,-, N{ имеем оценку O(logB), а для числа двоичных цифр в записи чисел М и Л/; имеем оценку O(rlog В). Это дает оценку O(r2 log2 В) для числа двоичных операций при выполнении 1)—2), 4)-5). В 3) необходимо выполнить O(r2 log2 В) двоичных операций для приведения каждого Л/, по модулю соответствующего т, перед вычислением обратных и затем O(rlog3 В) двоичных операций для нахождения всех г обратных по алгоритму Евклида. Это дает в итоге оценку О(г(г + log В) log2 В). Который из двух членов этой оценки (г2 log2 В или г log3 В) является главным, зависит от соотношения величин г и log В (т.е. от числа уравнений и числа двоичных разрядов в модулях).
14.	381 +2 + 23 + 26 = 38 • 2 • 16 • 63 = 79 (mod 103).
15.	Если использовать оценку О(А:2) для числа операций при одном умножении fc-значных двоичных чисел (как уже делалось), то никакого выигрыша в оценке мы не получим. Действительно, самое последнее умножение требует времени O((n log 6)2), что совпадает с оценкой для умножения b на себя п раз. Трудность состоит в том, что, в отличие от вычислений в кольце вычетов, в методе повторного возведения в квадрат мы подходим к концу, оперируя с парами очень больших чисел, что сводит на нет выигрыш от того, что количество умножений значительно меньше. Однако если бы мы воспользовались более рациональным способом умножения двух fc-значных двоичных чисел, например, алгоритмом, требующим лишь О(к log к log log к) двоичных операций, это дало бы выигрыш во времени.
16.	а) Повторное возведение в квадрат требует O(log3 р) двоичных операций, в то время как для алгоритма Евклида может быть доказана оценка O(log2 р). б) Повторное возведение в квадрат, по-прежнему, требует времени O(log3 р), а когда мы выполним первый шаг алгоритма Евклида — деление р на а (что потребует O(logploga) двоичных операций) — оставшаяся часть алгоритма Евклида потребует O(log2 а) двоичных операций. Таким образом, алгоритм Евклида действует быстрее, особенно при очень малых по сравнению с р числах а.
п	90	91	92	93	94	95	96	97	98	99	100
17.
<р(п)	24	72	44	60	46	72	32	96	42	60	40
18.	Не существует такого п, для которого <р(п) является нечетным числом,
ОТВЕТЫ К УПРАЖНЕНИЯМ
231
большим 1; cp(n) = 1 для п = 1 или 2; <р(п) = 2 для п = 3,4,6; <р(п) = 4 для п = 5, 8, 10, 12; tp(n') = 6 для п = 7, 9, 14, 18; ф(п) = 8 для п = 15, 16, 20, 24, 30;	= 10
для п = 11,22; <р(п) = 12 для п = 13,21,26,28,36,42. Чтобы доказать, например, что здесь перечислены все п, для которых ср(п) = 12, сравним все допустимые разложения 12 на множители (в которых разрешается использовать множитель 1, но не 3) с формулой (И ра) = П(р° — р“-1 ) Получим 1  2 • 6, 1-12, 2-6, 12. Первое произведение дает 2-3-7, второе дает 2 • 13, третье дает (3 или 4)-7 и 4  9 и, наконец, четвертое дает 13.
19.	Число п не может быть простым, так как в этом случае <p(n) = п — 1. По предположению п не является квадратом простого числа. Если п не является произведением двух различных простых чисел, то оно должно быть произведением не менее трех простых (не обязательно различных) чисел. Пусть р — наименьший из сомножителей. Тогда р п1/3, и <p(n)	"(1 — р-1)	п(1 — n-1^3) = п — п?13,
что противоречит условию.
20.	Показать, что квадрат любого нечетного числа сравним с 1 по модулю 8, а затем воспользоваться индукцией, как это сделано в первой части доказательства предложения I. 3. 5.
21.	а) Заметим, что 360 кратно функции <р(р“) для каждого р“||т. В соответствии с замечанием перед примером 3 в тексте это означает, что 6647362 = 66472 = 44182609 (mod m). (Здесь мы используем тот факт, что НОД (6647, т) = 1, так как 6647 = 172 - 23.) б) Возведем а в степень 359 по модулю т методом повторного возведения в квадрат. Так как т = (101100111)2, то нам понадобится 8 возведений в квадрат и 5 умножений (целых чисел, имеющих не более 63 двоичных разрядов). Каждая из этих операций сопровождается делением (в худшем случае 126-разрядного целого на 63-разрядное). Таким образом, число двоичных операций не превосходит 13 • 63 • 63 + 13 • 64  63 = 104013.
22.	а) Показать, что если х = j  то х порождает Sd тогда и только тогда, когда НОД (x,d) = 1. Заметим, что j принимает значения 0, 1, ... , d — 1. б) Разобьем множество элементов Z/nZ на подмножества в соответствии с тем, какие множества Sj эти элементы порождают. Согласно п. а) подмножество, порождающее данное 5^, содержит tp(d) элементов.
23.	а) Представим каждый член произведения в виде суммы геометрической прогрессии (1 + ^ + ^7 +	+   ) При перемножении таких скобок получают-
ся все возможные дроби со знаменателями вида P^'Pj2 ...р?г. В силу основной теоремы арифметики каждое натуральное число п имеет единственное разложение такого вида. Следовательно, рассматриваемое произведение является суммой гармонического ряда (£2^=1 который, как известно, расходится, б) Сначала докажите, что х > — ilog(l — х) при х 1/2 (см. график логарифма). Примените это неравенство к х = 1/р и сравните У) - с логарифмом произведения из пункта а), в) Для каждой последовательности простых чисел п, стремящейся к бесконечности, = 1 — — —+ 1, а для каждой последовательности чисел п, делящихся 7*1	7*1	_
на все возрастающее число последовательных простых (например, для nj = Д), имеем = П . (1 - -) —► ПВга „(1 ~ -) = 0 на основании пункта а).
24.	а) Сообщить i-му генерал-лейтенанту р,- и вычет числа N по модулю р,- и воспользоваться китайской теоремой об остатках, б) Выбрать каждое р, большим, чем но значительно меньшим, чем k~y/N.
232
ОТВЕТЫ К УПРАЖНЕНИЯМ
§1.4
3.	Рассуждая так же, как при доказательстве последнего предложения, показать, что bd = ±1 (mod m). Но так как (6d)®/d = —1 (mod тп), то bd = — 1 (mod тп) и a/d нечетно.
4.	Использовать упражнение 3 с а = п и с = (р- 1)/2.
5.	а) 28 + 1 = 257. б) Воспользоваться упражнением 4. с) тп = 97 • 257 • 673.
6.	2 • II2 • 13  4561, 25  5 • 7  13  41 • 73  6481.
7.	24  З2  7 • 13  31 • 601.
8.	З2  41 • 271, З3 • 7  11  13  37, З2 • 11 • 73 • 101  137.
9.	7  23 • 89 • 599479; 72 • 127  337 (этот пример показывает, что для простого р|(bd — 1) в предложении I. 4. 3 число bn — 1 может делиться на р в большей степени, чем bd — 1).
10.	7 31  151, З2 • 7 - 11 -31 • 151 -331, З2 -52 - 7- 11 • 13 -31 - 41 -61 • 151 -331 • 1321.
11.	а) Применить одновременно алгоритм Евклида для нахождения НОД (ат — 1, ап — 1) и НОД (т, п). Заметить, что на каждом шаге остаток в первом применении алгоритма Евклида имеет вид аг — 1, где г — остаток во втором применении алгоритма Евклида. В частности, на первом шаге при делении am — 1 на ап — 1 получается остаток аг — 1, где г — остаток от деления тп на п. б) Согласно части а) и китайской теореме об остатках никакие два числа в промежутке от 0 до JJ(2m‘ — 1) не могут иметь два одинаковых набора остатков. Это произведение больше, чем 2r^2 > 22* > ab. При оценке времени получаем г умножений чисел, имеющих не более I цифр в двоичной записи. Это дает О(г/2) = О(кГ) двоичных операций, что в г раз лучше, чем дает обычное умножение а на Ь, требующее O(fc2) операций.
§11.1
1.
простое р	2
наименьший образующий	1
число образующих	1
3	5	7	11	13	17
2	2	3	2	2	3
1	2	2	4	4	8
на (1 + р)д и показать, что/^₽-1 = если д1 = 1 (mod р°), то сначала
2. а) При др 1 = 1 (mod р2) заменить д 1 4- S1P, гДе S1 и Р взаимно просты. Далее,
показать, что (р —1)|Д т. е. j = (р — 1)Д и, таким образом, (1 + gip')11 = l(modp°). Пользуясь равенством (1 + <7гр)J1 = 14-Д 31Р 4-кратные р2, показать, что Д делится на р“-1. б) Первая часть — см. упражение 20 к §1.3; вторая часть (сводящаяся к доказательству того, что 5J не сравнимо с 1 по модулю 2“, если только 2“-2 не
делит j) аналогична части а).
3. 56.
4. 2 для d = 1: X, X + 1; 1 для d = 2: № 4- X 4- 1; 2 для d = 3: X3 4- X2 4- 1, X3 + X + 1; 3 для d = 4: X4 4- X3 4- 1, X4 4- X 4- 1, X4 4- X3 4- X2 4- X 4- 1; 6 для d = 5: X5 + № + 1, Xs + X2 + 1, X5 + X4 + X3 + X2 4- 1, X5 4- X4 4- X3 4- X 4- 1, Х5 + АГ4 + ,¥2 + АГ+1, Х5 + Х3 + Х2 + Х + 1-, 9 для d = 6: X6 4- X5 4- 1, X64-JC34-1, %6 + X + l, Х6 + АГ5 +АГ4 + x2 + l, АГ6 + АГ5 +АГ4 + АГ + 1, X6 + № + X3 4- X2 4- 1, X6 + Xs + X2 + X + 1, X6 4- X4 4- X3 + X + 1, X6 + X4 4- X2 + X 4- 1.
5. 3 для d = 1: X, X ± 1; 3 для d = 2: X2 4- 1> X2 ± X 4- 1; 8 для d = 3: X3 4- X2 ± (X - 1), X3 - X2 ± (X 4- 1), X3 ± (X2 - 1), X3 -Х± 1; 18 для d = 4; 48 для d = 5; 116 для d = 6.
6- (pf ~Pf/l)/f-
ОТВЕТЫ К УПРАЖНЕНИЯМ
233
7.	а) НОД = 1 = X2 + (X 4- 1)/. б) НОД = X3 + X2 + 1 = f + (X2 + Х)3. в) НОД = 1 = (X-l)f-(X2-X + l)s. г) НОД = Х + 1 = (X-l)f-(X3-X24-l)s. д) НОД = X + 78 = (50Х + 20)f 4- (51Х3 4- 26Х2 4- 27Х 4- 4)д.
8.	Так как НОД (/,/') = X2 4- 1, кратные корни — это ±а2, где а — образующий элемент Fg.
9.	а) Возвести обе части 0 = а2 4- ba 4- с в р-ю степень и, используя равенства Ьр = Ь и ср = с, получить (ар)2 4- Ьар 4- с = 0. б) Два различных корня многочлена равны а и ар. Следовательно, а — это взятая с минусом сумма, а b — произведение этих корней, в) (са + d)p + 1 = (сар 4- d)(ca + d); далее результат получается перемножением элементов в скобках с использованием б), г) (2 4- Зг)5(19 + 1)+1 = (22 + 32)5(2 + Зг) = 14(2 + Зг) = 9 4- 4г
10.	При каждом делении многочленов (сначала / на д, далее Гу на ry + j) сначала нужно находить обратный по модулю р к старшему коэффициенту rj+i (на это требуется O(log3 р) двоичных операций), а затем нужно осуществить O(d2) умножений целых чисел по модулю р, каждое из которых производится за O(log2 р) двоичных операций. Таким образом, на каждое деление уходит O(log3 р + d2 log2 р) двоичных операций, а на весь алгоритм Евклида — O(d)O(log2 p(logp 4-d2)) = O(d log2 p(log p + d2)) двоичных операций. (Это выражение можно упростить, записав его как O(d log3 р), если d растет не быстрее, чем д/log р, или O(d3log2p), если р растет не быстрее, чем f/ .)
И. а) Пусть а — корень X2 + X + 1 =0, т.е. три последовательные степени а — это а, я+1 и 1. б) Пусть а — корень Х34-Х-|-1 = 0; тогда 7 последовательных степеней а — это а, а2, а + 1, а2 4- а, а2 4- а 4- 1, а2 4- 1, 1- в) Пусть а — корень X3 — X — 1 =0; тогда 26 последовательных степеней а — это а,а2,а 4- 1,а2 4-а,а2 4- а 4- 1, а2 — « + 1,—а2 — <2 + 1,—а2 — 1, — а + 1,—а2 4- а, а2 — а — 1,—а2 4-1,-1 и далее те же 13 элементов, в которых все «4-» заменены « —» и наоборот, г) Пусть а — корень X2 — X 4- 2 = 0; тогда 24 последовательные степени а — это а, а — 2, —а — 2, 2а 4- 2, —а 4-1,2, затем те же 6 элементов, умноженные на 2, затем умноженные на —1, затем умноженные на —2, — итого все 24 степени а.
12.	О(/2^). Действительно, для каждой из 0(2-1) степеней а нужно каждое предыдущее выражение в виде многочлена от а умножить на а и, если возникнет , то заменить его в полученном выражении, добавив к оставшимся членам многочлен, выражающий через более низкие степени а; все это составляет O(f) двоичных операций.
13.	а) р = 2 и 2^ - 1 — простое число Мерсенна (см. пример 1 и упражнение 2 к §1.4). б) Ясно, что условия выполняются в случае а), а также когда р = 3 и (3-1 — 1 )/2 — простое число (требуется, как в п. а), чтобы f было простым числом, однако этого недостаточно, как показывает пример f = 5) или когда р = 2р' 4-1 при f = 1 и р1 простом. Впрочем, неизвестно, является ли бесконечным число простых полей, удовлетворяющих условиям пунктов а) или б) (хотя предполагают, что это именно так). Простые р', для которых 2р' 4-1 — такое простое, называются «простыми Жермен» по имени Софи Жермен, которая в 1823 г. доказала, что большая теорема Ферма справедлива, если в показателе — такое простое число.
14.	Выбрать последовательность nj так, чтобы <p(nj)/n;- —► 0 при j —► оо (см. упражнение 23 к §1.3) и р не делило никакое nj, и положить /у равным порядку р по модулю nj, т.е. наименьшему числу, для которого pl> = 1 (mod nj).
15.	Любой многочлен, в котором X1 встречается с ненулевым коэффициентом лишь при p\j.
16.	Свести к случаю j = d, показав, что если crJ (а) = а и сг-1(а) = а, то и o-d(a) = а (см. доказательство предложения 1.4.2). Заметить, что поле Fpa,
xooxol г\ ХПГЛЖНЬНИЯМ
которое есть поле разложения Xpd — X, содержится в F,, так как любой корень этого многочлена также удовлетворяет уравнению Xq — X (чтобы заметить это, нужно //d раз возвести обе части равенства ар = а в степень pd).
17.	Во-первых, доказать, что элемент Ъ' = б(рП-1)/(р принадлежит Fpd, показав, что он неподвижен относительно сг^ (т. е. возведя его в степень pd). Далее убедиться, что он — образующий, так как степени (Ь'У, j’ = 0, 1, ..., pd — 2, все различны. Это следует из того, что первые рп — 1 степеней элемента b различны.
§ П. 2
1.	Множества вычетов: {1} для р — 3, {1,4} для р = 5, {1,2,4} для р = 7, {1,3,4, 9,10,12} для р = 13, {1,2,4,8,9,13,15,16} для р = 17, {1,4,5,6,7,9,11,16,17} для р = 19.
2.	б) Из части а) и предложений II. 2. 2 и II. 2.4 следует, что (^) = 1 = 2(Р-1)/2 (mod р). Это означает, что ((р — 1)/2()-я степень 2 сравнима с —1 по модулю р для некоторого I 2. Так как 2?к = —1 (mod р), можно показать, что НОД ((р — 1)/2г, 2fc) = 2к. Отсюда сразу следует, что р = 1 (mod 2fe + (). в) Единственным простым числом, сравнимым с 1 по модулю 64 и меньшим, чем л/65537, является 193, однако оно не делит 65537.
3.	НОД (84,1330) = 14.
4.	Использовать равенство (-^-) —	и рассмотреть 4 возможных слу-
р = 1, 3, 5, 7 (mod 8).
5-	(ш) = (тЬХг^) - -(^)(¥г) = -(V)(TT) = -(-D(-l) = -1-
6.	а) 14. б) 9. в) 9а.
7.	а3 — а (см. доказательство предложения II. 2. 4); 6, 60, 4080, 24, 210, 336.
8. Примитивный р-й корень £ из единицы в Fq существует, так как q =
1 (mod р). Далее, квадрат числа G = 52j = i(0£J равен (-—-)р (см. лемму в
доказательстве предложения II. 2. 5).
9.	а) (; 6, 45, 3126, 906 (в последнем случае использовать равенство 1093 = (З7 — 1)/2). б) Пусть G = 52; = i(p)2J. Тогда наименьший положи-
тельный квадратный корень из (-у-)р по модулю 2Р — 1 равен д, если р = 5 (mod 8), равен — д, если р = 3 (mod 8), равен р + д, если р = 7 (mod 8), и равен р — л если р = 1 (mod 8).	У
10-	® = (НЦ) =	= (1^т)(1^т)(т11т) = (I)(7)(m = 1 '
- ~(|)(|) = -г б)	= (^) = (^) = -(-1)(|Н) =	=
(107) =	= ( 173 ч = ,51.x = ,61.4 = ,2^.4 =	/_5_) = -(ill = -1
1 173 >	1 173,	61 >	< 61 > ’'SI ' 'ч 51 7	51 >	' 5 !
11.	а) 1. б) 1. в) 1. г) 1. д) 1. е) 1. ж) —1.
12-	а) (^) = {=У~У~) = (-1)<p-1)/2(-1)<3-1Xp-D/4(E) = (£); ЭТо равно 1 тогда и только тогда, когда р = 1 (mod 3). б) (	) = — (2 3~1 ) = — (|) = — 1-
13.	Последняя десятичная цифра должна быть 1 или 9.
14.	Любая степень вычета есть вычет, поэтому никакой невычет не может
встретиться среди этих степеней, а это означает, что вычет не может быть обра
зующим.
15.	а) Так как р — 1 есть степень 2, то порядок всякого элемента д есть степень 2. Если д — невычет, то —1 = (|) = д<р-1V2 (mod р). Поэтому порядок д не может быть меньше р — 1. б) Если к > 1 и р = 22* + 1, то р = 2 (mod 5) (так как степень, в которую возводится 2, делится на 4). Поэтому (^) = (|-) = (|) = —1 и б) следует из а), в) Аналогично б): так как 2 возводится в степень, не делящуюся
ОТВЕТЫ К УПРАЖНЕНИЯМ
235
на 3, то р — 1 = 2 или 4 (mod 7), следовательно, р = 3 или 5 (mod 7). Поэтому (i) = (|) = -l, ив) следует из а).
16.	а) Имеем: (а 4- 6г)р + 1 = (ар + 6ргр)(а 4- 6г) = (а — 6г)(а 4- 6i) = а2 4-62. Утверждение. Если (а 4- 6г)”71 g Fp, то (р 4- 1)|т. Чтобы доказать это утверждение, положим d = НОД (т,р 4- 1). Используя те же аргументы, что и в доказательстве предложения 1.4. 2, видим, что (а + бг)^ € Fp. Однако, так как р4-1 есть степень 2, то в случае d < р 4- 1 мы находим, что (а + 6г)(р+1Д2 — элемент Fp, квадрат которого есть а2 4- 62. Но а2 4- 62 есть невычет (см. упражнение 14), поэтому <1 = р + 1и(р + 1)|т. Пусть теперь тг таково, что (а + 6г)п = 1. Тогда, по доказанному утверждению, п = (р 4- 1)п'. Следовательно, (a2 +62)n = 1; так как а2 + 62 — образующий F*, то (р — 1)|п'. б) Достаточно показать, что 17 и 13 — образующие F31.
17.	В обоих случаях получаем O(log3p). Заметим, однако, что предложение II. 2. 2 применимо к ( —) лишь тогда, когда п — р есть простое число. В то же время метод из части а) применим при любом нечетном натуральном п. Заметим также, что время работы при а) может быть сокращено до O(log2 р) методом, использованным в упражнении 11 к §1.2.
18.	а) Показать, что число решений квадратичного сравнения равно числу решений сравнения г2 = D (mod р). Имеется одно решение, если D = 0, ни одного, если D — невычет, и 2, если D — вычет, б) 0, 0, 2, 1, 2. в) 2, 2, 1, 0, 0.
19.	п = 3, р — 1 = 25  65, г = ЗО233 = 203 (mod р) (мы вычисляем ЗО233 методом повторного возведения в квадрат, последовательно возводя в квадрат 5 раз и затем умножая результат на 302). Также методом повторного возведения в квадрат вычисляем 6 = nss = 888 (mod р). Наконец, берем j = 22, т.е. ^302 (mod р) = 64г = 1292 (mod р).
20.	а) Использовать индукцию по а. Чтобы перейти от а — 1 к а, предположить, что х — такое (а — 1)-значное число в системе счисления с основанием р, что Е2 = a {mod р“-1). Чтобы определить последнюю цифру za-i £ {0,1,..., р — 1} искомого решения х = Е 4- ха-1ра~г, записываем Е2 = а 4- 6р“-1 для некоторого целого числа 6 и затем действуем по модулю р“: г2 = (Е 4- хQ_ip“-1)2 = х2 + 2xQxa-ipa~l — а 4- р“-1 (6 4- 2го^а-1)- Таким образом, достаточно выбрать za-i = —(2з?о)-16 (mod р) (заметим, что 2з?о обратимо по модулю р, так как р нечетно, а х2 = a (mod р), где а взаимно просто с р). б) Использовать китайскую теорему об остатках, чтобы найти х, который сравним по каждому модулю р“ с квадратным корнем, найденным в части а).
21.	а) Если бы (*) было справедливо для 61 и 6162, то, поделив одно сравнение на другое (это возможно, так как функции как справа, так и слева мультипликативны), мы получим, что ( + ) выполняется также для 62. С другой стороны, если бы (+) не выполнялось для некоторого 6, то множество элементов вида 6с, состоящее из произведений 6 на все элементы с, для которых (+) выполняется, состояло бы из элементов, не удовлетворяющих (*). б) Взять, например, 6 = 1 4»п/р, где р2\п. Тогда (^) = 1, но 6; = 1, только если p\j. Однако для j = (п — 1)/2 это не так. в) Покажем, что (^) = —1, однако 6^П-1Д2 = 1 (mod nip) и, следовательно, сравнение 6^n-1^2 = —1 (mod n/р) (и, тем более, такое сравнение по модулю п) не может иметь места. Далее, пусть aj — любой невычет по модулю р и aj = 1. Теперь примените китайскую теорему об остатках, чтобы получить решение 6 для пары сравнений х = ai (mod р), х = аз (mod п/р).
22.	62 = (t 4- a)p(t 4- a) = (t 4- ap)(t 4- a) = (t — a)(t 4- a) = t2 — a2 = a, где третье из равенств следует из того, что a = д//2 — а сопряжено с ар = —y/t2 — а;
236
ОТВЕТЫ К УПРАЖНЕНИЯМ
заметим, что Ь g Fp, так как по условию а имеет два квадратных корня в Fp, и потому его квадратные корни в Fpi на самом деле лежат в Fp.
23.	Пусть b — наименьший положительный вычет п(р-1Д4 по модулю р. Тогда b — квадратный корень из —1 по модулю р, т. е. р|(62 + 1). Далее вычислить с + dt' = НОД (р, Ь + 1) (см. упражнение 14 к § I. 2).
§111.1
1.	«We sewed a smile on a horse’s ass, and a year later it was elected President.»
2.	Вывести равенство b = 19 из того, что буква «X» — самая частая в шифртексте. Сообщение имеет вид: WEWERELUCKYBECAUSEOFTENTHEFREQ UENCYMETHODNEEDSLONGERCIPHERTEXT.
3.	THRPXDH.
4.	SUCCESSATLAST.
5.	AGENT 006 IS DEAD 007.
6.	Есть 9 возможных вариантов для а' и Ь': а' = 1,4,7,10,13,16,19,22,25 и Ь1 = 21,6,18,3,15,0,12,24,9 соответственно. Ничего не остается, как просто перепробовать все эти 9 вариантов. Получаем следующие варианты открытого текста:	«I DY IB RIF», «I PS IH RIX»,	«I AM	IN RIO», «I	MG IT RIF», «I
YA IZ	RIX», «I JV IE	RIO», «I VP IK RIF», «I	GJ IQ RIX»,	«I SD IW RIO».
Осмысленный текст дает только третий вариант: Р = 7С + 18 (mod 27).
7.	a) N. б) Nip(N)	= №np|jv(l - ^).	в) 312,	486, 812, 240.
8.	а) Если а 1,	то сравнение (а —	1)Р =	—Ь (mod N) имеет ровно одно
решение в поле Fjv = 'Z/N71. б) Р = 0 всегда фиксированно. При четном N (тогда а нечетно) сравнение (а — 1)Р = 0 (mod А) имеет, по крайней мере, два решения: Р = 0 и Р = А/2. в) N четно, b нечетно. Более общий пример: b не делится на НОД (а - 1, А).
9.	А2¥>(А2) = А4Пр|а(1 - ^); 210912; 354294; 682892; 216000.
10.	а) а' = 435, Ь' = 64; «FOUNDTHEGOLD». б) а = 115, Ь = 76; «AWOFUWAE».
11.	а) Из первых двух сравнений ключ найти невозможно, но, взяв разность первого и третьего сравнений, получим 139а' = 247 (mod 900), что даета' = 73 и Ь' = 768. Сообщение: «ARE YOU JOKING?», б) а = 37, 6 = 384; «FWU ORI DCCUVGA».
12.	«СССР».
13.	Сравнение Р = 37Р + 384 (mod 900) влечет за собой ЗР = 43 (mod 75); таких биграмм нет.
14.	а) Композиция I = Р + 6i (mod А) и С = I + 6г (mod А) — это С = Р + b (mod А) с b — bi + Ь?. б) Композиция будет линейным преобразованием с а = аг • аг- в) Композиция будет аффинным преобразованием с а = аг • аг и b = аг  61 + 6г.
15.	Р = 642С + 187 (mod 853); «DUMB IDEA».
16.	Сначала найти, что I = 201С + 250 (mod 881), а потом — что Р = 331/ + 257 (mod 757); «NO RETREAT».
ПП.2
1.	При шифровании использовано ключевое слово «SPY». Открытый текст (здесь для удобства вставлены пробелы и знаки пунктуации): «I had asked that а cable from Washington to New Delhi summarizing the results of the aid consortium be repeated to me through the Toronto Consulate. It arrived in code; no facilities
ОТВЕТЫ К УПРАЖНЕНИЯМ
237
existed for decoding. They brought it to me at the airport — a mass of numbers. I asked if they assumed I could read it. They said no. I asked how they managed. They said when something arrived in code, they phoned Washington and had the original message read to them.» (Джон Кеннет Гэлбрайт «Дневник посла»; цитируется по работе Mellen G. Е. Cryptology, computers and common sense. — In: Computers and Security. Vol. III).
, /3	24	/19	104	, /11 114	/ 820	0 4	/ 127 303\
2.	a) ). б) I ). в)	). r)	). д) I	).
4	1 /	t 23	16/	424	1 /	\ 0	801 /	V 546 353/
3.	a) . б) Решений нет (умножение второго сравнения на 2 и вычитание результата из первого дает бу = 8 (mod 9), что невозможно, так как влечет за собой 3|8). в) (®), (3), (°). г) (“),©,©.
4.	а) (2^)• б) (°). в) Любой вектор с у = I, т.е. (9), (J), Q и т. д. г) Любой вектор вида (15^_п). д) Решений нет.
, ,4	/6264 Ч /Ох •, г0\ /101\ / 202 4 /303ч /4044 /5054 /6064
5.	а) (759). б) (233Д в) (0). г) (0), (505), (1010), (404/’ 4909/’ (зОЗ/’ 4808/’ 4.202/’ 4707/’ 401/’ 4 606 /' д/ Сложить вектор (800) с любым из 11 векторов п. г) и привести по модулю 1111.
6.	Воспользоваться методом математической индукции: сначала проверить, что утверждение верно при п = 1,2,..., Ь, а затем показать, что если оно верно при п, то оно верно при п + Ь. А именно, убедиться в том, что
fn+b+1 fn + b
fn + b fn + b—I
где с £ (Z/aZ)’, и воспользоваться предположением индукции. (Можно показать, что для любого целого а найдется такое Ь, что a\fn О 6|п, и что если а = ра при простом р 5, то b делит pQ-1(p2 — 1); доказательство использует некоторые сведения из алгебраической теории чисел для квадратичного расширения поля вещественных чисел, порожденного отношением «золотого сечения» (1 + у/б)/2; заметим, что это число и сопряженное с ним число (1 — х^5)/2 являются собственными значениями матрицы из определения чисел Фибоначчи.)
7.	А-1 = ( 23 7 Y «SENATORTOOK.»
X 18 5 /
8.	Д-1 = f22 16 Y «MEET AT NOON.» X21 17/
9.	A-1 = ( 22 20 Y «WHY NO GO? MARIA»; A = (3 ?Y «JMLD W \ 28	8 /	4 4 1 /
EFWJV».
10.	«СЛАВА КПСС».
11.	Композиция криптосистем имеет матрицу шифрования А?А1. /18 28 \
12.	a) «?CVK». б) Применить матрицу	) к вектору шифртекста, дей-
/15 154
ствуя в кольце вычетов по модулю 29, а к результату применить матрицу
238
ОТВЕТЫ К УПРАЖНЕНИЯМ
действуя в кольце вычетов по модулю 26; «STOP».
13.	В силу предложения Ш. 2.1 (а именно, если нарушается Ь), то нарушается и с)) существует ненулевой вектор, переводимый матрицей Ав (°). Такую биграмму-вектор можно прибавить к любой биграмме-вектору открытого текста без изменения соответствующего шифртекста.
/18 6 И 10 29 14 16 11 14 10 11 21Х
14.	Шифртекст имеет вид	), а по-
Х26 13 8	3 10 25 11	8	12 20 27 24/
/	Ч	/10 17 0 \
следние три столбца (10-й, 11-й и 12-й) открытого текста имеют вид (	).
\ 0 И 27/
Определитель матрицы, образованной 10-м и 11-м столбцами открытого текста, равен 20 (mod 30), что не имеет обратного по модулю 30, но имеет обратное по модулю 3. Определитель матрицы, образованной 11-м и 12-м столбцами открытого текста, равен 9 (mod 30) и не обратим по модулю 30, но обратим по модулю 10. Производя в первом случае операции по модулю 3, получаем /10 17\ /10 11Х-1	/1 2\ /1 2\-1	/1 0Х
А 1 (mod 3) = (	) • (	)	= (	) • (	)	= (	). Аналогично,
'0 Ц/ Х 20 27 /	'0 2/ '2 О'	И 1/
-1	/ 4 9 \
во втором случае, производя операции по модулю 10, получаем А = (	). По
X 5 8 /
китайской теореме об остатках имеется единственная матрица A-1 (mod 30), удо-
-1	/ 4	9 X
влетворяющая этим двум сравнениям: А 1 = (	). Открытый текст «GIVE
X 25 28 /
THE PLANS ТО KARLA.».
/ 10 22 26	0	10 1	5	1 7 \
15. Шифртекст имеет вид (	), а первые три столб-
Х 21 27 19 28 9 27 21 26 /
/ 2	8 0х
ца открытого текста имеют вид (	). При использовании равенства
' 29 29 29 /
А-1 = РС~Х учесть, что наибольший общий делитель определителя матрицы из первых двух столбцов шифртекста и 30 равен 6. Лучше использовать 1-й и 3-й /10 26 \
столбцы: det	I = 4 и НОД (4, 30) = 2. Взяв эту матрицу в качестве С и опе-
X 21 19 /
(2 2 \
)-J-15A1, где Ai G A/2(Z/2Z).
8 4/
/10 22 26\	/2	8 Ох	__,
Воспользовавшись тем, что А 1 I	) —	), и тем, HTO'det A, не-
' 21 27 19 /	' 29 29 29 /	\
-1	/ 17	2 X	-1	/ 17	2 \ т>	:
четен, показать, что либо А 1 = (	), либо А 1 = I ). В первом вари-
х 8 19/	X 23 19 /
анте получаем открытый текст «С.1.А. WILLLHTLA», а во втором — открытый текст «С.1.А. WILL HELP».
16.	Использовать китайскую теорему об остатках.
17-	(р2 - 1)(Р2 - р)-
18.	Определитель взаимно прост с ра в том и только том случае, когда он взаимно прост с р; р4“-3(р2 — 1)(р — 1).
19-	лг4 Пр|N(1 - ^К1 “ 7^1'’ 157248’ 682080> 138240.
20.	ПрИ(1 - Lt1 -	'(1 “ И»’
21.	№П iv(l - -)(1 - Т-); 106 299 648; 573629 280; 124416000.
11р |Л '	р >'	р * ' ’	’	’
22.	а) (р2 - 1)(р2 - р). б) р2 - р.
/21 27х х /1ч к	,
23.	а) Ао = (	. б) (.). в) Шесть матриц (ср. с ответом к упражнению
'	\ 1 Q 07 J 'I'
ОТВЕТЫ К УПРАЖНЕНИЯМ
239
226)	при р = 3): А = Q J), где (“) = Q Q, Q, (*), (”),(“)•
24.	а) НОД (det (А — /), А) = 1, где det (А — I) = (а — l)(d — 1) — 6с (применить утверждение об эквивалентности условий а) и с) в предложении III. 2. 1 с заменой / а — 1	b \
А на А — I = I	)). б) Пусть Fn — поле Z/AZ. Биграммы образуют дву-
X с d—1'
мерное векторное пространство, а фиксированные биграммы — подпространство в нем. Любое подпространство, содержащее более одного вектора, либо одномерно (и содержит N векторов), либо содержит все биграммы (тогда А = /).
25.	а) Р = А'С + В', А' = f 14 781 'j, В' = О; «ШТ ARMY BASE! Х 821 206 /	£
/103 30 \	1 ч
HEADQUARTERS», б) С = АР+В, А = (	), В = (“?*); «INJUFYKTEGOUL
\ io 1 )
IBIVFEXU1JHALGQGJ?».
26.	298(292 - 1)(292 - 29)=341 208 073 352 438 880.
27.	91 617 661 629 000 000.
(18 21 19ч.
13 18 з ); «SENDROSESANDCAVIARJAMESBOND».
3	19 11 '
§iv.l
1.	= m(m — 1)/2 для классической криптосистемы и т для системы с
открытым ключом. При т = 1000 это дает 499500 против 1000.
2.	Один из возможных способов таков. Инвесторы и брокеры используют систему с? - С. Пользователь А посылает сообщение пользователю В, предварительно преобразуя каждый элемент сообщения Р в fBfA 1(Р). Каждое сообщение включает в себя свой идентификационный номер. Пользователь В должен сразу же уведомить о получении сообщения с указанием идентификационного номера сообщения, полученного от А. При этом каждый элемент Р уведомляющего сообщения перед отправлением преобразуется в fAfB1(P') (аналогично двойному шифрованию, использованному А при посылке исходного сообщения). Если А не получил уведомление от В, то он посылает свое сообщение повторно, и так до тех пор, пока не получит ответ. Потом, когда из-за потери капиталов или по другим причинам возникнет спор о том, кто именно и какое послал сообщение, брокер сможет доказать, что сообщение было послано А, ибо никто, кроме А (и суда), не может создать сообщение, читаемое с помощью преобразования fAfB‘  Аналогично, А сможет доказать, что сообщение с данным идентификационным номером было принято пользователем В (так как иикто другой не мог бы послать уведомительное сообщение) и от В можно потребовать предоставить полученное сообщение суду.
3.	В данном случае подойдет криптосистема с открытым ключом, использующая случайные целые числа (удовлетворяющие, возможно, некоторым условиям) для построения ключей шифрования и дешифрования при помощи какого-нибудь алгоритма. Компьютер программируется на генерацию случайных целых чисел, которые используются для получения пары ключей К = (Ke,Kd)- Компьютер передает К d (но не Кд) во внешний мир и сохраняет Кв (но не К и) У себя. Поэтому любой может читать его сообщения, но никто не сможет создать сообщение, дешифруемое с помощью ключа Кр. (Эта ситуация обратна по отношению к обычной криптографии с открытым ключом. Там любой может послать сообщение, но только пользователь может прочитать его.) Для совместно работающих ученых вполне возможно запрограммировать компьютер так, чтобы никто не мог
240
ОТВЕТЫ К УПРАЖНЕНИЯМ
ни предсказать генерируемые случайные числа, ни продублировать его работу на своем собственном компьютере. (Отметим глубокий реализм этого примера, который предполагает, что обе страны абсолютно не доверяют друг другу, но в то же время полностью доверяют компьютерам.)
4.	Бьерн выбирает случайно элемент р £ Р, вычисляет с = /(р) и посылает число с Анюте. Анюта вычисляет два прообраза pi и pj и посылает один из них, скажем, pi, Бьерну. Если р; р, то Бьерн может назвать оба прообраза Р1 и р2 = р. В этом случае считается, что он выигрывает. В противном случае выигрывает Анюта. Если Анюта выиграла, то она должна предоставить второй прообраз, чтобы Бьерн мог проверить равенство /(рг) = с и удостовериться, что Анюта не смошенничала, выбрав неправильный ключ, для которого с имеет только один прообраз. (Анюте невыгодно выбирать ключ, при котором у каждого с имеется более двух прообразов, так как это уменьшает ее шансы послать Бьерну тот прообраз, который он уже знает.)
§IV. 2
1.	а) ВН A 2AUCAJEAR0. б) 2047 = 23-89 (см. пример 1 в §1.4),	= 411.
в) так как ip(23) и (£>(89) имеют небольшое наименьшее общее кратное 88, то любой обратный к 179 по модулю 88 (например, 59) будет действовать как </д.
2.	Число 72.4 является произведением простого числа Мерсенна 8191 и простого числа Ферма 65537. Это чрезвычайно плохой выбор. Имеем = 201934721, «DUMPTHESTOCK».
3.	a) STOP PAYMENT, б) (1) 6043; (2) п = 113 • 191.
4.	С третьей попытки (1 = 152843, 152844, 152845) находим t2 — п = 8042, тогда р = 152845 + 804 = 153649, q = 152845 - 804 = 152041.
5.	Чтобы показать невозможность вычисления ассоциированного элемента в Р (т. е. элемента, имеющего тот же самый образ, что и данный элемент), предположим, что некто, знающий лишь Ке (т.е. число п, но не его разложение) получил вторую пару ±з?2 с тем же квадратом по модулю п, что и ±zi- Показать, что тогда НОД (zi Ттг, п) есть либо р, либо q. Другими словами, отыскание одной лишь пары ассоциированных элементов в (Z/tiZ)*/ ± 1 равносильно разложению п на множители.
6.	Достаточно показать, что ade = a (mod р) для любого целого а_ик аж до го простого делителя р числа тг. Это очевидно, если р|а. В других случаях воспользоваться малой теоремой Ферма (предложение 1.3.2).
7.	Если m/2 = (р — 1)/2 (mod р — 1), то ат/2 = (-), что в половине случаев равно +1, а в другой половине случаев равно —1. В случае (2) при помощи китайской теоремы об остатках показать, что событие, состоящее в том, что элемент в (Z/nZ)* является вычетом по модулю р, и событие, состоящее в том, что он является вычетом по модулю q, не зависят друг от друга. Таким образом, ситуация случая (2) подобна независимому бросанию двух монет.
§IV.3
1.	а) 24, 30, 11, 13. б) 1,а2 + а, а, а + 1.
2.	1) Чтобы оправдать переход к сравнению 2х а = 1, заметим, что если х < <р(3“) является решением 2ха = 1 (mod 3“), то <р(3“) — х является решением исходного сравнения. Если а = 2 (mod 3), то решаем 2х(2а) = 1 (mod 3“), где 2а = 1 (mod 3). Тогда х -|- 1 является решением исходного сравнения. Если а = 1 (mod 3), то решение х должно быть четным, так как 2нечетн = 2 (mod 3).
3)	Для доказательства того, что (*); выполняется при z; -2 = (1 — a.j-1 )/3J-1,
ОТВЕТЫ К УПРАЖНЕНИЯМ
241
вычислить левую часть (*)у по модулю 3J. Она равна aj-ig*’^ = (1 — 3J. Далее посредством биномиального разложения показать, что (1 4- 3)3J xi-2 = 1 + 3J-1Zj_2 (mod 3J). Таким образом, левая часть в (*)у сравнима с (l-^З2^1)), т.е. с 1 по модулю 3JНаконец, чтобы оценить число двоичных операций, заметить, что при выполнении шага 3) каждый раз производится по паре умножений и делений целых чисел по О(о) бит, т. е. на каждом шаге производится О(а2) двоичных операций. Таким образом, вся процедура требует О(о3) двоичных операций.
3.	а) Чтобы упростить вычисление (дь)а в F312, воспользоваться тем, что (с 4- с!г)32 = с2 + d2. Ответ: А 4- Bi = 26 4- 28г. б) 20 4- 13г. в)Р = 6С+18 (mod 31). г) YOU’RE JOKING!
4.	а) Ке = 1951280, наименьший неотрицательный вычет этого числа по модулю 264 равен 7 • 263 4- 0  262 + 13 • 26 + 6; однако к нему надо прибавить
/7 ох	/15 о \
единицу, чтобы получить обратимую матрицу шифрования	I; б) I ),
х 13 1'	х 13 is/
DONOTPAY.
5.	Преобразования /4 должны коммутировать, т.е. /а/в = fefA Для всех пар пользователей А и В. Нужно использовать их вместе с хорошей схемой подписи (как указано в условии), и не должно существовать практической возможности определить ключ для /д по паре (Р,/д(Р)). Например, преобразования сдвига /а(.Р) = Р + Ь или линейное /а(.Р) = аР удовлетворяют первому условию, но не удовлетворяют второму, так как по паре (Р, Р 4- Ь) (или (Р, аР)) легко находится b (или а). Пример в тексте удовлетворяет этим условиям, так как по нашим предположениям задача дискретного логарифмирования не может быть решена за разумное время.
6.	Р = 6229 =«GO!».
7.	а) Сначала заменить г на р - 1 - г и свести задачу к эквивалентному сравнению дх а = 1 (mod р). Положить I = 2к иг = ro4-2ri4----4-2,_1r(_i. Пусть gj = д2’ (mod р) и ay = ja;o + 2zi4 I2'’ xi-^a (mod p) (в качестве ао берется а). На у-м шаге вычислить а2*	= ±1 и положить zy_i = 0 при 4-1 и
Xj-1 = 1 при —1; вычислить также gj = д2_х и aj =	1 . При j = I работа
заканчивается, б) O(log4 р). в) к = 7912.
8.	THEYREFUSEOURTERMS.
9.	Чтобы найти г, Алиса сводит сравнение gs = уг гх = даг + 1:х к сравнению S = аг + кх (mod р — 1), которое имеет решение х = k-1 (S — аг) (mod р — 1). Боб знает р, д и у = у а и может проверить, что gs = yr rx (mod р), так как он получил пару (г, х) вместе с S. Наконец, любой, кто умеет решать задачу дискретного логарифмирования, может определить а по д и у и подделать подпись, найдя х.
10.	107.
11.	а) 9/128 = 7,03%, 160/1023 = 15,64%. б) 70/2187 = 3,20%, 1805/29524 = 6,11% (см. следствие из предложения II. 1.8).
12.	а) Число нормированных многочленов равно (pn+1 — 1)/(р — 1) и рп. Числом произведений степени ниже п можно пренебречь. Число nj неприводимых нормированных многочленов степени f равно у(р^ — d\f <^nd) ~ Число произведений степени п равно тогда следующей сумме по всем разбиениям числа п = 227=1 idd (-ld °):
Е/П1 4- г’1 — 1\ /пт 4- im ~~ 1\ ~ п	1
\ И / х im '	?	2*2 3*з • • • m'm ii !г2! • • • im!
242
ОТВЕТЫ К УПРАЖНЕНИЯМ
Таким образом, / m \ -1 p(n, т) =	( Л d'd idl j
Это выражение, очевидно, положительно. Чтобы проверить оценку Р(п, тп) < 1, заметим, что имеется приблизительно рп/п нормированных неприводимых многочленов степени п, поэтому вероятность того, что нормированный многочлен не разлагается в произведение нужного вида, не меньше 1/п. б) J21 + 2;=n	(2Ji'.j!)-1.
в) Р(3, 2) = 2/3, Р(4, 2) = 5/12, Р(5, 2) = 13/60, Р(6, 2) = 19/180, Р(7^ 2) = 29/630.
SIV.4
1.	а) Да, 1. б) Да, 0. в) Нет, 2. г) Нет, 0. д) Да, 1. е) Нет, 1.
2.	а) Использовать индукцию по к. б) Для доказательства второй части взять Vj > 1 +	+  • • + VQ И ПОЛОЖИТЬ V =11, -1.
3.	Использовать индукцию.
4.	a) INTERCEPTCONVOY, б) 89, 3, 25, 11, 41, 60, 65.
5.	FORMULA STOLEN!
6.	BRIBE HIM!
§	IV. 5
1.	Вероятность успешного Т-кратного обмана равна 2~г и при Т —► оо стремится к 0.
2.	а) Числа е и е + х по модулю N, которые Вивалес получает на шагах 2 и 3 процедуры, принадлежат диапазону от 0 до N — 1. При большом числе испытаний Вивалес получит довольно хорошее представление о величине N. б) Положить N1 очень большим целым, кратным N, и заменить N на N1 в описании шагов 1 и 3.
3.	Величины, получаемые Вивалесом на шаге 3, представляют собой верхние оценки для х. Величины, которые на шаге 3 посылает Клайд, не ограничены снизу, в отличие от величин х + е, посылаемых Пикарой.
4.	Открытым ключом Пикары должно быть у\ подписание документа состоит в том, что Пикара убеждает Вивалеса, что ей известно значение дискретного логарифма этого числа.
5.	Знание разложения на простые множители позволяет извлекать квадратный корень, используя метод, приведенный в конце §11.2, вместе с китайской теоремой об остатках (см. также упражнение 5 к §IV.2). Обратно, допустим, что нам известен алгоритм извлечения квадратного корня. Тогда выберем случайное чи-9 ело х и применим этот алгоритм к наименьшему неотрицательному вычету г по модулю п. В результате получим такое х', что г'2 = г2 (mod п). С вероятностью 0,5 оказывается, что х' ±z (mod п). В этом случае сразу получаем нетривиальный делитель как НОД (х' + х, п). Повторив процедуру Т раз, с вероятностью 1 — 2-Г получим искомое разложение.
6.	Да. Предположим, что некто Пикараг, играющая роль Пикары, перехватила сообщение	, ai, а2, посланное Пикарой Вивалесу, и с помощью этого
хочет обмануть Вивалеса, внушив ему, что она сама знает разложение числа п (или раскрашивание в три краски, или дискретный логарифм числа и т. п.). Представим себе теперь, что Вивалес не удовлетворяется получением от Пикарыг точным повторением четверки, посланной Пикарой. Не зная ни секретных случайных чисел У1,У2 Пикары, ни ее сообщений тцтг, ни дискретного логарифма хотя бы одного из чисел /Д и Дг, Пикараг не сможет построить другую четверку, которая создала бы у Вивалеса впечатление, что она знает разложение.
ОТВЕТЫ К УПРАЖНЕНИЯМ
243
7.	Пикара выбирает случайно 0 х' < N и посылает Вивалесу у' = Ьх . Два сообщения для скрытой передачи — это mi = х’ и m2 = х + х' (mod TV). Вивалес проверяет выполнение условий либо Ьх = у', либо Ьх+х = уу'. Если процедура повторяется Т раз, то Пикаре может повезти лишь в одном из 2Т случаев (т.е. Пикаре удастся убедить Вивалеса в том, что она знает дискретный логарифм у, когда на самом деле не знает его).
8.	Вивалес довольно легко может заставить Пикару выдать разложение числа п следующим образом. Он выбирает случайно целые числа z до тех пор, пока не найдет z, символ Якоби которого по модулю п равен —1. Тогда он посылает Пикаре у = z2 (mod п). Пикара отвечает величиной г2 квадратного корня из у (mod п), отличного от ±z. Теперь Вивалес может найти нетривиальный делитель числа п, а именно, НОД (х2 -|- z, 72).
9.	Доказательство отсутствия разглашения при передаче, использующее введение «имитатора» Клайда, здесь не работает. Другая проблема состоит в том, что Пикара должна быть уверена, что каждое р, получено из Центра, а не от Вивалеса, выдающего себя за Центр.
§V	.l
1.	а) 4, 11. б) 8, 13. в) См. часть г), г) Показать, что п — 1 = р— 1 (mod 2р—2); таким образом, 4П-1 = 1 (mod р) и 4n-1 = 4(2р-1-1)/2 = (_L__) (mod 2р — 1). Тогда Ьп~'1 = 1 (mod р(2р — 1)) равносильно (^“р) = !•
2.	а) Использовать сравнение п = п'р = п'(р — 1 + 1) = п‘ (mod р — 1). б) Использовать п. а) с п’ = 3, чтобы заключить, что р должно быть делителем 22 — 1,52 — 1, 72 — 1. в) р должно быть делителем 24 — 1, 54 — 1, 74 — 1. г) Согласно п. б) любое меньшее п должно быть произведением двух простых чисел, больших 5. Затем проверить 49 и 77.
3.	Поделить сравнение (1) с п = р2 на сравнение bp2~p = 1 (mod р2), которое всегда выполняется согласно теореме Эйлера (предложение 1.3.5).
4.	. а) 217. б) 341.
5.	а) Предположим сначала, что п — псевдопростое по основанию Ъ. Так как п — 1 = pq — 1 = д — 1 (mod р — 1), то 4’-1 = 1 (mod р). Однако по малой теореме Ферма всегда 4р-1 = 1 (mod р). Так как d представляется как целочисленная линейная комбинация р — 1 и q — 1, то bd = 1 (mod р). Меняя ролями р и q, получаем, что bd = 1 (mod q), откуда следует, что bd = 1 (mod п). Обратное утверждение доказывается аналогично (фактически —легче). В (Z/nZ)* имеется d2 оснований, б) Четыре: ±1, ±(4р + 1). в) d2/ip(341) = 100/300 = 1/3.
7.	а) См. п. б), б) Имеем N — 1 = Ь(Ъп~1 — 1)/(Ь — 1). Так как п есть псевдопростое по основанию Ъ, числитель делится на п; знаменатель взаимно прост с п, поэтому n|(7V — 1). Так как bn = 1 (mod Лг) (а именно, (4 — 1 )Л' = bn — 1), имеем bN~l = 1 (mod TV). Нужно еще убедиться, что N составное и нечетное. То, что N составное, следует из того, что составным по предположению является п (см. следствие предложения 1.4.1). Разложение N = 4n-14-bn-24-----|-4 + l показывает, что W нечетно (4 при этом может быть как четным, так и нечетным), в) Начиная соответственно с 341, 91, 217, использовать п. б) для построения возрастающей последовательности псевдопростых. Заметить, что условие НОД (4 — 1, п) = 1 всегда выполнено при 4 = 2,3,5. г) Число 15 — псевдопростое по основанию 4, однако W = (415 — 1)/3 таковым не является. Чтобы убедиться в этом, заметьте, что 4 имеет в (Z/WZ)* порядок 15, однако TV — 1 = 4(414 — 1)/3 не делится на 3, не говоря уже о 15.
244
ОТВЕТЫ К УПРАЖНЕНИЯМ
8.	а) п = ()(Y-bi' )• б) Заметьте, что п нечетно (см. указание к 7 6)), следовательно, 2|(тг — 1). Далее, так как (п — 1)(Ь2 — 1) = 62(62(р-1) — 1) = О (mod р) и р не делит (6 + 1)(6 — 1) = Ь2 — 1, то р|(п — 1). в) Так как п — нечетное составное число, b2p = 1 (mod п) и 2p|(n — 1), то п — псевдопростое по основанию Ь. Так как существует бесконечно много простых чисел, больших b + 1, то можно получить бесконечно много псевдопростых чисел по основанию Ь.
9.	а) З2046 = 1013 (mod 2047), поэтому (1) не выполняется при 6 = 3. б) Каждое такое составное число будет псевдопростым по основанию 2. Действительно, пусть п = 22 +1 есть число Ферма. Тогда 22	= — 1 (mod п). Поэто-
му 2П-1 = 1 (mod тг) (в этом можно убедиться повторным возведением в квадрат). Для п = 2Р — 1 имеем п — 1 = 2(2р-1 — 1) = 0 (mod р), и поэтому из 2Р = n + 1 = 1 (mod тг) следует, что 2П-1 = 1 (mod тг). Тест (2) при Ь = 2 также не будет работать, так как обе части будут равны 1, даже если п — составное. Тест (3) при 6 = 2 также не работает для числа Ферма, поскольку 22 = —1 (mod тг); для числа Мерсенна это следует из предложения V. 1.5.
10.	Раскрывая круглые скобки, показать, что п — 1 делится на 36ш и, следовательно, на 6m, 12m, 18m.
12.	Метод для решения пп. а) и б) упражнения дается в п. в), а) 561 = 3 -11 • 17. б) 1105 = 5 • 13 • 17, 2465 = 5-17-29, 10585 = 5-29-73. в) Пусть р < q. Так как (j — 1)|(гр? — 1) = гр — 1 (mod q — 1), должно быть гр — 1 = a(q — 1), 1 < а < г. Аналогично, (р — 1)|(г<? — 1), и потому (р — 1)|а(г<? — 1) = r(aq) — а = г(а + гр — 1) — а = (г — 1)(а + г) (mod р — 1). Таким образом, при фиксированном г и любом фиксированном а,2^а^г — 1, для простого р существует лишь конечное число возможностей, а именно, р — 1 должно быть делителем (г — 1)(а + г). Если р выбрано, то q однозначно определяется условием гр — 1 = a(g — 1). Разумеется, не каждая пара аир дает число Кармайкла, так как, например, а может не быть делителем гр — 1.
13.	Любое число Кармайкла, не перечисленное в упражнениях 12 а) и 12 6), должно быть произведением не менее чем трех различных простых чисел, каждое из которых не меньше 7.
14.	п = 21, 6 = 8.
16.	а) В упражнении 1 г) нужно проверять только те 6, для которых Ь₽-1 = (j-) = 1 (mod 2р — 1). Так как тг — 1 = р — 1 (mod 2р — 2), то . 6^г‘~1^2 = j(p-i)/2 (mod р) и (mod 2р—1); следовательно, 6^n-1^2 = j(p-1)/2 (m<^d тг). Далее, (^) = ( 2рЬ_1)(~) = (~) = Ь('р~1'>12 (mod р), следовательно, условие (2) эквивалентно б(р-1)/2 = (^) (mod 2р — 1). Оно выполняется в точности для половины всех 6, для которых Ьр~1 = 1 (mod 2р — 1) (так как в (Z/(2p — 1)Z)* такой элемент 6 должен быть такой степенью gJ образующего элемента д, что = 0 (mod 4), если (-) = 1,	= 2 (mod 4), если (-) = —1). б) тг = р(2р — 1), где р = 3 (mod 4)
(см. предложение V. 1. 5).
17.	Найти тг по модулю 72m: тг = 36m2 -|- 36m + 1. Таким образом, п~^ = 18m(m + 1) (mod 36m). Если m нечетно, отсюда следует, что всегда ft(n-1)/2 = 1 (mod тг) (так как (р— 1)|36т для каждого р|тг). Поэтому (2) выполняется тогда и только тогда, когда (^) = 1, т.е. в 50% случаев. Если m четно, то, по-прежнему, j(n-l)/2 = j (mod 6m -j- 1) и (mod 18m + 1), в то время как б(п-1)/2 = Ь6т = (12г^ + 1) (mod 12m+ 1). В этом случае (2) выполнено тогда и только тогда, когда (12г^ + 1) = 1 (так что б^"-1)/2 = 1 (mod п)), а также (£) = 1, т.е. в 25% случаев.
18.	a) O(log3 n log т). б) O(log5 тг).
ОТВЕТЫ К УПРАЖНЕНИЯМ
245
19.	a) N — составное число, поскольку таковым является п (по следствию из предложения 1.4. 1); далее методом упражнения 9 убедиться, что г^-1^2 = 22	1-1 = 1 (mod N). Но так как 7V = — 1 (mod 8), то (-^-) = 1. Таким обра-
зом, N есть эйлерово псевдопростое; по предложению V. 1.5 оно также и сильно псевдопростое, б) Использовать тот же подход, что и в упражнении 7 в).
20.	Если в (3) реализуется первая из возможностей, то, очевидно, (ЬкУ = 1 (mod п). Теперь предположим, что Ъ2 1 = — 1 (mod п). Положить к — 2'j, где j нечетно. Если i > г, то (6*)* = 1 (mod п); если i г, то (6*)2Г = (62Г(); = ( —1)J = —1 (mod n).
21.	а) Показать, что необходимые и достаточные условия на b — это (р^) = 1, (gpy) = 1. Оба эти условия выполняются в 25% случаев, т.е. для 80 оснований в (Z/561Z)*. б) Так как 670 = 1 (mod 3) и (mod 11), то 561 — сильно псевдопростое по основанию b в том и только том случае, когда 635 = ±1 (mod 561), т.е. тогда и только тогда, когда либо 1) b = 1 (mod 3), b = 1 (mod 17), (рр) = 1, либо 2) b = — 1 (mod 3), b = —1 (mod 17), (^у) = —1. Согласно китайской теореме об остатках существует 10 таких оснований (по 5 в случаях 1) и 2)). Помимо тривиальных ±1, это Ь = 50, 101, 103, 256, 305, 458, 460, 511.
22.	Использовать упражнение 7 а) к § Е 3, согласно которому квадратными корнями из единицы являются лишь ±1.
23.	а) 82 = 182 = -1 (mod 65); 142 = 1 (mod 65), но 141 £ ±1 (mod 65). б) Случай, когда п — степень простого числа, рассматривается как следствие из предыдущего упражнения. Предположим поэтому, что п не есть степень простого числа. Во-первых, если р\п, р = 3 (mod 4), то никакое целое число в четной степени не сравнимо с —1 по модулю п, так как —1 не есть квадратичный вычет по модулю р. Следовательно, в данном случае условие сильной псевдопростоты представимо в виде Ь‘ = ±1 (mod п). Это условие обладает, очевидно, свойством мультипликативности. Далее, предположим, что п = Ртт, где pj = 1 (mod 4), j = 1,2,..., г. Пусть ±dj — два квадратных корня из — 1 по модулю р-1 (квадратный корень по модулю pj можно преобразовать в квадратный корень по модулю р’-1, см. упражнение 20 к §11.2). Тогда любое b = ±aj (mod pj1 ) является основанием, по которому п — сильно псевдопростое, так как тогда b2t = (—I)1 = —1 (mod п). Выбрать bi и bi так, чтобы 61 = aj (mod Pj1 ), Ь^ = ( — l)E-> aj (rnodp^.1), j — 1.г, где (ei,... , er) — лю-
бой набор из 0 и 1, отличный от (0,. .., 0) и (1,..., 1). Далее показать, что если 6 = bi bi, то b2i = 1 (mod n), a b‘ = b ±1 (mod n).
24.	а) В этом случае получается число с, не равное ±1 и квадрат которого равен 1; тогда НОД (с + 1, п) — нетривиальный делитель п. б) Выбрать р и q так, чтобы р— 1 ид-1 не имели большого общего делителя (см. выше упражнение 5).
§ V.2
1.	НОД	(х5	- х3,п)	=	НОД	(21 - 63, 91) = 7; 91 = 7 • 13.
2.	НОД	(z6	- 13, п)	=	НОД	(2839 - 26, 8051) = 97; 8051 =	83	•	97.
3.	НОД	(zg	- х7, п)	=	НОД	(869 - 3397, 7031) = 79; 7031 = 79	• 89.
4.	НОД	(zg	- х3,п)	=	НОД	(630 - 112, 2701) = 37; 2701 =	37		73.
5.	Доказать индукцией по к, что для 1 к г вероятность того, что zo,zi,...,zfc-i все различны, a zj, равен одному из предыдущих Xj, равна 1/г. При к = 1 вероятность того, что /(zq) = xq, равна 1/г. Шаг индукции проводим следующим образом. По предположению индукции вероятность того, что к не меньше минимального значения t, удовлетворяющего условию if = Xj при не-
246
ОТВЕТЫ К УПРАЖНЕНИЯМ
некотором j < к, равна 1 —	Если это событие происходит, то
для f(zk-i) существует г — к + 1 возможных значений, так как f — биекция и потому	не может принимать ни одно из значений f(xj), 0 к — 2. Из
г — (к — 1) возможных значений одно — это то, а другие не равны хо, ®1, • • •, xk-l • Таким образом, лишь в одном из г — к + 1 случаев значение х^ совпадает с более ранним значением (а именно, когда X). = /(x^-i) = zq). Вероятность того, что одновременно произойдут два события, — 1) ни один из ti,..., x^-i не совпадает со своими предшественниками и 2) tj, = то — равна произведению вероятностей
—	w	Г — ( к “ 1 )	1	______ 1	<-• X ГТП	1
этих событии,	т.е. —------	• —тт—rv	— -•	о) 1 ак	как все значения от 1	до г
'	Г	Г — {К — i _)	Г '
равновероятны, среднее равно i = i = “г(г + 1)/2 —
6.	Предположим, что а и п взаимно просты (если бы это было не так, мы сразу нашли бы делитель п, вычислив НОД (а, п), и могли бы не использовать ро-метод). Тогда отображение /: т —► ах + Ь есть биекция Z/rZ на себя для любого г|п. Поэтому математическое ожидание числа шагов до первого повторения какого-либо значения по модулю г — величина порядка г/2 (по упражнению 5 6)), а не у/т, т. е. значительно больше.
7.	а) 2* = 2( (mod г — 1). б) I = s и к = s + тп, где m — порядок 2 по модулю t, т.е. такое наименьшее натуральное число, что 2m = 1 (mod t). Число т есть также период двоичного разложения 1/t; в этом можно убедиться, перейдя от равенства 2m — 1 = ut к 1/t = и 52,^1 2_т1. в) Нередки случаи, когда к имеет порядок почти такой же величины, что и г; например, если г — 1 есть удвоенное простое число, а 2 — образующий по модулю этого простого числа (тогда s = 1, т = (г — 3)/2).
§V.3
1.	а) (Использовать t = [^/й] + 1 — 93) 89  97. б) (Использовать t = [-^й] + 4 — 903) 823 • 983. в) (Использовать t = [д/™1 + 6 = 9613) 9277 • 9949. г) (Использовать t = [5/й] + 1 = 9390) 9343 • 9437. е) (Использовать t = [уй] + 8 = 75) 43 • 107.
2.	Пусть п = ab и а > Ь. Если а < у/п + у/п, то Ь = п/а > п/{у/п + у/п) > у/п — у/п. С другой стороны, если мы начинаем с Ь > у/п — у/п, то должно быть а < у/п+ tyn + 2, иначе было бы п = ab > (\/й+	-|-2)(Л/тГ — у/п) = п + у/п — 2 у/п >
п (если п > 15; для меньших значений п упражнение 2 проверяется отдельно). Таким образом, в обоих случаях а — b < 2( у/п + 1). Но если факторизация Ферма «не срабатывает» для первого значения t, то s и t, соответствующие разложению п = ab, удовлетворяют условию t > у/п + 1 и, следовательно, в = y/t2 — п > х/(-\/й + I)2 — п = у/2у/п + 1 > >/2-Уй, что при п > 33 противоречит неравенству s =	< ^й+ 1.
3.	а) Мы имели бы t2 — s2 = кп = 2 (mod 4), но по модулю 4 разность квадратов не может быть сравнима с 2. б) Мы имели бы t2 — s2 = 4п = 4 (mod 8). Это может быть, лишь когда s и t четны. Но тогда (t/2)2 — п = (в/2)2 и простая факторизация Ферма «сработала» бы так же хорошо.
4.	а) (Использовать t = [х/Зтг] + 1 = 455) 149 • 463. б) (Использовать t = [з/Зп] + 2 = 9472) 3217 • 9293. в) (Использовать t = [з/5п] + 1 = 9894) 1973 • 9923. г) (Использовать t = [\/5n] + 2 = 9226) 1877 • 9067.
5.	В = {2,3}; векторы (0,1) и (0, 1); b = 52 • 53 (mod п) = 55, с = 2 • З2 = 18; НОД (55 + 18, 2701) = 73; 2701 = 37 • 73.
6.	В = {-1,2,3,61}; векторы (1,0,0,0), (1,0,0,1) и (0,0,0, 1); b = 68  152 • 153 (mod п) - 1555; с = 2-3-61 = 366; НОД (1555 + 366,4633) = 113; 4633 = 41-113.
7.	а) Оценить разность, взяв сумму площадей «треугольных» областей между графиком log т и прямоугольниками римановой суммы, б) Сравнить J}71 log х dx с
ОТВЕТЫ К УПРАЖНЕНИЯМ
247
суммой площадей трапеций, верхние стороны которых соединяют точки (j, log у), и показать, что площадь между кривой и трапециями ограничена константой, в) limJ,_oo(log(y!) - (logy - 1)) = 0; итак, ответ: logy - 1.
8.	а) (1 - 2“")(1 - 2“п + 1)---(1 -г-”**-1), б) 0,298.
9.	Выражение в оценке сложности ро-метода становится в 3,2-1012 раз больше, в оценке сложности метода факторных раз в 2,6 • 106 раз больше.
10.	а) Если s < so, то hfs) ffs) > ffso) = |*(so), а если s > so, то *(s) > gfs) > g(so) = |-/i(so). б) Применить часть а) к log/(s) и logy(s).
§ V.4
I-	a)	6)	B) 1 + ±±X|.
2.	а) Так как x — a + то число x должно быть положительным корнем уравнения х2 — ах — 1 = 0, т. е. х = fa + у/а2 + 4)/2. б) Так как все числа а,- равны 1, то рекуррентное соотношение для числителей и знаменателей приближений то же самое, что и для чисел Фибоначчи.
3.	2 +	2+" 1ТР ГчГ iTp 3TF б” ' '' ’ можно показать, что а; при г = 2 (mod 3) —
последовательные четные числа и а,- = 1 для всех остальных г.
4.	Для каждого 6,- разность Ь2 — с2п есть наименьший абсолютный вычет Ь2 по модулю тг. Если р делит его, то Ь2 = с2п (mod р). Но отсюда следует, что тг — квадратичный вычет по модулю р.
5.	Следующие ниже таблицы составлены для стольких первых значений г, что наименьшие абсолютные вычеты b2,...,b2 обеспечивают факторизацию п. В четырех случаях (пп. ж), з), к), л)) существуют меньшие значения г, при которых можно найти такие подмножества вычетов, что сумма соответствующих им векторов е,- равна нулю; однако в этих случаях мы приходим к сравнениям b = ±с (mod п).
а)
г	0	12	3
а,	97	1	1	17
97	98	195 3413
6? (mod п) -100 95 -11	44
В = {-1, 2, 5, 11}, Ь = 97 • 195  3413, с = 22 • 5 • 11, НОД fb + с,п) = 257.
б)
i	0	1	2	3
ai	116	2	4	1
bi	116	233	1048	1281
b? (mod n)	-105	45	-137	80
В = {2, 3, 5}, Ъ = 233 • 1281, с = 22 • 3 • 5, НОД fb + с,п) = 191. в)
г	0	1	2
ai	93	1	2
bi	93	94	281
b] (mod n)	-128	59	-32
В = { — 1,2},* = 93 • 281, с = 2б,НОД fb + с,п) = 67.
248
ОТВЕТЫ К УПРАЖНЕНИЯМ
г)
i	0	1	2
ai	120	8	3
bi	120	961	3003
bj (mod n)	-29	65	-116
В = {-1, 2, 29}, Ь = 120 • 3003, с = 2 • 29, НОД (i + с, п) = 307.
i	0	1	2	3	4	5	6
ai	111	2	1	2	2	7	1
bi	111	223	334	891	2116	3300	5416
bj (mod n)	-82	117	-71	89	-27	116	-39
В = {-1,3, 13}, Ь = 233 • 2116 • 5416, с = З3 • 13, НОД (6 + с, п) = 157.
е)
i	0	1	2	3	4	5
ai	120	1	1	8	2	2
bi	120	121	241	2049	4339	10727
6? (mod n)	-127	114	-27	98	-71	162
В = {-1,2,3,7},6 =	2049 • 10727, c		= 2 •;	32 • 7, НОД (i + c, n) = 199.		
ж)						
i	0	1	2	3	4	5
ai	100	1	1	1	1	2
bi	100	101	201	302	503	1308
6? (mod n)	-123	78	-91	97	-66	77
В = {-1, 2,	,3,7, 11, 13}, b		= 101	• 201 •	503 • 1308,	
c = 2  3	• 7 • 11 •	13, НОД (b + c, n)			= 191.	
3)						/'
i	0	1	2	3	4	5	6	7	8	9
a,	111	1	1	2	1	4	1	6	2	1
bi	111	112	223	558	781	3682	4463	5562 3138 8700
6? (mod n)	—128	95	-67	139	-40	163	-31	79	-115	80
В = { —1,2, 5}, 6 = 1	11-781	• 8700	, c = 2	7 • 5, НОД (b + c,n) = 59.		
и)
i	0	1	2	3	4	5	6	7	8
ai	96	1	2	2	5	1	1	1	1
bi	96	97	290	677	3675	4352	8027	3026	1700
bj (mod n)	-137	56	-77	32	-107	79	-88	89	-77
В = {-1,2, 7,11}, i = 290 • 1700, с = 7-11, НОД (6 + с,п) = 47.
ОТВЕТЫ К УПРАЖНЕНИЯМ
249
к)
г	0	1	2	3	4	5	6	7	8	9
at	159	1	2	1	1	2	4	1	5	1
bi	159	160	479	639	1118	2875	12618	15493	13550	3532
b] (mod n)	-230	89	-158	145	-115	61	-227	50	-167	145
В = {-1,2, 5, 23, 29}, b = 639 • 3532, с = 5  29, НОД (6 + с, п) = 97.
л)
i	0	1	2	3	4	5	6	7	8
ai	133	1	2	4	2	3	1	2	1
bi	133	134	401	1738	3877	13369	17246	12115	11488
6? (mod n)	-184	83	-56	107	-64	161	-77	149	-88
В = {-1, 2, 7, 11, 23}, 6 = 401- 3877 •
17246  11488, с = 26  7 • 11, НОД (6 + с, п) = 61.
§V. 5
2. Наиболее трудоемкий — шаг 6). Время работы ограничивается величиной
О1 V' — log р log n) = О(А log п log Flog log Р). \	-,, р	)
простые р^Р
(Вопрос касался только шагов 1)—7); другим трудоемким этапом для очень больших п является нахождение линейно зависимых строк по модулю 2 в матрице показателей, соответствующих В-числам среди чисел Z2 — п.)
3. а)
t	Z2 — n	2	13	17	19	29	37	41	47
1030	14297	—	—	1	—	2	—	—	—
1319	693158	1	—	1	1	1	1	—	—
1370	830297	—	2	3	—	—	—	—	—
1493	1182446	1	—	—	1	2	1	—	—
1879 • 557.
Строки 1 и 3 зависимы и приводят к разложению
250
ОТВЕТЫ К УПРАЖНЕНИЯМ
б)
t	I2 — п	2	3	5	13	17	19	23	31	37	41
1030	1209	—	1	—	1	—	—	—	1	—	—
1043	28158	1	1	—	1	—	2	—	—	—	—
1046	34425	—	4	2	—	1	—	—	—	—	—
1047	36518	1	—	—	—	—	1	—	2	—	—
1079	104550	1	1	2	—	1	—	—	—	—	1
1096	141525	—	2	2	—	1	—	—	—	1	—
1123	201438	1	2	—	—	-	2	—	1	—	—
1141	242190	1	4	1	1	-	—	1	—	—	—
1154	272025	—	3	2	1	-	—	—	1	—	—
1161	288230	1	—	1	—	-	1	—	—	1	1
1199	377910	1	2	1	1	1	1	—	—	—	—
1233	460598	1	—	—	—	1	1	1	1	—	—
1251	505310	1	—	1	3	—	—	1	—	—	—
1271	555750	1	2	3	1	-	1	—	—	—	—
1284	588965	—	—	1	2	1	—	—	—	—	1
1309	653790	1	1	1	—	—	1	—	1	1	
1325	695934	1	2	—	—	—	—	1	—	—	2
1366	806265	—	2	1	—	—	1	1	—	—	1
1371	819950	1	—	2	—	—	—	2	1	—	—
1420	956709	—	2	—	2	1	—	—	—	1	—
1504	1202325	—	1	2	—	1	—	1	—	—	1
Строки 1, 2 и 7 зависимы по модулю 2, но не приводят к нетривиальному делителю. Строки 1 и 9 зависимы и приводят к разложению 1787 • 593.
в)
t	i2 — п	2	5	7	11	17	19	37	43	47
1001	3230	1	1	—	—	1	1	—	—	—
1003	7238	1	—	1	1	—	—	—	—	
1004	9245	—	1	—	-	—	—	—	2	—
1018	37553	—	—	—	—	1	—	—	—	2
1039	80750	1	3	—	—	1	1	—	—	—
1056	116365	—	1	—	—	1	—	2	—	—
1069	143990	1	1	1	2	1	—	—	—	—
1086	180625		4	—	—	2	—	—	—	—
1090	189329	—	—	1		1		1	1	—
1146	314545	—	1	1	1	—	1	—	1	—
1164	356125	—	3	1	1	—	—	1	—	—
1191	419710	1	1	—	—	—	1	—	—	2
1241	541310	1	1	1	1	—	1	1	—	—
1311	719950	1	2	1	2	1	—	—	—	—
1426	1034705	—	1	1	—	1	—	1	—	1
ОТВЕТЫ К УПРАЖНЕНИЯМ
251
Строки 1 и 5 зависимы и приводят к разложению 661 • 1511.
§VL1
1.	Либо группа окружности (если вещественная кривая имеет одну связную компоненту), либо произведение группы окружности и двуэлементной группы (если она имеет две связные компоненты). Пример первого случая — кривая с уравнением у2 = z3 + z, пример второго — кривая с уравнением у2 = х3 — х (для уравнения вида (1) это определяется тем, имеет ли кубический многочлен в правой части 1 или 3 вещественных корня).
2.	п2 комплексных точек порядка п; п вещественных точек порядка п, если п нечетно, и либо п, либо 2п, если п четно, в зависимости от того, имеет вещественная кривая одну или две компоненты.
3.	Те же самые примеры, что и в упражнении 1.
4.	а) На оси z. б) Точка перегиба, в) Точка, где прямая линия, проходящая через точку пересечения кривой с осью х, касается кривой (в дополнение к точкам из п. а)).
5.	а) 3. б) 4. в) 7. г) 5.
2	2
6.	Характеристика 2: гз = -+ zj + z?. уз = с + yi + У1 j~i<2 (zi + Z3) X1 ' ^2	X i -f- Z2 4
4	2	2
а если P = Q, to хз =	, уз = c + yi -—(zi + Z3); для уравнения (26)
Гз = x^ + xf + %1 + х2 +	+ а, уз = ^^2 (zi + тз) + тз + 2/1, а если Р = Q,
то хз = х2 + уз = х2 + (ti + ^-)тз + тз; характеристика 3: хз = (^-^^ )2 — а -	- z2, уз = -2/1 + V2~Vt (г1 “ гз), а если Р = Q, то хз = (аз:;~Ь)2 - а + ц,
•с2 х 1	у 1
, ах 1 — b i	\ '
2/з = —2/1 4-~ гз''
7.	а) Показать, что для каждой пары {а,—а} в точности одно из значений х = ±а приводит к двум решениям (х,у) уравнения (значение х = 0 и точку в бесконечности рассмотреть отдельно). б) в) Использовать тот факт, что при <7 = 2 (mod 3) отображение х —+ х3 поля Fg на себя взаимно однозначно.
8.	В следующей таблице приводятся типы абелевых групп для каждого зна-
чения q и каждой из двух эллиптических кривых:				
9	3	5	7	9	11	13
у2 хх Z3 - X (2, 2)	(4,2)	(4,2) (4,4)	(2,2,3)	(4,2)
у2 = X3 — 1		(2,3)	(2,2)	—	(4,3)	(2,2,3)
Q	17	19	23	25	27
у2 = х3 — х (4, 4)	(2, 2, 5)	(4,2,3)	(8,4)	(2,2,7)
у2 = z3 - 1 (2,9)	(2,2,7)	(8,3)	(2,2,3,3)		—
9.	а) Пусть Р = (z, у). Тогда — Р = (z, у + 1), 2Р = (z4, у4 + 1). б) Имеем 2(2Р) = (z16,j/16 + 14-1) = (z16, з/16) = (z,y) = Р. в) По п. б) имеем: 2Р = — Р, т.е. (х4,у4 + 1) = (х,у + 1); это, однако, означает, что х4 = z, у4 = у, а потому z и у принадлежат полю из 4 элементов. По теореме Хассе число N точек кривой отличается от 4+1 не более, чем на 2>/4 = 4, и от 16 + 1 не более, чем на 2у/16 = 8. Поэтому N — 9.
10.	Знаменатель дзета-функции равен (1 — Т)(1 — рТ) во всех случаях; в следующей таблице указаны числители для р — 5,7, 11, 13:
у2=х3-х 1 + 2Т + 5Т2	1 + 7Т2	1 + 11Т2 1-6Т+13Т2
у2 = z3 - 1	1 + 5Т2	1 - 4Т + 7Т2 1 + 1 IT2 1 - 2Т + 13Т2
252
ОТВЕТЫ К УПРАЖНЕНИЯМ
11.	В обоих случаях уравнение не имеет решений (х,у) в Fp. Поэтому единственной Fp-точкой является точка в бесконечности. Числители дзета-функций равны, соответственно, 1 — 2Т + 2Т2 и 1 — ЗТ + ЗТ2. Тогда Nr = N((l + i)r — 1) и, соответственно, N((l + w)r — 1), где ш — (—1 + гд/з)/2.
SVI.2
1.	Выбирать случайно элементы из Fg, пока не попадется такой д, что д(?-1)/2 — -j (а Hg
2.	Пусть х £ F9 соответствует т. а) Положить /(г) = х3 — х. Заметить, что в точности одно из значений /(г),/( — г) = —f(x) — квадрат. Положим у = /(х)<’+1>/4. Показать затем, что либо (х,у), либо ( — х,у) — точка на кривой, б) Выбрать любой у и положить х = (у2 + у)(2-’)/3 (если у = 0 или —1, то положить х = 0); показать, что (х,у) лежит на кривой.
3.	а) Последовательность точек (х,у) — следующая: (562,576), (581,395), (484, 214), (501, 220), (1,0), (1, 0), (144, 565). б) ICANT (I can’t).
4.	а) Группа Е (mod р) содержит нециклическую группу порядка 4 с тремя точками порядка 2. б) Е (mod р) содержит точку порядка 2, следовательно, ее порядок четен.
5.	Использовать формулы из примера 5 в § 1. а) Использовать сравнение по модулю 3, чтобы показать, что в обоих случаях (г четно и г нечетно) имеем 3|JVr. б) Если 4|г, то Nr = (2r!2 — I)2 = (2Г/4 — 1)2(2Г/4 + I)2; NT делится на (г/4)-битовое простое число тогда и только тогда, когда г/4 — простое число, для которого 2Г^4 — 1 есть простое число Мерсенна; Nr делится на (г/4 -|- 1)-битовое простое число тогда и только тогда, когда г/4 = 2* и 22 +1 — простое число Ферма.
6.	а) Fp-точки образуют собственную подгруппу Гр^-точек (по теореме Хассе), и эта подгруппа имеет более одного элемента (также по теореме Хассе). Таким образом, NT имеет собственный делитель, б) В обоих случаях пусть Е задано уравнением у2 + у = х3 — х + 1; легко проверить, что ни над Fj, ни над F3 у кривой нет точек, кроме точки в бесконечности. Таким образом, рассуждения, проведенные в п. а), не применимы. Можно показать, что если р = 2, то JV2 = 5, N3 — 13, N3 = 41, N7 = 113, Nn = 2113 (заметим, что дзета-функция равна (1 - 2Т + 2Т2)/((1 — Т)(1 — 2Т)); для г простого Nr — простое число тогда и только тогда, когда так называемое «комплексное число Мерсенна» (1 + г)г — 1 является простым гауссовым целым числом, или, что эквивалентно, тогдА^и только тогда, когда 2Г + 1 — (2)2^г + 1^2 — простое число, где (^) — символ Лежандра); если р = 3, то N2 = 7, N$ = 271, Nj = 2269 (здесь дзета-функция равна (1 - ЗТ + ЗТ2)/((1 - Т)(1 - ЗТ))).
7.	а) у2 + у = г3 + а, где а — любой элемент F4, не принадлежащий F2. б) Дзета-функция равна (1 — 4Т + 4Т2)/((1 — Т)(1 — 4Т)) и обратные элементы к обоим корням числителя равны 2; далее использовать замечание в конце § 1. в) Удвоенная точка (х,у) — это (г4,у4) (возведение в 4-ю степень есть «отображение Фробениуса», т.е. образующий группы Галуа F^ над F4). г) «г-кратное» удвоение любой точки — это (i4 , у4 ) = (х,у), т.е. любая Р £ Е удовлетворяет соотношению 2Г Р = Р.
8.	а) Воспользоваться тем, что х принадлежит F2 в том и только том случае, когда х2 = х, а также тем, что (а + Ь)2 = а2 + Ъ2 в поле характеристики 2. б) Отображение z —> 1 + z задает взаимно однозначное соответствие элементов с tr z = 0 и элементов с trz = 1. в) Выбрать случайным образом х € Ргг, затем подставить z = х3 + ах + Ь в g(z); если z оказывается среди тех 50% элементов,
ОТВЕТЫ К УПРАЖНЕНИЯМ
253
для которых trz = 0, то получаем точку (r,p(z)) на кривой.
9.	При работе с Е по модулю р пользуются теми же формулами (4)-(5) из § 1. Точка в бесконечности получается тогда, когда складываются точки меньшей кратности кР = kiP + к?Р, где kiP и к?Р — точки, которые после приведения по модулю р имеют одинаковые г-координаты и противоположные по знаку у-координаты. Это эквивалентно условиям 1) -2) в тексте упражнения.
10.	Знаменатель точки 8Р делится на 23, поэтому Р (mod 23) согласно упражнению 9 имеет порядок 8 на Е (mod 23). Однако из теоремы Хассе вытекает, что Е (mod 23) имеет более восьми точек.
И. (676,182), (385,703), (595,454), (212,625), (261,87), (77,369), (126,100), (66,589), (551,606), (501,530), (97,91), (733,110), (63,313), (380,530).
§VI.3
1. а) 1 - 1/д. б) 1 - 1/д.
3. а) Если п = 22 +1 — простое число, то любое а с (^) = -1 обладает указанным свойством. Относительно а = 3,5,7 см. упражнение 15 к §11.2. С „к- 1
W	W	W	9^1
другой стороны, если р — собственный простои делитель п и если а = — 1, то 22 , а не 22	, является кратным порядка элемента а по модулю pj, т.е. его
порядок равен 22 = п — 1 > р — 1, что невозможно, б) Предположим сначала, что п = 2Р — 1 есть простое число. Группа Е (mod п) состоит из 2Р точек, см. упражнение 7 а) к § VI. 1. То, что эта группа — циклическая, следует из того, что имеется только две точки порядка 2: действительно, многочлен г3 + х имеет лишь один корень по модулю п. Отсюда следует, что любые из тех 50% точек, которые порождают Е (mod п) (т.е. не получаются удвоением какой-либо точки), обладают свойствами 1)-2). Обратно, предположим, что п имеет собственный простой делитель I. Если бы Р обладала свойствами 1)—2), то на Е (mod /) порядок Р делил бы 2Р, но не 2Р~1, т.е. он был бы равен 2Р. Но тогда 2Р = п + 1 было бы делителем порядка группы Е (mod /), что противоречит теореме Хассе, утверждающей, что этот порядок не превосходит I + 2^/1 + 1. Для порождения случайных точек на Е (mod п) выберем случайным образом х € 'Z/n'Z. Если окажется, что b = х3 + х есть квадрат по модулю п, то полагаем у = £>(п + 1)/4, и тогда у2 = b • (>(п-1)/2 = г3 -|- х (см. замечание 1 в конце § II. 2).
§VL4
1.	НОД (2к - 1, п) = п, но НОД (Зк - 1, п) = 127, п = 127 • 421.
2.	Вероятность того, что случайный вычет а £ (Z/pZ)* удовлетворяет условию — 1), равна НОД (к,р — 1)/(р — 1). Так как имеется мало шансов, что ак — 1 будет делиться на какой-либо другой делитель п, то это же число служит оценкой вероятности того, что НОД (ак — 1,п) = р.
3.	а) 3 из 41. б) 22 из 41. в) 25 из 127. г) 68 из 127. д) 105 из 399.
4.	Выбрать к = 26 • З4 • 52. Далее указаны: первое значение а, для которого метод дает делитель, сам этот делитель, значение ki, на котором алгоритм заканчивается, а) 1,37, 23. б) 2, 71, 26 • З4 • 5. в) 1,67, 26 • З4 • 5. г) 1,47, 26 • 3. д) 2, 79, 26 • З4 • 52. е) 1,73, 26 • 3. ж) 5,53,22. з) 4, 59, 26 • З2. и) 1,47, 26 • 3. к) 3, 97, 26  3. л) 1, 61, 26 • З4  52.
5.	Если бы реализовалась последняя возможность, то это означало бы, что l'(ki/l)P (mod р) = О (mod р) для некоторого /' < I, тогда как (ki/l)P (mod р} О (mod р). Однако I' — это произведение простых чисел I* < I, а наш выбор показателей в (2) гарантировал для каждого такого I*, что наивысшая степень I*,
254
ОТВЕТЫ К УПРАЖНЕНИЯМ
которая могла бы делить порядок Р (mod р) в Е (mod р), заведомо содержится в (/*)“<* , т.е. в к\/1.
6.	а) Если п делится лишь на простые числа р, сравнимые с 3 по модулю 4, то для каждого р|п на кривой Е (mod р) всегда имеется в точности р+1 точек (см. упражнение 7 а) к § 1 для случая а — —1; однако те же аргументы применимы при любом а). Если при этом р+1 для каждого р|п делится на большое простое число, то изменение а не даст результата, б) Если п делится лишь на простые числа р, сравнимые с 2 по модулю 3, то всегда имеется р + 1 точек (см. упражнение 7 6) к § 1); и опять, если р + 1 для каждого р\п делится на большое простое число, то изменение 6 не приведет к результату.
7.	Порождать пары (Е, Р), где Е имеет уравнение у2 = х(х — а)(г — Ь). Тогда Е имеет четыре точки порядка 2 (включая точку в бесконечности) (см. упражнение 4 а) к § VI. 1); для этого можно сначала случайным образом выбирать а,х,уо и затем полагать у — х(х — а)у$ и Ь — х — ууо-
предметный указатель
Абелева группа 37
тип 197
автоморфизм 35, 41
Адлемана-Померанца-Румели тест на простоту 151
Адлемана-Хуана тест на простоту 215216
алгебраический элемент 35
алгоритм 10
-	Берлекампа 116
-	вероятностный 95, 104-105, 141-142
-	детерминистический 142
-	дискретного логарифмирования 113-118
-	индексный 114-118
-	Силвера-Полига-Хеллмана 113-114,208
-	факторных баз 115-116, 166
-	Шуфа 202, 207
алфавит 92
аутентичность, подлинность 97,
105
аффинная плоскость 192
аффинное отображение 64, 67, 76, 84
Бесконечно удаленная прямая 192
бесконечность 193
— точка 189, 193 биграмма 61 бит 3
«больших и малых шагов» метод 114
Бонд Джеймс 90, 210, 236, 239 бросание монетки 100, 106, 240 быстрорастущий набор 123
Д-число 162, 180-181
Вейля
-	гипотеза 198
-	спаривание 204
векторное пространство 34 вероятностное шифрование 99 вероятностный алгоритм 95,
104-105, 141-142
вещественные точки на эллиптической кривой 199, 251
взаимно простые (числа) 16 Виженера шифр 74
256
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
Вильсона теорема 28 возведение в степень 25-26, 107 - в кольце 26, 107 временные оценки 5 для
- алгоритма Евклида 15-16, 18, 19
-	алгоритма факторных баз 166-172
-	арифметических операций 3-8 - возведения в степень в кольце вычетов 26
-	извлечения квадратного корня по модулю р 57-58
-	метода квадратичного решета 185
-	нахождения обратного 21
-	перевода в новую систему счисления 10-11
-	ро-метода 158-159
-	теста Миллера-Рабина на простоту 153
-	точек на эллиптической кривой 201
-	факторизации на эллиптической кривой 224-226
-	факторизационных алгоритмов 171-172
вскрытие кода 63 вычет
-	квадратичный 49
-	наименьший абсолютный 162 - по модулю т 20-21, 219
Галуа расширение поля 35 гауссова сумма 50, 52, 151 гауссовы числа 19, 42, 48, 193 гладкая точка 189 гладкое целое 113 глобальная эллиптическая кривая 208 граф 130
группа
-	абелева 37
-	циклическая 38
Двоичная
-	операция 3
-	система счисления 1-3 двоичный разряд (бит) 3 делимость 13
-	точная 13
делитель 13
-	нетривиальный 13
-	собственный 13
делящая точка 195
детерминистический алгоритм 142
дешифрование 61
-	, ключ 91
-	, преобразование 61 дзета-функция 198
-	на эллиптической кривой 198 дискретный логарифм 107-108 - на эллиптической кривой 203 DES (стандарт шифрования
данных) 111-112
DSS (стандарт цифровой подписи) 111-113
Евклида алгоритм 14-15
-	для гауссовых чисел 19-20
-	для многочленов^!9
Жермен Софи 233
-	простое число 233
Закон сложения на эллиптической кривой 190
зашифрование 61
Изоморфизм 35
индексный алгоритм 114-118
Казанова 92-93
квадратичная взаимность 51, 54
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
257
квадратичное решето 180-182 квадратичный
-	вычет 49
-	невычет 49
-	характер 196
квадратный корень в конечном
поле 47, 55, 59, 106, 203
кириллица 71, 87
китайская теорема об остатках
23
классическая криптосистема 96 ключ 64
-	дешифрования 91
-	шифрования 64, 91
ключами обмен 98, 108
кодирование 202
кольцо 76
-	матриц 76-77
-	многочленов 34
коммивояжера задача 124
комплексные точки на эллипти-
ческой кривой 193
комплексные числа 19
композиция криптосистем 72, 87-88
конечное поле 21, 36
-	, автоморфизм 41
-	, образующий элемент 38
-	, подполе 43
-	, существование и единственность 40
корень из единицы в конечном поле 47
Коэна-Ленстры тест на простоту 151
КПСС 237
кратная точка 201
кратность корня 36
криптоанализ 63
криптография 61
-	с открытым ключом 93
криптосистема 61-62, 91
-	Диффи-Хеллмана 108-109, 205
-	классическая 96-97
-	Меркля-Хеллмана 124
-	Мэсси-Омуры 110-111, 120— 121, 206-207, 241
-	на эллиптических кривых 204-206
-	рюкзачная 124-128
-	с секретным ключом 96
-	симметричная 96
-	Эль-Гамаля 111, 121, 206-207 - RSA 24, 101-103, 118, 139-140, 154, 172
кручения подгруппа 195, 209
Лагранжа теорема 176 Лежандра символ 49, 196 Ленстры факторизация на эллиптической кривой 217, 221-222
линейная алгебра 66, 74-76 - по модулю N 76-79, 116-117 - по модулю 2 164 линейное отображение 65, 74, 76, 78
L-ряды Дирихле 151
Матрица 74-76 - обратная 75, 77 Меркля-Хеллмана криптосистема 124-126
Мерсенна простое (число) 31, 32, 58, 139, 216, 233 - гауссово 252
Миллера-Рабина тест на простоту 146 многочлен 19 - неприводимый 35 - нормированный 19, 35 - примитивный 43 модуль 20
258
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
Монте-Карло метод факторизации 155-159
Мор дел ла теорема 195
Мэсси-Омуры криптосистема
110-111, 120-121, 206-207, 241
Наибольший общий делитель 14
-	гауссовых чисел 19
-	многочленов 19, 36
наименьшее общее кратное 14 наименьший абсолютный вычет
162
невычет квадратичный 49
неинтерактивность 136
неприводимый многочлен 35, 115, 122
-	над конечным полем 43-45, 115, 122
нормированный многочлен 19, 35
нулевое разглашение 130
для
-	задачи дискретного логарифмирования 130,137
-	разложения на множители 136-137
-	раскраски карты 131-132
нулевой элемент 190
(п, k)-пороговая система 29
Образующий элемент конечного поля 38
обратный (по умножению) элемент 21
однонаправленная функция 94
-	с замком (лазейкой) 93
определитель 75
основание системы счисления 1
основная теорема арифметики
13, 29
открытый
-	ключ 95, 97
- текст 61
О-большое (символика) 8
Параметры криптосистемы 64, 91
Пепина тест на простоту 216 периодическая дробь 12, 227, 246
повторного возведения в квадрат метод 26, 107, 116
подпись 97, 105
подъем (квадратного корня)59, 89
Поклингтона тест на простоту 212, 216 поле 34
-	из р элементов 21, 36
-	конечное 21, 36
-	простое 36
-	разложения 36
Полига-Силвера-Хеллмана алгоритм 113-114, 208 полиномиальное время 11 Полларда (р — 1)-метод 217-219 поля
-	автоморфизм 35, 41
-	изоморфизм 35
-	расширение Галуа 35
-	характеристика 36 порядок
-	точки 195
-	элемента 37 предварительный этап вычислений дискретного логарифма 115
предположение Диффи-Хеллмана 109,135
представление открытого текста 202
преобразование
-	дешифрования 61
-	на биграммах 67
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
259
- сдвига 63 приближение (цепной дроби) 175
примитивный - корень из единицы 47 - многочлен 43 пробы делением 140, 155 проективная - плоскость 192 - точка 192
проективное уравнение 192 производная многочлена 35 простое - поле 36 - число 13
— в арифметической прогрессии 39
— Мерсенна 31, 32, 58, 139, 216, 233
— Ферма 32, 58-59, 121, 216 псевдопростое (число) 140 -, сильно 145 - Эйлера 144
Разделение секрета 29 разложения на множители алгоритм цепных дробей 177—179 разложения поле 36 разряд двоичный (бит) 3 ранг эллиптической кривой 195 раскрашивание - в три цвета 130-131 - карты или графа 131 расшифрование 61 редукция эллиптической кривой 209,219-221
решетка 193 решето
-	квадратичное 180-182
-	Эратосфена 181
Римана гипотеза 57, 151 ро-метод 155-159
русский алфавит 71, 87 рюкзачная система Чора-
Райвеста 127
RSA 24, 101-103, 118, 139-140, 154, 172
Силвера-Полига-Хеллмана алгоритм 113-114, 208 сильно псевдопростое 145 симметричная криптосистема
96
система обмена ключами Диффи-Хеллмана 108-109, 205 скрытая передача 134-137 след 210
случайное блуждание 196 случайность 101
Соловея-Штрассена тест на простоту 144
сообщения элемент 61 сопряженный корень 35 составное число 13 сравнение 20-21, 219 СССР 236
Стирлинга формула для п! 11, 166,173
структура криптосистемы 63 суперсингулярная эллиптическая кривая 204
Теорема о простых числах 12-13, 102
тест на простоту
- Адлемана-Померанца-Румели 151
-	Адлемана-Хуана 215-216
-	Коэна-Ленстры 151
-	методом проб делением 140
-	Миллера-Рабина 146
-	на эллиптических кривых 213-215
-	Пепина 216
-	Поклингтона 212, 216
260
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
-	Соловея-Штрассена 144
-	Эткина 212, 215
тор 194
триграмма 61
Факторизации метод
-	квадратичного решета 180 182
- Монте-Карло 155-157
-	Полларда (р - 1) 217-219
-	проб делением 140, 155
-	ро-метод 155-159
-	Ферма 106, 160-161
-	цепных дробей 177-179 факторизация
-	, разложение на множители 30-32, 101
-	с помощью эллиптических кривых 217, 221-226
факторная база 162
факторных баз алгоритм 115, 166
Ферма
-	малая теорема 22, 140
-	простое число 32, 58-59, 121, 216
-	факторизация 106,160-161
Фибоначчи числа 18, 86-87, 180, 237, 247
фиксированная биграмма 89 фиксированный элемент сооб-
щения 71, 72
Фробениус 207, 252
функция
-	Вейерштрасса 193-194
-	однонаправленная 94
- с замком (лазейкой) 93
Характеристика поля 36
Хассе теорема 197 хеш-функция 98
Цезарь Юлий 63 цепная дробь 174 циклическая группа 38
Частотный анализ 64 число Кармайкла 142-143, 152— 153
число разрядов 3
Шестнадцатиричная система
12
шифрование 61
-	, ключ 64, 91
-	, матрица 80
-	, преобразование 61 шифртекст 61
Шуфа алгоритм 202, 207
Эллиптическая кривая 188-189 - над конечным полем 196 эллиптическая функция 194-195 эллиптической кривой - подгруппа кручения 195, 209 - редукция 209, 219-221 Эль-Гамаля - криптосистема 111, 121, 206-207
- система подписи 121
Эткина тест/на простоту 212, 215 К
Якоби символ 54