Text
                    Х.К.А. ван Тилборг
основы»
КРИПТОЛОГИИ
ПРОФЕССИОНАЛЬНОЕ РУКОВОДСТВО
И ИНТЕРАКТИВНЫЙ УЧЕБНИК	L4
fcD-ROM
Издательство «МИР»

ОСНОВЫ КРИПТОЛОГИИ. Профессиональное руководство и интерактивный учебник
The Kluwer International Series in Engineering and Computer Science FUNDAMENTALS OF CRYPTOLOGY A Professional Reference and Interactive Tutorial by Henk C.A. van Tilborg Eindhoven University of Technology The Netherlands KLUWER ACADEMIC PUBLISHERS Boston / Dordrecht / London
Х.К.А. ван ТИЛБОРГ ОСНОВЫ КРИПТОЛОГИИ Профессиональное руководство и интерактивный учебник Перевод с английского Д.С. Ананичева и И. О. Корякова под редакцией И. О. Корякова Москва «Мир» 2006
УДК 519.6 ББК 22.1 Т39 Тилборг ван Х.К.А. Т39 Основы криптологии. Профессиональное руководство и интерактивный учебник. М.: Мир, 2006, стр. 471, ил. ISBN 5-03-003639-3 Книга голландского криптолога посвящена современнымм ас- пектам криптографии и криптоанализа. Среди них можно выде- лить три главных направления — традиционные (симметрические) криптосистемы, системы с публичными ключами и криптографиче- ские протоколы. Основные результаты снабжены доказательствами. Главной же особенностью служат многочисленные примеры, создан- ные на базе известного пакета “Mathematica” компьютерной алгеб- ры. К книге приложен CD ROM, позволяющий (при наличии пакета “Mathematica”) модифицировать примеры, в частности, увеличивая значения параметров. Это — первая столь многоплановая учебная книга по криптографии на русском языке. Книга, в первую очередь, адресована математикам, инженерам и студентам, специализирующимся в области защиты информации. Но она окажется интересной и для более широкого круга читателей, че- му, в частности, могут способствовать детальные приложения, посвя- щенные теории чисел и конечным полям, делающие книгу достаточно замкнутой в себе. УДК 519.6 ББК 22.1 Издание осуществлено при поддержке Российского фонда фундаментальных исследований по проекту 02-01-14009 Редакция литературы по математическим наукам ISBN 5-03-003639-3(русск.) ISBN 0-7923-8675-2 (англ.) © Kluwer Academic Publishers 1999, 2000. Second Printing 2001 © перевод на русский язык, «Мир», 2006
Предисловие редактора перевода Криптология, объединяющая криптографию и криптоанализ, долгое время была секретной областью знаний в Советском Союзе. Препода- вать криптографию имел право только ИКСИ — институт криптогра- фии, связи и информатики (бывший технический факультет академии КГБ-ФСБ). Положение в корне изменилось лишь в 1990-х годах, когда стало невозможно игнорировать экстенсивное развитие компьютерных сетей, вызвавшее потребность банков, промышленных и коммерческих фирм, частных лиц в квалифицированной защите информации, чтобы предотвращать получение конфиденциальных данных неправомочными лицами и организациями, а также исключать фальсификацию и злона- меренное искажение данных. Именно в те годы некоторым гражданским вузам разрешили принять участие в подготовке криптологов, и были вве- дены новые математические специальности в области защиты информа- ции и компьютерной безопасности. Одной из основных проблем, связанных с внедрением новых специ- альностей, была и остается проблема учебной и справочной литерату- ры. Справочная литература (наподобие фундаментальной, хотя и слегка устаревшей, книги [MeOoV97]) в России практически отсутствует. Учеб- ных же книг мало, и зачастую они не удовлетворяют обычным требова- ниям, предъявляемым к учебной математической литературе. Эти обсто- ятельства и побудили нас заключить контракт с издательством "Мир" о переводе книги Хенка К.А. ван Тилборга. На наш взгляд, представляемая читателю книга, основанная на лек- циях, читанных автором в США и Нидерландах, отчасти заполняет про- белы в имеющейся учебной литературе и может послужить хорошим до- полнением к ней. Отметим, что ван Тилборг доказывает большинство приводимых утверждений, оставляя без подробного обоснования лишь наиболее сложные факты. Главный акцент падает на разъяснение клю- чевых идей, лежащих в основе криптографических алгоритмов и мето- дов их потенциального криптоанализа. Но не последняя роль отводится и частным деталям, внимание к которым привлекают и многочисленные примеры алгоритмов и конкретных вычислений. Важнейшая особенность книги — перманентное использование в при- мерах псевдокода системы компьютерной алгебры "Mathematica", кото- рая была разработана чуть более 15 лет назад и быстро выдвинулась на ведущие позиции в области компьютерных вычислений. "Псевдо" — поскольку далеко не всегда выдерживается каноническая нотация си- стемы: в целях облегчения восприятия часто употребляются стандарт- ные математические обозначения. Это касается, например, записи сте-
6 Предисловие редактора перевода пеней, "длинных” сумм и произведений (с символами и П) и т-п- Тем не менее, читатель вполне может изучить по этим примерам осно- вы работы с пакетом "Mathematica". Более того, книга сопровождается компакт-диском с электронным вариантом текста. Поэтому, имея в своем распоряжении какую-либо версию пакета "Mathematica" и упомянутый CD ROM, можно легко модифицировать параметры примеров, углубляя тем самым понимание как методов криптологии, так и самой системы "Mathematica". Наконец, отметим, что ценность книги как учебного пособия опреде- ляется и включением в нее двух первых приложений, довольно обстоя- тельно излагающих основы теории чисел и конечных полей и делающих книгу более независимой. Общий абрис содержания книги дан в предисловии автора. Более детальную информацию о содержании можно почерпнуть в оглавле- нии. Мы коснемся лишь некоторых аспектов. До середины 1970-х го- дов эволюция криптографии, в основном, шла в рамках парадигмы транспозиционно-подстановочных шифров. Традиционные криптосисте- мы, реализующие такие шифры, называются также (симметричными) криптосистемами с единым ключом, поскольку в них для шифрования и дешифрования используется один и тот же секретный ключ. В таких системах распределение и обновление ключей трудны и создают угрозу безопасности. Год 1976-й стал, так сказать, "точкой бифуркации" (или "ветвления") процесса развития криптографии: Диффи и Хеллман [DifH76] предложи- ли общую революционную концепцию (асимметричных) криптосистем с публичными ключами (public key cryptosystems), а также дали пример подобной системы для выработки общего секретного ключа; соответству- ющий протокол использует публичные каналы связи (скажем, газетные объявления). В криптосистемах с публичными ключами каждый пользо- ватель U сети имеет два ключа: секретный ключ D для дешифрования и создания цифровой подписи и публичный ключ Е, с помощью кото- рого другие пользователи шифруют сообщения для U и проверяют его подпись. Ключ Е публикуется, например, в общедоступном каталоге па некотором сервере. (В России ключ Е часто называют "открытым", что вызывает смысловой диссонанс с "открытым" текстом, который в си- стемах секретности (т. е. системах шифрования-дешифрования) обычно — в отличие от публичного ключа — секретен либо защищен цифровой подписью или кодом аутентификации.) Начиная с конца 1970-х годов хлынул поток работ о криптосистемах с публичными ключами. Важно отметить, что безопасность всех таких систем зиждется на математи- ческих гипотезах о практической невозможности решения тех или иных вычислительных проблем. Например, система Диффи-Хеллмапа основа- на на проблеме дискретного логарифмирования в конечном поле, RSA- система [RivSA78] — на проблеме факторизации составного числа, были разработаны и реализованы криптосистемы, основанные на кодах Гоп-
Предисловие редактора перевода 7 пы, исправляющих ошибки [МсЕ178], на NP-полной проблеме "укладки рюкзака" [МегН78] и т. д. Теперь в сферу криптологии оказались вовле- чены теория чисел и алгебра, и это резкое расширение математиеского инструментария вызвало большой интерес не только у специалистов, но и у многих математиков, ранее далеких от криптологии. Заметим, что более половины объема основного текста книги ван Тилборга отведено криптосистемам с публичными ключами. Главы 2, 4, 5, 6, 11, 12, 15 и приложение С перевел Д.С.Ананичев, а предисловие автора, главы 1, 3, 7, 8, 9, 10, 13, 14 и приложения А, В и D — И.О.Коряков. Окончательная компьютерная верстка в DTgXe выполнена Д.С. Ананичевым (и здесь мы хотим поблагодарить А.А.Финогенова за ряд полезных советов). Список литературы был дополнен редактором рядом работ; они помечены звездочкой. Небольшие ошибки и опечат- ки исправлялись без какого-либо уведомления. Разумееется, некоторые ошибки могли сохраниться, а некоторые могли быть добавлены при пе- реводе, за что мы, безусловно, несем полную ответственность. В ряде случаев возникала потребность сделать те или иные подстрочные при- мечания; они имеют сквозную нумерацию в каждой главе. Надеемся, что эта книга окажется актуальной и найдет читателей среди математиков, инженеров и студентов, специализирующихся в об- ласти защиты информации, а также специалистов других профилей. Замечания и пожелания по содержанию книги можно направлть по E-mail: Dmitry.Ananichev@usu.ru. Екатеринбург, апрель 2004 И.О.Коряков
Предисловие Защита секретной информации против неполномочного доступа и мо- шеннических изменений была первичной заботой на протяжении столе- тий. Современная техника коммуникации, использующая компьютеры, связанные через сети, делает все данные даже более уязвимыми для этих угроз. Возникли также новые вопросы, не стоявшие ранее, например, как добавить цифровую подпись к электронному документу таким образом, чтобы подписавший не мог впоследствии отрицать, что именно он под- писал документ. Криптология обращена к указанным выше вопросам. Опа лежит в основе всей информационной безопасности. Техника, применяемая с этой целью, становится все более математической по своей природе. Эта кни- га служит введением в современные криптографические методы. После краткого обзора классических криптосистем мы сосредоточиваем вни- мание на трех главных областях. Прежде всего обсуждаются поточные и блочные шифры. Эти системы имеют крайне быстрые реализации, но отправитель и получатель должны разделять секретный ключ. Крипто- системы с публичными ключами (вторая главная область) делают воз- можной защиту данных без предсогласованного ключа. Их безопасность базируется на неподдающихся решению проблемах наподобие фактори- зации больших целых чисел. Остальные главы покрывают разнообраз- ные темы, такие, как доказательства с нулевым разглашением, схемы разделения секрета и коды аутентификации. Два приложения доволь- но детально объясняют все предварительные математические сведения. Одно посвящено элементарной теории чисел (алгоритм Эвклида, китай- ская теорема об остатках, квадратичные вычеты, формулы обращения, непрерывные дроби). Другое приложение содержит введение в конечные поля и их алгебраическую структуру. Эта книга отличается от ее версии 1988 г. в двух аспектах. То, что было добавлено много нового материала, следовало ожидать, поскольку данная область развивается очень быстро. Помимо ревизии имевшегося материала, включено много новых или сильно расширенных разделов, добавлены новые главы об эллиптических кривых и о кодах аутентифи- кации. Второе отличие даже более существенно. Вся книга доступна в электронном виде как интерактивный учебник в пакете “Mathematica”. Поэтому имеются сильные связи между различными местами текста, но более важно то, что теперь можно прорабатывать нетривиальные при- меры. Даже не-эксперт легко может изменить параметры в примерах и испытать новые параметры. Наш опыт, основанный на преподавании в Калифорнийском технологическом институте и в Эйндховенском тех-
Предисловие 9 нологическом университете, показывает, что большинство студентов ис- кренне наслаждаются огромными возможностями компьютерной алгеб- ры. Всюду в этой книге нашим намерением было сделать предложения пакета “Mathematica” настолько прозрачными, насколько это возмож- но, иногда жертвуя элегантными или более разумными альтернативами, которые слишком зависят от этого конкретного пакета компьютерной алгебры. Несколько человек сыграли решающую роль в подготовке этой книги. Перечисляя в алфавитном порядке (первых) имен, я хотел бы поблаго- дарить Fred’a Simons’a за демонстрацию мне полного потенциала пакета “Mathematica” для образовательных целей и за усиление многих команд пакета, Gavin’a Ногп’а за многие найденные им опечатки, равно как и за составление решений, Lilian Porter за ее реакцию на мой английский, Wil’a Kortsmit’a за его помощь в получении готовой к печати рукописи и за разрешение многих моих вопросов о пакете “Mathematica”. Я также многим обязан следующим людям, которые помогли мне своими откли- ками на различные главы: это Berry Schoenmakers, Bram van Asch, Eric Verheul, Frans Willems, Mariska Sas и Martin van Dijk. Henk van Tilborg Dept, of Mathematics and Computing Science Eindhoven University of Technology P.O. Box 513 5600 MB Eindhoven the Netherlands email: henkvt@win.tue.nl
Глава 1 Введение 1.1 Введение и терминология Криптологию, науку о криптосистемах, можно подразделить на две дисциплины. Криптография занимается разработкой криптосистем, то- гда как криптоанализ изучает способы взлома криптосистем. Эти два аспекта тесно связаны; при внедрении криптосистемы важную роль иг- рает анализ ее безопасности. Пока мы не даем формального определения криптосистемы, оно появится в этой главе позже. Предполагается, что у читателя есть правильное интуитивное понимание того, что такое крип- тосистема. Для чего нужны криптосистемы? Вот некоторые их возможности: Конфиденциальность: при передаче данных нежелательно, чтобы ка- кой-нибудь перехватчик понял содержание передаваемых сообщений. То же справедливо для сохраняемых данных, которые должны быть защи- щены от несанкционированного доступа, например, хакеров. Аутентификация: это свойство эквивалентно цифровой подписи. По- лучатель сообщения хочет убедиться, что сообщение пришло от опреде- ленной стороны, а не от кого-либо иного (даже если позже первоначаль- ная сторона захочет отрицать это). Целостность: это означает, что получатель некоторых данных имеет свидетельство, что третьей стороной не было сделано никаких измене- ний. На продолжении столетий (см. [Kahn67]) криптосистемы использо- вались военными и дипломатическими службами. В наши дни широкое распространение в промышленности сетей связи, управляемых компью- терами, использование последних в гражданских службах часто требует специальной защиты данных посредством криптографической техники. Поскольку запись данных и последующее их извлечение можно рас- сматривать как передачу этих данных во временную область, мы всегда будем использовать термин “передача”, когда данные записываются или передаются.
1.2. Шенноновское описание криптосистемы 11 1.2 Шенноновское описание традиционной криптосистемы В главах 2, 3 и 4 обсуждаются так называемые традиционные крип- тосистемы. Формальное определение традиционной криптосистемы, так же как и математические основы соответствующей теории, принадлежат Шеннону [Shan49] (см. также *[Ящен98]). На рис. 1.1 изображена общая схема традиционной криптосистемы1. Рис. 1.1. Традиционная криптосистема. Ниже мы детально остановимся на таких понятиях как язык и текст. Это обеспечит криптоаналитика полезными моделями для описания от- правляемого сообщения в нашей схеме. Пусть А — конечное множество, называемое алфавитом. Через |Л| обозначим мощность А. В качестве алфавита мы часто будем использо- вать множество = {0,1,... , q— 1}, работая с его элементами по модулю q (см. подраздел А.3.1 и раздел В.2). Алфавит Z26 можно отождествить с множеством {а, Ь, В большинстве современных приложений q равно 2 или степени двойки. Конкатенация п букв из А будет называться n-граммой и обозна- чаться посредством а = (a®, ai,..., an_j). Частными случаями являются биграммы (п = 2) и триграммы (п = 3). Множество всех n-грамм над А обозначается через Ап. Текст — это элемент из А* = \Jn>oAn. Язык — это подмножество в А*. В случае языков программирования такие подмножества точно 'Некоторые российские криптографы (см., например, *[АЗКЧ01]) используют тер- мин “дешифрование” для действия криптоаналитика, а соответствующее действие легитимного получателя называют “расшифрованием”. При этом “шифрование” на- зывают “зашифрованием”. — Прим. ред.
12 Глава, 1. Введение определяются рекурсивными правилами. В случае разговорных языков правила весьма вольные. Пусть А и В — конечные алфавиты. Любое инъективное (т.е. взаимно однозначное) отображение Е из А* в В* называется криптографическим преобразованием. В большинстве практических ситуаций мощности |Л.| и |В| равны. Также часто криптографическое преобразование Е отоб- ражает n-граммы в n-граммы (чтобы избежать расширения данных в процессе шифрования). Пусть m — сообщение (текст из Л*), которое Алиса на рис. 1.1 хо- чет секретно передать Бобу. Обычно оно называется открытым тек- стом (plaintext). Сначала Алиса преобразует открытый текст в так на- зываемый шифртекст (ciphertext) (или криптограмму) с = Е(т). Этот шифртекст она и передает Бобу. Определение 1.1 Симметричная (или традиционная) криптосистема — это множество £ = {E/JA; € /С} криптографических преобразова- ний. Индексирующее множество К называется ключевым про- странством, а его элементы — ключами. Так как отображение Ек инъективно, существует обратное к нему отображение. Обозначим его через Dk. Разумеется, Е означает шифро- вание (encryption или enciphering), a D — дешифрование (decryption или deciphering). Имеем Dk(Ek(m)) = m для всех открытых текстов m € А* и всех к € К. Если Алиса хочет послать Бобу открытый текст m с помощью крип- тографического преобразования Ек, то как Алиса, так и Боб должны знать конкретный выбор ключа к. Они должны согласовать значение к посредством так называемого безопасного канала. Этот канал может быть курьером, но возможно также, что Алиса и Боб заблаговременно согласовали выбор к. Боб может дешифровать с, вычисляя Dk(c) = Dk(Ek(m)) = m. Обычно одна и та же криптосистема £ используется длительное время и многими людьми; поэтому разумно предполагать, что это множество криптографических преобразований известно и криптоаналитику. Что- бы обеспечить безопасность данных, нужно часто менять ключ. Этот принцип еще в 19-м веке ясно сформулировал голландец Огюст Керк- хофф (см. [Kahn67]). Криптоаналитик (скажем, Ева), подсоединившийся к линии связи, может быть • пассивным (перехватчиком): криптоаналитик пытается найти m (а еще лучше к), исходя из с (и любых знаний, которыми он обладает). Определив к, можно вскрыть последующие шифртексты.
1.3. Статистическое описание источника текстов 13 • активным (злоумышленником): криптоаналитик пытается актив- но манипулировать передаваемыми данными. Например, он пере- дает собственный шифртекст, вновь передает старый шифртекст, подставляет свои собственные тексты вместо передаваемых шифр- текстов и т.п. В целом различают три уровня криптоанализа: • Атака только с шифртекстом: криптоаналитику известен только отрывок шифртекста (и часто контекст сообщения). • Атака с известным открытым текстом: известен отрывок шифр- текста и соответствующий открытый текст. Если система безопасна относительно атак такого рода, легитимный получатель не обязан уничтожать дешифрованные сообщения. • Атака с выбранным открытым текстом: криптоаналитик может выбрать любой открытый текст и сгенерировать соответствующий шифртекст. Криптосистемы, обсуждаемые в гл. 7-12, должны про- тивостоять атакам такого рода. Этим завершается общее описание традиционной криптосистемы, изображенной на рис. 1.1. 1.3 Статистическое описание источника открытых текстов Как мы увидим в разд. 2.2, в криптологии, особенно когда хотят взло- мать конкретную криптосистему, мощным инструментом часто служит вероятностный подход к описанию языка. Алиса на рис. 1.1 играет роль конечного или бесконечного источни- ка S открытых текстов над алфавитом А, например, над Zq. Источник можно описать как конечную (соответственно бесконечную) последова- тельность случайных переменных т.е. как последовательность Mq, Му,..., Mn-i для некоторого фиксированного значения п (соответственно как Мо, Му, М2,...), причем для всех появляющихся событий заданы вероятности. Так, для каждой комбинации букв (r-граммы) (mo,mi,... , mr~i) над А и каждой начальной точки j определена вероятность Рготкр(А7у — mg, A<fj'-|-i — mi,..., 1 — mr_i).
14 Глава 1. Введение Когда j = 0, мы пишем просто PrOTKp(mo, mi,..., mr-i). Конечно, веро- ятности, описывающие источник открытых текстов, должны обладать некоторыми стандартными статистическими свойствами, которые мы упомянем, но не будем обсуждать в деталях: 1- Рготкр(тпо, mi,mr-i) > 0 для всех текстов (mo,mi,...,mr_i); 2- Есто.тх,...^-!) PrOTKp(m0,mi,...,mr_i) = 1; 3- Е(тг,7пг+1,...,тг_1)Рготкр(т0,т1,...,т/_1) = РгОТкр(то,т1,...,тг-1) для всех I > г. Третье свойство называется условием совместности Колмогорова. Пример 1.1 Источник S открытых текстов (Алиса на рис. 1.1J генерирует от- дельные буквы (1-граммы) из {а, 6,... , z} с независимыми, но идентич- ными [по отношению к моментам появления — ред.] распределениями, скажем, р(а),р(Ь),... ,р(^). Таким образом, PrOTKp(mo,mi,...,mn„i) = p(m0)p(mi),... ,p(mn_i), п > 1. Распределение букв алфавита в обычных английских текстах приведено в табл. 1.1 (см. табл. 12-1 в [МеуМ82]/ В этой модели Рготкр(^п) = р(г)р(м)р(п) = 0,612 х 0,0271 х 0,0709 « 1,18 • 10-4. Заметим, что в этой модели также Рготкр (пги) = р(п)р(г)р(и) и т.д, т.е. все перестановки трех букв г, и и п равновероятны, что неправ- доподобно для обычных английских текстов. A 0.0804 H 0.0549 o 0.0760 V 0.0099 В 0.0154 i 0.0726 p 0.0200 w 0.0192 c 0.0306 j 0.0016 Q 0.0011 X 0.0019 D 0.0399 к 0.0067 R 0.0612 Y 0.0173 E 0.1251 L 0.0414 S 0.0654 z 0.0009 F 0.0230 M 0.0253 T 0.0925 G 0.0196 N 0.0709 U 0.0271 Таблица 1.1. Распределение вероятностей 1-грамм в английском языке. Пример 1.2 S порождает 2-граммы над алфавитом а,Ь,..., z с независимыми, но идентичными распределениями, скажем, p(s, t), где s,tE {а, Ь,..., z}. Таким образом, для п > 1 PrOTKp(mo,mi,... ,m2n-i) = p(m0,mi)p(m2, m3).. .p(m2n_2, m2n_i).
1.3. Статистическое описание источника текстов 15 Распределение 2-грамм в английских текстах можно найти в литера- туре (см. табл. 2.3.4 в [Konh.81]/ Конечно, можно продолжать подобным же образом с таблицами рас- пределения 3-грамм и т.д. Иной, более привлекательный подход дается в следующем примере. ed["a"] = 0.0723; ed["j"] = 0.0006; ed["s"] = 0.0715; ed["b"] = 0.0060; ed["k"] = 0.0064; ed["t"] = 0.0773; ed["c"] = 0.0282; ed["l"] = 0.0390; ed["u"] = 0.0272; ed["d"J = 0.0483; ed["m"] = 0.0230; ed["v"] = 0.0117; ed["e"] = 0.1566; ed["n"] = 0.0814; ed["w"] = 0.0078; ed["f"] = 0.0167; ed["o"] = 0.0716; ed["x"] = 0.0030; ed["g"] = 0.0216; ed["p"] = 0.0160; ed["y"] = 0.0168; ed["h"] = 0.0420; ed["q"] = 0.0007; ed["z"] = 0.0010; ed["i"] = 0.0787; ed["r"] = 0.0750; Таблица 1.2. Равновесное распределение в английском языке. Пример 1.3 В этой модели источник S открытых текстов генерирует 1-грам- мы посредством марковского процесса [точнее, марковской цепи с ко- нечным числом состояний — ред.]. Этот процесс можно описать мат- рицей переходов Р — (p(t, S))s,t, где p(t,s) — вероятность того, что вслед за буквой з в тексте следует буква t. Из теории марковских процессов вытекает, что Р имеет собственное значение 1. Пусть р = (р(а),р{Ь),... ,р(гУ) — соответствующий собственный вектор, на- зываемый равновесным [или стационарным, инвариантным — ред.] рас- пределением процесса. Предполагая, что процесс с самого начала нахо- дится в равновесном состоянии, получаем PrOTKp(mo, mi,..., mn-i) = р(то)р(т1|то)р(т2|т1)... p(mn^i |mn_2). Пусть p и P заданы таблицами 1.2 и 1.3 (из [Konh81]; здесь они обо- значены посредством “ed” и “ТгРг”). Тогда получаются следующие более правдоподобные вероятности: ВгтКр(гип) = р(г)р(и\г)р(п\и) = 0.0751 х 0.0192 х 0.1517 « 2.18 • 10-4, Pr0TKp(wn) = p(u)p{r\u)p{n\r) = 0.0272 х 0.1460 х 0.0325 « 1.29 • 10-4, РгоТкр(пгп) = p(n)p(r|n)p(u|r) = 0.0814 х 0.0011 х 0.0192 « 1.72 • 10"6. С помощью функций StringTake, ToCharacterCode и StringLength паке- та “Mathematical эти вероятности могут быть вычислены следующим способом (сначала вводятся таблицы 1.2 и 1.37-
16 Глава 1. Введение sourcetext = "run"; ed [StringTake[sourcetext, {1}]] * StringLength[sourcetext] - 1 П TrPrEE i=l ToCharacterCode [StringTake[sourcetext, {i}]] - 96, ToCharacterCode[StringTake[sourcetext, {i + 1}]] - 96]] II {{0.000218448}} Можно получить лучшие аппроксимации языка, если считать ве- роятности переходов зависящими от более чем одной предшествующей буквы. Отметим, что во всех трех рассмотренных примерах модели стаци- онарны, т.е. PrOTKp(Afj = mg, Afj+i = mi,..., = mn-i) не зависит от значения j. Можно считать, что в середине обычного текста это свой- ство выполняется, но в иных ситуациях это не так. Подумайте, например, о дате в начале письма. a b c d e f g h i а 0.0011 0.0193 0.0388 0.0469 0.002 0.01 0.0233 0.002 0.048 b 0.0931 0.0057 0.0016 0.0008 0.3219 0 0 0 0.0605 с 0.1202 0 0.0196 0.0004 0.1707 0 0 0.1277 0.0761 d 0.1044 0.002 0.0026 0.0218 0.3778 0.0007 0.0132 0.0007 0.1803 е 0.066 0.0036 0.0433 0.1194 0.0438 0.0142 0.0125 0.0021 0.0158 f 0.0838 0 0 0 0.1283 0.0924 0 0 0.J608 g 0.1078 0 0 0.0018 0.2394 0 0.0177 0.1281 0.0839 h 0.1769 0.0005 0.0014 0.0008 0.5623 0 0 0.0005 0.1167 i 0.038 0.0082 0.0767 0.0459 0.0437 0.0129 0.028 0.0002 0.0016 j 0.1259 0 0 0 0.1818 0 0 . 0 0.035 k 0.0395 0.0028 0 0.0028 0.5282 0.0028 0 0.0198 0.1582 1 0.1342 0.0019 0.0022 0.0736 0.1918 0.0105 0.0108 0 0.1521 m 0.1822 0.0337 0.0026 0 0.2975 0.001 0 0 0.1345 n 0.055 0.0004 0.0621 0.1681 0.1212 0.0102 0.1391 0.0013 0.0665 о 0.0085 0.0101 0.0162 0.0231 0.0037 0.1299 0.0082 0.0025 0.0092 P 0.1359 0 0.0006 0 0.1747 0 0 0.0237 0.0423 q 0 0 0 0 0 0 0 0 0 r 0.1026 0.0033 0.0172 0.0282 0.2795 0.0031 0.0175 0.0017 0.1181 s 0.0604 0.0012 0.0284 0.0027 0.1795 0.0024 0 0.0561 0.1177 t 0.0619 0.0003 0.0036 0.0002 0.1417 0.0007 0.0002 0.3512 0.1406 u 0.0344 0.0415 0.0491 0.0243 0.0434 0.0052 0.0382 0.001 0.0258 V 0.0749 0 0 0.0023 0.6014 0 0 0 0.2569 w 0.2291 0.0008 0 0.0032 0.1942 0 0 0.1422 0.2104 Таблица 1.3 (начало). Вероятности переходов p(t|s), s — строка, I — столбец, в английском языке.
1.3. Статистическое описание источника текстов 17 a b c d e f g h i X 0.0672 0 0.1119 0 0.1269 0 0 0.0075 0.1119 У 0.0586 0.0034 0.0103 0.0069 0.2897 0 0 0 0.069 Z 0.2278 0 0 0 0.4557 0 0 0 0.2152 j k I in n о p q г а 0.002 0.0103 0.1052 0.0281 0.1878 0.0008 0.0222 0 0.118 b 0.0057 0 0.1242 0.0049 0 0.0964 0 0 0.0662 с 0 0.0324 0.0369 0.0015 0.0011 0.2283 0 0.0004 0.0426 d 0.0033 0 0.0125 0.0178 0.0053 0.0733 0 0.0007 0.0324 е 0.0005 0.0036 0.0456 0.034 0.1381 0.004 0.0192 0.0034 0.1927 f 0 0 0.0299 0.0009 0.0009 0.2789 0 0 0.1215 g 0 0 0.0203 0.0027 0.0451 0.114 0 0 0.1325 h 0 0 0.0016 0.0016 0.0038 0.0786 0 0 0.0153 i 0 0.005 0.0567 0.0297 0.2498 0.0893 0.01 0.0008 0.0342 j 0 0 0 0 0 0.3147 0 0 0.007 k 0 0.0113 0.0198 0.0028 0.0565 0.0198 0 0 0.0085 1 0 0.0079 0.1413 0.0082 0.0004 0.0778 0.0041 0 0.0034 m 0 0 0.001 0.0654 0.0042 0.1246 0.0722 0 0.0026 n 0.0009 0.0066 0.0073 0.0104 0.0194 0.0528 0.0004 0.0007 0.0011 0 0.0014 0.0078 0.0416 0.0706 0.219 0.0222 0.0292 0 0.153 P 0 0 0.0812 0.0073 0.0006 0.1511 0.0581 0 0.2306 q 0 0 0 0 0 0 0 0 0 г 0 0.0205 0.0164 0.0303 0.0325 0.1114 0.0055 0 0.0212 s 0 0.0091 0.0145 0.0112 0.0021 0.0706 0.0386 0.0009 0.0027 t 0 0 0.0101 0.0044 0.0015 0.1229 0.0003 0 0.0479 u 0 0.0014 0.1097 0.0329 0.1517 0.0019 0.0386 0 0.146 V 0 0 0 0.0012 0 0.053 0 0 0 w 0 0 0.0041 0 0.0357 0.1292 0 0 0.0106 X 0 0 0 0.0075 0 0.0075 0.3507 0 0 У 0 0.0034 0.0172 0.0379 0.0172 0.2207 0.031 0 0.031 z 0 0 0.127 0 0 0.0506 0 0 0 s t u V w X У z a 0.1001 0.1574 0.0137 0.0212 .0057 0.0026 0.0312 0.0023 b 0.0229 0.0049 0.0727 0.0016 0 0 0.1168 0 c 0.0087 0.0893 0.0347 0 0 0 0.0094 0 d 0.0495 0.0013 0.0601 0.0099 0.004 0 0.0264 0 e 0.1231 0.0404 0.0048 0.0215 0.0205 0.0152 0.0121 0.0004 f 0.0026 0.0496 0.0462 0 0 0 0.0043 0 g 0.0256 0.0247 0.0512 0 0 0 0.0053 0 h 0.0027 0.0233 0.0085 0 0.0011 0 0.0041 0 i 0.1194 0.1135 0.0011 0.025 0 0.0023 0.0002 0.0079 Таблица 1.3 (продолжение). Вероятности переходов p(t|s), » — строка, t — столбец, в английском языке.
18 Глава 1. Введение S t и V W X У Z j 0 0 0.3357 0 0 0 0 0 к 0.1102 0.0028 0.0028 0 0 0 0.0113 0 1 0.0389 0.0254 0.0269 0.0056 0.0011 0 0.0819 0 m 0.0244 0.0005 0.0337 0.0005 0 0 0.0192 0 п 0.0751 0.1641 0.0124 0.0068 0.0018 0.0002 0.0157 0.0004 о 0.0357 0.0396 0.0947 0.0334 0.0345 0.0012 0.0041 0.0004 Р 0.018 0.0287 0.0457 0 0 0 0.0017 0 q 0 0 1 0 0 0 0 0 г 0.0655 0.0596 0.0596 0.0192 0.0142 0.0017 0.0002 0.0306 S 0.0836 0.2483 0.0579 0 0.0039 0 0.0081 0 t 0.0418 0.0213 0.0195 0.0005 0.0088 0 0.0203 0.0005 U 0.1221 0.1255 0.0029 0.0014 0 0.001 0.0014 0.0005 V 0.0023 0 0.0012 0.0012 0 0 0.0058 0 W 0.0366 0.0016 0 0 0 0 0.0024 0 X 0 0.1716 0 0 0 0.0373 0 0 У 0.1517 0.0172 0.0138 0 0.0103 0 0.0069 0.0034 Z 0 0 0.0127 0 0 0 0 0.0253 Таблица 1.3 (окончание). Вероятности переходов p(t|s), s — строка, t — столбец, в английском языке. 1.4 Задачи Задача 1.1. Какова вероятность получить текст “apple”, если источник от- крытых текстов генерирует независимые, одинаково распределенные 1-граммы, как указано в примере 1.1? Ответьте на тот же вопрос, когда используется мар- ковская модель из примера 1.3. Задача 1.2м. Используйте функцию Permutations пакета “Mathematica” и формулу из примера 1.3, чтобы для каждого из 24 упорядочений четырех букв е, h, 1, р определить вероятность того, что оно появится в языке, порожденном марковской моделью из примера 1.3.
Глава 2 Классические криптосистемы 2.1 Шифр Цезаря, простая замена, шифр Виженера В этом разделе мы обсудим ряд классических криптосистем. Же- лающие расширить свой кругозор в этой области могут обратиться к [BekP82], [Denn82], [Kahn67], [Konh81] или [МеуМ82]. 2.1.1 Шифр Цезаря Одна из старейших криптосистем обязана своим появлением Юлию Цезарю. В ней каждая буква текста сдвигается циклически на к позиций по алфавиту. Например, при к = 7 получается следующее шифрование слова “cleopatra” (“циклически” означает, что за буквой z следует а). cleopatra dmfpqbusb engqrcvtc fohrsdwud gpistexve hqjtufywf irkuvgzxg jslvwhayh Используя функции ToCharacterCode и FromCharacterCode пакета “Mathematica”, преобразующие символы в их ASCII коды и обратно (код буквы а — 97, код буквы b — 98, и т.д.), можно задать шифр Цезаря с помощью следующей функции: CaesarCipher [plaintext—, key_] : = FromCharacterCode[ Mod[ToCharacterCode[plaintext] - 97 + key, 26] + 97] Теперь — пример использования: plaintext = "typehereyourplaintextinsmallletters"; key = 24; CaesarCipher[plaintext, key] || rwnef epewmspn j yglr cvrglqkyj j j err cpq В терминах раздела 1.2 шифр Цезаря определяется над алфавитом {0,1,...,25} равенствами: ЕЦт) = (т + к) mod 26, 0 < m < 26,
20 Глава 2. Классические криптосистемы В = {Ек | 0 < к < 26}, где через i mod п обозначено единственное целое число j, 0 < j < n, удовлетворяющее условию j = i (mod n). В этом случае пространством ТС является множество {0,1,...,25} и Dk = Ezs-k. Эту криптосистему легко взломать, просто перебрав все ключи. Та- кой метод называется полным перебором ключей. В таблице 2.1 можно найти пример криптоанализа шифровки “xyuysuyifvyxi”. xyuysuyifvyxi wxt х г t xheuxwh vwswqswgdtwvg uvrvprvfcsvuf t uquoquebru t e Таблица 2.1. Криптоанализ шифра Цезаря. Чтобы расшифровать криптограмму yhaklwpnw, можно перебрать все ключи в определенной выше функции Цезаря. ciphertext = "yhaklwpnw" Table[CaesarCipher[ciphertext, -key], {key, 1, 26} {xgzjkvomv, wfyijunlu, vexhitmkt, udwghsljs, tcvfgrkir, sbuefqjhq, ratdepigp, qzscdohfo, pyrbcngen, oxqabmfdm, nwpzalecl, mvoyzkdbk, lunxyjcaj, ktmwxibzi, jslvwhayh, irkuvgzxg, hqjtufywf, gpistexve, fohrsdwud, engqrcvtc, dmfpqbusb, Cleopatra, bkdnozsqz, ajcmnyrpy, ziblmxqox, yhaklwpnw} 2.1.2 Шифр простой замены □ Система и ее основное слабое место Метод простой замены состоит в том, что фиксируется некоторая пе- рестановка тг алфавита {а, Ь,г}, после чего она применяется к каждой букве открытого текста. Пример 2.1 В следующем примере описана лишь часть перестановки тг, до- статочная для данного открытого текста. Используется функция StringReplace пакета “Mathematical
2.1. Шифр Цезаря, Виженера и простой замены 21 || vrkbaqzdq Более формальное описание системы простой замены состоит в сле- дующем: пространством ключей /С является множество Sq всех переста- новок на множестве {0,1, ...,g — 1}, а криптосистема 8 определяется как 8 = {En | 7Г е Sq}, где Еп(т) = тг(т), 0 < т < q. Функция дешифрования Dn задается равенством Dn = E^-i, поскольку Dn(Ev(m)) = Z)(7r(m)) = E^-i (тг(т)) = 7г-1(тг(т)) = т, 0 < т < q. В отличие от шифра Цезаря эта система свободна от такого недо- статка, как слишком малое пространство ключей. Действительно, |/С| = = |^2б| = 26! ~ 4.03 • 1026. Эта система дает великолепный пример то- го, как глупо верить в надежность криптосистемы, основываясь лишь на том, что она имеет большое пространство ключей! Простой подсчет частот появления букв в шифровке и их сравнение с частотами букв из табл. 1.1 позволяет быстро найти образы относительно тг для большин- ства наиболее употребительных букв открытого текста. В самом деле, наиболее частая буква в криптограмме скорее всего окажется образом буквы е при перестановке тг. Следующая по частоте будет образом бук- вы п и т.д.1 После того как найдены прообразы наиболее частых букв криптограммы, нетрудно найти и остальные. Разумеется, чем длиннее криптограмма, тем легче ее расшифровать. В главе 5 мы вернемся к криптоанализу систем, в частности, к вопросу о том, как долго можно безопасно использовать один и тот же ключ. □ Криптоанализ методом поиска наиболее вероятных слов В следующем примере известен очень длинный шифртекст. Вообще говоря, для криптоанализа этого не требуется, но это необходимо, если мы хотим узнать весь ключ полностью. В самом деле, если длина шифр- текста мала, то в нем может не встретиться какая-либо пара букв, и тем самым по нему невозможно полностью восстановить ключ, но, разуме- ется, для его расшифровки весь ключ и не нужен. Помимо известного шифртекста, приведенного в табл. 2.2, будем считать известным то, что в открытом тексте шла речь о “теории двусторонней связи” (по англий- ски “bidirectional communication theory”). Тогда расшифровка еще больше упрощается. Д русском языке наиболее частыми являются буквы о и е. — Прим, перев.
22 Глава 2. Классические криптосистемы ndize hide osiol digic imhzq zolyi zehdp zhjeo ndize hlpvs uczyc dhzhj eondi zehde moylk zhjpm Ihylg gidiz ppsdo lylzr losye nnmhz ydise hide osceu Irloq Igyoz Ineol flhlo dpydg Izhuc zyciu eeone olzhj eondi zehde zhjpm Ihyll dycei dogi dizgi zydpp sidq zolyi zehej hjpml hylzg Ikaol ggiqv sqzol yilqi odhgj eondi zehxm zlguc zycyd hehps vlqlo zrlqz jiclp duejy dmgdp ziszg rlqqz gizhf mzqcz hf id Idopz loydm gljoe niclp dilol zhvze pef sd hqgey zepef syenn mhzyd izehi cleos gllng luzql daapz ydize hgqml ieid ydyii edipz rzhf v Izhf g iclzo dyize hggem oylge jzhje ondiz ehucz yezhj pmlhy eiclo zhdpp aeggz vplqz olyiz ehgic laolg Ihiad aloql gicly dglej vzqzo lyize hdpye nnmhz ydize hide osdaa eiclg eyzdp vlcdr remoe jneht Isg... Таблица 2.2. Криптограмма, полученная простой заменой. Предположив, что в открытом тексте встречается слово “communi- cation”, ищем в шифртексте последовательность из 13 букв, в которой первая буква совпадает с восьмой, вторая — с двенадцатой, третья - с четвертой, шестая — с тринадцатой, а седьмая — с одиннадцатой. И на самом деле, видим, что подходящая строка “yennmhzydizeh” три- жды встречается в криптограмме. Отсюда извлекаем следующую инфор- мацию о перестановке тт: с о m u n i a t J. J. J. i i i i i у е n m h z d i Предположив, что в открытом тексте встречается также слово “direc- tion”, и используя уже полученную о тт информацию, ищем в шифртексте последовательность вида “*z**yizeh”. Оказывается, что в шифровке че- тырежды встречается последовательность “qzolyizeh”, из чего следует, что в перестановке тт die J. J. J. q о 1 Если теперь применить полученную информацию ко всему шифртек- сту, то легко найти перестановку тг целиком. Например, начало текста имеет вид in*ormationt*eor*treat*t*eunid..., что, очевидно, читается как information theory treats the unid(irectional)...
2.1. Шифр Цезаря, Виженера и простой замены 23 Это дает тт-образы букв f, получить всю перестановку: h и s. Продолжая подобным образом, легко h i с i 1 z j w k 1 t 1 1 P m } n а i d b V c } У d q e i 1 f j g } f n 0 P q r s t u V w X У z i I I i 1 i } } h e a X 0 g i m r u k s b Пример 2.2 Пакет “Mathematical позволяет очень легко найти в данной стро- ке подстроку с заданными свойствами. Например, для того, чтобы узнать, где в данной строке находится подстрока длины 6, в которой 1-я буква совпадает с 4-й, а 2-я — с 5-й (как в латинском слове “quoque”), можно использовать функции If, StringTake, StringLength, Do и Print пакета “Mathematica” следующим образом: ciphertext = "xyuysuyifvyxi" Do [ If [StringTake [ciphertext, {i + I}] == StringTake [ciphertext, {i + 4}] A StringTake[ciphertext, {i + 2}] == StringTake[ciphertext, {i + 5}-], Print[i + 1, " ", StringTake[ciphertext, {i + 1, i + 6}]]], {i, 0, StringLength[ciphertext] - 6}] || uysuyi Этот пример взят из табл. 2.1. 2.1.3 Криптосистема Виженера Криптосистема Виженера (названная в честь Блеза де Виженера, который в 1586 г. в своем “Трактате о шифрах’’ описал более слож- ную версию подобной системы) состоит из г периодически применяемых шифров Цезаря. В приведенном ниже примере ключом является слово длины г = 7. В этом слове буква с номером i определяет частичный шифр Цезаря, т.е. используется для шифрования букв открытого текста с номерами г, i + г, i + 2г,... Пример 2.3 Отождествим {0,1,..., 25} с {а,Ь,..., z}. Для шифрования и дешиф- рования весьма удобна так называемая таблица Виженера (см. табл. 2.3}. Используя ключ “michael”, выполняем следующее шифрование:
24 Глава 2. Классические криптосистемы открытый текст а с г у ключ m i с h шифртекст m k t f открытый текст e m о f ключ a e 1 m шифртекст e q z r Oabcdefghi jklm Ibcdefghijklmn 2cdefghijklmno 3 d e f g h i j klmnop 4 e fghi j klmnopq 5fghijklmnopqr 6ghijklmnopqrs 7hijklmnopqrst 8ijklmnopqrstu 9jklmnopqrstuv 10 k Imnopqr s tuvw lllmnopqr s tuvwx 12 m n о p q r s t uvwxy 13 n о p q г s tuvwxyz 14 о p q г s tuvwxyza 15 p q г s tuvwxyzab 16 qr s tuvwxyzabc 17 r s tuvwxyzabcd 18 s tuvwxyzabcde 19 tuvwxyzabcde f 20 u v w x у z abcde f g 21vwxyzabcde fgh 22wxyzabcdefghi 23xyzabcdefghi j 24yzabcdefghi j k 25zabcdefghijkl p t о s у s t a e 1 m i ch p x z e g ti a t e n i sac i c h a e Im b g u i w 1 о nopqr s tuvwxyz opqr s tuvwxyza pqr s tuvwxyzab qr s tuvwxyzabc rstuvwxyzabcd s tuvwxyzabcde tuvwxyzabcde f uvwxyzabcde fg vwxyzabcde fgh wxyzabcdefghi xyzabcdefghij yzabcdefghijk zabcdefghijkl abcdefghijklm b c d e f g h i j k 1 m n cdefghijklmno defghijklmnop efghijklmnopq fghi j klmnopqr ghijk Imnopqr s hijklmnopqrst ijklmnopqrstu jklmnopqrstuv klmnopqr s tuvw Imnopqr s t uvwx mnopqr s t uvwxy Таблица 2.3. Таблица Виженера. Из-за избыточности английского языка эффективный размер ключевого пространства существенно сократится, если в качестве ключей выби- рать лишь осмысленные слова. Если же брать в качестве ключей име- на родственников, как это было проделано в примере, то безопасность шифрования будет сведена практически к нулю. Реализация в пакете “Mathematical сложения двух букв, определя- емого в таблице Виженера, аналогична приведенной выше реализации шифра Цезаря. AddTwoLetters[а_, Ь_] := FromCharacterCode[Mod[(ToCharacterCode[а] - 97) + (ToCharacterCode[b] - 97), 26] + 97]
2.1. Совпадения и метод Казиски 25 Используя функции StringTake и StringLength пакета “Mathematica” и определенную выше функцию AddTwoLetters, можно реализовать ши- фрование в криптосистеме Виженера следующим образом: plaintext = "typehereyourplaintextinsmallletters"; key = "keyword"; ciphertext = " "; Do [ciphertext = ciphertext <> AddTwoLetters[StringTake[plaintext, •{ i}] , StringTake[key, { Mod[i - 1, StringLength[key]] + 1} ]], { i, 1, StringLength[plaintext]} ]; ciphertext || dcnavvuocmqfgokmlpsowsrqiocovirpsiv Более формальное описание криптосистемы Виженера дается следу- щим образом: & I (^о, ^1? •••? kr_i) G /С ^2б}’ ’") (^0, Ci, С2, ...), где Сг = {ггы + k{i mod r)) mod 26. Вместо периодического использования г шифров Цезаря в криптоси- стеме Виженера можно, разумеется, применить и г произвольных про- стых замен. Такая система является примером так называемой много- алфавитной замены. Несколько веков не было эффективного способа взлома этой системы, в основном, из-за отсутствия техники определения длины ключа г. Ведь если удается определить г, то можно сгруппиро- вать буквы i, i + г, i + 2r,... для каждого i из интервала 0 < i < г и найти (например, частотным анализом) свою замену для каждой из этих групп по отдельности. В 1863 г. прусский офицер Фридрих В. Казиски указал статистический метод нахождения длины г ключа. В следующем разделе мы обсудим этот метод. 2.2 Подсчет числа совпадений, метод Казиски 2.2.1 Подсчет числа совпадений Рассмотрим шифртекст с = со, щ,..., cn-i, полученный при шифро- вании шифром Виженера с ключом k = ko,ki,..., открытого текста m = mo, mi,..., mn_i на английском языке (см. также (2.1)). Как уже
26 Глава 2. Классические криптосистемы было объяснено в конце предыдущего раздела, основой взлома крипто- системы Виженера является определение длины ключа г. При проведении анализа будем предполагать, что источник откры- тых текстов генерирует отдельные буквы, причем вероятность появле- ния каждой буквы задана в табл. 1.1 и не зависит от предшествующего текста (см. пример 1.1). Кроме того, предположим, что буквы kt из клю- ча представляют собой независимые случайные величины, равномерно распределенные на множестве {а, Ь,..., z} (т.е. вероятность того, что kj окажется некоторой наперед заданной буквой, равна 1/26). Обозначим через и подстроки строки с, состоящие из i крайних левых символов с и, соответственно, из i крайних правых сим- волов с, т.е. Cleft ~ С°’ С1’ Ci“1 И Cright ~ сп-й Стг-г+Ь •••, сп-1- Затем подсчитаем количество совпадений символов строк и crighv т-е’ таких координат J, что (C^)j = В лемме 2.1 бу- дет показано, что математическое ожидание доли этих совпадений (т.е. их количества, деленного на г, — длину строки) равно 0.06875, если г делит п — г, и равно 1/26 = 0.03846, если г не делит п — г. Приведем пример того, как можно использовать эту разницу в мате- матических ожиданиях для определения длины г неизвестного ключа. Пример 2.4 Рассмотрим криптограмму "ubsyvkmhvyrrtsbbcrdsndwrtshxmbufrmxgabnvmircewerucam lyzbrvfwivvmlyzwapsryogsslechbgcubsvyczqrcwrmhvcxgooyvcy dspomtqfpyqkgbcmerucadlcaflrsuqjrbhceqesfcehuoqmdstorcdoy - meqqwaglgovggsmdabbigztbbqyfwbxwmgfpowgztyeilosrkgfahuo vqfogswruqnvpwfvrnmpqqgsslatgrmqubsvyczqrswcjdeowqqroih qdspdibffnxwgztbbqyfwbxus " ; С помощью функций StringTake, StringLength, Characters и Table па- кета “Mathematica” легко вычислить количество совпадений символов строк и c^ght для каждого значения i: ciphertext = "ubsyvkmhvyrrtsbbcrdsndwrtshxmbufrmxgabnvmirceweruca mlyzbrvfwivvmlyzwapsryogsslechbgcubsvyczqrcwrmhvcxgo oyvcydspomtqfpyqkgbcmerucadlcafIrsuqjrbhceqesfcehuoq mdstorcdoymeqqwaglgovggsmdabbigztbbqyfwbxwmgfpowgzty eilosrkgfahuovqfogswruqnvpwfvrnmpqqgsslatgrmqubsvycz qrswcjdeowqqroihqdspdibffnxwgztbbqyfwbxus" ;
2.2. Совпадения и метод Казиски 27 L = StringLength [ciphertext]; Table[ N[ Count[ Characters[ StringTake[ciphertext, i]] - Characters[ StringTake[ciphertext, -i]], 0]/i, 1], {i, L - 20, L - 1}] {0.03, 0.04, 0.08, 0.02, 0.05, 0.04, 0.04, 0.03, 0.06, 0.07, 0.06, 0.06, 0.04, 0.02, 0.05, 0.08, 0.04, 0.05, 0.02, 0.01, 0.05} Наибольшие величины оказались в позициях этого списка с номера- ми --6 и —18, а это показывает, что длина ключа г равна 6. И на самом деле, при шифровании был использован шестибуквенный ключ “monkey”. Это можно проверить с помощью следующего аналога шифрования Виженера из примера 2.3 : SubTwoLetters[а_, Ь_] := FromCharacterCode[ Mod[(ToCharacterCode[а] - 97) - (ToCharacterCode[b] - 97), 26] + 97] ciphertext = "ubsyvkmhvyrrtsbbcrdsndwrtshxmbufrmxgabnvmircewerucamly zbrvfwivvmlyzwapsryogsslechbgcubsvyczqrcwrmhvcxgooyv cydspomtqfpyqkgbcmerucadlcafIrsuqjrbhceqesfcehuoqmds torcdoymeqqwaglgovggsmdabbigztbbqyfwbxwmgfpowgztyeil osrkgfahuovqfogswruqnvpwfvrnmpqqgsslatgrmqubsvyczqrs wc jdeowqqroihqdspdibf fnxwgztbbqyfwbxus" ; key = "monkey"; plaintext = Do [plaintext = plaintext <> SubTwoLetters[StringTake[cipertext, { i}], StringTake[key, { Mod[i - 1, StringLength[key]] + 1} ]], { i, 1, StringLength[ciphertext]} ]; plaintext informationtheorytreatstheunidirectionalinformation channelbywhichaninformationsourceinfluencesstatisti callyareceivercommunpcationtheoryhoweverdescribesth emoregeneralcaseinwhichtwoormoreinformationsourcesi nfluenceeachotherstatisticallythedirectionofthisinf luenceisexpressedbydsrectedtransinformationqu Лемма 2.1 Пусть шифртекст с получен при шифровании открытого тек- ста m шифром Виженера с ключом к длины г. Пусть текст m порожден источником открытых текстов из примера 1.1. Иначе
28 Глава 2. Классические криптосистемы говоря, буквы в m представляют собой независимые случайные величины, распределение вероятностей р(тп) которых опреде- ляется в соответствии с табл. 1.1. Кроме того, пусть буквы ki из ключа — это независимые случайные величины, равномерно распределенные на множестве {а, Ъ,..., г} (т.е. вероятность то- го, что ki окажется некоторой наперед заданной буквой, равна 1/26). Тогда для каждой пары (2,7), 1 < г < j < n, Рг = c7] = Z2mP(m)2 ~ 0-06875, 1/26 « 0.03846, если г делит j — i, если г не делит j — i. Доказательство. Если j — i делится на г, то щ = Cj тогда и только тогда, когда = rrij. Это непосредственно следует из формулы (2.1), поскольку j mod г равно i mod г. Таким образом, Pr[ci = Cj] = Рг[тЩ = TTlj] = Pr[mi = TTlj = m] = тп = У " Рг[гщ = тп] • Pr[mj — m] — ^Jp(m)2 0.06875. тп тп Если j — i не делится на г, то по формуле (2.1) Cj = Cj тогда и только тогда, когда тщ + moj r — mj + k^ moj г- Из неравенства j mod г 7^ i mod г следует, что k- mo j r совпадает c mi + kt m0 j r — mj с вероят- ностью 1/26. Отсюда Pr[ci = cj] = 1/26 « 0.03846. Понятно, что чем больше длина криптограммы, тем легче определить (0 0) длину ключа по долям совпадении символов в парах строк c)eyt, crigllt для различных г. 2.2.2 Метод Казиски Криптоанализ Казиски криптосистемы Виженера основан на том факте, что если некоторая комбинация букв (часто встречающийся фраг- мент открытого текста) шифруется более одного раза одним и тем же фрагментом ключа (это происходит из-за повторяемости ключа длины г), то в криптограмме на соответствующих местах возникают повторяю- щиеся куски. Процитируем пример из [Ваие97]: Пример 2.5 Рассмотрим следующий открытый текст и криптограмму, полу- ченную из него с помощью ключа “comet".
2.2. Шифры Бернама и Плэйфэра, перестановки, роторные машины 29 открытый текст t h е г е i S а п о t ключ с о П1 е t с о m е t с шифртекст V V q V X к g m г h V открытый текст h е г f а m о u S Р i ключ о m е t с о m е t с о шифртекст V q V У с а а У 1 г W В криптограмме имеется два вхождения подстро 'KU “vvqv”, начина- ющиеся с 1-й и с 11-й позиций. Это показывает, что длина ключа г делит 10. Кроме того, дважды встречается и подстрока “mrh”, с 8-й и с 23-й позиций. Таким образом, кажется правдоподобным, что дли- на ключа г делит 15. Комбинируя эти результаты, можно сделать вывод, что г — 5. В данном случае вывод оказывается верен. Дополнительные подробности криптоанализа системы Виженера мо- жно найти в [Ваие97]. 2.3 Шифры Вернама и Плэйфэра, перестановки, машина Хагелина, “Энигма” В этом разделе мы кратко обсудим еще несколько криптосистем, не слишком углубляясь в их структуры. 2.3.1 Одноразовый щит Одноразовый щит, иногда также называемый шифром Вернама (по имени Г.С. Вернама — служащего американской компании А.Т.& Т., ко- торый ввел эту систему в 1917г.), представляет собой шифр Виженера, в котором длина ключа равна длине открытого текста. При этом ключевая последовательность должна строится совершенно случайным образом и использоваться только один раз. Интуитивно ясно, что получающаяся в таком случае система безусловно безопасна (или абсолютно стойка), что будет доказано в гл. 5. Эта криптосистема применяется в “горячей линии” между Москвой и Вашингтоном. Главным недостатком такой си- стемы является большая длина ключа, из-за чего система оказывается неудобной в большинстве приложений. 2.3.2 Шифр Плэйфэра Шифр Плэйфэра (1854г., назван по имени шотландца Л.Плэйфэра) использовался Британией во время Первой мировой войны. Он работает с биграммами. Сперва отождествляются буквы i и j. Получившиеся 25 букв алфавита расставляются по строкам матрицы К размером 5x5 сле- дующим образом. Ключевое слово выписывается по строкам, начиная с левого верхнего угла. В ключевое слово каждая буква должна входить нс более одного раза. В противном случае повторы придется опустить. Нс
30 Глава 2. Классические криптосистемы вошедшие в ключевое слово буквы выписываются вслед за ним в алфа- витном порядке. Например, ключевое слово “hieronymus” задает матрицу / h i е г о \ п у m u s а Ъ с d f д k I р q \ t v w х z / Биграмма (x,y) = (Kij,Kmjn), в которой x ф у, шифруется как если i 7^ m и j п, если i = m и j п, если i 7^ m и j = n, где вычисление индексов производится по модулю 5. Если же символы х и у в биграмме (ж, у) совпадают, то необходимо предварительно вставить между ними букву q и продолжить шифрование текста ...xqy.... 2.3.3 Шифры перестановок Принципиально иной способ шифрования называется перестановкой. Эта система разбивает текст на блоки одинаковой длины, например, дли- ны п, и применяет к каждому такому блоку фиксированную перестанов- ку а координат. Например, при п = 5 и а = (1,4,5,2,3) получается следующее шифрование: crypt ograp hical ... ytrcp rpgoa cliha ... Часто перестановка имеет геометрическую природу, как в случае так называемой столбцовой перестановки. Открытый текст записывается по строкам в матрицу заданного размера, а читается по столбцам, перестав- ленным в порядке, определяемом ключевым словом. Например, после отождествления букв a,b,...,z и чисел 1,2,..., 26 ключевое слово “right” указывает, что первым должен читаться 3-й столбец (буква “g” располо- жена в алфавите раньше других букв слова “right”), за ним 4-й, 2-й, 1-й, и наконец 5-й. Таким образом, открытый текст computing science has had very little influence on computing practice при шифровании с помощью матрицы 5 х 5 и ключа “right” сначала пи- шется по строкам, как показано ниже,
2,3. Шифры Вернама и Плэйфэра, перестановки, роторные машины 31 4 3 1 2 5 4 3 1 2 5 4 3 1 2 5 с о m P u У 1 i t t n g p г а t i n g s 1 e i n f c t i с е с i e n c 1 u e n c » - е h a s h e 0 n c 0 а d V e r m p u t i а затем читается no столбцам в порядке нумерации, в результате чего получается следующий шифртекст: mneav pgnse oiihd ctcea uschr iienu tnnet leuop yllem tfcoi ... Перестановки не изменяют частоты букв, но разрушают взаимосвязи между последовательными буквами открытого текста. Шифр Виженера и другие шифры замены действуют прямо противоположным образом. Поэтому часто эти системы комбинируют. Такие комбинированные крип- тосистемы принято называть произведениями шифров. Шеннон для обо- значения этих факторов воздействия криптопреобразований па откры- тый текст употреблял слова “confusion” и “diffusion” (“перемешивание” и “рассеивание”). Криптосистемы, в которых шифрование каждого символа открытого текста производится в зависимости от предыдущих символов, называют поточными шифрами (они обсуждаются в гл. 3). Криптосистемы, в ко- торых производится одновременное шифрование целого блока символов фиксированной длины, и шифрования таких блоков независимы друг от друга, называют блочными шифрами (они обсуждаются в гл. 4). Во время Второй мировой войны обе воюющие стороны применяли для шифрования так называемые роторные машины. Опишем основные идеи, заложенные в две из них. 2.3.4 Машина Хагелина Машина Хагелина (или С-36), изобретенная шведским инженером Бо- рисом Хагелином и использовавшаяся армией США, имеет 6 роторов, на которых располагаются штифты в количествах 26, 25, 23, 21, 19 и 17 штук. Каждый из этих штифтов приводится либо в активное, либо в пас- сивное положение, в зависимости от того, влево или вправо от ротора он выдвигается. После шифрования буквы, которое зависит от установки этих штифтов и положения вращающихся дисков, все 6 роторов повора- чиваются на одну позицию. Таким образом, в первоначальном положе- нии первый ротор окажется после шифрования 26-й буквы, а, например, шестой — после 17-й.
32 Глава 2. Классические криптосистемы Рис. 2.1. Машина Хагелина. Рис. 2.2. Шесть роторов машины Хагелина, каждый со своим числом позиций. Поскольку количества штифтов на роторах взаимно просты, мож- но считать машину Хагелина механическим вариантом криптосистемы Виженера с ключом длины 26 х 25 х 23 х 21 х 19 х 17 = 101405850. Чита- тель, интересующийся криптоанализом этой машины, может обратиться к разделу 2.3 в [ВекР82]2. 2Более подробное описание С-36 можно найти в *[Сало96]. — Прим, перев.
2.3. Шифры Бернама и Плэйфэра, перестановки, роторные машины 33 2.3.5 “Энигма” Рис. 2.3. “Энигма”. Рис. 2.4. Схематичное описание машины “Энигма”. Отражатель Электромеханическая машина “Энигма” (как называли ее англи- чане), использовавшаяся Германией и Японией, была изобретена А. Шербиусом в 1923 г. Она состоит из трех подвижных дисков — рото- ров и одного неподвижного — отражателя (см. рис. 2.4). При нажатии на клавишу с буквой электрический сигнал посылается в ту позицию перво- го ротора, которая этой букве соответствует. Из ротора сигнал выходит уже в другой позиции, зависящей от устройства электропроводки внутри ротора. Все три ротора делают одно и то же, но устройство электропро- водки внутри каждого из них свое. Внутри отражателя ток проходит от одного контакта до какого-то другого, тоже зависящего от внутренней
34 Глава 2. Классические криптосистемы электропроводки. Затем ток вновь проходит через три ротора в обрат- ном порядке и зажигает лампочку, которая и определяет шифрование исходной буквы. Одновременно с нажатием клавиши первый ротор поворачивается на одну позицию. После 26 поворотов первого ротора второй поворачивает- ся на одну позицию. После завершения вторым ротором полного пово- рота на одну позицию повернется третий. Ключ “Энигмы” состоит из ' i) выбора и порядка роторов, ii) их начального положения, iii) фиксированной начальной перестановки алфавита. Идею, на которой основан криптоанализ шифра “Энигмы”, можно найти в гл. 5 [Konh81]. 2.4 Задачи Задача 2.1. Следующая криптограмма о президенте Кеннеди (Kennedy) получена с помощью простой замены. Определите открытый текст. “rgjjg mvkto tzpgt stbgp catjw pgocm gjs” Задача 2.2. Дешифруйте следующий шифртекст, полученный при исполь- зований шифра Плэйфэра с ключом “hieronymous” (как в разд. 2.3.2). “erohh mfimf ienfa bsesn pdwar gbhah ro” Задача 2.3. Зашифруйте следующий текст, с помощью шифра Виженера с ключом “vigenere”. “who is afraid of Virginia woolf” Задача 2.4м. Рассмотрим криптограмму, полученную с помощью шифра Цезаря. Напишите программу в пакете “Mathematica” для поиска всех подстрок длины 5 в шифртексте, которые могли бы быть получены из слова “Brute”. Проверьте эту программу на тексте “xyuysuyifvyxi” из табл. 2.1. (См. также входную строку в примере 2.2).
Глава 3 Последовательности регистров сдвига 3.1 Псевдослучайные последовательности Внедрение логических схем во время и после Второй мировой вой- ны способствовало созданию полностью электронных криптосистем. Они оказались весьма практичными в том смысле, что были легки в реализа- ции и очень быстры. Но анализ их безопасности отнюдь не легок! Работа с логическими схемами часто приводит к алфавиту {0,1}. Имеются лишь две возможные перестановки (подстановки) на множестве {0,1}. Одна из них меняет местами оба символа. Это можно описать как прибавление 1 (по модулю 2) к обоим элементам. Другая перестановка оставляет сим- волы неизменными, что означает прибавление 0 (по модулю 2) к этим элементам. открытый текст nij mi Рис. 3.1. Двоичная криптосистема с псевдослучайной последовательностью {.s»}i>o- Так как шифр Бернама безусловно безопасен (абсолютно стоек), по не очень практичен, естественно возникает схема, изображенная на рис.3.1. Разумеется, желательно, чтобы последовательность {sj}j>o была слу- чайной, но машина с конечным числом состояний и детерминированным алгоритмом работы не может генерировать случайную последователь-
36 Глава 3. Последовательности регистров сдвига ность. В этой ситуации всегда порождается финально периодическая (ultimately periodic) последовательность (*[ЛидП9б]). Это наблюдение показывает, что (исключая начальный сегмент) данная схема есть спе- циальный случай криптосистемы Виженера. С другой стороны, можно попытаться генерировать последовательности, которые кажутся случай- ными, имеют длинные периоды и хорошие криптографические свойства. Справочными книгами по этой теории могут служить [Bek82], |Gol67] и [Ruep86]. [см. также *[ЛидН88] и *[ЛидП96] — ped.] Голомб [Gol67] сформулировал три постулата, которым должна удо- влетворять двоичная периодическая последовательность, чтобы назы- ваться псевдослучайной. Прежде чем привести их, введем необходимую терминологию. Определение 3.1 Последовательность {sj}j>o называется периодической с перио- дом р, если р — наименьшее натуральное число, для которого Si+p = Si при всех i > 0. Отрезок длины к есть подпоследовательность из {вг}г>о? состоящая из к идентичных символов, ограниченная иными символами. Если отре- зок начинается в момент t, то справедливы условия St-1 / St = St+i = ... = Si+fc-l st+k- Мы различаем следующие отрезки: к блок длины к : 0 11...1 0, к лакуна длины к : 100...0 1. Автокорреляция АС(к) периодической последовательности {«г}г>о с периодом р определяется формулой: AC(k)=(3.1) р где А(к) (соответственно, D(k)) обозначает число совпадений (соответ- ственно, несовпадений) на полном периоде между {sj}f>o и вторая последовательность есть последовательность {sj}j>o, сдвинутая влево на к позиций. Таким образом, Л(/с) = |{0 < i < р | Si = si+fc}|, D(fc) = |{0 < i < p | Si / si+fc}|.
3.1. Псевдослучайные последовательности 37 Заметим, что можно также написать АС = (2 • А{к) — р)/р. Пример 3.1 Рассмотрим периодическую последовательность с периодом р, за- данную ее первыми р элементами. С помощью функций Count, Length, Mod, RotateLeft и Table паке- та “Mathematica” легко вычисляются все значения автокорреляционной функции АС {к), 0 < к < р — 1. segment = <1, 1, 0, 1, О, О, О, О}; р = Length[segment]; Table[(2 * Count[Mod[ segment - RotateLeft[segment, k], 2], 0] - p) / p, k, 0, p - 1] II {1, 0, 0, 0, -1, 0, 0, 0} Если к кратно p, получаем A{k) — p, D{k) = 0, так что AC = 1. В этом случае говорят о внутрифазовой автокорреляции. Если р не делит к, то говорят о внефазовой автокорреляции. В этом случае значение АС лежит между —1 и 4-1. Определение 3.2 {Постулаты случайности Голомба) G1: Числа нулей и единиц на период равны настолько, насколь- ко это возможно, т.е. оба числа равны р/2, если р четно, и равны (р ± 1)/2, если р нечетно. G2: Половина отрезков в цикле имеют длину 1, четверть от- резков имеют длину 2, восьмая часть отрезков имеют длину 3 и т.д.; кроме того, половина отрезков данной длины — лакуны, другая половина — блоки. G3: Внефазовая автокорреляция АС {к) имеет одно и то же зна- чение для всех к. G1 утверждает, что нули и единицы встречаются приблизительно с одной и той же вероятностью. Их появления легко подсчитать с помощью функции Count пакета “Mathematica”. segment ={1, 1, 0, 1, 0, 0, 0, 0}; Count [segment, 0] Count [segment, 1] 5 3 G2 влечет, что после комбинации 011 символ 0 (приводящий к бло- ку длины 2) имеет ту же вероятность, что и символ 1 (приводящий к блоку длины > 3), и т.п. Таким образом, G2 говорит, что конкретные n-граммы встречаются с правильными частотами. Эти частоты можно вычислить с помощью функций Count, Length, Rotateleft, Table и Take пакета “Mathematica”:
38 Глава 3. Последовательности регистров сдв ига segment ={0, 1, 1, О, 1, О, О, О, 1, 1, О, О, О, 1, О, 1, 1}; р = Length[segment]; ngram = {I, О, 1}-; к = Length [ngram] ; Count[Table [Take [ RotateLeft[segment, i], k] == ngram, <i, p>] , True] II 3 Интерпретация постулата G3 более трудна. Это условие говорит, что число совпадений в данной последовательности и в ее сдвинутой версии не дает никакой информации о периоде последовательности, если сдвиг не кратен периоду. Похожая ситуация описывается в лемме 3.1, где такое сравнение позволяет определить длину ключа, использованного в шифре Виженера. В криптографических приложениях р слишком велико для такш о подхода. Лемма 3.1 Пусть {вг}?>о — двоичная последовательность с периодом р > 2, удовлетворяющая постулатам случайности Голомба. Тогда р нечетно и АС (к} принимает значение — 1/р, когда к не делится на р. Доказательство. Рассмотрим циклическую р х р-матрицу с верхней строкой so,si,... ,Sp-i. Подсчитаем двумя способами число всех совпа- дений за вычетом числа несовпадений между верхней строкой и всеми прочими строками. В силу постулата G3 построчный подсчет дает вклад р- AC(k) для каждой строки с номером г, 2 < i < р. В целом получается значение р(р — 1)АС'(/с). Теперь мы подсчитаем ту же сумму по столбцам, рассматривая число совпадений за вычетом числа несовпадений между всеми нижними клетками и верхней. Случай четного р В силу G1 вклад каждого столбца равен (р/2 — 1) — р/2 — —1, так как каждый столбец содержит в точности р/2 — 1 совпадений нижних клеток с верхней и в точности р/2 несовпадений. Сумма этих значений по всем столбцам равна — р. Приравнивая два значения суммы, получаем (р — Г)АС(к) = — 1. Однако из равенства (3.1) следует, что число р-АС(к) целое. Это невозможно, когда АС (к) = — 1/(р — 1), так как р > 2. Случай нечетного р Для (р + 1)/2 столбцов получаем вклад (р — 1)/2 — (р — 1)/2, равный О, а для (р —1)/2 столбцов — вклад (р —3)/2 — (р+1)/2, равный —2. Сле- довательно, значение суммы есть — (р — 1). Приравнивание этой суммы к р(р — 1)АС(к) дает АС(к) = —1/р. Хорошо известный критерий %2 и спектральный критерий [CovM67] дают способы проверки свойств псевдослучайности данной последовате- льности. Мы не будем обсуждать здесь эти методы. Заинтересованный
3.2. Линейные регистры сдвига 39 читатель отсылается к [Golo67], гл. IV, [Knut81] или [Knut69], гл. 3, или же к универсальному статистическому критерию Маурера [Мапг92]. Имеются также свойства криптографической природы, которым дол- жна удовлетворять последовательность {si}i>o на рис. 3.1. С1: период последовательности {sj}i>o должен быть очень большим (величиной порядка 1О50); С2: последовательность {si}j>o должна легко генерироваться; СЗ: знание части открытого текста и соответствующего шифртскста (атака с известным открытым текстом) не должно позволить крип- тоаналитику сгенерировать всю последовательность {sj}i>o- 3.2 Линейные регистры сдвига с обратной связью 3.2.1 (Линейные) регистры сдвига с обратной связью Регистры сдвига с обратной связью реализуют очень быстрый способ порождения бинарных (или двоичных) последовательностей. Их общий вид показан на рис. 3.2. Регистр сдвига с обратной связью (FSR — от feedback shift register) длины п имеет п ячеек памяти, значения которых совместно образу- ют (начальное) состояние (sq, si , •.., Sn-1) регистра сдвига. Функция / отображает {0,1}п в {0,1} и называется функцией обратной связи ре- гистра. Так как / является булевой функцией, она может быть легко построена из элементарных логических функций. После первого такта работы регистр сдвига выдаст «о и перейдет в состояние (si, S2,.. •, sn) где sn = /(sq, si,..., зп-1)- Продолжая та- ким образом, регистр сдвига генерирует бесконечную последователь- ность {«г}г>0-
40 Глава 3. Последовательности регистров сдвига Пример 3.2 Рассмотрим случай п = 3, когда f задается равенством /(so,-81, •82) = sqSi + S2- Исходя из начального состояния (sq, si, S2), можно лег- ко определить последующие состояния с помощью функций Mod, Do и Print пакета “Mathematica”'. Clear [f]; f[x_, y_, z_] := Mod[x*y + z, 2]; {s0, si, s2} = <0, 1 ,1>; Do [ {s0, si, s2> = {si, s2, f[sO, si, s2]}; PrintL{sO, si, s2}], {i, 1, 6}] {1,1-1} {1,1, 0} {1, 0,1} {0,1, 1} {1,1.1} {1.1. 0} В этом разделе мы изучим специальный случай линейной функции /: f(s0, ^1, • • • , Sn-l) = CqSq + C1S1 + . . . + Cn_iSn_i, где все Cj — двоичные цифры, а сложение выполняется по модулю 2. Общий вид линейного регистра сдвига с обратной связью (кратко LFSR) показан на рис. 3.3. Выходная последовательность {sj}j>o такого LFSR может быть опи- сана посредством начального состояния (sq, si,... , sn—1) и линейного ре- куррентного соотношения V—1 sk+n = / о *l=U k > 0, (3.2) или, эквивалентно, (3.3)
3.2. Линейные регистры сдвига 41 где Сп = 1 по определению. Пусть обозначает состояние в момент г, т.е. = (si, Si+i,..., Si+n-i). Имеется следующее, аналогичное (3.2), рекуррентное соотношение для последовательных состояний регистра: g(k+n) = ^2^ as^k+i\ к > 0. (3.4) Коэффициенты в (3.2) и на рис. 3.3 называются коэффициентами обратной связи регистра. Если с* = 0, то соответствующий переключа- тель на рис. 3.3 разомкнут, а если С{ = 1, то замкнут. Мы всегда будем предполагать, что со = 1. Следствием данного предположения является то, что любое состояние LFSR имеет не только единственное следующее состояние, что естественно, но и единственного предшественника. В са- мом деле, для любого к > 0 значение однозначно определяется по Sfc+i,..., S/c+n посредством (3.2). Позже (в теореме 3.22) мы докажем это свойство в более общей ситуации. Пример 3.3 При п = 4, со = ci = 1, С2 = сз = 0 мы получаем LFSR на рис. 3.4. Рис. 3.4. Пример LFSR при п — 4. Начальное состояние (1,0,0,0) дает следующий список последова- тельных состояний: {s0, si, s2, s3} = {1, О, О, О}; Do[{sO, si, s2, s3} = {si, s2, s3, Mod[sO + si, 2]}; PrintEi, " ", {sO, si, s2, s3}] , {i, 15}] II {1, 0, 0, 0} 1 {0, 0, 0, 1} 2 {0, 0, 1, 0} 3 {0, 1, 0, 0} 4 {1, 0, 0, 1} 5 {0, 0, 1, 1} 6 {0, 1, 1, 0} 7 {1, 1, 0, 1} 8 {1, 0, 1, 0} 9 {0, 1, 0, 1} 10 {1, 0, 1, 1} 11 {0, 1, 1, 1} 12 {1, 1, 1, 1} 13 {1, 1, 1, 0} 14 {1, 1, 0, 0} 15 {1, 0, 0, 0}
42 Глава 3. Последовательности регистров сдвига Заметим, что состояние в момент t = 15 идентично состоянию в момент t = 0, так что выходная последовательность {^г}г>о имеет период 15. Выходную последовательность регистра можно легко определить с помощью функций Table, Mod и Do пакета “Mathematica”: Clear [s]; {s[0], s[l], s[2], s[3]} = {1, 0, 0, 0}; s[j_] := Mod[s[j-4] + s[j-3], 2]; Table [s[j], {j , 0, 15}] II <1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1} Состояние называется нулевым, если все его компоненты равны 0. Так как для LFSR длины п существуют в точности 2п — 1 ненулевых со- стояний, а нулевое состояние всегда переходит само в себя, можно заклю- чить, что период выходной последовательности никогда не превосходит 2п - 1. 3.2.2 PN-последовательности Определение 3.3 PN-последовательность — это выходная последовательность LFSR длины п, имеющая период 2П — 1. Если LFSR длины п не пробегает циклически все 2п — 1 ненулевых состояний, то он определенно не порождает PN-последовательности1. В качестве следствия получаем следующее утверждение. Лемма 3.2 LFSR длины п, порождающий PN-последовательность {si}i>o, циклически пробегает все 2П — 1 ненулевых состояний. Любая ненулевая выходная последовательность этого регистра есть сдвиг последовательности {si}i>o- Мы хотим классифицировать все LFSR, порождающие PN-последо- вательности. С этой целью мы сопоставим регистру с коэффициентами обратной связи со, ci,..., Сп-1 его характеристический многочлен f(x), определяемый следующим образом: /(□?) = Со + CiX + • • . + Cn-iT72-1 + хп = о СгЖг, (3.5) где Сп = 1 по определению и cq = 1 по предположению. 1PN — от “pseudo-noise”. К сожалению, перевод этого слова на русский язык “псевдослучайная”, как и для “pseudo-random” из предыдущего подраздела. В русской литературе PN-последовательности обычно называют “последовательностями макси- мального периода”.— Прим. ред.
3.2. Линейные регистры сдвига 43 Определение 3.4 Пусть f = Тл=осгХг. Тогда «(/) = {{Si}i>o|{Sf}i>o удовлетворяет (3.2) Иначе говоря, Q(/) есть множество всех выходных последовательно- стей LFSR с характеристическим многочленом f(x). Лемма 3.3. Пусть f — характеристический многочлен LFSR длины п. Тогда Q(/) — бинарное векторное пространство размерности п. Доказательство. Так как соотношение (3.2) линейно, очевидно, что Q(/) — векторное пространство. Каждая {sj}j>o из П(/) однозначно определяется первыми п членами Sq, Si, • • , Sn-i (начальным состояни- ем), так что размерность П(/) не больше n. С другой стороны, п различ- ных последовательностей, начинающихся с i п—i— 1 бо^То 1 боГ“В, О < г < п— 1, очевидно, линейно независимы. Поэтому размерность П(/) не меньше п. Пусть / — многочлен степени п, скажем, /(□?) = 52Г=о гДе сп 7^ 0. Взаимный многочлен f* определяется равенством /*(т) = xnf(l/x) = CQXn +С1Хта-1 + . . . +Cn-1T + Cn = о Сп-гХг. (3.6) Сопоставим последовательности {«г}г>о степенной ряд, называемый по- рождающей функцией последовательности: S(x) = 22°° siX‘. (3.7) 'г=0 Вместо записи {вг}<>о G ^(У) будем также использовать запись S(x) G G П(/). Мы знаем, что S(x) однозначно определяется начальным состо- янием (sq, si,..., sn-i) и характеристическим многочленом f(x). В сле- дующей теореме эта зависимость делается более явной. Теорема 3.4 Пусть {sj}j>o € П(/), где / задан равенством (3.5), a S(x) — порождающая функция последовательности {•‘»г}г>о- Тогда S(t)/*(x) — многочлен степени, меньшей п. Доказательство.
44 Глава 3. Последовательности регистров сдвига 'YLi—Qcn—lsj—l^x^ — Замечание. Из приведенного доказательства следует, что £(ж) = = ад(ж)//*(ж), где ад(ж) = 527=0 ^52/—л cn-lsj—l^ — многочлен степе- ни меньше п, коэффициенты которого зависят от начального состояния и характеристического многочлена. Отметим также, что отображение S(x) н-» 5'(ж)/*(ж) инъективно, так как /*(ж) 0. Пример 3.4 Рассмотрим LFSR с п = 5, f(x) = 1 + ж2 + ж5 и возьмем в качестве начального состояние (1,1,0, 1,0). Многочлен и(х) молено вычислить с помощью функции PolynomialMod: <с[0], с[1], с [2], с[3], с [4], с [5]} = <1, 0, 1, 0, 0, I}; {s[OJ, s[l], s[2], s[3], s[4]} = {1, 1, 0, 1, 0}; 4 j u = PolynomialMod[ 52 52 c [5-1] s [j-1] xJ , 2] j=o 1=0 II 1 + X + x4 Чтобы проверить теорему 3.4 do некоторого члена xL в S(x), вос- пользуемся соотношением (3.2) для вычисления всех Si вплоть до L-го. Здесь применяются функции Mod, Print и PolynomialMod: {с[0], с[1], с [2], с[3], с [4], с [5]} = {1, 0, 1, 0, 0, 1}; <s[0], s[l], s[2], s[3], s[4]} = <1, 1, 0, 1, 0}; 5 fstar = 52c[5-i]x2; z=0 L = 60; s[i_J := s [i] = Mod[s[i-5] + s[i-3], 2]; L s = 52 s ; Print [s] ; i=0 PolynomialMod[S*fstar, {xI/, 2}] 14-ж4-ж34-ж54-ж104-ж134-ж154-ж164-ж194-ж204-ж214-ж224-ж234-ж27 + ж284- 4-ж30 4- ж31 + ж32 + ж34 + ж36 + ж41 + ж44 + ж46 + ж47 4- ж50 4- ж51 4- ж52 4- ж53 4- +ж54 + ж58 + ж59 II 1 + X + X4 Выход действительно тот же, что и выше.
3.2. Линейные регистры сдвига 45 Следствие 3.5 Щ/) = degree(u(a;)) < n > . Замечание. Запись S(x) = u{x)/f*(x) означает то же самое, что и S(t)/*(x) = u(x). Доказательство. Из теоремы 3.4 и замечания выше следует, что каждый член из П(/) можно записать в виде и(ж)//*(ж) с degree(u(x)) < < п, причем многочлен и(х) — единственный. Это доказывает включе- ние С . С другой стороны, по лемме 3.3 мощность П(У) равна 2П, и имеется также в точности 2п бинарных многочленов и(х) степени < п. Теперь легко доказать следующую лемму. Пусть нок[/, д\ обозначает наименьшее общее кратное многочленов / и д. Лемма 3.6 Пусть /ид — (характеристические) многочлены, {sf}i>o £ G Q(/), {ti}i>0 е П(р). Тогда {Si + ti}i>0 e Q(hok[/,#]). Доказательство. Положим h = нок[/, р] nh = a- f = b-g. Пусть S(x) и Т(х) — порождающие функции последовательностей {sj}z>o и {^г}г>о соответственно. Следствие 3.5 влечет, что S(x) = u(x) / f* (х) и Т(х) = v(x)/g*(x)1 где degree(u(a;)) < degree(/(a?)) и degree(v(a?)) < degree(p(a?)). Поскольку . _z x u(x) v(x') a*(x}u(x) b*(x}v(x) S(x) + T[x) = 4—-^7—r = . . . + , , — f*(x) g*(x) a*(x)f*(x) b*(x)g*(x) a*(x)u(x) + b*(x)v(x) h* (ж) и как «*(ж)и(ж), так и b*(x)v(x) имеют степени меньше, чем degree(/i(x)), получаем S(x) +Т(ж) G П(/г). 3.2.3 Какие характеристические многочлены задают PN-последовательности? Периодом2 многочлена / при условии /(0) 0 называют наименьшее положительное т, такое, что /(ж) делит xm — 1, т.е. наименьшее поло- жительное т со свойством хт = 1 (mod /(ж)). Оно вполне определено, 2Обычно это число называют порядком (order) многочлена.— Прим. ред.
46 Глава 3. Последовательности регистров сдвига ибо последовательность степеней х, приведенных по модулю /(ж), явля- ется периодической. В самом деле, если хг = х^ (mod /(ж)) и 0 < i < j, то также жг-1 = ж-7-1 (mod /(ж)), поскольку нок(ж,/(ж)) = 1. (Одно- член х имеет мультипликативный обратный по следствию В. 14, поэтому можно делить на х.) Повторяем этот процесс, пока не получим 1 = xJ~l (mod /(ж)). Пример 3.5 Пусть f(x) = 1 + ж4 + ж5. Его период можно вычислить с помощью функций While и PolynomialMod пакета “Mathematica”. Именно, начи- ная с х (испытывая тп = 1), вычисляем последовательные степени х, умножая предыдущую степень на х (что соответствует циклическо- му сдвигу), затем приводим результат по модулю f(x), пока не полу- чим на выходе 1. f = 1 + х4 + х5; m = 1; u = х; While[u != 1, u = PolynomialMod [ x*u, {f, 2}; m = m + 1] ; m II 21 Из теоремы В.35 следует, что бинарный неприводимый многочлен 9п_1 1 степени п делит х — 1, а потому период т такого многочлена делит 2п — 1. (Это наблюдение можно использовать для более эффективного вычисления периода многочлена. Однако мы не будем сейчас обсуждать эту технику. См. конец примера 8.2.) Лемма 3.7 Пусть {sj}i>o € Q(/), где / — многочлен степени п и периода ш, причем /(0) 0. Тогда период последовательности {si}i>o делит т. Доказательство. Запишем хт — 1 = /(ж)^(ж). Переход к взаимным многочленам дает хт — 1 = /*(ж)</*(ж). По следствию 3.5 существует такой многочлен и(х) степени меньше п, что S(x) = ^-= = ^9*(х) = 2т /*(ж)^*(ж) 1-ж™ k v А 7 Так как degree(и(ж)<7*(ж)) < degree(/*^)</*^)) = degree(xm — 1) = ш, ясно, что период S(x) должен делить т. Лемма 3.8 Пусть {si}г>о С= О(/), где f — неприводимый многочлен степени п и периода т. Тогда последовательность {si}i>o также имеет период т.
3.2. Линейные регистры сдвига 47 Доказательство. Пусть {«г}г>о имеет период р. По лемме 3.7 р делит т. Положим S(p\x) — Six1. Отсюда S(x) = (x)(l + хр + х2р + ...) = 5<₽)(ж)/(1 - ж"). С другой стороны, S(x) = u(x)/f*(x) по следствию 3.5. Приравнивая эти выражения, получаем S^\x)f\x) = u(x)(x” - 1), откуда (5w(x))*/(^) = u*(x')(xp - 1). Так как /(ж) неприводим и имеет степень п, a degree(u{x)} < п, получаем, что f(x) делит хр — 1. Поэтому период т многочлена /(.г) должен дели ть р. Таким образом, р = т. Пример 3.6 Рассмотрим неприводимый многочлен f(x) = 1 + х + х2 4- х3 + х4, имеющий период 5, так как (х — 1)/(х) = х5 — 1. По лемме 3.8 выходные последовательности из Q(/) также имеют период Б, что может быть легко проверено: {sO, si, s2, s3} = {1, 1, О, О}; Do[{sO, si, s2, s3} = {si, s2, s3, Mod[sO + si + s2 + s3, 2]}; Print[i, " ", {sO, si, s2, s3>] , {i, 51] II {1, 1, 0, 0} 1 {1, 0, 0, 0} 4 {0, 1, 1, 0} 2 {0, 0, 0, 1} 5 {1, 1, 0, 0} 3 {0, 0, 1, 1> Есть окольный путь нахождения неприводимого многочлена степени п — разложить ж2"-1 — 1 с помощью функции Factor из “Mathematica”: п = 5; Factor [х2"”1 - 1, Modulus — > 2] (1 + ж)(1 + ж2 + ж5)(1 + ж3 -Т ж5)(1 + х -Т ж2 + ж3 + ж5) (1 -Ь х + х2 -Т х4 + т°)(1 {- х -Т х3 -Т х4 + ж5)(1 4- х2 + х3 + х4 4- ж5) В В пакете “Mathematica” можно найти неприводимый многочлен над Fp, р простое, с помощью функции IrreduciblePolynomial, для чего пред- варительно загружается пакет Algebra^initeFields1.
48 Глава 3. Последовательности регистров сдвига << Algebra*FiniteFields* р = 2; deg = 11; IrreduciblePolynomial[х, р, deg] || 1 + х9 + X11 Лемма 3.9 Пусть {si}i>o _ PN-последовательность, порожденная LFSR с характеристическим многочленом /. Тогда f неприводим. Доказательство. Запишем / = /1/2, где Д неприводим и имеет степень ni > 0. По следствию 3.5 1/Д (ж) G Q(/i), так что по лемме 3.7 и теореме В.35 период последовательности 1/Д*(ж) делит 2П| — 1. С другой стороны, 1//*(ж) = /2 (ж)//*(ж) П(/) и по лемме 3.2 l/Д' (ж) - циклический сдвиг последовательности {sj}z>o и поэтому име- ет период 2п — 1. Это возможно, только если п = П|, т.е. если /(ж) равен неприводимому делителю Д(ж). Пример 3.7 Рассмотрим f(x) = (1 + ж + ж2)(1 + ж + ж3) = 1 + ж4 + ж5. Легко проверить, что 1 + ж+ж2 делит х3 — 1, а 1 + ж-Ьж3 делит х7 —1. Поскольку числа 3 и 7 взаимно просты, f(x) делит ж21 — 1. Отсюда следует., что период камсдой выходной последовательности делит 21. Это моэ/сно проверить для различных начальных состояний следующим образом. {s0, si, s2, s3, s4} = {1, 0, 0, 0, 0}; Do[{sO, si, s2, s3, s4} = {si, s2, s3, s4, Mod[sO + s4, 2]}; Print[i, " ", {s0, si, s2, s3, s4}] , {i, 21}] || {1, 0, 0, 0, 0} 1 {0, 0, 0, 0, 1} 12 {0, 1, 0, о, 1} 2 {0, 0, 0, 1» 1} 13 {1, 0, 0, 1, 1} 3 {0, 0, 1, 1, 1} 14 {0, 0, 1, 1, 0} 4 {0, 1, 1, 1» 1} 15 {0, 1, 1, о, 0} 5 {1, 1, 1, 1, 1} 16 {1, 1, 0, 0, 0} 6 {1, 1, 1, 1, 0} 17 {1, 0, 0, 0, 1} 7 {1, 1, 1, 0, 1} 18 {0, 0, 0, 1, 0} 8 {1, 1, 0, 1, 0} 19 {0, 0, 1, 0, 0} 9 {1, 0, 1, 0, 1} 20 {0, 1, 0, 0, 0} 10 {0, 1, 0, 1, 0} 21 {1, 0, 0, 0, 0} 11 {1, 0, 1, о, 0} Читатель может испытать начальное, состояние (1, 1, 1, 0, 0) и по- смотреть, каков период выходной последовательности. Эта последова-
3.2. Линейные регистры сдвига 49 телъность порождается также LFSR с характеристическим много- членом 1 + х + х3 и начальным состоянием (1,1,1). Теперь мы готовы доказать главный результат этого подраздела. На- помним читателю определение примитивного многочлена / (степени п): это неприводимый многочлен с тем свойством, что х является прими- тивным элементом в GF(2)[x]/(/(x)). Это непосредственно переводится в эквивалентное свойство: f(x) имеет период 2п — 1. Теорема 3.10 Ненулевая выходная последовательность LFSR с характеристи- ческим многочленом /(х) тогда и только тогда является PN- последовательностью, когда многочлен /(х) примитивен. Доказательство. Пусть /(х) имеет степень п. ==> Пусть {sf}i>o Е П(/) является PN-последовательностью. Из лем- мы 3.9 следует, что /(х) неприводим. В свою очередь, лемма 3.8 влечет, что /(х) должен иметь период 2п — 1, что означает его примитивность. <= Если /(х) примитивен, то он неприводим. По лемме 3.8 имеет тот же период, что и /(х), т.е. 2п — 1. Отсюда следует, что {.ьд};>о PN-последовательность. и “Mathematica” находит примитивный многочлен степени п над Fp по- средством функции Ficldlrreducible. п = 5; р = 2; Fieldlrreducible[GF[р, п] , х] II 1 + х3 + х5 Проверим, что этот многочлен действительно определяет PN-после- дователыюсть. {sO, si, s2, s3, s4} = {1, 0, 0, 0, 0}; Do[{sO, si, s2, s3, s4} = {si, s2, s3, s4, Mod[sO + s3, 2]}; Print[i, " ", {s0, si, s2, s3, s4}] , {i, 31}] || {1, 0, 0, 0, 0} 1 {0, 0, 0,0, 1} 2 {0, 0, 0, 1, 0} 3 {0, 0, 1, 0, 1} 4 {0, 1, 0, 1, 0} 5 {1, 0, 1, 0, 1} 6 {0, 1, 0, 1, 1} 7 {1, 0, 1, 1, 1} 8 {0, 1, 1, 1, 0} 9 {1, 1, 1, 0, 1} 10 {1, 1, 0,1, 1} 17 {0, 1, 1, 1, 1} 18 {1, 1, 1, 1, 1} 19 {1, 1, 1, 1, 0} 20 {1, 1, 1, 0, 0} 21 {1, 1, 0, 0, 1} 22 {1, 0, 0, 1, 1} 23 {0, 0, 1, 1, 0} 24 {0, 1, 1, 0, 1} 25 {1, 1, 0, 1, 0} 26 {1, 0, 1, 0, 0}
50 Глава 3. Последовательности регистров сдвига 11 {1, О, 1, 1, 0} 12 {О, 1, 1, 0, 0} 13 {1, 1, О, 0, 0} 14 {1, О, О, О, 1} 15 {О, О, О, 1, 1} 16 {0, 0, 1, 1, 1} 27 {О, 1, О, 0, 1} 28 {1, О, О, 1, 0} 29 {О, О, 1, 0, 0} 30 {0, 1, О, 0, 0} 31 {1, О, О, 0, 0} Чтобы найти все примитивные многочлены степени п, можно раз- ложить многочлен Q(2n-1)(a?) деления круга (см. определение В.19). С помощью функций Factor и Cyclotomic пакета “Mathematica” это дости- гается следующим образом. р = 2; m = 6; n = рт - 1; Factor[Cyclotomic[n, х], Modulus — > 2] (1 + х + ж6)(1 4- х + ж3 + ж4 + ж6)(1 4- ж5 4- ж6) (1 4- ж 4- ж2 4- ж5 4- ж6)(1 4- ж2 4- ж3 4- ж5 4- ж6)(1 4- ж 4- ж4 4- ж5 4- ж6) Приводимое ниже следствие прямо вытекает из теорем 3.10 и В.40. Следствие 3.11 Существуют <р(2п — 1)/п различных LFSR длины п, порождаю- щих PN-последовательности. Здесь (р — функция Эйлера (опре- деление А.6). Более или менее экспоненциальный рост функции <р(2п — 1)/п уже для умеренных значений п не дает криптоаналитику возможности угадать правильный примитивный многочлен или исчерпывающе проверить их все. С помощью функции EulerPhi пакета “Mathematica” это легко уви- деть. п = 100; EulerPhi[2П - 1]/п II 5707676340000000000000000000 3.2.4 Альтернативное описание Q(/) для неприводимого / Мы решим рекуррентное соотношение (3.2) в случае, когда соответ- ствующий характеристический многочлен /(ж) = неприводим. Это включает, конечно, случай примитивного /, для которого, как мы знаем, соответствующий LFSR выдает PN-последовательность. Последуем стандартному математическому методу решения линей- ных рекуррентных соотношений. Подстановка Sj = A-а3 > 0, в = = J2i=0 Cisk+i приводит к уравнению А • ак+п = У”"1 а • А • ak+i.
3.2. Линейные регистры сдвига 51 Здесь Ли ос — элементы расширения поля GF(2); это расширение мы ско- ро введем. Разделив наше уравнение на А • ак, получим ап = т.е. /(«) = 0. Изучим более детально случай неприводимого /. Поле Галуа GF(2n) = GF(2)[Д/(/(ж)) (см. теорему В.16) содержит корень многочле- на /. Обозначив его через ос, заметим, что GF(2") = { щсг щ Е GF(2), 0 < i < п вместе с обычным покоэффициентным сложением и регулярным прави- лом умножения (см. (В.З) и (В.4)), но степени а с показателями > п всегда приводятся к выражениям степени < п посредством соотноше- ния ап = Cia1 (как показано в примере В.5, где вместо символа а использована буква х). Пример 3.8 Рассмотрим f(x) = 1+т+т4, и пусть а — корень f(x), так что а4 = = 1 + а. Сложение элементов 1 + ос + оА и ос + ос2 в GF(2)[x]/(/(.t)) дает 1 + а2 + а3. Их умножение дает ос + а3 + а4 + а5, что равно (а+1)/(а) + (1 + а+'а2+о!3); поэтому результатом будет 1 + а + а2 + а3. Все это можно вычислить с помощью функции PolynomialMod пакета, “Mathematica”: i = 1 + a + a4; PolynomialMod[(1 + a + a3) + (a + a2), <f, 2}] PolynomialMod[(1 + a + a3) * (a + a2), <f, 2}-] II 1 + a2 + a3 II 1 + a + a2 + a3 Лемма 3.12 Пусть f — бинарный неприводимый многочлен степени п и а — корень f в GF(2n). Далее, пусть L — нетривиальное линейное отображение из GF(2n) в GF(2). Тогда П(/) = {{L(A <?)},->о|а е GF(2n)}- Доказательство. Мы должны проверить несколько фактов. i) Последовательность {sj}j>o = {£(-4 • ocJ)}j>o, очевидно, является бинарной, поскольку L отображает GF(2n) и GF(2). ii) Последовательность {sj}j>o удовлетворяет соотношению (3.2). Что- бы увидеть это, проверим эквивалентное условие (3.3). Линейность L и соотношение f(oc) = = 0 влекут С4 “fe+i) = L(A •ak (ЕГ=0 ^Д) = =°-
52 Глава 3. Последовательности регистров сдвига iii) Как мы сейчас покажем, все 2П выборов А Е GF(2n) приводят к различным бинарным решениям соотношения (3.3). По лемме 3.3 они должны составлять все элементы в Q(/). Допустим, что последовательности {£(А • a3 )}j>o и {L(B • а-7)Ъ>о идентичны. Из равенств L{A-a3) = L(B • a3), j > 0 и линейности L выте- кает, что L{{A—B}-a3} = 0 при 0 < j < п. Однако элементы 1, а,, ап-1 образуют базис в GF(2n), так как / неприводим. Линейность L влечет L((A — В)= 0 для любого элемента из GF(2n). Так как отображение L нетривиально, заключаем, что А = В. В качестве нетривиального линейного отображения L из GF(2n) в GF(2) удобно брать функцию следа Тг, введенную в задаче В.16. Альтер- нативой является проекция элемента сцсА на его свободный член «о- Пример 3.9 Возьмем неприводимый многочлен f{x) — т4 + ж+1 степени 4 (он да- же примитивен), и пусть а — корень f(jx), так что /(а) = 0. Функция следа задается равенством Тг(х) = х + ж2 + ж4 + ж8. Любой элемент А Е GF(24) = определяет единственную бинарную последовательность {sj]j>o, где Sj = Тг(А • а3). Ниже мы берем А = 1 + а + а2. Выходная последовательность, соответствующая произвольному значению А, может быть вычислена с помощью функций Polynomial- Mod и Table пакета “Mathematica”: «i e GF(2),0 < i < з] п = 4; f = 1 + a + a4; А = 1 + a + a2; n— 1 Tr[x_] := £x2t; i=0 s[j_] := PolynomialMod[Tr[A * aJ] , , 2}]; Table {j , 0, 2n - 2}] II {1, 1, 0, 1, 0, 1, о, 0, 0, 0, 1, 0, 0, 1, 0} 3.2.5 Криптографические свойства PN-последовательностей Здесь мы исследуем, в какой степени PN-последовательности удовле- творяяют постулатам случайности G1-G3 Голомба. После этого прове- рим криптографические требования С1-СЗ. Как всегда, п обозначает длину LFSR. Ad G1. По лемме 3.2 каждое ненулевое состояние встречается в точ- ности один раз на период. Самый левый бит каждого состояния будет следующим выходным битом. Поэтому число единиц на период равно
3.2. Линейные регистры сдвига 53 2те~1, а число нулей на период равно 2П-1 — 1, поскольку нулевое состо- яние не встречается. Ad G2. Имеется 2п~~^к+^ состояний, у которых самые левые к + 2 к к компонент имеют вид 0 11... 1 0, соответственно, 1 00 ... О 1. Таким обра- зом, блоки и лакуны длины к < п —- 2 встречаются в точности 2П~^+2^ раз на период. п—1 Состояние 0 11... 1 встречается только один раз. Вслед за ним идет п— 1 состояние из одних единиц3, за которым, в свою очередь, идет 11... 1 0. Поэтому имеется один блок длины п и нет блоков длины п — 1. Анало- гично, имеется одна лакуна длины п — 1 и нет лакун длины п. Ad G3. Если {sj}j>o € fl(/), то и {si+fcb>o О(/) по лемме 3.2. Из линейности О(/) следует тогда, что и {sj + Si+fc}j>o 6 П(/). Число совпадений на период между {«г}г>о и {^гч-А:}г>о равно числу нулей в одном периоде последовательности {«Si + Sf+fc}j>o, которое, как обсужда- лось выше, равно 2п~1 — 1. Аналогично, число несовпадений равно 2П-1. Поэтому внефазовая автокорреляция АС(/с) равна — 1/(2™ — 1) для всех к, 1 < к < 2п - 1. Можно утверждать, что постулаты случайности Голомба выполняют- ся для PN-последовательностей наиболее удовлетворительным образом. Проверим теперь С1-СЗ. Ad Cl. Так как период PN-последовательности, порожденной LFSR длины п, равен 2П — 1, можно легко получать достаточно большие пери- оды. Например, при п = 166 период будет около 1О50. Ad С2. Линейные регистры сдвига крайне просты в реализации. Ad СЗ. PN-последовательности весьма небезопасны! В самом деле, знание 2п последовательных битов, скажем, Sk, Sfc+i, • • •, в^+гп-ь позво- ляет криптоаналитику однозначно определить коэффициенты обратной связи co,ci,... ,сп-1, а потому — и всю последовательность Это вытекает из матричного уравнения Sfc+l Sk+2 • • • sk+n—1 sk+n \ sk+n—1 sk+2n—2 / sk+n sfc+n+l \ sk+2n—l (3-8) Эта система, как мы сейчас покажем, имеет единственное решение. Ес- ли существуют п последовательных линейно зависимых состояний LFSR, т.е. некоторые п последовательных состояний порождают подпростран- ство размерности < п — 1, то — ввиду (3.4) — это же будет верно для любых п последовательных состояний, что, однако, противоречит линей- ной независимости состояния (0,0,... ,0,1) и его п —- 1 последователей. 3Поскольку /(1) 0.— Прим. ред.
54 Глава 3. Последовательности регистров сдвига Поэтому любые п последовательных состояний (в частности, п строк в матрице выше) линейно независимы. Значит, можно легко определить неизвестные коэффициенты обратной связи со, ci, ..., cn-i. Пример 3.10 Допустим, что мы знаем следующую цепочку длины 10 : 1,1,0, 1,1,1, 0,1,0,1. Предполагая, что п — 5, мы можем решить систему (3.8) с помощью функции LinearSolve из “Mathematica”: II «О, W, Ш, {0J, <0В Коэффициенты обратной связи: со = 1, ci = 0, С2 = 1,сз = 0, щ = 0. Это легко можно проверить с помощью функций Table, Mod и Do из пакета “Mathematica”: п = 5; <с[0], с [1] , с [2], с [3] , с [4]} = {1, {sLO], s[l], s[2], s [3] , s[4]J = {1, n— 1 Do[s[k] = Mod E c [i] * s[k-n+i],2], i—0 Table Es Ek], <k, 0, 2n - 2}] 0, 1, 0, 0}; 1, 0, 1, 1}; {k, n, 2nJ] ; <1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0} Конечно, в общем случае длина п используемого LFSR не известна. Мы рассмотрим эту проблему в подразделе 3.3.1 в более общей ситуа- ции. Если известна лишь цепочка из 2п — 1 последовательных битов PN- последовательности, то коэффициенты обратной связи нс обязательно единственны, как ниже показано в примере для п = 4 и цепочки 1101011. Это остается верным, даже если мы используем дополнительную инфор- мацию о том, что eg = 1. Ниже мы добавили функцию NullSpace, чтобы показать зависимость в линейных соотношениях. NullSpaceEm, Modulus — > 2] LinearSolve[m, b, Modulus — > 2]
3.3. Нелинейные алгоритмы 55 || «О, 1, О, 1}} II {Ш, Ш, W, {ОН Получаем решения (1,1,0,0) + А(0,1,0,1), где Л е {0,1}. Так как последовательности, генерируемые линейными регистрами сдвига, не удовлетворяют требованию СЗ, следующим шагом должно быть изучение нелинейных регистров сдвига. Однако, поскольку о PN- последовательностях известно уже много, вполне естественно попытать- ся комбинировать линейные регистры нелинейным способом так, чтобы тюдучать псевдослучайные последовательности с хорошими криптогра- фическими свойствами. 3.3 Нелинейные алгоритмы 3.3.1 Минимальный характеристический многочлен Как уже упоминалось в начале разд. 3.1, любой детерминированный алгоритм, реализуемый машиной с конечным числом состояний, будет генерировать финально периодическую последовательность {<?г}г>о, ска- жем, периода р. Это означает, что {si}i>o, исключая начальную часть, будет порождаться тривиальным образом посредством LFSR с характе- ристическим многочленом 1 + Поэтому последовательность, которая, возможно, порождена нелинейным методом, может также порождаться LFSR (если исключить конечную начальную часть). Если эта начальная часть не пуста, не всякое состояние имеет единственного предшествен- ника, и выходная последовательность определенно не будет иметь мак- симального периода. Мы рассмотрим эту проблему в теореме 3.22. Пока же мы будем предполагать, что выходная последовательность периодич- на с самого начала. Проведенное обсуждение оправдывает следующее определение. Определение 3.5 Линейной сложностью (или линейным эквивалентом) пери- одической последовательности называется длина кратчайшего LFSR, порождающего эту последовательность. Следующие две леммы нужны для доказательства явных утвержде- ний о линейной сложности периодических последовательностей. Лемма 3.13 Пусть h и f — характеристические многочлены LFSR длин ?п и п соответственно. Тогда ЩЬ) Q Q(/) Ф=> h\f. Доказательство. => Так как 1//г* G fl(7i) С £!(/), из следствия 3.5 вытекает, что существует многочлен и(х) степени < п, такой, что
56 Глава 3. Последовательности регистров сдв ига 1//г*(ж) = м(ж)//*(ж). Отсюда /*(ж) = h*(x)u(x) и поэтому /(х) = = 7i(x)iz*(x), что означает h\f. <= Запишем /(ж) = a(x)h(x), где degree(a(x)) = п — тп. Тогда то же следствие 3.5 влечет: ад={/й degree(v(x)) < т a*(x)v(x) a*{x)h*{x} degree(v(x)) < m degree(a*(x)v(x)) < n > C Q(/). Пример 3.11 Последовательность {«г}г>о = 100101110... является выходной по- следовательностью LFSR с h(x) = 1 + х + х2 и начальным состоянием (1,0,0); это легко проверить: п = 3; <s[0], s[l], s[2]J = {1, 0, 0}; {с[0], с[1], c[2]J = {1, 1, 0}; п—1 Dots [к] = Mod [ с Ei] * s[k-n+i], 2], {к, n, 2nJ] ; i=0 Table[s[k], <k, 0, 2n}] || {1, 0, 0, 1, 0, 1, 1, 1, 0} Однако, поскольку h(x)(l + x + ж2) = 1 + x4 + x5, ту же выходную^ последовательность можно получить из LFSR с характеристическим многочленом f(x) = 1 + х4 + х5 (см. также пример 3.7). В качестве начального состояния следует взять первые пять членов из {.s\}i>o- п = 5; {s[0], s[l], s[2], s[3], s[4]J = {1, 0, 0, 1, 0}; {c[0], c[l], c[2], c[3], c[4]J = {1, 0, 0, 0, 1}; n—1 Do [s [k] = Mod[22c[i] * s[k-n+i], 2], {k, n, 2nJ] ; i=0 Table[s[k], {k, 0, 2nJ] {1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0} Пусть {si}i>o 6 fi(/) для некоторого /. Предположим, что нужно отыскать многочлен h наименьшей степени, такой,что {sj}z>o € Лемма 3.13 предлагает проверить делители /. Следующая лемма говорит нам, когда проверять делители f не нужно.
3.3. Нелинейные алгоритмы 57 Лемма 3.14 Пусть {st}i>0 G Q(/) и S(x) = u(x)/f*(x). Тогда h f[{si}i>0 G Q(/i)] <=> нод(и(ж), /*(ж)) 1. Доказательство. Пусть d(x) делит нод(к(х), /*(ж)). Тогда = u(x) = u(x)/d(x) k J /*(ж) f*(x)/d(x) и поэтому {«г}г>о € Q(//(/*). Это влечет существование собственного делителя h многочлена /, а именно f /d*, такого, что {si}г>0 £ Q(7l). Доказательство в обратную сторону точно такое же. Теорема 3.15 Пусть {«г}г>о — бинарная периодическая последователь- люстщдпериода р. Пусть первые р членов последовательнос- ти {<Sj}j>o задаются равенством S^(x) = sq + s±x + ...+ +sp-ixp~^. Тогда существует единственный многочлен т(х) со следующими двумя свойствами: i) {Mi>o G Q(m), ii) V/г [{si}j>o G Q(/i) ==> m|/i]. Взаимный многочлен m*(x) к m(x) дается равенством */ ч ________1 — xp_____ Ш НОд(5(р)(ж), 1 — xp) ' Многочлен m(x) называется минимальным характеристиче- ским многочленом последовательности {si}i>o- Пример 3.12 Пусть {зДг>о имеет период 15 и S^15\x) = 1 + ж4 + ж7 + ж8 * + ж10 II + +ж12 + ж13 + х1^. Тогда нод(ж15 — 1, S^15) (ж)) = (1+ ж)(1+ж + ж2)(1+ ж + ж2+ж3+ ж4)(1 + ж + ж4). Таким образом, т*(ж) = (ж15 — 1)/нод(ж15 — 1, S^15)(ж)) = 1 + ж3 + ж4 и поэтому тп(ж) = 1 + ж + ж4. На самом деле данная б'(ж) является выходной последовательностью LFSR на рис. 3.4. Эти вычисления можно выполнить с помощью функций Polyno- mialGCD, PolynomialQuotient и PolynomialMod пакета “Mathematica”. р = 15; S = 1 + х4 + х7 + х8 + х10 + х12 + х13 + х14; g = PolynomialGCP [S, xp - 1, Modulus — > 2] ; MSTAR = PolynomialMod[PolynomialQuotient[xp - 1, g, x], 2] II 1 + x3 + X4
58 Глава 3. Последовательности регистров сдвига Доказательство теоремы 3.15. Пусть последовательность лежит в Q(m). Если {<Si}i>o € Q(7i) для некоторого делителя h многочле- на ш, то заменим гр на h и продолжим эту процедуру, пока не получим {«г}г>о O(/z) для любого делителя h многочлена т. Покажем, что такой многочлен т единственен и имеет вид, указан- ный в теореме. Так как период {si}j>o равен р, следствие 3.5 влечет, что для некоторого u(x) с degree (и (ж)) < degree (т(х)) S<p><x) = S^(x)(l + хр + х2р+ ...) = 5(ж) = u<\\. 1-хр k м v ’ т*(х) В силу наших предположений об т и леммы 3.14 нод(т*(х), u(x)) = 1, т.е. нод(т (ж),---llj.p ) = 1- Поэтому НОД(ш*(ж)(1 — хр>),m‘(x)S^p\x)') = 1 хр, т.е. т*(х) • нод(1 — хр, (а?)) = 1 — хр. Следовательно, 1 — хр т нод(1 — хР, £(р)(х)) ’ Следствие 3.16 — Линейная сложность бинарной периодической последователь- ности {sj}j>o с периодом р и начальным сегментом S^p\x) = — 52f=o Sixt Равна р — degree Гнод(хр — 1, . 3.3.2 Алгоритм Берлекэмпа—Масси Следствие 3.16 может помочь разработчику нелинейной системы определить, насколько его система безопасна в отношении атаки, опи- санной в обсуждении “Ad СЗ” в подразделе 3.2.5. С другой стороны, криптоаналитик, знающий отрезок выходной по- следовательности, скажем, sq, si, ... , может испытать следующую стратегию: i) найти наименьший LFSR, порождающий sq, si, ..., Sfc-i; ii) определить следующий выходной бит этого LFSR с надеждой, что он правильно “предсказывает” следующий бит последовательности.
3.3. Нелинейные алгоритмы 59 Определение 3.6 Lk({si}i>o) — это длина кратчайшего LFSR, порождающего sq, si,..., Sfc-i. Когда из контекста ясно, какова {s^}j>o, мы пи- шем просто L^. Через f^k\x) обозначается характеристический многочлен произвольного LFSR длины Lk, порождающего пос- ледовательность Sq, Si,... , Sfc-i- Ясно, что Lfc({sj}^>o) < к для любой последовательности {sj}i>o, так как любой LFSR длины к будет порождать sq, si, ..., Sfc„i, если в каче- стве начального состояния взять (sq, si, ... , s/._i). Лемма 3.17 Пусть {tj}j>o — выходная последовательность, начинающаяся к-1 ~с~бОТГ7б1. Тогда Lk({ti}i>0) = к. Доказательство. Любой LFSR длины п < к с начальным состояни- ем из первых п символов последовательности {^г }г>о (а всс он и равны 0) выдаст нулевую последовательность; поэтому tk—i не будет' равным 1. Лемма 3.18 Пусть {sj}i>o и {ti}i>o — выходные последовательности. Тогда для всех к > 0 Т 4}г>о) < ^к ({/<’г }г>о) Т Доказательство. Это прямое следствие леммы 3.6. В самом деле, пусть два LFSR с характеристическими многочленами f^k\x) и g^ix) порождают первые к членов последовательностей {sj}j>o и {^.}г>о соответственно. Тогда по лемме 3.6 первые к членов из {sj + будут порождаться LFSR с характеристическим многочленом равным НОК[/(/г\ж) ,д^(х)]. Степень последнего не превосходит суммы степеней f(k\x) и д(к\х). Из определения 3.6 вытекает, что Lk+i > Lk любой последовате- льности {sj}i>o. Но можно сказать больше. Лемма 3.19 Пусть {si}i>o — выходная последовательность. Предположим, что LFSR с характеристическим многочленом f^k\x) не дает правильный выход S&. Тогда Lk+i > max{Lfc, к + 1 — Lk}. Доказательство. Мы уже знаем, что -Ь/с-щ > Lk. Пусть к — последовательность, начинающаяся с 00... 01. Так как LFSR с ха- рактеристическим многочленом f(k\x) порождает sq, si, ..., s^-i, но не
60 Глава 3. Последовательности регистров сдвига «о, si, , sjt, этот LFSR будет порождать {sj 4- Поскольку Lk+i > > Lfc, можно заключить, что -А'Л:+1({^’г Т £j}i>o) = ^А:({^г Т ^г}г>о) == -кк ({®i}i>o) (~ Tfc)- Теперь наше утверждение следует из лемм 3.17 и 3.18 и цепочки к 4- 1 = Ьд.+1({^}г>о) < Lfc+i({sj}j>o) + Lfc+i({sj + ii}i>o) — Lk+i 4- Lk. Следующая теорема показывает, что в последней лемме фактически имеет место равенство. Доказательство вытекает из алгоритма Берлекэм- па-Масси, который рекурсивно строит f^k\x); см. [Mass69|. Этот алго- ритм хорошо известен в теории кодирования, где используется при де- кодировании БЧХ-кодов и кодов Рида-Соломона (см. [Вег168], гл. 7). Теорема 3.20 Пусть {sj}j>o — выходная последовательность. Предположим, что LFSR с характеристическим многочленом f(k\x) не дает правильный выход sk. Тогда Lk+1 = max{Lfc, к 4- 1 — Lk}. Доказательство. Ввиду леммы 3.19 достаточно найти многочлен /(ж) степени, равной max-fL^, k-+-l — Lk}, который правильно дает первые к + 1 членов последовательности {sj}j>o. Это в точности то, что очень эффективно делает алгоритм Берлекэмпа-Масси. Мы докажем теорему по индукции. Начальное индуктивное рассуждение. Положим Lq = 0 и = 1. к Последовательность 00... 0 длины к может порождаться (вырож- денным) LFSR с характеристическим многочленом f(k\x) = 1 степенщ Lk = 0. к Последовательность 00... 0 1 длины к 4- 1 может порождаться LFSR длины к 4- 1, но не более коротким LFSR, как показывает лемма 3.17. В этом случае Lfc+i = А; 4- 1 = А; 4- 1 — Lk — max{L^, к 4- 1 — -L^}, что, в частности, доказывает базу индукции. Шаг индукции: к----> к + 1. Заменим в (3.2) к на I. Теперь, положив в (новом) (3.2) I 4- п ~ j, (к) ci = fi 7 и п = Lk, индуктивную гипотезу для к можно сформулировать в виде = Sj, Lk<j<k-1. (3.9)
3.3. Нелинейные алгоритмы 61 Если соотношение (3.9) выполняется также при j = к, то £д.+1 = Lk, f^k+1\x) = /^(т), и доказывать больше нечего. Если же при j — к равенство (3.9) не выполняется, то Efao 1 = ^ + 1- (3.10) Пусть тп — единственное целое, меньшее к, определяемое условиями О Lm < ^kl ii) Lm+i = Lk, так что тп — индекс последнего приращения L. В силу обоснованного выше начала индукции это число вполне определено. Из индуктивной гипотезы и определения тп вытекает, что ELm — 1 i=0 S3 Sj, если Lm < J < тп —- 1, sm + 1, если j = m. (З.П) Заметим, = £m+i = max{£m,m + 1 — Lm} = m + 1 — Lm. Положим L = max^fc, к + 1 — Lk}- Мы утверждаем, что многочлен X L—k+m—Lm (3.12) годится в качестве ДЛ+1)(гг). Ясно, что первое слагаемое в (3.12) имеет степень (£ — Lk} + Lk = L, а, второе слагаемое имеет степень (£ — к + тп — -£т) + £т < £. Поэтому степень многочлена f(x) правильна. Кроме того, в силу соотношений (3.9), (3.10), (3.11) (ЗЛ2) 1 Лк) y-^L—k+m Am) _____ - Z^i=L-Lk Ji-(L-Lk) Э~Ь+г Z^i=L-k+m-Lm J{-(Ь-к+т-Ьт)ьЗ-^+г ~~ замена i 5-'Z,fc~i -(fc) _ . /т) _ . . _ ~ 2-Л=0 Ji ьЭ — Ьк+г 1“ Z-ji—О Ji bj — Lm+m—k+i 1“ bj-k+m — {Sj +0 = Sj, если £ < j < к — 1, (sk + 1) + 1 = sfc, если j = k. Это доказывает, что LFSR с характеристическим многочленом /(.т) действительно порождает последовательность «□, si,..., sk- Теорема 3.20 показывает только, что степень Lk многочлена единственна. Вообще говоря, сам многочлен (ж) единственным не бу- дет. Алгоритм, описанный в доказательстве теоремы, может быть форма- лизован следующим образом.
62 Глава 3. Последовательности регистров сдвига Алгоритм 3.21 (Берлекэмп-Maccu) input бинарная последовательность {sj}f>o, индекс и: initialization f = 1, L = 0, j = 0; parameters used fne, Lne: характеристический многочлен и длина LFSR, требуемые в данной итерации; foh Loi'. многочлен и длина перед последним изменением длины; diff: разность между номером данной итерации и номе- ром итерации после последнего изменения длины; while (sj — 0) Л (J < и) do j = j + 1; if j = и + 1 then STOP; put foi = l;Lo/=0; / = ж>+1; £ = degree(/); k = j + 1; diff = 0; while k < и do begin if IZfco1 fiSk-L+i sk then begin Lne = max{L, k + 1 — L}; fne = xL™~L • f + xLne-(dlS+l^Lol) . yo/. if Lne L then begin fol — fl Loi = L', L = Lne; diff = 0; end else diff = diff + 1; f = fne'i end else diff = diff + 1; k = k T 1; end output f — характеристический многочлен кратчайшего LFSR, порождающего (sq, si, ..., su). Пример 3.13 Рассмотрим, последовательность {s;}?=0 = {0, о, 0,0,0,1,1,1,1,1,1,1,1,1,1,1,1, о, о, о, о, о, о, о, о, о, 1,1,1,1,0}. Версия алгоритма Берлекэмпа-Масси, которую мы даем ниэюе, исполь- зует функции Do, CoefficientList, Mod, Max, PolynomialMod, Length и
3.3. Нелинейные алгоритмы 63 Print. Отметим, что мы объединили два предложения “while” алгорит- ма в одном предложении “do”. Все промежуточные многочлены также печатаются. s = {О, О, О, О, О, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, О, О, О, О, О, О, О, О, О, 1, 1, 1, 1, О}; Lol = О; fol = 1; diff = 0; Clear [х]; f=l;L=O;g= CoefficientList [f, {x}]; L Do[If[Mod[J2 g[il SU - 1 - L + i] , 2] == s[j], i=l diff = diff + 1; Lne = Max[j - L, L] ; fne = PolynomialMod pg.Lne~Ll + xLne+Lol-dif f-ifoi, 2]; IfELne != L, fol = f; Lol = L; L = Lne; diff = 0; diff = diff + 1]; f = fne; g = CoefficientList [f, {x}]]; PrintE"j=", j, ", L=", L, ", f=", f], {j, Length [s]}] j=l, L=0, f=l j=2^. _L=0 f=l j=3 l=7t~- ^f=l j=4 L=0 f=l j=5 L=0 f=l j=6 L=6 f=l + X6 j=7 L=6 f=l + X5 + X6 j=8 L=6 f=l + x5 + x6 j=9 L=6 f=l + X5 + X6 j=io L=6 f=l + x5 + x6 j=ll L=6 f=l + X5 + X6 j=12 L=6 f=x5 + X6 j=13 L=6 f=x5 + X6 j=14 L=6 f=x5 + x6 j=15 L=6 f=x5 + x6 j=16 L=6 f=x5 + X6 j=17 L=6 f=X5 + X6 j=18 L=12 f=l + x11 + x12 j=19 L=12 f=l + x10 + x12 j=20 L=12 f=l + x9 + x12 j=21 L=12 f = l + X8 + x12 j=22 L=12 f = l + X7 + X12 j=23 L=12 f=l + X6 + x12 j=24 L=12 f=l + X5 + x12 j=25 L=13 f=x + x5 + x13
64 Глава 3. Последовательности регистров сдвига j=l, j=26 j=27 j=28 j=29 j=30 j=30 L=0, f=l L=13 f=l + x + x12 + x13 L=14 f=l + x + x2 + x5 + x12 + x13 + x14 L=14 f=x2 + x5 + x14 L=14 f=x2 + x5 + x14 L=16 f=l + x + x4 + x7 + x12 + x13 + x16 L=16 f=l + x + x4 + x7 + x12 + x13 + x16 3.3.3 Несколько замечаний о нелинейных алгоритмах Общая проблема, связанная с нелинейными регистрами сдвига с об- ратной связью, состоит в трудности их анализа. Нужно ответить на ряд вопросов: сколько существует различных циклов выходных последова- тельностей, каковы их длины, какова линейная сложность и т.п. Следу- ющая теорема показывает, что самое малое можно сказать о нелинейных регистрах сдвига с обратной связью. Ясно, что выходная последовательность нелинейного FSR не будет иметь максимального периода, если существуют два различных состо- яния с одним и тем же последующим состоянием. Состояние, имеющее более одного предшественника, называется точкой ветвления. Теорема 3.22 Регистр сдвига с обратной связью длины п с (нелинейной) функцией обратной связи sn-i) тогда и только то- гда не имеет точек ветвления, когда существует такая буле- ва функция £z(si, s2,... ,sn-i), что /(s0, si,... , sn-i) = s0+ +#(si, 82, • • • , Sn-1). Доказательство. Булеву функцию / можно записать в виде /(«О, 31, ... , Sn-1) = g(si, S2, . • • , Sn-1) + Sq/i(si, S2, . . . , Sn-1). => Если 7i(si, S2,..., sn-i) = 0 для некоторого (si, S2,..., sn_i), to состояния (0, si, S2,... , «п-1) и (1, 51, s2,..., sn_i) будут иметь одно и то же последующее состояние. Поэтому, в противоречии с нашим предпо- ложением, существует точка ветвления. Следовательно, /1=1. <= Последующим для состояния (0, si, S2,..., sn_i) будет (si, S2,..., Sn-1, Sn), где Sn = ^(si, S2,.. -, sn-i), тогда как для состояния (1, si, sg,... Sn-i) последующим будет (si, S2,... , sn_i, sn + 1). Поэтому точек ветв- ления нет. Существует много путей использования линейных FSR нелинейным способом. Ниже мы показываем два предложения, которые всесторонне обсуждаются в [Ruep86]. Другие идеи можно найти в [MeOoS97], гл. 6.
3.4. Задачи 65 Рис. 3.5. Комбинирование нескольких LFSR с нелинейной функцией /. Рис. 3.6. Один LFSR с нелинейным выходом. 3.4 Задачи Задача 3.1. Пусть {s<}i>o — бинарная периодическая последователь- ность периода 17 с началом 01101000110001011. В какой степени {«?:}г>о удовлетворяет постулатам случайности Голомба? (Замечание для заин- тересованного читателя. Указанная последовательность содержит еди- ницы в позициях, соответствующих квадратичным вычетам по модулю 17 — см. строку перед теоремой А.21. Параметры, возникающие при про- верке G3, могут быть подсказаны теоремой А.22 и следствием А.24.) Задача 3.2. Выразите многочлен НОД(жт — 1, хп —• 1) в терминах х и нод(т,п). (См. также задачу А.З.) Задача 3.3. Пусть {i4i}i>o и {н<}г>о — выходные последовательности
66 Глава 3. Последовательности регистров сдвига двоичных LFSR длин тип соответственно, где т, п > 2. Допустим, что {щ }i>o и {vi }г>о — PN-последовательности и что НОД(2те — 1,2П — 1) = 1 (см. задачу А.З). Определим последовательность {wj}i>o равенствами Wi = UiVi,i > 0, и пусть р — период последовательности {wi}i>Q. а) Докажите, что р делит (2та — 1)(2П — 1). Ь) Сколько нулей и сколько единиц содержит подпоследовательность длины (2m — 1) • (2n — 1) в {wi}i>0? с) Докажите, что (2т — 1)(2П — 1)/р должно делить оба числа, опреде- ленные в Ь). d) Докажите, что р = (2те — 1)(2П — 1). е) Сколько лакун длины 1 на период имеет последовательность {иДг>о, когда т, п > 4? Задача 3.4. Пусть бинарная последовательность {«г }г>о определяется равенствами f 1, если i = 21 — 1,1 Е N, г 1 0 в противном случае. Таким образом, {«г}г>о начинается с 11010001000000010. Пусть — ли- нейная сложность последовательности «□, si,..., Sfc-i- Докажите, что L2i=2l~1, 1>1. Задача 3.5м. Пусть бинарная последовательность {«Дг>о имеет пе- риод 15 и начинается с 010110000101010. Каков ее минимальный харак- теристический многочлен? Какова ее линейная сложность? Задача 3.6. Рассмотрим бинарную периодическую последователь- ность {si}i>o, определенную периодом 212 — 1 и значениями .?□ = s29-i — = 1, Si = 0 для 0 < i < 212, г 7^ 29 — 1. Каков ее минимальный характери- стический многочлен? Какова ее линейная сложность? Задача 3.7м. Рассмотрим бинарные многочлены f(x) = 1 + х 4- ж3 и g(x) = 1 + х2 4- ж5. Соответствующие LFSR обозначим через LFSR(/) и LFSR(g). Пусть {s<}i>o и {t<}<>o — выходные последовательности LFSR(/) и LFSR(g) соответственно. Определим последовательность {iZf}i>o, положив щ = Si 4- ti, i > 0. Различные начальные состояния (sq, si, «2, ii L3, ^4) в количестве 28 порождают различные периодические последовательности {пД^о- Каковы длины циклов (т.е. периоды) этих последовательностей? Дайте начальное состояние каждого цикла. Задача 3.8. Рассмотрим двоичный регистр сдвига, изображенный ниже.
3.4. Задачи 67 тт (г} / (О (i) (i) (i) \ Пусть sy' = sn_2, ’ si ч so ) — состояние регистра в момент г > 0. а) Постройте п х n-матрицу Т, удовлетворяющую равенствам = = Ts^ для всех i > 0. b) Докажите, что характеристическое уравнение для Т над R имеет вид Лп = сп—\Хп 1 + сп—2Лп 2 + ... + щА + 1. с) Из теории матриц следует, что Тп = сп_ 1Тп 1 4- сп—2Тп 2 + ... + с-[Т + I, (3.13) где I — единичная п х n-матрица. Так как все элементы в (3.13) целые, равенство (3.13) справедливо также по модулю 2. Выведите рекуррентное соотношение между §(г+п)? 5(i+n~1)j..., s(l+1) и . d) Какой LFSR длины п дает ту же выходную последовательность, что и указанный выше регистр сдвига? Каково должно быть началь- ное состояние в этом LFSR, чтобы генерировать ту же выходную последовательность? Задача 3.9. Пусть a G GF(23) — нуль многочлена f(x) = х3 + х + 1. Тогда по теореме В.30 /(ж) = (ж — а)(ж — а2)(ж — а4), /*(ж) = (ж — а3)(ж — а5)(ж — а6) = (1 — аж)(1 — а2ж)(1 — а4ж). Докажите, что fl(/) состоит из всех последовательностей + + °4Q;4i)^’a е GF(23)- (Совет: используйте следствие 3.5 и разложение на элементарные дроби над GF(23).) Заметим, что выражение, приведенное выше, можно запи- сать в виде (о,-аг)хг, где Тг — функция следа, введенная в задаче В.16.
Глава 4 Блочные шифры 4.1 Некоторые общие принципы 4.1.1 Некоторые режимы блочных шифров □ Режим кодовой книги Блочные (или блоковые} шифры представляют собой традиционный вид криптосистем, которые единовременно обрабатывают фиксирован- ное число символов (с помощью данного ключа) и выполняют это шиф- рование или дешифрование независимо от других входных блоков (см. рис. 4.1). В процессе шифрования данные (открытый текст) поступают в блок шифрования слева, а готовый шифртекст выдается справа. При дешифровании происходит обратный процесс. В следующем разделе будут описаны некоторые широко используе- мые блочные шифры. Пока конкретный вид таких шифров не имеет зна- чения. Достаточно представлять их себе как некие электронные устрой- ства, очень быстро преобразующие (с помощью ключа) одну двоичную последовательность длины п в другую так, что обратный процесс воз- можно выполнить, лишь зная ключ. Поскольку открытый текст представляет собой длинный двоичный файл, его придется разбить на куски Mi, i > 0, длиной по п битов каж- дый. Результат шифрования куска Mi обозначим через (7^; таким обра- зом, можно записать (Д = BC^Mi}, i > О, где к — это ключ. Процесс дешифрования обозначим через ВС*~, тогда Mi = BC^(Ci). На последовательности длины п из символов алфавита Я можно смотреть как на отдельные символы алфавита А.п. Разница между п- ками символов одного алфавита и одиночными символами другого, мало значащая с теоретической точки зрения, может иметь большое практи- ческое значение. Итак, основным свойством блочного шифра является потребность в памяти устройства шифрования. Ясно, что шифрование двух одинаковых блоков открытого текста при помощи одного и того же ключа даст два одинаковых блока шифртекста. Это очень похоже на использование словаря или шифроблокпота. Из-за
4.1. Некоторые общие принципы 69 этого режим шифрования, показанный на рис. 4.1, называется режи- мом кодовой книги1. Разумеется, шифрование одного блока открытого текста дважды при помощи одного и того же ключа криптогафи чески небезопасно, поэтому блочные шифры обычно не используются в режиме кодовой книги. ключ к битов открытый текст Блок шифртекст п битов шифрования п битов Рис. 4.1. Блочное шифрование в режиме кодовой книги. □ Режим сцепления блоков Есть несколько стандартных способов обойти упомянутую выше про- блему. Один из них называется режимом сцепления блоков. Вновь допу- стим, что производится шифрование длинного файла. При этом каждый блок шифртекста не только отправляется получателю, но и покоор- динатно добавляется к следующему блоку открытого текста перед его шифрованием. Для выполнения этой процедуры к шифрующему устройству требу- ется добавить какое-то запоминающее устройство, обычно называемое буфером (см. рис. 4.2). Разумеется, перед началом шифрования буфер должен быть инициализирован. Рис. 4.2. Шифрование в режиме сцепления блоков. ХВ российском стандарте *[ГОСТ96] этот режим называется режимом простой замены.— Прим, перев.
70 Глава 4. Блочные шифры Заметим, что после введения в систему блока памяти возникает уст- ройство, реализующее поточное шифрование. Процесс дешифрования обратен описанному выше процессу. Буфер должен быть инициализирован точно таким же значением, как и перед процессом шифрования. Это может быть либо часть секретного ключа, либо некоторая фиксированная константа. Через ВС*~ на рис. 4.3 обозначен блок, осуществляющий преобразо- вание, обратное к тому, которое выполняет блок шифрования. Рис. 4.3. Дешифрование в режиме сцепления блоков. Замечание. Заметим, что при Ci = Cj для некоторых i < j из рис. 4.2 видно, что Mj ®Ci-i = Mj ®Cj_i, из чего следует, что Cy-i ФСД = = Т.е. сумма по модулю 2 двух предыдущих блоков шифртскста равна сумме блоков Mi и Mj открытого текста. Во многих ситуациях это может привести к утечке некоторой информации об открытом тексте. В частности, из примера 5.2 можно сделать вывод, что сумма двух англий- ских текстов по модулю 26 (при помощи таблицы Виженера, приведенной в табл. 2.3) сохраняет структуру, достаточную для однозначного восста- новления слагаемых. Это замечание показывает, что имеет смысл выбирать длину блоков большей, чем используемая в настояшее время (т.е. 64 бита)2. □ Режим обратной связи с шифртекстом Другой способ шифрования, позволяющий шифровать одинаковые блоки открытого текста с помощью одного и того же ключа разными блоками шифртекста в разные моменты времени, называется режим об- ратной связи с шифртекстом3. 2В новом стандарте шифрования AES длина блока составляет 128 битов.— Прим, перев. 3В российском стандарте *[ГОСТ96] аналогом этого режима является режим гам- мирования с обратной связью.— Прим, перев.
4.1. Некоторые общие принципы 71 Этод метод изображен ниже на рис. 4.4, но в несколько более обоб- щенной форме. На практике во многих ситуациях, например, во многих протоколах сети Internet, требуется единовременно пересылать блоки, длина которых (г битов) меньше, чем длина блока шифрования. Вместо чередования r-битовых блоков с (п—-г)-битовыми последовательностями из нулей и подгонки длины входного блока под блок шифрования можно покоординатно складывать по модулю 2 входной блок с г левыми бита- ми зашифрованного блока. Вход для блока шифрования определяется содержимым регистра сдвига (без обратной связи), которое при каж- дом такте работы регистра сдвигается на г позиций влево и пополняется справа г битами предыдущего блока шифртекста4. Рис. 4.4. Режим обратной связи с шифртекстом. 4.1.2 Протокол проверки идентичности В этом подразделе дана идея того, как блочный шифр можно исполь- зовать в протоколе проверки идентичности. Такой протокол представ- ляет собой общение двух участников, в котором первый желает убедить второго, что в общении участвует именно он, а не кто-то другой. Этот протокол применяется, например, в обмене между устройством чтения карт и smart-картой некоторого человека, скажем Алисы, которая хочет снять деньги со своего счета. При выдаче smart-карты банк помещает на ней два числа: • личный номер Алисы Мд, • секретный ключ Алисы А?д. 4Используются и другие режимы, например, режим обратной связи по открытому тексту, режим генерации MIC (message integrity code — код целостности сообщения; в российском стандарте *[ГОСТ96] “имтитовставка”). Эти режимы (как и предыдущие) детально обсуждаются в *[KaPS95]. Там же во всех подробностях изучаются шифры DES и IDEA, кратко излагаемые ниже.— Прим. ред.
72 Глава 4. Блочные шифры Ключ кд должен быть никому не доступен, даже сама Алиса может его не знать. Личный номер может быть доступен любому устройству чтения карт (его можно даже напечатать на карте снаружи). Эти числа связаны равенством: кА = ВСмк(Шл), (4.1) где ВС обозначает блочный шифр, а МК — банковкий мастер-ключ. Непрактично хранить в каждом устройстве чтения карт секретные клю- чи всех клиентов. Вместо этого в каждом устройстве чтения карт хра- нится МК. На карте тоже выполняется блочное шифрование ВС. Когда карта вставлена в устройство чтения, с нее запрашивается лич- ный номер (в нашем случае 1с1д). После чего любое подлинное устройство может вычислить секретный ключ Алисы кд по формуле (4.1). Далее устройство чтения создает случайную последоватеватсльность г из п битов и использует ее как запрос (по англ, challenge) для карты. Карта возвращает устройству чтения отклик (по англ, response) МС^А(г). Устройству чтения остается лишь проверить это вычисление. Если ответ карты на запрос г правилен, то устройство чтения “узнает", что на карте хранится ключ кд, и делает вывод об аутентичности карты. В противном случае оно не принимает карту. Карта Банкомат ЗНАЕТ к, ID ЗНАЕТ МК ID --> вычисляет к = ВСмк(Ю) ГЕНЕРИРУЕТ СЛУЧАЙНОЕ Г, КАК ЗАПРОС ДЛЯ КАРТЫ г <-- ВЫЧИСЛЯЕТ С = BCfc(r) с --> ПРОВЕРЯЕТ РАВЕНСТВО С = ВСДг) Рис. 4.5. Протокол проверки идентичности. Карта может использовать тот же протокол для того, чтобы прове- рить подлинность устройства чтения. Она посылает свой запрос устрой- ству чтения. Отклик устройства может быть корректным только в том случае, когда оно способно вычислить секретный ключ кд, т.е. когда ему известен мастер-ключ банка МК. Для связи между картой и ее владельцем обычно используется пер- сональный идентификационный код (PIN-код).
4.2. DES 73 4.2 DES □ DES В 1974 г. Национальное бюро стандартов США (NBS) поставило пе- ред промышленностью вопрос о создании криптосистемы, которая мог- ла бы стать стандартом для использования правительством в несекрет- ных приложениях. В ответ на это компанией IBM была создана система LUCIFER. После некоторого видоизменения и упрощения в 1977 г. эта си- стема стала стандартом шифрования данных (Data Encryption Standard или, сокращенно, DES). Сразу же после создания DES были созданы чипы для быстрого ап- паратного шифрования. Это сделало очень удобным его применение в больших системах связи. Вся структура DES была полностью опубли- кована при его введении в качестве стандарта. Никогда ранее такого не делалось, хотя в каждой книге можно найти фразу о том, что безопас- ность криптосистемы не зависит от того, секретна ли ее структура. Исчерпывающего описания DES мы не приводим. Его можно найти в [Konh81], [МеуМ82], [MeOoV97], [Schn96], *[Сало9б] и *[KaPS95]. DES представляет собой блочный шифр с длиной блока 64 бита (см. рис. 4.6). Ключ состоит из восьми групп по 8 битов. Один бит в каждой из групп — это бит проверки на четность и выбирается так, чтобы количе- ство ненулевых битов в блоке было нечетно. Таким образом, хотя фор- мально длина ключа 64 бита, реально используется 56-битовый ключ. ключ 64(56) бита(ов) открытый текст DES шифртекст 64 бита 64 бита Рис. 4.6. Стандарт шифрования данных (DES). Работа алгоритма DES состоит из 16 одинаковых раундов. Входной 64-битовый блок разбивается на две части: 32 левых бита составляют Lq, а 32 правых бита составляют Rq. В каждом раунде новые L и R вычисляются так: Li = Дг-1, 1 < г < 16, Ri = Li-x © f (Ri-1, Ki), 1 < i < 16, (4-2) где через Ki обозначен внутренний ключ, т.е. последовательность битов, однозначно определяемая ключом К.
74 Глава 4. Блочные шифры Далее, f — функция от двух аргументов: предшествующей правой половины Ri-i и внутреннего ключа Ki, значением которой является последовательность из 32 битов. Эта функция задается с помощью на- бора фиксированных таблиц, называемых таблицами подстановок. Зна- чение функции покоординатно складывается с Li-i. Левой половиной Д просто становится предшествующая правая половина. (См. приведенный ниже рис. 4.7.) Выход DES образуется из Дб и Я16- Рис. 4.7. Стандартный раунд DES. На рис. 4.7 можно увидеть, что процесс, обратный алгоритму DES, происходит по той же схеме, только снизу вверх. Действительно, из фор- мул (4.2) следует, что для всех г, 1 < г < 16, выполняются равенства —1 Li, Li—i = Ri Ф f (Лг-i, 7Q) = Ri ® f (Li, K^. Многие критично отнеслись к решению сделать DES стандартом. Для этого есть две объективные причины: i) Эффективная длина ключа (56 битов) слишком мала для организа- ций с достаточно большими ресурсами. Это делает возможным, по крайней мере в принципе, выполнение исчерпывающего перебора ключей. ii) Критерии создания таблиц, использующихся в определении функции /, неизвестны. Статистические тесты показывают, что эти таблицы нельзя считать совершенно случайными. Возможно, в их структуре скрыта какая-либо секретная лазейка. В течение первых двадцати лет после публикации алгоритма DES не появлялось никаких сообщений о способах его эффективного взлома.
4.3. IDEA 75 Однако, в 1998 году DES впервые был взломан с помощью более или менее лобовой атаки5. □ Тройной DES Когда стало ясно, ято DES более не пригоден для защиты конфиден- циальной информации, появилась его модификация, называемая трой- ной DES. Он состоит из трех последовательных выполнений алгоритма DES, с той лишь особенностью, что на втором шаге выполняется обрат- ный алгоритм. Т.е. сначала DES, затем DES*-, и наконец снова DES. (См. приведенный ниже рис. 4.8.) Рис. 4.8. Тройной DES. Отметим пару особенностей этой схемы. Во-первых, третий ключ совпадает с первым. Тем самым реальная длина ключа составляет 2 х 56 = 112 битов. Считается, что это обеспечит безопасность систе- мы на несколько лет. Во-вторых, на среднем шаге вместо DES применяется DES*~. Две эти особенности позволяют сделать системы, в которых исполь- зуется тройной DES, совместимыми с системами, в которых использует- ся обычный DES. В самом деле, взяв одинаковые ключи 1 и 2, можно превратить описанную выше систему в обычный DES. 4.3 IDEA Имеется и несколько альтернатив алгоритму DES. Их рассмотрение представляет интерес из-за экспортных ограничений, накладываемых американским правительством, а также из-за высокой стоимости патент- ных прав. В отличие от DES, использующего в каждом своем раунде фиксированные таблицы, в некоторых его альтернативах применяются элементарные математические операции. Одной из таких систем является IDEA [Lai92]. Ее название — это аб- бревиатура от International Data Encryption Algorithm (международный 5Об атаках на DES см. интересный обзор *[LandOO]. Российский симметричный криптографический алгоритм *[ГОСТ9б] построен на тех же принципах, что и DES, но гораздо надежнее последнего, так как имеет секретный ключ длиной 256 битов (плюс 512 битов долговременного ключа).— Прим. ред.
76 Глава 4. Блочные шифры алгоритм шифрования данных). Длина блока в IDEA также составля- ет 64 бита (см. замечание в подразд. 4.1.1 об этой величине), но длина ключа — уже 128 битов. Работа алгоритма состоит из 8 одинаковых ра- ундов, изображенных ниже на рис. 4.9. Последовательность из 64 битов разбивается на четыре блока по 16 битов каждый. Эти блоки на входе стандартного раунда обозначены через 1 < г < 4, а на выходе -че- рез Yi, 1 < i < 4. Через 1 < i < 4, обозначены подстроки ключевой строки. Их конкретное расположение зависит от номера раунда. Элементарные математические операции в IDEA выполняются на этих 16 битах. Опишем эти операции. • Покоординатное XOR (сложение по модулю 2) На рис. 4.9 эта операция изображается символом ф. В пакете “Mathematica” операция XOR может быть выполнена с по- мощью функции Mod (здесь показано, как она работает на четверках). ModIXl, 1, 0, 0} + {1, 0, 1, 0}, 2] || {0, 1, 1, 0} • Сложение по модулю 216 На рис. 4.9 эта операция изображается в виде квадратика со знаком плюс внутри: ЕЗ. Для выполнения этой операции будем считать входные 16-битовые блоки двоичными представлениями двух целых чисел. Тогда выходным блоком будет двоичное представление суммы этих чисел по модулю 216. В пакете “Mathematica” это можно выполнить с помощью функций FromDigits, IntegerDigits (здесь показано, как они работают на четвер- ках). а = FromDigits[{1, 0, 1, 1}, 2] b = FromDigits[{I, 1, 1, О}, 2] su = Mod[а + Ь, 16] IntegerDigits[su, 2] II 11 II 14 II 9 II {1,0, 0,1} • Умножение по модулю 216 + 1 На рис. 4.9 эта операция изображается символом 0. Для выполнения умножения будем считать входные 16-битовые бло- ки двоичными представлениями двух целых чисел. Все эти числа, за
4.3. IDEA 77 исключением нуля, обратимы по модулю простого числа 21С +1 = 65537. Отождествим блок из 16 нулей не с числом 0, а с числом 216, тогда по- лучим взаимно-однозначное соответствие между 16-битовыми блоками и элементами мультипликативной группы 2^5537 (см- пример В.З). Выход- ным блоком будет двоичное представление произведения этих чисел по 16 16 модулю 216 + 1 (исключая 1 0...0, которое следует заменить на сГ?О). Поскольку число 216 + 1 простое, определенное выше умножение а(&Ь будет взаимно-однозначным отображением при фиксированном а или Ъ. Ниже приведен пример выполнения этой операции для четверок. Заме- тим, что число 24 + 1 — тоже простое. а = FromDigits[{1, 0, 1, О}, 2]; b = FromDigits[{0, 1, 1, О}, 2]; а = If [а == 0, 16, а] ; b = If[Ъ == 0, 16, Ь] ; pr = Mod[а * Ь, 17] pr = If [рг == 0, 16, рг]; IntegerDigits[pr, 2, 4] II 9 II {1,0, 0,1} Читатель может попробовать перемножить последовательности {1,0,0,0} и {0,0,1,0}. Рис. 4.9. Один раунд международного алгоритма шифрования данных (IDEA). Обратный алгоритм для IDEA, как и для DES, получается при дви- жении по схеме снизу вверх.
78 Глава 4. Блочные шифры 4.4 Дополнительные замечания Алгоритм RC5 (см. *[Молд98]) работает по схеме, напоминающей IDEA. Одной из элементарных операций в этой системе вновь являет- ся сложение по модулю 2W, где w — это длина слова, а вместо умноже- ния по модулю 2W + 1, работающего лишь при простом 2W + 1, в RC5 применяются циклические сдвиги. Длина блока в RC5 равна 2w, где w можно вибирать из трех воз- можных значений: 16, 32 или 64. Дополнительным преимуществом RC5 является свобода выбора количества раундов в схеме. В зависимости от требуемой скорости работы и безопасности пользователь может зафик- сировать большее или меньшее число раундов. В 1993г. были опубликованы два способа атаки на блочные шифры, оказавшихся неожиданно сильными. Эти методы называются линейным и дифференциальным криптоанализом (см. [MatsY93] и [BihS93|, соот- ветственно6 7) и представляют собой разновидности атак с известным от- крытым текстом. Некоторые из предложенных блочных шифров оказа- лись слабо защищены от подобных атак, но алгоритм DES выдерживает их. Позже стало ясно, что разработчики DES были осведомлены о по- добных способах атак. Для получения более подробных сведений можно обратиться к [Knud94|. Во время написания этой книги американский национальный инсти- тут стандартов и технологии (сокращенно NIST) исследовал несколько проектов криптосистем с целью выбора нового промышленного стандар- та. Названия этих криптосистем — CAST-256, CRYPTON, DFC, DEAL, Е2, FROG, НРС, LOKI97, MAGENTA, MARS, RC6, RIJNDAEL, SAFER+, SERPENT и TWOFISH (см. веб-сайт ’Advanced Encryption Standard’ http://csrc.nist.gov/encryption/aes/aes_home.htm). Результат 7 этого исследования пока неясен'. 4.5 Задачи Задача 4.1. Опишите процесс дешифрования в режиме обратной связи по шифртексту. Задача 4.2. Рассмотрим блочный шифр, используемый в режиме сцеп- ления блоков. Предположим, что в процессе передачи г-й блок Ci шифртекста оказался испорчен. На какое число блоков открытого текста это повлияет? От- ветьте на тот же вопрос для режима обратной связи с шифртекстом. Задача 4.3м. Можно ли в системе IDEA, сохранив общую схему и эле- ментарные операции, увеличить длину рабочих блоков? (Длина таких блоков в IDEA составляет 16 битов.) Какая проблема при этом возникает? 6На русском языке эти методы (наряду с другими) изложены в *[РосМ01]. Прим, ред. 7Теперь уже ясен. Летом 2001г. NIST в качестве стандарта AES утвердил проект RIJNDAEL. Его детальное описание см., например, в *|DaRi99].— Прим. ред.
Глава 5 Теория Шеннона 5.1 Энтропия, избыточность и расстояние единственности В главе 2 мы видели, что криптоанализ криптосистемы часто зависит от имеющейся в тексте структуры. Например, в табл. 2.1 мы отыскали ключ 22 (или -4) из-за того, что открытый текст “tu quoque Brute” ока- зался единственным осмысленным из возможных. Структура открытого текста сохраняется и в шифртексте, хотя и в скрытой форме. Если информация, содержащаяся в этой структуре, пре- вышает неопределенность ключа, то может появится возможность найти открытый текст по криптограмме! Сначала определим понятие информации. Пусть X — случайная ве- личина, распределение которой на множестве X = {xi, х%, •••, хп} зада- ется вероятностями Ргх(Х = Xi) = pi, 1 < i < п. Разумеется, = 1 и pi > 0 для всех 1 < i < п. Покажем, что величина = “log2Pi (5.1) хорошо подходит для измерения количества информации, содержащейся в сообщении о том, что произойдет событие Xi, 1 < i < п. В основа- нии логарифма число 2 можно заменить на любое другое, но, как будет видно ниже, двойка лучше всего отражает наше интуитивное понимание информации. В случае, когда в основании логарифма стоит 2, единица информации называется бит. Пусть X = {х}, т.е. п = 1; тогда pi = 1. Теперь событие х достоверно, и сообщение о том, что оно произойдет, не несет никакой информации (как, например, фраза “Солнце завтра снова взойдет”). Это прекрасно соответсвует формуле (5.1), поскольку <7(1) — 0. Теперь рассмотрим событие, происходящее с вероятностью 1/2, типа рождения ребенка определенного пола. Тогда X = {м, д}. В предположе- нии, что дети обоих полов рождаются с одинаковой вероятностью, ясно, что сообщение о поле новорожденного дает ровно один бит информации. Например, 1 означает рождение мальчика, а 0 — рождение девочки. Это вновь согласуется с формулой (5.1), поскольку <7(1/2) = 1.
80 Глава 5. Теория Шеннона Если некоторое событие происходит с вероятностью 1/4, то сообще- ние о том, что оно происходит, дает два бита информации. Это очевидно в ситуации с четырьмя равновозможными исходами. Каждому из этих исходов можно сопоставить свою двоичную последовательность длины два. С другой стороны, количество информации, которую несет сообще- ние о событии, происходящем с вероятностью 1/4, не должно зависеть от вероятностей других возможных событий. Таким образом, значение 7(1/4) = 2, вычисленное по формуле (5.1), вновь согласуется с нашей интуицией. Продолжая подобным образом, получаем, что 7(1/2*) = к, fc > 0. (5.2) Математическое ожидание случайной величины 7(Ргд^(Х)), опреде- ленной на множестве X, называется энтропией X и обозначается либо через JEZ’(A’), либо через Н(р), где р = (pi,P2, -••iPn)- Следовательно, п п н(х) = мщрга-ро)) = i=l г=1 Н(р) = ” У? Pi 1оё2 Pi • (5-3) i=l При п — 2 принято обозначать pi через р, а р% через q и писать /г(р) вместо Н(р). h(p) = -р • log2p - (1 - р) • log2(l - р), 0 < р < 1. (5.4) Поскольку х • log2 х стремится к 0 при х -> 0, не возникает про- блем с определением функции энтропии Н(р) при равенстве пулю (или 1) некоторых из вероятностей р^. График функции h(p) изображен ниже при помощи функции Plot пакета “Mathematica”. р=-; X Entropy[р] = -р * Log [2, р] - (1 - р) * Log [2, X- р] ; Plot [Entropy [х] , {х, 0, 1}-]
5.1. Энтропия, избыточность и расстояние единственности 81 Функцию энтропии Н(р) можно вычислить следующим образом. Length, [р] MultiEntropy[p_List] :=- рГEi]] * Log[2, p[[i]]] i=l p={l / 4, 1 / 4, 1 / 4, 1 / 4}; MultiEntropy Ep] II 2 Можно дать следугощце^интерпретации энтропии Н(Х) случайной величины X. • среднее количество информации, которое дает сообщение о значе- нии X, • неопределенность X, • среднее количество битов, небходимое для реализации X. Помня эти интерпретации, можно ожидать, что функция энтропии Н(Х) обладает следующими свойствами. Р1: Н(Р1,Р2, --,Рп) = Я(рЬр2, ...,Рп,0). Р2: Я(р1,р2, ...,рп) = Hfp^pp^), ...^(п)) для любой переста- новки а множества {1,2, ...,п}. РЗ: 0 < Я(р1,р2, ...,рп) < Я(1/п, 1/п,1/п). Р4: Я(р1?р2, ...,рп) = Я(р1,р2, ...,рп-2,Рп-1 +Р«)+ + (рп-1 +рп)Я рп^+рп\ Данные свойства можно интерпретировать следующим образом. Р1 говорит, что добавление к множеству X невозможного события не влияет на неопределенность величины X. Р2 утверждает, что перенумерование различных событий множества X оставляет энтропию неизменной. РЗ говорит, что неопределенность величины X максимальна, если все события равновероятны. И, наконец, Р4 утверждает, что среднее количество двоичных разря- дов, небходимое для описания результата из множества X равно числу битов, необходимых при объединении событий xn-i и хп в одно собы- тие жп_1, плюс число битов, необходимых для того, чтобы различить события Хп-Д И Хп при условии, ЧТО событие Хп-1 произошло. Например, если п = 4, то Я(|, |, |, |) = 2 и
82 Глава 5. Теория Шеннона i) + | • Я(|, 1) = (| • 2 + 1 • 2 + | • 1) + 1 • 1 = 2. Хотя доказательства мы здесь не приводим, можно показать (см. [Khin57]), что функция, определяемая формулой (5.1), — единственная непрерывная функция, удовлетворяющая условию (5.2) и порождающая функцию энтропии i PiJ(pi), обладающую приведенными выше свой- ствами Р1—Р4. Пример 5.1 Рассмотрим подбрасывание монеты. Пусть Рг(орел) = р и Рг(решка) = 1 — р, 0 < р < 1. Энтропия задается формулой (5.4). Разумеется, условие 7ъ(1/2) = 1 подтверждается тем фактом, что для представления результата такого эксперимента с правильной мо- нетой необходим один бит. Например, 0 <-> “орел”, al*-» “решка”. Поскольку 7г(1/4) « 0.8113, можно ожидать, что в среднем для представления результата эксперимента с неправильной монетой, для которой Рг(орел) = 1/4, окажется достаточно 0.8113 бита. Это ут- верждение верно в том смысле, что можно сколь угодно приблизиться к числу 0.8113. В гл. 6 будет показано, как это сделать. Трюк состо- ит в том, что результат большого числа бросаний представляется единственной двоичной строкой. Например, результат двух бросаний можно представить следующим образом: выпало вероятность представление оо 1/16 111 ор 3/16 110 ро 3/16 10 рр 9/16 0 Математическое ожидание длины такого предспгарления равно Но при этом описаны результаты сразу двух бросаний, т.е. при такой схеме на одно бросание приходится по 27/32 « 0.843 бита. Объединяя в одну группу по три, четыре и более бросаний, будем получать все более и более точное приближение для величины 7г(1/4). Существует, однако, проблема опознанного декодирования, состоя- щая в том, как получатель по длинной строке из нулей и единиц мо- жет определить, сколько экспериментов проводилось и какой был ре- зультат у каждого из них. Нетрудно проверить, что любая последо- вательность, состоящая из подпоследовательностей 111, 110, 10 и 0, однозначно разбивается на такие блоки. Мы займемся этой проблемой более подробно в гл. 6.
5.1. Энтропия, избыточность и расстояние единственности 83 Пример 5.2 (часть 1) При кодировании достаточно длинных последовательностей из 26 букв английского алфавита двоичными последовательностями .моэюно добиться того, что на каждую букву будет приходиться по log226 « 4.70 бита. Действительно, для кодирования k-буквенных по- следовательностей потребуется |’log226fe] битов, т.е. на каждую бук- ву будет приходиться по [log2 26fc]/fc битов, а эта последовательность сходится к log2 26 при к —> оо. С другой стороны, энтропию 1-грамм легко вычислить по вероят- ностям, приведенным в табл. 1.1. Получится 4.15 бита на букву. Подобные вычисления были проведены для биграмм и триграмм (см. [МеуМ82/ртриложение F). Получены следующие величины: ^\Н(1-грамм) «4.15 бита на букву rI/2-грамм)/2 « 3.62 бит,а на букву Н(3-грамм)/3 « 3.22 бита на букву По некоторым тестам асимптотическое значение величины Н(п-грамм)/п при п —> оо меньше, чем 1.5 бита на букву! Определение 5.1 Обозначим через (Xq, Xi, ...,Xn_i), п > 1, открытый текст, порожденный источником открытых текстов S над алфавитом Z2- Тогда избыточность Dn текста (Xq, Xi, ...,Xn_i) опреде- ляется равенством Пп — п Н(Х0, Xi, ..., Xn—i^. Число 6 = Dn(n является мерой избыточности, приходящейся на одну букву текста. Если алфавит состоит из q букв, то каждый символ представ- ляется с помощью log2 q битов, а избыточность задается равенством Dn = п • log2q — H(Xq, Xi, ...,Xn_i). Если допустить использование представлений разной длины для разных символов алфавита со сред- ней длиной представления Z? битов на символ, то получим Dn = п • £ — H(Xq, Xi, ...,Xn-i). Избыточность является мерой того, насколько длина данного текста превосходит длину текста, минимально необходимого для хранения со- держащейся в данном тексте информации (все измеряется в битах). Теперь обратимся к криптосистеме £, состоящей из криптографи- ческих преобразований Е^, проиндексированных ключами к из ключе- вого пространства /С. Предположим, что неизвестный открытый текст представляет собой правильный текст на английском языке. Тогда, имея на руках шифртекст, криптоаналитик может попытаться, перебирая все возможные ключи, получить все варианты открытых текстов. Посколь- ку шифртекст состоит из нескольких букв, некоторые ключи придется
84 Глава 5. Теория Шеннона признать недопустимыми из-за того, что они приводят к невозможным или маловероятным комбинациям букв в открытом тексте. При этом чем длиннее будет шифртекст, тем больше ключей окажутся отвергнутыми из-за того, что они разрушают структуру или смысл английского текста. Говоря более формально, они разрушают избыточность открытого тек- ста. Рано или поздно останется единственный возможный кандидат на роль ключа шифрования. Вернемся к обобщенной постановке. Пусть длина открытого текста равна п битов. Имеется 2П двоичных последовательностей, по лишь 2Я(Хо, Xi, ...Л-i) из них представляют собой осмысленные сообщения. Вероятность того, что дешифрование при помощи ошибочного ключа приведет к допустимому сообщению, равна 2Н(Х°’ Х1’ •>xn-i)/2n. Если перепробовать все возможные ключи, то можно ожидать, что получится |д^|.2Я(х0, Xi, ...,хп_1)/2те осмысленных сообщений. Причем если все клю- чи равновероятны, а К — случайная величина, задающая распределение ключей в пространстве /С, то |/С| = 2Н^К\ Тогда число осмысленных со- общений равно 2Н^К^+Н^Х°' Х1' •••)x„-i)/2n. Если это число не превосхо- дит 1, то весьма вероятно, что лишь один ключ приводит к осмысленному дешифрованию данного шифртекста. Это происходит при Я(К) + Я(Х0, Хъ Xn_!) — п < О, т.е. в ситуации, когда избыточность удовлетворяет условию Dn > Н(К). Если величина К не является равномерно распределенной, то при обосновании полученной выше оценки мы все равно будем считатъчцели- чину Н(К) мерой неопределенности ключа. Определение 5.2 Пусть в криптосистеме £ используются ключи из ключевого пространства /С, а открытые тексты порождаются источником S. Рассмотрим атаку против криптосистемы £ на основе извест- ного шифртекста. Расстояние единственности этой криптоси- стемы определяется как min{n <Е N+|Dn > ff(JC)}, где Н(К} — энтропия ключа, a Dn — избыточность открытого текста. Смысл такого названия в том, что если избыточность открытого тек- ста превосходит неопределенность ключа, то криптоаналитик, облада- ющий достаточными вычислительными ресурсами, может восстановить открытый текст по криптограмме. Таким образом, расстояние единствен- ности показывает пользователю криптосистемы, когда необходимо сме- нить ключ для того, чтобы обеспечить безопасность системы.
5.1. Взаимная информация и безусловно безопасные системы 85 Пример 5.2 (часть 2) Продолжим обсуждение примера 5.2. Предположим, что к англий- скому тексту применяется простая подстановка (см. подразд. 2.1.2/ Предположив, что все 26! ключей равновероятны, находим 26! Н(К) = - 52 log2 2^1 = 1Og2 26! ~ 88,382 бита- г=1 Оценив приблизительно избыточность Dn английского текста из п букв числом (4.70 —1.50)п = 3.20п бита, получим, что расстояние един- ственности равно 88.4/3.2 « 28 букв. Процитируем Фридмана [Frie73]: “практически каждый пример из 25 или более букв, представляющий собой результат действия одно- алфавитной подстановки на осмысленный английский текст, может быть легко расшифрован”. Отметим, что числа 25 и 28 прекрасно со- гласуются. 5.2 Взаимная информация и безусловно безопасные системы Часто одна случайная величина содержит информацию о другой. В криптосистемах открытый текст и шифртекст связаны посредством клю- ча. В данном разделе мы дадим формальное определение (в теоретико- информационном смысле этого слова) абсолютно безопасной криптоси- стемы. Пусть X и Y — случайные величины, определенные на множествах X и У соответственно. Вероятности Ргл’;у»(Х = x,Y = у) или сокращенно Рх,у(х,у) задают совместное распределение величин X и У. Вероятность того, что X = х при условиии, что Y — у, называется условной вероятностью и обозначается Рг^|у(Х = ж|У = у) или Рх\у(х\у). Выполняется соотношение Рх,у(х, у) = Рх\у(х\у) • Ру(у). (5.5) Неопределенность величины X при условии У = у определяется анало- гично функции энтропии равенством H(X\Y = у) = - ’ 1о^Рх\у{х\у). (5.6)
86 Глава 5. Теория Шеннона Эту величину можно интерпретировать как среднее количество ин- формации, содержащейся в сообщении о значении случайной величины X, если уже известно, что Y = у. Условной энтропией Я(Х|У) величины X по величине У называется усредненное значение неопределенности H(X\Y = у) по всем у. Т.е. Я(Х|У) = БУсуРу(?/)-Я(Х|У = у) = (5J) _ ^уЕуРу(у) • ЕхеЛгР^|у(Ж1?/) • log2PAf|y(x|7/) = = - 'Ехех'Еуеу РУ (у) ’Рх\у(х\у) • log2 рх\у(х\у) = (5J) ~^хсХ12уСуРХ,у(х,У) •log2p(¥|y(x|^). Пусть Н(Х, У) определяется аналогично функции энтропии Н от одной переменной. Теорема 5.1 (цепное правило Н(Х, У) = Н(Х) + Я(У|Х) = Я(У) + Я(Х|У). Доказательство. Используя соотношения (5.5) и (5.7), получим Я(Х,У) = ~1^хех1^уеуРх,у(х,у)-log2Px,y(x,y) = = ~1£хех^уеуРх,у(х’У) '^g2py(y)~ ^12х&х12у&уРх,у(х,у) bg2pw«i/) = = - ИуеуРУ^У) • bg2py(?/) + H(X\Y) = Я(У) + Я(Х|У). Второе равенство следует из перестановочности аргументов в Н(Х, У). Иначе говоря, приведенная выше теорема утверждает, что неопреде- ленность совместного распределения величин X и У равна неопределен- ности X плюс непределенность У по X. Следствие 5.2 Пусть X и У — независимые случайные величины. Тогда i) H(X,Y) = Н(Х) + H(Y), ii) Я(Х|У) = Н(Х), iii) Я(У|Х) = Я(У). Доказательство. Для того, чтобы доказать утверждение i), по- вторим доказательство теоремы 5.1, используя равенство рх,у(хру) — = Рх(х) - Ру(у)-
5.2. Взаимная информация и безусловно безопасные системы 87 Н(Х,У) = -Exgat ИуеуРху(х,у) • log2p^jy(x,p) = = - Exg* 12уеуРх,у(^У) • log2py(t/)- “ Exg* Иу&уРх,у(х,у) log2pA’(x) = = - ЕуеуРу(р) • 1о82Ру(р) - ЕхеЛ’Р^(ж) • log2pA'(.c) = = Я(У) + Я(Х). Утверждения ii) и in) непосредственно следуют из i) и цепного правила. Рассмотрим разность между количеством информации (см. (5.1)), со- держащейся в сообщении X — х, и количеством информации, содержа- щейся в том же сообщении при заранее известном условии Y = у. Эту разность естественно считать количеством информации о том, что X = = х, содержащейся в сообщении У = у. Обозначим это через 1х-,у{х^у). Тогда выполняется равенство 1х-,у(х,у) = -log2p^(a;) - (-log2p^|y(^|p)) Рх{х) (5.5) Рх(х}-ру(у) = - bg2-----гт^ = - log2------------— = 1у-х(у, х). Рх\у(х\у) рх,у{х.у) Заметим, что имеет место симметрия Ix-yi^y) = ly^x^y, х). Взаимная информациия I(X;Y) случайных величин X и У опреде- ляется как математическое ожидание величины 1х-,у(х,у), т.е. 1(Х- У) = — ExeAf Ej/ey Рх,у(ж, у) • 1х,у(х, р) = - - Er6.v Е.еу Ра-.уЕ у) log2 = (5 8) = - Е:С€Л' Е„£у Рх,уу) log2 = = 1у,х(У,х). Теорема 5.3 х 1(Х; У) = Н(Х) + Я(У) - Я(Х, У) = = Я(Х) - Я(Х|У) = Я(У) - Я(У|Х). Доказательство. Из равенства (5.8) следует, что 1(Х; У) = - ЕхеЛ” Еуеу Рх,у(х, у) • log2 р^х]у) = = " ExGAf Еуеу РХ,У(X, р) • log2 Рх Й+ + Ехе<¥ ^2уеуРх,у(х,у) -log2px\y(x\y) = = -^2хехРх(х) -\og2px(x) - Я(Х|У) = = Я(Х) - Я(Х|У).
88 Глава 5. Теория Шеннона. Остальные равенства следуют из теоремы 5.1. Величину 1(Х;У) можно интерпретировать как среднее количество информации, которое Y дает об X (или, наоборот, X об У). Пример 5.3 Двоичный симметричный канал может быть описан следукпцим образом. Источник посылает значение величины X: X = 0 с вероят- ностью 1/2 или X = 1 тоже с вероятностью 1/2. Приемник получает значение величины У: У = X с вероятностью 1 —р или же У = 1 — X с вероятностью р. Это означает, что X = У = {0,1}, и что Ру($) = Ру;|А'(0|0)рлг(0) +ру|аг(0|1)раг(1) = (1 -р) • | + р- | Аналогично, ру(1) = Кроме того, рх,у (0,0)=Рл-.>(1,1) = (1-р)/2« Рх,у(051) — Рх,у(1,0) = р/‘2. Таким образом, для двоичного симметрич- ного канала по формуле (5.8) получаем I(X;Y) = -2{l=£log2^ + 21og2^} = = 1 + Р- log2p+ (1 -р) • log2(l -р) = 1 - Я(р). Можно заключить, что приемник получает 1 — Н(р) битов инфор- мации о случайной величине X по полученному значению величины У. Практическое достижение “границы” 1 — Н(р) является фундаменталь- ной проблемой алгебраической теории кодирования. См. [MacWS77], раз- дел 1.6. При р = 1/2, как и следовало ожидать, приемник не получает ни- какой инфюрмации о переданных символах, поскольку Я(1/2) = 1. Вернемся к традиционной криптосистеме, описанной в гл. 1. Пусть выбор ключа из ключевого пространства /С происходит с вероятностью Prxs(i< = fc), открытый текст представляет собой последовательность случайных величин М<“’ = (Мо, Mi, а шифртекст — последовательность случайных величин С<"> = (Со, С1, Cv-t). Таким образом, В большинстве приложений v будет равно и. Поскольку является взаимно-однозначным отображением, открытый текст должен однозначно определяться по ключу и шифртек- сту, следовательно, выполняется равенство Н(М^\К,С^) = 0. (5.9)
5.2. Взаимная информация и безусловно безопасные системы 89 Пользователя криптосистемы, конечно, интересует, как много информа- ции об дает . Теорема 5.4 1(М^;С(и)) > - Н(К) Сформулируем это на словах. Неопределенность ключа в сумме с информацией об открытом тексте, которую дает шифртекст, не меньше, чем неопределенность открытого текста. Это вновь хорошо согласуется с нашей интуицией. Доказательство теоремы 5.4. Из равенства (5.9) и цепного прави- ла (теорему 5.1 можно применять и к условной энтропии) следует, что Н[К\С^) = Н(К\С^) + Н(М^[К,С^) = = = Н(М^\С^) + Н(К\М^и\С^) > Н(М^\С^). Т.е. неопределенность ключа по шифртексту не меньше, чем неопреде- ленность открытого текста по шифртексту. И действительно, зная шифр- текст, можно восстановить открытый текст при наличии ключа, но не всегда можно восстановить ключ при наличии открытого текста. Из этого следует, что Н(7И^|С(1?)) < Н(К\С^) < Я(К), и по теореме 5.3 получаем = Н(М^) - - Н(К). Определение 5.3 Криптосистема называется безусловно безопасной или, как еще говорят, обладает совершенной секретностью, если Z(M(u);C(u)) = 0. Следствие 5.5 Если система абсолютно безопасна, то Н(М^) < ЩК). Следствие 5.5 говорит, что в безусловно безопасной криптосистеме, в которой все ключи и все открытые тексты равновероятны, ключей долж- но быть не меньше, чем открытых текстов.
90 Глава 5. Теория Шеннона Пример 5.4 Допустим, что у нас 2fc ключей, и каждый из них может быть выбран с вероятностью l/2fc. Тогда Н(К) = - log2 = к битов. Если сообщение представляет собой результат и бросаний правильной монеты, то, очевидно, Н(М^) = и, и для совершенной секретности необходимо выбрать к > и. Это можно реализовать при шифровании с^ = ф k^v\ где че- рез к^ обозначены первые и битов ключа, а через Ф — покоординатное сложение по модулю 2. При таком шифровании каждый шифртекст с^ может быть получен из каждого открытого текста с равной ве- роятностью. 5.3 Задачи Задача 5.1. Покажите, что функция — 527-1 Pi ’^°&2Рг удовлетворяет усло- виям Р1-Р4 из разд. 5.1. Задача 5.2. Пусть а < 1/2. а) Докажите, что 1 пп < /п\ < пп п+1 kk(n — k)n~k ~~ \k) kk(n — kyn~k' b) Используя эти неравенства, докажите, что lim -log^TL J =/i(a), х—юо п *—-'г=0 \t/ где через h(x) обозначена функция энтропии, определенная формулой (5.4). Задача 5.3. Предположим, что на одну букву аглийского текста приходит- ся по полтора бита информации. Каково расстояние единственности для шифра Цезаря, примененного к английскому тексту? Ответьте на тот же вопрос для криптосистемы Виженера с ключом длины г. Задача 5.4. Рассмотрим источник открытого текста без памяти, вы- дающий случайную величину X, равномерно распределенную на множестве {0,1,2}. На выходе канала приемник получает переменную Y, которая равна X с вероятностью 1 — р, 0 < р < 1, и принимает любое из двух оставшихся значений с вероятностью р/2. Вычислите взаимную информацию /(Х;У) величин X и Y. Задача 5.5. Пусть источник открытых текстов S выдает независимые друг от друга буквы X, одинаково распределенные на множестве {а, b, с, d}. Распределение вероятностей задается равенствами Рг(Х = а) = 1/2, Рг(Х — = 6) = 1/4 и Рг(Х = с) = Рг(Х = d) = 1/8. Рассмотрим две схемы кодирования:
5.3. Задачи 91 схема А схема В а ।—> 00 а 1 > 0 b 1 > 01 b I-- -> 10 с 1 > 10 с 1 > 110 d 1 > 11 d 1 111 Получившийся открытый текст сначала преобразуется в последовательность из 0 и 1 по одной из приведенных выше схем, а затем ши фруется с помощью алгоритма DES. Каково расстояние единственности для каждой из этих схем? Задача 5.6. Докажите, что одноразовый щит является безусловно без- опасной системой.
Глава 6 Техника сжатия данных Из главы 5 (см. определения 5.1 и 5.2) становится понятно, что мож- но существенно повысить безопасность криптосистемы, если уменьшить избыточность открытого текста. В примере 5.1 показано как можно со- кратить избыточность. В этой главе будут описаны два общих метода сокращения избыточ- ности. Процесс удаления избыточности из текста называется сжатием данных или кодированием источника. 6.1 Основы кодирования стационарных источников Пусть источник открытых текстов S выдает символы из алфавита {mi, m2,с вероятностями pi,p2,Рп независимо друг от друга. Символ кодируется двоичной строкой ci длины 1 < i < п. Множество {с15 с2,..., сп} называется кодом С для источника S. Идея процесса сжатия данных состоит в использовании кода, минимизирую- щего среднюю длину закодированного открытого текста. Поскольку ис- точник порождает символы независимо друг от друга, достаточно будет минимизировать среднюю длину одного закодированного символа Ь = pi£i. (6.1) Минимизация производится за счет выбора наилучшего кода среди кодов С источника S, обладающих одним дополнительным свойством. Прием- ник (декодер) должен быть в состоянии по полученной конкатенации ко- довых слов однозначно восстановить посланное сообщение. Таким свой- ством обладают не все коды. Например, код С — {0,01,10} не такой. Последовательность 010 в нем может получится двумя способами: 0, а следом 10, или 01, а следом 0. Таких двусмысленностей нужно избегать. Определение 6.1 Код С называется однозначно декодируемым (сокращенно ОД- кодом), если каждая цепочка, полученная при конкатенации ко- довых слов из С, однозначно разбивается на кодовые слова. Пример 6.1 Пусть п = 4 и С = {0,01,011, 111} (это код из примера 5.1 в обрат- ном порядке). Покажем, что это ОД-код.
6.1. Основы кодирования стационарных источников 93 Рассмотрим конкатенацию кодовых слов. Если первый бит этой по- следовательности — 1, то первым кодовым словом должно быть 111. Если же первый бит этой последовательности — 0, то либо последо- k вательность имеет вид О 11... 1 для некоторого к > О, либо в начале к последовательности стоит подпоследовательность О 11... 1 О для неко- торого к > 1. В зависимости от того, чему равно к: 3£, 3£ 4- 1 или 3£ + 2, первым кодовым словом будет О, 01 или 011 соответственно. После того, как первое кодовое слово однозначно определено, отделим его и применим описанное правило к оставшейся более короткой двоич- ной последовательности. Теорема 6.1 (неравенство Мак-Миллана) [McMi56] Однозначно декодируемый код С мощности п с длинами кодо- вых слов 1 < i < п, существует тогда и только тогда, когда (6-2) Доказательство. Докажем лишь то, что данное неравенство являет- ся необходимым условием существования ОД-кода с кодовыми словами Cj длины 1 < i < п. То, что оно является также и достаточным усло- вием, будет доказано позже в этой же главе. Пусть L = 2^7- Без ограничения общности можно считать, что £1 < £2 < ••• < £п- Тогда % 1 \ il sj—N-£n Aj J ~ 2-^j=N.e1 2-? ’ (*) где через Aj обозначено число способов представления числа j в виде суммы £i1 + £i2 + ... -р £iN. Иначе говоря, Aj — это число способов состав- ления конкатенации длины j из N кодовых слов. Двоичных последовательностей длины j всего 2J штук. Поскольку С — ОД-код, никакая из этих последовательностей не может быть пред- ставлена в виде некоторой конкатенации кодовых слов более, чем одним способом, и, тем более, в виде конкатенации ровно N кодовых слов. Сле- довательно, Aj < 2J. Подставив эти неравенства в формулу (*), получим, что для всех N > 1 выполняется неравенство ьлг<х;.Х1=лг^-^+1- Предположив, что L > 1, получим, что экспоненциально растущая функция от N оценивается сверху линейной функцией от N. Это проти- воречие показывает, что L < 1.
94 Глава 6. Техника сжатия данных В примере 6.1 для декодирования полученной последовательности пришлось исследовать ее префикс, превосходящий по длине самое длин- ное кодовое слово. С практической точки зрения это неудобно. Определение 6.2 Код С называется префиксным или мгновенным кодом, если никакое его кодовое слово не является префиксом другого. Код из примера 6.1 не является префиксным, потому что, например, кодовое слово 0 — префикс кодового слова 01. Ясно, что код из приме- ра 5.1 префиксный. При декодирования последовательности, полученной сцеплением кодовых слов префиксного кода, просто отыщем какой-то ее префикс в списке кодовых слов. Из-за того, что код префиксный, это можно сделать единственным способом. Удалив найденное слово, про- должим точно так же. Отметим, что при использовании префиксного кода для определения первого кодового слова требуется просматривать не более чем £п первых символов декодируемой последовательности. Проведенное наблюдение доказывает следующую лемму. I Лемма 6.2 Любой префиксный код является однозначно декодируемым. Теорема 6.3 (неравенство Крафта [Kraf49]) Префиксный код С мощности п с длинами кодовых слов Д, 1 < г < п, существует тогда и только тогда, когда 1. (6.3) Доказательство. По лемме 6.2 префиксный код однозначно декоди- руем. Следовательно, из неравенства Мак-Миллана (теорема 6.1) следу- ет, что неравенство (6.3) выполняется для каждого префиксного кода. Покажем теперь, что для каждого набора из п чисел £j, 1 < i < n, существует префиксный код (а, значит, и ОД-код) с кодовыми словами длины 1 < г < п. Без ограничения общности можно считать, что £1 < ^2 < ••• < &п- Благодаря такому упорядочению и неравенству У^Д1 < 1, можно взять в качестве векторов ci = (c?,i, Сг,2, •••? сг,^)’ 1 < г < п, двоичные представления чисел уУз.* Т.е. 1 ____ Ci,l Cit2 + ... -ь ciA 2^ Например, = (0,0, ...,0) длины £i, с2 = (0,0,0,1, 0,..., 0) длины (л с 1 в позиции с номером Д, с$ = (0, 0,..., 0,1, 0,..., 0, 1,0,..., 0) длины Д с 1 в позициях с номерами £i и £2, если Д 7^ £2, а если Д = £2, то
6.1. Основы кодирования стационарных источников 95 С3 = (0,0,..., 0,1,0, ...,0) длины £3 с 1 в позиции с номером £{ — 1, и т.д. По определению длина кодового слова сг- равна £i. Осталось показать, что никакое кодовое слово си не может быть пре- фиксом кодового слова cv при u и. Предположим противное. Ясно, что £и £„, иначе эти два слова просто совпадают. Пусть £и < £v, тогда и < v, из чего следует, что г—4,v—1 1 » -\U—1 1 опр. Cu,j префикс ^-0=1 21> 2^i 2ез 2^з Ef-v 1 Ik -kOO 1 1 j=^u+i 2^з ~ 2ез ^-'j=€u+i 2^з 2£u С другой стороны, 4k -o>—1 1 —\U—1 1 ИГ' "tU—1 1 1 2е з 2€< 2~^j=u 2^з 2^u Два этих неравенства противоречат друг другу. Пример 6.2 Рассмотрим числа £± = 1, £2 = 2, £3 = 3 и £4 = £5 = 4. Поскольку + + + + — неравенство Крафта выполняет- ся. Приведенное выше доказательство дает следующие кодовые слова (используются функции Length, Do, Table, IntegerDigits и Print пакета “Mathematica ”): Do 1 = {1, 2, 3, 4, 4}; L = Length [1] ; c=. ; c[l] = Table [0, <1[[1П}] ; i-l Д?гип Do [Print [c[i]] , {i, 2, L}] {0} <1, 0} {1, 1, 0} {1, 1, 1, Ol- li, 1, 1, lJ Легко проверить, что этот код префиксный. Как замечательно, что неравенства Мак-Миллана и Крафта ((6.2) и (6.3)) совпадают. Это означает, что минимум математических ожиданий длин ОД-кодов равен минимуму математических ожиданий длин пре- фиксных кодов! Две следующие теоремы дают оценки для средней длины префикс- ного кода (или ОД-кода).
96 Глава 6. Техника сжатия данных Теорема 6.4 Рассмотрим источник открытых текстов S, выдающий символы mi с вероятностями pi, 1 < г < п. Пусть ОД-код С отображает символ mi в двоичную строку сг- длины 1 < i < п. Тогда средняя длина кодового слова L = Pi • £< удовлетворяет условию L > Н(р). Доказательство. Из известного неравенства Inx < х — 1, х > 0 и неравенства (6.2) следует, что Н(р) -L = - XtiPi •log2₽i - 5X1»^ = h?2 ^=iPi • ln^ Теорема 6.5 Пусть источник открытых текстов выдает символы тгц с ве- роятностями pi, 1 < i < п. Тогда существует соответствующий этому источнику префиксный код С, у которого средняя длина кодового слова L удовлетворяет условию L < Н(р) + 1. Доказательство. Пусть = flog2 1 < п. Тогда 2^ > 1/pj и, значит, Ei=1V2€- <Е^Й = 1- Для этих величин ti, 1 < i < п, построим код С так, как описано в доказательстве теоремы 6.3. Это префиксный код, и средняя длина его кодового слова L удовлетворяет условию L = УТ ! Pi‘£i = 1 Pi' Г1оё2 !/Pd < У?” 1 Pi-(log2 1/Pi + l) = Н(р)+1. • “1= 1 « *г=1 — Следствие 6.6 Минимум средней длины L префиксного (или ОД) кода, соот- ветствующего источнику открытых текстов с распределением вероятностей р, удовлетворяет условию Н(р) <L< Н(р) + 1. Энтропия последовательности из N независимо порождаемых симво- лов ровно в N раз превосходит энтропию одного символа. Применим
6.1. Основы кодирования стационарных источников 97 следствие 6.6 к TV-кам символов, выдаваемых источником. Получим, что минимальное математическое ожидание длины закодированной TV-граммы удовлетворяет условию N • Н(р) < lSN^ < N Н(р) + 1. Это означает, что 1 Н(р)<-<н(р) + -. (fiA) Таким образом, lim^y—юо L<~N > = Н(р). Этим подтверждается последняя из трех приведенных в начале гл. 5 интерпретаций функции энтропии Н. Теперь выведем несколько свойств, которыми обладает префиксный код с минимальной величиной L. Теорема 6.7 Рассмотрим источник открытых текстов «$, выдающий симво- лы mi, 1 < i < п, с вероятностями pi > р% > ... > рп. Пусть С — ОД-код с минимально возможным для такого источника мате- матическим ожиданием длины кодового слова L. По-прежнему его кодовые слова обозначаются через ci, а их длины через 1 < i < п. Тогда после подходящего перенумерования кодо- вых слов, соответствующих равновероятным символам, будут выполняться следующие условия: Р1) ^1 < ^2 < - < еп. Р2) Можно считать, что код С префиксный. РЗ) Е?=1^ = 1- Р4) 1 = £п. Р5) Есть два кодовых слова длины £п, отличающихся друг от друга только последними символами. Доказательство Р1) Допустим, что pu > pv и £и > £v. Изготовим из С новый код С*, поменяв местами слова си и cv. Тогда С* тоже будет однозначно декодируемым. А средняя длина L* слова кода С* будет равна £* = L + Рн(^ “ £и) +Pv(/u - 4) = L + {ри - pv)(£w — £ц) < L. Это противоречит предположению о минимальности L. Если ри = pv, и < v, неравенство < £„ можно получить после необходимого перенумерования равновероятных кодовых слов. Р2) Поскольку необходимые и достаточные условия теорем 6.1 и 6.2 одинаковы, для каждого ОД-кода существует префиксный код с теми же длинами кодовых слов, а, значит, и той же средней длиной кодового слова L.
98 Глава б. Техника сжатия данных РЗ) Если J2i=i то ХЙ=1 < ~^п 1 > поэтому после умень- шения £п на 1 неравенство Крафта (6.3) для кода по-прежнему будет выполняться. По теореме 6.2 найдется префиксный код со средней дли- ной кодового слова меньше L, что противоречит предположению о ми- нимальности L. Р4) Если £п > то из Р1 следует, что слово сп строго длиннее всех остальных. Тогда левая часть равенства в РЗ представляет собой рациональное число со знаменателем 2^ и нечетным числителем. Такое число не может равняться 1. Р5) Удалим последний символ в кодовом слове сп и обозначим получившийся двоичный вектор через с*. Пусть С* = {с15с2,..., сп_ 15 с* }. Из РЗ следует, что код С* не удовлетворяет неравенству Крафта (6.3), значит, не может быть префиксным, каковым по Р2 можно считать код С. Это может означать только то, что слово с* является собственным префиксом некоторого слова Cj, для 1 < j < п— 1. Следовательно, длина слова Cj равна £п, а также слова сп и Cj отличаются только последними символами. Свойство Р5 дает ключ к методу построения ОД-кода с минимальным математическим ожиданием длины кодового слова. Этот метод будет описан в следующем разделе. 6.2 Коды Хаффмана Алгоритм Хаффмана [Huff52] строит для каждого источника откры- тых текстов со стационарным распределением префиксный код с ми- нимальным для данного источника математическим ожиданием длины кодового слова. Этот алгоритм рекурсивный. Если источник открытых текстов может выдавать с ненулевой веро- ятностью только два символа, то наилучшим кодированием будет замена одного из них на 0, а второго на 1. Ясно, что в таком случае L < Н(р) + 1. Каждый шаг рекурсии состоит из двух частей: процесса слияния (ре- дуцирования) и процесса расщепления. Процесс слияния. Пусть источник открытых текстов S выдает символы т,, 1 < i < п, с вероятностями pi > P2 > ... > рп. Заменим символы mn__i и тп одним новым символом вероятность появления которого рав- на Pn-i = Рп-1 +рп- В алфавите получившегося нового источника <$* на один символ меньше, чем в алфавите S. Процесс расщепления. Пусть источник <S* генерирует символы алфавита {m15 т2, ..., mn_2, m* 1}. Пусть С* = {с15с2, •••, сп_2, c*_i} — префиксный код с минималь- ным для источника математическим ожиданием длины кодового ело-
6.2. Коды Хаффмана 99 ва (можно считать, что при построении этого кода в процессе рекурсии символы были перенумерованы в порядке невозрастания вероятностей их появления). Код С определяется равенствами = с* для 1 < i < п — 2, &п—1 (cn—i,0), (.Qn—li 1), т.е. при расщеплении символа m* „ j на два символа ran_i и тп кодовые слова для них получаются в результате приписывания, соответственно, О и 1 к слову С*_р Пример 6.3 Пусть п = б и источник S генерирует символы с вероятностями, указанными в следующей таблице: 7П1 ПЪ2 Шз Ш4 ш5 т6 0.3 0.2 0.2 0.1 0.1 0.1 Для того, чтобы запомнить путь, по которому идет процесс сли- яния, будем обозначать символ через (mn-i +-тп'). После одного слияния и упорядочения символов в порядке невозрастания вероятно- стей их появления получим 7П1 m2 Шз (m5 + т6) ГГЦ 0.3 0.2 0.2 0.2 0.1 Повторяя эту процедуру, получаем mi (m4 + (Ш5 + ТП6)) ТП2 Шз 0.3 0.3 0.2 0.2 затем (т2 + тпз) 7П1 (m4 + (т5 + тп6)) 0.4 0.3 0.3 и, наконец, (mi + (m4 + (m5 + m6))) (m2 + m3) 0.6 0.4 В процессе расщепления проделаем описанные выше шаги в обратном порядке. Начинаем с кода {0,1}. На каждом шаге один символ заменя- ется двумя новыми, коды которых получаются приписыванием к коду старого символа 0 и 1 соответственно. Отметим, что на каждом шаге ггц заменяется на с*. Получаем цепочку
100 Глава 6. Техника сжатия данных (С1 + (Сд + (с5 + с6))) (с2 + Сз) (0) (1) затем (с2 + Сз) С1 (с4 + (С5 + с6)) (1) (0,0) (0,1) затем С1 (сд + (С5 + Сб)) —2 Сз (0,0) (0,1) (1,0) (1,1) затем С1 С2 Сз (С5 + Сб) 04 (0,0) (1,0) (1,1) (0,1,0) (0,1,1) и, наконец, код источника S: С1 С2 Сз С4 С5 С6 (0,0) (1,0) (1,1) (0,1,1) (0,1,0,0) (0,1,0,1) Видно, что £i = £2 = £3 = 2, £4 = 3 и £$ = £g = 4. Легко проверить, что l/2€i = 1 и, что Н(р) < L < Н(р) + 1. Применим функцию MultiEntropy, определенную в разд. 5.1, а затем функцию Length пакета “Mathematica”. Length[р] MultiEntropy[p_List] :=- p[[i] ] *Log[2,p[ [i]]] i=l p = {0.3, 0.2, 0.2, 0.1, 0.1, 0.1}; MultiEntropy[p] 1 = {2, 2, 2, 3, 4, 4>; len = Length[1]; len == 1 ffp[[i]]*l[[i]]J i=l II 2.44644 II True II 2.5 Для демонстрации действия этого кода Хаффмана применим его к тексту, составленному из 6 первых букв алфавита. Сначала смо- делируем источник с помощью функций Which, Random и Do пакета “Mathematica” (знаком О обозначается конкатенация цепочек).
6.2. Коды Хаффмана 101 SeedRandom [12321] ; randomchar[х_] := Which[х <0.3, "а", х < 0.5, "Ъ", х < 0.7, "с”, х < 0.8, "d", х < 0.9, "е", х < 1, "f"]; sourcetext = n = 10; Do [sourcetext = sourcetext <> randomchar[Random[Real, {0, 1}]] , {j , 1, n}]; sourcetext II eedcbccaec Для кодирования применим описанный выше код Хаффмана и функ- цию StringReplace пакета “Mathematica”. code = StringReplace[sourcetext, {"a" —> "00", "b" —> "10", "c" Hdu "Oil", "e" "0100", "f" —> "0101"}] II 010001000111110111100010011 Чтобы сравнить длину такого кодирования с энтропией источни- ка; применим определенную выше функцию MultiEntropy и функцию StringLength пакета “Mathematica”. StringLength[code] / n - MultiEntropy[p] II 0.253561 Процесс декодирования в пакете “Mathematica” можно выполнить с помощью функции StringReplace, поскольку эта функция действует слева направо. StringReplace[code, {"0101" —> "f", "ОЮО" -+ "е", "Oil" -+ "d", "11" -+ "с", "10" -+ "b", "00" -+ "a"}] sourcetext == st II eedcbccaec II True Лучший способ описания процесса декодирования дает следующий рисунок. Читаем полученную строку слева направо. Одновременно с этим перемещаемся по дереву, начиная от корня. В зависимости от того, прочитан символ 0 или символ 1, сдвигаемся по дереву вправо вниз или вправо вверх. При достижении листа дерева (концевой вершины) пишем соответствующий этому листу символ алфавита источника, после чего вновь начинаем от корня. Например, два первых символа в последовате- льности "00010000010000101000010011" это "00". Их прочтение приводит к символу "а". Прочтение следующих четырех символов "0100" приво- дит к символу "е", и т.д.
102 Глава 6. Техника сжатия данных Рис. 6.1. Дерево декодирования для кода Хаффмана. Лемма 6.8 Пусть источник открытых текстов S выдает символы ттц, 1 < г < п, с вероятностями р± > ръ > > рп- Обозначим че- рез <S* редуцированный источник открытых текстов, который выдает символы т*, 1<г<п— 1,с вероятностями р* = Pi, 1<г<п — 2, и р^-1 = Рп-i + Рп- Предположим, что С* — префиксный код с минимальным для источника 5* мате- матическим ожиданием длины кодового слова. Пусть слова из О'* обозначаются через с*, 1 < г < п —- 1. Определим для источника S код С так, что = с* для 1 < г < п — 2, ^п—1 = (CCn--l)b •••> (с^_1)п-1,0), и сп = ((c*_T)i,(с* _1)п_] ,1). Тогда С — префиксный код с минимальным для источника S математическим ожиданием длины кодового слова. Доказательство. Очевидно, что код С префиксный. Через Ц и I* обозначим длины слов и с* соответственно. Эти числа связаны равен- ствами Ц = I* при 1 < i < п — 2 и ln-i = In = ^n-i + 1- Средние длины L и L* кодов С и, соответственно, С* связаны равенством п п—2 п—2 Т = Pi lj = ^Pjlj Т Рп— l^n— 1 + Рп^п = ^Pj^i TPn—1(^п—1 Т i=l г=1 г=1 п—2 +PnQn-l + 1) = + {Рп-l + Рп)^п-1 + (Рп-1 + Рп) = г=1 п-2 = +Рп-11п-1 + (Рп-1 +Рп) — L* + (Рп-1 +Рп)- i=l Из теоремы 6.7 и рассуждения, подобного приведенному выше, следует, что любой префиксный код С с минимальным для источника S мате- матическим ожиданием длины кодового слова сводится к префиксно- му коду для источника <S* со средней длиной кодового слова, равной
6.2. Универсальное сжатие данных, алгоритмы Лемпеля-Зива 103 £ ~~ (Рп-1 + Рп)- Поскольку длина L* была минимальна для <$*, имеем L - (pn-i + рп) > L* = L — (рп-i + Рп), т.е. L > L. Но длина L была минимальна для S, следовательно, L = L, т.е. код С имеет минимальное для источника математическое ожидание длины кодового слова. Лемма 6.9 Пусть источник открытых текстов выдает символы ттц, 1 < < i < п, с вероятностями pi > Р2 > ... > рп. Тогда код Хафф- мана имеет минимальное среди всех ОД-кодов для данного ис- точника математическое ожидание L длины кодового слова. Доказательство. При п = 2 утверждение очевидно, поскольку код Хаффмана будет равен {(0), (1)} и L — 1. Индуктивный переход — это прямое следствие из леммы 6.8. 6.3 Универсальное сжатие данных, алгоритмы Лемпеля-Зива Если требуется сжимать данные из источника с неизвестным рас- пределением, то алгоритм Хаффмана оказывается неприменимым. В та- кой ситуации необходима так называемая техника универсального сжа- тия данных. Примерами такой техники являются алгоритмы Лемпеля- Зива (их два) и техника, называемая арифметическим кодированием (см. [ZivL77], [ZivL78] и, соответственно, [RisL79]). В [ZivL77] авторы вводят окно фиксированной длины, которое сколь- зит, скажем, слева направо над последовательностью символов, по- рожденной источником. Это скользящее окно состоит из двух частей: бблыпая часть слева, называемая буфером поиска, и меньшая часть спра- ва, называемая буфером предварительного просмотра. Символы источ- ника в буфере поиска уже закодированы. Кодер ищет в буфере поиска самую длинную из копий префиксов буфера предварительного просмот- ра и кодирует этот префикс. Предположим, что первые j еще не зако- дированных символов совпали с j символами в буфере поиска, распо- ложенными, начиная с г-й его позиции, а вслед за ними стоит символ а, не совпадающий со следующим символом в буфере поиска. Тогда ко- дер выдаст тройку (i,j, а), а скользящее окно сдвинется на j + 1 букву вправо. Например, предположим, что длина буфера поиска равна 10, а длина буфера предварительного просмотра — 5. Пусть скользящее окно выгля- дит так, как показано на рис. 6.2. Самой длинной парой совпадающих кусков, которые можно найти, будут первые три символа буфера предварительного просмотра и три буквы, начиная с 3-й позиции буфера поиска. Кодер пошлет тройку (3,3, а), где а — первый символ, с которого начинается несовпадение.
104 Глава 6. Техника сжатия данных 123456789 10 12345 буфер поиска буфер предваритель- ного просмотра Рис. 6.2. Скользящее окно. Скользящее окно сдвинется на четыре символа вправо. В начале работы, когда буфер поиска пуст, кодер выдает (0,0, ж), где х — первый символ, выданный источником. Обсудим теперь частный случай кодов Лемпеля-Зива. Мы следуем [Well99], где также можно найти и анализ этого их варианта. Основная его идея состоит в том, что обе стороны (отправитель и получатель) со- здают словарь, в котором в компактном виде представлены подстроки, пересылавшиеся ранее. Если потребуется сжать новую строку, которая уже содержится в словаре, то ее кодируют при помощи индекса соот- ветствующей записи в словаре. В общем случае этот индекс оказывается намного короче, чем сама строка. Если же новая строка еще не содер- жится в словаре, то потребуется выполнить более значительную работу. Словарь, который одновременно создают отправитель и получатель, будет (значительно) больше, чем алфавит А источника <S. Однако его можно хранить весьма эффективным способом в виде так называемого связного списка. Читатель должен понимать, что использование алгоритма Лемпеля- Зива включает кое-что большее. Однако, для файлов средней длины (скажем, размером в одну страницу текста) его применение уже оправ- дано. □ Инициализация Как уже отмечалось выше, словарь хранится в виде связного списка. Каждая запись в этом списке имеет собственный адрес и. Запись пред- ставляет собой пару (ща), в которой v — указатель на другую запись словаря (т.е. v — какой-то адрес), а а — буква алфавита А. Обозначим мощность алфавита А через А. Перед запуском алгоритма заполним словарь следующими записями (их Л + 1 штук): адрес указатель буква 0 0 0 1 0 (21 2 0 (22 Л 0 ад Заметьте, что все эти записи указывают на элемент списка с адресом 0. В алфавите А нет символа 0. Это дополнительный символ, служащий знаком препинания.
6.3. Универсальное сжатие данных, алгоритмы Лемпеля-Зива 105 Чтобы запустить алгоритм, сделаем значение указателя v равным 0, а значение указателя адреса и равным А + 1 (и содержит адрес первой пустой записи в связном списке). □ Кодирование Алгоритм 6.10 (Кодирование Лемпеля-Зива) do begin прочитать следующий символ источника а if пара (v, а) содержится в словаре then присвоить переменной v значение адреса пары (v, а) else begin 1) переслать v, 2) поместить в словарь новую запись (v, а) по адресу и, 3) и := и + 1 (увеличить указатель и на 1), 4) присвоить переменной v значение адреса пары (0, а) end until остановка работы источника1 Процедура, описанная выше, имеет следующую интерпретацию. Ес- ли пара (v, а) содержится в словаре, то кодер перерабатывает строку, которая уже встречалась когда-то ранее. Приписывание переменной v значения адреса пары (v, а) создает возможность позднее восстановит ь этот список. Если пара (v, а) не содержится в словаре, то кодер столкнулся со строкой, которую он ранее не перерабатывал. Он пересылает и, по ко- торому получатель узнает адрес последнего символа предшествующей строки. Далее кодер добавляет в словарь новую запись (v, а) по адресу и. Символ а будет служить корнем новой строки. Указателю v придается значение адреса записи (0, а). Число 0 в этой записи указывает в словаре на запись (0,0), которая отмечает начало новой строки. Заметим, что выходными символами в процессе кодирования являют- ся словарные индексы, точнее, адреса связного списка. Их длина расте г как логарифм от длины словаря. Заметим также, что все более часто при прочтении нового символа источника не генерируется новый выходной символ, поскольку текущая строка уже кодировалась ранее. Пример 6.4 (часть 1) Допустим, что мы хотим сжать двоичную строку т.е. А = {0,1} и А = 2. Инициализируем процесс кодирования, положив Diet = «0, -1}, {0, 0}, {0, 1П и = 3; v = 0; output {}•; II «О, -1}, {0, 0}, {0, 1}} Отметим, что вместо пустого символа 0 используется отрица- тельное число — 1. 1 После этого требуется еще раз переслать v. — Прим, перев.
106 Глава 6. Техника сжатия данных Для демонстрации процесса кодирования будем для каждого нового символа Si источника выдавать новый словарь (представленный в виде связного списка), новые значения переменных и и v и полную выходную последовательность. Применим функцию Position пакета “Mathematica”, которая находит место элемента в списке. Поскольку наш список включает в себя спис- ки в качестве элементов, мы добавляем [[1]] дважды. Заметьте, что мы вычитаем 1 из адреса, поскольку наша нумерация начинается с О, а не с 1. Pos[s List, el List] := Position [s, el] [[1]] [[1]] - 1 Например, 1 = «31, Ш, {7}, {2}, {!}}; el = {7}; Pos[l, el] II 2 Теперь мы готовы к процессу кодирования. Применим функции Do, If, MemberO, Append и Print пакета “Mathematica”. s = {1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1}; Do[If[MemberO[Diet, {v, s[[i]]}]> v = Pos[Dict, <v, s[[i]]}], output = Append[output,v]; Diet = Append[Diet, <v, s[[i]]}]; v = Pos[Dict, <0, s[[i]]}]]; Print [Diet, ", v=", v, ", total output is ", output], <i, 1, Length[s]}]2 || «0, -1}, {0, 0J-, {0, I}}, v=2, total output is «0, -1}, {0, 0}, {0, 1}, {2, Ш, v=2, total output is {2} «0, -1}, {0, 0}, {0, 1}, <2, 1}, <2, 0}}, v=l, total output is <2, 2} «0, -1}, {0, 0}, {0, 1}, {2, 1J-, {2, 0}, {1, 0}}, v=l, total output is <2, 2, I} «0, -1}, {0, 0}, {0, 1}, {2, 1}, <2, 0}, {1, 0}}, v=5, total output is {2, 2, 1} «0, -1}, {0, 0J-, {0, 1}, <2, 1}, {2, 0}, {1, 0}, {5, I}}, v=2, total output is <2, 2, 1, 5} 2 Следует добавить команду output = Append[output,v] . — Прим, nepee.
6.3. Универсальное сжатие данных, алгоритмы Лемпеля-Зива 107 «0, -1}, {О, 0}, {О, 1}, <2, 1}, {2, 0}, {1, 0}, {5, I}}, v=4, total output is <2, 2, 1, 5} «О, -1}, {О, 0}, {0, 1}, {2, 1}, {2, О}, {1, 0}, {5, 1}, {4, I}}, v=2, total output is {2, 2, 1, 5, 4} «0, -1}, {0, 0}, {0, 1}, <2, 1}, {2, 0}, {1, 0}, {5, 1}, {4, I}}, v=3, total-output is <2, 2, 1, 5, 4} HO, -1}, {0, 0}, {0, 1}, <2, 1}, {2, 0}, {1, 0}, {5, 1}, {4, I}, <3, 0}}, v=l, total output is <2, 2, 1, 5, 4, ЗУ HO, -1}, {0, 0}, {0, 1}, {2, 1}, {2, 0}, {1, 0}, {5, 1}, {4, I}, <3, 0}}, v=5, total output is <2, 2, 1, 5, 4, 3} HO, -1}, {0, 0}, {0, 1}, <2, 1}, <2, 0}, {1, 0}, {5, 1>, <4, I}, {3, О}}, v=6, total output is <2, 2, 1, 5, 4, 3}3 □ Декодирование Для правильного декодирования получатель должен иметь возмож- ность создать точно такой же словарь, как и у отправителя. Он может действовать лишь тогда, когда приходит новый символ. Пусть v — такой символ. В соответствии с алгоритмом кодирования (алг. 6.10), поступление символа v означает, что к словарю был добавлен новый (скажем и-й) элемент. Указателем этой новой записи является v. Символ источника этой новой записи не известен, поскольку он явля- ется корневым символом следующей строки, который пока еще не зако- дирован отправителем. Таким образом, пока в словарь можно добавить только пару (и,?). Однако получатель теперь может заполнить отсутствующий символ в предыдущей записи словаря (по адресу и — 1). Далее получатель сможет декодировать всю строку символов источ- ника, связанную с полученным символом. Продемонстрируем описанный выше процесс для полученной после- довательности из примера 6.4. Пример 6.4 (часть 2) Получатель выполняет такую же инициализацию, как и отправи- тель, т.е. и = 3, v = 0, а словарь определяется как {(0,0), (0,0), (0,1)}. Он получает следующий список символов: (2, 2,1, 5,4, 3). Первый полученный символ — это v = 2. Таким образом, новая запись словаря (2,?) будет иметь адрес и = = 3. Позицию, где поставлен вопрос, пока нельзя заполнить. Число 2 в (2,?) указывает в словаре на запись с адресом 2, а это (0,1). Эта запись говорит, что последний символ предыдущей строки 3Окончательно должно быть послано {2, 2, 1, 5, 4, 3, 6}. — Прим, перев.
108 Глава 6. Техника сжатия данных был 1, и что для поиска его предшественника нам следует перейти к записи словаря с адресом 0. Эта запись (0, 0) обозначает конец поиска. Декодированная строка — это “1”. Новый словарь определяется как {(0, 0), (0,0), (0,1), (2, ?)}. Второй полученный символ — это v = 2. Чтобы заполнить место в текущем словаре, помеченное вопросом, посмотрим на запись с адресом v = 2. Это (0,1). Символ источника из нее следует поставить вместо вопроса. Следовательно, получится такой словарь: {(0,0), (0, 0), (0,1), (2,1)}. Кроме того, в словарь нужно добавить новую запись, а именно (и, ?) = (2, ?) по адресу и = 4. Число 2 в этой новой записи (2,?) указывает в словаре на запись с адресом 2, а это (0,1). Эта запись говорит, что последний символ предыдущей строки был 1, и что для поиска его предшественника нам следует перейти к записи словаря с адресом 0. Эта запись (0, 0) обо- значает конец поиска. Декодированная строка — это “1”. Новый словарь определяется как {(0, 0), (0, 0), (0,1), (2,1), (2, ?)}. Третий полученный символ — это v = 1. Чтобы заполнить место в текущем словаре, помеченное вопросом, посмотрим на запись с адресом v = 1. Это (0,0). Символ источника из нее следует поставить вместо вопроса. Следовательно, получится такой словарь: {(0, 0), (0, 0), (0,1), (2,1), (2,0)}. Кроме того, в словарь нужно добавить новую запись, а именно (и, ?) = (1, ?) по адресу и = 5. Число 1 в этой новой записи (1, ?) указывает в словаре на запись с адресом 1, а это (0,0). Эта запись говорит, что последний символ предыдущей строки был 0, и что для поиска его предшественника нам следует перейти к записи словаря с адресом 0. Эта запись (0,0) обо- значает конец поиска. Декодированная строка — это “0”. Новый словарь определяется как {(0,0), (0,0), (0,1), (2,1), (2,0), (1,?)}- Четвертый полученный символ — это v = 5. Чтобы заполнить место в текущем словаре, помеченное вопросом, посмотрим на запись с адресом v = 5. Это (1, ?). Ее указатель 1 ссыла- ется на другую запись в словаре, а именно на (0,0). Указатель 0 в этой записи означает, что мы находимся в начале строки. Символ источ- ника из (0,0) означает, что ? = 0. Следовательно, получится такой словарь: {(0,0), (0,0), (0,1), (2,1), (2,0), (1,0)}. Кроме того, в словарь нужно добавить новую запись, а именно (и, ?) = (5, ?) по адресу и = 6. Число 5 в этой новой записи (5, ?) указывает в словаре на запись с адресом 5, а это (1,0). Эта запись говорит, что последний символ предыдущей строки был 0, и что для поиска его предшественника нам следует перейти к записи словаря с адресом 1, а это (0,0). Эта запись говорит, что предпоследний символ предыдущей строки был 0, и что
6.4. Задачи 109 для поиска его предшественника нам следует перейти к записи словаря с адресом 0. Эта запись (0, 0) обозначает конец поиска. Декодированная строка — это “00”. Новый словарь определяется как {(0, 0), (0, 0), (0,1), (2,1), (2, 0), (1,0), (5,?)}- Предлагаем читателю продолжить этот процесс. 6.4 Задачи Задача 6.1. Декодируйте строку 01100111111111100011, полученную с по- мощью кода из примера 6.1. Задача 6.2. Примените алгоритм Хаффмана к источнику открытых тек- стов <$, генерирующему символы a, b, с, d, е, f, g и h независимо друг от друга с вероятностями 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128 и 1/128 соответствен- но. Каково среднее число битов, необходимых для кодирования одной буквы? Сравните это число с энтропией источника. Задача 6.3м. Повторите процесс, описанный в примере 6.3, для источника открытых текстов S, генерирующего символы а, b, с, d, е, /, g и h независи- мо друг от друга с вероятностями 1/3, 1/4, 1/6, 1/12, 1/15, 1/20, 1/30 и 1/60 соответственно. Задача 6.4. Примените вариант Уэллша алгоритма кодирования Лемпеля- Зива к последовательности 0000000000000000. Продемонстрируйте первые пять шагов процесса декодирования.
Глава 7 Криптография с публичными ключами 7.1 Теоретическая модель 7.1.1 Мотивировка и общая структура С точки зрения современных систем связи традиционные криптогра- фические системы имеют два существенных недостатка. i) Проблема распределения ключей и управления ими. Система связи с п участниками, использующими традиционную крип- тосистему для связи друг с другом, нуждается в Q) ключах и Q) без- опасных каналах. Всякий раз, когда один из участников захочет изме- нить свои ключи или когда появляется новый участник системы, при- ходится генерировать и распределять п — 1 (соответственно, п) новых ключей по столь же многим безопасным каналам. ii) Проблема аутентификации. В коммуникационных системах, управляемых компьютерами, необ- ходим электронный эквивалент подписи. Традиционные криптосистемы не обеспечивают естественным образом эту потребность, особенно в слу- чае конфликта между отправителем и получателем, когда невозможно решить, кто прав. Любое сообщение, отправленное одним из них, может быть также отправлено другим. Эти недостатки побудили исследователей к поиску криптосистем ино- го рода. У. Диффи и М. Хеллман опубликовали в [DifH76] пионерскую работу о криптосистемах с публичными ключами; см. рис. 7.1. Каждый пользователь U криптосистемы создает пару согласованных алгоритмов Рц и Su (или получает их из достойного доверия источни- ка). Эти алгоритмы'оперируют с элементами множеств, которые будут определены позже.
7.1. Теоретическая модель 111 Рис. 7.1. Криптосистема с публичными ключами для шифрования. Пользователь U должен объявить алгоритм Ри публичным, тогда как* алгоритм Su он должен держать в секрете. Эти алгоритмы, в зависи- мости от применения, должны удовлетворять некоторым из следующих условий: ПК1. Алгоритмы Ри и Su эффективны, т.е. не требуют слишком боль- шого времени вычислений или большой памяти. ПК2. Su(Pu(piy) = для любого пользователя U и любого возможного сообщения т. ПКЗ. Невозможно найти, исходя из Ри, алгоритм S^, удовлетворяющий равенствам = т для всех т. ПК4. Pu(Su(rny) = т для любого пользователя U и любого возможного сообщения т. ПК5. Невозможно найти, исходя из Ри, алгоритм Sy, удовлетворяющий равенствам Pu{Sy{rn}') = т для всех т. Условия ПКЗ и ПК5 сформулированы неточно. Их точный смысл во многом зависит от применений и может меняться со временем. 7.1.2 Конфиденциальность Допустим, что выполняются условия ПК1, ПК2 и ПКЗ. Если Алиса хочет послать Бобу зашифрованное сообщение т, то она сначала отыскивает публичный алгоритм (шифрования) Рв Боба и шиф- рует т, применяя Рв- Таким образом, она посылает Бобу с = Рв(т).
112 Глава 7. Криптография с публичными ключами Боб из полученного шифртекста с восстанавливает тп, применяя к с свой (секретный) алгоритм Sb- В самом деле, SB(c) = Sb(Pb(^)) П=2 Чтобы система была практичной, должно выполняться условие ПК1. Для безопасности системы требуется условие ПКЗ, позволяющее пуб- ликовать алгоритмы шифрования Ру без угрозы конфиденциальности передаваемых сообщений. Резюмируем схему шифрования в следующей таблице. ПУБЛИЧНЫЕ Ри ВСЕХ УЧАСТНИКОВ U СЕКРЕТНЫЕ Su ДЛЯ ВСЕХ УЧАСТНИКОВ, КРОМЕ U условия ПК1, ПК2, ПКЗ ШИФРОВАНИЕ ТП Алисой Рв(ш) = С дешифрование с Бобом <$в(с) = m Таблица 7.1. Криптосистема с публичными ключами, используемая для шифрования. Если пользователь U хочет изменить свой личный ключ, он просто генерирует новые согласованные алгоритмы Ри и Sy, удовлетворяющие условиям ПК1, ПК2 и ПКЗ, и объявляет Ру публичным. То же самое должен сделать новый пользователь, если захочет участвовать в данной системе связи. Авторы публикации [DifH76] предложили использовать для шифро- вания одностороннюю функцию-ловушку. Односторонняя функция - это функция / : А--> В со следующими свойствами: Fl) f(a) легко вычисляется для любого a G А. F2) вычислительно невозможно найти /"“(b) почти для всех b Е В. Односторонняя функция-ловушка — это односторонняя функция с еще одним свойством F3) /"“(b), b Е В, легко вычисляется, если известна некоторая допол- нительная информация. Свойство F1 делает такую функцию практичной в использовании, тогда как свойство F2 обеспечивает безопасность при использовании / в целях шифрования. Свойство F3 делает возможным дешифрование сообщений получателем.
7.1. Теоретическая модель 113 В повседневной жизни в качестве односторонней функции можно ис- пользовать телефонную книгу; по заданному имени легко найти соответ- ствующий телефонный номер, но не наоборот. Отыскание телефонного номера некой персоны равнозначно нахождению имени этой персоны. Это требует log2 L операций, если L — число имен в телефонном спра- вочнике. Нахождение же имени по заданному телефонному номеру озна- чает просмотр всей книги, имя за именем. Сложность равна L. Свойство F2 базируется на экспоненциальной связи между log2 L и L. Односторонние функции f используются также для проверки аутен- тичности персоны, желающей получить доступ к некоторым данным. Каждый пользователь U имеет свой собственный ПИН-код (персональ- ный идентификационный номер) хц, но в центральном компьютере за- писано только имя U вместе со значением у и — f(xu). Когда U захочет получить доступ, он должен ввести свое имя и хц- Значение f(xu) будет вычислено и послано компьютеру. Если это значение совпадет с уи, то пользователь U может получить доступ, а иначе нет. Преимущество этой системы состоит в том, что ПИН-коды хц не надо хранить в компьюте- ре. Поэтому никто, способный считывать память компьютера, не сможет определить ПИН-коды. В главах 8, 9 и 12 мы обсудим различные предложения односторонних функций-ловушек, которые можно использовать для создания крипто- систем с публичными ключами. В следующей главе мы встретимся с односторонней функцией, которая не имеет ловушки. 7.1.3 Цифровая подпись Допустим, что выполняются условия ПК1, ПК4 и ПК5. Если Алиса хочет подписать сообщение т, которое нужно послать Бобу, то она применяет к тп свой собственный секретный алгоритм Sa и посылает с = 5д(т). Боб восстанавливает тп из с, применяя к с публично известный алгоритм Ра. В самом деле, Ра (с) = Рд(5д(т)) П=4 тп. Однако возможно и обратное: любой способен найти такую пару (т, с), что с окажется подписью для тп, т.е. такую, что Рд(с) = тп: можно просто взять любое с и вычислить тп = Рд(с). Поэтому Алиса должна позаботиться о том, чтобы случайно выбран- ное с имело ничтожную вероятность привести к полезному сообщению Ра (с) = тп. Этого можно добиться довольно легко, предполагая некото- рую структуру в каждом сообщении, например, начиная его с даты и времени. Резюмируем объясненную выше систему подписи в следующей таб- лице.
114 Глава 7. Криптография с публичными ключами ПУБЛИЧНЫЕ Ри ВСЕХ УЧАСТНИКОВ U СЕКРЕТНЫЕ Su ДЛЯ ВСЕХ УЧАСТНИКОВ, КРОМЕ U условия ПК1, ПК4, ПК5 ПОДПИСЫВАНИЕ ТП АЛИСОЙ $а(тп) ~ С проверка с Бобом Рд(с) = тп Таблица 7.2. Криптосистема с публичными ключами, используемая для подписывания сообщения. Заметим, что любой другой пользователь тоже может проверить под- пись Алисы, вычисляя Рд(с), так что здесь нет никакой секретности. 7.1.4 Конфиденциальность и цифровая подпись Допустим, что выполняются все условия ПК1-ПК5. Если Алиса хочет послать Бобу сообщение тп в зашифрованном виде и со своей подписью, то она комбинирует технику подразд. 7.1.2 и 7.1.3. Именно, используя собственный секретный алгоритм Sa и публичный алгоритм Рв Боба, она посылает с = Рв(5д(т)). Боб восстанавливает тп из с, применяя PaSb- В самом деле, Pa(SB((c)) = Рл(«в(РВ(«л(т)))) П=2 PA(SA(m)) П=4 тп. Хотя любой может прибегнуть к публичному Рв, только Боб может восстановить тп из с, поскольку он один знает Sb- Подписью Алисы Боб считает значение Sb{c), т.е. Sв{Рв(Sд(?п))), равное За{тп)- Резюмируем все это в следующей таблице. ПУБЛИЧНЫЕ Ри ВСЕХ УЧАСТНИКОВ U секретные Su для всех участников, кроме U УСЛОВИЯ ПК1, ПК2, ПКЗ, ПК4, ПК5 Алиса посылает Рв(5д(т)) = с Боб вычисляет Pa{Sb{c)) = тп Боб сохраняет Sb{c) = За{тп) Таблица 7.3. Криптосистема с публичными ключами, используемая для шифрования и подписывания.
7.2. Задачи 115 7.2 Задачи Задача 7.1. В коммуникационной сети каждый пользователь U имеет свои собственные публичный алгоритм шифрования Ри и секретный алгоритм дешифрования Su. Сообщение тп от пользователя А (Алисы) пользователю В (Бобу) всегда посылается в формате (с, А), где с = Рд(т). Имя отправителя в этом сообщении говорит Бобу, от кого пришло сообщение. Боб восстанавливает тп из (с, А), вычисляя Sj?(c) = 5'в(Рв(^п)) — тп (см. ПК2), но Боб, кроме того, автоматически посылает Алисе пару (Рд(т), В) (за- метим, что (Рд(т), В) имеет тот же формат, что и (Рв(т), А)). Таким образом, Алиса узнает, что ее сообщение правильно получено Бобом. а) Покажите, как третий пользователь сети Е (Ева) может восстановить сообщение тп, посланное Бобу Алисой. Можно предполагать, что Ева способна перехватывать все сообщения, передаваемые по сети, а любой С может переда- вать свои собственные тексты при условии, что они имеют правильный формат. б) Покажите, что связь по этой сети по-прежнему остается небезопасной, если протокол таков, что Алиса посылает Бобу Рв((Рв(т), А)), а Боб автома- тически посылает обратно Алисе Рд ((Рд(т), Р)).
Глава 8 Системы, основанные на дискретных логарифмах 8.1 Система дискретных логарифмов 8.1.1 Проблема дискретных логарифмов Диффи и Хеллман в [DifH76] предложили систему распределения публичных ключей, которая базируется на несомненной трудности вы- числения логарифмов над конечным полем GF(p), р простое, которое часто обозначается через Fp или Zp. Читатель, не знакомый с теорией конечных полей, отсылается к приложению В. Пусть а. — примитивный элемент (или образующий) поля GF(p). То- гда каждый ненулевой элемент с из GF(p) может быть записан в виде с = ат, (8.1) где т единственно по модулю р — 1. Пример 8.1 В GF(7) элемент а = 3 примитивен, что легко проверит,ь вычис- лениями: З2 = 2 (mod 7), З3 = 6 (mod 7), З4 = 4 (mod 7), З5 = 5 (mod 7), З6 = 1 (mod 7). Это можно сделать одновременно: Mod[3 ~ -С1, 2, 3, 4, 5, 6>, 7] || <3, 2, 6, 4, 5, 13- Пример 8.2 В GF(197) элемент а = 2 примитивен. Такой элемент можно най- ти с помощью функции PowerList пакета “Mathematica” (для чего снача- ла нужно инициализировать пакет Algebra‘FiniteFields‘). Эта функция находит примитивный элемент в Fp и порождает все его степени (на- чиная с 0-й). Второй элемент получаемого списка — сам примитивный элемент. << Algebra<FiniteFields< Р = 197; PowerList[GF[p, 1J 3 [[2]]
8.1. Система дискретных логарифмов 117 II {2} Проверить, что 2 — примитивный элемент по модулю 197, го- раздо легче. Мультипликативная группа Zjg7 имеет порядок 196, так что порядок каждого элемента делит 196 (см. теорему В. 5). Функция Factorinteger помогает найти все различные простые делители числа Ж Factorinteger [196] II «2, 2}, <7, 2Я Теперь из PowerMod[2, 196 / ' 7, 197] == 1 PowerMod[2, 196 / ' 2, 197] == 1 II False II False следует, что порядок элемента 2 по модулю 197 не делит 196/2 и 196/7, так что этот порядок должен быть равен 196. Если т задано, то с можно вычислить по формуле (8.1) с помощью 2-[log2p] умножений (см. [Knut81] или [Knut69], разд. 4.6.3). Это можно реализовать, создав таблицу а, а2, а22, а23,..., a2riog2₽1 (каждая сте- пень — квадрат предыдущей) и перемножив те элементы этой таблицы, чьи показатели при сложении дают т. Для этой цели можно использо- вать двоичное представление т. Пример 8.3 Возьмем т = 171. Его двоичным представлением служит 10101011, как показывает функция IntegerDigits пакета “Mathematica”: IntegerDigits [171, 2] || {1, 0, 1, 0, 1, 0, 1, 1} Получается а171 = а128 • а32 • а8 • а2 а. Это вычисление можно сделать “на лету”. Самая левая единица в двоичном представлении т заменяется на а. Каждый последующий символ влечет возведение в квадрат предыдущего результата, но если этот символ есть 1, то по- лученный квадрат дополнительно умножается на а. II Clear [a] ; II a171
118 Глава 8. Системы, основанные на логарифмах Если модулярное возведение в одну и ту же степень нужно выполнять много раз, например, в smart-карте, то имеются способы делать это с меньшим числом умножений. Определение 8.1 Аддитивной цепочкой для натурального тп называется последо- вательность натуральных чисел ai = 1 < •• < ae—i < ag = т с тем свойством, что каждое а^, 2 < к < £, есть сумма двух (не обязательно различных) предыдущих чисел. Число £ называют длиной цепочки. Способ использования аддитивных цепочек для (модулярного) возве- дения в степень ясен. Если = ai+aj, то аак = oiai -аак Следовательно, ат = аае можно вычислять рекурсивно. Но, вообще говоря, не очевид- но, как находить кратчайшую аддитивную цепочку для натурального т. См. [Knut81] или [Knut69], разд. 4.6.3, и [Bos92], гл. 4. Пример 8.4 Последовательность 1,2,3,6,12,15 является аддитивной цепочкой для т = 15. Заметим, что вычисление аII * * * 15 с этой аддитивной цепоч- кой включает 5 умножений, а с помощью описанного ранее бинарного метода 6 умножений. Функция PowerMod пакета “Mathematica” реализует быстрый способ модулярного возведения в степень. а = 2; m = 171111111; р = 197888888; PowerMod[а, т, р] II 55895160 Обратная задача нахождения т, удовлетворяющего (8.1), по данному с не столь легка. Она называется проблемой дискретных логарифмов, по- тому что в показатель т можно записать как т = loga с. В [Knut73], с. 9, 575-576 (с. 22, 681 русского перевода) можно найти алгоритм, ре- шающий проблему логарифмов. Он требует грубо ci^/p операций и c^^Jy битов памяти (где с± и С2 — некоторые константы). В теореме 8.1 будет1 дан более точный анализ этого алгоритма. Записывая t = log2 р (и забы- вая о константах), получаем следующую экспоненциальную связь между возведением в степень и взятием логарифмов. Возведение в степень t Взятие логарифмов 2е/2 Таблица 8.1. Экспоненциальное расхождение между возведением в степень и взятием логарифмов.
8.1. Система дискретных логарифмов 119 8.1.2 Система Диффи-Хеллмана обмена ключами Теперь мы опишем, как можно использовать расхождение во времени вычисления между возведением в степень и взятием логарифмов, отра- женное в табл. 8.1, чтобы выполнить протокол обмена ключами в духе криптографии с публичными ключами. Такой протокол является без- опасным методом согласования общего секретного ключа двумя сторо- нами, которые до того не разделяли общий ключ. Формирование системы: 1) Все участники разделяют в качестве системных параметров про- стое число р и примитивный элемент а в GF(p). 2) Каждый участник Р выбирает случайное целое число тр, 1 < < тр < р —- 2, вычисляет ср = атр и помещает его в книгу публичных ключей. Участник Р держит тр в секрете. Использование системы: Допустим теперь, что АлиСа (для краткости А) и Боб (В) хотят об- щаться друг с другом, используя традиционную криптосистему, но у них нет безопасного канала для обмена ключом. С помощью книги публич- ных ключей они могут согласовать общий секретный ключ кА,в = атАтв. Алиса может вычислить кА,в, возводя публично известное св в степень тА, известную лишь ей одной. В самом деле, (св)тА = (атв)тА = атАтв = кА,в. Аналогично Боб находит кА,в, вычисляя (сд)тв. Если кто-то другой (скажем, Ева) способен вычислить тд, исходя из сА (или тв, исходя из св), то этот кто-то может вычислить ключ к а,в в точности так же, как это сделали Алиса или Боб. При достаточно большом р время вычислений, необходимое для решения этой проблемы логарифмов, становится недоступно большим. И, видимо, не существу- ет иного пути нахождения кА,в, исходя из сА и св. Диффи и Хеллман предлагают брать р около 100 битов длиной. Нет никаких очевидных резонов ограничивать размер конечного по- ля простым числом. Впредь размер поля может быть произвольной сте- пенью q — ре простого числа (см. теорему В. 16 или теорему В.20). В [Lune87], гл. XIII, описаны эффективные алгоритмы нахождения при- митивных элементов в конечных полях. См. также задачи В.6 и В. 10. Резюмируем систему распределения ключей в табл. 8.2.
120 Глава 8. Системы, основанные на логарифмах СИСТЕМНЫЕ ПАРАМЕТРЫ РАЗМЕР ПОЛЯ q ПРИМИТИВНЫЙ ЭЛЕМЕНТ a СЕКРЕТНЫЙ КЛЮЧ Р ПУБЛИЧНЫЙ КЛЮЧ Р ОБЩИЙ КЛЮЧ А и В Алиса вычисляет Боб вычисляет mp ср = amp кА в = атлтв ' (сВ)т* (сл)т“ Таблица 8.2. Система Диффи-Хеллмана обмена ключами. Пример 8.5 (часть 1) Пусть р = 197 и а = 2. Алиса случайным образом выбирает сек- ретный показатель тА = 56, а Боб аналогично выбирает секретный показатель тв = Ш. Они вычисляют свои публичные ключи с помо- щью функции PowerMod: сА = PowerMod[2, 56, 197] сВ = PowerMod[2, 111, 197] II 178 II 82 Алиса может вычислить общий с Бобом ключ, возводя публично известное св в степень тА, известную только ей, и получая PowerMod[82, 56, 197] II 114 Боб получает тот же самый общий ключ, возводя сА в степень гпр. В самом деле, PowerMod[178, 111, 197] II 114 8.2 Другие системы, основанные на дискретных логарифмах 8.2.1 Криптосистемы с публичными ключами Эль-Гамаля В [ElGa88] описаны две системы с публичными ключами, основан- ные на проблеме дискретных логарифмов. Одна из них используется для шифрования, другая — как схема подписи. В обеих системах пере- даваемый текст длиннее исходного открытого.
8.2. Другие системы на логарифмах 121 □ Формирование системы Все участники разделяют в качестве системных параметров простое число р и образующий (примитивный элемент) о? мультипликативной группы Z*. Обобщение на произвольные конечные поля очевидно и будет опущено. Довольно часто встречается вариация: рассматривают Z* с простым q, а вместо примитивного элемента берут элемент a G Z* большого про- стого порядка, скажем, р. Отметим, что по теореме В.5 число р должно делить q — 1. Каждый участник Р случайным образом выбирает целое, число т-р, 1 < тр < р — 2, вычисляет ср = атр, объявляет ср публичным, а тпр держит в секрете. Как вариация, каждый участник вместо общесистемных параметров может выбрать свои собственные конечное поле и примитивный элемент, но, видимо, большого резона в том нет. □ Секретная система Эль-Гамаля Шифрование сообщения для Боба. Предположим, что Алиса хочет послать Бобу секретное сообщение. Сообщение представлено целым числом и из {0,1,... ,р — 1}. Алиса вы- бирает случайное секретное г и вычисляет R = ar mod р. Затем Алиса вычисляет S = и • crB mod р и посылает Бобу пару (/?, S). Дешифрование сообщения Бобом. Боб получает пару (/?,£') и, используя свое секретное тпв, легко вос- станавливает сообщение и путем следующего вычисления: S/RmB = и • сгв!аг гпв = и • aT'mB /аггпв = и. Пример 8.5 (часть 2) Продолжаем пример 8.5. Наши публичные параметры: р = 197, а = = 2, св = 82. Число тпр — 111 известно только Бобу. Предположим, что Алиса хочет зашифровать для Боба сообщение и= 123. Пусть г = 191 — случайное целое число, выбранное Алисой (оно простое). Алиса посылает пару (R,S), вычисленную так: р = 97; а = 2; сВ = 82; г = Random[Integer, О, р-2] и = 123; R = PowerMod[а, г, 197] S = Mod[PowerMod[сВ, г, 197] * и, р] 191 117 175
122 Глава 8. Системы, основанные на логарифмах При дешифровании Боб вычисляет S/Rdg mod р, используя свое сек- ретное тв и функции Mod, PowerMod пакета “Mathematica”. Заметим, что PowerMod[а, — 1, р] вычисляет мультипликативный обратный эле- мент капо модулю р (см. подразд. А.3.3). тВ = 111; Mod[S * PowerMod[PowerMod[R, тВ, р], -1, р], р] II 123 Перехватчик не может определить г, исходя из R, так как мы предполагаем, что проблема логарифмов не поддается решению. В силу этого перехватчик не способен выделить сгв из S (чтобы получить секретное и). □ Схема подписи Эль-Гамаля Подписывание сообщения Алисой. Предположим, что Алиса хочет послать Бобу подписанное сообщение. Сообщение снова представлено числом и из {0,1,... ,р — 2}1. Алиса выбирает случайное целое г, взаимно простое с р— 1, и вычис- ляет R = ar mod р. Затем Алиса использует свой секретный показатель гпа для вычисления числа S, удовлетворяющего сравнению и = ша • R + г S (mod р —• 1). (8.2) Чтобы эффективно найти S, можно использовать расширенную версию алгоритма Эвклида. Алиса посылает Бобу тройку (и, R, S), где пара (7?, S) служит подпи- сью к сообщению и. Проверка подписи Бобом. Боб получает подпись (R, S) вместе с сообщением и и проверяет эту подпись, убеждаясь, что аи = (сд)я • Rs (mod р). Это сравнение должно выполняться, так как в силу соотношения (8.2) au = amA-Rar's = (amA)R - (ar)s = (cA)R • RS (mod p). Пример 8.5 (часть 3) Продолмсаем пример 8.5 с публичными параметрами р = 197, а = 2 и са = 178. Число ша = 56 известно только Алисе. Предположим, что Алиса хочет подписать для Боба сообщение и — 123. Пусть г — 97 • случайное число, выбранное Алисой (оно простое). Алиса вычисляет 1Это может быть хэш-значение какого-нибудь длинного сообщения. — Прим. ред.
8.2. Другие системы на логарифмах 123 р = 197; а = 2; mA = 56; г = 97; и = 123; S =.; R = PowerMod.[а, г, 197] S /. Solve [г * S == u - mA * R, Modulus == р-1, S][[1]] II 97 II 98 II 171 чтобы найти подпись {R,S) = (98,171), которую она добавляет к сво- ему сообщению и. Боб проверяет эту подпись, убеждаясь, что аи = {ca)r-Rs (mod р"): сА = 178; R = 98; S = 171; PowerMod[а, и, р] == Mod[PowerMod[сА, R, р] * PowerMod[R, S, р], р] II True 8.2.2 Дальнейшие вариации Подпись к сообщению и в схеме Эль-Гамаля состоит из двух частой: R, равного аг со случайным г, и S, являющего решением сравнения и = = тд • R + г • S (mod р — 1) (см. (8.2)). Конечно, можно варьировать это так называемое уравнение подписи. В следующих трех схемах имен- но это и делается. Читатель, который хочет узнать о них больше, чем представлено ниже, отсылается к [MeOoV96] и [Schne96]. □ Стандарт цифровой подписи В американском стандарте цифровой подписи DSS (Digital Signature Standard; см. [FIPS94]) уравнение подписи имеет вид г • S = и + тд • R (mod р — 1). Эта система разработана Агенством национальной безопасности (АНБ, по-английски NSA) и принята в качестве стандарта Национальным ин- ститутом стандартов и технологии (NIST) США. DSS добавляет к концу документа две последовательности, по 160 битов каждая, в качестве гарантии его аутентичности и целостности. С этой целью DSS сначала сжимает документ до 160-битовой последова- тельности с помощью криптографически безопасной хэш-фупкции (см. эазд. 13.2), называемой SHA {Secure Hash Algorithm-, см. [McOoV96] и Schne96]). Для установки системы выбирают следующие общие параметры: i) простое число q, двоичное представление которого имеет длину, кратную 64 и лежащую между 512 и 1024;
124 Глава 8. Системы, основанные на логарифмах ii) простой делитель р числа q — 1, имеющий длину 160 битов; iii) значение д = i)/p mod q, большее 1, где h < q — 1. Так как по теореме Ферма (А.15) др = /г9-"1 = 1 (mod q), мультипли- кативный порядок элемента д делит р. Но поскольку р простое, этот порядок равен р (см. также теорему В.5). Каждый пользователь U выбирает секретный показатель ту, вычис- ляет си = дти mod q и делает си публичным. Когда Алиса хочет подписать файл М, она сначала вычисляет с по- мощью SHA хэш-значение h(M) длиной 160 битов. Затем она выбирает случайное число г < р и добавляет в качестве подписи к М числа R и S длиной по 160 битов, определяемые равенствами R = (gr mod q) mod р, S • г = (h(M) + ша • R) mod p. Получатель проверяет аутентичность и целостность полученного со- общения М, вычисляя w = S'-1 mod р, х = h(M) • w mod p, у = R • w mod p, U = (gx • cyA mod g) mod p. Если R = U, документ считается подлинным и пришедшим от Алисы. Простой подстановкой можно проверить, что равенство R = U действи- тельно должно выполняться. Назначение случайного числа г — спрятать секретный ключ Алисы. □ Схема подписи Шнорра В этой схеме ([Schno90]) уравнение подписи (см. (8.2)) имеет вид2 S = гпа • R + г mod (р — 1). □ Схема подписи Ниберга—Руппеля Эта схема ([NybR93]) слегка отличается от других. Здесь R опреде- ляется равенством R = и • ctr mod р, 2В этой и следующей схемах р — 1 может заменяться некоторым большим q\p — 1. Параметры систем в общем случае определяются точно так же, как в DSS; только модуль р — 1 нужно всюду заменить модулем q. — Прим. ред.
8.3. Как брать дискретные логарифмы 125 где и — сообщение, аг — случайное число. Уравнение подписи (см. (8.2)) имеет вид S = тпа • R — г mod (р — 1). В схеме Ниберга-Руппеля сообщение и можно восстановить прямо из R и S, так как и = R - оГг = R • as~~mA'R = R • as/(o^)R = R • а5/(сл)я (mod p). Если и не является хэш-значением другого, более длинного файла, то эта особенность будет преимуществом, поскольку достаточно послать только Яи£3. 8.3 Как брать дискретные логарифмы Когда нужно взять логарифм в GF(g), наиболее очевидный путь со- кращения работы — разложить g—1 на множители, являющиеся степеня- ми простых чисел, вычислить логарифм для каждого такого множителя и воспользоваться китайской теоремой об остатках (теорема А. 19). Этот метод будет продемонстрирован в подразд. 8.3.1. Как уже было сказано раньше, системы, основанные на дискретных логарифмах, часто работают в рамках какой-либо мультипликативной подгруппы из GF(g). Это обобщение не влияет на методы, обсуждаемые в данном разделе. 8.3.1 Алгоритм Похлига—Хеллмана Похлиг и Хеллман в [PohH78] показали, что дискретные логарифмы могут вычисляться много быстрее, чем за y/q операций, если q — 1 име- ет только малые простые делители. Сначала мы продемонстрируем их метод в двух частных случаях. □ Частный случай: q — 1 = 2те Примерами простых чисел, которые являются степенью двойки плюс единица, служат4 q = 17, g = 257 и q = 216 + 1. n = 16; Prime [2n + 1] II True Итак, пусть си — примитивный элемент в конечном поле GF(g). Задача состоит в том, чтобы найти тп, 0 < тп < q — 2, удовлетворяющее равенству (8.1) для заданного значения с. 3См. также российский стандарт цифровой подписи *[ГОСТП94], близкий к рас- смотренным здесь системам, особенно к DSS. — Прим. ред. 4Если еще добавить числа 3 и 5, то список известных простых указанного вида (их называют простыми числами Ферма) будет исчерпан. — Прим. ред.
126 Глава 8. Системы, основанные на логарифмах Пусть mo, mi,..., mn-i — двоичное представление неизвестного т, т.е. т = то + Ш12 + ... + тп_12п~~1,ггц Е {0,1}, 0 < i < п — 1. Разумеется, достаточно вычислить неизвестные тр Так как а прими- тивный элемент в GF(g), мы знаем (см. теорему В.21), что о9-1 = 1 и аг 1, если 0 < i < q — 1. Отсюда следует также, что с/9-1)/2 = — 1, потому что квадрат элемента а/9-1)/2 равен 1, причем с/9-1)/2 7^ 1. (Мы пользуемся тем, что по теореме В. 15 корнями квадратного уравнения ж2 = 1 служат лишь ±1.) Следовательно, c(q-l)/2 __ ^Q,m)(q-l)/2 __ 2+...+mn_12n~1)(Q-l)/2 _ а прим. m0(q-l)/2 _ Г + 1, вСЛИ mg = О, — 1—1, если то = 1. Поэтому вычисление с^9”1^/2, которое, как мы видели в подразд. 8.1.1, требует самое большее 2|’log2g] умножений, дает mg. Вычислим Ci = са~~т°. Теперь mi можно определить так же, как и выше: с(9-1)/4 _ Q,(mi2+m222+...+mn_i2n-1)(q-l)/4 _ _1)/2 _______ f Т1, если mi = О, — — 1 — 1, если mi = 1. Далее вычисляем С2 = cia~~2mi = ca~^m°+mi2^ и определяем m2 из 49“1)/8. Повторяем этот процесс, пока не будет определено mn_i (и, зна- чит, т). Описанный выше алгоритм находит степень т, исходя из числа с, используя самое большее п • (2 • riog2 q] + 2) « 2 - (log2 q)2 2n2 операций; слагаемое “2” в левой части оценивает вычисление (на г-м _2»—1 шаге а нужно возвести в квадрат и результат, возможно, умножить на Cj-i). Сравнение с табл. 8.1 показывает, что в данном случае (когда q = 2n + 1) расхождение между вычислительной сложностью использо- вания схемы Диффи-Хеллмана (одно возведение в степень, включающее максимум 2п умножений) и ее взлома (~ 2п2 умножений) квадратично, что не достаточно для гарантии безопасности системы. Замечание. В случае q — 1 = s-2t, где s нечетно, t наименее значащих битов могут быть найдены точно таким же образом. Пример 8.6 Рассмотрим уравнение Зт = 7 (mod 17). Таким образом, q = 17, а. = 3, с = 7. Заметим, что си-1 = 6. Записывая т = mg + 2mi + 4ni2 + +8тз, находим то при вычислении Д9-1)/2 mod q.
8.3. Как брать дискретные логарифмы 127 PowerMod[7, 8, 17] II 16 Так как это — 1, мы узнаем, что mo = 1. Вычисляем ci = с/3 = 6 • с = 8 (mod 17). Теперь можно найти т-[, исходя из 1^4 mod q: PowerMod[8, 4, 17] II 16 Снова получаем —1, так что тп\ = 1. Вычисляем С2 = с/32 = б2 ™ 16 (mod 17). Теперь можно найти m2 из с^""1^8 mod q: PowerMod [16, 2, 17] II 1 Так как результат равен 1, имеем m2 = 0. Значит, сз = С2 и тпз можно найти из с% 1^16 mod q: PowerMod [16, 1, 17] II 16 Теперь мы имеем m3 = 1 и поэтому т = l^ + l^1+0-22-}-1-23 = 11. Это легко проверить: PowerMod[3, 11, 17] □ Общий случай: q — 1 имеет только малые простые делители Пусть q — 1 = где Pi — различные простые, а показатели щ строго положительны (см. основную теорему теории чисел, теорема А.6). Мы предполагаем, что все pi малы. Позже мы уточним, что под этим подразумевается. Вместо прямого нахождения т из (8.1) мы будем определять т^ = т (mod р™1), 1 < i < к. (8.3) С помощью китайской теоремы об остатках (теорема А. 19) из чисел т^ можно эффективно вычислить т. Чтобы определить т^ (другие т№ можно найти тем же путем), мы записываем его в pi-ичном представлении. Удобства ради мы опускаем все верхние и нижние индексы, ссылающиеся на случай i = 1: = то + mip + ... + mn-ipn~\mi G {0,1,... ,р — 1), 0 < i < п — 1. Подобно частному случаю (Аг = 1,р = 2) мы будем находить каждый из коэффициентов mi единственным возведением в степень.
128 Глава 8. Системы, основанные на логарифмах Коэффициент то может быть найден вычислением Из тео- ремы В.21 следует равенство (Д9“"1)/р)р = 1, означающее, что Д9”1)/25 — корень степени р из единицы. Определим примитивный корень uj степе- ни р из единицы как ш = oSq~~1^p и построим таблицу: 1,сщаР,... Тогда, поскольку m = (mod рп) и = mo (mod р), мы имеем: с(9-1)/Р = (о,"гу?-1)/Р = а"г(?-1)/Р = а«(1)(9-1)/р — а"г0(д-1)/р _ Поэтому простой поиск с^-О/р в таблице дает то- Чтобы определить mi, сначала вычисляем щ = с-а~т°, затем вычис- ляем Cj9 и т.д., пока не определим . Аналогичные вычисления должны быть проделаны для определения других . В этом алгоритме нужно создавать таблицы степеней примитивных корней степени р из единицы для всех простых делителей числа q— 1. Эти делители должны быть достаточно малы, чтобы можно было записать таблицы. Каждый раз, когда мы хотим взять логарифм, алгоритм должен про- извести J2i==i ni возведений в степень; поэтому алгоритм использует . л 2 Г1оё2 о| • Пг ~ 2 • log2 q (Y}k ni) < 2(log2 g)2 операций, если мы забудем о членах низшего порядка. Мы снова полу- чаем квадратичное расхождение между использованием системы обмена ключами Диффи-Хеллмана и ее взломом. □ Пример применения алгоритма Похлига—Хеллмана Пример 8.7 Рассмотрим уравнение (8.1) с q = 8101 и примитивным, элементом о = 6. Заметим, что число q просто, значит, GF(g) = Zgioi- Предварительные вычисления. Прежде всего разложим q — 1 и вычислим мультипликативный об- ратный элемент к 6 по модулю 8101 с помощью функций Factorinteger и PowerMod пакета ‘Mathematica”. q = 8101; а = 6; Factorinteger[q - 1] х = PowerMod[а, -1, q] II «2, 2}, <3, 4}, <5, 2}} II 6751 Таким образом, q — 1 = 22-34-52 и а-1 = 6751. Теперь мы вновь использу- ем функцию PowerMod для вычисления примитивных корней степеней 2,3 и 5 из единицы: сщ = gC8101-1)/2 — 64050; а>2 — 6^8101-1^3 = 62700 и со3 = б(8101-1)/5 = 61б20 .
8.3. Как брать дискретные логарифмы 129 q = 8101; а = 6; 0ml = PowerMod[а, 0m2 = PowerMod [а, ОтЗ = PowerMod [а, (q - 1) /2, q]; (q - 1) / 3, q] ; (q - 1) /5, q] ; II 8100 II 5883 II 3547 Итак, ац = 8100, w? = 5883 ишз = 3547. С помощью функции Table создаем следующие три таблицы: q = 8101; а = 6; 0ml = PowerMod[a, (q - 1) t ! 2, ql; Dm2 = PowerMod[a, (q - 1) t ' 3, ql; 0m3 = PowerMod[a, (q - 1) t z 5, ql; Table [PowerMod [0ml, i, ql, 0, 1}] Table [PowerMod [0m2, i, ql , {i, 0, 2}] Table [PowerMod [0m3, i, ql, {i, 0, 4}] II {1, 8100} || {1, 5883, 2217} || {1, 3547, 356, 7077, 5221} Следовательно, мы имеем таблицы: Pi = 2 i 0 1 1 8100 P2 = 3 i 0 1 2 1 5883 2217_ Рз = 5 i 0 1 2 3 4 w 1 3547 356 7077 5221 Предварительная работа для китайской теоремы об остатках со- стоит в решении следующих трех систем линейных сравнений: и = 1 и = 0 и = 0 (mod 4), (mod 81), (mod 25). v = 0 (mod 4), v = 1 (mod 81), v = 0 (mod 25). w = 0 (mod 4), w = 0 (mod 81), w = 1 (mod 25).
130 Глава 8. Системы, основанные на логарифмах Эти три системы могут быть решены с помощью функции ChincseRc- mainderTheorem пакета “Mathematica”, для чего сначала нуэюно загру- зить пакет NumberTheory‘NumberTheoiyFunctions‘. < < NumberTheory‘NumberTheoryFunctions£ ChineseRemainderTheorem[{l, 0, 0}, {4, 81, 25}] ChineseRemainderTheorem[{0, 1, 0}, {4, 81, 25}] ChineseRemainderTheorem[{0, 0, 1}, {4, 81, 25}] II 2025 II 6400 II 7776 Итак, и = 2025 (mod 8100), v = 6400 (mod 8100), w = 7776 (mod 8100). Этим завершена предварительная работа. Решение уравнения (8.1) для с = 7531, q = 8101. Сначала, пользуясь объясненным выше методом, вычислим т, б) = т modp™\ 1 < i < 3, как они определены в (8.3). Разумеется, па каэюдом шаге мы должны обращаться к ранее созданным таблицам. Первый простой делитель: Pi = 2, ni = 2. с= = 7531, с(8101-1)/2 = - 8100, mg = 1, ci = с • о?”1 = 8006, (8101 —1)/22 _ С1 “ - 1, mi = 0. Следовательно, = 1 4- 0 • 21 = 1. Второй простой делитель: Р2 = 3,П2 = 4. с = = 7531, с(8101-1)/3 = 2217, т0 = 2, ci = с • а-2 = 6735, (8101 —1)/32 С1 = 1, mi = 0, С2 = ci = 6735, с(8101-1)/33 = 2217, т2 = 2, с3 = С2 • or2’32 = 6992, (8101-1)/34 с3 — 5883, т3 = 1. Следовательно, т№ = 24-0-314-2-32 4-1*33 = 47. Третий простой делитель: РЗ = 5, п3 = 2. с = = 7531, с(8101-1)/5 = : 5221, то = 4, ci = с • о?-4 = 7613, (8101 —1)/52 _ С1 - - 356, mi = 2. Следовательно, = 4 + 2 • 21 = 14. Окончательным решением т будет тп = и- + v • 4- w = = 6689 (mod 8100). В самом деле,
8.3. Как брать дискретные логарифмы 131 Mod[2025 * 1 + 6400 * 47 + 7776 * 14, 8100] II 6689 Это легко проверяется: PowerMod[6, 6689, 8101] II 7531 В “Mathematica” предвычисления щи и w не обязательны, так как т можно прямо вычислить из тп/1), тп№ и т® с помощью функции ChineseRemainderTheorem: ChineseRemainderTheorem [{1, 47, 14}-, {4, 81, 25}-] II 6689 Если q — 1 имеет большие простые делители, то доминирующими составляющими в объеме работы алгоритма Похлига-Хеллмана будут число 12^=1 Pt возведений в степень, необходимых для генерации таблиц {1, at,..., а?1”-1}, 1 < i < к, и число i пг возведений в степень, необ- ходимых для определения всех . В следующем подразделе мы обсудим метод взятия логарифмов, ко- гда хотя бы одна степень простого числа, делящая q — 1, слишком велика для того, чтобы поместиться в таблицы метода Похлига-Хеллмана. 8.3.2 Метод “детский шаг—гигантский шаг” Если одна (или более) из степеней простых чисел, делящих q — 1, слишком велика для метода Похлига-Хеллмана, можно использовать метод5, излагаемый ниже. Он дает пользователю полную свободу урав- новешивать длину таблицы, которую мы хотим записать, и остающийся объем работы. Начнем с примера. Пример 8.8 Рассмотрим уравнение 29т = 30 (mod 97) и допустим, что мы мо- жем записать таблицу только с 10 элементами поля. Создадим таб- лицу из чисел 29г mod 97 для i = 0,1,..., 9 и вычислим 29-1 mod 97 с помощью функций “Mathematica” Table, PowerMod, Gridbox и Transpose. q = 97; a = 29; powers = Table [{PowerMod [29, i, q] , i}-, {i, 0, 9}-]; Gridbox [Transpose [powers] , RowLines -> True, ColumnLines -> True] // DisplayForm x = PowerMod[a, -1, q] 5Его английское название: “baby-step giant-step method”.— Прим. ped.
132 Глава 8. Системы, основанные на логарифмах 1 29 65 42 54 14 18 37 6 77 0 1 2 3 4 5 6 7 8 9 II 87 Мы также нашли, что 29“1 = 87 (mod 97). Записывая т = 10J + i, 0 < i < 9, мы видим, что сравнение 29т = 30 (mod 97) может быть переписано как 29* = 30 • 29“107 (mod 97) или как 29* = 30 • 8710-7 (mod 97). Поскольку 8710 = 49 (mod 97), получаем эквивалентную задачу решения сравнения 29* = 30 • 4Э-7 (mod 97), 0 < < i < 9. Сделаем это, испытывая j = 0,1,... и проверяя каждый раз, встре- чается ли 30 • 49^ mod 97 в списке степеней {1,29, 292,..., 299} mod 97. Чтобы облегчить просмотр таблицы степеней, отсортируем ее элементы посредством функции Sort. sortedpowers = Sort[powers]; Gridbox[Transpose[sortedpowers], RowLines -> True, ColumnLines -> True] // DisplayForm 1 6 14 18 29 37 42 54 65 77 0 8 5 6 1 7 3 4 2 9 Далее мы испытываем 30 • 49^ mod 97, пока результат не появится в нашей таблице. При этом используются функции While, MemberQ и Mod из пакета ‘Mathematica”. Печатается также соответствующий столбец из таблицы сортированных степеней (и нужно уменьшить j на 1, потому что мы начинаем нумерацию j с 0). j = 0; While[MemberQ[sortedpowers, {Mod[30 * 49+ _}] == False, j = j + 1]; j sortedpowers [ [j - 1]] II 4 II {14, 5} Мы получили, что j = 4 и что 30 • 49^ mod 97 появляется в таблице как 14, т.е. 295 mod 97 (и, значит, i = 5). Действительно, Mod[30 * 494, 97] == Mod[295, 97] II True Это влечет, что т = 10у + г = 10-4 + 5 = 45. В самом деле, 2945 = 30 (mod 97); это можно легко проверить: PowerMod[29, 45, 97]
8.3. Как брать дискретные логарифмы 133 II 30 Теперь сформулируем продемонстрированный метод в общем виде. Теорема 8.1 Пусть a — примитивный элемент в GF(g), ар — делитель чис- ла q — 1 (не обязательно простой). Определим ш = сц(9-1)/р; тогда ш—примитивный корень степени р из единицы. Пусть с — произвольный корень степени р из единицы. Тогда для любого (компромиссного значения) t, 0 < t < 1, можно найти показа- тель тп, 0 < тп < р — 1, удовлетворяющий равенству с = используя алгоритм, требующий • (1 + log2pt) операций, р4 • log2q битов памяти и начальное вычисление, включающее р* • (1 + log2p*) операций. Доказательство. Пусть и = |"р*"|. Построим таблицу последователь- ных степеней Ф1, 0 < i < и — 1. Это требует и ~ р* умножений. Теперь отсортируем эту таблицу 3aptlog2pt операций (см. [Knut73], разд. 5.3). Вместе это дает число операций в предвычислении. Каждый из и « р* элементов поля в таблице нуждается в log2 q битах памяти. Это объясняет требования к памяти в теореме. Введем i и j равенствами тп = j • и + г, 0 < i < и « р*. Заметим, что „ . тп р 1 f и и Конечно, решение уравнения с = шт эквивалентно нахождению i и J, 0 < < i < и, удовлетворяющих равенству Л = с • Чтобы решить последнее уравнение, мы просто вычисляем с • для I = 0,1,... и проверяем, появится ли результат в таблице. Это случится, когда I = j, значит, до того, как будет I = |"p1-t]. Для каждого значения I нужно выполнить одно умножение и поиск в таблице, который требует log2pt операций. При t = 1/2 данный алгоритм сводится к алгоритму, упомянутому в конце подразд. 8.1.1, со сложностью y/q (и по времени, и по памяти). А вот два крайних случая алгоритма: t = 0 : вообще нет таблиц; нужно испытывать все степени 1, ад а;2,...: t = 1 : создается полная таблица 1, ад о;2, ..., а;9-1 ; нужен единствен- ный просмотр таблицы. Заметим, что в рассмотренном алгоритме произведение времени вы- числения и числа битов памяти более или менее постоянно.
134 Глава 8. Системы, основанные на логарифмах 8.3.3 р-алгоритм Полларда Временная сложность p-метода Полларда6 [Ро1178] такая же, как у метода “детский шаг-гигантский шаг”, изложенного в предыдущем раз- деле. Преимущество же состоит в минимальных требованиях к памяти. Мы объясним p-метод Полларда в специальном случае мультипли- кативной подгруппы G простого порядка из GF(q). Таким образом, мы хотим найти тп, 0 < m < р, из уравнения с = am (см. (8.1)), где a Е GF(<?) имеет простой порядок р, а с Е GF(g) — заданный корень степени р из единицы. Заметим, что р делит q — 1 по теореме В.5. Пример 8.9 (часть 1) Чтобы избежать вычислений в произвольном конечном поле, выбе- рем в качестве q простое число 4679. Отметим, что q — 1 = 2 х 2339. Ниже мы убедимся, что 11 — примитивный элемент в GF(4679) и поэтому а = ц(9-1)/2339 = Ц2 = 121 — образующий мультипли- кативной подгруппы порядка 2339. Все эти вычисления легко прове- рить с помощью функций PrimeQ, Factorinteger, PowerMod и функции MultiplicativeOrder, введенной в подразд. В.1.1; MultiplicativeOrder[а_, n_] := If[GCD[a, n] == 1, Divisors[EulerPhi[n]]//. {х, у} -> If [PowerMod[а, х, n] == 1, х, -Су}] ; q = 4679; PrimeQ[q] Factorinteger[q - 1] MultiplicativeOrder[11, q] PowerMod. [11, 2, q] MultiplicativeOrder[121, q] II True || {{2, 11, {2339, Ш II 4678 II 121 II 2339 Ниже мы продолжим этот пример, когда будем решать уравнение 121т = 3435 (mod 4679). Заметим, что это уравнение должно иметь решение, поскольку 3435 действительно является корнем степени 2339 из единицы в GF(4679). 6 Английское название: “Pollard-p method”.— Прим. ред.
8.3. Как брать дискретные логарифмы 135 В самом деле, все корни степени 2339 из единицы суть нули многочлена ж2339 _ и других НуЛей по теореме 22.15 у него нет. PowerMod[3435, 2339, 4679] II 1 Чтобы решить уравнение с = ат, мы разбиваем: мультипликативную подгруппу G порядка р из GF(q) на три подмножества Gi, i = 0,1,2, следующим образом: х G Gi <=> х = i (mod 3). Определим рекурсивно последовательность {жг}г>о в GF(g), положив Жо = 1 и {х? mod q, (с • Xi) mod q, (a • Xi) mod q, если Xi G Go, если Xi G Gi, если Xi G G2, (8-4) Сопоставим последовательности {а?г}г>о две другие последовательности {&г}г>о и {bj}j>o так, чтобы для всех i > 0 выполнялось равенство Xi = aaicbi С этой целью возьмем ag = bo = 0 и вновь используем рекурсию: ®г+1 — \ (2a.i) mod р, (ai + 1) mod p, если Xi G Go, если Xi G Gi, если Xi G G2. {(2bi) mod p, (bi + 1) mod p, bi, если Xi G Go, если Xi G Gi, если Xi G G-2- Заметим, что по индукции Жг+i = xl = (аа*сь*)2 = o2aic2bi = aai+1cbi+1, Жг+i = с • Xi = с • = aaicbi+1 = aai+1cbi+1 если Xi G Gq, если Xi G Gi, Жг+i = a • Xi = Oi • aaicbi = aai+1cbi = aai+1cbi^1, если Xi G G2. Как только мы получаем два различных индекса i и j, для которых Xi = Xj, мы заканчиваем, поскольку это влечет aaicbi = aaicbi и потому aat~ai _ cbj-bi ПрИ условии bi bj мы находим решение: т = (щ — aj)/ /(bj — bi) (mod p). Если же bj = bj, что случается с ничтожной верот- ностью, положим cf = с • а и решим уравнение d = otm', где т! = т + 1.
136 Глава 8. Системы, основанные на логарифмах Чтобы найти индексы г и j, для которых Х{ = Xj, воспользуем- ся алгоритмом Флойда нахождения цикла: ищем такой индекс г, что Xj = %2г (т-е. берем j = 2г). С этой целью мы начинаем с пары (х1,хз), находим (^2,^4), за- тем (хз,Хб) и т.д., каждый раз вычисляя (я^+15 ^2г4-з)5 исходя из ранее вычисленной пары (xj,a?2j)5 по следующим правилам: = /(rrj и x2i+2 = /2(ж2г)- Таким путем можно избежать огромных записей. Пример 8.9 (часть 2) Продолжаем пример 8.9. Следовательно, q = 4679, а = 121 — эле- мент простого порядка р = 2339 и с = 3435. Таким образом, мы имеем уравнение 121т = 3435 (mod 4679). Рекуррентное соотношение для последовательности {я^}г>о можно формализовать посредством функций Which и Mod: RecX[x_, alp_, с_, q_] := Which[Mod[х, 3] == 0, Mod[x2, q] , Mod[x, 3] == 1, Mod[c * x, q] , Mod[x, 3] == 2, Mod [alp ♦ x, q]] Наименьший индекс i, для которого xi = x%i, можно легко найти с помощью функции While: alp =121; с = 3435; q = 4679; xl = RecX[l, alp, с, q] ; х2 = RecX[xl, alp, c, q] ; i = 1; While[xl != x2, xl = RecX[xl, alp, c, q] ; x2 = RecX[RecX[x2, alp, c, q], alp, c, q]; i = i + 1]; i II 76 Итак, x-jq = X152 и m = («152 — а?б)/(^7б — &152) (mod 2339). Однако выше мы не обновили значения сц и bi. Сделаем это сейчас. RecurrDef [{х_, а_, b_}] := Which[ Mod [x, Mod [x, Mod[x, 3] == 0, {Mod[x2, q] , Mod[2 a, p], Mod[2 b, p]}, 3] == 1, {Mod[c * x, q], a, Mod[b + 1, p]}, 3] == 2, {Mod[alp * x, q], Mod[a + 1, p], b} alp = 121; xl = 1; al x2 = 1; a2 c = '3435; q = 4679; p = 2339; = 0; bl = 0; = 0; b2 = 0; {xl, al, bl} = RecurrDef[{xl, al, bl}]; i = 1; {x2, a2, b2} = RecurrDef[RecurrDef[{x2, a2, b2}]];
8.3. Как брать дискретные логарифмы 137 While[xl != х2, {xl, al, bl} = RecurrDef[{xl, al, bl}]; {x2, a2, b2} = RecurrDef[RecurrDef[{x2, a2, b2}]]; i = i + 1] ; Print ["i=", i] Print E"\!\(x\_i\)=", xl, ", \!\(a\_i\)=", al, ", \!\(b\_i\)=", bl] Print ["\!\(x\_\(2. i\)\)=", x2, ", \!\(a\_\(2. i\)\)=", a2, ", \!\(b\\(2. i\)\)=", b2] i=76 Xi=492, aj=84, b*=2191 X2i=492, a2i=286, b2j=915 В самом деле, выражение aaicbi принимает одно и то же значение при i = 76 и i = 152. |Mod[PowerMod[alp, al, q] * PowerMod[c, bl, q], q] Mod[PowerMod[alp, a2, q] * PowerMod[c, b2, q], q] II 492 II 492 Теперь решение тп уравнения 121m = 3435 (mod 4679) можно опре- делить из сравнения т = (286 — 84)/(2191 — 915) (mod 2339): m= Mod[(a2 - al) * PowerModEbl - Ь2, -1, p] , p] II 1111 To, что m = 1111 — действительно решение, можно проверить: PowerMod [alp, 1111, q] == c II True Символ p в названии алгоритма отражает форму последовательности {^г}г>о: “хвост” — начало последовательности до вхождения в цикл. Тре- бования к памяти у алгоритма Флойда нахождения цикла действительно минимальны. Ожидаемое время его пробега — у/p. За дальнейшими де- талями читатель отсылается к работе [Ро1178]. 8.3.4 Метод исчисления индексов □ Общее обсуждение Чтобы описать метод исчисления индексов7, рассмотрим цикличе- скую группу G порядка N, порожденную элементом д. Таким образом, G = {е,д,д2,..., gN~~1} и gN = е. В этих условиях мы хотим найти т из уравнения дт = h (см. (8.1)) для заданного h G G. В основе метода исчисления индексов лежат следующие шаги. 7Английское название: “index-calculus method”. Заметим, что в теории конечных полей “индекс” — синоним “дискретного логарифма”.— Прим. ред.
138 Глава 8. Системы, основанные на логарифмах 1) Выбираем подходящее подмножество S из G с тем свойством, что большая доля элементов из G может быть выражена эффектив- ным образом в виде произведения элементов из S. Множество S называется базой делителей. Элемент a G G, который может быть представлен как произведение элементов из S, называется гладким относительно S. В следующих двух шагах элементы из S будут записаны в виде степеней д. 2) Находим достаточно большую совокупность I показателей i, таких, что каждая степень дг, i Е 1, может быть эффективно представлена S? ^г,2 ^i.k т"> 1 : д1 1 s2 - * • sk * ^зяв l°g# от обеих частей, получим множество сравнений i = log5 si + log5 s2 + . •. + uiik log5 sk (mod N), i E I. 3) Рассматривая числа log^s?, 1 < j < к, как неизвестные, решаем ука- занную выше систему линейных сравнений (для этого система ли- нейных сравнений должна иметь ранг к и множество I должно быть достаточно большим). 4) Выбираем случайный показатель г и пытаемся выразить grh в виде произведения элементов из S. Как только это происходит, скажем, grh = s^s^2 • s^k, мы опять берем 1одд от обеих частей и получаем г + т = 1/1 log5 Si + log5 82 + • - - + i/fc log5 sk (mod TV). Так как значения всех log5 si уже определены на шаге Зиг выбра- но, из полученного сравнения определяем тп. Заметим, что целью шагов 2 и 3 служит решение проблемы логариф- мов для элементов базы делителей. Шаг 4 пытается свести исходную проблему логарифма к таковой для элементов базы делителей. Должно быть ясно, что размер базы делителей S является компро- миссом между требованиями к возможностям памяти и вероятностью того, что случайный элемент из G (а именно grh} можно представить как произведение элементов из S. В общем, при изложенном подходе имеются две (связанные друг с другом) нерешенные проблемы. • Как определить хорошую базу делителей? • Как выразить элемент из G в виде произведения элементов из S? Ниже мы продемонстрируем изложенный метод в двух частных слу- чаях, когда в ответ на сформулированные вопросы можно сказать боль- ше, чем в общем случае.
8.3. Как брать дискретные логарифмы 139 Сложность Существует много вариаций метода исчисления индексов. Как прави- ло, их сложность растет субэкспоненциально относительно log2 N, тогда как методы, описанные в подразд. 8.3.1, 8.3.2 и 8.3.3, экспоненциальны по log2 N. □ Z*, мультипликативная группа поля GF(p) В данном случае G = {1,2, ...,р — 1}. Пусть g—образующий этой группы. Выбор базы делителей S: первые к простых чисел Pi,P2? • • • Если к достаточно велико, большую долю элементов из G можно вы- разить в виде произведений степеней этих к простых чисел, т.е. такие элементы будут гладкими относительно S. Техника выражения элемента из G в виде произведения элементов из S: делим данный элемент на все рр Сложность Адлеман в [Adle79] детально анализирует указанную технику и полу- чает сложность ехр { С y^lnplnlnp} для некоторой константы С. Пример 8.10 Рассмотрим Zg41 с примитивным элементом g — 2. Простоту чис- ла 541 и примитивность элемента 2 можно проверить с помощью функций PrimeQ, Factorinteger и PowerMod пакета “Mathematica”. В са- мом деле, по теореме В.5 порядок элемента 2 делит |Zg411 = 540; по- этому нужно лишь проверить, что 2^p~1^d 1 (mod 541) для любого простого делителя d числа р — 1 = 540. Р = 541; PrimeQ Epl Factorinteger [р - 1] II True II «2, 2}, {3, 3}, {5, Ш PowerMod[2, (541 - 1) t ' 2, Pl PowerMod[2, (541 - 1) t f 3, Pl PowerMod[2, (541 - 1) . f 5, p] 11 540 II 129 II 48
140 Глава 8. Системы, основанные на логарифмах В качестве базы делителей S возьмем множество из первых пяти простых чисел; они могут быть порождены функциями Prime и Table из пакета “Mathematica”. Table[Prime[i], {i, 1, 5}] II {2, 3, 5, 7, 11} Мы хотим записать каждый из элементов этой базы делителей в виде степени элемента g = 2, т.е. решить проблему логарифмов для элементов базы делителей. С этой целью мы пытаемся найти степени элемента g = 2 в Zg41, которые могут быть представлены как произ- ведения элементов из множества {2,3,5,7,11}. Для этого можно ис- пользовать функции Factorinteger и PowerMod из пакета “Mathematica”. Сделав попытку, Р = 541; try = PowerMod[2, 102, р]; Factorinteger[try] II 136 11 «2, 3}, {17, 1}} мы видим, что полного разложения по {2, 3, 5, 7, 11} нет. После несколь- ких попыток (и ошибок) находим подходящие нам элементы 214, 281, 2207, 2214 и 2300. р = 541; Factorinteger[PowerMod [2, 14, р]] Factorinteger[PowerMod[2, 81, р]] Factorinteger[PowerMod[2, 207, p]] Factorinteger[PowerMod[2, 214, p]] Factorinteger[PowerMod[2, 300, p]] 11 {{2, 1}, {7, 1}, {11, 1}} II {{2, 1}, {3, 1}, {7, 2}} II {{5, 2}, {11, 1}} II «5, 1}, {7, 1}} || {{2, 5}, {11, 1}} Полагая mi = log2 2, m2 = log2 3, m3 = log2 5, m4 = log2 7, mg = = log2 11 и беря логарифмы, получаем 5 линейных сравнений относи- тельно mi, m2,.. • , т$. Например, сравнение 2207 = 52 • И1 (mod 541) можно записать в виде 2207 = 221°S2521-1°S2 11 = 22тз2™5 (mod 541).
8.3. Как брать дискретные логарифмы 141 Взяв log2 от обеих его частей, получим 207 = 2шз + ms (mod 540). Таким образом, мы имеем 14 = mi + тд + ms (mod 540), 81 = mi + 7712 + 2тт14 (mod 540), 207 = 27713+7715 (mod 540), 214 = 7713+7714 (mod 540), 300 = 57711+7715 (mod 540). Эта система линейных сравнений может быть решена с помощью функции Solve: ml = . ; m2 = . ; m3 = . ; m4 = . ; m5 = . ; Solve[{ml + m4 + m5 == 14, ml + m2 + m4 == 81, 2 * m3 + m5 == 207, m3 + m4 == 214, 5 * ml + m5 == 300, Modulus == 540}, {ml, m2, m3, m4, m4}] {{Modulus->540, m2->104, m5->295}} Таким образом, мы знаем, m3->496, ml->l, m4->258, что mi = log22 = 1, 7714 = log2 7 = 258, 7712 7715 = log2 3 = 104, = log2 11 = 295 m3 = log2 5 = 496, или, эквивалентно, 21=2 (mod 541), 2258=7 (mod 541), 2104=3 (mod 541), 2295=ц (mod 541). 2496= 5 (mod 541), Если полученные линейные сравнения линейно зависимы, то некоторые сравнения нужно заменить другими, чтобы получилась система ли- нейно независимых сравнений. Найдем теперь решение уравнения 2т = 345 (mod 541). Из Factorinteger[345] Factorinteger[Mod[22 * 345, 541]] Factorinteger [Mod [2100 * 345, 541]] Factorinteger [Mod [213 * 345, 541]] || {{3, 1}, {5, 1}, {23, 1}} || {{2, 1}, {149, 1}} || {{3, 2}, {41, 1}} II «2, 3}, {7, 1}}
142 Глава 8. Системы, основанные на логарифмах видно, что число 345 нельзя представить в виде произведения элемен- тов из S, как нельзя этого сделать для 22 • 345 и 2100 • 345, но можно для 213 • 345 = 23?1 в GF(541). Мы получаем 13 + т = 3 • mi + 1 • тп4 = 3 • 1 + 258 = 261 (mod 540), значит, решение уравнения 2т = 345 (mod 541) имеет вид т = 248 (mod 540). Это легко проверить: PowerMod[2, 248, 541] II 345 Ввиду малых параметров можно явно найти все элементы из {1, 2, ...,540}, которые представимы как произведения элементов из S. Мы используем функции Select, Flatten, Table, Sort и Length из пакета “Mathematica”, а также тот факт, что в разложении любого числа, меньшего, чем 541, показатель двойки не превосходит [log2 541J = 9, показатель тройки не превосходит [log3 541J =5 и т.д. BaseProd = Select [ Flatten [Table [2u3i25i37i4lli5, Ш, o, Log [2, 541]}, {i2, 0, Log[3, 541]}, {i3, 0, Log[5, 541]}, <i4, 0, Log[7, 541]}, {i5, 0, Log[11 , 541]} # < 541 &] // Sort Length[BaseProd] {1, 2, 3, 4, 5, 6, 7, 8, 9, К 20, 21, 22, 24, 25, 27, 28, 3( 44, 45, 48, 49, 50, 54, 55, 5( 75, 77, 80, 81, 84, 88, 90, 9( 110, 112, 120, 121, 125, 126, 147, 150, 154, 160, 162, 165, 192, 196, 198, 200, 210, 216, 242, 243, 245, 250, 252, 256, 294, 297, 300, 308, 315, 320, 352, 360, 363, 375, 378, 384, 420, 432, 440, 441, 448, 450, 495, 500, 504, 512, 525, 528, II 142 ), 11, 12, 14, 15, 16, 18, ), 32, 33, 35, 36, 40, 42, 3, 60, 63, 64, 66, 70, 72, 3, 98, 99, 100, 105, 108, 128, 132, 135, 140, 144, 168, 175, 176, 180, 189, 220, 224, 225, 231, 240, 264, 270, 275, 280, 288, 324, 330, 336, 343, 350, 385, 392, 396, 400, 405, 462, 480, 484, 486, 490, 539, 540}
8.3. Как брать дискретные логарифмы 143 Таким образом, более четверти всех элементов из G представимы как произведения элементов из S. Это означает, что в среднем нужно сде- лать четыре попытки выбора г до тех пор, когда grh можно будет выразить в виде произведения элементов из множества {2, 3, 5, 7,11}. □ GF(2n) Все элементы в GF(2n) могут быть представлены посредством би- нарных многочленов степени меньше п от х по модулю неприводимого многочлена f(x) (см. теорему В.16). Поэтому GF(2n) = GF(2)[x]/(/(rr)). Пусть многочлен а — а(х) обозначает примитивный элемент в GF(2n). Тогда GF(2n) можно также представить бинарными многочленами сте- пени меньше п по модулю минимального многочлена р(х) элемента а. Это влечет, что а — примитивный элемент в GF(2)[a]/(p(a)) и, значит, х — примитивный элемент в GF(2)[x]/(p(rr)). См. пример В.6, где /(ж) = х4 4- ж3 + ж2 4- х 4- 1 определяет GF(24) и где а (ж) = 14-ж— примитивный элемент в GF(2) [ж]/(ж4 4-ж3 4-ж2 4-ж 4-1). Этот q является нулем примитивного многочлена р(х) = ж4 4- х3 4- 1. В СЕ(2)[ж]/(ж4 4- ж3 4- 1) элемент х примитивен. Задачу решения уравнения (8.1) можно переформулировать так: для любого многочлена с(ж) степени меньше п найти показатель т, О < тп < 2п — 2, такой, что хт = с(ж) (mod р(ж)). В качестве базы делителей S выберем все бинарные неприводимые многочлены степени не больше t, скажем, Р1(ж),р2(ж),... ,рь(х). (Число таких многочленов дает теорема В. 17.) Что касается техники представления элемента из GF(2n) как про- изведения элементов из S, то мы просто делим данный элемент на все многочлены pfix). Многочлен и(х), который можно выразить в виде про- изведения элементов из S, называется гладким относительно S. Сложность Копперсмит [Сорр84] проанализировал этот алгоритм и нашел асимп- тотическое время его работы: ехр { С \/(1п n) (In In n)2}. Позже были найдены улучшения алгоритма, известные под названиями number field sieve (решето числового поля) и function field sieve (решето поля многочленов) (см. [AdDM93], [Adle94], [HelR83]). Мы также отсы- лаем читателя к блестящему обзору [Odly85] по проблеме дискретных логарифмов. Пример 8.11 Мы хотим взять логарифм в GF(2В * 10). Чтобы представить GF(210) подходящим образом и найти в нем примитивный элемент, мы ищем примитивный многочлен степени 10, используя функцию Fieldlrrcdu-
144 Глава 8. Системы, основанные на логарифмах cible из пакета “Mathematica”. Для этого сначала загружается пакет Algebra1 FiniteFields‘. << Algebra^initeFields4 fid = GF [2, 10]; Fieldlrreducible[fId, x] II 1 + x7 + x10 Итак, мы берем GF(210) = GF(2)[a;]/(a;10 + ж7 + 1) с примитивным эле- ментом х. Теперь уравнение (8.1) читается следующим образом: найти такое т, что хт = с(ж) (mod ж10 + ж7 + 1). В качестве базы делителей S возьмем множество всех неприводи- мых многочленов степени не больше 4. Читатель может вспомнить, что все бинарные неприводимые многочлены степени d входят в разло- жение многочлена х2 — х (см. теорему B.35J. Clear[х]; Factor [х23 - х, Modulus -> 2] Factor [х24 - х, Modulus -> 2] II х (1 + х) (1 + х + х3) (1 + х2 + х3) II х (1 + х) (1 + х + х2) (1 + х + х4) (1 + х + х2 + х3 + х4) Следовательно, база делителей S такова: Р1(х) = X, р2(х) = 1 + х, Рз(х) = 1 + X + х2, рДх) = 1 + х + ж3, рДх) = 1 + X2 + Ж3, Рв(х) = 1 + х + х2 + ж3 + х4, Р7(х) = 1 х + х4, Р&(х) = 1 + X3 + х4. Мы хотим записать каждый из элементов базы делителей в виде степени х, т.е. решить проблему логарифмов для элементов базы дели- телей. С этой целью попытаемся найти те степени х в GF[x]/(r10+ 4-ж7 + 1), которые выражаются в виде произведений многочленов Pj(x), 1 < j < 8. При этом используются функции Factor и PolynomialMod из пакета “Mathematica”. attempt = PolynomialMod[х85, {х10 + х7 + 1, 2}]; Factor[attempt, Modulus -> 2] II 1 + х + х2 + х3 + х4 + х5 + х6 + х9 || (1 + х + х)2 (1 + х + х2) (1 + х2 + х3 + х4 + х5) Заключаем, что степень х85 не гладка относительно нашей базы дели- телей. После нескольких попыток (и ошибок) находим следующий спи- сок гладких степеней х:
8.3. Как брать дискретные логарифмы 145 Factor[PolynomialMod[х, {х10 + х7 + 1, 2}], Modulus -> 2] Factor[PolynomialMod [х86, {х10 + х7 + 1, 2}], Modulus -> 2] Factor [PolynomialMod [х140, {х10 + х7 + 1, 2}], Modulus -> 2] Factor [PolynomialMod [х211, {х10 + х7 + 1, 2}], Modulus -> 2] Factor [PolynomialMod [х319, {х10 + х7 + 1, 2J-] , Modulus -> 2] Factor [PolynomialMod [х457, {х10 + х7 + 1, 2}], Modulus -> 2] Factor [PolynomialMod [х605, {х10 + х7 + 1, 2}], Modulus -> 2] Factor[PolynomialMod[х787, {х10 + х7 + 1, 2J-] , Modulus -> 2] и х || (1 + X + X3) (1 + х2 + X3) II х2 (1 + х + х2)2 II (1 + х)5 (1 + X + X2 + X3 + х4) II (1 + х) (1 + X3 + X4) (1 + X + X2 + X3 + X4) II (1 + X + х2) (1 + X + X3) (1 + X + х4) II (1+х) (1 + X2 + х3) (1 + х + х4) II (1 + X + х3) (1 + X2 + X3)2 Записывая Pi(x) = xmi (mod ж10 + х7 + 1), мы в итоге получим восемь линейных сравнений. Например, последний ответ выше дает X787 = (1 + ж + Ж3)(1+Х2+ж3)2 = жт4(жт5)2 = хт4+2т5 (mod Ж10+Ж? + 1). Взяв логарифмы обеих частей, приходим к линейному сравнению 787 = гп4 + 2m5 (mod 1023), так как 1023 — мультипликативный порядок примитивного элемента х. На этом пути мы и получаем восемь линейных сравнений: 1 = mi (mod 1023), 86 = 7714+7715 (mod 1023), 140 = 2mi + 2тз (mod 1023), 211 = 5тт22 + Trig (mod 1023), 319 = ТП2 + T7i6 + nig (mod 1023), 457 = 7713 + 7774 + 7717 (mod 1023), 605 = 7712 + 7715 + 7777 (mod 1023), 787 = 7774 + 27775 (mod 1023). Эту систему линейных сравнений можно решить с помощью функ- ции Solve пакета “Mathematica”.
146 Глава 8. Системы, основанные на логарифмах Clear[ml, m2, m3, m4, m5, m6, m7, m8]; Solve[{ml == 1, m4 + m5 == 86, 2 ml + 2 m3 == 140, 5 m2 + m6 == 211, m2 + m6 + m8 == 319, m3 + m4 + m7 == 457, m2 + m5 + m7 == 605, m4 + 2 m5 == 787, Modulus == 1023}, {ml, m2, m3, m4, m5, m6, m7, m8}] {{Modulus -> 1023, m8 -> 827, ml -> 1, m3 -> 69, m6 -> 591, m7 -> 1003, m2 -> 947, m4 -> 408, m5 -> 701}} Тем самым мы узнали, что mi = 1, m2 = 947, m3 = 69, mi = 408, т~, = 701, mg = 591, ту = 1003, mg = 827. Если линейные сравнения оказываются линейно зависимыми, нужно некоторые из них заменить другими, добиваясь линейной независимо- сти. Найдем теперь решение уравнения хт = 1 4- х 4- х® + ж9 (mod ж10 + 4-ж7 + 1). Из Factor[PolynomialMod[ 1 + х + х6 + х9, {х10 + х7 + 1}] , Modulus -> 2] Factor[PolynomialMod[ x50 (1 + x + x6 + x9), {x10 + x7 + 1}], Modulus -> 2] || (1 +x)2 (1 + x + x2 + x3 + x4 + x5 + x7) || (1+x + x2)2 (1 + x + x4) видно, что 14-ж-f-ж6 + ж9 нельзя записать как произведение многочленов из S, но ж50(1 4- х 4- х® 4- ж9) — можно. Мы получили, что 50 4- т = 2тз 4- ту = 2 • 69 4- 1003 = 118 (mod 1023), так что решением уравнения хт = 14-ж4-ж64-ж9 (mod ж104- ж7 4- 1) служит т = 68 (mod 1023). Это легко проверить: PolynomialMod [х68, {х10 + х7 + 1, 2}] II 1 + х + х6 + х9 8.4 Задачи Задана 8.1м. Пользователи А и В хотят применить систему Диффи- Хеллмана, чтобы установить общий ключ по публичному каналу. Они исполь- зуют GF(p) ср — 541 и примитивным элементом а = 2. Пользователь В делает публичным св = 123. Если тд = 432, то каков общий ключ к а,в, который А и В используют для связи? Задача 8.2. Пользователи А и В хотят применить систему Диффи- Хелл- мана, чтобы установить общий ключ по публичному каналу. Они используют
8.4. Задачи 147 F2[z]/(x10 + х3 + 1) для представления GF(210). Пользователь В делает публич- ным св = 0100010100, обозначающее элемент поля х + х5 + х7. Если тд = 2, то каков общий ключ, который А и В используют для связи? Задача 8.2. Продемонстрируйте версию алгоритма Похлига-Хеллмана, ко- торая вычисляет логарифмы в конечном поле размера q = 2П + 1, взяв log2 142 в GF(257). Задача 8.4м. Проверьте, что 953 — простое число и что 3 — образующий в Zg53. Найдите три наименее значащих бита решения т сравнения Зт = 726 (mod 953). (См. замечание в обсуждении частного случая q — 1 = 2та.) Задача 8.5м. Вычислите log3 135 в GF(353) с помощью алгоритма Похли- га-Хеллмана. Задача 8.6м. Найдите log44 55 в GF(197) методом “детский шаг—гигантс- кий шаг”, когда в таблицу могут быть записаны только 15 элементов поля. Задача 8.7м. Проверьте, что a = 662 — примитивный корень степени 2003 из единицы в GF(4007) (заметим, что число 4007 просто). Пусть G — мультипликативная подгруппа порядка 2003 в GF(4007), порожденная а. Про- верьте, что 2124 лежит в G. Задача 8.8м. Проверьте, что g = 996 — образующий мультипликативной группы Z4007. Применив метод исчисления индексов с базой делителей размера 6, определите log996 1111. Задача 8.9м. Решите уравнение хт = 1 + х3 + х9 (mod х10 + х3 + 1) по образцу примера 8.11. Задача 8.10м. Какова вероятность того, что случайный элемент хт mod (ге10 + з;3 + 1) — гладкий относительно множества всех бинарных неприводимых многоленов степени не больше 10 (см. пример 8.1)?
Глава 9 Системы, основанные на методе RSA 9.1 Система RSA В 1978 г. Райвест, Шамир и Адлеман [RivSA78] предложили крип- тосистему с публичными ключами, которая стала известна, как система RSA. Она использует следующие три факта: 1) возведение в степень по модулю составного числа п, т.е. вычисление с из сравнения с = те (mod п) для заданных т и е — относительно простая операция (см. подразд. 8.1.1); 2) противоположная задача извлечения корней по модулю большого составного числа п, т.е. вычисление т из сравнения с = те (mod п) (которое можно записать в виде т = у/с (mod п)) для заданных сие, вообще говоря, чрезвычайно трудна; 3) если примарное разложение п известно, то задача извлечения кор- ней по модулю п выполнима. 9.1.1 Немного математики Процитируем теорему А. 14 и определение А.6 функции Эйлера из приложения А. Теорема 9.1 {Эйлер) Пусть а и п — натуральные числа. Тогда нод(а, п) = 1 => = 1 (mod п), (9-1) где функция Эйлера <р{п) подсчитывает количество натураль- ных чисел от 1 до п, взаимно простых с п. Функцию <р можно вычислить из равенства <р(п) = пТТ (1 — —). --J-pIn.p простое р (9-2) Читатель может проверить это с помощью функций GCD и EulerPhi пакета “Mathematica”.
9.1. Система RS А 149 n = 1999; а = 1234; GCD[a, n] ph = EulerPhi[n] PowerMod[a, ph, n] II 1 II 1998 II 1 9.1.2 Формирование системы □ Шаг 1: вычисление модуля пу Каждый пользователь U системы выбирает два различных простых числа, скажем, ри и qu- В первоначальном предложении была рекомен- дована длина этих чисел порядка 100 (десятичных) цифр. Пусть пи = puqu- Из равенства (9.2) следует, что р(пи) = пи(1---—)(1----—) = (ри - 1)(фу - 1). (9.3) Ри qu Это можно увидеть и непосредственно. Из пи целых чисел от 1 до пу = = Puqu все взаимно просты с пу, кроме qu чисел, кратных ри (именно Ри,%Ри,Зри, • • • , quPu) и ри чисел, кратных qu (именно qu, 2qu, 3qu, -, Puqu)- При подсчете нужно лишь осознать, что число puQu отбрасыва- лось слишком часто. Пример 9.1 (часть 1) Чтобы пример был “управляемым”, участник Боб выбирает простые числа разумно малыми. Он использует функции Prime и EulerPhi из пакета “Mathematica”. рВ = Prime[1200] qB = Prime[1250] nB = рВ * qB phiB = EulerPhi[nB] II 9733 II 10177 II 99052741 II 99032832 □ Шаг 2: Вычисление показателей еи и du Пользователь U выбирает такое натуральное число еи, 1 < е-и < < <р(пи), что нод(б[/, <р(пи)) = 1. Затем он вычисляет единственное du, удовлетворяющее условиям eudu = 1 (mod р(пи)), 1 < du < ?(пу). (9.4)
150 Глава 9. Системы, основанные на методе RSA К примеру, U может использовать расширенный алгоритм Эвклида (см. разд. А.2), чтобы найти du менее чем за logf(p(nu) операций, где f — (1 + (теорема А.9). Пример 9.1 (часть 2) Случайный выбор числа ев и вычисление бв можно выполнить с по- мощью функций Random, While и ExtendedGCD пакета “Mathematica”. еВ = Random[Integer, -£1, nB}] ; While [GOD[eB, phiB] !=1, eB = Random [Integer, {1, nB}]]; eB ExtendedGCD [eB, phiB] II 81119923 || {1, {17089915, -13998717}} Таким образом, Боб имеет ев = 81119923 и ds = 17089915. Это можно проверить, вычисляя функцию Mod: dB = 17089915; Mod[eB * dB, phiB] II 1 □ Шаг 3: публикация ец и пи Каждый пользователь U делает публичными числа еи и пр, сохра- няя в секрете du- Простые числа ри и qu более не играют никакой роли. Но сам U может использовать их, как мы позже увидим, для умень- шения сложности своих вычислений. Поэтому ри и qu нс могут быть опубликованы1. 9.1.3 RSA как схема шифрования Если пользователь А, скажем, Алиса, хочет послать секретное сооб- щение Бобу, она представляет свое сообщение в произвольной стандар- тизованной форме как число т,0 < т < пв- Затем Алиса отыскивает публичный показатель ев Боба и посылает шифртекст с, вычисленный следующим образом: с = тев mod пв- Боб может восстановить т из с, возводя с в степень ds, которая из- вестна только ему. В самом деле, для некоторого целого I мы имеем cdB = (meB)dB = meBdB тп1+^¥’(пв) = т(ш¥’(пв)у ( = ) т (mod п#), (9-5) 1 Обычно в литературе пара (пи,еи) называется публичным ключом, а пара (пи, du) (или одно число du) — секретным ключом пользователя U.— Прим. ред.
9.1. Система RSA 151 когда нод(т, п-в) = 1. В задаче 9.2 читателю предлагается проверить, что система работает и тогда, когда нод(тп,пв) 7^ 1. Резюмируем систему шифрования RSA в следующей таблице. ПУБЛИЧНЫЕ СЕКРЕТНОЕ СВОЙСТВО СООБЩЕНИЕ ДЛЯ В ШИФРОВАНИЕ ДЛЯ В ДЕШИФРОВАНИЕ ец И Пи ВСЕХ ПОЛЬЗОВАТЕЛЕЙ U du ПОЛЬЗОВАТЕЛЯ U eudu = 1 (mod тп, 0 < тп < пв с = тпев mod пв ТП _ cdB mo J nB Таблица 9.1. RSA как схема шифрования. Публичный и секретный показатели в системе RSA традиционно обозначаются через еи и du, чтобы указать на функции шифрования (encryption) и дешифрования (decryption) соответственно. Пример 9.1 (часть 3) Мы продолжаем пример 9.1с теми же параметрами, так что пв = = 99052741, ев = 81119923 и дв = 17089915. Шифрование с = тпев mod пв сообщения тп = 12345678 выполняется в пакете “Mathematica” с по- мощью функции PowerMod: пВ = 99052741; еВ = 81119923; dB = 17089915; m = 12345678; с = PowerMod [m, еВ, nB] II 38447790 Боб дешифрует это, вычисляя cdB mod пв, что дает т. PowerMod [с, dB, nB] II 12345678 Можно уменьшить объем работы в процессе дешифрования, приме- нив китайскую теорему об остатках (теорема А.19). В самом деле, Боб, зная разложение п — р х q, может поступить следующим образом. Он предвычисляет целые числа а и Ъ, меньшие п, удовлетворяющие сравнениям {а = 1 (mod р), а = 0 (mod q). 6 = 0 (mod р), 6=1 (mod q).
152 Глава 9. Системы, основанные на методе RSA Получив шифртекст с, Боб вычисляет mi = cf mod р и m-2 = = eg mod q, где ci — c mod p и C2 = c mod q. Заметим, что все эти вы- числения выполняются по модулю р и q, типичная длина которых со- ставляет половину длины п. По китайской теореме об остатках число m = cd mod п равно (mi« + m.26) mod п. Этот подход приносит дополнительное преимущество. В силу теоре- мы Ферма (теорема А. 15) показатель d при вычислении mi и m2 может быть приведен по модулю р — 1, соответственно, q —- 1. Действительно, mi = cd = cdl (mod p), где di = d mod (p— 1), и аналогичное сравнение справедливо для вычислений по модулю q. Пример 9.1 (часть 4) Продолжаем, с параметрами примера 9.1, так что рв — 9733, qB = = 10177, пв = 99052741, ев = 81119923 и dB = 17089915. Чтобы найти решения систем ( а = 1 (mod 9733), \ а = 0 (mod 10177); (6 = 0 (mod 9733), (6=1 (mod 10177). загрузим пакет NumberTheory‘NumberTheoryFunctions‘. << NumberTheory‘NumberTheoryFunctions‘ и найдем числа а и b с помощью функции ChineseRemainderTheorem: а = ChineseRemainderTheorem[<1, 0}, <9733, 101771] b = ChineseRemainderTheorem[<0, 1}, {9733, 10177}] II 45287650 II 53765092 Далее, вычисляем mi = cd = cdl (mod p) и m2 = cd = cd2 (mod q), получая p = 9733; q = 10177; d = 17089915; c = 38447790; cl = ModEc, p] c2 = ModEc, q] dl = Mod Ed, p - 1] d2 = Mod Ed, q - 1] ml = Mod Ecl, dl, p] m2 = ModEc2, d2, q] II 2440 II 9261 II 523
9.1. Система RSA 153 II 4411 II 4234 II 977 Результат дешифрования дается выражением (т^а + тп^Ъ) mod п и совпадает с указанным ранее. п = 99052741; Mod [ml * а + m2 * b, n] II 12345678 9.1.4 RSA как схема подписи Равным образом систему RSA можно использовать для подписыва- ния сообщений. Чтобы подписать сообщение тп, 0 < т < пд, Боб вычис- ляет с = mdB mod пв- Получатель сообщения, скажем, Алиса, может легко восстановить ис- ходное тп, вычисляя сев modrijg, так как параметры ев и пв Боба пуб- личны. Чтобы проверить это, повторим вычисления (9.5) (с небольшой вариацией): сев = (mdB)eB = meBdB ( = } = Tn(m¥’^B^)f > т (mod пд) (9.6) для всех тп с нод(тп, пв) = 1- Сравнение сев = тп (mod пд) выполня- ется и тогда, когда нод(тп, пв) 7^ 1. В задаче 9.2 читателю предлагается доказать это. Алиса должна рассматривать с как подпись Боба к тп. Только Боб может вычислить с, исходя из тп, потому что ему одному известно бв- Мы советуем читателю перечитать обсуждение перед табл. 7.2. ПУБЛИЧНЫЕ еи и Пу ВСЕХ ПОЛЬЗОВАТЕЛЕЙ U СЕКРЕТНЫЙ du ПОЛЬЗОВАТЕЛЯ U свойство eudu = 1 (mod р(пц)) сообщение Боба тп,0 < тп < пв В подписывает с = mdB mod Пв А ПРОВЕРЯЕТ Сев = ТП (mod Пв) Таблица 9.2. Система RSA для подписывания. Пример 9.1 (часть 5) Боб подписывает сообщение тп = 11111111, вычисляя с = mdB mod пв.
154 Глава 9. Системы, основанные на методе RSA m = 11111111; с = PowerMod[m, dB, nB] II 74138899 Алиса проверяет подпись, вычисляя сев mod пв и получая т. 9.1.5 RSA как схема шифрования и подписи Предположим, что Алиса хочет подписать сообщение тп Бобу. Об- щее решение, описанное в подразд. 7.1.4, а именно, когда Алиса сначала подписывает т с помощью своего секретного ключа, а затем шифрует результат с помощью публичного ключа Боба, не всегда непосредственно применимо в системе RSA. Чтобы увидеть это, заметим, что Алиса должна была бы послать с = (mdA mod пд}ев mod пв- (9-7) Однако это отображение не будет инъективным, если пд > пв- Напри- мер, оба сообщения тщ = 1 и тп? = (1 + пв)еА отобразятся в с = 1. Так как Алиса и Боб не хотят делиться своими простыми числами, необходимо, чтобы было пд < пв- В этом случае Боб может восстановить тп следующим образом: (cds mod пв)еА mod пд — тп. Чтобы проверить это, воспользуйтесь соотношениями (9.5) и (9.6). Конечно, теперь возникает новая проблема — что делать, когда Боб захочет подписать конфиденциальное сообщение Алисе. Простое реше- ние состоит в том, чтобы каждый пользователь создавал два набора па- раметров — один с модулем, меньшим некоторого порога Т, и другой с модулем, большим Т. В этих условиях отправитель использует свой соб- ственный меньший модуль для подписи и больший модуль получателя — для шифрования. ПУБЛИЧНЫЕ eui И nui ВСЕХ ПОЛЬЗОВАТЕЛЕЙ и, i = 1,2 СЕКРЕТНЫЕ dui ПОЛЬЗОВАТЕЛЯ U, i = 1,2 СВОЙСТВА euidui = 1 (mod Пщ), Пщ < Т < П[/2 СООБЩЕНИЕ ОТАкВ ТП, 0 < ТП < ПА1 А посылает с — (mdxi mod пд1)ев2 mod пвъ В ВЫЧИСЛЯЕТ (cds2 mod пв2)ед1 mod пд1 = тп В СЧИТАЕТ cdB2 modns2, подписью равное mdxi mod пд1 Таблица 9.3. RSA как схема шифрования и подписи.
9.2. Безопасность RS А: алгоритмы факторизации 155 Если между Алисой и Бобом возникает спор, то они идут к арбитру. Этот арбитр получает от Боба числа m и u = cdB2 mod пв2- Последнее равно mdA1 mod n^i, так как cds2 mod пв2 ((mdA1 mod пд1)ев2 mod пв2/В2 mdA1 mod ПА1- Точно также, как в подразд. 9.1.4, арбитр проверяет, будет ли иеАЛ = гп (mod n^i). Если это условие выполняется, то сообщение m действитель- но пришло от Алисы; если же нет, и не будет рассматриваться как под- пись Алисы к тп. Заметим, что арбитр не нуждается в знании секретных показателей Алисы или Боба. Поэтому Алиса и Боб могут продолжать использовать свои исходные наборы параметров. 9.2 Безопасность RSA: некоторые алгоритмы факторизации 9.2.1 Что может делать криптоаналитик Предположим, что злоумышленник, скажем, Ева, перехватила сек- ретное сообщение с = тпев mod пв для Боба. Если Ева знает секретный показатель dg Боба, то она может вскрыть тп, из шифртекста с в точно- сти тем же путем, что и Боб, а именно вычислив cdB mod пв (см. (9.5)). Определить ds по публичному показателю ев и сравнению esdB = 1 (mod <^(пв)) (см. (9.4)) Еве легко, как только она знает (/?(п^): она про- сто использует расширенный алгоритм Эвклида, как это делал Боб при формировании системы. Чтобы найти <р(пв) — (рв ~ 1)((7в — 1) (см. (9.3)), Еве нужно факто- ризовать (т.е. разложить на простые множители) число пв- Во время введения RSA Шроппель (Schroeppel, не опубликовано) предложил модификацию алгоритма факторизации Моррисона и Брилл- харта [МогВ75]. Она включала e^innininn операций. При построении следующей таблицы, дающей представление о росте это- го выражения, используются функции TableForm, Table, Exp, Sqrt, Log и А из пакета “Mathematica”. TableFormE Table[ {k, N [Exp [Sqrt [Log[10~k] *Log [Log [10лк]]]] , 3] } , {к, 25, 250, 25}], TableHeadings -> {{}, {"length in digits", "complexity"}}, TableAlignments -> {Center}]
156 Глава 9. Системы, основанные на методе RSA length, in digits 25 complexity 4.3X106 50 1.42 x 1010 75 8.99 x 1012 100 2.34 x 1015 125 3.41 x 1017 150 3.26 x 1019 175 2.25 x 1021 200 1.2 x 1023 225 5.17 x 1024 250 1.86 x 1026 Как можно видеть, если п имеет длину около 200 цифр, указанный выше криптоанализ недоступен. С другой стороны, были разложены чис- ла, много большие, чем считалось возможным в то время, когда бы- ла предложена схема RSA (при публикации этой книги рекордом были 512-битные числа). По этой причине очевидны предложения использо- вать для RSA существенно большие модули. Пример современного быстрого алгоритма факторизации можно най- ти в [LensH86]. Другие методы будут обсуждены в подразд. 9.2.3. Суще- ствуют специальные алгоритмы факторизации, которые работают быст- рее, если п имеет особую форму. Один из таких методов мы изложим в следующем подразделе. Кажется, до сих пор нет никакого способа взлома системы RSA, кро- ме разложения модуля п, но формальное доказательство эквивалент- ности этих двух проблем отсутствует. В разд. 9.5 мы обсудим вариант системы RSA, для которого можно показать, что его взлом эквивалентен разложению модуля. Недостатком при выборе больших модулей является то, что выполне- ние одного возведения в степень требует больше времени, чем желатель- но, особенно когда нужно шифровать длинный файл. В такой ситуации часто применяют гибридную систему: для шифрования данных исполь- зуется симметричная система с секретным ключом к, а схема RSA ис- пользуется, чтобы безопасно послать этот ключ получателю (применив публичные параметры получателя). При генерации р и q было бы плохой идеей сначала генерировать р, а затем испытывать на простоту числа р + 2,р + 4,.... В действитель- ности нужно, чтобы число q — р (считая р < д) было большим. В самом деле, если криптоаналитик может угадать q — р, например, проверяя все вероятные значения, то он может определить q + р из равенства 4n = 4pq = (9 + р)2 - (д - р)2. Из двух линейных уравнений находятся р и q, что влечет за собой взлом системы.
9.2. Безопасность RSA: алгоритмы факторизации 157 Пример 9.2 Пусть п = 5007958289. Угадав, что q — p = 200, мы находим q+p из п = 5007978289; Sqrt[4 * п + 200*2] II 141534 Из уравнений q+p = л/4п + 2002 и q—p = 200 выводим q — (л/4п + 2002 + +200)/2. q = (Sqrt[4 * n + 200*2] + 200) / 2 р = q - 200 II 70867 II 70667 р ♦ q == n II True Итак, число \q — p\ должно быть большим. Способ достичь этого — взять q больше, чем р +- у/р. В литературе можно также найти несколько атак на систему RSA, имеющих вероятность успеха, которая лишь незначительно больше ве- роятности того, что случайно выбранное натуральное число, меньшее п, имеет нетривиальный делитель, общий с числом п. Тогда этот делитель — либо р, либо q. Вероятность того, что это произойдет, может быть вычислена с помощью функции Эйлера <р(п): п — <р(п) (<кз) р - q — (р~ l)(g — 1) __ р + q — 1 ~ 1 п р • q р' q р в предположении, что р < q. То, что р нельзя брать слишком малень- ким, вытекает из алгоритма факторизации, обсуждаемого в следующем подразделе. Ввиду того, что упомянутые выше “атаки” имеют такую малую веро- ятность успеха, мы не будем обсуждать их здесь. Но на них базируются некоторые из задач в конце главы. 9.2.2 Алгоритм факторизации для специального класса целых чисел Сейчас мы кратко обсудим алгоритм факторизации, который работа- ет быстрее, чем общие алгоритмы факторизации, рассматриваемые ни- же, но в предположении, что хотя бы один из простых делителей числа п, скажем, р, обладает тем свойством, что р — 1 имеет только малые простые делители.
158 Глава 9. Системы, основанные на методе RSA □ (р — 1)-метод Полларда Поллард в [Ро1175] описал способ разложения числа п за Др шагов, где р — наименьший простой делитель числа п. Это объясняет, почему нужно брать р и q большими. Основным предположением в (р — 1)-методе Полларда является то, что в разложении числа п хотя бы один из двух2 делителей, скажем, р, обладает тем свойством, что р — 1 имеет только малые простые делители. Чтобы быть точнее, назовем целое число гладким (см. также подразд. 8.3.4) относительно натурального числа3 S', если все простые делители данного числа не превосходят S. Мы будем предполагать, что р — 1 — гладкое относительно некоторого S. Пример 9.3 Для простого числа р = 70877 число р — 1 — гладкое относитель- но S = 50, что можно проверить с помощью функций Factorinteger и PrimeQ из пакета “Mathematica”. р = 70877; PrimeQ[р] Factorinteger[р - 1] II True || «2, 2}, {13, 1}, {29, 1}, {47, 1}} Для каждого простого числа г < S наибольшая степень г, которая все еще не превосходит п, удовлетворяет неравенству гг < п или, эквивалентно, i < logr n. Определим R равенством •R = TT rLloK."J, (9.8) J- J-r<S, г простое Пример 9.4 (часть 1) Рассмотрим число п = 6700892281 и предположим, что хотя бы для одного его простого делителя р число р — 1 гладко относительно S — 50. Как вытекает из Prime [15] Prime [16] II 47 II 53 2В действительности, составное п, к которому применим как этот алгоритм, так и излагаемые ниже, может иметь более двух простых делителей. — Прим. ред. 3Такое S часто называют границей гладкости. — Прим. ред.
9.2. Безопасность RSA: алгоритмы факторизации 159 имеются 15 простых чисел, не превосходящих S = 50. С помощью функ- ций Prime, Log и Floor из пакета “Mathematica” можно вычислить R по формуле (9.8): п = 6700892281; R = П (Prime [i] )Floor[LosCPrime[i:i > n]^ i=l 4049567180360871571548109887351145051687154638935149 0245060727076702214282424813734946501919403167962039 75457787003008948633600000000000000 Посмотрим (любопытства ради) на показатели простых чисел, вхо- дящих в разложение R и меньших 50: Factorinteger[R] {{2, 32}, <3, 20}, {5, 14}, {7, 11}, {11, 9}, {13, 8}, {17, 7}, {19, 7}, {23, 7}, {29, 6}, {31, 6}, {37, 6}, {41, 6}, {43, 6}, {47, 5}} Если р — 1 — гладкое относительно S, то каждая степень гг простого числа, которая делит р — 1, будет также делителем числа R, так как г не превосходит [logr nJ. Отсюда следует, что р — 1 делит R. По теореме Ферма (теорема А. 15) любое целое а, 1 < а < р, удовлетворяет сравнению ар-1 = 1 (mod р). Поскольку (р — 1) |77, также имеем aR = 1 (mod р). Возьмем теперь случайное целое а, 2 < а < р, и проверим, будет ли нод(а, n) = 1. Если этот НОД не равен 1, то мы нашли делитель числа п. Если НОД (a, n) = 1, то из aR = 1 (mod р) следует, что p\(aR — 1). По- скольку весьма неправдоподобно, что еще и aR = 1 (mod q), мы почти наверняка находим делитель числа п (а именно р), вычисляя нод(аЛ — -1,п). Заметим, что при этом не нужно вычислять aR, — достаточно значения aR mod п. Пример 9.4 (часть 2) Чтобы найти делитель числа п = 6700892281, выберем случайное а между 2 и п — 1 и вычислим нод(ай — 1,п) посредством функций Random, PowerMod и GCD из пакета “Mathematica”. а = Random[Integer, {2, n}] GCD[PowerMod[a, R, n] - 1, n] II 3922094384 II 81919 Это означает, что p — 81919 — делитель числа п. Другим делите- лем будет nfp — 81799. Заметим, что если бы q тоже было гладким относительно S, то при вычислении НОД мы получили бы п. Резюмируем (р — 1)-метод Полларда на следующем рисунке.
160 Глава 9. Системы, основанные на методе RSA input: select НАТУРАЛЬНОЕ ЧИСЛО n; ГРАНИЦУ ГЛАДКОСТИ S; calculate R из (9.8); select случайное а, 2 < а < п; calculate нод(ай - 1,п); if 1 < d < n, then d — делитель п else STOP или выбрать новое СЛУЧАЙНОЕ а. Рис. 9.1. (р — 1)-метод факторизации Полларда. Для того, чтобы (р — 1)-метод Полларда оказался невыполнимым, при формировании системы RSA часто выбирают так называемые без- опасные простые числа. Это простые числа р вида р = 2р' + 1, где р1 — (большое) простое число. В этом случае р — 1 имеет ровно один малый делитель. 9.2.3 Общие алгоритмы факторизации □ р-метод Полларда Пусть р — неизвестный простой делитель натурального числа п, которое мы хотим разложить. Взглянем на последовательность «□, «1,..., определяемую рекурсивными соотношениями «о = 1, oi+i = а? + 1 (mod р), i > 0. Допустим, что мы нашли такие индексы и и v, v > и, что аи = av (mod р). Тогда ясно, что нод(ау — аи,п) делится на р и весьма вероятно, что этот НОД равен р. Конечно, р не известно, поэтому заменим прежнюю рекурсию следу- ющей: ai+i = а? + 1 (mod n), г>0. Так как р|п, мы найдем делитель р из нод(ау — аи, п) для тех же самых значений и и v (вероятность того, что другие большие делители числа п делят этот НОД, ничтожно мала). Вместо того, чтобы записывать все ранее вычисленные значения а*, i > 0, воспользуемся алгоритмом Флойда нахождения цикла: именно, ищем такой индекс к, что «2fc = ак и тогда берем и = к и v = 2к. Идея проста: начиная с а± и а^, рекурсивно определяем пару («г+i, «2(г+1))> ИСХОДЯ ИЗ («г» «2г)- Резюмируем сказанное выше на следующем рисунке.
9.2. Безопасность RSA: алгоритмы факторизации 161 input: НАТУРАЛЬНОЕ ЧИСЛО П; put a = 1, b = 2; do a <— (a2 + 1) mod n; b <— (((b2 + 1) mod n)2 + 1) mod n until d = нод(а,Ь) > 1; if d < щ then d — ДЕЛИТЕЛЬ n else STOP. Рис. 9.2. p-метод Полларда факторизации n. Пример 9.5 Чтобы найти делитель числа п = 168149075693 рассмотренным вы- ше методом, используем функции While, Mod и GCD пакета “Mathema- tica”. п = 168149075693; а = 1; b = 2; d = GCD [b - а, n] ; While [d == 1, a = Mod [a2 + 1, n] ; b = Mod[(Mod[b2 + 1, n])2 + 1, nJ; d = GCD[b - a, n]]; d II 350377 Итак, p = 350377 делитель числа n = 168149075693. Частным n/p служит 479909, которое тоже оказывается простым, что легко про- веряется посредством функции PrimeQ: а = п / 350377 PrimeQ[а] II 479909 II True □ Факторизация методом случайных квадратов Как этот, так и последующий методы родственны методу исчисления индексов, изложенному в подразд. 8.3.4. Читатель может захотеть прочи- тать введение к тому методу, но для понимания следующего обсуждения это не обязательно. Мы предполагаем, что п — нечетное составное число. Метод состоит из следующих четырех шагов. Шаг 1: Строим множество S = {pi,Р2? • • • ?Pfc}? состоящее из первых к про- стых чисел, т.е. pi = 2,рг = 3 и т.д. Множество S называется базой делителей. Шаг 2: Находим достаточно много пар таких, что а2 = bi (mod n), (9.10)
162 Глава 9. Системы, основанные на методе RSA причем bi — гладкое относительно S, т.е. все bi полностью разлагаются в произведение элементов базы делителей S, скажем, Ьг = П^=1РГ’7’ где Ui>j — °* Положим Ui = (ujj, Ui,2,..., Пары (oj, bj), удовлетворяющие сравне- нию (9.10), могут быть найдены попытками случайного выбора сц. Аль- тернатива — использование подходящих рекурсивных соотношений, ко- торые порождают кандидатов на роль сц. Например, после испытания a,i = а можно испытать сц = (а2 + 1) mod п. Шаг 3: Найдем семейство чисел 6$, произведение которых является квадра- том. Вполне очевидно, что в этом условии имеет значение только чет- ность показателей Uitj. Поэтому положим Vitj = mod 2 и = (^д, .. •, Будем кратко писать = и* mod 2. Так как любые к + 1 векторов у^ (длины к) будут линейно зависи- мы над Z2, должна существовать нетривиальная линейная, комбинация, равная 0. Такая линейная комбинация может быть очень эффективно найдена стандартными методами линейной алгебры. Пусть I — такое подмножество из {1,2,... , к}, что Yliei—i = 2 (mod 2). Положим ж = Ц€/а* и ^(ПеЛ) • Шаг 4: Из сравнения (9.10) следует, что х2 = у2 (mod п), т.е. п делит (х — у)(х + у). Допустим, что х ±у (mod п) (вероятность этого, как мы вскоре увидим и как будет продемонстрировано в подразд. 9.5.1 для случая, когда п — произведение двух различных простых чисел, не мень- ше 1/2). Тогда х — у должно делиться на нетривиальный делитель числа п. Другими словами, нод(х — у, п) даст такой нетривиальный делитель. Если нод(х — у, п) = п, нужно попытаться найти другой квадрат — либо беря другую линейную зависимость между либо заменяя одну из пар (<2j,bj) новой парой. Рассмотрим сравнение х2 = у2 (mod п), где преполагается, что у имеет заданное фиксированное значение, взаимно простое с п. Далее, пусть ра — любой делитель в разложении п на степени простых чисел (см. теорему А.6). Тогда сравнение х2 = у2 (mod ра) имеет в точности два решения, а именно х = ±р (mod ра). В самом деле, при а = 1 это следует из теоремы В. 15. При а > 1 все еще верно, что ра должно делить либо х — у, либо х-\-у, но не оба числа, потому что если р\{х — у} и р|(х+у), то р|2р, причем р /р, а так как п нечетно, то и р нечетно. Получаем4, что х = ±у (mod ра) и при а > 1. 4 Можно проще: Z*a — циклическая группа, значит, для любого d, делящего ее порядок, в группе существуют ровно 92(d) элементов порядка d. Здесь d — 2, 92(d) = 1.— Прим. ред.
9.2. Безопасность RSA: алгоритмы факторизации 163 Теперь непосредственно из китайской теоремы об остатках (теорема А.19) вытекает, что сравнение х2 = у2 (mod п) имеет 21 решений, где I — число различных простых чисел, делящих п. Только два из этих 21, I > 2, решений имеют вид х = ±у (mod pa). Поэтому вероятность того, что нод(ж — t/, п) дает нетривиальный делитель числа п, не меньше, чем (2г -2)/2г > 2/4 = 1/2. input: НАТУРАЛЬНОЕ ЧИСЛО Щ make find БАЗУ ДЕЛИТЕЛЕЙ S = {pi, . . . ,pfc}; ПАРЫ (ai,bj), ГДЕ Щ СЛУЧАЙНО, а2 = bi (mod n), bi ГЛАДКО ОТНОСИТЕЛЬНО S; find ТАКОЕ ИНДЕКСНОЕ МНОЖЕСТВО Z, ЧТО ILeA КВАДРАТ; put put if d < х = Пге/ У = л/Пге/ d = нод(ж - р,п); n, then d — делитель п else повторить попытку с другим I. Рис. 9.3. Метод случайных квадратов. Пример 9.6 Попробуем разложить число п = 1271 рассмотренным выше мето- дом. Сначала, пользуясь функциями Table и Prime пакета “Mathematica”, построим базу делителей из первых 8 простых чисел. S = Table [Prime [i] , {i, 1, 8}] || {2, 3, 5, 7, 11, 13, 17, 19} Теперь используем функцию Random для генерации случайного а, 1 < < а < п, и функцию Factorinteger для разложения числа b = а2 (mod п). п = 1271; а = Random[Integer, {1, n}] b = Mod[a2, n] Factorinteger[b] II 460 II 614 || «2, 1}, {307, 1}} К сожалению, b = 614 не гладко относительно S, но после несколь- ких попыток и ошибок мы находим следующие девять гладких чисел (составляющих список, названный а). п = 1271; а= {583, 536, 1137, 421, 727, 1034, 1051, 107, 1111};
164 Глава 9. Системы, основанные на методе RSA b = Mod[а2, п]; TableFormE Table[{a[[i]] , b[[i]] , Factorinteger[b[[i]] ] // OutputForm}, {i, 1, Length [a]}], TableHeadingth -> {{}, {"а", "\!\(aV2\) mod n", "factors"}}, TableAlignments -> {Left}] а a2 mod п factors 583 532 «2, 2}, {7, 1}, {19, 1}} 536 50 {{2, 1}, {5, 2}} 1137 162 {{2, 1}, {3, 4}} 421 572 {{2, 2}, {11, 1}, {13, 1}} 727 1064 {{2, 3}, {7, 1}, {19, 1}} 1034 245 {{5, 1}, {7, 2}} 1051 102 {{2, 1}, {3, 1}, {17, 1}} 107 10 {{2, 1}, {5, 1}} 1111 180 {{2, 2}, {3, 2}, {5, 1}} Показатели в разложениях чисел bi задаются векторами uif кото- рые образуют строки матрицы U ниже. Векторы y_i — это Ui, приве- денные по модулю 2. Они образуют строки матрицы V. Например, Ь± = 532 = 22 • 7 19 дает Uj = {2,0,0,1,0,0,0,1} и ид = {0,0,0,1,0,0,0,1}. Эти две строки суть первые строки матриц U и V соответственно. Чтобы показать их, воспользуемся функцией MatrixForm. U = «2, О, О, 1, О, О, О, 1}, {1, 4, О, О, О, О, О, 0}, {3, О, 0, 1, О, 0, 0, 1}, {1, 1, 0, 0, 0, 0, 1, О}, {2, 2, 1, О, О, О, О, 0}}; V = Mod[U, 2] ; MatrixForm[U] MatrixForm[V] {1, О, 2, О, О, О, О, 1}, {2, О, О, О, 1, 1, О, О}, {О, О, 1, 2, О, О, О, 0}, {1, 0, 1, О, О, 0, 0, 0}, / 2 0 0 1 10 2 0 14 0 0 2 0 0 0 3 0 0 1 0 0 12 110 0 10 10 \ 2 2 1 О О 0 0 1 \ 0 0 0 1 0 0 0 0 110 0 0 0 0 1 0 0 0 0 0 0 10 0 0 0 0 о о о о у
9.2. Безопасность RSA: алгоритмы факторизации 165 /000100014 10000001 10000000 00001100 10010001 00100000 11000010 10100000 \00100000/ Чтобы найти нетривиальную линейную комбинацию строк матри- цы V, сравнимую с нулевым вектором по модулю 2, используем функции NullSpace и Transpose. NullSpace [Transpose [V] , Modulus -> 2] {{О, 0, О, О, О, 1, О, О, 1}, {О, 0, 1, О, О, 1, О, 1, 01, {1, 0, 1, 0, 1, о, о, о, он Видно, что первая из найденных линейных зависимостей между строками матрицы V отражает идентичность двух строк, но тре- тья зависимость дает пригодное к использованию индексное множе- ство I, а именно, I = {1, 3, 5}. Это приводит к значениям х = оц <23(25 и у = Vbib3b5. X = а[[1]] * а[[3]] * а[[5]] у = Sqrt [b [[1] ] * Ь[[3]] * Ь[[5]]] GCD[x - у, п] II 481907217 II 9576 II 41 Таким образом, р = 41 — делитель числа п = 1271. И в самом деле, 1271 = 31 х 41; п / 41 II 31 □ Квадратичное решето Сложность этого метода — ехр{1.923... (lnn)1/3(lnlnn)2/3} операций.
166 Глава 9. Системы, основанные на методе RSA Как и в случае предыдущих методов, мы не будем объяснять все детали этой техники факторизации. Для начала мы нуждаемся в так называемой базе делителей — списке чисел, которые будут определены позже. Пусть г = а многочлен /(х) определяется равенством /(х) = (х + г)2 — п = х2 + 2г • х + г2 — п. Заметим, что г2 < п < (г + I)2 и, значит, 0 < п — г2 < 2r -f- 1 < 2л/п + 1. Отсюда следует, что если х мало по абсолютной величине, то и /(х) будет мало (по сравнению с п). Для х = 0, ±1, ±2,... определим a = х + г и проверим число b = = (x-f-r)2 — п на гладкость относительно S, т.е. проверим, все ли простые делители числа b лежат в S. Если это так, занесем пару (а, Ь) в список пар (сц,Ь<), обладающих этим свойством. Заметим, что а2 = (х + г)2 = bi (mod n), — точно как в сравнении (9.10). Если простое число р делит bi, то р|((х + г)2 — п) для некоторого из- вестного значения х. Это означает, что п = (х + г)2 (mod р), и поэтому п — квадратичный вычет по модулю р. Значит, только простые дели- тели, появляющиеся в разложении каких-либо bi, дают символ Якоби (п/р) = 1. Таким образом, составим базу делителей S из к наименьших нечет- ных простых чисел pj, 1 < j < к, обладающих тем свойством, что (n/pj) = 1. Добавим к S также —1 и 2, потому что bi могут быть от- рицательными или четными. Теперь, зная, как строить список пар (а^Ь^), удовлетворяющих усло- виям а? = bi (mod n), bi — гладкое относительно S, мы можем продолжить, начиная с шага 3, алгоритм, описанный в преды- дущем подразделе. Резюмируем метод квадратичного решета на следующем рисунке. input: НАТУРАЛЬНОЕ ЧИСЛО п; make базу делителей S = {—1,2,р1?... ГДЕ (п/Pj) = 1; find ПАРЫ (ai,bij, ГДЕ di — Lv^J МАЛО, а? = bi (mod п) и bi гладко относительно 5; find ИНДЕКСНОЕ МНОЖЕСТВО I, ТАКОЕ, ЧТО Пге/ bi ~~ КВАДРАТ; put х = Пге/ айУ= put d = НОд(х — у, п); if d < n, then d — ДЕЛИТЕЛЬ ЧИСЛА п else повторить попытку с другим I. Рис. 9.4. Факторизация методом квадратичного решета.
9.2. Безопасность RSA: алгоритмы факторизации 167 Мы дадим пример только первых двух шагов метода квадратичного решета. Пример 9.7 Пусть п = 661643. Для создания базы делителей с 10 нечетными простыми числами воспользуемся функциями While, Length, JacobiSym- bol, Prime и AppendTo пакета “Mathematica”. n = 661643; k = 10; SS = {-1, 2}; i = 2; While [Length [SS] - 2 < k, If [JacobiSymbol[n, Prime [i]] == 1, AppendTo[SS, Prime[i]]]; i = i + 1]; SS || {-1, 2, 11, 19, 23, 31, 37, 47, 53, 59, 79, 89} Чтобы узнать, будут ли какие-то из чисел /(—5),/(—4),... ,/(5) гладкими относительно S, используем функции TableForm, Table и Factorinteger: n = 661643; Clear[х, f]; г = L^J ; m = 5; f(x_) := (x + r)2 - n; TableForm[ Table[{r + i, f [i] , Factorinteger[f[i]] // OutputForm}, {i, -m, m}]] 808 809 -8779 -7162 «-1, «-1, 1}, <8779, 1}} 1}, {2, 1}, <3581, 1}} 810 -5543 «-1, 1}, {23, 1}, {241, 1}} 811 -3922 «-1, 1}, {2, 1}, {37, 1}, {53, 1}} 812 -2299 «-1, 1}, {11, 2}, {19, 1}} 813 -674 «-1, 1}, {2, 1}, {337, 1}} 814 953 «953}} 815 2582 «2, 1}, {1291, 1}} 816 4213 «И, 1}, {383, 1}} 817 5846 «2, 1}, {37, 1}, {79, 1}} 818 7481 «7481, 1}} Видно, что мы нашли только три подходящие пары (а^, bi), а именно (811,-3922), (812,-2299) и (817,5846). Таким образом, нужно попро- бовать расширить область значений. Завершение этого примера мы оставим читателю в качестве упражнения (см. задачу 9.7,}
168 Глава 9. Системы, основанные на методе RSA 9.3 Некоторые опасные режимы RSA 9.3.1 Малый публичный показатель Мы обсудим здесь две частные опасности, описанные в [Hast88] (см. также [CoppFPR96]5). Первую опасность создает ситуация, когда нес- колько персон выбрали один и тот же (малый) показатель, а отправи- тель хочет передать им всем одно и то же сообщение. Вторая опасность возникает, когда отправитель хочет передать несколько математически связанных сообщений одному получателю, имеющему малый публичный показатель. Обе опасности могут показаться читателю надуманными, но, посколь- ку возведение в степень по модулю больших чисел оказывается довольно обременительным, в практических ситуациях выбор малых публичных показателей остается весьма привлекательным. □ Передача одинаковых сообщений нескольким получателям, имеющим один и тот же малый публичный ключ Предположим, что Алиса хочет послать одно и то же секретное сооб- щение Бобу, Чаку и Деннису. Пусть публичные модули этих трех полу- чателей равны пв, пс и пр соответственно. Допустим теперь, что у всех троих оказался один и тот же публичный показатель е — 3. Сообщения, передаваемые Алисой, суть св — тп3 mod пв се = тп3 mod пс cd = пг3 mod пр для Боба, для Чака, для Денниса. (9.U) Почти наверняка все три модуля будут попарно взаимно просты (в про- тивном случае по меньшей мере два из них подвергаются риску). Зло- умышленница Ева, перехватившая с#, се и сд. может использовать китайскую терему об остатках (теорема А. 19), чтобы из (9.11) найти тп3 mod пвпспо. Поскольку можно считать, что тп < тт{пд, пс, пр}, выполняется неравенство тп3 < пвпспи- Это означает, что фактически Ева находит целое число тп3. Вычислить тп не составляет труда. Пример 9.8 Предположим, что пв = 137703491, пс = 144660611 и пв — = 149897933, а св = 124100785, сс = 85594143 и cD = 148609330 - три перехваченных сообщения. Чтобы решить систему линейных сравнений тп3 = св (mod пр), т3 = се (mod пс), тп3 = cd (mod пд), 5 А также полезный обзор *[Вопе99] теоретических атак на RSA, включающий до- казательства ряда результатов.— Прим. ред.
9.3. Некоторые опасные режимы RSA 169 с известными правыми частями и известными модулями, воспользуем- ся функцией ChineseRemainderTheorem из “Mathematica”. С этой целью загружаем сначала пакет NumberTheory‘NumberTheoryFunctions‘. < < NumberTheory<NumberTheoryFunctions< nB = 137703491; nC = 144660611; nD = 149897933; cB = 124100785; cC = 85594143; cD = 148609330; mCubed = ChineseRemainderTheorem[{cB, cC, cD}, {nB, nC, nD}] II 1881563525396008211918161 Получаем, что m3 = 1881563525396008211918161 (mod пвпс'пр')- По- скольку m3 < пвпспр, мы даже имеем т3 = 1881563525396008211918161. Теперь легко найти т: m = (mCubed)1/3 II 123454321 Правильность этого выхода легко проверяется посредством функции Mod. Mod [m3, nB] == cB Mod[m3, nC] == с С Mod [m3, nD] == cD II True II True II True □ Передача связанных сообщений получателю с малым публичным ключом Алиса хочет послать два секретных сообщения Бобу, публичный по- казатель е = ев которого оказался довольно маленьким. Пусть пв — модуль Боба. Допустим теперь, что эти два сообщения связаны линейно, т.е. т<2 = a-mi + b, где а и b лежат в , и что перехватчице Еве известно это линейное соотношение. Копперсмит и др. описывают в [CoppFPR96] два неожиданных мето- да, позволяющих Еве восстановить открытый текст т\. Прямой метод Сначала опишем этот метод для случая е = 3. Пусть шифровки сооб- щений т\ и m2 обозначаются посредством ci и с% соответственно. Таким
170 Глава 9. Системы, основанные на методе RSA образом, ci = mf mod пв и С2 = (а mi + Ь)3 mod ng. Тогда Ь(с2 + 2a3ci — Ь3) _ За35т3 4- За2Ь2т2 + 3ab3mi _ . Й(С2 _ О3С1 + 2б3) = Зй36т2 + 3a2b2mi + 3аЬ3 = (mod «В)- (9.12) Эти вычисления можно проверить с помощью функции Simplify из па- кета “Mathematica” следующим образом: ClearEa, b, cl, с2, ml, m2]; Simplify[ b (с2 + 2 a3 cl - b3) а (с2 - a3 cl + 2 b3) * С с2 -> (а * ml + b)3}] -> ml3, II ml Отметим особенно простой случай, когда mi = m и m2 = m 4- 1 т.е. a = b = 1. Тогда соотношение (9.12) сводится к сравнению (m + I)3 4- 2m3 — 1 Зт3 + Зт2 4- Зт . . . —-------5-----о---- =------о-----------= т (mod пв . (т + I)3 — т3 + 2 Зт2 4- Зт 4- 3 Пример 9.9 Предположим, что пв — 477310661 и что сообщения mi и m2 свя- заны сравнением m2 = 3mi 4- 5 (mod пв)- Таким образом, а = 3 и 5 = 5. Пусть ci = 5908795, С2 = 374480016. Тогда mi можно вычислить в пакете “Mathematica” с помощью функций Mod и Solve следующим образом: ClearEcl, с2, f, g, ml, m2, a, b]; n = 477310661; cl = 5908795; c2 = 374480016; a = 3; b = 5; f = Mod Eb (c2 + 2 a3 cl - b3) , n] ; g = ModEa (c2 - a3 cl + 2 b2), n] ; SolveE{f == g * ml, Modulus == nJ, ml] || {{Modulus -> 477310661, ml -> 32132132Ш Итак, найдено mi = 321321321. Легко проверить, что это действи- тельно искомое решение: ml = 321321321; m2 = Mod[3 * ml + 5, n] PowerMod.Eml, 3, n] == cl PowerModEm2, 3, n] == c2
9.3. Некоторые опасные режимы RSA 171 II 9342646 II True II True Если а = Ь=1ие = ев>3, тот же метод все еще работает. Фактиче- ски можно показать ([CoppFPR96]), что существуют многочлены Р(т) и Q(m), такие, что каждый из них выражается в виде многочлена от q = me mod пв и сг = (т 4- 1)е mod пд, причем Q(m) = т • Р(т). Приведем такие многочлены для е = 5: Р(т) = с3 + 2cic| — 4с2сг + cf — 2с| + Эщсг + 8с% + сг — 2ci, Q(m) = 9с1С2 — 9с2 Опять можно проверить сказанное: Clear[cl, с2, mJ; Р = с23 + 2 cl с22 - 4 cl2 с2 + cl3 - 2 с22 + 9 cl с2 + 8 cl2 + с2 - 2 cl; Q = 9 cl с22 - 9 cl2; Expand[Р //. {cl -> m3, с2 -> (m + I)3}] Expand[Q //. {cl -> m3, с2 -> (m + I)3}] Simplify//. {cl -> m3, c2 -> (m + I)3}] II 9m2 + 54m3 + 135m4 + 171m5 + 135m6 + 54m7 + 9m8 II 9m3 + 54m4 + 135m5 + 171m6 + 135m7 + 54m8 + 9m9 и m Чтобы найти решение в общем случае, запишем Р = РгЛ<<>с^ и Q = Yli+j<e Теперь подставим сг = (т + 1)е и ci = me в Р и Q и получим многочлены от m степени < е2. Затем приравняем соответ- ствующие коэффициенты, добиваясь равенства Q(m) = т • Р(т). Это даст 2((е + 1) + е + ... + 2 + 1) = 2(е^2) = (е + 2)(е + 1) линейных уравне- ний относительно коэффициентов в Р и Q. Таким образом, фактически имеется большое пространство решений. Так как количество членов в Р(т) и Q(m) растет квадратично от- носительно е, изложенный подход становится довольно трудоемким при больших значениях е. Метод взлома вычислением НОД Для произвольных значений е существует еще более прямой путь определения mi и m2 из ci и сг при условии, что сообщения удовле- творяют полиномиальному сравнению, которое известно перехватчику. Предположим, что m2 = /(mi) (mod пд). Идея состоит в вычисле- нии НОД(ге — С1,(/(г))е — сг). В самом деле, поскольку mi — нуль обоих многочленов, они делятся на г-тщ. Как следствие, НОД также
172 Глава 9. Системы, основанные на методе RSA имеет этот делитель, и почти наверняка у него нет никаких других делителей. Продемонстрируем эту идею на примере. Пример 9.10 Пусть е = Ь,пв = 466883. Предположим, что сообщения mi и m2 связаны равенством m2 = 2mi + 3, а их шифртекстами служат ci = 66575 и С2 = 387933 соответственно. Мы хотим вычислить нод(г5 —66575, (2г + 3)5 — 387933) mod 466883. Вообще говоря, “Mathema- tica” не может сделать это непосредственно, так как пв — составное число. Поэтому мы просто, шаг за шагом, последуем полиномиальной версии алгоритма Эвклида. При этом могут возникать проблемы, ко- гда появляются числа, не взаимно простые с п = пв- Такое встреча- ется редко и, кроме того, это совсем не плохо. В самом деле, на этом пути почти всегда отыщется нетривиальный делитель числа п, так что система окажется взломанной! Сначала мы вычисляем fi = (2z + 3)5 — 387993 и /2 = z5 — 66575, а за- тем делим fi на /2- Воспользуемся функциями Expand и PolynomialMod пакета “Mathematica”. п = 466883; cl = 66575; с2 = 387933; fl = Expand[(2 z + З)5 - с2] f2 = z5 - cl f3 = PolynomialMod[fl - 32 f2, n] II -387690 + 810z + 1080z2 + 720z3 + 240z4 + 32z5 II -66575 + z5 II 342061 + 810z + 1080z2 + 720z3 + 240z4 Чтобы сделать процесс деления более удобным, нормализуем fa, умножая его на мультипликативный обратный (по модулю пв) к старшему коэффициенту с помощью функции PowerMod из пакета “Mathematica”. InverseLeadCoeff = PowerMod[240, -1, n] f3 = PolynomialMod[InverseLeadCoeff * f3, n] II 258731 II 376877 + 408526z + 233446z2 + 3z3 + z4 Продолжаем этот процесс деления, пока для некоторого к не будет fk = 0. Тогда fk-i — искомый НОД. f4 = PolynomialMod[f2 - f3 * (z + 466880), n] II 130290 + 381818z + 291812z2 + 233446z3
9.3. Некоторые опасные режимы RSA 173 InverseLeadCoeff = PowerMod[233446, -1, n] f4 = PolynomialMod[InverseLeadCoeff * f4, n] II 103752 II 184581 + 292352z + 116723z2 + z3 f5 = PolynomialMod[f3 - f4 * (z + 350163), n] II 355162 + 4681z + 203714z2 InverseLeadCoeff = PowerMod[203714, -1, n] f5 = PolynomialMod[InverseLeadCoeff * f5, n] II 349909 II 397084 + 98465z + z2 f6 = PolynomialMod[f4 - f5 * (z + 18258), n] II 451016 + 87731Z InverseLeadCoeff = PowerMod[87731, -1, n] f6 = PolynomialMod[InverseLeadCoeff * f6, n] II 132235 II 466340 + z f7 = PolynomialMod[f5 - f6 * (z + 99008), n] II 0 Мы получили, что k = 7 и, следовательно, нод(г5 — 66575, (2г + З)5 — 387933) = z + 466340 = г-543 (mod 466883). Поэтому секретным сообщением является т = 543. Проверим это с помощью функции PowerMod из пакета “Mathematica”. m = 543; PowerMod[m, 5, n] == cl PowerMod[2 m + 3, 5, n] == c2 II True II True Рассмотренный подход поиска m посредством вычисления нод оста- ется практичным для числа е длиной до 32 битов ([CoppFPR96]).
174 Глава 9. Системы, основанные на методе RSA 9.3.2 Малый секретный показатель; атака Винера Винер в [Wien90] показал, насколько опасно использовать систему RSA с малым секретным показателем, где “малый” означает что-то напо- добие у/п. Это наблюдение важно, поскольку люди часто склонны выби- рать малый показатель, чтобы уменьшить объем работы при возведении в степень. Например, когда smart-карта используется для подписывания сообщений (см. подразд. 9.1.3), она должна вычислять степени cd mod n. Если вычислительная мощность карты ограничена, удобно взять отно- сительно малое значение d (конечно, не настолько малое, чтобы d можно было найти исчерпывающим поиском). Покажем сначала, что сравнение (9.4) можно заменить несколько бо- лее сильным сравнением е • d = 1 (mod нок[р — 1,q — 1]), где нок обозначает наименьшее общее кратное. Числа р — 1 и q — 1 оба делят у?(п), а потому делят и нок[р — 1,<? — 1]. Теперь заметим, что для правильного функционирования системы RSA нужны лишь сравнения е • d = 1 (mod р — 1) и е • d = 1 (mod q — 1). Причина в том, что этих двух сравнений достаточно для доказательства формул (9.5) и (9.6) по модулю р и по модулю q соответственно. Тогда китайская теорема об остатках влечет, что сравнения (9.5) и (9.6) выполняются также по модулю п. Мы приходим к выводу, что достаточно сравнения е • d = 1 (mod нок[р — 1, q — 1]). Последующий криптоанализ имеет дело с этим более сильным срав- нением. Цель криптоаналитика — найти d, удовлетворяющее последнему соотношению (а также р и q). Наше сравнение можно переписать в виде е • d = 1 + К • нок[р — 1, q — 1] = 1 -+- ^(р - 1)(д - 1), где G = нод(р — 1,q — 1). Если К и G имеют общий нетривиальный делитель, то равенство выше упрощается до к е • d = 1 + -{р - l)(q - 1), где НОД(&,#) = 1. (9.13) Нужно представлять себе, что G (а потому и д) очень мало. В типичной системе RSA числа р и q — безопасные простые, т.е. р— 1 = 2р' и q—1 = 2q' с простыми числами р' и q', а в этом случае G — 2 и д = 1 или 2. Перепишем равенство (9.13), разделив обе его части на d-n(= d-p-q) и перегруппировав члены: к е к (\ 1 1\ 1 , — __ (_ _— I —।---------j _ --. (9.14) d • д п d • д \р q п ) d • п Мы хотим показать, что k/(d • д) — подходящая дробь к непрерывной дроби известного рационального числа е/n. Так как непрерывные дроби
9.3. Некоторые опасные режимы RSA 175 легко вычисляются, можно найти секретный показатель d (а также fc и д). Теорема 9.2 Предположим, что р q ~ у/n и 2д < d. Тогда k ~ d • д и числа й^д^Р и q могут быть найдены из непрерывной дроби числа е/n для секретного показателя d < п1/4. Замечание 1. Мы будем несколько вольно обращаться с символом Запись a ~ b означает что-то вроде “а и b имеют одинаковый порядок по величине”. Замечание 2. Мы уже обсуждали правдоподобность того, что д ма- ло. Если d выбирается как малое число, то е ведет себя подобно случай- ному числу из области {1,2,... , нок[р — 1, q — 1]}, поэтому предположе- ние е ~ п вполне разумно. То же самое сохраняется и для соотношений q ~ у/n (см. обсуждение до и после примера 9.2). Замечание 3. Равенство (9.14) влечет следовательно, до- статочно проверять только подходящие к е/n дроби нечетного порядка. Доказательство теоремы 9.2. Если е ~ п, то в силу (9.14) к ~ ~ d- д, поскольку все другие члены там близки к нулю. Далее, из соот- ношения (9.14) вытекает, что к е fc /1 1 1\ 1 -----__ — I —।-------I _ < d • д n d • д \р q nJ d • n k + g к /1 1\ d+1 2 1 -----_|----| —।— ] -----1 ~ d • g • n d • g \p q J d-n y/n y/n Так как 2g • d < d2 < n1/2, мы получаем к e < 1 1 d • g n ~ y/n 2(d • g)2 Из теоремы A.35 следует, что число k/(d • д') равно подходящей дроби к непрерывной дроби числа е/n. Поскольку, в силу соотношения (9.13), нод(&,д) = нод(&,(/) = 1, следствие А.32 влечет, что k/(d • д') — в точ- ности (несократимая) подходящая дробь. Так как д очень мало, поиск д и d методом проб и ошибок требует небольших усилий6. 6Последнее двойное неравенство в доказательстве нам не ясно. Покажем иначе, как найти d и у(п) (а значит, р и q), если выполнены условия: (1) р < q < 2р; (2) d< (l/3)n1/4 ([Wien90]). Для некоторого г имеем ed — r<p(n) = 1, где <p(n) = n—p—q+1 и, значит, п — <р(п) = = р + q — 1 < Зр < Зу/n. Поэтому е г n d \ed — rtp(n) + гср(п) — rn\ _ |1 + r(ip(n) — n)| < 3m1/2 _ 3r dn dn ~~ dn dn1^2"
176 Глава 9. Системы, основанные на методе RSA Теперь из (9.13) можно вычислить (р— 1)(q—1) и, так какр-g известно, можно также найти разложение п на р и q. Пример 9.11 Рассмотрим п = 9998000099 и е = 6203014673. Вычислим последо- вательные подходящие дроби к е/п. Сначала загрузим в “Mathematica” пакет NumberTheory‘ContinuedFractions‘> а затем используем функции ContinuedFraction и Normal. << NumberTheory‘ContinuedFractionsi n = 9998000099; e = 6203014673; Normal[ContinuedFraction[е / f n, 2]] Normal[ContinuedFraction[е / f n, 4]] Normal[ContinuedFraction[е / f n, 6]] Normal[ContinuedFraction[e / f n, 8]] II 1 2 5 18 II 1 3 8 29 Выясним, почему последняя из этих дробей не приводит к d (про- чие случаи еще проще). Приравнивание k/(d • g) = 18/29 дает значения к = 18, g = 1 и d = 29. Легкий путь демонстрации того, что это не является правильным значением d, — зашифровать результат де- шифрования, и убедиться, что ответ отличен от исходного сообщения. Воспользуемся функцией PowerMod: m = 123; d = 29; с = PowerMod[m, e, n]; PopwerMod[c, d, n] == m II False Испытаем следующую подходящую дробь: Normal[ContinuedFraction[е / n, 10]] II II 137 Приравнивание 85/137 = k/(d-g) приводит к значениям k = 85, g = 1 и d = 137. Из (9.13) получаем (р — 1)(q — 1) = 9993745862. Но r<p(n) = ed — 1 < ed < <p(n)d, откуда г < d < (1/3)п1?/4. Следовательно, er n1/4 _ 1 1 n d < dn1/2 dn1/4 < 2d2 ' Так как нод(г, d) = 1, по теореме А.35 r/d — подходящая к е/п дробь. Дальше все ясно.— Прим. ред.
9.3. Некоторые опасные режимы RSA 177 к = 85; g = 1; d = 137; (e*d-l)*g/k II 9997800120 Учитывая, что п - р q = 9998000099, получаем р 4- q — 1 = p-q — -(p-V)(q - 1) = n-(e*d-l)g/k II 199979 Таким образом, р и q — корни многочлена (х — р)(х — q) = х2 — —199980а; + 9998000099. Они могут быть найдены с помощью функции Solve: Clear[х]; Solve[х2 - 199980 х + 9998000099 х2 == 0, {х}] || «х -> 99989}, {х -> 99991}} В самом деле, 99989 х 99991 = п: 99989 * 99991 == п II True 9.3.3 Некоторые физические атаки Физические атаки на криптографические устройства лежат за преде- лами этого введения. Несмотря на это, мы кратко упомянем две такие атаки ввиду их связи с излагаемой здесь теорией. □ Атака по времени вычислений Предположим, что система RSA реализована на электронном устрой- стве (наподобие smart-карты) и что секретное возведение в степень (т н-> ь-> md mod п или с н-> cd mod п) в процессе функционирования RSA сле- дует вычислительной схеме типа объясненной в подразд. 8.1.1, т.е. любой схеме, которая состоит из повторяющихся возведений в квадрат и умно- жений (см. пример 8.3). Далее, допустим, что при этой атаке (см. [Koch96]) наблюдатель мо- жет измерять электромагнитное излучение или потребление мощности устройством и тем самым может оценивать длительность различных вы- числений. Обычно умножение требует больше времени, чем простое воз- ведение в квадрат. На этом пути атакующий может определить частную последователь- ность возведений в квадрат и умножений, через которую проходит про- грамма. Основываясь на выходе, он может легко вычислить секретный показатель d, записанный на карте.
178 Глава 9. Системы, основанные на методе RSA Например, если измерения дают Sq.Sq.M.Sq.Sq.M.Sq.Sq.M.Sq.M, где Sq означает возведение в квадрат, а М — умножение, то показатель по- лучается, исходя из следующей процедуры: II а171 □ Атака “микроволновкой” Снова предположим, что система RSA реализована на электронном устройстве (скажем, smart-карте), но теперь допустим, что секретное возведение в степень (т md mod п или с cd mod п) в процессе функ- ционирования RSA использует китайскую теорему об остатках (теорема А.19); см. пример 9.1 (часть 4). Таким образом, мы считаем, что на этом устройстве выполняются два независимых возведения в степень — по модулю р и по модулю q, где п = р • q. Предположим теперь, что RSA используется для подписывания дан- ных (это простейшая версия атаки; см. [LensA96] и [BoDML97]). Поэтому обычно атакующий представляет smart-карте сообщение m и ждет обрат- но с = md mod п. При этом, когда smart-карта выполняет свои вычисле- ния, атакующий подвергает ее облучению надлежащего сорта (“просто положи ее в микроволновку” — сверхупрощение этой атаки) и надеется, что одно из двух возведений в степень будет сделано неправильно. Например, smart-карта правильно вычисляет щ = md mod р, но нахо- дит неверное значение С2, т.е. получает с2 md mod q. Читатель должен вспомнить, что в smart-карте записаны значения а и Ь, удовлетворяющие сравнениям {a = 1 (mod р), а = 0 (mod g); {b = 0 (mod р), b = 1 (mod q). Таким образом, карта выдаст d = (а • с\ + b • d2) mod п. Заметим теперь, что в силу сравнений b = 0 mod р и а = 0 mod q с — d а • ci — а • ci b • С2 — Ь • d2 О (mod р), Ь(с2 - с'2) О (mod g). Отсюда следует, что нод(с — d, п) даст нетривиальное разложение п. От способа применения карты зависит, сможет ли атакующий узнать также и правильное значение с, например, снова предлагая карте подпи- сать т, но уже без всякого облучения. Способ обойти эту проблему состо- ит в том, что атакующий выбирает сообщение с, вычисляет m = се mod п
9.3. Некоторые опасные режимы RSA 179 с публичным показателем е и предлагает это m при атаке на карту. В этом случае правильное значение с известно уже заранее. Пример 9.1 (часть 6) Продолжаем работу с параметрами примера 9.1, так что рв = 9733, qB = 10177, пв = 99052741, ев = 81119923, dB = 17089915. Далее, а = 45287650, Ь = 53765092 (см. пример 9.1 (часть 4)). Возь- мем с= 11111111. п = 99052741; е = 81119923; с = 11111111; m = PowerMod [с, е, ш] II 24307114 Таким образом, подписывая т = 24307114, карта должна выдавать с= 11111111. Карта вычисляет числа и с% и получает с следующим образом: р = 9733; q = 10177; d = 17089915; dl = Mod[d, p - 1]; d2 = Mod[d, q - 1] ; ml = Mod[m, p] ; m2 = Mod[m, q] ; a = 45287650; b = 53765092; cl = PowerMod [ml, dl, p] ; c2 = PowerMod [m2, d2, q] ; c = Mod [a * cl + b * c2, n] II 11111111 Однако, если благодаря облучению ci вычислено неправильно, ска- жем, получено Ci = 8765, то карта будет продуцировать неправильное значение d вместо с = 11111111, и НОД разности этих двух чисел с п даст делитель числа п. clPrime = 8765; cPr = Mod[а * clPrime + b * с2, п] GCD[c - cPr, п] II 92608527 II 10177 Действительно, число 10177 — один из двух делителей п.
180 Глава 9. Системы, основанные на методе RSA 9.4 Как генерировать большие простые числа; некоторые тесты на простоту 9.4.1 Испытание случайных чисел Чтобы практически построить систему RSA, нужен эффективный способ генерации очень длинных простых чисел. Следующий псевдоал- горитм описывает веротностный способ того, как это можно сделать. Алгоритм 9.3 (генерация l-значных простых чисел) Шаг 1: Написать случайное нечетное Z-значпое целое и. Шаг 2: Проверить кандидата и на простоту; если и не простое, вернуться к шагу 1; иначе STOP. В двух ближайших разделах мы обсудим некоторые способы провер- ки целого и на простоту. Первые два теста не дают абсолютной гаран- тии простоты и, но вероятность того, что составное число и пройдет тест, может быть сделана сколь угодно малой. Еще один тест (набросок которого дается в подразд. 9.4.3) может гарантировать простоту, но он намного медленнее. Другие тесты читатель может найти в разд. 4.5.4 книги [Knut81]. Пример 9.12 Чтобы смоделировать алг. 9.3 в пакете “Mathematica”, можно ис- пользовать функции Random, PrimeQ и While. Заметим, что ниже четность и не проверяется (это в любом случае не является суще- ственной частью алгоритма). u = 1; 1=3; att = 0; While[PrimeQ[u] == False, att = att + 1; и = Random [Integer, 10*}-] ] ; Print["простым числом является ", и] Print[att, ” попыток"] простым числом является 907 7 попыток Каково ожидаемое число пробегания шагов 1 и 2 в приведенном вы- ше “алгоритме” до получения простого числа? Чтобы ответить на этот вопрос, мы должны знать долю простых чисел в множестве Z-значных нечетных чисел. С этой целью напомним закон распределения простых чисел (теорема А.2).
9.4. Генерация простых чисел; тесты простоты 181 Теорема 9.4 Пусть 7г(х) подсчитывает число простых чисел, меньших или равных х (см. определение А.1). Тогда Г 7^) 1 lim^oo —----- = 1. X/ In X С помощью закона распределения простых чисел (ЗРП) довольно лег- ко получить долю нечетных Z-значных чисел, которые просты. Вычис- ляем: tt(1Oz) - 7r(10*-1) ЗРП 10*/In 10* - lO^/ln 10*-1 _ 2(9 I - 10) ~ (10* - 10г~1)/2 ~ (10* - Ю*-1)^ “ 9 - Z(Z — 1)1п 10 ~ _ 2 ~ Z • In 10' Например, при I = 100 получится 1 = 100; EstimateProb[1_] = 2*(9*1 - 10)/(9*1*(1 - l)*Log[10]); N[EstimateProb [100] , 3] II 0.00868 Так как обратное к этому числу приблизительно равно 115, ожида- емое число проходов в нашем “алгоритме” порождения простых чисел оценивается числом 115. 9.4.2 Вероятностные тесты простоты □ Тест простоты Соловэя—Штрассена Пусть р— простое число. Напомним (см. определение А.9), что целое число и, где р /и (читается: р не делит и), называется квадратичным вычетом (QR) по модулю р, если уравнение х1 = и (mod р) имеет целочисленное решение. Если р /и и данное сравнение не име- ет целочисленного решения, то и называется квадратичным невычетом (NQR) по модулю р. Хорошо известный символ Лежандра (см. опре- деление А. 10) задается равенством если и — квадратичный вычет по модулю р, если и — квадратичный невычет по модулю р, если р делит и.
182 Глава 9. Системы, основанные на методе RSA Символ Якоби (^) (см. определение А. 11) обобщает символ Лежан- дра на все нечетные натуральные числа тп. Пусть тп = где pi (необязательно различные) нечетные простые числа. Тогда (—) опреде- ляется равенством (\ Ci u X Pi J В разд. А.4 читатель может найти все свойства символов Лежандра и Якоби. Эти свойства достигают кульминации в крайне эффективном алгоритме вычисления значений этих символов. Пример можно найти там же. В пакете “Mathematica” оба символа вычисляются с помощью функции JacobiSymbol: и = 12703; m = 16361; JacobiSymbol[u, m] II 1 Так как тп в примере выше — простое число, фактически легко вы- числить квадратный корень из и. Читатель отсылается к разд. 9.5, где обсуждается, как именно это сделать. В пакете “Mathematica” можно просто использовать функцию Solve. Clear[х]; Solve[{х2 == 12703, Modulus == 16361}, х] || {Modulus^l6361, х^7008}, {Modulus—>16361, х^9353} В самом деле, (±7008)2 = 12703 (mod 16361), что можно проверить с помощью функции PowerMod. PowerMod[7008, 2, 16361] II 12703 Нахождение решений сравнения х2 = и (mod тп) для составных чи- сел тп является, вообще говоря, очень трудной задачей, неподдающейся решению для больших значений тп (обсуждение этой проблемы см. в [Рега86]). Если тп — произведение различных простых чисел, и это разложение известно (!), то можно найти квадратный корень из и по модулю тп, най- дя квадратные корни из и по модулю всех простых делителей числа т, а затем скомбинировав результаты посредством китайской теоремы об остатках. Этот метод будет продемонстрирован в разд. 9.5. Когда разло- жение тп содержит более высокие степени простых чисел, все становится намного более сложным.
9.4. Генерация простых чисел; тесты простоты 183 Пусть р — простое число, р > 2. Напомним, что по теореме А.23 для всех целых чисел и р/ (mod р). (9.15) Алгоритм Соловэя-Штрассена [SolS77] опирается на следующую теоре- му: Теорема 9.5 Пусть тп — нечетное целое число, a G определяется равенством НОД(и, тп) = 1 и f—= u(m х^2 (mod m)l> . \тп/ J Тогда |G| = тп — 1, если тп просто; (9.16) |G| < (тп — 1)/2, если тп не просто. (9.17) Доказательство. Если тп просто, то любое целое и, 0 < и < тп, удовлетворяет сравнению (9.15) и имеет нод с тп, равный 1, так что в этом случае |G| = тп — 1. Поэтому нужно рассмотреть лишь случай, когда тп не просто. Оче- видно, G — подгруппа мультипликативной группы Z^ = {0 < U < ш|нод(и, тп) = 1}. Из теоремы В.5 следует, что мощность G делит мощность Z^. Поэтому, если G Z^, можно заключить, что |G|<|Z^|/2 = ^(m)/2<(m-l)/2. Это докажет теорему. Таким образом, достаточно доказать существова- ние такого элемента и в Z^, что (™) u(m-i)/2 (mod тп). Мы различаем два случая. В [SolS77] авторы опускают рассмотрение случая, когда тп — квадрат. В приводимом ниже доказательстве, принад- лежащем Дж.У.Найенхьюзу (частное сообщение), случай 1 покрывает опущенную возможность. Случай 1: число тп делится на квадрат некоторого простого числа. Запишем тп = рг • s, где р — нечетное простое, г > 2 и нод(р, s) = 1. Пусть и — решение системы сравнений usl+p (mod pr), (9.18) и = 1 (mod s). (9.19) В силу китайской теоремы об остатках (теорема А. 19) такое решение и существует и единственно по модулю тп. Очевидно, нод(щрг) =
184 Глава 9. Системы, основанные на методе RSA = нод(и, s) = 1 и, значит, нод(и, тп) = 1, т.е. u <Е Z^. Из сравнения (9.18) и биномиальной теоремы с помощью рассуждения, подобного до- казательству теоремы В.26, следует, что um = (1 + р)т = 1 (mod рг). В силу соотношения (9.19) мы также имеем ит = 1 (mod s). Теперь китайская теорема об остатках дает ит = 1 (mod m). Так как ввиду (9.18) и ф 1 (mod m), из сказанного вытекает, что 1 (mod тп). Это, в свою очередь, влечет ±1 (mod m), откуда следует, что и не может удовлетворять сравнению (9.15). Мы заключаем, что элемент и лежит в Z^,, но не в G. Случай 2: тп — произведение s различных простых чисел, скажем, тп = ррр2 ...ps, где s > 2. Пусть a — квадратичный невычет по модулю pi. В силу китайской теоремы об остатках существует целое число и, единственное по модулю тп, удовлетворяющее системе сравнений и = a (mod pi), и = 1 (mod pi), 2 < i < s. (9.20) (9-21) Очевидно, нод(щрг) = 1,1 < i < s, так что и E Чтобы убедиться в том, что и G, нужно показать, что для этого и соотношение (9.15) не выполняется. Из сравнений и = 1 (mod pi), 2 < i < s, следует, что для этих индексов = 1- Но = (pi") = ~1’ так как a — квадратичный невычет. Из определени символа Якоби (определение А. 11) вытекает, что (и/тп) = —1. Это, в частности, влечет, что (~) = —1 (mod pi), когда 2 < i < s. С другой стороны, (9.21) показывает, что г/771-1)/2 = 1 (mod pi), 2 < < i < s. Следовательно, — u{m 1)/2 (mod ТП/ для всех i, 2 < i < s, и тем более не выполняется сравнение (9.15). Теперь можно описать алгоритм Соловэя-Штрассена. Алгоритм 9.6 (тест простоты Соловэя-Штрассена) input нечетное целое число тп (кандидат), параметр безопасности к-, initialize prime = True, j = 1;
9.4. Генерация простых чисел; тесты простоты 185 while prime and i < к do begin select случайное целое u; if нод(и,т) 7^ 1 or (^) u^m-1)/2 (mod m) then prime = False; г = i + 1; end output prime. В этом алгоритме к — произвольное натуральное число. В силу тео- ремы 9.5 вероятность того, что к независимо и случайно выбранных эле- ментов и проходят тест, заданный алг. 9.6, когда тп — составное, не пре- восходит 2_fc. При достаточно большом к вероятность того, что составное число “выдерживает” приведенный алгоритм, может быть сделана сколь угодно малой. См., однако, в следующем пункте алгоритм Миллера-Рабина, где ве- роятность того, что составность числа не обнаруживается после к тести- рований, равна 4_fc. Пример 9.13 Чтобы проверить, является ли нечетное число т = 1234563 про- стым, можно использовать функции GCD, JacobiSymbol, PowerMod и Mod из пакета “Mathematica”: ш = 1234563; и = 1212121; GCD[u, m] == 1 Mod[JacobiSymbol[и, m] - PowerMod[и, (m - l)/2, m] , m] == 0 II True II False Предлагаем читателю проверить на простоту число т = 104729. □ Тест Миллера—Рабина Тест Миллера-Рабина [МП176], [Rabi80a] основан на том факте (см. теорему В.15), что при простом р уравнение х2 = 1 (mod р) имеет лишь два решения: х = ±1 (mod р). Итак, пусть т — нечетное целое число, которое мы хотим тестировать на простоту. Допустив на миг, что т — действительно простое, по тео- реме Ферма (теорема А.15) получим, что любое целое а с нод(а, m) ~ 1 удовлетворяет сравнению агп~1 = 1 (mod тп). Так как т — 1 четно, получаем <z(m-1)/2 = ±1 (mod m). Если оказы- вается, что о,(т-1)/2 сравнимо с +1 и (т—1)/2 четно, то можно повторить рассуждение, заключив в этом случае, что дС771”1)/4 = ±1 (mod т) и т.д. На этом пути можно доказать следующую лемму.
186 Глава 9. Системы, основанные на методе RSA Лемма 9.7 Взяв простое р, запишем р — 1 = a • 2-^, где а нечетно. Пусть и — целое число между 1 и р — 1. Тогда либо ua = 1 (mod р), либо ua'2* = —1 (mod р) для некоторого г, О < i < f. Чтобы проверить на простоту нечетное целое число тп, поступим следующим образом. Сначала запишем тп — 1 = а 2?, где а нечет- но. Далее выберем случайное целое число и, 2 < и < тп, и вычислим иа, иа2,..., ua2f. Как только одно из этих чисел не попадает в { — 1,1}, хотя следующее равно +1, или же ua'2f 1 (mod m), мы заключаем, что тп — составное и можно остановиться. Повторяем этот тест к раз, где к — параметр безопасности, который мы вскоре обсудим. Пусть тп — целое число, а и таково, что иа'23 = 1 (mod тп), тогда как иа'23 ±1 (mod тп). Тогда и называется сильным свидетелем составности тп. Оно доказывает, что тп — составное. С другой стороны, пусть тп — составное, а и — целое число, удовлетворяющее сравнению иа = 1 (mod тп) или сравнению иа23 = — 1 (mod тп) для некоторого j, О < j < f‘i тогда и называется сильным лгуном (относительно просто- ты) числа тп7. Для эффективности теста простоты желательно, чтобы составные числа имели как можно меньше сильных лгунов. Алгоритм 9.8 (тест простоты Миллера-Рабина) input нечетное целое число т (кандидат), параметр безопасности к', initialize prime = True, г = 1; write т — 1 = а 2-^, где а нечетно; while prime and i < к do begin select случайное целое и, 1 < и < тп — 1; compute x = ua mod m; if x ±1 (mod m) then begin put j = 1; while x ±1 (mod m) and j < f — 1 do begin x <— x2 mod m; if x = 1 (mod m) then prime = False; j j + i end i = i + 1 end output prime. 7В последнем случае число т называют сильным (или сильно) псевдопростым по основанию и.— Прим. ред.
9.4. Генерация простых чисел; тесты простоты 187 Пример 9.14 Пусть тп = 7933. Тогда т — 1 — 1983 • 22. Выбираем случайное и и вычисляем и1983’2* при г = 0,1, 2. Для записи т — 1 в виде а • 2? исполь- зуются функции While и EvenQ из пакета “Mathematica”, а для тести- рования — функции Random, PowereMod, Print, Mod и Do. m = 7933; f = 0; a = m-1; While[EvenQ[a], f = f+1, a=a/2]; {a, f} u = Random [Integer, {1, m - 2J-] x = PowerMod[u, a, m]; Do [{Print [x], x = Mod[x2, m]}, {i, 0, f}] II {1983, 2} I! 4225 7932 1 1 Видно, что как бы часто мы ни пробегали алгоритм, мы всегда по- лучим (+1, +1, +1), или (—1, -4-1, -4-1), или (*,—1,4-1). Пример 9.15 Пусть т = 429. Как мы увидим ниже, выбор и = 34 дает сильного свидетеля составности т. m = 429; f = 0; а = m - 1; While [EvenQ [a] , f = f + 1, a = a / 2] ; {a, fi- ll = 34; x = PowerMod[u, a, m]; Do [{Print[x], x = Mod[x2, m]}, {i, 0, f}] II {Ю7, 2} 265 298 1 Что остается сделать, так это дать оценку доли сильных лгунов по модулю составного числа. Следующая теорема утверждает, что эта до- ля составляет самое большее (1/4). Это означает, что вероятность то- го, что составность числа не будет обнаружена после к проходов теста Миллера-Рабина, не превосходит (l/4)fc. Это гораздо лучше аналогичной вероятности для теста простоты Соловэя-Штрассена, которая ограниче- на сверху лишь числом (l/2)fc.
188 Глава 9. Системы, основанные на методе RSA Теорема 9.9 Пусть тп — составное число, m 9. Тогда число сильных лгу- нов, лежащих между 1 и т-1, не превосходит <р(т)/4, где 99 — функция Эйлера. Иными словами, вероятность того, что по- сле к проходов алг. 9.8 не обнаруживает составность составного числа тп, не превосходит 4~fc. Доказательство теоремы 9.9 (см. [Moni80] или [Rabi80a]) очень тех- нично и не добавляет понимания читателю этого введения8. Если тп = 9, то <р(т)/4 равно 6/4, что меньше 2. Однако имеются именно 2 сильных лгуна: +1 и —1. 9.4.3 Детерминированный тест простоты Тесты простоты, которые детерминированным способом доказывают простоту данного числа, конечно, много медленнее, чем вероятностные алгоритмы типа тех, что обсуждались в предыдущем подразделе. Здесь мы объясним идею, лежащую в основе детерминированного те- ста простоты Коэна и Ленстры мл. [CohL82]. Этот тест является улуч- шением теста из [AdPR83]. Мы не даем полного описания теста. Это потребовало бы слишком много продвинутой и глубокой теории чисел9. Мы близко следуем блестящей вводной статье Ленстры [LensH83]. Начнем с напоминания теоремы Ферма (теорема А. 15). Теорема 9.10 (Ферма) Пусть тп — простое число, а — произвольное целое число. Тогда ат = a (mod тп). (9.22) Пусть тп — натуральное число и мы хотим проверить его на про- стоту. Всего лишь одно целое а, не удовлетворяющее сравнению (9.22), опровергает простоту т. К сожалению, обратное не верно. Например, число тп = 561 удовле- творяет соотношению (9.22), хотя т = 3 х 11 х 17. Чтобы увидеть это, вычислим сначала нок[</?(3), </?(11), </?(17)] А=7 нок[2,10,16] = 80. Пусть а взаимно просто с 561. Из теоремы Эйлера (теорема А. 14) следует, что а80 сравнимо с единицей по модулю каждого из трех простых делителей числа 561. Теперь китайская теорема об остатках (теорема А. 19) влечет, что а80 = 1 (mod 561). Следовательно, а561 = а • (а80)7 = a (mod 561). Для значений а, имеющих общий делитель с числом 561, сравнение (9.22) доказывается аналогичным образом. 8Тем не менее, мы рекомендуем читателю ознакомиться с подробным доказатель- ством на русском языке, которое можно найти в *[НодК99], разд. 6.2.— Прим. ред. 9Конкретнее, требуется хорошее знание свойств колец р-адических чисел и полей деления круга.— Прим. ред.
9.4. Генерация простых чисел; тесты простоты 189 Читатель может проверить вышесказанное с помощью функций Factorinteger и PowerMod из пакета “Mathematica”: m = 561; Factorinteger[m] a = 543; PowerMod[a, m, m] == a || «3, 1}, {11, 1}, {17, Ш II True Составные числа m, обладающие тем свойством, что am~1 = 1 (mod m) для всех а с нод(а,ш) = 1, называются числами Кармайкла. Однако для несколько более сильного утверждения, чем теорема 9.10, обратное выполняется. В последующем (^) обозначает, как обычно, сим- вол Якоби. Теорема 9.11 Нечетное число тп просто тогда и только тогда, когда для всех целых чисел а нод(а, m) = 1 ==> aSm = (—Л (mod тп). Хтп/ Доказательство. То, что указанное соотношение выполняется для простых чисел, было уже отмечено в соотношении (9.15). Обратное было первоначально доказано Лемером [Lehm76], но оно также прямо следует из теоремы 9.5. Последняя теорема, конечно, не является эффективным критерием простоты для чисел длины более 100 цифр. Ленстра предложил следу- ющую “заманчивую” альтернативу. Теорема 9.12 Нечетное число тп просто тогда и только тогда, когда любой делитель d числа тп является степенью тп. Доказательство. Это утверждение вполне тривиально, так как d = = 1 = m° и d = тп = тп1, и это — единственные (натуральные) делители простого числа тп. Все другие числа между 1 и тп не могут быть записаны как степени тп. Ясно, что это не та теорема, которую мы хотели бы использовать в качестве критерия простоты, но одна из ее вариаций оказывается очень полезной. Мы покажем, что при некоторых условиях любой делитель числа m немного походит на степень тп.
190 Глава 9. Системы, основанные на методе RSA Теорема 9.13 Пусть целое число тп взаимно просто с 6. Далее, допустим, что (—= г/”1-1)/2 (mod тп) для и = —1,2,3; (9.23) \тп/ a(m-i)/2 = _| (mod тп) для некоторого целого а. (9.24) Тогда для каждого d, делящего тп, d = тп3 (mod 24) для некоторого неотрицательного j. (9.25) Фактически соотношение (9.25) можно усилить до сравнения d = m3 (mod 24) для j = 0 или j = 1. (9.26). Условие (9.24) в этой теореме не может быть опущено. В самом деле, число тп = 1729 = 7 х 13 х 19 удовлетворяет (9.23), но не удовлетворяет (9.25). Заметим, что тп = 1 (mod 24); поэтому никакая степень m не может быть равна какому-либо простому делителю числа тп. Все эти утверждения можно проверить с помощью функций Factor- Integer, JacobiSymbol, PowerMod и Mod пакета “Mathematica”: m = 1729; Factorinteger[m] Mod[m, 24] Mod [JacobiSymbol[-1,m] - PowerMod[-l,(m-l)/2,m],m] == 0 Mod[JacobiSymbol[2, m] - PowerMod[2,(m-l)/2,m],m] == 0 Mod[JacobiSymbol[3, m] - PowerMod[3,(m-1)/2,m],m] == 0 II «7, I}, <13, 1J-, <19, ID- II 1 II True II True II True Прежде, чем доказывать теорему 9.13, проиллюстрируем, как ее мож- но использовать для тестирования на простоту целых чисел тп, 24 < m < < 242. После доказательства мы обсудим обобщения теоремы 9.13, кото- рые дают эффективные тесты простоты для ббльших значений тп. Алгоритм 9.14 (тест простоты Коэна-Ленстры) input тп, 24 < тп < 242; initialize prime = True;
9.4. Генерация простых чисел; тесты простоты 191 test 1: if нод(т, 6) 7^ 1 then prime = False; test 2: if (^) ^(т“1)/2 (mod m) для u = —1,2,3 then prime = False; test 3: найти такое целое a, что a(m-1)/2 = — 1 (mod m); if такого a не существует then prime = False; test 4: вычислить d = m mod 24; if d > 1 and d\m then prime = False; output prime. Доказательство. Первым делом обратимся к тесту 3. Если m про- сто, то вероятность того, что случайное а, 1 < а < т, удовлетворяет условию (9.24), равна 1/2 в силу теорем А.23 и А.20. Таким образом, можно ожидать, что в среднем нужны две попытки для нахождения це- лого числа а, удовлетворяющего соотношению (9.24). Если такое целое а не существует, то тп не просто. Об этом шаге можно сказать больше. Предполагая истинной расши- ренную гипотезу Римана, можно даже доказать, что если тп просто, то сравнение (9.24) имеет такое решение а, что 1 < а < 2(logm)2. (См. также [Рега86].) Если тп проходит первые три теста, то, согласно теореме 9.13, каж- дый делитель d числа тп должен быть сравним с 1 или с тп по модулю 24. Так как тп < 242, можно предположить, что d < 24 (в противном случае вместо d рассмотрим тп/d). Отсюда следует, что фактически d равно 1 или m mod 24. Возможность равенства d = m mod 24 при d > 1 исклю- чается тестом 4. Отсюда следует, что делитель d должен быть равен 1. Мы заключаем, что тп просто. Для доказательства теоремы 9.13 нам нужны следующие две леммы. Первая дает необходимое и достаточное условие для того, чтобы два целых числа mi и mg, взаимно простых с 6, были сравнимы по модулю 24. Лемма 9.15 Пусть mi и ТП2 — натуральные числа, взаимно простые с 6. Тогда ТП\ = ТП2 (mod 24) <==> для и = — 1, 2, 3. Доказательство. Существуют восемь чисел m, 1 < тп < 24, взаимно простых с 24, а именно, 1, 5, 7, 11, 13, 17, 19 и 23. Для каждого из этих m мы вычисляем значения (^) при и = —1,2,3 с помощью следствия А.24, теоремы А.25 и теоремы А.27, или же в пакете “Mathematica” с помощью функции JacobiSymbol, которую можно применить сразу ко всему списку чисел.
192 Глава 9. Системы, основанные на методе RSA m = {1, 5, 7, 11, 13, 17, 19, 23}; JacobiSymbol[-1, m] JacobiSymbol[2, m] JacobiSymbol[3, m] || {1, 1, -1, -1, 1, 1, -1, -1} || {1, -1, 1, -1, -1, 1, -1, 1} || {1, -1, -1, 1, 1, -1, -1, 1} Легко проверить, что матрица с этими тремя векторами-строками об- ладает тем свойством, что все ее столбцы различны. Это показывает, что три значения ,и = —1,2,3, однозначно определяют тп в множестве {1,5,7,11,13,17,19,23}. Например, глядя на второй столбец, мы видим, что тп = 5 однознач- но определяется в {1,5,7,11,13,17,19,23} тремя значениями (—) = 1, © = -1и(Э = -1- Лемма 9.16 Пусть тп — произвольное целое число. Тогда нод(т, 6) = 1 ==> тп2 = 1 (mod 24). Доказательство. Так как тп не делится на 3, получаем m2 = 1 (mod 3). Аналогично, из нечетности тп следует, что тп2 = 1 (mod 8). Чтобы увидеть это, запишем т = 2n + 1. Тогда тп2 = (2n + I)2 = = 4п(п + 1) + 1. Поскольку 3 и 8 взаимно просты, наше утверждение следует из ки- тайской теоремы об остатках. Конечно, последнюю лемму можно проверить с помощью функции Mod из пакета “Mathematica” следующим образом: m = {1, 5, 7, 11, 13, 17, 19, 23}; Mod[m2, 24] || {1, 1, 1, 1, 1, 1, 1, 1} Теперь мы готовы доказать теорему 9.13. Доказательство теоремы 9.13. То, что показатель j в (9.25) мо- жет быть приведен по модулю 2, прямо следует из условия нод(т,6) = = 1 и леммы 9.16. Это показывает, что сравнение (9.25) можно заменить на (9.26). Далее, заметим, что (9.25) достаточно доказать только для простых делителей d числа тп. Запишем тп — 1 = / • 2fc nd— 1 = g • 2€, где f и g нечетны и к, £ > 0.
9.4. Генерация простых чисел; тесты простоты 193 Докажем сначала, что £ > к, а затем используем лемму 9.15, чтобы показать, что либо d — mP mod 24, либо d = m1 mod 24. Возведем обе части сравнения (9.24) в степень д и приведем результат по модулю d. Так как d\m и д нечетно, получим af-я-^-1 = (_!)« = _j (mod Поскольку мы предполагаем, что d просто и а не имеет общих делителей с d или с т, из теоремы Ферма (теорема А. 15) следует, что af-g-2e = af(d-i) = ]_/ — ]_ (mod d). Из двух последних сравнений вытекает, что к — 1 < £. Рассмотрим теперь u Е {—1,2,3}. Так как д нечетно и d\m, имеем fa2k~1 a(m—l}/2 (^-23) / и \ 9 f и\ / л uJ 9 Л = u9{m l)/z = (-----) = ( — ) (mod d). \mJ \m/ С другой стороны (снова ввиду простоты d), = u/(d-l)/2 О!”» /«V = ЛА (mod rf) \pj \pj Из двух последних сравнений вытекает, что для i = —1, 2, 3 Заметим, что мы заменили отношение сравнения равенством. Это можно сделать, потому что обе части принимают значения ±1. Если £ = /с, то равенство (9.15) и лемма 9.15 влекут за собой, что d = m = m1 (mod 24). С другой стороны, если £ > к, то правая часть в (9.27) равна 1, что также есть (и/Г). Поэтому лемма 9.15 дает d = 1 = mP (mod 24). В применении теоремы 9.13 решающим является тот факт, что усло- вие (9.25) можно заменить на (9.26). Ввиду этого в четырех шагах алг. 9.14 только одно условие нуждается в проверке. Основанием для замены (9.25) на (9.26) служит то (см. лемму 9.16), что НОД(т, 24) = 1 ===> ш2 = 1 (mod 24). Теорема 9.13 проверяет простоту только таких чисел ш, что 24 < < m < 242. Для больших значений ш необходимы обобщения теоремы 9.13. Как можно ожидать, в этих обобщениях показатель в лемме 9.16
194 Глава 9. Системы, основанные на методе RSA должен возрастать. Примером такого обобщения может служить импли- кация нод(т, 65520) = 1 => т12 = 1 (mod 65520). Для проверки на простоту 100-значного числа тп используется им- пликация нод(т, s) = 1 ==> m5040 = 1 (mod s), где s — 53-значное число 26 х З3 х 52 х 72 х 11 х 13 х 17 х 19 х 31 х 37 х 41 х 43 х 61 х 71 х 73х Х113 х 127 х 181 х 211 х 241 х 281 х 337 х 421 х 631 х 1009 х 2521. Заметим, что у/тп < s, если тп имеет не более 100 цифр. Приведем грубый набросок теста простоты для 100-значного числа10. Алгоритм 9.17 (набросок теста простоты Коэна-Ленстры) input натуральное т < 1О100; initialize prime = True; test 1: if нод(т, s) 1 then prime = False; test 2: if m не удовлетворяет одному из 67 сравнений, подобных (9.23) then prime = False; test 3: вычислить d = тпг mod s для i = 1, 2,... , 5039; if одно из этих d делит m, then prime = False; output prime. Если m — составное, то приведенный выше алгоритм иногда даст делитель числа тп. Но вероятность такого события очень мала: в боль- шинстве случаев составного тп алгоритм будет заканчиваться на шаге 2, не “выдавая” делителей тп. Этот алгоритм можно адаптировать для те- стирования на простоту и ббльших целых чисел. Ожидаемым временем пробега служит ™\cln In In m где с — некоторая константа11. 10Это слишком грубый набросок. Наверное, читателю лучше обратиться к русскому переводу первоисточника [CohL82].— Прим. ред. ПВ августе 2002 г. в Internet появился препринт *[AgKS02] трех индийских мате- матиков, где излагается элегантный детерминированный тест простоты с ожидаемым временем работы O((lnm)12F(lnlnm)), где F — некоторый многочлен. При этом ве- рится, что показатель 12 может быть уменьшен до 6. Изложение этого теста на рус- ском языке есть в книгах *[ЧерО2] и *[ВасОЗ]).— Прим. ред.
9.5. Вариант Рабина 195 9.5 Вариант Рабина В подразд. 9.2.1 было упомянуто, что неизвестен никакой общий ме- тод взлома RSA, кроме факторизации п. В [Rabi79] Рабин предложил вариант системы RSA, для которого можно доказать, что его крипто- анализ эквивалентен факторизации модуля п. 9.5.1 Функция шифрования В системе RSA каждый пользователь U должен выбрать публичный показатель еи с нод(ец, <р(п{/)) = 1 (см. 9.1.2). В схеме Рабина все поль- зователи U имеют один и тот же показатель еи = 2. (9.28) Напомним читателю обсуждение в подразд. 9.3.1. Так как НОД (2, <р(п{/)) = 2, и поскольку числа ри — 1 и qu — 1 четны, шифрование более не является взаимно однозначным отображением. В самом деле, если с = тп2 (mod п), где нод(с, пи) = 1 и пи = Ри<1и-> то сравнение х2 = с (mod ри) имеет два решения, а именно ±m mod ри и, аналогично, сравнение х2 = с (mod qu) имеет два решения ±m mod qu- По китайской теореме об остатках (теорема А. 19) сравнение х2 = с (mod пи) (9.29) имеет четыре решения по модулю пи- Что происходит, когда НОД (с, пи) 1 — легкое упражнение для читателя (см. задачу 9.12). Пример 9.16 (часть 1) Рассмотрим шифрование сообщения тп = 12345678 по модулю п = = 9733 х 10177 = 99052741 (мы используем функции Prime и PowerMod из пакета “Mathematica”). рВ = Prime[1200]; qB = Prime[1250]; nB = рВ * qB m = 12345678; PowerMod [m, 2, nB] II 99052741 II 43962531 Чтобы найти четыре сообщения, которые отображаются в один и тот же шифртекст, нужно с помощью китайской теоремы об остат- ках скомбинировать четыре системы линейных сравнений х = ±т (mod р) и х = ±m (mod q). В “Mathematica” необходимо загрузить пакет NumberTheory‘NumberTheoryFunction‘, чтобы воспользоваться функцией ChinesRemainderTheorem.
196 Глава 9. Системы, основанные на методе RSA << NumberTheory<NumberTheoryFunctions< ml = ChinesRemainderTheoremE £12345678, 12345678}, <9733, 10177}] m2 = ChinesRemainderTheoremE {-12345678, 12345678}, {9733, 10177}] m3 = ChinesRemainderTheoremE {12345678, -12345678}, {9733, 10177}] m4 = ChinesRemainderTheoremE {-12345678, -12345678}, {9733, 10177}] II 12345678 II 48738630 II 50314111 II 86707063 Для проверки вычисляем PowerMod Eml, 2, nB] PowerMod Em2, 2, nB] PowerMod Em3, 2, nB] PowerMod Em4, 2, nB] II 43962531 и еще три точно таких же ответа. Заметим, что пространство-образ функции шифрования не совпада- ет со всем множеством {0,1,... ,пу}. Вследствие этого вариант Рабина нельзя непосредственно использовать в схеме подписи (см. связанный с ним протокол Фиата-Шамира в гл. 14). 9.5.2 Дешифрование □ Предвычисление Как дешифровать сообщение с = m2 (mod п) в варианте Рабина си- стемы RSA? Раньше в данном разделе объяснялось, что мы делаем это с помощью китайской теоремы об остатках. В предвычислении опреде- ляются целые числа а и 6, удовлетворяющие сравнениям а=1 (mod ри) и а = 0 (mod qu), (9.30) 6 = 0 (mod ри) и 6=1 (mod qjj). (9.31) Решения а и 6 могут быть легко найдены следующим образом. Например, чтобы найти а, из второго сравнения получаем а = I • qy и подставляем в
9.5. Вариант Рабина 197 первое сравнение. Это приводит к сравнению I • qu = 1 (mod ри), кото- рое можно решить с помощью расширенной версии алгоритма Эвклида (алг. А.8). См. также пример А.З. Такие системы сравнений можно непосредственно решать с помощью функции ChinesRemainderTheorem из пакета “Mathematica”, для чего сначала нужно загрузить пакет NumberTheory‘NumberTheoryFunctions1. Пример 9.16 (часть 2) Продолжая работу с параметрами шить системы сравнений примера 9.16, мы должны ре- а = 1 (mod 9733) и а = 0 (mod 10177), 6 = 0 (mod 9733) и b = 1 (mod 10177). < < NumberTheory‘NumberTheoryFunctions4 а = ChinesRemainderTheorem[{l, 0}, {9733, 10177}] b = ChinesRemainderTheorem[{0, 1}, {9733, 10177}] II 45287650 II 53765092 Таким образом, а = 45287650, b = 53765092. □ Нахождение квадратных корней по модулю простого числа Нужно решить сравнение х2 = с (mod ри) (и, аналогично, х2 = с (mod qu))- Если с = 0, то решение очевидно. Поэтому допустим, что с^О (mod ри). Начиная с этого момента, мы упрощаем обозначения, опуская индекс U. Оказывается, непосредственная техника вычисления х не всегда воз- можна. Мы рассмотрим три случая. Случай 1: р = 3 (mod 4). Если с — квадрат некоторого элемента тп из (такое с называет- ся квадратичным вычетом по модулю р; см. разд. А.4), то два решения сравнения х2 = с (mod р) даются выражением ±с^р+1^/4. Действитель- но, возводя это выражение в квадрат, по теореме Ферма получим ^±с(р+1)/4^ = с(р+1)/2 = с, с(р-1)/2 = с . тР-1 А=5 с (mod р). Пример 9.17 Рассмотрим простое число р = 3571, которое сравнимо с 3 по моду- лю 4. Число с = 2868 является кадратичным вычетом по модулю р, что можно проверить с помощью символа Лежандра. Для проверки всех
198 Глава 9. Системы, основанные на методе RSA этих утверждений используем функции Prime, Mod и JacobiSymbol из пакета “Mathematica”. р = Prime[500] Mod[p, 4] == 3 с = 2868; JacobiSymbol[с, р] == 1 II 3571 II True II True Решение сравнения х2 = 2868 (mod р) дается формулами т = = ±2868(р+1)/4 = ±3234 (mod 3571). Чтобы убедиться в этом, исполь- зуем функцию PowerMod. m = PowerMod[с, (р + 1) / 4, р] PowerMod[{m, -m}, 2, р] II 3234 || {2868}, {2868} Случай 2: р = 5 (mod 8). С помощью немного уточненного метода, использованного выше, можно показать, что в данном случае решение сравнения х2 = с (mod р) дается формулой ±с(р+3)/8, если с^р~1^/4 = 1 (mod р), и формулой ±2с- •(4с)(р~5)/8, если с(р-1)/4 = —1 (mod р). См. задачу 9.14, адресованную именно этому случаю. Пример 9.18 Рассмотрим простое число р = 3581, которое сравнимо с Б по моду- лю 8. Число с = 2177 — квадратичный вычет по модулю р, что можно проверить с помощью символа Лежандра, являющегося частным слу- чаем символа Якоби. р = Prime[501] Mod[р, 8] == 5 с = 2177; JacobiSymbol[с, р] II 3581 II True II True
9.5. Вариант Рабина 199 Решение сравнения ж2 = 2177 (mod р) дается формулой тп = = ±2177(р+3)/8 = ±3100 (mod 3581), поскольку Др-1^/4 = 1 (mod р) (в противном случае ответом должно быть ±2с(4с)^р_’5^8). If[PowerMod[с, (р - 1) / 4, р] == 1, m = PowerMod[с, (р + 3) /8, р], m = Mod[2 с * PowerMod[4 с, (р - 5) / 8, р], р]] PowerMod[{m, -ш}, 2, р] II 3100 || {2177, 2177} ' Случай 3: р = 1 (mod 8). Быстрого алгоритма для решения требуемого сравнения не существу- ет. Мы следуем [Rabi79]. В разд. А.4 вводятся множество QR квадратич- ных вычетов по модулю р и множество NQR квадратичных невычетов по модулю р. Пусть г и з обозначают два решения ±ш сравнения ж2 = с (mod р). Тогда г ± и и s ± и — два решения сравнения (ж — и)2 — с = 0 (mod р). Другими словами, (ж — и)2 — с = (ж — (г ± и))(ж — (з ± и)) (9.32) над конечным полем Zp (= GF(p)). Так как г s (mod р), это влечет, что элемент (г + и)/(з ± и) никогда не принимает значения 1. Поскольку отображение и (г ±iz)/(s±'{z) взаимно однозначно для и Е Zp, и —з, мы заключаем, что {(г ± u)/(s ± и)\и Е%р\ {-з}} = Zp \ {1}. (9.33) Читатель может пожелать проверить это с помощью функций Table, Mod, PowerMod. и Union из пакета “Mathematica”. р = 19; s = 9; г = р - s; si = Table[Mod[(г + u) * PowerMod[(s + u), -1, p], p], {u, О, Г - 1}] s2 = Table[Mod[(r + u) * PowerMod[(s + u), -1, p], p], {u, r + 1, p - 1}] s = Union[si, s2] || {18, 3, 8, 9, 4, 16, 15, 7, 10, 0} || {2, 11, 14, 6, 5, 17, 12, 13} {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}
200 Глава 9. Системы, основанные на методе RSA Из равенства (9.33) и теоремы А.20 следует, что для половины допу- стимых значений и элемент (г + и)/(з + и) будет лежать в QRU{0}, а для другой половины он будет лежать в NQR. В первом случае либо и = — г, либо (по теореме А.21) как г + и, так и s + и будут элементами QR или оба будут лежать в NQR. Во втором случае ровно одно из чисел будет лежать в QR, тогда как другое — в NQR. Свойство квадратичных вычетов по модулю простого числа, которое потребуется нам позже, дается формулой (А. 16): жСр”1)/2 — 1 = ТТ (ж — w). Пример 9.19 Рассмотрим в качестве примера квадратичные вычеты по модулю 11. Введем новую функцию: ListQuadR.es [р_] : = Select[Range[р], JacobiSymbol [#1, р] == 1 &] Р = И; ListQuadRes[р] || -£1, 3, 4, 5, 9} Таким образом, числа 1,3, 4, 5, 9 суть QR по модулю 11. Применим теперь функцию PolynomialMod из пакета “Mathematica”: PolynomialMod [(х - 1) * (х - 3) * (х - 4) * (х - 5) * (х - 9) , 11] II 10 + х5 Это действительно равно х5 — 1 по модулю 11. Из проведенного выше обсуждения, в частности, из равенств (9.33) и (А.16) следует, что для случайно выбранного и Е \ {—з} нод((ж — и)2 — с, х(х^р~1^2 — 1)) mod р (9.34) будет равен х — и — г, если и + г Е QR U {0} и и + s Е NQR, х — и — s, если и + г Е NQR и и + s Е Q2?U{0}, 1, если и + г Е NQR и и + s Е NQR (ж — и)2 —• с, если и + г Е QR U {0} и и + s Е QRU {0}. Приведенные выше доводы влекут за собой, что одна из первых двух возможностей будет встречаться с вероятностью = 1/2. Поэто- му с вероятностью 1/2 мы имеем нетривиальный делитель многочлена (х — и)2 —- с. Так как и известно, можно также найти значение г или з.
9.5. Вариант Рабина 201 Заметим, что в крайне неправдоподобном оставшемся случае, а имен- но, it = —s, выражение (ж — и)2 — с сводится к ж2 + 2 s • х. Тогда НОД в (9.34) будет содержать делитель ж, а другой делитель даст решение s. Позже мы дадим пример на рассмотренный метод. Ожидаемое число тех и, которые должны испытываться в приведен- ном алгоритме до нахождения решения сравнения ж2 = с (mod р), об- ратно к 1/2, т.е. равно 2. Обсуждение других методов вычисления квад- ратных корней по модулю простого числа заинтересованный читатель может найти в [Рега86]12. □ Четыре решения Финальный шаг в алгоритме дешифрования — это, конечно, приме- нение китайской теоремы об остатках для комбинирования каждого из двух решений сравнения ж2 = с (mod р) с каждым из двух решений сравнения ж2 = с (mod g). Пример 9.16 (часть 3) Мы придерживаемся параметров примера 9.16. Таким образом, р = = 9733, q = 10177, n — р х q — 99052741, а решения систем а = 1 (mod 9733) и а = 0 (mod 10177), 6=0 (mod 9733) и b = 1 (mod 10177). суть а = 45287650 и b = 53765092. р = 9733; q = 10177; n = р * q; а = 45287650; b = 53765092; Mod[p, 8] Mod[q, 8] II 5 II 1 Пусть с = 9513124 — шифртекст. Так как р = 5 (mod 8) и q = 1 (mod 8), мы следуем случаю 2 нахождения квадратных корней из с по модулю р и случаю 3 нахождения квадратных корней по модулю q. \/9513124 по модулю р, случай 2 Вычисляем с^р_ 1^/4 mod р с помощью функции PowerMod из пакета “Mathematical с = 9513124; u = PowerMod[с, (р - 1) / 4, р] II 1 12На русском языке в *[НодК99] можно найти изложение алгоритма Цассенхауза- Кантора и алгоритма Шэнкса.— Прим. ред.
202 Глава 9. Системы, основанные на методе RSA и получаем 1. Поэтому квадратный корень из с по модулю р равен ±с(р+з1/8; f = PowerMod[с, (р + 3) / 8, р] II 868 \/9513124 по модулю д, случай 3 Мы хотим найти корни двучлена х2— 9513124 по модулю q. Возьмем случайное и из Zq и вычислим нод((ж — и)2 — 9413124, x(x^Q~1^2 — 1)) в надежде найти линейный делитель. При этом используется функция PolynomialGCD из пакета “Mathematica”: и = 11; х = .; PolynomialGCDЕ(х - и)2 - с, х * (х^9-1)/2 - 1, Modulus -> q] II 2492 + 10155 х + х2 Еще одна попытка: и = 111; х = .; PolynomialGCDЕ(х - и)2 - с, х*(х^9-1)/2-!,Modulus -> q] II 1438 + х Отсюда следует, что один из квадратных корней дается формулой х — 111 — g = х + 1438 (mod q), где g = ModE-Hl - 1438, q] II 8628 По китайской теореме об остатках (теорема А. 19) получаем четы- ре квадратных корня из сравнения х2 = 9513124 (mod 99052741): ModEa * f + b * g, n] ModEa * f - b * g, n] ModE-a * f + b * g, n] ModE-a * f - b * g, n] II 6969696 II 63567091 II 35485650 II 92083045
9.5. Вариант Рабина 203 9.5.3 Как различать решения Пусть / — одно из двух решений сравнения х2 = с (mod ри), а д — одно из двух решений сравнения х2 = с (mod qu)- Дрлее, пусть а и b — решения системы линейных сравнений (9.30) и (9.31). Тогда по китайской теореме об остатках (теорема А. 19) четыре решения сравнения (9.29) даются формулой ±/ • а ± д • b (mod пи). Отправителю и получателю следует различать эти четыре решения, что- бы они могли согласовать одно из них. В некоторых случаях это сделать легко. В самом деле, если оба числа ри и qu сравнимы с 3 по модулю 4, то по следствию А.24 число —1 является квадратичным невычетом (NQR) по обоим модулям ри и qu- Следовательно, в точности одно из чисел / или —f явлется QR, и то же самое верно для д и — д. Заменяя / на —/ и/или д на — д, если нужно, мы без ограничения общности получаем, что +/ • a + д • b есть QR +/ • a — д • b есть QR —/ • a + д • b есть QR —/ • a — д b есть QR mod ри, +/ • а + д -Ь mod ри, +f-a — g-b mod ри, -f-a + g-b mod ри, —f • a — д - b есть QR mod qu, есть QR mod qu, есть QR mod qu, есть QR mod qu- В силу определения A.ll и второго утверждения теоремы А.26 о сим- волах Якоби мы имеем ((/ • a + д • Ь)/пи) = ((—/ • « — д • Ь)/пц) — 1, тогда как ((/ • a — д • Ь)/пи) = ((—/ • a + д • Ь)/пи) = —1- Из двух ре- шений с символом Якоби +1 одно будет лежать между 1 и (пи — 1)/2, другое — между (пи + 1)/2 и пи — 1 (или же оба равны 0). Заклю- чаем, что существует единственное решение т, такое, что 0 < тп < < (пи — 1)/2 и (тп/пц) ~ 1- Таким образом, отправитель и получатель могут согласованно использовать сообщения только этой формы. Пример 9.20 (часть 1) Пусть пв = 77, а с = 53 — полученное сообщение. Применяя процесс дешифрования, описанный в предыдущем подразделе, получаем f = 2, g =8, а = 22 и b = 56. С помощью функций Mod и JacobiSymbol из пакета “Mathematica” получаем следующие четыре возможных сообщения и соответствую- щие им значения символов Якоби. пВ = 77; f = 2; g = 8; а = 22; b = 56; ml = Mod[а * f + b * g, nB] ; m2 = Mod[a * f - b * g, nB] ; m3 = Mod[-a * f + b * g, nB]; m4 = Mod [-a * f - b * g, nB] ;
204 Глава 9. Системы, основанные на методе RSA Print[ml, Print[m2, Print[m3, Print[m4, " ", JacobiSymbol[ml, nB]] " ", JacobiSymbol[m2, nB]] " ", JacobiSymbol[m3, nB]] " ", JacobiSymbol[m4, nB]] II 30 -1 II 58 1 II 19 1 II 47 -1 Мы видим, что m = 19 - единственное решение, такое, что (тп/77) = 1 и 0 < т < 38, поэтому тп = 19 и было отправленным сообщением. Если ри (или qu) сравнимо с 1 по модулю 4, все еще можно со- гласованно использовать только такие сообщения тп, что 0 < т < < (пи — 1)/2. Для получения равенства (гп/пи) = 1 отправитель и по- лучатель могут ограничиться более короткими сообщениями, скажем, короче 20 цифр, дополняя их другими цифрами так, чтобы результиру- ющее сообщение имело символ Якоби, равный 1 по модулю пи- 9.5.4 Эквивалентность взлома схемы Рабина и факторизации числа п Теперь мы покажем, что взлом рабинского варианта схемы RSA экви- валентен факторизации пц- Конечно, когда факторизация пи известна криптоаналитику, система Рабина фактически взломана, так как крип- тоаналитик может использовать те же самые методы дешифрования, что и получатель (см. подразд. 9.5.2). Теорема 9.18 Пусть п = р х q, где р и q — простые числа. Пусть А обо- значает алгоритм, который для любого с, являющегося квадра- том целого числа, находит решение сравнения ж2 = с (mod п) с помощью F(n) операций. Тогда существует вероятностный алгоритм, факторизующий п с ожидаемым числом операций 2(F(n) + 21og2 n). Доказательство. Выберем случайное т, 0 < т < п, вычислим с а = m2 (mod п) и решим сравнение ж2 = т (mod п) с помощью алго- ритма А за F(n) шагов. Пусть к — решение, найденное А. Каждая из следующих четырех возможностей имеет вероятность 1/4: 1) к = А~т (mod р) 2) к = +тп (mod р) 3) к = —т (mod р) 4) к = —т (mod р) и к = +тп (mod q), и к = —т (mod q), и к = Ттп (mod q), и к = —т (mod q).
9.6. Задачи 205 В самом деле, существуют четыре сообщения, которые отображаются в с, и все четыре одинаково правдоподобны. В случае 2) нод(& — тп, п) = р, а в случае 3) нод(& — т, n) = q. Таким образом, вычисление нод(&—тп, п) дает разложение п с веротностью 1/2. Это вычисление по теореме А.9 включает менее 21og2 п операций. Поэто- му каждый выбор т требует самое большее F(n) + 2 log2 п операций. Так как вероятность успеха равна 1/2, в среднем нужны две попытки. Пример 9.20 (часть 2) Предположим, что п = 77 и что выбранное значение т равно 30. Тогда с = 302 = 53 (mod 77). Допустим теперь, что алгоритм А на- ходит решение к = 19 сравнения х2 = 53 (mod 77) (см. эти параметры в примере 9.20 (часть 1)). Тогда один из делителей числа п определяется из нод(/с —т, п). Это также произойдет, если А найдет решение к = 58, но не с числами 30 или 47. Все вычисления легко проверяются посредством функции GCD из пакета “Mathematica”. п = 77; m = 30; GCD[19 - m, n] GCD[58 - m, n] GCD[30 - m, n] GCD[47 - m, n] II 11 II 7 II 77 II 1 9.6 Задачи Задача 9.1. Рассмотрим систему RSA с п = 383 х 563 (так что п = = 215629) и публичным ключом е = 49. Значит, открытый текст т шифру- ется в с = Е(пТ), где Е(т) = т49 mod п. Покажите, что любой шифртекст удовлетворяет сравнению Е'10(с)= с (mod п). (Совет: используйте теорему Ферма и китайскую теорему об остатках.) Обо- 10 значение Е10(с) стоит вместо Е(Е( .. Е(с)...)). Дайте криптоаналитику легкий способ восстановить открытый текст т из шифртекста с. Задача 9.2. Проверьте, что система шифрования (или схема подписи) RSA работает правильно, когда сообщение т имеет нетривиальный делитель,
206 Глава 9. Системы, основанные на методе RSA общий с модулем п = р х q, т.е. покажите, что (me)d = m (mod n), когда нод(т, п) = р или q (как всегда, end обозначают публичный и, соответ- ственно, секретный показатели). Задача 9.3. Рассмотрим криптосистему RSA с модулем п = р х q и пуб- личным показателем е. а) Докажите, что когда и делит р — 1, число решений уравнения mu = 1 (mod р) есть в точности и (совет: используйте мультипликативную структуру GF(p), теорема В.20). Ь) Покажите, что каждое решение уравнения me-1 = 1 (mod р) является решением уравнения тноД(е—1,р-1) = 1 (mod р) и обратно (воспользуйтесь теоремой Ферма). с) Докажите, что число решений уравнения тпе = тп (mod р) дается вы- ражением 1 + НОд(е — 1,р — 1). d) Докажите, что число открытых текстов тп, таких, что те = т (mod п) (в этом случае шифрование не утаивает сообщение) равно {1 + нод(е - 1,р- 1)} • {1 + нод(е — 1, q — 1)}. (Совет: используйте китайскую теорему об остатках.) Задача 9.4. Продемонстрируйте принцип теста простоты Соловэя-Штрас- сена на числе т = 33. Число т в этой задаче взято небольшим, чтобы вычис- ления были просты. Не используйте числа, которые “случайно” имеют общий с т делитель. Задача 9.5м. Реализуйте в системе “Mathematica” алг. 9.14 и проверьте его для двух значений т, 24 < т < 242. Задача 9.6м. Дайте полное разложение числа п = 110545695839248001с помощью р-алгоритма Полларда. Задача 9.7м. Завершите пример 9.7. (Совет: распространите поиск на интервал (-105, 105).) Задача 9.8м. Примените атаку Винера к п = 6089471299 и е = 3097347557. Задача 9.9м. Найдите сильного лгуна для составного числа тп = 85. Задача 9.10. Предположим, что Алиса посредством системы RSA посыла- ет одно и то же сообщение субъектам В, С, D, Е и F. Пусть публичные модули этих субъектов равны пв = 324059, пс = 324371, пд = 326959, пе = 324851 и пе = 324899. Допустим, что все они имеют один и тот же публичный показа- тель е = 5. Пусть перехваченные шифртексты равны св = 68207, сс = 96570, Сд = = 251415, се — 273331 и ср = 154351. Определите сообщение Алисы (см. пример 9.8).
9.6. Задачи 207 Задача 9.11. Предположим, что Алиса посредством системы RSA посы- лает Бобу секретные сообщения mi = тп и m2 = т2 + Ют + 20. Допустим, что модуль Боба пв = 483047, а ев = 3. Предположим, что Вы перехватили переданные шифртексты щ = 346208 и, соответственно, сг = 230313 и что Вам известно указанное выше соотношение между mi и тд. Определите mi (см. пример 9.10). Задача 9.12. Рассмотрим вариант Рабина системы RSA. Значит, публич- но только число п. Предположим, что было послано сообщение m, 1 < т < < п, имеющее нетривиальный общий с п делитель. Сколько возможных от- крытых текстов найдет получатель, закончив процесс дешифрования? Задача 9.13. Вариант Рабина системы RSA используется в качестве крип- тосистемы с п = 17419 х 17431. Продемонстрируйте алгоритм дешифрования этой системы для шифртекста с = 234279292. Какими будут решения, если следовать методу подразд. 9.5.3? Почему этот метод может быть применен? Задача 9.14. Пусть р = 5 (mod 8) и с — квадратичный вычет по модулю р. а) Покажите, что <4р-1)/4 = ±1 (mod р). Ь) Покажите, что в случае <4р-1)/4 = 1 (mod р) решением сравнения х2 = с (mod р) служит ±с^р+3^8. с) Покажите, что в случае с^р'~-1)/4 = — 1 (mod р) решением сравнения х2 = = с (mod р) служит ±2с(4с)(р~5)/8. (Совет: используйте теорему А.25, из ко- торой слелует, что число 2 не является квадратичным вычетом по модулю р.)
Глава 10 Системы, основанные на эллиптических кривых В этой главе объясняется, что криптосистемы, основанные на про- блеме дискретных логарифмов, могут также определяться над эллипти- ческими кривыми (ЕС). То же самое может быть сделано для систем, основанных на методе RSA, но резон делать это представлется незначи- тельным. Для систем над эллиптическими кривыми, подобных системам дискретных логарифмов, допустимы очень малые значения параметров, обеспечивающие тот же уровень безопасности, какой дают обычные си- стемы над конечными полями. Однако многие вопросы, касающиеся ЕС-систем, на данный момент остаются еще открытыми, что делает неясным будущее этих систем. 10.1 Некоторые основные факты об эллиптических кривых Пусть GF(g) — конечное поле из q элементов, где q = Число р — простое и называется характеристикой поля GF(g). Если т = 1, то GF(g) = Zp, это множество целых чисел по модулю р. Так называемое (аффинное) уравнение Вейерштрасса имеет вид у2 + и- х- у + у- у = х3 + а-х2 + Ь- х + с. (10.1) Оно может определяться над любым полем (наподобие R или С), но для криптографических целей мы всегда будем предполагать, что коэффи- циенты лежат в GF(g). Если р 7^ 2, то уравнение Вейерштрасса можно упростить посред- ством преобразования у у — (и • х + н)/2. Получится (с новыми значе- ниями а, b и с) уравнение у2 = ж3 + а • х2 + b • х + с. (10.2) Если, кроме того, р 3, то можно применить также преобразование х н-> х — а/3, чтобы привести уравнение к виду у2 = х3 + b • х + с. (10.3)
10.1. Факты об эллиптических кривых 209 При р = 2 для соотношения (10.1) возможны два стандартных упроще- ния: у2 + х - у = ж3 + a • ж2 + с, (Ю.4) 9 3 т у + V • у = х + о • х + с. (10.5) Определение 10.1 Эллиптическая кривая 8 над полем GF(g) — это множество точек (ж, у), удовлетворяющих уравнению (10.1), вместе с един- ственным элементом О, называемым точкой в бесконечности. Проверить, лежит ли точка (и, и) на данной эллиптической кривой, скажем, у2 = ж3 + 2ж + 3 над Z5, довольно легко. р = 5; а = 0; b = 2; с = 3; ЕС[х_, у_] =у2-х3-а*х2-Ь*х-с; {u, v} = {1, 4}; Mod [ЕС [и, v] , р] == 0 II True Чтобы увидеть, содержит ли кривая £ точку с заданной ж-координа- той, можно использовать функцию Solve из пакета “Mathematica”. По- скольку уравнение Вейерштрасса квадратично по у, получатся самое большее два значения у (см. теорему В. 14). Р = И; Solve [{у2 == х3 - 5*х + 3, х == 3, Modulus == р}, {у}] || {{Modulus—>11 ,х—>3,у—>2},{Modulus—>11 ,х—>3,у—>9}} Таким образом, ж = 3 приводит к значениям у = ±2, т.е. к точкам (3,2) и (3,9). Читателю стоило бы испытать некоторые другие значения переменной ж. При этом читатель может обратиться к подразд. 9.5.2, где он най- дет обсуждение вопроса о том, как математическими средствами найти квадратные корни из квадратичного вычета по модулю простого числа. Из вышесказанного следует, что точка Р = (х, у) на эллиптической кривой полностью характеризуется координатой ж и “знаком” при у. Если g = р,р > 2, то “знак” у можно определить как “плюс” при условии О < у < (р — 1)/2 и как “минус” в противном случае. Если q = рт,р > 2, то в качестве “знака” у можно использовать “знак” самой левой ненулевой координаты в р-ичном представлении у. Для малых значений р можно определить все точки па 8, испытывая все значения ж и проверяя в каждом случае, будет ли уравнение (10.1)
210 Глава 10. Системы на эллиптических кривых иметь решение. Ниже мы используем функции Flatten, Table и Solve из пакета “Mathematica”. Clear[х, у] ; р = И; Flatten[Table[Solve[ {у2 == х3 - 5*х + 3, х == u, Modulus == р}] , {и, 0, р - 1}], 1] {{Modulus--» 11 ,у—>5 ,х—>0}, {Modulus—» 11 , у—>1 ,х—>2}, {Modulus—»11, у—»2 ,х—»3}, {Modulus—>11 ,у—»5 ,х—>4}, {Modulus—>11, у—>2 ,х—>5}, {Modulus—>11, у—>5 ,х—>7}, {Modulus—>11, у—>4, х—>9}, {Modulus—»11 ,у—»6 ,х—»0} , {Modulus—» 11, у—» 10, х—> 2}-, {Modulus—»11, у—»9, х—>3}, {Modulus—»11,у—»6,х—>4}, {Modulus—>11 , у—>9 ,х—>5}, {Modulus—>11, у—»6, х—>7} , {Modulus—»11 ,у—>7 ,х—»9}} Мы видим, что при р = 11 существуют 14 решений. Имеется (неточ- ное) вероятностное рассуждение, предсказывающее число точек на 8: для каждого значения х уравнение (10.1) имеет два решения с вероят- ностью 1/2 и вовсе не имеет решений с такой же вероятностью 1/2, что приводит приблизительно к q решениям. Чтобы подтвердить правдоподобность этого утверждения, рассмот- рим правую часть уравнения (10.2), предполагая, что р > 2. Если для данного значения х правая часть является ненулевым квадратом в GF(p) (а имеется (р — 1)/2 таких квадратов, именно все четные степени прими- тивного элемента из GF(p); или же см. теорему А.20), то у будет иметь два решения. Если правая часть равна 0, то имеется единственное реше- ние у = 0. Никаких других решений нет. Известная теорема Хассе [Silv86] гласит: Теорема 10.1 (Хассе) Пусть N — число точек на эллиптической кривой над GF(g). Тогда |q+ 1 - N\ < 2y/q. Отметим, что в примере выше мы действительно имеем |12 — 14| < < 2\/11. Вообще говоря, очень трудно найти точное число точек на эллипти- ческой кривой. Однако имеется алгоритм Шуфа [Scho95], вычисляющий это число (для дальнейшего обсуждения см. также [МепеЭЗ]). Мы хотим напомнить читателю возможности пакета “Mathematica” в области вычислений над полем GF(pm), где тп > 1, хотя для понимания оставшейся части главы это не является необходимым. Пример 10.1 В качестве примера кривой над GF(24) = GF(2)[a]/(l + а3 + а4)
10.2. Геометрия эллиптических кривых 211 (см. табл. В.2) рассмотрим уравнение у2 = х3 4- ах 4- 1. Чтобы про- верить, лежит ли на этой кривой точка (а2, а14-), загрузим сначала пакет Algebra‘FiniteFields‘ из “Mathematica". << Algebra<FiniteFields4 f 16 = GF[2, {1, О, О, 1, 1}] ; al = fl6[{0, 1, О, О}] ; ЕС [х_, у_] = у2 - х3 - al * х - 1; {u, v} = {al2, al14}; ЕС [и, v] II О В самом деле, (а14)2 — (а2)3 4- а(а2) 4- 1, что можно легко проверить: al6 + al3 + 1 (al14)2 II {0, 1, 1, 0}2 || {О, 1, 1, 0}2 10.2 Геометрия эллиптических кривых Причиной нашего интереса к эллиптическим кривым служит опера- ция сложения, которая может быть на них определена. Относительно этой операции точка в бесконечности О Е 8 служит нулем, а множество £ обладает структурой аддитивной группы. Чтобы определить сложение на £, воспользуемся тем свойством, что любая прямая, пересекающая 8 по меньшей мере в двух точках, пересе- кает ее трижды. Точка касания считается здесь за две точки. Точка О в бесконечности — это точка пересечения всех “вертикальных” прямых. Приведем сначала рисунок эллиптической кривой над полем действи- тельных чисел. Мы используем функцию ImplicitPlot из “Mathematica” для чего сначала нужно загрузить пакет Graphics‘ImplicitPlot‘. << Graphics‘ImplicitPlot4 elliptic = ImplicitPlot [у2 == x3 - 5 * x + 3, {x, -3, 3}] Полученный результат приведен на рис. 10.1. Мы призываем читателя заменить коэффициент --5 при х у функ- ции, изображенной выше, на -4, а затем на -3 и посмотреть, как изме- нится график.
212 Глава 10. Системы на эллиптических кривых Рис. 10.1. Эллиптическая кривая над полем действительных чисел. Чтобы увидеть, где прямая у = —х + 1 пересекает кривую у2 = = х3 — 5ж + 3, используем дополнительные функции Epilog и Line. ImplicitPlot[у2 == х3 - 5 * х + 3, {х, -3, 3}, PlotRange -> {-4, 4}, Epilog -> Line[{{-3, 4}, {4, -З}}]] Полученный результат приведен на рис. 10.2. Чтобы численно найти точки пересечения, можно воспользоваться функцией NSolve. NSolve[{у2 == х3 - 5 * х + 3, у == -х + 1}, <х, у}] {{у->-1., х—>2.}, {у—>0.381966, х—>0.618034}, {у->2.61803, х—>-1.61803}} Когда кривая определена над Zp, точки ее пересечения с прямой ли- нией можно найти посредством функции Solve следующим образом. р = 11; Solve[{у2 ==х3 - 5 * х + 3, у == х - 1, Modulus == р}, {х, у}]
10.2. Геометрия эллиптических кривых 213 {{Modulus—>11, у—>1, х—>2}, {Modulus—>11, у—>2, х—>3}, {Modulus—>11, у—>6, х—>7}} Иной способ нахождения точек пересечения прямой у = и • х + и с эл- липтической кривой — подставить у = u-x+v в уравнение (10.1), получая уравнение третьей степени относительно х и находя затем разложение соответствующего многочлена. Пример 10.2 Допустим, что мы работаем над Т>\\. Чтобы найти точки пересе- чения прямой у = 4а? + 1 с кривой у2 = а?3 — Ъх + 3, разлоснсим мно- гочлен (4а? + I)2 — (а?3 — 5а? + 2) с помощью функции Factor из пакета “Mathematical р = 11; Clear[х] ; ес = х3 - 5 * х + 3; il = 4 * х + 1; Factor[il2 - ес, Modulus -> р] II 10 (2 + х) (7 + х) (8 + х) Получаем х-значения точек пересечения: —2, —7 и —8. Исходя из равенства у = 4а? + 1, находим решения (9, 4), (4, 6) и (3, 2):
214 Глава 10. Системы на эллиптических кривых х = Mod[{-?, -7, -8}, р] у = Mod[4 * х + 1, р] II О, 4, 3} II {4, 6, 2} □ Прямая, проходящая через две различные точки Пусть Pi = (a?i, yi) и?2 - (а?2,2/2) — Две различные точки на эллипти- ческой кривой £ (обе не в бесконечности). Пусть С — прямая, проходящая через Pi и Р2. Как найти третью точку пересечения £ с £? Если a?i = х% и yi = — у2, то1 по определению третьей точкой пересечения будет О. Поэтому рассмотрим случай a?i =/= а?2- Прямая £, проходящая через Pi и Р2, задается уравнением У - У1 = А(а? - xi), где Х= —-----—. (10.6) Х2 — Обсудим два случая. Случай р 2 Допустим, что эллиптическая кривая уже записана в приведенной форме (10.2). Подстановка (10.6) в это равенство дает (Х(х — a?i) 4-yi)2 = = а?3 + a • а?2 4- b • х 4- с. Мы знаем два корня уравнения третьей степени и должны найти третий корень (назовем его а?з). Таким образом, данное уравнение можно записать в виде (a? —a?i)(a? —а?2)(а? —а?з) = 0. Сравнивая коэффициенты при а?2 в обоих выражениях, получаем а?з = А2 — а — a?i — а?2 (10.7) и в силу (10.6) ?/з = А(а?3 - xi) 4-1/1- (10.8) Пример 10.3 Рассмотрим эллиптическую кривую у2 — х3 Р 11а?2 4- 17а? 4- 25 над Z31. Точки Pi = (a?i,?/i) = (2,7) и Р2 = (#2,3/2) = (23,9) лежат на Г, что можно проверить с помощью функции Mod: Р = 31; а = 11; b = 17; с = 25; xl = 2; у1 = 7; х2 = 23; у2 = 9; F[x_, у_] := у2 - (х3 +а*х2+Ь*х+с); Mod[F[xl, yl] , р] == 0 Mod [F [х2, у2] , р] == О 1 Здесь, как и ниже, предполагается, что кривая задана уравнением (10.2).— Прим, ред.
10.2. Геометрия эллиптических кривых 215 II True II True Наклон Л прямой С, проходящей через Pi и Р}, дается в (10.6): Л = ” 23—2 =2x3 = 6. Мы используем здесь функцию PowerMod, чтобы получить мультипликативное обратное к 21 по модулю 31. PowerMod[21, -1, р] II 3 Координаты (тз, уз) третьей точки пересечения С, с £ даются фор- мулами (10.7) и (10.8): 1am = 6; хЗ = Mod[lam2 - а - xl - х2, р] уЗ = Mod[1am * (хЗ - xl) + yl, р] II О II 26 Точка Р3 = (0, 26) действительно лежит на £, что можно прове- рить вычислением: Mod[F[x3, уЗ] , р] == О II True Случай р = 2 Допустим теперь, что мы привели уравнение (10.1) к виду (10.4). Как и выше, подставляем соотношение (10.6) в уравнение (10.4) и сравниваем коэффициенты при х2. Получаем хз = Л2 + Л — а — xi — Ж2, (10.9) Уз = Х(хз - Ж1) + У1. (10.10) Заметим, что все знаки “минус” можно заменить знаками “плюс”, так как р = 2. □ Касательная прямая Имеется еще одна возможность, которую мы должны обсудить, а именно, когда Pi — (xi,yi) = Р2 = Р- Пусть £ — касательная пря- мая к 8, проходящая через Р. Это означает, что £ пересекает 8 в точке Р = (я?1, т/i) и наклон у £ совпадает с производной \у по х относительно 8 — Ред.] в точке Р. Обычно Р рассматривается как точка пересечения с кратностью два.
216 Глава 10. Системы на эллиптических кривых Над R ситуация выглядит так: ImplicitPlot[у2 == х3 - 5х - 3, {х, -2, 4}-, PlotRange -> {-4, 4}, Epilog -> Line[{{-2, 2}, {4, -4}}]] Полученный результат приведен на рис. 10.3. Рис. 10.3. Касательная к эллиптической кривой. Мы здесь пока исключили возможность того, что С — двойная каса- тельная прямая к £ (т.е., что кратность точки Р равна 3). Если бы было именно так, то касательная прямая уже пересекала бы £ в точке с крат- ностью 3. В дальнейшем, говоря о взятии производной многочлена над конечным полем, мы имем в виду формальное дифференцирование и по- следующее приведение коэффициентов по модулю характеристики поля. Например, в GF(3m) производная от а?4 + 2а?3 + а?2 4-1 равна 4а?3 4-6а?2 4-2а?, что приводится к а?3 + 2а?. Случай р 2 Наклон касательной прямой, проходящей через точку Р = (a?i,?/i) на кривой у2 = а?3 + a • а?2 4- b • х 4- с (см. (10.2)), задается значением у', определенным неявным дифференцированием, т.е. из равенства 2у\-у' = = За?2 4- 2a • a?i 4- b. Мы заключаем, что касательная прямая, проходящая
10.2. Геометрия эллиптических кривых 217 через Р, дается уравнением У - У1 = А(х - Х1), где 3^ + 2^+Ь 2?/i k } Для нахождения третьей точки пересечения прямой £ и кривой £ можно вновь воспользоваться равенствами (10.7) и (10.8). Случай р = 2 Наклон касательной прямой, проходящей через точку Р на кривой у2 + х-у = х3 + а-х2 + с (см. (10.4)), задается значением у', определяемым из равенства 2?/i • у' + yi + xi • у1 = Зх2 + 2а • xi или yi + X] • у' = = х2. Следовательно, касательная прямая, проходящая через Р, дается уравнением 2 У - У1 = А(х - Ж1), где А = = Х1 + —. (10.12) Xi Xi Чтобы найти найти третью точку пересечения £ с £, заметим, что ра- венство (10.9) сводится к (\ У1 \ . У1 — + Xi Н----= Х1 / Xl , 2 , , У1 + ХГУ1 (10-4) , 2 , , + ах1 + с = а + Xl + Xl Н-----2--- = а + Х1 + XI н----------2----> 37 -£ 37 j т.е. к соотношению с Хз = xj —2, (10.13) Х1 и что (10.10) приводит к равенству Уз = xj + ( Xl + — ] х3. (10.14) \ xi J Пример 10.4 Рассмотрим эллиптическую кривую у2 Р х • у = х3 + <т9х2 + а над GF(16), где а4 = а + 1. Точка (а2, а12) лежит на этой кривой, что легко проверить, загрузив сначала пакет Algebra‘FiniteFields‘ из “Mathematica”. << Algebra<FiniteFieldsc f 16 = GF[2, {1, 1, 0, 0, 1}]; a = fl6[{0, 1, 0, 0}]; ЕС[х_, у_] = у2 + х * у - х3 - а9 * х2 - а; {xl, yl} = {а2, а12}; EC[xl, yl] II 0
218 Глава 10. Системы на эллиптических кривых Касательная, проходящая через точку (а2, си12), имеет наклон Л, определяемый равенством (10.12). Поэтому lam = xl + yl / xl || {1, 1, 0, 01-2 что равно а4. Чтобы найти другую точку, где касательная пересекает £, используем соотношения (10.13) и (10.14): хЗ = xl2 + а / xl2 уЗ = xl2 + (xl + yl / xl) * хЗ || {О, О, 1, 1}-2 || {О, 0, 1, 0}2 Таким образом, (жз,?/з) = (а6, си2). Все это можно легко проверить: хЗ = а6 уЗ = а2 ЕС[хЗ, уЗ] п <о, о, 1, 13-2 II <0, 0, 1, 0>2 II о 10.3 Сложение точек на эллиптической кривой В предыдущем разделе было показано, что прямая, проходящая через две точки на эллиптической кривой, пересекает эту кривую в третьей точке, а также показано, каким образом можно эффективно вычислить эту точку. То же самое выполняется для прямой, которая касается £, с уточнением, что точка касания считается дважды. Теперь мы готовы определить сложение на £. Геометрическая идея, лежащая в основе приводимых ниже формул, состоит в следующем. Пре- жде всего, если Р = (ж, у) — точка на эллиптической кривой, определен- ной уравнением (10.1), то полагаем —Р = (х, —у — и • х — v). Если и = v = 0, как в уравнении (10.2), то это сводится к -Р = (ж, -у).
10.3. Сложение на эллиптической кривой 219 Геометрически это можно описать следующим образом: вычисляется прямая £, проходящая через О и Р; она пересекает £ в третьей точке, а именно, в точке —Р. Как отмечено раньше, точка О в бесконечности должна интерпретироваться как точка пересечения всех вертикальных прямых. Чтобы сложить точки Р\ и Р2, когда обе они не лежат в бесконечно- сти, нужно выполнить следующие два шага: 1) вычислить прямую, проходящую через Pi и Р2 (или, в случае Pi = = Р2, касательную прямую, проходящую через Pi), и найти третью точку пересечения с £; пусть это будет Q; 2) найти сумму Pi + F2, определяемую равенством Р3 := —Q. Точка О служит нейтральным элементом этого сложения и противо- положна самой себе. Определение 10.2 (сложение) Пусть Р — точка на эллиптической кривой £ (определяемой уравнением (10.1)), О — точка в бесконечности. Тогда положим р + о = о + р = р. Далее, пусть Pi — (xi,yi) vl Р2 = (a?2,?/2) — Две точки на £, обе отличные от О. Тогда сумма Р3 = Pi + Р2 определяется равенствами 1) Рз = — Q, если xi х2; здесь Q — третья точка пересечения с £ прямой £, проходящей через Pi и Р2. 2) F3 = —Q-, если Pi = Р2 и касательная, проходящая через Pi, единична; здесь Q — третья пересечения с £ данной касательной. 3) Рз = — Pi, если Pi = Р2 и проходящая через Pi касательная — двойная. 4) Рз = О, если Pi = —Р2. точка Заметим, что случай 3) можно интерпретировать как специальный вариант случая 2). Изобразим два наиболее типичных случая, а именно, 1) и 2), привле- кая эллиптические кривые над полем действительных чисел. Нам снова потребуется пакет Graphics‘ImplicitPlot‘. << Graphics*ImplicitPlot4 Implicit Plot [у2 == х3 - 5 * х + 3, {х, -3, 4}, Epilog -> {line[{{-3, -2}, {4, Б}}], Line[{{3, -6}, {3, б}}],
220 Глава 10. Системы на эллиптических кривых Text [ "\!\(\* StyleBox[\(P\), FontColor->RGBColor[ 0, О, 1]]\)\!\(\* StyleBoxЕ\(+\), FontColor-> RGBColorEO, 0, 1]]\)\!\(\* StyleBoxE\Q\), FontColor->RGBColor[0, 0, 1]]\)", {2.3, -4}], Text["\!\(\* StyleBoxЕ\(Р\), FontColor-> RGBColorEO, 0, 1]]\)", {-2.4, -2.1}], TextE"\!\(\* StyleBoxE\(Q\), FontColor-> RGBColorEO, 0, 1]]\)", {0.35, 1.9}], TextE"»", {-2.31, -1.4}], TextE"*", {0.28, 1.26}], TextE"*", {3.01, -3.9}]}] Полученный результат приведен на рис. 10.4. Рис. 10.4. Сложение точек на эллиптической кривой (первый случай). ImplicitPlotЕу2 == х3 - 5 * х - 3, {х, -2, 4}, Epilog -> {lineE{{3, -6}, {3, 6}}], LineE{{-2, 2}, {4, -4}}], TextE"\!\(\* StyleBoxE\(P\), FontColor->RGBColorE0, 0, 1]]\)", {-1.1, 1.65}], TextE"\!\(\* StyleBoxE\(2\), FontColor-> RGBColorEO, 0, 1]]\)\!\(\* StyleBoxE\(P\), FontColor->RGBColorE0, 0, 1]]\)", {2.8, 3.5}], TextE"*", {-1.1, 1.1}], TextE"*", {3.01, 3}]
10.3. Сложение на эллиптической кривой 221 Полученный результат приведен на рис. 10.5. Рис. 10.5. Сложение точек на эллиптической кривой (второй случай). Точки на эллиптической кривой вместе с определенным выше сложе- нием образуют аддитивную группу. Мы не будем здесь доказывать это. Читатель отсылается к [МепеЭЗ] или [Silt92j. Отметим, что единствен- ная нетривиальная часть доказательства — проверка ассоциативности сложения. Теорема 10.2 Точки на эллиптической кривой £ вместе со сложением, задан- ным в определении 10.2, образуют аддитивную группу. Нуле- вым элементом в ней служит точка О. С помощью следующего модуля Module можно вычислять сумму двух точек на эллиптической кривой над полем GF(g) характ еристики р > 2 (точка О в бесконечности будет обозначаться через {О}). Мы можем ис- пользовать формулы (10.6), (10.7), (10.8), (10.11) и применить функцию Which из пакета “Mathematica” с тем же порядком случаев, какой дан в определении 10.2. EllipticAdd[р_, а_, b_, с_, P_List, Q_List] := Module [{lam, хЗ, y3, R}, Which[Р == {0}, R = Q, Q == {□}, R = P, P[[l]] != QEE1]], lam = Mod[ (Q[[2]J - P[[2] ])*PowerMod[Q [ [1]] - P[[1]], -1, p], p];
222 Глава 10. Системы на эллиптических кривых хЗ = Mod [lamI 2 - а - Р[[1]] - Q[[l]], р] ; уЗ = Mod[-(1am * (хЗ - Р[[1]]) + Р [ [2]]), р]; R = {хЗ, уЗ}, (Р == Q) && (Р ! = {О}), lam = Mod[(3 * Р [[1]]2 + 2 * а * Р[[1]] + Ъ) * PowerMod [2 * Р[ [2]], -1, р], р]; хЗ = Mod [lam2 - а - Р [ [1]] - Q[[1J], р]; уЗ = Mod[-(1am * (хЗ - Р[[1]]) + Р [ [2]]), р] ; R = {хЗ, уЗ}, (P[[1J] == Q[[l]]) && (P[[2]J != Q [ [2] ]) , R = {О}]; Покажем сложение точек в ряде случаев: р = 11; а = 0; b = 6 ; с = 3; EllipticAdd[р, a, b, с, {4, б}, {9, 4}] EllipticAdd[р, a, b, с, {9, 4}, {9, 4}] EllipticAdd[р, a, b, с» {4, б}, {4, б}] EllipticAdd[р, a, b, С, <4, б}, <0}] Ellipt i cAdd[р, a, b, С, {4, б}, {4, 5}] EllipticAdd[р, a, b, с, {О}, О, 4}] I <3, 9} I <7, 6} I <4, 5} I {4, 6} I W I <9, 4} Заметим, что касательная, проходящая через точку (4,6) — двойная, поэтому определение 10.2,3) дает (4,6)+ (4,6) = -(4,6) = (4,5). Как и в любой аддитивной группе, 2Р обозначает Р + Р, ЗР обозна- чает Р + Р + Р и т.д. Аналогично, ОР обозначает О, а —п • Р обозначает — (п • Р). Эти кратные точки Р часто называют скалярными кратными Р. Порядок точки Р — это наименьшее натуральное число п, для кото- рого п-Р = О. Так как группа £ конечна, это понятие вполне определено. Множество {О, Р, 2Р,... , (п — 1)Р} — циклическая подгруппа в £. Отсю- да следует, что п делит |£| (см. теорему В.5). Теперь у нас есть модуль EllipticAdd, определенный выше, который позволяет легко вычислять п • Р, п > 1, с помощью рекурсии:
10.4. Системы над эллиптическими кривыми 223 р = 11; а = О; Ъ = 6; с = 3; Р = {9, 4}; f [1] = Р; f[n_] := f [n] = EllipticAddEp, a, b, с, P, f [n - 1]]; Table [f[n], {n, 1, 5 JI // ColumnForm {9, 4} {7, 6} {7, 5} {9, 7} {0} Таким образом, на кривой у2 = x3 + 6x + 3 над Zu точка Р = (9,4) имеет порядок 5. В следующем разделе нам будет важно иметь точки на эллиптиче- ской кривой £, порядок которых очень велик. Если мощность £ извест- на и имеет специальный вид, например, |£| — малое кратное большого простого делителя, то довольно легко найти точки на £ с известным большим порядком. В качестве примера рассмотрим |£| = 3 х 7919 = 23757, и предполо- жим, что ЗР О. Тогда Р имеет порядок либо 7919, либо 23757. Если 7919Р = О, то Р имеет порядок 7919, в противном случае этот порядок будет иметь точка ЗР. Чтобы проверить эти утверждения, примените лемму В.4 и теорему В.5 (переписав мультипликативные обозначения на используемые здесь аддитивные). 10. 4 Криптосистемы, определяемые над эллиптическими кривыми Многие понятия в этом разделе можно рассматривать как прямой перевод понятий, введенных в гл. 8, но теперь в качестве главной опера- ции вместо модулярного умножения используется сложение на эллипти- ческой кривой. Модулярное возведение в степень переходит в скалярное умножение. По этой причине часто достаточно представить новые фор- мулировки, не копируя всех доказательств. В [Demy94] описана криптосистема, подобная RSA, но определенная над эллиптическими кривыми. Однако для взлома такой системы доста- точно факторизовать ее модуль. Поскольку исходная система RSA имеет те же самые ограничения безопасности, но быстрее в вычислениях, резон использовать обобщение RSA на эллиптические кривые представляется слишком незначительным. 10.4.1 Проблема дискретных логарифмов над эллиптическими кривыми В разд. 10.3 мы видели, как складываются точки на эллиптической кривой. Это операция с относительно низкой сложностью. Чтобы вычис-
224 Глава 10. Системы на эллиптических кривых лить скалярное кратное точки Р скажем, п • Р для некоторого целого п, можно использовать повторное сложение, но гораздо эффективнее ско- пировать идеи из подразд. 8.1.1. Пример 10.5 Возьмем п = 171. Его двоичное представление — 10101011, как по- казывает функция IntegerDigits из пакета “Mathematica”: IntegerDigits[171, 2] || {1, 0, 1, 0, 1, 0, 1, 1} Поэтому для вычисления 171Р достаточно вычислить 2Р = Р + Р, 4Р = 2Р + 2Р, 8Р = 4Р + 4Р, 128Р = 64Р + 64Р и сложить подходящие члены. Это можно сделать “на лету” следую- щим образом: Clear[Р]; 2 ( 2 ( 2 ( 2( 2( 2( 2 Р) + Р)) + Р) ) + Р) + Р II 171 Р Заметим, что мы только прибавляли частичные результаты к са- мим себе или к Р. (Читатель может взглянуть на пример 8.3, где решается аналогичная задача модулярной арифметики.) Конечно, аддитивные цепочки могут и дальше уменьшить сложность этих вычислений. Проблема, обратная к проблеме вычисления скалярных кратных точ- ки, состоит в следующем. Определение 10.3 Пусть £ — эллиптическая кривая, Р — точка на £, a Q — ска- лярное кратное Р. Проблема дискретных логарифмов над эл- липтической кривой — это проблема определения числа п из равенства n-P = Q. (10.15) Хотя известны методы решения уравнения (10.15), более эффектив- ные, чем простое испытание п = 1,2,..., все эти методы имеют слож- ность порядка nQ,a > 0, и поэтому они экспоненциально медленнее, чем вычисление п • Р из Р, имеющее логарифмическую сложность.
10.4. Системы над эллиптическими кривыми 225 10.4.2 Система дискретных логарифмов над эллиптическими кривыми Теперь мы можем описать аналог протокола Диффи-Хеллмана об- мена ключами (см. подразд. 8.1.2). В качестве системных параметров нужны эллиптическая кривая 8 над конечным полем GF(q) и точка Р на ней высокого порядка; напри- мер, порядок п точки Р может иметь длину 150-180 цифр. Каждый пользователь U системы выбирает секретный скаляр mu, вычисляет точку Qu = muP и объявляет Qu публично. Теперь Алиса и Боб могут согласовать общий ключ К а,в = тдтвР. Алиса может найти этот общий ключ, вычисляя ttiaQb с помощью своего секретного ключа ша и публичного ключа Qb Боба. Подобным образом действует и Боб. Эта система резюмируется в следующей таблице. СИСТЕМНЫЕ ЭЛЛИПТИЧЕСКАЯ КРИВАЯ 8 НАД GF(g) ПАРАМЕТРЫ ТОЧКА Р НА 8 ВЫСОКОГО ПОРЯДКА СЕКРЕТНЫЙ КЛЮЧ U ПУБЛИЧНЫЙ КЛЮЧ U ОБЩИЙ КЛЮЧ А и В Алиса вычисляет Боб вычисляет ти Qu = тиР К а,в = тпатпвР i™aQb mBQA Таблица 10.1. Система Диффи-Хеллмана обмена ключами над эллиптическими кривыми. Пример 10.6 Рассмотрим эллиптическую кривую 8 над Zg63> заданную уравнени- ем у2 = х3 4- 100а?2 4- 10ж 4-1. Точка Р = (121,517) лежит на ней, что можно проверить посредством функции Mod из пакета “Mathematica”: р = 863; а = 100; Ъ = 10; с = 1; х = 121; у = 517; Mod [у2 - (х3 + а * х2 + b * х + с), р] == 0 II True Порядок точки Р равен 432. Чтобы показать это, проверим, что 432Р = О и что (432/q)P / О для простых делителей q числа 432. Используем двоичные разложения этих коэффициентов (определяемых посредством функции IntegerDigits). Мы используем также функцию EllipticAdd, определенную в разд. 10.3, и функцию Do. Factorinteger[432] IntegerDigits[432, 2] IntegerDigits[432 / 2, 2] IntegerDigits[432 / 3, 2]
226 Глава 10. Системы на эллиптических кривых II «2, 4}, {3, 3}} || <1, 1, 0, 1, 1, О, О, О, 0} || <1, 1, 0, 1, 1, О, О, 0} || {1, 0, 0, 1, 0, 0, 0, 0} р = 863; Р = .; а = 100; b = 10; с = 1; Р[0] = <121, 517}; P[i_] := P[i] = EllipticAdd[р, a, b, с, Р[i - 1], P[i - 1]]; Q = EllipticAdd[р, a, b, c,EllipticAdd[p, a, b, c,P[8],P[7]], EllipticAdd [p, a, b, c, P[5], P[4]]] EllipticAdd[p, a, b, c, EllipticAdd[p, a, b, с, P[7], P[6]], EllipticAdd[p, a, b, c, P[4] , P[3]]] EllipticAdd[p, a, b, c, P[7], P[4]] II <0} II <19, Ol- li <341, 175} Пусть Алиса выбирает тд = 130, а Боб ~ тв = 288. Тогда Q& = = (162,663), a Qb = (341,688), что можно проверить следующим обра- зом (заметим, что мы выбрали очень “дружелюбные” секретные ска- ляры2 * *): QAlice = EllipticAdd[р, a, b, с, Р[7], Р[1]] QBob = EllipticAdd[р, a, b, с, Р[8], Р[5]] || <162, 663} || <341, 688} Алиса находит общий ключ Кдгв, вычисляя Кд,в = tkaQb, где тд = = 130 — ее секретный ключ. Она получает QAEO] = <341, 688}; QA[i_] := QA [i] = EllipticAdd[р, a, b, с, QA[i - 1], QA[i - 1]]; EllipticAdd[р, a, b, с, QA[7], QA[1]] || <341, 688} 2Весьма “дружелюбен” лишь секретный скаляр Боба. Действительно, поскольку 288 = 25 • З2 порядок точки Qb — 288 • Р равен 432/нод(288, 432) — 3 (всего лишь!). Поэтому общий секретный ключ Боба с любым другим участником протокола выби- рается из трех точек: {0}, Qb и 2 • Qb = {341,175}. Секретный скаляр Алисы не так плох, поскольку 432/нод(130, 432) = 216. — Прим, перев.
10.4. Системы над эллиптическими кривыми 227 Аналогично, Боб находит общий ключ Кд,в, вычисляя Кд,в = = mBQA, где тв = 288 — его секретный ключ. Он так&се получает QB[O] = <162, 663}; QB[i_] := QB[i] = EllipticAdd[р, a, b, c, QB[i - 1], QB[i - 1]]; EllipticAdd [p, a, b, c, QB[8], QB[5]] || {341, 688} Теперь, когда система Диффи-Хеллмана обмена ключами описана, вполне реально выполнить упражнение, показывающее, что протокол Эль-Гамаля и другие системы, описанные в разд. 8.2, могут быть пере- писаны на языке эллиптических кривых0. 10.4.3 Безопасность систем дискретных логарифмов, основанных на эллиптических кривых В разд. 8.3 приведены различные методы взятия дискретных лога- рифмов над конечным полем. Алгоритм Похлига—Хеллмана, метод “дет- ский шаг- гигантский шаг”, p-метод Полларда — все они могут быть пе- реведены на язык эллиптических кривых: нужно просто заменить моду- лярное возведение в степень скалярным умножением на эллиптических кривых. Во время написания этой книги терпела поражение любая попытка эффективно перевести на язык эллиптических кривых метод исчисления индексов (см. [МШ86]). Это имеет большое криптографическое значение, так как метод исчисления индексов — единственный с субэкспоненци- альной сложностью. Это означает, что для обычных систем дискретных логарифмов метод исчисления индексов является господствующим фак- тором при определении системных параметров (для поддержания вы- числительной безопасности систем). Так как метод исчисления индексов не работает в обстановке эллиптических кривых, можно позволить себе много меньшие параметры для достижения того же уровня безопасности. Во время написания книги был предложен метод XEDNI ([Silv98]) как альтернатива для решения проблемы дискретных логарифмов на эл- липтических кривых. Но еще требуется дальнейший анализ, чтобы опре- делить последствия внедрения этого метода. Существуют специальные атаки на криптосистемы дискретных логарифмов, основанные на эллиптических кривых. Из-за этих атак необходимо избегать некоторых классов эллиптических кривых. В част- ности, не должны использоваться З3аметим, что такое “упражнение” было выполнено и в отношении российского стандарта цифровой подписи *[ГОСТП94]: новый стандарт *[ГОСТ01], основанный на эллиптических кривых, в принципе является результатом такого “переписывания”. — Прим. ред.
228 Глава 10. Системы на эллиптических кривых • сингулярные кривые; • суперсингулярные кривые; • аномальные кривые. Мы не будем описывать эти атаки (см. [MeOkV93], [SatA98], [Smar98]). В каждом случае проблема логарифмов над эллиптическими кривыми может быть транслирована в проблему логарифмов над конечным полем (или даже в более простую проблему). В одном случае мы объясним, как можно учесть эти атаки, просто избегая соответствующих особых кривых. Прежде чем сделать это, необходимо ввести новое понятие. Сопоста- вим уравнению Вейерштрасса (10.1) однородное уравнение. А именно, умножим каждый член в (10.1) на наименьшую степень z так, чтобы новые члены имели одну и ту же степень4 5: F(x, у, z) = y2z 4- uxyz + vyz2 — ж3 — ax2z — bxz2 — cz3 = 0. (10.16) Заметим, что если (ж, у, z) удовлетворяет уравнению (10.16), то это же верно для Л(ж, т/, г). По этой причине решения уравнения (10.16) часто нормализуют, требуя, чтобы самая правая ненулевая координата была равна 1. Теперь точки (ж,т/), удовлетворяющие уравнению (10.1), при- водят к решениям (ж,т/, 1) для (10.16). Точка О в бесконечности может быть (несколько таинственно) представлена тройкой (0,1,0). Точка на кривой £ называется сингулярной (или особой), если все частные производные dF/dx, dF/dy и dF/dz равны нулю. Эллиптиче- ская кривая не может содержать двух сингулярных точек. Если кривая 8 содержит сингулярную точку, то она называется сингулярной кривой, в противном случае она называется несингулярной (или неособой) кривой. С некоторыми усилиями можно показать, что уравнение (10.2) то- гда и только тогда определяет несингулярную кривую, когда кубиче- ский многочлен в правой части не имеет кратных корней. Для уравне- ния (10.3) при с / 0 это эквивалентно условию 4Ь3 + 27с2 0 (modp). Когда р = 2, несингулярные кривые определяются уравнениями (10.4) при О и (10.5) при v/ 0. Из сказанного следует, что довольно просто проверить, является кри- вая сингулярной или нет. Мы не даем определения суперсингулярных кривых^. Здесь достаточ- но знать, что кривые, заданные уравнением (10.5), суперсингулярны и нужно избегать их. Это снова легко сделать. Наконец, аномальными называются кривые 8 над с тем свойством, что |£| = р. 4Тем самым мы переходим к кривой в проективной плоскости; см. ниже подразд. 13.3.2.— Прим. ред. 5Согласно теореме 10.1 (Хассе) мощность эллиптической кривой Е над полем F, равна q + 1 — t, где |t| < 2^/g. Кривая Е называется суперсингулярной, если t2 = = О, q, 2g, 3g или 4g. — Прим. ред.
10.5. Задачи 229 10. 5 Задачи Задача 10.1м. Сколько точек лежит на эллиптической кривой, опреде- ленной в примере 10.1? Задача 10.2. Найдите точки пересечения прямых у = 4а; + 20 и у = 4а; + 21 с эллиптической кривой у2 = х3 + 25а; + 10 над Z31. Задача 10.3. Найдите прямую, которая касается эллиптической кривой у2 = х3 4- Их2 4- 17х 4- 25 над Z31 в точке (2,7). Где еще эта прямая пересекает кривую? Задача 10.46. Рассмотрим эллиптическую кривую £ с уравнением у2 = = х3 4- Их2 4- 17х 4- 25 над Z31. Проверьте, лежат ли на £ точки Р = (12,10) и Q = (25,14). Что такое —Р? Вычислите сумму Р и Q без использования процедуры из “Mathematica”, представленной в разд. 10.3. Задача 10.5. Пусть Р на £ имеет порядок п. Каков порядок точки —Р? Задача 10.6м. Рассмотрим эллиптическую кривую, определяемую урав- нением у2 — х3 4- Их2 4- 17х 4- 25 над Z31. Определите порядки точек Р = (27,10) и Q = (24,28). Какой можно сделать вывод о мощности £ (совет: используй- те теорему В.5)? Какова мощность £ (используйте теорему 10.1)? Постройте точку максимального порядка, исходя из точек Р и Q. Задача 10.7м. Продублируйте пример 10.6 для эллиптической кривой над ^523» определяемой уравнением у2 = а;3 4-1 Их2 4-11x4-1. Используйте в качестве Р точку порядка не меньше 100. 6В оригинале здесь был значок “Л/”. Но задача легко решается вручную.— Прил$. ред.
Глава 11 Системы, основанные на теории кодирования 11.1 Введение в коды Гоппы В данной главе предполагается, что читатель знаком с алгебраиче- ской теорией кодирования. В противном случае можно свободно про- пустить эту главу и приступить к чтению гл. 12. Здесь мы напомним следующие факты из [MacWS77] о кодах Гоппы. Теорема 11.1. Пусть G(x) — неприводимый многочлен степени t над полем GF(2m). Тогда множество r(G(a:),GF(2’")) = 6 {0,1}" Sw6GF(2>") Йи = °( mod G(®))} (ИЛ) определяет двоичный код Гоппы длины п = 2т, размерности k > n — t • m, с минимальным расстоянием d > 2t 4-1. Для него есть быстрый алгоритм декодирования со временем работы п • t (см. [Patt75]). Заметим, что поле GF(2m) используется в качестве множества ин- дексов для координат векторов из {0,1}п. Описанное выше означает, что элементы множества Г(С(гг), GF(2m)) (называемые кодовыми словами) образуют линейное подпространство в {0,1}п размерности не менее, чем п — t • т, и различные кодовые слова отличаются по крайней мере в 22 4-1 координатах (иначе говоря, расстояние Хэмминга djj(c,d) между различными кодовыми словами си с* не меньше, чем 2t 4- 1). Алгоритм декодирования будет отображать каждое слово из {0,1}п, отличающееся от (единственного в силу неравенства треугольника) ко- дового слова с не более, чем в t координатах, в это кодовое слово. Сле- довательно, если послано слово с, а принято слово г, отличающееся от с не более, чем в t координатах (df/(c, г) < 2), то получатель может по г восстановить с. Поэтому число t называется способностью кода Г(<7(ят), GF(2m')>) исправлять ошибки. Произвольная матрица G размера к х п, строки которой образуют
11.1. Введение в коды Гоппы 231 базис для данного линейного кода, называется порождающей матрицей этого кода. Из этого определения следует, что код может быть описан как множество {m'G\m е {0,1}*}. (11.2) Пример 11.1 (часть 1) Пусть а — примитивный элемент поля GF(24), удовлетворяющий равенству а4 + а3 + 1 = 0. После загрузки пакета Algebra‘FiniteFields‘, можно с помощью функций MatrixForm и PowerList сгенерировать таб- лицу логарифмов поля GF(24). << Algebra^initeFields ‘ MatrixForm[PowerList [GF [2, <1, 0, 0, 1, 13-]]] / 1 0 0 0 \ 0 10 0 0 0 10 0 0 0 1 10 0 1 110 1 1111 1110 0 111 10 10 0 10 1 10 11 110 0 0 110 \ о о 1 1 / Рассмотрим двоичный код Гоппы T(G(x), GF(24)) длины 16, опреде- ляемый многочленом G(x) = х2 + х + а. Для проверки того, что G(x) неприводим над GF(24), достаточно лишь убедиться в том, что он не имеет линейных множителей, а это легко сделать с помощью функ- ций GF, Table и TableForm пакета ^Mathematical f 16 = GF[2, <1, 0, 0, 1, 1]-] ; х = fl6[{0, 1}]; а = fl6[{0, I]-] ; G[x_] := х2 + х + а; G [0] Table[{i, G[xx] , <i, 0, 143] // TableForm || {0, 1, 0, 0}2
232 Глава 11. Системы на основе кодирования ---------------------------------------- 0 1 {0, 1, 0, 0}2 {0, 0, 1, 0}2 2 {1, 1, 1, 1}2 3 {1, 0, 1, 0}2 4 {1, o, 1, 0}2 5 {1, 1, 0, 0}2 6 {0, 1, 1, 1}2 7 {1, 0, 0, 1}2 8 {o, 1, 1, 1}2 9 {1, 1. 1, 1}2 10 {1, 1, 0, 0}2 11 {0, 0, 0, 1}2 12 {0, 0, 1, 0}2 13 {1, 0, 0, 1}2 14 {0, 0, 0, 1}2 Для нахождения обратных элементов 1/{х — a) (mod х2 + х + а) в формуле (11.1) используем пакет Algebra‘PolynomialExtendedGCD’ < < Algebra4PolynomialExtendedGCD* и функцию PolynomialExtendedGCD пакета “Mathematica”. Например, 1/(ж — а3) (mod х2 + х + а) можно найти так: X = . ; PolynomialExtendedGCD[x - a3, x2 н h X H и a] || {1, «О, 1, О, 1}2 + х{1, 1, 1, 1}2, <1, 1, 1, 1}2 Н С помощью таблицы логарифмов можно переписать эти коэффици- енты следующим образом: 0-1 + 1- а + 0-а2 + 1-а3 = а10, 1-1 + 1- ch + 1-Q!2 + 1-Q!3 = а6. Из (Л.8) следует, что (х — а3) • (а10 + а6х) + а6 • G(x) = 1, т.е. 1/(х — а3) = а10 + а6х. Это можно проверить с помощью функции PolynomialMod пакета “Mathematica”. Clear[х]; PolynomialMod[(х-a3) * (a10 + a6x) , x2 + x + a] II <1, 0, 0, 0}2
11.1. Введение в коды Гоппы 233 Таким способом выразим все обратные 1/(ж — а?), ш G GJ7’(24), в виде (д>) . (си) многочленов д$ + х. Clear [х] ; PolynomialExtendedGCD [х, х2 + х + а] Do [Print [PolynomialExtendedGCD [х - а1, х2 + х + а] ] , И, О, 14}] а, «0, 0, 1, 1}2 + х{0, 0, 1, 1}2, <0, 0, 1, 1}з Я а, {х{0 , 0, 1 > 1}з > {0, 0, 1, 1}2 я а, «0, 1, 0, 1}з + х{0, 1, 1, 0}2, <0, 1, 1, о}2 Я а, «0, 0, о, 1}з + х{1, 0, 1, 0}2, {1, 0, 1, 0}2 Я а, НО, I, 0, 1}з + х{1, 1, 1, 1}2, <1, 1, 1, 1}з я а, Н1, 0, 1, 0}2 + х{1, 1, 1, 1}2, <1, 1, 1, 1}2 я и, ио, 1, 1, 0}2 + х{0, 0, 0, 1}2, {0, 0, 0, 1}2 я а, ш, 0, 0, о}2 + х{1, 1, 1, 0}2, <1, 1, 1, 0}з я а, hi, 0, 1, 0}г + х{1, 0, 1, 1}2, {1, 0, 1, 1}г я и, «0, 1, 1, 0}г + х{1, 1, 1, 0}2, {1, 1, 1, 0}2 я а, ш, 0, 1, 1}г + х{1, 0, 1, 0}2, {1, 0, 1, 0}2 я а, «о, 1, 1, 1}2 + х{0, 0, 0, 1}2, {0, 0, 0, 1}г я а, Н1, 0, 1, 1}з + х{1, 1, 0, 0}2, {1, 1, 0, 0}з я а, «0, 0, 1, 1]-2 + х{0, 1, 1, 0}2, <0, 1, 1, 0}г я а, «0, 0, 0, 1}з + х{1, 0, 1, 1}2, {1, 0, 1, 1}г я а, «0, 1, 1, 1}з + х{1, 1, 0, 0}2, {1, 1, 0, 0}г я ( А Затем представим их в виде столбцов I I матрицы Н раз- \ 91 J J ( о10 \ мером 2 х 16. Отметим, что столбец I I, соответствующий 1/(ж —о3), располагается в 5-м столбце матрицы Н, поскольку первый столбец соответствует значению ш = 0, второй — значению ш = 1 и т.д. тг ( Q!14 О Q!10 Q!3 <^10 <^9 <^13 1 ofi a13 Ck11 Ck8 Ck11 ck14 ck3 ck8 \ у q,14 q,14 а13 o9 Ck6 Q;6 Qj3 Q7 qII oJ ofi Qj3 Q,12 Q,l3 Q,11 Q,12 J Теперь применим вычисленную ранее таблицу логарифмов поля GF(24). Определяющее соотношение в (11.1) можно переписать в виде = 0 (mod х2 + х + а), или, что эквивалентно, У^ c^gi^ + (У"' сшд^)х = О (mod х2 + х + а). ^<uGGF(24) K^^eGF(24) 7 К 7
234 Глава 11. Системы на основе кодирования Таким образом, получаем два линейных уравнения для с = (cu)weGF(24): = О « Еш6СР(24) = °- Эту пару уравнений можно эффективно записать в виде Н -сТ = От. Представление каждой степени а в виде двоичной линейной комбина- ции 1, а, а2 и а3 (или использование результатов работы функции PolynomialExtendedGCD напрямую) дает двоичную матрицу Н! разме- ром 8 х 16; /00000101101010004 0010101001010001 1000011011111101 1011100000111111 0001110111101011 0010110101001101 1111110111100110 \1100111010010010/ Таким образом, другим способом описания Г(ж2 4- х + а, GjF(24)) яв- ляется С = {се {0,1}16|Я' -сТ = 0т}. Нетрудно убедиться, что С — это двоичный линейный код длины 16, размерности 8 с минимальным расстоянием 5. Матрица Н, нуль-пространством которой является данный код С, называется проверочной матрицей кода С. Можно записать С = {с е {0,1 }п\Н' • сТ = 0т}. (И-З) Синдром полученного вектора г определяется как = Н • гт. Количество неприводимых многочленов степени t над полем приблизительно равно 2m’e/t (см. следствие В.18). Таким образом, на- угад выбранный многочлен степени t над полем GF(2m) будет неприво- димым с вероятностью 1/t. Поскольку существуют быстрые алгоритмы проверки неприводимости (см. [Вег168], гл. 6, или [Rabi80]), можно найти неприводимый многочлен степени t над полем GF(2m) так же, как и в алг. 9.3, выбирая случайный многочлен и проверяя неприводимость.
11.2. Криптосистема Мак-Элиса 235 11.2 Криптосистема Мак-Элиса Основываясь на теории кодов, исправляющих ошибки, Мак-Элис ([МсЕ178]) предложил следующую систему шифрования1. 11.2.1 Система □ Формирование системы 1) Каждый пользователь U выбирает подходящий код Гоппы длины пи = 2ти, исправляющий tu ошибок. Для этого пользователь U выби- рает случайный неприводимый многочлен ри(х) степени tu над полем GF(2mu] и находит порождающую матрицу Gu соответствующего кода Гоппы Г(ри(х), GF(2mu)). Это матрица размера ku х пц. 2) Пользователь U выбирает случайную невырожденную матрицу Su размером ки х ки и случайную матрицу перестановки2 Ри размером пи х пи, а затем вычисляет G*u = SuGuPu. (И-4) 3) Пользователь U объявляет GB и tu публичными, a Gu, Su и Ри хранит в секрете. □ Шифрование Предположим, что пользователь Алиса хочет послать сообщение Бо- бу. Она находит параметры G*B (размером квхпв) nte, объявленные Бо- бом публичными, и представляет свое сообщение в виде двоичной строки т длины кв- Затем Алиса выбирает случайный вектор е (модель ошиб- ки) длиной пд, в котором не более, чем £#, координат равны 1. В качестве полученного из т шифртекста Алиса посылает Бобу с = т • GB + е. (И-5) (Обычно говорят, что вес е не больше, чем ts, обозначая его через w(e) < ts, где значение весовой функции w равно количеству нену- левых координат вектора.) □ Дешифрование После получения с Боб с помощью секретной матрицы перестановки Рв вычисляет с-Р"1 (1=5) т-б^Че-Рв1 (=4) т-ЗвСвРвРв' + е = Мв)бв + е', хНа русском языке описание этой системы можно найти также в *[Слоэ83].— Прим, ред. 2Т.е. матрицу, у которой в каждом столбце и каждой строке — ровно по одной единице, а остальные элементы равны 0. — Прим, перев.
236 Глава 11. Системы на основе кодирования где е' = е • Р&1 — перестановка вектора е, а, значит, имеет вес не бо- лее С помощью алгоритма декодирования для кода Гоппы Г(ру(ж), GF(2mu)) Боб может эффективно декодировать с-Р^1. Он най- дет е' как ошибку и сможет восстановить тп • Sb- Умножение этого вы- ражения справа на матрицу S&1 (известную Бобу) дает первоначально пересылаемое сообщение m Е {0, l}fcB. 11.2.2 Обсуждение □ Резюме и предполагаемые параметры Введенную в предыдущем разделе криптосистему можно резюмиро- вать в следующей таблице. ПУБЛИЧНЫЕ СЕКРЕТНЫЕ СВОЙСТВО ФОРМАТ СООБЩЕНИЯ Алисы Бобу ШИФРОВАНИЕ ДЕШИФРОВАНИЕ Gy И tu ВСЕХ ПОЛЬЗОВАТЕЛЕЙ U, Gy ИМЕЕТ РАЗМЕРЫ кц X Пи Ри(х), Su И Ри КАЖДОГО ПОЛЬЗОВАТЕЛЯ U S^G^Pt/ — ПОРОЖДАЮЩАЯ МАТРИЦА КОДА ГОППЫ, ОПРЕДЕЛЯЕМОГО МНОГОЧЛЕНОМ ри(х) СТЕПЕНИ ty тп Е {0, l}fej3 с = тп • Gg + е ВЕС е НЕ БОЛЕЕ tB ВЫЧИСЛИТЬ с' = С - Рд 1 ДЕКОДИРОВАТЬ Р, чтобы найти mf = m- Sb ВЫЧИСЛИТЬ тп' • Sg1 = тп Таблица 11.1. Криптосистема Мак-Элиса. Смысл вектора ошибки е, введенного в формуле (11.5), разумеется, в том, чтобы лишить криптоаналитика возможности использовать при восстановлении тп по с исключение неизвестных методом Гаусса. Мак-Элис первоначально ([МсЕ178]) предложил брать тпд = 10 (то- гда пв = 1024) и tB = 50 (кв « 1024 - 50 х 10 = 524). □ Эвристика схемы Нетрудно угадать эвристику, стоящую за этой схемой. Возьмем доста- точно длинный двоичный линейный блочный код, который способен ис- правлять большое число, скажем, t, ошибок, и для которого существует
11.2. Криптосистема Мак-Элиса 237 эффективный алгоритм декодирования. Если код выбирается из доста- точно большого класса кодов, то угадать, какой именно код был выбран, практически невозможно. Пусть п — длина кода, а к — его размерность. Преобразуем порождающую матрицу до такой степени, чтобы получив- шаяся в результате матрица выглядела как случайная к х п матрица ранга к. Сложность декодирования случайно порожденного кода с таки- ми параметрами должна быть высокой. Сложность некоторых алгорит- мов декодирования будет обсуждена в следующем разделе. В [ВегМТ77] показано, что общая задача декодирования линейных кодов, т.е. зада- ча поиска ближайшего кодового слова для произвольного слова длины п, является N Р-полной. Мы не будем здесь объяснять, что конкретно означает это понятие. Заинтересованный читатель может обратиться к [GarJ79]. Здесь нам будет достаточно знать об этой характеризации лишь то, что не известно ни одного алгоритма, который находил бы по произ- вольному слову ближайшее к нему кодовое слово и работал за время, полиномиально зависящее от длины входа. Более того, если такой алгоритм удастся найти, то его можно будет адаптировать для решения большого класса3 эквивалентных по сложно- сти задач. □ Отсутствие режима подписывания Функция шифрования в криптосистеме Мак-Элиса отображает дво- ичные последовательности длины к в двоичные последовательности дли- ны п. Это отображение не является сюръективным. Действительно, при предполагаемых параметрах количество векторов длины п, расположен- ных на расстоянии < 50 от кодовых слов, равно что составляет весьма незначительную долю от всех слов длины 1024. Таким образом, (секретная) функция Su, упомянутая в свойстве ПК4 из разд. 7.1.1, не определена на большинстве слов из {0,1}п. Следовательно, криптосистему Мак-Элиса нельзя использовать в режиме подписывания сообщений. См. также табл. 7.2. 11.2.3 Аспекты безопасности Теперь обсудим безопасность криптосистемы Мак-Элиса, анализируя четыре возможных способа атаки, при условии использования значений параметров, предложенных Мак-Элисом. (Большинство известных к на- стоящему моменту сильных атак есть в [CanS98].) п = 1024; к = 524; t = 50; 3Вообще-то, всех.— Прим. ред.
238 Глава 11. Системы на основе кодирования □ Угадывание Sb и Рв Криптоаналитик может попытаться угадать Sb и Рв для того, чтобы найти Gb по используя равенство (11.4). Когда матрица Gb ста- нет известна криптоаналитику, ему не составит труда найти многочлен ри(х), определяющий код Гоппы Г(ри(х), GF(2mu)) с порождающей мат- рицей Gb- Затем, действуя по алгоритму дешифрования Боба, он сможет определить посланное сообщение тп. Однако количество обратимых матриц Sb к матриц перестановок Рв измеряется астрономическими числами (n£rj(2fc —2г) и, соответственно, п!). Из-за этого вероятность успеха при такой атаке меньше, чем при попытке угадать вектор тп напрямую. □ Сравнение со всеми кодовыми словами Криптоаналитик может сравнить полученный вектор г со всеми ко- довыми словами кода, порожденного G*B. Пусть с — ближайшее кодовое слово. Оно находится на расстоянии < t от г (по правилу шифрования (11.5)). Такое слово единственно, поскольку минимальное расстояние ко- да не менее 2t+l. Кроме того, из формулы (11.5) следует, что с = Исключая неизвестные методом Гаусса, из с можно восстановить тп. Этот подход требует следующего числа сравнений. N[2k, 5] II 5.4918Х10157 Пример 11.2 (часть 1) Рассмотрим двоичный код длины п = 7 и размерности к — 4, по- рожденный матрицей ( 10001104 0 10 0 10 1 0 0 1 0 0 1 1 ; 0001111/ и предположим, что г = (1,1,1,0,1,0,1) — перехваченный шифртекст, представляющий собой сумму кодового слова с и вектора ошибок с весом не более, чем 1 (так как t = 1). Используя функцию Mod, сравним г с двумя (вместо 2к = 16) кодо- выми словами: х = <1, 1, 1, 0, 1, 0, 1}; il = <1, 1, 1, О; с = Mod[il * G, 2] Mod [г - с, 2]
11.2. Криптосистема Мак-Элиса 239 || {1, 1, 1, 1, 1, 1, 1} || {О, О, О, 1, О, 1, 0} Таким образом, c=ix-G лежит на расстоянии > 2 от г, а это слишком далеко. 12 = {1, О, 1, О}; с = Mod[i2 * G, 2] Mod [г - с, 2] || {1, 0, 1, О, 1, 0, 1} || {0, 1, О, О, О, 0, 0} Теперь c=i2-G лежит на расстоянии 1 от г, и можно заключить, что был передан вектор (1,0,1,0). □ Декодирование по синдрому Криптоаналитик может вычислить проверочную матрицу Нв из урав- нения HB-G*B = О (см. (11.3)). Ее ранг равен п—k. Затем можно породить все векторы ошибок е с весом не более, чем t, вычислить для каждого из них синдром Нв • ет и поместить их в таблицу. Для перехваченного вектора г сперва вычисляется синдром sT = = Нв -гт. Затем по таблице можно найти соответствующий вектор оши- бок е. Вычитая е из г, можно получить кодовое слово с = т • G^ (см. (11.5)). Исключая неизвестные методом Гаусса, из с можно восстановить переданное сообщение т. Объем работы, которую необходимо выполнить при проведении этой атаки — Хц£о (7) (столько строк будет в построенной таблице): ’50 52 Binomial _i=0 [n, i] , 5 II 3.3623X1085 Пример 11.2 (часть 2) Проверочная матрица кода, введенного в примере 11.2, задается так: (110 10 1 0 11 MatrixForm [Н] 1 1 0 0 \ 10 10; 10 0 1/ (1101 1 о о \ 1 0 1 1 0 1 о ) 0111001/
240 Глава 11. Системы на основе кодирования Это можно проверить с помощью функций Transpose и MatrixForm па- кета “Mathematical U = Mod[G * Traspose[Н], 2]; MatrixForm[Н] ( 0 0 0 \ ООО ООО/ Затем породим все векторы ошибки е весом < 1 и вычислим их син- дромы Н& • е . Поместим все это в таблицу. Кроме функций Mod, Do и Print пакета “Mathematica”, применим функцию ReplacePart, которая заменяет i-ю компоненту вектора е заданной величиной (здесь — ее дополнением). е = {0, 0, 0, 0, 0, 0, 0}; Print[е, " ", Mod[Н * е, 2]]; Do[ {er = ReplacePart[е, Mod[е[i]] + 1, 2] , i], Print[er, " ", Mod[H * er, 2]]}, {i, 1, 7}] {0, 0, 0, 0, 0, 0, 0} {1, 0, 0, 0, 0, 0, 0} {0, 1, 0, 0, 0, 0, 0} {0, 0, 1, 0, 0, 0, 0} {0, 0, 0, 1, 0, 0, 0} {0, 0, 0, 0, 1, 0, 0} {0, 0, 0, 0, 0, 1, 0} {0, 0, 0, 0, 0, 0, 1} {0, 0, 0} {1, 1, 0} {1, 0, 1} {0, 1, 1} {1, 1, 1} {1, 0, 0} {0, 1, 0} {0, 0, 1} С помощью данной таблицы легко найти кодовое слово на расстоя- нии < 1 от г. г = {1, 1, 1, 0, 1, 0, 11; ModEH ♦ г, 2] II {1, 0, 1} Это синдром, соответствующий вектору е = {1,0,0,0,0,0,0}, зна- чит, ближайшее кодовое слово определяется как е = {0, 1, 0, 0, 0, О, О}; Mod[г - е, 2] || {1, О, 1, О, 1, О, 1}
11.2. Криптосистема Мак-Элиса 241 Поскольку порождающая матрица G в этом примере имеет вид (Д|Р), можно извлечь переданную информацию тп из четырех первых компонент вектора с: т = {1,0,1,0}. □ Угадывание к правильных и независимых компонент Криптоаналитик наугад выбирает к позиций и надеется, что в них нет ошибки, т.е. он надеется на то, что в этих компонентах вектора е оказа- лись нули. Если у сужения матрицы на эти к позиций по-прежнему ранг равен к, то можно найти кандидата т' на роль информационного вектора т методом Гаусса. Если ранг меньше к, то высока вероятность того, что он близок к к (см. задачу 11.2). Тогда метод Гаусса приведет либо к небольшому числу вариантов для либо вообще к отсутствию решения. Для каждого возможного кандидата т' вычисляется т' • G% и про- веряется, лежит ли этот вектор на расстоянии < t от перехваченного вектора г. Если это так, то найден правильный вектор т. Вероятность того, что к позиций правильны, — около (1 — t/n)k. Ал- горитм Гаусса выполняется за к3 шагов. Таким образом, средняя слож- ность этого метода атаки N [к3 * (1 - t/n)-k, 5] II 3.5504Х1019 Хотя эта атака и наиболее эффективная среди всех, она все равно неосуществима. Пример 11.2 (часть 3) Угадав, что компоненты 2, 4, 5 и 7 свободны от ошибок в примере 11.2, применим функции Transpose и MatrixForm пакета “Mathematica” для того, чтобы получить сужение G' порождающей матрицы G на выбранные компоненты и сужение г_' перехваченного вектора г из при- мера 11.2 на выбранные компоненты. ( 1 0 0 0 1 1 0 \ 0 10 0 10 1 1 G = 0 0 10 0 1 1 ’ k 0 0 0 111 1 / Guess <2, 4, 5, 7} RestrG Transpose[G] ♦ [[Guess]] ; MatrixForm [Transpose [RestrG] ] II {2, 4, 5, 7}
242 Глава 11. Системы на основе кодирования / О О 1 0 \ 10 11] 0 0 0 11 \ О 1 1 1 / г = <1, 1, 1, О, 1, О, 1}; rRestr = г [[Guess]] || <1, 0, 1, 1} Применим функции LinearSolve, NullSpace и Transpose пакета “Mathematica”, чтобы увидеть, имеет ли уравнение решение. LinearSolve[RestrG, rRestr, Modulus -> 2] NullSpace[RestrG, Modulus -> 2] II {0, 1, 0, 0} II o Ясно, что сужение матрицы G не вырождено. Решение (0,1,0,0) приводит к кодовому слову на расстоянии > 2 от г. ml = {0, 1, О, 0}; Mod[г - ml * G, 2] || {1, 0, 1, О, 0, 0, 0} Попробуем угадать еще раз. Guess = <1, 3, 6, 7} RestrG = Transposed] [[Guess]]; MatrixForm[Transpose[RestrG]] / i ° i ° \ 0 0 0 11 0 1111 \ 0 0 1 1 / r = <1, 1, 1, 0, 1, 0, I}; rRestr = r[[Guess]] II <1, 1, 0, 1} LinearSolve[RestrG, rRestr, Modulus -> 2] NullSpace[RestrG, Modulus -> 2] II <1, 0, 1, 0} II О
11.2. Криптосистема Мак-Элиса 243 Теперь решение (1,0,1,0) приводит к кодовому слову на расстоянии < 1 от г. m = {1, 0, 1, О}; Mod [г - m * G, 2] || {0, 1, 0, О, О, О, 0} Можно заключить, что был передан вектор (1,0,1,0). Чтобы реализовать угадывание в “Mathematica”, необходимо загру- зить пакет DiscreteMath(Combinatorica‘ << DiscreteMath<Combinatorica< после этого возможно использование функции RandomKSubset пакета “Mathematica”. RandomKSubset[{1, 2, 3, 4, 5, 6, 7}, 4] II {2, 3, 4, 6} □ Многократные шифрования одного сообщения Небезопасно шифровать одно и то же сообщение несколько раз с по- мощью одной и той же матрицы G*B., Чтобы увидеть это, рассмотрим два шифрования сообщения т, скажем г = т • G*B + ей rf = m • GB + е' (см.(11.5)). Можно быть уверенным, что в тех позициях, где г и г' не совпадают, либо в е, либо в е' стоят 1. И можно быть почти уверенным, что те позиции, в которых г и г’ совпадают, не содержат ошибок. Более точно, если векторы ошибки е и е' выбраны случайно, как это и должно быть, то в среднем возникают следующие значения (®г 1 ) число компонент (0,0) (0,1) или (1,0) (1,1) (п — t)2/п 2t(n — t)/n t2 /п Например, при выборе параметров п = 1024 и t = 50 получаем, что е = d = 1 в среднем в 502/1024 ~ 2.44 компонентах. Также в среднем в п = 1024; t = 50; N[((n - t)2 + t2)/n, 3] II 929 компонентах гиг' совпадают. Вероятно, что не более трех из них иска- жены. Удаляя любые t2 /п элементов из множества компонент, в которых г и г' совпадают, можно с высокой степенью уверенности считать, что на
244 Глава 11. Системы иа основе кодирования оставшемся множестве компонент ошибок нет, и сужение матрицы Gp на это множество имеет ранг к (см. задачу 11.2). Тогда восстановление m по г производится методом Гаусса. Когда одно сообщение шифруется более двух раз, взлом системы еще более облегчается. 11.2.4 Маленький пример системы Мак-Элиса Пример 11.1 (часть 2) У кода Гоппы Г(ж2 + х + а, (7Г’(24)) из примера 11.1 порождающая матрица G может быть вычислена, исходя из проверочной матрицы, с использованием функции NullSpace пакета “Mathematica”. /00000101 10101000\ 0010101001010001 1000011011111101 1011100000111111 Н 0001110111101011 ; 0010110101001101 1111110111100110 \1100111010010010/ G = NullSpace[Н, Modulus -> 2]; MatrixForm[G] /1 1 1 100000000000 1 X 1010110100000010 1001111100000100 0011110000001000 0111101000010000 - 0110001100100000 0111010101000000 \ 1 0 1 0 0 1 1010000000^ Порождающую матрицу G кода Г(г2+®+а!, <7Г’(24)) можно следую- щим образом превратить в G* = S'G'P, где S — обратимая матрица, а Р — матрица перестановки. /11111111Х 01111111 00111111 00011111 00001111 ’ 00000111 ООО '0 0011 \ 0 0 0 0 0 0 0 1 /
11.2. Криптосистема Мак-Элиса 245 /10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \ 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 ООО 0 1 0 0 0 0 0 0 0 0 0 0 0 ООО 0 0 1 0 0 0 0 0 0 0 0 0 0 ООО 1 0 0 0 0 0 0 0 0 0 0 0 0 ООО 0 0 0 0 1 0 0 0 0 0 0 0 0 ООО 0 0 0 0 0 1 0 0 0 0 0 0 0 p = * ООО 0 0 0 0 0 0 1 0 0 0 0 0 0 9 ООО 0 0 0 1 0 0 0 0 0 0 0 0 0 ООО 0 0 0 0 0 0 0 0 1 0 0 0 0 ООО 0 0 0 0 0 0 0 0 0 1 0 0 0 ООО 0 0 0 0 0 0 0 0 0 0 1 0 0 ООО 0 0 0 0 0 0 0 0 0 0 0 1 0 ООО 0 0 0 0 0 0 0 0 0 0 0 0 1 о о о 0 0 0 0 0 0 0 1 0 0 0 0 0 / Gstar = Mod[S ♦ G * р, 2] 9 MatrixForm [Gstar] /01011010011111114 1011001001011111 0110011011011110 1111101101011100 1010011101011000 1100101001010000 101010111 1’ 000000 \1101000101000000/ Кодовое слово, соответствующее информационной последователь- ности (1,1,0,0,1,0,0,1), имеет вид m = {1, 1, О, О, 1, О, О, 1}; err = {О, О, О, О, 1, О, О, О, 1, О, О, О, О, О, О, 0}; cw = Mod[m * Gstar + err, 2] || {1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, О, О, 0} Заметим, что ошибки были сделаны в 5-й и 9-й компонентах. У перехватчика нет эффективного алгоритма для нахождения по слову cw информационного вектора тп. Легальный получатель сперва вычисляет cd = cw ♦ Р-1 с помощью функции Inverse пакета “Mathematica”. PInv = Inverse [Р, Modulus -> 2]; cd = cw * PInv || {1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1}
246 Глава 11. Системы на основе кодирования Затем этот вектор нужно декодировать с помощью алгоритма де- кодирования кода Гоппы Г(ж2 + х + a, GF(24)). Этот алгоритм здесь не обсуждается. В результате получается вектор т' = (1,0,0,0,1,1,1,0). Это можно проверить, вычислив т' • G и сравнив с cd. Разность err' этих векторов имеет вес 2 и совпадает с err • Р-1. mpr = <1, О, О, О, 1, 1, 1, 0}; errpr = Mod[mpr * G - cd, 2] err * Plnv || <0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0} || {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0} Чтобы найти m, легальный получатель вычисляет т! • S'-1. mpr ={1, О, О, О, 1, 1, 1, 0}; InvS = Inverse[S, Modulus -> 2]; Mod[mpr * InvS, 2] || {1, 1, 0, 0, 1, 0, 0, 1} Это и в самом деле исходное сообщение. 11.3 Другая техника декодирования линейных кодов В прошлом было приложено много усилий в поиске алгоритмов де- кодирования для произвольных линейных кодов. Криптосистема Мак- Элиса только интенсифицировала эти поиски. Большинство из этих ал- горитмов относятся к тому типу, который выше уже обсуждался: найти к компонент, на которых сужение порождающей матрицы сохраняет ранг и полученный вектор не содержит ошибок. Такая техника называется декодированием по информационному множеству. Здесь мы опишем технику, введенную ван Тилбургом [vTbu88] (см. также [LeeB88]). Алгоритм 11.2 (техника обмена битов местами) Пусть G — порождающая матрица двоичного кода С длины п, размерности к, с минимальным расстоянием d. Пусть г = с+е — полученный вектор, с Е С (скажем, с = m-G), вес вектора е не более t, a 2t + 1 < d. Шаг 1: Применим к G подходящее элементарное преобразо- вание по строкам и подходящую перестановку столбцов, что- бы привести G к так называемому стандартному виду, т.е.
11.3. Другая техника декодирования 247 S • G • Р = (Д|Л). Положим г' = г • Р и запишем Р = (г*, Г0, где длина равна к. Заметим, что г = m • G • Р + е • Р = = m S'”1 • (Ik |Л) + e', где e и P — одного веса. Шаг 2: Положим Р = Гд • (Д|Л). Первые к компонент векторов Р и г' одинаковы. Шаг 3: Если с' и Р различаются не более, чем в t компонентах, то заключаем, что в первых t компонентах ошибок нет. Вычис- ляем m из равенства Р = m • S'”1 методом Гаусса и завершаем работу. Шаг 4: Если Р и Р различаются более, чем в t компонентах, то выбираем случайный номер строки г, 1 < i < fc, и случайный номер столбца J, 1 < j < п — к, так, что Aij р=- 0. Строим из (Ik|A) новую матрицу G, меняя местами г-й и столбцы (г-й столбец в Д меняется местами с j-m столбцом в Л). Возвра- щаемся к шагу 1, но теперь при приведении матрицы к стан- дартному виду используем лишь элементарные преобразования строк с помощью г-й строки. Продемонстрируем один раунд работы приведенного выше алгорит- ма. Продолжим пример 11.2. Пример 11.2 (часть 4) /1000 1 1 о \ 0100101] G 0 0 1 0 0 1 11’ \000 1 1 1 1/ MatrixForm [G] г = {1, 1, 1, 0, 1, 0, 1} /100 0 1 1 04 О 1 0 0 1 0 1 I 0 0 1 0 0 1 11 \ 0 0 0 1 1 1 1 / || {1, 1, 1, 0, 1, 0, 1} Матрица G уже имеет стандартный вид. Также видно, что кодо- вое слово Р, построенное по четырем первым компонентам г, находит- ся на расстоянии 2 от г. rl = Таке[г, 4] сс = Mod[rl * G, 2] Mod [г - сс, 2] II {1, 1, 1, Ol- li {1, 1, 1, 0, 0, 0, Ol- li {0, 0, 0, 0, 1, 0, 1}
248 Глава 11. Системы на основе кодирования Для обмена местами мы наугад выберем из столбцов 5 — 7 матрицы G ненулевой элемент. Пусть это (72,5 • Поменяем местами 2-й и 5-й столбцы матрицы G, используя функцию: ColumnSwap [В_, i_, j_J := Module[{U, V}, U = Transpose[В]; V = U[[i]]; U[[i]] = U[[j]]; U[[j]] = V; Transpose[U]] Gl = ColumnSwap[G, 2, 5]; MatrixForm[Gl] /1 1 000 1 04 [0100101 0 0 1 0 0 1 1 \0101011/ Приведем эту матрицу к стандартному виду с помощью функции RowReduce пакета “Mathematica”. G2 = RowReduce[Gl, Modulus -> 2]; MatrixForm[G2] /10001 1 14 0 10 0 10 1 0 0 1 0 0 1 1 \000 1 1 1 0/ Для того, чтобы проанализировать сложность алгоритма побитового обмена, обозначим через Pr(Z + и\Г) вероятность того, что ровно I + и из первых к позиций вектора е содержат ошибки после перестановки при условии, что до перестановки таких позиций было ровно I (и = —1,0,1). Пусть а = min{t, к}. Тогда выполняются следующие очевидные соот- ношения: .их Z п — к — t + I Pr (I - 1 Z = -Г X -----Т---- к п — к (11-6) _ ' к — I t — I Pr(Z + 1 Z) = —j— х ------ к п — к если 1 < I < а, если 1 < Z < а — 1, (И-7) если 1 < Z < а — 1, если Z = а. (П-8) Пример 11.3 (часть 1) Рассмотрим (двоичный) код с параметрами п = 23, к = 12 и t = = 3. Тогда а = min{fc,t} = 3. Значения Рг{1 — 1|Z) и Рг{1 + 1|Z) мож- но вычислить (и напечатать) по формулам (11.6) и (11.7) с помощью функций Min, Do и Print пакета “Mathematica”.
11.3. Другая техника декодирования 249 п = 23; к = 12; t =3; а = Min[к, t]; PrDoun[l_] := 1 * (n - к - t + 1) / (к * (n - к)); PrUp[l_J := (к - 1) * (t - 1) / (к * (n - к)); Do [Print["Pr(", i - 1, "I", i, PrDown[i]], {i, a, 1, -I}]; Print ["and"] ; Do [Print["Pr(", i + 1, "I", i, PrUp[i]], {i, a - 1, 1, -1}] Pr(2|3)=| Pr (112) = Pr(l|2)=^ and Pr(3|2)=^ Pr(2|l)=| Заметим, что вероятность удачного обмена тем меньше, чем мень- ше величина I. Лемма 11.3 Пусть через Ni, 1 < I < а, обозначено среднее число обменов, необходимых для того, чтобы от состояния с I ошибками перей- ти к состоянию с I — 1 ошибками. Числа Ni можно вычислять рекурсивно по формулам а Рг(а — 1|а) 1 — Рг(а|а) ’ 1 + Pr(Z|Z - 1)М N‘-' = Pr(Z — 2|Z — 1) • (П-9) (11.10) Доказательство. Первое равенство в (11.9) непосредственно следует из определения Рг(а — 1|а). Второе равенство следует из (11.8). Для того чтобы показать (11.10), заметим, что в состоянии I — 1 есть три возможных пути, по которым может пойти алгоритм. i) С вероятностью Рг(/ — 2|Z — 1) он за один шаг перейдет в состояние 1 — 2. ii) С вероятностью Pr(Z — 1|Z — 1) он останется в состоянии I — 1, тогда алгоритм достигнет состояния I — 2 в среднем за 1 + 7V/-1 шагов. iii) С вероятностью Pr(Z|Z — 1) он перейдет в состояние I, тогда алго- ритм достигнет состояния I — 2 в среднем за 1 + 7V/_i + Ni шагов.
250 Глава 11. Системы на основе кодирования Описанное доказывает следующее рекуррентное соотношение = Pra-2p-i)-i+Pra-i|^i).(i+^_1)+Prai/-i)-(i+^1+M), которое сводится к равенству (11.10), поскольку Pr(Z — 2|Z — 1) = 1 — —Pr(Z — 1|Z — 1) — Pr(Z|Z — 1). Заметим, что при вычислении величин Nt роль играют лишь вероят- ности вида Рг(г — 1|г). Пример 11.3 (часть 2) Продолжая пример 11.3, мы видим, что значения Ni можно рекур- сивно вычислить по формулам (11.9) и (11.10). Numb[а] = 1 / PrDown[а]; Do[Numb[i-l] = (1 + PrUp[i - 1] * Numb[i]) / PrDown[i - 1], {i, a, 2, -1>] Do [Print["Numb(", i, Numb[i]J, <i, a, 1, -1}] Numb(3)=4 Numb (2)=^ Numb(l)=if^ *xO Теорема 11.4 Среднее количество обменов в алгоритме побитового обмена при нахождении к компонент без ошибок равно (к\ /п—к\ Np (н.п) Доказательство. Среднее число шагов, требуемых для достижения состояния 0 из состояния j, 1 < j < а, можно подсчитать как среднее число шагов, требуемых для достижения состояния j — 1 из у, плюс сред- нее число шагов, требуемых для достижения j — 2 из j — 1, и т.д. Этим объясняется внутренняя сумма в (11.11): Nj + Nj—i + ... + N\. Вероятность того, что процесс начнется с состояния j, равна вероят- ности того, что в выбранных наугад к компонентах содержится j оши- бок. Эта вероятность равна доле тех Z-подмножеств п-элементного мно- жества, которые имеют j-элементное пересечение с данным fc-подмно- жеством (и, соответственно, (п — Д-элементное пересечение с его (п — к)- элементным дополнением). Таким образом, эта вероятность равна
11.4. Схема Нидеррайтера 251 Осталось перемножить два описанных выше числа и найти сумму таких произведений для всех j. Пример 11.3 (часть 3) Из теоремы 11.4 следует, что среднее количество обменов, необхо- димых для кода с параметрами п = 23, к = 12 и t = 3 (как было опреде- лено в примере 11.3^ при поиске 12 компонент без ошибок, вычисляется так: NS = (Binomial[k, j] * Binomial[n - к, t - j] / j=i j Binomial[n, t] ) 52 NumbEU; 1=1 N[NS, 5] II 37.455 Приведенный выше алгоритм побитового обмена значительно лучше (и асимптотически тоже) методов, описанных в разд. 11.2.3. Наиболее сильные результаты в этой области можно найти в [ВаКТ99]. 11.4 Схема Нидеррайтера Схема Нидеррайтера [Nied86] — это видоизменение криптосистемы Мак-Элиса. В ней та же идея применяется к проверочной матрице ли- нейного кода. Резюме этой схемы содержится в табл. 11.2 ниже. Итак, вновь у нас есть код Гоппы Г(рц(а?), GF(2m)) (см. (11.1)), кото- рый определяется известным пользователю U многочленом ри степени tu над полем GF(2m). Пусть Ни — проверочная матрица этого кода. Ее размеры — (пи — ки) х пи, где ки — размерность кода. Код Г(рц(а?), GF(2rn)) исправляет tu ошибок, значит, у каждого век- тора и веса < tu — ровно один синдром Ни • и- Существующий алгоритм декодирования для кодов Гоппы эффективно находит и по его синдрому. Как и в системе Мак-Элиса, нужно спрятать структуру кода Гоппы, содержащуюся в матрице Ни- Это произойдет, если вычислить H^Su-Hu-Pu, (И-12) где Su — обратимая (пи — ки} х (пи — &и)-матрица, а Ри — матрица перестановки порядка пи (см. (11.4)). Матрица Ну объявляется публичной вместе с числом tu- Если Алиса хочет послать сообщение Бобу, она находит параметры Ну и tp, объявленные Бобом публичными, и представляет свое сообще- ние в виде двоичного вектора (столбца) тп веса < tu- Она вычисляет v = Ну • тп. Это и есть шифртекст, который Алиса посылает Бобу.
252 Глава 11. Системы на основе кодирования Боб сначала умножает v на S^1 слева. Он получает v' = = = Нн(Рнтп) по формуле (11.12). Поскольку вектор Рнт — это переста- новка компонент вектора т, его вес < ts, значит, Боб, применив алго- ритм для декодирования своего кода Гоппы, может эффективно найти т! = Рят. Для восстановления тп осталось умножить тп1 на Р^1 слева. ПУБЛИЧНЫЕ СЕКРЕТНЫЕ СВОЙСТВО ФОРМАТ СООБЩЕНИЯ Алисы Бобу ШИФРОВАНИЕ ДЕШИФРОВАНИЕ Ну И ty ВСЕХ ПОЛЬЗОВАТЕЛЕЙ <7, Ну ИМЕЕТ РАЗМЕР (п<7 — ку) X Пи Pu(x), Sy И Ру КАЖДОГО ПОЛЬЗОВАТЕЛЯ U Sy^HyPu — ПРОВЕРОЧНАЯ МАТРИЦА КОДА Гоппы, ОПРЕДЕЛЯЕМОГО МНОГОЧЛЕНОМ ру(х) СТЕПЕНИ ty тп G {0,1}Пв, вес ТП < tn v = Hq • тп вычислить v' = Sy1 с; ИСПОЛЬЗУЯ АЛГОРИТМ ДЕКОДИРОВАНИЯ, найти такой т', что Hq -тп! = Р; вычислить Рд1 • тп! = тп Таблица 11.2. Криптосистема Нидеррайтера. 11.5 Задачи Задача 11.1. Какова вероятность того, что случайная к х п матрица имеет ранг к? Какова вероятность того, что fc + l столбцов в этой матрице имеют ранг к? Вычислите эти две вероятности для п = 16 и к = 5. Задача 11.2. Пусть С — линейный код длины п = 23 и размерности к = = 12. Допустим, что сделано не более трех ошибок. Какова сложность различ- ных атак, описанных в разд. 11.2.3? Задача 11.3м. Пусть С — линейный код длины 11 и размерности 6. До- пустим, что сделано две ошибки. Сколько в среднем нужно сделать обменов, следуя алг. 11.2, чтобы получить 6 компонент без ошибок?
Глава 12 Системы, основанные на задаче о рюкзаке 12.1 Рюкзачная система 12.1.1 Задача о рюкзаке В [МегН78] Меркли и Хеллман предложили криптосистему с публич- ными ключами, основанную на сложности решения задачи о рюкзаке. С тех пор были предложены и другие криптосистемы, основанные на этой задаче, большинство из которых оказались небезопасны. Исключе- нием пока является схема Кора-Райвеста, описанная в [ChoR85], но в [Vaud98] показано, что ее параметры, предложенные в [ChoR85], также не гарантируют безопасности. Определение 12.1 Пусть 01,02, ...,ап — последовательность п натуральных чисел, и S — еще одно натуральное число. Вопрос о том, имеет ли уравнение 37101 + Х2Л2 + ... + хпап = S (12.1) такое решение, в котором все — из {0,1}, называется задачей об укладке рюкзака или просто задачей о рюкзаке. Отметим, что в задаче о рюкзаке не требуется искать конкретного решения уравнения (12.1), вопрос лишь в том, существует ли решение. Поиск {0,1}-решения, разумеется, не менее сложен, чем вопрос о суще- ствовании решения. При больших п задача о рюкзаке трудна для решения. На самом деле можно показать, что эта задача NP-полна (см. [GarJ79] или краткое обсуждение в разд. 11.2.2). Для некоторых последовательностей {af}”=1 нетрудно найти {0,1}- решение уравнения (12.1) или, соответственно, показать, что такого ре- шения не существует. Например, для последовательности = 2*”1, 1 < г < п, уравнение (12.1) будет иметь решение тогда и только тогда, когда 0 < S < 2П — 1. В этом случае решение легко находится. Есть более общий класс последовательностей для которых уравнение (12.1) легко решается. Это класс так называемых сверхвоз- растающих последовательностей.
254 Глава 12. Системы, основанные на рюкзаке Последовательность {aj}”=1 называется сверхвозрастающей, если для всех k, 1 < к < п, —^к—1 1 аг < ак’ (12.2) Алг. 12.1 решает задачу о рюкзаке для сверхвозрастающих последо- вательностей. Он находит решение уравнения (12.1) для каждой правой части S, для которой есть решение. Идея алгоритма очень про- ста. Из У^",1 ai < следует, что в решении Жух — 1 Теперь вычтем хпап из S и тем же способом найдем xn-i. Таким образом, получаем рекурсивно для к = п — 1,п — 2,..., 1 %к = 1 <=> (S - T2i=k+iXia^ ~ ак‘ Если в конце оказалось, что S — У)^_1 х^сц = 0, то решение (12.1) найдено, в противном случае уравнение (12.1) решения не имеет. Алгоритм 12.1 (решение задачи о рюкзаке для сверхвозраста- ющих последовательностей) input {«г}^=1 — сверхвозрастающая последовательность натуральных чисел, S — целое число; initialize к = п; while к > 1 do begin if S > ak then Xk = 1 else Xk = 0; put S = S — Xk • ak; put к = к — 1 end if S = 0 then print {жх}”=1 else print “решения нет”. Пример 12.1 (часть 1) Рассмотрим сверхвозрастающую последовательность = {22, 89,345,987,4567,45678} и правую часть S = 5665. Чтобы увидеть, име- ет ли решение уравнение (12.1), применим алг. 12.1. Поскольку S < ае, имеем х$ = 0. Затем, видя, что S > а$, полу- чаем а?5 = 1. Вычитаем из S и получаем 1098, видим, что новое значение S удовлетворяет неравенству з > а^, значит, жд = 1 и т.д. Окончательным решением будет последовательность {1,1,0,1,1,0}. Ниже тот же процесс записан в пакете “Mathematical При этом используются функции Length, While, If и Join. Решение {жг}^ форми- руется в результате последовательного присоединения каждого вновр найденного значения Xi к множеству {ж<+1, ...,Жб}, г = 6, 5,1.
12.1. Рюкзачная система 255 KnapsackForSuperlncreasingSequence[a_List, S_] Module[{п, x, X, T}, n = Length [a] ; X = {}; T = S; While [n > 1, If [T > a[[n]], x = 1, x = 0]; T = T - x * a[[n]] ; X = Join[{x}, X]; n = n - 1]; If[T != 0, Print ["No solution"], X]] a = {22, 89, 345, 987, 4567, 45678}; S = 5665; X = KnapsackForSuperlncreasingSequence[a, S] || {1, 1, 0, 1, 1, 0} В самом деле X * a II 5665 12.1.2 Рюкзачная система □ Формирование рюкзачной системы Рюкзачная система, предложенная в [МегН78], основана на том, что задача о рюкзаке решается сложно, а та же задача для сверхвозрастаю- щих последовательностей допускает легкое решение. Каждый пользователь U создает сверхвозрастающую последователь- ность длины пи- Затем U выбирает такие целые числа Wu и Nu, что Nu > XX <12-3) и НОДСЖслМ/) = 1. (12.4) Далее U находит числа ui = (И7^ " ui) mod ТУц, 1 < i < Пу, (12.5) и объявляет последовательность публичным ключом. Пользователь U вычисляет значение И7^1 mod Nu, которое окажется полезным ему при дешифровании. Число И7^1 mod Nu можно получить с помощью расширен- ного алгоритма Эвклида (алг. А.8). Действительно, поскольку НОД(И7[/, Nu) = 1, этот алгоритм дает такие X и У, что 1 = X • Wfj~|- +У • Nu- Из этого следует, что X • Wu = 1 (mod Nu), т.е. X = Wj"1.
256 Глава 12. Системы, основанные на рюкзаке Каждый пользователь хранит в секрете сверхвозрастающую после- довательность {щ }’*У1, а также числа Wu, (И/г)-1 и Ny. Пример 12.1 (часть 2) Продолжим работу с параметрами из примера 12.1. Пусть Боб вы- брал = {22,89,345,987,4567,45678} в качестве своей сверхвоз- растающей последовательности. После этого он выбирает число Nb = = 56789, удовлетворяющее условию Nb > и взаимно про- стое с ним число Wb = 12345. Затем он вычисляет b\ = (Wb • • bi) mod Nb- Здесь это выполнено с применением функции Mod пакета “Mathematica”. Чтобы проверить приведенное выше условие, требуется функция GCD. Ь = <22, 89, 345, 987, 4567, 45678}; WB = 12345; NB = 56789; 6 £ b[[i]] < NB i=l GCD[WB, NB] == 1 bb = Mod[WB ♦ b, NB] II True II True || <44434, 19714, 56639, 31669, 44927, 36929} Таким образом, {&<}?=1 = {44434,19714,56639,31669,44927,36929} - это публичный ключ. Решение задачи о рюкзаке представляет некоторую сложность да- же для этого маленького числа пв (попытайтесь сделать это для чис- ла 101077/ Число W&1 mod Nb можно найти с помощью функций Exten- dedGCD и Mod пакета ‘Mathematica”. WB = 12345; NB = 56789; Mod[ExtendedGCD[WB, NB], NB] || <1, <39750, 3704}} Из этого следует, что W^1 = 39750. Действительно, WBinverse =39750; Mod[WB ♦ WBinverse, NB] II 1
12.1. Рюкзачная система 257 □ Шифрование Предположим, что пользователь Алиса хочет послать сообщение Бо- бу. Она отыскивает публичный ключ Боба Затем она представля- ет свое сообщение в виде двоичного вектора (mi, m2, ...,ттгПв) длины пв (или нескольких векторов такой длины, если сообщение слишком длин- ное). Алиса посылает Бобу шифртекст Епв г=1 mt b't- (12.6) Пример 12.1 (часть 3) Продолжим работу с параметрами из примера 12.1. Публичный ключ Боба имеет вид {Ь'}?=1 = {44434,19714, 56639, 31669, 44927, 36929}. Пусть 1 — {1,1, 0, 0,0,1} — сообщение Алисы. Тогда она от- правит Бобу шифртекст mi * bi = 101077. bb = <44434, 19714,56639, 31669, 44927, 36929}; m = <1, 1, 0, 0, 0, 1}; CipherText = m * bb II 101077 □ Дешифрование Сначала Боб умножает полученный шифртекст С на а затем вычисляет остаток от деления этого произведения на Nb (оба эти пара- метра секретны). Это означает, что , (12.6) , v—упв , (12.5) v—'пв И/в1-С' = WR1 - - Ь [ = ’ bi (mod Nb)- Из неравенства (12.3) следует, что 52Г=1 mi'bi < Nb- Поэтому приведен- ное выше сравнение можно переписать в виде mi'bi = • С) mod Nb- (12.7) Поскольку последовательность жет для нахождения сообщения частью (Wp1 • С) mod Nb- — сверхвозрастающая, Боб мо- применить алг. 12.1 с правой Пример 12.1 (часть 4) Продолжим работу с параметрами из примера 12.1. Допустим, что Боб получил сообщение С = 101077. Сначала он вычисляет (W^1 • С) mod NB при W"1 = 39750 и NB = 56789.
258 Глава 12. Системы, основанные на рюкзаке CipherText = 101077; S = Mod.[WBinverse * CipherText, NB] II {45789} Боб получает S = 45789. Для решения уравнения (12.1) У27-1 mi‘bi = = S, он может применить определенную ранее функцию KnapsackFor- S up erln creasingSequen се. b = {22, 89, 345, 987, 4567, 45678}; S = 45789; x = KnapsackForSuperlncreasingSequence[b, S] || {1, 1, 0, 0, 0, 1} □ Дальнейшее обсуждение Резюме рюкзачной криптосистемы приведено в следующей таблице. ПУБЛИЧНЫЕ {wi}?=l ВСЕХ ПОЛЬЗОВАТЕЛЕЙ U СЕКРЕТНЫЕ {^г}7=1’ Wf/1 И NU ПОЛЬЗОВАТЕЛЯ U СВОЙСТВА • щ) mod Nu, {uiK=l ~ СВЕРХВОЗРАСТАЮЩАЯ, НОД(Ж/,АМ - 1 СООБЩЕНИЕ ДЛЯ В ШИФРОВАНИЕ 52?=1 ТПг • U^i = С ДЕШИФРОВАНИЕ ПРИМЕНИТЬ АЛГ. 12.1 К {«ЛЙ и (№в‘ • С) mod NB Таблица 12.1. Рюкзачная криптосистема. Несмотря на то, что рюкзачная криптосистема непригодна для подпи- сывания, некоторое время она имела огромную популярность. Это проис- ходило главным образом из-за простоты ее реализации. В приложениях как шифрование, так и дешифрование можно производить с данными большого объема. Авторы [МегН78] рекомендуют пользователям брать длину пу = = 100, последовательность удовлетворяющую условию (2* - 1) - 2100 < щ < 2i • 2100, 1 < i < 100, (она автоматически окажется сверхвозрастающей), и такой модуль Ау, что 2101 + 1 < Ny < 2202.
12.1. Рюкзачная система 259 Заметим, что при этом выполняется условие (12.3). Дополнительно пользователю U рекомендуется перед публиковани- ем ключа {^}^1 переставить его элементы, чтобы скрыть их порядок в исходной сверхвозрастающей последовательности. Тем самым крипто- аналитик лишается информации о том, какой, например, элемент в публичном ключе получен из минимального элемента секретного ключа ui. Разумеется, умножение сверхвозрастающей последовательности на константу Wu по модулю Nu выполняется для того, чтобы получивша- яся задача о рюкзаке выглядела как случайная. Чтобы увеличить этот эффект и тем самым увеличить безопасность криптосистемы, авторы [МегН78] советуют повторить такое умножение. Значит, каждый пользователь U дополнительно выбирает такие чис- ла N'u и Wy, что N'v > ES u<, 1 < W{, < Ny и НОД(^,^7) = 1. Затем он вычисляет и" = Wy • и\ (mod Ny), 1 < i < пи, и объявляет публичным ключом {и"}”^ вместо Польза от повторения модульного умножения иллюстрируется в сле- дующем примере. Пример 12.2 Пусть п = 3. Рассмотрим последовательность = {5,10, 20}. Ее умножение на 17 по модулю 47 дает {^}^=i = {38,29,11}. Умно- жение этой последовательности на 3 по модулю 89 дает {u"}f=i = = {25,87,33}. Эти вычисления можно проверить с помощью функции Mod. и = <5, 10, 20} uu = Mod[17 * u,47] uuu = Mod[3 * u,89] || {5, 10, 20} || {38, 29, 11} || {25, 87, 33} Невозможно найти такие целые числа W и N, чтобы непосред- ственно перевести {izi}?=1 в {и"}?^. Действительно, из сравнений 5 • W = 25 (mod N), 10 • W = 87 (mod N) следует, что N делит 87 — 2 х 25 = 37. Поскольку 37 — простое, это означает, что N = 37. Значит, W = 5. Однако, числа W и N не удо- влетворяют третьему сравнению 20 • РИ 33 (mod N).
260 Глава 12. Системы, основанные на рюкзаке Это показывает, что два модульных умножения не всегда сводятся к одному. Приведенный выше пример демонстрирует и еще кое-что. Заметим, что второе преобразование переводит не-сверхвозрастающую последова- тельность {38,29,11} в последовательность {25,87,33}, которая после переупорядочения становится сверхвозрастающей. Из этого становится понятным, что криптоаналитику Еве для преоб- разования публичного ключа в сверхвозрастающую последовательность вовсе не обязательно угадывать именно те исходные числа Wp и Np (а также Wy и Ny в случае выполненной итерации). Ева сможет дешифро- вать криптограмму, если сможет получить хоть какую-нибудь сверхвоз- растающую последовательность из {г^}^ (соответственно, из {^}7=1)- Эти наблюдения демонстрируют две важные вещи: 1) Итерация не обязательно увеличивает безопасность системы. 2) Для криптоаналитика может быть легче преобразовать публичную последовательность в сверхвозрастающую, которая отлична от исходной. Некоторые критики рюкзачной криптосистемы не доверяли ей из-за ее линейности. Их опыт и интуиция говорили, что эта система вскоре будет взломана. Читателю следует помнить, что общая задача о рюкзаке является NP-полной. Это, в частности, означает, что не известен алгоритм, ре- шающий ее за полиномиальное время. Однако не было доказано, что NP-полным будет и сужение задачи о рюкзаке на последовательности, полученные из сверхвозрастающих с помощью одного модульного умно- жения. В 1982 г. Шамир [Sham82] показал, что вариант рюкзачной систе- мы с одним модульным умножением может быть с высокой вероятностью взломан за полиномиальнре время1 *. Эта атака была позднее обобщена другими исследователями (см. [Adle83] и [Bric85]). В разд. 12.2 будет дано краткое описание наиболее общего метода атаки, принадлежащего Лагариасу и Одлыжко [LagO83]. 12.2 L3 -атака 12.2.1 Введение В первоначальной рюкзачной криптосистеме предполагалось, что по- следовательность {uj}”Jfi — сверхвозрастающая. Однако, это не является решающим фактором для криптосистем, основанных на задаче о рюк- заке. Это лишь делает дешифрование более легким, поскольку есть алг. 12.1. Единственное существенное требование состоит в том, чтобы отоб- ражение {mj}"^ С открытого текста в шифртекст в равенстве (12.6) было взаимно однозначным. 1 Подробное изложение метода Шамира на русском языке можно найти в книге [*Сало96]. — Прим, перев.
12.2. L3-атака 261 Поскольку общая задача о рюкзаке является NP-полной, не известен алгоритм, решающий ее за полиномиальное время. Но вполне возмож- но, что есть полиномиальный алгоритм, решающий с некоторой поло- жительной вероятностью любую задачу из большого подкласса задач о рюкзаке. Такой алгоритм сделал бы рюкзачную систему неподходящей для практических нужд. В этом разделе часто для рюкзака {wiJ-JLi используется векторное обозначение и = (-щ, 1x2, • ••, ип). Перед тем, как дать краткое описание атаки Лагариаса и Одлыжко (также называемой L3-атакой) [LagO83], введем несколько новых поня- тий. Определение 12.2 Плотность d(u) рюкзака и = (1x1, 1x2, ...,1хта) определяется как d(u) =-------—------? maxi<j<n log2 ui Пример 12.3 Например, плотность рюкзака {22,89,345,987,4567,45678} равна 6/log245678 « 0.39, что можно проверить с помощью функций Мах, Log, Length и N пакета “Mathematica”. и = {22, 89, 345, 987, 4567, 456781; N [Length [u] / Log [2, Max [u] ] , 2] II 0.39 Плотность d(u) служит мерой информационной избыточности рюк- зачной криптосистемы. В самом деле, в числителе стоит число битов сообщения, хранящихся в сумме С рюкзака (см. 12.6). Знаменатель же является хорошим приближением для среднего числа битов, необходи- мых для двоичного представления С. Например, при щ = 2г”1, 1 < г < п, плотность равна п/(п — 1) ~ 1, как и должно быть. Далее будет показано, что вероятность успеха атаки Лагариаса и Од- лыжко против рюкзачной криптосистемы тем больше, чем меньше ее плотность. Это может показаться слишком сильным ограничением, но стоит представлять, что никому не нравится пользоваться криптосистемой, ко- торая может быть взломана с некоторой положительной вероятностью.
262 Глава 12. Системы, основанные на рюкзаке 12.2.2 Решетки Определение 12.3 Пусть {гц, v2, ...,32п} — множество векторов из Zn, линейно неза- висимых над R. Тогда множество всех целочисленных линейных комбинаций векторов {321,322,называется целочисленной решеткой. Определяющая целочисленную решетку формула имеет вид: или Л = Z • 321 Т " —2 32п • Говорят, что векторы 321,32г, •••, 12п образуют базис решетки Л. Отме- тим, что такой базис у решетки не единственный. Для задания решетки порядок векторов не важен, но нам в дальнейшем он понадобится. Для обозначения упорядоченного набора векторов будем использовать запись [121,122, Пример 12.4 Рассмотрим решетку Л в Z2 с базисом и= (1,2) и v = (3,1). Она состоит из всех точек вида а • (3,1) -Г /3 • (1,2), где а,/3 Е Z. Ниже нарисована часть этой решетки. Рис. 12.1. Решетка в R2 с базисом (1,2) и (3,1). Для Т3-атаки, которая будет описана позже, особенно важно найти короткий вектор решетки Л, или еще лучше полный базис решетки Л
12.2. L3-атака 263 из коротких векторов. Для этого нам придется изучить преобразования базиса более подробно. Процесс ортогонализации Грама-Шмидта — это хорошо известный из линейной алгебры алгоритм, который преобразует базис , v2, •••jl’n} линейного пространства в ортогональный базис {wi,w2, •••, т.е. в ба- зис с попарно ортогональными векторами, где = 0 при i j. Алгоритм действует так: «1 «2 221, 22г - Ml,2221, 22з “ Ml,3221 — М2,з22г, 22n Mi,n22i М2,п22г ••• Мп—1,п22п—1- где Пример 12.5 Для демонстрации процесса Грама-Шмидта возьмем ?2i = (3,4,2), v_2 = (2, 5, 2) и «з = (1,2,6) в R3. vl = <3, 4, 2}; v2 = {2, 5, 2}; v3 = <1, 2, 6}; ul = vl u2 = v2 - ((ul * v2) / (ul * ul) * ul u3 = v3 - ((ul * v3) / (ul * ul)) * ul - ((u2 * v3) / (u2 * u2)) * u2 II О, 4, 2} J 32 25 2 1 { 25’ 25’ 25/ / 24 24 841 I 15’ “15’ 15/ Это можно сделать и в пакете “Mathematica”. Сначала загрузим пакет LinearAlgebra‘Ortogonalization‘, затем запустим GramSchmidt << LinearAlgebra*Ortogonalization* vl = {3, 4, 2}; v2 = {2, 5, 2}; v3 = {1, 2, 6}; {ul, u2, u3} = GramSchmidt[{vl, v2, v3J]
264 Глава 12. Системы, основанные на рюкзаке J7_3_ 4 2 1 11^29’ V29’ V29J’ Г 32 25 2 I ч/1653’ VT653’ У1653 J 2 2 7 11 I \/57 ’ л/57 ’ л/57 J J Как видно из приведенного выше примера, координаты векторов 1 < г < п, могут в общем случае быть и не целыми. Это нежелательно в контексте целочисленных решеток. В следующем подразделе мы обсудим (целочисленный) базис для ре- шетки Л, который не является ортонормированным, но при этом обла- дает двумя другими замечательными свойствами. 12.2.3 Редуцированный базис Пусть запись | |й| | обозначает стандартную эвклидову норму, или дли- ну вектора и. Тогда ||«|| = (м,м)1/2 = (52”=1(Мг)2) 1 • Определение 12.4 Базис {v.i, v_2-> Т.п} целочисленной решетки Л называется у- редуцированным, где 1/4 < у < 1, если ортогональный базис {ад15 «2, •••> Пп)? полученный из {j2i, г?2, •••, в процессе Грама- Шмидта, удовлетворяет условиям + Дг,г-lUi-1112 > У * ||«i-l||2, 2 < г < П, < 1/2, 1 < г < j < п. Альтернативное определение ^-редуцированного базиса можно дать следующим образом. Пусть Vk — fc-мерное линейное подпространство в Rn, натянутое на {t?i, v2,..., или, что эквивалентно, на ...,ик}. Пусть V^~ — ортогональное дополнение к Vk. Обозначим через k + 1 < j < n, проекцию Vj на Vk. В частности, yyk-vi ” Hfc+i- Тогда можно прямо показать (см. [LagO83]), что два условия в определении 12.4 эквивалентны соотношениям lkF“2)||2> У •||£j<-1)||2 = y -Ila-ill2, 2<4<П, (12.8) и, соответственно, ||4г)+^г 1}|| < 1}|Ь 1 < г < J < п. (12.9)
12.2. L3-атака 265 Условие (12.8) означает, что длина проекции щ на не должна быть слишком маленькой по сравнению с длиной Неравенство в (12.9) говорит, что проекция Vj на относительно мала. Два этих утверждения можно понимать в том смысле, что векторы у- редуцированного базиса имеют сравнимые длины и указывают в разных направлениях. В дальнейшем везде у будет равно 3/4. Ь3-алгоритм (см. [LenLL82]) — это очень эффективный способ для нахождения ^/-редуцированного базиса решетки Л, который не будет здесь описан во всех деталях (тем не менее см. разд. 12.2.5). Следующие факты взяты из |LenLL82]. Теорема 12.2 Пусть {v1? у_2-> •••> vn} — базис целочисленной решетки Л в Zn и пусть В = maxi<j<n ||vj|. Тогда Т3-алгоритму редукции базиса решетки для создания редуцированного базиса {wbw2, решетки Л требуется около n6(logP)3 битовых операций. Теорема 12.3 Пусть {wi, w2,wn} — редуцированный базис целочисленной решетки Л. Тогда llwill2 < 2"-' - min {||ж||2 I х 6 Л\{0}} . Фактически предложение 1.12 из [LenLL82] показывает, что никакой вектор редуцированного базиса не может быть слишком длинным. 12.2.4 Т3-атака Теперь изложим идею Т3-атаки. Мы хотим найти решение задачи о рюкзаке xiai = 8 (см. (12.1)). Идея атаки состоит в том, чтобы преобразовать параметры задачи о рюкзаке в базис для некоторой целочисленной решетки Л. Затем найти в этом базисе короткий вектор с помощью Т3-алгоритма редукции ба- зиса решетки. Есть надежда, что этот короткий вектор можно обратно преобразовать в решение {Фг}Р=1 задачи (12.1). Т3-атака на ]ЕХ=1 агхг = Шаг 1 Определим векторы 2Z1 = (1. 0, 0, -«1), У2 = (0, 1, 0, —«2), - (12.10) Vn = (0, 0, ..., 1, an) > 2W1 = (0, 0, 0, S).
266 Глава 12. Системы, основанные на рюкзаке Вместе они образуют базис (п 4- 1)-мерной решетки Л в Zn+1. Заметим, что для решения }”=1 имеет место равенство 2_^i=1 xi—i + ^n+1 = (^1,^2,-,^n,0). Таким образом, этот вектор имеет длину не более у/п, т.е. он от- носительно короткий, в частности, если длина рюкзака п = 100, то +2Ш1.11 < 10- Шаг 2 Найдем редуцированный базис {wi>^2)-4^n+i} решетки Л с помо- щью Л3-алгоритма ([LenLL82]). Шаг 3 Проверим, не будет ли у одного из этих п + 1 “коротких” векторов w^, 1 < г < п + 1, последняя компонента (wjn+i равна 0, а каждая из первых п компонент равна либо 0, либо а для некоторой константы а. Если это окажется так, то —((wji, (ш^)г, • ••, (ж)п) — решение уравне- ния (12.1). В таком случае — СТОП, иначе — переход на Шаг 4. Шаг 4 Заменим S на i ai — S и повторим шаги 1, 2 и 3. Если при этом найдется решение новой задачи о рюкзаке, то {а?г}£=1, определя- емое как Xi = 1 — х^, 1 < i < п, будет решением исходной задачи. Пример 12.6 Рассмотрим задачу о рюкзаке, в которой — {541,400,259, 1059,895,590,498,973,41,649} и S = 4517. Сначала найдем, векторы vit 1 < i < 11, как показано в (12.10). При этом используются функ- ции Transpose, Append, Identity Matrix, Do, Table и MatrixForm пакета “Mathematica”. a = {541, 400, 259, 1059, 895, 590, 498, 973, 41, 649}; s = 4517; aux = Transpose[Append [IdentityMatrix[10], - a]]; Do[v[i] = aux[[i]], {i, 1, 10}]; v[ll] = Append[Table [0, {10}], s]; Table[v[i], {i, 1, 11}] // MatrixForm
12.2. L3-атака 267 (1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -541 \ -400 | 0 0 1 0 0 0 0 0 0 0 -259 0 0 0 1 0 0 0 0 0 0 -1059 0 0 0 0 1 0 0 0 0 0 -895 0 0 0 0 0 1 0 0 0 0 -590 ; 0 0 0 0 0 0 1 0 0 0 -498 0 0 0 0 0 0 0 1 0 0 -973 0 0 0 0 0 0 0 0 1 0 -41 0 0 0 0 0 0 0 0 0 1 -649 \ 0 0 0 0 0 0 0 0 0 0 4517 / Векторы {v1? •••? 22ц} образуют базис решетки Л. Затем с помощью функции Lat ticeRed и се пакета “Mathematica” най- дем редуцированный базис. LatticeReduce [Table [v[i] , {i, 1, ll}]] {{ 1, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0}, {-1, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0}, { 0, 1, -1, 1, -2, 1, 0, 0, 0, 0, 0}, { 1, -1, -1, 0, -1, 0, 0, 1, 1, 0, -1}, { 1, 1, -2, 0, 0, 1, 0, -1, -1, 0, I}, { 1, 1, -1, 0, 0, -2, 1, 0, 0, 0, 0}, { 1, -1, 0, 0, 1, 0, -2, 0, -1, 0, I}, { 0, 1, 0, -1, 0, 1, -1, 0, -2, 1, 0}, { 0, 0, -1, -1, -1, 1, 0, 1, 0, 1, 1}, { 1, -1, 0, 0, 0, 1, 0, 0, -2, -1, 0}, { 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0Я Видно, что только в последнем из полученных векторов последняя компонента нулевая, а первые 10 компонент принимают 2 значения. Одно из этих значений 0, а другое 1. Легко убедиться, что = = {1,1,0,1,1,0,0,1,0,1} — решение для XLiLi aixi = S. х = {1, 1, О, 1, 1, О, О, 1, О, 1}; а . х == S II True Время выполнения первого и третьего шагов L3-атаки незначительно. Следовательно, основное время работы этого алгоритма занимает (дву- кратный) прогон /Я-алгоритма редукции базиса решетки, время работы которого приведено в теореме 12.2. Нет гарантии, что Ь3-алгоритм ре- шает задачу о рюкзаке. Однако авторами [LagO83] дается следующий анализ 1/3-алгоритма.
268 Глава 12. Системы, основанные на рюкзаке Теорема 12.4 Пусть В > 2<1+/3)п2 , где /3 > 0 — некоторая константа, а п — длина рюкзака. Пусть К(п, В) обозначает количество рюкзаков {aj}^L15 удовлетворяющих условиям 1) 1 < сц < В для всех г, 1 < i < п, 2) £3-атака находит {0,1}-решение {а?г}?=1 задачи (12.1) при любом таком значении правой части S, при котором решение вообще существует. Тогда К(п,В) = Вп(1-е(В)), где О < е(В) < ^c-2_3(inn)/n > где, в свою очередь, Ci — некоторая константа, а С2 = 1 - (1 +/?)"1 > 0. Теорема 12.4 утверждает, что для любого (3 > 0 и достаточно большо- го п задача о рюкзаке решается Т3-алгоритмом для почти всех рюкзаков {аг-}^=1 с плотностью п 1 После некоторых дополнительных усилий ([LagO83]) это неравенство можно ослабить до d{{ai}n=1} < (Г - для любого фиксированного г > 0 и достаточно большого п. Вероятно, и это неравенство — еще не предел возможного. 12.2.5 В3-алгоритм редукции базиса Напомним, что Ь3-алгоритм должен найти базис {v15 v2, Для целочисленной решетки, удовлетворяющий требованиям, сформулиро- ванным в определении 12.4: |\Ц.г + Дг,г-1«г-1||2 > У ' | К-11 Р, 2 < i < П, IMzjI < 1/2, 1 < i < j < П, где = При работе Т3-алгоритм использует следующую процедуру:
12.3. Вариант Кора-Райвеста 269 Процедура reduce [fc, Z] input I, k, 1 < I < k; compute рцк'-> if > 1/2 then begin r = Г0.5 + дгл]; V-k = vk - r • end L3-алгоритм работает следующим образом: ZA-алгоритм input {г?1, v2, •••> 2Zn} — базис целочисленной решетки; initialize к = 2; while к < п do begin reduce [fc, к — 1]; compute llUkll, 1124*:—ill, if ll34*J|2 < (У - mLi,*) • l^-ill2 then begin exhange vk и vk_1\ к := max{2, к — 1} end else begin reduce[/c, Z] для Z = к — 1,2,1; к := к + 1 end end Подробности можно найти в [LenLL82]. Отметим, что в алгоритме перерабатывается только базис {г?1,22.2» •••jl’n}- Ни один из векторов не входит в редуцированный базис. Эти векторы лишь используются при вычислениях. 12.3 Вариант Кора-Райвеста Схема Кора-Райвеста [ChoR85] — это криптосистема, основанная на задаче о рюкзаке, в которой секретный рюкзак, для которого задача легко решается, не преобразуется в публичный, для которого задача должна быть труднорешаемой. Система использует стандартное преоб- разование целых чисел в двоичные последовательности фиксированной длины. Кроме того, в ней используется фиксированная константа, вы- бранный и зафиксированный неприводимый многочлен, выбранный и зафиксированный примитивный элемент, фиксированная перестановка и возведение в степень в конечном поле с легко решаемой задачей лога- рифмирования. В [Vaud98] показано, что предложенные в [ChoR85] параметры не обеспечивают безопасности. Автор советует вернуться к первоначально-
270 Глава 12. Системы, основанные на рюкзаке му предложению. Здесь мы объясним лишь основную идею схемы Кора- Райвеста. □ Формирование системы 1) Каждый пользователь U выбирает конечное поле GF(q) с легко решаемой задачей логарифмирования (и для криптоаналитика тоже). Например, алгоритм Похлига-Хеллмана, описанный в разд. 8.3.1, пока- зывает, что этого можно добиться, выбрав q так, чтобы в разложении q — 1 на простые множители участвовали только малые простые числа. Кроме того, характеристика р поля GF(q}, где q — pk для некоторого к, должна удовлетворять условию р > к. Для представления GF(q) пользователь U применяет случайный не- приводимый многочлен У(ж) степени к над Zp. Элементы GF(q) можно представлять в виде многочленов степени < к с коэффициентами из Zp (см. теорему В. 15). Для ясности мы опускаем индексы U у всех выбранных пользовате- лем U объектов. 2) Пользователь U выбирает в GF(q) случайный примитивный эле- мент а. Примитивность а означает, что каждый ненулевой элемент поля GF(q) можно представить в виде некоторой степени аг, где 0 < г < q — 1. Заметим, что си, как элемент GF{q) — это многочлен степени < к с ко- эффициентами из Zp. 3) Для каждого i G Zp пользователь U определяет дискретный лога- рифм элемента x + i поля по основанию примитивного элемента а. Иначе говоря, ему необходимо найти такие показатели 17<, i G Zp, что aUi = х + i (mod J (ж)). (12.11) Это реализуемо ввиду сделанного в пункте 1) предположения. 4) Наконец, пользователь U выбирает случайную перестановку лц множества {0,1, ...,р — 1} и случайный элемент Du, 0 < Du < q — 1. Он находит числа щ = + Du (mod q - 1) (12.12) и объявляет эти числа uq, u±, ..., up—\ публичными вместе с числом q = рк. (Напомним, что q — 1 — это порядок мультипликативной группы поля GF(q), см. теорему В.20.) Пример 12.7 (часть 1) Боб выбирает конечное поле GF(73), т.е. р = 7 и к = 3. Неприводи- мый многочлен f(x) степени 3 над Zy можно найти с помощью функ- ции IrreduciblePolynomial пакета “Mathematica” после загрузки пакета Algebra‘FiniteFields‘. << Algebra*FiniteFields*
12.3. Вариант Кора—Райвеста 271 р = 7; к = 3; q = рк; f = IrreduciblePolynomial[х, р, к] II 4 + х + 2х2 + х3 Итак, f(x) = х3 + 2х2 + х + 4. Оказывается, что со = х — при- митивный элемент в поле GF(73). Это можно проверить следующим образом. Порядком любого элемента может служить только дели- тель числа q — 1 — 73 — 1 = 342 (см. теорему В.Б). Из равенства 342 = 2 х З2 х 19 получаем список делителей: 1, 2, 3, 6, 9, 18, 19, 38, 57, 114, 171, 342. То, что порядок элемента со — х не совпадает с 1, 2, 3, 6, 9, 18, 19, 38, 57, 114 и 171, можно проверить следующими вычисле- ниями. (Используется функция GF. Заметим, что Г343 представляет GF(73) = Z7[x]/f(x).) f343 = GF[7, <4, 1, 2, 1}]; от = f343 [{О, 1}] ; от18 от114 от171 II {5, 5, 5}7 II {2, 0, 0}7 II {6, 0, 0}7 Чтобы получить случайный примитивный элемент а в поле GF(73), Боб возводит со в такую степень i, что НОД(г, q — 1) = 1 (см. лемму ВЛ). Используем функции Random, GCD и While. i = q - 1; While [GCD [i, q - 1] != 1, i = Random [Integer, <1, q - 2}]]; i II 239 Мы нашли i = 239. Случайный примитивный элемент а — сог равен 3 + 4х + Бх2 и вычисляется так: а = от1 II {3, 4, 5}7 Из сравнения 83 х 239 = 1 (mod q — 1) следует, что со = а83. Для определения чисел Bi, удовлетворяющих сравнениям aBi = x + i (mod /(ж)), используем В = Table[Mod[83 * Fieldlnd[om + i] , q - 1], <i, 0, p - 1}] || {83, 101, 175, 90, 170, 321, 213}
272 Глава 12. Системы, основанные на рюкзаке Заключаем, что Во = 83, В± = 101, В% — 175, В% = 90, Вд = 170, В5 = 321, В& = 213. Это можно проверить так: В = {83, 101, 175, 90, 170, 321, 213}; {{О, 1, 0}7, {1, 1, 0}7, {2, 1, 0}7, {3, 1, 0}7, {4, 1, 0}7, {5, 1, 0}7, {6, 1, 0}7} Бобу потребуется еще кое-что сделать. Он должен выбрать слу- чайное число D, 0<D<q — 1, и случайную перестановку тт множе- ства {0,1,...,6}. Загрузим пакет DiscreteMath‘Combinatorica‘ и приме- ним функцию RandomPermutation. << DiscreteMath*Combinatorica* RD = Random[Integer, {0, q - 2}] pi = RandomPermutation[7] II 244 || {6, 3, 7, 4, 5, 2, 1} Итак, D = 244 и 7г = {6,3, 7,4,5,2,1}, т.е. тг(1) = 6, тг(2) = 3, ..., тг(7) = 1. (Здесь стоит отметить, что “Mathematica” нумерует элементы массивов, начиная с 1, а мы начинаем нумерацию с Q.) Публичный ключ — это последовательность, заданная в (12.12): bi = В^^ + D (mod q — 1). Используем функции Table и Mod. BPerm = Table[В[pi[[i]]]], {i, 1, 7}] b = Mod[BPerm + RD, q - 1] || {321, 175, 213, 90, 170, 101, 83} || {223, 77, 115, 334, 72, 3, 327} Боб объявляет публичными {bi}f=0 = {223,77,115,334,72,3,327} u k = 3. □ Шифрование Предположим, что пользователь Алиса хочет послать сообщение Бо- бу. Она отыскивает публичные параметры Боба b®, Ь±, ..., bp-i и к. Затем вычисляет q& — рк. Сообщение Алисы — это число М между 1 и Алиса представляет (описанным ниже способом) свое сообщение в ви- де двоичной последовательности mo, mi,..., mp_i длины р и веса к (среди чисел пу ровно к единиц), т.е. V -<р—1 mi = к. (12.13)
12.3. Вариант Кора-Райвеста 273 Алиса отправляет с = У ттцЬг mod дв- (12.14) Пример 12.7 (часть 2) Предположим, что пользователь Алиса хочет послать сообщение Бобу. Она отыскивает публичные параметры Боба к = 3 и = = {223,77,115,334,72,3,327} (см. пример 12.7). Она знает, что р = 7 (uq = 73 = 343). Пусть М = 19 — ее сообщение (это число между 1 и Q)/ Как показано ниже, его можно представить в виде двоичной после- довательности {m-i}6_0 = {0,1,1, 0,1,0,0}. Шифртекст с, который посылает Алиса, есть & данном случае это число 264. m = {О, 1, 1, 0, 1, О, 0}; ct = m . b II 264 Существует индуктивный способ представления числа М, 1 < М < < (£), в виде двоичной строки ttiq, W,..., 77ip-i длины р и веса к. При этом используется хорошо известное тождество о р-1 к-1 Если М > (рд.1), положим тпр-i = 1 и уменьшим М на (Рд.1)- Эта но- вая величина будет лежать между 1 и (^Zj) и будет представима в ви- де двоичной строки mo,mi, ...,77ip_2 длины р — 1 и веса к — 1. Если же М < (р^1), положим 77ip_i = 0 и представим М в виде двоичной строки то, 7П1, •••, 7Пр-_2 длины р — 1 и веса к.2 Алгоритм 12.5 (преобразование М в то,mi, ...,mp-i веса, к) input М, 1 < М < (£); initialize I — к; for i = 1 to р do if M > (Руг) then begin mp-i 1; M := M - (V); I := I - 1 end else mp-i := 0 2Описанный процесс приводит к тому, что число М представляется в виде двоич- ной строки, имеющей номер М при лексикографическом (если читать строку, начиная с mp-i, как это и сделано в примере) упорядочении всех строк длины р и веса к. — Прим, перев.
274 Глава 12. Системы, основанные на рюкзаке Пример 12.8 Пусть р = 7 u к = 3. Тогда Q) = 35. Чтобы определить, в виде какой двоичной последовательности дли- ны 7 и веса 3 представляется число М = 19, воспользуемся приведен- ным ниже алгоритмом, в котором используются функции Table, If, Do и Binomial пакета “Mathematica”. р = 7; к = 3; Me = 19; 1 = к; m = Table [О, <i, 1, pH; Do[If[Me > Binomial[p - i, 1], <m[[i]] = 1, Me = Me - Binomial[p - i, 1], 1 = 1 - 1}], {i, 1, pH; m || {0, 1, 1, 0, 1, 0, 0} □ Дешифрование Боб получает число с, которое согласно равенству (12.14) есть mod qB- Он вычисляет С = c—k-DB с помощью секретного DB (см. (12.12)). Затем Боб вычисляет otc. Заметим, что в поле GF(q) выполняются следующие соотношения: аС = ac~k DB = Q^i=o mibi-k-DB (1|J2) (!|d2) _ = П(«в’<<)г* <1=11> IK* + 7rW)m‘ (mod /(*)) i=0 i=0 Это означает, что p-i ac = JJ(x + 7r(i))mi (mod f (x)). ?=o Затем мы добавим к ас подходящий кратный /(х) многочлен, чтобы получился нормированный многочлен степени к. Итак, для некоторого /3 G GF(q) а(х) = ас + (3 • f(x) — нормированный многочлен степени к. Поскольку ПТ=о (ж+тг(г))т’ (mod /(х)) — тоже нормированный мно- гочлен степени к, написанное выше означает, что р-1 а(х) = (х + 7г(г))тК i=0
12.3. Вариант Кора-Райвеста 275 Из этого следует, что гщ = 1, 0<г<р—1, тогда и только тогда, когда —тг(г) — корень а(ж). Резюмируем процесс дешифрования в следующем алгоритме. Алгоритм 12.6 (дешифрование Бобом в криптосистеме Кора- Райвеста) input Bob’s secret шифртекст c; k, a, f(x), тг; compute С = c — k • Db с помощью секретного. DB (см. (12.12)); compute add осс, где ot — примитивный элемент Боба; кратный f(x) многочлен, чтобы получился нормированный многочлен а(х) степени к; put mi = 1, 0<г<р — 1, тогда и только тогда, когда — тг(г) — корень а(х). Пример 12.7 (часть 3) Продолжим обсуждение примера 12.7. Предположим, что Боб полу- чил шифртекст с = 264. Секретными параметрами Боба являются к = 3, D = 244, тг = = {6,3,7,4, 5,2,1}, f(x) — 4 + х + 2ж2 + х3, а. = 3 + 4х + 5х2. Боб вычитает к • D из с. СТ = ModEct - RD * k, q - 1] II 216 Затем он возводит а в степень С. Для того, чтобы записать это в виде многочлена, используем функцию ElementToPolynomial пакета “Mathematica”. 7т u = ElementToPolynomial [аст, х] II {2, 1, 3}7 II 2 + х + Зх2 Затем Боб должен прибавить f(x), чтобы получить нормиро- ванный многочлен а(х) степени к. Применим для этого функцию PolynomialMod. АХ = PolynomialMod[u + f, 7] II 6 + 2х + 5х2 + х3 Разложим его на множители с помощью функции Factor.
276 Глава 12. Системы, основанные на рюкзаке Factor[АХ, {Modulus -> 7}] || {(2 + х) (4 + х) (6 + х)} Обратную к тг перестановку можно вычислить с помо- щью функции InversePermutation (из уже загруженного пакета DiscreteMath ‘Combinatorica ‘). InversePermutation[pi] || {7, 6, 2, 4, 5, 1, 3} Вычтем 1, поскольку тг действует не на {1, 2,..., 7}, а на {0,1, ...,6}. Получим InversePermutation[pi] - 1 || {6, 5, 1, 3, 4, 0, 2} Отсюда видно, что под действием тг-1 числа 2, 4 и 6 переводятся в 1, 4 и 2. Иначе говоря, тг отображает 1, 4 и 2 в 2, 4 и 6 соответственно. Из этого делаем вывод, что в векторе сообщения единицы стоят в 1-й, 4-й и 2-й позициях (а нули — в 0-й, 3-й, 5-й и 6-й позициях), т.е. вектор сообщения имеет вид {mi}|=0 = {0,1,1, 0, 1, 0, 0}. Это совпадает с тем, что было зашифровано. 12.4 Задачи Задача 12.1. Решите задачу о заполнении рюкзака, если элементы равны 333, 41, 4, 172, 19, 3, 80 и 11, а общий размер рюкзака равен 227. Задача 12.2. Решите задачу о заполнении рюкзака, если элементы равны 31, 32, 46, 51, 63, 72, и 87, а общий размер рюкзака равен 227. Задача 12.3м. Публичным ключом рюкзачной криптосистемы являются числа 381, 424, 2313, 2527, 2535, 3832, 3879 и 4169. Они получены при умножении по модулю 5011 элементов сверхвозрастающей последовательности на W = 4673. Дешифруйте сообщение 11678. Задача 12.4. Пустьpi,P2, .-.,рп — последовательность различных простых чисел, а Р — их произведение. Числа а^, 1 < i < п, определим как щ = Р/р,. Пусть S = 52?=i xi ‘ где каждый элемент Xi — это либо 1, либо 0. Найдите простой алгоритм определения по S чисел xi, 1 < г < п. Задача 12.5м. Пусть шифртекст С = 5738 получен при шифровании в рюкзачной криптосистеме с публичным ключом = {437,1654,1311,625, 1250,1720,663,1420,63,319}. Примените Ь3-алгоритм для поиска открытого текста.
12.4. Задачи 277 Задача 12.6. Какое число будет представлено в виде двоичного вектора (1,1,0,1,1,0,1,0,1,1) по алгоритму 12.5? Задача 12.7м. Проработайте полностью (включая шифрование и дешиф- рование) пример криптосистемы Кора-Райвеста с параметрами р — 11, к = 2.
Глава 13 Хэш-коды и техника аутентификации 13.1 Введение В разделе 1.1 мы упомянули конфиденциальность (секретность) как первую причину, согласно которой люди используют криптосистемы. Конечно, эта цель очень важна и приводит к интересным математиче- ским вопросам, но для огромного большинства пользователей секрет- ность данных не является главной проблемой. С другой стороны, аутентификация (установление подлинности) и це- лостность данных почти всегда существенны. Подумайте, например, о получателях файлов данных, сообщений по электронной почте или по факсу и т.п. Нарушение конфиденциальности приносит (как правило) мало вреда, но значительную опасность представляет ситуация, когда кто-нибудь способен подделать файлы данных. При изучении схем аутентификации нужно различать следующие возможности: i) Желательна безусловная безопасность или просто вычислительная безопасность? ii) Доверяют различные стороны друг другу или пет? iii) Имеется ли обоюдно доверенная третья сторона? iv) Типичные файлы данных очень длинны или, скорее, коротки? v) Важна ли также конфиденциальность? vi) Предназначена ли система для многократного использования или только на один раз? В особенности первые два различия приводят к полностью отличным друг от друга областям исследований. Главной темой разд. 13.3 являют- ся схемы аутентификации, обладающие безусловной безопасностью (шеи абсолютной стойкостью). Это означает, что даже при неограниченных вычислительных возможностях противник не может взломать систему.
13.2. Хэш-функции и МАС’и 279 Такие схемы обычно называют кодами аутентификации, а один их част- ный подкласс называют А-кодами. Вычислительно безопасные системы базируются на некоторых мате- матических допущениях наподобие (практической) невозможности фак- торизовать большие числа или брать дискретные логарифмы1. Эти си- стемы носят название схем цифровых подписей и уже обсуждались в подразд. 8.1.2, 8.2.1, 8.2.2 и 9.1.4. В случае, когда файл — очень длинный и его конфиденциальность несущественна, имеется весьма общая техника присоединения к нему до- казательства аутентичности или целостности: посылается файл с добав- лением относительно короткой последовательности (например, 100-200) битов, которая сложным образом зависит от всех битов исходного со- общения. Этот хвост должен доказывать, что сообщение на самом деле пришло от предполагаемого отправителя и что его содержание не было изменено. Стандартный путь осуществления этого — хэшировать2 файл крип- тографически безопасным способом в короткую последовательность и вычислить подпись на этом хэш-значении. Подпись хэш-значения до- бавляется к исходному файлу. Если реализация схемы аутентификации работает медленно (как в случае схем цифровой подписи), такой двух- шаговый подход оказывается очень практичным. Во многих приложениях хэш-функции используют секретный ключ, разделяемый отправителем и получателем. Такие системы, называемые по-английски МАС (от Message Authentication Code), не обладают без- условной безопасностью, потому что кто-нибудь, имеющий неограничен- ные вычислительные ресурсы, может в принципе перебрать все ключи. Хэш-функции и МАС’и являются предметом разд. 13.2. 13.2 Хэш-функции и МАС’и Мы не намерены давать формальное описание различных типов хэш- кодов. Для наших целей достаточно общего понимания этих кодов и их свойств. Функция хэширования (хэш-функция или хэш-код) — это отображе- ние h из множества А* всех последовательностей символов из алфавита А в Ат, где m — некоторое фиксированное натуральное число. Таким образом, каждая последовательность (произвольной длины) над А отоб- ражается в последовательность длины m над А. В типичных приложе- ниях А = {0,1}, а т принимает значение где-то между 64 и 256. Так как обычно желательна очень быстрая реализация хэш-функции, мы также требуем, чтобы хэш-значения для любых последовательностей над А вычислялись легко. хСм. [MeOoV97], где вычленяются пять классов безопасности криптосистем. Отме- тим еще, что вычислительно безопасные криптосистемы часто называют практически безопасными.-— Прим. ред. 20т английского hash в смысле “мешанина, путаница”.— Прим. ред.
280 Глава 13. Хэш-коды и техника аутентификации Чтобы сделать хэш-функцию криптографически безопасной, обычно требуют выполнения одного или более из следующих условий. Н1. Хэш-функция h — односторонняя функция (см. подразд. 7.1.2), т.е. почти для всех выходов b вычислительно невозможно найти вход a € Д*, такой, что b = h(a). Н2. Хэш-функция h слабо сопротивляется коллизиям. Это означает, что для заданного значения а вычислительно невозможно найти второе значение a' Е Л*, а1 а, такое, что h(af) = h(a). ИЗ. Хэш-функция h сильно сопротивляется коллизиям. Это означает, что вычислительно невозможно найти пару значений а, а' € Л*, а а!, такую, что h(a) = h(a'}. Следствия этих требований должны быть понятны читателю. Напри- мер, Н2 означает, что если хэш-значение 7z(a) на файле а защищено цифровой подписью, то последний нельзя заменить другим файлом а' с тем же хэш-значением — просто потому, что такой а' невозможно най- ти. Условие НЗ еще сильнее: оно дает возможность убедить судью, что система была скомпрометирована. Пример 13.1 Рассмотрим т = 1 и Д = Zn. При хэшировании последователь- ности а = (ад, ai,... , а() просто берется b = q.£ J mod п. Это хэш-значение зависит от всех символов в а и легко вычисляется, но не выполняется ни одно из условий Н1-НЗ. Пример 13.2 Снова рассмотрим т = 1 и Д = Zn. Для хэширования последова- i I \2 тельности а — (ао, ai,... , at) вычисляется b = ( ) mod п. Если п — большое составное число, то условие Н1 выполняется, поскольку вычисление квадратных корней по модулю такого целого п считается, невозмомсным (см. теорему 9.18ф С помощью функций Mod и Length пакета “Mathematica” эта хэш- функция легко вычисляется. h[inputfile_list, nn_Integer] := /Length[inputfile] \ 2 Mod [( У) inputfile [ [i]] I , nn] \ i=1 / n = 989; in = {189, 632, 900, 722, 349}; h[in, n] II 955
13.2. Хэш-функции и МАС’и 281 Условия Н2 и НЗ не выполняются, так как —а имеет то же хэш- значение, что и а. Кроме того, хэш-значение сохраняется, когда одна из координат увеличивается, а другая уменьшается на одно и то же число. alternative = Mod [-in, n] h[alternative, n] || {800, 357, 89, 267, 640} II 955 Даже когда хэш-функция удовлетворяет условиям Н1-НЗ, остает- ся возможность перехватить передачу (a,h(a)) и заменить это другим файлом (a', h(a!)). По этой причине иногда желательно ввести секрет- ный ключ, разделяемый отправителем и получателем. При этом хэш- функция обретает название код аутентификации сообщений (МАС) и является отображением из Л* х /С в Лт, где /С — пространство ключей, в точности, как в традиционных криптосистемах. Пример 13.3 Пусть т = 64 и Л = Z2. Через DESk(u) обозначим результат DES- шифрования блока и длины т относительно ключа к. Допустим, что Алиса и Боб разделяют ключ к. Рассмотрим теперь бинарный файл {а±, аг,..., а/} длины I, который Алиса намерена переслать Бобу. Сначала Алиса добавляет достаточ- ное число нулей, чтобы длина файла стала кратной 64. Пусть L — эта новая длина. Для вычисления хэш-значения на {ai, аг,... , аД Алиса вы- полняет следующий алгоритм. Алгоритм 13.1 (использование DES в качестве МАС) input двоичная цепочка {ai, аг,..., аД, где 64|L; 64 initialize h = {0,0,, 0}; for i = 0 to (L/64) — 1 do h = DESfc(7i ф {«64i+l, «64i+2, • • • , «641+64}); output хэш-значение h. Получатель дублирует приведенные выше вычисления для проверки того, что файл не был изменен и что он на самом деле был послан Алисой. Конечно, в этом примере вместо DES можно было бы использовать любой другой блочный шифр. Можно также использовать блочный шифр в качестве бесключевой хэш-функции. С этой целью ключ делается публичным параметром.
282 Глава 13. Хэш-коды и техника аутентификации При использовании блочного шифра для целей аутентификации неяв- но предполагается, что при фиксированном ключе шифр работает как случайная перестановка символов входной цепочки. Надеются также, что блочный шифр криптографически безопасен. В следующем разде- ле будут обсуждаться коды аутентификации, которые не базируются ни на каком математическом допущении. Имеется много различных стандартов для хэш-функций. Читатель отсылается к [MeOoV97] и [Schne96]3. 13.3 Безусловно безопасные коды аутентификации 13.3.1 Основные понятия и границы Никакая схема аутентификации не может дать абсолютной гарантии, что полученное сообщение пришло от подразумеваемого пользователя, скажем, Алисы. Например, всегда имеется малая вероятность того, что сгенерированная (случайно или нет) последовательность могла быть со- здана Алисой, хотя фактически это не так. Тогда другая сторона может счесть эту последовательность подлинным документом Алисы. Отсюда вытекает, что необходимо определить и уметь вычислять ве- роятность успешного обмана. Однако при таких вычислениях имеется существенное различие между предполагаемой вычислительной безопас- ностью тех или иных проблем (как это было в криптосистемах с публич- ными ключами) и отсутствием вовсе каких-либо предположений такого сорта (безусловная безопасность или абсолютная стойкость). Последняя ситуация и будет темой данного раздела. Мы будем предполагать, что Алиса и Боб доверяют друг другу и име- ют общий секретный ключ. В действительности это предположение не является необходимым, но тогда должно быть введено понятие доверен- ной третьей стороны (наподобие арбитра). Начнем с простого примера. Пример 13.4 Алиса хочет послать Бобу единственный бит информации (да или нет) с помощью слова длины 2. Алисе и Бобу доступны 4 возможных ключа, причем партнеры используют матрицу из таблицы 13.1. Например, относительно третьего ключа сообщение 1 будет посла- но как слово 11. Вероятность того, что кто-то другой может им- персонифицировать Алису, равна 1/2, поскольку относительно общего секретного ключа Алисы и Боба только два из четырех слов 00, 01,10,11 могут быть действительно переданы. Противник Ева, при попытке подменить переданное сообщение иным 3Российскому криптологу необходимо знать и отечественный стандарт хэш- функции *[ГОСТХ941, который используется в стандартах цифровой подписи *[ГОСТП94] и *[ГОСТ01]. — Прим. ред.
13.3. Безусловно безопасная аутентификация 283 ключ / код 00 01 10 11 1 0 1 — — 2 1 — 0 — 3 0 — 1 4 — — 1 0 Таблица 13.1. Код аутентификации для двух сообщений. сообщением, знает, что могут быть использованы только два ключа, но не знает, который именно. Поэтому вероятность успешной под- мены также равна 1/2. Например, если Ева перехватывает 01, то она знает, что было послано либо сообщение 1 (относительно ключа 1/, ли- бо сообщение 0 (относительно ключа 3). В первом случае она долэюна передать 00, а во втором — 11 и, значит, ее успех имеет вероятность 1/2. Эта схема обеспечивает и секретность, потому что любое передан- ное слово может порождаться как сообщением 0, так и сообщением 1 (оба события имеют вероятность Общее определение кода аутентификации таково (здесь мы откло- няемся от стандартных обозначений из теории кодов аутентификации, чтобы избежать смешения со стандартными обозначениями из теории кодов, исправляющих ошибки)4: Определение 13.1 Код аутентификации — это тройка (Л4,/С,С) вместе с отобра- жением f : А4 х /С С, таким, что для всех т, mr G Л4 и всех к е К, fkirn) = => т, = тп!. (13.1) Множество Л4 называется множеством сообщений, К — мно- жеством ключей, С — множеством кодовых слов. Код аутентификации можно описать таблицей U, в которой строки индексированы ключами к из /С, столбцы — кодовыми словами с из С, а в клетке с индексами (к, с) стоит либо такое тп Е А4, что Д(т) = с (если оно существует; тогда в силу (13.1) оно единственно), либо стоит прочерк, если такого т нет. Эту таблицу мы будем называть матрицей аутентификации данного кода. В примере 13.4 Л4 = {0,1}, /С — {1,2,3,4} и С — {00,01,10,11}. Матрица аутентификации этого кода задана в табл. 13.1. Условие (13.1) означает, что Д инъективно для каждого ключа к. Когда Боб получает кодовое слово с Е С от Алисы, он принимает с как подписанную версию сообщения т Е А4, где т однозначно опреде- лено равенством Д(т) = с. Здесь к — ключ, уже согласованный Алисой 4В терминах, вводимых ниже, слово “множество” часто заменяется словом “про- странство”; мы послушно следуем автору.— Прим. ред.
284 Глава 13. Хэш-коды и техника аутентификации и Бобом. Чтобы система была практичной, Д должно быть легко обра- тимым для каждого ключа k. С этой целью структуру Д (и С) часто значительно упрощают. Определение 13.2 А-код — это тройка (Л4,/С,Т) вместе с отображением д : Л4 х х/С —> Т. При данном ключе к Е К, сообщение тп передается в виде (m, t), где t = дь (тп) называется аутентификатором сообщения тп. Беря Д(тп) = (т, дь(тп)) и С = АЛ х 7", мы видим, что А-код — это частный случай кода аутентификации. Хороший код аутентификации строится таким образом, чтобы под- ложные слова с равномерно распределялись над С, тогда как подмноже- ство слов, ожидаемых легитимным получателем, знающим общий ключ к Е X, было лишь [небольшой] частью этого множества. Поэтому при создании кода аутентификации цель состоит в том, что- бы не только Боб, но и арбитр мог проверить аутентичность правильно созданного с (в случае А-кода проверяется, что дк(тп) = t, а в случае произвольного кода аутентификации проверяется, что с лежит в образе отображения Д), но имперсонификатор, который не знает ключа, имел бы лишь малую вероятность получить допустимое слово с. Атака импер- сонификатора называется атакой имперсонификации5. Вышесказанное должно оставаться верным и в случае, когда против- ник хочет подменить подлинное кодовое слово с (полученное с правиль- ным ключом) другим словом с, которое представляет иное сообщение. Этот сорт атаки называют атакой подмены. Заметим, что в этом слу- чае противнику доступна некоторая информация о ключе. Мы не будем обсуждать системы, в которых один и тот же ключ может безопасно использоваться легитимными сторонами более одного раза. В последующих определениях мы будем предполагать, что как клю- чи, так и сообщения выбираются случайно из множеств /С и, соответ- ственно, АЛ с равномерным распределением вероятностей. Допустим, что Алиса и Боб используют некий общий код аутенти- фикации. Чтобы максимизировать вероятность успешной имперсонифи- кации, противник не может сделать ничего лучшего, нежели выбрать и послать кодовое слово с Е С, которое имеет наибольшую вероятность быть принятым легитимным получателем. В этом случае кодовое сло- во с должно лежать в образе отображений Д для максимального числа ключей k Е К.. Говоря иными словами, в матрице аутентификации ищется столбец, содержащий максимальное число не-прочерков [т.е. минимальное число прочерков]. Тогда посылается индекс с этого столбца. 5В российской криптографической литературе имперсонификацию часто называ- ют “имитацией”. — Прим. ред.
13.3. Безусловно безопасная аутентификация 285 Определение 13.3 Вероятность Р/ — это максимальная вероятность успешной ата- ки имперсонификации, т.е. Л = (13.2) сеС | /С I В примере 13.4 каждое кодовое слово является образом какого-то со- общения относительно ровно двух из четырех ключей (в каждом столбце из 4 клеток — 2 не-прочерка). Поэтому Pj = 2/4 = 1/2. В случае атаки подмены перехватывается кодовое слово с Е С. Это сужает множество ключей, которые могли быть использованы отправи- телем и получателем, до множества {k Е /С|с Е fk(-M)}. Тогда наилуч- шая атака для противника — искать среди кодовых слов, допустимых для данных ключей, слово, которое встречается наиболее часто. Говоря иными словами, в матрице аутентификации данного кода отыскивается столбец с перехваченным индексом с и из матрицы уда- ляются все строки, содержащие прочерк в этом столбце (это строки, индексированные ключами, которые не могли быть использованы). Уда- ляется также столбец с индексом с. Среди оставшихся столбцов ищется столбец с наибольшим числом не-прочерков. Индекс с1 этого столбца и будет подменой для с. Определение 13.4 Вероятность Pg — это максимальная вероятность успешной ата- ки подмены, т.е. \{к е К\с, г е ММ)}\ с,с1 ес,с/с' |{fc Е /С|с Е Д(Л4)}| (13.3) В примере 13.4 каждое кодовое слово является образом какого-то со- общения относительно ровно двух из четырех ключей. Для каждого из этих двух ключей различные возможные сообщения отображаются в раз- личные кодовые слова. Поэтому Pg = 1/2. Максимальная из двух вероятностей (13.2) и (13.3) часто называется вероятностью успешного обмана (deception). Она дается формулой FD = max{Fi,Fs}. (13.4) Поскольку функция аутентификации Д инъективна для каждого к Е Е /С, ровно |Л41 кодовых слов должны быть аутентичны для любого дан- ного ключа. Другими словами, каждая строка матрицы аутентификации U кода аутентификации содержит ровно |Л41 не-прочерков. Из того, что U имеет |/С| строк и |С| столбцов, следует, что среднее число не-прочерков на столбец из U равно |/С| х |Л4|/|С|. Таким образом, максимальная доля не-прочерков на столбец не меньше |Л4|/|С|. Это доказывает следующую теорему.
286 Глава 13. Хэш-коды и техника аутентификации Теорема 13.2 Максимальная вероятность Р/ успешной имперсонификации в схеме аутентификации для кода (Л4,/С,С) удовлетворяет нера- венству Р/ > |М|/|С|. Аналогично предыдущему, в случае атаки подмены сужение мат- рицы аутентификации U на строки, которые в столбце с индексом с, где с — перехваченное кодовое слово, содержат не-прочерки, состоит из |{/с G /С|с G Д(Л4)}| строк. После удаления столбца с индексом с новое сужение имеет |С| — 1 столбцов и |Л4| — 1 не-прочерков в каждой строке. Таким образом, среднее значение относительной частоты не-прочерков в последнем сужении равно (|Л4| — 1)/(|С| — 1). Это дает следующую границу. Теорема 13.3 Максимальная вероятность Р$ успешной подмены в схеме ау- тентификации для (Л4, /С, С) удовлетворяет неравенству PS>^Y1. s- |С| — 1 Даже если сообщения и ключи распределены неравномерно на про- странствах сообщений и ключей соответственно, то все еще можно вы- вести нижние границы для Pj, Ps и Pp. В этих оценках появляются функции, которые обсуждались в гл. 5. Доказательства следующих двух теорем заинтересованный читатель может найти в [Joha94b]. Теорема 13.4 Пусть М, КиС — случайные переменные, определенные на XI, К,иС соответственно, связанные отображением f : х /С —> С, удовлетворяющим (13.1). Далее, пусть H(X\Y) и I(X;Y) обо- значают функцию условной энтропии и, соответственно, функ- цию взаимной информации. Тогда Р/ > (13.5) Ps > Р°~ vW’ (13.6) (13.7) Граница в неравенстве (13.7) называется границей квадратного корня. Коды аутентификации, достигающие этой границы, называют совершен- ными. Теорема 13.5 Необходимым условием совершенности кода аутентификации служит неравенство |М| < ч/pq + i.
13.3. Безусловно безопасная аутентификация 287 Для дальнейшего изучения кодов аутентификации рекомендуем чи- тателю работы [GilMS74], [MeOoV97], [Schne96] и [Simm92]. 13.3.2 Конструкция проективной плоскости В [GHMS74] можно найти изящное описание одной совершенной схе- мы аутентификации. Прежде, чем объяснить эту схему, мы должны рас- сказать, что такое проективная плоскость. □ Конечная проективная плоскость Проективная плоскость — это некий геометрический объект, который несколько отличается от плоскостей в обычной эвклидовой геометрии. Проективная плоскость определяется формальным путем посредством множества аксиом, которые, среди прочего, не допускают параллельных прямых! После определения мы дадим одну конструкцию проективных плоскостей, объясняющую название “проективные”. Начнем с конечного множества Р, чьи элементы называются точ- ками. Далее, С — это совокупность подмножеств £ С Р, называемых прямыми. Говорят, что точка Р “лежит” на прямой £, если Р G £. Ана- логично, две прямые могут “пересекаться” в точке и т.п.; на этом пути адаптируется вся обычная терминология из геометрии. Чтобы избежать тривиальностей, будем предполагать, что каждая прямая содержит по меньшей мере две точки (£ G £ => |£| > 2). Определение 13.5 Пара (Р, £) называется конечной проективной плоскостью, ес- ли выполняются следующие аксиомы: РР-1. Существуют четыре точки, никакие три из которых не лежат на одной прямой. РР-2. Любая пара точек лежит на единственной прямой. РР-3. Любая пара прямых пересекается в единственной точке. Свойство РР-1 позволяет исключить из наших рассмотрений следу- ющий объект (изображенный на рис. 13.1): все прямые, кроме одной, имеют мощность два и проходят через одну и ту же точку, а еще одна прямая проходит через оставшиеся точки. Теорема 13.6 Пусть (Р, £) — конечная проективная плоскость. Тогда суще- ствует константа п, называемая порядком этой плоскости, та- кая, что РР-4. Любая прямая содержит ровно п + 1 точек. РР-5. Любая точка лежит ровно на п + 1 прямых. РР-6. |Р| = |£| = п2 + п + 1.
288 Глава 13. Хэш-коды и техника аутентификации Доказательство. РР-4. На первом шаге мы должны доказать такую “лемму”: каждая точка из Р лежит по меньшей мере на трех различных прямых. Начнем с четырех точекP,Q,Rn S, никакие три из которых неколлинеарны (см. РР-1). Для каждой из этих точек любая из трех других определяет един- ственную прямую, проходящую через них, в силу РР-2. Для точки Т, не лежащей ни на какой прямой, проходящей через две из точек P,Q,R,S, “лемма” также тривиальна (каждая-из этих четырех точек определяет единственную прямую, проходящую через нее и Т). Мы оставляем чита- телю в качестве упражнения доказательство “леммы” для случая, когда точка Т лежит на одной из шести прямых, проходящих через две из точек Р, Q, R и S. Рассмотрим теперь произвольную точку Р. Мы знаем, что через нее проходят по крайней мере три прямые. Пусть точка Q лежит на одной из них, скажем, на прямой £. Покажем, что все другие прямые, про- ходящие через F, имеют одну и ту же мощность. С этой целью возь- мем две прямые а и Ь, проходящие через Р и отличные от £. Пусть Ло = Р, Л1, А2, -.., Ат — все точки на a, a Bq = Р, Bi, В?,..., Вп — все точки на b (см. рис. 13.2). Мы должны показать, что т = п. В силу аксиомы РР-2 для каждого г, 0 < i < тп, существует един- ственная прямая, проходящая через Q и Д. В силу аксиомы РР-3 эта прямая будет пересекать b в единственной точке; назовем ее Вп^. Един- ственность означает, что отображение тг инъективно, откуда вытекает неравенство т < п. Меняя ролями а и Ь, можно заключить, что т = п. Таким образом, все прямые, проходящие через Р, за возможным ис- ключением прямой, проходящей также через Q, имеют одну и ту же мощность n + 1. Беря теперь Q на одной из других прямых, скажем, &, и повторяя приведенные выше рассуждения, заключаем, что все прямые, проходящие через F, имеют мощность п + 1. Пусть точка U отлична от Р. Точно по той же причине, что и выше, все прямые, проходящие через 17, имеют одну и ту же мощность, напри- мер, n + 1. Однако, в силу аксиомы РР-2, одна из этих прямых проходи^ и через Р. Это влечет, что и = п.
13.3. Безусловно безопасная аутентификация 289 Рис. 13.2. Две прямые, проходящие через точку Р. РР-5. Рассмотрим точку Р и прямую а, не содержащую Р. Пусть Ml, Af2,..., Mn+i — точки на а. Каждая точка Mi вместе с Р определяет, в силу аксиомы РР-2, единственную прямую, проходящую через них. Все эти прямые различны благодаря свойству единственности из РР-2. С другой стороны, любая прямая, проходящая через Р, должна пересекать а в единственной точке. Заключаем, что через Р проходят п+1 прямых. РР-6. Рассмотрим точку Р. Имеется n + 1 прямых, содержащих Р, и каждая из них содержит п других точек. В целом это дает 1 + (п + 1)п точек. В силу РР-2 других точек в Р нет. Аналогично, рассмотрим прямую £. На ней имеется n + 1 точек, и каждая лежит на п других прямых. В целом это дает 1 + (п + 1)п пря- мых. В силу РР-3 других прямых в С нет. (Отметим симметрию между точками и прямыми в определении 13.5.) Пример 13.5 Возьмем п = 2. Тогда |Р| = |£| = 7. Каждая прямая содержит три точки, и каждая точка лежит на трех прямых. Эта проективная плоскость изображена на рис. 13.3. На этом рисунке 7 прямых суть три внешних стороны треуголь- ника, три медианы и овал в середине. Таким образом, £ состоит из следующих семи прямых: €1 = {Pi,F2,F3}, €2 = {Pi,P4,P5} £3 = {Pi, Р6, Р7}, €4 = {Р2,Р4,Р6} £5 = {Р2,Р5,Р7}, €6 = {Р3,Р4,Р7} £7 = {Р3,Р5,Р6}. Проективная плоскость порядка 2 единственна и называется плос- костью Фано. Проективную плоскость часто описывают ее матрицей инцидентно- сти. Это матрица А, строки которой индексированы прямыми £ G £,
290 Глава 13. Хэш-коды и техника аутентификации Рис. 13.3. Плоскость Фано. столбцы — точками Р G Р и где = 1, если Р лежит на £, 0 в противном случае. Матрицей инцидентности плоскости Фано (с метками, указанными на рисунке) служит А = / 1 1 1 0 0 о \ 0 1 о о 1 1 о о 1 о о о о 1 1 о о о о \ 110 0 0 0 11 10 10 0 10 1 10 0 1 0 110/ Свойства из определения 13.5 и теоремы 13.6 непосредственно пере- водятся в следующие требования к матрице инцидентности: РР-2. Скалярное произведение двух различных столбцов из А равно 1. РР-3. Скалярное произведение двух различных строк из А равно 1. РР-4. Любая строка в А содержит п + 1 единиц. РР-5. Любой столбец в А содержит п + 1 единиц. РР-6. А — квадратная матрица порядка n2 + п + 1.
13.3. Безусловно безопасная аутентификация 291 Эти свойства резюмируются формулой А • Ат = Ат • А = п • I + J, (13.8) где J — квадратная матрица порядка n2 + n + 1, состоящая сплошь из единиц, а I — единичная матрица (того же порядка). Для данного выше примера это можно проверить с помощью функ- ций Transpose и MatrixForm пакета “Mathematica”. MatrixForm[A*Transpose[А]] MatrixForm[Transpose[A]*A] /31111114 13 11111 113 1111 1113 111 11113 11 111113 1 \1111113/ /31111114 13 11111 113 1111 1113 111 11113 11 111113 1 \1111113/ □ Общая конструкция проективной плоскости Имеется общая конструкция проективных плоскостей порядка q, где q — степень простого числа. Существуют и другие конструкции проек- тивных плоскостей, но все они имеют порядок, равный степени простого числа. Было показано, что не существует проективных плоскостей по- рядков б и 10. Через V(3, q) обозначим 3-мерное векторное пространство над конеч- ным полем GF(q') из q элементов. Элементами пространства служат век- торы а = (а1,а2,аз), где а< G GF(^). Мощность V(3,qf) равна q3. Пусть 0= (0,0,0). Каждая прямая, проходящая через 0, может быть охарактеризована ненулевым вектором а: {Ла|Л G GF(?)}. (13.9) Конечно, ненулевое скалярное кратное вектора а дает ту же самую пря- мую в V(3,q). Таким образом, существуют (q3 — 1)/(<? — 1) = q2 + q + 1 различных прямых, содержащих 0. Аналогично, плоскость, проходящая через 0 в V(3,^), может быть охарактеризована ненулевым вектором иг {(ai,a2,a3) G У(3,<у)+ а2а2 + «з^з = 0}. (13.10) Снова ненулевое скалярное кратное вектора и дает ту же самую плос- кость в V(3, q). Поэтому имеется (q3 — l)/(q — 1) = q2 + q + 1 различных плоскостей, содержащих 0. Иное описание плоскости, проходящей через О, — это {Ла + дЬ|Л, р Е GF(q')}.
292 Глава 13. Хэш-коды и техника аутентификации Каждая ненулевая точка на плоскости, проходящей через 0, опреде- ляет прямую, проходящую через 0. Как и выше, ненулевые скалярные кратные этой точки определяют ту же самую прямую. Следовательно, имеется (q2 — l)/(q — 1) = q + 1 прямых (содержащих 0) на плоскости (содержащей 0). Каждую прямую {Аа|А Е GF(q)} можно вложить в плоскость {Аа + +дЬ|А, д Е GF(q)}, выбрав любую из q3 — q точек, не лежащих на данной прямой. Конечно, не все эти плоскости различны. Отдельная плоскость, содержащая {Аа|А Е GF(q)}, получается при выборе любой из q2 — q точек этой плоскости, не лежащих на данной прямой. Отсюда следует, что каждая прямая (содержащая 0) лежит в точности на (q3 — q)/(q2 - —q) = q + 1 плоскостях (содержащих 0). Теорема 13.7 Пусть q — степень простого числа, Р — множество всех прямых в V(3, q), проходящих через 0, £ — множество всех плоскостей в V(3,q), проходящих через 0. Тогда (Р, £) — проективная плос- кость порядка q. Замечание 1. Здесь легко запутаться: проективные точки соответ- ствуют прямым из V(3, q) (содержащим 0), а проективные прямые —- плоскостям из V(3,q) (содержащим 0). Замечание 2. Отметим, что свойства РР-4, РР-5 и РР-б, указанные в теореме 13.6, уже проверены. Доказательство теоремы 13.7. Проверим аксиомы. РР-1. Четыре прямые, проходящие через 0 и одну из точек (1,0,0), (0,1,0), (0,0,1), (1,1,1), определяют четыре проективные точки в Р, ника- кие три из которых не лежат на одной проективной прямой. Основанием служит то, что никакие три из указанных четырех точек в V(3,q) не лежат в одной плоскости, проходящей через 0. РР-2. Пусть Р и Q — две различные проективные точки, опреде- ляемые прямыми {Аа|А Е GF(q)} и {А6|А Е GF(q)} в У(3, q). Суще- ствует в точности одна плоскость, содержащая эти прямые, а именно {Аа + дЬ|А,д Е GF(q)}. Эта плоскость определяет единственную проек- тивную прямую, проходящую через Р и Q. РР-3. Пусть а и b — различные проективные прямые. Они соответ- ствуют двум плоскостям в V(3, q), содержащим 0. Пересечением этих плоскостей является прямая, содержащая 0, которая определяет един- ственную проективную точку, общую для а и Ь. Существует различная техника для порождения q2 + q + 1 ненулевых точек в V(3,q), которая приводит к различным прямым и плоскостям в V(3, q), проходящим через 0 (см. (13.9) и (13.10)), т.е. к q2 + q + 1 раз- личным проективным точкам и, соответственно, проективным прямым. Элегантный способ — как мы увидим в ближайшем примере — взять какой-нибудь примитивный элемент ш в GF(q3), представить его
13.3. Безусловно безопасная аутентификация 293 как вектор в V(3, q) и выбрать в качестве нужных точек элементы ... ,wq2+q. В самом деле, положим а = u?g2+g+1 = ц/з3-1)/(q-i). pj3 того факта, что ш имеет порядок q3 — 1, следует, что а имеет порядок q— 1. Это также влечет, что {0,1, а,... , а9””2} = GF(<?) (см. теорему В.29 и за- мечание в конце подразд. В.4.6). Поэтому для каждого J, 1 < j < q — 2, точки ш1 и -!)/(9-1) в у(35 д) приводят к одной и той же проектив- ной точке и; значит, нужно рассматривать лишь 1,и?,... , u?9 +9. Пример 13.6 Возьмем q = 3. Чтобы найти примитивный многочлен степени 3 над GF(3), нужно сначала загрузить пакет Algebra‘FiniteFieldse из “Mathematica”, а затем применить функцию Fieldlrreducible. << Algebra<FiniteFields< m = 3; р = 3; Fieldlrreducible [GF [р, m] , х] II 1 + 2х2 + х3 Таким образом, GF(33) описывается множеством тернарных мно- гочленов по модулю f(x) = х3 + 2ж2 + 1. Пусть ш Е GF(33) — нуль многочлена f(x). Так как f(x) примитивен, ш имеет порядок 26. Это легко проверить: 127 = GF[3, {1, О, 2, 1}] ; от = f27[{0, 1, 0}] ; от2 от13 II {0, 0, 1}3 II {2, 0, 0}3 В данном случае элемент а = uAq3~1'M(q'~1'} равен со13 = 2. Очевидно, {0,1, о} = GF(3). Таким образом, З2 + 3 + 1 = 13 проективных точек можно найти, вычисляя u?,0 < i < 13. В этом примере, чтобы сделать выход единообразным по форме, мы возьмем эквивалентное множество индексов i : 1 < i < 13. Do [Print [от1] , <i, 1, 13}] {0, 1, 0}3 {0, o, Из {2, 0, Из {2, 2, Из {2, 1, 1}3 {2, 2, 2}3 <1, 2, 1}3 <2, 1, 0}3
294 Глава 13. Хэш-коды и техника аутентификации {2, 2, 0}3 {0, 2, 1}3 {О, 2, 2}3 {2, О, 0}3 {1, О, 1}3 Чтобы проверить, лежит ли проективная точка и/ = (01,02,0-3) на проективной прямой, определяемой вектором иР = (и^иъ-уиф) (см. (13.10)), нужно выяснить, будет ли аущ + 02W2 + 03-03 = 0. В пакете “Mathematica” это можно сделать следующим образом f[[l]] удаляет нижний индекс в представленном выходе): i = 5; j = 12; а = от1 [[1]] b = omJ [[1]] Mod [а * b, 3] == О II <2, 2, 0} II <0, 2, 1} II False Итак, мы готовы генерировать проективную плоскость порядка 3. Представим ее посредством матрицы инцидентности. А = Table [If [Mod[Com1 [ [1]])*(опР [[1] ]) , 3] == 0, 1, 0] , <i, 1, 13}, <j, 1, 13}]; MatrixForm[A] /01 100010000014 1000100000101 1000001011000 0001011000100 0100000101100 0001000001011 1011000100000 0000101100010 0010000010110 0010110001000 0101100010000 0000010110001 \1 100010000010/ Свойства РР-2, PP-3, РРЛ и PP-5 можно проверить вычислением (см. (13.8)) MatrixForm[А * Transpose[А]]
13.3. Безусловно безопасная аутентификация 295 /4111 14 11 114 1 1114 1111 1111 1111 1111 1111 1111 1111 1111 \ 1 1 1 1 11111 11111 11111 11111 4 1111 14 111 114 11 1114 1 11114 11111 11111 11111 11111 1 1 1 1 \ 1111 1111 1111 1111 1111 1111 1111 1111 4 111 14 11 114 1 1114/ □ Код аутентификации, определяемый проективной плоскостью Определение 13.6 Пусть (Р, £,) — проективная плоскость, £ — одна из проектив- ных прямых. Соответствующий код аутентификации опреде- лется условиями: Л4=£, К = Р\£, С = £\{£}; fp(Q) — единственная прямая, проходящая через Р и Q, где Р е /С, Q G А4. Итак, множество сообщений А4 состоит из точек на £, ключевое про- странство состоит из всех точек, не лежащих на £, множество С кодовых слов состоит из всех прямых, исключая £. Восстановление сообщения из полученного кодового слова произво- дится легко: нужно просто пересечь с — fp(Q) с £. Точка пересечения и будет сообщением. То, что описанная схема определяет код аутентификации, очевидно. Параметры кода дает следующая теорема. Теорема 13.8 Код аутентификации, определяемый проективной плоскостью порядка п, имеет параметры | Л41 = n + 1, |/С| = п2, |С| = п2 + п. Вероятности успеха атак имперсонификации и подмены даются равенствами Pl = Ps= - п
296 Глава 13. Хэш-коды и техника аутентификации Читатель может проверить эту теорему на примере плоскости Фа- но. Четыре точки вне £ (см. рис. 13.4) образуют ключевое пространство /С, три точки на £ — пространство сообщений Л4, отличные от £ шесть прямых — множество С кодовых слов. Рис. 13.4. Проверка теоремы 13.8 на примере плоскости Фано. Доказательство теоремы 13.8. Утверждение о параметрах прямо следует из теоремы 13.6. Для вычисления Р/ заметим, что противник не может сделать ниче- го лучшего, как выбрать в качестве кодового слова прямую с (с £), содержащую как можно больше точек вне £ (они являются возможными ключами). Однако число таких точек не зависит от выбора с. В силу свойства РР-4 оно равно п. Поэтому, согласно равенству (13.2), = п = п = 1 1 |/С| п2 п' Аналогично, если противник наблюдает кодовое слово с (отличное от £), все еще остаются п возможных ключей (точек на с, не лежащих па £). Пусть Р — пересечение с и £. Чтобы заменить Р другим сообщением (точкой Q на £), противник не может сделать ничего лучшего, как вы- брать прямую d, проходящую через Q, с наибольшим множеством точек на с. Но в силу аксиомы РР-2 это число равно 1 независимо от выбора с и d, а именно — это единственная точка пересечения с и d. Поэтому, согласно равенству (13.3), п Коды аутентификации, определяемые проективными плоскостями, совершенны, потому как Р/, Ps и Pjj все равны 1/п, а это равно 3 . V14
13.3. Безусловно безопасная аутентификация 297 Сверх того, |Л4| = п+1 = vW+1 и теорема 13.5 говорит, что множе- ство сообщений имеет максимальный размер при данном пространстве ключей. В [Joha94a] можно найти построение кодов аутентификации с помо- щью последовательностей регистров сдвига. Их реализация проще, чем приведенная выше конструкция на базе проективной плоскости. Для больших множеств сообщений, например, файлов данных, более прак- тичны коды, обсуждаемые в подразд. 13.3.4. 13.3.3 A-коды, определяемые ортогональными массивами Определение 13.7 Ортогональный массив OA(n, fc, А) — это к х (А • п2)-матрица над п символами, такая, что в любых двух строках каждая воз- можная пара символов встречается ровно А раз. Число А называется индексом ортогонального массива, а к — его глубиной. Из этого определения следует, что каждый символ встречается ровно А • п раз в каждой строке. Пример 13.7 (часть 1) Приведем пример ортогонального массива ОА(4,5,1): и = /0000111122223333 0123012301230123 0123103223013210 0123230132101032 \0123321010322301 Следующая теорема показывает, как естественным образом ортого- нальные массивы определяют А-коды. Теорема 13.9 Пусть U — ортогональный массив OA(n, fc,A). Пусть строки в U индексированы множеством Л4, а столбцы — множеством ТС. Далее, положим Т — {1, 2,... ,п} и определим отображение g : Л4 х /С —> Т равенствами = Um,k. Тогда g определяет A-код с параметрами |Л4| = к, |/С| = А-n2, |Т| = п. Сверх этого, Pi = Ps = 1/n. Доказательство. Параметры A-кода определяются параметрами матрицы U.
298 Глава 13. Хэш-коды и техника аутентификации Шансы на успешную атаку имперсонификации составляют 1/п, пото- му что в любой строке U каждый символ встречается одинаково часто. Вероятность успешной атаки подмены также равна 1/п. Причина в том, что каждый перехваченный аутентификатор встречается Л раз с каждым символом, все равно, какое сообщение перехвачено и каким со- общением его желательно заменить. Пример 13.7 (часть 2) В матрице U, определенной выше, сообщение 4 относительно ключа 13 будет аутентифицировано так: m = 4; к = 13; U[[m, к]] II 1 Когда перехвачено сообщение 4 с аутентификатором 1, известно, что ключ лежит в множестве {2, 8,11,13}. “Mathematica” может най- ти эти позиции с помощью функций Flatten и Position: 1 = Flatten[Position[U[[4]], 1]] || <2, 8, 11, 13} Каждая из остальных строк на этих четырех местах содер- жит все четыре символа. Это можно проверить с помощью функций MatrixForm и Transpose. Ниже [[/]] дает сужение матрицы на строки, индексированные элементами списка I. SubU = Transpose[U] [[!]]; I MatrixForm[Transpose[SubU]] / 0 1 2 3 \ 13 2 0 12 0 3 1111 \ 1 0 3 2 / Имеется очень много литературы по ортогональным массивам. См. [На1167] или [BeJL86] относительно их конструкции, границ и результа- тов существования. Например, известно, что OA(g, q 4- 1,1) существуют для всех степеней q простых чисел, поскольку ортогональные массивы с этими параметрами существуют тогда и только тогда, когда существуют проективные плоскости порядка q (см. теорему 13.7 о построении проек- тивной плоскости порядка q). Ниже мы даем набросок доказательства этого результата.
13.3. Безусловно безопасная аутентификация 299 Пусть (Р, С} — проективная плоскость порядка q. Выберем в £ произ- вольную прямую £. Занумеруем ее точки: Pi, Р%,..., Pq+i', пусть осталь- ные точки плоскости — это Qi, Q2, • • •, Qq2- Далее, пусть Ci, 1 < г < q + 1, — совокупность всех прямых, проходя- щих через Pi за исключением самой £. В силу свойства РР-5 каждое Ci имеет мощность q. Занумеруем прямые в каждом Ci от 1 до q. Определим Uij, 1 < г < q + 1,1 < j < q2, положив Uij = к, где fc, 1 < k < q, — индекс единственной прямой в Ci, которая содержит Qj (это единственная прямая в С, проходящая через Pi и Qj)- Тогда U является ОА(</, q + 1,1). Пример 13.8 Рассмотрим матрицу инцидентности А проективной плоскости порядка 3 из примера 13.6: /01 100010000014 1000100000101 1000001011000 0001011000100 0100000101100 0001000001011 А = 1011000100000 ; 0000101100010 0010000010110 0010110001000 0101100010000 0000010110001 \ 1 100010000010/ Определим функцию RowSwap, чтобы выполнять перестановки строк в матрице. RowSwap [В_, i_, j_] := Module [-(U, V}, U = В; V = U[ [i]] ; U[ [i] ] = U[ [j] ] ; U[ [j] ] = V; U] ; Теперь мы выполним некоторые перестановки столбцов в А, чтобы получить прямую в верхней строке, все точки которой лежат слева. Используем функцию Transpose. В = Transpose[А]; В = RowSwap [В, 1, 7] ; В = RowSwap [В, 4, 13] ; В = Transpose[В]; MatrixForm [В]
300 Глава 13. Хэш-коды и техника аутентификации / 1 1 1 1 0 0 0 0 0 0 0 0 0 \ 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 \ 0 1 0 0 0 1 1 0 0 0 0 1 0 ) Теперь выполним ряд перестановок строк, чтобы получить хоро- шо выровненные подмножества Ci (С\ будет располагаться в строках 2,3,4, С2 в строках 5,6,7 и т.д.). ВВ = В; BB = RowSwap[ВВ, 2, 8]; BB = RowSwap[ВВ, 6, 11]; BB = RowSwap[ВВ, 7, 13]; ВВ = RowSwap[ВВ, 8, 13]; MatrixForm[ВВ] /1111 10 0 0 10 0 0 10 0 0 0 10 0 0 10 0 0 10 0 0 0 10 0 0 10 0 0 10 0 0 0 1 0 0 0 1 \ 0 0 0 1 0 0 0 0 0 10 0 10 0 0 10 1 0 10 0 0 0 0 0 1 0 1 0 0 0 1 0 110 0 0 0 110 0 0 0 0 1 110 0 0 0 0 0 0 0 0 10 11 10 10 0 о о о о \ 0 0 10 10 0 0 0 10 1 110 0 0 0 0 1 0 0 10 0 0 0 1 0 110 10 0 0 10 11 0 0 0 0 0 10 0/ Последние 9 столбцов определяют ортогональный массив ОА(3, 4,1). Например, столбец 5 без его первого входа имеет вид (1, 0,0, 0,1, 0, 0,0,1, 0,0,1). Этот вектор конкатенация четырех троек, каждая из ко- торых содержит одну 1. Он отображается на четыре входа из множе- ства {1,2,3} в зависимости от того, будет ли 1 первой координатой, второй или третьей; поэтому столбец 5 отображается в столбец (1, 2,3,3). Таким образом, последние 9 столбцов с помощью функций Table, If и Do пакета “Mathematica” отображаются на 4 х ^-матрицу:
13.3. Безусловно безопасная аутентификация 301 U = Table[0, {i, 1, 4}, £j, 1, 9}]; Do[b = {ВВ[[2 + (i - 1) * 3, j]] , BB[[3 + (i - 1) * 3, j]], BB[[4 + (i - 1) * 3, j]]}; U[[i, j - 4]] = If[b == {1, 0, 0}, 1, If [b == {0, 1, 0}, 2, 3]], {i, 1, 4}, 2, 3]], MatrixForm [U] /1321223134 1233121132] 331123221 \32322131 1/ Это u в самом деле OA(3,4,1) u, следовательно, определяет А-код с параметрами |Л41 = 4, |/С| = 9, |7~| = 3 и Pi = Ps = 1/3. Заметим, что последние 9 столбцов в U (или в А) можно еще пе- реставить для получения матрицы /1 1 12 2 23334 [123123123] 132321213 \231 12331 2/ 13.3.4 A-коды, определяемые кодами, исправляющими ошибки В [JohKS93] показано, как можно строить коды аутентификации, исходя из кодов, исправляющих ошибки (или ЕС-кодов — от Error- Correcting Codes), и обратно. В этом подразделе мы покажем, как пре- образовать ЕС-код в A-код. Наше описание слегка отличается от ориги- нального. Пусть С — произвольный (п, |С|, дн)-ЕС-код над GF(<?), т.е. С — под- множество n-мерного векторного пространства V(n,q) над GF(<?) с ми- нимальным расстоянием Хэмминга д,ц. Последнее означает, что все эле- менты в С, называемые кодовыми словами, отличаются друг от друга по меньшей мере в du координатах. Размерность п пространства V(n,q) называют также длиной кода С. Пусть С обладает дополнительным свойством: с G С ==> с + Л1 € С для всех Л G GF(<?), (13.11) где 1 — вектор, состоящий только из единиц. Например, любой линейный код, содержащий вектор _1, удовлетворяет уловию (13.11). Заметим, что из (13.11) следует, что q делит мощность С. Отношение ~, определяемое на С условием с ~ с' <=> с — d = Л1 для некоторого Л G GF(<?), (13.12)
302 Глава 13. Хэш-коды и техника аутентификации является отношением эквивалентности. Пусть М — подкод в (7, содер- жащий по одному представителю из каждого класса эквивалентности. Таким образом, М имеет мощность \C\/q, а С = {тп 4- А1|т. € М, Л G G GF(q)}. Пусть т^, 0 < г < |<3*|/<7, — произвольное перечисление кодовых слов из М. В качестве множества Л4 сообщений для кода аутентификации, который здесь строится, возьмем Л4 = {0,1,... , (|(7|/<j) — 1}. Это означа- ет, что имеется взаимно однозначное соответствие между подкодом М и индексным множеством Л4. Часто удобно не различать эти два множе- ства. Поэтому, начиная с этого места, мы будем говорить о сообщении mj вместо сообщения i. Пример 13.9 (часть 1) Рассмотрим бинарный линейный код С с порождающей матрицей 10001 1 о \ 0 10 0 10 11 0 0 1 0 0 1 1’ 0001111/ Это означает, что С состоит из 16 векторов (бинарной) линейной оболочки строк. Легко проверить, что различные кодовые слова из С различаются по меньшей мере тремя координатами. Это делает С (7,16, 3)-кодом в V(7, 2). Некоторые читатели могут узнать в С код Хэмминга. Легко проверить, что вектор 1 лежит в С: inf = {1, 1, 1, 1}; Mod [inf * С, 2] || {1, 1, 1, 1, 1, 1, 1} Отсюда вытекает, что С удовлетворяет уловию (13.11). В качестве подкода М в С возьмем все кодовые слова из С с нулевой первой координатой. Таким образом, М является линейной оболочкой трех нижних строк из G. Множество сообщений А4 отождествляет- ся с М. Множество ключей /С кода аутентификации, который строится здесь, будет состоять из пар (г, Л), где 1<г<пиАб GF(<?). Таким образом, X = {1,2,..., п} х GF(<?) и |7С| = п • q. Аутентификатор _щ(ш) сообщения т € М относительно ключа к — = (г, Л) дается равенством 9к(гп) = тщ -Ь Л. (13.13) Поэтому множество 7” аутентификаторов просто совпадает с GF(g).
13.3. Безусловно безопасная аутентификация 303 Теорема 13.10 Пусть С — (п.ДС\,Нн}-коц, удовлетворяющий (13.11), а М — подкод в О', содержащий по одному элементу из каждого клас- са эквивалентности относительно отношения (13.12). Пусть /С = = {1,2, ...,п} х GF(g), Т = GF(<?) и отображение д определя- ется равенством (13.13). Тогда (Л1,/С,7~) является A-кодом с параметрами \M\ = \C\/q, |/С| = п • <7, \Т\ = д; (13.14) Р1 = 1/<?, Ps<l~ dH/n. (13.15) Замечание. Чтобы сделать Р$ приемлемо низкой, нужны ЕС-коды с (1ц, близким к п. Как мы увидим в примере 13.10, для g-арных кодов это — не проблема. Разумеется, q тоже должно быть большим. Доказательство теоремы 13.10. Параметры в (13.14) непосред- ственно определяются конструкцией. Чтобы вычислить Р/, заметим, что противник, желающий имперсо- нифицировать отправителя, должен найти правильный аутентификатор для своего сообщения тп'. Однако для каждой i-й координаты,1 < i < п, множество {mi -Ь А|А G GF(g)} совпадает с GF(g). Иными словами, каж- дый символ встречается одинаково часто как аутентификатор для тп'. Поэтому вероятность того, что противник выберет правильный аутенти- фикатор, равна 1/q независимо от выбора аутентификатора и сообще- ния т', которые противник попытается передать. Это доказывает, что Р/ = 1/q. Противник, который хочет подменить аутентифицированное сообще- ние (m,t) (где t = щ(т)) другим аутентифицированным сообщением, знает, что использованный ключ взят из множества п возможных клю- чей (г, Л). Более точно, для каждой i-й координаты, 1 < г < п, существует единственное значение Л, такое, что пц + Л = t. Оптимальная стратегия для противника, который хочет подменить сообщение (m, t) другим аутентифицированным сообщением, — найти такое сообщение тп/, тп' 7^ тп, что щ.(тх) = t' для возможно большего числа из п ключей. Символ t' — аутентификатор для тп', который будет принят с наибольшим правдоподобием. Остается показать, что t' будет принят самое большее в п — dn слу- чаях, откуда следует, что вероятность успешной подмены равна самое большее (n — dn)/n — 1 — dH/n. Это утверждение вытекает из следую- щей цепочки соотношений: |{(г, Л) € {1, 2,... , п} х GF(g)|(ni)i + Л = t & (ш')г + А = Р}| = = |{г| 1 < i < n, (m — т'\ = t — t'}| = = п — d/f(m — тп', (t — Р)1) < n - d/f,
304 Глава 13. Хэш-коды и техника аутентификации поскольку m — тп' и (t — t')l — различные слова кода С (т и тп! лежат в разных классах эквивалентности). и Пример 13.9 (часть 2) Чтобы проиллюстрировать вторую часть доказательства, приве- денного выше, мы продолжим рассмотрение кода из примера 13.9. Если Алиса хочет послать сообщение 7, то она находит т с помощью функ- ции IntegerDigits пакета “Mathematica”: mes = 7; inf = IntegerDigits[mes, 2, 4] m = Mod[inf * G, 2] || {0, 1, 1, Il- li <0, 1, 1, 1, 0, 0, 1} (Напомним, что все сообщения имеют нулевую первую координа- ту.) Допустим, что Алиса и Боб имеют согласованный ключ (3,1). То- гда Алиса добавляет к своему сообщению аутентификатор t = (т)з + +1 = 0 (mod 2). Поэтому Алиса посылает i = 3; lam = 1; {mes, Mod[m[[i]] + lam, 2] }• II {7, 0} Противник Ева, наблюдая это кодовое слово, моэюет заключить, что ключ лежит в множестве {(г, Л)|1 < г < 7, тщ + Л = t (mod 2)} = = {(1,0), (2,1), (3, 1), (4,1), (5, 0), (6,0), (7,1)}. Чтобы проверить это, ис- пользуем функции Table и Mod из “Mathematica”. t = 0; Т = Table [{i, Mod[t - m[[i]J, 2]}, {i, 1, 7}J || {{1, 0}, {2, 1}-, {3, 1}, {4, 1}-, {5, 0J-, {6, 0}, {7, 1}} Допустим, что Ева хочет послать сообщение 5. Соответствующее кодовое слово т' задается так: mes’ = 5; inf’ = IntegerDigits[mes’, 2, 4]; m’ = Mod [inf’ * G, 2] II {0, 1, 0, 1, 0, 1, 01-
13.4. Задачи 305 Если Ева выбирает в качестве аутентификатора t' = 0, то ее со- общение будет принято с вероятностью 4/7, потому что в точно- сти четыре возможных ключа приводят к этому аутентификатору. С аутентификатором t' = 1 эта вероятность составит 3/7. (Мы ис- пользуем функции Length и Intersection пакета “Mathematica”.) t’ = 0; Т’ = Table[{i, Mod[t’ - m’EEi]], 2]}, {i, 1, 7}] Length [Intersection [Т, T’]] II {{1, 0}, <2, 1}-, <3, 0}, {4, 1}, {5, 0}, {6, 1}, {7, 0}} II 4 Пример 13.10 q-арный код Рида-Соломона размерности к (см. [MacWSll]) име- ет длину п = q — 1 и минимальное расстояние дн — п — к. Умно- жая каждую координату на подходящую константу, можно предполо- жить, что 1 Е С. Теорема 13.10 дает A-код с параметрами |Л4| = |/С| = (<? - 1)9> Щ = 9; Pi = 1/9, Ps < k/(q - 1). Конечно, метод, изложенный в этом подразделе, — не единственный способ получать А-коды из ЕС-кодов. Он обладает тем свойством, что каждая атака имперсонификации имеет одну и ту же вероятность успеха (именно, 1/д). Из того, что для любого сообщения каждый символ из Т = GF(<?) может служить аутентификатором, вытекает, что множество С кодовых слов имеет мощность |Л4| -q. Это влечет, что в теореме 13.2 выполняется равенство. В [JohKS93] авторы показывают также, как преобразовать A-код в код, исправляющий ошибки. 13.4 Задачи Задача 13.1. Докажите, что из свойств РР-1, РР-2 и РР-3 в определении 13.5 следует, что проективная плоскость содержит четыре прямых, никакие три из которых не проходят через одну и ту же точку. Задача 13.2. Докажите, что плоскость Фано единственна (с точностью до переименования точек и прямых). Задача 13.3. Сравните конструкцию кода аутентификации, определяемо- го проективной плоскостью (см. определение 13.6) с кодом аутентификации, имеющим параметры Л4 = К. = С = и определяемым одноразовым щитом,
306 Глава 13. Хэш-коды и техника аутентификации т.е. тп ь-> с, где с = тп + k (mod q). Рассмотрите тот же вопрос, когда Л4 — случайное подмножество из Zg размера y/q. Задача 13.4. Проверьте, что строки в матрице инцидентности из примера 13.6 можно переставить так, чтобы новая матрица оказалась циркулянтом (т.е. каждая строка — циклический сдвиг вправо предыдущей строки). Задача 13.5м. Используйте ту же технику, что и в примере 13.6, чтобы определить верхнюю строку матрицы инцидентности проективной плоскости порядка 5. Циклически сдвигая эту строку, проверьте, что она определяет про- ективную плоскость порядка 5. Задача 13.6м. Преобразуйте ортогональный массив ОА(4,5,1) из примера 13.7 в проективную плоскость порядка 4. Задача 13.7. Покажите, что условие (13.11) в теореме 13.10 можно за- менить требованием, чтобы С содержало по крайней мере одно кодовое слово веса6 п. Задача 13.8м. Повторите пример 13.9 (обе части) для тернарного (11,Зб,5)- кода, порожденного матрицей /201211000004 02012110000 00201211000 00020121100 00002012110 \0000020121 1/ 6Вес (Хэмминга) вектора — это число его ненулевых координат, т.е. расстояние Хэмминга между данным вектором и нулевым вектором. — Прим. ред.
Глава 14 Протоколы с нулевым разглашением Криптографический протокол — это обмен данными между двумя или более сторонами, следующий точным порядку и формату, с целью достижения особой безопасности. Разумеется, данное выше определение не слишком точное, но мы уже сталкивались с некоторыми примера- ми криптографических протоколов. Один из них — протокол проверки идентичности в разд. 4.1.2, другой — протокол Диффи-Хеллмана обмена ключами, еще несколько других упоминались в разд. 8.2. Доказательство с нулевым разглашением (zero-knowledge proof) — это техника убеждения одним субъектом другого в том, что первый об- ладает определенными знаниями, но при этом не раскрывается ни один бит информации об этих знаниях. Как следствие, ни проверяющий, ни пассивный перехватчик не приобретают никакой информации от участия в любом числе итераций протокола. Можно представить применение протокола с нулевым разглашением в ситуации, когда некто хочет использовать ATM1, чтобы снять деньги с банковского счета. Вместо того, чтобы вводить PIN-код, достаточно убе- дить кассира в том, что этот некто знает PIN-код. Он хочет сделать это таким образом, чтобы никакая информация о PIN-коде не раскрывалась. В ближайшем разделе мы дадим пример того, как это может быть сде- лано. В разд. 14.2 представлена другая техника проверки идентичности. 14.1 Протокол Фиата—Шамира Мы снова, как в подразд. 4.1.2, рассматриваем ситуацию, когда smart- карта хочет убедить устройство чтения карт в своей подлинности. Дове- ренная сторона, которая выпускает эти карты, выбирает большое состав- ное число п, например, берет произведение двух больших простых чисел р и q, как в системе RSA. Число п — системный параметр, известный всем сторонам. Безопасность протокола Фиата-Шамира [FiaS87] базируется на до- 1 По-видимому, это — Asynchronous Transfer Mode (асинхронный режим передачи), базовая технология телекоммуникации, позволяющая передавать данные (включая изображение и звук) с очень высокой скоростью. — Прим. ред.
308 Глава 14. Протоколы с нулевым разглашением пущении, что вычисление квадратных корней по модулю большого со- ставного числа п, вообще говоря, очень трудна. Это то же самое допу- щение, которое делалось при рассмотрении варианта Рабина системы RSA (разд. 9.5). В теореме 9.18 было показано, что проблема нахожде- ния квадратного корня по модулю составного числа так же трудна, как и факторизация последнего. Доверенная сторона вычисляет личный номер ID для smart-карты, который должен обладать дополнительным свойством: ID = s2 (mod n) (14.1) для некоторого целого s. Номер ID может вычисляться, исходя из име- ни владельца карты и других относящихся к делу данных, но несколько битов нужно оставить открытыми для заполнения их доверенной сторо- ной, чтобы сделать ID квадратом целого числа по модулю п (ID должен быть квадратичным вычетом по модулю р и по модулю q). Доверенная сторона вычисляет квадратный корень s из ID (она мо- жет сделать это, так как знает разложение п; см. подразд. 9.5.3) и запи- сывает его в сегмент памяти smart-карты, который недоступен внешнему миру. Один раунд протокола Фиата-Шамира изображен ниже на рис. 14.1. Smart-карта Устройство чтения ЗНАЕТ S,ID,n ЗНАЕТ Tl,ID ID --> ГЕНЕРИРУЕТ СЛУЧАЙНОЕ Г вычисляет t = г2 mod П t --> ВЫБИРАЕТ СЛУЧАЙНОЕ 6 ИЗ {0, 1} е <-- ВЫЧИСЛЯЕТ U = (г • Se) mod П и --> ПРОВЕРЯЕТ, БУДЕТ ЛИ u2 = (t • IDe} mod n Рис. 14.1. Протокол идентификации Фиата-Шамира (один раунд). Smart-карта или владелец карты сообщает устройству чтения карт личный номер ID. Для доказательства того, что карта действительно выпущена доверенной стороной, карта хочет убедить устройство чтения, что она знает s, квадратный корень из ID по модулю п. С этой целью карта генерирует случайное число г, вычисляет его квадрат t = г2 mod п (14.2)
14.1. Протокол Фиата—Шамира 309 и посылает устройству чтения. На жаргоне, принятом в этой области, t называется свидетелем знания картой числа г. Устройство чтения выбирает случайное число е из {0, 1} и предъяв- ляет его карте в качестве вызова (или — на военном жаргоне — оклика). Как именно протокол откликается (отзывается) на вызов, зависит от значения е. Если е = 0, то карта просто посылает случайное число г. Тогда уст- ройство чтения проверяет, действительно ли его квадрат равен получен- ному ранее от карты значению t. Если е = 1, то карта вычисляет и = г • s mod п, произведение случай- ного числа г и секретного квадратного корня s, и посылает и устройству чтения карт. Устройство чтения проверяет, будет ли и2 равно t х ID по модулю п, что должно иметь место, поскольку t = г2 mod п, a ID = s2 (mod n). На рис. 14.1 эти две альтернативы объединены в отклике и = = г • se mod п. Устройство чтения проверяет, будет ли и2 = t • IDe (mod n). (14.3) Должно быть ясно, что если карта может предоставить г (когда е = 0) и в то же время предоставить г • s (когда е = 1), то она долж- на знать квадратный корень s из ID. Также ясно, что если smart-карта не проходит тест (14.3), то устройство чтения должно отвергнуть эту smart-карту. Если неправомочная smart-карта заблаговременно знает значение вы- зова е, то она может обмануть устройство чтения. Это очевидно в случае е = 0. В самом деле, тогда smart-карта берет случайное г, представля- ет t = г2 mod п в качестве свидетеля, а позже представляет само г в качестве отклика. В этих вычислениях секретный квадратный корень s никакой роли не играет. Если нелигитимная карта знает, что вызовом будет 1, она порождает случайное г, вычисляет t = (г2/ID} mod п и представляет это значение t устройству чтения. После получения вызова е = 1 smart-карта пред- ставит и = г. Устройство чтения проверяет (см. (14.3)), будет ли и2 срав- нимо с t • ID по модулю п. А это именно так в случае и = г и t = г2/ID (mod n). Заметим, что неправомочная карта не может правильно ответить на вызов, если ее догадка о вызове неверна. Поэтому smart-карта будет “пой- мана” с вероятностью 1/2, если она случайно предсказывает вызов. По этой причине smart-карта и устройство чтения карт выполняют данный выше протокол к раз, где к — параметр безопасности. Smart- карта, не знающая значения s, может угадать к случайных вызовов с вероятностью (l/2)fc, поэтому будет “поймана” с вероятностью 1 — (l/2)fc. Карта не должна использовать дважды, одно и то же значение г, потому что как только устройство чтения знает как г, так и г • s (через и), оно может вычислить секретный квадратный корень s.
310 Глава 14. Протоколы с нулевым разглашением Идея доказательства тех или иных вещей без раскрытия какой-либо информации о них противна интуиции, но очень плодотворна. Область приложений доказательств с нулевым разглашением постоянно расши- ряется. Примерами служат схемы электронного голосования, которые поз- воляют отдать голос анонимным путем. С другой стороны, голосующий будет пойман, когда попытается голосовать дважды. В этих схемах мож- но проверить, что в окончательном подсчете все голоса были учтены. Другое приложение — система оплаты, которая позволяет вам снять деньги с вашего счета в цифровой форме и потратить их анонимно. Даже ваш собственный банк не сможет отследить вас. Однако, если вы попы- таетесь потратить деньги дважды, ваша личность может быть установ- лена. 14.2 Протокол идентификации Шнорра Шнорровский протокол проверки идентичности ([Schn91]) базирует- ся на трудности проблемы дискретных логарифмов (табл. 8.1). Как и в схеме Диффи-Хеллмана, все участники разделяют некоторые парамет- ры. Прежде всего, это некоторое поле GF(g) (которое равно если q — простое) и простой делитель р числа q — 1. Возьмем примитивный эле- мент и) из GF(q) и элемент а = а/*?-1)/?’. Тогда а — примитивный корень р-й степени из единицы. Это означает, что все элементы 1, а,... , otp~Y различны и что схр = 1. Пример 14.1 (часть 1) Пусть р = 104729 и q = 8р + 1 = 837833. Возьмем из — 3 и a = — __ ^8 _ 5501 Для проверки того, что q — прост,ое и что из = 3 — примитивный элемент в (что делает а примитивным кор- нем р-й степени из единицы), используем функции Prime, PrimeQ из “Mathematica” и функцию MultiplicativeOrder (определенную в приложе- нии D), которая вычисляет мультипликативный порядок элемента. MultiplicativeOrder[а_, n_] := If[GCD[[a, n] == 1, Divisors[EulerPhi[n]] //. {х, y J -> If [PowerMod[a, x, n] == 1, x, {y}]]; p = Prime[10000] q = 8 * p + 1 PrimeQ[q] om = 3; MultiplicativeOrder[om, q] al = om8 II 104729
14.2. Протокол идентификации Шнорра 311 II 837833 II True II 837832 II 6561 Каждый доказывающий участник Р выбирает случайный показатель хр, вычисляет ур = аХр и объявляет это значение публичным. Предпо- лагается, что другие участники способны проверить, что ур в самом деле является публичным параметром участника Р. Это можно реализовать, если доверенный участник подписывает ур или если публичные значе- ния расклеиваются на надежной “доске объявлений”. Если кто-то иной, проверяющий V, хочет убедиться, что ур принадлежит Р, то он делает это, проверяя, что Р знает соответствующее хр. Конечно, Р не хочет раскрывать кому-либо секретное значение хр. Поэтому он использует криптографический протокол, чтобы убедить V в том, что он знает хр. Пример 14.1 (часть 2) Доказывающий Р имеет личный номер ур = 693 и секретный пока- затель хр = 18126. Действительно, о18126 = 693 (mod q). хР = 18126; уР = 693; PowerMod[al, хР, q] == уР II True Доказывающий Проверяющий ЗНАЕТ хр, ур, р, q, а ЗНАЕТ р, q, а ур —> ПОРОЖДАЕТ СЛУЧАЙНОЕ Г ИЗ Zp, ВЫЧИСЛЯЕТ р = аг Р ---------------------> ВЫБИРАЕТ СЛУЧАЙНОЕ S ИЗ Zp s <- ВЫЧИСЛЯЕТ и = (г + s • хр) mod р и ---------------------> Проверяет равенство аи - Р • {yp)s Рис. 14.2. Протокол Шнорра идентификации. Протокол Шнорра идентификации действует следующим образом. Проверяющему предоставляется личный номер ур участника Р. Далее, участник Р генерирует случайный показатель г, 0 < г < р, вычисляет
312 Глава 14. Протоколы с нулевым разглашением р = ar и предоставляет это значение р проверяющему V как свидетеля своего секрета хр. Проверяющий выбирает случайное число s,0 < s < р, и вручает его Р как вызов. Доказывающий Р откликается вычислени- ем и = г + s • хр и дает V это значение. Проверяющий убеждается, что otu = р- (yp)s- Это соотношение должно выполняться, поскольку au = ar+s'xr = ar . = p(yP)s. Соответствующая схема изображена на рис. 14.2. Пример 14.1 (часть 3) Описанный выше протокол выполняется при указанном ниже входе. Используются функции Random, Mod и PowerMod из “Mathematica”. г = Randon[Integer, р]; rho = PowerMod[al, r, q]; Print ["witness is ", r] a = Random[Integer, p]; Print["challenge is ", s] u = Mod[r + s * xP, p]; Print ["response is ", u] PowerMod[a, u, q] == Mod[rho * PowerMod[yP, s, q], q] II witness is 36431 || challenge is 29041 || response is 65643 II True Конечно, доказывающий должен дать только правильный отклик, если он знает хр, удовлетворяющее равенству аХр = уР. Если он не знает хр, он может догадаться о правильном значении и с вероятностью 1/р. Значение р должно быть очень большим, чтобы сделать неподдающейся проблему дискретных логарифмов (см. подразд. 8.1.1). Заметим, что в соотношении и = г + s • хр проверяющему U извест- ны только и и s. Другими словами, случайное значение г гарантирует, что никакая информация об хР не просачивается к V. Это наблюде- ние показывает также, что доказывающий не должен использовать два- жды одно и то же случайное значение г. В самом деле, из двух соот- ношений ui = г + si хр и = г + хр с известными Si, S2,141,«2 проверяющий легко может определить г и секретное хр: мы получаем хр = (ui - u2)/(si - s2). Пример 14.1 (часть 4) Для того же самого свидетеля генерируем вторые вызов и отклик: ss = Random[Integer, р]; Print ["second challenge is ", ss] uu = Mod[r + ss * xP, p]; Print ["second response is ", uu] PowerMod[al, u, q] == Mod[rho * PowerMod[yP, s, q] , q] || second challenge iz 62706 || second response iz 21550
14.3. Задачи 313 II True Далее вычисляем Хр = (ui — U2)/(S1 — 5з); Mod[(и - ии) * PowerMod[s - ss, -1, р], р] II 18126 Значение 18126 действительно является секретным показателем хр доказывающего. 14.3 Задачи Задача 14м. Продублируйте пример 14.1 для р = 113. Найдите подходя- щее значение q.
Глава 15 Системы разделения секрета 15.1 Введение В этой главе мы не будем вводить новой криптосистемы, а обсудим родственный вопрос. Начнем с примера из [Liu68], “Одиннадцать ученых работают над секретным проектом. Им нуж- но хранить документы в кабинете. Кабинет должен открываться в присутствии не менее, чем шести ученых. Каково минимальное число необходимых для этого замков? Какое минимальное число ключей должен носить с собой каждый из ученых?” Ясно, что для каждых пяти ученых должен существовать замок, ко- торый никто из них не может открыть. При этом у каждого из шести оставшихся ученых должен быть ключ от этого замка. Более одного та- кого замка для пятерки не требуется. Итак, требуется (g1) замков, и каждый ученый должен носить (11^1) ключей. Эти числа можно вычис- лить с помощью функции Binomial, пакета “Mathematica”. Binomial[11, 5] Binomial[11 - 1, 5] II 462 II 252 Конечно, полученное решение нельзя считать удобным с практиче- ской точки зрения. Но и описанная ситуация выглядит не очень реали- стичной. Однако, существуют вполне реальные ситуации, в которых тре- буется разделить некоторую важную информацию в группе людей таким образом, что только определенные привилегированные группы должны иметь возможность открыть секретную информацию. Примерами явля- ются мастер-ключ или частный ключ системы платежей, которые неже- лательно хранить в одном месте. В любой такой ситуации, если Р — привилегированная группа участ- ников в том смысле, что эти участники вместе имеют право доступа к секрету, то каждая группа, частью которой является Р, тоже должна быть привилегированной. А также каждая часть непривилегированной группы N тоже не будет привилегированной.
15.1. Введение 315 Определение 15.1 Структура доступа (U, Р, АГ) состоит из множества пользо- вателей U и двух непересекающихся наборов его подмножеств Р и А/” (Р — привилегированные, а АГ — непривилегированные), обладающих теми свойствами, что Ре Р, Ра в а и N еЛГ, Ac N в е Р, А е АГ. В приведенном выше примере U = {1,2,11}, Р состоит из всех подмножеств в U размера не менее 6, а АГ — из все остальных подмно- жеств в U. Это особый случай, который обобщенно называется пороговой схемой. Часто оказывается удобным вносить в список лишь подмноже- ство минимальных элементов множества Р, обозначаемое Р-, которое можно получить, удалив из Р каждый элемент, строго содержащий в себе какой-нибудь другой элемент из Р. Подобным же образом часто представляют с помощью подмножества АГ+ максимальных элементов. Структура доступа называется полной или совершенной, если каждое подмножество множества U лежит либо в Р, либо в АГ. Определение 15.2 Пусть S — случайная величина, равномерно распределенная на множестве S. Пусть U — группа из п участников, каждый из которых по- лучил отдельный элемент Si, зависящий от элементов из S от лица, пользующегося общим доверием. Пусть теперь (U, Р, АГ) структура доступа. Тогда набор {Si}i&u называется схемой разделения секрета для (С7, Р, АГ), если он обладает двумя сле- дующими свойствами: СРС1: каждая привилегированная группа Р участников (Р Е Р) способна вычислить секрет S. СРС2: каждая непривилегированная группа N участников (N Е АГ) не способна получить никакой информации об S. Величину Si (называемую г-й долей) можно интерпретировать как частичную информацию г-го участника о секрете S. В терминах теории информации (см. гл. 5), СРС1 и СРС2 можно переформулировать так: СРС1: H(S | {Si}iEp) = 0 для любого Р Е Р, СРС2: Я(5 | {SJiew) = H(S) для любого N Е АГ. Отметим, что в несовершенных схемах разделения секрета могут быть такие коалиции С (С Р U АГ) участников, которые способны по- лучить некоторую информацию о секрете S (поскольку H(S | {Si}iEc) < H(S)), не будучи привилегированными.
316 Глава 15. Системы разделения секрета 15.2 Пороговые схемы Схема разделения секрета называется (п, /с)-пороговой схе- мой, если Р состоит из всех подмножеств в U мощности > к, а ЛГ состоит из всех подмножеств в U мощности < к— 1. Пороговая схема по определе- нию является совершенной схемой разделения секрета. Свойства СРС1 и СРС2 для нее можно переформулировать так: ПС1: Знание к и более различных Si позволяют вычислить S. ПС2: Знание не более к — 1 различных Si оставляют секрет S совершен- но неопределенным, а точнее, оставляют все возможные значения из S одинаково правдоподобными. Шамир описал (см. [Sham79]) следующую общую конструкцию (п, к)- пороговых схем, в которых S — конечное поле GF(g), где q должно быть больше, чем п. Мы будем здесь предполагать, что число q — простое, скажем, q = р, в таком случае S — это просто Zp, т.е. множество целых чисел по модулю р. Обобщение этого случая на произвольное поле GF(q) выполняется непосредственно. Конструкция 15.1 Пусть участники помечены числами от 1 до п, и пусть S G Zp, р > п, — секретные данные. Рассмотрим многочлен /(ж) = S + aix + a2x2 + ... + ak-ixk (15.1) степени не выше к — 1, коэффициенты aj, 1 < j < к — 1, которого случайным образом выбираются из Zp лицом, пользующимся общим доверием (арбитром). Участнику г, 1 < i < п, выдается в качестве его доли Si пара Si = (b mod р). (15.2) Пример 15.1 (часть 1) Для того, чтобы сконструировать (10,4) -пороговую схему для сек- рета S = 17 из Zig, мы скроем секрет в многочлене f(x) (отметим использование функции Mod пакета “Mathematica”), Clear [f]; f[x] := Mod[17 + 7x + 12x2 + 5x3, 19] в котором коэффициенты при х3, 1 < j < 3, выбраны случайно из Zig. Значения долей можно вычислить с помощью функции Table пакета “Mathematica”. Table[{i, f[i]}> {i, 1, 10}]
15.2. Пороговые схемы 317 {{1, 3}, {2, 5}, <3, 15}, {4, 6}, {5, 8}, {6, 13}, <7, 13}, {8, 0}, <9, 4}, {10, 17}} Чтобы убедиться в том, что величины Si, 1 < i < п, заданные форму- лой (15.2), образуют (п, /с)-пороговую схему, мы должны проверить два условия ПС1 и ПС2. Проверка ПС1. Предположим, что участники • объединяют свои доли = = (й,/(й)), = (z2,/(i2)), Sik = (ifc,/('4)). С помощью интерполя- ционной формулы Лагранжа легко определить /(х). Действительно, Поскольку степень выражения в правой части (она равна к — 1) сов- падает со степенью /(х) (см. (15.1)), и поскольку значения этого вы- ражения при х — ij, 1 < j < к, совпадают со значениями Sj = /(ij), многочлен в правой части совпадает с /(х). Отметим, что по (15.1) сек- рет S определяется как /(0), следовательно, достаточно взять х = 0 при вычислении по интерполяционной формуле Лагранжа. Пример 15.1 (часть 2) Предположим, что участники 1, 3, 6 и 9 хотят восстановить сек- рет S. Они объединяют свои доли (1,3), (3,15), (6,13) и (9,4). Вычислить интерполяционный многочлен Лагранжа можно с по- мощью функции InterpolatingPolynomial пакета “Mathematica”. Функция PolynomialMod используется для вычисления коэффициентов по моду- лю 19. PolynomialMod [InterpolatingPolynomial [ {{1, 3}, {3, 15}, {6, 13}, {9, 4}}, х], 19] II 17 + 7х + 12х2 + 5х3 Секретная величина S — это свободный член полученного многочле- на, т.е. S = 17. Проверка ПС2. Допустим, что известны доли 5Д, S{2, ..., Sie для некоторого £ < к. Из соотношений (15.1) и (15.3) следует, что ровно многочленов д(х), имеющих произвольное наперед заданное значение £?(0), удовлетворяют условию g{iu) = Siu, 1 < и < £. Действительно, для каждого зафиксированного значения <Д0) мож- но присоединить к исходной группе к — £ — 1 любых дополнительных участников, произвольно выбрав их доли. Из интерполяционной фор- мулы Лагранжа следует, что таким требованиям будет удовлетворять ровно один многочлен д(х).
318 Глава 15. Системы разделения секрета Пример 15.1 (часть 3) Предположим, что участники 1, 3 и 9 пытаются восстановить секрет S, объединив свои доли (1,3), (3,15) и (9,4). В такой ситуации секрет S по-прежнему может принимать любое значение (и все эти значения по-прежнему одинаково правдоподобны). Действительно, для любой пары (О, S) существует ровно один много- член д(х), удовлетворяющий условиям g(O) = S, </(1) ~ 3, д(3) — 15 и д(9) = 4. Это следует из интерполяционной формулы Лагранжа и проверяется следующим образом. Clear[х] Table[ <S, PolynomialMod[InterpolatingPolynomial[ «0, S}, <1, 3}, <3, 15}, <9, 4}}, x], 19]}, {S, 0, 18} ] // Tableform 0 2х + х2 1 1 + 9х + 5х2 + 7х3 2 2 + 16х + 9х2 + 14х3 3 3 + 4х + 13х2 + 2х3 4 4 + Их + 17х2 + 9х3 5 5 + 18х + 2х2 + 16х3 6 6 + 6х + 6х2 + 4х3 7 7 + 13х + 10х2 + Их3 8 8 + х + 14х2 + 18х3 9 9 + 8х + 18х2 + 6х3 10 10 + 15х + Зх2 + 13х3 11 11 + Зх + 7х2 + X3 12 12 + 10х + Их2 + 8х3 13 13 + 17х + 15х2 + 15х3 14 14 + 5х + Зх3 15 15 + 12х + 4х2 + 10х3 16 16 + 8х2 + 17х3 17 17 + 7х + 12х2 + 5х3 18 18 + 14х + 16х2 + 12х3 Замечание 1. При обобщении на произвольное поле GF(q) п участ- ников помечены различными ненулевыми элементами поля щ, 1 < i < п. Долей Si г-го участника будет пара (а<, f(ai)). Это можно реализовать, выбрав в поле GF(q) примитивный (порождающий) элемент а, пометив участников числами от 1 до п, и выдав г-му участнику в качестве его доли пару (г,/(а;2)). Замечание 2. Представленная здесь пороговая схема требует уча- стия арбитра. Кроме того, эта схема может использоваться лишь один раз. Как только участники обменялись своими долями для получения секрета, эти доли стали не секретны. Для дальнейшего использования
15.3. Пороговые схемы с лгунами 319 схемы нужно распределить новые доли. В литературе можно найти пред- ложения, позволяющие ослабить эти условия. 15.3 Пороговые схемы с лгунами В [МсЕ181] предложен вариант описанной выше конструкции, в кото- ром некоторые из участников представляют ложную информацию, т.е. представленные ими доли содержат неправильные значения. Некоторые участники могут пойти на это с целью помешать другим получить до- ступ к секретным данным. Окажется так, что для раскрытия секрета на каждую ложную долю потребуется добавить по две дополнительных доли. Итак, если k + 2t участников объединяют свои доли для раскрытия секрета, то среди этих долей должно быть не более t ложных. Конструкция 15.2 Пусть S — секретный элемент поля GF(q), где q — некоторая степень простого числа, и пусть ад, a%,..., an, п < q— 1, — список из п различных ненулевых элементов GF(q), например, oli = а?, 1 < г < п, для некоторого примитивного элемента a Е GF(q). Рассмотрим многочлен f(x) - S + a±x + а%х2 + ... + коэффициенты aj, 1 < j < к — 1, которого случайным обра- зом выбираются из GF(q). Пара (aj,/(aj)) будет долей Si г-го участника. Предположим, что к + 2t участников (к + 2t < п) объединяют свои доли для раскрытия секрета и среди этих долей не более t неправильных. Тогда объединившиеся участники смогут эф- фективно вычислить /(ж) и раскрыть секрет S. Более того, при этом можно распознать и неправильные доли. Доказательство. Используемый при вычислении долей многочлен /(ж) имеет степень < к — 1 и обладает тем дополнительным свойством, что на нем лежат (как точки на графике функции у = /(ж)) по крайней мере k+t правильных долей. Может ли быть какой-то другой многочлен, скажем, д{х), обладающий теми же свойствами? Ответ — нет. Действи- тельно, в (к + 2£)-элементном множестве долей любые два не менее, чем (fc + £)-элементных подмножества правильных долей, должны иметь пе- ресечение, состоящее не менее, чем из к элементов (правильных долей). Эти к долей лежат как на /(ж), так и на д(х). Поскольку степени обоих многочленов не превосходят к — 1, из этого следует, что /(ж) — д(ж). Чтобы найти /(ж), участники должны перепробовать все многочлены степени < к — 1, проходящие через к долей, пока не найдется многочлен, проходящий через к + t или более долей. Конечно, такой способ не эф- фективен. Для эффективного поиска требуется использование теории кодов, исправляющих ошибки (как в гл. 11). Определенные выше доли в действительности определяют кодовые слова (/(ai), /(аг), • ••, /(ап)) так
320 Глава 15. Системы разделения секрета называемого укороченного кода Рида-Соломона с параметрами (п,к,п- -fc + 1). Читатель, не знакомый с этой теорией, может обратиться к гл. 11 [MacWS77]. Эффективными способами декодирования этого кода явля- ются алгоритм Берлекэмпа-Масси и алгоритм Эвклида. В контексте на- шей проблемы, где известны к -Ь 2t долей, можно считать остальные п — к — 2t долей стертыми. Если число стертых долей плюс удвоенное число ошибок меньше, чем минимальное расстояние кода, то код испра- вит эти стертые символы и ошибки. У нас (п — к — 2t) + 2 • t, действи- тельно, меньше, чем п — к + 1. Для кодов Рида-Соломона существует эффективный алгоритм декодирования с исправлением этих ошибок и восстановлением стертых символов (см. [Вег168], разд. 10.4, и [SugK76]). Замечание 1. При t = 0 конструкция 15.2 сводится к конструкции 15.1. Замечание 2. Если доступно лишь к + 2t — 1 долей и t из них — неправильные,- то /(ж) не всегда определяется однозначно. Например, возможно, что из к + 2t —• 1 имеющихся долей, все, кроме t первых, ле- жат на одном многочлене степени к — 1, и, одновременно, все, кроме t последних долей, лежат на другом многочлене степени < к — 1 (пересе- чение множеств долей имеет мощность к —- 1). Однако, в такой ситуации некоторая информация о секрете становит- ся известной. Пример 15.2 Рассмотрим k = 3,t=lup=17. Любые три из четырех долей (1,4), (2,1), (3,5), (4,4) определяют параболу, на которую четвертая точка не попадает, и поэтому может считаться неправильной. PolynomialMod[InterpolatingPolynomial[ Ш, 4}, {2, 1}, {3, 5Я, х], 17] PolynomialMod[InterpolatingPolynomial[ Ш, 4}, {2, 1}, {4, 4}}-, х], 17] PolynomialMod[InterpolatingPolynomial[ Ш, 4}, {3, 5}, {4, 4}}-, х], 17] PolynomialMod [InterpolatingPolynomial [ «2, 1}, {3, 5}, {4, 4}}, х], 17] II 14 + 12х + 12х2 II 10 + х + 10х2 II 2 + Их + 8х2 II 12 + 8х + 6х2 Из 17 возможных секретов в описанной ситуации остаются воз- можными четыре, причем все они равновероятны.
15.4. Схемы разделения секрета 321 15.4 Схемы разделения секрета Несмотря на большой объем литературы по схемам разделения сек- рета, много центральных вопросов в этой области остаются без ответов. Поэтому мы обсудим лишь один пример схемы разделения секрета. Что- бы найти обсуждение различных обобщений описанной здесь техники, читатель может обратиться к [Bric89] и [Dijk97|. Общее введение в схе- мы разделения секрета можно найти в [Stin95]. Допустим, что у нас есть структура доступа (17, Р, JV), в которой и = {1,2,3,4}, Р~ = {{1,2}, {2,3}, {3,4}} и Х+= {{1,3}, {1,4}, {2,4}}. Это означает, что любое подмножество U, включающее в себя какую-то из пар пользователей 1 и 2, 2 и 3, или 3 и 4, является привилегированным, а любая другая группа пользователей является непривилегированной. Эта ситуация изображена на рис. 15.1. {1,2,3,4} 0 Рис. 15.1. Структура доступа с четырьмя участниками; • — привилегированные, о — непривилегированные. Схема разделения секрета для данной структуры доступа строится за два шага. На первом шаге мы хотим разделить один бит (байт, строку) секретной информации среди четырех участников. Пусть s — секретный бит, который нужно разделить среди участни- ков нашей структуры (£7, Р, ЛГ). Арбитр выбирает два случайных бита а и b и выдает участникам следующие доли: УЧАСТНИК доля 1 a 2 s + а, b 3 s + b 4 b Рис. 15.2. Схема разделения секрета размером в один бит. Знаком + обозначено сложение по модулю 2. Читатель легко может убедиться в том, что эта схема удовлетворяет требованиям СРС1 и СРС2.
322 Глава 15. Системы разделения секрета Скажем, участники 1 и 2 могут вычислить з по формуле a + (s + а), где а взято у участника 1, a s + a — у участника 2. Пример 15.3 Например, если арбитр хочет разделить секрет s = 1 среди четы- рех участников, то он может выбрать а = 1 и Ь = 0. Тогда долями участников 1, 2, 3 и 4 будут, соответственно, 1, (0,0), 1 и 0. Участники 2 и 4 не могут раскрыть секрет, поскольку они вместе знают только з + а и Ъ (в двух экземплярах). Участники 3 и 4 могут раскрыть секрет, сложив свои доли з 4- Ъ и Ь: 1+0 = 1. Видно, что в схеме на рис. 15.2 участник номер 2 должен хранить долю вдвое большей, чем секрет, длины (в битах). Это отношение можно улучшить, если скомбинировать описанную схему с ее переставленной версией. Итак, рассмотрим теперь секрет, состоящий из двух битов 51 и 52- Арбитр выбирает четыре случайных бита а, Ь, с и d. Затем он раздает участникам следующие доли: УЧАСТНИК доля 1 а, с 2 «1 + а, з2 + С, Ъ 3 si + Ь, 52 + d, с 4 Ь, d Рис. 15.3. Схема разделения секрета размером в два бита. В этой схеме отношение размера секрета к размеру самой длинной доли равно 2/3 (это отношение называется информационной эффектив- ностью). Можно показать, что такое отношение всегда не больше 1. Схе- мы разделения секрета с информационной эффективностью, равной 1, называются идеальными. Для конструкций описанного выше типа есть матричное описание. Мы приведем его для построенного выше примера. Схема разделения секрета описывается матрицей Gta доверенного арбитра1 и матрицами Gi участников 1, 2, 3 и 4. Первые два столбца всех этих матриц помечены секретными битами si и s2, а следующие четыре столбца — случайными переменными а, Ь, с и d. Каждая строка матрицы Gi выражает один элемент доли г-го участника (в виде линейной ком- бинации секретных битов и случайных битов), то же можно сказать и о матрице Gta, если считать, что доля арбитра — это si и з2. ГТА от “Trusted Authority”. — Прим. ред.
15.4. Схемы разделения секрета 323 f 1 0 0 0 0 0 \ GTA = 1 I • l 0 1 0 0 0 0 j 9 ( 0 0 1 0 0 0 < Gpl = k 0 0 0 0 1 0 ? 1 9 / 1 0 1 0 0 0 Gp2 = 0 1 0 0 1 0 1 9 I 0 0 0 1 0 0 I 1 0 0 1 0 0 Gp3 = 0 1 0 0 0 1 1 9 \ 0 0 0 0 1 0 ( о 0 0 1 0 0 Gp4 = | < 0 0 0 0 0 1 1 9 Чтобы увидеть, что эти матрицы действительно представляют схему разделения секрета, умножим их на вектор (si, 6*2, а, Ь, с, d). Clear[sl, s2, a, b, с, d] ; vec = {si, s2, a, b, c, d}; GTA . vec Gpl . vec Gp2 . vec Gp3 . vec Gp4 . vec I {si, s2} I {a, cj I {a + si, c + s2, b} I {b + si, d + s2, c} I {b, d} Мы получаем секрет арбитра и доли всех участников, что в точности составляет схему, которая была у нас ранее. Теперь можно следующим образом переформулировать свойства схе- мы разделения секрета. Теорема 15.3 Матрицы Gt а и Gi, i G U, с линейно независимыми строками описывают схему разделения секрета для структуры доступа (U, Р, Л/") тогда и только тогда, когда i) для каждого привилегированного множества Л G Р каждая строка матрицы Gta лежит в линейной оболочке строк матриц Gi, i G А, ii) для каждого непривилегированного множества В G .Af ни одна строка матрицы Gta не лежит в линейной оболочке строк матриц Gi, i G В.
324 Глава 15. Системы разделения секрета Для того, чтобы проверить, что первая строка матрицы Gta ле- жит в линейной оболочке строк матриц G± и Сд, используем пакет LinearAlgebra‘MatrixManipulation‘ и функции AppendColumns, Matrix- Form, LinearSolve и Transpose. << LinearAlgebra<MatrixManipulation<; u = GTAEE1]] M = AppendColumns EGpl, Gp2]; MatrixForm EM] LinearSolveETranspose EM], u, Modulus -> 2] || {1, 0, 0, 0, 0, 0} /00 10004 10 0 0 0 1 0 10 10 0 0 0 10 0 10 \000 1 00/ || {1, 0, 1, О, 01- Это показывает, что первая строка матрицы Gta является суммой по модулю 2 первой строки матрицы Gi и первой строки матрицы G%. Аналогично можно проверить, что участники 1 и 3 не смогут опре- делить 82'- вторая строка (и первая тоже) матрицы Gta не лежит в ли- нейной оболочке строк матриц Gi и G3. u = GTAEE2]] М = AppendColumns EGpl, Gp3]; MatrixForm EM] LinearSolveETranspose EM], u, Modulus -> 2] || {0, 1, 0, 0, 0, 0} /00 1 0 004 [0 0 0 0 1 0 1 0 0 1 0 0 ; 0 1 0 0 0 1 \0000 10/ LinearSolve :: nosol : Linear equation encountered which has no solution LinearSolve E «0, 0, 1, 0, 0}, {0, 0, 0, 1, 0}, <1, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, <0, 1, 0, 0, 1}, {0, 0, 0, 1, 0}}, {0, 1, 0, 0, 0, 0}, Modulus -> 2]
15.5. Визуальные схемы разделения секрета 325 Закончим этот раздел замечанием о том, что проблема создания со- вершенной схемы разделения секрета не так сложна, как проблема сде- лать эту систему высоко информационно эффективной. Действительно, неэффективная схема разделения секрета для конкретной структуры до- ступа (U, Р, JV) создается следующим образом. Пусть требуется разделить секрет s. Для каждого А Е Р“ выберем случайные биты 1 < i < |Л|, удовлетворяющие сравнению 1 = s (mod 2), А Е Р . Каждый участник u Е А получает один из этих а\А\ В примере U = {1,2, 3,4}, Р" = {{1, 2}, {2, 3}, {3,4}} и Х+ = = {{1,3}, {1,4}, {2,4}}, таким способом получаем следующее разделение 2 секрета s : УЧАСТНИК 1 2 3 4 доля з + аР’2 з}, а<2'3} . {2,3} {3,4} s + , а) 1 । {3,4} з + а} 1 Вот более краткое представление схемы разделения секрета: участник доля 1 а 2 з + а, b 3 з + Ь, с 4 з + с Информационная эффективность этой схемы равна 1/2. В ней ис- пользуются три случайные переменные в отличие от схемы, изображен- ной на рис. 15.2. 15.5 Визуальные схемы разделения секрета В визуальных схемах разделения секрета секрет, который требует- ся разделить, представляет собой картинку, состоящую из белых и чер- ных (или цветных) точек. Здесь мы обсудим только случай черно-белого изображения, при этом “белый” будем понимать как “прозрачный”. На- пример, число 3 можно нарисовать следующим образом: 2 , (Л) (А) г, з + а\ = «2 . — Прим, перев.
326 Глава 15. Системы разделения секрета Доли представляют собой транспаранты той же формы, заполненные белыми и черными точками. Суть визуальной схемы разделения секрета для структуры доступа (С7, Р, JV) состоит в том, что каждая привиле- гированная группа участников может получить секретное изображение, просто складывая свои транспаранты в стопку один на другой. С другой стороны, никакая непривилегированная группа участников не может с помощью своих долей получить никакой информации о секретном изоб- ражении. Визуальную схему разделения секрета нельзя реализовать напрямую. В самом деле, если в такой реализации в какой-то доле некоторая точка — черная, то и в секретном изображении соответствующая точка ока- жется черной. Чтобы решить эту проблему, каждую точку в секрете и в долях делят на тп подточек. Число тп называется расширяющим мно- жителем схемы. Предполагается, что при этом существуют два таких пороговых визуальных значения а, /?, 0 < а < (3 < 1, что • если не более, чем а • т подточек черные, то вся точка восприни- мается человеческим глазом как белая, • если не менее, чем /3 • m подточек черные, то вся точка восприни- мается как черная. Если же число черных подточек лежит строго между а • т и /3 • т, то предполагается, что человеческий глаз не может решить, какого цве- та точка. Разность (3 — а. является индикатором уровня контрастности в изображении, все точки которого удовлетворяют одному из двух приве- денных выше условий. Такое предположение обосновывается биологиче- ски, как необходимая глазу разница в интенсивности света. Дальнейшее обсуждение этого можно найти в [VerT97]. При построении визуальных схем разделения секрета перед нами сто- ят дополнительные проблемы. Например, если при наложении друг на друга долей из непривилегированного множества окажется, что некото- рая точка содержит более, чем а • т черных подточек, то мы узнаем, что в секретном изображении на этом месте черная точка. Разумеется, следует избегать таких ситуаций. Ясно, что, имея визуальную схему разделения секрета для одной точ- ки, можно ее распространить и на другие точки, создавая тем самым визуальную схему разделения секрета для целого изображения.
15.5. Визуальные схемы разделения секрета 327 Здесь мы объясним лишь устройство визуальной схемы разделения секрета для (п, 2)-пороговой схемы. Это означает, что любые два участ- ника вместе должны иметь доступ к секрету, а в одиночку никто не имеет информации даже об одной точке секретного изображения. Перед тем как приступить к общему случаю, рассмотрим простую ситуацию с двумя участниками. Выберем расширяющий множитель тп = 2. Обозна- чим следующие две части деления точки через L и R (в соответствии с расположением в них черной подточки). Ясно, что при наложении L и R друг на друга получается черная точка, тогда как L + L и R + R дают точку, состоящую из двух подточек разного цвета. Таким образом, нам удалось изготовить конструкцию с пороговыми значениями о. = 1/2 и (3 = 1. Конструкция 15.4 Чтобы разделить белую точку, арбитр выдает участникам оди- наковые доли, при этом каждый участник может с равными вероятностями получить как L, так и R. Чтобы разделить черную точку, арбитр выдает участникам раз- ные доли, при этом вновь каждый участник может с равными вероятностями получить как L, так и R. Это дает визуальную (2,2)-пороговую схему с расширяющим множителем m = 2 и пороговыми значениями a = 1/2 и /? = 1. Ниже приведен пример возможных долей участников 1 и 2, если сек- ретом было приведенное ранее изображение числа 3. Доля 1 Доля 2 Читатель может проверить это, изготовив транспаранты таких форм и наложив их друг на друга. Известно много конструкций для визуальных (п, /с)-пороговых схем. Опишем общую конструкцию для к = 2. В каждом конкретном слу- чае будут получаться свой расширяющий множитель тп и свои порого- вые значения а и (3. При этом возникают две (пхт)-матрицы Л/щ и Мв,
328 Глава 15. Системы разделения секрета используемые при распределении среди участников долей белой и, соот- ветственно, черной точек. Эти матрицы в дальнейшем характеризуются двумя параметрами г и Л и должны обладать следующими свойствами: ВПС1: Матрица Mw состоит из п одинаковых копий строки т тп—г ЙО. ВПС2: Сумма элементов в каждой строке матрицы Мв равна г. ВПСЗ: Скалярное произведение каждой пары строк матрицы Мв равно Л. Значения тп, а, /3,г и Л будут взаимосвязаны. Их нельзя выбирать произвольно. Пример 15.4 (часть 1) Возьмем п = 4 и тп = 6. Пусть матрицы Mw и Мв задаются сле- дующим образом. 1 1 1 О О 6А 1 1 1 0 0 0 1 1 1 1 0 0 0 I ’ 1 1 1 0 0 0 / /1 1 10004 MR = I 1 ° ° 1 1 0 I . МВ 0 10 10 11’ \001011/ Отметим, что Mw и Мв обладают свойствами ВПС1-ВПСЗ для г = 3 и Л = 1. Матрицы Mw и Мв определяют два класса п х т-матриц: • Р | Р — матрица перестановки размера т х т}, = {Мв • Р | Р — матрица перестановки размера m х т}. При распределении долей для конкретной секретной точки арбитр берет либо Mw, либо Мв в зависимости от того, белая эта точка или черная, переставляет столбцы случайным образом и выдает г-ю строку участнику с номером i, 1 < i < п. Участник номер j определяет цвет j-й подточки в зависимости от зна- чения J-й компоненты своей доли. Белый цвет соответствует 0, а черный — 1. Пример 15.4 (часть 2) Предположим, что требуется разделить черную точку. Арбитр выбирает случайную перестановку с помощью функции Random Permu- tation из пакета DiscreteMath‘Permutations‘ следующим образом.
15.5. Визуальные схемы разделения секрета 329 << DiscreteMath‘Permutations‘ RP = RandomPermutation[6] || {3, 6, 4, 2, 1, 5} Это приводит к следующей матрице перестановки (используются функции Table, Do и MatrixForm): Р = TableEO, {i, 1, 6}, {j , 1, 6}]; Do [Р [[j , RP[[j]]]] = 1, {j , 1, 6}]; MatrixFоrm[P] /00 1 0004 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 \0000 1 0/ Умножение Mb на P справа дает матрицу PMB = MB * Р; MatrixForm[PMB] Z00 110 1X [1 1 1 0 0 0 1 0 10 0 111 \100110/ Располагая шестерки подточек по строкам массивов 3x2, получим четыре доли для черной точки: Доля 1 Доля 3 Доля 4 Читатель легко проверит, что при наложении друг на друга любых двух из этих картинок получатся пять черных подточек и одна белая. Если исходная точка была белой, то получим PMW = MW * Р; MatrixForm[PMW] Z001101X 0 0 110 1 0 0 110 1 \00110 1/
330 Глава 15. Системы разделения секрета Это означает, что все четыре доли выглядят так: Каждая доля Строки матриц Mw и Мв содержат одинаковое количество единиц (а именно, по г), и и получены из них умножением справа на все возможные матрицы перестановок. Из этого следует, что каждый вектор длины т и веса г может с одинаковой вероятностью оказаться как долей для белой точки, так и долей для черной. Тем самым показано, что у нашей конструкции нижнее визуальное пороговое значение а равно г/т. Поскольку Mw умножается на матрицу перестановки, из ВПС1 сле- дует, что когда два участника обьединяют доли, соответствующие белой точке, они не извлекают из этого никакой пользы. С другой стороны, любые две строки матрицы Мв имеют вес г по ВПС2 и дают скалярное произведение Л по ВПСЗ. Данное свойство со- хранится и после умножения Мв на матрицу перестановки. Из этого следует, что в объединении двух долей, соответствующих черной точке, 2г — Л единиц. В приведенном выше примере г = 3 и Л = 1, что дает 2г — Л = 5 единиц в любом таком объединении. Можно сделать вывод, что у конструкции, созданной при помощи A4w и Л4в, верхнее визуаль- ное пороговое значение /3 равно (2г — Л)/ш. Мы обосновали следующую общую конструкцию. Конструкция 15.5 Пусть п х m-матрица Мв обладает свойствами ВПС2 и ВПСЗ для некоторых значений г и Л. Пусть матрица Mw имеет вид, заданный в ВПС1. Пусть теперь A4w и Л4в получены из Mw и из Мв соответственно, умножением их справа на все возможные матрицы перестановок. Тогда случайный выбор матрицы из в случае разделе- ния белой точки и случайный выбор матрицы из Л4 в в случае разделения черной приводит к визуальной (п, 2)-пороговой схе- ме с расширяющим множителем т и пороговыми значениями a = г/тп и (3 = (2г — Х)/т. Следствие 15.6 Возьмем произвольное п. Пусть и — некоторое число между 2 и п — 1. Пусть матрица Мв состоит из всех столбцов длины п и веса и. Тогда в Мв тп = столбцов. Кроме того, вес каждой
15.5. Визуальные схемы разделения секрета 331 строки из Мв равен г = и скалярное произведение любой пары строк из Мв равно Л = • Это определяет визуальную (п, 2)-пороговую схему с расширя- ющим множителем тп = (”) и пороговыми значениями a = u/m и /3 = (2n — u + l)/n(n — 1). Взяв в этом следствии п = 4 и и = 2, получим конструкцию из при- мера 15.4. Действительно, тп — (”) = == 6, г = (”Zi) — (i) =: 3 и Л = = (о) = Пороговые значения: a = 2/4 = 1/2 и (3 = 5/6. Недостатком семейства конструкций, описанных в приведенном выше следствии, является высокий расширяющий множитель тп. Читатель, знакомый с теорией блок-схем и t-схем3, может по виду условий ВПС2 и ВПСЗ догадаться, что эти понятия часто применяются при конструировании визуальных пороговых схем. Объясним одну такую конструкцию. Пусть р — простое число. Напомним, что по определению А.9 целое число n, 1 < и < р, называется квадратичным вычетом (QR), если срав- нение х2 = и (mod р) имеет решение в Zp. Как по числу и определить, является ли оно квадратичным вычетом, объясняется в разд. А.4. В паке- те “Mathematica” это можно сделать с помощью функции JacobiSymbol, которая возвращает 1 тогда и только тогда, когда и — квадратичный вычет. Например, из и = 12; ш = 13; JacobiSymbol[и, ш] | II 1 следует, что сравнение х2 = 12 (mod 13) имеет решение (это ±5). Сим- вол Якоби принято обозначать через или просто через x(u)i если не возникает путаницы со значением модуля р. По определению х(и) — О при и = 0, и х{и) = “h когда 1 < и < р и и не является QR. Следствие 15.7 Пусть р — некоторое простое число, сравнимое с 3 по модулю 4. Определим р х р-матрицу Мв как (м \ — Г 1 j если j — i есть QR, ' ~~ 1 о в противном случае. Тогда вес каждой строки из Мв равен г = (р—1)/2, а скалярное произведение любой пары строк равно Л = (р — 3)/4. Это определяет визуальную (п, 2)-пороговую схему с расши- ряющим множителем тп = п и пороговыми значениями a = = (р - 1)/2р и /3 — (Зр — 1)/4р. 3См., например, *[ЛидП96]. — Прим. ред.
332 Глава 15. Системы разделения секрета Доказательство. Фиксируя номер строки i матрицы Мв, видим, что разности j — г, 0 < j < р, пробегают все элементы из Zp. Из теоремы А.20 следует, что вес каждой строки из Мв равен (р — 1)/2. Рассмотрим теперь матрицу X = Матрицу Мв можно получить из X заменой всех — 1 на 0. Рассмотрим две строки матрицы X. Их номера — й и й- Заметим, что ч Теор. А.21 . . . След. А.24 А х(г2-и) = х(-1)х(и-г2) = - «г). Т.е. матрица X — кососимметрическая и 12-и элемент й~й строки про- тивоположен й-му элементу й~й строки. Тогда после соответствующего переупорядочения координат рассматриваемые строки будут выглядеть так Возможно, что строки тоже переставлены. Скалярное произведение строк и й матрицы Мв равно а (посколь- ку Мв получается из X заменой —1 на 0). Чтобы найти значения а, 6, с, d, вычислим сперва <..щ. Y) ~~ 1 27 1 52- ~й) = 52 x(j)x(j - (й - й)) =-1- (15.4) Первое равенство получается при подстановке j—ii •—* j, а второе следует из теоремы А.22, поскольку й й (mod р). Таким образом, имеем следующие соотношения: 2TtiT5TcTd — р, а — b — c + d = —1, 1 + a + b = (р - 1)/2, a + с = (р — 1)/2 (в X р столбцов), (из (15.4)), (применим теорему А.20 к первой строке), (применим теорему А.20 ко второй строке). Эти уравнения имеют единственное решение: a = b = d = (р — 3)/4 и с = (р+1)/4. Следовательно, скалярное произведение двух разных строк матрицы Мв равно (р — 3)/4. Теперь нужное нам следствие непосредственно вытекает из конструк- ции 15.5. Пример 15.5 Возьмем р = 11. Матрицу Мв можно создать с помощью функций JacobiSymbol, If и Array пакета “Mathematica” следующим образом.
15.6. Задачи 333 р = 11; A[i_, j_] := If[JacobiSymbol[j - i, p] == 1, 1, 0]; MB = Array [A, <p, pH ; MatrixFоrm[MB] /0101 1 1000104 [00101110001 10010111000 01001011100 00100101110 00010010111 10001001011 11000100101 11100010010 01110001001 \ 1 0 1 1 1000100/ Таким образом, имеем визуальную (11,2)-пороговую схему с рас- ширяющим множителем т = 11 и пороговыми значениями а — = (р- 1)/2р = 5/11 и /3 = (Зр - 1)/4р = 8/11. 15.6 Задачи Задача 15.1м. Постройте (5,3)-пороговую схему Шамира для секрета 15 над (7F(17). Покажите, как участники 1, 2 и 3 могут раскрыть секрет. Пока- жите, что при объединении участников 1 и 2 все элементы из GjF(17) будут одинаково правдоподобными кандидатами на роль секрета. Задача 15.2м. Рассмотрим (5, 3)-пороговую схему Шамира над <7Р(23), в которой участники 1, 3, 4 и 6 объединяют свои доли (1,13), (3,19), (4,19) и (6,6) для раскрытия секрета S. Что это за секрет? Предположим, что участник 5 предъявляет в качестве своей доли пару (5,3). Почему один из этих пяти человек лжет? Пусть также и участники 1 и 8 предъявляют свои доли (2,4) и (8,12). Определите лжеца и настоящий секрет. Задача 15.3м. Постройте (7,4)-пороговую схему над полем G?P’(16) = = G'F(2)[a]/(a4 + а + 1) (см. теорему В.15). Каковы доли участников, если секретом является вектор S = (1,0,1,1), соответствующий элементу поля а13? Подробно покажите, как участники 2,4,5,7 раскрывают S. Задача 15.4. Рассмотрим следующую схему над Z3: УЧАСТНИК доля 1 а, Ь, с + S2 2 а + si, Ь, с 3 Ь + si, с — S2, d 4 6, d + S2
334 Глава 15. Системы разделения секрета Дайте матричное описание этой схемы. Докажите, что это схема разде- ления секрета для структуры доступа (U, V, J\f), в которой U — {1,2,3,4}, Г" = {{1,2}, {2,3}, {3,1}, {3,4}} и Л7+ = {{1,4}, {2,4}, {3}}. Какова инфор- мационная эффективность этой схемы? Совершенна ли она? Является ли она идеальной? Задача 15.5. Постройте изображение множества возможных долей, воз- никающих при разделении черной точки в визуальной (7,2)-пороговой схеме, как в следствии 15.7. Каков расширяющий множитель этой схемы и каковы пороговые визуальные значения?
Приложение А Элементарная теория чисел А.1 Введение Пусть N обозначает множество натуральных чисел, Z — множество целых чисел, a R — множество действительных чисел. Целое число d делит целое число п, если п — kd для некоторого к G Z. Это обозначается посредством d\n. Если такого целого к не существует, то d не делит п. Это обозначается через d /п. Чтобы проверить, делит ли целое d целое число п, можно использо- вать функцию IntegerQ пакета “Mathematica”. Например, п = 16851; d = 123; IntegerQEn / d] II True Функция Divisors дает список всех натуральных делителей числа п. Например, п = 16851; Divisors[п] || {1, 3, 41, 123, 137, 411, 5617, 168513- Целое число р,р > 1, называется простым, если его единственными делителями являются Тир1. Введем естественную нумерацию на мно- жестве простых чисел, полагая pi = 2,рг = 3,рз = 5,.... В этом контексте полезными функциями пакета “Mathematica” слу- жат Prime и PrimeQ. к = 35; Prime[к] II 149 Этим порождается 35-е простое число. п = 1234567; PrimeQ[п] II False говорит, будет ли вход (в данном случае число 1234567) простым числом. 1 Число п > 1, не являющееся простым, называется составным. — Прим. ред.
336 Приложение А. Элементарная теория чисел (Теорема А.1 (Эвклид) Существует бесконечно много простых чисел. Доказательство. Предположим противное, и пусть pi,p2? • • • ,Pk ~ множество всех простых чисел. Заметим, что целое число (п*=1 Pi) +1 не делится ни на одно из простых чисел pi,P2, • • • ,Pk- Оно не может быть простым, так как не попадает в список Р1,рг? • • • ,Pk- Отсюда следует, что п имеет нетривиальный делитель d. Но тогда d делится хотя бы на одно из простых Р1,рг, • • • iPk, а потому делится и п. Противоречие. Между двумя последовательными простыми числами может быть сколь угодно большая лакуна составных чисел. Например, п — 1 элемен- тов последовательности п! + 2, п! + 3,..., п! + п делятся, соответственно, на 2,3,... ,п. Поэтому все они — составные. Определение А.1 Функция 7г(п) подсчитывает число простых чисел, не превосхо- дящих п. В пакете “Mathematica” эта функция обозначается PrimePi [и]. п = 100; PrimePi[п] II 25 Следующая теорема, которую мы не будем доказывать2 3, говорит об относительной частоте простых чисел в множестве N. Теорема А.2 (закон распределения простых чисел) Iim цМ. = !. п—>оо П/ 1П П п = 1000000; PrimePi[n] / (n / Log[n]) // N II 1.08449 Введем два важных понятия — наибольшего общего делителя и наи- меньшего общего кратного двух целых чисел. Определение А.2 Наибольшим общим делителем двух целых чисел а и Ъ, ни одно из которых не равно нулю 5 называется однозначно определен- ное положительное целое d, которое 2На русском языке имеется много книг, содержащих различные доказательства теоремы А.2. Укажем лишь три: *[Прах67], *[Чанд74] и *[ЧерО2]. — Прим. ред. 3Это условие излишне и в дальнейшем по существу игнорируется автором. — Прим. ред.
А.1. Введение 337 делит как а, так и Ь, (>4.1) и если f делит а и Ь, то f делит d. (А.2) Наибольший общий делитель чисел а и b обозначается через НОД(а, Ь) или просто (а, Ь). Определение А.З Наименьшим общим кратным двух целых чисел а и b называ- ется однозначно определенное положительное целое т, которое делится как на а, так и на Ь, (А.З) и если п делится на а и на Ь, то п кратно т. (А.4) Наименьшее общее кратное чисел а и b обозначается через нок[а, Ь] или просто [а, Ь]. Для доказательства существования НОД введем множество 17 = {х • а + у • Ь|х, у Е Z, х • а + у ' Ь > 0}. Пусть т — наименьший элемент в U. Покажем, что тп удовлетворяет условиям (А.1) и (А.2). Очевидно, если / делит а и Ь, то f также делит тп. Поэтому тп удовлетворяет (А.2). Теперь запишем а = qm + г, 0 < г < тп, (вычитаем тп из а или добавляем к а достаточное число раз, пока остаток г не будет лежать между 0 и тп — 1). Если г 0, то г Е U (поскольку а и тп лежат в 17). Это противоречит предположению о минимальности т. Поэтому г = 0, и это означает, что тп делит а. Аналогично, т делит Ь. Таким образом, т удовлетворяет также и (А.1). Единственность нод(а, Ъ) вытекает из условий (А.1) и (А.2). В са- мом деле, если как d, так и d( удовлетворяют (А.1) и (А.2), то отсюда вытекает, что d|d' и d'\d. Так как dud' положительны, получаем, что d=d!. Аналогичным путем могут быть доказаны существование и един- ственность нок[а, Ь]. Альтернативные определения нод(а, Ь) и нок[а, Ь] таковы: |нод(а, Ъ) — наибольшее целое число, делящее как а, так и Ь. нок[а, Ь\ — наименьшее натуральное число, делящееся на а и Ь. В пакете “Mathematica” имеются соответствующие функции GCD и LCM: а = 12345; b = 67890; GCD[a, b] II 15 а = 12345; b = 67890; LCM[a, b]
338 Приложение А. Элементарная теория чисел II 55873470 Если у двух целых чисел НОД равен 1, то мы называем эти числа взаимно простыми. Следствием вышесказанного является следующая важная теорема. Теорема А.З Пусть а и b лежат в N. Тогда существуют целые числа и и v, такие, что нод(а, Ь) = и • а + v • Ь. В частности, если а и Ь взаимно просты, то существуют такие целые и и v, что и • а + v • b = 1. Следующая лемма выглядит слишком очевидной, чтобы нуждаться в доказательстве. Лемма А.4 Пусть d делит произведение аЬ и НОД чисел d и а равен 1. Тогда d делит Ь. Доказательство. Так как нод(с£, а) = 1, теорема А.З влечет, что xd + ya = 1 для некоторых целых чисел х и у. Поэтому xdb + yab — Ь. Так как d делит ab, это влечет, что d также делит xdb + yab, равное b. Следствие А.5 Пусть р — простое число, делящее Hi=i где щ G Z, 1 < < i < к. Тогда d делит по меньшей мере один из множителей ai, 1 < г < к. Доказательство. Используйте лемму А.4 и индукцию по к. Следующую теорему можно легко доказать индуктивным рассужде- нием. Теорема А.6 {основная теорема теории чисел) Любое натуральное число имеет единственное разложение вида Ц.рГ, е И. Пусть а = ПЩ‘ и Ь = где ei, fi Е N. Тогда легко проверяется, что нод(а, 6) = Цр™,п<е‘’л’, (д.5) i нок,а,Ч = П₽.т“{е‘'Л}- (Я-6) i нод(а, Ь)нок[а, b] = ab. (А.7)
A.2. Алгоритм Эвклида 339 Выражение Factorlnteger[n] из пакета “Mathematica” дает разложение це- лого числа п. Выходом служит список пар. Каждая пара содержит про- стой делитель числа п и его показатель. || {3, 2}, {3607, 1}, {3803, 1} а = 21375; b = 89775; Factorinteger[а] Factorinteger[b] Factorinteger[GCD[а, b]] Factorinteger[LCM[а, Ь]] GCD[a, b] * LCM[a, b] == а * b || {3, 2}, {5, 3}, {19, 1} || {3, 3}, {5, 2}, {7, 1}, {19, 1} || {3, 2}, {5, 2}, {19, 1} || {3, 3}, {5, 3}, {7, 1}, {19, 1} II True А.2 Алгоритм Эвклида Пусть а и b — два натуральных числа и b > а. Очевидно, любой дели- тель чисел а и b является делителем чисел а и b — а и наоборот. Значит, нод(а, Ь) = нод(а, b — а). Записав b = q • а + г, по той же причине мы имеем нод(а, Ь) = нод(г, а). Если г = 0 (и b = q а), можно заключить, что нод(а, Ь) = а, в противном случае мы продолжаем те же вычисления с а и г. Таким образом, можно записать а — q' • г + г', 0 < г1 < г, где нод(а, Ь) = нод(г',г), и т.д., пока один из аргументов не станет делить другой. Этот алгоритм является крайне быстрым способом вычисления нод двух целых чисел и известен как алгоритм Эвклида. Алгоритм А.7 (простая версия алгоритма Эвклида) input натуральные числа а, Ь; while Ъ > 0 do begin put г как остаток а при делении на b (поэтому пишем а = q - Ъ + ry Q < г < Ь); put а = Ь; put Ъ = г; end output а.
340 Приложение А. Элементарная теория чисел Этот алгоритм реализуется в пакете “Mathematica” с помощью функ- ций While, Floor и Print: а = 1645; b = 861; While[Ь != 0, г = а - Floor[а / Ь] * Ъ; {a, b} = {b, г}; Print[{а, Ь}]] {861, 784} ' {784, 77} {77, 14} {14, 7} {7, 0} Если нужно также найти коэффициенты и и v, указанные в теореме А.З, то этот алгоритм может быть адаптирован, как описано ниже. За- метим, что при выбрасывании строк, включающих целые числа щ и v^, расширенный алгоритм сводится к простой версии алгоритма. Алгоритм А.8 (расширенная версия алгоритма Эвклида) input b > а > 0; initialize sq = Ь, si = а, uq = 0, ui = 1, vq = 1, vi = 0, n = 1; while sn > 0 do begin put n = n + 1; write sn—2 = Qnsn—1 4“0 < sn < sn— ij put un — qnun—i + un—2y put vn = qnvn-i + vn_2; end put и = (-l)nvn_i;v = (-l)n-1vn_i. нод(а, b) = sn-i = и • a + v • b. (A.8) “Mathematica” содержит расширенную версию алгоритма Эвклида в качестве стандартной функции. Она называется ExtendedGCD. а = 861; b = 1645; ExtendedGCD[а, Ь] || {7, {107, -56}} Заметим, что в этом примере и в самом деле 7 = нод(861,1645) = 107 х 861 - 56 х 1645. Доказательство корректности алгоритма А.8. Заметим снача- ла, что элементы sn,n > 1, образуют строго убывающую последователь- ность неотрицательных целых чисел. Поэтому алгоритм заканчивается
A.2. Алгоритм Эвклида 341 самое большее после b итераций. Позже в этом разделе мы проанализи- руем, насколько быстр алгоритм Эвклида на самом деле. Из рекуррентного соотношения Sk = Sk-2 — QkSk-1 алгоритма следует, что нод(а, Ь) = нод(во, S1) = нод01, s2) = • • • = нод(вп-1, sn) = = нод(ап-1,0) = 8п_ 1. Это доказывает первое равенство в А.8. Докажем теперь, что для всех к, 0 < к < п, + (-l)kvkb = sk. Заметим, что подстановка к = п — 1 в это соотношение доказывает второе равенство в А.8. Для к = 0 и к = 1 соотношение выше выполняется благодаря нашему выбору начальных значений для uq,ui,vq и vi. Теперь мы применим индукцию. Из рекуррентных соотношений алгоритма и из индуктивной гипотезы следует, что Sk = Sk-2 — qkSk-1 = = {(-l)*~3u*_2a + (-V)k-2vk_2b} - ад{(-1),!-2ад_1а + (-1Ь} = Конечно, нет необходимости записывать ранее вычисленные в про- грамме значения Sk,Uk и v^. Достаточно только каждых последних двух вместе с q^. Причиной введения их в алгоритм было облегчение чтения доказательства. Приведем этот алгоритм в пакете “Mathematica”, используя функции While, Floor и Print. b = 1645; а = 861; n = 1; so = b; sn = a; . uo = 0; un = 1; vo = 1; vn = 0; While[sn != 0, Print[(-l)n-1, "x", un, "x", a, " + ", <-l)n, "x", vn, "x", b, "=", sn]; q = Floor [so / sn]; n = n + 1; {so, sn, uo, un, vo, vn} = {sn, so - q * sn, un, q * un + uo, vn, q * vn + vo}] 1 x 1 x 861 + -1 x Ox 1645 = 861 -1 x 1 x 861 + 1 x 1 x 1645 = 784 1 x 2 x 861 + -1 x 1 x 1645 = 77
342 Приложение А. Элементарная теория чисел -1 х 21 х 861 + 1 х 11 х 1645 = 14 1 х 107 х 861 + -1 х 56 х 1645 = 7 Мы хотим завершить этот раздел, сказав несколько слов о сложно- сти алгоритма Эвклида. Должно быть ясно, что этот алгоритм наиболее медленен, когда на каждом шаге qk принимает значение 1 (если это воз- можно). Это случай, в котором 8^-2 = Sfc-i 4-Sfc для всех fc, 2 < к < п — 1, и sn-2 — 2sn-i,sn = 0. Другими словами, наименьшие значения b и а, требующие п — 1 шагов, даются равенствами b = Fn и а = Fn-i, где Fi^i > 0, — известная последовательность чисел Фибоначчи, определяе- мая равенствами F® = 0, Fl =1, Fi+z = F+l + Fi для i > 0. Позволяя пакету “Mathematica” оперировать одновременно с двумя последовательными числами Фибоначчи (для этого используется функ- ция Nest) мы получаем следующий метод вычисления этих чисел (в при- мере вычисляются Fioo и Я01): f[{u_, v_}] := {v, u + v}; n = 100; Nest[f, {0, 1}, n] || {354224848179261915075, 573147844013817084101} Это можно сделать также прямо, используя функцию Fibonacci. Fibonacci[100] II 354224848179261915075 Читатель может проверить вышесказанное следующим образом. GCDiterations[n_Integer?Positive, m_Integer?Positive] := Block[{a = n, b = m, r, t = 0}, While[b > 0, r = ModEa, b] ; {a, b, t} = {b, r, t + 1}]; t] n = 100; GCDiterations[Fibonacci[n], Fibonacci[n - 1]] II 98 Table[GCDiterations[Fibonacci[n], Fibonacci[n - 1]], {n, 2, 100}] {1, 2, 3, 4 , 5, 6, 7, 8 , 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98}
А.З. Сравнения и теоремы о них 343 Заметим, что алгоритм GCDiterations, использованный выше, не вли- яет на значения а и b (в противовес нашей реализации простой вер- сии алгоритма Эвклида). Он также использует функцию Mod из пакета “Mathematica”, которую мы обсудим в следующем разделе. Подставляя Fn = cfn в определяющее рекуррентное соотношение для чисел Фибоначчи, Fi+% = Fi+i+Fi, получаем квадратное уравнение /2 = = /+ 1, корни которого суть (1 ± \/5)/2. Мы укажем без доказательства следующую верхнюю границу сложности алгоритма Эвклида. Теорема А.9 Пусть а и Ъ — натуральные числа, b > a, b 1, и пусть / = = (1 + л/5)/2. Тогда число итераций, требуемых алгоритмом Эвклида при вычислении нод(а, Ь), не превосходит logy b. а = Fibonacci[100]; b = Fibonacci [99]; GCDiterations[а, b] Ceiling[Log[(1 + Sqrt [5]) / 2, b]] II 98 II 98 А.З Сравнения, теоремы Эйлера, Ферма и китайская теорема об остатках А.3.1 Сравнения Определение А.4 Два целых числа а и b называются сравнимыми друг с другом по модулю т, если их разность b — а делится на тп. Это обозна- чается формулой а = b (mod тп). Функция Mod[a, т] из пакета “Mathematica” дает единственное целое г, 0 < г < тп, такое, что а = г (mod тп). а = 12345; m = 13; Mod [a, m] II 8 Следующий пример показывает, кцк легко проверить сравнимость двух целых чисел по модулю тп: m = 13; а = 12345; b = 103579; Mod[a - b, т] == 0 II True
344 Приложение А. Элементарная теория чисел Определение А.5 Множество из тп целых чисел ai,a2, • • • , «т называется полной системой вычетов, если каждое целое число сравнимо (в точ- ности) с одним из элементов 1 < г < тп, по модулю т. Чаще всего используемые полные системы вычетов по модулю т суть {0,1,... ,т—1} и {1,2,_,т}. Эти системы можно породить функциями Range и Table из пакета “Mathematica”. m = 10; Table[i, <i, 0, m - 1}] Range[m] || <0, 1, 2, 3, 4, 5, 6, 7, 8, 9} || {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Очевидно, что m целых чисел a^, 1 < i < m, образуют полную систе- му вычетов по модулю т тогда и только тогда, когда для любой пары г, j, 1 < i,j < т, выполняется ai = aj (mod т) => i = j. (A.9) Отношение сравнения является отношением эквивалентности (см. определение В.5) на Z. Полная система вычетов есть просто множество представителей т классов эквивалентности. Лемма А.10 Пусть ka = kb (mod m) и нод(/с, т) — d. Тогда а = b (mod m/d). Доказательство. Запишем к = k'd и т = m'd, где НОд(А/, m') = 1. Из того, что ка — кЪ = хт для некоторого х Е Z, следует, что к'(а — Ь) = = хт'. Так как нод(77г/, к') = 1, лемма А.4 влечет, что т'Ка — Ь), т.е. а = b (mod mf). Лемма А.11 Пусть ai,a%,... ,ат — полная система вычетов по модулю т и пусть НОД (к, т} — 1. Тогда ка\, ка%, •. • ,кат — тоже полная система вычетов по модулю тп. Доказательство. Используем критерий (А.9). По лемме А.10 kai = = kaj (mod m) влечет, что ai = aj (mod m). Это, в свою очередь, влечет, что i — j.
А.З. Сравнения и теоремы о них 345 А.3.2 Теоремы Эйлера и Ферма Мы часто будем интересоваться только теми представителями клас- сов вычетов по модулю тп, чьи элементы взаимно просты с тп. Число этих классов дается следующей функцией. Определение А.6 Функция Эйлера определяется равенством <р(тп) = |{г|0 < i < тп, нод(г,тп) = 1}|. Иными словами, <£>(тп) — это число целых чисел между 0 и т— 1, которые взаимно просты с т. В пакете “Mathematica” этой функции отвечает EulerPhi. Например, m = 15; EulerPhi[m] II 8 Соответствующие восемь элементов — 1, 2, 4, 7, 8, 11, 13 и 14. Позже в этом разделе мы увидим, как можно эффективно вычислять <р(гп). Теорема А. 12 Для всех натуральных чисел т Это довольно легко увидеть на примере, когда из т целых чисел между 1 и тп берутся только члены <p(d), d\m. Когда т = 15, делителями т служат 1, 3, 5 и 15. Восемь элементов 1, 2, 4, 7, 8, 11, 13, 14 имеют с числом 15 НОД 1 (напомним, <£>(15) = 8), четыре (= <£>(5)) элемента 3, 6, 9, 12 имеют с 15 НОД = 3, два (= <£>(3)) элемента 5 и 10 имеют НОД = 5 и один (= <£>(1)) элемент 0 имеет НОД = 15. Доказательство теоремы А.12. Пусть d делит тп. При запи- си г = id непосредственно видно, что число элементов г, 0 < г < < тп, с нод(г, тп) ~ d равно числу целых чисел г, таких, что 0 < г < и нод(г, ^) = 1; поэтому таким числом будет <£>(^). С другой стороны, нод(г, тп) делит т для каждого целого г, 0 < г < < тп. Отсюда следует, что J2d|7n(ip(^) = т- Это эквивалентно доказыва- емому утверждению. Следующее нестандартное предложение пакета “Mathematica” вычис- ляет сумму значений f(d) по всем делителям d целого числа тп: DivisorSum [f, m] := Plus QQ (f / Q Divisors[m]) Эту функцию можно использовать для проверки теоремы А. 12:
346 Приложение А. Элементарная теория чисел m = 15; DivisorSum[EulerPhi, m] II 15 Определение A.7 Множество из <р(тп) целых чисел гi, Г2, • • •, г</9(тп) называется приведенной системой вычетов по модулю тп, если каждое це- лое число j с НОД^', тп) = 1 сравнимо ровно с одним элементом < г < р(т). Приведенная система вычетов может легко порождаться с помощью следующих заново определенных функций. CoPrimeQ[n Integer, m Integer] := GCD[n, m] == 1 CoPrimeQ[35, 91] CoPrimeQ[36, 91] II False II True CoPrimes[n_Integer?Positive] := Select[Range[n], CoPrimeQ[n, #] &] CoPrimes[15] || {1, 2, 4, 7, 8, 11, 13, 14} Имеется следующая лемма, аналогичная лемме А.11. Лемма А.13 Пусть Г1, Г2, - - -, — приведенная система вычетов по модулю тп, и нод(а, тп) = 1. Тогда ari,агг,..., ar^ — тоже приведенная система вычетов по модулю тп. С помощью этой леммы легко доказать, что классы в приведенной системе вычетов образуют группу (см. подраздел В. 1.1). Теорема А. 14 (Эйлер) Пусть а и тп — взаимно простые целые числа. Тогда av(m) = । (mod тп). Эту теорему довольно легко проверить в конкретных случаях. m = 12345; а = 11111; GCD[m, а] EulerPhi[m] Mod[aEulerPhi[m] , m]
А.З. Сравнения и теоремы о них 347 II 1 II 6576 II 1 Возведение в степень по модулю некоторого целого числа в пакете “Mathematica” может выполняться много быстрее с помощью функции PowerMod, которая приводит все промежуточные результаты при вычис- лении ab по модулю п. m = 123456789; а = 1111111111; GCD[m, а] PowerMod[a, EulerPhi[т], т] II 1 II 1 Доказательство теоремы А.14. Пусть п, гг,...,— приведенная система вычетов по модулю тп. По лемме А. 11 у?(тп) <^(т) JJ Tj = JJ (arj) = JJ n (mod m). i=l i=l i=l Так как каждый делитель ri взаимно прост с т, можно разделить обе части равенства на ri в СИЛУ леммы А. 10. Результатом будет 1 = = (mod тп). Пусть р — простое число. Так как любое целое г, 1 < г < р, взаимно просто с р, это показывает, что <р(р) = р — 1. Теорема Эйлера влечет следующую теорему для всех значений а. Теорема А. 15 (малая теорема Ферма) Пусть р — простое число, а — произвольное целое. Тогда ар = a (mod р). В конкретных случаях это легко проверить в пакете “Mathematica” с помощью функции PowerMod. р = 98947; а = 12345; PrimeQ[р] PowerMod[а, р, р] == а II True II True
348 Приложение А. Элементарная теория чисел Как мы заметили, <р(р) = р — 1 для простого р. Поскольку в точно- сти одно из любых р последовательных целых чисел делится на р, мы получаем следующий более сильный результат: ¥>(ре) = ре - (ре/р) =ре г(р - 1) = ре(1 - i). (Л.10) Определение А.8 Функция f : N —> N называется мультипликативной, если для любой пары натуральных чисел тип нод(т,п) = 1 => f(m • п) = /(т)/(п). I Лемма А.16 Функция Эйлера мультипликативна. Доказательство. Пусть тип взаимно просты и пусть ni,a25-<-5 aip(m) и bi, &2 5 , ^(п) — приведенные системы вычетов по модулю т и п соответственно. Достаточно показать, что <р(т)<р(п) целых чисел n-ai+m-bj, 1 < i < <р(т) и 1 < j < <р(п), образуют приведенную систему вычетов по модулю тп. Легко проверить, что целые числа п • щ + m- bj, 1 < i < <p(m) и 1 < j < <р(п), все различны по модулю тп и что они взаимно просты с тп. (Используйте лемму А. 15 и формулу (А.9)). Остается проверить, что любое целое число к с нод(&, mn) = 1 срав- нимо с п • ai + т • bj по модулю тп для некоторых г, 1 < г < <р(т), и j, 1 < j < <р(п). Из леммы А. 13 мы знаем, что существуют целые числа i и j, 1 < г < <р(тп), 1 < j < <р(п), такие, что к = п • ai (mod m), к = т • bj (mod n). Это влечет, что как т, так и п делят к — п • — т • bj. Поскольку нод(т, n) = 1, из условий (А.4) и (А.7) следует, что т • п также делит к — п ai — т • bj. Теорема А. 17 <p(m)=mTT (1 ~-)• J-p простое, р\т р Доказательство. Скомбинируйте формулу (А. 10) и лемму А. 16. В разделе А.5 мы увидим, как теорема А. 17 доказывается прямым вычислительным рассуждением. С помощью функций Length и EulerPhi из “Mathematica” и опреде- ленной выше функции CoPrimes (с использованием CoPrimeQ) можно проверить теорему А. 17 следующим образом:
А.З. Сравнения и теоремы о них 349 m = 15; Length[CoPrimes[m]] EulerPhi[m] II 8 II 8 A.3.3 Решение линейных сравнений Простейшее сравнение, которое может быть решено, — это линейное сравнение ах = b (mod тп). (А. 11) Теорема А. 18 Линейное сравнение ах = b (mod тп) имеет решение х тогда и только тогда, когда НОд(а, тп) делит Ь. В этом случае число различных решений по модулю тп равно нод (а, тп). Доказательство. То, что условие нод(а, тп)|Ь необходимо, чтобы (А. 11) имело решение ж, тривиально. Докажем теперь, что оно также и достаточно. Пусть d = нод(а, тп), тогда запишем а = a'd, тп = m'd и b = b'd, где нод(а,,тп/) = 1. По лемме А.11 сравнение а!х = У (mod и'} имеет единственное решение х' по модулю тп'. Очевидно, решение х сравнения ах = b (mod тп) удовлетворяет сравнению х = х' (mod тп'). Таким образом, каждое решение х по модулю тп может быть записано в виде х' + гтп', 0 < i < d. Запишем а'х' = У + urn', и€ Z. Тогда для каждого г, 0 < i < d, а(х' + im') = da'x' + idn'm' = db' + udm' + ia'm = b + (u + ia')m. Следовательно, числа xf + гтп7, 0 < i < d, представляют все решения по модулю тп сравнения ах = b (mod тп). Решение сравнения ах = b (mod тп) легко найти с помощью расши- ренной версии алгоритма Эвклида. В самом деле, из иа + vb = 1 (см. теорему А.З) следует, что иа = 1 (mod тп). Таким образом, решение х дается как bu (mod тп). Если НОД (а, тп) = 1, то обычно пишется а-1 для единственного и, удовлетворяющего сравнению иа = 1 (mod тп). Пример А.1 (метод 1) Чтобы решить сравнение 14ж = 26 (mod 34), заметим, что нод(14, 34) = 2, которое действительно делит 26. Сначала мы решаем сравнение 7х' = 13 (mod 17). С помощью рас- ширенной версии алгоритма Эвклида находим 5 • 7 + (—2)17 = нод(7,
350 Приложение А. Элементарная теория чисел 17) = 1. Поэтому 7-5=1 (mod 17) и х' может быть вычислен из сравнения х' = 7-1 • 13 = 5 • 13 = 14 (mod 17). По теореме выше 14а; = 26 (mod 34) имеет решения 14 и 14+ 17 = = 31 по модулю 34. ExtendedGCD[7, 17] Mod [5 * 13, 17] II {1, {5, -2Н II 14 Пример А.2 (метод 2) Чтобы решить сравнение 123456789ж = 135798642 (mod 179424673), мы сначала проверяем, будет ли НОД(123456789,179424673) делить 135798642. Затем мы вычисляем 123456789“1 (mod 179424673) и вы- числяем 123456789”1 • 135798642, что дает 21562478 в качестве реше- ния. Для вычисления 123456789"1 (mod 179424673) вместо алгоритма Эвклида можно также использовать теорему Эйлера. В самом деле, а<р(т) = । (mod т) влечет, что аа^-1 = 1 (mod т) и поэтому а-1 = (mod тп). GCD [123456789, 179424673] PowerMod[123456789, EulerPhi[179424673] - 1, 179424673] II 1 II 172609538 Таким образом, число 172609538 — мультипликативное обратное к 123456789 по модулю 179424673. Решение х сравнения 123456789г = = 135798642 (mod 179424673) получается следующим образом: Mod[123456789 * 172609538, 179424673] II 21562478 Это можно проверить: Mod[123456789 * 21562478, 179424673] II 135798642 Функция PowerMod из пакета “Mathematica” очень эффективно вы- числяет мультипликативное обратное к данному числу: PoweerMod[123456789, -1, 179424673] II 172609538
А.З. Сравнения и теоремы о них 351 Функция Solve пакета “Mathematica” дает все решения сравнения ax = b (mod m), если они существуют. Clear [х] ; Solve[{12 х == 8, Modulus == 16}, х] {{Modulus -> 16, х -> 2}, {Modulus -> 16, х -> 6}, {Modulus -> 16, х -> 10}, {Modulus -> 16, x -> 14}} Чтобы получить только решения, можно выполнить х /. Solve [{12 х == 8, Modulus == 16}, х] || {2, 6, 10, 14} Мы приглашаем читателя испытать х / . Solve[{13 х == 1, Modulus == 16}, х] Solve[{12 х == 7, Modulus == 17}, х] А.3.4 Китайская теорема об остатках Здесь мы обсудим случай, когда х одновременно удовлетворяет нескольким линейным сравнениям, скажем, aiX = bi (mod гиД, с нод(щ,ттц)\Ьг для 1 < i < к. Деля г-е сравнение на di = нод(щ, тД, 1 < г < fc, получаем, как и раньше, сравнения а^х' = b\ (mod m'-) с нод(а^,тД — 1. В силу доказательства теоремы А.18 решение этого сравнения эквивалентно решению одного из d сравнений а\х = (mod mj), 0 < j < d. С этой точки зрения мы можем ограничить наше внимание тем случаем, когда НОД(аг,тД = 1 для всех г, 1 < i < к. Теорема А. 19 (китайская теорема об остатках) Пусть mi, 1 < i < k, — попарно взаимно простые натуральные числа. Далее, пусть 1 < i < к, — целые числа с нод(а^, mi) ~ = 1. Тогда система к сравнений aiX = bi (mod п?Д, 1 < i < к, (A.12) имеет единственное решение по модулю Hi=i тг Для всех воз- можных /с-ок целых чисел bi, &2,..., Доказательство. Допустим, что я/ и х" — два решения системы. Тогда ai(xr — х") = 0 (mod тД,1 < i < к. По лемме А.4 тгц делит х' — х” для всех г, 1 < i < к. Отсюда следует, что х' = х" (mod Hi=i тД- Следовательно, к сравнений имеют единое решение, и оно единственно ПО модулю HiLl
352 Приложение А. Элементарная теория чисел С другой стороны, так как имеется столько же значений х по модулю FIi=i сколько и возможных приведенных fc-ок bi, Ь%,.. •, между ними должно быть взаимно однозначное соответствие. Наше доказательство не дает эффективного алгоритма для нахожде- ния решения системы (А. 12). Мы сейчас объясним, как это может быть сделано. Пусть 1 < i < к и щ — единственное решение по модулю nLi w системы = 1 (mod mJ, (А. 13) djUt = 0 (mod mJ, 1 < j < к, j i. (A.14) С помощью алгоритма Эвклида щ легко определяются. В самом деле, из (А. 14) следует, что щ — кратное числа тп^г\ определенного как П?jyi скажем, щ = rm^ для некоторого г, 0 < г < т^. Значение г получается из (А. 13). Действительно, г является решением сравнения ajrm^ = 1 (mod mJ. Следовательно, щ = mod mj}m^. Числа щ, 1 < i < fc, можно записать, используя самое большее fclog2m битов пространства памяти. Решение системы (А. 12) дается теперь формулой х = 1Z1&1 + 1/2&2 + - - • + ukbk. Пример А.З Чтобы решить систему Зх = 7 (mod 11), 2х = 9 (mod 13), 12ж = 5 (mod 17), перепишем эти сравнения в виде х = З-1 • 7 (mod 11), х = 2-1 • 9 (mod 13), х = 12-1 5 (mod 17), которые приводятся к х = 4 • 7 (mod 11), х = 7-9 (mod 13), х = 10 • 5 (mod 17), т.е. х = б (mod 11), х = 11 (mod 13), х = 16 (mod 17). Теперь мы найдем решения сравнений и\ = 1 (mod 11), ui = 0 (mod 13), и\ = 0 (mod 17) U2 = 0 (mod 11), 1/2 = 1 (mod 13), 1/2 = 0 (mod 17) i/3 = 0 (mod 11), 113 s0 (mod 13), 1/3 = 1 (mod 17)
А.4. Квадратичные вычеты 353 Записывая щ = R • 13 • 17, и2 = l>2 • И • 17, U3 = I3 • 11 • 13, мы с по- мощью теоремы Л. 18 (или с помощью функции Solve) находим, что Zi = l (mod 11), /2 = 8 (mod 13), I3 = 5 (mod 17) и поэтому щ = 221 (mod 11 • 13 - 17), и2 = 1496 (mod 11 • 13 • 17), и3 = 715 (mod 11 • 13 • 17). Мы заключаем, что х = 6-221+11-1496+16-715 = 50 (mod 11-13-17). Чтобы решить сравнения х = bi (mod тщ), 1 < i < k, где все mi взаимно просты, с помощью китайской теоремы об остатках в системе “Mathematica”, нужно сначала загрузить пакет NumberTheory‘Number- TheoryFunctions << NumberTheory^NumberTheoryFunctions* Теперь система сравнений может быть решена с помощью функции ChineseRemainderTheorem, доступной в указанном пакете. Мы продемон- стрируем это, определяя ui,tZ2 и из из приведенного выше примера. ChineseRemainderTheorem[{1, 0, 0}, {11, 13, 17}] ChineseRemainderTheorem[{0, 1, 0}, {11, 13, 17}] ChineseRemainderTheorem[{0, 0, 1}, {11, 13, 17}] II 221 II 1496 II 715 При рассмотрении системы сравнений щх = (mod m^), 1 < i < < к, где все mi взаимно просты и нод(аг,т<) = 1 для 1 < г < к в “Mathematica” легко привести эту систему к эквивалентной системе х = = a^bi (mod тщ), 1 < г < к, которая может быть решена с помощью китайской теоремы об остатках. Для этого сведёния используются функ- ции PowerMod и Mod. Они действуют одинаково как на числах, так и па векторах (покоординатно). Продемонстрируем это с параметрами из предыдущего примера. а = {3, 2, 12}; b = {7, 9, 5}; m = {11, 13, 17} b = Mod[b * PowerMod[а, -1, m], m] Chine seRemainderThe orem[b, m] II {6, 11, 16} II 50 A.4 Квадратичные вычеты Пусть p — нечетное простое число. Квадратичное сравнение ах2+Ьх+ 4-с = 0 (mod р), а ф. 0 (mod р) можно упростить, разделив его на а, а
354 Приложение А. Элементарная теория чисел затем применить подстановку х i—> x — b/(2a). Таким путем ax2 + Ьх-\-с = = 0 (mod р) приводится к квадратичному сравнению типа х2 = u (mod р). (Л.15) Определение А.9 Пусть р — нечетное простое число, а и — целое число, не деля- щееся на р. Число и называется квадратичным вычетом (QR) по модулю р, если сравнение (А. 15) имеет целочисленное ре- шение, и называется квадратичным невычетом (NQR), если (А. 15) не имеет целочисленного решения. Определение А. 10 Пусть р — нечетное простое число, а и — целое. Символ Ле- жандра (^) определяется равенством Г "Ы, если и — квадратичный вычет по модулю р, — 1 = < —1, если и — квадратичный невычет по модулю р, V' I 0, если р делит и. Если нет сомнений в реальном выборе простого числа р, то вме- сто часто пишут %(tz). Символ Лежандра — это частный случай следующей функции. Определение А. 11 Пусть т = — нечетное целое число, а и — целое число с нод(и,т) = 1. Тогда символ Якоби (~) определяется равен- ством -) , Pi / где (jy'j обозначает символ Лежандра. Символ Якоби (а, значит, и символ Лежандра) может вычисляться с помощью стандартной функции JacobiSymbol из пакета “Mathematica”. Например, мы можем проверить, будет ли 12 квадратичным вычетом по модулю 13 (на самом деле, 52 = 12 (mod 13)) посредством вычисления JacobiSymbol[12,13], что дает значение 1: и = 12; m = 13; JacobiSymbol[u, m] II 1 Мы хотим вывести некоторые свойства символа Лежандра. Пусть а2 = и (mod р). Тогда также (р — а)2 = и (mod р). Много- член х2 — и имеет самое большее два нуля в GF(p) (см. теорему В. 15),
A.4. Квадратичные вычеты 355 поэтому по модулю р не может быть более двух различных решений сравнения х2 = u (mod р). Отсюда следует, что квадратичные вычеты по модулю р — это целые числа •2 А 1 Р “ 1 г mod р, 1 < г < —-—, или, альтернативно, целые числа (р — г)2,1 < i < Мы заключаем, что имеется в точности QR и NQR. Это доказывает первую из следующих двух теорем. Теорема А.20 Пусть р — нечетное простое число. Тогда ровно среди чисел 1,2,.. . ,р — 1 — квадратичные вычеты и — квадратичные невычеты. Имеем формулу Х(и) = о. Читатель может проверить эту теорему на конкретных примерах с помощью двух следующих функций пакета “Mathematica”. р = 17; JacobiSymbol[i, р] II 0 ListQuadRes[р_] := Select[Range[р], JacobiSymbol[#1, р] == 1 &] р = 17; ListQuadRes[р] || {1, 2, 4, 8, 9, 13, 15, 161- Теорема А. 21 Пусть р — нечетное простое. Тогда для всех целых чисел и и v Х{и • v) = %(w) - x(v). Доказательство. Эта теорема окажется тривиальным следствием доказываемой позже теоремы А.23. Мы представим здесь более элемен- тарное доказательство. Если р делит и или v, то утверждение тривиально, потому что обе части равенства равны нулю. В случае, когда р не делит ни и, ни г?, доказательство распадается на три случая.
356 Приложение А. Элементарная теория чисел Случай 1. и и v — оба QR. Тогда u = a2 (mod р) и v = Ь2 (mod р) для некоторых целых а и Ь. Отсюда следует, что и • v = (а • Ь)2 (mod р), т.е. и • v — QR. Случай 2. Ровно одно из чисел и и v является QR, скажем, и — QR, аг? — NQR. Допустим, что также и • г? — QR. Тогда существуют целые числа а и 6, такие, что и = a2 (mod р) и и • г? = b2 (mod р). Так как а 0 (mod р), получаем, что г? = (b/a)2 (mod р). Противоречие. Случай 3. Как и, так иг? — NQR. Из леммы А. 11 мы знаем, что i • и, i = 1,2,... ,р — 1, пробегает все ненулевые элементы по модулю р. Для значений г, для которых i — QR, мы имеем, согласно случаю 2, что i • и — NQR. А для прочих значений г, являющихся NQR, i • и будет QR. Поэтому и • г? — QR. Хотя следующая теорема нигде в этой книге не используется, мы приводим ее, поскольку она часто бывает нужна в родственных областях дискретной математики. Теорема А.22 Пусть р — нечетное простое. Тогда для любого целого числа г? р-1 У^хЫ -x(w +v) = и=о Р“ 1, -1 если р делит г?, в противном случае. Доказательство. Если р делит г?, то утверждение тривиально. Если р не делит г?, то в силу теорем А.21 и А.20 мы имеем УТ * Х(и)х(и + v) = * хИхИх(1 + v/u) = = Х-Ji +«/«) = xM = -i+ELox(w) = -L Пусть и — QR, скажем, и = a2 (mod p). По теореме Ферма и(р~^/2 = = ap~1 = 1 (mod p). Таким образом, QR суть нули многочлена ж(р-1)/2 _ I над GF(p). Так как многочлен степени (р — 1)/2 над GF(p) имеет самое большее (р — 1)/2 нулей в GF(p) (см. теорему В.15), в GF(p) ж(р-1)/2 = JJu_QR(a; - и). (А.16) Отсюда также следует, что и^р ^2 1, если и — NQR. Так как (t/p-1)/2]2 = 1 (mod р) по теореме Ферма и так как сравнение у2 = = 1 (mod р) имеет только корни 1 и —1, получаем, что = = — 1 (mod р), если и — NQR. Это доказывает следующую теорему для всех и, взаимно простых с р. Для случая р\и теорема верна тривиальным образом.
A.4. Квадратичные вычеты 357 Теорема А.23 Пусть р — нечетное простое. Тогда для всех целых чисел и (—= и^'р~1^2 (mod р). \Р/ Следствие А.24 Пусть р — нечетное простое. Тогда ( —1\ _ Г +1, если р = 1 (mod 4), р / [ —1, если р = 3 (mod 4). Доказательство. (—1)(р-1)/2 = 1 тогда и только тогда, когда р = = 1 (mod 4). Еще одно значение символа Лежандра, которое понадобится нам поз- же, — это (|). Теорема А.25 Пусть р — нечетное простое. Тогда (2\ _ J 4-1, если р = ±1 (mod 8), р) ~ \ ~ 1? если р = ±3 (mod 8). Доказательство. 2^ п2к = П2>) - • (nXm(2fc)) = =. (n^V)) • (пХ^ - 2fc>) - = (-l)E2i-LE41J . (modp). p-i Деля обе части приведенного сравнения на получаем 2Е^~ = (—l)2^ LET“J (modp). Теперь наше утверждение следует из теоремы А.23. Напомним определение символа Якоби в терминах символа Ле- жандра: где m = (А17)
358 Приложение А. Элементарная теория чисел Теорема А.26 Пусть тип — нечетные целые числа. Тогда для символа Якоби выполняются следующие соотношения: i) (”) = (^), / X т' х т '3 “) (Э = (£)(£). iv) (—) — 1 тогда и только тогда, когда т = 1 (mod 4), v) (m) ~ 1 тогДа и только тогда, когда т = ±1 (mod 8). Доказательство. Первые два соотношения выполняются для сим- вола Лежандра и, в силу (А.17), также для символа Якоби. Третье со- отношение — прямое следствие из (А.17). Чтобы увидеть, как четвертое соотношение вытекает из (А. 17) и след- ствия А.24, достаточно заметить, что произведение нечетного числа це- лых чисел, сравнимых с 3 по модулю 4, также сравнимо с 3 по модулю 4, тогда как произведение четного числа таких чисел будет сравнимо с 1 по модулю 4. Доказательство последнего соотношения аналогично (используйте теорему А.25). Для быстрого вычисления (^) требуется еще одно соотношение. Мы не даем его доказательства, потому что соответствующая теория лежит за пределами этой книги. Заинтересованный читатель отсылается к тео- реме 99 в [HarW45] или к теореме 7.2.1 в [Shap83]4. Теорема А.27 (закон Гаусса квадратичной взаимности) Пусть тип — нечетные взаимно простые целые числа. Тогда (тп-1)(п-1) 4 Соотношения из теорем А.25, А.26 и А.27 позволяют очень быстро вычислять символ Якоби. Пример А.4 /127034 А27 /163614 А.26г) / 3658 4 А.26п) 416361) “ V12703 ) ~ 412703 7 ~ A.26w) / 2 4 / 1829 4 А.26и)&А.27 /127034 А.26г) /17294 А27 = 12703) ’ \ 12703) ” 4 1829 ) “ 41829) = AJ7 /18294 А.26г) / 100 4 А.26гг) / 2 4 2 / 5 4 2 _ = 41729) ~ 41729) “ 41729) ’ 41729 J = ’ 4На русском языке доказательство можно найти, например, в книгах *[АйеР87], *[Серр72], *[Кобл01], *[ЧерО2] и многих других. — Прим. ред.
A.5. Непрерывные дроби 359 Читателю нетрудно проверить, что описанный выше метод имеет при- близительно ту же сложность, что и алгоритм Эвклида. Конечно, мы можем вычислить () прямо в пакете “Mathematica”, как это было показано раньше. JacobiSymbol[12703, 16361] II 1 А.5 Непрерывные дроби Довольно часто желательно аппроксимировать действительное число рациональным числом. Например, многие люди используют 22/7 в каче- стве приближения к тг. Лучшее приближение к тт дает дробь 333/106, а еще лучшее — 355/113. Можно увеличить знаменатель до 33102, чтобы получить еще большее улучшение. N[Pi -22/7] N[Pi - 333 / 106] N[Pi - 355 / 113] N[Pi - 103993 / 33102] II -0.00126449 II 0.0000832196 II -2.66764X10-7 II 5.77891X1O'10 Теория непрерывных дробей объясняет, как получать такие хорошие приближения. Определение А.12 Конечная непрерывная (или цепная) дробь — это выражение ви- да «о Ч--------------j---------, (А. 18) ai Ч-----------j------- «2 Н---—---------- ...+ 1 am—1 Ч--- ат где ао € Z и G N,1 < г < т. Такая дробь часто обозначается последовательностью [ао, «1,..., ат].
360 Приложение А. Элементарная теория чисел Если тп —> оо, мы говорим о бесконечной непрерывной дроби. Она имеет вид 1 ао Н-------------j------- <21 Ч---------J----- а2 Н------- «з Н----- и записывается посредством [<2q, <21, <22,. ..]. Очевидно, каждая конечная непрерывная дробь представляет раци- ональное число. Его можно найти, шаг за шагом упрощая непрерывную дробь, начиная с <2m_i 4- —- = ^22izil^z»_zlz.- ----1-----у- = ---и 1 ’ m 1 am am ’ 1 <2m_i<2m + 1 Q'm—1 + <2m Т.Д. В пакете “Mathematica” это можно сделать с помощью функции Normal. Normal[3 + 15+----- II 103993 II 33102 Покажем теперь, что верно и обратное: каждое рациональное число представляется конечной непрерывной дробью. Лемма А.28 Каждое рациональное число имеет конечную непрерывную дробь. Доказательство. Пусть a/b, b > 0 — рациональное число. Применим f простую версию алгоритма Эвклида (алг. А.7) к паре (а, Ь). Таким обра- зом, мы полагаем so = a, si = Ь и рекурсивно вычисляем Si = QiSi+i+si+2, где 0 < Si+2 < si+1, пока не получим sm+2 = 0 (и потому sm = — Qmsm+i) Для некоторого целого тп. Тогда a _ so __ qpsi + s2 _ 1 ___________1_______ _ b Si Si 90 Si/s2 90 (gis2 + s3)/s2 1 1 — Qo H----. 1 —c — ... — go 4------------------i------------— Qi + 1/(52/53) „ , ____________1____________ 41 1 I Qm—l + 1
A.5. Непрерывные дроби 361 1 _ g0 Ч-------------j--------. Ql Ч-----------j------ ...+ J- • • -Qm—1 4" Qm Мы заключаем, что a/b имеет [qo?9i? • • • >Qm] своей непрерывной дро- бью. Важно отметить, что представление рационального числа в виде ко- нечной непрерывной дроби, где все qi (i > 1) положительны, не вполне однозначно. Хотя способ, при котором qi вычисляются с помощью про- стой версии алгоритма Эвклида (см. доказательство выше), дает един- ственные значения всех qi, ясно, что на последнем шаге мы всегда полу- чаем qm > 2, так как sm+i < зт. В разложении положительного числа, не равного единице, мы можем переписать последний член следующим образом: 1 __ 1 Qm (Qm — 1) Ч~ у Это показывает, что [до? 91? • • • ? Qm] имеет то же значение, что и [до? 91? • • • ? Qm 1, 1]- Последний член в непрерывной дроби можно выбирать таким обра- зом, чтобы сделать число членов в разложении либо четным, либо нечет- ным, если это может оказаться удобным. Формула (А. 18) предлагает следующий путь вычисления непрерыв- ной дроби числа а. Алгоритм А.29 Непрерывная дробь числа а может быть вычислена следующим образом: initialize оц = а, compute (рекурсивно) щ и ai+1 = 1/(oij — di) для i > О, output [do? «1? «2? • • •]• Пример A.5 Рассмотрим a = 11/9. Тогда получим Clear [а] ; alpha = 11 / 9; alpha[0] = alpha; a[0] = [ alpha [0] J alphaCl] = 1 / (alpha[0] - a[OJ); II 1 Для получения следующего члена вычислим
362 Приложение А. Элементарная теория чисел а[1] = alpha[1]J alpha [2^ = 1 / (alpha[1] - a[l]); 4 Продолжаем далее: а [2] = [alpha [2] J alpha[3] = 1 / Сalpha[2] - а [2]); II 2 Power :: infty : Infinite expression encountered. Мы заключаем, что 012 = 02 u что эта непрерывная дробь задается последовательностью [1,4,2]. Это можно легко проверить: Normal [1 + —^-у] II ¥ Чтобы вычислить в “Mathematica” непрерывную дробь числа, нужно сначала загрузить пакет NumberTheory‘ContinuedFractions‘. << NumberTheory‘ContinuedFractions( Для нахождения непрерывной дроби рационального числа можно ис- пользовать функцию ContinuedFraction. ContinuedFraction[135 / 159] Если а не рационально, можно включить число членов, которые же- лательно увидеть. ContinuedFraction[Pi, 11]
A.5. Непрерывные дроби 363 Чтобы выразить непрерывную дробь обычной дробью, можно снова воспользоваться функцией Normal из пакета “Mathematica”. Normal[ContinuedFraction[Pi, 11]] 4272943 1360120 Если непрерывная дробь задана в виде [ао, а±,..., ат], то обычную непрерывную дробь можно получить с помощью функции Con tin u edFrac- tionForm. Читателю следует знать, что в “Mathematica” перечисление индексов начинается с 1, 2 и т.д. АА = <3, 7, 15, 1, 292} Cont inuedFract ionF orm[АА] 1 15 4------j— 1 + 292 Чтобы получить непрерывную дробь числа а в виде [ao,ai,..., am], можно просто добавить [[1]] к функции ContimiedFractionfai, т]. ContinuedFraction[Pi, 11][[1]] || <3, 7, 15, 1, 292, 1, 1, 1, 2, 1} Определение А. 13 к-я подходящая дробь Ck непрерывной дроби [oq, ai,. •., am], 0 < < к < т, дается выражением [оц, оц,..., сцф Эти подходящие дроби можно легко вычислять с помощью функций Table, Normal, Take, ContinuedFractionForm и Length. АА = {3, 7, 15, 1, 292} Table[Normal[ContinuedFractionForm[Take[AA, i]]], {i, 1, Length[AA]}]
364 Приложение А. Элементарная теория чисел Го 22 333 355 1039931 V’ ~Т’ IU6’ ПИ’ 33102 J Каждая подходящая дробь, будучи рациональным числом, может быть записана в виде Pk/Qk- Значения рд, и q^ можно найти с помощью функций Numerator и Denominator из пакета “Mathematica”. С5 = Normal[ContinuedFraction[Pi, 5]] p5 = Numerator[C5] q5 = Denominator[C5] 103993 33T02 II 103993 II 33102 Следующая теорема дает важные соотношения между непрерывной дробью и ее подходящими дробями. Чтобы сделать доказательство более коротким, мы ослабим наше обычное ограничение целости сц. Теорема А.30 Пусть — конечная или бесконечная последовательность действительных чисел, все из которых положительны с возмож- ным исключением для а®. Пусть Ck = Pk/Qk определяется выражением [oq,ai,..., а^], как в (А. 18). Тогда числа рь и удовлетворяют рекуррентным со- отношениям Ро = ао? Р1 = <2о<21 + 1, <7о = 1, <71 = «1, Рк = ^кРк—1 “Ь Рк—2? — 2, Qk — akQk—l “Ь Qk—2? & 2. Доказательство. Воспользуемся индукцией по к. Для к = 0 мы имеем ро/^о = Со = «о = ао/1, так что в самом деле ро = «о и qq = 1- Для к = 1 имеем p\/q\ = Ci = [оо?а1] = «о + 1/си = (роа1 + l)/ai, так что в самом деле pi = ао«1 + 1 и gi = ai. Допустим, что теорема уже доказана для некоторого значения к. Та- ким образом, si г I Рк «fcPfc-l +Pfc-2 Сд. — [Од, О1, . . . , ОД;] — — . Qk O'kQk-l + Qk-2 Сделаем теперь замену 4- Тогда Ск+1 Опр. [OQ, О1, . . . , О.Д;, ОД;_|_1] Опр.А.12 г 1 = [О1,а2, • • • I^k н----- /с 4-1
A. 5. Непрерывные дроби 365 индук. (Qfc + gfc+1 )Pfc-l + Pfc-2 _ Qfc+l(QfcPfc-l + Pfc-2) + Pfc-1 _ (&k ^7)^-1 + Qk—2 ak+i(akQk—i + Qfc-2) + qk-1 рек.соотн. G-k+lPk + Pk—1 рек.соотн. Pk+1 ак+1Як + Як-l Qk+1 Небольшим результатом,-который понадобится нам позже, служит неравенство Як > Fk, (Л. 19) где Fk — к-е число Фибоначчи, последовательность которых определя- ется равенствами Fq = О, F\ = 1 и рекуррентным соотношением Fk = = Ffc-i + Fk—2,k > 2. С помощью легкого индуктивного рассуждения неравенство qk > Fk получается из неравенств до > 0, qi > 1 и рекур- рентного соотношения qk = a^qk-i + Як-2> в котором > 1 (используйте то, что qk > qk-1 + Як-2)- Лемма А.31 Пусть Ck = Рк/Як — к-я подходящая дробь некоторой непре- рывной дроби. Тогда РкЯк-1 ~Рк-1Як = (”l)fc“1. Доказательство. Снова воспользуемся индукцией по к. При к = 1 по теореме А.30 получаем piQo — P0Q1 = («о<^1 + 1) х 1 - «о х «i = 1. Чтобы доказать шаг индукции от к к к 4-1, используем рекуррентное соотношение из теоремы А.30: Рк+1Як — PkQk+1 А=° (®k+iPk A-Pk-l)qk — Pkfa-k+iQk + Qk-l) = = Pk-14k -Pkqk-1 (-IX-l)*-1 = (-1)". Следствие A.32 Пусть Ck = Pk/Qk — к-я подходящая дробь некоторой непре- рывной дроби. Тогда НОдОд^дд.) = 1. Доказательство. Это — непосредственное следствие равенства Рк-iqk ~~ PkQk-i = (—l)fc-1- Действительно, каждое число, делящее Pk и qk, должно делить —1.
366 Приложение А. Элементарная теория чисел Теорема А.33 Пусть = pk/qk — &-я подходящая дробь некоторой конечной или бесконечной непрерывной дроби [«о,®!, • • •]• Тогда Ск - ск^ = (-1)*-1, Qk-lQk к > 1, (А.20) ск - Ск—2 = gfc(~i)fc Qk-2Qk к > 2, (Л.21) Со < С 2 < с4 - <... < с5 < С С3 < Ci. (Л.22) Доказательство. Для бесконечной непрерывной дроби строго возрастающая ог- раниченная последовательность подходящих дробей с четными номерами имеет тот же предел, что и строго убывающая огра- ниченная последовательность подходящих дробей с нечетными номерами. По лемме А.31 и теореме А.30 Рк _ Рк-1 = PkQk—i -Pk-iQk = (-l)*"1 Qk Qk—1 Qk—lQk QkQk-l Pk Pk—2 PkQk—2 ~ Pk-2Qk Lsfe — C/fc—2 = - — --- = --------------- = Qk Qk-2 Qk-2Qk _ {^kPk-l +Pfc-2)qfc-2 — Pfc-2(ftfcgfc-l +Qk-2) _ Qk-2Qk _ akPk—lQk—2 — akPk—2Qk—l _ Qfc( — l)fc Qk—2Qk QkQk-2 Это доказывает соотношения A.20 и A.21. To, что подходящие дроби с четными номерами образуют строго возрастающую последовательность, следует из равенства (А.21), влекущего, что C%k ~~ &2к-2 > 0 (где все сц положительны). По той же самой причине подходящие дроби с нечетны- ми номерами строго убывают. Для доказательства того, что каждая подходящая дробь с четным номером, скажем, С*2г, меньше, чем любая подходящая дробь с нечетным номером, скажем, C*2j+i, заметим сначала,что С%к+1 ~ &2к > 0 в силу (А.20). Комбинируем это с вышесказанным и получаем С*2г < C*2i+2J < C*2i+2j + l < C*2j + 1- Наконец, по формулам (А.19) и (А.20) для к > 2 |С* - Сц| = —— < < ,, 1, Qk-iQk Fk-iFk (к - I)2
A.5. Непрерывные дроби 367 и потому разность между двумя последовательными подходящими дро- бями стремится к нулю, когда к стремится к бесконечности. Это показы- вает, что предел подходящих дробей с четными номерами должен совпа- дать с пределом подходящих дробей с нечетными номерами. Пример А.6 Нимсе мы выписываем первые 10 подходящих дробей числа тс в их естественном порядке. << NumberTheory4ContinuedFractions‘ Do [Print[k - 1, " ", N[Normal[ContinuedFraction[Pi, k]], 16]], {k, 1, 9, 2}] Print [тг, " ", N[tt, 16]] Do [Print[k - 1, " ", N[Normal[ContinuedFraction[Pi, k]], 16]], {k, 10, 2, -2}] 0 3. 2 3.141509433962264 4 3.141592653011902 6 3.141592653467437 8 3.141592653581078 7Г 3.141592653589793 9 3.141592653591404 7 3.141592653618936 5 3.141592653921421 3 3.141592920353983 1 3.142857142857143 Следующие две теоремы формулируются без доказательств. Их мож- но найти в любом вводном курсе непрерывных дробей, например, в [Rose84], но рассуждения там слишком техничны для наших целей5. Теорема А.34 Пусть Ck = Pk/Qk — /г-ая подходящая дробь конечной или бес- конечной непрерывной дроби а = [ao,ai,...], и допустим, что \а - r/s\ < |q ~Pk/qk\- Тогда s > qk. Например, поскольку 355/113 — подходящая дробь для тг, мы теперь знаем, что ближе к тг, чем 355/113, лежат только дроби со заменателем, большим 113. 5Доказательства на русском языке можно найти в ряде книг. См., например, *[Хинч78] или *[Ленг70]. — Прим. ред.
368 Приложение А. Элементарная теория чисел Теорема А.35 Пусть a Е R и r/s (с нод(г, s) = 1) — такая рациональная дробь, что |си — г / s\ < 1/2з2. Тогда r/s — подходящая дробь к разложению а в непрерывную дробь. Эта теорема говорит, что рациональное число r/s, которое лежит на расстоянии, не превосходящем A./'ls1, от числа си, оказывается подходя- щей дробью для разложения этого числа. А.6 Формула обращения Мёбиуса, принцип включения и исключения А.6.1 Формула обращения Мёбиуса В дискретной математике некоторая функция / часто определяется в терминах другой функции, скажем, д. Задача состоит в том, чтобы выразить функцию д в терминах /. Часто эту задачу можно решить с помощью теории частично упорядоченных множеств и (обобщенной) формулы обращения Мёбиуса (см. гл. 4 в [Aign79]). В данном разделе мы обсудим два важных частных случая. Оба они рассматриваются в упомянутой выше теории, но оказывается, что они могут быть доказаны непосредственно. Мы часто будем нуждаться в явном примарном разложении целого числа п. В дальнейшем мы не придерживаемся строгого упорядочения простых чисел, задаваемого равенствами pi = 2,рг = 3 и т.д. Однако различным индексам все еще отвечают различные простые числа. Определение А. 14 Пусть п = Пь=1Р^5ег > 0,1 < i < к, где все pi — различные простые числа. Тогда функция Мёбиуса д(п) определяется ра- венством 1, О, (-1)*, если п = 1, если > 2 для некоторого г, 1 < г < к, если все равны 1. Другими словами, д(п) — мультипликативная функция, удовлетво- ряющая равенствам д(1) = 1,д(р) = —1 и р(рг) = 0, i > 2, для любого простого р. “Mathematica” содержит стандартную функцию MoehiusMu, вычисляющую д. п = 30; MoebiusMuEn]| II -1 Функция Мёбиуса, определенная таким путем, обладает следующим свойством.
A. 6. Формула обращения Мёбиуса 369 Лемма А.36 Пусть п — положительное целое число. Тогда d\n 1, если п = 1, О, если n > 1. Доказательство. При n = 1 утверждение тривиально. Для п > 1 запишем, как выше, п — П£=1 PfS е* > 0,1 < г < &. Тогда к > 0 и поэтому - i+EL •••«-) = EL С)(-1)' = (1-1А Читатель может проверить эту лемму посредством следующих вы- числений: DivisorSumEf, m] := Plus @© (f /© Divisors[m]) m = 100; DivisorSum[MoebiusMu[m]] II 0 Лемма A.37 Пусть тип — такие натуральные числа, что т делит п. Тогда u(n/d) = < Ь m|d|n I. 0 если m = n, в противном случае. Доказательство. Пусть n = п'т. Для каждого d, такого, что m|rf|n, запишем d = d'm. Тогда m|d|n Р(п/^) = 52d'|n' /d!)-> что по лемме А.36 равно 1, если п' = 1 (т.е. т — п), и равно 0 при п' > 1. Теорема А.38 (формула обращения Мёбиуса) Пусть f — функция6, заданная на множестве Н, а функция д определена на Н равенством 9(п) = f(d), п е N. <с—rfdln Тогда для всех п Е Н /И = 52л v(d)9(n/d). Принимающая значения в мультипликативной абелевой группе. — Прим. ред.
370 Приложение А. Элементарная теория чисел Доказательство. В силу определения д(п) и леммы А.37 22 p(n/d)s(d) = f(e) = = eldln^™^ = *——ze|n • “'a, e|a|n Следствие A.39 {мультипликативная формула обращения Мёбиуса) Пусть F — функция, заданная на множестве N а функция G определена на N равенством <?(«) = IL F(d)- neN- Тогда для всех neN F(n) = IL M(<*)G(n/d) = IL -ж’-а“а|п Доказательство. Подставляем g{ri) = logG(n) и /(n) = log F{ri) в формулу обращения Мёбиуса. Пример А.7 Теорема А. 12 показывает, что функция Эйлера удовлетворяет ра- венству Hd^=n- Из формулы обращения Мёбиуса (теорема А.38,) следует, что для п = = Пь=1 е; > 0,1 < г < &, = Ed|nM(d)> = _ п _ Y* п । Y* п । ( -i\k п ____ 1 Z_jl<i<k pi ' Z-sl<i<j<k pipj ’ * ' f V ) piP2---Pk — n(l — Z“-)(l — . (1 — \ Pl-'V P2 7 ' Pk ' Это иным способом доказывает теорему А. 17. Теорема В.17 в разд. В.З показывает важное применение мультипли- кативной формулы обращения Мёбиуса. А.6.2 Принцип включения и исключения Мы завершим этот раздел еще одним полезным принципом. Чтобы несколько стимулировать интуицию, рассмотрим целые числа между 0 и p-q—1, где р и q — различные простые числа. Мы хотим прямым способом вычислить <p{p-q), т.е. подсчитать количество целых чисел г, 0 < г < p-q,
A. 7. Задачи 371 которые взаимно просты с р • q. Оно равно р • q минус количество целых чисел г, 0 < i < р • д, которые имеют нетривиальные общие делители с р • q, т.е. которые делятся на р или q. Имеется q кратных числа р в области 0,1,... ,р • q — 1 и, аналогично, р кратных числа q. Однако есть одно число, которое кратно как р, так и д, это — нуль. Мы получаем, что р(р • д) = р • q - р - q + 1 = (р - l)(g -l)=p-g(l--J ( 1 — — ) , \ PJ \ <7/ как и должно быть согласно теореме А. 17. Теорема А.40 {принцип включения и исключения) Пусть S — конечное множество из N элементов. Предположим, что элементы из S могут удовлетворять определенным свой- ствам P(i), 1 < i < к. Пусть !V(zi, гг, • • •, is) — число элементов из S, которые удовле- творяют свойствам P(ii), Р(г2),..., Р(г5), где 1 < ii < «2 < • • < is < к, 1 < s < к (и возможно также некоторым другим свой- ствам). Пусть 1V(0) — число элементов из S, которые не удовлетворяют ни одному из свойств Р(г), 1 < i < к. Тогда ЛГ(0) = N - ЛГ(») + Si<i<><* N(i, Доказательство. Элемент s из S, который удовлетворяет в точности г из к свойств, подсчитывается выражениями 1, О, если г = 0, если г 0 как в правой, так и в левой частях равенства. Мы оставляем читателю в качестве упражнения вывод теоремы А. 17 непосредственно из определения функции Эйлера и указанного выше принципа. (Совет: Пусть Рг, 1 < i < к, — все простые числа, которые делят п; возьмем S — {0,1,...,п — 1} и скажем, что элемент s е S обладает свойством Р(г), 1 < i < к, если s делится на р^.) А. 7 Задачи Задача А.Iм. Пусть — примарное разложение целого числа п. Сколько различных делителей имеет п? Проверьте свой ответ для п = 1000, используя функцию DivisorSigma[k,n], которая вычисляет (возьмите к = 0).
372 Приложение А. Элементарная теория чисел Задача А.2м. Вычислите такие и и v, что нод(455,559) = 455u + 559v. Задача А.З. Докажите, что нод(am — 1, an —-1) = аноД(то>п) 1 для любого натурального числа а. (Совет: сведите пару {тп, п},тп > п, к {тп — п, п}, а затем следуйте простой версии алгоритма Эвклида.) Задача А.4м. а) Проверьте, что 563 — простое число. Ь) Используйте алгоритм Эвклида, чтобы вычислить 11-1 mod 563. с) Решите сравнение lire = 85 (mod 563). Задача А.5. Найдите решения сравнения ЗЗх = 255 (mod 1689). Заметь- те, что 1689 — 4 х 563 и используйте результаты задачи А.4. Задача А.6. а) Определите <^(100). Проверьте результат посредством функции EulerPhi. b) Вычислите две наименьших значащих цифры числа 2OO42004 без использо- вания компьютера. Задача А.7м. Решите систему сравнений (совет: используйте теорему А.19): Зх = 2 (mod 11), 7х = 8 (mod 13), 4х = 14 (mod 15). Задача А.8м. Определите символ Якоби (7531/3465). Задача А.9. Используйте китайскую теорему об остатках, чтобы решить сравнение х2 = 56 (mod 143). (Совет: сначала сведите его к некоторой системе линейных сравнений.) Сколько имеется различных решений по модулю 143? Задача А. 10. Определите первые пять членов непрерывной дроби числа /, наибольшего корня уравнения /2 = f + 1. Определите также первые пять подходящих дробей. Что вы думаете о других членах в непрерывной дроби числа /? Докажите свою гипотезу (совет: используйте алг. А.29 и определение /). Задача А.11. Докажите теорему А.17 с помощью принципа включения и исключения (теорема А.40) и определения функции Эйлера р.
Приложение В Конечные поля Вводные замечания Большинство читателей знакомо с алгебраической структурой мно- жеств рациональных, действительных и комплексных чисел. Эти множе- ства обладают свойствами сложения и умножения, которые “желатель- ны”. Такие множества называются полями. В дискретной математике, в частности, в криптологии и теории ко- дирования существенную роль играют поля конечной мощности. В этой главе дается введение в теорию конечных полей1. Укажем общие очертания этого приложения. В разд. В.1 мы вводим основные определения и теоремы абстрактной алгебры и линейной алгебры. В частности, мы покажем, что множество целых чисел, взятых по модулю некоторого простого числа, образуют ко- нечное поле. В разд. В.2 будет дана общая конструкция конечных полей. В разд. В.З выводится формула для числа неприводимых многочленов над данным конечным полем. Это покажет, что конечные поля существу- ют размеров, равных любой степени простого числа. Анализ строения конечных полей будет дан в разд. В.4. В частности, будет показано, что конечное поле размера q существует тогда и только тогда, когда q — сте- пень простого числа. Более того, такое поле единственно, его аддитивная группа имеет структуру векторного пространства, а мультипликативная группа [ненулевых элементов] циклична. В.1 Алгебра Хотя мы предполагаем, что читатель уже знаком с понятиями, об- суждаемыми в этом и следующем разделах, мы для удобства чтения предлагаем это резюме. В. 1.1 Абстрактная алгебра □ Операции на множестве Пусть S — непустое множество. Операция *, определенная на S, — это отображение из S х S в S. Образ пары (s, t) относительно * обозначается хНа русском языке более детальное изложение можно найти в *[ЛидП96| и особен- но в *[ЛидН88]. — Прим. ред.
374 Приложение В. Конечные поля через s * t. Примерами операций служат сложение в R и умножение “х” в С. Операция * называется коммутативной, если для любых s и t из S S.I. 8 * t = t * s для всех 8 и t из S. Элемент е из S, удовлетворяющий равенствам S.2. s*e = e*s = s для всех s из S называется единичным [нейтральным:] элементом в (S, *). Единичный элемент в (S, *) единственен. В самом деле, предполо- жим, что как е, так и е' удовлетворяют условию S.2. Тогда, применяя S.2 дважды, получаем е = е * е' = е\ Пример В.1 Возьмем в качестве S множество целых чисел Z и сложение + в качестве операции. Эта операция коммутативна, а 0 — единичный эле- мент в (Z, +). Пример В.2 Пусть S — множество действительных 2х.2-матриц с матричным умножением в качестве операции. Эта операция некоммутативна; на- пример, 1 1 \ f 0 1 \ / 0 1 \ / 1 1 \ О 1 ) * 1 1 J 1^1 1 ) * О 1 ) II False С другой стороны, это множество S обладает единичным элемен- ( 1 0 \ . том, именно lg 1 / Вычислим для примера MatrixForm a b \ fl с d / * I О О 1 а Ъ \ с d I □ Группа Определение В.1 Пусть G — непустое множество, на котором определена опера- ция *. Пара (G, *) называется группой, если GI. (д*/г)*/с = g*(h*k) для всех р,/г, е G (ассоциативность);
В.1. Алгебра 375 G2. G содержит единичный элемент, скажем, е; G3. для каждого д Е G существует элемент h Е G, такой, что g*h = h*g = e; этот элемент называется обратным к д и обычно обозначается через д-1. Свойство G1 говорит, что нет нужды писать скобки в цепочках напо- добие д * h* к. Элемент h в свойстве G3 определен однозначно. В самом деле, если как /ц так и hf удовлетворяют G3, то h = h* е = h* (д * h) = = (h * д) * hf = е * h! = h!. Тем же самым способом можно показать, что для каждых a, b Е G уравнения а - х = Ь и х - а = Ь имеют единственные решения в G, а именно х = а-1 • Ъ и, соответственно, х = Ъ • а”1. Читатель легко проверит, что (Z, +) из примера В.1 является комму- тативной группой. Другие хорошо известные примеры коммутативных групп — это (Q, +), (Q \ {0}, •) и (R, +). Пример В.2 не дает группу, потому что не все матрицы имеют обрат- ные (например, не имеет обратной матрица, состоящая из одних нулей). Пусть (G, *) — группа и Н — подмножество из G с тем свойством, что (Н, *) — тоже группа; тогда Н называется подгруппой в G. Можно показать (см. задачу В.З), что Н — подгруппа в G тогда и только тогда, когда hi h^1 Е G для любых hi,h,2 Е G. Пусть т Е Z \ {0} и mZ = {тк\к G Z}. Тогда (mZ, +) — коммутативная подгруппа в (Z, +), как легко можно проверить. Пример В.З Пусть т Е Z \ {0} и Z^ — приведенная система вычетов: Z^ = {г|0 < i < тп, нод(г, m) = 1}. Мощность множества Z^ равна р(гп) по определению А.6. Из леммы Л. 13 следует, что произведение двух элементов из всегда можно представить снова элементом из Z^. Очевидно, 1 — эле- мент в Z^, который является единичным элементом относительно умножения. Далее, согласно теореме Л. 18, каждый элемент в Z^ име- ет мультипликативный обратный (заметим, что для а Е Z*m мы име- ем нод(а, m) = 1 и поэтому сравнение ах = 1 (mod m) имеет един- ственное решение). Мы заключаем, что мультипликативная группа (Z*m, х) является коммутативной группой мощности р{т).
376 Приложение В. Конечные поля Коммутативные группы называют также абелевыми группами. Обыч- но абелевы группы представляются аддитивно: операция обозначается знаком “плюс”, единичный элемент называется нулевым элементом (и обозначается нулем). В этих обозначениях абелева группа именуется ад- дитивной группой. В этом введении наиболее часто используемые абелевы группы — это (Zm, +), но в гл. 10 представлен также другой пример (см. теорему 10.2). Рассмотрим также более интересную ситуацию, когда на множестве определены две операции. Действие первой мы обозначим через д + h, а второй — д • h. □ Кольцо Определение В.2 Тройка (R, +, •) называется кольцом, если RI. (R, +) — коммутативная группа; ее единичный элемент обозначается 0; R2. Операция • ассоциативна; R3. Выполняется дистрибутивность, т.е. для всех г, s, t Е R Г • (s + t) = Т • s + r - tn (г + s) -t = Г -t + 8 • t. Начиная с этого момента, мы часто будем писать gh вместо д • h. Аддитивное обратное к элементу д в группе (R, +) будет1 обозначаться просто через —д, также мы пишем 2д вместо д + д, Зд вместо д 4- д + д и т.д. Заметим, что 0 действительно ведет себя подобно нулевому элементу, поскольку для любого г Е R мы имеем Or = (г — г)г = г2 - г2 = 0 и аналогичное равенство гО = 0. Допустим, что на R \ {0} операция • коммутативна. Тогда кольцо (R, +, •) называется коммутативным. Примерами коммутативных ко- лец служат (R, +, •), (Q, +, •), (Z, +, •), а также (mZ, +, -), когда т отлично от нуля. Пусть (R, +, •) — кольцо, и S — подмножество из R с тем свойством, что (S, +, •) само является кольцом; тогда S называется подкольцом в R. Заметим, что (6Z, +, •) — подкольцо в (2Z, +, •), которое, в свою очередь, является подкольцом в (Z, +, •)• □ Идеал Определение В.З Подкольцо (S, +, ) кольца (R, +, •) называется идеалом, если I. Для всех г Е R и s Е S (rs Е S и sr Е S). Пусть т Е Z\{0}. Легко проверить, что любое целочисленное кратное числа, кратного тп, снова кратно т. Отсюда следует, что (mZ, +, •) — идеал в (Z, +, ).
В.1. Алгебра 377 Допустим теперь, что кольцо (77, •) обладает единичным элементом, скажем, е, тогда некоторые элементы из R могут обладать обратными из R. Это такие a € 77, для которых существуют элементы Ь G 77, обладаю- щие свойствами ab = Ьа = е. Такой обратный к а, который единственен, называется мультипликативным обратным и обозначается а-1. Оче- видно, элемент 0 не имеет мультипликативного обратного. Действитель- но, допустим, что гО = е для некоторого г Е R. Тогда для каждого а Е R получим, что а = ае = а(гО) = (аг)0 = 0, т.е. 77 = {0}. Из вышесказанного следует, что (77, •), когда 77 {0}, не может быть группой. Однако (77 \ {0}, •) вполне может обладать структурой группы. □ Поле Определение В.4 Тройка (Т7*, +, •) называется полем, если Fl. (7*1,+) — коммутативная группа; ее единичный элемент обозначается через 0; F2. (7?\ {0}, •) — группа; мультипликативный единичный эле- мент обозначается через е; F3. Выполняется дистрибутивность. В отличие от некоторых колец поле не может содержать ненулевых делителей нуля, т.е. ненулевых элементов f и д, чье произведение fg равно нулю. В самом деле, допустим, что fg = 0 и f 0. Тогда д = = ед = (f^fjg = f~1(fg) = /-10 = 0; поэтому любой элемент из F равен нулю. Если подкольцо (ТС, 4-, •) поля (Р, +, •) имеет структуру поля, то мы будем называть его подполем поля (F, +, •)• Примерами служат поля рациональных чисел (Q, +,•), действитель- ных чисел (R, +, •) и комплексных чисел (С, +,•), каждое из которых — подполе следующего. Мы говорим о конечных группе (G, *), кольце (77,+,-) или иоле (F, +, •) порядка п, если G, соответственно, 77, F — конечное множество мощности п. Обычно мощность конечного поля обозначается буквой q. В этой главе мы изучим структуру конечных полей. Оказывается, конечное поле порядка q существует только тогда, когда q — степень простого числа. Более того, для такого фиксированного q это поле по существу единственно, что оправдывает общепринятые обозначения F9 и GF(g) (где GF означает Galois Field — поле Галуа). Примеры конечных полей будут даны в разд. В.2. Аналогично коммутативным кольцам мы определяем коммутатив- ное поле (F, +, •) как поле, в котором группа (F \ {0}, •) коммутативна. Хотя следующая теорема очень важна, она здесь не доказывается (см. [Cohn77]2). 2На русском языке доказательство можно найти во многих книгах; например, см.
378 Приложение В. Конечные поля I Теорема В.1 (Веддербарн) Любое конечное поле коммутативно. □ Отношения эквивалентности Определение В.5 Пусть U — множество. Для произвольного подмножества Р из U х U определим на U отношение ~ следующим условием: для любых it, v Е U и ~ v <=> (iz, v) G Р. Отношение эквивалентности есть отношение с дополнитель- ными свойствами: Е1. Для всех и Е U(u ~ и) (рефлексивность); Е2. Для всех tt, v G U(u ~ v => v ~ и) (симметричность); ЕЗ. Для всех и, v,w G C7[(u ~ ~ w) => и w] (транзи- тивность). Пусть U — множество прямых линий в эвклидовой плоскости. Тогда свойство “быть параллельными или равными” определяет отношение эк- вивалентности . В разд. А.З мы видели другой пример. Там U = Z и для фиксиро- ванного тп, т 0, отношение = определяется условием “а = b (mod m) тогда и только тогда, когда т делит а — Ь”. Пусть ~ — отношение эквивалентности, определенное на множестве U. Непустое подмножество W из U называется классом эквивалентно- сти, если El) Vv,w EW(v^ w), Е2) Vw e WVu EU\ W(u w). Из указанных выше свойств следует, что класс эквивалентности со- стоит из всех элементов из U, находящихся в отношении ~ с некоторым фиксированным элементом из U. Очевидно, различные классы эквива- лентности в U образуют разбиение U. Класс эквивалентности, содержа- щий данный элемент w, будет обозначаться через < w >. Пусть (R, +, •) — коммутативное кольцо с (мультипликативным) еди- ничным элементом е и пусть (S, +, ) — идеал в (jR, +, •). Определим от- ношение = на R условием а = b (mod S) <==> а — b Е S. (В.1) *[Холл62], где доказывается и более сильное утверждение об альтернативных кольцах (т.е. кольцах с ослабленным условием ассоциативности). — Прим. ред.
В.1. Алгебра 379 Читатель с легкостью проверит, что условие (В.1) определяет отноше- ние эквивалентности. Пусть R/S (читается “R по модулю S”) обозначает множество классов эквивалентности. Определим на R/S две операции следующими формулами: <С а <С Ь <С о -f- Ь ^>, о,/) Е jR, < a > • < b >:=< ab >, a, b G R. Легко проверить, что эти определения не зависят от частного выбора а и Ь в классах эквивалентности < a > и < b > соответственно. В ка- честве упражнения мы оставляем читателю доказательство следующей теоремы. Теорема В.2 Пусть (/?,+,•) — коммутативное кольцо, a (S,+, •) — идеал в (Д, +, •)• При данном выше определении (R/S, +, •) — коммута- тивное кольцо с единичным элементом. Кольцо (R/S, + , ) называется кольцом классов вычетов кольца R по модулю S. В следующем разделе мы увидим приложения теоремы В.2. □ Циклические группы До завершения подраздела остается еще одна тема для обсуждения. Пусть (G, •) — конечная группа, и пусть a — элемент из G \ {е}. Пусть а2,а3,... обозначают aa, aaa и т.д. Так как G конечна, существует един- 2 п—-1 ственное натуральное п? такое, что все элементы е, a, a ,..., а различ- ны, тогда как ап = а3 для некоторого J, 0 < j < п. Теперь мы покажем, что j = 0, т.е. что ап = е. Допустим, что j > 0. Тогда из ап = а3 будет вытекать, что ап-1 = а3""1. Это, однако, противоречит нашему определе- нию числа п. Мы заключаем, что все элементы аг,0 < i < п, различны и что ап = е. Теперь очевидно, что элементы е, а, а2,..., ап“1 образуют подгруппу Н в G. Такая подгруппа Н назывется циклической подгруппой порядка п. Мы говорим, что элемент а порождает Н и что он имеет (мультипли- кативный) порядок п. Так как все элементы циклической группы — степени одного и того же элемента, циклическая группа коммутативна. Лемма В.З Пусть (G, •) — группа и а — элемент из G порядка п. Тогда для всех т G Z Ш > ч I а = е <==> п\т. Доказательство. Запишем т = qn + r, 0 < г < п. Тогда ат = е, если и только если аг = е, т.е. если и только если г = 0, т.е. если и только если п|тп. ri
380 Приложение В. Конечные поля Отсюда следует, что элемент а из G имеет порядок d тогда и только тогда, когда ad = е и ad/p е для любого простого делителя р числа d. Чтобы найти мультипликативный порядок целого числа а в (при- чем нод(о, т) = 1), нужно — как вытекает из теоремы Эйлера (теорема А.14) и леммы В.З — проверить лишь делители числа у?(т). Следующий модуль делает это эффективным образом. Он использует функции GCD, Divisors, EulerPhi и PowerMod пакета “Mathematica”. MultiplicativeOrder[а_, m_] := If[GCD[a, m] == 1, Divisors[EulerPhi[m] ] //. {x, y} -> If[PowerMod[a, x, m] == 1, x, {y}]] a = 2; m = 123456789; n = MultiplicativeOrder[a, m] II 6855006 Лемма В.4 Пусть (G, •) — группа и а элемент из G порядка п. Для к > 0 к элемент а имеет порядок п нод(&, п) ’ Доказательство. Пусть тп — порядок элемента ак. Так как число /с/нод(А:, п) — целое, это влечет, что ^п/НОД^.п) = ^п^/НОДСй.п) = efc/HOfl(fc,n) = е Из леммы В.З мы выводим, что m делит п/нод(А:,п). Для доказатель- ства обратного заметим, что (ofe)m = е. Лемма В.З влечет, что п делит кгп. Следовательно, п/нод(/с, п) делит т. Продолжая с теми же параметрами, что и выше, мы получаем к = 3; MultiplicativeOrder[а^, т] n / GCD[k, п] II 2285002 II 2285002 Аналогично (В.1), для каждой подгруппы (Н, •) конечной группы (G, •) можно определить отношение эквивалентности ~ условием а ~ Ь тогда и только тогда, когда об-1 G Н.
В.1. Алгебра 381 Классы эквивалентности имеют вид {ha\h Е Я}, что можно легко проверить. Все они имеют ту же мощность, что и Я. От- сюда следует, что число классов эквивалентности равно |С?|/|Я|. Вслед- ствие этого |Я| делит |G|. Это доказывает следующую теорему. Теорема В.5 (Лагранж) Пусть (G, •) — конечная группа порядка п. Тогда порядок любой ее подгруппы (Я, •) делит п. Кроме того, любой элемент а Е G имеет порядок, делящий п. В. 1.2 Линейная алгебра □ Векторные пространства и подпространства Пусть F обозначает произвольное поле. Определение В.6 Векторным пространством над F называется множество V объектов, которые можно складывать и умножать на элемен- ты из F так, что результаты снова попадают в V. Кроме того, должны выполняться следующие свойства: 1. (и + v) + w = и + (v + w) для всех и, v, w Е V; 2. В V существует нулевой элемент о, такой, что v + о = о + v = v для всех v Е V; 3. Для каждого v Е V существует такой элемент — v Е V, что v + (—v) = (—v) + v = о; 4. и + v = v + и для всех и, v Е V; 5. а(и + v) = аи + av для всех u, v Е V и а Е F; б. (а + /3)v = av + /3v для всех аД е F п v Е V; 7. (a/3)v = a(/3v) для всех а,/3 Е F и v Е V; 8. 1 • v = v для всех v Е V, где 1 обозначает единичный элемент поля F. Обычно элементы векторного пространства называют векторами, хо- тя они и не обязаны быть векторами в эвристическом смысле. Примерами векторных пространств над F служат i) множество Fn n-ок над F;
382 Приложение В. Конечные поля ii) множество {/(ж) Е Г[ж]| deg(/(a;)) < п} многочленов над F степени, меньшей п. Часто из контекста бывает ясно, над каким полем определено данное векторное пространство. В этом случае поле в дальнейшем не упомина- ется. Определение В.7 Подмножество W данного векторного пространства V называ- ется линейным подпространством в V, если W само является векторным пространством относительно операций, уже опреде- ленных в V. Чтобы определить, будет ли данное подмножество векторного про- странства подпространством, не обязательно проверять все восемь свой- ств векторного пространства. Например, свойство 1 выполняется для всех и, v, w Е W, потому что оно заведомо выполняется для все элемен- тов из V. Мы получаем теорему. Теорема В.6 Подмножество W векторного пространства V является линей- ным подпространством тогда и только тогда, когда i) о Е W; ii) и + v Е W для всех u, v Е W; iii) аи Е W для всех и Е W и а Е F. Любое векторное пространство V имеет два тривиальных подпро- странства — {о} и V. Пусть V — векторное пространство и гц, v2,... ,vn — элементы из V. Выражение вида qi^i + a2V2 + ... + anvn, где оц Е F, называется линейной комбинацией векторов гц, V2, • • ., vn. Множество всех линейных комбинаций векторов гц, v2,. •., vn образу- ет подпространство в V, о котором говорят, что оно порождено вектора- ми vi, V2,...,vn и обозначают через < Vi, V2,. -. ,vn >. □ Линейная независимость, базисы и размерность Наверное, наиболее важное понятие, связанное с векторными про- странствами, — это понятие линейной (независимости.
В.1. Алгебра 383 Определение В.8 Множество векторов v±, V2, -.. , из векторного пространства V называют линейно независимым, если уравнение ацщ 4- +«2^2 + •. • + otnvn = о имеет лишь тривиальное решение оц = = 0, «2 — 0,..., ап = 0. Множество векторов, не являющееся линейно независимым, называется линейно зависимым. Допустим, что множество векторов щ, V2,. . ., vn линейно зависимо. Тогда существует линейная комбинация a-pui + «2^2 + • • • + Oinvn — о, где хотя бы одно Qj 0. Это позволяет нам записать vi = ai 1 (04^1 + • • + O>i— iVi— 1 + OLi+iVi+i + . . . + anVn). Таким образом, мы получаем иное описание линейной зависимости. Теорема В.7 Множество щ, V2,..., vn векторов из векторного пространства V линейно зависимо тогда и только тогда, когда один из этих векторов можно выразить как линейную комбинацию других векторов этого множества. В частности, это влечет, что любое множество векторов, включающее нулевой вектор о, линейно зависимо. Теорема В.8 Предположим, что векторы щ, V2,..., vn линейно независимы. Если заменить один из этих векторов его суммой с линейной комбинацией других векторов, то новое множество векторов вновь будет линейно независимо. Пусть W — подпространство векторного пространства V и пусть {wi, w2, • • •, Wn} С W. Определение В.9 Множество {wi, W2, • • •, wn} называется базисом для W, если i) это множество векторов линейно независимо; ii) < wi,..., wn >= W, т.е. любой w Е W является линейной комбинацией векторов wi, W2,..., wn. В частности, если W = V, мы получаем базис для самого векторно- го пространства V. Например, в случае V = Fn следующее множество векторов образует базис для V: С1 = (1,0,..., 0), е2 = (0,1,0,..., 0),...,еп = (0,... ,0,1). Этот базис обычно называют стандартным базисом. В определении рассматриваются только конечные базисы. Но не каж- дое векторное пространство порождается конечным числом векторов.
384 Приложение В. Конечные поля Возьмем, например, F = R, а в качестве V — векторное пространство всех вещественно-значных функций на R. Можно доказать, что базис существует в любом векторном простран- стве. Здесь мы коснемся только векторных пространств, порожденных конечным числом векторов. Следующая теорема весьма важна. Теорема В.9 Допустим, что один базис подпространства W векторного про- странства V содержит п векторов, а другой базис — т векторов. Тогда п = т. Базис векторного пространства определен неоднозначно; однако чис- ло векторов в базисе определено однозначно. Определение В. 10 Если векторное пространство имеет базис из п векторов, мы называем п размерностью этого векторного пространства. Раз- мерность нулевого векторного пространства {о} по определе- нию равна 0. □ Скалярное произведение, ортогональность Пусть V — векторное пространство над полем F. Определение В. 11 Скалярным произведением на V называют билинейное отобра- жение V х V F. Для векторов и, v Е V образ обозначается через (u, v). Билинейность означает, что для всех u,v,w Е V и а Е должны выполняться следующие свойства: (u + v,w) = (щ w) + (v, w), (u, v + w) = (u, v) + (u,w), (cxu, v) = a(u, v) = (u,av). Это — очень общее определение скалярного произведения. В случаях F = R или F = С обычно требуют дополнительных свойств. Например, в вещественных векторных пространствах требуют положительной опре- деленности для (и, и), т.е. чтобы для всех векторов и о было (и, и) > 0. В этом случае длина или норма вектора и определяется как у/(и, и) и ча- сто обозначается через ||и||. Если V — F71, то стандартное скалярное произведение определяется равенством (и, v) = U1V1 + U2V2 + ... + unvn (В.2)
В. 1. Алгебра 385 Определение В.12 i) Два вектора и и v из V называются ортогональными, если (и, г>) = 0. ii) Два подпространства U и W из V называются ортого- нальными, если (и, w) = 0 для всех и Е U и w Е W. Если поле F конечно, то могут существовать такие ненулевые векторы и, что (и, и) = 0. Например, в векторном пространстве Fn, где F = {0,1}, со стандартным скалярным произведением любой вектор с четным чис- лом ненулевых координат ортогонален сам себе. Пусть U — подпространство в V. Во многих приложениях полезно рассмотреть множество всех векторов, ортогональных к U. Определение В.13 Ортогональное дополнение подпространства U из V, обознача- емое посредством Е/'±, — это множество всех векторов, которые ортогональны всем векторам из U. Формула очевидна: Е7'± = {у е V|(u, и) = 0 для всех и Е U}. Для подпространств U и W конечномерного векторного пространства V выполняются следующие свойства: Теорема В. 10 i) Ортогональное дополнение к ортогональному дополне- нию подпространства совпадает с исходным подпростран- ством, т.е. (tT’-L)-L = U. ii) dim(E7'-L) = dim(V) — dim(ET'). iii) Если U C W, то Wv С U^. iv) (ПП1У)± = П± + 1У±. В случае, когда V = Fn со стандартным скалярным произведением, мы имеем простое представление для U1-. Пусть {ui, и%,..., ит} — базис в U и пусть А — т х n-матрица со строками ui,..., ит. Тогда мы имеем v G U1' <==> AvT = оТ, где верхний индекс Т обозначает транспонирование вектора, т.е. полу- чается вектор-столбец с теми же координатами, что и у и.
386 Приложение В. Конечные поля Определение В. 14 Базис {v±,V2, •. • ,vm} векторного пространства V называет- ся ортогональным, если все скалярные произведения (vi,vf), i И1 3-> равны нулю. Он называется ортонормальным, если дополнительно | 11 = 1 для всех г, 1 < i < т. В. 2 Конструкции Множество целых чисел по модулю т, т Е N \ {0}, которое было вве- дено в разд. А.З, можно описать как кольцо классов вычетов (Z/mZ, +, •) (см. теорему В.2), поскольку (mZ,+, •) — идеал коммутативного кольца (Z, +, •)- Кольцо классов вычетов коммутативно и имеет < 1 > в каче- стве единичного элемента. Кольцо (Z/mZ, +, •) часто обозначается через +) )• Теорема В. 11 Пусть т — натуральное число. Кольцо (Zm, +, •) является ко- нечным полем (с т элементами) тогда и только тогда, когда т просто. Доказательство. =>. Допустим, что т — составное, скажем, т = = ab, а > 1 и b > 1. Тогда < 0 >=< ab >=< а >< b >, где < а >^< 0 > и < Ъ >т^< 0 >. Поэтому кольцо (Zm, +, •) имеет делители нуля и, значит, не может быть полем. <=. Допустим теперь, что т — простое (см. также пример В.З.). Мы должны доказать, что для любого класса эквивалентности < а >, < а >^< 0 >, существует такой класс эквивалентности < Ъ >, что < а >< Ъ >=< 1 >. Для этого достаточно показать, что для любого а при условии т /а существует такой элемент Ь, что ab = 1 (mod т). Но это следует из леммы А. 13 и теоремы А. 18. Удобства ради мы часто убираем скобки у представителей классов эквивалентности, так что а в действительности обозначает < а >. Позже мы увидим, что для простого р кольцо (Zp, +, •) — в сущности единственное конечное поле из р элементов. Мы обозначаем его через (Fp, +, •). В теории информации и связи часто работают с полем F2, со- стоящим из элементов 0 и 1. Теперь мы продолжим строить конечные поля Fg для q = рт, где р — простое. Пусть (F, +, •) — коммутативное поле (не обязательно конечное) и Р[ж] — множество многочленов над F, т.е. множество выражений f(x) = /о + fix + f2x2 + ... + fnxn, где fi Е F, 0 < i < п, и n E N. Наибольшее значение i, для которого fi 0, называется степенью многочлена f(x).
В. 2. Конструкции 387 Сложение и умножение многочленов определяется естественный об- разом: f>xi+Е< = Е/л+9.W, (в.з) (Е4 л®4) (Е4 *xi) = Efc (Ej+>=* л®) х“- (в-4) Пример В.4 Пусть F = F2 и рассмотрим f(x) = 1 + ж2 + ж3 и д(х) = 1 4- х + ж3. Тогда f(x) + д(х) = х + ж2 и f(x)g(x) = 1 + х + ж2 + ж3 + ж4 + хъ + ж6. В пакете “Mathematica” эти вычисления может выполнить функ- ция PolynomialMod следующим образом: р = 2; f = 1 + х2 + х3; g = 1 + х + х3; PolynomialMod [f + g, р] PolynomialMod[f * g, p] II X + X2 II 1 + X + X2 + X3 + X4 + X5 + X6 Следующая теорема проверяется непосредственно. Теорема В. 12 Пусть (F, +, ) — коммутативное поле. Тогда (^[ж], +, •) — ком- мутативное кольцо с единичным элементом. Понятия, определенные в приложении А для множества целых чисел, можно перенести на кольцо (Р[ж], +, •): делимость, приводимость (если многочлен может быть записан в виде произведения двух многочленов меньшей степени), неприводимость (что является аналогом простоты), НОД, теорема об однозначной факторизации (аналог основной теоремы теории чисел), алгоритм Эвклида, отношения сравнения и т.д. Детали мы оставляем читателю. Здесь могут быть полезны следующие функции пакета “Mathemati- ca”: PolynomialMod (которая также приводит один многочлен по модулю другого), Factor, PolynomialGCD, PolynomialLCM. Их использование де- монстрируетесь следующих примерах. р = 2; f = l+ x + x2 + x7 * * *; g = 1 + х + х3; PolynomialMod [f, g, Modulus -> 2] II x + x2 Factor [x11 - 1, Modulus -> 3] II (2 + x) (2 + 2x + x2 + 2x3 + x5) (2 + x2 + 2x3 + x4 + x5)
388 Приложение В. Конечные поля PolynomialGCD [1 + х3, 1 + х2, Modulus -> 2] II 1 + х PolynomialLCM[l + х3, 1+х2, Modulus -> 2] II (1 + X2) (1 + X + х2) Используя пакет Algebra‘PolynomialExtendedGCD‘, можно применить функцию PolynomialExtendedGCD пакета “Mathematica”: < < Algebra*PolynomialExtendedGCD* PolynomialExtendedGCDEl + x3, 1 + x2, Modulus -> 2] || {1 + x, {1, ModEx, 2]}}- Некоторые важные выводы из теоремы В. 12 формулируются в сле- дующей теореме и ее следствии. Теорема В. 13 Пусть а(х) и Ь(х) — два многочлена из ^[ж]. Тогда в Т"[ж] суще- ствуют такие многочлены и(ж) и v(x), что и(х)а(х) + v(x)b(x) = нод(а(ж), Ь(ж)). Следствие В. 14 Пусть а(ж) и /(ж) — два многочлена из Р^ж], такие, что нод(а(ж),/(ж)) = 1. Тогда сравнение а(ж)и(ж) = 1 (mod /(ж)) имеет единственное решение по модулю /(ж). Решение указанного выше сравнения можно найти вновь с помощью функции PolynomialExtendedGCD. В самом деле, из PolynomialExtendedGCDЕ1 + х2, 1 + х + х4, Modulus -> 2] || <1, {1 + х + х3, хН можно заключить, что решением сравнения (1 + ж2)и(ж) = 1 (mod 1 + 4-ж + ж4) служит 1 + ж + ж3, что легко проверяется: PolynomialModЕ(1 + х2) (1 + х + х3), 1 + х + х4, Modulus -> 2] II 1
В. 2. Конструкции 389 Еще одно важное свойство кольца F[x] дает следующая теорема. Теорема В. 15 Любой многочлен степени п > 0 из F\x\ имеет не более п корней (или нулей) в F. Доказательство. При п = 1 утверждение тривиально. Далее при- меняем индукцию по п. Пусть u Е F — корень многочлена f(x) степени п над F (если та- кого и не существует, то ничего доказывать не надо). Запишем /(ж) = = (х — u)q(x) + г(ж), где deg(r(a;)) < deg(a; — u) = 1. Отсюда следует, что г(х) — константа, скажем, г. Подстановка х = и в равенство выше показывает, что г = 0. Поэтому f(x) = (ж — u)q(x). Теперь q(x) имеет степень n— 1 и по индуктивной гипотезе q(x) имеет не более п — 1 корней в F. Поскольку поле не имеет делителей нуля, каждый корень многочлена /(ж) либо равен и, либо является корнем многочлена q(x). Отсюда следует, что /(ж) имеет не более п корней в F. Пусть з(ж) — ненулевой многочлен из Е'[ж]. Легко проверить, что мно- жество {а(ж)з(ж)|а(ж) Е ^[ж]} образует идеал в кольце (.Е[ж],+, •)• Этот идеал мы обозначаем через (з(ж)) и говорим, что он порождается многочленом з(ж). Обратно, пусть (S,+,•) — произвольный идеал в (^[ж],+, •), причем S -Е[ж]. Далее, пусть з(ж) —- многочлен наименьшей степени из S. Возьмем любой другой многочлен /(ж) из S и запишем У (ж) = д(ж)б(ж) + Н-г(ж), deg(r^)) < deg(s^)). Из свойств I (см. определение В.З) и R.1 (см. определение В.1) вытекает, что г(ж) — элемент из S. Из нашего предположения об з(ж) следует, что г(ж) = 0 и поэтому з(ж) делит /(ж). Из проведенного выше обсуждения следует, что любой идеал в коль- це (.Е[ж],+, •) порождается одним элементом. Кольцо с этим свойством называется кольцом главных идеалов. Начиная с этого места, мы ограничимся конечными полями. До сих пор мы имели дело лишь с конечными полями Fp с простым р. Пусть /(ж) G Рр[ж] — многочлен степени п. Мы будем называть f р- арным многочленом. Пусть (/(ж)) — идеал, порожденный многочленом /(ж). Благодаря теореме В.2, мы знаем, что (Ер[ж]/(/(ж)), 4~, •) — ком- мутативное кольцо с единичным элементом < 1 >. Оно содержит рп элементов, представленных р-арными многочленами степени < п. Теорема В. 16 Пустть (Fp, +, •) — конечное поле из р элементов и /(ж) многочлен степени п над Fp. Тогда коммутативное кольцо (Рр[ж]/(/(ж)), 4~, •) будет конечным полем (из рп элементов) в том и только в том случае, когда /(ж) неприводим в Рр[ж]. Доказательство. ==>. Предположим, что /(ж) = а(ж)Ь(ж), где
390 Приложение В. Конечные поля deg(a(a;)) > 0 и deg(b(a?)) > 0. Тогда < а(х) >< Ь(х) >=< а(х)Ь(х) >= =< f(x) >=< 0 >, хотя < а(х) >^< 0 > и < Ь(х) >^=< 0 >. Таким обра- зом, (Fp[xr]/(/(х)), +, •) — кольцо с делителями нуля. Следовательно, оно не может быть полем. <==. С другой стороны, если f(x) неприводим, любой ненулевой мно- гочлен а(х) степени < п будет обладать мультипликативным обратным и(х) по модулю /(х) в силу следствия В. 14. Для этого должно выпол- нятся < а(х) >< и(х) >=< 1 >. Отсюда следует, что (Fp[x]/(/(a;)), +, •) — поле. Мы уже знаем, что оно содержит рп элементов. Пример В.5 Пусть q = 2. Поле F2 состоит из двух элементов 0 и 1. Пусть f(x) = 1 + х + ж3. Тогда (F2[x]/(1 + х + а?3),+,-) — конечное поле из 23 = 8 элементов. Эти восемь элементов можно представить восе- мью бинарными многочленами степени < 3. Сложение и умножение выполняются по модулю 1 + х + ж3. Например, (1 + ж + я:2)х2 = х2 + х3 + х4 = (1 + а?)(1 + х 4- ж3) +1 = 1 (mod l-f-x + ж3). Таким образом, х2 — мультипликативный обратный к 1 + х + х2 в поле (F2[rr]/(1 +а? + а?3),+,-). В пакете “Mathematica” неприводимый многочлен над Fp, р — про- стое, можно найти с помощью функции IrreduciblePolynomial, для чего сначала нужно загрузить пакет Algebra‘FiniteFields‘. << Algebra^initeFields* р = 3; deg = 11; IrreduciblePolynomial[х, р, deg] II 1 + х9 + 2х10 + х11 В пакете “Mathematica” поле, определяемое многочленом f(x) степе- ни т, записывается в виде GF[p, {/о, /1, • • ? /т}]- Сложение, вычитание, умножение и деление могут быть выполнены следующим образом: f32 = GF[2, <1, 0, 1 , 0, 0, 1Н; f32[{l, 0, 1, 0, 0}] + f32[{0, 1, 1, 0, 1Н 132[{1, 0, 1, 0, он - 132 [{0, 1, 1, 0, 1Н 132[{1, 0, 1, 0, он * 132 [{0, 1, 1, 0, 1И 132[{1, 0, 1, 0, он / 132 [{0, 1, 1, 0, 1Я || {1, 1, 0, 0, 1}2 II {1, 1, 0, 0, 1}2 II {0, 0, 1, 0, 0}2
В.З. Неприводимые многочлены над GF(Q) 391 || <1, 0, 1, 1, 0}2 или следующим: f32 = GF[2, {1, О, 1, О, О, 1}] ; х = f32[{0, 1, О, О, 0}] ; v5 X6 + X10 х16* X16 х25 / х22 II II II II <1, О, 1, О, 0}2 {1, 1, О, 1, 1}2 {О, 1, О, О, 0}2 {О, О, О, 1, 0}2 В этот момент естественно возникают два вопроса: 1. Существует ли р-арный многочлен /(х) степени п для любого про- стого числа р и любого натурального п? Если это так, то можно доказать существование конечных полей Fg для любой степени q простого числа. 2. Существуют ли другие конечные поля? На первый вопрос утвердительный ответ будет дан в следу ющем раз- деле. Отрицательный ответ на второй вопрос будет дан в разд. В.4. В.З Число неприводимых многочленов над GF(g) В этом разделе мы хотим подсчитать число неприводимых многочле- нов над конечным полем Fg. Очевидно, если /(х) неприводим, то таков же и а/(х) для a Е Fq \ {0}. Идеалы (/(х) и (а/(х)) в этом случае сов- падают Поэтому мы будем подсчитывать только так называемые нор- мированные многочлены степени п, т.е. многочлены, у которых ведущий коэффициент (т.е. коэффициент при старшем члене хп) равен 1. Определение В. 15 Iq(n) = числу g-арных неприводимых нормированных много- членов степени п. 1(п) = 12(п) = числу бинарных неприводимых многочленов сте- пени п. Чтобы развить некоторую интуицию для нашей проблемы перечисле- ния, начнем с грубой атаки в случае, когда q = 2. Мы попытаемся здесь определить 1(п).
392 Приложение В. Конечные поля Имеются только два бинарных многочлена степени 1, именно, х и х + 1. По определению оба они неприводимы. Поэтому 1(1) = 2. Беря все возможные произведения х и х + 1, находим три приводимых многочлена степени 2: х ' х = х2, х • (х + 1) = х2 + х и (х + I)2 = х2 + 1. Так как имеется всего 22 = 4 бинарных многочлена степени 2, отсюда следует, что существует только один неприводимый многочлен степени 2, именно, х2 + х + 1. Поэтому 1(2) = 1. Каждый приводимый бинарный многочлен степени 3 может быть записан в виде произведения многочленов низших степеней х, х 4- 1 и х2 + х + 1. Таким путем получаются хг(х + 1)3“г, 0 < i < 3, (х2 + х + 1)т и (х2 + х + 1)(ж 4- 1). Так как имеются 23 = 8 бинарных многочленов степени 3, мы заключаем, что среди них 8 — 4 — 2 = 2 неприводимых бинарных многочлена степени 3. Поэтому 1(3) = 2. Два бинарных неприводимых многочлена степени 3 — следующие: х3 + х 4- 1 и х3 + х2 4- 1. В этот момент важно отметить, что приведенные выше перечислитель- ные рассуждения не дают действительной формы неприводимых много- членов низших степеней. Мы можем только узнать, как много имеется многочленов данной степени. В самом деле, можно подсчитать число 1(4) неприводимых многочле- нов 4-й степени следующим образом: число • произведения четырех многочленов 1-й степени 5 • произведения одного многочлена 2-й степени и двух многочленов 1-й степени 3 • произведение двух многочленов 2-й степени 1 • произведения многочленов 3-й степени и 1-й степени 4 всего = 13 Отсюда следует, что имеются 24 — 13 = 3 неприводимых бинарных многочлена степени 4. Поэтому 1(4) = 3. Некоторыми дополнительными усилиями можно найти эти три непри- водимых многочлена 4-й степени: ж4 + х + 1, х4 4- х3 + 1 и х4 + х3 + х2 + х + 1.
В.З. Неприводимые многочлены над GF(Q) 393 Продолжая таким образом, при должном упорстве можно найти точные значения 1(5) = 6, /(6) = 9 и т.д. Приведенный выше метод не ведет к доказательству того, что 1(п) > > 0 для всех n G N и не дает аппроксимации действительного значения 1(п). Начнем все заново. Пусть Pi (ж), i = 1,2,..., — перечисление всех g-арных неприводимых нормированных многочленов, причем их степени образуют неубываю- щую последовательность. Следовательно, первые Ig(l) имеют степень 1, следующие /д(2) многочленов имеют степень 2 и т.д. Любой q-арный нормированный многочлен /(ж) имеет единственное разложение вида П XPi(x))ei> ei€H,z>l, где только конечное число ei отлично от нуля. Отсюда следует, что f(x) можно однозначно представить последовательностью (ei,62,...). Пусть Gi будет степенью многочлена р<(ж), а п — степенью многочлена f(x). Тогда eiai + е2а2 +... = п. Поэтому многочлены f(x) находятся в однозначном соответствии с вы- ражениями (г°1)е1(га2)е2... при разложении (1 + zai + z2ai + .. .)(1 + za2 + z2a2 + т.е. при разложении П“ (1 - Так как имеется в точности qn g-арных нормированных многочленов сте- пени п, сказанное выше доказывает равенство ТТ°° (1 - z^)^1 = 1 + qz + q2z2 + ... = (1 — qz)~x или, эквивалентно, IlZ/1 = 1 - Q2. Введенное выше упорядочение показывает, что сц = к в точности для Iq{k} значений г; поэтому соотношение выше можно переписать так: Возьмем теперь логарифмы от обеих частей и продифференцируем ре- зультат: q(1 - qz)~x = J2Z-1 klq(k)zk~\\ - zk)~1. rv —— 1
394 Приложение В. Конечные поля Умножение обеих частей на z дает EXq"zn = E^h kl<№)zko - ^г1 = = ЕГ=1 Е~ = ЕГ=1 Е*|п Сравнение коэффициентов при степенях z в обеих частях дает соотно- шение Е>,„ = <г- (д-5) Теорема В. 17 w=;x,/w/d. Доказательство. Примените к равенству В.5 формулу обращения Мёбиуса (теорема А.38). Мы легко можем вычислить Ig(n) в пакете “Mathematica” (используя DivisorSum и MoebiusMu). DivisorSum[f, n] := Plus @@ (f / 0 Divisors[n]) q = 2; m = 4; DSM[d_]:= MoebiusMu[d]* qm/^; (DivisorSum[DSM, m]) / m II 3 Теперь довольно легко определить асимптотическое поведение функ- ции 1д(п) и доказать, что ее значения всегда положительны. Прежде всего, Ig(l) = q, так как все нормированные многочлены степени 1 неприводимы по определению. Из соотношения (В.5) следует, что q + nlg(n) < klq(k) = qn. Следовательно, /,(П) < (B.6) С другой стороны, соотношения (В.5) и (В.6) дают qU = Y.k\n “ nI^ + ^fcZo2J qk < п1я(п) + <71+п/2- Вместе с (В.6) это доказывает первое утверждение в следующей теореме.
В.4. Строение конечных полей 395 Теорема В. 18 Для всех п число Zg(n) нормированных неприводимых много- членов степени п из Fg[a;] удовлетворяет неравенствам an 1 пп 1 и Iq(n) > 0. Доказательство. То, что Iq(n) > 0 при п > 3, очевидно. При n = 1 и п = 2 это следует из теоремы В. 17, но также прямо следует из условий Zg(l) = q > 0 и Ig(2) = q2 — (9^1) = (f) > 0, что легко можно проверить непосредственно. Следствие В. 19 п /,(П)« »V Читатель может проверить это приближение для отдельных случаев, используя пакет “Mathematica”. q = 2; m = 100; DSM[d_]:= MoebiusMu[d]* qm/^; N [(DivisorSum[DSM, m]) / qm, 40] II 0.999999999999999111821579473501948675013 Отсюда следует, что случайно выбранный нормированный многочлен степени п неприводим с вероятностью около 1/п. Функция Factor пакета “Mathematica” может легко проверить, будет ли конкретный многочлен неприводим. Factor [1 + х + х2 + х3 + х4, Modulus -> 2] II 1 + х + х2 + х3 + х4 В.4 Строение конечных полей В.4.1 Циклическое строение конечного поля Из теорем В.11, В.16 и В.18 следует, что конечные поля (Fg,+,-) су- ществуют для всех степеней q простых чисел. Если q — простое число, то Fg можно представить целыми числами по модулю q. Если q — степень простого числа, скажем, q = pm, то Fg можно представить р-арными мно- гочленами по модулю некоторого неприводимого многочлена степени тп. Мы сформулируем это в виде теоремы.
396 Приложение В. Конечные поля Теорема В.20 Пусть р — простое число и q = pm, т > 1. Тогда конечное поле порядка q существует. Позже в этом разделе мы увидим, что любое конечное поле мож- но описать конструкцией из В. 16. Но сначала мы докажем крайне важ- ное свойство конечных полей, именно, что их мультипликативная группа циклична. В силу теоремы В.5 мы знаем, что любой ненулевой элемент в Fg имеет мультипликативный порядок, делящий q — 1. Определение В. 16 Элемент со конечного поля называется n-м корнем из единицы, если соп = 1. Элемент со называется примитивным п-м корнем из 1, если он имеет порядок п. Если является примитивным (д — 1)-м корнем из единицы, то называется примитивным элементом (или образующим) В Fg. Теорема В.21 Пусть (Fg, + , •) — конечное поле и пусть d — целое число, делящее q — 1. Тогда Fg содержит в точности p(d) элементов порядка d. В частности, (Fg \ {0}, •) — циклическая группа порядка q — 1, которая содержит <p(q — 1) примитивных элементов. Доказательство. По теореме В.5 любой ненулевой элемент в FQ име- ет мультипликативный порядок d, который делит q — 1. С другой сторо- ны, предположим, что Fg содержит элемент порядка d, d|(g — 1), скажем, Тогда все d различных степеней со суть корни многочлена xd — е. Из теоремы В. 15 следует, что любой корень степени d из единицы в Fg явля- ется степенью В предположении, что Fg содержит элемент порядка d, из леммы В.4 вытекает, что Fg содержит ровно <£>(d) элементов порядка d, именно, со\ где НОД (г, d) = 1. Пусть a(d) — число элементов порядка d в Fg. Тогда сказанное выше означает, что i) a(d) = 0 или a(d) = 92(d), а также что ii) Ed|(g-i)°(d) =2-1- С другой стороны, теорема А.12 утверждает, что 53rf|(g—1) = ?”!• Поэтому заключаем, что a(d) = <p(d) для всех d\(q — 1). В частности, a(q— 1) = <p{q — 1), а это означает, что Fg содержит <p{q — 1) примитивных элементов и что Fg \ {0} — циклическая группа. Чтобы убедиться, будет ли конкретный элемент со из GF(g) иметь порядок d,d|(g — 1), достаточно проверить, что cod = 1 и что 1 для любого простого делителя р числа d. Посмотрите также обсуждение после леммы В.З.
В.4. Строение конечных полей 397 Чтобы найти примитивный элемент в Zp с простым р, можно исполь- зовать функцию PowerList пакета “Mathematica”. Она находит примитив- ный элемент в Zp и порождает все его степени (начиная с 0-й). Второй элемент в этом списке — сам примитивный элемент. Но сначала нужно загрузить пакет Algebra‘FiniteFields1. << Algebra'FiniteFields' p = 17; PrimeQ[p] PowerList [GF [p, 1] ] [ [2] ] II True II {3} Задачи В.6 и В.10 указывают эффективный путь (по Гауссу) нахо- ждения примитивного элемента в конечном поле. Следствие В.22 Любой элемент ш в удовлетворяет равенствам шдП = о», п > 1. Доказательство. Для ш = 0 утверждение тривиально истинно. В силу теорем В.5 и В.21 любой о», о» 0, имеет порядок, делящий q — 1. Поэтому выполняется равенство о»9""1 = е, а, значит, и ш9 = w. Поскольку u)qn = (w9)9” , доказательство получается легким индуктивным рассуж- дением. Следствие В.23 Пусть — конечное поле. Тогда x''-x = TL^x Доказательство. По следствию В.22 (посмотрите его доказатель- ство) любой элемент ш из Fg является корнем многочлена хд — х. Поэтому правая часть равенства выше делит его левую часть. Теперь равенство выполняется, потому что выражения в обеих сторонах нормированы и имеют одну и ту же степень. Следствие В.23 будет использовано позже как инструмент для про- верки того, будет ли некоторый элемент полей, содержащих Fg, принад- лежать в действительности самому FQ. Пример В.6 Рассмотрим конечное поле (F2[x]/(f (х)), 4-, •), где /(х) = х4 + х3 -|- 4-х2 + х + 1. Оно содержит 24 = 16 элементов, которые могут быть
398 Приложение В. Конечные поля представлены бинарными многочленами степени < 4. Элемент х, пред- ставляющий класс < х >, не является примитивным, так как х° = = (ж + 1)/(ж) + 1 = 1 (mod f(x)). Поэтому х имеет порядок 5, а не 15. В пакете “Mathematica” это можно проверить следующим образом: f = 1 + х + х2 + х3 + х4; PolynomialMod[х2, f, Modulus -> 2] PolynomialMod[х3, f, Modulus -> 2] PolynomialMod [x4, f, Modulus -> 2] PolynomialMod [x5, f, Modulus -> 2] 1 + X + X2 + x3 Элемент x + 1 примитивен (его порядок равен 15J, как можно уви- деть в табл. В.1. Это также легко проверить. В самом деле, х + 1 имеет порядок, делящий 15. Поэтому остается лишь проверить, что х + 1 в степени 3 или 5 не приводится к 1 по модулю f(x). ± = 1 + х + х2 + х3 + х4; PolynomialMod[(х + I)3, f, Modulus -> 2] PolynomialMod[(х + I)5, f, Modulus -> 2] PolynomialModE(x + I)15, f, Modulus -> 2] 1 + X + X2 + x3 1 + X2 + X3 1 Умножение легко выполняется с табл. ВЛ. Например, (1 + х + х2 + х3)(ж + х3) = (ж + 1)3(ж + I)14 = = (х + I)17 = (х + I)2 = х2 + 1 (mod f(x)). Элемент х + 1 — корень неприводимого многочлена у4 + у3 + 1, так как (х + I)4 + (ж + I)3 + 1 = 0 (mod /(ж)). f = 1 + х + х2 + х3 + х4; PolynomialModЕ(х + I)4 + (х + I)3 + 1, f, Modulus -> 2] II О
В.4. Строение конечных полей 399 Поэтому в (F2/(g(x)), +, •) с д(х) = х4 + ж3 + 1 элемент х примити- вен; см. табл. В.2. 1 X Ж2 ХЛ 0 0 0 0 0 (1 + ж)и 1 0 0 0 (1 + х)1 1 1 0 0 (1 + ж)2 1 0 1 0 (1 + ж)3 1 1 1 1 (1 + х)4 0 1 1 1 (1 + х)5 1 0 1 1 (1 + я)6 0 0 0 1 (1 + ж)7 1 1 1 0 (1 + ж)8 1 0 0 1 (1 + х)У 0 0 1 0 (1 + ж)1и 0 0 1 1 (1 + х)11 1 1 0 1 (1 + ж)12 0 1 0 0 (1 + х)ГЛ 0 1 1 0 (1 + ж)14 0 1 0 1 Таблица В.1. (ПГг [ж]/(1 + х + х2 + х3 + х4), +, •) с примитивным элементом 1 + х. 1 X х2 ХЛ 0 0 0 0 0 1 1 0 0 0 X 0 1 0 0 ж2 0 0 1 0 хЛ 0 0 0 1 Ж4 1 0 0 1 хь 1 1 0 1 1 1 1 1 X1 1 1 1 0 «А/ 0 1 1 1 X9 1 0 1 0 ™10 0 1 0 1 1 0 1 1 х1'2 1 1 0 0 ™13 JU 0 1 1 0 х14 0 0 1 1 Таблица В.2. (F2[гг]/(1 + х3 + х4), +, •) с примитивным элементом х.
400 Приложение В. Конечные поля В.4.2 Мощность конечного поля Рассмотрим элементы е, 2е, Зе и т.д. в F9. Так как F9 конечно, не все эти элементы различны. Также, если ie = je, где i < j, то (j — г)е = 0. Эти наблюдения оправдывают следующее определение. Определение В.17 Характеристикой конечного поля F9 с единичным элементом е называется такое наименьшее натуральное число с, что се = 0. I Теорема В.24 Характеристика конечного поля F9 — простое число. Доказательство. Допустим, что характеристику с можно записать в виде с'с", где d > 1 и с" > 1. Тогда 0 = се = (с,е)(с/,е), тогда как с'е ф 0 и с"е ф 0- Поэтому de и с"е — делители нуля. Это противоречит предположению, что Fg — поле. Определение В. 18 Два конечных поля (F9, +, х) и (F^, ф, ®) называются изоморф- ными, если существует взаимно однозначное отображение ф из F9 на Fg (поэтому q — qf), такое, что для всех сщ и и>2 из Fg г) ® ii) х ^2) = V’(^i) ® Говоря словами, два поля изоморфны, если после переименования их элементов они ведут себя совершенно одинаково по отношению к опера- циям сложения и умножения. Лемма В.25 Пусть (F9,+,-) — конечное поле характеристики р. Тогда (F9, +, •) содержит подполе, изоморфное (Zp,+, •), т.е. множе- ство целых чисел по модулю р. Доказательство. Подмножество {ie |г = 0,1,... ,р - 1} в (Fg,+,-) образует подполе, которое изоморфно полю (Zp, +, •) относительно изо- морфизма ^(ге) = г, 0 < г < р. Учитывая доказанную лемму, мы можем и будем отождествлять под- поле в (F9, +, •) порядка р с полем (Zp, +, •). Подполе Fp часто называют основным полем для Fg. Обратно, поле F9 называется полем расширения для Fp. Теорема В.26 Пусть Fq — конечное поле характеристики р. Тогда FQ — вектор- ное пространство над Fp и q = pm для некоторого натурального т > 1.
В.4. Строение конечных полей 401 Доказательство. Пусть ui, и?, .., um — базис в Fg над Fp, т.е. любой элемент ш из Fg может быть записан в виде СО = djUi + O,2u2 + • • • + где щ E Fp, 1 < i < m, и не существует линейной зависимости между элементами поля щ над Fp. Отсюда следует, что их представление одно- значно и поэтому q = |Fg| = pm. К этому времени мы знаем, что конечные поля Fg существуют только для степеней q простых чисел. Теорема В.20 утверждает, что Fg действи- тельно существует для степени q простого числа. То, что все конечные поля с одним и тем же значением q изоморфны друг другу, будет дока- зано позже. В.4.3 Некоторые правила вычислений над конечными полями; сопряженные элементы Теорема В.27 Пусть ш — элемент из конечного поля Fg характеристики р. Тогда в Fg[r] (х — со)р = хр — сор. Доказательство. Пусть 0 < i < р. Тогда нод(р, г!) — 1, так что Q = = о (modp) и, учитывая биномиальную теорему, мы получаем, что (х — со)р = хр + (—ю)р = хр — сор, где последнее равенство очевидно для нечетного р, а для р = 2 оно вы- текает из равенства +1 = —1. Чтобы продемонстрировать это, мы вновь используем функцию Poly- nomialMod пакета “Mathematica”. Clear [а, х]; р = 2; m = 3; PolynomialMod [(х-а)рГП, р] II а8 + х8
402 Приложение В. Конечные поля Следствие В.28 Пусть сц, 1 < i < к, — элементы конечного поля Fg характери- стики р. Тогда для любого натурального п р‘ ai а ., Ъ •, с . , р = 3; m = 3; PolynomialMod[(а + b + с)рТП, р] II а27 + Ь27 + с27 Доказательство. Используйте индуктивное рассуждение по /с и по п. Начните с равенства (а± + аг)р = ai + ар- Следующая теорема дает мощный критерий для определения того, будет ли элемент из поля Fg характеристики р лежать в основном поле Fp. Теорема В.29 Пусть Fg — конечное поле характеристики р. Тогда q = — рт,т > 0, и Fg содержит Fp в качестве подполя. Пусть ш — элемент из Fg. Тогда ш Е Fp <=> cjp = cj. Доказательство. По следствию В.23 р элементов подполя Fp удо- влетворяют уравнению хр = х. С другой стороны, многочлен хр — х по теореме В. 15 имеет не более р корней в Fg. Пусть ш — элемент из Fg, поля характеристики р, но ш не лежит в Fp. Тогда cjp ш в силу предыдущей теоремы. Но между шр и ш еще остается связь. Теорема В.30 Пусть ш — элемент конечного поля Fg характеристики р. Пусть /(ж) — такой многочлен над Fp, что /(cj) = 0. Тогда для всех n Е N f(^pn) = 0. Доказательство. Запишем /(ж) = Ажг. Так как /< Е Fp,0 < < i < т, в силу следствия В.22 и теоремы В.29 получаем о=(/м)”'* = = = Е™ о = Е” о
В.4. Строение конечных полей 403 В R и С имеется нечто подобное. Если /(ж) — многочлен с действитель- ными коэффициентами и /(о?) = O,cu G С, то также /(о?) = 0, где ш — комплексно сопряженное к ш. Следующая теорема утверждает, что число различных элементов cupt, i = 0,1,..зависит только от р и (мультипликативного) порядка элемен- та со. Теорема В.31 Пусть и — элемент порядка п в конечном поле характеристики р. Пусть m — мультипликативный порядок числа р по модулю п, т.е. pm = 1 (mod п), где т > 0. Тогда все т элементов „ „2 „тп—1 Со», сор, сои ,... ,сор различны и сор = со. Элементы сорг, 0 < i < т — 1, называются сопряженными к со. Доказательство. Применяя лемму В.З (дважды), получаем, что сор* = тогда и только тогда, когда рг = рР (mod п) и, значит, тогда и только тогда, когда рг~э = 1 (mod п), т.е. тогда и только тогда, когда г = j (mod т). Пример В.7 Рассмотрим (П^ИД/(ж)), +, •)> г^е f(x) = ж4 + ж3 + ж2 + ж + 1 (см. пример В.6). Элемент х поля имеет порядок 5. Мультипликативный порядок числа 2 по модулю 5 равен 4. Поэтому х, ж2, ж2 и х2 различны, тогда как ж24 = х. В самом деле, х4 = ж3 + ж2 + х + 1 (mod f(x)), х8 = = ж3 (mod /(ж)) в то время, как ж16 = ж (mod /(ж)), как можно проверить с помощью функций Table и PolynomialMod пакета “Mathe- matica”: р = 2; m = 4; f = 1 + х + х2 + х3 + х4; Table [PolynomialMod [хр*, f, Modulus -> р] , <i, 0, m}] // TableForm x x2 1 + x + x2 + x3 x3 x
404 Приложение В. Конечные поля В.4.4 Минимальные многочлены и примитивные многочлены Теорема В.32 Пусть FQ — конечное поле характеристики р. Возьмем число n|(g — 1) и пусть со — элемент порядка п из F9. Далее, пусть т — мультипликативный порядок числа р по модулю п. Тогда коэффициенты многочлена т(ж) = лежат в Fp и он неприводим над Fp. Он называется минималь- ным многочленом элемента со над Fp. Доказательство. Очевидно, т(х) — многочлен над Fg. Запишем т(ж) = mixl- Мы должны показать, что коэффициенты mi лежат в основном поле Fp. С этой целью мы используем сильный критерий из теоремы В.29. В силу теоремы В.27 и следствия В.22 (при n = 1) получаем (т(г))₽ = П”/ - шР'У = П"0‘ (с" - ш₽‘+1) = = JJ. 1 (хр — сорг) = о (хр — шрг^ = т(хр). Следовательно, Y^=omixPi = т(хР}= (ш(ж))р = (52™ 0 т^гУ = 52™О Сравнение коэффициентов при хрг в обеих частях дает пц = тр. Из теоеремы В.29 следует, что тгц Е Fp, 0 < i < т. Таким образом, тп(ж) — многочлен из Fp[a?]. Из теорем В.30 и В.31 следует, что никакой многочлен из Fp[a;] сте- пени, меньшей т, не может иметь со в качестве корня. Поэтому т(х) неприводим над Fp. Следствие В.33 Пусть со — элемент порядка п в конечном поле характеристики р. Пусть т(х) определен, как в теореме В.32, а /(ж) — многочлен с корнем со. Тогда /(ж) делится на т(х). Доказательство. Скомбинируйте теоремы В.30, В.31 и В.32. Таким образом, как определено в теореме В.32, т(х) — нормирован- ный многочлен наименьшей степени над Fp, корнем которого служит со. В этом — причина, почему т(х) называется минимальным многочленом
В.4. Строение конечных полей 405 для ш над Fp. Его корнями являются ш и все сопряженные с ш элемен- ты. Степень минимального многочлена т(х) элемента ш часто называют просто степенью элемента ш над Fp. Если т(х) — минимальный многочлен примитивного элемента, то т(х) называют примитивным многочленом. “Mathematica” находит при- митивный многочлен степени т над Fp от переменной z посредством функции Fieldlrreducible. << Algebra‘FiniteFields< m = 6; р = 2; Fieldlrreducible[GF[р, m], z] II 1 + z5 + z6 Пусть /(ж) — примитивный многочлен над Fp степени т. Таблица (по- добная табл. В.2), в которой каждый ненулевой элемент конечного поля (Ер[ж]/(/(ж)),+, •) представлен в виде многочлена от х степени < т, а также как степень ж, называется таблицей логарифмов данного поля. Эти таблицы очень практичны, если в полях приходится выполнять об- ширные вычисления. Таблицы логарифмов можно довольно легко сделать в пакете “Ma- thematica”. В зависимости от того, находит ли сама “Mathematica” под- ходящий примитивный многочлен, или он задан, можно напечатать р = 2; TableForm[PowerList[GF[p, 4]] 1 0 0 1 о о о о 1 о 1 1 1 1 1 1 0 1 1 о 0 1 1 о 1 1 0 1 о о о о о о 1 о 0 1 0 1 0 1 1 1 1 о 1 1 1 о 0 1 1 1 о о 1 о 1 1 или
406 Приложение В. Конечные поля р = 2; TableForm[PowerList[GF[p, <1, 1, 0, 0, I}]]] 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 Чтобы найти хг в поле GF[p, т], или, обратно, найти такое г, что хг равно конкретному элементу в GF[p, т], можно использовать функции FieMExp[GF[p, m], г] и, соответственно, Fieldlnd (по существу для вычис- лений при значении True функции PowerListQ) пакета “Mathematica”. PowerListQ[GF[2, {1, 1, 0, 0, 1}]] == True; fl6 = GF[2, <1, 1, 0, 0, 1}]; FieldExp[f16, 5] Fieldlnd[f16[{0, 1, 1, 0}]] II {0, 1, 1, 0}2 II 5 Имеется несколько способов найти минимальный многочлен элемента поля. Мы продемонстрируем два метода. Метод 1. Пусть а — корень бинарного примитивного многочлена г5 + х2 + 1. Поэтому а имеет порядок 31, а сопряженными к а3 служат а6 * * * * II, а12 * * * *, а24 и а17 * * * *. Тогда минимальный многочлен элемента а3 может быть най- ден программой f := 1 + х2 + х5; PolynomialMod[ (х - а2)(х - а6) (х - а12) (х - а24) (х - a17), f, Modulus -> 2] II 1 + X2 + X3 + X4 + X5
В.4. Строение конечных полей 407 Метод 2. Пусть а — корень бинарного примитивного многочлена ж5 + х2 + 1. Чтобы найти минимальный многочлен элемента /3 = а3, мы сначала вычисляем 1,/3,/З2,/З3,/З4 и /З5, используя уравнение а5 + си2 + 1 = 0. f = 1 + а2 + а5; b = а3; u0 = PolynomialMod [1, f, Modulus -> 2] ul = PolynomialMod[b, f, Modulus -> 2] u2 = PolynomialMod[b2, f, Modulus -> 2] u3 = PolynomialMod[b3, f, Modulus -> 2] u4 = PolynomialMod[b4, f, Modulus -> 2] u5 = PolynomialMod[b5, f, Modulus -> 2] H 1 II a3 II a + a3 II a + a3 + a4 II a + a2 + a3 II 1 + a + a2 + a3 + a4 Мы используем функцию CoefficientList, чтобы преобразовать коэф- фициенты в векторы. Заметим, что мы также используем функцию Join, чтобы дополнить векторы нулями, дабы сделать их все длиной 5. М = {Join[ [CoefficientList[и0, а], {0, 0, 0, 0}] , Join[CoefficientList [ul, а], {0}] , Join[CoefficientList[и2, a], {0}] , CoefficientList [u3, a], Join[CoefficientList[u4, a], {0}], CoefficientList [u5, a]}; MatrixForm[M] / 1 0 0 0 0 4 0 0 0 1 0 0 10 10 0 10 11 0 1110 \ 1 1 1 1 1 / Нам нужно найти линейную зависимость между 1,/3,/З2,/З3,/З4 и /З5, скажем, = 0, где gi Е GF(2). С этой целью мы используем функции NullSpace и Transpose пакета “Mathematica”. Это приводит к минимальному многочлену д(х) элемента /3.
408 Приложение В. Конечные поля NullSpace[Transpose[М], Modulus -> 2] || «1, о, 1, 1, 1, Ш Заключаем, что /3 имеет минимальный многочлен 1 + х2, + ж3 + т4 4- +х5. В.4.5 Дальнейшие свойства Пусть т(х) — минимальный многочлен элемента ш степени гп. Из следствия В.33 вытекает, что рт выражений G Fp,0 < i < m, принимают pm различных значений. Для этих выражений сложение и умножение могут быть выполнены в точности, как в определениях (В.З) и (В.4), где нужно использовать соотношение = 0, чтобы привести степень результата к значению, меньшему т. Довольно легко проверить, что получается поле, изоморфное (FQ[r]/(m(a;)), +, •). Если т(х) примитивен, то получаем, что все элементы 1, х,..., х^рт~2^ различны по модулю т(х), в точности как различны элементы 1,си,... , cu(pm-2)_ см пример В.6, где примитивный элемент ш = 1 + х имеет ми- нимальный многочлен т(у) = 1 + у3 + г/4. Табл. В.2 представляет поло (Рд[ж]/(т(ж)),+,-). Лемма В.34 Пусть т(х) — неприводимый многочлен степени т над полем с р элементами и пусть п кратно т. Тогда т(х) делит хр — х. Доказательство. Рассмотрим кольцо классов вычетов (Fp[r]/(m(a;)), +, •). Это кольцо по теореме В. 16 является полем с q = рт элементами. Элемент < х > является корнем многочлена т(х), так как т(< х >) — =< т(х) >=< 0 > . Из следствия В.22 (при n = 1) следует, что < х > — корень многочлена хр — ж, n > 1. По следствию В.33 мы заключаем, что т(х) делит хр — х. Справедливо также утверждение, обратное к лемме В.34. Теорема В.35 Многочлен хр — х — это произведение всех неприводимых нор- мированных р-арных многочленов, степени которых делят п. Доказательство. Пусть m|n. Существуют Zp(m) неприводимых мно- гочленов степени т над Fp, все из которых делят хр — х по лемме В.34. Сумма их степеней равна Так как Y2m\nrn^p(m') — Рп = = deg(a;pn — х) в силу (В.5), неприводимые нормированные р-арные многочлены степеней m, mjn, образуют полное разложение мно- гочлена хр — X.
В.4. Строение конечных полей 409 Пример В.8 Пусть р = 2, п = 4. /2(1) = 2,/2(2) = 1,/2(4) = 3 (см. разд. В.З). ж13 — х = х(х + 1)(ж2 + ж + 1)(ж4 + ж3 4-ж2 + ж + 1)(ж4 + ж3 + 1)(ж4 + х + 1). р = 2; m = 4; Factor [хрГП - х, Modulus -> р] х(1 + х)(1 + X + х2)(1 + X + х4)(1 + X3 + х4)(1 + X + х2 + + X3 + х4) Следствие В.36 Пусть /(ж) — неприводимый многочлен в Рр[ж] степени т и пусть т\п. Тогда конечное поле из рп элементов содержит т корней многочлена /(ж). Доказательство. По теореме В.35 /(ж) делит ж9—ж, q = pn. С другой стороны, в силу следствия В.23, ж9 — ж = ПшеР (х ~ ш)- Теорема В.37 Пусть р — простое число и т Е N. Тогда конечное поле Fpm единственно с точностью до изоморфизма. Доказательство. Положим q — рт и пусть Fg — произвольное конеч- ное поле порядка q. Пусть /(ж) — произвольный неприводимый р-арный многочлен степени т. Мы покажем, что Fg изоморфно полю Fp И/(/(х))- По следствию В.36 Fg содержит т корней многочлена /(ж). Пусть ш — один из этих корней. Так как /(ж) неприводим в Рр[ж], ни для какого мно- гочлена над Fp меньшей степени ш не является корнем. Это влечет, что т элементов 1,си,..., cum-1 независимы над Fp. Поэтому любой элемент из Fg может быть записан в виде fiPJ1, fi Е Fp,0 < г < m - 1. Теперь изоморфизм между Fg и Рр[ж]/(/(ж)) очевиден. Следствие В.38 Fpm изоморфно подполю в Fpn тогда и только тогда, когда т делит п. Доказательство. Все следующие утверждения эквивалентны: i) m|n, ii) (рт — 1) делит (рп — 1), iii) (жргп — ж) делит (хрП — ж),
410 Приложение В. Конечные поля iv) n^GiFpm (ж - делит ELeiFpn (х - ^); v) Fpm — подполе поля Fpn. Пример В.9 Из следствия В.38 вытекает, что F24 содержит в качестве подпо- ля F22, но не содержит F23. С помощью табл. В.2 можно легко про- верить, что элементы 0,1, ж5, ж10 образуют подполе мощностью 22 в (F2[x]/(x4 + х3 + 1), +, •)• В.4.6 Многочлены деления круга Рассмотрим конечное поле F9 характеристики р. Таким образом, q = = рт для некоторого т > 0. По теореме В.5 любой элемент из F9 имеет порядок, делящий q — 1. Пусть п|(<7 — 1) и со — примитивный корень п-й степени из единицы в Fg. Например, со = о№~~1Мп, где а примитивный элемент в Fg. Пусть d\n и положим р = con^d. Тогда р — примитивный корень из единицы степени d. Очевидно, d элементов 1, т/,..., — корни многочлена xd — 1. По теореме В. 15 никакой другой элемент из FQ не является корнем xd — 1. Определение В.19 Пусть q = рт,р — простое. Для любого d\(q — 1) р-арный мно- гочлен деления круга (или циклотомический многочлен) определяется равенством Q(d)(x)= П (*-«• ^бСР(д)порядка d Если £ имеет порядок d,d\(q — 1), то по лемме В.4 £р также имеет порядок d. Вместе с корнем £ многочлена Q(d\x) корнями являются и сопряженные с £ элементы. Из теоремы В.32 следует, что Q^(x) яв- ляется произведением некоторых минимальных многочленов над Fp, и поэтому Q(d\x) — многочлен над Fp. По теореме В.21 Q^d\x) имеет степень <p(d). Поскольку со — прими- тивный корень n-й степени из единицы, получаем хп — 1 = ТТ (ж — со1) = ТТ (ж — £) = -*•С имеет порядок п = IU П€6₽„ < _ порядок - « = Пф. Теорема В.39 Q(nM = n,, -*• J-a|n
В. 4. Строение конечных полей 411 Доказательство. Нужно применить мультипликативную формулу обращения Мёбиуса (следствие А.39) к равенству (В.8). Пример В.10 Q<36)/ ' _ ТТ ( d _ 1\f<(36/d) _ (Д36 ~ 1)(ж6 - 1) _ X18 + l V w - lld|36^ - (а.1в _ _ !) - + 1 __ ^12 _ ^6 1 Это можно также вычислить в пакете “Mathematica”: DivisorProduct[f, n] := Times ФФ (f / 0 Divisors [n]) n = 36; Clear[f, x] ; f [d ] •= (x^i^oebiusMuCn/d] DivisorProduct[f, n] // Simplify II 1 - x6 + x12 или прямо с функцией Cyclotomic из “Mathematica”: Cyclotomic[36, x] II 1 - X6 + x12 Если p = 2, то можно записать = ж12 4- ж6 4- 1. Выражение для Q(n\x) в теореме В.39 кажется независимым от ко- нечного поля. В действительности это не так, поскольку при вычислении значения этого выражения играет роль характеристика поля. Все неприводимые делители многочлена (ж) имеют одну и ту же степень, так как все корни этого многочлена имеют один и тот же поря- док d. В самом деле, по теореме В.32 каждый неприводимый делитель многочлена Q^(x) в качестве степени имеет мультипликативный поря- док числа р по модулю d. В частности, мы имеем следующую теорему. Теорема В.40 Число примитивных р-арных нормированных многочленов сте- пени т равно у(рт - 1) т Доказательство. Примитивный р-арный многочлен степени т де- лит q(p’""1)(x), и этот многочлен деления круга имеет делители только данного типа. Степень многочлена Q^pm~1\x) равна y?(pm — 1).
412 Приложение В. Конечные поля Пример В.11 Пусть р = 2. ж16 — х = х(х15 — 1) = xQ^\x)Q^3\x}Q^\x)Q^b\x), где Q(1)(x) = ж 4-1, Q(3)(x) = х2+х + 1, Q(5)(rr) = ж4 4- х3 4- ж2 4- х + 1, q(15)(x) = (ж4 4- х 4- 1)(х4 4- х3 4- 1) В самом деле, имеются д?(15)/4 = 2 примитивных многочлена степени 4. См. также пример В.6. Один из способов найти все примитивные многочлены степени т над Fp — факторизовать Q(pTn-1)(x). Пример В.12 р = 2; m = 6; n = pm - 1; Factor[Cyclotomic[n, х] , Modulus -> 2] (1 + X + Х6)(1 + X + X3 + X4 + Х6)(1 + X5 + X6) (1 + X + х2 + X5 + х6)(1 + X2 + X3 + X5 + X6) (1 + х + + X4 + х5 + X6) Замечание. В этой главе мы рассмотрели Fg, q = рт и р — простое, как расширение поля Fp, однако все понятия, определенные в этой гла- ве, можно обобщить на Fg[x]. Таким образом, можно подсчитать число неприводимых многочленов степени п в F9[x] или обсудить примитивные многочлены над F9 и т.д. Мы оставляем читателю проверку того, что все теоремы этого приложения можно обобщить: перенести с Fp и Fp™ на Fg и, соответственно, F9m, просто заменяя р на g, a q — на qm. Пример В.13 Поле Fie можно рассматривать как кольцо классов вычетов IF4 [ж]/ /(ж2 4- х 4- а), где а — элемент из F4, удовлетворяющий равенству о? 4- 4-0! 4-1 = 0. В. 5 Задачи Задача В.1. Докажите, что ({ж G R|x2 G Q, х 0}, •) — группа. Задача В.2. Докажите, что элементы приведенной системы классов вы- четов по модулю т образуют мультипликативную группу. Задача В.З. Пусть (С?, *) — группа, а Н — непустое подмножество в G. Тогда (Н, *) — подгруппа в (G, *) тогда и только тогда, когда hi * 1 G Н для любых hi,h.2 G Н.
В. 5. Задачи 413 Задача В.4. Докажите, что по существу имеются две различные группы порядка 4 (совет: каждый элемент имеет порядок, делящий 4). Задача В.5. Найдите элемент порядка 12 в группе (Zj3, х). Какие степени этого элемента имеют порядок 12? Ответьте на тот же вопрос для элементов порядков 6, 4, 3, 2 и 1. Задача В.6. Пусть (G, •) — коммутативная группа. Пусть а и b — элементы из G порядков тип соответственно. а) Допустим, что нод(т,п) = 1. Докажите, что a • b имеет порядок т х п. Ь) Допустим, что условие НОД(т, п) = 1 не выполняется. Определите целые числа s и t, такие, что s|m, t\n, нод($, t) = 1 и нок[$, t] — нок[т,п]. с) Постройте элемент в G порядка нок[т,п]. Задача В. 7м. Найдите мультипликативный обратный к 1 + х2 + х3 (mod 1 + х2 + ж5) над GF(2) (совет: см. теорему В.13). Задача В.8м. Сколько имеется бинарных неприводимых многочленов, имеющих степени 7 и 8? (Совет: см. определение В.15 и теорему В.17). Задача В.9. Создайте таблицу логарифмов поля GF(2) [гс]/(1 + х2 + ж5) (совет: х — примитивный элемент). Используйте эту таблицу, чтобы выразить ж10 + ж20 в виде степени х. Задача В.10. Пусть a G GF(g) имеет порядок т,т < q — 1. Какова вероятность того, что случайно взятый ненулевой элемент /3 G GF(g) имеет порядок п, делящий т? Дайте верхнюю оценку этой вероятности. Постройте элемент порядка нок[т,п] (совет: см. задачу В.6) (фактически этот метод приводит к эффективному нахождению примитивного элемента в конечном поле; он принадлежит Гауссу). Задача В.11. Какие подполя содержатся в GF(625)? Пусть а — прими- тивный элемент в GF(625). Какие степени а образуют различные подполя в GF(625)? (Совет: см. следствие В.38). Задача В. 12. Докажите, что над GF(2) (х + т/)2*4-1 = ж2*4-1 + Х2к - у + х • у2* + т/2*4-1. (Совет: используйте следствие В.28). Задача В.13. Сколько имеется бинарных примитивных многочленов сте- пени 10? (Совет: см. теорему В.40). Задача В.14. Найдите бинарный многочлен деления круга Q^21)(x) (совет: см. теорему В.39). Какова степень делителей многочлена <5^21\ж)? Задача В.15. Какова степень бинарного минимального многочлена при- митивного корня из единицы степени 17? (Совет: теорема В.39). Сколько су- ществует таких многочленов? Докажите, что каждый из них обратен самому себе. Найдите эти многочлены явным образом.
414 Приложение В. Конечные поля Задача В.16. Отображение следа Тг опреляется на GF(pm), р — простое, формулой Тг(ж) = X + ХР + Хр2 + . • • + ХрГП 1 . а) Докажите, что Тг(ж) G GF(p) для любого х Е GF(рт) (совет: теорема В.29). Таким образом, Тг является отображением из GF(p’n) в GF(p). b) Докажите, что отображение Тг линейно (совет: см. следствие В.28). с) Докажите, что Тг принимает любое значение в GF(p) одинаково часто (совет: используйте теорему В. 15). d) Замените в этой задаче р на q, где q — степень простого числа, и проверьте те же самые утверждения.
Приложение С Некоторые знаменитые математики С.1 Эвклид из Александрии Родился: около 365 г. до н.э. в Александрии, Египет. Умер: около 300 г. до н.э. Эвклид — наиболее выдающийся математик античности, известен, в основном, благодаря своему трактату по геометрии “Начала”. Многове- ковая устойчивость методического построения “Начал” делает Эвклида ведущим учителем математики всех времен. О жизни Эвклида известно мало, за исключением того, что он ра- ботал в Александрии египетской. Приведенное выше изображение отно- сится к 18-м веку, и его следует считать весьма условным. Наиболее известная работа Эвклида — это его трактат по геометрии “Начала”. Это собрание знаний по геометрии, ставшее основой для обу- чения математике на 2000 лет. Скорее всего в “Началах” нет результатов, впервые доказанных самим Эвклидом, но организация материала и его представление несомненно принадлежат ему. Тракат начинается с определений и аксиом. В их числе и знамени- тая пятая аксиома параллельности, состоящая в том, что через данную точку можно провести ровно одну прямую, параллельную данной. Ре- шение Эвклида сделать это утверждение аксиомой привело к созданию эвклидовой геометрии. Первая попытка отбросить пятый постулат была
416 Приложение С. Некоторые знаменитые математики предпринята только в 19-м веке, после чего началось изучение неэвкли- довых геометрий. Зенон из Сидона примерно через 250 лет после Эвклида писал: “Ка- жется, что в “Началах” впервые было показано, что предложения Эвкли- да не выводятся из одних только аксиом, и Эвклид сделал другие тонкие предположения.” “Начала” разделены на 13 книг. Книги 1-6 посвящены геометрии на плоскости, книги 7-9 — теории чисел, книга 10 — теории иррациональ- ных чисел, книги 11-13 — пространственной геометрии. Книга заканчи- вается обсуждением свойств пяти правильных многогранников и дока- зательством того, что их ровно пять. “Начала” Эвклида замечательны той ясностью, с которой формулируются и доказываются теоремы. За- данный Эвклидом стандарт строгости стал ориентиром для математиков более поздних веков. С момента первой публикации “Начал” в 1482 г. было издано более ты- сячи редакций этой книги. Перу Эвклида принадлежат также дошедшие до нас “Данные” (содержащие 94 предложения), “О частях”, “Оптика” и “Явления”. Другие его книги: “Местоположения поверхностей”, “Пориз- мы”, “Коники”, “Книга заблуждений” и “Начала музыки” были утеряны. Возможно Эвклид и не был первоклассным математиком, но многове- ковая устойчивость методического построения “Начал” делает Эвклида ведущим учителем математики всех времен. Сведения взяты на web-странице: http://www-history.mcs.st-and.ac.uk/history/Mathematicians/Euclid.html С.2 Леонард Эйлер Родился: 15 апреля 1707 г. в Базеле, Швейцария. Умер: 18 сентября 1783 г. в Санкт-Петербурге, Россия. Эйлер широко раздвинул границы современной аналитической гео- метрии и тригонометрии. Он внес решающий и формообразующий вклад в геометрию, математический анализ и теорию чисел.
С.2. Леонард Эйлер 417 Отец Эйлера был священником и хотел, чтобы сын пошел по его сто- пам. Для подготовки к служению Эйлера направили учиться в Базель- ский университет. Однако вскоре его любимым предметом стала геомет- рия. Эйлер с помощью Иоганна Бернулли получил согласие своего отца на занятие математикой. Иоганн Бернулли стал его учителем. Эйлер был приглашен в Санкт-Петербургскую академию наук в 1727 г., т.е. через два года после ее основания Екатериной I — женой Петра Великого. С 1727 по 1730 гг. он служил лейтенантом медицины в российском флоте. В Санкт-Петербурге он жил вместе с Даниэлем Бер- нулли. В 1730 г. Эйлер стал профессором физики в академии наук, а в 1733 г. — профессором математики. В том же году он женился и покинул дом Даниэля Бернулли. У него было 13 детей, из которых 8 умерли в раннем детстве. Он утверждал, что сделал некоторые из своих великих открытий, когда держал младенца на руках, а другие дети играли у его ног. Свою основную математическую деятельность Эйлер начал с пуб- ликации множества статей и книги “Механика” (1736-73 гг.), в которой впервые динамика Ньютона подробно представлена в форме математи- ческого анализа. В 1741 г. по приглашению Фридриха Великого Эйлер перешел в Бер- линскую академию наук, где проработал 25 лет. Даже живя в Берлине, он получал часть своего жалования из России и никогда не ладил с Фри- дрихом. За период работы в Берлине он написал свыше 200 статей, три книги по математическому анализу и научно-популярную книгу “Письма ... к некоей немецкой принцессе” в трех томах (1768-72 гг). В 1766 г. Эйлер вернулся в Россию. Он спорил с Фридрихом Вели- ким по поводу академической свободы, и Фридрих был сильно разгневан из-за его отъезда. В возрасте 31 года у Эйлера перестал видеть правый глаз, а после возвращения в Санкт-Петебург Эйлер практически полно- стью ослеп после операции на катаракте. Благодаря своей выдающейся памяти, он смог продолжить исследования по оптике, алгебре и дви- жению Луны. Удивительно, что будучи практически слепым, он после 1765 г. (когда ему было 58) выпустил почти половину всех своих работ. После смерти Эйлера в 1783 г. академия наук Санкт-Петербурга еще в течение 50 лет издавала его ранее неопубликованные работы. Эйлер широко раздвинул границы современной аналитической гео- метрии и тригонометрии. Он внес решающий и формообразующий вклад в геометрию, математический анализ и теорию чисел. Большая работа в области теории чисел проделана им в переписке с Гольдбахом. Эйлер объединил дифференциальное исчисление Лейбница и метод флюксий (производных) Ньютона в математический анализ. В теории чисел он доказал теорему о простых числах и открыл закон биквадратичной вза- имности. Он был наиболее плодовитым математиком всех времен. Его труды составили 886 книг и статей.
418 Приложение С. Некоторые знаменитые математики Именно им введены обозначения f(x) для функции (1734 г.), е для основания натурального логарифма (1727 г.), i для квадратного корня из —1 (1777 г.), тг для числа “пи”, Для суммы (1755 г.), и т.д. Он также ввел бета- и гамма-функции, интегрирующий множитель для дифферен- циальных уравнений и многое другое. Он изучал континуальную механику, теорию движения Луны вме- сте с Клеро, задачу о движении трех тел, теорию упругости, акустику, волновую теорию света, гидравлику, музыку и т.д. Он заложил осно- вы аналитической механики в своей “Теории движения твердых тел” (1765 г.). Сведения взяты на web-странице: http://www-history.mcs.st-and.ac.uk/history/Mathematicians/Euler.html С.З Пьер де Ферма Родился: 17 августа 1601 г. в Бомон-де-Ломань, Франция. Умер: 18 января 1665 г. в Кастре, Франция. Отец Пьера Ферма был богатым торговцем кожей и вторым кон- сулом в Бомон-де-Ломань. У Пьера были брат и две сестры. Он рос в родном городе. Если и есть какие-либо свидетельства его школьного об- разования, то они должны быть в местном францисканском монастыре. Он учился в университете Тулузы до переезда в Бордо во второй по- ловине 1620-х гг. В Бордо он начал свои первые математические иссле- дования и в 1629 г. представил одному из местных математиков копию реставрированной работы Аполлония “Plane Loci”. В Бордо он общался с Бограном. В этод период Ферма выполнил важную работу о максимумах и минимумах, которую затем представил Этьену д‘Эспанье, разделявше- му его математические интересы. Из Бордо Ферма переехал в Орлеан, где изучал юриспруденцию в университете. Он получил степень гражданского юриста и купил место советника парламента Тулузы. Таким образом, с 1631 г. Ферма стал юри- стом и правительственным чиновником и получил право изменить имя с Пьер Ферма на Пьер де Ферма.
С.З. Пьер де Ферма 419 Остаток своей жизни он прожил в Тулузе. Он работал в Тулузе, в своем родном городе Бомон-де-Ломань и соседнем городе К астре. С 14 мая 1631 г., момента своего назначения, Ферма работал в нижней палате парламента, 16 января 1638 г. он был назначен в верхнюю палату, а, затем, в 1652 г., выдвинулся на высший уровень в криминальном суде. Дальнейшее быстрое продвижение по службе, по-видимому, объясняется его возрастом и эпидемией чумы, поразившей регион в начале 1650-х гг. и приведшей к гибели множества стариков. Ферма и сам тоже заразился, и в 1653 г. появилось ошибочное сообщение о его смерти. Затем оно было исправлено: Ранее я сообщил тебе о смерти Ферма. Он жив, и мы больше не беспокоимся за его здоровье, хотя еще недавно мы считали его мерт- вым. Следующее сообщение, отправленное Кольберу, значимой фигуре во Франции того времени, абсолютно справедливо: Ферма — человек большой эрудиции, общающийся с широко образо- ванными людьми. Но он сильно чем-то поглощен, не сообьцает доста- точных подробностей и ошибается. Разумеется, Ферма был поглощен математикой. Он поддерживал ма- тематическое общение с Бограном и после переезда в Тулузу, кроме того, там он нашел нового интересующегося математикой друга — Каркави. Они познакомились на работе. Каркави, как и Ферма, был муниципаль- ным чиновником в Тулузе, и разделял его любовь к математике. Ферма рассказывал Каркави о своих математических открытиях. В 1636 г. Каркави переехал в Париж в качестве королевского биб- лиотекаря и познакомился с Мерсенном и его группой. Каркави вызвал интерес Мерсенна описаниями открытий Ферма в области падения тел, и Мерсенн написал Ферма. Ферма откликнулся 26 апреля 1636 г. и, вдо- бавок, сообщил Мерсенну об ошибках, которые, как ему казалось, сде- лал Галилей при описании свободного падения. Кроме того, он сообщил Мерсенну о своей работе, касающейся спиралей, и о реставрации рабо- ты Аполлония “Plane Loci”. Его работа о спиралях была мотивирована рассмотрением траекторий свободно падающих тел. В ней он для вы- числения площади под спиралью обобщил и применил метод из работы Архимеда “О спиралях”. В дополнение Ферма написал: Я также обнаружил множество способов решения различных тео- ретико-числовых и геометрических задач, для которых не достаточно техники Виета. Я поделюсь этим с вами, как только вы этого поже- лаете, причем сделаю это безо всякого честолюбия, от которого я более свободен и более далек, чем любой другой человек на свете. Есть некая ирония судьбы в том, что этот первоначальный контакт Ферма с научным сообществом произошел на почве исследований свобод-
420 Приложение С. Некоторые знаменитые математики ного падения, так как Ферма проявлял весьма незначительный интерес к физическим приложениям математики. Даже излагая свои результаты о свободно падающих телах, он больше интересовался доказательством геометрических теорем, нежели их связью с реальным миром. Кроме того, это первое письмо содержало две задачи на максимумы, которые Ферма попросил Мерсенна передать парижским математикам. Это стало обычным стилем писем Ферма: он предлагал другим получить те резуль- таты, которые он сам уже получил. Роберваль и Мерсенн обнаружили, что задачи Ферма в первом и в последующих письмах крайне сложны и обычно не решаются с исполь- зованием известных способов. Они попросили его раскрыть свои методы, и Ферма переслал парижским математикам “Метод определения макси- мумов и минимумов и построения касательных к кривым”, реставри- рованную работу Аполлония “Plane Loci” и свой алгебраический подход к геометрии, содержащийся в работах “Введение в плоскость” и “Solid Loci”. У него быстро появилась репутация одного из ведущих математиков мира, но попытки издать его работы оказывались в основном неудач- ными из-за того, что он сам никогда не имел особого желания их пуб- ликовать. Тем не менее некоторые из его методов были опубликованы. Так, например, Эригон к своему главному труду “Математика круга” добавил приложение, содержащее метод Ферма для определения макси- мумов и минимумов. Переписка между Ферма и другими математиками вызывала не только похвалы в его адрес. Франк де Бесси был раздражен задачами Ферма, казавшимися ему неразрешимыми. Рассерженный, он написал Ферма, и хотя Ферма в своем ответе сообщил некоторые допол- нительные детали, Франк де Бесси почувствовал, что Ферма над ним почти издевается. Однако, вскоре Ферма начал вступать в спор с более заметными ма- тематиками, чем Франк де Бесси. Получив от Бограна копию работы Декарта “Диоптрика”, Ферма не обратил на нее заметного внимания, поскольку был занят перепиской с Робервалем и Этьенном Паскалем о методах интегрирования и их применении при нахождении центра тяже- сти. Мерсенн попросил его высказать свое мнение по поводу “Диоптри- ки”, и Ферма охарактеризовал эту работу как блуждание наощупь в темноте. Он объявил, что Декарт неверно вывел законы преломления из-за то- го, что опирался на неверные предположения. Можно сказать, что Де- карту не слишком понравилась такая оценка. Вскоре у Декарта появил- ся повод для еще большей обиды, поскольку он обнаружил, что работа Ферма о максимумах, минимумах и построении касательных принизила важность его собственной работы “Геометрия”, которой Декарт больше всего гордился и которой пытался показать, что может дать его “Рас- суждение о методе”.
С.З. Пьер де Ферма 421 Декарт набросился на метод Ферма определения максимумов и ми- нимумов и нахождения касательных. В спор оказались вовлечены Ро- берваль и Этьенн Паскаль, а затем и Дезарг, которого Декарт попросил быть арбитром. Ферма привел корректное доказательство и, наконец, Декарт признал его правоту, написав: ... рассмотрев последний метод, который вы используете для по- строения касательных к кривым, я не могу сказать ничего другого кро- ме того, что он очень хорош, и, что если бы вы с самого начала обос- новывали его так, я бы вообще не стал с вами спорить. Может на этом дело кончилось, и положение Ферма укрепилось? Отнюдь, поскольку Декарт по-прежнему пытался навредить репутации Ферма. Например, хотя он, написав Ферма, похвалил его работу по опре- делению касательной к циклоиде (которая и на самом деле верная), на- писав Мерсенну, Декарт объявил эту работу ошибочной, и сказал, что Ферма неадекватен как математик и как мыслитель. Декарт был весь- ма уважаем, поэтому он мог весьма существенно навредить репутации Ферма. В период с 1643 по 1654 гг. Ферма прервал контакт со своими па- рижскими научными коллегами. Для этого было несколько причин. Во- первых, нагрузка на1 работе не позволяла ему посвящать много времени математике. Во-вторых, с 1648 г. в Тулузе стало сказываться заметное влияние фронды и гражданской войны во Франции. И, наконец, чума 1651 г. привела к тяжелым последствиям как для Тулузы, так и для самого Ферма. Тем не менее в течение всего этого времени Ферма про- должал исследования в теории чисел. Ферма наиболее известен своими работами в теории чисел, в частно- сти, благодаря последней (большой) теореме Ферма. Эта теорема утвер- ждает, что уравнение хп + уп — zn относительно неизвестных х, у и z не имеет ненулевых целочисленных решений при п > 2. Ферма написал па полях “Арифметики” Диофанта в переводе Баше: Я нашел воистину замечательное доказательство, по эти поля слишком малы, чтобы его вместить. Это замечание на полях стало известно после того, как сын Ферма Самюэль в 1670 г. опубликовал перевод Баше “Арифметики” Диофанта с замечаниями отца. Теперь считается, что “доказательство” Ферма было ошибочным, хо- тя невозможно утверждать этого наверняка. Истинность утверждения Ферма была доказана в июне 1993 г. британским математиком Эндрю Уайлсом, но в конце 1993 г., когда появились проблемы, Уайлс объявил, что у него нет доказательства. В ноябре 1994 г. Уайлс вновь объявил, что нашел верное доказательство, которое теперь общепризнано. Неудачные попытки доказательства теоремы в течение более, чем 300 лет, привели к открытию теории коммутативных колец и изобилию дру- гих математических открытий.
422 Приложение С. Некоторые знаменитые математики Переписка Ферма с парижскими математиками возобновилась в 1654 г., когда Блэз Паскаль, сын Этьенна Паскаля, написал ему, попро- сив подтвердить его мысли о вероятности. Блэз Паскаль знал о Ферма от своего отца, который умер за три года до этого, и был прекрасно осведом- лен о выдающихся математических способностях Ферма. В их короткой переписке были заложены основы теории вероятностей, поэтому их дво- их теперь считают основателями этой теории. Ферма же, чувствуя свою изоляцию и желая вновь вернуться к своему привычному стилю общения с математиками, с вызовом попытался изменить тему с вероятности на теорию чисел. Паскаль не заинтересовался, но Ферма, не понимая этого, написал Каркави следующее: Я рад возможности ознакомиться с мнениями, согласующимися с мнением г. Паскаля, так как я бесконечно уважаю его гений... вы двое можете быть уверены, что в публикации, в которой я согласился с вашим руководством, вы можете прояснять и дополнять все, что бы ни показалось вам слишком кратким, этим вы снимете с меня тот труд, за который мне не дают взяться мои служебные обязанности. Однако Паскаль совершенно не собирался редактировать работу Фер- ма, и после этого короткого сообщения о желании опубликовать свою работу Ферма вновь отказался от этой идеи. После этого он пошел еще дальше в постановке своих задач: Две математические задачи, считающиеся французскими, англий- скими, голландскими и другими европейскими математиками нереша- емыми, поставлены господином де Ферма, королевским советником в парламенте Тулузы. Его задачи не вызвали слишком большого интереса, поскольку боль- шинство математиков не считали теорию чисел важной темой. Тем не менее вторая из задач, состоящая в том, чтобы найти все целые решения уравнения N х2 + 1 = у2 для N, не являющегося точным квадратом, была решена Уоллисом и Браункером. В процессе решения они развили теорию цепных дробей. Браункер дал рациональные решения, которые привели к спорам. Вероятно, Фрэнк де Бесси был единственным мате- матиком того времени, проявившим реальный интерес к теории чисел, но он не обладал математическими талантами, достаточными для того, чтобы внести значительный вклад в эту теорию. Ферма продолжал ставить задачи, а именно, что сумма двух кубов не может быть кубом (это частный случай большой теоремы Ферма, который может указывать, что в то время Ферма понял, что его дока- зательство общего результата содержит ошибку), что сущетсвует ровно два целых решения уравнения х2 + 4 = у, и что уравнение х2 + 2 = у3 имеет ровно одно целочисленное решение. Он ставил задачи прямо на английском. Никто не замечал, что Ферма надеялся, что его узко сфор- мулированные задачи могут привести к открытию более глубоких тео- ретических результатов.
С.З. Пьер де Ферма 423 В это время один из студентов Декарта, собиравший его письма для издания, обратился к Ферма с просьбой ознакомиться с перепиской меж- ду Ферма и Декартом. Это заставило Ферма вновь вспомнить свои аргу- менты, использованные 20 лет назад, и свои возражения к оптике Декар- та. В частности, он был недоволен тем, как Декарт описывал преломле- ние света. Теперь же он был согласен с законом синусов для преломления светового луча, предложенным Снеллом и Декартом. Однако Ферма те- перь и сам вывел этот закон из более общего свойства света, а именно, из того, что свет всегда распространяется по кратчайшему пути. В то вре- мя этот принцип Ферма, теперь ставший одним из основополагающих оптических свойств, не нашел одобрения у математиков. В 1656 г. Ферма начал переписываться с Гюйгенсом. Это произошло из-за интереса Гюйгенса к вероятности, но вскоре стараниями Ферма в переписке возникла тема теории чисел. Эта тема не интересовала Гюй- генса, но Ферма очень старался его увлечь, и в посланном в 1659 г. Гюй- генсу через Каркави “Новом отчете об открытиях в науке о числах” он раскрыл существенно больше своих методов, чем обычно. Ферма описал свой метод бесконечного спуска и представил пример его использования в доказательстве того, что каждое число вида 4k 4- 1 может быть записано в виде суммы двух квадратов. Допустив, что неко- торое число вида 4k +1 не может быть записано в виде суммы двух квад- ратов, он утверждал, что найдется меньшее число вида 4k 4- 1, которое тоже нельзя представить в виде суммы двух квадратов. Последователь- ное использование этого аргумента ведет к противоречию. В этом письме Ферма не объяснил, как меньшее число строится из большего. Предпо- лагают, что Ферма знал, как сделать этот шаг, но вновь его нежелание представить свой метод вызвало потерю интереса к этому со стороны математиков. Интерес не появлялся до тех пор, пока Эйлер не взялся за эти задачи и не заполнил недостающие шаги. Ферма описывают так: Скрытный и молчаливый, он не любит говорить о себе и ненавидит, раскрывать свои мысли. ... Его мысли, хотя оригинальные и новые, на- ходились в пределах возможностей, ограниченных тем временем /1600- 1650 гг.] и тем местом [Франция]. Карл Б. Бойер гбворил: Признание значения работы Ферма в анализе запоздало, в частно- сти, потому, что он придерживался системы обозначений, изобретен- ной Франсуа Виетом, а они устарели после выхода “Геометрии” Декар- та. Помехи, вызванные неудобными обозначениями, менее жестко ска- зывались в любимой области исследований Ферма — теории чисел, но здесь он не нашел того, кто бы разделил его энтузиазм. Сведения взяты на web-странице: http://www-history.mcs.st-and.ac.uk/history/Mathematicians/Ferma.html
424 Приложение С. Некоторые знаменитые математики С.4 Эварист Галуа Родился: 26 октября 1811 г. в Бур-ля-Рен (около Парижа), Франция. Умер: 31 мая1 1832 г. в Париже, Франция. Известный своим вкладом в теорию групп, Эварист Галуа разрабо- тал метод определения, когда уравнение общего вида разрешимо в ради- калах. Отец Галуа, Никола Габриэль Галуа, и его мать, Аделаида Мари Де- манте, оба были людьми интеллигентными и прекрасно образованными в области философии, классической литературы и религии. Однако ни у кого из членов семьи Галуа не было отмечено каких-либо математиче- ских способностей. Его мать первой учила Эвариста вплоть до его 12- летия. Она учила его греческому, латинскому и религии, при этом она передала сыну свой религиозный скептицизм. Отец Галуа был важным человеком в обществе, и в 1815 г. он был избран мэром Бур-ля-Рен. Определенно первым историческим событием, сыгравшим наиболее важную роль в жизни Галуа, был штурм Бастилии 14 июля 1789 г. С этого момента у монархии Людовика XVI возникли большие трудности, поскольку большинство французов уладили свои разногласия и объеди- нились в попытке разрушить привилегированные учреждения церкви и государства. Не пойдя на компромисс, Людовик XVI был осужден после попыт- ки бежать из страны. После казни короля 21 января 1793 г. установи- лось царство террора со множеством политических процессов. К концу 1793 г. в Париже было уже 4595 политических заключенных. Позднее для Франции наступили времена получше, когда ее армии под командо- ванием Наполеона Бонапарта одерживали одну победу за другой. Наполеон в 1800 г. стал первым консулом, а затем, в 1804 г. импера- тором. Французские армии продолжали покорение Европы, а вместе с этим власть Наполеона все более усиливалась. В 1811 г. власть Наполео- на достигла своего пика. К 1815 г. правление Наполеона закончилось. За 1По БСЭ дата смерти — 30 мая. — Прим. ред.
С. 4. Эварист Галуа 425 разгромом в русской кампании следовали новые поражения, и 31 марта 1814 г. союзные войска вошли в Париж. 6 апреля Наполеон отрекся от престола, и союзники возвели на французский трон Людовик XVIII. В 1815 г. мир увидел знаменитые сто дней Наполеона. Он вошел в Париж 20 марта, был разбит под Ватерлоо 18 июня и вновь отрекся от престола 22 июня. Людовик XVIII вновь стал королем. Он умер в сентябре 1824 г., после чего новым королем стал Карл X. Галуа в это время учился в школе. 6 октября 1823 г. он был при- нят в 4-й класс лицея Луи-ле-Гран. Во время первого семестра его уче- бы произошло небольшое восстание, и 40 учеников были исключены из школы. Галуа в этом не участвовал. В течение 1824-25 гг. его обучение шло успешно, и он даже получил несколько премий. Однако в 1826 г. ему предложили остаться на второй год, поскольку его успеваемость по риторике не достигала требуемого уровня. Февраль 1827 г. стал поворотной точкой в жизни Галуа. Он был при- нят в свой первый математический класс — класс М. Верньс. Математи- ка быстро его захватила, и вскоре руководитель его обучения писан: Им завладела страсть к математике. Я думаю, что для пего было бы лучше, если бы его родители позволили ему учиться одной только математике. Он тратит все свое время на это и не занимается ничем другим, тем самым мучая учителей и обрекая себя на наказания. Школьные записи стали характеризовать Галуа как странного, экс- центричного, оригинального и замкнутого человека. Интересно, что большинство когда-либо живших выдающихся математиков подверга- лись критике за оригинальность. Однако М. Верпье сообщал о Галуа: Смышленный, делающий успехи, но недостаточно последователь- ный. В 1828 г. Галуа сдавал экзамены в Политехническую школу, но про- валился. Это был ведущий университет Парижа, и Галуа хотел посту- пить туда по академическим соображениям. Кроме того, в то время в этом университете существовало сильное политическое движение, и Га- луа, будучи по примеру своих родителей ярым республиканцем, желал в этом движении поучаствовать. Вернувшись в Луи-ле-Гран, Галуа записался в математический класс Луи Ришара. Однако он все больше вел собственные исследования и все меньше времени посвящал школьным занятиям. Он изучил “Геометрию” Лежандра и трактаты Лагранжа. Как писал Ришар, Этот студент работает только в высших сферах математики. В апреле 1829 г. Галуа опубликовал свою первую работу о цепных дробях в “Математических хрониках”. 25 мая и 1 июня он представил статьи о решениях алгебраических уравнений в Академию наук. Рецен- зентом этих статей был назначен Коши.
426 Приложение С. Некоторые знаменитые математики 2 июля 1828 г. отец Галуа покончил с собой. Эта трагедия сильно ударила по сыну. Священник Бур-ля-Рен подделал имя мэра Галуа на злобных сфабрикованных эпиграммах, направленных против собствен- ных родственников Галуа. Отец Галуа был человеком мягким, и гаран- тированный этими эпиграммами скандал был за пределами того, что он мог вынести. Он наложил на себя руки в своей парижской квартире всего в нескольких шагах от Луи-ле-Гран, где учился его сын. Смерть отца глубоко подействовала на Галуа и оказала огромное влияние на его дальнейшую жизнь. Через несколько недель после смерти отца Галуа вновь попытался поступить в Политехническую школу и вновь неудачно. Он провалился вторично частью из-за того, что находился в наихудшей жизненной ситу- ации, связанной с недавней смертью отца, частью из-за того, что никогда не мог хорошо объяснить суть своих глубоких математических идей. Из- за этого провала Галуа пришлось поступить в Нормальную школу, кото- рая была дополнением к Луи-ле-Гран, и при этом еще сдавать экзамены на бакалавра, которых он мог бы избежать, поступив в Политехническую школу. Он сдал экзамены удачно и получил степень 29 декабря 1829 г. Его экзаменатор по математике сообщает: Иногда этот ученик невразумительно выражает свои идеи, но он умен и демонстрирует замечательный дух исследования. Его экзаменатор по литературе сообщает: Это единственный студент, ответивший мне плохо, он абсолютно ничего не знает. Мне сказали, что у него экстраординарные способно- сти к математике. Это меня крайне удивило, поскольку после экзаме- на я считал его не слишком умным. Галуа послал Коши следующую работу по теории уравнений, ио затем узнал из “Бюллетеня де Ферюссак” о посмертной статье Абеля, которая покрывала часть его работы. По совету Коши он подал в феврале 1830 г. на рассмотрение новую статью “Об условиях разрешимости уравнений в радикалах”. Статья была послана Фурье, секретарю академии, для рас- смотрения на Гран При в математике. В апреле 1830 г. Фурье умер, статья была утеряна, поэтому она никогда не участвовала в конкурсе на этот приз. После прочтения работ Абеля и Якоби Галуа работал в теории эллип- тических функций и абелевых интегралов. При поддержке Жака Штур- ма он опубликовал три статьи в “Бюллетене де Феррюссак” в апреле 1830 г. Однако в июне он узнал, что приз академии будет присужден совместно Абелю (посмертно) и Якоби, а его собственная работа не рас- сматривалась. В июле 1830 г. произошла революция. Карл X бежал из Франции. На улицах Парижа начались волнения, директор Нормальной школы, М. Гиньо, запер студентов, чтобы не допустить их участия в этом. Галуа
С.4. Эварист Галуа 427 пытался перелезть через стену, чтобы принять участие в восстании, но не смог. В декабре 1830 г. М. Гиньо написал газетную статью с нападка- ми на студентов. Галуа написал в Школьной газете ответ с обвинениями М. Гиньо за то, что тот запер студентов в школе. За это письмо Галуа был исключен и пошел на службу в артиллерию национальной гвардии, республиканскую часть милиции. В декабре 1830 г. артиллерия нацио- нальной гвардии была ликвидирована королевским указом, поскольку новый король Луи Филипп чувствовал, что она угрожает его трону. Две маленьких публикации: тезисы в “Хрониках Жергонна” (декабрь 1830 г.) и письмо на тему научного обучения в “Школьной газете”, были последними в жизни Галуа. В январе 1831 г. Галуа попытался вернуться к математике. Он организовал математические классы по высшей алгеб- ре, что привлекло на первое собрание 40 студентов. После этой встречи число студентов быстро уменьшилось. Пуассон предложил Галуа пред- ставить в академию третий вариант его статьи об уравнениях, и Галуа сделал это 17 января. 18 апреля Софи Жермен написала письмо своему другу — матема- тику Либри, в котором описала положение Галуа. ... смерть М. Фурье слишком много значила для этого студента Галуа, который, несмотря на свою дерзость, демонстрирует призна- ки таланта. Все это так сильно повлияло, что он был исключен из Нормальной школы. Он остался без средств... Говорят, что он скоро сойдет с ума. Боюсь, что это правда. В конце 1830 г. 19 офицеров артиллерии национальной гвардии бы- ли арестованы и обвинены в заговоре с целью свержения правительства. Они были оправданы, и 9 мая 1831 г. 200 республиканцев собрались на праздничный обед по случаю их оправдания. Во время обеда Галуа под- нял свой бокал и с кинжалом в руке высказал угрозу в адрес короля Луи Филиппа. После обеда Галуа был арестован и брошен в тюрьму Сент-Пелажи. На суде, проходившем 15 июня, его адвокат объявил, что Галуа сказал: Луи Филипп, если ты предашь... а последние слова потонули в шуме. Галуа был оправдан, что весьма удивительно, поскольку он по существу повторил свою угрозу со скамьи подсудимых. В день взятия Бастилии 14 июля Галуа был снова арестован. Он на- дел форму артиллерии национальной гвардии, которая была вне закона. Кроме того он носил заряженное ружье, несколько пистолетов и кин- жал. Его снова отправили в тюрьму Сент-Пелажи. В тюрьме он узнал, что его статья отклонена. Пуассон сообщал: Его аргументы недостаточно ясны и недостаточно развиты, чтобы мы могли считать их строгими.
428 Приложение С. Некоторые знаменитые математики Однако он выразил поддержку Галуа в деле публикации более пол- ного доклада об этой работе. В тюрьме Сент-Пелажи Галуа пытался со- вершить самоубийство, заколов себя кинжалом, но другие заключенные помешали ему. Напившись в тюрьме, он излил свою душу: Знаешь, как мне не хватает друга? Я только тебе это доверю: мне нужно полюбить кого-нибудь, но только всей душой. Я потерял отца, и никто мне его некогда не заменит, слышишь? В марте 1832 г. эпидемия холеры поразила Париж и заключенных и Галуа в том числе. Он был переведен в больницу Сью Фолтрие. Там он влюбился в Стефани-Фелицию дю Мотель, дочь местного врача. После освобождения Галуа 29 апреля они со Стефани обменялись письмами, и стало ясно, что она пытается сохранить дистанцию. Имя Стефани несколько раз появлялось на полях одной из рукописей Галуа. Галуа дрался на дуэли с Пеше д’Эрбенвилем 30 мая. Смысл дуэли не до конца ясен, но определенно как-то связан со Стефани. На полях своей рукописи в ночь перед дуэлью Галуа написал: Требуется еще кое-что, чтобы закончить это доказательство. У меня нет на это времени. (Замечание автора). Это породило легенду о том, что он провел свою последнюю ночь, за- писывая все, что знает о теории групп. Эта история кажется некоторым преувеличением. Галуа был ранен на дуэли и брошен и д’Эрбенвилем, и своими секун- дантами. Его нашел крестьянин. Галуа умер 31 мая в госпитале Кошен. Его похороны состоялись 2 июня. Это стало поводом для сплочения рес- публиканцев и волнений, продолжавшихся несколько дней. Брат Галуа и его друг Шевалье скопировали его математические ста- тьи и разослали их Гауссу, Якоби и другим. Желанием Галуа было то, чтобы Якоби и Гаусс высказали свои мнения о его работе. Нет никаких записей, свидетельствующих о том, что они это сделали. Однако статьи получил и Лиувилль. В сентябре 1843 г. он анонсировал в академии, что нашел в статьях Галуа сжатое решение ... верное и глубокое для этой милой задачи: как по данному непри- водимому уравнению простой степени установить, имеет, ли оно ре- шение в радикалах. Лиувилль опубликовал эти статьи Галуа в своем журнале в 1846 г. Сведения взяты на web-странице: http://www-history.mcs.st-and.ac.uk/history/Mathematicians/Galois.html
С. 5. Иоганн Карл Фридрих Гаусс 429 С.5 Иоганн Карл Фридрих Гаусс Родился: 30 апреля 1777 г. в Брауншвейге, герцогство Брауншвейг (теперь Германия). Умер: 23 февраля 1855 г. в Гёттингене, Ганновер (теперь Германия). Карл Фридрих Гаусс работал в большом числе областей матема- тики и физики, среди которых теория чисел, анализ, дифференциальная геометрия, геодезия, магнетизм, астрономия и оптика. Его работы ока- зали огромное влияние на многие области. В возрасте семи лет Карл Фридрих начал учиться в начальной школе, и почти сразу его потенциал был замечен. Его учитель, Бюттнер вместе со своим ассистентом Мартином Бартелсом были изумлены тем, как он мгновенно сложил целые числа от 1 до 100, разбив их па 50 пар, в каждой из которых сумма равна 101. В 1788 г. Гаусс при помощи Бюттнера и Бартелса начал учиться в гимназии, где он обучался немецкому и латыни. После получения сти- пендии от герцога Брауншвейга — Вольфенбюттеля, Гаусс поступил в 1792 г. в королевский колледж Брауншвейга. В академии Гаусс незави- симо открыл закон Боде, биномиальную теорему, и неравенство меж- ду средним геометрическим и средним арифметическим, а также закон квадратичной взаимности и теорему о простых числах. В 1795 г. Гаусс покинул колледж Брауншвейга, чтобы учиться в Гёт- тингенском университете. Там учителем Гаусса был Кестнер, которого Гаусс часто осмеивал. Единственным известным его другом среди сту- дентов был Фаркаш Бойяи. Они встретились в 1799 г. и многие годы переписывались друг с другом. В 1798 г. Гаусс покинул Гёттинген без диплома. Но в это время он сде- лал одно из наиболее важных своих открытий — способ построения пра- вильного 17-угольника с помощью циркуля и линейки. Это было главное достижение в этой области со времен греческих математиков. Оно было опубликовано как глава VII известной работы Гаусса “Арифметические исследования”.
430 Приложение С. Некоторые знаменитые математики В 1799 г. Гаусс вернулся в колледж Брауншвейга, где получил сте- пень. После того как герцог Брауншвейга согласился продолжить вы- плату стипендии Гауссу, он попросил, чтобы Гаусс представил свою док- торскую диссертацию в университет Хелмстедта. К тому времени Гаусс уже был знаком с Пфаффом, который был выбран на роль его научно- го руководителя. В диссертации Гаусса обсуждались фундаментальные теоремы алгебры. Благодаря поддерживающей его стипендии, у Гаусса не было необхо- димости в поиске работы, и он мог целиком посвятить себя исследова- ниям. Летом 1801 г. он опубликовал книгу “Арифметические исследова- ния”. В ней было семь глав и все, за исключением последней, упоминав- шейся выше, были посвящены теории чисел. В июне 1801 г. астроном Зах, с которым Гаусс познакомился за два или три года до этого, опубликовал орбитальные положения Цереры, но- вого астероида, который был открыт 1 января 1801 г. итальянским аст- рономом Г. Пиацци. К несчастью, Пиацци имел возможность наблюдать только 9 градусов ее орбиты перед тем, как она скрылась за Солнцем. Зах опубликовал несколько предсказаных им ее положений, в том числе и одно, сильно отличающееся от остальных, предсказанное ранее Гаус- сом. 7 декабря 1801 г. Зах переоткрыл Цереру, наблюдая ее почти в том месте, где предсказывал Гаусс. Гаусс использовал для этого предсказа- ния аппроксимацию своим методом наименьших квадратов, хотя в то время он еще не раскрывал этот способ. В июне 1802 г. Гаусс посетил Олберса, открывшего в марте того же года Паллас, и исследовал орбиту этого небесного тела. Олбере попро- сил Гаусса стать директором новой обсерватории Гёттингена, ио этого не произошло. Гаусс начал переписываться с Бесселем, которого он не встречал вплоть до 1825 г., а также с Софи Жермен. 9 октября 1805 г. Гаусс женился на Джоанне Остофф. Так счастливо начавшаяся его личная жизнь была омрачена, когда его благодетель — герцог Брауншвейга — погиб, сражаясь в прусской армии. В 1807 г. Гаусс покинул Брауншвейг, чтобы занять должность директора Гёттингенской обсерватории. Гаусс приехал в Гёттинген в конце 1807 г. В 1808 г. умер его отец, а годом позже умерла жена Гаусса Джоанна после родов их второго сына, который также умер вскоре после нее. Гаусс был совершенно разбит и написал Олберсу, попросив отпустить его домой на несколько недель, чтобы собрать новую силу в руках силу для жизни, которая ценна только потому, что принадлежит трем моим маленьким детям. На следующий год Гаусс женился во второй раз на лучшей подруге Джоанны — Минне, и хотя у них было трое детей, кажется, что эта женитьба вполне подходила Гауссу. Работе Гаусса его личные трагедии никогда не вредили. В 1809 г. он опубликовал свою вторую книгу, “Theoria motus corporum coelestium
С. 5. Иоганн Карл Фридрих Гаусс 431 sectionibus conicis Solem ambientium” (“Теория движения небесных тел”) — главный двухтомный трактат о движении небесных тел. В первом то- ме он обсуждал дифференциальные уравнения, конические сечения и эллиптические орбиты, а во втором томе — главной части работы — он показал, как приближенно рассчитывать орбиты планет, а затем уточ- нять приближение. После 1817 г. работа Гаусса в теоретической астро- номии прекратилась, хотя он продолжал вести наблюдения вплоть до 70-летнего возраста. Много времени Гаусс тратил на новую обсерваторию, строительство которой было завершенно к 1816 г., но он все-таки находил время для работы в других областях. В это время он опубликовал “Disquisitiones generates circa seriem infinitam”— строгое обращение с рядами и введение в гипергеометрические функции, “Methodus nova integralium valores per approximatonem inveniendi” — практический очерк о приближенном ин- тегрировании, “Bestimmung der Genauigkeit der Beobachtungen” — обсуж- дение методов статистических оценок, и “Theoria attractionis corporum sphaeroidicorum ellipticorum homogeneorum methodus nova tractata”. По- следняя работа была вызвана геодезическими проблемами и касалась в основном теории потенциала. В действительности, в 1820-х it. Гаусс все более и более интересовался геодезией. В 1818 г. ему предложили произвести геодезическую съемку коро- левства Ганновер и связать ее с уже существующей картой Дании. Он с радостью принял это предложение и начал самостоятельную работу. Днем он проводил измерения, а ночью их обрабатывал, используя свои выдающиеся умственные способности к вычислениям. Он постоянно пи- сал Шумахеру, Олберсу и Бесселю, рассказывая о своих продвижениях и обсуждая проблемы. В процессе этой съемки Гаусс изобрел гелиотроп, работа которого была основана на отражении солнечных лучей с использованием систе- мы зеркал и маленького телескопа. Однако при съемке использовались неточная основа для линий и неудовлетворительная сеть треугольников. Гаусс часто удивлялся, если ему советовали продолжить другие его за- нятия, но при этом он опубликовал свыше 70 статей между 1820 и 1830 г. В 1822 г. Гаусс получил приз копенгагенского университета за “Theoria attractionis...” и идею отображения одного пространства на другое с со- хранением локального подобия. Эта статья была опубликована в 1825 г. и привела к значительно более поздней публикации “Untersuchungen iiber Genenstande Hogeren Geoddsie” (1843 и 1846 гг.). Статья “Theoria combina- tionis observatorium erroribus minimus obnoxiae” (1823 г.) с дополнением (1828 г.) посвящена математической статистике, и, в частности, методу наименьших квадратов. С начала 1800-х гг. Гаусс заинтересовался вопросом о возможности существования неэвклидовой геометрии. Он подробно обсуждал эту те- му с Фаркашем Бойяи и в своей переписке с Герлингом и Шумахером. В 1816 г. в литературном обзоре он обсуждал доказательства выводимости
432 Приложение С. Некоторые знаменитые математики аксиомы параллельности из остальных акиом Эвклида. Возможно, что он предполагал существование неэвклидовых геометрий, хотя и весьма неуверенно. Он доверился Шумахеру, сообщив ему, что боится за свою репутацию в том случае, если публично признает, что верит в существо- вание такой геометрии. В 1831 г. Фаркаш Бойяи прислал Гауссу работу своего сына Яиоса Бойяи на эту тему. Гаусс ответил хвалить эту работу — означало бы хвалить себя. Десятилетием позже, когда ему сообщили о работе Лобачевского на эту тему, он похвалил ее “подлинно геометрический” характер, а в письме Шумахеру в 1846 г., утверждал, что он 54 года был убежден в этом, показав тем самым, что он знал о существовании неэвклидовой геомет- рии с 15-летнего возраста (это кажется невероятным). У Гаусса был большой интерес к дифференциальной геометрии. Он опубликовал множество статей в этой области. “Disquisitiones generates circa superficies curva” (1828 г.) была наиболее знаменитой его работой на эту тему. На самом деле эта статья возникла из его геодезических интере- сов, но в ней содержатся и геометрические идеи, в частности, идея гаус- совой кривизны. Эта статья также включает в себя “Theorema Egregium” Гаусса: Если область из Е3 можно изометрично отобразить в другую об- ласть из Е3, то значения гауссовой кривизны в соответствующих точках будут одинаковы. Период 1817-1832 гг. был особенно горестным временем для Гаусса. В 1817 г. он взял к себе свою больную мать, и она жила с ним вплоть до своей смерти в 1839 г. Все это время он спорил со своей женой и ее родственниками о том, стоит ли им переехать жить в Берлин. Ему пред- ложили место в Берлинском университете, и Минна и ее родственники сильно хотели переехать в Берлин. Однако Гаусс не любил перемен и решил остаться Гёттингене. В 1831 г. вторая жена Гаусса умерла после длительной болезни. В 1831 г. в Гёттингене появился Вильгельм Вебер, он стал профес- сором физики кафедры Тобиаса Майера. Гаусс знал Вебера с 1828 г. и поддержал его назначение. Гаусс работал в области физики до 1831 г., опубликовав “Uber ein neues allgemeines Grungesetz der Mechanik”, где содержится принцип наименьшего принуждения, и “Principia generalia theoriae figurae fluidorum in statu aequilibrii”, где обсуждаются силы тя- готения. Эти статьи основаны на гауссовой теории потенциала, проде- монстрировавшей свою огромную важность в его физических работах. Позднее Гаусс пришел к убеждению в том, что его теория потенциала и его метод наименьших квадратов обеспечивают жизненную связь между наукой и природой.
С. 5. Иоганн Карл Фридрих Гаусс 433 В 1832 г. Гаусс и Вебер начали исследования теории земного маг- нетизма после того, как Александр фон Гумбольдт обратился к Гаус- су за помощью в создании на Земле сети пунктов наблюдения за маг- нитными явлениями. Гаусс был захвачен этим проектом, и к 1840 г. он написал три важных статьи на эту тему: “Intensitas vis magneticae terrestris ad mensuram absolutam revocata” (1832 r.), “Allgemeine Theorie des Erdmagnetismus” (1839 г.) и “Allgemeine Lehrsatze in Beziehung auf die im verkehtren Verhaltnisse des Quadrats der Entfernung wirkenden Anziehungs- und Abstossungskrdfte” (1840 г.). Все эти статьи были посвя- щены теориям земного магнетизма того времени, включая идеи Пуассо- на, абсолютное измерение магнитной силы и эмпирическое определение земного магнетизма. Принцип Дирихле был упомянут без доказатель- ства. В работе “Allgemeine Theorie...” показано, что земной шар может иметь только два полюса, и продолжено доказательство важной теоре- мы, касающейся определения интенсивности горизонтальной компонен- ты магнитной силы вместе с углом наклона. Гаусс применил уравнение Лапласа, которое помогло ему в его вычислениях, и завершил определе- ние точного местоположения южного магнитного полюса. Гумбольдт изобрел календарь для наблюдений за магнитным скло- нением. Когда была построена новая магнитная обсерватория Гаусса (стройка завершена в 1833 г. без применения каких-либо магнитных ме- таллов), Гаусс видоизменил многие из процедур Гумбольдта, что тому очень не понравилось. Однако внесенные Гауссом изменения позволили ему получать более точные результаты с меньшим числом ошибок. За шесть лет Гаусс и Вебер вместе многого достигли. Они открыли законы Кирхгофа, построили примитивный телеграф, который мог пере- сылать сообщения на расстояние в 1.5 километра. Однако для Гаусса все это было лишь развлечением. Его более интересовала задача создания всемирной сети точек наблюдения за магнитными явлениями. Это заня- тие привело ко многим конкретным результатам. Было основано обще- ство Magnetischer Verein и его журнал. Был издан атлас геомагнетизма. Гаусс и Вебер издавали и собственный журнал, в котором публиковали собственные результаты с 1836 по 1841 гг. В 1837 г. Вебер был вынужден покинуть Гёттинген, после того как он вмешался в политический спор, и с этого момента активность Гаусса начала постепенно снижаться. Он продолжал писать письма в ответ на открытия своих ученых коллег, при этом обычно добавляя, что методы ему давно известны, но он не чуствовал необходимости их публиковать. Иногда он с большой похвалой отзывался о продвижениях, сделанных другими математиками, в частности, Эйзенштейном и Лобачевским. С 1845 по 1851 гг. Гаусс работал в фонде вдовцов Гёттингенского университета. Эта работа дала ему практический опыт проведения фи- нансовых операций, и он продолжал успешно инвестировать средства в финансовые обязательства частных компаний.
434 Приложение С. Некоторые знаменитые математики Двумя последними докторантами Гаусса были Морис Кантор и Де- декинд. Дедекинд оставил прекрасное описание своего научного руково- дителя ... обычно он сидел в удобной позе, глядя вниз, слегка сутулясь, со сложенными на коленях руками. Он говорил совершенно свободно, очень ясно, просто и понятно, но если он хотел выделить новую точку зре- ния ..., то он поднимал голову, поворачивался к одному из тех, кто был рядом, и пристально смотрел на него пронзительным взглядом своих голубых глаз, произнося выразительную речь. ... Если он пере- ходил от объяснения принципов к написанию математических формул, то он вставал и, стоя абсолютно прямо, писал на доске, расположен- ной позади него, своим особенным великолепным почерком. При этом он достигал нужной ему цели экономно и продуманно, используя до- вольно мало места. Для корректного приведения численных примеров он приносил нужные данные на маленьких полосках бумаги. В 1849 г. Гаусс прочитал лекцию в честь своего золотого юбилея — пятидесятилетия с момента, когда за его дипломную работу ему был предоставлен грант университета Хелмстедта. Лекция посвящалась из- менениям в его диссертации 1799 г. Из математического сообщества при- сутствовали только Якоби и Дирихле, но Гаусс получил множество по- здравлений. С 1850 г. деятельность Гаусса вновь почти целиком лежала в практи- ческой плоскости, хотя он улучшил докторскую диссертацию Римана и выслушал его пробную лекцию. Последняя его известная научная пере- писка — это переписка с Герлингом. В 1854 г. они обсуждали модифици- рованный маятник Фуко. Он также занимался вопросом открытия новой железнодорожной связи между Ганновером и Гёттингеном, но это был его последний выход в общество. Его здоровье медленно ухудшалось, и ранним утром 23 февраля 1855 г. Гаусс умер во сне. Сведения взяты на web-странице: http://www-history.mcs.st-and.ac.uk/history/Mathematicians/Gauss.html С.6 Карл Густав Якоб Якоби Родился: 10 декабря 1804 г. в Потсдаме, Пруссия (теперь Германия). Умер: 18 февраля 1851 г. в Берлине, Германия. Карл Якоби основал теорию эллиптических функций. Якоби рос в преуспевающей семье банкира. Он получил хорошее об- разование в Берлинском университете. В 1825 г. он получил степень док- тора философии. С 1826 г. до своей смерти Якоби преподавал матема- тику в университете Кенигсберга, в 1832 г. он был назначен на кафедру. Он разработал теорию эллиптических функций, основанную на четы- рех тета-функциях. Его работа 1829 г. “Fundamenta nova theoria functio- num ellipticarum” и более поздние дополнения были основным вкладом в теорию эллиптических функций.
С. 7. Адриен-Мари Лежандр 435 В 1834 г. Якоби доказал, что если однозначная функция от одной переменной дважды периодична, то отношение периодов чисто мнимое. Этот результат указал направление для последующих работ в этой об- ласти, в частности, Лиувиллю и Коши. Якоби провел важное исследование дифференциальных уравнений первого порядка в частных производных и применил результат к диф- ференциальным уравнениям динамики. Он также работал с определителями и изучал функциональный опре- делитель, теперь называемый якобианом. Якоби не был первым, кто изу- чал функциональный определитель, носящий теперь его имя, впервые он появился в статье Коши 1815 г. Якоби же в 1841 г. написал монографию “De determinantibus functionalibus”, посвященную этому определителю. Среди прочего он доказал, что если п функций от п переменных функ- ционально зависимы, то якобиан тождественно равен нулю, а если функ- ции независимы, то якобиан не может быть тождественно равен нулю. Репутация великолепного преподавателя привлекала к Якоби многих студентов. Он ввел метод семинаров для обучения студентов последним достижениям в математике. Сведения взяты на web-странице: http://www-history.mcs.st-and.ac.uk/history/Mathematicians/Jacobi.html С.7 Адриен-Мари Лежандр Родился: 18 сентября 1752 г. в Париже, Франция. Умер: 10 января 1833 г. в Париже, Франция. Основная работа Лежандра об эллиптических интегралах обеспечи- ла математическую физику базовыми аналитическими инструментами. Лежандр учился в колледже Мазарини в Париже. С 1775 по 1780 гг. он преподавал вместе с Лапласом в Военной школе, куда был назначен по совету д‘Аламбера. В 1783 г. Лежандр был назначен в Академию наук и работал там вплоть до ее закрытия в 1793 г.
436 Приложение С. Некоторые знаменитые математики В 1782 г. Лежандр определил силу притяжения для некоторых тел вращения, введя бесконечную серию многочленов Рп, теперь называе- мых многочленами Лежандра. Его главные результаты об эллиптических функциях в работе “Упра- жнения по интегральному исчислению” (1811, 1817, 1819 гг.) и эллип- тических интегралах в работе “Трактат об эллиптических функциях” (1825, 1826, 1830 гг.) предоставили математической физике базовые ана- литические инструменты. В своем известном учебнике “Элементы геометрии” (1794 г.) Ле- жандр дал простое доказательство иррациональности числа тг, кроме 2 того там он впервые доказал, что число тг тоже иррациональное, и вы- сказал предположение, что оно не является даже алгебраическим, то есть не является корнем никакого алгебраического уравнения конечной степени с рациональными коэффициентами. Более 40 лет он пытался доказать аксиому параллельности Эвклида. В 1824 г. Лежандр отказался голосовать за правительственного кан- дидата для Национального института. Из-за этого ему прекратили вы- плату пенсии, и он умер в бедности. В октябре 1826 г. Абель писал: Лежандр черезвычайно любезный человек, но к сожалению он стар, как камни. Сведения взяты на web-странице: http://www-history.mcs.st-and.ac.uk/history/Mathematicians/Legendre.html С.8 Август Фердинанд Мёбиус Родился: 17 ноября 1790 г. в Шульпфорта, Саксония (теперь Герма- ния). Умер: 26 сентября 1868 г. в Лейпциге, Германия. Август Мёбиус более всего известен своими работами в топологии, особенно представлением об односторонней двумерной поверхности — ленте Мёбиуса. '
С.8. Август Фердинанд Мебиус 437 Август был единственным ребенком Иоганна Генриха Мёбиуса — учи- теля танцев, умершего, когда Августу было три года. Его мать была потомком Мартина Лютера. До 13 лет Мёбиус учился дома, а затем в 1803 г., уже демонстрируя интерес к математике, он поступил в колледж в Шульпфорта. В 1809 г. Мёбиус окончил колледж и стал студентом университета города Лейпцига. Его семья желала, чтобы он изучал юриспруденцию, и сначала он так и делал. Однако вскоре он понял, что этот предмет ему не нравится, и в середине первого года обучения он решил действовать в соответствии с собственными предпочтениями, а не желаниями род- ственников. Поэтому он взялся за изучение математики, астрономии и физики. Преподавателем, оказавшим на Мёбиуса наибольшее влияние во вре- мя учебы в Лейпциге, был преподаватель астрономии Карл Молвейде. Хотя Молвейде и был астрономом, он хорошо известен многими мате- матическими открытиями, среди которых, в частности, тригонометри- ческие соотношения Молвейде, открытые в 1807-09 гг., и конформная, то есть сохраняющая углы, картографическая проекция Молвейде. В 1813 г. Мёбиус посетил Гёттинген, где он изучал астрономию под руководством Гаусса. Тогда Гаусс уже был директором обсеватории Гёт- тингена, и, разумеется, величайшим математиком того времени. Таким образом, Мёбиус снова учился у астронома, интересующегося математи- кой. Из Гёттингена Мёбиус прибыл в Галл, где учился у Иоганна Пфаф- фа, учителя Гаусса. Под руководством Пфаффа он занимался математи- кой несколько больше, чем астрономией. Таким образом, па этом этапе Мёбиус много работал в обеих областях. В 1815 г. Мёбиус закончил свою докторскую диссертацию на тему “Затмения неподвижных звезд” и начал работу над новой диссертацией. Известно, что во это время его пытались призвать в прусскую армию. Мёбиус писал: Это самая ужасная идея, услышанная мной, и каждый, кто риск- нет, отважится и наберется смелости мне это предложить, не спа- сется от моего кинжала.
438 Приложение С. Некоторые знаменитые математики Он избежал службы в армии и завершил свою новую диссертацию на тему “Тригонометрические уравнения”. Интерес Молвейде к математике был таким, что он перешел с кафедры астрономии на кафедру матема- тики, таким образом, у Мёбиуса появилась реальная возможность стать профессором астрономии. И действительно, в 1816 г. он был назначен на кафедру астрономии и высшей механики Лейпцигского университета. Первоначально он получил назначение на должность экстраординарного профессора, хотя был довольно молод для такого назначения. Однако Мёбиус не скоро стал полным профессором. Кажется, что он был не особенно хорошим лектором, и это делало его жизнь трудной, поскольку он не мог привлечь на свои лекции студентов, оплачивающих обучение. Он был вынужден объявить свои лекционные курсы бесплат- ными, пока студенты считают его курсы заслуживающими внимания. В 1816 г. Мёбиусу предложили должность астронома в Грейфсвальде, а в 1819 г. — должность математика в Дорпате. Он отказался от обоих предложений, частично из-за своей веры в высокий уровень Лейпциг- ского университета, частично из-за своей верности Саксонии. В 1825 г. умер Молвейде, и Мёбиус надеялся перейти на кафедру математики, повторяя, как и раньше, путь Молвейде. Но этого не произошло, и на освободившееся место был назначен другой математик. В 1844 г. репутация Мёбиуса, как исследователя, послужила причи- ной приглашения из университета города Иена. В это время университет Лейпцига вполне заслуженно сделал его полным профессором астроно- мии. Со времени своего первого назначения в Лейпцигском университете Мёбиус состоял в должности наблюдателя Лейпцигской обсерватории. Он принимал участие в ее перестройке, ас 1818 по 1821 гг. надзирал за этим проектом. Перед тем, как высказать свои рекомендации по поводу новой обсерватории, он посетил несколько других обсерваторий Герма- нии. В 1820 г. он женился. У него было трое детей: двое сыновей и дочь. В 1848 г. он стал директором обсерватории. В 1844 г. Мёбиуса посетил Грассман. Он попросил Мёбиуса дать ре- цензию на его главную работу “Die lineale Ausdehnundslehre, ein neuer Zweig der Mathematik” (1844 г.), содержавшую много результатов, подоб- ных результатам Мёбиуса. Однако Мёбиус не понял значения работы Грассмана и не стал ее рецензировать. Тем не менее он убедил Грассма- на представить работу на конкурс, и после того, как Грассман выиграл приз, Мёбиус в 1847 г. написал рецензию. Хотя наиболее известны работы Мёбиуса по математике, он публи- ковал важные работы и по астрономии. Он написал “De Computandis Occultationibus Fixarium per Planetas” (1815 г.) о затмениях планет. Кро- ме того он написал “Die Hauptsatze der Astronomic” (1836 г.) об основах астрономии и “Die Elemente der Mechanik des Himmels” (1843 г.) о небес- ной механике.
С. 8. Август Фердинанд Мебиус 439 Математические публикации Мёбиуса были, может, и не всегда ори- гинальны, но эффективны и ясно изложены. Его вклад в математику так описан его биографом Ричардом Бальцером: Вдохновение для своих исследований он находил, в основном, в бога- том источнике своего оригинального ума. В его интуиции, в задачах, которые он себе ставил, и в решениях, которые он находил, во всем проявлялась какая-то сверхъестественная изобретательность, нечто оригинальное в каждом ранее известном методе. Он работал спокой- но и без спешки. Его работа практически останавливалась до тех пор, пока каждая вещь не встанет на свое место. Без натиска, без помпез- ности и высокомерия он ожидал, пока не созреют плоды его ума. Только после такого ожидания он публиковал свои совершенные работы... Почти все работы Мёбиуса были опубликованы в “Журнале Крел- ля” — первом журнале, посвященном исключительно математическим статьям. Работа Мёбиуса 1827 г. по аналитической геометрии “Der bary- centrische Calkul” стала классической и включает множество его резуль- татов в проективной и афинной геометрии. В ней он ввел однородные координаты и обсудил геометрические преобразования, в частности, про- ективные трансформации. Он ввел структуру, называемую теперь сетью Мёбиуса, игравшую важную роль в развитии проективной геометрии. Имя Мёбиуса прикрепилось ко многим математическим объектам, таким как “функция Мёбиуса”, которую он ввел в статье 1831 г. “Uber eine besondere Art von Umkehrung der Reihen”, и “формула обращения Мёбиуса”. В 1837 г.он опубликовал работу “Lehrbuch der Statik”, давшую геомет- рическую трактовку статики. Она инициировала изучение систем линий в пространстве. Перед появлением вопроса Франца Гутри о раскраске карты в четыре цвета Мёбиус в 1840 г. сформулировал следующую более простую задачу. У короля было пять сыновей. Повелел он, чтобы после его смерти ко- ролевство было разделено его сыновьями на пять областей так, чтобы каждая область имела общую границу с четырьмя остальными. Мож- но ли выполнить его волю? Ответ, конечно, отрицательный, что легко показать. Но это демон- стрирует интерес Мёбиуса к идеям в топологии — области, пионером которой он считается. В монографии, представленной в академию наук и единственной, обнаруженной после его смерти, он обсуждал свойства односторонних поверхностей, в том числе и ленты Мёбиуса, которую он открыл в 1858 г. Это открытие было сделано Мёбиусом, когда он работал над вопросом создания геометрической теории многогранников, постав- ленным Парижской академией. На самом деле первым, кто описал объект, называемый теперь лентой Мёбиуса, был не Мёбиус, а Листинг, по каким бы критериям не оценивать первенство, хоть по дате публикации, хоть по дате первого открытия.
440 Приложение С. Некоторые знаменитые математики Лента Мёбиуса — это двумерная поверхность с одной стороной. Ее можно сконструировать в трех измерениях следующим образом. Возь- мем прямоугольную бумажную ленту и соединим ее концы, повернув один на 180 градусов. Теперь можно, начав с точки А, прочертить на поверхности путь, проходящий через точку, лежащую, казалось бы, на другой стороне полоски бумаги относительно А. Сведения взяты на web-странице: http://www-history.mcs.st-and.ac.uk/history/Mathematicians/Mobius.html С.9 Джозеф Генри Маклаген Веддербарн Родился: 2 февраля 1882 г. в Форфар, Ангус, Шотландия. Умер: 9 октября 1948 г. в Принстоне, Нью Джерси, США. Джозеф Веддербарн сделал важные продвижения в теории колец и алгебр, а также в теории матриц. В 1898 г. он поступил в Эдинбургский университет, а в 1903 г. полу- чил степень по математике. Веддербарн продолжил обучение в Герма- нии, проведя 1903-1904 гг. в университете Лейпцига, а затем семестр в Берлинском университете. Он получил стипендию Карнеги для обучения в США и провел 1904- 1905 гг. в Чикагском университете, где работал вместе с Вебленом. Вер- нувшись в Шотландию, он проработал 4 года в Эдинбурге ассистентом Георга Кристала. С 1906 по 1908 гг. он работал редактором Трудов Эдин- бургского математического общества. В 1909 г. Веддербарн был назначен на должность наставника по мате- матике в Принстоне, где он присоединился к Веблену. С началом первой мировой войны Веддербарн пошел добровольцем в британскую армию и служил, в том числе и во Франции, до самого конца войны. По возвращении в Принстон он скоро продвинулся по службе и в 1921 г. получил постоянную должность. С 1912 по 1928 гг. он был ре- дактором журнала “Анналы математики”. Кажется, что с конца этого
С.9. Джозеф Генри Маклаген Веддербарн 441 периода Веддербарн страдал слабым нервным расстройством и стал бо- лее уединенным. Лучшая работа Веддербарна была выполнена до его службы в ар- мии. В 1905 г. он показал, что не существует конечных некоммутативных тел. Из этого следует полное описание структуры всех конечных проек- тивных геометрий и то, что во всех этих геометриях теорема Паскаля следует из теоремы Дезарга. В 1907 г. он опубликовал, вероятно, самую известную статью по клас- сификации полупростых алгебр. Он показал, что каждая полу простая алгебра является прямой суммой простых, а каждая простая алгебра есть матричная алгебра над кольцом с делением (телом). В общей сложности он опубликовал около 40 работ, в основном, о кольцах и матрицах. Наиболее известная его книга — “Лекции о матри- цах” (1934 г.). Сведения взяты на web-странице: http://www-history.mcs.st-and.ac.uk/history/Mathematicians/Wedderburn. html
Приложение D Новые функции □ AddTwoLetters AddTwoLetters складывает две буквы по модулю 26, где а — О, b = = 1,... ,z = 25. AddTwoLetters[а_, Ъ_] := FromCharacterCode[Mod[(ToCharacterCode[а] - 97) + (ToCharacterCode[b] - 97), 26] + 97] Пример: PAddTwoLetters["b", "с" II d □ CaesarCipher Шифр Цезаря применяется с заданным ключом к заданному откры- тому тексту из строчных букв: CaesarCipher[plaintext-, key_] := FromCharacterCode[ Mod[ToCharacterCode[plaintext] - 97 + key, 26] + 97] Пример: || rwncf cpcwmspn j yglr cvrglqkyj j j crrcpq □ ColumnSwap ColumnSwap меняет местами столбцы в матрице. ColumnSwap[В_, i_, j_] := Module[{U, V}, U = Transposed]; V = U[[i]], U[[i]] = U[[j]], U[[j]] = V; Transposed]]
Приложение D. Новые функции 443 □ CoPrimeQ CoPrimeQ проверяет, являются ли два данных числа взаимно про- стыми, т.е. будет ли их НОД равен 1. CoPrimeQ[n Integer, m Integer] := GCD[n, m] == 1 Пример: CoPrimeQ[35, 91] CoPrimeQ[36, 91] II False II True □ CoPrimes CoPrimes генерирует список всех целых чисел между 1 и п, которые взаимно просты с п. Другими словами, она генерирует приведенную си- стему вычетов по модулю п. CoPrimes использует определенную выше функцию CoPrimeQ. CoPrimes[n.Integer ? Positive] := Select[Range[n], CoPrimeQ[n, #] &] Пример: CoPrimes[15] || {1, 2, 4, 7, 8, 11, 13, 14} □ DivisorProduct DivisorProduct вычисляет
444 Приложение D. Новые функции DivisorProduct[f, n] := Times @@ (f / @ Divisors[n]) Пример: f [n_] : = n; DivisorProduct[f, 25] II 125 □ DivisorSum DivisorSum вычисляет У3с?|п DivisorSum[f, n] := Plus @@ (f / @ Divisors[n] ) Пример: f [n_] : = n; DivisorSum[f, 15] II 24 □ EllipticAdd EllipticAdd вычисляет сумму двух точек на эллиптической кривой над Zp, заданной уравнением у2 = х3 + а • х2 + Ъ • х + с. Здесь р — простое, р>2. EllipticAdd[р_, а_, b_, с_, P_List, Q_List] := Module[{1am, хЗ, уЗ, R}, Which[Р == {О}, R = Q, Q == {О}, R = P, P[[l]] != Q[[l]] , lam = Mod[ (Q[[2]] - P[[2]] )*PowerMod[Q[[l]] - P[[l]], -1, p] , p] ; x3 = Mod [lam2 - a - P[[l]] - Q[[l]], p] ; y3 = Mod [-(lam * (x3 - P[[l]]) + P[[2]]), p] ; R = {хЗ, y3}, (P == Q) && (P != {0}), lam = Mod[(3 * P[[l]]2 + 2 * a * P[[l]] + b) * PowerMod [2 * P[[2]], -1, p], p] ; x3 = Mod [lam2 - a - P[[l]] - Q[[l]], p] ; y3 = Mod[-(lam * (x3 - P[[l]]) + P[[2]]), p]; R = {хЗ, y3}, (P[[l]] == Q[[l]]) && (P[[2]] •= Q[[2]]), R = {□}] ; R] Пример: p = 11; a = 0; b = 6; c = 3; EllipticAdd[p, a, b, c, {4, 6}, {9, 4}]
Приложение D. Новые функции 445 II О, 9} □ Entropy Вычисляется функция энтропии —р • log2p — (1 — р) log2(l — р). Entropy[р] := -р * Log[2, р] -(1 - р) * Log[2, 1 - р] ; Пример: Entropy[1 / 2] II 1 □ ListQuadRes ListQuadRes дает список всех квадратичных вычетов по модулю р. ListQuadRes[р_] := Select[Range[р], JacobiSymbol[#1, р] == 1 &] Пример: р = 17; ListQuadRes[р] || <1, 2, 4, 8, 9, 13, 15, 16} □ MultiEntropy MultiEntropy вычисляет — Pilogz Pi Для списка {pi,P2, • • • 5Рп}- Length Гр1 MultiEntropy[p.List] := — (р)р[[И1 * Log[2, p[[i]J] i=l Пример: р = -Cl / 4, 1 / 4, 1 / 4, 1 / 4}; MultiEntropy Ср] II 2 □ MultiplicativeOrder MultiplicativeOrder вычисляет мультипликативный порядок целого числа а по модулю п в предположении, что они взаимно просты. Та- ким образом, на выходе — наименьшее натуральное число тп, такое, что ат = 1 (mod п).
446 Приложение D. Новые функции MultiplicativeOrder[а_, n_] := If[GCD[a, n] == 1, Divisors[EulerPhi[n]] //. {х, у.} -> If [PowerMod [а, х, n] == 1, х, -Су}] 3 ; Пример: MultiplicativeOrder [2, 123456789123] II 1285901112 □ KnapsackForSuperlncreasingSequence KnapsackForSuperlncreasingSequence находит {0,1}-решсние пробле- мы рюкзака 52Г=1 xi ' аг = 8, где {аг}^=1 — сверхвозрастающая последо- вательность. KnapsackForSuperlncreasingSequence [a_List, S_] : = Module[{n, x, X, T}, n = Length [a]; X = {}; T = S; While [n> 1, If[T>a[[n]], x = 1, x = 0] ; T = T - x * a [ [n] ] ; X = Join[{x}, X] ; n = n - 1] ; If[T != 0, Print["No solution"], X]] Пример: a = {22, 89, 345, 987, 4567, 45678}; S = 5665; X = KnapsackForSuperlncreasingSequence[a, S] || {1, 1, 0, 1, 1, 0} □ Row Swap RowSwap меняет местами строки в матрице. RowSwap [В_, i_, j_] := Module[{U, V}, U = B; V = U[[i]]; U[[i]] = U[[j]] ; U[[j]] = V; U] ; Пример: Clear[a, b, c, d, e, f, g, h, i, j, k, 1] ; / a b c \ A = I d 6 f I • g h i I ’ \ 3 k I J AA = RowSwap [A, 1, 4]; iMatrixForm[AA]
Приложение D. Новые функции 447 / 3 k I def 9 h i \ а b с
Список литературы [Adle79] Adleman L.M. A subexponential algorithm for the discrete loga- rithm problem with applications to cryptography, in Proc IEEE 20-th Annual Symp. on Found, of Comp. Science, pp. 55-60, 1979. [Adle83] Adleman L.M. On breaking the iterated Merkle - Hellman public key cryptosystem, in Proc. 15-th Annual ACM Symp. Theory of Computing, pp. 402-412, 1983. [Adle94] Adleman L.M. The function field sieve, Lecture Notes in Compu- ter Science 877, Springer Verlag, Berlin, etc., pp. 108-121, 1995. [AdDM93] Adleman L.M., J. DeMarrais, A subexponential algorithm for discrete logarithms over all finite fields, Mathematics of Computation, 61, pp. 1-15, 1993. [AdPR83] Adleman L.M., C. Pomerance, R. Rumely, On distinguishing prime numbers from composite numbers, Annals of Math., 17, pp. 173-206, 1983. [Aign79] Aigner M. Combinatorial Theory, Springer Verlag, Berlin, etc., 1979. [Русский перевод: Айгнер M. Комбинаторная теория. — М.: Мир, 1982.] [ВаКТ99] Barg А., Е. Korzhik, Н.С.А. van Tilborg, On the complexity of minimum distance decoding of long linear codes, to appear in the IEEE Transactions on Information Theory. [Baue97] Bauer F.L. Decrypted Secrets; Methods and Maxims of Crypto- logy, Springer Verlag, Berlin, etc., 1997. [Готовится русский перевод: Бауэр Ф. Расшифрованные секреты. Методы и принципы криптологии.. — М.: Мир, 2004(план).] [BekP82] Beker Н., F. Piper, Cipher Systems, the Protection of Commu- nications, Northwood Books, London, 1982. [Berl68] Berlekamp E.R. Algebraic Coding Theory, McGraw-Hill Book Company, New-York, etc., 1968. [Русский перевод: Берлекэмп Э., Алге- браическая теория кодирования. — М.: Мир, 1971.] [ВеМТ78] Berlekamp E.R., R.J. McEliece, Н.С.А. van Tilborg, On the inherent intractability of certain coding problems, IEEE Transactions on In- formation Theory, IT-24, pp. 384-386, 1978. [BeJL86] Beth T., D. JungNickel, H. Lenz, Design Theory, Cambridge University Press, Cambridge, etc., 1986. [BihS93] Biham E., A. Shamir, Differential Cryptanalysis of the Data Encryption Standard, Springer Verlag, New-York, etc., 1993. [BoDML97] Boneh D., R.A. DeMillo, R.J. Lipton, On the importance of checking cryptografic protocols for faults, Advances in Cryptology: Proc, of Eurocrypt’97, W. Fumy, Ed., Lecture Notes in Computer Science 1233, Springer Verlag, Berlin, etc., pp. 37-51, 1997. [Bos92] Bos J.N.E. Practical privacy, Ph.D. Thesis, Eindhoven University of Technology, the Netherlands, 1992.
Список литературы 449 [Bric85] Brickell E.F. Breaking iterated knapsacks, in Advances in Cryp- tography: Proc, of Crypto’84, G.R. Blakley and D. Chaum, Eds., Lecture Notes in Computer Science 196, Springer Verlag, Berlin, etc., pp. 342-358, 1985. [Bric89] Brickell E.F. Some ideal secret sharing schemes, The Journal of Combinatorial Mathematics and Combinatorial Computing, Vol. 6, pp. 105- 113, 1989. [CanS98] Canteaut A., N. Sendrier, Cryptanalysis of the original McEliece cryptosystem, Advances in Cryptology: Proc. AsiaCrypt’98, K. Ohta and D. Pei, Eds., Lecture Notes in Computer Science 1514, Springer Verlag, Berlin, etc., pp. 187-199, 1998. [ChoR85] Chor B., R.L. Rivest, A knapsack type public key cryptosystem based on arithmetic in finite fields, in Advances in Cryptography: Proc, of Crypto’84, G.R. Blakley and D. Chaum, Eds., Lecture Notes in Computer Science 196, Springer Verlag, Berlin, etc., pp. 54-65, 1985. [CohL82] Cohen H., H.W. Lenstra Jr. Primality testing and Jacobi sums, Report 82-18, Math. Inst., Univ, of Amsterdam, Oct. 1982. [Русский пере- вод: Коэн X., Ленстра X. (мл.) Проверка чисел на простоту и суммы Якоби)I Кибернетический сборник, вып. 24. — М.: Мир, 1987, сс. 101- 146.] [Cohn77] Cohn P.M. Algebra, Vol. 2, John Wiley & Sons, London, etc., 1977. [Copp84] Coppersmith D. Fast evaluation of logarithms in fields of charac- teristic two, IEEE Transactions on Information Theory, IT-30, pp. 587 594, 1984. [CopFPR96] Coppersmith D., M. Franklin, J. Patarin, M. Reiter, Low- exponent RSA with Related Messages, Advances in Cryptology: Proc, of Eurocrypt’96, U. Maurer, Ed., Lecture Notes in Computer Science 1070, Springer Verlag, Berlin, etc., pp. 1-9, 1996. [CovM67] Coveyou R.R., R.D. McPherson, Fourier analysis of uniform random number generators, J. Assoc. Comput. Mach., 14, pp. 100-119, 1967. [Demy94] Demytko N. A new elliptic curve based analogue of RSA, Advances in Cryptology: Proc, of Eurocrypt’93, T. Helleseth, Ed., Lecture Notes in Computer Science 765, Springer Verlag, Berlin, etc., pp. 40-49, 1994. [Denn82] Denning D.E.R. Cryptography and Data Security, Addison- Wesley publ., Comp., Reading Ma, etc., 1982. [DifH76] Diffie W., M.E. Hellman, New directions in cryptography, IEEE Transactions on Information Theory, IT-22, pp. 644- 654, 1976. [Dijk97] Dijk M. van, Secret Key Sharing and Secret Key Generation, Ph. D. Thesis, Eindhoven University of Technology, the Netherlands, 1997. [ElGa85] ElGamal T. A public-key cryptosystem and a signature sche- me on discrete logarithms, Advances on Cryptology: Proc of Crypto’84, G.R. Blakley and D. Chaum, Eds., Lecture Notes in Computer Science 196, Springer Verlag, Berlin, etc., pp. 10-18, 1985.
450 Список литературы [FiaS87] Fiat A., A. Shamir, How to prove yourself: Practical solutions to identification and signature problems, Advances in Cryptology: Proc, of Crypto’86. A.M. Odlyzko, Ed., Lecture Notes in Computer Science 263, Spri- nger Verlag, Berlin, etc., pp. 186-194, 1987. [FIPS94] FIPS 186, Digital Signature Standard, Federal Information Pro- cessing Standards Publication 186, U.S. Department of Commerce/NIST, National Technical Information Service, Springfield, Virginia, 1994. [Frie73] Friedman W.F. Cryptology, in Encyclopedia Britanica, p. 848, 1973. [GarJ79] Garey M.R., D.S. Johnson, Computers and Intractability: A Guide to the Theory of NP-Completeness, W.H. Freeman and Co., San Fransisco, 1979. [Русский перевод: Гэри M., Джонсон Д., Вычислитель- ные машины и трудно решаемые задачи, — М.: Мир, 1982.] [GilMS74] Gilbert E.N., F.J. MacWilliains, N.J.A. Sloane, Codes which detect deception, Bell System Technical Journal, Vol. 53, pp. 405 -424, 1974. [Golo67] Golomb S.W. Shift Register Sequences, Holden-Day, San Fran- sisco, 1967. [Hall67] Hall M., Jr. Combinatorial Theory, Blaisdell Publishing Compa- ny, Waltham, Ma., 1967. [Русский перевод: Холл M., Комбинаторика. — М.: Мир, 1970.] [HarW45] Hardy G.H., Е.М. Wright, An Introduction to the Theory of Numbers, Clarendon Press, Oxford, 1945. [H&st88] Hastad J. Solving simultaneous modular equations of low degree, SIAM Journal on Computing, 17, pp. 336-341, 1988. [HelR83] Hellman M.E., J.M. Reyneri, Fast computation of discrete lo- garithms over GF(q), in Advances in Cryptography: Proc, of Crypto’82, D. Chaum, R. Rivest, A. Sherman, Eds., Plenum Publ. Comp., New York, pp. 3-13, 1983. [Huff52] Huffman D.A. A method for the costruction of minimum-redun- dancy codes, Proc. IRE, 14, pp. 1098-1101, 1952. [Joha94a] Johansson T. A shift register of unconditionally secure authen- tication codes, Designs, Codes and Cryptograpy, 4, pp. 69-81, 1994. [Joha94b] Johansson T. Contributions to Uncoditionally Secure Authen- tication, KF Sigma, Lund, 1994. [JohKS93] Johansson T., G. Kabatianskii, B. Smeets, On the relation between А-codes and codes correcting independent errors, Advances in Cryp- tography: Proc, of Eurocrypt’93, T. Helleseth, Ed., Lecture Notes in Com- puter Science 765, Springer Verlag, Berlin, etc., pp. 1-10, 1993. [Kahn67] Kahn D. The Codebreakers, the Story of Secret Writing, Mac- millan Company, New York, 1967. [Русский перевод: Кан Д., Взломш,ики кодов. —- М.: Центрполиграф, 2000.] [Khin57] Khinchin A.I. Mathematical Foundations of Information Theory, Dover Publications, New York, 1957.
Список литературы 451 [Knud94] Knudsen L.R. Block Ciphers — Analysis, Designs and Appli- cations, PhD Thesis, Computer Science Department, Aarhus University, Den- mark, 1994. [Knut69] Knuth D.E. The Art of Computer Programming, Vol. 2, Semi- numerical Algorithms, Addison-Wesley, Reading, MA., 1969. [Русский пе- ревод: Кнут Д. Искусство программирования для ЭВМ, т. 2. Получи- сленные алгоритмы. — М.: Мир, 1977.] [Knut73] Knuth D.E. The Art of Computer Programming, Vol. 3, Sorting and searching, Addison-Wesley, Reading, MA., 1973. [Русский перевод: Кпут Д. Искусство программирования для ЭВМ, т. 3. Сортировка и поиск. — М.: Мир, 1978.] [Knut81] Knuth D.E. The Art of Computer Programming, Vol. 2, Semi- numerical Algorithms, Addison-Wesley, Reading, MA., 1981. [Русский пере- вод: Кнут Д. Искусство программирования, т. 2. Полу численны,е ме- тоды, — C.-П.: Вильяме, 2000.] [Koch96] Kocher Р.С. Timing attacks on implementations of Diffie - Hellman, RSA, DSS, and Other Systems, Advances in Cryptology: Proc, of Crypto’96, N. Koblitz, Ed., Lecture Notes in Computer Science 1109, Sprin- ger Verlag, Berlin, etc., pp. 104-113, 1996. [Konh81] Konheim A.G. Cryptography, a Primer, John Wiley & Sons, New York, etc., 1981. [Kraf49] Kraft L.G. A Device for Quantizing, Grouping and Coding Am- plitude Modulated Pulses, MS Th., Dept, of EE, MIT, Cambr., Mass., 1949. [LagO83] Lagarias J.C., A.M. Odlyzko, Solving low-density subset prob- lems, Proc. 24th Annual IEEE Symp. on Found, of Сотр. Science, pp. 1 -10, 1983. [Lai92] Lai X. On the design and security of block ciphers, ETH Series in Information Processing, J.J. Massey, Ed., Vol. 1, Hartung-Gorre Verlag, Konstanz, 1992. [LeeB88] Lee P.J., E.F. Brickell, An observation on the security of McEli- ece ’s public-key cryptosystem, in Advances in Cryptography: Proc, of Euro- crypt’88, C.G. Gunther, Ed., Lecture Notes in Computer Science 330, Spri- nger Verlag, Berlin, etc., pp. 275-280, 1988. [Lehm76] Lehmer D.H. Strong Carmichael numbers, J. Austral. Math. Soc., Ser. A 21, pp. 508-510, 1976. [LensA96] Lenstra A.K. Memo on RSA signature generation in the pre- sence of faults, Sept. 1996. [LenLL82] Lenstra A.K., H.W. Lenstra, L. Lovasz, Factoring polynomials with rational coefficients, Math. Annalen, 261, pp. 515-534, 1982. [LensH83] Lenstra H.W. Jr. Fast prime number tests, Nieuw Archiev voor Wiskunde (4) 1, pp. 133-144, 1983. [LensH86] Lenstra H.W. Jr. Factoring integers with elliptic curves, Report 86-16, Dept, of Mathematics, University of Amsterdam, Amsterdam, the Netherlands.
452 Список литературы [Liu68] Liu C.L. Introduction to combinatorial mathematics, McGraw- Hill, New York, 1968. [Liine87] Liineberg H. On the Rational Normal Form of Endomorphisms; a Primer to Constructive Algebra, BI Wissenchaftsverlag, Mannheim, etc., 1987. [MacWS77] MacWilliams F.J., N.J.A. Sloane, The Theory of Error-Cor- recting Codes, North-Holland Publ. Comp., Amsterdam, etc., 1977. [Рус- ский перевод: Мак-Вильяме Ф.Дж., Слоэн Н.Дж.А. Теория кодов, ис- правляющих ошибки. — М.: Связь, 1979.] [Mass69] Massey J.L. Shift-register synthesis and BCH decoding, IEEE Transactions on Information Theory, IT-15, pp. 122-127, 1969. [MatY93] Matsui M., A. Yamagishi, A new method for known plaintext attack of FEAL cipher, Advances in Cryptology: Proc. Eurocrypt’92, R.A. Rueppel, Ed., Lecture Notes in Computer Science 658, Springer Verlag, Berlin, etc., pp. 81-91, 1993. [Maur92] Maurer U. A universal statistical test for random bit generators, Journal of Cryptology, 5, pp. 89-105, 1992. [McE178] McEliece R.J. A public-key cryptosystem based on algebraic coding theory, JPL DSN Progress Report 42-44, pp. 114-116, 1978. [McE181] McEliece R.J., D.V. Sarwate, On sharing secrets and Reed - Solomon codes, Comm. ACM, Vol 24, pp. 583-584, 1981. [McMi56] McMillan B. Two inequalities implied by unique decipherability, IEEE Transactions on Information Theory, IT-56, pp. 115-116, 1956. [Mene93] Menezes A.J. Elliptic Curve Public Key Cryptosystems, Kluwer Academic Publishers, Boston, etc., MA, 1993. [MeOkV93] Menezes A.J., T. Okamoto, S.A. Vanstone, Reducing elliptic curve logarithms to logarithms in a finite field, IEEE Transactions on Infor- mation Theory, IT-39, pp. 1639-1646, 1993. [MeOoV97] Menezes A.J., P.C. van Oorshot, S.A. Vanstone, Handbook of Applied Cryptography, CRC Press, Boca Raton, etc., 1997. [MerH78] Merkle R.C., M.E. Hellman, Hiding information and signatures in trapdoor knapsacks, IEEE Transactions on Information Theory, IT-24, pp. 525-530, 1978. [MeyM82] Meyer C.H., S.M. Matyas, Cryptography: a New Dimension in Computer Data Security, John Wiley & Sons, New York, etc., 1982. [МП176] Miller G.L. Riemann’s hypothesis and tests for primality, Journal of Computer and System Sciences, 13, pp. 300-317, 1976. [Русский пере- вод: Миллер Г.Л. Гипотеза Римана и способы проверки простоты чи- сел/ /Кибернетический. сб., вып. 23. — М.: Мир, 1986, с. 31-50.] [МП186] Miller G.L. Use of elliptic curves in cryptography, Advances in Cryptology: Proc. Crypto’85, H.C. Williams, Ed., Lecture Notes in Computer Science 218, Springer Verlag, Berlin, etc., pp. 417 426, 1986. [Moni80] Monier L. Evaluation and comparison of two efficient probabi-
Список литературы 453 listic primality testing algorithms, Theoretical Computer Science, 12, pp. 97- 108, 1980. [MorB75] Morrison M.A., J. Brillhart, A method of factoring and the factorization of F?, Math. Comp. 29, pp. 183-205, 1975. [Nied86] Niederreiter H. Knapsack type cryptosystems and algebraic co- ding theory, Problems of Control and Information Theory, 15, pp. 159-166, 1986. [NybR93] Nyberg K., R.A.Rueppel, A new signature scheme based on the DS A giving message recovery, 1st ACM Conference on Computer and Communications Security, ACM Press, pp. 58-61, 1993. [Odly85] Odlyzko A.M. Discrete logarithms in finite fields and their cryp- tographic significance, Advances in Cryptology: Proc. Eurocrypt’84, T. Beth, N. Cot and I. Ingemarsson, Eds., Lecture Notes in Computer Science 209, Springer Verlag, Berlin, etc., pp. 224-314, 1985. [Patt75] Patterson N.J. The algebraic decoding of Goppa codes, IEEE Transactions on Information Theory^ IT-21, pp. 203-207, 1975. [Pera86] Peralta R. A simple and fast probabilistic algorithm for compu- ting square roots modulo a prime number, presented at Eurocrypt’86, J.L. Massey, Ed., no proceedings published. [PohH78] Pohlig S.C., M.E. Hellman, An improved algorithm for compu- ting logarithms over GF(p) and its cryptographic significance, IEEE Trans- actions on Information Theory, IT-24, pp. 106-110, 1978. [Poll75] Pollard J.M. A Monte Carlo method for factoring, BIT-15, pp. 331-334, 1975. [Poll78] Pollard J.M. Monte Carlo methods for index computations (mod p), Mathematics of Computations, 32, pp. 918-924, 1978. [Rabi79] Rabin M.O. Digitalized signatures and public-key functions as intractable as factorization, MIT/LCS/TR-212, MIT Lab. for Сотр. Science, Cambridge, Mass., 1979. [Rabi80a] Rabin M.O. Probabilistic algorithms for testing primality. Jo- urnal of Number Theory, 12, pp. 128-138, 1980. [Rabi80b] Rabin M.O. Probabilistic algorithms in finite fields, SIAM J. Comput, 80, pp. 273-280, 1980. [RisL79] Rissanen J., G. Langdon, Arithmetic coding, IBM Journal of Research and Development, 23, pp. 149-162, 1979. [RivSA78] Rivest R.L., A. Shamir, L. Adleman, A method for obtaining digital signatures and public-key cryptosystems, Comm. ACM, Vol 21, pp. 120- 126, 1978. [Rose84] Rosen K.H. Elementary Number Theory, Addison-Wesley Publ. Comp., Reading, Mass., 1984. Ruep86] Rueppel R.A. Analysis and Design of Streamciphers, Springer Verlag, Berlin, etc., 1986, [SatA98] Satoh T., K. Araki, Ferma quotients and the polynomial time
454 Список литературы discrete log algorithm for anomalous elliptic curves, Commentarii Mathema- tici Universitatis Sancti Pauli, 47, pp. 81-92, 1998. [Schne96] Schneier B. Applied Cryptography, 2nd Edition, John Wiley & Sons, New York, etc., 1996. [Schno90] Schnorr C.P. Efficient identification and signatures for smart cards, Advances in Cryptology, Crypto’89, G. Brassard, Ed., Lecture Notes in Computer Science 435, Springer Verlag, Berlin, etc., pp. 239-252, 1990. [Schno91] Schnorr C.P. Efficient signature generation by smart cards, Journal of Cryptology, 4, pp. 161-174, 1991. [Scho95] Schoof R. Counting points on elliptic curves over finite fields, Journal de Theorie des Nombres de Bordeaux, 7, pp. 219-254, 1995. [Sham79] Shamir A. How to share a secret, Communications of the ACM, Vol. 22, pp. 612-613, 1979. [Sham82] Shamir A. A polynomial time algorithm for breaking the basis Merkle-Hellman cryptosystem, in Proc. 23-rd IEEE Symp. Found. Computer Science, pp. 145-152, 1982. Shan49] Shannon C.E. Communication theory and secrecy systems, BSTJ, 28, pp. 656-715, 1949. [Русский перевод: Шеннон К. Теория связи в секретных системах//Шеннон К., Работы по теории информации и кибернетике. — М.: ИЛ, 1963, с. 333-369.] [Shap83] Shapiro H.N. Introduction to the Theory of Numbers, John Wiley & Sons, New York, etc., 1983. [Silv86] Silverman J.H. The Arithmetic of Elliptic Curves, Springer Ver- lag, Berlin, etc., 1986. [Silv98] Silverman J.H. The XEDNI calculus and the elliptic curve discrete, logarithm problem, preprint. [SilT92] Silverman J.H., J. Tate, Rational Points on Elliptic Curves, Undergraduate Texts in Mathematics, Springer Verlag, New York, etc., 1992. [Simm92] Simmons G.J. A survey of information authentication, in Con- temporary Cryptology: the Science of Information Integrity, G.J. Simmons, Ed., IEEE Press, New York, pp. 379-419, 1992. [Smar98] Smart N. The discrete logarithm problem on elliptic curves of trace one, Journal of Cryptology, to appear. [SoIS77] Solovay R., V. Strassen, A fast Monte-Carlo test for primality, SIAM J. Comput., 6, pp. 84-85, 1977. [Stin95] Stinson D.R. Cryptography: Theory and Practice, CRC Press, Inc., Boca Raton, 1995. [SugK76] Sugiyama Y., M. Kashara, S. Hirasawa, T. Namekawa, An erasures-and-errors decoding algorithm for Goppa codes, IEEE Transactions on Information Theory, IT-22, pp. 238-241, 1976. [vTbu88] van Tilburg H. On the McEliece public-key cryptosystem, Ad- vances in Cryptography: Proc, of Crypto’88, S. Goldwasser, Ed., Lecture Notes in Computer Science 403, Springer Verlag, Berlin, etc., pp. 119-131, 1989.
Список литературы 455 [Vaud98] Vaudenay S. Cryptanalysis of the Chor - Rivest cryptosystem, Advances in Cryptography: Proc, of Crypto’98, H. Krawczyk, Ed., Lecture Notes in Computer Science 1462, Springer Verlag, Berlin, etc., pp. 243-256, 1998. [VerT97] Verheul E.L., H.C.A. van Tilborg, Constructions and properties of k out of n visual secret sharing schemes, Designs, Codes and Cryptography, Vol. 11, No. 2, pp. 179-196, 1997. Well99] Wells R.B. Applied Coding and Information Theory, Prentice Hall, Upper Saddle River NJ, 1999. [Wien90] Wiener M.J. Cryptanalysis of short RSA secret exponents, IEEE Transactions on Information Theory, IT-36, pp. 553-558, 1990. [ZivL77] Ziv J., A. Lempel, A universal algorithm for sequential data compression, IEEE Transactions on Information Theory, IT-23, pp. 337-343, 1977. [ZivL78] Ziv J., A. Lempel, Compression of individual sequences by vari- able rate coding, IEEE Transactions on Information Theory, IT 24, pp. 530- 536, 1978. Список литературы, добавленной при переводе * [АйеР87] Айерлэнд К., Роузен М. Классическое введение в современ- ную теорию чисел. — М.: Мир, 1987. * [АЗКЧ01] Алферов А.П., Зубов А.Ю., Кузьмин А.С., Черемуш- кин А.В. Основы криптографии. — М.: Гелиос АРВ, 2001. * [Вас03] Василенко О.Н. Теоретико-числовые алгоритмы в крипто- графии. — М.: МЦНМО, 2003. * [ГОСТ01] ГОСТ Р 34.10-2001. Криптографическая защита инфор- мации. Процессы формирования и проверки электронной цифровой под- писи. — М.: препринт, 2001. * [ГОСТ96] ГОСТ 28147-89. Защита криптографическая. Алгоритм криптографического преобразования. — М.: Изд-во стандартов, 1996. * [ГОСТП94] ГОСТ Р 34.10-94. Криптографическая защита инфор- мации. Процедуры выработки и проверки электронной цифровой под- писи на базе асимметричного криптографического алгоритма. — М.: Изд-во стандартов, 1994. * [ГОСТХ94] ГОСТ Р 34.11-94. Криптографическая защита инфор- мации. Функция хэширования. — М.: Изд-во стандартов, 1994. * [Кобл01] Коблиц Н. Курс теории чисел и криптографии. — М.: ТВП, 2001. * [Ленг70] Ленг С. Введение в теорию диофантовых приближений. — М.: Мир, 1970.
456 Список литературы * [Ленс91] Ленстра Х.В. (мл.), Эллиптические кривые и теоретико- числовые алгоритмы//Международный конгресс математиков в Беркли. — М.: Мир, 1991, с. 164-193. * [ЛидН88] Лидл Р., Нидеррайтер Г. Конечные поля, в 2 тт. — М.: Мир, 1988. * [ЛидП96] Лидл Р., Пильц Г. Прикладная абстрактная алгебра. — Екатеринбург: Изд-во УрГУ, 1996. * [Молд98] Молдовян Н.А. Скоростные блочные шифры. — СПб.: Изд- во СПбГУ, 1998. * [Неча99] Нечаев В.И. Элементы криптографии (основы теории за- щиты информации). — М.: Высшая школа, 1999. * [НодК99] Ноден П., Китте К. Алгебраическая алгоритмика. — М.: Мир, 1999. * [Прах67] Прахар К. Распределение простых чисел. — М.: Мир, 1967. * [РосМ01] Ростовцев А.Г., Михайлова Н.В. Методы криптоанализа классическмх шифров. — 2001 (препринт). * [Сало96] Саломаа А. Криптография с открытым ключом. — М.: Мир, 1996. * [Серр72] Серр Ж.-П. Курс арифметики. — М.: Мир, 1972. * [Слоэ83] Слоэн Н.Дж.А. Коды, исправляющие ошибки, и крипто- графия./ / В сб. "Математический цветник". — М.: Мир, 1983, с. 432- 472. * * * сел. — М.: Мир, 1974. * [ЧерО2] Черемушкин А.В. Лекции по арифметическим алгоритмам в криптографии. — М.: МЦНМО, 2002. * [Ящен98] Ященко В.В. (ред.), Введение в криптографию. — М.: МЦНМО, 1998. * |AgKS021 Agrawal М., Kayal N., Saxena N. Primes is in P, Kanpur, India, 2002 (preprint). * [Bone99] Boneh D. Twenty years of attacks on the RSA cryptosystem, Notices of AMS, Vol. 46, No. 2, 1999, pp. 203-213. * [DaRi99] Daemen J., Rijmen V. AES proposal: RijnDael, 1999, preprint. * [LandOO] Landau S. Stanning the test of time: the Data Encryption Standard, Notices of AMS, Vol. 47, No. 3, 2000, pp. 341-349. * [KaPS95] Kaufman C., R. Perlman, M. Speciner, Network Security. Private communication in a public world, Prentice Hall, New Jersey, 1995. Хинч78 Хинчин А.Я. Цепные дроби. — М.: Наука, 1978. Холл62] Холл М. Теория групп. — М.: ИЛ, 1962. Чанд74] Чандрасекхаран К. Введение в аналитическую теорию чи-
Символы и обозначения 1 (а, Ь) наибольший общий делитель, А.1, опр. А.2 [а, Ь] наименьшее общее кратное, А.1, опр. А.З символ Якоби, А.4, опр. А.11 R/S кольцо классов вычетов, В. 1.1, теор. В.2 (s(a?)) идеал, порожденный в(ж), В.2 = сравнение, А.3.1, опр. А.4 ||v|| длина вектора, В.1.2 U1- ортогональное дополнение, В.1.2, опр. В.13 Г(рц(ж), GF(2m)) код Гоппы, 11.1, теор. 11.1 д функция Мёбиуса, А.6.1, опр. А. 14 тг(ж) число простых< ж, А.1, опр. А.1 (р функция Эйлера, А.3.2, опр. А.6 X символ Лежандра, А.4, опр. А.10 Q(/) выходное пространство LFSR, 3.2.2, опр. 3.4 АС(к) автокорреляция, 3.1, (3.1) Dn избыточность, 5.1, опр. 5.1 d(u) плотность рюкзака, 12.2.1, опр. 12.2 £ (1) традиционная криптосистема, 1.2, опр. 1.1 (2) эллиптическая кривая, 10.1, опр. 10.1 /* взаимный многочлен, 3.2.2, (3.6) Г[ж] кольцо многочленов над F, В.2 F9 конечное поле из q элементов, В. 1.1 GF поле Галуа, В. 1.1 h(p) энтропия, 5.1, (5.4) Н(Х) энтропия, 5.1 ЬГ(Х|У) условная энтропия, 5.2, (5.7) Г9(п) число неприводимых многочленов степени п над Fg, В.З, опр. В.15 1(п) число бинарных неприводимых многочленов степени п, В.З, опр. В.15 1(Х, У) взаимная информация, 5.2, (5.8) Lk линейная сложность, 3.3.2, опр. 3.6 АГ непривилегированное множество (структуры доступа), 15.1, опр. 15.1 NQR квадратичный невычет, А.4, опр. А.9 НОД наибольший общий делитель, А.1, опр. А.2 нок наименьшее общее кратное, А.1, опр. А.З Pd вероятность успешного обмана, 13.3.1, (13.4) 336 337 354 379 389 343 384 385 230 368 336 345 354 43 36 83 261 12 209 43 386 377 377 72 72 86 391 391 87 59 315 354 336 337 285 хМы максимально локализуем каждое обозначение. — Прим. ред.
458 Символы и обозначения Pi вероятность успешной атаки имперсонификации, 13.3.1, опр. 13.3 285 Ps вероятность успешной атаки подмены, 13.3.1, опр. 13.4 285 Р привилегированное множество (системы доступа), 15.1, опр. 15.1 315 многочлен деления круга, В.4.6, опр. В. 19 410 QR квадратичный вычет, А.4, опр. А.9 354 Тг функция следа, В.5, зад. В.16 414 V(n,g) n-мерное векторное пространство над GF(g), 13.3.4 301 w(x) вес вектора, 11.2.1 235 Zp целые числа по модулю р, В.2 386
Предметный указатель DES, 73 IDEA, 75 GF, 377 £3-алгоритм, 268 £3-атака, 265 LFSR, 40 MAC, 281 NP-полная проблема, 237 NQR, 354 n-грамма, 11 n-й корень из единицы, 396 ------примитивный, 396 PN-последовательность, 42 QR, 354 RC5, 73 RSA, 148 SHA, 123 ^/-редуцированный базис, 264 Абелева группа, 376 автокорреляция, 36 - внефазовая, 37 - внутрифазовая, 37 аддитивная группа, 376 аддитивная цепочка, 118 адрес, 104 A-код (д,ля аутентификации сообще- ний), 284 построение A-кода из ЕС-кода, 301 - из ортогонального массива, 297 активный криптоаналитик, 13 алгоритм - Г3, 268 - , (р — 1)-алгоритм Полларда, 158 - , р-алгоритм Полларда взятия дис- кретных логарифмов, 134 - , р-алгоритм Полларда для фактори- зации, 161 - Берлекэмпа-Масси, 62 - Гаусса (нахождения примитивного элемента), 413 - Грама-Шмидта, 263 - “детский шаг - гигантский шаг”, 131 - дешифрования Кора-Райвеста, 275 - исчисления индексов, 137 - квадратичного решета, 165 - кода аутентификации сообщений, ос- нованного на DES, 281 - Лемпеля-Зива, 105 - нахождения квадратных корней по модулю простого числа, 197 - обмена битов местами, 246 - Похлига-Хеллмана, 125 - преобразования целого числа в би- нарный вектор веса т, 273 - разложения в непрерывную дробь, 361 - сложения точек на эллиптической кривой, 219 - случайных квадратов, 161 - укладки рюкзака для сверхвозраста- ющих последовательностей, 254 - Флойда нахождения циклов, 136 - Хаффмана (сжатия данных), 98 - Эвклида (простая версия), 339 — (расширенная версия), 340 алфавит, 11 аномальная кривая, 228 ассоциативная операция, 374 атака - Г3, 265 - Винера на RSA, 174 - измерением времени, 177 - имперсонификации, 284 - Копперсмита, 169 - Лагариаса и Одлыжко, 261 - , метод Казиски, 28 - “микроволновкой”, 178 - полным перебором ключей, 20 - подмены, 284 - подсчетом числа совпадений, 25 - с выбранным открытым текстом, 13 - с известным открытым текстом, 13 - только с шифртекстом, 13 аутентификатор, 284 аутентификация, 10 Б базис, 383
460 Предметный указатель - ортогональный, 386 - ортонормальный, 386 - ^-редуцированный, 264 — решетки, 262 безопасное простое число, 160 безопасность - безусловная, 278 - вычислительная, 279 безопасный канал, 12 безусловно безопасная ---криптосистема, 89 ---схема подписи, 279 биграмма, 11 бит (единица информации), 79 блок, 36 блочный шифр, 68 - , DES, 73 - , IDEA, 75 - , RC5, 78 - , тройной DES, 75 буфер - поиска, 103 - предварительного просмотра, 103 В Веддербарн, 440 Веддербарна теорема, 378 Вейерштрасса уравнение, 208 вектор, 381 векторное пространство, 381 Вернама шифр, 29 вес, 235 взаимная информация, 87 взаимный многочлен, 43 взаимно простые, 338 Виженера криптосистема, 23 - таблица, 23 визуальная схема разделения секрета, 325 визуальное пороговое значение, 325 Винера атака, 174 включения и исключения принцип, 371 внефазовая автокорреляция, 37 внутрифазовая автокорреляция, 37 вызов (оклик) в — протоколе проверки идентичности, основанном на блочном шифре, 71 — протоколе Фиата-Шамира, 309 вычислительно безопасная система, 279 Г гладкое число, 138 глубина ортогонального массива, 297 п-грамма, 11 граница квадратного корня, 286 группа, 374 - абелева, 376 - аддитивная, 376 - мультипликативная, 375 - циклическая, 379 двоичный симметричный канал, 88 делимость - многочленов, 387 - целых чисел, 335 делители нуля, 377 декодирование - , алгоритм для кода Гоппы, 230 - по информационному множеству, 246 дешифрование, 12 дистрибутивная операция, 376 длина - аддитивной цепочки, 118 - вектора, 394 - кода, 230 3 зависимость (линейная), 383 задача о рюкзаке, 253 закон - квадратичной взаимности, 358 - распределения простых чисел, 336 замена - многоалфавитная, 25 - простая, 20 И идеал, 376 идеальная схема разделения секрета, 322 избыточность, 83 изоморфны, 400 имперсонификация, 284 индекс (ортогонального массива), 297 интерполяционная формула Лагран- жа, 317 информационная эффективность, 322 информация, 79 - взаимная, 87 источник открытого текста, 92
Предметный указатель 461 К канал (безопасный), 12 Кармайкла число, 189 касательная, 215 квадратичное сравнение, 353 квадратичный - вычет, 354 - невычет, 354 квадратного корня граница, 286 квадратный корень (его взятие по мо- дулю простого числа), 197 китайская теорема об остатках, 351 класс эквивалентности, 378 ключевое пространство, 12 код - аутентификации, 283 - аутентификации сообщений, 281 — из кода, исправлющего ошибки, 301 --из ортогонального массива, 297 --из проективной плоскости, 295 - Гоппы, 230 - источника, 92 - мгновенный, 94 - однозначно декодируемый, 92 ОД-код, 92 - префиксный, 94 кодовое слово, 230 Колмогорова условие совместности, 14 кольцо, 376 - главных идеалов, 389 - классов вычетов, 379 коммутативная операция, 374 конечное поле, 377 конфиденциальность, 10 корень (n-й) из единицы, 396 ----примитивный, 396 коэффициенты обратной связи, 41 кривая - аномальная, 228 - сингулярная, 228 - суперсингулярная, 228 - эллиптическая, 209 криптоанализ, 10 - дифференциальный, 78 - линейный, 78 - методом Казиски, 28 - методом поиска наиболее вероятных слов, 21 - подсчетом совпадений, 25 криптоаналитик,12 - активный, 13 - пассивный, 12 криптографическое преобразование, 12 криптография, 10 криптология, 10 криптосистема - DES, 73 - IDEA, 75 - RC5, 78 - RSA, — подпись, 153 — секретность, 150 — секретность и подпись, 154 - абсолютно стойкая, 29 - безусловно безопасная, 89 - Вернама, 29 - Виженера, 23 - Кора-Райвеста, 269 - Мак-Элиса, 235 - многоалфавитной замены, 25 - Нидеррайтера, 251 - одноразового щита, 29 - основанная на системе дискретных логарифмов, 119 - перестановок, 30 - Плэйфэра, 29 - простой замены, 20 протокол Диффи-Хеллмана обмена ключами, 119 --------над эллиптическими кривы- ми, 225 - псевдослучайной последовательнос- ти, 35 - Рабина (вариант RSA), 194 - рюкзака, 255 - симметричная, 12 - с публичными ключами, 110 - столбцовой перестановки, 30 - традиционная, 12 - , тройной DES, 75 - Хагелина, 31 - Цезаря, 19 - Эль-Гамаля, 120 — , схема подписи, 122 ---, - секретности, 121 - “Энигма”, 33 Л лакуна, 36 Лежандра символ, 354
462 Предметный указатель линейная - зависимость, 383 - комбинация, 382 - независимость, 383 - оболочка, 382 - сложность, 55 линейное - (под)пространство, 382 - сравнение, 349 линейный - криптоанализ, 78 - регистр сдвига с обратной связью, 39 - эквивалент, 55 М Мак-Миллана неравенство, 93 максимальный элемент (структуры до- ступа), 323 Маркова процесс, 15 матрица - аутентификации, 283 - инцидентности, 289 - порождающая для линейного кода, 231 - проверочная для линейного кода, 234 мгновенный код, 94 Мёбиус, 436 Мёбиуса метод Казиски, 28 - формула обращения, 369 ----мультипликативная, 370 - функция, 368 Миллера-Рабина тест простоты, 186 минимальное расстояние кода, 230 минимальный - многочлен, 404 -- характеристический, 57 - элемент (структуры доступа), 315 многоалфавитная замена, 25 многочлен, 386 - взаимный, 43 - деления круга, 410 - минимальный, 404 -- характеристический, 57 - неприводимый, 387 - нормированный, 391 - примитивный, 405 - характеристический, 42 мультипликативная - группа, 375 - формула обращения Мёбиуса, 370 - функция, 348 мультипликативный - обратный элемент, 377 - порядок группового элемента, 379 Н наибольший общий делитель ----многочленов, 387 ----целых чисел, 336 наименьшее общее кратное ----многочленов, 387 ----целых чисел, 337 независимость (линейная), 383 непрерывная (цепная) дробь, 359 непривилегированное подмножество структуры доступа, 315 неприводимый многочлен, 387 неравенство - Крафта, 94 - Мак-Миллана, 93 Ниберга-Руппеля схема подписи, 124 Нидеррайтера схема шифрования, 251 нулевой элемент --аддитивной группы, 376 --векторного пространства, 381 О обман, 285 образующий конечного поля, 396 обратный элемент, 375 — мультипликативный, 375 однозначно декодируемый код, 92 одноразовый щит, 29 однородное уравнение, 228 односторонняя функция для - криптосистемы с публичными клю- чами, 112 - хэш-кодов, 280 операция, 373 - ассоциативная, 374 - дистрибутивная, 376 - коммутативная, 374 ортогональное дополнение, 385 ортогональный, 385 - базис, 386 - массив, 297 основная теорема теории чисел, 338 основное поле, 400 отклик в, - протоколе проверки идентичности, основанном на блочном шифре, 71
Предметный указатель 463 — протоколе Фиата-Шамира, 309 открытого текста источник, 13 открытый текст, 12 отношение эквивалентности, 378 ортогональный базис, 386 ортонормальный базис, 386 П пассивный криптоаналитик, 12 период — многочлена, 45 - последовательности, 36 периодическая последовательность, 36 плоскость - проективная, 287 - Фано, 289 плотность рюкзака, 261 Плэйфэра шифр, 29 подгруппа, 375 подкольцо, 376 подписи схема, 113 - - RSA, 153 --, (американский) стандарт цифро- вой подписи (DSS), 123 --Ниберга-Руппеля, 124 --Шнорра, 124 — Эль-Гамаля, 122 подполе, 377 подпространство (линейное), 382 подходящая (дробь), 363 поле - Галуа, 377 - конечное, 377 - основное, 400 - расширения, 400 Полларда р-метод взятия дискретных логарифмов, 134 Полларда (р— 1)-метод факторизации, 158 Полларда p-метод факторизации, 161 полная - система вычетов, 344 - структура доступа, 315 пороговая схема, 315 порождающая функция, 43 порядок - конечного поля, 377 - проективной плоскости, 287 - циклической группы, 379 - элемента в группе, 379 PN-последователыюсть, 42 постулаты случайности Голомба, 37 поточный (потоковый) шифр, 31 Похлига-Хеллмана алгоритм, 125 префиксный код, 94 приведенная система вычетов, 346 приведенный базис (решетки), 264 привилегированное подмножество структуры доступа, 315 приводимый многочлен, 397 примитивный - корень из единицы степени п, 396 — многочлен, 405 — элемент, 396 принцип включения и исключения, 371 проблема дискретных логарифмов, 118 - — — над эллиптическими кривыми, 224 проблема NP-полная, 237 проверочная матрица линейного кода, 234 проективная плоскость, 287 произведение шифров, 31 производная, 216 простая замена, 20 простое число безопасное, 160 пространство - векторное, 381 — тривиальное, 382 протокол, 307 — Диффи-Хеллмана обмена ключами. 119 ------над эллиптическими кривыми, 225 - идентификации — , основанный на блочном шифре, 71 — Фиата-Шамира, 309 ---Шнорра, 311 — проверки идентичности, 71 — с нулевым разглашением, 307 процесс - Маркова, 15 - расщепления, 98 - слияния, 98 прямая (в проективной плоскости), 287 псевдослучайная последовательность, 36 Р Рабина криптосистема, 194
464 Предметный указатель разделение секрета, 315 размерность - векторного пространства, 384 - линейного кода, 230 расстояние - единственности, 84 - минимальное, 230 - Хэмминга, 230 расширение поля, 400 расширяющий множитель, 326 регистр сдвига с обратной связью, 39 ^-редуцированный базис, 264 режим (шифрования блочного шиф- ра) - кодовой книги, 69 - обратной связи с шифртекстом, 70 — сцепления блоков шифртекста, 69 рефлексивность отношения, 378 решетка (целочисленная), 262 роторная машина Хагелина, 31 С сверхвозрастающая последователь- ность, 254 свидетель в протоколе Фиата-Шамира, 309 связный список, 104 секретность, 10 сжатие данных, 92 --Лемпеля-Зива, 103 --универсальное, 103 — Хаффмана, 98 сильное сопротивление коллизиям, 280 сильный - лгун (о простоте), 186 - свидетель (составности), 186 символ - Лежандра, 354 - Якоби, 354 симметричная криптосистема, 12 симметричность отношения, 378 сингулярная - кривая, 228 - точка, 228 синдром (полученного вектора), 234 система логарифмов, 119 система обмена ключами, 119 -----Диффи-Хеллмана (модулярная арифметика), 119 -----над эллиптическими кривыми, 225 скалярное кратное точки на эллипти- ческой кривой, 222 скалярное произведение, 384 — стандартное, 384 скользящее окно, 103 слабое сопротивление коллизиям, 280 след, 414 словарь, 104 сложение точек на эллиптической кри- вой, 219 совершенная - секретность, 89 - структура доступа, 315 совершенный код аутентификации, 286 совместное распределение, 85 Соловэя и Штрассена вероятностный тест простоты, 184 сопротивление коллизиям - сильное, 280 - слабое, 280 сопряженные элементы, 403 состояние, 39 способность исправлять ошибки, 230 сравнение - квадратичное, 353 - линейное, 349 сравнимые (по модулю тп) числа, 343 стандартное скалярное произведение, 384 стандартный базис, 383 стационарная модель, 16 степенной ряд, 43 степень - многочлена, 386 - элемента поля, 405 столбцовая перестановка, 30 структура доступа, 315 --полная, 315 --совершенная, 315 схема ' — пороговая, 315 - разделения секрета, 315 ----визуальная, 325 ----идеальная, 322 - секретная, 111 - - RSA, 150 — Мак-Элиса, 235 --Эль-Гамаля, 121 - цифровой подписи ----DSS, 123 ----RSA, 153
Предметный указатель 465 ----Ниберга-Руппеля, 124 ----Шнорра, 124 ----Эль-Гамаля, 122 сцепление блоков (шифртекста), 69 Т таблица Виженера, 23 текст, 11 теорема - Веддербарна, 378 - об однозначной факторизации, 387 - теории чисел основная, 338 - Ферма, 347 - Хассе (о числе точек на кривой), 210 - Эвклида, 336 - Эйлера, 346 тест простоты --Коэна и Ленстры, 190 — Миллера-Рабина, 186 --Соловэя и Штрассена, 184 точка в бесконечности, 209 точка (в проективной плоскости), 287 точка ветвления, 64 традиционная криптосистема, 12 транзитивность отношения, 378 тривиальное векторное пространство, 382 триграмма, 11 тройной DES, 75 У универсальное сжатие данных, 103 уравнение Вейерштрасса, 208 уравнение подписи, 123 условная - вероятность, 85 - энтропия, 86 Ф факторизация методом квадратичного решета, 165 формула обращения Мёбиуса, 369 функция - Мёбиуса, 368 - мультипликативная, 348 - обратной связи, 39 - односторонняя, 112 — для хэш-функций, 280 ---ловушка, 112 - порождающая, 43 - хэш-, 279 - Эйлера, 345 X характеристика поля, 400 характеристический многочлен, 42 хэш-код, 279 хэш-функция, 279 целостность, 10 целочисленная решетка, 262 цепное правило для условной энтро- пии, 86 циклическая группа, 379 Ч числа Фибоначчи, 342 число совпадений, 25 Ш шифр (см. криптосистема) - блочный (блоковый), 68 - поточный (потоковый), 31 шифрование, 12 шифртекст, 12 Шнорра - протокол идентификации, 311 - схема подписи, 124 Э эллиптическая кривая, 209 “Энигма”, 33 энтропия, 80 - условная, 86 Я язык, 11 Якоби символ, 354
Оглавление Предисловие редактора перевода ........................... 5 Предисловие ............................................ 8 Глава 1. Введение .........................................10 1.1 Введение и терминология ............................10 1.2 Шенноновское описание традиционной криптосистемы ...11 1.3 Статистическое описание источника открытых текстов .13 1.4 Задачи .............................................18 Глава 2. Классические криптосистемы........................19 2.1 Шифр Цезаря, простая замена, шифр Виженера ....... 19 2.1.1 Шифр Цезаря ...................................19 2.1.2 Шифр простой замены.......................... 20 Система и ее основное слабое место ..........20 Криптоанализ методом поиска наиболее вероятных слов ........................................21 2.1.3 Криптосисема Виженера..........................23 2.2 Подсчет числа совпадений, метод Казиски.............25 2.2.1 Подсчет числа совпадений ......................25 2.2.2 Метод Казиски .................................28 2.3 Шифры Вернама и Плэйфэра, перестановки, машина Хагели- на, “Энигма” ....................................... 29 2.3.1 Одноразовый щит ...............................29 2.3.2 Шифр Плэйфэра..................................29 2.3.3 Шифр перестановок .............................30 2.3.4 Машина Хагелина ............................. 31 2.3.5 “Энигма” ......................................33 2.4 Задачи ........................................... 34 Глава 3. Последовательности регистров сдвига........ 35 3.1 Псевдослучайные последовательности ............35 3.2 Линейные регистры сдвига с обратной связью ....... 39 3.2.1 (Линейные) регистры сдвига с обратной связью...39 3.2.2 PN-последовательности ....................... 42 3.2.3 Какие характеристические многочлены задают PN-по- следовательности? .............................45 3.2.4 Альтернативное описание £!(/) для неприводимого f .. 50 3.2.5 Криптографические свойства PN-последовательностей 52 3.3 Нелинейные алгоритмы ...............................55 3.3.1 Минимальный характеристический многочлен ......55 3.3.2 Алгоритм Берлекэмпа-Масси ................... 58 3.3.3 Несколько замечаний о нелинейных алгоритмах ...64 3.4 Задачи .............................................65 Глава 4. Блочные шифры................................. 68 4.1 Некоторые общие принципы ...........................68 4.1.1 Некоторые режимы блочных шифров ............ 68
Оглавление 467 Режим кодовой книги ........................68 Режим сцепления блоков ................. 69 Режим обратной связи с шифртекстом .........70 4.1.2 Протокол проверки идентичности ...............71 4.2 DES ................................................73 DES ........................................73 Тройной DES.................................75 4.3 IDEA ...............................................75 4.4 Дополнительные замечания ......................... 78 4.5 Задачи .............................................78 Глава 5. Теория Шеннона..................................79 5.1 Энтропия, избыточность и расстояние единственности .79 5.2 Взаимная информация и безусловно безопасные системы .... 85 5.3 Задачи ...................................... 90 Глава 6. Техника сжатия данных...........................92 6.1 Основы кодирования источников со стационарным распреде- лением ............................................ 92 6.2 Коды Хаффмана ......................................98 6.3 Универсальное сжатие данных, алгоритмы Лемпеля-Зива .. 103 Инициализация ........................... 104 Кодирование ...............................105 Декодирование .............................107 6.4 Задачи .......................................... 109 Глава 7. Криптография с публичными ключами........... 110 7.1 Теоретическая модель ..............................110 7.1.1 Мотивировка и общая структура ................ПО 7.1.2 Конфиденциальность ........................ 111 7.1.3 Цифровая подпись ............................113 7.1.4 Конфиденциальность и цифровая подпись ..... 114 7.2 Задачи ............................................115 Глава 8. Системы, основанные на дискретных логарифмах 116 8.1 Система дискретных логарифмов .....................116 8.1.1 Проблема дискретных логарифмов .......... 116 8.1.2 Система Диффи-Хеллмана обмена ключами .......119 8.2 Другие системы, основанные на дискретных логарифмах ... 120 8.2.1 Криптосистемы с публичными ключами Эль-Гамаля . 120 Формирование системы ......................121 Секретная система Эль-Гамаля ............ 121 Схема подписи Эль-Гамаля ................ 122 8.2.2 Дальнейшие вариации ....................... 123 Стандарт цифровой подписи..................123 Схема подписи Шнорра.......................124 Схема подписи Ниберга-Руппеля .............124 8.3 Как брать дискретные логарифмы ....................125 8.3.1 Алгоритм Похлига-Хеллмана ...................125 Частный случай: q — 1 = 2п ...............125) Общий случай: q — 1 имеет только малые простые делители ................................ 127
468 Оглавление Пример применения алгоритма Похл ига-Хелл мана 128 8.3.2 Метод “детский шаг—гигантский шаг” ......... 131 8.3.3 р-алгоритм Полларда...................... 134 8.3.4 Метод исчисления индексов ....................137 Общее обсуждение ......................... 137 Z* мультипликативная группа поля GF(p) .....139 GF(2n) ................................... 143 8.4 Задачи .............................................146 Глава 9. Системы, основанные на методе R.SA .............148 9.1 Система RSA ...................................... 148 9.1.1 Немного математики.......................... 148 9.1.2 Формирование системы .........................149 Шаг 1: вычисление модуля пу ................149 Шаг 2: вычисление показателей еи и du .... 149 Шаг 3: публикация ец- и пу .................150 9.1.3 RSA как схема шифрования ................... 150 9.1.4 RSA как схема подписывания....................153 9.1.5 RSA как схема шифрования и подписывания ......154 9.2 Безопасность RSA: некоторые алгоритмы факторизации .... 155 9.2.1 Что может делать криптоаналитик ..............155 9.2.2 Алгоритм факторизации для спеиального класса це- лых чисел ................................ 157 (р — 1)-Метод Полларда.................... 158 9.2.3 Общие алгоритмы факторизации .................160 p-метод Полларда ...........................160 Факторизация методом случайных квадратов ...161 Квадратичное решето ........................165 9.3 Некоторые опасные режимы RSA .......................168 9.3.1 Малый публичнный показатель ..................168 Передача одинаковых сообщений нескольким полу- чателям, имеющим один и тот же малый публич- ный ключ ................................. 168 Передача связанных сообщений получателю с ма- лым публичным ключом .......................169 9.3.2 Малый секретный показатель; атака Винера ....174 9.3.3 Некоторые физические атаки ..................177 Атака по времени вычислений ................177 Атака “микроволновкой” .....................178 9.4 Как генерировать большие простые числа; некоторые тесты на простоту ...................................... 180 9.4.1 Испытание случайных чисел .................. 180 9.4.2 Вероятностные тесты простоты ............... 181 Тест простоты Соловэя-Штрассена.............181 Тест Миллера-Рабина .............. 185 9.4.3 Детерминированный тест простоты .............188 9.5 Вариант Рабина .....................................195 9.5.1 Функция шифрования ....................... 195 9.5.2 Дешифрование ............................. 196
Оглавление 469 Предвычисление ..............................196 Нахождение квадратных корней по модулю просто- го числа ............................... 197 Четыре решения ............................ 201 9.5.3 Как различать решения .........................203 9.5.4 Эквивалентность взлома схемы Рабина и факториза- ции числа п ................................... 204 9.6 Задачи...............................................205 Глава 10. Системы, основанные на эллиптических кривых 208 10.1 Некоторые основные факты об эллиптических кривых ...208 10.2 Геометрия эллиптических кривых .....................211 Прямая, проходящая через две различные точки .. .214 Касательная прямая ..........................215 10.3 Сложение точек на эллиптической кривой .............218 10.4 Криптосистемы, определяемые над эллиптическими кривыми 223 10.4.1 Проблема дискретных логарифмов над эллиптически- ми кривыми ......................................223 10.4.2 Система дискретных логарифмов над эллиптически- ми кривыми ................................... 225 10.4.3 Безопасность систем дискретных логарифмов над эл- липтическими кривыми.............................227 10.5 Задачи ....................................... 229 Глава 11. Системы, основанные на теории кодирования ... 230 11.1 Введение в коды Гоппы ..............................230 11.2 Криптосистема Мак-Элиса.............................235 11.2.1 Система .................................. 235 Формирование системы ........................235 Шифрование ................................ 235 Дешифрование ................................235 11.2.2 Обсуждение....................................236 Резюме и предполагаемые параметры ...........236 Эвристика схемы............................ 236 Отсутствие режима подписывания ..............237 11.2.3 Аспекты безопасности .........................237 Угадывание и Рв .............................238 Сравнение со всеми кодовыми словами .........238 Декодирование по синдрому ...................239 Угадывание к верных и независимых компонент ... 241 Многократные шифрования одного сообщения ....243 11.2.4 Маленький пример системы Мак-Элиса ...........244 11.3 Другая техника декодирования линейных кодов ........246 11.4 Схема Нидеррайтера .................................251 11.5 Задачи ....................................... 252 Глава 12. Системы, основанные на задаче о рюкзаке .........253 12.1 Рюкзачная система ........................................... 253 12.1.1 Задача о рюкзаке ........................ 253 12.1.2 Рюкзачная система .............................255 Формирование рюкзачной системы ...............255
470 Оглавление Шифрование ...............................257 Дешифрование..............................257 Дальнейшее обсуждение .................. 258 12.2 £3-атака ................................. 260 12.2.1 Введение ..................................260 12.2.2 Решетки....................................262 12.2.3 Редуцированный базис.......................264 12.2.4 £3-атака ................................ 265 12.2.5 L3-алгоритм редукции базиса................268 12.3 Вариант Кора-Райвеста ...........................269 Формирование системы ................... 270 Шифрование ...............................272 Дешифрование .............................274 12.4 Задачи ..........................................276 Глава 13. Хэш-функции и техника аутентификации .........278 13.1 Введение ........................................278 13.2 Хэш-функции и МАС’и ........................... 279 13.3 Безусловно безопасные коды аутентификации .......282 13.3.1 Основные понятия и границы ................282 13.3.2 Конструкция проективной плоскости .........287 Конечная проективная плоскость ...........287 Общая конструкция проективной плоскости...291 Код аутентификации, определяемый проективной плоскостью ...............................295 13.3.3 A-коды, определяемые ортогональными массивами ... 297 13.3.4 A-коды, определяемые кодами, исправляющими ошибки ..........................•.............. 301 13.4 Задачи ..........................................305 Глава 14. Протоколы с нулевым разглашением .............307 14.1 Протокол Фиата-Шамира.......................... 307 14.2 Протокол идентификации Шнорра................. 310 14.3 Задачи...........................................313 Глава 15. Системы разделения секрета....................314 15.1 Введение ...................................... 314 15.2 Пороговые схемы ............................... 316 15.3 Пороговые схемы с лгунами........................319 15.4 Схемы разделения секрета ........................321 15.5 Визуальные схемы разделения секрета .............325 15.6 Задачи ..........................................333 Приложение А. Элементарная теория чисел ................335 А. 1 Введение ...................................... 335 А.2 Алгоритм Эвклида ............................... 339 А.З Теоремы Эйлера, Ферма и китайская теорема об остатках .. 343 А.3.1 Сравнения ..................................343 А.3.2 Теоремы Эйлера и Ферма ................... 345 А.3.3 Решение линейных сравнений .................349 А.3.4 Китайская теорема об остатках ..............351
Оглавление 471 А.4 Квадратичные вычеты ...............................353 А.5 Непрерывные дроби .................................359 А.6 Формула обращения Мёбиуса, принцип включения и исклю- чения ......................................... 368 А.6.1 Формула обращения Мёбиуса...................368 А.6.2 Принцип включения и исключения ..............370 А.7 Задачи ......................................... 371 Приложение В. Конечные поля .............................373 В.1 Алгебра..........................................373 В.1.1 Абстрактная алгебра ........................373 Операции на множестве.....................373 Группа ...................................374 Кольцо ...................................376 Идеал .................................. 376 Поле ................................. 377 Отношения эквивалентности .............. 378 Циклические группы .......................379 В.1.2 Линейная алгебра............................381 Векторные пространства и подпространства ....... 381 Линейная независимость, базисы и размерность ... 382 Скалярное произведение, ортогональность ..384 В.2 Конструкции .....................................386 В.З Число неприводимых многочленов над GF(g) ........391 В.4 Строение конечных полей .........................395 В.4.1 Циклическое строение конечного поля ..... 395 6.4.2 Мощность конечного поля ....................400 В.4.3 Некоторые правила вычислений над конечными поля- ми; сопряженные элементы ..........................401 В.4.4 Минимальные многочлены и примитивные многочлены 404 В.4.5 Дальнейшие свойства.........................408 В.4.6 Многочлены деления круга ................. 410 В.5 Задачи ......................................... 412 Приложение С. Некоторые знаменитые математики......415 С.1 Эвклид из Александрии ......................... 415 С.2 Леонард Эйлер ............................... 416 С.З Пьер де Ферма ................................. 418 С.4 Эварист Галуа....................................424 С.5 Иоганн Карл Фридрих Гаусс .......................429 С.6 Карл Густав Якоб Якоби...........................434 С.7 Адриен-Мари Лежандр .............................435 С.8 Август Фердинанд Мёбиус .................... 436 С.9 Джозеф Генри Маклаген Веддербарн ................440 Приложение D. Новые функции .......................... 442 Список литературы ......................................448 Список литературы, добавленной при переводе.............455 Символы и обозначения................................. 457 Предметный указатель ............................... 459
Учебное издание Хенк К.А. ван Тилборг ОСНОВЫ КРИПТОЛОГИИ Профессиональное руководство и интерактивный учебник Зав. редакцией академик В. И. Арнольд Зам. зав. редакцией А. С. Попов Ведущий редактор М. С. Стригунова Художник М. М. Иванов Технический редактор Е. В. Денюкова Оригинал макет подготовлен Д. С. Ананичевым в пакете ШЩХ25 с использованием кириллических шрифтов семейства LH. Подписано к печати 21.10.2005. Формат 70 х ЮО1/^- Печать офсетная. Объем 14,75 бум.л. Усл. печ. л. 38,35 Изд. №1/9938. Тираж 1500 экз. Заказ 12009 Издательство “Мир” Министерство культуры и массовых коммуникаций РФ. 107996, ГСП-6. Москва, 1-й Рижский пер., д. 2 Отпечатано с готовых оригинал-макетов в ОАО «ИПК. «Южный Урал». 460000, г. Оренбург, пер. Свободина, 4.
Х.К.А. ван Тилборг ОСНОВЫ КРИПТОЛОГИИ ПРОФЕССИОНАЛЬНОЕ РУКОВОДСТВО И ИНТЕРАКТИВНЫЙ УЧЕБНИК «ОСНОВЫ КРИПТОЛОГИИ» - перевод обновленной и улучшенной версии «Введения в криптологию», опубликованного в оригинале в 1988 г. Помимо ревизии имевшегося материала добавлено много новых разделов и две новые главы - об эллиптических кривых и кодах аутентификации. Кроме этого, книга сопровождается полной электронной версией текста на CD-ROM’е в качестве интерактивного учебника в пакете «Mathematica». «ОСНОВЫ КРИПТОЛОГИИ» будут интересны специалистам в информатике - исследователям и практикам, а также математикам и студентам, изучающим криптологию. Включает интерактивный учебник на CD-ROM’