Текст
                    А. А. Болотов, С. Б. Гашков
А. Б. Фролов, А. А. Часовских
ЭЛЕМЕНТАРНОЕ ВВЕДЕНИЕ
В ЭЛЛИПТИЧЕСКУЮ КРИПТОГРАФИЮ
Алгебраические и алгоритмические основы
МОСКВА
URSS
ББК 32.81
УДК 512.8
Болотов Анатолий Александрович,
Гашков Сергей Борисович,
Фролов Александр Борисович,
Часовских Анатолий Александрович
Элементарное введение в эллиптическую криптографию: Алгебраические и алгоритмические основы. — М.: КомКнига, 2006. — 328 с.
ISBN 5-484-00443-8
Настоящая книга посвящена перспективному направлению в области защиты информации, математическую основу которого составляет теория эллиптических кривых.
Книга содержит необходимые для изучения эллиптической криптографии сведения по теории конечного поля и базовые понятия теории эллиптических кривых. В ней излагаются используемые алгебраические понятия и методы эффективной реализации базовых алгебраических операций, с помощью которых могут строиться как известные, так и перспективные криптографические системы, основанные на использовании группы точек эллиптической кривой. Изложение сопровождается большим числом примеров и упражнений.
Предназначено для студентов, преподавателей вузов и специалистов в области защиты информации, прикладной математики, вычислительной техники и информатики. Издание представляет интерес для лиц, связанных с кодированием и передачей информации и цифровой техникой, а также специалистов по прикладной математике, интересующихся компьютерной алгеброй.
Издательство «КомКнига» 117312, г. Москва, пр-т 60-летия Октября, 9
Подписано к печати 03.05 2006 г Формат 60x90/16. Печ. л. 20,5. Зак. № 552
Отпечатано в ООО «ЛЕНАНД» 117312, г. Москва, пр-т 60-летия Октября, д ПА, стр. 11.
ISBN 5-484-00443-8
© КомКнига, 2006
НАУЧНАЯ И УЧЕБНАЯ ЛИТЕРАТУРА
"ТТЛ E-mail: URSS@URSS.ru
/фх Каталог изданий в Интернете:
W http://URSS.ru
J	Тел./факс: 7 (095) 135-42-16
URSS Тел ./факс: 7 (095) 135-42-46
3775 ID 35161
9*785484 004430 >
Оглавление
Предисловие......................................................... 7
Глава 1. Введение................................................... 9
1.1.	Криптография с открытым ключом................................. 9
1.2.	Группы, кольца, поля.......................................... 15
1.2.1.	Группы................................................. 15
1.2.2.	Кольца. Поля. Многочлены над полем..................... 23
1.2.3.	Алгоритм Евклида и его варианты........................ 26
Глава 2. Конечные поля и эллиптические кривые...................... 38
2.1.	Поля Галуа.................................................... 38
2.1.1.	Характеристика поля.................................... 39
2.1.2.	Мультипликативная группа конечного поля................ 40
2.1.3.	Конечное расширение поля............................... 42
2.1.4.	Поле разложения многочлена............................. 46
2.1.5.	Минимальные многочлены. Существование неприводимых многочленов................................................... 48
2.1.6.	След и норма элемента конечного поля................... 55
2.1.7.	Алгоритмическое представление конечного поля........... 56
2.1.8.	Поле Галуа как векторное пространство.................. 58
2.1.9.	Проверка, является ли нормальная система базисом. Переход от нормального базиса к стандартному.................. 62
2.1.10.	Переход от стандартного базиса к нормальному........... 64
2.1.11.	О быстрой линейной алгебре............................. 65
2.1.12.	Быстрый алгоритм для решения систем линейных уравнений над конечным полем............................................. 69
2.1.13.	Оптимальные и гауссовы нормальные базисы............... 70
2.1.14.	Алгебраическое замыкание конечного поля................ 73
2.1.15.	Квадратичные вычеты и извлечение квадратных корней в конечных полях............................................... 74
2.2.	Эллиптические кривые ......................................... 82
2.2.1.	Алгебраические кривые и эллиптические кривые........... 82
2.2.2.	Группа точек эллиптической кривой...................... 89
2.2.3.	Эллиптические кривые над полями действительных и рациональных чисел.......................................... 99
2.3.	Эллиптические кривые над конечными полями.....................104
2.3.1.	Порядок эллиптической кривой ..........................104
2.3.2.	Легко ли вычислить порядок группы точек эллиптической кривой..........................................104
4
Оглавление
2.3.3.	Применения теоремы Хассе............................105
2.3.4.	О структуре групп эллиптических кривых..............109
Глава 3. Неприводимые многочлены................................111
3.1.	Тестирование и поиск неприводимых многочленов..............111
3.1.1.	Чем интересны неприводимые многочлены...............111
3.1.2.	Тест на неприводимость. Алгоритм Берлекемпа.........112
3.1.3.	Оценка сложности алгоритма Евклида..................113
3.1.4.	Тестирование неприводимости многочленов.............114
3.1.5.	О тестировании неприводимости многочленов малого веса .... 116
3.1.6.	Асимптотически быстрый алгоритм тестирования неприводимости многочленов.................................122
3.1.7.	Вероятностные алгоритмы тестирования неприводимости многочленов................................................129
3.1.8.	Генерация неприводимых многочленов..................131
3.2.	Тестирование примитивных многочленов.......................132
3.2.1.	Тестирование примитивности неприводимого многочлена .... 132
3.2.2.	Генерация примитивных многочленов...................134
3.2.3.	Генерация примитивных элементов в поле GF(pn).......135
3.3.	Алгоритмы вычисления минимального многочлена...............137
3.3.1.	О сложности вычисления минимальных многочленов......137
3.3.2.	Быстрый алгоритм вычисления минимального многочлена .... 138
3.4.	Генерация нормальных базисов...............................140
3.4.1.	Критерии базисности нормальной системы .............140
3.4.2.	Быстрое тестирование базисности нормальных систем...142
3.4.3.	О нормальных базисах, порождаемых многочленами малого веса................................................144
Глава 4. Арифметика GF(2n) в полиномиальном базисе..............146
4.1.	Особенности реализации операций............................146
4.1.1.	Выбор поля и способов реализации....................146
4.2.	Классический алгоритм умножения в GF(2)[^T]................150
4.2.1.	Элементарные многочлены. Таблица умножения..........150
4.2.2.	Умножение многочленов с использованием таблицы умножения..........................................152
4.2.3.	Модификация классического алгоритма и гибридный алгоритм умножения.............................154
4.2.4.	Еще две модификации классического алгоритма умножения ... 156
4.3.	Алгоритм Карацубы и его реализация ........................162
4.3.1.	О методе Карацубы...................................162
4.3.2.	Умножение многочленов по методу Карацубы............162
4.3.3.	Декомпозиционная схема умножения многочленов над GF(2) . . 163
4.3.4.	Умножение многочленов...............................164
4.4.	Приведение по модулю неприводимого многочлена..............168
4.4.1.	Классический алгоритм деления многочленов...........168
Оглавление
5
4.4.2.	Приведение многочлена по модулю многочлена малого веса . . . 170
4.4.3.	Обобщение алгоритма .................................175
4.4.4.	Приведение по модулю многочлена высокого веса........180
4.5.	Возведение в степень и инвертирование.......................182
4.5.1.	Возведение в степень 2т в стандартном базисе.........182
4.5.2.	Инвертирование в полиномиальном или нормальном базисах . . 182
4.5.3.	Быстрый алгоритм возведения в степень в стандартном базисе........................................185
4.5.4.	Быстрое инвертирование в стандартном базисе поля GF(pn) . . . 189
4.5.5.	Быстрое программное инвертирование на основе алгоритма Евклида ..........................................189
4.5.6.	Деление с помощью алгоритма Евклида .................192
4.6.	Асимптотически быстрые алгоритмы............................192
4.6.1.	Быстрое умножение чисел и многочленов................192
4.6.2.	Аддитивные цепочки...................................196
4.6.3.	Приложения аддитивных цепочек........................204
4.6.4.	Аддитивные цепочки с вычитаниями.....................206
4.6.5.	Алгоритмы возведения в степень с фиксированной базой.209
4.6.6.	Ускорение проверки электронной подписи...............213
4.6.7.	Метод Монтгомери быстрого возведения в степень.......214
4.6.8.	Пример реализации метода Монтгомери логическими схемами.....................................................216
4.6.9.	Быстрое i введения в степень через модулярную композицию . . 219
4.6.10.	Быстрое инвертирование в стандартном базисе через модулярную композицию........................................222
4.6.11.	Некоторые уточнения в случае q = 2 ..................223
Глава 5. Арифметика в нормальных базисах.........................226
5.1.	Оптимальные нормальные базисы...............................226
5.1.1.	Три типа оптимальных нормальных базисов..............226
5.1.2.	Некоторые примеры примитивных элементов по модулю р . . . 227
5.1.3.	Алгоритм генерации оптимальных нормальных базисов первого типа и доказательство их оптимальности..............228
5.1.4.	Алгоритм генерации оптимальных нормальных базисов второго типа и доказательство их оптимальности..............232
5.1.5.	Алгоритм генерации оптимальных нормальных базисов третьего типа и доказательство их оптимальности.............237
5.2.	Оптимизация преобразований базисов..........................242
5.2.1.	О комбинированном использовании полиномиального и нормального базисов.......................................242
5.2.2.	Пример выполнения алгоритма перехода от оптимального базиса первого типа к стандартному и обратно................245
5.2.3.	11римеры построения логических схем для умножения в стандартном и оптимальном нормальном базисе первого типа................................................246
6
Оглавление
5.2.4.	Оценка сложности перехода от оптимальных нормальных базисов второго и третьего типа к стандартным и обратно .... 250
5.2.5.	О явном вычислении формул перехода и минимальных многочленов для оптимальных нормальных базисов..............261
5.2.6.	Оценка сложности перехода от оптимальных нормальных базисов второго и третьего типа к стандартным в общем случае .....................................................266
5.2.7.	Пример выполнения алгоритма перехода от оптимального базиса 2-го или 3-го типа к стандартному и обратно..........266
5.2.8.	Замечание о программной реализации .................270
5.2.9.	О сложности арифметических операций в конечных полях .... 271
5.2.10.	Об оценках сложности возведения в степень и инвертирования в конечных полях ...........................273
5.3.	Гауссовы нормальные базисы.................................274
5.3.1.	Построение гауссовых нормальных базисов.............274
5.3.2.	Сложность умножения, инвертирования и возведения в степень в ГНБ.............................................278
5.3.3.	Гауссовы базисы и гауссовы периоды .................280
5.3.4.	Еще один вывод таблицы умножения для ГНБ............283
5.3.5.	Примеры гауссовых нормальных базисов в полях GF(2n).285
5.3.6.	Порядки генераторов базисов низкой сложности и быстрый алгоритм возведения в степень...............................292
5.3.7.	О сложности порождения нормальных базисов, примитивных элементов и неприводимых многочленов........................294
5.3.8.	Редундантные базисы.................................296
5.4.	Операции в нормальных базисах..............................301
5.4.1.	Пример построения схемы для умножения и инвертирования в оптимальных нормальных базисах второго типа...............301
5.4.2.	Пример схемного инвертирования с использованием редундантного базиса........................................306
5.4.3.	Пример схемы умножения в ГНБ .......................307
5.4.4.	Быстрое программное инвертирование с	помощью ГНБ....308
Литература......................................................312
Предметный указатель............................................321
Посвящается Арато Саломаа, математику, криптографу и другу
Предисловие
Настоящее издание публикуется параллельно с книгой «Элементарное введение в эллиптическую криптографию: Протоколы криптографии на эллиптических кривых» (М.: URSS, 2006) [18], которая является сходной по тематике. Поэтому ссылки на нее в тексте помечены как вторая книга.
Настоящая книга посвящена вычислительным методам конечной алгебры, используемым в современной прикладной криптографии и теории кодирования. Она состоит из пяти глав.
Первая глава является введением, где охарактеризована проблематика криптографии на эллиптических кривых и литература по тематике издания, даны общеизвестные алгебраические понятия и сопутствующие им алгоритмы.
Вторая глава посвящена теории и алгоритмическому строению конечных полей и групп точек эллиптических кривых.
Третья глава освещает вопросы тестирования и генерации неприводимых многочленов.
В четвертой главе рассматриваются эффективные алгоритмы для операций с использованием полиномиального базиса конечного поля.
В пятой главе изучаются понятия и алгоритмы, связанные с использованием нормального базиса конечного поля для выполнения операций в нем, а также алгоритмы преобразования базисов. Особое внимание уделяется оптимальным нормальным базисам и гауссовым нормальным базисам.
В конце книги приведен список цитируемых источников и предметный указатель.
Теоремы, следствия, леммы, утверждения, примеры и упражнения нумеруются по главам и разделам, например, «Теорема 4.2.1» есть первая теорема второго раздела четвертой главы; а уравнения (или алгебраические выражения), таблицы и рисунки имеют сплошную нумерацию внутри главы, и номер раздела в их обозначениях отсутствует.
Алгебраическая и криптографическая терминология согласуется с учебниками [2, 31].
Большинство излагаемых понятий и алгоритмов иллюстрируется примерами. Наиболее существенные положения формулируются в виде теорем, более сложные из них даются с доказательствами, а более очевидные или менее принципиальные иногда формулируются в виде упражнений с указаниями к решению.
8
Предисловие
При подготовке примеров использована библиотека алгоритмов криптографии эллиптических кривых и «визуализирующий» ее алгебраический процессор, разработанные под руководством авторов студентами МЭИ П. И. Артемьевой, В. С. Гамовым, Я. Ю. Грачевым, А. Б. Дроздовым, Ал. И. Мамонтовым и Е. В. Шестаковым при выполнении дипломных проектов и магистерских диссертаций, и другие программы, разработанные под руководством авторов студентами и аспирантами МГУ и МЭИ. Издание содержит все необходимое для создания таких библиотек и процессоров в вузах, где осуществляется подготовка по специальностям в области обеспечения информационной безопасности.
Авторы будут считать свою цель достигнутой, если заинтересованный читатель сможет с помощью настоящего издания, а также книги «Элементарное введение в эллиптическую криптографию: Протоколы на эллиптических кривых» [18] самостоятельно реализовать программно основные алгоритмы криптографии на эллиптических кривых и использовать получившуюся библиотеку функций для моделирования работы криптографических протоколов.
В издании отражен опыт авторов преподавания математических основ криптологии и криптографических методов обеспечения информационной безопасности в Московском государственном университете, Московском энергетическом институте, факультете защиты информации Российского государственного гуманитарного университета, на кафедре информационной безопасности Российского государственного социального университета и даже в физико-математическоп школе-интернате при МГУ.
В заключение авторы выражают благодарность за замечания О. Н. Василенко и Д. В. Матюхину, прочитавшим рукопись, студентам МЭИ и МГУ, заметившим ряд неточностей и осуществившим экспериментальную проверку описаний алгоритмов и числовых параметров, приведенных в книге. Также мы признательны заведующему кафедрой информационной безопасности РГСУ профессору А. В. Бабашу и доценту МГУ Э. А. Применко за поддержку.
Глава 1
Введение
—	...Я pad знакомству с вами, доктор Валлис, и еще более приятна мне возможность поговорить с вами наедине.
—	... Вы меня удивляете, ваше превосходительство. Не знаю, как мое имя могло достигнуть ваших ушей. Я и не предполагал, что вы питаете интерес к математике.
—	...Нояузнал о вас не благодаря вашим познаниям в алгебре. Скорее благодаря вашему дару постижения тайнописи.
—	...слышанное вами крайне преувеличено. Я обладаю лишь скромными способностями на этом поприще.
—	...не захотите ли вы поделиться вашими познаниями ?
—	...Вы хотите сказать, не следует ли написать мне об этом книгу ?
—	...книга требует времени и... не принесет вам большой награды... не захотите ли вы поехать в Брюссель и дать наставления некоторым юношам... Разумеется, ваши труды будут щедро вознаграждены.
—	...Ваше предложение столь щедро, сколь мала моя ценность. Но... мои обязанности в университете не позволяют мне путешествовать.
—	Я знаю, вы человек, кому благодарность может быть предложена на словах, на словах одних приношу ее вам. Скажу лишь, что... человек иного склада покинул бы эту комнату много богаче, чем вошёл в неё.
Йен Пирс
1.1.	Криптография с открытым ключом
Криптография существует уже более двух тысяч лет, но, оправдывая свое название, она находилась на границе между наукой и тайными искусствами (например, магией). Криптографическую идею можно усмотреть в триптихе Хиеронимуса Босха «Сад земных наслаждений» (1503-1504) как символ тщетности попыток злоумышленников овладеть ключом. Использовалась она в основном людьми, которых сейчас бы назвали представите-
0 Перст указующий. Глава шестая. Тайнопись соучастия. 1998.
10
Глава 1. Введение
лями спецслужб. По понятным причинам эти люди не афишировали своих познаний. Но в середине семидесятых годов прошлого века произошли события, вызвавшее революционный переворот в криптографии, превративший ее в популярную прикладную науку. Этими событиями было открытие публичной криптографии (или криптографии с открытым ключом), совершенное двумя группами американских математиков — Диффи и Хеллманом, открывшими протокол обмена ключами (или протокол выработки общего секретного ключа при использовании открытых каналов связи), и Райвестом, Шамиром и Эдлименом, открывшими несколько позднее криптосистему с открытым ключом, называемую теперь по именам авторов криптосистемой RSA. Последовавшее бурное развитие публичной криптографии (само это название до этого времени казалось бы верхом нелепости) стимулировало также открытый доступ к идеям классического направления криптографии — криптографии с закрытым (или, как еще говорят, симметричным) ключом. Сыграло свою роль и решение фирмы IBM открыто опубликовать детали алгоритма симметричного шифрования, известного как DES, который на долгие годы стал стандартом в этой области. При этом одно из назначений криптографии с открытым ключом — безопасное распределение по открытым каналам связи ключевой информации для симметричных криптосистем 2\ Далее, посредством протоколов с доказуемыми свойствами безопасности она придает сетевым информационным технологиям необходимые свойства обеспечения целостности информации, неотслеживаемости маршрутов ее перемещения в компьютерной сети, возможность разделения секрета между i руппой пользователей, объективность голосования, подтверждение авторства и т.д.
Недавно стало известно, что две наиболее известные публичные криптосистемы (Диффи—Хеллмана и RSA) на несколько лет раньше американцев были открыты группой сотрудников английских спецслужб в составе Эллиса, Кокса и Уильямсона (любопытно, что они вначале открыли систему RSA, а потом протокол DH), однако им было запрещено публиковать свои результаты [170]. Но развитие криптографии уже вышло из под контроля спецслужб, и в последней четверти прошлого века на стыке теории сложности алгоритмов, алгоритмической теории чисел и компьютерной алгебры начало быстро развиваться направление прикладной науки, известное как криптографические методы защиты информации в компьютерных сетях (см., например, [67, 80, 81, 130,147,171, 177]).
Следствием небывалой доселе популярности криптографии служит появление криптографических мотивов в популярной художественной литературе, например в бестселлерах Дэна Брауна «Код да Винчи» (русский перевод было бы правильнее назвать «Шифр да Винчи») или Нила Стивенсона «Криптономикон» (где даже приводится в приложении описание
Функции последних не могут быть выполнены посредством криптосистем с открытым ключом прежде всего в силу того, что пропускная способность классических криптосистем примерно в 1 000 раз выше пропускной способности криптосистем с открытым ключом.
1.1. Криптография с открытым ключом
11
одного из шифров Брюса Шнайера). Был, наконец, опубликован перевод на русский язык известной книги Дэвида Кана «Взломщики кодов».
В 1985 г. произошло событие, существенно изменившее лицо криптографии с открытым ключом. В этом году независимо Нилом Коблицем и Виктором Миллером было предложено использовать в криптографии алгебраические свойства так называемых эллиптических кривых. С этого момента началось бурное развитие нового направления в криптографии, для которого используется термин криптография на эллиптических кривых, соответствующий принятому в англоязычной литературе понятию Elliptic Curve Cryptography и аббревиатуре ЕСС (но мы для краткости иногда будем писать просто эллиптическая криптография). В криптографии эллиптических кривых роль основной криптографической операции выполняет операция скалярного умножение точки эллиптической кривой на данное целое число, определяемая через операции сложения и удвоения точек эллиптической кривой. Последние, в свою очередь, выполняются на основе операций сложения, умножения и инвертирования в конечном поле, над которым рассматривается кривая.
Особый интерес к криптографии эллиптических кривых обусловлен теми преимуществами, которые дает ее применение в беспроводных коммуникациях — высокое быстродействие и небольшая длина ключа. Например, в построенных на основе эллиптических кривых криптосистемах над двоичными полями размерности от 150 до 350 обеспечивается уровень криптографической стойкости, который требует в аналогичных стандартных криптосистемах использования полей размерности от 600 до 1400 и более.
Криптография на эллиптических кривых использует очень сложную математику — теорию эллиптических кривых над конечными полями, интенсивное развитие которой проходило в двадцатом веке и не закончилось до сих пор. Сама эта теория тесно связана с более классическими областями — теорией эллиптических кривых над полями рациональных, действительных и комплексных чисел, а через них — с теорией функций, алгебраической геометрией и теорией чисел. Именно с помощью теории эллиптических кривых в конце двадцатого века была доказана знаменитая теорема Ферма, который и стоял у истоков этой теории. Совсем недавно она считалась чистейшей областью математики, не имеющей за пределами собственно математики никаких приложений, и занималось ею совсем небольшое число специалистов, а остальные математики часто имели о ней смутное представление.
После появления работ Коблица и Миллера положение радикальным образом изменилось, теория эллиптических кривых превратилась в прикладную науку, ей стали интересоваться (и заниматься ее приложениями) инженеры в области информационной безопасности, криптографы, и многие зарубежные специалисты в этой теории переместили центр своих исследований в сторону криптографических приложений. Сейчас в этой
12
Глава 1. Введение
области публикуются сотни работ в год и она переживает (вместе со всей криптографией) настоящий бум.
Однако вхождение в эту область затруднено необходимостью изучения большого количества сложной математической литературы. Для облегчения этого полезно вначале ознакомиться со сравнительно доступно написанным введением в криптографию эллиптических кривых. Авторы надеются, что эту роль сыграет написанная ими книга.
Предлагаемое издание отличается от работ по теоретической криптографии, в которых изучаются свойства криптографических систем как функции от параметра безопасности, когда, например, сложность операций сложения и умножения больших чисел может считаться одинаковой. В теоретических работах не имеет значения выбор алгебраических структур и способов их реализации, в то время как на практике имеет важное значение, к примеру, какой базис выбрать для реализации операций в конечном поле, так как от этого зависит быстродействие криптосистемы.
Отличается предлагаемое издание и от книг, в которых основное внимание уделяется не анализу алгоритмов, а особенностям их программирования.
Авторы старались сочетать практическую и теоретическую направленность издания. Оно содержит материал и основанные на нем алгоритмы, систематическая реализация которых доступна каждому владеющему программированием на C++.
В издании много материала, лишь недавно появившегося в специальной литературе, и использующего нетривиальную математику, и поэтому некоторые ее разделы довольно трудны. (Теория эллиптических кривых — одна из наиболее сложных математических теорий.) Тем не менее, мы старались дать максимально элементарное изложение, и надеемся, что оно будет доступно всем интересующимся подобными вопросами студентам и другим категориям читателей. В тех случаях, когда такого изложения пока нет, давались только ссылки на оригинальные работы и формулировки результатов.
Скажем несколько слов о том, какой материал относящийся к теории эллиптических кривых и ее криптографическим приложениям (и почему) в двухтомнике отсутствует. Читатель не найдет у нас, например, подробного и последовательного изложения теории эллиптических кривых, так как это требует отдельной (и неизбежно трудной для чтения) книги. В связи с этим обстоятельством в книге отсутствует описание алгоритмов, обоснование которых требует глубокого знания этой теории.
Например, мы не приводим описание алгоритмов вычисления числа точек на несуперсингулярных кривых. Отметим, что эти алгоритмы практическим криптографам нужны только при выборе так называемых случайных кривых, а потребность в этом невелика. Как правило, практиков вполне устраивают кривые, явное указанные в соответствующих открыто опубликованных криптографических стандартах, информацию о которых читатель может найти далее в списке литературы.
1.1. Криптография с открытым ключом
13
В частности, по той же причине в издании также отсутствует описание эффективных алгоритмов логарифмирования на эллиптических кривых (и в конечных полях тоже) и, шире, алгоритмов, атакующих различные криптосистемы. Эти алгоритмы представляют в основном теоретический интерес и на практике нужны только при выборе порядка конечного поля, над которым рассматривается используемая в криптосистеме кривая, достаточного для обеспечения требуемого уровня безопасности. Но рекомендации о таком выборе (основанные на современных достижениях в дискретном логарифмировании) можно найти в соответствующих статьях и криптографических стандартах, и использование этих рекомендаций не требует знания упомянутых алгоритмов. Заметим, что подробное изложение этих алгоритмов требует специальной монографии, а их использование больше интересует спецслужбы, чем практических криптографов. Поэтому мы ограничились изложением известных детерминированных алгоритмов дискретного логарифмирования А. О. Гельфонда и В. И. Нечаева, предложив читателю их интерпретацию применительно к группе точек эллиптической кривой.
В издании почти не затрагиваются также интенсивно ведущиеся в последнее время исследования по использованию гиперэллиптических кривых в криптографии. В этом случае для достижения требуемого уровня безопасности можно использовать конечные поля существенно меньших размеров, чем в эллиптической криптографии, например, в случае использования полей характеристики два размерность поля может быть меньше 100. Полученные в этом направлении результаты позволяют надеяться на ускорение стандартных алгоритмов эллиптической криптографии и возможность их реализации (или, как пишут в англоязычной литературе, имплементации) на маленьких процессорах, которые можно разместить даже на пластиковых кредитных картах. Однако эти исследования, вероятно, еще не вошли в завершающую стадию и изложение их в учебной и монографической литературе — дело будущего.
В настоящей книге отсутствуют описания также ряда криптографических протоколов, которые имеют свои варианты в эллиптической криптографии, и, в целом, она далека от энциклопедичное™ в заявленной области. Заметим, однако, что книга, даже с такими скромными претензиями в области охвата материала, устаревала в процессе написания и иногда после изложения некоторых разделов приходилось описывать новые улучшенные алгоритмы, которые были опубликованы уже после того, как раздел был написан.
Мы не рассматриваем также вопросы безопасности, возникающие в связи с возможностью анализа радиоизлучений компьютера при реализации операций с секретным ключом.
В заключение данного раздела приведем краткий путеводитель по отражающей тематику данного издания литературе.
За время. прошедшее от издания нашей книги [12], существенно увеличился обьем литературы на русском языке, так или иначе связанной
14
Глава 1. Введение
с излагаемой нами тематикой. Зная по собственному опыту, насколько затруднен в наше насыщенное всевозможной информацией время библиографический поиск, мы включили в список литературы не только ссылки на оригинальные источники, использованные (и не использованные) нами, но и ссылки на некоторые книги, излагающие вопросы, не затронутые нами, тем более, что в колоссальном объеме современной криптографической литературы лишь сравнительно незначительная часть посвящена криптографии эллиптических кривых. Предлагаемая библиография далека от полноты и включает, в основном, наиболее доступные источники.
Особенностью современной криптографии является ее сильная математизация. По существу, криптография является областью прикладной математики, относящейся в западной терминологии к computer science, но использующей самые современные достижения таких чистейших (и труднейших) областей математики, как теория простых чисел и теория эллиптических кривых.
Читателя, желающего освежить свои знания в основах алгебры и теории чисел, мы адресуем к книгам [1, 10,23,31,47,60].
Более сложные вопросы теории чисел сравнительно элементарно излагаются в [1,30, 74], специально простым числам посвящена монография [62].
Изложение теории конечных полей можно найти в [9, 52], а для тех, кому доступна англоязычная литература — в [126, 143,148].
Алгоритмические вопросы теории чисел освещены в [20,78], а на английском языке в [91, 103] и др.
С разными аспектами теории алгебраических, и в частности, эллиптических кривых можно ознакомиться по сравнительно популярным изложениям [48,61,63,69,71] и серьезным монографиям [25,46,51,70,79]. В большом количестве специально посвященные эллиптически кривым монографии имеются на английском языке, см., например, [124,134,168, 174].
Систематически применительно к криптографии эти вопросы наиболее полно отражены на русском языке в малодоступной из-за весьма ограниченного тиража книге [64]. См. также [67,76].
Криптография эллиптических кривых является лишь одним из разделов современной криптографии с открытым ключом. Читателя, интересующегося другими ее разделами, мы вынуждены отослать к другим книгам.
Энциклопедический обзор всей криптографической проблематики можно найти в доступной также через Интернет книге [147], и переведенных на русский язык книгах [67, 80]. Широкому кругу вопросов посвящены имеющиеся на английском языке книги [171, 177]. Алгебраические аспекты криптографии излагаются в [130]. Специально криптографии эллиптических кривых посвящены книги [94,95, 122, 144]. Особенностям программирования алгоритмов и протоколов криптографии эллиптических кривых посвящена книга [158], а криптосистеме RSA — книга [22].
1.2. Группы, кольца, поля
15
До недавнего времени открытых публикаций на криптографические темы на русском языке не было вообще. Криптография с открытым ключом, кажется, впервые была упомянута в книге [66]. История ее открытия описана в не переведенной на русский язык книге [170]. Одной из первых переведенных на русский язык книг по криптографии была книга [65]. Спустя несколько лет, после того как был сделан перевод, была опубликована книга [19]. Одной из первых книг по криптографии, написанных отечественными авторами, была опубликованная посмертно книга [59] известного математика, много работавшего по закрытой тематике. В числе первых была издана книга авторского коллектива [21]. Одной из первых научно-популярных книг по криптографии на русском языке была книга [37].
В настоящее время на русском языке имеются посвященные широкому кругу вопросов учебники [2,40,55,56,72,76] и монографии [7, 35,57, 64,77,83]. С криптографическими алгоритмами и протоколами можно познакомится по учебникам [33,34], с современными методами шифрования с секретным ключом — по книгам [35,41,43], с методами генерации псевдослучайных последовательностей — по книге [42], теорией совершенных шифров — по [39], применением булевых функций в криптографии — по [53], наконец, с историей криптографии — по изданиям [8,58].
Криптографические методы защиты информации являются лишь частью используемых для этого методов. Читатель, интересующийся проблематикой защип информации в полном объеме, может обратиться к книгам [3,32,38,08,75,81] и ознакомиться с различными взглядами на этот предмет.
1.2.	Группы, кольца, поля
Материал этого раздела в основном стандартен и может быть найден в любом учебнике алгебры. Он дается только для удобства читателя, потому что часто будет использоваться в следующих разделах книги без особых оговорок и ссылок.
В разделе об алгоритме Евклида даны, кроме стандартного, некоторые малоизвестные его варианты. Описания этих алгоритмов едины как для кольца целых чисел, так и для кольца многочленов над конечным полем.
1.2.1.	Группы
Группой называется множество G, на котором определена ассоциативная бинарная операция о, которое содержит элемент е такой, что для любого элемента a € G выполняется
е о a -= aoe = a, и существует элемент а такой, что
aoa = aoa = e.
16
Глава 1. Введение
Указанный элемент е называется нейтральным элементом, или единицей группы, элемент а называется симметричным к элементу а3 4\ Легко показать, что единица группы единственна и что элемент, симметричный к данному элементу, также определяется однозначно. Как следствие, в группе можно определить унарную операцию инверсии^, которая сопоставляет каждому элементу а, а Е G, симметричный к нему элемент а. Эта операция является биекцией, т. е. взаимно-однозначным отображением. Если операция о коммутативна, то группа называется коммутативной или абелевой. В дальнейшем мы будем использовать только абелевы группы.
Примерами абелевых групп являются:
а)	множества Z целых, Q рациональных, R действительных и С комплексных чисел с соответствующими операциями сложения;
б)	множества Q \ {0}, Д\{0} и С\ {0} отличных от нуля рациональных, действительных и комплексных чисел с соответствующими операциями умножения.
В теории групп используется две равноправных и эквивалентных друг другу терминологических системы: аддитивная и мультипликативная. В аддитивной системе групповую операцию называют операцией сложения, а группы в аддитивной записи для краткости будем назвать иногда аддитивными. Группы, операцию в которых называют умножением, именуются далее иногда мультипликативными группами.
Операцию аддитивной группы принято обозначать знаком +, операцию мультипликативной группы обозначают знаком умножения х, или •, или ее обозначение, по умолчанию, опускают.
Нейтральный элемент аддитивной группы обозначается 0 и называется нулем. Результат а аддитивной инверсии, т. е. элемент аддитивной группы, симметричный к элементу а, обозначается -а и называется противоположным к этому элементу. Нейтральный элемент мультипликативной группы обозначается 1 и называется единицей. Результат а мультипликативной инверсии обозначатся а-1 и называется обратным к этому элементу.
Ассоциативность операции о позволяет записывать кратное произведение
(• • • ((а о а) о а) о • • • а) о а,
опуская скобки:
аоцоао---оа.
Такая формула называются к-ой степенью элемента а группы (к — число вхождений элемента а в формулу). В аддитивных группах к-я степень элемента а обозначается к * а, в мультипликативных группах используется обозначение ак. По определению, 0 * а = 0 и = 1.
Более распространен термин обратный элемент, но его мы далее будем употреблять только для групп мультипликативной записи.
4) Другой термин — обращение.
1.2. Группы, кольца, поля
17
Композиция
a + (-&)
операций инверсии и сложения аддитивной группы называется операцией вычитания элемента Ь из элемента а, обозначаемой знаком минус. Результат а-b называется разностью элементов а и Ь. Противоположный к элементу а элемент -а получается как разность 0 - а.
Композиция
а х Ь~}
операций инверсии и умножения мультипликативной группы называется операцией деления элемента а на элемент Ь, обозначаемой косой чертой /. Результат а/b, или | называется частным от деления элемента а на элемент Ъ. Обратный к элементу а элемент а-1 получается как частное
Рассмотренные выше примеры аддитивных и мультипликативных групп представляют бесконечные группы.
Группа, определенная на конечном множестве G, называется конечной. Тривиальная (единичная) группа определена на одноэлементном множестве {е} и содержит только единицу. Число элементов конечной группы называется порядком группы. Порядок тривиальной группы равен 1, простейшая нетривиальная группа имеет порядок 2.
Упражнение 1.2.1. Покажите, что в конечной группе некоторая степень дп любого элемента д группы рп. на единице е группы.
Порядком элемента д группы G называется наименьшее число п такое, что дп = е. Порядок элемента д иногда далее обозначается ord д.
Элемент, порядок которого равен порядку группы, если он существует, называется образующим элементом группы.
Группа, имеющая образующий элемент, называется циклической.
Упражнение 1.2.2. Убедитесь, что в циклической группе каждый элемент представим как некоторая степень любого образующего элемента группы и что всякая циклическая группа абелева.
Часто конечная группа определяется как фактор-множество бесконечной группы по некоторому отношению эквивалентности5^.
Так, на множестве Z целых чисел относительно натурального числа т можно определить отношение
{(ж, у) \ х н ?/(mod т)},
^Ошошением эквивалентности называется однородное бинарное отношение обладающее свойствами транзитивности ((а Ь) и (Ь ~ с) влекут а я с)), рефлексивности ((а = Ь) влече! (а Ь)) и симметричности ((а ~ Ъ) влечет (Ь ~ а)). Множество, на котором задано это отношение, разбивается на классы эквивалентности [а]~, где а — представитель класса. Совокупность классов эквивалентности есть фактор-множество множества А по данному отноп ению обозначается иногда А\«.
18
Глава 1. Введение
где х = ?/(modm) означает, что число т делит6) разность (х - у). Это отношение называется отношением конгруэнтности по модулю т, а классы эквивалентности по этому отношению — классами конгруэнтности ( или классами вычетов) по модулю т.
Фактор-множество Z/= mod т по этому отношению сокращенно обозначают Zm, аналогично, классы конгруэнтности [a|=modm обозначаются просто [а]т.
Легко видеть, что х = ?/(mod т) тогда и только тогда, когда х mod т — у mod т, где х mod m и у mod тп — остаток от деления числа х или числа у на т.
На фактор-множестве Zm можно определить арифметические операции. Сумму классов эквивалентности определяют следующим образом:
[%]т	[3/]т — [х &]т-
Удобно в качестве представителей классов [ж]ш использовать наименьшие неотрицательные элементы х mod т классов. Тогда операцию сложения можно описать в обозначениях этих представителей:
kk + kk = [к + у) mod m]m.
Упражнение 1.2.3. Убедитесь, что фактор множество Zm с только что описанной операцией сложения есть аддитивная группа с нейтральным элементом [0]т и что противоположный к элементу [а]т группы есть элемент -[а]т = [т - а]т.
Аналогично вводится операция умножения по модулю т.
kk х kk = k х j/k = Ik x У) mod m]m.
При этом множество ненулевых классов конгруэнтности [а]ш, а / О, имеющих обратный класс [a-1]w, где а х a-1 modm = 1, образует мультипликативную группу, которая обозначается Z^. Мультипликативной единицей является класс [1]ш. Класс [а]ш принадлежит Z*fl тогда и только тогда, когда числа а и т взаимно просты, т. е. не имеют общих множителей. Порядок группы Z*n обозначается у?(т), и так определенная функция называется функцией Эйлера.
Упражнение 1.2.4. Покажите, что Z*m = Zm\ [0]m тогда и только тогда, когда т есть простое число.
Рассмотренные аддитивная и мультипликативная группы, определенные на множествах Zm и Z*rl классов конгруэнтности по модулю т, изоморфны аддитивной и мультипликативной группам, заданным
6) Согласно алгоритму деления целых чисел с остатком при заданном ненулевом делителе d делимое а единственным образом представляется формулой а = qd У- г, 0 г < |d|. Число q называется частным, а число г называется остатком от деления а на q. Например, если а = 5, a d = -2, то а = (-2)(-2) 4- 1, т. е. q — -2, г = 1. Если остаток г = О, то говорят, что d делит а, что обозначают d\a. Остаток обозначают также г = amodd или rem(a, d) Наибольшим общим делителем целых чисел п и т называется наибольшее число d, являющееся делителем как т, так и п. Это число обозначается НОД(п, т) или просто (п, т). НОД(п, т) существует тогда и только тогда, когда хотя бы одно из чисел п и т не равно 0. Если НОД(п, т) = 1, то числа пит называются взаимно простыми.
1.2. Группы, кольца, поля
19
на множестве наименьших неотрицательных представителей этих классов, соответственно с операциями сложения и умножения по модулю т. Поэтому часто вместо группы на фактор множестве рассматривают группы на множестве представителей классов, при этом эти множества Zm = {0, 1т - 1} и Z*m — {а/а и т взаимно просты} представителей обозначают так же, как множества классов. Операции в таких группах ниже обозначаются +modm и Xmodm ИЛИ просто + И X.
Подмножество Н группы G, замкнутое относительно операций группы, и являющееся группой с этими же операциями, называется подгруппой этой группы.
Например, тривиальная группа есть подгруппа любой группы.
Упражнение 1.2.5. Докажите критерий подгруппы', подмножество Н, Н С G является подгруппой тогда и только тогда, когда для любых a,b Е Н а°Ь~1 € Н.
Упражнение 1.2.6. Пусть Н — подгруппа группы G. Проверьте, что отношение Gh — {(а, &) \ 3 h G Hb — ah} есть отношение эквивалентности на множестве G.
Классы эквивалентности [а|% по этому отношению называются левыми смежными классами группы G по подгруппе Н. Очевидно, что h\ ^h2~>ah] ^аЬ>2 для любых h>2 € Н. Действительно, если ah\ = ah,2, то умножая обе части равенства слева на а-1, получим a~lahi = a~lah2 —> h\ = hi, что ведет к противоречию. Значит, число элементов в каждом классе равно порядку подгруппы Н. Если подгруппа Н такова, что число смежных классов конечно, то это число называется индексом подгруппы Н в группе G (обо качается G : Н).
Учитывая, что суммарное число элементов в классах равно порядку группы, получаем для конечной группы следующее утверждение.
Теорема 1.2.1 (Лагранж). Порядок и индекс подгруппы Н в группе G делят порядок группы.
Пример 1.2.1. Возьмем подгруппу {[0]9, [3]9, [6]9} аддитивной группы
Z9 — {[0]9, [1]9, [2]9, [3]9, [4]9, [5]9, [6]9, [7]9, [8]9}.
Левыми смежными классами являются множества
{[0]9, [3]9, [6]9}3 {[1]9, [4]9, [7]9}, {[2]9,[5]9,[8]9}.
Индекс G : Н равен 3.
Аналогично определяются правые смежные классы.
Упражнение 1.2.7. Убедитесь, что левые и правые смежные классы абелевой группы совпадают.
Упражнение 1.2.8. Покажите, что в конечной группе все различные степени а{... ,а* любого элемента составляют циклическую подгруппу, порядок которой равен порядку J этого элемента (если I > 6, то а1 — ас§+{1mod= almodS).
Отсюда получаем следующие утверждения:
Следствие 1.2.1. Порядок любого элемента конечной группы делит порядок группы.
20
Глава 1. Введение
Следствие 1.2.2. Для любого элемента а конечной группы порядка т имеет место равенство ат — е.
Следствие 1.2.3. Если б — порядок элемента а группы G, а п 6 N, то ап = е тогда и только тогда, когда б\п.
Следствие 1.2.4. Для любого элемента а конечной группы порядка т имеет место равенство ат~х = а~х.
Следствие 1.2.5 (Теорема Эйлера). Для всякого натурального п и всякого натурального а такого, что НОД(а, п) = 1, справедливо отношение
= l(mod п).
Доказательство. Представители а классов конгруэнтности
[a]=modrc = {х \ х = tz(mod п)}
такие, что НОД(а, п) — 1, образуют группу с операцией умножения по модулю п. Порядок группы равен функции Эйлера р(п).	
Пример 1.2.2. Если п = 6, то группа G = ({1,5}, xmod61), ^(6) = 2, I2 = 1 mod 6, 52 = 1 mod 6.
Следствие 1.2.6 (Малая теорема Ферма). Для всякого простого числа р и целого числа а, не кратного р, имеет место отношение
ар~х = l(modp).
По следствию 1.2.2, возведение элемента конечной группы в большую степень можно упростить путем приведения показателя степени по модулю т порядка группы: ' п nmodm 9=9
В частности, (см. также следствие 1.2.5.) возведение числа д, такого, что (д, п) — 1, в большую степень к по модулю п можно упростить путем приведения показателя степени по модулю т —
дк mod п = дк mod mod п.
Теорема 1.2.2. Для любой группы G при любом натуральном к порядок т элемента ак определяется равенством
т=(Езу
где б = ord а. В частности, ыдак = б тогда и только тогда, когда (к, б) — 1.
Доказательство. Положим m = ovdak. Тогда akm — 1. По след-ствию 1.2.3, Отсюда	 т. Учитывая, что (^,	= 1,
получаем
т.	(1.
1.2. Группы, кольца, поля
21
С другой стороны, (акУк^ =	= 1. Поэтому (с учетом следствия
1.2.3)
Из отношений (1.2) и (1.3) получаем (1.1).	
Упражнение 1.2.9. Сформулируйте утверждения, аналогичные следствиям 1.2.2-1.2.6 и теореме 1.2.2 применительно к конечной аддитивной группе.
Рассмотрим методы вычисления порядка элемента группы и нахождения образующих элементов групп, а также элементов высокого порядка.
В приведенных ниже алгоритмах используется свойство, что порядок элемента делит порядок группы (следствие 1.2.1).
Алгоритмы записаны в мультипликативной символике.
Заметим, что возведение в степень элемента группы можно осуществить быстро, если воспользоваться разложением показателя степени в двоичной системе счисления и использовать алгоритм 1.2.1 на рис. 1.1 (так называемый бинарный алгоритм).
Алгоритм 1.2.1
ВХОД: Элемент а известной мультипликативной группы G; коэффициенты (d0,	... dn_i) бинарного разложения
показателя степени d = dQ2^ + d{21 4- ... + dn-i2n-1.
ВЫХОД: Слепень b — ad элемента a.
1.	b<r- 1.
2.	Для i от 1 до n: b <- b2adnt.
3.	Вернуть b.
Рис. 1.1. Алгоритм возведения в степень в мультипликативной группе
Лемма 1.2.1 [59]. Для вычисления степени тп, где т — элемент некоторого кольца, ап— натуральное число, достаточно выполнить не более 2 [log2 п\ операций умножения.
Доказательство. Пусть 2fc-1 < п < 2к, к - 1 = 2[log2 nJ. Тогда, представляя п в двоичной системе счисления, получим
n = e0 + e|-2 + e2-22 + ... + ejt_1-2^1<l+2 + 4+... + 2fc“l = 24’- 1 <2к,
Для вычисления степеней 1, т, т2, т4,..., mek~1'2 ' достаточно выпол-нить к - 1 умножений (возведений в квадрат). Для получения результата, некоторые из этих степеней надо перемножить, при этом будет выполнено не более к - 1 умножений.	
22
Глава 1. Введение
Если вместо возведения в степень использовать операцию умножения, то получим алгоритм вычисления аддитивного кратного к * а элемента а.
Упражнение 1.2.10. Обоснуйте этот алгоритм.
Определение порядка элемента группы при известной факторизации порядка п группы. Порядок элемента группы можно определить по алгоритму 1.2.2 (см. рис. 1.2).
Алгоритм 1.2.2
ВХОД: Элемент а € G, мультипликативной группы G порядка п, факторизация п = ре{1 • ре22 • • • рек.
рг (г = 1,..., к) — разные простые числа.
ВЫХОД: порядок t элемента а.
1.	t <— п.
2.	Для г от 1 до к:
2.1.	t^t/p^.
2.2.	di — сб.
2.3.	Пока / 1: а\ a\l, t t рг.
3.	Вернуть t.
Рис. 1.2. Алгоритм определения порядка элемента мультипликативной группы
Упражнение 1.2.11. Обоснуйте этот алгоритм.
Поиск образующего элемента циклической группы. Приведем вероятностный алгоритм 1.2.3 (рис. 1.3) поиска образующего элемента циклической группы. Эффективность алгоритма определяется тем, что группа содержит <p(ri) образующих элементов, и вероятность того, что случайно выбираемый элемент является образующим равна > 6 ln!ln п (см. [91] или [62]). Замечание. Трудности проблемы факторизации можно обойти выбором подходящей группы Z*. При этом обеспечивается и присутствие большого множителя в разложении числа р - 1. Сначала выбирается достаточно большое простое число q. Затем случайно выбирают относительно малые числа R, пока не будет получено простое число р = 2Rq + 1. Поскольку р - 1 = 2Rq, факторизация сводится к факторизации числа R. Если выбирать R = 1, то факторизацией р - 1 является просто 2q. Поскольку <р(р - 1) = <p(2q) = (p(2)p(q) — q - 1, вероятность того, что случайно выбранный элемент a Е Z* является образующим элементом, есть ~ |. Простое число вида р = 2q + 1, где q — простое, называется безопасным простым числом [147].
Упражнение 1.2.12. Обоснуйте этот алгоритм. Переформулируйте алгоритмы 1.2.1, 1.2.2 и 1.2.3 применительно к аддитивной группе и составьте унифицированные описания соответствующих алгоритмов для мультипликативной и аддитивной групп.
1.2. Группы, кольца, поля
23
Алгоритм 1.2.3
ВХОД: Порядок п, известной циклической мультипликативной циклической группы G, факторизация п =	• • • pekk,
где рг, i = 1,..., к, — разные простые числа.
ВЫХОД: образующий элемент а группы G.
1	Выбрать случайный элемент а группы G.
2.	Для i от 1 до к:
2.1.	b<-an/p‘.
2.2.	Если b = 1, то перейти к 1.
3.	Вернуть а.
Рис. 1.3. Вероятностный алгоритм поиска образующего элемента циклической мультипликативной группы
Указание. Используйте обобщенное обозначение, например, д(х, t) для функций умножения на константу t • х и функции возведения в степень х1.
Поиск элемента высокого порядка циклической группы. Иногда требуется найти элементы высокого порядка, не являющиеся образующими элементами.
Пусть a — образующий элемент циклической группы G порядка п nd- делитель числа п. Тогда по теореме 1.2.2 элемент р порядка d можно получить как р = an^d. Если q — простой делитель порядка п циклической группы G, элемент Д порядка q можно найти без предварительного поиска образующего элемента а группы G. Для этого выбирают случайно д Е G и вычисляют р = gn^q, повторяя эти действия, пока не будет получено р, р 1.
Упражнение 1.2.13. Сформулируйте аналогичное правило поиска элемента высокого порядка применительно к аддитивной группе.
Применительно к группе, не являющейся циклической, ввиду отсутствия образующих элементов в ней используют элементы максимального порядка.
Приведем алгоритм 1.2.4 поиска элемента максимального порядка группы Zp.q. Пусть п = р • q, где р и q — различные нечетные простые числа. Тогда Z*.q — группа порядка <р(п) = (р - V)(q - 1), не являющаяся циклической (см. рис. 1.4).
1.2.2.	Кольца. Поля. Многочлены над полем
Кольцом называется множество R с операциями сложения и умножения такими, что R является абелевой группой относительно сложения и операция умножения ассоциативна и дистрибутивна относительно one-
24
Глава 1. Введение
Алгоритм 1.2.4
ВХОД: два различных нечетных простых числа р и q, факторизация чисел р - 1 и q - 1.
ВЫХОД: элемент а максимального порядка НОК(р - 1, q - 1) группы Z*, п = р • q.
1.	Применяя алгоритм 1.2.3 к G = Z* и факторизацию числа р - 1, найти образующий элемент а группы G*.
2.	Применяя алгоритм 1.2.3 к G = Z* и факторизацию числа q - 1, найти образующий элемент b группы G*.
3.	Найти целое а, 1 а < п - 1, удовлетворяющее сравнениям а = a(modp), а = b(mod q).
4.	Вернуть а.
Рис. 1.4. Алгоритм поиска элемента максимального порядка мультипликативной группы
рации сложения:
(а х Ь) х с = а х (Ь х с), ах (& + с) = ахНах с, (Нс)ха = &ха + сха. Следствием определения кольца является свойство: для любого а
о0 = 0ха = 0.
Примерами колец являются множества Z целых, Q рациональных и R действительных чисел с операциями сложения и умножения.
Кольцо, в котором а х Ъ = 0 влечет а = 0 или b = 0 называется областью целостности. Если в кольце имеется мультипликативная единица 1, то кольцо называется кольцом с единицей. Ниже рассматриваются только кольца с единицей.
Элемент а1 кольца с единицей такой, что ах а1 — 1 называется обратным к элементу а. Элемент, обратный к элементу а кольца, обозначается а-1. Каждый элемент кольца имеет не более одного обратного к нему элемента. Элемент, обратный к нулевому элементу кольца, не существует.
Множество элементов кольца, имеющих обратный элемент, составляет мультипликативную группу кольца R, которая обозначается R*.
Полем называется кольцо F с единицей, множество ненулевых элементов которого с операцией умножения является абелевой группой. Эта группа называется мультипликативной группой поля.
Примерами бесконечных полей являются поля Q рациональных, R действительных и С комплексных чисел.
Подмножество F поля Q, замкнутое относительно обеих операций и являющееся полем, называется подполем, что обозначается F С Q.
1.2. Группы, кольца, поля
25
Поле, не имеющее подполя, не совпадающего с самим полем, называется простым полем. Имеется единственное простое бесконечное поле — поле Q рациональных чисел.
Конечные поля называются полями Галуа по имени французского математика Эвариста Галуа (1811-1832).
Далее рассматриваются и используются, как правило, конечные поля.
Порядком поля называется число его элементов. Конечное поле порядка q обозначается GF(q) или Fq.
Пример 1.2.3. Простейшим полем является поле из двух элементов — поле GF(2). Операции этого поля определяются таблицами, из которых следует, что сложение соответствует булевой функции сложения по модулю 2, а умножение — конъюнкции:
+	а
ь	0 1
0 1	0 1 1 0
X	а
Ь	0 1
0 1	0 0 0 1
Упражнение 1.2.14. Постройте таблицы операций поля GF(5).
Мультипликативная группа конечного поля порядка q обозначается GF(q)* и имеет порядок на единицу меньше порядка поля.
Два поля F^ и F^ называются изоморфными, если существует биекция <р : F^ —> F^, сохраняющая операции. Эта биекция и обратная к ней функция называются изоморфизмами.
Упражнение 1.2.15. Покажите, что фактор-множество Zp кольца Z целых чисел по модулю простого числа р является полем порядка р и что все конечные поля простого порядка р являются простыми и изоморфны друг другу, т. е. такие поля составляют класс всех простых конечных полей.
Понятие поля позволяет вводить и использовать большое разнообразие колец, элементы которых определяются как многочлены
f(X) — Qq -F (2iX H- 0-2-^ -J- . . . + UrX
с коэффициентами аг из данного поля F. Такие многочлены называются многочленами над полем F. Наибольшее число d такое, что коэффициент аа 0, называется степенью многочлена f(X). Если при этом = 1, то многочлен степени d называется нормированным. Степень многочлена f(X) обозначается deg f(X). Число ненулевых коэффициентов многочлена будем называть его весом. Степень нулевого многочлена естественно определить как -1. Многочлен степени не более п — 1 над полем F представим упорядоченным набором (oq, , an~i) коэффициентов. (Иногда удобно использовать наборы длины, полученные добавлением старших нулевых элементов аг, i > deg (X).)
Кольцо многочленов над полем F образуется всеми многочленами над F. Оно обозначается Р[Х]. Операции сложения и умножения кольца
26
Глава 1. Введение
F[JT] определяются теми же правилами, по которым складываются или перемножаются многочлены над действительным полем.
Операция сложения сопоставляет двум многочленам
п-1	п-1
Р1(Х) = 52Й<Г и р^Х) = ^ЬХ, i—G	2=0
их сумму
п-1
Pi(X)+p2(X) =	(1.4)
i=0
(Здесь и ниже в слагаемых формул, подобных формуле в правой части, имеются в виду операции сложения и умножения в поле F.)
Результатом операции умножения многочленов
п-1	п-1
и(Х) = 5>ДГ и р2(Х) = £>Г
2=0	2 = 0
является многочлен
2п-2 р(Х)=Р1(Х)хр2(Х) = ^С,Г.	(1.5)
2=0
где сг = 52 аЛ-
t+l=i
Нулем кольца многочленов является многочлен 0, все коэффициенты которого нулевые, т. е. равньгаддитивной единице поля. Единицей кольца многочленов является многочлен 1 нулевой степени. Кольцо многочленов не является полем, так как не всякий многочлен имеет обратный к нему элемент кольца.
Упражнение 1.2.16. Убедитесь, что приведенное описание кольца многочленов соответствует аксиомам кольца.
1.2.3.	Алгоритм Евклида и его варианты
Элемент а кольца делит элемент Ь (это обозначается а\Ь), если в кольце найдется элемент q такой, что b = q х а. В кольце а|0 при любом а, а 0|а влечет а = 0. В кольце с единицей 1 |а также при любом а.
Если а 0, то в случае а\Ь упомянутый элемент q, b = q х а, единственный. Он называется частным от деления элемента Ъ на элемент а. Если же а = 0, то каждый элемент кольца может выступать в роли такого элемента q, и частное от деления элемента b на элемент 0 не определено. Пример 1.2.4. Многочлен д{Х) делит многочлен f(X), что обозначается g(X)\f(X), если существует многочлен q(X) такой, что f(X) = q(X) х д(Х), — результат операции деления многочлена f(X) на многочлен q(X).
1.2. Группы, кольца, поля
27
Можно определить отношение эквивалентности « на множестве элементов кольца: а & Ъ тогда и только тогда, когда a\b и b\a.
В обозначениях [а|~ классов эквивалентности по этому отношению в качестве представителя а класса указывают элемент, выбираемый по известному правилу. Такой представитель будем называть нормированным представителем класса.
Например, если R есть кольцо Z целых чисел, то классы содержат один или два элемента, из которых в качестве нормированного представителя принимается неотрицательный элемент. Классы кольца многочленов ^[Х] над полем Fq содержат q - 1 многочлен или единственный (нулевой) многочлен. В качестве представителя ненулевого класса принимается нормированный многочлен (см. с. 25).
Далее в этом разделе под R понимаются кольцо Z или кольцо FJX]. Использование общего обозначения позволит нам дать общее описание ряда алгоритмов. Если b Е [а|^, а 0, то (поскольку а\Ь и Ь\а) существует элемент дь, кольца R такой, что b — дь х а и а = дь~1 х 6 = а, где q^1 выполняет роль нормирующего множителя . Поэтому элемент b кольца R можно описать в виде _	_
(д&, Ь), где b = а.
Если элемент а нормирован, то qa = 1, а = а. В этом случае используется сокращенная запись (1, а) = а.
Для нуля примем описания (1, 0) = 0.
Пример 1.2.5. Для представления элементов кольца Z целых чисел нормирующий множитель q~Y имеет значение 1 или -1: наряду с положительным элементом а класс [а]~ Е Z~ содержит противоположный к нему элемент -а и других элементов не имеет. Элементы а и -а кольца Z представляются записями
(1,	<положительный элемент, представляющий класс>).
(-1,	< положительный элемент, представляющий класс >).
Нормирующий множитель в представлении элементов кольца многочленов Fq [X] над полем Fq выбирается из числа q -- 1 значений.
Опишем теперь операции кольца с использованием этих представлений элементов. Операция сложения:
(91, fli) + (g2, о2) = (q, а),
где а есть нормированный представитель класса, которому принадлежит дх х ах У- д2 х а2,
' дхх ах+ д2х а2
<	а
1
еСЛИ Qi X (Zi + ^2 х ^2 7^ 0, в остальных случаях.
Операция умножения:
<9ь Я|) х (g2, ai) =
( (91 х 92, 01 х о2), 1(1,0)
если ах х а2 О, в остальных случаях.
28
Глава 1. Введение
С целью унификации описаний алгоритмов на кольцах Z и FJX] будем использовать общее обозначение отношений |а| < \Ъ\ на кольце Z и dega(T) deg6(X) на кольце G'JX] (считая нулевой многочлен многочленом степени -1), элементы а(Х) колец FJX] будем обозначать упрощенно а. Будем обозначать а -< Ь, если а b и не верно, что Ь < а, то а -< Ь.
Наибольшим общим делителем НОД (ж, у) элементов а и b кольца R называется наибольший по отношению нормированный элемент е 6 R, такой, что е\а и е\Ь.
Замечание. В соответствии с этим определением НОД(0,0) не существует.
Пример 1.2.6. В кольце Z НОД(-6, -4) = 2.
Заметим, что элемент а кольца относительно элемента b, b < а, можно представить в виде
a = qxb + r, г = 0 или г^О и г а.	(1.6)
В таких представления элементов кольца Z будем дополнительно считать, что q и г неотрицательны.
В частности, такого рода представлением определяется операция деления с остатком — представление элемента а кольца относительно элемента b, b =4 0, в виде
a = qxb + r, r = Q или г^О и г -< Ь,	(1.7)
где г есть остаток от деления элемента а на элемент Ь. Его обозначают a mod b или геш(а, Ь):
а = q х b + a mod b = q х b + rem(a, b).
Возможен и другой выбор элемента q кольца в выражении (1.6) его можно взять так же как scJ, например, максимальной возможной при условии г а степени некоторого элемента с кольца. Для кольца многочленов можно взять элемент с — X и j = deg f(X) - deg g(X), а для кольца Z можно принять с = 2 и число j как разность максимальных номеров единичных позиций в бинарных представлениях чисел а и Ь.
В каждом частном случае элемент г в выражении (1.6) получается как значение г (а, Ь), определенной для частного случая функции г(х, у).
Теперь можно представить унифицированное описание алгоритма Евклида вычисления НОД(а, Ь) элементов а и b кольца R — алгоритм 1.2.5 на рис. 1.5.
Замечание. Далее в описаниях алгоритмов для упрощения обозначений мы полагаем, что элементы кольца, к которым эти алгоритмы применяются, нормированы.
Утверждение 1.2.1. Алгоритм 1.2.5 вычисляет НОД(а,Ь) элементов а и b кольца R.
1.2. Группы, кольца, поля
29
Алгоритм 1.2.5
ВХОД: Элементы а и b кольца R, а £ 0 или Ъ Ф 0. ВЫХОД: е = НОД(а, &).
1.	и <- a, v Ь.
Если а = 0 то и v, v <г- 0.
2.	Пока v 0
2.1.	Если r(u, v) — и, то и «н v.
2.2.	г	r(u, v).
2.3.	и	v, v г.
3.	е и.
4.	Если е Ф 0, то вернуть е.
Рис. 1.5. Алгоритм Евклида вычисления НОД(а, Ь) элементов а и b кольца R
Доказательство. Заметим, что при a = b = 0 алгоритм возвращает «НОД(а, Ъ) не существует.» При b = 0, а 0 алгоритм возвращает е = a = НОД(а, Ь), при a = 0, Ъ 0 имеем r(a,b) = r(u,v) = и = a = 0, и алгоритм возвращает v = b = НОД(а, Ь). Рассматривая случай а 0, b 0, будем обозначать u^,v^ и , i = 1,2,..., значения переменных и, b и г по окончании г-ой итерации п. 2. Индукцией по числу итераций п. 2 алгоритма покажем, что для всех i выполняется равенство НОДО^Ы0) = НОД(и<°), гЯ), где и^, исходные значения а и Ь.
Очевидно, что, если v и, то НОД(t/1), v^) = НОД(?/0), Н1)) = НОД(?/°\	^0> +Н1)) = НОД(г/°\ и^) ~ НОД(г?°\ v^), иначе (при
и V,) НОД^1*, гАД = нод(и*°\ И')) = НОД(и*°>,	+ г*1)) =
НОД(и<°>,<Я)7)-
Если предположим, что НОД(и^,и^) = НОД(г/°\ v^), то тем же приемом получим доказательство индуктивного шага.	
Пример 1.2.7. Применим алгоритм 1.2.5 к числам a =115 и b = 25. Вычисления представлены в табл. 1.1, где столбцы соответствуют последовательным шагам алгоритма (нормирующие множители опущены. В этом примере г = геш(а, Ь).
Заметим, что для любых не равных 0 одновременно элементов а, Ь из R~ существует пара (с, d) элементов этого множества такая, что имеет место линейное представление НОД(а, Ь)
а*с + Ь*д = }ЮД(а,Ь).	(1.8)
Вычислить коэффициенты с и d этого представления можно по расширенному алгоритму Евклида — алгоритму 1.2.6 на рис. 1.6 или 1.2.7 на рис. 1.7.
7) Здесь и ниже в случае, когда выполняется отношение Ь\а и b У=- 0, используется операция деления div(o, fr) = а/Ь.
30
Глава 1. Введение
Таблица 1.1
Пример применения алгоритма Евклида. НОД(а, Ъ) = НОД(115,25) = w(4)
i		^(0	г(0
0	115	25	15
1	25	15	10
2	15	10	5
3	10	5	0
4	5	0	
Алгоритм 1.2.6
ВХОД: элементы а и b кольца R, а / 0 или Ъ 0.
ВЫХОД: е = НОД(а, Ь) и элементы end такие, что ас + bd = е.
1.	u <- a, v Ь.
Если а — 0 то и 4- v, v 0.
Если u -< v, то с2	0, q 4- 1, d2	1, d{	0.
иначе с2 1, с{	0, d2 0, d{	1.
2.
2.1.	г rem(u, v), q (u - r)/v;
с с2 - q х q;
di— d2 ~ q X d\.
2.2.	и <- v, v <- r;
c2 Ci, Ci <- c;
d2 — d\, d{ — d.
3.	c <- c2, d d2, e и и вернуть (e, c, d).
Рис. 1.6. Расширенный алгоритм Евклида. Если заранее известно, что е — 1, то условие цикла 2 следует заменить более простым условием «Пока и / 1»
Утверждение 1.2.2. Алгоритм 1.2.6, вычисляет е = НОД(а, Ъ) и элементы cud, удовлетворяющие тождеству (1.8).
Доказательство. При a = b = 0 алгоритм возвращает «НОД(а, Ь) не существует». При а 0, b = 0, (е, с, d) = (а, 1,0), т. е. ас + bd = а = е = НОД(а, Ь). При а = 0, b 0, (е, с, d) = (b, 0, 1), т. е. ас 4- bd = b = е = НОД(а,&).
Рассматривая случай а 0, b 0, заметим, что переменные и^, и в каждой итерации вычисляются в соответствии с алгоритмом 1.2.5, причем = a, - b. Таким образом, при всех i выполняются ра-
1.2. Группы, кольца, поля
31
Алгоритм 1.2.7
ВХОД: элементы а и b кольца R, а ф 0 или b 0.
ВЫХОД: е — НОД(а, Ь) и элементы с и d такие, что ас + bd = е.
1.	и ч- a, v Ь.
Если а = 0 то и v, v ч- 0.
Если и -< v, то с2 ч- 0, Ci 1, d2 1, di 4- 0. иначе с2 ч— 1, Ci ч— 0, d2 ч- 0, d{ 4- 1.
2.	Пока v 0
2.1.	Если и -< v, то и чэ v, Ci о с2, d{ чэ d2,
2.2.	q ч— pdeg u-deg v, г ч— (u - s • v • q), [только в кольце Z: если г < 0, то г «- г 4- v]. Здесь р есть основание системы счисления или многочлен х, s — старший разряд числа и или старший коэффициент многочлена и.
с ч— с2 - q х ci;
di— d2 — q x d\.
2.3.	и ч— v, v ч— r,
c2 Ci 4- c;
d2 i— di, d\ i— d.
3.	Если a -4 b, то c2 чэ d2,
4.	c c2, d d2, e ч- и и вернуть (e, c, d).
Рис. 1.7. Расширенный алгоритм Евклида. Если заранее известно, что е = 1, то условие цикла 2 следует заменить более простым условием «Пока и / 1»
венства НОД(п^\ v^) =НОД(г/°\ s/°)) = ЕЮД(а, Ь). Осталось доказать, что значения и сЬ по окончании последней итерации п. 2.2 таковы, что и^С2 + v<0M2=HOfl(t/0\ v^). Для этого индукцией по числу итераций покажем, что при любом i
?у(°)г(0 1 ?/о)УО _ ?,й) а j и — а
Базис индукции очевиден: если v < и, то
„(0)0) + 7,<о><7(1> - ?/°Ы0) 4- Л(0) - w<0) х 0 4- «(0) х 1 - «(0) - и(1)
(JL 1^2 । U U2 — Uf	— CL /х v U	1 — U — CL 9
иначе (при и v)
и(0) (1) ,	(0)41) _ (0) (0)	(0)40) _ (0) _ (1)
CL ^2 v U/2	— CL Uj U CL |	— CL — CL
Допустим, что	. Тогда при
n(<))4,+1,+v(0)4!+1) =и^+»^=
==и<0*(4г-1)-4!-1)4’4+«(044,'’1)-4г’1)4’1))=
32
Глава 1. Введение
= U(!'-1>-^-‘)(u(0)cW+r(0)d(«)) =
= u(i-O_^-DuW=r(*-O = u(*+i).
Если же u -< v, то
W(<V+') +	- ,,(0)r<’) + ,,«•)/) - и(0 - „(’+>)	
cl c>2	v (^2	— tt C2 (/	C&2 — и* — cl •	И1
Пример 1.2.8. Применим алгоритм 1.2.6 к числам 6 и 5. Вычисления представлены в табл. 1.2. Здесь г = rem (а, Ь). Получили, е = 1, т. е. НОД(5, 6) = 1. При этом са + db — 1 • 6 + (-1) • 5 = 1.
Таблица 1.2
Пример применения расширенного алгоритма Евклида.
Элементы в представлении 1.8 суть:
НОД(а, Ь) = НОД(6, 5) = uf = 1, с =	= 1, d = d^ = -1
i	и'г''	^(0	дО	г(0	4!)			4’
0	6	5			1	0	0	I
1	5	1	1	1	0	1	1	-1
2	1	0	0	5	1	-5	-1	6
Кольцо вычетов по данному модулю. Рассмотрим еще одно отношение на кольце. Отношение эквивалентности = (modm) на кольце R,
а ~ &(mod т) =def т\(а - Ь),
называется отношением конгруэнтности(сравнением) по модулю элемента т Е R. Здесь т — общее обозначение элемента кольца Z и элемента (многочлена) т(Х) некоторого кольца FjX]. При т — 0 введенное отношение является отношением равенства. Классы эквивалентности [a]=mOdm называются классами конгруэнтности (иногда их называют для краткости вычетами) по модулю т. Сокращенно они обозначаются [а]ш. Фактормножество кольца R по отношению конгруэнтности по модулю элемента т будем обозначать R/m или, в некоторых случаях, Rm. Очевидно, что оно также является кольцом. Множество классов конгруэнтности по модулю т называется кольцом вычетов по модулю т.
Примером является рассмотренное в разд. 1.2.1 отношение конгруэнтности по модулю т на кольце Z и кольцо вычетов Zm.
8) Отношение эквивалентности = на кольце R называется отношением конгруэнтности на нем, если оно сохраняет операции кольца, т. е. на множестве классов эквивалентности операции умножения и сложения таковы, что выполняются тождества
[а]= х [&]= = [а х д]=,	[а]= + [&]Е = [а + &]=.
1.2. Группы, кольца, поля
33
Пример 1.2.9. На множестве F[X] можно определить отношение конгруэнтности
/,(Х) = Л(Х)(тос1?(Х))
разбивающее кольцо F[T] на классы конгруэнтности [c(X)]=mod по модулю многочлена д(Х). f(X) modg(X) — с(Х), если f(X) е [c(X)]=modд(Х). Множество классов конгруэнтности с операциями, соответствующими операциям сложения и умножения по модулю д(Х) их представителей, образуют кольцо F[X]/g(X) многочленов по модулю многочлена д(Х).
Упражнение 1.2.17. Покажите, что описанное отношение = modm является отношением конгруэнтности на кольце R и что классы конгруэнтности образуют кольцо с единицей [1]ш и операциями
[®]тп X [^]т [fl X Ь]т, [о]ш [^]т [fl &]w
Таким образом, если с € [а]ш, то а = c(mod т).
Элемент а' называется обратным по модулю т элементом по отношению к элементу а, если [a']w[a]m = [1]ш, т. е. а'а н 1 (mod m).
Ненулевые элементы [а]ш кольца Rm, имеющие обратные к ним элементы [а]-1 (такие, что НОД([а]ш, [а]™1) = [1]ш), образуют мультипликативную группу R™ (множество элементов из Rm, взаимно простых с т).
Упражнение 1.2.18. Докажите это.
Эта группа совпадает с множеством ненулевых элементов тогда и только тогда, когда пг (т(Х) в кольце FJX]) не имеет нормированных делителей, отличных от него самого или 1. Тогда элемент т называется неприводимым (или простым) и кольцо Rm является полем.
Упражнение 1.2.19. Докажите это.
Далее классы [а]ш для краткости мы обозначаем просто их представителями а, если значение т ясно из контекста.
Пример 1.2.10. Множество {0, 1,2, 3,4} с операциями сложения и умножения по модулю 5 является кольцом, множество {1, 2, 3, 4} ненулевых элементов которого с операцией умножения по модулю 5 образует мультипликативную группу. Множество {0, 1,2, 3, 4, 5} с операциями сложения и умножения по модулю 6 является кольцом, но множество {1, 2, 3, 4, 5} его ненулевых элементов не является мультипликативной группой: элемент 2x3 modm = 0.
Если посредством расширенного алгоритма Евклида, применительно к паре элементов а и b кольца R, получается е = 1, т. е. НОД(а, b) = 1, то согласно выражению (1.8) элемент с является обратным по модулю b к элементу а, а элемент d является обратным по модулю а к элементу Ь.
Пример 1.2.11. Элемент 5 кольца Z является обратным к самому себе по модулю 6. Действительно, в примере 1.2.8 получили, что е = 1, следовательно элемент d = -1 mod т =5 является обратным к 5 по модулю 6. Применяя этот же алгоритм к числам 6 и 4, получим е = 2, что свидетельствует об отсутствии элемента, обратного к 4 по модулю 6, и элемента, обратного к 6 по модулю 4.
34
Глава 1. Введение
Алгоритм 1.2.8
	ВХОД: элемент b кольца Rm, модуль m, b -< т. ВЫХОД: е = НОД(т,Ь). и элемент d такой, что db = e(mod m). 1.	</2	0, di 1, и т, v Ь. 2.	Пока v 0 2.2.	г rem (и, v), q (и — r)/v, d = dz — q х d[. 2.3.	и <- v, v r, d2 <— d\, d\ — d, 3. e a, d dz и вернуть (e, d).
Рис. 1.8. Алгоритм Евклида для вычисления обратного элемента по модулю т. Применяются операции кольца R. Если е 1, то обратный элемент не существует. Если заранее известно, что НОД(а, b) = 1, то условие цикла 2 следует заменить более простым (пока и 1) и возвращать d
Элемент a-1 modm, обратный к заданному элементу а группы R*n (если он существует) можно вычислить по расширенному алгоритму Евклида, применяя его к элементам а и т. Тогда операции в линейном представлении (1.8) можно рассматривать как операции в кольце Rm, в связи с чем оно принимает более простую форму
ac = e(modm).	(1.9)
Если е — 1, то с = а~х modm, иначе обратный к элементу а по модулю т элемент не существует.
Но в этом случае не используются значения с, С\ и с, т. е. для инвертирования в кольце можно применить более простую форму расширенного алгоритма Евклида — алгоритм Евклида, представленный на рис. 1.8 (алгоритм 1.2.8) или алгоритм 1.2.9 на рис. 1.9.
Рассмотрим еще один вариант алгоритма Евклида — расширенный бинарный алгоритм Евклида [45] — алгоритм 1.2.10 на рис. 1.10.
Он применяется к паре неотрицательных элементов кольца Z, в этом случае принимается р = 2 и операции выполняются в этом кольце, либо он применяется к паре многочленов кольца ^[Х], тогда принимается р = X и операции выполняются в кольце полиномов. В каждом случае элементы колец представляются бинарными векторами (а0,	, ап)
коэффициентов полиномиального представления
п
а = 52 а^Р1
2=0
элемента кольца.
1.2. Группы, кольца, поля
35
Алгоритм 1.2.9
ВХОД: элемент b кольца Rm, модуль т, b -< т.
ВЫХОД: е = НОД(т, Ь).
и элемент d такой, что db = e(mod т).
1.	d2 <— 0, d[ i— 1, и <— тп, v — Ъ.
2.	Пока v О
2.1.	Если и -< v, то и о v, d2 о d{.
2.2.	q pdeg u"deg v, r (u - s • v • q), [только для кольца Z: если г < 0, то г г + v]. Здесь р есть основание системы счисления или многочлен х, s — старший разряд числа и или старший коэффициент многочлена и, d — d2 — q х d\.
2.3.	и v, v г, d2 <— d[, d\ i— d, 3. e a, d 4- d2 и вернуть (e, d).
Рис. 1.9. Алгоритм Евклида для вычисления обратного элемента по модулю т. Применяются операции кольца R. Если е / 1, то обратный элемент не существует. Если заранее известно, что НОД(а, b) = 1, то условие цикла 2 следует заменить более простым (Пока и 1) и возвращать d
Алгоритм 1.2.10
ВХОД: элементы anb кольца R, а 0 или Ъ / 0.
ВЫХОД: е = НОД(а, Ь) и элементы с и d такие, что ас + bd — е.
1.	р -н 1.
2.	Пока щ = Vq = 0: а а/p, b b/р, д рд.
3.	и i— a, v i— b, с2 i— 1, Cj — 0, d2 — 0, d\ — 1.
4.	Пока и ф 0 и Uq = 0:
и и/р.
Если с2о = d2() = 0, то с2 с2/р, d2 d2/p, иначе с2 (с2 4- b)/p, d2 (d2 - а)/р.
5.	Пока v Ф 0 и Vq = 0:
v <- v/p.
Если cio = dlo = 0, то С[ Cj/p, di d\/p, иначе Ci <- (ct + b)/p, dl (di - a)Ip.
6.	Если и -< v, то v (v - и), Ci C[ - c2, di di - d2, иначе и (и - v), c2 <- c2 - cb d2 d2 - di.
7.	Если и 0, то перейти к шагу 4, иначе с сх, d di, е gv и вернуть (е, с, d).
Рис. 1.10. Расширенный бинарный алгоритм Евклида
36
Глава 1. Введение
Таблица 1.3
Деление посредством алгоритма 1.2.8. Получено = 4 = 3/5 mod 7
i	u(i)	1/6)		r(0	4’		e
0	0	3			0	5	
1	3	1	2	1	5	4	
2	1	0	3	0	4	0	1
В разд. 4.5.5 на с. 190 рассмотрен еще один способ инвертирования на основе вычисления наибольшего общего делителя — так называемый почти инверсный алгоритм.
Пусть элемент а имеет обратный по модулю т элемент (Гл mod т. Тогда деление элемента с кольца Rm на элемент а можно выполнить путем его умножения на a”1 mod т. Действительно, с/а — са~х mod т.
Удивительно, но только в 2000 г. одновременно несколькими авторами (например, [166]) было замечено, что с помощью алгоритма Евклида можно сразу выполнять деление, не разлагая процесс на этапы инвертирования и умножения. Действительно, если мы хотим вычислить s/t mod m, например, в начале работы алгоритма 1.2.8 на первом шаге полагаем а = 0 b = s и di = t (вместо d\ = 1). Тогда вычисляемые (в кольце Rm) во время его работы элементы d^\ d^\	, после любого шага алгоритма
удовлетворяют соотношениям d^t = u^s mod m, d^m = 0 mod m. Останавливая этот вариант алгоритма, как обычно, когда = 1, (после Л;-ой итерации) получаем, что c^t = u^s = s(mod m), откуда — s/t mod m. Пример 1.2.12. Вычислим частное 3/5 в кольце Z7 (см. табл. 1.3).
Пример 1.2.13. В кольце многочленов представление (1.6) многочлена f(X) относительно многочлена g(X),g(X)	f(X), приобретает вид
f(X) = q(X)g(X)+r(X), r(X) = 0 или г(Х) 0 и r(X) -< f(X). (1.10)
В частности, в кольце многочленов определена операция деления с остатком’. представление многочлена f(X) многочлена д(Х),д(Х)	0, в виде
f(X) = q(X)g(X) + r(X), r(X) = 0 или r(X) 0 и г(Х) -< д(Х), (1.11) где г(Х) есть остаток от деления многочлена f(X) на многочлен д(Х)). Его обозначают /(X)mod^(X) или геш(/(2Г),д(Х)).
В другом случае элемент q(X) кольца в выражении (1.10) можно взять как sX\ s 6 GF(q), например, равным максимальной возможной при условии r(X) -< f(X) степени X. Показатель этой степени можно получить как j = deg/(X) - deg^(X).
В соответствии с тождеством (1.8) имеет место линейной представление наибольшего общего делителя двух элементов кольца:
е(Х) = с(Х) х f(X) 4- d(X) х д(Х).	(1.12)
1.2. Группы, кольца, поля
37
Таблица 1.4
Применение алгоритма 1.2.7 для вычисления представления (1.12) многочленов a(X) = 14-X24-XS и Ь(Х) = 14-Х4-Х4 над <7Г[2]. Здесь q(X) =	Ь(Х).
Многочлены в представлении (1.12) суть е(Х) = а(Х)^ = 1. с(Х) = c2(X)(s) = X + Х24-Х3, d(X) = J2(X)(S) = 1 + X1 4-Х3 + Х4
i	а(Х)ы			г(Х)(,)	с2(Х)«	С100(,)		d,(X)(1)
0	101001	11001			1	0	0	1
1	11001	11	01	И	0	1	1	01
2	11	1101	0001	1101	1	0001	01	10001
3	1101	и	001	111	0001	1	10001	01
3’	11	111			1	ООП	01	10011
4	111	11	01	1	ООН	1	10011	01
4’	11	1	01	1	1	0111	01	10111
5	1	1	01	1	0111	10111	10111	000111
Для вычисления многочленов е(Х), с(Х) и d(X), удовлетворяющих соотношению (1.12), можно использовать алгоритм 1.2 6 или 1.2.7.
Вычислим по алгоритму 1.2.7 представление (1.12) для многочленов 14-Х2 4-Х5 и 14-Х 4-Х4 над GF[2]. Вычисления представлены в табл. 1.4 (ввиду того, что любой элемент кольца GF(2)[X] совпадает с противоположным к нему элементом, в данном случае при вычислениях обозначения знаков элементов не используются).
Полученный многочлен X 4- X2 + X3 является обратным по модулю многочлена 1 4- X 4- X4 к многочлену 1 4- X2 4- Xs, а многочлен 1 + X2 4- X3 4- X4 является обратным по модулю многочлена 1 4- X2 4- Xs к многочлену 1 4- X + X4 в кольце <9Г(2)[Х]. Действительно, можно проверить, что
(1 4- X2 4- XS)(X 4- X2 + X3) + (1 4- X2 4- X3 + Х4)(1 + X 4- X4) = 1.
Если операции в тождестве (1.12) рассматривать как операции в кольце многочленов по модулю многочлена д(Х), то оно превратится в тождество
e(X) = C(X)/(X)(modp(X)),	(1.13)
и если е(Х) = 1, то с(Х) = /(X)-1 mod д(Х). Этот многочлен можно вычислить, применяя алгоритм 1.2.8 или 1.2.9 при s = 1. Вычисления можно свести в таблицу, подобную табл. 1.4, отличающуюся тем, что отсутствуют столбцы и с2. Если же вместо Ci = 1 использовать многочлен Л(Х), то по этому алгоритму получится многочлен
с(Х) - Д(Х)е(Х)//(Х) mod <?(Х).
Глава 2
Конечные поля и эллиптические кривые
...каждое простое число обязательно измеряет в любой прогрессии одну из степеней минус 1 и показатель этой степени будет делителем данного простого числа минус 1. Например, пусть дана прогрессия
1,2,	3,4, 5,6 и т.д.
3,9,27,81,243,729 и т.д.,
причем наверху расположены показатели. Возьмите, например, простое число 13. Оно измеряет третью степень минус 1, показатель которой 3 является делителем 12, которое на 1 меньше, чем число 13.
Письмо Пьера Ферма к Френиклю де Бесси, четверг, 18 октября 1640 г.
2.1.	Поля Галуа
Теория конечных полей является основой многих разделов всей современной криптографии, в том числе и криптографии эллиптических кривых. Конечные поля используются не только в криптографии, но и в теории кодирования. Благодаря этим своим сферам применения и широкому распространению цифровой техники теория конечных полей превратилось из чистейшей области математики (бывшей некогда предметом исследования Ферма, Эйлера, Лагранжа, Лежандра, Гаусса, Галуа и других выдающихся ученых) в едва ли не прикладной ее раздел. Более того, возможно, именно теория конечных полей в каком-то смысле служит основой самых распространенных в современном мире приложений математики, так как почти каждый человек, если и не посылал зашифрованные с помощью почтовых программ письма, то хотя бы держал в руках мобильный телефон, смотрел телевизор или слушал плеер.
Далее мы излагаем основы теории конечных полей по возможности самым элементарным образом, не используя общих теорем теории полей, не пользуясь даже теоремой о единственности разложения на неприводимые множители, формулой для числа неприводимых многочленов и теоремой об изоморфизме полей разложения.
2.1. Поля Галуа
39
Материал об алгоритмах построения неприводимых многочленов вынесен в гл. 3. Вопросы эффективной организации арифметики в конечных полях рассматриваются в гл. 4 и 5.
2.1.1.	Характеристика поля
Определение 2.1.1. Характеристикой поля называется наименьшее натуральное число т такое, что т * 1 =0, или число 0, если такого числа т не существует.
Иными словами, характеристика поля определяется как аддитивный порядок мультипликативной единицы поля.
Следующие факты вытекают из этого определения непосредственно.
Следствие 2.1.1. Если р — характеристика поля F, то для любого а Е F выполняется р * а = 0.
Следствие 2.1.2. Характеристика конечного поля — простое число.
Следствие 2.1.3. Если р — характеристика поля F, а т, п, к и I — целые числа, то
(1)	m*l=n*l <=> mEn(modp),
(2)	(m * 1) 4-(п * 1) = fc * 1 <=> т + п = fc(modp),
(3)	(m * 1) • (n * 1) = I * 1 m • n = Z(modp).
Следствие 2.1.4. Всякое конечное простое поле характеристики р изоморфно кольцу класс ив конгруэнтности кольца целых чисел по модулю р.
Следствие 2.1.5. Всякое конечное поле характеристики р содержит простое подполе из р элементов.
В любом поле результат операции деления элемента а на ненулевой элемент Ь определяется как элемент с — а • Ь~1.
Следующее утверждение позволяет существенно упрощать алгоритмы выполнения арифметических операций в конечных полях.
Теорема 2.1.1 (Тождества Фробениуса). Пусть Н — поле характеристики р; а,Ь 6 Н. Тогда для любого натурального к
(а + b)pk = арк + (а - bf = арк -	.
Если b 0, то
/ а\р ар
\ь) ~W'
Доказательство. При к = 1 все члены разложения (a + b)p по формуле бинома Ньютона, кроме первого ар и последнего ЪР, имеют множитель р и равны 0 по следствию 2.1.1. Индуктивный переход очевиден. Второе утверждение для нечетного р следует из первого
(а 4- (-&)/ - арк + (-&/ = арк -	,
40
Глава 2. Конечные поля и эллиптические кривые
а при р = 2 не отличается от первого. Свойство частного проверяется непосредственно по его определению:
/ \ рк	пк
(= (а X b'Y = apk X b~pk = ^.	
\bj v 7	ЪРк
Следствие 2.1.6. Возведение в степень рк многочлена над полем характеристики р можно осуществить возведением в степень отдельных членов'.
(ао 4- а>\Х 4-... 4- апХп)р = ар 4- (aiX)p -4 ... 4- (апХп)р .
Пример 2.1.1. При р = 2 получим (1 4- X2 4- X3)4 = 1 4- X* 4- X12.
Пусть f(X) есть многочлен над полем F, являющимся подполем поля Q. Элемент х Е Q такой, что f(x) = 0, называется корнем многочлена f(X) в поле Q.
Следствие 2.1.7. Пусть f(X) есть многочлен над полем F характеристики р и х есть корень этого многочлена в поле Q, F С Q, той же характеристики. Тогда при любом натуральном к элемент хр Е Q также является корнем этого многочлена.
Действительно, f(xpk) = f(x)pk = 0.
2.1.2.	Мультипликативная группа конечного поля
Порядок мультипликативной группы F* поля Fq равен q - 1. Порядок ord а ненулевого элемента а этого поля определяется как порядок этого же элемента его мультипликативной группы.
Теорема 2.1.2. Для ненулевого элемента а поля Fq = GF(q) справедливы следующие утверждения'.
(1)	(orda)|g- 1;
(2)	aq~x = 1;
(3)	а^-2 = а-1;
(4)	для любого натурального числа п и любого элемента а поля Fq справедливо тождество Ферма aqn~l = 1;
(5)	для любого натурального числа п и любого элемента а поля Fq справедливо тождество Ферма адП = а.
Доказательство. Утверждения (1), (2) и (3) непосредственно получаем из следствий 1.2.1, 1.2.2 и 1.2.4. Утверждение (4) вытекает из следствия 1.2.3, так как q - 1 делит число qn - 1; пункт (5) следует из пункта (4).  Теорема 2.1.3. Если a — ненулевой элемент порядка 8 поля Fq, п,т Е N, то ат = ап <==> т = п mod 8.
Доказательство. По следствию 1.2.3 am~n — 1 <=> <5|(т- п).	
2.1. Поля Галуа
41
Отсюда следует
Теорема 2.1.4. Если a — ненулевой элемент порядка 6 поля Fq, то элементы
l,a,a2,... ,as~r	(2.1)
поля Fq все различны.
Теорема 2.1.5. Если а — ненулевой элемент порядка 6 поля Fq, то элементы (2.1) поля Fq суть все корни многочлена Xs - 1.
Доказательство. При любом натуральном к, очевидно, (ak)d = (aJ)^ = l. Поэтому перечисленные элементы являются корнями многочлена. Других корней этот многочлен не имеет, так как число этих элементов равно степени многочлена и все они различны.	
Из теоремы 1.2.2 следует
Теорема 2.1.6. Если а - ненулевой элемент порядка S поля, то ord ак = 6/(6, к),
в частности, ord ак = 6 тогда и только тогда, когда (6, k) = 1.
Теорема 2.1.7. Если в поле Fq есть элементы порядка 6, то их количество равно ф(6).
Доказательство. По теореме 2.1.6 среди элементов (2.1) ровно р(6) имеют порядок 6.	
Лемма 2.1.1. Для функции Эйлера справедливо тождество
^2 = п-
J|n
Доказательство. Число всех правильных дробей со знаменателем п равно п, а число несократимых дробей со знаменателем 6 равно р(6). Так как каждая правильная дробь после сокращения превращается в несократимую, то число правильных дробей будет также равно
52^)-	
J|n
Теорема 2.1.8. Если 6 — натуральный делитель числа q- 1, то число элементов порядка 6 поля Fq равно р(6).
Доказательство. Обозначим ф(6) число элементов порядка 6 поля Fq. По утверждению (1) теоремы 2.1.2 имеем
52^-0) = 9-1- 	(2-2)
42
Глава 2. Конечные поля и эллиптические кривые
Используя лемму 2.1.1 (2.1.2) и принимая во внимание (2.2), имеем
= 0.	(2.3)
d|?-l
По теореме 2.1.7 для любого натурального д имеем ^(<5)	<р(<5), по-
этому из (2.3) следует ^>(J) = 92(d), если d\q - 1.
Следствие 2.1.8. Мультипликативная группа конечного поля Fq — циклическая.
Доказательство. По теореме 2.1.8 группа F* имеет <p(q - 1) образующих элементов.	
Определение 2.1.2. Образующий элемент циклической группы Fq называется примитивным элементом поля Fq и поле Fq содержит p{q - 1) примитивных элементов.
Элемент порядка к мультипликативной группы поля называют также примитивным корнем к-ой степени из 1. Так, примитивный элемент поля GF(q) есть примитивный корень g-1-ой степени из 1. Примитивный элемент простого поля GF(p) называют также примитивным элементом по модулю р.
2.1.3.	Конечное расширение поля
Определение 2.1.3. Пусть F — подполе поля Н. Минимальное поле, содержащее F и элемент 0 € Н, 0 £ F, называется простым расширением поля F и обозначается F(0).
Пример 2.1.2. Множество Н = {0, I}3 с операциями + и х, представленными в табл. 2.1 и 2.2 является полем Н.
Множество {000,001} с операциями, представленными в тех же таблицах жирным шрифтом, также является полем. Обозначим это поле F. Поле Н получается из поля F добавлением любого нового элемента 0 из {0, I}3, например 010, а затем последовательно и всех остальных элементов этого множества, поскольку каждый из них может быть получен из предыдущих с помощью операций поля Н. Множество {0, I}3 замкнуто относительно операций поля Н, таким образом, это поле является минимальным полем, содержащим элементы поля F и элемент 0. Вместо элемента (0,1,0) можно было выбрать любой другой отличный от (0,0,0) и (1,0,0) элемент из {0,1}3. Таким образом, Н = JF’(OIO) = F(011) - F(001) = F(101) - F(110) = F(lll) и H есть простое расширение поля F в поле Н. В данном случае Н есть поле 6?F(23), a F — поле GF(2). Поле Н содержит у?(23 - 1) = 6 примитивных элементов.
010, (010)2 = 001, (010)3 = 110, (0L0)4 = Oil, (010)5 = 111, (01,0)6 = 101, а поле GF(2) имеет р(2) = 1 примитивный элемент 1.
Определение 2.1.4. Многочлен над полем F называется неприводимым над данным полем F, если его нельзя представить в виде произведения многочленов меньшей степени над этим полем.
2.1. Поля Галуа
43
Таблица 2.1
4-	000	100	010	110	001	101	он	111
ООО	000	100	010	но	001	101	он	111
100	100	000	но	010	101	001	111	он
010	010	но	000	100	он	111	001	101
110	по	010	100	000	111	он	101	001
001	001	101	011	111	000	100	010	по
101	101	001	111	011	100	000	110	010
он	он	111	001	101	010	но	000	100
111	111	он	101	001	110	010	100	000
Таблица 2.2
X	000	100	010	по	001	101	011	111
000	000	000	000	000	000	000	000	000
100	000	100	010	по	001	101	он	111
010	000	010	001	он	110	100	111	101
по	000	по	011	101	111	001	100	010
001	000	001	но	111	011	010	101	100
101	000	101	100	001	010	111	но	он
он	000	он	111	100	101	по	010	001
111	000	111	101	010	100	011	001	но
Неприводимый многочлен над полем F, очевидно, не имеет корней в этом поле. Если х = 6 есть корень в поле Н, некоторого неприводимым многочлена / степени п над полем F, то простое расширение F(x) называется простым алгебраическим расширением, полученным путем присоединения к полю F корня х многочлена /. Если при этом многочлен f является неприводимым многочленом степени п, то расширение F(x) называется простым алгебраическим расширением поля F степени п.
Пример 2.1.3. Поле GF(22) можно получить присоединением к полю GF(2) корня х неприводимого многочлена 1+Х+Х2 и определив операцию умножения,
44
Глава 2. Конечные поля и эллиптические кривые
такую, что х2 = х 4- 1 следующим образом:
х • 1 = х, х 'X — х 4-1, х • (1 4- х) = 1,	(1 4- ж)(1 4- х) = х.
Заметим, что элемент х = 010 поля Н из предыдущего примера есть корень неприводимого многочлена f(X) — 1 4- X 4- X3 над полем F (можно проверить, что /(ж) = 1 4- х 4- х3 — ООО). Поле Н можно получить присоединением к полю F этого корня: Н = ^(010). Значит, Н есть простое алгебраическое расширение поля F степени 3.
Пример 2.1.4. Поле комплексных чисел есть простое алгебраическое расширение поля действительных чисел, получаемое присоединением корня i неприводимого многочлена X2 4- 1 над полем действительных чисел.
Определение 2.1.5. Пусть F — подполе поля Н. Поле Н называется конечным расширением поля F, если поле Н содержит элементы Л2, • • •, hk такие, что любой элемент h из Н линейно над полем F выражается через эти элементы, т. е. уравнение
h = hi • Xi 4-	• X2 4-... 4- hk • Xk
разрешимо в элементах Xi,... ,х^, принадлежащих полю F.
Определение 2.1.6. Если при этом решение единственно, то указанный набор элементов называется базисом поля Н относительно поля F, а число к элементов базиса называется степенью конечного расширения поля Н относительно поля F и обозначается k = [Н : F].
Из следующей теоремы вытекает, что число элементов в базисе не зависит от его выбора и понятие степени расширения корректно определено.
Определение 2.1.7. Элементы ., х^ называются координатами элемента h относительно рассматриваемого базиса.
Теорема 2.1.9. Порядок конечного поля является степенью порядка любого его подполя.
Доказательство. Сопоставим каждому элементу поля Н вектор его координат относительно произвольного базиса над подполем F. Согласно определению это сопоставление взаимно однозначно. Число различных векторов координат равно числу элементов поля F в степени к. 
Следствие 2.1.9. Пусть Н — конечное поле, содержащее подполе К, состоящее из q элементов. Тогда Н состоит из qm элементов, где т = [Н:К].
Пример 2.1.5. Поле К комплексных чисел является конечным расширением степени 2 поля R действительных чисел, [К : Я] = 2. Базисом поля комплексных чисел являются его элементы = (1, 0) = 1 + 0г и Л2 = (0, 1) = 0 4- 1г.
Пример 2.1.6. Поле CF(22) является конечным расширением поля GF(T) степени 2, значит \GF(22) : GF(2)] = 2. В качестве базиса GF(22) можно выбрать элементы = 1 и /г2 — х, где х — корень в поле CF(22) неприводимого многочлена f(X) = 1 4- X 4- X2 над полем GF(2). Базис составляют также элементы х и х2 — 1 4- х.
2.1. Поля Галуа
45
Упражнение 2.1.1. Доказать, что, если Н — конечное расширение поля W, а поле W — конечное расширение поля F, то Н — конечное расширение поля F, при этом [Н :F] = [H :W]-[W : F].
Пример 2.1.7. Поле GF(2) есть подполе поля GF(22). Поле G?F(2d) можно рассматривать как конечное расширение степени 2 поля GF(22), которое, в свою очередь, является конечным расширением степени 2 поля GF(2). При этом
[GF(24) : GF(2)] = GF(24) : GF[22] • [GF(22) : GF(2)].
Теорема 2.1.10. Пусть Fq — конечное поле u Fq(0) — его простое конечное расширение. Тогда Fq(0) является простым алгебраическим расширением поля Fq.
Доказательство. Пусть Fq(0) — подполе поля Н, 0 G Н. Рассмотрим максимальное множество линейно независимых над полем Fq элементов поля Fq(0)
,0п~'.	(2.4)
Элемент 0п линейно выражается через эти элементы:
0 = qq CL\O 4- 0/2.0 4- • • • 4~ a>n—[0	, o^ G F, i = 1,..., n — 1.
Поэтому элемент 0 есть корень в поле Н многочлена
/(X) = Хп - ап_\Хп~{ -...-(цХ-а0
над полем Fq. Ввиду того что выбрано максимальное количество линейно независимых элементов, построенный многочлен неприводим.	
Теорема 2.1.11. Любой элемент а простого алгебраического расширения F(0) степени п поля F однозначно представим в виде
OL — Oq 4" О\0 4- 020 + ... 4- Оп-\0П ,	(2-5)
где 0 корень в F(0) некоторого неприводимого многочлена степени п над полем F.
Доказательство. Предположение о неоднозначности приводит к тому, что неприводимый многочлен f степени п имеет общий корень с многочленом меньшей степени (т. е. многочлен, корень которого присоединен, не является неприводимым). Если элемент а принадлежит полю F(0), то он может быть представлен формулой, содержащей константы из множества F и корень 0 известного неприводимого многочлена степени п. Используя свойства операций поля, эту формулу можно привести к полиномиальному относительно 0 виду. Затем итерациями можно преобразовать полученный полином к полиному степени не более п - 1. Итерация применяется к полиному степени тп не ниже п и заключается в замене старшего ненулевого члена am0m равным ему (поскольку f(0) = 0) выражением am(0m~nf(0) + 0m). После приведения подобных членов получается многочлен меньшей степени. Множество F(0) выражений (2.5) замкнуто относительно операций сложения и умножения многочленов. 
46
Глава 2. Конечные поля и эллиптические кривые
Следствие 2.1.10. Если F — Fq, Н есть кольцо Fq[X]/(f(X)) многочленов по модулю многочлена (/(X)), 6 = x(mod /(X)), 0 6 Н, где многочлен f(X) неприводим над полем Fq, а х — его корень в поле Н, то расширение F(0) является простым алгебраическим расширением и совпадает с полем Н.
Следствие 2.1.11. Всякое простое алгебраическое расширение поля F степени п является конечным расширением поля F степени п.
Следствие 2.1.12. Множество (2.4) составляет базис поля F(0).
В качестве еще одного следствия получается
Теорема 2.1.12. Пусть Fq — конечное поле и f(X) — неприводимый многочлен степени п над этим полем. Тогда кольцо Fq[X]/(f(X)) многочленов по модулю многочлена f(X) является конечным полем порядка qn, в котором класс х вычетов (класс конгруэнтности), содержащий многочлен X, является корнем многочлена f(X). Это поле содержит в себе поле, изоморфное Fq, в качестве подполя.
Из этой теоремы и доказанного в следующем разделе существования неприводимых многочленов над полем Fq любой заданной степени вытекает существование полей порядка любой степени простого числа.
2.1.4.	Поле разложения многочлена
Очевидно, что любой многочлен над данным полем F неприводим или представим как произведение неприводимых многочленов.
Определение 2.1.8. Представление многочлена в виде произведения неприводимых многочленов называется разложением многочлена на неприводимые множители над полем F.
Напомним, что многочлен с единичным старшим коэффициентом называется нормированным. Если многочлен нормирован, то, очевидно, существует разложение на неприводимые нормированные множители. Справедлива теорема об однозначности разложения нормированных многочленов на неприводимые нормированные множители над произвольным полем, доказательство которой мы не приводим, так как постараемся ей не пользоваться.
Определение 2.1.9. Пусть F — поле, / — многочлен над полем F. Полем разложения многочлена/ над полем F называется минимальное расширение Н поля F, в котором f разлагается в произведение линейных над полем F многочленов.
Пример 2.1.8. Многочлен 14-Х4-X2 разлагается на линейные множители в поле СЕ(22):
1 + X + X2 = (X + х)(Х + (х 4- 1)) = 1 + X + Хх + Хх + X2, где х — корень многочлена в поле GF(22). В поле GF(2) подобное разложение не существует (указанный многочлен неприводим). Следовательно, GF(22) есть поле разложения многочлена 1 4- X 4- X2.
2.1. Поля Галуа
47
Теорема 2.1.13. Для всякого многочлена существует поле разложения.
Доказательство. Если многочлен f неприводим над полем F, то пользуясь теоремой 2.1.12, можно построить расширение Н поля F, в котором он будет разлагаться на неприводимые множители над полем Н. Если все эти множители линейные, то все доказано. В противном случае применяем к полю Н и одному из нелинейных неприводимых над ним многочленов проведенное выше рассуждение. Получим расширение поля Н, над которым многочлен f разлагается на большее число неприводимых множителей. Повторяя и далее это рассуждение, получим поле, в котором он разлагается на линейные множители. Случай, когда многочлен f приводим, сводится к уже рассмотренному.	
Теорема 2.1.14. Для любого простого числа р и любого натурального числа п существует поле порядка рп и таким полем является поле разложения Н многочлена Xq - X, q = рп над полем Fp. Характеристика этого поля есть число р.
Доказательство. Рассмотрим поле разложения многочлена f(X) = Xq-X. Легко проверить, что по теореме 2.1.1 сумма и произведение корней многочлена f(X) — Xq - X являются корнями этого же многочлена. Корнями являются, в частности, 0 и 1, при этом р * 1 = 0, (р - 1) * 1 = -1. Каждому корню 0 соответствует противоположный элемент (р - 1) * 0, также являющийся корнем указанного многочлена. Аналогично, обратный элемент 0-1 также является его корнем. Таким образом, множество корней многочлена f(X) ecib подполе поля Н. Заметим, что производная f'(X) этого многочлена
/(X) = q*XQ~' — 1 = — 1	о.
Поэтому многочлен и его производная взаимно просты, откуда следует, что все корни многочлена f(X) различны, т. е. подполе корней многочлена совпадает с полем Н. Значит, это поле совпадает с полем разложения многочлена Xq - X.	
Из теоремы 2.1.14 вытекает
Следствие 2.1.13. Если F — конечное поле порядка q, mo каждый элемент а Е F удовлетворяет равенству aq = а. Если элемент а некоторого поля удовлетворяет равенству aq = а, то он принадлежит его подполю порядка q. Пример 2.1.9. Многочлен X + X22 разлагается на линейные множители в поле GF(22):
X + X4 = (0 + Х)(1 + Х)(0 + Х)((1 + 0) + X).
Производная многочлена /(X) = а0 + а1Х И- о^Х2 + • • • + определяется равенством /'(X) = Д| +2*й2Х + . . . + п*апХп~1  Можно проверить, что справедливы тождества (/ + g)' = f' + д1 (fg)1 = f'g + g'f- Поэтому, если f = g2h, то f = 2*g'gh + h'g2, значит (/, /') делится на д.
48
Глава 2. Конечные поля и эллиптические кривые
(В поле характеристики два минус и плюс взаимозаменяемы.) Видим, что его корнями в поле 6rF(22) являются 0, 1,0 и 1+0 (х = 6 — корень в GF(22) неприводимого многочлена 1 + X + X2 над полем GF(2)). Элементы 0,1,0 и 1 4- 0 являются корнями уравнения X4 = X.
2.1.5.	Минимальные многочлены.
Существование неприводимых многочленов
По следствию 2.1.13 каждый элемент 0 поля Н порядка q, являющегося конечным расширением поля F, есть корень многочлена /(X) = Xq - X над полем F.
Определение 2.1.10. Если рассмотреть разложение этого многочлена на неприводимые над полем F множители, можно увидеть, что элемент 0 является корнем точно одного из таких множителей Мд, который называется минимальным многочленом элемента 0.
Теорема 2.1.15. Минимальный многочлен элемента 0 Е F совпадает с многочленом минимальной степени над F, имеющим корень 0. Любой многочлен над F, имеющий корень 0, делится на минимальный многочлен.
Доказательство. Если бы такой делимости нацело не было, то при делении получался бы остаток, который также бы имел корень 0, и был бы меньшей степени, чем минимальный многочлен, что невозможно. Многочлен минимальной степени, корнем которого является 0, неприводим, так как иначе один из его делителей будет также иметь корень 0, что невозможно, так как его степень меньше.	
Теорема 2.1.16. Минимальный многочлен над полем F любого примитивного элемента 0 расширения Н степени п этого поля является неприводимым многочленом степени п над полем F.
Доказательство. Так как степени 0 пробегают все ненулевые элементы поля Н, то Н = F(0). Поэтому степень минимального многочлена элемента 0 равна степени расширения Н = F(0), т. е. равна п. 
Следствие 2.1.14. Для любого п надполем GF(p) существует неприводимый многочлен степени п.
Доказательство. Существование примитивных элементов в любом конечном поле, как и существование полей порядка рп, было доказано выше. Поэтому из доказанной теоремы вытекает существование неприводимых многочленов любой заданной степени.	
Теорема 2.1.17. Любой неприводимый многочлен степени п надполем GF(p) делит Хр — X, и, как следствие, Хр —X при любом натуральном т.
Доказательство. Для неприводимого многочлена / в поле G(p)[X]/ (f (X)) существует некоторый корень 0. Тогда f минимальный многочлен этого элемента. Так как 0 является корнем многочлена ХрП -X, то f делит
2.1. Поля Галуа
49
ХрП — X. Из 0рП — 0 возведением в степень получаем, что
„2п	„п	„тп
ер =ер =0, ..., 0Р =0,
откуда следует, что / делит ХрПт - X.	
Обозначим 1р(п) число неприводимых над полем GF(p) нормированных многочленов степени п.
Следствие 2.1.15. Справедливо неравенство
52 dIp(d) рп-
d\n
Доказательство. Все неприводимые нормированные многочлены степеней d, делящих п, делят ХрП - X. Из сравнения степеней получаем нужное нам неравенство.	
Определение 2.1.11. Минимальный многочлен примитивного элемента поля порядка рп называется примитивным многочленом над полем GF(p). Далее нам понадобятся некоторые свойства так называемых круговых многочленов.
Теорема 2.1.18. Для любого поля F существует и однозначно определена последовательность нормированных многочленов fn(X) такая, что многочлен fn имеет степень р(п), многочлены попарно взаимно просты и
П Л(х) = Хп - 1. d\n
Доказательство. Очевидно,
(X2 - 1)	(Т3 - 1)	2
fi = X - 1, /2 =	7 = х +1, h= , ' = i + x + x2.
Л	л
Последовательность fn(X) можно определить по индукции равенством z \ (Хп- 1) их) = лот d\n,d<n
Доказывать удобнее более сильное утверждение, а именно, что fn будет делителем Хп - 1. Согласно предположению индукции при d\n многочлен fd делит Xd - 1, а значит и Хп - 1. Так как fa при d < п попарно взаимно просты, то произведение П fd(X) делит Хп - 1. Так как d\n, d<n
старшие коэффициенты у обоих многочленов равны 1, то fn тоже будет многочленом со старшим коэффициентом п степени
«- 52
d\n,d<n
очевидно, делящим Хп - 1.
50
Глава 2. Конечные поля и эллиптические кривые
Определение 2.1.12. Многочлены fn называются круговыми многочленами.
Теорема 2.1.19. Неприводимый многочлен f(X) степени п надполем GF(p) примитивен тогда и только тогда, когда для любого простого делителя d числа рп - 1 многочлен XW'-V/d
не сравним с 1 по модулю f(X).
Доказательство. Пусть /(X) любой минимальный многочлен над полем GF(p), имеющий в его расширении Н той же степени п корнем примитивный элемент 0. В силу тождества f(X)p = f(Xp) его корнями также будут примитивные элементы 0Р , k = 1,... ,п - 1, и так как его степень равна п, то других корней у него не будет. Примитивность указанных элементов следует из взаимной простоты q - 1 = рп - 1 и рк и теоремы о порождающих элементах циклической группы. Так как примитивных элементов в поле Н ровно p(q - 1), а разные примитивные многочлены попарно взаимно просты и поэтому не имеют общих корней, то число примитивных многочленов для данного поля Н равно <р(д- 1)/п.
Так как 0q - 0 = 0, и 0d - 1	0 при d < q - 1 и делящем q - 1, то
многочлен /(X) делит Xq - X и не делит Xd - 1, а значит и круговой многочлен fd. Из равенства
ф-1
и неприводимости f тогда следует, что f делит Разлагая на неприводимые нормированные множители и сравнивая степени, получаем что число примитивных многочленов над всеми полями порядка рп не больше p(q — 1)/п. В силу доказанного выше число примитивных многочленов в точности равно ip(q - 1)/п, их произведение равно круговому многочлену fq-i, каждый из них в любом поле порядка рп имеет ровно п корней, которые являются примитивными элементами этого поля, и каждый примитивный многочлен не делит ни один из многочленов Xd - 1, где d\q - 1, d < q- 1. Обратно, если неприводимый многочлен /(X) не делит X^q~x^d - 1 ни при каком простом d, то он не делит ни один из многочленов Xd - 1, d\q - 1, d < q - 1. Так как f делит
Xя - х = П их),
то он должен делить круговой многочлен fq_\. Выше было показано, что все неприводимые делители многочлен fq_x являются примитивными многочленами. Тем самым доказана теорема и следующее следствие.  Следствие 2.1.16. Число примитивных многочленов равно p(q — 1)/п, их произведение равно круговому многочлену fq_\, и каждый из них в любом поле порядка рп имеет ровно п корней, которые являются примитивными элементами этого поля.
Следствие 2.1.17. Поля равного порядка изоморфны друг другу.
2.1. Поля Галуа
51
Доказательство. Пусть Н и Н' — поля порядка рп и f — примитивный многочлен степени п над их общим подполем GF(p). Пусть 0 Е Н и О1 Е Н' — корни этого многочлена в этих полях. Тогда эти поля можно рассматривать как алгебраические расширения GF(p)(0) и GF(p)(0'), каждое из которых изоморфно полю GF(p)[X]/(f(X)).
Далее любое конечное поле порядка q можно обозначать стандартным образом GF{q), так как все они изоморфны, но иногда будут использоваться и разнообразные временные обозначения.	
Определение 2.1.13. Элементы расширения Fq поля Fp, имеющие один и тот же минимальный многочлен, называются сопряженными относительно поля Fp элементами.
Пример 2.1.10. Многочлен X + X4 разлагается над полем GFQ) на неприводимые многочлены следующим образом: X4 + X = А7(14-А7)(1 + X 4- X2). Многочлен X является минимальным многочленом элемента 0 поля GJF(24), многочлен 1+Х есть минимальный многочлен элемента 1 поля GF(24), многочлен 1 + X + X1 — минимальный многочлен элементов 0 и 1 + 0 поля G?F(22). Поскольку последние два элемента являются примитивными элементами поля GF(22), то их минимальный многочлен 1 + X + X2 является примитивным многочленом степени 2 над полем GF(2). Элементы 0 и (1 + 0) являются сопряженными корнями этого многочлена и тем самым — сопряженными относительно поля GF(2) элементами.
Пример 2.1.11. Укажем минимальные многочлены элементов поля GF(24).
Таблица 2.3
Элементы поля	Минимальный многочлен
0	X
1	Х+ 1
2	4	8 а, а , а , а	1 + X + X4
— а14, а~2 = а13, а-4 = а11, а-8 — а7	1 + X3 + X4
а3, а6, ап, а24 = а9	i + x + х2 + х3 + х4
а\аю	1+Х + х2
Теорема 2.1.20. Степень минимального многочлена над полем GF(p) любого элемента поля порядка рп делит п. Число сопряженных элементов равно степени минимального многочлена для этих элементов. Любой неприводимый многочлен над полем GF(p) степени, делящей п, разлагается в поле порядка рп на линейные множители. Поле порядка рп является полем разложения любого неприводимого многочлена степени п над полем GF(p).
52
Глава 2. Конечные поля и эллиптические кривые
Доказательство. Обозначим через С(0) множество всех сопряженных с 0 элементов поля Н порядка рп. По определению С(0) есть множество всех корней в этом поле у минимального многочлена М(0). Степень этого многочлена равна степени подполя Fp(0), которая, согласно теореме 2.1.9, делит п. Так как различные минимальные многочлены неприводимы, то они не могут иметь общих корней ни в одном поле, значит поле Н можно представить в виде объединения попарно непересекающихся подмножеств С(0) сопряженных элементов. Складывая мощности этих множеств и пользуясь тем, что для любого 0
|С(<9)| ^degM(0) = dn, получаем, учитывая следствие 2.1.15, неравенство
РП ^^dlp(d) ^рп,
из которого следуют все оставшиеся утверждения теоремы, а также  Следствие 2.1.18. Справедливо равенство
Y,dlp(d) = pn.
d\n
Следствие 2.1.19. Справедливы при п > 8 неравенства
~ С 1р\П) С
2п	п
и при любом п 1р(п) > 0.
Доказательство. Из следствия 2.1.18 вытекает, что
рп У7 dlp(d) nlp(n) < рп,
d^n/2
откуда, суммируя геометрическую прогрессию, имеем при п > 4
nlp(n) > рп - ^pn/2+l > О,
так как рп/2-1 > п/2. При п < 3 неравенство 1р(п) > 0 очевидно. Так как при п > 8 рп/2~} п, то nlp(n) рп/2. Из следствия 2.1.19 еще раз вытекает следствие 2.1.14.	
Следствие 2.1.20. Пусть f(X) — неприводимый многочлен степени т над полем GF(p). Тогда f(X) делит многочлен ХрП - X в том и только том случае, когда число тп делит п.
Доказательство. Из выше доказанного следует, что разложение на неприводимые множители многочлена Хр" - X состоит из всех неприводимых многочленов, степени которых делят п.	
2.1. Поля Галуа
53
Следствие 2.1.21. Многочлен f(X) степени п над полем GF(p) неприводим тогда и только тогда, когда он делит многочлен ХрП -Хи взаимно прост с многочленами Xp"ld — X, где d — простые делители п.
Доказательство. Если многочлен f(X) неприводим, то согласно предыдущему следствию он делит ХрП - X и взаимно прост с многочленами Xpnld — X, так как их простые делители имеют степени не больше n/d. Обратно, если f(X) делит ХрП - X и приводим, то он разлагается на неприводимые множители, степени которых делят п, поэтому он не будет взаимно прост с некоторым многочленом Xpnld - X.	
Из доказанных утверждений можно еще раз вывести следствие 2.1.17. Пример 2.1.12. Делителями многочлена X22 - X являются многочлены X, 1 + Х, Х + Х2, 1 + Х + Х2.
Гаусс получил явную формулу для числа нормированных неприводимых многочленов
4(п) = ~ ^2 P(nld)Pnl<1’
d\n
где р есть функция Мёбиуса,
' 1,	если п = 1,
если п делится на квадрат простого числа, если п есть произведение к различных простых чисел.
Из нее следует, что число 1р(п) удовлетворяет асимптотическому равенству
1Р(п) ~ £ рп п
Методы тестирования неприводимости многочленов и методы генерации неприводимых многочленов будут рассмотрены в гл. 3.
Пример 2.1.13. 12(4) = 2.
Пример 2.1.14. Можно рассмотреть два изоморфных расширения поля GF(2). Первое получается присоединением корня 0 неприводимого многочлена 1 + X + X2, а второе — присоединением сопряженного корня 1+0. Изоморфизм ф отображает первое поле на второе следующим образом: ф(0) = 0, ф{1) = 1, ф(0) = 1+0, ^(1 + 0) = 0.
Пример 2.1.15. В одном представлении поля GF(24) можно взять в качестве примитивного элемента корень а примитивного многочлена 1+X+JC4, а в другом варианте поля — корень а~х — а14 примитивного многочлена 1+JC3+X4. Оба представления поля изоморфны, изоморфизм определяется равенством ^(а) = а14. Остальные значения функции ф определяются однозначно.
Следующая теорема явно описывает множества сопряженных элементов и их минимальные многочлены.
54
Глава 2. Конечные поля и эллиптические кривые
Теорема 2.1.21. Пусть 0 — корень в поле GF(pn) неприводимого над полем GF(p) многочлена f(X) степени т\п. Тогда элементы
0, 0Р, ер\ ..., 0рт~'	(2.6)
являются сопряженными относительно поля GF(p) элементами и
f(X) = (X - 0)(Х ~0Р)...(Х- 0рт'\
Доказательство. Проверим, что коэффициенты многочлена
g(X) - (X - 0)(Х - 0Р)... (X - 0рт") принадлежат полю GF(p). Так как подполе Fp(0) имеет порядок рт, то 0рШ = 0. В силу равенства
др(Х) = (Хр - 0Р)(ХР - 0Р)... (Хр - 0рП) = д(Хр), согласно правилу возведения многочлена над полем GF(pn) в р-ую степень, все его коэффициенты при возведении в р-ую степень не меняются. Так как этим свойством обладают только элементы подполя GF(p), то все они принадлежат этому подполю. Так как f(X) — минимальный многочлен элемента 0 над полем GF(p), то он должен делить д(Х). Но они нормированные равной степени, поэтому совпадают.	
Элементы ряда (2.6) называют также элементами, сопряженными с элементом 0 ПОЛЯ Fpm.
Пример 2.1.16. Применительно к G?F(22) имеем ряды сопряженных элементов 0; 1; 0, 02 = 1 + 0.
Теорема 2.1.22. Сопряженные относительно поля GF(p) элементы поля GF(pn) имеют один и тот же порядок, делящий рп - 1.
Доказательство. Если элемент 0 Е GF(pn) имеет порядок т, то то он порождает циклическую подгруппу порядка т (группу корней уравнения Хт — 1) в мультипликативной группе поля GF(pn), поэтому т делит рп - 1 согласно теореме Лагранжа. Так как т взаимно просто с рк, то, согласно теореме об образующих циклической группы, все элементы 0Р являются образующими группы корней уравнения Хт = 1 и поэтому имеют тот же порядок т.	
Пример 2.1.17. Для рассмотренных в примере 2.1.17 элементов поля GF(22) имеем
03 = 1, (1+0)3 = 1, 02^1, (1+0)2?И.
Следствие 2.1.22. Если 0 — примитивный элемент поля GF(q), то примитивными будут и все сопряженные с ним относительно любого подполя поля GF(q) элементы.
Пример 2.1.18. Рассмотренные в примере 2.1.17 сопряженные элементы 0 и Ц-0 являются примитивными элементами поля GF(22).
2.1. Поля Галуа
55
Определение 2.1.14. Порядком неприводимого над GF(p) многочлена называется порядок любого его корня в его поле разложения.
Теорема 2.1.23. Порядком неприводимого над GF(p) многочлена является наименьшее число d, такое, что Xd - 1 делится на этот многочлен.
Доказательство. Пусть 0 6 GF(pn) корень неприводимого многочлена / степени п и d — порядок 0. Тогда 0d - 1 =0, а так как f минимальный многочлен для 0, то f делит Xd - 1. Делить многочлен меньшей степени Xd - 1 он не может, так как тогда было бы 0d —1=0, и порядок 0 был бы меньше d. Обратно, если f делит Xd- 1, то 0d - 1 = 0, а так как / не делит Xd - 1, d' < d, то 0d -1^0, иначе f делил бы Xd - 1 согласно свойству минимального многочлена. В силу неравенств 0d> - 1 / 0, d' < d порядок 0 в этом случае равен d.	
Теорема 2.1.24. Каждое подполе поля GF(q), q —рп, р - простое, имеет порядок рт, где т делит п. Обратно, если т — делитель числа п, то существует ровно одно подполе поля GF(q) состоящее из рт элементов.
Доказательство. Первое утверждение теоремы уже была доказано в теореме 2.1.9. Докажем второе утверждение. Так как поле GF(q) совпадает с полем корней уравнения Xq = X, а многочлен Xpm - X делит многочлен Xq - X согласно тождеству
хрп~х хрп-1 -1.	,	+х(р-1) + 1
XPm - X ’ ХРт~' - 1	-г...-Г Л Т1,
Т)п — 1	~
7 Р 1	, т , 2т ,	, п-т
к = ——- - 1 = р +р + ... + р рт - 1
то все корни последнего лежат в поле GF(q) и образуют подполе порядка рт — поле разложения многочлена Хрт - X. Любое подполе порядка рт согласно согласно следствию 2.1.13 совпадает с полем корней уравнения хрт =Х.	
2.1.6.	След и норма элемента конечного поля
Определение 2.1.15. Пусть Р = Fq, К = Fqm и a Е К. След элемента а из поля К в поле Р определяется равенством
^K/p(ot) = a + aq + aq + ... 4- aq .
Если P — простое подполе поля К, то trA/p называется абсолютным следом элемента а и обозначается tr#(a).
Пример 2.1.19. Пусть P = F = GF(2), К - GF(22). Тогда
trK(0) - 0, trK(l) -1+1 = 0, trx(0) - 0 + 01 = 1,
trA(1 + 0) - (1 + 0) + (1 + 0)2 - 1.
56
Глава 2. Конечные поля и эллиптические кривые
Определение 2.1.16. Характеристическим многочленом элемента а над полем Р называется многочлен д(Х) —	где f(X) — минималь-
ный многочлен элемента а над полем Р, d — степень многочлена f(X).
Теорема 2.1.25. След trF/p осуществляет линейное отображение из поля К в подполе Р.
Доказательство. Корнями многочлена f(X) являются элементы
Q Q2	Qd~1
a, a4, a ,... , a4 .
Корнями многочлена g(X) в поле К являются те же элементы, взятые с кратностью m/d. Отсюда
g(X) = Xm + ат_\Хт 1 + ... 4- di Xi 4- а$ -
= (X-a)(X-aq)...(X- aqm~\	(2.7)
Сравнение коэффициентов дает trx/p(a) =	Получаем, что след
tr^/p(a) всегда является элементом поля Р. Равенства
tr^/p(^ + у) = trK/P(x) + trK/p(y), ttK/P(ax) = a trK/P(x), х,у 6 К, a G Р,
вытекают из теорем 2.1.1 и 2.1.2.	
Определение 2.1.17. Для а Е F = Fqm пР = Fq норма Np/p(a) элемента а над полем Р определяется равенством
Np/P(a) = a -,aq • aq •... • aq ~ o^q
Теорема 2.1.26. Норма ^к/р осуществляет мультипликативное отображение из поля К в подполе Р.
Доказательство. Мультипликативность
NK/p(xy) = NK/p(x)NK/p(y)
непосредственно следует из определения. Сравнение в равенстве 2.7 свободных членов приводит к заключению, что норма Nk/p является элементом поля Р, так как N#/p(q) = (~1)шао-	•
2.1.7.	Алгоритмическое представление конечного поля
Алгоритмически поле Галуа GF(qn) удобно описывать, имея в виду его представление в виде фактор-кольца Fq[X]/ f(X) кольца FjX] многочленов над полем Fq по модулю некоторого неприводимого многочлена f(X) степени п над полем Fq. Это представление равносильно представлению поля Fqn как алгебраического расширения Fq(x) поля Fq степени п, где х — корень многочлена f(X) в GF(qn).
2.1. Поля Галуа
57
Элементы поля представляются упорядоченными наборами a = (во, в], ^2, • • •, on-i) коэффициентов многочленов а(Х), представляющих классы [a(^)]mod/(x)> они же — коэффициенты полиномиальных выражений а(ж), определяющих элементы расширения Fq(x) поля Fq.
Операция сложения в поле Fqn определяется как покомпонентное сложение указанных векторов с использованием аддитивной операции поля Fq:
(ао, Ль • • •, Qn-\) + (&о,	• • •, bn-i) = (во + Ьо, ai 4-bi,..., ап-\ 4- bn-i),
т. е. как набор коэффициентов суммы многочленов
п-1	п-1	п-1
а(Х) = ^агХ\ /3(Х) = ^ЬгХ\ а(Х) + 0(Х) =	.
г—О	i~0	i=Q
Определить произведение
(^о, Л1, Л2, • • - , Лп-1) • (pQ, Ь{,Ь2, . . • , bn-i)
элементов а = (ао, • • •, ап-1) и /3 = (fc0,	, bn-i) в поле Fqn можно
двумя эквивалентными способами:
1)	по теореме о делении с остатком
а(Х)^Х) = f(X)q(X) + р(Х), deg р(Х) < п,
где р(Х) = гет(а(Х) х /3(Х), /(X)) откуда
оф = fq 4- р = р = (с0, ci,..., сп_1),	(2.8)
где f, q и р — наборы коэффициентов многочленов f(X), q(X) и р(Х) (вектор р определяет класс эквивалентности, которому принадлежит произведение многочленов над полем GF(q))\
2)	подстановкой вместо формальной переменной X корня х неприводимого многочлена f(X) в равенство 2.8. При этом а(х) х /3(х) = f(x)q(x) 4- р(х) = р(х), так как /(ж) = 0.
Таким образом, произведение
(«о, Ль &2, • • • > о>п-1) * (&о> Ь\,Ь1,..., bn-i)
элементов а и /3 в поле Fqn представляется вектором
СТ (со, Cj, С2, • • • , Oft — 1),
который можно вычислить как набор коэффициентов многочлена р(Х) = гет(а(Х)Д(Х), /(X)), получающегося как остаток при делении произведения многочленов
2п-2 а(Х)р(Х) = £ £ atbyXk, k—Q
58
Глава 2. Конечные поля и эллиптические кривые
на многочлен f(X). Операцию нахождения этого остатка называют иногда приведением по модулю f(X).
Различные алгоритмы умножения многочленов и приведения полученного результата по данному модулю будут подробно рассмотрены в гл. 4.
2.1.8.	Поле Галуа как векторное пространство
Векторное пространство над полем Галуа. Определим п-мерное векторное пространство над полем Галуа GF(q) как множество векторов
а = (<2i, • • •, a>i, • • •, cin)
длины п, состоящих из элементов поля. Операция сложения векторов определяется как покомпонентное сложение по правилам сложения в поле GF(q). Операция умножения вектора а на произвольный элемент а (скаляр) поля GF(q) определяется равенством:
а • а = (ctai,..., otdi,..., aan).
Используя свойства операций в поле GF(q), легко проверить, что данное определение корректно, т. е. удовлетворяет всем аксиомам общего определения векторного пространства: операция сложения коммутативна и ассоциативна, имеет нулевой элемент, для любого вектора а существует противоположный вектор b такой, что а 4- b = 0, умножение на единицу поля GF(q) не приводит к изменению вектора, умножение на скаляр ассоциативно а (/За) = (о • /3)а, дистрибутивно относительно векторного множителя и дистрибутивно относительно скалярного множителя
(а 4- /3) • а = а • а 4- /3 • а, а(а 4- Ь) = а • а + а • Ь.
Как и в общем случае, выражение
ос 1 ei 4-... 4-	4-... 4- oinen
называется линейной комбинацией векторов ej,... , е,,..., е„ с коэффициентами
..., оц,..., ап.
Если хотя бы один из коэффициентов отличен от нуля, то линейная комбинация называется нетривиальной. Векторы ej,..., е,,..., еп называются линейно зависимыми , если существует хотя бы одна их нетривиальная комбинация, равная нулю, иначе векторы называются линейно независимыми. Векторное пространство называется п-мерным, если существует п линейно независимых векторов, а любые n + 1 векторов линейно зависимы. Любые п линейно независимых векторов п-мерного векторного пространства образуют его базис. Если ei,..., е,,..., еп есть базис векторного пространства, то любой вектор представим линейной комбинацией базисных векторов.
Очевидно, что поле GF(qn) можно рассматривать как п-мерное векторное пространство над полем GF(q). Базисы такого векторного пространства иногда называют базисами поля GF(qn).
2.1. Поля Галуа
59
Полиномиальные и нормальные базисы. Пусть задан неприводимый многочлен р(Х) над простым полем GF(p) степени п. Характеристика этого поля есть р. Тогда конечное расширение GF(p)(x) = GF(pn) степени п поля GF(p), где х — корень многочлена р(Х), можно рассматривать как векторное пространство размерности п. По следствию 2.1.12, множество элементов	‘
{1, х, х2,..., хп~1}
составляет базис п-мерного векторного пространства и одновременно базис поля GF(pn). Действительно, это множество линейно независимо и позволяет представить любой элемент
q(x) = а0 4- а}ж + а2х2 4-... 4- ап-Ххп~х	(2.9)
из GF(2n).
Этот базис называется полиномиальным или стандартным базисом и обозначается далее S. Он определяется неоднозначно, так как зависит от выбора неприводимого многочлена (определяющего базис). Формально базис зависит также от выбора корня этого многочлена, но легко видеть что правило умножения в этом базисе не зависит от выбора корня.
Базисом поля GF(pn) может оказаться также множество сопряженных с элементом поля х элементов
{х, хр,хр,...,хр }.
Это множество называется нормальной системой (множеством).
Все элементы этой системы различны, поскольку они являются корнями неприводимого многочлена р(х), и если они окажутся линейно независимыми, то любой элемент поля GF(pn) можно будет представить линейной комбинацией
п -1
а — а$х 4- а^хр 4- а?хр 4-... 4- an-ixp = У2 (ЦХР .
i=Q
Тогда это множество называется нормальным базисом поля GF(2n) и обозначается N.
Теорема 2.1.27. В любом поле GF(pn) существует
(рп — \)(рп — р) ... (рп - рп~х) п\ различных базисов, из них
7?(п) = Z2 ^pn/d d\n
полиномиальных базисов. Количество нормальных базисов равно
--рп П 0 - p-°MyWMp\
п 1,1 '	'
d\m
60
Глава 2. Конечные поля и эллиптические кривые
где n = pam,m не кратно р, Оа(р) минимальное натуральное число о, такое, что р° - 1 кратно d.
За доказательством читателя направляем в [52,126].
Пример 2.1.20. Число нормальных базисов в поле GF(26) равно
126(1 -2(’1))(1 -2’2) =4,
так как ^(3) = 2 = о3(2).
Если один нормальный базис {х19..., хп} в поле GF(pn) известен, то все остальные можно выразить через него в явном виде путем умножения на невырожденную циркулянтную матрицу (сг,;),	= Cg+imodn,j+imodm
т. е. такую, у которой каждая следующая строка получается из предыдущей циклическим сдвигом вправо. Подсчитывая число таких матриц, отсюда можно получить формулу для числа нормальных базисов теоремы 2.1.27. Несмотря на наличие такой формулы и на довольно большую вероятность случайно выбранного элемента х порождать нормальный базис, явной конструкции нормальных базисов для любой размерности, видимо, не известно.
Замечательно, что в нормальном базисе возведение в степень характеристики поля р равносильно циклическому сдвигу векторного представления элемента поля (учитывая, что хрП = х):
ар — (а$х + а^хр + а2хр + ... 4- an-ixp )р =
= oqxp + aixp + а2хр + ... + an-2^p 4-tzn-i^p =
= ап-Хх + oqxp + a,ixp + a2xp + ...+ an_2xp .
Таким образом,
— (fto, tZj, a2,... , an_2,	— (^n—i, tzo, <zi, a2..., 0^—2).
В нормальном базисе также очень просто вычислять след элемента а, а е GF(pn): значение tr(а) — а + ар + ар + ... + арП равно сумме элементов вектора а. Действительно, рассмотрим матрицу, строками которой являются элементы а, ар, ар ,..., арП .Ее столбцами являются те же векторы, так как j-й столбец представляет собой циклический сдвиг на j позиций первого столбца. Следовательно, сумма строк матрицы есть вектор с компонентами, равными сумме компонент вектора а [158].
Пример 2.1.21. Вычислим след tr (10110) элемента (10110) поля GJ1(25).
а = ЮНО, а2 = 01011, а2 = 10101, а2' = ПОЮ, а" = 01101.
Сумма строк равна (1,1,1, 1, 1), т. е. tr (10110) = 1.
2.1. Поля Галуа
61
Вычисление следа в полиномиальном базисе несколько сложнее, но может быть ускорено за счет предварительного вычисления так называемого вектора следа. Рассмотрим только случай бинарного поля. Составим матрицу, строками которой являются представленные в полиномиальном базисе элементы ж0, ж1, ж2, хп~1, хп,... , х2п~2.
Пример 2.1.22. В поле GF(2S), порождаемом неприводимым многочленом х5 + ж2 + 1, такая матрица имеет вид
ж0 = 10000,
х1 = 01000,
ж2 = 00100,
ж3 = 00010,
ж4 = 00001,
Xs = 10100,
ж6 = 01010,
ж7 = 00101,
ж8 = 10110.
Элементы tt, i = 0,..., п - 1 вектора следа (f0, • • •, tn-i) образуются суммированием по модулю два элементов матрицы, расположенных по диагонали (слева направо и сверху вниз) в соседних векторах аг, ..., аг+п-1. Например, — 1Ф 1Ф 1Ф 1Ф 1. Вектор следа следующий: (f0, ti, h, h, f4) = (1, 0, 0,1, 0). Значение функции следа для элемента а поля GF(2n) равно сумме (дизъ!онкции) элементов вектора, получаемого как поразрядное произведение (конъюнкция) элементов вектора а и вектора следа [158].
Пример 2.1.23. Вычислим значение функции следа элемента
а = (0 • ж0, 1 • ж1, 1 • ж2, 0 • ж3, 1 • ж4).
Найдем покомпонентное произведение вектора следа и векторного представления элемента а = (01101):
t{, t2, t3, Z4)&(01101) = (10010)&(01101) = (00000).
Сумма элементов полученного вектора равна 0. След элемента (11100) является суммой элементов вектора (10010)&( 11100) = (10000), т. е. tr(lllOO) = 1.
Умножение в полиномиальном базисе выполняется, как описано в предыдущем разделе, а именно, путем умножения многочленов над полем Галуа и последующего приведения полученного результата по модулю неприводимого многочлена, порождающего этот базис.
Умножение в нормальном базисе выполняется по правилам умножения многочленов
р(х) • s(x) =	агЬ}хр xpJ,
г—0 j=Q
62
Глава 2. Конечные поля и эллиптические кривые
где
р(х) = aQx + а{хр + ... + ап_{хр ,
s(x) = bQx + b{xp 4-... + bn_\Xp при этом приведения результата по модулю неприводимого многочлена не требуется. В то же время слагаемые
c^j — ajbjXp
в указанной двойной сумме в общем случае не являются элементами нормального базиса, и должны представляться как линейные комбинации элементов базиса. Это усложняет операцию умножения в нормальном базисе по сравнению с операцией умножения в полиномиальном базисе.
Методы умножения, возведения в степень и инвертирования в нормальных базисах рассматриваются частично в разд. 2.1.13 и более подробно в четвертой главе.
2.1.9.	Проверка, является ли нормальная система базисом. Переход от нормального базиса к стандартному
Пусть {х, хр, хр\ ... ,хрП ’} — нормальная система элементов поля GF(pn), где х — корень неприводимого многочлена f(X). Для проверки того, образует ли она базис в этом поле, достаточно выяснить, является ли она линейно независимой над полем GF(p). Для этого можно вычислить коэффициенты aij разложения элементов xpt по тому базису поля GF(pn), который используется в рассматриваемом представлении этого поля, и проверить n х п матрицу (a$j) на вырожденность.
Для вычисления матрицы (аг?7) можно использовать описанный в разд. 3.1.4 алгоритм вычисления последовательности X, Хр,..., ХрП 1 по модулю неприводимого многочлена р(Х), соответствующего полиномиальному базису рассматриваемого представления поля. Строки образуются как последовательности коэффициентов многочлена Xpt mod f(X). При использовании в качестве р(Х) многочлена с малым числом одночленов (т. е. многочлена малого веса) сложность этого вычисления будет O(n2log2p). Если же удается пользоваться представлением поля GF(pn) с помощью нормального базиса, то указанная сложность равна нулю.
Матрица (a2j) будет вырожденной тогда и только тогда, когда соответствующая ей система линейных уравнений с нулевой правой частью имеет ненулевое решение. Базис будет нормальным, тогда и только тогда, когда эта матрица невырождена. Конечно, матрица будет вырожденной, если элементы последовательности {х, хр,хр,..., хрП } циклически повторяются. В противном случае для решения системы можно применить метод Гаусса, имеющий оценку сложности О(п3). В случае р = 2 работу этого алгоритма можно ускорить в 32 раза, если при выполнении
2.1. Поля Галуа
63
элементарных преобразований столбцов матрицы представлять их в виде векторов из п/32 длинных целых чисел и для сложения столбцов по модулю два применять операцию XOR с длинными целыми числами. Объем используемой памяти при этом тоже уменьшается.
Опишем указанный алгоритм в применении к бинарному случаю более подробно. В стандартном базисе S = {1, ж, х2,..., жп-1} любой элемент поля GF(2n) выражается некоторой линейной комбинацией элементов базиса S — бинарным вектором длиной п.
Элементы базиса соответствующего нормального базиса N как наборы из п таких векторов составляют бинарную матрицу М размером п х п, которую можно компактно представить таблицей R(T) размером п х к, если элементы базиса N задавать наборами t2,... Лк, к = целых неотрицательных чисел, представляющих машинными словами длины s в совокупности все коэффициенты бинарного вектора (см. Приложение А во второй книге [18]).
Покажем, как определить такие наборы и построить таблицу R(T) для элементов множества N.
Для элемента х (многочлена X) соответствующий набор имеет вид 0,1,0, ...,0. Пусть ti,t2,---,tk ~ набор чисел, задающих элемент ж2’ (многочлен Х2'). Рассмотрим элементарные многочлены ^(ж), j = 1, 2,..., к, задаваемые числами , j = 1, 2,..., к. Тогда для многочлена д(Х) = ^2	имеем X2' = g(X)(modp(X)). Умножив много-
член д(Х) на себя и взяв остаток от деления результата на многочлен р(Х), получим набор чисел tf2,... , t'n задающих многочлен Jl2 +1 . Последовательность его коэффициентов задает элемент ж2 +1 в стандартном базисе.
Рассмотрим таблицу R(T) с п строками и к столбцами, (г + 1)-я строка которой, читаемая слева направо, совпадает с набором чисел f i, f 2, • • • Лк 5 задающих многочлен ж2 в стандартном базисе i = 0,1,..., п — 1.
Легко видеть, что множество N является базисом в точности тогда, когда матрица из нулей и единиц, соответствующая таблице R(T), невырождена. Этот факт можно проверить по таблице R(T) с использованием алгоритма NONSIGN-MATRIX, описанного в Приложении А во второй книге [18].
По таблице R(T) можно построить таблицу С(Т), представляющую матрицу М аналогичным образом, но в виде, когда слова длины s составляются из элементов столбцов матрицы М.
Упражнение 2.1.2. Покажите, как построить таблицу C(R) по таблице R(T), не прибегая к преобразованию последней в бинарную форму матрицы М.
Матрица М и, соответственно, таблица C(R) задают переход от системы координат, определяемой нормальным базисом к системе координат в стандартном базисе (далее такая матрица и таблица называются матрицей и таблицей перехода от нормального базиса к стандартному). Пусть
64
Глава 2. Конечные поля и эллиптические кривые
(t\,..., компактное представление элемента поля в нормальном базисе. Тогда бинарное представление этого элемента в стандартном базисе получается вычислением произведения
Л) хС(Я)
и заменой его элементов (слов длины s) нулем при четном числе единиц в слове и единицей при нечетном.
Пример 2.1.24. Пусть п = 3, з = 2. Рассмотрим неприводимый многочлен р(Х) = 1 + Х2+Х3. Далее,
X = X(mod р(Х)), X2 = X2(modp(X)),
X4 = 1 + X + X2 + (1 + Х)р(Х) = 1 + X + X2(modp(X)).
Матрица перехода от нормального базиса к стандартному имеет вид
/О	1	0\
М =	0	0	1	.
\1	1	1/
Матрица М невырождена. Поэтому элементы ж, ж2, ж4, где ж — корень многочлена р(Х) образуют нормальный базис. Рассмотрим элемент а = ж2 + ж4, заданный в нормальном базисе. Тогда имеет место равенство v = (0, 1, 1). Умножая вектор v на матрицу М, получим вектор v' = (1,1,0). Поэтому в стандартном базисе элемент а представляется в виде 1 + х.
Этот пример можно проследить дальше, если при s = 2 преобразовать матрицу М к таблице Т = j?(M),
/0 2\
' Т =	0 1	,
\1 3/
а вектор v к таблице R(v) = (0 3). Таблицу R(M) преобразуем в таблицу cm = Q ;	.
Результатом умножения таблицы R(v) = (0 3) на таблицу С(7И), является таблица (1 1 3), что соответствует (после замены слов бинарными символами) бинарному вектору v' — (1, 1,0), или элементу 1 + х.
2.1.10.	Переход от стандартного базиса к нормальному
Пусть таблица С(ЛГ) представляет невырожденную бинарную матрицу М перехода от нормального базиса к стандартному, т. е. нормальная система является базисом. Используя алгоритм INV-MATRIX (см. Приложение А во второй книге [18]), в этом случае построим таблицу С(7И)', представляющую бинарную матрицу М~1, обратную к М. Рассмотрим набор и — (f1? £'2,..., ^.) целых неотрицательных чисел, который задает
2.1. Поля Галуа
65
п
элемент а поля GF(2n)) в стандартном базисе a = ^2 ai G {0, 1}. г=1
Тогда произведение вектор-строки и на таблицу Т' задает этот же элемент, но уже в нормальном базисе.
Пример 2.1.25. Пусть многочлен р(х) и матрица М такие же, как и в предыдущем примере. Для матрицы М~1 обратной к М, имеем
/1 1 1\ 1 0 0 .
\0 1 О/
Найдем, например, представление в нормальном базисе элемента 1 + ж, заданного в стандартном базисе. Для этого умножим вектор-строку v' = (1, 1, 0) на матрицу М~1. Получим строку v = (0,1,1), соответствующую представлению х2 + х4 элемента а в нормальном базисе.
Если умножить таблицу (12), соответствующую при s = 2 вектор-строке v1 = (1,1, 0), на таблицу С(М)',
/1 1 1\
V 1 оу ’ задающую матрицу М~х, то получается таблица (3 1 1). По ней определим бинарный вектор v =(0,1,1) который в нормальном базисе задает элемент х2 + х4.
2.1.11.	О быстрой линейной алгебре
Алгоритм Гаусса решения системы п линейных уравнений с п неизвестными и стандартное правило умножения п х п-матриц над данным полем требуют порядка п3 операций в поле и не являются оптимальными алгоритмами. Известно, что наилучшие по порядку сложности алгоритмы для обеих задач используют O(nw) операций, где число щ называется экспонентой матричного умножения. Наилучшая известная оценка щ < 2,376 принадлежит Винограду и Куппершмиту (см., например, [115]). Однако, мультипликативная константа в оценке сложности, очень велика и о практическом применении этого алгоритма (а также подобных алгоритмов) пока ничего не слышно. Реальную возможность применения имеет только исторически первый такой алгоритм, открытый в 1967 г. Ф. Штрассеном [82]. Сложность этого алгоритма оценивается как 42n,og2 7 операций. Однако в конечных полях при небольших значениях п (порядка тысячи) видимо более быстро будет работать так называемый алгоритм «четырех русских» — так называют на Западе алгоритм для умножения булевских матриц, предложенный в [4] для решения задачи о вычислении транзитивного замыкания графа (см. [6]). Модификация этого алгоритма позволяет перемножать п х п матрицы над полем GF(p) со сложностью n3/]ogp п как в программной реализации, так и при реализации схемами над данным полем. Преимущество этого алгоритма также в том, что он удобен для использования векторных операций (когда вместо битов и битовых операций используются машинные слова в 32 бита, то время его
66
Глава 2. Конечные поля и эллиптические кривые
работы уменьшается примерно в 32 раза), а также в относительной простоте программирования, так как он не содержит рекурсии. При больших значениях п (порядка нескольких десятков тысяч) возможно выгодным будет комбинирование этого алгоритма с несколькими шагами штрассе-новской рекурсии (а при использовании двух-трех шагов рекурсии можно в программировании вообще избежать рекурсивных вызовов программы).
Алгоритм «четырех русских» для умножения матриц над конечным полем. Далее иногда будет речь идти не только о программной, но и о схемной реализации некоторых алгоритмов. Здесь и ниже в книге под схемной реализацией понимается построение схемы из функциональных элементов, реализующей заданную систему функций. В частности, логические схемы это схемы построенные из двухвходовых элементов, реализующих умножение (конъюнкцию) и сложение по модулю два (операция XOR — «исключающее или»). Элементы схемы соединяются друг с другом и с входами и выходами схемы произвольным образом с естественным запретом на образование ориентированных циклов (которые могут существовать в автоматных схемах и используются для создания обратной связи)2).
Сложностью схемы называется число элементов в ней. Глубиной схемы называется максимальное число элементов, какое может быть в цепи, соединяющей один из входов схемы с одним из ее выходов. Глубина пропорциональна задержке схемы. В рассматриваемых далее примерах мы не стремимся минимизировать глубину, и оцениваем ее только для повышения наглядности в условиях отсутствия рисунков. Сложность схемы, очевидно, пропорциональна времени работы программы, реализующей тот же алгоритм, который реализуется схемой. Поэтому понятие сложности схемы, по существу, совпадает с понятием так называемой битовой сложности соответствующего алгоритма.
Кроме логических схем будем еще иногда рассматривать схемы, построенные из элементов, реализующих операции в произвольном данном конечном поле. Все данные выше определения, очевидно, переносятся и на этот случай.
Опишем схемную реализацию алгоритма «четырех русских», которая основана на идее О. Б. Лупанова из статьи о вентильных схемах [54],
Более строго схема определяется как схема из функциональных элементов [50]. Функциональный элемент это неделимая конструкция с одним выходом и определенным числом (как правило, 1 или 2) входов Схема из функциональных элементов определяется по индукции. 1. Функциональный элемент есть схема. 2. а) Если S\ и Si — схемы, то их объединение есть схема S, входами и выходами которой являются входы и выходы схем 51 и Sz, б) соединением входа схемы S с выходом некоторого нового (не входящего в схему S) элемента получается схема 5”, выходами которой являются выходы схемы S, а входами — входы нового элемента и оставшиеся входы схемы S, в) соединением двух входов схемы S с новым входом получается схема S', выходами которой являются выходы схемы S, а входами — оставшиеся входы этой схемы и новый вход. Интерпретация схемы заключается в приписывании ее элементам конечнозначных, например булевых, функций. После интерпретации схема реализует систему функций.
2.1. Поля Галуа
67
опубликованной намного раньше работы [4]. Задача умножения двух п х п матриц сводится к п-кратному выполнению умножения п х п матрицы А на п-мерный вектор х. Компонента произведения с номером i равна
п
УЗ ai,J Xj‘
Пусть г < п некоторый параметр, который выберем ниже. Разобьем переменные Xi на fn/r] групп по г переменных Xkr+i, • • •, £(fc+i)r (в последней группе их может быть меньше). Реализуем заранее все линейные функции от каждой из этих групп переменных. Все функции от переменных Xkr+i, • • •, имеют вид CiXkr+i 4-. • . + CkX(k+ijr и их количество равно рг. Общее число всех функций оценивается как (1 4- п/г)рг. Сложность реализации каждой функции оценивается как 2г - 1 (г умножений в поле GF(p) и г - 1 сложений). Сложность реализации системы всех функций оценивается поэтому как (2г - 1)(1 4- п/т)рг — (2п 4- 2г - 1 - п/г)рг, а мультипликативная сложность — как г(1 4- п/т)рг = (п 4- г)рг.
В случае схемной реализации конечно надо предполагать, что одна из матриц известна заранее. В случае программной реализации это предположение излишне. В этом случае для вычисления значений этих функций по их коэффициентам и переменным заранее вычисляются и загружаются в память \п/г\ таблиц — двумерных массивов размера рг х г, из которых значение функции извлекается за одну операцию. После этого для вычисления каждой из п компонент произведения достаточно сделать по формуле
п	г	п
УЗ ai,j xj = УЗ ai,j xj 4" • • • 4- У2 ai,j xj j=l	г-1	j=r([n/r]-l)+l
\n/r] - 1 n/r сложений в поле GF(p). Общая оценка сложности поэтому имеет вид
п2 /	, п\ г
----h I 2п 4- 2г - 1	ip , г у	г J
а мультипликативная сложность оценивается как (п 4- г)рг. Учитывая, что сложение в поле GF(p) требует O(log2 р) операций, а умножение — M(GF(p)) — <9(log2p)2 операций, получаем оценку битовой сложности (и сложности реализации логическими схемами)
M(GF(p))(n 4- r)pr + о( — 4- (п + г - 1 - log2p = у г у	г) )
= O(log2 р)2(п 4-г)рг 4- of — 4- fn4-r - 1 - log2p.
68
Глава 2. Конечные поля и эллиптические кривые
Выбираем теперь параметр г так, чтобы главным членом был п2/г. Для этого достаточно, чтобы pr log2 р = о(п/г). Можно выбрать
г = [logp п - 3 logp logp nJ,
тогда
г. 2	(1 +o(l))n(log,p)2 n\
Р log2 Р <----------§-------= О -у
при logp n (log2p)2. Значит оценка битовой сложности умножения матрицы на вектор имеет вид O(n2/r) = O((log2 p)2n2/log2 п), а оценка сложности реализации схемами над полем GF(p) асимптотически равна n2/logpn. Для умножения матриц соответствующие оценки умножаются на п и имеют вид <9((log2 p)2n3/log2 ri) и n3/logp п. В частности, при р — 2 получается оценка сложности
2log2 п
/ п3 log2 log2 n
\ (log2 n)2
и глубины log2 r + log2(n/r)+ 0(1) = log2 n + O(l), так как глубина каждой из заранее вычисленных линейных функций равна log2 г + 0(1), а глубина каждой из внешних сумм равна log2(n/r) + 0(1).
В случае программной реализации эта оценка заменяется соответствующей оценкой по порядку, так как там надо учитывать еще сложность операций извлечения из памяти. Заметим, что объем памяти, необходимый для умножения матриц, асимптотически равен npr(log2p)2 = O((log2 p)2n2/(logp п)с) бит при выборе г = [logp п - С logp logp nJ при сохранении указанного выше порядка сложности, так как при умножении матрицы на новый вектор можно использовать память, освободившуюся после выполнения предыдущего умножения.
В реальной компьютерной реализации объем памяти конечно ограничен, и поэтому для сложности умножения асимптотически получается лишь оценка 0(п3), но с малым мультипликативным множителем (для его минимизации при выборе г мы ограничены лишь объемом используемой памяти, поэтому при малых п можно выбирать г и больше logp п.). Скорость извлечения значения функции из загруженных в память таблиц зависит от их размера (все же лучше, чтобы он был поменьше) и от числа р. Если оно не степень двойки, то преобразование р-ичных векторов в двоичные адреса элементов массива делается не так быстро и может сильно замедлить работу алгоритма. Нас, однако, в основном интересует случай р — 2, тогда это преобразование делается быстрее. В случае программной реализации можно добиться дополнительного ускорения, представляя умножение матриц как умножение матрицы на вектор, элементами которого тоже являются векторы. Тогда вместо предварительного вычисления системы линейных функций C]Xkr+\ + ... + crx^-[-\)r от групп переменных из поля GF(2) я+r+i,..., в количестве не более (1 + п/г)2г
2.1. Поля Галуа
69
штук, можно вычислять соответствующие суммы двоичных векторов длины п. Если длина машинного слова равна w (например, w = 32), то каждый из этих векторов можно представить в виде вектора из fn/w] машинных слов, и заранее вычислять и запоминать [n/w] раз все суммы вида C[Xkr+i + ... -Hcr£(&+i)r, где роль переменных играют машинные слова. Так как умножение машинного слова на бит и побитовый XOR для машинных слов выполняются отдельными машинными операциями (и более быстрыми, чем сложение чисел), то сложность вычисления системы всех этих сумм оценивается величиной [n/w~\(l + п/г)2г, а объем памяти для их хранения оценивается в битах как 0(w(n/r)2r), потому что вычисления столбцов произведения матриц делаются последовательно и память после каждого из них освобождается. После этого вычисление произведения матриц требует не более [n/w]n2/r операций побитового XOR машинных слов и \n/w]n[n/r] операций извлечения машинных слов из памяти. При выборе г = |"log2 п - log2 log2 п\ оценка сложности умножения матриц асимптотически имеет вид 2n3/(w log2 п). Если же выбрать г = [log2 п - С log2 log2 п], то при той же асимптотике сложности памяти будет достаточно асимптотически wn2/(log2 n)c+1.
2.1.12.	Быстрый алгоритм для решения систем линейных уравнений над конечным полем
Решение системы линейных уравнений, сводится к обращению матрицы и умножению полученной обратной матрицы на вектор. Как показано в [6], обращение матрицы можно выполнить по порядку с той же сложностью, что и умножение матриц. Поэтому алгоритм предыдущего раздела порождает алгоритм решения системы линейных уравнений над полем GF(p) сложности O(n3/log;> п). Но метод [6] довольно сложный и мультипликативная константа в оценке будет достаточно велика. Но еще до появления работ [4,6,160] в работе [49] был получен алгоритм сложности асимптотически n3/logp п для решения систем линейных уравнений. Он представляет из себя модификацию алгоритма Гаусса и осуществляет приведение расширенной матрицы системы к верхнетреугольному виду с ненулевыми диагональными элементами. Кратко опишем этот алгоритм И. В. Коновальцева.
Выберем г — |_logp п - 3 logp logp п\ и назовем первые г элементов любой строки матрицы ее кортежем', очевидно, что число различных кортежей не больше рг = О(п/г3) = O(n/(logp п)3). Вычитая одну строку с данным кортежем из всех остальных строк с таким же кортежем, получаем матрицу, у которой будет не более рг -1 строк с ненулевыми кортежами. Переставляя строки, можно переместить все строки с ненулевыми кортежами в верхнюю часть матрицы. Сложность проведенных вычислений не больше n2+<9(nr)+O(n2/(log;) п)2), если учесть, что сложность перестановки двух строк матрицы равна О(п), а сложность сравнения кортежей равна О(т). Применим теперь к верхней части матрицы алгоритм Гаусса и преобразуем ее в матрицу, у которой только г строк имеют ненулевые
70
Глава 2. Конечные поля и эллиптические кривые
кортежи, образующие верхнетреугольную г х г-матрицу, расположенную в левом верхнем углу исходной n х п матрицы. Для этого придется выполнить О(рг г) раз элементарные преобразования над строками матрицы и общая их сложность оценивается как O(prrri) = <9(n2/(logp п)2). Таким образом, со сложностью n2 + O(n2/(logr п)2) можно получить матрицу, у которой в левом верхнем углу расположена верхнетреугольная г х г-матрица, а в остальной части первых г столбцов стоят нули. После этого остается привести к верхнетреугольному виду (п - г) х (п - г) подматрицу, лежащую в пересечении остальных столбцов и строк с нулевыми кортежами. Для этого рекурсивно применяем описанный выше алгоритм еще [(п - г)/г] раз (в последний раз значение г может уменьшится). Окончательная оценка сложности имеет вид
Если учесть, что при выполнении элементарных преобразований битовая сложность операции умножения в поле GF(p) равна <?((log2j>)2), а операции сложения равна O(log2 р), то оценка битовой сложности имеет вид
(log2 р)п3	/ п3
logp п	\ (logp п)2
при logp п > (log2p)2.
В отличие от предыдущего, этот алгоритм пригоден только для программной реализации и не требует дополнительной памяти. Для него не существен вид числа р. При р = 2 его можно ускорить точно так же, как описано в предыдущем разделе.
2.1.13.	Оптимальные и гауссовы нормальные базисы
Для оптимизации времени умножения или схемной реализации умножения в нормальных базисах используют оптимальные или близкие к ним гауссовы нормальные базисы. Оптимальные нормальные базисы были обнаружены авторами работы [151]. Они удачно могут быть использованы в мультиплере (схеме умножения), запатентованном в 1986 г. Дж. Месси и Дж. Омурой [154].
Сложностью Св произвольного нормального базиса
В = {х, xq,xq,... ,xq } называется число ненулевых элементов в матрице Т, i-я строка которой есть вектор коэффициентов элемента ххд1 поля GF(qn) относительно базиса В, т.е.
п-1
ХХЯ = УТ Xq3 •
j=Q
2.1. Поля Галуа
71
В соответствии с этим определением сложность нормального базиса можно найти следующим образом. Пусть после проверки матрицы М = (ттц(х)) на предмет того, является ли базисом соответствующая нормальная система, построена матрица М~х перехода от стандартного базиса к нормальному. Построим матрицу Т — (^(ж)), строки которой вычисляются следующим образом: ti(x) = (жтг(х)М-1). (Здесь хттц — произведение в поле GF(2n).) Находим сложность нормального базиса, подсчитав число единиц в полученной матрице.
Определение сложности нормального базиса мотивируется следующим алгоритмом умножения в нормальной базисе В — алгоритмом Месси—Омуры (Massey—Omura):
пусть
i=Q	j=Q
произвольные элементы поля GF(qn), разложенные по нормальному базису В, тогда их произведение можно вычислить по формуле:
7Г =	= У^ XiyjX9’^' =	ХЩХ(9' ' + ’У
i, j=0	i,j=®
где разность i - j вычисляется по модулю п, а так как
/ п-1	\ q]
= (аг+у = ( 52	=
' А;=0	'
71-1	77-1
-Vi- •  7+> - Vi x'r
к=0	т=0
где разность т - j и сумма к + j тоже вычисляются по модулю п, то
7Г = ^РтХ9"‘,
m=Q
где
71—1
i,j=0
некоторая билинейная форма над полем GF(q).
Так как при возведении элементов £, £ в степень q происходит циклический сдвиг переменных в каждом из векторов жг-, i = 1,...,п и yj, j = 1,...,п на одну позицию вправо, а тгд = £q£q, то координаты элемента 7rq вычисляются по формулам Д = Pi(S(x), S(y)). Но при возведении элемента тг в степень q происходит такой же циклический
72
Глава 2. Конечные поля и эллиптические кривые
сдвиг координат, т. е. координата р, переходит в координату Pi+imodn, значит Pi-t mod п(х, у) = pi(S(x), S(y)), i = 0,...,n- 1, откуда следует, что Pi-kmodn(x,y) = Pi(Sk(x),Sk(y)), i = 0,	1, т. е. всё
остальные формы получаются из формы ро по формуле pmmodn(^, у) — Po(Sn~m(x), Sn~m(y)), k = 1,..., п-1, где Sn~m — операция циклического сдвига координат вектора вправо на n — m позиций, или, что равносильно, влево на тп позиций. Этот сдвиг можно явно определить формулой
S (Жо, • • • , Хп_\) — (хт, . . . , Xn-i, Xq, . . . , Жш-1) —
— modn, i = 0, ... , П — 1).
Определив матрицу А равенствами	где i - j и -j вычис-
ляются по модулю п, замечаем, что предыдущую формулу для рт можно переписать в виде
п-1
Рт= 52 ^~3,т-зхгУэ =~~ Po(Sn~m(x), 8П~т(у)) , i,j=G где п-1
р0(х, у) = А(х, у) = ^2 aiJ xiVj’
i,j=Q
Матрица А симметрическая, и число ее ненулевых элементов, а также их сумма такие же, как и у матрицы Т. Для вычисления билинейной формы А(х, у) достаточно выполнить 2Св умножений и п - 1 сложений в поле GF(q). Если пренебречь временем выполнения циклических сдвигов, то сложность выполнения умножения над нормальным базисом поля GF(qn) оценивается сверху как п(2Св 4- п - 1) операций в поле GF(q), что видно из следующей формулы:
xiC = Ж £)х + А(£>п~', Qqn '}xq + А(^\	+... + Ж, •
Таким образом, сложность умножения зависит только от количества ненулевых элементов Св в матрице А.
Упражнение 2.1.3. Докажите, что в случае q = 2 сложность умножения оценивается как п(Св + п - 1).
Матрица А («таблица умножения» в базисе В) однозначно определяет операцию умножения в рассматриваемом поле.
О сложности нормальных базисов известно следующая
Теорема 2.1.28. Для любого нормального базиса В поля GF(qn) его сложность Св не меньше 2п— 1. Более того, если q = 2, то сложность — нечетна. Нормальные базисы, для которых достигается эта граница, называют оптимальными.
Упражнение 2.1.4. Докажите эту теорему.
В [87] были приведены еще примеры нормальных базисов В, у которых функция сложности Св является линейной. Стандартный алгоритм
2.1. Поля Галуа
73
умножения для таких базисов имеет квадратичную оценку сложности. Эти базисы, получившие название гауссовых нормальных базисов (ГНБ), будут подробно рассмотрены в гл. 5.
2.1.14. Алгебраическое замыкание конечного поля
Алгебраическим замыканием поля называется наименьшее алгебраически замкнутое расширение этого поля. Поле называется алгебраически замкнутым, если любой многочлен над этим полем имеет в нем корень, и как следствие, разлагается над ним на линейные множители.
Пример 2.1.26. Алгебраическим замыканием поля рациональных чисел и поля действительных чисел является поле комплексных чисел.
Известна теорема о том что алгебраическое замыкание существует у любого поля и все они изоморфны друг другу. Мы докажем эту теорему только для конечных полей.
Теорема 2.1.29. Для любого простого р поле GF(p) имеет единственное с точностью до изоморфизма алгебраическое замыкание, которое также будет алгебраическим замыканием любого из полей GF(pn) той же характеристики.
Для доказательства существования рассмотрим последовательность полей Кп = GF(pn'), п = 1,2,... . В силу теоремы 2.1.24 и следствия 2.1.17 можно считать, что Кп С при любом п. Определим на мно-00
жестве К = |J Кп поле следующим образом. Для любых двух элементов п=1
х, у € К, очевидно, найдется такое п, что х, у 6 Кп, тогда сумму и произведение этих элементов можно определить как их сумму и произведение в поле Кп. В силу вложения Кп С Кп^\ это определение не зависит от выбора п и обе операции будут удовлетворять всем аксиомам поля, так как эти аксиомы выполняются в любом поле Кп (для проверки аксиом, касающихся трех элементов х, у, z, надо взять такое п, что х, у, z 6 Кп). Очевидно, любое Кп будет подполем построенного поля К, и так как для любого п число п\ делится на п, то любое поле GF(pn) также будет его подполем. Для любого многочлена f над полем К можно найти такое п, что все его коэффициенты принадлежат подполю Кп, тогда согласно теореме 2.1.13 он разлагается на линейные множители в некотором поле GF(pm), а значит, и в поле К. Тем самым алгебраическая замкнутость этого поля доказана и существование алгебраического замыкания тоже, так как, если бы какое-нибудь подполе К' поля К было бы алгебраически замкнутым, то оно содержало бы любое поле GF(pn) в качестве под поля, так как оно является полем разложения многочлена ХрП - X, в частности, К' содержало бы любое подполе Кп и поэтому совпадало бы с полем К.
Для доказательства единственности предположим, что поле GF(p) имеет два разных алгебраических замыкания F и К и построим изоморфизм между ними. Обозначим Fn подполе поля F, состоящее из всех
74
Глава 2. Конечные поля и эллиптические кривые
корней многочлена Xq - X, q = pn-, и аналогично определим подполе Кп.
00
Очевидно, что Kn С Xn+i, и К — IJ Кп, так как в противном случае п=\ 00
подполе IJ Кп было бы меньшим, чем К алгебраически замкнутым по-п=1
00
лем, содержащим GF(p). Аналогично имеем F = (J Fn. Так как поля Кп П—\
и Fn имеют равный порядок, то они изоморфны. Пусть фп : Fn Кп — изоморфизм между ними. Можно считать, что эта последовательность отображений выбрана так, что фп(х) = фт(х) при любых т > п. Определим отображение ф : F <- К для любого х G F равенством ф(х) = (ж), где х Е Fn. Очевидно, это определение не зависит от выбора п. Если бы у этого отображения нарушалась взаимная однозначность, то она нарушалась бы и для одного из отображений фп. Выполнение всех алгебраических свойств изоморфизма для отображения ф следует из выполнения этих же свойств для отображений фп подобно тому, как выполнение аксиом поля для К вытекало из выполнения этих же аксиом для всех Кп. Тем самым изоморфизм полей установлен и теорема доказана.
Заметим, что, если бы существование алгебраического замыкания было нам известно, то построение теории конечных полей существенно бы упростилось, так как поле GF(pn) можно было бы определить как поле, состоящее из всех корней уравнения Xq - X, q — pn.
2.1.15. Квадратичные вычеты и извлечение квадратных корней в конечных полях
Материал этого раздела будет иметь далее мало приложений, поэтому он изложен конспективно и доказательства оставлены читателю в виде упражнений. Заметим, однако, что эти доказательства придумать самостоятельно трудно, поэтому заинтересовавшегося читателя мы отсылаем к списку литературы.
Число а, а 0 (mod р), называется квадратичным вычетом по модулю р, если существует такое 6, что Ь2 = a (mod р) и квадратичным невычетом по модулю р, если такого b не существует. Таким образом, квадратные корни извлекаются только из квадратичных вычетов и из нуля.
Таблицу квадратных корней можно составить заранее. Ее легко составить, если есть таблицы логарифмов и антилогарифмов по произвольному примитивному элементу этого поля.
Упражнение 2.1.5. Докажите, что для одного из квадратных корней в конечном поле нечетного порядка справедливо равенство
loga л/х - | loga х mod (р - 1),
где р — порядок поля, а деление на два выполняется по модулю р - 1.
Однако для больших полей такие таблицы громоздки, да и их вычисление затруднительно, так как проблема дискретного логарифмирования
2.1. Поля Галуа
75
в больших конечных полях труднорешаема (на этом факте и основана почти вся криптография с открытым ключом). Современные достижения в области дискретного логарифмирования в простых конечных полях см. в [127]. Гораздо проще непосредственно вычислять квадратные корни.
Известен алгоритм Тонелли извлечения квадратных корней, позднее переоткрытый Д. Шенксом. С целью краткости, его мы изложим в виде задач, решения которых можно найти в учебнике И. М. Виноградова по теории чисел (они там содержались задолго до появления работы Д. Шенкса). Задачи эти довольно трудны для читателей, не знакомых с элементарной теорией чисел.
Упражнение 2.1.6. Докажите, что при р = 4k + 3, если а является квадратичным вычетом по модулю р, то квадратным корнем из а по модулю р является ±ak+i. Вообще, в поле GF(q) при q = 4fc-h3 квадратный корень из а, если он существует, вычисляется по формуле ±а*+1.
Указание, (а*4-1)2 = а так как a2k+l = а^~^2 = 1, потому что иначе было бы — 1 = а^-О/2 — (я2)^’1)/2 = xq~l = 1.
Упражнение 2.1.7. Докажите, что при р = 8& 4- 5, если а является квадратичным вычетом по модулю р, то квадратным корнем из а по модулю р является ±а*+12(2А:+1^ где s = 0 или 1. Вообще, в поле GF(q) при q = 8к + 5 квадратный корень из а, если он существует, вычисляется по формуле ±ak+ib<'2k+v>s где s = О или 1, а b — элемент поля, не являющийся квадратом.
Упражнение 2.1.8. Пусть р = 8/с + 1 и N — некоторый квадратичный невычет по модулю р и а — произвольный квадратичный вычет. Обоснуйте следующий быстрый метод извлечения квадратного корня из а по модулю р. Представим р в виде 2kh + 1, к 3, h = 2т + 1. Тогда a2 hmodp = 1, N2 hmodp = -1, a2 hmodp = ±1, поэтому при некотором s2 = 0 или 1 hj^s22 h m0(jp — а2 hj^s22 h mo(jp = ±1, ПОЭТОМУ ПрИ HeKOTOpOM S3 = О, 1 или 3 а2 hNst2 ^modp — 1, а2 'W532 h modp = ±1, и т.д., пока не получим при некотором 0 < sk < 2fc-1 - 1 равенство ahNSk2h modp = 1, значит искомым корнем будет х = ±aSh+{^2NSkh. Аналогично предыдущим упражнениям данное утверждение тоже можно сформулировать для произвольного конечного поля.
Указанный алгоритм имеет сложность O(log2p)4, если нам заранее известен невычет N. Если он неизвестен, его можно найти перебором, если научиться быстро определять по числу, является ли оно вычетом или невычетом по данному модулю. Как это делать, указано ниже. Американский математик Бах [89] доказал в предположении справедливости расширенной гипотезы Римана, что наименьший квадратичный невычет по модулю р не превосходит 21п2р при р > 1000. Поэтому, вероятно, его тоже можно найти со сложностью O(log2 р)4, если применить теорию квадратичных вычетов Эйлера—Лежандра—Гаусса, которую далее мы кратко излагаем в виде задач. За более подробным изложением отсылаем читателя к учебнику И. М. Виноградова или к более сложным книгам [1, 74].
76	Глава 2. Конечные поля и эллиптические кривые
Квадратичные вычеты, закон взаимности и символ Лежандра
Упражнение 2.1.9 (Эйлер). В множестве Z*, р > 2, поровну квадратичных вычетов и невычетов. Произведение квадратичных вычетов есть квадратичный вычет, произведение двух невычетов — опять квадратичный вычет, а произведение квадратичного вычета на невычет — невычет. Число р - 1 является квадратичным вычетом тогда и только тогда, когда р — 4k + 1.
По определению, символ Лежандра (-) равен 1, если а — квадратичный вычет, и равен минус 1, если а — невычет, (~) = 0, если а кратно р.
Упражнение 2.1.10. Докажите, что (£) и имеют равные остатки при делении на р (критерий Эйлера) и (£)(-;) = (у) (мультипликативное свойство символа Лежандра).
Докажите, что
Следующее упражнение труднее предыдущих.
Упражнение 2.1.11 (Лемма Гаусса). Докажите, что:
а)	для любых а и х, не кратных р, остаток от деления ах на р равен остатку от деления ехтх на р, где
1 ТХ	£i = (-1)12oi/₽j;
б)	для любого а, не кратного р, справедливо равенство
\Р/
Упражнение 2.1.12. Докажите, что
Ш=(-1)(р2-|)/8 = ^2«п^. \Р /	4
Указание. Примените упр. 2.1.11.
Пусть в поле GF(q) для данного простого р существует такой элемент С / 1, что — 1.
р-i
Упражнение 2.1.13. Докажите, что сумма 52 Ск равна р при а, кратном р, и равна k=Q нулю в противном случае.
Указание. Применить формулу суммирования геометрической прогрессии.
p-i
Сумма ga = 52 (|)СаА: называется квадратичной суммой Гаусса.
1=0 р
2.1. Поля Галуа
77
Упражнение 2.1.14. Докажите, что да — {^)9\> 9а — 0 при а, кратном р, = д} при а, не кратном р.
Указание. Приме н ить упр. 2.1.10.
Упражнение 2.1.15. Докажите, что
Р-1	/_ 1\
52 9a9-a = { — ) (Р~ 091 = (- О’" *,/2(Р - 09?-
V Р /
Указание. Применить упр. 2.1.14 и упр. 2.1.10.
Упражнение 2.1.16. Докажите, что
Указание. Применить упр. 2.1.13, 2.1.14 и упр. 2.1.10.
Лемма 2.1.2 (Лемма о квадрате суммы Гаусса). Справедливо равенство 9i = (-0(р”1)/2Р-
Доказательство состоит в сравнении результатов упр. 2.1.15 и 2.1.16.
Теорема 2.1.30. Для любых различных простых нечетных р и q
(<L\
\р/ \qJ
{квадратичный закон взаимности Эйлера—Гаусса).
Доказательство. Выберем п такое, что qn = l(modp) и рассмотрим поле GF{qn). Пусть 7 — примитивный элемент в нем. Положим £ = 7^п~1)/р> тогда ( 7^ 1, и (р = 7^П-1 = 1, поэтому определена сумма Гаусса р-1
ga = 52	• Согласно упр. 2.1.14 и лемме 2.1.2
k=Q Р
ga=(-\, ^(-O^V
\pj
Положим р* = (-1)^-1)/2р е GF{q). Согласно лемме 2.1.2 квадратный корень из р* в поле GF{qn) равен ±д^. Поэтому
/ п* \ - =l&gieGF{q).
\Q /
Согласно следствию 2.1.13,	€ GF(q) <=> д<{ = gi- Учитывая теорему 2.1.1,
нечетность q и упр. 2.1.13, 2.1.14, имеем
/ Р~1 /к\	\q Р~1 /к\	/п\
Me к =е □<’*=».=
х к=0 ХР/ 7	к=0
78
Глава 2. Конечные поля и эллиптические кривые
Поэтому
9* = 9'^ (р) = 1’
откуда
Применяя упр. 2.1.10, отсюда выводим, что
=	= J
\qj \р/
Но это тождество равносильно закону взаимности.
Для более изящной формы записи закона взаимности понадобится следующее обозначение. Для любого нечетного числа а выберем а* так, чтобы а = ±а* и а* имело бы вид 4k 4- 1, где к — целое.	
Упражнение 2.1.17. Докажите, что
а)	для любых нечетных а, b
ab* = ab*, а =
б)	для любого простого р > 2
\pj	\р /
в)	для любых простых р, q > 2
/ =
\р) \q)'
Упражнение 2.1.18. Докажите, что
/-3\	2	2тгр
— ) — ___ sin--
\ Р )	Уз	3
Упражнение 2.1.19. Докажите, что при р = 4к + 1 квадратным корнем по модулю р из -1 является ± 1 • 2 • • • 2к.
Квадратичный закон взаимности позволяет быстро выяснять, является ли данное число а квадратичным вычетом по простому модулю р. Для этого нужно вычислить символ Лежандра (~). Если мы умеем разложить число а на простые множители а = р^ ... р%?, то это можно сделать с помощью многократного применения следующей задачи и закона взаимности.
Упражнение 2.1.20. Докажите, что
PJ \Р/	\Р /
2.1. Поля Галуа
79
Применение закона взаимности сводит вычисление (у) к вычислению (£) = (£), где г = р mod , и указанная выше процедура опять применяется, но к уже меньшим числам.
Поскольку неизвестен быстрый алгоритм разложения на простые множители, указанный способ, так же как и аналогичный способ нахождения наибольшего общего делителя двух чисел с известными разложениями на простые множители, применяется только при устном счете.
Символ Якоби и алгоритм Кронекера. К счастью, есть быстрый алгоритм вычисления символов Лежандра, основанный на применении его обобщения — символа Якоби, и очень напоминающий алгоритм Евклида.
Введем символ Кронекера—Якоби (|) следующим образом:
1) если b = 0, то при а = ±1 символ Q) = 1, и равен 0 для других значений а;
2) если b 7^ 0, то запишем его в виде произведения b = YlPt не °бя-зательно различных простых чисел рг и, может быть, одной минус единицы для представления отрицательных чисел, и определим символ Кронекера—Якоби (|) как произведение П (^) символов Лежандра, а также символов
/ а\ ( 0,	если а четно
\2/	(-	-1)/8, если а нечетно
и
/ а \ ( 1, если а > О, \-1 у I-1, если а < 0.
Упражнение 2.1.21. Докажите, что
a)	(f) = 0, тогда и только тогда, когда (a, b) > 1;
б)	Для любых целых а, Ь, с справедливы мультипликативные свойства символа Кронекера—Якоби
( аЪ\	f а\ (Ь\	( а\	(а\ (а\
( — ) = (-)(-)’ = если Ьс °-
\ с )	\с ) \с )	у ОС J	\Ь/ \с/
Упражнение 2.1.22. Докажите, что
а)	при фиксированном целом b > 0 символ Кронекера—Якоби как функция «числителя» а является периодической с периодом b в случае bmod4 и периодом 4Ь в противном случае;
б)	при фиксированном целом а 0 символ Кронекера—Якоби как функция «знаменателя» b является периодической с периодом |а| в случае a mod 4 = 0 или 1, и с периодом 4|а| в противном случае.
80
Глава 2. Конечные поля и эллиптические кривые
Упражнение 2.1.23. Докажите, что следующие равенства справедливы для любых нечетных натуральных чисел р, q:
(—= (—
\ Р /
\Р/
\Р/ \я/
Упражнение 2.1.24. Следующие равенства справедливы для любых нечетных целых чисел р, q при q > 0
Упражнение 2.1.25 Алгоритм Кронекера.
А.	{Проверка b на равенство нулю.) Если b = 0, то (j) = 1, если |а| — 1, и (|) — 0 в противном случае.
Б. {Удаление двоек из Ь.) Если а, b оба четные, то (|) = 0. В противном случае полагаем v равным наибольшей степени двойки, делящей Ъ и заменяем b на 2~vb. Если v четно, полагаем k = 1, иначе берем к = (-1)(а ~1)/8. Если b < 0, то меняем перед ним знак, а если к тому же а < 0 меняем знак у к.
В.	{Проверка а на равенство нулю.) Если а = 0, то при b > 1 выход алгоритма равен 0, а при b — 1 выход равен к и работа закончена.
Г. {Удаление двоек из а.) В случае а / 0 полагаем v равным наибольшей степени двойки, делящей а и заменяем а на 2~va. Если v четно, умножаем к на (-1/б2-1)/8.
Д. {Применение закона взаимности и шаг Евклида.) Умножаем к на (- 1)(а-1)(6-1)/4, полагаем г = |а|, заменяем а на b mod г и b на г и возвращаемся к пункту В. Докажите, что этот алгоритм действительно вычисляет символ Кронекера— Якоби.
Упражнение 2.1.26. Покажите, что для вычисления (-1)(а -1>/8 достаточно найти amod 8 и воспользоваться таблицей {0, 1, 0,-1, 0, -1, 0, 1}. Для вычисления (_1)(а-1)(ь-!)/4 достаточно найти a mod 4, b mod 4 и воспользоваться заранее вычисленной таблицей.
Применяют алгоритм Кронекера в основном для вычисления символов Лежандра, но в промежуточных вычислениях возникают символы Кронекера—Якоби, благодаря использованию которых фактически удается применить даже некоторый ускоренный вариант алгоритма Евклида. При использовании только лишь символов Лежандра применить алгоритм Евклида до конца редко удается и приходится использовать разложение на множители промежуточных результатов, что легко выполнить при работе с маленькими числами и практически невозможно с большими. Упражнение 2.1.27. Докажите, что битовая сложность алгоритма Кронекера (т. е. число выполняемых им операций над нулями и единицами), применяемого к п-разрядным числам, равна О{п2).
2.1. Поля Галуа
81
Упражнение 2.1.28. Докажите, что на последнем шаге алгоритма Кронекера вместо a = frmodr в случае a > т/2 можно взять a - г. Тогда всегда будет выполняться неравенство 0 < a < Ъ/2 и алгоритм будет несколько быстрее.
Упражнение 2.1.29. Покажите по аналогии с бинарным алгоритмом Евклида как модифицировать алгоритм Кронекера так, чтобы в нем не выполнялись операции деления с остатком, а только операции вычитания.
В заключение этого раздела кратко опишем еще один алгоритм извлечения квадратных корней по модулю простого числа (т. е. в поле GF(p)). Этот алгоритм основан на идее, опубликованной итальянским математиком Чиппола в 1907 г., и работает несколько быстрее алгоритма Тонелли. С целью краткости изложим его обоснование в виде задач. Пусть нам надо извлечь квадратный корень по модулю р из данного числа а. Тогда его можно рассматривать как квадратичный вычет в поле GF(p), т. е. символ Лежандра (|) = 1. Выберем случайное целое число t в отрезке от нуля до р - 1, такое, что t2 - а является квадратичным невычетом, т. е. символ Лежандра () = -1.
Упражнение 2.1.30. Докажите, что вероятность удачного выбора числа t равна (Р- 1)/(2р).
Повторяем выбор числа t до тех пор пока не найдем требуемое. С высокой вероятностью успех будет достигнут не более чем на десятой попытке. Применяем для вычисления символа Лежандра алгоритм Кронекера. Тогда оценка сложности процедуры поиска подходящего t с высокой вероятностью будет равна <9(log2p)2.
Построим квадратичное расширение поля GF(p) путем присоединения к нему корня а неприводимого квадратного трехчлена х2 - (t2 - а). Тогда элементы указанного расширения представляются в виде а 4- Ьа, где а, Ъ 6 GF(p). Операция умножения определяется формулой
(а 4- ba)(c + da) = ас + bda1 4- (ad + bc)a.
Сложение определяется формулой
(а 4" ba) 4~ (с 4~ da) — (а 4~ с) 4~ (b 4~ d)a.
Упражнение 2.1.31. Докажите, что указанное множество относительно определенных выше операций образует поле, Изоморфное полю GF(p2). Докажите, что умножение в этом поле можно свести к Четырем умножениям в поле GF(p). Если обозначить М(п) сложность умножения двух п-разрядных чисел, то сложность умножения в поле GF(p2) асимптотически будет не больше 12M(log2p), а для чисел специального вида асимптотически не больше 4M(log2p).
Возьмем x — (t-\-a)^+l^2eGF(p2). Тогда на самом деле xtGF(p) и ж2 = а. Упражнение 2.1.32. Докажите следующие равенства в поле GF(p2)\
ар-{ = (t2 - а)^2 = -1, ар - -а, ар+1 - -a2, tp+l = t2, tp = t, x2 — (t 4- a)p+1 = tp+l 4- (p 4- l)tpa 4- (p 4- \)tap 4- op+1 =
= t2 4- ta - ta - a2 = t2 - (t2 - a) — a.
82
Глава 2. Конечные поля и эллиптические кривые
Указание. В формуле бинома (а + все коэффициенты, кроме крайних, делятся на р. Остается заметить, что х 6 GF(p), так как все корни уравнения х1 = а лежат в поле GF(p).
Оценка сложности алгоритма Чипполы вытекает из следующего утверждения.
Упражнение 2.1.33. Сложность вычисления элемента х = (£ + а)^+1^2 оценивается асимптотически как 12Z((p + l)/2)M(log2 р) ~ 12M(log2p) log2p, а для чисел р специального вида как 4М (log2 р) log2 р, где 1(п) — длина кратчайшей аддитивной цепочки для п (см. разд. 4.6.2).
2.2. Эллиптические кривые
2.2.1. Алгебраические кривые и эллиптические кривые
Теория эллиптических кривых является одним из важнейших разделов алгебраической геометрии, точнее ее раздела, изучающего плоские алгебраические кривые (вообще об алгебраической геометрии см. фундаментальную монографию [79], а о плоских кривых — доступно написанную книгу [71]). Она тесно связана также с комплексным анализом3) и с теорией чисел4), до сих пор интенсивно развивается и чрезвычайно обширна и сложна. В ее создании принимали участие многие крупнейшие математики прошлого, а начинается она с последнего из великих древнегреческих математиков — Диофанта. Структуру группы на эллиптических кривых определил знаменитый французский математик Анри Пуанкаре. Долгое время теория эллиптических кривых являлась чистейшей областью математики, не имеющей за ее пределами никаких приложений. Представление об этой теории и ее взаимосвязях с другими разделами математики можно получить, заглянув, например, в книги [25,46,48,63].
В восьмидесятые годы прошлого века теория эллиптических кривых получила приложения в области построения алгоритмов факторизации больших чисел (см., например, [20,69]) и через эти приложения вошла в криптографию (как в ее области, связанные с построением криптосистем с открытым ключом, протоколов распределения ключей, и протоколов цифровой подписи, так и в области классической криптографии, связанные с генерацией псевдослучайных последовательностей).
В криптографии с открытым ключом эллиптические кривые являются основой ряда алгоритмов ЕСС — криптографии на эллиптических кривых. Для краткости мы иногда называем ее просто эллиптической криптографией. Идея создания эллиптической криптографии была выдвинута в 1985 г. независимо в работах В. Миллера и Н. Коблица. Интерес в криптографии к эллиптическим кривым обусловлен, с одной стороны, тем, что они являются богатым источником конечных абелевых групп,
3) А именно, с теорией эллиптических функций, см., например, [51].
4) В частности, с диофантовым анализом, см., например, [70].
2.2. Эллиптические кривые
83
обладающих полезными структурными свойствами, так и тем, что на их основе обеспечиваются те же криптографические свойства, которыми обладают числовые или полиномиальные криптосистемы, но при существенно меньшем размере ключа.
Далее мы даем краткое и ориентированное только на последующие приложения введение в теорию эллиптических кривых.
Алгебраической кривой порядка п над полем F называется множество точек (ж,?/), х,у G F, удовлетворяющих уравнению F(X,Y) = 0, где F(X,Y) многочлен степени п с коэффициентами из F. Уточним, что под степенью одночлена понимается сумма степеней входящих в него переменных, а под степенью многочлена — максимальная степень составляющих его одночленов.
Пример 2.2.1. Степень одночлена 7X3Y2 равна 5, а степень многочлена 7X3Y2 + 2Х4 + 6У2 + ЗТ2У4 равна 6.
Пары (х,у) € F2 элементов поля F, удовлетворяющие уравнению кривой, называются ее точками.
Кривая, определяемая уравнением первой степени аХ + bY + с — О, называется прямой.
Криваяопределяемая уравнением второй степени
Ч- с^-АГУ Ч~ ^22-^ Ч- Q>\X Ч- a^Y do = О, называется кривой второго порядка.
Пример 2.2.2. Над полем действительных чисел среди таких кривых, кроме эллипсов, гипербол и парабол, встречаются и вырожденные кривые, которые представляют собой пару прямых (иногда совпадающих), они тоже определяются уравнением второго порядка
(а.Х + b{Y + С!)(а2Х + b2Y + с2) = 0.
Точка (#о, Уъ) кривой F(X,Y) = 0 называется неособой, если в ней не равны нулю обе частные производные многочлена F(X, У).
Поясним, что здесь частные производные |у, ~ определяются известными формальными правилами дифференцирования, применяемыми к многочленами над произвольным полем, а именно
WlH + втс) № SG кс	-	м	+ BY>ax
(линейность дифференцирования)	и
d(HG)	dH^	dG
дХ	dXG+	dXF
(правило Лейбница), из которых следует, что, если многочлен F(X, У) записан по степеням X как
F(X, У) = Л0(У) + Ax(Y)X + ... + An(Y)Xn,
84
Глава 2. Конечные поля и эллиптические кривые
то
dF
— = Л,(У) + 2A2(Y)X + ... + nAn(Y)Xn~],
О А
и аналогичные правила справедливы для частного дифференцирования по переменной Y.
Кривая называется неособой, или гладкой, если все ее точки неособые. В любой такой точке (х, у) к ней можно провести касательную, т. е. прямую, определяемую уравнением
z	х dF
(X - х) -— v	7 дХ
z х 9F
+ <!'-!') да
(X,Y)=(x,y)
= 0. (X,Y)=(x,y)
Неособая кривая третьего порядка над полем F и называется эллиптической кривой над тем же полем, если на ней есть хотя бы одна точка. Но если даже таких точек нет, то они могут появиться, если рассмотреть эту кривую над каким-нибудь расширением поля F. Рассмотрение той же кривой над расширением поля далее будет часто использоваться.
Ньютон доказал, что над полем действительных чисел любую эллиптическую кривую можно преобразовать к виду У2 = Х3 + аХ + Ь (получившему позже название формы Вейерштрасса) с помощью замены координат вида
= lyxpo г2(х,у)  /3(х,у)’	’ z3(x,y)’
где lj 0 — линейные функции (проективной замены координат).
Упражнение 2.2.1. Проверьте, что кривая Ферма X3 + У3 = 1 заменой X := ЗХ/У, У := (У - 9)/У сводится к кривой У2 - 9У = X3 - 27, и далее к кривой вида Y2 = X3 - 27/4.
В случае произвольного поля всякую эллиптическую кривую можно преобразовать к виду
У2 + й]ХУ + а3У = X3 + а2Х2 + а4Х + а6, a,eF, (2.10)
также называемому формой Вейерштрасса. Далее для произвольного поля используем следующее определение.
Эллиптической кривой Е над полем F называется гладкая кривая, задаваемая уравнением вида (2.10).
Будем обозначать E(F) множество точек (х,у) G F2, удовлетворяющих этому уравнению, и содержащее, кроме того, бесконечно удаленную точку, обозначаемую О.
Пока что мы ограничиваемся представлением о бесконечно удаленной точке О, как о точке, расположенной бесконечно далеко в положительном направлении оси У и рассматриваемой в качестве третьей точки пересечения множества E(F) и любой вертикальной линии. Всякая такая линия пересекается с этим множеством в точках (дц, yi), (х^, У1), О.
2.2. Эллиптические кривые
85
Если К — расширение поля F, то Е(К) обозначает множество точек (х, у) €К2, удовлетворяющих (2.10), вместе с точкой О. В определение эллиптической кривой удобно включить и требование ее гладкости и для алгебраически замкнутого расширения К поля F (т. е. такого расширения, в котором любой многочлен имеет корень). Иными словами, два уравнения
a.Y - ЗХ2 - 2а2Х - а4 = 0,
2Y + а\Х +	= 0	1 ’
не должны удовлетворяться одновременно ни в одной точке (ж, у) 6 Е(К).
Странная, на первый взгляд, нумерация индексов и странное название (эллиптическая кривая) объясняется следующим образом. В частном случае, когда а\ = 03 = 03 = о^ = 0, а4 = -1, эллиптическая кривая
V2 = Y3 - Y
над полем R действительных чисел при больших X ведет себя как функция Y = X3/2, которая может быть параметризована подстановкой X = Т2 и Y = Т3. Если считать, что X имеет степень 2, а У имеет степень 3, индексы коэффициентов в (2.10) определяют степени, которые должны быть даны коэффициентам, чтобы это уравнение стало однородным, т. е. чтобы степень каждого члена была равна 6 (в общем случае эллиптическая кривая не имеет рациональной параметризации). Кривой У2 = /(X) соответствует эллиптический интеграл
Г dX
J VW)’
не берущийся в элементарных функциях. Эллиптические интегралы, в свою очередь, связаны с вычислением длин дуг эллипсов (см. об этом [48, 63]). Их изучение началось в XVHI в. в работах Фаньяно, Эйлера и Лежандра.
Дискриминант и инвариант эллиптической кривой. В зависимости от характеристики поля F общее уравнение эллиптической кривой может быть упрощено. Если поле F не является полем характеристики 2, то без потери общности можно полагать, что <Zi = 03 = 0, т. е. вместо уравнения (2.10) рассматривать уравнение
У2 = X3 + а2Х2 4- а4Х 4- а6, аг € F.	(2.12)
Если характеристика поля не равна 2, 3, то после упрощения левой части (2.12), линейной заменой переменной (а именно, X = X - |й2) можно также удалить член X2 и без потери общности полагать, что кривая задана Уравнением вида
У2 = X3 4- аХ 4- Ь, а, Ь, € F, char F £ 2, 3.	(2.13)
86
Глава 2. Конечные поля и эллиптические кривые
В частности, в таком виде представимы эллиптические кривые над полем нулевой характеристики, например, эллиптические кривые над полем R действительных чисел. Последние, хотя и не применяются в криптографии, допускают графическую интерпретацию самой кривой и наглядное объяснение важных ее свойств.
С уравнением (2.13) эллиптической кривой Е можно связать дискри-
минант
а\2	( b\2	4a3 + Zlb2
3/ + V/
(2-14)
многочлена х3+ах+Ь и не изменяющийся при линейных преобразованиях
j-инвариант
(2.15)
Понятие дискриминанта и j -инварианта в общем случае кривой (2.10) выглядят более громоздко. А именно,
Д - -b22bs - 8^ - 27^ + 9Ь2Мб, где Ь2 = а2 4- 4а2, &4 = 2а4 + а^з, h = а] + 4а6, Ь8 = а2а^ + 4а2а6 -а1аза4 И- а2а^
с3 c4 = b2 — 24b4.
Если Д = 0, то указанный многочлен имеет кратные корни и в точке (ж, 0) нарушается условие гладкости кривой. Вообще справедлива
Теорема 2.2.1. Кривая Е гладкая тогда и только тогда, когда ее дискриминант ненулевой.
Доказывать ее мы не будем. Отметим еще без доказательства, что при том же условии эта кривая не имеет рациональной параметризации.
Уточним, что мы имели в виду выше под возможностью упрощения вида уравнений для эллиптических кривых.
Определение 2.2.1. Две кривые Е и Е1 над полем F называются изоморфными, если они переходят друг в друга при допустимой замене координат
Х:=и2Х + г, У :=u3Y + u2sX +t.
Далее с целью краткости некоторые факты излагаются в виде упражнений для интересующегося читателя.
Упражнение 2.2.2. Проверьте, что множество допустимых преобразований координат образует группу относительно операции композиции преобразований.
Упражнение 2.2.3. Проверьте, что множество всех эллиптических кривых над данным полем разбивается на классы эквивалентности относительно отношения изоморфизма.
2.2. Эллиптические кривые
87
Упражнение 2.2.4. Докажите, что любая эллиптическая кривая над полем F характеристики + 2 изоморфна кривой вида
У2 = X3 + а2Х2 + а4Х + о6, a, € F.
Указание. Сделать замену координат
О|	а3
Х:=Х, Y:=Y-^X--^-.
2	2
Упражнение 2.2.5. Докажите, что любая эллиптическая кривая над полем F характеристики •=/= 2,3 изоморфна кривой вида
У2 = X3 + a4X + а6) а, € F.
Указание. Применить предыдущее утверждение и сделать замену координат
^2
Х:=Х-^, Y:=Y.
3
Упражнение 2.2.6. Докажите, что любая эллиптическая кривая над полем F характеристики 2 изоморфна кривой вида
У2 + XY = X3 + a2X2 + а6, at € F, или кривой вида
У + a3Y — X + сцХ ^6?	£ F.
Указание. Если 0, сделать замену координат
Х:=а\Х + —, У := а3У
01 и получить уравнение вида
У2 + XY = X3 + а2Х2 + а4Х + а6, а, 6 F, а потом сделать замену координат вида
Х:=Х, У := У + а4.
Если fli = 0, сделать замену координат
X := X + а2, У = У
Эллиптические кривые, неизоморфные над данным полем F, могут быть изоморфными над его расширением. Справедлива
Теорема 2.2.2. Дее кривые изоморфны над алгебраическим замыканием поля F тогда и только тогда, когда они имеют равные j -инварианты.
Доказательство. Для доказательства теоремы достаточно проверить, что при выполнении произвольной допустимой замены координат коэффициенты уравнения преобразуются по следующим формулам:
ua\=a^ +25, u2a2 = a2-зо^ + Зг - s2, u3a3 = a3 + rai+2t,
u4a4 = a4 - sa3 + 2ra2 ~ (t + rs)a\ + 3r2 - 2st,
u6 a6 = a6 + ^4 + r2a2 + r3 - ta3 -t2 - rta},
u2b'2 = b2 + 12r, u4b\ = &4 + rb2 + 6r2, u6b'6 = b6 + 2r&4 + r2b2 + 4r3,
Л'8 = &8 + Зг&6 + Зг2&4 + г362 + Зг4, tz4c4 = c4, 'uec6 = ce, u12Az — A. 
88
Глава 2. Конечные поля и эллиптические кривые
Справедлива также
Теорема 2.2.3. Для каждого j G F существует эллиптическая кривая над F с инвариантом j. Если j £ {0, 1728}, то такой кривой является
Y2 + XY — X3
36 х 1
j - 1728 J- 1728’
для которой С4 = ^_{728, А =	• Группа автоморфизмов любой кривой
конечна. При j £ {0, 1728} она состоит только из двух автоморфизмов. Нетривиальный автоморфизм задается преобразованием
Х=Х, Y :=Y -а^Х -а3.
Ее мы оставляем без доказательства.
Характерные формы эллиптической кривой над полем действительных чисел приведены на рис. 2.1 (кривые с отрицательным дискриминантом) и на рис. 2.2 (кривая с положительным дискриминантом).
Рис. 2.1. Эллиптическая кривая с отрицательным дискриминантом
Рис. 2.2. Эллиптическая кривая с положительным дискриминантом
В случае характеристики 2 левая часть уравнения (2.10) имеет вид У2 + a3Y в случае суле^см«гулярнб/хэллиптических кривых и Y2 + aj XY, а\ 0, в случае несуперсингулярных эллиптических кривых. Заметим, что тогда иа\ = а\, С4 = Ь2 = aj, значит j-инвариант j = 0	= 0.
Для полей характеристики 2 можно, выбирая подходящие г, s, t в допустимом преобразовании координат, положить = 1 в несуперсингу-лярном случае:
Y2 + XY = X3 + а2Х2 + а6, <ц £ F.	(2.16)
Тогда 62 = 1,	= &б = 0, &8 = с4 = 1, А = (Ц, j — 1/^6-
Завершая обзор типов уравнений эллиптических кривых заметим, что кривые над полем характеристики 3 описываются уравнением (2.12), которое при aq 0 к виду (2.13) не приводится.
2.2. Эллиптические кривые
89
2.2.2.	фуппа точек эллиптической кривой
На множестве E(F), состоящем из точек эллиптической кривой (2.10) и еще одного элемента — бесконечно удаленной точки кривой (формально пока не являющейся точкой кривой), можно определить операцию, обладающую свойствами операции абелевой группы. Принято получающуюся при этом группу рассматривать как аддитивную группу, а операцию называть операцией сложения и обозначать, как обычно, знаком плюс. Упомянутая дополнительная точка выполняет роль нейтрального элемента (в аддитивной записи — нуля) этой группы и обозначается О.
По определению, полагаем для любой точки (ж, у) 6 E(F)
(ж, у) 4- О = О + (ж, у) - (ж, у), О + О = О.
Чтобы определить в общем случае операцию сложения абелевой группы, сначала покажем, что каждой точке (ж, у} эллиптической кривой можно сопоставить в определенном смысле симметричную точку (далее будет ясно, что такая точка и будет точкой -(ж, у), противоположной к (ж, у) точкой в группе данной кривой). Заметим, что вместе с точкой (ж, у) кривая имеет и точку
(х, у) = (х,-а}х-а3-у).	(2.17)
В этом нетрудно убедиться непосредственным вычислением левой и правой частей уравнения (2.10) при X = ж, Y = -а\Х- а^-у и учитывая, что при X = ж и Y = у имеет место равенство. Симметричность проявляется в том, что, как нетрудно проверить, по тому же правилу точке (ж, у) со-
ответствует исходная точка, так как имеет место инволютивный закон', (х, у) — (ж, у). Обратим внимание, что, если уравнение приведено к виду (2.12) (что возможно, если charF 2), то (ж,^) = (ж, -у). В частности, если кривая определена над полем R действительных чисел, то точки (ж, у) и (х, -у) располагаются на прямой Y = ж симметрично относительно оси абсцисс (рис. 2.3).
Для суперсингулярных и несуперсингу-лярных кривых характеристики 2 симметричная точка (ж, у) определяется соответственно уравнениями
(х,у) = (х,у + 1)
Рис. 2.3. Противо-
положные точки
(2-18)
(частный случай уравнения (2.17) при ai = 0, ay = 1) и
(ж, у) = (х, х + у)
(2-19)
(частный случай уравнения (2.17) при ai = 1, вз = 0).
Будем считать, что (ж, у) + (ж, у) = О и обозначать (ж, у) = -(ж, у). Как видим, множество E(F) удовлетворяет двум аксиомам группы (су-
90
Глава 2. Конечные поля и эллиптические кривые
шествует нулевой элемент и каждому элементу соответствует противоположный элемент)
Операция сложения пока что определена нами для случаев, когда хотя бы одно слагаемое есть О или слагаемые (х\,у\) и (^2,^/2) таковы, что Х\ — хъ и = У\ или, что то же самое, у\ = у2-
Осталось определить сумму (жь у^) + (х2, У2) для остальных случаев, когда
Х\ Ф Х2	(2.20)
или
Х\ = Х2, и У2^У\ (или, что то же, у\ / У 2)-	(2.21)
Упражнение 2.2.7. Покажите, что в случае (2.21) г/2 — У1-
Пусть Р = (жь ?/i) и Q — (яь, У2) Две точки эллиптической кривой, удовлетворяющие условию (2.20), и ни одна из них не есть О. Обозначим Л(ж], Х2, yi, У2) 7^ 0 элемент поля F такой, что прямая на плоскости F2
£ = {(®, у) \ У - У\ = Д-Р, <?)(* - аД} (2-22) содержит эти две точки эллиптической кривой E(F).
Такой элемент легко вычислить:
X(P,Q) = X(xt,x2,yi,y2) = ^^.	(2.23)
Х2 — Х\
Если же Р = Q = (ж',?/') (т. е. имеет место условие (2.21), вместо прямой (2.22) будем использовать прямую
Г' = {(ж, у) \ у - у' = А'(Р)(ж - х')},	(2.24)
где
= _ 9F(X,Y)/dX [ > 9F(X,Y)/dY Х=х,у=у,
aiY - ЗХ2 - 2а2Х - а4 2У 4- О\Х 4~ аз
Очевидно, она содержит точку Р — Q. Отметим, что знаменатель в выражении (2.25) в рассматриваемом случае не может быть нулевым.
Упражнение 2.2.8. Проверьте это.
Покажем, что кроме точек Р и Q множество (2.22), как и множество (2.24), содержит еще одну точку R эллиптической кривой (2.10). В случае прямой (2.22) эта дополнительная точка может совпасть с точкой Р или с точкой Q, т. е. одна из этих точек может быть кратным корнем уравнения (2.22). Такая точка называется точкой инфлекции.
Уравнения прямых (2.22) и (2.24) равносильны соответственно уравнениям Y — XX 4- /3, где А — А(Р, Q), /3 = у\ - A#i и Y = Х'х' + Д', где Л' = Л'(Р), Д' = у' -Х'х'.
(2.25)
X=x,.Y=iil
2.2. Эллиптические кривые
91
Точка (ж, Хх 4- (3) е С (или точка (ж, А'ж 4- /3') Е £') лежит на эллиптической кривой только в том случае, когда
(Хх 4- (З)2 4- &\х(Хх 4- /3) 4- аз(Хх 4- /3) = х3 4- а2х2 4- а^х 4-или соответственно
(А'ж 4- /З')2 4- aix(A,x 4- /3') 4- аз(А,ж 4- /3') = х3 4- а2х2 4- а$х 4- «6-
Отсюда следует, что кубическое уравнение
(АХ + 0)2 + ajX(AX + /3) + а3(АХ + /3) = X3 + а2Х2 + а4Х + а6 или соответственно
(А'Х + /З')2 + а,Х(А'Х + р') + а3(А'Х + /3') = X3 + а2Х2 + а4Х + а6 имеет (с учетом кратности) три корня, среди них Xi и х2 (или дважды х), так как (х\, Axi 4- /3) и (х2, Хх2 4- /3) (или (х, Х'х 4- /3')) являются точками Р и Q (точкой Р) кривой.
Воспользовавшись теоремой Виета, согласно которой сумма корней нормированного многочлена равна взятому со знаком минус коэффициенту 7 (или 7') при степени, предшествующей старшей степени, мы можем определить и третий корень Хз — у - Xi - х2 (или = 7' — 2ж) уравнения, а затем вторую координату уз — у\ 4- А(#з - Х\) (или уз — у 4- Х'(хз - Ж1)) третьей точки эллиптической кривой, принадлежащей прямой (2.22) (или (2-24)).
Это позволяет получить выражение для хз и, следовательно, для обеих координат третьей точки
R = (®з, Уз) = (7 - Ж1 - х2, yi + А(х3 - ®]))	(2.26)
эллиптической кривой на прямой (2.23) через координаты xlt х2, У1,у2-Аналогично определяются координаты точки
R = (х3, Уз) = (У — 2ж, ?/ 4- А'(ж3 - ж))	(2.27)
на прямой (2.24).
Определение 2.2.2. При условиях (2.20) или (2.21) суммой двух (в случае (2.21) — совпадающих) точек эллиптической кривой объявляется точка
P + Q = -R = -(x3,y3)	(2.28)
или
Р + Р = 2Р = -R = -(хз, Уз),	(2.29)
где R = (хз, уз) — третья точка (2.26) или (2.27) принадлежащая множеству (2.22) или (2.24) соответственно.
Заметим, что соблазнительно назвать суммой точек Р, Q саму точку R. Но так определенная операция сложения не будет удовлетворять очевидному свойству
Р + Q = R Р = R - Q операции сложения аддитивной группы.
92
Глава 2. Конечные поля и эллиптические кривые
Общая схема алгоритма сложения или удвоения для группы точек эллиптической кривой и конкретные формулы для вычисления координат третьей точки, когда ни одно из слагаемых не есть точка О и когда эти слагаемые не взаимно противоположны, рассматриваются в гл. 1 во второй книге [18].
Если кривая определена над полем R действительных чисел, множество С есть в самом деле прямая, проходящая через точки Р и Q кривой и пересекающая ее в третьей точке R. Суммой является противоположная к R точка -R (рис. 2.4).
Эта точка R может оказаться точкой инфлекции и совпасть с одной из точек Р или Q (рис. 2.5).
Рис. 2.4. Сложение точек (общий случай)
Рис. 2.5. Сложение точек с инфлекцией
Прямая С есть касательная к кривой в точке Р = Q. Тогда R есть точка пересечения касательной с кривой, 2F есть точка, противоположная к R точка -R (рис. 2.6).
Пример 2.2.3. На кривой У2 = X3-362Г возьмем точки Р — (-3,9), Q = (-2,8). Тогда при вычислении (используя формулы для кривых характеристики, не равной 2 или 3, из гл. 1 во второй книге [18]) Р + Q находим — 6, ?/з — 0, а при вычислении 2Р находим Ху — 25/4, у3 = -35/8.
Упражнение 2.2.9. Если Р — (ж, 0), то 2Р = 0, ЗР = Р, 4Р = 0, и т. д.
Заметим, что описанная операция коммутативна и в рассмотренных случаях (2.21) и (2.22), поскольку А(#[,	У\, yi) — A(?/i, Уг, xi9 х{)
и А'(ж, у) = Х'(у,х).
Справедлива следующая теорема Анри Пуанкаре:
2.2. Эллиптические кривые
93
Теорема 2.2.4. Множество E(F) (множество точек эллиптической кривой вместе с точкой бесконечности О) с операцией сложения, описанной выше, является абелевой группой.
Доказать ассоциативность операции в этой группе можно, используя явные формулы для вычисления координат точки (х^, у^), рассматриваемые далее. Но эти вычисления чрезвычайно громоздки.
Без вычислений можно вывести ассоциативность из следующей теоремы теории алгебраических кривых
Теорема 2.2.5. Пусть три прямые С\, С2, Су пересекают кубическую кривую в девяти точках Р\, Pi,... , Р9 с возможными совпадениями и пусть С\, £'2,	— три прямые, пересекающие кривую в точках Q\,Q2,..., Qg.
Если Pj — Qi для i — 1,..., 8, то также Pg = Qg.
Из этой теоремы легко вывести тождество ассоциативности
Pi + (Р2 + Рз) = (Р1 + Р2) + Рз.	(2.30)
Заметим, что для доказательства тождества ассоциативности можно предполагать, что все точки конечные, т. е. РгО, в противном случае оно очевидно.
Упражнение 2.2.10. Проверьте все же его и в этом случае.
Для доказательства этого тождества с использованием теоремы 2.2.5 заметим, что точки Р3, -Р3, О лежат на некоторой вертикальной прямой Ц (т. е. прямой, определяемой уравнением вида X = а), так как эта прямая проходит через бесконечно удаленную точку О, точки -Р\, -Рг, Р\ + Р2 лежат на некоторой прямой /2, точки Pi, Р2 + Р3, Т\ — ~(Р\ + (Р2 + Рз)) лежат на некоторой прямой Z3, точки Рь -Pi, О лежат на некоторой вертикальной прямой тп\, точки -Р2, -Рз, (Р2 +Рз) лежат на некоторой прямой т2, и точки Р3, Pi + Р2, Т2 = -((Pi 4- Р2) + Рз) лежат на некоторой прямой m3. Применяя теорему 2.2.5, получаем, что Т\ — Т2, что и требовалось доказать.
Заметим, однако, что теорему 2.2.5 в полной общности доказать непросто. Во первых, это теорема проективная, и среди упомянутых в ней точек Pi может встречаться бесконечно удаленная (а в нашем примере ее применения она действительно встречается). Во вторых, среди точек Pi могут быть совпадающие (и в нашем примере ее применения они тоже могут быть). Если же, например, совпадают точки Q\ и Q2 среди точек Q\,Q2, Q3 лежащих одновременно и на одной прямой, и на данной кривой, то это означает, что эта прямая является касательной в точке Qi = Qi, к данной кривой. Случаев касания среди данных шести прямых может быть довольно много, и каждый из них с точки зрения обычной (аффинной) геометрии определяет свою конфигурацию, не похожую на другие. С точки зрения же проективной геометрии все эти случаи одинаковы, однако провести доказательство, годящееся в общем случае, непросто. Можно вначале рассмотреть случай общего положения, когда
94
Глава 2. Конечные поля и эллиптические кривые
все девять точек Рг различны, тогда остальные случаи можно вывести из общего случая аккуратно обоснованным предельным переходом. Однако эту идею реализовать непросто, тем более, что теорему надо доказать для произвольных полей, в том числе конечных.
Вернемся к доказательству теоремы 2.2.4, а именно к доказательству свойства 2.30 ассоциативности операции группы точек эллиптической кривой.
Вначале мы разберем случай общего положения5), но сделаем для любого поля и без использования приведенной выше теоремы.
Воспользуемся следующими несложными леммами, которые оставляем читателю в виде упражнений.
Упражнение 2.2.11. Если l(X,Y) = аХ + bY 4- с,Ъ 0, то любой многочлен /(X, У) степени 3 представим в виде Z(X, У)^(Х, У) 4- r(X), degr(X) < 3. Если 1(Х} — аХ + с, а 0, то любой многочлен f(X, У) степени 2 по переменной У представим в виде l(X)q(X,Y) + r(y), deg r(Y) < 2.
Указание. Разложить по степеням одной переменной и применить школьную теорему Безу.
Упражнение 2.2.12. Если кривая третьего порядка не содержит целиком данную не вертикальную прямую, то она пересекается с ней не более чем в трех точках с учетом кратности.
Указание. Пусть кривая имеет вид f(X, У) = 0, а прямая 1(Х, У) = 0. Тогда
/(X, У) = l(X, Y)q(X, У) + г(Х), г(Х) 0, deg г(Х < 3),
и если (хг, уг) — точки пересечения I = 0 с f = 0, то г(хг) = 0.
Упражнение 2.2.13. Если кривая, в уравнение которой У входит не выше чем во второй степени, не содержит целиком данную вертикальную прямую, то она пересекается с ней не более чем в двух точках с учетом кратности.
Указание. Пусть кривая имеет вид f(X, У) = 0, а прямая 1(Х) = 0. Тогда
/(X, У) = l(X)q(X, У) + г(У), г(У) 0, deg г(У) < 2,
и если (хг, уг) — точки пересечения I — 0 с f = 0, то г(уг) = 0.
Упражнение 2.2.14. Система уравнений
X[d[ XzCtz Т З'З^з ~ 0?
Х]Ь{ Я- 4“ «^з^з ~ 0
всегда имеет ненулевое решение.
Указание. Три двумерных вектора всегда линейно зависимы.
Упражнение 2.2.15. Если кривая третьего порядка содержит две разных прямых, то она является объединением трех прямых.
5) То есть допустим, что точки О, —Рз, Рз прямой Ц , точки -Р], -Рг, Pi -ТР2 прямой I2, точки Pi, Р2 4- Р3, Ti = -(Pi -4 (Рг 4- Рз)) прямой 13, точки О, -Pi, Pi прямой mi, точки -Рз, — Р2, Р2 + Р3 прямой m2, и точки Р3, Pj 4-Р2 прямой m3 попарно не совпадают друг с другом и также, что на каждой прямой не менее четырех точек.
2.2. Эллиптические кривые
95
Указание. Если кривая f — 0 содержит прямые Ц = 0, то f =	, кривая q{ = О
содержит все точки прямой 12, кроме м.б. одной, значит = 1213.
Рассмотрим, кроме данной эллиптической кривой F(X, Y) = 0, еще две кривые третьего порядка
L(X, Y) = Li(X)L2(X, Y)L3(X, Y) = О,
М(Х, Y) = Mi(X)M2(X, Y)M3(X, У) = О,
где Li, Mi — уравнения прямых Ц, mi соответственно. Заметим, что первая из них приводимая кривая, ее множество точек совпадает с объединением трех прямых Ц, причем степень многочлена L(X,Y) по переменной У не выше двух. Аналогичные утверждения справедливы и для кривой M(X,Y) — 0. Напомним, что по предположению в приведенной выше конфигурации все точки различны (кроме Тг, равенство которых мы сейчас докажем). Значит, и все прямые различны, иначе бы некоторые из них пересекались бы с данной кривой F(X, У) = 0 в четырех точках, что невозможно согласно доказанному выше.
Докажем, что aF + (3L + 7М = 0 для некоторого ненулевого вектора (а,/3,7). Для этого выберем на прямых m\,l\ по точке АЬА2 не совпадающей с точками конфигурации, лежащими на этих прямых (здесь используется то, что на каждой прямой не менее четырех точек). С помощью упр. 2.2.14 найдем ненулевой вектор (а, Д, 7), такой, что кривая aF + /3L + уМ проходит через точки Агi = 1,2. Докажем, что на самом деле aF Ч- /3L + 7М = 0.
Допустим противное. Очевидно, что тогда кривая aF 4- /3L + уМ является кривой не выше третьего порядка и переменная У входит в ее уравнение не выше чем во второй степени. Так как эта кривая проходит и через точки конфигурации Pi, Р3, -Рь -Р2, Р3, Р\ + Р2, Р2 + Р3, то она содержит прямые m\,l\, так как иначе пересекается с ними в трех точках. Так как mi li, то aF +	+	= M\L\S, где уравнение S = 0
определяет некоторую прямую. Так как точки Pi + Р2, -Р2, Р2 + Р3, Ti = -(Pi+(Р2+Р3)) не лежат на прямых mi, 1\, то они лежат на прямой s, значит она совпадает с прямой 12, проходящей через Р{ -\-Р2, -Р2, с прямой т2, проходящей через -Р2, Р2 + Р3, и с прямой 13, проходящей через Р2 -И Р3, Ti, а это невозможно. Поэтому aF + /3L + уМ = 0.
Очевидно, что 7^0, так как в противном случае кривые F = 0, L = 0 совпадают, что противоречит выбору кривой F = 0. Сокращая на 7, получаем, что aF + (5L = М для некоторых а, /3. Так как точка L\ лежит на кривых F = 0, L = 0, то из этого равенства следует, что она лежит и на М = 0. Если бы она не совпадала с Т2, то на кривой М = 0 лежало бы 9 конечных точек кривой F = 0, что невозможно, так как на каждой из прямых тпгг > 1, таких точек не более трех, а на прямой не более двух таких точек.
Заметим, что в приведенном доказательстве мы предполагали, что на каждой прямой можно всегда найти четвертую точку. Это верно только для полей, содержащих не менее четырех элементов. Но если поле
96
Глава 2. Конечные поля и эллиптические кривые
содержит мало элементов, мы можем рассмотреть ту же кривую и ту же конфигурацию, в которой мы доказывали, что Т\ — Т2, над полем, которое является расширением данного поля. Конфигурация при этом не изменится, но на каждой прямой в плоскости над этим полем будет уже достаточно точек, чтобы сохранить без изменения проведенное выше рассуждение.
Все же приведенное доказательство неполное, так как в нем предполагались условия, описанные в сноске на с. 94. Доказательство, справедливое и в случае кратных точек, строится по той же схеме, но более сложно в деталях. Если Вы хотите разобраться в нем — читайте дальше.
Для краткости будем говорить про каждую из перечисленных точек, что она принадлежит прямым Ц, mj — тем самым, на которых она лежит по определению, невзирая на то, что эта точка может принадлежать одновременно и еще другим прямым, если она кратная. Далее можно считать, что совпадать (склеиваться) могут только точки лежащие на одной прямой Ц или mj и тогда эта прямая является не секущей, а касательной к кривой F в этой точке. Действительно, если, например, совпадают точки прямой Ц и прямой m2, не являющиеся их пересечением, то это значит, что, например, или Рз = -Р2, или Р3 = Р2 4- Рз, или О = Р2, или О = Р2 4- Р3. Два из этих случаев невозможны, так РгО.
Упражнение 2.2.16. Докажите ассоциативность в случаях Р2 = ±Р3, ±РЬ
Теперь далее можно предполагать, что ни одна из прямых Ц не совпадает ни с одной из прямых mj, потому что в противном случае точка прямой lj, не лежащая формально на прямой mj будет совпадать с некоторой точкой прямой mj, формально не лежащей на Ц (а такой случай мы уже исключили из рассмотрения). Действительно, в противном случае на прямой mj находилось бы больше точек кривой F = 0 с учетом кратности, чем ей положено (две, в случае т\ и три в остальных случаях).
Далее понадобятся еще несколько простых утверждений о многочленах от двух переменных.
Упражнение 2.2.17. Проверьте, что, если /] = Z71 4~ , /2 = ^2 + ^2, J — линейный многочлен, гг — т\(Х), если I =	и гг = ъ(У), если I = 1(Х), то
/1 4- /2 = l(q[ + <?2) 4- И 4- г2, то /j/2 — lq3 4- пг2, где q3 — некоторый многочлен.
Указание. Примените школьную теорему Безу.
Будем говорить, что точка Р — (xq, уо) прямой L(X, У) = 0 является точкой кратности к кривой F = 0, если F(X, У) = L(X, Y)Q 4- R(X), и Жо является корнем той же краткости многочлена Р(Х), т. е. R(X) = (X - хо)кЛ(Х), Н(хо) Ф 0. Аналогично определяется кратность точки пересечения кривой F = 0 с вертикальной прямой L(X) = 0. Для точек, не лежащих на кривой, кратность определяем равной нулю. Двукратные точки называем двойными, а тройных у нас не будет.
Упражнение 2.2.18. Если F = F\F2, и Р — точка пересечения прямой L — 0 с кривыми Fi — 0 кратности kt, то та же точка является точкой пересечения той же прямой с кривой F = 0 кратности р 4- к2. В частности, если F — IQ, I —
2.2. Эллиптические кривые
97
линейный многочлен, то для прямой L = 0 не равной прямой I — 0, кратность любой точки Р пересечения прямой L = 0 с кривой Q = 0 равна кратности той же точки пересечения прямой L = 0 с кривой F = 0, если Р не лежит на этой прямой, и на единицу меньше ее, если Р лежит и на прямой 1 = 0. Если же прямые L = 0 и I = 0 совпадают, то упомянутые кратности совпадают всегда.
Если F = Fi 4-2*2, и Р — точка пересечения прямой L = 0 с кривыми Ft = О кратности кг, к2 к{ то та же точка является точкой пересечения той же прямой с кривой F = 0 кратности к{.
Указание. Примените предыдущее упражнение.
Как и в приведенном выше доказательстве в случае отсутствия кратных точек, выберем кривую Fq = aF+/ЗБ+уМ, проходящую через точки Aj, но точку Az выберем так, чтобы она не лежала на прямых тг (ее можно выбрать, например, на прямой Ц, если на ней есть хотя бы четыре точки). Далее мы докажем, что, если кривая Fq ненулевая, то она совпадает с М, а это невозможно так как М не содержит Aj_ по построению. Значит она нулевая, поэтому М можно представить в виде линейной комбинации olF + (ЗБ, как и в том доказательстве. Также, как и в том доказательстве замечаем, что кривая Fq содержит прямую ть откуда Fq = m^Q. Надо только уточнить, что прямая т\ пересекает кривую F не обязательно в двух разных конечных точках, а, может быть, и в одной, но двойной точке (т. е. касается ее в этой точке). Тогда и кривая Fq пересекает эту прямую в точках с суммарной кратностью не меньше 3, так она содержит точку А1, и остальные две (возможно, совпадающие) точки прямой т\ имеют те же кратности (согласно упр. 2.2.18), ведь Б = LxL^Ly имеет для тех же точек те же кратности, так как для двойной точки в ней будут пересекаться две из трех прямых а кривая М =	имеет во всех
точках прямой тп\ нулевую кратность относительно ее. Поэтому, согласно упр. 2.2.13, кривая Fq должна содержать ть Значит Fq = M\Q.
Докажем, что Q = M^R. Для этого заметим, что сумма кратностей точек пересечения прямой m2 с кривой второго порядка Q = 0 не меньше трех, откуда (согласно упр. 2.2.13) будет следовать, что Q содержит m2. Предыдущее утверждение о сумме кратностей очевидно, если все точки m2 не лежат на mi, так как согласно упр. 2.2.18 они имеют для кривой Q такую же кратность, как и для кривой Fq, т. е. равную трем. Если же, например, точка Р2 4- Рз = АЦт/е. прямая Z3 в этой точке будет касательной), то эта точка будет двойной точкой пересечения кривой Fq с прямой /] (это проверяется так же, как и было сделано выше в случае прямой mi), значит (согласно упр. 2.2.18) она же будет точкой пересечения кривой Q с прямой Zi, т. е. будет лежать на Q, и ее кратность как точки пересечения Q с прямой m2 будет не меньше единицы, т. е. кратности той же точки пересечения кривой Fq с прямой m2 (потому что эта точка не может совпадать с другой точкой прямой m2, так как она уже совпадает с точкой прямой mi). Таким образом, и для таких точек кратности относительно кривых Q и Fq всегда совпадают, и сумма их равна 3, поэтому, как и выше, можно заключить, что Q — M\R.
98
Глава 2. Конечные поля и эллиптические кривые
Многочлен R, очевидно, линейный, осталось доказать, что он пропорционален Му. Рассмотрим две точки Ру, Р\ + Ру прямой ту. Пусть они различны, и, например, Ру встречается к раз на прямой Ц. Значит, кратность ее как точки пересечения FqR с Ц не меньше к (подобные утверждения уже не раз доказывались выше). Значит, среди прямых тп},т2 только к - 1 проходят через точку Ру, поэтому кратность этой точки пересечения кривой второго порядка MiMy = 0 (на самом деле это просто пара прямых) с прямой /1 равна к - 1. Применяя упр. 2.2.18 получаем, что кратность той же точки пересечения прямой R = 0 с прямой Zi не меньше 1, значит прямая R = 0 содержит Ру. Аналогично, она содержит Р\ + Ру и совпадает с прямой ту.
Рассмотрим последний оставшийся случай, а именно совпадение точек Ру, Pi + Ру (тогда ту является касательной к F в этой точке). Из наложенного выше ограничения следует, что эта точка не лежит на прямых mj, i < 3. Опять проверяем, что кратность этой точки пересечения кривой Fq — 0 с прямой ту не меньше 2. Так как Fq = M^MyR, а эта точка не лежит на прямых тг-, i < 3, то (согласно упр. 2.2.18) кратность этой точки как точки пересечения R с прямой ту не меньше 2. Применяя упр. 2.2.13, получаем, что и в этом случае прямая R — О совпадает с прямой ту. Значит, доказано, что М = aF + (3L.
Заметим, что при этом а/3 О, так как, если, например, /3 = 0, то кривые М — 0 и F = 0 совпадают, что невозможно по определению кривой F, а если а — 0, то кривые М — 0 и L = 0 совпадают, что невозможно в силу различия прямых тг и lj в предположении, что данное поле, а значит и любая прямая содержит более трех точек. Выше мы уже объясняли, как можно избавиться от этого предположения. Поэтому а(3 7^ 0, и следовательно F линейно выражается через М, L и L линейно выражается через F, L.
Допустим, что Ti Ту и получим противоречие, тогда Т\ — Ту и ассоциативность будет доказана. Обозначим Т точку пересечения прямых ly,my. Так как Т принадлежит L,M то она принадлежит и F, а значит Т совпадает с одной из точек Рь Ру + Ру, Ti пересечения F = 0 с 1у и совпадает с одной из точек Ру, Pi+Py, Ту пересечения F = 0 с прямой ту. Так как Т не может совпадать одновременно с Т\ Ту, то в силу симметрии без ограничения общности считаем, что Т Ту, значит Т = Р\ или Т = Ру 4- Ру. Опять же в силу симметрии без ограничения общности можно считать, что Т = Р{. Тогда Т Ру, Pi + Ру в силу действующего во время доказательства предположения о неравенстве точек, лежащих на прямых Ц, mj, но не на их пересечении.
Так как Т совпадает с одной из точек Ру, Р\ +Ру, Ту то остается только возможность Т = Ту. Но Т = Pi, значит Т лежит на пересечении прямых mi, ту, поэтому (согласно упр. 2.2.18) Т не менее чем двукратная точка пересечения прямой 1у с кривой F = 0, так как F = (\/а)М - (fi/a)L. Если бы еще Т — Ру 4- Ру, то Т лежала бы еще на ту, тогда она была бы трехкратной точкой пересечения F и 1у. Но в этом случае точка Т} 0,
2.2. Эллиптические кривые
99
Т\ 7^ Т была бы четвертой точкой кривой F = 0 на прямой Ц с учетом кратности, что невозможно согласно упр. 2.2.13 (если бы Ti = О, то для прямой 13 сумма кратностей точек пересечения с F была бы не больше двух согласно упр. 2.2.14).
Если же Т — Р\ £ F2 + Рз, то сумма кратностей точек Т\, Р2 + Рз / Рх = Т не меньше двух, независимо от того совпадают они, или нет, поэтому сумма кратностей всех перечисленных точек пересечения кривой F и прямой не меньше четырех, что невозможно согласно упр. 2.2.13 (или в случае Т\ = О не меньше трех, что тоже невозможно согласно упр. 2.2.14). Во всех случаях получено противоречие, и теорема доказана.
2.2.3.	Эллиптические кривые над полями действительных и рациональных чисел
Для кривых над полем действительных чисел, разумеется, справедливо все сказанное выше, и, как показано выше, все использованные наглядные представления и понятия имеют для них самый прямой смысл.
Уравнение, определяющее действительную алгебраическую кривую, в каком то смысле более естественно рассматривать над алгебраически замкнутым расширением поля действительных чисел — полем комплексных чисел. Можно и коэффициенты этого уравнения выбрать из поля комплексных чисел. Тогда получится комплексная эллиптическая кривая, теория которых, тесно связанная с теорией функций комплексного переменного, в особенности теорией эллиптических функций, была предметом изучения Абеля, Эйзенштейна, Якоби, Вейерштрасса и других выдающихся математиков XIX в. В частности, в этой теории дается свое доказательство ассоциативности операции сложения точек на эллиптической кривой. Непосредственных приложений в криптографии эта теория не имеет, и мы отсылаем заинтересовавшегося ей читателя к книгам [48,51,63].
Если коэффициенты кривой рациональны, то естественно рассматривать ее над полем рациональных чисел. Изучение групп рациональных точек таких кривых привело к созданию очень сложной и обширной теории, являющейся важным разделом теории чисел. Хотя в ее создание внесли вклад многие выдающиеся математики, не все вопросы в ней еще получили решение. Представление об этой теории читатель может получить по книгам [46,48,61,63]. В оставшейся части этого раздела мы кратко сформулируем несколько наиболее известных ее результатов, хотя в криптографии они приложений не имеют. О приложениях эллиптических кривых в алгоритмах факторизации натуральных чисел можно прочесть в [20,69].
Порядком точки Р кривой Е называется минимальное натуральное число п, такое что пР = О. Если такого числа не существует, то точка имеет бесконечный порядок. Понятие порядка точки на кривой является, конечно, частным случаем понятия порядка элемента в любой группе.
Точки конечного порядка в группе кривой Е называются точками кручения и образуют подгруппу, называемую подгруппой кручения.
100
Глава 2. Конечные поля и эллиптические кривые
Упражнение 2.2.19. Проверьте, что точек второго порядка всегда не более трех. Для кривой
У2 + Y = X3 - X2
точки порядка два — это (0, -1), (1, 0), (1, -1).
Уже отмечалось, что уравнение Ферма X3 ± Y3 = 1 можно свести к виду У2 = X3 - 27/4.
Упражнение 2.2.20. Воспользовавшись тем, что уравнение Ферма не имеет нетривиальных рациональных решений, докажите что кривая Ферма У2 = X3 - 27/4 имеет только три рациональные точки (3, ±9/2) и О. Докажите, что (3, ±9/2) имеют порядок 3.
Упражнение 2.2.21. Пусть Р = (0, 0) точка кривой У2 ± У = X3 - X. Проверьте, что, если пР = (х, у), то
и пользуясь этим, подсчитайте, что	2	/ \ з	х / у \	\ -ж, - ( - ) + у - 1 ) , \х /	/
2Р = (1,0), ЗР = (-1,-1),	\Р = ^-Ъ\ 5P=Q,-|
/58 6Р = (6,14), 7Р=(--,-	\	_ /21	69 \ , 8Р = —,	. /	\25	125 7
Можно доказать, что группа рациональных точек этой кривой бесконечна и порождается точкой (0, 0) (эта точка — отнюдь не равна точке О — нулевому элементу указанной группы).
Известна теорема, доказанная независимо Элизабет Лутц и Тораль-фом Нагелем, характеризующая рациональные точки порядка большего 2 на рациональной эллиптической кривой У2 = X3 + АХ + В следующим образом. Если точка (х,у) имеет конечный порядок, больший 2, то х,у — целые, и у2 делит 4А3 ± 27 В2. На самом деле в теореме доказывается больше, например, следующее утверждение. Если для рациональной эллиптической кривой общего вида простое число р не делит ее дискриминант А, а в случае р = 2 еще и ft] = 0 (кривая суперсингулярна), то при отображении редукции по модулю р (когда коэффициенты и точки кривой заменяются на элементы поля GF(p) по правилу (а/Ь)р := ар/Ьр, где для любого целого а ар есть элемент поля GF(p), соответствующий остатку от деления а на р) все точки кручения данной рациональной кривой переходят в разные точки кривой над полем GF(p), являющейся редукцией данной кривой по модулю р.
Пример 2.2.4. При редукции по модулю два рациональной эллиптической кривой
У2 + У = X3 - X2
получается кривая
У2±У-Х3±Х2
над полем GF(2). Эта кривая состоит из пяти точек (с учетом бесконечно удаленной точки О). Значит группа этой кривой изоморфна Z5 — циклической
2.2. Эллиптические кривые
101
группе пятого порядка. Так как группа кручения этой же кривой над полем Q содержит точки (0, 0), (0,-1), (1, 0), (1,-1), то согласно теореме Лутц—Нагеля эта группа тоже изоморфна Z5.
Упражнение 2.2.22. Рациональная эллиптическая кривая Е
y2 + y = х3-х
содержит точки (±1,0), (±1, —1), (2, 2), (2, —3), (6, —15) и имеет дискриминант 37. Упражнение 2.2.23. Проверьте, что над полем GF(2) она имеет пять, а над полем GF(3) — семь точек. Поэтому согласно теореме Лутц—Нагеля группа кручения изоморфна подгруппе Z5 и подгруппе Z7, значит она тривиальна. Поэтому все перечисленные выше точки имеют бесконечный порядок.
Полностью возможный вид группы кручения произвольной рациональной кривой дается следующей очень трудной теоремой, доказанной в 1976 г. американским математиком Б. Мазуром. Эта группа изоморфна одной из 15 групп: циклическим группам порядка от 1 до 12 и группам вида Z2® Zn, п = 2, 3, 4, где Zn — циклическая группа порядка п, а знак ф обозначает операцию прямой суммы двух групп.
Группа всех рациональных точек может быть бесконечной, но в этом случае, согласно гипотезе Пуанкаре, высказанной в 1901 г. и доказанной спустя 20 лет Морделлом, она является конечно-порожденной, т. е. существует конечное множество точек такое, что любая рациональная точка кривой может быть получена из данного множества с помощью операции сложения. На языке теории абелевых групп это означает, что группа рациональных точек любой рациональной кривой изоморфна группе Zr ф Г, где Т — ее подгруппа кручения. Число г называется рангом кривой. До сих пор неизвестно, может ли он быть сколь угодно большим.
Упражнение 2.2.24. Рациональная кривая содержит бесконечное число рациональных точек, тогда и только тогда, когда ее ранг больше нуля.
Упражнение 2.2.25. Докажите, что координаты любой рациональной точки (ж, у) на эллиптической кривой Y2 = X3 4- аХ + b имеют вид несократимых рациональных дробей х = m/е2, у = п/е2.
Интересно, что известная со времен древних греков задача о конгруэнтных числах сводится к до сих пор не получившим полного решения задачам о рациональных кривых. Рациональное число s называется конгруэнтным, если существует прямоугольный треугольник с рациональными сторонами и площадью s.
Упражнение 2.2.26. Проверьте, что для описания множества всех конгруэнтных чисел достаточно описать все конгруэнтные натуральные числа, свободные от квадратов (т. е. не делящиеся на квадрат натурального числа, большего 1).
Поэтому далее рассматриваем только свободные от квадратов числа.
Еще древним египтянам фактически было известно, что 6 — конгруэнтное число.
В тринадцатом веке Фибоначчи, решая задачу на турнире, доказал что 5 — конгруэнтное число.
Эйлер доказал, что 7 тоже конгруэнтное число.
102
Глава 2. Конечные поля и эллиптические кривые
Упражнение 2.2.27. Попробуйте посоревноваться с древними египтянами, средневековыми итальянцами и с Эйлером.
Но Ферма доказал, что 1 и 2 — не конгруэнтные числа.
Упражнение 2.2.28. Докажите это.
Указание. Ферма свел задачу к вопросу о разрешимости в натуральных числах уравнения X4 = Z2 + У4.
В общем случае справедлив следующий неэффективный критерий конгруэнтности. Число п конгруэнтно, тогда и только тогда, когда найдется такое ж, что х, х + п, х - п являются квадратами рациональных чисел.
Упражнение 2.2.29. Докажите это.
Указание. Если X, У, Z — стороны пифагорова треугольника площади п, то при х ~ (Z!?)1 числа х, х ± п — квадраты рациональных чисел. Обратно, если числа х, х ±п — квадраты рациональных чисел, то
X = л/ж + n - Vx - 71,
У = \/ж + 71 + у/х ~ 71, Z = 2у/х
— стороны пифагорова треугольника с площадью п.
Предыдущее упражнение подсказывает рассмотреть кривую У2 = X3 - п2Х.
Упражнение 2.2.30. Проверьте, что, если п конгруэнтно, то на кривой У2 = X3 - п2Х есть хоть одна точка, порядка большего 2. Точки порядка 2 на этой кривой есть (±п, 0) и (0, 0).
Довольно трудно доказывается следующая теорема: кроме трех точек порядка два и точки О на кривой У2 = Х3-тг2Х больше нет точек конечного порядка. Из этой теоремы можно вывести следующее.
Упражнение 2.2.31. Число п конгруэнтно, тогда и только тогда, когда ранг кривой Y2 = X3 - п2Х положителен.
Используя этот критерий и сложные методы теории модулярных форм, Таннел в 1983 г. доказал, что, если п конгруэнтно, то в случае нечетного п количество целочисленных решений уравнения n = 2Х2 + Y2±32Z2 равно половине количества целочисленных решений уравнения n = 2X2±Y2±8Z2, а для четного п в аналогичном утверждении уравнения заменяются на n/2 = 4Х2 + У2 + 32Z2 и n/2 = 4JT2 + У2 + 8Z2. Он также доказал, что верно и обратное утверждение, но для этого ему пришлось воспользоваться пока не доказанной гипотезой Берча и Свиннертон— Дайера. Подробнее об этом можно прочитать в книге [48] и частично в [46].
Использование теории эллиптических кривых помогло американским математикам Уайлсу и Тейлору доказать великую теорему Ферма. Представление о некоторых применяемых в этом доказательстве методах
2.2. Эллиптические кривые
103
можно получить по [46,63]. Но полностью доказательство ввиду его сложности в доступной литературе пока не опубликовано.
Однако некоторые частные случаи теоремы Ферма могут быть сравнительно несложно сведены к задачам о конкретных рациональных эллиптических кривых. Как это сделать в случае п = 3, кратко указывалось выше (подробности см. в [46]). Но можно это сделать и в случае п = 7, как показал Н. Д. Элкис в работе Elkies N. D. The Klein Quartic in Number Theory // The Eightfold Way. Vol. 35. MSRI Publications, 1998. У нас нет места для изложения его рассуждений, но желающим мы можем предложить попробовать свои силы в решении следующих трудных упражнений. Упражнение 2.2.32. Неразрешимость уравнения Ферма X1 4- У7 = Z1 в ненулевых целых числах можно свести к неразрешимости в ненулевых целых числах уравнения Клейна Х3У 4- У3£ 4- Z3X — 0, сделав подстановку X X3Z, У := Y3X, Z := Z3Y. Разрешимость уравнения Клейна в ненулевых целых числах равносильна разрешимости в ненулевых рациональных числах уравнения X3Y + Y3 + Х = 0.
Упражнение 2.2.33. Выразите симметрический многочлен
(Х3У + Y3Z + Z3X)(X3Z + Y3X + Z3Y)
через = X + Y + Z, s2 = XY + XZ + YZ, s3 = XYZ, и пользуясь полученной формулой докажите, что, если уравнение Клейна имеет решение в ненулевых целых числах, то уравнение
s2 5з(51 — 5s3$2 4~ 5152 4" 751$з) = 0 тоже имеет решение в ненулевых целых числах.
Упражнение 2.2.34. Если уравнение
52 + 5з (55i — 55]52 + 5]5^ 4" 751$з) = 0 имеет решение в ненулевых целых числах, то уравнение
52 4“ 5з (1 “ 552 4- $2) 4- 7$з =0
имеет решение в ненулевых рациональных числах.
Упражнение 2.2.35. Если уравнение
52 4" 5з(1 — 5S2 4- 5^) + 75з = 0 имеет решение в ненулевых рациональных числах, то подобное же решение имеет уравнение
1 4- u(l - 5w-1 -h v-2) 4- 7и2 — 0.
Упражнение 2.2.36. Если уравнение
1 4- u(l - 5v“l 4- v~2) 4- 7u2 = 0 имеет решение в ненулевых рациональных числах, то подобное же решение имеет уравнение
у2 = -28и3 4- 21и2 - 4ц.
Отсутствие ненулевых рациональных решений у последнего уравнения Н. Д. Элкис доказал элементарным (но непростым) методом.
104
Глава 2. Конечные поля и эллиптические кривые
2.3. Эллиптические кривые над конечными полями
2.3.1.	Порядок эллиптической кривой
Эллиптические кривые над конечными полями имеют, естественно, конечные группы точек. Порядок этой группы будем называть порядком эллиптической кривой. Напомним, что порядком точки Р эллиптической кривой называется наименьшее число к такое, что кР = О. По теореме Лагранжа порядок точки делит порядок эллиптической кривой. При определении порядка кривой ее можно заменить на удобную изоморфную ей кривую, так как у изоморфных кривых порядки одинаковы. Менее очевидно, что и их группы изоморфны, но это верно, поэтому далее всегда можно ограничиться рассмотрением кривых с уравнениями специального вида, указанного в предыдущих разделах.
Для небольших полей вычисление группы точек данной кривой и ее порядка не составляет труда.
Пример 2.3.1. Например, кривая У2 = X3 + X над полем GF(23) состоит из 23 точек:
(0,0),(1,5),(1, 18), (9, 5), (9, 18), (11, 10), (11, 13), (13, 5), (13, 18),
(15, 3), (15, 20), (16, 8), (16, 15), (17, 10), (17, 13), (18, 10), (18, 13), (19, 1), (19, 22), (20, 4), (20, 19), (21, 6), (21, 17).
Учитывая бесконечно удаленную точку, получаем что порядок этой кривой равен 24. Для составления списка точек достаточно перебирать элементы а = 0, 1,..., 22 поля и для каждого из них для нахождения у нужно решать в этом поле уравнение У2 = а3 + а, т. е. извлекать квадратный корень. Достаточно найти только один корень у, второй корень вычисляется по формуле -у mod 23 — 23 - у.
2.3.2.	Легко ли вычислить порядок группы точек эллиптической кривой
Пользуясь символом Лежандра, легко указать формулу для числа точек на кривой У2 = f(X) над полем GF(p), р > 2. Действительно, сравнение У2 = /(x)(modp) относительно У при фиксированном х имеет (при р > 2) 1 + (^) решений (это верно и при f(x) = 0). Учитывая бесконечно удаленную точку, получаем формулу для порядка кривой над полем GF(p), р > 2 в виде
p+i + W—)•	<2-31)
При малых простых р, пользуясь этой формулой и теорией квадратичных вычетов порядок кривой над полем GF(p) находить довольно легко.
Упражнение 2.3.1. Найдите порядок кривой У2 = X3 + X 4- 4 mod 23.
Но вычисление порядка эллиптической кривой не всегда просто или даже возможно. Общая формула для вычисления порядка произвольной кри
2.3. Эллиптические кривые над конечными полями
105
вой неизвестна. Неизвестно даже, можно ли за полиномиальное время найти кривую данного порядка. Некоторые результаты по этому поводу можно найти в [187]. В [133] показано, что задача вычисления порядка эллиптической кривой над кольцом вычетов по модулю п полиномиально эквивалентна задаче разложения числа п на множители, но эта эквивалентность доказана в классе вероятностных алгоритмов.
Тем не менее известны способы выбора эллиптических кривых над конечными полями, допускающих простое определение порядка. Эти способы важны, потому что в криптографическом отношении полезными являются эллиптические кривые, порядок которых содержит большие простые множители. Для кривых, у которых порядок является «гладким» числом (т. е. разлагающимся только на малые простые) проблема дискретного логарифмирования может быть решена сравнительно быстро алгоритмом Полига—Хеллмана—Зильбера, еще раньше найденном, но не опубликованном в открытой печати В. И. Нечаевым (см., например, [20, 59, 78]). Этот алгоритм описан в аддитивной интерпретации во второй книге [18].
2.3.3.	Применения теоремы Хассе
Известна асимптотически точная формула для порядка эллиптической кривой над конечным полем. Она была найдена в тридцатые годы немецким математиком Хельмутом Хассе. По теореме Хассе порядок N эллиптической кривой над полем GF(q) удовлетворяет неравенству
\N -q - 1|	2y/q.
Это эквивалентно системе неравенств
q 1 _ 2y/q N q + 1 4- 2y/q.
Теорема Хассе в случае простого конечного поля кажется интуитивно очевидной, так как квадратичные вычеты и невычеты по простому модулю распределены в определенном смысле равномерно и в сумме
слагаемые ±1 ведут себя подобно случайному блужданию по прямой. Но все известные ее доказательства очень сложны, даже элементарное доказательство Ю. И. Манина в случае простых q, которое можно найти в [46] и в [30].
Справедлива и более общая теорема Хассе—Вейля:
Теорема 2.3.1. Пусть Е — эллиптическая кривая над полем GF(q) и N — порядок ее группы. Тогда для порядка N(n) группы эллиптической кривой E(GF(qn)) над полем GF(qn) справедлива формула
N(n) = qn + 1-ап - /Зп,
106
Глава 2. Конечные поля и эллиптические кривые
где а и fl — корни квадратного уравнения х2 - tx 4- q = 0, в котором коэффициент t = q 4- 1 — N. Всегда выполняется неравенство t2 4q и в случае строгого неравенства корни квадратного уравнения а и fl будут комплексно сопряженными.
Эта теорема была после войны обобщена на широкий класс алгебраических кривых А. Вейлем, а в семидесятые годы ее обобщение на произвольные алгебраические многообразия было получено П. Делинем. Эти исключительно трудные и неэлементарные результаты мы можем здесь только упомянуть. Заметим, однако, что сравнительно элементарное (но тоже весьма сложное) доказательство результатов Вейля получил С. А. Степанов [70].
В случае полей малой характеристики порядок группы эллиптической кривой легко найти по формуле (2.31).
Упражнение 2.3.2. Проверьте, что для кривой У2 = X3 4- 2Х2 4-1 над полем GF(3)
N = N(l) = 5,t = 4-N = -1,
N(n) = 3n + 1 - ап - /Зп = 3n + 1 - (1+-44) - (Ь ~^) •
Непосредственно убедитесь, что эта формула верна для п = 2.
Следующие два упражнения понадобятся в гл. 3 во второй книге [18].
Упражнение 2.3.3. Проверьте, что для кривой У2 = X3 4- 2Х 4-1 над полем GF(3)
N = N(l) = 7, / = 4-А = -3;
2V(n) = 3" + 1 - а” - /Г = 3" + 1 - ((-3 + V3i)/2)n - ((-3 - х/3г)/2)п.
Убедитесь, что эта формула при нечетном п имеет вид
N(n) = Зп 4- 1 + 3(п+1)/2 при n = ± 1 (mod 12),
N(n) = Зп 4- 1 - 3(п+1)/2 при п = ±5(mod 12),
7У(тг) = 3n 4~ 1	при п = ±3(mod 12).
Указание. Так как
— 3-4 =Ьл/Зг	/- f ±5тгг 1
-----_---=^3ехр|-г|,
то согласно формуле Муавра
п	ап/2^ f 57ГШ1	( 5imi 1 \	(5тгп\
a + fl = 31 exp < —— > 4- exp <-----— > ) = 3 /22 cos ( ——- ),
\ I 6 J [	6 J)	\ 6 /
и при нечетном n
= 3"/22 cos G -	= -3n/22 cos f = -3(n+l)/2
\	6 /	\ 6 /
при n = ±l(mod 12),
a" +/3n = -3"/22cos f = 3("+l)/2
\ 6 /
2.3. Эллиптические кривые над конечными полями
107
при n = ±5(mod 12),
a"+(3'l = -3n/22cos(^ ) =0 \ 6 J
при n = ±3(mod 12).
Упражнение 2.3.4. Проверьте, что для кривой У2 — X3 4- 2Х + 2 над полем GF(3)
N = N(l) = 1, £ = 4 - N = 3;
ЛГ(п) = Зп + 1 - а" - /Зп = Зп + 1 - (3+2^г) -	•
Убедитесь, что эта формула при нечетном п имеет вид
N(n) = Зп + 1 - 3(п+1)/2 при n = ±l(modl2),
N(n) = 3n + 1 + 3(п+1)/2 при n s ±5(mod 12),
N(n) = 3n4-1	при n = ±3(mod 12).
Указание. Так как
3 4- ±УЗг г- ( тгг 1
= V3exp ± Г 2	1 б J
то согласно формуле Муавра
an +0Л = 3n/22cos (^4 = 3<п+1)/2 \ 6 7
при n = ±l(mod 12),
an + Pn = -3<n+1)/2 при n = ±5(mod 12),
an+№ = -3n/22cos(^4 =0
\ 6 J при n = ±3(mod 12).
Иногда можно точно вычислить порядок группы эллиптической кривой и для полей большой характеристики. Например, при q = pd, р > 2, и q = 3(mod 4) порядок кривой У2 = X3 - п2Х равен q 4- 1.
Упражнение 2.3.5. Докажите сформулированное утверждение.
Указание. Точки порядка 2 — это (0,0), (±n modp, 0) и О. Разобьем х ф 0, ±nmodp на пары {х, -ж}. Так как f(X) = X3 - п2Х нечетная функция и (-1) не является квадратом в поле GF(q) (так как иначе (-l)^'1^2 = 1 согласно теореме Ферма, что невозможно при q = 3(mod4), то только один из двух элементов /(ж), /(-ж) = -/(ж) является квадратичным вычетом (так как в поле GF(q) произведение квадратичных вычетов — квадратичный вычет, и произведение квадратичных невычетов — тоже квадратичный вычет, поэтому каждая пара дает пару точек кривой.
Пусть и — произвольный квадратичный невычет в поле GF(q), q нечетно. Тогда кривая Е': У2 = X3 4- u2aX 4- u3b называется скручиванием кривой Е\ У2 — X3 4~ аХ 4- Ь.
108
Глава 2. Конечные поля и эллиптические кривые
Упражнение 2.3.6. Докажите, что сумма порядков кривой и ее скручивания равна 2q + 2.
Указание. Пусть f(X) = X3 + aX + &. Когда X пробегает элементы поля GF(q), то X/и тоже пробегает все это поле и каждому корню многочлена f(X) соответствует одна и та же точка точка на обеих кривых. Каждому значению функции f(X), которое есть квадратичный вычет, соответствует две точки на Е и ни одной на Е' так как и3 — квадратичный невычет. Аналогично, каждому значению функции f(X), которое есть квадратичный невычет, соответствует две точки на Е' и ни одной на Е. Так имеется q значений функции f(X) с учетом кратности, то общее число конечных точек на обеих кривых равно 2q.
Благодаря этому факту после того, как найден порядок кривой, порядок ее скручивания находится без вычислений.
Приведем еще несколько примеров кривых, для которых легко вычислить порядок.
Упражнение 2.3.7. Порядок кривой Y2 = X3 + b modp, р = 2(mod 3), равен p-h 1. Указание. Так как кубический корень в поле GF(p) всегда существует и однозначно определен, то для каждого у на кривой лежит ровно одна точка ((у2 - Ь)1^3, у). Упражнение 2.3.8. Порядок кривой Y2 = X3 + aX modp, где р = 3(mod 4), (£) = 1, равен р + 1.
Указание. Так как -1 есть квадратичный невычет в GF(p), то каждая пара {ж, -ж}, ж^О, дает два решения:
(ж, (ж3 + аж)1/2),	(ж,-(ж3 + аж)1/2)
или
(—ж, (—ж3 — аж)1/2),	(—ж, -(-ж3 - аж)1/2)
в зависимости от того, будет ли квадратичным вычетом ж3 + аж или нет. Уравнение X3 + aX =. 0(modp) имеет только одно решение.
Один алгоритм, вычисляющий в частных случаях порядок эллиптической кривой, предложен в [128] (см. также [57]).
Для определения порядка группы эллиптической кривой в общем случае известен алгоритм Р. Шуфа [162, 163] и его варианты, известные как SEA (Schoof-Elkies-Atkin) алгоритмы (см., например, [107,137,139]), в которых оценка его сложности уменьшилась с O(log2 <?)8 до O(log2 q)e и он доведен до состояния, позволившего в работе [149] вычислить порядок кривой над полем GF(p) для 500-значного простого р. На русском языке изложение алгоритма Шуфа для простых конечных полей недавно появилось в [20] в связи с его применением в алгоритмах разложения целых чисел на множители. Алгоритм Шуфа был расширен в [131] и на случай четного q, и в ряде работ существенно усовершенствован (см., например, [138, 146]). Более быстрые алгоритмы недавно появились в [110,140,159].
Известен также другой метод определения порядка кривых— метод комплексного умножения [132, 135, 150]. Однако подробное изложение этих методов выходит за рамки книги.
2.3. Эллиптические кривые над конечными полями
109
2.3.4.	О структуре групп эллиптических кривых
Группы точек эллиптических кривых довольно похожи на мультипликативные группы конечных полей. Они тоже коммутативные и имеют асимптотически такой же порядок. Но операции в них более сложные, и естественно ожидать, что и проблема дискретного логарифмирования в них решается более сложно. Эти ожидания оправдываются, и далее мы об этом скажем подробнее. Но с абстрактной алгебраической точки зрения группы точек кривых над конечными полями устроены не так сложно, как у рациональных кривых.
В общем случае, эти группы или циклические (изоморфные Zm при некотором т), или являются прямыми суммами двух циклических групп Zmx © Zm2, где т2 делит Ш\ и m2 делит q - 1.
Справедливы и более точные утверждения из [164].
Теорема 2.3.2. Для порядка эллиптических кривых над полем GF(q), q = рп, справедливы следующие утверждения', порядок имеет вид q+ 1 - t, где t удовлетворяет одному из условий
1)	t 0(modp) и t2 < 4q,
2)	п нечетно и либо t = 0, либо t2 = pq при р — 2,3,
3)	п четно и либо t = 4q, либо t2 — q при р l(mod 3), либо t = 0 при р l(mod 4).
Определение 2.3.1. Если р делит t, то кривая называется суперсингулярной, иначе она называется несуперсингулярной.
Из этой теоремы следует, что для суперсингулярных кривых t2 — 0, q, 2q, 3q, 4q. Структура групп суперсингулярных кривых описывается следующей теоремой [164].
Теорема 2.3.3. Если t2 = q,2q, 3q, то группа циклическая. Если t2 = bq, то группа изоморфна Zф Zв случае t = 2y/q, или изоморфна ф Zijq+\ в случае t = -2y/q. Если t = 0,q	3(mod4), то группа
циклическая. Если t = 0,q = 3(mod4), то группа или циклическая или изоморфна Z^^/2 © %2-
В [129] доказано, что среди эллиптических кривых по модулю р доля циклических (т. е. имеющих циклическую группу) не менее 0.7785 - о(1).
Доказательства этих теорем здесь не приводятся.
Разлагая каждую из циклических групп в сумму групп порядков рп для разных простых, можно представить группу произвольной кривой единственным образом в виде суммы групп вида
Zpa ф Zpp, /3, а > 0.
Соответствующий вектор с компонентами (ра, р@)р\к, где N — порядок группы, называется ее типом . Он однозначно определяет группу с точностью до изоморфизма.
110
Глава 2. Конечные поля и эллиптические кривые
Упражнение 2.3.9. Докажите, что группы кривых из двух предыдущих упражнений являются циклическими.
Указание. Допустим, что группы нециклические. Тогда для некоторого р в их типах встречаются компоненты (la,F), а > /3 > 0, где I — делитель р- 1. Но так как порядок группы точек равен р 4- 1, то I — делитель р 4- 1 по теореме Лагранжа. Значит I = 2. Но сравнения х3 4- b = 0(modp) и х3 + ах = 0(modp) имеют по одному решению. Значит /3 = 0.
Пример 2.3.2. Группа кривой У2 — X3 - п2Х над полем GF(q), q = pd, при q = 7(mod8) — нециклическая.
Упражнение 2.3.10. Докажите это.
Указание. Согласно упр. 2.3.5, ее порядок равен q 4-1 и кратен 8, а точек порядка 2 в ней ровно 3.
Упражнение 2.3.11. Найдите тип кривой У2 = X3 - X над полем GF(71).
Указание. Согласно упр. 2.3.10 в ее тип входят числа 4,2. Остается проверить, будет ли тип иметь вид (4,2,9) или (4, 2, 3,3). Для различения этих случаев достаточно проверить, что точек порядка 3 меньше 9, поэтому тип будет (4, 2, 9). Для поиска таких точек Р заметьте, что 2Р — -Р, значит у этих точек равны х-координаты. Получите для них уравнение ЗХ4 - 6Х2 -1 = 0. Его решать не надо, если заметить, что корни у него распадаются на пары х, -х, и так как функция X3 - X нечетна, то только один из элементов пары дает две точки кривой, а другой не дает таких точек.
Преимущество эллиптических кривых над конечными полями заключается в том, что имеется большое многообразие групп с разными порядками для одного и того же поля GF{q). Даже доказано в [136], что для любого простого р порядки групп кривых над полем GF(p) почти равномерно распределены на отрезке [р + 1 - 2у/р, р 4-1 + 2^/р]. Это часто дает возможность подобрать кривую, порядок которой имеет только один большой простой делитель.
Глава 3
Неприводимые многочлены
...Общий метод получения неприводимого сравнения, от которого зависят корни сравнения хр — х, состоит в освобождении этого сравнения сперва от всех общих множителей, которое оно может иметь со сравнениями низшей степени вида хрР — х. Таким образом получится сравнение, которое должно разлагаться на неприводимые сравнения степени у. И так как мы умеем выражать все корни каждого из этих неприводимых сравнений через один, их все легко будет получить по методу Гаусса.
Эварист Галуа
3.1.	Тестирование и поиск неприводимых многочленов
3.1.1.	Чем интересны неприводимые многочлены
Знание неприводимых многочленов над конечными полями нужно уже для того, чтобы строить сами эти поля. Поэтому в любой книге по кодированию есть таблицы таких многочленов невысоких степеней. Среди неприводимых многочленов особый интерес представляют примитивные многочлены, т. е. такие, корни которых являются примитивными (или порождающими) элементами поля разложения этого многочлена. Примитивные элементы являются основаниями дискретных логарифмов, таблицы которых (и примитивных элементов, и логарифмов) также есть в любой книге по кодированию, так как сильно облегчают умножение в конечных полях.
Но представление элементов поля в виде степеней примитивного элемента хотя и облегчает умножение, но сильно затрудняет сложение, поэтому чаще элементы поля представляют в виде векторов, разложенных по стандартному полиномиальному базису, тогда сложение сводится к сложению этих векторов (особенно просто оно выполняется в полях порядка, равного степени двойки, так как сводится к покомпонентной логической операции XOR), а умножение представляет из себя умножение многочленов над исходным конечным полем коэффициентов, выполняемое по модулю неприводимого многочлена, определяющего рассматриваемое представление поля.
Bulletin des Sciences mathematiques de M. Ferussac. 1830. T. 13. C. 428.
112
Глава 3. Неприводимые многочлены
Однако во многих случаях важно иметь подобные многочлены с минимальным по возможности числом одночленов, например трехчлены или пятичлены (в полях характеристики два неприводимых «четночленов», очевидно, не бывает). Такие многочлены мы называем многочленами малого веса. Теоретически такие многочлены предъявить удается не всегда и их приходится строить с помощью компьютера.
Впрочем, для небольших полей компьютер особенно и не нужен. Удивительно, но выдающийся специалист по кодированию и конечным полям Элвин Берлекемп (автор известного алгоритма факторизации многочленов над конечными полями) в своей книге [9] написал в шестидесятые годы, что большие конечные поля представляют только академический интерес.
Но сейчас интерес к большим конечным полям, в частности с малой характеристикой, уже не академический. Без этих полей немыслима современная криптография с открытым ключом, так же как и построение классических криптосистем.
Примитивные многочлены также находят существенные применения в криптографии, главным образом для построения линейных рекуррентных последовательностей максимально возможной длины, которые применяются, например, при построении датчиков случайных чисел.
Ввиду важности для приложений, неприводимые и примитивные многочлены уже давно табулированы. Таблицы для небольших степеней имеются почти в любом учебнике теории кодирования. Но большие таблицы мало доступны для нашего читателя, о чем сетовал В. Жельников в [37]. Они последовательно появлялись в статьях [181-185]. Фрагменты этих таблиц имеются в доступной через Интернет книге [147]. Однако детали алгоритмов составления этих таблиц там не описываются.
Обширный список неприводимых многочленов дан в Приложении В во второй книге [18].
Прочитав эту главу, читатель может узнать, как написать программу, быстро генерирующую и тестирующую неприводимые многочлены, и проверяющие их на примитивность.
3.1.2.	Тест на неприводимость. Алгоритм Берлекемпа
Алгоритм Берлекемпа [9] определяет, является ли данный многочлен произвольного вида над полем Галуа GF(q) неприводимым.
Пусть нужно проверить многочлен Р(Х) на неприводимость. Сначала вычислим производную Р'(Х) многочлена Р(Х)2К
Если наибольший общий делитель многочленов Р(Х) и Р'(Х) не равен 1, то многочлен Р(Х) не является неприводимым, так как его разложение на множители содержит квадрат многочлена (степени,
2- Производная Р'(Х) образуется по правилу формального дифференцирования многочлена Р(Х): если Р(Х) = 52 агХг, то Р'(Х) = 52 i * а^Х1-1 (см. с. 47).
i=0	г = 1
3.1. Тестирование и поиск неприводимых многочленов 113
большей 0). В противном случае, проверка неприводимости продолжается. При этом вычисляются остатки Рг(Х) от деления многочленов Х2г на Р(Х), i = 1,2,..., deg (Р(Х)) - 1. Для сокращения времени вычисления эти остатки определяются последовательно. Так, если вычислен Pi(X), то Pz+i(X) равен остатку отделения X2Pj(X) на Р(Х). Поэтому сначала вычисляем многочлен R(X), равный остатку от деления XPi(X) на Р(Х), а уже затем Pj+1(X). Нетрудно видеть, что что R(X) = XPi(X), если deg(P2(X)) + 1 < deg (Р(Х)) и Я(Х) = ХР^Х) Н-Р(Х), в противном случае. Многочлен Рг+1(Х) равен остатку от деления XR(X) на Р(Х). Положим Ri(X) = Pi(X) + Х\ i = 1,2,..., deg (P(X)) - 1. Далее вычислим ранг матрицы А — (Ri(X), Rz(X),..., Pdeg(F(x))-iP0)- Если он оказался равным deg(P(X)) - 1, то многочлен Р(Х) неприводим, в противном случае этот многочлен приводим.
Пример 3.1.1. Пусть нужно проверить на неприводимость многочлен Р(Х) = X4 4- X + 1. Имеем Р'(Х)	1 и наибольший общий делитель многочленов
Р(Х) и Р'(Х) равен 1. Поэтому, если Р(Х) приводим, то его разложение Р(Х) в произведение неприводимых многочленов содержит только сомножители в первой степени (т. е. не являющиеся кратными). Далее вычислим остатки Р[(Х), Р2(Х), Р3(Х) отделения многочленов Х2,Х4,Х6, соответственно на Р(Х). Нетрудно видеть, что Р\(Х) = X2, Р^Х) — X + 1, P3(JT) = Х2Р2(Т) modP(T) - X3 + X2. Поэтому ЯДХ) = X2 + X, R2(X) = X2 + 1 + X, R3(X) = X3 + X2 + X3 = X2. Таким образом, необходимо вычислить ранг матрицы А = (Ei(T), R2(X), R3(X)) — (X2 + X, X2 + X 4- 1, X2). Третья компонента вектора А имеет наибольшую степень (она была выбрана потому, что имеет наименьшее число слагаемых среди многочленов с наибольшей степенью). Поэтому после первой итерации алгоритма приведения матрицы А к треугольному виду получаем А = (X, 1 4- X), В = (X2). Теперь в матрице А выберем первую строку и проделаем вторую итерацию этого алгоритма. Тогда получим А = (1), В = (X2, X). После третьей итерации алгоритма приведения к треугольному виду матрица А не содержит элементов, а для матрицы В имеем: В = (Х2,Х, 1). Таким образом, после окончания работы рассматриваемого алгоритма вектор В содержит три компоненты, т. е. исходный многочлен неприводим.
Приведенный выше алгоритм Берлекемпа замечателен тем, что его можно расширить до алгоритма факторизации (разложения на множители) многочленов над конечными полями. Но он не является самым быстрым алгоритмом для тестирования неприводимости. Далее мы опишем более быстрые алгоритмы. Для оценки их сложности понадобится оценить сложность алгоритма Евклида.
3.1.3.	Оценка сложности алгоритма Евклида
Согласно школьному алгоритму деления операция приведения многочлена степени m по модулю fc-члена степени п имеет сложность O(mk). Используя этот факт, легко получить оценку сложности алгоритма Евклида вычисления НОД многочленов, степени которых не превосходят п.
114
Глава 3. Неприводимые многочлены
Несколько лучшая оценка получается при применении версии алгоритма Евклида, в которой вместо полного деления с остатком применяется вычитание делимого, умноженного на соответствующий одночлен. Эта оценка в наихудшем случае равна О(п2). В среднем алгоритм работает существенно быстрее.
Можно использовать асимптотически быстрый вариант алгоритма Евклида, который дает в наихудшем случае оценку сложности О(М(n) log п), где М(п) — сложность умножения многочленов степени п в рассматриваемом поле. Изложение этого алгоритма в [6] и [152] некорректно; корректное изложение, восходящее к Штрассену, имеется в [115]. Аккуратная оценка, полученная в [115], имеет вид 24M(n) log2 п + О(п). В некоторых случаях она понижается до 12M(n) log2 п + О(п).
Отметим (см., например, [115] или [28,29]), что сложность вычисления остатка от деления многочлена степени 2п на многочлен степени п равна 5М(п) + О(п), Шенхаге показал [161] (см. также [115]), что для любого поля GF(q) справедливо равенство М(n) = 46n log n log log n + O(n). Все три мультипликативные константы в указанных оценках довольно велики, и в итоговой оценке они перемножаются, поэтому реально указанная оценка сложности быстрого алгоритма Евклида O(n log2 n log log n) становится меньше квадратичной оценки стандартного алгоритма Евклида, вероятно, начиная с многих тысяч. Возможно, использование вместо алгоритма Шенхаге метода Карацубы для умножения сделает быстрый алгоритм Евклида более практичным.
3.1.4.	Тестирование неприводимости многочленов
Для проверки неприводимости полинома q заданной степени п по заданному простому модулю используется следующий известный алгоритм [52].
1.	Проверяем многочлен на наличие кратных корней. Для этого вычисляем его производную и находим наибольший общий делитель многочлена и его производной. Если он не равен 1, то очевидно, что q приводим.
Впрочем, видимо, эффективность этого шага для быстрой отбраковки приводимых многочленов невелика, а алгоритм Евклида работает достаточно медленно, поэтому этот шаг алгоритма проще всего опустить.
2.	Далее выполняем следующий тест, пригодный не только для поля GF(p), но и для произвольного конечного поля, но который быстрее всего работает при р = 2. Строим последовательность полиномов q^+i = q[modq, начиная с полинома q$ = X. Очевидно, что qk — Xpk mod q. Полином q будет неприводимым тогда и только тогда, когда qn — X mod q и для любого простого делителя s числа п наибольший общий делитель многочленов qn/s - X и q будет равен 1. Очевидно, что, если для некоторого s qn/s — X, то многочлен q приводим, и вычислять последовательность qk далее не нужно.
3.1. Тестирование и поиск неприводимых многочленов
115
Для получения оценок сложности алгоритмов тестирования неприводимости нам понадобится оценить сложности модулярного возведения многочленов в степень.
Об оценках сложности модулярного возведения многочленов в степень. Заметим, что сложность возведения произвольного р-ичного многочлена степени п в степень m < рп по модулю неприводимого &-члена можно оценить, используя р-адический вариант метода А. Брауэра для аддитивных цепочек, как
Л/	ч (M(n)logm\
O(kpn log m) + О ( --------)
\ log log m J
операций в поле GF(p). Подробнее об этом см. в разд. 4.6.3, упр. 4.6.30. При этом для модулярного возведения в степень р использовалась оценка сложности O(kpn).
Для произвольного неприводимого модуля / первое слагаемое можно заменить или на 0(M(n) log2 р), вычисляя р-ю степень методом аддитивных цепочек, или на О(рМ(п)), быстро возводя в р-ю степень, а потом выполняя приведение по модулю данного /. Мультипликативные константы можно уменьшить, если по модулю f заранее вычислить «обратный» многочлен R, тогда приведение по модулю можно свести к двум обычным умножениям многочленов (см., например, [28,29].)
Асимптотически почти все операции модулярного умножения являются на самом деле операциями возведения в квадрат и их надо реализовывать, учитывая это обстоятельство, так как и в школьном алгоритме, и в алгоритме Карацубы, и в алгоритмах, основанных на использовании быстрого преобразования Фурье, возведение в квадрат имеет меньшую константу в оценке сложности, чем общее умножение (в последнем случае, например, потому что вместо трех преобразований Фурье можно делать два).
В случае малых р второй способ может оказаться экономнее, так как в нем не выполняются операции умножения, а только операции приведения по модулю. При р = 2 его оценка понижается до 2М(п) + О(п).
При небольших п (порядка нескольких сотен) некоторого ускорения операции приведения по данному модулю можно достичь, рассматривая ее как линейное преобразование, т. е. как умножение пр х n-матрицы на п-мерный вектор и реализуя его со сложностью O(n2p/logp ri) «алгоритмом четырех русских». Если модуль представляет из себя А;-член, то школьный алгоритм дает еще лучшую оценку O(kpn).
Для оценки сложности алгоритма тестирования неприводимости заметим, что возведение в степень р производится по формуле f(X)p = f(Xp) mod q и имеет сложность O(pkn), где к — число одночленов в многочлене q, т. е. при тестировании многочленов малого веса эта сложность линейна, а в общем случае не более чем квадратична. Поэтому сложность вычисления последовательности qk, к = 0,... , п в случае многочленов малого веса квадратична, а в общем случае не более чем кубична.
116
Глава 3. Неприводимые многочлены
Более точная оценка сложности тестирования неприводимости для произвольного многочлена получена в [115]. Она имеет вид
O(M(n) log2p 4- (n(w+1)/2 4- n^2M(n))d(n) log2 n),
где d(n) есть число различных простых делителей числа п, М(п) обозначает сложность умножения многочленов степени п, а ш есть экспонента матричного умножения, т. е. наименьшее число, для которого существует алгоритм умножения двух матриц размера n х п сложности O(nw). В разд. 3.1.6 будет доказана несколько более точная оценка.
Как известно (см., например, [62]), d(n) = O((lnn)/ In Inn), а почти всегда d(n) асимптотически равно In Inn.
Наилучшая известная оценка ш < 2,376 принадлежит Винограду и Куппершмиту (см., например, [115]), откуда следует при малых р оценка сложности тестирования неприводимости О (п1,688), где символ О (п) означает O(n log0^ п). В [115] отмечается, что используя результат В. Я. Пана и Хуана о быстром умножении прямоугольных матриц, показатель степени в предыдущей оценке можно уменьшить до 1.667.
3.1.5.	О тестировании неприводимости многочленов малого веса
Для простоты рассмотрим наиболее практически важный случай поля GF(2).
Как уже отмечалось, для ускорения поиска неприводимых трехчленов Хп 4- Хк 4-1 можно заметить, что трехчлены Хп 4- Хк 4-1 и Хп 4- Хп~к 4- 1 взаимно возвратны друг к другу, значит достаточно перебрать только трехчлены Хп4--Х1,4-1, к < п/2, трехчлен Хп+Хп/2+1, очевидно, является квадратом, т. е. приводим. Аналогичным образом можно сократить вдвое перебор и в случае пятичленов.
Далее, с помощью теоремы Штикельбергера—Суона (см., напри-меР [9]), проверяем, не является ли выбранный трехчлен приводимым. Она утверждает, что трехчлен 1 4- Хк 4- Хп над полем GF(2) заведомо будет приводимым (и более того, будет иметь четное число неприводимых делителей)
1)	при четном п, нечетном к, к п/2, и пк/2 = 0,1 (mod 4);
2)	при четном к и п = 4:1 (mod 8) в случае, когда к делит 2п;
3)	при четном к и n = ±3(mod 8), если к не делит 2п.
Кроме того, очевидно, что при четных п и к трехчлен является квадратом, и поэтому приводим. При нечетном п при поиске неприводимых трехчленов можно ограничиться случаем четного к, так как взаимные трехчлены I 4- Хк 4- Хп и 1 4- Хп~к 4- Хп приводимы или неприводимы одновременно.
Упражнение 3.1.1. Указанная проверка результативна с вероятностью асимптотически 1/2.
3.1. Тестирование и поиск неприводимых многочленов
117
Для ускорения работы алгоритма генерации неприводимых многочленов можно для просеивания приводимых многочленов применять алгоритм Бен-Ора, а точнее, вычислять НОД данного многочлена q с многочленами X + X2', i — 1,2,... . При i < log2 п фактически надо выполнять пробное деление на неприводимые делители многочленов Х2‘"2 + ...+ 1.
Например, вначале выполняем деление на трехчлен 1 + X + X2. Быстрее всего для этого поделить с остатком на 1+Х3, для чего достаточно просто заменить все показатели степени в тестируемом многочлене на остатки по модулю 3, и выполнить приведение подобных членов по модулю два, в результате чего и получается искомый остаток по модулю 1 + Х3. Если он будет равен трехчлену 1 + X + X2, то тестируемый многочлен делится на него, и, значит, приводим. Фактически никакого деления производить не надо, а достаточно проверить, делится ли n + к на 3. Упражнение 3.1.2. Вероятность делимости на X2 + X + 1 в случае трехчленов равна асимптотически 2/9, а в случае пятичленов — 20/81.
Подобный же прием в случае пятичленов и деления на 1 + X + X2 + X3 + X4 возможен, но неэффективен.
Эффективно, однако, пробное деление на 1 + X7, остаток в котором находится аналогичным способом (с заменой 3 на 7). После этого полученный остаток проверяется на делимость на 1 + X + X3 и 1 + X2 + X3 (это нетривиальные неприводимые делители 1 + Х7), для чего достаточно его сравнить со всеми кратными им трехчленами не выше 6-й степени, которые суть
1+Х2+Т6, 1+Х4++	1+Х2+ +
1+Х + Х3, 1+Х + + 1+Х4 + +
и в случае совпадения с одним из них тестируемый многочлен является приводимым. По существу здесь вычислялся НОД тестируемого многочлена и многочлена 1 + Х7. Вероятность того, что указанный НОД будет отличен от 1, в случае трехчленов равна 6/49, а полная вероятность результативности одного из двух описанных пробных делений и проверки по теореме Суона равна согласно формуле включения и исключения и китайской теореме об остатках 1/2 + 2/9+6/49-12/441-1/9-3/49+2/147 = 83/126 = 0,658 . В случае пятичленов указанная вероятность меньше и равна приблизительно 0,347.
В [182] предлагается продолжить эту процедуру и фактически вычислять НОД тестируемого многочлена с двучленами вида 1 + Х2™-1, тп = 4, 5,..., 10. На самом деле, конечно, вначале надо выполнить деление с остатком на X2"1-1 + 1 аналогично тому, как это делалось выше, а потом полученный остаток (трехчлен или пятичлен степени не выше 2W - 1 искать в заранее заготовленном и помещенном в память машины списке трехчленов и пятичленов указанной степени, кратных одному
118
Глава 3. Неприводимые многочлены
из неприводимых многочленов степени, делящей т (произведение всех таких многочленов, как известно, и равно 1 4- Х2™-1).
Логарифмический поиск в этом списке требует времени О(т) и памяти <?(24ш) в случае пятичленов и О(22т) в случае трехчленов (что ограничивает т числом 5 в первом и числом 10 во втором случае). Использование алгоритма Евклида или пробного деления на заранее вычисленные неприводимые многочлены степеней, делящих т, ликвидирует проблемы с памятью, но требует в обоих случаях времени в худшем случае <9(22ш) на один многочлен.
Для составления указанного списка можно использовать любой из этих подходов, но оценка времени будет умножаться на число проверяемых трехчленов <9(22ш) или на число проверяемых пятичленов О(24т), что приводит к границе т < 8 в первом и т < 6 во втором случаях. Граница может быть повышена до 10, если тестируются только многочлены специального вида, например 1+1 + Хп, о чем пойдет речь далее.
Отметим, что указанные приемы сокращают лишь время составления списка неприводимых многочленов с заданными границами степеней, а для тестирования индивидуальных многочленов ускорение достигается лишь с некоторой вероятностью.
Для криптографических целей особый интерес представляют неприводимые трехчлены простой степени. Следующее утверждение было доказано в [104].
Упражнение 3.1.3. Докажите, что при простом n = 13(mod24) и n = I9(mod24) таких трехчленов не существует.
Указание. Так как при этом n = ±3(mod8) и одновременно n = l(mod3), то согласно теореме Штикельбергера—Суона трехчлен 1+Х*+-Хп при четном к 2 приводим, а трехчлен 1 4- X2 +- Хп делится на 1 + X -+ X2 при n = l(mod 3).
Теоретически оценить вероятность взаимной простоты трехчлена степени п с многочленом X-+Х2 в общем случае затруднительно. В недавней работе [97] на основе вычислительного эксперимента выдвинута гипотеза, что эта вероятность близка к \/к. Также там была выдвинута подтвержденная численными экспериментами гипотеза, что время Т(к) проверки условия (/, X +- X2 ) — 1 удовлетворяет равенству
fc-i
2=1
Если обозначить t(n) оценку времени работы детерминированного теста для случайного трехчлена степени п, то в [97] стратегия выбора параметра fc в процедуре предварительного просеивания основывалась на проверке неравенства кТ(к) < t(n), которое должно обеспечить малое время предварительного просеивания по сравнению с временем выполнения детерминированного теста в случае неудачи предварительного просеивания.
3.1. Тестирование и поиск неприводимых многочленов
119
В [97] велся поиск неприводимых трехчленов простых степеней п, для которых 2П - 1 тоже простое (называемое числом Мерсенна). Интерес к ним вызван тем, что такие трехчлены автоматически оказываются примитивными. Существуют они не для всех экспонент Мерсенна. В [97] установлен мировой рекорд: найдены два примитивных многочлена (естественно, трехчлены) степени 3 021 377. Значения к у них равны 361 604 и 1 010 202.
Интересно, что в [97] не использовался упоминавшийся выше теоретически самый быстрый известный алгоритм сложности О (п1,688). Вместо него использовался стандартный описанный выше квадратичный алгоритм с некоторыми программными ухищрениями.
Так, кроме стандартного использования заранее вычисленной таблицы для быстрого возведения в квадрат, и ускорения деления на трехчлен за счет работы не с битами, а с 32-битными машинными словами, в [97] рассматривались только трехчлены с четным п - к (в противном случае можно перейти к взаимному трехчлену, так как п нечетно) и ловко использовалось то обстоятельство, что в квадрате данного многочлена все коэффициенты при нечетных степенях нулевые. Благодаря этому, удалось уменьшить в четыре раза число битовых операций XOR, на четверть уменьшилась используемая память и почти в два раза уменьшилось число обращений к ней.
В [97] интересовались только многочленами с простыми степенями. Для многочленов с составными степенями можно добиться некоторого ускорения следующим способом.
Ускорение тестирования неприводимости многочленов малого веса специального вида. Для трехчленов 1 + Хк 4- Хп над полем GF(2) в случае (п, к) = t > 1, где t нечетно, проверку на неприводимость можно ускорить следующим образом (если t четно, то все такие многочлены, очевидно, являются квадратами). Заметим, что тогда р(Х) = /(Xz), где f(X) — трехчлен степени m — n/t, и если он приводим, то и р(Х) тоже приводим, поэтому достаточно провести проверку на неприводимость у всех трехчленов степени т, что делается существенно быстрее, чем при прямой проверке.
Если выяснится, что многочлен f(X) неприводим, то не очевидно, что тогда многочлен р(Х) = /(Х*) тоже неприводим.
Имеется, однако, теорема (теорема 3.35 [52]) о том, что, если порядок е многочлена f(X) таков, что все простые делители числа t делят е, но не делят (2Ш - 1)/е, то многочлен р(Х) = /(X*) будет неприводимым порядка et (порядок многочлена д(Х) равен г. Это, по определению, означает, что г есть наименьший показатель степени такой, что Хг — 1 делится на д(Х\). Для проверки указанного условия для е и t разложим t на простые множители,
120
Глава 3. Неприводимые многочлены
что делается со сложностью o(t), определим для каждого pi максимальный показатель степени Д, такой что делит 2Ш - 1, что делается со сложностью О(т2), тогда указанное выше условие равносильно тому, что е должно делится на р\ • •. р$ , а так как е это порядок многочлена f(X), и он не должен быть делителем чисел аг = (2W - 1)/рь значит X0,1 mod f(X) должно быть отлично от единицы при всех i = 1,..., з, и это условие равносильно указанному выше, а его проверка, как вытекает из оценки соответствующего раздела, выполняется со сложностью О(sm2 log log m), после чего остается (в случае необходимости) со сложностью О(т2) убедится в неприводимости многочлена f(X). Заметим, что з не превосходит числа простых делителей у t, т. е. не больше О (log t/log log t) (см. [62]), а в среднем O(loglogf), как отмечалось выше. Поэтому 0(sm2 log log m) = o(n2) при t2 log log £/log t > log log m.
Указанная оценка сложности проверки упомянутого условия слишком груба, так как в ней оценивается число необходимых умножений в поле GF(2m) как O(sm/logm) при т возведениях в квадрат, а сложность каждого умножения согласно оценке Шенхаге как О(т log т log log т). В реальности число умножений может быть не столь большим, так как показатели степени не произвольные з чисел, а числа вида (2W - 1)/р*. Если, например, — такое наименьшее число, что 2Wi - 1 кратно pi, и тгц много меньше т, то, как известно, т кратно mz и
2Ш - 1	&г(2ш - 1)	2W| - 1
------=	—г-’	где =	• Pi 2Wl - 1	Pi
Представляя число (2Ш - l)/(2m'~1) в виде (аш/Шг - 1)/(а- 1), где а = 2Шг, можно, предварительно вычислив все степени с маленькими показателями bi, найти все нужные нам степени, используя только
s
O(log (m/m,))
2=1
умножений, а последняя величина в худшем случае не больше О(т), а в среднем значительно меньше, но число возведений в квадрат при таком методе будет грубо оцениваться как 0(sm).
Покажем, что, если упомянутое выше условие не выполняется, то тестирование проводить не нужно, так как тогда многочлен /(X*) будет всегда приводимым. Сначала рассмотрим случай, когда (t, е) = 1.
Известно [52, теоремы 2.47, 3.5], что произведение всех неприводимых над полем GF(2) многочленов степени т и порядка е и единичными старшими коэффициентами равно Qe — круговому многочлену порядка е, если т — такое наименьшее число, что 2т - 1 кратно е (называемое порядком двойки по модулю е), е > 1. Круговой многочлен Qe имеет степень ^(е), коэффициенты его принадлежат GF(2) и все его корни простые и лежат в поле GF(2m), являясь первообразными корнями е-й степени из единицы, т. е. имеют вид as, (з,е) = 1, 1 < s < е, где
3.1. Тестирование и поиск неприводимых многочленов
121
a € GF(2m), ae = 1, ar 1, г — 1,..., е — 1. Отсюда видно, что, если f(X) — любой из упомянутых неприводимых многочленов (а их количество, кстати, равно (р(е)/тп)9 и as, (s, е) = 1 — любой из его корней, лежащих в поле GF(2m), то ar,(r,e) — 1, rt = s mode, будет корнем многочлена /(Х*) и одновременно корнем какого-то неприводимого над полем GF(2) многочлена д(Х) степени тп и порядка е (может быть, и равного /(X)), значит многочлены д(Х) и /(Х1) не взаимно просты, а так как д(Х) — неприводим, то он должен быть делителем /(X*), и последний поэтому не является неприводимым, так как его степень равна mt > m.
Рассмотрим теперь случай, когда t имеет простой делитель р, не делящий е. Тогда, согласно предыдущему, многочлен h(X) = f(Xp) приводим над полем GF(2), а значит и многочлен /(X*) = h(X^p) тоже.
Осталось рассмотреть случай, когда все простые делители t делят е и (t(2w - 1)/е) > 1. Тогда t' = t/(t, (2Ш - 1)/е) < t. Если t' = 1, то et = e(t,(2m - 1)/е) делит 2W - 1, так как (t, (2m - 1)/е) делит (2т - 1)/е, значит порядок двойки по модулю et равен m < mt, так же как и по модулю е. Если же t' > 1, пусть р — любой его простой делитель, и t" = (t, (2m - 1)/е)р. Тогда t" делит (t, (2m - l)/e)f = t. Проверим, что тогда порядок двойки по модулю et" будет равен mp < mt".
Действительно, указанный порядок s должен быть кратен т и иметь вид тк, так как иначе 2s - 1 не делилось бы на е, но
утк _ 1
2тпк _ ।	 (| 2т |	।
будет делится на et" = e(t, (2т - 1)/е)р тогда и только тогда, когда
1-р2ш+
будет делится на р (ведь e(t, (2т - 1)/е) делит е(2т - 1)/е) = 2т - 1, но et" не делит 2т - 1, так как тогда число (t, (2т - 1)/е)р делило бы ((2т-1)/е) и t = t'(t, (2m-l)/e) одновременно, что противоречит тому, что (t, (2т — 1)/е) — наибольший общий делитель чисел t и (2Ш - 1)/е), а так как 2т - 1 делится на е, а значит и на р, то по модулю р указанная сумма будет равна к, и будет кратна р лишь при к, кратном р, откуда и следует требуемое. Заметим, что в обоих случаях было доказано существование такого делителя t' у числа t (может быть f = t), что порядок двойки по модулю et7 будет меньше mt'.
Уже отмечалось выше, что произвольный неприводимый над полем GF(2) многочлен f(X) степени т и порядка е является делителем кругового многочлена Qe, а, значит, многочлен /(X*) делит многочлен Qe(X*), а так как все простые делители t делят е, то, как показано в доказательстве теоремы 3.35 [52], из свойств круговых многочленов вытекает, что Qe(X*) = Qet\X), значит многочлен f(Xl) делит круговой многочлен Qet\X), но, как показано там же, согласно теореме 2.47 степень каждого неприводимого делителя кругового многочлена Qet\X) равна порядку
122
Глава 3. Неприводимые многочлены
двойки по модулю et', т. е. в рассматриваемом случае меньше mt1, значит, делитель h(X) = f^X^) будет приводимым, так как его степень равна mt', а поэтому и многочлен /(X*) = h^X1^) тоже будет приводимым.
Итак, во всех рассматриваемых случаях (кроме самого первого) многочлен f(Xt) оказывается приводимым.
Из указанного выше вытекает также, что при поиске неприводимых трехчленов достаточно ограничиться только многочленами с условием (п, к) — 1, которых, как известно, (р(п) штук. Отметим, что при п имеющем много малых простых делителей, доля таких многочленов может стремиться к нулю, но в среднем, как известно, вероятность того, что трехчлен будет удовлетворять указанному условию асимптотически равна 6/тг2. Если целью является поиск одного неприводимого трехчлена, то согласно указанному выше, имеет смысл начать с многочленов с большим нечетным (п, к).
Для пятичленов справедливо почти все сказанное выше, за исключением оценки сложности тестирования всех пятичленов, которая становится трудно выводимой.
3.1.6.	Асимптотически быстрый алгоритм тестирования неприводимости многочленов
Здесь мы для алгоритма, изложенного в предыдущих разделах, докажем приведенную там же оценку оценку сложности, следуя [115].
Быстрая модулярная композиция многочленов. Модулярной композицией называется операция g(h) композиции многочленов h, д вычисленная по модулю данного многочлена f(X). Покажем, следуя [96, 115], что ее можно выполнить для многочленов степени меньшей п — deg / со сложностью
О(п(ш+1)/2) + 6п'/2(М(п) + О(п)), где ш — экспонента матричного умножения, М(п) — сложность умножения многочленов степени п. В частности, если для М(п) использовать достаточно хорошую оценку Тоома [45], то для модулярной композиции будем иметь оценку О(п^+1^2). На практике при п порядка тысячи эффективнее применять для умножения алгоритм «четырех русских» с оценкой сложности <?(log2 p)n3/logp п. Тогда, применяя алгоритм умножения Тоома с оценкой О(п1,4), будем иметь оценку для модулярной композиции
О|'°ьр)"г+О(п'.»).
logp п
В случае программной реализации при р = 2 память может быть оценена как п3/2, а время работы как
w log2 п
3.1. Тестирование и поиск неприводимых многочленов
123
Использование алгоритма Карацубы еще не позволяет получить квадратичную оценку сложности.
Алгоритм модулярной композиции основан на следующей идее. Положим тп = fn1/2] и представим д(Х) в виде
т-1
g = ^gtXm',
2=0
где степени многочленов дг меньше тп. Очевидно, что это делается бесплатно. Вычислим J^mod/, i = 2,...,тп. Если заранее вычислить многочлен jR(X) такой, что R(X)f(X) = X2n + r(X), degr(T) < п, то модулярное вычисление всех этих степеней имеет сложность Зт(ЛГ(п) + О(п)) и требует памяти O(mn) = (9(п3/2). Составим прямоугольную m х п матрицу А, строки которой состоят из коэффициентов многочленов
п-1
hl mod f = У^ h^jX3, i = 0,..., m - 1,
2=0
и квадратную m х тп матрицу В, строки которой состоят из коэффициентов многочленов
т-1
gi = '^2gi,JX:’, г = 0, з=о
и вычислим их произведение В А, разбивая матрицу А на тп квадратных подматриц (одна из них может быть не квадратной, тогда превратим ее в квадратную, дополнив нулями) и выполняя тп раз умножение квадратных тп х тп матриц со сложностью тпО(тпш) = О(п^+1^2). Заметим, что в полученном произведении В А в г строке будут стоять коэффициенты многочлена
гг(Х) = дг(Ь) mod/,
так как при смене порядка суммирования имеем
п-1 т-1	т-1	п-1
ri — УЗ УЗ Qt’jhj’kX ~ УЗ 9i,j УЗ hj,kX =
k=Q j=Q	j=0	k—Q
m-1	m-1
= 52 mod /) = 52 mod f=mod f-
j=G
Окончательно находим модулярную композицию по формуле
g(h) mod / = УЗ дг(к)ктг mod / = УЗ ггктг mod /
2 = 0	2=0
применяя схему Горнера, делая т умножений и сложений многочленов степени п — 1 по модулю /. Сложность этих вычислений равна
124
Глава 3. Неприводимые многочлены
m(3M(n) 4- 0(п)) и памяти для них требуется 0(п). Алгоритм модулярной композиции требует еще памяти О(п3/2) для запоминания матрицы В и произведения АВ.
О схемной реализации модулярной композиции. Полученные выше оценки сложности справедливы и для схемной реализации, однако в случае использования «алгоритма четырех русских» это верно, лишь когда один из многочленов фиксирован. Зато в этом случае можно, например, при р = 2 указать оценку с конкретной мультипликативной константой в главном члене
+ о ( "г'01йг'°8И + (МЫ + О(„)). log2 п \ log2 п )
Кроме того, в этом случае можно получить оценку для глубины вида O(log2 п)2 и даже вида O(log2 п), если фиксирован внутренний многочлен композиции. Действительно, для одновременного вычисления системы степеней от первой до n-й существует схема глубины А(п) +1 из п 4- о(п) операций умножения.
Упражнение 3.1.4. Докажите это.
Известно, что схема для быстрого модулярного умножения многочленов имеет сложность О(пА(п)А(А(п)) и глубину D(n) = О(Х(п)). Поэтому вычисление системы многочленов hl mod /, i = 2,..., т методом Монтгомери выполняется с глубиной (A(m) + и сложностью (3 4- о(Д))т(М(п) + О(п)). Если многочлен h фиксирован, то и сложность и глубина равны нулю. Глубина схемы Лупанова для умножения фиксированной п х n-матрицы на произвольную оценивается как log2 п 4- 0(1). Поэтому глубина части схемы для модулярной композиции, осуществляющей перемножение матриц, не больше
(А(т) + 1)О(п) 4- log2 п 4- 0(1) = (А(т) 4- 1)(Р(п) 4- 1) + 0(1).
Используя указанную выше схему для совместного вычисления степеней, схему Горнера для многочленов n-й степени можно модифицировать так, чтобы число умножений в ней увеличилось асимптотически в два раза, а глубина мультипликативной и аддитивной части схемы была бы А(п) 4-1.
Упражнение 3.1.5. Докажите это.
На самом деле схему Горнера можно модифицировать так, что ее глубина будет асимптотически равна А(п), а сложность останется 0(п).
Поэтому после того как вычислен многочлен hm mod /, вычисление окончательного результата с помощью модифицированной схемы Горнера можно выполнить с глубиной
(А(т) 4- 2)(2)(п) + 1) = f ^А(п) 4- 2)(Е>(п) 4- И = С*(А(п)2)
3.1. Тестирование и поиск неприводимых многочленов
125
и сложностью
log 2 п	\ log2 nJ
Если многочлен h фиксирован, то в случае схемной реализации вместо схемы Горнера можно выполнить параллельно m умножений по модулю /, а потом m - 1 сложение многочленов. Сложность этой схемы равна mM(n) + (т - 1)п, а глубина log2 т + D(M(GF(2n))) = O(log2 п), если используется умножение методом Шенхаге или методом А. Л. Тоома. Поэтому в этом случае окончательно имеем оценку глубины O(log2 п) при сложности
п2 _ (nJ log2 log2 n \	z 4
------+ О ------*2	+ n1/2(M n) + n . log2 n \ log2 n J
О возможности использования алгоритма Штрассена умножения матриц. Этот алгоритм сводит умножение n х п-матриц к 7 умножениям п/2 х п/2 матриц и 15 сложениям таких же матриц. Для битовой сложности (и для схемной сложности) он имеет рекуррентную оценку Т(п) < 7Т(п/2) + 15п2/4, а для глубины — рекуррентную оценку D(n) Р(п/2) + 4, откуда имеем D(n) ^4 log2 n+O(l), T(n) 42nlog2 7 и для сложности модулярной композиции
42п|0& 7 + 6п1/2(М (п) + О(п)).
В случае схемной реализации модулярной композиции при фиксированном внутреннем многочлене сложность оценивается как
42n1082	+ п'/2(М(п) + п),
а глубина как O(log2 п). Для уменьшения сложности умножения матриц можно матрицы до определенного размера умножать методом «четырех русских», а потом начать применять штрассеновские итерации. В случае схемной реализации это можно делать только когда произвольная матрица умножается на фиксированную. В этом случае 4 сложения подматриц этой матрицы делать не надо, и рекуррентная оценка заменяется на более точную Т(п) 7Т(п/2) 4-11п2/4. На самом деле для n = 2к в этом случае получается оценка T(ri) (14/3)п1082 7 , а также оценка
Т(2*п) С 1к (т(п) + у п2) , откуда следует, что
уп‘°82	+	+
Сравнивая с оценкой n3/log2 п алгоритма «четырех русских», получаем, что итерацию Штрассена выгодно делать, начиная с п, такого, что
8п3	7п3	77п2
------> ------?
log2 2n log2 п 3
126	Глава 3. Неприводимые многочлены
т. е. начиная с п порядка 200. Так как в модулярной композиции используется умножение матриц размера п1/2, то эффект от использования штрассеновской итерации ожидается только начиная с п = 40 000.
Еще один способ ускорения штрассеновского алгоритма умножения произвольной двоичной матрицы на фиксированную матрицу предлагается в следующем упражнении.
Упражнение 3.1.6. Постройте из элементов XOR схему для умножения матриц сложности
77	n10g2 7
6 (10g2 n)log2 7/4 при n = 2кк.
Указание. Разбейте матрицу на подматрицы размера | log2 п и вычислите заранее n5/2/log2 п линейных функций от | log2 п переменных. Тогда умножение подматриц размера | log2 п делается бесплатно.
Так как практически нас интересуют п порядка 200, то при схемной реализации вместо использования модулярного умножения для реализации любого линейного оператора Фробениуса проще непосредственно вычислить матрицы этих операторов и реализовать их схемами из элементов XOR, построенными с помощью какой-нибудь программной эвристики с глубиной не больше log2 п и сложностью не больше 2n2/log2 п.
В случае программной реализации строки матриц имеет смысл хранить в виде векторов длины n/w из машинных слов длины w. При сложении подматриц в алгоритме Штрассена и в алгоритме «четырех русских» используем операцию побитового XOR для машинных слов. Вместо log2 п в алгоритме «четырех русских» используем подходящую степень двойки. Тогда блоки такой длины можно будет целиком выбирать из соответствующих машинных слов. В результате скорость работы программы увеличится в w раз по сравнении с побитовой организацией вычислений.
Однако на практике при реализации модулярного произведения требуется умножать матрицы порядка 20 и, вероятно, достаточно будет использовать только алгоритм «четырех русских» при выборе длины блока 4.
Оценка сложности тестирования неприводимости. Здесь мы докажем несколько более точную, чем данная в [115], оценку
О (М(п) log2 р + (n(w+1)/2 +	flog2 n + d(n)—10g2 П,
\	\	log2 log2 n J )
где d(n) — число различных простых делителей числа п, М(п) — сложность умножения многочленов степени n, a cj — экспонента матричного умножения.
Напомним указанный ранее алгоритм тестирования неприводимости многочлена q степени п. Построим последовательность полиномов
= $ m°d Я. начиная с полинома Qq = Х. Очевидно, что qk — Хр mod<?
3.1. Тестирование и поиск неприводимых многочленов
127
имеет степень меньше п. Полином q будет неприводимым тогда и только тогда, когда qn — X mod q и для любого простого делителя s числа п наибольший общий делитель многочленов qn/s - X и q будет равен 1. Напомним, что число различных простых делителей числа п равно d(n) = O((lnn)/ln Inn), а почти всегда d(n) асимптотически равно In In п. Так как сложность вычисления НОД многочленов степени п равна <9(M(n) log п), то сложность вычисления всех (qn/s - X,q) оценивается как O(d(n)M(n) log n) = O(M(n) log2 n).
Оценим сложность вычисления всех многочленов qn/s. Так как q^ = Хр mod q, то сложность вычисления q^ равна
((Z(p) + l)(3M(n) + O(n)) + 6M(n) = O(log2pM(n)),
где 1(р) — длина кратчайшей аддитивной цепочки для числа п. Указанная первой более точная оценка получается методом Монтгомери, а более грубая вторая, очевидно, получается с помощью бинарного метода вычисления аддитивных цепочек. Заметим, что q^j вычисляется с помощью модулярной композиции при известных ф, qj по формуле = qi(qj) mod q. Действительно, применяя тождество Фробениуса, имеем
qi+j(X) = Хр +J mod q = (Хр mod q)1*’ mod q = q?(X) mod q —
— qi (X^) mod q = qj (X^ mod q) mod q — qi(qj) mod q.
Хотя операция модулярной композиции, вообще говоря, некоммутативна, но в рассматриваемом тождестве многочлены qi9 qj можно поменять местами. Благодаря полученному тождеству вычисление системы многочленов {qn/s} =	, Qnd,}, П\ — n, d = d(n) может быть выполнено
со сложностью
((/(р) + 1)(ЗЛГ(п) + O(n)) + 6M(n) + Z(nj,..., nd)O(n(“+1)/2 + n1/2M(n))
так как после вычисления Qi требуется Z(ni,..., п^) раз применить операцию модулярного умножения. Применяя теорему Яо (см. разд. 4.6), получаем, что
/	ч	z х log? п / (log? п)2 \
Z(n15..., nd) = log2 n + 0(d)--j------ О ( ----------ту ).
log2 log2 n \ (log2 log2 n)2 /
Так как для почти всех п, как известно, d(n) = O(loglogn), то 1(п\,..., nd) = O(log2n). Указанные выше оценки можно уточнить, используя упоминавшуюся ранее оценку [27]
l(m, ...,nd) = logj n + 0(d) + —(1 +	’
log2 R \	\ у log2 R / /
где R = nd/m, m — произведение всех простых делителей п. Если число п свободно от квадратов, то m = п и R — nd~x.
128
Глава 3. Неприводимые многочлены
Из полученных выше оценок следует окончательная оценка
О (M(n) log2 р -4 (n(w+1)/2 4- пУ2М(п)) f log2 n 4- d(n)—П,
\	\	log2 log2 ) )
так второе слагаемое в ней превосходит оценку O(M(n) log2 п)) сложности вычисления НОД. Более сложными рассуждениями можно получить оценку
о( M(n) logp -4 (п(йЖ)/2 -4 п1//2ТИ(п)) (1 4-	Е(п) log/Л ,
\	\ log(J) п /	/
где E(n) = 1 4- O(log(4) n)/log(3> n.
Очевидно, полученная оценка будет справедлива и для тестирования многочленов над произвольным конечным полем GF(q), нужно в ней только заменить р на q. Первое слагаемое в полученной оценке сохранено только из-за возможного случая, когда р (или q) велико в сравнении с п. Тогда этот член в сумме может стать главным, и его имеет смысл заменить на указанную выше более точную оценку. Если же р мало, например р = 2, то первый член в оценке можно отбросить, и тогда она принимает вид
О ((п^+}^2 -4 п^2М(п)) flog2 n + d(n)——----------.
\	\	log2 log2 n) )
Если для умножения многочленов используется достаточно быстрый алгоритм, например, такой, что M(n) = O(nW//2), то оценка принимает вид
О fn^+l^2 flog2 n 4- d(n)—*°-2 П—.
\ '	\	10g2 log2 n J J
Выше отмечалось, что с учетом новейших результатов о матричном умножении, окончательная асимптотическая оценка принимает вид О(?г1’668).
При п порядка нескольких десятков тысяч более реалистичная оценка сложности модулярного умножения, как отмечалось, имеет в лучшем случае вид (6 -4 £n)n2/\ogp п (для этого нужно применять алгоритм умножения со сложностью М(п) — О(п1,4)). Используя стандартный алгоритм Евклида с оценкой сложности GD(n) < 5п2 /2 4- Зп/2, тогда имеем окончательную оценку
z х ^2 (	, х / х log2 n \ z ч (5п2 Зп\
(6 4- еп)---- log2 п 4- (1 4- £n)d(n)------- 4- d(n) — 4- — =
log^n \	log2log2n/ \ 2	2 J
7	X ? 7 X ( log n \
= (2,5 4- sn)n“d(n) = О -— ---- I,
\ log log n J в которой главным членом оказывается оценка сложности вычисления НОД. Асимптотически оценку сложности вычисления НОД многочленов степени п можно, конечно, оценить как (24 4-	(n) log2 п, где М(п)
можно оценить методом Карацубы как (35/3)nlog2 3. Но эта оценка стано-
3.1. Тестирование и поиск неприводимых многочленов
129
вится лучше оценки 5п2/2 только при степени п, равной многим миллионам. Возможно при таких больших п использование методов умножения Шенхаге или Кантора ускорит выполнение алгоритма Евклида, но при п порядка десятков тысяч это сомнительно.
3.1.7.	Вероятностные алгоритмы тестирования неприводимости многочленов
Такие алгоритмы были предложены Рабиным и Бен-Ором (см. [92,156] или [115]). Бен-Op заметил, что в среднем у любого многочлена q над полем GF(p) имеется неприводимый делитель f степени не выше г = O(log2n). Так как f делит ХрГ - X, то НОД(</, ХрГ - X) 1, значит для рассмотренной выше последовательности qm = Xpm mod q имеем, что НОД(дг - X, q) =4 1. Поэтому для проверки того, что многочлен q не имеет делителей степени не выше г, достаточно проверить, что НОД(дт - X,q) = l,m^r, в противном случае он такие делители имеет и поэтому приводим. Сложность вычисления последовательности НОД(дт-Х,<?), m < г оценивается как r(6 log2 рМ(п) + Е(п)) в общем случае и как r(O(pkri) + Е(п\) в случае, если тестируемый многочлен q содержит к одночленов, где Е(п) есть сложность вычисления НОД многочленов степени п. В случае р = 2 первая оценка понижается до г(2М(п) + Е(п)).
При г = \п/2\ указанный алгоритм является не вероятностным, а детерминированным, и всегда дает правильный ответ. Однако его сложность оказывается выше квадратичной. Если же выбрать г — Clog2n, то он становится вероятностным алгоритмом и будет давать правильный ответ только с некоторой положительной вероятностью. Но сомнительными будут только его утверждения о неприводимости данного многочлена. Утверждения о приводимости будут, очевидно, всегда правильными.
Если для вычисления НОД в вероятностном алгоритме Бен-Ора использовать обычный алгоритм Евклида со сложностью Е(п) — О(п2), то его сложность будет все равно выше квадратичной, но если использовать быструю версию алгоритма Евклида с оценкой E(n) = O(M(n) logn), то сложность указанного вероятностного алгоритма будет равна
O(M(n)(log п)2 + M(n) log n log2 р)
и при малых р она будет меньше сложности детерминированного алгоритма даже в его самом быстром варианте. Причина этого в том, что в алгоритме Бен-Ора вычисляется только небольшое число членов последовательности qi, и поэтому количество операций модулярного умножения многочленов в нем меньше, чем в детерминированном алгоритме, хотя количество операций вычисления НОД может быть и больше.
Поэтому алгоритм Бен-Ора можно использовать для ускорения работы любого детерминированного алгоритма. Для этого сначала запускаем алгоритм Бен-Ора (может быть, с небольшим значением г), который
130
Глава 3. Неприводимые многочлены
быстро будет отсеивать приводимые многочлены, а после того как он закончил работу, объявив что многочлен, вероятно, неприводим, запускаем детерминированный алгоритм.
Для ускорения работы в этом предварительном применении алгоритма Бен-Ора можно ограничится к = [logp nJ, т. е. вычислять НОД данного многочлена q с многочленами /г = Хр' - X, i < logp п. Тогда на первом шаге алгоритма Евклида выполняется деление на /г с остатком, а потом алгоритм Евклида работает с многочленами степени не больше рг, поэтому оценку сложности этого варианта алгоритма Бен-Ора можно улучшить до
—П  V----h Е(рг) = О (n log2 n log log n + E(n)} =
i=\ V
= О (n log2 n log log n) + O(E(n))
в случае использования быстрого алгоритма Евклида и быстрого деления и до
йг р
в случае использования обычного алгоритма Евклида и школьного деления. При малых i вычисление НОД можно заменить на деление на заранее вычисленные неприводимые делители многочленов Хр'~2 4-... + 1.
Еще один вероятностный алгоритм. В [20] для случая р > 2 был предложен алгоритм, в котором сначала вычисляется разложение рп - 1 = 2kt, t = 2s + 1 и для данного многочлена q(X) выбирается случайно многочлен а меньшей степени. Для него вычисляется по модулю q многочлен а*, и если он не равен 1, то последовательным возведением в квадрат по модулю q вычисляются многочлены a24, i < к, пока не получится минус единица (к сожалению, операция возведения в квадрат в поле характеристики р > 2 выполняется не так быстро, как хотелось бы). Если этого не случилось, то многочлен приводим, так как для неприводимого многочлена все выполняемые операции фактически выполняются в определяемом этим многочленом поле порядка рп, а в этом поле для любого ненулевого а, очевидно, арП~* — 1. Отсюда, извлекая поочередно квадратные корни, всегда находим такое г, что а24 — -1, г < к, или выясняем, что а1 = 1. Если же процедура завершилась удачно, выбирается новый случайный многочлен а, и она повторяется, но не более чем, скажем, 20 раз. В [20] показано, что для приводимого многочлена вероятность удачи в этой процедуре не больше половины. Значит, если процедура удалась 20 раз, то этот многочлен приводим с вероятностью меньше одной миллионной, и можно для точной проверки запускать детерминированный тест. Если число п имеет достаточно много различных простых делителей, то время работы детерминированного теста больше, чем указанного
3.1. Тестирование и поиск неприводимых многочленов
131
вероятностного алгоритма, хотя бы потому, что в последнем не применяется алгоритм Евклида. Однако если п простое, то в детерминированном алгоритме алгоритм Евклида тоже не применяется ни разу, а только вычисляется X^modQ, и в этом случае рассматриваемый вероятностный алгоритм бессмысленно применять. Но в сравнении с алгоритмом Бен-Ора алгоритм [20] работает асимптотически медленнее, если в первом из них применять быстрый алгоритм Евклида. В случае же применения его стандартной версии, возможно, в некоторых случаях алгоритм Бен-Ора теряет свое преимущество особенно, если для вычисления a1 mod q применять не метод аддитивных цепочек, а упоминавшийся выше алгоритм [115]. Кроме того, алгоритм [20] легче программировать. Возможно, определенный эффект может дать совместное применение небольшого числа шагов этого алгоритма вместе с небольшим числом шагов алгоритма Бен-Ора.
3.1.8.	Генерация неприводимых многочленов
До сих пор неизвестен детерминированный алгоритм, который за полиномиальное от п время генерирует какой-нибудь неприводимый многочлен степени п над полем GF(p). Очень мало известно результатов о существовании неприводимых многочленов с какими-либо ограничениями на коэффициенты (впрочем, известна формула для числа возвратных неприводимых многочленов, см., например, [126]).
Но полиномиальный алгоритм, генерирующий неприводимые многочлены с вероятностью, близкой к единице, указать теперь нетрудно. Вероятность выбранного наугад многочлена степени п оказаться неприводимым равна 0(1 /п). Действительно, из формулы Гаусса для числа неприводимых многочленов степени п над полем GF(p),
Дм) = ^2 ^P(.n/d)pd,
d\n
следует, что l/(2n) < I(n,p) < 1/n при pn 16.
Поэтому для генерации неприводимого многочлена степени п достаточно сделать О(п) случайных выборок многочленов степени п и после каждой выборки тестировать результат на неприводимость каким-нибудь из описанных выше полиномиальных по сложности алгоритмов.
Для ускорения составления таблицы неприводимых многочленов можно заметить, что взаимно возвратные друг к другу многочлены, т. е. получающиеся друг из друга преобразованием р(Х) -»р*(Х) = Хпр(Х~1), будут приводимыми или неприводимыми одновременно, значит достаточно перебрать только половину всех многочленов. Как известно, порядки многочленов р(Х) и р*(Х) совпадают, поэтому взаимно возвратные многочлены будут примитивными или непримитивными одновременно, поэтому аналогичным образом вдвое сокращается перебор при составлении таблицы примитивных многочленов.
132
Глава 3. Неприводимые многочлены
3.2.	Тестирование примитивных многочленов
В некоторых вопросах теории кодирования и криптографии важную роль играют так называемые примитивные многочлены. Напомним одно из эквивалентных друг другу определений примитивного многочлена. Неприводимый над полем GF(p) многочлен степени п называется примитивным, если хотя бы один из его корней в поле GF(pn) (на самом деле все его корни) является примитивным элементом в этом поле, т. е. степени этого элемента пробегают все ненулевые элементы поля.
В следствии 2.1.16 было доказано, что число примитивных многочленов степени п равно р(рп - 1)/п. Несмотря на наличие этой формулы, никаких явных общих конструкций примитивных многочленов неизвестно. Мало известно и о существовании примитивных многочленов с какими-либо ограничениями на коэффициенты. Впрочем, недавно Вен Бао Хан [176] доказал при нечетном р существование при п > 7 примитивного многочлена с заранее заданными первыми двумя старшими коэффициентами.
3.2.1.	Тестирование примитивности неприводимого многочлена
Для проверки построенного неприводимого многочлена д(Х) на примитивность надо проверить, является ли его корень х образующим элементом построенного поля GF(pn). Для этого известен со времен Гаусса алгоритм, который заключается в проверке того, что для любого простого делителя s числа рп - 1 элемент	не равен 1, что равносильно
неэквивалентности	=£ l(modg(X)) при любом s. Этот алгоритм
применим, конечно, и для тестирования на примитивность произвольного элемента конечного поля.
Заметим, что количество простых делителей числа п не превосходит, как отмечалось выше, по порядку (log2 p)n/log п, а в среднем, вероятно, гораздо меньше, скорее всего, О(1п п-Ып In р). Во всяком случае, при n = 1 в среднем согласно [62] число простых делителей у р - 1 асимптотически равно In 1пр.
Факторизация чисел вида рп - 1. В определенном смысле самая трудная часть тестирования примитивности многочлена это разложение на простые множители числа рп - 1. Однако ее достаточно сделать для данных п и р только один раз. Обычно указанные разложения берут из таблиц «Каннингемовского проекта» [99, 173]3) или используют программы типа «Математика». Но, поскольку эти таблицы для нашего читателя могут оказаться малодоступными, в общих чертах опишем, как можно построить простейший алгоритм самостоятельно.
Сначала надо написать простейший алгоритм разложения на множители небольших чисел. Простой тест на простоту можно найти в [20]
3) Третье издание «Каннингемовского проекта» [100] авторам удалось получить через Интернет.
3.2. Тестирование примитивных многочленов
133
в параграфе 1.2. Он удобен для программирования тем, что использует только модулярное умножение и бинарный алгоритм возведения в степень. Если он не проходит, то можно применить алгоритм пробного деления для небольших чисел, а для чуть больших алгоритм Ферма, Шермана-Лемана или один из алгоритмов Полларда, описанных там же или в [45].
Если п составное, то имеет смысл разложить рп - 1 на множители, пользуясь каким-нибудь алгоритмом разложения многочлена Хп - 1 на круговые многочлены
Хп - 1 = П ФДТ), d\n
о которых можно прочитать в любом учебнике алгебры. Самый быстрый алгоритм имеется в [115]. Его сложность O(M(n) log2 п) операций над целыми числами, где М(п) есть сложность умножения многочленов с целыми коэффициентами. При небольших п реальная оценка здесь M(n) = O(nIog23) получается методом Карацубы (см. разд. 4.3). Сам алгоритм рекурсивен и выглядит следующим образом. Сначала разлагаем на множители число п и находим все его простые делители Pi,i = 1,... з. Полагаем /0 — % ~ 1 ив цикле по i от 1 до s выполняем процедуру fi = /г_1(Х^)/Л-ь Тогда fi = Если положить тп = рх ...ps, то фп = Фт(Х"/т) = /г(тп/т).
Далее приходится разлагать каждое из чисел Ф^(р) на простые множители, например, одним из алгоритмов Полларда. Для тестирования простоты чисел Мерсенна 2Р - 1 имеется быстрый полиномиальный алгоритм Лемера—Люка, изложенный в [20,45].
Предположим теперь, что факторизация проведена или взята из таблицы и оценим сложность остальной процедуры. Для этого понадобится
Оценка сложности совместного вычисления системы степеней. Для получения этой оценки воспользуемся оценкой сложности совместного вычисления системы из тп натуральных чисел величины, не большей N, аддитивными цепочками (см. [27,45] или разд. 4.6). Эта оценка имеет вид
log2 N +
(1 + o(l))mlog2 N log2 log2 N
Из нее немедленно следует, что совместное вычисление произвольной системы степеней
ХП1,...,ХПт,	г = 1,...,т
в поле GF(pn) можно выполнить за
+ 0W)
\	log2 log2 N J
операций в поле GF(p). Доказательство оценки для совместного вычисления системы чисел сводится методом перехода к двойственной цепочке
134
Глава 3. Неприводимые многочлены
к оценке сложности вычисления вектора векторной аддитивной цепочкой. Так как при построении двойственной цепочки элементы удвоения переходят опять в элементы удвоения, а возведение в квадрат в данном поле имеет сложность К(п)+ 27И(п) + О(п), где К(п) есть сложность возведения многочлена в квадрат, то указанную оценку можно уточнить как
(К(п) + 2ЛГ(п) + О(п)) log2 N + (ЗМ(п) + О(п))^ +
10g 2 log 2 N
а в случае р = 2 как
/ /х /хх	/	/ х / хх (1 + о(1))т log2 N
(2M(n) 4- O n l°g2 N + (3M(n) + O(n))-----—------------•
log2 log2 N
Если представление поля задает неприводимый к-член, то предыдущая оценка усиливается до
O(kri) log2 N + (3Af(n) + (9(n))^ + о0))та lofo log2 log2 N
Оценка сложности теста на примитивность в конечном поле малой характеристики. Применяя предыдущую оценку к возникающей при тестировании элемента f поля GF(pn) на примитивность задаче вычисления системы степеней	? где i — 1,... d, есть система всех различных про-
стых делителей числа рп - 1, получаем следующую оценку сложности вычисления упомянутой системы
(log7 р)(К(п) + 2М(п) 4- О(п))п 4- О (
\ log n )
Величину d в худшем случае можно оценить как n/logn, в среднем она равна O(log п}. Значит, рассматриваемая часть алгоритма имеет в худшем случае сложность O(n3) log2p, а в среднем, вероятно, О (n2) log2p, причем при малом числе к членов в данном неприводимом полиноме в среднем равно O(n2k) log2p.
3.2.2.	Генерация примитивных многочленов
Для этой цели до сих пор неизвестен полиномиальный детерминированный алгоритм. Изложенный выше алгоритм тестирования примитивности является полиномиальным в предположении что число рп - 1 уже факторизовано. Но вероятностный полиномиальный алгоритм генерации примитивных многочленов в этом предположении указать теперь нетрудно. Вероятность выбранного наугад многочлена степени п оказаться примитивным равна <9(1/п log (nlogp)) = О Действительно, число примитивных многочленов степени п над полем GF(p) равно <р(рп - 1)/п, где <р(п) — функция Эйлера, откуда доля примитивных среди всех рп
3.2. Тестирование примитивных многочленов
135
многочленов степени п равна
Пр'г - 1) _	0(1)
pnn n log2(n log2 р) ’
так как согласно [62] n/y?(n) = O(log2 log2 ri).
Поэтому для генерации с вероятностью 1 — е примитивного многочлена степени п достаточно сделать
0(п log (n log р)) log 1	<9(п) log 1
8	8
случайных выборок многочленов степени п и после каждой выборки протестировать результат сначала на неприводимость, а потом на примитивность. В худшем случае сложность этой генерации равна
0(n4) log (n log р) log2 р log 1
8
При построении таблиц примитивных многочленов [184,185] случайные выборки не используют, а просто перебирают многочлены в порядке увеличения числа коэффициентов, благодаря чему в таблицу попадают многочлены с наименьшим возможным числом ненулевых коэффициентов; из таблиц [184, 185] видно, что в случае р = 2 всегда существуют примитивные пятичлены и семичлены, но, кажется, теоретически это никто еще не доказал.
3.2.3.	Генерация примитивных элементов в поле GF(pn)
Сказанное в предыдущем разделе о многочленах справедливо, конечно, и для генерации примитивных элементов в данном поле, за исключением того, что в этом случае вместо простейшего в каком-то смысле примитивного элемента обычно достаточно найти хоть какой-нибудь такой элемент. Для этой задачи со времен Гаусса известен еще один алгоритм, могущий составить конкуренцию изложенному выше алгоритму.
Этот алгоритм основан на следующей идее, лежащей в основе одного из доказательств существования примитивного элемента.
Допустим, что известно разложение на простые множители
d
р”-1 = ПрГ
Для каждого i найдем элемент gi порядка = р^, т. е. такой, что gf = 1, Qi/Pi /	<
д? Ф 1, тогда, согласно известной лемме, порядок элемента g\...gd будет равен q\ .. .qd = pn - 1, т. е. этот элемент и будет примитивным. Для нахождения, скажем, элемента gi берем случайный элемент h и вычисляем Н =	Если Hqi/pi = hW'-WPi / 1, то порядок элемента Н
равен qi (ведь Hqi = hpn~x = 1) и можно положить д; = Н. Так как
136
Глава 3. Неприводимые многочлены
уравнение № х^Рг — 1 имеет не более (рп - \)/рг корней в поле GF(pn) (на самом деле ровно столько), то вероятность выбрать h так, чтобы ^(pn-i)/A	। равна j -р"1. Для того, чтобы выбрать с вероятностью
1 - е/d, достаточно сделать	попыток, после чего примитивный
элемент можно будет сгенерировать с вероятностью 1 - £ по формуле g{...gd. Так как сложность возведения в степень т элемента поля GF(pn) оценивается как O(kpn log т) 4-	операций в поле
GF(p), где к — число членов в неприводимом многочлене, определяющем используемое представление поля, то, учитывая, что на практике всегда можно выбрать к < 5, эту оценку можно переписать при малых к O(M(n)) logm
в виде " loglogm " ’ значит сложность генерации примитивного элемента с вероятностью 1 - £ оценивается при малых к как
О(М(п)п log2(d/s)) /	\ O{M(n)ndlog2(d/£))
-------;---------- 7 > 1о&2 Pi =---------;—=
log n \	)	log d log n
O(M(n)n2 log2(n/f)) log3 n
Работу описанного алгоритма можно с некоторой вероятностью ускорить следующим образом. После того, как выбрали h такой, что ^(рп-^/р\ можно вместо вычисления дх по формуле д\ — продолжить вычисления степеней	i = 2,3,..., пока впервые
не получим	= 1. Если этого не произойдет, h и есть искомый
примитивный элемент и работа алгоритма на этом заканчивается. Если же найдется г\ такое, что
то полагая Q\ = q\ ... qrx, G[ = h<Pn-WQi , имеем
Gf’ = l, G^'lv' = Ло’”-|)/₽1 £ 1,
т. e. порядок элемента G\ равен Q\. Аналогичным образом, выбирая случайный элемент h и возводя его в степени (рп - l)/pl9 i = т\ 4- 1, Г1 4- 2, ..., до получения первой единицы (конечно, если она получилась уже на первом шаге, то элемент h заменяется на новый случайный элемент), находим элемент 6*2 порядка Q2 — qri+i • • • qr2 и т. д. Найдя последний элемент Gs, имеющий порядок Qs = qVs ]+1 ... qd вычисляем примитивный элемент по формуле G\ ...Gs. Доказательство примитивности не отличается от доказательства примитивности элемента д\ ... gd, так как порядки Q2 попарно взаимно просты.
Если применить для поиска примитивного элемента алгоритм, описанный в предыдущих разделах, то после случайного выбора элемента h тоже нужно вычислять степени h^n~x^Pi, i — 1, 2,... и бросать это дело после появления первой единицы, выбирая новый случайный элемент,
3.3. Алгоритмы вычисления минимального многочлена
137
пока не будет найден элемент, для которого все эти степени отличны от единицы. В новом же варианте алгоритма после выбора очередного случайного элемента вычисления начинаются с той степени, на которой случился провал в предыдущей попытке, и количество операций возведения в степень может при удаче существенно уменьшится.
Отметим еще, что в худшем случае сложность описанного в предыдущих разделах алгоритма при малых р оценивается как
O(M(n))nd log d log (1/s) log n
так как вероятность удачи в каждом испытании равна в худшем случае
р(рп -1) (рп-1)
d
= П(1-рг1) = о
1 log d
Полученная оценка сложности чуть выше, чем сложность алгоритма этого раздела.
После нахождения одного примитивного элемента д можно найти примитивные элементы gp\i = 1,..., п - 1 последовательным возведением в степень р со сложностью О(ркп2). При малых р, к это квадратичная сложность. В случае большого р или к близкого к п этот алгоритм в [115] заменен на более быстрый, однако на практике этот случай почти не встречается. Перемножая над полем GF(pn) линейные двучлены X - дрк, к = 0,... ,п - 1 методом «деления пополам», получаем примитивный многочлен f(X) над полем GF(p), выполнив О(М(п)) logn операций умножения в поле GF(pn). Для умножения в этом поле, в свою очередь, нужно О(М(п)) операций в поле GF(p). Окончательно, для генерации примитивного многочлена над полем GF(p) дополнительно нужно O(M(n)2) log п операций. Используя оценку Шенхаге для сложности умножения многочленов, получаем окончательную оценку О(п2), а используя при небольших п оценку Карацубы, имеем окончательную оценку в виде О(п3,2). В любом из случаев последний алгоритм генерации примитивного многочлена кажется более быстрым, чем приведенный в предыдущих разделах, но он будет порождать не простейший, а случайный примитивный многочлен.
3.3.	Алгоритмы вычисления минимального многочлена
3.3.1.	О сложности вычисления минимальных многочленов
Если элемент х порождает нормальный базис, то он порождает и стандартный полиномиальный базис {1, х,..., жп-1}. Если минимальный многочлен f(X) элемента х, имеет степень тп < п, то система {1, х,..., хт~1} линейно независима, а все следующие степени через нее линейно выражаются, значит порожденное всеми степенями пространство
138
Глава 3. Неприводимые многочлены
m-мерно и не может совпадать с полем GF(pn). Поэтому минимальный многочлен /(X) с единичным старшим коэффициентом должен иметь в рассматриваемом случае степень п. Если же х не порождает базис в данном поле, то степень т его минимального многочлена меньше п, при этом хрт = х, причем т минимальное такое число. Действительно, все элементы х,хр,..., хр™ являются корнями многочлена /(X), а так как коэффициенты многочлена
д(Х) = (Х-х)... (Х-хр’"~')
выражаются через его корни в виде симметрических многочленов согласно теореме Виета, то они не меняются при возведении в степень р (слагаемые и сомножители в формулах Виета циклически переставляются, что не меняет коэффициентов), значит они принадлежат полю GF(p), а так как д(Х) делит /(X), то они совпадают в силу неприводимости /(X), поэтому
f(X) = (X-x)...(X-xp’n).
Из периодичности последовательности xpi следует, что т делит п. Вычисляя степени хр' так же, как в предыдущем разделе, минимальный многочлен элемента х, и, в частности, многочлен, определяющий полиномиальный базис, порожденный ж, можно найти путем умножения т многочленов над полем GF(pn). Применяя для умножения метод деления пополам (называемый иногда «разделяй и властвуй»), можно получить оценку сложности вычисления /(X) в виде О(М(п) log n)M(GF(pn)), где M(GF(pny> — сложность умножения в поле GF(pn), а М(п) — сложность умножения многочленов степени п - 1. При использовании асимптотически быстрых методов умножения многочленов и соответствующих методов умножения в конечных полях, более подробно описанных далее, можно получить оценку
О (n2 log3 n(log log n)2n log p log log p log log log p).
Однако при n больших многих тысяч эта оценка остается еще неэффективной. Используя вместо метода Шенхаге метод Карацубы, получаем оценку <9(Af(n)2M(log2 р)), где M(n) = п1082 3 , которая, однако, будет хуже, чем у следующего очевидного метода, основанного на линейной алгебре.
Вычисляем со сложностью nM(n)M(log2 р) n х (n+ 1)-матрицу (a«j) координат элементов al,i — 0, п в данном поле и для нахождения коэффициентов минимального многочлена решаем однородную систему уравнений с этой матрицей. В г-мерном пространстве ее решений выбираем вектор с г - 1 нулями в старших координатах ст = ... = ст_г^2 = О, и cm_r+1 — 1. Но для программирования, вероятно, первый метод проще.
3.3.2.	Быстрый алгоритм вычисления минимального многочлена
Мы излагаем этот алгоритм, опираясь на [115, упр. 12.10]. Минимальный многочлен /(X) = /о + • • • + /m-iXw-1 + Хт элемента х позволяет
3.3. Алгоритмы вычисления минимального многочлена
139
быстро вычислять последовательность степеней хг с помощью только линейных операций в поле GF(pn) по рекуррентной формуле
хго+< = Л! = ?(/0 + ... + /т_1Жт-') = /о^ + ... +
Если вместо последовательности хг взять последовательность аг Е GF(p) ее первых координат, то эта последовательность будет вычисляться в силу линейности по тем же рекуррентным формулам, которые можно также переписать в виде
4~ • • •	4“ Q>i+m = 0.
Многочлен минимальной степени, коэффициенты которого позволяют рекуррентно вычислять данную последовательность, называется минимальным многочленом этой последовательности.
Упражнение 3.3.1. Докажите, что любой другой многочлен над полем GF(p), аналогичным способом вычисляющий данную последовательность, делится на минимальный многочлен.
Так как многочлен /(X) неприводим, он является также минимальным многочленом последовательности аг.
Очевидно, его коэффициенты могут быть найдены путем решения линейной системы уравнений
fo&i 4- ... 4-	4“	= 0, i = 0, . . . , 771 — 1.
Увеличивая m от 1 до п, можно найти минимальное т, при котором система имеет единственное решение. Так как ее матрица коэффициентов имеет специфический вид (похожа на циркулянтную матрицу), то неудивительно, что у задачи вычисления минимального многочлена данной рекуррентной последовательности есть более простое решение, и не одно. Один из алгоритмов для решения этой задачи называется алгоритм Берлекемпа—Месси и имеет сложность O(n2)M(log2 р) (см. [11,52]). Известно также, что для ее решения подходит соответствующая модификация алгоритма Евклида. Как уже отмечалось, ее можно реализовать со сложностью O(M(n)M(log2p) logn), где М(п) — сложность умножения многочленов степени п - 1. Сложность вычисления последовательности q,q, ..., a2n_ i можно оценить так же как и сложность вычисления последовательности х°,..., ж2п-1, а именно, как (2п - 2)M(GF(pn)) = О(пМ(n)М(log2 р)). Степень т многочлена f находится, очевидно, со сложностью <?(n2M(log2 р)) одновременно с вычислением степеней хр , i = 1,... ,п - 1. После этого достаточно будет вычислить только i = 2,..., 2т - 1. Некоторую экономию сложности можно достичь, вычисляя хрг = (хг)р с помощью более быстрой, чем умножение операции возведения в степень р, которая делается с линейной сложностью при хорошем выборе базиса в поле GF(pn). Остальные степени можно вычислять
140
Глава 3. Неприводимые многочлены
по формуле xpi+s = xipxs, s < р. Окончательная оценка сложности вычисления минимального многочлена данного элемента в поле GF(pn) равна
2n(l - ^M(GF(pn)) + O(n2)M(log2p).
В [167] показано, что последовательность а$,..., ain-i можно вычислить со сложностью О(п^+1^2), где ш — экспонента матричного умножения, и поэтому с той же сложностью решается задача о вычислении минимального многочлена.
3.4.	Генерация нормальных базисов
3.4.1.	Критерии базисности нормальной системы
Известны неэффективные на практике алгоритмы, которые, однако, удобны тем, что сводят проверку «базисности» данной нормальной системы к вычислению некоторых явных формул. Например, для выяснения, образует ли в поле GF(pn) базис система элементов {од,..., ап}, достаточно проверить, не обращается ли в нуль определитель п х п матрицы, состоящей из элементов tr {otjOtj).
Упражнение 3.4.1. Докажите, что эта система образует базис тогда и только тогда, когда указанный определитель отличен от нуля.
Непосредственное вычисление следа tr (а) по формуле
tr (а) = а 4- ар + ... + ар
имеет сложность O(n2)M(log2 р) в хорошем полиномиальном базисе и сложность О(п2 log2 р) в нормальном базисе. Заметив, что след является линейным отображением поля GF(pn) в подполе, его можно вычислить со сложностью O(nM(log2 р)). Поэтому сложность вычисления всех элементов матрицы равна 0(n2M(GF(pn))). Сложность вычисления определителя равна O(n2I(log2 р) + n3M(log2 р)), где I(log2p) — сложность инвертирования в поле GF(p). При малых р окончательно имеем оценку O(n2M(GF(pn))).
Замечая, что
tr = aiaj + арар 4-... + ар ар ,
4 и представляя матрицу из следов в виде произведения матрицы
на транспонированную к ней, получаем, что наша система будет базисом, тогда и только тогда, когда определитель новой матрицы отличен от нуля.
Упражнение 3.4.2. Докажите это утверждение.
3.4. Генерация нормальных базисов
141
Сложность вычисления новой матрицы уменьшается по сравнению со старой, а в случае представления поля GF(pn) нормальным базисом, и вовсе становится равной нулю. Но элементы матрицы теперь принадлежат полю GF(pn) и поэтому сложность вычисления определителя возрастает до O(n2I(GF(pn)) + n3M(GF(pn)).
Применяя последний алгоритм к тестированию на базисность системы {а, ар,ар ,..., арП } (тестированию нормальности), получаем для проверки на невырожденность в точности циркулянтную матрицу. Невырожденность таких матриц можно проверить быстрее. Заметим вначале, что любая такая матрица С = (cij) представляется в виде
С = CqE + С]Р + ... + Сп-^Р ,
где cq, ... ,cn-i — верхняя строка матрицы С, а Р — матрица перестановки, т. е. циркулянтная матрица с п единицами, стоящими на позициях сод,. • •, Сп-2,п-ь Сп,о, и нулями в остальных местах, а Рг — ее степени (тоже циркулянтными матрицами, но других перестановок).
Упражнение 3.4.3. Докажите это утверждение.
Так как Рп равно единичной матрице Е, умножение циркулянтных матриц выполняется по формуле
71-1 z 77-1	х
АВ = ^2 ( ^2^), k—Q ' i=0	'
где ai элементы первой строки матрицы A, bi элементы первой строки матрицы В, а вычитание в индексах делается по модулю п.
Упражнение 3.4.4. Докажите это утверждение. Докажите также, что множество всех циркулянтных матриц относительно матричного сложения и умножения образует кольцо.
Заметим теперь, что умножение многочленов степени меньше п по модулю Хп - 1 выполняется по тем же формулам, что и умножение циркулянтных матриц.
Упражнение 3.4.5. Докажите, что кольцо циркулянтных матриц изоморфно кольцу многочленов с операциями по модулю Хп - 1.
Теперь ясно, что циркулянтная матрица обратима (а это равносильно ее невырожденности), тогда и только тогда, когда соответствующий ей при изоморфизме многочлен степени меньше п обратим по модулю Хп - 1.
Упражнение 3.4.6. Докажите, что многочлен обратим по модулю Хп - 1, тогда и только тогда, когда он взаимно прост Хп - 1 (не имеет с ним общих делителей, кроме констант).
Отсюда сразу вытекает следующий критерий нормальности Гензеля [52]. Пусть {а, ар,ар,..., арП } — последовательность элементов поля
142
Глава 3. Неприводимые многочлены
GF(pn). Чтобы она была базисом, необходимо и достаточно, чтобы многочлены Хп — 1 и
/(X) = аГ'1 + арХп~2 + с/х”-3 +
были взаимно просты над полем GF(pn) (а значит, согласно свойствам алгоритма Евклида, и над любым расширением этого поля).
3.4.2.	Быстрое тестирование базисности нормальных систем
Если применить для вычисления НОД указанных многочленов быстрый алгоритм Евклида и алгоритм Шенхаге для умножения, то оценка сложности будет
O(M(n))M(GF(pn)) logn=(?(n2 log3 n(loglogn)2nlogploglogplog log logp.
Однако мультипликативная константа в этой оценке даже при р = 2 будет не меньше 462 -12. Используя для умножения многочленов ДПФ, можно М(п) заменить на 3F(n) + 2п, где F(n) — сложность вычисления преобразования Фурье порядка п в минимальном расширении GF(pm) поля GF(pn), содержащем все п корней п-степени из единицы. Тогда т — пк, и п должно делить рт - 1, а оценку M(GF(pn))) нужно заменить на M(GF(pm)).
Указанную оценку можно улучшить, отбросив множитель <9(logn), если заметить, что взаимная простота рассматриваемых выше многочленов над полем GF(pm) равносильна тому, что f(X) не имеет общих корней с Хп - 1, значит все его значения в корнях n-й степени из единицы отличны от нуля. Но вычисление всех этих значений в поле GF(pm) есть не что иное, как вычисление преобразования Фурье Fn, поэтому мы получаем оценку F(n)M(GF(pm)).
Используя алгоритм Блюстейна [И], можно доказать, что сложность F(n) вычисления преобразования Фурье порядка п над полем GF(pm) не превосходит 2М(п) + 6п. В случае четного п можно получить оценку М(п) +4п, так как циклическая свертка сводится к умножению многочленов степени меньшей п по модулю Хп - 1.
Отсюда имеем оценку (2М(п) + 6n)M(GF(pm)) для битовой сложности тестирования нормальности. Вместо алгоритма Шенхаге для умножения многочленов можно применить имеющий меньшую мультипликативную константу алгоритм [102] или [101] (см. также [116]).
В случае, когда т/n мало, предложенный алгоритм имеет меньшую оценку сложности, чем алгоритм, основанный на быстром алгоритме Евклида. Приведем примеры таких случаев.
Известно, что при р > 2 в некоторых случаях число n > 1 может быть делителем рп - 1, и, значит, т = п. Например, возьмем п = р1' - 1, тогда ordn(j>) = п, значит т — Выберем и так, чтобы pv - 1 делилось на v, тогда (n, u) — и и т = п. В качестве и можно взять, например, 1, тогда п — р - 1.
3.4. Генерация нормальных базисов
143
Если р = 2, то, как известно, п не может быть делителем 2п - 1. Действительно, пусть q есть минимальный простой делитель п, тогда q не делит 2п - 1. Допустим противное, тогда q делит одновременно 2^-1 - 1 и 2п - 1, а значит, q делит (2^-1 - 1, 2п - 1) =	- 1. Так как
(q - 1, n) < q и делит п, то согласно минимальности q число (q - 1, n) = 1, Поэтому q делит 2^~1,п) -1 = 1, значит q = 1. Получено противоречие.
Для любых к > 1 и р > 1 существуют п > 1 такие, что п\ркп - 1. Например, в качестве п можно взять любой делитель рк — 1, так как ркп — 1 делится на рк -1. Если п простое, то условие п\ркп -1 выполняется, только если п есть делитель рк - 1. Действительно, ordn(p) делит кп. Согласно малой теореме Ферма ord п(р) п, ив силу простоты п порядок ordn(p) делит к, значит п\рк - 1.
Проверим, что, если а=п удовлетворяет условию -1, и т\ркп -1, то а = пт тоже удовлетворяет условию а\рка - 1, в частности а = пркп - 1 и а2 тоже удовлетворяют этому условию. Действительно,
ркпт _ ! = (ркп _ ((ркпуп-1 + _ ^ркп + первый сомножитель делится на п, а второй сомножитель делится на т, так как
(р^)771-1 4-... + ркп + 1 = т тобркп - 1 = 0(mod т).
Применяя индукцию, получаем что при любом натуральном s число а = ns удовлетворяет условию а\рка-1, так как, если а = ns удовлетворяет этому условию, то п\рка - 1, следовательно
s-|-l	i ^kns+x i
п = ап\р — 1 = р — 1.
Легко проверить также, что, если а = п и а = т удовлетворяют условию а\рка -1, и (n, m) = 1, то а = пт удовлетворяет тому же условию.
В частности, если р = 2, к = 2, то т = кп = 2п для п = З5, 3s 71, О 1, 3s7J43427r, s,l 1, 35749ЧЗг73И27^, s 2, I 1. Если р = 2, к = 3, то т = кп = Зп для п = 7s. Если р = 2, к = 4, то т = кп = 4п для п = 3s5l3141r, 1^1.
Указанная выше оценка сложности преобразования Фурье может быть непрактичной из-за большой мультипликативной константы.
Во многих случаях практически лучшие алгоритмы можно получить, применяя следующие известные методы.
Разлагая п на простые множители п = pf1 ... prr и применяя алгоритмы Гуда—Томаса и Кули—Тьюки (см. [11]), можно получить алгоритм с оценкой сложности
144
Глава 3. Неприводимые многочлены
Для вычисления Fp. при малых можно использовать алгоритм Герцеля [11]. В случае гладкого числа п (т. е. когда все простые множители pi малы) получается оценка, близкая к O(nlogn).
В частности, приведенные выше примеры размерностей п при р = 2 часто можно рассматривать как гладкие числа. При п = Зк хорошую оценку F(n) можно найти в гл. 5.
Если какой-нибудь множитель pi достаточно велик, то можно методом Райдера [11] свести вычисление F(pi) к вычислению циклической свертки порядка рг1, которая, в свою очередь, сводится к трехкратному применению преобразования Фурье порядка рг- 1. Но этот прием применим только в случае, когда pi — 1 не делится на характеристику поля.
Например, при р = 2, рг\ = 73, имеем - 1 = 72 = 23-32, но преобразование Фурье порядка 72 над полем характеристики два вычислять нельзя. Тогда циклическую свертку порядка 72 можно представить в виде циклической свертки порядка произвольного нечетного порядка не менее 143, и применить для ее вычисления дискретное преобразование Фурье того же порядка. В качестве порядка можно выбрать гладкое число 7 • З3 = 189.
Для вычисления преобразования Фурье можно также применить алгоритм Винограда [11] вычисления циклической свертки, разложив Хп - 1 на круговые множители
!!«'•
d\n
сначала над кольцом целых чисел, потом над полем GF(p), которые будут иметь коэффициенты в поле GF(p) и сравнительно мало ненулевых коэффициентов, и поэтому на них проще делить обычным школьным алгоритмом, потом полученные множители разложить над более широким полем GF(pm) и применить китайскую теорему об остатках. При этом используется тот факт, что при больших п известен быстрый вариант как прямого, так и обратного китайского алгоритма [115]. Круговой многочлен Qn степени (р(п) над кольцом целых чисел в поле GF(pm) разлагается на неприводимые множители равной степени d = p(n)/оп(рт), где оп(рп) минимальное натуральное число о такое, что рто - 1 кратно п. Быстрый алгоритм разложения на неприводимые множители равной степени описан в [115].
3.4.3.	О нормальных базисах, порождаемых многочленами малого веса
Пусть {х, хр,хр\ ... , хрП 1} — корни трехчлена /(X) = Хп 4- аХт 4- Ь в поле GF(pn). Очевидным необходимым условием базисности системы {х, хр, хр ,..., хрП } является неравенство нулю следа х+хр+хр~ 4-...\ xf элемента х. Так как, по теореме Виета, эта сумма противоположна по знаку коэффициенту при Хп~х многочлена f(X), то этот коэффициент должен быть отличен от нуля, т. е. f(X) должен иметь вид Хп + аХп~х + Ь. Однако
3.4. Генерация нормальных базисов
145
эти многочлены надо проверять на нормальность с помощью указанного ниже алгоритма. Количество проверок равно О(р2) в случае трехчленов, и <Э(п2р4) в случае пятичленов. Если р — 2, нужно проверить только один трехчлен, причем легко видеть, что он не может иметь кратных корней.
В случае поля GF(2) поиск неприводимых трехчленов, порождающих нормальные базисы, нужно вести среди трехчленов вида Хп 4- Хп~х + 1. Такие трехчлены будут неприводимыми (или примитивными) одновременно с трехчленами вида Xп + X + 1.
Заметим, что приведение по модулю таких многочленов выполняется особенно просто, поэтому, если есть такая возможность, именно их можно рекомендовать для реализации операций в соответствующем поле. Встречаются они вначале довольно часто, а потом все реже и реже. В [182] имеется таблица таких трехчленов до степени 30 000. Наша программа нашла еще 2 трехчлена: 1 + X1 + X32767 и 1 + X1 + X34353.
В Приложении В во второй книге [18] приведена таблица неприводимых трехчленов со степенями, не превосходящими 2000, и таблица неприводимых пятичленов со степенями, не превосходящими 328, при которых неприводимых трехчленов не существует.
Приведена также таблица многочленов вида 14-Хп-1 +Хп до степени 34 353. В ней для некоторых многочленов также отмечено, какие из них являются примитивными, а также нормальными (т. е. порождающими нормальные базисы, в последнем случае указано число единиц в матрице умножения).
Глава 4
Арифметика GF(2n) в полиномиальном базисе
Асимптотически лучшие алгоритмы зачастую оказываются наихудшим решением для всех задач, к которым они применимы.
Д. Кантор, Г. Зэссенхаус
4.1.	Особенности реализации операций
4.1.1.	Выбор поля и способов реализации
В соответствии с алгоритмическим строением конечного поля (см. разд. 2.1.7) операция умножения в полиномиальном базисе может быть выполнена путем умножения в кольце GF(2n) и последующего вычисления остатка от деления на определяющий это поле неприводимый многочлен (приведения по модулю неприводимого многочлена).
Сложность умножения при используемых в криптографических алгоритмах степенях многочленов существенно зависит от способа программной реализации классического и асимптотически более быстрых методов умножения. Эти способы рассматриваются в разд. 4.2 и 4.3.2.
При умножении в поле GF(pn) используют полиномиальные базисы, порождаемые степенями корня неприводимого многочлена с малым числом слагаемых или, напротив, с большим числом слагаемых (многочлены малого или большого веса). В этом случае возможно ускорение операции умножения в поле, поскольку операция приведения имеет линейную сложность и составляет малую долю от времени умножения многочленов в кольце GF(2n). При этом сложность умножения в поле асимптотически совпадает со сложность умножения в кольце многочленов GF(2n)[X]. Способы реализации приведения по модулю неприводимого многочлена малого или большого веса рассматриваются в разд. 4.4.
Операция инвертирования в поле GF(2n) разлагается на операции возведения в степень, умножения и сложения в этом поле. При этом, используются наиболее быстрые алгоритмы умножения в кольце и деления с остатком на данный многочлен. Как отмечено в разд. 3.1.4, последняя
Cantor D., Zassenhaus Н. A new algorithm for factoring polynomials over finite fields // Mathematics of computation. 1981. 36(154). Цит. no [45].
4.1. Особенности реализации операций
147
операция сопровождает каждую операцию умножения. В итоге сложность инвертирования зависит как от выбранного алгоритма, так и от используемых алгоритмов умножения в кольце многочленов и приведения по модулю неприводимого многочлена. Рассматриваемый в главе метод Монтгомери быстрого возведения в степень (см. разд. 4.6.7) операцию деления с остатком почти не использует.
Алгоритмы возведения в степень и инвертирования в поле GF(2n) рассматриваются в разд. 4.5
Заключительный разд. 4.6 этой главы посвящен теоретическому анализу описанных в ней методов и алгоритмов.
При реализации арифметических операций в кольце многочленов GF(2)[X] полезно бинарные операции с двоичными аргументами выполнять по возможности одновременно.
Если многочлен /(X) степени п представлен последовательностью коэффициентов
fl(),	> • • • >^п—1 5
то его можно представить последовательностью
Л(о),
из ns = s-разрядных отрезков
А(о) = a0,ai,...,as_i,
а/ ) = as, ..., ^2s-i>
) — a(ns-l)S!>	+	» anss-\-
(В случае, когда п не делится на з, старшие nss - п позиций отрезка заполняются нулями.) Эти отрезки можно интерпретировать как многочлены 51(Х),... ans_i(X) степени не выше s - 1. Такие многочлены мы называем элементарными.
Тогда
fc-1
i=Q
что позволяет, обозначая X5 = Y и упрощая запись а^(Х) = аг , получить полиномиальную форму
к-1
F(Y) = ^aixYi,	(4.1)
представляющую многочлен f(X) над полем GF(2). Ясно, что по выражению (4.1) многочлен f(X) определяется однозначно.
148
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Операция сложения (см. с. 26) сопоставляет двум многочленам над полем GF(2)
п-1	п-1
Р1(Х) = 5>Г, р2(Х) = 5>Г	(4.2)
2=0	2=0
их сумму
п-1
Р1(Х)+р2(Х) = ^(а,+Ь)Х‘.	(4.3)
2=0
Результатом операции х умножения многочленов (4.2) (в кольце GF(2)[X]) является многочлен
2п-2
р(Х) = Р1(Х) х р2(Х) = ^2 Q-*4, ct = 52 aibi (4-4) t—0	i+j=t
(см. с. 26). Сумму многочленов (4.2) можно получить, вычислив многочлен
72s-l
P(Y)=Pl(Y)+P2(Y) = ^(ai+bi)Yt.	(4.5)
i=0
Произведение двух многочленов в кольце G?F(2)[X] можно также получить, вычислив многочлен
2ns-2
P(Y) = Pl(Y)xP2(Y)=^Ct(Y)xYt, Ct(Y) = (cot + citxY), (4.6) t=Q
где многочлен Q(K) получается разбиением многочлена
Ct(X)= 52 at xbj	(4.7)
описанным выше способом. Заметим, что в данном случае слагаемые q имеют степени не выше 25-2.
В итоге получится вектор длины 2k - 1, компоненты q которого суть коэффициенты полиномов ct(X) = at + Ybt степени не выше 2s - 1, причем последняя компонента — нулевая.
Чтобы получить полиномиальную форму вида (4.1), представляющую произведение в виде многочлена
2ns-2
P(Y)=Pl(Y)xP2(Y)='^cl(Y)xY‘, Y = Xs,	(4.8)
t=Q
можно, используя разложения сДХ) =	+ c\t х Y его коэффициенты
вычислить следующим образом:
Cq — Cqo, • • • 5 Q — Cot Сц£_1), t — 1,... , 2ns — 2.
4.1. Особенности реализации операций
149
Учитывая свойство операции возведения в степень, равную характеристике поля (см. следствие 2.1.6 на с. 40), в случае
п-1	ns-l
Р\(Х) = р2(Х) = р(Х) = 52 atXl = 52 «.(*) х (*7 г=0	г—0
вместо формулы (4.6) можно использовать представление Q(Y) квадрата многочлена р(Х) в виде
п,-1
Q(Y) = P(Y)2 = 52 Ct(Y) х Y2t =
t=Q
ns—\	ns-l
= 52 rt(X) x X2st = 52 a(T)2 x X2st, (4.9)
t=Q	£=0
где Ct(Y) = TtQ+rtiY, Y = Xs, rt(X) = at(X)2, rt(X) = тю(Х) + rti(X)Xe.
Тогда полиномиальная форма (4.1) для квадрата многочлена имеет вид
2ns-2
Q(Y) = 52 х Yrt, Y = XS,	(4.10)
r=0
где
_	( т^г/2)q(X),	если г четное,
Cr	[ Д(г-1)/2)1Р0, если г нечетное.
Декомпозиция (4.7), (4.8) представления (4.4) позволяет одновременно выполнять з операций умножения в поле GF(p) при умножении многочленов высокой степени и параметр s выбирается из условия одновременного выполнения максимального количества таких операций, тогда он определяется величиной соответствующего типа при программировании. В этом случае векторы коэффициентов элементарных многочленов мы называем «длинными целыми числами». В некоторых случаях, как, например, при умножении по методу Карацубы (см. разд. 4.3), такая декомпозиция необходима принципиально и параметр з зависит от степеней сомножителей. В других случаях выбор большого параметра з упрощает описание алгоритма и ускоряет вычисления, как, например, при делении на многочлен с малым числом слагаемых или при умножении многочленов высокой степени. В этих случаях параметр з может превышать размером принятого в программировании типа, и векторы коэффициентов элементарных многочленов мы называем машинными словами. Заметим, что формула (4.7), в свою очередь, может быть подвергнута аналогичной декомпозиции и, в общем случае, имеется иерархическая декомпозиция
150
Глава 4. Арифметика GF(2n) в полиномиальном базисе
и элементарных многочленов. Например, векторы коэффициентов сомножителей разбиваются на 32-разрядные машинные слова, которые, в свою очередь, разбиваются на байты. Не исключается возможность использования и меньших значений параметра 5, включая 1. В одном и том же алгоритме могут возникать элементарные многочлены разной степени, как это произошло при описании операции возведения многочлена над GF(2) в квадрат, где присутствуют элементарные многочлены степени s и 2s. Умножение многочленов, соответствующих этому нижнему уровню можно осуществлять с использованием заранее заготовленных таблиц (см. с. 163). Примечание. Оценим объем памяти, используемой для хранения матрицы Т при 5 = 8. Таблица Т содержит 216 элементов, каждый из которых занимает 2 байта. Поэтому для хранения матрицы Т нужно 217 байт или 128 К, что составляет вполне разумный объем памяти для современных вычислительных средств. С другой стороны, реализация умножения двух многочленов степени не выше 28 - 1 = 255 обычным «школьным» алгоритмом приведет к не более чем (28/к)2 = 210 обращениям к таблице Т и не более чем 210 байтовым логическим сложениям, в то время, как число операций без использования матрицы Т оценивается как (28)2 = 216.
Рассмотренная декомпозиция соответствует методу умножения на основе операций сдвигов и сложения, который мы называем классическим, его также можно назвать «школьным», так как на всех уровнях декомпозиции, по существу, реализуется алгоритм умножения «столбиком». Имеется большое разнообразие вариаций этого алгоритма, например, оказывается полезным для ускорения умножения использовать то обстоятельство, что в некоторых случаях количество ненулевых коэффициентов одного из сомножителем не большое, составляет, например, не более 30 %. Классический алгоритм и его разновидности описываются и анализируются в разд. 4.2. Асимптотическая сложность при этом во всех случаях составляет О(п2) и эффект каждой разновидности алгоритма сказывается на константе в оценке времени выполнения при заданной степени п многочленов-сомножителей.
Асимптотическая сложность умножения понижается при использовании более тонких подходов к декомпозиции формулы (4.4), которые применяются в методе умножения Карацубы (см. разд. 4.3).
4.2.	Классический алгоритм умножения в GF(2)[X]
4.2.1.	Элементарные многочлены. Таблица умножения
В данном и следующих разделах векторы коэффициентов, размещаемые в одном машинном слове, называются «длинными целыми числами» (им соответствует, например, тип данных long). Машинные слова могут разбиваться на более мелкие составные части, например, 32-разрядное «длинное целое число» А представляется четырьмя байтами
Л[0], Л[1], Л[2], Л[3].
4.2. Классический алгоритм умножения в GF(2) [JT]	151
Использование данных одновременно и как машинных слов и как байт обеспечивается, например, типом данных «union», а представление многочленов как последовательностей машинных данных осуществляется в виде классов.	_
Перемножая два элементарных многочлена а(х) и /3(ж), получаем многочлен <т(ж) степени не выше 2s - 2, который задается суммой
?0(х) + г2(х)х5,
где 3\(Х), i = 1, 2, — элементарные многочлены.
Таким образом, произведение элементарных многочленов Р}(Х)Р2(Х) представляется парой элементарных многочленов и может быть вычислено, например, по методу Берлекемпа—Петерсона: умножать элементарные многочлены 5-1	5-1
а(х) = а,хг и 0(х) = У'} Ьгхг,
1—0	2=0
предлагается путем вычисления произведения а(Х)Хг для каждого i, г = 0, 1,..., з - 1, для которого Ьг 0, и их суммирования.
Элементарные многочлены ацД-У) и a\i(X) такие, что
a(X)Xl =а1)г(Х) + atl(X)Xs определяются формулами
а01(Х) = а(Х)Хг mod Xs,
где скобки |_ J означают вычисление частного от деления двух многочленов. Вторая формула эквивалентна
а1г(Х) = (а(Х)Хг + аОг(Х))Х~\
Пример 4.2.1. Пусть ^(Х) = 1 + X + X2, s = 3, i = 2.
n(T)X2 = (1 + x + X2)JT2 = X2 + X3 + X4 = a02(T) + a12(X)X3,
где
а02(Х) = at(X)X2 mod X3 = X2, S(X)X2
а12(Х) =
Алгоритм 4.2.1 умножения элементарного многочлена а(Х) на элементарный многочлен fl(X) представлен на рис. 4.1.
При небольших значения s (например, s < 8) операция умножения элементарных многочленов может выполняться с помощью заранее составленной таблицы Тм умножения. Ее строки и столбцы соответствуют
152
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Алгоритм 4.2.1
ВХОД: векторы U и V длины s коэффициентов
элементарных многочленов а(Х) и j0(X) в порядке возрастания степеней соответствующих термов многочленов
ВЫХОД: вектор Z — Z0||Zi коэффициентов произведения
а(Х) х Д(Х) = а0(Х) + a^X)Xs.
1.	Z = 0,
2.	Выполнить s раз:
Если ]F — 1, то Z[ = Zi + U,
Z = Z[<-], V = v[<-].
Рис. 4.1. Алгоритм умножения элементарных многочленов. ]Козначает младший разряд вектора V, [<-] — операция сдвига в сторону младших разрядов. Элементы векторов Z\ и Z2 определяют коэффициенты элементарных многочленов а0(Х) и aj(X)
различным элементарным многочленам, а элементы — произведениям элементарных многочленов (наборы бинарных коэффициентов записываются в порядке возрастания степеней соответствующих термов). Это позволяет отказаться от поразрядных операций и работать с байтами как с минимальными неделимыми блоками данных. (См., например, табл. 4.1 для s = 2.)
Таблица 4.1
Произведения в GG(2) [X] элементарных многочленов (s = 2)
	00	10	01	11
00	0000	0000	0000	0000
10	0000	1000	0100	1100
01	0000	0100	0010	0110
11	0000	1100	0110	1010
Примечание. Элементы таблицы Т вычисляется по Алгоритму 4.2.1.
4.2.2.	Умножение многочленов с использованием таблицы умножения
Пусть t	р ~
Pi W = Е ^<X)Xis, р2(Х) = 52 /3(Х)Х>‘,
i=Q	j=Q
r+p
pW = 52 °(X)tXts = Pi(X) X p2(X).
t=0
4.2. Классический алгоритм умножения в GF(2) [X]
153
Алгоритм 4.2.2
ВХОД: массивы U [г 4- 1] и V\p 4- 1] коэффициентов элементарных многочленов аг(Х) и Д/Х).
ВЫХОД: массив Z[r 4р 4- 1] векторов Z = Zg^Zi коэффициентов произведения pi(X) х р2(Х).
1.	Z = 0;
2.	Для i = 0, s
Для j = 0, р
Zl+j=Zi+j^-{U\i\xV[j\}g-
Zi+j+\ —	+ \	X КL?]} 1
Рис. 4.2. Алгоритм умножения многочленов представленных элементарными многочленами
На рис. 4.2 дан Алгоритм 4.2.2 вычисления «коэффициентов» ?(Х)^ произведения р(Х) многочленов pi(X) и представленных элементарными многочленами.
Пусть deg57?i(X) = t и deg5p2 = Р- «Коэффициенты» 5г(Х) и Д(Х) будем записывать в виде бинарных векторов (7$(Х) и Vj(X) длины s коэффициентов этих элементарных многочленов. Эти векторы суть элементы массивов массивы U[t 4-1] и V[p 4- 1]. Искомые «коэффициенты» будем вычислять как элементы массива Z[£-hp4- 1]. Будем обозначать {Сф] х V[j]}q5 младших разрядов вектора, представляющего произведение элементарных многочленов 5(Х) и /3(Х), и {П[г] х V[j]}i -s старших разрядов этого произведения (эти векторы можно брать непосредственно из заранее составленной таблицы умножения Т):
= (W] х V[j]}0|IW] х ШЬ).
Пример 4.2.2. Пусть s = 8 и нужно перемножить многочлены
р1(Л') = (1+^3) + (1 + Х2)Х8 и
р2(Т) = X6 + (1 + X + Х7)Х16.
Тогда
Р1(Х)р2(Х) = (1 + Х3)Х6 + (1 + Х2)Х6Х8 +
+ (1 + Х3)(1 + X + Х7)Х16 + (1 + Х2)(1 + X + х^х™.
Обращаясь к заранее вычисленной таблице произведений элементарных многочленов, получаем
(Х+Х^Х6 = Хь+ хх\ (1 + Хг)Хь = X6 + X*, (X3 + 1)(Х7 + X + 1) = А'2Х8 + (1 + X + X3 + X4 + х1), (1 + Т2)(1 + X + X1) = (1 + х + хг + X3 + X1) + XX3.
154
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Откуда
р1(Х)р2(Х) = X6 + XXs + _Х6Х8 + 2Г16 4- (1 4- X + X3 + X4 4- Х7)Х16 +
4-	Х2Х24 + (1 4- X + X1 + X3 4- .Х7)Х24 4- ТХ32 =
= Т6 4- (X 4- ^6)J28 4- (X 4- X3 4- X4 4- JT7)^16 4-
+ (i 4- х 4- х3 + а:7)^24 + JUT32.
Преимущества такого алгоритма пояснены на с. 150.
4.2.3.	Модификация классического алгоритма и гибридный алгоритм умножения
Рассматриваемый здесь алгоритм играет вспомогательную роль в построенной нами схеме вычислений. Он используется лишь когда один из перемножаемых многочленов содержит небольшое число (не более трети) единичных коэффициентов.
Сдвигом вектора (со, ct,..., cn>-2, Cn'-i) будем называть вектор
(0, Со, С\, . . . , Сп>-2,
Рассмотрим два многочлена f(X) и д(Х) в стандартном (полиномиальном) базисе:
п-1	п-1
f(X) = 52 <чХ\ д(Х) = 52 biXi. i=0	i=0
Пусть векторы
— (flo, • • • »	^n-l) и В — (&Q, , . . . , bn-2, Д-1)
их коэффициентов заданы последовательностями машинных слов
£*(0) (jV)	и jjkty £)(1)
длины s соответственно, k = |_jJ.
Определим последовательность векторов Vi, i — 0, 1,..., s - 1, так, что Vq = А, и для любого i, i = 1, 2,..., п - 1, вектор Vi получается сдвигом вектора V-i. Из вектора Vi добавлением справа (к 4-1)5 - п - i нулей получим вектор V-, с (Н 1)5 компонентами, i — 0, 1,..., s - 1. Вектор тг/	/Г	КЛ п(0) гД1)	г#)
V- может быть задан последовательностью Ei = Е- , Д ,... , Д , Д из к 4- 1 машинного слова.
Пусть нужно перемножить многочлены f(X) и д(Х). Сначала построим последовательности Д машинных слов i — 0, 1,..., 5 - 1. Далее определим индексы to, t\,... ,tm компонент вектора В, равных единице, 0 to < t] < ... < tm < п - 1. Для каждого j, j = 0, 1,..., m, определим частное qj и остаток rj от деления числа tj на 5.
4.2. Классический алгоритм умножения в GF(2) [X]
155
Последовательность из 2k нулевых машинных слов обозначим Р. Таким образом, Р = Lq, Li, ..., L2k-\ и Lt = 0 t = 0, 1,..., 2k - 1. Далее для каждого j, j = 0, 1,... , m, и г, г = 0,... ,k - 1 вычислим
Lqi+r -=Lqj+r+E^, г = 0,1,..., к-1.
Полученная в результате описанных выше действий последовательность Р машинных слов задает вектор коэффициентов произведения многочленов f(X) и д(Х).
Теперь поясним, как ускорить поиск индексов единичных элементов вектора В. Предварительно (до начала выполнения алгоритма умножения многочленов) составим одномерную таблицу Т, с помощью которой по заданному байту b определяются места единичных бит в этом байте. Перемножая многочлены f(X) и д(Х), для каждого j-oro байта машинного слова из последовательности Z/°)’p(1)’ >D(k 2)’п(к по таблице Т определим список номеров мест единичных бит. По этим номерам и числам i,j определяется очередная порция индексов единичных элементов вектора В. Так, если ш — один из номеров в списке единичных бит j -ого байта машинного слова , то ему соответствует индекс si + 8j 4- w. Пример 4.2.3. Пусть требуется перемножить многочлены
/(X) = 1+ X1 4- Хъ + Xs + X1 4- X8 + X10 и д(Х) = X + Xs 4- X1 + X8.
В демонстрационных целях предположим, что s = 4. Тогда многочлены /(X) и д(Х) задаются векторами
А = (1,0,1, 1,0,1,0,1, 1,0,1), В = (0,1,0,0,0,1,0,1,1,0,0), соответственно, или последовательностями машинных слов (слева дополним 0)
С = 5,10, 13, £>-4,4,3.
Сначала определим последовательность векторов Vo, У\, V2, Уз, получаемых сдвигами из вектора А, и далее дополняем справа эти векторы нулями так, чтобы получаемые вектора состояли из 16 компонент (16 — наименьшее число, делящееся на 4 и не меньшее количества компонент в векторе V3):
Vo =	(1,0,1,1,	0,	1, 0, 1, 1, 0, 1,0, 0, 0,	О, 0),
Vi =	(0,1, 0,1,	1,	0,1, 0, 0,1,0, 1, О, О,	О, 0),
V2 =	(0,0,1, 0,	1,	1, О, 1, 0,0,1,0, 1, 0,0, 0),
V3' -	(0,0,0,1,	0,1,1, 0, 1, 0,0,1,0, 1,	О, 0).
Полученные векторы задают соответственно следующие последовательности машинных слов:
Eq = 11,5, 10,0, Е{ = 5, 10, 13,0,
Е2 = 2, 13,6,8, Е3 - 1,6, 11,4.
Эти последовательности задают таблицу сдвигов.
В векторе В единицы расположены на местах с номерами 1, 5, 7, 8. Деля эти числа на 4 с остатком, получаем:
5о = О, го = 1, qi = 1, п - 1,
52 = 1, г2 = 3, 5з = 2, г3 = 0.
156
Глава 4. Арифметика GF(2n) в полиномиальном базисе
В заключение вычисляем результат умножения с использованием таблицы
сдвигов:
еЧ	е!	еЧ	еЧ	о	о
о	еЧ	в,'	еЧ	еЧ	о
о	еЧ	е13	е]	е33	о
О	О	Е°о	Е'о	Е20	Е3о
5	10	13	О	0	0
0	5	10	13	О	О
= ф О	1	6	11	4	О
О	0	11	5	10	О
5	14	10	3	14	О
Последовательность машинных слов, записанная под чертой, соответствует вектору коэффициентов
0101.1110.1010.0011.1110
и задает многочлен
X + X3 + X4 + X5 + X6 + Xs + х10 + X14 + X15 + X16 + X17 + X18,
который и является произведением рассматриваемых в настоящем примере многочленов f(X) и д(Х).
При умножении заданных многочленов f(X) и д(Х) сначала выбирается один из рассмотренных алгоритмов. Если среди перемножаемых многочленов есть содержащий небольшое число единичных коэффициентов (менее некоторого порога Р), то быстрее будет работать модифицированный классический алгоритм. В противном случае следует использовать другие методы, в частности, оригинальную схему, рассматриваемую в разделе 4.2.4. Конкретное значение порога Р определяется экспериментально при многократной апробации обоих рассматриваемых алгоритмов.
Приведем способ быстрого подсчета числа единичных коэффициентов многочлена f(X).
Заранее строится одномерный массив М с 216 = 64 768 элементами: М[0], М[1],... , М[64 767] такой, что M[i] равен числу единиц в двоичном разложении числа i. Например,
М[1234] = М[010010110012] - 5.
Пусть многочлен f(X) задан последовательностью Ад, Дь ... , двухбайтовых чисел. Тогда сумма М[До] + 7И[Д]] + ... + М[Д^,.] равна числу единичных коэффициентов многочлена f(X).
4.2.4.	Еще две модификации классического алгоритма умножения
В работе [142] предложены два варианта алгоритма умножения, первый из которых не требует дополнительной памяти а второй требует обращения к предварительно вычисленной таблице меньшего размера, чем используемая в изложенном выше алгоритме. Далее излагаются оба этих метода, следуя статье авторов с некоторыми нашими комментариями.
Как отмечают авторы, первый алгоритм является модификацией алгоритма [141]. Напомним, что этот алгоритм заключается в следующем:
4.2. Классический алгоритм умножения в GuF(2)[T]	157
показатель степени записывается 25-ичной системе
к-\
a = ^Ai2si,
2=0
где Ai имеет двоичную запись (аг5+5_1 ... 0^)2, степени базы д, записываемые далее для удобства в аддитивной нотации, предварительно вычисляются в порядке 2stg, О С г < к, потом для каждого u —	.. ^0)2, 0
и < 2к вычисляются в порядке возрастания чисел u^-i 4-... + щн суммы
к-\
Pu = Yl u‘^Si9’
2=0
а потом вычисляется степень a • д по формуле
s—1	z Аг —1	х	з-1
«• 9 =	27 (52 а^+з'1'1 • 9) = 52 23Pi>-
j=Q 2=0	'	j=Q
где Ij —	... as.yjaj)2- Преимущество этой формулы перед стан-
дартной формулой
/ 5-1 \
а-9= 52 2д 52a>s+*2‘
j=0	' 2=0
в том, что при условии предварительного вычисления внутренних сумм упрощается вычисление степени а • д за счет уменьшения числа операций возведения в квадрат (операций удвоения в аддитивной нотации), которых становится только s вместо (к- 1)5 во второй формуле. Однако само предварительное вычисление становится немного более сложным.
Алгоритмы возведения в степень в аддитивной нотации легко могут быть модифицированы в алгоритмы умножения как чисел, так и многочленов. Например, известный еще древним индусам бинарный алгоритм возведения в степень в XIX в. широко использовался в России для умножения чисел, и Д. Кнут называет его в своей книге «русским крестьянским методом». Не удивительно, что и указанный выше алгоритм можно превратить в алгоритм умножения многочленов. Для этого будем представлять любой двоичный многочлен
72-1
а(Х) = 52а<Х<’
2=0
как и раньше, в виде
/ь-1	5-1
а{Х) = 52 Ai(X)Xsi, А(Х) = 52 ais+jX^
2=0	;=0
158
Глава 4. Арифметика GF(2n) в полиномиальном базисе
и хранить в машинной памяти в виде массива чисел Aq, ...,	, где Д
имеет двоичную запись (a,is+s_i ... 0^)2, а размер s можно выбрать равным величине машинного слова, и положить s — 32. Тогда приведенная выше формула для возведения в степень может быть переписана в виде следующей формулы умножения многочленов
ais+jX • д\ •
j=0	' i=0
Произведение &(Х) = а(Х)#(Х) имеет степень 2п - 2 и представляется массивом коэффициентов B^k-i, • • •, Bq. Вначале он заполняется нулями. Потом выполняется главный цикл, в котором j меняется от s - 1 до нуля, и на каждом его шаге полученный ранее многочлен вида
l=s-1	/ А:-1	к 2Л-1
Qj = 22	( 52 ais+iXSi-9) = 22 Br(X)Xsr
Z—;4-l	i=Q	' r—0
соответственно схеме Горнера умножается на X и и складывается с многочленом
к—\	2к-\
Tj = 22 ais+jXsi • д = 22 B'r(X)Xsr.
i=0	r=0
Умножение на X сводится к сдвигу каждого из чисел Д в сторону старших разрядов, что требует одной операции над каждым словом, но (если д(Х) — число) надо сделать с каждым словом сдвиг на 31 бит в сторону младших разрядов, чтобы не пропал при первом сдвиге старший бит, который потом надо будет прибавлять к числу Д-+1, для чего нужна будет еще одна операция XOR или покомпонентная дизъюнкция. Всего для выполнения умножения на X нужно 2к операций XOR и 4к операций сдвига (так будем называть сдвиги битов в машинных словах). Для прибавления к Qj очередного многочлена
к~1	2k-i
Tj = 22 ais+]xsi • 3 = 22 B'T(x)xsr
i=0	r=0
выполняем внутренний цикл no i от нуля до к - 1, на каждом шаге которого вычисленный ранее многочлен
г-1	k+i-i
Qj + Tj^ =Qj+J2 a‘s+JxS‘' 9 = 22 BrWSr
1=0	r=0
складываем с многочленом
k+i-1
Rj'i = ais+jXsl  g = 22 Вг(х)х$Г-
r=0
4.2. Классический алгоритм умножения в GF(2)[X]	159
Преимущество указанной формулы над формулой с другим порядком суммирования в том, что умножение на Xs1 делается в этом цикле «бесплатно», так как сводится только к «сдвигу» самого массива коэффициентов Bj, а последующее сложение многочленов сводится к к операциям XOR над машинными словами: В/+г = В/+г ф GJ, I = 0,... , к - 1, где G\ — массив, задающий многочлен д(Х), и выполняется оно только, если ais+j — j-и бит числа равен 1.
В этом алгоритме выполняется k2s + 2k(s - 1) = n2/s + 2п - 2к операций XOR и 4A:(s - 1) = 4n - 4fe операций сдвига (предполагаем, что п = ks).
Опишем теперь второй алгоритм, который является ускорением первого за счет предварительного вычисления произведений вида
Pu = (um^Xm~l + ...+u0)g(X),
u =	. ^0)2, 0 < u < 2m, тп < s.
На самом деле это не совсем предварительное вычисление, так как оно делается подпрограммой нашей программы, и его сложность надо учитывать при вычислении сложности всего алгоритма умножения. Далее можно считать, что тп = 4, но почему такой выбор оптимален, будет объяснено позднее.
Для вычисления всех произведений Ри нужно вначале вычислить все произведения Х^ д(Х), 0 < j < тп, для чего потребуется ктп = птп/s операций XOR и 2ктп = 2nm/s операций сдвига. После этого для вычисления всех Ри, представленных в виде сумм
Pu =	д(Х) + ... + щд(Х), и = (um-I ... и0)2,
достаточно выполнить 2т — 2 операции сложения многочленов, если вычислять эти суммы в порядке роста величин ?zw_i +...+uq , т. е. достаточно (к + 1)(2т - 2) операций XOR с машинными словами.
Далее для умножения можно воспользоваться формулой
s-l / к-1	\
a(X)g(X) = Е Xj ( Е а‘^Х" ’ 9 ) = j=0	i=0
s/m-1	, к-1	т-1	ч
j=0	' i=0	1=0
s/m-1	z к-1	ч
= Xmj ( 52 XsiPUij J , j=0	i=0
— (ais+mj+m-l • • •
Алгоритм после выполнения предварительного вычисления Ри работает подобно первому алгоритму. Так как все многочлены Ри уже
160
Глава 4. Арифметика GF(2n) в полиномиальном базисе
вычислены, нам для вычисления произведения достаточно обратиться k2s/m = n2/(sm) раз к оперативной памяти для извлечения коэффициентов многочленов PUi д, умножение этих многочленов на Xs1 делается бесплатно, для вычисления всех сумм
-5, j = i=Q	m
нужно k2s/m = n2/{sm) операций XOR, и для окончательного вычисления
s/m-\	И;-1	ч
i,j 9 ) ’	^г, j — (flis+mj+m-1 • • • &is+mj)2
j—0	i=0
нужно еще 2k(s/m - 1) = 2n/m - 2k операций XOR и 4k(s/m - 1) = 4n/m — 4k операций сдвига. Общая сложность алгоритма равна n2/(sm) + 2n/m - 2n/s + nm/s + (n/s + 1)(2W - 2) операций XOR и 4n/m - 4n/s + 2nm/s операций сдвига, а также n2/{sm) операций обращения к памяти, объем которой равен 2m(k + 1) машинных слов, или 2m(n/s + 1)5/8 = 2ш(п/8 + 4) байт. Для минимизации этой суммы надо минимизировать n/m + 2m выбрать m так, чтобы 2Ш < n/m, тогда сумма не превзойдет 2n2/(sm) + 2n/m - 4n/s - 2 + nm/s, но будет не меньше n2/(sm) + 2n/m — 4n/s - 2 + nm/s, при этом для ее минимизации надо выбрать тп максимальным, удовлетворяющим неравенству 2mm < п. Таким тп будет log2 n - log2 log2 n + 0(1), т. е. при п < 256 m < 5.
Например, если при 160 < п < 192, з = 32 взять m = 4, то число операций XORбудет равно n2/128+n/2-n/16+n/8+(n/32+l)14, т. е. приблизительно п(1 + п/128). Если же взять m = 5, то число операций XOR будет приблизительно равно п2/160 + 2п/5 - п/16 + 5п/32 + (п/32 + 1)30, т. е. приблизительно п(1 + (п + 65)/160, что примерно на 5-8 % больше, хотя число остальных операций при m — 5 несколько уменьшится. Удобнее взять все же m — 4, так как оно делит нацело число s = 32.
Для сравнения оценим число операций в стандартном алгоритме, описанном нами ранее, в котором, однако, мы брали s — 8, и использовали предварительно вычисляемую «таблицу умножения» объемом 216 байт. В предыдущем алгоритме объем используемой таблицы был 2ш(п/8 + 4) — 2п + 64 байт, что существенно меньше. Число обращений к таблице в стандартном алгоритме было (п/з)2 = п2/64 < Зп в рассматриваемом диапазоне изменения п, что вдвое больше числа обращений к памяти n2/(sm) = п2/(32 • 4) = п2 /128 в приведенном выше алгоритме. Число операций XOR в стандартном алгоритме чуть меньше указанного выше числа умножений с помощью таблицы, а число операций XOR в приведенном выше алгоритме равно приблизительно n{ 1 + тг/128), т. е. почти такое же, как и в стандартном алгоритме. В целом же указанный
4.2. Классический алгоритм умножения в GF(2)[X]
161
алгоритм лучше стандартного по числу операций примерно раза в два, и требует существенно меньше оперативной памяти.
Но его превосходство над описанным ниже в разд. 4.3 алгоритмом Карацубы исчезает, за исключением превосходства в объеме используемой памяти, о чем свидетельствует и полученная авторами алгоритма оценка скорости его работы на процессоре Pentium 233 MHz. Так как оценка сложности алгоритма Карацубы (см. разд. 4.3, 4.6) по порядку равна nlog2 3 и растет медленнее, чем оценка сложности n2/log п указанного алгоритма, естественно ожидать, что с ростом п алгоритм Карацубы будет работать быстрее. Заметим, однако, что для ускорения работы алгоритма Карацубы после выполнения определенного числа его итераций при достаточно малом п мы начинали пользоваться стандартным алгоритмом. Видимо целесообразно заменить его на этом этапе указанным выше алгоритмом, и время работы описанной ниже версии алгоритма Карацубы уменьшится.
Отметим также, что при возможности использовать большой объем оперативной памяти стандартный алгоритм легко ускорить, выбирая большие значения s, например s = 12, объем требуемой памяти будет порядка 30 мегабайт. Можно перейти к использованию и значений s в плоть до 16, но использовать «таблицу умножения» уже становится практически невозможно. Однако вместо нее можно использовать таблицу логарифмов в поле GF(2S) относительно какого-нибудь примитивного элемента, объем которой равен 25, и подобную же таблицу антилогарифмов. Умножение в этом поле сводится к трехкратному обращению к таблицам и сложению чисел по модулю 2s - 1. Но полученные коэффициенты произведения многочленов будут вычислены по модулю некоторого многочлена степени s, определяющего указанное поле. Нам же надо вычислять их точно, для чего все операции над многочленами степени не выше 2s — 2 надо выполнять точно. Поэтому придется продублировать умножение многочленов, используя второй экземпляр поля GF(2S) с другим многочленом в качестве модуля, а потом для восстановления точного результата применить китайскую теорему об остатках. Сложность выполнения последних операций незначительна в сравнении со сложностью операций умножения. Если операции обращения к 2s байтам памяти выполняются быстрее арифметических операций, то основное время будет уходить на сложение логарифмов по модулю 2s - 1, которое можно свести к последовательно выполняемому обычному сложению, выделению s-ro бита, его обнулению и прибавлению к результату на месте младшего бита. Кроме того, перед выполнением операции сложения по модулю 2s - 1, над проверить не является ли нулем один из сомножителей, тогда произведение полагается равным нулю без использования обращения к таблице логарифмов. Указанный прием будет эффективнее, если его применять не к стандартному методу умножения, а к методу Карацубы, так как в нем число умножений меньше числа сложений. Если же объем используемой памяти слишком велик и обращение к ней производится медленнее выполнения операции сложения по модулю 2s - 1, то можно коэффициенты перемножаемых
162
Глава 4. Арифметика GF(2n) в полиномиальном базисе
многочленов хранит в виде логарифмов, тогда операция умножения коэффициентов не требует обращения к памяти, но для сложения требуется операции сложения и вычитания по модулю 2М и операция обращения к таблице логарифмов Гаусса—Зеха согласно формуле
ax + ay = ах(\ + ау~х) = ax+z, z = logQ(1 + ау~х) = gloga(p - X),
где glog — логарифм Гаусса—Зеха.
Заметим еще, что в отличие от метода Карацубы, применимого также для построения логических схем для умножения, приведенный выше метод является чисто программным приемом. Однако схему для умножения произвольного многочлена на фиксированный многочлен сложности п2 log п таким методом все же построить можно, причем эта схема фактически совпадет со схемой умножения двоичного вектора на фиксированную двоичную матрицу, которую можно построить, применяя алгоритм «четырех русских» (см. разд. 2.1.11).
4.3.	Алгоритм Карацубы и его реализация
4.3.1.	О методе Карацубы
4.3.2.	Умножение многочленов по методу Карацубы
В методе Карацубы для ускорения умножения используется тот факт (неизвестный до 1962 г.), что умножение двух 2п-значных чисел сводится к трем умножениям двух n-значных чисел, в то время как при использовании классического алгоритма выполняется четыре таких умножения. Поясним это примером.
Запишем 2п-значное число в виде
АП + 2П-ВП.
Легко проверяется тождество
(Л + 2n . Bn) • (Cn + 2n . Dn) =
= Л„ • 02" + 1) + (Dn - Сп)  (An - Bn) -2n + Bn-Dn- (12п + 10п).
Подобным образом можно поступить и при умножении двух многочленов степени 2п в кольце полиномов над полем Галуа GF(2).
Пусть многочлены р(Х) и q(X) степени 2п-1 представлены в виде
р(Х) = р}(X) +Xnx р2(Х), q(X) = qi(X) + Xn х q2(X), где pi,p2, q\, q2 — многочлены степени n- 1.
Тогда произведение p(X) x q(X) можно представить в форме
р(Х) х q(X) =Pi(X)xqi(X) + (р, (X) + р2(Х)) X (91 (X) + q2(X))Xn +
+ р2(Х) X д2(Х)Х2” + (р^Х) х q}(X))Xn + (р2(Х) х д2(Х))Хп.
4.3. Алгоритм Карацубы и его реализация
163
Как видно, использовано только три умножения вместо четырех умножений многочленов степени п. Систематическое применение этого приема соответствует рекурсивной схеме, «разверткой» которой при различных базисах рекурсии можно получить явные схемы умножения, которые рассматриваются в следующем разделе.
Пример 4.3.1. Проиллюстрируем алгоритм Карацубы на примере многочленов переменной X. Пусть нужно перемножить многочлены Р\(Х) = 1 + X + X3 * * * 7 и Р2(Х) = 1 + X2 + X3. Положим Р['\х) = l+X, р[2\х) = X, Р2(1>(Х) = 1, Р?\Х) = 1 + X. Тогда Р^Х) = Р^\Х) + Х2Р?\х), i = 1, 2. Поэтому
Р{(Х)Р2(Х) = (1 + Х)(1) + ((1 + X + Х)(1 + 1 + х) +
+ (1 + Х)(1) + Х(1 + Х))Х2 + Х(1 + Х)Х\
Из трех полученных произведений (1 + X) 1, IX, JT(1 + X) в дальнейшем рассмотрении нуждается только Х(\+Х), которое по алгоритму Карацубы представляется в виде 0 - 1 + ((0+ 1)(1 + 1) + 0- 1 + 1 • 1)Х + 1 • IX2.
Сложность алгоритма Карацубы анализируется в разд. 4.6, где показано, что число М(п) бинарных операций умножения при умножении многочленов степени п удовлетворяет неравенству M(ri) &nlog3 [44], где к — некоторая константа.
Этот раздел посвящен изучению методов выполнения умножения многочленов над полем GF(2), основанных на декомпозиции по методу Карацубы. Показана эффективность декомпозиционного подхода к реализации этой операции при степенях полиномов в диапазоне от 100 до 1000, характерном для криптосистем с открытым ключом.
Эффективность выполнения операций умножения достигается за счет применения оригинальной декомпозиционной схемы умножения по методу Карацубы.
4.3.3.	Декомпозиционная схема умножения многочленов над GF(2)
Умножение «длинных целых чисел». Рассмотрим способ умножения «длинных целых чисел» (см. с. 149), который предусматривает разбиение сомножителей на байты и использование таблицы Тм умножения байт (объем таблицы — 128 К (см. с. 150)) 2\
2> Эта таблица строится на этапе инициализации программы, предшествующем выпол-
нению умножений «длинных целых чисел», строится таблица Т, состоящая из 28 = 256
строк и такого же количества столбцов. Элемент tij таблицы Тм, находящийся в г-ой
строке и j-ом столбце этой таблицы, i = 0,1,..., 255, j = 0,1,..., 255, представляет
7	7
собой два байта, определяемых следующим образом. Пусть i = 52 ak2k и j = 52	,
k=Q	k=0
15
ak,bk G {0, 1}, двоичные разложения чисел i и j соответственно и 52 скХ — результат к=0
164
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Пусть «длинное целое число» L состоит из 32-х бит и и заданы два таких «числа» А и В, каждое из которых состоит из четырех байт:
А = 4[0] А[ 1]Л[2]Л[3], В = В[0] В[ i]B[2] В[3].
Используя таблицу Т, построенную нами для умножения байт, сначала найдем следующие «числа»:
O^A[?]xB[i], г = 0,1,2,3,
Т4>1 = (А[2г] + Л[2г + 1])х (В[2г]+В[2г+1]), г = О,1,
ТЛ2=(А[г]+А[г + 2])х (В[г]+В[г + 2]), ? = 0,1,
Г=(А[0] + >Ц1] + Л[2]+Л[3])х (В[0]+В[1]+В[2]+В[3]).
Каждое из чисел Oi, г = 0, 1,2, 3,	i = 0, 1, F задается парой
байт. Таким образом, приведенные формулы определяют значения байт
ОДО], ОД1], г = 0, 1,2,3,
Tj[0], Tijl], IhM, ТЛЧ, « = 0, 1, F[0], F[l].
Используя эти числа, находим следующие величины:
D[l] =О|[0]+О0[1], 5[1] =O0[0] + D[l],
-Dfz] — O^(mocj 4) [0] + Oi-i(mod 4) [ 1 ],	(4.12)
S[i] = S[i - 1] + D[i], i - 2, 3,..., 6.
Если последовательность байт F[0]P[l]F[2]P[3]F[4]F[5]P[6]F[7] задает искомое произведение Р многочленов, то
Р[0] - О0[0],
F[i] = s[i] + To,i[o];
F[2] = S[2] +То.1[1] +Т0д[0],
Р[3] = S[3] +То,1[О] 4-Тм[0] +То,2[О] + То,2[1] +Ть2[0] +Р[0],
F[4] - S[4] +Т0,1[1] +Тщ[1] +Т0,2[1] +Ti,2[0] +Т1)2[1]+Р[1],	( ‘ }
Р[5] = 5[5]ТТ1,1[О]+Т1)2[1],
P[6] = S[6]+TM
Р[7] = О3[1].
4.3.4.	Умножение многочленов
Рассмотрим способ построения схем умножения многочленов степени п, при этом будем использовать функцию умножения «длинных (5-разрядных) целых чисел», реализация которой описана в предыдущем разделе. Таким образом, предполагаем, что для любых двух «длинных целых
умножения многочлена akXk на многочлен	ЬьХк'. Тогда пара байтов Со = СоС| ... Cj
и С, = с^с<) ... Cis составляет элемент ttJ.
4.3. Алгоритм Карацубы и его реализация
165
чисел» А нВ определен результат их умножения S — Ах В, коэффициенты которого задаются последовательностью из двух таких «чисел»	.
На вход алгоритма поступают две последовательности, каждая из которых состоит из к — ns = «длинных целых чисел», количество разрядов s которых совпадает с разрядностью используемого для вычислений процессора.
Схема вычислений по рассматриваемому алгоритму содержит кроме этапа умножения элементарных многочленов два вспомогательных уровня и уровень вычисления результата.
На первом вспомогательном уровне вычисляются некоторые суммы «длинных целых чисел», поступающих на вход алгоритма. Получаются новые такие числа, которые перемножаются на этом уровне определенным образом. Каждое из полученных чисел многократно используется при дальнейших вычислениях.
Результаты умножений поступают на вход следующего уровня схемы, где путем рациональных суммирований находятся новые «длинные целые числа». На последнем уровне выполняются также только сложения таких чисел.
Таким образом, декомпозиция операции умножения имеет вид ЕЕ(ПЕ), т. е. сначала выполняются предварительные сложения, потом — умножения длинных цепочек, далее — сложения с целью оптимизации вычислений с многократно используемыми числами и, наконец, — вычисления результата, использующие только сложения. Поэтому мы и называем эту схему декомпозиционной схемой умножения.
Пример 4.3.2. Случай п = 6 и s — 32. Рассматриваемый при выбранных значениях п и s вариант схемы умножения позволяет перемножить многочлены степени не большей п • s - I = 191.
Пусть на вход алгоритма подаются две последовательности из шести целых чисел:
Л(о>, Л(1), Л®, Л®, Л®, Л®, В®. В<1\ В™, В™.Bw, в1-1. задающих соответственно многочлены /(X) и д(Х). Сначала определим следующие произведения целых чисел (этапы ПЕ в структурной схеме ЕХ(ПЕ)):
О, = Л(,) *В(’\ г = 0,1,..., 5,
Ти = (Л<2,) + Л(2,+о) * (В<2,) + В®+1)), г = 0, 1,2
Т2.г = (Л(,) + Л('+2)) * (В(,) + В<!+2)), г = 0, 1
Т3,, = (Л(,) + Л(,+4)) * (В(,) + В(1+4)), г = 0, I,
В,.о = (Л® + Л® + Л(2) + Л®) * (В® + В® + В® + В®),	(4.14)
В2,0 = (Л® + Ло) + Л(4) + Л®) * (В® + В® + В® + В®),
в3., = (Л(,) + Л(‘+2) + Л(,+4)) * (В® + В<,+2) + В(,+4)), г = 0, 1,
В = (Л® + Л® + Л® + Л® + Л(4) + Л®) *
* (в,0) + в® + в® + в® + в® + в®).
166
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Так как каждое из чисел
Ог, Т{.,Т2„Т3„ F^q, F3jt, E задается последовательностью из двух целых s -разрядных чисел, то определены целые числа
О,(0),	Ог(1),	i =	0, 1,2,...,	5,
Т^.	Т^,	г =	0,1,2,
Tmit	T-'L	j =	2,3, г	=	0,1,
F§,	F^,	j =	l,2,
F^,	F$,	г =	0,1,
Е{0\	Ew.
Используя эти числа, находим следующие величины:
sw = о’0) + о<0) + о’1’,
5(0 = 5O-1) + 0(») + 0(0 , j = 2, 3,..., 5,
s(6) = S(5) + 0(о) + 0<о) + ^(i),
S17’ = 5(«) + 0(о) + 0(0) + 0(0 + 0(0,	(4. j 5)
£(8> = О<1)+О<,)+О’0) + С)<0),
5(9) = о<1) + оУ> + о’0) + о*0),
5(Ю) = 0(1) + 0(1) + 0(0),
д(3) = Г(0) + т(0),	д(4) = т(1) + т(1),
д(5) = £(3) +Г(0), Д<6> = дЮ + Г(0;
ту"(3) _ zz'D _/р(0 । /р(0) । /р(*з)
А —	“ 72,о + 72,0 + 22,1 >	/д	17ч
тс<4) = к<8> = Т2(10> +	+	Т^1,
C^ = F^+F^+F^+F^ + F^,
C^ = F^+F^+F^+F^ + F^,
w{5) = т^ + т^ + т^, W(6) = 1Г(5) +т^, жо) = w ад,	ж(8) = w(7) + Гда
Наконец, определяем последовательность р(°>, Р*0, рР),...; р00 целых чисел, задающую произведение многочленов f(X) и д(Х).
р(°) = 0(0),
р(0 = 5(1) + уОТ,
рР) = 5(2) + у(0 + уОТ,
р(з) = 5(3) + Л(3) + К(3) + р(0),
4.3. Алгоритм Карацубы и его реализация	167
р(4) = S(4) + д(4) + к(4) + F(l) + т(0)^
р(5) = 5(5) + д(5) + рО) + рОТ + ж(5),	(4.20)
р(6) = £«>) + д(6) + р(0) + рШ + F(0) + ^(6),
р(?) = 5(7)	р(0)	р(7) + с(7) + w(7) + ^,(0)
р(8) = 5(8) + у(1) + р(8) + С(8) + ж(8)	р(1),
р(9) = 5(9)	г(0) + р0)/+ TW + рО^
jp(10) _	I rp^
pd!) = O(I)
Таким образом, нами построена схема умножения многочленов при п = 6, s = 32.
Как видим, известная схема умножения многочленов по методу Карацубы представлена нами не в рекуррентном, а в явном виде. При этом разработанная схема вычислений, как уже было указано выше, имеет структуру ЕЕ(ПЕ) и содержит программные эвристики.
Приведенный способ умножения многочленов допускает, очевидно, распараллеливание вычислений как внутри уровней, так и в целом.
Подобные явные схемы процедурно строятся и при больших параметрах операндов [12-14]. Более того, по описанным правилам можно строить схемы при любых значениях п и s. Программная реализация была выполнена в магистерской диссертации выпускника МЭИ А. Б. Дроздова [36].
Преимущества умножения по предложенной декомпозиционной схеме перед классическим методом и базовым методом Карацубы подтверждаются экспериментально.
Отметим, что вычисления в соответствии с такими схемами можно осуществить также посредством логических схем. Так, на рис. 4.3 дано блочное представление схемы умножения «длинных целых чисел».
А
В
Рис. 4.3. Базовая декомпозиционная схема
Вычисления в блоках S1 и П реализуются по формулам (4.11). В блоке S2, выделенном жирными линиями, вычисления имеют итерационный
168
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Рис. 4.4. Главная декомпозиционная схема
характер в соответствии с формулами (4.12). В блоке Е3 осуществляются заключительные суммирования по формулам (4.13).
Умножение многочленов степени 191 можно осуществить посредством логической схемы, блочное представление которой дано на рис. 4.4.
Блоки Е1 и П реализуют вычисления по формулам (4.14). При этом умножения в блоке П могут быть осуществлены по схемам умножения «длинных целых чисел» на рис. 4.3. Вычисления в блоках Е2, Е3 и Е5, выделенных жирными линиями, в соответствии с формулами (4.15), (4.16) и (4.19), имеют итерационный характер. Суммирование в блоках Е4, Е6 осуществляется по формулам (4.17) и (4.18). В блоке Е7 формируется окончательный результат Р по формулам (4.20).
4.4.	Приведение по модулю неприводимого многочлена
4.4.1.	Классический алгоритм деления многочленов
Как это следует из алгоритмического представления поля GF(pn) (см. разд. 2.1.7) приведение многочлена по модулю неприводимого многочлена можно осуществить операциями сложения и умножения многочленов. Соответствующий алгоритм вычисления частного и остатка при делении одного многочлена (pi(X)) на другой (р2(Х)), т. е. нахождение таких многочленов q(X) и г(Х), что
pt(X) = q(X)p2(X) + г(Х) и degr(T) < degp2W,
4.4. Приведение по модулю неприводимого многочлена
169
есть ни что иное, как «школьный» алгоритм деления «углом», алгоритм сдвигов и вычитаний, или классический алгоритм деления.
Пример 4.4.1. Пусть р{(Х) = 1 4- X + X2 + Xs и р2(Х) - X2 4- X3. Тогда
Pi(X) = 1 + X + X2 + X4 + Х2р2(Х) = 1 + Х + Х2 + Х3 + Хр2(Х) + Х2р2(Х) =
= 1 + X +р2(Х) + Хр2(Х) + Х2р2(Х) = 1 + X + (1 + X + Х2)р2(Х).
Поэтому в настоящем примере частное и остаток от деления многочлена Р\(Х) на многочлен р2(Х) равны соответственно q(X) = 1 + X 4- X2 и r(X) = 1 4- X.
На рис. 4.5 представлен один из вариантов описания такого алгоритма.
Даны векторы U — £71||1/2 длины р и V длины з, з < р, коэффициентов многочленов Р\(Х) степени degpj(X) < р— 1 и P2QO степени s - 1 в порядке возрастания степеней соответствующих термов многочленов, вектор U образуется двумя векторами U\ длины р - з (соответствует младшим разрядам и длины з; для формирования частного используется вектор Z длины р - s 4- 1 он образуется двумя векторами длины 1 и Z2 длины р - s (Zi соответствует младшему, a Z2 — старшим разрядам вектора Z).
По завершении исполнения алгоритма элементы вектора U2 определяют коэффициенты многочлена-остатка, а элементы вектора Z являются коэффициентами многочлена-частного отделения многочлена Pi(X) на многочлен Р2(Х).
Классический алгоритм представлен на рис. 4.5 описывается следующим образом.
Алгоритм 4.4.1
ВХОД: векторы U = U{ ||?72
длины р и
V = V1IIV2 ДЛИНЫ S.
ВЫХОД: вектор Z = Z{\\Z2, вектор 172.
1. Принять Z = О, Если U] = 1, то Zj = 1, U2 = U2 4- V;
2. Выполнить р - s раз U = U[^],Z = Z\^], Если U = 1] то Z{ - 1, U2 = U2 4- V.
Рис. 4.5. Классический алгоритм деления. U] — старший элемент вектора U; [->] — операция сдвига на одну позицию в сторону старших разрядов (умножение на 2, или на полином X)
Пример 4.4.2. Пусть р = 6, 8 = 4,
Pi(X) = 1 +х + х2 + х5, р2(Х) = X2 + X3.
170
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Таблица 4.2
шаг	и,	и2	V	Z,	z2
1	11	1001	ООП	0	00
		ООН		1	00
	11	1010		1	00
21	01	1101		0	10
		ООП		1	10
	01	1110		1	10
22	00	1111		0	11
		ООН		1	11
	00	1100		1	11
Очевидно (см. выше), что
S(X) = 1 + Х + Х1; R(X)=l+X.
Вычисления представлены в табл. 4.2.
Жирным шрифтом указаны результаты каждого шага.
Сложность этого алгоритма такая же, как сложность классического алгоритма умножения.
Время работы алгоритма деления с остатком многочлена Рх(Х) на Р2(Х) можно уменьшить с использованием результатов предварительных вычислений подобно тому, как это делалось для ускорения классического алгоритма умножения (см. с. 150). Через di обозначим degPz(X), i = 1,2. Пусть di d2. Найдем элементарный многочлен <?(Х) такой, что deg(Pj(X) + Q(X)P2(X))Xni-n2-*+l < dx - к при dx - d2 > k или deg (Px(X) + Q(X)P2(X)) < d2, dx- d2 < k. Для этого в случае dx - d2 k (при di k) представим многочлен РДХ) в виде (X)Xdi~kJri +Р^ (X), degP^(X) < di - k или (при d2< k) положим Q^(X) = Рг(Х) i = 1,2. В случае dx - d2 < k представим многочлен Рх(Х) в виде Qx(X)Xd2 +Pd)(X) с degP^(X) < d2 и P2(X) в виде Q2(X)X2d2"dl + Р^(Х) degP(2\X) < 2d2 - dx (при 2d2 - dx 0) или положим Q2(X) = P2(X) (при 2d2-dx < 0). Ясно, что многочлен Q(X) однозначно определяется по паре элементарных многочленов Q^(X), i = 1, 2. Таким образом, можно заранее вычислить таблицу такого соответствия и использовать ее при реализации алгоритма деления многочленов с остатком.
4.4.2. Приведение многочлена по модулю многочлена малого веса
Напомним, что весом многочлена называется число его ненулевых коэффициентов (с. 25). Приведем несколько модифицированное описание
4.4. Приведение по модулю неприводимого многочлена
171
базового алгоритма [12,14,15] деления многочлена на многочлен с малым числом слагаемых, т. е. многочлен малого веса. Пусть многочлен
п-1
Р1(х) = 5>;хг
i=0
необходимо разделить на многочлен
m-1 Р1(х) = 52х г. г—О
Частное представим многочленом
п'-\
s(X) = ^Zi хХ*, г—О
а остаток — многочленом
п"-\
г(Х) = 52 u'i х Х\ г-0
Двоичные последовательности коэффициентов многочленов pi(X),p2(X), з(Х) и г(Х) будем обозначать U, К Z и Uf, а их части, соответствующие разбиению на отрезки длины s — ,i — 0,..., р\ , i = 0,..., q; , i = 0,... ,p - q; U'^, i — 0,..., q, где s — некоторое число, например длина машинного слова.
Полагаем, что многочлен pi имеет малое число ненулевых коэффициентов, причем коэффициенты Vdegp2-i, • ’ • > vdegp2-s+l — нулевые, что и является ограничением рассматриваемого алгоритма, не позволяющим применять его в случае делителей, порождающих нормальный базис.
Примечание 4.4.1. Если степень многочлена-делимого не превышает 2 degp2PQ “ 2, ТО нулевыми ДОЛЖНЫ быть коэффициенты Vdegp2-1> • • • > vdegp2-s+4-
Образуем список L = [гь г2,..., п] степеней ненулевых коэффициентов многочлена р2, кроме старшей.
Обозначим
р = <tegspif q = deg5p2,
sp-degp2+n
s
i = !,...,!,
trt = rem(sp - degp2 + n, s),	1=1,....
Предполагается, что эти значения для каждого элемента списка L вычисляются заранее.
172
Глава 4. Арифметика GfF(ln) в полиномиальном базисе
Алгоритм вычисления многочлена-остатка т(Х) описывается следующим образом:
1. Пока р > q
А. Если 0, то для каждого элемента гг списка L выполнить следующее:
принять	+ U^, ^. + " = сЛ'ч+0 + и^, где
получается из удалением tr. старших разрядов и добавлением tri нулевых младших разрядов (сдвигом в сторону старших разрядов), получатся из удалением $ - trt младших разрядов и добавлением s ~ tn нулевых старших разрядов (сдвигом в сторону младший разрядов).
Формально это действие описывается следующим образом:
^(Ч)||^(Ч+Й =	+ l№x\ i = 1,... ,1.
Б. Положить = 0, р 1 и для каждого элемента списка L принять lri — lr. - 1.
2. Если р = q и deg deg , то для каждого элемента гг списка L выполнить:
из вектора образовать вектор W путем «обнуления» deg младших разрядов, выполнить действия, подобные описанным в п. 1А с использованием вектора вместо вектора с тем отличием, что в случае lri < 0 изменяется только вектор Формально это действие отписывается следующим образом:
jA.) ц^ + 1) = /7('л-)цСГ(^4'1)
+ rem(?7^, xdegy(P)) Xtr*, i = j7<1) = J7(1) + rem(^(p),A-degV<P)).
После этого необходимо обнулить старшие s — deg разрядов век-тора .
Рассматриваемые при каждой итерации «длинные целые числа» , р > q являются числами Z^~q^ , составляющими вектор коэффициентов частного, при этом число Z^ последнего равно вектору W, получающемуся при выполнении п. 2 алгоритма. «Длинные» целые числа , j = 0,..., q по окончании алгоритма образуют последовательность U' коэффициентов многочлена-остатка г(Х).
Рассмотренный вариант деления реализуется наилучшим способом при s, равном длине машинного слова s = 32, 64 или 128. При этом одна итерация алгоритма оказывается эквивалентной s итерациям классического алгоритма последовательных сложений и сдвигов, т. е. их одновременному выполнению.
В некоторых случаях удобно использовать виртуальные машинные слова. Например, при г/ < degрз “<$(#+1)+4 и degp^X) 2 degp2(^)~2,
4.4. Приведение по модулю неприводимого многочлена
173
многочлен pi(X) двумя такими виртуальными словами U^\U^ длины J = s{q +1), а многочлен рг(Х) — одним виртуальным словом такой же длины. При этом алгоритм работает с виртуальными словами, а не с машинными словами. Этот случай имеет место, если делитель р^Х) степени п является трехчленом вида 1 4- X + Хп.
Для многочленов-делителей более общего вида, таких что
Г[ < degp2(-X~) -	+ 4 при degpi(Jf) 2 degp2(X) - 2,
r	~ s(o+l)
удобно использовать виртуальные машинные слова длины s —	, пред-
ставляя многочлен-делимое Pi(X) четырьмя такими словами U^Q\U^, а многочлен-делитель рг(Х) — двумя:
Примечание 4.4.2. В обоих случаях старшее виртуальное слово может быть неполным.
Пример 4.4.3. Пусть все коэффициенты многочлена-делимого рДХ) степени 319 равны 1 (см. табл. 4.3) а многочлен-делитель является пятичленом
р2(Х) = 1 4- X3 4- X6 + X1 + X163.
Длина s машинного слова — 32 двоичных разряда. При делении классическим алгоритмом потребуется выполнить около тысячи сложений и сдвигов 32-разрядных машинных слов.
Таблица 4.3
Г(о)	[[(О	[[(2)	[[(3)	[[W	u(s)	[[(«)	um	[[(8)	[[(S)
Iм	I32	I32	I32	I32	I32	I32	I32	I32	I32
При реализации алгоритма приведения с использованием виртуальных машинных слов длины 32^+-'- =	= 96 параллельно будут выполняться 96 после-
довательных итераций классического алгоритма.
По построению,
32 • (5 4- О
s =----------= 96, р = deg^pipQ = 3, q = deg?p2(X) = 1.
Список L = [rb r2, r3, r4] = [0, 3, 6, 7].
Многочлен-делимое представляется четырьмя виртуальными словами (см. табл. 4.4).
Таблица 4.4
[[(°) = [7(0)[/(l)[[(2)		Uw = u{3}umu{5)		[[(2) = [7(6)[[(2)[/(8)	[[(3) = [[(9)
I96		I96		196	I32
ВЫЧИСЛИ! Cj =	4 96-3 -163 4-0 96		= 1; tr, = rem(96 • 3 - 163 + 0,96) = 29;		
174
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Zr2 — Т —	96 • 3-163 + 3 96 96-3 - 163 + 6	= 1; — 1 •	tr2 = rem(96 • 3 - 163 + 3,96) = 32; tr} = rem(96  3 - 163 + 6,96) = 35;
1гз —	96 96-3 - 163 + 7	— 1,	
=	96	= 1;	tri = rem(96  3 - 163 + 7,96) = 36.
Вычисления первой итерации:
I1. р = 3 > q = 1.
A.	= 132 064 / 0, для каждого гг, г = 1,2, 3, 4, вычисления пред-
ставим в табл. 4.5.
Б. = 0,р = р- 1 = 3-1 = 2.
ТГ1 = 1 - 1 = 0; ГГ2 = 1 - 1 = 0; Ггз = 1 - 1 = 0; ТГ4 = 1 - 1 = 0.
Таблица 4.5
i	tri			r<‘»	(7<2>
0				t7<’> = 196	{7<2> = I96
1	29	029 l 32 035	o96	ЦМ — p9g32j35	(7(2) fjiPl) = J96
2	32	032l 32032	0’6	Uw + цЫ =	f/(2) _p	— |96
3	35	035 l 32 029	o96	fjW + рЫ = р’0зр02бр0зр9	f/(2)	_ |96
4	36	q36 |32q28	o96	(7<i) + (fW = p’03l30‘l25 03 l301l28	(((2) _|_ (((Pl) = 1%
Вычисления второй итерации:
I2. р = 2 > q = 1.
A.	= I96	0. Вычисления этого этапа показаны в табл. 4.6.
Таблица 4.6
i	trt	{/(to)	[/(Pl)	[[(°)	(((D
0				ц(0) _ 196	(((i) = р’озроцгзозроцгв
1	29	02’167	l29067	[jtty lf(Po) — 129q67	(((i) +(((Pi) = o32130‘ l2503l301128
2	32	032 l64	l32064	(/(O) _|_ fjr(Po) — £29q3|64	((('> +(((pi) = p5o' l25 03 l30' I28
3	35	035 l61	l35061	fjm _|_ (((P0) = 129()3[3q61	((f1) + ((₽> = o36i25o3i3o‘i28
4	36	q36 i 60	|36q60	(r(0) _|_ (((Po) = р’дЗроЦбО	(((!>+(((Pl) = l6103l30‘l28
4.4. Приведение по модулю неприводимого многочлена
175
Б. Е7(2) = 0, р = р- 1 = 2- 1 = 1.
Гг,=0- 1 =-1; ГГ2=0-1 = -1;
Тп=0- 1 = -1; ГГ4=0-1 = -1.
Вычисления третьей итерации (действие I3 не выполняется):
23. р = 1 = q = 1, degt7(1) = 95 > deg У’0 = 67.
Из вектора	= 1б 1031301 128 обнулением 67 младших разрядов образуем век-
тор Ж = 068128. Выполним вычисления для каждого г,, г= 1,2,3,4 (см. табл. 4.7).
Таблица 4.7
i	tr		[/(Р1)	Е7<°>
0				Ё7<°) = 12903 130'16°
1	29	о96	0Ч 28067	+ UM = 1'031130‘ I60
2	32	о96	04 128064	jjm + ^(pi) = 11о3131о‘16°
3	35	о96	07 128 061	+цм = 110313029,60
4	36	о96	08 1 28 06°	U<® + jjM = 1103130‘188
После обнуления 96 - 67 == 29 старших разрядов вектора = 16103130Ч28 получаем окончательный результат гет(р1(А'),р2(^)) приведения многочлена Р\(Х) по модулю pz(X) (табл.4.8).
Таблица 4.8
ит = ити^ит	[7(1) = £7(3)77(4)77(5)
l'03lW8 = l103l301l24||l32||l32	16103 13 029 = 132||12903||13029
4.4.3. Обобщение алгоритма
Для многочлена-делителя более общего случая (допускается один ненулевой коэффициент среди Vdegp2-i, • • • , ^degp2-s+i) ПРИ выполнении алгоритма вместо вектора необходимо использовать целую часть отделения многочлена и^(Х)-Х^Р2~1 (прир > q) или f7^'(X)-XdegP2~^ (при р = q) на двучлен Х^Р2~1 + 1, где t = tri степень второго после старшего ненулевого слагаемого делителя, U^(X) — многочлен с последовательностью коэффициентов , U^'(X) получается из U^(X) обнулением deg младших коэффициентов. В частности, при t = deg^2 - 1 используется двучлен 1 + X.
176
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Примечание 4.4.3. Если степень многочлена-делимого pi(X) не превышает 2 deg р2 (-30 — 2, то единственный ненулевой коэффициент допускается среди коэффициентов Vdegp2_i, . . . , tldegp2-s+4.
Пример 4.4.4. Приведем многочлен степени 22, заданный вектором коэффициентов (в порядке возрастания степеней многочлена)
(00101000 10101000 10001010),
по модулю многочлена
1 + Т11 + X15 = (10000000 00010001).
Пусть s = 8, тогда р = 2, q = 1, список L = [г1; г2] = [0,11]. Вычислим
= 0,	<г, =геш(8-2-15 + 0,8) = 1,
= 1, tr2 = rem(8 • 2 - 15+ 11,8) = 4.
Вычисления первой итерации:
I1. р — 2 > д = 1. Вычислим частное Z® от деления многочлена ^(2)^15-11 =	= (000010001010)
на двучлен 1 + X4, получим (00101010).
Далее вычислим для гг, i = 1,2 (табл. 4.9).
Таблица 4.9
г	^rt		и	Um = (00101000)	Uw = (10101000)
1	1	(00010101)	(00000000)	п(°> + иы = (00111101)	и^+им = (10101000)
2	4	(00000010)	(10100000)		и^+им = (10101010)
После первой итерации получаем частичный остаток
(00111101 10101010).
Модифицируем значения = 0, /Г1 = 0 - 1 = -1, /Г2 = 2 - 1 = 1, р = 2 - 1 = 1.
Вторая итерация (действие I2 не выполняется):
22. р = q = 1, degL7(1) = 6 < deg7(1) = 7. После второй итерации имеем результат приведения:
(00111101 10101010).
Данный вариант алгоритма можно ускорить, вычислив заранее бинарную таблицу Т, содержащую 216 строк, определяемых двухбайтовыми двоичными наборами (а0, • • •, «15) коэффициентов многочлена
15
5>.*‘
г-0
4.4. Приведение по модулю неприводимого многочлена 177 и образуемых коэффициентами (&0, • • •, &15) частного от деления многочлена
15
X  агХ1
2=0
на двучлен 1 + X таким образом, Т(во, • • •, &15) = (&о, • • •, Ь^). Тогда набор коэффициентов	, \
частного от деления многочлена t-1	/15	х
J=0	2 = 0
определяемого набором двоичных коэффициентов z.0 zJ	zJ
• • • > а15, ао, • • • , а15, • • • , aQ ,...,^15 ),
на двучлен 1 + X можно вычислить по следующему алгоритму:
1. Принять (&о-1,..., Ц51) = Z(ao-1,... , a/j1);
2. Для j = t - 2,..., 0 выполнить
если = 0, то (bj,..., b]5) = T(aj,..., а]5);
иначе (&>,..., ^5) = Т(а30,.... «]5).
Здесь и ниже Т(...) — вектор, получаемый логическим отрицанием каждого разряда вектора Т.
Пример 4.4.5.
А. Пусть t = 2,
(4, а],..., в?5) = (1010101010101010), (ej,a{,...,a1l5) = (0111111111111111). Тогда
Т(а'о, а\,..., а115) = 7(0111111111111111) = (1101010101010101),
T(a?,a?,...,a?5) = 7(1010101010101010) = (0110011001100110),
искомое частное описывается вектором
(10011001100110011101010101010101).
Б. Если при тех же условиях
(4, а!,... ,а)5) = (1111111111111111),
ТО
7(4, а|,... ,а|5) = 7(1111111111111111) = (0101010101010101) и искомое частное описывается вектором («младшая» половина не инвертируется)
(01100110011001100101010101010101).
178
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Рассмотренный метод деления многочлена на двучлен 1 4- X позволяет построить эффективный алгоритм приведения многочлена степени не более 2п - 2 по модулю трехчлена
1 +ТП-1 + Хп
для использования в алгоритме умножения в поле GF(2n) в полиномиальном базисе3).
Пусть s — длина машинного слова, Pi(X) — полином-делимое степени не выше 2п - 2, Р2(Х) — трехчлен-делитель степени п указанного вида, q = deg5p2- Объединим машинные слова длины s в виртуальные машинные слова длины S' = s • (q 4- 1).
Теперь полином-делимое представляется двумя виртуальными машинными словами
и = ?7(0)||Г(1),
а полином-делитель — составляет одно виртуальное машинное слово V = у (°). Обозначим degsPi = р, deg^p2 = Q- В данном случае р = 1, q — 0. Список L = [0, degj?2 — 1]•
- =0_
L s j
~ _ ps - degp2 + degp2 - 1
‘r2 —	~	— u,
tTi = t0 = s- degp2,
Г, = <degp2-i = rem(ps - degp2 + degp2 - 1, s) = s - 1.
Алгоритм приведения по модулю трехчлена /ДХ) степени п указанного вида можно описать следующим образом.
1. Если / 0 вычислить вектор S коэффициентов частного s(X) от деления многочлена X • на двучлен 1 + X (при этом следует применить описанный выше алгоритм, использующий заранее приготовленную таблицу Т). Младший разряд вектора S прибавить к старшему разряду вектора . Образовать из вектора S вектор [у(р°) сдвигом S на to разрядов в сторону старших разрядов. Принять
4-	.
(В итоге S'- to младших разрядов вектора S будут прибавлены к S'- to старшим разрядам вектора U^.)
2. Найти остаток от деления многочлена U = на многочлен V.
3) г-	„ _
' Если такой многочлен порождает нормальный базис, то предлагаемый алгоритм рекомендуется использовать в комбинированных алгоритмах, когда умножение осуществляется в полиномиальном базисе, а возведение в степень характеристики поля — в нормальном с переходами из одного базиса в другой по мере необходимости.
4.4. Приведение по модулю неприводимого многочлена 179
Примечание 4.4.4. Прибавление младшего разряда вектора S к старшему разряду вектора Uw учитывает действие второго ненулевого коэффициента.
Пример 4.4.6. Приведем многочлен X14892 в полиномиальном базисе по модулю неприводимого трехчлена
l+X7446 + Jf7447 (порождающего и нормальный базис).
В данном случае q —	= 232, s = s(q + 1) = 7456,
^(0)   q	__ jr 14892-7456   j^"7436
Вычислим tr} = s - degp2 = 7456 - 7447 = 9.
1. Uw £ 0, вычислим вектор S коэффициентов частного s(T) от деления многочлена X • ^Г7436 = JT7437 на двучлен 1 + X, получим S = I7437 (вектор из 7437 единиц и старших 19 нулевых разрядов). Прибавим единицу младшего разряда вектора S к старшему разряду вектора :
fjW = Q7456	07455 р	07455 11
Из вектора S получим вектор
j^r(Po) _ 09]7437О10
Далее получим
= о7455!1 + О917437О10 - О9174370911.
2. Найдем остаток от деления многочлена U — С7(0) на многочлен V.
В данном случае s — 32, р = q =	= |_^J — 232. Составим список
L = [0, 7446]. Вычислим
7424 - 7447 /0 — ------“--- — ~ 1,
7424 - 7447
32
7456 - 7447 + 7446
32
= -1,
tQ = гет(32 • 232 - 7447, 32) - 9, /744б = гет(32 • 232 - 7447 + 7446, 32) = 31.
Выполним единственную итерацию базового алгоритма. Пункт 1 не выполняется, так как р = q.
Выполним п. 2: degC7(232) = 31 > deg V(232) = 23.
Образуем вектор W как частное от деления многочлена X • U^232^ = О1 1220911 на двучлен I 4- X. Получим
W = О1 Ро1 Ро11 ‘О1110! 11o1 i’o1 Ро1 i’o1 i’o1 Ро1 Ро119.
Обнулив 23 младших разряда вектора W, получим вектор W = 023 19.
Остальные вычисления представлены в табл. 4.10 (где показаны только изменяемые части вектора U).
Установим в нулевое состояние разряды с degV(232^ = 23 по 31 (младший разряд имеет номер 0) полученного вектора U^232\ получим U^232^ = 123 09.
Вернем вектор U = I7447.
180
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Таблица 4.10
i	li	fr,	Jj(Po)			a'232’
					09l23	122O91‘
1	-1	9	О9123	l9023	[/(°)	U<P1) — p2	
2	231	31	О32	022I90*		JjiPl) = p2
Таблица 4.11
Степень n полинома	172	303	471	532	900	1366	2380	3310	4495
Отношение tciass/tnew времен тестирования	1,29	2,91	5,38	5,55	11,36	19,34	28,95	49,22	65,61
В заключение отметим, что рассмотренные алгоритмы имеют линейную сложность, что подтверждено также экспериментально. Доля времени приведения многочлена по модулю полинома с малым числом членов по сравнению с временем приведения по классическому алгоритму убывает линейно с ростом степени многочленов. Это сказывается на существенном ускорении алгоритмов основных операций арифметики конечного поля и прикладных алгоритмов. Например, время тестирования многочленов степени п на неприводимость сокращается, как это видно из табл. 4.11.
Включение в область применимости алгоритмов делителей с двумя ненулевыми коэффициентами при высоких степенях обеспечивает возможность комбинированного использования нормального и стандартного базисов в алгоритмах алгебраических операций и криптографических протоколов. В данном разделе использована работа [5].
Рассмотренные здесь алгоритмы актуальны также с точки зрения реализации систем кодирования [73].
4.4.4. Приведение по модулю многочлена высокого веса
Так называемая стратегия избыточного представления в конечных полях рассматривалась несколькими авторами, например,ч в [86, 108, 120,180]. Ее основная идея заключается в том, что в качестве неприводимого выбирается многочлен /(X), кратный многочлену малого веса д(Х) степени немного большей, чем степень f(X). Тогда умножение выполняется по модулю д(Х), а потом результат приводится по модулю /(X).
Приведение по модулю многочлена максимального веса [86]. Пусть
2п
Р(Х) =	а,Г
г=0
4.4. Приведение по модулю неприводимого многочлена
181
есть многочлен степени degP(X) < 2n, а /(X) есть многочлен степени п, все коэффициенты которого — единицы. Вес многочлена /(X) максимален и равен n 4- 1.
Тогда коэффициенты остатка
ЛрГН&о + ^ + .-. + Ьп-!*"-1	I
отделения Р(Х) на /(X) можно вычислить следующим образом:
an+iX° 4- ... 4- ^degp(x)Xdegп 1 4- йоХ° 4-
4- d\X 4- ... 4- dn-\X 4- ап(1 4" X + ... 4- X ).
То есть остаток равен сумме сдвинутого в сторону младших разрядов на одну позицию вектора	и вектора (а0,•••, если
an = 0 или же поразрядно инвертированной этой сумме, если an = 1. Это соответствует взятию остатка по модулю 1 4- X 4- X2 4-... 4- Хп от остатка по модулю 1 4- Xn+l.
Действительно, используя тождество
Xn+1 + 1 = (X + 1)(1 + X + X2 +... + Хп),
остаток от деления многочлена Р(Х) на многочлен (1+ X + X1 +... + Хп) можно найти в два этапа:
1) вычисление остатка по модулю Xn+1 4- 1;
2) вычисление остатка по модулю (1 4- X 4- X2 4-... 4- Хп).
Первый этап соответствует сложению векторов
(flO, . . . , Qn-\) И	. . . ,
второй этап — «деление» на многочлен (14-Х4-Х24-...4- Хп).
Таким образом,
гет(Р(Х), 1 + Х + Х2 + ... + Х") =
= rem(rem(P(T),Tn+1 + 1), 1 + Х + Х1 + ... + ТП).
Приведем несколько примеров.
Пусть п = 10. Многочлены представлены векторами своих коэффициентов в порядке возрастания степеней
1)	Р(Х) = 000000000000111011111; Р(Х) = 0111011111.
2)	Р(Х) = 000000000010111011111; Я(Х) = 1000100000.
3)	Р(Х) = 100000000000111011000; Я(Х) = 1111011000.
4)	Р(Х) = 100000000010111011000; Р(Х) = 0000100111.
Приведение по модулю многочлена степени п и веса п. В [86] исследуются неприводимые многочлены степени п и веса п над полем GF(2). В таком
182
Глава 4. Арифметика GF(2n) в полиномиальном базисе
случае появляется возможность реализации быстрого умножения в поле GF(2n). Действительно, пусть Fn,m(X) неприводимый многочлен степени п, у которого все коэффициенты единичные, кроме коэффициента при Хт:
Хп+1 4- 1
Fn>m(T) = Tn + Tn“1+... + Tm+1+X”!’1+... + X+l = —-—— +Хт,
X + 1
тогда многочлен <?(Х) будет иметь вид:
д(Х} = (X + 1)/(Х) = Xn+1 + Xm+1 + Хт + 1.
Приведение по модулю четырехчлена д(Х) вместо Fn^m{X) может быть также эффективно реализовано, как и приведение по модулю трехчлена или пятичлена.
4.5. Возведение в степень и инвертирование
4.5.1. Возведение в степень 2т в стандартном базисе
Напомним, что по свойству операции возведения многочлена в степень характеристики поля (следствие 2.1.6) квадрат многочлена над FG(2) можно вычислить по формуле (4.10) на с. 149. Для ускорения выполнения операции возведения в квадрат многочлена над полем GF(2) можно заранее, на этапе инициализации составить таблицу Тр, в которой для каждого байта имеются двухбайтовые слова, полученные вставкой дополнительных нулей между битами. Объем этой таблицы (64 К) вдвое меньше объема таблицы умножения (см. с. 150).
При возведении в квадрат бинарного многочлена с использованием таблицы Тр мы заменяем каждый байт вектора коэффициентов этого многочлена двумя соответствующими байтами из таблицы (тем самым мы вставляем между битами этого бинарного вектора нули). Это равносильно тому, что каждый элементарный многочлен &t(X) степени не выше 7 заменяется его квадратом — многочленом Tf(X) — ot(X)2 степени не выше 14 (см. формулу (4.9) на с. 149).
Полученный результат алгоритмом из числа рассмотренных в разд. 4.4 приводится по модулю неприводимого многочлена, который порождает данное поле.
Отметим, что возведение в квадрат в нормальном базисе осуществляется просто циклическим сдвигом коэффициентов полинома.
Многократным повторением подобного преобразования получают степень f(X)2Tn данного многочлена.
4.5.2. Инвертирование в полиномиальном или нормальном базисах
Рассмотрим модификацию метода [125] возведения многочленов в степень и их инвертирования в полиномиальном или нормальном базисах,
4.5. Возведение в степень и инвертирование
183
отличающуюся тем, что используется не рекурсия, а явные вычисления, основанные на двоичном разложении степени и машинном представлении многочленов. Описанная здесь реализация использует также некоторые программные эвристики.
Пусть многочлен f(X) степени меньшей t задан в полиномиальном S или нормальном N базисе. Требуется получить представление многочлена f~\X) в заданном базисе В, В = S или В = N.
Из равенств
Г'(х) =	= (/2" 1_|)2(т)
следует, что для вычисления можно сначала найти g(X) = f~ 1-1, а затем возвести полученный многочлен д(Х) в квадрат.
Опишем часть алгоритма, касающуюся возведения многочлена f(X) в степень 2й — 1, где t — натуральное. Воспользуемся равенством
t ( (2^2 - 1)(2^2 +1),	если t четно,
( 2*-1 + (2^-1^2 - 1)(2^-1^2 4- 1), если t нечетно.
Отсюда
t (	- 1)2^2 + (2^2 - 1),	если t четно,
| 2*~* +(2(<’1)/2 - 1)2((—,)/2 + (2((’1)/2 - 1), если t нечетно.
Таким образом, для /2<-1 получаем разложение
2<-i	( (/2 -1)2	если t четно,
t /2 • (f2(t ')Л~1)2< }/ . f2(t если t нечетно.
Покажем, как с использованием приведенных выше разложений вычислить /2-1, если
t = ^аг2г.
г=0
Старший разряд as числа t равен 1. Пусть для некоторого s', s' < s, уже вычислен многочлен f2> "1, где
s'
I ~	2 ^S-s'A-l^ •
г=0
Найдем многочлен /2< -1 для
s'4-l
^s-s'.
Для этого рассмотрим два случая.
184
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Случай 1. Пусть as_s/_i = 0. Тогда t" = 2tl и, учитывая приведенное выше разложение, получаем
Таким образом, нужно использовать один раз алгоритм возведения в степень для вычисления (/2< -1)2 и один раз алгоритм умножения.
Случай 2. Пусть = 1. Тогда t" = 2t! + 1 и, используя приведенное выше разложение, получаем
у2?'-1 _ (у2''-1)2? . ^2?-1 . у22</
Следовательно, нужно использовать два раза алгоритм возведения в степень для вычисления многочленов (/2‘ -1)2 , /22\ а затем два раза алгоритм умножения.
Выполняя описанные выше действия, начиная с s' = 0, чему соответствует t' = as, мы вычислим /2-1 с использованием v(t) + X(t) - 2 умножений, где b(t), как указывалось выше, — число разрядов в двоичном разложении числа t, a n(t) — число единичных разрядов в этом разложении. Таким образом, порядок числа умножений равен О (log t). Кроме того, понадобится n(t)+b(t) —2 раз использовать алгоритм возведения в степень.
Рассмотренный выше способ возведения многочлена f в степень 2*-1 с использованием двоичного представления числа t, t = (as,...	a0)>
as — 1, s > 0, можно оформить в виде следующего алгоритма.
1.	Принять ф = f.
2.	Для s' = 0,..., s - 1 вычислить
s’ f = 52 a^’~i ’ i=Q
Если as-si-\ = 0, принять
ф = ф -ф,
иначе принять
2*'	2*’
<р = <р -<p-f 
Алгоритм работает как в полиномиальном, так и в нормальном базисах.
Пример 4.5.1. В поле GF{23) многочленов, рассматриваемых по модулю неприводимого многочлена р(Х) = 1 + X2 + X3 вычислим многочлен /2 -1(T), если fW = \+x.
Здесь t = 5, и двоичное разложение этого числа есть t = (a2,ai,ao) — (ТО, !)• 1. Примем ф = f = (1 + X).
4.5. Возведение в степень и инвертирование
185
2.1.	Для s' = 0 имеем t' = a2 = 1, as_si_i = «2-0-1 — «1 = 0, поэтому
<р =	v = (I + х2)(1 + X) = 1 + X + X2 + X3 = X.
2.2.	При s' = 1 получаем
t' = fl2-i-o2° 4~ «2-1-121 — «12° 4- «(,2* — 2.
d5_s'_] — O2-1—1 ~ «о ~ поэтому
= х22 • х • /22 2 = х4 • х • (i + JO24 =
= (1 + X 4- X2) • X • 1 + X = (1 + х2)(1 + X) = X.
Пусть в рассмотренном выше поле нужно вычислить многочлен f~l(X), где, как и прежде, /(X) = 1 4- X Тогда
/-'(Х) = /2’-2(Х)= (/"'(х))2.
(для вычисления /22-1(Х) принимаем <р = f = (1 4- X), далее для s' = 0 находим t' = 1, Oi-o-i = «о = 0, что влечет <р2 • у? = ^2 • 92 = (1 4- X)2 • (1 4- X) — X.
Таким образом, /-1(Х) = ^j2 = X2.
4.5.3.	Быстрый алгоритм возведения в степень в стандартном базисе
Для возведения многочлена с коэффициентами из поля GF(2)
= clq 4- diX 4-... + o>k-\Xk
в степень 2m по модулю заданного неприводимого над GF(2) многочлена <?(Х) можно воспользоваться формулой
/(X)2"1 = а0 +	+ • • • + ак_хХ(к~^т,
в которой степени Х2"’2, i = 0,..., к - 1 берутся по модулю многочлена (?(Х) степени к. Составим из коэффициентов этих многочленов к х к матрицу Qm.
Эту матрицу можно вычислить со сложностью 0(тк2) единственный раз, так как она не зависит от /(X). Умножая вектор а коэффициентов многочлена /(X) на матрицу Qm, что можно сделать «алгоритмом четырех русских» (см. с. 65) со сложностью O(k2/log к), получаем коэффициенты многочлена /(X)2™. Последовательно возводя в квадрат, можно вычислить /(X)2” со сложностью О(пк). Но если выбрать т = з — ^п/т], г = п — зт < т,то можно с помощью указанного выше способа возвести f в степень 2W, выполнить это s раз, получив f2™, а потом, возведя тем же способом, но с помощью матрицы Qr, в степень 2Г, получаем в итоге (f2™)? = f2" со сложностью О(sk2/log к) = ^====, причем это можно сделать для любого п > т, если предварительно вычислить все матрицы Qr, г = 1,..., т.
186
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Пример 4.5.2. Пусть к = 4, р(Х) = 14-Х+Х4, f(X) = 14-Х3, m0 = 2 и требуется найти /2 (X), выразив его в полиномиальном базисе. Сначала представим в полиномиальном базисе одночлены {1, X6, X12, X24}. Получим бинарную матрицу:
х°	X	X2	X2	
1	0	0	0	х°
0	0	1	1	X6
1	1	1	1	X12
0	1	0	1	X24
Образуя линейную комбинацию строк этой матрицы с коэффициентами многочлена f(X), получим (как суммы первой и четвертой строк)
/2\х) = 1 + X + х\
Заметим теперь, что при п порядка 200 лучше использовать метод умножения вектора v на матрицу М (см. Приложение А во второй книге [18]), разбивая матрицу на полосы по 32 строки и заменяя булеву к х к матрицу М на матрицу С(М) размером [’А:/32’| на к, а вектор длины к вектором R(v) длины [fc/32], состоящий из «длинных целых чисел», и умножая вектор R(v) на матрицу С(М), используя операции с 32-битовыми числами. Тогда сложность умножения будет равна к2/16. Так как сложность возведения в квадрат в полиномиальном базисе равна ЗА;/8, то при вычислении обратного элемента в поле GF(2k) последнюю операцию возведения в степень 2^-1^2 выгоднее выполнить описанным выше методом (может быть, и предпоследнюю тоже).
Приведем детальное описание рассмотренного алгоритма. В нем будет использованы операции над матрицами, элементами которых являются «длинные целые числа», и операция умножения вектора на матрицу (см. Приложение А во второй книге [18]).
Возведение многочлена f(X) в степень 2Ш в полиномиальном базисе можно выполнить следующим образом:
1.	Последовательно для г = 0,1,...,&-1 найти разложение одночленов Хг2т в полиномиальном базисе. Так, если разложение gt,m_i(X) для Хг2-т уже найдено, то искомое разложение в полиномиальном базисе для одночлена Хг2т = д2 т_х(Х) получаем, вычислив остаток от деления многочлена д2 т_{(Х) на многочлен р(Х).
2.	Из представленных в виде последовательности «длинных машинных слов» векторов коэффициентов полученных многочленов, образовать таблицу Тт, которая является компактным представлением R(M) к х А;-матрицы М = Qm из нулей и единиц, г-я строка которой совпадает с набором
^4-1,1, •••> 0>i-\,к-2?
4.5. Возведение в степень и инвертирование
187
коэффициентов многочлена дг_]?ш(Х), fc-i
(см. Приложение А во второй книге [18]).
3.	По таблице Тт = R(M) построить таблицу Um = С(М) (см. Приложение А во второй книге [18]).
4.	Для того чтобы получить набор коэффициентов многочлена /2™(Х) в полиномиальном базисе, нужно, представив набор коэффициентов многочлена f(X) в виде -вектора с элементами из множества {О, 1,..., Is - 1}, умножить его на таблицу Um.
Для реализации этой последовательности действий понадобится:
1.	Асимптотически С]к2т операций для построения матрицы Тт, где С\ — некоторая константа.
2.	Асимптотически С^к2 операций для построения таблицы Um по известной матрице Тт, где — константа.
3.	Асимптотически С^к2/з операций над s-разрядными числами для умножения вектор-строки на таблицу Um.
Таким образом, всего понадобится выполнить асимптотически
к2
С1к2т + С2к2 +С3 —
S операций.
Если заранее вычислить таблицу Um, то количество операций во время вычислений снизится до С^к2/з, правда, необходимо будет помнить таблицы Um, т — 1,2,что потребует сохранения асимптотически к3/з чисел.
Ниже мы покажем, как можно сократить объем требуемой памяти, уменьшив скорость работы алгоритма. Эта скорость все же будет больше, чем в случае, когда вычисления каждый раз начинаются с построения таблицы Um.
Пусть с — некоторое натуральное число (параметр), значение которого будет выбрано позже. Через то обозначим число ]к/с[. Заранее вычислим таблицы Um, т = 1,2,..., то. Объем требуемой памяти для запоминания массива Um, т = I, 2,..., то асимптотически в с раз меньше, чем для запоминания массива Um, т = 1, 2,..., к - 1.
Пусть нужно вычислить X2” в полиномиальном базисе. Если п к, то найдем остаток щ от деления п на к,
n = qk +	0 П1 < к.
Ввиду эквивалентности X2” =ХГ] (modp(X)), нужно вычислить X2”1.
Таким образом, в дальнейшем достаточно указать способ вычисления многочлена X2" при п < к.
188
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Если п то, то искомый многочлен получим, умножая вектор-строку, соответствующую f(X) на Un. При этом будет использовано асимптотически С^к2/з операций.
В противном случае (п > то) через г обозначим остаток от деления числа п на то. тогда для некоторого натурального числа qi выполнено n = q^rriQ 4-г.
Пусть /г(Х), г = 0, 1,..., £1, Qi + 1 — последовательность многочленов, представленных в полиномиальном базисе и полученных по следующей схеме:
/oW = /(T); ЦХ) =	i = 1,2,... ль Д+iW = /?Т(Х).
Используя эту намеченную в начале данного раздела схему, многочлен /2”(Х) = Д1+1(Х) можно получить, выполнив асимптотически не более
„ /	.к2	( п \к2	„ икс
Сз(<71 4- 1)—	(------1-1) — х Сз------
S \TrtQ J S	3
операций.
Следовательно, выбрав значение параметра с = [v^], получаем, что для возведения многочлена /(X) в степень 2П потребуется асимптотически С*з^| операций.
Пример 4.5.3. Пусть к = 4, р(Х) = 1 4- X 4- X4, f(X) = 1 4- X3, mQ = 2 и требуется найти /2 (X), выразив его в полиномиальном базисе.
Имеем п — 3 = q -то-\-г. Построим в полиномиальном базисе таблицы QmQ = Q1 И Qr = Ql-
Для построения таблицы QmQ представим в полиномиальном базисе одночлены {1, X4, X8, X12}. Одночлен 1 преобразовывать не нужно.
Х4 = 1 + X(modp(X)),
X* = (X4)2 = 1 + X2(modp(X)),
X12 = (X6)2 = (X2 + X3)2 = X4 4- X6 = 1 + X 4- X2 + X3(modр(Х)).
Чтобы получить таблицу Qr представим в полиномиальном базисе одночлены {1, X2, X4, X6}. Первые два одночлена из этого множества преобразовывать не нужно, одночлен X4 уже преобразован,
X6sT2 + X3(modp(X)).
	х°	X	X2	X3			х°	X	X2	X3	
	1	0	0	0	х°		1	0	0	0	х°
QmQ — Ql —	1	1	0	0	X4	о II II	0	0	1	0	X2
	1	0	1	0	Xs		1	1	0	0	X4
	1	1	1	1	х'2		0	0	1	1	X6
4.5. Возведение в степень и инвертирование
189
Так как 3 = I • m0 + 1, то вектор (1,0,0, 1) коэффициентов многочлена f(X) нужно сначала умножить на матрицу Q2. Получится вектор (0, 1, 1, 1), который соответствует многочлену X -\-Х2+Х3. Поэтому для того чтобы получить искомый результат, нужно вектор (0, 1, 1, 1) умножить на матрицу Q{. Получим вектор (1, 1,0, 1), который соответствует многочлену 1 + X + X3. Таким образом,
f\x) = 1 + X + Jr3modp(X)).
4.5.4.	Быстрое инвертирование в стандартном базисе поля GF(pn)
Как известно, можно использовать для вычисления обратного элемента в поле GF(pn) расширенный алгоритм Евклида. Время его работы, возможно, будет сильно зависеть от выбранного для обращения многочлена.
Можно использовать также теоретически более быстрый вариант Шенхаге—Моенка [115,152,160] алгоритма Евклида, который дает в наихудшем случае оценку 0(M(n) logn), где М(п) — сложность умножения многочленов степени п.
Известно также, что можно выполнять инвертирование в поле GF(pn) с помощью тождества Ферма mod q = fpn~2 mod q. Используя для возведения в степень указанные выше соображения, можно получить для этого алгоритма оценку сложности 0(M(n) logn 4- п2). Остаточный член О(п2) можно несколько уменьшить, заменив его на О( при условии предварительного вычисления некоторых матриц.
Для этого заметим, что для возведении f в (рп - 2)-ю степень приходится возводить в самом конце сразу в степень	? до этого —
в степень рп/4+°0) и т.д. Если выполнять эти операции так, как указано в предыдущем пункте, то суммарная сложность этих операций будет равна (сложность предварительных вычислений не учитываем), сложность оставшихся умножений оценивается так же, как и раньше.
4.5.5.	Быстрое программное инвертирование на основе алгоритма Евклида
Инверсный алгоритм. Здесь мы рассматриваем только случай q = 2, т. е. имеем дело только с полями GF(2n) и базисами в них.
Для любого стандартного базиса инвертирование можно выполнять посредством алгоритмов 1.2.8 или 1.2.9, с. 34, 35. Например, в [121] такой алгоритм при q^ = Х], j = deg a(X)^ — deg b(X)^ применяют для поля GF(2163) и стандартного базиса, порожденного корнем пятичлена
1 +X3 + JT6 + X7 + X163,
так как это одно из полей и один из базисов, рекомендованных стандартом NIST.
190
Глава 4. Арифметика GF(2n) в полиномиальном базисе
На каждом шаге алгоритма max{deg deg Ъ(Х)^} уменьшается по крайней мере на 1, за исключением случая dega(X)^ = degd(X)^, а в среднем, согласно [121], на 2. Единственная операция умножения, используемая в этом алгоритме, фактически означает сдвиг массива коэффициентов на j битов вправо и выполняется быстро. Еще большего ускорения можно достичь, если коэффициенты многочленов хранить не в виде массивов битов, а в виде массивов машинных слов — s-битных целых чисел (з — 32,64). Но тогда операция сдвига массива будет включать в себя не только операции пересылки, но и операции выделения префикса и суффикса данной длины в машинном слове и операции побитового XOR.
Почти инверсный алгоритм. В [165] был предложен «почти инверсный» алгоритм AIA, который производит впечатление более быстрого. В нем вначале находится такой многочлен с(Х), что c(X)a(X) = Xk mod /, а потом вычисляется а-1 как с(Х)д(Х), где д(Х)Хк = l(mod/), т.е. д(Х) = Х~к mod /. При этом всегда к < 2n— 1. Для нахождения с вначале полагаем b = 1, с — 0, u = a, v — f, к — 0. Во время работы программы всегда
&(Х)а(Т) = u(X)Xk mod f, с(Х)а(Х) = v(X)Xk mod f.
Пока u(X) делится на X выполняем присваивания u(X) = и(Х)/Х, с(Х) = с(Х)Х, к = к -Г 1. Если u = 1 алгоритм заканчивает работу и возвращает результат — многочлен Ь(Х) и число к. В противном случае работа продолжается и если deg и < deg v, то меняются местами и и v, а потом b и с. Далее, независимо от того, выполнялась эта перестановка или нет, выполняются присваивания и — u-^v, Ъ = Ь + си делается переход к началу цикла деления на X, причем для ускорения работы проверка выполнения условия делимости на X не делается, так как это условие всегда выполнено. Операция прибавления 1 к к делается не более 2п - 1 раз.
Упражнение 4.5.1. Докажите это, а также инвариантность соотношений
6(Х)а(Х) = Хки mod f, с(Х)а(Х) = Xkv mod f во время работы алгоритма.
Операция деления на X в этом алгоритме означает просто сдвиг массива влево на один бит. Как и в расширенном алгоритме Евклида, здесь тоже надо работать не с битами, а с машинными словами.
Почти инверсный алгоритм похож на расширенный алгоритма Евклида, только удаление битов в и и v в нем выполняется, начиная с младших битов. Но еще более похож он бинарный алгоритм Евклида для чисел, описанный в [45], см. также с. 35. Для того чтобы в этом убедится, назовем многочлен четным, если его свободный член равен нулю, и нечетным в противном случае. Тогда деление четного многочлена на X соответствует делению четного числа на 2, умножение же любого многочлена на X соответствует умножению числа на 2.
После получения Ь(Х), такого что b(X)a(X) = Хк mod /, надо найти д(Х), deg# < п, такой что д(Х)Хк = b(X) mod /, тогда а-1 = д. Для
4.5. Возведение в степень и инвертирование
191
выполнения этого в [165] предложена следующая процедура. Определим по данному неприводимому многочлену f число s = min{i > 1, fa = 1}. Тогда /(Ji) = 1 + Xsh(X). Например, для используемого в [121]
1 + Х3+ х6+ х7 + хт
число з = 3, а для используемого в [165]
1 +Х62 + Х155
число з = 62. Выделим в b(X) s младших битов и обозначим bf(X) определяемый ими многочлен, тогда b(X) = Ь'(Х) + Xsd(X). Поэтому b'(X)f(X) + b = Xs(d(X) 4- b'(X)h(X) делится на Xs (имеет нулевые s младших битов), значит b"(X) — (b’(X)f(X) + b)/Xs имеет степень меньше п и поэтому b"(X) — b(X)X~s mod /, так как b"(X)Xs = b(X) mod fa Повторяя эту процедуру ffc/sl раз (в последний раз вместо s берется к - ([’fc/s'l - 1)5), получаем a(X) = b(X)X~k mod fa. Умножение bf(X) на f(X) быстрая процедура, только если f(X) — малочлен. Но именно они и используются в рассматриваемых примерах. Время вычисления b(X)X~k mod fa тем меньше, чем больше з, поэтому во втором примере оно, конечно, меньше, чем в первом. В [165] рекомендуют выбирать з = 32, а не 62. Число повторений операции b(X)X~s mod fa при этом возрастает иногда почти в два раза, но сама операция выполняется проще, так как
d(X) + b'(X)h(X) = d(X) + b'(X)X62~s + b'(X)Xli5~s,
и хотя здесь приходится делать два сдвига, а не один, зато Ь' здесь представляется одним машинным словом.
Для ускорения вычисления а(Х) = b(X)X~k mod fa при малых з в [121] предложили включить эту операцию непосредственно в почти инверсный алгоритм, а именно, после того как в цикле было выполнено деление и(Х) на X, выполняется деление Ь(Х) на X, а если оно невозможно, то деление b(X) 4- fa(X) на X, умножение с на X не выполняется, а переменная к в программе не используется. Тогда вместо соотношений
b(X)a(X) = Xku mod /, с(Х)а(Х) = Xkv mod f
инвариантными будут соотношения
Ь(Х)а(Х) — u mod /, с(Х)а(Х) — v mod fa.
Упражнение 4.5.2. Докажите это.
В [121] проведено сравнение этих алгоритмов, и выяснилось, что при малых s действительно модифицированный почти инверсный работает немного быстрее, чем обычный почти инверсный алгоритм, но для многочлена
1 + т74 + X233
192
Глава 4. Арифметика GF(2n) в полиномиальном базисе
обычный почти инверсный алгоритм, как и ожидалось, работает чуть быстрее.
Удивительно то, что согласно [121] расширенный алгоритм Евклида во всех трех рассмотренных там примерах работал чуть быстрее, чем почти инверсный алгоритм. В [165] подобное сравнение не проводилось, однако там подчеркивается важность применения для ускорения работы программы нескольких чисто программистских приемов. Среди них следующие: использование для хранения машинных слов, определяющих многочлены u, v, Ь, с не массивов, а индивидуальных переменных; вместо обмена значениями и, v b, с требующего 6 операций пересылки, пишется вторая копия кода с копиями соответствующих переменных, и когда требуется сделать указанный обмен, просто делается прыжок в эту копию; так как число машинных слов, требующихся для хранения многочленов и, v убывает, а для многочленов Ь, с возрастает, то для выполнения операций с ними пишутся несколько копий кода со всеми возможными вариантами числа используемых переменных для хранения машинных слов, и в тот момент, когда появляется необходимость в использовании новой переменной, делается переключение на выполнение соответствующей копии кода, причем эти копии пишутся без использования циклов.
4.5.6.	Деление с помощью алгоритма Евклида
Так как в криптографических приложениях обычно инвертирование входит в состав деления, то деление с помощью инвертирующего алгоритма Евклида (Алгоритм 1.2.8, с. 34) дает экономию времени, тем большую, чем меньше соотношение между между временем чистого инвертирования и чистого умножения. Впрочем, в противовес распространенному мнению что инвертирование раза в три медленнее умножения, в [109] опять утверждается, что инвертирование в шесть, а то и в десять раз медленнее умножения, и обычный расширенный алгоритм Евклида даже для поля 6LF(2233) с базисом, порожденным трехчленом, чуть быстрее почти инверсного алгоритма на Pentium III (800 MHz), и лишь на SPARC (500 MHz) чуть медленнее. Последнее обстоятельство объясняется [109] тем, что удобная для быстрого вычисления степени многочлена в расширенном алгоритме ассемблерная команда Pentium III для нахождения наибольшего значащего бита в машинном слове на процессоре SPARC заменена командой, которая сканирует биты не слева, а справа. В [109] также отмечается, что модификации для деления бинарных вариантов алгоритма работают медленнее, так как длина массива для хранения многочлена Ь(Х) сразу предполагается большой, а не малой, но растущей, как раньше.
4.6. Асимптотически быстрые алгоритмы
4.6.1.	Быстрое умножение чисел и многочленов
Первым придумал быстрый алгоритм умножения в 1962 г. А. А. Кара-цуба [44]. Его идея о об использовании трех вместо четырех умножений
4.6. Асимптотически быстрые алгоритмы
193
при умножении полиномов степени 1 пояснена нами ранее (см. с. 162). Рассмотрим вопрос о сложности умножения более подробно. Начнем с умножения многочленов.
Лемма 4.6.1. Умножение двух многочленов степеней меньших 2п можно свести к умножению трех пар многочленов степеней меньших п и сложению четырех пар многочленов степеней меньших п и вычитанию двух пар многочленов степеней меньших 2п с помощью тождества
(f\Xn 4- /о) (91Хп + 9о) =
— fi9iX2n -к ((/i 4- /о)(<71 4-<7о) “ fi9i — /о9о)Хп 4- /о<7о-
Обозначим М(п) наименьшее количество операций сложения, вычитания и умножения (выполняемых над коэффициентами многочленов и промежуточными числовыми результатами), требующихся для перемножения двух многочленов степеней меньших п.
Лемма 4.6.2. Справедливы неравенства
М(п) < 2М
п
2
4- 2п - 4.
Доказательство. Применим равенство
= figiX2[-n/2i + ((/i + fo)(gi + go) — figi - /одо)х^2^ + fogo, где степени многочленов /} и pi меньше fn/2], а степени многочленов /о и g$ меньше |_n/2J и заметим, что для вычисления произведений /о«7о требуется не более М(\п/2'\) 4- М([п/2_|) операций, для вычисления сумм /1 4- /о, 9\ + 9о, fi9i 4- /q9o нужно не более 2[n/2j + 2|_n/2j - 1 операций (так как число операций равно наименьшему из количеств ненулевых коэффициентов у суммируемых многочленов), для вычисления произведения (/i + /о)(<71 + <7о) используется не более М(\п/2'\) операций, для вычисления разности
(/1 + /о)(51 + 9о) - /151 - /о5о
достаточна п - 1 операция, так как
(/1 + /o)(9i + 9q) ~ /191 ~ /о9о = /i9q + /o9i ,
значит степень этого многочлена равна [n/2j 4- \п/^\ ~ = п - 2, сложение многочленов /о<7о и /^{Х2^2^ выполняется «бесплатно», так как они не имеют подобных членов, причем в их сумме отсутствует член вида X2^z/2J'd, поэтому для сложения многочленов /о*7о + /igiX2^2^ и (/i^o 4-	достаточно п - 2 операции. В итоге требуется дополнительно 4|_n/2j 4- 2п - 4 операции.	
194 Глава 4. Арифметика GF(2n) в полиномиальном базисе
Теорема 4.6.1. При 2k\n справедливо неравенство
/ х 1- (( п \ 8п \
М(п)^зЧ [М^] + y-2j - 8п + 2, а при любом п — неравенство
М(п) < yn10fo3.
Доказательство. Пусть 2km = п. Тогда неравенство
М(п) 3k (M(m) + 8m - 2) - 8п + 2
доказывается индукцией по к. База (к = 1) доказана в лемме 4.6.2. Шаг индукции обосновывается тем же неравенством.
Выберем к так, чтобы 2к < п 2Л+1. Тогда, если 3 • 21’-1 < п, то
/ п\ 1082 3 3S
М(п) M(lk+i) < З*-1 (М(4) + 30)	З*-1 -55 < 55- ( - )	< ynlog23.
Если же п 3 • 2А;'1, то
М(п) М(3 • 2*-1) < З*-1 (М(3) + 22)	3*:-1 • 35 уn10fo 3.
Перейдем теперь к умножению чисел. Обозначим М(п) наименьшее количество операций сложения, вычитания и умножения, выполняемых над числами, меньшими а, требующихся для перемножения двух n-значных чисел, записанных в позиционной системе счисления по основанию а. Это основание считаем произвольным и не упоминаем далее.  Лемма 4.6.3. Справедливы неравенства
М(2п) < ЗМ(п) + 19п, М(2п + 1)	2М(n + 1) + М(п) + 17п + 10.
Доказательство. Применим тождества
(/1&Гп/21+/о)(51ЬГп/21+5о) =
=	Ъ2™ + (/1З1 + /оЗо _ (/1 ~ /о)(<71 _ <7о))^п/21 + /о<7о,
где числа /1 и д\ — [п/2J-разрядные, а числа /о и 9о соответственно Гп/21 -разрядные и заметим, что для вычисления произведений fagi и /о<7о требуется M([n/2"|) + M(|_n/2J) операций, для вычисления разностей и суммы
/о - fi, 9o~9i, fi9i + fo9n требуется не более
4.6. Асимптотически быстрые алгоритмы
195
операций, так как числа f\g\ и /оРо имеют не более чем 2 [n/2j и 2|’п/2’] разрядов соответственно, а в случае четного п нужно еще 2|_п/2] = п операций для предварительного сравнения чисел (чтобы не вычитать из меньшего большее). Заметим далее, что для вычисления произведения (Л - /о)(^1 - <7о) требуется не более М(|’п/2']) 4-1 операций (одна операция для вычисления знака у произведения), для вычисления разности
/151 + /о5о - (/1 - /о)(51 - 5о) = /15о + /о51
требуется не более 2[n/2"| + | + 2[п/2"] - 1 = 4|’п/2'| операций, сложение чисел /о*7о и Ь2^2^ осуществляется «бесплатно» (записи этих чисел просто объединяются в одну запись), а для сложения чисел 62^/21 -р fog^ и (М) 4- /о^1)^^2^ требуется не более 2п - \n/2\ 4- п 4-1 - 1 = 2п 4- |_n/2j операций (так как число /1 имеет не более 1 разряда, а младшие |_n/2j разрядов числа /о£о не участвуют в операциях). В итоге требуется дополнительно
4п - 3 4- п\ 14-
п
2
п
2
операций.
Упражнение 4.6.1. Проверьте, что обычный способ умножения многочленов дает оценку
М(п) < Ms(n) = п2 4- (n - I)2 .
Упражнение 4.6.2. Для умножения многочленов найдите наименьшее п, при котором
M(n) < Ms(ri).
Упражнение 4.6.3. Докажите, что сложение двух n-значных чисел можно выполнить за 2п - 1 операцию, вычитание из большего меньшее — за Зп - 1 операцию, вычитание с определением знака разности — за 4п - 1 операцию, а сложение п 4- m-значного числа с n-значным можно выполнить за 2п 4- тп - 1 операцию.
Упражнение 4.6.4. Докажите, что обычный способ умножения чисел дает оценку
M(n) < Ms(n) < 5п2.
Обозначим через К(п) сложность возведения п-разрядного числа в квадрат и такое же обозначение будем использовать для сложности возведения в квадрат многочлена степени п - 1.
Упражнение 4.6.5. Используя тождество ab = ((а 4- Ъ)2 - (а - 6)2)/4, докажите для случая операций с числами неравенство М(п) < 2К(п)+ 13п4-О(1), а для случая операций с многочленами — неравенство М(п) < 2К(п) -Нбп4-4. Использование этого приема не ускоряет вычисления, но позволяет экономить используемую память.
196
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Упражнение 4.6.6. Модифицируйте алгоритм Карацубы для случая возведения чисел в квадрат и покажите, что
К(2п) ЗК(п) + 16п - 2, К(2п + 1)	2К(n + 1) + К(п) + 15п + 10.
В случае операций с многочленами получается оценка
K(n)^2K^ -
п
2
+ 2п - 4.
+ 3
Таким образом, при возведении в квадрат методом Карацубы можно достичь дополнительного ускорения примерно на 10 %.
Упражнение 4.6.7. Докажите, что сложность деления с остатком многочлена степени m на многочлен степени п со старшим коэффициентом 1 оценивается как (тп — n + l)(2n + 1), а без остатка — как (тп - п)(2п + 1).
Упражнение 4.6.8. Докажите, что обычный алгоритм Евклида для многочленов степени не выше п имеет оценку сложности Е(п) < 5п2/2 + Зп/2.
Упражнение 4.6.9. Докажите, что предыдущую оценку нельзя существенно улучшить, рассмотрев вычисление НОД(Тте, где Тп — многочлены Чебышева.
Упражнение 4.6.10. Докажите, что сложность деления с остатком п-разрядного числа на тп-разрядное имеет оценку сложности С(тп-п)п, где С > 0 — константа.
Упражнение 4.6.11. Докажите, что обычный алгоритм Евклида для п-разрядных чисел имеет оценку сложности Е(п) < Сп2.
Упражнение 4.6.12. Докажите, что обычный алгоритм Евклида для многочленов степени не выше п имеет оценку сложности 5(n2 -m2)/2 + O(n), где тп — степень вычисленного НОД.
4.6.2.	Аддитивные цепочки
Назовем аддитивной цепочкой любую начинающуюся с 1 последовательность натуральных чисел ао — L ®i,..., в которой каждое число является суммой каких-то двух предыдущих чисел (или удвоением какого-то предыдущего числа). Обозначим 1(п) наименьшую длину аддитивной цепочки, заканчивающейся числом п. Под длиной цепочки во = 1, «1,..., ат понимаем число т.
Пример 4.6.1. #1, 2, 3,4, 5,6, 7,8,9,10,11,12,13,14 — аддитивная цепочка, #1,2, 3, 5,7, 14 — минимальная цепочка для 14, т. е. 1( 14) — 5.
Аддитивные цепочки можно изображать в виде ориентированного графа, в котором в вершину идут ребра от вершин aj, , если + ак (в случае, если такое представление неоднозначно, выбираем любое из них и рисуем только два ребра). Если из какой-то вершины выходит только одно ребро, то можно «склеить» эту вершину с той вершиной, в которую ведет это ребро. Так как удаление вершины с одним выходящим ребром ведет к удалению одного ребра, то выполнив процедуру «склейки», получим граф, однозначно определяющий данную цепочку, в котором из каждой вершины выходит не менее двух ребер, и длина этой цепочки будет на единицу больше разности между числом ребер в графе, и числом
4.6. Асимптотически быстрые алгоритмы
197
вершин в нем, потому что каждое ребро входит в одну вершину, а первоначально в каждую вершину, кроме одной, входили два ребра. Граф для примера 4.6.1 см. на рис. 4.6
Можно считать, что все числа в цепочке разные, просто удаляя из нее повторяющиеся числа, и располагать числа в цепочке в порядке возрастания.
Упражнение 4.6.13. Докажите, что наименьшее число операций умножения, требующихся для возведения числа (или полинома) X в степень п, равно 1(п).
Таким образом, вычисление X14 требует не 13 умножений, а только 5.
Упражнение 4.6.14. Докажите, что, если аддитивная цепочка для числа п имеет длину ш, то п С 2т.
Упражнение 4.6.15. Докажите неравенство l(n) log2 п и приведите примеры, когда оно обращается в равенство.
Обозначим А(п) = [log2 nJ уменьшенную на единицу длину двоичной записи числа n, a v(n) — сумму цифр (другими словами, число единиц) в ней.
Пример 4.6.2. # При п = 14 А( 14) = 3. # Так как 14 = (1110)2, то 1/(14) = 3.
Упражнение 4.6.16. Докажите, что и(п) можно рекуррентно определить следующим образом:
i/(l) = 1, i/(2n) = i/(n), z/(2n 4- 1) = i/(n) 4- 1,
а функцию Л(п) можно рекуррентно определить следующим образом:
А(1) - 0, А(2п) - А(2п + 1) = A(n) 4- 1.
Записывая число п в двоичной системе и используя схему Горнера, можно написать аддитивную цепочку для числа п длины А(п) 4- и(п) — 1 следующим образом:
n = 2mbm 4-... 4- £>о — (• • • (2bm 4- bm-\)2 4- ... 4- &i)2 4- Ьо>
а0 — bj^2 — 1 ? П] — 2(Xq — 2,	(z2 — 0/j I b)?2—i > П3 — 2(^2,	• • •,
&2т-1 ~ 2 0,2m-2, &2т = ^2m-l 4" &0?
где число удвоений равно т = А(п), а число прибавлений единицы равно и(п) - 1.
Такой метод построения аддитивных цепочек называется бинарным методом.
198
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Пример 4.6.3. Так как 14 = (1110)2 = 23 + 22 + 2 = ((1 • 2 + 1) • 2 + 1) • 2, то получается цепочка 1,2,3,6,7,14. Этой цепочке соответствует такой алгоритм возведения в степень:
X, X2, Х3 = Х2Х, Х6 = (Х3)2, Х7 = Х6Х, ХЫ = (Х7)2.
Для запоминания последовательности операций в случае ее многократного исполнения, можно заменить в двоичной записи показателя степени 14 = (1110)2 каждую единицу, начиная слева (со старших разрядов), кроме самой первой, на слог КУ, а каждый нуль — на букву К, тогда получим слово КУКУК, в котором буквы К означают возведение в квадрат, а буквы У — умножение на основание степени.
Теперь почти очевидна
Теорема 4.6.2. Справедливо неравенство l(n) A(n) + z/(n) - 1.
Интересно, что бинарный метод был фактически известен древним индусам, а задача о нахождении функции 1(п) появилась в одном французском журнале в 1894 г. Д. Клугом доказано, что бинарный метод оптимален при i/(n) < 4, за некоторыми исключениями, которые все описаны.
Упражнение 4.6.17. Докажите, что 1(пт)	1(п) + 1(т) (метод множителей).
Упражнение 4.6.18. Покажите, приведя примеры, что иногда метод множителей лучше, чем бинарный метод, а иногда наоборот. Покажите, что такие примеры встречаются бесконечно часто.
Экспериментально обнаружено, что при п < 1000 справедлива рекуррентная формула l(n) = min{Z(n - 1) + 1,1п} - дп, где 1Р = оо при простом р и 1п = 1р 4- 1п/р, где р — минимальный простой делитель п, а Зп — 0,1 причем единицей она бывает редко, только в 105 случаях из 1000.
В доказательстве следующей, многократно переоткрывавшейся, теоремы А. Брауэра также используется схема Горнера.
Теорема 4.6.3. При k < log2 log2 п справедливо неравенство
1(п) < ( 1 + 7 ) ]log2 п[ + 2к~1 -к+ 2.
\ К /
Доказательство. Представим п в двоичной записи:
m п = '^ai2l, i=0
где оц = 0 или 1, m = [log2n]. Разобьем набор (а^ ... ,am) не более чем на ]	[ блоков Ао,..., А$ > 5 < ]	, каждый из которых, кроме
последнего, начинается с 1, состоит из подряд идущих цифр и последняя единица в нем отстоит от первой не более чем на к - 1 позицию, а последний блок состоит ровно из к цифр (несколько подряд идущих нулей, возможно, стоящих в начале, не входят ни в один из рассматриваемых блоков). Числа, двоичными записями которых являются эти блоки,
4.6. Асимптотически быстрые алгоритмы
199
не превосходят 2k - 1 и, кроме, возможно, последнего, нечетны. Пусть эти числа суть во, • • •, o>s • Тогда п можно представить в виде
n = 2*° (2*1 ... (2ls~2 (2ls~} (2lsas 4- ns-i) 4- ^5-2) 4-... 4- Oi) + fto),
где ls + ls-i + ... 4- Iq = m 4- 1 - k. Все числа a0, • • •, a$-i содержатся в аддитивной цепочке 1, 2, 3, 5, 7,..., 2k - 1 длины 21’-1 4- 1. Поэтому для вычисления п достаточно добавить к ней последовательность
as, 2as, 4as,..., 2lsas, 2lsas 4- as_i,
2 (2 s as 4- &s-i), (2 Sas 4- n$-i), ...,
2^-i (2lsas 4- Hs-i), 2Z*_1 (2/sa5 4-4~	• ••,
A2(2/s-i(2/sa54-a5-i) 4-a5-2),
2 1 (... 2 s 2 (2 s 1 (2 Sas 4- h§-i) 4- H5-2) 4- • • • 4- fli) 4- a>o, • • • , 21q (2li (... 2ls2 (2ls~l (2lsas 4- ns-i) + ^5-2) 4- ... 4- &i) 4- Ho)» длина которой равна
ls 4" /5-1 4-... + Zq 4- 5 4- 1 — ш4"2 4“5 - k.
Поэтому
Z(ti) 2	4-14- тп 4-2 4-5 — k тп 4-2 4-
m 4- 1 k
,k~l - k.
Можно считать, что п 2т, тогда т 4-1 = ]log2 п[ и
Z(n) <] log2 п[ (1 + у ) 4- 2А:~1 - к + 2.
\ kJ
Следствие 4.6.1. Справедливо равенство
lim —-— = 1.
п~+(Х) log2 п
Доказательство. Применяем доказанную теорему при
fc = X(A(n))-2A(A(A(n))).	
Упражнение 4.6.19. Докажите следствие из теоремы Брауэра с оценкой
/	1 С log2 log2 log2 п \
log2 П[ 1 + --j---4- —------j----,
\ log2 log2 п (log2 log2 ny J
где С > 0 — некоторая константа.
Аддитивная цепочка называется линейной, если в ее графе все вершины лежат на одной ориентированной цепи. Другими словами, если каждый ее элемент равен сумме предыдущего элемента и какого-то еще. Можно
200
Глава 4. Арифметика GF(2n) в полиномиальном базисе
ослабить требование линейности, допустив его нарушение для элементов, вычисляемых путем удвоения. Такие цепочки все равно будем называть линейными. Длина кратчайшей линейной цепочки обозначается Z*(n). В предыдущей теореме фактически дана оценка как раз этой величины.
Справедлива еще одна теорема Альфреда Брауэра:
Теорема 4.6.4. Имеет место неравенство
1(2п - 1) n + Z*(n) - 1.
Для ее доказательства надо взять линейную цепочку 1 = а^, ..., аг = п, г =	и построить цепочку для 2п -1, состоящую из чисел 2а‘ -1, в промежутки между которыми вставлены числа 2г (2а* - 1), i = 1,...,	- а,.
Упражнение 4.6.20. Проведите подробное доказательство.
Гипотеза Шольца о том, что 1(2п - 1) п + 1(п) - 1 до сих пор не доказана. Также не доказано неравенство 1(п) А(п) 4- A(i/(n)), хотя А. Шенхаге в 1977 г. доказал, что
1{п) А(п) 4- А(р(п)) - 0(1).
Из этого неравенства и теоремы Брауэра вытекает, что Ц1п - 1) - п асимптотически равно А(п).
Если нужно быстро вычислить сразу несколько степеней, то можно построить дерево степеней таким образом. Корнем дерева является 1, единственная вершина первого уровня, из нее выходит ребро в вершину 2 второго уровня, и когда дерево уже построено до /с-го уровня, то выбрав любое число п из этого уровня, и выписав все числа а\ = 1, П2, • • • , (Ц = п лежащие на пути из корня до вершины п, соединяем эту вершину с вершинами п + а\,..., п 4- , которые помещаем на (к 4- 1)-м уровне. В процессе построения повторно одинаковые вершины в дерево, естественно, не заносятся.
Упражнение 4.6.21. Покажите, приведя примеры, что метод дерева степеней бывает лучше метода множителей и бинарного метода.
Функция 1(п) растет медленно, поэтому интересно рассмотреть обратную функцию с(г), определяемую как min{n : Z(n) = г}. Легко видеть, что с(г) < 2Г. Из теоремы Брауэра следует, что А(с(г)) ~ г. Экспериментально проверено, что при 10 г 27 имеет место аппроксимация 2г^1-1^1о82Г^. Таблица первых 15 значений с(г) выглядит следующим образом:
2, 3, 5, 7, 11, 19, 29, 47, 71, 127, 191, 379, 607, 1 087,1 903.
Интересно, что 1903 — первое составное число в ряду ее значений. Из этой таблицы следует, например, что для п = (213 + 1)/3 справедливо равенство 1(п) = 15, в то время как l(nm) = Z(213 4- 1)) = 14 < Z(n).
Хотя поначалу она растет примерно со скоростью чисел Фибоначчи, но потом скорость ее роста согласно теореме Брауэра возрастает.
4.6. Асимптотически быстрые алгоритмы
201
Функцию 1(п) естественно обобщить, обозначив l(rh,... , nk) длину кратчайшей цепочки, содержащей все числа . , щ.
Р. Беллман обобщил понятие аддитивной цепочки, определив векторную аддитивную цепочку А;-мерных векторов по аналогии с обычной аддитивной цепочкой как последовательность векторов, начинающуюся с к базисных единичных векторов, в которой каждый вектор равен сумме двух предыдущих векторов. Длина кратчайшей цепочки, содержащей вектор (ni,..., п&) (базисные векторы в ней не учитываются) обозначается	, пт]); это число очевидно равно наименьшему количеству
умножений, необходимому для вычисления одночлена Х™х ... Х^к. Естественно предполагать далее, что все пг 0.
Легко обобщить бинарный метод и 2^’-арный метод Брауэра, доказав следующую теорему Э. Страуса'.
Теорема 4.6.5. Для любого вектора (пь ... , nm)
Z([n15..., пк]) < 2A(max{nJ) + 2к - к - 1, и при любом t
(к\ 1 + - ) + 2(fc.
Определенный ранее граф можно ввести и для векторных цепочек, только этот граф будет иметь не один вход (вершину, в которую не входят никакие ребра), а к входов, но, как и ранее, один выход (вершину, из которой не выходит ни одно ребро). Как и ранее, в этом графе можно вершины, из которых выходит только одно ребро, склеить со своими «потомками», при этом разность между числом ребер и числом вершин не меняется. Поэтому можно считать, что в полученном графе из каждой вершины (кроме выхода) выходит хотя бы два ребра (а входить может и более двух ребер), по этому графу исходная цепочка восстанавливается однозначно, причем ее длина будет на к больше разности между числом ребер в графе, и числом вершин в нем, потому что каждое ребро входит в одну вершину, а первоначально в каждую вершину, кроме к входов, входили два ребра.
По индукции легко доказать следующую лемму Н. Пиппенджера [155]:
Лемма 4.6.4. i-я компонента вектора, вычисляемого в данной вершине, равна числу всех ориентированных путей из i -го входа в эту вершину.
Если в графе изменить ориентацию ребер на противоположную, то получится двойственный граф с одним входом и к выходами. Из леммы Пиппенджера легко следует, что двойственный граф определяет обычную аддитивную цепочку, реализующую все компоненты ni,... ,пк. Эту цепочку назовем двойственной к исходной векторной цепочке. Длина этой цепочки с одним входом на единицу больше разности между числом вершин и ребер в графе, поэтому длина двойственной цепочки на 1 меньше длины векторной цепочки. Очевидно, что, если для двойственной цепочки построить двойственную цепочку, то получится исходная цепочка.
202 Глава 4. Арифметика GF(2n) в полиномиальном базисе
Отсюда вытекает следующая теорема двойственности X. Оливоса'.
Теорема 4.6.6. Справедливо равенство
Z([ni,..., пк]) = /(П1,..., пк) 4- к - 1.
Так как очевидно, что
1(п\т\ + ... + пктк) 1(т},тк) + J([nb ..., тг*]),
то из теоремы 4.6.6 вытекает лемма Оливоса обобщающая метод множителей, в основе которого лежит использование неравенства
l(nm) Z(n) 4- 1(т).
Лемма 4.6.5. Справедливо неравенство
1(пхтх + ... 4- пктк) Z(mi,..., тк) 4- Z(nb ..., пк) 4- к - 1.
Из теорем Страуса и Оливоса вытекает следующая теорема Э. Яо:
Теорема 4.6.7. При пк —> оо
Х(пк) + кХ(пк) О(Х(пк)(к + А(А(А(п*)))))
Пк)" Х(Х(пк)) +	(А(АЫ))2
Для доказательства нужно только в теореме Страуса выбрать
/ = A(A(nt))-2A(A(A(n*))).
Из теоремы Яо следует, что, если к = O(A(A(nj;))), то
,пк) = О(Х(пк)).
Первоначальное доказательство теоремы Яо не использовало теорему Оливоса и было более сложным. Теорема Яо была существенно усилена Пиппенждером в [155]. В [27] получено следующее уточнение теоремы Пиппенждера.
Теорема 4.6.8. Для произвольных натуральных п, пусть
/ к \
R = log2 ( пг }, п = max пг .
' i=l
Тогда
1(п\,... ,пк) + к — 1 = /([nj, . . . , 7Z*]) =
Ее доказательство мы не приводим.
4.6. Асимптотически быстрые алгоритмы
203
Упражнение 4.6.22. Для быстрого вычисления больших чисел Фибоначчи можно использовать следующий прием. Если уже вычислена пара чисел (J*, J*-!), то пару (Fk, Fk+i) находим одним сложением, а пару
(F2k,F2k^) = (F? + 2ад._ь Fk + Fit)
находим еще с помощью 6 операций и применяем бинарный метод. Докажите, что сложность вычисления Fn не превосходит С log2 п.
Упражнение 4.6.23. Покажите, что многочлен
рп{Х) = 1+^ + ... + хп-1
можно вычислить с помощью 1(п) умножений, одного вычитания и одного деления.
Упражнение 4.6.24. Покажите, что многочлен рп(Х) можно вычислить с помощью 21 (п) - 2 умножений и 1(п) сложений.
Указание. Если Xm = ХкХ3 — очередной шаг минимальной цепочки для вычисления Хп, то делаем шаг рт = ркХ3 + р3.
Упражнение 4.6.25. Покажите, как с помощью бинарного метода можно на простейшем калькуляторе с операцией , но без операции возведения в степень, приближенно вычислять функцию Ху.
Упражнение 4.6.26. Можно обобщить понятие аддитивных цепочек, добавив операцию вычитания. Докажите, что для таких цепочек Z(2n - 1) n + 1. Верно ли здесь равенство?
Эрдеш доказал, что при использовании вычитания все равно для почти всех п нижняя оценка для 1(п) имеет вид
(	1 - еп \
log2 п I 1 + --j-----) ,
\ log2 log2 n )
где еп стремится к нулю.
Иногда встречается утверждение о том, что задача вычисления последовательности 1{п) является NP полной (см., например, [22]). Однако Д. Клуг в [45] высказывается более осторожно. Утверждается NP-полнота задачи построения не кратчайшей аддитивной цепочки, а кратчайшей векторной аддитивной цепочки, или, что равносильно, задачи вычисления Z(ni,..., rik) — сложности кратчайшей аддитивной цепочки, содержащей произвольный данный набор чисел ..., п^.. Но в любом случае задача построения кратчайшей цепочки весьма сложна, поэтому для ее приближенного решения изобретаются различные эвристики. В указанном выше методе Брауэра установлена связь между Z(n) и числом различных отрезков длины к в двоичной записи числа п. Чем меньше число таких отрезков, тем меньше Z(n). Другими словами, чем менее случайной выглядит двоичная запись п, тем меньше 1(п). Для сжатия «неслучайных» последовательностей известно много различных архиваторов. В [186] предложен алгоритм построения близких к кратчайшим аддитивных цепочек, основанный на использовании сжатия методом Лемпеля—Зива.
204 Глава 4. Арифметика GF(2n) в полиномиальном базисе
4.6.3. Приложения аддитивных цепочек
Аддитивные цепочки можно использовать для возведения в данную степень в конечных полях и в группах эллиптических кривых. Возведение в квадрат в нормальных базисах конечных полей имеет очень малую сложность, а в стандартных базисах с минимальными многочленами, состоящими из трех или пяти одночленов, хотя и несколько большую, но все же незначительную по сравнении с общим умножением. Для эллиптических кривых операция удвоения точки сводится только к операциям сложения и возведения в квадрат в соответствующем поле GF(2r), и поэтому мала по сложности в сравнении со сложением различных точек кривой, так при его выполнении кроме нескольких общих умножений выполняется и существенно более сложная операция деления в конечном поле. Значит, иногда бывает естественно при оценке сложности возведения в степень учитывать только число нетривиальных умножений. В этом случае определим вес операции удвоения в аддитивной цепочке равным нулю.
Аддитивные цепочки с нулевым весом удвоений. Из теорем Брауэра вытекает, что
К \	. <ХЛ(П)Л(Л(А(™))))
" А(А(п))	(А(А(п)))2
и Z(2n - 1)	Z(n), причем линейность цепочки не требуется, так как
для любой цепочки 1 = во, •••, ar = n, г = l(n), и построить цепочку для 2П - 1, состоящую из чисел 2а* - 1, в промежутки между которыми вставлены операции умножения на степени двойки, которые сводятся к удвоениям и поэтому не учитываются, и обычные операции сложения согласно формулам
2а* _ 1 — 2flj(2ai — 1) + 2ttj — 1.
Заметим, что алгоритм Яо совместного вычисления нескольких степеней для рассматриваемого выбора весов базисных операций никакой выгоды не дает (он экономит только возведения в квадрат).
Применяя теорему Ферма, выводим из последней оценки асимптотическую оценку сложности инвертирования в поле GF(2r)
Т(г) ~ А(г)М(г),
где М(г) — сложность умножения в этом поле, < — знак асимптотического неравенства. Действительно, для инвертирования согласно теореме Ферма можно воспользоваться формулой Х~х — Х2П~2 — (X2” ~1)2. Поэтому число используемых для инвертирования умножений оценивается как
"<1Ч„ П<А(„ IU	> О(Л(»-1)Л(А(Л(»-!))})
1(2 -1)^1(„-1)^А(п-1)+л(а(п_1)) +---------------(а(а(„_,№---------
4.6. Асимптотически быстрые алгоритмы
205
Например, при г < 127 имеем оценку J(r) < 9М(г), при г 191 имеем оценку 1(г) < ЮТИ (г), при г 379 имеем оценку Г(г) < 117И(г), при г С 607 имеем оценку 1(г) < 127И(г), при г < 1087 имеем оценку 1(г) < 13М(г) и т.д. Напомним, что эти оценки применимы только в случае использования нормальных базисов.
В литературе (см., например, [85,145]) часто указывается оценка для числа умножений, необходимых для инвертирования в поле GF(2n), в виде A(n- l)+i/(n-1) -1. Эта оценка достигается при использовании метода возведения в степень, основанного на следующих рекуррентных формулах:
Х2^1 = (Х2‘->)2	х2^1-' = (х^-^х2^1.
На самом деле эта оценка получается из приведенной выше оценки Брауэра
Z(2n-1 - 1) Г(п- 1), если в качестве аддитивной цепочки использовать цепочку, получаемую обычным бинарным методом. Если же использовать вместо него, как выше, асимптотически наилучший метод Брауэра, то оценка Ito-Tsujii улучшается асимптотически вплоть до двух раз. Например, при п — 191 оценка Ito-Tsujii имеет вид А( 190) + ^(190) - 1 = 7 + 6 - 1 = 12, а на самом деле выше была указана оценка 10.
Если мы хотим построить схему для инвертирования из схем для умножения указанным выше методом, то представляет интерес задача минимизации глубины такой схемы. Минимальная глубина, очевидно, будет достигаться, когда глубина соответствующей аддитивной цепочки для 2П-1 - 1 будет минимальной. Игнорируя, как и выше, элементы удвоения, можно, повторяя доказательство теоремы Брауэра, получить, что глубина аддитивной цепочки для 2П-1 - 1 не превосходит глубины произвольной линейной цепочки для числа п - 1.
Упражнение 4.6.27. Докажите это утверждение.
Минимальная глубина цепочки для п равна |’log2 п\.
Упражнение 4.6.28. Докажите по индукции, что существует цепочка для n / 2к глубины A(n) + 1 и сложности A(n) + v(n) - 1.
Указание. Используйте модификацию бинарного метода, не применяющую схему Горнера.
Например, для п = 28 цепочкой минимальной сложности 6 является 1,2, 3, 6, 9, 18, 27 но цепочка большей сложности 1,2, 3, 4, 8, 11, 16, 27 имеет меньшую глубину 5. По ней можно построить цепочку для вычисления 227 - 1 , в которой все неудваивающие шаги имеют вид
1, 22 - 1, 23 - 1, 24 - 1, 28 — 1, 211 - 1, 216 - 1, 227 - 1
и которая также имеет глубину 5, если игнорировать удваивающие шаги.
Все предыдущие результаты переносятся и на случай произвольного поля. В случае поля GF(pn), р > 2, согласно Ito-Tsujii для инвертиро-
206 Глава 4. Арифметика GF(2n) в полиномиальном базисе
вания можно вычислить Y =	, заметить, что Y 6 GF(p) так
как Yp~} = ХрП~{ = 1, и применить формулу
справедливость которой проверяется путем сравнения степеней в обеих частях равенства
1 p(pn-i  J) рП  1 р - 1 р - 1
Вычисление К-1 и умножение на него при малых р делается быстро, так как Y 6 GF(p). Остается вычислить X^n	Предполагая, что
возведение в степень р делается быстро (это заведомо так при использовании нормальных базисов), и игнорируя эти операции, можно перенести доказательство теоремы Брауэра на это случай и получить оценку для числа умножений при вычислении Х^п	в том же виде l(n - 1),
что и в случае р = 2.
Упражнение 4.6.29. Убедитесь в этом.
Для вычисления Y = Х(^Х^П '-^/(р-^у нужна еще одна операция умножения, но более простая, чем обычное умножение, так как в ней надо вычислить только одну компоненту произведения, ведь Y Е GF(p).
Упражнение 4.6.30. Докажите, что сложность возведения в произвольную степень m многочлена степени п над полем GF(p) по модулю данного малочлена оценивается сверху как
О (М(GF(p))) (М(п) —f™------и рп log т
\ logp logp т
где M(GF(q)) — сложность умножения в поле GF(q),a М(п) — число операций в этом поле, требующееся для умножения многочленов степени п.
Указание. В этих условиях модулярное возведение в степень р выполняется со сложностью O(pnM(GF(p))), так как простое возведение в степень р делается бесплатно, а приведение многочлена степени рп по модулю данного малочлена выполняется с линейной сложностью.
4.6.4.	Аддитивные цепочки с вычитаниями
В отличие от конечных полей, в рассматриваемых далее группах эллиптических кривых операция обращения делается почти бесплатно, значит вычитание делается с той же сложностью, что и сложение. Поэтому при вычислении кратных данной точки кривой имеет смысл использовать цепочки с вычитанием. Так, вычисление кратного (2к - 1)Р данной точки Р делается примерно в k раз быстрее, чем без использования вычитания. Поэтому при вычислении кратного пР имеет смысл представить его в виде знакопеременной суммы 2П1 - 2П2 + 2Пз - ..., если число слагаемых относительно мало. Для нахождения представления в виде знакопеременной суммы нужно множество единичных битов двоичной
4.6. Асимптотически быстрые алгоритмы
207
записи числа п разбить на кластеры рядом стоящих единиц и применить тождество
к-1
2‘ = 2к - 1.
г-0
Число слагаемых в этой сумме иногда можно уменьшить, отказавшись от требования знакопеременности. Минимизация этого числа равносильна известной задаче о представлении числа в двоичной системе с использованием отрицательных битов, впервые рассмотренной в пятидесятые годы Бутом с целью уменьшения сложности умножения многоразрядных битов. Это единственное минимальное представление можно построить для любого числа п рекурсивно по формулам
&2п = Ct4n_|_j = Ctn01, Ot4n-jOl,
где «о пусто и жирные единицы означают отрицательные биты, при этом запись an не содержит ни старших нулей, ни соседних ненулевых битов.
Упражнение 4.6.31. Докажите это утверждение.
Представление числа в виде суммы степеней двойки, взятыми как со знаками плюс, так и со знаками минус, равносильно его представлению в двоичной системе с использованием отрицательных цифр. Такие представления можно рассматривать и в системе по любому натуральному основанию, не меньшему двух. Если основание равно Ь, то любое целое число можно записать с использованием цифр, по модулю не больших Ь/2, причем для нечетных b такое представление единственно.
Упражнение 4.6.32. Докажите это.
Системы с указанным выбором цифр называются уравновешенными. Для двоичной системы уравновешенной системы указанный выше метод позволяет всегда найти запись (уравновешенный код), в которой не менее половины цифр будут нулями. Но такая запись тоже может быть определена неоднозначно. Укажем еще несколько алгоритмов для построения таких кодов.
Пусть число представлено в виде двоичного кода am_iam_2... fliflo-Уравновешенный код вычисляется следующим алгоритмом:
Присвоить i = 0, flag = 0
Пока i < тп
если flag — 0 и аг = 1, то присвоить сг — -1, flag = 1,
если аг = 0, то присвоить сг = 0,
если flag — 1 и аг = 0, то присвоить сг = 1, flag = 0,
если аг = 1 то присвоить сг = 0
присвоить i значение i 4- 1
если flag = 1, то присвоить сг — 1.
208
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Можно использовать и смешанное представление, когда уравновешенным кодом замещаются лишь блоки единичных битов и следующий за ними нулевой бит.
Пример 4.6.4. Десятичное число 10045ю представляется двоичным кодом
100111001111012,
который можно представить чистым уравновешенным кодом 1 - 10100 - 11000 -11-1 или смешанным уравновешенным кодом 10100 - 101000 - 101.
Если использовать систему счисления по основанию 4, то можно записанное в обычном двоичном коде число a = (am-iam-2... <400)2 записать в уравновешенном четверичном коде с помощью равенств
т-1	т-1
a = 2a - a =	а^+1 ” 52 a‘2‘+l =
г=0	г=0
m	|m/2J
= ^^(*4-1 —	(a2i-1 4"	~ 2<l2i+l)2 ,
i=0	i=Q
й-i = 0, сьт = 6Zm-|-i = 0.
Полагая bi = ац-\ + Qu — 2<i2i+i, 2 = 0,..., |_т/2], имеем
Lm/2J
a =	“2 bi 2-
i=0
Очевидно, этот код можно рассматривать также как уравновешенный двоичный, в котором число ненулевых цифр не превосходит |_m/2j + 1. Преимущество этого кода Бута в том, что его цифры вычисляются параллельно по трем соседним битам, и это вычисление легко организовать логической схемой глубины 2 и сложности 3([m/2j + 1). Действительно, каждая из цифр вычисляется схемой с тремя входами X, У, Z и тремя выходами U, V, W по формулам X + Y-2Z = U + 2V- 4W, где U = X ф У, V = XYW = Z, где цифры 0,1, 2 записываются в виде 000,001, 010, а цифры -1,-2 записываются в виде 111, ПО. Чтобы перейти к записи по основанию два, достаточно в каждой цифре откинуть правый бит, и если он нулевой, то добавить единицу к удвоенному номеру этой цифры, чтобы получить номер соответствующей цифры в двоичной записи; если же он единичный, то номер цифры просто удваивается. При этом запись 11 будет означать -1, а записи 00, 01 соответственно 0,1.
Указанные приемы можно применять и в случае конечных полей, если надо выполнять возведение в степень примитивного элемента поля, при этом нужно заранее вычислить его обратный элемент, и тогда операцию вычитания можно заменить на сложение. Эти приемы позволяют ускорять возведение в степень в условиях сильно ограниченной памяти.
4.6. Асимптотически быстрые алгоритмы
209
Если память не так ограничена, большего ускорения можно добиться, применяя 2fc-apHbift метод Брауэра, в котором вначале вычисляются и запоминаются 2k - 1 элементов цепочки. Из доказательства теоремы Брауэра видно, что на самом деле надо запоминать только нечетные степени, что вдвое экономит память и немного ускоряет вычисления. Но если предварительно показатель степени записать в уравновешенной системе, и воспользоваться, как и выше, возможностью вычитания, то память уменьшается еще вдвое.
4.6.5.	Алгоритмы возведения в степень с фиксированной базой
При оптимизации алгоритмов возведения в степень в случае их многократного применения в одной программе полезно выделять два несколько различающихся случая: когда база д возведения в степень фиксирована, а показатель п случаен, и когда база случайна, а показатель фиксирован. Первый случай, например, имеет место в алгоритме генерации общего секретного ключа Диффи—Хеллмана, а второй — в алгоритме RSA или Эль-Гамаля.
В первом случае можно ускорить возведение в степень, заранее вычислив и сохранив в памяти некоторые фиксированные степени {дт\ ..., дтк}. Тогда, если 0 < пг < /г, то для вычисления a = дп при п =	4- ... 4- пктк в [98] предложен следующий алгоритм, требу-
ющий к 4- h - 2 операций:
Ъ — 1 j CL — 1
for d — h to 1 by - 1
{for i = l to к by l{if {щ = d}b b * gmi}; a<-a*b} return a.
Для обоснования алгоритма положим Q = fj gmi, тогда после г-го г, ni—d
шага цикла имеем b = ск ... Ch-i+i, a = clhclhZ.\ • • • и окончательно h
cl — П cd - На самом деле этот алгоритм эквивалентен алгоритму Яо, а так-d=\
же равносилен применению леммы Оливоса, которая дает неравенство
Цп{тх + ... пктк) < Z(m1? ...,тк) + 1(п{,..., пк) 4- к - 1 < <	..., тк) 4- 1(1, 2 ..., h) 4- к - 1 <
< 1(тП],..., тк) 4- к 4- h - 2.
Конечно, это неравенство можно использовать и без предположения о предварительном вычислении степеней (т^,... , тк), например, при выборе = 2гГЛ<п)/А:1 и h =	- 1 фактически получаем 2^п^-
арный метод. Очевидную оценку 1(п\,..., nk) < h - 1 иногда можно улучшить, используя некоторую комбинацию метода степенного дерева
210
Глава 4. Арифметика GF(2n) в полиномиальном базисе
с методом множителей, фактически совпадающую с методом, известным как метод Евклида. Сначала упорядочим массив (ni,..., п^), удалив из него повторяющиеся элементы, и так делаем после каждого шага. Каждый шаг алгоритма приводит к неравенству
Цпь..., 71*_1, та*) Ип1, •• • > nk-i,rk) + l(qk) + 1,
где rik — nk-\Qk + Гк- Алгоритм заканчивает работу, когда система (П1,..., Пк-i, Пк) превратится в одно число d, равное НОД этой системы. Алгоритм можно усложнить, выбирая на каждом шаге вместо деления Пк на Пк-i такое деление щ на пг, при котором Пк = nrqk + гк, где l(qk) < l(qk)) или l(q'_k) = /(?*)), rk € {nb..., nk-i}. Ясно, что применять это алгоритм имеет смысл только при достаточно больших к, так как из теоремы Яо следует, что при к — O(A(A(rik))) получается и без того хорошая оценка Z(ni,..., пк) = О(А(п^)).
Приведем пример применения указанного алгоритма с использованием предварительно вычисленной таблицы степеней. Пусть необходимо вычислить любую из степеней дп фиксированного элемента при п < 21024 (задача возведения в степени такой величины возникает в протоколе Диффи—Хеллмана при использовании поля GT(21024)). Выберем к = [1024/7J = 146, h = 27 - 1. Тогда при использовании заранее вычисленной таблицы степеней
gm',...,gm™,	=	г = 1,...,147,
вычисление произвольной степени дп указанным выше методом требует не более &+Л-2 = 272 операции умножения. Так как длина записи произвольного элемента поля GF(21024) равна 128 байт, то объем используемой таблицы равен 19 К и Она вполне умещается в оперативной памяти. Поэтому операция извлечения элемента из этой таблицы выполняется быстро и временем ее выполнения можно пренебречь в сравнении с временем умножения элементов поля. Для сравнения заметим, что алгоритм возведения в степень порядка 21000, не использующий предварительно вычисленной таблицы, использует не менее 1000 операций умножения в лучшем случае.
В общем случае можно в качестве показателей степеней {mi,..., тк} взять последовательность
i = 0,..., k-l, m=|’log2n'|, к=------------------------1-0(1)
log2 m - 2 log2 log2 m
и выбрать h = m/(log2m)2 + 0(1). Тогда оценка сложности имеет вид к + h — 2 и асимптотически равна m/log2 m, как и в алгоритме Брауэра.
В [98] рассмотрено много разных вариантов выбора (mi,..., тк), в том числе вариант i — 1,... , к}, означающий использование уравновешенной fr-ичной системы счисления. Этот вариант удобен тем, что уменьшает величину h примерно в два раза. Например, для вычисления
4.6. Асимптотически быстрые алгоритмы
211
512-битной экспоненты можно взять b = 45, тогда h = [(b - 1)/2] = 22, так как используются «цифры» пг- Е [0, h] и формула
п = njimj +... 4-nJ±mJ, rrii — bl, i = 1,... ,k, k = [log6 n~| < 94,
но реально слагаемые с нулевыми цифрами отсутствуют, а элементы g±rTli заранее вычисляются и запоминаются. Число выполняемых при возведении в степень операций при этом не больше k + h - 2 = 118, а в среднем меньше, при этом запоминаются 2к = 188 элементов.
Если нет ограничения на объем используемой памяти, то можно максимально уменьшить число умножений, выбрав h — 1, т. е. используя в качестве {mJ набор а -bl, a < b, г < s = [log& ri], тогда все пг- просто равны 1 или 0, причем число единиц не не более к = $, значит число умножений не более s - 1, но запоминать требуется (b - l)s элементов.
Упражнение 4.6.33. Докажите, что в среднем число умножений в этом варианте алгоритма равно s(b - 1)/6.
При 512-битном п, выбрав b = 256, получим алгоритм, использующий 63 умножения и требующий запоминания 16320 элементов (т. е. более мегабайта памяти). Увеличивать b с целью уменьшить число умножений здесь уже неразумно.
Можно уменьшить используемую память, выбрав при той же базе b число h = 2, «цифры» Е 0, 1,2, а в качестве {mJ взять набор d • Ьг, i < з, где d любое число, кратное 22;, но не кратное 22j+1, j = 0,1,2,.... Число умножений в худшем случае увеличится до з, но память уменьшится в 1/2 4- 1/8 4- 1/32 4-... = 2/3 раза. Продолжая далее, можно уменьшить b в два раза, выбрать h = 3, в качестве «цифр» использовать 0, 1, 2, 3 а в качестве {mJ взять набор d-bl ,i<s, где d любое число, разложение которого на множители имеет вид 2а3^г, (г, 6) = 1, а + /3 = 2j, j = 0, 1,.... Тогда число умножений увеличится в худшем случае достигнет з 4- 1, а запоминать потребуется СЬз элементов, где
7 f 9
36 \8 + з)
245
777 = 0,284.
864
Упражнение 4.6.34. Докажите это.
В [98] также доказано, что, если число запоминаемых элементов ограничить (log log n)k, то число используемых умножений будет не больше
(110(1)4 log2n
\ к J log2 log2 п ’
В [141] предложен еще один, во многих случаях более удобный, алгоритм возведения в степень для фиксированного основания, также
212
Глава 4. Арифметика GF(2n) в полиномиальном базисе
использующий предварительные вычисления, результаты которых заносятся в память перед вычислением. Впрочем, этот алгоритм содержится как частный случай в известном алгоритме Пиппенджера [155]. Заключается алгоритм [141] в следующем: показатель степени a < 2П записывается 2^-ичной системе
a = ^Ail.ki,
i—0
где А{ имеет двоичную запись (а^+к-х • • • aikh, s = \n/k], степени базы д, записываемые далее для удобства в аддитивной нотации, заранее вычисляются в порядке 2кгд, 0 i < $, потом для каждого двоичного вектора u — (us-i ... 1/0)2, 0 u < 2s вычисляются в порядке возрастания чисел Us-i + . . . 4- Uq суммы
s-1
Pu —	^<2 д,
г=0
а потом вычисляется степень а • д по формуле
к-1	Z 5-1	к	fc-1
а • 9 = $2 27 ( 52 а<*+>2*’ • 9 ) = 52 23Pli> j=Q	' i=Q	'	j=Q
где Ij =	• • • ak+jQj)2- Преимущество этой формулы перед стан-
дартной формулой
J=5-1	'к-1	\
а-9 = 52 2*7(52fl>*+’2’'Л j=Q	' i=Q	'
в том, что при условии предварительного вычисления внутренних сумм упрощается вычисление степени а • д за счет уменьшения числа возведений в квадрат (удвоений в аддитивной нотации), которых становится только к вместо (s - 1)к во второй формуле. Однако само предварительное вычисление становится более сложным и требует не менее п - к, но не более п операций возведения в квадрат и 2s - s - 1 операций умножения. При выборе s — log2 n - 2 log2 Iog2 n получается такая же асимптотическая оценка, что и в методе Брауэра. Так же как и метод Брауэра, этот алгоритм использует схему Горнера, но с основанием 2 вместо 2к, но при этом вместо 2к -ичных цифр
к-\
ajk+i2 ->
i=G
определяемых блоками битов длины к, номера m которых удовлетворяют условию [m/k\ = j (частное от деления номера т на к равно j) и ока
4.6. Асимптотически быстрые алгоритмы
213
зываются соседними, он использует «цифры» вида
s-l
2=0
определяемые блоками битов длины s, номера которых при делении на к дают одинаковый остаток j.
В случае фиксированного основания д результаты предварительных вычислений можно загрузить в память машины в начале работы программы, как и в алгоритме [98]. Для этого требуется объем памяти О(25п), если предполагать что для записи любой степени элемента д достаточно п бит; в случае применения алгоритма к конечным полям или группам это естественное предположение. Заметим, что в предыдущем алгоритме при том же выборе параметра к памяти требовалось меньше, а именно O(sri). Зато время работы уменьшается, и становится равным по порядку к = n/s против 2к 4- s = 2к + n/к. Но при подходящем выборе параметров оба алгоритма имеют время работы O(n/logn), но памяти последний алгоритм в этом случае расходует меньше, а именно при s — log2 n — 2 log2 log2 n у этого алгоритма требуемый объем памяти равен O(2sn) = O(n2/log2 n). Если объем используемой памяти ограничен величиной logfc п (считаем, что на запоминание одного элемента расходуется единица памяти), то время работы будет равно O(n/(k log log п)), что теоретически меньше при тех же ограничениях, чем в алгоритме [98].
4.6.6.	Ускорение проверки электронной подписи
Во многих алгоритмах электронной подписи для ее верификации надо вычислять либо произведение двух экспонент gafb в случае полей, либо сумму aP + bQ в случае эллиптических кривых. Это вычисление можно ускорить, применяя так называемый «трюк Шамира». На самом деле он является просто частным случаем описанного в разд. 4.6.2 метода Страуса вычисления одночлена нескольких переменных (в данном случае — двух).
Заключается он в следующем. Числа а, Ъ < 2П записываются в системе счисления по основанию 2к. Можно воспользоваться и уравновешенными кодами, что мы далее и предполагаем в случае использования эллиптических кривых. Вычисляем заранее все суммы вида iP ± jQ, i,j < 2fc-1. После этого просто вычисляем по схеме Горнера сумму
fa/Л]
aP + bQ =	± biQ)2ki,
i—Qi
умножая каждый раз полученный результат на 2к и прибавляя или вычитая выбранное с подходящим знаком слагаемое	Уже вычисленное
заранее. Алгоритм выполняет n/к сложений и п удвоений. По сравнению с раздельным вычислением число сложений уменьшается в два раза. Алгоритм может быть ускорен теми же методами, что и алгоритмы
214
Глава 4. Арифметика GF(2n) в полиномиальном базисе
вычисления кратного одной точки, но на практике это бесполезно, так как в алгоритмах цифровой подписи из двух точек Р, Q заранее известна только одна. Некоторой экономии памяти можно достичь, если заранее вычислять только суммы вида iP ± jQ с i,j разной четности.
4.6.7.	Метод Монтгомери быстрого возведения в степень
Сложность обычного умножения многочленов степени меньшей п по модулю произвольного многочлена степени п оценивается как М(п) + D(n), где D(n) — сложность деления многочлена степени 2п на многочлен степени п. При использовании школьных алгоритмов умножения и деления многочленов М(п) и D(n) приблизительно совпадают.
Но при больших п при использовании быстрых алгоритмов умножения школьный алгоритм деления будет сильно тормозить модулярное умножение.
Лишь в некоторых случаях, например, когда модуль состоит из малого числа одночленов, получается для него хорошая оценка М(п) + О(п).
Известен, однако, быстрый алгоритм деления, в котором оно фактически сводится к многократно выполняемому умножению многочленов, степени которых убывают в геометрической прогрессии. С использованием этого алгоритма можно оценить сложность модулярного умножения в случае произвольного модуля как 6М(п) + О(п). Отсюда в общем случае вытекает оценка Z(m)(6M(n) + О(п)) для сложности модулярного возведения в степень, где l(m) — длина кратчайшей аддитивной цепочки для возведения в m-ю степень. Можно эту оценку улучшить до (1(гп) -4- 1)(ЗМ(п) + О(п)) + 6М(п), но для этого надо более глубоко вникнуть в алгоритм быстрого деления и воспользоваться тем, что во всех операциях деления делитель один и тот же.
Другой способ получения указанной оценки — применение метода Монтгомери для быстрого модулярного возведения в степень. Он интересен тем, что почти не использует операцию деления с остатком, без которой казалось бы невозможны модулярные вычисления.
Пусть р(Х) — многочлен степени п. Будем рассматривать операции умножения по модулю этого многочлена. Положим R(X) = Хп~1. Так как многочлены R и р взаимно просты, то можно заранее вычислить многочлен q(X) степени п - 2 такой, что qp + 1 будет кратен R. Пусть многочлен <?(Х) таков, что QR = l(modp).
Сложность предварительного вычисления многочленов Q(X) и q(X), зависящих только от р(Х), может быть оценена с помощью алгоритма Евклида—Шенхаге как <9(М(п) logn), а с помощью обычного алгоритма Евклида — как <2(п2).
Упражнение 4.6.35. Докажите, что
/ + ((/modfl)gmodK)p
----------------------- fQ modp.
4.6. Асимптотически быстрые алгоритмы
215
Операция перехода от f к
/ПА f +	т0<3 m°d R)P
fQ mod p =--------------------------
it
называется редуцированием Монтгомери , а операция
.. tl. x	, fg + ((f9 mod R)q mod R)p
Mont(/, g) = fgQ mod p =----------------------------
It
— умножением Монтгомери (его можно производить над любыми многочленами /, g степени меньше п). Так как R = Хп~х, то в этих операциях деление фактически не производится, а производятся только умножения.
Упражнение 4.6.36. Докажите, что сложность выполнения умножения Монтгомери не превосходит ЗМ(п) + О(п), а сложность возведения в квадрат не превосходит К(п) + 2М(п) + 0(п), где М(п) — сложность умножения многочленов степени п, а К(п) — сложность обычного возведения многочлена в квадрат, если не учитывать сложность предварительного вычисления многочленов Q и q, зависящих только от р(Х).
Поясним как используется умножение Монтгомери для возведения в степень. Для этого сначала вычисляется fM = Mont(/, R2) — fR modp, а потом он возводится в степень m с помощью кратчайшей аддитивной цепочки, но вместо обычных умножений используется умножение Монтгомери. Так как Mont(gJZ, hR) — fgR, то в результате получается — fmR mod р, после чего остается вычислить Mont(/]^, 1) = fm mod р, т. е. выполнить редукцию по Монтгомери.
Упражнение 4.6.37. Докажите, что сложность возведения в данную степень т по модулю многочлена р(Х) произвольного многочлена степени меньшей п методом Монтгомери оценивается как (1(т) + 1)(ЗМ(п) + <?(п)) + 6М(п).
Все предыдущие результаты переносятся почти без изменений и на модулярную числовую арифметику.
Пусть р и R — произвольные взаимно простые числа. Будем рассматривать операции умножения по модулям р и R. Так как R и р взаимно просты, то можно заранее вычислить число q такое, что qp + 1 делится на R. Пусть Q таково, что QR - 1 делится на р.
Упражнение 4.6.38. Докажите, что для любого числа 0 < X < pR
X + ((JT mod R)q mod R)p
R
равно либо XQ modp, либо больше этого числа на р.
Если для записи чисел используется позиционная система счисления с основанием Ъ и применяются как стандартные так и быстрые арифметические алгоритмы, то алгоритм проведения редукции по Монтгомери удобнее выполнять для R — Ьп.
Пусть
X = (X2n-1 ...А'о)(, <pR, p = (mn-i ...то)ь, то^О,
216
Глава 4. Арифметика GF(2n) в полиномиальном базисе
«цифра» q такова, что qrriQ +1 кратно Ъ. Тогда XQ modp можно вычислить следующим образом.
Упражнение 4.6.39. Положим вначале a — X, и, обозначая всегда далее a = (a2n-i • • • ао)ь, Для каждого г от нуля до 2п - 1 вычисляем «цифру» mod 6, а потом прибавляем к текущему значению а число игрЬг, в конце этого вычисления младшие п цифр числа а оказываются нулевыми и их просто «стираем», полагая а равным a/bn, и в завершение, если полученное значение а будет не меньше р, отнимаем от него р. Докажите, что полученный результат всегда равен XQ modp.
В указанном выше случае умножение по Монтгомери чисел X и Y Mont(X,y) = JTKQmodp удобно выполнять следующим алгоритмом. Пусть
о «= х = (Хп_! ...Хо)б < Р, 0 Y = (У„_,... У0)6 < р.
Упражнение 4.6.40. Положим вначале а = 0, и, обозначая всегда далее a — (an-\ ... для каждого i от нуля до п - 1 вычисляем цифру
Щ = (а0 + XiYo)q mod b,
а потом прибавляем к текущему значению а числа щр и XiY, и так как после этого младшая цифра числа а оказывается нулевой, ее стираем, полагая а равным а/Ь, и в завершение, если полученное значение а будет не меньше р, отнимаем от него р. Докажите, что полученный результат всегда равен XYQ modp.
Упражнение 4.6.41. Докажите, что для чисел сложность выполнения умножения Монтгомери не превосходит ЗМ(п) + О (п), где ЗМ(п) — сложность умножения n-значных чисел, если не учитывать сложность предварительного вычисления чисел Q и q, зависящих только от числа р.
Упражнение 4.6.42. Докажите, что сложность возведения в данную степень m по модулю данного n-значного числа р произвольного n-значного числа методом Монтгомери оценивается как (Z(m) + 1)(ЗМ(п) + О(п)) + 6М(п).
4.6.8.	Пример реализации метода Монтгомери логическими схемами
Кратко опишем этот пример, пользуясь работой [178]. Разумеется, можно его реализовать и программным образом. Как известно при схемной реализации арифметики в поле GF(2n) в стандартных полиномиальных базисах удобно в качестве неприводимого многочлена выбирать трехчлен f(X) = 1 +Xk + Xm, если он существует. Далее рассматривается только этот случай. Можно при этом предполагать, что к т/2. Вычислим заранее многочлены r(X), r(X)', /'(X) такие, что
г(Х)г'(Т) + /(Х)/'(Х) = 1.
Многочлены а, b рассматриваем как элементы поля GF(2m). Ясно, что г' — г-1 mod f. Умножение по Монтгомери — это вычисление многочлена с(Х) = a(X)&(X)r-1(X) mod/(X). Оно выполняется следующим образом: находим t(X) = а(Х)Ь(Х), потом u(X) = t(X)f((X) mod r(X), и наконец с(Х) = (*W + u(X)f(X))/r(X). Для того чтобы деление
4.6. Асимптотически быстрые алгоритмы
217
по модулю г стало тривиальным, выбирается г — Хк. В случае к < тп - 1 и degc(X) > тп многочлен с(Х) надо еще привести по модулю f(X). Вычисляем г'(Х) — г-1(Х) = 1 + Xm~k, f = 1. При перемножении
а(Х) = Е aiX\ Ъ(Х) = Е Ь*Х*’ bi = °’1 2=0	2=0
получаем
2m-2 t(x) = e tx, 2=0
где при i < m
i
j=Q
а при г > m
m-l
Далее находим
к-1
u(X) = t(X)f'(X) mod r(X) - t(X) mod Xk = tixi-
2=0
Положим
к-1	2m-k-2
tL(X) = ^tiXi, tR(X) = 52 ti+kXi, 2=0	2=0
тогда
t(X) = tL(X) + XktR(X), u(X) = tL(X),
lY.	, / Ym-k , 1V /ГХ
c(X) =---------------=tR(X) + (X +l)tL(X).
При к — тп - 1 degc(X) < тп - 1 приведение по модулю / не требуется, поэтому при к = тп - I окончательно имеем
Со — to 4" tm-\, Cm-\ — ^m-2 H" ^2m-2,	~ ^i-1 4“	4“ ^m-14-г,
0 < i < m - 1.
При m/2 < к < m - 1 положим
m-l	2m-k-2
^*w = 5>+‘r’ 42)w= E
2=0	i—m
218
Глава 4. Арифметика GF(2n) в полиномиальном базисе
тогда имеем
с(Т) mod f(X) = ts(X) + (Xm~k + l)fL(X) mod f(X) = = t%\x) + 42)(X) + (Xm~k + l)tL(X) mod f(X) = = (i^(X) + Xm~ktL(X) + tL(X)) + 42) W mod f(X).
Так как
tk+i+mXi+m mod f(X) = tk+i+mfX + Xi+k), i = 0,... ,m - k - 2,
TO
tf(X) mod f(X) = t$'\x) + 42’2)(X),
где
m-k-2	m-2
42,1) W = E tm+k+iX1, 42’2)(X) = E tm+iX1.
i=0	i=k
Следовательно,
c(X) = t^\x) + Xm-ktL(X) + tL(X) + 42U)(X) + 42’2)(X).
При (m + l)/2 < k < m - 1 отсюда имеем формулы для коэффициентов в явном виде:
Ci = "Г ti-\-k	i m — 2 — к, Cm-k-\ =	4~ tm-\,
Ci ~ ~Ь ti—т-\-к “Ь ^i+ki т — к	i к 1,
Q ” ti+k-m “1" ti+k “Н ^г’+m, к ii TH — 2, Ст-[ = ^к-1
Следовательно, вычисление Cj по tj выполняется схемой, состоящей из 2т — 2 операций сложения по модулю 2 (операций XOR) и имеющей глубину 2.
Упражнение 4.6.43. Проверьте, что в случае к = (т + 1)/2 схема имеет такие же характеристики.
Упражнение 4.6.44. Проверьте, что в случае к = т/2 схема имеет сложность 3m/2 - 1 и глубину 2.
Учитывая, что схема для вычисления ti состояла из т2 элементов AND и т2 — 1 элементов XOR и имела глубину [log2m], окончательно имеем, что построенный мультиплер Монтгомери при к > т/2 состоит из т2 элементов AND и (m + I)2 - 3 элементов XOR и имеет глубину [log2 т\ + 2. В случае к — т/2 экономится т - 1 элементов XOR.
Упражнение 4.6.45. Постройте обычный стандартный мультиплер и сравните его характеристики с мультиплером Монтгомери.
4.6. Асимптотически быстрые алгоритмы
219
4.6.9.	Быстрое возведения в степень через модулярную композицию
Оценка сложности возведения многочлена степени меньшей п в степень тп по модулю данного многочлена степени п, полученная в разд. 4.6.7 в виде
(Z(m) + 1)(ЗМ(п) + <?(п)) + 6М(п) = 3Z(m)M(n) + 9M(n) + O(nZ(m)), пригодна для любых полей, но для конечных полей и для малочленных модулей слишком груба. В разд. 4.6.3, упр. 4.6.30 была получена оценка сложности возведения в степень m многочленов над полем GF(q) по модулю данного малочлена степени п в виде
z , z ч . / M(n) log,, тп	\
Е(п, тп) = O(M(GF(q)\) ( -----------h qn log. m ),
\ logg log9 m	)
где M(GF(q)) — сложность умножения в поле GF(q).
В [114] в случае q = 2 фактически та же оценка была доказана без предположения о том, что модуль есть малочлен. Мы ее изложим, подсчитав все мультипликативные константы. Так как ее применение ориентировано на возведение в степень в конечных полях, далее предполагаем, что m < qn, log9 m —> oo, n —> oo.
Теорема 4.6.9. Сложность возведения многочлена степени меньшей п над полем GF(q) в степень т по модулю данного многочлена степени п, не превосходит
log? log„ m(6M(n)n1/2M(GF(g)) + О(п(й,+1)/2)) +
(3 + o(l))(log2 2g2)M(GF(?))M(n) log2 m
log2 log2 m где w — экспонента матричного умножения. Идея алгоритма состоит в использовании модулярной композиции. А именно, операция gq™ mod f может быть выполнена как g(h) mod /, где h = Xqm mod f. Действительно, если
s
g(X) = £ aX,
i=0
TO
gq (X) = aq Xq 1 = УУ atXq 1 mod f = УУ ajh1 mod f = g(h) mod f. i—Q	i=Q	i—Q
Положим k = piog^m/(log?log9m)] =log2m/(log2loggm) + O(l) и разложим m в системе счисления по основанию qk, а именно
s-1
т =	0^mi<qk, s = flog? log? m].
8=0
220
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Вычислим h = Xqk mod / путем к-кратного модулярного возведения в степень q с применением метода Монтгомери со сложностью
fc(3i(g)Af(n) + 9M(n) + O(nl(q)))M(GF(q)) =
log2 log2 m
Применяя s-кратно изложенный выше алгоритм с вычисленными заранее степенями
id
gq mod/, i — 0, ...,b- 1,
~k~\
b= - , a = [log. h\, a
fclOg2Q
П = ----y;--------
log2(A;log2 q)
вычисляем gi = gmi mod /, i < s, выполнив
z. ,	( fclog2</	A
s(b -Y ti) —	-------——------—------г -I- h ) —
\(1 + o(l))log2(fclog2g) /
= A (1 + o(l))fc log2 g\ =	log2m
\ log2(fclog2 q) J	"log2log2m
модулярных умножений многочленов над полем GF(q), т. е. со сложностью
(1 + 0(l))6M(n)M(GF(g))	.
log2log2 m
Применяя метод Монтгомери, оценку можно улучшить до
(3 + o(\))M(ri)M(GF(q))	.
log2log2 m
Сложность предварительных вычислений gq'a mod /, i = 0,... ,b - 1, путем a(b — 1) < А;-кратного модулярного возведения в степень q с применением метода Монтгомери оценивается как
(3 + o(l))M(GF(q))M(n)k = (3 + о(1))М (GF(q))
log2 log2 m
Теперь вычисляем с = gm mod /, применяя схему Горнера. Для этого полагаем вначале с = 1, а потом в цикле повторяем
c = cq gi = c(h)gi mod /, i = s - 1,..., 0.
При этом выполняется s модулярных умножений со сложностью s(6M(n) + O(n)M(GF(q)),
но если заранее вычислить частное от деления Х2п на /, то можно упоминавшимся ранее приемом уменьшить сложность до
3sM(ri)M(GF(q)) = 3M(n)M(GF(q)) log<? log9 m.
4.6. Асимптотически быстрые алгоритмы
221
Но основная сложность приходится на з модулярных композиций, которая равна
s(6Af(n)n1/2 + O(n(w+l)/2))M(GF(g)).
Окончательная оценка имеет вид
log, log, m{6M(n)ni/2M(GF(q)) + O(n(“+1)/2)) +
+(3 + o(l))(log2 2q2)M(GF(q))^^^.
log2log2 m
Если применить вместо наилучшей оценки сложности умножения матриц алгоритм «четырех русских» с оценкой O(log2 ^)n3/log? п, то получаем
Следствие 4.6.2. Сложность возведения многочлена степени меньшей п над полем GF(q) в степень т по модулю данного многочлена степени п не превосходит
(3 + о(1»(log2 2q2)M{GF(q))~^^- + log2 log2 m
+ O(log2 q)n2 + 6M(n)ni/2M(GF(q)) log, log, m.
Так как m < qn, то отсюда следует оценка
(3 + o(l))(log2 q log2 252)M(GF(9))—
log2(n log2 q)
Следствие 4.6.3. Если число ненулевых цифр в q-ичной записи числа т < qn равно vq(m), то оценку сложности можно получить в виде
0(M(GF(q)) log2 ?)n185 + (3i/,(m) + O(q))M(n)M(GF(q)).
Для доказательства выберем k = f(logQ	, разложим m
в системе счисления по основанию qk, вычислим все степени gq'a mod f, а = 0,... ,q, i = 0,... ,k - 1 со сложностью
0(q 4- kl(q))M(n)M(GF(q)),
потом вычислим все степени gi, i = 0,..., s - I, з = [(log^ m)/k~\ = [(logg/n)®] < [nQ] просто путем перемножения содержащихся в них степеней вида gq'a mod f со сложностью 3vq(m)M(n)M(GF(q)), и закончим работу алгоритма так же, как и выше. Оценка сложности тогда принимает вид
3vq(m)M(ji)M(GF(q))-\-
+ O(M(n))M(GF(q))(q + klo&2q + s(ni/2 + n(w+')/2)) «С
3i/,(m)M(n)M(GF(9)) +
+ 0(M(n))M(GF(q))(q + n'~a log2 q + n1/2+° + п(ш+1,/2+°).
222
Глава 4. Арифметика GF(2n) в полиномиальном базисе
Выбирая л — 2,376 (см. [115]) и оптимизируя выбор параметра о, имеем при М(п) — О(п1+бп) оценку
O(M(GF(q)) log2 ?)n*’85 + (3i/?(m) + O(q))M(n)M(GF(q)).
4.6.10.	Быстрое инвертирование в стандартном базисе через модулярную композицию
Напомним, что для инвертирования в поле GF(qn) можно вычислить Y =	g GF(q) и применить формулу
x-i =
Вычисление У-1 по определению выполняется со сложностью I(q), а умножение на него в поле GF(qn) выполняется со сложностью nM(GF(q)). Для вычисления X^qn	используется l(n - 1) умножений в поле
GF(qn), а для вычисления У нужна еще одна операция умножения, более простая, чем обычное умножение. Но кроме умножений используется еще не более Ai(n - 1) + 1 операций вычисления преобразований Фробениуса, т. е. операций возведения в степени qm,m п. Используя указанную выше оценку сложности такой операции, получаем оценку сложности всех использованных этих операций в виде
о(м(п) log2 q + (n(w+1)/2 + n1/2M(n))M(GF(g)) log2 n),
где M(n) — число операций в поле GF(q), используемых для умножения многочленов степени меньше п над этим полем. Ее можно улучшить до оценки
0(М(п) log2 q) + O(n("+1)/2 + n1/2M(n))M(GF(q))l(n - 1)
и вывести из нее следующий результат:
Теорема 4.6.10. Сложность инвертирования
I(qn) (l(n - 1) + l)M(GF(?n)) + nM(GF(g)) + !(?)+
+ O(Af(n) log2 q) + O(n(w+1)/2 + n'/2M(n))Z(n - 1).
Главным членом в оценке при малых q и М(п) = о(п.ш,/2) является
O(n(w+1)/2)Z(n - 1) = О(п*’85).
С учетом результата Пана и Хуана (см. [115]) о матричном умножении, асимптотическая оценка принимает вид О(п1,668).
Доказательство. Для краткости сложность модулярной композиции обозначим
S(n) = О(п(ш+1)/2) +6п1/2(М(п) + О(п)).
4.6. Асимптотически быстрые алгоритмы
223
Возьмем минимальную (не обязательно линейную) цепочку
1 = qq, ..., ar=n-l, r = l(n—V),
о”-1-l
и построим цепочку для 9	, состоящую из чисел , в промежутки
между которыми вставлены операции умножения на числа qtt], в используемой аддитивной записи соответствующие преобразованиям Фробениуса, так как
(qa' — l)qa> qttj — 1 qa*+aj — 1 q-1 q-1 q-i
Значит, для вычисления X^	нужны операции Фробениуса для
показателей ао, (может быть, не все). Выше было показано, что операция Фробениуса д9™ mod f может быть выполнена как модулярная композиция g(h) mod /, где h = Xqm mod f. Всего нужно не более l(n - 1) модулярных композиций, если уже вычислены многочлены ht = Xq°l mod /, г = 1,..., г. Но если аг = а3 4- а^, то
ht = Xqt mod f = Xq} k mod f — (Xq 3 )q k mod f =
— (Xq 3 mod f)q k mod f = hqk mod f = h}(hk) mod /,
поэтому для вычисления многочленов ht = Xqa' mod /, i = 1,..., г достаточно вычислить Xq mod f и выполнить г = l(n - 1) модулярных композиций. Поэтому сложность выполнения всех преобразований Фробениуса оценивается как
2l(n -	+ O(M(n) log2 q).
В случае q < п последнее слагаемое отсутствует.	
4.6.11.	Некоторые уточнения в случае q = 2
Выбирая вместо минимальной цепочки обычную линейную бинарную цепочку, состоящую из А(п) удвоений и v(n) - 1 прибавлений единицы, можно чуть усилить полученную выше оценку до оценки
1(2П) (Л(п - 1) + z/(n - l))M(G^(2n)) 4-
4- 2р(п - l)K(GF(2n)) 4- n 4- 2A(n - l)S(n),
где K{GF(2n)) — сложность возведения в квадрат в поле GF(2n). Известно, что K(GF(2n))	2М(п) 4- O(n), M(GF(2n)) ЗМ(п) 4- О(п)
в общем случае, а если базис задан неприводимым малочленом, то K(GF(2n)) = O(ri).
Действительно, если
1 = ао, •••5 ar = n-l, г — А(п - 1) 4- v(n - 1) - 1
такая цепочка, то действуя так же, как и выше, можно выполнить инвертирование с помощью A(n- l)4-^(n-1)-1 умножений и A(n- 1)4-р(п~ 1)-1
224
Глава 4. Арифметика GF(2n) в полиномиальном базисе
операций Фробениуса, из которых v(n-1) -1 являются просто возведениями в квадрат. Для выполнения остальных А(п - 1) операций Фробениуса используем А(п - 1) операций модулярного умножения, одновременно вычисляя необходимые для этого многочлены Xr' mod /, где аг — такие элементы цепочки, которые в ней на следующем шаге удваиваются. Эти вычисления тоже делаются с помощью Л(п - 1) - 1 операций модулярного умножения, из которых v(ri) операций являются возведениями в квадрат. Заметим, что при этом уменьшается используемая память, так как вычисление последовательности Х2<,г mod f требует запоминания только одного многочлена во время всего вычисления, а другой многочлен надо помнить во время вычисления промежуточных экспонент д2°г~х mod /. Так как возведения в квадрат выполняются отдельно, то все используемые операции Фробениуса являются возведениями в степени 2а*, где последовательность аг растет как геометрическая прогрессия: аг+] 2аг . Воспользовавшись этим, укажем еще возможность уменьшения сложности вычислений в случае использования базиса, заданного неприводимым малочленом.
Пусть сложность операции модулярной композиции оценивается как S(n) = О(п@), Д < 2. Пусть к таково, что	Тогда
возведения в степени 2ai, i < к можно выполнить путем повторного возведения в квадрат со сложностью
к
o(a,n) = O(akn) = О(п0),
г=\
а остальные (2-/3) log2 п возведений в степени 2е*, i к выполняем так же, как описано выше. Тогда получаем следующую оценку сложности инвертирования:
1(2П) < (А(п -1)4- v(n - l))M(GF(2n)) 4- п 4-
4- 2v(n - l)K(GF(2n)) + (2(2 - /3)А(п - 1) + О(1))5(п).
В случае схемной реализации множители 2 в последних слагаемых можно отбросить, так как вычисления заранее заданных многочленов Х2°г mod f выполнять не нужно.
Заметим, что в случае программной реализации и использования для матричного умножения алгоритма «четырех русских», получаем для сложности инвертирования всего лишь квадратичную оценку и только при использовании для достаточно быстрого алгоритма умножения многочленов с оценкой М(п) = <9(п14), что не совсем реально при п < 1000. Аналогичная оценка для тех же методов получается и в случае схемной реализации, причем глубина полученной схемы будет равна O(log2n)2. Оба этих результата легко получить и без использования модулярной композиции, применяя вместо нее схему сложности O(n2/log2 п) и глубины 6>(log2 п) для возведения в любую степень 2к. Однако в случае программной реализации это требует большого расхода памяти, так как
4.6. Асимптотически быстрые алгоритмы
225
матрицы каждого используемого линейного преобразования Фробениуса надо запоминать, а уже для одного из них это требует О(п2) памяти. Для выполнения модулярной композиции требуется только 0{п3^2 памяти. Некоторого уменьшения сложности можно добиться, так же как и выше, используя схемы возведения в квадрат по модулю малочлена с членами малых степеней сложности О(п) и константной глубины.
Упражнение 4.6.46. Как построить такие схемы?
Сложность схемы инвертирования можно уменьшить с квадратичной до О(п2 log log n)/log n используя указанный выше прием. А именно, возведения в степени 2ftt ,	< n/log2 п, выполняем путем повторного
возведения в квадрат со сложностью O(n2)/logn, а остальные log2 log2 n возведения в степени 2ai вычисляются со сложностью O(n2 log log n)/log n. Эта оценка справедлива и для схемной сложности, но глубина схемы получается O(n/log2 п), даже если использовать в качестве f малочлен.
Так как умножение методом Штрассена имеет глубину O(log2n), то можно построить схему для модулярного умножения на фиксированный многочлен сложности S(n) = O(nlog2 ^/((log2 п)^2 7/4)) и глубины O(log2 п), поэтому можно построить схему для инвертирования глубины O(log2 п) и сложности
O(S(n)A(n)) = O(n'og2'/i3(log2 n)log28/7).
Упражнение 4.6.47. Докажите это.
Для уменьшения глубины схемы инвертирования вместо модулярного умножения лучше использовать упоминавшуюся выше схему глубины log2 п + 0(1) и сложности 0(n2/log2 п), а вместо стандартной бинарной аддитивной цепочки использовать аддитивную цепочку для п — 1 минимальной глубины flog2(n - I)"].
Упражнение 4.6.48. Докажите по индукции, что существует цепочка для n 2к глубины A(n) + 1 и сложности А(п)(п) + v(n) — 1, в которой на каждом шаге выполняется прибавление некоторой степени двойки.
Тогда получается схема глубины
. (А(п - 1) + \)(D(M(GF(2n))) + А(п - 1) + 1)
И сложности
1(2П) < (А(п - 1) + v(n - 1) - l)M(GF(2n)) +
+ n + (A(n - 1) + p(n - 1) - l)S(n).
Кроме умножений, в ней будут использоваться только операции возведения в степени 2к, к — 1,... А(п - 1). Если используется в качестве f малочлен, для которого модулярное возведение в квадрат имеет сложность 0(п) и глубину 0(1), то сложность и глубину схемы инвертирования можно немного уменьшить, заменив первые O(log log ri) операций возведения в степени повторным возведением в квадрат.
[лава 5
Арифметика в нормальных базисах
In Galois fields, fulled of flowers, primitive elements danced for hours
S.	B. Weinstein
5.1.	Оптимальные нормальные базисы
5.1.1.	Три типа оптимальных нормальных базисов
Оптимальные нормальные базисы (см. с. 70) были обнаружены группой канадских математиков в составе Муллин, Онищук, Вэнстоун, Вилсон [151]. Впоследствии Гао, и Ленстра [111] показали, что других оптимальных нормальных базисов, кроме найденных в [151], не существует.
Поскольку оптимальные нормальные базисы существуют не во всех полях, то представляют интерес базисы если и не оптимальные, но имеющие низкую сложность. В [87] такие базисы строятся с помощью так называемых гауссовых периодов, изучению приложений которых посвящены также статьи [112,113]. Об этих базисах речь пойдет в разд. 5.3.1.
Все упомянутые базисы рекомендуются в стандарте NIST для реализации криптосистем, основанных на использовании эллиптических кривых. Однако ни в этом стандарте, ни в доступной литературе не объясняется, как именно реализовывать арифметику в этих базисах. В [126] описаны, например, только автоматные схемы, а также схема Месси—Омуры, которая, как будет объяснено ниже, имеет более высокую сложность по сравнению с быстрыми алгоритмами умножения в стандартных базисах.
Современное состояние программной реализации арифметических операций в нормальных базисов отражено в препринте [105].
Различают три типа оптимальных нормальных базисов в поле GF(qn) по типу их построения.
Первый тип оптимальных нормальных базисов можно построить, когда п + 1 = р — простое число, a q является примитивным корнем по модулю р (т. е. примитивным элементом поля GF(p)).
В этом случае генератором оптимального нормального базиса будет один из примитивных корней £ р-й степени из единицы в поле GF(qn) (т. е. элемент порядка р этого поля).
В полях Галуа, полных цветов примитивные элементы танцуют часами.
5.1. Оптимальные нормальные базисы
227
Второй тип оптимальных нормальных базисов возникает, когда 2п + 1 = р — простое число, a q — как и в первом случае есть примитивный корень по модулю р.
Генератором этого базиса служит элемент о = ( +	где ( — при-
митивный корень р-й степени из единицы в поле GF(q2n).
Упражнение 5.1.1. Докажите, что, если в поле GF(qn) существует базис второго типа, то в поле GF(q2n) существует базис первого типа, который порождается элементом ( — примитивным корнем р-й степени из единицы в поле GF(q2n). Верно и обратное, если в поле GF(q2n) существует базис первого типа, то в поле GF(qn) существует базис второго типа.
Третий тип оптимальных нормальных базисов получается, когда 2п + 1 = р — простое число, р = 3(mod4), a q — квадратичный вычет по модулю р и любой квадратичный вычет представляется в виде степени q по модулю р (или, другими словами, порядок числа q по модулю р равен п).
Как и в случае базиса второго типа в качестве порождающего элемента базиса третьего типа берется a — ( 4- £-1, где ( — примитивный корень р-й степени из единицы в поле GF(q2n).
Оптимальные базисы с ростом п встречаются все реже и реже. Согласно гипотезе Артина [88] для любого а 0, ±1 и не равного полному квадрату число простых чисел р, р х таких, что а является примитивным корнем по модулю р, асимптотически равно c(a)£/log2£, где с(а) — зависящая от а константа. В предположении справедливости ERH (расширенной гипотезы Римана) гипотезу Артина доказал Хули [123]. Более слабый вариант гипотезы Артина утверждает, что любое простое число а будет примитивным элементом по модулю бесконечно многих простых р. В таком виде гипотеза Артина была доказана Хис-Брауном для всех простых а, кроме быть может двух, однако эти два исключения неизвестны. Из этих утверждений следует, например, что для п таких, что п + 1 или 2п + 1 простое, с положительной вероятностью существуют оптимальные нормальные базисы в полях GF(2n).
В Приложении С во второй книге [18] приведены размерности оптимальных нормальных базисов для q — 2 и 10 < п 30, минимальные многочлены их генераторов и таблицы умножения (разд. С1), размерности оптимальных нормальных базисов для <? = 2 и 31 п 1000 и минимальные многочлены их генераторов (разд. С2), размерности полей GF(2n) при 1000 < п < 10 000, для которых существуют оптимальные нормальные базисы (разд. СЗ).
5.1.2.	Некоторые примеры примитивных элементов по модулю р
Для поиска оптимальных нормальных базисов в полях GF{2n) полезно знать, когда двойка или минус двойка является примитивным элементом по модулю р. Действительно, для того чтобы в поле GF(2n) существовал базис третьего типа, необходимо, чтобы п было нечетным
228
Глава 5. Арифметика в нормальных базисах
и мультипликативный порядок двойки по модулю р = 2п + 1 был равен (Р- 1)/2 = п.
Упражнение 5.1.2. Докажите, что указанное выше условие равносильно тому, что минус двойка является примитивным элементом по модулю р.
До сих пор неизвестно, будет ли двойка примитивным элементом для бесконечно многих простых р.
В связи с этим представляет интерес следующая теорема, принадлежащая П. Л. Чебышеву:
Теорема 5.1.1. Пусть р u q суть простые нечетные числа. Тогда справедливы следующие утверждения'.
если р = 4q + 1, то 2 есть примитивный элемент по модулю р, если р = 2q+ 1, q = 4n 4-1, то 2 есть примитивный элемент по модулю р, если р = 2q + 1, q — 4n 4- 3, то —2 есть примитивный элемент по модулю р.
5.1.3.	Алгоритм генерации оптимальных нормальных базисов первого типа и доказательство их оптимальности
Для поиска значений п, при которых существует базис первого типа, надо вычислить таблицу простых чисел от 1 до заданной границы N с помощью решета Эратосфена и для очередного простого р проверить, что ^(р-1)/^ mocj р j
для каждого простого делителя 5 числа р - 1. Факторизация этого числа тривиальным методом требует времени О(у/р) (с учетом уже построенной таблицы простых), а проверка всех <2(logр) указанных неравенств — времени <9(log2 р). Общее время работы этого алгоритма — O(7V3/2). Так как практический интерес представляют только сравнительно небольшие значения N, то в более быстрых алгоритмах для этой задачи мы не нуждаемся.
Далее, для каждого найденного п = р - 1 ищем в поле GF(qn) примитивный корень ( р-й степени из 1. Так как в силу простоты р все не единичные корни указанной степени степени являются примитивными, a qn - 1 кратно р согласно выбору п, то для любого ненулевого элемента /3 из поля GF(qn) его степень ^п-1)/р, в случае если она не равна 1, будет искомым корнем, так как f3qn~x — 1 по малой теореме Ферма. Вероятность того, что для случайного 0 будет справедливо равенство /3^qn~l^p = 1, равна 1/р, так как количество корней (qn - 1)/р степени из 1 равно (qn - 1)/р, значит нужный нам корень после, например, 5 попыток мы получим с почти единичной вероятностью за время O(nlog^)3, если использовать стандартный бинарный алгоритм возведения в степень и стандартный алгоритм сложности O(nlog^)2 для умножения в поле GF(qn). В качестве представления элементов поля можно взять многочлены степени п - 1 с коэффициентами из поля GF(q), а операции проводить по модулю неприводимого полинома, желательно малого веса. Используя более изощренные алгоритмы умножения и возведения в степень, указанный алгоритм можно асимптотически ускорить, но практически это не требуется.
5.1. Оптимальные нормальные базисы	229
Доказательство оптимальности базисов первого типа. Заметим, что система {С • • • ’ С} совпадает с точностью до перестановки с нормальным базисом
так как последовательность степеней 1, q, q2,..., qn~{, вычисленных по модулю р, совпадает с некоторой перестановкой тг( 1),..., тг(п) множества чисел {1,..., п} в силу того, что q — примитивный корень по модулю р, значит равенство ql и qi при 0 < i < j < п по модулю р невозможно, так как иначе бы qi~l было бы равно 1 по модулю р, что противоречило бы примитивности q по этому модулю.
Линейная независимость системы {£,..., (п} вытекает из того, что £ не может быть корнем никакого многочлена над полем GF(q) степени меньшей п, так как £ является корнем неприводимого над полем GF(q) многочлена
Хр - 1
1+Х + ... + Хп = ——-, х — 1
который неприводим в силу того, что, если он имеет собственный делитель /(X), то его корнем будет один из корней £q* многочлена 1+Х +... +ХП, а значит его корнями будут все элементы вида aq', i = 1,2,..., где a — (q , а значит и все элементы £q'+k, г — 1,2,..., где сумма i + к вычисляется по модулю п, так как
qn н l(modp), = (, и поэтому корнями многочлена /(X) являются все п корней многочлена 1 + X + ... + Хп, что невозможно.
Вычисление матрицы Т. Для этого надо найти разложение
Согласно равенствам <Хт =	, т = 1,..., п, при т < п сумма
п-1
>0
будет равна (m+1 только тогда, когда при i таком, что ql = mmodp (т. е. при i —	равенство tij — 1 будет справедливо лишь при j
таком, что qJ' = т + l(modp), т. е. при j = 7r-1(m + 1) = 7г—1 (тг(г) + 1), а остальные коэффициенты tij будут равны нулю.
Если же т — п, то
230
Глава 5. Арифметика в нормальных базисах
Алгоритм 5.1.1
ВХОД: степень п расширения поля GF(2).
ВЫХОД: вектор b = (&ь ... ,Ьп) коэффициентов неприводимого многочлена
60 + Ь^Х 4- ... 4-	4- ЬпХп с корнем х — генератором ОНБ
первого типа, таблица умножения А в ОНБ, порождаемом генератором х (в виде матрицы или списка координат единичных элементов)
или сообщение «ОНБ первого типа не существует».
1.	Вычислить р = п + 1, проверить условия ОНБ 1-го типа:
а)	р — простое число;
б)	2 является примитивным корнем из 1 по модулю р: для каждого простого делителя числа п выполняется 2п/<* /= 1. Если хотя бы одно из этих условий не выполняется, то вернуть сообщение «ОНБ первого типа не существует».
2.	Для i = 0,..., п принять &г = 1.
3.	Вычислить п х n-матрицу Т:
образовать пустой список Т,
для i = 0,..., п - 1
если тп = 2г modp < п, то
включить пару (г, j), j = dlog2(m + 1) modp, в список Т, иначе включить в список Т пары (г, j) для всех j, 0 j < п.
4.	Вычислить матрицу А:
образовать нулевую п х п матрицу А (или образовать пустой список А);
для каждого элемента (г, j) списка Т принять аг->,-у = 1, где индексы i - j и — j вычисляются по модулю п.
5.	Вернуть b и А.
Рис. 5.1. Алгоритм построения ОНБ первого типа. Функция dlog2(x)modp возвращает значение дискретного логарифма по модулю р числа х modp при основании 2
значит при i = тг-1(п) все коэффициенты = 1. В итоге общее число ненулевых коэффициентов равно 2п - 1, значит построенный базис оптимальный нормальный.
На рис. 5.1 приведен в явном виде алгоритм 5.1.1 построения оптимального нормального базиса первого типа в поле GF(2n).
Заметим, что многочлен, порождающий ОНБ первого типа, всегда имеет только единичные коэффициенты. Выходом алгоритма является этот многочлен и матрица умножения, поскольку именно она используется в алгоритме умножения Месси—Омуры.
Пример 5.1.1. ВХОД: Степень п = 10.
1.	Условия ОНБ первого типа выполняются:
а)	р = п 4- 1 = 11 — простое число,
б)	2 есть примитивный корень из 1 по модулю р = 11: 22	1 mod 11,
25	1 mod 11.
5.1. Оптимальные нормальные базисы
231
2.	Образуем вектор b = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1).
3.	Вычислим список координат ненулевых элементов 10 х 10-матрицы Т. Вычисления индексов j для i = 0, п - 1, Т Ф Ю даны в табл. 5.1.
Таблица 5.1
К вычислению списка Т для ОНБ 1-го типа при п = 10
i	0	1	2	3	4	5	6	7	8	9
m — T mod 11	1	2	4	8	5	10	9	7	3	6
m 4- 1 = 2j mod 11	2	3	5	9	6	—	10	8	4	7
j = dlog2(m 4- 1) mod 11	1	8	4	6	9	—	5	3	2	7
Из этой таблицы извлекаем список координат (г, j) (в количестве п - 1 =9) единичных элементов матрицы Т:
(0,1), (1,8), (2,4), (3,6), (4,9), (6,5), (7,3), (8,2), (9,7).
Этот список пополняется п парами (5, j), j = 0,..., 9 (поскольку 25 = 10 mod 11): (5,0), (5,1), (5,2), (5,3), (5,4), (5,5), (5,6), (5,7), (5,8), (5,9), после чего он содержит 2п - 1 = 19 элементов, определяющих координаты единичных элементов матрицы Т.
4.	Вычислим матрицу А (в виде списка координат ((г -j) mod 10, - j mod 10) ненулевых элементов, получаемого из соответствующих элементов (i,j) списка Т). Вычисления представлены в табл. 5.2.
Таблица 5.2
Вычисление таблицы умножения ОНБ 1-го типа при п = 10
T	(0,1) (5,0)	(1,8) (5,1)	(2,4) (5,2)	(3,6) (5,3)	(4,9) (5,4)	(6, 5) (5,5)	(7,3) (5,6)	(8,2) (5,7)	(9, 7) (5,8)	(5,9)
A	(9,9)	(3,2)	(8,6)	P,4)	(5,0	(1,5)	(4, 7)	(6,8)	(2,3)	
	(5,0)	(4,9)	(3,8)	(2,7)	(1,6)	(0,5)	(9,4)	(8,3)	(7,2)	(6,1)
5.	ВЫХОД: Ь = (11111111111),
А = {(0, 5), (1, 5), (1,6), (2, 3), (2,7), (3, 2), (3, 8), (4, 7), (4,9), (5,0), (5, 1), (6, 1), (6, 8), (7, 2), (7,4), (8, 3), (8, 6), (9, 4), (9, 9)}.
Упражнение 5.1.3. Докажите, что tij — 1, тогда и только тогда, когда 1 4- Т = 2J mod п или i — n/2.
Упражнение 5.1.4. Докажите, что at-j — 1, тогда и только тогда, когда 2; 4- Т = l(modn) или г - j = n/2(modn).
232
Глава 5. Арифметика в нормальных базисах
5.1.4. Алгоритм генерации оптимальных нормальных базисов второго типа и доказательство их оптимальности
Базис второго типа возникает, когда 2п + 1 — р — простое число, а условие на q такое же, как в первом случае, где роль числа п играет число 2п. Элемент £ тогда будет примитивным корнем степени р из 1 в поле GF(q2n), но в качестве порождающего элемента оптимального нормального базиса нужно взять a — ( -Г С-1 •
Доказательство оптимальности. Так как qn = -1 (mod р), то
а = С + С 4 = С + С = а, значит,
aq = о, поэтому а принадлежит подполю GF(qn) поля GF(q2n). Система
{ct, aq, aq ,... ,aq } линейно независима, так как
k к /Л+п aq = (? +Г? = C4 + C4
в силу эквивалентности qk+n = - qk (mod p), а система
линейно независима. Можно проверить, что при п > к > О
aaqt = (С + с1) (С4* + Г4*) = С1+4‘ + С1-4* + С1-4‘ + Г1+4‘ = а4' + «4‘, значит, соответствующая этому базису матрица Т при q — 21 содержит 2п - 1 единицу, потому что при к = 0 разложение произведения aaq по базису состоит из одного слагаемого, ведь
= « + + =
Для выполнения указанной проверки заметим, что согласно определению последовательность qk modp, к = 0,..., 2п - 1 является перестановкой перестановкой 7г(1),..., %(2п) множества чисел 2п} в силу того, что q — примитивный корень по модулю р = 2п + 1, причем в силу соотношения
qk+n = -Qfc(modp), к = 0,..., п - 1, справедливо равенство
7г(А;) -h л(к + п) = р, к = 0,..., п - 1,
а так как все неупорядоченные пары
(1 + qk mod р, -1 - qk mod р)
5.1. Оптимальные нормальные базисы
233
при любом к, А: = 0,..., п - 1, отличны от пары (0, 0), то их последовательность состоит из пар
(тг(&), я(к 4- п)), к = 0,..., п - 1,
т. е. из неупорядоченных пар вида (и, р - и), 0 < и п, значит существует такое отображение (cr( 1),..., сг(п)) множества чисел 1,..., п, в себя, что
(1 4- qk modp, -1 - qk modp) = (л(a(к)), p - тг(сг(&))), и значит,
+	= (Ча{к} +	= a<f(k+\
Аналогично определяется отображение (//(1),..., множества 1,..., п в себя такое, что
+	=	4-	= aq^k)
при любом п к > 0.
Так как l-qk^l + qk, l-qk^-l-qk
по модулю р, то при любом п > к > 0 справедливо неравенство р(к) / <т(к).
Вспоминая определение матрицы Т посредством равенств
п-1
а о9 = tjjotql
j=o и сравнивая их с полученными равенствами
aaq = aq ° 4- i > 0,
aaq* = ^° + Гl~qQ 4-	4-	=
=	+ ci-9° + (o + (o =	+	= a<f^
имеем
ti,j ~ j +	I 7^ 0,	~ ^cr(l), j 5
где 6k, s — дельта-символ Кронекера, равный 1 при к = s и нулю в противном случае.
Отметим, что в случае нечетного q указанный базис не будет, строго говоря, оптимальным, но будет иметь линейную сложность. Действительно, тогда
О2 = (С + С1)2 = <2 + Г2 + 2 = а"' + 2,
а элемент 2 из поля GF(q) представим в виде
п-1
к=0 при ненулевом с из поля GF(q).
234
Глава 5. Арифметика в нормальных базисах
Свойства матрицы Т. Для оптимизации вычислений при построении оптимального нормального базиса второго типа в поле GF(2n) докажем два утверждения.
Утверждение 5.1.1. Для матрицы Т оптимального нормального базиса второго типа в поле GF(2n) равенство tij = 1 верно тогда и только тогда, когда выполняется одно из четырех соотношений
2г±27 ее ±l(mod 2n+ 1).
Действительно, согласно определению матрицы Т ее элемент tij = 1, о*
тогда и только тогда, когда в разложении аа по в сумму элементов нормального базиса, порожденного а, входит слагаемое а13. Но в силу равенства
««2‘ = (ш-'Г+с2‘) = U2i-‘+c2‘+1) + (e2'+1+Г2’-1)
и того факта, что = 1, р — 2п 4- 1, так как £ — первообразный корень p-и степени из единицы, это возможно, тогда и только тогда, когда 2г ± 1 = ±27(modp). Последняя эквивалентность равносильна ±2г ± 2; = ±l(modp) и эквивалентности 2г ± 27 = ±l(modp).
Утверждение 5.1.2. В случае оптимального нормального базиса второго типа в поле GF(2n) матрицы Т и А совпадают.
Действительно, так как	то согласно предыдущему
утверждению	= 1, тогда и только тогда, когда ±2Z-J±2~J = =bl(modp),
где i- j и - j вычисляются по модулю п. Поэтому вместо — j можно взять п- j, а вместо i- j при i-j <0 можно взять n + i-j. Умножая обе части эквивалентности на 27 по модулю р, получаем равносильное соотношение ±2г+п±2п = ±2J(modp), которое в силу эквивалентности 2п = ±l(modp) равносильно соотношению ±2г ± 1 = ±2J(modp). Эквивалентность 2п = ± 1 mod р вытекает из малой теоремы Ферма 22n = 1 (mod р).
Теперь приведем в явном виде алгоритм 5.1.2 построения оптимального нормального базиса 2-го типа в поле GF(2n) (рис. 5.2).
Пример 5.1.2. ВХОД: Степень п = 14.
1.	Условия ОНБ второго типа выполняются:
а)	2п + 1 = 29 — простое число;
б)	2 является примитивным корнем из 1 по модулю р = 29: для простых делителей 2 и 7 числа 28: 22 mod 29 = 4	1, 27 mod 29 =
12	1.
2.	Вычислим вектор Ь коэффициентов многочлена с корнем х — генератором ОНБ 2-го типа. Вычисления приведены в табл. 5.3.
3.	Вычислим 14 х 14-матрицу А (в виде списка координат ее единичных элементов).
5.1. Оптимальные нормальные базисы-
235
Алгоритм 5.1.2
ВХОД: степень п расширения поля GF(2).
ВЫХОД: вектор b = (дь..., Ьп) коэффициентов неприводимого многочлена &о + Ь^Х + ... 4- Ьп-^Х11-1 4- bnXn с корнем х — генератором ОНБ 2 типа,
таблица умножения А в ОНБ, порождаемом генератором х (в виде матрицы или списка координат единичных элементов) или сообщение «ОНБ второго типа не существует».
1.	Вычислить р = 2п 4- 1, проверить условия ОНБ второго типа:
а)	р — простое число;
б)	2 является примитивным корнем из 1 по модулю р:
для каждого простого делителя д числа р - 1 выполняется	1.
Если хотя бы одно из этих условий не выполняется, то
вернуть сообщение «ОНБ второго типа не существует».
2. Вычислить вектор Ь\
для j = 0,..., п: вычислить двоичные коды N и М чисел и j,
принять bj
Г 1, если (-iJV&M) — О, 10 в остальных случаях.
3. Образовать нулевую n х п матрицу А (или образовать пустой список А).
Заполнить ненулевые элементы:
для к — 0,..., 2п вычислить я(к) — 2к modp;
для к = 1,..., 2п вычислить тг-1 (к) = dlog2fc modp;
для к — 0,..., п - 1
вычислить а(к) = (тг-1 (1 4- 2к) modp) mod n = (dlog2( 1 4- 2k) modp) mod n;
для к = 1,..., n - 1
вычислить p(k) — (тг-1(-1 4- 2k) modp) mod n =
= (dlog2(-l 4- 2k) modp) modn;
для fc = 0,..., n - 1
включить пару (к, cr(k)) в список А;
для к = 1,..., п - 1
включить пару (fc, р(к)) в список А.
4. Вернуть b и А.
Рис. 5.2. Алгоритм построения ОНБ второго типа
Вычисления а(к), к = 0,..., 13 и р(к), к = 1,..., 13 представлены в табл. 5.4
В список А включаются пары (к, (т(к)), к = 0,... , 13:
(0,1), (1,5), (2,8), (3,10), (4,7), (5,2), (6,12),
(7,4), (8,2), (9,10), (10,9), (11,9), (12,3), (13,13),
а также пары (к,ц(к)), к = 1,..., 13:
(1,0), (2,5), (3,12), (4,13), (5,1), (6,8), (7,11),
(8,6), (9,11), (10,3), (11,7), (12,6), (13,4).
ВЫХОД: вектор 6 = (60,... ,bn) = (I, 1,0, 0, 0, 0, 0, 0, 1, 1,0,0, 1, 1, 1) коэффициентов неприводимого многочлена 1 + X + Xs + X9 + X12 + А"13 + X14
236
Глава 5. Арифметика в нормальных базисах
Таблица 5.3
Вычисление минимального многочлена генератора ОНБ 2-го типа при п = 14
j	0 8	1 9	2 10	3 11	4 12	5 13	6 14	7
к= j + n к L 2 J	7 11	7 11	8 12	8 12	9 13	9 13	10 14	10
м = оъ	0000 1000	0001 1001	0010 1010	ООП 1011	0100 1100	0101 1101	оно 1110	0111
	1111 0111	1110 оно	1101 0101	1100 0100	1011 ООП	1010 0010	1001 0001	1000
N = (к)2	0111 1011	0111 1011	1000 1100	1000 1100	1001 1101	1001 1101	1010 1110	1010
-.(->М V ЛГ)	0000 0000	0000 0000	0010 0010	ООП ООП	0100 0000	0100 0000	0100 0000	0101
ъ	1 1	1 1	0 0	0 0	0 1	0 1	0 1	0
Таблица 5.4
Вычисление списка А для ОНБ 2-го типа при п = 14. a1 (k) = dlog(H-7r(fc)) modp = тг-1(1 -Ь тг(к)), а'~х(к) = (1 + ^г(^)) mod 29,	= а'(А0 mod 14, р'~Цк) = (-1 +
тг(&)) mod 29, р(к) = р'(к) mod 14
к	0 14	1 15	2 16	3 17	4 18	5 19	6 20	7 21	8 22	9 23	10 24	11 25	12 26	13 27	28
	1	2	4	8	16	3	6	12	24	19	9	18	7	14	
	28	27	25	21	13	26	23	17	5	10	20	11	22	15	1
			0	1	5	2	22	6	12	3	10	23	25	7	18	
7Г '(к)	13	27	4	21	11	9	24	17	26	20	8	16	19	15	14
	2	3	5	9	17	4	7	13	25	20	10	19	8	15	
a'(fc)	1	5	22	10	21	2	12	18	16	24	23	9	3	27	
a(fc)	1	5	8	10	7	2	12	4	2	10	9	9	3	13	
№l(fc)	0	1	3	7	15	2	5	11	23	18	8	17	6	13	
	—	0	5	12	27	1	22	25	20	11	3	21	6	18	
/z(fc)	—	0	5	12	13	1	8	11	6	11	3	7	6	4	
5.1. Оптимальные нормальные базисы
237
с корнем х — генератором ОНБ второго типа и таблица умножения (в виде списка координат единичных элементов, упорядоченного по возрастанию для наглядности)
А = {(0,1), (1,0), (1,5), (2,5), (2,8), (3,10), (3,12),
(4,7), (4,13), (5,1), (5,2), (6,8), (6,12), (7,4), (7,11), (8,2), (8,6), (9,10), (9,11), (10,3), (10,9), (11,7), (11,9), (12,3), (12,6), (13,13), (13,4)}.
Упражнение 5.1.5. Дайте обоснование алгоритма 5.1.2.
Указание. Используйте результаты разд. 5.2.5.
5.1.5. Алгоритм генерации оптимальных нормальных базисов третьего типа и доказательство их оптимальности
Базис третьего типа возникает, когда п нечетно, 2n-h 1 = р — простое число, а условие на q заменяется на то, что qn = l(modp), и при любом 0 < k < n qk l(modp) (другими словами, число q имеет по модулю р порядок п, а не 2п, как во втором случае, и тогда автоматически существует такое г, что q = г2 mod р, т. е. q — квадратичный вычет по модулю р, и поэтому все его степени qk modp, к — 0,..., п - 1 образуют перестановку множества всех квадратичных вычетов по модулю р, так как их ровно п штук).
Поскольку р равно 3 по модулю 4, то -1 является квадратичным невычетом по модулю р, потому что в противном случае существовало бы такое число г, что -1 = r2(modp), и тогда получилось бы противоречие с малой теоремой Ферма:
гр-1 = (^(р-о/2 =	= _1(modp)
Поэтому из того, что произведение вычета на невычет является невычетом, следует, что последовательность -qk modp, к = 0,..., п - 1 образуют перестановку множества всех квадратичных невычетов по модулю р.
Как и в случае базиса второго типа в качестве элемента £ берется примитивный корень степени р из 1 в поле GF(q2n), а в качестве порождающего элемента оптимального нормального базиса — элемент а = С + С'.
Доказательство оптимальности. Доказательство линейной независимости системы
{q, aq, aq ,... ,aq } отличается от случая базисов второго типа. Допустим противное, т. е.
7=0
238
Глава 5. Арифметика в нормальных базисах
для некоторого ненулевого вектора (а;) с координатами из поля GF(q), Подставляя равенства
а«’ =</+Г9',
получаем, что
п-1
SXc’--о.
7=0
Последнее равенство можно переписать в виде
2n—1
Е = °’
i=Q
если определить bi как ау, где i — ±qi modp (как было указано выше, последнее условие определяет число j однозначно; знак плюс соответствует случаю, когда число i — вычет, а знак минус — случаю, когда i является квадратичным невычетом по модулю р), значит многочлен
f(X) = £ ЬХ i=Q
имеет корни £ и £-1 в поле GF(q2n), а так как эти элементы имеют минимальные многочлены степени п каждый, причем они взаимно просты (в указанном поле корнями первого из них являются , i = 0,..., п - 1, а корнями второго — элементы (~qt, i = 0,... , n - 1), то многочлен /(X) над полем GF(q) должен делится на их произведение, что невозможно, так как его степень меньше 2п.
Проверка оптимальности построенного базиса почти ничем не отличается от второго случая. Достаточно проверить, что при к < п
1 4- qk = ±qa(k+^ modp и 1 - qk = ±q^ modp
(в последнем случае только при к > 0), тогда
^qk +	+	= aq<^
<+ Г9"'4 =	, к > 0.
Так же как и в случае второго типа, при п > к > 0 имеем
а^МС + С')(</+Г9‘) =
=	+ c-i-/ + С1-/ + С1+? =	+ а<?\
а при к = 0
=	+	+ + =	+ С1-/ = аг<‘\
5.1. Оптимальные нормальные базисы	239
Вычисление матрицы Т. Как и в случае второго типа, выписывая равенства
aaq = У?
7=0
и сравнивая их с полученными равенствами
t	п(»)	.	о	а(1)
aaq = aq 4- aq , г > 0, aaq — aq ,
Алгоритм 5.1.3
ВХОД: степень п расширения поля GF(2).
ВЫХОД: вектор b = (Ь15..., Ьп) коэффициентов многочлена
&о + Ь^Х 4- ... + bn_iXn~l 4- bnXn с корнем х — генератором ОНБ 3-го типа, таблица умножения А в ОНБ, порождаемом генератором х
(в виде матрицы или списка координат единичных элементов)
или сообщение «ОНБ третьего типа не существует».
1.	Вычислить р = 2n + 1, проверить условия ОНБ третьего типа:
а)	р — простое число;
б)	2n = 1 (mod р);
в)	для каждого простого делителя д числа п выполняется 2n^ modp 1.
Если хотя бы одно из этих условий не выполняется, то
вернуть сообщение «ОНБ третьего типа не существует».
2.	Вычислить вектор Ъ\
для j = 0,... п: вычислить двоичные коды N и М чисел и j,
к fl, если (-1N&M) = О, принять bj = < ’ х 7 J I 0 в остальных случаях.
3.	Образовать нулевую n х п матрицу А
(или образовать пустой список А).
Заполнить ненулевые элементы:
для к = 0,... 2п вычислить тг(&) = 2к modp;
для к, к = к1 вычислить 7г~1 (к) = dlog2fc modp;
для к = 0,..., п - 1
вычислить а(к) = (тг-1 (±( 1 + 2к)) =
= (dlog2(±( 1 4- 2к)) modp) mod n;
для к = 1,..., п - 1
вычислить — (тг~1(±(-1 4- 2кУ) modp) mod n =
= (dlog2(±(-1 + 2k)) modp) mod n;
для к = 0,..., n - 1
включить пару (к, (т(к)) в список А;
для к — 1,..., п - 1
включить пару (к, р(к)) в список А.
4.	Вернуть b и А.
Рис. 5.3. Алгоритм построения ОНБ третьего типа. Здесь t - числа такие, что к = 2* mod р
240
Глава 5. Арифметика в нормальных базисах
имеем
= ^сг(г+1),; “Ь	j >	7^	^0,j —
где J^j5 — дельта-символ Кронекера.
Отметим, что при нечетном q указанный базис не будет, как и в случае второго типа, оптимальным, но будет иметь линейную сложность.
Приведем в явном виде алгоритм 5.1.3 построения оптимального нормального базиса 3-го типа в поле GF(2n) (рис. 5.3). Матрицы Т и А также идентичны.
Пример 5.1.3. ВХОД: Степень п = 11.
1.	Условия ОНБ третьего типа выполняются:
а)	р = 2п + 1 = 23 — простое,
б)	211 mod 23 - 1.
2.	Вычислим вектор b коэффициентов многочлена с корнем х — генератором ОНБ 3-го типа. Вычисления приведены в табл. 5.5.
Таблица 5.5
Вычисление минимального многочлена генератора ОНБ 3-го типа при п = 11
3			0	1	2	3	4	5	6	7
к =	j + п 2		5	6	6	7	7	8	8	9
М = (j)2			0000	0001	0010	0011	0100	0101	0110	0111
-уМ			1111	1110	1101	1100	1011	1010	1001	1000
N = (fc)2			0101	0110	0110	0111	0111	1000	1000	1001
-.(-.М V N)			0000	0001	0000	0000	0000	0101	оно	0110
ъ			1	0	1	1	1	0	0	0
3			8	9	10	11				
к =	j + n 2		9	10	10	11				
М = (j)2			1000	1001	1010	1011				
->м			0101	0100	0111	0110				
N = (k)2			1001	1010	1010	1011				
			0000	0001	0000	0000				
b			1	0	1	1				
5.1. Оптимальные нормальные базисы
241
Таблица 5.6
Вычисление списка А для ОНБ 3-го типа при n = 11
к	0	1 12	2 13	3 14	4 15	5 16	6 17	7 18	8 19	9 20	10 21	11 22
7r(fc) = 2к mod 23	1	2 2	4 4	8 8	16 16	9 9	18 18	13 13	3 3	6 6	12 12	1 1
	—	0 10	1 7	8	2	4	9	6	3	5		—
(-1 - 7г(Л:)) mod 23	21	20 20	18 18	14 14	6 6	13 13	4 4	9 9	19 19	16 16	10 10	21 21
(1 4- тг(М) m°d 23	2	3	5	9	17	10	19	14	4	7	13	2
7Г-1 (1 +%(&))	1	8	—	5	—	—		—	2	—	7	1
тт1 (— 1 - %(£))	—	—	6	—	9	7	2	5	—	4	—	—
(У = 7Г-1(±(1 +7Г(&))	1	8	6	5	9	7	2	5	2	4	7	1
(-1 4- ?r(fc)) m°d 23	0	1	3	7	15	8	17	12	2	5	11	0
(1 - 7г(&)) mod 23	23	22	20	16	8	15	6	И	21	18	14	23
тг-1 (1 — тг(Дг))	—	—	—	4	3	—	9	—	—	6	10	
TT'^-l 4-7r(fc))	—	0	8	—	—	3		10	1	—	—	—
/x(fc) = 7г-1 ± (1 - 7r(fc)) mod 14	—	0	8	4	3	3	9	10	1	6	10	
3. Вычислим 11 х 11-матрицу А (в виде списка координат ее единичных элементов).
Вычисления а(к), к — 0,..., 13 и р(к), к = 1,..., 13 представлены в табл. 5.6.
В список А включаются пары (fc, а(Л)), к = 0,..., 10:
(0,1), (1,8), (2,6), (3,5), (4,9), (5,7), (6,2), (7,5), (8,2), (9,4), (10,7), а также пары (к, //(&)), к — 1,..., 10:
(1,0), (2,8), (3,4), (4,3), (5,3), (6,9), (7,10), (8,1), (9,6), (10,10).
ВЫХОД: вектор Ъ = (1,0, 1, 1, 1,0, 0, 0, 1,0, 1, 1) коэффициентов минимального многочлена 1 + X2 4- X3 4- X4 * * * 4- X8 * 4- JT10 4- X11 генератора х ОНБ третьего типа при п = 11 и таблица умножения в этом базисе (в виде списка координат единичных элементов)
Л ={(0,1), (1,0), (1,8), (2,6), (2,8), (3,4), (3,5), (4,3), (4,9),
(5,3), (5,7), (6,2), (6,9), (7,5), (7,10), (8,1), (8,2), (9,4),
(9,6), (10,7), (10, 10)}.
242
Глава 5. Арифметика в нормальных базисах
Упражнение 5.1.6. Дайте обоснование алгоритма 5.1.3.
Указание. Используйте результаты разд. 5.2.5.
Мы рассмотрели построение оптимальных нормальных базисов. Теперь можно перейти к алгоритмам преобразования представления элементов в этих базисах в представление в стандартном базисе и наоборот.
5.2. Оптимизация преобразований базисов
5.2.1. О комбинированном использовании полиномиального и нормального базисов
Программно реализованные стандартные алгоритмы умножения в оптимальных нормальных базисах оказались медленнее [14,15,17,105] алгоритмов умножения в стандартных базисах даже в полях небольших размерностей (в диапазоне 150-350), а с ростом размерности они становятся еще хуже. Сравнение двух типов базисов, стандартного и нормального, наводит на мысль об ускорении арифметики в конечных полях за счет использования выгодных сторон каждого из них. Действительно, умножение быстрее производить в стандартном представлении поля GF(2n), а возведение в степень — в нормальном представлении.
Для реализации этой этой идеи понадобятся матрицы перехода от нормального базиса к стандартному и обратно, которые могут оказаться не разряженными, а плотными, и тогда сложность перехода от одного базиса к другому в худшем случае будет O(n2/logn) (если использовать для умножения матрицы на вектор метод «четырех русских»).
Но в удачном случае сложность перехода может оказаться даже не выше линейной, например, в случае, если число ненулевых элементов в матрицах переходов будет О(п). Таким образом, возникает задача поиска нормальных базисов с «простыми» матрицами переходов к стандартным базисам и обратно.
Эта задача легко решается в случае оптимальных нормальных базисов первого типа. Напомним, что первый тип нормальных базисов возникает лишь в случае, когда п + 1 = р — простое и q — примитивный корень по модулю р.
Далее под сложностью понимается арифметическая сложность в классе схем из операций сложения и умножения в основном подполе GF(q). Теорема 5.2.1. Переход от стандартного базиса поля GF(qn) к соответствующему (с тем же генератором) оптимальному нормальному базису первого типа (если, конечно, он существует для данного п) и обратно можно выполнить с линейной сложностью.
Доказательство. Легко видеть, что в этом случае базис {£,...,£”} (не совсем стандартный) совпадает с точностью до перестановки с оптимальным нормальным базисом
{с, сП,
5.2. Оптимизация преобразований базисов
243
так как последовательность чисел 1, q, q2,..., qn 1, вычисленных по модулю р, совпадает с некоторой перестановкой
в силу того, что ( есть примитивный корень р-й степени из единицы в поле GF(qn), a q — примитивный корень по модулю р.
Поэтому, очевидно, переход от базиса	к нормальному
базису
к, сП
и обратно выполняется с оценкой сложности не более чем п.
Отметим попутно, что £ является корнем неприводимого над полем GF(q) многочлена
П Хр - 1
i + x + ... + xn = ——-.
-Л. — 1
Стандартным базисом для перехода будет базис {1, £,..., С-1}. Очевидно, он с линейной сложностью выражается через базис {£,..., £п}, поскольку
Cn = 1 + С + ... + С"-1, и обратно, базис О, благодаря формуле
1 = с +... + С"-1 + сп,
Алгоритм 5.2.1
ВХОД: Степень п расширения поля GF(2), вектор (60, • • •, ЬЛ-1) € GrF(2n) коэффициентов многочлена, представленного в ОНБ 1-го типа.
ВЫХОД: Вектор (а0,..., an_i) € GT(2n) коэффициентов того же многочлена, представленного в стандартном базисе с тем же генератором.
1.	Для к = 0,..., 2п - 1 вычислить 7г(&) = 2к mod п;
Для I = 1,..., 2п вычислить 7r-1(Z).
2.	Вычислить вектор (сь ..., сп) коэффициентов того же многочлена в почти стандартном базисе: принять Ci =
для i — 2,... , п принять сг — Ь^-х^.
3.	Вычислить вектор (а0, • • •, an-i)-если Ci = 1, то инвертировать все элементы вектора (с2,..., сп).
4.	Взять в качестве вектора (а0, • • •, an-i) вектор (cb ..., сп).
5.	Вернуть (о0, • • •, an_i).
Рис. 5.4. Алгоритм преобразования представления вектора в ОНБ первого типа в представление в стандартном базисе
244
Глава 5. Арифметика в нормальных базисах
Алгоритм 5.2.2
ВХОД: Степень п расширения поля GF(2), вектор (а0> •, оЛ-1) G GF(2n) коэффициентов многочлена, представленного в стандартном базисе.
ВЫХОД: Вектор (&0, • • •, &n-i) £ GF(2n) коэффициентов того же многочлена, представленного в ОНБ 1-го типа с тем же генератором или сообщение «ОНБ первого типа не существует».
1.	Вычислить р = п 4- 1, проверить условия ОНБ первого типа:
а)	р — простое число;
б)	2 является примитивным корнем из 1 по модулю р: для каждого простого делителя числа п выполняется 2п/<у 7^ 1.
Если хотя бы одно из этих условий не выполняется, то вернуть сообщение «ОНБ первого типа не существует».
2.	Для к = 0,..., 2п - 1 вычислить = 2к mod п.
3.	Вычислить вектор (сь ..., сп) коэффициентов того же многочлена
в почти стандартном базисе:
принять (ci,..., сп) = (а0, • • •, fln-i),
если Со = 1, то инвертировать элементы (с2,..., сп).
4.	Вычислить вектор (bQ, ... , bn_i):
ПРИНЯТЬ Ъп-1 = С[,
для i = 0,..., п - 2 принять Ьг =
5.	Вернуть (&0, • • •, Ьп-1).
Рис. 5.5. Алгоритм преобразования представления вектора в стандартном базисе в представление в ОНБ первого типа
с линейной сложностью выражается через базис {1, (,..., (п-1}. В результате имеем, что переход от оптимального нормального базиса
{С С*, сЛ..., </-}
к стандартному базису	С-1} и обратно выполняется с линейной
сложностью.
Приведем алгоритм 5.2.1 преобразования представления в ОНБ первого типа к представлению в стандартном базис (на рис. 5.4) и алгоритм 5.2.2 обратного преобразования (рис. 5.5), которые вытекают из доказательства теоремы 5.2.1.
Напомним, что первый тип оптимальных нормальных базисов в поле GF(2n) возникает лишь в случае, когда п + 1 = р — простое и 2 — примитивный корень по модулю р.	
Умножение в стандартном базисе	, (п-1}, как обычно, сво-
дится к умножению многочленов над полем GF(q) и последующей редукции по модулю неприводимого многочлена f(X) = 1 + X + ... + Хп,
5.2. Оптимизация преобразований базисов
245
соответствующего этому базису. Отметим, что деление с остатком на этот многочлен можно выполнить с линейной сложностью.
На самом деле удобно не переходить к базису	£п-1}, а ра-
ботать в базисе {(,..., £п}. Тогда нужно будет перемножать многочлены вида +. . + anXn и полученный результат приводить по модулю /(X) (так как переход к стандартному базису не изменяет многочлен по этому модулю.) Умножение таких многочленов, очевидно, сводится к умножению многочленов степени n- 1. Полученное произведение д(Х) степени 2п надо разделить на f(X) и найти остаток (только он нам и нужен), т. е. надо представить д(Х) в виде д(Х) = f (X)h(X) 4- r(X), где степень г(Х) меньше п. Умножив обе части равенства на X — 1, получим д(Х)(Х - 1) = (Хр- l)/z(X)+r(X)(X-1), а так как степень г(Х)(Х-1) меньше п4-1 = р, то г(Х)(Х - 1) — остаток от деления д(Х)(Х - 1) на Хр — 1. Для умножения д(Х) на X - 1 достаточно сделать 2п — 2 сложений (в поле а для деления результата на Хр - 1 достаточно выполнить п - 2 сложений и, наконец, для деления полученного остатка г(Х)(Х — 1) на X — 1 с помощью схемы Горнера достаточно будет сделать п сложений.
Упражнение 5.2.1. Докажите, что сложность умножения в поле GF(2n} в случае использования оптимального нормального базиса первого типа не превосходит М(п) 4- 4п — 4, где М(п) — сложность умножения двоичных многочленов степени п - 1.
5.2.2. Пример выполнения алгоритма перехода от оптимального базиса первого типа к стандартному и обратно
Переход от оптимального нормального базиса первого типа поля GF(24) к стандартному. Пусть дано: п = 4, оптимальный нормальный базис первого типа В = {£2 , к = 0, 1, 2, 3}, элемент, записанный в этом базисе, f -1-С2° + о-<21 + ь<22 + 1<2\
Надо найти: запись f в стандартном базисе А = {1, £, (2, £3}.
Шаг 1. Переход от базиса нормального к почти стандартному базису Л' =
В начале найдем перестановку тг(г) множества чисел {1,..., п}, совпадающей с последовательностью степеней 1, 2, 22,..., 2П~1, вычисленной по модулю р = п + 1:
2° 21	22 23
12	4	3
(mod 5)
(mod 5)
(5.1)
т. е. в базисе Л! многочлен / запишется следующим образом:
/ = I. ( + о  С2 + 1  С4 + 1 • С3.
Шаг 2. Переход от почти стандартного базиса к стандартному базису. Выразим единицу, и тогда в стандартном базисе А многочлен f запишется
246
Глава 5. Арифметика в нормальных базисах
следующим образом:
f = (1 + 1)С + (о + 1)С2 + (1 + 1)4 +1 • С°,
т. е. f = 1 + С2-
Переход от стандартного базиса поля GF(24) к оптимальному нормального базису 1-го типа. Пусть дано: п = 4, стандартный базис А — {1, £2, £3}, многочлен, записанный в этом базисе, f = 1 4- X2 4- X3.
Надо найти: запись f в оптимальном нормальном базисе 1-го типа в = {с2к, & = о, ...,з}.
Шаг 1. Переход от стандартного базиса к почти стандартному базису.
Выразим коэффициент при CJ1 и тогда в почти стандартном базисе А1 многочлен / запишется следующим образом:
f = (о+ 1)С + (1 + 1)4 + (1 + 1)С3 +1 • С4,
т. е. f = С + С4.
Шаг 2. Переход от почти стандартного базиса к оптимальному нормальному базису.
Сделав обратную перестановку к перестановке (5.1), перейдем к записи многочлена в оптимальном нормальном базисе В:
/ = С + С22.
5.2.3. Примеры построения логических схем для умножения в стандартном и оптимальном нормальном базисе первого типа
Определение схемы см. в разд. 2.1.11, с. 66.
Для примера разберем случай поля GF(210). В этом поле существует оптимальный нормальный базис первого типа, и можно сравнить схемы для этого базиса со стандартными схемами. Сначала возьмем стандартный базис 1, х, х2,... х9 с минимальным многочленом р(Х) = 1 4- X3 4- 2Г10, р(х) = 0. Есть еще неприводимый трехчлен 1 + X1 + X10, он взаимен к этому, но для деления удобен именно первый из них, потому что в нем степень среднего члена меньше половины степени старшего. Схема для умножения произвольных элементов
а = aQ + а^х + ... 4- а9х9 и b = 60 4- Ъ^х 4-... 4- bgx9, интерпретируемых как многочлены
clq 4~ а>\Х 4- ... 4~ dgX , bo 4~ Ь\Х 4~ • • • 4~ ЬдХ ,
состоит из схемы для обычного умножения двоичных многочленов, дающей результат
Щ 4" X 4~... + ^18-^ ?
5.2. Оптимизация преобразований базисов
247
и схемы, находящей остаток	,
r(X) = Zo + zlX + ... + zn^lXn-1
от деления этого результата на трехчлен р(Х), интерпретируемый как элемент z = zg + z^x + . . .-\-zn-\Xn~l — произведение элементов а и Ъ. Эту схему проще построить непосредственно, не сводя деление к умножению, как в общем случае деления на произвольный многочлен2 * *). Сложность этой схемы будет линейная, а глубина — ограниченная. Например, для этой схемы можно выписать формулы для ее выходов zg,..., Zg обозначают промежуточные результаты):
Zg = Wg + Ug = Мм + U17 + Ug,
ZY = Wi + U\ = UU + U18 + Iti,
Z2 = W2 + U2 = Ui2 + U2,
Z3 = Wg + (w3 4- U3) = П10 4- U17 4- U13 4- u3,
z4 = Wj + (w4 4- Щ) = un 4- u18 4- TZ14 4- u4,
z5+i = w5+z- + u5+i 4- w2+i =	4- г/12+г 4- u5+j, i = 0, 1, 2, 3,
Zg = W6 + Ug = U16 4- Ug.
Сложность стандартной схемы для умножения многочленов степени 9 равна 102 4- 92 = 181, а глубина равна 5, причем такую глубину имеют только выходы Us, Ug, U\g. Глубина Wj = un 4- un тоже равна 5, так как это билинейная форма
СЬдЬ2 4- . . . 4~ U2bg 4- U^bg 4“ Ugb^
с 10 слагаемыми. Глубина w4 4- u4 = u!4 4- щ равна 5 по той же причине. Поэтому глубина г4 = wj 4- (w4 4- u4) равна 6. Аналогично глубина z3 равна 6. Глубина остальных выходов тоже не больше 6. Сложность всей схемы приведения по модулю р(Х) равна 18, а полная сложность равна 199.
Полином q(X) = 1 4- X 4-... 4- X10 неприводим. Можно его использовать вместо р(Х). Удобно далее вместо базиса 1, х, х2,..., х9 с минимальным многочленом р(Х), р(х) = 0 использовать базис х, х2,..., ж10 с минимальным многочленом д(Х).
Схема для умножения произвольных элементов
a = ад 4- а\Х 4- ... 4- адх9 и Ъ = Ьд 4- Ь^х + ... 4- Ьдх9,
интерпретируемых как многочлены
Ug 4- U\X 4- ... 4- UgX , Ьд 4“ Ь\Х 4- ... 4- ЬдХ ,
2) Схема вычисляет коэффициенты многочлена-произведения многочленов, они же —
коэффициенты линейной комбинации, представляющей произведение элементов поля в том
или ином базисе.
248
Глава 5. Арифметика в нормальных базисах
состоит из схемы для обычного умножения двоичных многочленов, дающей результат
UqX 4- U\X 4-... 4- ^18^ 5 и схемы, находящей остаток
г(Т) = го + г1Х + ... + гп_1Х’’-1
отделения этого результата на многочлен q(X)X) в виде zqX + .. .+29Л'10. Для такого деления можно выполнить обычное деление многочлена
UqX 4- щX2 4-... 4" U\$X^
на многочлен q(X) в с обычным остатком вида zq 4-... 4- Z9X9. Чтобы выполнить это деление, сначала разделим
UqX 4- U\X + . . . 4~ tZisJT
наХ11 4-1 и найдем остаток, равный
~F (^о 4-	4-	+ 142)-^ 4~ .. • 4~ (uj 4- tzi8)XT8 4- щХ^ 4- щХ ,
а потом поделим этот остаток на q(X), для чего нужно отнять от него Щр(Х), И получим
г0 4" Z\X 4- . • • 4- ZgX^ — U\q 4~ ug 4- (uq 4- tzu 4" Ug)X 4~
4” (U\ 4~ U\2 4~ Ug)X 4" • • • 4" (u-j 4- tZjg 4- Ug)X 4- (u$ 4- Ug}X ,
— остаток от деления рассматриваемого произведения на q(X).
Глубина zq = Uio-H^9 равна 6. Аналогично глубина zg равна 6. Глубина остальных выходов тоже не больше 6, так как иг 4- tin это билинейная форма с 9 слагаемыми. Сложность всей схемы приведения по модулю р(Х) равна 18, а полная сложность равна 199.
Нормальный базис, порожденный элементом ж, состоит из элементов {ж, ж2, ж4, ж8, ж16,..., ж2 }.
Он же будет оптимальным нормальным базисом. На самом деле он просто является перестановкой базиса
{ж, ж2,..., ж10},	1 4- ж 4-... ж10 = 0.
Действительно, ж11 = 1, xk 1, k = 1,..., 10, а так как
24 = 5(modll), 25 = 10(mod 11), 26H9(modll), 27 = 7(modll),
2s = 3(modll), 29 = 6(modll), 210 = l(mod 11),
TO
5.2. Оптимизация преобразований базисов
249
Поэтому переход от координат (ж^..., Жю) в базисе {х, ж2, ж4, ж8, ж16, ..., ж2’} к координатам в базисе {ж, ж2,..., ж10} сводится к их перестановке в порядке (жь ж2, Жд, Ж8, Ж5, Жю, Ж9, ж7, жз, Жб). Обратный переход сводится к обратной перестановке.
Общая оценка сложности мультиплера Месси—Омуры равна п(Св 4-п - 1), и в рассматриваемом случае она равна 280, а глубина равна 6.
Однако в оптимальном нормальном базисе первого типа можно построить схему той же глубины и меньшей сложности, выполнив вначале переход к соответствующему стандартному базису с помощью указанной выше перестановки координат, потом выполнить описанное умножение в стандартном базисе со сложностью 199 и глубиной 6, а потом вернуться в нормальный базис, выполнив обратную перестановку.
Теперь можно описать, как делать инвертирование с помощью нормальных базисов. Пусть п-1
£ = 52Xix2'
г=0
произвольный ненулевой элемент поля GF(2n), записанный в любом нормальном базисе
(	2	4	8	16	291
|Ж, Ж,Ж,Ж,Ж , . . . , Ж }.
По теореме Ферма обратный элемент можно вычислить по формуле = ^-п~2. Для примера сделаем это при п = 10. Для возведения в степень надо построить аддитивную цепочку для числа 2П - 2, содержащую минимальное число сложений (а удвоения можно не учитывать). Для этого сначала надо построить минимальную линейную аддитивную цепочку для числа п - 1 = 9 (линейную — значит в ней каждое число получается или удвоением предыдущего числа или прибавлением к нему какого-то более раннего числа из этой цепочки). Например, ею будет цепочка 1, 2, 4, 8, 9. После этого выписываются в ряд числа
21 - 1, 22 - 1, 24 - 1, 28 - 1, 29 - 1, и между ними вставляются последовательности удвоений
1 = 21 - 1, 2, 3 = 22 - 1, 3-2, 3-4,
15 = 24 - 1, 2(24 - 1), 4(24 - 1), 8(24 - 1), 16(24 - 1),
255 = 28 - 1, 2(28 — 1), 511 = 29 - 1, 1022 = 2(29 - 1).
Так как удвоения реализуются путем соответствующей коммутации входов, то сложность инвертирования в поле GF(210) оценивается как J(10) < 4М(10), где 7И(10) сложность умножения в нормальном базисе. Аналогично глубина оценивается как DI (10) < 4Р7И(10). Если использовать указанную выше схему для умножения в нормальном базисе, то сложность инвертирования будет 4 • 199 = 796, а глубина 4 • 6 = 24.
250
Глава 5. Арифметика в нормальных базисах
Используя метод Карацубы, умножение двух двоичных многочленов степени 9 можно свести к трем умножениям многочленов степени 4, и сложность будет 159, а глубина 6. Если добавить схему приведения по модулю многочлена 1 4- X 4- ... 4- X10, то получается схема сложности 178, а глубины 7.
5.2.4. Оценка сложности перехода от оптимальных нормальных базисов второго и третьего типа к стандартным и обратно
Вначале докажем несколько вспомогательных утверждений (следующая далее лемма выполняется и для общего случая).
Пусть х — «1 — генератор оптимального нормального базиса
{ofi,... ,ап}
второго типа поля GF(qn), он же генератор соответствующего стандартного базиса {ж0,..., жп-1}, т. е. «1 = я = ( 4-	, и при любом к п
„к-1	„к-1	„к-1
ак = х9 = <?	,
где £ — примитивный корень из 1 степени р = 2п 4-1 в поле GF(q2n).
Пусть q = рг, где р. Рассмотрим вспомогательную последовательность oq, ..., порожденную элементом х. Положим ао = 2 (в случае р = 2, естественно, а0 = 0) и, далее, ок =	4- к = 1, 2,..., ai = «i.
Элементы о^, 02,... 9 оп этой последовательности образуют почти нормальный базис, являющийся перестановкой элементов нормального базиса.
Лемма 5.2.1. Для любого к 1 имеют место следующие рекуррентные соотношения'.
1-	^+1 — ак&\ ~ 0>к-\-
2.	арк = хр .
3.	Орк _|_j —	Орк__
Доказательство. Для доказательства первой формулы заметим, что (4 + г*)(с + с1) = 4-1 + ci+1+4+1 + с*-1, т. е. окох — o^-i =
Вторая формула очевидна.
Третья формула проверяется непосредственно:
v+! = /+‘ + С~рк~1 = (</ + сркЖ + п - (4м + Гч<) =
рк	
— Орк О^ Орк — X Ог Орк £.	IH
Рекуррентные соотношения, доказанные в лемме, позволяют записать формулы перехода от почти стандартного базиса	к почти
нормальному базису.
5.2. Оптимизация преобразований базисов
251
В случае р = 2 вычитание в лемме, естественно, можно заменить сложением.
Из леммы следует, что для любого i 1 элемент at почти нормального базиса аг выражается в виде значения некоторого многочлена степени i над полем GF(q), т.е.
i
ai = fi(x) =
}=l
Выразив таким образом все элементы а, почти нормального базиса в почти стандартном базисе, получим матрицу перехода Fn = от почти стандартного базиса к почти нормальному. В этом случае (т. е. когда р = 2) плотность S(Fn) (количество ненулевых элементов) матрицы Fn оценивается следующим образом:
Теорема 5.2.2. Плотность матрицы перехода от почти стандартного базиса поля GF(2n) к почти нормальному базису второго или третьего типа равна О(т№23).
Из этой теоремы видно, что матрица перехода является разряженной, и уже это позволяет осуществлять быстрое умножение в этом базисе. Далее будет получена еще лучшая оценка сложности вычисления перехода от стандартного базиса к нормальному и обратно, чем непосредственно вытекающая из этой теоремы. Хотя сама по себе теорема использоваться не будет, приведем все же кратко ее доказательство, так в его ходе проясняется структура матрицы перехода.
Согласно формулам леммы 5.2.1, матрица F^x, построенная с их помощью, имеет при п = 2* - 1 вид:
/ Fn оп Оп
= 0...0 1 0...0
\ Gn оп Fn
где оп — нулевой вектор-столбец высоты п, Оп — нулевая п х п матрица, матрица Gn есть симметричное отражение матрицы Fn относительно средней строки, т.е. Gn — InFn, где 1п = (<5г>п_г+1) — матрица с единицами на побочной диагонали и нулями в остальных местах. Например, матрица F7 выглядит так:
О О
1 О
О 1
О О
О 1 1 О
О О
о о о о\
0 0 0 0
0 0 0 0
10 0 0
0 10 0
0 0 10
0 10 1/
252
Глава 5. Арифметика в нормальных базисах
Если разбить матрицу на 4 квадратных подматрицы, удалив среднюю строку и средний столбец, получим, что левый верхний квадрат 3x3 симметричен относительно горизонтали левому нижнему и равен нижнему правому квадрату. Средняя строка и средний столбец содержат ровно одну единицу, лежащую на их пересечении. Матрица является нижнетреугольной с единицами на главной диагонали.
Действительно, в общем случае согласно лемме 5.2.1 при 0 < i 2к
2к+г	г	k 2k-i
3 f2k-\-i,j'£	^2к-\-г ОцХ ~Ь 0>2к—г —	2	’ “Ь 2 /2^-2,
откуда имеем	при 0 < j sj 2к, и /2‘+г,2‘+3 = f>,}’ ПРИ
1	j 2к.
Опираясь на это представление, можно получить следующую рекуррентную формулу для вычисления плотности последовательности мат-риц Fn:
S(F2n+l) = 3S(Fn) + 1, п > 3, 5(F3) = 4, из которой вытекает рекуррентная формула
5(^-0 - 35(^-1_!) + 1, к > 2, S(F3) = 4.
Полагая 1(к) =	перейдем к линейному рекуррентному соотно-
шению 1(к) = 31(к - 1) + 1, 1(2) = 4, решением которого будет 1(к) = (Зк - 1)/2, Обозначив п = 2к - 1 и выразив Зк = (2fc)log23 =(n + l)log23, получим, что
S(Fn) = 1(к) = ^ + 1^О82 3 ~1 = O(nlog23).
В общем случае равенство S(Fn) = О(п[°ё2 3) сохраняется, так как выбрав к таким образом, что 2к - 1 < п < 2^+1 - 1, можно заметить, что матрица Fn является главной подматрицей матрицы Fm, m = 2к - 1, откуда имеем
S(Fn) S(Fm) = O(mlo& 3) = O(nlog2 3).
Аналогично можно оценить плотность матрицы F', перехода от стандартного базиса поля GF(2n) к нормальному. Обозначим Вп матрицу перехода от стандартного базиса к почти стандартному, тогда F^ = Fn-Bn, и непосредственно проверяется, что в матрице Вп все элементы нулевые, кроме элементов Ьг,г+1 = 1 над диагональю и некоторых элементов нижней строки Ъп,3, и справедливы следующие равенства для элементов матрицы F^:
Л,1 = fi,nbn,\ —	"Г
так как в силу того, что матрица Fn нижнетреугольная, для ее элементов имеем /|)П = дг,п, где 6г,п — дельта-символ Кронекера. Складывая эти
5.2. Оптимизация преобразований базисов
253
равенства, получим, что
п,п—\	п	п
Ж)= $2 /!j+526^=5№)-1+Z6^^5(F")-1+n=o(n'0823)-
г=1,7 = 1	j=\	j=l
Обозначим через L(Fn) сложность линейного преобразования, определяемого матрицей Fn (в данном случае — это наименьшее число операций сложения по модулю два, необходимых для вычисления этого преобразования).
Теорема 5.2.3. L(Fn) у log2 п 4- 2n = O(n log2 п).
Доказательство. Нам будет удобно оценивать сложность преобразования, задаваемого транспонированной матрицей F?, которая равна L(Fn) согласно известной лемме о взаимосвязи сложности транспонированных матриц (см., например, [27]). Впрочем, для дальнейшего нам нужно будет оценить сложность перехода от координат в нормальном базисе
п Е XiUi i=l
к координатам в почти стандартном базисе
2><
2=1
которая определяется как раз матрицей F^. Пусть 2k < n 2fc+1, тогда с использованием формул из леммы 5.2.1 имеем
n	п	2к	п
Е^Е^-Е3^ Е х^ =
2	= 1	2=1	2=1	2 = 2fc + l
2к	п-2к	2к	п—2к
—	^г’^г 4"	*^2H-2fc^2’+2fe ~ O'i 4"	Xj_|_2fc((Z 0>i 4- (Z2fe_z) —
2=1	2=1	2=1	2=1
2*+1-n-l	2fc-l	n-2k
— X2k(^2k 4”	*^2^2 4~	(^2 4" X2k+1 —i^Cbi 4” Q>~	*Ej4-2fc^i,
2=1	2 = 2*-'+l— П	2 = 1
где ао = 0. Далее, определяя вектора-столбцы
JT = {ж|,..., xn} ,
j —	... , 272&+1 —J2_j, x2&+1 —yj 4- Xfiy..., «с2&—] 4~ ж2*_|_i, ж2*} ,
где, естественно, в случае n = 2к+{ - 1
.Xi = {#1 4" хп,..., ж2*_1 4- #2*+l> *^2*} >
254
Глава 5. Арифметика в нормальных базисах
а в случае п = 2fc+1
Х1 = {Хг 4- Хп-1, . . . , 2?2fc-l + ж2* + 1, x2k}Ti
и во всех случаях
— {£i-|-2fc? • • • , хп} ,
и вектора-строки
У1 = {У\, •••	Ъ = {3/1+2*> ••• ,Уп},
получим
п	п	2к	п-2к
Угх = У 2 xi^i —	4“ £	-^2,i^i ~
г = 1	2=1	2 = 1	2=1
2к	п—2к
— УЗ Yl,ial + У? ^2,г4-2ш?+2^ i=l	г=1
значит
F^X^(y,l...y,n) = (Yi9Y2) =	(5.2)
где 0 — операция умножения матрицы на вектор в поле GF(2). Разумеется, последнее равенство можно было получить, основываясь только на структуре матрицы Fn. Осталось индуктивно оценить сложность преобразования координат, определяемого матрицей F%\ Согласно равенству (5.2)
L(2m+1) < 2m - 1 + 2L(2m), m к - 1, L(2) = 2.
По индукции непосредственно проверяется, что
£(2m) = 2m-1m+ 1.
Для произвольного п в пределах 2к < п < 2fc+l получим
L(n) L(2k) + L(n -2к) + п-2к.
Записывая п в двоичной системе
п = 2к‘ + ... + 2*1,
где ks > ... > ki, получаем, что
Z(n) 2k‘"xks + ... + 2i|-1fc1 + s- 1 + (n - 2*') + ...
7	I.	k;\ П	n
... + (n - 2 ’ - ... - 2 2)	- log2 n + c-,
где
5.2. Оптимизация преобразований базисов
255
Докажем следующую теорему [16].
Теорема 5.2.4. Сложность В(п) перехода в поле GF(2n) от оптимального нормального базиса второго или третьего типа к соответствующему стандартному и наоборот удовлетворяет неравенству
/ ч п
В(п) - log2 п + Зп.
Доказательство. Обозначим х = ( + генератор стандартного базиса
А = {1,х},,хп~1} и базиса второго или третьего типа
В = {х2 , х2 ,..., х2 }.
Переход от нормального базиса к стандартному. Переход будет осуществляться через цепочку из четырех базисов
В В1 -> А! -4 А
и преобразования координат элемента f поля GF(2n) в этих базисах
п	п	п	п
f = xix2‘1 = 52 x'iai = 52 y'ixl = 52
г=1	i=\	i=l	2 = 1
где сц обозначает C? -h £~г, В1 = {«i,..., an}, A1 — {xx,..., xn}.
Переход от базиса В к базису В' и преобразование координат х к координатам х'. Этот переход осуществляется перестановкой базисных элементов, и действительно, существует такая перестановка тг(г') чисел {1,..., п}, что для любого i = 1,..., 2п выполняется равенство
2г modp = ±7г(г) G {1,... , п}.	(5.3)
В самом деле, для базиса второго типа последовательность степеней
1 2 22	22п—1
вычисленных по модулю р, совпадает с некоторой перестановкой
7г( 1), . . . , 7г(2п)
множества чисел {1,..., 2п} в силу того, что 2 — примитивный корень по модулю р. А в силу эквивалентности
2k+n = -2k(modp),
(по теореме Ферма 22" = l(modp), значит, 2” = -l(modp)) окончательно получим формулу (5.3).
В случае же базиса третьего типа число 2 является квадратичным вычетом по модулю р, поэтому все степени 2*(modp), к = 1,..., п - 1
256
Глава 5. Арифметика в нормальных базисах
образуют перестановку множества всех квадратичных вычетов по модулю р, так как их ровно п штук. Добавив к этому тот факт, что р равно 3 по модулю 4, и поэтому —1 является квадратичным невычетом по модулю р, так как в противном случае существовало бы такое число г, что -1 = г2(modp), а это бы приводило к противоречию с теоремой Ферма:
rp-i = (г2)(р-1)/2 =	= _1(modp))
и тот факт, что произведение вычета на невычет является невычетом, получаем, что последовательность —2k modp, к — 0,... ,п - 1 образует перестановку множества всех квадратичных невычетов по модулю р, в итоге получаем, что и в этом случае верна формула (5.3).
Таким образом, мы получили, что базис {аь ..., ап} есть просто перестановка базиса {ж,..., ж2” }. Отрицательные индексы можно заменить на соответствующие положительные благодаря равенству = С +	= а~г по формуле х2' = (или для координат Xi = ^^j).
Поэтому далее везде будем считать индексы положительными, и знак модуля числа будем опускать.
Очевидно, В' — тоже базис, так как он есть просто перестановка базиса В. Можно считать, что сложность перехода Двв'(п) = О(п), а если рассматривать не программную, а схемную реализацию, то даже Ьвв’(п) = 0.
Переход от базиса В' к базису А' и преобразование координат х' к координатам у1. Согласно теореме 5.2.3 его сложность оценивается как
п
L(n) < - log2 п + 2п.
Переход от базиса А1 к базису А и преобразование координат у' к координатам у. По рекуррентной формуле (5.2) можно в явном виде построить минимальный многочлен тх (он строится лишь однажды, до применения алгоритма перехода, поэтому сложность его построения в сложности алгоритма не учитывается), т. е.
тх = fn(x) = box1 + ... + bnxn = 0,	(5.4)
где х — генератор этих базисов, и не все коэффициенты bi равны нулю. Сделаем явный переход от координат у’ в почти стандартном базисе А' к координатам у в стандартном А. Учитывая выражение (5.4),
п	п-1	п-1
52 y'ixl = 52 y'ix>+52biX>’ i—l	i=0
после перегруппировки коэффициентов имеем
п	п-1	п-1
52 y'rf = 52 ^y't+= 52 у^г + у^’	(5-5>
i=l	г=1	г=1
5.2. Оптимизация преобразований базисов
257
откуда видно, что сложность перехода от почти стандартного базиса А' к стандартному А оценивается как Ьа>а(п) п — 1.
Итак, мы оценили сложность каждого преобразования, теперь осталось их сложить:
ЪВА(п) =	+ LB'A'(n) + LA'A(n) у log2 n + 3n.
Переход от стандартного базиса к нормальному. Теперь покажем, что теорема верна и при обратном переходе, т. е. от стандартного базиса А к базису второго или третьего типа В. Опять определим цепочку переходов, но уже в обратном порядке:
А -> А! -> В1 -+ В.
Переход от базиса А к базису А1 и от координат у к у'. Опять же в силу рекуррентной формулы (5.2) у нас есть минимальный многочлен (5.4), из явного вида которого мы можем выразить х°, а именно:
п
х' = ’^bixt.	(5.6)
i=l
Сделаем явный переход от координат у в стандартном базисе А к координатам у' в почти стандартном А'. Принимая во внимание выражение (5.6), имеем п-1	п-1	п
22 = 22 у<х'+у° 22biX'^
i=Q	i=l	i=l
после перегруппировки коэффициентов получим
71-1	П-1	П-1
22 У*х' = 22^(3/* + Ш) +Уох" = ^у',х1 +У'пхп, (5.7) 7=0	7=1	7 = 1
откуда видно, что сложность перехода от стандартного базиса А к почти стандартному базису А' оценивается как Laa' (п)	- I.
Переход от базиса А' к базису В' и преобразование координат у' к координатам х'. Вычислим преобразование
(// \
2/1 \
...
И I
Уп /
умножения вектора YT на матрицу (F22+i)T (обратную к матрице из теоремы 5.2.2) с помощью (5.2). В этой формуле рекуррентно выполнялись преобразования с векторами Х\ и Х2, переводящие их в вектора Fj = (у\,..., у"к) и Y2 = (т/'^, • • ♦ >Уп) > составляющие вектор Y = Q/i,..., у'п). Естественно, что обратное преобразование (F'J^.)Т 0 Y2T
258
Глава 5. Арифметика в нормальных базисах
переведет вектор У2 в вектор Х2, а чтобы получить вектор Ху, надо сделать преобразование (F^1) ®У1Т. Так как
X”j	. , X2*-Ы ——1, «Zz2^H“i —fi И- Хп, . . . , X2^ — 1 Ч~ 3?2fc +1 ? 3?2fe } ,
1+2* 5 • • • , З'п} »
то для восстановления вектора X = {a?i,..., хп} по этим векторам достаточно к соответствующим п - 2к компонентам вектора Х^ прибавить (по mod 2) компоненты вектора Х2.
Индуктивно продолжая описанное преобразование, мы перейдем к координатам х' в почти нормальном базисе В' со сложностью перехода
L~l(n) ^п-2к + L~'(2k) + L~l(n - 2к),
и, как и раньше, придем к оценке
Дв'Л'(п) у log2 п + 2п.
Переход от базиса В1 к базису В и координат х' к х. Переход получается посредством обратной перестановки к 7г(г) (см. (5.4)), а его сложность оценивается, как и раньше, т. е. Ъв’в(п) — О-
В результате имеем
LAB(n) = LAA!(n) + LA.B>(n) + Вв>в(п) у log2 п + Зп.
Заметим, что при вычислении обратного преобразования (F^1)7 при п = 2fc+1 - 1 мы фактически получили матричное тождество
/ C^m)	°т Gm
(F^)-1 =	0...0	1	0...0
\ От от (Fm) /
где т = (п-1)/2, а матрица Gm =	есть симметричное отражение
матрицы (F^)-1 относительно средней строки. Это тождество, так же как и аналогичное тождество
(здесь т — (п-1)/2, а матрица Gm = F^Im есть симметричное отражение матрицы F~{ относительно среднего столбца) можно проверить и непосредственно. С помощью этих тождеств, так же как и в теореме 5.2.2, можно доказать, что плотность обратной матрицы S{F^X) = O(nIog23) и такую же плотность имеет матрица перехода от нормального базиса второго или третьего типа к стандартному базису поля GF(2n).
5.2. Оптимизация преобразований базисов
259
Алгоритм 5.2.3
ВХОД: степень п расширения поля GF(2), вектор Ьп) 6 GF(2n) координат элемента, представленного в ОНБ второго или третьего типа, Р — вектор коэффициентов минимального многочлена.
ВЫХОД: вектор А = (aQ,..., an-i) € GF(2n) координат того же элемента, представленного в стандартном базисе с тем же генератором.
1.	Переход от оптимального нормального базиса В второго или третьего типа к почти нормальному В':
для j = 0,..., п - 1 Cj = где
/ \ Г (27 modp), если(27 modp) < п, Ip - (2J modp), если(27 modp) > n.
2.	Добавить к полученному вектору справа 2Г - п нулей, где г определяется из неравенства 2Г-1 < п < 2Г.
Таким образом получить вектор X длины 2Г.
3.	Переход от почти нормального базиса В' к почти стандартному S'.
Для г = 1,..., г - 1:
для j=0,..., 2г-1 - 1:
X[j • 2г-г+1, 2г~г + j • 2r-*+l - 1] =
= F(X[j • 2г'г+1,2г~г + F 2г~г+{ - 1], X[2r~l +j • 2г"г+1, (J + 1) • 2г'г+1 - 1]), где Г(ХЬ Х2) = (X, ф Х2, Х2),
где Y = Y > 1 — сдвиг на один разряд вправо с потерей старшего разряда и обращение порядка следования бит полученного вектора.
4.	Переход от почти стандартного базиса S' к стандартному S: если deg А = deg Р, то А = X ф Р.
5.	Вернуть А.
Рис. 5.6. Алгоритм преобразования представления вектора из ОНБ второго или третьего типа в представление в стандартном базисе
Приведем алгоритм 5.2.3 перехода от ОНБ 2-го и 3-го типа к стандартному базису (рис. 5.6) и алгоритмы 5.2.4 и 5.2.5 преобразования представления в стандартном базисе в представление в оптимальном нормальном базисе второго и третьего типа соответственно (рис. 5.7 и рис. 5.8), вытекающие из доказательств приведенных в этом разделе утверждений. 
Отметим, что для оптимизации реализации алгоритма 5.2.3 пункт 3 имеет смысл выполнять в несколько этапов: сначала работать с машинными словами в качестве элементов массива X, до тех пор пока длина векторов-аргументов функции F не станет равна двум байтам, а потом значения функции F брать из заранее инициализированной таблицы, занимающей в памяти 217 байт = 27 килобайт. С помощью таблицы можно реализовать и операцию Y для вектора Y длины один байт (или 2 байта).
260
Глава 5. Арифметика в нормальных базисах
Алгоритм 5.2.4
ВХОД: степень п расширения поля GF(2),
вектор А — (а0, • • •, an-i) & GF(2n) координат элемента, представленного в стандартном базисе, Р — вектор коэффициентов минимального многочлена.
ВЫХОД: вектор (дь ..., bn) 6 GF(2n) координат того же элемента, представленного в ОНБ 2 типа с тем же генератором, или сообщение «ОНБ второго типа не существует».
1.	Вычислить р — 2п + 1, проверить условия ОНБ второго типа:
а)	р — простое число;
б)	2 является примитивным корнем из 1 по модулю р: для. каждого простого делителя б числа р - 1 выполняется	1.
Если хотя бы одно из этих условий не выполняется, то вернуть сообщение «ОНБ второго типа не существует».
2.	Переход от стандартного базиса S к почти стандартному S':
если а0 = 1, С — А ф Р, иначе С = А.
3.	Добавить к полученному вектору справа 2Г - п нулей, где г определяется из неравенства 2Г-1 < п < 2Г.
Таким образом получить вектор X длины 2Г.
4.	Переход от почти стандартного базиса S' к почти нормальному В'.
Для i = г -
для j = 0,..., 2г-1 - 1:
X[j • 2г-г+1, 2г“г + j • 2г'г+1 - 1] =
= F(X[j • 2r~i+l, 2г~г + j • 2r~w - 1], Х[2Г-г + j • 2Г-г+1, (j + 1)2Г~гЧ1 - 1]).
где F(X15 Х2) = (Х{ фX, Х2),
где Y = Y 1 — сдвиг на один разряд вправо с потерей старшего разряда и обращение порядка следования бит полученного вектора.
5.	Переход от почти нормального базиса В' нормальному В:
для j =	bj = b'rl{jy
где тг_|(У) — обратная к ir(j) (вычисленной в алгоритме 5.2.3) перестановка. 6. Вернуть (б,,..., &„).
Рис. 5.7. Алгоритм преобразования представления вектора из стандартного базиса в представление в ОНБ второго типа
Как видим, алгоритм 5.2.4 перехода от стандартного базиса к ОНБ 2-го типа описывает буквально обратные действия к действиям алгоритма 5.2.3. В этом алгоритме для оптимизации реализации аналогично можно использовать таблицу для вычисления значений функции F(JTi, Х2), которая в данном случае начинает с обработки двух бит и переходит к машинным словам. Для операции Y сдвига и последующей инверсии бит можно использовать таблицу, вычисленную в алгоритме 5.2.3.
5.2. Оптимизация преобразований базисов
261
Алгоритм 5.2.5
ВХОД: степень п расширения поля GF(2),
вектор А = (а0, • • •, an-i) £ GF(2n) координат элемента, представленного в стандартном базисе, Р — вектор коэффициентов минимального многочлена.
ВЫХОД: вектор (&ь ..., Ьп) 6 GF(2n) координат того же элемента, представленного в ОНБ 3-го типа с тем же генератором, или сообщение «ОНБ третьего типа не существует».
1.	Вычислить р = 2n + 1, проверить условия ОНБ третьего типа:
а)	р — простое число;
б)	2n = 1 modp;
в)	для каждого простого делителя 8 числа п выполняется 2n^ mod р	1.
Если хотя бы одно из этих условий не выполняется, то вернуть сообщение «ОНБ третьего типа не существует».
2.	Переход от стандартного базиса S к почти стандартному S':
если а0 = 1, С — А ф Р, иначе С = А.
3.	Добавить к полученному вектору справа 2Г - п нулей, где г определяется из неравенства 2Г-1 < п < 2Г.
Таким образом получить вектор X длины 2Г.
4.	Переход от почти стандартного базиса S' к почти нормальному В'.
Для i = г - 1,..., 1:
для j = 0,..., 2г-1 - 1:
X[j • 2r~i+l, 2r^ + j • 2r~i+l - 1] =
= F(X[j • 2г"гЧ1,2r-j 2r~z+I ~	+ j ' 2r"z'+1, (j + l)2r~*+1 - 1]).
где ^ЛМ^Ф^Л),
где Y — Y 1 — сдвиг на один разряд вправо с потерей старшего разряда и обращение порядка следования бит полученного вектора.
5.	Переход от почти нормального базиса В’ нормальному В: для; = 1,...,п bj =b'n_l{j)
где — обратная к (вычисленной в алгоритме 5.2.3) перестановка. 6. Вернуть (Ьь..., Ьп).
Рис. 5.8. Алгоритм преобразования представления вектора из стандартного базиса в представление в ОНБ третьего типа
Алгоритм 5.2.5 перехода от стандартного базиса к ОНБ 3-го типа отличается от алгоритма 5.2.4 только условием существования базиса.
5.2.5.	О явном вычислении формул перехода и минимальных многочленов для оптимальных нормальных базисов
Рассмотрим общий случай q — рг. Определим последовательность многочленов fi(X) над полем GF(q) рекуррентным соотношением
262
Глава 5. Арифметика в нормальных базисах
f,+l(X) = Xf,(X)-ft_l(X), h(X) = X, f0 = 2.
По индукции легко доказать, что
/.« + Г1) = С’ + Г’
для любого элемента £.
Упражнение 5.2.2. Докажите это.
Как уже отмечалось, эти многочлены задают формулы перехода от стандартных базисов к нормальным в случае базисов второго и третьего типов.
Последовательность /г(Х) можно формально продолжить и для отрицательных индексов, при этом, очевидно, /_г(Х) = /г(Х).
Указанная последовательность является некоторым аналогом последовательности многочленов Чебышева (их иногда называют в рассматриваемом случае многочленами Диксона), и так же как и для них легко проверяется, что многочлены с четными номерами сами четные, т. е. содержат только одночлены с четными степенями, а многочлены с нечетными номерами — сами нечетные. Поэтому их удобно представлять в виде
L*/2J
Л(Х) = £>,,(-1УГЛ
где коэффициенты будут указаны в лемме 5.2.2.
Для рассматриваемой последовательности справедливо тождество Чебышева
ftj(X) = /,(/,(!)) = 7ДЛ(Х)),
для проверки которого достаточно положить X = £ 4-
Л (Л« + С1)) = Ш + Г7) = С3 + с13 = мс + г1).
Легко проверить еще одно тождество Чебышева
Л+/х) + f,_}(x) = л W//X).
Действительно
с+3+Сг~3+С~3+С,+3 = (С+Г‘)(С2+С3)-
Лемма 5.2.2. Справедливы следующие равенства {в которых все коэффициенты вычисляются по модулю р)\
I?/2J	z. .к 1. /,(Х) = 22ам(-1уГ-2Л at,3= 1 / - 7=0	\ j / L»/2J /л = Е С) /-»• 1=0	1 /’"J " k J-1 /’
5.2. Оптимизация преобразований базисов
263
где для удобства положим fa = 1 и биномиальные коэффициенты с отрицательными индексами считаем равными нулю.
Доказательство. База индукции проверяется непосредственно. Для обоснования шага индукции ввиду тождества
fi+i(X) = Xf^X) - f^(X)
достаточно проверить, что всегда a>i+ij = aij 4-	а это вытекает
из тождества Паскаля:
0>i,j 4“
Л - Л + Л - з - + (1 - А + (i - i - А \ 3 ) \ 3 - 1 J \3 -д \ 3 - 3. )
/1 + i - А / i - А \ з / V -V
— аг+1, j •
Для доказательства второго тождества достаточно умножить обе его части на X и опять применить тождество Паскаля:
Справедлива также
Теорема 5.2.5. Пусть 2п 4-1 — простое, и q — рг — примитивный корень по модулю 2п 4-1, или 2п 4-1 = 3(mod 4) и q порождает все квадратичные вычеты по модулю 2п+\, тогда многочлен дп(Х) над GF(q), определенный рекуррентной формулой
</0=1, W = X + 1, gk(X) = Xg^X) - gk_2(X) для k^2
(5-8)
совпадает с минимальным многочленом та элемента а и его корни образуют оптимальный нормальный базис второго или, соответственно, третьего типа поля GF(qn). Связь между многочленами дп и fn дается формулой
п
дп = \ + fi — дп-\ 4- /п-
г=1
Доказательство. По индукции можно проверить, что при п 1
п
дп — 1 Л-
г=1
264
Глава 5. Арифметика в нормальных базисах
Действительно, при п = 1 имеем = X 4- 1 = 1 4- f\, при п — 2 имеем gz = Хд\ -	= X2 4- X - 1 = 1 4- /1 4- /2- Шаг индукции обосновывается
равенством
<м+. = I + 52 fi = 1 + Л + 53 Xfi^x) - fi_2(x) = 2=1	i=2
п	п-1
= 1+/1+т52л-52л =
2=1	2=0
= *(4 + Ел) -\-^fi=Xgn-gn^.
2=1	'	2=1
Теперь ясно, что п	п
дп(а) = 1 + 52 л« + Г1) = 1 + Е«’ + С!) =
2=0	’
так как £2n+1 = 1. Минимальность многочлена дп с корнем а следует из того, что его степень равна п, и в противном случае а было бы корнем неприводимого двоичного многочлена степени меньшей п, что противоречило бы доказанной ранее линейной независимости элементов
{1,а, ...,ап~}}
над полем GF(2).	
В дополнение к этой теореме мы укажем, как можно явно вычислить коэффициенты минимального многочлена. Действительно, если
9п(Х) =	9n,j%},
j=o
то согласно теореме 5.2.5 и лемме 5.2.2
п	п 1г/2]
дп(х) = 1+£ Л. = 1+52 £
2 = 1	2 = 1 j=0
откуда
L(n-J)/2J	L(n-J)/2J	z/. A z. . lXX
e <^(-1/= e <-4(тИг2; ))•
2=0	2=0	' '	'	' '
5.2. Оптимизация преобразований базисов
265
После очевидных сокращений остается только первое слагаемое:
п . _ / i\Lfa-;)/2J (L(n + j)/2jA Un,j — V V	I . I
(все вычисления проводятся по модулю р).
В случае р — 2 множитель (— 1)LO—J)/2J ? естественно, можно опустить.
В силу известной теоремы Люка (см., например, [29]) биномиальный коэффициент по модулю р можно вычислить за О(ур(Ъ)) операций в поле GF(p) по формуле
п (:0 -
2=1 V 1/
где 0 < аь bi <р, 1 < i < тп — цифры р-ичного разложения а и Ь соответственно,
m
рр(Ь) = ^2bi-
2=1
Поэтому, последовательно вычисляя путем прибавления единицы р-ич-ные разложения [(n -h J)/2J и j и используя сделанное замечание, можно вычислить все коэффициенты многочлена дп(Х) со сложностью O(pn logp п).
Такое же утверждение, естественно, справедливо и для сложности вычисления многочлена fn(X). Для вычисления всей последовательности многочленов /1(Х),..., fn(X) или д\(Х),..., дп(Х), конечно, использовать определяющую ее рекуррентную формулу с квадратичной оценкой сложности.
В случае р = 2 биномиальные коэффициенты вычисляются по модулю два и согласно теореме Куммера (см., напр. [29]) их можно вычислить следующим образом: г-й коэффициент равен 1 тогда и только тогда когда все двоичные цифры верхнего индекса, т. е. |_(п + i)/2j, не меньше соответствующих цифр нижнего индекса, т. е. i. Это правило используется в обосновании алгоритмов 5.1.2 и 5.1.3.
Пример 5.2.1. Применяя это правило, можно вычислить, что
д23 = 1 + X4 + X6 + X1 + X8 + X16 + X20 + Xn + X23,
и вообще при п = 3 • 2к — 1 получится многочлен веса 2k + 3
дп = 1+Х2'"" +X2t"+2t’2+X2‘’l+?"+2‘" +.. ,+Х2*"-1 +Х? +Х2‘+' +Х?+'+2‘" + +Х2‘+|+21-|+2‘^+х2‘+|+2^'+2‘-2+21-3+ ...+х2‘'+1+?-1 = (1+Х2‘+1)^+Х2‘, hk= 1+Х2"' +Х2‘-'+2‘-г+Х2‘-'+2‘-Ч2‘-’+.. -+Х2‘Л
266
Глава 5. Арифметика в нормальных базисах
5.2.6.	Оценка сложности перехода от оптимальных нормальных базисов второго и третьего типа к стандартным в общем случае
Пусть теперь 2п + 1 — простое число, a q = рг или примитивный корень по модулю 2п + 1 или 2п + 1 = 3(mod 4) и q порождает все квадратичные вычеты по модулю 2п + 1. Пусть ( — примитивный корень из единицы сзепени 2п + 1 в поле GF(q2n), сц = С + a — a\, тогда, как отмечалось выше, {ai,... , ап} является оптимальным нормальным базисом (точнее, его перестановкой) в поле GF(qn), которое можно рассматривать как векторное пространство над полем GF(q).
Рассмотрим в нем тп-мерное (тп < п) подпространство, порожденное базисом {«о, •. •, am-i} или эквивалентным базисом {1, а,... , от-1}.
Обозначим через L(m) сложность преобразования координат от базиса {ац,..., am-i} к базису {1, а,..., ат~1} и обратно (под сложностью понимается число арифметических операций в поле GF(q)).
Теорема 5.2.6. При т < п
L(m) = О(ртп logp тп).
Обозначим В(п) сложность перехода от оптимального нормального базиса второго или третьего типа к соответствующему стандартному или наоборот в поле GF(qn). Справедливо следующее обобщение теоремы 5.2.4:
Теорема 5.2.7.
В(п) = О(рп logp п).
Обе эти теоремы мы оставим без доказательства, отсылая читателя к статье [16].
5.2.7.	Пример выполнения алгоритма перехода от оптимального базиса второго или третьего типа к стандартному и обратно
Переход от оптимального нормального базиса второго или третьего типа к стандартному. Пусть дано: п = 5, оптимальный нормальный базис второго типа В = {х2 , к = 0, 1, 2, 3, 4}, элемент (записанный в этом базисе)
/ = Ь;/ + 1 V+oV + iZ + i-Z
и вектор координат х1 = {1, 1,0, 1, 1}.
Надо найти: у — вектор координат элемента f в стандартном полиномиальном базисе А = {ж0, ж1, ж2, ж3, ж4}.
Шаг 1. Переход от нормального базиса В к почти нормальному базису В' и от координат х к координатам х'.
а) в начале найдем перестановку тг(г) такую, что
2*(mod 11) = ±7г(г) 6 {1,..., 5}
5.2. Оптимизация преобразований базисов
267
т. е.
/ 20	21	22	23	24	25	26	27	28	29	(modn)\
7Г =	,	' ; (5.9)
\ 1	2	4	-3	5	-1	-2	-4	3	-5	(mod 11) /	v '
5) Пользуясь перестановкой (5.9), найдем базис
В1 = {«1, &2, 014, Oty, «5}, элемент в этом базисе запишется так:
f — 1 • Qj 4" 1 * OL2 4“ 0 • OI4 4- 1 • Q3 4~ 1 • Q5,
(меняем местами 3-ю и 4-ю координаты и от координат (х)т — (1,1,0, 1, 1) перейдем к координатам (ж')т = (1, 1,1,0, 1)).
Шаг 2. Переход от базиса В' к базису В" и от координат х' к координатам х".
Так как 22 < 5 < 23, то перейдем к В" = {а^, к = 1,..., 8} путем добавления нулей, т. е. х" — (х', 0,0, 0) = Q, 1 Л, 0, 1, 0, 0, 0).
22	23-22
Шаг 3. Переход от базиса В" к базису А’ = {ak, k = 1....8}	и от
координат х" к координатам у".
По рекуррентной формуле (5.2) умножение матрицы (Fg)T на 8-мерный вектор х" сводится к двум умножениям 4-мерных векторов на матрицу (F4)t т. е.
	/	// . И \ г хх + Ж7 1	(х"\	
(у")Т = (Fs)T®x" = (F4)t®	// . // Ж2 4- #6 //	п	и + а:2 (Г4) ®	„	, (5.10)
	X) + х5 II \ Х4 /		
каждое из которых, в свою очередь, сводится к двум умножениям 2-мерных векторов на матрицу (J2)21, т. е.

(х" + х") + (х" + ж") (ж" + 4)
(// . И \ / // . \ / // \
Ху + Ху \ л . т I *^5 4“ Х7 \ G / г, \Т I I
„	+/(F2)t®	„	+ж6(Г2),
®4	/	\ Xf, J	\Xf, )
где (F2) — единичная матрица, т. е. (?/") = (1, 1,0, 0, 1,0, 0,0).
Шаг 4. Переход от базиса А' к базису А = {хк, к — 1,..., 5} и от координат у" к координатам у'.
Удаляем последние координаты: у' = (1,1, 0, 0, 1).
268
Глава 5. Арифметика в нормальных базисах
Шаг 5. Переход от базиса А' к базису А — {хк : к = 0,..., 4} и от координат у1 к координатам у.
Построим минимальный многочлен тх для генератора х. По рекуррентной формуле (5.8) находим, что
9о = t
91 =
д2 = 1+Х + Х2,
g3 = I + X2 + X3,
g4 = 1 + X2 + X3 + X\
g5 = 1+X + X2 + X4 + X5,
t. e.
mx ’= 95(x) = box® + b[X{ + bzx2 4- b3x® 4- Ь4ж4 4- b5x5 = О, (5.11)
где bo = bi = b2 = &4 — &5 = 1, &з = 0. Применяя формулу (5.5), имеем
4
5+ угхг = 1 • х® + (1 4- 1)ж] 4- (1 4- 1)ж2 + (0 4- 0)ж3 + (0 + 1)ж4, г=0
откуда и получаем вектор координат в стандартном базисе г/ = (1,0,0,0,1). Таким образом, мы от представления элемента в оптимальном нормальном базисе
/	1 I zv.21 I „23 I „24
f=1 + X + ж + X
перешли к представлению того же элемента в стандартном базисе f = 1 + ж4.
Переход от стандартного базиса к оптимальному нормальному базису второго или третьего типа. Пусть дано: п = 5, стандартный базис
А = {ж , х , х , х , х },
4
и элемент в этом базисе / = 52 Угхг с координатами у = {1,0,0,0, 1}.
_	г-0
Надо найти: ж — вектор координат элемента f в оптимальном нормальном базисе 2-го или 3-го типа В = {ж2 , ж2 , ж2 , ж2 , ж2 }.
Так как условия на п удовлетворяют определению оптимального базиса 2-го типа, значит можно применять теорему 5.2.3.
Шаг 1. Переход от базиса А к базису А — {ж2\ ж2\ ж2\ ж2\ ж2"} и от координат у к координатам у'.
Минимальный многочлен тх для п = 5 уже нами построен (т. е. Ъг найдены, см. (5.11)), подставляя Ьг в (5.7) имеем
у%х = (0 + 1)ж + (0 + 1)ж + (0 + 0)ж + (1 + 1)ж + 1 • ж ,
г=1
5.2. Оптимизация преобразований базисов
269
откуда и получается вектор у = (1, 1,0, 0, 1) координат в почти стандартном базисе А'.
Шаг 2. Переход от базиса А' к системе А" и от координат у' к координатам у".
Переход осуществляется добавлением нулей в конец вектора у': (у")Т =	1? 1?0,1,0, 0,0).
Шаг 3. Переход от системы А" к системе В" и от координат у" к координатам х".
Умножение матрицы (F8t) на 8-мерный вектор у" сводится к двум умножениям 4-мерных векторов на матрицу (F^) 1 и «перепутанному» их сложению, а именно
(х")Т = (х„х2)т = (ff)-1 ® у" = да-1 ® (ГьЪ),
где вектор У, = (у'{, у”_, у'{, у'^)Т, вектор У2 = (*/" > Уь> У1’ У&)Т  вектор
(у") — (V1 + w3, ^2 + w2, г?з + W1, V4, Wi, W2, W3, W4), а вектора v и w вычисляются по формулам:
(vi,v2,v3,vA) =	®(xt)	(5.12)
И
(wi, w2, w3, w4) = (F4t) 1 0 (ж2).	(5.13)
Каждая из формул (5.12), (5.13), в свою очередь, рекуррентно сводится тоже к двум умножениям 2-мерных векторов на матрицу (F2t) 1 = Е (единичная 1матрица 2 х 2) и их «перепутанному» сложению, а именно
(vi, v2, v3,v4) = (pi +П,р2,П,г2),
(Wi, W2, W3, W4) = (51 + fi,52,fi,f2), где
(pbp2) = E®(vl,v2)T,	(ri,r2) = Е®(у3,щ)т,
(51, 52) = E 0 (wb W2f, (ti, t2) = E ® (w3, wrf,
и (у") — (P\>P2, И, r2, 5i, 52, fi, f2), откуда находим pi = l,p2 = l,n=0, г2 = 0, 5i = 1, 52 = 0, fi = 0, f2 = 0. Поднимаясь рекурсивно вверх, получим, что (х") — (1,1, 1,0, 1).
Шаг 4. Переход от системы В" к базису В1 и от координат х" к координатам х'.
Удалим последние координаты: (ж')т = {1, 1, 1,0, 1}.
Шаг 5. Переход от базиса В1 к базису В и от координат х' к координатам х.
Выполняя обратную перестановку к перестановке тг (5.9), получим х = (1, 1,0, 1, 1).
270
Глава 5. Арифметика в нормальных базисах
Таким образом, от представления многочлена в стандартном базисе f = 1 + х3 4- ж4
мы перешли к представлению многочлена в оптимальном нормальном базисе 2-го типа:
М пЗ f = 1 + X + X + X .
5.2.8.	Замечание о программной реализации
Разумеется, при рекурсивном выполнении алгоритма перехода от нормального базиса к стандартному и наоборот рекурсию можно остановить в момент появления матриц размерности п < 32, так как представляя столбцы этих матриц в виде 32-битных целых чисел, умножение матрицы на вектор можно свести к п операциям умножения числа на бит и п - 1 операции XOR (побитового сложения чисел), или даже иногда меньшего количества операций XOR, если их выполнять только для тех чисел-столбцов матрицы, которые соответствуют единичным компонентам данного вектора. Чтобы это стало возможным, надо «битовые» столбцы первоначальной матрицы тоже представлять в виде столбцов из 32-битных чисел, и весь рекурсивный алгоритм оформить, ориентируясь на работу не с битам^, а 32-битными целыми. В результате и используемая память, и время работы уменьшатся примерно в 32 раза.
При умножении 32-мерной битовой матрицы на 32 мерный вектор можно вместо стандартного способа применить модификацию «алгоритма четырех русских», разбив матрицы на три подматрицы ширины 11 каждая и предварительно загрузив в память машины три таблицы, содержащих результаты умножения каждой из этих матриц на любой 11 -битный вектор. Тогда результат умножения данной матрицы на произвольный 32-битный вектор можно будет получить с помощью трех операций извлечения 32-битных из соответствующих массивов и двух операций побитового сложения этих чисел. Общий объем используемых массивов примерно равен 24 К. За счет этого приема достигается дополнительное ускорение примерно в шесть раз. Если размеры кэша позволяют, можно использовать разбиение на две подматрицы ширины 16 каждая.
В первоначальном варианте алгоритма перехода вектор X представлялся как п-мерный булевский вектор и в ходе алгоритма к нему применялись операции разбиения на две равные части, перестановки координат и покоординатного сложения по модулю два. Используемая перестановка координат является композицией инверсии (перестановки, в которой первая координата ставится на последнее место, вторая на предпоследнее и т. д.) и сдвига на одну координату. Скорость работы алгоритма можно увеличить, если п-мерный булевский вектор X представить как Гп/32] вектор, состоящий из 32-битных целых чисел. Тогда покоординатное сложение по модулю два заменяется на покомпонентное выполнение операции побитового XOR с целыми числами. Операция сдвига координат
5.2. Оптимизация преобразований базисов
271
п-мерного булевского вектора сводится к выполнению такого же сдвига битов каждого из 32-битовых чисел и переноса одного бита из каждого числа в соседнее. Поэтому скорость ее выполнения существенно выше при использовании не битового, а словарного (32-битового) представления данного вектора. То же самое верно и для операции выполнения инверсной перестановки. Она сводится к инверсной перестановке массива из Гп/32] 32-битных чисел и инверсной перестановке битов каждого числа из этого массива. Для выполнения инверсной перестановки битов разбиваем данное 32-битное число на два 16-битных числа, делаем в каждом из них подобную перестановку, используя заранее загруженную в память таблицу объемом 128 К, и выполняем еще три операции с 32-битными числами, чтобы получить окончательный результат.
5.2.9.	О сложности арифметических операций в конечных полях
Пусть конечное поле GF(qn) представлено стандартным базисом Вх, порожденным корнем х неприводимого над GF(q) многочлена д(Х) степени п. Сложность операции умножения многочленов степени п - 1 над полем GF(q) обозначим Mq(n). Согласно Шенхаге [161],
Mq(n) — О(n log n log log rij
(в гл. 2 эта оценка была выписана с мультипликативной константой). В [20] вместо работы [161] цитируется работа [172], содержащая такие же результаты, но написанная существенно позже. Некоторое улучшение мультипликативных констант в оценке [161] получено в [102]. Алгоритмы [161] и [102] основаны на применении быстрого дискретного преобразования Фурье (см., например, [6,11,24]), однако в случае конечных полей это делается не так прямолинейно, как в случае умножения многочленов над полями действительных или комплексных чисел (в [102] используется, например, прием из работы [153]), и мультипликативные константы в оценках сложности довольно большие, что делает эти алгоритмы непригодными даже для умножения многочленов степени тысяча.
В [101] предложен асимптотически более медленный, но практически более приемлемый алгоритм умножения многочленов над конечными полями, не использующий преобразование Фурье. Некоторые модификации стандартного метода умножения многочленов с помощью преобразования Фурье, ориентированные на ускорение умножения многочленов над конечными полями, имеются в [26]. Но все упомянутые алгоритмы для многочленов степени порядка нескольких сотен работают медленнее, чем метод Карацубы, программная реализация которого описана в третьей главе. Однако с теоретическими целями мы будем использовать оценки Шенхаге.
Обозначим М$ сложность операции умножения в указанном представлении поля GF(qn). Так как умножение в рассматриваемом случае сводится к умножению многочленов над полем GF(q) и последующему делению результата на многочлен д(Х) с остатком, то независимо от выбора д(Х) известна оценка Mq g(ri) = 3Mq(n)	если пренебречь
272
Глава 5. Арифметика в нормальных базисах
сложностью предварительного вычисления некоторого многочлена /(X), зависящего только от д(Х). Далее иногда будем опускать индексы в фор-муле M’s(n).
В некоторых случаях эту оценку можно улучшить. Действительно, если д(Х) содержит к одночленов, то сложность редукции по модулю д(Х) оценивается как кп и поэтому имеем
М1д(п) Мд(п) + (2k + 1)п,
а в случае q — 2
М^д(п)	+ кп.
С высокой вероятностью в качестве к можно взять 3, а если неприводимого трехчлена степени п не существует, то (как проверено экспериментально, но не доказано теоретически) всегда можно взять к — 5.
В указанных выше оценках сложность аддитивных операций и умножения в поле GF(q) принимается за единицу. Если q = рк, где р — простое число, то естественно также оценить битовую сложность операции умножения в поле GF{q} как
M(GF(g)) M(GF(p))M^(fc),
M(GF(p)) < 3M(log2 р) 4- O(log2 р),
где М(тп) = О(m log т log log т) — битовая сложность умножения т-разрядных двоичных чисел. Для р, являющихся простыми Мерсенна или Ферма, справедлива оценка
M(GF(p)) < M(log2 р) + O(log2 р).
Битовая сложность операции умножения в поле GF(qn) (при условии задания элементов поля их координатами в данном базисе В над полем GF(q)) оценивается как
M(GFO M(GF(g))M^(n).
Возведение в степень q элемента поля GF(qn) производится путем вставки нулей в последовательность коэффициентов полинома, представляющего этот элемент, после чего производится редукция по модулю р, в результате (с учетом сделанного выше замечания) имеем (теоретически не доказанную) оценку сложности возведения в степень Kq(n) = О(п).
Оценим сложность умножения в поле GF(qn) в случае использования оптимального нормального базиса первого типа и операций из поля GF{q). Для выполнения умножения переходим к стандартному базису согласно теореме 5.2.2 со (схемной) сложностью 2п — 2, затем делаем умножение в стандартном базисе и переходим обратно к нормальному базису со сложностью п - 1.
Согласно упр. 5.2.1, получаем оценку
M°'(GF(qn)) Мд(п) + 7п - 8.
5.2. Оптимизация преобразований базисов
273
В случае базисов второго и третьего типа аналогично получаем оценку
Зп
M02(GF(qn)) 3Mg(n) + — log2 п + О(п),
которая оказывается асимптотически в три раза хуже, так как в соответствующих стандартных базисах порождающий их неприводимый многочлен (вычисленный в теореме 5.2.5) оказывается нетривиальным, и для редукции по его модулю приходится использовать для оценки Мд(п) указанную выше общую оценку. Можно, однако, привести примеры, когда в базисах второго и третьего типа сложность будет почти такой же, как и в стандартных базисах.
Далее, через M°(GF{qn)} обозначаем минимальную сложность умножения в поле GF(qn) при условии задании элементов поля в некотором нормальном базисе.
5.2.10.	Об оценках сложности возведения в степень и инвертирования в конечных полях
В разд. 4.6.9, 4.6.10 были получены такие оценки для стандартных базисов. Оценим сложность инвертирования в нормальных базисах. Возведение в степень q выполняется бесплатно, поэтому
I°(GF(q'‘)) < l(n - V)MO(GF(qn\) + I(q) + (n + CB)M(GF(q)),
где Св — сложность используемого нормального базиса В. Напомним, что для инвертирования в поле GF(qn) можно вычислить
у =	е GF(q)
и применить формулу
ж-1 = (х^'-^-1)Уу-1.
Вычисление у~х по определению выполняется со сложностью I(q), а умножение на него в поле GF(qn) выполняется со сложностью nM(GF(q)). Для вычисления x^qn	используется l(n - 1) умножений в поле
GF(qn), а для вычисления у нужна еще одна операция умножения, в которой вычисляется только одна координата произведения, и поэтому она выполняется со сложностью CBM(GF(q)).
Аналогично, сложность возведения в произвольную степень d < qn в оптимальных нормальных базисах оценивается как
о /M°(GF(qn)) log V log log б? J ’
Эти оценки будут лучше полученных ранее оценок для стандартного базиса, если в поле GF(qn) выбрать нормальный базис, допускающий быстрое умножение, например такой, что M°(GF(qn))) = о(п^+1^2). Выше было показано, что такими являются все оптимальные нормальные базисы. Другие примеры таких базисов приводятся далее.
274
Глава 5. Арифметика в нормальных базисах
5.3. Гауссовы нормальные базисы
5.3.1. Построение гауссовых нормальных базисов
В [87] приведены примеры нормальных базисов В, у которых функция сложности Св является линейной. Стандартный алгоритм умножения для таких базисов имеет квадратичную оценку сложности. Эти базисы Вх, получившие название гауссовых нормальных базисов (ГНБ), порождаются в полях GF(qn) элементами вида
где р = кп + 1 — простое число (в этом случае базис называется базисом к-го типа), £ — примитивный корень р-й степени из единицы в поле GF(qkn), являющемся расширением поля GF(qn), у — примитивный корень А;-ой степени из единицы в кольце вычетов порядка р, который вместе с q порождает всю мультипликативную группу ненулевых вычетов по модулю р.
Условия существования ГНБ. Необходимым и достаточным условием существования ГНБ А:-го типа, кроме простоты числа р — кп+1, не делящего q, является взаимная простота чисел kn/d и п, где d — порядок подгруппы, порожденной элементом q в мультипликативной группе. Условие неделимости q на р необходимо, чтобы q было отлично от нуля по модулю р. Оно, очевидно, выполняется при q = 2.
Заметим, что из условия (nk/d, п) = 1 следует, что d кратно п. Действительно, если в разложение числа п простое число р входит в степени х, то в разложение пк оно входит в не меньшей степени, а так как nk/d не кратно р, значит в разложение п простое р также входит в степени, не меньшей х. Так как d = гп, то условие (kn/d, п) = 1 можно переписать в виде (k/r, п) — 1.
Для доказательства указанного необходимого и достаточного условия заметим, что в мультипликативной группе найдется такой примитивный элемент /3, что q = fikn/d. Так как 7 — примитивный корень А:-ой степени из единицы в мультипликативной группе, то он представим виде 7 = pSTl, (s, п) = 1, 1 < s < к. Тогда любой произведение вида q^ modp представимо в виде
flikn/d+jsn mod кп
Так как любой элемент мультипликативной группы однозначно представим в виде рт, 0 < m < кп, то при (kn/d, п) = г > 1 только элементы вида могут быть представимы в виде произведения qlryJ mod р что и доказывает необходимость условия (п, nk/d) = 1.
Если же kn/d и п взаимно просты, то мультипликативная группа порождается элементами q, у, более того, любой ее элемент от 1 до р- 1 = кп представим единственным образом в виде qly> modр, 0^j<k,Q^i<n.
5.3. Гауссовы нормальные базисы
275
Действительно, согласно китайской теореме об остатках любой вычет по модулю кп2/d однозначно представим в виде
4- jnmod(kn /d),	0 < г < п,
d	d
поэтому при d = п, выбирая 7 = рп, можно представить любой элемент мультипликативной группы в виде произведения q1^ modp, 0 < j < к, О < i < п. При d = кп очевидно и без китайской теоремы, что любое число от 0 до кп - 1 представимо в виде
ikn
4-	jn, 0 < j < к, 0	< п,
d
При п < d < кп согласно китайской теореме для любого х, 0 < х < kn2/d либо х = ikn/d 4- jn, либо х 4r kn2/d = ikn/d + jn, где 0 < j < kn/d, О i < п. В первом случае любое x + sn, 0 < х < kn2/d, 0 < s < к-kn/d, представимо в виде ikn/d+jn + sn = ikn/d+(j + s)n, 0 < i < п, j-Уз < к. Во втором случае любое х 4- sn, 0 < х < kn2/d, kn/d s < к - kn/d, представимо в том же виде, а любое х, 0 < х < kn2/d, представимо в виде ikn / кп\ ikn ( кп\ --------------h \ j---Г ]п =	4- (к 4- j---]п mod кп, d \ d J d \ d J
кп
О г < п, 0 < 7 < к 4- j-----<к.
d
Поэтому во всех возможных случаях можно представить любой элемент мультипликативной группы в виде произведения ql+] modp, 0 < j < к, О < i < п. Однозначность этого представления следует из равенства числа таких произведений и числа элементов в группе.
Заметим еще, что при d = п, взаимно простом с к, условие существования ГНБ выполнено и более того, согласно известной теореме теории абелевых групп мультипликативная группа поля GF(p) является произведением групп, порожденных элементами 7 и q.
Упражнение 5.3.1. Докажите это.
Для проверки условия (п, nk/d) = 1 нет необходимости вычислять d, а достаточно проверить, что для любого простого делителя 1\п неверно, что qnk!1 = l(modp).
Упражнение 5.3.2. Докажите это.
В [175] доказано, что для q = рт в поле GF(qn) существует ГНБ какого-нибудь типа, тогда и только тогда, когда (п, т) — 1, п не делится на 2р при р = 4Z + 1, и п не делится на 4р при р = 41 + 2, 41 + 3. Докажем это в особо интересующем нас случае q = 2. Действительно, согласно квадратичному закону взаимности q — 2 будет квадратичным вычетом по модулю р при р - 1 = кп кратном 8. Поэтому согласно критерию Эйлера qkn/2 — q^~^/2 = l(modp), значит согласно упр. 5.3.2 ГНБ &-го типа не существует в рассматриваемом случае, т. е. когда п кратно 8 при любом к, или когда п кратно 4 и А; четно, или когда п четно, а к кратно 4.
276
Глава 5. Арифметика в нормальных базисах
Умножение в ГНБ. Докажем, что ГН Б являются базисами низкой сложности, и укажем формулу умножения в этих базисах. Вычислим сложность матрицы Т в схеме умножения Месси—Омуры для ГНБ, порожденного элементом
yk = l(modp), 7* l(modp), i = l,...,fc-l, (р = 1.
Тогда
«+с +.. •+сП +cql +...+ИО = Е •
Если ysql + 1 O(modp), s < k, i < n, то согласно определению ГНБ, очевидно, ysql + 1 = ya(s^qb(s^ ? s < k, i < n, где a(s, г), b(s, i) некоторые функции с аргументами 0<5<&,0<г<п,и значениями во множествах {0,..., к - 1}, {0,..., п - 1} соответственно, значит
7JV + у1 ~ 7/+а^5’^qb(s,l\ s = j - I mod к.
Равенство 4- у1 = O(modp) возможно тогда и только тогда, когда ysql — -1 modp при s — j - I mod к. Согласно определению ГНБ такая пара з, i существует и единственна.
Чтобы получить о ней некоторую информацию, возведем обе части равенства в степень 2к, откуда имеем q2tk = 1, i < п, что возможно только при 2гк, кратном d, так как последовательность gJmodp имеет минимальный период d — nr. Тогда 2ik/d = 2i(k/r)/n целое число, а так как к/г и п взаимно просты, то 2г кратно п, следовательно, i — 0 или г = п/2, а при нечетном п всегда г = 0. Но г — 0 возможно только при к четном и з = к/2, потому что только тогда ys = -l(modp). Обратно, если эквивалентность ^q1 ~ -l(modp) выполняется при г = 0, то к четно и s = к/2. Поэтому в силу взаимной однозначности представления элементов мультипликативной группы в виде #z7Jmodp, 0 < j < к, 0 < г < п, при четном к сравнение ysql = -l(modp) возможно тогда и только тогда, когда s = к/2, i — Q.
Покажем еще, что при нечетном к сравнение у8(1г = -l(modp), i < п возможно лишь при четном п, i = п/2, з, кратном к/г, где d = гп. Достаточно это сделать при четном п и i = п/2. Так как г нечетно, то из 75Qn/2 н -l(modp) в силу qd/2 = -1 modp имеем 75 = q^-^/2 modp, откуда 75Г = qr(r-Qn/2 — qd(r-i)/2 н i(modp), следовательно, sr кратно к, значит з кратно к/г.
Объединяя слагаемые вида , t = j - I mod к при фиксированном t в одну сумму, имеем при i — 0 и четном к
к-1	к-1
^(7^‘ + l)7Z t^k/2 1=0	1=0
(Г/2дг + 1)г _
5.3. Гауссовы нормальные базисы
277
к-1	к-1
= ^2	с(7^Ч1)7/+к =	^2 ^l+a[t,i}modkqb{ts) + k,
t^k/2 l=Q	t^k/2 l=Q
откуда, учитывая что
fc-i
^' = Ecy<
l=Q
получаем окончательно при i = 0 и четном к
хх"' = к + е Е =к + Е х^}-t^k/2 j=0	j^k/1
В оставшемся случае аналогично находим, что
^' = Е^Л-
7=0
При нечетном к также аналогично имеем для i — п/2
xxq — к +	{3 \
где s — то единственное число, для которого ^sqnl2 = -l(modp), и для i п/2
к-1 ql	qb{j'l)
ХХ = / > Х ;=о
Далее рассмотрим для простоты случай четного Q, т. е. q = 2т. Тогда слагаемое к в поле GF(q) равно к mod 2, т. е. равно нулю при нечетном к и равно 1 при четном к. Минус единицу в этом (при четном q просто единицу) поле можно представить как сумму всех элементов базиса (аналогично тому, как это делалось при построении ОНБ первого типа). Так как г-я строка матрицы Т равна по определению вектору коэффициентов разложения произведения xxq' по элементам базиса, то число С ненулевых элементов в этой матрице (на самом деле число единиц) при нечетном к не больше
к(п -1) + к- ]. + п = {к+ 1)п - 1,
при четном к не больше
к(п - 1) + к - 1 = кп - 1.
В [126] со ссылкой на оригинальные работы даны для q = 2 следующие нижние оценки для сложности ГНБ к-го типа: С кп-(к2 -Зк + З), если к четно, и С (к 4- 1)п - (к2 + к -h 1), если к нечетно, причем при
278
Глава 5. Арифметика в нормальных базисах
к = 3, 4 всегда С = 4п - 7, при к = 5, п>2ик = 6, п > 3 всегда С = 6п - 21, при к = 7, п > 4 всегда С — 8п - 43.
В [84,90], опираясь на расширенную гипотезу Римана, показано, что для всех простых р и п, не кратных р, существуют в поле GF(pn) ГНБ типа к = О(п3 log2 пр).
5.3.2.	Сложность умножения, инвертирования и возведения в степень в ГНБ
Точно так же, как и в доказательстве оптимальности базисов первого типа, можно проверить, что при мультипликативном порядке q равном d = пк минимальным многочленом над полем GF(q) элемента ( является круговой многочлен
J’p_1(X) = Xp“1 + ... + X+l,
и поле GF(qkn) порождается стандартным базисом
вс = {1, с,... ,сЛ7!-'}.
Упражнение 5.3.3. Докажите это.
Упражнение 5.3.4. Докажите, так же как и в случае ОНБ первого типа, что при d = кп построенные нормальные базисы действительно линейно независимы. В общем случае это будет доказано ниже.
Так как в случае d — пк элементы базиса Вх имеют вид
=<«‘ + с7?, + ...+сЛ‘Л
т. е. являются суммами разных элементов почти стандартного базиса
в; =
то матрица перехода от координат в базисе Вх к координатам в базисе В^ имеет по одной единице в каждой строке и поэтому соответствующее преобразование имеет нулевую схемную сложность (и линейную сложность в случае программной реализации). Обратное преобразование (определенное, конечно, только на соответствующем подпространстве) также по тем же причинам имеет нулевую схемную сложность. Сложность прямого и обратного перехода от стандартного базиса В^ к почти стандартному базису В^ над полем GF(q) была фактически оценена в доказательстве теоремы 5.2.1 и равна в рассматриваемом случае кп - 1.
Аналогично упр. 5.2.1 получаем оценку сложности умножения в базисе В^
Mq,Fkn(kn) < Mq(kn) 4 4кп - 5,
откуда имеем оценку битовой сложности умножения в нормальном базисе Вх
M°(GF(qn)) (Мд(кп) + 7кп - 8)M(GF(q)).	(5.14)
5.3. Гауссовы нормальные базисы
279
Применяя оценку Шенхаге для умножения многочленов, имеем для ГНБ А;-го типа
M(GF(qn)) = O(M(GF(q))(nk log пк log log пк)).
Используя метод инвертирования в нормальном базисе, отсюда имеем
I(GF(qn)) = O(logqn)M(GF(qn)) =
= O(M(GF(q))(nk log qn log nk log log nk)).
Упражнение 5.3.5. Докажите это в случае d = кп.
Аналогично, сложность возведения в произвольную степень е < qn оценивается как
о (= 0 (м(вг (я)) (1 +	(Л log, log log „цА.
\ log log е J \	\ log п)	)
Упражнение 5.3.6. Докажите это в случае d = кп.
В случае d < кп эти утверждения будут доказаны ниже.
В случае к = 1,2 рассматриваемые базисы являются оптимальными базисами первого и второго типов и при к — 1 полученная оценка превращается в оценку, приведенную в предыдущем пункте. Идея использования в этом случае перехода к стандартному базису появилась в 1997 г. в сообщении (Д. Дам), опубликованном в Интернет. При к = 2 указанная оценка асимптотически несколько лучше оценки
(Зт?	\
ЗМ°(п) + — log, п + О(п) \ M(GF(q)),
полученной выше для базисов как второго, так и третьего типов, так как Mq(2n) асимптотически меньше ЗМ$(п), но практически вопрос их сравнения не так очевиден. При больших к эффективность оценки 5.14 снижается, но при к =	она еще остается бесконечно малой
в сравнении с квадратичной оценкой.
В [114] случае d < кп получены такие же, как и выше, оценки сложности умножения, инвертирования и возведения в степень в ГНБ. Отличие от приведенных выше оценок только в оценке для инвертирования, которое проводилось после перехода к стандартному базису в расширенном поле GF(qkrl) с помощью быстрого варианта расширенного алгоритма Евклида, и поэтому оценка его сложности имела вид
I(GF(qn)) = O(M(GF(q))nk log2 пк log log пк).
Очевидно, что при q < к эта оценка формально чуть хуже, а при q > к — чуть лучше оценки, приведенной нами выше. Отметим, что мультипликативный множитель в первой оценке меньше, и ее можно применять не только к программной реализации, но и к построению логических схем. Заметим еще, что в тех случаях, когда к ограничено, его в упомянутых
280
Глава 5. Арифметика в нормальных базисах
оценках можно отбросить. Так как в [117] доказано, что для любых q,k существует бесконечно много п, для которых в поле GF(qn) существует ГНБ типа к, то в [114] сделан вывод, что для бесконечно многих п справедливы оценки
M((GF(^n))) = O(M(GF(q))n log п log log n), I((GF(qn))) = O(M(GF(q))n log2 n log log n), E(M(GF(qn)), e) = O(M(GF(q))n2 log q log log n), последняя из которых относится к возведению в любую степень е < qn.
5.3.3.	Гауссовы базисы и гауссовы периоды
Укажем, опираясь, на [114], еще один вариант изложения теории ГНБ, более элегантный, но несколько менее элементарный. Обозначим К порожденную элементом 7 подгруппу порядка к в мультипликативной группе поля GF(p), р = кп-]-1 и не делит q. Пусть Кгi = 0,..., п-1, смежные классы по подгруппе К и ( Е GF(qkn), (Р — 1. Последовательность
а» = 52<“, г = 0, аек,
называется гауссовым периодом шипа (п,к). Они появились в [119] для решения задачи о построении правильного 17-угольника. В [175] было доказано, что гауссов период типа (п, к) в поле GF(qn) образует нормальный базис тогда и только тогда, когда (n, nk/d) = 1, где d — мультипликативный порядок q в поле GF(p). Действительно, циклические подгруппы, порожденные 7 и q, имеют индексы кп/к = п и kn/d в мультипликативной группе поля GF(p), поэтому 7 и q порождают ее тогда и только тогда, когда (n, пк/d) — 1. Если они ее порождают, то гауссов период есть нормальный базис, если они ее не порождают, то они порождают ее собственную подгруппу, и тогда можно доказать, что гауссов период не образует нормального базиса. Действительно, без ограничения общности можно начать последовательность Ki с классов вида Ki = Кql, i = 0,... . Если 7 и q порождают мультипликативную группу поля GF(p), то в силу периодичности все различные классы имеют вид Ki = Кql, г = 0,..., m - 1, где тп делитель d, а так как их ровно п, то тп = п. Тогда
/ V*
«. = E<““E<'MEq
аЕК	aEKi
Так как = ао, то с^о € GF(qn), и Е GF(qn), i = 1,..., п- 1. Остается доказать линейную независимость системы {oti : i — 0,..., п - 1}, что выше было сделано только в предположении, что d = кп. В общем случае (О9 — modp — С, значит система {(а : а — 1,..., кп} лежит в поле
5.3. Гауссовы нормальные базисы
281
GF(qd) и при d < кп не образует в нем базиса. Круговой многочлен
fkn = 1 + х +... + хкп,
корнями которого являются элементы этой системы, в случае d < кп уже не будет неприводимым, но разлагается в произведение kn/d неприводимых многочленов степени d
fkn = Пга<“’
(1E.L
где L С К, — минимальный многочлен элемента С?. Действительно, у любого т^а корнями будут элементы {(b : b Е aQ}, где Q подгруппа мультипликативной группы поля GF(p), порожденная q. По условию ее порядок равен d. Можно проверить, что = т^ь тогда и только тогда, когда b Е aQ, т. е. b и а принадлежат одному и тому же смежному классу по подгруппе Q. Пусть список этих классов есть
Qi : i' = 1,...,	= {aQ : а Е L}, L С К,
d J
тогда, очевидно,
fkn = J J •
ciEL
Пусть равна нулю нетривиальная линейная комбинация
п-1
aiOii, a, G GF(q).
»=0
Очевидно, она представляется в виде
кп
^b^, b^GF^q),
т. е. для ненулевого многочлена
fcn-l
f(X) = b3+iX3
имеем /(£) = 0, и коэффициенты bi и bj будут всегда равны, если l,j принадлежат одному смежному классу Ki. Тогда для любого а Е К имеем /(О = 0, так как кп	кп
Е "X"' = Е - «
;=1
Действительно, заменив в первой сумме индекс суммирования на г = aj, заметим, что индексы i,j принадлежат одному смежному классу по К,
282
Глава 5. Арифметика в нормальных базисах
значит Ъг = bj и обе суммы равны. Из равенства /((а) = 0 следует, что многочлен f делится на многочлен тп^ 9 поэтому он делится и на произведение
fkn — J j
что невозможно, так как его степень равна nk - 1 и меньше степени многочлена . Противоречие доказывает линейную независимость элементов гауссова периода.
Осталось рассмотреть случай, когда 7 и q не порождают мультипликативную группу поля GF(p). Тогда в силу периодичности только часть классов имеет вид Кг = Kql ,i = 0,..., тп-1, где Kqm = К, тп < п и гауссов период строго содержит в себе систему вида аг — a* , i = 0,..., тп - 1, лежащую в поле GF(qm), и не образующую базиса в поле GF(qn).
Упражнение 5.3.7. Докажите, что тп делит п.
Как и в предыдущем разделе, элементы поля GF(qn), разложенные по ГНБ {аг}, можно представить в виде
кп
У?>
г — \
если их рассматривать как элементы поля GF(qd), причем переход к этому представлению выполняется бесплатно.
Упражнение 5.3.8. Докажите это. Докажите также, что переход от базиса {(г, i = О,... , кп - 1} к базису {(*, г = 1,... , кп} и обратно делается с линейной сложностью.
Однако это представление неоднозначно. Но его можно сделать однозначным, если потребовать выполнение дополнительного условия, а именно равенства всех пар коэффициентов аг,а}, если индексы i,j лежат в одном смежном классе по К. Назовем это условие условием согласованности (коэффициентов). Выполнение этого условия, очевидно, можно гарантировать только для элементов подполя GF(qn) поля GF(qd). Однозначность доказывается так же, как доказывалась линейная независимость данного ГНБ.
Упражнение 5.3.9. Докажите это. Докажите также, что восстановление по координатам в базисе {(г, i = 1,..., кп} координат в базисе {аг} делается бесплатно при выполнении условия согласованности.
Умножение в поле GF(qn) можно производить, пользуясь координатами в базисе {£*, i = l,...,fcn}. Как и в предыдущем разделе, рассматриваем это умножение как умножение многочленов с нулевым свободным членом по модулю многочлена Дп, с соблюдением равенства нулю свободного члена. Для этого сначала выполняется умножение по модулю хр - 1, а потом выполняется приведение по модулю к виду
5.3. Гауссовы нормальные базисы
283
с нулевым свободным членом. Непосредственно проверяется, что, если оба многочлена удовлетворяют условию согласованности, то и их произведение по модулю хр - 1 тоже удовлетворяет условию согласованности. Упражнение 5.3.10. Докажите это.
Указание. Пусть индексы таковы, что i = jhmodp, h € К. Тогда xa = xahmodp, Уъ = Уbh modр, при любых а, Ь, и, формально полагая т/о = 0, имеем
кп	кп	кп
~ ^аУг-amodp ~ %аУЬ]-а modp =	% ah mod pyhj-ah mod p ~
a=l	a=l	a=l
kn
—	mod рУ]~а modp —
a=[
После этого ко всем коэффициентам Zi прибавляется zQ.
Поэтому утверждение о сложности умножения в ГНБ порядка к из предыдущего раздела доказано и в случае d < кп. Очевидно также, что любой ненулевой элемент поля GF(qn), будучи представлен в виде разложения по базису {СЛ =	с выполнением усло-
вия согласованности, будет обратимым элементом в кольце многочленов по модулю fkn, в которое мы вложили (на самом деле изоморфно) поле GF(qn). Действительно, обратному для него элементу поля соответствует при рассматриваемом вложении элемент кольца, который при умножении на первый элемент по модулю хр - 1 будет равен единице (которая записывается в виде многочлена с одинаковыми коэффициентами), значит этот элемент обратим. Поэтому инвертирование в ГНБ тоже сводится к инвертированию в рассматриваемом кольце, т. е. к инвертированию по модулю многочлена Д.п, которое можно выполнить с помощью быстрого расширенного алгоритма Евклида.
На практике в случае q — 2 вместо быстрого алгоритма лучше применять, как замечено в работе [165], аналог бинарного алгоритма Евклида, не доводя вычисления до конца (так называемый полуинверсный алгоритм).
5.3.4.	Еще один вывод таблицы умножения для ГНБ
Продолжая рассуждения, начатые в предыдущем разделе, дадим краткий вывод формулы для вычисления произведения элементов ГНБ, несколько более простой, чем была получена выше. Для этого напомним, что через s был обозначен индекс, такой, что -1 6 Кs и было доказано, что при четном к число з = 0, а при нечетном к число s = п/2. Положим = 0, если j s, и ds = 1. Обозначим также h число общих элементов у Kh и 1 4- Kj (эти числа называются циклотомическими числами). Тогда справедлива формула
п-1	п-1
O^iOtj = kdj-i +	2 ty-i, h&h+i ~	h ~ kdj-i)cx.h^-i,
Д=0	h=Q
284
Глава 5. Арифметика в нормальных базисах
где операции с индексами проводятся по модулю п. Достаточно доказать первое равенство, так как второе следует из него, если учесть тот факт, что сумма элементов ГНБ равна — 1. Подставляя вместо их выражения в виде гауссовых сумм, имеем
Так как либо 1 + qJ гЬ = О, либо 1 + qJ гЬ 6 Кh для единственного h, О h < п, то либо в первом случае
аек
либо во втором случае
Ес
a(14V *Ъ)
аеК
а^К
Но 1 + qi~lb = 0 возможно только при j - i = s, поэтому слагаемое, равное к в рассматриваемой сумме, можно записать в виде k6j-i. Остальные слагаемые при b i - j можно просуммировать по индексу h, 0 h < п, при этом коэффициент при сумме
аЕК
будет равен числу таких Ь, что 1 4- qJ гЬ 6 К^, т. е. циклотомическому числу Поэтому
(х ql /	п-1	х q'
У? Са(д+д’'ь} ) = ( kdj-i + £ ЛаЛ ) =
а, ьек	'	'	Л=0	'
п-1	п-1
— kSj—i -Т	= kdj—i + Cj-i’hOth+i.
h=Q	h—0
Очевидно, что число элементов в 1 + Kj равно к, значит, имеется не более к ненулевых коэффициентов Сравнивая полученные формулы с формулами, использовавшимися при выводе формул Месси—Омуры
п-1
>0
имеем ti, j — Ci j - kdj.
5.3. Гауссовы нормальные базисы
285
5.3.5.	Примеры гауссовых нормальных базисов в полях GF(2n)
Пример 5.3.1. Построим ГНБ для размерности п = 4 и к = 3. Тогда р — пк 4- 1 = 13 простое и в поле GF(p) элемент q = 2 имеет порядок 12 (является примитивным элементом), так как 24 — 3 l(modp), 26 = -1 l(modp). Условия существования базиса выполнены. Положим 7 = 3, тогда 73 = l(modp), т. е. 7 примитивный корень степени к = 3 из единицы.
Проверим, что любой элемент от 1 до 12 в поле ^7^(13) однозначно представим виде — Зг2\ i < 3, j < 4, а также вычислим функции b(i, j) с аргументами 0<г<3, 0<j<4,h значениями во множествах {0, 1,2}, {О, 1, 2, 3}, такие, что
Yq3 + 1 = 3'2; + 1 = 7OC>V<!J) = 3a[,’1}2b{'-3\ i<k, j < п.
Так как 3 = 24 mod 13, то YY = 3’2J = 24i+j, атак как очевидно, что любое к, 1 к < 12, путем деления на 4 однозначно представимо в виде
к = 4г + j, i <3, j < 4, i =
j = к - 4г,
то, используя логарифмирование по основанию 2, получаем, что любой ненулевой элемент х поля GF(13) однозначно представим в виде
x = Yq3 = 3’2J — 24,+j,
log2 X
4
j — log2 x - 4г,
где log2 x есть дискретный логарифм в этом поле по основанию 2. Тогда функции а, b можно выразить формулами
log2(3l2J + 1)
b(i,j) = log2(3z27 + 1) - 4a(i,j).
Для составления таблицы этих функций проще всего вначале вычислить таблицу логарифмов в поле GF(13). Она имеет вид
X	1	2	3	4	5	6	7	8	9	10	11	12
log2 X	0	1	4	2	9	5	11	3	8	10	7	6
Таблица функции Зг2; 4- 1 mod 13, г < 3, j < 4 имеет вид
г	0	1	2	3
0	2	3	5	9
1	4	7	0	12
2	10	6	11	8
Из нее видно, что 352г = — l(mod 13) только при s = 1, г = 2 = п/2.
286
Глава 5. Арифметика в нормальных базисах
Таблица функции log2(3l2J + 1 mod 13), i < 3, j < 4 имеет вид
г	0	1	2	3
0	1	4	9	8
1	2	11		6
2	10	5	7	3
Таблица функций a, b имеет вид
г	0	1	2	3
0	0,1	1,0	2,1	2,0
1	0,2	2,3		1,2
2	2,2	1Д	1,3	0,3
Порождающим элементом базиса является
а = < + <3 + (9, С13 = 1, CeGF(212).
Все остальные элементы базиса представляются в виде
а2 = (2+<6 + С18=С2+(6 + <5, а^ + ^ + С*0,
as = (8 + C24 + CM = c8 + C"+C7.
Очевидно,
а16 = £16 +	+	= f + £9 + ( = а
поэтому а € GF(24) и построенная система действительно лежит в поле Gi?(24).
Очевидно, что сумма базисных элементов (след элемента а в поле GF(2))
12
а + а1 + а4 -Т а8 = С = 1,
г=1
так как
Так как разложения элементов а2 по системе , j = 1,..., 12, состоят из различных элементов, то линейная независимость системы а2 , i = 0, 1,2, 3, над полем GF(2) следует из линейной независимости над тем же полем системы , j = 1,..., 12. Последнее же следует из линейной независимости системы , j = 0,..., 11, которая была доказана в разд. 5.1.
Составим таблицу умножения в рассматриваемом базисе. Для краткости обозначаем а2 через аг. Очевидно, ао^о = «ь и далее, разбивая слагаемые
5.3. Гауссовы нормальные базисы
287
в произведениях на тройки, и учитывая, что (13 = 1,
aoai = (< + <3 + m2 + <6 + C5) =
— (с3+с9 + с) + (с7 + С8+С11) + (С6 + С5 + 0 — «о + «1 + аз-
Сравнивая полученную формулу с выведенной выше общей формулой при нечетном к и i п/2 fc-1
aaq ~ У? 2=0
видим, что они совпадают. Далее, используя таблицу для функции 6, имеем
6*Об*3 = 6*о 4- 6*2 4~ 6*3"
Проверим это равенство непосредственным умножением ао«з=« + С3 + <9) «8+<Н+<7) =
= «’ + < + <3) + Г + (‘° + О +	+ С1' + С5) = а0 + а2 + а3.
При i = 2 = n/2, s = 1, используя формулу
aaq = к 4- aq<J *, имеем
6*о<*2 — 1 + 6*1 + 6*3 — 6*о + 6*2-
Проверим и эту формулу непосредственным вычислением
аоа2=« + <3+<9)(С4 + С12+Л =
= (с5+е+<6) + +<°+с°) + «"+<’+d = — Qj + 3 + С*з = 6*i + 1 4" 6*3 = 6*о 4* 6*2.
Окончательно таблица умножения имеет вид
б*об*о — ot{, б*об*[ — 6*0 4- 6*1 4- б*з, б*об*2 = б*о 4- 6*2, б*об*з = 6*0 4- 6*2 4- б*з, значит, матрица Т = (tij), i < 4, j < 4, определяемая равенством
п—1
6*0б*г = j=0
имеет вид /О 1 о 0\ 110 1 10 10'
\1 О I 1/
Напомним, что формула умножения методом Месси—Омуры задается равенствами
z = ху, Zi — A(Slx, Szy), i = 0, 1,..., n - 1, где
5* (ж) — S (Xq, • • • ?	1) — (^i, • • • , Я'п—1 > ®0 j • • ♦ j 1)
288
Глава 5. Арифметика в нормальных базисах
—	циклический сдвиг координат на i позиций влево, а
п-1
А(х,у) = ^2 O'tjXtyj
i,j=0
—	билинейная форма с п х п-матрицей А = aitj = ^-jmodn.-jmodn- В рассматриваемом случае эта матрица имеет вид
	/0	1	1	1\
	1	0	1	0
	1	1	0	0
	\1	0	0	1/
а формула умножения имеет вид				
«о = «о(У| + Уз + Уз) +	®i(i/o + Уз) + ®2(Уо	+ Уг)	+	ж3(у0 + Уз),
= Ж1 (г/2 + Уз + Уо) +	Xi(yi + Уз) + ж3(У1	+ Уз)	+	®o(yi + Уо),
г2 = ж2(у3 + Уо + yi) +	х3(у2 + уо) + х0(у2	+ Уз)	+	«1 (Уз + У1),
г3 = ж3(Уо + У1+ Уз) +	®о(Уз + У1) + ®1(Уз	+ Уо)	+	ж2(у3 + Уз)-
Рассмотренный пример не очень интересен с прикладной точки зрения, так как в поле GF(24) существует оптимальный нормальный базис первого типа {£, £2, £4, £8, }> определяемый корнем многочлена р(Х) — 1 4- X 4- X2 4- X3 4- X4, который имеет меньшую сложность и в котором, следовательно, умножение выполняется по более простым формулам.
Пример 5.3.2. Рассмотрим более интересный пример. Построим ГНБ для размерности п = 13, для которой не существует оптимального нормального базиса. Выберем к — 4. Тогда р = n/c4-1 = 13 простое (при меньших к получаются составные числа) и в поле GF(p) элемент q = 2 имеет порядок р- 1 = 52 (является примитивным элементом), так как 24 l(modp), 213 = 30 l(modp). Условия существования базиса выполнены. Положим 7 = 30 = -23(modр), тогда 74 = l(mod)p, 72 = -l(modp), т. е. 7 примитивный корень степени к = 4 из единицы.
Проверим, что любой элемент от 1 до 52 в поле GF(53) однозначно представим виде Yqj = 30г2\ i < 4, j < 13, а также вычислим функции b(i, j) с аргументами 0^г<4, 0^j<13, и значениями во множествах {0, 1, 2, 3}, {0,..., 12} такие, что
y‘qJ + 1 = 30'2; + 1 = 7аМуЬМ = 30a^2b(i’j), i<k, j < п.
Так как 30 = 213 mod 13, то 7‘у-’ = 30'2J = 213,+-’, а так как очевидно, что любое к, 1 к 52, путем деления на 13 однозначно представимо в виде
к = 13г 4- j, i <4, j < 13, г = —
j = к - 13г,
то, используя логарифмирование по основанию 2, получаем, что любой ненулевой элемент х поля GF(52) однозначно представим в виде
х = Yqj - 30г2у - 213гЧУ, г <4, j < 13,
log2 х
13
j = log2 x - 13г,
5.3. Гауссовы нормальные базисы
289
где log2 х есть дискретный логарифм в этом поле по основанию 2. Тогда функции a, b можно выразить формулами
«(»> л =
log2 (30’2> + 1)
13
= log2 (30’2J + 1) - 13a(i, j).
Для составления таблицы этих функций вычислим таблицу логарифмов в поле GF(53). Достаточно ее вычислить для х 26, так как при х > 26 имеем log2 х = log2(53 - х) + 26 mod 52.
Она имеет вид
X	1	2	3	4	5	6	7	8	9	10	11	12	13
log2 X	0	1	17	2	47	18	14	3	34	48	6	19	24
X	14	15	16	17	18	19	20	21	22	23	24	25	26
log2 X	15	12	4	10	35	37	49	31	7	39	20	42	25
Таблица функции b имеет вид
г	0	1	2	3	4	5	6	7	8	9	10	11	12
0	1	4	8	8	10	10	6	0	3	10	9	9	4
1	7	3	12	7	2	1	11	3	2	8	11	2	12
2		0	4	1	12	7	9	5	9	11	4	10	2
3	7	5	11	12	1	8	6	0	5	6	5	6	3
Из нее видно, что 305Т = -l(mod 53) только при s = 2 = fc/2, i = 0. Порождающим элементом базиса является
a0 = a = ( + (’° +	+	= ( +	+ С + <23 = С + Г” + Г' +
с53 = 1, ( € GF(252).
Все остальные элементы базиса представляются в виде
а. =С + < +< +< , а3 = С8+Г8+С25 + С25, «5 = С21+С21+<б + С6, а7=<22 + С22 + <24 + С24, а, = <18 + (-18 + (10 + (-‘°, «п = <19 + г19 + <13+с13, Очевидно,
а13 = а2*' = <23 +
«2 = С+< +< +< , а4 = (16 + С16 + <3 + С3-«6 = с" +с“ + с12 + г12, а8 = <9 + Г9+<5 + С\ а1о = <17 + С,7+С2°+С2°, an = С'5 + С” + С26 + Г26,
~23 + С‘ +С' — а,
290
Глава 5. Арифметика в нормальных базисах
поэтому a € (tjP(213) и построенная система действительно лежит в поле (ZF(213). Очевидно, что сумма базисных элементов (след элемента а в поле GF(2))
12	26	52
Е«‘ = »’+с) = Е<’ = 1, г=0	2 = 1	г = 1
так как
Так как разложения элементов cti по системе , j = 1,..., 52, состоят из разных элементов, то, как и в предыдущем примере, проверяем, что система {(*;, i = 0,... , 12} образует нормальный базис в поле GF(213).
Составим таблицу умножения в рассматриваемом базисе. Очевидно, (*о<*о = <*i. Используя формулу при г 7^ 0
fc-i
aa ~ > a
7=0
и таблицу для функции Ь, получаем таблицу умножения в виде
<*о<*о = «ь
<*0<*1 — (*0 4- <*3 + <*4 4 <*5,
<	*о<*2 —	<*4 4-	а%	+	ап 4- <*12,	<*оаз	—	<*i 4- cij	4-	<*8	4-	(*12,
<	*0<*4 —	<*1 4~	<*2	+	<*Ю + <*12,	—	<*1 4- <*7	+	<*8	+	<*10,
<	*0<*6 = <*9 4 <*ц,	'	<*0<*7 = <*3 4 <*5,
<	*0<*8 —	<*2 4	<*3	4"	<*5 + <*9,	<*0<*9	—	<*6 4~ <*8	4"	<*Ю 4" <*Ц,
<*0<*10 —	<*4 4-	<*5	4"	(*9 4- (*11,	(*0<*11	—	<*2 4- <*6	4-	<*9	4-	<*ю,
<*0а12 — <*2 4- <*3 4- (*4 4“ <*12,
значит, матрица Т = (ti.y), г < 4, J < 4, определяемая равенством п-1
<*0<*2 ---	2
>=о
имеет вид
/0	1	0	0	0	0	0	0	0	0	0	0	°А
1	0	0	1	1	1	0	0	0	0	0	0	0
0	0	0	0	1	0	0	0	1	0	0	1	1
0	1	0	0	0	0	0	1	1	0	0	0	1
0	1	1	0	0	0	0	0	0	0	1	0	1
0	1	0	0	0	0	0	1	1	0	1	0	0
0	0	0	0	0	0	0	0	0	1	0	1	0
0	0	0	1	0	1	0	0	0	0	0	0	0
0	0	1	1	0	1	0	0	0	1	0	0	0
0	0	0	0	0	0	1	0	1	0	1	1	0
0	0	0	0	1	1	0	0	0	1	0	1	0
0	0	1	0	0	0	1	0	0	1	1	0	0
\0	0	1	1	1	0	0	0	0	0	0	0	1/
5.3. Гауссовы нормальные базисы
291
Матрицу можно также получить, пользуясь ее выражением через циклотомические числа
= Ci,j к6г,
где в рассматриваемом случае к = 4, дг = 1 только при i = к/2 — 2, впрочем, независимо от д в данном случае ttj = Cij. Напомним, что Cij — |(1 4- Кг) A Kj\, где Ki = qlK = 2гК, г = 0,..., 12 — смежные классы группы G?F(53)\{0} по подгруппе К = {у}, j = 0, 1, 2, 3}, где 7 = 30 = -23(mod 53). Так как К =	—
{1, 30, 52, 23} = {1, -23, -1, 23}, то выше фактически уже было вычислено при нахождении аг , что
Ку = 2К = {2,-2,7,-7}, = {8,-8, 25,-25}, К5 = 25К = {21,-21,6, -6}, Ку = 27К = {22, -22, 24, -24}, = 29# = {18,-18, 10,-10},
Кп = 211# = {19,-19, 13,-13}, Отсюда имеем
К2 = 4К = {4, -4, 14,-14}, К4 = 24К' = {16,-16, 3,-3}, К6 = 26К = {11, -11, 12, -12}, Кг = 2*К = {9, -9, 5, -5}, K,0 = 2l02f = {17,-17, 20,-20} К12 = 212ЛГ = {15, -15, 26, -26}
Ко + 1 = {2,-22,0, 24}, К2 + 1 = {5,-3, 15,-13}, К4 + 1 = {17, -15,4, -2}, К6 + 1 = {12,-10,13,-11}, Л-8 + 1 ={Ю, -8,6, -4}, ifl0 + l = {18,-16,21,-19},
Кх + 1 = {3,-1,8,-6}, К3 + 1 = {9, -7,26, -24}, К5 + 1 = {22,-20, 7,-5}, К7 + 1 = {23,-21, 25,-23} К9 + 1 = {19,-17,11,-9},
Кп + 1 = {20,-18, 14,-12}
Л-|2 + 1 = {16,-14,-26,-25}.
Перебирая попарные пересечения I + Кг и К}, приходим к той же матрице. Интересно, что она является симметрической, что никак не было очевидно заранее. Матрица А связана с матрицей Т соотношением	mOd n,mod п •
Поэтому она получается из нее «косой транспозицией», при которой первый слева столбец (имеющий номер нуль) остается на месте, а остальные элементы попарно меняются местами, так, что второй столбец меняется местами с последним, при этом еще его элементы циклически сдвигаются на одну позицию вниз (и соответственно вверх, если рассматривается передвижение элементов второго столбца в последний столбец), третий столбец меняется с предпоследним и т. д. Матрица А, что тоже не очевидно было заранее, совпадает в данном случае с матрицей Т (то, что она должна получится симметричной, заранее было очевидно), поэтому формула умножения в этом базисе имеет вид
Zl = (г,гф 1) +(гф 1,гФЗ) +
+ (гф1,гф4) + (гф1,гф5) + (гф2,гф4) + (гф2,гф8) +
+ (гф2,г©11) + (гф2,гф12) + (гф3,гф7) + (гф3,гф8) + (гф3,гф12) +
+ (г®4,гф12) + (гф4,гф 10) 4-- (гф5,г®7) + (гф5,гф8) + (гф5,гф 10) +
292
Глава 5. Арифметика в нормальных базисах
+ (гф6,гф9)4-(гф6,гф11) + (гф8,гф9) + (гф9,гф1о)ф
+ (гФ9,г’Ф И) + (гФ10,гфП) + (гФ12),
где через (г, j) для краткости обозначено xtyj -\-х3уг, а (г) = жг?/г , знак ф означает сложение по модулю п = 13. Поэтому сложность построенного ГНБ четвертого типа равна 22 • 2 + 1 = 45.
5.3.6.	Порядки генераторов базисов низкой сложности и быстрый алгоритм возведения в степень
В [112] экспериментально показано, что генераторы ОНБ второго и третьего типов довольно часто бывают примитивными элементами или имеют мультипликативные порядки вида (2п - 1)/к, где к — небольшое число (среди чисел от 2 до 1000 во всех случаях существования таких базисов оно, как правило, равно 1, редко 3, очень редко 7,9, И, а максимум 381). Это дает возможность использовать эти элементы как базисные для реализации ключевого обмена Диффи—Хеллмана [106]. В [112] доказано, что битовая сложность возведения в степень е < 2п генератора а ОНБ второго и третьего типов оценивается как O(nvi(e)), где ^(е) — число единиц в двоичном разложении числа е, и поэтому существенно меньше, чем полученная выше оценка для общего случая. Это дает возможность ускорения программной реализации ключевого обмена Диффи—Хеллмана для конечных полей соответствующих размерностей. Далее мы получим указанную оценку более просто и для произвольного нормального базиса В низкой сложности, т.е. такого, что Св — О(п). Для ГНБ аналогичный факт доказан в [113].
Вначале докажем, что аддитивная сложность умножения в любом нормальном базисе В произвольного элемента х — жо«о + • • • + хп-\ап_[ на произвольный элемент этого базиса равна (Св -п), а мультипликативная равна не более Св, а в случае q = 2 равна нулю. Действительно, для вычисления произведения
Ч-	• • • Ч- zn—iOin—i — xai — xqQlq Ч- ... 4- xn-\Oin-]Oii заметим, что zq в общем случае вычисляется в виде билинейной формы с матрицей А, содержащей Св ненулевых элементов, а остальные Zi вычисляются так же, только в билинейной форме делается циклический сдвиг переменных. Так как в данном случае вектор координат сомножителя содержит единицу на г-м месте, а в остальных местах нули (такой вектор обозначаем далее ez и называем единичным), при подстановке этого вектора в рассматриваемую билинейную форму из нее получается линейная форма, коэффициенты которой берутся из г-ого столбца, и поэтому аддитивная сложность этой формы равна сг — 1, а мультипликативная не больше сг, где сг — число единиц в г-м столбце матрицы А (а в случае q = 2 равна нулю). Аналогичным образом оцениваем аддитивную сложность вычисления произвольного Zj как сг_; mod п ~ 1, а мультипликативную — как Cj_jmOdn, так как при соответствующем циклическом сдвиге вектор ег- переходит в вектор ег_7 moci п • Поэтому полная
5.3. Гауссовы нормальные базисы
293
аддитивная сложность равна
п-1	п-1
mod п ~ 0 — С{ — Т1 — Ср Т1,
i=Q	i=0
а мультипликативная не больше Ср.
В случае q = 2 и ОНБ второго или третьего типа в [112] формула умножения вычислена в явном виде:
п	s	d	п
+	fk<*k +	(dk-i + a2n+l-k-i)&k,
к=\	к — 1	k=s~\~l	к—d 4-1
где Д = tti-k + a2n+i-fc-i при г > п - i и fk = ак^ + ak+i при i < п - г.
Упражнение 5.3.11. Докажите эту формулу.
В случае q = 2 для возведения в степень ае можно применить вариант бинарного метода
«е = Па2Ч = Па^’
А,-1
где — биты двоичного разложения
к=1
Последовательно умножая на при = 1, вычисляем экспоненту с помощью ^2 (^) - 1 умножений на элементы базиса ог, поэтому аддитивная сложность ее вычисления равна (^(е) - 1)(5# - п), а мультипликативная не больше (z/2(e) - 1)5#. В общем случае можно поступить подобным же образом.
Упражнение 5.3.12. Докажите, что для генератора ОНБ первого типа возведение в степень можно выполнить со сложностью О(п log log п log log log n) при условии бесплатного доступа к памяти объема О(п2). Почему это результат совершенно бесполезен для приложений?
В [ 112] отмечено также, что легко вычисляется обратный элемент для генератора ОНБ:
п а”1 = 52 akOik' fc=i
где ак = 1, тогда и только тогда, когда нечетно число I = к/2 при четном к и I = п - (к - 1)/2 при нечетном к.
Упражнение 5.3.13. Докажите это. Докажите также, что сложность вычисления обратного для любого элемента данного ОНБ равна О(п).
294
Глава 5. Арифметика в нормальных базисах
В общем случае для нахождения обратного элемента генератора ГНБ А:-го типа надо решить систему линейных уравнений с матрицей, в которой в каждой строке не более к ненулевых элементов.
Упражнение 5.3.14. Докажите, что обратный элемент для ае, где 1 < е < 2п-1, а а генератор нормального базиса В в поле GF(2n), можно вычислить со сложностью О(п - v2(e))SB •
Указание. а~е = a2”~l~e.
Результаты о порядках генераторов ОНБ в [112] строго не доказаны. Шпарлинский и фон цур Гатен доказали, что эти порядки не меньше 2д/2п-2 £ [112] выдвинута гипотеза о том, что, если п и 2п + 1 простые, то генератор ОНБ в поле GF(2n) — примитивный элемент этого поля.
В [113] выдвинута гипотеза о том, что, если п и кп 4- 1 простые, к < log2 п + 1, то генератор ГНБ типа к в поле GF(2n) — примитивный элемент этого поля. Существование ГНБ типа к легко доказать, так как порядок е двойки по модулю кп 4- 1 не меньше log2 р log2 2п к, а п простое, поэтому (пк/е, п) = 1. В [113] также выдвинута гипотеза о том, что для любого п, не кратного 8, в поле GF(2n) существует ГНБ. Как уже отмечалось, при п, кратном 8, ГНБ не существуют. В [113] проверено, что среди всех 1179 ГНБ для 2 < п < 527, 3 < к < 20, ровно 906 имеют примитивный генератор, и только 8 имеют порядок, меньший (2п - 1 )/п.
5.3.7.	О сложности порождения нормальных базисов, примитивных элементов и неприводимых многочленов
В разд. 3.1.7 были описаны некоторые вероятностные полиномиальные по сложности алгоритмы для решения этих задач. Детерминированные полиномиальные алгоритмы известны только в предположении справедливости расширенной гипотезы Римана (ERH).
В [84,90] (опираясь на ERH) показано, что для всех простых р и п, не кратных р, существуют в поле GF(pn) ГНБ типа к = О(п3 log2 пр).
Упражнение 5.3.15. Докажите, что проверку существования в поле GF(pn) ГНБ типа к можно выполнить со сложностью O(log2 п log2 пк).
Указание. Согласно упр. 5.3.2 для проверки условия (n, пк/d) = 1 нет необходимости вычислять порядок d элемента р по модулю nk-V 1, а достаточно проверить, что для любого простого делителя 1\п неверно, что qnk/l = 1 mod пк 4- I.
Используя указанные факты, можно найти к, для которого существует ГНБ типа к, со сложностью O(log2 п) при п, не кратном р, (а на самом деле даже со сложностью О (log3 п) log2 log2 log2 п). Построить сам базис можно со сложностью О(пк log2 к log2 n&4-n3 log2 р). Действительно, сначала вычислим подгруппу К порядка к в группе GF(kn 4- 1 )\{0}.
Упражнение 5.3.16. Докажите, что это можно сделать со сложностью
О (пк log2 кМ(GF(kn 4- I))) = О (пк log2 к log2 пк).
5.3. Гауссовы нормальные базисы
295
Указание. Для нахождения примитивного корня 7 степени к из единицы в поле GF(kn + 1) достаточно проверить, что ук = 1, и при любом простом делителе I числа к имеем = 1.
Потом построим разбиение группы GF(kn-\-1)\{0} на смежные классы Kj = Крг, i — 0,... , п — 1, и вычислим сдвиги 1 + Ki, i; = 0,... , п - 1, одновременно вычисляя цикломатические числа а потом элементы матрицы Т.
Упражнение 5.3.17. Докажите, что матрицы Т и А можно вычислить со сложностью O(nk)M(GF(kn 4- 1)) = О(пк) log2 кп.
Для вычисления базисных элементов
i = 0,... , п — 1,
аЕК,
нет необходимости находить примитивный корень ( степени кп + 1 из единицы в поле GF(2d). Так как
п-1
j=0
то вектор-столбец А = а$а, где а — вектор-столбец из компонент аг-, i = 0,..., п - 1, равен Та, поэтому линейный оператор
Т : (GF(pn))n -э (GF(pn))n
имеет собственный вектор а, соответствующий собственному значению «о- Собственное значение а0 является корнем характеристического многочлена det(T - ХЕ), где Е — единичный оператор. Этот многочлен имеет коэффициенты из поля GF(p) и может быть вычислен со сложностью O(n3M(GF(p))), как известно из линейной алгебры (см., например, [31]). Минимальный многочлен элемента а$ имеет степень п и корни ai, i = 0,..., п- 1. Так как характеристический многочлен делится на минимальный (это теорема Гамильтона—Кэли, см. [31]), а их степени равны, то они совпадают. Поэтому неприводимый многочлен, соответствующий базису ai, i = 0,..., п - 1, вычислен со сложностью O(n3)M(GF(p)). Тем самым базис полностью определен. Его элементы могут быть найдены путем разложения минимального многочлена на множители над полем GF(pn), что можно сделать со сложностью п7/2+б"р1//2 согласно [118].
Для построения нормального базиса в случае п, кратного р, представим п в виде ЩП2, где П2 = рк, а П\ некратно р. Нормальный базис в поле GF(pn') уже построен с полиномиальной сложностью в предположении ERH. Нормальный базис в поле GF(pn2) можно построить с полиномиальной сложностью согласно [148]. Так как (П1,П2) = Г то, как известно, произведение генераторов этих нормальных базисов является генератором нормального базиса в поле GF(pn). Его минимальный многочлен можно определить по минимальным многочленам генераторов
296
Глава 5. Арифметика в нормальных базисах
этих базисов с полиномиальной сложностью относительно п с помощью следующего утверждения:
Упражнение 5.3.18. Если /ь /2 минимальные многочлены нормальных базисов в полях GF(pni), GF(pn2), состоящих из элементов
{аг : i = 0,... , П[ - 1} и {Д : г = 0,..., п2 - 1}
то минимальный многочлен элементов аг/3} равен
П(Х-аД) = П<72(-Х-/а.)-
г, j	г
Так как минимальный многочлен нормального базиса неприводим, то тем самым с полиномиальной сложностью построен неприводимый многочлен над полем GF(p).
В предположении существования ГНБ с генератором, имеющим мультипликативный порядок (2П - 1)/п, в [113] при п, не кратном 8, указан полиномиальный по сложности алгоритм порождения примитивных элементов (и соответственно примитивных многочленов) в поле GF(2n). Допустим, что в поле GF(2n) построен ГНБ с генератором а порядка е > (2П — 1)/п. Положим d = (2П - 1)/е. Представим d в виде d\d2, где (d2, е) = 1 и каждый простой делитель d{ делит е. Найдем Д Е GF(2n) такие, что = а, /З^2 = 1. Это можно сделать детер-минированно со сложностью п7/2+€п согласно [118], разлагая двучлены на множители. Очевидно, Д имеет порядок ed{, а значит (3^/32 согласно известной лемме имеет порядок ed\d2 = 2п - 1, так как (edj, d2) = 1. Поэтому ДД является примитивным элементом. Вычисляя минимальный многочлен этого элемента, получаем примитивный многочлен.
Так как часто оказывается е — 3, 7, 15 и т. д., то для практического ускорения алгоритма полезно использовать следующий факт:
Упражнение 5.3.19. Если d = pk - 1, то решение уравнения xd — а в поле GF(pn) сводится к решению линейной системы над GF(p) с п неизвестными.
Указание. Уравнение xd = а равносильно уравнению xpk = ах, которое в нормальном базисе (да и в стандартном тоже) записывается в виде линейной системы над GF(p) с п неизвестными. Если базис является ГНБ или вообще базисом низкой сложности и а — его элемент, то эта система имеет редкую матрицу, т. е. матрицу с О(п) ненулевых элементов.
5.3.8.	Редундантные базисы
Для произвольного поля GF(2n) рассмотрим наименьшее его расширение, содержащее корни m-й степени из единицы, другими словами поле разложения многочлена Xm - 1. Назовем это поле циклотомическим и обозначим К(т). Для произвольного поля GF(2n) обозначим К(т(п)) наименьшее содержащее его циклотомическое поле с наименьшим т — т(п). Это наименьшее поле, в котором можно выполнить дискретное преобразование Фурье порядка т(п), возможно, не выполнимое в поле GF(2n).
5.3. Гауссовы нормальные базисы
297
Приведем таблицу значений функции т(п):
п	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16
т	3	7	5	11	9	29	17	19	11	23	13	53	29	31	19
Поле GF(2n) рассматриваем как вложенное в поле K(m(n)). Пусть ( Е К(тп(пУ) примитивный корень степени т(п) из единицы. Рассмотрим систему
{£а : a — 0,..., m(n) - 1}
и натянутое на нее подпространство в поле К(т(п)). Очевидно, оно замкнуто относительно сложения и умножения, а значит, согласно малой теореме Ферма, и относительно инвертирования, т. е. оно образует подполе в поле К(т(пУ). Это подполе является циклотомическим и совпадает поэтому с полем К(т(п)). Систему {(а : a = 0,..., т(п) - 1} назовем редундантным базисом в полях GF(qn) и К(т(п)).
В обычном смысле эти системы могут не являться базисами, так как могут быть линейно зависимыми. Введены они были в [179]. Примером редундантных базисов являются базисы вида : а = 0,	где
(Р = 15 £ е GF(qd), d порядок элемента q в поле GF(p), р = кп + 1, которые уже появлялись у нас при изучении ГНБ. Очевидно, что К(р) = GF(qd), а так как d кратно п, то т(п) < р. При к = 1, очевидно, d = п, т(п) = р. Так как многочлен fn неприводим, то {(а, а = 0,... п - 1}, где (р = 1, линейно независимы и образуют базис в поле GF(qn). Система {£а, а — 0,... , п} является редундантным базисом.
Разложение элемента поля GF(qn) или поля К(т(п)) по редундант-ному базису неоднозначно. Умножение в этом базисе, очевидно, совпадает с умножением в кольце многочленов степени т(п) по модулю Хт^ - 1. В [179] отмечается, что это умножение удобно для схемной реализации, так как совпадает с циклической сверткой.
В [114] было показано, что, если существует ГНБ типа к в поле GF(qn), существует изоморфное отображение поля GF(qn) в кольцо Rf — GF(q)[X]/fp-x многочленов по модулю fp, где р = кп + 1, /р_1 = (^-1)/(Х-1).
По существу, это мы доказали в разд. 5.3.3. Но редундантный базис возникает фактически не в этом кольце, а в кольце R = GF(q)[X]/f многочленов по модулю f = Хр — 1, именно в нем умножение совпадет с циклической сверткой многочленов, причем редундантному базису соответствует стандартный базис {1, х, х2,..., хкп}, где х — корень многочлена /.
Докажем, что это кольцо содержит как подкольца кольцо Rfp_{ и поле GF(qd). Действительно, круговой многочлен
fp = \ +Х + ... + Хр-'
298	Глава 5. Арифметика в нормальных базисах
разлагается в произведение kn/d неприводимых многочленов степени d л = Пт<а’
aEL
где L С К, тп(а — минимальный многочлен элемента (а. Значит, разложение на неприводимые многочлены двучлена Хр - 1 над полем GF(q) имеет вид
Хр - 1 = (X - 1) П тс = (X - 1) Пл a^L	i
Поэтому согласно алгебраической форме китайской теоремы об остатках кольцо R изоморфно произведению колец Rf и GF(q), а подкольцо кольца R, порожденное базисом {х, х2,..., хкп}, изоморфно кольцу Rfp-i и может рассматриваться относительно базиса {1, х, х2,..., хкп~1}. Взаимный переход между этими базисами выполняется со сложностью кп - 1 (см. упр. 5.3.8, с. 282).
Так как все gi неприводимы и имеют степень d, то все кольца Rg. изоморфны полю GF(qd). Очевидно, что кольцо GF(qd)nk/d изоморфно произведению колец R9i, а значит и кольцу Rf 19 и может рассматриваться как подкольцо кольца R. Так как диагональное отображение х —> (х, х,..., х) изоморфно вкладывает поле GF(qd) в кольцо Rf, то отсюда следует, что поле GF(qd) можно вложить (и многими разными способами) в подкольцо кольца R, порожденное базисом {х, х2,..., хкп}, который можно отождествить с редундантным базисом {(а : а = 1,..., кп}, где (р = 1, ( € GF(qd). Различным вложениям будут соответствовать разные разложения элемента поля GF(qd) по этому «базису». Нас интересуют вложения подполя GF(qn). Одно из них было указано при построении ГНБ. Действительно, в поле GF(qn) существует ГНБ {«о, • • • > «п-i} типа к, где
=	г = 0,	—1,
аеК{
Ki = qlК, i = 0,..., п - 1 — смежные классы по подгруппе К, порожденной элементом 7 порядка к, и {1,..., кп} = К\ U ... U Кп. Разлагая произвольный элемент а поля GF(qn) по этому базису
п-1
С =	0>i&i
и выражая этот базис через редундантный базис, получаем, что в последнем элемент а можно однозначно записать с соблюдением условия согласованности коэффициентов, а именно, равенства всех пар коэффициентов Ci, Cj, если индексы i,j лежат в одном смежном классе по К Переход между координатами в ГНБ и координатами в редундаитном базисе делается бесплатно при выполнении условия согласованности. Можно вместо
5.3. Гауссовы нормальные базисы
299
редундантного базиса взять рассматривавшийся базис {х, х2,..., хкп} в подкольце кольца R, и множество элементов этого подкольца, координаты которых в этом базисе удовлетворяют условию согласованности, образует подкольцо, изоморфное полю GF(qn). Для проверки указанного изоморфизма достаточно установить взаимную однозначность естественного изоморфного отображения, и сохранение операций при нем, а это было доказано в разд. 5.3.3. Выполнение умножения в поле GF(qn) поэтому сводится к выполнению умножения в изоморфном ему подкольце кольца R относительно базиса {1, х, х2,..., хкп}. Это умножение является циклической сверткой и выполняется весьма регулярной схемой сложности 2{кп + 1)(кп + 1) и глубины |’log2 2&тТ|, как было отмечено в [179]. Если q — 2, то схема будет обычной логической схемой. Если учесть, что первую координату можно считать нулевой, то число умножений уменьшается на кп+ 1, и число сложений на кп. Если учесть переход к базису {ж, х2,..., хкп}, то кп сложений придется добавить. Но если учесть, что среди пк координат элемента подкольца, изоморфного подполю, согласно условию согласованности только п различных (каждая из которых дублируется к раз), то число умножений в схеме уменьшается до п2, а если учесть, что вместо кп координат достаточно вычислить п, то и число сложений уменьшается до п(кп - 2), а может оказаться и меньше из-за возможной склейки слагаемых.
При к = 1 формулы проще и их легко выписать в явном виде. При умножении 22 аг%г на 22 ^Хг по модулю Xn+l - 1 получаем многочлен 2 = 1	2=1
IL , где 2=0
П
Ci —	2 modp? i = 0, . . . , П, = 0,
и каждая сумма содержит на самом деле п - 1 слагаемое, кроме первой, в которой п слагаемых. Далее его переписываем в виде
п	п
CiX , Ci — Ci + Cq —	{(Ljb^i--.^ modp T	*
2=1	J=1
Билинейная форма
n	n
Ci = djbi-j modp 4" tijbp-j j=l
содержит In - 1 слагаемых и остальные формы столько же. Так как базис О является перестановкой ОНБ первого типа, то полученная
формула умножения эквивалентна формуле Месси—Омуры для этого базиса. Но если воспользоваться предыдущей формулой, то сложность
300
Глава 5. Арифметика в нормальных базисах
умножения уменьшается до 2п2 -1 за счет увеличения глубины на единицу. Указанная схема с точностью до перестановки переменных совпадает со схемой, полученной в [157].
Пусть п — 2m. Представляя
а(Х) = a0(X) + Xm+1ai(Z), Ь(Х) = b0(X) + Xm+'br(X)
и вычисляя произведение по модулю - 1 по формулам
Со = ао&о 4-	,
Ci = а0&1 4- aj&o — («о 4- ®i)(^o 4~ ^i) — О) — do 4- d[X , с(Х) = со 4- Xm+1 ci mod Х2ш+1 - 1 = с0 4- dx 4- Xw+1d0, умножение многочленов степени п по модулю -1 можно выполнить, используя прием Карацубы, со сложностью не более
М(тп) 4- 2M(m 4-l)4-2m-14-m4-m + 2m + 2m =
= М(т) + 2М(т 4- 1) 4- 8m - 1, где М(т) сложность умножения многочленов степени т - 1.
Рассмотрим случай к — 2. В этом случае базис (кп соответствует ОНБ второго или третьего типа, в зависимости от порядка элемента q в поле GF(p). Если порядок d равен 2п, то получается второй тип, а если d — п, то третий. В обоих случаях 7 = -l(modp), билинейная форма
2п	2п
Q,jb2n-[-2-j modp 4" Qjb2n+l-j j=2	j=l
содержит 2п - 1 4- 2п — 4п - 1 слагаемых.
В случае базиса	второго	типа	есть	перестановка С 4-	=
г* _	поэтому из 2п координат произведения до-
статочно вычислить только ту половину, которая имеет номера от 1 до п, и в формуле для С\ надо отождествить переменные по правилу сц = a2n+i-i, bi = &2п+1-ь Тогда билинейная форма принимает вид
п	п	п	п
С\ — ajbj-\ + ^2 an+\-jbn+2-j 4- djbj + Qjbj =
j=2	j=\	j=\
n	n	n	n-1
— ajbj-i 4- ain-jr\-jbn^-2-j =	T 2 ^jA?4-i T O"nbn-
j=2	j=l	j=2	j=l
Она состоит из 2n — 1 слагаемых. Так как выбранные координаты совпадают с координатами в ОНБ, то остальные билинейные формы получаются из первой циклическим сдвигом переменных. Получились те же самые формулы умножения в ОНБ Месси—Омуры. В случае базиса третьего типа верно то же самое, но выбор номеров координат, которые надо вычислять, и правило отождествления переменных более сложны.
5.4. Операции в нормальных базисах
301
5.4. Операции в нормальных базисах
5.4.1.	Пример построения схемы для умножения и инвертирования в оптимальных нормальных базисах второго типа
Пусть п — 23. Можно проверить, что это случай базиса третьего типа, степени двойки порождают все 23 квадратичных вычета по модулю р = 2n + 1 = 47, и 223 = l(mod47). Укажем без доказательства, как выглядит матрица Т, определяющая умножение в этом базисе (подобно рассмотренным случаям п = 10, 28). Сначала вычислим последовательность 7г(&) = 2к modp, к = 0,... , п — 1. Она имеет вид
1, 2, 4, 8, 16, 32, 17, 34, 21, 42, 37, 27, 7, 14, 28, 9, 18, 36, 25, 3, 6, 12, 24.
Далее определим последовательности
1 < а(к) п, к = \,...,п и 1 ц(к) п, к=1,...,п так, чтобы
1 2к' — ±7г(<т(А; + 1)) mod р, к = 0,..., п - 1,
1 - 2к = ±тг(р,(к)) modp,	к = 1,... , п.
Тогда элементы матрицы Т определяются равенствами tij =	4-
где $к,к = 1, $k,i =0, к I. Можно проверить, что всегда tij =0,1 и общее число единиц в матрице Т равно 2n- 1. Алгоритм Месси—Омуры умножения в этом базисе естественно такой же, как был описан выше. Его сложность равна п(3п - 2) = 1541, а глубина равна 2 + flog2 ri\ — 7.
Опишем, как можно построить схему перехода от нормального базиса
Г 2	4	8	16	Л2П*1')
{о;, a , a , a , a ,... , a )
к стандартному базису {a, a2,... an}. Так как a = ( + где С 1 любой элемент поля GF(22n) такой, что (р — I (его конкретный вид не будет использоваться), то
a	P + Q = С + Q = on, 1 n,
поэтому базис {a, a2, a4, ct8, a16,..., a2” } является перестановкой базиса {oj, a2,... , «»}, а именно, совпадает с базисом
{«1, «2, «4, «8, «16, «15» «17, «13, «21, «5, «10, «20,
О7, Ct]4, 6^19, Q9, Ct 18, «н, «22, «3, «6, «12, «2з}-
Поэтому для перехода от нормального базиса к базису {ai, a2,..., an} достаточно выполнить соответствующую перестановку координат, а для обратного перехода — обратную перестановку.
302
Глава 5. Арифметика в нормальных базисах
Опишем теперь, как перейти от базиса {«i,	, an}, к базису
{а1, а2,... , ап}. Для этого надо установить связь между п-мерными булевскими векторами х, у такими, что
п	п
52 xia' = 52 Уг°Ч-
г=\	i=l
Эта связь задается линейным преобразованием у = Fn(x). Его можно вычислить рекуррентно. Покажем, как это сделать при п = 23. Воспользуемся тождествами
2	2‘
aiOtj = a!+j + ai-j, i>j, at - a2i, a2, = a , 2^	•	k
Оца =	+ a2k-i, i=l,...,2 —1.
Применяя их, получаем, что «in2 = «з + откуда
4
52 Viai =	+ 3/2«2 + а2(УЗ«1) + З/З»! + 3/4«4 =
г=1
п
= (.У1 + Уз)«1 + 3/202 + О2(3/зО1 + 1/402) = 52 Х^'’
i=l
значит, Х\ = У1+ Уз, ^2 — У2, Хз — Уз, £4 = 1/4, поэтому сложность преобразования F4 (и совпадающего с ним обратного) равна 1, и глубина тоже 1. Такие же утверждения справедливы и для F3.
Преобразование +8 выражается через F4, а преобразование F? — через F4, F3, и то же верно для обратных преобразований. Для этого воспользуемся тождествами
4	4	4	2
Ofict = «5 + #з, aia	&за	= 6*7 + 01,	6*4 = б*8
и вытекающим из них тождеством
8	4	3	/ 4	\
52 у^ = 52 + 52 y*~iai+°4 (52 у^°ч)=
i—l	i=\	i=\	i=\	'
3	/ 4	\	8
= 52^ +	+ 2/404 + О4 ( 52 y^+iai ) =52 XiO>'
2=1	4 2 = 1	7	2=1
Из этого тождества следует, что
(ж,,... ,ж8) = Fg(yi,... ,у&) =
= (Fi(yi +У7,У2+Уб,Уз + У5,У4),Р4(у5,... ,ys)),
(?/|, ••• ,3/8) = Fg\xlt... ,xs) =
= (S^Fi^xi,... ,х4),у5,--- ,ys),Fi'(xs,... ,х&)),
5.4. Операции в нормальных базисах
303
где схема 5 с 8-ю входами и выходами реализует линейное преобразование
S(ub ..., щ) = (щ 4- и2 4- и6, щ 4- u5, U4, ..., щ).
Поэтому сложность преобразования F$ равна 5, а глубина — 2 и то же верно для обратного преобразования F% 1. Аналогично получаем такие же оценки сложности и глубины для F7. В общем случае рекуррентные оценки имеют вид
L(n) L(2k) + L(n - 2к) + п - 2к, 2к < п < 2к+\ L(2k+1) ^2к - 1 + 2L(2k), D(n) D(2k) + 1, D(2k) < D(2k~l) + 1,
откуда
L(2k) = 2k~1(k-2) + l, D(2k) = к - 1,
£(16) = 17, £>(16) = 3, £(23) = 17 + 5 + 23 - 16 = 29, £>(23) = 4.
Таким образом, умножение в оптимальном нормальном базисе 2-го или 3-го типа {о, а2, а4, а8, а16,..., а2 } сводится к умножению в стандартном базисе {а, а2,... ап] с дополнительной сложностью не больше (Зп/2) log2 п 4- Зп (при п = 23 не больше 87) и дополнительной глубиной riog2 n] -1 (при п = 23 с дополнительной глубиной 4). Умножение в стандартном базисе сводится к обычному умножению двоичных многочленов степени, меньшей п, в результате которого получается многочлен f степени не выше 2п-2, умножению его на х (оно делается бесплатно) и вычислению остатка от его деления на минимальный многочлен дп указанного базиса. Для вычисления вектора коэффициентов этого остатка можно применить стандартный алгоритм быстрого деления: сначала найти частное q от этого деления (оно имеет степень не больше п — 1), потом найти младшие п коэффициентов произведения q на дп, и их сложить попарно с младшими коэффициентами многочлена /. Для вычисления q сначала находим частное гп от деления x2n+l на дп (оно не зависит от /), а потом вычисляем произведение f на гп, причем нужны только коэффициенты при члене ж2п+1 и выше. Оба умножения имеют один переменный и один постоянный множитель с небольшим числом одночленов, и могут быть реализованы схемами из одних элементов XOR, моделирующими стандартный алгоритм умножения столбиком. Основная проблема — вычислить эти множители дп и гп, но это можно делать программным образом.
Теоретически ответ можно иногда получить и в явном виде, например, в случае п = 3 • 2к - 1. При п = 5 получается базис второго, а при п = 11,23, 191 получаются базисы 3-го типа. Достаточным условием существования такого базиса является простота чисел п и 2п 4- 1. В примере 5.2.1 было вычислено, что
1 . -«-4 । тгб । -у-7 ।	I v 16 । хг20 ।	I хг23
^23—1+^- 4- А + X 4- А 4- А 4- А 4- А 4- А ,
304	Глава 5. Арифметика в нормальных базисах
и вообще при п = 3 • 2k - 1 получится многочлен веса 2к + 3
дп = 1 + Х2'" +	+ У2"'^’42*” + ...
2Л+1+2Л-1+2/г_2 . Лг21'+1+2/г“1+2^2+2*г“3 . + А	~г А	+ . . .
... + т2‘+1+2‘-1 = (1 + тП^ + *2\
э/г— 1	1 I ^к—2	। ^к~2 । ^к—3	~>к .
hk = 1+Х2 + Х2 +2 +Х2 +2 +2 +...+Х2~1.
При любом к можно непосредственно проверить тождество над полем GF(2)
hk(hk + x2t) = i + x2‘+1-'.
Упражнение 5.4.1. Сделайте это.
Из него следует тождество
gnrn = ((1 +X2"+')hk + +)((1 + X2^hk + Х2к+'+2к) = = (х2к+\ + (hk + х2‘)) (++l (hk + х2‘) + hk) = = (i + x2i+2)hk(hk + x2") + (hl + (кк + х2У)х2к+' = = (I + x2k+2) (I + ++1->) + (x2‘)2t2‘+i = = (l+++2)(l+++1-1)+++2 =
= X2‘+42‘+’-i + _у2*+1-1 + J = X2n+1 + x2‘+>-i + 1;
откуда видно, что частное от деления Х2п+1 на дп равно
rn = (l+X2k+')hk+X2k+42k = (l + X2k+')hk+Xn+l.
В частности,
г23 = 1 + х4 + X6 + X2 + X16 + т20 + X22 + X23 + X24.
Умножение / на тп (с вычислением только старших коэффициентов, начиная с члена JT2n+1) в случае п = 23 можно реализовать с помощью восьми векторных сложений по модулю два схемой глубины 3 и сложности 2+4+5+14+18+20+21. После этого полученное частное степени не выше п-1 умножаем подобным же образом на дп схемой глубины 3 и сложности (23 -4) + (23 - 6) + (23 - 7) + (23 - 8) + (23 - 16) + (23 - 20) + (23 -22). После этого производится сложение полученного вектора с вектором младших коэффициентов /. Общая глубина будет равна 7, а общая сложность 7(23 - 2)+ 23 - 8 + 23 = 185.
В случае п = 3 • 2к - 1 глубина будет
2|"log2(2& + 2)] + 1 = 2 log2 log2 п + 0(1),
5.4. Операции в нормальных базисах
305
а сложность равна
(п - 2)(2к + 3) - 2к + 4 < 2n log2 п 4- п.
Если обозначить т(п) сложность умножения двоичных многочленов степени, меньшей п, а через d(n) — соответствующую глубину, то сложность и глубина умножения в оптимальном нормальном базисе 3-го типа при п = 3 • 2к - 1 оцениваются сверху как
7п
M(n) < m(n) -h 3L(n) 4- 2n log2 n 4- n < m(n) 4- — log2 n 4- 4n,
D(n) < d(n) 4- 2 log2 n 4- 2 log2 log2 n + 0(1).
При n — 23
M(ri) < m(n) 4- 87 4- 185, D(n) < d(n) +4 4-7.
Если для умножения взять стандартную схему, то
т(п) < тг2 + (тг - I)2, d(n) < |"log2 n"|,
откуда /к 7	ч2 7n
M(n) < n + (тг - 1) + — log2 n + 4тг,
D(n) < 3 log2 n + 2 log2 log2 n + 0(1).
При n = 23
M(n) < 1285, D(n} < 17.
Если для умножения взять схему Карацубы, то при п = 23 получаются оценки т(23) < 755, d(23) <10. Действительно,
m(23) = Зттг(П) + 4 • 23, тп(11) = Зт(5) + 4 • 11,
т(5) = Зттг(2) + 20 - 3 • 13 + 20 = 59,
а мультипликативная сложность равна З5 = 243, откуда М(23) < 1027, О(п) <21, а мультипликативная сложность по-прежнему равна 243. При использовании этой схемы умножения в качестве подсхемы схемы
инвертирования на самом деле достаточно одной схемы Fn и одной схемы F+1, поэтому оценка сложности будет на 29 меньше, т. е. М(23) < 998.
Для сравнения сложность мультиплера Месси—Омуры при п — 23 равна
п(3п — 2) = 1541, а глубина равна 2 + flog2 п] = 7.
По теореме Ферма обратный элемент можно вычислить по формуле
2. Для возведения в степень надо построить аддитивную цепоч-
ку для числа 2П -2, содержащую минимальное число сложений. Для этого
сначала надо построить минимальную линейную аддитивную цепочку для числа тг - 1 =22. Например, такой будет цепочка 1,2,4,8,16,20,22. После этого выписываются в ряд числа
21 - 1, 22 — 1, 24 - 1, 28 - 1, 2
- 1,
220 - 1, 222 - 1
306	Глава 5. Арифметика в нормальных базисах
и между ними вставляются последовательности удвоений. Так как удвоения реализуются путем соответствующей коммутации входов, то сложность инвертирования в поле 6?2?(223) оценивается как 1(23) < 6М(23), где М(23) сложность умножения в нормальном базисе. Аналогично глубина оценивается как Z)I(23) < 622М(23). Если использовать указанную выше схему для умножения в нормальном базисе, то сложность инвертирования будет 1(23) = 6 • 998 = 5988, а глубина 6 • 21 = 126.
Можно взять минимальную по глубине линейную аддитивную цепочку для числа п— 1 =22. Например, такой будет цепочка 1,2,4,6,8,16,20,22. Ее глубина будет 5, а сложность 7. После этого выписываются в ряд числа 21 - 1, 22 — 1, 24 — 1, 2б — 1, 28 - 1, 216 — 1, 220 - 1, 222 - 1,
и между ними вставляются последовательности удвоений. Сложность инвертирования в поле GF(223) оценивается как 1(23)	7М(23). Ана-
логично глубина оценивается как DI(23) < 5227И(23). Если использовать указанную выше схему для умножения в нормальном базисе, то сложность инвертирования будет 7-998 = 6972, а глубина 5 • 21 = 105. Если использовать схему М(23) = 1288, 22(23) = 7 получим 1(23) < 9016, 221(23) < 35.
5.4.2.	Пример схемного инвертирования с использованием редундантного базиса
Как отмечалось в разд. 5.3.3, для умножения в поле GF(2n), где 2 является примитивным элементом в поле GF(p), р = п 4- 1, можно воспользоваться умножением в кольце многочленов по модулю Хр - 1, невзирая на неоднозначность представления в таком виде. Для перехода к однозначному представлению достаточно выполнить преобразование Аг = аг + aQ, i — 1,..., п сложности п и глубины 1. Умножение в этом редундантном базисе является (см. 5.3.8) циклической сверткой, и выполняется с мультипликативной сложностью р2 и аддитивной сложностью р(р - 1). Эта сложность немного выше сложности умножения в стандартном базисе с многочленом Хп + ... 4- 1 ив соответствующем ОНБ, однако глубина на единицу меньше, так как равна 1 4- flog2 р]. А так как возведение в квадрат в этом базисе сводится к перестановке координат и при схемной реализации выполняется бесплатно, то выполнение инвертирования в этом базисе по формуле Х~} = Хг~2 можно реализовать схемой глубины d(n - 1)(1 4- flog2 р]) 4- 1, где d(n - 1) = flog2(n - 1)1 — минимальная глубина аддитивной цепочки для п - 1, у которой все шаги линейны, кроме удвоений.
Упражнение 5.4.2. Докажите это утверждение.
Пример 5.4.1. Например, для п = 28 цепочкой минимальной сложности 6 является 1, 2, 3, 6, 9, 18, 27 но цепочка большей сложности 1, 2, 3, 4, 8, 11, 16, 27 линейной имеет меньшую глубину 5. По ней можно построить цепочку для вычисления 227 - 1 , в которой все неудваивающие шаги имеют вид
1,	22 — 1, 23 - 1, 24 - 1, 28 — 1, 2" - 1 , 216 - 1 . 227 - 1
и которая также имеет глубину 5, если игнорировать удваивающие шаги.
5.4. Операции в нормальных базисах	307
Поэтому глубина инвертирующей схемы равна 5-6+1 = 31. Единица добавляется потому, что результат надо привести к виду в стандартном или нормальном базисе. Сложность схемы равна
(d(n - 1) + i/2(n - 1) - 2)(n + l)(2n + 1) = 11 571.
Заметим, однако, что для некоторого неоптимального нормального базиса можно построить для поля GF(228) схему глубины 27 и втрое меньшей сложности.
5.4.3.	Пример схемы умножения в ГНБ
Рассмотрим представление поля GF(213) в редундантном базисе С, i = 1,..., 52, (53 = 1, т. е. в виде многочлена
52
УЗ
г=\
из кольца R многочленов по модулю X53 + 1 с условиями согласования коэффициентов: аг = а}, если i Е jК, где
К = {1, 30, 52, 23} = {1, -23, -1, 23}
— подгруппа четвертого порядка в группе GF(53)\{0}. Так как выше было найдено, что
Кх = {2,-2,7,-7},
#з = {8,-8,25,-25},
К5 = 25К = {21, -21,6, -6},
Ку = 21 К - {22, -22, 24, -24},
К9 = 2дК = {18, -18, 10, -10},
Кп = 2ПК = {19,-19, 13,-13}, есть разбиение группы GF(53)\{0} сы, то
«1 = «23 = «30 = «52,
«3 = «16 = «37 = «50,
= a9 = Q44 — d4g,
«8 = «25 = «28 = «45,
«11 = «12 = «41 = «42,
«15 = «26 = «27 = «38,
23,-1,23},
K2 = {4, —4, 14, -14},
K4 = 24K = {16,-16, 3, -3},
K6 = 2bK = {11,-11, 12,-12},
Ks = 2*K = {9, -9, 5, -5},
K10 = 210К = {17,-17, 20, -20},
= 2l27f = {15, -15,26, -26}
на непересекающиеся смежные клас-
(Z2 = (Z7 = «46 = «51,
«4 = «14 = (Z39 = (Z49,
«6 = «21 = a32 = &47,
G10 = a18 = ^35 = «43,
«13 — «19 = «40 = «34,
«17 = «20 = «33 = «36,
«22 = «24 — «29 = «31-
308
Глава 5. Арифметика в нормальных базисах
Умножим этот многочлен на подобный же многочлен Ь(Х) по модулю Х53+ 1, т.е. выполним циклическую свертку по формулам
52
Ci —	2 m°d 53, i = 0,..., 52,
j=Q
формально положив = bo = 0, и удалим свободный член, выполнив приведение по модулю 1 + X +... + X52. Новые коэффициенты при этом будут вычисляться по формулам Сг; = сг\ + со, i = 1,..., 52. Непосредственно можно проверить, что они удовлетворяют условию согласованности, поэтому различных среди них будет только 13. Оставляя только их, получаем правило умножения в ГНБ типа 4 в поле GF(213). Можно непосредственно проверить, что оно совпадает с полученным ранее другим способом правилом умножения, а именно с правилом Месси—Омуры
Zi = (г, i Ф 1) 4- (г ф 1, Iф3) + (гФ1, i ©4) +
+ (г*Ф1, гф5) + (гф2, гф4) + (гф2, гф8) +
+ (гф2, гфП) + (гф2,гф12) + (гфЗ,гф7) + (гфЗ,гф8) + (гфЗ,гф12) + + (гф4, гф 12) + (гф4, гф 10) + (гф5, гф7) + (гф5, гф8) + (гф5, гф 10) + + (г'Фб, г'Ф9) + (г’Фб, гф 11) + (гф8, гф9) + (гф9, гф10) +
+ (i Ф 9, i Ф 11) + (i Ф10, i Ф11) + (i Ф 12).
Сложность рассматриваемого ГНБ равна числу одночленных слагаемых в билинейной форме, т. е. 22-2+1 =45. Аддитивная сложность реализации одной координаты равна 44, а аддитивная сложность всей схемы 13-44. Если учесть, что мультипликативная сложность, очевидно, равна 132, то тотальная сложность схемы равна 13- (44+13) = 741. Глубина схемы равна 7.
Можно, однако, построить более простую схему, но мы не будем здесь это делать.
5.4.4.	Быстрое программное инвертирование с помощью ГНБ
Некоторого ускорения инвертирования можно добиться используя ГНБ при малых к. В разд. 5.3.3 было показано, что инвертирование в ГНБ сводится к инвертированию в кольце R, т.е. к инвертированию по модулю многочлена f = Хр - 1, которое можно выполнить как с помощью расширенного алгоритма Евклида, так и с помощью почти инверсного алгоритма. В последнем случае замечено (Д. Дам), что при использовании ОНБ (т. е. ГНБ типа к = 1,2) вычисление a(X) = b(X)X~k mod f делается просто с помощью циклического сдвига, так как Х~к mod f = Хр~к mod f, поэтому
p-i
a(X) = Ь(Х)Х~к = b(X)Xp~k mod / = ^2 b,Xi+p~kmodp mod f =
i=Q
5.4. Операции в нормальных базисах
309
р-\	р-i
= 52	mod f = 52 di+fcmodpr mod f.
i=0	i=Q
В случае к = 1 несколько позднее то же самое было отмечено в [169]. Мы покажем, что это прием можно применять для любого ГНБ. Для этого заметим, что инвертирование любого элемента а в базисе ГНБ типа к при записи его в виде многочлена а(Х) степени пк по модулю Хр - 1, как отмечалось в разд. 5.3.3, начинается с его отображения в подкольцо кольца R, изоморфное рассматриваемому полю GF(qn). Это подкольцо состоит из всех многочленов степени пк с нулевым свободным членом, коэффициенты которых удовлетворяют условию согласованности; переход от элемента а к многочлену а(Х) и обратно выполняется бесплатно (для обратного перехода это верно только при выполнении условия согласованности). Ранее было показано, что многочлен а(Х) будет обратимым в этом кольце, значит, будет взаимнопростым с f(X). Обратный многочлен а-1(Х) при этом определяется однозначно и его можно найти с помощью почти инверсного алгоритма AIA и указанного выше циклического сдвига. Многочлен, соответствующий обратному элементу а~х, удовлетворяющий условию согласованности коэффициентов и имеющий нулевой свободный член, очевидно, будет обратным к многочлену а(Х) в кольце R, согласно указанному в разд. 5.3.3 изоморфизму, и значит совпадет с многочленом а-1(Х) согласно свойству единственности. Поэтому многочлен а~\Х) удовлетворяет условию согласованности коэффициентов и имеет нулевой свободный член, что не было очевидно заранее. Выполняя бесплатный переход из кольца R в поле GF(qn), мы получаем искомый обратный элемент а'] в этом поле.
В поле GF(2163) существует ГНБ типа 4. Возможно, его применение вместе с почти инверсным алгоритмом ускорит инвертирование в сравнении с применением стандартного базиса, однако надо иметь в виду, что степени используемых в этом алгоритме многочленов могут возрасти до четырех раз.
Более эффективно с этой целью использование ОНБ второго типа для поля GF(2191). В этом случае степени используемых многочленов возрастают только в два раза. Но, как было показано в разд. 5.4.1, умножение в этом базисе можно свести к умножению в полиномиальном базисе по модулю многочлена веса 15
/(Т)=(1+Х2> + Х26,
h = 1 + Хг" 4- A-242" + х242423 + ... + X26"1
степени 191 и может быть выполнено почти с той же скоростью, что и умножение по модулю X191 + ... + X + 1.
Возведение в квадрат в ОНБ делается быстро, а возведение в степень 32 еще быстрее, так как требует только циклического сдвига машинных слов.
310
Глава 5. Арифметика в нормальных базисах
В разд. 5.4.1 было показано, что частное от деления X383 на f равно r(X) = (1 +X2')h + Xm
и приведение по модулю f сводится к умножению на многочлен г веса 15 (с вычислением только старших коэффициентов начиная с члена X383). Умножение многочленов можно выполнить, применив однократную или двукратную итерацию Карацубы и перемножив многочлены малой степени, например, методом, изложенным в разд. 4.2.3. Умножение на h требует 6 сдвигов (один из них на 32, поэтому он очень простой) и 7 покомпонентных сложений векторов коэффициентов. Избавиться от лишних пересылок при сдвигах можно, представив h = 1 + X2 д, сначала выполнив умножение на д, потом сдвиг на 32 позиции (означающий просто сдвиг массива машинных слов на единицу), и потом выполнив сложение векторов, состоящих из машинных слов. Умножение на 1 + X2 сводится к сдвигу на величину, кратную w — 32, что делается просто, и к сложению. Умножение на X192 сводится к сдвигу коэффициентов на 192, после чего делается последнее сложение, в котором надо складывать только биты с номерами большими 382
Другой вариант организации умножения в поле GF(2191) основан на описанном выше сведении к умножению в кольце R по модулю X383 - 1. Степени перемножаемых многочленов здесь вдвое больше, что при использовании даже метода Карацубы увеличивает время работы втрое, зато сводятся почти к нулю «накладные расходы» и упрощается программирование. Некоторое количество сложений в методе Карацубы экономится благодаря совместимости его с циклической сверткой. Возведение в квадрат в этом кольце сводится к перестановке координат, но выполнять его все же лучше обычным путем возведения в квадрат с использованием предварительно вычисленной таблицы и выполнения сдвига на 383 позиции и сложения. Эти операции тоже программируются проще, чем возведение в квадрат по модулю пятичлена и даже трехчлена, но из-за двойного увеличения степени и соответственно числа используемых машинных слов, возможно, все же эта программа будет работать медленнее, чем возведение в квадрат по модулю трехчлена.
Заметим еще, наконец, что при использовании ОНБ в поле GF(2191) можно и для инвертирования воспользоваться переходом к стандартному базису с неприводимым 15-членным многочленом (5.15) Тогда вычисление X~k mod f не сводится к циклическому сдвигу, но все же делается довольно быстро. Действительно, при к < 25
Х~к mod f = (f(X) - V)/Xk = Х2'~к + x25+24-* + ^25+24+23-k + _ ... + x2t-l-k + x2i-k + x27-kh,
h = 1 + x2' + JT2424 + x25+24+23 +... + x26-1.
5 4 Операции в нормальных базисах
311
Поэтому умножение на Х~к mod / сводится к нескольким сдвигам битового массива коэффициентов и нескольким сложениям, подобному тому, как выполнялось подобное умножение выше, приведение результата по модулю / делается также В случае 383 > к > 25 умножение на Х~к по модулю f сводится не более чем к 12-кратному выполнению операции умножения на X-32, эту операцию можно в несколько раз ускорить, если заранее вычислить при к = 1, 2, 3
X-32 2‘ mod f = 1 + JT2^ + x24+l+23+l + ...
... + X^-2k+X25+k+Xi25+kh2k mod/,
h2k = 1 + X25+‘ + JT25+‘+24+‘ +	+ . . + x2^-2^ mod f
Литература
1.	Айерленд К., Роузен М. Классическое введение в современную теорию чисел. М.: Мир, 1987.
2.	Алферов А. П., Зубов А. Ю., Кузьмин А. С., Черемушкин А. В. Основы криптографии. М.: Гелиос АРВ, 2001.
3.	Анин Б. Защита компьютерной информации. СПб.: BHV, 2000.
4.	Арлазоров В. Л., Диниц Е.А., Кронрод М.А., Фараджев И. А. Об экономном построении транзитивного замыкания графа // ДАН СССР. 1970. 194. №3. С. 487-488.
5.	Артемьева П. И., Фролов А. Б. О делении бинарных полиномов на полином с малым числом членов // Вестник МЭИ. 2004. № 6 (принято в печать).
6.	Ахо А., Хопкрофт Д., Ульман Д. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979.
7.	Бабаш А. В., Шанкин Г П. Криптография. М.: Солон-Р, 2002.
8.	Бабаш А. В., Шанкин Г. П. История криптографии. М.: Гелиос АРВ, 2002.
9.	Берлекемп Э. Алгебраическая теория кодирования. М.: Мир, 1971.
10.	Биркгоф Г., Барти Г. Современная прикладная алгебра. М.: Мир, 1972.
11.	Блейхут Р. Быстрые алгоритмы цифровой обработки сигналов. М.: Мир, 1989.
12.	Болотов А. А., Гашков С. Б., Фролов А. Б., Часовских А. А. Алгоритмические основы эллиптической криптографии. М.: Изд-во МЭИ, 2000.
13.	Болотов А. А., Гашков С. Б., Фролов А. Б., Часовских А. А. О методах реализации умножения многочленов над конечными полями // Вестник МЭИ. 2000. №3. С. 33-40.
14.	Болотов А. А., Гашков С. Б., Фролов А. Б., Часовских А. А. О методах имплементации арифметических операций в полях Галуа // Вестник МЭИ. 2000. №4. С. 88-96.
15.	Болотов А. А., Гашков С. Б., Фролов А. Б., Часовских А. А. Программные и схемные методы умножения многочленов для эллиптической криптографии // Известия РАН. Теория и системы управления. 2000. № 5. С. 66-75.
16.	Болотов А. А., Гашков С. Б. О быстром умножении в нормальных базисах конечных полей // Дискретная математика. 2001. Т. 13. № 3. С. 3-31.
17.	Болотов А. А., Гашков С. Б., Фролов А. Б., Часовских А. А. О методах имплементации арифметических операций в криптографических системах // Известия РАН. Теория и системы управления. 2002. № 1. С. 86-96.
18.	Болотов А, А., Гашков С. Б., Фролов А. Б., Часовских А. А. Элементарное введение в эллиптическую криптографию: Протоколы криптографии на эллиптических кривых. М.: КомКнига/URSS, 2006.
19.	Брассар Ж. Современная криптология. М.: Полимед, 1999.
Литература
313
20.	Василенко О. Н. Теоретико-числовые алгоритмы в криптографии. М.: МЦН-МО, 2003.
21.	Введение в криптографию / Под ред. В. В. Ященко. М.: МЦНМО-ЧеРо, 1998.
22.	Вельшенбах М. Криптография на С и C++ в действии. М.: Триумф, 2003.
23.	Виноградов И.М. Теория чисел. М.: Наука, 1990.
24.	Власенко В. А., Лаппа Ю. М., Ярославский Л. П. Методы синтеза быстрых алгоритмов свертки и спектрального анализа сигналов. М.: Наука, 1990.
25.	Влэдуц С. Г., Ногин Д. Ю., Цфасман М. А. Алгеброгеометрические коды. Основные понятия. М.: МЦНМО, 2003.
26.	Гашков С. Б. Замечания о быстром умножении многочленов, преобразовании Фурье и Хартли // Дискретная математика. 2000. Т. 12. № 3. С. 124-153.
27.	Гашков С. Б., Кочергин В. В. Об аддитивных цепочках векторов, вентильных схемах и сложности вычисления степеней // Дискретный анализ. 1992. № 52. С. 22-40.
28.	Гашков С. Б., Чубариков В. Н. Арифметика. Алгоритмы. Сложность вычислений. М.: Высшая школа, 2000.
29.	Гашков С. Б., Чубариков В. Н. Арифметика. Алгоритмы. Сложность вычислений. М.: Изд-во МГУ; Дрофа, 2005.
30.	Гелъфонд А. О., Линник Ю. В. Элементарные методы в аналитической теории чисел. М.: Физматлит, 1962.
31.	Глухов М. М., Елизаров В. П., Нечаев А. А. Алгебра. Т. 1, 2. М.: Гелиос АРВ, 2003.
32.	ГрушоА.А., Тимонина Е. Е. Теоретические основы защиты информации. М.: Изд-во агентства «Яхтсмен», 1996.
33.	Грушо А. А., Тимонина Е.Е., Применко Э.А. Анализ и синтез криптоалгоритмов. Йошкар-Ола: МФ МОСУ, 2000.
34.	Грушо А. А., Тимонина Е.Е., Применко Э.А. Криптографические протоколы. Йошкар-Ола: МФ МОСУ, 2001.
35.	Гуц Н.Д., Изотов Б. В., Молдовян НА., Молдовян А. А. Криптография: скоростные шифры. СПб.: БХВ-Петербург, 2002.
36.	Дроздов А. Б. Автоматическое построение декомпозиционных схем умножения многочленов над полем GF(2), основанных на методе Карацубы // Четвертая Всероссийская научная Интернет-конференция. Компьютерное и математическое моделирование в естественных и технических науках. 2002 Вып. 17. С. 6-7.
37.	Жельников В. Криптография от папируса до компьютера. М.: ABF, 1996.
38.	Защита программного обеспечения / Под. ред. Д. Гроувера. М.: Мир, 1992.
39.	Зубов А. Ю. Совершенные шифры. М.: Гелиос АРВ, 2003.
40.	Иванов М.А. Криптографические методы зашиты информации в компьютерных системах и сетях. М.: Кудиц-образ, 2002.
41.	Зензин О. С., Иванов М. А. Стандарт криптографической защиты AES. Конечные поля. М.: Кудиц-образ, 2002.
42.	Иванов М.А., Чугунков И. В. Теория, применение и оценка качества генераторов псевдослучайных последовательностей. М.: Кудиц-образ, 2003.
314
Литература
43.	Иванов М.А. и др. Поточные шифры. М.: Кудиц-образ, 2003.
44.	Карацуба А. А., Офман Ю. И. Умножение многозначных чисел на автоматах // ДАН СССР. 1962. 145. №2. С. 293-294.
45.	Кнут Д. Искусство программирования на ЭВМ. Т 2. Вильямс, 2000.
46.	Кнэпп Э. Эллиптические кривые. М.: Факториал Пресс, 2004.
47.	Коблиц Н. Курс теории чисел и криптографии. М.: ТВП, 2001.
48.	Коблиц Н. Введение в эллиптические кривые и модулярные формы. М.: Мир, 1988.
49.	Коновалъцев И. В. Об одном алгоритме решения линейных уравнений в конечных полях // Проблемы кибернетики. М.: Наука, 1967. Вып. 19. С. 269-274.
50.	Кудрявцев В. Б. Схемы из функциональных элементов. М.: Изд-во МГУ, 1982.
51.	Ленг С. Эллиптические функции. М.: Наука, 1984.
52.	Лидл Р., Нидеррейтер X. Конечные поля. М.: Мир, 1988.
53.	Логачев О. А., Сальников А. А., Ященко В. В. Булевы функции в теории кодирования и криптологии. М.: МЦНМО, 2004.
54.	Лупанов О. Б. О вентильных и контактно-вентильных схемах // ДАН СССР. 1956. 111. №6. С. 1171-1174.
55.	Молдовян Н.А. Проблематика и методы криптологии. СПб.: Изд-во СПбГУ, 1998.
56.	Молдовян Н. А., Молдовян А. А., Советов Б. Я. Криптография. СПб.: Лань, 2000.
57.	Молдовян Н.А., Молдовян А.А., Еремеев М.А. Криптография: от примитивов к синтезу алгоритмов. СПб.: БХВ-Петербург, 2004.
58.	Московский университет и развитие криптографии в России. М.: МЦНМО, 2003.
59.	Нечаев В. И. Элементы криптографии. М.: Высшая школа, 1999.
60.	Ноден П., Китте К. Алгебраическая алгоритмика. М.: Мир, 1999.
61.	Острик В. В., Цфасман М.А. Алгебраическая геометрия и теория чисел. Рациональные и эллиптические кривые. М.: МЦНМО, 2004.
62.	Прахар К. Распределение простых чисел. М.: Мир, 1967.
63.	Прасолов В. В., Соловьев Ю. П. Эллиптические функции и алгебраические уравнения. М.: Факториал, 1997.
64.	Ростовцев А. Г. Алгебраические основы криптографии. СПб.: Мир и семья, 2000.
65.	Саломаа А. Криптография с открытым ключом. М.: Мир, 1996.
66.	Слоэн Н.Дж.А. Коды, исправляющие ошибки, и криптография // Математический цветник. М.: Мир, 1983.
67.	Смарт Н. Криптография. М.: Техносфера, 2005.
68.	Соколов А. В., Степанюк О. М. Методы информационной защиты объектов и компьютерных сетей. М.: ACT; СПб.: Полигон, 2000.
69.	Соловьев Ю. П., Садовничий В. А., Шавгулидзе Е. Т., Белокуров В. В. Эллиптические кривые и современные алгоритмы теории чисел. М.; Ижевск, 2003.
70.	Степанов С. А. Арифметика алгебраических кривых. М.: Наука, 1991.
Литература
315
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Уокер Р Алгебраические кривые М ИЛ, 1952 2-е изд М КомКнига/URSS, 2006
Фомичев В М Дискретная математика и криптология М Диалог-МИФИ 2003
Фролов А Б Математическая модель линейной переключательной схемы для ускоренного деления многочленов // Труды Второй Всесоюзной конференции по теории кодирования и ее приложениям М Наука 1966
Хассе Г Лекции по теории чисел М ИЛ, 1953
Хофман Л Современные методы защиты информации М Сов Радио, 1980
Харин Ю С , Берник В И , Матвеев Г В , Агиевич С В Математические и компьютерные основы криптологии Минск Новое знание, 2003
Чмора А Л Современная прикладная криптография М Гелиос АРВ, 2001
Черемушкин А В Лекции по арифметическим алгоритмам в криптографии М МЦНМО, 2002
Шафаревич И Р Алгебраическая геометрия М Наука, 1988
Шнеиер Б Прикладная криптография М Триумф, 2002
Шнеиер Б Секреты и ложь Безопасность данных в цифровом мире СПб Питер, 2003
Штрассен Ф Алгоритм Гаусса не оптимален // Кибернетический сборник Вып 7 М Мир, 1971
Щербаков А , Домашев А Прикладная криптография М Русская редакция 2003
Adleman L , Lenstra Н Finding irreducible polinomials over finite fields // Pioc 18th ACM Symp Theory of computing 1986 P 350-355
Agnew G В, Beth T, Mullin R C, Vanstone S A Arithmetic Operations in GF(2m) // Journal of Cryptology 1993 6 P 3-13
Ahmadi О , Menezes A Irreducible Polynomials of maximum weight January 2005 Preprint
Ash D IF, Blake I F, Vanstone S A Low complexity normal bases // Discrete Applied Mathematics 1989 Vol 25 P 191-210
Artin E Collected papers Addison-Wesley, 1965
Bach E Explicit bounds for pnmahty testing and related problems // Math Comp 1989 55 P 355-380
Bach E, Shalht J Factoring with cyclotomic polynomials // Math Comp 1989 Vol 52 P 201-219
Bach E, Shalht J Algorithmic number theory Cambridge, Massachusetts L MIT Press, 1996
Ben-Or M Probabilistic algorithms in finite fields // Proc 22 IEEE Symp of Foud Com Sci 1981 P 394-398
Bertoni G , Guajardo J, Kumar S, Orlando G , Paar C , Wohnget T Efficient GF(pm) Arithmetic Architectutes for Cryptographic Applications, LNCS 2612 2003 P 158-175
316
Литература
94.	Blake I., Seroussi G., Smart N. Elliptic curves in cryptography. Cambridge University Press, 1999.
95.	Blake I., Seroussi G., Smart N. Advances in elliptic curve cryptograhy. Cambridge University Press, 2005.
96.	Brent R. R, Kung H. Fast algorithms for manipulating formal power series // J. Assoc. Comput. Mach. 1978. Vol. 25. P. 581-595.
97.	Brent R. R, Larvala 5., Zimmerman P., A fast algoritm for testing irreducibity of trinomials mod 2. Preliminary report / Oxford University Computing Laboratory.
98.	Brickell E., Gordon D., McCurley K., Wilson D. Fast exponentiation with precomputation // Proc. Eurocrypt’1992, Balatonfured, Hungary.
99.	Brillhart J., Lehmer D., Selfridge J., Tuckerman B., Wagstaff S., Jr. Factorization of bn ± 1, b = 2, 3, 5, 6, 7, 10, 11, 12 up to high powers. 2-nd ed. Contemp. Math. Vol. 22. Amer. Math. Soc., Providence, RI, 1988.
100.	Brillhart J., Lehmer D., Selfridge J., Tuckerman B., Wagstaff S., Jr. Factorization of bn ± 1, b = 2, 3, 5, 6, 7, 10, 11, 12 up to high powers. 3-d ed. // Contemp. Math. Vol. 22, Amer. Math. Soc., Providence, RI, 2005.
101.	Cantor D. On arithmetic algorithm over finite fields //J. of combinatorial theory, Series A 50. 1989. P. 285-300.
102.	Cantor D., Kaltofen E. On fast multiplication of polynomials over arbitrary algebras // Acta Informatica. 1991. 28. P. 693-701.
103.	Cohen H. A course in computational algebraic number theory // GTM. 138. 1993.
104.	Ciet M., Sica F. and Quisquater J. -J. A short note on irreducible trinomials in binary field. Preprint, 2000.
105.	Dahab R., Hankerson D., Hu F., Lang M., Lopez J., Menezes A. Software Multiplication using Normal Basis. 2005 (http://cacr.math.uwaterloo.ca/ajmeneze).
106.	Diffie W., Hellman M. New directions in cryptography // IEEE Transactions and Information Theory. 1976. IT-22.
107.	Dewaghe I. Remarks on the Schoof-Elkies-Atkin algorithm // Mathematics of computation. 1998. Vol. 67. №223. P. 1247-1252.
108.	Drolet G. A new representation of elements of finite fields GF(2m) yielding small complexity arithmetic circuits // IEEE Transaction on Computers. 1998. 47. P. 938-946.
109.	Fong K., Hankerson D., Lopez J. H, Menezes A. Field inversion and point halving revisited // IEEE Tracs. on Comp. 2004. 53:8. P. 1047-1059.
110.	Fouqet M., Gaudry P., Harley P. On Satoh’s algoritm and its implementation. Preprint. 2000.
111.	Gao S., Lenstra H. W. Optimal normal bases // Design, Codes and Cryptography. 1992. Vol. 2. P. 315-323.
112.	Gao S., Vanstone S.A. On orders of optimal normal basis generators // Mathematics of Computation. 1995. Vol. 64. P. 1227-1233.
113.	Gao S., Gathen J. von zur, Panario D. Gauss periods: orders and cryptografical applications // Mathematics of Computation. 1998. Vol. 67. P. 343-352.
114.	Gao S., Gathen J. von zur, Panario D., Shoup V. Algorithm for exponentiation in finite field // J. of Symbolic Computation. 2000. Vol. 29. P. 879-889.
Литература
317
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Gathen J von zur, Gerhard J Modern computer algebra Cambridge University Press, 1999
Gathen J von zur, Gerhard J Arithmetic and factorization of polynomials over GF(2) /1 Proc ISAAC 96, Zurich P 1-9
Gathen J von zur, Pappalardi F On the reverse Artin problem for primitive roots Preprint 1995
Gao S, Shoup V Computing Frobenius maps and factoring polynomials // Comput complexity 1992 2 P 187-224
Gauss C Disquisitiones Anthmeticae Braunschweig, 1801
Geiselmann W, Lukhaub H Redundant representation of finite fields Public Key Cryptography // Lecture Notes in Computer Science 1992 № 2001 P 339-352
Hankerson D , Lopez J H, Menezes A Software implementation of elliptic curve cryptography over binary fields CHES 2000 // Lecture Notes in Computer Science 2000 № 1965 P 1-23
Hankerson D , Menezes A and Vanstone S Guide to elliptic curve cryptography Springer-Verlag, 2004
Hooley C On Artin’s conjecture // J reine angew Math 1967 226 P 209-220
Huesmoeller D Elliptic Curves Springer-Verlag, 2000
Itoh К, Takenaka M, Torn N, Temma S, Kurihara Y Fast implementation of pubhc-кеу cryptography on DSP TMS320C6201 Ц CHES’99 LNCS 1717 1999 P61-72
Jungnickel D Finite fields Structure and anfmetics Wissenschaftsverlag, 1995
Joux A , Lercier R Improvements to the general number field sieve for discrete logarithms in prime fields // Math Comp 2003 Vol 72(242) P 953-967
Joye M, Quisquater J - J Efficient computation of full Lucas sequences // Electron Lett 1996 Vol 32(6) P 537-538
Kahski В Jr One-way permutations on elliptic curves // J Cryptology 1991 N° 3 P 187-199
Kobhtz N Algebraic aspects of Cryptography Springer-Verlag, 1998
Kobhtz N Constructing elliptic curves crvptosystems in characteristic 2 Cryp-to’90 // Lecture Notes in Computer Science 537 P 156-167
Kobhtz N CM-curves with good cryptographic properties Crypto’91 // Lecture Notes in Computer Science 576 P 279-287
Kunihiro N, Koyama К Equivalence of counting the number of points on elliptic curve over the ring Zn and factoring n Eurocrypt-98 // Lecture Notes in Computer Science 1403 P 47-58
LangS Elliptic curves Diophantine analysis Spnngei-Verlag, 1978
Lay G, Zimmer H Constructing elliptic curves with given group order over large finite fields Algorithmic number theory // Lecture Notes in Computer Science 1994 877 P 250-263
Lenstra H W Jr Factoring integers with elliptic curves // Ann of Math 1987 Vol 126 P 649-673
318
Литература
137.	Lercier R. Computing isogenies in GF(2n). Algorithmic number theory // Lecture Notes in Computer Science. 1996. 1122. P. 197-212.
138.	Lercier R. Finding good random ellilptic curves for cryptosystems defined GF(2n). Eurocrypt-97 // Lecture Notes in Computer Science. 1997. 1233. P. 379-392.
139.	Lercier R., Morain F. Counting the number of points on ellilptic curves over finite fields: strategies and performances. Eurocrypt-95 // Lecture Notes in Computer Science. 1995. 921. P. 79-94.
140.	Lercier R., Lubicz D. Counting Points on Elliptic Curves over Finite Fields of Small Characteristic in Quasi Quadratic Time. Eli EUROCRYPT 2003 // Lecture Notes in Computer Science. 2003. 2656. P. 360-373.
141.	Lim G. H., Lee P. G. More flexible exponentiation with precomputation. Crypto-94. Springer-Verlag. P. 95-107.
142.	Lopez J., Dahab R. High Speed Multiplication in GF(2m) // Proceedings of Indocrypt 2000, LNCS 1977. Springer, 2000. P. 203-212.
143.	McElice R. J. Finite Fields for Computer Scientists and Engineers. New York: Kluwer Academic Publishers, 1987.
144.	Menezes A. J. Elliptic Curve Public Key Cryptosystems. Kluwer Academic Publishers, 1993.
145.	Menezes A. J., Vanstone S. Elliptic Curve Cryptosystems and their implementation // Journal of Cryptology. 1993. №6. P. 209-224.
146.	Menezes A. J., Vanstone S., Zuccherato R. Counting points on elliptic curves over GF(2n) II Mathematics of computation. 1993. Vol. 60. №201. P. 407-420.
147.	Menezes A. J., Oorschot P. van, Vanstone S.A. Handbook of Applied Cryptography. New York; London; Tokio; Boca Raton: CRC Press, 1997.
148.	Meneses A., Blake L, Gao X., Mullin R., Vanstone S. and Yaghoobian T. Application of Finite Filds. New York: Kluwer Academic Publishers, 1992.
149.	Morain F. Calcul du nombre de points sur une courbe dans un corps fini: aspects algoritmiques // J.Theor. Nombres Bordeaux. 7. 1995. P. 255-282.
150.	Morain F. Building cyclic elliptic curves modulo large prime. Eurocrypt-91 // Lecture Notes in Computer Science. 1991. 547. P. 328-336.
151.	Mullin R.C., Onyszchuk I.M., Vanstone S.A., Wilson R. M. Optimal normal bases in GF(pn). Discrete Applied Mathematics. 1988/89. Vol. 22. P. 149-161.
152.	Moenk R. Fast algorithm of GCD’s // Proceedings of the 5th Annual ACM Symposium on Theory of Computing. 1973. P. 142-151.
153.	Nussbaumer H. Fast polynomial transform algorithms for for digital convolution // IEEE Signal Processing. 1980. 28. P. 205-215.
154.	Omura J., Massey J. Computational method and apparatus for finite field arithmetic. U.S. Patent Number 4. 587. 627. May 1986.
155.	Pippenger N. On the evaluation of powers and monomials // SIAM J. on Computing. 1980. 9. P 230-250.
156.	Rabin M. Probabilistic algorithm in finite fields 11 SIAM J. on Computing. 1980. 9. P. 273-280.
157.	Reyhani-Atoo/e/? A., Hasan M.A. On effective normal basis multiplication. India-CRYPT, 2000.
Литература
319
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
Rosing М Implementing Elliptic Curve Cryptography 32 Lafayette Pace, Grmvich Manning Publicatiobs Co , 1998
Satoh T The canonical lift of an ordinary elliptic curve over prime field and its point counting // J of Ramanujan Math Soc 2000 15 P 247-270
Schonhage A , Schnelle berechnung von kettenbruchentwicklungen // Acta Infor-matica 1 1971 P 139-144
Schonhage A Schnelle Multiplication von Polynomen ueber Koerpern der Charak-tenstik 2 // Acta Informatica 1977 Vol 7 P 395-398
Schoof R Elliptic curves over finite fields and the computation of square roots mod p 11 Math Comp 1985 44 P 483-494
Schoof R Counting points on elliptic curves over finite fields // J Theor Nombres Bordeaux 1995 7 P 219-254
Schoof R Nonsingular plane cubic curves over finite feilds // J Combmat Theory 1987 Vol A46 P 183-211
Schroeppel R , Orman H, Malley S’O , Spatschek О Fast key exchange with elliptic curve systems CRYPTO 95 // Lecture notes in Computer Science № 963 P 43-56 Schroeppel R Automatically solving equations in finite fields US Patent application №09/834, 363, publication number US2002/0055962 Al
Schoup V Fast construction of irreducible polynomials over finite fields // J of symbolic computation 1994 17 P 371-391
Silverman J The Arithmetic of Elliptic Curves Springer, 1986
Silverman J Fast multiplication in Finite Fields GF(2n) CHES 2000 // Lecture Notes in Computer Science 2000 № 1965 P 123-133
Simon Singh The code book Doubleday, 1999
Stinson D R Crvptography Theory and practice CRC Press 1995
Turk J W M Fast arithmetic operations on numbers and polynomials // Computational methods in number theory I Amsterdam Mathematish Centrum, 1982 P 43-54
Wagstaff S Jr Update 2 6 to the second edition of factorization of bn ± 1 1993
Washington L C Elliptic curves number theory and cryptography CRC Press, 2003 Wassermann A Zur Anthmetik in endhhen Korpern // Bavreuter Mathematishe Schnften 1993 Vol 44 P 147-251
Wen Bao Han The coefficients of primitive polynomials over finite fields // Math Comp 1996 65 213 P 331-340
Wenbo Mao Modern cryptography Prentice Hall PTR, 2004
Wu H Montgomery multiplier and Squarer in GF(2n) CHES 2000 // Lecture Notes in Computer Science 2000 № 1965 P 264-275
Wu H , Hasan M A , Blake I A Higly regular Architectures for finite field computation using redundant basis CHES 2000 // Lecture Notes in Computer Science 2000 № 1965 P 269-279
Wu H, Hasan M A , Blake I F, Gao S Finite field multiplier using redundant representation // IEEE Transaction on Computers 2002 51 P 1306—1316
320
Литература
181.	Zirler N., Brillhart J. On primitive trinomials (mod 2) // Inform. Contr. 1968. 13. P. 541-554.
182.	Zirler N., On xn 4- x + 1 over GF(2) // Inform. Contr. 1970. 16. P. 502-505.
183.	Zirler N., Brillhart J. On primitive trinomials // Inform. Contr. 1969. 14. P. 566-569.
184.	Zivkovic M. A table of primitive binary polynomials // Math. Comp. 1994. 62. P. 385-386.
185.	Zivkovic M. A table of primitive binary polynomials. II // Math. Comp. 1994. 63. P. 301-306.
186.	Yacobi Y. Exponentiation faster with addition chains. Eurocrypt’90 // Lecture notes in computer science. 473. P. 222-229.
187.	Yamamichi M., Mambo M., Shibuya H. On the complexity of constructing an elliptci curve of a given order // IEICE Trans, fundamentals. 2001. Vol. E84-A. № 1.
Предметный указатель
Алгебраическая кривая 83
Алгебраическое замыкание 73
Алгоритм Берлекемпа 112
— возведения в степень в конечном поле малой характеристики 185
------в мультипликативной группе 21
------с фиксированной базой 209,
— вычисления аддитивного кратного элемента 22
— деления многочленов классический 168
—	Евклида 26
---бинарный расширенный 35
---для вычисления обратного элемента по модулю 34, 35
---расширенный 30, 31
—	инвертирования в полиномиальном или нормальном базисах 182
—	Кронекера 80
—	Коновальцева 69
—	модулярной композиции 123
—	определения порядка элемента группы 22
—	поиска образующего элемента группы вероятностный 23
---элемента максимального порядка группы 24
—	почти инверсный 190
— приведения по модулю «малочлена» базовый 170
------«малочлена» обобщенный 175
---Р. Шуфа 108
— тестирования на неприводимость 114
---многочленов гибридный 154
------ классический 150
------представленных элементарными многочленами 153
— «четырех русских» 66, 122
— Штрассена умножения матриц 125
Базис векторного пространства 58
— поля 44, 58
---полиномиальный 59
---нормальный 59
------гауссов 73
---оптимальный 72
---стандартный 59
Базисы Гауссовы нормальные 274
------, алгоритм возведения в степень 293
------, генераторы ГНБ 292
------, сложность умножения 278
------, таблица умножения 283
------, умножение в ГНБ 276
— редундантные 297
Быстрая линейная алгебра 65
Быстрое инвертирование в стандартном базисе с помощью модулярной композиции многочленов 222
— возведение в степень с помощью модулярной композиции многочленов 219
Вес полинома 25
Вычет 32
Гауссовы периоды 226
Гипотеза Артина 227
—	Шольца об аддитивных цепочках 200
Глубина схемы 66
Группа 15
—	абелева 16
—	аддитивная 16
—	коммутативная 16
—	конечная 17
—	конечно-порожденная 101
—	мультипликативная 16
—	тривиальная 17
—	циклическая 17
322
Предметный указатель
Две модификации алгоритма умножения 156
Двоичная запись Бута 208 ----минимальная с отрицательными цифрами 207
— система уравновешенная 207 Двоичной записи длина Л(п) 197 ----сумма цифр р(п) 197 Делимое 18
Делитель 18
Дерево степеней для аддитивных цепочек 200
Дискриминант 86
Извлечения квадратных корней в конечном поле 75
Изоморфизм 25
Инвариант (j -инвариант) 86 Инволютивный закон 89 Индекс подгруппы в группе 19
Касательная 84
Квадратичный вычет по модулю р 74 — невычет по модулю р 74 Квадратичная сумма Гаусса 76 Классы вычетов по модулю m 18 — конгруэнтности 32 ----по модулю тп 18 — эквивалентности 17
Кольцо 23
— многочленов 25
----по модулю многочлена 33 — с единицей 24
Конечного расширения поля степень 44
Корень многочлена 40
Кортеж 69
Кривая гладкая 84 — неособая 84 — несуперсингулярная 88, 109 — суперсингулярная 88, 109 — Ферма 84 — эллиптическая 84
Кривые изоморфные 86
Критерий подгруппы 19
Левые смежные классы 19
Лемма Оливоса 202
—	Пиппенджера о графах аддитивных цепочек 201
Линейная комбинацией векторов 58
Линейно зависимые векторы 58
—	независимые векторы 58
Линейное представление 29
Метод бинарный построения аддитивных цепочек 197
—	Карацубы 162
—	множителей построения аддитивных цепочек 198
—	Монтгомери быстрого возведения в степень 214
Минимальные многочлены оптимальных нормальных базисов 261
Минимальный многочлен элемента 48
Многочлен круговой 50
—	малого веса 171
—	над полем 25
—	нормированный 25
—	примитивный 49
—	характеристический элемента 56
—	элементарный 147
Многочлены Диксона 262
—	Чебышева 262
Модификация классического алгоритма умножения 154
Модулярная композиция 122
Наибольший общий делитель целых чисел 18 ------элементов кольца 28 Норма элемента 56
Нормальное множество 59
Нормирующий множитель 27
Область целостности 24
Операция вычитания 17
—	деления 17
--на ненулевой элемент в поле 39
—	инверсии 16
—	сложения многочленов 26
Предметный указатель
323
—	умножения многочленов 26
Оптимальные нормальные базисы 70
------второго типа 227
-----------, алгоритм построения
235
------первого типа 226
-----------, алгоритм построения
230
------третьего типа 227
-----------, алгоритм построения
239
Ориентированный граф 196
Остаток от деления 18, 28
Отношение конгруэнтности по модулю m 18, 32
—	эквивалентности 17
Периоды типа (п, к) 280
Подгруппа 19
—	кручения 99
Подполе 24
Поле 24
—	Галуа 25
—	конечное 25
—	простое 25
—	разложения многочлена 46
Поля циклотомические 296
Порядок группы 17
—	кривой 104
—	мультипликативной группы поля 40
—	ненулевого элемента поля 40
—	неприводимого над GF(p) многочлена 55
—	поля 25
—	точки кривой 99
—	элемента 17
—	эллиптической кривой 104
Представитель класса нормированный
27
Примитивный корень А;-ой степени из 1 42
— элемент по модулю р 42
-- поля 42
Проективная замена координат 84
Прямая сумма групп 101
Разложение на неприводимые множители над полем 46
Ранг кривой 101
Расширение поля алгебраически замкнутое 85
---конечное 42, 44
---простое 42
------алгебраическое 43
---------степени п 43
Расширенная гипотеза Римана ERH
227
Расширенный алгоритм Евклида 30, 31,
Редуцирование Монтгомери 215
Символ Кронекера—Якоби 79
—	Лежандра 76
Скручивание кривой 107
След элемента 55
---абсолютный 55
Сложность нормального базиса 70
—	схемы 66
Степень многочлена 25, 83
—	элемента 16
Схема из функциональных элементов 66
—	логическая 66
—	умножения многочленов декомпозиционная 163
Теорема А. Брауэра 198
—	двойственности Оливоса 202
—	Куммера 265
—	Лагранжа 19
—	Люка 265
—	о порядке степени элемента 20
—	Ферма малая 20
—	Хассе 105
—	Хассе—Вейля 105
—	Чебышева 228
—	Э. Страуса о векторных аддитивных цепочках 201
-	Э.Яо 202
—	Эйлера 20
Тип группы 109
Точка бесконечно удаленная 84
324
Предметный указатель
—	инфлекции 90
—	кратности к 96
—	кривой 83
—	кручения 99
—	неособая 83
Трюк Шамира 213
Умножение многочленов с использованием таблицы 152
—	Монтгомери 215
Фактор-множество 17
Форма Вейерштрасса 84
Характеристика поля 39
Цепочка двойственная 201
—	линейная 199
Цепочки аддитивные 196
—	векторные аддитивные 201
—	, двойственный граф 201
— кратчайшей векторной аддитивной длина Z([n15..., nm]) 201
---длина 1(п) 196
---линейной длина F(n) 200
—	с нулевым весом удвоений 204
—	с операцией вычитания 203
Циркулянтная матрица 60
Частное 18
Числа взаимно простые 18
—	циклотомические 283
Число примитивных многочленов 50
Элемент нейтральный 16
—	образующий 17
—	обратный 16
—	противоположный 16
—	симметричный 16
—	, сопряженный с элементом поля 54
—	функциональный 66
Элементы сопряженные 51
Эллиптический интеграл 85