Text
                    Б.Шнайер
ПРИКЛАДНАЯ
КРИПТОГРАФИЯ
Протоколы, алгоритмы,
исходные тексты
на языке Си
«Издательство ТРИУМФ»
Москва


Вгисе 5сНпе1ег АРРЫЕЭ СКУРТОСКАРНУ Рго1осо1§, А1§огШип5, апс! 5оигсе Сос1е т С 1оЬп \УПеу & 5оп§, 1пс. Ыем Уогк • СЫсНе§1ег • ВпзЬапе • Тогоп1о • $т§ароге
УДК 004.9 Б. Шнайер Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си.— М.: Издательство ТРИУМФ, 2003 — 816 с.: ил. 181Ш 5-89392-055-4 181Ш 0-471-11709-9 (амер.) «...Это книга, которую Агентство Национальной Безопасности США никогда не хотело бы увидеть опубликованной...». Именно так охарактеризовал данное издание один из американских журналов. Книга предназначена современным программистам и инженерам, которым необходимо использовать криптографию. До появления настоящей монографии практикам приходилось тратить многие часы на поиск и изучение научной литературы, прежде чем они могли приступить к разработке криптографических приложений. Именно этот пробел восполняет книга Брюса Шнайера (Вгисе 8сЬпе1ег) «Прикладная криптография» (АррНеб СгурЮ^гарЬу). Начав с целей засекречивания передачи данных и простейших примеров программ для достижения этих целей, Шнайер разворачивает перед читателем всю панораму практических результатов 20 лет исследований. Это самая читаемая книга по криптографии в мире. Теперь на русском языке. Научно-технический редактор перевода П.В. Семьянов А11 п§М$ гезегтей. АиШопгеЛ (гапзЫюп Ггош 1Ье Еп§Н§Ь 1ап§иа§е еЛШоп риЬНзЬес! Ьу ЛоЪп \УНеу & 8опз, 1пс. Оп§ша1 соруп§Ы © 1996 Ьу Вгисе 8сЬпе1ег. РиЫкЬеЛ Ьу ЗоЪп \\Т1еу & 8оп§, 1пс. Кизыап 1ап§иа§е е^Шоп риЪН$Ьес1 Ьу ТпитрЬ РиЬНзЫп^ (ООО «Издательство Триумф»). Соруп§Ы © 2002. © Обложка, серия, оформление ООО «Издательство ТРИУМФ», 2002, 2003
Предисловие Уитфилда Диффи История литературы по криптографии довольно примечательна. Разумеется, секретность всегда имела большое значение, однако до Первой мировой войны о важных разработках периодически сообщалось в печати, и эта отрасль развивалась так же, как и другие специализированные дисциплины. В конце 1918 года в свет вышел один из самых значительных трудов двадцатого столетия в области криптоанализа - монография Уильяма Ф. Фридмана (\УИНат Р. Рпебтап) «1пс1ех о/СотсШепсе апс11(з АррИсаИопз т С?ур(о§гарку» (Индекс совпадения и его применение в криптографии) [577]. Это был научный отчет частной лаборатории Ривербэнка (КлуегЬапк). И это несмотря на то, что работа была выполнена как военный заказ! В том же году Эдвард X. Хеберн (Еб\уагб Н. НеЬет) из Окленда, Калифорния, получил первый патент [710] на роторную машину - устройство, которому суждено было стать основой военной криптографии в течение почти 50 лет. Однако после Первой мировой войны положение дел начало изменяться. Организации армии и флота Соединенных Штатов, работая в режиме полной секретности, добились фундаментальных успехов в криптографии. На протяжении тридцатых и сороковых годов в открытой литературе по данному предмету вышли в свет всего несколько фундаментальных статей и монографий; последние, однако, все в меньшей степени соответствовали современному положению дел. За одним примечательным исключе¬ нием, открытая литература умерла. Этим исключением была статья Клода Шеннона (С1аис1 8Ьаппоп) «Тке СотшитсаИоп Ткеогу о/ Зесгесу Зуз(етзу> (Теория связи в секретных системах), опубликованная в 1949 году в журнале Ве11 Зуз(ет ТесктсаI Аоигпа1 [1432]. Эта статья, подобно монографии Фридмана 1918 года, явилась результатом работы Шеннона в военные годы. После окончания Второй мировой войны статья была рассекречена, возможно, ошибочно. В период с 1949 по 1967 годы литература по криптографии была малосодержательной. В 1967 году она пополнилась работой особого сорта - трудом Дэвида Кана (ОауМ КаЬп) «Тке СодеЪгеакегз» (Взломщики кодов) [794]. В книге не было каких-либо новых технических идей, но она содержала замечательно полную историю всего, что было достигнуто ранее, включая упоминание о некоторых вещах, которые правительство все еще полагало секретными. Значение книги «Тке СодеЬгеакегз» заключалось не только во всестороннем обзоре темы, но также и заметном коммерческом успехе - она познакомила с криптографией десятки тысяч людей, которые ранее и не задумывались об этом предмете. Тоненькими ручейками начали появляться новые работы по криптографии. Приблизительно в то же время Хорста Файстеля (Ногз* Ре151е1), работавшего в то время над устройствами опознавания «свой/чужой» для Военно-воздушных сил, на всю дальнейшую жизнь охватила страсть к криптографии, и он перешел в Уотсоновскую лабораторию корпорации 1ВМ, расположенную в Йорктаун Хайтс, штат Нью-Йорк. Там он начал разрабатывать то, что впоследствии стало стандартом шифрования данных
6 Прикладная криптография (Оа1а Епсгурйоп 81апбагс1 - ЭЕ8) Соединенных Штатов. В начале семидесятых годов 1ВМ опубликовала ряд технических отчетов Файстеля и его коллег по криптографии [1482, 1484, 552]. Таково было положение дел в конце 1972 года, когда я начал работать в этой области. Литература по криптографии была скудна, хотя порой в ней встречались настоящие самородки. В криптографической науке есть трудность, которой нет в обычных академических дисциплинах: необходимость плотного взаимодействия криптографии и криптоанализа. Суть дела в том, что в отсутствие реальных требований к передаче информации, нетрудно предложить систему, которая кажется непроницаемой. Многие академические разработки настолько сложны, что потенциальный криптоаналитик зачастую не знает, с чего начать - обнаружить прорехи в этих конструкциях намного сложнее, чем разработать их. В результате невозможно соперничество, служащее одним из сильнейших побудительных мотивов академических исследований. Когда в 1975 году Мартин Хеллман (МагИп НеИтап) и я предложили криптографию с открытым ключом [496], одним из косвенных аспектов нашего труда было появление проблемы, решение которой кажется непростым. Отныне честолюбивый разработчик криптосистем мог создать что-нибудь такое, что позволяло нечто большее, чем превращение осмысленного текста в ерунду. Результатом был впечатляющий рост числа людей, занимающихся криптографией, число проводимых встреч и число опубли¬ кованных книг и статей. В речи по поводу присуждения мне и Мартину Хеллману в 1980 году премии Дональда Е. Финка (ОопаЫ Е. Ртк) за лучшую обзорную статью в журнале ШЕЕ, я сказал аудитории, что, написав статью «Рпгасу апс1 АшкепИсаНоп» (Конфиденциальность и аутентификация), я приобрел опыт, редкий даже для выдающихся ученых, собравшихся на церемонии вручения награды. Я написал статью, которую я хотел бы изучить, когда я впервые серьезно заинтересовался криптографией, но так и не сумел найти. Если бы я мог отправиться в Стэнфордскую библиотеку и отобрать современные работы по криптографии, я, возможно, получил бы представление о предмете значительно раньше. Но осенью 1972 года были доступны только несколько классических трудов и ряд невразумительных технических отчетов. Такой проблемы у современного исследователя нет. Напротив, сегодня основная проблема заключается в выборе, с чего начать, среди тысяч статей и десятков книг. А как быть современным программистам или инженерам, которым необходимо просто использовать криптографию? Куда им обратиться? До настоящего времени им пришлось бы затратить многие часы на поиск и изучение научной литературы, прежде чем они могли приступить к разработке криптографических приложений, так бойко описанных в популярных статьях. Именно этот пробел восполняет книга Брюса Шнайера (Вгисе 8сЬпе1ег) «Прикладная криптография» (АррНес! Сгур1о§гарЬу). Начав с целей засекречивания передачи данных и простейших примеров программ для достижения этих целей, Шнайер разворачивает перед нами панораму результатов 20 лет открытых исследований. Содержание книги полностью соответствует ее названию; вы найдете в ней как вполне заурядные причины засекречивания переговоров, когда вы звоните кому-либо впервые по телефону, до применения электронных денег и криптографической защиты выборов.
Предисловие 7 Шнайер, не довольствуясь простым описанием кодов, включил в книгу общие сведения о различных организациях, занятых разработкой и применением криптографических средств, от Международной ассоциации криптологических исследований до АНБ. Когда в конце семидесятых и начале восьмидесятых годов возрос общественный интерес к криптографии, Агентство Национальной Безопасности (АНБ), официальный криптографический орган США, предприняло ряд попыток подавить этот интерес. Первой такой попыткой было письмо ветерана АНБ, по-видимому, действовавшего по собственной инициативе. Письмо было послано в ШЕЕ и предупреждало, что публикация материалов по криптографии нарушает Правила по регулированию международного трафика вооружений (1п1етайопа1 ТгаШс т Агтз Яе§и1айопз, 1ТАК). Однако, как оказалось, эта точка зрения не только не поддерживается самими Правилами, которые содержат точные исключения публикуемых материалов, но и создала неожиданную рекламу как открытой практической криптографии, так и Симпозиуму по теории информации (МогтаИоп ТЬеогу \УогкзЬор) 1977 года. Более серьезная попытка была предпринята в 1980 году, когда АНБ финансировало изучение вопроса Американским советом по образованию с целью убедить Конгресс США предоставить агентству законное право контроля публикаций в области криптографии. Результаты, оказавшиеся далекими от амбиций АНБ, привели к программе добровольного рецензирования работ по криптографии. Исследователям предложили прежде публикации работ запрашивать мнение АНБ, не принесет ли раскрытие результатов исследований вред национальным интересам. К середине восьмидесятых годов основным объектом внимания стала не теория, а практика криптографии. Существующие законы дают АНБ право с помощью Госдепартамента регулировать экспорт криптографического оборудования. Так как бизнес все в большей степени принимает международный характер, и американская доля мирового рынка снижается, возрастало желание использовать единые продукты, как для внутреннего, так и для внешнего рынков. Такие единые продукты были объектами экспортного контроля, в связи с чем организация АНБ получила возможность контролировать не только экспортируемые, но так же и продаваемые в Соединенных Штатах продукты. В то время, когда писались эти строки, на пути практики публичного использования криптографии появилось новое препятствие. Правительство дополнило широко опубликованный и общедоступный стандарт шифрования данных ЭЕ8 засекреченным алгоритмом, реализованным в микросхемах, защищенных от взлома. Эти микросхемы будут содержать зашифрованный механизм правительственного контроля. Отрицательные аспекты такой программы с депонированием ключей простираются от потенциально опасного раскрытия тайны личности до высокой стоимости аппаратной модернизации продуктов, ранее реализованных программным путем. Таким образом, предлагаемое нововведение не вызвало восторга и подверглось широкой критике, особенно со стороны независимых криптографов. Однако некоторые люди видят свое будущее в программировании, а не в политике, и удваивают свои усилия в стремлении предоставить миру мощные средства криптографии, доступные для всеобщего изучения. Резкий отход от мнения, что закон о контроле над экспортом отменит Первую поправку к Конституции, казалось бы, произошел в 1980 году, когда в опубликованные в Федеральном регистре (РейегсА Ке^ег) исправления 1ТАЯ вошло следующее положение: «... условие было добавлено с целью показать, что регулирование экспорта
8 Прикладная криптография технических данных не означает конфликта с правами личности, гарантированными Первой поправкой». Но тот факт, что конфликт между Первой поправкой и законами о контроле над экспортом не разрешен окончательно, очевиден из заявлений, сделанных на конференции, проведенной компанией Я8А Оа*а 8есип*у. Представитель АНБ из отдела контроля над экспортом выразил мнение, что люди, публикующие криптографические программы, находятся «в тени» по отношению к закону. Если это так, то именно на эту «тень» первое издание этой книги пролило немного света. Экспорт приложений для этой книги был разрешен с подтверждением того, что опубликованные материалы не подпадают под юрисдикцию Совета по контролю над вооружением. Однако экспорт опубликованных программ на дисковом носителе был запрещен. По-видимому, сдвиг стратегии АНБ от попыток контроля криптографических исследований к плотному охвату разработки и развертывания криптографических продуктов обусловлен осознанием того факта, что даже величайшие криптографические печатные работы не защищают ни единого бита трафика. Стоя на полке в шкафу, этот том не сделает ничего большего, чем предшествующие ему книги и статьи. Однако он принесет большую пользу, если будет лежать возле рабочей станции, на которой программист пишет криптографический код. Уитфилд Диффи (\УЫЫ1е1с1 Э1Ше), Маунтэйн Вью, Калифорния
Введение В мире различают два типа криптографии: криптография, которая помешает вашей младшей сестре читать ваши файлы, и криптография, которая помешает читать ваши файлы правительствам крупных стран. Эта книга посвящена криптографии второго типа. Если я возьму письмо, запру его в сейфе где-нибудь в Нью-Йорке, а затем прикажу вам прочитать это письмо, то это не безопасность. Это полный мрак. С другой стороны, если я возьму письмо, закрою его в сейфе, затем вручу этот сейф вам вместе с подробными спецификациями, а также сотней таких же сейфов с их комбинациями, чтобы вы и лучшие в мире «медвежатники» могли изучить механизм блокировки, но вы все равно не сможете открыть сейф и прочитать письмо - это и есть безопасность. В течение многих лет криптография этого типа использовалась исключительно в военных целях. Агентство национальной безопасности (АНБ) Соединенных Штатов Америки и его аналоги в бывшем Советском Союзе, Англии, Франции, Израиле и других странах затратили миллиарды долларов на очень серьезную игру, пытаясь обеспечитЬ безопасность собственных линий связи и одновременно - взломать все чужие. Однако частные лица, располагая значительно меньшими средствами и опытом, оказались неспособными защищать свою личную жизнь от любопытства правительств. В течение последних 20 лет наблюдался бурный рост открытых академических исследований в области криптографии. Пока обычные граждане использовали классическую криптографию, компьютерная криптография, еще со времен Второй мировой войны, применялась во всем мире исключительно в военных целях. Сегодня современная компьютерная криптография широко практикуется и за стенами военных ведомств. Любители получили возможность использовать средства безопасности, которые позволяют защититься от могущественных соперников, в том числе и многолетнюю защиту от военных ведомств. Но нужна ли обычным людям защита подобного рода? Да. Они могут планировать политическую кампанию, обсуждать налоги либо планировать незаконные действия. Они могут конструировать новую продукцию, обсуждать рыночную стратегию или планировать захват контроля над конкурирующей фирмой. Либо же они могут жить в стране, которая не соблюдает право граждан на личную жизнь. Возможно, они занимаются чем-то таким, что кажется им законным, хотя это не так. Какова бы ни была причина, линии связи и данные должны быть личными, тайными и закрытыми от постороннего доступа. Эта книга публикуется в смутное время. В 1994 году администрация Клинтона одобрила Стандарт шифрования с депонированием ключей (Езсго\уес1 Епсгур1юп 81апс1агс1), в том числе микросхему СНррег и плату ЕоЛехха, и подписала закон о Цифровой телефонии. Обе Инициативы пытаются гарантировать правительству возможность проводить электронный слежку. Начинают сбываться некоторые мрачные предсказания Оруэлла: правительство получает право на прослушивание личных переговоров, а человек, пытающийся скрыть свои секреты, может попасть в беду. Конечно, законодательство всегда разрешало слежку по решению суда, однако впервые люди сами обязаны предпринимать активные меры, чтобы сделаться доступными для слежки. Эти инициативы - не просто
10 Прикладная криптография предложения правительства в некой абстрактной области, это упреждающая и односторонняя попытка присвоить права, ранее принадлежащие людям. СНррег и цифровая телефония не способствуют сохранению личной тайны, но вынуждают людей безусловно доверять правительству в надежде на то, что оно уважает их частную жизнь. Те же самые власти, которые незаконно записывали телефоны Мартина Лютера Кинга, могут без труда прослушать телефон, защищенный микросхемой СНррег. В недалеком прошлом местные полицейские власти в Мэриленде, Коннектикуте, Вермонте, Джорджии, Миссури и Неваде привлекались многими судами к гражданской или уголовной ответственности за незаконное прослушивание. Идея внедрения технологии, которая может привести к появлению полицейского государства - плохая идея. Урок в том, что недостаточно защитить себя законами, нужно защитить себя математикой. Шифрование слишком важно, чтобы оставить его только правительствам. Эта книга предоставит вам необходимые инструменты, необходимыми для защиты ваших секретов; можно объявить незаконными средства криптографии, но информацию - никогда. Как читать эту книгу Я писал Прикладную криптографию как живое введение в область криптографии и как исчерпывающий справочник. Я пытался сохранить читаемость текста, но не приносил в жертву точность. Эта книга задумывалась не как математическая работа. И хотя я умышленно не искажал информацию, я не собираюсь терять темп, а потому нередко опускаю теорию. Для читателей, интересующихся теоретическими выкладками, приведены многочисленные ссылки на академическую литературу. Глава 1 представляет собой введение в криптографию, определяет множество терминов; кроме того, в ней кратко рассматривается криптография «докомпьютерной эры». Главы 2—6 (Часть I) описывают криптографические протоколы, т.е. то, что могут сделать люди с помощью криптографии. Диапазон протоколов простирается от простых (для передачи шифрованных сообщений от одного человека другому) до сложных (подбрасывания монеты по телефону) и эзотерических (безопасное и анонимное обращение электронных денег). Некоторые из протоколов очевидны, другие - поразительны. Криптография может решить множество проблем, о которых люди порой и не подозревают. Главы 7—10 (Часть И) содержат обсуждение методов криптографии. Все четыре главы этого раздела важны для самых популярных применений криптографии. В главах 7 и 8 рассказывается о ключах: какова должна быть длина ключа, чтобы он обеспечивал безопасность, как генерировать, хранить и распределять ключи и т.д. Управление ключами представляет собой труднейшую часть криптографии - нередко это ахиллесова пята систем, надежных во всех иных отношениях. В главе 9 рассматриваются различные методы использования криптографических алгоритмов, а в главе 10 приведено все остальное: выбор, реализация и применение алгоритмов. Главы 11—23 (Часть III) содержит список алгоритмов. В главе 11 приведены необходимые математические основы. Она нужна, только если вас интересуют алгоритмы с открытым ключом. Если же вы собираетесь использовать ЭЕ8 (или что-
Введение 11 либо подобное), ее можно опустить. В главе 12 обсуждается алгоритм БЕ8, его история, стойкость и различные версии. В главах 13, 14 и 15 рассказывается о других блочных алгоритмах; если же вам нужно что-либо надежнее, чем алгоритм БЕ8, сразу переходите к разделам об алгоритмах ГОЕА и тройном БЕ8. При желании узнать о группе алгоритмов, включающей алгоритмы, более надежные, чем БЕ8, прочитайте всю главу. В главах 16 и 17 обсуждаются потоковые алгоритмы. В главе 18 подробно рассматриваются однонаправленные хэш-функции; среди них самыми популярными можно назвать МЭ8 и 8НА, хотя мы обсудим и множество других. В главе 19 обсуждаются алгоритмы шифрования с открытым ключом, а в главе 20 - алгоритмы цифровой подписи с открытым ключом. В главе 21 обсуждаются алгоритмы идентификации с открытым ключом, а в главе 22 - алгоритмы обмена ключей с помощью криптографии с открытым ключом. В числе важнейших, можно назвать алгоритмы К8А, Э8А, Фиата-Шамира и Диффи-Хеллмана, соответственно каждой главе. Глава 23 содержит ряд эзотерических алгоритмов и протоколов с открытым ключом, математика в этой главе достаточно сложна, так что пристегните ремни. Главы 24 и 25 (Часть IV) перенесут вас в реальный мир криптографии. В главе 24 обсуждаются некоторые современные применения алгоритмов и протоколов, в то время как глава 25 затрагивает некоторые политические аспекты криптографии. Разумеется, эти главы никоим образом нельзя полагать исчерпывающими. Кроме того, в книгу включены листинги исходных кодов 10 алгоритмов, обсуждаемых в части III. В силу ограниченности объема книги я не сумел привести коды полностью, а иначе криптографический код нельзя экспортировать. (Интересно, что Госдепартамент разрешил экспортировать первое издание этой книги с исходными кодами, но запретил экспортировать компакт-диск с теми же исходными кодами. О причинах можно только гадать.) Соответствующий набор дисков с исходными кодами содержит существенно больше исходных кодов, чем я мог включить в эту книгу; возможно, это самая большая коллекция криптографических исходных кодов, которую можно найти за стенами военных ведомств. Пока что я могу переслать диски с исходным кодом только гражданам США и Канады, живущим в этих странах, но, будем надеяться, когда-нибудь положение изменится. Если вы собираетесь использовать или испытать алгоритмы, описанные к книге, постарайтесь достать диск. К одному из недостатков книги можно отнести то обстоятельство, что ее энциклопедический характер ухудшает читаемость. Это верно, однако я хотел создать единый справочник для тех, кто может столкнуться с каким-либо алгоритмом в академической литературе или при использовании какого-то продукта. Читателям же, которым необходимо учебное руководство, приношу извинения. Все же впервые множество достижений в области криптографии собрано под одной обложкой. Однако соображения объема заставили меня оставить многое за пределами этой книги. Я отобрал темы, которые показались мне самыми важными, практическими или интересными. Если я не мог глубоко обсудить какую-нибудь тему, я приводил ссылки на соответствующие статьи или работы, где этот вопрос обсуждается подробнее. В этой книге я сделал все, что мог, чтобы отыскать и исправить ошибки, однако многие знатоки уверяли меня, что это невыполнимая задача. Конечно, во втором издании ошибок намного меньше, чем в первом. Перечень ошибок можно получить у меня, кроме того, он периодически рассылается в телеконференции Изепе! зс1.сгурГ Если кто-
12 Прикладная криптография нибудь из читателей обнаружит ошибку, пожалуйста, пусть сообщит мне об этом. Каждому читателю, который первым обнаружит данную ошибку в книге, я бесплатно вышлю диск с исходными кодами. Благодарности Список людей, приложивших руку к созданию этой книги, может показаться бесконечным, но все они достойны упоминания. Мне хотелось бы поблагодарить Дона Альвареса (Боп А1уагег), Росса Андерсона (Козз Апбегзоп), Дэйва Бейленсона (Бауе Ва1епзоп), Карла Барруса (Каг1 Ваггиз), Стива Белловина (8!еуе ВеИоут), Дэна Бернштайна (Бап Вегпз!ет), Эли Бихама (ЕН ВШат), Джоан Бояр (1оап Воуаг), Карен Купер (Кагеп Соорег), Вита Диффи (\УЫ! БШйе), Джоан Фейгенбаум (1оап Ре1§епЪашп), Фила Кана (РЫ1 Кат), Нила Коблица (Ыеа1 КоЫйг), Ксуейа Лай (ХиеДа ЬаГ), Тома Леранта (Тот Ьегап!Ь), Майка Марковица (М1ке Магко\уйг), Ральфа Меркла (Ка1рЬ Мегк1е), Билла Паттона (ВШ Раиоп), Питера Пирсона (Ре!ег Реагзоп), Чарльза Пфлегера (СЬаНез РЛее^ег), Кена Пиццини (Кеп Р1221П1), Барта Пренела (Ваг! Ргепее1), Марка Риордана (Магк Кюгбап), Йоахима Шурмана (.ГоасЫт БсЬигтап) и Марка Шварца (Маге 8сЬ\уаг!2) за чтение и редактирование всего первого издания или его частей; Марка Воклера (Маге УаисЫг) за перевод первого издания на французский язык; Эйба Абрахама (АЬе АЬгаЬаш), Росса Андерсона (Козз Апбегзоп), Дэйва Бенисара (Бауе Вашзаг), Стива Белловина (8!еуе ВеИоут), Эли Бихама (ЕН ВШат), Мэтта Бишопа (Маи В1зЬор), Мэтта Блейза (Маи В1аге), Гэри Картера (Оагу Саг!ег), Жана Комениша (1ап СотетзсЬ), Клода Крепо (С1аибе Сгереаи), Джоан Дэймен (1оап Баетеп), Хорхе Давила (1ог^е БауНа), Эда Доусона (Еб Бахузоп), Вита Диффи (\УЫ! БШйе), Карла Эллисона (Саг1 ЕШзоп), Джоан Фейгенбаум (1оап Ре1§епЪашп), Нильса Фергюсона (№е1з Рег^изоп), Мэтта Франклина (Маи РгапкНп), Розарио Женнаро (Козапо Оеппаго), Дитера Голлмана (Б1е!ег СоИтапп), Марка Горески (Магк Оогезку), Ричарда Грэйвмана (ИсЬагб Огауетап), Стюарта Хабера (8!иаг! НаЬег), Джингмана Хе (Лп§тап Не), Боба Хога (ВоЬ Но§ие), Кеннета Айверсона (КеппеФ 1уегзеп), Маркуса Джекобссона (Магкиз 1акоЬззоп), Берта Калиски (Виг! КаИзкО, Фила Кана (РЫ1 Кат), Джона Келси (ЛоЪп Ке1зеу), Джона Кеннеди (1оНп Кеппебу), Ларса Кнудсена (Ьагз Кпибзеп), Пола Кочера (Раи1 КосЬег), Джона Лэдвига (1оЬп Ьаб\У1§), Ксуейа Лай (ХиеДа Ьа1), Аржена Ленстру (Афп Ьепзиа), Пола Лейланда (Раи1 Ьеу1апб), Майка Марковица (М1ке Магко\У1!г), Джима Мэсси (Лш Маззеу), Брюса МакНейра (Вгисе МсКац), Вильяма Хью Мюррея (\УПНат Ни§Ь Миггау), Роджера Нидхема (Ко§ег КеебЬат), Клифа Неймана (СНГ Ыеитап), Кейсу Найберг (Ка1за ИуЬег§), Люка О'Коннора (Ьике О'Соппог), Питера Пирсона (Ре!ег Реагзоп), Рене Перальта (Кепе РегаНа), Барта Пренела (Ваг! Ргепее1), Израэля Радай (У1згае1 Каба1), Мэтта Робшоу (Маи КоЪзЬа\у), Майкла Роу (МюЬае1 Кое), Фила Рогуэя (РЫ1 Ко§а\уау), Эви Рубина (Ау1 КиЫп), Пола Рубина (Раи1 КиЫп), Селвина Рассела (8е1\ууп КиззеИ), Казуе Сако (Кагие 8ако), Махмуда Салмасизадеха (МаНтоиб 8аНпаз12абеЬ), Маркуса Стадлера (Магкиз 8!аб1ег), Дмитрия Титова (Бпн!гу ТНоу), Джимми Аптона (Лшту Бр!оп), Марка Воклера (Маге УаисЫг), Сержа Воденэ (8ег§е Уаибепау), Гидеона Ювала (СЛбеоп Уиуа1), Глена Зорна (С1еп 2от) и многих безымянных государственных служащих за чтение и редактирование всего второго издания или его частей; Лори Брауна (Ьа\упе Вгоуп), Лизу Кэнди (Ье1за Сапб1е), Джоан Дэймен (1оап Баетеп), Питера Гутмана (Ре!ег Ои!тапп), Алана Инсли (А1ап 1пз1еу), Криса Джонстона (СКлз 1оЬпз!оп), Джона Келси (1оЬп Ке1зеу), Ксуейа Лай (ХиеДа Ьа1), Билла Лейнингера (ВШ Ьетт§ег), Майка Марковица (М1ке Магко\УЙ2), Ричарда
Введение 13 Аутербриджа (ШсЬагб Ои{егЪпс1§е), Питера Пирсона (Ре1ег Реагзоп), Кена Пиццини (Кеп Р1221П1), Колина Пламба (СоИп Р1итЬ), К8А ВаХа, 8есип1у, 1пс, Майкла Роу (МюЬае1 Кое), Майкла Вуда (М1сЬае1 \\^оос!) и Фила Циммерманна (РЫ1 2иптегтапп) за предоставленные исходные коды; Пола МакНерланда (Раи1 Мас№г1апс1) за подготовку рисунков к первому издания; Карен Купер (Кагеп Соорег) за редактирование второго издания; Бет Фридман (ВеЙ1 Рпебтап) за сверку второго издания; Кэрол Кеннеди (Саго1 Кеппебу) за работу над предметным указателем для второго издания; читателей зш.сгур* и почтового списка СурЬегрипкз за комментирование идей, ответы на вопросы и поиск ошибок первого издания; Рэнди Сюсс (Капбу 8еизз) за предоставление доступа к Мете!; Джеффа Дантермана (1е1Т Бшиетапп) и Джона Эриксона (1оп Епскзоп) за то, что помогли мне приступить к работе; семью 1пз1еу (в произвольном порядке) за стимуляцию, воодушевление, поддержку, беседы, дружбу и обеды; и АТ&Т Ве11 ЬаЬз, воодушевившей меня и сделавшей все это возможным. Все эти люди помогли создать гораздо лучшую книгу, чем я бы смог создать в одиночку. Брюс Шнайер Оак Парк, Иллинойс 5сЬпе1ег@соип1:еграпе.сот
Об авторе БРЮС ШНАЙЕР - президент СоигДеграпе 8у$1;етз, Оак Парк, штат Иллинойс, консультативной фирмы, специализирующейся в криптографии и компьютерной безопасности. Кроме того, Брюс - автор книг «Е-МаИ ЕесигНу» (Защита электронной почты), издательство 1оЬп ^Пеу&8опз, 1995 и «Рго1ес1 Уоиг МасШозЫ (Защита компьютеров МасиЦозЬ), издательство РеасЬрй Ргезз, 1994. Автор десятков статей по криптографии в ведущих журналах. Один из редакторов журналов Вг. ОоЪЪ'з Лита! (Журнал доктора Добба), где редактирует колонку «А1§опЙ1т5 АИеу» (Аллея алгоритмов) и СотрШег апс1 СоттитсаИот ЕесигИу Яеугеш (Обзор безопасности компьютеров и линий связи). Брюс входит в совет директоров 1п(егпа(юпа1 АззоЫабоп Гог Сгур1:о1о§1С КезеагсЬ (Международная ассоциация криптологических исследований), член экспертной комиссии Е1ес(гошс Рпуасу ЫГогтабоп СеШег (Центр защиты электронной информации) и комитета по программированию Ые\у 8есигку Рагабщтз ^огкзЬор (Семинар по новым системам защиты). Помимо того, Брюс находит время для частых лекций по криптографии, компьютерной безопасности и защите частной жизни.
ГЛАВА 1. Основные понятия 1.1. Терминология Отправитель и получатель Допустим, отправителю необходимо послать сообщение получателю. Более того, этот отправитель желает сохранить сообщение в тайне, т.е сделать так, чтобы человек, перехвативший сообщение, не смог его прочесть. Сообщения и шифрование Исходное сообщение называется открытым текстом. Процесс маскировки сообщения способом, позволяющим скрыть его суть, называется зашифрованием. Зашифрованное сообщение называется шифртекстом. Процедура обратного превращения шифртекста в открытый текст называется расшифрованием1. Эта последовательность показана на Рис. 1.1. (Если вы хотите следовать стандарту 180 7498-2, используйте (в английских текстах) термины «еппрЬег» и «бешрЬег» вместо «епсгур!» («зашифровать») и «бесгурЪ> («расшифровать»)2. Искусство и наука защиты сообщений называется криптографией, а специалисты, занимающиеся ей - криптографами. Криптоаналитиками называют людей, которые используют криптоанализ - искусство и науку взлома шифртекстов, т.е. умение срывать маску3. Отрасль математики, охватывающая как криптографию, так и криптоанализ, называется криптологией, а люди, которые ей занимаются - криптологами. Как правило, современные криптологи хорошо знают математику - им просто не обойтись без нее. Рис. 1.1. Зашифрование и расшифрование 1 Просто шифрованием в русскоязычной литературе по криптографии принято называть оба процесса - и зашифрование, и расшифрование. Тем не менее, часто в этой книге слово «шифрование» будет употребляться как синоним к «зашифрованию». - Прим. ред. 2 Вероятно, это связано с тем, что у некоторых народов слова «епсгур!» и «бесгурЪ> считаются кощунственными, поскольку английское слово «сгурЪ> переводится как «склеп, могила», т.е. относятся к погребениям. - Прим. перев. 3 И они пытаются выполнить дешифрование, т.е. восстановить исходный текст без знания ключа. Обратите внимание на разницу в терминах «расшифрование» и «дешифрование». - Прим. ред.
16 Прикладная криптография Обозначим открытый текст сообщения буквой М (от английского «шезза^е» - сообщение), а просто открытый текст - буквой Р (от «р1аш(ех(» - открытый текст). Это может быть последовательность (поток) битов, текстовый файл, точечный рисунок, оцифрованный звук, цифровое видеоизображение и т.д. Для компьютеров М - это просто двоичные данные. (Во всех следующих главах этой книги рассматриваются только двоичные данные и компьютерная криптография.) Открытый текст предназначен для хранения или передачи. В любом случае, М - это сообщение, которое необходимо зашифровать. Обозначим шифртекст буквой С (от английского «щрЬеЛех!»). Это тоже двоичные данные, иногда того же размера, что и Л/, а иногда большего. (Если шифрование сочетается со сжатием, размер С может быть меньше, чем М. Однако собственно шифрование не обеспечивает сжатие информации.) Функция зашифрования Е, оперируя с М, создает С. Или в математической форме: Е {М)~ С В обратном процессе функция расшифрования Д оперируя с С, восстанавливает М: Я(С) = М Поскольку смысл зашифрования и последующего расшифрования сообщения заключается в восстановлении исходного открытого текста, справедливо следующее равенство: 0(Е(М)) = М Проверка подлинности, целостность и неотрицание авторства Помимо обеспечения конфиденциальности, криптография часто используется для решения иных задач: ✓ Проверка подлинности (аутентификация). Получатель сообщения должен иметь возможность установить его источник, а злоумышленник - не способен замаскироваться под кого-либо другого. ✓ Целостность. Получатель сообщения может проверить, не было ли сообщение изменено в процессе доставки, а злоумышленник - не способен выдать ложное сообщение за подлинное. ✓ Неотрицание авторства. Отправитель сообщения впоследствии не должен иметь возможности ложно отрицать отсылку сообщения. Точно так же, как при личном общении, при общении с помощью компьютеров тоже существуют жизненно важные требования к процессу обмена информацией. Например, критически важно, что данное лицо является именно тем, за кого себя выдает, что какие- то документы, скажем, водительское удостоверение, медицинская степень или паспорт - подлинные, что документ, предположительно полученный от кого-то, доставлен именно от этого лица и так далее. Именно это обеспечивает решение задач проверки подлинности, целостности и неотрицания авторства.
ГЛАВА 1. Основные понятия 17 Алгоритмы и ключи Криптографический алгоритм, называемый также шифром, представляет собой математическую функцию, которая используется для зашифрования и расшифрования информации. Обычно это две связанные функции: одна для зашифрования, а другая для расшифрования. Если защита, обеспечиваемая алгоритмом, основана на сохранении в тайне самого алгоритма, это ограниченный алгоритм. Ограниченные алгоритмы представляют некоторый исторический интерес, но совершенно не соответствуют современным стандартам. Группа пользователей, более-менее значительной численности, не может использовать такие алгоритмы, так как всякий раз, когда пользователь покидает группу, оставшиеся члены должны переходить на другой алгоритм. Алгоритм должен быть заменен и в случае, если кто-нибудь посторонний случайно узнает секрет. Что еще хуже, ограниченные алгоритмы не допускают эффективного контроля или стандартизации. Каждая группа пользователей должна использовать собственный уникальный алгоритм. Такие группы не могут использовать открытые аппаратные или программные продукты - злоумышленник может приобрести такой же продукт и раскрыть алгоритм. Этим группам приходится разрабатывать и реализовывать собственные алгоритмы. Если же в группе нет опытного криптографа, ее члены не сумеют оценить надежность используемого алгоритма. Несмотря на указанные фундаментальные недостатки, ограниченные алгоритмы необычайно популярны в приложениях с низким уровнем защиты. Пользователи либо не осознают проблем, связанных с безопасностью своих систеК*, либо не заботятся о них вовсе. Современная криптография решает эти проблемы с помощью ключа, обозначаемого буквой К. Такой ключ может быть любым значением, выбранным из большого множества. Множество возможных ключей называют пространством ключей. Ключ используется в обеих операциях - как зашифрования, так и расшифрования (т.е. они зависят от ключа, и это обстоятельство указывается индексом К). Таким образом, теперь функции зашифрования и расшифрования принимают следующий вид: ЕК(М)=С Е>к (С) = М При этом справедливо следующее равенство (см. Рис. 1.2): В к (Ек (Щ) = М В некоторых алгоритмах для зашифрования и расшифрования используют различные ключи (см. Рис. 1.3). Иными словами, ключ зашифрования (Кх) отличается от соответствующего ключа расшифрования (К2). В этом случае: ЕКх(М)=С Е>к2 (О = м Ок2 (Ек{ (Щ) - М
18 Прикладная криптография Надежность этих алгоритмов полностью зависит от ключа (или ключей), а не от самих алгоритмов. Это означает, что алгоритм может быть опубликован и проанализирован. Программные продукты, использующие этот алгоритм, могут широко распространяться. Причем знание вашего алгоритма злоумышленником не имеет значения - если он не знает конкретный ключ, он не сумеет прочесть ваши сообщения. Ключ Ключ Открытый текст Зашифрование Шифртекст Расшифрование Первоначальный открытый текст Рис. 1.2 Зашифрование и расшифрование с помощью ключа Ключ шифрования Ключ расшифрования Открытый текст > Зашифрование Шифртекст 1 > Расшифрование Первоначальный открытый текст Рис. 1.3 Зашифрование и расшифрование с помощью двух различных ключей Таким образом, криптосистема представляет собой алгоритм плюс все возможные открытые тексты, шифртексты и ключи. Симметричные алгоритмы Известны два основных типа алгоритмов, основанных на использовании ключей: симметричные алгоритмы и алгоритмы с открытым ключом. Симметричные алгоритмы, иногда называемые условными алгоритмами, это те, в которых ключ зашифрования может быть вычислен из ключа расшифрования, и наоборот. В большинстве симметричных алгоритмов ключи зашифрования и расшифрования одинаковы. Эти алгоритмы, называемые также алгоритмами с секретным ключом или алгоритмами с единым ключом, требуют, чтобы отправитель и получатель перед началом передачи секретных сообщений согласовали используемый ключ. Защита, обеспечиваемая симметричными алгоритмами, определяется ключом; раскрытие ключа означает, что шифровать и расшифровать сообщения сможет кто угодно. До тех пор, пока передаваемая информация должна оставаться тайной, ключ должен храниться в секрете. Зашифрование и расшифрование с помощью симметричного алгоритма записывается следующим образом: ЕК(М)=С Е>к (О = М
ГЛАВА 1. Основные понятия 19 Симметричные алгоритмы подразделяются на две категории. Одни алгоритмы обрабатывают открытый текст побитово (иногда побайтово). Такие алгоритмы называют потоковыми алгоритмами или потоковыми шифрами. Другие алгоритмы обрабатывают группы битов открытого текста. Эти группы битов называют блоками, а алгоритмы - блочными алгоритмами или блочными шифрами. В современных компьютерных алгоритмах типичный размер блока составляет 64 бита. Это достаточно большое значение, чтобы затруднить анализ, и в то же время достаточно малое - чтобы быть удобным для работы. (До появления компьютеров алгоритмы обычно обрабатывали открытый текст посимвольно. Такие алгоритмы можно представлять как потоковые алгоритмы, обрабатывающие потоки символов.) Алгоритмы с открытым ключом Алгоритмы с открытым ключом (называемые также асимметричными алгоритмами) устроены таким образом, что ключ, используемый для зашифрования, отличается от ключа расшифрования. Более того, ключ расшифрования не может быть (по крайней мере, в течение разумного периода) вычислен из ключа зашифрования. Такие алгоритмы называют алгоритмами с открытым ключом, поскольку ключ зашифрования может быть открытым: кто угодно может воспользоваться этим ключом для зашифрования сообщения, однако расшифровать сообщение может только конкретный человек, знающий ключ расшифрования. В таких системах ключ зашифрования часто называют открытым ключом, а ключ расшифрования - закрытым ключом. Закрытый ключ нередко называют секретным ключом, однако во избежание путаницы с симметричными алгоритмами, здесь этот термин не используется. Зашифрование с открытым ключом К обозначается следующим образом: ЕК(М)=С Хотя открытый и закрытый ключи различны, расшифрование с соответствующим закрытым ключом обозначается как: В к (О = М В некоторых случаях сообщения следует зашифровывать закрытым ключом, а расшифровывать - открытым ключом. Такой метод используют в цифровых подписях (см. Раздел 2.6). Несмотря на возможную путаницу, эти операции, соответственно, обозначаются следующим образом: ЕК(М)=С Вк(С) = М Криптоанализ Все предназначение криптографии заключается в сохранении открытого текста (или ключа, или и того, и другого) в тайне от злоумышленников (называемых также соперниками, противниками, перехватчиками, взломщиками, оппонентами или просто врагами). Предполагается, что злоумышленники располагают неограниченным доступом к линиям связи между отправителем и получателем. Криптоанализом называют науку восстановления (дешифрования) открытого текста без доступа к ключу. Успешный криптоанализ позволяет восстановить открытый текст или
20 Прикладная криптография ключ. Кроме того, криптоанализ позволяет обнаружить слабые места в криптосистемах, что, в конце концов, приведет к таким же результатам. (Раскрытие ключа без привлечения методов криптологии называют компрометацией.) Попытка криптоанализа называется атакой. Фундаментальное допущение криптоанализа, впервые сформулированное в девятнадцатом веке Датчманом А. Керкхоффсом (Ои1сЬшап А. КегскЬойз), состоит в том, что секретность сообщения всецело зависит от ключа [794]. Керкхоффс исходит из допущения, что криптоаналитик располагает полным описанием алгоритма и его реализации. (Конечно, можно предположить, что ЦРУ не имеет привычки сообщать Моссаду о своих криптографических алгоритмах, но Моссад, вероятно, так или иначе, узнает их.) Хотя в реальных условиях криптоаналитики не всегда обладают подробной информацией, такое предположение вполне допустимо. Если противник не может взломать алгоритм, даже зная, как он работает, тем более ему не удастся это сделать, если он этого не знает. Известны четыре основных типа криптоаналитических атак. Разумеется, в каждом случае предполагается, что криптоаналитик полностью знает используемый алгоритм шифрования: ✓ Атака на основе только шифртекста. Криптоаналитик располагает шифртекстами нескольких сообщений, зашифрованных одним и тем же алгоритмом шифрования. Его задача состоит в дешифровании как можно большего числа сообщений. Еще лучше, если он сумеет определить ключ (ключи), использованный для шифрования сообщений. Это позволит расшифровать другие сообщения, зашифрованные теми же ключами. Дано: Сх = Ек (Л), С2 = Ек (Р2\ ...С> = Ек (Л) Определить: либо Л, ?2, • • • Л; К либо алгоритм восстановления Р1+{ из С7+1 = Ек(Р /+]) ✓ Атака на основе открытого текста. Криптоаналитик располагает доступом не только к шифртекстам нескольких сообщений, но и открытому тексту этих сообщений. Его задача состоит в определении ключа (или ключей), примененного для шифрования сообщений, с целью дешифрования других сообщений, зашифрованных тем же ключом (ключами). Дано: Л, С, = Ек(Рг), Ръ С2 = Ек(Р2\ ... Рь С; = Ек(Р,) Определить: либо к, либо алгоритм восстановления Р1+1 из С/+1 = Ек(Р!+\) %/ Атака на основе подобранного открытого текста. У криптоаналитика есть доступ не только к шифртекстам и открытым текстам нескольких сообщений, но и возможность выбирать открытый текст для шифрования. Это предоставляет больше возможностей, чем вскрытие с использованием открытого текста, так как криптоаналитик может выбирать для шифрования блоки открытого текста, что может предоставить дополнительную информацию о ключе. Его задача состоит в раскрытии ключа (или ключей), примененного для шифрования сообщений, или алгоритма, позволяющего дешифровать все новые сообщения, зашифрованные тем же ключом (или ключами). Дано: РС\ — Ек(Р!), Р2, С2 = Ек(Р2),... Р„ С, = Ек(Р,) Где криптоаналитик может выбирать Р\,Р29... Л
ГЛАВА 1. Основные понятия 21 Получить: либо к, либо алгоритм определения Р^х из С,+х = Ек{Р^х) ✓ Атака на основе адаптивно подобранного открытого текста. Это особый случай атаки с использованием подобранного открытого текста. Криптоаналитик может не только выбирать шифруемый текст, но также уточнять свой последующий выбор на основе полученных ранее результатов шифрования. Так, при вскрытии с использованием подобранного открытого текста криптоаналитик может выбрать для шифрования только один крупный блок открытого текста. При адаптивном же вскрытии с использованием подобранного открытого текста он может выбрать меньший блок открытого текста, затем выбрать следующий блок, используя результаты первого выбора и т.д. Кроме перечисленных типов, известны также, по крайней мере, еще три типа криптоаналитических атак. ✓ Атака на основе подобранного шифртекста. Криптоаналитик может выбирать различные шифртексты для расшифрования, а также имеет доступ к расшифрованным открытым текстам. Например, у криптоаналитика есть доступ к «черному ящику», выполняющему автоматическое расшифрование. Его задача состоит в раскрытии ключа. Дано: Си Р\ = Ок(Сх), С2, />2 = ^(С2),... С„ /», = !>*(<:,) Получить: к Такой тип вскрытия применим, главным образом, к алгоритмам с открытым ключом. Эта тема обсуждается в разделе 19.3. Кроме того, вскрытие с использованием подобранного шифртекста в некоторых случаях эффективно против симметричных алгоритмов. (Иногда вскрытие с совместным использованием подобранного открытого текста и подобранного шифртекста называют вскрытием с использованием подобранного текста.) ✓ Атака на основе подобранного ключа. Такой тип вскрытия, конечно же, не означает, что криптоаналитик может выбирать ключ - просто криптоаналитик кое- что знает о связях между различными ключами. Этот странный, таинственный, и не слишком практичный тип вскрытия обсуждается в разделе 12.4. ✓ Бандитский криптоанализ. Для получения ключа «криптоаналитик» прибегает к угрозам, шантажу или пыткам. Возможно также взяточничество, которое иногда называют вскрытием с покупкой ключа. Это очень мощные и, зачастую, самые эффективные методы взлома алгоритма. Атаки с использованием известного открытого текста и подобранного открытого текста встречаются чаще, чем можно думать. В среде криптоаналитиков нельзя назвать неслыханными факты добычи открытого текста шифрованного сообщения или подкупа лица, которое должно будет зашифровать избранное сообщение. Возможно, никого подкупать и не придется. Например, передайте письмо послу, и, возможно, вы обнаружите, что оно было зашифровано и отправлено в его страну для изучения. Во многих сообщениях используют стандартные начала и окончания, которые могут быть известны криптоаналитику. В этом отношении особенно уязвимы шифрованные исходные коды программ из-за частого использования ключевых слов: #йе^±пе, зЪгисЪ, е1зе, геЪигп и т.д. Те же проблемы и у шифрованного исполняемого кода: функции, циклические структуры и т.д. Во время Второй мировой войны в борьбе с
22 Прикладная криптография немцами и японцами успешно использовались вскрытия с известным открытым текстом (и вскрытия с подобранным шифртекстом). В книгах Дэвида Кана (ЭауМ КаЬп) [794, 795, 796] можно найти исторические примеры вскрытий этих типов. Никогда не забывайте предположение Керкхоффса: если надежность вашей новой криптосистемы опирается на незнание взломщиком внутренних принципов работы алгоритма, вы пропали. Вы заблуждаетесь, если верите, что сохранение в тайне принципа работы алгоритма защитит криптосистему в большей степени, чем анализ алгоритма научным сообществом. А если вы полагаете, что никто не сможет дизассемблировать ваш исходный код и восстановить алгоритм, то вы просто наивны. (В 1994 году такое случилось с алгоритмом КС4, см. раздел 17.1.) Лучшие алгоритмы шифрования - это те, которые были опубликованы, годами вскрывались лучшими криптографами мира, и все-таки остались несокрушенными. (Агентство АНБ хранит свои алгоритмы в тайне от посторонних, но у них работают лучшие криптографы мира, а у вас - нет. Кроме того, эти криптографы обсуждают свои алгоритмы друг с другом, полагаясь на способность коллег обнаружить слабости в работе.) Конечно, у криптоаналитиков не всегда есть доступ к алгоритмам, как было, например, при вскрытии Соединенными Штатами японского дипломатического кода (Р1ЖРЬЕ [794]) в ходе Второй мировой войны, но нередко такой доступ имеется. Если же алгоритм используется в коммерческой программе защиты, то дизассемблирование программы и раскрытие алгоритма - вопрос всего лишь времени и денег. Если же алгоритм используется в военной системе связи, это так же вопрос только времени и денег, необходимых, чтобы купить (или украсть) аппаратуру и реконструировать алгоритм. Люди, которые утверждают, что использует непроницаемые шифры только потому, что их никто еще не сумел взломать - либо гении, либо дураки. К несчастью, в мире значительно больше последних. Берегитесь людей, превозносящих достоинства своих алгоритмов, но отказывающихся их опубликовать. Доверять таким алгоритмам - все равно, что верить в целебные свойства знахарских снадобий. Хорошие же криптографы при определении хороших и плохих алгоритмов шифрования всегда полагаются на мнение коллег. Стойкость алгоритмов В зависимости от сложности взлома, различные алгоритмы обеспечивают различные степени защиты. Если взлом алгоритма обойдется дороже, чем сами зашифрованные данные, вы, вероятно, в безопасности. Если время, необходимое для взлома алгоритма, больше, чем время, в течение которого зашифрованные данные должны сохраняться в тайне, вы, вероятно, тоже в безопасности. Если объем данных, зашифрованных одним ключом, меньше, чем объем данных, необходимых для взлома алгоритма, вы и тогда, вероятно, в безопасности. Я говорю «вероятно», поскольку всегда есть шанс появления новых достижений криптоанализа. С другой стороны, ценность большинства данных со временем снижается. Важно, чтобы значимость данных всегда оставалась меньшей, чем стоимость взлома защитной системы.
ГЛАВА 1. Основные понятия 23 Ларе Кнудсен (Ьагз Кпибзеп) классифицировал сложность взлома алгоритмов по нескольким категориям. Они перечислены ниже, в порядке убывания значимости [858]: ✓ Полное вскрытие. Криптоаналитик находит ключ К, такой, что А: (О = ✓ Глобальная дедукция. Криптоаналитик находит альтернативный алгоритм А, эквивалентный Ас (С) без знания К. ✓ Случайная (или частичная) дедукция. Криптоаналитик находит (например, крадет) открытый текст для перехваченного шифрованного сообщения. ✓ Информационная дедукция. Криптоаналитик добывает некоторую информацию о ключе или открытом тексте. Такой информацией могут быть несколько битов ключа, какие-то сведения о форме открытого текста и т.д. Алгоритм безусловно стоек, если восстановление открытого текста невозможно при любом объеме шифртекста, полученного криптоаналитиком. На поверку же, невозможно раскрыть - даже при бесконечных ресурсах - только текст, зашифрованный одноразовыми блокнотами (см. раздел 1.5). Все остальные криптосистемы можно вскрыть с использованием только шифртекста простым перебором возможных ключей и проверкой осмысленности полученного открытого текста. Такой метод называется лобовой атакой (Ъги1е-/огсе) (см. раздел 7.1). Криптография занимается, главным образом, криптосистемами, которые сложно взломать вычислительными методами. Алгоритм считается вычислительно стойким, если не может быть взломан с помощью доступных (как сейчас, так и в будущем) вычислительных ресурсов. Конечно, толковать термин «доступные ресурсы» можно как угодно. Сложность той или иной атаки можно оценить различными путями (см. раздел 11.1): ✓ По сложности данных, т.е. по объему исходных данных, необходимых для атаки. ✓ По сложности обработки, т.е. по времени, необходимому для атаки. Часто называется фактором трудозатрат. ✓ По требованиям к памяти компьютера, т.е. по объему памяти компьютера, необходимому для атаки. Приблизительно сложность атаки определяется максимальной оценкой, подсчитанной согласно каждому из этих трех факторов. В некоторых операциях вскрытия эти факторы взаимозависимы. Например, атаку можно ускорить за счет наращивания памяти компьютера. Сложность выражается порядками величин. Например, если известно, что сложность данного алгоритма составляет 2128, значит, для вскрытия алгоритма необходимо выполнить 2128 операций. (Причем эти операции могут быть и сложными, и длительными.) Допустим, например, ваши вычислительные мощности позволяют выполнять миллион операций в секунду, и для решения задачи вы используете миллион параллельных процессоров. Тогда определение ключа вышеуказанного алгоритма займет свыше 1019 лет - в миллиард раз больше времени существования Вселенной! В то время как сложность вскрытия остается постоянной (пока какой-нибудь криптоаналитик не найдет лучшего способа вскрытия), вычислительные мощности постоянно растут. За последние полвека мощность компьютеров феноменально
24 Прикладная криптография возросла, и эта тенденция, несомненно, сохранится. Для решения многих криптоаналитических задач превосходно подходят параллельные компьютеры: задача разбивается на миллиарды крошечных частей, решение которых не требует межпроцессорного взаимодействия. В силу этих причин объявление алгоритма надежным только потому, что его нелегко взломать с помощью современной технологии, в лучшем случае спорно. Поэтому при создании хороших, устойчивых к взлому криптосистем, принимаются в расчет перспективы развития вычислительных средств на много лет вперед. Исторические термины Исторически термин код относится к криптосистемам, работающим с лингвистическими единицами, т.е. словами, фразами, предложениями и т.д. Например, слово «ОЦЕЛОТ» может быть шифртекстом целой фразы «ПОВЕРНУТЬ НАЛЕВО НА 90 ГРАДУСОВ», слово «ЛЕДЕНЕЦ» - фразу «ПОВОРОТ НАПРАВО НА 90 ГРАДУСОВ», а слова «НАКЛОНИ УХО» могут кодировать слово «ГАУБИЦА». В этой книге коды данного типа не рассматриваются. Желающие могут обратиться к специальной литературе [794,795]. Использование кодов целесообразно только в особых случаях. Действительно, если у вас нет кода для слова «МУРАВЬЕДЫ», вы не сможете его и передать. А вот шифр позволяет передать все, что угодно. 1.2. Стеганография Стеганография служит для скрытия секретных сообщений в других сообщениях, причем так, что скрывается даже само существование секрета. Как правило, отправитель пишет какое-нибудь невинное сообщение, а затем скрывает секретное сообщение на этом же листе бумаги. Из истории к нам пришли такие хитроумные средства, как использование невидимых чернил, тончайшие булавочные наколки возле отдельных символов, малозаметные отличия букв, написанных от руки, пометки карандашом машинописных символов, решетки, накрывающие большую часть сообщения, кроме нескольких символов и т.д. Недавно люди начали скрывать секретные сообщения в графических изображениях. При этом младший бит каждого байта изображения заменяется битом сообщения. Само графическое изображение меняется совершенно незначительно, поскольку большинство графических стандартов определяют намного большее число цветовых градаций, чем способен различить человеческий глаз. На принимающей стороне сообщение извлекается. Так, в полутоновом (черно-белом) рисунке размером 1024x1024 пикселей можно скрыть сообщение размером 64 Кбайт, причем для этого годятся многие общедоступные приложения. Для маскировки сообщений можно также использовать имитационные функции Питера Уэйнера (Ре1ег АУаупег). Эти функции изменяют сообщение так, что его статистические параметры приобретают сходство с каким-либо иным текстом: разделом сообщений Нью-Йорк Таймс, драмой Шекспира или телеконференцией в Интернете [1584,1585]. Этот тип стеганографии не обманет человека, но может обмануть мощный компьютер, сканирующий Интернет в поисках нужной информации.
ГЛАВА 1. Основные понятия 25 1.3. Подстановочные и перестановочные шифры До появления компьютеров, криптография основывалась на текстовых алгоритмах. Различные криптографические алгоритмы выполняли или замену одних символов другими, или перестановку символов. Лучшие алгоритмы выполняли и ту, и другую операцию, причем многократно. В наше время все значительно усложнилось, однако философия остается прежней. Основное изменение заключается в том, что современные алгоритмы обрабатывают биты, а не символы. Как ни странно, это означает всего лишь изменение размера алфавита: вместо 26 элементов (в английском алфавите) до двух. Однако и поныне большинство хороших криптографических алгоритмов все еще сочетают подстановки и перестановки. Подстановочные шифры Подстановочным шифром (или шифром подстановки) называют шифр, который создает шифртекст, заменяя каждый символ открытого текста иным символом. Получатель шифртекста выполняет обратную подстановку, восстанавливая открытый текст. В классической криптографии различают четыре типа подстановочных шифров: ✓ Простой подстановочный шифр (шифр простой замены, моноалфавитный шифр) - это шифр, заменяющий каждый символ открытого текста соответствующим символом шифртекста. Например, криптограммы в газетах являются простыми подстановочными шифрами. ✓ Омофонический подстановочный шифр подобен простой подстановочной криптосистеме за исключением того, что одному символу открытого текста может быть сопоставлен один из нескольких символов шифртекста. Например, символу «А» может соответствовать 5, 13, 25 или 56, «В» - 7, 19, 31 или 42 и т.д. ✓ Полиграммный (/7-граммный) подстановочный шифр - это шифр, который шифрует блоки символов по группам. Например, блоку «АВА» может соответствовать «КТО», блоку «АВВ» может соответствовать «8ЬЬ» и т.д. ✓ Полиалфавитный подстановочный шифр состоит из нескольких простых подстановочных шифров. Например, в нем могут использоваться пять различных простых подстановочных шифров; конкретный тип используемого шифра зависит от положения символа в открытом тексте. В качестве примера простого подстановочного шифра отметим знаменитый шифр Цезаря, в котором каждый символ открытого текста заменяется символом, находящимся тремя символами правее по модулю 26 («А» меняется на «Б», «В» - на «Е», «XV» - на «2», «X» - на «А», «У» - на «В», «2» - на «С»). В действительности, этот шифр даже слишком прост, так как алфавит шифртекста представляет собой всего лишь смещенный, а не случайно переставленный, алфавит открытого текста. Программа КОТ 13 - это простая программа шифрования, обычно используемая в системах ЦМХ, в которой также используется простой подстановочный шифр. В этом шифре символ «А» меняется на «К», «В» - на «О» и т.д. Каждая буква смещается на 13 мест.
26 Прикладная криптография Повторное шифрование файла программой КОПЗ восстанавливает исходный файл. Р = КОТ13 (КОТ13 (Р)) Программа КОТ13 не предназначена для защиты; нередко она используется в почте Изепе^ для скрытия потенциально оскорбительного текста, решений ребусов и т.д. Простые подстановочные шифры взламываются без труда, поскольку такой шифр не скрывает частоту использования различных символов в открытом тексте. Чтобы восстановить открытый текст, хорошему криптоаналитику достаточно криптограммы длиной всего около 25 букв (для английского алфавита) [1434]. Алгоритм взлома таких шифров можно найти в [578, 587, 1600, 78, 1475, 1236, 880]. В [703] приведен хороший компьютерный алгоритм. Омофонические подстановочные шифры использовались уже в 1401 году в герцогстве Мантуа [794]. Они сложнее для вскрытия, чем простые подстановочные шифры, хотя и они не скрывают всех статистических свойств языка открытого текста. Эти шифры без труда взламываются путем вскрытия с известным открытым текстом. Вскрытие с использованием только шифртекста несколько более трудная задача, но и с ней компьютер справляется всего за несколько секунд. Подробности приведены в [1261]. Полиграммные подстановочные шифры - это шифры, кодирующие сразу группы символов. Шифр Р1ау1шг («Честная игра»), изобретенный в 1854 году, использовался британцами во время Первой мировой войны [794]. Он шифрует символы попарно, и результаты его криптоанализа обсуждаются в [587,1475,880]. Другим примером полиграммного подстановочного шифра можно назвать шифр Хилла (НШ) [732]. Иногда в качестве шифра используется код Хаффмана (Нийтпап) - это ненадежный полиграммный подстановочный шифр. Полиалфавитные подстановочные шифры изобретены в 1568 году [794] Лином Баттистой (Ьеоп ВаШз1;а). Они использовались армией Соединенных Штатов в ходе Гражданской войны в Америке. Несмотря на то, что их взлом не составляет труда [819, 577, 587, 794], особенно с помощью компьютеров, такие шифры используются во многих коммерческих продуктах компьютерной безопасности [1387,1390, 1502]. (Подробные сведения о взломе этой схемы шифрования, используемой в приложении ХУогбРеИес!, можно найти в [135,139].) В качестве примеров полиалфавитных подстановочных шифров можно также назвать шифр Виженера (Ущепеге), впервые опубликованного в 1586 году, и шифр Бофора (ВеаиГог!). В полиалфавитных подстановочных шифрах используется множество однобуквенных ключей, причем каждый ключ используется для шифрования только одного символа открытого текста. В процессе шифрования первым ключом шифруется первый символ открытого текста, вторым ключом - второй символ, и т.д. После исчерпания ключи используются повторно. Таким образом, если применяется 20 однобуквенных ключей, каждая двадцатая буква шифруется одним и тем же ключом. Этот параметр называется периодом шифра. В классической криптографии взлом шифров с длинными периодами представлял более серьезную задачу, чем шифров с короткими периодами. Однако с использованием компьютеров раскрытие подстановочных шифров с очень длинным периодом не вызывает затруднений. Еще один пример подобного шифра - шифр с бегущим ключом (иногда называемый книжным шифром), в котором один текст используют для шифрования другого текста. И хотя период этого шифра равен длине текста, его взлом тоже не составляет труда [576,794].
ГЛАВА 1. Основные понятия 27 Перестановочные шифры В перестановочном шифре (или шифре перестановки) открытый текст остается неизменным, но символы в нем «перетасовываются». Так, в простом вертикальном перестановочном шифре открытый текст пишется по горизонтали на разграфленном листе бумаги фиксированной ширины, а шифртекст считывается по вертикали (см. Рис. 1.4). Для расшифрования такого текста достаточно написать шифртекст по вертикали на листе разграфленной бумаги той же самой ширины, и затем прочитать открытый текст по горизонтали. Открытый текст: СОМР1ЛГЕВ 6КАРН1С5 МАУ ВЕ ЗЮМ В11Т АТ 1_ЕА5Т 1ГЗ ЕХРЕМ51УЕ сомритЕкск АРН1СЗМАУВ ЕЗЪСЖВЕТАТ ЬЕАЗТ1Т8ЕХ РЕЫ31УЕ Шифртекст: саеьр орзее мним рюзз 1Ю\л/п тзву емше катзо уаерв тх Рис. 1.4. Вертикальный перестановочный шифр Криптоанализ этих шифров обсуждается в [587,1475]. Поскольку в шифртексте и открытом тексте используются одинаковые символы, частотный анализ шифртекста покажет, что каждая буква встречается приблизительно с той же частотой, какая свойственна английскому языку. Это дает криптоаналитику хорошую подсказку, позволяя применить различные методы определения правильного порядка символов для восстановления открытого текста. Применение к шифртексту второго перестановочного шифра значительно усиливает защиту. Существуют и еще более сложные перестановочные шифры, но компьютеры могут справиться практически со всеми. Немецкий шифр АБРСУХ, использовавшийся во время Первой мировой войны, представлял собой комбинацию перестановочного шифра с простой подстановкой. Для своего времени это был очень сложный алгоритм, однако и он был взломан французским криптоаналитиком Жоржем Пенвэном (Оеог^ез Ратуш) [794]. Перестановка используется во многих современных алгоритмах. Однако использование таких шифров сопряжено с известными проблемами, поскольку они требуют большого объема памяти, а иногда - использования сообщений строго заданного размера. Поэтому чаще используются подстановочные шифры. Роторные машины В двадцатых годах прошлого века для автоматизации процесса шифрования были изобретены различные механические шифровальные устройства. В основе конструкции большинства таких машин лежала концепция ротора - механического колеса, используемого для выполнения подстановки.
28 Прикладная криптография Роторная машина, состоящая из клавиатуры и набора связанных между собой роторов, реализует вариант шифра Виженера. На каждый ротор в произвольном порядке помещаются буквы алфавита, а кроме того, он имеет 26 фиксированных позиций и может выполнять простую подстановку. Например, ротор может быть установлен так, что заменяет «А» на «Е», «В» на «Ш, «С» на «I» и т.д. Выходные штыри одного ротора соединены с входными штырями следующего ротора. Например, в четырехроторной машине первый ротор может заменять «А» на «Р», второй - «Р» на «У», третий - «У» на «Е» и четвертый - «Е» на «С». Тогда «С» и будет конечным шифртекстом. Затем некоторые роторы смещаются, и в следующий раз подстановки будут иными. Именно комбинация нескольких роторов и приводов, движущих роторы, обеспечивает надежность шифрования с помощью машины. Так как роторы вращаются с различной скоростью, период шифра п-роторной машины равен 26". Кроме того, некоторые роторные машины могут иметь различное число позиций каждого ротора, что дополнительно затрудняет криптоанализ. Самое известное роторное устройство - машина Энигма (Епщта). Она использовалась немцами во Второй мировой войне. Сама идея была предложена в Европе Артуром Шербиусом (АгЙшг ЗсЬегЫиз) и Арвидом Герхардом Даммом (Апаб ОегЬагб Оатт). В Соединенных Штатах такая машина была запатентована Артуром Шербиусом [1383]. Во время войны немцы значительно усовершенствовали первоначальную конструкцию. Немецкая машина Энигма имела три ротора, выбираемые из набора в пять роторов, коммутатор, который слегка тасовал открытый текст, и отражающий ротор, который заставлял каждый ротор обрабатывать дважды каждый документ открытого текста. Несмотря на сложность задачи, в течение Второй мировой войны шифр Энигмы был взломан. Сначала группа польских криптографов взломала немецкую Энигму и поделилась принципом вскрытия с британцами. В ходе войны немцы модифицировали Энигму, но англичане продолжали криптоанализ новых версий. Пояснения работы роторных шифров и методов их раскрытия можно найти в [794, 86, 448, 498, 446, 880, 1315, 1587, 690]. В отчетах [735, 796] увлекательно описывается взлом Энигмы. Для дальнейшего чтения Эта книга - не пособие по классической криптографии, поэтому далее я не собираюсь подробно останавливаться на этой теме. Докомпьютерная криптология прекрасно описана в книгах [587, 1475]. В [448] можно найти описание современного криптоанализа шифровальных машин. В [456] Дороти Деннинг (ОогоШу Оепшп§) рассматривает многие из этих шифров, а в [880] приведен их весьма сложный математический анализ. В сравнительно старой книге [99] описывается метод аналоговой криптографии. Прекрасный обзор предмета можно найти в статье [579]. Весьма интересны также книги по истории криптографии, написанные Дэвидом Каном [794, 795, 796].
ГЛАВА 1. Основные понятия 29 1.4. Простой ХОК ХОК представляет собой операцию «исключающее ИЛИ»4, обозначаемую символом л в языке С, или 0 в математике. Это стандартная операция над битами: 000 = 0 001 = 1 100 = 1 101 = 0 Также отметим, что: а 0 а = 0 а 0 ЬФЬ = а На самом деле алгоритм простого ХОК - не более чем помеха для криптоаналитика. По сути, это ничто иное, как полиалфавитный шифр Виженера (Ущепеге). Здесь он упоминается только потому, что часто используется в коммерческих программных продуктах, по крайней мере, в системах М8 008 и Маст1озЬ [1502, 1387]. К сожалению, ныне можно констатировать, что если некая программа защиты объявляется содержащей «собственный» алгоритм шифрования, значительно более быстрый, чем ОЕ8, то вероятно, что она просто является некой вариацией следующего кода: /* Использование: сгур1:о ключевое__слово входной_файл выходной_файл */ лго±с1 та±п (1пЪ агдс, сЬаг *агду[]) { Р1ЬЕ *±1, *^о; сЪаг *ср; з.п1: с; ( (ср = агдуЕД.]) && *ср!= 1 \0') { ((^± = ^ореп (агду1 [2] , "гЬ")) != ШЫ|) { ±€ ((^о = ^ореп (агду[3] , "теЬ")) != ШЪЪ) { теЫ1е ((с = де*:с(^з.)) != ЕОР) { (!*ср) ср = агду[1]; сА= *(ср++); риЪс (с, 1:о) ; } ^с1озе(1:о); 1 ^с1озе(^1); } } } 4 иначе - сложение по модулю 2. - Прим. ред.
30 Прикладная криптография Это симметричный алгоритм. Для генерирования шифртекста открытый текст подвергается операции «исключающее ИЛИ» с ключевым словом. Так как повторное применение операции ХСЖ восстанавливает оригинал, зашифрование и расшифрование выполняются одной и той же программой: Р® К=С С® К = Р Реальной защиты этот алгоритм не обеспечивает. Этот тип шифрования легко взламывается даже без компьютера [587, 1475], а взлом на компьютере занимает всего несколько секунд. Предположим, что открытый текст написан на английском языке. Более того, пусть длина ключа составляет любое небольшое число байтов. Вот как взламывают этот шифр: 1. Определим длину ключа с помощью процедуры, известной как подсчет совпадений [577]. Применим операцию ХОЯ к шифртексту, используя в качестве ключа сам шифртекст с различными смещениями, и подсчитаем совпадающие байты. Если величина смещения оказалась кратна длине ключа, то совпадет свыше 6% байтов. Если нет, то совпадут менее чем 0.4% (в предположении, что это обычный А8СН- текст, шифруемый случайным ключом; для открытых текстов других типов числа будут другими). Получаемая величина называется индексом совпадений. Минимальное смещение (оно кратно длине ключа) и есть длина ключа. 2. Сместим шифртекст на длину ключа и выполним операцию ХОЯ для смещенного и исходного шифртекстов. Результатом операции будет удаление ключа и получение открытого текста, подвергнутого операции ХОЯ с самим собой, смещенным на длину ключа. Так как в английском языке на один байт приходится 1.3 бита реальной информации (см. раздел 11.1), такая значительная избыточность приводит к единственно возможной дешифровке. Несмотря на это, число поставщиков программного обеспечения, расхваливающих этот игрушечный алгоритм как «почти так же надежный, как БЕ8», просто потрясает [1387]. Именно этот алгоритм (с 160-битным повторяющимся «ключом») Агентство Национальной Безопасности (АНБ), в конце концов, разрешило использовать в цифровых телефонных сотовых сетях для защиты речевой связи. Конечно, алгоритм ХОЯ может помешать вашей младшей сестре прочитать ваши файлы, но настоящего криптоаналитика он задержит лишь на несколько минут. 1.5. Одноразовые блокноты Хотите - верьте, хотите - нет, но абсолютный метод шифрования существует. Он называется одноразовым блокнотом, и был изобретен в 1917 году Мэйджором Джозефом Моборном (Ма]ог 1озер11 МаиЬог^пе) и Гилбертом Бернамом (ОПЬег* Уеташ) из фирмы АТ&Т [794]. (Фактически, одноразовый блокнот является особой разновидностью пороговой схемы; см. раздел 3.7.) Классический одноразовый блокнот- это огромный не повторяющийся случайный набор символов ключа, написанных на листах бумаги, и склеенный в блокнот. Первоначально использовалась одноразовая телетайпная лента. Отправитель использовал каждый символ ключа в блокноте для
ГЛАВА 1. Основные понятия 31 шифрования только одного символа открытого текста. Шифрование представляет собой сложение (по модулю 26) символа открытого текста и символа ключа из одноразового блокнота. Каждый символ ключа используется только один раз и только в одном сообщении. Закончив шифровать сообщение, отправитель уничтожает использованные страницы блокнота или использованную часть ленты. В свою очередь получатель, используя точно такой же блокнот, расшифровывает каждый символ шифртекста. Расшифровав сообщение, он уничтожает соответствующие страницы блокнота или использованную часть ленты. Итак, каждое новое сообщение использует новые символы ключа. Например, если сообщение гласит: ОЫЕТ1МЕРАБ а ключевая последовательность в блокноте такова: ТВГКСГАКЕМ то шифртекст будет выглядеть как: 1РКЪР5РНС0 Поскольку 0 + Гтос126 = / И + Втой26 = Р Е + Р тоб 26 = К и т.д. Если исключить доступ злоумышленника к одноразовому блокноту, использованному для шифрования сообщения, эта схема шифрования будет абсолютно стойкой. По внешнему виду данное шифрованное сообщение соответствует любому открытому сообщению того же размера. Поскольку все ключевые последовательности совершенно подобны друг другу (как вы помните, символы ключа генерируются случайным образом), у взломщика нет информации, позволяющей приступить к криптоанализу шифртекста. Ключевая последовательность может выглядеть примерно так: РОУУАЕАА2Х Что расшифровывается как: ЗАЬМСЖЕССЗ Или так: ВХЕСВМТМХМ Что расшифровывается как: СКЕЕ1ЯГШ1П Повторюсь: поскольку равновероятны все открытые тексты, у криптоаналитика нет возможности определить, какой из открытых текстов правильный. Случайная ключевая последовательность, суммированная с неслучайным открытым текстом, генерирует
32 Прикладная криптография совершенно произвольный шифртекст сообщения, и тут не помогут никакие вычислительные мощности. Поскольку любые попытки вскрытия такой схемы наталкиваются на метод генерации символов ключа, следует особо подчеркнуть, что символы ключа должны генерироваться случайным образом. Использование генераторов псевдослучайных чисел исключается - у генерированных с их помощью последовательностей всегда имеются неслучайные свойства. Для того чтобы защита была абсолютно надежной, следует использовать действительно случайный источник - а это намного труднее, чем кажется на первый взгляд (см. раздел 17.14). Другой важный аспект - ключевую последовательность никогда нельзя использовать повторно. Даже если вы используете блокнот размером в несколько гигабайт, криптоаналитик, получив несколько текстов с перекрывающимися ключами, сумеет восстановить открытый текст. Он сдвинет каждую пару шифртекстов относительно друг друга и подсчитает число совпадений в каждой позиции. Если шифртексты смещены правильно, доля совпадений резко возрастет (точное значение зависит от языка открытого текста). С этой точки зрения криптоанализ никакой сложности не представляет - он подобен использованию индекса совпадений, просто сравни¬ ваются два разных «периода» [904]. Не используйте ключевую последовательность повторно! Идея одноразового блокнота без труда переносится на двоичные данные. Просто теперь, вместо одноразового блокнота, состоящего из букв, используется одноразовый блокнот из битов. Вместо сложения открытого текста с ключом одноразового блокнота - операция ХОЯ. Для расшифрования операция ХОЯ применяется к шифр- тексту с тем же одноразовым блокнотом. Все остальное остается прежним, а защита - совершенной. Все это очень хорошо, но тут имеется и ряд проблем. Так как ключевые биты должны быть случайными, и не могут использоваться повторно, длина ключевой последовательности должна быть равна длине сообщения. Поэтому одноразовый блокнот удобен для нескольких кратких сообщений, но его нельзя использовать для работы по каналу связи с пропускной способностью 1.544 Мбит/с. Конечно, на компакт- диске вы можете хранить до 650 Мбайт случайных данных, но и тут есть проблемы. Во- первых, вам нужны только две копии случайных битов, а компакт-диски выгодны только при больших тиражах. И, во-вторых, вам нужно уничтожать использованные биты. Для компакт-дисков нет никакой иной возможности удалить информацию, кроме физического разрушения диска (ныне появились многократно перезаписываемые компакт-диски, поэтому такой проблемы более не существует - прим. перев.). Гораздо лучше подходит магнитная лента. Даже если вы решите проблемы распределения и хранения ключей, вам придется точно синхронизировать работу отправителя и получателя. Если получатель пропустит бит (или несколько битов пропадут при передаче), сообщение потеряет всякий смысл. С другой стороны, если при передаче изменятся несколько бит (причем ни один бит не будет удален или добавлен - что может произойти по вине помех в линии связи), то лишь эти биты будут расшифрованы неправильно. Но, с другой стороны, одноразовый блокнот не обеспечивает проверку подлинности.
ГЛАВА 1. Основные понятия 33 Одноразовые блокноты используются и сегодня, главным образом для сверхсекретных каналов связи с низкой пропускной способностью. По слухам с помощью одноразового блокнота шифровалась «горячая линия» между Соединенными Штатами и бывшим Советским Союзом (а действует ли она сейчас?). С помощью одноразовых блокнотов зашифрованы многие сообщения советских разведчиков. Эти сообщения нераскрыты до сих пор, и таковыми они останутся навсегда. И эту задачу не решат никакие суперкомпьютеры. Даже когда чужаки из созвездия Андромеды приземлятся на нашей планете в своих огромных космических кораблях с компьютерами невообразимой мощности, и они не смогут прочесть сообщения советских агентов, зашифрованные с помощью одноразовых блокнотов (если, конечно, они не смогут вернуться в прошлое и добыть нужные одноразовые блокноты). 1.6. Компьютерные алгоритмы Существует множество компьютерных алгоритмов, однако обычно используют следующие три: ✓ ЭЕ8 (Эа1а Епсгурйоп 81апс1агс1 - стандарт шифрования данных) - самый широко распространенный компьютерный алгоритм шифрования, принятый в качестве американского и международного стандарта. Это симметричный алгоритм, в котором для шифрования и расшифрования используется один и тот же ключ.5 ✓ Я8А (назван в честь создателей - Ривеста (Клуез!), Шамира (8Ьагшг) и Адлемана (АсПетап)) - наиболее широко распространенный алгоритм с открытым ключом. Используется как для шифрования документов, так и для их цифровой подписи. ✓ Э8А (01§йа1 81§паШге А1§опйип - алгоритм цифровой подписи, используется как часть стандарта цифровой подписи (Э1§ка1 81§па1иге 81апс1агс1)) - еще один алгоритм с открытым ключом. Используется только для цифровой подписи и не может быть использован для шифрования. Именно эти и подобные алгоритмы описываются в книге. 1.7. Большие числа На протяжении всей книги я использую различные большие числа для описания различных понятий криптографии. Так как в этих числах и их значениях легко запутаться, в табл. 1.1 приведены физические эквиваленты некоторых чисел. Эти числа оцениваются по порядку величины и отобраны из различных источников. Многие астрофизические величины приводятся в статье Фримана Дайсона (Ргеетап Эузоп) «Т1те \\^Мюи1 Епб: РЬузюз апб Вю1о§у т ап Ореп 1Муегзе» (Время без конца: физика и биология в открытой Вселенной) в Яеу1еш о/ Мос!ет РНузгсз, V. 52, п. 3, Му 1979, рр. 447-460. Смертность в результате автокатастроф рассчитана с помощью статистики Министерства транспорта США (163 смерти на миллион человек в 1993 году, исходя из средней продолжительности жизни 69,7 года). 5 Этот стандарт устарел по причинам, рассмотренным в гл. 12.7, и в 2001 г. был принят новый, названный АЕ8 (Ас1уапсес1 Епсгурйоп 81апс1агс1 - улучшенный стандарт шифрования). - Прим. ред.
34 Прикладная криптография Таблица 1.1. Большие числа Физический эквивалент Число Вероятность гибели от молнии (в течение дня) 1 из 9 миллиардов (233) Вероятность выиграть главный приз в государственной лотерее США 1 из 4000000 (222) Вероятность выиграть главный приз в государственной лотерее США и быть убитым молнией в этот же день 1 из 253 Вероятность утонуть (в США в течение года) 1 из 59000 (216) Вероятность погибнуть в автокатастрофе (в США, в течение года) 1 из 6100 (213) Вероятность погибнуть в автокатастрофе (в США в течение жизни) 1 из 88 (27) Время до следующего оледенения 14000 (214) лет Время до превращения Солнца в сверхновую звезду 109 (230) лет Возраст планеты 109 (230) лет Возраст Вселенной 1010 (234) лет Число атомов планеты О сз о Число атомов Солнца О •^1 /■ \ ы Со о Число атомов галактики 1067 (2223) Число атомов Вселенной 1077 (2265) Объем Вселенной Ю84 (2280) см3 Если Вселенная конечна: Полное время жизни Вселенной 10й (237) лет, или 1018 (261) секунд Если Вселенная бесконечна: Время до остывания легких звезд 1014 (247) лет Время до отрыва планет от звезд 1015 (250) лет Время до отрыва звезд от галактик 1019 (264) лет
ГЛАВА 1. Основные понятия 35 Физический эквивалент Число Время до разрушения орбит гравитационным излучением Ю20 (267) лет Время до разрушения черных дыр в результате Хокинг-процесса 1064 (2213) лет Время до превращения материи в жидкость при нулевой температуре 1065 (2216) лет Время до превращения материи в железо 1 л 1026 10 лет Время до превращения материи в черную дыру 1 л Ю76 10 лет
Часть 1 КРИПТОГРАФИЧЕСКИЕ ПРОТОКОЛЫ
ГЛАВА 2. Основные элементы протоколов 2.1. Понятие протокола Криптография предназначена для решения проблем. (Фактически, таково же основное назначение компьютеров, о чем многие люди склонны забывать.) Криптография решает проблемы секретности, проверки подлинности, целостности и человеческого мошенничества. Вы можете знать все о криптографических алгоритмах и методах, но если не умеете применять их для решения конкретных проблем, ваши знания будут чисто академическими. Именно поэтому мы собираемся прежде всего обсудить протоколы. Протоколом называют последовательность действий, исполняемых двумя и более сторонами, спроектированную для решения какой-либо задачи. Это важное определение. Слова «последовательность действий» означают, что протокол исполняется последовательно, от начала и до конца. Каждое действие выполняется поочередно, причем каждое последующее действие начинает исполняться только после окончания предыдущего. Слова «исполняемых двумя и более сторонами» означают, что для выполнения протокола требуется, по крайней мере, два человека. Исполнить протокол в одиночку невозможно. В одиночку человек может выполнять некоторую последовательность действий, необходимых для решения задачи (например, испечь торт), однако это - не протокол. (Чтобы получить настоящий протокол, кто-то другой должен съесть торт.) Наконец, слова «спроектированная для решения какой-либо задачи» означают, что протокол должен вести к какому-то результату, чего-то достигать. Последовательность действий, похожая на протокол, но не ведущая к результату - это напрасная трата времени, а не протокол. Кроме того, у протоколов есть и другие характеристики: ✓ Каждый участник протокола должен знать протокол и всю последовательность его действий. ✓ Каждый участник протокола должен согласиться следовать протоколу. %/ Протокол должен быть недвусмысленным - каждое действие должно быть хорошо определено так, чтобы не возникало никакого недопонимания. ✓ Протокол должен быть полным - в нем должны быть указаны точные действия в любой возможной ситуации. В этой книге все протоколы приводятся в форме последовательности действий. Протокол исполняется последовательными этапами, если только нет указаний перейти к иному действию. В каждое действие входит, по меньшей мере, одно из двух: вычисления, выполняемые одной или несколькими сторонами, или сообщения, которые рассылаются между участниками. Криптографическим протоколом называют протокол, в котором используется криптография. Стороны могут быть друзьями и безоговорочно доверять друг другу, либо врагами и не доверять друг другу даже при получении сообщений о текущем
ГЛАВА 2. Основные элементы протоколов 39 времени. В криптографический протокол входит некоторый криптографический алгоритм; однако, как правило, протоколы предназначены не только для обеспечения секретности. Так, участникам протокола может понадобиться разделить на части свои секреты для расчета какого-либо значения, совместно сгенерировать случайную последовательность, удостовериться в подлинности друг друга, либо одновременно подписать контракт. Смысл использования в протоколе криптографии заключается в предотвращении или обнаружении фактов подслушивания и мошенничества. Если вы никогда не сталкивались с подобными протоколами, они могут радикально изменить ваше представление о том, что могут сделать с помощью компьютерной сети стороны, взаимно не доверяющие друг другу. Общее правило гласит, что: ✓ Невозможно сделать или узнать больше, чем определено протоколом. Это правило гораздо жестче, чем может показаться. В нескольких следующих главах мы рассмотрим множество протоколов. В некоторых протоколах один из участников может обмануть другого. В других протоколах злоумышленник может разрушить протокол или узнать секретную информацию. Ряд протоколов проваливается, поскольку их разработчики недостаточно продумали требования к протоколу. Другие проваливаются из-за того, что их разработчики недостаточно тщательно проанализировали свои протоколы. Как и для алгоритмов, доказать ненадежность протокола намного проще, чем его надежность. Назначение протоколов В повседневной жизни неформальные протоколы используются практически повсюду: для заказа товаров по телефону, при игре в покер или голосовании на выборах. Люди не слишком задумываются об этих протоколах. Они эволюционировали в течение длительного времени, все знают, как ими пользоваться и они работают достаточно надежно. Сегодня все больше и больше людей предпочитают компьютерную сеть личному общению. Однако чтобы делать то, что люди делают, не задумываясь, компьютерам нужны формальные протоколы. Например, когда вы переезжаете в другую страну и обнаруживаете урну для голосования, совершенно отличающуюся от той, к которой вы привыкли, вы без труда адаптируетесь. А вот компьютерам такая гибкость недоступна. Многие протоколы личного общения для обеспечения честности и секретности полагаются на человеческое присутствие. Разве вы дадите незнакомцу пачку денег, чтобы он купил для вас что-нибудь в бакалейной лавке? Сядете ли вы играть в покер, если не видите, как ваш партнер тасует и сдает карты? Пошлете ли вы правительству по почте свой избирательный бюллетень без некоторой гарантии анонимности? Наивно рассчитывать на честность пользователей компьютерных сетей. Наивно полагаться на честность администраторов и проектировщиков компьютерных сетей. Конечно, большинство из них - порядочные люди, но даже несколько мошенников могут нанести большой ущерб. Формализация протоколов позволяет обнаружить методы, используемые злоумышленниками для разрушения протоколов. Тогда мы можем разработать протоколы, устойчивые к разрушению. Помимо формализации действий, протоколы позволяют отделить процесс решения задачи от механизма решения. Например, в персональных компьютерах 1ВМ и
40 Прикладная криптография мэйнфреймах УАХ используют одинаковые протоколы связи. Поэтому мы можем исследовать протокол, не забираясь в дебри подробностей его реализации. И когда нас убедят в надежности протокола, мы можем реализовать его где угодно - от компьютеров до телефонов и интеллектуальных тостеров. Участники Для облегчения демонстрации работы протоколов я заручился помощью нескольких участников (см. Табл. 2.1). Основные действующие лица - Алиса (АНсе) и Боб (ВоЬ). Они будут выполнять все общепринятые двусторонние протоколы. Как правило, все протоколы инициирует Алиса, а Боб отвечает. Если протокол требует участия третьей или четвертой сторон, в игру вступают Кэрол (Саго1) и Дэйв (Оауе). Остальные участники играют специальные вспомогательные роли; они выходят на сцену по мере надобности. Протоколы с посредником Посредником называют незаинтересованную третью сторону, которой доверено довести до конца исполнение протокола (см. Рис. 2.1). «Не заинтересованность» посредника означает, что ему безразличны как результат исполнения протокола, так и любой участник протокола. Слово «доверено» означает, что все участники протокола воспринимают слова посредника за истину, все его действия признают правильными, а кроме того, уверены, что посредник выполнит свою часть протокола. Посредники помогают исполнять протоколы двум сторонам, взаимно не доверяющим друг другу. В реальной жизни в качестве посредников часто избирают адвокатов. Пусть, например, Алиса продает незнакомому ей Бобу автомобиль. Боб хочет заплатить чеком, но у Алисы нет возможности проверить платежеспособность чека. Поэтому прежде чем передать право собственности Бобу, Алиса хочет получить деньги по чеку. Боб, который верит Алисе ничуть не больше, чем она ему, не хочет передавать чек, не получив права собственности. Таблица 2.1. Действующие лица Алиса Первый участник всех протоколов Боб Второй участник всех протоколов Кэрол Участник в трех- и четырехсторонних протоколах Дэйв Участник в четырехсторонних протоколах Ева Перехватчик сообщений Мэллори Злонамеренный активный взломщик Трент Доверенный посредник Уолтер Надзиратель; в некоторых протоколах стережет Алису и Боба Пегги Претендент, пытается доказать что-то Виктор Верификатор; проверяет Пегги
ГЛАВА 2. Основные элементы протоколов 41 Трент (а) Протокол с посредником Алиса Трент После случившегося (б) Протокол с арбитром Алиса Боб (с) Самодостаточный протокол Рис. 2.1. Типы протоколов Участие в деле адвоката устраивает обе стороны. Его помощь позволяет Алисе и Бобу исполнить следующий протокол, гарантирующий, что они не смогут обмануть друг друга: 1) Алиса передает право собственности адвокату. 2) Боб передает чек Алисе. 3) Алиса депонирует чек. 4) Спустя точно заданный период, необходимый для оплаты чека, адвокат передает право собственности Бобу. Если в течение определенного времени чек не будет оплачен, Алиса доказывает этот факт адвокату, и тот возвращает право собственности Алисе. В этом протоколе Алиса верит, что до оплаты чека адвокат не передаст право собственности Бобу и вернет право собственности Алисе, если чек не будет оплачен. Боб верит, что пока чек не будет оплачен, право собственности останется у адвоката, и немедленно по оплате чека он передаст право собственности Бобу. Адвоката не заботит оплата чека. В любом случае он выполнит свою часть протокола, поскольку получит свой гонорар независимо от исхода дела. В этом примере адвокат играет роль посредника. Адвокаты часто выступают в роли лица, в руках которого находится счет до урегулирования отношений между двумя лицами. Кроме того, адвокаты часто выступают посредниками при составлении
42 Прикладная криптография завещаний, а иногда - в торговых контрактах. В качестве посредников между покупателями и продавцами выступают также различные биржи. В качестве посредника в нашем протоколе может выступать и банк. Для покупки автомобиля у Алисы Боб может использовать гарантированный чек: 1) Боб выписывает чек и передает его в банк. 2) Зарезервировав на счету Боба сумму денег, достаточную для погашения чека, банк подтверждает чек и возвращает его Бобу. 3) Алиса передает право собственности Бобу, а Боб передает Алисе гарантированный чек. 4) Алиса депонирует чек. Этот протокол работает потому, что Алиса верит банковским гарантиям. Алиса верит, что банк удержит деньги Боба для нее, а не использует их для финансирования рискованных операций с недвижимостью в банановых республиках. Еще один возможный посредник - нотариус. Когда Боб получает от Алисы документ, заверенный нотариусом, он верит, что Алиса подписала документ добровольно и собственноручно. При необходимости нотариус может подтвердить этот факт в суде. Концепция посредничества стара, как мир. Всегда были определенные люди - вожди, шаманы и т.д., имевшие авторитет справедливых людей. И в нашем обществе, посредники играют известную роль и обладают влиянием. А вот обман доверия подорвал бы их положение. Например, адвокатов, играющих с доверенными счетами клиентов, почти наверняка ждет исключение из коллегии адвокатов. Конечно, эта картина доверительных отношений не всегда существует в реальном мире, но таков, по крайней мере, идеал. Этот идеал можно перенести и на мир компьютеров; однако с компьютерными посредниками существует ряд проблем: ✓ Нетрудно найти нейтральную доверенную третью сторону, если вы знаете этого человека и можете лично увидеть его в лицо. Но две стороны, подозрительно относящиеся друг к другу, с равным подозрением отнесутся и к безликому посреднику, затерянному где-то в сети. ✓ Владельцы компьютерной сети несут расходы на поддержку посредника. Все мы знаем, во что обходятся адвокаты; так кому же захочется оплачивать еще и эти расходы? ✓ Всем протоколам с посредником свойственна «врожденная» задержка. ✓ Посредник должен участвовать в каждой транзакции. Он - узкое место в крупномасштабных реализациях любого протокола. Эту проблему может смягчить реализация с большим числом посредников, но это повысит стоимость услуги. ✓ Так как посреднику должен доверять каждый пользователь сети, то посредник представляет собой лакомый кусочек для любого хакера. Тем не менее, посредничество все еще играет свою роль. В протоколах, использующих доверенного посредника, эту роль сыграет Трент.
ГЛАВА 2. Основные элементы протоколов 43 Протоколы с арбитром Из-за высокой стоимости найма посредников, протоколы с участием посредника можно разбить на два подпротокола более низкого уровня. Первый представляет собой подпротокол без посредника, исполняемый в тех случаях, когда стороны намерены выполнять протокол. Другой представляет собой протокол с посредником, исполняемый только в исключительных обстоятельствах - когда между сторонами возникают разногласия. В этом протоколе участвует посредник особого типа - арбитр (см. Рис. 2.1). Арбитр, как и посредник, представляет собой незаинтересованную и доверенную третью сторону протокола. В отличие от посредника, он не обязательно участвует в исполнении каждого протокола. Арбитр приглашается только для проверки честности выполнения протокола. В качестве примера профессиональных арбитров можно назвать судей. В отличие, скажем, от нотариусов, к судьям обращаются только при появлении разногласий. Алиса и Боб могут заключить контракт и без участия судьи, и если ни одна из сторон не подаст на другую в суд, судья никогда и не узнает о контракте. Протокол подписания контракта можно формализовать следующим образом: Подпротокол без посредника (выполняется всегда): 1) Алиса и Боб соглашаются с условиями контракта. 2) Алиса подписывает контракт. 3) Боб подписывает контракт. Подпротокол с использованием арбитра (исполняется только при появлении разногласий): 1) Алиса и Боб предстают перед судом. 2) Алиса приводит свои доказательства. 3) Боб приводит свои доказательства. 4) Опираясь на доказательства, судья выносит приговор. Различие понятий посредника и арбитра (в том смысле, который вкладывается в этой книге) заключается в том, что вмешательство арбитра не всегда обязательно. Стороны обращаются в суд только при появлении разногласий. Если разногласий нет, судья не нужен. Известны также арбитражные компьютерные протоколы. Эти протоколы опираются на предположение о честности сторон. Однако если кто-нибудь подозревает мошенничество, третья доверительная сторона может разоблачить обман на основе существующего массива данных. Кроме того, хороший арбитражный протокол позволяет арбитру установить и личность жулика. Таким образом, арбитражные протоколы не предотвращают, а обнаруживают мошенничество. В данном случае неотвратимость обнаружения выступает в качестве предупредительной меры, обескураживающей жулика.
44 Прикладная криптография Самодостаточные протоколы Самодостаточные протоколы (8е1{-еп$огст%) — лучший тип протоколов. Честность сторон гарантируется самим протоколом (см. Рис. 2.1). Для выполнения протокола не нужен посредник, а для разрешения разногласий - арбитр. Отсутствие споров обеспечивает сама конструкция протокола. Если одна из сторон попытается словчить, другая сторона немедленно обнаружит обман, и исполнение протокола прекратится. Не произойдет ничто из того, на что мог бы надеяться обманщик. В лучшем из миров самодостаточным должен быть любой протокол. Но, к сожалению, такие протоколы есть не для всякой ситуации. Атаки на протоколы Криптографические атаки могут быть направлены на криптографические алгоритмы, используемые в протоколах, на криптографические методы, используемые для реализации алгоритмов и протоколов, или на сами протоколы. Поскольку в этом разделе книги обсуждаются протоколы, я буду полагать, что криптографические алгоритмы и методы надежны. Здесь мы рассмотрим атаки только на протоколы. Для атаки на протокол люди могут использовать множество способов. Некоторые злоумышленники, сами не участвующие в протоколе, могут частично или полностью «подслушать» протокол. Этот метод называется пассивной атакой, так как взломщик никак не воздействует на протокол. Он может только следить за протоколом и пытаться добыть информацию. Этот тип атаки соответствует атаке на основе только шифртекста, который обсуждался в разделе 1.1. Так как пассивные вскрытия обнаружить трудно, протоколы пытаются предотвращать их, а не обнаруживать. В наших протоколах роль «слухача» сыграет Ева. В другом случае взломщик может попытаться изменить протокол к собственной выгоде. С этой целью он может выдавать себя за другого человека, вводить в протокол новые сообщения, заменять одно сообщение другим, передавать повторно старые сообщения, разрывать линию связи или модифицировать информацию, хранящуюся в компьютере. Такие действия называются активной атакой, поскольку требуют активного вмешательства. Формы таких атак зависят от стандарта сети. Пассивные взломщики пытаются получить информацию об участниках протокола. Они собирают переданные различными сторонами сообщения и пытаются подвергнуть их криптоанализу. Попытки активного вмешательства преследуют более широкие цели. Взломщик может быть заинтересован в получении информации, снижении быстродействия системы или несанкционированном доступе к ресурсам. Активные атаки намного опаснее пассивных. Особенно это относится к протоколам, в которых стороны не обязательно доверяют друг другу. Взломщиком не всегда выступает совершенно посторонний человек. Им может быть зарегистрированный пользователь системы или системный администратор, либо группа злоумышленников, работающих сообща. В этой книге роль злонамеренного активного взломщика сыграет Мэллори. Взломщиком может быть и один из участников протокола. Исполняя протокол, он может обманывать партнеров, а то и вовсе не следовать протоколу. Такого взломщика называют мошенником. Пассивные мошенники протокол исполняют, однако
ГЛАВА 2. Основные элементы протоколов 45 пытаются получить информации больше, чем предусматривается протоколом. Активные мошенники, пытаясь словчить, нарушают нормальное исполнение протокола. Если большинство участников протокола - активные мошенники, надежность протокола поддерживать нелегко. Однако иногда законные участники могут обнаружить факты активного мошенничества. Разумеется, протоколы следует защищать и от пассивного мошенничества. 2.2. Организация связи с помощью симметричной криптографии Каким образом две стороны могут обмениваться секретной информацией? Конечно же, шифруя сведения. Посмотрим, что произойдет, если Алиса перешлет Бобу шифрованное сообщение. 1) Алиса и Боб выбирают криптосистему. 2) Алиса и Боб выбирают ключ. 3) Алиса шифрует открытый текст своего сообщения, используя алгоритм шифрования и ключ. Таким образом, она создает шифртекст сообщения. 4) Алиса посылает шифртекст сообщения Бобу. 5) Боб расшифровывает шифртекст сообщения, используя алгоритм шифрования и ключ, получая открытый текст сообщения. Что может узнать Ева, находясь между Алисой и Бобом, подслушивая этот протокол? Если она может подслушать передачу только на этапе 4, ей придется подвергнуть шифртекст криптоанализу. Эта пассивная атака относится к атакам с использованием только шифртекста. Однако мы располагаем алгоритмами, устойчивыми (насколько нам известно) по отношению к любым вычислительным возможностям, которые реально доступны Еве для решения проблемы. Однако Ева отнюдь не глупа. Она может подслушать также этапы 1 и 2. Тогда ей станут известны и алгоритм, и ключ - точно так же, как и Бобу. Так что когда она перехватит сообщение на этапе 4, ей останется только расшифровать его самостоятельно. В хорошей криптосистеме безопасность всецело зависит от знания ключа и ни в коей мере - от знания алгоритма. Именно поэтому в криптографии так важно управление ключами. Используя симметричный алгоритм, Алиса и Боб могут, не скрываясь, выполнить этап 1, но этап 2 они должны выполнить тайна. Ключ должен храниться в тайне до, после и во время работы протокола - словом, до тех пор, пока должно сохраняться в тайне передаваемое сообщение. В противном случае сообщение будет немедленно раскрыто. (В разделе 2.5 обсуждается криптография с открытым ключом, решающая эту проблему несколько иначе.) Активный взломщик Мэллори может пойти дальше. Так, на этапе 4 он может попытаться нарушить линию связи, после чего Алиса вообще не сумеет передавать информацию Бобу. Кроме того, Мэллори может перехватить сообщение Алисы и заменить его собственным. Если ему повезло узнать ключ (перехватом информации на
46 Прикладная криптография этапе 2 или взломом криптосистемы), Меллори может зашифровать свое сообщение и отправить его Бобу вместо перехваченного. У Боба нет никакой возможности распознать, что сообщение отправлено не Алисой. Если Мэллори не знает ключа, он может только создать фальшивое сообщение, которое при расшифровке превратиться в тарабарщину. Боб, полагая, что сообщение отправлено Алисой, может решить, что-либо в сети, либо у Алисы, появились серьезные проблемы. А что Алиса? Что может сделать она, чтобы разрушить протокол? Например, она может передать копию ключа Еве. Тогда Ева сможет читать все, что пересылает Боб. Потом она может опубликовать его послания в Нью-Йорк Таймс. Эта проблема серьезна, но не относится к протоколу. Алиса и без того может передавать Еве копии любых открытых текстов, переданных с помощью протокола. Конечно, Боб может сделать то же самое, что и Алиса. Этот протокол предполагает, что Алиса и Боб доверяют друг другу. Подводя итоги, перечислим недостатки симметричных криптосистем: ✓ Поскольку знание ключа позволяет раскрыть все сообщения, распространение ключей должно выполняться в тайне. Ключи столь же ценны, что и все сообщения, зашифрованные ими. Для систем шифрования, известных всему миру, задача распределения ключей стоит весьма серьезно. Нередко для доставки ключей «из рук в руки» посылают специальных курьеров. ✓ Если ключ будет скомпрометирован (украден, угадан, выпытан, куплен за взятку и т.д.), Ева может расшифровать все сообщения, зашифрованные этим ключом. Более того, она сможет выступать в качестве одной из сторон и создавать ложные сообщения, одурачивая другую сторону. ✓ Если допустить, что каждая пара пользователей сети будет использовать отдельный ключ, общее число ключей быстро возрастает с ростом числа пользователей. Действительно, в сети из п пользователей необходимы п(п-\)/1 ключей. Таким образом, для общения между собой 10 пользователей необходимы 45 различных ключей, для 100 пользователей - 4950 ключей. Для решения проблемы можно уменьшить число пользователей, однако это не всегда возможно. 2.3. Однонаправленные функции Однонаправленная функция - центральное понятие криптографии с открытым ключом. Эти функции, сами по себе не являющиеся протоколами, служат основными элементами большинства протоколов, обсуждаемых в этой книге. Однонаправленные функции сравнительно легко вычисляются, но обратные им функции вычислить нелегко. Иными словами, функцию /(х) несложно рассчитать для каждого значения аргумента х, но по известному значению /(х) очень трудно вычислить х. В этом контексте слова «очень трудно» означают, что-нибудь вроде утверждения: «для вычисления х по /(х) могут понадобиться миллионы лет, даже если для решения проблемы выделить все компьютеры мира». Наглядным примером однонаправленной функции может служить разбивание тарелки. Нетрудно разбить тарелку на тысячу мелких осколков. Однако очень трудно обратно собрать тарелку из этих крошечных кусочков.
ГЛАВА 2. Основные элементы протоколов 47 Это образное сравнение звучит неплохо, однако грешит расплывчатостью и неточностью. Строгих математических доказательств существования или возможности построения однонаправленных функций нет [230, 530, 600, 661]. Но даже при этих условиях поведение многих функций напоминает однонаправленные функции: их можно без труда рассчитать, однако простой метод обращения функций все еще неизвестен. Например, функцию х2 несложно вычислить в конечном поле, однако обратную функцию хт рассчитать сложнее. В оставшейся части раздела мы будем исходить из предположения, что однонаправленные функции существуют. Несколько подробнее этот вопрос обсуждается в разделе 11.2. Какую же пользу можно извлечь из однонаправленных функций? Использовать их непосредственно для шифрования нельзя. Сообщение, зашифрованное однонаправленной функцией бесполезно - никто не сумеет его расшифровать. (В качестве упражнения, напишите что-нибудь на тарелке, разбейте ее на мелкие осколки и отдайте товарищу. Попросите его прочитать сообщение. Вы увидите, как он будет озадачен такой однонаправленной функцией.) Для криптографии с открытым ключом нам нужно что-то еще ("хотя существуют и непосредственные криптографические приложения с однонаправленными функциями - см. раздел 3.2). Однонаправленная функция с потайным входом1 - это особый тип однонаправленной функции, с тайной «лазейкой». Ее легко вычислить в одном направлении, но трудно - в обратном. Но если вам известен секрет, рассчитать обратную функцию несложно. Иными словами нетрудно вычислить /(х) по заданному х, но трудно по известному /(х) вычислить х. Однако существует некая секретная информация, у, позволяющая без труда вычислить х для заданных значений /(х) и у. Наглядный пример однонаправленной функции с потайным входом - разборка часов. Часы нетрудно разобрать на сотни крохотных деталей, но очень сложно собрать из них работающие часы. Однако с помощью секретной информации - инструкции по сборке - справиться с этой задачей намного легче. 2.4. Однонаправленные хэш-функции Однонаправленные хэш-функции называют по-разному: функциями сжатия, функциями свертки, дайджестом сообщения, цифровым отпечатком, криптографической контрольной суммой, контролем целостности сообщения (Ме$$а§е 1те§п1у СЬеск, М1С) и кодом обнаружения манипуляций (Машри1абоп Эе^есбоп Собе, МЭС). Как бы они не назывались, хэш-функции играют главную роль в современной криптографии. Однонаправленные хэш-функции - один из основных элементов многих протоколов. Хэш-функции уже долгое время используются в вычислительной технике. Хэш- функции - это математические или иные функции, которые принимают на входе строку переменной длины (называемую прообразом), и преобразуют ее в выводную строку фиксированной (обычно меньшей) длины, называемую значением хэш-функции или сверткой. Так, функцию, которая принимает прообраз и возвращает байт, составленный 1 Применяются также термины «ключевая однонаправленная функция» для функции с потайным входом, и «бесключевая» для функции без потайного входа. - Прим. ред.
48 Прикладная криптография из результатов применения операции ХОК ко всем входным байтам, можно рассматривать как простую хэш-функцию. Основная суть хэш-функции состоит в получении цифрового отпечатка фщегрг'тх) прообраза, т.е. создании некоего значения, которое позволяет установить идентичность данного варианта прообраза с подлинным прообразом. Поскольку хэш-функции, как правило, относятся к классу функций, у которых разные аргументы приводят к одному значению, утверждать с абсолютной достоверностью совпадение двух строк невозможно. Однако мы можем использовать хэш-функции для оценки с приемлемой точностью. Однонаправленной хэш-функцией называют хэш-функцию, которая работает только в одном направлении: вычислить значение хэш-функции по прообразу несложно, а вот сгенерировать прообраз, который свернется к заданной величине, очень трудно. Упомянутую выше хэш-функцию, вообще говоря, нельзя назвать однонаправленной: задав конкретный байт, нетрудно сгенерировать строку байтов, применение к которым операции ХОК приводит к заданному значению. С однонаправленной хэш-функцией так не получится. Кроме того, хорошие однонаправленные хэш-функции должны быть свободны от коллизий - очень трудно сгенерировать два прообраза, имеющих одинаковое значение хэш-функции. Хэш-функция открыта - тайны ее расчета не существует. Стойкость однонаправленной хэш-функции заключается именно в ее однонаправленности. У выводимых данных нет никакой видимой зависимости от входных данных. Изменение же в прообразе даже одного бита приводит к изменению в среднем половины битов в значении хэш-функции. Вычислительно невозможно найти прообраз, соответствующий данному значению хэш- функции. Использование однонаправленных хэш-функций можно представить как метод получения цифровых отпечатков файлов. Если вы хотите проверить, что у кого-то есть тот же файл (который уже есть у вас), но при этом вы не хотите, чтобы этот файл был переслан вам, попросите прислать значение хэш-функции файла. Если вам прислали корректное значение хэш-функции, то почти наверняка чужой файл совпадает с вашим. Это особенно полезно при финансовых транзакциях, если вы не хотите, чтобы снятие со счета 100$ где-то в сети превратилось в снятие 1000$. В обычных условиях вы можете использовать однонаправленную хэш-функцию без ключа, так что значение хэш- функции может проверить кто угодно. Если же вам нужно, чтобы проверить значение хэш-функции мог только конкретный получатель, читайте следующий раздел. Колы проверки подлинности сообщения Код проверки подлинности сообщения (Мезза^е АЩЬепбсабоп Собе, МАС, часто используемый русский термин - имитовставка), известный также как код проверки подлинности данных (Эа1а АщЬепЦсаЦоп Собе, БАС), представляет собой однонаправленную хэш-функцию с добавлением закрытого ключа (см. раздел 18.14). Значение хэш-функции зависит не только от прообраза, но и от ключа. Теория остается в точности такой же, что и для хэш-функций, за исключением того, что для проверки значения хэш-функции нужно знать ключ. Вы можете создать код МАС с помощью хэш- функции или блочного алгоритма шифрования; кроме того, можно использовать специализированные коды МАС.
ГЛАВА 2. Основные элементы протоколов 49 2.5. Организация связи с помощью криптографии с открытым ключом Вы можете представлять себе симметричный алгоритм чем-то вроде сейфа. Ключом к нему служит числовая или буквенная комбинация. Человек, знающий эту комбинацию, может открыть сейф, положить в него документ и снова закрыть. Другой человек с помощью той же комбинации может открыть сейф и забрать документ. Тот, кто не знает комбинацию, вынужден учиться взламывать сейфы. В 1976 году Уитфилд Диффи ОУЬкйеИ ЭМе) и Мартин Хеллман (Магбп Не11тап) навсегда изменили этот принцип криптографии [496]. (Агентство АНБ утверждало, что знало эту концепцию еще в 1966 году, но доказательств не представило.) Уитфилд и Хеллман создали криптографию с открытым ключом, предложив использовать два разных ключа - один открытый, а другой закрытый. Вычислительными методами очень трудно определить закрытый ключ по открытому ключу. Используя открытый ключ, кто угодно может зашифровать сообщение, но расшифровать его - нет. Расшифровать такое сообщение может только владелец закрытого ключа. В нашей аналогии с сейфом это напоминает превращение закрытого сейфа в почтовый ящик. Шифрование с открытым ключом аналогично опусканию письма в почтовый ящик - это может сделать кто угодно, просто открыв паз и опустив в него письмо. Расшифрование с закрытым ключом при этом подобно извлечению почты из почтового ящика. Вскрыть такой ящик гораздо сложнее - вам может понадобиться сварочная горелка. Однако если вы знаете секрет (т.е. у вас есть ключ от почтового ящика), извлечь письмо нетрудно. С точки зрения математики, в основе технологии лежат упомянутые выше однонаправленные хэш-функции с потайным входом. Шифрование выполняется легко. Инструкции по шифрованию общедоступны - зашифровать сообщение может любой человек. Расшифрование, наоборот, очень сложно. Настолько, что, не зная секрета, расшифровать сообщение невозможно даже с помощью компьютеров Сгау за тысячи (и миллионы) лет. Секретом, или потайным входом, служит закрытый ключ. Если знать этот секрет, расшифрование столь же просто, как зашифрование. Вот как Алиса может послать сообщение Бобу с помощью криптографии с открытым ключом: 1) Алиса и Боб договариваются использовать криптосистему с открытым ключом. 2) Боб посылает Алисе свой открытый ключ. 3) Алиса шифрует свое сообщение, используя открытый ключ Боба, и отсылает его Бобу. 4) Боб расшифровывает сообщение Алисы своим закрытым ключом. Как нетрудно заметить, криптография с открытым ключом устраняет болезненную для симметричных криптосистем проблему распространения ключей. Прежде Алиса и Боб должны были тайно договориться о ключе. Алиса могла выбрать любой ключ, но его нужно было как-то передать Бобу. Она могла сделать это заранее, но это требовало от нее известной предусмотрительности. Она могла бы послать ключ с надежным курьером, но на это нужно время. Криптография с открытым ключом упрощает задачу. Алиса может отправить Бобу секретное сообщение без какой-либо предварительной
50 Прикладная криптография подготовки. У Евы, подслушивающей все переговоры, есть открытый ключ Боба и сообщение, зашифрованное этим ключом, но она не сможет получить закрытый ключ Боба, а следовательно, и восстановить текст сообщения. Однако чаще используемая криптосистема согласовывается с целой сетью пользователей. У каждого пользователя есть открытый и закрытый ключи, причем открытые ключи помещаются в какую-нибудь общедоступную базу данных. Тогда протокол становится еще проще: 1) Алиса извлекает открытый ключ Боба из базы данных. 2) Алиса шифрует свое сообщение, используя открытый ключ Боба, и посылает его Бобу. 3) Боб расшифровывает сообщение Алисы, используя свой закрытый ключ. В первом протоколе Боб должен был послать Алисе ее открытый ключ, и только после этого Алиса могла отправить ему сообщение. Второй протокол напоминает обычную почту. Боб не участвует в протоколе до тех пор, пока не решит прочитать сообщение. Смешанные (гибридные) криптосистемы Первые алгоритмы с открытым ключом стали известны в то же время, когда в качестве предлагаемого стандарта обсуждался алгоритм ЭЕ8. В криптографическом сообществе это привело к некоторой анархии. Вот как это описывал Диффи [494]: Однако криптосистемы с открытым ключом, обсуждаемые в популярной и научной печати, несмотря на их достоинства, не нашли соответствующего отклика в криптографических учреждениях. В том же году, когда была предложена криптография с открытым ключом, Агентство Национальной Безопасности (АНБ) предложило в качестве федерального стандарта шифрования данных БЕЗ (Ба(а ЕпсгурИоп 31апдагд) - традиционную криптографическую систему, разработанную фирмой 1ВМ. Марти Хеллман и я критиковали это предложение за недостаточную длину ключа, но производители уже были готовы к поддержке стандарта, и наша критика многими была воспринята, как попытка помешать введению стандарта ради продвижения собственной идеи. В то же время криптография с открытым ключом тоже подвергалась критике, как в популярной литературе [1125], так и в технических статьях [849, 1159], словно это был конкурирующий продукт, а не недавнее научное открытие. Однако все это не помешало АНБ объявить о своих заслугах в этой области. Его директор в одной из статей в Британской энциклопедии [1461] указал, что «криптография с двумя ключами была открыта в Агентстве десятью годами раньше», хотя доказательства этого утверждения не были публично представлены. На практике алгоритмы с открытым ключом не заменяют симметричные алгоритмы. Они используются для шифрования не самих сообщений, а ключей. Этому есть две причины: ✓ Алгоритмы с открытым ключом исполняются медленно. Симметричные алгоритмы, по крайней мере, в 1000 раз быстрее алгоритмов с открытым ключом. Конечно, компьютеры становятся все быстрее и быстрее, и лет через 15 компьютеры будут способны обеспечить скорость криптографии с открытым ключом, сопоставимую с сегодняшней скоростью симметричной криптографии. Но требования к пропускной
ГЛАВА 2. Основные элементы протоколов 51 способности тоже возрастают, поэтому всегда будет необходимость шифровать данные быстрее, чем это может обеспечить криптография с открытым ключом. Криптосистемы с открытым ключом уязвимы к атакам на основе подобранного открытого текста. Если С = Е(Р), где Р - открытый текст из множества п возможных открытых текстов, криптоаналитику достаточно зашифровать все п возможных открытых текстов и сравнить результаты с С (как вы помните, ключ шифрования является открытым). Он не сможет таким путем восстановить ключ расшифрования, но сумеет определить Р. Атака на основе подобранного открытого текста особенно эффективна, если число возможных шифрованных сообщений относительно невелико. Напримёр, если Р - это денежная сумма в долларах, про которую известно, что она меньше 1000000$, такое вскрытие сработает. Криптоаналитик испытает весь миллион значений. (Эта проблема решается с помощью вероятностного шифрования, см. раздел 23.15.) Такие атаки могут быть весьма эффективными, даже если ограничение на Р не такое строгое. Даже знание того, что шифртекст не соответствует конкретному открытому тексту, может принести пользу. Симметричные криптосистемы неуязвимы к вскрытиям этого типа, поскольку криптоаналитик, не зная ключ, не сможет выполнять пробные шифрования. В большинстве практических реализаций криптография с открытым ключом используется для засекречивания и распространения сеансовых ключей. Сеансовые ключи используются симметричными алгоритмами для защиты трафика сообщений [879]. Иногда такие реализации называют смешанными (гибридными) криптосистемами. 1) Боб посылает Алисе свой открытый ключ. 2) Алиса генерирует случайный сеансовый ключ, шифрует его с помощью открытого ключа Боба и посылает его Бобу. ЕВ(К) 3) Используя свой закрытый ключ, Боб расшифровывает сообщение Алисы, восстанавливая сеансовый ключ. В в (Ев (К)) = К 4) Обе стороны шифруют свои сообщения с помощью одинакового сеансового ключа. Использование криптографии с открытым ключом для распространения ключей решает эту очень важную проблему. В симметричной криптографии ключ шифрования данных, даже если не используется, все равно должен храниться в определенном месте. Если Ева наложит на него руку, она сможет расшифровать все сообщения, закрытые этим ключом. При использовании протокола, приведенного выше, при необходимости зашифровать сообщения создается сеансовый ключ, который по завершению сеанса связи уничтожается. Это резко снижает опасность компрометации сеансового ключа. Конечно, закрытый ключ тоже уязвим к компрометации, но риск значительно меньше, так как во время сеанса этот ключ используется однократно - для шифрования сеансового ключа. Подробнее этот вопрос обсуждается в разделе 3.1.
52 Прикладная криптография Головоломки Меркла Первый вариант криптографии с открытым ключом изобрел Ральф Меркл (Яа1рЬ Мегк1е). В 1974 году он посещал курс Ланса Хоффмана (Ьапсе НоГГшап) по компьютерной безопасности в Калифорнийском университете, Беркли. Тема его курсовой работы, представленной досрочно, называлась «Бесиге СоттишсаНоп оуег Шзесиге СЬаппе1з» (Секретная связь по открытым каналам) [1064]. Хоффман не понял предложения Меркла, и, в конце концов, Меркл бросил посещать занятия. Однако он продолжал работать над проблемой, несмотря на постоянное непонимание его идей. Метод Меркла основывался на головоломках («ринЫз»), решить которые отправителю и получателю было легче, чем перехватчику сообщений. Вот как Алиса может послать шифрованное сообщение Бобу без предварительного обмена ключом. 1) Боб создает 220, т.е. около миллиона сообщений вроде: «Это головоломка номер х. Это секретный ключ номер у», где х - случайное число, а у - случайный секретный ключ. В каждом сообщении значения х и у различаются. Используя симметричный алгоритм, Боб шифрует каждое сообщение своим 20-битовым ключом и отправляет их все Алисе. 2) Алиса выбирает произвольное сообщение и выполняет лобовое вскрытие, пытаясь восстановить открытый текст. Эта работа объемная, но выполнимая. 3) Используя восстановленный ключ и какой-нибудь симметричный алгоритм, Алиса шифрует свое секретное сообщение и посылает его Бобу вместе со значением х. 4) Боб знает, какой секретный ключ у он использовал в сообщении х, и, следовательно, может расшифровать сообщение Алисы. Ева может взломать эту систему, но она должна проделать гораздо большую работу, чем Алиса и Боб. Для восстановления сообщения на этапе 3 она должна будет вскрыть «в лоб» все 220 сообщений, отправленных Бобом на этапе 1. Сложность этого составляет 240. Еве не помогут значения х, поскольку они присвоены случайно на этапе 1. В общем случае, усилия Евы будут равны квадрату усилий Алисы. По криптографическим меркам, преимущество п к п2 невелико, но в известных обстоятельствах может оказаться приемлемым. Если Алиса и Боб могут испытывать десять тысяч ключей в секунду, каждому понадобится минута для выполнения своих действий и еще одна минута для передачи головоломок от Боба к Алисе по линии связи 1.544 Мбит/с. Если вычислительные возможности Евы сравнимы с приведенными выше, для взлома системы ей понадобится около года. Известны и другие алгоритмы, еще более устойчивые к вскрытию. 2.6. Цифровые подписи Подписи от руки издавна используются для доказательства авторских прав или, по крайней мере, согласия с документом. Что же так привлекательно в подписи [1392]? ✓ Подпись достоверна. Она убеждает получателя в том, что человек, подписавший документ, сделал это сознательно.
ГЛАВА 2. Основные элементы протоколов 53 ✓ Подпись неподдельна. Она доказывает, что именно подписавший, и никто другой, сознательно подписал документ. ✓ Подпись невозможно использовать повторно. Она - часть документа, и мошенник не может перенести подпись в другой документ. ✓ Подписанный документ изменить невозможно. ✓ От подписи нельзя отречься. Подпись и документ материальны. Впоследствии человек, подписавший документ, не сможет утверждать, что документ подписан не им. В действительности, ни одно из этих утверждений нельзя назвать бесспорным. Подписи можно подделать, перевести с одного листа бумаги на другой, документы можно изменить и после подписания. Однако мы миримся с этими проблемами из-за того, что действия мошенника затруднены и он рискует быть разоблаченным. Неплохо было бы реализовать что-нибудь подобное и на компьютерах, но тут возникают некоторые проблемы. Во-первых, компьютерные файлы скопировать не только просто, но очень просто. Даже если подпись человека (например, графическое изображение подписи от руки) подделать нелегко, можно без труда вырезать подлинную подпись из одного документа и вставить в другой. Таким образом, простое наличие в документе такой подписи ничего не означает. Во вторых, компьютерные файлы очень легко изменить уже после подписания, не оставив и малейшего следа изменения. Подписание документов с помощью симметричных криптосистем и посредника Предположим, Алиса хочет подписать свое цифровое сообщение и отправить его Бобу. Она может сделать это с помощью посредника Трента и симметричной криптосистемы. Трент - авторитетный доверенный посредник. Он может связываться и с Алисой, и с Бобом (равно как и другими желающими подписать цифровой документ). Он выдает Алисе секретный ключ КА, а Бобу - другой секретный ключ, Кв. Эти ключи устанавливаются задолго до начала исполнения протокола и могут использоваться многократно для подписания различных документов. 1) Алиса шифрует ключом КА сообщение Бобу и посылает его Тренту. 2) Трент расшифровывает сообщение с помощью ключа КА. 3) Трент включает в расшифрованное сообщение заявление, что он получил это сообщение от Алисы, и шифрует весь новый пакет ключом Кв. 4) Трент отсылает зашифрованный пакет Бобу. 5) Боб расшифровывает пакет с помощью ключа Кв. Теперь он может прочитать как сообщение Алисы, так и подтверждение Трента, что сообщение отослано именно Алисой. Каким образом Трент может узнать, что сообщение пришло именно от Алисы, а не от какого-то самозванца? Этот вывод он делает на основании шифрования сообщения. Поскольку только он и Алиса знают их секретный ключ, одна Алиса могла зашифровать сообщение этим ключом.
54 Прикладная криптография Можно ли считать цифровую подпись аналогом подписи на бумаге? Рассмотрим характеристики такой подписи: ✓ Подпись достоверна. Трент - доверенный посредник, и знает, что сообщение получено именно от Алисы. Для Боба доказательством служит подтверждение Трента. ✓ Подпись неподдельна. Только Алиса (и Трент, но ему верят все) знает ключ КА, поэтому только Алиса, и никто другой, могла послать Тренту сообщение, зашифрованное ключом КА. Если кто-нибудь другой попытается выдать себя за Алису, Трент сразу же обнаружит это на этапе 2 и не заверит подлинность. ✓ Подпись невозможно использовать повторно. Если Боб попытается присоединить подтверждение Трента к какому-то постороннему сообщению, Алиса поднимет скандал. Посредник (Трент или другой посредник, имеющий доступ к той же информации) попросит Боба предъявить его сообщение и шифрованное сообщение Алисы. Затем посредник зашифрует сообщение ключом КА и увидит, что оно не совпадает с шифрованным сообщением, переданным Бобом. Боб, конечно же, не сможет создать правильное шифрованное сообщение, поскольку не знает ключ КА. ✓ Подписанный документ невозможно изменить. Если Боб, получив документ, попытается изменить его, Трент обнаружит жульничество описанным выше способом. ✓ Подпись невозможно отрицать. Если впоследствии Алиса заявит, что она никогда не посылала данное сообщение, подтверждение Трента докажет совсем иное. Помните, Тренту доверяют все - истинно все, что он скажет. Если Бобу необходимо показать Кэрол документ, подписанный Алисой, он не может раскрыть ей свой секретный ключ. Ему снова придется обратиться к Тренту: 1) Боб берет сообщение и подтверждение Трента, что сообщение получено от Алисы, шифрует их ключом Кв и посылает Тренту. 2) Трент расшифровывает полученное сообщение с помощью ключа Кв. 3) Трент проверяет свою базу данных и подтверждает, что исходное сообщение отправила Алиса. 4) Трент шифрует полученное от Боба сообщение с ключом Кс, который он выделил Кэрол, и посылает Кэрол шифрованное сообщение. 5) Кэрол расшифровывает полученное сообщение с помощью ключа Кс. Теперь она может прочитать как само сообщение, так и подтверждение Трента, что сообщение отправлено Алисой. Такие протоколы работают, но доставляют Тренту множество хлопот. Он должен целыми днями шифровать и расшифровывать сообщения, посредничая между каждой парой людей, которые хотят обменяться подписанными документами. Он должен хранить сообщения в базе данных (хотя этого можно избежать, если посылать получателю копию шифрованного сообщения отправителя). Трент - узкое место любой системы связи, даже если он - просто бездушная компьютерная программа. Кроме того, трудно создать и поддерживать посредника, подобного Тренту, которому доверяют все пользователи сети. Трент должен быть непогрешим. Если он допустит хотя
ГЛАВА 2. Основные элементы протоколов 55 бы одну ошибку на миллион подписей, он потеряет доверие. Трент должен быть абсолютно надежен. Если база данных Трента с секретными ключами когда-нибудь будет разрушена, либо кто-нибудь ухитрится модифицировать ее содержимое, все подписи станут совершенно бесполезными. Могут появиться документы, якобы подписанные годы назад. Воцарится хаос. Падут правительства. Наступит анархия. Поэтому такая схема теоретически допустима, но для практики не годится. Деревья цифровых подписей Ральф Меркл, опираясь на средства криптографии с секретным ключом, предложил систему цифровых подписей, создающую бесконечное число одноразовых подписей с помощью древовидной структуры [1067,1068]. Основная идея этой схемы заключается в том, что корень дерева помещают в какой-нибудь общедоступный файл, удостоверяя тем самым его подлинность. Корень подписывает одно сообщение и удостоверяет свои подузлы в дереве. Каждый из этих узлов тоже подписывает одно сообщение и удостоверяет подлинность своих подузлов, и т.д. Подписание документов с помощью криптографии с открытым ключом Для создания цифровых подписей можно использовать некоторые алгоритмы с открытым ключом. В некоторых алгоритмах, например Я8А (см. раздел 19.3), для шифрования можно использовать как открытый, так и закрытый ключи. В этом случае для получения надежной цифровой подписи следует просто зашифровать документ своим закрытым ключом. В других алгоритмах, например, 08А (см. раздел 20.1), для создания цифровых подписей используется отдельный алгоритм, непригодный для шифрования. Эта идея впервые была предложена Диффи и Хеллманом [496] и в дальнейшем расширена и доработана в трудах других криптографов [1282, 1328, 1024, 1283, 426]. Хороший обзор этого вопроса можно найти в [1099]. Основной протокол несложен: 1) Алиса шифрует документ своим закрытым ключом, тем самым подписывая его. 2) Алиса посылает Бобу подписанный документ. 3) Используя открытый ключ Алисы, Боб расшифровывает документ, проверяя тем самым достоверность подписи. Этот протокол намного лучше предыдущего. Ни для подписи документов, ни для ее проверки, Трент не нужен. (Он нужен только для подтверждения, что открытый ключ принадлежит именно Алисе.) Трент не нужен участникам протокола даже для разрешения споров: Если Боб не сумел завершить этап 3, он знает, что подпись недостоверна. Кроме того, данный протокол отвечает всем требованиям к подписи: |/ Подпись достоверна. Когда Боб проверит подлинность сообщения с помощью открытого ключа Алисы, он узнает, что это сообщение подписала именно Алиса. ✓ Подпись неподдельна. Свой закрытый ключ знает только Алиса.
56 Прикладная криптография ✓ Подпись невозможно использовать повторно. Подпись - встроенная функция документа, и не может быть перенесена в другой документ. ✓ Подписанный документ невозможно изменить. Если кто-нибудь изменит документ, подтвердить подпись открытым ключом Алисы станет невозможно. ✓ Подпись неотрицаема. Для проверки подлинности подписи Алисы, Бобу не нужна помощь с ее стороны. Подписание документов с метками времени В определенных обстоятельствах Боб может надуть Алису. Например, он может повторно использовать подписанный документ. Если Алиса подписала контракт, это не проблема - какая разница, сколько есть копий одного контракта? Однако если Алиса подписала цифровой чек, дело совсем другое. Допустим, Алиса послала Бобу подписанный цифровой чек на сумму 100$. Боб отнес чек в банк, который проверил подлинность подписи и перечислил деньги с одного счета на другой. Боб, будучи парнем не промах, сохраняет копию цифрового чека. На следующей неделе он снова несет чек в тот же (или другой) банк. Банк опять подтверждает подпись и переводит деньги с одного счета на другой. И если Алиса не проверяет остаток на своей чековой книжке, Боб может проделывать этот фокус годами. Поэтому в цифровые подписи часто вставляют метки времени. В документ включают дату и время подписания, после чего подписывают вместе со всем содержимым сообщения. Банк сохраняет метку времени в своей базе данных. Теперь если Боб попытается еще раз получить деньги по чеку Алисы, банк проверит метку времени по своей базе данных. А так как банк уже оплатил чек Алисы с той же меткой времени, банк обратится в полицию. После этого Бобу придется лет так 15 изучать криптографические протоколы в тюрьме Ливенворт. Подписание документов с помощью криптографии с открытым ключом и однонаправленных хэш-функций В практических реализациях алгоритмы с открытым ключом нередко слишком малоэффективны для подписания крупных документов. Поэтому для экономии времени протоколы цифровой подписи часто реализуют с помощью однонаправленных хэш- функций [432, 433]. Таким образом, вместо подписания самого документа Алиса подписывает хэш данного документа. Согласно этому протоколу, однонаправленная хэш-функция и алгоритм цифровой подписи должны быть согласованы заранее. 1) Алиса создает необратимый хэш документа. 2) Алиса шифрует хэш своим закрытым ключом, тем самым подписывая документ. 3) Алиса посылает документ и подписанный хэш Бобу. 4) Боб генерирует необратимый хэш документа, присланного Алисой. Затем, используя алгоритм цифровой подписи, Боб расшифровывает подписанный хэш документа с помощью открытого ключа Алисы. Если подписанный хэш документа совпадает с генерированным, подпись достоверна.
ГЛАВА 2. Основные элементы протоколов 57 Скорость намного возрастает. А поскольку вероятность совпадения двух разных документов с одинаковым хэшем размером 160 бит равна 1/2160, можно уверенно приравнять подпись на хэше к подписи на документе. Подчеркнем, важно использовать именно однонаправленную хэш-функцию; в противном случае не составит ни малейшего труда создать множество документов с одинаковым хэшем; подпись же годится для всех, и появляется возможность мошенничества. У этого протокола есть и другие преимущества. Во-первых, подпись можно хранить отдельно от документа. Во-вторых, значительно снижаются требования к вместимости устройств хранения у получателя, необходимой для хранения документов и подписей. Система архивирования может использовать этот протокол для подтверждения существования документов без сохранения их содержимого. В центральной базе данных могут храниться только значения хэш-функции файлов. Нет никакой необходимости просматривать файлы - пользователи помещают в базу данных значения хэш-функции, а база данных хранит эти значения вместе с меткой времени получения. Если в будущем возникнут какие-нибудь разногласия по поводу авторства и времени создания документа, база данных поможет разрешить их при помощи хранящегося в ней значения хэш-функции. Подобная система имеет большое преимущество и с точки зрения секретности: Алиса может получить авторские права на документ, сохранив его в тайне. Публикация документа необходима только для доказательства авторских прав (см. раздел 4.1). Алгоритмы и терминология Известно множество алгоритмов цифровой подписи. Все они относятся к алгоритмам с открытым ключом, где секретная часть используется для подписания документов, и открытая - для проверки подлинности подписи. Иногда процесс подписания называют зашифрованием с закрытым ключом, а процесс проверки подлинности подписи - расшифрованием с открытым ключом. Это может ввести в заблуждение, поскольку такая терминология уместна только при использовании алгоритма К8А. В других алгоритмах используют иные реализации. Например, при использовании однонаправленных хэш-функций и меток времени процесс подписания и проверки подлинности подписи иногда требует дополнительных операций. Кроме того, многие алгоритмы можно использовать для цифровой подписи, но не шифрования. В общем, мы будем говорить о процессах подписания и проверки подлинности подписи, не вдаваясь в подробности используемых алгоритмов. Процесс подписания сообщения с закрытым ключом К будет обозначаться как: $к(М) А процесс проверки подлинности подписи с помощью соответствующего открытого ключа как: Ук(М) Битовую строку, присоединяемую к документу после подписания (в предыдущем примере это необратимый хэш документа, зашифрованный закрытым ключом), мы будем называть цифровой подписью или просто подписью. Весь протокол, с помощью которого получатель сообщения убеждается в подлинности отправителя и целостности
58 Прикладная криптография сообщения, называется проверкой подлинности (аутентификацией). Подробнее эти протоколы обсуждаются в разделе 3.2. Многократные подписи Каким образом Алиса и Боб могут подписать один и тот же электронный документ? Помимо однонаправленных хэш-функций, для этого есть еще две возможности. Первая - Алиса и Боб подписывают отдельные копии документа. Тогда размер конечного сообщения вдвое превысит размер исходного документа. Вторая - сначала документ подписывает Алиса, а затем Боб подписывает подпись Алисы. Этот метод неплох, однако позволяет проверить подлинность подписи Алисы только совместно с проверкой подписи Боба. Задача многократного подписания документа без труда решается с помощью однонаправленных хэш-функций: 1) Алиса подписывает хэш документа. 2) Боб подписывает хэш документа. 3) Боб отсылает свою подпись Алисе. 4) Алиса отсылает Кэрол сам документ, а также свою и Боба подписи. 5) Кэрол проверяет подлинность подписей Алисы и Боба. Алиса и Боб могут выполнять этапы 1 и 2 как параллельно, так и последовательно. На этапе 5 Кэрол может проверить любую подпись независимо от другой. Неотрицание авторства и цифровые подписи Конечно, Алиса может словчить с цифровыми подписями, и с этим ничего нельзя поделать. Так, она может подписать документ и затем уверять, что не делала этого. Сначала она, как обычно, подписывает документ. Затем она анонимно публикует свой закрытый ключ, либо намеренно оставляет его в общедоступном месте, или просто симулирует то или другое. После этого Алиса клянется, что ее подпись компрометирована и используется мошенником, выдающим себя за нее. Она дезавуирует свою подпись под этим и всеми другими документами, которые она подписала с помощью этого закрытого ключа. Такая игра называется отрицанием авторства. Эффективность подобного мошенничества могут снизить метки времени, однако Алиса всегда может заявить, что ее ключ был компрометирован еще раньше. Если Алиса удачно рассчитает время, она сможет подписать документ, а затем безнаказанно заявлять, что этого не делала. Именно поэтому так много говорится о хранении закрытых ключей в модулях, защищенных от несанкционированного доступа - чтобы Алиса не могла добраться до своего ключа и злоупотребить им. Хотя с подобным мошенничеством ничего сделать нельзя, можно предпринять некоторые меры, гарантирующие, что старые подписи не будут признаны недостоверными из-за разногласий по новым подписям. (Например, Алиса может «потерять» свой ключ, чтобы не платить Бобу за подержанный автомобиль, который он продал ей вчера, и, по ходу дела, сделать недействительным свой банковский счет.)
ГЛАВА 2. Основные элементы протоколов 59 Выход в том, что получатель электронного документа должен поставить на нем метку времени [453]. Общая схема такого протокола описана в [28]: 1) Алиса подписывает сообщение. 2) Алиса генерирует заголовок, содержащий некоторую идентификационную информацию. Затем она добавляет заголовок к подписанному сообщению, подписывает все вместе и отправляет Тренту. 3) Трент проверяет подлинность наружной подписи и подтверждает идентификационную информацию. Далее он проставляет метку времени на сообщении, подписанном Алисой, и на идентификационной информации. Затем он подписывает весь пакет и отсылает его Алисе и Бобу. 4) Боб проверяет подлинность подписи Трента, идентификационную информацию и подпись Алисы. 5) Алиса проверяет подлинность сообщения, которое Трент послал Бобу. Если она не признает своего авторства, она немедленно заявляет об этом. В другой схеме Трент вступает в протокол после факта подписания [209]. Получив подписанное сообщение, Боб посылает копию Тренту для проверки. Трент может засвидетельствовать подлинность подписи Алисы. Сферы применения цифровых подписей Одним из самых ранних примеров использования цифровых подписей было упрощение проверки соблюдения договоров о ядерных испытаниях [1454, 1467]. Соединенные Штаты и Советский Союз (кто-нибудь помнит Советский Союз?) разрешили друг другу разместить за границей сейсмографы для мониторинга ядерных испытаний. Проблема заключалась в том, что каждая сторона хотела быть уверенной, что страна, в которой размещены приборы, не подделывает их показаний. В свою очередь, страна, в которой размещались сейсмографы, искала гарантий, что приборы посылают только ту информацию, которая нужна для мониторинга ядерных испытаний. Первую проблему можно решить методом условного удостоверения подлинности, однако обе проблемы могут решить только цифровые подписи. Сторона, на территории которой стоит сейсмограф, может читать^ но не изменять данные сейсмографа, и наблюдающая сторона знает, что данные не подделываются. 2.7. Цифровые подписи плюс шифрование Комбинируя цифровые подписи и криптографию с открытым ключом, можно создать протокол, сочетающий надежное шифрование с достоверностью цифровых подписей. Представьте себе письмо от вашей матери: подпись доказывает авторство, а конверт обеспечивает конфиденциальность. 1) Алиса подписывает сообщение, используя свой закрытый ключ. ЫМ)
60 Прикладная криптография 2) Алиса шифрует подписанное сообщение с помощью открытого ключа Боба и отправляет его Бобу. Ев(5а(М)) 3) Боб расшифровывает сообщение своим закрытым ключом. Ов(Ев(8А(М))) = ЕА(М) 4) Боб проверяет подлинность подписи, используя открытый ключ Алисы, и восстанавливает сообщение. Уа($а(М)) = М Подписание сообщения до шифрования представляется разумным. Когда Алиса пишет письмо, она сначала подписывает его, и уже потом запечатывает в конверт. Если она положит в конверт неподписанное письмо, Боб может заявить, что письмо было скрытно заменено. Если Боб показывает Кэрол письмо Алисы и конверт, Кэрол может, например, обвинить Боба, что он показывает конверт от другого письма. Точно также и в электронной корреспонденции подписание сообщения до шифрования - благоразумная практика [48]. Это не только надежнее - противник не может заменить подпись шифрованного сообщения собственной - но тому есть и юридические основания: если человек подписывает невидимый ему текст, юридическая сила подписи незначительна [1312]. Кроме того, есть некоторые криптоаналитические методы вскрытия документов, шифрованных по такой технологии с помощью подписей КБА (см. раздел 19.3). У Алисы нет причин обязательно использовать одну и ту же пару - открытый ключ/закрытый ключ - как для шифрования, так и подписания документа. Она может использовать две пары ключей: одна пара для шифрования, а другая - для подписания. Такое разделение имеет свои преимущества: Алиса может передать свой ключ шифрования полиции без компрометации подписи, а другой ключ - депонировать (см. раздел 4.13), не затрагивая другой ключ. Ключи могут иметь разную длину и сроки действия. И, разумеется, для предотвращения повторного использования сообщений в этом протоколе должны использоваться метки времени. Эти метки могут также защитить и от других потенциальных ловушек, одна из которых описана ниже. Повторная отсылка принятого сообщения Рассмотрим реализацию этого протокола, включив в него дополнительную возможность- подтверждение сообщений. Теперь каждый раз, когда Боб принимает сообщение, он обязательно возвращает его в подтверждение приема. 1) Алиса подписывает сообщение, используя свой закрытый ключ, затем шифрует его открытым ключом Боба и посылает его Бобу. ЕВ($Л(М)) 2) Боб расшифровывает сообщение своим закрытым ключом, проверяет подлинность подписи, используя открытый ключ Алисы, и восстанавливает сообщение. УАфв(Ев(8А(М)))) = М
ГЛАВА 2. Основные элементы протоколов 61 3) Боб подписывает сообщение, используя свой закрытый ключ, шифрует подписанное сообщение открытым ключом Алисы и отправляет его обратно Алисе. Еа(8в(М)) 4) Алиса расшифровывает сообщение своим закрытым ключом и проверяет подлинность подписи, используя открытый ключ Боба. Если принятое сообщение совпадает с отосланным, Алиса знает, что Боб получил корректное сообщение. Когда один и тот же алгоритм используется как для шифрования, так и для проверки подлинности цифровой подписи, опасность вскрытия возрастает [506]. Действительно, в этом случае операция создания цифровой подписи противоположна операции шифрования: Ух=Ехи8х=Вх. Предположим, что Мэллори - зарегистрированный пользователь системы с собственными открытым и закрытым ключами. Посмотрим, как Мэллори может прочитать почту Боба. Во-первых, на этапе 1 он перехватывает и сохраняет сообщение от Алисы к Бобу. Потом, немного выждав, Меллори отсылает это сообщение Бобу, утверждая, что оно отправлено им самим (Мэллори). Боб, полагая, что это безобидное сообщение от Мэллори, расшифровывает сообщение с помощью своего закрытого ключа и пытается проверить подпись Мэллори. С этой целью он расшифровывает подпись открытым ключом Мэллори. Конечно, в итоге получается полная ерунда: Ем(Ов(Ев(Оа (М)))) = Ем(ВА (АО) Но даже и тогда, Боб, следуя протоколу, отправляет полученное сообщение Мэллори: Ем(Ов(Ем(Оа(М)))) Теперь все, что осталось Мэллори - расшифровать сообщение своим закрытым ключом, зашифровать его с помощью открытого ключа Боба, расшифровать сообщение еще раз своим закрытым ключом и зашифровать с помощью открытого ключа Алисы. Все! У Мэллори есть М Хорошей идеей для взломщика является допущение, что Боб будет автоматически пересылать Мэллори полученное сообщение (квитанцию). Например, такой протокол может быть встроен в его приложение связи и отсылать квитанции автоматически. Именно вот эта готовность сообщать о приеме бессмысленного сообщения нарушает секретность. Если бы Боб перед отсылкой квитанции проверил осмысленность сообщения, он избежал бы таких проблем с безопасностью. Известны и более совершенные варианты этого метода вскрытия, позволяющие Мэллори отправить Бобу сообщение, отличное от перехваченного. Никогда не подписывайте случайные сообщения от других людей и не отсылайте никому результаты их расшифрования. Зашита от атаки при повторной отсылке сообщения Только что описанная атака срабатывает только потому, что операция шифрования совпадает с операцией проверки подлинности подписи, а операция расшифрования - с операцией подписания. В надежном протоколе операции шифрования и создания цифровой подписи должны хотя бы немного различаться. Эту проблему решает использование разных ключей для каждой операции, либо использование в каждой
62 Прикладная криптография операции различных алгоритмов, либо наложение меток времени, которые делают различными входящее и исходящее сообщения, либо создание цифровой подписи с применением однонаправленных хэш-функций (см. раздел 2.6). Таким образом, при использовании алгоритмов с открытым ключом надежную защиту обеспечивает следующий протокол: 1) Алиса подписывает сообщение. 2) Алиса шифрует подписанное сообщение с помощью открытого ключа Боба. Для шифрования Алиса использует алгоритм, отличный от алгоритма цифровой подписи. Затем Алиса отправляет сообщение Бобу. 3) Боб расшифровывает сообщение своим закрытым ключом. 4) Боб проверяет подлинность подписи Алисы. Атаки на криптографию с открытым ключом Обсуждая протоколы, использующие криптографию с открытым ключом, я, не акцентировал внимание на том, как же Алиса получает открытый ключ Боба. Подробно этот вопрос рассматривается в разделе 3.1, однако его стоит упомянуть и здесь. Простейший метод раздобыть чей-то открытый ключ - загрузить его из защищенной базы данных. Эта база данных обязана быть общедоступной, чтобы каждый мог получить любой нужный ему ключ. Кроме того, эта база данных должна быть защищена от несанкционированного доступа с правом записи. В противном случае Мэллори может запросто подменить открытый ключ Боба. После этого Боб уже не сможет читать сообщения, адресованные ему, зато это сможет сделать Мэллори. Но даже если открытые ключи хранятся в защищенной базе данных, Мэллори может подменить их при пересылке. Чтобы помешать этому, Трент должен подписывать каждый открытый ключ, используя собственный закрытый ключ. Действующего таким образом Трента часто называют Органом сертификации ключей или Центром распределения ключей (Кеу 0151пЬибоп Сетег, КЭС). Что касается практической реализации, центр КЭС подписывает составное сообщение, включающее имя пользователя, его открытый ключ и другую существенную информацию о пользователе. Именно это подписанное составное сообщение хранится в базе данных КЭС. Когда Алиса принимает ключ Боба, она проверяет подпись КЭС, удостоверяясь в подлинности ключа. Наконец, можно отметить, что и указанный выше способ всего лишь затрудняет, но не исключает возможность мошенничества со стороны Мэллори. Ведь должна же Алиса откуда-то получить открытый ключ КЭС. Мэллори достаточно только заменить этот ключ своим открытым ключом, исказить базу данных и подменить достоверные ключи своими ключами, подписанными его закрытым ключом - как если бы Мэллори и был центром КЭС - и дело сделано. Но ведь даже подписи на бумаге можно подделать, если Мэллори хорошо постарается. Подробнее обмен ключами обсуждается в разделе 3.1.
ГЛАВА 2. Основные элементы протоколов 63 2.8. Генераторы случайных и псевдослучайных последовательностей Зачем в книге по криптографии обсуждать генерацию случайных чисел? Ведь генератор случайных чисел встроен в любой компилятор - это обычная функция, которую можно вызывать из программы. Почему бы не воспользоваться ею? К сожалению, такие генераторы случайных чисел почти наверняка недостаточно надежны для криптографии, а может быть даже и не слишком «случайны». Большинство из них работают совершенно неприемлемым образом. На самом деле, генераторы случайных чисел отнюдь не случайны, поскольку им вовсе не нужно быть таковыми. В большинстве приложений, например, компьютерных играх, используется так мало случайных чисел, что их неслучайность вряд ли будет замечена. Однако криптография весьма чувствительна к свойствам генераторов случайных чисел. Попробуйте воспользоваться плохим генератором случайных чисел, и вы начнете получать фантастические корреляции и странные результаты [1231, 1238]. Если же ваша безопасность всецело зависит от генератора случайных чисел, эти таинственные корреляции и странные результаты - совсем не то, что вам надо. Проблема заключается в том, что фактически генератор случайных чисел не создает случайную последовательность. Возможно, он создает нечто, даже отдаленно не напоминающее случайную последовательность. Действительно, с помощью компьютера невозможно создать что-либо действительно случайное. Дональд Кнут (ИопаШ КпиШ) приписал Джону фон Нейману (Мт уоп Ыеишап) следующие слова: «Каждый, кто применяет арифметические методы для создания случайных чисел, впадает в грех» [863]. Компьютеры - это детерминированные творения: с одного конца поступает сырье, внутри выполняются совершенно предсказуемые операции, и с другого конца выходит что-то иное. Подайте на вход один и тот же материал дважды - на выходе вы получите одно и то же. Заложите в два одинаковых компьютера одинаковые исходные данные, и оба компьютера рассчитают одно и то же. Число состояний, в которых может находиться компьютер, велико, однако строго ограничено, а выдаваемый результат всегда четко определяется исходными данными и текущим состоянием компьютера. Таким образом, любой генератор случайных чисел, реализованный с помощью компьютера (по крайней мере, машиной с конечным числом состояний), периодичен по определению. А все, что периодично, по определению, предсказуемо. А все, что предсказуемо, не может быть случайным. Истинный генератор случайных чисел требует случайного ввода, но компьютер не может его обеспечить. Псевдослучайные последовательности Самое большее, что можно создать с помощью компьютера - это генератор псевдослучайных последовательностей. Что это такое? Над формальным определением бились многие люди, но я воздержусь от этого. Псевдослучайная последовательность - это нечто, что выглядит набором случайных чисел. Период последовательности должен быть достаточно велик, с тем, чтобы исключить периодичность в конечной последовательности приемлемой длины, которая и используется на практике. Если вам нужна случайная последовательность длиной 109 бит, не пользуйтесь генератором последовательностей, который повторяется через каждые 16 Кбит. Такие сравнительно
64 Прикладная криптография короткие непериодические подпоследовательности должны в максимально возможной степени походить на случайные последовательности. Например, последовательности должны состоять примерно из равного числа единиц и нулей; около половины серий (последовательностей одинаковых бит) должны быть единичной длины, четверть - состоять из двух бит, восьмая часть - из трех бит, и т.д. Последовательности должны быть несжимаемы. Распределение длин серий из нулей и единиц должно быть одинаковым [643, 863, 99, 1357]. Эти свойства можно измерить опытным путем, а затем сравнить с математическими ожиданиями проверкой по критерию %-квадрат. Для наших целей генератор последовательностей можно считать псевдослучайным, если он обладает следующим свойством: 1. Генератор выглядит случайным. Это означает, что он проходит все статистические тесты на случайность, которые только мы сумели найти. (Начните с тестов, описанных в [863].) На создание удовлетворительных псевдослучайных последовательностей с помощью компьютеров затрачена масса усилий. Академическая литература изобилует работами по генераторам случайных последовательностей. Там же можно найти различные тесты на случайность. Все описываемые генераторы периодичны (это неизбежно), однако если их период не менее 2256 бит, такие генераторы можно использовать в самых крупных приложениях. Однако проблема таинственных корреляций и странных результатов все еще актуальна. Тенденция к их созданию свойственна любому генератору псевдослучайных последовательностей, если использовать его определенным образом. А именно это и нужно криптоаналитику для вскрытия системы. Криптографически стойкие псевдослучайные последовательности По сравнению с другими приложениями, криптографические приложения предъявляют к генераторам псевдослучайных последовательностей намного более строгие требования. Криптографическая случайность - это не просто статистическая случайность, хотя и включает ее. Чтобы псевдослучайная последовательность была криптографически стойкой, она должна обладать еще одним свойством: 2. Последовательность должна быть непредсказуемой. Это означает, что никакими вычислительными средствами невозможно предсказать каждый последующий случайный бит, даже при абсолютном знании всех предшествовавших битов потока, а также алгоритма или устройства, генерирующего данную последовательность. Криптографически надежные псевдослучайные последовательности не должны сжиматься... Если только вы не знаете ключ. Как правило, ключ обычно используют для установки начального состояния генератора. Как и любой криптографический алгоритм, генераторы криптографически надежных псевдослучайных последовательностей служат объектами вскрытия. Генератор криптографически надежных псевдослучайных последовательностей может быть взломан, как и всякий криптографический алгоритм. Создание генераторов, устойчивых к вскрытию - важная задача криптографии.
ГЛАВА 2. Основные элементы протоколов 65 Истинно случайные последовательности Здесь мы вторгаемся в область философии. Существует ли реально такая категория, как случайность? Что такое случайная последовательность? Каким образом можно убедиться, что данная последовательность случайна? Можно ли утверждать, что последовательность «101110100» «более случайна», чем «101010101»? Вообще-то квантовая механика утверждает, что в реальным мире правит истинная случайность. Но как сохранить эту случайность в детерминированном мире компьютерных чипов и машин с конечным числом состояний? Но хватит философствовать! С практической точки зрения истинно случайный генератор последовательностей должен обладать третьим свойством: 3. Последовательности, создаваемые генератором, невозможно воспроизвести досто¬ верно. Если вы дважды запускаете генератор последовательностей с одинаковым входом (по крайней мере, насколько это в человеческих силах), вы получите две совершенно несвязанные случайные последовательности. Выход генератора, удовлетворяющего всем трем характеристикам, будет достаточно хорош для создания одноразовых блокнотов, генерации ключей и других криптографи¬ ческих приложений, требующих генерации истинно-случайных последовательностей. Трудность заключается в установлении самого факта случайности последовательности. Если я многократно зашифрую строку с помощью алгоритма ОЕ8 и заданного ключа, я получу превосходный результат, который выглядит совершенно случайным. Вы не сможете доказать, что он неслучаен, пока не арендуете у АНБ машинное время и программу-взломщик ЭЕ5.
ГЛАВА 3. Основные протоколы 3.1. Обмен ключами В криптографической практике при каждом сеансе связи передаваемые сообщения принято шифровать отдельным ключом. Этот ключ называют сеансовым, поскольку он используется только в одном сеансе связи. Как показано в разделе 8.5, именно ограничение продолжительности существования ключей текущим сеансом определяют их эффективность. Однако передача сеансового ключа участникам сеанса связи - сложная задача. Обмен ключами средствами симметричной криптографии В приведенном ниже протоколе предполагается, что пользователи сети Алиса и Боб совместно используют секретный ключ, получаемый от центра распределения ключей (Кеу 0151лЪи*юп Сеп1ег, КЛЭС) [1260]. В нашем протоколе роль центра КГ)С сыграет посредник Трент. Пользователи должны получить от него ключи до начала исполнения протокола. (В этом протоколе опущена важная задача передачи ключей. Предполагается, что ключи уже у пользователей, а Мэллори не имеет о них ни малейших сведений). 1) Алиса обращается к Тренту и запрашивает сеансовый ключ для связи с Бобом. 2) Трент генерирует случайный сеансовый ключ и зашифровывает две копии ключа. Одна копия предназначена Алисе, вторая - Бобу. Затем Трент отправляет обе копии Алисе. 3) Алиса расшифровывает свою копию сеансового ключа. 4) Алиса отсылает Бобу его копию сеансового ключа. 5) Боб расшифровывает свою копию сеансового ключа. 6) Алиса и Боб используют этот сеансовый ключ для секретной связи. В основе протокола лежит предположение об абсолютной надежности Трента, на роль которого лучше подходит заслуживающая доверие компьютерная программа, чем доверенное лицо. Если Мэллори подкупит Трента, будет скомпрометирована вся сеть. Мэллори получит все секретные ключи, совместно используемые Трентом и всеми его пользователями; он сможет прочитать весь предыдущий трафик перехваченных сообщений и все будущие сообщения. Для этого ему достаточно только подключаться к линиям связи и подслушивать зашифрованный трафик сообщений. Еще одна проблема такой системы заключается в том, что Трент, обязательно участвующий в каждом обмене ключами, является ее узким местом. Если с ним что- либо случится, вся система разрушится. Обмен ключами средствами криптографии с открытым ключом В разделе 2.5 мы рассмотрели основы смешанных криптосистем. Используя криптографию с открытым ключом, Алиса и Боб согласуют сеансовый ключ и шифруют
68 Прикладная криптография этим ключом данные. В некоторых практических реализациях подписанные открытые ключи Алисы и Боба хранятся в специальной базе данных. Это значительно упрощает протокол обмена ключами, поскольку Алиса может послать Бобу секретное сообщение, даже если совершенно незнакома с Бобом: 1) Алиса получает от центра КХ)С открытый ключ Боба. 2) Алиса генерирует случайный сеансовый ключ, шифрует его открытым ключом Боба и отправляет Бобу. 3) Боб расшифровывает сообщение Алисы своим закрытым ключом. 4) Используя один и тот же сеансовый ключ, Алиса и Боб шифруют свой сеанс связи. Атака «человек посередине» В то время как Ева может только пытаться взломать алгоритм с открытым ключом или выполнить вскрытие с использованием только шифртекста, возможности Мэллори значительно шире. Он может не только подслушивать сообщения Алисы и Боба, но и модифицировать, удалять и генерировать совершенно новые сообщения. Связываясь с Алисой, Мэллори может выдавать себя за Боба, а связываясь с Бобом - за Алису. Вот как Мэллори реализует свою атаку: 1) Алиса отправляет Бобу свой открытый ключ. Мэллори перехватывает его и отсылает Бобу собственный открытый ключ. 2) Боб отправляет Алисе свой открытый ключ. Мэллори перехватывает его и отсылает Алисе свой собственный открытый ключ. 3) Когда Алиса посылает сообщение Бобу, зашифрованное открытым ключом «Боба», Мэллори перехватывает его. Поскольку в действительности сообщение зашифровано его собственным открытым ключом, он расшифровывает его, снова шифрует открытым ключом Боба и переправляет Бобу. 4) Когда Боб отправляет Алисе сообщение, зашифрованное открытым ключом «Алисы», Мэллори перехватывает его. Поскольку в действительности сообщение зашифровано его собственным открытым ключом, он расшифровывает его, снова шифрует открытым ключом Алисы и переправляет Алисе. Даже если открытые ключи Алисы и Боба сохраняются в базе данных, эта атака будет работать. Мэллори может перехватить запрос Алисы к базе данных и подменить открытый ключ Боба собственным ключом. То же самое он может проделать и с Бобом, подменив открытый ключ Алисы. Или, еще лучше, Мэллори может тайно взломать базу данных и подменить открытые ключи Боба и Алисы своим ключом. Теперь ему остается подождать, когда Алиса и Боб откроют сеанс связи, а затем начать перехватывать и изменять их сообщения. Эта атака, названная «человек посередине», работает потому, что у Алисы и Боба нет возможности проверить, действительно ли они общаются именно друг с другом. Если вмешательство Мэллори не приводит к заметным задержкам в сети, ни тот, ни другой и не заподозрят, что кто-то, сидящий между ними, читает всю их секретную переписку.
ГЛАВА 3. Основные протоколы 69 Протокол взаимоблокировки Протокол взаимоблокировки (ШеНоск), предложенный Роном Ривестом (Яоп Иуез*) и Ади Шамиром (АсН БЬагшг) [1327], предоставляет неплохой шанс расстроить атаку «человека посередине». Вот как он работает: 1) Алиса отправляет Бобу свой открытый ключ. 2) Боб отправляет Алисе свой открытый ключ. 3) Алиса шифрует свое сообщение с помощью открытого ключа Боба. Половину зашифрованного сообщения она отсылает Бобу. 4) Боб шифрует свое сообщение с помощью открытого ключа Алисы. Половину зашифрованного сообщения он отсылает Алисе. 5) Алиса отправляет Бобу оставшуюся половину зашифрованного сообщения. 6) Боб складывает обе половины сообщения Алисы и расшифровывает его своим закрытым ключом. Затем Боб посылает Алисе оставшуюся половину своего шифрованного сообщения. 7) Алиса складывает обе половины сообщения Боба и расшифровывает его своим закрытым ключом. Основная идея заключается в том, что половина шифрованного сообщения бесполезна - расшифровать ее без второй половины невозможно. Следовательно, вплоть до этапа 6 Боб не сумеет прочитать любую часть сообщения Алисы, а Алиса до этапа 7 не может прочитать любую часть сообщения Боба. Чтобы сделать это, можно использовать несколько методов: ✓ Если используется блочный алгоритм шифрования, в каждой половине сообщения можно отправить только половину каждого блока (т.е. каждый второй бит). ✓ Расшифровка сообщения может зависеть от вектора инициализации (см. раздел 9.3), который можно переслать во второй половине сообщения. ✓ Первая половина сообщения может быть однонаправленной хэш-функцией шифрованного сообщения (см. раздел 2.4), а собственно шифрованное сообщение - второй половиной. Чтобы понять, каким образом этот протокол создаст Мэллори проблемы, рассмотрим его попытку разрушить протокол. Как и прежде, на этапах 1 и 2 Меллори может подменить открытые ключи Алисы и Боба своим ключом. Однако теперь, перехватив на этапе 3 половину сообщения Алисы, он не сумеет расшифровать его своим закрытым ключом и опять зашифровать открытым ключом Боба. Он должен выдумать совершенно новое сообщение и отправить половину его Бобу. На этапе 4, перехватив половину сообщения от Боба к Алисе, Мэллори столкнется с той же проблемой. Он не сумеет расшифровать его с помощью своего закрытого ключа и снова зашифровать открытым ключом Алисы. Ему придется придумать совершенно новое сообщение и отправить половину его Алисе. К тому времени, когда на этапах 5 и 6 он перехватит остальные половины подлинных сообщений, подменять созданные им новые сообщения будет слишком поздно. Данные, которыми по ходу сеанса обмениваются Алиса и Боб, должны быть совершенно иными.
70 Прикладная криптография Мэллори может попытаться отойти от такой схемы. Если он достаточно хорошо знаком с Алисой и Бобом, чтобы в течение сеанса подделываться под обе стороны, они могут так никогда и не заметить подмены. Однако это, несомненно, сложнее, чем просто сидеть между корреспондентами, перехватывая и читая их сообщения. Использование цифровых подписей при обмене ключами Использование цифровых подписей по ходу протокола обмена сеансовым ключом так же позволяет помешать атаке «человека посередине». Трент подписывает открытые ключи как Алисы, так и Боба. К подписанным ключам прилагаются подписанные сертификаты о праве собственности. Получив ключи, Алиса и Боб проверяют подлинность подписи Трента. Теперь они будут уверены в подлинности присланного ключа. Затем выполняется протокол обмена ключами. Мэллори сталкивается с серьезными проблемами. Он не может выдать себя за Алису или Боба, поскольку не знает их закрытых ключей. Он не может подменить их открытые ключи своим ключом, потому что Трент, подписывая его ключ, указал, что он принадлежит Мэллори. Ему остается только прослушивать шифрованный трафик, либо разорвать линию связи, чтобы помешать переговорам Алисы и Боба. В этом протоколе предусмотрено участие Трента, однако риск компрометации центра КИС меньше, чем в первом протоколе. Если Мэллори компрометирует Трента (взломает КЭС), он получит только закрытый ключ Трента. Этот ключ позволит ему только подписывать новые ключи; он не позволит ему дешифровать ни одного сеансового ключа или читать трафик сообщений. Для чтения трафика Мэллори придется выдавать себя за пользователя сети и обманывать честных пользователей, шифруя сообщения с помощью поддельного открытого ключа. Однако Мэллори может подойти к вскрытию следующим образом. Чтобы обмануть Алису и Боба, он может создать поддельные подписанные ключи с помощью закрытого ключа Трента. Затем он может либо подменить в базе данных настоящие ключи этими ключами, либо перехватывать запросы пользователей к базе данных и отправлять в ответ поддельные ключи. Это позволит ему выполнить атаку «человека посередине» и читать сообщения пользователей. Такая атака сработает, но следует помнить, что для этого Мэллори должен уметь перехватывать и изменять сообщения1. В ряде сетей это намного сложнее, чем просто сидеть, пассивно просматривая сообщения в сети по мере их прохождения. В радиовещательных каналах, скажем, радиосети, подменить одно сообщение другим почти невозможно, даже если забить всю сеть. В компьютерных сетях это проще и, кажется, упрощается с каждым днем. Для этого существуют такие методы, как 1Р- спуфинг (подмена 1Р-адреса - прим. перев.), взломы маршрутизаторов и т.п. Активное вскрытие не обязательно означает, что кто-то сидит в канализационном люке с устройством для перехвата сетевого трафика (так сказать, «датаскопом») в руках, да и заниматься этим могут не только Джеймсы Бонды. 1 Собственно, именно наличием таких способностей Мэллори и отличается от Евы. - Прим. ред.
ГЛАВА 3. Основные протоколы 71 Одновременная передача ключей и сообщений Алисе и Бобу вовсе не обязательно выполнять протокол обмена ключами еще до начала сеанса. В приведенном ниже протоколе Алиса посылает Бобу сообщение М без предварительного выполнения протокола обмена ключами: 1) Алиса генерирует случайный сеансовый ключ, К, и шифрует М, используя К. ЕК(М) 2) Алиса извлекает из базы данных открытый ключ Боба. 3) Алиса зашифровывает К, используя открытый ключ Боба. ЕВ(К) 4) Алиса отправляет Бобу как зашифрованное сообщение, так и зашифрованный ключ. ЕК(М), ЕВ(К) Кроме того, для дополнительной защиты от атаки «человека посередине» Алиса может подписать всю передачу. 5) Боб расшифровывает сеансовый ключ Алисы К своим закрытым ключом. 6) Боб расшифровывает сообщение Алисы с помощью сеансового ключа. Именно такая смешанная система криптографии с открытым ключом обычно применяется в системах связи. Ее можно дополнять цифровыми подписями, метками времени и другими протоколами защиты. Широковещательная рассылка ключей и сообщений Ничто не мешает Алисе отослать шифрованное сообщение нескольким получателям. В приведенном ниже примере Алиса отправляет шифрованное сообщение Бобу, Кэрол и Дэйву: 1) Алиса генерирует случайный сеансовый ключ К, и шифрует М с помощью этого ключа. ЕК{М) 2) Алиса извлекает открытые ключи Боба, Кэрол и Дэйва из базы данных. 3) Алиса зашифровывает К с помощью открытых ключей Боба, Кэрол и Дэйва. ЕВ(К), ЕС(К), Е0(К) 4) Используя широковещательную передачу, Алиса рассылает зашифрованное сообщение и все зашифрованные ключи всем, кто озаботится их принять. ЕК(М), ЕВ(К), ЕС(К), Е0(К) 5) Однако только Боб, Кэрол и Дэйв могут расшифровать ключ К своими закрытыми ключами. 6) Только Боб, Кэрол и Дэйв могут расшифровать сообщение Алисы, используя К.
72 Прикладная криптография Этот протокол можно реализовать в сетях с промежуточным сохранением данных. Центральный сервер может направить сообщение Алисы Бобу, Кэрол и Дэйву вместе с конкретными шифрованными ключами. Сервер не обязательно должен быть защищенным и доверенным, так как он не сможет дешифровать ни одного сообщения. 3.2. Аутентификация Предположим, Алиса подключается к какому-либо хосту (это может быть банковский автомат, служба банковских услуг по телефону или какой-то другой терминал). Каким образом хост узнает, что это и в самом деле Алиса? Как хост может установить, что это не Ева, выдающая себя за Алису? Как правило, эту проблему решают с помощью системы паролей. Алиса вводит свой пароль, и хост проверяет его корректность. Таким образом, и Алисе, и хосту известна некоторая секретная информация, которую хост запрашивает при каждой попытке Алисы войти в систему. Аутентификация с помощью однонаправленных функций Роджер Нидхем (Ко§ег ИеесШат) и Майк Гай (МПсе Сиу) были первыми, кто понял, что хосту вовсе не обязательно знать сами пароли. Совершенно достаточно, чтобы хост мог отличать достоверные пароли от недостоверных. Это нетрудно реализовать с помощью однонаправленных функций [1599, 526,1274, 1121]. В этом случае на главном компьютере сохраняются не сами пароли, а значения их однонаправленных функций. 1) Алиса посылает свой пароль хосту. 2) Хост рассчитывает значение однонаправленной функции для данного пароля. 3) Хост сравнивает результат расчета однонаправленной функции со значением, хранящимся в его памяти. Поскольку на хосте более не хранится таблица достоверных паролей всех пользователей, угроза взлома хоста и кражи таблицы паролей уменьшается. Список паролей, обработанных однонаправленной функцией, бесполезен, так как однонаправленную функцию невозможно инвертировать для восстановления паролей. Атака по словарю и привязка Тем не менее, файл паролей, зашифрованных с помощью однонаправленной функции, все еще уязвим. В свободное время Мэллори может составить список из миллиона слов, часто используемых в качестве паролей. Затем он обработает весь миллион слов однонаправленной функцией и сохранит результаты. Если длина каждого пароля составляет около 8 байт, размер итогового файла не превысит 8 Мбайт2, т.е. он поместится всего на нескольких дискетах. Далее Мэллори крадет зашифрованный файл паролей и сравнивает этот файл со своим приготовленным файлом зашифрованных вероятных паролей, отыскивая совпадения. 2 Это не совсем верно. Используемые обычно в таких случаях хэш-функции имеют выход 16-20 байт, и результирующий файл будет длиннее. Впрочем, суть от этого не меняется. - Прим. ред.
ГЛАВА 3. Основные протоколы 73 Такая атака по словарю может быть на удивление успешной (см. раздел 8.1). Чтобы затруднить ее, используют так называемую «привязку» (зак). Так называют случайную строку, которая конкатенируется с паролями перед их обработкой однонаправленной функцией. Затем в базе данных хоста сохраняются как значение привязки, так и результат расчета однонаправленной функции. А если число возможных значений привязки достаточно велико, возможность вскрытия с помощью словаря часто используемых паролей практически исключена. Действительно, Мэллори придется вычислять значения однонаправленной хэш-функции для каждого возможного значения привязки. Это простой пример использования вектора инициализации (см. раздел 9.3). Основная идея заключается в том, чтобы заставить Мэллори при каждой попытке взлома чужого пароля выполнять пробное шифрование всех паролей из его словаря, вместо того, чтобы за один раз обработать весь массив возможных паролей. Конечно, для этого нужны длинные привязки. Большинство систем 1ЛЧГ1Х используют для этих целей только 12 бит. Но даже при этом Дэниел Кляйн (Оаше1 К1ет) разработал программу угадывания паролей, которая часто за неделю вскрывала 40% паролей некоторых хостов [847,848] (см. раздел 8.1). Дэвид Фельдмайер (ЭауМ Ре1с1те1ег) и Филип Карн (РЫНр Кат) составили список из 732000 самых популярных паролей, конкатенированных с каждым из 4096 возможных значений привязки. Согласно их оценкам, с помощью этого списка можно взломать 30% паролей, хранящихся на любом хосте [561]. Привязка - не панацея; и увеличение числа битов привязки не решает всех проблем. Она предохраняет только от самых распространенных методов вскрытий файла паролей с использованием словаря, но не от направленной попытки вскрытия единственного пароля. Привязка защищает людей, использующих один и тот же пароль на различных хостах, однако нисколько не улучшает неудачно выбранный пароль. Программа 5КЕУ Для обеспечения безопасности с помощью однонаправленных функций можно воспользоваться программой удостоверения подлинности 8КЕУ. Принцип ее работы несложен. Чтобы установить систему аутентификации, Алиса задает случайное число, Я. Компьютер вычисляет значения /(Я), /(/(/?)), /(/(/(#))), и т.д., около сотни раз. Обозначим эти значения как хи х2, х3, ..., х10о. Далее Алиса выводит на печать список этих чисел и прячет его в карман для сохранности. Кроме того, компьютер сохраняет в незашифрованном виде значение Хни в регистрационной базе данных напротив имени Алисы. При первом входе в систему Алиса вводит свое имя и значение х10о. Компьютер вычисляет /(хш) и сравнивает его со значением х10ь и, если значения совпадают, подлинность Алисы подтверждается. Затем компьютер заменяет в базе данных х101 на х10о, а Алиса вычеркивает значение Хюо из своего списка. В дальнейшем при каждом входе в систему Алиса вводит последнее не вычеркнутое число из своего списка, например, /. Компьютер рассчитывает /(*, ) и сравнивает его со значением х/Ч1, хранящемся в базе данных. А так как каждый номер используется
74 Прикладная криптография только один раз, Ева не сумеет получить никакой полезной информации. Точно так же база данных бесполезна и взломщику. Разумеется, когда Алиса исчерпает числа из своего списка, ей придется заново инициализировать систему. Аутентификация средствами криптографии с открытым ключом У нашего первого протокола, даже с использованием привязки, есть серьезные проблемы с надежностью. Когда Алиса посылает свой пароль на хост, пароль может прочесть любой, у кого есть доступ к маршруту прохождения данных. Конечно, Алиса может получать доступ к хосту по запутанному каналу передачи информации, пролегающему через четырех промышленных конкурентов, три государства и два передовых университета. Однако Ева может находиться в любом из этих узлов, подслушивая передаваемую Алисой входную последовательность. Если же у Евы есть доступ к оперативной памяти главного компьютера, она может узнать пароль до его хэширования хостом. Эту проблему можно решить средствами криптографии с открытым ключом. Хост сохраняет файл с открытым ключом всех пользователей, а пользователи хранят свои закрытые ключи. Ниже описана упрощенная схема. При входе в систему выполняется следующий протокол: 1) Хост отправляет Алисе случайную строку. 2) Алиса шифрует строку с помощью своего закрытого ключа и отсылает ее обратно хосту вместе со своим именем. 3) Хост отыскивает в базе данных открытый ключ Алисы и расшифровывает сообщение этим открытым ключом. 4) Если расшифрованная строка совпадет с той, что хост отправил на этапе 1, хост открывает Алисе доступ к системе. Поскольку закрытым ключом Алисы не может воспользоваться никто посторонний, никто не сможет выдать себя за Алису. Что еще важнее, Алиса никогда не отправляет на хост свой закрытый ключ. Поэтому Ева, подслушивая обмен данными, не получит никаких сведений, которые позволили бы ей установить закрытый ключ Алисы и выдать себя за Алису. Закрытый ключ должен быть достаточно длинным и не символическим. Вероятно, этот ключ будет автоматически обрабатываться аппаратурой или программой связи пользователя. Это требует использования интеллектуального терминала, которому Алиса доверяет, однако держать в секрете местоположение хоста и канал связи необязательно. В этих обстоятельствах глупо шифровать случайные строки, причем не только посланные подозрительным автором - любые. В противном случае может быть использована схема вскрытия, которую мы рассмотрим в разделе 19.3. Надежные протоколы идентификации имеют следующую, несколько более сложную форму: 1) Алиса выполняет вычисления, основанные на некоторых случайных числах и своем закрытом ключе, и отправляет результат хосту. 2) Хост присылает Алисе другое случайное число.
ГЛАВА 3. Основные протоколы 75 3) Алиса выполняет некоторые вычисления со случайными числами (как сгенерированными ею, так и полученными от хоста) и своим закрытым ключом и отправляет результат хосту. 4) Хост выполняет некоторые вычисления с различными числами, полученными от Алисы, и ее открытым ключом, удостоверяясь, что ей известен ее закрытый ключ. 5) Если проверка завершается успешно, личность Алисы подтверждается. Если Алиса доверяет хосту не в большей мере, чем тот доверяет Алисе, она должна аналогичным образом потребовать, чтобы хост также подтвердил свою подлинность. Этап 1 может показаться излишним и запутанным, однако он необходим для защиты протокола от вскрытия. Математические основы различных протоколов и алгоритмов подтверждения подлинности подробно обсуждаются в разделах 21.1 и 21.2 (см. также [935]). Взаимная аутентификация по протоколу взаимоблокировки Предположим, двум пользователям, Алисе и Бобу, необходимо проверить подлинность друг друга. У каждого из них есть пароль, известный другому пользователю: РА у Алисы и Рв у Боба. Вот как выглядит протокол, который не будет работать: 1) Алиса и Боб обмениваются открытыми ключами. 2) Алиса шифрует РА открытым ключом Боба и отправляет зашифрованный пароль Бобу. 3) Боб шифрует Рв открытым ключом Алисы и посылает его ей. 4) Алиса расшифровывает полученный на этапе 3, и подтверждает корректность пароля. 5) Боб расшифровывает РА, полученный на этапе 2, и подтверждает корректность пароля. Мэллори может предпринять успешную атаку «человек посередине» (см. раздел 3.1): 1) Алиса и Боб обмениваются открытыми ключами. Мэллори перехватывает оба сообщения. Затем он подменяет ключи и отсылает обоим корреспондентам собственный открытый ключ. 2) Алиса шифрует РА открытым ключом «Боба» и отсылает пароль Бобу. Мэллори перехватывает сообщение, расшифровывает РА своим закрытым ключом, опять шифрует РА открытым ключом Боба и посылает пароль Бобу. 3) Боб шифрует Рв открытым ключом «Алисы» и отсылает пароль Алисе. Мэллори перехватывает сообщение, расшифровывает Рв своим закрытым ключом, опять шифрует Рв открытым ключом Алисы и посылает пароль Алисе. 4) Алиса расшифровывает Рв и подтверждает его корректность. 5) Боб расшифровывает РА и подтверждает его корректность. Алиса и Боб не заметят никаких отличий, однако теперь Мэллори знает и РА и Рв. В [435] Дональд Дэвис (ЭопаЫ ЭаУ1е8) и Вильям Прайс (\УИНат Рпсе) описывают
76 Прикладная криптография противодействие этому вскрытию с помощью протокола взаимоблокировки (см. раздел 3.1). В [110] Стив Белловин (8*еуе ВеИоут) и Майкл Мерритт (МюЬае1 МегпИ) обсуждают различные методы вскрытия этого протокола. Например, если Алиса - это пользователь, а Боб - хост, Мэллори может притвориться Бобом, завершить начальные этапы протокола с Алисой и разорвать соединение. Чтобы сделать это, имитируя помехи на линии или сбой сети, от Мэллори потребуется подлинный артистизм, однако в итоге он получит пароль Алисы. Затем он может соединиться с Бобом и завершить протокол, получив также и пароль Боба. Если допустить, что пароль пользователя важнее пароля хоста, этот протокол можно несколько модифицировать так, чтобы Боб передавал свой пароль раньше, чем Алиса. Как указано в [110], это усложняет вскрытие. Протоколы 5КЮ Для проекта ПАСЕ К1РЕ [1305] (см. раздел 25.7) были разработаны симметричные криптографические протоколы идентификации 8КГО2 и 8КЮЗ. Для обеспечения секретности в протоколах используется код МАС (см. раздел 2.4). Кроме того, предполагается, что Алиса и Боб пользуются общим секретным ключом К. Приведем протокол 8КГО2, позволяющий Бобу доказать свою подлинность Алисе: 1) Алиса выбирает случайное число, ЯА. (Спецификация Я1РЕ предписывает использование 64-битового числа). Это число Алиса отправляет Бобу. 2) Боб выбирает случайное число, Кв. (Спецификация КЛРЕ предписывает использование 64-битового числа). Боб отправляет Алисе следующее сообщение: НК(ЯА’ В& В)9 где Нк-это код МАС. (В спецификации К1РЕ предлагается функция К1РЕ-МАС, см. раздел 18.14), а В-это имя Боба. 3) Алиса рассчитывает Нк (КА, Кв, В) и сравнивает результат со значением, полученным от Боба. Если результаты совпадают, Алиса убеждается в том, что она связалась именно с Бобом. Протокол 8КЮЗ обеспечивает обоюдную аутентификацию Алисы и Боба. Этапы 1-3 совпадают с протоколом 8КГО2, но затем протокол выполняется следующим образом: 4) Алиса отправляет Бобу такое сообщение: Нц:(Вв, А), где А - это имя Алисы. 5) Боб рассчитывает Нк (Кв,, А) и сравнивает результат со значением, полученным от Алисы. Если результаты совпадают, Боб убеждается в том, что он связался именно с Алисой. Этот протокол уязвим для атаки «человек посередине». Вообще, «человек посередине» может разрушить любой протокол, в котором нет какой-либо уловки.
ГЛАВА 3. Основные протоколы 77 Подтверждение подлинности сообщений Каким образом Боб может проверить подлинность сообщения, принятого от Алисы? Если Алиса подписала свое сообщение, это нетрудно. Чтобы подтвердить кому угодно подлинность сообщения Алисы, совершенно достаточна ее цифровая подпись. Симметричные алгоритмы тоже обеспечивают некоторую аутентификацию. Когда Боб получает от Алисы сообщение, зашифрованное их общим ключом, он знает, что это сообщение поступило от Алисы, поскольку этот ключ не знает никто посторонний. Однако у Боба нет никакой возможности убедить в этом какую-либо третью сторону. Так, Боб не может показать это сообщение Тренту и убедить его, что сообщение отправлено Алисой. Трента можно убедить, что сообщение отправлено или Алисой, или Бобом (так как их секретный ключ никому больше не известен), но у него нет способа установить конкретного автора сообщения. Если сообщение не шифровано, Алиса может также использовать код МАС. Это тоже убедит Боба в подлинности сообщения, но возникнут те же проблемы, что и при симметричной криптографии. 3.3. Аутентификация и обмен ключами В этих протоколах для решения основной компьютерной проблемы - Алиса и Боб хотят обмениваться секретными сообщениями, находясь в разных концах сети - обмен ключами сочетается с удостоверением подлинности. Как могут Алиса и Боб обменяться секретным ключом, сохраняя при этом уверенность, что они обмениваются сообщениями друг с другом, а не с Мэллори? В большинстве протоколов предполагается, что Трент выделяет отдельный секретный ключ каждому пользователю, и перед началом исполнения протокола у пользователей уже есть все ключи. В табл. 3.1 приведены символы, используемые в этих протоколах. Таблица 3.1. Символы, используемые в протоколах проверки подлинности и обмена ключами Л Имя Алисы в Имя Боба Еа Шифрование общим ключом Трента и Алисы Ев Шифрование общим ключом Трента и Боба 1 Порядковый номер К Случайный сеансовый ключ 1 Время жизни та,тв Метки времени Еа, Ев Случайные числа (попсе), выбранные, соответственно, Алисой и Бобом
78 Прикладная криптография Протокол МЫе-Мои^Ь Рго§ Вероятно, протокол \У1с1е-МоиЙ1 Рго§ (в дословном переводе с англ. - «лягушка с широкой глоткой» - прим. перев.) [283,284], можно полагать простейшим симметричным протоколом распределения ключей, в котором используется доверенный сервер. Алиса и Боб используют секретный ключ совместно с Трентом. Эти ключи используются только для распределения ключей, а не для шифрования фактических сообщений. Вот как Алиса передает Бобу сеансовый ключ, используя всего два сообщения: 1) Алиса конкатенирует метку времени, имя Боба и случайный сеансовый ключ, затем шифрует все сообщение общим с Трентом ключом и отправляет его Тренту вместе со своим именем. А9Еа(ТА9В9К) 2) Трент расшифровывает сообщение Алисы. Затем он конкатенирует новую метку времени, имя Алисы и случайный сеансовый ключ и шифрует все сообщение общим с Бобом ключом. Трент посылает Бобу: Ев(Тв, А9 К) Важнейшее допущение этого протокола заключается в том, что Алиса достаточно компетентна для генерации надежных сеансовых ключей. Вспомните, что случайные числа генерировать нелегко, и задача может оказаться не по плечу Алисе. Протокол УаНа1от В этом протоколе Алиса и Боб используют общий с Трентом секретный ключ [283,284]. 1) Алиса конкатенирует свое имя со случайным числом и отсылает Бобу все сообщение. А9 Яа 2) Боб конкатенирует имя Алисы, ее случайное число, свое случайное число, шифрует созданное сообщение общим с Трентом ключом и отправляет его Тренту, добавив свое имя: В у Ев (А, ЯА, Яв) 3) Трент генерирует два сообщения. В первое входит имя Боба, случайный сеансовый ключ, случайные числа Боба и Алисы. Сообщение шифруется общим ключом Трента и Алисы. Во второе сообщение включается имя Алисы и случайный сеансовый ключ. Затем оно шифруется общим ключом Трента и Боба. Оба сообщения Трент посылает Алисе: Еа(В9К9КА9Кв)9Ев(А9К) 4) Алиса расшифровывает первое сообщение, извлекает К и убеждается, что ЯА совпадает со значением, отправленным ею на этапе 1. Затем Алиса посылает Бобу два сообщения. Первое ~ сообщение Трента, шифрованное ключом Боба. Второе - это ЯВ9 зашифрованное сеансовым ключом. ЕВ(А, К)9 ЕК(ЯВ)
ГЛАВА 3. Основные протоколы 79 5) Боб расшифровывает первое сообщение, извлекает К и убеждается, что Кв совпадает со значением, отправленным на этапе 2. В итоге, Алиса и Боб убеждаются, что связываются именно друг с другом, а не с третьей стороной. Нововведение заключается в том, что именно Боб первым обращается к Тренту, который только посылает одно сообщение Алисе. Протокол Нидхема-Шрёдера В этом протоколе, изобретенном Роджером Нидхемом (Ко§ег КеебЬаш) и Михаэлем Шрёдером (МюЬае1 БсЬгоебег) [1159], тоже используются симметричная криптография и Трент. 1) Алиса отправляет Тренту сообщение, включающее ее имя, имя Боба и случайное число: А, В, ЯА 2) Трент генерирует случайный сеансовый ключ. Затем он шифрует секретным ключом, общим для него и Боба, сообщение, включающее случайный сеансовый ключ и имя Алисы. Затем Трент шифрует секретным ключом, общим для него и Алисы, случайное число Алисы, имя Боба, ключ и шифрованное сообщение. Наконец, он посылает шифрованное сообщение Алисе: Еа(Яа> В> К, Ев (К, А)) 3) Алиса расшифровывает сообщение и извлекает К. Она убеждается, что КА совпадает со значением, отправленным Тренту на этапе 1. Затем Алиса отправляет Бобу сообщение, которое Трент зашифровал ключом Боба. Ев (К, А) 4) Боб расшифровывает сообщение и извлекает К. Затем Боб генерирует другое случайное число, Кв. Это число он шифрует ключом К и отправляет Алисе. В к (В в) 5) Алиса расшифровывает сообщение ключом К. Затем Алиса генерирует число Кв-1 и шифрует это число с помощью ключа К. Затем она посылает это сообщение обратно Бобу. ЕК(ЯВ~1) 6) Боб расшифровывает сообщение ключом К и удостоверяется, что оно равно Кв-1. Вся эта суета вокруг КА, Кв, и Вв-\ необходима для предотвращения атаки с повторной передачей (гер1ау). Так, Мэллори может записать старые сообщения и впоследствии использовать их для попыток разрушения протокола. Присутствие КА на этапе 2 убеждает Алису, что это - легитимное сообщение Трента, а не повторная передача ответа Трента из какого-то предыдущего исполнения протокола. Когда на этапе 5 Алиса успешно расшифровывает Кв и передаст Бобу Кв-1, Боб убедится, что сообщения Алисы- не повторная передача сообщений, использованных в одном из предыдущих сеансов связи по данному протоколу.
80 Прикладная криптография Основная «дыра» надежности этого протокола - ценность старых сеансовых ключей. Если Мэллори получит доступ к использованному когда-то К, он может успешно выполнить вскрытие [461]. Мэллори достаточно только записать сообщения Алисы Бобу на этапе 3. Тогда, располагая К, он может выдавать себя за Алису: 1) Мэллори отсылает Бобу следующее сообщение: ЕВ(К,А) 2) Боб извлекает К, генерирует Кв и отправляет Алисе: ЕМ 3) Мэллори перехватывает сообщение, расшифровывает его ключом К и отправляет Бобу: ЕК(ЯВ-1) 4) Боб убеждается, что сообщение «Алисы» состоит из Кв-1. Теперь Мэллори убедил Боба, что он и есть «Алиса». Этому вскрытию может противостоять более надежный протокол, использующий метки времени [461,456]. На этапе 2 к сообщению Трента добавляются метки времени, и все шифруется ключом Боба: Ев (К, А, 7). Метки времени требуют надежных и точных системных часов, а эта проблема нетривиальна сама по себе. Если общий ключ Трента и Алисы когда-либо будет скомпрометирован, последствия будут драматичны. Мэллори может использовать его для получения сеансовых ключей для переговоров с Бобом (и вообще с кем угодно). Хуже того, Мэллори может продолжать подобные действия даже после того, как Алиса заменит ключ [90]. Нидхем и Шрёдер пытались решить эти проблемы в модифицированной версии своего протокола [1160]. По существу, их новый протокол совпадает с протоколом Отвея-Рииса (01\уау-Яеез), опубликованном в том же выпуске того же журнала. Протокол Отвея-Рииса В этом протоколе тоже используется симметричная криптография [1224]. 1) Алиса генерирует сообщение, состоящее из порядкового номера, ее имени, имени Боба и случайного числа, и шифрует сообщение общим с Трентом ключом. Затем Алиса отправляет это сообщение Бобу, вместе с порядковым номером и именами Алисы и Боба: 19А,В,Еа(КА9!,А,В) 2) Боб генерирует сообщение, состоящее из нового случайного числа, порядкового номера, имени Алисы и имени Боба. Все сообщение шифруется общим ключом Алисы и Боба. Затем Боб отправляет это сообщение Тренту вместе зашифрованным сообщением Алисы, порядковым номером и именами Алисы и Боба: Л Л, В, Еа (КА9 /, А, В), Ев (Л* /, А, В)
ГЛАВА 3. Основные протоколы 81 3) Трент генерирует случайный сеансовый ключ. Затем он создает два сообщения. Одно сообщение, включающее случайное число Алисы и сеансовый ключ, шифруется общим ключом Трента и Алисы. Второе сообщение, состоящее из случайного числа Боба и сеансового ключа, шифруется общим ключом Трента и Боба. Трент посылает Бобу оба сообщения вместе с порядковым номером: 1, Еа(Яа,К), Ев(Кв,К) 4) Боб посылает Алисе сообщение, шифрованное ее ключом, вместе с порядковым номером: 1,ЕА(КА9К) 5) Алиса расшифровывает сообщение, восстанавливая свой ключ и случайное число, и убеждается, что по ходу протокола они не изменились. Если все случайные числа совпадают, а порядковый номер не изменился по ходу протокола, Алиса и Боб убеждаются в подлинности друг друга и получают секретный ключ, с помощью которого обмениваются сообщениями. Протокол КегЬегоз Протокол КегЬегоз представляет собой вариант протокола Нидхема-Шрёдера. Подробно этот протокол обсуждается в разделе 24.5. В базовом протоколе КегЬегоз 5, Алиса и Боб имеют общие ключи с Трентом. Для обмена сообщениями с Бобом, Алисе необходимо генерировать сеансовый ключ. 1) Алиса отправляет Тренту сообщение со своим именем и именем Боба: А, В 2) Трент генерирует сообщение, включающее метку времени, время жизни (I), случайный сеансовый ключ и имя Алисы. Это сообщение Трент шифрует ключом, общим для него и Боба. Затем Трент генерирует второе сообщение, включающее метку времени, время жизни, сеансовый ключ, имя Боба, и шифрует его с помощью ключа, общего для Трента и Алисы. Оба зашифрованных сообщения Трент посылает Алисе. Еа (Г, Ь, К, В\ Ев (Г, Ь, Ку А) 3) Алиса генерирует сообщение, состоящее из ее имени и метки времени, шифрует сообщение ключом К и посылает Бобу. Кроме того, Алиса отправляет Бобу сообщение от Трента, зашифрованное ключом Боба: ЕЛ(А, Т),Ев(Т,Ь9К,А) 4) Боб генерирует сообщение, состоящее из метки времени плюс единица, шифрует его ключом К и отсылает Алисе: ЕК(Т+1) Этот протокол работает, однако предполагает, что системные часы всех пользователей синхронизированы с часами Трента. На практике эффект достигается синхронизацией с надежным сервером времени с точностью до нескольких минут и обнаружением повторной передачи в течение достаточного интервала времени.
82 Прикладная криптография Протокол Ньюмана-Стабблбайна Из-за сбоев системы или саботажа синхронизация часов может быть расстроена. При десинхронизации часов большинство этих протоколов могут быть вскрыты [644]. Если часы отправителя опережают часы получателя, Мэллори может перехватить сообщение отправителя и передать его повторно, когда на узле получателя метка времени сравняется с текущей. Этот атака, называемая подавлением повторной передачи, может повлечь неприятные последствия. Ниже приведен протокол, впервые опубликованный в [820] и скорректированный в [1162], который пытается противодействовать атаке с подавлением повторной передачи. Этот превосходный протокол - усовершенствованный протокол УаЬа1от. 1) Алиса конкатенирует свое имя и случайное число, а затем посылает созданное сообщение Бобу. А, ЯА 2) Боб конкатенирует имя Алисы, ее случайное число и метку времени, шифрует созданное сообщение общим ключом Трента и Боба, и посылает его Тренту, добавив свое имя и новое случайное число: Е, Яв, ЕВ(А, ЯА, Тв) 3) Трент генерирует случайный сеансовый ключ, после чего создает два сообщения. В первое Трент включает имя Боба, случайное число Алисы, случайный сеансовый ключ, метку времени и шифрует все общим ключом Трента и Алисы. Во второе сообщение Трент включает имя Алисы, сеансовый ключ, метку времени и шифрует все ключом, общим для Трента и Боба. Оба сообщения Трент посылает Алисе вместе со случайным числом Боба: Еа(В9Яа,К,Тв\Ев(А,К,Тв),Яв 4) Алиса расшифровывает сообщение, зашифрованное ее ключом, извлекает К и убеждается, что ЯА совпадает со значением, посланным на этапе 1. Алиса отправляет Бобу два сообщения. Первое - сообщение Трента, шифрованное ключом Боба. Второе - это Яв, шифрованное с помощью сеансового ключа. ЕВ(А, К), ЕК(ЯВ) 5) Боб расшифровывает сообщение, зашифрованное его ключом, извлекает К и убеждается, что значения Тв и Яв те же, что и отправленные на этапе 2. Если оба случайных числа и метка времени совпадают, Алиса и Боб убеждаются в подлинности друг друга и совместно используют секретный ключ. А так как метка времени устанавливается только по часам Боба, и только Боб проверяет собственную метку времени, синхронизация часов не нужна. У этого протокола есть еще одно преимущество: в течение заранее заданного интервала времени Алиса может использовать сообщение, полученное от Трента, для последующей аутентификации Боба. Предположим, например, что Алиса и Боб выполнили приведенный выше протокол, затем провели и закрыли сеанс связи. После этого Алиса и Боб могут повторно проверить подлинность друг друга, не обращаясь к Тренту.
ГЛАВА 3. Основные протоколы 83 1) Алиса отправляет Бобу сообщение, которое ей прислал Трент на этапе 3, и новое случайное число. Ев(А,К,Тв),К'а 2) Боб отправляет Алисе другое новое случайное число, а также случайное число, присланное Алисой, шифруя их с помощью сеансового ключа. Вк(КА) 3) Алиса отправляет Бобу его новое случайное число, шифруя его сеансовым ключом. В к (К'в) Новые случайные числа предотвращают атаку с повторной передачей. Протокол ОА55 Протокол БА88 (0151пЪи1;е<1 АщЬепбсабоп Зесигйу 8етсе - распределенная служба безопасности и проверки подлинности), разработанные корпорацией 01§йа1 Еяшртеп!, тоже обеспечивает обоюдную аутентификацию и обмен ключами [604, 1519, 1518]. В протоколе ОА88, в отличие от описанных выше протоколов, используют как криптографию с открытым ключом, так и симметричную криптографию. Как у Алисы, так и у Боба есть свои закрытые ключи. Копии их открытых ключей подписаны Трентом. 1) Алиса отправляет Тренту сообщение, состоящее из имени Боба. В 2) Трент присылает Алисе открытый ключ Боба, Кв, подписанный закрытым ключом Трента, Т. В подписанное сообщение включено имя Боба. 5т(В,Кв) 3) Алиса проверяет подлинность подписи Трента, убеждаясь, что она действительно получила открытый ключ Боба. Затем она генерирует случайный сеансовый ключ К, и случайную пару ключей открытый/закрытый: КР. Она шифрует метку времени ключом К, а затем подписывает с помощью своего закрытого ключа КА время жизни ключа Ь, свое имя и ключ КР. Наконец, Алиса шифрует К открытым ключом Боба и подписывает его с помощью ключа КР. Все это она посылает Бобу. Ек(Т^5Кл(Ь,А,КР),8Кр(ЕКв(Ю) 4) Боб отправляет Тренту (это может быть другой Трент) сообщение, состоящее из имени Алисы. А 5) Трент присылает Бобу открытый ключ Алисы КА, подписанный закрытым ключом Трента. В подписанном сообщении содержится имя Алисы. 8т(4>Ка) 6) Боб проверяет подлинность подписи Трента, убеждаясь, что он действительно получил открытый ключ Алисы. Затем Боб проверяет подпись Алисы и извлекает КР. Далее Боб извлекает К с помощью своего закрытого ключа. Затем он расшифровывает ТА, убеждаясь, что получил текущее сообщение.
84 Прикладная криптография 7) При необходимости обоюдной идентификации, Боб шифрует новую метку времени ключом К и отправляет ее Алисе. ЕК(ТВ) 8) Алиса расшифровывает Тв ключом К, убеждаясь, что получила текущее сообщение. Протокол ОА88 лежит в основе протокола 8РХ, разработанного корпорацией БЕС. Дополнительные сведения можно найти в [34]. Протокол Деннинга-Сакко В этом протоколе тоже используется криптография с открытым ключом [461]. Трент поддерживает базу данных с открытым ключом всех пользователей. 1) Алиса отправляет Тренту сообщение, включающее ее и Боба имена. A, В 2) Трент отправляет Алисе открытый ключ Боба, Кв, подписанный с помощью закрытого ключа Трента, Т. Кроме того, Трент посылает Алисе ее собственный открытый ключ, КА, тоже подписанный закрытым ключом Трента. 8т{В,Кв\8т{А,Ка) 3) Алиса отправляет Бобу случайный сеансовый ключ и метку времени, подписав их с помощью своего закрытого ключа и зашифровав открытым ключом Боба, вместе с обоими подписанными ключами. Ев(5а{К,Та)), 8т{А, Ка), 8г(А, Ка) 4) Боб расшифровывает сообщение Алисы своим закрытым ключом и проверяет подпись Алисы с помощью открытого ключа Алисы. Кроме того, он проверяет достоверность метки времени. Теперь Алиса и Боб получили К и могут приступить к защищенному сеансу связи. Все это выглядит неплохо, но это не так. Завершив протокол с Алисой, Боб сможет выдавать себя за Алису [5]. Смотрите: 1) Боб отправляет Тренту свое имя и имя Кэрол. B, С 2) Трент присылает Бобу подписанные открытые ключи Боба и Кэрол. 5т(В9К^8т(С,Кс) 3) Боб отправляет Кэрол подписанный случайный сеансовый ключ и метку времени, ранее полученные от Алисы, зашифровав их открытым ключом Кэрол, вместе с сертификатами Алисы и Кэрол. Ес (8Л (К, ТА)\ 8Т(А, КА\ 3Т(С, Кс) 4) Кэрол расшифровывает сообщение Алисы своим закрытым ключом, и проверяет подпись Алисы, используя ее открытый ключ. Кроме того, она убеждается в достоверности метки времени.
ГЛАВА 3. Основные протоколы 85 Теперь Кэрол уверена, что она соединилась с Алисой; Боб успешно обманул ее. По сути дела, пока не закончится время жизни метки времени, Боб может надувать любого пользователя сети. Но это нетрудно поправить. Просто на этапе 3 вставьте в зашифрованное сообщение имена: Ев (ВА СА, В, К, ТА)\ 5Т(Л, КА\ 8Т(В, Кв) Тогда Боб не сможет повторно отправить Кэрол старое сообщение, поскольку оно явно предназначено для сеанса связи Алисы и Боба. Протокол Ву-Лама В этом протоколе тоже используется криптография с открытым ключом [1610, 1611]: 1) Алиса отправляет Тренту сообщение, состоящее из ее имени и имени Боба. Л, В 2) Трент отправляет Алисе открытый ключ Боба, Кв, подписанный с помощью закрытого ключа Трента, Т. Вт(Кв) 3) Алиса проверяет подлинность подписи Трента. Затем она отправляет Бобу сообщение, состоящее из ее имени и случайного числа, зашифрованного с помощью открытого ключа Боба. ЕКв(А,Ка) 4) Боб посылает Тренту свое имя, имя Алисы и случайное число Алисы, шифрованное открытым ключом Трента, Кт. Л, В, ЕКт (КА) 5) Трент отправляет Бобу открытый ключ Алисы, КА, подписанный закрытым ключом Трента. Кроме того, он отправляет Бобу случайное число Алисы, случайный сеансовый ключ, имена Алисы и Боба, подписав все это закрытым ключом Трента и зашифровав открытым ключом Боба. 8т(КА)9ЕКв(8т(КА9К9Л9В)) 6) Боб проверяет подлинность подписей Трента. Затем Боб посылает Алисе вторую часть сообщения Трента, полученную на этапе 5, а также новое случайное число, зашифровав все открытым ключом Алисы. ЕКа(5т(Яа,К,А9В),Кв) 7) Алиса проверяет подлинность подписи Трента и свое случайное число. Затем она отсылает Бобу второе случайное число, зашифрованное сеансовым ключом. ЕкШ 8) Боб расшифровывает свое случайное число и убеждается, что оно не изменилось.
86 Прикладная криптография Прочие протоколы В литературе описано множество иных протоколов. Протоколы Х.509 обсуждаются в разделе 24.9, КгурЬКш&М - в разделе 24.6, а протокол ЕКЕ (ЕпсгурЩб Кеу ЕхсЬап&е - обмен зашифрованными ключами) - в разделе 22.5. Отметим еще один новый протокол с открытым ключом - Кирегее [694]. Продолжается работа над протоколами, использующими маяки (Ьеасот) - доверенные узлы сети, которые непрерывно ведут широковещательную передачу достоверных случайных чисел (попсе$) [783]. Выводы Из приведенных выше протоколов, как уже вскрытых, так и еще не вскрытых, можно извлечь ряд важных выводов: ✓ Многие протоколы проваливаются потому, что их разработчики считали себя умнее других. Они оптимизировали протоколы, выбрасывая важные компоненты - имена, случайные числа и т.п. Исправления стали слишком явными [43, 44]. ✓ Оптимизация - это темный лес. Она значительно зависит от сделанных допущений. Например, использование достоверного точного времени позволяет реализовать многое, что невозможно в противном случае. ✓ Выбор протокола зависит от архитектуры средств связи. Что вам важнее: миними¬ зация размера сообщений или их число? Допускается ли взаимодействие всех участников протокола или только их части? Это те самые вопросы, которые привели к разработке формальных методов анализа протоколов. 3.4. Формальный анализ протоколов проверки подлинности и обмена ключами Проблема создания надежных сеансовых ключей для пары компьютеров (или людей) в компьютерных сетях настолько фундаментальна, что стала объектом многочисленных исследований. Некоторые работы заключались в создании протоколов, подобных тем, что обсуждались в разделах 3.1, 3.2 и 3.3. В свою очередь, это привело к появлению более серьезной и интересной задачи: формальному анализу протоколов проверки подлинности и обмена ключами. Иногда прорехи протоколов, которые кажутся вполне надежными, обнаруживались спустя много лет после их создания. Поэтому разработчикам понадобились средства, позволяющие немедленно проверять надежность протокола. И хотя большая часть этой работы применима ко всем криптографическим протоколам, особое внимание уделялось проверке подлинности и обмену ключами. Известны четыре основных подхода к анализу криптографических протоколов [1045]: ✓ Моделирование и проверка работы протокола с использованием языков специфи¬ каций и средств испытаний, не обязательно разработанных специально для анализа криптографических протоколов.
ГЛАВА 3. Основные протоколы 87 ✓ Разработка экспертных систем, позволяющих разработчику протокола создавать и исследовать различные сценарии. ✓ Выработка требований к семейству протоколов, используя формальную логику для анализа понятий «знание» и «доверие». ✓ Разработка формальных методов, основанных на записи свойств криптографических систем в алгебраической форме. Подробное обсуждение этих четырех подходов и связанных с ними исследований выходит за рамки книги. Хорошее введение в эту тему можно найти в [1047, 1355], я же собираюсь затронуть только основные принципы. В первом подходе корректность криптографического протокола пытаются доказать, интерпретируя его как обычную компьютерную программу. Ряд исследователей представляют протокол как машину с конечным числом состояний [1449, 1565], другие используют расширения методов исчисления предикатов первого порядка [822], а третьи для анализа протоколов используют языки спецификаций [1566]. Однако доказательство корректности отнюдь не доказывает надежность, а потому этот подход оказался несостоятельным при анализе многих некорректных протоколов. И хотя на первых порах подход завоевал широкое признание, с ростом популярности третьего подхода работы в этой области были переориентированы. Во втором подходе для определения возможности перехода протокола в нежелательное состояние (например, утечка ключа) используются экспертные системы. Хотя при поиске упущений этот подход дает лучшие результаты, он не гарантирует надежности и не предоставляет методов разработки вскрытий. Он пригоден для обнаружения в протоколе конкретного упущения, однако обнаружение с его помощью неизвестных прорех протокола маловероятно. Примеры такого подхода можно найти в [987,1521], а в [1092] обсуждается экспертная система 1тегто§а1ог (Следователь), разработанная Вооруженными силами США. Гораздо популярнее третий подход. Впервые он предложен Майклом Бэрроузом (МюЬае1 Вшто\уз), Мартином Абэди (Магйп АЪасН) и Роджером Нидхемом. Для логического анализа понятий «знание» и «доверие» ими разработана формальная логическая модель, получившая название БАН-логики [283, 284]. БАН-логика добилась широчайшего признания для анализа протоколов удостоверения подлинности. Она рассматривает подлинность как функцию от целостности и новизны, а для отслеживания состояний этих атрибутов на протяжении всего протокола использует логические правила. И хотя впоследствии были предложены различные варианты и расширения протокола, большинство разработчиков протоколов все еще обращаются к оригинальной работе. БАН-логика не предоставляет доказательств надежности, она может только обосновывать доказательства подлинности. Это простая прямолинейная логика, несложная в применении и полезная при поиске изъянов. Вот некоторые предложения БАН-логики: Алиса верит X. (Алиса действует исходя из истинности X). Алиса рассматривает X. (Кто-то прислал Алисе сообщение, содержащее X. Алиса может прочитать и повторно передать X, возможно после расшифрования). Алиса сказала X. (В какой-то момент времени Алиса отправила сообщение, в которое включила предложение X. Неизвестно, как давно было послано сообщение,
88 Прикладная криптография и было ли оно послано в период текущего прогона протокола. Известно, что Алиса верила X, когда говорила X). X ново. (X никогда не было послано в сообщении до текущего прогона протокола). И так далее. Кроме того, БАН-логика предлагает правила для рассуждений о доверии протоколу. Эти правила можно применять для доказательства чего-либо в протоколе или для ответа на какие-то вопросы к логическим предложениям о протоколе. Например, одно из правил - правило о значении сообщения: ЕСЛИ Алиса верит, что у Алисы и Боба общий секретный ключ, К, и Алиса видит X, зашифрованное ключом К, и Алиса не шифровала X с помощью К, ТО Алиса верит, что некогда Боб сказал X. Еще одно правило - правило подтверждения метки времени: ЕСЛИ Алиса верит, что X могло быть сказано только недавно, и что Боб некогда сказал X, ТО Алиса верит, что Боб верит X. БАН-анализ выполняется в четыре этапа: 1) Преобразуйте протокол в идеализированную форму с помощью описанных выше предложений. 2) Включите все допущения об исходном состоянии протокола. 3) Присоедините к предложениям логические формулы, получив суждения о состоянии системы после каждого предложения. 4) Чтобы раскрыть доверие участников к протоколу, примените к суждениям и предположениям логические постулаты. Создатели БАН-логики «рассматривают идеализированные протоколы как более ясные и законченные описания по сравнению с традиционными описаниями, найденными в литературе...» [283, 284]. Другие исследователи не столь оптимистичны и критикуют этот этап, поскольку идеализация может исказить реальный протокол [1161, 1612]. Последующие споры описаны в [221, 1557]. Некоторые из критиков пытаются показать, что БАН-логика может привести к явно неверным характеристикам протоколов [1161] (см. возражения в [285, 1509]), и что БАН-логика относится только к доверию, а не к стойкости [1509]. Подробнее этот вопрос рассматривается в [1488, 706, 1002]. Невзирая на критику, БАН-логика добилась известных успехов. Так, с ее помощью удалось обнаружить прорехи в некоторых протоколах, в том числе протоколе Нидхема- Шрёдера и ранней предварительной версии протокола СС1ТТ Х.509 [303]. БАН-логика выявила избыточность во многих протоколах, в том числе протоколах УаЬа1от, Нидхема-Шрёдера и КегЬегоз. Во многих публикациях БАН-логика используется для обоснования утверждений о надежности предлагаемых протоколов [40, 1162, 73]. Были опубликованы и другие логические системы, причем некоторые из них создавались как расширения БАН-логики [645, 586, 1556, 828], а другие опирались на БАН-логику для коррекции обнаруженных недостатков [1488, 1002]. Из них самой успешной оказалась система СИУ [645], хотя у нее есть ряд дефектов [40]. В [292,474] в БАН-логику с переменным успехом включались вероятностное доверие. В [156, 798,288] обсуждаются другие формальные логические схемы. Авторы [1514] попытались
ГЛАВА 3. Основные протоколы 89 объединить средства нескольких логических схем. Наконец, в [1124, 1511] предложены логические схемы, в которых доверие изменяется со временем. В четвертом подходе к анализу криптографических протоколов предлагается моделировать протокол как алгебраическую систему, выразить состояние знания участников о протоколе, а затем проанализировать реальность определенных состояний. Данный подход пока что не добился такого же признания, как формальная логика, однако положение дел меняется. Впервые этот подход использован Майклом Мерриттом (МюЬае1 МегпП) [1076], который показал, что для анализа криптографических протоколов можно использовать алгебраическую модель. В [473, 1508, 1530, 1531, 1532, 1510, 1612] рассмотрены некоторые другие подходы. Вероятно, самым успешным воплощением этих методов можно назвать Рго1осо1 Апа1угег (Анализатор протоколов), разработанный в исследовательской лаборатории ВМФ США [1512, 823, 1046, 1513]. Он использовался для обнаружения как новых, так и уже известных изъянов разнообразных протоколов [1044, 1045, 1047]. Анализатор Рго1осо1 Апа1ухег определяет следующие действия: 1. Принять (Боб, Алиса, А/, А). (Боб принимает сообщение А/, как пришедшее от Алисы в течение локального раунда Боба И). 2. Знать (Ева, М). (Ева знает М). 3. Послать (Алиса, Боб, (), М). (Алиса посылает М Бобу в ответ на запрос 0). 4. Запросить (Боб, Алиса, (7, А). (Боб посылает 0 Алисе в течение локального раунда Боба А/ С помощью этих действий можно задать требования. Например: ✓ Если в какой-то прошедший момент времени Боб принял от Алисы сообщение А/, Ева не знала М в какой-то прошедший момент времени. ✓ Если Боб в течение локального раунда А принял от Алисы сообщение М, значит, Алиса послала М Бобу как ответ на запрос Боба в локальном раунде А. Чтобы использовать этот анализатор протоколов, исследуемый протокол следует описать с помощью приведенных конструкций. Затем выполняются четыре фазы анализа: задание правил переходов честных участников, описание операций, возможных как для абсолютно честных, так и нечестных участников, описание основных элементов протокола и описание правил упрощения. Смысл всех этих действий заключается в том, чтобы показать, что данный протокол удовлетворяет необходимым требованиям. Использование средств, подобных Рго1осо1 Апа1угег, в конечном счете, может привести к созданию протокола, который можно обоснованно полагать надежным. Хотя формальные методы применяются в основном к существующим протоколам, наметилась тенденция использовать их и при разработке протоколов. В [711] в этом направлении уже сделан ряд предварительных шагов. В [1512, 222, 1513] это же пытались сделать с помощью Рго1осо1 Апа1угег. Применение к криптографическим протоколам формальных методов - идея пока что совершенно новая; трудно сказать, к чему приведет ее реализация. Сегодня же ее слабейшим звеном представляется процесс формализации протокола.
90 Прикладная криптография 3.5. Криптография с несколькими открытыми ключами В криптографии с открытым ключом используются два ключа. Сообщение, зашифрованное одним ключом, можно расшифровать другим ключом. Как правило, один ключ является закрытым, а другой - открытым. Допустим, например, один ключ находится у Алисы, а второй - у Боба. Тогда Алиса сможет зашифровать сообщение так, что расшифровать его будет способен только Боб; кроме того, только Боб может зашифровать сообщение так, что только Алиса сможет его прочитать. Колин Бойд (СоНп Воуб) расширил эту концепцию [217]. Представьте себе вариант криптографии с открытым ключом, в которой используются три ключа: КА, Кв и К0 распределенных в соответствии с табл. 3.2. Таблица 3.2. Распределение ключей в трехключевой системе Алиса КА Боб Кв Кэрол Кс Дэйв Ка и Кв Эллен Кв и Кс Фрэнк КсяКА Алиса может зашифровать сообщение ключом КА так, что Эллен может расшифровать его с помощью ключей Кв и Кс. То же самое, предварительно договорившись, могут сделать Боб и Кэрол. Боб может зашифровать сообщение так, что прочесть его сможет Фрэнк, а Кэрол может зашифровать сообщение так, что его сможет прочесть Дэйв. Дэйв может зашифровать сообщение ключом КА так, что его сможет прочесть Эллен, либо ключом Кв так, что его сможет прочитать Фрэнк, либо же обоими ключами, КА и Кв, так, чтобы сообщение могла прочесть Кэрол. Подобным образом, Эллен может зашифровать сообщение так, что прочитать его смогут Алиса, Дэйв или Фрэнк. В табл. 3.3 приведены все возможные комбинации, других просто не существует. Таблица 3.3. Шифрование сообщения в трехключевой системе Зашифровано ключами Должно быть расшифровано ключами КА Кв и Кс Кв КАяКс Кс КаяКв КАяКв Кс КАиКс Кв К в и Кс КА
ГЛАВА 3. Основные протоколы 91 Эту схему можно расширить на п ключей. Если для шифрования сообщения используется данное подмножество ключей, оставшиеся ключи используются для расшифровки сообщения. Широковещательная передача сообщения Вообразите, что в какой-то операции занято 100 ваших тайных агентов. Вы хотите иметь возможность посылать сообщения группам агентов, однако заранее состав групп неизвестен. В такой ситуации можно либо шифровать сообщение отдельно для каждого корреспондента, либо распределить ключи для всех возможных комбинаций агентов. Для реализации первого способа понадобится послать много сообщений, для второго - иметь много ключей. Криптография с несколькими ключами намного упрощает эту задачу. Мы рассмотрим случай с тремя агентами: Алисой, Бобом и Кэрол. Вы выдаёте Алисе ключи КА и Кв, Бобу - Кв и К0 Кэрол - Кс и КА. Теперь можно связываться с любым необходимым числом агентов. Так, если вы хотите, чтобы сообщение могла прочесть только Алиса, зашифруйте его ключом Кс. Алиса, получив сообщение, расшифровывает его, последовательно используя ключи КА и Кв. Если вам необходимо послать сообщение только Бобу, зашифруйте его ключом КА, а сообщение для Кэрол - ключом Кв. Если вы хотите, чтобы отправленное сообщение могли прочесть только Алиса и Боб, зашифруйте его ключами КАиКси т.д. Возможно, это не очень впечатляет, однако если в операции задействованы 100 агентов, преимущество весьма ощутимо. Действительно, использование индивидуальных сообщений означает использование общего ключа для каждого агента (всего 100 ключей) и каждого сообщения. Передача сообщения всем возможным подмножествам влечет использование 2100-2 различных ключа (здесь исключены случаи передачи сообщения всем агентам и никому из них). В то же время для реализации схемы, использующей криптографию с несколькими открытыми ключами, необходимо всего одно зашифрованное сообщение и 100 разных ключей. К недостатку схемы можно отнести необходимость широковещательного извещения для какого подмножества агентов предназначено данное сообщение. В противном случае каждому агенту придется перебирать все возможные комбинации ключей, отыскивая подходящей ключ. При этом один только список имен получателей может быть весьма значительным. Кроме того, каждому агенту придется хранить немалый объем собственно ключей, по крайней мере, при непосредственной реализации этой схемы. Существуют и другие методы широковещательной передачи сообщений; ряд из них позволяет избежать указанной проблемы. Эти методы обсуждаются в разделе 22.7. 3.6. Разбиение секрета Представьте, что вы изобрели новую, сверхтягучую, сверхсладкую сливочную тянучку или соус для гамбургеров, который еще безвкуснее, чем у ваших конкурентов. Поскольку все это очень важные вещи, вы хотите сохранить изобретение в тайне. Точный состав компонентов вы можете сообщить только самым надежным сотрудникам, но вдруг и кто- то из них дезертирует к конкурентам? Тайна раскроется, и через некоторое время гамбургеры с таким же безвкусным соусом будет делать весь квартал.
92 Прикладная криптография Предлагаемая схема защиты называется разбиением секрета (зесге( 8рИШп%). Есть методы разделения сообщения на части [551]. Каждая часть сама по себе ничего не значит, но сложите их - и появляется сообщение. Если сообщением служит рецепт, и каждый работник знает только его часть, ваши служащие смогут сделать соус, только собравшись вместе. Если кто-нибудь из работников уволится, захватив с собой свою часть рецепта, сама по себе раскрытая информация бесполезна. В простейшей схеме разделения сообщение разбивается между двумя людьми. Ниже приведен протокол, с помощью которого Трент разбивает сообщение между Алисой и Бобом: 1) Трент генерирует строку случайных битов, Я, той же длины, что и само сообщение М 2) Трент выполняет операцию ХОЯ над М и Я, генерируя Я. кем = 5 3) Трент передает Алисе К, а Бобу - Я. Чтобы реконструировать сообщение, Алисе и Бобу нужно выполнить единственное действие: 4) Алиса и Боб выполняют операцию ХОЯ над имеющимися у них частями, реконструируя сообщение. ЯеБ = М При надлежащем исполнении этот метод абсолютно надежен. По отдельности каждая часть абсолютно ничего не стоит. По существу, Трент шифрует сообщение с помощью одноразового блокнота и выдает шифртекст одному человеку, а блокнот - другому. Одноразовые блокноты, имеющие абсолютную надежность, обсуждались в разделе 1.5. Никакие вычислительные мощности не помогут восстановить сообщение только по одной его части. Эту схему нетрудно расширить на большее число людей. Для разбиения сообщения между более чем двумя людьми, выполните операцию ХОЯ над большим числом строк случайных битов. Так, в приведенном ниже примере Трент делит сообщение на четыре части: 1) Трент генерирует три строки случайных битов, Я, Б и Т той же длины, что и само сообщение М. 2) Трент выполняет операцию ХОЯ над Ми тремя созданными строками, генерируя V: м е яе зет = 11 3) Трент передает Алисе Я, Бобу - Я, Кэрол - Г, а Дэйву - II. Собравшись вместе, Алиса, Боб, Кэрол и Дэйв могут восстановить сообщение: 4) Алиса, Боб, Кэрол и Дэйв собираются вместе и вычисляют: яе Бетец = м Этот протокол относится к арбитражным протоколам. Трент располагает абсолютной властью и может делать все, что угодно. Так, он может раздать бессмыслицу и утверждать, что это настоящие части секретной информации, и никто не сможет его уличить, пока, собравшись вместе, участники протокола не попробуют
ГЛАВА 3. Основные протоколы 93 реконструировать секрет. Он может выдать части секрета Алисе, Бобу, Кэрол и Дэйву, а позже пристрелить Боба и заявить всем, что для восстановления секрета достаточно Алисы, Кэрол и Дэйва. Однако поскольку он же и поделил секрет, это не проблема. Все же у этого протокола есть проблема. Если утратить хотя бы одну часть сообщения, а Трента поблизости не окажется, пропадет и все сообщение. Если Кэрол, располагая частью рецепта соуса, перейдет работать к конкуренту, оставив свою часть секрета при себе, оставшиеся работники окажутся в затруднении. Конечно, Кэрол не сумеет восстановить рецепт, но это же не смогут сделать Алиса, Боб и Дэйв, даже собравшись вместе. Часть Кэрол так же критически важна для восстановления сообщения, как и любая другая. Все, что знают Алиса, Боб и Дэйв - это длина сообщения, и ничего более. Это истинно, так как у Я, 8, Г, V и М одинаковая длина, и, следовательно, каждому участнику известна длина А/. Припомните, ведь сообщение М делится не в прямом смысле слова, а подвергается операции ХОЯ со случайными величинами. 3.7. Разделение секрета Предположим, вы вводите программу запуска ракеты с ядерной боеголовкой и хотите быть уверенным, что никакой сумасшедший не сможет запустить ракету в одиночку. Также вам нужны гарантии, что и два сумасшедших не смогут вызвать пуск. Вы хотите, чтобы пуск произошел только в том случае, если с ума сойдут не менее трех из пяти офицеров. Эту проблему можно решить без труда. Изготовьте механическое устройство управления запуском. Раздайте ключи всем пяти офицерам и потребуйте, чтобы по меньше мере три офицера вставили свои ключи в соответствующие гнезда, прежде чем вы разрешите им разбомбить того, кого мы бомбили на этой неделе. (Если вы сильно озабочены, поставьте гнезда подальше друг от друга и потребуйте, чтобы офицеры вставляли ключи одновременно - ведь вы не хотите, чтобы офицер, укравший пару ключей, мог испепелить Толедо). Мы можем еще более затруднить пуск. Пусть запуск ракеты разрешен только генералу и паре полковников, но если генерал занят игрой в гольф, запустить ракету могут только пять полковников. Изготовьте устройство управления запуском с пятью ключами. Генералу выдайте три ключа, а полковникам - по одному. Тогда ракету смогут запустить генерал с двумя полковниками или пять полковников. Однако ни генерал в одиночку, ни четыре полковника, сделать это не смогут. Еще более сложная схема разделения (зкагт§), называемая пороговой схемой, позволяет математически решать как эти, так и более сложные задачи. В простейшем варианте этой схемы вы можете взять любое сообщение (секретный рецепт, коды запуска, длинный список и т.п.) и разделить его на п частей, называемых долями (зкас1ош), так, что по любым т долям можно восстановить сообщение. Более точно эта схема называется (ш, я)-пороговой схемой. Трент, используя (3, 4)-пороговую схему, может поделить свой секретный рецепт между Алисой, Бобом, Кэрол и Дэйвом так, что любая тройка из их числа может сложить свои доли и реконструировать сообщение. Скажем, если Кэрол в отпуске, восстановить сообщение смогут Алиса, Боб и Дэйв. Если Боба задавит автобус, Алиса, Кэрол и Дэйв смогут реконструировать сообщение. Однако, если Боба задавил автобус, а Кэрол - в отпуске, Алиса и Дэйв не смогут реконструировать сообщение самостоятельно.
94 Прикладная криптография В общем случае, пороговые схемы могут быть еще более гибкими. Допустимо смоделировать любые сценарии разделения, которые только можно вообразить. Например, можно разделить сообщение между служащими в вашем здании так, что для его восстановления, если нет никого с третьего этажа, нужны семь человек с первого этажа и пять со второго. В противном случае, достаточно представителя третьего этажа, три человека с первого этажа и два — со второго. Если же присутствует кто-то с четвертого этажа, для реконструкции сообщения достаточно этого человека и одного человека с третьего этажа или этого человека вместе с двумя представителями первого этажа и одного - со второго. Если же... Ну, вы ухватили идею. Эта идея была независимо выдвинута Ади Шамиром [1414] и Джорджем Блэкли (Оеог§е В1ак1еу) [182] и интенсивно исследовалась Гусом Симмонсом [1466]. В разделе 23.2 обсуждаются несколько различных алгоритмов. Разделение секрета с мошенниками Известно множество способов обмана пороговой схемы. Вот только несколько из них. Сценарий 1: Полковники Алиса, Боб и Кэрол сидят где-то глубоко под землей в изолированном бункере. Однажды они принимают кодированное сообщение от президента: «Запустить ракеты. Мы собираемся уничтожить любые следы исследований противника в области нейронных сетей». Алиса, Боб и Кэрол открывают свои доли, однако Кэрол вводит случайное число. Она настоящий пацифист, и не хочет запуска ракет. А поскольку Кэрол не ввела правильную долю, секретная информация, которую они хотели получить, оказалась некорректной. Ракеты остались в пусковых шахтах. И даже хуже - никто не знает причину. Даже объединившись, Алиса и Боб не сумеют доказать, что доля Кэрол некорректна. Сценарий 2: Полковники Алиса и Боб сидят в бункере вместе с Мэллори. Мэллори прикинулся полковником, так что все равны в чине. Вдруг от президента приходит то же самое сообщение, и все открывают свои доли. «Ха-ха-ха!», - заливается Мэллори. - «Я подделал это сообщение президента. Теперь я знаю обе ваших доли!» Он убегает вверх по лестнице и скрывается прежде, чем его успеют поймать. Сценарий 3: Полковники Алиса, Боб и Кэрол сидят в бункере вместе с Мэллори, который снова замаскировался. (Напомню, у Мэллори нет достоверной доли). От президента приходит то же самое сообщение, и все открывают свои доли. Мэллори открывает свою только после того, как услышал все остальные. А так как для реконструкции секрета трех долей достаточно, Меллори может быстро создать достоверную долю, и открыть ее. Итак, он не только узнал секрет, но никто и не догадывается, что он посторонний в этой системе. В разделе 23.2 обсуждаются некоторые протоколы, позволяющие найти управу на подобных мошенников. Разделение секрета без помощи Трента Допустим, банк хочет, чтобы его хранилище могли открыть трое из пяти служащих, вставив свои ключи. Это напоминает типичную (3,5)-пороговую схему, но с одной неувязкой. Секрет в целом не знает никто. В этой схеме нет Трента, которые разделяет секрет на пять частей. Известны протоколы, с помощью которых пять служащих могут
ГЛАВА 3. Основные протоколы 95 создать секрет и разделить его на части так, что никто из служащих не узнает секрета, пока они совместно не реконструируют секрет. В этой книге такие протоколы не обсуждаются. Все, кто заинтересуется этими вопросами, могут обратиться к [756]. Разделение секрета без раскрытия долей В описанных схемах есть одна проблема. Когда участники протокола собираются вместе, чтобы реконструировать секрет, они открывают свои доли. Это не всегда нужно. Если разделенный секрет - это закрытый ключ (например, к цифровой подписи), каждый из п участников может частично подписать документ. После п-ого частичного подписания документ становится подписанным разделенным закрытым ключом, но ни один из участников не может узнать содержание доли, используемой другим участником. Смысл в том, что вы можете использовать секрет повторно, и для работы с ним вам не нужен надежный посредник. В дальнейшем эту концепцию исследовали Иво Десмедт (Ууо БезшесЙ) и Йер Френкель (Уап Ргапке1) [483, 484]. Подтверждаемое разделение секрета Трент раздает Алисе, Бобу, Кэрол и Дэйву доли секрета, или, по крайней мере, утверждает, что делает это. Единственный метод убедиться, что их доли правильны - попытаться реконструировать секрет. Возможно, Трент послал Бобу фиктивную долю, или доля Боба случайно исказилась при передаче по линиям связи. Подтверждаемое разделение секрета позволяет каждому участнику лично проверить корректность его доли без реконструирования секрета [558, 1235]. Схемы разделения секрета с мерами предупреждения Секрет делится между 50 участниками так, чтобы любые 10 человек могли собраться и реконструировать секрет. Это нетрудно сделать. Но можно ли реализовать эту же схему разделения секрета, дополнив ее требованием, чтобы 20 человек могли собраться вместе и помешать остальным, независимо от их числа, восстановить секрет? Оказывается, можно [153]. Математика довольно сложна, но основная идея состоит в том, что каждый участник получает две доли: долю «да» и долю «нет». Когда наступает пора восстановить секрет, люди предоставляют одну из своих долей. Какую именно, зависит от того, желают ли они раскрытия секрета. Если предоставлено т или более долей «да» и менее чем п долей «нет», секрет можно реконструировать. В противном случае это невозможно. Конечно же, ничто не мешает достаточному числу сторонников «да» отойти в сторонку, уединившись от сторонников «нет» (разумеется, если они знают, кто есть кто) и реконструировать секрет. Однако в ситуации, когда все передают свои доли в центральный компьютер, эта схема сработает. Разделение секрета с вычеркиванием из списка Допустим, вы создали систему разделения секрета, но более не доверяете одному из владельцев доли секрета. Конечно, можно создать новую схему, исключив из нее этого человека, но время поджимает. Существуют и другие методы, чтобы справиться с этой
96 Прикладная криптография ситуацией. Они позволяют немедленно активизировать новую схему разделения секрета после того, как один из участников потерял доверие [1004]. 3.8. Криптографическая зашита баз данных База данных организации - это ценная собственность. С одной стороны, вам необходимо предоставить к ней доступ всем сотрудникам. Вы хотите, чтобы они связывались между собой, обменивались идеями и приглашали друг друга на сэндвичи с огурцами. С другой стороны, если допускать в базу данных кого угодно, информация обязательно попадет в руки надоедливых страховых агентов и назойливых поставщиков всякой дребедени по почте. Эту проблему может облегчить криптография. Можно зашифровать базу данных так, чтобы получить адрес одного сотрудника не составляло труда, но извлечь список адресов всех членов - трудно. В [550, 549] для этого предложена достаточно прямолинейная схема. Выберите какую- либо однонаправленную хэш-функцию и симметричный алгоритм шифрования. Каждая запись в базе данных состоит из двух полей. Индексным полем служит фамилия сотрудника, и именно это поле обрабатывается однонаправленной хэш-функцией. В поле данных хранятся полное имя и адрес сотрудника. Это поле зашифруйте ключом, в качестве которого используйте фамилию. Таким образом, если вы не знаете фамилии, вы не сумеете расшифровать поле данных. Поиск по конкретной фамилии прост. Сначала фамилия хэшируется, а затем в базе данных выполняется поиск по значению хэш-функции. Если поиск возвращает нескольких совпадений, значит, в базе данных есть информация о нескольких людях с такой фамилией. Наконец, расшифруйте полное имя и адрес для каждой совпадающей записи, используя в качестве ключа фамилию. Авторы [550] используют такую систему для защиты словаря, состоящего из 6000 испанских глаголов. Они указывают, что снижение быстродействия, обусловленное шифрованием, минимально. В несколько усложненной схеме [549] поиск выполняется по нескольким индексам, однако идея остается все той же. Основная проблема, сопряженная с этой системой, заключается в невозможности найти человека, если вы не знаете написания его фамилии. Можно испытать несколько вариантов, пока не найдется правильный, однако если вы ищете «Шнайер» не слишком практично сканировать всех людей, фамилии которых начинаются на «Ш». Такая защита несовершенна. Особо настойчивый страховой агент реконструирует базу данных сотрудников организации с помощью лобового вскрытия, перебирая все возможные фамилии. Если у него есть база данных телефонных абонентов, он может воспользоваться хранящимся в ней списком фамилий. Конечно, «перемалывание» телефонных номеров может занять несколько недель, однако вполне реально. Все же такая схема затруднит работу взломщика, а в мире торговых агентов слово «затруднит» означает «сделает слишком дорогой». В другом подходе [185] предлагается накапливать статистику по шифрованным данным.
Г Л А В А 4. Промежуточные протоколы 4.1. Службы меток времени Во многих случаях людям нужны доказательства существования документа в известный момент времени. Так бывает, например, при споре за авторские права или патенты. Сторона, предоставившая более раннюю копию спорной работы, выигрывает дело. Бумажные документы заверяются нотариусами и хранятся у адвокатов. Если же возникают споры, нотариус или адвокат свидетельствует, что документ в определенную дату уже существовал. В мире цифровых технологий все намного сложнее. Методы обнаружения в электронном документе признаков подделки неизвестны. Электронные документы можно копировать и изменять бесконечное число раз, не оставляя никаких следов. Изменить метку времени компьютерного файла не составляет труда. Никто не может, взглянув на электронный документ, заявить: «Да, этот документ создан до 4 ноября 1952 года». Об этой проблеме задумались Стюарт Хабер (81иаг1 НаЪег) и В. Скотт Сторнетта (XV. БсоИ: 81огпеиа) из корпорации ВеИсоге [682, 683, 92], когда им понадобился протокол цифровых меток времени с такими свойствами: ✓ Метка времени не должна зависеть от физического носителя, используемого для хранения. ✓ Метка времени должна изменяться при любом изменении документа. ✓ Невозможно поставить метку, у которой дата и время отлично от текущих значений. Постановка метки времени с помощью посредника В этом протоколе участвуют Трент, располагающий доверенной службой меток времени, а также Алиса, которой необходимо проставить в документе метку времени. 1) Алиса пересылает Тренту копию документа. 2) Трент записывает время и дату приема документа и оставляет у себя копию документа на хранение. Теперь, если кто-нибудь поставит под вопрос время создания документа, объявленное Алисой, ей достаточно только обратиться к Тренту. Он откроет свою копию документа и подтвердит, что он получил документ в указанную дату и время. В принципе, этот протокол работает, однако не лишен очевидных недостатков. Во- первых, он нарушает конфиденциальность. Действительно, Алиса должна предоставить Тренту копию документа. Перехватчик, прослушивающий канал связи, сможет прочитать документ. Конечно, Алиса может зашифровать передаваемый документ, но ведь он должен храниться в базе данных Трента. А насколько надежно защищена эта база данных? Во-вторых, такая база данных будет огромна. Кроме того, при передаче обширных документов неимоверно возрастают требования к пропускной способности канала связи.
98 Прикладная криптография Третья проблема - потенциальные ошибки. Ошибки передачи данных или авария на центральном компьютере Трента могут полностью лишить законной силы метку времени в документе Алисы. Наконец, в-четвертых, честного Трента, предоставляющего службу меток времени, может и не существовать. Возможно, Алиса обратится в фирму МеткиВремениОптом, Ш, принадлежащую Бобу. Тогда ничего не помешает Алисе и Бобу сговориться и поставить на документе любые метки времени, которые им нужны. Улучшенный протокол с посредником Большую часть указанных проблем можно без труда решить с помощью однонаправленных хэш-функций и цифровых подписей: 1) Алиса генерирует необратимый хэш документа. 2) Алиса передает Тренту хэш. 3) Трент проставляет дату и время получения хэша и подписывает результат цифровой подписью. 4) Трент отправляет Алисе подписанный хэш вместе с меткой времени. Это снимает все проблемы, кроме последней. Алисе больше нет нужды тревожиться о раскрытии содержимого документа - использование хэша совершенно надежно. Трент более не хранит копии (и даже хэш) документов, что снимает проблемы сохранения больших объемов информации и секретности (припомните, у однонаправленных хэш- функций ключей нет). Алиса может немедленно проверить подписанный хэш с проставленной меткой времени, принятый ею на этапе 4, и сразу же заметить любые ошибки передачи. Остается единственная проблема - установка Алисой по сговору с Трентом поддельной метки времени. Протокол связывания Один из методов решения указанной проблемы - связать метку времени Алисы с метками времени, которые Трент генерировал ранее. С большой вероятностью можно полагать, что эти метки генерировались не для Алисы, а для других людей. А так как заранее порядок получения Трентом запросов на постановку меток времени в документах неизвестен, метке времени Алисы должна предшествовать предыдущая метка. Кроме того, с меткой времени Алисы связан запрос, поступивший сразу после постановки метки времени Алисы. Иными словами, ее метка должна появиться раньше. Таким образом, метка времени Алисы вставляется между ними, примерно как в сандвиче. Обозначим А - имя Алисы, Нп - значение хэш-функции, на котором Алиса хочет поставить метку времени, и Тп_\ - предыдущую метку времени. Тогда этот протокол выглядит так: 1) Алиса отсылает Тренту Нп и А. 2) Трент отправляет обратно Алисе: Тп - $к(п> Нп,1п,,Нп_х,Тп_х,Ьп)
ГЛАВА 4. Промежуточные протоколы 99 где Ьп - хэшированная информация о следующей связи: А* = А?-1) 8К указывает, что сообщение подписано закрытым ключом Трента. Имя Алисы служит для ее идентификации как отправителя запроса. Параметр п указывает порядок поступления запросов, т.е. это п-ая метка времени, генерированная Трентом. Параметр обозначает время. Дополнительная информация включает сведения по идентификации, исходном хэше, времени и хэшированной метке предыдущего документа, обработанного Трентом. 3) После постановки Трентом метки времени на следующем документе, он отсылает Алисе опознавательный знак (идентификатор) отправителя этого документа: 1„ + \. Если кто-нибудь оспаривает метку времени Алисы, ей достаточно связаться с авторами предыдущего и последующего документов: /„_! и /„+ Если и их документы вызывают сомнения, можно обратиться к авторам документов /„_2 и /„ + 2 и т.д. Любой человек может показать, что в его документе метка времени поставлена после пометки одного документа и перед пометкой другого. Этот протокол весьма затрудняет сговор Алисы и Трента с целью создания документа, помеченного ложной датой и временем. Трент не может пометить документ Алисы будущей датой, поскольку не знает порядок поступления документов до «приема» запроса Алисы. И даже если он ухитрится фальсифицировать предыдущий документ, он должен еще знать, какой документ предшествовал предыдущему и т.д. Трент не может пометить документ и более ранней датой, поскольку метка времени должна быть проставлена перед меткой времени документа, помеченного немедленно после данного, но этот документ уже существует. Единственный путь сломать эту схему - ввести фиктивную цепочку документов до и после документа Алисы, причем достаточно длинную, чтобы истощить терпение человека, оспаривающего данную метку времени. Распределенный протокол Люди умирают, метки времени теряются. Между постановкой метки времени в документ и ее оспориванием может случиться многое, что сделает невозможным получение Алисой копии метки времени Эту проблему можно отчасти снять вставкой в метку Алисы меток времени предыдущих 10 человек и последующей отсылкой Алисе имен следующих 10 человек. Тогда у Алисы появится намного больше шансов найти людей, все еще хранящих свои метки времени. Развивая эту идею, приведенный ниже протокол позволяет обойтись и без Трента: 1) Используя в качестве входа Нп, Алиса генерирует строку случайных чисел с помощью криптографически надежного генератора случайных чисел. Уи Уг, Уз, •. • Уи 2) Алиса интерпретирует каждое из этих чисел как идентификатор 1 другого лица и отправляет каждому из этих людей Нп. 3) Каждый из этих людей добавляет к хэшу дату и время, подписывает результат и отсылает его Алисе. 4) Алиса собирает и сохраняет все подписи как метку времени.
100 Прикладная криптография Использование на этапе 1 криптографически надежного генератора случайных чисел не позволит Алисе преднамеренно выбрать продажных верификаторов I. И даже если Алиса, внося в документ незначительные изменения, попытается подобрать набор коррумпированных лиц с идентификаторами /, ее шансы ничтожны. Хэш-функция рандомизирует значения /, и с этим Алиса не сможет ничего поделать. Этот протокол работает, поскольку Алиса может фальсифицировать метку времени только по сговору со всеми к людьми. А так как на этапе 1 она выбрала их случайным образом, ее шансы невелики. Разумеется, чем выше уровень коррумпированности общества, тем больше должно быть число к. Кроме того, следует предусмотреть какой-то механизм работы с людьми, которые не могут быстро вернуть метку времени. Все, что нужно для постановки достоверной метки времени - это некоторое подмножество к. Детали зависят от реализации. Дальнейшее развитие Дальнейшие усовершенствования протоколов постановки меток времени описаны в [92]. Для увеличения числа меток времени, связанных с данной меткой, авторы предлагают использовать двоичные деревья. Тем самым уменьшается вероятность создания цепочки фальшивых меток времени. Кроме того, они рекомендуют публиковать список значений хэш-функций за прошедший день в каком-нибудь общедоступном источнике, скажем, в газете. Это напоминает рассылку значений хэш-функции случайным людям, используемую в распределенном протоколе. И действительно, начиная с 1992 года, метка времени появляется в каждом воскресном номере Нью-Йорк Таймс. Описанные протоколы постановки меток времени запатентованы [684, 685, 686]. Патенты и рынок принадлежат 8иге(у ТесЬпо1о§1ез (это дочерняя компания ВеИсоге), которая распространяет систему 01§ка1 ИоШгу 8у$1ет (Электронная нотариальная система), поддерживающую эти протоколы. В первой версии клиенты посылали запросы о «сертификации» на центральный координирующий сервер. Следуя технологии Меркла по использованию хэш-функций для построения деревьев [1066], сервер строит дерево значений хэш-функции, листья которого представляют собой все запросы, принятые в течение данной секунды, и отсылает каждому автору запроса список значений хэш- функции, соответствующий пути от его листа до корня дерева. Клиентное программное обеспечение сохраняет этот список локально и может выдать «сертификат» электронной нотариальной системы для любого файла, который был сертифицирован. Последовательность корней этих деревьев содержит «универсальную подтверждающую запись» (Лшуегза! УаНбайоп Яесогф, которая доступна в электронной форме на многих узлах-репозитариях, а также компакт-дисках. Кроме того, в клиентную часть включена функция «подтверждения», которая позволяет пользователю проверить, был ли файл заверен именно в его текущей форме. С этой целью из репозитария запрашивается корень соответствующего дерева, который сравнивается со значением хэш-функции, рассчитанным соответствующим образом для файла и его сертификата. За дальнейшей информацией связывайтесь с 8иге1у ТесЬпо1о§1е8, 1 Мат 51., СЬаШат, Ш, 07928; (201) 701- 0600; Рах: (201) 701-0601.
ГЛАВА 4. Промежуточные протоколы 101 4.2. Скрытый канал Предположим, Алису и Боба арестовали и посадили в тюрьму. Его - в мужскую тюрьму, а ее - в женскую. Уолтер, надзиратель, позволяет Алисе и Бобу обмениваться сообщениями, но запрещает их шифровать. Уолтер подозревает, что они замышляют побег, поэтому хочет читать все, что они пишут. Кроме того, Уолтер надеется обмануть Алису или Боба. Ему необходимо, чтобы один из них принял полученное им ложное сообщение за подлинное. Алиса и Боб мирятся с риском обмана, поскольку в противном случае они вообще не смогут общаться. Однако им необходимо согласовать свои планы. Чтобы сделать это, они должны обмануть надзирателя и найти метод передачи секретной информации. С этой целью они могут под носом Уолтера создать так называемый скрытый канал (зиЪИттаI скаппе1) - тайный канал связи, по которому передаются сообщения, сами по себе не содержащие секретной информации. Тогда Алиса и Боб, обмениваясь совершенно невинными подписанными сообщениями, могут передавать друг другу секретную информацию и дурачить Уолтера, несмотря на то, что он просматривает все сообщения. Простейший скрытый канал - число слов в предложении. Скажем, нечетное число слов в предложении соответствует «1», а четное число слов - «0». Например, пока вы читаете этот, внешне совершенно невинный абзац, я передал сообщение «111». Недостаток такого метода в том, что это - обычная стеганография (см. раздел 1.2), в которой не используется ключ, а надежность целиком зависит от секретности алгоритма. Густавус Симмонс (ОизШуиз Биптопз) выдвинул концепцию создания скрытого канала с помощью обычного алгоритма цифровой подписи [1458, 1473]. Так как скрытые сообщения спрятаны в том, что выглядит обычными цифровыми подписями, их можно отнести к одному из методов сбивания с толку. Уолтер видит, как туда и обратно передаются подписанные безобидные сообщения, однако действительно стоящая информация передается незаметно для него по скрытому каналу. По существу, алгоритм подписи, используемый в скрытом канале, ничем не отличается от обычного алгоритма создания подписи, по крайней мере, для Уолтера. Последний не только не может читать сообщения, передаваемые по скрытому каналу, но даже не подозревает о его существовании. Типичный протокол выглядит примерно так: 1) Алиса генерирует невинное сообщение, безразлично о чем. 2) Используя секретный ключ, общий с Бобом, Алиса подписывает невинное сообщение, пряча в подписи скрытое сообщение. (Это - ядро протокола скрытого канала, см. раздел 23.3). 3) Алиса отправляет с Уолтером подписанное сообщение Бобу. 4) Уолтер читает невинное сообщение и проверяет подпись. Не встретив ничего подозрительного, Уолтер передает Бобу подписанное сообщение. 5) Боб проверяет подлинность подписи под невинным сообщением, удостоверяясь, что сообщение поступило от Алисы. 6) Боб игнорирует невинное сообщение и, используя секретный ключ, общий с Алисой, извлекает скрытое сообщение.
102 Прикладная криптография Возможно ли мошенничество? Действительно, Уолтер не верит никому, и никто не верит Уолтеру. Он всегда может запретить передачу сообщений, но не может создать поддельное сообщение. Уолтер не может генерировать достоверную подпись, поскольку на этапе 5 Боб обнаружил бы подделку. А так как у него нет общего ключа, Уолтер не сможет читать скрытые сообщения. Что еще важнее, у него нет даже малейшего подозрения о существовании скрытых сообщений. Сообщения, подписанные с помощью алгоритма цифровой подписи, выглядят неотличимо от подписанных сообщений, у которых в подпись встроены скрытые сообщения. Более вероятно мошенничество Алисы или Боба. В некоторых реализациях скрытого канала секретная информация, необходимая Бобу для чтения скрытого сообщения, это та же самая информация, которая нужна Алисе для подписания невинного сообщения. В таком случае Боб может выдавать себя за Алису. Например, он может выдавать подписанные им сообщения за сообщения Алисы, и тут Алиса не сможет ничего поделать. Если она хочет обмениваться с Бобом скрытыми сообщениями, она должна верить, что он не злоупотребит ее закрытым ключом. В некоторых реализациях скрытого канала эта проблема устранена. Общий секретный ключ Алисы и Боба позволяет Алисе отправлять Бобу скрытые сообщения, однако закрытый ключ Алисы не передается, так что Боб не сможет подписывать сообщения ее подписью. Алисе не придется уповать, что Боб не злоупотребит ее закрытым ключом. Применения скрытого канала Самое наглядное применение скрытого канала - шпионская сеть. Если кто-то посылает и принимает подписанные сообщения, шпионы не догадаются о существовании скрытого канала в подписанных документах. Разумеется, вражеские шпионы могут делать то же самое. Алиса, используя скрытый канал, может смело подписывать документ даже под принуждением. Подписывая документ, она может встроить скрытое сообщение, например: «Работаю под принуждением». Другие приложения не столь броски. Компания может подписать документы и встроить в них скрытые сообщения для отслеживания времени действия документов. Правительство может «пометить» этим методом электронные деньги. В злонамеренной программе подписания документов внедрение в подпись скрытого сообщения может привести к утечке секретной информации - перспективы беспредельны. Подписи, свободные от скрытого канала Предположим, что Алиса и Боб пересылают друг другу подписанные сообщения, согласовывая стоимость контракта. Они пользуются протоколом цифровой подписи. Однако на самом деле эти переговоры служат ширмой шпионской деятельности Алисы и Боба. Используя алгоритм цифровой подписи, они не придают значения подписываемым сообщениям. Для пересылки же друг другу секретной информации Алиса и Боб используют скрытый канал в подписях под документами. Контрразведка, однако, не знает, что переговоры о контракте и используемые подписанные сообщения - только ширма. Эта проблема привела к разработке схемы подписей, свободных от скрытого канала (зиЪИтта1-/гее). Цифровые подписи, используемые в этих схемах, невозможно изменить с целью создания скрытого канала. Подробности см. в [480, 481].
ГЛАВА 4. Промежуточные протоколы 103 4.3. Неоспоримые цифровые подписи Обычные цифровые подписи допускают точное копирование. Иногда это свойство полезно, скажем, для распространения публичных извещений, но иногда влечет проблемы. Представьте себе личное или деловое письмо, подписанное цифровой подписью. Если существует множество копий этого документа, причем автора может установить кто угодно, это может стать источником беспокойства и даже шантажа. Лучшее решение - использование цифровой подписи, подлинность которой можно доказать, однако получатель не может показать ее третьей стороне без согласия человека, подписавшего сообщение. Допустим, компания программного обеспечения Алисы (АПсе Бойлуаге Сотрапу) распространяет продукт БЕ\\^ (Оо-Еуегу1;Ып§-\\^огс1- Редактор-Делает-Все-Сам). Чтобы гарантировать отсутствие вирусов, компания снабжает каждую копию цифровой подписью. Однако создателям необходимо, чтобы проверить подпись могли только легальные покупатели продукта, а не компьютерные пираты. И в то же время, если обнаруживаются легальные, но зараженные вирусом копии продукта ЭЕ\\^, у компании не должно быть возможности отрицать подлинность подписи Алисы. Для решения подобных задач можно использовать так называемые неоспоримые подписи (ипс1етаЫе) [343,327]. Неоспоримая цифровая подпись, подобно обычной цифровой подписи, зависит от подписанного документа и закрытого ключа лица, подписавшего документ. Однако в отличие от обычных- цифровых подписей, неоспоримую подпись невозможно проверить без разрешения подписавшего лица. Вообще-то, эти подписи вернее называть «непередаваемыми подписями». Однако название «неоспоримые подписи» подчеркивает то обстоятельство, что если Алиса будет вынуждена когда-либо подтвердить достоверность подписи, особенно в суде, она не сможет ложно отрицать свою подпись, если она подлинна. Математический аппарат достаточно сложен, однако основная идея проста: 1) Алиса предоставляет подпись Бобу. 2) Боб генерирует случайное число и отсылает его Алисе. 3) Алиса выполняет расчеты, используя это случайное число и свой закрытый ключ, и отправляет Бобу результат. Эти вычисления Алиса может выполнить только если подпись подлинная. 4) Боб подтверждает подлинность подписи. Кроме того, известен и расширенный протокол, позволяющий Алисе доказать, что она не подписывала документ, и не допускающий ложного отказа от подписи. Боб не может убедить Кэрол в подлинности подписи Алисы, поскольку Кэрол не знает, что Боб использовал случайные числа. Ему не составит труда выполнить на листе бумаги протокол в обратном порядке, безо всякой помощи Алисы, и послать результат Кэрол. Кэрол может удостовериться в подлинности подписи Алисы, только если сама исполнит этот протокол с Алисой. Возможно, сейчас это выглядит туманным, но все прояснится, когда в разделе 23.4 вы увидите соответствующие математические выкладки.
104 Прикладная криптография Описанное выше решение несовершенно. Как показали Иво Десмедт (Ууо ОезтесЙ) и Моти Юнг (Мой Уип§), в некоторых приложениях Боб может убедить Кэрол в подлинности подписи Алисы [489]. Например, пусть Боб приобрел легальную копию продукта ЭЕ\\^. В любое время Боб может проверить подлинность подписи под программным продуктом. Тогда Боб может продать Кэрол пиратскую копию ОЕ\\^, убедив ее, что он - коммивояжер компании Алисы. Если Кэрол попытается проверить достоверность подписи Боба, тот, в свою очередь, одновременно подтверждает подпись у Алисы. Когда Кэрол пришлет ему случайное число, он перешлет его Алисе. Ответ Алисы он отправит Кэрол. Кэрол убеждается, что она - легальный покупатель, хотя таковым не является. Такая атака - образец проблемы гроссмейстера; подробнее она обсуждается в разделе 5.2. Тем не менее, неоспоримые подписи нашли широкое применение. Во многих случаях Алисе нежелательно, чтобы достоверность ее подписи мог проверять кто угодно. Например, она не желает, чтобы подлинность ее личной корреспонденции могли проверять журналисты - ведь они могут выставить ее на всеобщее обозрение с доказательствами подлинности, вне всякого контекста, либо после того, как обстоятельства изменились. Кроме того, если Алиса подписывает какую-то информацию, которую продает, она не хочет чтобы кто-то, не заплатив за информацию, мог подтвердить ее достоверность. Путь, которым Алиса может защитить неприкосновенность личной жизни - контроль возможности проверки подписи. В одном из вариантов неоспоримых подписей связь между подписавшим и сообщением отделена от связи между подписавшим и подписью [910]. Согласно одной из схем, проверить, что подпись действительно была создана ее автором, может кто угодно, но для проверки достоверности подписи именно этого сообщения необходимо сотрудничество подписавшего. Близкое понятие к неоспоримым подписям - доверительные неоспоримые подписи (еп1гиз1ес1) [1229]. Предположим, Алиса работает в Тохтз, 1пс (Корпорация Ядовитых веществ), и передает в газету обличающие документы, используя протокол неоспоримой подписи. Алиса может подтвердить подлинность своей подписи только репортеру газеты и более никому. Однако председатель правления корпорации Боб подозревает, что источник документов - Алиса. Он требует, чтобы Алиса запустила специальный протокол отрицания (сИзауом?а1)\ чтобы очистить себя от подозрений, но Алиса отказывается. Тогда Боб приходит к выводу, что единственной причиной отказа Алисы является ее виновность, и увольняет ее. Доверительные неоспоримые подписи подобны обычным неоспоримым подписям за исключением протокола отрицания, который может запустить только Трент. Только Трент, но не Боб, может потребовать от Алисы выполнить этот протокол. Но если Трент представляет судебную систему, он должен использовать этот протокол исключительно для разрешения формального спора. 1 С помощью этого протокола Алиса может доказать, что она не подписывала сообщение. - Прим. ред.
ГЛАВА 4. Промежуточные протоколы 105 4.4. Подписи, подтверждаемые доверенным лицом Продавая ЭЕ>У, фирма АНсе Зойлуаге Сошрапу добилась бурного роста объема продаж - такого, что Алиса большую часть времени тратит на подтверждение неоспоримых подписей, а не на выпуск новых версий. Поэтому Алисе было бы удобнее назначить одного из сотрудников компании ответственным за подтверждение подписей. Подписывать документы с помощью неоспоримого протокола могут как Алиса, так и любой другой программист, однако подтверждением будет заниматься только Кэрол. С этой целью можно использовать подписи, подтверждаемые доверенным лицом ((1езщпа1ес1 согфгтег) [333,1213]. Алиса может подписать документ так, что в подлинности подписи лично Боб убедиться сможет, однако доказать подлинность подписи третьему липу Бобу нечем. В это же время Алиса назначает Кэрол на должность подтверждающего лица, который в дальнейшем и будет подтверждать подлинность подписи Алисы. Причем Алисе не нужно даже заранее просить согласия у Кэрол; просто она должна использовать открытый ключ Кэрол. И даже если Алиса уедет из города, уволится, получит повышение или умрет, Кэрол все еще сможет подтвердить подлинность подписи Алисы. Подписи, подтверждаемые доверенным лицом - это своеобразный компромисс между обычными цифровыми подписями и неоспоримыми подписями. Например, в некоторых случаях Алисе необходимо ограничить круг лиц, имеющих возможность подтверждать подлинность ее подписи. С другой стороны, наличие у Алисы полного контроля подрывает саму возможность использования подписей. Например, Алиса может отказаться сотрудничать как в подтверждении, так и в отрицании подписей, она может заявить об утрате ключей для подтверждения или отрицания, Алисы, в конце концов, просто может не оказаться на месте. Подписи, подтверждаемые доверенным лицом могут обеспечить Алисе защиту, предоставляемую неоспоримыми подписями, и вместе с тем не позволят ей злоупотреблять этой защитой. Этот метод может даже оказаться для Алисы предпочтительным: подписи, подтверждаемые доверенным лицом могут предотвратить мошенничества с подписью или защитить ее, если она, в самом деле, утратила свой ключ. Кроме того, такие подписи можно использовать, если Алиса в отпуске, в больнице или даже умерла. Эта идея нашла разнообразные применения. Например, Кэрол может работать нотариусом. Она может опубликовать свой открытый ключ в каком-нибудь каталоге, и люди могут доверить ей подтверждение своих подписей. Получая за это небольшую плату, Кэрол может жить без забот. Кэрол может быть учреждением по охране авторских прав, правительственным агентством или еще какой-либо организацией. Этот протокол позволяет отделить людей, подписывающих документы, от людей, помогающих подтвердить подлинность подписи. 4.5. Подписи по доверенности Использование подписей, подтверждаемых доверенным лицом, позволяет лицу, подписывающему документы, выделить специального человека для подтверждения их подлинности. Пусть, например, Алисе необходимо уехать в деловую поездку в такое место, где нет надежного доступа к компьютерной сети, скажем, в африканские
106 Прикладная криптография джунгли. Или она недееспособна после сложной хирургической операции. Она ожидает поступления по электронной почте важного сообщения, и проинструктировала своего секретаря Боба ответить надлежащим образом. Но как Алиса передаст Бобу полномочия подписания сообщения за нее, не передавая ему своего закрытого ключа? Эту проблему решает применение подписей по доверенности (ргоху) [1001]. Алиса передает Бобу полномочия, достаточные для того, чтобы подпись Боба имела следующие свойства: ✓ Различимость. Любой человек может различить подпись по доверенности и обычную подпись. ✓ Неподдельность. Достоверную подпись по доверенности может генерировать только сам основной подписывающий и назначенный им подписывающий по доверенности. ✓ Отличимость. Лицо, подписывающее документ по доверенности, не может сгенерировать достоверную подпись, которая воспринималась бы не как подпись по доверенности. ✓ Подтверждаемость. Подпись по доверенности подтверждает проверяющему лицу согласие основного подписывающего лица с подписанным сообщением. ✓ Идентифицируемость. Подпись по доверенности должна позволять основному подписывающему лицу установить личность, подписавшую по доверенности. ✓ Неоспоримость. Лицо, подписавшее документ по доверенности, не может дезавуировать собственную подпись. В некоторых случаях необходима более жесткая форма идентифицируемости, чтобы личность, подписавшую по доверенности, мог установить любой человек. В [1001] описаны схемы подписи по доверенности, основанные на различных схемах цифровой подписи. 4.6. Групповые подписи Эту проблему впервые описал Дэвид Чаум (ЭауИ СЬаиш) в [330]: Компания использует несколько компьютеров, подключенных к локальной сети. Каждый отдел компании располагает собственным принтером (тоже установ¬ ленным в сети), и только сотрудники отдела имеют право печатать на своем принтере. Следовательно, перед печатью принтер должен удостовериться, что данный сотрудник работает именно в этом отделе. В то же время, компания хочет обеспечить тайну; раскрыть имя пользователя должно быть невозможно. Однако если в конце дня кто-то обнаружит, что принтер использовался слишком часто, директор должен иметь возможность найти сотрудника, использующего принтер не по назначению, и послать ему счет. Эту проблему решают с помощью групповой подписи. Групповые подписи характеризуются следующими свойствами: ✓ Подписывать сообщения могут только члены группы. ✓ Получатель подписи может убедиться, что это - достоверная подпись группы. ^ Получатель подписи не может установить, какой именно член группы подписал документ.
ГЛАВА 4. Промежуточные протоколы 107 ✓ В случае спора подпись можно «открыть» для установления личности подписавшего. Групповые подписи с доверенным посредником В приведенном ниже протоколе участвует доверенный посредник: 1) Трент создает множество пар открытый ключ/закрытый ключ и выдает каждому члену группы отдельный список уникальных закрытых ключей. В списках нет одинаковых ключей. (Если группа насчитывает п членов и каждый член получает т пар ключей, общее число пар ключей составит п*т). 2) Трент публикует общий список всех открытых ключей для каждой группы в случайном порядке, сохраняя в тайне принадлежность ключей. 3) Когда член группы хочет подписать документ, он выбирает из собственного списка произвольный ключ. 4) Когда кому-то необходимо удостовериться, что подпись принадлежит члену данной группы, он находит в главном списке соответствующий открытый ключ и проверяет подлинность подписи. 5) При возникновении споров стороны обращаются к Тренту, который знает, какие ключи использует каждый член группы. Недостаток этого протокола заключается в том, что он требует участия доверенной стороны. Трент знает закрытые ключи всех членов группы и может подделывать все подписи. Кроме того, число ключей т должно быть достаточно велико, чтобы исключить попытки аналитическим путем установить владельцев ключей. Чаум в [330] привел ряд других протоколов, причем в некоторых из них Трент не может подделать подписи, а в других он и вовсе не нужен. Другой протокол [348] не только скрывает личность подписывающего, но также позволяет включать в группу новых членов. Еще один протокол можно найти в [1230]. 4.7. Подписи с обнаружением подделки Предположим, Ева - могущественный противник. Она владеет обширными компьютерными сетями и залами, заставленными компьютерами Сгау, вычислительные возможности которых на порядки превосходят те, что доступны Алисе. Все эти компьютеры работают днем и ночью, пытаясь взломать закрытый ключ Алисы. Наконец приходит успех. Теперь Ева может выдавать себя за Алису, подделывая как угодно ее подпись под документами. Подобное мошенничество предотвращают подписи с обнаружением подделки (/аИ- з1ор), предложенные Биржитом Пфицманном (Вир! РШапапп) и Майклом Уэйднером (МюЬае1 \Уа1с1пег) [1240]. Если после лобового вскрытия Ева подделает подпись Алисы, Алиса сумеет доказать подлог. Если же Алиса действительно подпишет документ, но затем объявит свою подпись поддельной, истину можно доказать в суде. Основная идея подписей с обнаружением подделки заключается в том, что каждому возможному открытому ключу соответствует множество возможных закрытых ключей. А каждый из этих закрытых ключей позволяет генерировать множество различных
108 Прикладная криптография цифровых подписей. Однако Алиса располагает только одним закрытым ключом, и она может рассчитать только одну подпись. Другие закрытые ключи ей неизвестны. Допустим, Ева собирается взломать закрытый ключ Алисы. (В роли Евы может выступать и сама Алиса, пытающаяся рассчитать для себя же второй закрытый ключ). Ева собирает подписанные сообщения и, используя массив своих компьютеров Сгау, пытается восстановить ключ Алисы. Но даже если она ухитрится восстановить подходящий закрытый ключ, число возможных закрытых ключей настолько велико, что, вероятнее всего, Ева получит совершенно иной, чем у Алисы, ключ. Вероятность раскрытия ключа, принадлежащего именно Алисе, пренебрежимо мала. Таким образом, когда Ева подделает подпись под документом, используя генерированный ею закрытый ключ, поддельная подпись будет отличаться от подлинной подписи Алисы. Чтобы доказать подлог, Алиса обращается в суд и предъявляет две разных подписи под одним и тем же сообщением и открытый ключ (соответствующий ее закрытому ключу и закрытому ключу, восстановленному Евой). Однако с другой стороны, если Алиса не сможет предъявить две разные подписи, значит, подлога не было и Алиса должна отвечать за свою подпись. Такая схема подписей может защитить от взлома Евой подписи Алисы с помощью чрезвычайно мощных вычислительных средств. Она ничего не может противопоставить более вероятной попытке Мэллори вломиться в дом Алисы и украсть ее закрытый ключ, или с попыткой Алисы подписать документ, а затем «случайно» утерять свой закрытый ключ. Чтобы отбиться от нападения Мэллори, Алиса может купить хорошую сторожевую собаку, но подобные рекомендации не относятся к предмету криптографии. Дополнительную информацию по теории и практике подписей с обнаружением подделки можно найти в [1239,1241, 730, 731]. 4.8. Вычисления с зашифрованными данными Предположим, Алисе нужно вычислить значение некоторой функции /(х) для некоторого конкретного значения х. К сожалению, ее компьютер сломался. Боб согласен вычислить для Алисы значение /(х), однако Алиса не хочет, чтобы Боб узнал ее х. Каким образом Алиса может позволить Бобу вычислить значение /(х) но так, чтобы не сообщать ему х? Это типичная проблема вычислений с зашифрованными данными, известная также как скрытие информации прорицателя. (В данном случае прорицатель - Боб, поскольку он отвечает на вопросы). Существуют методы, позволяющие решить эту задачу для некоторых функций; они рассматриваются в разделе 23.6. 4.9. Вручение битов на хранение Сейчас Алиса Ослепительная, выдающаяся фокусница, продемонстрирует мощь своего таинственного искусства. Она угадает, какую карту выберет Боб еще до того, как он ее выберет! Следите за тем, как Алиса записывает свое предсказание на клочке бумаги. Восхищайтесь, увидев, как Алиса вкладывает этот клочок бумаги в конверт и плотно запечатывает его. Трепещите, когда Алиса отдает запечатанный конверт случайному зрителю в аудитории. «Выбери карту, Боб, выбери любую карту!» Выбрав карту, Боб рассматривает ее, затем показывает Алисе и зрителям. Это бубновая семерка. Тогда
ГЛАВА 4. Промежуточные протоколы 109 Алиса берет конверт у зрителя и вскрывает его. Предсказание, записанное до того, как Боб выбрал карту, гласит «семерка бубен»! Раздаются аплодисменты. Для успеха этого фокуса Алиса должна подменить конверт в конце номера. Однако криптографические протоколы могут защитить от любой ловкости рук. Но какая от этого польза? Вот более прозаическая история. Биржевой маклер Алиса хочет убедить инвестора Боба в надежности ее метода выбора перспективных акций. Боб: «Подберите-ка мне пяток акций. Если на них удастся заработать, я передам вам свой бизнес». Алиса: «Если я подберу для вас пять акций, вы сможете вложить в них деньги, не заплатив мне. Может быть, мне показать вам пять акций, которые я выбрала в прошлом месяце?». Боб: «Откуда мне знать, что вы не подменили результаты выбора в прошлом месяце, узнав, какую выгоду они принесли. Если вы сообщите мне свой выбор сейчас, я могу не сомневаться, что вы не подмените результат. Поверьте мне, я не вложу деньги в эти акции, пока не оплачу ваши услуги». Алиса: «Лучше я покажу свою подборку акций за прошлый месяц. Я не подменяла их, можете мне поверить». Здесь Алиса хочет передать свое предсказание (т.е., бит или набор битов), однако не желает раскрывать свое предсказание до известного момента времени. С другой стороны, Бобу нужны гарантии, что Алиса не сможет передумать после того, как сделает предсказание. Вручение битов средствами симметричной криптографии В приведенном ниже протоколе вручения битов на хранение (ЬИ соттИтеЫ) используется симметричная криптография: 1) Боб генерирует строку случайных битов, К, и отправляет ее Алисе. Я 2) Алиса создает сообщение, состоящее из бита, который она хочет вручить, Ь (фактически это могут быть несколько битов), и случайную строку Боба. Затем она шифрует сообщение некоторым случайным ключом К и отсылает сообщение Бобу. ЕК(Я, Ь) Эта часть протокола описывает процедуру вручения. Боб не может расшифровать сообщение, а потому не знает, что за бит прислала Алиса. Когда для Алисы наступает время раскрыть свой бит, исполнение протокола продолжается: 3) Алиса отсылает Бобу ключ. 4) Боб расшифровывает сообщение и узнаёт бит. Для проверки достоверности бита Боб проверяет свою случайную строку.
110 Прикладная криптография Если бы не случайная строка Боба, Алиса могла бы втихомолку попытаться подобрать такой ключ к хранящемуся у Боба сообщению, который позволит при расшифровке получить бит, отличный от врученного бита. А так как бит может иметь только два значения, ее поиски наверняка приведут к успеху после нескольких попыток. Однако случайная строка Боба не позволит Алисе применить этот метод вскрытия. Алисе придется искать новый ключ, который не только инвертирует врученный бит, но и сохранит неприкосновенной случайную строку Боба. Если же используется достаточно надежный алгоритм шифрования, вероятность удачного поиска ничтожно мала и Алиса не сможет изменить свой бит после его вручения. Вручение битов с использованием однонаправленных функций В приведенном ниже протоколе используются однонаправленные функции: 1) Алиса генерирует две случайных строки битов, Ях и Я2. 2) Алиса генерирует сообщение, состоящее из ее случайных строк, и бита, который она хочет вручить (фактически это могут быть и несколько битов). №, *2, Ь) 3) Алиса рассчитывает значение однонаправленной функции для сообщения и отправляет Бобу результат, приложив одну из случайных строк. Н (Яи Я2, Ь), Я, Это сообщение, переданное Алисой, служит доказательством вручения. Использование на этапе 3 однонаправленной функции не позволит Бобу определить бит с помощью ее инвертирования. Когда для Алисы наступит время раскрыть свой бит, исполнение протокола продолжится: 4) Алиса отправляет Бобу исходное сообщение. (ЛьЛ2, Ь) 5) Боб рассчитывает значение однонаправленной функции для сообщения, и сравнивает его и Я\ со значением однонаправленной функции и случайной строкой, принятыми от Алисы на этапе 3. Их совпадение доказывает подлинность бита. Преимущество данного протокола перед предыдущим состоит в том, что от Боба не требуется отсылка каких-то сообщений. Алиса отправляет Бобу одно сообщение при вручении бита, и еще одно - при его раскрытии. Нет нужды и в случайной строке Боба, поскольку Алиса вручает ему сообщение, обработанное однонаправленной функцией. Алиса не сумеет изловчиться и подобрать иное сообщение (Яи Я2\ Ь% для которого Н(Яи Я2\ Ьг) = Н(Яи Яъ Ь). Отправляя Бобу Яи Алиса тем самым вручает значение Ь. Если Алиса не сохранит Я2 в тайне, Боб сможет рассчитать Н(Яи Я2, б') и Н(Яи Я2, Ь) и увидит, какое из них совпадает с сообщением, полученным от Алисы.
ГЛАВА 4. Промежуточные протоколы 111 Вручение битов с помощью генераторов псевдослучайных последовательностей Этот протокол еще проще[1137]: 1) Боб генерирует строку случайных битов и отправляет ее Алисе. Яв 2) Алиса инициализирует генератор псевдослучайных битов случайным числом. Затем для каждого бита в строке случайных битов Боба она отправляет Бобу: ✓ выход генератора, если бит Боба равен 0, либо ✓ значение ХОК выхода генератора и вручаемого ею бита, если бит Боба равен 1. Когда для Алисы наступит срок раскрыть свой бит, исполнение протокола продолжится: 3) Алиса отправляет Бобу свое случайное число для инициализации генератора. 4) Боб выполняет этап 2, чтобы убедиться в честности действий Алисы. Если длина строки случайных битов достаточно велика, а вывод генератора псевдослучайных битов непредсказуем, мошенничество Алисы практически исключено. Блобы Те строки, которые Алиса посылает Бобу для вручения бита, иногда называют блобами (ЫоЪ). Блоб представляет собой последовательность битов, хотя для протоколов это необязательно. Как выразился Жиль Брассар (ОШез Вгаззагб), «Они могли бы быть сделаны и из звездной пыли, если бы это приносило пользу» [236]. Блобы характеризуются следующими четырьмя свойствами: ✓ Алиса может вручать блобы. Вручая блоб, она вручает бит. */ Алиса может открыть любой блоб, врученный ею. Когда Алиса открывает блоб, она может убедить Боба, что вместе с блобом ему было вручено именно это значение бита. Таким образом, она не может выбрать произвольный блоб, например, содержащий ноль или единицу. ✓ Боб не может узнать, каким образом Алиса может открыть любой блоб, врученный ею. Это остается истинным даже после того, как Алиса откроет другие блобы. */ Блобы не несут никакой информации, кроме вручаемого Алисой бита. Сами по себе блобы, а также процесс, используемый Алисой для их вручения и открытия, не связаны не с чем, что Алиса хотела бы сохранить в тайне от Боба. 4.10. Подбрасывание монеты «по телефону» Вот история, рассказанная Джо Килианом (1ое КШап) [831]: Алиса и Боб решили сыграть в «орла и решку», но самой монеты у них не оказалось. Тогда Алиса предложила простой способ подбрасывать монету мысленно. «Сначала ты задумываешь случайный бит, затем я задумываю случайный бит. Затем мы выполним над ними операцию исключающее ИЛИ», - предложила она.
112 Прикладная криптография «А что, если один из нас будет задумывать не случайные биты?», - спросил Боб. «Это пустяки. Если хотя бы один бит действительно случаен, то и «исключающее ИЛИ» битов тоже будет истинно случайным», - ответила Алиса, и после минутного раздумья Боб согласился. Немного позже Алиса и Боб нашли на обочине дороги книгу по искусственному интеллекту. Алиса, законопослушная гражданка, сказала: «Кто-то из нас должен подобрать эту книгу и сдать в стол находок». Боб согласился, и чтобы решить, кто отнесет книгу, предложил использовать их протокол подбрасывания монетки. «Если последний бит будет равен 0, то книгу возьмешь ты, а если 1 - то я», - сказала Алиса. «Какой у тебя бит?» Боб ответил: «1». «Ну вот, и у меня такой же», - лукаво заметила Алиса. - «Я думаю, у тебя сегодня неудачный день». Не надо и говорить, что у протокола подбрасывания монеты есть серьезный недостаток. Хотя это и верно, что «исключающее ИЛИ» действительно случайного бита х, и любого независимо распределенного бита, у, в результате дает действительно случайный бит, протокол Алисы не гарантирует независимого распределения двух битов. На поверку нетрудно убедиться, что нет такого мысленного протокола, который позволит двум независимым сторонам честно подбрасывать монетку. Алиса и Боб оставались в затруднении, пока не получили письмо от незнакомого специалиста по криптографии. Содержимое письма было слишком заумным, чтобы его можно было применить на практике, однако конверт, в котором пришло письмо, оказался весьма полезным. Когда Алиса и Боб в очередной раз захотели сыграть в орла и решку, они изменили первоначальный протокол. Сначала бит задумывал Боб, однако вместо того, чтобы открывать его немедленно, он записывал свой бит на листке бумаги и прятал листок в конверт. Затем Алиса открывала свой бит. Наконец, Алиса и Боб доставали из конверта бит Боба и рассчитывали случайный бит. Вот этот бит действительно случаен, вне зависимости от честности игроков. Так Алиса и Боб создали работающий протокол... Голубая мечта криптографов исполнилась, и все они жили долго и счастливо. Эти конверты весьма напоминают блоб, предназначенный для вручения бита. Когда Мануэлю Блюму (Мапие1 В1шп) встретилась проблема честного подбрасывания монетки по модему [194], он решил ее с помощью протокола вручения бита: 1) Алиса вручает случайный бит, используя какую-либо схему вручения бита, описанную в разделе 4.9. 2) Боб пытается отгадать бит. 3) Алиса открывает свой бит Бобу. Если Боб угадал бит правильно, он выигрывает бросок. В общем случае нам необходим протокол с такими свойствами: ✓ Алиса должна «бросить монету» до того, как Боб попытается отгадать ее бит. ✓ У Алисы не должно быть возможности бросить монету повторно, когда она узнает бит Боба.
ГЛАВА 4. Промежуточные протоколы 113 ✓ У Боба не должно быть возможности узнать результат броска Алисы до того, как он выскажет свою догадку. Этого можно добиться несколькими способами. Подбрасывание монеты с помощью однонаправленных функций Если Алиса и Боб решат использовать однонаправленную функцию, протокол несложен: 1) Алиса выбирает случайное число х. Затем она рассчитывает у- Дх), где Дх) - однонаправленная функция. 2) Алиса отправляет у Бобу. 3) Боб пытается угадать, четно или нечетно х, и посылает свое предположение Алисе. 4) Если догадка Боба верна, результатом броска является «орел», если неверна - «решка». Алиса объявляет результат броска монеты и отправляет х Бобу. 5) Боб подтверждает, что у = Дх). Надежность этого протокола опирается на однонаправленную функцию. Если Алиса сумеет найти такие х и х', что х - четно, ах' - нечетно, но у - Дх) = Дх'), она сможет обманывать Боба в каждой игре. Кроме того, наименьший значащий бит Дх) не должен коррелировать с х. В противном случае Боб сможет, по крайней мере, изредка, обманывать Алису. Например, если при четном значении х значение функции Дх) в 75% случаев четное, у Боба есть преимущество. (Иногда наименьший значащий бит - не самый лучший выбор для практического использования, поскольку его вычисление может оказаться слишком простым). Подбрасывание монеты с помощью криптографии с открытым ключом Приведенный ниже протокол может работать как с криптографией с открытым ключом, так и с симметричной криптографией. Единственное требование - коммутативность алгоритма, то есть: ВК1(ЕК2(ЕК](М))) = ЕК2(М) Обычно этого свойства нет у симметричных алгоритмов, но справедливо для некоторых алгоритмов с открытым ключом (скажем, алгоритму Я8А с идентичными модулями). Вот этот протокол: 1) Как Алиса, так и Боб генерируют пары открытый ключ/закрытый ключ. 2) Алиса генерирует два сообщения, одно указывает на «орла», а второе - на «решку». В сообщения следует включить какую-нибудь уникальную случайную строку с тем, чтобы Алиса в дальнейшем могла подтвердить их подлинность. Алиса шифрует оба сообщения с помощью своего открытого ключа и отправляет их Бобу в случайном порядке. Еа(Мх\Еа(М2)
114 Прикладная криптография 3) Боб, которые не может прочитать ни одно из полученных сообщений, случайно выбирает одно из них. (Он может посчитать их с помощью «На золотом крыльце сидели...», попытаться взломать протокол с помощью компьютера или покрутить бутылку - не имеет значения). Далее Боб шифрует выбранное сообщение своим открытым ключом и отсылает его Алисе. Ев (Ел (М)) где М-М\ или М2 4) Алиса, которая не может прочитать сообщение, расшифрует его своим закрытым ключом и отправляет его Бобу. БА (Ев (Еа (АО)) = Ев (М,), если М=Ми или Ев (М2), если М-М2. 5) Боб расшифровывает сообщение с помощью своего закрытого ключа, открывая результат подбрасывания монетки, и отсылает Алисе расшифрованное сообщение. Е)в (Ев (МО) = М\ или Бв (Ев (М2)) = М2 6) Алиса узнает результат броска монеты и проверяет корректность случайной строки. 7) Алиса и Боб открывают свои пары ключей с тем, чтобы каждая сторона убедилась в честности партнера. Этот протокол относится к числу самодостаточных протоколов. Любой участник может немедленно обнаружить мошенничество партнера, причем ни для участия в протоколе, ни в качестве арбитра после завершения протокола, третьей стороны не требуется. Чтобы понять, как это работает, давайте попробуем словчить. Если Алиса хочет обманным путем бросить монету орлом вверх, она может повлиять на результат тремя методами. Во-первых, на этапе 2 Алиса может зашифровать на «орла» оба сообщения. Однако Боб обнаружит это на этапе 7, когда Алиса раскроет свои ключи. Во-вторых, на этапе 4 Алиса может использовать для расшифрования сообщения какой- нибудь иной ключ. Тогда на этапе 5, при расшифровании этого сообщения Бобом, это приведет к бессмыслице, что немедленно обнаружит Боб. В-третьих, на этапе 6 Алиса может ложно объявить сообщение недостоверным. На этапе 7 Боб тоже обнаружит это, когда Алиса не сумеет доказать недостоверность сообщения. Разумеется, на любом этапе Алиса может отказаться от участия в протоколе, когда ее мошенничество станет для Боба очевидным. Если мошеннически выиграть захочет Боб, его положение отнюдь не лучше. На этапе 3 Боб может неправильно зашифровать сообщение, однако Алиса обнаружит обман, увидев финальное сообщение на этапе 6. Боб может некорректно выполнить этап 5, однако это тоже приведет к бессмыслице, которая вскроется на этапе 6. Он может заявить, что некорректно выполнил этап 5 из-за какого-то обмана со стороны Алисы, однако эта и форма мошенничества вскроется на этапе 7. Наконец, на этапе 5 Боб может отправить Алисе сообщение о «решке», независимо от расшифрованного сообщения, однако на этапе 6 Алиса сможет немедленно проверить достоверность сообщения. Бросок монеты в колодец Нетрудно заметить, что во всех приведенных протоколах Алиса и Боб узнают результат броска монеты не одновременно. В любом протоколе есть момент, когда один из
ГЛАВА 4. Промежуточные протоколы 115 участников (Алиса в первых двух протоколах, а Боб в последнем) знает результат броска, но не может его изменить. Однако этот участник может оттянуть раскрытие результата партнеру. Это известно как бросок монеты в колодец. Представьте себе колодец. Алиса стоит возле колодца, а Боб - немного в стороне. Боб бросает монетку, и она падает в колодец. Теперь Алиса может заглянуть в колодец и узнать результат, однако не может спуститься вниз и изменить его. С другой стороны, Боб не сможет увидеть результат, пока Алиса не разрешит ему подойти и заглянуть в колодец. Генерация ключей подбрасыванием монеты В практических приложениях этот протокол используется для генерации сеансовых ключей. Протоколы броска монеты позволяют Алисе и Бобу генерировать случайный сеансовый ключ, причем такой, что ни один из них не сможет как-то влиять на его значение. А если Алиса и Боб еще и шифруют свои сообщения, сеансовый ключ не сумеет перехватить злоумышленник. 4.11. Мысленный покер Используя протокол, аналогичный протоколу броска монеты с помощью открытых ключей, Алиса и Боб могут играть друг с другом в покер по электронной почте. В этом случае Алиса вместо генерации и шифрования двух сообщений - одного для «орла», а другого - для «решки», генерирует2 52 сообщения Мь М2, М52 - по числу карт в колоде. Боб произвольно отбирает пять из них, шифрует с помощью своего открытого ключа и отправляет Алисе. Алиса расшифровывает сообщения и опять отсылает их Бобу, который расшифровывает их, чтобы узнать, какие карты ему достались. Затем Боб еще раз выбирает пять произвольных сообщений и посылает их Алисе в исходном виде. Алиса расшифровывает сообщения и определяет, какие карты достались ей. Эта же процедура применяется для сдачи дополнительных карт во время игры. По окончании игры Алиса и Боб открывают свои карты и пары ключей, чтобы каждый мог убедиться в обоюдной честности. Мысленный покер с тремя игроками Покер намного интереснее с большим числом игроков. Основной протокол мысленного покера нетрудно расширить на трех и более игроков. И в этом случае криптографический алгоритм должен быть коммутативным. 1) Алиса, Боб и Кэрол генерируют пары ключей открытый/закрытый. 2) Алиса генерирует 52 сообщения - по одному на каждую карту в колоде. В сообщения необходимо включать какую-нибудь уникальную случайную строку с тем, чтобы на последующих этапах протокола Алиса могла проверять их подлинность. Алиса зашифровывает все сообщения с помощью своего открытого ключа и отсылает их Бобу. ЕА(Мп) 2 И зашифровывает своим открытым ключом. - Прим. ред.
116 Прикладная криптография 3) Боб, который не может прочесть ни одного сообщения, произвольно отбирает пять из них. Затем Боб шифрует их своим открытым ключом и отправляет Алисе. Ев(Еа(М„)) 4) Боб отсылает остальные 47 сообщений Кэрол. ЕА(Мп) 5) Кэрол, которая не может прочесть ни одного сообщения, произвольно отбирает пять из них. Затем Кэрол шифрует их своим открытым ключом и отправляет Алисе. Ес(Еа(М„)) 6) Алиса, которая не может прочесть ни одного из полученных сообщений, расшифровывает их своим закрытым ключом и отсылает обратно Бобу или Кэрол (в зависимости от того, от кого она их получила). ВА(Ев(ЕА(Мп))) = Ев(Мп) Ва(Ес(Еа(М„))) = Ес(М„) 7) Боб и Кэрол расшифровывают сообщения с помощью своих ключей, чтобы узнать, какие карты им достались. Вв(Ев(Мп)) = М„ Вс(Ес(Мп)) = М„ 8) Кэрол произвольно отбирает пять из 42 оставшихся сообщений и отправляет их Алисе. Еа(М„) 9) Алиса расшифровывает сообщения, чтобы узнать свои карты. ВА(ЕА(Мп)) = Мп 10) По окончании игры Алиса, Боб и Кэрол открывают свои карты и пары ключей с тем, чтобы каждый мог убедиться в отсутствии мошенничества. Таким же образом сдаются дополнительные карты. Если Бобу или Кэрол нужна карта, любой из них берет шифрованную колоду и повторяет протокол с Алисой. Если же карта нужна Алисе, то тот, у кого в данный момент находится шифрованная колода, отсылает ей произвольно выбранную карту. В идеальном случае этап 10 необязателен. По завершению протокола свои карты должны открыть только те игроки, которые не спасовали. Так как этап 10 включен в протокол только для защиты от мошенничества, в него возможно вносить какие-либо улучшения. В покере нас интересует только одно - не смошенничал ли победитель. Остальные игроки, до тех пор, пока они проигрывают, могут врать сколько угодно. (В действи¬ тельности, это не совсем так. Кто-нибудь, проигрывая, может собирать данные о манере игры в покер остальных игроков). Итак, рассмотрим случаи выигрыша различных участников игры.
ГЛАВА 4. Промежуточные протоколы 117 Если выигрывает Алиса, она раскрывает свои карты и ключи. Для проверки правильности действий Алисы на этапе 2 Боб может использовать закрытый ключ Алисы. Таким образом, он проверит, что каждое из 52 сообщений соответствует отдельной карте. Кэрол, шифруя карты открытым ключом Алисы, может убедиться, что Алиса правильно назвала выпавшие ей карты. Для этого Кэрол проверяет, что названные карты соответствуют шифрованным сообщениям, которые она отправила Алисе на этапе 8. Если побеждает Боб или Кэрол, выигравший открывает свои карты и ключи. Тогда Алиса, проверив свои случайные строки, сможет убедиться в правильности карт. Кроме того, Алиса может удостовериться, что были сданы именно эти карты. С этой целью она шифрует их открытым ключом победителя и проверяет их совпадение с шифрованными сообщениями, принятыми на этапах 3 или 5. Этот протокол не защищает от сговора игроков-жуликов. Например, Алиса и другой игрок могут сговориться и безнаказанно надувать третьего игрока. Поэтому каждый раз, когда игроки открывают свои карты, важно проверять все ключи и случайные строки. И если вы сидите за виртуальным столом с двумя игроками, которые никогда не открывают свои карты, причем один из них сдавал карты (в предыдущем протоколе - Алиса), бросайте игру. Теоретически все это выглядит красиво, однако реализовать протокол на компьютере весьма сложно. В реализации на компьютере Браге, поддерживающей игру с тремя игроками на трех различных рабочих станциях, одно только тасование колоды занимает восемь часов, не говоря уже о самой игре [513]. Атаки на протоколы мысленного покера Как показали криптографы, при использовании в протоколах мысленного покера алгоритма Я8А наблюдается небольшая утечка информации [453, 573]. В частности, если двоичное представление карт является квадратичным вычетом (см. раздел 11.3), то зашифрованные карты также будут квадратичным вычетом. Это свойство можно использовать для крапления некоторых карт, скажем, всех тузов. Конечно, это не слишком много сообщает о сданных картах, но в такой игре как покер даже капелька информации даст преимущество в долгой игре. В протоколе мысленного покера для двух игроков, предложенном Шафи Голдвассером (БЬай ОоЫшаззег) и Сильвио Микали (8Иую МюаП) [624] эта проблема решена, однако из-за сложности этот протокол представляет в основном теоретический интерес. Обобщенный протокол покера для п игроков, в котором устранена проблема утечки информации, предложен в [389]. В [573, 1634, 389] приведены результаты других исследований протоколов покера. В [390] описан усложненный протокол, позволяющий игрокам не раскрывать своих карт. В [370] Дон Копперсмит (Эоп СоррегзшйЬ) описывает два метода жульничества в мысленном покере, использующем алгоритм Я8А. Анонимное распределение ключей Маловероятно, что кто-нибудь станет использовать этот протокол для игры в покер по модему, однако Чарльз Пфлегер (СЬаг1ез РЯее^ег) приводит ситуацию, в которой протокол этого типа может оказаться полезным [1244].
118 Прикладная криптография Обсудим проблему распределения ключей. Если допустить, что люди не могут самостоятельно генерировать свои ключи (скажем, ключи должны иметь определенную форму, либо подписываться какой-нибудь организацией и т.п.), для генерации и распределения ключей необходимо использовать центр КОС (Кеу 01з1пЪи1юп Сеп1ег - центр распределения ключей). Проблема заключается в том, что мы должны найти такой метод распределения ключей, что никто, в том числе сервер, не сможет узнать, кому какой ключ достался. Эту проблему решает следующий протокол: 1) Алиса генерирует пару ключей открытый/закрытый. В этом протоколе оба ключа Алиса сохраняет в тайне. 2) Центр КОС генерирует непрерывный поток ключей. 3) Центр КОС последовательно, один за другим, шифрует ключи, используя свой открытый ключ. 4) Центр КОС один за другим передает по сети зашифрованные ключи. 5) Алиса выбирает произвольный ключ. 6) Алиса шифрует выбранный ключ, используя свой открытый ключ. 7) Алиса выжидает некоторое время, достаточное, чтобы сервер не мог установить, какой ключ она выбрала, и отсылает центру КОС дважды зашифрованный ключ. 8) Центр КОС расшифровывает дважды шифрованный ключ своим закрытым ключом, восстанавливая ключ, зашифрованный с помощью открытого ключа Алисы. 9) Сервер посылает обратно Алисе зашифрованный ключ. 10) Алиса расшифровывает ключ своим закрытым ключом. Ева, которая находится где-то посередине протокола, не имеет представления о ключе, выбранном Алисой. Она видит только непрерывный поток ключей, создаваемых КОС на этапе 4. Когда на этапе 7 Алиса отправляет ключ серверу, он шифруется открытым ключом Алисы, который на время исполнения этого протокола хранится в секрете. Однако у Евы нет никакой возможности связать это сообщение с потоком ключей. Когда на этапе 9 сервер возвращает ключ Алисе, он тоже зашифрован открытым ключом Алисы. И только когда Алиса расшифровывает его на этапе 10, ключ становится известным. Если в этом протоколе вы используете алгоритм КВА, утечка информации происходит со скоростью один бит на сообщение опять-таки по вине квадратичных вычетов. Поэтому если вы решите воспользоваться этим методом распределения ключей, убедитесь, что утечка не приведет к серьезным последствиям. Кроме того, поток ключей, создаваемых центром КОС, должен быть достаточно плотным, чтобы воспрепятствовать лобовому вскрытию. И, разумеется, если Алиса не может доверять центру КОС, пользоваться его ключами не стоит. Жульнический центр КОС может предусмотрительно записывать все генерируемые им ключи. Тогда он сумеет найти среди них ключ, выбранный Алисой. Кроме того, в этом протоколе предполагается, что Алиса будет честна. Если используется алгоритм КВА, Алиса может предпринять ряд действий, позволяющих
ГЛАВА 4. Промежуточные протоколы 119 получить больше информации, чем ей удалось бы при использовании другого алгоритма шифрования. В приведенном сценарии эта проблема несущественна, однако в некоторых обстоятельствах она может стать важной. 4.12. Однонаправленные сумматоры Допустим, Алиса - член тайного «Союза Меча и Орала». Иногда Алиса встречается с другими членами в полутемных ресторанах и шепотом сообщает секреты направо и налево. Однако загвоздка в том, что в ресторанах настолько темно, что Алиса с трудом опознаёт сидящего напротив члена организации. «Союз Меча и Орала» может решить эту проблему несколькими методами. Например, каждый член может носить с собой список организации. Это влечет за собой две дополнительные проблемы. Во-первых, теперь каждому придется носить с собой крупную базу данных, и, во-вторых, ее придется бдительно охранять. Другой метод - использование электронных идентификационных карточек, подготовленных доверенным секретарем. Этот подход имеет дополнительное преимущество - теперь принадлежность к союзу смогут проверять и посторонние (всякие там скидки в местном гастрономе и т.п.). Однако метод требует надежного секретаря, но никто в «Союзе Меча и Орала» таким доверием не пользуется. Эту проблему можно решить с помощью нового средства - однонаправленного сумматора (опе-м?ау асситиШог) [116]. Это нечто вроде однонаправленных хэш- функций, только коммутативных. Проще говоря, они позволяют хэшировать базы данных членов организации в любом порядке, но всегда получать одно и то же значение. Более того, в хэш можно добавлять новых членов и получать новый хэш, опять же не зависящий от порядка. Итак, вот как поступает Алиса. Она выполняет вычисления, используя множество всех имен членов союза, кроме своего собственного. Затем Алиса сохраняет полученное значение вместе со своим именем. То же самое делает Боб и остальные члены союза. Теперь, когда Алиса и Боб встречаются в полутемном ресторане, они просто обмениваются друг с другом вычисленными значениями и именами. Алиса убеждается, что результат, получаемый при добавлении имени Боба к значению, имеющемуся у Алисы, совпадает с результатом, получаемым при добавлении имени Алисы к значению Боба. Боб поступает точно так же. Теперь оба уверены, что собеседник - тоже член организации, но в то же время никто не сумеет установить личности других членов союза. Более того, рассчитанные значения для каждого члена можно передавать людям, не входящим в союз. Это позволит Алисе подтверждать свое членство посторонним (возможно, чтобы воспользоваться скидкой в буфете местной контрразведки), не показывая им весь список членов. Чтобы включить в список новых членов, достаточно просто послать по кругу новые имена. К сожалению, удалить члена можно только одним методом: разослать всем членам новый список, в соответствии с которым они пересчитают свои значения. Однако «Союзу Меча и Орала» придется делать это только при отставке кого-то из членов; умершие члены могут оставаться в списке. (Действительно, странно - почему это мертвецы никогда не создают проблем?)
120 Прикладная криптография Это хитрая идея используется во всех приложениях, в которых необходимо воспользоваться эффективностью цифровой подписи, однако избежать централи¬ зованной системы подписей. 4.13. Раскрытие секретов «все или ничего» Допустим, Алиса - бывший агент Советского Союза, а теперь - безработная. Чтобы подработать, она торгует секретами. Любой, кто готов выложить названную цену, может купить секрет. У Алисы даже есть каталог. Все ее секреты с манящими названиями перечислены под номерами: «Где находится Джимми Хоффа?», «Кто тайно контролирует Трехстороннюю комиссию?», «Почему Борис Ельцин всегда выглядит так, будто проглотил живую лягушку?», и т.д. Разумеется, Алиса не желает отдавать два секрета по цене одного и не показывает даже малейшей части информации, касающейся любого секрета. Однако и Боб, потенциальный покупатель, не желает покупать кота в мешке. Кроме того, он не хочет сообщать Алисе, какие секреты ему нужны. Во-первых, это не ее дело, а во-вторых, тогда Алиса сможет добавить в свой каталог пункт «Секреты, в которых заинтересован Боб». В этом случае протокол покера не сработает, поскольку по завершению этого протокола Алиса и Боб должны раскрыть друг другу свои карты. И, кроме того, известны некоторые трюки, с помощью которых Боб сможет узнать сразу несколько секретов. Решение проблемы называется раскрытием секретов «все или ничего» (А11-Ог-Мо1Ьт§ О15с1озиге ОГ 8есге1з - А^08) [246]. Суть его заключается в том, что если Боб получил любую информацию о любом секрете Алисы, он теряет шанс узнать что-либо еще о других ее секретах. В криптографической литературе описаны различные протоколы АК008. Некоторые протоколы обсуждаются в разделе 23.9. 4.14. Депонирование ключей Для введения в тему процитирую Сильвио Микали (8Пую МюаН) [1084]: В настоящее время подслушивание с разрешения суда служит эффективным методом передачи преступников в руки правосудия. По нашему мнению, еще важнее то, что это ограничивает рост преступности, удерживая от исполь¬ зования общедоступных сетей связи в незаконных целях. Поэтому вызывает обоснованное беспокойство, что распространение криптографии с открытым ключом может оказаться на руку преступным и террористическим элементам. Действительно, многие законы предполагают, что соответствующие правительственные ведомства в определенных условиях, оговоренных законом, должны иметь право получить открытый текст любого обмена информацией по общедоступным сетям. В настоящее время это можно трактовать как требование к законопослушным гражданам либо (1) использовать слабые криптосистемы - т.е. криптосистемы, которые соответствующие власти (и даже кто угодно!) могут вскрыть с помощью умеренных усилий, либо (2) заранее сообщать свои секреты властям. Не удивительно, что такая альтернатива обоснованно встревожила многих заинтересованных граждан, создав в итоге мнение, что неприкосновенность личности должна стоять выше национальной г. безопасности и отправления правосудия.
ГЛАВА 4. Промежуточные протоколы 121 Депонирование ключей (кеу езсгом?) - ядро программы СНррег и ее стандарта шифрования с депонированием ключей ЕЕ8 (Езсгстей Епсгурйоп ЕШпЛагф, усердно продвигаемых правительством США. Задача заключается в том, чтобы, сохраняя неприкосновенность личности, в то же время допустить санкционированное судом подслушивание. Стандарт Е88 обеспечивает секретность с помощью защищенного оборудования. В каждый шифровальный чип зашиты уникальный идентификационный номер (ГО) и секретный ключ. Данный ключ разделен на две части и сохраняется вместе с ГО, двумя разными организациями-посредниками. Каждый раз при шифровании файла данных чип сначала шифрует сеансовый ключ с помощью уникального секретного ключа. Затем чип передает по каналу связи зашифрованный сеансовый ключ и собственный идентификатор (ГО). Когда правоохранительным органам необходимо дешифровать поток информации, зашифрованной таким чипом, они извлекают из потока ГО, получают необходимые ключи от организаций-посредников, объединяют их операцией ХОК, расшифровывают сеансовый ключ, а затем используют его для расшифровки трафика сообщений. Для защиты от мошенников эта схема предусматривает дополнительные усложнения, которые подробно обсуждаются в разделе 24.16. Подобную схему можно реализовать и программным путем с помощью криптографии с открытым ключом [77, 1579, 1580, 1581]. Микали назвал свою идею законными криптосистемами ([шг сгур(05у5(етз) [1084,1085]. (По слухам, правительство США заплатило Микали 1 ООО 000$ за использование его патентов [1086, 1087] в своем стандарте шифрования с депонированием ключей, затем патент Микали приобрел Банковский трест). В этих криптосистемах закрытый ключ разделяется на части и распределяется между различными организациями. Как и в схеме с совместным использованием секрета, эти организации могут объединиться и реконструировать закрытый ключ. Однако же части этого ключа обладают дополнительным свойством - их подлинность можно проверить и без реконструкции закрытого ключа. Алиса может сгенерировать собственный закрытый ключ и распределить его части между п доверенными лицами. Никто из них не может восстановить закрытый ключ Алисы. Однако каждое доверенное лицо может проверить, что его часть - это подлинная часть закрытого ключа. Алиса не может отправить кому-то из доверенных лиц строку случайных битов и надеяться улизнуть с добычей. Если судебные власти разрешат подслушивание, соответствующие органы могут воспользоваться этим решением суда и заставить п доверенных лиц Алисы передать свои части ключа. Сложив все п частей, они реконструируют закрытый ключ и смогут подслушивать канал связи Алисы. С другой стороны Мэллори, чтобы реконструировать ключ Алисы и нарушить неприкосно¬ венность ее личности, придется подкупить всех п доверенных лиц. Вот как исполняется этот протокол: 1) Алиса генерирует пару ключей закрытый/открытый. Затем Алиса разделяет закрытый ключ на несколько открытых и закрытых частей. 2) Алиса отправляет открытую часть и соответствующую ей закрытую часть каждому доверенному лицу. Эти сообщения следует зашифровать. Кроме того, Алиса отсылает открытый ключ в центр КОС. 3) Каждое доверенное лицо выполняет независимые вычисления над своими закрытыми и открытыми частями, чтобы удостовериться в их подлинности. Закрытую часть ключа каждое доверенное лицо сохраняет в каком-нибудь надежном месте, а открытую часть посылает в центр КЭС.
122 Прикладная криптография 4) Центр КОС выполняет еще одно вычисление с открытыми частями и открытым ключом. Убедившись в их корректности, центр КОС подписывает открытый ключ и посылает его Алисе, либо помещает в какую-нибудь базу данных. По распоряжению суда о подслушивании, каждое доверенное лицо передает свою часть в центр КОС, после чего КОС может реконструировать закрытый ключ. Вплоть до этой передачи ни КОС, ни кто-либо из доверенных лиц, не смогут в одиночку реконструировать закрытый ключ - для этого нужны все доверенные лица. Подобным образом можно превратить в «законный» любой алгоритм шифрования с открытым ключом. В разделе 23.10 мы обсудим несколько конкретных алгоритмов. В работах Микали [1084, 1085] обсуждаются такие методы объединения описанной выше схемы с пороговой схемой, что для реконструкции закрытого ключа достаточно известного подмножества доверенных лиц (скажем, трое из пяти). Кроме того, Микали обсуждает методы объединения этой схемы с передачей с забыванием (см. раздел 5.5) для того, чтобы доверенные лица не знали, чей именно закрытый ключ реконструируется. Законные криптосистемы далеко не совершенны. Злоумышленник может успешно использовать эту систему, воспользовавшись скрытым каналом (см. раздел 4.2) для вставки еще одного секретного ключа в свою информацию. Таким образом, он может тайно обмениваться информацией с кем угодно, используя скрытый ключ, и совершенно не заботясь по поводу санкционированного судом подслушивания. Эта проблема решается применением другого протокола, называемого отказоустойчивым депонированием ключей (('айза/е) [946, 833]. Эти алгоритм и протокол описывается в разделе 23.10. Политические аспекты депонирования ключей Помимо правительственных планов по внедрению системы депонирования ключей, распространение получили и коммерческие системы того же типа. Возникает неизбежный вопрос: в чем состоит преимущество депонирования ключей для пользователя? По правде говоря - никакого. Пользователь не получает от депонирования ключей ничего, что он не смог бы обеспечить самостоятельно. Действительно, он и сам, если захочет, может генерировать резервную копию ключей (см. раздел 8.8). Депонирование ключей гарантирует полиции возможность подслушивать его разговоры или читать его файлы данных, даже если они зашифрованы. Оно гарантирует, что агентство АНБ сможет подслушивать и его международные звонки, причем без всякой санкции, даже если они зашифрованы. Возможно, пользователям разрешат использовать криптографию в тех странах, которые пока запрещают ее, однако это, пожалуй, единственное преимущество. Недостатки депонирования ключей разительны. Пользователь вынужден уповать на надежность процедур депонирования ключей, принятых правительственными учреждениями и честность занятых этим людей. Он должен верить, что политика соответствующих организаций останется неизменной, правительство не изменит действующие законы, и те, кто имеет право вскрыть его ключ, будут делать это только по закону и с полной ответственностью. Несложно представить, какие только ограничения не отбросит полиция, чтобы отразить нападение террористов на Нью-Йорк3! 3 После страшных терактов в США 11.09.2001, видя развернувшуюся в США кампанию за ограничение сильной криптографии, эти слова читаются совсем по-другому. - Прим. ред.
ГЛАВА 4. Промежуточные протоколы 123 Трудно поверить, что эти схемы шифрования с депонированием, как уверяют их адвокаты, будут использоваться без принуждения со стороны закона. Неизбежен следующий шаг - запрет на использование всех остальных методов шифрования. Вероятно, это единственный способ добиться коммерческого успеха этой системы, и, несомненно, единственный способ заставить использовать ее технически грамотных преступников и террористов. Пока что неясно, каких трудов будет стоить объявление вне закона криптографию, не использующую депонирование ключей, и как это отразится на криптографии как научной дисциплине. Каким образом я могу исследовать программные криптографические алгоритмы без доступа к программному обеспечению соответствующих устройств - может быть, понадобится специальная лицензия? Остаются еще юридические вопросы. Как повлияют депонированные ключи на ответственность пользователей при утечке зашифрованной информации? Правительство США пытается защитить учреждения, занятые депонированием ключей; не следует ли в таком случае ожидать, что при компрометации секрета виновным всегда окажется пользователь? А как быть при взломе базы данных депонированных ключей, государственной или коммерческой? Что, если правительство США попытается на некоторое время скрыть этот факт? Ясно, что ответы на эти вопросы окажут прямое влияние на готовность пользователей принять депонирование ключей. Если же переход будет вынужденным, пара скандалов усилит политическое давление, имеющее целью сделать переход к подобным системам исключительно добровольным, или ввести усложненные правила в этой области. Еще опаснее будет скандал, когда выяснится, что политический оппонент текущей администрации или некий слишком откровенный критик спецслужб и полицейских ведомств годами состоял под наблюдением. Несомненно, это значительно подорвет общественное доверие к шифрованию с депонированием. Если ключи цифровых подписей тоже будут депонироваться, как ключи шифрования, появятся дополнительные проблемы. Допустимо ли властям использовать ключи подписей для проведения операций против подозреваемого преступника? Признает ли суд подлинность цифровых подписей, основанных на депонированных ключах? Чем - на деле - будут владеть пользователи, если власти начнут использовать их ключи для подписания каких-либо невыгодных контрактов, для поддержания отдельных отраслей промышленности или просто для кражи денег? Дополнительные вопросы порождает интернационализация криптографии. Будут ли совместимы схемы депонирования ключей, принятые в различных странах? Должны ли транснациональные корпорации использовать в каждой стране особые депонированные ключи, согласованные с местным законодательством? Без поддержки совместимости исчезает одно из пропагандируемых достоинств схемы с депонированием ключей - международное использование развитых средств криптографии. А что, если ряд стран не поверят в надежность организаций, занятых депонированием ключей? Смогут ли пользователи заниматься бизнесом в этих странах? Признают ли суды их электронные контракты, или же факт депонирования в США ключей их подписей позволит судам где-нибудь в Швейцарии утверждать, что данный электронный контракт мог подписать кто-то другой? Может быть, людям, которые ведут дела в подобных странах, будут сделаны специальные исключения?
124 Прикладная криптография А как быть с промышленным шпионажем? Где гарантии, что страны, ныне занятые промышленным шпионажем в пользу своих важнейших или государственных предприятий, не воспользуются системами с депонированием ключей? Действительно, поскольку ни одна страна не собирается позволять другим странам следить за своими разведывательными операциями, распространение шифрования с депонированием ключей может привести к росту подслушивания. Даже если страны, соблюдающие гражданские права, начнут использовать шифрование с депонированием ключей только для законного преследования преступников и террористов, где-нибудь этим обязательно воспользуются для выслеживания диссидентов, шантажа политических, оппонентов и т.п. Цифровые линии связи предоставляют возможность гораздо более тщательного, по сравнению с аналоговым миром, контроля граждан, общественных организаций, а также их доходов и политических взглядов. Не будет ли лет через 20 продажа системы с депонированием ключей Турции или Китаю напоминать продажу электрических дубинок Южной Африке в 1970 году или на строительство химического завода в Ираке в 1980 году? Хуже того, доступность и незаметность подслушивания линий связи могут побудить многие правительства, которые ранее, возможно, этим и не занимались, следить за частной корреспонденцией своих граждан. И нет гарантий, что перед подобным искушением устоят даже либеральные демократии.
ГЛАВА 5. Развитые протоколы 5.1. Доказательства с нулевым разглашением Вот еще одна история: Алиса: «А я знаю пароль компьютера Федеральной Резервной Системы США, рецепт секретного соуса Макдональдса и содержимое четвертого тома Дональда Кнута». Боб: «Нет, не знаешь». Алиса: «Нет, знаю». Боб: «Не знаешь». Алиса: «Нет, знаю». Боб: «Тогда докажи». Алиса: «Хорошо. Я расскажу тебе». Шепчет Бобу на ухо. Боб: «Интересно. Теперь я тоже это знаю и сообщу в Вашингтон Пост». Алиса: «Ой!». К сожалению, обычно Алиса, чтобы доказать что-либо Бобу, рассказывает ему свой секрет. Но тогда Боб тоже будет его знать. Затем Боб может рассказать его кому угодно, и Алиса ничего не сможет с этим поделать. (Для описания этих протоколов в литературе часто используются другие персонажи. Пегги обычно доказывает, а Виктор проверяет. Поэтому в дальнейших примерах вместо Алисы и Боба используются эти имена). Однонаправленные функции позволяют Пегги провести доказательство с нулевым разглашением [626]. Этот протокол позволяет Пегги доказать Виктору, что у нее и в самом деле есть информация, но не позволяет Виктору узнать, что это за информация. Подобные доказательства имеют форму интерактивного протокола. Виктор задает Пегги ряд вопросов. Если Пегги действительно знает секрет, она ответит правильно на все вопросы. Если секрет неизвестен Пегги, с некоторой вероятностью она может ответить правильно - 50% в наших следующих примерах. После примерно 10 вопросов Виктор убедится, что Пегги знает секрет. Ни один вопрос или ответ не позволят Виктору получить ни малейшей крупицы информации Пегги, однако докажут владение Пегги этой информацией. Базовый протокол с нулевым разглашением Жан-Жак Кискате (1еап-1асцие5 (Зшзяиа^ег) и Луи Гилу (Ьошз ОиШои) поясняют суть нулевого разглашения с помощью аналогии с пещерой [1281]. В пещере (см. Рис. 5.1) есть секрет - потайная дверца между СиБ, открыть которую может только тот, кто знает волшебные слова. Для остальных же оба хода заканчиваются тупиком. Допустим, Пегги знает секрет пещеры. Свое знание она хочет доказать Виктору, но не хочет открывать ему волшебных слов. Вот как она его убеждает:
126 Прикладная криптография 1) Виктор стоит в точке А. 2) Пегги проходит либо к точке С, либо к точке В пещеры1. 3) Как только Пегги исчезнет в пещере, Виктор переходит в точку В. 4) Виктор кричит Пегги, предлагая ей: a. Выйти из левого прохода или b. Выйти из правого прохода 5) Пегги выполняет просьбу, используя, если необходимо, волшебные слова для открытия двери. 6) Пегги и Виктор п раз повторяют этапы 1—5. Допустим, Виктор захватил видеокамеру. Он записывает все, что видит - как Пегги исчезает в пещере, как сам он кричит, указывая Пегги, где она должна выйти и появление Пегги. Виктор записывает все п тестов. Поверит ли Кэрол, если он покажет ей видеозапись, что Пегги знает волшебные слова, открывающие дверь? Нет. Вдруг , |-гЦ1гЦ || 1 т1т-ЦЛ А ц, 1,,., 1,1 Пегги и Виктор заранее сговорились, что т{х^гфг{ 1 ] Г.|т|/Г 11 именно Виктор будет кричать, так что Пегги |.,1,1,г1 г1|,Цл ‘„ц: только делает вид, что прошла весь путь. т}'|фг|т^:1^д:{:14х}д Тогда она будет в каждом тесте выходить в , 1,тД,т.,ц.ц^ ^ ‘ указанном Виктором месте, не зная 1 ,.Ц 1,1, II , I.) 1 |,Ц.цХу1 волшебных слов. Либо же они могли | | ре 1 ,.Ц 11Ц Ч-Ч- поступить иначе. Пегги входит в один из ) Ц ,Ц1 ‘ Ц проходов, а Виктор дает ей произвольные ^т{ г{т^т|г зфЩЙЙЯг указания. Если Виктор угадает - хорошо, 1,-1,1., Л-,Л 41*1*гЧ 5? 1 если нет - что ж, они вырежут из {у ! » ж I ,Р, , 1 |т| г[т видеозаписи эту попытку. Таким образом, , 1Т1,1, ЦЛ , 1 .,..1, ^, II ^ Г, I,,,1 ] Виктор в любом случае может предъявить видеозапись, показывающую точно ту же Рис. 5.1. Пещера с нулевым разглашением последовательность, которая получилась бы, если бы Пегги знала волшебные слова. Этот опыт указывает еще на два обстоятельства. Во-первых, Виктор не может убедить третью сторону в достоверности доказательств. Во-вторых, данный протокол можно отнести к протоколам с нулевым разглашением. Очевидно, Виктор не узнает ничего из просмотра видеозаписи, если Пегги не знает волшебных слов. Но так как подлинную видеозапись невозможно отличить от поддельной, Виктор не узнает реального доказательства - а это и есть нулевое разглашение. Метод, используемый в этом протоколе, напоминает классический протокол честного дележа, называемый «разделяй и выбирай»: 1) Алиса разрезает пополам какую-либо вещь. 2) Боб выбирает одну половину себе. О 1 Виктор понятия не имеет, какую точку выбрала Пегги. - Прим. ред.
ГЛАВА 5. Развитые протоколы 127 3) Алиса забирает вторую половину. Честный дележ на этапе 1 - в интересах Алисы, поскольку Боб на этапе 2 выберет любую половину, которая ему понравится. Технику «разделяй и выбирай» в криптографии впервые предложил Майкл Рабин (МюЬае1 КаЫп) [1282]. Позже будут формализованы понятия интерактивного протокола и нулевого разглашения [626, 627]. Поскольку Пегги не может несколько раз подряд угадать, откуда Виктор предложит ей выйти, протокол «разделяй и выбирай» работает. Если Пегги не знает секрет, она может выйти только из того прохода, в который вошла. В каждом раунде (иногда называемом аккредитацией) протокола вероятность угадать, с какой стороны Виктор предложит ей выйти, составляет 50%. Поэтому вероятность Пегги обмануть Виктора так же равна 50%. Вероятность обмануть Виктора в двух раундах составит 25%, а во всех п раундах Пегги остается один шанс из 2п . Например, после 16 раундов у Пегги останется всего 1 шанс из 65536 обмануть Виктора. Поэтому если все 16 доказательств Пегги правильны, Виктор может уверенно допустить, что она действительно знает волшебные слова, открывающие дверцу между точками С и О. (Наша аналогия с пещерой несовершенна. Например, Пегги могла бы просто пару раз пройти через дверь туда-сюда, и Виктору протокол «разделяй и выбирай» был бы не нужен. Однако с математической точки зрения он необходим для нулевого разглашения). Допустим, Пегги известна некоторая важная информация, служащая решением трудной задачи. Тогда базовый протокол с нулевым разглашением завершается всего за несколько раундов. 1) Пегги, используя свою информацию и случайное число, преобразует одну трудную задачу в другую (новую) задачу, изоморфную оригинальной задаче. Затем с помощью своей информации и случайного числа она решает новую трудную задачу. 2) Пегги передает решение новой задачи, используя схему вручения бита. 3) Пегги раскрывает Виктору новую задачу. Виктор не может использовать ее, чтобы получить информацию об исходной задаче или ее решении. 4) Виктор предлагает Пегги сделать одно из двух: a. доказать изоморфность новой и исходной задачи (т.е. два различных решения для двух родственных задач), либо b. раскрыть решение, врученное ею на этапе 2, и доказать, что это решение новой задачи. 5) Пегги выполняет предложение Виктора. 6) Пегги и Виктор повторяют п раз этапы 1—5. Помните видеокамеру в протоколе с пещерой? Здесь можно поступить точно также. Виктор может записать исполнение протокола между ним и Пегги. Он не может использовать эту запись, чтобы убедить Кэрол, поскольку ничто не мешает по сговору с Пегги создать имитацию выполнения протокола, который фальшиво доказывает знание Пегги. Этот аргумент можно рассматривать как доказательство того, что это протокол с нулевым разглашением.
128 Прикладная криптография Математический аппарат доказательства этого типа сложен. Задачи и случайное преобразование следует выбирать осторожно, чтобы Виктор не получил никакой информации о решении исходной задачи даже после многократных повторений протокола. Для доказательств с нулевым разглашением можно использовать отнюдь не все трудные задачи, хотя большинство из них допускают это. Изоморфизм графов Чтобы эта концепция, взятая из теории графов [619, 622], стала понятной, рассмотрим пример. Графом называют сеть линий (ветвей или ребер), соединяющих множество вершин. Если два графа совершенно одинаковы, кроме имен вершин, их называют изоморфными. Доказательство изоморфности очень крупных графов может потребовать веков машинного времени - это одна из так называемых ^-полных задач, которые обсуждаются в разделе 11.12. Допустим, Пегги знает, что графы Ох и С2 изоморфны. Это знание Пегги может доказать с помощью следующего протокола: 1) Пегги в произвольном порядке переставляет вершины графа Сь получая другой граф, Я, изоморфный 0\. Поскольку Пегги знает об изоморфности графов Я и Ои ей известна также изоморфность графов Я и 02. Однако для всех остальных установление изоморфизма графов Н и или Я и С2 задача столь же трудная, как доказательство изоморфизма графов С\ и 02. 2) Пегги отсылает Виктору граф Я. 3) Виктор предлагает Пегги либо a. доказать изоморфность графов Я и либо b. доказать изоморфность графов Я и 02. 4) Пегги подчиняется. Она либо: a. доказывает изоморфность графов Я и С\9 не доказывая изоморфности графов Я и 02, либо b. доказывает изоморфность графов Я и Оъ не доказывая изоморфности графов Я и С/р 5) Пегги и Виктор повторяют п раз этапы 1—4. Если Пегги не знает об изоморфности графов и 02, она не сумеет создать граф Я. изоморфный обоим графам. Она может только создать граф, изоморфный С{, либо граф, изоморфный С2. Как и в предыдущем примере, у Пегги есть только 50 шансов из 100 угадать, какое доказательство потребует от нее Виктор на этапе 3. По ходу протокола Виктор не получает из ответов Пегги никакой полезной информации, могущей помочь установить изоморфизм графов и С2. Так как в каждом раунде протокола Пегги генерирует новый граф Я, Виктор не сумеет получить эту информацию 2 На самом деле принадлежность этой задачи к классу ИР-полных не доказана, это отмечает и сам Шнайер в исправлениях к этой книге.
ГЛАВА 5. Развитые протоколы 129 при любом числе раундов протокола - по ответам Пегги установить изоморфность графов С\ и С2 невозможно. В каждом раунде Виктор получает новую случайную перестановку графа Н, зная, что он изоморфен либо 0\, либо С2. Он мог бы и сам генерировать подобные графы. А поскольку Виктор может создать имитацию исполнения протокола, это действительно доказательство с нулевым разглашением. Гамильтоновы циклы Один из вариантов описанного выше примера впервые предложен Мануэлем Блюмом (Мапие1 В1ит) [196]. Пегги знает длинный замкнутый путь по ветвям графа, который проходит через каждую вершину только один раз. Такой путь называют гамильтоновым циклом. Поиск гамильтонова цикла - еще одна трудная задача. Допустим, у Пегги есть эта информация - например, она может получить ее, создав граф с конкретным гамильтоновым циклом. Теперь она хочет доказать Виктору, что ей известна эта информация. Итак, Пегги знает гамильтонов цикл графа С. Виктору известен сам граф О, но он не знает его гамильтонов цикл. Пегги хочет доказать Виктору, что она знает гамильтонов цикл, не сообщая самого цикла. Вот как она делает это: 1) Пегги произвольно переставляет граф С. Для этого она передвигает вершины и изменяет их надписи, создавая новый граф Я. Поскольку графы <7 и Я топологически изоморфны (т.е. это - один и тот же граф), то если Пегги знает гамильтонов цикл графа (7, она без труда найдет гамильтонов цикл графа Я. Если же граф Я создан не Пегги, доказательство изоморфизма двух графов окажется для нее еще одной трудной задачей, решение которой потребует нескольких веков машинного времени. Затем Пегги шифрует Я, получая Я'. (Следует использовать вероятностное шифрование каждой ветви графа Я, т.е. зашифрованный 0 или зашифрованную 1 для каждой ветви графа Я). 2) Пегги посылает копию графа Я' Виктору. 3) Виктор предлагает Пегги либо: a. доказать, что граф Я' - это шифрованная изоморфная копия графа С, либо b. показать гамильтонов цикл графа Я. 4) Пегги подчиняется. Она либо: a. доказывает, что граф Я' - это шифрованная изоморфная копия графа <7, раскрывая с этой целью перестановки и расшифровывая все, но не показывая гамильтонов цикл графов (7 или Я, либо b. показывает гамильтонов цикл графа Я, расшифровывая только те ветви, которые составляют гамильтонов цикл, но не доказывая топологическую изоморфность графов (7 и Я. 5) Пегги и Виктор п раз повторяют этапы 1—4. 5 - 6229
130 Прикладная криптография Если Пегги не лжет, на этапе 3 она сумеет предоставить Виктору одно из доказательств. Но если ей неизвестен гамильтонов цикл графа О, Пегги не сумеет создать шифрованный граф который удовлетворил любому из выборов Виктора. Самое большее, что она сможет сделать - создать либо граф, изоморфный графу О, либо граф с тем же числом вершин и ребер и корректным гамильтоновым циклом. Несмотря на то, что ее шансы угадать, какое именно доказательство потребует Виктор на этапе 3, составляют 50%, Виктор может повторять протокол достаточное число раз, чтобы убедиться в знании Пегги гамильтонова цикла графа О. Параллельные доказательства с нулевым разглашением Базовый протокол с нулевым разглашением предусматривает п обменов информацией между Пегги и Виктором. Однако эти обмены можно исполнять и параллельно: 1) Пегги, используя свою информацию и п случайных чисел, преобразует трудную задачу в п различных изоморфных задач. Затем Пегги с помощью своей информации и этих случайных чисел решает п новых трудных задач. 2) Пегги вручает решение п новых трудных задач. 3) Пегги открывает Виктору эти п новых трудных задач. Виктор не может воспользоваться этими новыми задачами для получения информации об исходных задачах или их решениях. 4) Для каждой новой трудной задачи Виктор предлагает Пегги либо: a. доказать ему, что исходная и новая задачи изоморфны, либо b. открыть решение, врученное на этапе 2, и доказать, что оно служит решением данной новой задачи. 5) Пегги выполняет его просьбу для каждой новой задачи. К сожалению, все не так просто. В отличие от предыдущего, этот протокол не обладает такими же свойствами нулевого разглашения. Так, на этапе 4 Виктор может потребовать, чтобы доказательство было представлено как необратимый хэш всех значений, врученных на этапе 1. Это сделает невозможным имитацию выполнения протокола. Это тоже нулевое разглашение, однако иного рода. На практике оно представляется надежным, но никто не знает, как это доказать. В сущности, мы знаем только, что в известных условиях некоторые протоколы для определенных задач можно выполнять параллельно, сохраняя свойство нулевого разглашения [247, 106, 546, 616]. Неинтерактивные доказательства с нулевым разглашением Кэрол невозможно убедить потому, что протокол интерактивный, а она в нем не участвует. Чтобы убедить Кэрол и других заинтересованных лиц, следует использовать неинтерактивный протокол. Для неинтерактивных доказательств с нулевым разглашением предложен ряд протоколов [477, 198, 478, 197]. Эти протоколы не требуют никакого взаимодействия участников. Пегги может опубликовать их и тем самым доказать свое знание всем, у кого найдется время проверить достоверность доказательства.
ГЛАВА 5. Развитые протоколы 131 Базовый протокол напоминает параллельное доказательство с нулевым разглашением, только вместо Виктора используется однонаправленная хэш-функция: 1) Пегги, используя свою информацию и п случайных чисел, преобразует трудную задачу в п различных изоморфных задач. Затем с помощью своей информации и случайных чисел Пегги решает п новых трудных задач. 2) Пегги вручает решение п новых трудных задач. 3) Пегги использует все вручения как единый вход для однонаправленной хэш- функции. (Ведь в конечном счете, вручения представляются в виде строк битов). Затем она сохраняет первые п битов значения хэш-функции. 4) Пегги берет п битов, сгенерированных на этапе 3. Она поочередно берет /-й бит для каждой трудной задачи / и a. если 1-й бит равен 0, она доказывает изоморфность исходной и новой задач, либо b. если 1-й бит равен 1, она открывает решение, врученное на этапе 2, и доказывает, что оно служит решением новой задачи /. 5) Пегги публикует все решения, врученные на этапе 2, и все доказательства, полученные на этапе 4. 6) Виктор, Кэрол и все прочие заинтересованные лица проверяют корректность исполнения этапов 1—5. Поразительно! Пегги может публиковать некоторые данные, не содержащие никакой информации о ее секрете, но могущие убедить кого угодно в существовании собственно секрета. Кроме того, этот протокол можно использовать в схемах цифровых подписей, если выбор определен как набор необратимых хэшей исходных сообщений и сообщения, которое необходимо подписать. Эта схема работает, поскольку однонаправленная хэш-функция действует как истинный генератор случайных битов. Чтобы смухлевать, Пегги должна уметь предсказывать результат однонаправленной хэш-функции. (Припомните, если решение трудной задачи Пегги неизвестно, на этапе 4 она может исполнить либо а, либо 6, но не оба действия одновременно). Пегги сможет смошенничать, если каким-то образом узнает, какое действие заставит ее выполнить однонаправленная хэш-функция. Однако Пегги не сможет ни заставить однонаправленную хэш-функцию генерировать определенный бит, ни угадать, какой бит она сгенерирует. По существу, однонаправленная хэш-функция заменяет Виктора при случайном выборе на этапе 4 одного из двух доказательств. В неинтерактивном протоколе последовательность запрос/ответ должна пройти намного больше итераций. Пегги, а не Виктор, отбирает трудные задачи, используя случайные числа. Поэтому Пегги может перебирать различные задачи, и, следовательно, различное битовое представление вручений, пока хэш-функция не выдаст Пегги что-либо подходящее. В интерактивном протоколе может оказаться достаточно 10 итераций, поскольку тогда вероятность мошенничества Пегги составит 1 шанс из 210 (1 из 1024). Однако, для неинтерактивных доказательств с нулевым разглашением этого числа итераций недостаточно. Имейте в виду, на этапе 4 Мэллори всегда может выполнить либо а, либо Ъ. На этапах 1—3 он может попробовать угадать, что ему предложат выполнить, и посмотреть, верна ли его догадка. Если нет, Мэллори будет угадывать снова и снова. На
132 Прикладная криптография компьютере нетрудно сделать 1024 попыток. Чтобы предотвратить такое лобовое вскрытие, в неинтерактивных протоколах требуются 64 или даже 128 итераций. В этом и заключается основной смысл использования однонаправленной хэш-функции: Пегги не может предсказать выход хэш-функции, поскольку не может предсказать ее вход. Все вручения, используемые на входе, становятся известными только после решения новых задач. Обшие замечания Блюм доказал, что любую математическую теорему можно преобразовать в такой граф, что доказательство этой теоремы эквивалентно доказательству существования гамильтонова цикла данного графа. В [620] приведено общее доказательство, что для любого ^-утверждения существует доказательство с нулевым разглашением, использующее однонаправленные функции и, следовательно, надежные алгоритмы шифрования. Любое математическое доказательство можно преобразовать в доказа¬ тельство с нулевым разглашением. Эта методика позволяет исследователю доказать всему миру, что он знает доказательство какой-то теоремы, не раскрывая его самого. Например, тот же Блюм мог бы опубликовать свои результаты, не раскрывая их. Известны также доказательства с минимальным разглашением [590]. Доказательства с минимальным разглашением имеют следующие свойства: 1. Пегги не может надуть Виктора. Если доказательство неизвестно Пегги, ее шансы убедить Виктора в обратном ничтожны. 2. Виктор не может надуть Пегги. Он не получает и малейшей крупицы доказательства, кроме самого факта, что доказательство известно Пегги. В частности, Виктор никому не сможет продемонстрировать доказательство, если не докажет все сам с «нуля». Отличие от доказательств с нулевым разглашением в том, что последние имеют дополнительное свойство: 3. Виктор не узнает от Пегги ничего, что он не мог бы узнать самостоятельно, за исключением факта, что доказательство известно Пегги. В математическом отношении доказательства с минимальным разглашением значительно отличаются от доказательств с нулевым разглашением. Обсуждение этого различия выходит за рамки данной книги, однако подготовленные читатели могут обратиться к другой литературе. Основные концепции изложены в [626, 619, 622]. Дальнейшая разработка этих идей, основанная на различных математических допущениях, описывается в [240, 319, 239]. Также различают следующие типы доказательств с нулевым разглашением: ✓ Совершенное. Существует имитатор, который создает записи проколола, полностью соответствующие реальным записям (см. примеры с гамильтоновым циклом и изоморфизмом графов). ✓ Статистическое. Существует имитатор, который создает записи, полностью соответствующие реальным, кроме некоторого фиксированного числа исключений.
ГЛАВА 5. Развитые протоколы 133 ✓ Вычислительное. Существует имитатор, который создает записи, неразличимые с подлинными. ✓ Неиспользующее. Имитатор может не существовать, но мы можем доказать, что Виктор не получит никакого полиномиального количества информации из доказательства (пример параллельных доказательств). На протяжении многих лет доказательства с минимальным и нулевым разглашением интенсивно разрабатывались как теоретически, так и практически. Майк Бёрместер (]УПке Вигтез1ег) и Иво Десмедт (Ууо БезшесИ) предложили широковещательное интерактивное доказательство, позволяющее владельцу секрета широковещательно передавать интерактивное доказательство с нулевым разглашением большой группе контролеров [280]. Криптографы доказали, что все, что можно доказать с помощью интерактивного доказательства, можно доказать и с помощью интерактивного доказательства с нулевым разглашением [753, 137]. Хороший обзор этой темы можно найти в [548]. Дополнительные математические сведения, варианты, протоколы и приложения можно найти в [590, 619, 240, 319, 620, 113,241, 152, 8, 660, 238, 591, 617, 510, 592, 214, 104, 216, 832, 97, 939, 622, 482, 615, 618, 215, 476, 71] - на эту тему было написано множество работ. 5.2. Идентификация с помощью доказательств с нулевым разглашением На практике для идентификации личности нередко используют физические символы: паспорта, водительские удостоверения, кредитные карточки и т.д. В эти символы входит какой-нибудь признак, связывающий их с конкретным человеком. Обычно это фотография или подпись, однако с тем же успехом можно использовать отпечаток пальца, снимок сетчатки глаза или рентгеновский снимок челюсти. Как было бы удобно делать нечто подобное цифровыми методами! Впервые использовать доказательства с нулевым разглашением в целях идентификации предложили Уриель Фейге (Ше1 Ре1§е), Амос Фиат (Атоз йа1) и Ади Шамир (Асй ЗЬагшг) [566, 567]. Для доказательства идентичности Алисы используется ее закрытый ключ. С помощью доказательства с нулевым разглашением, Алиса может доказать, что знает свой закрытый ключ и, таким образом, доказать свою личность. Соответствующие алгоритмы обсуждаются в разделе 23.11. Это очень перспективная идея. Она позволяет идентифицировать личность без помощи физических символов. И все же она несовершенна. Ниже приведено несколько примеров мошенничества. Проблема гроссмейстера Вот как Алиса, даже не умея играть в шахматы, может победить гроссмейстера. (Иногда это называют проблемой гроссмейстера). Алиса бросает вызов Гарри Каспарову и Анатолию Карпову, предлагая сыграть в одно время, в одном и том же месте, но в раздельных помещениях. С Карповым она играет черными фигурами, а с Каспаровым - белыми. Гроссмейстеры ничего не знают друг о друге.
134 Прикладная криптография Карпов, играя белыми, первым делает свой ход. Алиса записывает ход и идет в комнату Каспарова. Играя белыми, она делает этот же ход на доске Каспарова. Каспаров делает свой первый ход черной фигурой. Алиса записывает его, идет в комнату к Карпову и делает такой же ход. Так продолжается, пока она не выиграет одну из партий, проиграв другую, либо до окончания обеих партий вничью. Каспаров фактически играет с Карповым, а Алиса - посредник, повторяющий ходы одного гроссмейстера на доске другого. Однако если Карпов и Каспаров не знают о присутствии друг друга, каждый из них будет потрясен игрой Алисы. Этот способ мошенничества говорит не в пользу доказательств личности с нулевым разглашением [485, 120]. Когда Алиса доказывает свою личность Мэллори, Мэллори одновременно может доказать Бобу, что он и есть Алиса. Мошенничество мафии При обсуждении своего протокола идентификации с нулевым разглашением, Ади Шамир сказал [1424]: «Я могу заходить в магазин мафии хоть миллион раз подряд, но они все равно не сумеют выдать себя за меня». Вот как мафия сможет сделать это. Предположим, Алиса закусывает в ресторане мафии «Обеды у Боба». Кэрол делает покупки в дорогом ювелирном магазине «Торговый Дом Дейва». Боб и Кэрол - мафиози, сообщающиеся по секретному радиоканалу. Алиса и Дэйв даже не подозревают обман. Когда Алиса, поев, приготовится доказать свою личность Бобу и оплатить счет, Боб дает знать Кэрол, что пора начинать. Кэрол набирает бриллиантов подороже и тоже готовится подтвердить свою личность Дэйву. Теперь, когда Алиса доказывает свою личность Бобу, он подает сигнал Кэрол, и та исполняет тот же протокол с Дэйвом. Когда Дэйв задает вопрос, предусмотренный протоколом, Кэрол передает его Бобу, а Боб адресует его Алисе. Когда Алиса отвечает, Боб передает Кэрол правильный ответ. То есть, по существу, Алиса доказывает свою личность Дэйву, а участие в протоколе Боба и Кэрол ограничивается передачей сообщения туда и обратно. В итоге, по завершению протокола Алиса докажет свою личность Дэйву и заплатит за дорогие бриллианты, а Кэрол скроется, прихватив их с собой. Обман, выполненный террористами При желании, Алиса может сговориться с Кэрол и надуть Дэйва. В приведенном ниже протоколе Кэрол играет роль известной террористки, которой Алиса помогает въехать в страну. Дэйв - офицер-пограничник. Алиса и Кэрол сообщаются по секретному радиоканалу. Когда Дэйв задает Кэрол вопросы, предусмотренные протоколом с нулевым разглашением, Кэрол адресует их Алисе, та отвечает на вопросы и Кэрол повторяет их Дэйву. По существу, свою личность Дэйву доказывает Алиса, а Кэрол выступает в роли канала связи. По завершению протокола Дэйв уверен, что Кэрол - это Алиса, и разрешает ей въезд в страну. Спустя три дня Кэрол обнаруживается возле правительст¬ венного здания в микроавтобусе, набитом взрывчаткой.
ГЛАВА 5. Развитые протоколы 135 Возможные решения Успех обоих махинаций, описанных выше, целиком зависит от секретного радиоканала. Соответственно, один из путей их предотвращения - проводить процедуры идентификации в «клетке Фарадея», которая блокирует радиоволны. В примере с террористом это гарантирует пограничнику Дэйву, что Кэрол не получит ответов от Алисы. В примере с мафией Боб может поставить в своем ресторане поддельную «клетку Фарадея», однако у ювелира Дейва клетка будет настоящая, так что и Боб и Кэрол не сумеют связаться. Чтобы решить проблему гроссмейстера, можно заставить Алису не вставать с места до окончания партии. Томас Бет (ТЬотаз Ве1Ь) и Иво Десмедт (Ууо БезшесЙ) предложили иное решение, в котором используются точные часы [148]. Если каждый этап протокола должен выполняться в заданное время, у мошенников не останется времени для обмена сообщениями. Например, для решения проблемы гроссмейстера можно ограничить время обдумывания хода одной минутой. Тогда у Алисы не будет времени перебегать из комнаты в комнату. В истории с мафией у Боба и Кэрол не будет времени обмениваться ответами и вопросами. Обман с несколькими лицами В [485, 120] обсуждаются другие возможные злоупотребления доказательствами идентичности с нулевым разглашением. В некоторых реализациях, при регистрации человеком своего открытого ключа проверка опускается. Следовательно, Алиса может использовать несколько закрытых ключей и, соответственно, выдавать себя за несколько личностей. Это может оказать Алисе огромную помощь при мошенничестве с налогами. Кроме того, совершив преступление, Алиса может скрыться. Прежде всего она создает и публикует несколько личностей, причем одну из них не использует. Потом она совершает преступление, используя эту личность так, чтобы свидетели идентифицировали ее как эту личность. После этого Алиса немедленно прекращает пользоваться этой личностью. Свидетель знает личность преступника, однако Алиса никогда уже не будет пользоваться этой личностью, так что выследить ее невозможно. Для предотвращения этого мошенничества нужны механизмы, гарантирующие, что каждый человек будет использовать только одну личность. Авторы [120] предлагают эксцентричную идею выращивания «защищенных» детей, которых невозможно клонировать, и которым присвоен уникальный номер, входящий в их генетический код. Кроме того, они предложили присваивать каждому ребенку личность уже при рождении. (Действительно, родителям придется пойти на это, так как в противном случае ребенка могут похитить). Однако и этим нетрудно злоупотребить, поскольку родители могут создать несколько личностей для родившегося ребенка. В конечном счете, в основе уникальности личности лежит доверие. Паспорта напрокат Допустим, Алиса хочет поехать в Заир, однако правительство этой страны не дает ей визу. Тогда Кэрол предлагает сдать «напрокат» свою личность Алисе. (Первым это предлагал Боб, но появилось несколько очевидных проблем). Кэрол продает Алисе свой закрытый ключ, с которым Алиса едет в Заир, выдавая себя за Кэрол.
136 Прикладная криптография Вместе с платой за свою личность, Кэрол получает идеальное алиби. Пока Алиса находится в Заире, она совершает преступление. Ведь лже-Кэрол доказала свою личность в Заире, как же она могла совершить преступление дома? Разумеется, у Алисы тоже развязаны руки. Она может совершить преступление либо перед отъездом, либо немедленно по возвращению, возле дома Кэрол. Сначала она покажет, что она - это Кэрол (а с помощью закрытого ключа Кэрол сделать это несложно), затем совершит преступление и скроется. Полиция начнет искать Кэрол. Кэрол будет уверять, что сдала свою личность напрокат Алисе, но кто поверит в такую абсурдную историю? Проблема состоит в том, что Алиса фактически доказывает не свою личность, а то, что она знает некоторую секретную информацию. Объектом злоупотребления служит именно связь между этой информацией и личностью. Защитой от такого мошенничества могло бы стать упомянутое выращивание защищенных от клонирования детей или создание полицейского государства, в котором все граждане должны постоянно доказывать свою личность (в конце дня, на каждом углу и т.д.). Кроме того, помочь решить проблему могут биометрические методы - отпечатки пальцев, снимки сетчатки глаза, запись голоса и т.п. Доказательство членства Алиса хочет доказать Бобу, что она входит в сверхсекретную организацию, но не хочет раскрывать свою личность. Эта проблема, напоминающая проблему доказательства личности, но несколько отличная от нее, исследовалась в [887, 906, 907, 1201, 1445]. Некоторые решения связаны с проблемой групповых подписей (см. раздел 4.6). 5.3. Подписи «вслепую» Важная особенность протоколов цифровой подписи состоит в том, что человек, который ставит свою подпись, может узнать содержимое подписываемого документа. В принципе, в этом нет ничего дурного, однако порой требуется как раз обратное. В некоторых случаях необходимо, чтобы люди подписывали документы, даже не увидев их содержимое. Известны также методы, когда подписывающий может не вполне, но почти точно узнать, что он подписывает. Но сначала рассмотрим первые методы. Совершенно слепые подписи Боб - государственный нотариус. Алисе необходимо, чтобы он подписал документ, но ничего не узнал о его содержимом. Последнее Боба не касается — он только подтверждает, что нотариально заверил документ в определенное время. Боб может поступить следующим образом: 1) Алиса умножает документ на случайное число, называемое маскирующим множителем (ЫтсИп§/ас1ог). 2) Алиса отправляет Бобу маскированный документ. 3) Боб подписывает маскированный документ.
ГЛАВА 5. Развитые протоколы 137 4) Алиса удаляет маскирующий множитель, восстанавливая исходный документ, подписанный Бобом. Чтобы этот протокол работал, функции подписания и умножения должны быть коммутативны. В противном случае вместо умножения можно использовать иные методы изменения документа. В разделе 23.12 приведено несколько подходящих алгоритмов. Здесь же, для упрощения математических выкладок, мы остановимся на умножении. Может ли Боб сжульничать? Может ли он получить какое-либо представление о подписываемом документе? Нет. Если маскирующий множитель истинно случайный, то и маскированный документ тоже истинно случайный. Маскированный документ, подписываемый на этапе 2 Бобом, совершенно не похож на исходный документ Алисы. На этапе 3 маскированный документ с подписью Боба ничем не напоминает подписанный документ на этапе 4. Даже если по завершении протокола Боб добудет документ со своей подписью, он не сумеет доказать, ни себе, ни другим людям, что он подписывал его в этом конкретном протоколе. Он только знает, что его подпись достоверна. Он может, как и любой другой человек, проверить подлинность своей подписи. Но у него нет никакой возможности увязать подписанный документ с любой информацией, полученной по ходу исполнения протокола. Даже если бы Боб подписал миллион документов, используя этот протокол, он не сумеет узнать, какой экземпляр какого документа подписан им. Совершенно слепые подписи характеризуют следующими свойствами: 1. Подпись Боба под документом достоверна. Она достаточна для доказательства подписания Бобом данного документа. Если впоследствии документ будет предъявлен Бобу, она убедит его в том, что этот документ подписан им. Кроме того, эта подпись обладает всеми свойствами цифровых подписей, обсуждаемых в разделе 2.6. 2. Боб не может увязать подписанный документ с самим актом подписания документа. Даже если Боб хранит записи обо всех сделанных им слепых подписях, он не сумеет установить, когда он подписал любой конкретный документ. У Евы, которая отслеживает протокол где-то между Алисой и Бобом, информации еще меньше, чем у Боба. Подписи «вслепую» Нетрудно заметить, что с помощью протокола совершенно слепых подписей Алиса может заставить Боба подписать все, что угодно, скажем, «Боб должен Алисе миллион долларов», «Боб должен Алисе своего первого ребенка», «Боб должен Алисе ящик шоколада». Возможности бесчисленны, а потому во многих приложениях этот протокол бесполезен. Однако известен метод, который, позволяя Бобу узнать, что же он подписывает, в то же время сохраняет полезные свойства слепых подписей. Ядром этого протокола служит техника «разделяй и выбирай». Возьмем такой пример. Допустим, в некую страну каждый день въезжают множество людей, и Департамент миграции хочет гарантировать, что они не ввозят тайком кокаин. В принципе, сотрудники могут обыскивать каждого приезжего; однако вместо этого они используют вероятностный подход: досмотру подвергается имущество каждого десятого приезжего, остальные девять пропускаются
138 Прикладная криптография без обыска. Конечно, в большинстве случаев постоянные контрабандисты проскакивают незамеченными, однако с вероятностью 10% их ловят. А при эффективной судебной системе штраф за единственную поимку на месте преступления намного превышает доходы контрабандиста от девяти удачных попыток. Если Департамент миграции захочет повысить вероятность поимки контрабандистов, его сотрудникам придется обыскивать большее число людей. Если департамент захочет понизить вероятность - можно обыскивать меньшее число людей. Таким образом, манипулируя вероятностями, департамент регулирует эффективность протокола при поимке контрабандистов. Аналогичным образом работает протокол подписи «вслепую». Боб получает большую пачку различных маскированных документов. Он откроет, например, все документы, кроме одного, а затем подпишет этот оставшийся документ. Маскированный документ можно представить себе как документ, запечатанный в конверт. Процесс маскировки документа можно рассматривать как вложение документа в конверт, а процесс удаления маскирующего множителя - как вскрытие конверта. Когда документ запечатан в конверт, никто не может его прочитать. Документ подписывается с помощью листа копировальной бумаги, вложенного в конверт: при подписании конверта копировальная бумага переносит подпись на сам документ. В следующем сценарии мы рассмотрим работу группы агентов контрразведки. Их личности настолько засекречены, что их не знает даже само Агентство крнтрразведки. Директор Агентства хочет вручить каждому агенту подписанный документ следующего содержания: «Владелец этого подписанного документа, (укажите псевдоним агента), обладает полным дипломатическим иммунитетом». Агентство не может просто так раздать подписанные документы, поскольку каждый агент использует собственный список псевдонимов. Агенты не хотят передавать свои псевдонимы агентству, поскольку противник может взломать компьютер контрразведки. С другой стороны, Агентство не желает вслепую подписывать документы, предоставляемые агентами. Действительно, сообразительный агент может прислать примерно такое сообщение: «Агент (имя) вышел в отставку, с ежегодной пенсией миллион долларов. Подпись: Президент». В таком случае могут помочь подписи «вслепую». Предположим, что агенты использует по 10 псевдонимов, которые выбраны ими самостоятельно и никому более неизвестны. Допустим также, что агентам безразлично, под каким именем они получат дипломатический иммунитет. Для определенности пусть компьютер Агентства называется АЛИСА (Автоматическая Логическая Интеллек¬ туальная Система Агентства), а наш агент - БОБ (Банановые Операции в Боготе). 1) БОБ генерирует п документов, дающих ему дипломатический иммунитет, используя в каждом особый псевдоним. 2) БОБ маскирует каждый документ особым маскирующим множителем. 3) БОБ отсылает п документов АЛИСЕ. 4) АЛИСА произвольно отбирает п -1 документов и просит БОБА прислать маскирующий множитель для каждого из отобранных документов. 5) БОБ отправляет АЛИСЕ соответствующие маскирующие множители.
ГЛАВА 5. Развитые протоколы 139 6) АЛИСА открывает п - 1 документов (удаляет маскирующий множитель) и убеждается в их корректности, т.е., например, что это - не липовые пенсионные удостоверения. 7) АЛИСА подписывает оставшийся документ и отсылает его БОБУ. 8) БОБ удаляет маскирующий множитель и узнает свой новый псевдоним: «Кровавый шрам». Под этим именем подписанный документ предоставляет ему дипломатический иммунитет. Этот протокол надежно защищен от жульничества агента БОБА. Чтобы смошенничать, он должен точно угадать, какой именно документ АЛИСА не будет проверять. Вероятность этого не слишком велика - 1 шанс из п. АЛИСА знает это и без колебаний подписывает документ, который не сможет проверить. По отношению к этому документу рассматриваемый протокол полностью совпадает с предыдущим протоколом совершенно слепой подписи, сохраняя все свойства анонимности. Чтобы снизить вероятность мошенничества агента БОБ можно использовать такой трюк. На этапе 4 АЛИСА произвольно отбирает для проверки п/2 документов, и на этапе 5 БОБ присылает ей соответствующие маскирующие множители. На этапе 7 АЛИСА перемножает друг с другом все непроверенные документы и подписывает получившийся крупный документ. На этапе 8 БОБ удаляет все маскирующие множители. Подпись АЛИСЫ будет достоверной, только если ею подписано произведение п/2 идентичных документов. Чтобы словчить, агенту БОБУ нужно точно угадать, какое подмножество документов станет проверять АЛИСА. Вероятность успеха гораздо ниже, чем вероятность угадать единственный документ, который АЛИСА не проверяет. БОБ может прибегнуть к другому обману. Он может создать два разных документа, один из которых АЛИСА подписать согласна, а другой - нет. Затем он может попытаться подобрать два разных маскирующих множителя, которые преобразуют указанные документы так, что маскированные документы будут одинаковы. Таким образом, если АЛИСА захочет проверить документ, БОБ передаст ей маскирующий множитель, преобразующий документ к совершенно невинному виду. Если АЛИСА подпишет документ без просмотра, БОБ применит тот маскирующий множитель, который преобразует маскированный подписанный документ в документ, являющийся целью мошенничества. Однако, хотя теоретически это и возможно, математические средства конкретных алгоритмов делает пренебрежимо малой вероятность подбора агентом БОБОМ такой пары. На деле она может оказаться столь же низкой, что и вероятность самостоятельного создания БОБУ необходимой подписи под произвольным документом. Этот вопрос обсуждается в разделе 23.12. Патенты Владельцем патентов некоторых версий подписей «вслепую» является Чаум (см. табл. 5.1). Таблица 5.1. Патенты Чаума на слепые подписи Номер патента США Дата Название 4759063 19.07.88 ВНпб БщпаШге 8уз1:ет5 [323] (Системы подписей вслепую)
140 Прикладная криптография Номер патента США Дата Название 4759064 19.07.88 ВНпс1 Шап1ю1ра1ес1 БщпаШге 8у$1етз [324] (Системы слепых неожиданных подписей) 4914698 03.03.90 Опе-8Ьо^ ВНпб 81§па1иге 8уз1ет5 [326] (Системы слепых подписей, показываемых однократно) 4949380 14.08.90 ЯеШгпес1-Уа1ие ВПпб 81§па1иге 8уз1ет5 [328] (Системы слепых подписей с возвращаемым значением) 4991210 05.02.91 ШргесИсШЫе ВНпб 8щпа1иге 8уз(етз [331] (Системы слепых непредсказуемых подписей) 5.4. Личностная криптография с открытым ключом Предположим, Алисе необходимо отправить Бобу секретное сообщение. По каким-то причинам она не желает запрашивать открытый ключ Боба у сервера распределения ключей, проверять подлинность подписи доверенной третьей стороны на сертификате открытого ключа Боба и даже хранить открытый ключ Боба в своем компьютере. Она хочет только отправить ему секретное сообщение. Эту проблему можно решить с помощью личностных криптосистем, иногда называемых системами с неинтерактивным разделением ключей (Иоп-Мегасбуе Кеу 8Ьапп§, 1Ч1К8) [1422]. В основе открытого ключа Боба лежит его имя и сетевой адрес (или номер телефона, почтовый адрес и т.д.). В обычной криптографии с открытым ключом Алисе понадобится подписанный сертификат, связывающий личность Боба с его открытым ключом. В личностной криптографии личность Боба определяется самим открытым ключом. Эта действительно смелая идея почти идеально подходит для почтовых систем. Действительно, чтобы послать Бобу секретное сообщение, Алисе достаточно знать только его адрес. Это обстоятельство делает криптографию настолько прозрачной, насколько это вообще возможно. Система основана на предоставлении Трентом закрытых ключей пользователям в зависимости от их личности. При компрометации закрытого ключа Алисы, для получения нового ключа ей придется изменить один из аспектов своей личности. Таким образом, возникает очень важная проблема проектирования системы так, чтобы недобросовестные пользователи не могли, по сговору, подделывать ключи. На разработку математического аппарата подобных схем (главным образом в Японии) затрачено немало усилий. Обеспечение их надежности оказалось чудовищно сложной задачей. Многие предложенные решения включают выбор Трентом случайного числа для каждого пользователя. Однако, по моему мнению, это противоречит самому смыслу таких систем. В качестве личностных, можно использовать ряд алгоритмов, обсуждаемых в главах 19 и 20. Дополнительную информацию об алгоритмах и криптосистемах можно найти в [191, 1422, 891, 1022, 1515, 1202, 1196, 908, 692, 674, 1131, 1023, 1516, 1536, 1544, 63, 1210, 314, 313, 1545, 1539, 1543, 933, 1517, 748, 1228]. В [1035] описан алгоритм, в котором не используются случайные числа. Система, обсуждаемая в [1546, 1547, 1507], уязвима к атаке с использованием подобранного
ГЛАВА 5. Развитые протоколы 141 открытого ключа, то же самое относится к системе, предложенной в качестве >ЛК8-ТА8 [1542, 1540, 1541, 993, 375, 1538]. Честно говоря, все, что предложено до сих пор, нельзя назвать одновременно и практичным, и надежным. 5.5. Передача с забыванием Криптограф Боб отчаянно пытается разложить на множители 500-разрядное число п. Боб знает, что это число - произведение пяти 100-разрядных чисел, но больше ничего. (У Боба большие проблемы. Если он не сможет восстановить ключ, ему придется работать сверхурочно и пропустить еженедельный мысленный покер с Алисой). Что бы вы думали? И тут появляется Алиса: «Я случайно узнала один из множителей числа», - говорит она, - «и я продам его тебе за $100. То есть по доллару за бит». Чтобы доказать серьезность предложения, Алиса использует схему вручения битов, и вручает каждый бит по отдельности. Боб заинтересован, но у него есть только $50. Алиса не хочет сбавлять цену, и предлагает продать Бобу половину битов за полцены. «Это значительно облегчит работу», - замечает Алиса. «Откуда мне знать, что твое число - действительно множитель п? Вот если ты покажешь мне число и позволишь проверить, что оно действительно множитель, я согласен», - говорит Боб. Переговоры заходят в тупик. Алиса не может доказать Бобу, что знает множитель п, не раскрыв его. Боб не желает покупать 50 битов, которые вполне могут оказаться бесполезными. Эта история, заимствованная у Джо Килиана (1ое КШап) [831], вводит концепцию передачи с забыванием (оЫМоиз 1гапфг). Алиса пересылает Бобу группу сообщений. Боб принимает некоторое подмножество этих сообщений, но Алиса не знает, какие именно сообщения принял Боб. Однако это не решает проблему полностью. Когда Боб получит случайную половину битов, Алисе придется убеждать его, что она послала часть множителя п, используя доказательство с нулевым разглашением. В приведенном ниже протоколе Алиса отсылает Бобу одно из двух сообщений. Боб принимает одно из них, но Алиса не знает, какое именно. 1) Алиса генерирует две пары открытый ключ/закрытый ключ - всего четыре ключа. Оба открытых ключа она посылает Бобу. 2) Боб выбирает ключ симметричного алгоритма (например, ОЕ8). Затем он выбирает один из открытых ключей Алисы и шифрует им свой ключ ОЕ8. Зашифрованный ключ он отсылает Алисе, не сообщая, какой из ее открытых ключей он использовал для шифрования. 3) Алиса дважды расшифровывает ключ Боба с помощью своей пары закрытых ключей. Один из ключей подойдет и успешно расшифрует ключ ОЕ8, присланный Бобом. В другом случае она использует неправильный ключ и получает бессмысленную строку битов, которая, тем не менее, похожа на случайный ключ ОЕ8. Так как ей неизвестен правильный открытый текст, Алиса не сумеет выяснить, какой из ключей достоверен.
142 Прикладная криптография 4) Алиса шифрует одно свое сообщение одним ключом (настоящим), вычисленным ею на предыдущем этапе, а второе - вторым (бессмысленным), и отправляет оба сообщения Бобу. 5) Боб принимает сообщения Алисы, одно из которых зашифровано правильным ключом ЭЕ8, а другое - бессмысленным ключом ЭЕ8. Когда Боб расшифрует каждое сообщение своим ключом ЭЕ8, он сможет прочитать одно из них, а второе окажется полной ерундой. Теперь у Боба есть два сообщения Алисы, причем Алиса не знает, какое из них Бобу удалось успешно расшифровать. К сожалению, если исполнение протокола прекратится на этом этапе, Алиса сможет обмануть Боба. Необходим дополнительный этап. 6) По завершению протокола, когда оба возможных результата передачи станут известны, Алиса должна передать Бобу свои закрытые ключи, чтобы он убедился в отсутствии обмана. Как-никак, на этапе 4 Алиса могла зашифровать одно и то же сообщение обоими ключами. Разумеется, после этого Боб сможет узнать и второе сообщение. Этот протокол надежно защищен от вскрытия Алисой, поскольку у нее нет возможности узнать, какой из двух ключей ЭЕ8 подлинный. Для шифрования своих сообщений она использует оба ключа, однако вплоть до этапа 6 Боб может успешно расшифровать только один из них. Протокол защищен и от вскрытия Бобом, поскольку вплоть до этапа 6 он не сможет получить закрытый ключ Алисы, чтобы определить ключ ЭЕ8, которым зашифровано второе сообщение. На первый взгляд этот протокол может показаться просто усложненным методом бросков монетки по телефону, однако он нашел широкое применение в более сложных протоколах. Разумеется, ничто не мешает Алисе отправить Бобу два абсолютно бессмысленных сообщения: «Мяу-мяу» и «Ты сосунок». Этот протокол гарантирует, что Алиса перешлет Бобу одно из двух сообщений; но нет никаких гарантий, что Боб захочет принять любое из них. В литературе можно встретить и другие протоколы передачи с забыванием. Некоторые из них неинтерактивны - Алиса публикует оба своих сообщения, а Боб может прочитать только одно из них. Он может сделать это когда угодно, не связываясь с Алисой [105]. На практике протокол передачи с забыванием не используется. Однако это понятие служит важным элементом построения других протоколов. И хотя известно множество типов передачи с забыванием, например: я знаю два секрета, но вы получаете один, я знаю п секретов, но вы получаете один, я знаю один секрет, который вы получаете с вероятностью 1/2 и т.д. - все они эквивалентны [245, 391, 395]. 5.6. Подписи с забыванием Честно говоря, я не могу сказать, какой от них толк, но известны два типа подписей с забыванием [346]: 1) У Алисы есть п разных сообщений. Из них Боб может отобрать для подписания Алисой только одно. У Алисы нет никакой возможности узнать, какое именно сообщение она подписала.
ГЛАВА 5. Развитые протоколы 143 2) У Алисы есть единственное сообщение. Боб может выбрать один из п ключей, который Алиса должна использовать для подписания сообщения, причем Алиса не сумеет определить, какой ключ она использовала. Эта идея неплоха; я уверен, что где-нибудь она найдет применение. 5.7. Одновременное подписание контракта Подписание контракта через посредника Алиса и Боб хотят заключить контракт. На словах они договорились, но никто не хочет ставить свою подпись, пока не поставлена подпись партнера. При личной встрече это несложно - оба подписывают контракт вместе. Чтобы сделать это на расстоянии, они могут воспользоваться услугами посредника. 1) Алиса подписывает одну копию контракта и отправляет ее Тренту. 2) Боб подписывает одну копию контракта и отправляет ее Тренту. 3) Трент отправляет сообщения Алисе и Бобу, извещающие, что второй партнер подписал контракт. 4) Алиса подписывает две копии контракта и отправляет их Бобу. 5) Боб подписывает обе копии контракта, одну оставляет себе, а вторую отправляет Алисе. 6) Алиса и Боб извещают Трента, что у каждого из них есть копии контракта, подписанные обеими сторонами. 7) Трент уничтожает обе свои копии контракта, с единственной подписью под каждым. Поскольку Трент не позволяет мошенничать обеим сторонам, этот протокол работает. Если на этапе 5 Боб попытается отречься от подписи под контрактом, Алиса может обратиться к Тренту за копией контракта, уже подписанной Бобом. Если на этапе 4 Алиса попытается отречься от подписи под контрактом, Боб может поступить точно так же. Когда на этапе 3 Трент известит о получении обоих контрактов, Алиса и Боб будут знать, что контракт уже подписан другим партнером. Если на этапах 1 и 2 Трент не получит оба контракта, он уничтожит свою копию, и ни одна сторона не будет связана контрактом. Одновременное подписание контракта без посредника при личной встрече При личной встрече Алиса и Боб могут подписать контракт следующим образом [1244]: 1) Алиса подписывается первой буквой своего имени и отдает контракт Бобу. 2) Боб подписывается первой буквой своего имени и отдает контракт Алисе. 3) Алиса подписывается второй буквой своего имени и отдает контракт Бобу. 4) Боб подписывается второй буквой своего имени и отдает контракт Алисе.
144 Прикладная криптография 5) И т.д., пока Алиса и Боб не подпишутся полностью своими именами. Если пренебречь очевидной проблемой протокола (имя Алисы длиннее имени Боба), он работает удовлетворительно. Подписавшись только одной буквой имени, Алиса знает, что никакой судья не заставит ее исполнять контракт. В то же время, надписанная буква - это проявление доброй воли, на что Боб отвечает аналогичным действием. Когда каждая сторона подпишется несколькими буквами имени, судья, вероятно, может решить, что контракт подписан обеими сторонами. Хотя, если вдуматься, ситуация весьма неопределенная. Разумеется, факт, что контракт не вступает в силу после подписания несколькими буквами, столь же очевиден, как и то, что он вступает в силу после полного подписания сторонами своими именами. Но на каком этапе протокола стороны оказываются связанными контрактом? После подписания половиной своего имени? Двумя третями? Тремя четвертями? Поскольку ни Алиса, ни Боб, точно не представляют, с какого момента контракт вступает в силу, каждый из них на протяжении всего протокола опасается, что для него/нее контракт уже вступил в силу. Нет такого этапа протокола, когда Боб может заявить: «Вы подписались четырьмя буквами, а я только тремя. Вы связаны контрактом, а я - нет». У Боба нет причин прерывать исполнение протокола. Более того, чем продолжительнее исполнение протокола сторонами, тем с большей вероятностью суд решит, что контракт вступил в силу. И опять же, нет никакой причины прерывать протокол. В конечном счете, оба хотели подписать контракт, просто никто не хотел подписываться первым. Одновременное подписание контракта без посредника и личной встречи Этот протокол сталкивается с той же неопределенностью [138]. Алиса и Боб поочередно - «детскими шажками» - подписывают контракт. По ходу протокола Алиса и Боб обмениваются рядом подписанных сообщений такого вида: «Согласен, что связан контрактом с вероятностью р». Получатель сообщения может предъявить его суду, и судья, с вероятностью р, признает контракт действительным. 1) Алиса и Боб согласуют дату завершения протокола подписания контракта. 2) Алиса и Боб договариваются о величине приращения вероятности, с которой согласны мириться. Скажем, Алиса может заявить, что ее вероятность быть связанной контрактом не должна превышать более чем на 2% вероятность Боба. Обозначим разницу Алисы как а, разницу Боба - как Ь. 3) Алиса отправляет Бобу подписанное сообщение с р~а. 4) Боб посылает Алисе подписанное сообщение с р = а + Ь. 5) Пусть р - это вероятность, указанная в сообщении, полученном Алисой от Боба на предыдущем этапе. Алиса отсылает Бобу подписанное сообщение с р\ равной р+а или 1, смотря, что меньше.
ГЛАВА 5. Развитые протоколы 145 6) Пусть р - это вероятность, указанная в сообщении, полученном Бобом от Алисы на предыдущем этапе. Боб отсылает Алисе подписанное сообщение с р\ равной р+Ь или 1, в зависимости, что меньше. 7) Алиса и Боб продолжают исполнение этапов 5 и 6 пока оба не получат сообщения с р = 1 или до наступления даты, согласованной на этапе 1. По мере исполнения протокола вероятность согласия Алисы и Боба связать себя контрактом постоянно возрастает. Например, Алиса может установить свое а равным 2%, а Боб свое Ъ - равным 1%. (Неплохо бы им выбрать приращения побольше, а то мы застрянем на этом месте). В первом сообщении Алиса сообщает, что связана контрактом с вероятностью 2%. Боб может ответить, что связан контрактом с вероятностью 3%. В следующем сообщении Алиса может утверждать, что связана контрактом с вероятностью 5% и т.д., пока вероятности обоих сторон не достигнут 100%. Если Алиса и Боб завершают протокол к согласованной дате, все прекрасно. В противном случае любая сторона может предъявить контракт суду вместе с последним подписанным сообщением другой стороны. Судья, прежде чем изучить контракт, выбирает произвольное число от 0 до 1. Если это число меньше вероятности, указанной второй стороной, обе стороны связаны контрактом. Если же число превышает вероятность, указанную второй стороной, контракт не связывает стороны. (Затем судья сохраняет использованное число на случай решения другого конфликта, относящегося к тому же контракту). Именно это и означает «связанный контрактом с вероятностью р». Здесь приведен базовый протокол, однако в нем возможны дополнительные усложнения. Так, судья может принять решение в отсутствие одной из сторон. Решение судьи связывает контрактом либо обе стороны, либо ни одну из них. Ситуация, когда одна сторона связывается контрактом, а вторая - нет, невозможна. Более того, протокол завершается, как только одна из сторон соглашается на сколь угодно малое превышение вероятности быть связанной контрактом, чем другая. Одновременное подписание контракта без посредника средствами криптографии В этом криптографическом протоколе используется тот же принцип «детских шажков» [529]. Для определенности мы используем алгоритм ЭЕ8, хотя можно принять любой другой симметричный алгоритм. 1) Алиса и Боб произвольно выбирают 2п разбитых на пары ключей ЭЕ8. В парах нет ничего особенного, просто такой способ группировки необходим для данного протокола. 2) Алиса и Боб генерируют п пар сообщений, Д и Кь например, «Это левая половина моей г-ой подписи» и «Это правая половина моей 1-ой подписи». Идентификатор / имеет значения от 1 до п. Кроме того, в каждое сообщение можно включить цифровую подпись контракта и метку времени. Контракт полагается подписанным, если другая сторона может представить обе половины (Д и К,) одной пары подписей. 3) Алиса и Боб зашифровывают свои пары сообщений парами ключей ЭЕ8, левое сообщение - левым ключом пары, а правое - правым.
146 Прикладная криптография 4) Алиса и Боб обмениваются пакетами из 2п зашифрованных сообщений. Для каждого сообщения указывается, к какой паре оно относится. 5) Алиса и Боб отправляют друг другу по протоколу передачи с забыванием любой ключ из каждой пары ключей. Т.е. Алиса отправляет Бобу либо ключ шифрования левого сообщения, либо ключ шифрования правого сообщения. Боб поступает точно так же. Они могут отправлять свои половины поочередно, либо сначала кто-то может выслать 100 ключей, а затем ключи отсылает другая сторона. Порядок не имеет значения. Теперь как у Алисы, так и у Боба есть по одному ключу каждой пары, но ни одна сторона не знает, какие половины получил партнер. 6) Алиса и Боб с помощью полученных ключей расшифровывают те половины сообщений, которые поддаются расшифровке. Затем они убеждаются в достоверности расшифрованных сообщений. 7) Алиса и Боб отправляют друг другу первые биты всех 2п ключей ОЕ8. 8) Алиса и Боб повторяют этап 7 для вторых битов всех 2п ключей БЕ8, затем третьих битов и т.д., вплоть до отсылки всех битов всех ключей ЭЕ8. 9) Алиса и Боб расшифровывают оставшиеся половины сообщений, после чего контракт считается подписанным. 10) Алиса и Боб обмениваются закрытыми ключами, использованными на этапе 5 в протоколе передачи с забыванием, и каждый убеждается в честности партнера. Зачем нужно Алисе и Бобу заниматься этой долгой работой? Допустим, Алиса хочет смошенничать. Смотрите, что у нее получится. На этапах 4 и 5 Алиса могла бы нарушить протокол, послав Бобу бессмыслицу. На этапе 6 Боб обнаружил бы обман при попытке расшифровать полученные половины. Тогда Боб может безо всяких последствий прервать протокол, прежде чем Алиса сможет расшифровать любую пару сообщений Боба. Даже если Алиса - весьма ловкая особа, она может разрушить только половину протокола. Она могла бы отправить одну половину каждой пары подлинную, а вместо второй прислать абракадабру. Вероятность получения Бобом подлинной половины составит всего 50%, а потому мошенничество Алисы удастся в половине случаев, но только для одной пары. Если бы использовались только две пары, это мошенничество удалось бы в 25% случаев. Именно поэтому п должно быть достаточно велико. Если Алиса должна точно угадать результат исполнения п протоколов передачи с забыванием, вероятность ее успеха составляет 1 шанс из 2” . Если «=10, у Алисы есть всего 1 шанс из 1024 обмануть Боба. Кроме того, на этапе 8 Алиса может послать Бобу случайные биты. Возможно, Боб не узнает, что Алиса прислала ему случайные биты, пока не примет весь ключ и попытается расшифровать половины сообщения. Но снова на стражу Боба встает теория вероятностей. Он уже принял половину ключей, причем Алиса не знает, какую именно. Если же п достаточно велико, Алиса, скорее всего, пришлет ему бессмысленный бит для ключа, который Боб уже принял, и он немедленно обнаружит мошенничество. Алиса может исполнять этап 8 до тех пор, пока не примет число битов ключей, достаточное для лобового вскрытия, а затем прервать передачу битов. Длина ключа БЕ8 составляет 56 бит. Если Алиса примет 40 бит из 56 бит, для дешифровки сообщения ей
ГЛАВА 5. Развитые протоколы 147 придется перебрать 216, или 65536, ключей, а эта задача, несомненно, посильна современным компьютерам. Однако Боб получит ровно столько же битов ключей Алисы (в худшем случае, на один бит меньше), следовательно, он сможет поступить точно так же. У Алисы нет другого выбора, кроме продолжения исполнения протокола. Суть протокола в том, что Алиса вынуждена играть честно, поскольку вероятность обмануть Боба слишком мала. По завершении протокола у обеих сторон есть п подписанных пар сообщений, любого из которых достаточно для создания достоверной подписи. У Алисы есть только один способ смухлевать - на этапе 5 отправить Бобу одинаковые сообщения. Боб не сможет обнаружить мошенничество вплоть до завершения протокола, но затем Боб может в судебном порядке уличить Алису с помощью записи протокола. У протоколов описанного типа есть два слабых места [138]. Во-первых, проблема возникает, если вычислительные возможности одной стороны значительно больше, чем у другой. Например, если Алиса может выполнить лобовое вскрытие быстрее Боба, на этапе 8 она скоро прекратит передачу битов и самостоятельно восстановит ключи Боба. Боб, которому для подобных действий просто не хватит времени, останется в дураках. Во-вторых, проблема возникает, если одна из сторон преждевременно прекращает исполнение протокола. Если Алиса прервет исполнение протокола, оба столкнутся с одинаковыми вычислительными проблемами, но у Боба просто не хватит времени. Например, если в контракте оговорено, что Алиса должна сделать что-то через неделю, но она прерывает протокол в тот момент, когда Бобу для вычисления ее подписи потребуется целый год расчетов, возникает проблема. В данном случае реальное осложнение обусловлено краткосрочностью контракта, не позволяющей обеим сторонам завершить процесс подписания. Эти проблемы актуальны также для протоколов, описанных в разделах 5.8 и 5.9. 5.8. Заказная электронная почта С небольшими поправками протокол одновременной передачи с забыванием, использованный для подписания контракта, используется в заказной электронной почте [529]. Допустим, Алисе необходимо послать Бобу сообщение, но она хочет, чтобы он прочитал его, только расписавшись в получении. В обыденной жизни это обеспечивается хмурыми почтовыми служащими, но то же самое можно сделать средствами криптографии. Впервые эту проблему рассмотрел Уитфилд Диффи ОУЫШеМ ЭЖе) в [490]. На первый взгляд, проблему может решить протокол одновременного подписания контракта. Алиса просто шифрует свое сообщение с помощью ключа ЭЕ8. Ее половина протокола имеет примерно такой вид: «Это левая половина ключа ЭЕ8: 32Г5», а половина протокола Боба - такой: «Это левая половина моей квитанции». Все остальное остается прежним. Чтобы понять, почему эта схема не будет работать, вспомните, что протокол основан на том, что передача с забыванием на этапе 5 предотвращает мошенничество обеих сторон. Оба партнера знают, что отправили другой стороне достоверную половину, но никто не знает, какую именно. На этапе 8 они не мошенничают, потому что шансы выйти сухим из
148 Прикладная криптография воды чрезвычайно малы. Если Алиса отправит Бобу не сообщение, а половину ключа БЕ8, на этапе 6 Боб не сможет проверить корректность ключа ЭЕ8. Алиса же может проверить достоверность квитанции Боба, поэтому Боб вынужден быть честным. Алисе нетрудно отослать Бобу недостоверный ключ, причем он обнаружит это, когда его квитанция будет уже у Алисы. Вот незадача, Боб. Для решения этой проблемы необходима некоторая коррекция протокола: 1) Алиса шифрует свое сообщение, используя случайный ключ ЭЕ8, и отсылает его Бобу. 2) Алиса генерирует п пар ключей ЭЕ8. Первый ключ каждой пары генерируется случайным образом, а второй представляет собой результат операции ХОЯ первого ключа и ключа шифрования сообщения. 3) Алиса шифрует сообщение-заглушку с помощью каждого из своих 2п ключей. 4) Алиса отсылает Бобу весь пакет шифрованных сообщений, удостоверившись, что Боб знает, какие сообщения какими половинами каких пар являются. 5) Боб генерирует п пар случайных ключей БЕ8. 6) Боб создает пару сообщений, которые указывают достоверную квитанцию. Например, сообщения могут гласить: «Это левая половина моей квитанции» и «Это правая половина моей квитанции» с включением какой-нибудь строки случайных битов. Боб создает и нумерует п пар квитанций. Как и в предыдущем протоколе, квитанция считается достоверной, если Алиса может предъявить обе половины квитанции (с одинаковым номером) и все ее ключи шифрования. 7) Боб шифрует каждую пару своих сообщений парами ключей ЭЕ8: пару / сообщений - парой / ключей, левое сообщение - левым ключом пары, а правое - правым ключом пары. 8) Боб отсылает Алисе свой пакет зашифрованных сообщений, убедившись, что Алиса знает, какие сообщения какими половинами каких пар являются. 9) Алиса и Боб обмениваются всеми парами ключей по протоколу передачи с забыванием. Т.е. Алиса отправляет Бобу либо ключ шифрования левого сообщения, либо ключ шифрования правого сообщения. Боб поступает точно так же. Они могут посылать свои половины по очереди, или сначала кто-то может послать все п сообщений, а потом это сделает другой - это несущественно. Теперь как у Алисы, так и у Боба есть по одному ключу каждой пары, причем оба не знают, какие половины получил партнер. 10) Алиса и Боб с помощью полученных ключей расшифровывают те половины сообщений, которые поддаются расшифровке. Затем они убеждаются в достоверности расшифрованных сообщений. 11) Алиса и Боб пересылают друг другу первые биты всех 2п ключей ЭЕ8. (Если их тревожит, что Ева сможет перехватить эти почтовые сообщения, обмен битами следует шифровать). 12) Алиса и Боб повторно исполняют этап 11 для вторых битов всех 2п ключей ЭЕ8, затем третьих битов и т.д., вплоть до передачи всех битов всех ключей ЭЕ8.
ГЛАВА 5. Развитые протоколы 149 13) Алиса и Боб расшифровывают остальные половины сообщений. Алиса получает от Боба достоверную квитанцию, а Боб может выполнить операцию ХОЯ над любой парой ключей и восстановить ключ, которым зашифровано исходное сообщение. 14) Алиса и Боб обмениваются закрытыми ключами, использованными в протоколе передачи с забыванием, и убеждаются в честности партнера. По сравнению с протоколом подписания контракта, этапы 5—8 для Боба и 9—12 для обеих сторон, остались неизменными. Различие - в сообщениях-заглушках, переда¬ ваемых Алисой. На этапе 10 они позволяют Бобу проверить достоверность передачи с забыванием Алисы, что вынуждает Алису сохранять честность на этапах 11—13. И, как в протоколе одновременного подписания контракта, для завершения протокола нужны обе половины одного из сообщений Алисы. 5.9. Одновременный обмен секретами Допустим, Алисе известен секрет А, а Бобу - секрет В. Алиса согласна сообщить Бобу А, если он откроет ей В. Боб согласен сообщить Алисе В, если она откроет ему А. Приведенный ниже протокол, подслушанный на школьном дворе, работать не будет: 1) Алиса: «Я расскажу, если ты расскажешь первым». 2) Боб: «А я расскажу, если ты расскажешь первой». 3) Алиса: «Нет, ты первый». 4) Боб: «Ну, ладно». (Боб шепчет на ухо Алисе). 5) Алиса: «Ха-ха, а я тебе не скажу». 6) Боб: «Так нечестно». Этот обмен секретами можно сделать честным средствами криптографии. Оба предыдущих протокола - это реализации общего протокола, который и позволит Алисе и Бобу обменяться секретами одновременно [529]. Чтобы не повторять весь протокол полностью, я укажу необходимые изменения протокола заказной почты. Алиса исполняет этапы 1—4, используя А в качестве сообщения. Боб исполняет эти же действия, используя в качестве сообщения В. На этапе 9 Алиса и Боб исполняют передачу с забыванием, на этапе 10 расшифровывают те половины, которые поддадутся расшифровке, и выполняют необходимые итерации на этапах 11 и 12. (Чтобы обеспечить защиту от Евы, они должны шифровать сообщения). Наконец, Алиса и Боб расшиф¬ ровывают оставшиеся половины пар сообщения и выполняют операцию ХОК над любой парой ключей, чтобы восстановить ключи, которыми зашифрованы исходные сообщения. Этот протокол позволяет Алисе и Бобу обмениваться секретами одновременно, однако не гарантирует ценность переданных секретов. Скажем, Алиса может пообещать Бобу план лабиринта Минотавра, а прислать схему Бостонского метро. Боб получит только тот секрет, который вышлет ему Алиса. В [1286, 195, 991, 1524, 705, 753, 259, 358, 415] описаны некоторые другие протоколы.
ГЛАВА 6. Эзотерические протоколы 6.1. Тайное голосование Реализация компьютеризованной системы всеобщих выборов невозможна без протокола, который предотвращает фальсификацию выборов и защищает тайну голосования. Идеальный протокол должен обладать, по крайней мере, следующими шестью свойствами: 1. Участвовать в выборах могут только граждане, имеющие право голоса. 2. Каждый избиратель может голосовать только один раз. 3. Никто не может установить, за кого проголосовал каждый избиратель. 4. Никто не может сделать дубликат бюллетеня с волеизъявлением любого избирателя. (Это самое трудное требование). 5. Никто не может изменить результат голосования любого избирателя. 6. Каждый избиратель может проверить, что его бюллетень учтен при подведении итогов голосования. Кроме того, некоторые схемы голосования включают еще одно требование: 7. Всем известно, кто участвовал в голосовании, а кто нет. Прежде чем описывать сложные протоколы, удовлетворяющие этим требованиям, рассмотрим несколько упрощенных протоколов. Упрошенный протокол голосования 1 1) Каждый избиратель шифрует свой бюллетень открытым ключом Центральной избирательной комиссии (ЦИК). 2) Каждый избиратель отсылает в ЦИК свой бюллетень. 3) ЦИК расшифровывает бюллетени, подводит итоги и публикует результаты выборов. Этот протокол буквально кишит недостатками. ЦИК не имеет представления, откуда получены бюллетени, и даже посланы ли они правомочными избирателями. Комиссия не может установить, не голосовали ли правомочные избиратели более одного раза. Положительная сторона протокола- невозможность подмены результата голосования избирателей. Однако никто и не станет этим заниматься- при такой схеме, чтобы добиться нужных результатов выборов, гораздо проще проголосовать повторно. Упрошенный протокол голосования 2 1) Каждый избиратель подписывает бюллетень своим закрытым ключом. 2) Каждый избиратель шифрует свой бюллетень открытым ключом ЦИК.
152 Прикладная криптография 3) Каждый избиратель отсылает в ЦИК свой бюллетень. 4) ЦИК расшифровывает бюллетени, проверяет подлинность подписей, подводит итоги и публикует результаты голосования. Этот протокол удовлетворяет требованиям 1 и 2. Действительно, голосовать могут только правомочные избиратели, причем только однократно- ЦИК может записать бюллетени, принятые на этапе 3. Каждый бюллетень подписан закрытым ключом избирателя, поэтому ЦИК знает, кто проголосовал, а кто нет, а также сколько раз голосовал каждый избиратель. Если поступает бюллетень, не подписанный право¬ мочным избирателем, либо бюллетень, подписанный избирателем, который уже проголосовал, ЦИК игнорирует этот бюллетень. Кроме того, благодаря цифровой подписи, никто не может подменить чужой бюллетень, даже если перехватит его на этапе 2. Очевидный недостаток протокола заключается в том, что по цифровой подписи бюллетеня ЦИК может установить, кто и как проголосовал. Конечно, шифрование бюллетеней открытым ключом ЦИК помешает перехвату сообщений по ходу протокола, определению результатов голосования и имен избирателей. Однако вам придется всецело довериться ЦИК. Это аналогично ситуации, когда в кабине для голосования через ваше плечо заглядывает электронный контролер. Ниже приведены два примера, демонстрирующие сложность обеспечения соответствия хотя бы двум первым требованиям к протоколу тайного голосования. Голосование через подписи «вслепую» Мы должны каким-то образом отделить бюллетень от избирателя и в тоже время сохранить процедуру идентификации. Этого можно добиться с помощью протокола подписи «вслепую». 1) Каждый избиратель генерирует 10 наборов сообщений. В каждый набор включается достоверный бюллетень для каждого возможного итога голосования. Скажем, избиратель должен только ответить «за» или «против». Тогда каждый набор сообщений состоит из двух бюллетеней - одного для ответа «за», а другого - для «против». Кроме того, для каждого сообщения генерируется случайный идентификационный номер, достаточно большой, чтобы избежать путаницы с другими избирателями. Номер тоже включается в бюллетень. 2) Каждый избиратель маскирует все сообщения (см. раздел 5.3) и посылает их в ЦИК. 3) ЦИК проверяет по своей базе данных, что избиратель ранее не присылал на подписание свои маскированные бюллетени. Далее ЦИК открывает 9 наборов из 10 и проверяет корректность оформления бюллетеней (для этого ЦИК сообщает избирателю, какие 9 бюллетеней он отобрал, и тот присылает в ЦИК соответст¬ вующие маскирующие множители). Затем ЦИК подписывает оставшийся (десятый) набор бюллетеней и отсылает его обратно избирателю, сохранив имя избирателя в своей базе данных. 4) Избиратель демаскирует сообщения и открывает набор бюллетеней, подписанный ЦИК. (Эти бюллетени подписаны, но не шифрованы, поэтому избиратель сразу увидит, какой бюллетень гласит «за», а какой - «против»).
ГЛАВА 6. Эзотерические протоколы 153 5) Каждый избиратель выбирает любой бюллетень (о, демократия!) и шифрует его открытым ключом ЦИК. 6) Избиратель отсылает свой бюллетень. 7) ЦИК расшифровывает бюллетень, проверяет подлинность подписи, проверяет по своей базе данных уникальность идентификационного номера, сохраняет порядковый номер и включает его в итоги голосования. Затем ЦИК публикует результаты выборов вместе со всеми порядковыми номерами и соответствующим волеизъявлением. Злонамеренный избиратель, назовем его Мэллори, не сможет перехитрить эту систему. Протокол слепой подписи гарантирует уникальность каждого поданного бюллетеня. Если Мэллори попытается прислать дважды один и тот же бюллетень, на этапе 7 ЦИК обнаружит повторение порядкового номера, и не включит второй бюллетень в итоги голосования. Если на этапе 2 Мэллори попытается получить несколько бюллетеней, на этапе 3 ЦИК обнаружит и эту хитрость. Мэллори не может генерировать собственные бюллетени, поскольку не знает закрытого ключа комиссии. По той же причине он не может перехватывать и подменять чужие бюллетени. Использование на этапе 3 протокола «разделяй и выбирай» гарантирует единственность каждого волеизъявления. Если опустить этот этап, Мэллори может создать набор бюллетеней, полностью одинаковых за исключением идентификационного номера, и заверить их в ЦИК. Преступная ЦИК не может узнать, как проголосовал каждый конкретный избиратель. До момента подведения итогов протокол слепой подписи маскирует порядковые номера бюллетеней. Поэтому комиссия не может связать подписанный ею маскированный бюллетень с бюллетенем, включаемым в итоги голосования. Публикация списка порядковых номеров и соответствующих им бюллетеней позволяет избирателям убедиться, что их бюллетени учтены корректно. Однако у протокола все еще есть недостатки. Если этап 6 не анонимен и ЦИК может записать, кто какой бюллетень прислал, то ЦИК может и узнать, кто за что голосовал. Это, однако, невозможно, если бюллетени поступают в ЦИК в запечатанных урнах для голосования, а подсчет выполняется позже. Кроме того, хотя ЦИК и не может связать избирателей с их бюллетенями, она может генерировать множество подписанных и совершенно достоверных бюллетеней, а затем фальсифицировать выборы, отослав бюллетени самой себе. И если даже Алиса обнаружит подмену комиссией своего бюллетеня, она не сможет этого доказать. В [1195, 1370] описан аналогичный протокол, авторы которого пытаются устранить эти проблемы. Выборы с двумя избирательными комиссиями Одно из возможных решений - разделение ЦИК на две комиссии. Ни одна из них не будет иметь достаточных полномочий, чтобы фальсифицировать выборы по собственному усмотрению. В приведенном ниже протоколе в выборах участвуют Центральное управление регистрации (ЦУР), которое проверяет пользователей, и независимая ЦИК, которая подсчитывает бюллетени [1373]. 1) Каждый избиратель посылает в ЦУР письмо, запрашивая регистрационный номер.
154 Прикладная криптография 2) ЦУР отправляет избирателю случайный регистрационный номер. Список этих номеров тоже поддерживается ЦУР. Кроме того, на случай, если кто-нибудь попытается проголосовать дважды, ЦУР сохраняет список получателей регистрационных номеров. 3) ЦУР отсылает в ЦИК список регистрационных номеров. 4) Каждый избиратель выбирает случайный идентификационный номер. Затем он генерирует сообщение, состоящее из этого номера, регистрационного номера, полученного от ЦУР, и своего бюллетеня. Это сообщение избиратель посылает в ЦИК. 5) ЦИК сверяет регистрационный номер со списком, полученным на этапе 3 от ЦУР. Если регистрационный номер в списке уже есть, ЦИК вычеркивает его (во избежание двойного голосования). Затем ЦИК включает идентификационный номер в список номеров избирателей, проголосовавших за конкретного кандидата, и прибавляет единицу к его результату. 6) После получения всех бюллетеней ЦИК публикует результаты вместе со списками идентификационных номеров и соответствующих бюллетеней. Как и в предыдущем протоколе, каждый избиратель может просмотреть список идентификационных номеров и отыскать в нем свой собственный номер. Тем самым он может убедиться, что его бюллетень учтен. Конечно, все сообщения, которыми обмениваются участники протокола, должны быть зашифрованы и подписаны. Это помешает кому-то выдавать себя за другого избирателя или перехватывать сообщения. ЦИК не может подменять бюллетени, поскольку каждый избиратель по окончанию выборов может отыскать свой регистрационный номер. Если избиратель не найдет свой регистрационный номер или же найдет в итоговом списке с другим результатом голосования, он немедленно установит подлог. ЦИК не может добавить бюллетень в урну, поскольку за ней наблюдает ЦУР. ЦУР известно число зарегистрированных избирателей и их регистрационные номера, а потому она обнаружит любые изменения. Мэллори, лишенный права голоса, может попробовать фальсифицировать выборы, угадав достоверный регистрационный номер. Эту опасность можно свести к минимуму, если множество допустимых регистрационных номеров намного превышает множество фактически используемых регистрационных номеров, скажем, 100-разрядное число на миллион избирателей. И конечно, регистрационные номера должны быть случайными. И все же, несмотря на все меры, ЦУР должна быть доверенным органом власти, поскольку может регистрировать неправомочных избирателей, либо регистрировать правомочных избирателей несколько раз. Эту опасность можно свести к минимуму, если ЦУР публикует список зарегистрировавшихся избирателей (но без регистрационных номеров). Если число избирателей в этом списке окажется меньше, чем число подсчитанных бюллетеней, можно заподозрить махинации с голосами. Однако если число зарегистрированных избирателей превысит число присланных бюллетеней, то это, вероятно, означает, что некоторые зарегистрировавшиеся избиратели не голосовали. Многие избиратели, зарегистрировавшись, ленятся бросить в урну свой бюллетень. Этот протокол уязвим к сговору ЦИК и ЦУР. Действуя совместно, они могут объединить свои базы данных и установить, кто за что голосует.
ГЛАВА 6. Эзотерические протоколы 155 Выборы с одной центральной комиссией Чтобы избежать опасного сговора ЦУР и ЦИК, можно перейти на усложненный протокол [1373]. Этот протокол идентичен предыдущему, за исключением двух изменений: ✓ ЦУР и ЦИК работают как единая организация. ✓ На этапе 2 для анонимного распределения регистрационных номеров применяется протокол «все или ничего» (АЫБОЗ, см. раздел 4.13). Так как протокол анонимного распределения ключей не позволит ЦИК узнать регистрационные номера конкретных избирателей, у комиссии нет возможности связать регистрационные номера с полученными бюллетенями. Однако ЦИК все же должна быть доверенным органом власти и не выдавать регистрационных номеров неправомочным избирателям. Кроме того, эту проблему можно решить с помощью слепых подписей. Улучшенная система выборов с одной центральной комиссией В этот протокол тоже входит протокол АЫБОЗ [1175]. Он удовлетворяет шести первым требованиям к идеальному протоколу выборов. Протокол не соответствует седьмому требованию, однако обладает двумя свойствами, дополняющими шесть свойств, перечисленных в начале раздела: 7. Избиратель может изменить свое мнение (т.е. отозвать свой бюллетень и проголосовать повторно) в течение заданного периода времени. 8. Если избиратель установит, что его бюллетень учтен неправильно, он может найти и устранить причину, не рискуя раскрыть конфиденциальность своего бюллетеня. Ниже приведен этот протокол: 1) ЦИК публикует список всех правомочных избирателей. 2) До истечения определенного срока каждый избиратель сообщает ЦИК, намерен ли он голосовать. 3) ЦИК публикует список избирателей, собирающихся принять участие в выборах. 4) Каждому избирателю отсылают по протоколу АЫБОЗ, идентификационный номер I. 5) Каждый избиратель генерирует пару открытый ключ/закрытый ключ: к, А. Если обозначить бюллетень буквой V, то избиратель создает и посылает в ЦИК следующее сообщение: /,ВДу) Это сообщение отсылается анонимно. 6) ЦИК подтверждает получение бюллетеня, публикуя с этой целью: ВДг) 7) Каждый избиратель отправляет в ЦИК:
156 Прикладная криптография 8) ЦИК расшифровывает бюллетени. По окончанию выборов ЦИК публикует результаты, и, для каждого варианта голосования - список соответствующих значений Ек(1, у). 9) Если избиратель обнаружит, что его бюллетень учтен неверно, он протестует, посылая ЦИК: /, Ек(1, V), с! 10) Если это разрешено и избиратель хочет изменить свой выбор с V на у', он отправляет в ЦИК: /, Ек{1 у г а В другом протоколе выборов вместо А1ЧГО08 используют слепые подписи, однако по существу он мало отличается от приведенного выше [585]. Этапы 1—3 можно рассматривать как организационные. Их цель - установить и опубликовать список всех фактических избирателей. Хотя некоторые из них, возможно, не будут голосовать, это может помешать ЦИК включать поддельные бюллетени. На этапе 4 два избирателя могут получить одинаковые идентификационные номера. Эту опасность можно свести к минимуму, если число допустимых идентификационных номеров значительно превышает число фактических избирателей. Если два избирателя пришлют бюллетени с одинаковыми идентификационными номерами, ЦИК генерирует новый идентификационный номер отбирает одного из избирателей и публикует: Г, Ек(1, у) Тогда владелец этого бюллетеня узнает о произошедшей путанице и повторно отошлет свой бюллетень с новым идентификационным номером, повторив этап 5. Этап 6 дает возможность каждому избирателю проверить, что ЦИК корректно учла его бюллетень. Если же бюллетень учтен неверно, на этапе 9 избиратель сможет доказать это. Если допустить, что на этапе 6 опубликован достоверный бюллетень избирателя, сообщение, которое он отошлет на этапе 9, доказывает, что его бюллетень учтен неверно. Один из недостатков этого протокола заключается в том, что преступная ЦИК может воспользоваться бюллетенями избирателей, которые на этапе 2 изъявили намерение голосовать, однако фактически не проголосовали. Еще один недостаток- сложность протокола А1Ч008. Авторы рекомендуют разбивать избирателей на небольшие группы, например, избирательные округа. Другой, более серьезный недостаток - ЦИК может пренебречь при расчетах каким-либо бюллетенем. Решить эту проблему невозможно: Алиса заявляет, что ЦИК намеренно пренебрег ее бюллетенем, но ЦИК утверждает, что Алиса вообще не голосовала. Выборы без центральной комиссии В приведенном ниже протоколе ЦИК нет вообще- избиратели сами следят друг за другом. Этот протокол, предложенный Майклом Мерриттом (МюЬае! Мети) [452, 1076, 453], настолько сложен, что возможность его реализации при числе избирателей более пяти сомнительна. Однако ознакомиться с ним полезно.
ГЛАВА 6. Эзотерические протоколы 157 Алиса, Боб, Кэрол и Дэйв голосуют по какому-то вопросу «за» или «против» (0 или 1). Пусть каждый избиратель располагает открытым и закрытым ключами, причем все избиратели знают открытые ключи друг друга. 1) Каждый избиратель решает, за что голосовать, и поступает следующим образом: a. Включает в свой бюллетень случайную строку. b. Шифрует результат этапа а открытым ключом Дэйва. c. Шифрует результат этапа Ь открытым ключом Кэрол. б. Шифрует результат этапа с открытым ключом Боба. е. Шифрует результат этапа с1 открытым ключом Алисы. Г. Добавляет новую случайную строку к результату этапа е и шифрует результат открытым ключом Дэйва. Затем избиратель записывает значение случайной строки. Включает в результат этапа / новую случайную строку и шифрует полученное сообщение открытым ключом Кэрол. Затем избиратель записывает значение случайной строки. Ь. Включает в результат этапа # новую случайную строку и шифрует полученное сообщение открытым ключом Боба. Затем избиратель записывает значение случайной строки. 1. Включает в результат этапа к новую случайную строку и шифрует полученное сообщение открытым ключом Алисы. Затем избиратель записывает значение случайной строки. Если обозначить через Е функцию шифрования, Я} - случайную строку, а V - бюллетень, то сообщение избирателя выглядит следующим образом: Ел (Лз, Ев(Ка. Ес(Я39 Ев(Къ Еа (Ев (Ес(Е0(У9 /?,)))))))) Каждый избиратель сохраняет промежуточные результаты каждого этапа расчетов. Эти результаты используются на последующих этапах протокола для подтверждения корректности учета бюллетеня. 2) Все избиратели отправляют сообщения Алисе. 3) Алиса расшифровывает бюллетени, используя свой закрытый ключ, и удаляет все случайные строки данного уровня. 4) Алиса перетасовывает все бюллетени и отправляет результат Бобу. Теперь каждый бюллетень принимает следующий вид: Ев (Д4, ЕС(ЯЪ Ев(Я2, Еа (Ев(Ес(Ев(У9 Я,))))))) 5) Боб расшифровывает все бюллетени своим закрытым ключом, проверяет, есть ли его бюллетень в числе принятых, удаляет все случайные строки данного уровня, перетасовывает бюллетени и отсылает результат Кэрол. Теперь каждый бюллетень принимает следующий вид: Ес(Я39 Ев(Я29 Еа (Ев(Ес(Ей(У9 ЯШ)
158 Прикладная криптография 6) Кэрол расшифровывает все бюллетени, используя свой закрытый ключ, проверяет, есть ли ее бюллетень в числе принятых бюллетеней, удаляет все случайные строки данного уровня, перетасовывает бюллетени и отсылает результат Дэйву. Теперь каждый бюллетень принимает следующий вид: Ев(КъЕА(Ев(Ес(Ео(КК1)т 7) Дэйв расшифровывает все бюллетени, используя свой закрытый ключ, проверяет, есть ли его бюллетень в числе принятых бюллетеней, удаляет все случайные строки данного уровня, перетасовывает бюллетени и отсылает результат Алисе. Теперь каждый бюллетень принимает следующий вид: Еа(Ев(Ес(Ео(У9К1)))) 8) Алиса расшифровывает все бюллетени, используя свой закрытый ключ, проверяет, есть ли ее бюллетень в числе принятых бюллетеней, подписывает все бюллетени и отправляет результат Бобу, Кэрол и Дэйву. Теперь каждый бюллетень принимает следующий вид: 8А (Ев (Ес (Е0 (V, Я\)))) 9) Боб проверяет подлинность и удаляет подписи Алисы. Затем Боб расшифровывает все бюллетени своим закрытым ключом, проверяет, есть ли его бюллетень в числе принятых бюллетеней, подписывает все бюллетени и отсылает результат Алисе, Кэрол и Дэйву. Теперь каждый бюллетень принимает следующий вид: 8в(Ес(Ео(У,Я 0)) 10) Кэрол проверяет подлинность и удаляет подписи Боба. Затем Кэрол расшифровывает все бюллетени своим закрытым ключом, проверяет, есть ли ее бюллетень в числе принятых бюллетеней, подписывает все бюллетени и отсылает результат Алисе, Бобу и Дэйву. Теперь каждый бюллетень принимает следующий вид: ЗсСЕ^ККО) 11) Дэйв проверяет подлинность и удаляет подписи Кэрол. Затем Дэйв расшифровывает все бюллетени своим закрытым ключом, проверяет, есть ли его бюллетень в числе принятых бюллетеней, подписывает все бюллетени и отсылает результат Алисе, Бобу и Кэрол. Теперь каждый бюллетень принимает следующий вид: ЫКЯ,) 12) Все избиратели проверяют подлинность и удаляют подпись Дэйва. Затем они убеждаются, что их бюллетени есть в числе принятых бюллетеней. Для этого они находят свою случайную строку в принятых бюллетенях. 13) Все избиратели удаляют случайные строки во всех бюллетенях и подводят итог голосования.
ГЛАВА 6. Эзотерические протоколы 159 Этот протокол работает. Более того, его можно отнести к «самоарбитражным» протоколам. Если одна из сторон попытается фальсифицировать выборы, Алиса, Боб, Кэрол и Дэйв немедленно узнают об этом. Не нужны никакие ЦИК и ЦУР. Чтобы понять принцип работы протокола, попытаемся смошенничать. Если любой избиратель пытается прислать фальшивый бюллетень, Алиса обнаружит эту попытку на этапе 3, когда получит бюллетеней больше, чем число избирателей. Если фальшивый бюллетень попытается прислать Алиса, на этапе 4 Боб обнаружит её мошенничество. Более ловкая фальсификация - подмена одного бюллетеня другим. Поскольку бюллетени шифруются различными открытыми ключами, любой избиратель может создать любое число достоверных бюллетеней. Протокол расшифрования выполняется в два раунда: первый включает этапы 3—7, а второй - этапы 8—11. В каждом раунде подмена бюллетеня обнаруживается особым методом. Если кто-нибудь подменит один бюллетень другим во втором раунде, действия злоумышленника обнаружатся немедленно. На каждом этапе бюллетени подписываются и рассылаются всем избирателям. Если один или несколько избирателей обнаруживают, что их бюллетеней уже нет в наборе бюллетеней, они немедленно прекратят исполнение протокола. А так как бюллетени подписываются на каждом этапе, и во втором раунде протокола любой может вернуться назад на несколько этапов, обнаружить мошенника, подменившего бюллетени, нетрудно. Сложнее установить подмену бюллетеня в первом раунде протокола. Алиса не может подменить бюллетень на этапе 3, поскольку на этапах 5, 6 или 7 Боб, Кэрол и Дэйв обнаружат подмену. Боб может попытаться сделать это на этапе 5. Если он подменит бюллетени Кэрол и Дэйва (напоминаю, он не знает, кому принадлежат бюллетени), Кэрол или Дэйв обнаружат подмену на этапах 6 или 7. Они не сумеют установить, кто именно подменил бюллетени (хотя это должен быть кто-то, уже обрабатывавший бюллетени), но они установят сам факт подмены. Если Бобу повезло, и он сумел подменить бюллетень Алисы, она не заметит этого до второго раунда протокола. Там, на этапе 8, она обнаружит пропажу своего бюллетеня, но не сможет установить, кто подменил бюллетень. В первом раунде бюллетени тасуются на каждом этапе и не подписываются, поэтому никто не сможет повторно исполнить протокол и установить, кто подменил бюллетени. Еще одна форма мошенничества- попытка установить, кто за что голосовал. Из-за перетасовки бюллетеней в первом раунде никто не сможет повторно исполнить протокол и связать бюллетени с избирателями. Кроме того, для сохранения анонимности критически важно удаление случайных строк в первом раунде. Если бы строки не удалялись, стало бы возможным сведение на нет перетасовки бюллетеней повторным шифрованием получаемых бюллетеней открытым ключом того, кто тасует. По прекращению исполнения протокола конфиденциальность бюллетеней сохраняется. Более того, благодаря случайной начальной строке Кь на каждом этапе протокола даже одинаковые бюллетени шифруются по-разному. Вплоть до этапа И никто не сможет узнать содержимое бюллетеня. Каковы недостатки этого протокола? Во-первых, исполнение протокола требует огромных вычислений. В приведенном примере в голосовании участвуют только четверо избирателей, но и он достаточно сложен. Такой протокол невозможно использовать в реальных выборах с десятками тысяч избирателей. Во-вторых, Дэйв
160 Прикладная криптография узнает итоги выборов прежде всех других избирателей. Хотя он и не сможет изменить результат, это дает известное преимущество. Но, с другой стороны, это же возможно и при централизованной схеме выборов. Третий недостаток состоит в том, что Алиса может скопировать бюллетень другого избирателя, даже не зная заранее его содержания. Чтобы понять, почему это может привести к проблемам, рассмотрим выборы при трех голосующих - Алисы, Боба и Евы. Еве безразличны результаты выборов - она только хочет знать, за что проголосовала Алиса. Поэтому Ева копирует бюллетень Алисы, и результат выборов будет соответствовать бюллетеню Алисы. Другие схемы выборов Разными авторами предложено множество сложных и надежных протоколов выборов. Эти протоколы можно разделить на два типа. Известны протоколы с перемешиванием, описанные в разделе «Выборы без центральной комиссии», в которых избиратели перемешивают все бюллетени, чтобы никто не мог связать бюллетень с избирателем. Кроме того, известны протоколы с разделением, в которых личные бюллетени распределяются между различными счетными комиссиями так, что ни одна из них в одиночку не сможет фальсифицировать выборы [360, 359, 118, 115]. Эти протоколы защищают анонимность избирателей, только если различные правительственные учреждения, ответственные за выборы, не сговариваются с целью фальсификации итогов голосования. (Идея разделения центрального органа власти на несколько частей, которым можно доверять, только если они действуют совместно, впервые высказана в [316]). В работе [1371] предложен один из протоколов с разделением. Основная идея заключается в разделении бюллетеня каждого избирателя на несколько частей. Например, если в бюллетень включены только ответы «за» или «против» (1 обозначает «за», а 0 - «против»), избиратель может генерировать несколько чисел, сумма которых равна 0 или 1. Эти доли отсылаются счетным комиссиям - каждой по одной доле - а также шифруются и сохраняются. Каждый центр суммирует полученные доли (известны протоколы, гарантирующие правильность итога), и окончательный итог равен сумме всех промежуточных итогов. Кроме того, есть протоколы, гарантирующие, что сумма долей каждого избирателя равна 0 или 1. Другой протокол, описанный Дэвидом Чаумом (ОаУ1<! СЬаиш) [322], позволяет проследить избирателя, который пытается фальсифицировать выборы. Однако после этого выборы придется повторить, исключив злоумышленника. На практике, когда в выборах участвует множество избирателей, этот протокол неприменим. Еще один усложненный протокол, устраняющий некоторые из указанных недостатков, можно найти в [770, 771]. Известен даже протокол, в котором используется шифрование с несколькими ключами [219]. Другой протокол, который, как утверждают авторы, годится для крупномасштабных выборов, приведен в [585]. А протокол, описанный в [347], позволяет избирателям воздержаться. Протоколы выборов работают, однако их применение облегчают скупку и продаж) голосов избирателей. Действительно, когда продавец голоса может доказать, что проголосовал так, как обещал, скупка голосов дополнительно стимулируется.
ГЛАВА 6. Эзотерические протоколы 161 Спроектировано несколько протоколов без подтверждения, которые не позволяют избирателю доказать, что он голосовал определенным образом [117, 1170, 1372]. 6.2. Тайные многосторонние вычисления Протокол тайных многосторонних вычислений (зесиге тиШраг(у сотриШИоп) позволяет группе людей вычислять любые функции нескольких переменных. Каждый участник группы предоставляет одну или несколько переменных. Результат вычислений становится известным всей группе, однако никто не знает входных значений, предоставленных другими членами группы, кроме того, что очевидно из результата вычислений. Ниже приведено несколько примеров: Протокол 1 Каким образом группа людей может вычислить свою среднюю зарплату так, чтобы члены группы не могли определить зарплату друг друга? 1) Алиса прибавляет секретное случайное число к сумме своей зарплаты, шифрует результат с помощью открытого ключа Боба и отсылает его Бобу. 2) Боб расшифровывает результат, используя свой закрытый ключ. Затем он прибавляет сумму своей зарплаты к значению, принятому от Алисы, шифрует результат открытым ключом Кэрол и отсылает его Кэрол. 3) Кэрол расшифровывает результат, используя свой закрытый ключ. Затем она прибавляет сумму своей зарплаты к значению, принятому от Боба, шифрует результат открытым ключом Дэйва и отсылает его Дэйву. 4) Дэйв расшифровывает результат, используя свой закрытый ключ. Затем он прибавляет сумму своей зарплаты к значению, принятому от Кэрол, шифрует результат открытым ключом Алисы и отсылает его Алисе. 5) Алиса дешифрует результат, используя свой закрытый ключ. Затем она вычитает случайное число, добавленное на этапе 1, получая сумму всех зарплат. 6) Алиса делит результат на число людей в группе (в данном случае - на четыре) и объявляет результат. В этом протоколе предполагается, что все участники честны - они очень любопытны, но следуют протоколу. Если любой участник неверно укажет свою зарплату, средняя зарплата будет рассчитана неверно. Более серьезная проблема заключается в том, что Алиса может исказить итоговый результат. На этапе 5 она может вычесть любое число, которое ее устраивает, и никто об этом не узнает. Чтобы помешать Алисе мошенничать, можно потребовать, чтобы она вручила свое случайное число с помощью одной из схем вручения битов, описанной в разделе 4.9. Однако в этом случае, когда Алиса откроет свое случайное число по завершению протокола, Боб может узнать ее зарплату1. 1 Шнайер в исправлениях к этой книге отмечает также, что несколько участников могут объединится для того, чтобы узнать зарплату другого. Самый простой способ - утверждать, что их зарплата равна 0.
162 Прикладная криптография Протокол 2 Алиса и Боб поспорили в ресторане о том, кто старше. Никто, разумеется, не хочет сообщать другому свой возраст. Каждый из них мог бы шепнуть свой возраст на ухо доверенной нейтральной стороне (скажем, официанту), тот мог бы сравнить числа в уме и объявить результат и Алисе, и Бобу. У этого протокола есть два недостатка. Во-первых, вычислительные способности заурядного официанта не позволяют ему решать задачи, сложнее определения большего из двух чисел. И, во-вторых, если Алиса и Боб действительно заботятся о сохранении своей информации в секрете, им придется утопить официанта в ванне с минеральной водой, чтобы он не выдал ее бармену. Криптография с открытым ключом предлагает намного менее жестокое решение. Известен протокол, в соответствии с которым Алиса, зная значение а, и Боб, зная Ь, могут совместными усилиями определить верно ли, что а<Ь, так, что никто не получит дополнительной информации о числах другого. Кроме того, как Алиса, так и Боб смогут убедиться в достоверности вычислений. Так как используемый криптографический алгоритм служит важным компонентом протокола, подробности можно найти в разделе 23.14. Разумеется, этот протокол не защищает от активных мошенников. Ничто не мешает Алисе (или Бобу - безразлично) неверно указать возраст. Если бы Боб был компьютерной программой, которая слепо следует протоколу, Алиса могла бы узнать его возраст (можно ли отсчитывать возраст компьютерной программы с момента ее написания или запуска?), многократно исполняя протокол. Скажем, Алиса могла бы указать, что ее возраст - 60 лет. Узнав, что она старше, она могла бы исполнить протокол повторно, указав, что ее возраст - 30 лет. Узнав, что Боб старше, она могла бы снова исполнить протокол, указав, что ее возраст - 45 лет, и т.д., пока Алиса не узнает возраст Боба с любой нужной ей точностью. Если предположить, что участники протокола не станут намеренно обманывать друг друга, описанный протокол нетрудно расширить на нескольких участников. Любая группа людей может определить относительный порядок своих возрастов с помощью последовательных честных применений протокола, причем ни один участник не узнает возраст партнеров. Протокол 3 Алисе нравится заниматься пикантным сексом с плюшевыми медведями. В эротических фантазиях Боба важное место занимают мраморные столы. Оба несколько стыдятся своих пристрастий, но охотно нашли бы партнера, который разделил бы их... гм... стиль жизни. Ниже с помощью «Службы тайных многосторонних знакомств» мы спроектировали протокол, предназначенный подобным людям. Мы создали внушительный нумеро¬ ванный список их фетишей, от «абажура» до «ящура». Теперь Алиса и Боб, предусмотрительно разделенные модемной линией связи, могут участвовать в защищенном коллективном протоколе. Они могут совместно определить, есть ли у них общие фетиши. Если есть, они могут устремиться к взаимному счастью. Если нет, они
ГЛАВА 6. Эзотерические протоколы 163 могут спокойно расстаться, уверенные, что их фетиши остались в тайне. Никто, даже «Служба тайных многосторонних знакомств», никогда не узнает об их пристрастиях. Вот как работает этот протокол: 1) Алиса, используя однонаправленную функцию, хэширует свой фетиш в семи¬ значную строку. 2) Используя эту семизначную строку как телефонный номер, Алиса звонит по этому номеру и оставляет сообщение для Боба. Если никто не отвечает или номер не обслуживается, Алиса вновь применяет однонаправленную функцию к телефонному номеру, и так до тех пор, пока не найдется кто-нибудь, кто согласится помочь на том конце провода. 3) Алиса сообщает Бобу, сколько раз ей пришлось применять однонаправленную функцию к своему фетишу. 4) Боб хэширует свой фетиш столько же раз, сколько Алиса. Он тоже использует семизначную строку в качестве телефонного номера и спрашивает абонента на другом конце провода, нет ли сообщений для него. Обратите внимание: у Боба есть возможность атаки с использованием подобранного открытого текста. Он может хэшировать широко распространенные фетиши и звонить по получившимся телефонным номерам, разыскивая сообщения для себя. Это протокол действительно работает, однако если открытых сообщений не так много, использовать его непрактично из-за этой атаки. Известен также математический протокол, напоминающий протокол 2. Алиса знает а, Боб знает Ъ, и они пытаются совместно установить, справедливо ли, что а = Ь, причем так, чтобы Боб ничего не узнал об а, а Алиса - о Ъ. Подробности приведены в разделе 23.14. Протокол 4 Вот еще одна проблема тайных многосторонних вычислений [1373]. Большая Семерка регулярно встречается, чтобы тайно проголосовать по некоторым вопросам мироздания. (Все в порядке, они управляют миром. Только никому не говорите, что я проболтался). Все члены семерки голосуют «да» или «нет». Кроме того, две стороны обладают «супербюллетенями»: Супер-да и Супер-нет. Они не обязаны использовать эти супербюллетени и, если пожелают, могут пользоваться простыми бюллетенями. Если никто не использует супербюллетени, вопрос решается простым большинством голосов. При голосовании одним или двумя равноправными супербюллетенями все простые бюллетени игнорируются. При голосовании двумя противоположными супербюл¬ летенями, вопрос решается большинством простых бюллетеней. Нам необходим протокол, который надежно поддерживает подобный стиль голосования. Мы продемонстрируем процедуру голосования на двух примерах. Пусть в голосовании участвуют пять простых избирателя, №№ 1—5, и два суперизбирателя: 81 и 82. Вот итоги голосование по первому вопросу: 3. з2 N. N2 N3 N4 N5 Супер-да нет нет нет нет да да
164 Прикладная криптография Здесь в голосовании участвует только один супербюллетень- 81. Поэтому итог голосования - «да». А вот итоги голосования по второму вопросу: 3. §2 N. N2 N3 N4 К5 Супер-да Супер-нет нет нет нет да да В этом примере два супербюллетеня нейтрализуют друг друга, и вопрос решается большинством простых бюллетеней - «нет». Если нет необходимости скрывать информацию о том, какой бюллетень оказался решающим- простой или супербюллетель, это- несложное применение протокола тайного голосования. Однако сокрытие этой информации потребует более сложного протокола тайных многосторонних вычислений. Голосование подобного рода можно встретить и на практике. Так, оно может использоваться корпорациями, где некоторые служащие обладают большей властью, чем другие, или в ООН, где одни государства пользуются большим влиянием, чем другие. Безусловно-тайные многосторонние протоколы Это - частный случай общей теоремы: любую функцию с п входами могут рассчитать п игроков так, что все узнают значенйе функции, но любое их подмножество, меньшее, чем п/1, не сможет получить никакой дополнительной информации, не вытекающей из их собственных входов и результата вычислений. Подробнее это вопрос обсуждается в [136,334, 1288, 621]. Тайное вычисление схемы Допустим, вход Алисы - а, а вход Боба - Ь. Им необходимо совместными усилиями вычислить некоторую функцию Да, Ь) так, чтобы Алиса ничего не смогла узнать о входе Боба, а Боб- о входе Алисы. Общую задачу тайных многосторонних вычислений называют также тайным вычислением схемы (зесиге игсик еуа1иа!юп). В этом случае Алиса и Боб могут создать произвольную булеву схему, которая принимает входы Алисы и Боба и выдает результат. Тайное вычисление схемы представляет собой протокол, удовлетворяющий трем требованиям: 1. Алиса может ввести свое значение так, что Боб не способен его узнать. 2. Боб может ввести свое значение так, что Алиса не способна его узнать. 3. Как Алиса, так и Боб могут вычислить результат, причем обе стороны будут уверены, что результат корректен и не подделан другой стороной. Подробную информацию о протоколе тайного вычисления схемы можно найти в [831]. 6.3. Широковещательная передача анонимных сообщений Вам не удастся спокойно пообедать в компании криптографов, не оказавшись среди перепалки. В [321] Дэвид Чаум вводит так называемую «Проблему Обедающих Криптографов»:
ГЛАВА 6. Эзотерические протоколы 165 Три криптографа обедают в своем любимом трехзвездочном ресторане. Официант сообщает им, что метрдотель принял необходимые меры для анонимной оплаты счета. За обед может заплатить один из криптографов или АНБ. Три криптографа признают право каждого заплатить анонимно, но им интересно, заплатит ли АНБ. Итак, каким образом криптографы Алиса, Боб и Кэрол могут узнать, что обед оплачивает один из них, причем сохранив анонимность плательщика? Чаум решает проблему так: Каждый криптограф подбрасывает монетку между собой и коллегой справа, закрывшись меню так, чтобы только они двое видели результат. Затем каждый криптограф громко объявляет, как упали две монеты - одна его, и одна соседа слева: «одинаково» или «по-разному». Если один из криптографов хочет заплатить, он утверждает противоположное тому, что видит. Если число возгласов «по-разному» будет нечетным, это означает, что обед оплачивает криптограф; если четным - АНБ (при условии, что обед можно оплатить только один раз). Однако если обед оплачивает криптограф, из сделанных заявлений никто из двух других не узнает, кто же конкретно оплачивает счет. Чтобы понять, как это работает, представьте, что Алиса пытается узнать, кто из двух других криптографов оплатил обед (при условии, что платила не она, и не агентство АНБ). Если Алиса видит две различные монетки, значит, либо оба других криптографа (Боб и Кэрол) заявили: «одинаково», либо оба заявили: «по-разному». (Припомните, нечетное число криптографов, говорящих «по-разному» указывает, что платит кто-то из них). Если оба сказали «по-разному», то плательщик - криптограф, сидящий ближе всех к монете, результат броска которой тот же, что и у скрытой монеты (брошенной между Бобом и Кэрол). Если оба заявили: «одинаково», то плательщик - криптограф, сидящий ближе всех к монете, результат броска которой отличается от результата броска скрытой монеты. Однако если Алиса видит две одинаковых монеты, то либо Боб сказал: «одинаково», а Кэрол - «по-разному», либо Боб объявил: «по-разному», а Кэрол - «одинаково». Если скрытая монета - такая же, как видимые ей две монеты, то плательщик - криптограф, сказавший: «по-разному». Если скрытая монета отлична от видимых ей двух монет, то плательщик - криптограф, который объявил: «одинаковые». Во всех этих случаях, чтобы установить, кто оплатил счет, Алиса должна знать результат броска монеты между Бобом и Кэрол. Этот протокол можно обобщить на любое число криптографов, которые сидят кружком и подбрасывают между собой монетки. Его могут выполнять даже два криптографа. Разумеется, каждый знает, кто платит. Однако сторонний наблюдатель протокола может только сказать, что заплатил один из криптографов или АНБ - он не сможет установить, кто из криптографов оплатил счет. Применение этого протокола далеко выходит за рамки кружка за обеденным столом. Это - пример безусловного неотслеживания отправителя и получателя. Группа пользователей сети может использовать этот протокол для отсылки анонимных сообщений. 1) Пользователи располагаются по кругу. 2) Через регулярные интервалы времени соседние пары пользователей подбрасывают монетку, используя какой-нибудь протокол подбрасывания монетки «по телефону», защищенный от злоумышленников.
166 Прикладная криптография 3) После каждого броска каждый пользователь заявляет: «одинаково» либо «по- разному». Если Алисе необходимо передать широковещательное сообщение, она просто начинает заявлять противоположное (т.е. инвертировать свое утверждение) в раундах, соответствующих 1 (единице) в двоичном представлении ее сообщения. Скажем, если ее сообщение гласило бы «1001», она могла бы инвертировать свое утверждение, сообщить правду, сообщить правду, и затем снова инвертировать утверждение. Если результатами ее бросков были «по-разному», «одинаково», «одинаково», «одинаково», она заявит: «одинаково», «одинаково», «одинаково», «по-разному». Если Алиса замечает, что полный выход протокола не соответствует сообщению, которое она пытается послать, она приходит к выводу, что в то же самое время кто-то другой тоже пытается послать сообщение. Тогда она прекращает передачу сообщения и прежде чем сделать очередную попытку, выжидает случайное число раундов. Конечно, точные параметры должны быть выработаны на основе трафика сообщений в сети, но сама идея достаточно понятна. Чтобы сделать все еще интереснее, эти сообщения можно зашифровать открытым ключом другого пользователя. Затем, когда каждый пользователь принимает сообщение (в практическую реализацию следует включить стандартные начальные и конечные строки сообщений), расшифровать и прочесть это сообщение сможет только конкретный получатель. Никто иной ничего не узнает об авторе сообщения и не сумеет установить получателя сообщения. Даже если сами сообщения удастся дешифровать, анализ трафика, отслеживающий и накапливающий образцы обмена сообщениями между пользователями, бесполезен. Вместо бросков монетки между соседними сторонами можно поддерживать общий файл случайных битов. Стороны могут хранить этот файл на компакт-дисках, либо один член пары может генерировать кучу битов и отсылать их другой стороне (конечно, в шифрованном виде). Кроме того, они могут договориться о совместном использовании криптографически надежного генератора псевдослучайных чисел. Тогда каждый из них может генерировать для протокола одинаковую строку псевдослучайных битов. Недостаток этого протокола заключается в том, что хотя злонамеренный участник и не сумеет прочитать никаких сообщений, он может, постоянно обманывая на этапе 3, незаметно разрушить всю систему. Известна модификация предыдущего протокола, которая позволяет обнаружить мошенничество [1578, 1242]. Эта проблема получила название «Обед Криптографов на Дискотеке». 6.4. Цифровые деньги Наличным деньгам присущи недостатки. Раздражает носить их с собой, они способствуют распространению инфекций, наконец, их могут просто украсть. Чеки и кредитные карточки уменьшили оборот наличных денег в обществе, однако на практике полный отказ от наличных денег невозможен. Этого никогда не произойдет- не позволят торговцы наркотиками и политики. Чеки и кредитные карточки имеют аудиторский след - вы не сможете скрыть, кому платили деньги. С другой стороны, чеки и кредитные карточки позволяют людям, как никогда ранее, вторгаться в вашу личную жизнь. Вы ни за что не потерпите, чтобы полиция всю жизнь
ГЛАВА 6. Эзотерические протоколы 167 ходила за вами по пятам, но полицейские могут отслеживать все ваши финансовые операции. Не отходя от компьютерных терминалов, они могут узнать, где вы покупаете бензин и продукты, кому звоните по телефону и т.п. Чтобы отстоять свое право на тайну личной жизни, надо уметь скрывать свою личность. К счастью, известен довольно сложный протокол, который позволяет использовать идентифицируемые, но неотслеживаемые сообщения. С его помощью лоббист Алиса может передавать конгрессмену Бобу цифровые деньги так, что газетный репортер Ева ничего не узнает о личности Алисе. Затем Боб может вносить эти цифровые деньги на свой банковский счет, даже если банк не имеет об Алисе ни малейшего представления. Однако если Алиса попытается купить кокаин за те же цифровые деньги, которые использовала для подкупа Боба, она будет раскрыта банком. И если Боб пробует положить ту же часть цифровых денег на два разных счета, он будет раскрыт, однако Алиса, останется анонимной. Иногда эти деньги называют анонимными цифровыми деньгами, чтобы не путать их с цифровыми деньгами, имеющими аудиторский след, например, кредитными карточками. В подобных делах есть большая социальная потребность. С ростом вовлечения Интернета в коммерческие операции растет и потребность в секретности передаваемой по сети информации и анонимности пользователей. (Есть немало причин нежела¬ тельности отсылки по Интернету номеров кредитных карточек). С другой стороны, банки и правительства, вероятно, не захотят уступить контроль над современными банковскими системами. Однако им придется это сделать. Все, что необходимо, чтобы цифровые деньги вошли в широкий оборот - это появление некоторого доверенного учреждения, желающего преобразовывать цифры в настоящие деньги. Протоколы цифровых денег чрезвычайно сложны. Далее, шаг за шагом, мы построим один из них. Подробнее об этом протоколе можно узнать в [318, 339, 325, 335, 340]. Однако помните, это всего лишь один из протоколов цифровых денег, известны и другие. Протокол 1 Первые несколько протоколов - это физические модели криптографических протоколов. Приведенный ниже протокол можно рассматривать как грубый физический аналог протокола анонимных денежных переводов по почте: 1) Алиса подготавливает 100 анонимных денежных переводов, каждый на сумму $1000. 2) Алиса запечатывает каждый перевод вместе с листом копировальной бумаги в 100 конвертов и передает все конверты банку. 3) Банк вскрывает 99 конвертов и убеждается, что каждый перевод выписан на сумму $1000. 4) Банк подписывает единственный нераспечатанный конверт. Благодаря копировальной бумаге, подпись переносится на перевод. Банк возвращает Алисе нераспечатанный конверт и списывает с ее счета $1000. 5) Алиса вскрывает конверт и оплачивает денежным переводом покупки у торговца. 6) Торговец проверяет подпись банка, убеждаясь в законности денежного перевода.
168 Прикладная криптография 7) Торговец вручает денежный перевод банку. 8) Банк проверяет подлинность своей подписи и перечисляет $1000 на счет торговца. Этот протокол работает. Банк никогда не увидит денежный перевод, который подписывает, поэтому, когда торговец принесет перевод в банк, банк не сумеет установить, что это перевод от Алисы. Благодаря подписи, банк убеждается в законности перевода. А благодаря протоколу «разделяй и выбирай» (см. раздел 5.1) банк уверен, что нераспечатанный денежный перевод выписан на сумму именно $1000 (а не $100000 или $100000000). Ведь он проверил остальные 99 конвертов, поэтому вероятность обмана банка Алисой равна всего лишь 1%. Конечно, за обман банк назначает достаточно высокий штраф - такой, чтобы мошенничать было невыгодно. Действительно, если банк, уличив Алису в мошенничестве, просто откажется признать последний перевод, не штрафуя Алису, она продолжит свои попытки, пока ей не повезет. Еще лучшее средство сдерживания - тюремное заключение. Протокол 2 Предыдущий протокол не позволяет Алисе выписать денежный перевод на сумму, отличную от объявленной, однако ничто не мешает Алисе сделать ксерокопию перевода и использовать его повторно. Это - так называемая проблема повторной оплаты; для ее решения необходимо усложнить протокол: 1) Алиса подготавливает 100 анонимных денежных переводов, каждый на сумму $1000. К каждому денежному переводу она прикладывает особую случайную уникальную строку, причем достаточно длинную, чтобы вероятность использования этой строки другим лицом была пренебрежимо мала. 2) Алиса запечатывает каждый перевод и лист копировальной бумаги в 100 конвертов и передает банку все конверты. 3) Банк вскрывает 99 конвертов и убеждается, что каждый перевод выписан на $1000. 4) Банк подписывает единственный нераспечатанный конверт. Благодаря копиро¬ вальной бумаге подпись переносится на перевод. Банк возвращает Алисе нераспечатанный конверт и списывает с ее счета $1000. 5) Алиса вскрывает конверт и тратит переведенные деньги на покупки у торговца. 6) Торговец проверяет банковскую подпись, убеждаясь в законности денежного чека. 7) Торговец вручает денежный перевод банку. 8) Банк проверяет подлинность своей подписи и по собственной базе данных убеждается, что денежный перевод с данной уникальной строкой ранее не депонировался. Если это так, банк перечисляет $1000 на счет продавца и заносит уникальную строку в базу данных. 9) Если денежный перевод ранее уже депонировался, банк отказывается принять его. Если теперь Алиса попытается расплатиться ксерокопией денежного перевода или же продавец попытается повторно депонировать денежный перевод, используя ксерокопию, банк узнает об этом.
ГЛАВА 6. Эзотерические протоколы 169 Протокол 3 Предыдущий протокол защищает банк от жуликов, но не позволяет установить их личности. Например, банк не знает, кто пытается мошенничать- человек, который получил перевод (об Алисе банк ничего не знает), обманывает торговца, или торговец пытается обмануть банк. Эта неопределенность устранена в следующем протоколе: 1) Алиса подготавливает 100 анонимных денежных переводов, каждый на сумму $1000. К каждому денежному переводу она прикладывает случайную уникальную строку, достаточно длинную, чтобы вероятность использования этой строки другим лицом была пренебрежимо мала. 2) Алиса запечатывает каждый перевод и лист копировальной бумаги в 100 конвертов и передает все конверты банку. 3) Банк вскрывает 99 конвертов и убеждается, что каждый перевод выписан на сумму $1000, а все случайные строки уникальны. 4) Банк подписывает единственный невскрытый конверт. Благодаря листу копировальной бумаги, подпись переносится на перевод. Банк возвращает нераспечатанный конверт Алисе и списывает с ее счета $1000. 5) Алиса вскрывает конверт и оплачивает денежным переводом покупки у торговца. 6) Торговец проверяет подлинность банковской подписи, убеждаясь в законности денежного перевода. 7) Торговец предлагает Алисе написать на денежном переводе случайную идентифицирующую строку. 8) Алиса повинуется. 9) Торговец вручает денежный перевод банку. 10) Банк проверяет свою подпись и по собственной базе данных убеждается, что ранее денежный перевод с данной уникальной строкой не депонировался. Если это так, банк перечисляет $1000 на счет торговца и заносит уникальную строку в базу данных. 11) Если данная уникальная строка уже есть в базе данных банка, он отказывается принять перевод. Затем банк сравнивает идентифицирующую строку на денежном переводе с соответствующей строкой в базе данных. Если они совпадают, банк убеждается, что копия перевода сделана торговцем. Если идентифицирующие строки различаются, банк поймет, что чек копировал тот человек, который подготовил этот перевод. Этот протокол исходит из допущения, что торговец не может изменить идентифицирующую строку после того, как Алиса впишет ее в денежный перевод. Например, на бланке денежного перевода можно напечатать несколько небольших квадратиков, которые Алиса по требованию торговца должна заполнить либо крестиками, либо ноликами. Кроме того, бланк денежного перевода можно напечатать на бумаге, которая рвется от трения ластиком. Поскольку торговец контактирует с банком уже после того, как Алиса растратит деньги, продавцу могут всучить дефектный денежный перевод. В практических реализациях
170 Прикладная криптография этого протокола от Алисы можно потребовать подождать у кассового аппарата, пока торговец свяжется с банком, в точности как это принято при обработке платежей кредитными карточками. Однако Алиса может обойти и это. Она может оплатить покупки копией денежного перевода повторно, вписав на этапе 7 ту же самую идентифицирующую строку. Если торговец не поддерживает базу данных ранее полученных денежных переводов, его можно ввести в заблуждение. Эта проблема устранена в следующем протоколе. Протокол 4 Если окажется, что человек, оплачивающий покупки денежным переводом, пытался надуть продавца, банк может пожелать установить личность мошенника. Чтобы сделать это, нам придется вернуться от физического аналога в мир криптографии. Чтобы скрыть имя Алисы в цифровом денежном переводе, можно воспользоваться методом разбиения секрета. 1) Алиса подготавливает п анонимных денежных переводов на заданную сумму. Каждый перевод включает случайную уникальную строку X, достаточно длинную, чтобы вероятность появления двух одинаковых строк была пренебрежимо малой. Кроме того, в каждый перевод включается п пар идентифицирующих битовых строк /ь /2..., /„. (Именно так, п различных пар в каждом переводе). Каждая пара этих строк генерируется следующим образом: Алиса генерирует строку, содержащую ее имя, адрес и другие сведения, необходимые банку. Затем Алиса разделяет эту строку на две части, используя протокол разделения секрета (см. раздел 3.6), и вручает каждую часть по протоколу вручения битов. Например, строка /37 состоит из двух частей: /3?1 и /37л. Каждая часть представляет собой пакет вручаемых битов, который, возможно, Алисе предложат открыть, причем открытое содержимое пакета можно немедленно проверить. Любая пара (например, и /37д, но не 1Ъ1ь и /38/?), раскрывает личность Алисы. Каждый денежный перевод имеет следующий вид: Сумма Уникальная строка: X Идентифицирующая строка: 1!= (11ь, 11к) 12=<12Ь,12К) Ш=(1Пь/1Пк) 2) Алиса маскирует все п денежных переводов с помощью протокола подписи «вслепую» и передает их банку. 3) Банк предлагает Алисе демаскировать наугад п -1 денежных переводов и убеждается, что все они оформлены корректно. Затем банк проверяет сумму, уникальную строку и предлагает Алисе раскрыть все идентифицирующие строки.
ГЛАВА 6. Эзотерические протоколы 171 4) Если банк убедился, что Алиса не пытается мошенничать, он подписывает оставшийся маскированный денежный перевод. Затем банк возвращает Алисе маскированный перевод и списывает с ее счета соответствующую сумму. 5) Алиса демаскирует перевод и тратит деньги у торговца. 6) Торговец проверяет подлинность банковской подписи, убеждаясь в законности денежного перевода. 7) Торговец предлагает Алисе наугад раскрыть либо левые, либо правые половины всех идентифицирующих строк в переводе. На практике торговец предоставляет Алисе случайную «-битовую строку-селектор Ьи Ь2-~, Ьт а Алиса открывает левую или правую половину /„ в зависимости от значения 4 - 0 или 1. 8) Алиса повинуется. 9) Продавец вручает денежный перевод банку. 10) Банк проверяет подлинность своей подписи, и по собственной базе данных убеждается, что денежный перевод с данной уникальной строкой ранее не депонировался. Если это так, банк перечисляет указанную сумму на счет торговца и заносит уникальную строку в базу данных. И) Если данная уникальная строка в базе данных уже есть, банк отказывается принять денежный перевод и сравнивает идентифицирующую строку на денежном переводе со строкой в базе данных. Если строки совпадают, банк знает, что чек скопирован торговцем. Если идентифицирующие строки различны, банк знает, что чек скопирован лицом, подготовившим этот денежный перевод. А так как второй торговец, получивший перевод, выдал Алисе строку-селектор, отличную от строки, выданной первым торговцем, банк установит, что в какой-то позиции битовой строки Алиса открыла левую половину одному торговцу, а правую- другому. Выполнив над этими половинами идентифицирующей строки операцию ХОЯ, банк установит личность Алисы. Рассмотрим подробнее этот весьма интересный протокол. Может ли Алиса смухлевать? Ее цифровые деньги - это просто битовая строка, которую несложно скопировать. Потратить эти деньги первый раз - не проблема. Алиса просто выполнит протокол, и все пройдет без сучка и задоринки. На этапе 7 торговец выдаст Алисе случайную «-битовую строку-селектор, и на этапе 8 Алиса откроет либо левую, либо правую половину каждой строки 7/. На этапе 10 банк запишет все эти данные вместе с уникальной строкой денежного перевода. Когда Алиса попытается использовать этот же перевод цифровых денег повторно, торговец (тот же самый или другой) выдаст ей на этапе 7 иную случайную п-битовую строку-селектор. Выполнить этап 8 Алиса обязана - ее отказ немедленно насторожит торговца. Затем, когда на этапе 10 торговец принесет деньги в банк, банк немедленно установит, что денежный перевод с данной уникальной строкой уже депонировался. Банк сравнит открытые половины идентифицирующих строк. Вероятность совпадения двух случайных строк-селекторов не превышает одного шанса из 2 п, так что этого не случится до следующего ледникового периода. Затем банк находит пару строк, в которой первая половина была открыта в первый раз, а вторая - во второй, выполняет
172 Прикладная криптография над этими половинами операцию ХОЯ- и тут же всплывает имя Алисы. Таким образом, банк установит, кто попытался воспользоваться переводом дважды. Обратите внимание, этот протокол не мешает Алисе жульничать, однако ее мошенничество почти наверняка будет раскрыто. После мошенничества Алиса не сможет сохранить в тайне свою личность. Она не может изменить ни уникальную строку, ни любую идентифицирующую строку, поскольку при этом исказится банковская подпись, и на этапе 6 торговец немедленно заметит это. Алиса могла бы попытаться подсунуть банку дефектный денежный перевод, в котором идентифицирующие строки не раскрывают ее имени, или (еще лучше), раскрывают чужое имя. Вероятность, что на этапе 3 банк не заметит этот трюк, составляет 1 из п. Нельзя сказать, что это невозможно, однако если штраф за мошенничество достаточно жесток, Алиса не станет искушать судьбу. Можно также увеличить число избыточных переводов, предъявляемых Алисой на этапе 1. Может ли смухлевать торговец? Его шансы еще ниже. Он не может дважды депонировать денежный перевод - банк заметит повторное появление строки-селектора. Он не может ложно обвинить Алису, поскольку только она может открыть любую идентифицирующую строку. Не поможет обмануть банк и любой сговор Алисы с торговцем. Если банк подписал денежный перевод с уникальной строкой, он может не сомневаться - этот перевод будет оплачен только один раз. А может ли обмануть сам банк? Может ли он, скажем, определить, что денежный перевод, полученный от торговца - это тот самый перевод, который банк подписал для Алисы? На этапах 2—5 Алису защищает протокол слепой подписи. Банк не сможет связать Алису с переводом, даже если сохраняет полную запись каждой транзакции. Более того, даже объединившись с торговцем, банк не сумеет определить личность Алисы. Алиса может зайти в магазин и, сохраняя полную анонимность, купить все, что ей надо. Смошенничать может Ева. Если она сумеет подслушать обмен по линии связи между Алисой и продавцом, и, если успеет добраться до банка скорее торговца, первой депонирует перевод. Банк примет его и, что еще хуже, когда торговец попытается депонировать свой перевод, его обвинят в жульничестве. Если Ева выкрадет цифровые деньги Алисы и успеет растратить их прежде Алисы, обвинение в мошенничестве предъявят Алисе. Помешать этому невозможно, поскольку сама возможность такого обмана - прямое следствие анонимности цифровых денег. Как Алиса, так и продавец должны хранить свои биты столь же тщательно, как и бумажные деньги. Этот протокол занимает место где-то между протоколом с посредником и самодостаточным протоколом. Как Алиса, так и торговец, доверяют банку во всем, что касается денег, однако Алисе не следует доверять банку сведения о своих покупках. Цифровые деньги и идеальное преступление У цифровых денег есть и обратная сторона. В некоторых случаях излишняя секретность приносит вред. Смотрите, как Алиса совершает идеальное преступление [1575]: 1) Алиса похищает ребенка.
ГЛАВА 6. Эзотерические протоколы 173 2) Алиса подготавливает 10000 анонимных денежных переводов по $1000 (либо иное число переводов на нужную ей сумму). 3) Алиса маскирует все 10000 денежных переводов по протоколу слепой подписи. Затем Алиса отсылает их властям, угрожая убить ребенка, если они не выполнят такие инструкции: a. Банк должен подписать все 10000 денежных переводов. b. Результаты должны быть опубликованы в газете. 4) Власти покоряются. 5) Алиса покупает газету, демаскирует денежные переводы и начинает тратить деньги. Власти не смогут найти Алису, отслеживая денежные переводы. 6) Алиса отпускает ребенка. Обратите внимание, эта ситуация значительно хуже чем при использовании денег на любых физических носителях, скажем, наличных. Если нет физического контакта, у полиции гораздо меньше возможностей задержать похитителя. Однако в целом цифровые деньги не слишком удобны для преступников. Проблема в односторонности анонимности- покупатель анонимен, а продавец- нет. Более того, продавцу не скрыть факт получения денег. Цифровые деньги помогут правительству установить, сколько денег вы зарабатываете, однако узнать, на что вы их тратите, останется невозможным. Реальные цифровые деньги Голландская компания, БщЮазЬ, владеющая большинством патентов в области цифровых денег, создала продукты, практически реализующие протоколы цифровых денег. Если это вас интересует, обратитесь по адресу Э^СазЬ ВУ, Кгшз1аап 419, 1098 УА Атз1;егс1ат, Ке1Ьег1ап^з. Другие протоколы цифровых денег Известны и другие протоколы цифровых денег, описанные, например, в [707, 1554, 734, 1633, 973]. В ряде протоколов используется весьма сложный математический аппарат. Как правило, любой протокол цифровых денег можно отнести к одной из нескольких категорий. Онлайновые системы требуют, чтобы торговец связывался с банком при каждой продаже, что очень похоже на современный протокол оплаты кредитными карточками. Если возникает какое-нибудь затруднение, банк не принимает деньги, и Алиса не может смошенничать. Оффлайновые (о$-Ипе) системы, подобные протоколу 4, не требуют от продавца связываться с банком до завершения транзакции между продавцом и покупателем. Эти системы не мешают Алисе жульничать, но позволяют обнаружит мошенничество. Протокол 4 не только обнаруживает мошенничество Алисы, но и раскрывает при этом ее личность. Алиса, зная последствия, удерживается от обмана. Еще один метод заключается в создании специализированной смарт-карты (см. раздел 24.13), в которую встроена защищенная от взлома микросхема, называемая
174 Прикладная криптография наблюдателем [332, 341, 387]. В микросхеме-наблюдателе хранится небольшая база данных всех сумм цифровых денег, затраченных с помощью этой карты. Если Алиса попытается скопировать какие-то цифровые деньги и истратить их повторно, встроенная микросхема-наблюдатель обнаружит такую попытку и запретит транзакцию. А так как микросхема-наблюдатель защищена от взлома, Алиса не может удалить ее базу данных, не разрушив полностью карту. Цифровые деньги могут оборачиваться в экономике; когда, в конце концов, их будут депонировать, банк может проверить наличные и, если обнаруживается обман, установить мошенника. Протоколы цифровых денег можно классифицировать и по другому признаку. Номинал цифровых монет фиксирован, поэтому людям, использующим эту систему, нужны монеты разных номиналов. Цифровые чеки можно использовать для выплаты любой суммы, вплоть до предельной, а неистраченный остаток можно вернуть на счет. В [225, 226, 227] и [563, 564, 565] описаны два превосходных и совершенно отличающихся друг от друга оффлайновых протокола цифровых монет. Можно также упомянуть систему КеЮазЬ (сетевые наличные) со слабо развитыми средствами обеспечения анонимности [1048, 1049]. В [289] описана еще одна система. В [1211] Тацуаки Окамото (Та&иакл Окато1о) и Казуо Охта (Кагио ОЬ1а) приводят шесть требований к идеальной системе цифровых денег: 1. Независимость. Надежность цифровых денег должна быть независима от местонахождения. Наличные могут передаваться по компьютерным сетям. 2. Защищенность. Цифровые деньги невозможно скопировать и использовать повторно. 3. Тайна частной жизни (Неотслеживаемость). Частная жизнь пользователя должна быть защищена - увязать пользователя с его покупками невозможно. 4. Оффлайновость платежей. При оплате пользователем покупки цифровыми деньгами, протокол между пользователем и продавцом должен исполняться в оффлайновом режиме. Иными словами, для обработки платежа пользователя торговцу не обязательно соединяться с хостом. 5. Переносимость. Цифровые деньги должны допускать возможность передачи другим пользователям. 6. Делимость. Часть данной суммы цифровых денег можно подразделить на меньшие суммы. (Разумеется, в конце концов, общая сумма должна сойтись). Описанные выше протоколы удовлетворяют требованиям 1—4, однако не соответствуют требованиям 5 и 6. Ряд онлайновых систем цифровых денег удовлетворяют всем требованиям, за исключением четвертого [318, 413, 1243]. В [339] предложена первая оффлайновая система, соответствующая требованиям 1—4, несколько напоминающая одну из описанных выше. Окамото и Охта предложили систему, соответствующую требованиям 1—5 [1209], кроме того, ими предложена система, соответствующая требованиям 1—6, однако объем данных, необходимых для одного платежа, составляет около 200 Мбайт. В [522] описана оффлайновая система цифровых монет, удовлетворяющая требованию делимости. Схема цифровых денег, предложенная теми же авторами [1211], соответствует требованиям 1—6 без необходимости работы с таким огромным объемом данных.
ГЛАВА 6. Эзотерические протоколы 175 Общий объем данных, необходимых для одного электронного платежа составляет около 20 Кбайт, причем протокол можно выполнить за несколько секунд. Авторы рассматривают эту схему как первую идеальную систему неотслеживаемых цифровых денег. Анонимные кредитные карточки В протоколе, описанном в [988], для защиты личности клиента используются несколько разных банков. У каждого клиента открыты счета в двух разных банках. Первый банк, которому известна личность клиента, может зачислять деньги на его счет. Второй банк знает клиента только под псевдонимом (подобно номерному счету в швейцарском банке). Клиент может снимать деньги со счета во втором банке, если докажет, что он - владелец счета. Однако этот банк не знает личности клиента и не может зачислять деньги на его счет. Первый банк знает клиента (но не знает псевдоним) и перечисляет деньги на счет во втором банке. Затем клиент тратит эти деньги анонимно. В конце месяца второй банк выставляет первому банку счет, надеясь, что тот его оплатит. Первый банк передает счет клиенту, тоже надеясь, в свою очередь, на оплату. Когда клиент оплачивает счет, первый банк перечисляет второму банку дополнительные деньги. Все транзакции выполняются через посредника, который исполняет роль электронной федеральной резервной системы: оплачивает банковские счета, регистрирует сообщения и создает аудиторский след. В [988] описаны основные вопросы обмена между клиентом, продавцом и различными банками. Если все стороны не сговорятся против клиента, ему гарантирована анонимность. Однако поскольку здесь не используются цифровые деньги, банку нетрудно смошенничать. Протокол позволяет клиентам пользоваться преимуществами кредитных карточек, но без раскрытия своих личностей.
Часть 2 МЕТОДЫ КРИПТОГРАФИИ
ГЛАВ А 7. Длина ключей 7.1. Длина симметричных ключей Безопасность симметричных криптосистем определяется двумя факторами: стойкостью самого алгоритма и длиной ключей. Большее значение имеет первый фактор; однако роль второго проще продемонстрировать. Предположим, что алгоритм является совершенно стойким. Добиться этого на практике чрезвычайно трудно, но в данном примере - достаточно просто. Под «совершенно» я подразумеваю отсутствие лучшего пути взлома криптосистемы, чем лобовое вскрытие перебором всех возможных ключей. Чтобы приступить к лобовому вскрытию, криптоаналитику достаточно располагать отрывком шифртекста и соответствующего открытого текста- лобовое вскрытие относится к вскрытию с известным открытым текстом. Для вскрытия блочного шифра криптоаналитику нужен блок шифртекста и соответствующий открытый текст, обычно длиной 64 бит. Заполучить такие фрагменты открытого текста и шифртекста проще, чем можно вообразить. Например, криптоаналитик может каким-то образом добыть копию открытого текста сообщения и перехватить соответствующий шифртекст. Кроме того, он может что-то знать о формате шифртекста: например, что это - файл в формате ^огбРеИес! или стандартный заголовок сообщения электронной почты, или файл из каталога 1Ж1Х, или изображение в формате Т1РР, или стандартная запись в базе данных клиентов. Во все эти форматы включены некие стандартные байты. Для такого вскрытия криптоаналитику нужно не так уж много открытого текста. Рассчитать сложность лобового вскрытия нетрудно. Если используется 8-битовый ключ, существуют всего 28 (или 256) возможных ключей. Следовательно, чтобы найти правильный ключ, достаточно не более 256 тестов, а с вероятностью 50% ключ будет найден после половины попыток. Если же длина ключа равна 56 бит, существуют 256 возможных ключей. Если за секунду компьютер в состоянии перебрать 106 (миллион) ключей, поиск ключа займет в среднем 2285 лет. Если используется 64-битовый ключ, этому же суперкомпьютеру понадобится около 585000 лет, чтобы найти правильный ключ среди 264 возможных ключей. Если длина ключа равна 128 бит, поиск ключа займет Ю25лет. Как известно, возраст Вселенной составляет всего 10ю лет, поэтому 1025 лет - огромное время. При 2048-битовом ключе миллион компьютеров, работая параллельно и тестируя миллион ключей в секунду каждый, затратят на поиски ключа 10597 лет. К тому времени Вселенная давно сожмется или расширится, превратившись в ничто. Прежде чем бросаться изобретать криптосистему с 8-килобайтным ключом, вспомните о другой стороне совершенства- стойкости. Стойкость алгоритма должна быть такова, чтобы лучшего способа его вскрытия, кроме лобового, просто не существовало. Это отнюдь не так просто, как может показаться. Криптография - это тонкое искусство. Некоторые криптосистемы, которые выглядят совершенными, зачастую оказываются чрезвычайно уязвимыми. Нередко стойкость криптосистемы может резко ослабить пара небольших изменений. Предупреждаю криптографов-любителей: подвергайте почти шизофреническому сомнению любой новый алгоритм. Доверяйте только тем
ГЛАВА 7. Длина ключей 179 алгоритмам, над которыми годами тщетно бились профессиональные криптографы, так и не сумев взломать их. Не обольщайтесь утверждениями разработчиков новых алгоритмов об их колоссальной надежности. Вспомните важное положение, высказанное в разделе 1.1: надежность криптосистем должна опираться на ключ, но не сам алгоритм. Допустим, криптоаналитик знает ваш алгоритм до мельчайших подробностей. Допустим, он располагает достаточным объемом шифртекста, чтобы попытаться вскрыть его с использованием только шифртекста. Допустим, он может попытаться вскрыть его с использованием открытого текста, имея в распоряжении столько данных, сколько ему нужно. Предположим даже, что он может попытаться вскрыть алгоритм с использованием подобранного открытого текста. Так вот, если ваша криптосистема устоит перед лицом всех этих напастей, можно рассчитывать, что у вас действительно есть что-то. Несмотря на это предупреждение, криптография всегда предоставляет достаточное пространство для маневра. Действительно, во многих практических случаях такая высокая надежность не нужна. У большинства противников нет таких знаний и вычислительных средств, как у правительств ведущих стран, а тем, кто обладает такими возможностями, может оказаться ненужным взламывать вашу криптосистему. Но если вы замышляете государственный переворот, испытанные и выверенные алгоритмы, приведенные в конце этой книги, будут вам жизненно необходимы. Ну, а остальные читатели пусть просто позабавятся. Оценка продолжительности и стоимости лобовой атаки Как вы помните, лобовое вскрытие обычно относится к вскрытию с использованием известного открытого текста. Таким образом, для лобового вскрытия необходимо располагать небольшим фрагментом шифртекста и соответствующего ему открытого текста. Если вы предполагаете, что самый эффективный путь взлома алгоритма - лобовая атака (небесспорное допущение), ключ должен быть достаточно длинным, чтобы сделать вскрытие нереальным. Но насколько длинным? Время, необходимое для лобового вскрытия, зависит от двух параметров: числа тести¬ руемых ключей и продолжительности каждого теста. В большинстве симметричных алгоритмов в качестве ключа можно использовать любую битовую комбинацию постоянной длины. Так, длина ключа БЕ8 равна 56 бит, а число возможных ключей составляет 256. Длина ключей ряда алгоритмов, обсуждаемых в этой книге, равна 64 бит, а число возможных ключей - 264. В некоторых алгоритмах используются 128-битовые ключи. Меньшее значение имеет скорость тестирования каждого возможного ключа. Для целей нашего анализа предположим, что скорость тестирования ключей всех алгоритмов примерно одинакова. На самом деле скорости тестирования разных алгоритмов могут различаться в два, три, и даже десять раз. Но поскольку мы пытаемся подобрать ключ такой длины, что его взлом практически невозможен, небольшие различия скоростей тестирования несущественны. В среде криптологов большинство споров по поводу лобового вскрытия вызывает алгоритм ЭЕ8. В 1977 году Уитфилд Диффи (\\ПнШе1с1 ЕИШе) и Мартин Хеллман (Магбп Не11тап) [497] постулировали существование специализированной машины взлома алгоритма ЭЕ8. Эта машина состоит из миллионов микросхем, причем каждая тестирует
180 Прикладная криптография миллион ключей в секунду. Такая машина может протестировать 256 ключей за 20 часов. Если же эту машину использовать для вскрытия алгоритма с 64-битовым ключом, тестирование всех 264 ключей займет 214 дней1. Задача лобового вскрытия как будто специально придумана для параллельных процессоров. Каждый процессор может тестировать особое подмножество пространства ключей. Процессорам не нужно обмениваться между собой информацией, поскольку им достаточно единственного сообщения об успехе. Не требуется и совместный доступ к памяти. Построить машину с миллионом независимых друг от друга процессоров возможно. Недавно Майкл Винер (МюЬае1 Мепег) взялся создать машину для лобового взлома [1597, 1598]. (Он проектировал машину для взлома алгоритма ОЕ8, но анализ справедлив для большинства алгоритмов). Он разработал специализированные микросхемы, платы и стойки, оценил затраты и пришел к заключению, что за миллион долларов можно построить машину, которая взломает 56-битовый ключ ЭЕ8 в среднем за 3.5 часа (и гарантированно за 7 часов). Соотношение стоимость/скорость взлома возрастает линейно. В табл. 7.1 приведены некоторые данные для ключей разной длины. Вспомните закон Мура: вычислительные возможности удваиваются примерно через каждые 18 месяцев. Это значит, что каждые пять лет затраты будут снижаться на порядок, и то, что в 1995 году стоит миллион долларов, в 2000 году обойдется примерно в $100000. Еще лучше справятся с задачей процессоры с конвейерной обработкой данных [724]. Для 56-битовых ключей эти суммы вполне посильны большинству крупных корпораций и многим преступным сообществам. Военные бюджеты большинства промышленно развитых стран позволяют взламывать и 64-битовые ключи. Вскрытие 80-битовоых ключей все еще за пределами досягаемости, но если сохранятся нынешние тенденции, все изменится уже через 30 лет. Разумеется, глупо прогнозировать вычислительные возможности на 35 лет вперед. Технологические прорывы, так популярные в научной фантастике, могут сделать эти прогнозы смехотворными. С другой стороны, физические ограничения, неизвестные в настоящее время, могут сделать эти прогнозы излишне оптимистичными. В криптографии разумнее оставаться пессимистом. Поэтому использование алгоритмов с 80-битовым ключом недальновидно. Используйте ключ длиной не менее 112 бит. Таблица 7.1. Оценки среднего времени аппаратного лобового вскрытия в 1995 году Стоимость Длина ключа, бит 40 56 64 80 112 128 $100000 2 сек 35 час 1 год 70000 лет 1014 лет 1019 лет $1 миллион 0.2 сек 3.5 час 37 дней 7000 лет 1013 лет 1018 лет $10 миллионов 0.02 сек 21 мин 4 дня 700 лет 1012 лет 1017 лет 1 Когда в 1997 был объявлен конкурс по вскрытию ЭЕ8, для этого потребовалось 96 дней, а в последний раз в 1999 г. на его взлом было затрачено меньше суток! - Прим. ред.
ГЛАВА 7. Длина ключей 181 Стоимость Длина ключа, бит 40 56 64 80 112 128 $100 миллионов 2 мсек 2 мин 9 час 70 лет 1011 лет 1016 лет $1 миллиард 0.2 мсек 13 сек 31 час 7 лет Ю10 лет 1015 лет $10 миллиардов 0.02 мсек 1 сек 5.4 мин 245 дней 109 лет 1014 лет $100 миллиардов 2 мксек 0.1 сек 32 сек 24 дня 108лет 1013 лет $1 триллион 0.2 мксек 0.01 сек 3 сек 2.4 дня 107 лет 1012 лет $10 триллионов 0.02 мксек 1 мсек 0,3 сек 6 час 106лет 10й лет Если взломщику очень нужно взломать ключ, все, что ему необходимо- деньги. Поэтому стоит попытаться оценить минимальную «стоимость» ключа, т.е. установить пределы стоимости информации, зашифрованной данным ключом, чтобы ее вскрытие было экономически оправданным. Например, если шифрованное сообщение стоит $1,39, бессмысленно устанавливать аппаратуру стоимостью 10 миллионов долларов для взлома ключа. С другой стороны, если стоимость открытого текста - 100 миллионов долларов, дешифрирование только этого сообщения окупит стоимость аппаратуры взлома. Кроме того, некоторые сообщения со временем быстро обесцениваются. П рограммы -взломши ки Лобовое вскрытие без специализированного оборудования и мощных параллельных компьютеров весьма затруднительно. Программное вскрытие в тысячу раз медленнее аппаратного вскрытия. Реальная опасность лобового вскрытия программами-взломщиками не в его неизбежности, а в бесплатности. Ведь ничего не стоит загрузить простаивающий микрокомпьютер проверкой возможных ключей. Если правильный ключ найдется- замечательно, нет - ничего не потеряно. Также ничего не стоит использовать для взлома целую сеть микрокомпьютеров. В недавних опытах с алгоритмом ЭЕЗ сорок рабочих станций за один день сумели тестировать 234 ключей [603]. При такой скорости для перебора всех возможных ключей понадобятся четыре миллиона дней, но если вскрытием займется достаточное число людей, то кому-то да повезет и раньше2. Вот как сказано об этом в [603]: Основная опасность программного вскрытия - слепое везение. Вообразите университетскую сеть, объединяющую 512 рабочих станций. Для некоторых кампусов это весьма скромная сеть. Такие сети могут даже охватывать весь мир, координируя деятельность по электронной почте. Допустим, каждая рабочая станция исполняет алгоритм со скоростью 15000 тестов в секунду.... С учетом потерь времени на тестирование и смену ключей снизим скорость до... 2 Сегодня сорок 1ГГц персональных компьютеров смогут проверить за день 245 ключей, и им потребуется около 2000 дней на всю работу. Закон Мура немного нарушен, видимо, из-за того, что возрастает не только тактовая частота компьютеров, но и количество операций, производимых за такт. - Прим. ред.
182 Прикладная криптография 8192 тестов в секунду. Чтобы исчерпать пространство (56-битовых) ключей с помощью этой системы, понадобятся 545 лет (при круглосуточной работе сети). Заметим, что такие вычисления в течение одного дня дают студентам-хакерам всего один шанс из 200000 раскрыть ключ. Но за долгий уикенд их шансы повысятся до одного из 66000. Чем производительнее аппаратура и больше число задействованных станций, тем выше шансы. Вероятность заработать на жизнь игрой на скачках невысока, но разве не этими выигрышами полны пресс-релизы? Например, эта вероятность намного выше, чем шанс выиграть в правительственных лотереях. «Один на миллион»? «Один раз за тысячу лет»? Теперь это невозможно утверждать искренне. Может быть, лучше сказать- приемлемый риск? Использование алгоритма с 64-битовым ключом вместо 56-битового ключа усложняет вскрытие в 256 раз. А вот 40-битовый ключ делает картину просто мрачной. Сеть из 400 компьютеров с быстродействием 32000 шифрования в секунду за день может справиться с лобовым вскрытием 40-битового ключа.3 (С 1992 году алгоритмы КС2 и КС4 разрешено экспортировать с 40-битовым ключом - см. раздел 13.8). 128-битовый ключ делает нелепой саму мысль о лобовом вскрытии. По оценке экспертов, к 1996 году во всем мире будут использоваться 200 миллионов компьютеров. В оценке учтены все компьютеры - от гигантского мэйнфрейма Сгау до карманных. Но даже если все эти компьютеры бросить на лобовое вскрытие и каждый компьютер будет выполнять шифрование миллион раз в секунду, время взлома ключа все равно превысит в миллион раз время существования Вселенной. Нейронные сети Нейронные сети не слишком полезны для криптоанализа, главным образом, из-за формы пространства решений. Нейронные сети более-менее успешно можно использовать для решения задач с множеством решений, когда новые решения могут быть лучше предыдущих. Это позволяет нейронным сетям обучаться, предлагая все лучшие и лучшие решения. Процесс взлома не оставляет места обучению: вы либо раскрываете ключ, либо нет. (По крайней мере, это верно при вскрытии любого надежного алгоритма). Нейронные сети хорошо работают в структурированных средах, допускающих обучение, но не в высокоэнтропийном, предположительно случайном мире криптографии. Вирусы Самое трудное в получении доступа к миллионам компьютеров для лобового вскрытия - убедить миллионы владельцев компьютеров принять участие во вскрытии. Вы можете вежливо попросить, но на это нужно много времени, и они могут отказаться. Вы можете попробовать взломать их компьютеры, но это займет еще больше времени и может закончиться тюрьмой. Кроме того, вы можете попытаться использовать компьютерный вирус, чтобы распространить программу-взломщик среди возможно большего числа компьютеров. 3 Опять же скорость с тех пор повысилась почти на два порядка, сейчас хватило бы и десятка 1 ГГц станций со скоростью перебора до миллиона ключей в секунду на каждой. - Прим. ред.
ГЛАВА 7. Длина ключей 183 Эта весьма коварная идея впервые предложена в [1593]. Взломщик создает и выпускает на волю компьютерный вирус. Этот вирус не переформатирует жесткий диск, не удаляет файлы, однако во время простоя компьютера он занимается криптоаналитической проблемой лобового вскрытия. Разные исследования показывают, что компьютеры простаивает 70—90% времени, так что у вируса будет достаточно машинного времени для решения своей задачи. Если же вирус будет «доброжелательным», он даже может написать какое-нибудь сообщение на экране, пока он работает. В конце концов, какой-нибудь компьютер найдет нужный ключ. С этого момента вирус начнет действовать одним из двух методов. Во-первых, он может породить другой вирус. Он не будет делать ничего, кроме самовоспроизведения и удаления всех обнаруженных копий вскрывающего вируса. В то же время, в нем содержится информация о корректном ключе. Этот новый вирус начнет распространяться по компьютерам, пока не доберется до компьютера разработчика исходного вируса. В другом, более изощренном методе, на экран выводится примерно такое сообщение: В этом компьютере произошла серьезная ошибка. Пожалуйста, позвоните по телефону 1-800-123-4567 и продиктуйте оператору следующее 64-разрядное число: хххх хххх хххх хххх. Первому, кто сообщит об этой ошибке, будет выплачено вознаграждение $100. Насколько эффективна такая атака? Предположим, рядовой зараженный компьютер тестирует тысячу ключей в секунду. Эта скорость намного меньше потенциальных возможностей компьютера, поскольку иногда компьютер будет решать и другие задачи. Кроме того, предположим, что типичный вирус инфицирует 10 миллионов компьютеров. Тогда этот вирус может вскрыть 56-битовый ключ за 83 дня, а 64-битовый - за 58 лет. Вероятно, вам придется подкупить разработчиков антивирусных программ, но это уже ваши проблемы. По мере роста быстродействия компьютеров и скорости распространения вируса, эффективность вскрытия этого типа повышается. Китайская лотерея Китайская лотерея - эклектичная, но реализуемая идея криптоаналитического компьютера с массовым параллелизмом [1278]. Вообразите, что в каждый проданный радиоприемник и телевизор встроена микросхема, вскрывающая алгоритм «в лоб» со скоростью миллион тестов/сек. Каждая микросхема программируется на автоматическую проверку различных множеств ключей после получения по эфиру пары открытый текст/шифртекст. Тогда каждый раз, когда китайскому правительству понадобится взломать ключ, оно передает по радио исходные данные. Все радиоприемники и телевизоры страны начинают работать. В конечном счете, на чьем-нибудь дисплее появляется правильный ключ. Китайское правительство выдает этому человеку премию. Это гарантирует, что результат будет сообщен быстро и точно, а, кроме того, способствует рыночному успеху радиоприемников и телевизоров с микросхемами-взломщиками. Если у каждого гражданина КНР, будь то мужчина, женщина или ребенок, есть радиоприемник или телевизор, правильное значение 56-битового ключа найдется за
184 Прикладная криптография 61 сек. Если радиоприемником или телевизором владеет только каждый десятый китаец (что ближе к действительности), правильный ключ найдется через 10 мин. Правильный 64-битовый ключ будет раскрыт через 4.3 часа, а если радиоприемник или телевизор есть только у каждого десятого китайца - 43 часа. Чтобы реализовать такое вскрытие на практике, необходимо внести ряд уточнений. Во- первых, задача упростится, если каждая микросхема будет тестировать случайные ключи, а не уникальные наборы ключей. Это замедлит вскрытие на 39%, что не слишком существенно для чисел такого масштаба, с которыми мы работаем. Кроме того, Китайская коммунистическая партия должна принять решение, что каждый должен включать свой приемник или телевизор в определенное время, чтобы гарантировать работу всех приемных устройств во время передачи пары открытый текст/шифртекст. Наконец, следует приказать каждому гражданину позвонить в Центральный Комитет КПК (или как он там называется), когда ключ появится у него на экране, и зачитать отобразившуюся строку чисел. В табл. 7.2 сравнивается эффективность Китайской лотереи для разных стран и ключей различной длины. Понятно, что Китай оказался бы в лучшем положении, если бы у каждого китайца - мужчины, женщины или ребенка - был свой радиоприемник или телевизор. В Соединенных Штатах население меньше, но аппаратуры гораздо больше. Например, штат Вайоминг может самостоятельно взломать 56-битовь1й ключ менее чем за день. Таблица 7.2. Оценки среднего времени лобового вскрытия в китайской лотерее (Все данные взяты из «№огМЛ1тапас апс!Воок о/Рас(з» за 1995 год). Страна Население Число телевизоров/радио¬ приемников Время взлома 56 бит 64 бита Китай 1190431000 257000000 280 сек 20 час США 260714000 739000000 97 сек 6.9 час Ирак 19890000 4730000 4.2 час 44 дня Израиль 5051000 3640000 5.5 час 58 дней Вайоминг 470000 1330000 15 час 160 дней Виннемукка, Невада 6100 17300 48 дней 34 года Биотехнология Если создание биочипов действительно возможно, глупо не использовать их как распределенный криптоаналитический инструмент лобового вскрытия. Рассмотрим вымышленное животное, называемое «ОЕ8озавр» [1278]. Оно состоит из оптически прозрачных биологических клеток, умеющих тестировать возможные ключи. По какому-то широковещательному оптическому каналу в клетки передаются пары открытый текст/шифртекст. Решения переносятся к органам речи ОЕ8озавра специальными клетками, путешествующими по кровеносной системе животного.
ГЛАВА 7. Длина ключей 185 В доисторические времена средний динозавр состоял примерно из 1014 клеток (без микробов). Если каждая клетка может выполнять миллион шифрований в секунду (вообще-то, это спорно), вскрытие 56-битового ключа займет 7*10"4 сек. Вскрытие 64-битового ключа потребует не более 0.2 сек. Вскрытие же 128-битового ключа все равно затянется на 1011 лет. Другой биологический подход заключается в создании методами генной инженерии криптоаналитических водорослей, умеющими вскрывать в лоб криптографические алгоритмы [1278]. Такие водоросли позволили бы создать распределенный компьютер с огромным числом процессоров, поскольку водоросли могут покрывать большие пространства. Пару открытый текст/шифртекст можно передавать по радио через спутник. Когда организм находит решение, соседние клетки, изменяя свой цвет, передают его обратно на спутник. Предположим, что типичная клетка морской водоросли - это куб со стороной Юмкм (возможно, это завышенная оценка). Следовательно, 1015 клеток заполнят кубический метр. Если вылить их в океан, заполнив пространство площадью 200 квадратных миль (518 км2) на глубину один метр (как это сделать - ваши проблемы, я только предлагаю идею), в океане будут плавать 1023 водорослей (более сотни миллиардов галлонов). (Для сравнения, из танкера УаЫе! вытекло 10 миллионов галлонов нефти). Если каждая клетка может тестировать миллион ключей в секунду, они восстановят ключ 128-битового алгоритма только через 100 лет. (Кстати, цветение морских водорослей - тоже ваша проблема). Крупные успехи в повышении быстродействия морских водорослей, уменьшение размера клетки и расширение линзы на весь океан могут заметно улучшить эти значения. Даже не спрашивайте меня о нанотехнологии. Термодинамические ограничения Из второго закона термодинамики следует, что для представления информации необходимо затрачивать некоторое количество энергии. Для записи одного бита путем изменения состояния системы необходимо затратить энергию, не меньшую кТ\ где Т - абсолютная температура системы, а к = 1.38 * 1СГ16 эрг/К - постоянная Больцмана. (Не волнуйтесь, урок физики уже почти закончен). Если принять, что температура окружающей Вселенной 3.2°К, идеальный компьютер, работая при Т=32°К, затрачивал бы при каждой установке и сбросе бита 4.4*10'16эрг энергии. Если же компьютер должен работать при температуре ниже температуры космического пространства, потребовался бы дополнительный расход энергии на теплоотвод. Далее, энергия, излучаемая за год нашим Солнцем, составляет около 1.21*1041 эрг. Этого достаточно для выполнения 2.7*1056 перемен бита в нашем идеальном компьютере, а этого, в свою очередь, хватит для пробега 187-разрядным счетчиком всех его значений. Если мы построим вокруг Солнца сферу Дайсона и перехватим без потерь всю его энергию, излучаемую за 32 года, мы можем создать компьютер, способный пересчитать числа до 2192 Конечно, энергии для проведения каких-нибудь полезных вычислений с этим счетчиком уже не останется.
186 Прикладная криптография Но это только одна жалкая звезда. При взрыве типичной сверхновой выделяется около 1051 эрг энергии. (В виде нейтрино выделяется в сто раз больше энергии, но пусть они пока летают). Если всю эту энергию бросить на одну вычислительную операцию, 219-разрядный счетчик сможет циклически проходить все свои состояния. Эти числа не имеют ничего общего с самой аппаратурой, они просто показывают максимальные значения, допускаемые термодинамикой. Кроме того, эти числа наглядно демонстрируют, что лобовое вскрытие 256-битового ключа невозможно, пока компьютеры построены из обычной материи и располагаются в обычном пространстве4. 7.2. Длина открытого ключа В разделе 2.3 мы обсудили однонаправленные функции. К однонаправленным функциям можно отнести умножение двух больших простых чисел. Действительно, вычислить их произведение, перемножив числа, нетрудно, однако крайне сложно разложить произведение на множители и найти два больших простых числа (см. раздел 11.3). Криптография с открытым ключом использует эту идею для создания однонаправленной функции с потайным входом. Но в действительности это ложная посылка. Никем не доказано, что разложение на множители (факторизация) - трудная задача (см. раздел 11.4). Сегодня известно только, что это предположение правдоподобно. Но даже если это так, никто не сможет доказать, что трудные задачи действительно трудны. Итак, почти все специалисты допускают, что разложение на множители представляет трудную задачу, но математически строго это никем не доказано. На этом стоит остановиться подробнее. Нетрудно вообразить, что лет через 50 мы соберемся вместе, вспоминая старое доброе время, когда все люди полагали трудной задачу разложения на множители, что и лежало в основе криптографии, а различные компании делали на этом деньги. Нетрудно допустить, что будущие достижения теории чисел упростят разложение на множители, либо успехи теории сложности сделают разложение на множители тривиальной задачей. Однако верить в это нет оснований. Большинство специалистов, знающих предмет достаточно, чтобы составить собственное мнение, скажут вам, что подобное развитие событий маловероятно. И в то же время мы не можем отрицать его полностью. Так или иначе, в основе большинства современных алгоритмов шифрования с открытым ключом лежит предположение о сложности разложения на множители больших чисел, которые представляют собой произведение двух больших простых чисел. (В основе некоторых алгоритмов лежит так называемая задача дискретного логарифмирования, но пока предположим, что эти рассуждения применимы и к ней). Эти алгоритмы тоже поддаются лобовому вскрытию, но иного типа. Взлом алгоритмов шифрования с открытым ключом заключается не в переборе всех возможных ключей, а в попытках 4 Как замечает Шнайер в дополнениях к книге, этот раздел не совсем верен. Да, требуется кТ эрг энергии для установки бита в 0 или 1, т.к. эта операция необратима. Но для операции дополнения бита не требуется никакого минимального количества энергии. Это приводит к кому, что можно осуществлять любые вычисления (кроме копирования результатов), используя только операции дополнения битов. В теоретическом плане, это означает, что количество энергии, необходимое для лобовой атаки, зависит не экспоненциально от длины ключа, а линейно.
ГЛАВА 7. Длина ключей 187 разложения большого числа на множители (либо точно такой же проблемы взятия дискретных логарифмов в очень большом конечном поле). Если число слишком мало, вы ничем не защищены. Если число достаточно велико, вы надежно защищены от всех вычислительных средств мира, если они будут привлечены для решения этой задачи от настоящего момента и до превращения Солнца в сверхновую звезду. Таковы сегодняшние представления математики этой проблемы. Математический аппарат разложения на множители подробно обсуждается в разделе 11.3. Здесь же мы ограничимся оценкой времени разложения на множители чисел различной длины. Разложение больших чисел на множители весьма трудно, но, к несчастью для разработчиков алгоритмов, этот процесс быстро упрощается, причем намного быстрее, чем предсказывалось математиками. В 1976 году Ричард Гай (КлсЬагб Сиу) писал: «Я был бы весьма удивлен, если в этом столетии кто-нибудь научится разлагать на множители произвольные числа порядка Ю80» [680]. В 1977 году Рон Ривест (Яоп Клуез1) заявил, что разложение на множители 125-разрядного числа потребует 40 квадриллионов лет [599]. В 1994 году на множители было факторизовано 129-разрядное число [66]. Если из этого можно сделать какой-то вывод, так это то, что делать такие предсказания просто глупо. В табл. 7.3 представлены результаты разложения на множители за последнюю дюжину лет. Самым быстрым алгоритмом разложения на множители тогда был алгоритм квадратичного решета (см. раздел 11.3). Таблица 7.3. Разложение на множители с помощью квадратичного решета Год Число десятичных разрядов в разлагаемом числе Во сколько раз сложнее разложить на множители 512-разрядное число 1983 71 > 20 миллионов 1985 80 > 2 миллионов 1988 90 250000 1989 100 30000 1993 120 500 1994 129 100 Эти числа просто ужасают. Сегодня 512-разрядные числа нередко используются в операционных системах. Таким образом, вполне реально разложение их на множители и полная компрометация системы защиты. Например, компьютерный вирус-червь в Интернете может сделать это в течение уикенда. Вычислительные возможности обычно оценивают в М1Р8-годах. М1Р8-год - это годовая работа компьютера, выполняющего миллион операций в секунду (тННоп т$1гис1юп5 рег зесопб, МГР8), т.е. около 3*1013 операций. Условно принято, что компьютер с производительностью 1 М1Р8-год эквивалентен компьютеру УАХ 11/780 фирмы ОЕС. Т.е. М1Р8-год - это год работы компьютера УАХ 11/780 или эквивалентного ему. (Например, мощность компьютера Реп1шт с тактовой частотой 100 МГц составляет 50 М1Р8, а 1800-узловой 1п1е1 Рага^оп - примерно 50000 М1Р8).
188 Прикладная криптография В 1983 году разложение на множители 71-разрядного числа требовало 0.1 М1Р8-года, в 1994 году разложение на множители 129-разрядного числа (Я8А-129) потребовало 5000 М1Р8-лет. Такой взлет вычислительных возможностей обусловлен, главным образом, внедрением распределенных вычислений, использующих время простоя сетевых рабочих станций. Этот подход предложен Бобом Силверманом (ВоЬ 8Пуегтап) и окончательно развит Арженом Ленстрой (Афп Ьепз1:га) и Марком Манассом (Магк Мапаззе). В 1983 году разложение на множители заняло 9.5 часов процессорного времени компьютера СгауХ-МР; в 1994 году разложение на множители заняло 5000М1Р8-лет и использовало период простоя 1600 компьютеров во всем мире в течение около восьми месяцев. Подобные распределенные вычисления допускаются современными методами разложения на множители. Положение дел даже продолжает ухудшаться. На смену квадратичному решету пришел новый метод разложения на множители - общий алгоритм решета числового поля. В 1989 году математики сказали бы, что решето числового поля никогда не найдет практического применения. В 1992 году они заявили бы, что это решето реализуемо, но дает преимущество по сравнению с квадратичным решетом только для чисел с более чем 130—150 десятичными разрядами или около того. Сегодня стало понятно, что этот новый алгоритм работает быстрее, чем квадратичное решето, для чисел, значительно меньших, чем 116-разрядные числа [472, 635]. Решето числового поля позволяет разложить на множители 512-разрядное число в 10 раз быстрее, чем квадратичное решето5. На 1800-узловом компьютере 1п1е1 Рага^оп исполнение этого алгоритма заняло бы менее года. В табл. 7.4 показано число М1Р8-лет, необходимых для разложения чисел различных размеров с помощью современных реализаций общего решета числового поля [1190]. Таблица 7.4. Разложение на множители с помощью общего решета числового поля Число битов Число М1Р8-лет для разложения на множители 512 30000 768 2*108 1024 3*10" 1280 1*1014 1536 3*1016 2048 3*1020 Кроме того, быстродействие решета числового поля становится все выше и выше. Математики предлагают все новые трюки, методы оптимизации и технические приемы, и нет причин полагать, что эта тенденция прервется. Сходный алгоритм - специальное решето числового поля - уже сегодня позволяет разложить на множители числа некоторой специализированной формы, обычно не используемой в криптографии, 5 И действительно, для разложения Я8А-130 в 1996 г. потребовалось всего 500 М1Р8-лет, а последний рекорд факторизации - разложение Я8А-155 (512-битное число!) - заняло 8000 М1Р8- лет в 1999 г. - Прим. ред.
ГЛАВА 7. Длина ключей 189 намного быстрее, чем общее решето числового поля позволяет разложить на множители любые числа того же размера. Естественно предположить, что общее решето числового поля можно оптимизировать, чтобы достичь такой же скорости [1190]. Возможно даже, что специалисты АНБ уже знают, как это сделать. В табл. 7.5 приведено число М1Р8-лет, необходимых для разложения на множители чисел различной длины с помощью специального решета числового поля [1190]. Таблица 7.5. Разложение на множители с помощью специального решета числового поля Число битов Число М1Р8-лет для разложения на множители 512 <200 768 100000 1024 3*107 1280 3* 10 9 1536 2*10и 2048 4*1014 В 1991 году участники семинара Европейского института безопасности систем (Еигореап 1п511Ш1е Гог 8уз1ет 8есигИу) пришли к заключению, что для длительного хранения секретной информации до 2002 года будет достаточно 1024-битовых модулей [150]. Однако они предупредили: «Хотя в этом семинаре участвуют лучшие специалисты в соответствующих областях, это заявление (по поводу срока надежной защиты) следует принимать с осторожностью». Полезный совет. Выбирая длину открытых ключей, опытный криптограф сверхконсервативен. Чтобы правильно выбрать длину ключа, следует оценить нужную степень защиты и время жизни ключа, не забывая о современном состоянии искусства разложения на множители. Сегодня, чтобы добиться того же уровня защиты, который в начале восьмидесятых годов обеспечивали 512-разрядные числа, вам понадобится 1024-разрядное число. Если же вы хотите, чтобы ваши ключи обеспечивали защиту в течение ближайших 20 лет, 1024-разрядное число, по-видимому, следует полагать слишком коротким. Вы можете оказаться в опасном положении, даже если ваши конкретные секреты не стоят усилий, необходимых для разложения на множители вашего модуля. Возьмем, например, автоматизированную банковскую систему, использующую для защиты алгоритм Я8А. Мэллори может предстать перед судом и заявить: «Читали ли вы в газете за 1994 год, что Я8А-129 был взломан и что 512-разрядные числа могут быть разложены на множители любой организацией, согласной выложить несколько миллионов долларов и подождать несколько месяцев? Мой банк использует для защиты 512-разрядные числа и, между прочим, эти семь переводов денег сделаны не мной». Даже если Мэллори лжет, судья может возложить бремя доказательств ложности заявления на банк. Так почему бы не перейти на 10000-битовые ключи? Можно, конечно, но чем длиннее ключи, тем дороже обходятся вычисления. Вам нужен такой ключ, который был бы
190 Прикладная криптография достаточно длинным, чтобы обеспечить защиту, но в тоже время достаточно коротким, чтобы с ним можно было работать. Ранее в этом разделе я назвал пророчества глупостью. Но теперь я сам попробую кое-что предсказать. В табл. 7.6 приведены мои рекомендации по выбору длины открытых ключей в зависимости от срока, в течение которого ключ должен обеспечивать надежную защиту. Для каждого года приведены три значения длины ключа: для частных лиц, для крупных корпораций и для правительств крупных государств. Таблица 7.6. Рекомендуемая длина открытых ключей (бит) Год Частные лица Корпорации Правительства 1995 768 1280 1536 2000 1024 1280 1536 2005 1280 1536 2048 2010 1280 1536 2048 2015 1536 2048 2048 В [66] приведены некоторые дополнительные соображения: Мы верим, что сможем арендовать 100 тысяч компьютеров без сверхчеловеческих усилий и неэтичных действий. Иными словами, мы не собираемся запускать в Интернет червя или иной вирус, который нашел бы нужные нам ресурсы. Во многих организациях многие тысячи компьютеров подключены к сети. Доступ к их ресурсам потребует умелой дипломатии, но вполне реален. Если предположить, что среднее быстродействие компьютера 5 М1Р8, то за 1 астрономический год вполне возможно завершить проект, который требует полмиллиона М1Р8-лет. В проекте разложения на множители 129-разрядного числа задействовалось около 0,03% оценочных вычислительных возможностей Интернета [1190], причем исполнителям даже не пришлось долго упрашивать владельцев компьютеров. Разумно допустить, что хорошо разрекламированный проект может использовать в течение года до 2% мировых вычислительных ресурсов. Предположим, что криптоаналитик- энтузиаст своего дела, сможет получить в свое распоряжение 10000 М1Р8-лет, крупная корпорация- 107М1Р8-лет, а правительство крупной страны - 109М1РЗ-лет. Допустим также, что каждые пять лет вычислительные возможности будут возрастать на порядок. Наконец, предположим, что развитие математического аппарата разложения на множители позволит раскладывать любые числа со скоростью, сравнимой с той, которую обеспечивает специальное решето числового поля. (Пока это невозможно, но прорыв может произойти в любой момент). В табл. 7.6 приведены соответствующие рекомендуемые длины ключей, достаточные для обеспечения надежной защиты в разные годы. Не забывайте учитывать ценность ключа. Открытые ключи нередко используют для защиты критически важной информации: главного ключа системы цифровых денег, ключа, используемого правительством для сертификации паспортов, либо ключей цифровой подписи государственных нотариусов. Возможно, и не стоит тратить месяцы машинного времени на вскрытие какого-то там личного ключа, но если вы можете с
ГЛАВА 7. Длина ключей 191 помощью взломанного ключа печатать собственные деньги, идея приводит в восторг. Длины 1024-битового го ключа достаточно для защиты цифровой подписи документа, который будет проверяться в течение недели, месяца, даже нескольких лет. Но вы же не хотите, представ через 20 лет перед судом с подписанным электронным документом, смотреть, как противоположная сторона показывает, как можно подделать документ, используя эту же подпись. Еще глупее предсказывать отдаленное будущее. Кто знает, каких успехов в 2020 году достигнет вычислительная техника, сетевые технологии и математика? Однако если окинуть взглядом картину в целом, можно отметить, что в каждом последующем десятилетии мы можем разлагать на множители числа, вдвое длиннее, чем в предыдущем. Эта закономерность отражена в табл. 7.7. Таблица 7.7. Долгосрочный прогноз разложения на множители Год Длина ключа (бит) 1995 1024 2005 2048 2015 4096 2025 8192 2035 16384 2045 32768 С другой стороны, техника разложения на множители может достичь предела совершенства задолго до 2045 года. Возможно, через двадцать лет мы научимся разлагать на множители любые числа. Однако, как мне кажется, это маловероятно. Не все согласятся с моими рекомендациями. В своем стандарте цифровой подписи Э88 (см. раздел 20.1), агентство АНБ установило длину ключей от 512 до 1024 бит. Это намного меньше, чем рекомендовано мной для обеспечения длительной безопасности. В системе РОР, описанной в разделе 24.12, максимальная длина ключа К8А составляет 2047 бит. Аржен Ленстра, наиболее успешный в мире специалист по разложению на множители, в течение последних 10 лет отказывается давать прогнозы [949]. В табл. 7.8 приведены рекомендации Рона Ривеста по выбору длины ключей, предложенные в 1990 году, которые представляются мне слишком оптимистичными [1323]. Хотя на бумаге его анализ выглядит убедительно, в недавней истории можно встретить примеры регулярно преподносимых сюрпризов. Чтобы избежать последствий этих сюрпризов, разумно выбирать ключи с запасом. Таблица 7.8. Оптимистичные рекомендации Ривеста по выбору длины ключей (бит) Год Минимальная Средняя Максимальная 1990 398 515 1289 1995 405 542 1399 2000 422 572 1512
192 Прикладная криптография Год Минимальная Средняя Максимальная 2005 439 602 1628 2010 455 631 1754 2015 472 661 1884 2020 489 677 2017 Минимальные оценки предполагают бюджет $25000, использование алгоритма квадратичного решета и темпы технического прогресса 20% в год. Средние оценки предполагают бюджет 25 миллионов долларов, использование общего алгоритма решета числового поля и темпы технического прогресса 33% в год. Максимальные оценки предполагают бюджет 25 миллиардов долларов, использование общего алгоритма решета числового поля общих чисел, работающего со скоростью специального алгоритма решета числового поля, и темпы технического прогресса 45% в год. Конечно, и я допускаю возможность прорыва в технике разложения на множители. В своих прогнозах я пытался учитывать этот фактор. Но с какой стати вы должны мне верить? Занявшись предсказаниями, я лишь продемонстрировал собственную глупость. Вычисления с помощью молекул ДНК То, что написано ниже, пока что можно отнести к чудачествам. В 1994 году Леонард М. Адлеман (Ьеопагс! М. АсИетап) продемонстрировал метод решения ОТ-полных задач (см. раздел 11.2) биохимическими средствами. Для представления возможных решений задачи он использовал молекулы ДНК [17]. Задача, решенная Адлеманом- пример задачи о гамильтоновом цикле на ориентированном графе. У вас есть карта, на которой изображены города, соединенные односторонними дорогами. Вам нужно найти дорогу из города А в город 2, которая пересекает каждый город, нанесенный на карту, только один раз. Каждый город представлялся отличной от других случайной цепочкой ДНК с 20 основаниями. Используя обычные методы молекулярной биологии, Адлеман синтезировал 50 пикомолей (30* 1012 молекул) цепочек ДНК, представляющих каждый город. Каждая дорога была представлена цепочкой ДНК с 20 основаниями, но эти цепочки выбирались не случайным образом: они умело подбирались так, чтобы «начало» цепочки ДНК, представляющей дорогу от города Р к городу К («дорога РК») стремилось соединиться с цепочкой ДНК, представляющей город Р, а «конец» дороги РК стремился соединиться с городом К. Адлеман синтезировал по 50 пикомолей ДНК, представляющих каждую дорогу, смешал их с молекулами ДНК, представляющими города, и добавил фермент лигазу, который сшивает концы молекул ДНК. Правильно подобранное родство между цепочками ДНК для дорог с цепочками ДНК для городов, приводит к тому, что лигаза корректно сшивает цепочки ДНК для дорог. То есть «выход» дороги РК всегда соединяется с «входом» какой-либо дороги, начинающейся в городе К, но никогда - с «выходом» любой дороги или с «входом» дороги, которая не начинается в городе К. По истечении тщательно подобранного времени реакции, лигаза сшила множество цепочек ДНК, представляющих возможные, но, тем не менее, случайные объединения путей карты.
ГЛАВА 7. Длина ключей 193 В этом бульоне из случайных путей Адлеман мог найти малейший след даже единственной молекулы ДНК, которая служит решением задачи. Используя обычные методы молекулярной биологии, он удалил все цепочки ДНК, представлявшие слишком короткие или слишком длинные пути. (Число дорог на искомом пути равно числу городов минус один). Затем он удалил все цепочки ДНК, которые не пересекали город А, затем те, которые проходили мимо города В, и т.д. Молекула ДНК, прошедшая через это сито, и представляет собой искомую последовательность дорог, т.е. решение задачи направленного гамильтонова пути. По определению, любую отдельную NР-полную задачу можно свести за полиномиальное время к любой другой ^-полной задаче, и, следовательно, к задаче о гамильтоновом цикле на ориентированном графе. Начиная с семидесятых годов, криптологи пытаются использовать ОТ-полные задачи в криптографии с открытым ключом. Пример, рассмотренный Адлеманом, весьма прост. На его карте было семь городов, так что задачу можно решить, изучив карту, всего за несколько минут. Однако это направление только начало развиваться, и нет никаких препятствий для переноса этой методики на более сложные задачи. Таким образом, рассуждения о надежности криптографических протоколов, в основе которых лежит ^-полная задача, которые до сих пор начинались словами: «Предположим, у противника есть миллион процессоров, каждый из которых выполняет миллион тестов в секунду», вскоре, возможно, будут начинаться словами, «Предположим, у противника есть тысяча бродильных чанов, вместимостью по 20000 литров каждый». Квантовые вычисления Рассмотрим еще более причудливый подход. Как известно, в основе квантовомеханических расчетов лежит идея Эйнштейна о корпускулярно-волновой природе квантовых частиц. Например, фотон может одновременно находиться во множестве состояний. В классическом примере фотон, сталкиваясь с частично прозрачным зеркалом, ведет себя подобно волне. Он одновременно и отражается и проходит через зеркало подобно тому, как морская волна, ударяясь о волнорез с небольшим отверстием, одновременно отражается от стены и проходит сквозь нее. Однако при измерениях фотон ведет себя подобно частице, так что может быть обнаружен только в одном состоянии. В [1443] Питер Шор (Ре1ег 8Ьог) набросал принципы построения машины для разложения на множители, основанной на принципах квантовой механики. В отличие от классического компьютера, который можно представить как машину, находящуюся в каждый момент времени в единственном фиксированном состоянии, квантовый компьютер имеет внутреннюю волновую функцию, представляющую собой суперпозицию комбинаций возможных основных состояний. Вычисления преобразуют волновую функцию, изменяя весь набор состояний за одну операцию. Таким образом, квантовый компьютер имеет преимущество над классическим компьютером: он использует квантовые свойства, позволяющие ему разложить число на множители за полиномиальное время. Теоретически это позволяет взламывать криптосистемы, в основе которых лежит разложение на множители или задача дискретного логарифма. 7 - 6229
194 Прикладная криптография По единодушному признанию, квантовый компьютер не противоречит фундамен¬ тальным законам квантовой физики. Однако маловероятно, что квантовая машина для разложения на множители будет построена в обозримом будущем... если будет построена вообще. Одно из главных препятствий - проблема некогерентности, которая влечет потерю различимости сигналов и сбой компьютера. Из-за некогерентности квантовый компьютер, работающий при 1°К, будет сбиваться каждую наносекунду. Кроме того, для построения квантового устройства для разложения на множители понадобится столь огромное число вентилей, что, создание машины окажется невозможным. Для реализации проекта Шора необходимо совершенное устройство возведения в степень. А поскольку использовать внутреннюю синхронизацию невозможно, для разложения на множители криптографически значимых чисел могут понадобиться миллионы и даже миллиарды вентилей. Если же минимальная вероятность отказа каждого из п квантовых вентилей равна р, среднее количество тестов, необходимых для достижения успеха, составит (1/(1 - р))п. Необходимое число вентилей, по-видимому, возрастает полиномиально с ростом длины числа (в битах). Поэтому необходимое число попыток будет возрастать с увеличением длины используемых чисел сверхэкспоненциально - хуже, чем при разложении пробным делением! Поэтому, хотя квантовое разложение на множители приводит в восторг академические круги, маловероятно, что оно найдет практическое применение в обозримом будущем. Но не говорите потом, что я вас не предупреждал. 7.3. Сравнение длин симметричных и открытых ключей Как правило, систему взламывают в слабейшем месте. Если вы проектируете систему, которая использует как симметричную криптографию, так и криптографию с открытым ключом, длины ключей для каждого типа криптографии следует выбирать такими, чтобы вскрытие любого компонента системы было одинаково сложной задачей. Нет смысла использовать симметричный алгоритм со 128-битовым ключом совместно с алгоритмом с открытым ключом, использующим 386-битовый ключ. Точно так же бессмысленно использовать в одной системе симметричный алгоритм с 56-битовым ключом и алгоритм с открытым ключом с 1024-битовым ключом. В табл. 7.9 приведены длины открытых ключей (для алгоритмов, использующих модулярную арифметику), трудность разложения которых на множители примерно равна сложности лобового вскрытия симметричных ключей сопоставленной длины. Таблица 7.9. Длины симметричных и открытых ключей с равной устойчивостью к лобовому вскрытию Длина симметричного ключа (бит) Длина открытого ключа (бит) 56 384 64 512 80 768 112 1792 128 2304
ГЛАВА 7. Длина ключей 195 Как видно из таблицы, если вы действительно заботитесь о сохранении своих секретов, при выборе симметричного алгоритма с 112-битовым ключом, длина модуля алгоритма с открытым ключом должна быть около 1792 бит. Однако в общем случае следует выбирать такую длину открытого ключа, которая обеспечивает защиту более надежную, чем допускает длина симметричного ключа. Открытые ключи обычно используют большее время и применяют для защиты большего объема информации. 7.4. Парадокс «дней рождений» и однонаправленные хэш-функции Для лобовой атаки на однонаправленные хэш-функции используют два метода. Первый очевиден: дано значение хэш-функции сообщения, Н(М)9 противник хочет создать другой документ, М\ такой, что Н(М') = Н(М). Второй метод изящнее: противник хочет найти два случайных сообщения М и М\ таких, что Н(М') = Н(М). Они называются коллизиями и их обычно проще найти, чем М' из первого метода вскрытия. В математической статистике известен стандартный парадокс «дней рождений». Ответьте, сколько человек должно собраться в одной комнате, чтобы с вероятностью более 1/2 хотя бы у одного из них был бы общий с вами день рождения? Ответ - 253. А сколько людей должно собраться, чтобы с вероятностью более 1/2 хотя бы у двоих был общий день рождения? Ответ поразителен - 23. Заметим, если в комнате находятся 23 человека, они образуют 253 различные пары. Обнаружение кого-нибудь с точно заданным днем рождения аналогично первому методу атаки, а обнаружение двух человек с произвольным, но одинаковым днем рождения аналогично второму методу. Вторая атака широко известна как атака на основе парадокса «дней рождений». Предположим, что однонаправленная хэш-функция надежна и лучший метод ее вскрытия - лобовой. Выход этой хэш-функции - т-разрядное число. Поиск сообщения, которое хэшируется к заданному значению, потребовал бы хэширования 2т случайных сообщений. А для обнаружения двух сообщений с одинаковым хэшем, необходимо хэшировать только 2т>1 случайных сообщений. Компьютеру, который хэширует миллион сообщений в секунду, на поиск второго сообщения с тем же 64-разрядным хэш-значением, потребовалось бы 600000 лет. Но этот же компьютер примерно за час найдет пару сообщений с одинаковым хэшем. Таким образом, если вы опасаетесь атаки «дней рождений», выбирайте длину хэш-значения вдвое большую той длины, которая, по вашему мнению, была бы достаточна. Например, если вы хотите снизить вероятность взлома системы до 1 шанса из 280, используйте 160-разрядную однонаправленную хэш-функцию. 7.5. Какой длины должен быть ключ? Единого ответа на этот вопрос не существует, поскольку он зависит от конкретной ситуации. Чтобы определить необходимую степень защиты, задайте себе несколько вопросов. Сколько стоит ваша информация? Какое время она должна храниться в тайне? Каковы возможности ваших противников?
196 Прикладная криптография Например, список заказчиков можно оценить в $1000. Данные о финансовом положении супругов при скандальном разводе потянут на $10000. Реклама и данные маркетинга крупной корпорации можно оценить в 1 миллион долларов. Главный ключ системы цифровых денег может стоить и миллиарды долларов. В мире торговли потребительскими товарами секреты должны сохраняться в течение всего нескольких минут. В газетном бизнесе сегодняшние секреты - это завтрашние заголовки. Информация о разработке какого-то продукта, возможно, должна оставаться закрытой в течение года - двух. Данные переписи населения США, согласно закону, должны храниться в секрете 100 лет. Список гостей, приглашенных на вечер-сюрприз в день рождения вашей сестры, интересен только вашим любопытным родственникам. Торговые секреты корпорации представляют интерес для конкурирующих компаний. Военные секреты интересны вражеским разведкам. В подобных же терминах можно определить требования к надежности защиты. Например: Длина ключа должна быть такой, что вероятность его взлома в течение года, даже с учетом темпов технического прогресса 30% в год, взломщиком, готовым затратить 100 миллионов долларов, не превышала бы 1 из 232. В табл. 7.10, частично заимствованной в [150], приведены оценки требований к надежности защиты различной информации. Таблица 7.10. Требования к уровню секретности различной информации Тип трафика Время жизни Минимальная длина ключа (бит) Оперативная военная информация минуты/часы 56—64 Объявления о выпуске новых продуктов, слиянии компаний, процентных ставках Дни/недели 64 Долговременные бизнес-планы годы 64 Фирменные секреты (например, рецепт кока-колы) десятилетия 112 Тайна водородной бомбы > 40 лет 128 Имена разведчиков > 50 лет 128 Личные дела > 50 лет 128 Дипломатические конфликты > 65 лет 128 Данные переписи населения США 100 лет не менее 128 Вычислительные возможности, которые появятся в будущем, оценить нелегко. Но вот приемлемое эмпирическое правило: эффективность вычислительных средств удваи¬ вается каждые 18 месяцев, и возрастает на порядок каждые 5 лет. Следовательно, через
ГЛАВА 7. Длина ключей 197 50 лет самые быстродействующие компьютеры будут в 10 миллиардов раз быстрее сегодняшних! Кроме того, не забывайте, что эти числа относятся только к обычным компьютерам. Но кто знает, какие специализированные устройства взлома криптосистем появятся в грядущие 50 лет? Если допустить, что криптографический алгоритм будет использоваться в ближайшие 30 лет, можно представить, насколько он должен быть надежен. Алгоритм, созданный в 1995 г., возможно и не будет широко использоваться до 2000 года, но все еще будет использоваться в 2025 для шифрования сообщений, которые должны оставаться в секрете до 2075 года и даже позже. 7.6. Будьте бдительны! Вся эта глава - куча чепухи. Смешно говорить даже о самой возможности прогнозирования роста вычислительных возможностей на 10, а тем более на 50 лет вперед. Эти расчеты приведены только для ориентировки, и более ни для чего. Экстраполируя прошлое, мы пытаемся угадать будущее, которое, возможно, будет иметь мало общего с реальностью. Будьте консервативны. И если вам кажется, что ваши ключи длиннее необходимого, значит, вы столкнетесь с меньшим числом технологических сюрпризов.
ГЛАВА 8. Управление ключами Предположим, Алиса и Боб используют секретную систему связи. Они играют в мысленный покер, одновременно подписывают контракты и даже передают друг другу цифровые деньги. Их протоколы вполне надежны. Они используют самые лучшие алгоритмы. Но, к сожалению, они покупают свои ключи в фирме Евы «Кеуз-Я-Пз», чей девиз - «Вы можете нам доверять: «Безопасный» - это фамилия человека, которого туристический агент бывшей тещи одного из наших сотрудников встретил в магазине Юлтк-Е-Маг!». Еве не придется даже заниматься взломом алгоритмов. Ей нет нужды копаться в тончайших упущениях протоколов. Для чтения всех сообщений Алисы и Боба она может использовать их ключи, не прилагая малейших криптоаналитических усилий. На практике управление ключами - труднейшая задача криптографии. Нелегко проектировать надежные криптографические алгоритмы и протоколы, но тут можно положиться на большой объем академических исследований. Но намного труднее сохранять ключи в тайне. Нередко для вскрытия симметричных криптосистем и криптосистем с открытым ключом криптоаналитики используют просчеты системы управления ключей. Ну зачем Еве заниматься вскрытием всего криптографического алгоритма, если она может восстановить ключ благодаря его небрежному хранению? Зачем ей выкладывать 10 миллионов долларов на создание криптоаналитического устройства, если достаточно подкупить клерка за $1000? Взятка в миллион долларов чиновнику связи, сидящему на теплом месте в дипломатическом посольстве - превосходная сделка. Уолкеры годами продавали Советской разведке ключи шифрования ВМС США. Руководитель контрразведки ЦРУ вместе с женой обошелся менее чем в 2 миллиона долларов. Это намного дешевле, чем строить огромные компьютеры для взлома и нанимать выдающихся криптоаналитиков. Ева может выкрасть ключи. Она может арестовать или похитить человека, который знает ключи. Она может соблазнить кого надо, и получить ключи таким приятным способом. (Перед такой атакой не устояли морские пехотинцы, охраняющие посольство США в Москве). Намного проще находить пороки в людях, чем в криптосистемах. Алиса и Боб должны хранить свои ключи столь же тщательно, что и данные, шифруемые этими ключами. Если ключ не заменять регулярно, то объем данных, зашифрованных этим ключом, может стать огромным. К сожалению, создатели многих коммерческих продуктов просто объявляют «Мы используем алгоритм ЭЕ8» и забывают обо всем остальном. Результаты не слишком обнадеживают. Например, программа В1$кЬоск для МастЩзЬ (версия 2.1), предлагавшаяся большинством магазинов программного обеспечения, претендует на надежное шифрование алгоритмом ЭЕ8. Программа шифрует файлы, используя алгоритм БЕЗ. Реализация алгоритма ЭЕ8 корректна. Однако программа 015кЬоск сохраняет ключ БЕЗ вместе с зашифрованным файлом. Если вы знаете, где искать ключ и желаете прочитать файл, зашифрованный алгоритмом БЕЗ программой Э1зкЬоск, восстановите ключ из зашифрованного файла, а затем расшифруйте файл. И не имеет значения, что программа использует алгоритм шифрования БЕЗ - реализация абсолютно ненадежна. Дополнительную информацию об управлении ключами можно найти в [457, 98, 1273, 1225, 775, 357]. В следующих разделах мы обсудим некоторые проблемы и решения.
200 Прикладная криптография 8.1. Генерация ключей Надежность алгоритма всецело зависит от ключа. Если для генерации ключей вы используете криптографически уязвимый процесс, система в целом будет слабой. В таком случае Еве не придется даже подвергать криптоанализу сам алгоритм шифрования - достаточно выполнить криптоанализ алгоритма генерации ключей. Сокращенные пространства ключей В алгоритме БЕЗ используются 56-битовые ключи. При корректной реализации в качестве ключа может использоваться любая 56-битовая строка. Число возможных ключей в данном случае равно 256 (1016). Программа ИоЛоп В15сгее1 для М8 БОЗ (версии 8.0 и старшие) допускают использование ключей только из символов А8СИ, что означает, что значение старшего бита всех байтов всегда равно нулю. Кроме того, программа преобразует символы нижнего регистра в символы верхнего регистра (так что пятый бит каждого байта всегда противоположен шестому биту) и игнорирует младший бит каждого байта, благодаря чему пространство возможных ключей сокращается до 240. Благодаря таким неудачным процедурам генерации ключей, взлом алгоритма БЕЗ в десятки тысяч раз проще, чем при корректной реализации. В табл. 8.1 представлено число возможных ключей при различных ограничениях на входные строки. В табл. 8.2 приведено время, необходимое для полного перебора всех возможных ключей при быстродействии миллион тестов/сек. Напомню, мы полагаем, что различия в продолжительности полного поиска по всем возможным только 8- байтовым ключам и по всем возможным 4-, 5- и 7- и 8-байтовым ключам невелики. Для лобового вскрытия можно использовать любые аппаратные средства, а также системы параллельных вычислений. При скорости тестирования 106 ключей/сек. (на одном компьютере или нескольких параллельных компьютерах) можно взломать ключи, состоящие из: ✓ Символов верхнего и нижнего регистра и цифр длиной до 8 байт, ✓ Алфавитно-цифровых символов длиной до 7 байт, ✓ Печатных символов и символов А8СН длиной до 6 байт, ✓ 8-битовых символов А8СН длиной до 5 байт. Таблица 8.1. Число возможных ключей в различных пространствах ключей Длина ключа (байт) 4 5 6 7 8 Строчные буквы (26) 460000 1.2*107 3.1 * 108 8.0*109 2.1*10" Строчные буквы и цифры (36) 1700000 6.0*107 2.2* 109 7.8* Ю10 2.8*1012 Алфавитно-цифровые символы (62) 1.5*107 9.2*108 5.7* Ю10 3.5* 1012 2.2* 1014 Печатаемые символы (95) 8.1*107 7.7* 109 7.4*10" 7.0*1013 6.6*1015
ГЛАВА 8. Управление ключами 201 Длина ключа (байт) 4 5 6 7 8 Символы А8СИ (128) 2.7*10* 3.4*Ю10 4.4*1012 5.6* 1014 7.2* 1016 8-битовые символы А8СН (256) 4.3*109 1.1*1012 2.8*1014 7.2*1016 1.8*1019 Таблица 8.2. Время полного поиска в различных пространствах ключей (со скоростью 106 тестов/сек.) Длина ключа (байт) 4 5 6 7 8 Строчные буквы (26) 0.5 сек. 12 сек. 5 мин. 2.2 часа 2.4 дня Строчные буквы и цифры (36) 1.7 сек. 1 мин. 36 мин. 22 часа 33 дня Алфавитно-цифровые символы (62) 15 сек. 15 мин. 16 часов 41 день 6.9 года Печатаемые символы (95) 1.4 мин. 2.1 часа 8.5 дня 2.2 года 210 лет Символы А8СН (128) 4.5 мин. 9.5 часа 51 день 18 лет 2300 лет 8-битовые символы А8СИ (256) 1.2 часа 13 дней 8.9 года 2300 лет 580000 лет Напомню, вычислительные возможности удваивается каждые 18 месяцев. Если вы хотите, чтобы ключи были устойчивы к лобовому вскрытию в течение 10 лет, планируйте использование ключей исходя из этого эмпирического правила. Неправильно выбранные ключи Как правило, люди, если занимаются этим самостоятельно, выбирают ключи неудачно. Например, они наверняка предпочтут слово «Ватеу» набору символов «*9 (ЬН/А». И это не всегда следствие неопытности. Просто слово «Ватеу» запомнить проще, чем «*9 (ЬН/А». Самый совершенный алгоритм не слишком надежен, если пользователи привыкнут выбирать в качестве ключей имена своих жен (мужей) или хранить ключи на небольших листочках в бумажниках. Криптоаналитик, занимаясь интеллектуальным лобовым вскрытием, даже не пытается последовательно перебрать все возможные ключи. Прежде всего он тестирует очевидные значения ключей. Такую атаку называют атакой по словарю - поскольку взломщик использует словарь слов, обычно применяемых в качестве ключей. Используя ее, Дэниел Кляйн (Оаше1 К1ет) сумел взломать 40% паролей среднего компьютера [847, 848]. О, нет, он не перебирал пароли один за другим, каждый раз делая попытку входа в систему. Просто он скопировал шифрованный файл паролей и предпринял атаку в другом месте. Вот что он тестировал в качестве возможного пароля: ✓ Имя пользователя, инициалы, имя учетной записи (ассоиШ) и другую информацию, связанную с человеком. В целом, на основе подобной информации было испытано до 130 различных паролей. Вот, например, некоторые пароли, которые проверялись для
202 Прикладная криптография учетной записи Ыопе и имени пользователя «Баше1 V. К1ет»: к1опе, к1опе0, к1опе1, к1опе123, бук, букбук, бк1ет, бк1ет, 1ета<1, ше1к, бук1ет, бате1к, БуккуБ, БАШЕЬ- КЬЕШ, (к1опе), К1етБ и т.д. ✓ Слова из различных баз данных. Использовались списки мужских и женских имен (всего около 16000), названия местностей (включая вариации, так что рассматривались слова «зрат», «зрашзЬ», и «зратагб»), имена известных людей, названия мультфильмов и их персонажей, названия, имена героев и места действия из фильмов и научной фантастики, названия мифических существ (заимствованные в ВиЩпск'з Му1ко1о%у и словарей мифических животных), спорт (включая названия команд, прозвища и специальные термины), числа (записанные как цифрами - «2001», так и буквами «1дуе1уе»), строки символов и чисел («а», «аа», «ааа», «аааа» и т.д.), слоги китайского языка (из Ртут Котатгабоп оГ СЫпезе - международного стандарта китайского письма на англоязычной клавиатуре), Клп§ 1атез ВПэ1е (Библия короля Джеймса); термины биологии, разговорные и вульгарные выражения (типа «Шскуои», «Нэтзих» и «с!еас1Ьеас1»), раскладки клавиатуры (типа «я\уеПу», «азсН» и «гхсуЬп»), аббревиатуры (типа «гоу§Ыу» - первые буквы английских имен цветов радуги и «ооойа&§уаЬ» - мнемоническая схема для запоминания названий 12 черепных нервов), имена компьютеров (полученные из каталога /ас/козК), герои, пьесы и места действий драм Шекспира, самые популярные слова языка Идиш, названия астероидов, наборы слов из различных технических статей, опубликованных ранее Кляйном. Итого, для каждого пользователя испытывалось более 60000 отдельных слов (с отбрасыванием дубликатов в различных словарях). ✓ Вариации слов, приведенных в п. 2. Сюда входил перевод первого символа слова в верхний регистр или его замену управляющим символом, перевод всего слова в верхний регистр, инверсию регистра слова (с и без упомянутого изменения регистра первой буквы), замену буквы «о» на цифру «0» (так, чтобы слово «зсЬо1аг» было также проверено как «зсЬ01аг»), замену буквы «I» на цифру «1» (так, чтобы слово «зсЬо1ап> было бы также проверено как «зсЬо1аг») и выполнение аналогичных манипуляций с буквой «2» и цифрой «2», а также с буквой «з» и цифрой «5». Другая проверка заключалась в преобразовании слова во множественное число (независимо от того, было ли слово существительным) с учетом необходимых правил. Скажем, «бгезз» заменилось на «с!геззез», «Ьоизе» - на «Ьоизез», а «ба1зу» - на «сЫ51ез». Кляйн не придерживался жестко правил образования множественного числа, поэтому слово «с1ай1т» превратилось «баШтз» (а не «с1а1а»), «зрЬупх» - «зрЬупхз» (а не «зрЬуп§ез»). Аналогично, для преобразования слов добавлялись суффиксы «-ес1», «-ег» и «-т§», подобно преобразованию «рЬазе» в «рЬазеб», «рЬазег» и «рЬазт§». Эти дополнительные проверки добавили еще 1000000 слов в список возможных паролей, которые проверялись для каждого пользователя. ✓ Различные варианты преобразования в верхний регистр слов п. 2, не включенные в п. 3. Сюда вошли преобразование в верхний регистр одиночных символов (так, чтобы слово «гшсЬаеЬ) было проверено также как «ш1сЬае1», «пиСЬаеЬ), «шюНаеЬ. «тюЬАе1» и т.д.), преобразование в верхний регистр пары символов («М1сЬаеЬ>, «М1СЬае1», «МюНаеЬ..., «ш1СЬаеЬ>, «ш1сНаеЬ> и т.д.), преобразование в верхний регистр трех символов, и т.д. Изменения одиночного символа добавили к тестируемым словам примерно 400000 слов, а изменения пары символов - 1500000 слов. Изменения трех символов добавляли, по крайней мере, еще 3000000 слов для каждого пользователя, если для завершения тестирования хватало времени. Проверка
ГЛАВА 8. Управление ключами 203 изменения четырех, пяти и шести символов оказалась практически невозможной - не хватило вычислительных мощностей. ✓ Иностранные слова для иностранных пользователей1. Выполнялся специальный тест, который проверял пароли на китайском языке для пользователей с китайскими именами. Для китайских слогов использовался стандарт Ртут Котатяабоп, слоги объединялись вместе в одно-, двух- и трехсложные слова. Так как предварительная проверка слов на значимость не выполнялась, использовался полный перебор. Так как в системе Ртут Яотатгабоп существует 298 китайских слогов, имеется 158404 слов, состоящих из двух слогов, и немногим более 16000000 слов с тремя слогами. Подобный метод вскрытия можно без труда использовать и для английского языка, с учетом правил образования произносимых, но ничего не значащих слов. ✓ Пары слов. Объем полного тестирования подобного рода огромен. Чтобы упростить тест, испытывались только слова длиной три или четыре символа из каталога /и5г/сИс1/м?огс1з. Но даже и тогда число пар слов составило около десять миллионов. Вскрытие со словарем намного эффективнее, если направлено на файл, в котором хранятся ключи, а не единственный ключ. Единичный пользователь может быть достаточно сообразителен и выбрать удачные ключи. Но если тысячи людей самостоятельно выбирают ключи в качестве паролей доступа в компьютерную систему, почти наверняка хоть один из них выберет ключ, имеющийся в словаре взломщика. Случайные ключи Хорошими ключами можно считать строки случайных битов, генерированные каким- нибудь автоматическим процессом. Если длина ключа составляет 64 бит, годятся все возможные 64-битовые ключи. Для генерации битов ключей следует использовать либо надежный источник случайных чисел (см. раздел 17.14), либо криптографически надежный генератор псевдослучайных чисел (см. главы 16 и 17) Если эти автома¬ тические процессы недоступны, бросайте монетку или кости. Это, конечно, имеет какое-то значение, но не увлекайтесь рассуждениями о том, является ли шум из звуковых источников «более случайным», чем шум от радиоактивного распада. Оба эти источника случайного шума несовершенны, но, вероятно, оба достаточно надежны. Для генерации ключей важно использовать хороший генератор случайных чисел, но гораздо важнее использовать хорошие алгоритмы шифрования и процедуры распределения ключей. Если вы заботитесь о случайности своих ключей, используйте описанную ниже методику «перемалывания» ключа. Некоторые алгоритмы шифрования имеют слабые ключи. Это специфические ключи, которые менее надежны, чем другие ключи. Советую тестировать ключи и, обнаружив слабый ключ, сгенерировать новый. В алгоритме БЕ8 есть только 16 слабых ключей в пространстве 256 ключей, так что вероятность выбора одного из этих ключей ничтожно мала. Иногда можно услышать заявления, что криптоаналитик не может знать заранее, что был использован слабый ключ, и, следовательно, не может извлечь выгоду от их неосторожного использования. Кроме того, иногда утверждают, что неиспользование слабых ключей дает 1 У русскоязычных пользователей очень популярны пароли, где русское слово набирается на английском регистре, наприме𠫧ЬЬс11п». Злоумышленники тоже в курсе этого, будьте уверены! - Прим. ред.
204 Прикладная криптография криптоаналитику некоторую информацию. Однако проверка немногочисленных слабых ключей настолько проста, что непростительно пренебрегать ею. Генерация ключей для криптографических систем с открытым ключом сложнее, поскольку нередко ключи должны иметь определенные математические свойства (скажем, ключи должны быть простыми числами, квадратичными вычетами и т.д.). Методы генерации больших случайных простых чисел рассматриваются в разделе 11.5. Важно помнить, что с точки зрения распределения ключей случайные начальные числа для генераторов таких ключей должны быть именно случайными. Генерация случайного ключа не всегда возможна. Иногда вы должны запомнить свой ключ. (Интересно, сколько времени вам понадобится, чтобы запомнить строку 25е8 56Г2 е8Ъа с820?). Если вам необходимо генерировать простой для запоминания ключ, замаскируйте его. Идеально то, что легко запомнить, но трудно угадать. Вот несколько предложений2: ✓ Пары слов, разделенные знаком препинания, например, «1иП1е*тоо5е» или «20гсЬ!зр1а1» ✓ Строки букв, образующие акронимы длинных фраз. Например, фраза «Мет Ьийк15зеп!аЬг2еи§ 131 уо11ег Аа1е!» служит для генерации ключа «МЫуА!» Ключевые фразы Еще лучшее решение - использование вместо слова целой фразы и преобразование этой фразы в ключ. Такие фразы называют ключевыми фразами. Методика, называемая перемалыванием ключа (сгипскт&), позволяет без труда преобразовывать запоминающиеся фразы в случайные ключи. Для преобразования текстовой строки произвольной длины в строку псевдослучайных битов можно использовать однонаправленные хэш-функции. Например, эта легко запоминающаяся текстовая строка: Му пате ±з ОгутапсИаз, к±пд к±пдз. Ьоок оп ту теогкз, уе тхдЬ-Ьу, апЗ с!езра±г. (Я Озимандиас, царь царей. Вы, сильные мира сего, смотрите на мои дела и трепещите), можно «перемолоть» в такой 64-битовый ключ: е6с1 4398 5ае9 0а9Ь Конечно, иногда нелегко ввести в компьютер целую фразу, если вводимые символы не отображаются на экране. Разумные предложения по решению этой проблемы будут встречены с благодарностью. Если фраза достаточно длинная, полученный ключ будет случайным. Вопрос о точном смысле выражения «достаточно длинная» остается открытым. Теория информации утверждает, что каждый символ стандартного английского языка несет примерно 1.3 бит информации (см. раздел 11.1). Для 64-битового ключа достаточна ключевая фраза, 2 Естественно, что если все пользователи, поддавшись рекомендациям, будут выбирать ключи только такими, то для взломщика атака по словарю становится еще легче. Поэтому придумайте собственное правило и никому его не рассказывайте! - Прим. ред.
ГЛАВА 8. Управление ключами 205 состоящая примерно из 49 символов или 10 обычных английских слов. Используйте такое эмпирическое правило: пять слов на каждые 4 байта ключа. Это правило позволяет создать ключ с некоторым запасом, поскольку в нем не учитываются возможность изменения регистров, вставки пробелов и знаков препинания. Этот метод можно также использовать для генерации закрытых ключей в крипто¬ графических системах с открытым ключом: текстовая строка преобразуется в случайную строку инициализации, которая может быть использована в детерминированной системе, генерирующей пары открытый ключ/закрытый ключ. При выборе ключевой фразы используйте что-нибудь уникальное и легко запоминающееся. Не выбирайте фразы из книг - пример с «ОтутапсНаз» в этом смысле неудачен. Точно так же неудачны фразы из сочинений Шекспира и диалоги из Звездных войн - они общеизвестны и могут использоваться для вскрытия со словарем. Выберите что-нибудь малопонятное и личное. Не забывайте знаки препинания и преобразование регистра, используйте, если возможно, числа и неалфавитные символы. Плохой или искаженный английский, и даже любой иностранный язык, повышают устойчивость ключевой фразы к вскрытию со словарем. Один из путей - использование фраз, которые можно назвать «шокирующей ерундой», что-нибудь донельзя оскорбительное, что вы вряд ли запишете, но едва ли забудете. Несмотря на все, что сказано выше, маскировка не заменит истинную случайность. Лучшие ключи - случайные ключи, которые так трудно запомнить. Стандарт генерации ключей Х9.17 Метод генерации ключей определен стандартом АИ81Х9.17 (см. Рис. 8.1) [55]. Он не создает легко запоминающиеся ключи, и больше подходит для генерации сеансовых ключей или псевдослучайных чисел в системе. Для генерации ключей используется криптографический алгоритм «тройной БЕ8», но его можно без труда заменить любым другим алгоритмом. Рис. 8.1. Генерация ключей АИ81Х9.17 Пусть Ек(Х) - это X, зашифрованный ключом К алгоритма тройного ЭЕ8. Это специальный ключ, зарезервированный для генерации секретных ключей. У0- это секретное 64-битовое начальное число. Т - это метка времени. Для генерации случайного ключа К,• вычислим: л, = я* (ЛИГ/)©*/)
206 Прикладная криптография Для генерации У1+и вычислим: Ум-Е^ЕкСГ,)®*,) Для превращения Д, в ключ БЕЗ просто установите каждый восьмой бит так, чтобы он отвечал за четность бит в байте. Если вам нужен 64-битовый ключ, используйте ключ без изменения. Если вам нужен 128-битовый ключ, генерируйте пару ключей и конкатенируйте их друг с другом. Генерация ключей Министерством обороны США Министерство обороны США для генерации случайных ключей рекомендует использовать алгоритм ОЕ8 в режиме ОРВ (см. раздел 9.8) [1144]. Для генерации ключа ОЕЗ используйте системные векторы прерывания, регистры состояния системы и системные счетчики. Сгенерируйте вектор инициализации, используя системный тактовый генератор, системный идентификатор, а также дату и время. В качестве открытого текста используйте 64-битовые величины, генерированные вне системы, скажем, 8 символов, введенных системным администратором. Используйте выход в качестве своего ключа. 8.2. Нелинейные пространства ключей Вообразите, что вы - командир военно-криптографического подразделения, создающего часть криптографического оборудования для своих войск. Вы хотите использовать стойкий алгоритм, но вас беспокоит возможность захвата аппаратуры противником. Ведь вы не хотите, чтобы ваша аппаратура использовались для Защиты секретов противника. Если вы можете поместить свой алгоритм в защищенный от взлома модуль, вот как можно поступить. Затребуйте ключи специальной секретной формы, а все другие ключи будут заставлять модуль выполнять шифрование и расшифрование с помощью значительно ослабленного алгоритма. Можно сделать так, чтобы вероятность случайного определения корректного ключа лицом, не знающим его специальную форму, была пренебрежимо малой. Получившееся пространство ключей называют нелинейным (в отличие от линейного, или плоского, пространства ключей), поскольку надежность его ключей различна. Это нетрудно сделать, создав ключ, состоящий из двух частей: собственно ключа и некоторой фиксированной строки, шифрованной этим ключом. Используя ключ, модуль расшифровывает строку. Если в результате восстанавливается фиксированная строка, ключ используется обычным путем, в противном случае используется другой - ослабленный - алгоритм. Если в алгоритме используется 128-битовый ключ и размер блока 64 бит, полная длина ключа составит 192 бита. Таким образом, эффективных ключей будет всего 2128, вероятность случайно натолкнуться на корректный ключ составляет 1/264. Можно поступить еще хитрее: спроектировать алгоритм, у которого некоторые ключи надежнее других. В таком алгоритме нет слабых ключей, которые явно плохо защищены, и, тем не менее, его пространство ключей нелинейно.
ГЛАВА 8. Управление ключами 207 Это работает, только если противник не знает алгоритм и не может его перестроить, либо различия в надежности ключей настолько малозаметны, что враг о них не догадается. АНБ проделывало этот трюк с секретными алгоритмами в своих модулях ОуеЛаке (см. раздел 25.1). Делали ли они то же самое с 8к1р|аск (см. раздел 13.12)? Неизвестно... 8.3. Пересылка ключей Предположим, Алиса и Боб для засекречивания своих сообщений собираются использовать симметричный криптографический алгоритм. Таким образом, им нужен общий ключ. Алиса генерирует ключ с помощью генератора случайных ключей. Теперь она должна тайно передать его Бобу. Если Алиса может где-то встретиться с Бобом (в темном переулке, в комнате без окон или на одном из спутников Юпитера), она сможет передать ему копию ключа. В противном случае задача усложняется. Криптография с открытым ключом решает проблему просто и с минимумом предварительных соглашений, но эта технология не всегда доступна (см. раздел 3.1). В некоторых системах используются альтернативные каналы, которые полагаются надежными. Например, Алиса может послать Бобу ключ с доверенным посыльным, заказным письмом или ночной службой доставки. Она могла бы установить с Бобом какой-то иной канал связи и уповать, что его никто не подслушивает. Конечно, Алиса могла бы послать Бобу симметричный ключ по тому каналу связи, который они собираются засекретить. Но глупо передавать ключ шифрования канала по этому же каналу в открытом виде: перехватчик, подслушав канал, наверняка сможет расшифровать все сообщения. Стандарт Х9.17 [55] определяет два типа ключей: ключи шифрования ключей и ключи данных. Ключи шифрования ключей предназначены для шифрования других ключей при их распределении. Ключи данных предназначены для шифрования собственно сообщений. Ключи шифрования ключей распределяют вручную (хотя их можно хранить в защищенном от взлома устройстве, например, интеллектуальной карте), но только изредка. Ключи данных распределяются значительно чаще. Подробности можно найти в [75]. Эта идея двухсвязных ключей используется для распределения ключей довольно часто. Еще одно решение проблемы распределения - разбиение ключа на несколько частей (см. раздел 3.6) и их отсылка по разным каналам. Скажем, одну часть можно послать по телефону, вторую - почтой, третью - службой ночной доставки, четвертую - почтовым голубем и т.д. (см. Рис. 8.2). Тогда противник, даже собрав все части, кроме одной, ничего не узнает о ключе. Этот метод годится для всех случаев, кроме экстремальных. Схемы разбиения ключа на несколько частей обсуждаются в разделе 3.6. Алиса могла бы даже прибегнуть к схеме использования общего секрета (см. раздел 3.7), которая позволяет Бобу восстановить ключ, если некоторые части потеряются при передаче.
208 Прикладная криптография Алиса тайно передает Бобу ключ шифрования ключей при личной встрече или с помощью только что рассмотренного метода разбиения. Как только у Алисы и Боба будет ключ шифрования ключей, Алиса сможет ежедневно посылать Бобу ключи данных по одному и тому же каналу связи, шифруя при этом каждый ключ данных ключом шифрования ключей. А поскольку трафик, шифруемый ключом шифрования ключей, незначителен, часто менять этот ключ не нужно. Но так как компрометация ключа шифрования ключей компрометирует все сообщения, шифрованные ключами данных, этот ключ следует хранить в тайне. Распределение ключей в крупных сетях Ключи шифрования ключей, общие для пары пользователей удобно использовать в небольших сетях, однако с расширением сети такая схема быстро становится громоздкой. Так как каждая пара пользователей должна обменяться ключами, общее число обменов ключами в сети из п человек составляет п(п -1)/2 . Например, в сети на шесть пользователей понадобится 15 обменов ключами. В сети на 1000 пользователей число обменов ключами возрастет почти до 500000. В таком случае для повышения эффективности работы сети удобнее создать центральный сервер (или несколько серверов) распределения ключей. Кроме того, для защиты распределения ключей подходит любой протокол симметричной криптографии или криптографии с открытым ключом, описанный в разделе 3.1.
ГЛАВА 8. Управление ключами 209 8.4. Проверка ключей Каким образом Боб, получив ключ, узнает, что ключ прислала Алиса, а не кто-то другой, выдающий себя за Алису? Эта задача тривиальна, если Алиса передает ему ключ при личной встрече. Но если Алиса посылает свой ключ доверенным курьером, этому курьеру должен доверять и Боб. Если ключ зашифрован ключом шифрования ключей, Боб должен верить, этот ключ шифрования ключей есть только у Алисы. Если для подписания ключа Алиса использует протокол цифровой подписи, Боб, проверяя подлинность подписи, должен доверять базе данных открытых ключей. (Кроме того, он должен верить, что Алиса сохранила свой ключ в тайне). Если открытый ключ Алисы подписывает центр КОС (Кеу 01з1пЪи1:юп Сеп1ег- центр распределения ключей), Боб должен верить, что его копия открытого ключа, хранящаяся в КЕ)С, не была подменена. В конце концов, некто, контролирующий всю сеть, в которой работает Боб, может заставить его думать все, что ему вздумается. Мэллори может послать зашифрованное и подписанное сообщение, выдавая себя за Алису. Когда Боб, проверяя подлинность подписи Алисы, запросит базу данных открытых ключей, Мэллори может возвратить ему собственный открытый ключ. Мэллори может создать свой собственный фиктивный центр КОС и подменить открытый ключ подлинного КОС ключом своего собственного изделия. Обнаружить это Боб не в состоянии. Некоторые люди использовали этот аргумент для доказательства бесполезности криптографии с открытым ключом. Так как единственный способ Алисе и Бобу доподлинно убедиться, что никто не взломал их ключи - это личная встреча, криптография с открытым ключом вообще не обеспечивает безопасность. Эта точка зрения наивна. Теоретически все правильно, но на практике гораздо сложнее. Криптография с открытым ключом вкупе с цифровыми подписями и надежными КОС, значительно усложняет подмену ключей. Конечно, Боб никогда не может быть абсолютно уверен, что Мэллори не контролирует все его сетевое окружение. Однако Боб может знать наверняка, что такая подмена требует гораздо больше ресурсов, чем способен заполучить Мэллори. Кроме того, Боб может проверять подлинность ключа Алисы по телефону, получив возможность услышать ее голос. Действительно, распознавание голоса- прекрасный метод идентификации личности. Если речь идет об открытом ключе, Боб может, ничего не опасаясь, назвать его по телефону даже при угрозе подслушивания. Если это секретный ключ, он может использовать для проверки подлинности ключа одностороннюю хэш- функцию. Такой метод проверки подлинности ключей используется в программе РСР (см. раздел 24.12) и в телефоне АТ&Т Т8Э (см. раздел 24.18). В некоторых случаях даже нет нужды точно проверять, кому принадлежит открытый ключ. Например, иногда необходимо убедиться, что ключ принадлежит тому же человеку, что владел им год назад. Если кто-нибудь присылает в банк подписанное сообщение о переводе денег, банку достаточно, чтобы этот человек был тем, кто депонировал деньги в первый раз, а кто конкретно снимает деньги - банку безразлично.
210 Прикладная криптография Обнаружение ошибок во время передачи ключей Иногда ключи искажаются во время передачи. Это серьезная проблема, поскольку искажение ключа может привести к появлению мегабайтов шифртекста, не поддающегося расшифрованию. Поэтому при передаче ключей следует предусмотреть средства обнаружения и коррекции ошибок передачи. Тогда ошибки передачи могут быть легко обнаружены и при необходимости ключ может быть послан повторно. Один из самых популярных методов заключается в шифровании ключом некоторой константы и передача вместе с ключом первых 2-4 байт этого шифртекста. Получатель поступает точно так же. Если шифрованные константы совпадают, ключ передан без ошибок. Вероятность ошибки находится в диапазоне от 1/216 до 1/232. Обнаружение ошибок ключей во время расшифрования Иногда получателю необходимо проверить, действительно ли его конкретный ключ- корректный ключ симметричного шифрования. Если открытый текст сообщения представляет собой нечто подобное А5СН, он может попытаться расшифровать и прочитать сообщение. Если же открытый текст случаен, можно использовать другие приемы. Простейший подход заключается в присоединении блока верификации: это общеизвестный заголовок, присоединяемый к открытому тексту еще до шифрования. Получатель Боб расшифрует заголовок и убеждается, что он правилен. Это работает, но дает Еве небольшой фрагмент открытого текста, что облегчает криптоанализ системы. Кроме того, это упрощает вскрытие шифров с короткими ключами, используемых, например, в алгоритме ЭЕ8 и всех экспортируемых шифрах. Рассчитайте заранее раз навсегда контрольную сумму для каждого ключа, а впоследствии используйте ее для определения ключа в любом перехваченном сообщении. Это свойство любой контрольной суммы ключа, в которую не включены случайные или, по крайней мере, различные данные. Это весьма напоминает концепцию использования привязки при генерации ключей по ключевым фразам. Есть еще один, более удачный, метод [821]: 1. Сгенерируйте вектор инициализации (ВИ), отличный от вектора, используемого в сообщении. 2. Используйте этот вектор инициализации для генерации длинного блока битов, скажем, 512. 3. Схэшируйте результат. 4. Используйте одни и те же фиксированные биты хэша, например, 32, для вычисления контрольной суммы ключа. Это тоже дает Еве какую-то информацию, но весьма незначительную. Если Ева попытается использовать 32 младших бита конечного хэш-значения для лобовой атаки, ей придется выполнить несколько шифрований и хэширований для каждого вероятного ключа - лобовое вскрытие самого ключа было бы проще. Ева не получит для проверки никаких известных фрагментов открытого текста, и даже если она ухитрится подбросить нам наше же случайное значение, она никогда не
ГЛАВА 8. Управление ключами 211 получит от нас подобранный открытый текст, так как прежде чем она его увидит, он будет хэширован. 8.5. Использование ключей Программное шифрование - мудреная задача. Ушли дни простеньких микро¬ компьютеров, работающих под управлением единственной программы. Сегодня настало время МаспИозЬ 8у${ет7, АУтбохузЖ и ИЫ1Х. Невозможно предвидеть, когда операционная система остановит запущенный процесс шифрования, выгрузит его данные на диск и начнет исполнять какую-то другую задачу. Когда операционная система, наконец, вернется к шифрованию, чтобы там не шифровалось, все вроде бы будет нормально. Никто еще в полной мере не осознал того факта, что операционная система, выгрузив приложение шифрования на диск, вместе с ним записала и ключ. Ключ - незашифрованный! - будет храниться на диске, пока компьютер не запишет что- нибудь поверх этой области памяти. Это может произойти через несколько минут, а может и через несколько месяцев. Этого может и вовсе не случиться; ключ будет оставаться на диске до того момента, когда противник приступит к тщательному сканированию ваших дисков. В приоритетной многозадачной среде операции шифрования можно присвоить достаточно высокий приоритет, чтобы эта операция не прерывалась. Это снизило бы риск. Но даже и тогда система в целом, в лучшем случае, ненадежна. Аппаратные реализации надежнее. Многие шифровальные устройства спроектированы так, что при попытке взлома стирают ключ. Например, в плату шифрования 1ВМ Р8/2 встроен залитый эпоксидной смолой модуль, который содержит микросхему ЭЕ8, батарейку и память. Разумеется, вы должны верить, что производитель аппаратуры правильно реализовал все необходимые средства. В некоторых приложениях связи, например, телефонных блоках шифрования, могут использоваться сеансовые ключи. Сеансовым называют ключ, который используется только в одном сеансе связи, скажем, в единственном телефонном разговоре, а затем уничтожается. Использованный ключ хранить бессмысленно. А если для передачи ключа от одного абонента другому используется еще и какой-нибудь протокол обмена ключами, этот ключ не нужно хранить и до его использования. Это значительно снижает вероятность компрометации ключа. Контроль использования ключей В некоторых приложениях желательно контролировать процесс использования сеансового ключа. Некоторым пользователям сеансовые ключи нужны только для шифрования или только для расшифрования. Можно разрешить использование сеансовых ключей только на определенном компьютере или только в определенное время. В одной из схем для управления подобными ограничениями к ключу добавляется управляющий вектор (Соп1го1 Уес1ог- СУ). Этот вектор задает ограничения использования данного ключа (см. раздел 24.1) [1025, 1026]. Вектор СУ хэшируется, а затем над ним и главным ключом выполняется операция ХОЯ. Результат используется в качестве ключа шифрования сеансового ключа. Затем полученный сеансовый ключ сохраняется вместе с СУ. Для восстановления сеансового ключа необходимо схэшировать управляющий вектор и
212 Прикладная криптография выполнить над ним и главным ключом операцию ХОЯ. Полученный результат используют для расшифрования шифрованного сеансового ключа. Преимущества этой схемы в том, что длина управляющего вектора произвольна и вектор всегда хранится в открытом виде вместе с шифрованным ключом. Такая схема почти не предъявляет требований к защите аппаратуры от взлома и предполагает отсутствие прямого доступа пользователей к ключам. Подробнее эта тема обсуждается ниже, в разделах 24.1 и 24.8. 8.6. Обновление ключей Представьте себе канал передачи шифрованных данных, для которых необходимо каждый день менять ключи. Иногда ежедневное распределение новых ключей - сущее мучение. Более простое решение - генерировать новый ключ из старого. Такая схема иногда называется обновлением ключей. Все, что нужно для этого - однонаправленная функция. Если Алиса и Боб используют общий ключ и применяют к нему одну и ту же однонаправленную функцию, они получат одинаковый результат. Из результата они могут выбрать нужные биты и создать новый ключ. Обновление ключей работает, но помните, что надежность нового ключа определяется надежностью старого ключа. Если Ева ухитрится заполучить старый ключ, она сможет обновлять ключи самостоятельно. Но если старого ключа у Евы нет и она пытается вскрыть зашифрованный трафик с использованием только шифртекста, обновление ключей - хороший метод защиты для Алисы и Боба. 8.7. Хранение ключей Проще всего решить проблему хранения ключей единственного пользователя, - Алисы, которая шифрует файлы для последующего использования. Так как Алиса- единственный пользователь системы, только она и отвечает за ключ. В некоторых системах используется простой подход: ключ хранится не в системе, а только в голове Алисы. Она должна запомнить ключ (как - ее дело) и вводить его каждый раз, когда необходимо зашифровать или расшифровать файл. Примером такой системы является 1Р8 [881]. Пользователи могут либо напрямую вводить 64-битовый ключ, либо вводить ключ как более длинную строку символов. В последнем случае система, используя технику перемалывания ключа, генерирует 64-битовый ключ по строке символов. Другое решение задачи- хранение ключа на карточке с магнитной полосой, на пластиковой карте с встроенной микросхемой ПЗУ (называемой ПЗУ-ключ) или на смарт-карте [556, 557, 455]. Пользователь может ввести свой ключ в систему, вставив физический носитель в считывающее устройство либо собственного шифратора, либо подключенного к его компьютерному терминалу. Хотя пользователь может применять ключ, он не знает его и не может компрометировать. Он может использовать ключ только тем способом и только для тех целей, которые заданы управляющим вектором.
ГЛАВА 8. Управление ключами 213 ПЗУ-ключ - очень хитроумная штука. Люди прекрасно знают, что такое физический ключ, каково его значение, и как его защищать. Поэтому придание криптографическому ключу некоей материальной формы делает хранение и защиту такого ключа интуитивно понятнее. Эта технология обеспечивает повышенную надежность при разбиении ключа на две половины, одна из которых хранится в компьютере, а вторая - в ПЗУ-ключе. Так работает защищенный телефон БТИ-Ш правительства США. Потеря такого ПЗУ-ключа не компрометирует криптографический ключ- замените ключ, и опять все будет в порядке. То же справедливо и при утрате терминала. Таким образом, поскольку противнику нужно заполучить обе части ключа, компрометация ПЗУ-ключа или системы не компрометирует сам криптографический ключ. Трудно запоминаемые ключи можно хранить в шифрованном виде, используя что-то вроде ключа шифрования ключей. Например, закрытый ключ Я8А можно зашифровать ключом БЕ8 и сохранить на диске. Для восстановления ключа Я8А пользователь должен ввести в программу расшифрования ключ ЭЕ8. При использовании криптографически надежного генератора псевдослучайных чисел ключи, возможно, проще генерировать повторно каждый раз, когда в них возникает необходимость, вводя легко запоминающийся пароль. В идеальном случае ключ никогда не должен показываться вне шифровального устройства в нешифрованном виде. Это не всегда возможно, но к этому нужно стремиться. 8.8. Резервные копии ключей шифрования Предположим, Алиса работает главным финансистом компании 8есге1з, Ыб. - «Наш девиз - мы не рассказываем девизы». Как любой примерный служащий корпорации, Алиса, в соответствии с инструкциями по соблюдению секретности, шифрует все свои данные. К несчастью, она забыла правила дорожного движения и попала под грузовик. Как быть президенту компании Бобу? Если Алиса не оставила копии своего ключа, Бобу придется туго. Весь смысл шифрования файлов - в невозможности их восстановления без ключа. И если Алиса достаточно компетентна и пользовалась надежными программами шифрования, ее файлы пропали навсегда. Чтобы исключить подобную ситуацию, Боб может воспользоваться несколькими методами. Простейший метод иногда называют депонированием ключей (см. раздел 4.14). Он требует, чтобы все сотрудники записали свои ключи на бумажках и отдали их начальнику службы безопасности компании, который запрет их в сейф или зашифрует главным ключом. После этого, что бы ни случилось с Алисой, Боб может узнать ее ключ у начальника службы безопасности. Разумеется, Боб должен знать комбинацию для открытия его сейфа, поскольку в противном случае Бобу снова не повезет, если начальник службы безопасности попадет под другой грузовик. Недостаток такой системы управления ключами в том, что Боб (и все сотрудники, что еще важнее) должен верить, что его начальник службы безопасности не пользуется чужими ключами. Намного лучшее решение- использование протокола совместного использования секрета (см. раздел 3.7).
214 Прикладная криптография Когда Алиса генерирует ключ, она одновременно разделяет ключ на несколько частей, а затем отсылает все части (разумеется, зашифрованные) разным должностным лицам компании. По отдельности ни одна из частей не может служить ключом, но все части ключа можно собрать воедино и восстановить ключ. Теперь Алиса защищена от злоумышленников, а Боб - от утраты всех данных Алисы после ее гибели под колесами. Кроме того, Алиса может просто хранить разные части ключа на своем жестком диске, зашифровав их открытыми ключами соответствующих должностных лиц компании. Таким образом, никто не занимается распределением ключей, пока в этом не возникнет необходимость. В другой схеме резервного копирования [188] для временного депонирования ключей используются смарт-карты (см. раздел 24.13). Алиса может сохранить ключ, которым защищен ее жесткий диск, на смарт-карте и отдать ее Бобу, пока она в отъезде. Боб может использовать карту для доступа к жесткому диску Алисы, но, так как ключ хранится на карте, Боб не сможет его узнать. Кроме того, такая система контролируема с обеих сторон: Боб может проверить, что ключ открывает компьютер Алисы, а Алиса, когда вернется, может проверить, использовал ли Боб этот ключ, и если да, то сколько раз. В подобной схеме передача данных не нужна. В защищенном телефоне ключ должен существовать только в течение разговора- и не дольше. Для хранилищ данных, как только что показано, неплохой идеей может быть депонирование ключей. Например, я теряю ключи примерно раз в пять лет, причем моя память получше, чем у большинства людей. Если бы 200 миллионов человек пользовались криптографией, подобная частота привела бы к потере 40 миллионов ключей ежегодно. Поскольку я могу потерять свои ключи от дома, я храню их копии у соседей. Если бы ключи от дома были подобны криптографическим ключам, то, потеряв их, я никогда не смог бы попасть домой и вступить в свои права собственности. Так же, как я храню где-то в другом месте копии своих данных, есть смысл хранить и резервные копии моих ключей шифрования. 8.9. Скомпрометированные ключи Все протоколы, методы и алгоритмы этой книги надежны только при сохранении в тайне ключа (в системах с открытым ключом - закрытого ключа). Если ключ Алисы украден, потерян, напечатан в газете или скомпрометирован другим способом, все система её защиты разваливается. Если скомпрометированный ключ использовался в симметричной криптосистеме, Алисе придется заменить ключ и уповать на минимальный ущерб. Если скомпрометирован закрытый ключ, проблема намного серьезнее, поскольку соответствующий открытый ключ может храниться на многих сетевых серверах. И если Ева получит доступ к закрытому ключу Алисы, она сможет выдавать себя в сети за Алису: читать шифрованную почту, подписывать корреспонденцию, контракты и т.д. По существу, Ева становится Алисой. Жизненно важно быстро разослать по сети сообщение о компрометации закрытого ключа. Следует немедленно оповестить все базы данных открытых ключей о факте компрометации, чтобы ничего не подозревающий пользователь не зашифровал сообщение скомпрометированным ключом.
ГЛАВА 8. Управление ключами 215 Если Алиса знает, когда был скомпрометирован ее ключ - ей повезло. Если ключи распределяет центр КОС, Алиса должна сообщить ему о компрометации своего ключа. Если центр КОС не используется, Алисе следует известить всех корреспондентов, которые могут получать ее сообщения. Кто-то должен опубликовать тот факт, что любое сообщение, полученное после компрометации ключа Алисы, подозрительно, и что никто не должен посылать сообщения Алисе, используя соответствующий открытый ключ. Желательно, чтобы в приложении использовались какие-нибудь метки времени - тогда пользователи могут определить, какие сообщения законны, а какие подозрительны. Если Алиса не знает точно, когда ее ключ был скомпрометирован, дела обстоят хуже. Возможно, Алисе доведется когда-нибудь отказываться от контракта, поскольку он подписан вместо нее человеком, укравшим у нее ключ. Но поскольку система предоставляет такую возможность, любой человек тоже сможет отказаться от контракта, заявив, что его ключ компрометирован до подписания. Такой вопрос должен решаться судом. Описанная серьезная проблема показывает, как опасно для Алисы связывать свою личность с единственным ключом. Лучше, чтобы у Алисы были различные ключи для различных приложений - точно так же, как она хранит в кармане физические ключи от различных замков. Другие решения этой проблемы предусматривают биометрические измерения, ограничения возможностей использования ключа, задержки времени и вторую подпись. Эти процедуры и рекомендации наверняка не оптимальны, но это - лучшее, что мы можем сделать. Мораль этой истории - защищайте ключи, а закрытые ключи - надежнее всех. 8.10. Время жизни ключей Ни один ключ шифрования нельзя использовать бесконечно. Время его действия должно истекать автоматически, подробно паспортам и лицензиям. Вот несколько причин этого: ✓ Чем продолжительнее используется ключ, тем выше вероятность его компрометации. Люди записывают ключи и теряют их. Происходят несчастные случаи. Если вы используете ключ в течение года, вероятность его компрометации намного выше, чем при использовании ключа только один день. ✓ Чем продолжительнее используется ключ, тем больше потери при его компрометации. Если ключ используется только для шифрования единственного финансового документа на файловом сервере, потеря ключа влечет компрометацию только этого документа. Если же этот ключ используется для шифрования всей финансовой документации, хранящейся на файловом сервере, его потеря гораздо более разрушительна. ✓ Чем продолжительнее используется ключ, тем больше соблазн приложить необходимые усилия для его вскрытия, даже «в лоб». Вскрытие ключа, используемого в течение только одного дня для связи между двумя воинскими подразделениями, позволит читать сообщения, которыми обмениваются подразделения, и создавать поддельные. Вскрытие ключа, используемого в течение года всей системой военного командования, позволит взломщику в течение года читать все сообщения, циркулирующие в этой системе по всему миру, и подделывать
216 Прикладная криптография их. А какой ключ предпочли бы вскрывать вы, в нашу эпоху завершившейся холодной войны? ✓ Как правило, криптоанализ значительно упрощается, если под рукой есть множество текстов, зашифрованных одним и тем же ключом. В любом криптографическом приложении следует предусмотреть стратегию, определяющую допустимое время жизни ключа. У различных ключей могут быть разные времена жизни. Скажем, в коммутационных системах, таких как телефон, есть смысл использовать ключ только в течение телефонного разговора, а для нового разговора использовать новый ключ. Для систем, использующих специализированные каналы связи, все не так просто. У ключей должно быть относительно короткое время жизни, в зависимости от ценности и объема данных, зашифрованных в течение заданного периода. Ключ для канала связи со скоростью передачи 1 Гбит/сек., возможно, придется менять намного чаще, чем для модемного соединения со скоростью 9600 бод. Если доступен эффективный метод передачи новых ключей, сеансовые ключи должны заменяться хотя бы ежедневно. Ключи шифрования ключей так часто менять не нужно. Они используются редко (примерно раз в день) и только для обмена ключами. При этом шифртекста, интересного криптоаналитику, генерируется немного, а у соответствующего открытого текста нет какой-то особой формы. Однако если ключ шифрования ключей скомпрометирован, потенциальные потери чудовищны: будет раскрыта вся информация, шифрованная ключами, в свою очередь зашифрованных ключом шифрования ключей. В некоторых приложениях ключи шифрования ключей заменяются только раз в месяц или даже раз в год. Вам придется как-то уравновесить риск использования одного и того же ключа и риск передачи нового ключа. Ключи шифрования, используемые для шифрования файлов данных длительного хранения, часто менять нельзя. Зашифрованные файлы могут храниться на диске месяцами или годами, прежде чем они снова понадобятся кому-нибудь. Ежедневное расшифрование и повторное шифрование новым ключом никак не повысит степень защиты, но предоставит криптоаналитику дополнительный материал для работы. В качестве решения можно предложить шифрование каждого файла уникальным ключом и последующее шифрование ключей файлов ключом шифрования ключей. Ключ шифрования ключей необходимо либо запомнить, либо сохранить в хорошо защищенном месте, например, в сейфе. И, разумеется, потеря этого ключа влечет потерю всех индивидуальных файловых ключей. Время жизни закрытых ключей криптографических приложений с открытым ключом зависит от типа приложения. Закрытые ключи, используемые для генерации цифровых подписей и идентификации, можно использовать годами (и даже в течение всей человеческой жизни). Закрытые ключи для протоколов подбрасывания монетки можно уничтожать сразу по завершении протокола. Но даже если считается, что ключ надежен на протяжении человеческой жизни, благоразумнее менять ключ каждую пару лет. Во многих сетях разрешается использовать закрытый ключ только два года, затем пользователь должен получить новый закрытый ключ. Старый ключ, тем не менее, должен храниться в тайне на тот случай, если пользователю понадобится подтвердить подпись, созданную в период действия старого ключа. Но для подписания новых
ГЛАВА 8. Управление ключами 217 документов следует использовать только новый ключ. Такая схема позволит уменьшить число документов, которое криптоаналитик сможет использовать для вскрытия. 8.11. Уничтожение ключей Поскольку, как указано выше, ключи следует регулярно менять, старые ключи необходимо уничтожать. Старые ключи имеют определенную ценность, даже если они никогда больше не используются. Например, с их помощью противник может прочитать старые сообщения, зашифрованные этими ключами [65]. Ключи необходимо уничтожать с соблюдением мер обеспечения секретности (см. раздел 10.9). Если ключ записан на листе бумаги, лист нужно измельчить и сжечь. Пользуйтесь качественными измельчителями бумаги- рынок наводнен ненадежными моделями. Алгоритмы, описанные в этой книге, надежно противостоят лобовому вскрытию, стоящему миллионы долларов и требующему миллионы лет. Если противник сможет раскрыть ваш ключ, добыв плохо измельченные документы из вашей мусорной корзины и подрядив сотню безработных в какой-нибудь отсталой стране склеивать кусочки разрезанных страниц за 10 центов в час, он выгодно вложит пару десятков тысяч долларов. Если ключ записан в микросхему электрически стираемого ПЗУ (ЕЕРКОМ), его необходимо перезаписать несколько раз. Если ключ записан в микросхему стираемого или программируемого ПЗУ (ЕРЯОМ или РЯОМ), чип необходимо растереть в порошок и развеять по ветру. Если ключ хранится на диске компьютера, следует перезаписать несколько раз биты на соответствующем участке памяти (см. раздел 10.9) или уничтожить весь диск. Возможная проблема заключается в том, что ключи, хранящиеся на диске компьютера, можно без труда скопировать и сохранить во множестве мест. Любой компьютер, в котором реализована какая-либо схема распределения памяти, постоянно выгружает программы из памяти и загружает их обратно, усугубляя проблему. Никакого метода, гарантирующего надежное уничтожение ключа в компьютере, не существует, особенно если процесс уничтожения контролируется операционной системой компьютера. Особо озабоченные пользователи могут обдумать целесообразность написания специальной стирающей программы, которая сканировала бы все диски, отыскивала битовую комбинацию ключа в неиспользуемых блоках, а затем стирала бы эти блоки. Не забывайте также стирать все временные файлы, а также файлы подкачки. 8.12. Управление ключами в системах с открытым ключом Криптография с открытым ключом упрощает управление ключами, но у нее есть свои недостатки. Независимо от численности пользователей сети, каждый пользователь располагает только одним открытым ключом. Если Алисе необходимо послать сообщение Бобу, ей придется где-то найти открытый ключ Боба. Она может: ✓ Получить ключ от Боба. ✓ Запросить ключ в централизованной базе данных. ✓ Запросить ключ в личной базе данных.
218 Прикладная криптография В разделе 2.5 обсуждаются возможные способы вскрытия криптографии с открытым ключом, основанные на подмене ключа Боба ключом Мэллори. Используется такой сценарий: допустим, Алиса хочет отправить сообщение Бобу. Она запрашивает базу данных открытых ключей и получает открытый ключ Боба. Но мерзавец Мэллори подменяет ключ Боба собственным ключом. (Если Алиса запрашивает ключ непосредственно у Боба, Мэллори для успешной подмены придется перехватить ключ Боба во время передачи). Алиса шифрует сообщение ключом Мэллори и посылает его Бобу. Мэллори перехватывает сообщение, расшифровывает его и читает. Затем Мэллори шифрует сообщение открытым ключом Боба и пересылает по назначению. Ни Боб, ни Алиса ни о чем не догадываются. Сертификаты открытых ключей Сертификат открытого ключа представляет собой открытый ключ, подписанный доверенным лицом. Заверенные ключи используются для предотвращения попыток подмены ключа [879]. Заверенный ключ Боба в базе данных открытых ключей содержит не только открытый ключ Боба. В нем есть информация о Бобе - имя, адрес и т.д. Кроме того, ключ подписан кем-то, кому Алиса доверяет, например, Трентом (обычно известным как орган сертификации (СейШсабоп Аийюп1у, СА)). Подписав как ключ, так и информацию о Бобе, Трент заверяет, что информация о Бобе подлинна, а открытый ключ принадлежит ему. Алиса проверяет подлинность подписи Трента, а затем использует открытый ключ, убедившись, что он принадлежит Бобу - и никому другому. Заверенные ключи играют важную роль во многих протоколах с открытым ключом, например, РЕМ [825] (см. раздел 24.10) и Х.509 [304] (см. раздел 24.9). В таких системах появляется сложная проблема, не имеющая прямого отношения к криптографии. Каков смысл процедуры заверения? Или, иными словами, кто уполномочен выдавать сертификаты - и кому? Ведь кто угодно может заверить своей подписью любой открытый ключ, но должен же быть какой-то метод фильтрации подозрительных сертификатов, скажем, открытых ключей сотрудников компании, заверенные органом сертификации другой компании. Обычно для этого создается цепочка «передачи доверия»: единый надежный орган сертифицирует доверенных агентов, те сертифицируют орган СА компании, а СА компании заверяет открытые ключи своих работников. Вот еще вопросы, над которыми стоит поразмыслить: ✓ Какой уровень доверия к личности обеспечивает сертификат? |/ Каковы отношения между человеком и СА, заверяющим его открытый ключ, и как они отражаются на сертификате? ✓ Кому можно доверить роль «единого надежного органа», возглавляющего сертификационную цепочку? ✓ Насколько длинной может быть сертификационная цепочка? В идеальном случае, прежде чем орган СА подпишет сертификат Боба, Бобу придется пройти процедуру идентификации. Кроме того, для защиты от компрометированных
ГЛАВА 8. Управление ключами 219 ключей, важно использовать какие-то метки времени или признаки срока действия сертификата [461]. Использование одних только меток времени недостаточно. Ключи могут стать недостоверными задолго до истечения срока их жизни из-за компрометации или по каким-то административным причинам. Следовательно, очень важно, чтобы орган СА хранил список недостоверных сертификатов, а пользователи регулярно сверялись бы с этим списком. Эта проблема аннулирования ключей все еще далека от окончательного разрешения. Кроме того, одной пары открытый ключ/закрытый ключ недостаточно. Разумеется, в любой надежной реализации криптографии с открытым ключом для шифрования и цифровых подписей должны использоваться разные ключи. Это разделение учитывает различные степени защиты, время жизни, процедуры резервного копирования и т.д. Кто- то может подписывать сообщения 2048-битовым ключом, который хранится в смарт- карте и может применяться еще двадцать лет. Другой человек предпочтет использовать для шифрования 768-битовый ключ, который хранится в компьютере и годен для шифрования шесть месяцев. Однако одной пары ключей для шифрования и одной - для цифровой подписи тоже недостаточно. Закрытый ключ может идентифицировать не только личность, но и общественные связи человека, причем таких связей может быть множество. Скажем, Алиса должна подписывать один документ как частное лицо, второй- как вице- президент корпорации МопоШЬ, 1пс, а третий - как глава своей общественной организации. Некоторые из этих ключей особо важны, поэтому должны быть защищены надежнее других. Возможно, Алисе понадобиться хранить резервную копию своего рабочего ключа у сотрудника отдела безопасности, но она не хочет, чтобы у компании была копия ключа, которым она подписала закладную. Поэтому Алиса должна пользоваться несколькими криптографическими ключами точно так же, как она использует связку ключей из своего кармана. Децентрализованное управление ключами В некоторых случаях описанный выше метод централизованного распределения ключей непригоден. Возможно, не существует такого СА, которому доверяли бы Алиса и Боб. Возможно, Алиса и Боб доверяют только своим друзьям. Возможно, Алиса и Боб не доверяют никому. Децентрализованное распределение ключей, используемое в программе РСР (см. раздел 24.12), решает эту проблему с помощью поручителей (Шгодисегз). Поручители - это пользователи системы, которые подписывают открытые ключи своих товарищей. Например, когда Боб генерирует свой открытый ключ, он передает копии ключа своим товарищам - Кэрол и Дэйву. Они знают Боба, поэтому каждый из них подписывает ключ Боба и передает Бобу копию своей подписи. Теперь, когда Боб предъявляет свой ключ чужому человеку, Алисе, он прилагает к нему подписи двух своих поручителей. Если Алиса, как и Боб, тоже знакома с Кэрол и доверяет ей, у нее есть основание верить в подлинность ключа Боба. Если Алиса знает Кэрол и Дэйва и хоть немного им доверяет, у нее тоже появляется основание верить в подлинность ключа Боба. Но если Алисе не знакомы ни Кэрол, ни Дэйв, у нее нет оснований верить в подлинность ключа Боба.
220 Прикладная криптография Спустя какое-то время Боб соберет подписи многих поручителей. Если Алиса и Боб вращаются в одних кругах, весьма вероятностно, что Алиса будет знакома с одним из поручителей Боба. Чтобы помешать Мэллори подменить один ключ другим, поручитель, прежде чем подписывать ключ, должен быть уверен, что данный ключ принадлежит именно Бобу. Возможно, поручитель потребует передачи ключа при личной встрече или по телефону. Преимущество такой схемы- в отсутствии СА, которому должны доверять все. К недостаткам относится отсутствие гарантий того, что Алиса, получившая открытый ключ Боба, знакома с кем-то из поручителей, и, следовательно, нет гарантий, что она поверит в подлинность ключа.
ГЛАВА 9. Типы алгоритмов и режимов шифрования Известны два основных типа симметричных алгоритмов: блочные шифры и потоковые шифры. Блочные шифры оперируют блоками открытого текста и шифртекста - обычно длиной 64 бит, иногда длиннее. Потоковые (или поточные) шифры оперируют битовыми или байтовыми потоками открытого текста и шифртекста (иногда даже с потоками 32-битовых слов). Блочный шифр, используя один и тот же ключ, при шифровании всегда преобразует один и тот же блок открытого текста в один и тот же блок шифртекста. Потоковый шифр при каждом шифровании превращает один и тот же бит или байт открытого текста в различные биты или байты шифртекста. Криптографический режим обычно объединяет базовый шифр, обратную связь какого- то типа и несколько простых операций. Операции просты, поскольку стойкость определяется используемым шифром, а не режимом* Более того, режим шифрования не должен снижать стойкость используемого алгоритма. Известны и другие требования, определяющие стойкость: структура открытого текста должна быть скрыта, вход шифра должен быть рандомизирован, манипулирование открытым текстом путем ввода ошибок в шифртекст должно быть затруднено, должно допускаться шифрование нескольких сообщений одним ключом. Все эти вопросы подробно обсуждаются в следующих разделах. Другое важное требование - эффективность. Эффективность режима не должна быть ниже, чем у используемого алгоритма. В некоторых случаях важно, чтобы размер шифртекста совпадал с размером открытого текста. Третье требование - отказоустойчивость. В некоторых приложениях требуется параллельная обработка при шифровании или расшифровании, в других- возможно большая предварительная обработка. В некоторых приложениях важно, чтобы процесс расшифрования мог компенсировать последствия ошибок в символах потока шифртекста, а также был устойчив к исчезновению и появлению битов. Как показано ниже, разные режимы удовлетворяют различным совокупностям этих характеристик. 9.1. Режим электронной кодовой книги Самый очевидный метод использования блочных шифров- использование режима электронной кодовой книги (Е1ес1готс СобеЬоок, ЕСВ. Русский термин - режим простой замены). В режиме ЕСВ каждый блок открытого текста заменяется блоком шифртекста. А так как один и тот же блок открытого текста заменяется одним и тем же блоком шифртекста, теоретически возможно создать кодовую книгу блоков открытого текста и соответствующих шифртекстов. Но если размер блока составляет 64 бит, кодовая книга будет состоять из 264 записей. Это слишком много для предварительной обработки и хранения. Причем не забывайте - каждому ключу понадобится отдельная кодовая книга. Режим ЕСВ - простейший режим шифрования. Все блоки открытого текста шифруются независимо друг от друга. Нет надобности в последовательном шифровании файла- можно зашифровать сначала 10 блоков в середине текста, затем последние блоки, и,
222 Прикладная криптография наконец, первые блоки. Это важно для шифрованных файлов с произвольным доступом, например, файлов баз данных. Если база данных зашифрована в режиме ЕСВ, любая запись может быть добавлена, удалена, зашифрована или расшифрована независимо от любой другой записи (при условии, что каждая запись состоит из целого числа блоков шифрования). Кроме того, обработка может быть параллельной: если используются несколько шифровальных процессоров, они могут шифровать или расшифровывать различные блоки независимо друг от друга. К недостаткам режима ЕСВ можно отнести то обстоятельство, что если у криптоаналитика есть открытый текст и шифртекст нескольких сообщений, он может, не зная ключа, начать составлять шифровальную книгу. В большинстве реальных ситуаций фрагменты сообщений имеют тенденцию повторяться. В различных сообщениях могут быть одинаковые битовые последовательности. В сообщениях, которые, подобно электронной почте, создаются компьютером, могут быть периодически повторяющиеся структуры. Сообщения могут быть высоко избыточными или содержать длинные строки нулей или пробелов. Если криптоаналитик узнает, что блок открытого текста «5е081Ъс5» шифруется в блок шифртекста «7еа593а4», он может мгновенно дешифровать этот блок шифртекста, в каком бы ином сообщении он не появился. Если в шифрованном сообщении много повторов, которые имеют тенденцию занимать одинаковое место в разных сообщениях, криптоаналитик может получить много полезной информации. Он может попытаться вскрыть статистическим методом открытый текст, независимо от совершенства блочного шифра. Особенно уязвимы начала и окончания сообщений, где содержится информация об отправителе, получателе, дате и т.д. Это - так называемая проблема стандартных заголовков и стандартных окончаний. К достоинствам режима ЕСВ можно отнести возможность шифрования нескольких сообщений одним ключом без снижения надежности, По существу, каждый блок можно рассматривать как отдельное сообщение, шифрованное тем же самым ключом. При расшифровании ошибки в символах шифртекста ведут к некорректному расшифрованию соответствующего блока открытого текста, однако не затрагивают остальной открытый текст. Но если бит шифртекста случайно потерян или добавлен, весь последующий шифртекст будет дешифрован некорректно, если только для выравнивания границ блоков не используется какое-нибудь выравнивание по границам блока. Дополнение блоков Большинство сообщений не делятся точно на 64-битовые (или любого другого размера) блоки шифрования - в конце обычно оказывается укороченный блок. Однако режим ЕСВ требует использовать 64-битовые блоки. Для решения этой проблемы используют дополнение (рас1с1т%). Чтобы создать полный блок, последний блок дополняют некоторым стандартным шаблоном- нулями, единицами, чередующимися нулями и единицами. Если после расшифрования дополнение необходимо удалить, запишите число байтов-заполнителей в последний байт последнего блока. Пусть, например, размер блока составляет 64 бит, а размер последнего блока - 3 байта (24 бит). Таким образом, для дополнения блока до 64 бит необходимо 5 байтов-заполнителей. Добавьте 4 байта нулей, а в последний байт
ГЛАВА 9. Типы алгоритмов и режимов шифрования 223 запишите число 5. После расшифрования удалите последние 5 байт из последнего расшифрованного блока. Чтобы этот метод работал корректно, следует дополнять каждое сообщение. Даже если открытый текст заканчивается на границе блока, вам придется добавить один полный блок. Кроме того, можно обозначить последний байт открытого текста меткой конца файла, а после него вставить заполнитель. На Рис. 9.1 показан альтернативный вариант, называемый похищением шифртекста (аркеНех! 51еаИп%) [402]. Рп-\ - последний полный блок открытого текста, а Р„ - последний, короткий блок открытого текста. С„_] - последний полный блок шифртекста, и Сп - последний, короткий блок шифртекста. С' - промежуточный результат, не входящий в переданный шифртекст. Рис. 9.1. Похищение шифртекста в режиме ЕСВ 9.2. Повтор блока У режима ЕСВ есть более серьезный недостаток: противник, чтобы обмануть предполагаемого получателя, может изменять шифрованные сообщения, даже не зная ключа или алгоритма. Впервые эта проблемы отмечена в [291]. В качестве иллюстрации, рассмотрим систему перевода денег, предназначенную для перечисления денег между банками. Чтобы упростить работу компьютеров, банки согласовали примерно такой стандартный формат сообщения о перечислении денег: Банк 1: Передача 1.5 блока Банк 2: Прием 1.5 блока Имя вкладчика 6 блоков Счет вкладчика 2 блока Сумма вклада 1 блок Блок соответствует 8-байтовому блоку шифрования. Сообщения шифруются с помощью какого-нибудь блочного алгоритма в режиме ЕСВ. Мэллори, который подслушивает линию связи между банками - «Банком Алисы» и «Банком Боба», может использовать эту информацию для обогащения. Сначала он
224 Прикладная криптография программирует свой компьютер на запись всех шифрованных сообщений из банка Алисы в банк Боба. Затем он переводит $100 из Банка Алисы на свой счет в Банк Боба. Позднее он повторяет эту операцию еще раз. Используя свой компьютер, он изучает записанные сообщения, разыскивая пару идентичных сообщений. Это те сообщения, которыми он перевел $100 на свой счет. Если Мэллори найдет более одной пары одинаковых сообщений (что весьма вероятно на практике), он делает еще один денежный перевод и записывает результат. В конце концов, он сумеет выделить сообщение, которым распорядился банку перевести свои деньги. Теперь Мэллори когда угодно может отправить это сообщение по каналу связи. Каждое сообщение приведет к зачислению на его счет в Банке Боба еще $100. Когда оба банка сверят свои переводы (возможно, в конце дня), они обнаружат переводы-призраки, но если Мэллори достаточно умен, он уже сбежит в какую-нибудь банановую республику без договора об экстрадиции, прихватив с собой деньги. И, скорее всего, он похитит сумму побольше $100 и провернет операцию сразу в нескольких банках. На первый взгляд, банки могут легко пресечь это мошенничество, вставляя в свои сообщения метки времени. Метка даты/времени 1 блок Банк 1: Передача 1.5 блока Банк 2: Прием 1.5 блока Имя вкладчика 6 блоков Счет вкладчика 2 блока Сумма вклада 1 блок В такой системе два идентичных сообщения будут без труда обнаружены. Тем не менее, используя метод, называемый повтором блока, Мэллори все же сможет обогатиться. Как видно на Рис. 9.2, Мэллори может выделить восемь блоков шифртекста, соответствующих его имени и номеру счета: блоки с 5 по 12. В этот момент уместно дьявольски рассмеяться, ведь Мэллори уже в полной готовности. Номер блока 1 2 3 4 5 6 7 8 9 10 11 12 13 Метка времени Бланк-по¬ лучатель Банк-от¬ правитель Имя вкладчика Счет вкладчика Сумма Поле Рис. 9.2. Пример записи блоков шифрования Мэллори перехватывает сообщения из банка Алисы в банк Боба и заменяет блоки сообщений с 5 по 12 байтами, соответствующими его имени и номеру счета. Затем он посылает измененные сообщения в банк Боба. Ему не надо знать, кто отправил деньги, ему даже не нужно знать переводимую сумму (хотя он может связать подправленное сообщение с соответствующим увеличением своего счета и определить блоки, соответствующие определенным денежным суммам). Он просто заменяет имя и номер счета собственными и следит за ростом личных доходов. (Я полагаю, Мэллори будет
ГЛАВА 9. Типы алгоритмов и режимов шифрования 225 осторожен и не станет подделывать сообщение о снятии денег; но предположим на минутку, что у этих сообщений другая длина или иной отличительный признак). Такое мошенничество банки не сумеют обнаружить в тот же день. Когда они сверят свои переводы в конце дня, все суммы совпадут. Возможно, пока настоящий вкладчик не заметит, что его вклады не зачисляются на его счет, или пока кто-нибудь не обратит внимания на неожиданную активизацию работы со счетом Мэллори, банки не смогут заметить никаких следов. Но Мэллори - парень тертый, и к этому времени закроет свой счет, изменит имя и купит виллу в Аргентине. Банки могут минимизировать эту опасность, часто меняя свои ключи, но это означает только, что Мэллори придется действовать живее. Кроме того, проблему решит и добавление имитовставки. Но, несмотря на это, описанная проблема - фундаментальный недостаток режима ЕСВ. Мэллори может удалять, повторять или заменять блоки по своему усмотрению. Для решения проблемы используют метод, называемый сцеплением (скатт%). 9.3. Режим сцепления блоков шифртекста Сцепление добавляет в блочный шифр механизм обратной связи: результаты шифрования предыдущих блоков влияют на шифрование текущего блока. Другими словами, каждый блок используется для модифицирования шифрования следующего блока. Каждый блок шифртекста зависит не только от шифруемого блока открытого текста, но и от всех предыдущих блоков открытого текста. В режиме сцепления блоков шифртекста (СИрЬег В1оск СЬатт§ - СВС) перед шифрованием над открытым текстом и предыдущим блоком шифртекста выполняется операция ХОК. На Рис. 9.3 (а) показан процесс шифрования в режиме СВС. Когда блок открытого текста зашифрован, полученный шифртекст сохраняется в регистре обратной связи. Следующий блок открытого текста перед шифрованием подвергается операции ХОК с содержимым регистра обратной связи. Результат операции ХОК используется как входные данные для следующего этапа процедуры шифрования. Полученный шифртекст снова сохраняется в регистре обратной связи, чтобы подвергнуться операции ХОК вместе со следующим блоком открытого текста, и так до конца сообщения. Шифрование каждого блока зависит от всех предыдущих блоков. Расшифрование выполняется в обратном порядке (Рис. 9.3 (б)). Блок шифртекста расшифровывается обычным путем, но сохраняется в регистре обратной связи. Затем следующий блок расшифровывается и подвергается операции ХОК с содержимым регистра обратной связи. Теперь следующий блок шифртекста сохраняется в регистре обратной связи и т.д. до конца сообщения. Математически это выглядит следующим образом: С, =Е*(Р,©С,_,) 3=с,_, ег>А(с,)
226 Прикладная криптография Рис. 9.3. Режим сцепления блоков шифртекста Вектор инициализации При шифровании в режиме СВС одинаковые блоки открытого текста превращаются в различающиеся друг от друга блоки шифртекста только в том случае, если различались какие-то предшествующие блоки открытого текста. Однако при шифровании двух идентичных сообщений создается один и тот же шифртекст. Хуже того, два одинаково начинающихся сообщения будут шифроваться одинаково вплоть до первого различия. В некоторых сообщениях может использоваться одинаковый заголовок- стандартная шапка письма, строка «Ргот» (От) или еще что-нибудь. Хотя повтор блока по-прежнему невозможен, одинаковое начало может предоставить криптоаналитику какую-то полезную информацию. Чтобы избежать этого, можно зашифровать в первом блоке какие-то произвольные данные. Этот блок случайных данных называют вектором инициализации (ВИ) (ГпШаИгайоп Уес1ог, IV, русский термин - синхропосылка), инициализирующей переменной или начальным значением сцепления. Вектор ВИ не имеет какого-то смыслового значения, он используется только для того, чтобы сделать каждое сообщение уникальным. Когда получатель расшифровывает этот блок, он использует его только для заполнения регистра обратной связи. В качестве вектора ВИ удобно использовать метку времени, либо какие-то случайные биты. Если используется вектор инициализации, сообщения с идентичным открытым текстом после шифрования превращаются в сообщения с разными шифртекстами. Следовательно, злоумышленник не может попытаться повторить блок, и создание шифровальной книги затруднится. Хотя для каждого сообщения, шифруемого одним и тем же ключом, рекомендуется выбирать уникальный вектор ВИ, это требование необязательное.
ГЛАВА 9. Типы алгоритмов и режимов шифрования 227 Вектор ВИ не обязательно хранить в секрете, его можно передавать открыто - вместе с шифртекстом. Не понимаете, почему? Рассмотрим следующий довод. Пусть наше сообщение состоит из нескольких блоков: Вь В2у.., Я,. Блок В\ шифруется с помощью вектора инициализации. Блок В2 шифруется с использованием шифртекста В{ в роли вектора инициализации. Блок В2 шифруется с использованием шифртекста В2 в роли вектора ВИ и т.д. Итого, если п - число блоков, то п -1 «векторов инициализации» открыты, даже если первоначальный вектор ВИ хранится в секрете. Поэтому нет причин хранить в секрете вектор ВИ - это просто блок-заглушка шифртекста, который можно рассматривать как блок В0, используемый для запуска режима сцепления. Дополнение блоков Дополнение используется так же, как и в режиме ЕСВ, но в некоторых приложениях размеры шифртекста и открытого текста должны точно совпадать. Возможно, открытый текст после шифрования должен замещаться зашифрованным файлом в той же области дисковой памяти. В этом случае последний короткий блок необходимо шифровать иначе. Допустим, последний блок состоит из ] бит данных. Тогда, зашифровав последний полный блок, зашифруйте шифртекст еще раз, выберите у самых левых битов шифртекста и выполните над ними и коротким блоком операцию ХОК, создавая шифртекст. Эта процедура приведена на Рис. 9.4. Рис. 9.4. Шифрование последнего короткого блока в режиме СВС Недостаток этого метода заключается в том, что хотя Мэллори не может восстановить последний блок шифртекста, он может методично модифицировать его путем замены отдельных битов шифртекста. Если же в нескольких последних битах шифртекста содержится важная информация, это уже можно назвать недостатком. Ну, а если последние биты - просто совет по домоводству, это не проблема. Лучший способ - этот тот же способ «похищения шифртекста» (см. Рис. 9.5) [402]. Здесь Рп-\- последний полный блок открытого текста, Рп - заключительный, короткий блок открытого текста. С„_ 1 - последний полный блок шифртекста, Сп - заключительный, короткий блок шифртекста. С' - промежуточный результат, не входящий в переданный
228 Прикладная криптография шифртекст. Преимущество этого метода в том, что все биты открытого текста сообщения обрабатываются алгоритмом шифрования. Распространение ошибки Для режима СВС характерна обратная связь шифртекста при шифровании и прямая связь шифртекста при расшифровании. Это влечет определенные последствия, связанные с ошибками. Ошибка даже в одном бите блока открытого текста влияет как на этот, так и все последующие блоки шифртекста. Это не слишком существенно, поскольку расшифрование инвертирует этот эффект, и восстановленный открытый текст будет содержать ту же единственную ошибку. Чаще встречаются ошибки шифртекста. Нередко они появляются из-за шумов в линиях связи или сбоев устройств хранения. В режиме СВС ошибка в одном бите шифртекста влияет на один блок и один бит восстановленного открытого текста - этот блок после расшифрования искажается полностью. В следующем блоке искажается единственный бит, находящийся в той же позиции, что и ошибочный бит. Такое свойство превращения малой ошибки шифртекста в крупную ошибку открытого текста называют распространением ошибки. Это - основной недостаток режима СВС. Ошибка не влияет на последующие блоки, расположенные через один (и дальше) от искаженного блока, поэтому режим СВС называют самовосстанавливающимся. Ошибка влияет на два блока, но для всех последующих блоков система продолжает работать корректно. СВС представляет собой пример блочного шифра, используемого в самосинхронизирующемся стиле, но только на блоковом уровне. Хотя режим СВС быстро восстанавливается после ошибки в символах, он абсолютно не устойчив к ошибкам синхронизации. Если в потоке шифртекста теряется или добавляется бит, положения всех последующих блоков сдвигаются на один бит, и результатом расшифрования будет сплошная чепуха. Любая криптосистема, использующая режим СВС, должна поддерживать целостность блочной структуры либо при помощи кадровой синхронизации, либо сохраняя данные в структуры из нескольких блоков.
ГЛАВА 9. Типы алгоритмов и режимов шифрования 229 Проблемы безопасности Структура СВС влечет некоторые потенциальные проблемы. Во-первых, поскольку блок шифртекста достаточно явно влияет на следующий блок, Мэллори может незаметно добавлять блоки к концу зашифрованного сообщения. Конечно, при расшифровании они превратятся в чепуху, но в некоторых ситуациях нежелательно и это. При использовании режима СВС необходимо структурировать открытый текст так, чтобы вы знали, где находятся окончания сообщений, и могли обнаружить добавление лишних блоков. Во-вторых, Мэллори может изменить блок шифртекста, чтобы вызвать вполне определенные изменения блоков расшифрованного открытого текста. Например, если Мэллори изменит один бит шифртекста, весь блок будет расшифрован неправильно, а в следующем блоке в соответствующей позиции будет ошибка в одном символе. Возможны ситуации, когда это нежелательно. Открытое сообщение должно иметь некоторую контролируемую избыточность или возможность идентификации. Наконец, хотя структура открытого текста маскируется сцеплением, структура очень длинных сообщений все равно будет заметна. Как показывает парадокс дней рождений, после 2т11 блоков (где т - размер блока), появляются одинаковые блоки. Для 64-битового блока длина такого сообщения составит примерно 32 Гбайт, поэтому подобная проблема характерна только для крупных сообщений. 9.4. Потоковые шифры Потоковые шифры преобразуют открытый текст в шифртекст побитово. Простейшая реализация потокового шифра представлена на Рис. 9.6. Генератор гаммы (иногда называемый генератором бегущего ключа (гиптп% кеу ^епега(ог)1) выдает поток битов: ки к2, к3..., к,. Эта гамма шифра или просто гамма (иногда называемая бегущим ключом) и поток битов открытого текста, ри р2, рз-~, Рь подвергаются операции ХОЯ, и в результате создается поток битов шифртекста2. <7 = Р< © К При расшифровании, для восстановления битов открытого текста, над битами шифртекста и той же самой гаммой тоже выполняется операция ХОЯ: Рг = <7 @ К Поскольку Рг © К © А/ = Рг эта схема работает превосходно. 1 Только в англоязычной литературе. 2 И такой режим шифрования в русскоязычной литературе называется «гаммированием» - Прим. ред.
230 Прикладная криптография Надежность системы всецело зависит от свойств генератора гаммы. Если он создает бесконечную строку нулей, шифртекст будет совпадать с открытым текстом, и вся операция бессмысленна. Если генератор гаммы выдает повторяющийся 16-битовый фрагмент, алгоритм работает как простая операция ХОК с ничтожно малой защитой (см. раздел 1.4). Если он создает бесконечный поток случайных (истинно случайных, а не псевдослучайных - см. раздел 2.8) битов, вы получаете одноразовый шифровальный блокнот с совершенной защитой. На деле надежность потокового шифра находится где-то между простой операцией ХОК и одноразовым блокнотом. Генератор гаммы создает битовый поток, который выглядит как случайный, но фактически детерминирован и может быть безошибочно воспроизведен при расшифровании. Чем ближе выход генератора гаммы к истинно случайному, тем больше времени потребуется криптоаналитику для взлома шифра. \ Генер \ гам Гамма р Открытый текст ^ >атор / \ Генер мы/ \ гам Гамма Ц Шифртекст ^ затор / 1МЫу/ к, Ц Открытый текст Зашиф V с, ^ рование Расшис| [) ► Л эрование Рис. 9.6. Потоковый шифр Если, однако, генератор гаммы при каждом запуске создает один и тот же битовый поток, взлом такой криптосистемы тривиален. Рассмотрим на примере, почему это так. Если Еве попал шифртекст и соответствующий открытый текст, она может выполнить операцию ХОК над открытым текстом и шифртекстом и восстановить гамму. Или, если у нее есть два различных шифртекста, зашифрованных одинаковым ключом, она может выполнить над ними операцию ХОК, получив два открытых текста сообщений, над которыми выполнена операция ХОК. Их нетрудно взломать, а затем, выполнив операцию ХОК над одним из открытых текстов и шифртекстом, Ева может восстановить гамму. Теперь, перехватив любое другое шифрованное сообщение, Ева сможет дешифровать его, используя полученную гамму. Кроме того, она может дешифровать и прочитать любое из ранее перехваченных сообщений. Когда Ева получит единственную пару открытый текст/шифртекст, она сможет читать все. Именно поэтому во всех потоковых шифрах используют ключи. Выход генератора гаммы определяется ключом. Теперь, если Ева получит пару открытый текст/шифртекст, она сможет прочитать только те сообщения, которые зашифрованы тем же ключом. Измените ключ, и противнику придется начать все заново. Потоковые шифры особенно полезны для шифрования бесконечных потоков трафика сообщений, например, линии Т1, связывающей два компьютера. Генератор гаммы состоит из трех основных частей (см. Рис. 9.7). Внутреннее состояние описывает текущее состояние генератора гаммы. Два генератора, с одинаковым ключом
ГЛАВА 9. Типы алгоритмов и режимов шифрования 231 и одинаковым внутренним состоянием, создают одинаковые гаммы. Выходная функция считывает внутреннее состояние и генерирует бит гаммы. Функция переходов считывает текущее внутреннее состояние и генерирует новое внутреннее состояние. Рис. 9.7. Устройство генератора гаммы 9.5. Самосинхронизируюшиеся потоковые шифры В самосинхронизирующихся потоковых шифрах каждый бит гаммы представляет собой функцию фиксированного числа предыдущих битов шифртекста [1378]. Военные называют этот шифр автоключом шифртекста (С1рЬех1ех1 Аи1о Кеу- СТАК). Основная идея запатентована в 1946 году [667]. Самосинхронизирующийся потоковый шифр показан на Рис. 9.8. Внутреннее состояние зависит от п предыдущих битов шифртекста. Выходная функция криптографически сложна - она считывает внутреннее состояние и генерирует биты гаммы. Рис. 9.8. Самосинхронизирующийся генератор гаммы
232 Прикладная криптография Так как внутреннее состояние полностью зависит от предыдущих п битов шифртекста, расшифровывающий генератор гаммы, приняв п битов шифртекста, автоматически синхронизируется с шифрующим генератором. В интеллектуальных реализациях этого режима каждое сообщение начинается случайным заголовком длиной п бит. Этот заголовок шифруется, передается, а затем расшифровывается. Расшифрование сначала будет некорректным, но после приема п битов оба генератора гаммы синхронизируются. Недостаток самосинхронизирующегося потокового шифра- распространение ошибки. Для каждого бита шифртекста, искаженного при передаче, расшифровывающий генератор гаммы выдает п некорректных битов гаммы. Следовательно, пока испорченный бит влияет на внутреннее состояние, каждой ошибке шифртекста будут соответствовать п ошибок открытого текста. Проблемы безопасности Самосинхронизирующиеся потоковые шифры тоже уязвимы к атаке повторной передачей. Прежде всего, Мэллори записывает несколько битов шифртекста. Затем, некоторое время спустя, он вставляет эту запись в текущий трафик. После начального выхода всякой ерунды, пока принимающая сторона синхронизируется с вставленной записью, старый шифртекст будет расшифрован как нормальный. У принимающей стороны нет возможности установить, что полученные данные - повторно передаваемая запись. Если не используются метки времени, Мэллори, повторно передавая одно и то же сообщение, может заставить банк снова и снова зачислять деньги на его счет (если, конечно, ключ не менялся). Другие слабые места этой схемы могут проявиться при слишком частой ресинхронизации [408]. 9.6. Режим обратной связи по шифртексту Блочный шифр тоже можно реализовать как самосинхронизирующийся потоковый шифр. Такой режим называют режимом обратной связи по шифртексту (СМрЬег- РеесПэаск- СРВ. Русский термин - гаммирование с обратной связью). В режиме СВС начать шифрование до поступления полного блока данных невозможно. Для некоторых сетевых приложений это создает проблемы. Например, в защищенном сетевом окружении терминал должен иметь возможность передавать хосту каждый символ сразу после ввода. Если же данные нужно обрабатывать блоками в несколько байт, режим СВС просто не работает. В режиме СРВ можно шифровать единицы данных размером не больше блока. В приве¬ денном ниже примере каждый раз шифруется только один символ А8СН (этот режим называют 8-битовым СРВ). В числе 8 нет ничего священного - с помощью 1-битового СРВ можно шифровать данные и побитово. Однако полное шифрование блочным шифром единственного бита требует много ресурсов, и в этом случае удобнее использовать потоковый шифр. (Снижение числа раундов блочного шифрования для ускорения работы не рекомендуется [1269]). Кроме того, можно использовать 64-бито¬ вый СРВ, или любой «-битовый СРВ, где п больше или равно размеру блока. На Рис. 9.9 показана работа 8-битового режима СРВ с алгоритмом с 64-битовым блоком. Блочный алгоритм в режиме СРВ работает с очередью (регистром сдвига), размер
ГЛАВА 9. Типы алгоритмов и режимов шифрования 233 которой равен размеру используемого блока. Как и в режиме СВС, первоначально очередь заполнена вектором инициализации ВИ. Очередь шифруется, затем выполняется операция ХОЯ над восемью старшими (крайними левыми) битами результата и первым 8-битовым символом открытого текста. В результате появляется первый 8-битовый символ шифртекста. Теперь этот символ можно передать. Кроме того, полученные восемь битов попадают в очередь на место восьми младших битов, а все остальные биты сдвигаются на 8 позиций влево. Предыдущие восемь старших битов отбрасываются. Затем точно также шифруется следующий символ открытого текста. Расшифрование выполняется в обратном порядке. Обе стороны - шифрующая и расшифровывающая - использует блочный алгоритм в режиме шифрования. Рис. 9.9. Режим 8-битовой обратной связи по шифртексту Если обозначить п размер блока алгоритма, то «-битовый СРВ выглядит так, как показано на Рис. 9.10: Рис. 9.10. Работа п-битового СРВ с п-битовым алгоритмом Как и режим СВС, режим СРВ сцепляет символы открытого текста с тем, чтобы шифртекст зависел от всего предыдущего открытого текста.
234 Прикладная криптография Вектор инициализации Для инициализации процесса шифрования в режиме СРВ в качестве входного блока алгоритма можно использовать вектор инициализации ВИ. Как и в режиме СВС, хранить в тайне вектор ВИ не нужно. Однако вектор ВИ должен быть уникальным. (В отличие от режима СВС, где уникальность вектора ВИ необязательна, хотя и желательна). Если вектор ВИ в режиме СРВ не уникален, криптоаналитик может восстановить соответствующий открытый текст. Вектор инициализации должен меняться в каждом сообщении. Например, вектором ВИ может служить порядковый номер, возрастающий в каждом новом сообщении и не повторяющийся все время жизни ключа. Если данные шифруются с целью последующего хранения, вектор ВИ может быть функцией индекса, используемого для поиска данных. Распространение ошибки В режиме СРВ ошибка в открытом тексте влияет на весь последующий шифртекст, но при расшифровании самоустраняется. Ошибка в шифртексте намного опаснее. Первый результат сбоя бита шифртекста- сбой одного бита открытого текста. Затем ошибка попадает в сдвиговый регистр, и пока ошибочный бит не покинет регистра, формируемый шифртекст будет некорректен. В 8-битовом режиме СРВ из-за сбоя единственного бита искажаются 9 байт дешифрованного открытого текста. Затем система восстанавливается, и весь последующий шифртекст расшифровывается корректно. В общем случае, в «-битовом режиме СРВ одна ошибка шифртекста влияет на расшифрование текущего и следующих т/п - 1 блоков, где т - размер блока. Есть более тонкая проблема, связанная с подобным распространением ошибки. Если Мэллори знает открытый текст сообщения, он может изменять биты данного блока, заставляя их расшифровываться в нужные ему данные. Следующий блок при расшифровании превратится в бессмыслицу, но вред уже будет причинен. К тому же он может менять последние биты сообщения, оставаясь необнаруженным. Режим СРВ тоже самостоятельно восстанавливается после ошибок синхронизации. Ошибка попадает в регистр сдвига и, пока она находится в нем, искажает 8 байт данных. Режим СРВ представляет собой пример того, как блочный шифр можно использовать как самосинхронизирующийся потоковый шифр (на уровне блоков). 9.7. Синхронные потоковые шифры В синхронном потоковом шифре гамма генерируется независимо от потока сообщения. Военные называют этот шифр ключевым автоключом (Кеу АЩо-Кеу- КАК). На шифрующей стороне генератор гаммы последовательно выдает биты гаммы. На расшифровывающей стороне другой генератор гаммы один за другим выдает идентичные биты гаммы. Это работает нормально, если оба генератора синхро¬ низированы. Если один из них пропускает один из циклов или бит шифртекста теряется при передаче, все символы шифртекста, следующие за ошибкой, расшифровываются некорректно.
ГЛАВА 9. Типы алгоритмов и режимов шифрования 235 Если такое случается, то прежде чем можно будет продолжить работу, отправитель и получатель должны повторно синхронизировать свои генераторы гаммы. Что еще хуже, они должны выполнить синхронизацию так, чтобы ни одна часть гаммы не повторилась. Поэтому очевидное решение - переустановить генератор в более раннее состояние - не проходит. Положительная сторона синхронных шифров - отсутствие распространения ошибок. Если во время передачи бит изменит свое значение (что намного вероятнее его потери), некорректно расшифровывается только испорченный бит. Все предшествующие и последующие биты не изменятся. Поскольку генератор должен выдавать одинаковую гамму как на шифрующей, так и на расшифровывающей сторонах, выход генератора должен быть детерминирован. Если же генератор реализован на конечном автомате (т.е. компьютере), последовательность в конце концов повторится. Такие генераторы гаммы называют периодическими. За исключением одноразовых блокнотов, к периодическим относятся все генераторы гаммы. Период генератора гаммы должен намного превышать число битов, генерируемых между заменами ключей. Если период меньше размера открытого текста, различные части открытого текста будут зашифрованы одинаково, что значительно снижает надежность системы. Если криптоаналитику известна часть открытого текста, он может восстановить часть гаммы и использовать ее для дальнейшей реконструкции открытого текста. Даже если криптоаналитик располагает только шифртекстом, он может выполнить операцию ХОЯ над разделами, шифрованными одинаковыми гаммами, и получить значение ХОЯ соответствующих участков открытого текста. Таким образом, используемый алгоритм превращается в простой алгоритм ХОЯ с очень длинным ключом. Достаточная длина периода зависит от приложения. Генератор гаммы, шифрующий постоянно действующую линию Т1, должен шифровать 237 бит в день. Период такого генератора гаммы должен быть на несколько порядков больше этого значения - даже если ключ меняется ежедневно. Если длина периода достаточна, ключ можно менять раз в неделю или даже раз в месяц. Кроме того, синхронные потоковые шифры защищают от любых вставок и удалений шифртекста, так как эти действия приводят к потере синхронизации и будут немедленно обнаружены. Однако они не защищают полностью от изменения битов. Как и при использовании блочных шифров в режиме СРВ, Мэллори может изменять отдельные биты потока. Если Мэллори известен открытый текст, он может изменять биты так, чтобы они расшифровывались как ему надо. Последующие биты будут расшифрованы корректно, но в некоторых приложениях Мэллори может принести заметный вред. Атака вставкой Синхронные потоковые шифры уязвимы к атаке вставкой [93]. Допустим, Мэллори записал поток шифртекста, но не знает ни открытого текста, ни гаммы, использованного для шифрования открытого текста. Оригинальный открытый текст: рх р2 Рз Р4 ... Оригинальная гамма: кх к2 к3 к4 ... Оригинальный шифртекст: Сх с2 с3 с4
236 Прикладная криптография Мэллори вставляет один известный ему бит, р\ в открытый текст после р\9 а затем ухитряется получить модифицированный открытый текст, зашифрованный той же гаммой. Получившийся новый шифртекст он записывает: Новый открытый текст: рх р р2 Рз Р4 - Оригинальная гамма: кх к2 к3 к4 к5 ... Обновленный шифртекст: сх с 2 с 3 с 4 с 5 ... Так как Мэллори известно значение р\ он может определить весь открытый текст, следующий за этим битом, по оригинальному и новому шифртекстам: к2 = с2 0 р , тогда рг-с2 0 к2 к3 = С3 0 р2, тогда р3 = с3 ® к3 к4=с4® р3, тогда р4 = с4 0 к4 Мэллори даже не надо знать точное положение вставленного бита, он может просто сравнить оригинальный и обновленный шифртексты, чтобы увидеть, где они начинают различаться. Для предотвращения такого вскрытия никогда не используйте одну гамму для шифрования двух разных сообщений. 9.8. Режим обратной связи по выходу Режим обратной связи по выходу (Ои1ри1>Реес1Ьаск - ОРВ) представляет собой метод использования блочного шифра в качестве синхронного потокового шифра. Этот режим подобен режиму СРВ, за исключением того, что « битов предыдущего выходного блока сдвигаются в крайние правые позиции очереди (см. Рис. 9.11). Расшифрование выполняется в обратном порядке. Такой режим называют «-битовым режимом ОРВ. Блочный алгоритм работает в режиме шифрования как на шифрующей, так и на расшифровывающей сторонах. Такую обратную связь иногда называют внутренней, поскольку механизм обратной связи не зависит ни от потока открытого текста, ни от потока шифртекста [291]. Если обозначить как « размер блока алгоритма, то «-битовый алгоритм ОРВ выглядит так, как показано на Рис. 9.12: С, =//©«$,; = Ек (5,/_1) Р1 =СУ 0 5); где ^ - состояние, не зависящее ни от открытого текста, ни от шифртекста. К достоинствам режима ОРВ относится то, что большую часть работы можно выполнить оффлайново, даже когда открытого текста сообщения еще вовсе не существует. Когда, наконец, сообщение поступает, для создания шифртекста над сообщением и выходом алгоритма необходимо выполнить операцию ХОК.
ГЛАВА 9. Типы алгоритмов и режимов шифрования 237 Регистр сдвига (а) Зашифрование Регистр сдвига (б) Расшифрование Рис. 9.11. 8-битовый режим ОРВ Вектор инициализации В сдвиговый регистр ОРВ тоже сначала надо загрузить вектор ВИ. Вектор должен быть уникальным, но сохранять его в тайне не обязательно. Распространение ошибки В режиме ОРВ ошибки не распространяются. Некорректный бит в шифртексте ведет к некорректному биту в открытом тексте. Это может быть полезно при цифровой передаче аналоговых сигналов, например оцифрованных речевых сигналов или видео¬ изображений, когда случайный сбой бита терпим, но распространение ошибки недопустимо. С другой стороны, потеря синхронизации фатальна. Если сдвиговые регистры при шифровании и при расшифровании различаются, восстановленный открытый текст представляет собой бессмыслицу. В любой системе, использующей режим ОРВ, должен быть предусмотрен механизм обнаружения потери синхронизации и механизм заполнения обоих сдвиговых регистров новым (или тем же самым) вектором ВИ для восстановления синхронизации. Рис. 9.12. п-битовый ОРВ с п-битовым алгоритмом
238 Прикладная криптография Проблемы безопасности в режиме ОРВ Анализ режима ОРВ [588, 430, 431, 789] показывает, что ОРВ целесообразно использовать только если разрядность обратной связи совпадает с размером блока. Например, 64-битовый алгоритм следует использовать только в 64-битовом режиме ОРВ. Несмотря на то, что правительство США разрешает использовать в алгоритме ЭЕ8 обратные связи других разрядностей [1143], избегайте этого. В режиме ОРВ над гаммой и текстом выполняется операция ХОК. Эта гамма, в конце концов, повторяется. Существенно, чтобы она не повторялась для одного и того же ключа, в противном случае секретность не обеспечивается ничем. Если разрядность обратной связи равна размеру блока, блочный шифр работает, выполняя перестановки т-битовых значений (где т - размер блока), и средняя длина цикла составляет 2/”-1. При длине блока 64 бит это очень большое число. Когда разрядность обратной связи п меньше длины блока, средняя длина цикла снижается примерно до 2от/2. Для 64-бито- вого шифра это число составляет только 232 - что явно недостаточно. Потоковые шифры в режиме ОРВ Потоковые шифры тоже могут работать в режиме ОРВ. В этом случае ключ влияет на функцию переходов (см. Рис. 9.13). Выходная функция не зависит от ключа, нередко это что-нибудь простое, скажем, один бит внутреннего состояния или результат операции ХОК над несколькими битами внутреннего состояния. Криптографически сложна функция переходов, которая зависит от ключа. Поскольку механизм обратной связи - внутренняя функция алгоритма генерации ключей, этот метод называют также внутренней обратной связью [291]. В одном из вариантов этого режима ключ только задает начальное состояние генератора гаммы. После того, как ключ задаст внутреннее состояние генератора, последний работает без внешних воздействий.
ГЛАВА 9. Типы алгоритмов и режимов шифрования 239 9.9. Режим счетчика Блочные шифры в режиме счетчика используют последовательность чисел в качестве входов алгоритма [824, 498, 715]. Для заполнения регистра используется счетчик, а не вывод алгоритма шифрования. После шифрования каждого блока значение счетчика возрастают на определенную константу, обычно на единицу. Свойства синхронизации и распространения ошибки этого режима точно такие же, как у режима ОРВ. Режим счетчика устраняет проблему «-битового выхода в режиме ОРВ, когда п меньше длины блока. К счетчику не предъявляют какие-то особые требования. В частности, он не должен пробегать последовательно все возможные значения. В качестве входа блочного алго¬ ритма можно использовать генераторы случайных чисел, описанные в главах 16 и 17, независимо от их криптографической надежности. Потоковые шифры в режиме счетчика В потоковых шифрах в режиме счетчика используются простые функции переходов ц сложные выходные функции, зависящие от ключа. Этот метод (см. Рис. 9.14 ) предложен в [498, 715]. В качестве функции перехода можно использовать что-нибудь простое, например, счетчик, добавляющий единицу к предыдущему состоянию. Потоковый шифр в режиме счетчика позволяет генерировать /’-ый бит ключа, кь без предварительного генерации всех предшествующих битов ключа. Для этого достаточно установить счетчик вручную в /-ое внутреннее состояние и генерировать бит. Это полезно для защиты файлов данных с произвольным доступом — можно расшифровать конкретный блок данных, не расшифровывая весь файл.
240 Прикладная криптография 9.10. Другие режимы блочных шифров Режим сиепления блоков Для использования блочного алгоритма в режиме сцепления блоков (В1оск-СЬатт§ тобе - ВС) просто выполните операцию ХОЯ над входом блочного шифра и результатом операции ХОЯ всех предыдущих блоков шифртекста. Как и в режиме СВС, используется вектор инициализации. Математически это выглядит следующим образом: = Ек(Р( Ф 7*)); РМ=Р,®С, Р1 = Р1 © Ок(С,)\ Р,+[=Р,®С, Как и в режиме СВС, процесс обратной связи в режиме ВС влечет распространение ошибки в открытом тексте. Основной недостаток режима ВС состоит в том, что благодаря зависимости расшифрования блока шифртекста от всех предыдущих блоков шифртекста, единственная ошибка шифртекста влечет некорректное расшифрование всех последующих блоков шифртекста. Режим сиепления блоков шифра с распространением ошибки Режим сцепления блоков шифртекста с распространением ошибки (Ргора&абп^ С1рЬег В1оск СЬатт§-РСВС) [1080] подобен режиму СВС, за исключением того, что как предыдущий блок открытого текста, так и предыдущий блок шифртекста подвергаются операции ХОЯ с текущим блоком открытого текста перед шифрованием (или после расшифрования) (см. Рис. 9.15). С( = Ек(Р, 0 С,., 0 /»,_,) ^=СнФРн0^(С;) Режим РСВС используется в протоколе КегЬегоз 4 (см. раздел 24.5) для выполнения за один проход и шифрования, и проверки целостности. В режиме РСВС ошибка шифртекста влечет некорректное расшифрование всех последующих блоков. Это означает, что проверка стандартного блока в конце сообщения гарантирует целостность всего сообщения. К сожалению, у этого режима есть один недостаток [875]. Перестановка двух блоков шифртекста приводит к некорректному расшифрованию двух соответствующих блоков открытого текста. Однако благодаря природе операции ХОЯ над открытым текстом и шифртекстом, дальнейшие ошибки компенсируются. Поэтому если проверка целост¬ ности охватывает только несколько последних блоков расшифрованного открытого текста, можно получить частично искаженное сообщение. Хотя никто до сих пор не додумался, как воспользоваться этим недостатком, протокол КегЬегоз 5 после обнаружения ошибки переключается в режим СВС.
ГЛАВА 9. Типы алгоритмов и режимов шифрования 241 Рис. 9Л5. Режим сцепления блоков шифра с распространением ошибки Сцепление блоков шифртекста с контрольной суммой Режим сцепления блоков шифртекста с контрольной суммой (СЛрЬег В1оск СЬашт§ \УШ1 СНескзит - СВСС) - вариант режима СВС [1618]. Сохраняйте значение ХОК всех уже зашифрованных блоков открытого текста и выполняйте для каждого текущего блока открытого текста перед его шифрованием операцию ХОК с сохраненным значением. Режим СВСС гарантирует, что любое изменение любого блока шифртекста изменит результат расшифрования последнего блока. Если в последнем блоке содержится какая- нибудь константа или этот блок служит для проверки целостности, то целостность расшифрованного открытого текста можно проверить с минимальными издержками. Нелинейная обратная связь по выходу Режим с нелинейной обратной связью по выходу (Ои1ри1 РеесИэаск а МопНпеаг Рипсбоп- ОРВМЬР) [777] - смешанный вариант режимов ОРВ и ЕСВ, где ключ изменяется в каждом блоке: С/ = Ек. (/{); К^Е^К,.,) ^=Я*,(С,); К( = Ек{Кы) Ошибка в единственном символе шифртекста распространяется только на один блок открытого текста. Однако при утрате или добавлении бита ошибка распространяется до бесконечности. Этот режим будет работать медленно с блочным алгоритмом, использующим сложный алгоритм установки ключей. Методы криптоанализа этого режима мне не известны. Другие режимы шифрования Известны и другие режимы, хотя они используются редко. Режим сцепления блоков открытого текста (Р1ат1ех1 В1оск СЬатт§- РВС) подобен режиму СВС за
242 Прикладная криптография исключением того, что операция ХОЯ выполняется над текущим и предыдущим блоками открытого текста, а не блоком шифртекста. Режим с обратной связью по открытому тексту (Р1ат1ех1 РеебЬаск- РРВ) подобен режиму СРВ, однако для обратной связи используется не шифртекст, а открытый текст. Оба режима допускают вскрытие с использованием подобранного открытого текста, с целью повышения устойчивости к вскрытию с использованием открытого текста. Известен также режим сцепления блоков шифртекста по различиям открытого текста (С1рЬег В1оск СЬатт§ оГ Р1ат1ех1 ОЖегепсе - СВСРБ). Я уверен, что можно найти еще более сложные режимы. Если у криптоаналитика есть устройство для лобового вскрытия ключей, он сумеет восстановить ключ, если угадает один из блоков открытого текста. По существу, некоторые из упомянутых причудливых режимов представляют собой дополнительное шифрование перед использованием алгоритма шифрования, например, операцию ХОЯ над текстом и фиксированной секретной строкой или перестановку текста. Подобному криптоанализу помешают почти все отклонения от стандартов. 9.11. Выбор режима шифрования Если вам необходима главным образом простота и скорость, режим ЕСВ можно рекомендовать как самый простой и быстрый режим работы блочного шифра. Помимо уязвимости к вскрытию с повторной передачей, алгоритм в режиме ЕСВ проще всех других для криптоанализа. Поэтому использовать режим ЕСВ для шифрования сообщений не рекомендуется. Режим ЕСВ удобно использовать для шифрования случайных данных, например, других ключей. Так как данные невелики по размеру и случайны, недостатки режима ЕСВ в данном случае несущественны. Для шифрования обычного открытого текста используйте режимы СВС, СРВ или ОРВ. Выбор режима зависит от ваших потребностей. В табл. 9.1 сравниваются надежность и эффективность различных режимов шифрования. Для шифрования файлов лучше всего подходит режим СВС. Надежность значительно возрастает; и хотя иногда появляются ошибки в символах хранимых данных, почти никогда не бывает сбоев синхронизации. Если вы используете программное приложение, рекомендую выбирать режим СВС. Таблица 9.1. Сводка режимов работы блочных шифров Режим ЕСВ: Стойкость: - Структура открытого текста не скрыта - Вход в блочный шифр не рандомизи¬ рован и совпадает с открытым текстом + Одним ключом можно зашифровать несколько сообщений Режим СВС: Стойкость: + Структура открытого текста скрыта операцией ХОЯ с предыдущим блоком шифртекста + Вход в блочный шифр рандомизирован операцией ХОЯ с предыдущим блоком шифртекста.
ГЛАВА 9. Типы алгоритмов и режимов шифрования 243 - Открытым текстом нетрудно манипулировать; блоки можно перемещать, повторять или переставлять Эффективность: + Скорость та же, что у блочного шифра - Из-за дополнения длина шифртекста превышает длину открытого текста вплоть до одного блока - Предварительная обработка невозможна + Параллельная обработка возможна Помехоустойчивость: - Ошибка шифртекста затрагивает один полный блок открытого текста - Ошибка синхронизации невосстановима + Одним ключом можно зашифровать несколько сообщений +/- Манипулировать открытым текстом трудно; можно удалять блоки из начала и конца сообщения, изменять биты в первом блоке, а повторение допускает некоторые контролируемые замены Эффективность: + Скорость та же, что у блочного шифра - Шифртекст на один блок длиннее открытого текста (без учета вектора ВИ) - Предварительная обработка невозможна +/- Шифрование не может быть выполнено параллельно; расшифрование может, и допускает произвольный доступ Помехоустойчивость: - Ошибки шифртекста затрагивают полный блок открытого текста и соответствующий бит следующего блока - Ошибка синхронизации невосстановима Режим СРВ: Стойкость: + Структура открытого текста скрыта + Ввод в блочный шифр рандомизирован + При использовании разных векторов ВИ одним ключом можно зашифровать несколько сообщений +/- Манипулировать открытым текстом трудно; можно удалять блоки из начала и конца сообщения, изменять биты в последнем блоке, а повторение допускает некоторые контролируемые изменения Эффективность: + Скорость та же самая, что у блочного шифра + Размеры шифртекста и открытого текста совпадают (без учета вектора ВИ) +/- Шифрование не может быть выполнено параллельно; расшифрование может и допускает произвольный доступ Режим ОРВ/счетчик: Стойкость: + Структура открытого текста скрыта + Ввод в блочный шифр рандомизирован + При использовании разных векторов ВИ одним ключом можно зашифровать несколько сообщений - Открытым текстом очень просто манипулировать; любое изменение шифртекста напрямую изменяет открытый текст Эффективность: + Скорость та же самая, что у блочного шифра + Размеры шифртекста и открытого текста совпадают (без учета вектора ВИ) + Прежде, чем блок станет видимым, допускается предварительная обработка +/- Обработка в режиме ОРВ не может быть параллельной, в режиме счетчика - может
244 Прикладная криптография - Прежде, чем блок станет видимым, допускается некоторая предварительная обработка; возможно шифрование предыдущего блока шифртекста Помехоуст ойчивостъ: - Ошибка шифртекста влияет на соответствующий бит открытого текста и весь последующий блок + Ошибки синхронизации размером в полный блок восстановимы. 1-битовый режим СРВ может восстановиться после добавления или утраты единичных битов Режим СРВ- в частности, 8-битовый режим СРВ - лучше всего подходит для шифрования потоков символов, когда каждый символ должен обрабатываться по отдельности, как, например, в линии связи между терминалом и хостом. Режим ОРВ очень часто используют в высокоскоростных синхронных системах, где распространение ошибки недопустимо. Кроме того, режим ОРВ - лучший режим, если требуется предварительная обработка. Режим ОРВ предпочтительно использовать в среде, подверженной ошибкам, поскольку в этом режиме ошибка не распространяется. Избегайте усложненных, вычурных режимов. Практически для всех приложений годятся четыре основных режима: ЕСВ, СВС, ОРВ и СРВ. Эти режимы не слишком сложны и, вероятно, не снизят стойкость системы. Хотя, возможно, сложные режимы позволят повысить стойкость, более вероятно, что они просто усложнят систему. Ни в одном усложненном режиме не предусмотрены улучшенные характеристики распространения или нейтрализации ошибок. 9.12. Чередование В большинстве режимов шифрование бита (или блока) зависит от предыдущих битов (или блоков). Нередко это делает невозможным выполнения шифрования параллельно. Рассмотрим в качестве примера блок аппаратуры, выполняющий шифрование в режиме СВС. Даже если в блоке предусмотрены четыре шифровальные микросхемы, одновременно может работать только одна из них. Следующей микросхеме необходимы результаты предыдущей микросхемы, прежде чем она сможет приступить к работе. Решение заключается в чередовании нескольких потоков шифрования. (Чередование потоков шифрования следует отличать от многократного шифрования, обсуждаемого в разделах 15.1 и 15.2). В данном случае в режиме СВС вместо единственного сцепления используются четыре. Первый, пятый и каждый четвертый блоки соответственно, шифруются в режиме СВС с помощью единственного вектора инициализации ВИ. Второй, шестой и каждый четвертый блоки соответственно шифруются в режиме СВС с помощью другого вектора ВИ и т.д. Полный вектор инициализации намного длиннее, чем без применения чередования. Помехоустойчивость: + Ошибка шифртекста затрагивает только соответствующий бит открытого текста - Ошибка синхронизации невосстановима
ГЛАВА 9. Типы алгоритмов и режимов шифрования 245 Чередование можно представлять как шифрование четырех различных сообщений одинаковым ключом, но с четырьмя разными векторами инициализации. Все эти сообщения чередуются. Описанный прием можно использовать для ускорения аппаратного шифрования. Если вы используете три шифровальные микросхемы, причем каждая способна шифровать данные со скоростью 33 Мбит/сек., можно чередовать их так, чтобы шифровать единичный канал данных со скоростью 100 Мбит/сек. На Рис. 9.16 показаны три параллельных потока, чередующиеся в режиме СРВ. Эта же идея применима к режимам СВС и ОРВ и любому числу параллельных потоков. Просто запомните, что каждому потоку нужен собственный вектор инициализации. Не используйте общие векторы ВИ. 9.13. Сравнение блочных и потоковых шифров Хотя блочные и потоковые шифры разительно различаются, блочные шифры можно реализовать как потоковые шифры и наоборот. Лучше всего об этом сказал Райнер Рюппель (Яатег Яиерре1) [1362]: Блочные шифры оперируют с данными путем фиксированного преобразования крупных блоков открытого текста, а потоковые шифры оперируют с данными путем динамического преобразования отдельных цифр открытого текста. Как представляется, на практике чаще применяют блочные шифры (т.е. их можно использовать в любом из четырех режимов), но математический анализ потоковых шифров проще. Действительно, теоретическому анализу и проектированию потоковых шифров посвящено множество работ. По некоторым причинам, большинство работ написано в Европе. Они используются военными ведомствами всего мира со времен зарождения электроники. По-видимому, недавно ситуация изменилась - появилось множество теоретических работ, посвященных проектированию блочных шифров. Возможно, вскоре теория проектирования блочных шифров станет настолько же обширна, как в настоящее время теория проектирования потоковых шифров. С другой стороны, продолжается осмысление различий между потоковыми и блочными шифрами. Потоковые шифры, которые допускают только побитовое шифрование и расшифрование данных, фактически непригодны для программной реализации. Программная реализация блочных шифров проще, поскольку они нередко позволяют
246 Прикладная криптография избежать длительных манипуляций с битами и оперируют блоками данных с характерными для компьютерной обработки размерами. С другой стороны, потоковые шифры лучше подходят для аппаратных реализаций, поскольку эффективно реализуются с помощью микросхем. Все это важные соображения. Есть смысл создать аппаратный шифратор, позволяющий шифровать отдельные биты по мере их поступления по цифровому каналу связи. Именно так работают подобные устройства. С другой стороны, бессмысленно использовать программный шифратор для шифрования каждого бита по отдельности. Конечно, есть некоторые особые случаи, когда компьютерной системе необходимо побитовое и побайтовое шифрование, скажем, для шифрования линии связи между клавиатурой и процессором. Однако, как правило, блок шифрования должен иметь размер, не меньший разрядности шины данных.
ГЛАВА 10. Использование алгоритмов Представьте себе надежность защиты - данных, линий связи, информации, да чего угодно - как некую цепочку. Надежность всей системы защиты всецело определяется надежностью слабейшего звена. Надежным должно быть все: криптографические алгоритмы, протоколы, системы распределения ключей и многое другое. Если алгоритм прекрасен, но вы используете отвратительный генератор случайных чисел, любой ловкий криптоаналитик сумеет вскрыть вашу систему, раскрыв «случайную» последова¬ тельность. Если вы залатаете эту дыру, но забудете надежно очистить области памяти, в которых хранится ключ, криптоаналитик взломает вашу систему в этом звене. Но если вы сделаете все правильно и случайно пошлете по электронной почте копию ваших секретных файлов в ТНе \Уа11 §1гее1 Зоигпсй, можете не беспокоиться. Это очень плохо. Как разработчику системы защиты, вам приходится учитывать все возможные средства вскрытия и защищать от них все, но криптоаналитику достаточно найти единственную прореху в вашей системе защиты и начать ее использовать. Криптография - только часть системы защиты, и часто не самая большая. Это математический аппарат создания защиты системы, который следует отличать от создания реальной защиты. В криптографии есть свои «короли размеров» - люди, которые тратят так много времени на споры о достаточной длине ключа, что забывают все остальное. Если тайная полиция пожелает узнать, что есть в вашем компьютере, ей намного проще вломиться в ваш дом и установить камеру, которая может записывать все, что видно на экране вашего компьютера, чем заниматься криптоанализом жесткого диска. Кроме того, традиционное представление компьютерной криптографии как «шпионской» технологии, все в большей степени становится неприемлемым. Более 99% криптографических систем, используемых во всем мире, защищают отнюдь не военные тайны. У криптографии есть другие приложения, скажем, защита банковских карточек, коммерческое телевидение, страхование дорожных аварий, а также защита офисных зданий, маркеров доступа к компьютерам, лотерейных терминалов и счетчиков с предварительной оплатой электроэнергии [43, 44]. В этих приложениях роль криптографии заключается в том, чтобы слегка затруднить слишком простые преступления. Концепция хорошо оснащенного соперника с полным садком криптоаналитиков и кучей залов, забитых компьютерами, часто просто неприемлема. В большинстве перечисленных приложений используются убогие криптографические системы, однако их успешное вскрытие не имеет отношения к криптоанализу. Здесь чаще используют нечестных служащих, ловкий обман, неудачные реализации, ошибки интеграции и случайные промахи. (Настоятельно рекомендую статью Росса Андерсена (Яозз Апбегзоп) «\УЬу СгурЬзуз&шз РаП» [44]ее должны обязательно прочитать все, кто работает в этой области). Даже агентство АНБ допускает, что большинство крахов систем защиты в интересующей его области происходят из-за провалов реализации, но не самих алгоритмов и 1 Есть русский перевод «Почему не срабатывают криптосхемы» на сайте Ьйр://\у\у\^.351.5Ш.пеуа.ги/р5^/сгур1о.111т1 - Прим. ред.
248 Прикладная криптография протоколов [1119]. В таких случаях не имеет значения, насколько хороша была крипто¬ графическая система - успешная атака полностью обходит ее стороной. 10.1. Выбор алгоритма Для оценки и выбора алгоритма люди используют несколько альтернативных подходов: ✓ Они могут выбрать опубликованный алгоритм, веря, что опубликованный алгоритм тщательно исследован многими криптографами; если никому все еще не удалось взломать алгоритм, он должен быть достаточно надежен. ✓ Они могут доверять производителю, веря, что хорошо известный производитель должен поддерживать свою репутацию и вряд ли станет ею рисковать, продавая оборудование или программы с плохими алгоритмами. ^ Они могут доверять частному консультанту, веря, что незаинтересованный консультант лучше подготовлен для достоверной оценки различных алгоритмов. ✓ Они могут доверять правительству, веря, что оно заслуживает их доверия и не станет обманывать своих подданных. ✓ Они могут писать собственные алгоритмы, веря, что их способности как криптографов непревзойденны, и они могут доверять только самим себе. Любая из этих альтернатив проблематична; однако, как представляется, первая обоснована лучше всех. Опасно доверять единственному производителю, консультанту или правительству. Большинство людей, именующих себя «консультантами по вопросам безопасности» (даже те, кто работают в именитых фирмах) обычно ничего не смыслят в криптографии. Ничуть не лучше большинство производителей систем защиты. В агентстве АНБ работают несколько лучших в мире криптографов, но они никогда не скажут всего, что знают. Ведь у них есть личные интересы на будущее, которые не совместимы с интересами сограждан. Наконец, даже если вы гениальны, написание и использование собственного алгоритма безо всякой посторонней помощи - полная авантюра. В этой книге описываются общедоступные алгоритмы. Большинство из них публиковались в открытых источниках и многие подвергались криптоанализу знатоками своего дела. Ниже приведена сводная таблица всех опубликованных результатов, как положительных, так и отрицательных. У меня не было доступа к криптоаналитикам, работающим в бесчисленных органах военной контрразведки по всему миру. Возможно, они знают свое дело лучше, чем академические институты - они занимаются им долго и лучше оснащены. Так что, вполне возможно, взлом этих алгоритмов проще, чем кажется. Но даже если это так, еще вероятнее, что они намного надежнее алгоритмов, тайно спроектированных и реализованных в подвале какой-нибудь корпорации. Недостаток всех этих рассуждений состоит в том, что мы не знаем возможностей различных военных криптоаналитических организаций. Какие алгоритмы может взломать агентство АНБ? У большинства простых людей нет никакой возможности узнать это. Если при аресте у вас обнаружат компьютер с жестким диском, зашифрованным алгоритмом БЕЗ, маловероятно, что ФБР представит дешифрованный открытый текст на вашем судебном процессе. Нередко сам факт, что
ГЛАВА 10. Использование алгоритмов 249 агентство может взломать алгоритм, охраняется тщательнее, чем любая информация, которую восстановили криптоаналитики АНБ. В годы Второй мировой войны союзники воздерживались от использования дешифрованного трафика немцев, если только могли найти достоверную информацию в другом месте. Единственный способ заставить АНБ признаться в способности взломать данный алгоритм - зашифровать что-нибудь настолько ценное, что публичное оглашение этой информации того стоит. Или, еще лучше, можно придумать действительно занятную шутку и послать ее в зашифрованном виде по электронной почте темным личностям в сомнительных странах. Сотрудники АНБ тоже люди, и я сомневаюсь, что они сохранят в тайне хорошую шутку. В качестве неплохой рабочей гипотезы можно допустить, что АНБ может прочитать любое сообщение, какое им захочется, но агентство просто не в состоянии прочитать все отобранные сообщения. Ресурсы АНБ ограничены, а потому агентство вынуждено выискивать и отбирать среди множества целей. Еще одна неплохая гипотеза состоит в том, что в АНБ предпочитают выламывать руки, а не взламывать коды. Такое предпочтение засело настолько крепко, что они прибегают к взлому кодов, только если хотят сохранить в секрете, что прочитали сообщение. Так или иначе, лучшее, что может сделать каждый из нас - выбирать среди опубликованных алгоритмов, которые выдержали достаточное число испытаний, как со стороны пользователей, так и со стороны криптоаналитиков. Экспорт алгоритмов Экспорт алгоритмов за пределы США должен быть одобрен правительством США (фактически - АНБ, см. раздел 25.1). По распространенному поверью, все алгоритмы, разрешенные к экспорту, могут быть взломаны АНБ. И хотя никто в этом официально не признался, есть некоторые вещи, которые АНБ в частном порядке советует компаниям, желающим экспортировать свои криптографические продукты: ✓ Иногда допускать утечку бита ключа, вставляя его в шифртекст. ✓ «Оглупить» эффективный ключ до чего-нибудь в диапазоне 30 бит. Например, если алгоритм допускает использование 100-битового ключа, большинство таких ключей должны быть эквивалентны 30-битовым. ✓ Использовать фиксированный вектор инициализации, либо шифровать постоянный заголовок в каждом шифрованном сообщении. Это облегчает вскрытие с использованием открытого текста. ✓ Генерировать несколько случайных байтов, зашифровать их ключом, а затем поместить открытый текст и шифртекст этих случайных байтов в начало зашифрованного сообщения. Это тоже облегчает вскрытие с использованием открытого текста. Агентство АНБ приобретает копию исходного кода, однако все подробности алгоритма остаются закрытыми от посторонних. Разумеется, никто не объявляет об этом намеренном ослаблении алгоритма, но если вы приобрели шифровальный продукт США, одобренный для экспорта, берегитесь неприятных последствий.
250 Прикладная криптография 10.2. Сравнение криптографии с открытым ключом и симметричной криптографии Что лучше - криптография с открытым ключом или симметричная криптография? Это бессмысленный вопрос, но он постоянно обсуждается со времен изобретения криптографии с открытым ключом. В спорах все исходят из возможности сравнения «на равных» обоих типов криптографии. Но это невозможно. Нидхем (ЫеесШат) и Шрёдер (ЗсЬгоебег) [1159] указывают, что при использовании алгоритмов с открытым ключом число и длина сообщений намного больше, чем при использовании симметричных алгоритмов. Они приходят к выводу, что симметричные алгоритмы эффективнее алгоритмов с открытым ключом. И хотя это верно, но эти аналитики недооценили значительные преимущества защиты средствами криптографии с открытым ключом. Вот что пишет по этому поводу Уитфилд Диффи (ЛУЫШеИ В Же) [492,494]: Рассматривая криптографию с открытым ключом как новую форму криптосистем, а не новую форму управления ключами, ее критика обычно направлена как на надежность защиты, так и на быстродействие. Оппоненты быстро указали, что система Р8А работает примерно в тысячу раз медленнее йЕЗ и требует использовать ключи примерно в десять раз длиннее. Хотя с самого начала было очевидно, что использование систем с открытым ключом должно ограничиться обменом ключами для обычной (симметричной) криптографии, необходимость этого не сразу стала ясной. В данном контексте предложение построения смешанных криптосистем [879] приветствовалось как настоящее открытие. Криптография с открытым ключом и симметричная криптография - твари разных видов: они решают проблемы разных типов. Симметричная криптография лучше всех подходит для шифрования данных. Она на несколько порядков быстрее и устойчивее к вскрытию с использованием подобранного шифртекста. Криптография с открытым ключом позволяет делать вещи, недоступные симметричной криптографии; она лучше всех подходит для распределения ключей и управления мириадами протоколов, обсуждаемых в части 1. Прочие криптографические примитивы описаны в части 1: односторонние хэш-функции, коды проверки подлинности сообщения и т.д. Различные классы алгоритмов и их свойства перечислены в табл. 10.1 [804]. Таблица 10.1. Классы алгоритмов Алгоритм Конфиден¬ циальность Аутентифи¬ кация Целост¬ ность Управление ключами Алгоритмы симметричного шифрования да нет нет да Алгоритмы шифрования с открытым ключом да нет нет да Алгоритмы цифровой подписи нет да да нет
ГЛАВА 10. Использование алгоритмов 251 Алгоритм Конфиден¬ циальность Аутентифи¬ кация Целост¬ ность Управление ключами Алгоритмы с согласованием ключей да возможно нет да Односторонние хэш- функции нет нет да нет Коды проверки подлинности сообщений нет да да нет 10.3. Шифрование каналов связи Рассмотрим классическую проблему Алисы и Боба: Алисе необходимо послать Бобу секретное сообщение. Как ей поступить? Разумеется, она шифрует сообщение. Теоретически шифрование возможно на любом уровне модели 081 (Ореп 8у51:етз 1п1:егсоппес1: - взаимодействие открытых систем). (Подробнее стандарт архитектуры системы защиты описан в [305]). На практике же данные шифруют либо на самых нижних уровнях (физическом или канальном), либо на высших уровнях. Если данные шифруют на низших уровнях, процесс называют канальным шифрованием (Шк-Ъу- Ипк); шифруется все, что следует по каналу передачи данных. Если данные шифруются на верхних уровнях, процесс называют оконечным (или абонентским) шифрованием (епс1-(о-епс1); данные шифруются избирательно и остаются в зашифрованном виде вплоть до расшифрования конечным получателем. Каждому подходу свойственны собственные преимущества и недостатки. Канальное шифрование Проще всего зашифровать данные на физическом уровне (см. Рис. 10.1). Такой тип шифрования называют канальным шифрованием. Как правило, интерфейсы физического уровня стандартизированы, и подключить аппаратный шифратор в этом случае несложно. Эти устройства шифруют все данные, проходящие через них, в том числе собственно данные, а также маршрутную и протокольную информацию. Их можно использовать в цифровых каналах связи любых типов. С другой стороны, любой интеллектуальный коммутатор или узлы хранения информации, расположенные между отправителем и получателем, должны расшифровать поток данных, прежде чем приступить к их обработке. Рис. 10.1. Шифрование в канале связи
252 Прикладная криптография Шифрование данного типа весьма эффективно. Поскольку шифруются все данные, криптоаналитик не получит никакой информации о структуре и данных. У него не будет ни малейшего представления о длине пересылаемого сообщения, времени сеанса связи и т.д. Таким образом, здесь обеспечивается так называемая безопасность трафика: противник не только не получает доступа к информации, но и не может узнать, где и как она передается Безопасность не зависит от технологии управления трафиком. Кроме того, несложно распределение ключей - общий ключ нужен только на двух конечных точках и они могут изменять этот ключ независимо от всей остальной сети. Представьте канал синхронной передачи данных, зашифрованный в 1-битовом режиме СРВ. После инициализации линия связи может работать бесконечно долго, автоматически восстанавливаясь после ошибок в символах или синхронизации. Линия шифруется каждый раз, когда по ней отсылаются сообщения с одного конца на другой; если же сообщений нет, линия просто шифрует и расшифровывает случайные данные. Ева не получит ни малейшего представления, когда отсылаются данные, а когда - нет; она не может установить, где начало, а где конец сообщения. Она видит только бесконечный поток случайных с виду битов. Если канал связи асинхронный, можно использовать тот же самый 1-битовый режим СРВ. Отличие состоит в том, что противник может получить некоторые сведения о скорости передачи. Если эту информацию необходимо скрыть, примите меры для передачи каких-либо сообщений-заглушек в период простоев. Крупнейший недостаток шифрования на физическом уровне заключается в необходимости шифровать все физические каналы связи в сети. Если оставить незашифрованной хотя бы одну линию, вся сеть подвергается опасности. Если же сеть велика, стоимость шифрования станет настолько высока, что воспрепятствует применению шифрования этого типа. Кроме того, каждый узел сети должен быть защищен, поскольку он обрабатывает незашифрованные данные. Если все пользователи сети доверяют друг другу, а все узлы размещены в безопасных местах, это может быть и допустимо. Однако это маловероятно. Даже в одной корпорации информацию каждого отдела следует хранить в тайне. Тогда если даже сеть случайно отошлет информацию по неверному маршруту, никто не сумеет ее прочитать. В табл. 10.2 сведены все доводы «за» и «против» канального шифрования. Таблица 10.2. Преимущества и недостатки канального шифрования Преимущества: ✓ Простота операций, поскольку они очевидны пользователю. Иными словами, все данные шифруются до отсылки по линии связи ✓ Достаточно единственного набора ключей на один канал связи ✓ Обеспечивается безопасность трафика, поскольку маршрутная информация зашифрована ✓ Шифрование выполняется в онлайновом режиме Недостатки: ✓ Данные доступны на промежуточных узлах
ГЛАВА 10. Использование алгоритмов 253 Оконечное шифрования Другой подход заключается в помещении шифровального оборудования между сетевым и транспортным уровнями. Шифратор должен «понимать» данные, относящиеся к протоколу вплоть до третьего уровня, и шифровать только единицы данных транспортного уровня, которые затем соединяются с незашифрованной маршрутной информацией и отсылаются на низшие уровни для передачи. Такой подход позволяет избежать недостатков зашифрования/расшифрования данных на физическом уровне. При использовании оконечного шифрования данные остаются зашифрованными вплоть до поступления в место назначения (см. Рис. 10.2). Основной недостаток оконечного шифрования заключается в том, что маршрутная информация остается незашифрованной; хороший криптоаналитик может многое узнать о том, кто и с кем ведет переговоры, в какое время и как долго, даже не зная содержимого переговоров. Кроме того, затрудняется распределение ключей, поскольку отдельные пользователи должны обязательно иметь общие ключи. Рис. 10.2. Оконечное шифрование Разработка аппаратуры для оконечного шифрования - трудная задача. В каждой отдельной системе связи используются собственные протоколы. Иногда интерфейсы между уровнями определены плохо, что дополнительно усложняет задачу. Если данные шифруются только на высшем уровне архитектуры системы связи, например, на прикладном уровне или уровне представления, шифрование может не зависеть от типа используемой сети связи. Это все еще оконечное шифрование, однако реализация шифрования не обязана заботиться о кодах канала связи, синхронизации модемов, физических интерфейсах и т.д. На заре применения в криптографии электро¬ механических устройств операции шифрования и расшифрования выполнялись полностью оффлайново; это единственный этап, исключенный с тех пор. Шифрование на высших уровнях модели 081 взаимодействует с пользовательскими программными средствами. Эти средства различны для компьютеров с различными архитектурами, а потому шифрование должно быть оптимизировано для разных компьютерных систем. Шифрование может выполняться либо самим программным обеспечением, либо специализированным оборудованием. В последнем случае, еще до отсылки данных на нижележащие уровни архитектуры системы связи для передачи, компьютер должен посылать данные специализированному шифровальному устройству. Этот процесс требует некоторого интеллекта и непосилен неинтеллектуальным терминалам. Кроме того, при использовании компьютеров разных типов могут возникать проблемы совместимости.
254 Прикладная криптография Основной недостаток оконечного шифрования заключается в том, что оно допускает анализ трафика. Анализом трафика называют анализ шифрованных сообщений: откуда они поступают, куда они направлены, какова их длина, когда они посланы, насколько часто (или редко) они посылаются, связаны ли они с какими-то внешними событиями, скажем, деловыми встречами и многое другое. В этих данных скрыто множество полезной информации, и криптоаналитик сумеет ими воспользоваться. В табл. 10.3 представлены положительные и отрицательные стороны оконечного шифрования. Таблица 10.3. Преимущества и недостатки оконечного шифрования Преимущества: ✓ Высокий уровень безопасности Недостатки: ✓ Требует более сложной системы распределения ключей ✓ Поскольку маршрутная информация не зашифрована, возможен анализ трафика. ✓ Шифрование выполняется в оффлайновом режиме. Объединение двух методов В табл. 10.4, заимствованной в основном из [1244], сравниваются канальное шифрование и оконечное шифрование. Объединение обоих методов, хотя оно и стоит очень дорого - самый эффективный метод защиты сети. Шифрование каждого физического канала связи делает невозможным любой анализ маршрутной информации, в то время как оконечное шифрование снижает угрозу, которую влечет появление незашифрованных данных в различных узлах сети. Распределение ключей для обеих схем шифрования можно полностью разделить. Например, сетевой администратор может позаботиться о шифровании на физическом уровне, а отдельные пользователи отвечают за оконечное шифрования. Таблица 10.4. Сравнение канального шифрования и оконечного шифрования Канальное шифрование Оконечное шифрование Безопасность на хостах ✓ Сообщения раскрываются на хосте- отправителе ✓ Сообщения раскрываются на промежуточных узлах ✓ Сообщения зашифрованы на хосте- отправителе ✓ Сообщения зашифрованы на промежуточных узлах Роль пользователя ✓ К нему обращается хост-отправитель ✓ Шифрование невидимо пользователю ✓ Шифрованием управляет хост ✓ Достаточно одного устройства для всех пользователей ✓ К нему обращается процесс отсылки ✓ Шифрование выполняется пользователем ✓ Пользователь должен сам выбрать алгоритм
ГЛАВА 10. Использование алгоритмов 255 ✓ Возможна аппаратная реализация ✓ Шифруются все сообщения ✓ Пользователь выбирает режим шифрования ✓ Проще реализуется программными средствами ✓ Решение о необходимости шифрования каждого сообщения принимается пользователем Требования к реализации ✓ Достаточно единственного ключа для каждой пары хостов Требует шифровальное устройство или программу на каждом хосте ✓ Обеспечивает идентификацию узлов ✓ Требует особый ключ для каждой пары пользователей ✓ Требует шифровальное оборудование или программу на каждом узле ✓ Обеспечивает идентификацию пользователей . 10.4. Шифрование данных для хранения В принципе, шифрование данных для хранения и последующего извлечения тоже можно рассматривать с помощью нашей модели Алисы и Боба. Алиса по-прежнему посылает сообщение Бобу, но в данном случае «Боб» - это Алиса в каком-то будущем времени. Однако проблема хранения имеет фундаментальное отличие. При передаче данных по каналам связи транзитные сообщения не имеют особой ценности. Если Боб не примет какого-то сообщения Алисы, она всегда может послать его повторно. Но это не так, если данные зашифрованы для хранения. Если Алиса не сумеет расшифровать свое сообщение, она не может вернуться назад во времени и зашифровать его заново. Она потеряет его навсегда. Это означает, что в приложении шифрования данных для длительного хранения должны быть предусмотрены какие-то механизмы, предотвращающие попадание в шифртекст невосстановимых ошибок. Ключ шифрования столь же ценен, что само сообщение, он только меньше размером. Криптография, в сущности, преобразует большие секреты в малые. А поскольку они меньше, их легче потерять. Процедуры распределения ключей должны предусматривать, что одни и те же ключи будут использоваться снова и снова, а данные будут находиться на диске годами, прежде чем будут расшифрованы. Более того, ключи должны быть под рукой длительное время. В идеальном случае ключ, используемый для шифрования канала связи, должен существовать только в период сеанса связи. Однако ключ, используемый для хранения данных, может использоваться годами, и, следовательно, должен храниться в тайне все это время. Другие проблемы, свойственные шифрованию компьютерных данных для длительного хранения, перечислены в [357]:
256 Прикладная криптография ✓ Данные могут существовать также и в форме открытого текста - либо на другом диске, либо на другом компьютере, либо на бумаге. У криптоаналитика есть множество возможностей приступить к вскрытию с использованием открытого текста. ✓ В приложениях баз данных размер блоков данных может быть меньше размера блока большинства алгоритмов. Из-за этого размер шифртекста может значительно превышать размер открытого текста. ✓ Скорость устройств ввода/вывода требует скоростного шифрования и расшиф¬ рования, и, возможно, понадобится использование шифровального оборудования. В некоторых приложениях может потребоваться использование специализированных высокоскоростных алгоритмов. ✓ Необходимо надежное долговременное хранилище ключей. ✓ Управление ключами намного сложнее, поскольку разным людям нужен доступ к разным файлам, разным частям одного и того же файла и т.д. Извлечение данных проще, если зашифрованные файлы не структурированы на записи и поля, скажем, текстовые поля: перед использованием расшифровывается весь файл. Если зашифрованные файлы представляют собой файлы баз данных, решение проблематично. Расшифрование всей базы данных для доступа к единственной записи неэффективно, однако независимое шифрование записей может быть уязвимым к атакам типа повтора блока. Кроме того, вы должны гарантировать полное уничтожение незашифрованного файла после шифрования (см. раздел 10.9). Подробнее этот вопрос обсуждается в [425,569]. Разыменование ключей При шифровании жесткого диска большой вместимости у вас есть два выбора. Вы можете зашифровать все данные единственным ключом. Это дает криптоаналитику большой объем шифртекста для изучения и не позволяет разрешить множеству пользователей просматривать только отдельные части диска. Вы можете также зашифровать каждый файл отдельным ключом, заставляя пользователей запоминать разные ключи для каждого файла. Решение заключается в шифровании каждого файла отдельным ключом и шифровании этих ключей другим ключом, известным пользователям. Каждому пользователю достаточно помнить только этот единственный ключ. Различные пользователи могут использовать разные подмножества ключей шифрования файлов, зашифрованных их ключом. Здесь можно использовать даже главный ключ, которым шифруются все ключи шифрования файлов. Это даже еще надежнее, поскольку ключи шифрования файлов случайны и менее уязвимы к вскрытию со словарем. Шифрование на файловом уровне или на уровне лрайверов Для шифрования жесткого диска можно воспользоваться двумя схемами: шифрованием на уровне файлов и шифрованием на уровне драйверов. Шифрование на файловом уровне означает, все файлы шифруются по отдельности. Для использования зашифро¬
ГЛАВА 10. Использование алгоритмов 257 ванного файла нужно сначала расшифровать файл, затем использовать его, а потом снова зашифровать. Шифрование на уровне драйвера поддерживает на компьютере пользователя логический диск, все данные на котором зашифрованы. Если все сделано надлежащим образом, это обеспечит защиту, которая, помимо ввода корректного пароля, не требует особых забот со стороны пользователя. Драйвер, однако, должен быть значительно сложнее, чем простая программа шифрования файла, поскольку он должен решать проблемы установки драйверов устройств, выделения новых секторов для файлов, утилизации старых секторов для файлов, чтение с произвольным доступом, запросы на обновление любых данных логического диска и т.д. Как правило, перед запуском драйвер предлагает пользователю ввести пароль. Пароль используется для генерации главного ключа расшифрования, который используется для шифрования фактических ключей расшифрования различных данных. В табл. 10.5 приведены сравнительные характеристики шифрования на уровне файла и на уровне драйвера. Таблица 10.5. Сопоставление шифрования на уровне файла и на уровне драйвера Шифрование на файловом уровне Шифрование на уровне драйверов Преимущества ✓ Простота реализации и использования ✓ Гибкость ✓ Относительно небольшое снижение быстродействия ✓ Пользователи могут свободно переносить файлы между различными компьютерами ✓ На защищенном диске можно хранить временные файлы, рабочие файлы и т.д. ✓ В системах этого типа трудно забыть заново зашифровать что-нибудь Проблемы безопасности ✓ Возможна утечка информации при использовании незащищенных программ. (Программа может записать файл на диск, например, для временного хранения). ✓ Неудачные реализации могут при повторном шифровании с одним и тем же паролем использовать один и тот же ключ %/ Возможны многочисленные неприятности с другими драйверами устройств и резидентными программами ✓ Неудачные реализации уязвимы к вскрытию с использованием подобранного открытого текста и даже подобранного шифртекста ✓ Если с помощью единственного пароля можно получить полный доступ к системе, компрометация этого пароля позволяет взломщику делать все что угодно
258 Прикладная криптография ✓ Приложения этого типа допускают корректное использование ограниченного набора шифров. Например, режим ОРВ потоковых шифров не работает Проблемы использования ✓ Пользователь должен знать, что и как ему следует делать ✓ Возможно, придется использовать различные пароли для различных файлов ✓ Единственный метод контроля доступа - шифрование вручную выбранных файлов ✓ Возможно снижение быстродействия ✓ Драйвер может непредсказуемым образом взаимодействовать с операционными системами \Уш<1о\у5, эмуляцией 008 под 08/2, драйверами устройств и т.д. Обеспечение произвольного доступа к зашифрованному диску От большинства систем требуется способность предоставления произвольного доступа к отдельным секторам диска. Это несколько осложняет использование многих потоковых и блочных шифров во всех режимах сцепления. Эту проблему можно решить несколькими методами. Используйте адрес сектора для генерации уникального вектора инициализации (ВИ) каждого шифруемого или расшифровываемого сектора. Недостаток этого метода заключается в том, что каждый сектор всегда будет шифроваться одним и тем же вектором ВИ. Убедитесь, что это не влечет проблем безопасности. В качестве главного ключа генерируйте псевдослучайный блок размером в один сектор. (Вы можете сделать это, запустив, например, алгоритм в режиме ОРВ). Для шифрования каждого сектора сначала выполните операцию ХОК над этим псевдослучайным блоком, а затем зашифруйте его обычным путем с помощью блочного шифра в режиме ЕСВ. Это называется шифрованием в режиме ЕСВ+ОРВ (см. раздел 15.4). Поскольку СВС и СРВ - режимы с восстановлением после ошибок, вы можете использовать все блоки кроме первых одного-двух блоков в секторе для генерации вектора ВИ данного сектора. Например, в качестве значения вектора ВИ сектора 3001 можно использовать хэш всех, кроме первых 128, битов данных сектора. После генерации вектора инициализации, зашифруйте данные в обычном режиме СВС. Для расшифрования сектора используйте в качестве вектора ВИ второй 64-битовый блок сектора и расшифруйте остаток данных сектора. Затем, используя дешифрованные данные, сгенерируйте снова вектор ВИ и расшифруйте первые 128 бит. Вы можете зашифровать сразу весь сектор, используя блочный шифр, размер блока которого достаточно велик. В качестве примера можно привести алгоритм СгаЪ (см. раздел 14.6).
ГЛАВА 10. Использование алгоритмов 259 10.5. Сравнение аппаратного и программного шифрования Аппаратное шифрование Вплоть до недавнего времени все продукты шифрования выпускались в форме специализированного оборудования. Эти шифраторы/дешифраторы подключались к каналу связи и шифровали все данные, проходящие по каналу. И хотя в настоящее время все шире применяется программное шифрование, аппаратное шифрование по-прежнему широко используется в военных и серьезных коммерческих приложениях. Например, агентство АНБ санкционирует исключительно аппаратное шифрование. Это объясняется несколькими причинами. Первая причина - скорость. Как показано в части 3, алгоритмы шифрования предусматривают исполнение множества сложных операций над битами открытого текста. Это операции не того сорта, что можно легко встроить в ваш заурядный компьютер. Например, два самых популярных алгоритма, ЭЕ8 и К8А, исполняются универсальными процессорами весьма неэффективно. Пока некоторые криптографы пытаются создать алгоритмы, наиболее подходящие для программной реализации, специализированное шифровальное оборудование всегда работает с высокой скоростью. Далее, шифрование зачастую представляет собой задачу, требующую большого объема вычислений. Ограничивать ее возможностями главного процессора компьютера неэффективно. Работу системы ускоряет передача операций шифрования другой микросхеме, даже если она - просто еще один процессор. Вторая причина - безопасность. Алгоритм шифрования, исполняемый на обычном компьютере, не имеет физической защиты. Мэллори может проникнуть в него с помощью различных инструментов отладки и тайком модифицировать алгоритм так, что никто ничего и не заподозрит. Аппаратные шифраторы можно надежно изолировать, предотвратив такой взлом. Устройства, защищенные от взлома, могут предотвратить модификацию шифровального устройства злоумышленником. На специализированные микросхемы УЬ81 можно нанести такое покрытие, что любая попытка доступа к их внутреннему содержимому приведет к разрушению логических цепей микросхемы. В микросхемах СНррег и Сарз1;опе, разрабатываемых правительством США, предусмотрена защита от взлома (см. разделы 24.16 и 24.17). Микросхемы можно спроектировать так, чтобы Мэллори не смог прочитать незашифрованный ключ. Корпорация 1ВМ разработала криптографическую систему для шифрования данных и каналов связи в мэйнфреймах [515,1027]. В нее входят модули, устойчивые к взлому, предназначенные для хранения ключей. Эта система обсуждается в разделе 24.1. Электромагнитные излучения иногда могут выдать то, что происходит внутри какого-то компонента электронного оборудования. Специализированные шифровальные устройства можно покрыть защитным экраном, не допускающим утечки компрометирующей информации. Компьютеры общего назначения тоже можно экранировать, но это намного более сложная задача. Вооруженные силы США называют такие атаки ТЕМРЕ8Т; однако обсуждение этой темы далеко выходит за рамки этой книги.
260 Прикладная криптография Наконец, последняя причина преобладания аппаратных шифраторов - простота установки. Большинство приложений шифрования не предназначено для установки в обычных компьютерах. Людям может понадобиться шифровать их телефонные переговоры, факсимильные передачи, либо каналы передачи данных. Дешевле установить специализированные шифровальные устройства в телефонах, факс-аппаратах и модемах, чем возлагать задачу на микропроцессоры и программные приложения. Но даже если зашифрованные данные поступают с компьютера, установить специали¬ зированное шифровальное устройство проще, чем модифицировать программное обеспечение компьютерной системы. Шифрование должно быть незаметным; оно не должно мешать пользователю. Единственный метод добиться этого - встроить средства шифрования глубоко в операционную систему. Сделать это нелегко. С другой стороны, даже новичку не составит труда подключить шифратор между своим компьютером и внешним модемом. Современный рынок предлагает шифровальные устройства трех типов: автономные модули шифрования (модули выполняют такие функции, как проверка подлинности пароля и распределение ключей для банков), специализированные шифраторы каналов связи и платы, вставляемые в персональные компьютеры. Некоторые шифровальные устройства проектируются для использования в линиях связи конкретных типов, например, шифраторы Т-1, которые спроектированы так, что не шифруют синхронизующие биты. Существуют различные шифраторы для синхронных и асинхронных каналов связи. Современные устройства имеют тенденцию принимать биты с большей скоростью и более универсальны. Несмотря на это, многим шифровальным устройствам свойственна несовместимость. Покупатели должны знать об этом и тщательно изучать свои потребности. В противном случае вы можете стать владельцами оборудования, совершенно непригодного для своих задач. Обратите внимание на ограничения, налагаемые на тип оборудования, операционную систему, прикладные программы, сеть и т.д. Платы шифрования персональных компьютеров обычно шифруют все, что записано на жесткий диск, а также могут конфигурироваться для шифрования всего, что копируется на гибкие диски и посылается на последовательный порт. Эти платы не защищены от электромагнитного излучения или физического вмешательства, поскольку бессмысленно защищать платы, если незащищен сам компьютер. Все большее число компаний начинают встраивать шифраторы в свое оборудование связи. Сегодня можно встретить защищенные телефоны, факс-аппараты и модемы. Внутреннее распределение ключей для этих устройств обычно защищено, причем для защиты используется множество различных схем от различных производителей. В конкретной ситуации некоторые схемы подходят лучше, чем другие, и покупатели обязаны знать, какой тип распределения ключей используется в их шифраторе и что им нужно для решения своих задач. Программное шифрование Любой алгоритм шифрования можно реализовать программным путем. Недостатки этого подхода заключаются в низкой скорости, высокой стоимости и простоте
ГЛАВА 10. Использование алгоритмов 261 модифицирования (или манипулирования) алгоритмом. К преимуществам можно отнести универсальность, портативность, простоту использования и обновления. Алгоритмы, написанные на языке С, приведенные в конце этой книги, можно реализовать после небольшой модификации на любом компьютере. За небольшую плату их можно скопировать и установить на многих компьютерах. Эти алгоритмы можно встраивать в более крупные приложения, скажем, программы связи или текстовые процессоры. Программное шифрование популярно и доступно для большинства основных операционных систем. Оно предназначено для защиты индивидуальных файлов; пользователь, как правило, должен вручную шифровать и расшифровывать конкретные файлы. Важно хранить в тайне схему распределения ключей: ключи нельзя хранить на диске где попало (или даже записанными в той области памяти, которую процессор использует для подкачки с диска). После шифрования ключи и незашифрованные файлы следует уничтожать. В этом отношении многие программы неудачны, а потому пользователь должен выбирать их с осторожностью. Разумеется, Мэллори всегда может подменить программный алгоритм шифрования каким- нибудь ущербным алгоритмом. Но для большинства пользователей это не проблема. Если Мэллори может взломать ваш офис и модифицировать программу алгоритма шифрования, он может также и установить скрытую камеру в стене, подключить прослушивающее устройство к телефону и вывести детектор ТЕМРЕ8Т на улицу. Если Мэллори намного могущественнее вас, вы уже проиграли еще до начала игры. 10.6. Сжатие, кодирование и шифрование По двум причинам совместно с алгоритмом шифрования данных целесообразно использовать алгоритм сжатия: ✓ Криптоанализ опирается на избыточность открытого текста, а сжатие файла перед шифрованием избыточность снижает. %/ Шифрование занимает много времени, а потому сжатие файла до шифрования ускоряет весь процесс. Важно запомнить, что сжатие должно выполняться именно до шифрования. Если вы используете сколько-нибудь приличный алгоритм шифрования, шифртекст несжимаем - он выглядит как набор случайных данных. (Кстати, это обстоятельство можно использовать как неплохой тест алгоритма шифрования. Если шифртекст можно сжать, алгоритм, вероятно, не слишком надежен). Если вы собираетесь использовать средства кодирования передачи или обнаружения и восстановления после ошибок, помните, что эти операции необходимо исполнять после шифрования. Если в канале связи есть помехи, свойства распространения ошибки при расшифровании только усугубят их последствия. Эти этапы иллюстрирует Рис. 10.3.
262 Прикладная криптография Рис. 10.3. Шифрование со сжатием и контролем ошибок 10.7. Обнаружение зашифрованных данных Каким образом Ева может обнаружить зашифрованный файл? Ева занимается шпионажем, а потому этот вопрос для нее важен. Допустим, она прослушивает сеть, по которой во все стороны и с высокой скоростью летят сообщения, но Еве необходимо отобрать только те, что ее интересуют. Зашифрованные файлы представляют несомненный интерес, но как Ева может установить, что файл зашифрован? Как правило, Ева полагается на тот факт, что в большинстве популярных программ шифрования используются стандартные заголовки. По этой причине несложно обнаружить сообщения электронной почты, зашифрованные либо РЕМ, либо РОР (см. разделы 24.10 и 24.12). Другие схемы шифрования просто генерируют файл шифртекста, по виду напоминающий набор случайных битов. Как Еве отличить их от всех других файлов, которые тоже выглядят как набор случайных битов? Гарантированный метод неизвестен, но Ева может попытаться предпринять следующие действия: ✓ Исследовать файл. Текст А8СН отличить несложно. Другие форматы файлов, скажем, Т1РР, ТеХ, С, Ро$(8спр(, 03 (факсимильная связь) или Млсгозой: Ехсе1 используют стандартные идентификационные характеристики. Исполняемые коды тоже обнаружимы. В файлах 1Ж1Х часто используют «магические числа», которые можно обнаружить. ✓ Попытаться восстановить файл с помощью основных алгоритмов сжатия. Если файл просто сжат (но не зашифрован), она восстановит исходный файл. ✓ Попытаться сжать файл. Если в файле находится шифртекст (и использован хороший алгоритм), вероятность существенного сжатия файла с помощью обычных программ сжатия невелика. (Под «существенным» я полагаю сжатие на 1—2%). Если же это что-нибудь другое (например, двоичное изображение, файл двоичных данных), вероятно, сжатие файла возможно. Любой файл, который невозможно сжать, и который ранее не сжимался, вероятно, содержит шифртекст. (Разумеется, можно специально создать шифртекст, допускающий сжатие). Идентификация алгоритма, в целом, сложнее. Если использован хороший алгоритм, это вообще невозможно. Если в алгоритме есть небольшие систематические ошибки, их можно распознать в файле. Однако чтобы это сработало, систематические ошибки должны быть достаточно существенны, либо файл должен быть достаточно большим.
ГЛАВА 10. Использование алгоритмов 263 10.8. Скрытие шифртекста в шифртексте Предположим, в прошлом году Алиса и Боб обменивались зашифрованными сообщениями. Ева собрала все эти сообщения, но не может расшифровать ни одного. Наконец, тайной полиции надоедает возиться со всеми этими нечитаемыми шифр- текстами, и она арестовывает парочку. «Передайте нам ваши ключи шифрования!»- требуют полицейские. Алиса и Боб отказываются, но тут появляются пыточные тиски для выламывания пальцев. Как им поступить? Чем не чудесной была бы возможность зашифровать файл так, чтобы его можно было расшифровать двумя методами, причем в каждом использовался особый ключ? Алиса может зашифровать настоящее сообщение Бобу одним из этих ключей, а какое-либо невинное сообщение - другим. Если Алису схватят, она может передать ключ, которым зашифровано безобидное сообщение, а настоящий ключ сохранить в тайне. Проще всего это сделать с помощью одноразового шифровального блокнота. Обозначим Р открытый текст, О - ложный открытый текст, С - шифртекст, К - настоящий ключ, а К' - ложный ключ. Алиса шифрует Р: Р®К = С Алиса и Боб совместно используют ключ К, так что Боб может расшифровать С: С®К = Р Если тайная полиция когда-нибудь вынудит их выдать свой ключ, они не выдадут К, а вместо этого выдадут: К'^СФИ Тогда полиция восстановит ложный открытый текст: С®К'=0 Поскольку здесь используется одноразовый блокнот и значение К совершенно случайно, нет никакой возможности доказать, что К' - ложный ключ. Чтобы сделать все еще убедительнее, Алиса и Боб могли бы состряпать какие-нибудь слегка предосудительные ложные сообщения вместо по-настоящему преступных подлинных сообщений. Однажды эту штуку проделала парочка израильских шпионов. Алиса может взять Р и зашифровать его своим любимым алгоритмом и ключом К, получив С. Затем она берет С и выполняет операцию ХОК с С и каким-либо душеспасительным текстом, скажем, «Гордость и Предрассудки», чтобы получить К\ Она сохраняет как С, так и значение ХОК на своем жестком диске. Теперь, когда ее станет допрашивать тайная полиция, Алиса может пояснить, что она - криптограф- любитель, а К'- просто одноразовый блокнот для С. Тайная полиция может что-то заподозрить, но если она не знает К, не сможет доказать, что Алиса лжет. Другой метод заключается в шифровании Р с помощью симметричного алгоритма и^,а И- с помощью К’. Чтобы создать окончательный шифртекст, перепутайте биты (или байты) шифртекста. Если тайная полиция потребует ключ, Алиса передает ей К' и заявляет, что перемежающиеся биты (или байты) представляют собой случайный шум, специально спроектированный для затруднения криптоанализа. Беда в том, что это
264 Прикладная криптография объяснение настолько неправдоподобно, что тайная полиция, вероятно, им не поверит (особенно если следователи прочитают эту книгу). Лучший метод заключается в создании Алисой ложного сообщения, Д такого, что после конкатенации с Р и сжатия, размер сообщения практически тот же, что размер О. Назовем эту конкатенацию Р\ Затем Алиса шифрует Р* каким-либо алгоритмом, который использует совместно с Бобом, и получает С. Затем Алиса отправляет С Бобу. Боб расшифровывает С, получая Р\ а затем Р и Э. Затем они оба вычисляют С 0 О = К'. Полученное значение К' становится ложным одноразовым блокнотом, который Алиса и Боб используют в том случае, когда тайная полиция вломится в их двери. Алиса должна передать полиции Д с тем, чтобы ее алиби согласовывалось с алиби Боба. Еще один метод заключается в том, что Алиса прогоняет невинное сообщение через код с исправлением ошибок. Затем она может ввести ошибки, которые соответствуют секретному шифрованному сообщению. На принимающей стороне Боб может извлечь ошибки, реконструировать секретное сообщение и расшифровать его. Он может также использовать код с исправлением ошибок для восстановления невинного сообщения. В тайной полиции Алису и Боба могут крепко прижать, заставляя объяснить, почему это они постоянно получают сообщения с частотой ошибок по битам 30%, тогда как компьютерная сеть свободна от помех, однако в некоторых случаях такая схема срабатывает. Наконец, Алиса и Боб могут использовать в своих алгоритмах цифровой подписи скрытый канал (см. разделы 4.2 и 23.3). Он необнаружим, превосходно работает, однако имеет недостаток - позволяет переслать около 20 символов скрытого текста на одно подписанное невинное сообщение. Фактически, этот метод годится только для пересылки ключей. 10.9. Уничтожение информации Когда вы удаляете файл, на самом деле в большинстве компьютеров файл не удаляется. Удаляется только запись в индексном файле жесткого диска, указывающая компьютеру, что файл находится на диске. Многие производители программного обеспечения сделали состояние, продавая программы восстановления «удаленных» файлов. Кроме того, есть еще один повод для беспокойства: использование процессором виртуальной памяти означает, что ваш компьютер может постоянно считывать и записывать содержимое оперативной памяти на диск. И даже если вы не сохраняете файл, вы никогда не узнаете, что уязвимый документ, над которым вы работали, выгружен на диск. То есть даже если вы ни разу не сохраните данные открытого текста, это сделает ваш компьютер. А программы шифрования на уровне драйвера, например, 51аскег и БоиЫеБрасе, могут даже затруднять предвидение, каким образом и где информация сохраняется на диске. Чтобы стереть файл так, чтобы его не смогла прочитать программа восстановления файла, вы должны физически перезаписать все биты файла, хранящиеся на диске. В соответствии с указаниями Национального центра компьютерной безопасности (ИС8С) [1148]:
ГЛАВА 10. Использование алгоритмов 265 Перезапись представляет собой процесс, в котором несекретные данные записы¬ ваются в области устройства хранения, в которых ранее находились уязвимые данные... Чтобы очистить... носитель информации, Министерство обороны требует перезаписывать его одним повторяющимся шаблоном, затем его двоичным дополнением, а затем еще одним шаблоном, например, 00110101, 1100 1010, и 1001 0111. Необходимое число операций перезаписи зависит от типа носителя информации, иногда от ее чувствительности, а иногда и других требо¬ ваний Министерства обороны. В любом случае очистка не считается выполненной до последней перезаписи несекретными данными. Возможно, вам понадобится стереть файлы или даже содержимое всего жесткого диска. Кроме того, вы должны выполнить стирание всех неиспользуемых областей вашего жесткого диска. Создатели большинства коммерческих программ уверяют, что выдерживают требование трехкратной перезаписи, предусмотренное стандартом Министерства обороны: сначала всё перезаписывается единицами, затем - нулями и, наконец, повторяющимся шаблоном, составленным из единиц и нулей. Соответственно моему уровню параноидальности, рекомендую перезаписывать удаленные файлы семь раз: первый раз- единицами, второй раз - нулями и пять раз криптографически надежной псевдослучайной последо¬ вательностью. Однако недавние достижения Национального института стандартов и технологии (Ы18Т) в туннельной электронной микроскопии внушают мысль, что и этого недостаточно. Честно говоря, если ваши данные исключительно ценны, следует полагать, что полная очистка данных с магнитного носителя невозможна. Сожгите или разбейте вдребезги ваш носитель - дешевле купить новый носитель, чем утратить все свои секреты.
Часть 3 КРИПТОГРАФИЧЕСКИЕ АЛГОРИТМЫ
ГЛАВА 11. Математические основы 11.1. Теория информации Современная теория информации впервые опубликована в 1948 году Клодом Э. Шенноном (С1аис1е Е1т\уооб ЗЬаппоп) [1431, 1432]. (Его работы были переизданы ШЕЕ Ргезз [1433]). Математическая интерпретация этой темы приведена в [593]. В этой главе я только схематично излагаю основные идеи. Энтропия и неопределенность Теория информации определяет количество информации в сообщении как мини¬ мальное число битов, необходимое для кодирования всех возможных значений сообщения, если полагать все сообщения равновероятными. Например, в базе данных для поля дня недели достаточно использовать три бита информации, поскольку вся информация может быть закодирована 3 битами: 000 = Воскресенье 001 = Понедельник 010 = Вторник 011 = Среда 100 = Четверг 101 = Пятница 110 = Суббота 111 - Не используется Если бы эта информация была представлена соответствующими строками символов А8СН, она заняла бы в памяти больше места, однако не содержала бы больше информа¬ ции. Аналогично, поле базы данных «ПОЛ» содержит только 1 бит информации, хотя эта информация может храниться и как одна из двух 7-байтовых строк А8СП: «МУЖЧИНА» или «ЖЕНЩИНА». Формально количество информации в сообщении М измеряется энтропией сообщения, обозначаемой как Н(М). Энтропия сообщения, определяющего пол, составляет 1 бит, а энтропия сообщения, определяющего день недели, немногим менее 3 бит. В общем случае, энтропия сообщения, измеряемая в битах, равна 1о§2и, где п - число возможных значений. При этом предполагается равновероятность всех значений. Кроме того, энтропия сообщения служит мерой его неопределенности. Так называют число битов открытого текста, которое нужно раскрыть в шифртексте сообщения, чтобы восстановить открытый текст. Например, если блок шифртекста «С)НР*5МХ» означает либо «МУЖЧИНА», либо «ЖЕНЩИНА», неопределенность сообщения равна 1. Чтобы восстановить сообщение, криптоаналитику достаточно знать только один правильно выбранный бит.
ГЛАВА 11. Математические основы 269 Энтропия языка Для данного языка энтропия языка равна г = Н(М)/И Где N - длина сообщения. Для больших значений N энтропия обычного английского языка принимает различные значения от 1.0 бит/букву до 1.5 бит/букву. Шеннон в [1434] указывает, что энтропия зависит от длины текста. В частности, он показал, что энтропия для 8-буквенных блоков равна 2.3 бит/букву, однако для 16-буквенных блоков ее значение меньше, и лежит в пределах 1.3—1.5 бит/букву. Томас Кавер (ТЬотаз Соуег), используя игровую методику оценки, обнаружил, что энтропия составляет 1.3 бит/символ [386]. (В этой книге я буду использовать значение 1.3 бит/символ). Абсолютная энтропия языка равна максимальному числу битов, которое может быть передано каждым символом при условии равновероятности всех последовательностей символов. Если в языке используются Ь символов, абсолютная энтропия равна: Я = 1о§2 Ь Это максимальная энтропия отдельных символов. Для английского языка с 26 буквами абсолютная энтропия равна 1о§226, или около 4.7 бит/буква. Не удивляйтесь, что фактическая энтропия английского языка намного меньше абсолютной - естественным языкам свойственна высокая избыточность. Избыточность языка, обозначаемая Д определяется как: Г> = Д-г Если принять, что энтропия английского языка равна 1.3, его избыточность составит 3.4 бит/буква. Это означает, что в каждой английской букве содержится 3.4 бит избыточной информации. В сообщениях в коде А8СН, состоящих только из английских букв, количество информации на каждый байт составляет 1.3 бит. Это означает, что в каждом байте содержится 6.7 бит избыточной информации, что дает общую избыточность 0.84 бит информации на 1 бит текста А8СН и энтропию 0.16 бит информации на 1 бит текста А8СН. Это же сообщение, набранное кодом ВАЕЮОТ, с 5 бит/символ, имеет избыточность 0.74 бита на 1 бит и энтропию 0.26 бит на 1 бит. Эти цифры изменяют пробелы, знаки препинания, числа и форматирование. Стойкость криптосистем Шеннон дал точное математическое определение стойкости криптосистемы. Цель работы криптоаналитика заключается в определении ключа К, открытого текста Р либо обоих. Однако он может довольствоваться и некоторой вероятностной информацией о Р: является ли этот открытый текст оцифрованным звуком, текстом на немецком языке, данными электронных таблиц, либо чем-то еще. В большинстве реальных ситуаций криптоаналитик располагает некоторой вероят¬ ностной информацией об открытом тексте (Р) еще до начала работы. Скажем, он знает, на каком языке написан открытый текст. Этот язык обладает определенной, характерной для него, избыточностью. Если это сообщение для Боба, оно, возможно, начинается
270 Прикладная криптография словами «Дорогой Боб». Несомненно, слова «Дорогой Боб» намного вероятнее, чем «е8Т*.§[,тпК5». Цель криптоаналитика - изменение вероятностей, связанных с каждым возможным открытым текстом. В конце концов, из груды возможных открытых текстов будет отобран один конкретный (или, по крайней мере, весьма вероятный) текст. Существуют криптосистемы, обеспечивающие совершенную секретность. Таковой считается криптосистема, в которой шифртекст не предоставляет никакой информации об открытом тексте (кроме, возможно, его длины). Шеннон теоретически доказал, что такое возможно только если число возможных ключей столь же велико, что и число возможных сообщений. Иными словами, ключ должен быть не короче самого сообщения и не может использоваться повторно. Это означает, что единственной системой, которая обладает совершенной секретностью, может быть только криптосистема типа одноразового блокнота (см. раздел 1.5). За исключением совершенно секретных систем, в шифртексте неизбежно содержится определенная информация о соответствующем открытом тексте. Хороший крипто¬ графический алгоритм сохраняет минимум этой информации, и умелый криптоаналитик сумеет воспользоваться ею для восстановления открытого текста. Для уменьшения числа возможных открытых текстов криптоаналитики используют избыточность естественных языков. Чем выше избыточность языка, тем проще его криптоанализ. По этой причине во многих криптографических реализациях, еще до шифрования, предусмотрено использование программ сжатия для уменьшения длины текста. Сжатие уменьшает избыточность сообщения, а также объем работы, необходимой для его зашифрования и расшифрования. Энтропия криптосистемы служит мерой размера пространства ключей К. Приблизи¬ тельно энтропия криптосистемы равна логарифму числа ключей по основанию 2: Н (К) = 1о§2 К Энтропия криптосистемы с 64-битовым ключом равна 64 бит, энтропия криптосистемы с 56-битовым ключом равна 56 бит. В общем случае, чем выше энтропия, тем труднее взлом криптосистемы. Расстояние единственности Для сообщения длиной п число различных ключей, которые расшифровывают шифртекст сообщения в какой-то осмысленный открытый текст на языке оригинального открытого текста (например, английском), определяется следующей формулой [712, 95]: 2н(К)-пй _ | Шеннон [1432] определил расстояние единственности, V, называемое также точкой единственности, как такой приблизительный размер шифртекста, для которого сумма реальной информации (энтропия) в соответствующем открытом тексте плюс энтропия ключа шифрования равна числу используемых битов шифртекста. Далее Шеннон показал, что разумно полагать, что шифртексты, которые длиннее расстояния единственности, можно дешифровать только одним осмысленным способом. Шифртексты, которые заметно короче расстояния единственности, вероятнее всего, можно дешифровать несколькими способами, причем каждый из них может быть
ГЛАВА 11. Математические основы 271 корректен, и таким образом обеспечить защиту сообщения, поставив противника перед выбором правильного открытого текста. В большинстве симметричных криптосистем расстояние единственности определяется как частное от деления энтропии криптосистемы на избыточность языка. и = Н{К)Ю Расстояние единственности не позволяет сделать точное предсказание, но дает вероят¬ ностный результат. Оно позволяет оценить минимальный объем шифртекста, при лобовом вскрытии которого имеется, вероятно, только один разумный способ дешифрования. Как правило, чем больше расстояние единственности, тем надежнее криптосистема. При использовании алгоритма ЭЕ8 с 56-битовым ключом и англоязычного сообщения, написанного символами А8СН, расстояние единственности равно приблизительно 8.2 символа А8СП или 66 бит. В табл. 11.1 приведены расстояния единственности для ключей различной длины. В [445] приведены расстояния единственности для некоторых классических криптосистем. Таблица 11.1. Расстояния единственности текста Л8СН, зашифрованного алгоритмами с различной длиной ключа Длина ключа (бит) Расстояние единственности (в символах) 40 5.9 56 8.2 64 9.4 80 11.8 128 18.8 256 37.6 Расстояние единственности служит мерой не объема шифртекста, необходимого для криптоанализа, а объема шифртекста, необходимого для достижения единственности результата криптоанализа. Криптосистема может быть неуязвима к вскрытию вычислительными методами, даже если теоретически её можно взломать, используя небольшой объем шифртекста. (Здесь уместно вспомнить эзотерическую теорию релятивистской криптографии [230, 231, 232, 233, 234, 235]). Расстояние единственности обратно пропорционально избыточности. Если избыточность стремится к нулю, даже заурядный шифр может не поддаться вскрытию с использованием только шифртекста. Шеннон определил криптосистему с бесконечным расстоянием единственности, как идеально секретную. Обратите внимание: идеально секретная криптосистема не обязательно совершенна, но совершенная криптосистема обязательно идеальна. Если криптосистема идеальна секретная, то даже после успешного криптоанализа остается некоторая неопределенность в правильности восстановленного открытого текста. Теория информации на практике Хотя описанные понятия имеют важное теоретическое значение, они достаточно редко используются в практике криптоанализа. Расстояние единственности гарантирует
272 Прикладная криптография нестойкость системы, если оно слишком мало, однако его большое значение не гарантирует надежности. Некоторые практические алгоритмы абсолютно не поддаются анализу - для взлома шифрованных сообщений в качестве вводных значений годятся любые сочетания характеристик. Все же соображения теории информации иногда полезны, например, для задания в конкретном алгоритме рекомендуемого интервала изменения ключей. Кроме того, для выбора наиболее перспективных направлений анализа, криптоаналитики используют ряд тестов, основанных на теории вероятности и информатике. К сожалению, большая часть литературы по применению теории информации в криптоанализе остается секретной, в том числе и основополагающая работа Алана Тьюринга (А1ап Типп§), написанная в 1940 году. Рассеивание и перемешивание Согласно Шеннону, для маскировки избыточности открытого текста сообщения можно использовать два основных метода - перемешивание и рассеивание [1432]. Перемешивание маскирует связь между открытым текстом и шифртекстом. Она препятствует попыткам найти в шифртексте избыточность и статистические закономерности. Простейший метод создания перемешивания - подстановка. В простом подстановочном шифре, например, шифре Цезаря, все одинаковые буквы открытого текста заменяются другими одинаковыми буквами шифртекста. Современные подстановочные шифры сложнее: длинный блок открытого текста заменяется блоком шифртекста, а механизм подстановки изменяется для каждого бита открытого текста или ключа. Обычно подстановки такого типа недостаточно. Например, во время Второй мировой войны был взломан сложный алгоритм немецкой машины Еш^ша. Рассеивание рассеивает избыточность открытого текста, распределяя ее по всему шифртексту. Для поиска избыточности криптоаналитику понадобится немало времени. Простейший способ создания рассеивания - транспозиция (называемая также перестановкой). Простой перестановочный шифр всего лишь переставляет буквы открытого текста. Современные шифры тоже выполняют такую перестановку, однако в них используются и другие формы рассеивания, позволяющие разбросать части сообщения по всему сообщению. Потоковые шифры используют только перемешивание, хотя ряд схем с обратной связью предусматривают и рассеивание. В блочных алгоритмах применяется как переме¬ шивание, так и рассеивание. Как правило, само по себе рассеивание взломать нетрудно (хотя шифры с двойной перестановкой оказываются устойчивее, чем иные системы «карандаша и бумаги»). 11.2. Теория сложности Теория сложности предоставляет методику анализа вычислительной сложности различных криптографических методов и алгоритмов. Она сравнивает криптогра¬ фические методы и алгоритмы и определяет их надежность. Теория информации утверждает возможность взлома всех криптографических алгоритмов (кроме одноразовых блокнотов). Теория сложности сообщает, можно ли их взломать до наступления тепловой смерти Вселенной.
ГЛАВА 11. Математические основы 273 Сложность алгоритмов Сложность алгоритма определяется вычислительными мощностями, необходимыми для его исполнения. Вычислительную сложность алгоритма часто определяют двумя параметрами: Т (временная сложность) и 5 (пространственная сложность, или требования к памяти). Как Г, так и 5 обычно выражают как функции от п, где п - размер входных данных. (Существуют и другие меры сложности: число случайных битов, ширина канала связи, объем данных и т.д). Вычислительную сложность алгоритма обычно выражают через символ «О большое», указывающей порядок величины вычислительной сложности. Это просто член разложения функции сложности, быстрее всех растущий с ростом п\ все члены низшего порядка игнорируются. Например, если временная сложность данного алгоритма равна 4п2 +7я+12, его вычислительная сложность порядка п2 выражается как 0(п2). Временная сложность, измеренная подобным образом, не зависит от реализации. Не нужно знать ни точного времени исполнения различных инструкций, ни числа битов, используемых для представления различных переменных, ни даже скорости процессора. Один компьютер может быть на 50% быстрее другого, а у третьего ширина шины данных может быть вдвое больше, однако сложность алгоритма, оцененная порядком величины, не изменится. И это не ловкий трюк. При оценке достаточно сложных алгоритмов, таких, как описываемые в этой книге, всем прочим можно пренебречь (с точностью до постоянного множителя). Оценка вычислительной сложности наглядно показывает, как объем входных данных влияет на требования к времени и объему памяти. Например, если Т=0(п), удвоение входных данных удвоит и время исполнения алгоритма. Если Т-0{2"), добавление всего одного бита к входным данным удвоит время исполнения алгоритма. Обычно алгоритмы классифицируют в соответствии с их временной или пространственной сложностью. Алгоритм называют постоянным, если его сложность не зависит от п: 0(1). Алгоритм называют линейным, если его временная сложность равна 0(п). Алгоритмы могут быть также квадратичными, кубическими и т.д. Все это- полиномиальные алгоритмы, их сложность равна 0(пт\ где т - константа. Алгоритмы с полиномиальной временной сложностью называются полиномиальными по времени алгоритмами. Алгоритмы, сложность которых равна 0(1^п\ где / -константа, большая, чем 1, а /(л) - некоторая полиномиальная функция от п, называют экспоненциальными. Подмно¬ жество экспоненциальных алгоритмов, сложность которых равна 0(с/(л)), где с - константа, а /(я) возрастает быстрее, чем константа, но медленнее, чем линейная функция, называется суперполиномиальным. В идеальном случае, криптограф хотел бы утверждать, что алгоритм, наилучший для взлома спроектированного алгоритма шифрования, характеризуется экспоненциальной временной сложностью. Однако на практике самые уверенные утверждения, допу¬ стимые при современном состоянии теории вычислительной сложности, имеют форму «все известные алгоритмы вскрытия данной криптосистемы имеют суперполи- номиальную временную сложность». Иными словами, известные нам алгоритмы вскрытия обладают суперполиномиальной временной сложностью, но пока нельзя доказать невозможность создания алгоритма вскрытия с полиномиальной временной
274 Прикладная криптография сложностью. Вероятно, развитие теории вычислительной сложности когда-нибудь позволит создавать алгоритмы, для которых существование алгоритмов с полино¬ миальным временем вскрытия может быть исключено с математической точностью. С ростом п временная сложность алгоритмов может стать настолько огромной, что начнет затруднять практическую реализуемость алгоритма. В табл. 11.2 приведено время исполнения алгоритмов различных классов при значении п, равном 106 (один миллион). В таблице игнорируются константы, однако она также позволяет понять, почему это допустимо. Таблица 11.2. Время исполнения алгоритмов различных классов Класс алгоритма Сложность Число операций при и=106 Время при скорости 106 операций в секунду Постоянные 0(1) 1 1 мксек Линейные 0(п) 106 1 сек Квадратичные О (и2) 1012 11.6 дней Кубические О (я3) 1018 32000 лет Экспоненциальные 0(2") 10301030 гч 1 /ч 301006 В 10 раз продолжительнее существования Вселенной Если единицей времени нашего компьютера служит микросекунда, компьютер может исполнить постоянный алгоритм за микросекунду, линейный - за секунду, а квадратичный - за 11.6 дней. Исполнение кубического алгоритма займет 32 тысячи лет, что возможно хотя бы в принципе - в конечном счете, компьютер, конструкция которого позволит ему пережить следующий ледниковый период, найдет решение. Исполнение экспоненциального алгоритма обсуждать бесполезно, независимо от экстраполяции роста быстродействия компьютеров, развития средств параллельной обработки или контактов с иноземным суперразумом. Коснемся проблемы лобового вскрытия алгоритма шифрования. Временная сложность такого вскрытия пропорциональна числу возможных ключей, которое зависит от длины ключа экспоненциально. Если п - длина ключа, сложность лобового вскрытия равна 0(2"). В разделе 12.3 приводится дискуссия об использовании в алгоритме БЕ5 56-битового ключа вместо 112-битового. Сложность лобового вскрытия при 56-битовом ключе составляет 256, а при 112-битовом ключе - 2112. В первом случае вскрытие возможно, а во втором - нет. Сложность задач Теория сложности классифицирует не только сложность конкретных алгоритмов решения задачи, но и сложность самих задач. (Отличное введение в эту тему - работы [600, 211, 1226], см. также [1096, 27, 739]). Теория рассматривает минимальное время и объем памяти, необходимые для решения самого сложного варианта задачи на теоретическом компьютере, известном как машина Тьюринга. Машина Тьюринга
ГЛАВА 11. Математические основы 275 представляет собой конечный автомат с бесконечной магнитной лентой памяти для чтения/записи. Это означает, что машина Тьюринга - реалистичная вычислительная модель. Задачи, которые можно решить с помощью алгоритмов с полиномиальным временем, называют разрешимыми, поскольку обычно при разумных входных данных они могут быть решены за приемлемое время. (Точное определение «приемлемости» зависит от конкретных обстоятельств). Задачи, которые невозможно решить за полиномиальное время, называют труднорешаемыми, или просто трудными, поскольку вычисление их решений быстро становится невозможным. Задачи, которые можно решить только с помощью суперполиномиальных алгоритмов, вычислительно трудны, даже при относительно малых значениях п. Что еще хуже, Алан Тьюринг доказал, что некоторые задачи вообще неразрешимы. Даже без учета временной сложности алгоритма, создать алгоритм для решения этих задач невозможно. Задачи можно разбить на классы в соответствии со сложностью их решения. Важнейшие классы и предполагаемые соотношения между ними показаны на Рис. 11.1. (К сожалению, математически можно доказать лишь малую часть этих предположений).. Находящийся в самом низу класс Р включает все задачи, которые можно решить за полиномиальное время. В класс NР входят все задачи, которые можно решить за поли¬ номиальное время только на недетерминированной машине Тьюринга (это вариант обычной машины Тьюринга, которая может делать предположения). Такая машина предполагает решение задачи - либо «удачно угадывая», либо перебирая все предполо¬ жения параллельно - и проверяет свое предположение за полиномиальное время. Важность №-задач в криптографии определяется обстоятельством, что за недетерми¬ нированное полиномиальное время можно взломать многие симметричные алгоритмы и алгоритмы с открытым ключом. Для данного шифртекста С, криптоаналитик просто угадывает открытый текст X и ключ к, затем полиномиальное время исполняет алгоритм шифрования по входам X и к и проверяет, равен ли результат С. Это важно в
276 Прикладная криптография теоретическом отношении, поскольку устанавливает верхнюю границу сложности криптоанализа этих алгоритмов. На практике, конечно же, это - исполняемый за полиномиальное время детерминированный алгоритм, который и ищет криптоаналитик. Более того, этот аргумент неприменим ко всем классам шифров. Конкретно, он не применим для одноразовых блокнотов - для любого С существует множество пар X, к, дающих С при исполнении алгоритма шифрования, но большинство X представляют собой бессмысленные, недопустимые открытые тексты. Класс № включает в себя класс Р, поскольку любую задачу, решаемую за полиномиальное время на детерминированной машине Тьюринга, можно решить и на недетерминированной машине Тьюринга за полиномиальное время, просто этап предположения опускается. Если все задачи класса № решаются за полиномиальное время и на детерминированной машине, то Р=ОТ. Хотя кажется очевидным, что некоторые ОТ-задачи намного труднее других (лобовое вскрытие алгоритма шифрования против шифрования произвольного блока шифртекста), никем не доказано, что Р^ОТ (или Р=ОТ). Однако, большинство специалистов, занимающихся теорией сложности, убеждены, что эти классы неравны. Как ни странно, можно доказать, что некоторые ОТ-задачи настолько же трудны, что и любая задача этого класса1. Стивен Кук (8*еуеп Соок) доказал [365] ОТ-полноту задачи о выполнимости булевой формулы (дана пропозициональная булева формула; существует ли способ найти значения входящих в нее переменных так, чтобы все выражение стало истинным?). Это означает, что если задача о выполнимости решается за полиномиальное время, то Р = ОТ. Напротив, если можно доказать, что для некоторой задачи класса ОТ не существует детерминированного алгоритма с полиномиальным временем решения, доказательство покажет, что и для задачи о выполнимости не существует детерминированного алгоритма с полиномиальным временем решения. Задача о выполнимости - самая трудная задача класса ОТ. Со времен публикации основополагающей работы Кука, было показано, что существует множество задач, эквивалентных задаче о выполнимости. Сотни таких задач перечислены в [600], ряд примеров приведен ниже. В силу эквивалентности я полагаю, что эти задачи тоже ОТ-полные; они входят в класс ОТ и столь же трудны, что любая задача класса ОТ. Если бы была доказана их разрешимость за детерминированное полиномиальное время, вопрос о равенстве Р и ОТ был бы решен. Вопрос, верно ли, что Р = ОТ, является центральным нерешенным вопросом теории вычислительной сложности, и его решение в ближайшее время не ожидается. Если кто-то покажет, что Р = ОТ, большая часть этой книги станет ненужной: как указано выше, многие классы шифров тривиально взламываются за недетерминированное полиномиальное время. Если Р = ОТ, они вскрываются слабыми, детерминированными алгоритмами. Следующим в иерархии сложности идет класс Р8РАСЕ. Задачи класса Р8РАСЕ возможно решить в полиномиальном пространстве, но не обязательно за полиномиальное время. В класс Р8РАСЕ входит класс ОТ, но ряд задач Р8РАСЕ полагаются труднее задач ОТ. Конечно, и это пока недоказуемо. Известен класс так называемых Р8РАСЕ-полных задач, обладающих следующим свойством: если любая из 1 И они называются ОТ-полными. При этом существует несколько ОТ-задач, принадлежность которых к классу ОТ-полных не доказана, например задача о разложении на множители. - Прим. ред.
ГЛАВА 11. Математические основы 277 них является ОТ-задачой, то Р8РАСЕ = №, и если любая из них является Р-задачой, то Р8РАСЕ=Р. И, наконец, существует класс задач ЕХРТ1МЕ. Эти задачи решаются за экспонен¬ циальное время. В настоящее время можно доказать, что ЕХРТ1МЕ-полные задачи невозможно решить за детерминированное полиномиальное время. Кроме того, доказано, что Р^ЕХРТШЕ. МР-подные задачи Майкл Кэри (МюЬае1 Сагеу) и Дэвид Джонсон (ОаУ1<! 1оЬпзоп) составили список более 300 ^-полных задач [600]. Вот только несколько из них: ✓ Задача коммивояжера. Путешествующий коммивояжер должен объехать п различных городов, используя только один бак с горючим (задано максимальное расстояние, которое он может проехать). Существует ли маршрут, позволяющий ему посетить каждый город только один раз, используя этот единственный бак с горючим? (Эта задача - обобщение задачи о гамильтоновом пути, описанной в разделе 5.1). ✓ Задача о тройных браках. В комнате п мужчин, п женщин и п священников (жрецов, раввинов, кого угодно). Кроме того, есть список допустимых браков, записи которого состоят из одного мужчины, одной женщины и одного священника, согласного совершить обряд. Возможно ли, с учетом этого списка, построить п браков так, чтобы каждый либо сочетался браком только с одним человеком или регистрировал только один брак? ✓ Задача о 3-выполнимости. Есть список п логических выражений, каждое с тремя переменными. Например: если (х и у) то I, (х и м>) или (не г), если ((не и и не х) или (2 и (и или не х))) то (не г и и) или х), и т.д. Существуют ли некоторые значения всех переменных, чтобы все утверждения были истинными? (Это частный случай упомянутой выше задачи о выполнимости). 11.3. Теория чисел Это книга не посвящена теории чисел, поэтому я только обрисую ряд идей, используемых в криптографии. Если вам необходимо подробное математическое изложение теории чисел, обратитесь к одной из следующих книг: [1430, 72, 1171, 12, 959, 681, 742, 420]. Мои любимые книги по математике конечных полей - работы [971, 1042]. См. также [88, 1157, 1158, 1060]. Модулярная арифметика В школе мы все учили модулярную арифметику. Иногда ее называют «арифметикой вычетов» или «арифметикой часов». Помните эти задачи? Если Милдред обещала вернуться домой в 10:00, а опоздала на 13 часов, в какое время она придет домой и на сколько лет отец запрет ее в доме? Это пример арифметики по модулю 12. Двадцать три по модулю 12 равно 11. (10 +13) тос! 12 = 23 тос! 12 = 11 тос! 12
278 Прикладная криптография Другой способ записать это - сказать, что 23 и 11 равны по модулю 12: 10 + 13з 11 (той 12) В общем случае, а = Ь(тойл), если а = Ъ + кп при некотором целом к. Если а неотрицательно, а Ь находится между 0 и п, можно рассматривать Ь как остаток от деления а на п. Иногда Ь называется вычетом по модулю п, а иногда называют сравнимым с Ь по модулю п (знак тождества, з, обозначает сравнимость). Это просто разные способы записать одно и то же. Множество целых чисел от 0 до п -1 образует так называемую полную систему вычетов по модулю п. Это означает, что для любого целого числа а, его вычет по модулю п равен некоторому числу от 0 до п - 1. Операция а той п обозначает вычет от а, равный некоторому целому числу от 0 до п - 1. Эта операция называется приведением по модулю. Например, 5 той 3 =2. Это определение операции той может отличаться от принятого в некоторых языках программирования. Например, в языке РА8САЬ оператор той иногда возвращает отрицательное число в интервале от -(п- 1) до п- 1. В языке С оператор % возвращает остаток от деления первого выражения на второе, который может быть отрицателен, если любой операндов меньше нуля. Во всех алгоритмах, обсуждаемых в этой книге, если операция той возвращает отрицательное число, убедитесь, что прибавляете п к результату операции. Модулярная арифметика во многом подобна обычной арифметике. Так, она тоже коммутативна, ассоциативна и дистрибутивна. Кроме того, приведение каждого промежуточного результата по модулю п дает такой же результат, что и выполнение всего вычисления с последующим приведением конечного результата по модулю п: (а + Ь) той п = ((а тос! п) + (Ь тос! п)) той п (а - Ъ) тос! п = ((а той п) - (Ь той п)) той п (а * Ъ) тос! п = ((а тос! п) * {Ъ тос! п)) той п (а * (Ъ + с)) той п - (((а * Ь) той п) + ((а * с) той п)) той п Модулярные вычисления нередко используется в криптографии, поскольку вычисление дискретных логарифмов и квадратных корней по модулю п может оказаться нелегкой задачей. К тому же, модулярную арифметику проще реализовать на компьютерах, так как она ограничивает диапазон промежуточных значений и результата. Для Л-битовых модулей п длина промежуточных результатов любой операции сложения, вычитания или умножения не превышает 2к бит. Поэтому с помощью модулярной арифметики можно выполнить возведение в степень без огромных промежуточных результатов. Вычисление степени некоторого числа по модулю другого числа, ах той п представляет собой простую последовательность операций умножения и деления, однако известны методы их ускорения. Один из таких методов стремится минимизировать количество умножений по модулю, другой - оптимизировать отдельные операции
ГЛАВА 11. Математические основы 279 умножения по модулю. Поскольку операции дистрибутивны, возведение в степень выполняется быстрее как поток последовательных умножений, каждый раз получая вычеты. Сейчас вы не чувствуете разницы, но она станет заметной при умножении 200-разрядных чисел. Например, вычисляя 8 той п, не выполняйте, по простоте душевной, семь умножений и одно огромное приведение по модулю: (а*а*а*а*а*а*а*а) тос! п Вместо этого выполните три меньших умножения и три меньших приведения по модулю: ((а2 тос! п)2 тос! п)2 тос! п Точно также, 1А О 0 0 О а тос! п = (((а тос! п) тос! п) тос! п) тос! п Вычисление с**, где х не является степенью 2, несколько сложнее. Двоичная запись позволяет представить д: в виде суммы степеней числа 2. Так, число 25 в двоичной системе счисления записывается как 11001, так что 25 =24 + 23 + 2°. Поэтому: а25 тос! п = (а*а24) той п = (а*а* * а16) тос! п = = (а * ((а2)2)2 * (((а2)2)2)2 тос! п = ((((а2 * а)2)2)2 * а) тос! п что при разумном сохранении промежуточных результатов требует всего шести операций умножения: (((((((а2 тос! п) * а) тос! п)2 тос! п)2 тос! п)2 тос! п) * а) тос! п Этот прием называют аддитивной цепочкой {аМШоп скат) [863], или методом двоичных квадратов и умножений. В нем используется простая и очевидная аддитивная цепочка, основанная на двоичном представлении числа. На языке С это выглядит следующим образом: ипз±дпес1 1опд де2 (ипз±дпес1 1опд х, ипз±дпе<1 1опд у, ипз±дпес1 1опд п) { ипзхдпес! 1опд з, Ь, и/ хпЪ д.; з=1; *Ь=х; и=у; кЫ1е (и) { (и&1) з= (з*Ъ)%п; и»=1; Ъ=(Ъ*Ъ)%п; } геЪигп(з) ; }
280 Прикладная криптография Вот еще один, рекурсивный, алгоритм: ипз1дпе<1 1опд ^азЪ_ехр(ипз±дпе<1 1опд х, ипз1дпе<1 1опд у, ипзхдпес! 1опд И) { ипзхдпес! 1опд Ътр; 11: (у==1) геЪигп(х % Ы) ; 1* ((у&1)==0) { Ътр « ^азЪ__ехр (х,у/2 ,Ы) ; геЪигп ((Ьтр*Ьйр)%Ю; } е1зе { Ьпр = ^аз*Ь_ехр(х, (у-1)/2,1Т) ; Ьпр = (Ьпр*Ьпр) %Ы; Ьпр = (Ьпр*х)%1Т; ге*Ьигп (Ьпр) ; } } В среднем этот метод позволяет сократить число операций до 1.5 * к, где к - длина числа л; в битах. Найти метод расчетов с наименьшим числом операций - трудная задача (доказано, что последовательность должна содержать не менее к -1 операций), однако при больших значениях к нетрудно уменьшить число операций до 1.1 * к и даже более. Эффективный путь многократного приведения по модулю при одном и том же значении п - использование метода Монтгомери [1111]. В другом методе используется алгоритм Барретта [87]. В [210] обсуждается эффективность программной реализации описанного алгоритма и этих двух методов: алгоритм, описанный мною - наилучший для единичного приведения по модулю, алгоритм Барретта - наилучший для малых аргументов, а метод Монтгомери - наилучший для обычного возведения в степень по модулю. (Кроме того, в методе Монтгомери используется преимущество малых показателей степени, с помощью приема, называемого смешанной арифметикой). Операция, обратная возведению в степень по модулю п, называется дискретным логарифмированием. Далее я вкратце опишу эту операцию. Простые числа Простым называют целое число, больше единицы, единственными множителями кото¬ рого является 1 и оно само. Простое число не делится ни на одно другое число. Скажем, число 2 - простое число. К простым числам относятся также 73, 2521, 2365347734339 и 2756839-1. Количество простых чисел бесконечно велико. В криптографии, особенно криптографии с открытым ключом, нередко используют большие простые числа (512 бит и даже больше).
ГЛАВА 11. Математические основы 281 Евангелос Кранакис (Еуап§е1оз Кгапакк) написал прекрасную книгу по теории чисел, простым числам и их применению в криптографии [896]. Пауло Рибенбойм (Раи1о КлЪепЪот) написал две отличных справочных работы по простым числам в целом [1307, 1308]. Наибольший обший делитель Два числа называют взаимно простыми, если у них нет общих множителей кроме 1. Иными словами, если наибольший общий делитель чисел а и п равен 1, эти числа называют взаимно простыми. Это записывается следующим образом: НОД(а, п) = 1 Например, числа 15 и 28 взаимно просты. Числа 15 и 27 не являются взаимно простыми, а числа 13 и 500 - являются. Простое число взаимно просто со всеми другими числами, кроме чисел, кратных данному простому числу. Один из способов вычисления наибольшего общего делителя двух чисел - использование алгоритма Евклида. Евклид описал этот алгоритм в своей книге «Элементы», датированной 300 годом до н.э. Однако алгоритм создан не Евклидом. Историки полагают, что алгоритм лет на 200 старше. Это самый древний нетривиальный алгоритм, дошедший до наших дней, и он все еще в ходу. Кнут (Кпи1Ь) описал этот алгоритм и некоторые его современные модификации в [863]. На языке С: /* Возвращает НОД х и у */ ±пЬ дсс! (±пЪ х, 2.пЪ у) { ±пЪ д; ±€ (х < 0) х = -х ; (у < 0) у = -у; (х + у == 0 ) ЕККОК ; д = у; *гЫ1е (х > 0) { д = х; х = у % х; у = д; } геЪигп д;
282 Прикладная криптография Этот алгоритм можно обобщить для возврата наибольшего общего делителя (НОД) массива из т чисел: /* Возвращает НОД х1, х2. . .хш */ ±пЪ ти1Ъ±р1е_дсс! (±пЬ т, ±пЪ *х) { з12е_Ъ ±; ±пЪ д; (т < 1) геЪигп 0; д - х [0] ; Ног (1=1; 1<ш; ++±) { д * дсс!(д, х[±]) ; /* Оптимизация, так как для случайного х[±] , д—1 в 60% случаев: */ (д — 1) геЪигп 1; } геЪигп д; } Обратные значения по модулю Помните, что такое обратные значения? Обратное значение числа 4 равно 1/4, поскольку 4*1/4 =1. В мире модулей это понятие несколько сложнее: 4 * х = 1 (тос! 7) Это уравнение эквивалентно поиску таких значений х и к, что: Ах = 1к + \ где х и к - целые числа. Общая задача состоит в определении такого значения х, что: 1 = (а*х) тос! п Последнее равенство можно также записать в виде: а~х = х (тос! п) Задача вычисления обратных значений по модулю немного труднее обычной. Иногда > нее есть решение, иногда - нет. Например, обратное значение 5 по модулю 14 равно 3. С другой стороны у числа 2 нет обратного значения по модулю 14.
ГЛАВА 11. Математические основы 283 В общем случае, уравнение а 1 = х (шоб п) имеет единственное решение, если а и п взаимно просты. Если а и п не являются взаимно простыми числами, то а~х = х (шоё п) решений не имеет. Если п - простое число, то любое число от 1 до п - 1 взаимно просто с п и имеет только одно обратное значение по модулю п. До сих пор все хорошо. А теперь как вы собираетесь искать обратное значение по модулю п! Можно использовать два метода. Во-первых, обратное значение по модулю п можно вычислить с помощью алгоритма Евклида. Иногда этот метод называют расширенным алгоритмом Евклида. Вот как выглядит этот алгоритм на языке С ++: #с!е€±пе ±зЕVеп(x) ((х & 0x01) — 0) #с1е^1пе 1з0с1с1(х) (х & 0x01) #с!е1:±пе зкар(х,у) (хА= у, уА= х, хА= у) ■уо±с1 Ех-ЬВ±пЕис1±с1(±п1: *и, ±п-Ь ±пЬ *и1, ±пЪ *и2, хпЪ *иЗ) { //предупреждение: и и V будут переставлены, если и<\г ±пЪ к, Ы, Ь2, ЬЗ ; ±1: (*и < ♦V) з*гар(*и,^); ±ог (к = 0; ^зЕVеп(*и) && ^зЕVеп(*V); ++к) { *и »= 1; ★V »= 1 ; } *и1 =1; *и2 =0; *иЗ = *и; Ы = *ч; Ь2 = *и - 1; 1:3 = *тг; с1о { До { (^зЕVеп(*иЗ)) { ±± (хзОск! (*и1) || хзОйс!(*и2)) { ★и1 += *чг; *и2 += *и; } *и1 »= 1; *и2 »= 1; *иЗ »= 1; } (^зЕVеп(1:3) М *иЗ < ЬЗ) { з*гар(*и1,1:1) ; з*гар (*и2, Ъ2) ; зюар (*иЗ, 1:3) ; } } *гЫ1е (^зЕVеп(*иЗ)); *гЫ1е (*и1 < -Ы | | *и2 <1:2) { *и1 += *и2 += *и/
284 Прикладная криптография *и1 -= 11; *и2 -= 12; *иЗ -= 13; } ^Ы1е (13 > 0) ; юЪИе (*и1 >= ♦V && *и2 >= *и) { *и1 -= ★V; *и2 -= *и; } *и1 «= к; *и2 «= к; *иЗ «= к; } ша±п(1п1 агдс, сЬаг **аг^) { ±п1 а, Ь, дс<1; ±1 (агдс < 3) { сегг « "Использование: хеисИс! и V" « епс!1; ге!игп -1; } ±п! и = а!о±(а^дV[1]); ±п1 V = а!о±(а^дV[2]); ±1 (и <= 0 || V <= 0 ) { сегг « "Аргументы должны быть положительными! " « епс!1; ге!игп -2; } // предупреждение: и и V будут переставлены, если и < V Ех1В1пЕис11с1 (&и, , &а, &Ъ, &дсс!) ; сои! « а «" * " « и « " + (-" « Ь « ") * " « V « " « " « дсс! « епс!1; ±1 (дсс! == 1) сои! « "Обратное значение " « V « " тос! " « и « " равно И « и - Ь « епс!1; ге!игп 0; } Я не стану доказывать, что этот алгоритм работает, или приводить его теоретическое обоснование. Подробности можно найти в [863] или любой рекомендованной выше работе по теории чисел. Алгоритм итеративен и для больших чисел может исполняться медленно. Кнут показал, что среднее число выполняемых алгоритмом операций деления равно: 0.843 *1о§2(ю) +1.47
ГЛАВА 11. Математические основы 285 Вычисление коэффициентов Алгоритм Евклида можно использовать и для разрешения следующего класса задач: задан массив т переменных хх, х2..., хт, требуется найти массив т коэффициентов, щ и2..., ит, таких, что щ *Х\ +... + ит *хт, = 1. Малая теорема Ферма Если т - простое число, и а не кратно т, то малая теорема Ферма утверждает, что: ат~х = 1 (шоб т) (Пьер де Ферма (Пегге бе Регша(), французский математик, 1601—1665). Описываемая теорема не имеет ничего общего с его знаменитой теоремой). Функция Эйлера Известен еще один метод вычисления обратного значения по модулю п, однако его не всегда возможно использовать. Приведенной системой вычетов по модулю п называют подмножество полной системы вычетов, члены которого взаимно просты с п. Например, приведенную систему вычетов по модулю 12 составляют числа {1, 5, 7, 11}. Если п - простое число, в приведенную систему вычетов по модулю п входит всё множество чисел от 1 до п- 1. Для любого п, не равного 1, число 0 никогда не входит в приведенную систему вычетов. Функция Эйлера (Еи1ег 1оИеп1 /ипсИоп), которую иногда называют функцией «фи» Эйлера и записывают как ср(п), указывает число элементов в приведенной системе вычетов по модулю п. Иными словами, (р{п) - это количество положительных целых чисел, меньших п и взаимно простых с п (для любого п, большего 1). (Леонард Эйлер (ЬеопЬагс! Еи1ег), швейцарский математик, 1707—1783). Если п - простое число, то (р(п) = п-1. Если п=рд, где ряд- простые числа, то <р(п) = (р-\)(д-\). Эти числа используют в некоторых алгоритмах с открытым ключом, и вот почему. В соответствии с обобщением Эйлера малой теоремы Ферма, если НОД {а, п) - 1, то: а^ той п = 1 Теперь нетрудно вычислить а1 пюб п: х = то(] п Например, каково число, обратное 5 по модулю 7? Так как 7 - простое число, р( 7) = 7-1 = 6. Итак, число, обратное к 5 по модулю 7, равно: 56-1 той 7 = 55 тоб 7 = 3
286 Прикладная криптография Эти методы вычисления обратных значений можно перенести на более общую задачу нахождения х (если НОД {а, п) =1): (а * х) той п = Ь Используя обобщение Эйлера, решаем: х = (Ь*а9(<п)~х)то&п Используя алгоритм Евклида, находим: х = (Ь * (аГ1 той п)) той п В общем случае при вычислении обратных значений алгоритм Евклида исполняется быстрее, чем обобщение Эйлера, особенно для чисел длиной порядка 500 бит. Если НОД(а, п)* 1, не все потеряно. В этом общем случае (а*х) той п = Ь может иметь или несколько решений, или ни одного. Китайская теорема об остатках Если известно разложение числа п на простые множители, для решения полной системы уравнений можно воспользоваться Китайской теоремой об остатках. Основной вариант этой теоремы открыт в первом веке н.э. китайским математиком Сун Цзе. В общем случае, если разложение числа п на простые множители представляет собой Рх *р2 * ... *Рь то система уравнений (х тойр,) = аь где / = 1, 2..., I имеет единственное решение, х, меньшее п. (Обратите внимание: некоторые простые числа могут встречаться несколько раз. Например, р\ может быть равно /?2)- Иными словами число (меньшее, чем произведение нескольких простых чисел) однозначно определяется своими вычетами по модулю от этих простых чисел. Например, возьмем простые числа 3 и 5, и 14 в качестве заданного числа. 14 той 3 = 2, а 14 той 5 = 4. Существует единственное число, меньшее 3*5 = 15, с такими вычетами: 14. Два вычета однозначно определяют число. Поэтому для произвольных чисел а < р и Ь < д (где р и <7 - простые числа), существует единственное число х, меньшее такое, что: х = а (той р) и х = Ь (той д) . Чтобы найти х, сначала воспользуемся алгоритмом Евклида, чтобы определить и, такое, что: м * <7 = 1 (той р) Затем вычислим: х = (((а -Ь)*и) той р)*д + Ь
ГЛАВА 11. Математические основы 287 Вот как выглядит Китайская теорема об остатках на языке С: /* г - это количество элементов в массивахт и и; т - это массив (попарно взаимно простых) модулей и - это массив коэффициентов возвращает значение п такое, что п == и[к]%ш[к] (к=0..г-1) и п < [ш[0] *т[1] * . . . *т[г-1] */ /* Написание функции Эйлера Ъо-Ыеп-Ь () остается упражнением для читателя. */ хпЪ СЫпезе_гета1пс1ег (з±2е_Ъ г, 1пЪ *т, 1пЪ *и) { з1ге_Ь 1; 1пЪ тос!и1из; хпЪ п; тос1и1из = 1; ^ог (1=0; Кг; ++1) шос!и1из *=т[1] ; п=0 ; Ног (1=0; Кг; ++1) { п+=и[1] * тоёехр (тос!и1из/т[1],-Ьо-ЫепЪ (ш[1]) , т[1]); п %= тос1и1из; } геЪигп п; } Теорему, обратную Китайской теореме об остатках, можно использовать для решения следующей задачи: если р ид- простые числа, причем р<д, то существует единственное -т, меньшее, чем /?<?, такое что: а = х (той р), и Ь = х (тос! <?) Если а> Ь тойр, то: х = (((а - (Ь той р)) * и) той р)*д + Ь Если а < Ь той р, то: х = (((а + р - (Ь той р)) * и) той р)*д + Ь
288 Прикладная криптография Квадратичные вычеты Если р - простое число, и а больше 0, но меньше /?, то а представляет собой квадратичный вычет по модулю /?, если х2 = а (той р) для некоторых значений х. Этому требованию соответствуют не все значения. Чтобы а было квадратичным вычетом по модулю п, оно должно быть квадратичным вычетом по модулю всех простых делителей п. Например, если/?= 7, квадратичные вычеты равны 1, 2 и 4: I2 = 1 = 1 (той 7) 22 = 4 = 4 (тоё 7) З2 =9 = 2 (тоё 7) 42 = 16 = 2 (тоё 7) 52 = 25 = 4 (тоё 7) 62 = 36 = 1 (тоё 7) Обратите внимание: в этом списке каждый квадратичный вычет появляется дважды. А вот в любом из следующих уравнений не существует значений х, удовлетворяющих этим уравнениям: х2 = 3 (той 7) х2 =5 (той 7) х2 =6 (той 7) Числа 3, 5 и 6 являются квадратичными невычетами по модулю 7. Хотя я это опускаю, несложно доказать, что когда р нечетно, существует ровно (р - 1)/2 квадратичных вычетов по модулю р, и столько же чисел, являющихся квадратичными невычетами по модулю р. Кроме того, если а - квадратичный вычет по модулю р, то у а есть ровно два квадратных корня, причем значение одного из корней находится между О и (р-1)/2, а второго - между (р-1)/2 и (р-1). Один из этих квадратных корней одновременно является квадратичным вычетом по модулю р. Этот корень называют главным квадратным корнем. Если п - произведение двух простых чисел, р ид, существует ровно (р- 1) (<7- 1)/4 квадратичных вычетов по модулю п. Квадратичный вычет по модулю п является полным квадратом по модулю и, поскольку чтобы быть квадратом по модулю п, вычет должен быть квадратом по модулю р и квадратом по модулю Например, существует одиннадцать квадратичных вычетов по модулю 35: 1, 4, 9, И, 15, 16, 21, 25, 29 и 30. У каждого квадратичного вычета есть ровно четыре квадратных корня.
ГЛАВА 11. Математические основы 289 Символ Лежандра Символ Лежандра, обозначаемый как Ь (а, р), определен, если а - любое целое число, ар- простое число, большее, чем 2. Символ Лежандра равен 0, 1 или -1. Ь (а, р) = 0, если а делится на р. Ь{а, р) =1, если а - квадратичный вычет по модулю р. Ь (а, р) = -1, если а - квадратичный невычет по модулю р. Значение Ь (а, р) можно рассчитать следующим образом: 1(а, р) = а(р~^/2 шоб р Кроме того, можно воспользоваться следующим алгоритмом: 1. Если а = 1, то Ь (а, р) =1 2. Если а четно, то Да, р) = Ь (а/2, р) *(-1)(р ~^/8 3. Если а нечетно и аФ 1, то Да, р) = Д/? тоба, а) * (-1)(а“1Х/7'1)/4 Обратите внимание, что этот метод служит также эффективным способом определения, является ли а квадратичным вычетом по модулю р (если р - простое число). Символ Якоби Символ Якоби, обозначаемый как У(а, п) представляет собой обобщение символа Лежандра на составные модули. Символ Якоби определен для любого целого значения а и любого нечетного целого значения п. Эта функция еще появится при проверке чисел на простоту. Символ Якоби является функцией на множестве приведенных вычетов дели¬ телей п и может быть вычислен по различным формулам [1412]. Вот один из способов: Определение 1: Символ ^ {а, п) определен, только если п нечетно. Определение 2: 7(0, л) = 0. Определение 3: Если п - простое число, то символ Якоби 7 (а, и) = 0, если а делится на п. Определение 4: Если п - простое число, то символ Якоби 7 (а, п) = \, если а - квадратичный вычет по модулю п. Определение 5: Если п - простое число, то символ Якоби 7(а, л) = -1, если а - квадратичный невычет по модулю п. Определение 6: Если п - составное число, то символ Якоби ^(а,п) = ^(а,р])*...*^(а,рт), где рь ... , рт - это разложение п на простые множители. Следующий алгоритм позволяет рекурсивно рассчитать символ Якоби: Правило 1: 7(1, л) = 1
290 Прикладная криптография Правило 2: ^ (а * Ъ, п) = ^ (а, п) *^(Ь, п) Правило 3: 7(2, л) =1, если (п2 -1)/8четно и -1 в противном случае Правило 4: 7 (я, п) = 7 ((а тос! я), п) Правило 5: ^(а,Ъ] *Ь2)=:^(а,Ъ^)*^(а^Ь2) Правило 6: Если наибольший общий делитель а и Ь равен 1, и, кроме того, а и Ь нечетны: Правило 6а: 7 (я, Ъ) = 7 (6, я), если (я-1)(6-1)/4четно Правило 6Ь: 7(я, 6) = -7(6, а), если (я-1)(6-1)/4 нечетно Вот этот алгоритм на языке С: /* Этот алгоритм рекурсивно вычисляет символ Якоби */ 1пЬ. эасоЫ(±пЪ а, хпЬ. Ь) { ±п1: д; аззегЬ (оЫс1 (Ь)) ; (а >= Ь) а %= Ь; /* по правилу 4 */ (а == 0) геЬигп 0; /* по определению 2 */ ±1: (а == 1) геЬигп 1; /* по правилу 1 */ (а < 0) ±2 ((Ъ-1)/2 % 2 == 0) ге-Ьигп эасоЫ (-а,Ь) ; е1зе геЪигп -}асоЬ±(-а,Ъ); ±1: (а % 2 — 0) /* а четно */ (((Ъ*Ъ -1)/8) % 2 = 0) ге-Ьигп +}асоЪ±(а/2,Ь) ; е1зе ге-Ьигп -эасоЫ (а/2 ,Ь) ; /* по правилам 3 и 2 */ д = дсЫ(а,Ь); аззегЪ(осЫ (а)); /* это обеспечивается проверкой (а % 2 == 0) */ (д == а) /* Ь делится на а */ ге-Ьигп 0; /* по правилам 5,4 и определению 2 */ е1зе (д != 1) геЪигп эасоЪз. (д,Ъ) *эасоЪ± (а/д,Ъ) ; /* по правилу 2 */ е!зе (((а-1)*(Ь-1) /4) % 2 == 0)
ГЛАВА 11. Математические основы 291 геЪигп +эасоЪ± (Ъ,а) ; /* по правилу ба */ е1зе геЪигп -ЗасоЬ! (Ь,а) ; /* по правилу бЬ */ } Если заранее известно, что п - простое число, вместо исполнения алгоритма, приведенного выше, просто вычислите тоё п\ в этом случае символ 3(а, п) эквивалентен символу Лежандра. Символ Якоби нельзя использовать для определения того, является ли а квадратичным вычетом по модулю п (разумеется, кроме случая, когда п - простое число). Обратите внимание, если п) = 1 и п - составное число, то утверждение, что а является квадратичным вычетом по модулю п, не обязательно истинно. Например: •/(7,143) = ./(7,11) * ./(7,13) = (-1)(-1) = 1 Однако не существует таких целых чисел х9 что х2 = 7 (тоё 143). Целые числа Блюма Если р и # - два простых числа, сравнимые с 3 по модулю 4, то п - рд иногда называют целым числом Блюма (В1ит). Если п - это целое число Блюма, у каждого квадратичного вычета есть ровно четыре квадратных корня, один из которых тоже является квадратом - это главный квадратный корень. Например, главный квадратный корень 139 тоё 437 равен 24. Остальные три корня равны 185,252 и 413. Образующие Если р - простое число, и § меньше, чем р9 то § называется образующей по модулю р9 если для каждого числа Ь от 1 до р - 1 существует такое число а, что §а = Ъ (тоё р). Иногда § называют также примитивным корнем по модулю р. Например, если р = 11, то 2 - это образующая по модулю 11: 210 = 1024 в 1 (той 11) 21 =2 = 2 (тос! 11) 28 = 256 = 3 (тос! 11) 22=4 = 4(тос111) 24 =16 = 5(то<!11) 29 =512 = 6(то<!11) 27 =128 = 7(тос111)
292 Прикладная криптография 23 =8 = 8 (тос! 11) 26 = 64 = 9 (тос! 11) 25 =32 = 10 (тос! 11) Каждое число от 1 до 10 может быть представлено как 2° (той р). Для значения р= 11 образующими являются числа 2, 6, 7 и 8. Другие числа не являются образующими. Например, образующей не является число 3, поскольку не существует решения для: 3"= 2 (тос! 11) В общем случае, установить, является ли данное число образующей, нелегко. Однако задача упрощается, если известно разложение р- 1 на множители. Пусть д2-.-, Яп - это различные простые множители р- 1. Чтобы проверить, является ли число § образующей по модулю р, вычислите: тос} р для всех значений я~Я\> я*-* Яп- Если это число равно 1 для некоторого значения то # не является образующей. Если для всех значений ц рассчитанное значение не равно 1, то % - образующая. Пусть, например, р= 11. Простые множители /7—1 = 10 равны 2 и 5. Чтобы определить, что число 2 - образующая, вычислим: 2(|,_,)/5 (той 11) = 4 2(п_1)/2 (той 11) = 10 Ни один из ответов не равен 1, поэтому 2 - это образующая. Теперь проверим, является ли образующей число 3: 3(П'1)/5(той11) = 9 3(1,-,)/2 (той 11) = 1 Следовательно, 3 - это не образующая. При необходимости найти образующую по модулю р просто наугад выбирайте числа от 1 до р - 1 и проверяйте, не является ли оно образующей. Образующих достаточно много, поэтому один из них вы, скорее всего, найдете быстро. Вычисления в поле Галуа Не пугайтесь, все это мы уже только что делали. Если п - простое число или степень большого простого числа, мы получаем то, что математики называют конечным полем. В честь этого факта мы используем р вместо п. В действительности этот тип конечного поля настолько замечателен, что математики дали ему собственное имя - поле Галуа, обозначаемое как СР(р). (В честь Эвариста Галуа (Еуапз1е Оа1о1з), французского
ГЛАВА 11. Математические основы 293 математика, жившего в девятнадцатом веке и значительно продвинувшего теорию чисел, прежде чем в возрасте 20 лет погиб на дуэли). В поле Галуа определены операции сложения, вычитания, умножения и деления на ненулевые элементы. Существует единичный элемент сложения - 0, и умножения - 1. Для каждого ненулевого числа существует единственное обратное число (это было бы не так, если бы р не было простым числом). Выполняются коммутативный, ассоциативный и дистрибутивный законы. Математика поля Галуа широко используется в криптографии. В нем работает вся теория чисел, в поле содержатся числа только конечного размера, при делении отсутствуют ошибки округления. Многие криптосистемы основаны на СР(р\ где р - большое простое число. Чтобы дополнительно усложнить задачу, криптографы используют также арифметику по модулю неприводимых многочленов степени п, коэффициентами которых служат целые числа по модулю д, где ц - простое число. Эти поля называют СР{<$*). Вся арифметика выполняется по модулю р (х), где р (х) - неприводимый многочлен степени п. Математическая теория, стоящая за всем этим, далеко выходит за рамки этой книги, хотя мы и рассмотрим ряд криптосистем, использующих ее. Если вы хотите попробовать работу с неприводимыми многочленами, то ОР(23) включает следующие элементы: 0, 1, х, х + 1, х2; х2 + 1, х2 + х, х2 + х + 1. В работе [421] приведен алгоритм, удобный для реализации параллельных вычислений обратных значений в ОР{2"). При обсуждении многочленов термин «простое число» заменяется термином «неприводимый многочлен». Многочлен называют неприводимым, если его нельзя представить как произведение двух других многочленов (конечно, кроме 1 и самого многочлена). Многочлен х2 + 1 неприводим над целыми числами, а многочлен х3 + 2х2 + х приводим, поскольку может быть представлен как х (х + 1)(х + 1). Многочлен, который в данном поле является образующей, называют примитивным, все его коэффициенты взаимно просты. Мы вернемся к примитивным многочленам, когда будем обсуждать регистры сдвига с линейной обратной связью (см. раздел 16.2). Вычисления в ОР(2п) можно быстро реализовать аппаратно с помощью регистров сдвига с линейной обратной связью. По этой причине вычисления над ОР(2") часто выполняются быстрее, чем вычисления над СР(р). Так как возведение в степень в СР(2") гораздо эффективнее, то эффективнее и вычисление дискретных логарифмов [180, 181, 368, 379]. Дополнительную информацию по этому вопросу можно найти в [140]. Для поля Галуа ОР(2п) криптографы любят использовать в качестве модулей трехчлены р(х) = х"+х+1, так как длинная строка нулей между коэффициентами при х" и х позволяет просто реализовать быстрое умножение по модулю [183]. Многочлен должен быть примитивным, в противном случае математика работать не будет. Многочлен хп + х + 1 примитивен для следующих значений л, меньших чем 1000 [1649, 1648]: 1, 3, 4, 6, 9, 15, 22, 28, 30, 46, 60, 63, 127, 153, 172, 303, 471, 532, 865, 900 Существуют аппаратные реализации СР(2127), где р(х) =х127+ х + 1 [1631, 1632, 1129]. В [147] обсуждается эффективная архитектура аппаратуры возведения в степень для СР( 2").
294 Прикладная криптография 11.4. Разложение на множители Разложить число на множители - значит найти его простые множители. 10 = 2*5 60 = 2*2*3*5 252601=41*61*101 2пз-1 = 3391*23279*65993*1868569*1066818132868207 Задача разложения на множители (факторизации) - одна из древнейших в теории чисел. Этот процесс несложен, но занимает много времени. Пока дела обстоят именно так, но уже произошел ряд сдвигов в этом искусстве. В настоящее время лучшим алгоритмом является: Решето числового поля (ШтЬег Пе1с1 81еуе - 1ЧР8) [953] (см. также [952, 16,279]). Общее решето числового поля - самый быстрый известный алгоритм разложения на множители чисел со 110 и более десятичными цифрами [472, 635]. В первоначальном виде алгоритм был непрактичен, но за недавние несколько лет последовательно доработан [953]. Алгоритм ЫР8 все еще слишком нов, чтобы бить рекорды разложения на множители, но скоро все переменится2. Ранняя версия использовалась для разложения на множители девятого числа Ферма: 2512 + 1 [955,954]. Приведем и другие алгоритмы, вытесненные КР8: Квадратичное решето ((Зиабгабс 81еуе - (^8) [1257, 1617, 1259]. Это самый быстрый из известных алгоритмов разложения на множители чисел, длиной менее 110 десятичных разрядов [440]. В настоящее время алгоритм С>8 широко используется. Более скоростная версия этого алгоритма называется множественным полиномиальным квадратичным решетом [1453, 302]. Самая быстрая версия называется двойной вариацией множественного полиномиального квадратичного решета с большим простым числом. Метод эллиптических кривых (ЕШрбс Сигуе МеЙюб - ЕСМ) [957, 1112, 1113]. Этот метод использовался для поиска не более чем 43-разрядных множителей. Алгоритм Монте-Карло Полларда [1254, 248]. (Этот алгоритм также приведен у Кнута, том 2, стр. 370 [863]). Алгоритм непрерывных дробей [1123, 1252, 863]. Этот алгоритм непригоден по времени исполнения. Пробное деление. Этот самый старый алгоритм разложения на множители включает проверку каждого простого числа, меньшего или равного квадратному корню из раскладываемого числа. В качестве хорошего введения в различные алгоритмы разложения на множители, кроме №8, можно обратиться к работе [251]. Алгоритм №8 лучше всего рассмотрен в [953]. 2 Уже. См. раздел 7.2. - Прим. ред.
ГЛАВА 11. Математические основы 295 К более старым работами относятся [505, 1602, 1258]. В [250] можно найти сведения о параллельном разложении на множители. Если на множители раскладывается число и, то эвристическое время исполнения самых быстрых версий алгоритма С)8 возрастает асимптотически: е(1+0(1))0п(п))<,'2»(1п(1п(/.)))о/2) Алгоритм ЫР8 намного быстрее; эвристическая оценка времени его исполнения такова: (1.923+0(1)) (1п (и))(17 3) (1п (1п (л)))(213) В 1970 году большой новостью стало разложение на множители 41-разрядного трудного числа [1123]. («Трудным» называют такое число, у которого нет малых множителей, и которое не обладает специальной формой, позволяющей упростить процесс разложе¬ ния). Десять лет спустя разложение в два раз более длинного числа потребовало всего нескольких часов работы компьютера Сгау [440]. В 1988 году Карл Померане (Саг1 Ротегапсе) спроектировал устройство для разложения на множители на базе обычных микросхем УЬ81 [1259]. Размер числа, которое можно разложить, зависел только от размеров устройства. Однако устройство так и не было построено. В 1993 году с помощью алгоритма квадратичного решета было разложено на множители 120-разрядное трудное число. Расчеты, занявшие 825 М1Р8-лет, были выполнены за три месяца в реальном времени [463]. Другие результаты приведены в [504]. В настоящее для разложения на множители используют компьютерные сети [302, 955]. Для разложения 116-разрядного числа Аржен Ленстра (Афп Ьепз1га) и Марк Манасс (Магк Мапаззе) в течение нескольких месяцев использовали время простоя массива компьютеров, разбросанных по всему миру, что составило 400 М1Р8-лет. В марте 1994 года с помощью двойной вариации множественного полиномиального алгоритма <38 [66] группа математиков во главе с Ленстрой разложила на множители 129-разрядное (428-битовое) число. Вычисления выполнялись добровольцами по Интернету - в течение восьми месяцев трудились 600 человек и 1600 компьютеров, возможно, самый крупный в истории многопроцессорный конгломерат. Трудоемкость вычислений находилась в диапазоне от 4000—6000 М1Р8-лет. Компьютеры соединялись по электронной почте, пересылая свои результаты в центральное хранилище, где выполнялся окончательный анализ. В этих вычислениях использовались алгоритм (38 и теория пятилетней давности. Алгоритм №8 мог бы ускорить выполнение расчетов раз в десять [949]. Авторы [66] утверждают, что «...широко используемые 512-битовые модули К8А может вскрыть организация, способная затратить несколько миллионов долларов и подождать несколько месяцев». По оценкам авторов, разложение 512-битового числа в 100 раз более трудоемко при использовании той же техники и только в 10 раз сложнее при использовании алгоритма ОТ8 и современной техники [949]. С целью развития искусства разложения на множители компания К8А Оа1а 8есигйу, 1пс. в марте 1991 года объявила о программе Я8А Рас(огш§ СЬа11еп§е (состязание Я8А по разложению на множители) [532]. Состязание заключается в разложении на множители ряда трудных чисел, каждое из которых равно произведению двух простых чисел
296 Прикладная криптография примерно одинакового размера. Каждое простое число было выбрано сравнимым с 2 по модулю 3. Всего было предложено 42 числа, по одному числу в диапазоне 100—500 разрядов с шагом 10 разрядов (плюс одно дополнительное 129-разрядное число). На время написания этой книги с помощью алгоритма С>8 были разложены на множители К8А-100, К8А-110, Я8А-120, и Я8А-129. Следующим (с помощью ИР8) может быть разложение Я8А-130, или чемпионы по разложению на множители сразу возьмутся за Я8А-1403. Данная область быстро развивается. Развитие техники разложения на множители трудно экстраполировать, поскольку невозможно предсказать развитие математической теории. До открытия МР8 многие считали, что любой метод разложения на множители не может асимптотически стать быстрее С)8. Но они ошиблись. Дальнейшее развитие ИР8, по-видимому, будет выражаться в форме снижения константы 1.923. Для ряда чисел специальной формы, таких, как числа Ферма, значение константы приближается к 1.5 [955, 954]. Если бы для трудных чисел, используемых в современной криптографии, константу тоже можно было снизить до этого уровня, то уже сегодня можно было бы раскладывать на множители 1024-битовые числа. Один из путей уменьшения константы - поиск лучших способов представления чисел в виде многочленов с малыми коэффициентами. Пока еще эта задача не изучалась достаточно эффективно, но возможно решающий успех уже близок [949]. Последние результаты программы Я8А Рас1опп§ СЬа11еп§е можно узнать, отправив запрос по электронной почте по адресу сЬа11еп§е-тГо@Г5а.сот. Квадратные корни по модулю п Если п - произведение двух простых чисел, то возможность расчета квадратных корней по модулю л в вычислительном отношении эквивалентна возможности разложения числа л на множители [1283, 35, 36, 193]. Иными словами, тот, кто знает простые множители числа л, может без труда вычислить квадратные корни любого числа по модулю л. В противном случае вычисления окажутся такими же трудными, что и разложение числа л на простые множители. 11.5. Генерация простых чисел Для исполнения алгоритмов с открытым ключом нужны простые числа. В любой достаточно крупной сети их нужно множество. Прежде чем обсуждать математику генерации простых чисел, я отвечу на несколько очевидных вопросов. ✓ Если каждому пользователю необходимо собственное простое число, не иссякнет ли их запас? Нет. В действительности существует около 10151 простых чисел длиной от 1 до 512 бит включительно. Для чисел, близких л, вероятность произвольно выбранному числу оказаться простым числом, равна 1/1п л. Поэтому полное число простых чисел, меньших л, равно л/(1п л). Как известно, во Вселенной всего 1077 атомов. Если бы для каждого атома Вселенной с Начала Времен каждую микросекунду требовался бы миллиард простых чисел, понадобилось бы только Ю109 простых чисел, причем в запасе осталось бы еще примерно 10151 простых чисел. 3 На 2001 г. все эти числа, а также Я8А-155, факторизованы. - Прим. ред.
ГЛАВА 11. Математические основы 297 ✓ Что если два человека случайно выберут одно и то же простое число? Этого не случится. При выборе из 10151 простых чисел вероятность совпадения значительно меньше, чем вероятность случайного возгорания вашего компьютера в тот же момент, когда вы выиграете в лотерею. ✓ Если кто-то создаст базу данных всех простых чисел, может ли он использовать эту базу данных для вскрытия алгоритмов с открытым ключом? Нет. Если бы вы хранили 1 Гбайт информации на устройстве, весящем один грамм, то список простых чисел размером до 512 бит включительно весил бы столько, что масса хранилища превысит предел Чандрасекара, и оно коллапсирует в черную дыру. Так что в любом случае вы не сможете извлечь данные. Но если разложение на множители столь трудоемко, как может быть простой задача генерации простых чисел? Дело в том, что установить простоту числа гораздо проще, чем разложить его на множители. Генерация случайных чисел с последующей попыткой их разложения на множители - это тупиковый путь поиска простых чисел. А правильный путь - это генерация случайных чисел и последующая проверка, не являются ли они простыми. Существуют различные вероятностные тесты, определяющие с заданной степенью достоверности факт простоты числа. Если «степень достоверности» будет достаточна, то такие тесты достаточно надежны. Я слышал, что простые числа, сгенерированные подобным методом, называют «простыми числами промышленного сорта». Эти числа вероятно просты с контролируемой низкой вероятностью ошибки. Допустим, один тест может ошибаться один раз из 250. Это значит, что с вероятностью 1/1015 тест признает простым составное число. (Простое число никогда не будет объявлено составным при тестировании). Если по какой-то причине понадобится большая достоверность простоты числа, можно установить меньший уровень вероятности ошибки. С другой стороны, если вы установите вероятность ошибочного прохождения теста составным числом в 300 миллионов раз меньшей вероятности выигрыша главного приза в государственной лотерее, можете больше не беспокоиться о возможности ошибки. Обзоры последних исследований в этой области можно найти в [1256, 206]. Другие полезные сведения можно найти в работах [1490, 384, 11, 19, 626, 651, 911]. Тест Содовея-Штрассена Роберт Соловей (КоЪеП 8о1оуау) и Фолькер Штрассен (Уо1кег 81газзеп) разработали алгоритм вероятностного тестирования простоты числа [1490]. Для проверки простоты числа р в этом алгоритме используется символ Якоби: 1. Выберите случайное число а, меньшее р. 2. Если НОД (а,р)ф 1, то р — составное число и не проходит тест. 3. Вычислите у = а^“1)/2 той р. 4. Вычислите символ Якоби ^ (а, р). 5. Если^Ф^(а,р), то числор определенно не простое.
298 Прикладная криптография 6. Если^ = ^ (а, р), вероятность того, что число р не является простым, не превышает 50%. Число а, которое не указывает явно, что р не относится к простым числам, называется свидетелем. Если р - составное число, вероятность случайному числу оказаться свиде¬ телем составляет не менее 50%. Повторите эту проверку / раз с I различными значениями а. Вероятность преодоления всех I тестов составным числом не превышает 1/2'. Тест Леманна Леманн (ЬеЬтапп) независимо разработал еще один, более простой тест [945]. Вот последовательность действий при проверке простоты числар: 1. Выберите случайное число а, меньшее р. 1. Вычислите а^р~^12 тоб р 2. Если а^~0/2 ф 1 или -1(тос1 р), то число р определенно не простое. 3. Если == 1 или -1(тос1 р), вероятность того, что число р не простое, не превышает 50 %. И опять же, вероятность того, что случайное число а окажется свидетелем составной природы числа р, составляет не менее 50 %. Повторите этот тест I раз. Если результат вычислений равен 1 или -1, но не всегда равен 1, то р - простое число с вероятностью ошибки 1/2'. Тест Рабина-Миддера Широко используется простой алгоритм, разработанный Майклом Рабином (М1сЬае1 ЯаЫп). В алгоритме частично использованы идеи Гэри Миллера (Сагу МШег) [1093, 1284]. По сути, это упрощенная версия алгоритма, рекомендованного 085 [1149, 1154]. Выберите для тестирования произвольное число р. Вычислите Ь - число делений р- 1 на 2 (т.е. 2Ь - это наибольшая степень числа 2, на которую делится р - 1). Затем вычислите т, такое, что р = 1 + 2Ь * т. 1. Выберите случайное число а, меньшее р. 2. Установите у = 0 и т.-ат шоб р. 3. Если г = 1 или если х = р -1, то р проходит тест и может быть простым числом. 4. Если у > 0 и 2 = 1, то р не относится к простым числам. 5. Установите у = у +1. Если у < Ъ и г Ф (р -1), установите 2 = 22 тоб р и вернитесь на этап 4. Если 2 = р-1, то р проходит тестирование и может быть простым числом. б. Если ] = Ъ и 2* р-1, то р не относится к простым числам.
ГЛАВА 11. Математические основы 299 Вероятность прохождения этого теста составным числом убывает быстрее, чем в преды¬ дущих тестах. Гарантируется, что три четверти возможных значений а окажутся свиде¬ телями. Это означает, что составное число ошибочно пройдет I тестов с вероятностью не более (1/4)', где I - число итераций. Практически и эти оценки слишком пессимистичны. Для большинства случайных чисел свидетелями служат около 99.9 % возможных значений а [96]. Известны также и более точные оценки [417]. Для «-битового кандидата в простые числа (где « более 100) вероятность ошибки в одном тесте менее, чем 1 на 4«2(*/2)( *. Так, для 256-битового числа « вероятность ошибки в шести тестах не превышает 1/251. Дополнительные теоретические сведения можно найти в [418]. Практические соображения В практических приложениях генерация простых чисел выполняется быстро. 1. Сгенерируйте случайное «-битовое число р. 2. Установите старший и младший биты равными 1. (Старший бит гарантирует требуемую длину простого числа, а младший - обеспечивает его нечетность). 3. Убедитесь, что р не делится на малые простые числа: 3, 5, 7, 11, и т.д. Во многих реализациях проверяется делимость р на все простые числа, меньшие 256. Наиболее надежна проверка делимости на все простые числа, меньшие 2000 [949]. Ее можно эффективно выполнить с помощью метода «колеса», описанного в [863]. 4. Выполните тест Рабина-Миллера для некоторого случайного числа а. Если р проходит тест, генерируйте другое случайное число а и повторите тест. Для ускорения вычислений выбирайте небольшие значения. Выполните пять тестов [651]. (Возможно, вам покажется достаточным и одного теста, но выполните пять). Если р не проходит один из тестов, генерируйте другое число р и попытайтесь снова. Другой путь - не генерировать случайное число р в каждом тесте, а последовательно перебирать числа, начиная со случайно выбранного числа, пока не найдется простое число. Этап 3 необязателен, но желателен. Проверка делимости случайного нечетного числа р на 3, 5 и 7 отсекает 54 % нечетных чисел еще до этапа 4. Проверка делимости на все простые числа, меньшие 100, отбрасывает 76 % нечетных чисел, проверка делимости на все простые числа, меньшие 256, исключает 80 % нечетных чисел. В общем случае, доля нечетных кандидатов, которые не делятся ни на одно простое число, меньшее «, равна 1.12Лп «. Чем больше тестируемое число «, тем больше предварительных вычислений нужно выполнить до теста Рабина-Миллера. Одна из реализаций этого метода на 8рагс II в среднем способна находить 256-битовые простые числа за 2.8 сек., 512-битовые простые числа - за 24.0 сек., 768-битовые простые числа-за2.0 мин., а 1024-битовые простые числа-за 5.1 мин. [918].
300 Прикладная криптография Сильные простые числа Если п - произведение двух простых чисел р и </, в качестве р ид может понадобиться использование сильных простых чисел. Такие простые числа характеризуются рядом свойств, которые усложняют разложение на множители произведения п специальными методами. В качестве таких свойств были предложены следующие [1328, 651]: ✓ Наибольший общий делитель р - 1 и д - 1 должен быть небольшим. ✓ Оба числа, р-1 и д-1, должны иметь большие простые множители, соответственно,/?' и д\ ✓ Оба числа,/?' - 1 и д’- 1, должны иметь большие простые множители. ✓ Оба числа, /?+1 и </+1, должны иметь большие простые множители. ✓ Оба числа, (р- 1)/2 и (д- 1)/2, должны быть простыми [182]. (Обратите внимание, при выполнении этого условия выполняются и два первых). Вопрос о существенности применения именно сильных простых чисел остается спорным. Эти свойства были разработаны, чтобы затруднить исполнение ряда устаревших алгоритмов разложения на множители. Однако самые скоростные алгоритмы одинаково быстры при разложении на множители любых чисел, как удовлетворяющих приведенным условиям, так и нет [831]. Лично я против генерации именно сильных простых чисел. Длина простых чисел гораздо важнее их структуры. Более того, сама структура уменьшает случайность числа и может снизить надежность системы. Но все может измениться. Могут появиться новые методы разложения на множители, которые лучше работают с числами, обладающими определенными свойствами. В таком случае снова могут потребоваться сильные простые числа. Так что заглядывайте в журналы по теоретической математике. 11.6. Дискретные логарифмы в конечном поле В качестве однонаправленной функции в криптографии нередко используют возведение в степень по модулю. Легко вычислить: ах тоб п Задача, обратная возведению в степень по модулю - вычисление дискретного лога¬ рифма. Это уже трудная задача: найти значение х для которого ах =Ь (тоб п). Например: если 3х = 15 тоб 17, тох = 6 Решения существуют не для всех дискретных логарифмов (напомню, речь идет только о целочисленных решениях). Нетрудно заметить, что у следующего уравнения нет решений:
ГЛАВА 11. Математические основы 301 3х з 7 (той 13) Еще труднее решить эту задачу для 1024-битовых чисел. Вычисление дискретных логарифмов в конечной группе Особый интерес для криптографов представляют дискретные логарифмы следующих трех групп: ✓ Мультипликативная группа полей простых чисел: СР(р) ✓ Мультипликативная группа конечных полей характеристики 2: СР(2п) •/ Группа эллиптических кривых над конечными полями Р: ЕС (Р) Стойкость многих алгоритмов с открытым ключом основана на трудности поиска дискретных логарифмов. Поэтому эта задача была глубоко изучена. Хороший подробный обзор данной задачи и ее наилучшие решения на соответствующий период времени можно найти в [1189, 1039]. Современное состояние задачи лучше всего описано в [934]. Если р - простое число, используемое в качестве модуля, сложность поиска дискретных логарифмов в СР(р) в сущности, соответствует разложению на множители числа п того же размера, где п - произведение двух простых чисел приблизительно равной длины [1378,934]. То есть: е(1+0(1))(1п(/7))(1/2>(1п(1п(/7))У1/2> Решето числового поля исполняется быстрее, эвристическая оценка его асимпто¬ тического времени выполнения: ^(1.923+0(1)) (1п(/?))°/3) (1п(1п(/>)))(2/3) Стивен Полиг (51ерЬеп РоЬП§)) и Мартин Хеллман (Магбп НеИтап) нашли способ быстрого вычисления дискретных логарифмов в СР(р) при условии, что р-1 раскладывается только на малые простые множители [1253]. По этой причине в криптографии используют только такие поля, в которых у числа р - 1 есть хотя бы один большой простой множитель. Другой алгоритм [14] вычисляет дискретные логарифмы со скоростью, сравнимой с разложением на множители. В [716] он был расширен на поля вида СР(рп). Этот алгоритм критиковался в [727] по ряду теоретических моментов. В других статьях, например, [1588] можно увидеть, насколько трудна задача в целом. Вычисление дискретных логарифмов тесно сопряжено с разложением на множители. Если вы можете решить задачу дискретного логарифмирования, вы можете и разложить на множители. (Истинность обратного никем не доказана). В настоящее время существует три метода вычисления дискретных логарифмов в поле простых чисел [370, 934, 648]: линейное решето, схема целых чисел Гаусса и решето числового поля. Интенсивные предварительные вычисления для каждого поля достаточно выполнить только один раз. Затем можно быстро вычислять отдельные логарифмы. Это может серьезно снизить надежность систем, основанных на таких полях. Важно, чтобы
302 Прикладная криптография различные приложения использовали различные поля простых чисел. Однако несколько пользователей одного приложения могут применять общее поле. В мире расширенных полей исследователи не игнорируют и СР(2п). Алгоритм предложен в [727]. Алгоритм Копперсмита (СоррегзшйЬ) позволяет за приемлемое время вычислять дискретные логарифмы в таких полях, как СР(2П1), и принципиально допускает их поиск в полях порядка СР(2Ш) [368]. В его основе лежит работа [180]. У алгоритма Копперсмита очень громоздка стадия предварительных вычислений, но во всем прочем он удачен и эффективен. Реализация менее эффективной версии этого алгоритма после семи часов предварительных вычислений требовала всего несколько секунд на вычисление каждого дискретного логарифма в поле СР(2П1) [1130, 180]. (Это поле, когда-то использовавшееся в некоторых криптосистемах [142, 1631, 1632], не обеспечивает надежную защиту). Обзор некоторых из этих результатов можно найти в [1189, 1039]. Позднее были выполнены предварительные вычисления для полей ОР{2227), 0/г(2313) и СР(2401), удалось значительно продвинуться и для поля <ЗР(2503). Эти вычисления проводились на мощном параллельном компьютере с 1024 процессорами пСиЬе-2 [649, 650]. Вычисление дискретных логарифмов в поле <ЗР(2593) все еще находится за пределами возможностей. Как и при вычислении дискретных логарифмов в поле простых чисел, для вычисления дискретных логарифмов в полиномиальном поле тоже необходимы однократные предварительные вычисления. В [520] Тахер Эль-Гам ал ь (ТаЬег Е10ата1) описывает алгоритм вычисления дискретных логарифмов в поле СР(р2).
ГЛАВА 12. Алгоритм ОЕ5 12.1. Введение Стандарт шифрования данных БЕЗ (Оа1а ЕпсгурНоп 81апс1агс1), который Национальный институт стандартизации США (АИ81) называет алгоритмом шифрования данных ЭЕА (Эа1а Епсгурбоп А1§огкЬт), а Международная организация по стандартизации 180 - алгоритмом ЭЕА-1, за 20 лет превратился во всемирный стандарт. И хотя на нем уже заметны следы одряхления, он стойко выдержал годы усилий криптоаналитиков и по- прежнему надежен по отношению ко всем противникам, кроме, возможно, самых могущественных1. Разработка стандарта В начале семидесятых годов гражданские исследования в области криптографии были крайне скудны. В этой отрасли почти не публиковались исследовательские работы. Большинство людей знали, что в своих коммуникациях военные используют специальную аппаратуру кодирования, но мало кто разбирался в криптографии как в науке. Заметными знаниями обладало Агентство Национальной Безопасности США (АНБ), но оно не признавало публично даже факт собственного существования. Покупатели не знали, что они покупают. Многие мелкие компании изготавливали и продавали криптографическое оборудование преимущественно заокеанским прави¬ тельствам. Оборудование разных производителей отличалось друг от друга и не могло взаимодействовать. Никто не знал, действительно ли какое-либо из этих устройств обеспечивает защиту, не существовало независимой организации, которая могла бы сертифицировать надежность. Вот что говорилось по этому поводу в одном из правительственных докладов [441]: Влияние различной ключевой информации и принципов работы на реальную эффективность аппаратуры зашифрования/расшифрования было (и фактически остается) неизвестным практически всем покупателям. Принятие обоснованных решений о генерации ключей, типах онлайнового или автономного режимов и т.д., соответствующих потребностям защиты покупателей, весьма затруднялось. В 1972 году Национальное бюро стандартов (Кабопа1 Вигеаи оГ 81апс1агс15 - ИВ8), ныне называемое Национальным институтом стандартов и технологии (Ка1юпа1 1пз11Ш1е оГ 81ап<3агс1з апб ТесЬпо1о§у - N181), инициировало программу защиты каналов связи и компьютерных данных. Одной из задач этой программы стояла разработка единого, стандартного криптографического алгоритма. Этот алгоритм можно было бы тести¬ ровать и сертифицировать, а реализующие его различные криптографические устройства могли бы взаимодействовать друг с другом. К тому же алгоритм мог бы быть относительно недорогим и доступным. 1 На 1995 г. - Прим. ред.
304 Прикладная криптография 15 мая 1973 года N138 опубликовало в Федеральном Регистре (Рес1ега1 Ке%1з1ег - основной документ, содержащий нормы административного права и нормы гражданско- правового представительства - Прим. перев.) требования к криптографическому алгоритму, который мог бы быть принят в качестве стандарта. Приводилось несколько критериев оценки проекта: ✓ Алгоритм должен обеспечивать высокий уровень защиты. ✓ Алгоритм должен быть детально описан и понятен. ✓ Надежность алгоритма должна опираться на ключ и не зависеть от сохранения в секрете самого алгоритма. |/ Алгоритм должен быть доступен всем пользователям. ✓ Алгоритм должен допускать адаптацию к различным применениям. ✓ Алгоритм должен допускать экономически выгодную реализацию в виде электронных устройств. ✓ Алгоритм должен быть эффективным в использовании. ✓ Алгоритм должен предоставлять возможности проверки. ✓ Алгоритм должен быть разрешен для экспорта. Реакция общественности показала, что к криптографическому стандарту наблюдается заметный интерес, но опыт в этой области чрезвычайно мал. Ни одно предложение не соответствовало предъявляемым требованиям. 27 августа 1974 года N138 опубликовало в Федеральном Регистре повторное предложение. Наконец, у Бюро появился подходящий кандидат: алгоритм под именем ЬшлГег, в основе которого лежала разработка корпорации 1ВМ начала семидесятых годов (см. раздел 13.1). В корпорации 1ВМ служила целая команда криптографов, работавшая в Кингстоне (Кт§з1оп) и Йорктаун Хайтс (Уогк1о\уп НещШз). В эту группу входили Рой Адлер (Яоу АсИег), Дон Копперсмит (Эоп СоррегзткЬ), Хорст Файстель (Ногз! Ре1з1е1), Эдна Кроссман (Ебпа Сгоззтап), Алан Конхейм (А1ап КопЬет), Карл Майер (Саг1 Меуег), Билл Ноц (ВШ N012), Линн Смит (Ьупп 8ткЬ), Уолт Тачмен (\Уак ТисЬтап) и Брайант Такерман (Вгуап! Тискегтап). Несмотря на известную сложность, работа с алгоритмом не встречала затруднений. В нем использовались только простые логические операции над небольшими группами битов; кроме того, он допускал довольно эффективную аппаратную реализацию. Бюро ИВ8 запросило у АНБ помощь в оценке стойкости алгоритма и пригодности в качестве федерального стандарта. Корпорация 1ВМ уже запатентовала алгоритм [514], но желала сделать свою интеллектуальную собственность доступной для производства, реализации и использования другими компаниями. В конце концов, ЙВ8 и 1ВМ достигли соглашения, по которому ИВ8 получало неисключительную, бесплатную лицензию на производство, использование и продажу устройств, реализующих этот алгоритм. Наконец, 17 марта 1975 года ИВ8 опубликовало в Федеральном Регистре подробные сведения об алгоритме и заявление 1ВМ о предоставлении неисключительной, бесплатной лицензии на алгоритм, а также предложило присылать комментарии по
ГЛАВА 12. Алгоритм РЕ5 305 поводу данного алгоритма [536]. В другой заметке в Федеральном Регистре от 1 августа 1975 года различным организациям и широкой общественности снова предлагалось присылать комментарии о предложенном алгоритме. И комментарии появились [721, 497, 1120]. Многих настораживало участие «невидимой руки» АНБ в разработке алгоритма. Люди опасались, что АНБ модифицирует алгоритм, вставив в него лазейку. Они жаловались, что АНБ снизило длину ключей с первоначальных 128 бит до 56 бит (см. раздел 13.1). Жаловались на внутренние режимы работы алгоритма. Многие соображения АНБ прояснились в начале девяностых годов, но в семидесятых годах они казались таинственными и тревожными. В 1976 году бюро ИВ8 провело два симпозиума по оценке предложенного стандарта. На первом обсуждались математический аппарат алгоритма и возможность встраивания лазейки [1139]. На втором симпозиуме рассматривались возможности увеличения длины ключа алгоритма [229]. Были приглашены разработчики и испытатели алгоритма, разработчики аппаратуры, поставщики, пользователи и критики. По всем отзывам симпозиумы были весьма оживленными [1118]. Несмотря на критику, 23 ноября 1976 года стандарт БЕ8 был утвержден в качестве федерального стандарта [229] и разрешен к использованию во всех несекретных правительственных каналах связи. Официальное описание стандарта, Р1Р8 РИВ 46, «Эа1а Епсгурбоп 81апсЗаг6> (Стандарт шифрования данных), было опубликовано 15 января 1977 года, и шесть месяцев спустя стандарт вступил в действие [1140]. Р1Р8 РИВ 81, «МосЗез оГ ОЕ8 Орегабоп» (Режимы работы ЭЕ8), было опубликовано в 1980 году [1143]. Р1Р8 Р11В 74, «ОиШеНпез Гог ипр1етеп1т§ апб 1Ье ИВ8 Ба1а Епсгурбоп 81апсЗагс1» (Руководство по реализации и использованию стандарта шифрования данных ИВ8), появилось в 1981 году [1142]. ИВ8 также опубликовало Р1Р8 Р11В 112, описывающий использование БЕ8 для шифрования паролей [1144], и Р1Р8 РЕ1В 113, описывающее использование ОЕ8 для проверки подлинности компьютерных данных [1145]. (Р1Р8 означает Ребега1 1пГогта1юп Ргосеззт§ 81апс1агс1 - Федеральный стандарт по обработке информации). Публикация стандарта являла беспрецедентный акт. Никогда ранее не публиковались алгоритмы, оцененные агентством АНБ. Возможно, эта публикация была следствием недопонимания между АНБ и ИВ8. АНБ полагало, что ОЕ8 будет реализовываться только аппаратно. Стандарт требовал именно аппаратную реализацию, но ИВ8 опубликовало информацию, достаточную для программной реализации ОЕ8. Неофициально АНБ охарактеризовало БЕ8 как одну из своих самых крупных ошибок. Если бы АНБ предполагало, что опубликованные подробности позволят писать программное обеспечение, оно никогда бы не согласилось на это. Для оживления криптоанализа ОЕ8 сделал больше, чем что-либо другое. Теперь исследователи получили доступ к алгоритму, который АНБ объявило надежным. Не случайно следующий правительственный стандартный алгоритм, 8клр]аск (см. раздел 13.12), был засекречен. Принятие стандарта Американский национальный институт стандартизации АИ81 одобрил ОЕ8 в качестве стандарта для частного сектора в 1981 году (АИ81 Х3.92) [50], назвав его Алгоритмом шифрования данных (Оа1а Епсгурбоп А1§огкЬт - ОЕА). А1Ч81 опубликовал стандарт
306 Прикладная криптография режимов работы ЭЕА (АИ81 Х3.106) [52], похожий на документ N138, и стандарт для шифрования в сетях, использующий БЕ8 (АИ81 Х3.105) [51]. На основе ОЕ8 две другие группы АИ81, представляющие банковские операции при розничной и оптовой торговле, разработали собственные стандарты. Банковские операции при розничной торговле предусматривают транзакции между финансовыми организациями и отдельными лицами, а банковские операции при оптовой торговле включают транзакции между финансовыми организациями. Рабочая группа АИ81 по безопасности финансовых операций при розничной торговле разработала стандарт управления РГЫ-кодами и их безопасностью (АИ81 Х9.8) [53] и другой стандарт, использующий ЭЕ8 для проверки подлинности финансовых сообщений о розничных продажах (АИ81 Х9.19) [56]. Эта группа разработала и проект стандарта защиты системы распределения ключей (АИ81 Х9.24) [58]. Рабочая группа АИ81 по безопасности финансовых организаций при оптовой торговле разработала собственный набор стандартов проверки подлинности сообщений (АИ81 Х9.9) [54], управления ключами (АИ81 Х9.17) [55, 1151], шифрования (АИ81 Х9.23) [57] и стойкой аутентификации личностей и узлов (АЫ81 Х9.26) [59]. Американская ассоциация банкиров разрабатывает необязательные стандарты для финансовой отрасли. Она опубликовала стандарт, рекомендующий ЭЕ8 для шифрования [1], и еще один стандарт для управления криптографическими ключами [2]. До появления в 1987 году закона о защите компьютерной информации (СотрЩег 8есип1у Ас!) за разработку федеральных стандартов в области телекоммуникаций отвечало Управление служб общего назначения (Оепега1 8егУ1сез АбгшшзЦабоп - 08А), а с этого момента ответственность перешла к Т418Т. Управление С8А опубликовало три стандарта, использующих ОЕ8: два определяли требования к общей безопасности и возможности взаимодействия (Федеральный стандарт 1026 [662] и Федеральный стандарт 1027 [663]) и один для факс-аппаратов группы 3 (Федеральный стандарт 1028 [664]). Казначейство издало стратегические директивы, требующие, чтобы подлинность всех сообщений о переводе электронных финансовых средств удостоверялась с помощью ЭЕ8 [468, 470]. Кроме того, оно разработало основанный на ЭЕ8 критерий, которому должны удовлетворять все устройства аутентификации [469]. 180 сначала проголосовала за одобрение БЕ8, называемого в ее интерпретации БЕА-1, в качестве международного стандарта, а затем решила не заниматься криптографическими стандартами. Однако в 1987 году группа 180, занимающаяся международными стандартами в области оптовой торговли, применила ЭЕ8 в международном стандарте проверки подлинности [758] и для управления ключами [761]. Кроме того, ЭЕ8 используется в качестве австралийского банковского стандарта [1497]. Аттестация и сертификация оборудования РЕ5 Согласно стандарту ЭЕ8, аттестацией реализаций ЭЕ8 занимается №8Т. Аттестация подтверждает соответствие стандарту данной реализации. До 1994 года Ш8Т проверял только аппаратные и программно-аппаратные реализации - пока стандарт запрещал программные реализации. На март 1995 года были аттестованы 73 различных реализаций.
ГЛАВА 12. Алгоритм РЕ5 307 Кроме того, М8Т разработал программу сертификации на соответствие АК81 Х9.9 и Р1Р8 ИЗ устройств аутентификации. На март 1995 года было сертифицировано 33 различных продукта. Казначейство использует собственную дополнительную процедуру сертификации. У №8Т также есть программа проверки аппаратуры на соответствие требованиям АИ81 Х9.17 к управлению ключами при оптовой торговле [1151], на март 1995 года было сертифицировано четыре продукта. События 1987 года В стандарте ЭЕ8 оговаривается, что он будет пересматриваться каждые пять лет. В 1983 году ЭЕ8 был повторно сертифицирован без всяких проблем. 6 марта 1987 года в Федеральном Регистре ЫВ8 попросило прокомментировать предложения на следующие пять лет. ЫВ8 предложило на обсуждение следующие три альтернативы [1480, 1481]: вновь подтвердить стандарт на следующие пять лет, отказаться от стандарта или пересмотреть применимость стандарта. 1ЧВ8 и АНБ пересмотрели стандарт. На этот раз АНБ было задействовано в большей степени. Благодаря подписанной президентом Рейганом директиве N800-145, АНБ получило право вето на деятельность ИВ8 в области криптографии. Первоначально АНБ объявило, что оно не сертифицирует стандарт повторно. Проблема была не в том, что ОЕ8 действительно был взломан, и даже не в том, что он, возможно, был взломан. По-видимому, предполагалось, что он вот-вот будет взломан. Вместо стандарта ОЕ8 агентство АНБ предложило коммерческую программу поддержки компьютерной безопасности С0М8ЕС (Соштегс1а1 С0М8ЕС ЕпбогзетеЩ Рго^гат - ССЕР), которая, по существу, представляла собой набор алгоритмов для замены 0Е8 [85]. Эти разработанные АНБ алгоритмы не публиковались и были доступны только в виде защищенных от взлома СБИС (см. раздел 25.1). Это предложение было отвергнуто. Было отмечено, что ЭЕ8 широко используется в бизнесе (особенно в финансах) и приемлемой альтернативы не существует. Отказ от стандарта оставил бы многие организации без защиты данных. После длительных споров ОЕ8 был вновь утвержден в качестве правительственного стандарта США до 1992 года [1141]. ИВ8 решило, что ОЕ8 никогда больше не будет сертифицирован снова [1480]. События 1993 года Никогда не говори «никогда». В 1992 году альтернативы алгоритму ОЕ8 все еще не было. Бюро ИВ8, называемое теперь N181, снова предложило в Федеральном Регистре прокомментировать ОЕ8 [540]: Цель этого предложения заключается в том, чтобы объявить о предстоящей оценке адекватности стандарта задаче защиты компьютерных данных на современном уровне. Промышленности и общественности предлагаются три следующих варианта решения для Р1Р8 46-1. Комментарии должны содержать оценку стоимости (последствия) и преимущества этих вариантов: ✓ Повторно принять стандарт на следующие 5 (пять) лет. Национальный институт стандартов и технологии продолжит сертификацию аппаратуры, реализующей стандарт. Р1Р8 46-1 будет и в дальнейшем оставаться
308 Прикладная криптография единственным признанным методом защиты несекретных компьютерных данных. ✓ Отказаться от стандарта. Национальный институт стандартов и техно¬ логии более не будет поддерживать стандарт. Организации могут продолжать использовать существующую аппаратуру, реализующую стандарт. Заменяя йЕЗ, Л//5Т издаст другие стандарты. ✓ Пересмотреть положения стандарта о применимости и/или провести ревизию реализации. Такая ревизия должна включать изменения стандарта, позволя¬ ющие использовать как аппаратные, так программные и реализации йЕЗ, использовать ОЕ5 итеративно в определенных приложениях, использовать альтернативные алгоритмы, признанные и зарегистрированные Ы/ЗТ. Срок принятия предложений истек 10 декабря 1992 года. Согласно Рэймонду Каммеру (Яаушопс1 Катшег), в тот период директору №8Т [812]: В прошлом году Л//5Г формально предложил присылать комментарии по поводу повторной сертификации йЕЗ. Рассмотрев поступившие предложения и другие технические источники, я собираюсь рекомендовать министру торговли повторную сертификацию йЕЗ еще на пять лет. Я также собираюсь предложить министру, чтобы, объявляя о повторной сертификации, мы сформулировали наши намерения рассмотреть в течение этих пяти лет возможные альтернативы. Делая подобное заявление, мы надеемся дать людям возможность высказаться по поводу предстоящих технологических изменений. В то же время, мы должны учитывать многочисленность систем, использующих этот одобренный стандарт. Управление оценки технологий, со ссылкой на сотрудника N181 Денниса Бренстида (Оепшз Вгапз1еас1) заявляло о завершении в конце девяностых годов эры БЕ8 [1191]. Однако алгоритм был сертифицирован повторно на следующие пять лет [1150]. Наконец было разрешено сертифицировать и программные реализации ОЕ8. Хотелось бы знать, что случится в 1998 году?2 12.2. Описание ОЕ5 Алгоритм ОЕ8 представляет собой блочный шифр, предназначенный для шифрования данных 64-битовыми блоками. С одного конца алгоритма поступает 64-битовый блок открытого текста, а с другого конца выходит 64-битовый блок шифртекста. ЭЕ8 относится к симметричным алгоритмам, т.е. для зашифрования и расшифрования используются одинаковые алгоритм и ключ (за исключением небольших различий в процедуре развертки ключа). Длина ключа равна 56 бит. (Ключ обычно представляется 64-битовым числом, но каждый восьмой бит используется для контроля по четности и игнорируется. Биты четности - наименьшие значащие биты в байтах ключа). Ключ, которым может служить 2 В 1998 г. N181 объявил конкурс на принятие нового стандарта со 128-битным ключом (к тому времени ОЕ8 уже был вскрыт «в лоб» с использованием распределенных вычислений через Интернет), который завершился в 2001 г. принятием АЕ8 (Ас1уапсес1 Епсгурйоп 81апс1агс1). - Прим. ред.
ГЛАВА 12. Алгоритм РЕ5 309 любое 56-битовое число, можно изменить в любой момент времени. Ряд чисел полагаются слабыми ключами, но их можно легко избежать. Секретность всецело определяется ключом. На простейшем уровне алгоритм представляет всего-навсего комбинацию двух основных методов шифрования: рассеивания и перемешивания. Фундаментальным строительным блоком ЭЕ8 является применение к тексту единичной комбинации этих методов (подстановка, а за ней - перестановка), зависящей от ключа. Такой блок называется раундом3. ЭЕ8 включает 16 раундов, одна и та же комбинация методов применяется к открытому тексту 16 раз (см. Рис. 12.1). Открытый текст Ь\ ~~^о Ко Ьг-К, я2=це/(зд) ь II ^15“^14®/(^1Ф^15) ^ (7^ , я16=ь15е/(я15Ж16) к 16 (нР) Шифртекст Рис. 12.1. Алгоритм Г)Е8 3 В русскоязычной литературе используются термины «основной шаг», «основной цикл» или просто «цикл», но мы будем переводить «гоипс!» как «раунд», чтобы не было путаницы с другими циклами. - Прим. ред.
310 Прикладная криптография В алгоритме используется только стандартная арифметика и логические операции над 64-битовыми числами, поэтому он без труда реализовывался в аппаратуре второй половины семидесятых годов. Изобилие повторений в алгоритме делает его идеальным для реализации специализированными микросхемами. Первоначальные программные реализации были довольно неуклюжи, но современные программы намного лучше. Схема алгоритма ЭЕ8 оперирует 64-битовым блоком открытого текста. После первоначальной перестановки блок разбивается на правую и левую половины длиной по 32 бита. Затем выполняется 16 раундов одинаковых действий, называемых функцией Г, в которых данные объединяются с ключом. После шестнадцатого раунда правая и левая половины объединяются, и алгоритм завершается заключительной перестановкой (обратной к первоначальной). На каждом раунде (см. Рис. 12.2) биты ключа сдвигаются, а затем из 56 битов ключа выбираются 48 битов. Правая половина данных увеличивается до 48 битов путем пере¬ становки с расширением, складывается операцией ХОЯ с 48 битами смещенного и переставленного ключа, проходит через 8 8-блоков, образуя 32 новых бита, и переставля¬ ется снова. Эти четыре операции и выполняются функцией Г. Затем результат исполнения функции Г складывается с левой половиной с помощью еще одной операции ХОЯ. В итоге этих действий появляется новая правая половина, а старая правая половина становится новой левой. Эти действия повторяются 16 раз, образуя 16 раундов алгоритма ОЕ8. Рис. 12.2. Один раунд БЕЗ
ГЛАВА 12. Алгоритм РЕ5 311 Если обозначить В, результат /-ой итерации, I, и К; - левую и правую половины X, - 48-битовый ключ для раунда /, а Г - функцию, выполняющую все подстановки, перестановки и операции ХОЯ с ключом, то раунд можно представить так: Ц - Я/_1 Д,=1М0Г(ДМ,^ Начальная перестановка Начальная перестановка (см. табл. 12.1) выполняется еще до раунда 1, при этом входной блок переставляется. Эту и все остальные таблицы этой главы, следует читать слева направо и сверху вниз. Например, начальная перестановка перемещает бит 58 в битовую позицию 1, бит 50 - в битовую позицию 2, бит 42 - в битовую позицию 3 и т.д. Таблица 12.1. Начальная перестановка 58, 50, 42, 34, 26, 18, Ю, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, зо, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1. 59, 51, 43, 35, 27, 19, П. з, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 Начальная перестановка и соответствующая заключительная перестановка не влияют на стойкость алгоритма БЕ8. (Как нетрудно заметить, эта перестановка в основном служит для облегчения побайтовой загрузки данных открытого текста и шифртекста в микросхему БЕ8. Не забывайте, БЕ8 появился раньше 16- и 32-битовых микропроцессорных шин). Так как программная реализация этой многобитовой перестановки трудна (в отличие от тривиальной аппаратной), во многих программных реализациях БЕЗ начальная и заключительные перестановки не используются. В принципе, такой алгоритм не менее стоек, чем БЕ8, однако не соответствует стандарту БЕ8, а поэтому не может называться БЕ8. Преобразования ключа Первоначально 64-битовый ключ БЕ8 сокращается до 56-битового ключа отбрасы¬ ванием каждого восьмого бита (см. табл. 12.2). Эти биты используются только для контроля четности, позволяя проверять отсутствие в ключе ошибок. После извлечения 56-битового ключа, для каждого из 16 раундов БЕ8 генерируется новый 48-битовый подключ. Эти подключи, К,, определяются следующим образом. Таблица 12.2. Перестановка ключа 57, 49, 41, 33, 25, 17, 9, 1. 58, 50, 42, 34, 26, 18, Ю, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4
312 Прикладная криптография Во-первых, 56-битовый ключ делится на две 28-битовых половины. Затем эти половины циклически сдвигаются налево на один или два бита, в зависимости от раунда. Этот сдвиг показан в табл. 12.3. Таблица 12.3. Число битов сдвига ключа в зависимости от раунда Раунд 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Число 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 После сдвига выбираются 48 из 56 битов. Поскольку при этом не только выбирается подмножество битов, но и изменяется их порядок, данная операция называется сжимающей перестановкой. В ее результате появляется набор из 48 битов. Сжимающая перестановка (называемая также перестановочной выборкой) определена в табл. 12.4. Например, бит сдвинутого ключа в позиции 33 перемещается в позицию 35 результата, а 18-й бит сдвинутого ключа отбрасывается. Таблица 12.4. Сжимающая перестановка И, 17, Н, 24, 1, 5, 3, 28, 15, 6, 21, Ю, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32 Благодаря сдвигу, в каждом подключе используется отличное от других подмножество битов ключа. Каждый бит используется приблизительно в 14 из 16 подключей, хотя не все биты используются в точности одинаковое число раз. Расширяющая перестановка Эта операция расширяет правую половину данных, от 32 бит до 48 бит. Так как при этом не просто повторяются определенные биты, но и изменяется их порядок, эта операция называется расширяющей перестановкой. Она решает две задачи: приведение размера правой половины в соответствие с ключом для операции ХОЯ и получение более длинного результата, который можно будет сжать по ходу операции подстановки. Однако основной криптографический смысл совсем в ином. За счет влияния одного бита на две подстановки зависимость битов результата от битов исходных данных возрастает быстрее. Это явление называется лавинным эффектом. Алгоритм БЕЗ спроектирован так, чтобы как можно быстрее добиться зависимости каждого бита шифртекста от каждого бита открытого текста и каждого бита ключа. Перестановка с расширением показана на Рис. 12.3. Иногда ее называют Е-блоком. В каждом 4-битовом входном блоке, первый и четвертый бит определяют по два бита выходного блока, а второй и третий биты - один бит выходного блока. В табл. 12.5 показано, какие позиции результата соответствуют разным позициям исходных данных. Например, бит входного блока в позиции 3 переместится в позицию 4 выходного блока, а бит входного блока в позиции 21 - в позиции 30 и 32 выходного блока.
ГЛАВА 12. Алгоритм РЕ5 313 Рис. 12.3. Расширяющая перестановка Хотя выходной блок больше входного, каждый входной блок генерирует уникальный выходной блок. Таблица 12.5. Расширяющая перестановка 32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, в, 9, Ю, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1 Подстановка с помошью 5-блоков После сложения сжатого ключа с расширенным блоком с помощью операции ХОК, над 48-битовым результатом выполняется операция подстановки. Подстановки производятся с помощью восьми блоков подстановки, или 8-блоков4 (зиЬзбШбоп Ьохез). У каждого 8-блока 6-битовый вход и 4-битовый выход, всего используется восемь различных 8-блоков. (Для восьми 8-блоков БЕ8 понадобится 256 байт памяти). 48 битов делятся на восемь 6-битовых подблоков. Каждый отдельный подблок обрабатывается отдельным 8-блоком: первый подблок - 8-блоком 1, второй - 8-блоком 2, и т.д. (см. Рис. 12.4). Рис. 12.4. Подстановка в 8-блоках 4 Используемый в ГОСТе русский термин - «узел замены». - Прим. ред.
314 Прикладная криптография Каждый 8-блок представляет собой таблицу из 4 строк и 16 столбцов. Элементами блока служат 4-битовые числа. По шести входным битам 8-блока определяются номера столбцов и строк, под которыми следует искать выходное значение. Все восемь 8-блоков показаны в табл.12.6. Входные биты определяют элемент 8-блока особым образом. Рассмотрим 6-битовый вход 8-блока: Ьъ Ъъ Ъъ, Ь4, Ь5 и Ь6. Биты Ъх и Ь6 объединяются, образуя 2-битовое число от 0 до 3, соответствующее строке таблицы. Средние 4 бита, с Ъ2 по Ь5, объединяются, образуя 4-битовое число от 0 до 15, соответствующее столбцу таблицы. Например, пусть на вход шестого 8-блока (т.е. биты функции ХОЯ с 31 по 36) поступает 110011. Первый и последний биты, объединяясь, образуют И, что соответствует строке 3 шестого 8-блока. Средние 4 бита образуют 1001, что соответствует столбцу 9 того же 8-блока. Элемент 8-блока 6, находящийся на пересечении строки 3 и столбца 9, - это 14. (Не забывайте, что строки и столбцы нумеруются, начиная с 0, а не с 1). Вместо 110011 подставляется 1110. Таблица 12.6. 8-блоки 8-блок 1: 14, 4, 13, 1, 2, 15, 11, 8, 3, Ю, 6, 12, 5, 9, 0, 7, 0, 15, 7, 4, 14, 2, 13, 1, Ю, 6, 12, П, 9, 5, 3, 8, 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, Ю, 5, 0, 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, Ю, 0, 6, 13, 8-блок 2: 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, Ю, 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, Ю, 6, 9, 11, 5, 0, 14, 7, 11, Ю, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15, 13, 8, Ю, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9, 8-блок 3: Ю, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, Н, 4, 2, 8, 13, 7, 0, 9, 3, 4, 6, Ю, 2, 8, 5, 14, 12, 11, 15, 1, 13, 6, 4, 9, 8, 15, 3, 0, П, 1, 2, 12, 5, Ю, 14, 7, 1, Ю, 13, 0, 6, 9, 8, 7, 4, 15, 14, з, И, 5, 2, 12, 8-блок 4: 7, 13, 14, 3, 0, 6, 9, Ю, 1, 2, 8, 5, П, 12, 4, 15, 13, 8, И, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, Ю, 14, 9, Ю, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4, 3, 15, 0, 6, Ю, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14,
ГЛАВА 12. Алгоритм РЕЗ 315 8-блок 5: 2, 12, 4, 1, 7, Ю, 11, 6, 8, 5, з, 15, 13, 0, 14, 9, 14, П, 2, 12, 4, 7, 13, 1, 5, 0, 15, Ю, 3, 9, 8, 6, 4, 2, 1, 11, Ю, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14, и, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, Ю, 4, 5, 3, 8-блок 6: 12, 1, Ю, 15, 9, 2, 6, 8, 0,' 13, 3, 4, 14, 7, 5, 11, Ю, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8, 9, 14, 15, 5, 2, 8, 12, з, 7, 0, 4, Ю, 1, 13, 11, 6, 4, 3, 2, 12, 9, 5, 15, Ю, 11, 14, 1, 7, 6, 0, 8, 13, 8-блок 7: 4, П, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, Ю, 6, 1, 13, 0, 11, 7, 4, 9, 1, Ю, 14, з, 5, 12, 2, 15, 8, 6, 1, 4, 11, 13, 12, з, 7, 14, Ю, 15, 6, 8, 0, 5, 9, 2, 6, П, 13, 8, 1, 4, Ю, 7, 9, 5, 0, 15, 14, 2, 3, 12, 8-блок 8: 13, 2, 8, 4, 6, 15, 11, 1, Ю, 9, 3, 14, 5, 0, 12, 7, 1, 15, 13, 8, Ю, 3, 7, 4, 12, 5, 6- 11, 0, 14, 9, 2, 7, Н, 4, 1, 9, 12, 14, 2, 0, 6, Ю, 13, 15, 3, 5, 8, 2, 1, 14, 7, 4, Ю, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11 Конечно же, намного проще реализовать 8-блоки программно в виде массивов с 64 элементами. Для этого понадобится перегруппировать элементы, что нетрудно. (Изменить индексы, не изменяя порядок элементов, недостаточно. 8-блоки спроек¬ тированы очень тщательно). Однако такой способ описания 8-блоков помогает понять, как они работают. Каждый 8-блок можно рассматривать как функцию подстановки 4-битового элемента: биты с Ь2 по Ь5 служат входом, а некоторое 4-битовое число - результатом. Биты Ьх и Ь6 определяются соседними блоками, они определяют одну из четырех функций подстановки, возможных в данном 8-блоке. Подстановка с помощью 8-блоков - ключевой шаг алгоритма ЭЕ8. Другие операции алгоритма линейны и легко поддаются анализу. 8-блоки нелинейны, и именно они в большей степени, чем все остальное, обеспечивают стойкость БЕ8. В результате этого шага подстановки получаются восемь 4-битовых блоков, которые вновь объединяются в единый 32-битовый блок. Этот блок поступает на вход следующего раунда - перестановки с помощью Р-блоков.
316 Прикладная криптография Перестановка с помощью Р-блоков 32-битовый выход подстановки с помощью 8-блоков перетасовывается в соответствии с Р-блоком. Эта перестановка перемещает каждый входной бит в другую позицию, ни один бит не используется дважды, и ни один бит не отбрасывается. Этот процесс называется прямой перестановкой или просто перестановкой. Позиции, в которые перемещаются биты, показаны в табл. 12.7. Например, бит 21 перемещается в позицию 4, а бит 4 - в позицию 31. Таблица 12.7. Перестановка с помощью Р-блоков 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, Ю, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25 Наконец, результат перестановки с помощью Р-блока объединяется посредством операции ХОЯ с левой половиной исходного 64-битового блока. Затем левая и правая половины меняются местами, и начинается следующий раунд. Заключительная перестановка Заключительная перестановка обратна начальной перестановке и описана в табл. 12.8. Обратите внимание: после последнего раунда ЭЕ8 левая и правая половины не меняются местами. Вместо этого объединенный блок используется как вход заключительной перестановки. В этом нет ничего особенного, перестановка половин с последующим циклическим сдвигом привела бы точно к такому же результату. Это сделано для того, чтобы алгоритм можно было использовать как для зашифрования, так и для расшифрования. Таблица 12.8. Заключительная перестановка 40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, П, 51, 19, 59, 27, 34, 2, 42, Ю, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25 Расшифрование в ЭЕ5 После всех подстановок, перестановок, операций ХОЯ и циклических сдвигов можно подумать, что алгоритм расшифрования резко отличается от алгоритма шифрования и точно так же запутан. Напротив, различные компоненты ЭЕ8 подобраны так, чтобы выполнялось очень полезное свойство: для зашифрования и расшифрования исполь¬ зуется один и тот же алгоритм. Алгоритм ЭЕ8 позволяет использовать для зашифрования или расшифрования блока одну и ту же функцию. Единственное отличие состоит в том, что ключи должны использоваться в обратном порядке. Иными словами, если в раундах зашифрования использовались ключи Къ Къ К3..., К16, то ключами расшифрования будут К16, К]5, К14..., К\.
ГЛАВА 12. Алгоритм РЕЗ 317 Алгоритм, который создает ключ для каждого этапа, тоже цикличен. Ключ сдвигается направо, а число позиций сдвига равно 0, 1,2, 2, 2, 2, 2,2, 1, 2, 2, 2, 2, 2, 2, 1. Режимы работы РЕ5 В Р1Р8 РБВ 81 определены четыре режима работы: ЕСВ, СВС, ОРВ и СРВ (см. главу 9) [1143]. Банковские стандарты АИ81 определяют для шифрования режимы ЕСВ и СВС, а для аутентификации - режимы СВС и «-битовый СРВ [52]. В мире программного обеспечения сертификация обычно не важна. Из-за своей простоты в большинстве существующих коммерческих программ используется режим ЕСВ, хотя этот режим наиболее уязвим к вскрытию. Режим СВС используется редко, несмотря на то, что он лишь незначительно сложнее, чем ЕСВ, и обеспечивает большую безопасность. Аппаратные и программные реализации РЕ5 Об эффективности аппаратных и программных реализаций алгоритма написано много [997, 81, 533, 534, 437, 738, 1573, 176, 271, 1572]. Утверждается, что самой быстрой является микросхема БЕЗ, разработанная корпорацией Бщйа1 Еяшртеп! [512]. Она поддерживает режимы ЕСВ и СВС и основана на вентильной матрице ОаАз из 50000 транзисторов. Микросхема позволяет зашифровывать и расшифровывать данные со скоростью 1 Гбит/сек, обрабатывая за секунду 16.8 миллионов блоков. Это впечатляет. Параметры ряда коммерческих микросхем БЕ8 приведены в табл. 12.9. Кажущиеся противоречия между тактовой частотой и скоростью обработки данных обусловлены конвейеризацией микросхемы, в которой может быть реализовано несколько работающих параллельно машин БЕ8. Самая популярная микросхема БЕ8 - УЬ81 6868 (ранее называвшаяся «Са1екеерег»). Она не только может выполнять шифрование БЕ8 за 8 циклов тактового генератора (лабораторные прототипы могут делать это за 4 цикла), но также выполнять тройной БЕ8 в режиме ЕСВ за 25 циклов тактового генератора, а тройной БЕ8 в режимах ОРВ или СВС - за 35 циклов. Мне это кажется невероятным, но уверяю вас, она именно так и работает. Программная реализация БЕ8 на мэйнфрейме 1ВМ 3090 может выполнить 32000 шифрований БЕ8 за секунду. На других платформах скорость ниже, но все равно весьма велика. В табл. 12.10 [603, 793] приведены фактические результаты и оценки различных микропроцессоров 1п1е1 и Мо1ого1а. Таблица 12.9. Коммерческие микросхемы ВЕ8 Производитель Микросхема Год Тактовая частота Скорость данных Дос¬ туп¬ ность АМБ Аш9518 1981 3 МГц 1.3 Мбайт/сек. Нет АМБ Аш9568 ? 4 МГц 1.5 Мбайт/сек. Нет АМБ Ат28068 1982 4 МГц 1.7 Мбайт/сек. Нет
318 Прикладная криптография Производитель Микросхема Год Тактовая частота Скорость данных Дос¬ туп¬ ность АТ&Т Т7000А 1985 ? 1.9 Мбайт/сек. Нет СЕ-Мозуз ЗурегСгур! СЕ99С003 1992 20 МГц 12.5 Мбайт/сек. Да СЕ-1п1Ъзуз ЗурегСгур! СЕ99С003А 1994 30 МГц 20.0 Мбайт/сек. Да Сгур1есЬ Сгу12С102 1989 20 МГц 2.8 Мбайт/сек Да №\\'Ьпс1§е СА20С03А 1991 25 МГц 3.85 Мбайт/сек. Да Ые\уЬпс1§е СА20С03\У 1992 8 МГц 0.64 Мбайт/сек. Да Ке\\'Ъпс1§е СА95С68/18/09 1993 33 МГц 14.67 Мбайт/сек. Да РупепЬига РСС100 ? ? 2.5 Мбайт/сек. Да ЗетарЬоге СоттишсаЦопз Коас)гиппег284 ? 40 МГц 35.5 Мбайт/сек. Да УЬ81 ТесЬпо1о«у УМ007 1993 32 МГц 200.0 Мбайт/сек. Да УЬ81 ТесЬпо1о§у УМ009 1993 33 МГц 14.0 Мбайт/сек. Да УЬ81 ТесЬпо1оау 6868 1995 32 МГц 64.0 Мбайт/сек. Да >Уез1егп 01§ка1 \УБ2001/2002 1984 3 МГц 0.23 Мбайт/сек. Нет Таблица 12.10. Скорости ИЕБ на различных микропроцессорах и компьютерах5 Процессор Скорость (в МГц) Блоков БЕЗ (в секунду) 8088 4.7 370 68000 7.6 900 80286 6 1100 68020 16 3500 68030 16 3900 80386 25 5000 68030 50 10000 68040 25 16000 68040 40 23000 5 Для сравнения, Репбит III/1 ГГц выдает более 2 ООО ООО блоков в сек. - Прим. ред.
ГЛАВА 12. Алгоритм РЕ5 319 Процессор Скорость (в МГц) Блоков 13Е8 (в секунду) 80486 66 43000 8ип ЕЬС 26000 НурегЗрагс 32000 К56000-350 53000 Зрагс 10/52 84000 ШС А1рЬа 4000/610 154000 НР9000/887 125 196000 12.3. Стойкость ОЕ5 Людей давно интересует стойкость алгоритма БЕ8 [458]. Много рассуждений было о длине ключа, числе итераций и структуре 8-блоков. 8-блоки были наиболее таинственными - какие-то константы, без видимого объяснения почему и для чего они нужны. И хотя 1ВМ утверждала, что работа алгоритма была результатом 17 человеко-лет интенсивного криптоанализа, некоторые люди опасались, что АНБ вставило в алгоритм лазейку, которая позволит без труда дешифровать перехваченные сообщения. Комитет по разведке Сената США расследовал этот вопрос в 1978 году с грифом «Совершенно секретно». Результаты работы комитета были засекречены, но по открытым итогам этого расследования с АНБ были сняты все обвинения в неуместном вмешательстве в проектирование алгоритма [1552]. «Было заявлено, что АНБ убедило 1ВМ в достаточности более короткого ключа, косвенно помогло разработать структуры 8-блоков и подтвердило, что в окончательном варианте ОЕ8, с учетом всех знаний АНБ, отсутствовали статистические или математические бреши» [435]. Но так как правительство не опубликовало подробности расследования, многих людей так и не удалось переубедить. Тачмен и Майер, криптографы 1ВМ, разрабатывавшие алгоритм ОЕ8, заявили, что АНБ не изменяло проект [841]: Их основным подходом был поиск стойких подстановок; перестановок и функций развертки ключей.... 1ВМ по просьбе АНБ засекретило информацию, касающуюся критериев выбора.... «АНБ сообщило нам, что мы самостоятельно открыли ряд секретов, уже используемых для создания их собственных алгоритмов», - объясняет Тачмен. Позднее в одной из статей Тачмен писал: «Алгоритм БЕ8 был полностью разработан сотрудниками 1ВМ. АНБ не продиктовало ни единой связи!» Тачмен подтвердил это утверждение в своем докладе по истории ОЕ8 на Национальной конференции по компьютерной безопасности (Кабопа1 Сотри1ег 8есигйу СопГегепсе) в 1992 году. С другой стороны, Копперсмит писал [373, 374]: «АНБ так же помогало 1ВМ техническими советами». А Конхейм утверждал: «Мы послали 8-блоки в Вашингтон. Они вернулись полностью переработанными. Мы проверили их, и они прошли наше
320 Прикладная криптография тестирование». На этот факт и ссылаются как на доказательство, что АНБ вставило лазейку в БЕЗ. По вопросу о каком-либо преднамеренном ослаблении БЕ8, АНБ заявило [363]: Что касается стандарта шифрования данных (БЕЗ), мы полагаем, что ответ на ваш вопрос о роли АНБ в разработке БЕЗ содержится в опубликованных итогах расследования комитета Сената по разведке, проведенного в 1978 году. В сооб¬ щении Комитета указывается, что АНБ никоим образом не исказило алгоритм, и что безопасность, предоставляемая БЕЗ для несекретных данных, с целью защиты которых он и был разработан, была более чем адекватна в течение, по меньшей мере, 5—10 лет. Короче говоря, АНБ не вносило и не пыталось вносить никаких слабостей в алгоритм йЕЗ. Но тогда почему они изменили 8-блоки? Возможно, чтобы гарантировать, что лазейка не будет встроена в БЕ8 самой 1ВМ. У АНБ не было причин доверять исследователям 1ВМ, и оно могло решить, что не исполнит до конца свой долг, если не обеспечит отсутствие лазеек в БЕ8. Замена 8-блоков и могла быть одним из способов гарантировать это. Совсем недавно новые результаты криптоанализа прояснили этот вопрос, который в течение многих лет был предметом спекуляций. Слабые ключи Из-за способа, которым получаются подключи для каждого раунда алгоритма из первоначального ключа, некоторые первоначальные ключи оказываются слабыми ключами [721, 427]. Припомните, первоначальное значение расщепляется на две половины, каждая из которых сдвигается независимо. Если все биты каждой половины равны 0 или 1, то во всех раундах алгоритма используется один и тот же ключ. Такое может произойти, если ключ состоит из одних единиц, одних нулей или одна половина ключа состоит из одних единиц, а другая - из одних нулей. Два слабых ключа обладают и другими свойствами, снижающими их стойкость [427]. В табл. 12.11 показаны четыре слабых ключа в шестнадцатеричной форме. (Не забывайте, что каждый восьмой бит - это бит четности). Таблица 12.11. Слабые ключи алгоритма ВЕЗ Значение слабого ключа (с битами четности) Фактический ключ 0101 0101 0101 0101 0000000 0000000 1Р1Р 1Р1Р 0Е0Е 0Е0Е 0000000 ррррррр Е0Е0 Е0Е0 Р1Р1 Р1Р1 ррррррр 0000000 РЕРЕ РЕРЕ РЕРЕ РЕРЕ ррррррр ррррррр Кроме того, некоторые пары ключей при шифровании преобразуют открытый текст в одинаковые шифртексты. Иными словами, один из ключей пары может расшифровать сообщения, зашифрованные другим ключом пары. Это следствие метода, используемого в БЕ8 для генерации подключей - вместо 16 различных подключей эти ключи генерируют только два различных подключа. В алгоритме каждый из этих подключей
ГЛАВА 12. Алгоритм РЕЗ 321 используется восемь раз. Такие ключи, называемые полуслабыми ключами, в шестнадцатеричной форме приведены в табл. 12.12. Таблица 12.12. Полуслабые пары ключей ИЕЗ 01РЕ 01РЕ 01РЕ 01РЕ и РЕ01 РЕ01 РЕ01 РЕ01 1РЕ0 1РЕ0 0ЕР1 0ЕР1 и Е01Р Е01Р Р10Е Р10Е 01Е0 01Е0 01Р1 01Р1 и Е001 Е001 Р101 Р101 1РРЕ 1РРЕ ОЕРЕ ОЕРЕ и РЕ1Р РЕ1Р РЕОЕ РЕОЕ 011Р ОПР 010Е 010Е и 1Р01 1Р01 0Е01 0Е01 ЕОРЕ ЕОРЕ Р1РЕ Р1РЕ и РЕЕО РЕЕО РЕЕ1 РЕЕ1 Ряд ключей генерируют только четыре подключа, каждый из которых используется в алгоритме четыре раза. Эти возможно слабые ключи перечислены в табл. 12.13. Таблица 12.13. Возможно слабые ключи йЕЗ 1Р 1Р 01 01 ОЕ ОЕ 01 01 ЕО 01 01 ЕО Р1 01 01 Р1 01 1Р 1Р 01 01 ОЕ ОЕ 01 РЕ 1Р 01 ЕО РЕ ОЕ 01 Р1 1Р 01 01 1Р ОЕ 01 01 ОЕ РЕ 01 1Р ЕО РЕ 01 ОЕ Р1 01 01 1Р 1Р 01 01 ОЕ ОЕ ЕО 1Р 1Р ЕО Р1 ОЕ ОЕ Р1 Е0 ЕО 01 01 Р1 Р1 01 01 РЕ 01 01 РЕ РЕ 01 01 РЕ РЕ РЕ 01 01 РЕ РЕ 01 01 ЕО 1Р 01 РЕ Р1 ОЕ 01 РЕ РЕ ЕО 1Р 01 РЕ Р1 ОЕ 01 ЕО 01 1Р РЕ Р1 01 ОЕ РЕ Е0 РЕ 1Р 01 Р1 РЕ ОЕ 01 РЕ 1Р 1Р РЕ РЕ ОЕ ОЕ РЕ РЕ ЕО 01 1Р РЕ Р1 01 ОЕ 1Р РЕ 01 ЕО ОЕ РЕ 01 Р1 Е0 РЕ 01 1Р Р1 РЕ 01 ОЕ 01 РЕ 1Р ЕО 01 РЕ ОЕ Р1 Е0 ЕО 1Р 1Р Р1 Р1 ОЕ ОЕ 1Р ЕО 01 РЕ ОЕ Р1 01 РЕ РЕ РЕ 1Р 1Р РЕ РЕ ОЕ ОЕ 01 ЕО 1Р РЕ 01 Р1 ОЕ РЕ РЕ 1Р ЕО 01 РЕ ОЕ Р1 01 01 01 ЕО ЕО 01 01 Р1 Р1 Е0 1Р РЕ 01 Р1 ОЕ РЕ 01 1Р 1Р ЕО ЕО ОЕ ОЕ Р1 Р1 РЕ 01 ЕО 1Р РЕ 01 Р1 ОЕ 1Р 01 РЕ ЕО ОЕ 01 РЕ Р1 ЕО 01 РЕ 1Р Р1 01 РЕ ОЕ 01 1Р РЕ ЕО 01 ОЕ РЕ Р1 01 ЕО ЕО 01 01 Р1 Р1 01 1Р 01 ЕО РЕ ОЕ 01 Р1 РЕ 1Р РЕ ЕО 01 ОЕ РЕ РО 01 01 1Р ЕО РЕ 01 ОЕ Р1 РЕ 1Р ЕО РЕ 01 ОЕ Р1 РЕ 01 01 01 РЕ РЕ 01 01 РЕ РЕ 01 РЕ РЕ 01 01 РЕ РЕ 01 1Р 1Р РЕ РЕ ОЕ ОЕ РЕ РЕ
322 Прикладная криптография 1Р Е0 Е0 1Р 0Е Р1 Р1 0Е РЕ РЕ Е0 Е0 РЕ РЕ Р1 Р1 01 РЕ Е0 1Р 01 РЕ Р1 0Е Е0 РЕ РЕ Е0 Р1 РЕ РЕ Р1 01 Е0 РЕ 1Р 01 Р1 РЕ 0Е РЕ Е0 Е0 РЕ РЕ Р1 Р1 РЕ 1Е РЕ РЕ 1Р 0Е РЕ РЕ 0Е Е0 Е0 РЕ РЕ Р1 Р1 РЕ РЕ Прежде чем порицать БЕ8 за слабые ключи, обратите внимание на то, что эти 64 ключа - лишь ничтожная доля полного набора из 72 057 594 037 927 936 возможных ключей. Если вы выбираете ключ случайно, вероятность выбрать один из слабых ключей пренебре¬ жимо мала. Если вы настоящий параноик, можете всегда проверять генерированный ключ «на слабость». Некоторые полагают, что на этот счет незачем беспокоиться. Другие утверждают, что проверка очень проста, так почему бы ее и не выполнить. Дальнейший анализ слабых и полу слабых ключей приведен в [1116]. Других слабых ключей в процессе исследований не обнаружено. Комплементарные ключи Выполним побитовое дополнение ключа, заменяя все 0 на 1, а все 1 - на 0. Теперь, если блок открытого текста зашифрован оригинальным ключом, при шифровании дополнение ключа превратит дополнение блока открытого текста в дополнение блока шифртекста. Если обозначить дополнение какх', справедливо следующее: Ек (Р)= С Ек'(Р ) - С' В этом нет ничего таинственного. На каждом этапе после перестановки с расширением подключи подвергаются операции ХОЯ с правой половиной. Прямым следствием этого факта и является приведенное свойство комплементарности (или дополнения). Это означает, что при атаке на ЭЕ8 с подобранным открытым текстом нужно проверять только половину возможных ключей: 255 вместо 256 [1080]. Эли Бихам (ЕН ВШат) и Ади Шамир (АсН 8Ьаппг) показали [172], что атака на основе известного открытого текста имеет ту же сложность, и требует не менее 233 известных открытых текстов. Остается под вопросом, можно ли полагать такое свойство слабостью, поскольку в большинстве сообщений нет комплементарных блоков открытого текста (для случайного открытого текста шансы «против» чрезвычайно велики), а пользователей можно предупредить избегать комплементарных ключей. Алгебраическая структура Все возможные 64-битовые блоки открытого текста можно отобразить на 64-битовые блоки шифртекста 264! разными способами. Алгоритм БЕ8, с его 56-битовыми ключами, предоставляет нам 256 (около 1017) таких отображений. На первый взгляд, использование многократного шифрования позволяет значительно увеличить долю возможных отображений. Но это верно, только если операция шифрования ЭЕ8 не обладает определенной алгебраической структурой.
ГЛАВА 12. Алгоритм РЕЗ 323 Если бы ОЕ8 был замкнутым алгоритмом, то для любых Кх и К2 всегда существовал бы такой Къ что: ЕК2(ЕК1(Р)) = ЕК^Р) Другими словами, операция шифрования ОЕ8 образовала бы группу, и последовательное шифрование набора блоков открытого текста ключами Кх и К2 было бы идентично шифрованию блоков ключом К3. Что еще хуже, ОЕ8 был бы уязвим к атаке «встреча посередине» с известным открытым текстом, для которого понадобилось бы только 228 операций [807]. Если бы ОЕ8 был чистым алгоритмом, то для любых Ки К2 и Х3 всегда существовал бы такой Х4, что: ЕК}(ЕК2(ЕК> (Р))) = Ек^Р) Тройное шифрование оказалось бы бесполезным. (Заметьте, что замкнутый шифр всегда чистый, но чистый шифр не обязательно замкнутый). Ряд идей по этому поводу можно найти в ранней теоретической работе Дона Копперсмита, но их недостаточно [377]. Эту проблему пытались решить многие криптографы [588, 427, 431, 527, 723, 789]. В повторяющихся экспериментах собирались «неопровержимые доказательства» того, что ОЕ8 не является группой [807, 371, 808, 1116, 809], но только в 1992 году криптографам удалось это доказать окончательно [293]. Копперсмит утверждает, что команда 1ВМ знала об этом с самого начала. Длина ключей В оригинальной заявке корпорации 1ВМ в N138 предполагалось использование 112-битовых ключей. К тому времени, когда ОЕ8 стал стандартом, длина ключей сократилась до 56 бит. Многие криптографы настаивали на большей длине ключей. Основным их аргументом была возможность лобового вскрытия (см. раздел 7.1). В 1976 и 1977 годах Диффи (01Ше) и Хеллман (НеИтап) утверждали, что специализированный параллельный компьютер для вскрытия БЕ8 стоимостью 20 миллионов долларов, сможет восстановить ключ за день. В 1981 году Диффи увеличил время поиска до двух дней, а стоимость - до 50 миллионов долларов [491]. Диффи и Хеллман утверждали, что на тот период времени вскрытие лежало за пределами возможностей любой организации, кроме тех, что сопоставимы АНБ, но к 1990 году ЭЕ8 полностью утратит надежность [714]. Хеллман [716] продемонстрировал еще один аргумент против малого размера ключа: разменивая объем памяти на время, можно ускорить процесс поиска. Он предложил вычислять и хранить 256 возможных результатов шифрования каждым возможным ключом единственного блока открытого текста. Тогда для взлома неизвестного ключа криптоаналитику потребуется только вставить блок открытого текста в поток шифрования, восстановить полученный результат и найти ключ. Хеллман оценил стоимость такого устройства вскрытия в 5 миллионов долларов. Аргументы за и против существования в каком-нибудь тайном правительственном бункере устройства вскрытия ЭЕ8 продолжают появляться. Многие указывают на то, что среднее время наработки на отказ микросхем ОЕ8 никогда не было настолько
324 Прикладная криптография большим, чтобы гарантировать работу подобного устройства. В [1278] было показано, что этого возражения более чем достаточно. Другие исследователи предлагают способы ускорения процесса и уменьшения эффекта отказа микросхем. Между тем, аппаратные реализации БЕ8 постепенно приблизились к реализации требования о миллионе шифрований в секунду, предъявляемого к специализированному устройству Диффи и Хеллмана. В 1984 году были выпущены микросхемы БЕ8, способные выполнять 256000 шифрований в секунду [533, 534]. К 1987 году были разработаны микросхемы ОЕ8, выполняющие 512000 шифрований в секунду, и стало возможным появление версии, способной проверять свыше миллиона ключей в секунду [738, 1573]. А в 1993 году Майкл Винер (МюЬае1 Мепег) спроектировал машину стоимостью 1 миллион долларов, которая может выполнить лобовое вскрытие ЭЕ8 в среднем за 3,5 часа (см. раздел 7.1). Никто открыто не заявил о создании этой машины, хоте разумно предположить, что кому-то это удалось. Миллион долларов - не слишком большие деньги для большой и даже не очень большой страны. В 1990 году два израильских математика, Бихам и Шамир, открыли дифферен¬ циальный криптоанализ, метод, который позволил оставить в покое вопрос длины ключа. Прежде чем мы рассмотрим этот метод, вернемся к некоторым другим критическим замечаниям в адрес ОЕ8. Число раундов Почему 16 раундов? Почему не 32? После пяти раундов каждый бит шифртекста является функцией всех битов открытого текста и всех битов ключа [1078, 1080], а после восьми раундов шифртекст, по сути, представляет собой случайную функцию всех битов открытого текста и всех битов ключа [880]. (Это называется лавинным эффектом). Так почему бы не остановиться после восьми раундов? В течение многих лет версии ОЕ8 с уменьшенным числом раундов успешно вскрывались. БЕ8 с тремя и четырьмя раундами был без труда взломан в 1982 году [49]. Несколькими годами позже пал ЭЕ8 с шестью раундами [336]. Дифференциальный криптоанализ Бихама и Шамира объяснил это: алгоритм ОЕ8 с любым числом раундов, меньшим 16, может быть взломан с помощью атаки с известным открытым текстом быстрее, чем с помощью лобового вскрытия. Конечно, лобовой взлом - более вероятный способ вскрытия, но интересен сам факт, что в алгоритме предусмотрено ровно 16 раундов. Проектирование 5-блоков Помимо уменьшения длины ключа, АНБ обвиняют также в подмене содержимого 8-блоков. Настаивая на подтверждении схемы 8-блоков, АНБ заявило, что детали конструкции алгоритма «чувствительны» и не могут быть опубликованы. Многие криптографы подозревали, что разработанные в АНБ 8-блоки содержат лазейку, позволяющую АНБ легко выполнять криптоанализ алгоритма. С момента появления ОЕ8 для анализа схемы и работы 8-блоков были приложены значительные усилия. В середине семидесятых годов Ьехаг Согрогабоп [961, 721] и Ве11 ЬаЪога1опез [1120] исследовали работу 8-блоков. Никаких слабостей найдено не было,
ГЛАВА 12. Алгоритм РЕЗ 325 но в обоих исследованиях обнаружены непонятные свойства. 8-блоки имеют больше свойств, общих с линейным преобразованием, чем можно было ожидать при их формировании случайным образом. Команда ВеИ ЬаЪога1опез констатировала, что 8-блоки могут содержать скрытые лазейки, а доклад специалистов Ьехаг завершался следующей фразой: В ИЕЗ были найдены структуры, вставленные, несомненно, для повышения устойчивости системы к определенным типам атак. Также были найдены структуры, которые, по-видимому, ослабили систему. С другой стороны этот доклад содержал и такое предупреждение: ...Проблема [поиска структур в 3-блоках] усложняется из-за способности человеческого сознания находить в случайных данных структуры, которые в действительности вовсе не являются структурами. На втором симпозиуме по БЕ8 АНБ раскрыло ряд критериев проектирования 8-блоков [229]. Но это не смогло снять всех подозрений, и спор продолжился [228, 422, 714, 1506, 1551]. В литературе про 8-блоки писались удивительные вещи. Последние три бита результата четвертого 8-блока могут быть получены тем же способом, что и первые путем дополнения некоторых входных битов [436, 438]. Различные, но тщательно подобранные входные данные для 8-блоков, могут давать одинаковый результат [436]. Можно получить результат одного раунда ЭЕ8, меняя биты только в трех соседних 8-блоках [487]. Шамир заметил, что элементы 8-блоков, как представляется, несколько смещены, но он не смог использовать эту смещенность для атаки [1423]. (Он упомянул об особенности пятого 8-блока, но только спустя восемь лет линейный криптоанализ воспользовался этой особенностью). Другие исследователи показали, что для получения 8-блоков с наблюдаемыми характеристиками могли использоваться общеизвестные принципы проектирования [266]. Дополнительные результаты Известны и другие попытки криптоанализа ЭЕ8. Один из криптографов искал закономерности, используя спектральные тесты [559]. Другие анализировали последовательность линейных множителей, но их атака провалилась после восьми раундов [1297, 336, 531]. В неопубликованном исследовании, выполненном в 1987 году Дональдом Дэвисом (ЭопаЫ Оау1ез), атаковался способ, с помощью которого расширяющая перестановка повторяет биты в соседних 8-блоках. Эта атака тоже сорвалась после восьми раундов [172, 429]. 12.4. Дифференциальный и линейный криптоанализ Дифференциальный криптоанализ В 1990 году Эли Бихам и Ади Шамир ввели понятие дифференциального криптоанализа [167, 168, 171, 172]. Это был новый, ранее неизвестный метод криптоанализа. Используя этот метод, Бихам и Шамир нашли способ атаки алгоритма
326 Прикладная криптография ОЕ8 с использованием подобранного открытого текста, который оказался эффективнее атаки «в лоб». Дифференциальный криптоанализ работает с парами шифртекстов, открытые тексты которых имеют определенные разности. Метод анализирует эволюцию этих разностей в процессе прохождения открытых текстов раундов БЕ8 при шифровании одним и тем же ключом. Просто-напросто выберем два открытых текста с фиксированной разностью. Можно выбрать и два произвольных открытых текста - лишь бы они удовлетворяли некоторому условию их разности. Криптоаналитику не нужно даже знать их значений. (Для ЭЕ8 термин «разность» определяется с помощью операции ХОЯ. Для других алгоритмов этот термин может определяться иначе). Затем, используя разности полученных шифртекстов, присвоим различные вероятности различным ключам. В процессе дальнейшего анализа следующих пар шифртекстов один из ключей станет наиболее вероятным. Это и есть правильный ключ. Подробности гораздо сложнее. На Рис. 12.5 представлена функция одного раунда ЭЕ8. Представьте себе пару входов, X и Х\ с разностью АХ. Выходы, У и У известны, следовательно, известна и разность между ними, АУ. Известны и расширяющая перестановка, и Р-блок, поэтому известны А А и АС. В и В' неизвестны, но их разность А В известна и равна АЛ. (Т.к. мы изучаем только разности, то две операции ХОЯ X, с А и А' взаимно нейтрализуются). Пока все просто. Фокус вот в чем: для любого заданного АА не все значения АС равновероятны. Комбинация АА и АС позволяет предположить значения битов для А ХОК X/ и А'ХОК X,. А поскольку А и А' известны, это дает нам информацию о К,. Рис. 12.5. Функция раунда БЕЗ
ГЛАВА 12. Алгоритм РЕЗ 327 Взглянем на последний раунд БЕ8. (В дифференциальном криптоанализе начальная и заключительная перестановки игнорируются. Они не влияют на атаку, а только затрудняют объяснения). Если мы сможем определить К{6, мы получим 48 битов ключа. (Не забывайте, на каждом этапе подключ состоит из 48 битов 56-битового ключа). Оставшиеся 8 битов мы можем получить лобовым методом. Дифференциальный криптоанализ даст нам Х16. Определенные разности в паре открытых текстов с высокой вероятностью вызывают определенные разности и получаемых шифртекстов. Эти разности называют харак¬ теристиками (сИагас(ешИс). Характеристики распространяются на определенное количество раундов и, в сущности, определяют прохождение этих раундов. Существуют входная разность, разность на каждом раунде и выходная разность, каждая с определенной вероятностью. Эти характеристики можно найти, создав таблицу, строки которой представляют возможные входные ХОЯ (операция ХОЯ двух различных наборов входных битов), столбцы - возможные выходные ХОЯ, а элементы - сколько раз конкретный выход ХОЯ встречается для заданного входа ХОЯ. Такую таблицу можно сгенерировать для каждого из восьми 8-блоков ЭЕ8. Например, на Рис. 12.6 (часть а) показана характеристика одного раунда. Входная разность левой части равна Ь, она может быть произвольной. Входная разность правой части равна 0. (У двух входов одинаковые правые половины, поэтому их разность равна 0). Так как на входе функции раунда нет разности, нет ее и на выходе функции раунда. Следовательно, выходная разность левой части - Ь 0 0 = I, а выходная разность правой части - 0. Это тривиальная характеристика, она истинна с вероятностью 1. На Рис. 12.6 (часть Ь) показана менее очевидная характеристика. Снова, разность Ь левых частей произвольна. Входная разность правых частей равна 0x60000000, два входа отличаются только вторым и третьим битами. С вероятностью 14/64 разность на выходе функции раунда равна Ь 0 0x00808200. Это означает, что выходная разность левой части равна Ь © 0x00808200, а выходная разность правой части - 0x60000000 (с вероятностью 14/64). Рис. 12.6. Характеристики ВЕБ
328 Прикладная криптография Различные характеристики можно объединять. Кроме того, при условии независимости раундов, вероятности можно перемножать. На Рис. 12.7 объединяются две описанных выше характеристики. Входная разность слева равна 0x00808200, а справа — 0x60000000. В конце первого раунда входная разность и результат функции раунда нейтрализуют друг друга, и выходная разность равна 0. Эта разность поступает на вход второго раунда, окончательная выходная разность слева равна 0x60000000, а справа — 0. Вероятность этой двухраундовой характеристики - 14/64. А=У А=Х А=Х А = 0 ^ = 60000000 У = 00808200 С вероятностью ^ Рис. 12.7. Двухраундовая характеристика БЕЗ Пара открытых текстов, соответствующих данной характеристике, называется правильной парой, а пара открытых текстов, не соответствующих характеристике - неправильной парой. Правильная пара подскажет правильный ключ раунда (для последнего раунда характеристики), а неправильная пара - случайный. Чтобы найти правильный ключ раунда, необходимо просто собрать достаточное число предположений. Один из подключей будет встречаться чаще, чем все остальные. Фактически правильный подключ появляется из всех возможных случайных подключей. Итак, основная дифференциальная атака на л-раундовый ЭЕ8 дает 48-битовый подключ раунда л, а оставшиеся 8 битов ключа восстанавливаются лобовым перебором. Все же остается ряд заметных проблем. Во-первых, пока вы не перейдете через некоторое пороговое значение, вероятность успеха пренебрежимо мала. То есть, пока не будет накоплен достаточный объем данных, выделить правильный подключ из шума невозможно. Кроме того, такая атака непрактична. Для хранения вероятностей 248 возможных ключей необходимо использовать счетчики, и к тому же для вскрытия понадобится слишком много данных.
ГЛАВА 12. Алгоритм РЕЗ 329 Бихам и Шамир предложили свой способ атаки. Вместо использования 15-раундовой характеристики 16-раундового ЭЕ8, они использовали 13-раундовую характеристику и ряд приемов для прохождения последних нескольких раундов. Более короткая характеристика с большей вероятностью будет работать лучше. Они также использовали некоторые хитрые математические приемы для получения потенциальных 56-битовых ключей, которые можно немедленно тестировать. Таким образом, устраняется надобность в счетчиках. Такая атака достигает успеха, как только находится правильная пара. Это позволяет избежать порогового эффекта и получить линейную зависимость вероятности успеха. Если у вас в 1000 раз меньше пар, то и вероятность успеха в 1000 раз меньше. Это звучит ужасно, но это намного лучше, чем пороговый эффект - всегда есть некоторая вероятность немедленной удачи. Результаты весьма любопытны. В табл. 12.14 проведен обзор лучших дифферен¬ циальных атак алгоритмов БЕ8 с разными числами раундов [172]. В первом столбце приведено число раундов. В следующих двух столбцах приведены количества подобранных или известных открытых текстов, которые должны быть проверены для атаки. В четвертом столбце указано число фактически проанализированных открытых текстов. В последнем столбце указана сложность анализа после обнаружения требуемых открытых текстов. Таблица 12.14. Атака с помощью дифференциального криптоанализа Число раундов Подобранные открытые тексты Известные открытые тексты Проанализир ованные открытые тексты Сложность анализа 8 214 238 4 29 9 224 244 2 232* 10 224 243 214 215 11 231 247 2 232* 12 231 247 221 221 13 239 252 2 232* 14 239 251 229 229 15 247 256 27 237 16 247 255 236 237 'Сложность анализа этих вариантов можно значительно снизить за счет использования примерно в четыре раза большего числа открытых текстов и метода клик. Наилучшая атака на полный 16-раундовый алгоритм ЭЕ8 требует 247 подобранных открытых текстов. Можно преобразовать его к атаке с известным открытым текстом, но для него потребуется уже 255 известных открытых текстов. При анализе потребуется 237 операций шифрования ЭЕ8.
330 Прикладная криптография Дифференциальный криптоанализ эффективен для атак на ОЕ8 и аналогичные алгоритмы с постоянными 8-блоками. Эффективность атаки в значительной степени зависит от структуры 8-блоков. Блоки ЭЕ8, по счастливой случайности, были оптимизированы против дифференциального криптоанализа. Для всех режимов работы ЭЕ8 - ЕСВ, СВС, СРВ и ОРВ - уровень сложности атаки методом дифференциального криптоанализа одинаков [172]. Устойчивость ОЕ8 можно повысить путем увеличения числа раундов. Дифферен¬ циальный криптоанализ с подобранным открытым текстом 17- или 18-раундового алгоритма ЭЕ8 потребует столько же времени, сколько и лобовое вскрытие [160]. При 19 и более раундах дифференциальный криптоанализ невозможен. Действительно, для него понадобится более 264 подобранных открытых текстов. Не забывайте, в ОЕ8 исполь¬ зуются блоки размером 64 бит, поэтому для него существует только 264 возможных открытых текстов. (В общем случае вы можете доказать устойчивость алгоритма к дифференциальному криптоанализу, показав, что число открытых текстов, необходимых для атаки, превышает число возможных открытых текстов). Отметим ряд важных моментов. Во-первых, эта атака в значительной степени теоре¬ тическая. Огромные требования к времени и объему данных, необходимых для атаки с помощью дифференциального криптоанализа, почти невыполнимы. Чтобы получить нужные данные для такой атаки против полного БЕ8, вам придется почти три года шифровать поток подобранных шифртекстов, передаваемых со скоростью 1.5 Мбит/сек. Во-вторых, это в первую очередь атака с подобранным открытым текстом. Его можно преобразовать к атаке с известным открытым текстом, но вам придется просмотреть все пары открытый текст/шифртекст в поисках полезных пар. В случае полного 16-раундо- вого алгоритма ЭЕ8 это делает атаку чуть менее эффективной по сравнению с лобовым вскрытием (атака на основе дифференциального криптоанализа требует 255 1 операций, а лобовое вскрытие - 255). Таким образом, принято считать, что корректно реализованный алгоритм ЭЕ8 устойчив к дифференциальному криптоанализу. Но почему алгоритм БЕ8 устойчив к дифференциальному криптоанализу? Почему 8-блоки оптимизированы так, что усложняют подобное вскрытие насколько возможно? Почему используется ровно столько, а не больше раундов? Да просто создатели ОЕ8 знали о дифференциальном криптоанализе. Дон Копперсмит из 1ВМ недавно писал [373,374]: При проектировании учитывались преимущества определенных криптоанали¬ тических методов, особенно метода «дифференциального криптоанализа», который не был опубликован в открытой литературе. После дискуссий с АНБ было решено, что раскрытие процесса проектирования раскроет и метод дифференциального криптоанализа, мощь которого может быть использована против многих шифров. Это, в свою очередь, снизило бы преимущество Соединенных Штатов перед другими странами в области криптографии. Ади Шамир откликнулся, предложив Копперсмиту признаться, что с тех пор ему не удалось найти более эффективного метода вскрытия ОЕ8. Копперсмит предпочел отмолчаться [1426].
ГЛАВА 12. Алгоритм РЕЗ 331 Криптоанализ на основе связанных ключей В табл. 12.3 приведено число битов, на которые циклически смещается ключ ОЕ8 на каждом раунде: на 2 бита на всех раундах кроме 1, 2, 9 и 16, когда ключ сдвигается на 1 бит. Почему? Криптоанализ на основе связанных ключей (ге1а(ес1-кеу) напоминает дифферен¬ циальный криптоанализ, только он изучает разность между ключами. Атака отличается от любой из ранее рассмотренных: криптоаналитик выбирает связь между парой ключей, но сами ключи остаются ему неизвестными. Данные шифруются обоими ключами. В варианте с известным открытым текстом криптоаналитик знает открытый текст и шифртекст данных, зашифрованных двумя ключами. В варианте с подобранным открытым текстом криптоаналитик пытается выбрать открытый текст для зашифрования двумя ключами. Модифицированный алгоритм ОЕ8, в котором ключ сдвигается на два бита после каждого этапа, менее стоек. Криптоанализ на основе связанных ключей позволяет взломать такой вариант алгоритма, используя для выбранных ключей только 217 подобранных открытых текстов или 233 известных открытых текстов [158, 163]. Такая атака тоже практически нереализуема, но она интересна по трем причинам. Во- первых, это первая попытка криптоаналитической атаки на алгоритм генерации подключей БЕ8. Во-вторых, эта атака не зависит от числа раундов криптографического алгоритма, она одинаково эффективно против ОЕ8 с 16, 32 или 1000 раундами. Наконец, в-третьих, ОЕ8 непроницаем для такой атаки. Изменение числа битов циклического сдвига препятствует криптоанализу со связанными ключами. Линейный криптоанализ Линейный криптоанализ представляет собой другой тип криптоаналитической атаки, предложенный Мицуру Мацуи (Мкзиги Ма*5ш) [1016, 1015, 1017]. Для описания работы блочного шифра (в данном случае - ОЕ8) в этом методе вскрытия используются линейные приближения. Это означает, что если вы выполните операцию ХОК над некоторыми битами открытого текста, затем над некоторыми битами шифртекста, а затем над результатами, вы получите бит, который представляет собой ХОК некоторых битов ключа. Это и называется линейным приближением, которое может быть верным с некоторой вероятностью р. Если рф\/2, это смещение можно использовать. Используйте собранные открытые тексты и связанные шифртексты, чтобы сделать предположение о значениях битов ключа. Чем больше у вас данных, тем точнее предположение. Чем больше смещение, тем быстрее атака увенчается успехом. Как определить хорошее линейное приближение для ЭЕ8? Найдите хорошие однораундовые линейные приближения и объедините их. (Начальная и заключительная перестановки снова игнорируются, так как они не влияют на атаку). Взгляните на 8-блоки. У них 6 входных битов и 4 выходных. Входные биты можно объединить с помощью операции ХОК 63 способами (26 - 1), а выходные биты - 15 способами. Теперь для каждого 8-блока можно оценить вероятность того, что для случайно выбранного входа входная комбинация ХОК равна некоторой выходной комбинации ХОК. Если
332 Прикладная криптография существует комбинация с достаточно большим смещением, то линейный криптоанализ может сработать. Если линейные приближения не смещены, они будут выполняться для 32 из 64 возможных входов. Избавлю вас от длительного изучения таблиц - более других смещен пятый 8-блок. Действительно, для 12 входов второй входной бит равен ХОК всех четырех выходных битов. Это соответствует вероятности 3/16 или смещению 5/16, что и составляет самое большое смещение во всех 8-блоках. (Шамир писал об этом в [1423], но не сумел найти способа использования). На Рис. 12.8 показано, как воспользоваться всем этим для атаки на функцию раунда ЭЕ8. />26 - это входной бит 85-блока. (Я нумерую биты слева направо, от 1 до 64. Мацуи игнорирует это принятое в ЭЕ8 соглашение и нумерует свои биты справа налево и от О до 63. Этого хватит, чтобы свести вас с ума). схъ сх%, сХ9, с2о - это четыре выходных бита 85-блока. Мы можем проследить Ъ2в в обратном направлении от входа в 8-блок. Для получения />26 бит объединяется с помощью ХОК с битом подключа Кь26. А бит Хх1 проходит через расширяющую перестановку, чтобы превратиться в а26. После 8-блока 4 выходных бита проходят через Р-блок, превращаясь в четыре выходных бита функции раунда: У3, Х8, УХ4 и У25. Это означает, что с вероятностью 1/2-5/16: Х17®У3®У,®У14®У25 = К1Л6 У У У У '3> 18» 1 14» 125 Рис. 12.8. 1 -раундовое линейное приближение для ИЕ8 Способ, которым можно объединить линейные приближения для различных раундов, подобен тому, что обсуждался для дифференциального криптоанализа. На Рис. 12.9 показано 3-раундовое линейное приближение с вероятностью 1/2+0.0061.
ГЛАВА 12. Алгоритм РЕЗ 333 Эффективность отдельных приближений различна: последнее очень хорошо, первое достаточно хорошо, а среднее - плохо. Но вместе эти три однораундовые приближения дают очень хорошее трехраундовое приближение. Базовая атака должна использовать наилучшее линейное приближение для 16-раундового ЭЕ8. Для него необходимы 247 известных открытых блоков, а в результате атаки восстанавливается 1 бит ключа. Это не слишком полезно. Если вы поменяете местами открытый текст и шифртекст, и будете использовать и расшифрование, и зашифрование, вы сможете получить 2 бита. Это тоже не слишком полезно. В 17 К /-1,26 к,- -*/+ 1,26 А 17 А = [3, 8, 14, 25] В = [8, 14, 25] 1 -з С вероятностью ^ + 6.1 х 10 Рис. 12.9. 3-раундовое линейное приближение БЕЗ Существует ряд тонкостей. Используйте 14-раундовое линейное приближение для раундов с 2 по 15. Попробуйте угадать 6 битов подключа для 85-блока первого и последнего раундов (всего, таким образом, 12 битов ключа). Для эффективности выполните линейный криптоанализ параллельно 212 раз и выберите правильный вариант, опираясь на вероятности. Это раскрывает 12 битов и Ь26- Поменяв местами открытый текст и шифртекст, мы получим еще 13 битов. Для получения оставшихся 30 битов используйте исчерпывающий поиск. Существуют и другие приемы, но этот - основной. При атаке таким методом на полный 16-раундовый алгоритм ЭЕ8 ключ будет раскрыт в среднем с помощью 243 известных открытых текстов. Программная реализации этой
334 Прикладная криптография атаки, работая на 12 рабочих станциях НР9735, раскрыла ключ БЕ8 за 50 дней [1019]. Во время написания этой книги это был самый эффективный способ вскрытия ЭЕ8. Линейный криптоанализ в значительной степени зависит от структуры 8-блоков. Как оказалось, 8-блоки ЭЕ8 не оптимизированы против такого метода вскрытия. Действительно, смещение в 8-блоках, реализованное в ОЕ8, составляет 9—16 %, что не обеспечивает надежной защиты от линейного криптоанализа [1018]. Согласно Дону Копперсмиту [373, 374] устойчивость к линейному криптоанализу «не входило в число критериев проектирования ОЕ8». Либо разработчики не знали о существовании линейного криптоанализа, либо при проектировании отдали преимущество устойчи¬ вости против известной им более мощной атаки. Линейный криптоанализ современнее дифференциального, и в ближайшее время возможно дальнейшее продвижение в этом направлении. Некоторые идеи выдвинуты в [1270, 811], но неясно, можно ли их эффективно применить против полного алгоритма ЭЕ8. Однако они превосходно работают против вариантов с уменьшенным числом раундов. Дальнейшие направления развития Известен ряд попыток расширения концепции дифференциального криптоанализа на характеристики более высоких порядков [702, 161, 927, 858, 860]. Ларе Кнудсен (Ьагз Кпиёзеп) использует нечто, называемое частичными дифференциалами для вскрытия 6-раундового ОЕ8. Этот метод требует 32 подобранных открытых текстов и 20000 шифрований [860]. Но этот метод слишком нов, чтобы можно было утверждать, что он облегчит вскрытие полного 16-раундового ЭЕ8. Еще один метод атаки - дифференциально-линейный криптоанализ - объединяет дифференциальный и линейный методы криптоанализа. Сьюзен Лангфорд (8изап Ьап^Гогс!) и Хеллман предлагают метод вскрытия 8-раундового ЭЕ8, который восстанавливает 10 битов ключа с вероятностью успеха 80% при 512 подобранных открытых текстах, и с вероятностью 95 % при 768 подобранных открытых текстах [938]. После этого необходим лобовой поиск в оставшемся пространстве ключей (246 возможных ключей). Хотя по времени этот метод вскрытия сопоставим с описанными выше, для него требуется намного меньше открытых текстов. Однако расширение этого метода на большее число раундов представляется делом непростым. Но этот метод слишком нов, и работа продолжается. В ближайшие годы возможны заметные успехи. Возможно, к успеху приведет сочетание этого метода вскрытия с дифференциальным криптоанализом более высоких порядков. Как знать? 12.5. Практические критерии проектирования После публикации метода дифференциального криптоанализа корпорация 1ВМ раскрыла критерии проектирования 8- и Р-блоков [373, 374]. Критерии проектирования 8-блоков таковы: ✓ У каждого 8-блока 6 входных битов и 4 выходных бита. (Это самый большой размер, который мог быть реализован на одной микросхеме по технологии 1974 года).
ГЛАВА 12. Алгоритм РЕЗ 335 ✓ Ни один выходной бит 8-блока не должен быть слишком близок к линейной функции входных битов. ✓ Если зафиксировать крайние левый и правый биты 8-блока, изменяя 4 средних бита, то каждый возможный 4-битовый результат получается только один раз. ✓ Если два входа 8-блока различаются только одним битом, результаты должны различаться по крайней мере на 2 бита. ✓ Если два входа 8-блока различаются только двумя центральными битами, результаты должны различаться по крайней мере на 2 бита. ✓ Если два входа 8-блока различаются двумя первыми битами, а последние 2 бита совпадают, результаты не должны быть одинаковыми. ✓ Для любой ненулевой 6-битовой разности между входами не более чем 8 из 32 пар входов могут приводить к одинаковой разности выхода. ✓ Аналогичный предыдущему критерий, но для случая трех активных 8-блоков. Критерии проектирования Р-блока таковы: ✓ 4 выходных бита каждого 8-блока на раунде / распределены так, что 2 из них влияют на средние биты 8-блоков на раунде / + 1, а другие 2 бита влияют на последние биты. ✓ 4 выходных бита каждого 8-блока влияют на шесть различных 8-блоков, и никакие 2 не влияют на один и тот же 8-блок. ✓ Если выходной бит одного 8-блока влияет на средние биты другого 8-блока, то выходной бит этого другого 8-блока не может влиять на средние биты первого 8-блока. Далее в статье обсуждаются эти критерии. Сегодня совсем нетрудно генерировать 8-блоки, но в начале семидесятых годов это была нелегкая задача. Тачмен (ТисЬтап) говорил, что компьютерные программы, готовившие 8-блоки, работали месяцами. 12.6. Варианты алгоритма ЭЕ5 Многократный алгоритм РЕ5 В ряде реализаций ЭЕ8 используется тройной алгоритм ОЕ8 (см. Рис. 12.10) [55]. Так как преобразование ЭЕ8 не является группой, полученный шифртекст гораздо сложнее вскрыть полным перебором: 2112 попыток вместо 256. Подробности можно найти в разделе 15.2. Алгоритм ОЕ5 с независимыми подключами Еще одна возможность - использование различных подключей в каждом раунде вместо создания их из одного 56-битового ключа [851]. Так как в каждом из 16 раундов используется 48 битов ключа, длина ключа в таком варианте составит 768 бит. Этот вариант резко повышает трудность лобового вскрытия алгоритма, сложность его составит 2768.
336 Прикладная криптография Рис. 12.10. Тройной ОЕ8 Однако возможна атака методом «встреча посередине» (см. раздел 15.1). Сложность такой атаки снижается до 2384, что, тем не менее, вполне достаточно для обеспечения любой мыслимой безопасности. Хотя независимые подключи мешают линейному криптоанализу, этот вариант уязвим к дифференциальному криптоанализу, и может быть вскрыт с помощью 261 подобранных открытых текстов (см. табл.12.15) [167, 172]. По-видимому, никакие модификации развертки ключей не смогут намного усилить БЕЗ. Алгоритм ЭЕ5Х Алгоритм БЕЗХ представляет собой вариант БЕЗ, разработанный Я8А Ба1а Зесигйу, 1пс, и включенный в 1986 году в программу обеспечения безопасности электронной почты МаПЗаГе, а в 1987 году - в пакет В8АРЕ. Для маскировки входов и выходов БЕЗ в алгоритме БЕ8Х использован метод, называемый отбеливанием (см. раздел 15.6). Помимо 56-битового ключа БЕЗ, в БЕЗХ используется дополнительный 64-битовый ключ отбеливания. Эти 64 бита используются для выполнения операции ХОЯ с блоком открытого текста перед первым этапом БЕЗ. Другие 64 бита вычисляются как значение однонаправленной функции от полного 120-битового ключа БЕЗХ, и затем они подвергаются операции ХОЯ с шифртекстом, который создается в последнем раунде [155]. По сравнению с БЕЗ, отбеливание значительно повышает устойчивость БЕЗХ к вскрытию «в лоб»: при п известных открытых текстах, вскрытие требует (2по)/п операций. Кроме того, повышается устойчивость к дифференциальному и линейному криптоанализу: для атаки понадобится 261 подобранных и 260 известных открытых текстов соответственно [1338]. Алгоритм СКУРТ(З) Алгоритм СЯУРТ(З) представляет собой вариант БЕЗ, используемый в системах 1Л41Х. В основном он используется в качестве однонаправленной функции для хранения паролей, но иногда и для шифрования. В отличие от БЕЗ, в СЯУРТ(З) включена зависящая от ключа расширяющая перестановка, обеспечивающая 212 варианта перестановок. Это сделано с целью невозможности использования серийных микросхем БЕЗ для создания устройств вскрытия паролей.
ГЛАВА 12. Алгоритм РЕЗ 337 Обобщенный алгоритм РЕ5 Обобщенный алгоритм БЕЗ (ОепегаНхес! БЕЗ - (ЮЕ8) спроектирован для ускорения исполнения БЕЗ и повышения устойчивости алгоритма [1381, 1382]. Общий размер блока увеличился, а объем вычислений остался неизменным. На Рис. 12.11 показана блочная схема алгоритма (ЮЕ8. Алгоритм (ЮЕ8 работает с блоками открытого текста переменной длины. Блоки шифрования делятся на 32-битовых подблоков, точное число которых зависит от полного размера блока (который, по идее, может меняться, но фиксирован для конкретной реализации). В общем случае д равно размеру блока, деленному на 32. Открытый текст л в0(,) *о(2) *о(3) 4-1) в,0) в,<«> в2(1) в2{2) В^Л) I в2(п) ВЛ.1(|М I В—1<2) В ,<3> "л-1 Д.'-!0 (<?) в 0> в <2) п ~~Т~ в„<3> ± I <й-\) В^ Шифртекст Рис. 12.11. Блочная схема алгоритма СИЕЗ Функция / рассчитывается один раз для каждого раунда для крайнего правого блока. Результат с помощью операции ХОЯ объединяется со всеми остальными частями, которые затем циклически смещаются направо. Алгоритм (ЮЕ8 использует переменное число раундов п. В последний раунд внесено незначительное изменение, с тем, чтобы процессы зашифрования и расшифрования отличались только порядком применения подключей (точно так же, как в БЕЗ). Действительно, если д =2 и п = 16, описанный алгоритм превращается в БЕЗ. Бихам и Шамир [167, 168] показали, что дифференциальный криптоанализ вскрывает (ЮЕ8 сд=8ия=16с помощью всего шести подобранных открытых текстов. При использовании независимых подключей требуются 16 подобранных открытых текстов.
338 Прикладная криптография СЮЕ8 сд=8ия=22 вскрывается с помощью 48 подобранных открытых текстов, а для вскрытия ООЕ8 с <7=8 и п- 31 достаточно всего 500000 подобранных открытых текстов. Даже (ЮЕ8 сд=8ии=64 слабее, чем ИЕ8 - для его вскрытия нужно только 249 подобранных открытых текстов. Действительно, любая схема (ЮЕ8, более скоростная, чем ОЕ8, также и менее надежна (см. табл. 12.15). Недавно появился еще один вариант этой схемы [1591]. Вероятно, он не более надежен, чем оригинальный (ЮЕ8. В общем случае, любой вариант ЭЕ8 с большими блоками, который быстрее ЭЕ8, скорее всего и менее надежен по сравнению с ЭЕ8. Алгоритм РЕ5 с измененными 5-блоками Другие модификации ЭЕ8 связаны с 8-блоками. Некоторые проекты предусматривают возможность изменения порядка 8-блоков. Другие разработчики изменяют содержимое самих 8-блоков. Бихам и Шамир показали [170,172], что построение 8-блоков и даже их порядок оптимизированы с точки зрения устойчивости к дифференциальному криптоанализу: Изменение порядка восьми 8-блоков йЕЗ (без изменения их значений) тоже значительно ослабляет ОЕ8: ОЕ8 с 16 раундами и конкретным измененным порядком вскрывается примерно за 238 шагов.... Доказано, что ОЕ8 со случайными 8-блоками вскрыть очень просто. Даже минимальное изменение одного из элементов 8-блоков ОЕ8 может снизить устойчивость йЕ8 к вскрытию. 8-блоки ОЕ8 не были оптимизированы против линейного криптоанализа. Известны и лучшие 8-блоки, чем предлагаемые в ОЕ8, но бездумная замена 8-блоков - не самая лучшая идея. В табл. 12.15 [167, 169] перечислены некоторые модификации ОЕ8 и число подобранных открытых текстов, необходимых для дифференциального криптоанализа. В таблицу не включена одна из модификаций, объединяющая левую и правую половины с помощью сложения по модулю 24 вместо ХОЯ, вскрыть ее в 217 раз труднее, чем ЭЕ8 [689]. Таблица 12.15. Атаки на варианты ОЕ8 методом дифференциального криптоанализа Модифицированные операции Число подобранных открытых текстов Полный ОЕ8 (без изменений) 247 Изменение Р-блоков: Не может усилить алгоритм Тождественная перестановка 219 Изменение порядка 8-блоков 238 Замена ХОЯ сложениями 239, 231 8-блоки: Случайные 218 220 Случайные перестановки 233—241 Одноэлементные 233
ГЛАВА 12. Алгоритм РЕ5 339 Модифицированные операции Число подобранных открытых текстов Однородные таблицы 226 Удаление расширяющего Е-блока 226 Изменение порядка Е-блоков и операций ХОК с подключом 244 ОЭЕ8 (ширина ц = 8) 16 раундов 6, 16 64 раунда 249 (независимый ключ) Алгоритм КОЕ5 Алгоритм КЕ)Е8 - модификация, в которой по окончании каждого раунда правая и левая половины обмениваются местами с использованием зависимой от ключа перестановки [893]. Обмены местами фиксированы и зависят только от ключа. Это означает, что 15 обменов приводят к 215 возможным вариантам, а также к тому, что данная модификация будет нестойка к дифференциальному криптоанализу [816, 894, 112]. У алгоритма К1)Е8 множество слабых ключей. Действительно, почти каждый ключ слабее типичного ключа ОЕ8. Поэтому использовать эту модификацию нельзя. Более удачна идея обмена местами только в пределах правой половины и в начале каждого раунда. Еще одна хорошая идея - выполнять обмен в зависимости от входных данных, а не как статическую функцию ключа. Существует множество возможных вариантов [813, 815]. Так, в алгоритме КОЕ8-1 используется зависящая от данных перестановка 16-битовых слов в начале каждого раунда. В ЯБЕ8-2 применяется зависящая от данных перестановка байтов в начале каждого раунда после 16-битовых перестановок, аналогичных КХ)Е8-1. В развитии этой идеи дошли до ЯБЕ8-4. 1ШЕ8-1 устойчив и к дифференциальному [815], и линейному криптоанализу [1136]. По¬ видимому, КОЕ8-2 и последующие варианты достаточно надежны. Алгоритм зпОЕ5 Группа корейских исследователей под руководством Кванджо Кима (Кдуап^о Ют) попыталась найти набор 8-блоков, оптимально устойчивых как к дифференциальному, так и линейному криптоанализу. Их первая попытка, известная как з2ОЕ8 [834], оказалась, как показано в [855, 858], менее устойчивой, чем алгоритм ОЕ8, к дифференциальному криптоанализу. Следующий вариант, з3ОЕ8 [839], оказался менее устойчив, чем ЭЕ8, к линейному криптоанализу [856, 1491, 1527, 858, 838]. Бихам предложил незначительно изменить алгоритм, чтобы сделать з3ОЕ8 устойчивым и к дифференциальному, и к линейному криптоанализу [165]. Исследователи вернулись к своим компьютерам и разработали улучшенную технику проектирования 8-блоков [835, 837]. Они предложили алгоритм з4ОЕ8 [836], а затем з5ОЕ8 [838, 944]. В табл. 12.16 приведены сведения о 8-блоках алгоритма з3ОЕ8 (с обращенными 8-блоками 1 и 2), которые устойчивы к обоим методам криптоанализа. Использование
340 Прикладная криптография этого варианта совместно с трехкратным алгоритмом ОЕ8 наверняка помешает криптоанализу. Таблица 12.16. 8-блоки алгоритма з3ОЕ8 (с обращенными 8-блоками 1 и 2) 8-блок 1: 13 14 0 3 10 4 7 9 11 8 12 6 1 15 2 5 8 2 11 13 4 1 14 7 5 15 0 3 10 6 9 12 14 9 3 10 0 7 13 4 8 5 6 15 11 12 1 2 1 4 14 7 11 13 8 2 6 3 5 10 12 0 15 9 8-блок 2: 15 8 3 14 4 2 9 5 0 11 10 1 13 7 6 12 6 15 9 5 3 12 10 0 13 8 4 11 14 2 1 7 9 14 5 8 2 4 15 3 10 7 6 13 1 11 12 0 10 5 3 15 12 9 0 6 1 2 8 4 11 14 7 13 8-блок 3: 13 3 11 5 14 8 0 6 4 15 1 12 7 2 10 9 4 13 1 8 7 2 14 11 15 10 12 3 9 5 0 6 6 5 8 И 13 14 3 0 9 2 4 1 10 7 15 12 1 11 7 2 8 13 4 14 6 12 10 15 3 0 9 5 8-блок 4: 9 0 7 И 12 5 10 6 15 3 1 14 2 8 4 13 5 10 12 6 0 15 3 9 8 13 11 1 7 2 14 4 10 7 9 12 5 0 6 11 3 14 4 2 8 13 15 1 3 9 15 0 6 10 5 12 14 2 1 7 13 4 8 11 8-блок 5: 5 15 9 10 0 3 14 4 2 12 7 1 13 6 8 11 6 9 3 15 5 12 0 10 8 7 13 4 2 11 14 1 15 0 10 9 3 5 4 14 8 11 1 7 6 12 13 2 12 5 0 6 15 10 9 3 7 2 14 и 8 1 4 13 8-блок 6: 4 3 7 10 9 0 14 13 15 5 12 6 2 11 1 8
ГЛАВА 12. Алгоритм РЕЗ 341 14 13 11 4 2 7 1 8 9 10 5 3 15 0 12 6 13 0 10 9 4 3 7 14 1 15 6 12 8 5 11 2 1 7 4 14 11 8 13 2 10 12 3 5 6 15 0 9 3-блок 7: 4 10 15 12 2 9 1 6 11 5 0 3 7 14 13 8 10 15 6 0 5 3 12 9 1 8 11 13 14 4 7 2 2 12 9 6 15 10 4 1 5 11 3 0 8 7 14 13 12 6 3 9 0 5 10 15 2 13 4 14 7 11 1 8 8-блок 8: 13 10 0 7 3 9 14 4 2 15 12 1 5 6 11 8 2 7 13 1 4 14 11 8 15 12 6 10 9 5 0 3 4 13 14 0 9 3 7 10 1 8 2 11 15 5 12 6 8 11 7 14 2 4 13 1 6 5 9 0 12 15 3 10 ОЕ5 с зависящими от ключа 5-блоками Линейный и дифференциальный криптоанализ возможны только тогда, когда аналитику известно строение 8-блоков. Если 8-блоки зависят от ключа и выбираются криптографи¬ чески надежным методом, линейный и дифференциальный криптоанализ значительно усложнятся. Хотя надо помнить, что если 8-блоки создаются случайно, то у них будут очень плохие дифференциальные и линейные характеристики, даже если они хранятся в секрете. Вот как можно использовать 48 дополнительных битов ключа для создания 8-блоков, устойчивых как к линейному, так и к дифференциальному криптоанализу [165]. 1. Изменить порядок 8-блоков ИЕ8: 24673158. 2. Выбрать 16 оставшихся битов ключа. Если первый бит 1, обменять местами две первые и две последние строки 8-блока 1. Если второй бит 1, обменять местами первые и последние восемь столбцов 8-блока 1. Повторить то же самое для третьего и четвертого битов и 8-блока 2. Повторить то же самое для 8-блоков с 3 по 8. 3. Взять оставшиеся 32 бита ключа. Выполнить операцию ХОЯ над первыми четырьмя битами с каждым элементом 8-блока 1, ХОЯ над следующими четырьмя битами с каждым элементом 8-блока 2, и т.д. Сложность вскрытия такой системы методом дифференциального криптоанализа составит 251, линейного криптоанализа - 253. Сложность полного перебора составит 2102. Но что хорошо в этом варианте БЕЗ, так это то, что его можно реализовать в существу¬ ющей аппаратуре. Некоторые поставщики микросхем ИЕ8 предлагают микросхемы ОЕ8, допускающие загрузку 8-блоков. Можно реализовать любой способ генерации 8-блоков
342 Прикладная криптография вне микросхемы, а затем загрузить их в нее. Для дифференциального и линейного криптоанализа нужно настолько много известных или подобранных открытых текстов, что эти методы вскрытия становятся неосуществимыми. Лобовое вскрытие тоже трудно себе представить, не поможет никакое увеличение скорости. 12.7. Насколько стоек ЭЕ5 сегодня Ответ одновременно и прост, и сложен. В простом ответе учитывается только длина ключа (см. раздел 7.1). Машина для лобового вскрытия ОЕ8, способная найти ключ в среднем за 3,5 часа, в 1993 году стоила 1 миллион долларов [1597, 1598]. ОЕ8 используется очень широко, и наивно было бы предполагать, что АНБ и аналогичные организации в других странах не построили такое устройство. И не забывайте, что стоимость компьютеров уменьшается в 5 раз каждые 10 лет. С течением времени ОЕ8 будет становиться все менее и менее надежным. В сложном ответе нужно попытаться оценить криптоаналитические методы. Дифференциальный криптоанализ был известен АНБ задолго до середины семидесятых годов, когда ОЕ8 впервые был принят как стандартный алгоритм. Наивно полагать, что с тех пор теоретики АНБ бездельничали. Почти наверняка они разработали новые криптоаналитические методы, которые можно использовать для вскрытия ОЕ8. Но фактов у нас нет, одни слухи. Винн Швартау (\Утп 8сЬ\уаПаи) пишет, что АНБ построило огромную параллельную машину для вскрытия ОЕ8 уже в середине восьмидесятых годов [1404]. По крайней мере, одна такая машина была построена Нагпз Согр. с использованием компьютера Сгау У-МР. Предположительно существует ряд алгоритмов, которые на несколько порядков уменьшают сложность лобового вскрытия ОЕ8. Контекстные алгоритмы, основанные на внутреннем механизме ОЕ8, позволяют отбросить ряд ключей, используя частичные решения. Статистические алгоритмы уменьшают эффективную длину ключа еще значительнее. Другие алгоритмы тестируют вероятные ключи - слова, печатаемые последовательности А8СИ, и т.д. (см. раздел 8.1). По слухам, АНБ может вскрыть алгоритм ОЕ8 за 3—15 минут, в зависимости от объема предварительной обработки. И каждая такая машина стоит всего около $50000. Согласно другим слухам, если у АНБ есть большое число открытых текстов и шифр- текстов, эксперты ведомства могут выполнить некоторые статистические расчеты и затем считать ключ из архива на оптических дисках. Это только слухи, но и они не вселяют в меня чувство уверенности в ОЕ8. Этот алгоритм слишком долго служил очень крупной мишенью. Поэтому практически любое изменение ОЕ8 послужит дополнительной защитой; возможно, получившийся шифр и будет менее устойчив к вскрытию, но у АНБ может не оказаться средств решения этой конкретной задачи. Я рекомендую использовать схему Бихама с зависящими от ключа 8-блоками. Ее нетрудно реализовать программными или аппаратными средствами (с помощью микросхем с загружаемыми 8-блоками), и она не влечет потерю эффективности по сравнению с ЭЕ8. Эта схема повышает устойчивость алгоритма к лобовому вскрытию, затрудняет дифференциальный и линейный криптоанализ и заставляет АНБ столкнуться с алгоритмом, по крайней мере, столь же мощным, как ОЕ8, но другим.
ГЛАВА 13. Другие блочные шифры 13.1. Алгоритм ЬисНег В конце шестидесятых годов корпорация 1ВМ запустила исследовательскую программу по компьютерной криптографии, названную ЬишГег (Люцифер) и руководимую сначала Хорстом Файстелем (Ногз! Ре1з1е1), а затем Уолтом Тачменом (XVай ТисЬтап). Такое же имя - ЬисЛег - получил блочный алгоритм, появившийся в результате этой программы в начале семидесятых годов [1482, 1484]. В действительности существует, по меньшей мере, два различных алгоритма с таким именем [552, 1492]. Работа [552] содержит ряд пробелов в спецификации алгоритма. Все это привело к заметной путанице. Алгоритм ЬисЛег представляет собой сеть перестановок и подстановок, его основные блоки напоминают блоки алгоритма ОЕ8. В ОЕ8 результат функции Г складывается операцией ХОК с входом предыдущего раунда, образуя вход следующего раунда. У 8-блоков алгоритма ЬшпГег 4-битовые входы и выходы, вход 8-блоков представляет собой перетасованный выход 8-блоков предыдущего раунда, входом 8-блоков первого раунда служит открытый текст. Для выбора используемого 8-блока из двух возможных используется бит ключа. (Ьиш&г реализует все это в едином Т-блоке с 9 битами на входе и 8 битами на выходе). В отличие от алгоритма ЭЕ8, половины блока между раундами не переставляются, да и само понятие половины блока в алгоритме ЬисНег не используется. У этого алгоритма 16 раундов, 128-битовые блоки и более простая, чем в БЕ8, схема развертки ключа. Применив дифференциальный криптоанализ к первой реализации алгоритма ЬисНег, Бихам и Шамир [170, 172] показали, что Ьиш&г с 32-битовыми блоками и 8 раундами можно взломать с помощью 40 подобранных открытых текстов за 229 операций. Этот же метод позволяет вскрыть ЬисНег с 128-битовыми блоками и 8 раундами с помощью 60 подобранных открытых текстов за 253 шагов. Другая дифференциальная атака вскрывает 18-раундовый, 128-битовый Ьшн&г с помощью 24 подобранных открытых текстов за 221 операций. Во всех этих вскрытиях использовались стойкие 8-блоки алгоритма БЕ8. Применив дифференциальный криптоанализ ко второй реализации Ьиш&г, Бихам и Шамир обнаружили, что его 8-блоки намного слабее, чем в алгоритме БЕ8. Дальнейший анализ показал нестойкость более половины возможных ключей [112]. Криптоанализ на основе связанных ключей позволяет взломать 128-битовый ЬисНег с любым числом раундов с помощью 233 подобранных открытых текстов для подобранных ключей или 265 известных открытых текстов для подобранных ключей [158]. Вторая реализация ЬисНег еще слабее [170, 172, 112]. Некоторые полагают, что ЬисНег надежнее БЕ8 из-за большей длины ключа и малочисленности опубликованных сведений. Но очевидно, что это не так. На алгоритм ЬисНег выданы нескольких патентов США: [553, 554, 555, 1483]. Сроки действия всех этих патентов уже истекли.
344 Прикладная криптография 13.2. Алгоритм Мас!гу§а В. Е. Мадрига (\У. Е. Мабгу§а) предложил этот блочный алгоритм в 1984 году [999]. Его можно эффективно реализовать программным путем: в алгоритме нет раздражающих перестановок, и все операции выполняются над байтами. Стоит перечислить задачи, которые решал автор при проектировании алгоритма: ✓ Без помощи ключа открытый текст невозможно получить из шифртекста. (Это означает только то, что алгоритм стоек). ✓ Число операций, необходимых для восстановления ключа по образцу шифртекста и открытого текста, должно быть статистически равно произведению числа операций при шифровании на число возможных ключей. (Это означает, что никакое вскрытие с открытым текстом не может быть эффективнее лобового вскрытия). ✓ Опубликование алгоритма не влияет на стойкость шифра. (Безопасность полностью определяется ключом). ✓ Изменение одного бита ключа должно радикально изменять шифртекст одного и того же открытого текста, а изменение одного бита открытого текста должно радикально изменять шифртекст для того же ключа (лавинный эффект). ✓ Алгоритм должен содержать некоммутативную комбинацию подстановок и перестановок. ✓ Подстановки и перестановки, используемые в алгоритме, должны определяться как входными данными, так и ключом. ✓ Избыточные группы битов открытого текста должны быть полностью замаскированы в шифртексте. ✓ Длина шифртекста должна совпадать с длиной открытого текста. ✓ Между любыми возможными ключами и особенностями шифртекста недопустимы простые взаимосвязи. ✓ Все возможные ключи должны обеспечивать стойкость шифра. (Не должно быть слабых ключей). Длина ключа и текст должны иметь возможность варьирования для реализации различных требований к безопасности. ✓ Алгоритм должен допускать эффективную программную реализацию на мэйнфреймах, мини- и микрокомпьютерах и с помощью дискретной логики. (По существу, число функций, используемых в алгоритме, ограничено операциями ХОЯ и битовым сдвигом). Алгоритм ОЕ8 удовлетворял первым девяти требованиям, но последние три появились впервые. Если допустить, что лучший способ взлома алгоритма - лобовое вскрытие, переменная длина ключа, конечно же, заставит замолчать тех, кто считает, что 56 битов - слишком малая величина. Такие люди могут реализовать этот алгоритм с любой длиной ключа. А любой, кто когда-нибудь пытался реализовать ОЕ5 программными средствами, обрадуется алгоритму, который учитывает особенности программных реализаций.
ГЛАВА 13. Другие блочные шифры 345 Описание алгоритма Мас!гу§а Алгоритм Мас1гу§а состоит из двух вложенных циклов. Внешний цикл повторяется восемь раз (для гарантии надежности число циклов можно увеличить) и заключается в применении внутреннего цикла к открытому тексту. Внутренний цикл превращает открытый текст в шифртекст и выполняется однократно над каждым 8-битовым блоком (байтом) открытого текста. Таким образом, весь открытый текст последовательно восемь раз обрабатывается алгоритмом. Итерация внутреннего цикла оперирует с 3-байтовым окном данных, называемым рабочим кадром (см. Рис. 13.1). Это окно сдвигается на 1 байт за итерацию. (При работе с последними 2 байтами данные полагаются циклически замкнутыми). Первые два байта рабочего кадра циклически сдвигаются на переменное число позиций, а для последнего байта исполняется операция ХОК с несколькими битами ключа. По мере перемещения рабочего кадра все байты последовательно циклически сдвигаются и подвергаются операции ХОК с частями ключа. Последовательные циклические сдвиги перемешивают результаты предыдущих операций ХОК и циклического сдвига, причем на циклический сдвиг влияют результаты ХОК. Благодаря этому процесс в целом обратим. Текст 1 2 3 4 5 6 ... тг-2 ты л Движущийся рабочий кадр Перемещение \Л/Р (1) \Л/Р (2) \Л/Р(3) I 8 битов 8 битов | I 8 битов 1 ПОТ 1 1 Объект сдвига 16 бит Преобразование Ключ Хэш ключа Счетчик сдвига 3 бита Объект преобразования \ 8 битов 1 2 3 ... К1. I I хон 1 2 3 ... К1. Рис. 13.1. Одна итерация алгоритма Майгу^а Поскольку каждый байт данных влияет на два байта слева и на один байт справа от себя, после восьми проходов каждый байт шифртекста зависит от 16 байтов слева и 8 байтов справа. При зашифровании каждая итерация внутреннего цикла устанавливает рабочий кадр на предпоследний байт открытого текста и циклически перемещает его к третьему с конца байту открытого текста. Сначала весь ключ подвергается операции ХОК со случайной константой и затем циклически сдвигается вправо на 3 бита (ключ и данные двигаются в
346 Прикладная криптография разных направлениях, чтобы минимизировать избыточные операции с битами ключа). Младшие три бита младшего байта рабочего кадра сохраняются, они определяют циклический сдвиг остальных двух байтов. Далее конкатенация двух старших байтов циклически сдвигается влево на переменное число битов (от 0 до 7). Затем над младшим байтом рабочего кадра выполняется операция ХОК с младшим байтом ключа. Наконец рабочий кадр смещается вправо на один байт и весь процесс повторяется. Случайная константа предназначена для превращения ключа в псевдослучайную последовательность. Длина константы должна быть равной длине ключа. При обмене данными абоненты должны пользоваться одной и той же константой. Для 64-битового ключа Мадрига рекомендует константу 0х0Пе2с13с4Ь5а6978. При расшифровании процесс повторяется в обратном порядке. В каждой итерации внутреннего цикла рабочий кадр устанавливается на байт, третий слева от последнего байта шифртекста, и циклически сдвигается в обратном направлении до байта, расположенного на 2 байта левее последнего байта шифртекста. 2 байта шифртекста в процессе циклически сдвигаются вправо, а ключ - влево. После циклических сдвигов выполняется операция ХОК. Криптоанализ алгоритма Мас1гу§а Ученые Квинслендского технического университета (Риеепз1апс1 Ш1Уегз11у оГ ТесЬпо1о§у) [675] исследовали алгоритм Мабгу§а и некоторые другие блочные шифры. Они обнаружили, что лавинный эффект при преобразовании открытого текста в шифртекст в этом алгоритме не проявляется. Кроме того, во многих шифртекстах доля единиц превышала доли нулей. Хотя у меня нет сведений о формальном анализе этого алгоритма, он не производит впечатления особо надежного. При поверхностном знакомстве с ним Эли Бихам пришел к следующим выводам [160]: Алгоритм состоит только из линейных операций (циклический сдвиг и ХОК), незначительно изменяемых в зависимости от данных. Это ничуть не напоминает мощь 8-блоков ЭЕ8. Четность всех битов шифртекста и открытого текста неизменна и зависит только от ключа. Поэтому, обладая открытым текстом и соответствующим шифртекс- том, можно предсказать четность шифртекста для любого открытого текста. Само по себе ни одно из этих замечаний нельзя назвать убийственным, однако этот алгоритм не вызывает у меня положительных эмоций. Я не рекомендую использовать алгоритм Мабгу^а1. 13.3. Алгоритм №\/уОЕ5 Алгоритм №^ЭЕ8 («новый ОЕ8») спроектирован в 1985 году Робертом Скоттом (КоЬег! 8соЯ) как возможная замена БЕ8 [1405, 364]. Этот алгоритм - не модификация 1 Как замечает Шнайер в дополнениях к своей книге, более поздние работы показали, что он уязвим к дифференциальному криптоанализу с 5000 подобранными открытыми текстами.
ГЛАВА 13. Другие блочные шифры 347 ОЕ8, как может показаться из названия. Он оперирует 64-битовыми блоками текста, но использует 120-битовый ключ. Ые^ОЕЗ проще ОЕ8, в нем нет начальной и заключи¬ тельной перестановок. Все операции выполняются над целыми байтами. (На самом деле Ке^ОЕ8 никоим образом нельзя полагать новой версией ОЕ8, имя алгоритма выбрано неудачно). Блок открытого текста разделяется на восемь 1-байтовых подблоков: В0, В]..., В6, Я7. Затем подблоки проходят через 17 раундов. Каждый раунд состоит из восьми этапов. На каждом этапе один из подблоков подвергается операции ХОК с частью ключа (за одним исключением), заменяется другим байтом с помощью функции Г, подвергается операции ХОК с другим подблоком, который и заменяется результатом. 120-битовый ключ делится на 15 подблоков ключа: К0, Ки,„, Кц, К14. Процесс проще понять, рассматривая его схему, чем читая описание. Алгоритм шифрования №^ОЕ8 показан на Рис. 13.2. Раунд 1 ВО В1 В2 ВЗ В4 В5 В6 ВП Рис, 13,2, ИемОЕВ
348 Прикладная криптография Функция / выводится из Декларации независимости США. Подробности можно найти в [1405]. Как показано Скоттом, уже после седьмого раунда каждый бит блока открытого текста влияет на каждый бит шифртекста. Кроме того, он проанализировал функцию Г и не нашел в ней каких-либо очевидных недостатков. Алгоритм Ке\уБЕ8 характеризуется тем же свойством комплементарности, что и алгоритм БЕ8 [364]: если ЕК(Р)=С, то ЕК(РГ) =С'. Это уменьшает объем работы, необходимой для лобового вскрытия - с 2120 этапов до 2119 этапов. Бихам отметил, что любое изменение полного байта, примененное ко всем байтам ключа и данных, тоже приводит к комплементарности [160]. Это уменьшает трудоемкость лобового вскрытия до 2112 этапов. Это не страшно, но предложенное Бихамом криптоаналитическая атака на основе связанных ключей позволяет вскрыть алгоритм Йе^ЭЕ8 с помощью 233 подобранных открытых текстов для выбранных ключей за 248 операций [160]. Хотя такое вскрытие весьма трудоемко и, вероятно, возможно только теоретически, оно показывает слабость алгоритма Ке^ЭЕ8 по сравнению с ЭЕ8. 13.4. Алгоритм РЕА1. Алгоритм РЕАЬ предложен Акихиро Шимизу (АкНпго БЫгшги), Шоджи Миягучи (БЬо^ М1уа§исЫ) из ШТ 1арап [1435]. В нем используются 64-битовый блок и 64-битовый ключ. Основная идея состоит в создании алгоритма, подобного ЭЕ8, но с более совершенной функцией раунда. Исполняя меньше раундов, алгоритм предположительно должен работать быстрее. К сожалению, реальность оказалась далека от надежд проектировщиков. Описание алгоритма РЕАЬ На Рис. 13.3 представлена блок-схема одного раунда алгоритма РЕАЬ. В качестве входа процесса зашифрования используется 64-битовый блок открытого текста. Сначала блок данных подвергается операции ХОЯ с 64 битами ключа. Затем блок данных расщепля¬ ется на левую и правую половины. Сложение левой и правой половин операцией ХОЯ создает новую правую половину. Левая половина и новая правая половина проходят через п раундов алгоритма (первоначально их было четыре). На каждом раунде функция /объединяет правую половину с шестнадцатью битами ключа, а операция ХОЯ - с левой половиной, создавая новую правую половину. Исходная (на начало раунда) правая половина становится новой левой половиной. После п раундов (напоминаю, левая и правая половины не переставляются после я-го раунда) левая половина снова объединяется операцией ХОЯ с правой половиной, образуя новую правую половину, затем левая и правая половины соединяются вместе в 64-битовое целое. Блок данных объединяется операцией ХОЯ с другими 64 битами ключа, и алгоритм завершается. Функция/принимает 32 бита данных и 16 некоторых бит ключа и перемешивает их друг с другом. Сначала блок данных разбивается на 8-битовые фрагменты, которые затем объединяются операцией ХОЯ и заменяют друг друга. Блок-схема функции / представлена на Рис. 13.4. Функции $0 и определяются следующим образом: $0 (я> Ь) = циклический сдвиг влево на два бита ((а + Ь) тоб 256) 5^ (а, Ь) = циклический сдвиг влево на два бита {{а + Ь +1) тоб 256)
ГЛАВА 13. Другие блочные шифры 349 С Открытый текст ) 64бита"Х (К8, К9, К10, К11) — {(К 12, К13, К14, К15)} 32 бита 10 {К 8} Ю {Я 8} Ь 1 {Я 7} ^7 {/г 1} Р8 {Ю} ~ 64 бита 32 бита фЛ0{18} АГО {АГ 7} К 0 {18} К 1 {Х6} е ( Шифртекст ) К1 {АО} 64 бита (/С 12, К13, К14, К15) « {(К 8, К 9, К 10, К 11)} {}: Расшифрование Рис. 13.3. Один раунд алгоритма РЕАЬ Тот же алгоритм можно использовать для расшифрования. Единственное отличие заключается в обратном порядке использования частей ключа. На Рис. 13.5 представлена блок-схема функции генерации ключа. Сначала 64-битовый ключ расщепляется на две половины, которые, как показано на схеме, обрабатываются операцией ХОК и функцией/}. На Рис. 13.6 показана блок-схема функции/*. Два 32-битовых входа разбиваются на 8-битовые блоки, объединяемые и заменяемые
350 Прикладная криптография в соответствии со схемой. 5*0 и ^ определяются, как показано на рисунке. Затем 16-битовые блоки ключа используются в алгоритме зашифрования/расшифрования. На микропроцессоре 80286 с тактовой частотой 10 МГц реализация РЕАЬ-32 на языке ассемблера шифровала данные со скоростью 220 Кбит/сек. Алгоритм РЕАЬ-64 позволяет шифровать данные со скоростью 120 Кбит/сек [1104]. Рис. 13.6. Функция &
ГЛАВА 13. Другие блочные шифры 351 Криптоанализ алгоритма РЕАЬ Успешный криптоанализ РЕАЬ-4 (алгоритм РЕАЬ с четырьмя раундами) был выполнен на основе подобранного открытого текста [201], а позже слабость этого алгоритма была показана в [1132]. Эта атака, выполненная Сином Мерфи (8еап МигрЬу), была первой опубликованной атакой, в котором использовался дифференциальный криптоанализ. Для нее понадобилось только 20 подобранных открытых текстов. Ответом разработчиков стал 8-раундовый алгоритм РЕАЬ [1436, 1437, 1108], криптоанализ которого представлен Бихамом и Шамиром на конференции 8ЕСЫК1СОМ’89 [1424]. Для вскрытия РЕАЬ-8 с подобранным открытым текстом потребовалось всего 10000 блоков [610], что заставило разработчиков алгоритма засучить рукава и создать РЕАЬ-А [1102, 1104], алгоритм с переменным числом раундов (конечно же, большим 8). Бихам и Шамир применили для взлома алгоритма РЕАЬ-А дифференциальный криптоанализ, и они смогли вскрыть его проще, чем «в лоб» (с помощью менее чем 264 шифрований подобранного открытого текста) для А, меньшего 32. [169]. Для вскрытия РЕАЬ-16 нужно 228 подобранных или 246*5 известных открытых текстов. Для вскрытия РЕАЬ-8 требуется 2000 подобранных или 2375 известных открытых текстов. РЕАЬ-4 можно вскрыть с помощью всего 8 правильно подобранных открытых текстов. Разработчики РЕАЬ описали также алгоритм РЕАЬ-АХ - модификацию РЕАЬ, в которой используется 128-битовый ключ (см. Рис. 13.7) [1103, 1104]. Бихам и Шамир показали, что при любом значении N взлом алгоритма РЕАЬ-АХ со 128-битовым ключом не сложнее взлома РЕАЬ-А с 64-битовым ключом [169]. Недавно предложен алгоритм РЕАЬ-А(Х)8, усиливающий РЕАЬ применением динамической функции обмена местами [1525]. Более того, в [1520] описано еще одно вскрытие алгоритма РЕАЬ-4, требующее всего 1000 известных открытых текстов, и алгоритма РЕАЬ-8, для которого нужно 20000 известных открытых текстов. Другие атаки описаны в [1549, 1550]. Наилучшим можно назвать атаку, выполненное Мицуру Мацуи (Мйзиги Ма1зш) и Атшуиро Ямагиши. (А1зЬшго Уата§1зЫ) [1020]. Это было первое применение линейного криптоанализа, и оно позволило вскрыть РЕАЬ-4 с помощью 5 известных открытых текстов, РЕАЬ-6 - с помощью 100 известных открытых текстов, а РЕАЬ-8 - с помощью 215 известных открытых текстов. Подробности можно найти в [64]. Дифференциально-линейный криптоанализ позволяет вскрыть РЕАЬ-8 с помощью всего 12 подобранных открытых текстов [62]. Создается впечатление, что все изобретатели новых методов криптоаналитического вскрытия всегда в первую очередь испытывают его на алгоритме РЕАЬ. Патенты Алгоритм РЕАЬ запатентован в Соединенных Штатах [1438], соответствующие патенты приняты к рассмотрению в Англии, Франции и Германии. Все желающие лицензировать использование алгоритма должны связаться с Департаментом интеллектуальной собственности (1Ще11есШа1 Ргорейу Бераг1теп1), ОТТ, 1-6 ИсЫзапуаГсНо, 1-сЬоте, СЫуоба-ки, 100 Зарап.
352 Прикладная криптография 13.5. Алгоритм КЕЛОС КЕБОС II представляет собой еще один блочный алгоритм, разработанный Майклом Вудом (МюЬае! \\^оос1) для корпорации Сгур1есЬ [1613, 400]. В нем используются 20-байтовый (160-битовый) ключ и 80-битовый блок. Алгоритм КЕБОС II выполняет все манипуляции - перестановки, подстановки и опера¬ ции ХОК с ключом - с байтами. Этот алгоритм удобен для программной реализации. В КЕБОС II использованы переменные таблицы функций. В отличие от алгоритма БЕ5, имеющего фиксированный (хотя и оптимизированный с точки зрения стойкости) набор таблиц подстановок и перестановок, в КЕБОС II используются зависимые от ключа и открытого текста наборы таблиц (по сути, 8-блоки). В КЕБОС II 10 раундов, каждый раунд состоит из сложной последовательности манипуляций с блоком.
ГЛАВА 13. Другие блочные шифры 353 Другая уникальная особенность ЯЕООСII - использование масок. Это числа - производные таблицы ключей, которые используются для выбора таблиц данной функции для данного раунда. Для выбора таблиц функций используются как значение данных, так и маски. При условии, что самое эффективное средство взлома этого алгоритма - лобовое вскрытие, ЯЕООСII весьма надежен: для восстановления ключа требуется 2160 операций. Томас Кузик (ТЬотаз Сизюк) выполнил криптоанализ одного раунда ЯЕООС II, но расширить вскрытие на несколько раундов ему не удалось [400]. Используя дифференциальный криптоанализ, Бихам и Шамир успешно выполнили криптоанализ одного раунда ЯЕООС II с помощью 2300 подобранных открытых текстов [170]. Они не сумели расширить эту атаку на несколько раундов, но им удалось получить три значения маски после четырех раундов. Другие попытки криптоанализа мне неизвестны. Алгоритм КЕООС III Алгоритм ЯЕООС III представляет собой упрощенную версию ЯЕООС II, тоже разрабо¬ танную Майклом Вудом [1615]. Он оперирует с 80-битовым блоком. Длина ключа может изменяться и достигать 2560 байт (20480 бит). Алгоритм состоит только из операций ХОЯ над байтами ключа и открытого текста, перестановки и подстановки не используются. 1) Создайте таблицу ключей из 256 10-байтовых ключей, используя секретный ключ. 2) Создайте два 10-байтовых блока масок М1 и М2. М1 представляет собой результат операции ХОЯ первых 128 10-байтовых ключей, а М2 - результат операции ХОЯ вторых 128 10-байтовых ключей. 3) Для шифрования 10-байтового блока: a. Выполните операцию ХОЯ с первым байтом блока данных и первым байтом М1. Выберите ключ в таблице ключей, рассчитанной в раунде 1. Используйте вычисленное значение ХОЯ в качестве индекса таблицы. Выполните операцию ХОЯ с каждым, кроме первого, байтом блока данных и соответствующим байтом выбранного ключа. b. Выполните операцию ХОЯ со вторым байтом блока данных и вторым байтом М1. Выберите ключ в таблице ключей, рассчитанной в раунде 1. Используйте вычисленное значение ХОЯ в качестве индекса таблицы. Выполните операцию ХОЯ с каждым, кроме второго, байтом блока данных и соответствующим байтом выбранного ключа. c. Продолжайте эти действия со всем блоком данных (с 3—10 байтами), пока не используете каждый байт для выбора ключа из таблицы после выполнения операции ХОЯ с ним и соответствующим значением М1. Затем выполните операцию ХОЯ с каждым, кроме использованного для выбора ключа, байтом, и ключом. б. Повторите этапы а—с для М2. Это несложный и скоростной алгоритм. На процессоре 80386 с тактовой частотой 33МГц он шифрует данные со скоростью 2.75 Мбит/сек. По оценке Вуда, конвейеризированный процессор с трактом данных 64 бит и тактовой частотой 20 МГц может шифровать данные со скоростью свыше 1.28 Гбит/сек.
354 Прикладная криптография Алгоритм ЯЕБОСШ нестоек [1440]. Он уязвим к дифференциальному криптоанализу. Для восстановления обеих масок достаточно около 223 подобранных открытых текстов. Патенты и лицензии Обе версии алгоритма ЯЕБОС запатентованы в Соединенных Штатах [1614]. Рассматриваются и иностранные патенты. Если вас заинтересовали ЯЕБОС II или ЯЕБОС III, обратитесь к Майклу Вуду (МюЬае1 С. ^ооб, Бека Сотрите, 1пс., 6647 016 ТЬотрзоп Яб., Зугасизе, ЫУ 13211). 13.6. Алгоритм ЮК1 Алгоритм ЬОК1 разработан в Австралии и впервые представлен в 1990 году в качестве возможной замены БЕ8 [273]. В нем используются 64-битовый блок и 64-битовый ключ. Общая схема алгоритма и развертки ключа основана на [274, 275], а структура 8-блоков - на [1247]. Используя дифференциальный криптоанализ, Бихам и Шамир взламывали алгоритм ЬОК1 с И и менее раундами быстрее, чем лобовым вскрытием [170]. Более того, алгоритм характеризуется 8-битовой комплементарностью, что упрощает лобовое вскрытие в 256 раз [170, 916, 917]. Как показал Ларе Кнудсен (Ьагз Кпибзеп), алгоритм ЬОК1 с 14 и менее раундами уязвим дифференциальному криптоанализу [852, 853]. Кроме того, если в ШК1 используются альтернативные 8-блоки, то полученный шифр, вероятно, тоже уязвим дифферен¬ циальному криптоанализу. Алгоритм ЮК191 В ответ на описанные выше вскрытия разработчики ЬОК1 вернулись за чертежную доску и пересмотрели свой алгоритм. В результате появился алгоритм ШК191 [272]. (Предыдущая версия ЬОК1 была переименована в ШК189). Чтобы повысить устойчивость алгоритма к дифференциальному криптоанализу и избавиться от комплементарности, в исходный проект были внесены следующие изменения: 1. Алгоритм генерации подключей модифицирован с тем, чтобы половины перестав¬ лялись не после каждого, а после каждого второго раунда. 2. Алгоритм генерации подключей модифицирован так, что число позиций цикли¬ ческого сдвига левого подключа составляло то 12, то 13 битов. 3. Исключены начальная и заключительная операции ХОЯ с блоком и ключом. 4. Изменена функция 8-блока с целью сгладить профили ХОЯ 8-блоков (чтобы повысить их устойчивость к дифференциальному криптоанализу), и исключить все значения х, для которых/(х) = 0, где/- комбинация Е-, 5-и Р-блоков.
ГЛАВА 13. Другие блочные шифры 355 Описание алгоритма ЮК191 Механизм алгоритма ШК191 подобен БЕЗ (см. Рис. 13.8). Блок данных расщепляется на левую и правую половины и проходит 16 раундов, что весьма напоминает БЕЗ. В каждом раунде правая половина сначала подвергается операции ХОЯ с частью ключа, а затем расширяющей перестановке (см. табл. 13.1). Шифртекст Рис. 13.8. Алгоритм ЮК191 Таблица 13.1. Перестановка с расширением 4, 3, 2, 1, 32, 31, 30, 29, 28, 27, 26, 25, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 20, 19, 1В, 17, 16, 15, 14, 13, 12, П, Ю, 9, 12, П, Ю, 9, 8, 7, 6, 5, 4, 3, 2, 1 48-битовый выход разделяется на четыре 12-битовых блока. В каждом блоке выполняется такая подстановка с использованием 3-блока: берется каждый 12-битовый вход, 2 старших и 2 младших бита используются для образования номера г, а восемь внутренних битов образуют номер с. Выход 5-блока, О, имеет следующее значение: 0(г,с) = (с + ((г * 17) Ф ОхГС) & (МГ)31 тос! Рг
356 Прикладная криптография Значения Рг приведены в табл. 13.2. Таблица 13.2. Значения Рг г 1, 2, 3, 4, 5, 6, 7, 8, 9, Ю, и, 12, 13, 14, 15, 16 Рг 375, 379, 391, 395, 397, 415, 419, 425, 433, 445, 451, 463, 471, 477, 487, 499 Затем четыре 8-битовых результата снова объединяются, образуя 32-битовое число, которое подвергается операции перестановки, описанной в табл. 13.3. Наконец для получения новой левой половины выполняется операция ХОЯ правой половины с прежней левой половиной, а левая половина становится новой правой половиной. После 16 раундов для получения окончательного шифртекста снова выполняется операция ХОЯ над блоком и ключом. Таблица 13.3. Перестановка с помощью Р-блока 32, 24, 16, 8, 31, 23, 15, 7, зо, 22, 14, 6, 29, 21, 13, 5, 28, 20, 12, 4, 27, 19, П, 3, 26, 18, Ю, 2, 25, 17, 9, 1 Подключи генерируются из ключа достаточно прямолинейно. 64-битовый ключ разбивается на левую и правую половины. На каждом раунде подключом служит левая половина. Далее она циклически сдвигается влево на 12 или 13 битов, затем после каждых двух раундов левая и правая половины меняются местами. Как и в ЭЕ8, для зашифрования и расшифрования используется один и тот же алгоритм с некоторыми изменениями в использовании подключей. Криптоанализ алгоритма ЮК191 Кнудсен предпринял попытку криптоанализа ШК191 [854, 858], но нашел, что этот алгоритм устойчив к дифференциальному криптоанализу. Все же он обнаружил метод атаки на основе связанных ключей для подобранных открытых текстов, который упрощает лобовое вскрытие почти вчетверо. Это метод опирается на слабость схемы развертки ключей. Кроме того, этот метод пригоден и в том случае, когда алгоритм используется в качестве однонаправленной хэш-функции (см. раздел 18.11). Другая атака со связанными ключами позволяет вскрыть алгоритм ШК191 с помощью 232 подобранных открытых текстов для выбранных ключей или с помощью 248 известных открытых текстов для выбранных ключей [158]. Эффективность атаки не зависит от числа раундов алгоритма. (В той же работе Бихам вскрывает ШК189 криптоанализом со связанными ключами, используя 217 подобранных открытых текстов для выбранных ключей или 233 известных открытых текстов для выбранных ключей). Усложнив схему развертки ключа, несложно повысить устойчивость ШК191 к подобной атаке. Патенты и лицензии Алгоритм ЬОК1 не запатентован - реализовать и использовать ЬОК1 может кто угодно. Исходный код, приведенный в этой книге, написан в Университете Нового Южного Уэльса (11шуегзйу оГ Ые\у 8оиЙ1 ^а11$). Если вы хотите использовать эту реализацию
ГЛАВА 13. Другие блочные шифры 357 (или другие реализации, которые на несколько порядков быстрее) в коммерческом продукте, обращайтесь к директору С1ТЯАО (ЭнесЮг С1ТЯАБ, Оерагйпеп! оГ СошрЩег 8с1епсе, Ошуегзйу Со11е§е, 1Ж8\У, Аиз1гаНап ОеГепзе Рогсе Асабешу, СапЬегга АСТ 2600, Аиз1гаНа; Факс: +61 6 268 8581). 13.7. Алгоритмы КНи/и и ККа^ге В 1990 году Ральф Меркл (Яа1рН Мегк1е) предложил два алгоритма. В основу конструкции заложены следующие принципы [1071]: ✓ 56-битовый размер ключа БЕ8 слишком мал. Так как стоимость увеличения размера ключа пренебрежимо мала (компьютерная память недорога и доступна), длину ключа следует увеличить. ✓ Широкое использование в БЕ8 перестановок, хотя и удобно для аппаратных реализаций, чрезвычайно затрудняет программные реализации. Самые скоростные реализации БЕ8 выполняют перестановки с помощью таблиц подстановок. Таблицы подстановок могут обеспечить те же характеристики «рассеивания», что и собственно перестановки, и намного повысить гибкость реализации. ✓ 8-блоки БЕ8, содержащие всего 64 4-битовых элементов, слишком малы. Теперь, с увеличением объема памяти, должны возрасти и 8-блоки. Более того, все восемь 8-блоков в БЕ8 используются одновременно. Хотя это и удобнее для аппаратуры, для программной реализации это представляется ненужным ограничением. Должны быть реализованы больший размер 8-блоков и последовательное (а не параллельное) их использование. ✓ Общепризнанно, что начальная и заключительная перестановки криптографически бессмысленны, а поэтому должны быть исключены. ✓ Все скоростные реализации ЭЕ8 заранее вычисляют ключи для каждого раунда. Отсюда, нет причин не сделать эти вычисления более сложными. ✓ В отличие от БЕ8, критерии проектирования 8-блоков должны быть общедоступны. В настоящее время к этому перечню Меркл, возможно, добавил бы «устойчивость к дифференциальному и линейному криптоанализу», ведь в то время эти методы вскрытия не были известны. Алгоритм КЬи^и КЪиГи - это 64-битовый блочный шифр. 64-битовый открытый тест сначала расщепля¬ ется на две 32-битовые половины, Ь и К. Над обеими половинами и определенными частями ключа выполняется операция ХОЯ. Затем, аналогично ОЕ8, результаты прохо¬ дят некоторую последовательность раундов. В каждом раунде младший значащий байт Ь используется как вход 8-блока. У каждого 8-блока 8 входных битов и 32 выходных бита. Далее выбранный в 8-блоке 32-битовый элемент подвергается операции ХОЯ с К. Затем I циклически сдвигается на число, кратное восьми битам, Ь и Я меняются местами, и раунд завершается. Сам 8-блок не статичен, он меняется каждые восемь раундов. Наконец, по окончании последнего раунда, над Ь и Я выполняется операция ХОЯ с другими частями ключа, и половины объединяются, образуя блок шифртекста.
358 Прикладная криптография Хотя части ключа используются для операции ХОК с блоком шифрования в начале и конце исполнения алгоритма, главное назначение ключа - генерация 8-блоков. Эти 8- блоки секретны, по существу, это часть ключа. Полный размер ключа алгоритма КЪиШ равен 512 бит (64 байт), алгоритм предоставляет способ генерации 8-блоков по ключу. Вопрос о достаточном числе раундов остается открытым. Как указывает Меркл, 8-раундовый алгоритм КЬийд уязвим к вскрытию с подобранным открытым текстом. Он рекомендует использовать 16, 24 или 32 раунда [1071]. (Меркл ограничивает количество раундов числами, кратными восьми). Поскольку 8-блоки КЪиШ зависят от ключа и секретны, алгоритм устойчив к диффе¬ ренциальному криптоанализу. Известна дифференциальная атака на 16-раундовый ЮшШ, которая восстанавливает ключ с помощью 231 подобранных открытых текстов [611], однако этот метод не удалось расширить на большее число раундов. Если принять, что лучший метод взлома КЬиГи - лобовое вскрытие, стойкость алгоритма впечатляет. 512-битовый ключ обеспечивает сложность вскрытия 2512 - это огромное число в любом случае. Алгоритм КНа^ге Кйа&е - это вторая криптосистема, предложенная Мерклом [1071]. (КЬиГи (Хуфу) и Кйай*е (Хафр) - имена египетских фараонов). Конструкция этого алгоритма близка КЬиЙ!, однако он спроектирован для приложений, где невозможны предварительные вычисления. 8-блоки не зависят от ключа. Вместо этого в Кйа1те используются фиксированные 8-блоки. Блок шифрования подвергается операции ХОЯ с ключом не только перед первым раундом и после последнего, но и после каждых восьми раундов шифрования. Меркл предполагал, что в алгоритме КЬаГге следует использовать 64- или 128-битовые ключи, и что в этом алгоритме понадобится большее число раундов, чем в КЪиГи. Это, наряду с тем, что каждый раунд Кйа&е сложнее раунда К1шйд, делает КНаГге менее скоростным. Зато алгоритму КЬаб-е не нужны никакие предварительные расчеты, что ускоряет шифрование небольших порций данных. В 1990 году Бихам и Шамир применили свой метод дифференциального криптоанализа к алгоритму Кйай-е [170]. Им удалось взломать 16-раундовый КЬай*е атакой с подобранным открытым текстом, используя около 1500 различных шифрований. На их персональном компьютере это заняло около часа. Преобразование этой атаки в атаку с известным открытым текстом потребует около 238 шифрований. Алгоритм КЬай'е с 24 раундами можно взломать с помощью атаки с подобранным открытым текстом за 253 шифрования, а с помощью атаки с известным открытым текстом - за 259 шифрования. Патенты Алгоритмы КЬиГи и Кйай-е запатентованы [1072]. Исходный код этих алгоритмов приведен в патенте. Если вы хотите получить лицензию на любой или оба алгоритма, обратитесь к директору по лицензированию корпорации Хегох (01гес1ог оГ 1лсеп$т§, Хегох Согрогайоп, Р.О. Вох 1600, 81атГогс1, СТ, 06904-1600).
ГЛАВА 13. Другие блочные шифры 359 13.8. Алгоритм КС2 ЯС2, алгоритм с переменной длиной ключа, спроектирован Роном Ривестом (Коп Клуез1) для корпорации К8А Ба1а 8есип*у (Я8АБ81). Очевидно «КС» - это аббревиатура «Коп'з Собе» (Код Рона), хотя официально она означает «Иуез! С1рЬег» (Шифр Ривеста). (Алгоритм КСЗ взломан К8АЭ81 в процессе разработки, КС1 так и не вышел за пределы блокнота Ривеста). Этот алгоритм - частная собственность, и его детали не публиковались. Но не воображайте, что это способствует его секретности. Алгоритм КС2 уже появился в коммерческих продуктах. Насколько мне известно, КС2 не был запатентован и защищен только как коммерческая тайна. КС2 представляет собой шифр с 64-битовым блоком и переменной длиной ключа, предназначенный для замены БЕ8. По утверждениям компании, программные реализации КС2 втрое быстрее ЭЕ8. Алгоритм позволяет использовать ключ переменной длины, от 0 байт и до максимальной длины строки, поддерживаемой операционной системой. Скорость шифрования от размера ключа не зависит. Ключ предварительно обрабатывается для заполнения 128-байтовой таблицы, зависящей от ключа, поэтому множество действительно различающихся ключей составляет 21024. 8-блоки в алгоритме КС2 не используются [805]. Вместо них реализованы две операции - «смешивание» и «разминание», причем в каждом раунде выбирается одна из них. В соответствии с литературой [1334]: ... ЯС2 не относится к итеративным блочным шифрам. Это предполагает, что ЯС2 устойчивее к дифференциальному и линейному криптоанализу, чем другие блочные шифры, надежность которых опирается на копирование схемы ЭЕ8. Отказ корпорации К8А081 опубликовать КС2 заставляет сомневаться в намерениях этой фирмы. Она обещает предоставить подробные сведения об алгоритме всем, кто подпишет соглашение о нераспространении информации, и утверждает, что позволит криптоаналитикам публиковать любые обнаруженные недостатки. Мне неизвестен ни один криптоаналитик (кроме тех, кто работает в компании), который исследовал алгоритм. Действительно, по существу, это означает даром выполнить для компании анализ алгоритма. Тем не менее, Рон Ривест - не шарлатан. Это всеми уважаемый и компетентный криптограф. Лично я в значительной степени доверяю этому алгоритму, хотя и не видел код. Кроме того, в Интернете опубликован алгоритм КС4, также интеллектуальная собственность К8АБ81 (см. раздел 17.1). Вероятно, публикация КС2 - только вопрос времени. По соглашению между Ассоциацией производителей программного обеспечения 8РА и правительством США, алгоритмы КС2 и КС4 (см. раздел 17.1) получили специальный экспортный статус (см. раздел 25.14). Процедура выдачи разрешения на экспорт продуктов, реализующих один из этих алгоритмов, значительно упрощается при условии длины ключа не свыше 40 бит. Приемлем ли 40-битовый ключ? Существует всего один триллион (1012) возможных ключей. При условии, что наиболее эффективным методом криптоанализа является лобовое вскрытие (смелое допущение, ведь алгоритм никогда не публиковался), и микросхема для взлома может проверить миллион ключей в секунду, поиск правильного
360 Прикладная криптография ключа займет 12.7 дней. Тысяча машин, работающих параллельно, смогут восстановить ключ за двадцать минут. Как утверждают в корпорации К8А Эа1а 8есип1у, хотя зашифрование и расшифрование выполняются быстро, исчерпывающий поиск ключа занимает немалое время. Немало времени уходит на инициализацию схемы развертки ключа. Хотя это время пренебрежимо мало при зашифровании и расшифровании сообщений, это не так при тестировании каждого возможного ключа. Правительство США никогда не позволит экспорт любого алгоритма, который оно, по крайней мере, теоретически, не может вскрыть. Оно может создать магнитную ленту или компакт-диск с блоком особого открытого текста, зашифрованного каждым возможным ключом. Для вскрытия сообщения останется только прокрутить ленту и сравнить блоки шифртекста сообщения с блоками шифртекста на ленте. При совпадении можно тестировать возможный ключ и посмотреть, есть ли в сообщении какой-нибудь смысл. Если они выберут часто встречающийся блок (все нули, символы А8СН для пробела, и т.д.), этот метод сработает. Объем данных, необходимых для хранения результатов шифрования 64-битового блока открытого текста всеми 1012 возможными ключами, составляет 8 Тбайт. Это вполне реальное число. По поводу лицензирования ЯС2 обращайтесь в К8АБ81 (см. раздел 25.4). 13.9. Алгоритм ЮЕА Первый вариант шифра ГОЕА, предложенный Ксуеджа Лай (ХиеДа ЬаГ) и Джеймсом Мэсси (1ашез Маззеу), появился в 1990 году [929]. Он назывался РЕ8 (Ргорозеб Епсгурбоп 81апбагб - Предлагаемый стандарт шифрования). В следующем году, после демонстрации Бихамом и Шамиром возможностей дифференциального криптоанализа, авторы укрепили свой шифр против такой атаки и назвали новый алгоритм 1РЕ8 (1тргоуес1 Ргорозес! Епсгурбоп 8*апс1агс1 - Улучшенный предлагаемый стандарт шифрования) [931, 924]. В 1992 году название 1РЕ8 было изменено на ЮЕА (1п1ета1;юпа1 ВаХа Епсгурйоп А1§оп1Ьт - Международный алгоритм шифрования данных) [925]. В основе алгоритма ГОЕА лежат некоторые впечатляющие теоретические положения и, хотя криптоаналитики добились некоторых успехов при взломе вариантов с уменьшенным числом раундов, алгоритм все еще держится. Мне кажется, это самый лучший и надежный блочный алгоритм, опубликованный до настоящего времени. Будущее алгоритма ГОЕА пока неясно. Попыток заменить им БЕ8 не было, отчасти потому, что он запатентован и должен быть лицензирован при использовании в коммерческих приложениях, а отчасти потому, что люди выжидают, наблюдая, как проявит себя этот алгоритм в предстоящие годы криптоанализа. Его сегодняшняя известность объясняется тем, что он служит частью программы РОР (см. раздел 24.12). Обзор алгоритма ЮЕА ГОЕА - блочный шифр; он работает с 64-битовыми блоками открытого текста и ключами длиной 128 бит. Для зашифрования и расшифрования используется один и тот же алгоритм.
ГЛАВА 13. Другие блочные шифры 361 Как и другие рассмотренные выше блочные шифры, ГОЕА использует рассеивание и перемешивание. В основе конструкции алгоритма лежит «смешение операций различных алгебраических групп». Смешиваются три алгебраические группы, которые нетрудно реализовать аппаратными или программными средствами: ✓ Операция ХОК. 4 ✓ Сложение по модулю 216* ✓ Умножение по модулю 216+1. (Эту операцию можно рассматривать как 8-блок алгоритма ГОЕА). Все эти операции (а в алгоритме используются только они, перестановки на битовом уровне не применяются) работают с 16-битовыми подблоками. Этот алгоритм даже эффективнее работает на 16-битовых процессорах. Описание алгоритма ЮЕА Схема алгоритма ГОЕА представлена на Рис. 13.9. 64-битовый блок данных делится на четыре 16-битовых подблоков Хи Х2, Х3 и Х4. Эти подблоки используются как входы первого раунда алгоритма. Всего в алгоритме восемь раундов. На каждом раунде четыре подблока подвергаются операциям ХОК, сложениям и умножениям друг с другом и шестью 16-битовыми подключами. Между раундами второй и третий подблоки обмениваются местами. Наконец в выходном преобразовании четыре подблока объединяются с четырьмя подключами. На каждом раунде события происходят в следующем порядке: 1. Перемножаются Х\ и первый подключ. 2. Складываются Х2 и второй подключ. 3. Складываются Х3 и третий подключ. 4. Перемножаются Х4 и четвертый подключ. 5. Выполняется операция ХОК над результатами раундов 1 и 3. 6. Выполняется операция ХОК над результатами раундов 2 и 4. 7. Перемножаются результаты раунда 5 и пятый подключ. 8. Складываются результаты раундов 6 и 7. 9. Перемножаются результаты раунда 8 и шестой подключ. 10. Складываются результаты раундов 7 и 9. 11. Выполняется операция ХОК над результатами раундов 1 и 9. 12. Выполняется операция ХОК над результатами раундов 3 и 9. 13. Выполняется операция ХОК над результатами раундов 1 и 10. 14. Выполняется операция ХОК над результатами раундов 4 и 10.
362 Прикладная криптография 210) ОДИН раунд семь ^ дополни- ’ тельных раундов 2,(9)-*ф 2?(9) »ф Выходное преобразование 2з<9) Уз Уа У. у к, Х(: 16-битовый подблок открытого текста У1: 16-битовый подблок шифртекста 2/ ^: 16-битовый подблок ключа ф: побитовая операция исключающее ИЛИ (ХОЯ) над 16-битовыми подблоками РН • сложение по модулю 216 16-разрядных целых чисел О: умножение по модулю 216+1 16-разрядных целых чисел, причем нулевой подблок соответствует 216 Рис. 13.9. Алгоритм ЮЕА На выходе раунда создаются четыре подблока - результаты действий 11—14. Поменяйте местами два внутренних подблока в любом (но не последнем) раунде, и вы получите исходные данные для следующего раунда. После восьмого раунда выполняется заключительное преобразование: 1. Перемножаются Х\ и первый подключ. 2. Складываются Х2 и второй подключ. 3. Складываются Х3 и третий подключ. 4. Перемножаются Х4 и четвертый подключ. Наконец четыре подблока снова соединяются, образуя шифртекст. Создание подключей столь же просто. В алгоритме используются 52 подключа - шесть в каждом из восьми раундов и еще четыре в заключительном преобразовании. Сначала
ГЛАВА 13. Другие блочные шифры 363 128-битовый ключ разделяется на восемь 16-битовых подключей. Это первые восемь подключей алгоритма (шесть для первого раунда и два - для второго). Затем ключ циклически сдвигается налево на 25 битов и снова делится на восемь подключей. Первые четыре подключа используются в раунде 2, а оставшиеся четыре - в раунде 3. Ключ циклически сдвигается налево на 25 битов для получения следующих восьми подключей, и т.д. до завершения алгоритма. Расшифрование выполняется аналогично зашифрованию, за исключением того, что подключи инвертируются и немного изменяются. Подключи, используемые при расшифровании, представляют собой обратные значения ключей шифрования по отношению к операциям либо сложения, либо умножения. (В алгоритме ЮЕА подблоки, состоящие из одних нулей, полагаются равными 216 = - 1 для умножения по модулю 216+ 1. Таким образом, обратное значение 0 относительно умножения равно 0). Эти вычисления могут занять некоторое время, но их нужно выполнять всего один раз для каждого ключа расшифрования. Подключи зашифрования, и соответствующие подключи расшифрования представлены в табл. 13.4. Таблица 13.4. Подключи зашифрования и расшифрования алгоритма ЮЕА Раунд Подключи зашифрования Подключи расшифрования 1 гх™ 22(1> 23(1> 24(,) 25(,) 26(1> 2,®-' -22<9> -23 24<9>' 25(8) и%) 2 г/2) 2® 23(2) 24(2> 25(2) 26<2> 2/8»'1 -23(8) -22 24<8)-' 25(7> 26(7) 3 22(3) 23(3) 24(3) 25(3) 26<3> 2,<7>-' -23(7) -22 24(7)-' 25(6) 26(6) 4 2,<4> 22<4> 2з(4> 24(4> 25<4> 2*® 2,(6^' -2з(6) -22 24<6>-' 25<5> 26(5) 5 2,(5> 22<5> 23(5) 24(5> 25<5) 26(5) 2,<5>-' -2з(5) -22 24(5)'' 25(4) 2*® 6 2,(6) 22<6) 23(6) 24(6) 25(6) 26(6) 2/4)'1 -2з(4) -22 24®-' 25(3) 26(3) 7 2,<7> 22<7> 23(7) 24(7) 26<7> 2,(3)-1 -23(3) -22 24<3>' 25(2) 26(2) 8 2,® 22(8) 2з(8) 2® 25(8) 26<8> 2/2)'1 -23(2) -22 24(2)и 25(|) 26(,) Заклю¬ читель¬ ное пре- образов ание 2,<9> 22<9> 2з(9) 24(9) -22(1) -23 24(1)-1 Скорость исполнения алгоритма ЮЕА Современные программные реализации алгоритма ГОЕА исполняются примерно вдвое быстрее БЕ8. На компьютере с процессором 1386/33 МГц ГОЕА шифрует данные со скоростью 880 Кбит/сек, а на компьютере с 1486/33 МГц - со скоростью 2400 Кбит/сек. Возможно, вы ожидали, что ГОЕА должен был быть побыстрее, но умножения - дорогое удовольствие. Умножение двух 32-битовых чисел на процессоре 1486 занимает 40 циклов тактового генератора (10 на процессоре Репбит). Реализация алгоритма РЕ8 на базе СБИС шифрует данные со скоростью 55 Мбит/сек. при тактовой частоте 25 МГц [208,398]. Другая СБИС, разработанная ЕТН 2лшсЬ и состоящая из 251000 транзисторов на кристалле площадью 107.8 мм2, шифрует
364 Прикладная криптография данные алгоритмом ГОЕА со скоростью 177 Мбит/сек при тактовой частоте 25 МГц [926, 207, 397]. Криптоанализ алгоритма ЮЕА Длина ключа ГОЕА равна 128 бит - более чем вдвое длиннее ключа БЕ8. При условии, что наиболее эффективно лобовое вскрытие, для вскрытия ключа потребуется 2128 (1038) шифрований. Создайте микросхему, которая может проверять миллиард ключей в секунду, объедините миллиард таких микросхем, и вам потребуется 1013 лет для решения проблемы. Это больше возраста Вселенной. 1024 таких микросхем могут найти ключ за день, но во Вселенной не найдется столько атомов кремния, чтобы построить подобную машину. Наконец-то мы чего-то достигли, хотя в некоторых спорных вопросах я лучше останусь сторонним наблюдателем. Возможно, лобовое вскрытие нельзя полагать лучшим методом вскрытия ГОЕА. Алгоритм все еще слишком нов, чтобы можно было говорить о каких-то конкретных криптоаналитических результатах. Разработчики сделали все возможное, чтобы повы¬ сить устойчивость алгоритма к дифференциальному криптоанализу. Они выдвинули концепцию Марковского шифра и продемонстрировали, что устойчивость к дифферен¬ циальному криптоанализу можно моделировать и оценить количественно [931, 925]. (Для сравнения с алгоритмом ГОЕА, устойчивость которого к дифференциальному криптоанализу была усилена, и который показан на Рис. 13.9, на Рис. 13.10 приведен первоначальный алгоритм РЕ8. Удивительно, как такие незначительные изменения могут привести к столь большим различиям). В [925] Лай утверждал (он привел подтверждение, но не доказательство), что алгоритм ГОЕА устойчив к дифферен¬ циальному криптоанализу уже после 4 из 8 раундов. Согласно Бихаму, его попытка взломать ГОЕА криптоанализом на основе связанных ключей тоже провалилась [160]. Вилли Майер ОУНН Ме1ег) исследовал три алгебраические операции ГОЕА и показал, что, хотя они несовместимы, иногда эти операции можно упростить так, чтобы до некоторой степени облегчить криптоанализ [1050]. Его вскрытие 2-раундового ГОЕА оказалось эффективнее лобового вскрытия (242 операций), но для ГОЕА с тремя и более раундами эффективность этого вскрытия была ниже лобового вскрытия. Надежность полного 8-раундового алгоритма ГОЕА осталась непоколебимой. Джоан Дэймен (1оап Баетеп) открыла класс слабых ключей ГОЕА [406, 409]. Эти ключи нельзя назвать слабыми в том смысле, в котором слабы некоторые ключи БЕ8, для которых функция шифрования обратна самой себе. Слабость этих ключей в том, что взломщик может легко восстановить их атакой с подобранным открытым текстом. Например, к слабым относится следующий ключ (в шестнадцатеричной записи): 0000,0000,0x00,0000,0000,ОООх, хххх, хООО В позиции «х» может стоять любая цифра. При использовании такого ключа побитовая* операция ХОЯ определенных пар открытых текстов эквивалентна побитовой операции ХОЯ результирующих пар шифртекстов. В любом случае вероятность случайной генерации одного из таких слабых ключей крайне незначительна: 1/296. Опасности случайного выбора такого ключа практически нет. К тому же, нетрудно модифицировать ГОЕА так, чтобы исключить появление
ГЛАВА 13. Другие блочные шифры 365 слабых ключей - достаточно выполнить операцию ХОК каждого подключа с числом ОхОбае [409]. Несмотря на многочисленность попыток криптоанализа алгоритма ЮЕА, мне не известна ни одна успешная. 2,0) -*Л22(1)-*Л один раунд семь дополни¬ тельных : раундов | 21(9)-^022(9) Выходное преобразование ^(9) X1: 16-битовый подблок открытого текста У}: 16-битовый подблок шифртекста 2^: 16-битовый подблок ключа ®: побитовая операция исключающее ИЛИ (ХОК) над 16-битовыми подблоками Щ: сложение по модулю 216 16-разрядных целых чисел О' умножение по модулю 216 + 1 16-разрядных целых чисел, причем нулевой подблок соответствует 216 Рис. 13.10. Алгоритм РЕ8 Режимы работы и варианты ЮЕА Алгоритм ГОЕА можно исполнять в любом режиме работы блочного шифра (см. главу 9). Подобно ОЕ8, любые реализации двойного алгоритма ГОЕА уязвимы к атаке «встреча посередине» (см. раздел 15.1). Но поскольку ключ ГОЕА более чем вдвое длиннее ключа ОЕ8, эта атака непрактична. Объем памяти, необходимой для нее, составит 64* 2128 бит, т.е. 1039 байт. Возможно, во Вселенной и хватит материи на постройку такого хранилища, но я в этом сомневаюсь.
366 Прикладная криптография Но если вас все же беспокоит возможность использования материи из параллельных Вселенных, используйте реализацию утроенного алгоритма ЮЕА (см. раздел 15.2): с = ЕКз(оК2(Ек> (Р))) Такая реализация устойчива к атаке «встреча посередине». Кроме того, ничто не препятствует реализации алгоритма ЮЕА с независимыми подключами, особенно если средства управления ключей позволяют использовать более длинные ключи. Для ЮЕА нужно всего 52 16-битовых ключа, общей длиной 832 бит. Этот вариант определенно надежнее, правда, никто не может сказать насколько. В простейшей модификации можно просто удвоить размер блока. Кроме того, алгоритм превосходно работал бы с 32-битовыми подблоками вместо 16-битовых и 256-битовым ключом. Шифрование выполнялось бы быстрее, и стойкость возросла в 232 раза. Или нет? Теория, на которой основан алгоритм, опирается на предположение о простоте числа 216 + 1. Но число 232 + 1 к простым числам не относится. Вероятно, алгоритм и можно изменить так, чтобы он работал, но его стойкость будет совсем не та. Лай говорит, что заставить работать такой алгоритм будет нелегко [926]. Несмотря на то, что алгоритм ЮЕА, по-видимому, намного надежнее БЕ8, не всегда просто заменить один алгоритм другим в существующем приложении. Например, если ваша база данных и шаблоны сообщений жестко запрограммированы на работу с 64-битовым ключом, реализация 128-битового ключа ЮЕА, вероятно, невозможна. Для таких приложений можно создать 128-битовый ключ, объединив 64-битовый ключ с ним же самим. Однако учтите, такая модификация заметно ослабляет алгоритм ГОЕА. Если вас больше тревожит скорость работы, а не безопасность, испытайте вариант ЮЕА с меньшим числом раундов. В настоящее время лучший метод вскрытия ГОЕА работает быстрее лобового вскрытия только при использовании в алгоритме 2.5 и менее раундов [1050]. 4-раундовый алгоритм ГОЕА исполняется вдвое быстрее и, насколько мне известно, его надежность практически та же. Предостережение пользователям ЮЕА - относительно новый алгоритм, и многие вопросы пока остаются открытыми. Образует ли ЮЕА группу? (Лай полагает, что нет [926]). Не существуют ли пока что неизвестные методы вскрытия этого шифра? У ЮЕА прочная теоретическая база, но снова и снова алгоритмы, казавшиеся надежными, капитулируют перед новыми формами криптоанализа. Ряд групп академических и военных исследователей не опубликовали свои результаты криптоанализа ЮЕА. Возможно, кто-нибудь уже добился (или когда-нибудь добьется) успеха. Патенты и лицензии Алгоритм ГОЕА запатентован в Европе и Соединенных Штатах [1012, 1013]. Патент принадлежит фирме Азсот-ТесЬ АО. Для некоммерческого использования плата за лицензию не взимается. Если вы заинтересованы в лицензии на коммерческое примене¬ ние алгоритма, обратитесь по адресу: Азсот 8уз1ес АО, СМУУ, ОемегЪерагк, СН-5506, Ма§еп\уП, 8\УЙ2ег1апс1; +41 64 56 59 83; Факс: +41 64 56 59 90; 1(1еа@азсот.сЬ.
ГЛАВА 13. Другие блочные шифры 367 13.10. Алгоритм ММВ Недовольство использованием в ГОЕА 64-битового блока шифрования привело к созданию Джоаной Дэймен алгоритма под названием ММВ (Моёи1аг МиШрПсабоп-Ъазес! В1оск с1рЬег - модулярный мультипликативный блочный шифр) [385, 405, 406]. В основе ММВ лежит теория, используемая и в ГОЕА: смешивание операций различных алгебраических групп. ММВ - итеративный алгоритм, главным образом состоящий из линейных действий (ХОК и использование ключа) и параллельного применения четырех крупных обратимых нелинейных подстановок. Эти подстановки определяются с помощью умножения по модулю 232-1 с постоянными множителями. В итоге появляется алгоритм, использующий 128-битовый ключ и 128-битовый блок. Алгоритм ММВ оперирует 32-битовыми подблоками текста (х0, хь хъ х3) и 32-битовыми подблоками ключа (к0, къ къ къ). Это упрощает реализацию алгоритма на современных 32-битовых процессорах. Чередуясь с операцией ХОК, шесть раз используется нелинейная функция Г. Вот этот алгоритм (все операции с индексами выполняются по модулю 4): х; = х, 0 к{ для / = 0..3 Г(Х0>*1>*2>*3) х{ = х, 0 к1+1 для / = 0..3 {(Хо,Х19Х2уХ3) х, - х, 0 к!+2 для / = 0..3 Г(х0,х1,х2,х3) х1 - х1 0 к1 для / = 0..3 Г(х0,х,,х2,д:з) х( = х, 0 км для I = 0..3 Г(Х0,Х1,Х2,Х3) х1 = х, 0 км Для I = 0..3 ^Х^Х^Х^Хз) Функция Г исполняется в три шага: 1. х; = с1 * х/ для / = 0..3 (Если на входе умножения одни единицы, то на выходе - тоже одни единицы). 2. Если младший значащий бит х0 = 1, то х0 = х0 0 С. Если младший значащий байт х3 = 0, то х3 = х3 0 С. 3. х, = х^! 0 х, 0 х/+1 для / = 0..3.
368 Прикладная криптография Все операции с индексами выполняются по модулю 4. Операция умножения на шаге 1 выполняется по модулю 232-1. Специальный случай для данного алгоритма: если второй операнд равен 232-1, результат тоже равен 232-1. В алгоритме используются следующие константы: С = 2ааааааа с0 = 025Всс1Ь с, =2 *с0 с2 = 23 * с0 с3 = 27 * с0 Константа С - «простейшая» константа без круговой симметрии, высоким троичным весом и нулевым младшим значащим битом. У константы с0 есть другие особые характеристики. Константы сь с2 и с3 - сдвинутые версии с0, и служат для предотвращения атак, основанных на симметрии. Подробности можно найти в [405]. Расшифрование выполняется в обратном порядке. Этапы 2 и 3 инверсны им самим. На этапе 1 вместо с, используется с~х. Значение с0-1 =0баб4694 . Стойкость ММВ Схема алгоритма ММВ обеспечивает на каждом раунде значительное и независимое от ключа рассеивание. В ЮЕА рассеивание в определенной мере зависит от конкретных подключей. В отличие от ЮЕА, ММВ изначально проектировался в расчете на отсутствие слабых ключей. ММВ - это уже мертвый алгоритм [402]. Это утверждение справедливо по многим причинам, хотя криптоанализ ММВ и не был опубликован. Во-первых, алгоритм проектировался без учета требования устойчивости к линейному криптоанализу. Устойчивость к дифференциальному криптоанализу обеспечил выбор мультиплика¬ тивных множителей, но о существовании линейного криптоанализа авторы не знали. Во-вторых, Эли Бихам реализовал эффективную атаку с подобранным ключом [160], использующую тот факт, что все раунды идентичны, а развертка ключа - просто циклический сдвиг на 32 бита. В третьих, несмотря на эффективность программной реализации ММВ, аппаратное исполнение менее эффективно по сравнению с ЭЕ8. Дэймен предлагает желающим улучшить алгоритм ММВ сначала проанализировать умножение по модулю с помощью линейного криптоанализа и подобрать новый мно¬ житель, а затем сделать константу С различной на каждом раунде [402]. Затем улучшить развертку ключа, добавляя к ключам раундов константы с целью устранения смещения. Однако сам он не стал заниматься этим, а разработал алгоритм 3-\\^ау (см. раздел 14.5). 13.11. Алгоритм СА-1.1 СА - это блочный шифр, основанный на клеточных автоматах, разработанный Говардом Гутовицом (Но\уагб ОЩхпуйг) [677, 678, 679]. Он шифрует 384-битовые блоки открытого
ГЛАВА 13. Другие блочные шифры 369 текста 1088-битовым ключом (на самом деле используются два ключа - 1024-битовый и 64-битовый). Из-за природы клеточных автоматов алгоритм наиболее эффективен при реализации в крупных параллельных интегрированных схемах. В алгоритме СА-1.1 использованы как обратимые, так и необратимые правила клеточного автомата. При обратимом правиле каждое состояние структуры происходит из единственного предшествующего состояния, а при необратимом правиле у каждого состояния может быть несколько предшественников. При шифровании необратимые правила итерационно проходятся обратно во времени. Для продвижения обратно от текущего состояния произвольно выбирается одно из состояний-предшественников. Этот процесс многократно повторяется. Таким образом, обратные итерации служат для смешивания случайной информации с информацией сообщения. СА-1.1 использует особый тип частично необратимого линейного правила, согласно которому для любого данного состояния можно быстро построить случайное состояние-предшественник. На некоторых стадиях шифрования используются и обратимые правила. Обратимые правила (простые параллельные перестановки подблоков состояния) нелинейны. Необратимые правила полностью определяются ключом, а обратимые зависят как от ключа, так и от случайной информации, вставленной в ходе шифрования необратимыми правилами. Алгоритм СА-1.1 основан на структуре блочных связей. Иными словами, обработка блока сообщения частично отделена от обработки потока случайной информации, вставленной при шифровании. Эта случайная информация служит для связи друг с другом стадий шифрования. Кроме того, ее можно использовать для связи с потоком шифртекста. Информация связи генерируется как часть процесса шифрования. Так как СА-1.1 - новый алгоритм, слишком рано делать какие-либо заявления о его надежности. Гутовиц упоминает некоторые возможные атаки, включая дифферен¬ циальный криптоанализ, но ему не удалось вскрыть алгоритм. В качестве стимула Гутовиц предложил награду в 1000 долларов «первому, кто разработает доступную процедуру вскрытия СА-1.1». Алгоритм СА-1.1 запатентован [678], но доступен для некоммерческого использования. При необходимости получить лицензию на алгоритм или объявленную награду за криптоанализ, обращайтесь к Говарду Гутовицу по адресу Но\уагс1 СиЦпукг, Е8РС1, ЬаЬога1опе сГЕ1ес1гошяие, 10 гие УаициеНп, 75005 Рапз, Ргапсе. 13.12. 5к|р]аск Алгоритм 8к1р|аск разработан АНБ в качестве алгоритма шифрования для микросхем СПррег и СарзЮпе (см. разделы 24.16 и 24.17). Поскольку этот алгоритм объявлен секретным, подробная информация никогда не публиковалась2. Он будет реализован только в защищенной от взлома аппаратуре. Этот алгоритм объявлен секретным не потому, что это повышает его надежность, просто АНБ не хочет, чтобы 8к1р]аск использовался без механизма депонирования ключей 2 Недавно он был рассекречен, информация о нем есть на Ьир://с5гс.П151.§оу/епсгурйоп/5к1р]аск/зк1р]аск-кеа.Ь1т. - Прим. ред.
370 Прикладная криптография СНррег. АНБ хочет, чтобы программные реализации алгоритма распространились по всему миру. Надежен ли 81ар)аск? Если АНБ захочет создать надежный алгоритм, оно, скорее всего, этого добьётся. С другой стороны, если АНБ захочет создать алгоритм с лазейкой, оно сможет сделать и это. Вот что было опубликовано [1154, 462]. ✓ 8к1р]аск - итеративный блочный шифр. ✓ Размер блока составляет 64 бит. ✓ В алгоритме используется 80-битовый ключ. ✓ Алгоритм можно использовать в режимах ЕСВ, СВС, 64-битовом ОРВ, либо 1-, 8-, 16-, 32-или 64-битовом СРВ. ✓ Операции зашифрования и расшифрования состоят из 32 раундов. ✓ АНБ начало работу над ним в 1985 году и завершило оценку в 1990 году. В документации на микросхему Муко1гопх СНррег утверждается, что задержка выдачи результата, присущая алгоритму 8к1р)аск, составляет 64 такта. Это означает, что на каждый раунд приходится два такта: один, предположительно, для подстановки с помощью 8-блока, а другой - для заключительной операции ХОЯ в конце каждого раунда. (Не забывайте, перестановки при аппаратных реализациях не занимают времени). В документации Муко1гопх эта двухтактная операция называется «О-блоком», а все вместе - «сдвигом». (Некоторая часть О-блока' носит название «Р-таблицы». Вероятно, это таблица констант, но может быть и таблицей функций). По одним слухам 8к1р]аск использует 16 8-блоков, а по другим - для хранения 8-блоков нужно всего 128 байт памяти. Непохоже, чтобы оба этих слуха были правдой. Еще один слух утверждает, что раунды 8к1р)аск, в отличие от БЕ8, работают не с половиной блока. Это вместе с замечанием о «сдвигах» и случайном заявлении на Сгур1о'94 о том, что в 8к1р|аск применяется «48-битовая внутренняя структура», позволяет сделать вывод, что алгоритм по своей схеме похож на 8НА (см. раздел 18.7), но использует четыре 16-битовых подблока. Три подблока, обработанные зависящей от ключа однонаправленной функцией, дают 16 битов, которые подвергаются операции ХОЯ с оставшимся подблоком. Затем весь блок циклически сдвигается на 16 битов и поступает на вход следующего раунда, или сдвига. При этом тоже используются 128 байтов данных 8-блока. Я подозреваю, что 8-блоки зависят от ключа. По своей структуре 8к1р|аск, вероятно, подобен алгоритму ОЕ8. АНБ понимает, что его защищенная от взлома аппаратура рано или поздно будет вскрыта и исследована, поэтому оно не станет рисковать никакими передовыми криптографическими методами. То, что АНБ планирует использовать алгоритм 8к1р|аск для шифрования своей Системы защиты сообщений (ЭеГепзе Мезза§т§ 8уз*ет - БМ8), свидетельствует о надежности алгоритма. Чтобы убедить скептиков, N181 разрешил комиссии «уважаемых неправительственных экспертов... Получить доступ к конфиденциальным подробностям алгоритма, чтобы они исследовали его возможности и опубликовали результаты своих исследований» [812].
ГЛАВА 13. Другие блочные шифры 371 В предварительном отчете этой комиссии экспертов [262] (окончательного отчета не было, и возможно никогда не будет) сообщалось: Принимая во внимание, что стоимость вычислительных мощностей уменьшается вдвое каждые 18 месяцев, сложность вскрытия 8Ир]аск сравняется с сегодняшней сложностью вскрытия йЕ8 только через 36 лет. Следовательно, риск взлома 5/ф/ас/с в ближайшие 30—40 лет незначителен. Незначителен и риск взлома 8/с/р/ас/с более скоростными методами вскрытия, включая дифференциальный криптоанализ. У алгоритма нет слабых ключей, отсутствует и свойство комплементарности. Из-за недостатка времени на большое самостоятельное исследование алгоритма, эксперты изучили представленное АНБ описание разработки и оценки алгоритма. Устойчивость 5/ф/ас/с к криптоанализу не зависит от сохранения в тайне самого алгоритма. Итак, участники дискуссии не смогли поработать с алгоритмом достаточно долго, чтобы прийти к каким-нибудь самостоятельным выводам. Все, что они сумели - взглянуть на результаты, представленные АНБ. Остался без ответа вопрос, плоское ли пространство ключей 8к1р]аск (см. раздел 8.2). Даже если у 8к1р]аск нет ключей, слабых в том смысле, как это понимается в ОЕ8, ряд особенностей процесса использования ключа может сделать одни ключи сильнее других. У 8к1р]аск могло бы быть 270 сильных ключей, гораздо больше, чем у ОЕ8; вероятность случайного выбора одного из этих сильных ключей равна 1/1000. Лично я думаю, что пространство ключей 8к1р]аск - плоское, но то, что об этом никто не заявил публично, вызывает тревогу. Алгоритм 8к1р)аск запатентован, но в соответствии с соглашением о секретности патентов [1122], хранится в тайне. Патент будет опубликован тогда и только тогда, когда алгоритм 8к1р]аск будет успешно воспроизведен кем-то посторонним. Это дает возможность правительству воспользоваться и преимуществами защиты патентом, и преимуществами конфиденциальности коммерческой тайны.
ГЛАВА 14. И еше блочные шифры 14.1. Алгоритм ГОСТ 28147-89 ГОСТ - это блочный алгоритм, разработанный в Советском Союзе [655, 1393]. Название «ГОСТ» произошло от аббревиатуры ГОСТ - «Государственный СТандарт», нечто подобное документам Р1Р8 за исключением того, что такое название носят практически все стандарты бывшего СССР. (В действительности, его полное название - Государст¬ венный стандарт СССР, или Государственный стандарт Союза Советских Социалисти¬ ческих Республик). Обозначение 28147-89 указывает номер и дату выпуска данного стандарта. Все стандарты СССР были утверждены Государственным комитетом по Стандартам. Я не знаю, использовался ли алгоритм ГОСТ 28147-89 для шифрования секретного трафика или только для гражданских целей. В начале стандарта имеется примечание, которое гласит, что алгоритм «удовлетворяет всем криптографическим требованиям и не налагает ограничения на тип защищаемой информации». Я слышал утверждения, что алгоритм ГОСТ первоначально использовался только в каналах связи высокого уровня, включая секретные военные коммуникации, но доказательства этого у меня отсутствуют. Описание алгоритма ГОСТ ГОСТ представляет собой 64-битовый алгоритм с 256-битовым ключом. Кроме того, в ГОСТе применяется добавочный ключ, рассматриваемый чуть ниже. В процессе работы алгоритма последовательно, на 32 раундах, выполняется простой алгоритм шифрования. Вначале шифруемый текст разбивается на левую половину Ь и правую половину К. На раунде / используется подключ К(. На каждом /-ом раунде алгоритма ГОСТ выполняются следующие операции: А = А-, Я, 0 Г ) Раунд1 алгоритма ГОСТ представлен на Рис. 14.1. Функция/проста. Сначала над правой половиной шифруемого текста и /-ым подключом выполняется операция сложения по модулю 232. Результат операции разбивается на восемь 4-битовых фрагмента; каждый из этих фрагментов поступает на вход своего 5-блока2. В алгоритме ГОСТ используются восемь различных 5-блоков. Первый 4-битовый фрагмент поступает в первый 5-блок, следующий 4-битовый фрагмент - во второй 5-блок и т.д. Каждый из 5-блоков является перестановкой чисел от 0 до 15. Например, один из 5-блоков может выглядеть таким образом: 7, 10, 2, 4, 15,9, 0,3,6, 12, 5, 13, 1,8, И 1 «Основной шаг», в терминах этого ГОСТа - Прим. ред. 2 «Узел замены», в терминах ГОСТа - Прим. ред.
374 Прикладная криптография Рис. 14.1. Раунд алгоритма ГОСТ В данном случае, если на вход 5-блока поступает 0, то на выходе появится 7. Если на вход поступает 1, то на выходе будет 10 и т.д. Все восемь 5-блоков различны, фактически они служат дополнительным ключевым материалом. 5-блоки должны храниться в секрете. Выходы всех восьми 5-блоков объединяются в одно 32-х битовое слово; затем все это слово сдвигается циклически влево на 11 битов. На завершающем этапе результат объединяется операцией ХОК с левой половиной шифруемого текста, создавая новую правую половину, а правая половина становится новой левой половиной. После выполнения этих операций 32 раза все будет завершено. Подключи генерируются очень просто. Ключ размером 256 битов разбивается на восемь 32-битовых блоков: к\, к2, ....А8. На каждом раунде используется свой подключ (см. табл. 14.1). Расшифрование выполняется точно так же, как зашифрование, просто инвертируется порядок подключей А,. Стандарт ГОСТ не определяет метод генерации 8-блоков, указывается только, что блоки должны быть откуда-то взяты. [655]. Это породило слухи о том, что компетентная советская организация может предоставлять «хорошие» 5-блоки «хорошим» организациям и «плохие» 5-блоки тем организациям, которые эта организация намерена прослушивать. Возможно, эти слухи имеют под собой почву, но неофициальные беседы с российским производителем микросхем, реализующих алгоритм ГОСТ, указывают на другое. Оказывается, что производитель создает самостоятельно перестановки для 5-блока с помощью генератора случайных чисел.
ГЛАВА 14. И еще блочные шифры 375 Таблица 14.1. Использование подключей в различных раундах алгоритма ГОСТ Раунд: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Подключ: 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 Раунд: 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Подключ: 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1 Некоторое время назад на поверхность всплыл набор 8-блоков, используемый в приложении для Центрального Банка РФ. Данные 5-блоки используются также и в однонаправленной хэш-функции ГОСТ (см. раздел 18.11) [657]. Они перечислены в табл. 14.2. Криптоанализ алгоритма ГОСТ Далее представлены основные отличия между алгоритмами БЕЗ и ГОСТ. ✓ Алгоритм БЕ8 использует сложную процедуру генерации подключей из ключей. В алгоритме ГОСТ указанная процедура весьма проста. ✓ В алгоритме ЭЕ8 используется 56-битовый ключ, а в алгоритме ГОСТ - 256-битовый. Если к этому добавить засекреченные перестановки 5-блоков, то общий объем засекреченной информации алгоритма ГОСТ составит примерно 610 битов. ✓ В 5-блоках алгоритма БЕ8 используются 6-битовые входы и 4-битовые выходы, а в 5-блоках алгоритма ГОСТ - 4-битовые входы и выходы. В обоих алгоритмах используется по восемь 5-блоков, однако размер 5-блока ГОСТа равен одной четвертой 5-блока БЕ8. ✓ В алгоритме БЕ8 применяются нерегулярные перестановки, называемые Р-блоком, а в алгоритме ГОСТ используется 11- битовый циклический сдвиг влево. ✓ В алгоритме ЭЕ8 выполняется 16 раундов, а в алгоритме ГОСТ - 32 раунда. Таблица 14.2. 8-блоки алгоритма ГОСТ 8-блок 1: 4 10 9 2 13 8 0 14 6 11 1 12 7 15 5 3 8-блок 2: 14 И 4 12 6 13 15 10 2 3 8 1 0 7 5 9 8-блок 3: 5 8 1 13 10 3 4 2 14 15 12 7 6 0 9 И 8-блок 4: 7 13 10 1 0 8 9 15 14 4 6 12 11 2 5 3
376 Прикладная криптография 8-блок 5: 6 12 7 1 5 15 13 8 4 10 9 14 0 3 11 2 8-блок 6:. 4 11 10 0 7 2 1 13 3 6 8 5 9 12 15 14 8-блок 7: 13 11 4 1 3 15 5 9 0 10 14 7 6 8 2 12 8-блок 8: 1 15 13 0 5 7 10 4 9 2 3 14 6 11 8 12 Если допустить, что наилучшим способом взлома алгоритма ГОСТ является лобовое вскрытие, то этот алгоритм можно считать весьма надежным. В алгоритме ГОСТ используется 256-битовый ключ, а если учитывать секретные Яблоки, то длина ключа еще более возрастает. Алгоритм ГОСТ, очевидно, более устойчив к дифференциальному и линейному криптоанализу, чем алгоритм БЕЗ. Хотя случайные 8-блоки ГОСТ, быть может, слабее фиксированных 5-блоков алгоритма БЕЗ, их секретность увеличивает устойчивость алгоритма ГОСТ к дифференциальному и линейному криптоанализу. Вдобавок, эти методы вскрытия более чувствительны к количеству раундов - чем больше раундов, тем более трудоемко вскрытие. Число раундов алгоритма ГОСТ вдвое выше, чем в алгоритме БЕЗ; одно только это, возможно, делает невыполнимыми и дифференциальный, и линейный методы криптоанализа. Другие компоненты алгоритма ГОСТ подобны используемым в алгоритме БЕЗ, или слабее. В алгоритме ГОСТ отсутствует расширяющая перестановка, предусмотренная в БЕЗ. Удаление этой перестановки из БЕЗ ослабляет алгоритм из-за уменьшения лавинного эффекта. Поэтому разумно считать, что отсутствие указанной операции в ГОСТе ослабляет и этот алгоритм. Сложение, используемое в ГОСТе, не менее надежно, чем операция ХОК, используемая в БЕЗ. Наибольшим различием между алгоритмами представляется использование в ГОСТ перестановки вместо циклического сдвига. Использование в БЕЗ операция перестановки увеличивает лавинный эффект. В алгоритме ГОСТ изменение одного входного бита воздействует на один 5-блок одного раунда. Далее этот 5-блок влияет на два 5-блока следующего раунда, три блока следующего раунда и т.д. В алгоритме ГОСТ потребуется 8 раундов, чтобы изменение одного входного бита повлияло на каждый бит результата, а алгоритму БЕЗ для этого потребуется всего 5 раундов. Это, конечно же, слабое место. Но не забывайте, что алгоритм ГОСТ состоит из 32 раундов, а БЕЗ - только из 16 раундов. Разработчики ГОСТ постарались найти равновесие между безопасностью и эффективностью. Они изменили концепцию алгоритма БЕЗ с целью создания алгоритма, оптимального для программной реализации. По-видимому, разработчики были менее уверены в надежности своего алгоритма и попытались компенсировать этот недостаток значительным увеличением длины ключа, засекречиванием 5-блоков и
ГЛАВА 14. И еще блочные шифры 377 удвоением числа итераций. Увенчались ли их усилия созданием более надежного, чем ОЕ8, алгоритма - этот вопрос остается открытым3. 14.2. Алгоритм СА5Т СА8Т был разработан в Канаде Карлайслом Адамсом (СагПз1е Абашз) и Стаффордом Таваресом (81айогё Тауагез) [10, 7]. Разработчики утверждают, что название СА8Т связано с процедурой разработки, и должно напоминать о вероятностном характере процесса, а не об инициалах авторов (саз! - догадка (англ)). В обсуждаемом далее алгоритме СА8Т применяется 64-битовый блок и 64-битовый ключ. Вам должна быть знакома структура алгоритма СА8Т. В алгоритме СА8Т используются шесть 5-блоков с 8-битовым входом и 32-битовым выходом. Работа этих 8-блоков сложна и зависит от их реализации; соответствующие подробности можно найти в литературе. При шифровании блок открытого текста вначале разделяется на левую и правую половины. Алгоритм выполняется за 8 раундов. На каждом раунде правая половина с помощью функции / объединяется с частью ключа, затем для получения новой правой половины над результатом и левой половиной выполняется операция ХОК. Первоначальная (до выполнения раунда) правая половина становится новой левой половиной. После восьми раундов (после восьмого раунда левая и правая половины не переставляются) две половины объединяются, образуя шифртекст. Функция/проста: 1. Разделите 32-битовый вход на четыре 8-битовых фрагмента: а, Ь9 с, й. 2. Разделите 16-битовый подключ на две 8-битовых половины: е,/ 3. Подайте а на вход 5-блока 1, Ъ - на вход 8-блока 2, с - на вход 8-блока 3, <1- на вход 8-блока 4, е - на вход 8-блока 5 и/- на вход 5-блока 6. 4. Выполните операцию ХОК над шестью выходами 5-блоков и получите 32-битовый результат. В качестве альтернативного метода, можно объединить операцией ХОК 32-битовый вход с 32 битами ключа, разбить результат на четыре 8-битовые части, обработать их в 5-блоках, а затем объединить операцией ХОК [7]. Стойкость организованных подобным образом N раундов, по-видимому, соответствует А+2 раундам другого варианта. 16-битовые подключи раундов без затруднений вычисляются из 64-битового ключа. Если кь к2,...9 к% - это 8 байтов ключа, то в раундах алгоритма используются следующие подключи: Раунд 1: кь к2. Раунд 2: къ, к4 Раунд 3: к5, к6 3 В данном случае патриотизм Шнайера более чем спорен. Даже исходя из его рассуждений, большая длина ключа и количество раундов плюс невосприимчивость к линейному и дифференциальному анализу означает, что ГОСТ гораздо надежнее ОЕ8. - Прим. ред.
378 Прикладная криптография Раунд 4: къ къ Раунд 5: к4, к3 Раунд 6: к2, кх Раунд 7: к%, к2 Раунд 8: кв, к5 Вся сила этого алгоритма содержится в его 5-блоках. В алгоритме СА8Т нет фиксированных 5-блоков - для каждого приложения они проектируются заново. Критерии проектирования описаны в [10]. Столбцы 5-блоков являются бент-функциями, обеспечивающими необходимые свойства 8-блоков (см. раздел 14.10). Набор 8-блоков, созданный для какой-то реализации СА8Т, уже никогда не меняется. 8-блоки зависят от реализации, а не от ключа. В работе [10] показано, что алгоритм СА8Т устойчив к дифференциальному криптоанализу, а в работе [728] - и к линейному криптоанализу. Алгоритм СА8Т можно взломать только «в лоб». Компания КоЯЬегп Те1есош использует алгоритм СА8Т в своем пакете программ Еп1гиз1, предназначенном для рабочих станций МасЫозЬ, РС и 1Л41Х. Используемые в пакете 5-блоки не опубликованы. Канадское правительство рассматривает алгоритм СА8Т в качестве нового стандарта шифрования. Патентная заявка на алгоритм СА8Т находится в процессе рассмотрения. 14.3. Алгоритм В1о№Й$Ь В1о\уйз11 - это алгоритм, разработанный лично мной специально для реализации на больших микропроцессорах [1388, 1389]. Алгоритм В1о\уйзЬ не запатентован, и код на языке С реализующей его программы приведен в конце этой книги для широкого пользования. При проектировании алгоритма В1о\уйз11 я пытался удовлетворить следующим критериям: ✓ Скорость. Программа, реализующая алгоритм В1о\уйзЬ на 32-битовых микропро¬ цессорах, шифрует данные со скоростью 26 тактов на байт. ✓ Компактность. Для исполнения программной реализации алгоритма В1о\уйзЬ достаточно 5 Кбайт памяти. ✓ Простота. В алгоритме В1о\уйзЬ используются только простые операции: сложение, ХОЯ и подстановка из таблицы по 32-битовому операнду. Анализ его схемы несложен, что снижает риск ошибок реализации алгоритма [1391]. ✓ Настраиваемая стойкость. Длина ключа В1о^йзН переменна и может достигать 448 бит. Алгоритм В1о\уйзЬ оптимизирован для применения в системах, не практикующих частой смены ключей, например, в линиях связи и программах автоматического шифрования файлов. При реализации на 32-битовых микропроцессорах с большим размером кэша данных, например, процессорах Репйит и Ро\уегРС, алгоритм В1о\уйзЬ заметно быстрее ОЕ8. Алгоритм В1о\уйзЬ не годится для применения в случаях, где требуется частая смена ключей, например, в коммутаторах пакетов, или в качестве однонаправленной
ГЛАВА 14. И еще блочные шифры 379 хэш-функции. Большие требования к памяти не позволяют использовать этот алгоритм в смарт-картах. Описание алгоритма В1ошГ|§Н В1о\уГ1зЬ представляет собой 64-битовый блочный алгоритм шифрования с ключом переменной длины. Алгоритм состоит из двух частей: расширения ключа и шифрования данных. Расширение ключа преобразует ключ длиной до 448 битов в несколько массивов подключей общим размером 4168 байт. Шифрование данных заключается в последовательном исполнении простой функции 16 раз. На каждом раунде выполняются зависимая от ключа перестановка и зависимая от ключа и данных подстановка. Используются только операции сложения и ХОК над 32-битовыми словами. Единственные дополнительные операции каждого раунда - четыре взятия данных из индексированного массива. В алгоритме В1о\уйзЬ используется множество подключей. Эти подключи должны быть вычислены до начала зашифрования или расшифрования данных. Рис. 14.2. Алгоритм В1о\фзк
380 Прикладная криптография Р-массив состоит из восемнадцати 32-битовых подключей: Каждый из четырех 32-битовых 8-блоков содержит 256 элементов: ^1,0» ^1,1» 5 ^1,255 *5'2,0>‘5'2,2>---> ^2,255 ‘^ЗД’^ЗД»-**» ^3,255 *$4,4> » $4,255 Точный метод вычисления этих подключей описан далее в этом разделе. Алгоритм В1о\уГ1зЬ представляет собой сеть Файстеля (см. раздел 14.10), состоящей из 16 раундов. На вход подается 64-битовый элемент данных х. Для зашифрования данных: Разбейте х на две 32-битовых половины: хь, хк Для 1 от 1 до 16: хъ = хь 0 хк = Р (хь) 0 хк Переставьте хь и хк Переставьте хь и хк (отмените последнюю перестановку) хк = хк ф Р17 Хь = ХЬ ф Р18 Объедините хь и хк Рис. 14.3. Функция Р
ГЛАВА 14. И еще блочные шифры 381 Функция Р рассчитывается следующим образом (см. Рис. 14.3): Разделите X/, на четыре 8-битовых фрагмента: а,Ь,сис{ Р(хь) = ((5„а+ 82,ь той232) 0 53.с) + 54,а той 232 Расшифрование выполняется точно так же, как и зашифрование, но Рх, Рг?---» Лв используются в обратном порядке. В реализациях В1о\уГ1зЬ, в которых требуется очень высокая скорость, цикл должен быть развернут, а все ключи храниться в кэше. Подробности приведены в [568]. Подключи рассчитываются с помощью самого алгоритма В1о\уГ1вЬ. Вот какова точная последовательность действий. 1. Сначала Р-массив, а затем четыре 5-блока по порядку инициализируются фиксиро¬ ванной строкой. Эта строка состоит из шестнадцатеричных цифр я. 2. Выполняется операция ХОЯ над Рх с первыми 32 битами ключа, ХОЯ над Р2 со вторыми 32 битами ключа, и т.д. для всех битов ключа (вплоть до Р18). Операция ХОЯ выполняется циклически над битами ключа до тех пор, пока весь Р-массив не будет инициализирован. 3. Используя подключи, полученные на этапах 1 и 2, алгоритм В1о\уГ1зЬ шифрует строку из одних нулей. 4. Рх и Р2 заменяются результатом этапа 3. 5. Результат этапа 3 шифруется с помощью алгоритма В1о\уЙ5Ь и модифицированных подключей. 6. Р2 и Р4 заменяются результатом этапа 5. 7. Далее по ходу процесса все элементы Р-массива, а затем все четыре 5-блока по порядку заменяются выходом постоянно меняющегося алгоритма В1о\уГ1вЬ. Всего для генерации всех необходимых подключей требуется 521 итерация. Приложения могут сохранять подключи - нет необходимости выполнять процесс их получения многократно. Стойкость В1о№Й$Ь Серж Воденэ (8ег§е Уаибепау) исследовал алгоритм В1о\уГ1зЬ с известными 8-блоками и г раундами. Как оказалось, дифференциальный криптоанализ может восстановить Р-массив с помощью 28г+1 подобранных открытых текстов [1568]. Для некоторых слабых ключей, которые генерируют плохие 8-блоки (вероятность выбора такого ключа составляет 1/214), эта же атака восстанавливает Р-массив с помощью всего 24Ж подобранных открытых текстов. При неизвестных 8-блоках эта атака может обнаружить использование слабого ключа, но не может восстановить сам ключ (и также 8-блоки и Р-массив). Эта атака эффективна только против вариантов с уменьшенным числом раундов и совершенно безнадежна против 16-раундового алгоритма ЕИодуйзЬ. Разумеется, важно и открытие слабых ключей, хотя они, вероятно, использоваться не будут. Слабым называют ключ, для которого два элемента данного 8-блока идентичны.
382 Прикладная криптография До выполнения расширения ключа невозможно установить факт слабости ключа. Если вы беспокоитесь об этом, вам придется развернуть ключ и проверить, нет ли в 8-блоках одинаковых элементов. Но я не думаю, что это так уж необходимо. Мне неизвестны факты успешного криптоанализа алгоритма В1о\уГ1зЬ. В целях безопасности не реализуйте В1о\уГ1зЬ с уменьшенным числом раундов. Компания Кеп1 МагзЬ Ы:с1. встроила алгоритм В1о\уГ1зЬ в свой продукт РоШегВоН, предназначенный для обеспечения защиты Мюгозой Шшс1о\у5 и МастШзЬ. Кроме того, алгоритм входит в ЫаиШиз и РОРГопе. 14.4. Алгоритм 5АРЕК Аббревиатура 8АРЕК К-64 означает 8есиге Апй Раз* Епсгурйоп Коийпе тХЬ а Кеу оГ 64 Ъйз (Стойкая и быстрая программа шифрования 64-битовым ключом) [1009]. Этот алгоритм, не находящийся в частной собственности, разработан Джеймсом Мэсси (1ашез Маззеу) для корпорации СуНпк и используется в некоторых ее продуктах. Правительство Сингапура собирается использовать этот алгоритм (но с 128-битовым ключом [1010]) в широком спектре приложений. Использование алгоритма не ограничено патентом, авторскими правами или чем-то еще. Алгоритм работает с 64-битовым блоком и 64-битовым ключом. В отличие от БЕЗ, этот алгоритм представляет собой итеративный блочный шифр, а не сеть Файстеля (см. раздел 14.10). Иными словами, в некоторых раундах применяется одна и та же функция. В каждом раунде используются два 64-битовых подключа. Алгоритм оперирует только байтами. Описание алгоритма 5АРЕК К-64 Блок открытого текста разделяется на восемь байтовых подблоков: Ви #2,..., Затем подблоки обрабатываются в г раундах алгоритма. Наконец подблоки подвергаются заклю¬ чительному преобразованию. На каждом раунде используются два подключа: К2М и К2;. На Рис. 14.4 показан раунд алгоритма 8АРЕК К-64. Сначала над подблоками выполняется либо операция ХОК, либо сложение с байтами подключа К2г.\. Затем восемь подблоков подвергаются одному из двух нелинейных преобразований: у = 45х той 257 (если х = 128, то у = 0) у- 1о§45х (если х = 0, то у = 128) Эти операции выполняются в конечном поле СР (257), причем 45 - примитивный корень этого поля. В практических применениях 8АРЕК К-64 эти операции эффективнее реализовать с помощью таблицы подстановок вместо постоянных вычислений новых результатов. Далее подблоки либо подвергаются операции ХОК, либо складываются с байтами подключа К2г. Результат этой операции проходит через три уровня линейных операций, предназначенных для усиления лавинного эффекта.
ГЛАВА 14. И еще блочные шифры 383 1 2 Вход раунда (8 байт) 5 4 5 е % 7 8 1 1 . 1 1 1 1 ! хог ас! с) ас!с1 хог хог абб абб хог -К» 2/ -1 45° 1од46 1од45 45° 45° ю чг О) О 1од45 45° ас!с1 хог хог ас1с1 ас1с1 хог хог адд 2-РНТ 2-РНТ 2-РНТ -К?, 2-РНТ 2-РНТ 2-РНТ 2-РНТ 2-РНТ 2-РНТ 2-РНТ 2-РНТ 2-РНТ 1 ■ Г 1 - 1 ] Г 1 Г 1 Г 1 : 2 : 3 4 ! 5 6 ; 7 8 Выход раунда (8 байт) Рис. 14.4. Раунд алгоритма 8АРЕК Каждая операция называется псевдоадамаровым преобразованием (Рзеибо-Набатагб ТгапзГогт - РНТ). Если на вход РНТ подать а{ и а2, то выходом будут: Ь\ = (2^1 + а2) тоб 256 Ь2 = (а\ + а2) тоб 256 После г раундов выполняется заключительное преобразование. Оно совпадает с первым этапом каждого раунда. Над В\, В4, В5 и В% выполняется операция ХОК с соответствующими байтами последнего подключа, а Въ В3, В6 и В7 складываются с соответствующими байтами последнего подключа. В результате и получается шифртекст. Расшифрование представляет собой обратный процесс: сначала выполняется заключи¬ тельное преобразование (с вычитанием вместо сложения), затем г инвертированных раундов. Обратное преобразование РНТ (1пуегзе РНТ - 1РНТ) представляет собой: ах = (Ь\ -62) тоб 256 а2 ~ т0(^ 256
384 Прикладная криптография Мэсси рекомендует использовать 6 раундов, но для большей безопасности число раундов можно увеличить. Генерировать подключи совсем не трудно. Первый подключ К\ - это просто ключ пользователя. Последующие ключи генерируются следующей процедурой: Км =(К1 <«3/) + с1 Символ "«<" обозначает циклический сдвиг влево. Сдвиг выполняется побайтово, а - константа раунда. Если с1} - это у-ый байт константы /-го раунда, для расчета всех констант раундов можно использовать следующую формулу: с. = 4545 Л то(1256) т0(1257 тоб 257 Обычно эти значения хранятся в таблице. Алгоритм 5АРЕК К-128 Этот альтернативный способ развертки ключа разработан Министерством внутренних дел Сингапура, а затем встроен Мэсси в алгоритм 8АРЕН [1010]. В данном случае используются два ключа, Ка и Кь, по 64 бит каждый. Тонкость состоит в том, что генерируются две параллельные последовательности подключей, которые затем используются поочередно. Это означает, что при выборе Ка -Кь 128-битовый ключ совместим с 64-битовым ключом Ка. Стойкость 5АРЕК К-64 Мэсси показал, что при использовании 8 раундов алгоритм 8АРЕК К-64 абсолютно стоек к дифференциальному криптоанализу, а 6 раундов - достаточно стоек. При использовании всего 3 раундов против этого алгоритма становится неэффективным и линейный криптоанализ [1010]. Кнудсен (Кпибвеп) обнаружил слабое место в развертке ключей: практически для каждого ключа существует не менее одного (иногда даже девять) других ключей, который при шифровании какого-то другого открытого текста превращают его в тот же шифртекст [862]. Количество различных открытых текстов, которые оказываются одинаковыми шифртекстами, находится в промежутке от 222 до 228. Хотя такое вскрытие не может повлиять на надежность 8АРЕЯ как алгоритма шифрования, оно значительно уменьшает его стойкость при использовании в качестве однонаправленной хэш- функции. В любом случае Кнудсен рекомендует использовать не менее 8 раундов4. Алгоритм 8АРЕЯ был спроектирован для СуНпк, и этой компании были предъявлены различные обвинения со стороны АНБ [80]. Я рекомендовал бы затратить несколько лет на интенсивный криптоанализ 8АРЕЯ, прежде чем как-либо использовать этот алгоритм. 4 Как отмечает Шнайер в дополнениях к книге, в ответ на эту атаку были предложены модификации 8АРЕН 8К-40, 8АРЕН 8К-64 и 8АРЕН 8К-128.
ГЛАВА 14. И еще блочные шифры 385 14.5. Алгоритм З-УУАУ 3-\\^ау - это блочный шифр, разработанный Джоаной Дэймен (7оап Оаетеп) [402, 410]. В нем используется блок и ключ длиной 96 бит, а схема алгоритма допускает весьма эффективную аппаратную реализацию. Алгоритм 3-^ау относится к итеративным блочным шифрам, а не сетям Файстеля. Алгоритм исполняется за п раундов (Дэймен рекомендует 11). Описание алгоритма ЗЛУау Описать этот алгоритм несложно. Для зашифрования блока открытого текста х выполняется следующая процедура: Рог 1 = 0 -Ьо п - 1 х = х ХОК К± х = ЪЪеЪа (х) х = р±-1 (х) х = дашта (х) х = р±-2 (х) X = X 0 Кп х = ЪЪеЪа (х) При этом используются следующие функции: ✓ ъЬеЪа (х) - функция линейной подстановки, в основном набор циклических сдвигов и операций ХОК. ✓ р±-1 (х) и р±-2 (х) - простые перестановки. ✓ дашта (х) - функция нелинейной подстановки. Именно это действие и дало имя всему алгоритму, поскольку представляет собой параллельные подстановки 3-бито¬ вых данных. Расшифрование аналогично зашифрованию за исключением того, что порядок битов исходных данных и результата нужно заменить обратным. Исходный код, реализующий алгоритм З-Шау, приведен в конце этой книги. Факты успешного криптоанализа алгоритма З-АМау пока неизвестны. Алгоритм не запатентован. 14.6. Алгоритм СгаЬ Алгоритм СгаЬ разработан Бертом Калиски (Виг1 КаНвкО и Мэттом Робшоу (Маи КоЬ$Ьа\у) из КБ А ЬаЬога1опез [810]. В основе алгоритма СгаЬ лежит идея использования технологии однонаправленных хэш-функций для создания быстрого алгоритма шифрования. Следовательно, алгоритм СгаЬ очень похож на М05; в этом разделе предполагается, что вы знакомы с материалом раздела 18.5.
386 Прикладная криптография В СгаЬ используется весьма большой блок: 1024 байт. Так как СгаЬ был представлен скорее как объект исследований, а не рабочий алгоритм, специальная программа генерации ключей не предусмотрена. Авторы рассмотрели метод, который позволяет превратить 80-битовый ключ в три вспомогательных подключа, хотя алгоритм позволяет легко использовать ключи переменной длины. В алгоритме СгаЬ используются два набора больших подключей: ✓ Перестановка чисел от 0 до 255: Р0, Рь Рг, ^, Рг55- ✓ Массив из 2048 32-разрядных чисел: 50, Зь , ^047- Все эти подключи следует рассчитать до зашифрования или расшифрования. Зашифрование 1024-байтового блока X выполняется следующим образом: 1) Разделите X на 256 32-битовых подблоков: Х0, ХХ/ Х2/ . . . , Х255. 2) Переставьте подблоки X в соответствии с Р. 3) Для г от 0 до 3 Для д от 0 до 63 А = Х(4д) <« 2г В = Х(4д+1) <« 2г С = Х(4д + 2) <« 2г в = Х(4д+3) <« 2г Для этапа з от 0 до 7 А « А 0 (В + ^Г(В, С, В) + 3512г+8д+5) ТЕМР = Б В = С С = В В = А «< 5 А = ТЕМР Х(4д) «< 2г 88 А Х(4д+1) «< 2г “ В Х(4д+2) «< 2г = С Х(4д+3) «< 2г = В 4) Снова объедините Х0/ Х17 Х2,..., Х255, получая шифртекст. Функции(В, С, П) аналогичны функциям МЭ5: Г0(В, С, 0) = (гдС)у((-, В)лБ) ?! (В, С, В) = (ВлО)у(Сл (-10)) Г2 (В, С, Б) = В © С © Б Г3(В, С, О) = С0(5у(л Б))
ГЛАВА 14. И еще блочные шифры 387 Расшифрование представляет собой обратный процесс. Генерация подключей — задача непростая. Вот как можно сгенерировать массив перестановок Р по 80-битовому ключу К. 1) Инициализируйте К0/ К1; К2, . . . , К9 с помощью 10 байтов К. 2) Для ± от 10 до 255 К1 = К^2 0 К^б 0 К^-7 0 К..Ю 3) Для 1 от 0 до 255, Р*. = ± 4) ш=0 5) Для з от 0 до 1 Для ± от 256 до 1 с шагом -1 ш = (К25б-1 + К257.1) тос! ± ^257-1 = К257-1 «< 3 Переставьте и Р^-х 8-массив из 2048 32-битовых слов можно генерировать аналогичным образом либо по тому же 80-битовому ключу, либо по другому ключу. Авторы предупреждают, что эти детали должны «рассматриваться только в качестве мотивации, допустимы и другие эффективные схемы, обеспечивающие лучшую безопасность» [810]. Алгоритм СгаЬ предложен как стенд для испытания новых идей, а не рабочий алгоритм. Во многом он использует те же приемы, что и М05. Бихам отметил, что использование очень большого блока упрощает криптоанализ алгоритма [160]. С другой стороны, в алгоритме СгаЬ может эффективно использоваться очень большой ключ. В этом случае «упрощение криптоанализа» может ничего не значить. 14.7. Алгоритм 5ХА1.8/МВА1. Это японский 64-битовый блочный алгоритм [769]. 8ХАЬ8 - основной алгоритм, а МВАЬ - его расширенная версия с переменной длиной блока. Так как в алгоритме МВАЬ выполняется ряд умных действий, авторы утверждают, что они могут обеспечить достаточную стойкость за малое число раундов. При длине блока 1024 байт МВАЬ примерно в 70 раз быстрее ОЕ8. К сожалению, в [1174] показано, что алгоритм МВАЬ уязвим дифференциальному криптоанализу, а в [865] - и линейному криптоанализу. 14.8. Алгоритм КС5 КС5 представляет собой блочный шифр с множеством параметров: размером блока, размером ключа и числом раундов. Он изобретен Роном Ривестом и проанализирован в К8А ЬаЬогаЬпез [1324, 1325]. В алгоритме КС5 предусмотрены три операции: ХОК, сложение и циклические сдвиги. На большинстве процессоров операции циклического сдвига выполняются за постоянное время, переменные циклические сдвиги представляют собой нелинейную функцию. Эти циклические сдвиги, зависящие как от ключа, так и от данных - интересная операция.
388 Прикладная криптография В КС5 используется блок переменной длины, но в приводимом примере мы остановимся на 64-битовом блоке данных. Шифрование использует 2г+2 зависящих от ключа 32-битовых слов - Яо, $2г+1 - где г - число раундов. Эти слова мы сгенерируем позднее. Для зашифрования сначала разделим блок открытого текста на два 32-битовых слова: А и В. (При упаковке байтов в слова в алгоритме КС5 соблюдается соглашение о прямом порядке (ИШе-епсИап) байтов: первый байт занимает младшие биты регистра А и т.д.) Затем: А = А + в = в+в} Для / от 1 до г: А = (АФВ) <« В) + 52/ В = ((В Ф А) «< А) + 52/+1 Выход находится в регистрах А и В. Расшифрование тоже несложно. Разбейте блок открытого текста на два слова, А и В, а затем: Для / от г до 1 с шагом -1: Д = ((В-52/+1)»> А) ФА А = ((А-32/)>» В)ФВ В = В-В{ А = А-В0 Символом "»>" обозначен циклический сдвиг вправо. Конечно же, все сложения и вычитания выполняются по модулю 232. Создание массива ключей сложнее, но тоже прямолинейно. Сначала байты ключа копируются в массив Ь из с 32-битовых слов, дополняя при необходимости заключительное слово нулями. Затем массив В инициализируется при помощи линейного конгруэнтного генератора по модулю 232: В0 = Р Для / от 1 до 2(г +1) -1: 5, +(}) тос! 232 где Р=0хЪ7е15163 и <3= 0х9е3779Ь9, эти константы основываются на двоичном представлении е и рЫ. Наконец, подставляем Ь в 5: ' = /=0 А = 5=0
ГЛАВА 14. И еще блочные шифры 389 Выполните Ъп раз (где п - максимум от 2(г + 1) и с): А = $; = (5,- +А +В) «< 3 В = Ц = (Ц + А + В) «< (А + В) I = (/ +1) той 2 (г +1) / = (у +1) то<3 с В действительности ЯС5 представляет собой семейство алгоритмов. Только что мы определили ЯС5 с 32-битовым словом и 64-битовым блоком, но нет причин, запрещающих использовать этот же алгоритм с 64-битовым словом и 128-битовым блоком. Для = 64, Р и 2 равны 0хЬ7е151628аеб2а6Ь и 0х9е3779Ъ97Г4а7с15, соответственно. Ривест обозначил различные реализации ЯС5 как КС5-м?/г/Ь, где - размер слова, г - число раундов, а Ь - длина ключа в байтах. ЯС5 - новый алгоритм, но Я8А ЬаЪогаШпез потратила достаточно много времени, анализируя его работу с 64-битовым блоком. После 5 раундов статистика выглядит очень убедительно. После 8 раундов каждый бит открытого текста влияет не менее чем на один циклический сдвиг. Дифференциальная атака требует 224 подобранных открытых текстов для 5 раундов, 245 - для 10 раундов, 253 - для 12 раундов и 268 - для 15 раундов. Конечно же, существует только 264 возможных открытых текстов, поэтому такая атака неприменима к алгоритму с 15 и более раундами. Оценка возможности линейного криптоанализа показывает, что алгоритм устойчив к нему после 6 раундов. Ривест рекомендует использовать не менее 12, а лучше 16, раундов [1325]. Это число может меняться. Компания Я8АБ81 в настоящее время патентует ЯС5, и его название заявлено как торговая марка. Компания утверждает, что плата за лицензию будет очень мала, но эти данные нуждаются в проверке. 14.9. Другие блочные алгоритмы Известен алгоритм, называемый в литературе СЯУРТО-МЕССАМО [301], однако он нестоек. На конференции Еигосгур1:!91 четыре японских криптографа представили алгоритм, основанный на хаотичных отображениях [687, 688]. На той же конференции Бихам описал криптоанализ этого алгоритма [157]. Другой алгоритм опирается на подмножества некоторого множества случайных кодов [693]. Существует множество алгоритмов, основанных на теории кодов, исправляющих ошибки: вариант алгоритма МакЭлиса (МсЕНесе) (см. раздел 19.7) [786, 1290], алгоритм Рао-Нама (Яао-Каш) [1292, 733, 1504, 1291, 1056, 1057, 1058, 1293], варианты алгоритма Рао-Нама [464, 749, 1503] и алгоритм Ли-Ванга [964, 1561] - все они нестойки. Алгоритм САЬС - тоже [1109]. Алгоритм ТЕА (Тшу Епсгурбоп А1§огШ1т - миниатюрный алгоритм шифрования) слишком нов, чтобы его комментировать [1592]. Еще один алгоритм - Уто [503]. МасСиШп, блочный алгоритм, предложенный Мэттом Блейзом и мной, тоже ненадежен [189] - его взломали на той же конференции, на которой он был предложен. ВазеКт§, похожий по философии на ЗАУау, но использующий 192-битовый блок [402], слишком нов, чтобы его обсуждать.
390 Прикладная криптография Кроме того, известно множество блочных алгоритмов, разработанных вне крипто¬ графического сообщества. Некоторые из них используются различными военными и правительственными организациями. У меня нет данных о таких алгоритмах. Существуют также десятки частных коммерческих алгоритмов. Одни из них могут быть хороши, большинство - нет. Если компания полагает, что публикация ее алгоритмов противоречит ее интересам, лучше согласиться и не использовать эти алгоритмы. 14.10. Теория проектирования блочных шифров В разделе 11.1 введены понятия рассеивания и перемешивания, выдвинутые Шенноном. Спустя пятьдесят лет после формулирования этих принципов, они остаются краеугольным камнем проектирования хороших блочных шифров. Перемешивание маскирует взаимосвязи между открытым текстом, шифртекстом и ключом. Помните, как даже незначительная зависимость между этими тремя составля¬ ющими может быть использована в дифференциальном и линейном криптоанализе? Хорошее перемешивание настолько усложняет статистику взаимосвязей, что пасуют даже мощные криптоаналитические средства. Рассеивание распространяет влияние отдельных битов открытого текста на возможно больший объем шифртекста. Это тоже маскирует статистические взаимосвязи и усложняет криптоанализ. Для обеспечения надежности достаточно только перемешивания. Алгоритм, состоящий из единственной, зависимой от ключа таблицы подстановок 64 бит открытого текста в 64 бит шифртекста был бы достаточно надежным. Недостаток в том, что для хранения такой таблицы потребовалось бы слишком много памяти: 1020 байт. Смысл создания блочного шифра и состоит в создании чего-то подобного такой таблице, но предъяв¬ ляющего к памяти более умеренные требования. Тонкость состоит в том, что в одном шифре следует периодически перемежать в различных комбинациях перемешивание (с гораздо меньшими таблицами) и рассеивание. Такой шифр называют составным шифром (ргодис! ЫрИег). Иногда блочный шифр, который использует последовательные перестановки и подстановки, называют сетью перестановок-подстановок, или 8Р-сетью. Вернемся к функции/алгоритма ОЕ8. Перестановка с расширением и Р-блок реализуют рассеивание, а 8-блоки - перемешивание. Перестановка с расширением и Р-блок линейны, 8-блоки - нелинейны. Каждая операция сама по себе очень проста, но вместе они работают превосходно. Кроме того, на примере ОЕ8 можно продемонстрировать еще несколько принципов проектирования блочных шифров. Первый принцип реализует идею итеративного блочного шифра. При этом предполагается, что простая функция раунда последо¬ вательно используется несколько раз. Двухргундовый алгоритм БЕ8 слишком ненадежен, чтобы все биты результата зависели от' всех битов ключа и всех битов исходных данных. Для этого необходимо 5 раундов [1078, 1080]. Весьма надежен 16-раундовый алгоритм ОЕ8, а 32-раундовый ОЕ8 еще более стоек.
ГЛАВА 14. И еще блочные шифры 391 Сети Файстеля Большинство блочных алгоритмов относятся к так называемым сетям Файстеля. Идея этих сетей датируется началом семидесятых годов [552, 553]. Возьмите блок длиной п и разделите его на две половины длиной л/2: Ь и К. Разумеется, число п должно быть четным. Можно определить итеративный блочный шифр, в котором результат у-го раунда определяется результатом предыдущего раунда: КI - подключу-го раунда, а/- произвольная функция раунда. Применение этой концепции можно встретить в алгоритмах ЭЕ8, ЬишГег, РЕЛЬ, КЬиЙ1, КЬай-е, ШК1, ГОСТ, СА8Т, В1о\уГ1зЬ и других. Почему это так важно? Да просто гаран¬ тируется обратимость функции. Так как для объединения левой половины с результатом функции раунда используется операция ХОК, всегда истинно следующее выражение: т-м® т-иЫ-ь-х Шифр, использующий такую конструкцию, гарантированно обратим, если можно восстановить исходные данные / на каждом раунде. Сама функция / не важна, она не обязательно обратима. Мы можем спроектировать сколь угодно сложную функцию/ но нам не понадобится реализовывать два разных алгоритма - один для зашифрования, а другой для расшифрования. Об этом автоматически позаботится структура сети Файстеля. Простые соотношения Алгоритм ЭЕ8 характеризуется следующим свойством: если ЕК(Р) = С, то Е^^Р*) - С\ где Р\ С и К1 - побитовые дополнения Р, С и К. Это свойство вдвое уменьшает сложность лобового вскрытия. Свойства комплементарности в 256 раз упрощают лобовое вскрытие алгоритма ЬОК1. Простое соотношение можно определить как [857]: Если Ек (Р) = С, то Е^к) (§(Р, К)) = И (С, К) где / § и Н - простые функции. Под «простыми функциями» я подразумеваю функции, вычисление которых несложно, намного проще итерации блочного шифра. В алгоритме ЭЕ8 функция / представляет собой побитовое дополнение К, §- побитовое дополнение Р, а И - побитовое дополнение С. Это - следствие сложения ключа и текста операцией ХОК. Для хорошего блочного шифра простых соотношений нет. Методы поиска некоторых подобных слабых мест можно найти в [917]. Групповая структура При изучении алгоритма возникает вопрос, не образует ли он группу. Элементами группы служат блоки шифртекста для каждого возможного ключа, а групповой
392 Прикладная криптография операцией служит композиция. Изучение групповой структуры алгоритма представляет собой попытку понять, насколько возрастает дополнительное скрытие текста при многократном шифровании. Важен, однако, вопрос не о том, действительно ли алгоритм - группа, а о том, насколько он близок к таковому. Если не хватает только одного элемента, алгоритм не образует группу, но двойное шифрование было бы, с точки зрения статистики, просто потерей времени. Работа над Е)Е8 показала, что этот алгоритм весьма далек от группы. Существует также ряд интересных вопросов о полугруппе, получаемой при шифровании ЭЕ8. Содержит ли она тождество, то есть, не образует ли она группу? Иными словами, не генерирует ли, в конце концов, некоторая комбинация операций зашифрования (не расшифрования) тождественную функцию? Если так, какова длина самой короткой из таких комбинаций? Цель исследования состоит в оценке пространства ключей для теоретического лобового вскрытия, а результат представляет собой наибольшую нижнюю границу энтропии пространства ключей. Слабые ключи В хорошем блочном шифре все ключи одинаково сильны. Как правило, нет проблем и с алгоритмами, включающими небольшое число слабых ключей, например, БЕ8. Вероят¬ ность случайного выбора одного из них очень мала, и такой ключ легко проверить и, при необходимости, отбросить. Однако если блочный шифр используется как однонаправлен¬ ная хэш-функция, эти слабые ключи иногда могут быть задействованы (см. раздел 18.11). Устойчивость алгоритма к дифференциальному и линейному криптоанализу Исследования дифференциального и линейного криптоанализа значительно прояснили теорию проектирования надежных блочных шифров. Авторы ГОЕА ввели понятие дифференциалов, обобщение основной идеи характеристик [931]. Они утверждали, что можно создавать блочные шифры, устойчивые к атакам такого типа. В результате подобного проектирования появился алгоритм ГОЕА [931]. Позднее это понятие было формализовано в [1181, 1182], когда Кайса Ниберг (Ка1за ИуБег^) и Ларе Кнудсен описали метод создания блочных шифров, доказуемо устойчивых к дифференциальному криптоанализу. Эта теория была расширена на дифференциалы высших порядков [702, 161, 927, 858, 860] и частные дифференциалы [860]. Как представляется, дифферен¬ циалы высших порядков применимы только к шифрам с малым числом раундов, но частные дифференциалы прекрасно объединяются с дифференциалами. Линейный криптоанализ появился сравнительно недавно, и продолжает совершенствоваться. Были определены понятия ранжирования ключей [1019] и многократных аппроксимаций [811, 812]. Еще одно расширение криптоанализа можно найти в [1270]. В [938] была предпринята попытка объединения в одной атаке дифференциального и линейного методов криптоанализа. Пока неясно, какая методика проектирования сможет противостоять подобным атакам. Кнудсен добился известного успеха, рассматривая некоторые необходимые (но, возможно, недостаточные) критерии того, что он назвал практически стойкими сетями
ГЛАВА 14. И еще блочные шифры 393 Файстеля - шифров, устойчивых как к дифференциальному, так и к линейному криптоанализу [857]. Ниберг ввел для линейного криптоанализа аналог понятия дифференциалов в дифференциальном криптоанализе [1180]. Достаточно интересна, как представляется, двойственность дифференциального и линейного методов криптоанализа. Эта двойственность становится очевидной как при разработке методики создания хороших дифференциальных характеристик и линейных приближений [164, 1018], так и при разработке критерия проектирования, обеспечи¬ вающего устойчивость алгоритмов к обоим типам вскрытия [307]. Пока точно неизвестно, куда заведет это направление исследований. Для начала Дэймен разработала стратегию проектирования алгоритма, основанную на дифференциальном и линейном криптоанализе [402]. Проектирование 5-блоков Мощь большинства сетей Файстеля, а особенно их устойчивость к дифференциальному и линейному криптоанализу, напрямую связана с их 3-блоками. Поэтому вопрос о том, что же образует хороший 8-блок, стал объектом многочисленных исследований. 8-блок - это просто подстановка: отображение /«-битовых входов на «-битовые выходы. Выше я упоминал об одной большой таблице подстановок 64-битовых входов на 64-битовые выходы. Такая таблица представляла бы собой 8-блок размером 64*64 бит. 8-блок с /«-битовым входом и «-битовым выходом называется «1*«-битовым 8-блоком. Как правило, обработка в 8-блоках - единственная нелинейная операция в алгоритме. Именно 8-блоки обеспечивают стойкость блочного шифра. В общем случае, чем больше 8-блоки, тем лучше. В алгоритме БЕЗ используются восемь различных 6*4-битовых 8-блоков. В алгоритмах КЬийд и КЬа{ге предусмотрен единственный 8*32-битовый 8-блок, в ЬОК1 - 12+8- битовый 8-блок, а в В1о^Г1$Ь и СА8Т - 8*32-битовые 8-блоки. В ГОЕА 8-блоком, по сути, служит умножение по модулю, это 16* 16-битовый 8-блок. Чем больше 8-блок, тем труднее обнаружить статистические данные, нужные для вскрытия методами дифференциального или линейного криптоанализа [653, 729, 1626]. Кроме того, хотя случайные 8-блоки обычно не оптимальны с точки зрения устойчивости к дифференциальному и линейному криптоанализу, стойкие 8-блоки легче найти среди 8-блоков большего размера. Большинство случайных 8-блоков нелинейны, невырож¬ дены и характеризуются высокой устойчивостью к линейному криптоанализу, причем с уменьшением числа входных битов устойчивость снижается достаточно медленно [1185, 1186, 1187]. Размер т важнее размера «. Увеличение размера « снижает эффективность дифференциального криптоанализа, но значительно повышает эффективность линейного криптоанализа. Действительно, если « > 2т - /«, наверняка существует линейная зави¬ симость между входными и выходными битами 8-блока. А если «> 2т, линейная зависимость существует даже только между выходными битами [164]. Заметная доля работ по проектированию 3-блоков состоит в изучении булевых функций [94, 1098, 1262, 1408]. Для обеспечения безопасности, булевы функции 8-блоков должны отвечать определенным требованиям. Они не должны быть ни
394 Прикладная криптография линейными, ни аффинными, ни даже близкими к линейным или аффинным функциям [9, 1177, 1178, 1188]. Число нулей и единиц должно быть сбалансированным, и между различными комбинациями битов не должно быть никаких корреляций. При изменении значения любого входного бита на противоположное выходные биты должны вести себя независимо. Эти критерии проектирования так же связаны с изучением бент-функций (ЪеШ /ипсНопз): функций, которые, как можно показать, оптимально нелинейны. Хотя они определены просто и естественно, их изучение очень трудно [1344, 1216, 947, 905, 1176, 1271, 295, 296, 297, 149, 349, 471, 298]. По-видимому, очень важное свойство 8-блоков - лавинный эффект: сколько выходных битов 8-блока изменяется при изменении некоторого подмножества входных битов. Нетрудно задать для булевых функций условия, выполнение которых обеспечивает определенный лавинный эффект, но проектирование таких функций задача сложная. Строгий лавинный критерий (81г1с1 Ауа1апсЬе Сгкепа - 8АС) гарантирует изменение ровно половины выходных битов при изменении единственного входного бита [1586] (см. также [982, 571, 1262, 399]). В одной из работ эти критерии рассматриваются с точки зрения утечки информации [1640]. Несколько лет назад криптографы предложили выбирать 8-блоки так, чтобы таблица распределения различий для каждого 8-блока была однородной. Это обеспечило бы устойчивость к дифференциальному криптоанализу за счет сглаживания дифференциалов на любом отдельном раунде [6, 443, 444, 1177]. В качестве примера такого проектирования можно назвать алгоритм ЬОК1. Однако такой подход иногда облегчает дифференциальный криптоанализ [172]. На самом деле, удачнее подход, гарантирующий наименьшее значение максимального дифференциала. Кванджо Ким (К\уащуо Кип) выдвинул пять критериев проектирования 8-блоков [834], напомина¬ ющих критерии проектирования 8-блоков ЭЕ8. Выбор хороших 8-блоков - нелегкая задача. Известно множество конкурирующих подходов ее решения; среди них можно выделить четыре основных. ✓ Случайный выбор. Ясно, что небольшие случайные 8-блоки ненадежны, но крупные случайные 8-блоки могут оказаться достаточно хорошими. Случайные 8-блоки с восемью и более входами достаточно стойки [1186, 1187], еще лучше 12-битовые 8-блоки. Стойкость 8-блоков возрастает, если они одновременно и случайны, и зависят от ключа. В ГОЕА используются крупные, зависящие от ключа 8-блоки. ✓ Выбор с последующим тестированием. В некоторых шифрах сначала генерируются случайные 8-блоки, а затем их свойства тестируются на соответствие требованиям. Примеры такого подхода можно найти в [9, 729]. ✓ Разработка вручную. При этом математический аппарат используется крайне незначительно: 8-блоки создаются с использованием интуитивных приемов. Барт Пренел (Ваг! Ргепее1) заявил, что «... теоретически интересные критерии недостаточны (для выбора булевых функций 8-блоков)...», и «... необходимы специальные критерии проектирования» [1262]. ✓ Математическая разработка. 8-блоки создаются в соответствии с законами математики, поэтому обладают гарантированной устойчивостью к дифферен¬ циальному и линейному криптоанализу и хорошими рассеивающими свойствами. Прекрасный пример такого подхода можно найти в [1179].
ГЛАВА 14. И еще блочные шифры 395 Раздавались призывы объединить «математический» и «ручной» подходы [1334], но реально, по-видимому, конкурируют случайно выбранные 8-блоки и 8-блоки с определенными свойствами. К преимуществам последнего подхода можно отнести оптимизацию против известных методов вскрытия - дифференциального и линейного криптоанализа. Однако в этом случае неясна степень защиты от неизвестных методов вскрытия. Разработчики ОЕ8 знали о дифференциальном криптоанализе, поэтому 8-блоки ЭЕ8 оптимизированы надлежащим образом. Но, вероятнее всего, о линейном криптоанализе они не знали, и 8-блоки БЕ8 очень слабы по отношению к такой атаке [1018]. Случайно выбранные 8-блоки в ЭЕ8 были бы слабее к дифференциальному криптоанализу, но устойчивее к линейному криптоанализу. С другой стороны, случайные 8-блоки могут быть и неоптимальны к данным атакам, но они могут быть достаточно большими и, следовательно, достаточно стойкими. Кроме того, они, скорее всего, окажутся достаточно устойчивыми к неизвестным методам вскрытия. Споры все еще кипят, но лично мне кажется, что 8-блоки должны быть такими большими, насколько это возможно, случайными и зависящими от ключа. Проектирование блочного шифра Спроектировать блочный шифр нетрудно. Если вы рассматриваете 64-битовый блочный шифр как перестановку 64-битовых чисел, ясно, что почти все эти перестановки безопасны. Трудно спроектировать такой блочный шифр, который не только стоек, но также может быть легко описан и реализован. Нетрудно спроектировать блочный шифр, если объем памяти достаточен для размещения 48*32-битовых 8-блоков. Трудно спроектировать нестойкий вариант алгоритма ИЕ8, если вы собираетесь использовать в нем 128 раундов. При длине ключа 512 битов нет нужды беспокоиться о какой-либо зависящей от ключа комплементарности. Настоящий фокус - и причина, почему на самом деле очень трудно спроектировать блочный шифр - это разработать алгоритм с возможно наименьшим ключом, требова¬ ниям к памяти и максимальной скоростью работы. 14.11. Использование однонаправленных хэш-функций Простейшим методом использования однонаправленных хэш-функций для шифрования является хэширование предыдущего блока шифртекста, объединенного с ключом, а затем выполнение операции ХОЯ над результатом и текущим блоком открытого текста: С, =/> Ф-Я(К,СМ) /}=С,©Я(*,СМ) Установите длину блока, равную длине результата однонаправленной хэш-функции. По сути, это означает использование однонаправленной хэш-функции как блочного шифра в режиме СРВ. С помощью аналогичной конструкции можно применить одно¬ направленную хэш-функцию и в режиме ОРВ: С, =/}©$,, •$/ = Н (К, См)
396 Прикладная криптография Р,=С,®5„ 5,- = Н (К, См) Стойкость такой схемы определяется надежностью однонаправленной хэш-функции. Алгоритм Карна Этот метод, предложенный Филом Карном (РЫ1 Кагп) и доступный для всеобщего использования, создает обратимый алгоритм шифрования из некоторых однонаправ¬ ленных хэш-функций. Алгоритм работает с 32-байтовыми блоками открытого текста и шифртекста. Длина ключа может быть произвольной, хотя для некоторых однонаправленных хэш-функций более эффективны ключи определенной длины. Так, для однонаправленных хэш- функций МЭ4 и МЭ5 лучше всего подходят 96-байтовые ключи. Для зашифрования сначала разделите открытый текст на две 16-байтовых половины: Р/ и Рг. Затем разбейте на две 48-байтовых половины ключ: К{ и Кг. Р = РьРг К=КЬКГ Добавьте X/ к Р/ и выполните хэширование однонаправленной хэш-функцией, затем выполните операцию ХОЯ над результатом и Р„ получив Сг - правую половину шифртекста. Затем добавьте Кг к Сг и выполните хэширование однонаправленной хэш- функцией. Выполните операцию ХОЯ над результатом и Р/, получив С/. Наконец, объедините Сг и С/, получив шифртекст. СГ = РГ® Я (/>-,*,) С^Р^Н^Кг) с = с„сг Для расшифрования просто инвертируйте процесс. Добавьте Кг к Сп выполните хэширование и ХОЯ результата с С/, получая Р/. Добавьте к Р/, выполните хэширование и ХОЯ результата с Сг, получая Рг. Р/=С/0Я(С,,Хг) РГ = СГ®Н(Р;,К') р=р„рг Общая структура схемы Карна совпадает со структурой множества других блочных алгоритмов, рассмотренных в этом разделе. У алгоритма только два раунда, так как его сложность определяется однонаправленной хэш-функцией. А так как ключ используется только как вход хэш-функции, его невозможно восстановить даже атакой с подобранным открытым текстом, если, конечно, надежна используемая однонап¬ равленная хэш-функция.
ГЛАВА 14. И еще блочные шифры 397 Алгоритм Любы-Ракоффа Майкл Любы (М1сЪае1 ЬиЪу) и Чарльз Ракофф (СЬаг1ез КаскоЛ) показали, что алгоритм Карна нестоек [992]. Рассмотрим два одноблочных сообщения: АВ и АС. Если криптоаналитику известны открытый текст и шифртекст первого сообщения, а также первая половина открытого текста второго сообщения, он может легко вычислить все второе сообщение. Хотя такой взлом с известным открытым текстом работает только при определенных условиях, оно представляет собой главную проблему стойкости алгоритма. Ее удается избежать при помощи трехраундового алгоритма шифрования [992,1643,1644]. Он использует три различных хэш-функции: Нь Н2 и Я3. Дальнейшие исследования показали, что Нх может совпадать с Я2, либо Я2 может совпадать с Я3, но не одновременно [1193]. Кроме того, Яь Я2 и Я3 не могут быть основаны на итерациях одной и той же базовой функции [1643]. В любом случае при условии, что Н{к, х) ведет себя как псевдослучайная функция, трехраундовая версия работает следующим образом: 1. Разделите ключ на две половины: К) и Кг. 2. Разделите блок открытого текста на две половины: Ь0 и Я0. 3. Добавьте к Ь0 и выполните хэширование. Выполните операцию ХОЯ над результатом хэширования и Я0, получая Ях: Ях=Я0®Н(К1,Ьо) 4. Добавьте Кг к Ях и выполните хэширование. Выполните операцию ХОЯ над результатом хэширования и Ь0, получая Ьх: 1Х =Ь0®Н(КГ,ЯХ) 5. Добавьте X/ к Ьх и выполните хэширование. Выполните операцию ХОЯ над результатом хэширования и Ях, получая Я2: Я2=Ях®Н(К19Ьх) 6. Объедините Ьх и Я2, получая сообщение. Шифр МОС Шифр МЭС (Мезза§е Э^ез! С1рЬег, шифр дайджеста сообщения), изобретенный Питером Гутманном (Ре1ег ОЩтапп) [676], представляет собой способ превращения однонаправленных хэш-функций в блочный шифр, работающий в режиме СРВ. Шифр работает почти так же быстро, как и хэш-функция, и, по крайней мере, столь же безопасен. Оставшаяся часть этого раздела предполагает знакомство с главой 18. Хэш-функции, например М05 и 8НА, используют 512-битовый текстовый блок для преобразования входного значения (128 бит в 1УГО5, и 160 бит в 8НА) в результат того же размера. Это преобразование необратимо, но прекрасно подходит для режима СРВ - для зашифрования и расшифрования используется одна и та же операция.
398 Прикладная криптография Опишем работу алгоритма МЭС с хэш-функцией 8НА. Алгоритм 1УЮС использует 160-битовый блок и 512-битовый ключ. Хэш-функция исполняется «побочным образом», когда предыдущее хэш-значение используется вместо входного открытого текста (160 бит), а 512-битовый вход хэш-функции играет роль ключа (см. Рис. 14.5). Обычно при использовании хэш-функции для хэширования некоторого входа 512-битовый вход меняется при хэшировании каждого нового 512-битового блока. Но в данном случае 512-битовый вход становится неизменяемым ключом. Блок сообщения г Входное ^ Хэш- % Выходное Хэш- значение функция значение функция Ключ Открытый текст - *Ф- - Шифртекст (а) Хэш-функция (Ь) Хэш-функция как блочный шифр в режиме СРВ Рис. 14.5. Шифр дайджеста сообщения (МйС) Шифр МОС можно использовать с любой однонаправленной хэш-функцией: М04, МЭ5, 8пе1ги и т.д. Он не запатентован и может совершенно бесплатно использоваться кем угодно, когда угодно и где угодно [676]. Однако лично я не верю в эту схему. Можно подобрать такой способ атаки, на противостояние которой хэш-функция не рассчитана. Хэш-функции не обязаны противостоять вскрытию с подобранным открытым текстом, когда криптоаналитик выбирает некоторые начальные 160-битовые значения, получает их «зашифрованными» одним и тем же 512-битовым «ключом» и пользуется этим для получения некоторой информации об используемом 512-битовом ключе. Так как разработчики хэш-функций не должны беспокоиться о такой возможности, считать ваш шифр устойчивым по отношению к приведенному способу вскрытия - не лучшая идея. Стойкость шифров, основанных на однонаправленных хэш-функциях Хотя эти конструкции и могут быть стойкими, они зависят от используемой одно¬ направленной хэш-функции. Хорошая однонаправленная хэш-функция не обязательно дает стойкий алгоритм шифрования. Криптографические требования к ним различны. Например, линейный криптоанализ однонаправленных хэш-функций бесполезен, но действенен против алгоритмов шифрования. Однонаправленная хэш-функция, такая как 8НА, может обладать определенными линейными характеристиками, которые, не влияя на ее надежность как однонаправленной хэш-функции, могут сделать небезопасным ее использование в таком алгоритме шифрования, как МОС. Мне неизвестно ни о каких результатах криптоанализа использования конкретной однонаправленной хэш-функции
ГЛАВА 14. И еще блочные шифры 399 в качестве блочного шифра. Прежде чем доверять им, дождитесь выполнения подобного анализа. 14.12. Выбор блочного алгоритма Это очень трудная проблема. Алгоритм ЭЕ8 почти наверняка небезопасен для защиты от правительств великих держав, если только вы не шифруете одним ключом очень малые порции данных. Возможно, этот алгоритм пока неплох сравнительно с какими- либо другими алгоритмами, но вскоре и это изменится. Машины для лобового вскрытия ключа БЕ8 скоро станут по карману всем организациям. Предложенные Бихамом, зависящие от ключа, 8-блоки ЭЕ8 останутся надежными в течение, по крайней мере, нескольких лет, возможно, за исключением использования против самых сильных противников. Если необходимый уровень безопасности должен быть гарантирован на десятилетия, или вы опасаетесь попыток криптоанализа со стороны правительств великих держав, воспользуйтесь тройным БЕ8 с тремя независимыми ключами. Не слишком надежны и другие алгоритмы. Мне нравится В1о\уГ1зЬ, поскольку он быстр, а, кроме того, это мое детище. Неплохо выглядит 3-^ау, возможно, все в порядке и с алгоритмом ГОСТ. Недостаток любого совета в том, что АНБ почти наверняка располагает набором эффективных криптоаналитических приемов, которые до сих пор засекречены, и я не знаю, какие алгоритмы могут быть вскрыты. В табл. 14.3 для сравнения приведены временные характеристики некоторых алгоритмов. Мой же любимый алгоритм - ШЕА. Его 128-битовый ключ в сочетании с устойчивостью к общеизвестным средствам криптоанализа - вот источники моего теплого и нежного чувства к этому алгоритму. Этот алгоритм анализировался различными группами, и никаких серьезных замечаний опубликовано не было. Сегодня, в отсутствие необычайных прорывов в области криптоанализа, я ставлю на ЮЕА. Таблица 14.3. Скорости шифрования некоторых блочных шифров процессором 1п1е14868Х (33 МГц) Алгоритм Скорость шифрования (Кбайт/сек) Алгоритм Скорость шифрования (Кбайт/сек) В1о\уП$Ь (12 раундов) 182 МОС (с М04) 186 В1о\уГ1зЬ (16 раундов) 135 МОС (с М05) 135 В1о\\'Г1$Ь (20 раундов) 110 МОС (с ЗНА) 23 БЕЗ 35 Ые\уОЕ5 233 РЕАЬ-8 300 КЕООС II 1 РЕАЬ-16 161 тюс III 78
400 Прикладная криптография Алгоритм Скорость шифрования (Кбайт/сек) Алгоритм Скорость шифрования (Кбайт/сек) РЕАЬ-32 91 КС5-32/8 127 ГОСТ 53 КС5-32/12 86 ЮЕА 70 К.С5-32/16 65 КЪий1 (16 раундов) 221 КС5-32/20 52 КЬийд (24 раунда) 153 8АЕЕЯ (6 раундов) 81 КЕий! (32 раунда) 115 8АРЕЯ (8 раундов) 61 Любы-Ракоффа (с МЭ4) 47 8 АРЕН (10 раундов) 49 Любы-Ракоффа (с М05) 34 8АРЕК. (12 раундов) 41 Любы-Ракоффа (с 8НА) 11 3-\Уау 25 Ьисйег 52 Тройной ОЕ8 12
ГЛАВА 15. Объединение блочных шифров Известно множество путей объединения блочных алгоритмов для получения новых алгоритмов. Создание подобных схем стимулируется желанием повысить безопасность, избежав трудности проектирования нового алгоритма. Так, алгоритм ЭЕ8 относится к надежным алгоритмам, он подвергался криптоанализу добрых 20 лет и, тем не менее, наилучшим способом взлома остается лобовое вскрытие. Однако ключ БЕ8 слишком короток. Разве не плохо было бы использовать БЕ8 в качестве компонента другого алгоритма с более длинным ключом? Это позволило бы воспользоваться преимуществами обоих систем: устойчивостью, гарантированной двумя десятилетиям криптоанализа, и длинным ключом. Один из методов объединения - многократное шифрование. В этом случае для шифрования одного и того же блока открытого текста алгоритм шифрования используется несколько раз с несколькими ключами. Каскадное шифрование подобно многократному шифрованию, но использует различные алгоритмы. Известны и другие методы. Повторное шифрование блока открытого текста одним и тем же ключом с помощью того же или другого алгоритма неэффективно. Повторное использование того же алгоритма не повышает сложность лобового вскрытия. (Не забывайте, мы предполагаем, что криптоаналитику известны алгоритм и число операций шифрования). При использовании различных алгоритмов сложность лобового вскрытия может как возрастать, так и оставаться неизменной. Если вы собираетесь использовать методы, описанные в этой главе, убедитесь, что ключи для последовательных шифрований различны и независимы. 15.1. Двойное шифрование К наивным способам повышения надежности алгоритма относится шифрование блока дважды с двумя различными ключами. Сначала блок зашифровывается первым ключом, а получившийся шифртекст - вторым ключом. Расшифрование выполняется в обратном порядке. С = ЕКг(Е^(Р)) Р ~ Окх (Ок2 (^)) Если блочный алгоритм образует группу (см. раздел 11.3), всегда существует такой АГ3, для которого: С = ЕК2(ЕК1(Р)) = ЕКз(Р) Если алгоритм не образует группу, взломать итоговый дважды зашифрованный блок шифртекста с помощью полного перебора намного сложнее. Вместо 2п (где п - длина ключа в битах), потребуется 22п попыток. Если алгоритм использует 64-битовый ключ, для обнаружения ключей, которыми дважды зашифрован шифртекст, понадобится 2128 попыток.
402 Прикладная криптография Однако при атаке с известным открытым текстом это не так. Меркл и Хеллман [1075] предложили способ согласования памяти и времени, который позволяет вскрыть такую схему двойного шифрования за 2"+1 шифрований, а не за 22". (Они использовали эту схему против БЕ8, но результаты можно обобщить на все блочные алгоритмы). Такая атака называется «встреча посередине»: с одной стороны выполняется зашифрование, а с другой - расшифрование, а полученные посередине результаты сравниваются. В этой атаке криптоаналитику известны значения Рь С\, Р2 и С2, такие что: С{=ЕК2(ЕК] (/>)) С 2 = ЕК2(ЕК[(Р2)) Для каждого возможного К криптоаналитик рассчитывает ЕК{Р\) и сохраняет результат в памяти. Собрав все результаты, он для каждого К вычисляет Ок{С\) и ищет в памяти такой же результат. Если такой результат обнаружен, то, возможно, что текущий ключ - К2, а ключ для результата в памяти - К\. Затем криптоаналитик зашифровывает Р2 ключами К\ и К2. Если он получает С2, он может почти быть убежденным (с вероятностью 1 к 21т'1п, где т - размер блока), что он восстановил и Ки и К2. В противном случае он продолжает поиск. Максимальное количество попыток шифрования, которое ему придется предпринять, составляет 2*2", т.е. 2"+1. Если вероятность ошибки слишком велика, криптоаналитик может использовать третий блок шифртекста, обеспечивая вероятность успеха 1 к 23/”~2". Существуют и другие способы оптимизации [912]. Для такого вскрытия нужен большой объем памяти: 2" блоков. Для 56-битового ключа нужно хранить 256 64-битовых блоков, или 1017 байт. Такой объем памяти пока еще трудно себе представить, но этого хватает, чтобы убедить самых осторожных криптографов в ненадежности двойного шифрования. При 128-битовом ключе для хранения промежуточных результатов потребуется огромная память в 1039 байт. Если предположить, что каждый бит информации хранится на единственном атоме алюминия, запоминающее устройство, нужное для такого вскрытия, будет представлять собой алюминиевый куб с ребром 1 км. Кроме того, вам понадобится куда-то его поставить! Так что атака «встреча посередине» при ключах такого размера представляется невозможной. Другой способ двойного шифрования, который иногда называют методом Дэвиса- Прайса (ОаУ1е5-Рпсе), представляет собой вариант режима шифрования СВС [435]. С,=ЕК1(Р,®ЕК2(С^)) Р/ ~ Окх (С/) ® ЕКг (С,_,) Утверждается, что «у этого режима нет никаких особых достоинств», к тому же он, по¬ видимому, столь же уязвим к атаке «встреча посередине» как и другие режимы двойного шифрования.
ГЛАВА 15. Объединение блочных шифров 403 15.2. Тройное шифрование Тройное шифрование с двумя ключами В более удачном методе, предложенном Тачменом в [1551], блок обрабатывается три раза с использованием двух ключей: первым ключом, вторым ключом и снова первым ключом. Тачмен предлагает, чтобы отправитель сначала зашифровал сообщение первым ключом, затем расшифровал вторым, и окончательно зашифровал первым ключом. Получатель расшифровывает сообщение первым ключом, затем зашифровывает вторым и, наконец, расшифровывает первым. С = ЕКхфК2{ЕКх{Р))) Р = 0К](ЕК2(0Кх(С))) Иногда такой режим называют режимом зашифрование-расшифрование- зашифрование (Епсгур1-Оесгур1-Епсгур1 - ЕПЕ) [55]. Если блочный алгоритм использует «-битовый ключ, длина ключа описанной схемы составляет 2п бит. Эта остроумная связка ключей (зашифрования-расшифрования-зашифрования) разработана в корпорации 1ВМ для совместимости с существующими реализациями алгоритма: задание двух одинаковых ключей эквивалентно одинарному шифрованию. Такая схема ЕЭЕ сама по себе не обеспечивает заведомую безопасность, однако этот режим использовался для улучшения алгоритма ЭЕ8 в стандартах Х9.17 и 180 8732 [55, 761]. Для предотвращения описанной выше атаки «встреча посередине», использование ключей К\ и К2 чередуется. Если С=ЕКг{ЕКх{ЕКх{Р))), то криптоаналитик может заранее вычислить ЕКх{ЕКх{Р))) для любого возможного Ки а затем выполнить вскрытие. Для этого потребуется только 2п+2 шифрований. Тройное шифрование с двумя ключами устойчиво к такой атаке. Но Меркл и Хеллман разработали другой способ согласования памяти и времени, который позволяет взломать и этот алгоритм шифрования за 2"“‘ действий, используя 2п блоков памяти [1075]. Для каждого возможного К2 расшифруйте 0 и сохраните результат в памяти. Затем расшифруйте 0 для каждого возможного Ки чтобы получить Р. Выполните тройное зашифрование Р, чтобы получить С, и затем расшифруйте С ключом К\. Если полученное значение совпадает со значением (хранящимся в памяти), полученным при расшифровании 0 ключом Къ то, возможно, пара К\ К2 и будет искомым результатом. Проверьте, так ли это. Если нет, продолжайте поиск. Для выполнения этого вскрытия с подобранным открытым текстом нужна память огромного объема. Понадобится 2п времени и памяти, а также 2т подобранных открытых текстов. Атака не слишком практична, но все же указывает на некоторую слабость этого метода. Пауль ван Оорсчот (Раи1 уап ОогзсЬо!) и Майкл Винер (МюЬае1 Мепег) преобразовали эту атаку к атаке на основе открытых текстов, для которой их нужно р штук. В примере предполагается использование режима ЕОЕ.
404 Прикладная криптография 1) Предположите первое промежуточное значение а. 2) Используя известный открытый текст, сведите в таблицу для каждого возможного Кх второе промежуточное значение Ь при первом промежуточном значении, равном а: Ъ = Окх(С) где С - шифртекст, полученный по известному открытому тексту. 3) Для каждого возможного К2 найдите в таблице элементы с совпадающим вторым промежуточным значением Ь: Ъ = ЕКг(а) 4) Вероятность успеха равна р!т, где р - число известных открытых текстов, а т - размер блока. Если совпадения не обнаружены, выберите другое значение а и начните сначала. Атака требует 2п+т/р времени и р - памяти. Для алгоритма БЕЗ это составляет 2по/р [1558]. Прир, больших 256, эта атака выполняется быстрее, чем полный перебор. Тройное шифрование с тремя ключами Если вы собираетесь использовать тройное шифрование, рекомендую использовать три разных ключа. Общая длина ключа станет больше, но хранение ключа обычно не вызывает затруднений. Биты дешевы. с = ЕКг(0К2(ЕК)(Р))) Р ~ Окх (Е/с2 (Вк} (С))) Для наилучшего вскрытия с согласованием памяти и времени, примером которого служит «встреча посередине», понадобятся 22п операций и 2" блоков памяти [1075]. Тройное шифрование с тремя независимыми ключами настолько надежно, насколько на первый взгляд кажется надежным двойное шифрование. Тройное шифрование с минимальным ключом Известен более надежный метод использования тройного шифрования с двумя ключами, препятствующий описанной атаке и называемый тройным шифрованием с минимальным ключом (Тпр1е Епсгур1:юп \У1Й1 Мштит Кеу - ТЕМК) [858]. Фокус в том, чтобы получить три ключа из двух: Хх иХ2. К, = ЕХ1(ВХ2(ЕХ1(Г1))) Кг = ЕХ](ВХ2(ЕХ1(Т2))) К, = ЕХ](ВХ2(ЕХ](Т3)))
ГЛАВА 15. Объединение блочных шифров 405 Здесь Ти Т2 и Т3- константы, которые необязательно хранить в секрете. Эта схема гарантирует, что для любой конкретной пары ключей наилучшим методом взлома будет вскрытие с известным открытым текстом. Режимы тройного шифрования Недостаточно просто определить тройное шифрование, его можно выполнить несколькими методами. Решение зависит от требуемых безопасности и эффективности. Вот два возможных режима тройного шифрования: Внутренний СВС: Файл зашифровывается в режиме СВС три раза (см. Рис. 15.1а). Для этого нужны три различных вектора инициализации (ВИ). С(=^3№0Сн); 5, = />*2(Г,©$м); Т, = Ек^ ©Гм) Р, = 7]_, ® БКх (7]); 7] = 5,_, Ф ЕКг (5,); 5,- = См Ф (С,) Где С0, $о и Т0- векторы инициализации. Внешний СВС: Файл шифруется с помощью тройного шифрования (один раз) в режиме СВС (см. Рис. 15ЛЬ). Для этого нужен один вектор ВИ. с, = ЕКз (йКг (Ек> {Р, Ф См))) />=^,©^(^(0^(0,))) (а) Внутренний СВС (Ь) Внешний СВС Рис. 15.1. Тройное шифрование в режиме СВС Оба режима требуют больше ресурсов, чем однократное шифрование: больше аппаратуры или больше времени. Однако при установке трех шифровальных микросхем
406 Прикладная криптография производительность внутреннего СВС не меньше, чем при однократном шифровании. Так как три шифрования СВС независимы, три микросхемы могут быть загружены постоянно, подавая свой выход себе на вход. Напротив, во внешнем СВС обратная связь лежит вне трех процессов шифрования. Это означает, что даже при использовании трех микросхем производительность составит только треть производительности однократного шифрования. Чтобы получить ту же производительность для внешнего СВС, потребуется чередование векторов ВИ (см. раздел 9.12): С) = ЕК} Фкг (ЕКг (Р: 0 С,_3))) где С0, С. 1 и С.2 ~~ векторы инициализации. Это не поможет при программной реализации, разве только при использовании параллельного компьютера. К сожалению, менее сложный режим также и менее безопасен. Бихам проанализировал устойчивость различных режимов к дифференциальному криптоанализу с подобранными шифртекстами и обнаружил, что внутренний СВС только незначительно надежнее однократного шифрования. Если рассматривать тройное шифрование как большой единый алгоритм, его внутренние обратные связи позволяют вводить внешнюю и известную информацию во внутреннюю структуру алгоритма, что облегчает криптоанализ. Для дифференциальных атак нужно огромное количество подобранных шифртекстов, что делает эти вскрытия не слишком практичными, но этих результатов должно хватить, чтобы насторожить скептически настроенных пользователей. Анализ устойчивости алгоритмов к вскрытиям «в лоб» и «встречей посередине» показал, что в этом отношении оба варианта одинаково надежны [806]. Кроме перечисленных, известны и другие режимы. Можно зашифровать файл один раз в режиме ЕСВ, затем дважды в СВС, или один раз в СВС, один в ЕСВ и еще раз в СВС, или дважды в СВС и один раз в ЕСВ. Бихам показал, что эти варианты отнюдь не устойчивее однократного БЕЗ при вскрытии методом дифференциального криптоанализа с подобранным открытым текстом [162]. Он не оставил больших надежд и для других вариантов. Если вы собираетесь применять тройное шифрование, используйте режимы с внешней обратной связью. Варианты тройного шифрования Прежде чем было доказано, что ЭЕЗ не образует группу, предлагались различные схемы многократного шифрования. Одним из способов гарантировать, что тройное шифрование не выродится в однократное, было изменение эффективной длины блока. Простой метод предполагает дополнять блок битами. С этой целью между первым и вторым, а также между вторым и третьим шифрованиями текст дополняется строкой случайных битов длиной в полблока (см. Рис. 15.2). Если р - это функция дополнения, то: С = ЕКз(р(ЕК2(р(ЕК1(Р)т Дополнение не только маскирует структуру текста, но и обеспечивает перекрытие блоков шифрования, примерно как кирпичи в стене. Длина сообщения увеличивается только на один блок.
ГЛАВА 15. Объединение блочных шифров 407 В другом методе, предложенном Карлом Эллисоном (Саг1 ЕШзоп), между тремя шифрованиями используется некоторая бесключевая функция перестановки. Перестановка должна работать с большими блоками - 8 Кбайт или около этого, что делает эффективный размер блока для этого варианта равным 8 Кбайт. Если перестановка выполняется быстро, этот вариант ненамного медленнее, чем базовое тройное шифрование. С = ЕКз{Т(ЕКг(Т(ЕК1(Р))))) Т собирает входной блок (длиной до 8 Кбайт) и использует генератор псевдослучайных чисел для его перемешивания. Изменение одного входного бита приводит к изменению восьми байтов результата первого шифрования, до 64 байтов- результата второго шифрования и до 512 байтов - результата третьего шифрования. Если каждый блочный алгоритм работает в режиме СВС, как предполагалось первоначально, изменение единичного входного бита, скорее всего, приведет к изменению всего 8-килобайтового блока, даже если это не первый блок. Новейший вариант этой схемы противодействует атаке на внутренний СВС, предложенной Бихамом, добавлением процедуры отбеливания, позволяющей замаскировать структуру открытых текстов. Эта процедура представляет собой потоковую операцию ХОК с криптографически надежным генератором псевдослучайных чисел и обозначена ниже как Д. Т мешает криптоаналитику определить априорно ключ, использованный для шифрования любого заданного входного байта последнего шифрования. Второе шифрование обозначено пЕ (шифрование с циклическим использованием п различных ключей): С = ЕКз(К(Т(пЕК2(Т(ЕК1(К))т Все шифрования выполняются в режиме ЕСВ, используется не меньше п+2 ключей шифрования и криптографически стойкий генератор псевдослучайных чисел. В этой схеме предлагалось использование алгоритма БЕЗ, однако она работает с любым блочным алгоритмом. Мне неизвестны факты анализа надежности этой схемы.
408 Прикладная криптография 15.3. Удвоение длины блока В академических кругах давно спорят на тему, достаточна ли 64-битовая длина блока. С одной стороны, 64-битовый блок обеспечивает рассеивание открытого текста только на 8 байтов шифртекста. С другой стороны, более длинный блок затрудняет надежную маскировку структуры, а, кроме того, увеличивает вероятность ошибок. Выдвигались предложения удваивать длину блока алгоритма с помощью многократного шифрования [299]. Прежде, чем реализовывать одно из них, оцените возможность вскрытия «встреча посередине». Схема Ричарда Аутбриджа (КлсЬагс! Ои1егЬпс1§е) [300], показанная на Рис. 15.3, ничуть не безопаснее тройного шифрования с одинарным блоком и двумя ключами [859]. Рис. 15.3. Удвоение длины блока Однако я не рекомендую использовать подобный прием. Он не быстрее обычного тройного шифрования: для шифрования двух блоков данных все так же нужно шесть шифрований. Характеристики обычного тройного шифрования известны, а за новыми конструкциями часто скрываются новые проблемы. 15.4. Другие схемы многократного шифрования Недостаток тройного шифрования с двумя ключами заключается в том, что при увеличении вдвое пространства ключей нужно выполнять три шифрования каждого блока открытого текста. Разве не здорово было бы найти какой-нибудь хитрый способ объединить два шифрования, которые удвоили бы пространство ключей?
ГЛАВА 15. Объединение блочных шифров 409 Двойной режим ОРВ/счетчика Этот метод использует блочный алгоритм для генерации двух гамм, которые используются для шифрования открытого текста. Я/= ©Л); /1=А+1 Ъ=ЕК1(Тм®12)\ /2=/2 +1 С, =Р'Ф 5,- ® 7) где 5/ и Г, - внутренние переменные, а ^ и /2 - счетчики. Две копии блочного алгоритма работают в некотором гибридном режиме ОРВ/счетчика, а открытый текст, 8/ и Г/ объединяются операцией ХОЯ. Ключи Кх и К2 независимы. О криптоанализе этого варианта мне неизвестно. Режим ЕСВ + ОРВ Этот метод разработан для шифрования нескольких сообщений фиксированной длины, например, блоков диска [186, 188]. Используются два ключа: Кх и К2. Сначала для генерации маски блока нужной длины используется выбранный алгоритм и ключ К\. Эта маска впоследствии используется повторно для шифрования сообщений теми же ключами. Затем выполняется операция ХОЯ над открытым текстом сообщения и маской. Наконец результат этой операции шифруется с помощью выбранного алгоритма и ключа К2 в режиме ЕСВ. Этот метод анализировался только в той работе, в которой он и был опубликован. Понятно, что он не слабее одинарного шифрования ЕСВ, и, возможно, столь же устойчив, как и двойное применение алгоритма. Вероятно, криптоаналитик может выполнять независимый поиск двух ключей, если получит несколько файлов открытого текста, зашифрованных одним ключом. Чтобы затруднить анализ идентичных блоков в одних и тех же местах различных сообщений, можно использовать вектор инициализации (ВИ). В отличие от использования векторов ВИ в других режимах, в данном случае перед шифрованием ЕСВ выполняется операция ХОЯ над каждым блоком сообщения и вектором ВИ. Мэтт Блейз (МаЯ В1а2е) разработал этот режим для своей криптографической файловой системы (Сгур{о§гарЫс РПе 8уз1ет- СР8) 1Ж1Х. Это удачный режим, поскольку задержку вызывает только одно шифрование в режиме ЕСВ - маску можно генерировать только один раз и сохранить. В СР8 в качестве блочного алгоритма используется ЭЕ8. Схема хОЕЗ1 В [1644, 1645] ЭЕ8 используется как компонент ряда блочных алгоритмов с увеличенными размерами ключей и блоков. Эти схемы никак не зависят от ЭЕ8, и в них может использоваться любой блочный алгоритм. Первый, ХБЕ81, представляет собой просто схему Любы-Ракоффа с блочным шифром в качестве базовой функции (см. раздел 14.11). Размер блока вдвое больше размера блока используемого блочного шифра, а размер ключа втрое больше, чем у используемого
410 Прикладная криптография блочного шифра. В каждом из трех раундов правая половина шифруется блочным алгоритмом и одним из ключей, затем выполняется операция ХОК. результата с левой половиной, и половины переставляются. Это быстрее обычного тройного шифрования, так как тремя шифрованиями шифруется блок, длина которого вдвое больше длины блока используемого блочного алгоритма. Но при этом возможна простая атака «встреча посередине», которая позволяет найти ключ с помощью таблицы размером 2к, где к - размер ключа блочного алгоритма. Правая половина блока открытого текста шифруется с помощью всех возможных значений Къ выполняется операция ХОК с левой половиной открытого текста, и полученные значения сохраняются в таблице. Затем правая половина шифртекста шифруется с помощью всех возможных значений К3, и выполняется поиск совпадений в таблице. При совпадении пара ключей возможный вариант правого ключа. После нескольких попыток вскрытия останется только один кандидат. Таким образом, хОЕЗ1 нельзя назвать идеальным решением. Более того, известно вскрытие с подобранным открытым текстом, доказывающее, что хЭЕБ1 ненамного прочнее используемого в нем блочного алгоритма [858]. В хЭЕ82 эта идея расширяется до 5-раундового алгоритма, размер блока которого в 4, а размер ключа - в 10 раз превышают размеры блока и ключа используемого блочного шифра. На Рис. 15.4 показан один этап хЭЕ82, каждый из четырех подблоков по размеру равен блоку используемого блочного шифра, а все 10 ключей независимы. Эта схема также быстрее тройного шифрования: для шифрования блока, который в четыре раза больше блока используемого блочного шифра, нужно 10 шифрований. Однако этот метод уязвим к дифференциальному криптоанализу [858] и использовать его не стоит. Такая схема остается чувствительной к дифференциальному криптоанализу, даже если используется ЭЕ8 с независимыми ключами раундов. При / > 3 ХБЕ81 вероятно слишком громоздок, чтобы использовать его в качестве блочного алгоритма. Например, размер блока хОЕ83 в 6 раз больше, чем у лежащего в основе блочного шифра, ключ в 21 раз длиннее, а для шифрования блока, который в 6 раз длиннее блока, лежащего в основе блочного шифра, нужно 21 шифрование. Тройное шифрование выполняется быстрее.
ГЛАВА 15. Объединение блочных шифров 411 Пятикратное шифрование Если тройное шифрование недостаточно надежно - скажем, вы хотите зашифровать ключи тройного шифрования еще более сильным алгоритмом - кратность шифрования можно увеличить. Очень устойчиво к вскрытию «встреча посередине» пятикратное шифрование. (Аргументы, аналогичные рассмотренным для двойного шифрования, показывают, что четырехкратное шифрование по сравнению с тройным лишь незначительно повышает надежность). С = Екх Фк2 (Ек3 фк2 (ЕК{ (Р))))) Р = Окх (Ек2 Фк3 (Ек2 Фкх (О)))) Эта конструкция обратно совместима с тройным шифрованием, если К2 = К3, и с однократным шифрованием, если К\=К2 = К3. Конечно, она будет еще надежней, если использовать пять независимых ключей. 15.5. Уменьшение длины ключа в СЭМР Этот метод разработан в 1ВМ для продукта СЭМР (Сошшегс1а1 Эа1а Ма$кт§ РасПку- аппаратура закрытия коммерческих данных) (см. раздел 24.8). Он предназначен для преобразования 56-битового ключа ОЕ8 в 40-битовый ключ, разрешенный для экспорта [785]. Предполагается, что в первоначальный ключ ОЕ8 включены биты четности. 1. Обнуляются биты четности: биты 8, 16, 24, 32, 40, 48, 56, 64. 2. Результат этапа 1 шифруется с помощью ЭЕ8 ключом 0хс408Ь0540Ьа1е0ае, результат шифрования объединяется операцией ХОК с результатом этапа 1. 3. В результате этапа 2 обнуляются следующие биты: 1, 2, 3, 4, 8, 16, 17, 18, 19, 20, 24, 32, 33, 34, 35, 36, 40, 48, 49, 50, 51, 52, 56, 64. 4. Результат этапа 3 шифруется с помощью ОЕ8 ключом 0хе!2с041се6382Ге6. Полученный ключ используется для шифрования сообщения. Не забывайте, что этот метод укорачивает ключ и, следовательно, ослабляет алгоритм. 15.6. Отбеливание Отбеливанием (\укИепт%) называют такое преобразование, при котором выполняется операция ХОК над входом блочного алгоритма и частью ключа и ХОК над выходом блочного алгоритма и другой частью ключа. Впервые этот метод применен для варианта ОЕ8Х, разработанного в К8А Ба1а 8есип1у, 1пс., а затем (по-видимому, независимо) в КЬиГи и КЪа&е. (Необычное имя методу дано Ривестом). Смысл этих действий в том, чтобы помешать криптоаналитику восстановить пары «открытый текст/шифртекст» для исследуемого блочного алгоритма. Метод заставляет криптоаналитика угадывать не только ключ алгоритма, но и одно из значений отбеливания. Так как операция ХОК выполняется и до, и после исполнения блочного алгоритма, этот метод считается устойчивым к атаке «встреча посередине».
412 Прикладная криптография С = *з©Д*2(^©*1) р = кх® оКг (С ® К3) Если КХ=К3, то для вскрытия «в лоб» потребуется 2п+т/р операций, где п - размер ключа, т - размер блока, а р - число известных открытых текстов. Если К\ и К3 различны, то для вскрытия «в лоб» с тремя известными открытыми текстами потребуется 2"+т+1 операций. Против дифференциального и линейного криптоанализа такие меры обеспечивают защиту на уровне всего нескольких битов ключа. Но с вычислительной точки зрения это очень дешевый способ повышения надежности блочного алгоритма. 15.7. Каскадное применение блочных алгоритмов А как насчет шифрования сначала алгоритмом А и ключом КА, а затем еще раз алгоритмом В и ключом Кв? Может быть, у Алисы и Боба различные мнения о том, какой алгоритм надежнее: Алиса хочет пользоваться алгоритмом А, а Боб - алгоритмом В. Этот прием, иногда называемый каскадным применением, можно распространить и на большее количество алгоритмов и ключей. Пессимисты утверждают, что совместное использование двух алгоритмов не гарантирует повышения безопасности. Алгоритмы могут взаимодействовать каким-то хитрым способом, что на самом деле их надежность даже уменьшится. Даже тройное шифрование тремя различными алгоритмами может оказаться не столь безопасным, как вы рассчитываете. Криптография- довольно тонкое искусство, если вы не совсем понимаете, что делаете, то можете легко попасть впросак. Действительность намного светлее. Упомянутые предостережения верны, только если различные ключи зависят друг от друга. Если все используемые ключи независимы, сложность взлома последовательности алгоритмов, по крайней мере не меньше сложности взлома первого из применяемых алгоритмов [1033]. Если второй алгоритм уязвим к атаке с подобранным открытым текстом, то первый алгоритм может облегчить эту атаку и при каскадном применении может сделать второй алгоритм уязвимым к атаке с известным открытым текстом. Такое возможное облегчение вскрытия не ограничивается только алгоритмами шифрования: если вы позволите кому-то другому определить любой из алгоритмов, делающих что-то с вашим сообщением до шифрования, стоит удостовериться, что ваше шифрование устойчиво по отношению к атаке с подобранным открытым текстом. (Обратите внимание, что наиболее часто используемым алгоритмом для сжатия и оцифровки речи до модемных скоростей, применяемым перед любым алгоритмом шифрования, служит СЕЬР, разработанный в АНБ). Это можно сформулировать и иначе: при вскрытии с подобранным открытым текстом каскад шифров взломать не легче, чем любой из шифров каскада [858]. Предыдущий результат показал, что взломать каскад по крайней мере не легче, чем самый прочный из шифров каскада. Однако в основе этих результатов лежат некоторые не сформулированные предположения [528]. Только если алгоритмы коммутативны, как в случае каскадных потоковых шифров (или блочных шифров в режиме ОРВ), надежность их каскада не меньше, чем у сильнейшего из используемых алгоритмов.
ГЛАВА 15. Объединение блочных шифров 413 Если Алиса и Боб не доверяют алгоритмам друг друга, они могут использовать их каскадом. Для потоковых алгоритмов порядок шифрования значения не имеет. При использовании блочных алгоритмов Алиса может сначала использовать алгоритм А, а затем алгоритм В. Боб, который больше доверяет алгоритму В, может использовать алгоритм В перед алгоритмом А. Между алгоритмами они могут вставить хороший потоковый шифр. Это не причинит вреда и может значительно повысить безопасность. Помните, ключи для каждого алгоритма в каскаде должны быть независимыми. Если алгоритм А использует 64-битовый ключ, а алгоритм В - 128-битовый ключ, то получившийся каскад должен использовать 192-битовый ключ. При использовании зависимых ключей у пессимистов гораздо больше шансов оказаться правыми. 15.8. Объединение нескольких блочных алгоритмов Вот еще один способ объединения нескольких блочных алгоритмов, надежность которого с гарантией не хуже надежности обоих алгоритмов. Для двух алгоритмов (и двух независимых ключей): 1. Генерируйте строку случайных битов К того же размера, что и сообщение М 2. Зашифруйте К первым алгоритмом. 3. Зашифруйте МФК вторым алгоритмом. 4. Шифртекст сообщения представляет собой объединение результатов этапов 2 и 3. При условии, что строка случайных битов действительно случайна, этот метод шифрует М с помощью одноразового блокнота, а затем содержимое блокнота и получившееся сообщение шифруются каждым из двух алгоритмов. Так как для восстановления М необходимо и то, и другое, криптоаналитику придется взламывать оба алгоритма. К недостаткам относится удвоение размера шифртекста по сравнению с открытым текстом. Этот метод можно расширить для нескольких алгоритмов, но добавление каждого алгоритма увеличивает размер шифртекста. Сама по себе идея неплоха, но, как мне кажется, не слишком практична.
ГЛАВА 16. Генераторы псевдослучайных последовательностей и потоковые шифры 16.1. Линейные конгруэнтные генераторы Линейными конгруэнтными генераторами называются генераторы псевдослучайных последовательностей следующего вида: Хп = (аХп_ 1 + Ь) шо(1 т где Хп - это л-ый член последовательности, а Хп.{ - предыдущий член последова¬ тельности. Параметры а, Ь и т представляют собой константы: а - это множитель, Ъ - приращение, и т - модуль. Ключом, или начальным числом, служит значение Х0. Период такого генератора не превышает т. При корректном выборе значений а, Ь и т генератор относится к генераторам с максимальным периодом (иногда - с максимальной длиной), и его период будет равен т. (Например, значение Ъ должно быть взаимно простым со значением т). Подробнее о подборе констант, гарантирующих максимальный период генератора, можно найти в работах [863, 942]. Кроме того, рекомендую полезную статью [1446], в которой обсуждаются линейные конгруэнтные генераторы и их теоретические аспекты. В табл. 16.1, заимствованной в работе [1272], перечислены наборы правильных значений констант линейных конгруэнтных генераторов. Все они обеспечивают создание генераторов с максимальным периодом и, что даже более важно, удовлетворяют спектральному тесту на случайность для размерностей 2, 3, 4, 5 и 6, как указано в [385, 863]. Таблица организована по максимальному произведению, которое не вызывает переполнения в слове указанной длины. К преимуществам линейных конгруэнтных генераторов можно отнести быстродействие, поскольку они требуют небольшое число операций на бит. К сожалению, линейные конгруэнтные генераторы нельзя использовать в криптографии, поскольку их выход предсказуем. Впервые линейные конгруэнтные генераторы были взломаны Джимом Ридсом (Лт Кееёз) [1294, 1295, 1296], а затем Джоан Бояр (.Гоап Воуаг) [1251]. Ей также удалось вскрыть квадратичные генераторы: Хп = (аХп_х2 + ЪХп_х + с) тоё т и кубические генераторы: Хп = (аХп-\* + ЪХп_х + сХп_х 4- сI) тоёт Идеи Бояр развили другие исследователи, которые разработали методы вскрытия любого полиномиального генератора [923, 899, 900]. Были взломаны усеченные линейные конгруэнтные генераторы [581, 705, 580] и усеченные линейные конгруэнтные генераторы с неизвестными параметрами [1500, 212]. Тем самым была доказана бесполезность конгруэнтных генераторов в криптографии.
416 Прикладная криптография Таблица 16.1. Константы линейных конгруэнтных генераторов Переполняется при: а Ь т 220 106 1283 6075 221 211 1663 7875 222 421 1663 7875 223 430 2531 11979 936 1399 6655 1366 1283 6075 224 171 11213 53125 859 2531 11979 419 6173 29282 967 3041 14406 225 141 28411 134456 625 6571 31104 1541 2957 14000 1741 2731 12960 1291 4621 21870 205 29573 139968 226 421 17117 81000 1255 6173 29282 281 28411 134456 227 1093 18257 86436 421 54773 259200 1021 24631 116640 1021 25673 121500 228 1277 24749 117128 741 66037 312500 2041 25673 121500 229 2311 25367 120050 1807 45289 214326 1597 51749 244944 1861 49297 233280
ГЛАВА 16. Генераторы псевдослучайных последовательностей 417 Переполняется при: а Ъ т 2661 36979 175000 4081 25673 121500 3661 30809 145800 230 3877 29573 139968 3613 45289 214326 1366 150889 714025 2з, 8121 28411 134456 4561 51349 243000 7141 54773 259200 232 9301 49297 233280 4096 150889 714025 233 2416 374441 1771875 234 17221 107839 510300 36261 66037 312500 235 84589 45989 217728 Тем не менее, линейные конгруэнтные генераторы сохраняют свою полезность для иных, не криптографических приложений, например, для моделирования. Они обладают высокой эффективностью, и в большинстве используемых эмпирических тестах показывают хорошие статистические характеристики. Важную информацию о линейных конгруэнтных генераторах и их теории можно найти в [942]. Комбинирование линейных конгруэнтных генераторов Комбинации линейных конгруэнтных генераторов исследовались разными специалиста¬ ми [1595, 941]. Криптографическая безопасность таких комбинаций не повышается, но они характеризуются более длинными периодами и обнаруживают лучшие характе¬ ристики в некоторых статистических тестах. На 32-битовых компьютерах можно использовать следующий генератор [941]: зЪаЪд-с 1опд з1 = 1; /* 'Чопд'1 должно быть 32-битовым целым. */ зЪаИс 1опд з2 = 1 ; #с!е^1пе МСЮШЬТ (а,Ъ, с,т, з) д = з/а; з = Ь* (з-а*д) - с*д; НЕ (з<0) з+=т; /* МСЮМЩ/Г (а, Ъ, с, т, з) вычисляет з*Ь тос! т при условии, что т=а*Ь+с и 0 <= с < т */ /* Функция сотЬ±пес1ЪСС возвращает вещественное псевдослучайное Значение в диапазоне (0,1). Функция объединяет линейные конгруэнтные генераторы с периодами 231-85 и 231-249, и ее период равен произведению этих двух простых чисел. */
418 Прикладная криптография йоиЫе сотЪхпес1ЪСС ( VО^с^ ) { 1опд 1опд г; МСЮШЪТ ( 53668, 40014, 12211, 2147483563Ъ, з1 ) МСЮШЪТ ( 52774, 40692, 3791, 2147483399Ъ, з2 ) 2 = з1 - з2 ; ( 2 < 1 ) 2 += 2147483562 ; геЪигп 2*4.656613е-10 ; } /* В общем случае перед использованием функции сотЬхпейЪСС вызывайте функцию ±п±ЪЪСО. */ ■уохб. хпхЪЪСС( 1опд 1п±151, 1опд 1пхЪ52 ) { 31 * 1ПИ81; 32 = 1пхЪ32; } Данный генератор работает до тех пор, пока компьютер может представлять все целые числа между -231+85 и 231-85. Переменные ^ и 82 глобальны и содержат текущее состояние генератора. Перед первым вызовом их необходимо инициализировать. Для переменной 51 начальное значение должно лежать в диапазоне 1—2147483562, для переменной 82 - в диапазоне 1—2147483398. Период генератора приблизительно равен 1018. На 16-битовом компьютере следует использовать другой генератор: зЪаЪхс хпЪ з1 = 1 ; /* "хпЪ" должно быть 16-битовым целым. */ зЪаЪхс хпЪ з2 = 1 зЪаЪхс хпЪ зЗ = 1 #<1е^хпе МСЮШЪТ (а,Ь, с,ш, з) я = з/а; з = Ь* <з-а*д) - с*д; х^ (з<0) з+=ш; /* Функция сохпЬхпес1ЪС6 возвращает вещественное псевдослучайное значение в диапазоне (0,1). Функция объединяет линейные конгруэнтные генераторы с периодами 215-405, 215-104] этих трех простых чисел. */ с периодами 215-405, 215-1041 и 215-1111, и ее период равен произведению <1оиЫе сотЪхпейЪСС ( Vо^с^ ) { хпЪд;
ГЛАВА 16. Генераторы псевдослучайных последовательностей 419 хпЪ г; МСЮШЬТ ( 206, 157, 21, 32363, з1 ) МСЮМОЬТ ( 217, 146, 45, 31727, з2 ) МСЮШЬТ ( 222, 142, 133, 31657, зЗ ) 2 = з1 - з2 ; ( 2 > 706 ) 2 -= 32362 ; 2 += зЗ ; ±2 ( 2 < 1 ) 2 += 32362 ; геЪигп 2 * 3.0899е-5 ; ) /* В общем случае перед использованием сотЬхпес1ЬС6 вызывайте хпхЪЬССг. */ чохе! хпх*ЬЪС<5( хпЪ 1пх-Ь31, хп-Ь 1пх-Ь32, хпЪ 1пх-ЬЗЗ) { 31 - 1пхЪ31; 32 = 1пх*Ь32; 33 * 1пх1:33; } Этот генератор работает, пока компьютер может представлять все целые числа между -32363 и 32363. Переменные $1, з2 и глобальны и содержат текущее состояние генератора. Перед первым вызовом эти переменные следует инициализировать. Начальное значение переменной должно лежать в диапазоне между 1—32362, переменной ^ - в диапазоне 1—31726, переменной $3 - в диапазоне 1—31656. Период генератора равен 1.6*1013. Для обоих генераторов константа Ь в линейном сравнении равна 0. 16.2. Регистры сдвига с линейной обратной связью Последовательности на регистрах сдвига используются как в криптографии, так и в теории кодирования. Теоретические основы работы таких регистров изучены весьма глубоко. Потоковые шифры на базе регистров сдвига служили рабочим инструментом военной криптографии задолго до появления электроники. Регистр сдвига с обратной связью состоит из двух частей: регистра сдвига и функции обратной связи (см. Рис. 16.1). Регистр сдвига представляет собой последовательность битов. (Длина регистра сдвига выражается числом битов. Если длина регистра равна п битам, регистр называют ^-битовым регистром сдвига). При каждом извлечении бита все биты регистра сдвига сдвигаются вправо на 1 позицию. Новый старший бит рассчитывается как функция от всех остальных битов регистра. На выходе регистра
420 Прикладная криптография сдвига оказывается 1 бит, обычно младший значащий бит. Периодом регистра сдвига называют длину получаемой последовательности до начала ее повторения. Ъ„. 1 ^л-2 .... Ъз Ь2 Ьх ^0 У Г 1 Г 1 Функция обратной связи Рис. 16.1. Регистр сдвига с обратной связью Криптографам понравились потоковые шифры на базе регистров сдвига, поскольку они легко реализуются с помощью цифровой аппаратуры. Я лишь слегка затрону математи¬ ческую теорию. В 1965 году главный криптограф норвежского правительства Эрнст Селмер (Егпз! 8е1тег) разработал теорию последовательности регистров сдвига [1411]. Математик АНБ Соломон Голомб (8о1отоп Оо1отЬ) написал книгу, излагающую некоторые результаты его работы в этой отрасли, а также результаты Селмера [643] (см. также работы [970, 971, 1647]). К простейшему типу регистра сдвига с обратной связью относится регистр сдвига с линейной обратной связью (РСЛОС) (Ыпеаг Реес1Ьаск 8Ы/1 Ке%Ыег, ЬРЗР) (см. Рис. 16.2). Обратная связь представляет собой просто операцию ХОЯ над некоторыми битами регистра; перечень этих битов называется последовательностью отводов (или точек съема). Иногда такую схему называют конфигурацией Фибоначчи. Благодаря простоте последовательности обратной связи, для анализа РСЛОС можно использовать довольно развитую математическую теорию. Криптографы любят анализировать последователь¬ ности, убеждая себя, что эти последовательности достаточно случайны, чтобы быть безопасными. В криптографии РСЛОС используются чаще других регистров сдвига. Рис. 16.3. 4-битовый РСЛОС
ГЛАВА 16. Генераторы псевдослучайных последовательностей 421 На Рис. 16.3 показан 4-битовый РСЛОС с отводом от первого и четвертого битов. Если его инициализировать значением 1111, регистр будет принимать следующие внутренние состояния до тех пор, пока они не начнут повторяться: 1111 0 111 10 11 0 10 1 10 10 110 1 0 110 0 0 11 10 0 1 0 10 0 0 0 10 0 0 0 1 10 0 0 110 0 1110 Выходной последовательностью регистра будет строка младших значащих битов: 1 1 1 1 0 1 0 1 1 00 1 000.... /7-битовый РСЛОС может находиться в одном из 2"-1 внутренних состояний. Это значит, что теоретически такой регистр может генерировать псевдослучайную последовательность с периодом 2п - 1 битов. (Это число равно 2"- 1, а не 2", поскольку заполнение РСЛОС нулями влечет вывод регистром бесконечной последовательности нулей, что совершенно бесполезно). Только при определенных последовательностях отводов РСЛОС циклически пройдет через все 2”-1 внутренних состояний. Такие регистры называются регистрами РСЛОС с максимальным периодом. Получившийся выход называют т-последовательностью. Для обеспечения максимального периода конкретного РСЛОС, соответствующий многочлен, образованный из последовательности отводов регистра, должен быть примитивным по модулю 2. Степень многочлена является длиной регистра сдвига. Примитивный многочлен степени п - это такой неприводимый многочлен, который 2«-1 , является делителем х + 1, но не является делителем х + 1 для всех с/, являющихся делителями 2п - 1 (см. раздел 11.3). Соответствующую математическую теорию можно найти в [643, 1649, 1648]. В общем случае не существует простого способа генерации примитивных многочленов данной степени по модулю 2. Проще всего выбирать многочлен случайным образом и проверять, не является ли он примитивным. Это нелегко - и чем-то напоминает проверку случайного числа на простоту - но многие пакеты математических программ умеют решать такую задачу. Ряд методов приведен в [970, 971].
422 Прикладная криптография Некоторые, но, конечно, не все, многочлены различных степеней, примитивные по модулю 2, приведены в табл. 16.2 [1583, 643, 1649, 1648, 1272, 691]. Например, запись (32, 7, 5, 3, 2, 1, 0) означает, что приведенный ниже многочлен примитивен по модулю 2: X32 + х7 + х5 + X3 + х2 + X +1 Такие многочлены можно легко превратить в РСЛОС с максимальным периодом. Высшая степень является длиной РСЛОС, п. Биты нумеруются от п - 1 до 0. Все степени, включая и нулевую, задают последовательность отводов, отсчитываемую от правого (младшего) края регистра сдвига. Член хп обозначает вход, который подается на левый (старший) край регистра. Далее, в продолжение примера, запись (32, 7, 5, 3, 2, 1, 0) означает, что для данного 32-битового регистра сдвига новый бит генерируется с помощью операции ХОЯ над седьмым, пятым, третьим, вторым, первым и нулевом битами (см. Рис. 16.4). Период итогового РСЛОС будет максимальным, циклически проходя последователь¬ ность 232 - 1 значений до ее повторения. Код данного РСЛОС на языке С выглядит таким образом: 1ПЪ ьгзк <) { зЪаЪл-с ипз±дпес! 1опд ЗЫ^ЪКед^зЪег = 1; ЗЫ^ЪКед^зЪег = (((((ЗЫ^ЪКедхзЪег » 7) А (ЗЫ^ЪНедхзЪег » 5) А (ЗЫ^-ЬКед^зЪег » 3) А (ЗЫ^ЪКед±зЪег » 2) А (ЗЫ^-ЬКед^зЪег » 1) АЗЫ^-ЬКед±з1:ег)) & 0x00000001) «31) | (ЗЫ^ЪКед^зЪег » 1) ; геЪигп ЗЫ^-ЬКед^зЪег & 0x00000001; } Если регистр сдвига длиннее размера машинного слова, код усложняется, но не намного.
ГЛАВА 16. Генераторы псевдослучайных последовательностей 423 Таблица 16.2. Некоторые примитивные многочлены по модулю 2 (1,0) (36,11,0) (68, 9,0) (97, 6, 0) (2,1,0) (36, 6, 5,4,2, 1,0) (68, 7,5, 1,0) (98,11,0) (3,1,0) (37, 6,4, 1,0) (69, 6, 5, 2, 0) (98, 7,4, 3,1,0) (4,1,0) (37,5,4,3,2,1,0) (70,5,3, 1,0) (99, 7,5,4, 0) (5, 2, 0) (38, 6, 5,1,0) (71,6, 0) ( 100, 37, 0) (6,1,0) (39,4, 0) (71,5,3,1,0) (100, 8, 7,2, 0) (7,1,0) (40,5,4,3,0) (72,10, 9,3,0) (101,7, 6,1,0) (7,3,0) (41,3,0) (72, 6,4, 3,2, 1,0) (102,6,5,3,0) (8,4, 3,2, 0) (42, 7, 4,3,0) (73,25,0) ( ЮЗ, 9, 9) (9,4,0) (42,5,4,3,2,1,0) (73,4,3,2, 0) ( 104, 11, 10, 1,0) ( Ю, 3, 0) (43,6,4,3,0) (74, 7,4, 3,0) ( 105, 16, 0) (11,2, 0) (44, 6, 5, 2, 0) (75, 6,3, 1,0) ( 106, 15,0) (12, 6, 4,1,0) (45,4,3,1,0) (76,5,4,2, 0) (107, 9, 7, 4,0) (13,4,3,1,0) (46, 8, 7, 6, 0) ( 77, 6, 5, 2, 0) ( 108,31,0) (14, 5, 3, 1, 0) (46, 8, 5, 3,2, 1,0) (78, 7, 2,1,0) (109, 5,4, 2, 0) (15,1,0) (47,5,0) (79, 9, 0) (110, 6, 4,1,0) (16,5,3,2, 0) (48, 9, 7,4, 0) (79,4,3,2, 0) (111, Ю, 0) (17,3,0) (48, 7, 5, 4,2, 1,0) (80, 9,4, 2, 0) (111,49, 0) (17, 5, 0) (49, 9, 0) (80, 7, 5,3,2, 1,0) (113,9, 0) (17, 6, 0) (49, 6,5,4, 0) (81,4, 0) (113,15,0) (18, 7, 0) (50, 4, 3,2,0) (82, 9, 6,4, 0) (113,30, 0) (18,5,2, 1,0) (51,6, 3,1,0) (82, 8, 7, 6,1,0) (114,11,2,1,0) (19,5,2,1,0) ( 52, 3, 0) ( 83, 7, 4, 2, 0) (115, 8, 7,5,0) (20,3,0) (53,6, 2,1,0) (84,13,0) ( 116, 6, 5,2,0) (21,2, 0) ( 54, 8, 6, 3, 0) (84, 8, 7, 5,3, 1,0) (117,5,2,1,0) (22,1,0) (54, 6, 5,4, 3,2, 0) (85, 8,2, 1,0) (118,33,0) (23, 5,0) (55, 24, 0) (86, 6,5,2, 0) (119, 8, 0) (24,4,3,1,0) (55, 6, 2, 1,0) (87,13,0) (119, 45, 0) (25, 3, 0) (56, 7,4, 2, 0) ОО о ( 120, 9, 6, 2, 0)
424 Прикладная криптография (26, 6,2, 1,0) ( 57, 7, 0) (88,11,9, 8, 0) (121,18,0) (27,5,2,1,0) ( 57, 5, 3, 2, 0) (88, 8, 5,4,3, 1,0) (122, 6,2, 1,0) (28,3,0) (58,19, 0) ( 89,38, 0) (123,2,0) (29, 2, 0) ( 58, 6, 5, 1, 0) (89,51,0) ( 124, 37, 0) (30, 6,4, 1,0) ( 59, 7, 4, 2, 0) ( 89, 6, 5, 3, 0) ( 125, 7, 6, 5, 0) (31,3,0) (59, 6, 5, 4,3, 1,0) (90, 5,3,2, 0) (126, 7,4, 2, 0) (31,6, 0) (60,1,0) (91,8,5,1,0) (127,1,0) (31,7, 0) (61,5,2,1,0) (91,7, 6, 5, 3,2, 0) ( 127, 7, 0) (31,13,0) (62, 6, 5, 3,0) (92, 6,5,2, 0) ( 127, 63,0) (32, 7, 6,2, 0) (63,1,0) (93, 2, 0) (128, 7,2, 1,0) (32, 7, 5,3,2, 1,0) (64,4,3,1,0) (94,21,0) ( 129, 5, 0) (33,13,0) (65, 18, 0) (94, 6,5, 1,0) (130,3,0) (33, 16,4, 1,0) (65,4,3,1,0) (95, 11,0) (131,8,3,2, 0) (34, 8,4, 3,0) (66, 9, 8, 6,0) (95, 6,5,4, 2,1,0) ( 132, 29, 0) (34, 7, 6, 5,2, 1,0) ( 66, 8, 6, 5, 3, 2, 0) (96,10, 9, 6, 0) (133,9, 8, 2, 0) (35, 2, 0) (67, 5, 2,1,0) (96, 7, 6,4, 3,2, 0) ( 134,57, 0) (135,11,0) (152, 6,3,2, 0) ( 178, 87, 0) (270, 133,0) ( 135, 16, 0) (153,1,0) ( 183,56, 0) ( 282, 35,0) ( 135, 22, 0) ( 153, 8, 0) ( 194, 87, 0) (282,43,0) (136, 8,3,2, 0) (154, 9,5, 1,0) ( 198, 65,0) (286, 69, 0) (137,21,0) (155,7, 5, 4, 0) (201,14, 0) (286, 73,0) (138, 8, 7, 1,0) (156, 9, 5, 3,0) (201,17,0) (294,61,0) (139, 8, 5, 3,0) (157, 6,5,2, 0) (201,59, 0) (322, 67, 0) ( 140, 29, 0) ( 158, 8, 6, 5, 0) (201,79, 0) (333,2, 0) (141,13,6,1,0) ( 159,31,0) (202, 55, 0) ( 350, 53, 0) ( 142,21,0) ( 159, 34, 0) ( 207,43, 0) (366, 29, 0) (143,5,3, 2, 0) ( 159,40, 0) (212, 105,0) (378,43,0) (144, 7, 4,2, 0) (160,5,3,2, 0) (218,11,0) (378, 107, 0) ( 145, 52, 0) ( 161, 18, 0) (218, 15, 0) ( 390, 89, 0) ( 145, 69, 0) ( 161,39, 0) (218,71,0) ( 462, 73, 0)
ГЛАВА 16. Генераторы псевдослучайных последовательностей 425 (146,5,3,2, 0) (161,60, 0) (218, 83,0) (521,32, 0) (147,11,4,2, 0) (162, 8, 7,4, 0) ( 225, 32, 0) (521,48, 0) ( 148, 27, 0) (163,7, 6,3,0) (225,74, 0) (521, 158, 0) (149,10, 9, 7, 0) ( 164, 12, 6, 5, 0) (225, 88, 0) (521, 168, 0) ( 150, 53, 0) (165,9, 8,3,0) (225, 97, 0) (607, 105,0) (151,3,0) ( 166, 10,3,2, 0) (225, 109, 0) (607, 147, 0) (151,9, 0) ( 167, 6, 0) (231,26, 0) (607,273,0) ( 151, 15, 0) ( 170, 23,0) (231,34, 0) ( 1279,216, 0) (151,31,0) (172,2, 0) (234,31,0) ( 1279,418, 0) ( 151,39, 0) (174,13,0) (234, 103,0) (2281,715,0) (151,43,0) (175,6, 0) (236, 5, 0) (2281,915, 0) ( 151,46, 0) ( 175, 16, 0) (250, 103,0) (2281, 1029, 0) (151,51,0) ( 175, 18, 0) (255, 52, 0) (3217, 67, 0) (151,63,0) ( 175, 57, 0) ( 255, 56, 0) (3217, 576, 0) ( 151,66, 0) (177, 8, 0) ( 255, 82, 0) (4423,271,0) (151,67,0) ( 177,22, 0) (258, 83,0) ( 9689, 84, 0) (151,70, 0) ( 177, 88, 0) (266, 47, 0) Обратите внимание, у всех элементов таблицы число коэффициентов нечетное. Я привел такую длинную таблицу, поскольку РСЛОС часто используются в потоковой криптографии, и я хотел бы, чтобы разные люди могли выбирать для себя различающиеся примитивные многочлены. Если многочлен р(х) примитивен, то примитивен и многочлен хпр( 1/х), поэтому каждый элемент таблицы фактически определяет два примитивных многочлена. Например, если многочлен (а, Ь, 0) примитивен, то примитивен и (а, а-Ь, 0). Если примитивен многочлен (а, Ъ, с, й, 0), то примитивен и (а, а-с1, а-с, а-Ь, 0). Математически это выглядит следующим образом: Если примитивен многочлен ха + хь +1, то примитивен и ха + +1; Если примитивен многочлен ха + + х** +1, то примитивен и ха + + + +1. Программные реализации примитивных трехчленов работают быстрее всех, поскольку для генерации нового бита нужно выполнять операцию ХОК только над двумя битами регистра сдвига. Фактически все многочлены обратной связи, приведенные в табл. 16.2, относятся к разреженным, т.е. у них есть только некоторые коэффициенты. Такая разреженность всегда ослабляет безопасность и иногда достаточна для вскрытия
426 Прикладная криптография алгоритма. Для криптографических алгоритмов гораздо эффективнее использовать плотные примитивные многочлены, т.е. многочлены с большим числом коэффициентов. Применяя плотные многочлены, особенно в качестве части ключа, можно использовать значительно более короткие РСЛОС. Генерировать плотные примитивные многочлены по модулю 2 нелегко. В общем случае, для генерации примитивных многочленов степени к нужно знать разложение на множители числа 2к-\. Проблемы поиска примитивных многочленов обсуждаются в весьма содержательных работах [652, 1285, 1287]. Регистры РСЛОС сами по себе являются хорошими генераторами псевдослучайных последовательностей, но они обладают некоторыми нежелательными неслучайными свойствами. Последовательные биты линейны, что делает их бесполезными для шифро¬ вания. Внутреннее состояние РСЛОС длины п определяет следующие п выходных битов генератора. Даже если схема обратной связи хранится в секрете, она может быть определена по 2п выходным битам генератора с помощью высокоэффективного алгоритма Берлекампа-Мэсси [1082,1083] (см. раздел 16.3). Кроме того, большие случайные числа, генерируемые с помощью идущих подряд битов этой последовательности, сильно коррелированны, и для некоторых типов приложений вообще не являются очень случайными. Несмотря на это, РСЛОС часто используются для создания алгоритмов шифрования. Программные реализации РСЛОС Программные реализации РСЛОС работают медленно, однако на языке ассемблера они работают быстрее, чем на С. Одно из решений заключается в использовании 16 парал¬ лельных РСЛОС (или 32, в зависимости от длины слова вашего компьютера). В такой схеме используется массив слов, размер которого равен длине РСЛОС, а каждый бит слова относится к определенному РСЛОС. При условии использования одинаковых многочленов обратной связи это может дать заметный выигрыш производительности. В целом, лучший способ обновления регистров сдвига - умножение текущего состояния на подходящие двоичные матрицы [901]. Схему обратной связи регистров можно модифицировать. Получающийся генератор не будет более надежным криптографически, но он все еще будет обладать максимальным периодом, и его легче реализовать программным путем [1272]. Для генерации нового старшего значащего бита вместо использования битов последовательности отводов над каждым ее битом выполняется операция ХОЯ с выходом генератора, заменяя старый бит последовательности отводов. Полученный итоговый выход генератора становится новым старшим значащим битом (см. Рис. 16.5). Такую модификацию иногда называют конфигурацией Галуа. Рис. 16.5. РСЛОС Галуа
ГЛАВА 16. Генераторы псевдослучайных последовательностей 427 Соответствующая программа на языке С выглядит таким образом: #<1е€±пе шазк ОхООООООАР зЪаЫс ипзхдпес! 1опд ЗЫ^ЪКед±зЪег=1 ; лт'ол.с! зеес^ЬГЗК (ипз±дпе<1 1опд зеес!) { (зеей. — 0) /* Во избежание проблем */ зеес! = 1 ; ЗЫ^ЪКедхзЪег “ зеей; } ±пЬ тойх^хесМ^ГЗК (VО^с^) { (ЗЫ^ЪКедхзЪег & 0x00000001) { ЗМ^Кед^зЪег = ((ЗЬх^,ЬКед±зЪег А шазк) » 1) | 0x80000000; геЪигп 1; } е1зе { ЗЫ^-ЬКедхзЪег »= 1; геЪигп 0; } } Выгода заключается в том, что все множество операций ХОК может быть выполнено как единая операция. Такая схема также может быть распараллелена, а для различных обратных связей могут быть использованы различные полиномы. Такая конфигурация Галуа может иметь преимущества и при аппаратной реализации, особенно при использовании СБИС. В целом же, при использовании аппаратуры, хорошо выполняющей сдвиги, следует применять конфигурацию Фибоначчи; если же имеется возможность применения параллельной обработки, применяйте конфигурацию Галуа. 16.3. Проектирование и анализ потоковых шифров На РСЛОС основано большинство практических потоковых шифров. Построить такие регистры было несложно даже на ранних этапах развития электроники. Регистр сдвига является не более чем массивом ячеек памяти для хранения битов, а последовательность обратной связи - набором вентилей ХОК. Даже при использовании СБИС потоковый шифр на базе РСЛОС обеспечивает немалую безопасность с помощью всего нескольких логических вентилей. К недостаткам РСЛОС относится неэффективность их программной реализации. Вам приходится избегать разреженных многочленов обратной связи, поскольку они облегчают корреляционные атаки [1051, 1090, 350], а плотные многочлены обратной связи неэффективны. Любые потоковые шифры выводятся побитово; поэтому вам
428 Прикладная криптография потребуется 64 итерации там, где ОЕ8 требовалась одна. Действительно, программная реализация простого алгоритма РСЛОС, подобного описываемому ниже сжимающему генератору, работает не быстрее, чем БЕ8. Данная отрасль криптографии быстро развивается и приобретает большое политическое значение. Большинство разработок засекречены - множество используемых сегодня военных систем шифрования основаны на РСЛОС. Действительно, у большинства компьютеров Сгау (Сгау 1, Сгау Х-МР, Сгау У-МР) есть весьма любопытный оператор, обычно называемый «подсчет популяции». Этот оператор подсчитывает число единичных бит в регистре и может быть использован как для эффективного вычисления расстояния Хэмминга между двумя двоичными словами, так и для реализации векторизованной версии РСЛОС. Я слышал, что этот оператор считается каноническим оператором АНБ, обязательно фигурирующим почти во всех контрактах, касающихся компьютеров. С другой стороны, было взломано удивительно большое число генераторов на базе регистров сдвига, вначале казавшихся достаточно сложными. И, само собой, еще больше число таких генераторов, взломанных военными криптоаналитическими учреждениями, типа, например, АНБ. Тем не менее, иногда просто удивляешься, видя, как на рассмотрение снова и снова предлагаются самые простые генераторы. Линейная сложность Нередко потоковые шифры анализировать проще, чем блочные. Например, важным параметром, используемым для анализа генераторов на базе РСЛОС, является линейная сложность, или линейный размах (зрап). Она определяется как длина п самого короткого РСЛОС, который может имитировать выход генератора. Любая последова¬ тельность, сгенерированная конечным автоматом над конечным полем, имеет конечную линейную сложность [1006]. Линейная сложность важна, поскольку с помощью простого алгоритма, называемого алгоритмом Берлекампа-Мэсси (ВеНекашр-Маззеу), можно воссоздать такой РСЛОС, проверив всего 2п битов гаммы [1005]. Определив нужный РСЛОС, вы взламываете потоковый шифр. Эту идею можно расширить с полей на кольца [1298], и на случаи, когда выходная последовательность рассматривается как числа в поле нечетной характеристики [842]. Дальнейшее расширение приводит к понятию профиля линейной сложности, который определяет линейную сложность последовательности по мере ее удлинения [1357, 1168, 411, 1582]. Другой алгоритм вычисления линейной сложности прост только в очень специфических условиях [597, 595, 596, 1333]. Обобщение понятия линейной сложности выполнено в работе [776]. Существуют также понятия сферической и 2-адической сложности [844]. Во всяком случае, учтите, что высокая линейная сложность не обязательно гарантирует стойкость генератора, но низкая линейная сложность явно указывает на недостаточную надежность [1357, 12.49]. Корреляционная стойкость Криптографы пытаются получить высокую линейную сложность, нелинейно объединяя результаты некоторых выходных последовательностей. Опасность состоит в том, что одна или несколько внутренних выходных последовательностей - часто просто выходы
ГЛАВА 16. Генераторы псевдослучайных последовательностей 429 отдельных РСЛОС - могут иметь корреляцию с объединенной гаммой и атакованы при помощи линейной алгебры. Часто такие атаки называют корреляционными или атаками «разделяй и властвуй». Томас Сигенталер (ТЬотаз $1е§еп1Ьа1ег) показал, что можно точно определить корреляционную стойкость (соггеШюп ттипНу), и что существует взаимосвязь выгод и потерь при выборе между корреляционной стойкостью и линейной сложностью [1450]. Основная идея корреляционной атаки заключается в выявлении определенной корреляции между выходом генератора и выходом одной из его составных частей. Тогда, отслеживая выходную последовательность, можно получить информацию об этом промежуточном выходе. Используя эту информацию и другие корреляции, можно собирать данные о других промежуточных выходах до тех пор, пока генератор не будет взломан. Корреляционные атаки и их вариации, например, быстрые корреляционные атаки, предлагающие компромисс между вычислительной сложностью и эффективностью [1451, 278, 1452, 572, 1636, 1051, 1090, 350, 633, 1054, 1089, 995] успешно использовались против множества генераторов гаммы на базе РСЛОС. Ряд интересных новых идей в этой области можно найти в [46, 1641]. Другие атаки Известны и другие методы вскрытия генераторов потоков ключей. Тест на линейную согласованность (Ипеаг сотЫепсу) пытается найти некоторое подмножество ключа шифрования с помощью матричной техники [1638]. Существует и атака на согласованность «встречей посередине» (тее1-т-1кечтс1с11е сотЫепсу аПаск) [39, 41]. Алгоритм линейного синдрома основан на возможности записи фрагмента выходной последовательности в виде линейного уравнения [1636, 1637]. Существует атака на основе лучшего аффинного приближения [502] и атака на основе выводимой последовательности (йегюей зедиепсе аНаск) [42]. Кроме того, к потоковым шифрам можно применить методы дифференциального [501] и линейного [631] криптоанализа. 16.4. Потоковые шифры на основе РСЛОС Основной подход, применяемый при проектировании генератора гаммы на базе РСЛОС, прост. Сначала берется один или несколько РСЛОС, обычно с различными длинами и различными многочленами обратной связи. (Если длины взаимно просты, а все многочлены обратной связи примитивны, то у сконструированного генератора будет максимальная длина). Ключ является начальным состоянием регистров РСЛОС. Каждый раз для получения нового бита следует однократно сдвинуть РСЛОС (иногда такую операцию называют тактированием (с1оскт%)). Выходной бит представляет собой функцию, желательно нелинейную, некоторых битов РСЛОС. Эта функция называется комбинирующей функцией, а генератор в целом - комбинирующим генератором. (Если выходной бит является функцией единственного РСЛОС, то генератор называется фильтрующим генератором).1 Большая часть теории такого рода устройств разработана Селмером и Нилом Цирлером (Ыеа1 2лег1ег) [1647]. 1 Оба этих типа иногда еще называют «генераторами с равномерным движением» - Прим. ред.
430 Прикладная криптография Можно внести некоторые усложнения. В некоторых генераторах для различных РСЛОС используется различная тактовая частота; иногда тактирование одного генератора зависит от выхода другого. Все такие устройства представляют собой электронные версии идей, заложенных в шифровальные машины во времена, предшествующие Второй мировой войне. Они называются генераторами с управляемым тактированием (русский термин - генераторы с неравномерным движением) (с1оск- соШгоИеф [641]. Управление тактированием может быть с прямой связью, когда выход одного РСЛОС управляет тактированием другого РСЛОС, или с обратной связью, когда выход одного РСЛОС управляет его собственном тактированием. Несмотря на то, что все эти генераторы уязвимы, по крайней мере, теоретически, для атак встраиванием (етЪесМт%) и вероятностной корреляцией [634, 632], многие из них до настоящего времени безопасны. Дополнительные сведения по теории регистров сдвига с управляемой тактовой частотой можно найти в работе [89]. Ян Касселле (1ап СаззеИз), ранее возглавлявший кафедру чистой математики в Кембридже и работавший криптоаналитиком в В1е1сЫу Рагк, сказал, что «криптография - это смесь математической строгости с беспорядком, и без беспорядка математическая строгость может быть использована против вас». Он имел в виду, что в потоковых шифрах для обеспечения максимальной длины и других свойств необходимы определенные математически строгие структуры, типа РСЛОС, но чтобы предотвратить раскрытие содержимого регистра и вскрытие алгоритма, необходимо внести некоторый сложный нелинейный беспорядок. Этот совет справедлив и для блочных алгоритмов. Поэтому не стоит серьезно увлекаться генераторами гаммы на базе РСЛОС, описания которых появились в литературе. Я не знаю, используется ли хоть один из них в реальных криптографических продуктах. Большинство из них представляет лишь теоретический интерес. Некоторые были взломаны, некоторые могли остаться стойкими. Так как шифры на базе РСЛОС обычно реализуются аппаратно, на рисунках используются символы электронной логики. Далее в тексте символ 0 означает операцию ХОЯ, д означает АИО, V означает ОЯ, и означает ЙОТ. Генератор Геффе В этом генераторе гаммы используется нелинейная комбинация трех РСЛОС (см. Рис. 16.6) [606]. Два РСЛОС служат входами мультиплексора, а третий РСЛОС управляет выходом мультиплексора. Если яь а2 и аъ - выходы трех РСЛОС, выход генератора Геффе (Оейе) можно описать таким образом: Ь = (а, л й2)® ((-I «]) ла3) Если длины РСЛОС равны п\, п2 и я3, соответственно, то линейная сложность генератора равна: (и, +1) п2 + щ щ Период генератора равен наименьшему общему кратному периодов трех генераторов. При условии, что степени трех примитивных многочленов обратной связи взаимно просты, период этого генератора будет равен произведению периодов трех РСЛОС.
ГЛАВА 16. Генераторы псевдослучайных последовательностей 431 Рис. 16.6. Генератор Геффе Хотя на бумаге этот генератор выглядит неплохо, в криптографическом отношении он ненадежен и неустойчив к корреляционной атаке [829, 1638]. На протяжении 75% времени работы выход генератора равен выходу РСЛОС-2. Поэтому, если известны последовательности отводов обратной связи, можно определить начальное значение РСЛОС-2 и генерировать выходную последовательность этого регистра. Далее можно подсчитать, сколько раз выход РСЛОС-2 совпадает с выходом генератора. Если начальное значение определено неверно, две последовательности будут согласовываться в 50% времени, а если правильно, то в 75% времени. Аналогично выход генератора равен выходу РСЛОС-3 в 75% времени. С такими корреляциями генератор гаммы может быть легко взломан. Например, если примитивные многочлены являются трехчленами и длина самого большого РСЛОС равна я, то для восстановления внутренних состояний всех трех РСЛОС нужен фрагмент выходной последовательности длиной Ъ1п битов [1639]. Обобщенный генератор Геффе Вместо выбора между двумя РСЛОС в этой схеме выбирается один из к регистров РСЛОС, где к является степенью 2. Всего используется к+ 1 регистров РСЛОС (см. Рис. 16.7). Тактовая частота РСЛОС-1 должна быть в 1о§2^ раз выше, чем у остальных к РСЛОС. Рис. 16.7. Обобщенный генератор Геффе
432 Прикладная криптография Хотя эта схема сложнее генератора Геффе, для ее взлома можно использовать то же самое корреляционное вскрытие. Я не рекомендую использовать этот генератор. Генератор Дженнингса В данной схеме мультиплексор используется для объединения двух РСЛОС [778, 779, 780]. Мультиплексор, управляемый РСЛОС-1, выбирает 1 бит РСЛОС-2 в качестве очередного выходного бита. Кроме того, используется функция, которая отображает выход РСЛОС-2 на вход мультиплексора (см. Рис. 16.8). -о о О О го ► е ► го е: Мульти- _о плексор 0 1 л-1 ^ 4 А К, Ко РСЛОС-1 Ь(0 Рис. 16.8. Генератор Дженнингса Деппт^з) Ключом является начальное состояние двух РСЛОС и функции отображения. Несмотря на замечательные статистические свойства этого генератора, он не устоял перед атакой Росса Андерсона (Козз Апбегзоп) на согласованность «встречей посередине» [39] и линейной атакой на согласованность [1638, 442]. Не используйте этот генератор. Генератор «старт-стоп» Бета-Пайпера Данный генератор, показанный на Рис. 16.9, использует выход одного РСЛОС для управления тактированием другого РСЛОС [151]. Тактовый вход РСЛОС-2 управляется выходом РСЛОС-1, так что РСЛОС-2 может изменять свое состояние в момент времени только если выход РСЛОС-1 в момент времени I - 1 был равен 1. РСЛОС-1 Тактирование в!(0 РСЛОС-2 а2(0 -►6(0 РСЛОС-3 Д3(0 Рис. 16.9. Генератор «старт-стоп» Бета-Пайпера (Ве(И-Прег) Пока еще никому не удалось привести достоверные данные о линейной сложности этого генератора для общего случая. Однако этот генератор не устоял перед корреляционным вскрытием [1639].
ГЛАВА 16. Генераторы псевдослучайных последовательностей 433 Чередующийся генератор «старт-стоп» В этом генераторе используются три регистра РСЛОС разной длины. На РСЛОС-2 подается тактовый импульс, когда выход РСЛОС-1 равен 1, а РСЛОС-3 тактируется, когда выход РСЛОС-1 равен 0. Выходом генератора является результат операции ХОЯ над РСЛОС-2 и РСЛОС-3 (см. Рис. 16.10) [673]. РСЛОС-1 Ф (0 РСЛОС-2 е- Ь(о РСЛОС-3 Рис. 16.10. Чередующийся генератор «старт-стоп» Данный генератор характеризуется большим периодом и большой линейной сложностью. Авторы представили способ корреляционного вскрытия РСЛОС-1, но это не сильно ослабляет генератор. Были предложены и другие генераторы гаммы подобного типа [1534, 1574, 1477]. Двусторонний генератор «старт-стоп» В этом генераторе используются два РСЛОС с одинаковой длиной п (см. Рис. 16.11) [1638]. Выход генератора равен результату операции ХОЯ над выходами каждого РСЛОС. Если выход РСЛОС-1 в момент времени 7-1 равен 0, а в момент времени 7-2 равен 1, то РСЛОС-2 в момент времени 7 не тактируется. Наоборот, если выход РСЛОС- 2 в момент времени 7-1 равен 0, а в момент времени 7-2 равен 1, и если на РСЛОС-2 подается тактовый импульс в момент времени 7, то РСЛОС-1 не тактируется в момент времени 7. Ф(0 - К) Ф(0 1> ФД(0 а(н-л-1) ао+п- 2) аи) V О РСЛОС-2 Ы-этапный РСЛОС-1 Ф ВО) Г$>- С(г) Ъ{1+П-1) ; . Ь((+п-2) Ь(1) . .-Л - Рис. 16.11. Двусторонний генератор «старт-стоп»
434 Прикладная криптография Линейная сложность описанной системы примерно равна ее периоду. Согласно работе [1638], «в этой системе не наблюдается очевидная избыточность ключа». Пороговый генератор В данном генераторе сделана попытка преодоления проблем со стойкостью, характерной для предыдущих генераторов, с помощью переменного числа РСЛОС [277]. Согласно теории, использование большего количества РСЛОС затрудняет вскрытие шифра. Схема генератора представлена на Рис. 16.12. Следует использовать выход большого числа РСЛОС (используя нечетное число регистров). Для получения максимального периода убедитесь, что длины всех РСЛОС взаимно просты, а многочлены обратной связи - примитивны. Если более половины выходных битов РСЛОС равны 1, то выходом генератора будет 1. Если более половины выходных битов РСЛОС равны 0, то выходом генератора является 0. Для трех РСЛОС выход генератора можно представить как: Ь = (а{ л а2) 0 (ах д аъ) 0 (а2 а аъ) Это уравнение очень похоже на используемое в генераторе Геффе за исключением того, что пороговый генератор обладает большей линейной сложностью: щ п2 + щ пъ +п2п3 где п\, я2 и л3 - длины первого, второго и третьего РСЛОС. Этот генератор не слишком хорош. Каждый выходной бит дает некоторую информа¬ цию- 0.189 бита, если быть точным - о состоянии РСЛОС, и генератор в целом не может устоять перед корреляционной атакой. Я не советую использовать данный генератор. Самопрореживаюшие генераторы Самопрореживающими (зе1/-с!еата1ес1) называются генераторы, управляющие собствен¬ ной тактовой частотой. Было предложено два типа таких генераторов, один Райнером Рюппелем (Катег Киерре1) (см. Рис. 16.13) [1359], другой Биллом Чамберсом (ВШ СЬатЬегз) и Дитером Голлманном (01е1ег ОоНтапп) [308] (см. Рис. 16.14). В генераторе
ГЛАВА 16. Генераторы псевдослучайных последовательностей 435 Рюппеля если выход РСЛОС равен О, РСЛОС тактируется й раз. Если выход РСЛОС равен 1, РСЛОС тактируется к раз. Генератор Чамберса и Голлманна устроен сложнее, но идея остается той же самой. К сожалению, оба генератора не стойки [1639], хотя был предложен ряд модификаций, позволяющих исправить встречающиеся проблемы [1362]. Ф ^Тактирование (Л ра^ ^Тактирование к раз^ РСЛОС Ь(1) Рис. 16.13. Самопрореживающий генератор Рюппеля Рис. 16.14. Самопрореживающий генератор Чамберса и Голлманна Многоскоростной генератор скалярного произведения Этот генератор, предложенный Мэсси (Маззеу) и Рюппелем [1014], использует два РСЛОС с разными тактовыми частотами (см. Рис. 16.15). Тактовая частота РСЛОС-2 в (1 раз больше, чем у РСЛОС-1. Отдельные биты этих РСЛОС объединяются операцией АN^, а затем для получения выходного бита генератора они складываются посредством операции ХОК. Рис. 16.15. Многоскоростной генератор скалярного произведения Несмотря на то, что данный генератор характеризуется высокой линейной сложностью и великолепными статистическими характеристиками, он все же не может устоять перед атакой на линейную согласованность [1639]. Если пх - длина РСЛОС-1, п2 - длина РСЛОС-2, а с1 — отношение тактовых частот, то внутреннее состояние генератора может быть получено по выходной последовательности длиной: щ + п2 + 1о§2 ^
436 Прикладная криптография Суммирующий генератор Этот генератор - еще одно предложение Райнера Рюппеля; он суммирует выходы двух РСЛОС (с переносом) [1358, 1357]. Это в высшей степени нелинейная операция. В конце восьмидесятых годов этот генератор был лидером по характеристикам безопасности, но он пал перед корреляционной атакой [1053, 1054, 1091]. Кроме того, было показано, что этот генератор является частным случаем обратной связи, использующей регистр сдвига с обратной связью по переносу (см. раздел 17.4), и может быть взломан [844]. Генератор ОГМК5С Аббревиатура БИЯЗО означает Бупаппс Яапбот-Зециепсе Оепега1ог - динамический генератор случайной последовательности [1117]. Идея данного генератора состоит в применении двух различных фильтрующих генераторов - пороговых, суммирующих, и т.д. - использующих один набор РСЛОС, а управляемых другим РСЛОС. Сначала подаются тактовые импульсы на все РСЛОС. Если выходом РСЛОС-О является 1, то вычисляется выход первого фильтрующего генератора. Если выходом РСЛОС-О является 0, то вычисляется выход второго фильтрующего генератора. Окончательный результат получается выполнением операции ХОЯ над выходами первого и второго генераторов. Каскад Голлманна Каскад Голлманна (см. Рис. 16.16), описанный в работах [636, 309], представляет собой усиленную версию генератора «старт-стоп». Он состоит из последовательности РСЛОС, у каждого из которых тактирование управляется предыдущим РСЛОС. Если в момент времени ( выходом РСЛОС-1 является 1, то тактируется РСЛОС-2. Если в момент времени I выходом РСЛОС-2 является 1, то тактируется РСЛОС-3, и так далее. Выход последнего РСЛОС и представляет собой выход генератора. Если длина всех РСЛОС одинакова и равна п, то линейная сложность системы из к регистров РСЛОС равна: п(2п - 1)а_| Использование каскадов является прекрасной идеей: концептуально они очень просты и могут быть использованы для генерации последовательностей с огромными периодами и линейными сложностями, а также с хорошими статистическими свойствами. Они уязвимы для атак, называемых запиранием (1оск-т) [640], которое представляет метод, с помощью которого криптоаналитик сначала восстанавливает вход последнего регистра сдвига в каскаде, а затем взламывает весь каскад, регистр за регистром. В некоторых случаях это представляет собой серьезную проблему и уменьшает эффективную длину
ГЛАВА 16. Генераторы псевдослучайных последовательностей 437 ключа алгоритма, но для минимизации возможности такого вскрытия можно предпринять ряд определенных мер. Последующий анализ каскадов Голлманна показал, что с ростом к последовательность приближается к случайной [637, 638, 642, 639]. На основании недавних атак на короткие каскады Голлманна [1063], я советую использовать к не меньше 15. Лучше использовать большое число коротких РСЛОС, чем небольшое число длинных РСЛОС. Сжимающий генератор В сжимающих (зкппкт^) генераторах [378] используется другой способ управления тактированием. Возьмем два регистра РСЛОС: РСЛОС-1 и РСЛОС-2. Подадим тактовый импульс на оба регистра. Если выходом РСЛОС-1 является 1, то выходом генератора является выход РСЛОС-2. Если выход РСЛОС-1 равен 0, оба бита сбрасываются, оба РСЛОС тактируются заново и все повторяется. Эта идея проста, достаточно эффективна и выглядит безопасной. Если многочлены обратной связи прорежены, генератор уязвим для вскрытия, но других проблем обнаружено не было. Однако генераторы такого типа пока еще достаточно новы. Одна из проблем реализации состоит в том, что скорость выдачи результата не постоянна; если РСЛОС-1 генерирует длинную последовательность нулей, то на выходе генератора ничего нет. Для решения этой проблемы авторы предлагают использовать буферизацию [378]. Практическая реализация прореживаемого генератора обсуждается в [901]. Самосжимаюший генератор Самосжимающий генератор [1050] представляет собой разновидность сжимающего генератора. Вместо двух РСЛОС в нем используется пара битов одного РСЛОС. Тактируйте РСЛОС дважды. Если первым битом пары будет 1, то второй бит будет выходом генератора. Если первый бит - 0, сбросьте оба бита и попробуйте снова. Несмотря на то, что для самосжимающего генератора требуется примерно в два раза меньше памяти, чем для сжимающего, он работает в два раза медленнее. Хотя самосжимающий генератор тоже кажется безопасным, он может вести себя непредсказуемым образом и обладать неизвестными свойствами. Это очень новый генератор, так что следует немного повременить с его использованием. 16.5 Шифр А5 Шифр А5 - это потоковый шифр, используемый для шифрования связи 08М (Огоир 8рес1а1 МоЪПе - мобильная групповая специальная связь). Это европейский стандарт для мобильных цифровых сотовых телефонов. Он используется для шифрования канала «телефон/базовая станция». Оставшаяся часть канала не шифруется, поэтому теле¬ фонная компания может легко подслушать ваши разговоры. Вокруг этого протокола ведутся странные политические игры. Первоначально предполагалось, что из-за криптографии в стандарте 08М экспорт телефонов в отдельные страны был бы запрещен. Теперь ряд чиновников обсуждает, не повредит ли шифр А5 экспортным продажам, несмотря на то, что шифр так слаб, что вряд ли является существенным препятствием. По слухам в середине восьмидесятых годов
438 Прикладная криптография различные секретные службы НАТО сцепились по вопросу, должно ли шифрование 08М быть сильным или слабым. Немцам требовалась сильная криптография, так как рядом с ними находился Советский Союз. Однако победила другая точка зрения, и шифр А5 представляет собой французскую разработку. Большинство деталей шифра нам известно. Британская телефонная компания передала всю документацию Брэдфордскому университету, забыв заставить его подписать соглашение о неразглашении. Информация где-то просочилась и, в конце концов, была опубликована в Интернете. Шифр А5 описывается в работе [1622], также в конце этой книги приведен соответствующий программный код. Генератор А5 состоит из трех РСЛОС длиной 19, 22 и 23, все многочлены обратной связи у него прорежены. Выходом является результат операции ХОК над тремя РСЛОС. В А5 используется изменяемое управление тактированием. Каждый регистр тактируется в зависимости от своего среднего бита, затем над регистром выполняется операция ХОК с обратной пороговой функцией средних битов всех трех регистров. Обычно на каждом этапе тактируются два РСЛОС. Существует тривиальное вскрытие А5, требующее 240 шифрований: предположите содержание первых двух РСЛОС и попытайтесь определить третий РСЛОС по гамме. (Возможен ли в действительности такой способ вскрытия, остается под вопросом, который скоро будет разрешен с помощью специально разрабатываемой машины для аппаратного поиска ключей [45]). Несмотря на это, становится ясно, что идеи, лежащие в основе А5, неплохи. Алгоритм очень эффективен. Он удовлетворяет всем известным статистическим тестам, единственной его слабостью является то, что его регистры слишком коротки, чтобы предотвратить поиск ключа перебором. Варианты А5 с более длинными регистрами сдвига и более плотными многочленами обратной связи должны быть безопасны.2 16.6. Алгоритм Ни§Не§ ХРО/КРО Этот алгоритм был предложен фирмой Ни^Ьез Ашсгай Согр. Эта фирма встроила его в армейские тактические рации и оборудование для поиска направления, продаваемое за границу. Алгоритм был разработан в 1986 году и получил название ХРЭ, сокращение от ЕхроНаЫе Рго1есйоп Беуюе - Экспортируемое устройство защиты. Позднее он был переименован в КРЭ (Ктейс Рго1есбоп Эеуюе - Кинетическое устройство защиты) - и рассекречен [1037, 1036]. В алгоритме используется 61-битовый РСЛОС. Существует 210 различных примитивных многочленов обратной связи, одобренных АНБ. Ключ выбирает один из этих многочленов (хранящихся где-то в ПЗУ), а также начальное состояние РСЛОС. 2 Из исправлений Шнайера: «Дополнительные сведения об алгоритме 08М. АЗ - алгоритм аутентификации на смарт-карте. А8 - всего лишь перетасовка битов выхода АЗ, которая превращается в сеансовый ключ для А5. А5 - алгоритм для защиты разговоров. Имеются две модификации, используемые в 08М: А5/1 и А5/2. А5/1 может быть использован только в определенных странах; А5/2 - во всех». На сегодняшний день алгоритм А5 (в обоих вариантах) полностью вскрыт. Атака требует 248 предварительных вычислений, а затем занимает несколько секунд на персональном компьютере. - Прим. ред.
ГЛАВА 16. Генераторы псевдослучайных последовательностей 439 В алгоритме используется восемь различных нелинейных фильтров, каждый из которых использует шесть отводов РСЛОС и выдает один бит. Объединяясь, эти биты образуют байт, который и применяется для зашифрования или расшифрования потока данных. Алгоритм выглядит весьма привлекательно, но у меня все еще остаются некоторые сомнения. АНБ разрешило его экспорт, следовательно, должен быть способ вскрытия порядка, не большего чем 240. Но какой? 16.7. Алгоритм Nапо^е^ Иапо^ея - это название южноафриканской электронной компании. Именно этот алгоритм применяется южноафриканской полицией при шифровании передачи факсов, а возможно и для прочих нужд. Более или менее подробно этот алгоритм описан в [902, 903]. Он использует 127- битовый РСЛОС с фиксированным многочленом обратной связи, ключ представляет собой начальное состояние регистра. При помощи 25 элементарных ячеек 127 битов регистра превращаются в один бит гаммы. У каждой ячейки 5 входов и один выход: /{хх,х2,хг,х4,х5) = х^ + х2 +(*, + хг)(х2 +х4 +х5) + (х, +х4)(х2 +Хз) + Х5 Каждый вход функции подвергается операции ХОЯ с некоторым битом ключа. Кроме того, существует секретная перестановка, зависящая от конкретной реализации и не описанная в статьях подробно. Этот алгоритм доступен только в аппаратном виде. Безопасен ли этот алгоритм? Сомнительно. Ряд интересных факсов, передаваемых между полицейскими участками, изредка появлялся в либеральных газетах. Это вполне могло быть результатом американской, английской или советской разведывательной деятельности. Росс Андерсон предпринял ряд первых шагов, подвергнув этот алгоритм криптоанализу [46], и я думаю, что скоро появятся новые результаты. 16.8. Алгоритм ГСатЬЫап ЯатЪтап - это английский алгоритм, разработанный СоттишсаЕопз Е1ес1готс5 8есип1у Сгоир (Группа по безопасности электронных коммуникаций, один из псевдонимов ОСН<3). Он продается только в виде аппаратного модуля и одобрен для защиты документов вплоть до грифа «Конфиденциально». Сам алгоритм засекречен, и микросхема не предназначена для широкой коммерческой продажи. В алгоритме ЯатЬи1ап используется 112-битовый ключ (плюс биты четности), и он может работать трех режимах: ЕСВ, СВС и 8-битовом СРВ. Это сильный аргумент в пользу того, что этот алгоритм - блочный, но слухи утверждают иное. Предположительно это потоковый шифр на базе РСЛОС. У него пять регистров сдвига различной длины, близкой к 80 битам. Полиномы обратной связи значительно прорежены, в каждом из них всего лишь 10 отводов. Каждый регистр сдвига обеспечивает четыре входа для очень большой и сложной нелинейной функции, которая и выдает единственный бит.
440 Прикладная криптография Почему алгоритм назван КатЪЩап? Возможно из-за фрукта с тем же названием (рамбутан), колючего и неприступного снаружи, но мягкого и нежного внутри. Но, с другой стороны, никакой особой причины выбора такого названия может и не быть. 16.9. Аддитивные генераторы Аддитивные генераторы (иногда называемые запаздывающими генераторами Фибоначчи) очень эффективны, так как их результатом являются случайные слова, а не случайные биты [863]. Сами по себе они нестойки, но их можно использовать в качестве составных блоков для надежных генераторов. Начальное состояние генератора представляет собой массив «-битовых слов: 8-битовых слов, 16-битовых слов, 32-битовых слов, и т.д.: Хи Х2, Х^,..., Хт. Это первоначальное состояние и является ключом. Слово X* генератора вычисляется так: х,. = (Х,_а + Х,_ь + Х,.е + ... + Х,.т) той 2" При правильном выборе коэффициентов а9 Ь9 с,..., т период этого генератора не меньше 2й-1. Одним из требований к коэффициентам является то, что младший значащий бит образует РСЛОС максимальной длины. Например, запись (55, 24, 0) соответствует примитивному многочлену по модулю 2 из табл. 16.2. Это означает, что длина следующего аддитивного генератора максимальна: Х,=(Х1_55+Х1_2А)той 2" Такая схема работает, поскольку у примитивного многочлена три коэффициента. Если бы их было больше, для получения максимальной длины потребовались бы дополнительные условия. Подробности можно найти в работе [249]. Генератор Р|$Ь ИзЬ - это аддитивный генератор, основанный на методах, используемых в сжимающем генераторе [190]. Он выдает поток 32-битовых слов, которые могут быть сложены (с использованием операции ХОК) с потоком открытого текста для получения шифртекста или с потоком шифртекста для получения открытого текста. Название алгоритма представляет собой сокращение от РШопасш 8Ьгткт§ ОепегаКи* - сжимающий генератор Фибоначчи. Главное, используйте два представленных ниже аддитивных генератора. Ключом являются начальные состояния этих генераторов. 4 = (Д-55 + 4-24) т0С^ 232 я, =(Д/-52+Я/-19)тос1232 Соответствующие последовательности сжимаются попарно в зависимости от младшего значащего бита В,: если его значение равно 1, то пара используется, если 0 - игнори¬ руется. Переменная Су - это последовательность используемых слов из 4, а переменная Я, - это последовательность используемых слов из Д. Для генерации двух 32-битовых слов-результатов Х2у и К2]+\ эти слова используются парами - С2у, С2уН, Г>2у, ^+\-
ГЛАВА 16. Генераторы псевдослучайных последовательностей 441 Ец л^2у+1) ^2> = у+1 Л (^2у л С2у+О ^2У =^2У 0/Г2у ^2у+1 = ^2 У+1 ® ^2У Этот алгоритм быстр. На компьютере с процессором 1486/33 программа на языке С, реализующая ПзЬ, шифрует данные со скоростью 15 Мбит/с. К сожалению, он также не стоек, атака займет порядка 240 операций [45]. Алгоритм Р’|ке РНсе - это усложненная версия алгоритма ПзЬ, предложенная Россом Андерсоном, тем самым, который взломал алгоритм ПзЬ [45]. Он использует три аддитивных генератора. Например: 4 =(4-55 +4-24) тоё232 Я,=(Я,-57+Я/-7)тос1232 С, = (С,_ 58 + +.-19) тоё 232 Для генерации слова гаммы используются биты переноса при сложении. Если все три одинаковы (все нули или все единицы), то тактируются все три генератора. Если нет, то тактируются только два совпадающих генератора. Биты переноса сохраняются для следующего раза. Окончательным выходом является результат операции ХОЯ над выходами трех генераторов. Алгоритм РПсе работает быстрее РюЬ, так как в среднем для получения результата нужно 2.75 шага, а не 3. Он также слишком нов, чтобы ему доверять, но выглядит очень неплохо. Алгоритм Ми$Н Алгоритм МшЬ представляет собой взаимно сжимающий генератор. Его работа очень проста [1590]. Возьмем два аддитивных генератора: А и В. Если бит переноса установлен, тактируется В. Если бит переноса генератора В установлен, тактируется А. Тактируем А и при переполнении устанавливаем бит переноса. Тактируем генератор В и при переполнении устанавливаем бит переноса. Окончательным выходом является результат операции ХОЯ над выходами А и В. Проще всего использовать те же генераторы, что и в алгоритме ПзЬ: 4 =(+-55 ++-24)т0<1232 4 =(4-52 +Д-19) 010(1232 В среднем для генерации одного выходного слова требуется три итерации генератора. И если коэффициенты аддитивного генератора выбраны правильно и являются взаимно простыми, длина выходной последовательности будет максимальна. Мне неизвестно об успешных вскрытиях, но не забывайте, что этот алгоритм очень нов.
442 Прикладная криптография 16.10. Алгоритм Джиффорда Дэвид Джиффорд (ЭауМ (ЛЯогё) изобрел потоковый шифр и использовал его для шифрования сводок новостей в районе Бостона с 1984 по 1988 год [608, 607, 609]. Алгоритм использует единственный 8-байтовый регистр: 60> 67. Ключом является начальное состояние регистра. Алгоритм работает в режиме ОРВ, открытый текст абсолютно не влияет на работу алгоритма (см. Рис. 16.17). Для генерации байта ключа кх конкатенируем Ъ0 и Ьи а также конкатенируем 64 и Ъ1. Перемножим полученные числа, получая 32-битовое число. Третьим слева байтом и будет кь Для обновления регистра возьмем Ъ\ и сдвинем вправо «с приклеиванием» (зИску) на 1 бит следующим образом: крайний левый бит одновременно и сдвигается, и остается на месте. Возьмем 67 и сдвинем его на один бит влево, в крайней правой позиции должен появиться 0. Выполним операцию ХОЯ над измененным значением Ьи измененным 67 и Ъ0. Сдвинем первоначальный байт регистра на 1 байт вправо и поместим этот байт в крайнюю левую позицию. Этот алгоритм оставался стойким на протяжении всего времени существования, но он был взломан в 1994 году [287]. Выяснилось, что многочлен обратной связи не был примитивным и, таким образом, мог быть вскрыт. 16.11. Алгоритм М Это название было придумано Кнутом [863]. Алгоритм представляет собой способ комбинирования нескольких псевдослучайных потоков, что увеличивает их стойкость. Выход одного генератора используется для выбора задержанного выхода другого генератора [996, 1003]. На языке С: #<1е^±пе АКК_512Е (8192) /* для примера, чем больше, тем лучше */
ГЛАВА 16. Генераторы псевдослучайных последовательностей 443 зЪаЪХс ипзхдпес! сЬаг с!е1ау[ АКК_312Е ] ; ипз±дпе<3 сЬаг ргпдА ( уоз.<3 ); 1опд ргпдВ ( уохс! ) ; уоХс1 з.пИ:_а1дМ( уоз.с1 ) { 1опд 1 ; ^ог (х = 0 ; 1 < АКК_312Е ; х++) йе1ау[з.] = ргпдА() ; } /* 1п11:_а1дМ */ ипз1дпе<1 сЬаг а1д1М( уоз.<1 ) { 1опд ; 3 = ргпдВ () % АКК_312Е ; /* получить индекс <1е1ау[]*/ V = с!е1ау[;з] ; /* получить возвращаемое значение */ <1е1ау[;]] = ргпдА () ; /* заменить его */ геЪигп ( V ) ; } /* а1дМ */ Смысл состоит в том, что если функция ргпдА действительно случайна, о функции ргпдВ невозможно ничего узнать (и, следовательно, невозможно выполнить криптоанализ). Если функция ргпдА имеет такой вид, что ее криптоанализ может быть выполнен лишь в случае последовательного доступа к ее выходу (т.е. вначале должен быть выполнен криптоанализ функции ргпдВ) и в других случаях функция ргпдА является по настоящему случайной, то описанная выше их комбинация является безопасной. 16.12. Алгоритм РК21Р Алгоритм шифрования, встроенный в программу сжатия данных РК21Р, был разработан Роджером Шлафлы (Яо^ег 8сЫайу). Это потоковый шифр, выполняющий побайтовое шифрование данных. По крайней мере, такой алгоритм используется в версии 2.04& программы. Я не могу ничего сказать о более поздних версиях, но, до тех пор, пока не появятся какие-либо новые сведения, можно считать, что, с большой долей вероятности, алгоритм не изменился. Алгоритм использует три 32-битовых переменных, инициали¬ зированных следующим образом: К0 = 305419896 Кх - 591751049 К2 =878082192
444 Прикладная криптография Используется 8-битовый ключ Х3, полученный из К2. Вот этот алгоритм (в стандартной нотации С): С, = Р> а Къ К0 = сгс 32 (К0,Р>) а:, = а:, + (к0 & охоооооогг) Кх = Кх * 134775813 + 1 Ка = сгс 32 (К2, Кх » 24) *з=((К2|2)*((К2|2)л1))»8 Функция сгс32 берет свое предыдущее значение и входной байт, выполняет над ними операцию ХОЯ и вычисляет следующее значение с помощью многочлена СЯС, определенного величиной 0хе<ЗЪ88320. На практике 256-элементная таблица может быть рассчитана заранее, и вычисление сгс32 производится по такому выражению: сгс 32 (а, Ь) = (а » 8) л 1аЫе [(а & 0х1Т) л д] Таблица рассчитывается в соответствии с первоначальным определением сгс32: 1аЫе [/] = сгс 32 (/, 0) Для зашифрования потока открытого текста сначала, для обновления ключей, выполним циклический проход по байтам ключа в алгоритме шифрования. Полученный шифртекст на этом этапе игнорируется. Затем побайтно зашифруем открытый текст. Открытому тексту предшествуют двенадцать случайных байтов, но это, фактически, не имеет значения. Расшифрование похоже на шифрование за исключением того, что во втором действии алгоритма вместо Р, используется С,. Стойкость алгоритма РК21Р К сожалению, она не слишком велика. Для вскрытия достаточно от 40 до 2000 байтов известного открытого текста, временная сложность вскрытия составит около 227 [166]. На вашем персональном компьютере такая атака займет несколько часов. Если в сжатом файле используются какие-нибудь стандартные заголовки, получение известного открытого текста не представляет собой проблемы. Не используйте шифрование, встроенное в РК21Р.
ГЛАВА 17. Другие потоковые шифры и генераторы истинно случайных последовательностей 17.1. Алгоритм КС4 ЯС4 - это потоковый шифр с переменным размером ключа, разработанный в 1987 году Роном Ривестом для Я8А Оа1а 8есигку, 1пс. В течение семи лет он являлся собственностью компании, и подробное описание алгоритма предоставлялось только после подписания соглашения о неразглашении. В сентябре 1994 году кто-то анонимно опубликовал исходный код в списке рассылки шифропанков. Он быстро распространился в телеконференции Е15епе1: зсксгур!, и через Интернет - по различным йр-серверам во всем мире. Обладатели легальных копий ЯС4 подтвердили совместимость этого кода. Корпорация Я8А ВгХэ. 8есип1у попыталась загнать джинна в бутылку, утверждая, что, несмотря на публикацию, алгоритм остается производственным секретом. Но было слишком поздно. С тех пор алгоритм обсуждался и изучался в Изепе!:, распространялся на конференциях и служил учебным пособием на курсах криптографии. Описать ЯС4 несложно. Алгоритм работает в режиме ОРВ, т.е. гамма не зависит от открытого текста. Используется 8-блок размером 8*8: 50, 5ь.., 5255. Элементы представляют собой перестановку чисел от 0 до 255, а перестановка зависит от ключа переменной длины. В алгоритме применяются два счетчика / иу с нулевыми начальными значениями. Чтобы сгенерировать случайный байт, выполните следующие операции: 1 = (1 + 1) тос! 256 3 = (э + 30 пюс! 256 Поменяйте местами 5* и 5^ Ь = (3± + тос! 256 К = 5* Байт К используется в операции ХОЯ с открытым текстом для получения шифртекста или в операции ХОЯ с шифртекстом для получения открытого текста. Шифрование выполняется примерно в 10 раз быстрее, чем в алгоритме ОЕ8. Так же несложна и инициализация 8-блока. Сначала заполним его линейно: 50 = 0, 51 = 1,..., 5255 = 255. Затем заполним ключом другой 256-байтовый массив. Если необходимо, повторяем ключ, чтобы заполнить весь массив: К0, Хь..., Х255. Установим значение индекса у равным 0. Затем: Для 1 от 0 до 255 3 - (Э + Зх + К±) тос! 256 Поменяйте местами 3^ и 3^
446 Прикладная криптография Вот и всё. По утверждению корпорации Я8А081, этот высоконелинейный алгоритм устойчив к дифференциальному и линейному методам криптоанализа и, вероятно, не содержит коротких циклов. (Опубликованных криптоаналитических результатов нет. Алгоритм ЯС4 может находиться примерно в 21700 (т.е. 256! * 2562) возможных состояниях - огромное число!) При использовании 8-блок медленно изменяется: / гарантирует измене¬ ние каждого элемента, а у - случайный характер этих изменений. Алгоритм настолько прост, что большинство программистов могут быстро закодировать его просто по памяти. Эту идею можно обобщить на 8-блоки и слова больших размеров. Выше была описана 8-битовая версия ЯС4. Нет причин, по которым нельзя бы было определить 16-битовый алгоритм ЯС4 с 8-блоком размером 16*16 (100 Кбайт памяти) и 16-битовым словом. Начальная установка займет намного больше времени - для сохранения приведенной схемы нужно заполнить 65536-элементный массив - но получившийся алгоритм должен работать быстрее. Алгоритму ЯС4 с длиной ключа не более 40 бит присвоен специальный экспортный статус (см. раздел 13.8). Этот специальный статус никак не влияет на надежность алгоритма, хотя в течение многих лет корпорация Я8А Ба1а 8есигйу намеками давала понять, что это не так. Имя алгоритма - торговая марка, поэтому каждый, кто напишет собственный код, должен назвать его как-то иначе. Различные внутренние документы Я8А Ба1:а 8есип1у до сих пор не опубликованы [1320, 1337]. Итак, какова же ситуация вокруг алгоритма ЯС4? Он уже не относится к производственным секретам, поэтому кто угодно имеет право воспользоваться им. Однако Я8А Оа1а 8есип1у почти наверняка возбудит дело против каждого, кто применит нелицензированный ЯС4 в коммерческом продукте. Возможно, им и не удастся выиграть процесс, но все же намного дешевле купить лицензию, чем судиться. ЯС4 используется в десятках коммерческих продуктов, в том числе ЬоШз N0^5, АОСЕ компании Арр1е Сотри1:ег и Огас1е 8есиге 8(21Л Кроме того, этот алгоритм входит в стандарт СЭРЭ (Се11и1аг Ощй:а1 Раске! Эа1а - стандарт сотовой системы передачи пакетов цифровых данных) [37]. 17.2. Алгоритм 5ЕА1. 8ЕАЬ - это потоковый шифр, эффективный для программной реализации. Разработан в 1ВМ Филом Рогуэем (РЫ1 Яо§а\уау) и Доном Копперсмитом (Эоп СоррегзшкЬ) [1340]. Алгоритм оптимизирован для исполнения на 32-битовых процессорах. Для нормальной работы алгоритму нужно восемь 32-битовых регистров и кэш-память объемом несколько килобайтов. Чтобы избежать медленных операций, 8ЕАЬ выполняет предварительную обработку ключей, сохраняя результаты в нескольких таблицах. Эти таблицы используются для ускорения операций зашифрования и расшифрования. Семейство псевдослучайных функций Особенность 8ЕАЬ заключается в том, что в действительности это не традиционный потоковый шифр, а семейство псевдослучайных функций. При 160-битовом ключе к и 1 Во многих продуктах М1сгозой, в т.ч. и ОШсе. - Прим. ред.
ГЛАВА 17. Другие потоковые шифры 447 32-битовом п, 8ЕАЬ растягивает п в 1-битовую строку к{п). Ь может принимать любое значение, меньшее 64 Кбайт. 8ЕАЬ, по-видимому, обладает следующим свойством: если к выбирается случайным образом, то к(п) в вычислительном отношении должно быть неотличимо от случайной 1-битовой функции п. Практическое последствие того, что 8ЕАЬ образован семейством псевдослучайных функций, состоит в том, что он удобен в ряде приложений, где неприменимы традиционные потоковые шифры. Используя большинство потоковых шифров, вы создаете однонаправленную последовательность битов. Единственный способ определить /-ый бит гаммы по ключу и позиции / - генерация всех битов, вплоть до /. Отличие семейства псевдослучайных функций состоит в том, что вы можете легко получить доступ к любой позиции гаммы. Это очень удобно. Допустим, вам необходимо засекретить содержимое жесткого диска. Вы собираетесь зашифровать каждый 512-байтовый сектор. Используя семейство псевдослучайных функций, подобное 8ЕАЬ, содержимое сектора гг можно зашифровать, выполнив над ним и к(п) операцию ХОК. Это то же самое, что выполнить операцию ХОК содержимого всего диска с длинной псевдослучайной функцией, причем любую часть этой длинной строки можно легко вычислить независимо от других частей. Кроме того, семейство псевдослучайных функций упрощает проблему синхронизации, встречающуюся в стандартных потоковых шифрах. Предположим, вы посылаете шифрованные сообщения по каналу, в котором данные иногда теряются. С помощью семейства псевдослучайных функций можно ключом к зашифровать п-ое передаваемое сообщение хт сложив операцией ХОК х„ и к(п). Для восстановления хп получателю не нужно сохранять ни одного состояния либо заботиться о потерянных сообщениях, влияющих на процесс расшифрования. Описание алгоритма 5ЕА1. Внутренний цикл алгоритма 8ЕАЬ показан на Рис. 17.1. Алгоритм управляется тремя полученными из ключа таблицами: Я, 8 и Т. Предварительная обработка отображает ключ к на эти таблицы с помощью процедуры, основанной на 8НА (см. раздел 18.7). Таблица Т представляет собой 8-блок размером 9 * 32 бит. Кроме того, алгоритм 8ЕАЬ использует четыре 32-битовых регистра А, В, С и Д начальные значения которых определяются п и полученными из к таблицами К и Т. Эти регистры изменяются в ходе итераций, каждая из которых состоит из восьми раундов. На каждом раунде 9 битов первого регистра (любого из А, В, С или П) используются в качестве индекса таблицы Т. Затем выбранное из Т значение складывается со вторым регистром (снова одного из А, В, С или П) или объединяется с его содержимым операцией ХОК. Потом первый регистр циклически сдвигается на 9 позиций. В некоторых раундах второй регистр далее модифицируется с помощью сложения или ХОК с содержимым первого регистра (уже сдвинутым). После 8 таких раундов А, В, С и И добавляются к гамме, при этом каждый из них маскируется сложением или операцией ХОК с определенным словом из Итерация завершается прибавлением к А и С дополнительных значений, зависящих от п, пи п2, щ, щ - выбор конкретного значения определяется четностью номера итерации.
448 Прикладная криптография Рис. /7.7. Внутренний цикл алгоритма БЕЛЬ По-видимому, в основу этой схемы заложены следующие идеи: ✓ Использование большого, секретного 8-блока (7), производного от ключа. ✓ Чередующиеся некоммутативные арифметические операции (сложение и ХОЯ). ✓ Использование внутреннего состояния, поддерживаемого шифром, которое не проявляется явно в потоке данных (значения пь которые модифицируют А и С в конце каждой итерации). ✓ Изменение функции раунда в соответствии с номером раунда и изменение функции итерации в соответствии с номером итерации. Для шифрования каждого байта текста 8ЕАЬ требует около пяти элементарных операций. На процессоре 1486/50 МГц он работает со скоростью 58 Мбит/сек. Шифрование 8ЕАЬ, возможно, самое быстрое из всех, описанных в этой книге. С другой стороны 8ЕАЬ должен выполнить предварительную обработку, заполняя внутренние таблицы. Размер этих таблиц составляет примерно 3 Кбайт, а для их расчета нужно около 200 вычислений 8НА. Таким образом, алгоритм 8ЕАЬ непригоден, если нет времени для развертки ключа или нет памяти для хранения таблиц. Стойкость алгоритма БЕАЬ 8ЕАЬ достаточно новый алгоритм, ему еще предстоит пройти через горнило открытого криптоанализа. Это вызывает определенную настороженность. Однако 8ЕАЬ представ¬ ляется хорошо продуманным алгоритмом. Его особенности, в конечном счете, наполнены смыслом. К тому же Дон Копперсмит считается лучшим криптоаналитиком в мире.
ГЛАВА 17. Другие потоковые шифры 449 Патенты и лицензии 8ЕАЬ запатентован [380]. По поводу лицензирования нужно обращаться к Управля¬ ющему по лицензиям 1ВМ (01гес1ог оГ Ьюепзез, 1ВМ Согрогабоп, 500 Со1итЪиз Ауе., ТЬит\уооё, ИУ, 10594). 17.3. Алгоритм \УАКЕ XVАКБ - аббревиатура от ХУогб Аи1о Кеу Епсгурбоп (Шифрование слов с автоключом). Этот алгоритм предложил Дэвид Уилер (ОауШ ХУЬее1ег) [1589]. Он выдает поток 32-битовых слов, которые с помощью операции ХОЯ можно использовать для получения шифртекста из открытого текста или открытого текста из шифртекста. И это происходит быстро. ХУАКЕ работает в режиме СРВ, для генерации следующего слова ключа используется предыдущее слово шифртекста. Кроме того, алгоритм использует 8-блок из 256 32-битовых значений. Этот 8-блок характеризуется одним особым свойством: старший байт всех элементов представляет собой перестановку всех возможных байтов, а три младших байта случайны. Сначала по ключу генерируем элементы 8-блока 5,. Затем инициализируем четыре регистра с использованием того же или иного ключа: а0, ^о, с0 и с!0. Для генерации 32-битового слова гаммы X,: К, = с1, Слово шифртекста С, представляет собой результат операции ХОЯ слова открытого текста Р, с X/. Затем обновим четыре регистра: ам=М(а[,^1) Ьм = ЩЬ„ ам) с/+1 = М(с,, Ьм) <^(+1 — , С(+]) Функция М представляет собой: М(X, у) = (X + У) » 8 0 \х+у) Л 255 Схема алгоритма показана на Рис. 17.2. Знак » обозначает обычный (не циклический) сдвиг вправо. Младшие 8 битов х+у представляют собой вход 8-блока. Процедура генерации 8-блока, приведенная Уилером, на самом деле неполна. Можно использовать любой алгоритм генерации случайных байтов и случайной перестановки. Самое ценное в \УАКЕ - быстродействие. Однако он уязвим к атаке с подобранным открытым текстом или шифртекстом. Этот алгоритм используется в текущей версии антивирусной программы Вт. 8о1ошоп.
450 Прикладная криптография Рис. 17.2. ЦГАКЕ 17.4. Регистры сдвига с обратной связью по переносу Регистр сдвига с обратной связью по переносу, или РСОСП (Реес1Ьаск \УНк Саггу 8И1/1 Ке%Шег, Р8СЯ), напоминает РСЛОС. В обоих использованы регистр сдвига и функция обратной связи, однако в РСОСП предусмотрен еще и регистр переноса (см. Рис. 17.3). Вместо выполнения операции ХОЯ над всеми битами последовательности отводов, эти биты складываются друг с другом и содержимым регистра переноса. Результат по модулю 2 и становится новым битом. Новым содержимым регистра переноса становится результат, поделенный на 2. Сумма по модулю 2 Регистр сдвига Выходной бит Сумма Сумма, деленная на 2 Рис. 17.3. Регистр сдвига с обратной связью по переносу
ГЛАВА 17. Другие потоковые шифры 451 Сумма по модулю 2 Сумма Сумма, деленная на 2 К Выходной бит Рис. 17.4. 3-битовый РСОСП На Рис. 17.4 приведен пример 3-битового РСОСП с отводами в первой и второй позициях. Пусть его начальное значение равно 001, а начальное содержимое регистра переноса равно 0. Тогда выходом будет младший (крайний правый) бит регистра сдвига. Регистр сдвига Регистр переноса 00 1 0 100 0 0 1 0 0 1 0 1 0 1 1 0 0 1 1 1 0 0 1 1 1 101 1 010 1 001 1 000 1 100 0 Как видите, конечное внутреннее состояние (включая содержимое регистра переноса) совпадает со вторым внутренним состоянием. С этого момента последовательность циклически повторяется с периодом 10. Стоит упомянуть еще несколько обстоятельств. Во-первых, регистром переноса служит не бит, а число. Размер регистра переноса должен быть не менее 1о§2 и где I - число отводов. В предыдущем примере только два отвода, поэтому регистр переноса однобитовый. При-четырех отводах регистр переноса состоял бы из двух битов и мог бы принимать значения 0, 1, 2 или 3.
452 Прикладная криптография Во-вторых, РСОСП переходит в циклический режим с некоторой начальной задержкой (ггапзгет). В предыдущем примере никогда не повторяется только одно состояние. В больших и более сложных РСОСП их может быть больше. В-третьих, максимальный период РСОСП равен не 2" - 1 (п - длина регистра сдвига), а #- 1 (# - число обратной связи (соппесИоп Ше%ег)). Это число задается отводами и определяется как: ^ = 2^x +2 2#2 + 24#4 + ... + 2"#„_1 (Обратите внимание, #, отсчитываются слева направо). Более того, число # должно быть простым числом, для которого 2 - это примитивный корень. В дальнейшем предполагается, что # удовлетворяет этому условию. В нашем примере # = 2*0 + 4*1 + 8*1-1 = 11. Число 11 - простое число, 2 - его прими¬ тивный корень. Поэтому максимальный период равен 10. Максимальный период обеспечивают не все начальные состояния. Например, рассмот¬ рим РСОСП с начальным значением 101 и регистром переноса, установленным на 4. Регистр сдвига Регистр переноса 1 0 1 4 1 1 0 2 1 1 1 1 1 1 1 1 С этого момента регистр выдает бесконечный поток единиц. Любое начальное состояние завершается одной из четырех ситуаций. Во-первых, оно может быть частью максимального периода. Во-вторых, оно может перейти в последо¬ вательность максимального периода после начальной задержки. В-третьих, после началь¬ ной задержки оно может породить бесконечную последовательность нулей. В четвертых, после начальной задержки оно может породить бесконечную последовательность единиц. Чтобы определить, чем закончится конкретное начальное состояние, можно воспользоваться математической формулой, но намного проще проверить это опытным путем. Запустите на некоторое время РСОСП. (Если т - начальный объем памяти, а / - число отводов, достаточно 1о§2 (0 + 1о§2 (/п) + 1 шагов). Если выходной поток вырождается в бесконечную последовательность нулей или единиц за п битов, где п - длина РСОСП, не используйте это начальное состояние. В противном случае его можно использовать. Так как начальное состояние РСОСП соответствует ключу потокового шифра, это означает, что ряд ключей генератора на базе РСОСП будут слабыми. В табл. 17.1 перечислены все целые числа обратной связи, меньшие 10000, с примитивным корнем 2. Для всех этих чисел максимальный период равен #-1. Чтобы получить последовательность отводов по одному из этих чисел, рассчитаем двоичное разложение #+1. Например, число 9949 дает последовательность отводов в позициях 1, 2, 3, 4, 6, 7, 9, 10 и 13, так как: 9950 = 213 + 210 + 29 + 27 + 26 + 24 + 23 + 22 + 21
ГЛАВА 17. Другие потоковые шифры 453 В табл. 17.2 перечислены все последовательности из четырех отводов, которые дают РСОСП максимальной длины для регистров сдвига с длиной 32 бит, 64 бит и 128 бит. д , - простое число с примитивным корнем 2, получается объединением всех четырех значений, а, Ь,с и с1. д = 2° + 26 + 2е + 2^ -1 Для создания РСОСП с периодом д - 1 можно использовать любую из этих последо¬ вательностей. Идея использования в криптографии РСОСП все еще очень нова. Впервые она была выдвинута Энди Клаппером (Апбу К1аррег) и Марком Горески (Магк Оогезку) [844, 845, 654, 843, 846]. Так же, как анализ РСЛОС основан на сложении примитивных полиномов по модулю 2, анализ РСОСП основан на сложении над некими числами, называемых 2-адическими (2-асИс). Соответствующая теория далеко выходит за рамки этой книги, но в мире 2-адических чисел существуют аналоги для всего. Точно так же, как определяется линейная сложность, можно определить и 2-адическую сложность. Существует и 2-адический аналог алгоритма Берлекампа-Мэсси. Это означает по меньшей мере удвоение перечня возможных потоковых шифров. Все, что можно делать с РСЛОС, можно делать и с РСОСП. В некоторых работах эта идея развивается, и рассматриваются несколько регистров переноса. Анализ этих генераторов последовательностей основан на сложении разветвленных расширений 2-адических чисел [845, 846]. 17.5. Потоковые шифры на базе РСОСП Потоковые шифры на базе РСОСП в литературе не описаны; теория все еще слишком нова. Чтобы как-то сдвинуться с места, я предложу здесь несколько вариантов. Я охватываю два направления: предлагаю потоковые шифры на базе РСОСП, которые совпадают с ранее предложенными РСЛОС-генераторами, а также потоковые шифры, использующие РСОСП и РСЛОС одновременно. Безопасность первого варианта, вероятно, можно проанализировать с помощью 2-адических чисел, генераторы второго варианта невозможно проанализировать алгебраическими методами - возможно, их можно анализировать только косвенно. В любом случае, важно выбирать РСЛОС и РСОСП с взаимно простыми периодами. Позднее все будет. Сейчас мне неизвестны факты реализации и анализа ни одной из этих идей. Подождите несколько лет и просматривайте литературу, прежде чем поверите в одну из них. Каскадные генераторы Известны два способа использования РСОСП в каскадных генераторах: ✓ Каскад РСОСП. Каскад Голлманна с РСОСП вместо РСЛОС. ✓ Каскад РСЛОС/РСОСП. Каскад Голлманна с генераторами, попеременно меняющими РСЛОС на РСОСП и наоборот.
454 Прикладная криптография Комбинированные генераторы РСОСП Эти генераторы используют переменное число РСЛОС и/или РСОСП и множество функций для комбинирования регистров. Операция ХОК разрушает алгебраические свойства РСОСП, поэтому для их комбинирования есть смысл использовать эту операцию. Генератор, показанный на Рис. 17.5, использует переменное число РСОСП. На выходе он выдает результат операции ХОК выходов отдельных РСОСП. Известны и другие генераторы, развивающие этот подход: ✓ Генератор четности на базе РСОСП. Все регистры - РСОСП, комбинирующая функция - ХОК. ✓ Генератор четности на базе РСЛОС/РСОСП. Используется смесь регистров РСЛОС и РСОСП, комбинируемых операцией ХОК. ✓ Пороговый генератор на базе РСОСП. Все регистры - РСОСП, для комбинирования используется мажоритарная функция. ✓ Пороговый генератор на базе РСЛОС/РСОСП. Используется смесь РСЛОС и РСОСП, для комбинирования используется мажоритарная функция. ✓ Суммирующий генератор на базе РСОСП. Все регистры - РСОСП, комбинирующая функция - сложение с переносом. ✓ Суммирующий генератор на базе РСЛОС/РСОСП. Используется смесь регистров РСЛОС и РСОСП, комбинируемых сложением с переносом. Таблица 17.1. Числа обратной связи для РСОСП с максимальным периодом 2 653 1549 2477 3539 5 659 1571 2531 3547 11 661 1619 2539 3557 13 677 1621 2549 3571 19 701 1637 2557 3581 29 709 1667 2579 3613 37 757 1669 2621 3637 53 773 1693 2659 3643 59 787 1733 2677 3659 61 797 1741 2683 3677 67 821 1747 2693 3691 83 827 1787 2699 3701 101 829 1861 2707 3709 107 853 1867 2741 3733 131 859 1877 2789 3779
ГЛАВА 17. Другие потоковые шифры 455 139 877 1901 2797 3797 149 883 1907 2803 3803 163 907 1931 2819 3851 173 941 1949 2837 3853 179 947 1973 2843 3877 181 1019 1979 2851 3907 197 1061 1987 2861 3917 211 1091 1997 2909 3923 227 1109 2027 2939 3931 269 1117 2029 2957 3947 293 1123 2053 2963 3989 317 1171 2069 3011 4003 347 1187 2083 3019 4013 349 1213 2099 3037 4019 373 1229 2131 3067 4021 379 1237 2141 3083 4091 389 1259 2213 3187 4093 419 1277 2221 3203 4099 421 1283 2237 3253 4133 443 1291 2243 3299 4139 461 1301 2267 3307 4157 467 1307 2269 3323 4219 491 1373 2293 3347 4229 509 1381 2309 3371 4243 523 1427 2333 3413 4253 541 1451 2339 3461 4259 547 1453 2357 3467 4261 557 1483 2371 3469 4283 563 1493 2389 3491 4349 587 1499 2437 3499 4357 613 1523 2459 3517 4363 619 1531 2467 3533 4373
456 4397 4451 4483 4493 4507 4517 4547 4603 4621 4637 4691 4723 4787 4789 4813 4877 4933 4957 4973 4987 5003 5011 5051 5059 5077 5099 5107 5147 5171 5179 5189 5227 Прикладная криптография 5693 6781 7717 8861 5701 6803 7757 8867 5717 6827 7789 8923 5741 6829 7829 8933 5749 6869 7853 8963 5779 6883 7877 8971 5813 6899 7883 9011 5827 6907 7901 9029 5843 6917 7907 9059 5851 6947 7933 9173 5869 6949 7949 9181 5923 6971 8053 9203 5939 7013 8069 9221 5987 7019 8093 9227 6011 7027 8117 9283 6029 7043 8123 9293 6053 7069 8147 9323 6067 7109 8171 9341 6101 7187 8179 9349 6131 7211 8219 9371 6173 7219 8221 9397 6197 7229 8237 9419 6203 7237 8243 9421 6211 7243 8269 9437 6229 7253 8291 9467 6269 7283 8293 9491 6277 7307 8363 9533 6299 7331 8387 9539 6317 7349 8429 9547 6323 7411 8443 9587 6373 7451 8467 9613 6379 7459 8539 9619
ГЛАВА 17. Другие потоковые шифры 457 5261 6389 7477 8563 9629 5309 6397 7499 8573 9643 5333 6469 7507 8597 9661 5387 6491 7517 8627 9677 5443 6547 7523 8669 9733 5477 6619 7541 8677 9749 5483 6637 7547 8693 9803 5501 6653 7549 8699 9851 5507 6659 7573 8731 9859 5557 6691 7589 8741 9883 5563 6701 7603 8747 9901 5573 6709 7621 8803 9907 5651 6733 7643 8819 9923 5659 6763 7669 8821 9941 5683 6779 7691 8837 9949 Таблица 17.2. Последовательности отводов для РСОСП максимальной длины (32, 6, 3, 2) (64,24,19, 2) (64, 59,28,2) (96, 55, 53,2) (32, 7, 5, 2) (64, 25, 3, 2) (64, 59, 38, 2) (96, 56, 9, 2) (32, 8,3,2) (64, 25, 4,2) (64,59,44,2) (96, 56,51,2) (32,13,8, 2) (64,25, 11,2) (64, 60,49,2) (96, 57, 3, 2) (32,13,12, 2) (64, 25,19, 2) (64,61,51,2) (96, 57,17, 2) (32,15, 6,2) (64, 27, 5, 2) (64, 63, 8, 2) (96, 57,47, 2) (32, 16,2, 1) (64, 27, 16,2) (64, 63,13,2) (96, 58, 35,2) (32, 16,3,2) (64, 27,22, 2) (64, 63,61,2) (96, 59,46,2) (32,16, 5,2) (64,28,19, 2) (96, 60, 29, 2) (32,17, 5,2) (64, 28, 25,2) (96, 15, 5, 2) (96, 60,41,2) (32,19,2, 1) (64, 29,16,2) (96,21,17,2) (96, 60,45, 2) (32,19, 5, 2) (64,29,28, 2) (96, 25, 19, 2) (96,61, 17,2) (32,19, 9,2) (64,31,12, 2) (96,25, 20, 2) (96, 63, 20, 2) (32,19,12, 2) (64, 32,21,2) (96,29, 15, 2) (96, 65, 12, 2) (32,19,17, 2) (64, 35, 29,2) (96, 29,17, 2) (96, 65, 39, 2)
458 Прикладная криптография (32, 20, 17, 2) (64, 36, 7, 2) (96, 30, 3, 2) (96, 65,51,2) (32,21,9, 2) (64, 37, 2, 1) (96, 32,21,2) (96, 67, 5,2) (32,21, 15, 2) (64,37,11,2) (96, 32, 27, 2) (96, 67, 25, 2) (32, 23, 8, 2) (64, 39,4, 2) (96, 33, 5, 2) (96, 67, 34, 2) (32, 23,21,2) (64, 39, 25, 2) (96,35, 17,2) (96, 68, 5, 2) (32, 25, 5, 2) (64,41,5,2) (96, 35, 33, 2) (96, 68, 19, 2) (32,25, 12, 2) (64,41,11,2) (96, 39,21,2) (96, 69,17,2) (32, 27, 25,2) (64,41,27, 2) (96, 40, 25, 2) (96, 69, 36, 2) (32, 29, 19, 2) (64, 43,21,2) (96,41,12, 2) (96, 70, 23, 2) (32,29, 20, 2) (64, 43, 28, 2) (96,41,27, 2) (96,71,6, 2) (32, 30, 3,2) (64, 45, 28, 2) (96,41,35, 2) (96,71,40, 2) (32, 30, 7, 2) (64, 45,41,2) (96, 42, 35, 2) (96, 72, 53, 2) (32,31,5, 2) (64, 47, 5, 2) (96, 43, 14, 2) (96, 73, 32,2) (32,31,9, 2) (64, 47,21,2) (96, 44, 23, 2) (96, 77, 27,2) (32,31,30, 2) (64, 47, 30,2) (96, 45,41,2) (96, 77,31,2) (64, 49, 19,2) (96, 47, 36, 2) (96, 77, 32, 2) (64, 3, 2, 1) (64,49, 20,2) (96, 49,31,2) (96, 77, 33, 2) (64, 14,3,2) (64, 52, 29,2) (96,51,30,2) (96, 77,71,2) (64,15, 8,2) (64, 53, 8,2) (96, 53, 17, 2) (96, 78, 39,2) (64,17,2,1) (64, 53,43, 2) (96, 53, 19, 2) (96, 79,4,2) (64,17, 9, 2) (64, 56, 39, 2) (96, 53, 32, 2) (96,81,80, 2) (64,17,16, 2) (64, 56, 45,2) (96, 53, 48, 2) (96, 83, 14, 2) (64,19, 2,1) (64, 59, 5, 2) (96, 54, 15,2) (96, 83, 26, 2) (64,19,18,2) (64, 59, 8,2) (96, 55,44,2) (96, 83, 54,2) (96, 83, 60,2) (128,31,25, 2) (128,81,55, 2) (128, 105, 11,2) (96, 83, 65, 2) (128,33,21,2) (128, 82, 67, 2) (128, 105,31,2) (96, 83, 78, 2) (128,35, 22,2) (128, 83, 60,2) (128, 105, 48, 2) (96, 84, 65, 2) (128,37, 8,2) (128, 83,61,2) (128, 107, 40,2) (96, 85, 17, 2) (128,41,12, 2) (128, 83, 77,2) (128, 107, 62, 2) (96, 85,31,2) (128,42, 35, 2) (128, 84, 15,2) (128, 107, 102,2) (96, 85, 76, 2) (128, 43,25,2) (128, 84, 43, 2) (128, 108, 35, 2) (96, 85, 79, 2) (128, 43, 42,2) (128, 85, 63, 2) (128, 108, 73,2)
ГЛАВА 17. Другие потоковые шифры 459 (96, 86, 39, 2) (128, 45, 17,2) (128, 87, 57,2) (128, 108, 75,2) (96, 86,71,2) (128,45,27,2) (128, 87,81,2) (128, 108, 89, 2) (96, 87, 9,2) (128, 49, 9, 2) (128, 89,81,2) (128, 109, 11,2) (96, 87, 44, 2) (128,51,9, 2) (128,90,43, 2) (128, 109, 108, 2) (96, 87,45, 2) (128, 54,51,2) (128,91,9,2) (128, 110,23,2) (96, 88, 19, 2) (128,55,45,2) (128,91, 13,2) (128, 111,61,2) (96, 88, 35, 2) (128, 56, 15,2) (128,91,44,2) (128, 113,59,2) (96, 88, 43, 2) (128, 56, 19,2) (128, 92,35,2) (128, 114, 83,2) (96, 88, 79, 2) (128, 56, 55,2) (128, 95, 94,2) (128, 115,73,2) (96, 89, 35, 2) (128, 57,21,2) (128, 96, 23,2) (128, 117, 105,2) (96, 89,51,2) (128, 57, 37, 2) (128, 96,61,2) (128, 119,30, 2) (96, 89, 69, 2) (128, 59,29,2) (128, 97, 25,2) (128, 119, 101,2) (96, 89, 87, 2) (128, 59, 49, 2) (128, 97, 68, 2) (128, 120, 9, 2) (96, 92,51,2) (128, 60, 57, 2) (128, 97, 72, 2) (128, 120,27, 2) (96, 92,71,2) (128,61,9, 2) (128, 97, 75, 2) (128, 120, 37, 2) (96, 93, 32, 2) (128,61,23,2) (128, 99, 13,2) (128, 120,41,2) (96, 93, 39, 2) (128,61,52, 2) (128, 99, 14,2) (128, 120, 79,2) (96, 94, 35, 2) (128, 63,40,2) (128, 99,26,2) (128, 120,81,2) (96, 95, 4, 2) (128, 63, 62, 2) (128, 99, 54, 2) (128, 121,5, 2) (96, 95, 16, 2) (128, 67,41,2) (128, 99, 56, 2) (128, 121,67, 2) (96, 95, 32,2) (128, 69,33,2) (128, 99, 78,2) (128, 121,95,2) (96, 95, 44, 2) (128,71,53,2) (128, 100, 13,2) (128, 121,96,2) (96, 95,45,2) (128, 72, 15,2) (128, 100, 39, 2) (128, 123,40, 2) (128, 72,41,2) (128, 101,44,2) (128, 123,78, 2) (128,5,4,2) (128, 73,5,2) (128, 101,97,2) (128, 124,41,2) (128,15,4,2) (128, 73,65,2) (128, 103,46, 2) (128, 124, 69, 2) (128,21, 19, 2) (128, 73,67, 2) (128, 104, 13,2) (128, 124,81,2) (128, 25, 5,2) (128, 75, 13,2) (128, 104, 19, 2) (128, 125,33,2) (128, 26, 11,2) (128, 80, 39,2) (128, 104,35, 2) (128, 125, 43,2) (128, 27, 25,2) (128, 80, 53,2) (128, 105,7,2) (128, 127, 121,2)
460 Прикладная криптография Рис. 17.5. Комбинированные генераторы Каскад РСЛОС/РСОСП с суммированием/четностью С теоретической точки зрения, сложение с переносом разрушает алгебраические свойства РСЛОС, а операция ХОК разрушает алгебраические свойства РСОСП. Данный генератор объединяет эти идеи, используемые в описанных выше суммирующем генераторе на базе РСЛОС/РСОСП и генераторе четности на базе РСЛОС/РСОСП, в каскад Голлманна. Генератор представляет собой последовательности массивов регистров, причем тактирование каждого массива определяется выходом предыдущего массива. На Рис. 17.6 показан один этап такого генератора. Тактируется первый массив РСЛОС, а результаты объединяются сложением с переносом. Если выход функции объединения равен 1, то тактируется следующий массив (из РСОСП), и выход этих РСОСП объединяется с выходом предыдущей функции объединения операцией ХОК. Если выход первой функции объединения равен 0, то массив РСОСП не тактируется, и выход просто складывается с переносом, полученным на предыдущем раунде. Если выход этой второй функции объединения равен 1, то тактируется третий массив (из РСЛОС), и т.д. Генератор использует множество регистров: п*т, где п - число этапов, а т - число регистров на этап. Я рекомендую использовать значения п-10 и т = 5 . Чередующиеся генераторы «старт-стоп» Эти генераторы вместо некоторых РСЛОС используют РСОСП. Кроме того, операция ХОК может быть заменена сложением с переносом (см. Рис. 17.7). ✓ Генератор «старт-стоп» на базе РСОСП. Регистр-1, Регистр-2 и Регистр-3 - это РСОСП. Комбинирующая функция - ХОК. ✓ Генератор «старт-стоп» на базе РСОСП/РСЛОС. Регистр-1 - РСОСП, а Регистр-2 и Регистр-3 - РСЛОС. Комбинирующая функция - сложение с переносом.
ГЛАВА 17. Другие потоковые шифры 461 Генератор «старт-стоп» на базе РСЛОС/РСОСП. Регистр-1 - РСЛОС, а Регистр-2 и Регистр-3 - РСОСП. Комбинирующая функция - ХОК2. Рис. 17.6. Составной генератор Регистр-1 О- о- Регистр-2 Регистр-3 ц1 Комбинирующая функция Рис. 17.7. Чередующийся генератор «старт-стоп» Сжимающие генераторы Существуют четыре основных типа генераторов, использующих РСОСП: ✓ Сжимающий генератор на базе РСОСП. Сжимающий генератор с РСОСП вместо РСЛОС. ✓ Сжимающий генератор на базе РСОСП/РСЛОС. Сжимающий генератор с РСЛОС, сжимающим РСОСП. ✓ Сжимающий генератор РСЛОС/РСОСП. Сжимающий генератор с РСОСП, сжимающим РСЛОС. ✓ Самосжимающий генератор РСОСП. Самосжимающий генератор с РСОСП вместо РСЛОС. 2 Шнайер отмечает, что другой возможностью было бы использование РСЛОС в качестве Регистра-2, РСОСП - в Регистре-3, и любого из них - в Регистре-1. Этот способ может иметь преимущества перед всеми тремя описанными конструкциями - Прим. ред..
462 Прикладная криптография 17.6. Регистры сдвига с нелинейной обратной связью Нетрудно представить последовательность обратной связи, более сложную, чем та, что используется в РСЛОС или РСОСП. Проблема в том, что не существует математического аппарата, позволяющего анализировать такие последовательности. Что-то получится, но кто знает, что? Вот, в частности, некоторые проблемы регистров сдвига с нелинейной обратной связью. ✓ Выходная последовательность может быть смещенной, например, единиц может быть больше, чем нулей. ✓ Максимальный период последовательности может быть меньше ожидаемого. ✓ Периоды последовательности для различных начальных значений могут различаться. ✓ Последовательность какое-то время может выглядеть случайной, а потом «скатываться» к единственному значению. (Это можно легко устранить операцией ХОК над младшим битом и нелинейной функцией). Есть и положительная сторона - из-за отсутствия теории анализа регистров сдвига с нелинейной обратной связью известно совсем немного способов криптоанализа потоковых шифров, основанных на таких регистрах. Использовать регистры сдвига с нелинейной обратной связью можно, но очень осторожно. В регистре сдвига с нелинейной обратной связью функция обратной связи может быть произвольной (например, как на Рис. 17.8). Рис. 17.8. Регистр сдвига с нелинейной обратной связью (возможно небезопасный) Рис. 17.9. 3-битовый регистр сдвига с нелинейной обратной связью
ГЛАВА 17. Другие потоковые шифры 463 На Рис. 17.9 показан 3-битовый генератор с такой обратной связью: новым битом служит произведение первого и второго битов. Если генератор инициализируется числом 110, последовательность внутренних состояний такова: 1 1 0 0 1 1 1 0 1 0 1 0 00 1 ООО ООО И так до бесконечности. Выходом будет последовательность младших значащих битов: 0 1 1 0 1 000 0 0 00.... Это не слишком хорошо. Но может быть и хуже. Если начальное значение равно 100, то следующими состояниями будут 010, 001, а затем всегда 000. Если начальное значение равно 111, оно будет повторяться всегда и с самого начала. Была проделана определенная работа по вычислению линейной сложности произведения двух РСЛОС [1650, 726, 1364, 630, 658, 659]. Конструкция, включающая вычисление РСЛОС над полем нечетной характеристики [310], ненадежна [842]. 17.7. Другие потоковые шифры В литературе встречаются и другие потоковые шифры. Вот некоторые из них. Генератор Плесса В генераторе Плесса (Пезз) используются свойства ЛК триггеров [1250]. Восемь РСЛОС управляют четырьмя 1-К триггерами; каждый триггер нелинейно объединяет два РСЛОС. Чтобы избежать той проблемы, что выход триггера определяет как источник, так и значение следующего выходного бита, после тактирования четырех триггеров их выходы перемешиваются для получения окончательной гаммы. Этот алгоритм был взломан путем атаки на каждый триггер по отдельности. [1356]. К тому же, объединение 1-К триггеров в криптографическом отношении слабо; генераторы такого типа не устоят перед корреляционной атакой [1451]. Генератор на базе клеточного автомата В [1608, 1609] Стив Вольфрам (81еуе \УЫ1гат) предложил использовать в качестве генератора псевдослучайных чисел одномерный клеточный автомат. Изучение клеточных автоматов не относится к задачам этой книги, но генератор Вольфрама состоит из одномерного массива битов аи а2, ап и функции обновления:
464 Прикладная криптография а'к = ак-1 © (ак V ак+0 Бит извлекается из одного из значений ак, на самом деле неважно, из какого именно. Генератор выглядит достаточно случайным. Однако для этих генераторов описана успешная атака с на основе открытого текста [1052]. Это вскрытие выполнимо на РС со значениями п вплоть до 500 бит. Кроме того, Пол Барделл (Раи1 ВагбеИ) доказал, что выход клеточного автомата может быть также сгенерирован с помощью регистра сдвига с линейной обратной связью той же длины и, следовательно, не обеспечивает большую стойкость [83]. Генератор 1/р Этот генератор был предложен, а затем подвергнут криптоанализу в [193]. Если внутреннее состояние генератора в момент времени I равно хь то: х1+] = Ьх( тоб р Выходом генератора служит младший значащий бит х, сНу р, где сНу - целочисленное деление с усечением. Для максимального периода константы Ъ и р должны быть выбраны так, что р - простое число, а Ъ - примитивный корень по модулю р. К сожалению, этот генератор ненадежен. (Заметим, что если Ь = 2, то РСОСП с числом обратной связи, равным р, выдает последовательность, обратную данной). Алгоритм сгур1(1) Оригинальный алгоритм шифрования ЦШХ, сгур1(1), представляет собой потоковый шифр, использующий те же идеи, что заложены в машину Еш§та. Это 256-элементный, однороторный подстановочный шифр с отражателем. И ротор, и отражатель генерируются из ключа. Этот алгоритм намного проще немецкой машины Еш§та времен Второй мировой войны, и квалифицированному криптоаналитику несложно его взломать [1576, 1299]. Для вскрытия файлов, зашифрованных сгур1(1), можно использовать общедоступную программу ЦМХ, называемую СВ\У (Сгур! Вгеакегз ХУогкЪепсЬ - рабочее место взломщика сгур!). Другие схемы Еще один генератор основан на задаче об укладке ранца (см. раздел 19.2) [1363]. СКУРТО-ЬЕССО нестоек [301]. Джоан Дэймен (1оап Оаетеп) разработала 8иЬ81геаш, 1аш и 81ерКщЬШр [402], но они слишком новы, чтобы их комментировать. Множество других алгоритмов описано в литературе, но еще больше хранится в секрете и встроено в аппаратуру. 17.8. Системно-теоретический подход к проектированию потоковых шифров Практика проектирования потоковых шифров во многом напоминает проектирование блочных шифров. В этом случае используется больше математической теории, но, в
ГЛАВА 17. Другие потоковые шифры 465 конце концов, криптограф предлагает какую-то схему, а затем пытается выполнить ее анализ. Согласно Райнеру Рюппелю (Яатег Яиерре1) существуют четыре различных подхода к проектированию потоковых шифров [1360, 1362]: V Системно-теоретический подход. Используя ряд фундаментальных критериев и законов проектирования, пытается удостовериться, что каждая схема создает криптоаналитику сложную и неизвестную проблему. ✓ Информационно-теоретический подход. Пытается сохранить неуверенность крипто¬ аналитика относительно открытого текста. Независимо от того, как много действий выполнит криптоаналитик, он никогда не получит однозначного решения. ✓ Сложностно-теоретический подход. Пытается использовать в качестве базы криптосистемы некоторую известную и сложную проблему, такую как разложение на множители или вычисление дискретных логарифмов, или сделать криптосистему эквивалентной этой проблеме. ✓ Рандомизированный подход. Пытается создать чрезвычайно крупную проблему, заставляя криптоаналитика по ходу попыток вскрытия проверять множество бессмысленных данных. Эти подходы отличаются предположениями о возможностях и способностях крипто¬ аналитика, определением понятия успеха криптоанализа и пониманием стойкости. Большинство исследований в этой области - теоретические, но среди бесполезных потоковых шифров есть и вполне приличные. Системно-теоретический подход использовался во всех ранее приведенных потоковых шифрах. Большинство используемых в реальном мире потоковых шифров появилось в результате его применения. Криптограф разрабатывает генераторы гаммы, обладающие проверяемыми характеристиками безопасности - периодом, распределением битов, линейной сложностью и т.д. - а не шифры, основанные на математической теории. Кроме того, криптограф изучает различные методы криптоанализа этих генераторов и проверяет, устойчивы ли генераторы к этим способам атак. Со временем этот подход привел к формулированию набора критериев проектирования потоковых шифров [1432, 99, 1357, 1249]. Они рассматриваются Рюппелем в работе [1362], где он подробно описывает теоретические основы этих критериев. ✓ Длинный период без повторов. ✓ Критерий линейной сложности - большая линейная сложность, линейный профиль сложности, локальная линейная сложность и т.д. ✓ Статистические критерии, например, идеальные Л-кортежные (к-1ир1ё) распре¬ деления. ✓ Перемешивание - каждый бит гаммы должен быть сложным преобразованием всех или большинства битов ключа. ✓ Рассеивание - избыточность в подструктурах должна рассеиваться при достаточной большой статистике.
466 Прикладная криптография ✓ Критерии нелинейности булевых функций, такие как отсутствие корреляции т-го порядка, удаленность от линейных функций, лавинный критерий, и т.д. Этот перечень критериев проектирования справедлив не только для потоковых шифров, разработанных с помощью системно-теоретического подхода, но и для всех потоковых шифров. Он тем более справедлив для блочных шифров. Особенность системно¬ теоретического подхода в том, что при разработке потоковых шифров его критерии учитываются непосредственно. Главный недостаток таких криптосистем заключается в невозможности доказать их надежность. Никем не доказано, что эти критерии проектирования необходимы или достаточны для обеспечения безопасности. Генератор гаммы может удовлетворять всем критериям разработки, но, тем не менее, оказаться ненадежным. Другой же генератор может оказаться стойким. В этом процессе все еще остается что-то мистическое. С другой стороны, вскрытие любого из этих генераторов гаммы представляет собой еще одну проблему для криптоаналитика. Если будет разработано достаточное число различных генераторов, может оказаться, что криптоаналитик не станет тратить время, взламывая каждый из них. Скажем, его больше заинтересует возможность прославиться, достигнув успеха в разложении на множители больших чисел или вычислении дискретных логарифмов. 17.9. Сдожностно-теоретический подход к проектированию потоковых шифров Рюппель очертил также сложностно-теоретический подход к проектированию потоко¬ вых шифров. В соответствии с ним, чтобы доказать надежность своих генераторов, криптограф пытается использовать теорию сложности. Следовательно, генераторы должны быть как можно сложнее, основываясь на тех же труднорешаемых проблемах, что и криптография с открытым ключом. И, также как алгоритмы с открытым ключом, они оказываются медленными и громоздкими. Генератор псевдослучайных чисел Шамира Ади Шамир (АсН ЗЬапнг) использовал в качестве генератора псевдослучайных чисел алгоритм К8А [1417]. Хотя Шамир показал, что предсказание выхода генератора псевдослучайных чисел равносильно взлому Я8А, в [1401, 200] продемонстрировано потенциальное смещение выхода. Генератор Блюма-Микали Безопасность этого генератора определяется трудностью вычисления дискретных логарифмов [200]. Пусть § - простое число, а р - нечетное простое число. Ключ х0 начинает процесс: х,+, гпоёр Если дг; <(р-1)/2 , выходом генератора будет 1, и 0 в противном случае.
ГЛАВА 17. Другие потоковые шифры 467 Если р достаточно велико, чтобы вычисление дискретных логарифмов по модулю р стало физически невозможным, этот генератор можно считать надежным. Дополни¬ тельные теоретические результаты можно найти в [1627, 986, 985, 1237, 896, 799]. Генератор К5А Генератор К8А [35, 36] представляет собой модификацию [200]. Начальными парамет¬ рами служат модули А, равные произведению двух больших простых чисел р и д, и целое число е, взаимно простое с (р -1) (д - 1), а также случайное начальное число х0, меньшее N. х1+\ = Х1 тоб А Выход генератора представляет собой младший значащий бит х/. Безопасность этого генератора опирается на сложность вскрытия Я8А. Если N достаточно велико, генератор надежен. Дополнительная теория приведена в [1569, 1570, 1571, 30, 354]. Генератор ВВ5 Простейший и наиболее эффективный генератор, использующий сложностно- теоретический подход, в честь своих авторов называется генератором Блюм-Блюма- Шуба (В1ит-В1ит-8ЬиЬ). Мы сократим его название до ВВ8, а иногда его называют генератором квадратичных вычетов [193]. Теория генератора ВВ8 использует квадратичные вычеты по модулю п (см. раздел 11.3). Вот как он работает. Сначала найдем два простых числа, р ид, которые сравнимы с 3 по модулю 4. Произведением этих чисел, п, будет числом Блюма. Выберем другое случайное целое число х, взаимно простое с п. Вычислим: х0 = х2 тоб п Это начальное значение генератора. Теперь можно начать вычислять биты. Псевдослучайным битом с номером / будет младший значащий бит х/5 где у х, = хм тоб п Самое интригующее свойство этого генератора заключается в том, что для получения /-го бита не нужно вычислять / - 1 предыдущих битов. Если известны значения р ид, можно вычислить /-ый бит напрямую. 6/-это младший значащий битх/5 где х, = х0^2 Данное свойство означает, что этот криптографически стойкий генератор псевдо¬ случайных чисел можно использовать в качестве потоковой криптосистемы для файла с произвольным доступом. Устойчивость этой схемы к вскрытию основана на сложности разложения п на множители. Вы можете даже опубликовать п так, что кто угодно может генерировать биты с помощью генератора. Однако пока криптоаналитик не сумеет разложить п на
468 Прикладная криптография множители, он никогда не сможет ни предсказать выход генератора, ни даже утверждать что-нибудь вроде: «Следующий бит с вероятностью 51% будет единицей». Более строго, генератор ВВ8 непредсказуем влево и непредсказуем вправо. Это означает, что, получив последовательность, выданную генератором, криптоаналитик не сможет предсказать ни следующий, ни предыдущий бит последовательности. Это обусловлено не надежностью какого-то никому не ведомого сложного генератора битов, а математической трудностью разложения п на множители. Этот алгоритм медлителен, но есть способы его ускорения. Оказывается, что в качестве псевдослучайных битов, кроме младшего бита, можно использовать еще несколько битов каждого х,. В соответствии с [1569, 1570, 1571, 35, 36] если п - длина х/5 можно использовать 1о§2я младших значащих битов х,. Генератор ВВ8 сравнительно медленный и не годится для потоковых шифров. Однако для высоконадежных приложений, например, для генерации ключей, этот генератор лучше многих других. 17.10. Другие подходы к проектированию потоковых шифров При информационно-теоретическом подходе к потоковым шифрам предполагается, что криптоаналитик располагает неограниченными временем и вычислительными ресурсами. Единственным практически реализованным потоковым шифром, защи¬ щенным от такого противника, можно назвать одноразовый блокнот (см. раздел 1.5). Так как писать биты в блокноте не слишком удобно, его иногда называют одноразовой лентой. На двух магнитных лентах - одной для зашифрования, другой - для расшифрования, должна быть записана идентичная гамма. Для зашифрования просто выполняется операция ХОК открытого текста с битами ленты. Для расшифрования выполняется ХОК шифртекста с битами другой, идентичной ленты. Одну и ту же гамму нельзя использовать дважды. Так как биты гаммы действительно случайны, предсказать гамму невозможно. Если сжигать ленты после использования, то надежность будет абсолютной (при условии, что у кого-то другого нет копии ленты). Другой информационно-теоретический потоковый шифр, разработанный Клаусом Шнорром (С1аиз 8сЬпогг), предполагает, что криптоаналитик имеет доступ только к ограниченному числу битов шифртекста [1395]. Результаты слишком теоретические и не имеют практического значения, во всяком случае, пока. Подробности можно найти [1361, 1643,1193]. С помощью рандомизированного потокового шифра криптограф пытается добиться физической невозможности решения проблемы, стоящей перед криптоаналитиком. Для этого, сохранив небольшой размер секретного ключа, криптограф хочет значительно увеличить количество битов, с которыми придется иметь дело криптоаналитику. Это можно сделать за счет использования при зашифровании и расшифровании большой открытой случайной строки. Ключ же указывает, какие части строки будут исполь¬ зованы при зашифровании и расшифровании. Криптоаналитику, не знающему ключ, придется перебирать случайные комбинации частей строки. Надежность такого шифра можно оценить по среднему числу битов, которые должен проверить криптоаналитик прежде, чем вероятность восстановить ключ значительно превысит вероятность простого угадывания.
ГЛАВА 17. Другие потоковые шифры 469 Шифр «Рип ван Винкль» Джеймс Мэсси (7ате$ Маззеу) и Ингемар Ингемарссон (1п§етаг 1п§етагззоп) предложили шифр «Рип ван Винкль» [1011], названный так потому, что получатель, чтобы начать расшифрование, должен получить 2" битов шифртекста. Алгоритм, показанный на Рис. 17.10, прост в реализации, гарантированно безопасен и совершенно непрактичен. Просто выполните операцию ХОК над открытым текстом и гаммой и задержите гамму на время от 0 до 20 лет - точная задержка составляет часть ключа. По словам Мэсси: «Можно легко доказать, что для вскрытия шифра криптоаналитику противника понадобятся тысячи лет, если кто-то согласится подождать с чтением открытого текста миллионы лет». Развитие этой идеи можно найти в [1577, 755]. Поток случайных - битов Поток битов открытого - текста ►ф—► Задержка 0-20 лет Канал (мульти¬ плексиро¬ ванный) Задержка е- Открытый текст (Срок засекречен и зависит от ключа) Рис. 17.10. Шифр «Рип ван Винкль» Рандомизированный потоковый шифр Диффи Эта схема впервые предложена Уитфилдом Диффи [1362]. Используются 2" случайных последовательностей. Ключ к представляет собой случайную «-битовую строку. Для шифрования сообщения Алиса использует к-ую случайную строку как одноразовый блокнот. Затем она отправляет шифртекст и 2п случайных строк по 2"+1 различным каналам связи. Боб знает к, а потому может легко выбрать одноразовый блокнот для расшифрования сообщения. Еве же остается только перебирать случайные последовательности одну за другой, пока не найдется правильный одноразовый блокнот. Для вскрытия потребуется проверить некоторое число битов, порядка 0(2"). Рюппель указал, что, если вы отправляете п случайных строк вместо 2" и если ключ используется для задания линейной комбинации этих случайных строк, стойкость остается на прежнем уровне. Рандомизированный потоковый шифр Маурера Уели Маурер (иеН Маигег) описал схему, основанную на выполнении операции ХОК над открытым текстом и несколькими большими открытыми последовательностями случайных битов [1034, 1029, 1030]. Ключом служит набор стартовых позиций каждой последовательности. Можно доказать, что такой шифр почти безопасен, а вероятность взлома определяется объемом памяти, имеющейся в распоряжении взломщика, независимо от доступных ему вычислительных ресурсов. Маурер утверждает, что эта схема становится практичной при 100 различных последовательностях длиной
470 Прикладная криптография 1020 случайных битов каждая. Чтобы генерировать такое огромное число битов, можно оцифровать поверхность Луны. 17.11. Каскадирование нескольких потоковых шифров Если производительность не слишком важна, можно выбрать несколько потоковых шифров и объединять их каскадом. Для получения шифртекста просто выполните операцию ХОК над выходом каждого генератора и открытым текстом. Как показывают результаты Маурера (см. раздел 15.7), если генераторы используют независимые ключи, надежность каскада по крайней мере не меньше надежности самого прочного алгоритма каскада, а скорее всего, намного больше. Потоковые шифры объединяются теми же способами, что и блочные (см. главу 15). Потоковые шифры можно объединять в каскад (см. раздел 15.7) с другими потоковыми или блочными шифрами. Ловкий трюк заключается в использовании одного алгоритма, потокового или блочного, для частой смены ключа (гекеут%) быстрого потокового алгоритма (или блочного алгоритма в режиме ОРВ). Быстрый алгоритм может быть слабым, так как криптоаналитик никогда не получит достаточно открытого текста, зашифрованного одним ключом. Известен метод согласования размера внутреннего состояния быстрого алгоритма (который может влиять на безопасность) с частотой смены ключа. Смена ключа должна быть относительно частой, не стоит использовать для этого алгоритмы с длинной процедурой установки ключа. Кроме того, смена ключа не должна зависеть от внутреннего состояния быстрого алгоритма. 17.12. Выбор потокового шифра Если изучение потоковых шифров и приносит какие-то плоды, так это появление с пугающей регулярностью все новых методов атак. Традиционно потоковые шифры опирались на развитую математическую теорию. Эту теорию можно использовать для доказательства достоинств шифра, но с равным успехом и для поиска новых методов взлома. По этой причине любой потоковый шифр, основанный только на РСЛОС, внушает мне тревогу. Я предпочитаю потоковые шифры, спроектированные подобно блочным шифрам: нелинейные преобразования, крупные 8-блоки и т.д. Больше всего мне нравится алгоритм КС4, а затем 8ЕАЬ. Мне бы очень хотелось увидеть результаты криптоанализа предложенных мной генераторов, объединяющих РСЛОС и РСОСП. Эта область представляется весьма перспективной для изучения возможности использования в реальных разработках. Для создания потокового шифра можно также использовать блочный шифр в режиме ОРВ или СРВ. Для сравнения в табл. 17.3 приведены временные характеристики некоторых алгоритмов.
ГЛАВА 17. Другие потоковые шифры 471 Таблица 17.3. Скорости шифрования некоторых потоковых шифров на компьютере 14868Х/33 МГц Алгоритм Скорость шифрования (Кбайт/сек) А5 5 РЖЕ 62 КС4 164 8ЕАЬ 381 1 7Л 3. Генерация нескольких потоков одним генератором псевдослучайных последовательностей Если нужно зашифровать несколько каналов связи при помощи одного блока - например, мультиплексора, - можно использовать для каждого потока отдельный генератор псевдослучайных последовательностей. При этом возникают две проблемы: необходимость в дополнительной аппаратуре и синхронизация всех генераторов. Так что проще было бы использовать один генератор. Одно из решений - синхронизировать генератор несколько раз. Если вам нужны три независимых потока, синхронизируйте генератор трижды и отправьте по одному биту в каждый поток. Этот метод работает, но могут быть сложности, если вы пожелаете синхронизировать генератор слишком часто. Например, если вы можете синхронизи¬ ровать генератор только втрое быстрее синхронизации потока данных, вы сможете создать только три потока. Другой способ - использование одной и той же последова¬ тельности в каждом канале, возможно, с переменной временной задержкой. Но это небезопасно. По-настоящему удачная идея [1489], запатентованная АНБ, показана на Рис. 17.11. Записывайте выход вашего любимого генератора в простой т-битовый регистр сдвига. По каждому синхронизирующему импульсу сдвигайте регистр на один бит вправо. Затем для каждого выходного потока выполните операцию АИО регистра с другим т-битовым управляющим вектором, рассматриваемым как уникальный идентификатор выбранного выходного потока, затем объедините операцией ХОК все биты, получив бит выхода для этого потока. Если требуется создать несколько параллельных выходных потоков, для каждого выходного потока нужно использовать отдельный вектор и логический массив ХОКМ>Ш. Следует отслеживать несколько обстоятельств. Если любой из этих потоков представ¬ ляет собой линейную комбинацию других потоков, система может быть взломана. Но если вы достаточно аккуратны, описанный способ служит простым и безопасным путем решения проблемы.
472 Прикладная криптография Поток 1 Поток 2 Поток п Рис. 17.11. Генератор нескольких битов 17.14. Генераторы истинно случайных последовательностей В некоторых случаях криптографически надежные псевдослучайные последова¬ тельности неудовлетворительны. В криптографии вам могут понадобиться истинно¬ случайные числа. Первое, что приходит в голову - генерация ключей. Можно генери¬ ровать прекрасные случайные криптографические ключи с помощью генератора псевдо¬ случайных последовательностей, но если противник добудет копию этого генератора и главный ключ, он сможет создать те же ключи и взломать вашу криптосистему, независимо от надежности алгоритмов. Последовательность, выдаваемую генератором случайных последовательностей, воспроизвести невозможно. Никто, даже вы сами, не сможет воспроизвести последовательность битов, выдаваемую этими генераторами. Вопрос о том, дают ли эти методы действительно случайные биты - крупная философская проблема. Я не собираюсь ввязываться в этот спор. Здесь я рассматриваю генерацию последовательности битов, которые невозможно воспроизвести и у которых статистические свойства как у случайных битов. Любой генератор истинно случайных последовательностей важно протестировать. На эту тему существует множество литературы. Тесты на случайность можно найти в [863, 99]. Маурер показал, что все эти тесты можно вывести из попытки сжатия последовательности [1031, 1032]. Если случайная последовательность сжимаема, ее нельзя полагать истинно случайной.
ГЛАВА 17. Другие потоковые шифры 473 В любом случае, все, что мы имеем в этой области, во многом родственно черной магии. Главный момент - генерация последовательности битов, которую не сможет угадать ваш противник. Эта задача намного сложнее, чем кажется. Я не могу доказать, что любой описанный метод генерирует случайные биты. Результат их работы - последова¬ тельности битов, которые невозможно легко воспроизвести. Подробности можно найти в [1375, 1376,511]. Таблицы случайных чисел Очень давно, в 1955 году, когда компьютеры все еще были в диковинку, корпорация КАИО издала книгу, содержавшую миллион случайных цифр [1289]. Их метод в книге описывался так: Случайные цифры в этой книге получены рандомизацией основной таблицы, генерированной электронной рулеткой. Вкратце, источник импульсов, выдающий их со случайной частотой в среднем около 100000 импульсов в секунду, отпирался раз в секунду импульсом постоянной частоты. Цепи нормализации импульса пропускали импульсы через 5-разрядный двоичный счетчик. По сути, машина работала как колесо рулетки с 32 позициями, которое в среднем делало около 3000 оборотов за выборку и выдавало одно число в секунду. Использовался двоично¬ десятичный преобразователь, который преобразовывал 20 из 32 чисел (оставшиеся двенадцать отбрасывались) и оставлял только последнюю цифру двузначных чисел. Эти последние цифры поступали в перфоратор 1ВМ, образуя, в итоге таблицу пробитых карточек случайных цифр. В книге рассматривались и результаты различных проверок данных на случайность. В ней также предлагался способ использования этой книги для выбора случайного числа: Строки таблицы цифр нумеруются от 00000 до 19999. При использовании таблицы нужно сначала выбрать случайную стартовую позицию. Для этого обычно используется такая процедура: откройте книгу на произвольной странице таблицы цифр и, закрыв глаза, выберите 5-разрядное число. Это число с первой цифрой, приведенной по модулю 2, определяет стартовую строку. Остаток от деления двух цифр справа от первоначально выбранного 5-разрядного числа на 50 задает стартовый столбец в стартовой строке. Чтобы предотвратить постоянное открытие книги на одной странице и естественное стремление выбрать число поближе к центру страницы, каждое пятиразрядное число, использованное для определения стартовой позиции, должно быть помечено, и более не использоваться для этой цели. Главным содержанием этой книги была таблица случайных чисел. Числа приводились 5-разрядными группами, например, 10097 32533 76520 13586..., по 50 в строке и по 50 строк на странице. Таблица занимала 400 страниц и, за исключением особенно выдающейся группы на странице 283, выглядевшей как «69696», была достаточно скучным чтивом. В книгу также входила таблица 100000 нормальных отклонений. Книга ПАКО интересна не миллионами случайных чисел, а самим фактом их создания до компьютерной революции. Во многих криптографических алгоритмах используются произвольные константы - так называемые «магические числа». Выбор магических чисел из таблиц ЯАКО гарантировал, что они не были выбраны специально по каким-то жульническим причинам. Так, например, было сделано в КЪа&е.
474 Прикладная криптография Использование случайного шума Лучший способ генерации множества случайных битов - извлечение их из естественно случайных событий реального мира. Часто такой метод требует специальной аппаратуры, но этот трюк можно реализовать и в компьютерах. Найдите событие, которое происходит регулярно, но случайно: атмосферный шум, превышающий какой-то порог, падающий ребенок, который учится ходить. Измерьте интервал между одним подобным событием и событием, следующим за ним. Запишите. Измерьте временной интервал между вторым и третьим событиями. Снова запишите. Если первый временной интервал больше второго, выходным битом будет 1. Если второй интервал больше первого, то выходом события будет 0. Сделайте это снова для следующего события. Бросьте дротик в перечень котировок на Нью-йоркской фондовой бирже в местной газете. Сравните котировку акции, в которую вы попали, с котировкой акции прямо над ней. Если больше та, в которую вы попали, выход равен 0, а если меньше - 1. Подключите к компьютеру счетчик Гейгера, подсчитайте количество импульсов за фиксированный интервал времени и возьмите младший бит. Или измерьте время между последовательными импульсами. (Так как радиоактивный источник распадается, среднее время между последовательными щелчками счетчика непрерывно увеличи¬ вается. Чтобы этого избежать, надо выбирать источник с достаточно большим периодом полураспада, например, плутониевый. Но если вы беспокоитесь о своем здоровье, просто можете внести соответствующие статистические поправки). Дж. Б. Эгнью (О. В. А§пе\у) предложил генератор истинно-случайных битов, который можно встроить в СБИС [21]. Это конденсатор металл-изолятор-полупроводник (Ме1а1 1п5и1а*ог 8егшсопс1ис1юп Сарасйог - М18С). Два таких конденсатора помещаются рядом друг с другом, а случайный бит определяется разностью зарядов этих конденсаторов. Другой генератор случайных чисел генерирует поток случайных битов, используя нестабильность частоты свободно колеблющегося осциллятора [535]. Коммерческая микросхема фирмы АТ&Т генерирует случайные числа, опираясь именно на это явление [67]. М. Гьюд (М. Оис1е) построил генератор случайных чисел, собирающий случайные биты из физических явлений, например, радиоактивного распада [668, 669]. Манфилд Рихтер (МапйеЫ ЯюЬ1ег) разработал генератор случайных чисел, использующий тепловой шум полупроводникового диода [1309]. Предположительно случайны интервалы времени между последовательными 2е4 излучениями света распадающегося атома ртути. Воспользуйтесь этим. Но лучше найдите полупроводниковую фирму, которая изготавливает микросхемы генераторов случайных чисел, их достаточно много. Один из генераторов случайных чисел использует жесткий диск компьютера [439]. Он измеряет время, нужное для чтения блока диска, и использует изменения этого времени в качестве источника случайных чисел. Временные характеристики данных фильтруются, чтобы удалить структуру, вызванную квантованием, затем к векторам чисел приме¬ няется быстрое преобразование Фурье. Это устраняет смещение и корреляцию. Наконец, в качестве случайных битов используются спектральные углы для частот в диапазоне (0, я), приведенные к единичному интервалу. Основным источником случайности в этой системе служит турбулентность воздуха, которая изменяет скорость вращения диска.
ГЛАВА 17. Другие потоковые шифры 475 Хотя надо учесть следующее. Подавая на выход слишком много битов, вы используете в качестве генератора случайных чисел быстрое преобразование Фурье и рискуете получить определенную предсказуемость. Далее, лучше снова и снова читать один и тот же блок диска, чтобы не фильтровать структуру, обусловленную работой планировщика диска. Реализация такой системы позволяла получать около 100 битов в минуту [439]. Использование таймера компьютера Если вам нужен один случайный бит (или даже несколько), воспользуйтесь младшим значащим битом любого таймера. В системе 1Ж1Х он может быть не слишком случайным из-за различной возможной синхронизации, но на некоторых персональных компьютерах это работает. Не стоит извлекать таким методом слишком много битов. Последовательный многократный вызов одной и той же процедуры может легко внести смещение в биты, сгенерированные этим способом. Например, если выполнение каждой процедуры генерации бита занимает четное число тактов таймера, на выходе вашего генератора появится бесконечная последовательность одинаковых битов. Если выполнение каждой процедуры генерации бита занимает нечетное число тактов таймера, на выходе ваш генератор выдаст бесконечную последовательность чередующихся битов. Даже если зависимость не слишком очевидна, получающийся битовый поток будет далек от случайного. Один из генераторов случайных чисел работает следующим образом [918]: Наш генератор истинно-случайных чисел... работает, устанавливая таймер, а затем быстро инкрементируя регистр счетчика процессора до тех пор, пока не произойдет прерывание. Далее выполняется операция ХОК содержимого регистра и содержимого байта выходного буфера (данные регистра усекаются до 8 битов). После заполнения каждого байта выходного буфера, буфер подвергается дальнейшей обработке циклическим сдвигом каждого символа вправо на два бита. Это приводит к эффекту перемещения наиболее активных (и случайных) младших значащих битов в старшие значащие позиции. Затем весь процесс повторяется три раза. Наконец после прерываний два самых случайных бита регистра счетчика влияют на каждый символ буфера. То есть происходит 4п прерываний, где п - число нужных случайных битов. Этот метод очень чувствителен к случайности системных прерываний и квантованности таймера. При тестировании на реальных компьютерах 1ЛЧ1Х результат был очень неплох. Измерение задержек клавиатуры Процесс ввода с клавиатуры и случаен, и неслучаен одновременно. Он достаточно неслучаен, чтобы его можно было использовать для идентификации оператора, но достаточно случаен, чтобы его можно было использовать для генерации случайных битов. Измерьте время между последовательными нажатиями клавиш, затем воспользуйтесь младшими значащими битами этих измерений. Эти биты оказываются достаточно случайными. Данный метод не работает на терминалах ИЫ1Х, так как нажатия клавиш прежде, чем они будут переданы вашей программе, проходят через фильтры и другие механизмы, но это будет работать на большинстве персональных компьютеров.
476 Прикладная криптография В идеальном случае вы должны по каждому нажатию клавиши генерировать только один бит. Использование большего количества битов может сместить результаты в зависимости от навыков ввода. Однако этот метод имеет ряд ограничений. Нетрудно заставить кого-то напечатать 100 слов для генерации ключа, но неразумно заставлять машинистку печатать текст из 100000 слов, чтобы использовать результат работы генератора в качестве одноразового блокнота. Смешения и корреляции Главный недостаток подобных систем - возможные закономерности в генерируемой последовательности. Используемые физические процессы могут быть и случайны, но между физическим процессом и компьютером находятся различные измерительные инструменты. Эти инструменты могут легко привести к появлению проблем. Для устранения смещения (Ыаз) или отклонения (зкем) можно выполнить операцию ХОЯ нескольких битов друг с другом. Если случайный бит смещен к 0 на величину г, то вероятность 0 можно записать как: Р(0) = 0.5 + е Операция ХОЯ над двумя такими битами дает: Р(0) = (0.5 + е)1 + (0.5 -е)2 =0.5 + 2е2 Те же вычисления для операции ХОЯ с 4 битами дают: Р(0) = 0.5 + 8е4 Операция ХОЯ над т битами экспоненциально ведет к равной вероятности 0 и 1. Если известно максимальное смещение, которое допустимо в вашем приложении, вы можете вычислить, сколько битов нужно объединить операцией ХОЯ, чтобы уменьшить смещение до этого значения. Еще лучше рассматривать биты попарно. Если 2 бита одинаковы, отбросьте их и взгляните на следующую пару. Если 2 бита различны, используйте первый бит в качестве выхода генератора. Это полностью устраняет смещение. Другие методы уменьшения смещения используют отображение переходов, сжатие и быстрое преобразование Фурье [511]. Потенциальный недостаток обоих методов заключается в том, что при наличии корреляции между соседними битами эти методы увеличивают смещение. Для устранения этого можно использовать нескольких случайных источников. Возьмите четыре случайных источника и выполните операцию ХОЯ битов друг с другом или возьмите два случайных источника и рассматривайте их биты попарно. Например, возьмите радиоактивный источник и присоедините счетчик Гейгера к вашем) компьютеру. Возьмите пару шумящих диодов и записывайте в качестве события каждое превышение определенного значения. Измерьте атмосферный шум. Извлеките из каждого источника случайный бит и объедините их операцией ХОЯ друг с другом, получая случайный бит. Возможности бесконечны.
ГЛАВА 17. Другие потоковые шифры 477 Сам по себе факт смещения не обязательно означает бесполезность генератора случайных чисел. Это означает только, что он менее надежен. Например, рассмотрим проблему Алисы, генерирующей 168-битовый ключ для тройного ЭЕ8. Все, что у нее есть - это генератор случайных битов, смещенный к 0: с вероятностью 55% он выдает нули и с вероятностью 45% - единицы. Это означает, что энтропия на бит ключа составит только 0,99277 (для идеального генератора она равна 1). Мэллори, пытаясь раскрыть ключ, может оптимизировать лобовое вскрытие, проверяя сначала наиболее вероятные ключи (ООО... 0) и двигаясь к наименее вероятному ключу (111... 1). Из-за смещения Мэллори может рассчитывать, что ему удастся обнаружить ключ за 2109 попыток. При отсутствии смещения Мэллори потребуется 2111 попыток. Таким образом, полученный ключ менее безопасен, но это практически неощутимо. Извлеченная случайность В общем случае лучший способ генерировать случайные числа - найти множество с виду случайных событий и извлечь из них случайность. Эта случайность может храниться в накопителе (пуле) и извлекаться при необходимости. Для этого прекрасно подходят однонаправленные хэш-функции. Они быстры, поэтому вы можете пропускать биты через них, не слишком заботясь о производительности или действительной случайности каждого наблюдения. Попробуйте хэшировать почти все, что вам кажется хоть чуть-чуть случайным. Например: ✓ Копия каждого нажатия на клавиши; ✓ Команды мыши; ✓ Номер сектора, время дня и задержка поиска для каждой дисковой операции; ✓ Фактическое положение мыши; ✓ Номер текущей строки развертки монитора; ✓ Содержимое текущего выводимого на экран изображения; ✓ Содержимое таблиц файловой системы РАТ, таблиц ядра, и т.д.; ✓ Время доступа/изменения /беу/йу; ✓ Загрузка процессора; ✓ Время поступления сетевых пакетов; ✓ Вход с микрофона; ✓ беу/аисИо с отсоединенным микрофоном. Если ваша система использует различные кристаллы-осцилляторы для своего процессора и системных часов, попытайтесь считывать время дня в непрерывном цикле. В некоторых (но не всех) системах это приведет к случайному дрожанию фазы между двумя осцилляторами. Так как случайность этих событий определяется их синхронизацией, используйте часы с как можно меньшим квантом времени. В стандартном РС используется микросхема таймера 1п1е1 8254 (или эквивалентная), работающая на тактовой частоте 1.1931818 МГц, поэтому непосредственное считывание регистра счетчика даст разрешение в 838 нсек.
478 Прикладная криптография Чтобы избежать смещения результатов, не используйте в качестве источника событий прерывание таймера. Вот как выглядит этот процесс на языке С с М05 (см. раздел 18.5) в качестве хэш- функции: сЪаг Капс1роо1 [16] ; /* Часто вызывается для широкого множества случайных или почти случайных системных событий для создания пула случайных чисел. Точный формат и длина ^апс^еVеп■Ь не имеет значения, пока его содержание является, по крайней мере, непредсказуемым. */ чо±с1 сЪигпгапс! (сЬаг *^апс^еVеп1:, ипз±дпес! ±п-Ь гапс11еп) { М05_СТХ т<15; М051п1М&тй5) ; МБ5ирс1а-Ье (&ш<15, Капс1роо1, зхгео^ (Кап<1роо1)) ; М05ирс1а-Ье (&тс!5, ^апс^еVеп^:, гапс11еп ); М05Е±па1 (Капс1роо1, &тс15) ; } После некоторого числа вызовов сЬигпгапао, достаточного для накопления случайности в пуле Капс1роо1 можно генерировать из него случайные биты. М05 снова становится полезным, на этот раз в качестве генератора псевдослучайного байтового потока, работающего в режиме счетчика. 1опд Капскт-Ь; чохб. депгапс! (сЬаг *Ъи^, ипз1дпес! д.п-Ь Ьи^1еп) { М05_СТХ тс!5; сЬаг Ьпр[1б]/ ипзхдпес! ±пЪ п; \*Ы1е(Ьи^1еп != 0) { /* Хэширование пула с помощью счетчика */ М051пл.-Ь (&шс!5) ; М0511рс1а*:е (&шс!5, Капйроо1, зхгео^ (Капйроо1)) ; М0511рс1а1:е (&тс!5, (ипз±дпе<1 сЬаг *) &Капс1сп*:, з1гео^ (Капс1сп*:)) ; МБ5Рл.па1 (Ьир, &т<15) ; Капс1сп1:++; /* Инкрементируем счетчик */ /* Копируем 16 или число Запрошенных байтов, если оно меньше 16, в буфер пользователя */ п « (Ьи^1еп < 16) ? Ьи^1еп : 16; тетсру (Ьи^, Ьпр, п) ; Ьи^ += п ; Ьи^1еп -= п; } }
ГЛАВА 17. Другие потоковые шифры 479 По некоторым причинам хэш-функция играет ключевую роль. Во-первых, она обеспечивает простой способ генерации произвольного количества псевдослучайных данных, не вызывая всякий раз сЬигпгапсК). В сущности, когда запас в накопителе подходит к концу, система постепенно переходит от совершенной случайности к практически-приемлемой. В этом случае становится теоретически возможным использовать результат вызова депгап<1() для определения предыдущего или последующего результата. Но для этого потребуется инвертировать МЭ5, что вычислительно невозможно. Это важно, так как процедуре неизвестно, что происходит далее со случайными данными, которые она возвращает. Один вызов процедуры может генерировать случайное число для протокола, которое посылается в явном виде, возможно в ответ на прямой запрос взломщика. А следующий вызов может генерировать секретный ключ для совсем другого сеанса связи, в содержание которого и хочет проникнуть взломщик. Очевидно, важно воспрепятствовать взломщику получить секретный ключ, используя подобную схему действий. Но остается одна проблема. Прежде чем в первый раз будет вызвана депгапсН), в массиве Капс1роо1[] должно быть накоплено достаточно случайных данных. Если система какое-то время работала с локальным пользователем, что-то печатавшим на клавиатуре, то проблем нет. Но как быть с автономной системой, которая перегружается автоматически, не имея никакого ввода с клавиатуры или мыши? Это сложная задача. В качестве частичного решения можно потребовать, чтобы после самой первой загрузки оператор какое-то время поработал на клавиатуре и создал на диске файл начальных значений перед перезагрузкой операционной системы. Тогда в ходе перезагрузок будут использоваться случайные данные, переданные в массив Капйзеес! [ ]. Но не сохраняйте непосредственно сам КапДзеес! [ ]. Взломщик, которому удастся заполучить этот файл, сможет определить все результаты депгапсН) после последнего обращения к сЬигпгапсК) прежде, чем этот файл будет создан. Решение этой проблемы заключается в хэшировании массива Капс!зеес![] перед его сохранением, возможно, просто вызовом депгапсИ). При перезагрузке системы вы считываете данные из стартового файла, передаете их сЪигпгапсН), а затем немедленно стираете. К сожалению, это не помешает злоумышленнику добыть файл между перезагрузками и использовать его для предсказания будущих значений функции депгапс! (). Я вижу только одно решение этой проблемы - подождать накопления достаточного количества случайных событий после перезагрузки, прежде чем позволить депгапс! () выдавать результаты.
ГЛАВА 18. Однонаправленные хэш-функции 18.1. Основы Однонаправленная функция, называемая Н(М), применяется к прообразу сообщения произвольной длины М и возвращает значение фиксированной длины к (свертку). к = Н(М), где к имеет длину т. Вычислять значение фиксированной длины по входным данным произвольной длины позволяют многие функции, но однонаправленные хэш-функций обладают следующими дополнительными свойствами, делающими их настоящими однонаправленными [1065]: ✓ Зная А/, легко вычислить к. ✓ Зная /г, трудно определить А/, для которого Н (А/) = к. ✓ Зная А/, трудно определить другое сообщение, М\ для которого Н(М) = Н(МГ). Если Мэллори не боится тяжкого труда, он сможет разрушить безопасность любого протокола, использующего однонаправленную хэш-функцию. Смысл однонаправленных хэш-функций состоит в вычислении уникального идентификатора для сообщения М называемого цифровым отпечатком фп%егрг1п1). Если Алиса подпишет сообщение М с помощью алгоритма цифровой подписи, основанной на подсчете функции #(А/)> а Боб сможет создать другое сообщение А/', отличное от М, но для которого Н(М) = Н(М'), то Боб сможет утверждать, что Алиса подписала А/'. В некоторых приложениях свойства однонаправленности хэш-функции недостаточно, необходимо выполнение еще одного требования, называемого устойчивостью к коллизиям. Его можно сформулировать так: ✓ Трудно найти два случайных сообщения, МиМ', для которых #(А/) = #(АГ). Помните атаку методом «дней рождений», описанный в разделе 7.4? Оно основано на поиске двух случайных сообщений, М и А/', для которых Н{М)-Н{М\), а не на поиске для одного сообщения М другого сообщения А/', для которого Н{М) = Н{МГ). Представленный далее протокол, впервые описанный Гидеоном Ювалом (Сябеоп Уиуа1) [1635], иллюстрирует, как Алиса, в случае невыполнения предыдущего требования, сможет применить вскрытие методом «дней рождений» для обмана Боба. 1) Алиса подготавливает две версии контракта: одну - приемлемую для Боба, и другую - приводящую Боба к банкротству 2) Алиса вносит несколько несущественных модификаций в каждый документ и вычисляет их хэш-функции. (Этими модификациями могут быть вещи, наподобие замены символа ПРОБЕЛА комбинацией ПРОБЕЛ-ЗАБОЙ-ПРОБЕЛ, вставки одного-двух лишних пробелов перед символом возвратом каретки, и т.д. Выполняя или не выполняя по одному такому изменению в каждой из 32 строк, Алиса без труда получает 232 различных документа).
482 Прикладная криптография 3) Алиса сравнивает значения хэш-функции, рассчитанные для каждого изменения в каждом из двух документов, разыскивая пару, для которой эти значения совпадают. (Если выходным результатом хэш-функции является всего лишь 64-разрядное числовое значение, Алиса, скорее всего, сможет найти совпадающую пару, сравнив 232 версий каждого документа). Она восстанавливает оба этих документа, дающих одинаковое значение хэш-функции. 4) Используя протокол, в котором следует подписывать только значение хэш-функции, Алиса получает подписанную Бобом выгодную для него версию контракта. 5) Спустя некоторое время Алиса заменяет подписанный Бобом контракт другим, который он не подписывал. Теперь она имеет все шансы убедить арбитра в том, что Боб подписал именно этот, невыгодный ему, контракт. Как видим, это серьезная проблема. (Одним из советов по ее избежанию является обязательное внесение мелких исправлений в подписываемый документ). На основе успеха атаки «дней рождений» могут быть предприняты и другие, подобные методы вскрытия. Например, взломщик может посылать системе автоматического управления (скажем, установленной на спутнике) случайные строки сообщений со случайными строками подписей. На каком-то этапе подпись под одним из этих случайных сообщений окажется правильной. Взломщик не сможет определить, к каким результатам приведет переданная им команда, но если его целью является только вмешательство в работу спутника, успех будет достигнут. Длина значений однонаправленных хэш-функций Вышеприведенные примеры убеждают, что хэш-функции с 64-разрядными результатами совершенно недостаточны для противодействия вскрытиям по методу «дней рождений». Для этого более подходят однонаправленные хэш-функции, возвращающие 128- разрядные хэш-значения. Ведь при этом, для нахождения двух документов с одинаковыми хэш-значениями, необходимых для взлома методом дня рождения, придется рассчитать хэш-функции для 264 случайных документов; впрочем, и этого недостаточно, если необходимо обеспечить безопасность в течение длительного времени. 1418Т в своем стандарте хэширования 8Н8 (8есиге НазЬ 81апбагб), использует 160-разрядную хэш-функцию. Это еще больше затрудняет вскрытие методом дня рождения, поскольку для этого потребуется вычислить 2 0 значений хэш-функции. Для увеличения разрядности хэш-значений, вычисляемых отдельной хэш-функцией, был предложен следующий метод. 1) С помощью одной из упомянутых в этой книге однонаправленных хэш-функций, для сообщения вычисляется хэш-значение. 2) Хэш-значение конкатенируется с сообщением (именно в таком порядке). 3) Для конкатенации вычисляется новое хэш-значение. 4) Создается хэш-значение большей длины, состоящее из объединения хэш-значения, подсчитанного на этапе 1, и хэш-значения, подсчитанного на этапе 3. 5) Этапы 1-4 повторяются нужное количество раз для обеспечения требуемой длины хэш-значения.
ГЛАВА 18. Однонаправленные хэш-функции 483 Безопасность или небезопасность этого метода никогда не была доказана; тем не менее, у некоторых специалистов описанный выше метод вызывает определенные сомнения [1262, 859]. Обзор однонаправленных хэш-функций Сложно сконструировать функцию, входные данные которой могут иметь произвольный размер, и еще сложнее сделать ее однонаправленной. На практике однонаправленные хэш-функции конструируются на основе сжимающих функций. Созданная таким образом однонаправленная функция возвращает хэш-значение разрядности п при заданных входных данных больших размеров т [1069, 414]. Входными данными сжимающей функции являются блок сообщения и выходные данные от предыдущих блоков текста (см. Рис. 18.1). Выход представляет собой хэш-значение всех блоков, обработанных до текущего момента. То есть, хэш-значение блока А/, равно: к^/{М^кг\) Это хэш-значение вместе со следующим блоком сообщения образуют следующие входные данные сжимающей функции. Хэш-значением всего сообщения является хэш- значение, полученное при обработке последнего блока. Хэшируемый прообраз сообщения должен содержать определенное двоичное представление длины всего сообщения. Такой технический прием позволяет преодолеть потенциальную проблему, связанную с тем обстоятельством, что сообщения различной длины могут иметь одно и то же хэш-значение [1069, 414]. Иногда такой метод называется МБ-усилением [930]. Различные исследователи выдвигали теоретические предположения, что если функция сжатия безопасна, то описанный выше метод хэширования прообраза сообщения с произвольной длиной также безопасен, однако доказательства этого отсутствуют [1138, 1070,414]. Вопросы конструирования однонаправленных хэш-функций описаны во множестве трудов. Более подробно математика, стоящая за этими вопросами, раскрыта в работах [1028, 793, 791, 1138, 1069, 414, 91, 858, 1264]. Возможно, самое исчерпывающее и компетентное описание однонаправленных хэш-функций содержится в тезисах Барта Пренела (ВаП Ргепее!) [1262]. Рис. 18.1. Однонаправленная функция 18.2. 5пе1ти Термин 8пей*и является названием однонаправленной хэш-функции, разработанной Ральфом Мерклом [1070]. (Само название 8пе&и, также как КЪиГи и КЬа6*е, представляют собой имена египетских фараонов). Функция 8пеГги хэширует сообщения произвольной длины, превращая их в 128-разрядные или 256-разрядные значения.
484 Прикладная криптография Сначала сообщение разбивается на порции длиной 512-т разрядов. (Переменная т равна разрядности хэш-значения). Если выходным результатом функции является 128- разрядное значение, то длина порции равна 384 разрядам, а если результатом является 256-разрядное значение, то длина порций - 256 разрядов. Основой алгоритма является функция Я, вычисляющая хэш-значение разрядности т для 512-разрядного входного блока данных. Первые т разрядов выходного значения функции Я являются хэш-значением блока, остальные отбрасываются. Следующий блок добавляется к хэш-значению предыдущего блока и результат снова хэшируется. (К первоначальному блоку добавляется строка нулей). После обработки последнего блока (если сообщение состоит не из целого числа блоков, последний блок дополняется нулями) первые т битов результата конкатенируются с двоичным представлением длины сообщения, и полученная конкатенация хэшируется последний раз. Функция Я основывается на обратимой функции блочного шифрования Е, выполняющей обработку 512-разрядных блоков. Значение функции Я равно последним т разрядам выходного значения функции Е, подвергнутым операции ХОЯ с первыми т разрядами входных даннШх функции Е. Безопасность функции 8пе1ти опирается на функцию Е, которая рандомизирует данные за несколько проходов. Каждый проход состоит из 64 раундов рандомизации. На каждом раунде в качестве входных данных 8-блока используется новый байт данных. Выходное слово 8-блока подвергается операции ХОЯ с двумя соседними словами сообщения. Построение 8-блоков аналогично построению 8-блоков в функции КЬа1те (см. раздел 13.7). Кроме того, выполняется ряд циклических сдвигов. Первоначально предложенная функция 8пе1ги включала в себя два прохода. Криптоанализ 5пе1ги Используя средства дифференциального криптоанализа, Бихам и Шамир доказали, что двухпроходная функция 8пе1ти (с 128-разрядным хэш-значением) не является стойкой [172]. Предложенный ими способ взлома обнаруживает пару сообщений с одинаковыми хэш-значениями за несколько минут работы. Для 128-разрядной функции 8пе1ти четырьмя и менее проходами вышеуказанная атака работает лучше, чем атака «в лоб». Взлом функции 8пеГги методом «дней рождений» требует 264 операций. Дифференциальный криптоанализ может найти пару сообщений с одинаковым хэш-значением, за 228'5 операций для трехпроходной функцией 8пе&и, и за 244'5 операций - для четырехпроходной. Нахождение сообщения, хэш-значение которого совпадает с заданным, с помощью лобовой атаки потребует 2128 операций; при использовании дифференциального криптоанализа для этого потребуется 256 операций в случае трехпроходной, и 288 операций в случае четырехпроходной функции Зпе&и. Хотя Бихам и Шамир не анализировали 256-разрядные хэш-значения, но они провели анализ вплоть до 224-разрядных хэш-значений. В сравнении с вскрытием методом «дней рождений», требующим 2112 операций, с помощью их метода можно найти сообщения с одинаковым хэш-значением за 212,5 операций для двухпроходной функции 8пейп, за 233 операций для трехпроходной функции 8пей*и, и за 281 операций для четырехпроходной функции 8пей*и.
ГЛАВА 18. Однонаправленные хэш-функции 485 В данное время Меркл советует применять функцию Зпе1ти с не менее чем восемью проходами [1073]. Однако с таким количеством проходов вычисление функции Зпейп в значительной степени замедляется, сравнительно с функциями 1УЮ5 или ЗНА. 18.3. Ы-хэш Термином М-хэш назван алгоритм, предложенный в 1990 году исследователями компании №рроп Те1ерЬопе апс! Те1е§гарЬ, причем теми же специалистами, которые создали алгоритм РЕАЬ [1105, 1106]. Алгоритм ЧЯ-хэш использует 128-разрядные блоки сообщения, сложную рандомизирующую функцию, подобную используемой в алгоритме РЕАЬ, и ее результатом является 128-разрядное хэш-значение. Хэш-значение, подсчитываемое для каждого 128-разрядного блока, является функцией блока и хэш-значения предыдущего блока. #0 = 1, где / -случайное начальное значение. Я,=я(М„Ям)©^/©#ы Хэш-значением всего сообщения является хэш-значение последнего блока сообщения. Случайное начальное значение / может быть равным любому числу, определенному пользователем (даже содержащему одни нули). ЕХС: перестановка левой и правой частей V: 1010...1010 двоичное представление (128 разрядов) РЗ: этап обработки V) = о 114, 1II д 11Л, 2Н о 114у 3И о 114,- 4 (Н: обозначает конкатенацию) о : 000... 0 в двоичном представлении (24 разряда) Лд =4*0‘-1 )+к{к =1,2,3,4,Лу* : 8-разрядное значение) Н/ =8 Ш/.Н1-1)© Л//© Я,_| /(,•_ I 128 разрядов 128 разрядов - а» ЕХС I * -*4ч 3> РЗ X Р5 X Р5 Ла Ла Ла Р5 X Р5 X Р5 X Р5 С- ' Л/ 128 разрядов Рис. 18.2. Схема алгоритма И-хэш
486 Прикладная криптография Функция # является достаточно сложной. На Рис. 18.2 приведена общая схема используемого в функции алгоритма. Вначале алгоритм переставляет местами левые и правые 64-разрядные половинки 128-разрядного хэш-значения предыдущего блока Я/_ь а затем выполняет операцию ХОЯ с повторяющимся шаблоном единиц/нулей (как минимум, 128-разрядным) и операцию ХОЯ с текущим блоком сообщения А/,. Далее это значение подвергается последовательной И-этапной обработке (на рисунке А=8). Другим входом для этапа обработки является предыдущее хэш-значение, подвергнутое операции ХОЯ с одной из восьми двоичных констант. Схема одного из этапов обработки показана на Рис. 18.3. Блок сообщения разбивается на четыре 32-разрядных значения. Хэш-значение, полученное на предыдущем шаге, также разбивается на четыре 32-разрядных значения. Работа функции / проиллюстрирована на Рис. 18.4. Функции 80 и 5| совпадают с используемыми в алгоритме РЕАЬ. Яо (а,Ь) = циклический сдвиг влево на два бита ((я+6) тоб 256) (а,Ь) = циклический сдвиг влево на два бита ((а+Ь+1) тоб 256) Выходные данные, полученные на одном этапе обработки, поступают на вход следующего этапа обработки. На последнем этапе обработки над выходным результатом выполняется операция ХОЯ с блоком М1 и Я,_ь после чего следующий блок сообщения готов к хэшированию. Рис. 18.3. Один этап обработки алгоритма N-хэш
ГЛАВА 18. Однонаправленные хэш-функции 487 х / (х,Р) У =50(Х,.Х2) = Ко12((Х{ +Х2) тос1 256) У =51(Х1,Х2) =/?г>г2((Х1+Х2 + 1)шос1256) У (8 разрядов): выход, Х\/Х2 (8 разрядов): входы Ко12(Т): циклический сдвиг влево на 2 разряда 8-разрядных данных Т Рис. 18.4. Функция/ Криптоанализ алгоритма 1М-хэш Берт ден Боер (Вег! с1еп Воег) открыл способ создавать коллизии на раундах обработки алгоритма М-хэш [1262]. Бихам и Шамир применили дифференциальный криптоанализ для вскрытия 6-раундной функции >1-хэш [169, 172]. Выполненный ими в качестве примера взлом (конечно же, работоспособный и в других случаях) применим против любого алгоритма К-хэш для ТУ, делящимся на 3, и эффективнее вскрытия методом «дней рождений» для любого ТУ, меньшего 15. Эта же атака может находить пары сообщений с одинаковым хэш-значением для случаев 12-раундного алгоритма Ы-хэш за 256 операций (для лобового взлома потребуется 264 операций). Алгоритм К-хэш с 15 раундами защищен от методов дифференциального криптоанализа: для вскрытия потребуется 272 операции. Разработчики алгоритма РТ-хэш советуют использовать в нем не менее 8 раундов [1106]. С учетом доказанной нестойкости алгоритмов И-хэш и РЕАЬ (и скорости их работы при использовании 8 раундов) я рекомендую полностью отказаться от этого алгоритма. 18.4. МЭ4 Термином МЭ4 называется однонаправленная хэш-функция, разработанная Роном Ривестом [1318, 1319, 1321]. Аббревиатура МЭ обозначает Мезза§е 01§ез1: (дайджест сообщения); для каждого входного сообщения функция возвращает 128-разрядное хэш- значение, называемое дайджестом сообщения.
488 Прикладная криптография В работе [1319] Ривест указал цели, которые он преследовал при разработке функции 1УЮ4: ✓ Стойкость. Вычислительно невозможно найти два сообщения с одинаковыми хэш- значениями. Никакой метод взлома не должен быть эффективнее лобовой атаки. ✓ Непосредственная безопасность. Безопасность функции 1УГО4 не основывается ни на каких предположениях, например, на допущении о трудоемкости разложения числа на множители. ✓ Скорость. Функция МЭ4 подходит для высокоскоростных программных реализаций. Функция М04 основана на простом наборе поразрядных манипуляций с 32- разрядными операндами. ✓ Простота и компактность. Функция М04 проста, насколько это возможно, и не содержит больших структур данных или сложных программных модулей. ✓ Удобство для микропроцессорной архитектуры. Функция МЭ4 оптимизирована для микропроцессорной архитектуры (особенно для микропроцессоров 1п1е1), для более крупных и быстрых компьютеров можно выполнить необходимые изменения. С тех пор, как функция М04 появилась на свет, Берт ден Боер и Антон Босселаерс (АЩооп Воззе1аегз) достигли успешных результатов криптоанализа последних двух из трех раундов использованного в ней алгоритма обработки [202]. Совершенно независимо от них Ральфу Мерклу удалось взломать первые два раунда [202]. Эли Бихам исследовал применение средств дифференциального криптоанализа для взлома первых двух раундов МЭ4 [159]. Хотя все эти методы взлома не годились для взлома всей функции, Ривест усовершенствовал алгоритм, положенный им в основу функции МЭ4. В результате появилась функция МЭ5. 18.5. М05 Функция МЭ5 представляет собой улучшенную версию функции МЭ4 [1386, 1322]. Хотя функция МЭ5 сложнее функции МЭ4, схемы их работы подобны друг другу, и результатом функции МЭ5 также является 128-разрядное хэш-значение. Описание функции М05 После некоторой первоначальной обработки сообщения функция 1УГО5 обрабатывает входной текст блоками размером 512-разрядов, дополнительно разбитыми на 16 подблоков размером 32 разряда. Выходным результатом функции является набор из четырех 32-разрядных блоков, конкатенированных в единое 128-разрядное хэш-значение. Вначале сообщение дополняется так, чтобы его размер был на 64 разряда меньше числа, кратного 512. Это дополнение включает единицу, за которой, вплоть до конца сообщения, помещается столько нулей, сколько нужно. Затем к результату добавляется 64-разрядное представление размера сообщения (имевшего место до операции дополнения сообщения). Эти два действия служат для обеспечения кратности размера сообщения 512 разрядам (что необходимо для работы остальной части алгоритма), и для гарантированного отличия друг от друга различных сообщений после их дополнения. При этом инициализируются четыре переменные:
ГЛАВА 18. Однонаправленные хэш-функции 489 А = 0x01234567 В = 0х89аЪсс1еГ С = 0хГес1сЪа98 0 = 0x76543210 Они называются переменными сцепления. Теперь опишем, как выполняется основной цикл обработки сообщения алгоритмом 1УГО5. Этот цикл продолжается до исчерпания 512-разрядных блоков сообщения. Четыре указанные выше переменные копируются в новые переменные: А копируется в а, В копируется в Ь, С копируется вс,иО копируется в </. Основной цикл обработки состоит из четырех весьма похожих раундов (у алгоритма МЭ4 было только три раунда). На каждом раунде выполняется 16 различных операций. Каждая операция подсчитывают нелинейную функцию над тремя переменными из набора а, Ь, с и с1. Далее алгоритм прибавляет результат, а также подблок текста и константу, к четвертой переменной. Полученный результат циклически сдвигается вправо на переменное число разрядов и добавляется к одной из переменных а, Ь, с и й. Наконец, результат помещается в одну из переменных а, Ь, си с1 (см. Рис. 18.5 и Рис. 18.6). Существуют четыре нелинейных функции, используемые по одной в каждой операции (для каждого раунда используется своя функция). Р(Х9ГД = (*л У) V ((-пЛ) л 2) С (X, У,I) = (X л 7) V (У а (-12)) Н(ХХ2)=Х® 70 2 /(^,7,2)= 70 (XV (-.2))1 1 Возможно выполнить первые две функции с меньшим числом операций: Р(Х,У,7) = ((7 0 2) д Л) 0 2 С (Л; 7,2) = ((Л 0 У) а 2) © 7- Прим. ред.
490 Прикладная криптография (Здесь 0 обозначает операцию ХОЯ, л - операцию АЫО, V - операцию ОЯ, - операцию N01). Эти функции спроектированы так, что если соответствующие биты X, У и 2 независимы и несмещенны, то каждый бит результата также является независимым и несмещенным. Функция Р - это побитовое условие: если X, то Г, иначе 2. Функция Н - побитовая операция четности. Если Ц1 обозначаемый подблок сообщения (от 0 до 15), а «<з обозначает циклический сдвиг влево на ^ разрядов, то используются следующие четыре операции: РР (а,Ъ,с,с!,Мр5>1д означает а = Ь + {{а + Рф^с^с!) + М^ + /,) «<$) СС(а,Ь,с,с19МрЗ,(д означает а = Ь + ((а + С(Ь,с,с1) + + I,) «<$) НН{а,Ь,с,с(,Мр8^ означает а = Ь + ((а + Н(Ь,с,с[) + + <«з) //(аДсДЛ^уУ,/,) означает а = Ь + ((а + 1(Ь,с,с1) + М) + (,) <«з) Четыре раунда (64 шага) выглядят следующим образом: Раунд 1: РР(а, Ь, с, с1, Л/0, 7, 0хсГ76аа47$) РР(с1, а, 6, с, Л/ь 12, Охе&с1Ы56) РР(с, </, а, 6, Мъ 17, 0х242070Л) 7^(6, с, с1у а, М3, 22, Охс1Ысеее) /^(а, Ь, с, й, М4, 7, 0х/57с0/о/)
ГЛАВА 18. Однонаправленные хэш-функции 491 РР(с1, а, Ь, с, Мь 12, 0x4187с62а) РР(с, с/, а, Ь, М6, 17, 0ха8304613) РР(Ь, с, а, а, Мъ 22, 0х/У469501) РР(а, Ь, с, й, М%, 7, 0x698098^8) РР(с1, а, Ь, с, М>, 12, 0х8М4/7а/) /ГР(с, <7, а, 6, А/ю, 17, 0хЩЬЪЪХ) 67^(6, с, (7, а, А/ц, 22, 0х895а/76е) РР(а, 6, с, </, М12, 7, 0x66901122) а, 6, с, М13, 12, 0х/</987193) /^(с, (7, а, 6, Л/14, 17, 0ха679438е) 67^(6, с, с/, а, Л/15, 22, 0x49640821) Раунд 2: СО (а, 6, с, (7, Л/ь 5, Ох/б 1^2562) 00 (с1, а, 6, с, Л/6, 9, 0хс0406340) (7<7(с, (7, а, 6, Л/1Ь 14, 0х265е5а51) (7(7(6, с, (7, а, Л/0, 20, 0хе9Ь6с1аа) СО {а, 6, с, (7, Л/5, 5, 0х(762/105<7) <7(7 (<7, а, 6, с, А/ю, 9, 0x02441453) (7(7 (с, (7, а, 6, Л/15, 14, 0х(78а1е681) (7(7 (6, с, с/, а, Л/4, 20, 0хе1сВ/Ьс%) СО {а, 6, с, (7, Л/9, 5, 0х21е1а/е6) <7(7 (<7, а, 6, с, Л/14, 9, ОхсЗ3707(76) СТО (с, </, а, 6, А/3, 14, 0х/4с/50</87) (30(6, с, </, а, М8, 20, 0х455а14е</) (7(7 (а, 6, с, (7, Л/13, 5, 0ха9еЗе905) (7(7 ((7, а, 6, с, Л/2, 9, Ох/се/63/8) ОС7 (с, </, а, 6, Мъ 14, 0x676/02Д) (7(7(6, с, (7, а, Л/12, 20, 0х8(72а4с8а) Раунд 3: НН(а, 6, с, </, А/5, 4, 0x^/63942) ##(</, а, 6, с, Л/8, 11, 0x8771/681) НН(с, а, а, 6, Л/ц, 16, 0x6(79(76122)
492 Прикладная криптография НН(Ь9 с, с/, сг, Л/,4, 23, 0х//е5380с) НН(сг, Ь, с, с/, Ми 4, 0хсг46еесг44) НН (с/, а, 6, с, Л/4, 11, 0хАЬ(1ес/а9) НН(с, с/, а,, 6, Л/7, 16, ОХ'/бЬЬАЬбО) НН(Ь, с, с/, а, М10, 23, ОхЬеЪ/ЬсЮ) Я#(а, 6, с, </, М13, 4, 0x289Ыесб) НН(с1, сг, 6, с, Л/0, 11, 0хеаа\21/а) НН(с9 с/, сг, й, А/3, 16, 0хс/4е/3085) ЯЯ(6, с, с/, сг, М6, 23, 0x04881 с/05) ЯЯ(сг, й, с, с/, Л/9, 4, 0хс/9с/4с/039) ЯЯ(с/, сг, 6, с, М12, 11, 0хе6с1Ь99е5) НН(с, с/, сг, 6, Л/15, 16, 0х1/сг27с/8) НН(Ь, с, с/, сг, Л/2, 23, 0хс4сгс5665) Раунд 4: //(сг, 6, с, с/, Л/о, 6, Ох/4292244) //(с/, сг, 6, с, Мъ 10, 0х432сг#97) //(с, с/, сг, 6, Л/м, 15, 0хсг69423сг7) //(6, с, с/, сг, Л/5, 21, 0х/с93сг039) //(сг, 6, с, с/, Л/12, 6, 0х655659сЗ) //(с/, сг, 6, с, Л/3, 10, 0х8/)ссс92) //(с, с/, сг, 6, Л/,о, 15, 0х$г$\1<1) //(6, с, с/, сг, Л/,, 21, 0x85845с/с/1) //(сг, 6, с, с/, Л/8, 6, 0х6/сг87е4/) //(с/, сг, 6, с, Л/15, 10, 0х/е2севе0) //(с, с/, сг, 6, Л/б, 15, ОхсгЗ014314) //(6, с, с/, сг, Л/п, 21, 0х4е0811сг1) //(сг, 6, с, с/, Л/4, 6, 0л/7537^82) //(с/, сг, 6, с, Л/ц, 10, ОхЬсВа/235) //(с, с/, сг, 6, Л/2, 15, 0х2асПс12ЬЬ) II(Ь, с, с/, сг, Л/9, 21, 0хеЬ86сй91) Используемые в алгоритме константы выбирались таким образом: на 1-ом этапе константа /; является целой частью от значения 232 * сг&у (мл (/)), где / измеряется в радианах.
ГЛАВА 18. Однонаправленные хэш-функции 493 После всего этого значения а, Ъ, с \\ с1 добавляются, соответственно, к А, Б, С и И и алгоритм продолжает обработку следующего блока данных. Окончательным результатом служит объединение значений переменных Л, В, С и О. Стойкость МЭ5 Рон Ривест указал на следующие улучшения алгоритма МЭ5 в сравнении с МЭ4 [1322]: ✓ Добавлен четвертый раунд. ✓ На каждом раунде используется уникальная прибавляемая константа. ✓ Функция С на раунде 2 с ((X л У) V (X л 7) V (У л 2)) была заменена функцией ((Ха 7) V (Ул (->2)), что преобразовало функцию С в менее симметричную. ✓ Теперь результат каждого раунда добавляется к результату предыдущего раунда, что обеспечивает более быстрый лавинный эффект. ✓ Порядок использования подблоков сообщения на раундах 2 и 3 был изменен, что сделало внешний вид этих раундов менее похожими друг на друга. ✓ Для ускорения лавинного эффекта значения циклического сдвига влево на каждом раунде оптимизированы. Четыре операции сдвига, используемые на каждом раунде, отличаются от операций, используемых на остальных раундах. Томом Берсоном (Тот Вегзоп) была сделана попытка применения дифференциального криптоанализа для взлома одного из раундов алгоритма МЭ5 [144], но его результаты оказались не эффективными ни для одного из четырех раундов. Более успешная атака ден Боера и Босселаерса привела к обнаружению коллизий в сжимающей функции МЭ5 [203, 1331, 1336]. Сам по себе предложенный ими метод взлома МБ5 не применим в практических приложениях. Этот метод взлома также не влияет и на использование МЭ5 в алгоритмах шифрования, подобных алгоритму Любы-Ракоффа (см. раздел 14.11). Однако успех этого метода взлома означает, что одна из основных целей, преследуемой при разработке алгоритма МЭ5 - создание сжимающей функции, устойчивой к коллизиям, - так и не была достигнута. Хотя и справедливо утверждение, что «по¬ видимому, у сжимающей функции есть слабое место, но на безопасность хэш-функции это практически не влияет» [1336], лично я отношусь к использованию функций МЭ5 с большой осторожностью. 18.6. \Ш2 Термин МЭ2 означает еще одну 128-разрядную однонаправленную хэш-функцию, разработанную Роном Ривестом [801, 1335]. Функция МЭ2 вместе с функцией МЭ5, используется в протоколах РЕМ (см. раздел 24.10). Стойкость функции МЭ2 основывается на случайной перестановке байтов. Эта перестановка байтов фиксирована и зависит от цифр числа п. Идентификаторы 80, 8и 82, • • • > ^255 обозначают перестановки. Для хэширования сообщения М следует выполнить такие шаги: 1) Дополнить сообщения байтами в количестве /; значение / выбирается таким, чтобы размер преобразованного сообщения стал кратным 16-ти байтам. 2) Добавить к сообщению 16 байтов контрольной суммы.
494 Прикладная криптография 3) Инициализировать 48-байтовый блок: Х0, Хи Х2у.., Х41. Первые 16 байтов X заполняются нулями, во вторые 16 байтов X устанавливаются первые 16 байтов сообщения, а третьи 16 байтов X должны быть равны результату операции ХОЯ над первыми и вторыми 16-ю байтами X. 4) Ниже приведена используемая в алгоритме сжимающая функция: ъ = О Еог 2 = 0 Ьо 17 Еог к = 0 Ьо 47 Ъ = Хк ХОК зъ Хк = ъ Ъ в (Ъ + з) тос! 256 5) Установить вторые 16 байтов X во вторые 16 байтов сообщения, и установить третьи 16 байтов X равными результату операции ХОЯ над первыми и вторыми 16 байтами X. Повторить этап 4. Повторять этапы 5 и 4 по очереди для каждых 16 байтов сообщения. 6) Выходным результатом являются первые 16 байтов X. Хотя в алгоритме М^2 слабых мест пока не было найдено (см. [1262]), он работает медленнее большинства других алгоритмов в предлагаемых хэш-функциях. 18.7. Алгоритм 5НА Национальный институт стандартов и технологии N181, вместе с АНБ, разработал алгоритм 8НА (8есиге НазЬ А1§огк11т - алгоритм стойкого хэширования) для его использования вместе со стандартом цифровых подписей Б88, подробно описанном в разделе 20.2 [1154]. (Сам стандарт называется 8Н8 (8есиге НазЬ 31§па1:иге 81апс1агс1), а 8НА - это название алгоритма, используемого в стандарте). В документах Федерального Регистра [539] имеется следующее: Федеральный стандарт обработки информации (Гедега! 1п?огтаИоп Ргосеззтд 81апс1агс1, НРБ) предлагается для использования в Стандарте стойкого хэширования 8Н8. Этот стандарт определяет Алгоритм стойкого хэширования 8НА для использования совместно со Стандартом цифровых подписей й88... Вдобавок, в приложениях, не требующих цифровой подписи, и во всех Федеральных приложениях, в которых требуется алгоритм стойкого хэширования, должен использоваться алгоритм 8НА. Также: Стандарт определяет Алгоритм стойкого хэширования 8НА (Зесиге НазЬ А1допИ1т, требуемый для обеспечения стойкости Алгоритма цифровой подписи ОБА (01дНа181дпа1иге А1допй1т). Для любого входного сообщения с размером, меньшим 264 битов, алгоритм 8НА выдает 160-разрядное значение, называемое дайджестом сообщения. После этого дайджест сообщения становится входным значением для алгоритма ОБА, который вычисляет подпись для сообщения. Подписывание дайджеста вместо всего сообщения часто повышает эффективность процесса обмена информацией, поскольку дайджест сообщения, как правило, намного короче самого сообщения. Вышеуказанный дайджест сообщения должен быть получен верификатором подписей, если принятая им версия сообщения используется в качестве входных данных для алгоритма 8НА. Алгоритм 8НА
ГЛАВА 18. Однонаправленные хэш-функции 495 называется стойким, поскольку он разработан таким образом, что с помощью вычислительных средств невозможно найти сообщение, соответствующее данному дайджесту, или найти два различных сообщения с одинаковыми дайджестами. Любые изменения в передаваемом сообщении с очень высокой вероятностью приведут к изменению дайджеста сообщения, после чего цифровая подпись не пройдет верификации. Принципы, заложенные в основу алгоритма 8НА, аналогичны использованным при проектировании алгоритма расчета дайджеста сообщения в алгоритме М04 профессором Рональдом Л. Ривестом из М1Т [1319]. Работа алгоритма 8НА весьма похожа на работу упомянутого алгоритма. Алгоритм 8НА вычисляет 160-разрядное хэш-значение, т.е. длиннее, чем алгоритм М05. Описание алгоритма 5НА В начале работы алгоритма сообщение дополняется с тем, чтобы его длина стала кратной 512 разрядам. При этом выполняется то же дополнение, что и в алгоритме МЭ5: в начале добавляется 1, а затем нули так, чтобы размер полученного сообщения был на 64 разряда меньше числа, кратного 512, а затем к полученному результату добавляется 64-битовое представление размера исходного сообщения (перед дополнением). Далее инициализируются пять 32-разрядных переменных (в алгоритме МБ5 использовались четыре переменных, но ведь рассматриваемый алгоритм должен выдавать 160-битовое хэш-значение): А = 0x67452301 В = 0хеГсбаЬ89 С = 0х98Ъас1сГе 0 = 0x10325476 Е = 0хсЗб2е1ГО Затем начинается главный цикл обработки алгоритма. В этом цикле алгоритм 8НА обрабатывает сообщение блоками размером 512-разрядов, и цикл продолжается до исчерпания всех блоков сообщения. Вначале пять инициализированных переменных копируются в другие переменные: А в а, ВвЬ, Свс,Овс1иЕве. Главный цикл состоит из четырех раундов, каждый из которых включает по 20 операций (в алгоритме 1УГО5 имеются четыре раунда по 16 операций в каждом). Каждая такая операция состоит из подсчета нелинейной функции над тремя переменными из набора а, 6, с, (7 и е. После выполнения вычислений над результатом выполняются операции сдвига и сложения, аналогичные используемым в алгоритме М05. В алгоритме 8НА используется следующий набор нелинейных функций: /, (Х,У,2) = (X д У) V ((-т^О д 2), для Г от 0 до 19, /, (Х,Г,2) У 0 2, для I от 20 до 39, /, (ЛГ,У,2) = (Xа У) V (Ха 2) V (Уа 2), для 1 от 40 до 59, /( (Х,Г,2) -X 0 Г ® 2, для I от 60 до 79.
496 Прикладная криптография В алгоритме используются следующие четыре константы: Кг = 0х5а827999, для 1; от 0 до 19, К( = 0хвесВеЬаХ, для 1: от 20 до 39, К( = 0х&/1ЬЬсс1с, для 1: от 40 до 59, К( = 0хса62с\с16, для 1 от 60 до 79. (Если вас заинтересовал вопрос, откуда взялись эти числа, то укажем их источник: 0х5а827999 = 21/2/4, 0х6ес19еЬа\=Ъ[а/А, 0хЩЬсс1с = 51/2/4, 0хса62сЫб= Ю'-/4; все умножено на 232). Блок сообщения с помощью приведенного далее алгоритма преобразуется из 16 слов размером в 32 разряда (с М0 по М]5) в 80 слов размером 32 разряда (с Ж0 по Щ9): Ж( = М(, для значений 1: от 0 до 15, Щ = (^_з ® ^-8 ® ® ^-1б) <<:< Ь Для значений I от 16 до 79. (Интересно, что в первоначальном варианте спецификации 8НА не было циклического сдвига влево. Данное изменение «корректирует технический изъян, делающий стандарт менее стойким, чем предполагалось» [1543]. АНБ отказалось уточнить истинную причину изменения). Если 1: обозначает номер операции (от 0 до 79), IV, - подблок номер I дополненного сообщения, а «<у - циклический сдвиг влево на з разрядов, то главный цикл выглядит следующим образом: ГОК I = 0 1:о 79 ТЕМР = (а «< 5) + ?ъ(Ь,с,й) + е + ^ + К* е = й <1 = с с = Ь «< 30 Ь = а а = ТЕМР На Рис. 18.7 представлена схема одной операции. В ней сдвиг переменных выполняет ту же роль, которую в алгоритме МЭ5 выполняет использование разных переменных в разных частях алгоритма. После выполнения всех вышеперечисленных операций значения переменных а, Ь, с, с! и е добавляются, соответственно, к А, В, С, О и Е, и алгоритм переходит к обработке следующего блока данных. Окончательным результат получается конкатенацией значений А, В, С, В и Е.
ГЛАВА 18. Однонаправленные хэш-функции 497 Стойкость 5НА Алгоритм 8НА весьма напоминает алгоритм КГО4, но вычисляет 160-разрядное хэш- значение. Главное изменение состоит в появлении расширяющего преобразования и в добавлении выходного результата предыдущего раунда к следующему с целью достижения большей скорости лавинного эффекта. Рон Ривест опубликовал задачи, которые он пытался решить при проектировании алгоритма МЭ5, а вот разработчики алгоритма 8НА этого не сделали. Ниже приведены улучшения, внесенные Ривестом в алгоритм МЭ5 после МЭ4, и они сравниваются с 8НА: ✓ «Добавлен четвертый раунд.» В алгоритме 8НА сделано то же самое. Однако в 8НА функции/ используемые на четвертом и втором раунде, совпадают. ✓ «На каждом раунде теперь используется уникальная прибавляемая константа.» Алгоритм 8НА придерживается схемы алгоритма МЭ4, повторно используя константы для каждой группы из 20 шагов обработки. ✓ «Функция О на раунде 2, равная ((X лУ)V(Xл2)V(Ул 2)), была заменена функцией ((X д 2) V (У а (-12)), что делает функцию О менее симметричной.» В алгоритме 8НА используется версия функции из МЭ4: ((X лУ)\/(Хл2)\/(У л 2)). ✓ «Результат каждого раунда теперь добавляется к результату предыдущего раунда, что обеспечивает более быстрый лавинный эффект.» Это изменение было сделано и в алгоритме 8НА. Отличие состоит в том, что в 8НА результат добавляется к пятой
498 Прикладная криптография переменной, а не к переменным Ъ, с и с/, уже использованных в функции /(. Это тонкое изменение алгоритма делает невозможным атаку на 8НА методом, предложенным ден Боером и Босселаерсом для МЭ5. ✓ «Порядок использования подблоков сообщения на раундах 2 и 3 был изменен, что сделало внешний вид этих раундов менее похожими друг на друга». Алгоритм 8НА в этом месте работает совершенно иначе, так как в нем используется циклический код исправления ошибок. ✓ «Для ускорения лавинного эффекта значения циклического сдвига влево на каждом раунде оптимизированы. Четыре операции сдвига, используемые на каждом раунде, отличаются от операций, используемых на остальных раундах.» В алгоритме 8НА на каждом раунде используется постоянная величина сдвига. Эта величина сдвига является взаимно простым числом с размером слова, как и в алгоритме М04. Все вышесказанное приводит к такому заключению: алгоритм 8НА, по сути, совпадает с алгоритмом МЭ4, отличаясь наличием расширяющего преобразования, дополнительным раундом обработки и улучшенным лавинным эффектом. Алгоритм М05 - это алгоритм МБ4 с улучшенным хэшированием разрядов, дополнительным раундом обработки и улучшенным лавинным эффектом. Сведения об успешных криптографических атаках на алгоритм 8НА отсутствуют. Так как эта однонаправленная хэш-функция выдает 160-разрядные хэш-значения, она устойчивее к вскрытию методом лобового вскрытия (включая атаку методом «дней рождений»), чем 128-разрядные хэш-функции, рассматриваемые в этой главе. 18.8. ШРЕ-МО Алгоритм ШРЕ-УЮ был разработан для проекта ШРЕ Европейского сообщества [1305] (см. раздел 25.7). Этот алгоритм представляет собой разновидность алгоритма МЭ4, он был разработан с целью противостояния известным методам криптографического вскрытия; алгоритм вычисляет 128-разрядные хэш-значения. В алгоритм ШРЕ-МЭ внесены изменения, касающиеся операций циклического сдвига и порядка слов сообщения. Кроме того, при исполнении алгоритма параллельно работают две его ветви, отличающиеся используемыми константами. После обработки каждого блока результат работы обоих ветвей добавляется к переменным сцепления. Возможно, все это повышает устойчивость алгоритма к попыткам взлома. 18.9. НАУА1. НАУАЬ - это однонаправленная хэш-функция переменной длины [1646]. Функция НАУАЬ является модификацией функции МЭ5. Алгоритм НАУАЬ обрабатывает сообщение блоками размером в 1024 разряда, что в два раза больше, чем в алгоритме МЭ5. В НАУАЬ используется восемь 32-разрядных переменных сцепления, т.е. в два раза больше, чем в алгоритме МЭ5, и переменное число раундов обработки, от трех до пяти (на каждом раунде исполняется 16 шагов). Функция НАУАЬ может выдавать хэш- значения размером в 128, 160, 192, 224 или 256 разрядов.
ГЛАВА 18. Однонаправленные хэш-функции 499 В алгоритме НАУАЬ простые нелинейные функции ЫВ5 заменены сильно нелинейными функциями 7 переменных, каждая из которых удовлетворяет строгому лавинному критерию. На всех раундах применяется одна функция, но на каждом шаге к входным данным применяются различные операции перестановки. Используется новый порядок обработки сообщения, и на каждом шаге (за исключением первого раунда) используется своя прибавляемая константа. Также в алгоритме используются два циклических сдвига. Сердцевиной алгоритма являются такие операции: ТЕМР = ШАЛС,ОЛГ,0) <«7) + (Н «<11) + М[1] [г{/)]+Щ Н = С; О = Е; Р=Е; Е = И; О = С; С = В; В=А ;А = ТЕМР Переменное количество раундов и переменный размер вычисляемого алгоритмом значения означают, что существует 15 версий алгоритма. Атака на алгоритм МЭ5, выполненное ден Боером и Босселаерсом [203], неприменима к алгоритму НАУАЬ из-за наличия в нем операции циклического сдвига Н. 18.10. Другие однонаправленные хэш-функции Еще одной хэш-функцией, предложенной Роном Ривестом, является функция МОЗ. Функция МВЗ имеет ряд недостатков, которые не позволили ей выйти за пределы лаборатории, хотя ее описание недавно было опубликовано в [1335]. Группа исследователей из Университета Ватерлоо предложила однонаправленную хэш- функцию на базе итеративного возведения в степень в поле ОР(2593) [22]. По предложенной в алгоритме схеме обработки сообщение разбивается на блоки размером 593 разряда. Все блоки, начиная с первого, последовательно возводятся в степень. Показатель степени определяется результатом вычислений для предыдущего блока, первый показатель задается с помощью вектора ВИ. Айвэн Дамгард (1уап Эат§&гс1) разработал однонаправленную хэш-функцию, основанную на задаче об укладке ранца (см. раздел 19.2) [414]; эта функция может быть взломана примерно за232 операций [290, 1232, 787]. В качестве основы для построения однонаправленных хэш-функций предлагался и клеточный автомат Стива Вольфрама [1608]. Ранняя реализация [414] соответствующей функции нестойка [1052,404]. Другая однонаправленная хэш-функция, СеНЬазЬ [384, 404], и ее улучшенная версия, БиЬЬазЬ [384,402, 405], также основаны на клеточных автоматах и предназначены для аппаратной реализации. Функция Воо&шзЬ объединила принципы, заложенные в основу функций СеНЬазЬ и МЭ4 [402, 407]. Функция $1ерКл§ЪШр также может быть реализована как хэш-функция [402]. Летом 1991 года Клаус Шнорр (С1аиз БсЬпогг) предложил однонаправленную хэш- функцию, названную РРТ-НазЬ, и основанную на дискретном преобразовании Фурье [1399]. Через несколько месяцев функция была вскрыта двумя независимыми цэуппами [403, 84]. Шнорр предложил новую версию функции РРТ-НазЬ II (при этом предыдущая версия функции была переименована в РРТ-НазЬ I) [1400], которая была взломана через несколько недель [1567]. Шнорр предложил дальнейшие модификации таких функций [1402, 1403], но, в том виде как они представлены, все эти алгоритмы работают намного
500 Прикладная криптография медленнее, чем другие алгоритмы этой главы. Еще одна предложенная хэш-функция, 8Ь2 [1526], является небезопасной [315]. Дополнительную информацию по теории проектирования однонаправленных хэш- функций на базе однонаправленных функций и однонаправленных перестановок можно найти в [412, 1138, 1342]. 18.11. Однонаправленные хэш-функции на базе симметричных блочных алгоритмов В качестве однонаправленных хэш-функций можно также применять симметричные блочные алгоритмы шифрования. Суть в том, что если блочный алгоритм стоек, то и построенная на его основе однонаправленная хэш-функция так же будет стойкой. Самым очевидным методом использования этих алгоритмов является шифрование сообщения в режиме СВС или СРВ с помощью фиксированного ключа и вектора ВИ; при этом хэш-значением будет последний блок шифртекста. Такие методы описаны в различных стандартах, использующих шифрование ОЕ8: на основе режима СВС и СРВ - описаны в работе [1143]; по отдельности на основе СВС - описана в [1145], а на основе СРВ - в [55, 56, 54]. Этот способ не слишком подходит для однонаправленных хэш-функций, однако он будет применен в функциях МАС (см. раздел 18.14) [29]. Более изощренный метод использует в качестве ключа блок сообщения, предыдущее хэш-значение - в качестве входа, а текущее хэш-значение служит выходом. Предлагаемые для практического использования хэш-функции устроены еще сложнее. В них размер блока обычно совпадает с длиной ключа, а размер хэш-значения совпадает с размером блока. Так как большинство блочных алгоритмов вычисляют 64-разрядные значения, спроектирован ряд схем алгоритмов, позволяющих вычислять хэш-значения с размерами, вдвое превышающими размер блока. При условии корректности хэш-функции, безопасность таких схем основана на стойкости используемой в них блочной функции. Однако имеются и исключения из этого правила. Дифференциальный криптоанализ более эффективен при взломе блочных функций, используемых в хэш-функциях, чем при взломе блочных функций, используемых для шифрования: поскольку ключ известен, здесь можно использовать определенные технические ухищрения. Для успеха нужно найти только одну корректную пару, после чего без помех генерировать столько подобранного открытого текста, сколько нужно. Такое направление деятельности обсуждается в работах [1263, 8581313]. Далее приведен обзор различных хэш-функций, описанных в литературе [925, 1465, 1262]. Выводы о возможности их вскрытия предполагают стойкость используемого блочного алгоритма, поэтому лучшим методом вскрытия считается лобовой взлом. Полезной характеристикой хэш-функций, основанных на блочных шифрах, является скорость хэширования, определяемая количеством п-разрядных блоков сообщения («-это размер блока алгоритма), обрабатываемых при шифровании. Чем выше скорость хэширования, тем выше быстродействие алгоритма. (Другое определение этой характеристики приводится в [1262], но приведенное выше определение интуитивно более понятно, поэтому более широко распространено. Такой разнобой в определениях может привести к некоторой путанице).
ГЛАВА 18. Однонаправленные хэш-функции 501 Схемы, в которых длина хэш-значения равна длине блока Ниже приведена общая схема алгоритмов такого типа (см. Рис. 18.8): Н0 - 1Н , где /я - случайное начальное значение Н^ЕЛ(В)®С Где А, В и С могут быть равными либо Мь Ям, (М ® Ям), либо быть константой (возможно равной 0). Н0 - это некоторое случайное начальное число /я. Сообщение разбивается на порции Мь имеющие размер блока, которые далее обрабатываются по отдельности. Кроме того, используется вариант МЭ-усиления, и, возможно, та же операция дополнения сообщения, что и в алгоритмах МЭ5 и 8НА. Рис. 18.8. Обобщенная хэш-функция с размером хэш-значения, равным размеру блока Таблица 18.1. Безопасные хэш-функции с размером хэш-значения, равным размеру блока Н,=ЕН11(М,)®М, Н=Ен ,1(Л//0Я,_1)ФМ<ФЯ,._1 Н1=ЕН1_1(М,)®НЫ®М, н, = еН11(м,®н,_{)®м, н, = еМ:(н1^)®н,_1 Н) = Еи> {М1 0 Ям) 0 М1 ® Ям н^еМ1(н1_1)®м1®^_1 Н\ - Ем, (А/, ФЯМ)ФЯМ Н,=ЕМ:ВНы(М1)®М1 ^=Ем^(Ны)®Н1.1 Н1 = ЕМ'9Нм{М1)®Н1_1 = Ем. ФЯ/1 (Я м) ® М(
502 Прикладная криптография Поскольку три различные переменные, используемые в схеме, могут принимать одно из четырех возможных значений, существует всего 64 варианта схем данного типа. Все эти типы были изучены Бартом Пренелом (ВаП Ргепее1) [1262]. Пятнадцать из них откровенно слабы, так как получаемый с их помощью результат не зависит от одного из входных значений. Тридцать семь типов схем небезопасны по более существенным причинам. В табл. 18.1 перечислены остальные 12 безопасных схем: первые четыре схемы стойки по отношению ко всех атакам (см. Рис. 18.9), а последние 8 типов стойки ко всем атакам, кроме атаки с «фиксированной точкой», о чем, в действительности, не стоит беспокоиться. Я МГ Я 1 Ключ 1 Шифрование Мг | Ключ] Шифрование Ф-ф-*я,. Я; 1 [Кпюч| Шифрование Я. | Ключ| Шифрование и т ) * Рис. 18.9. Четыре безопасных хэш-функции с размером хэш-значения, равным размеру блока Первая из вышеприведенных схем была описана в [1028]. Третья схема была описана в [1555, 1105, 1106] и предлагалась в качестве стандарта 180 [766]. Пятая схема предлагалась Карлом Майером (Саг1 Меуег), но в литературе эту схему обычно называют схемой Дэвиса-Майера [1606, 1607, 434, 1028]. Десятая схема предлагалась в качестве режима хэш-функции для ЬОК1 [273]. Скорость хэширования с помощью первой, второй, третьей, четвертой, пятой и одиннадцатой схем равна 1; у них размер ключа равен размеру блока. Скорость хэширования других схем составляет к/п, где А:-размер ключа. Это означает, что если размер ключа меньше размера блока, то размер блока сообщения может быть равным только размеру ключа. Не рекомендуется, чтобы размер блока сообщения был больше размера ключа, даже если размер ключа алгоритма шифрования больше размера блока. Если блочный алгоритм, подобно ЭЕ8, обладает свойством комплементарности и слабыми ключами, для всех 12 схем существуют дополнительные атаки. Они не слишком опасны, и, практически, не стоят беспокойства. Однако вы можете обезопасить себя, зафиксировав значение второго и третьего битов ключа равными «01» или «10» [1081, 1107]. Конечно же, это уменьшит размер к с 56 разрядов до 54 разрядов (для БЕ8), и уменьшит скорость хэширования. Было показано, что приведенные далее схемы, описанные в литературе, нестойки.
ГЛАВА 18. Однонаправленные хэш-функции 503 Представленная ниже схема [1282] была взломана в [369]: Дэвис (ЭаУ1е5) и Прайс (Рпсе) предложили ее вариант, в котором все сообщение дважды циклически обрабатывается алгоритмом [432, 433]. Предложенный Копперсмитом метод взламывает такую схему даже при небольшой мощности вычислительных средств [369]. В [1606] была показана нестойкость еще одной, приведенной ниже, схемы [432,458]. = Ек/.е//м (Ям) В [1028] была показана нестойкость следующей схемы (с - константа): я, = ес(м{ е ям) е м, е ям Модификация схемы Дэвиса-Майера Метод Дэвиса-Майера был модифицирован Лаем (ЬаО и Мэсси (Маззеу), чтобы обеспечить применение шифра ГОЕА [930, 925]. В шифре ГОЕА используются 64- разрядные блоки и 128-разрядный ключ. Ниже представлена предложенная ими схема: Я0 = /я , где 1Н - случайное начальное значение Я, = Я*м.*/(Ям) Эта функция хэширует сообщение 64-разрядными блоками и вычисляет 64-разрядное значение (см. Рис. 18.10). Неизвестно лучшей атаки на эту схему, чем лобовая. Шифрование | Ключ | 1 \ Рис. 18.10. Модификация схемы Дэвиса-Майера Схема Пренела-Босселаерса-Говарца-Вандевалле Эта хэш-функция (Ргепее1-Во55е1аег5-Ооуаег15-Уапс1е\уа11е) впервые была предложена в [1266]; функция вычисляет хэш-значение, размер которого вдвое превышает размер блока алгоритма шифрования: при 64-разрядном алгоритме получается 128-разрядное хэш-значение. При использовании 64-разрядного блочного алгоритма схема выдает два 64-разрядных хэш-значения, Сх и Я/5 объединение которых и дает 128-разрядное хэш-значение. У большинства блочных алгоритмов размер блока равен 64 разрядам. Два соседних блока, Д и /?„ каждый из которых имеет размер блока, хэшируются совместно. С0 = 1С, где /с - случайное начальное значение
504 Прикладная криптография Н0 - 1Н , где 1Н - другое случайное начальное значение с, = ^.,©ям(Я, ®см)®я, ©С,_, ® Я,_, Н1 = ЕЦ®Л, (#/-1 ® С,-|)® Ц © С,-1 ® Я/-1 Лай продемонстрировал, что эта схема, в ряде случаев, элементарно вскрывается методом «дней рождений» [925, 926]. Пренел [1262] и Копперсмит [372] также успешно взломали эту схему. Не используйте ее. Схема Кискате-Гиро Схема Кискате-Гиро (Рш5яиа1ег-01гаи1{) впервые была предложена в [1279]; она генерирует хэш-значение, размер которого вдвое превышает размер блока. Скорость хэширования по схеме Кискате-Гиро равна 1. В схеме используются два хэш-значения С,- и Я,-, и в ней совместно хэшируется два блока 4 и С0=1о. гДе ~ случайное начальное значение Н0-1н , где 1Н - другое случайное начальное значение Щ - Еь. 0^ )0 0 Я,., о. = Ек. (Щ 0 4 )0 О/., 0 ЯЬ1 0 4 Эта схема впервые появилась в 1989 году в проекте стандарта 180 [764], но впоследствии была заменена более поздней версией [765]. Проблемы безопасности этой схемы были описаны в [1107, 925, 1262, 372]. (В действительности, версия, описанная в материалах конференции, была усовершенствована после ее взлома сразу на конференции, где она была представлена). В ряде случаев сложность вскрытия методом «дней рождений» равна 239 операций, а не 264, как в случае лобового вскрытия. Не используйте эту схему. ЮК1 с удвоенным блоком Алгоритм ШК1 представляет собой модификацию алгоритма Кискате-Гиро, специально выполненную для обеспечения работы с ЬОК1 [273]. В алгоритме используются те же параметры, что и у Кискате-Гиро. О о - 1с, где 10 - случайное начальное значение Н0-1н , где 1Н - другое случайное начальное значение ^ = Я®См(С<-,ФЛ')Ф*<ФЯ<-1 С, = (Щ © 4)©СМ 0 Я,., Ф Ц Я,- =^00,.,
ГЛАВА 18. Однонаправленные хэш-функции 505 Опять-таки, в некоторых случаях вскрытие этой схемы методом «дней рождений» оказывается тривиальным [925, 926, 1262, 372, 736]. Не используйте эту схему. Параллельная схема Дэвиса-Майера Эта схема представляет собой еще одну попытку создания алгоритма со скоростью хэширования 1, который вычисляет хэш-значение с размером, вдвое превышающим размер блока [736]. С0 = 1а, где 1С - случайное начальное значение Н0 = 1Н , где 1Н - другое случайное начальное значение = Ецъщ (^/-1 ® А) ® А ® ^1-1 Н1=ЕЬ1(Н1_\®К1)^К1ФН1.1 К несчастью, эта схема так же нестойка [928, 861]. Оказывается, что хэш-функция с удвоенным размером результата и со скоростью хэширования, равной 1, не может быть более безопасной, чем функция Дэвиса-Майера [861]. Схемы Дэвиса-Майера типа «тандем» и «в ряд» Эти схемы представляют собой еще один способ обхода ограничений, присущих блочным шифрам с 64-разрядным ключом, - это использование алгоритмов, подобных ГОЕА (см. раздел 13.9), с 64-разрядным блоком и 128-разрядным ключом. Представленные далее две схемы выдают 128-разрядное хэш-значение, а их скорость хэширования равна 1/2 [930, 925]. Шифрование /-1 1 | Ключ | К, к Ь~М/ 1 Ключ | /Т'4 С1~ 1 ^ * * Шифрование а Рис. 18.11. Тандемная схема Дэвиса-Майера В первой схеме две модифицированные функции Дэвиса-Майера работают в тандеме (см. Рис. 18.11). О0 = /0, где 10 _ случайное начальное значение Н0 = 1Н , где 1Н - другое случайное начальное значение Щ = Ес,_[М,(Н,^)
506 Прикладная криптография е; =(?,_, ®ем.№.(Сы) Я,=^0Я(., Следующая схеме используются две модифицированные функции, работающие «в ряд» (аЬгеаМ) (см. Рис. 18.12). О0 = /0 5 где 1а - случайное начальное значение Но = 1Н , где 1Н - другое случайное начальное значение С7, = С7,_, 0 Ем.>Н'_х (-.С;.,) Я,- = Я,., © Е0._иМ. (Я^_,) В обеих схемах два 64-разрядных значения С?,- и объединяются, образуя единое 128- разрядное хэш-значение. Насколько известно, стойкость 128-разрядной хэш-функции этих алгоритмов идеальна: для обнаружения сообщения с заданным хэш-значением требуется 2128 попыток, а для нахождения двух случайных сообщений с одинаковым хэш-значением - 264 попыток. При этом предполагается, что лучшим методом вскрытия применяемого блочного алгоритма является лобовой взлом. МЭС-2 и МЭС-4 Схемы МОС-2 и МОС-4 были разработаны специалистами 1ВМ [1081, 1079]. В настоящее время изучается вопрос использования схемы МОС-2, иногда называемой схемой Майера-Шиллинга (Меуег-8сЫШп§), в качестве стандарта АИ81 и 180 [61, 765]; схема МОС-2 была предложена в [762]. Схема МОС-4 была разработана для проекта КЛРЕ [1305] (см. раздел 25.7). В спецификации МОС-4 в качестве блочной функции используется алгоритм ОЕ8, хотя теоретически здесь может быть использован любой блочный алгоритм. Скорость хэширования МОС-2 равна 1/2, размер хэш-значения этой функции в два раза больше размера блока. Схема МО-4 представлена на Рис. 18.13. Схема МОС-4 также выдает хэш-значение размером вдвое больше размера блока, а ее скорость хэширования равна 1/4 (см. Рис. 18.14).
ГЛАВА 18. Однонаправленные хэш-функции 507 Эти схемы были подвергнуты криптоанализу в [925, 1262]. С учетом возможностей сегодняшней вычислительной техники они безопасны, но их запас прочности не так велик, как хотелось бы разработчикам алгоритма. Устойчивость описанных схем к дифференциальному криптоанализу при использовании ЭЕ8 в качестве блочного алгоритма была рассмотрена в [1262]. Схемы МЭС-2 и МБС-4 запатентованы [223]. Хэш-функция АК Хэш-функция АЯ была разработана компанией А1§оп1Ьгшс ЯезеагсЬ, Ыб, а затем его описание было распространено организацией 180 для использования только в качестве информационных материалов [767]. В основе схемы АЯ лежит разновидность блочного
508 Прикладная криптография шифрования (в упомянутой статье использовано шифрование ЭЕ8) в режиме СВС. В схеме АЯ над двумя последними блоками шифртекста и константой выполняется операция ХОЯ, результат помещается в текущий блок сообщения и далее шифруется алгоритмом. Хэш-значение равно последним двум вычисленным блокам шифртекста. Сообщение обрабатывается дважды с использованием двух различных ключей, поэтому скорость хэширования равна 1/2. Первый ключ равен 0x0000000000000000, второй равен 0х2а41522Г4446502а, а значение константы с равно 0х0123456789аЬсбеГ. Результат сжимается до одного 128-разрядного хэш-значения. Подробности работы алгоритма приведены в [750]. Я, = Ек (Л/, © 0 Я;_2 0 с) © А/, Эта схема выглядит интересной, но является нестойкой. После некоторой существенной предварительной обработки для нее становится возможным легко вычислять коллизии [416]. Функция хэширования ГОСТ Эта хэш-функция разработана в России и определена в стандарте ГОСТ Р 34.11-94 [657]. В функции используется блочный алгоритм ГОСТ (см. раздел 14.1), хотя теоретически может использоваться любой блочный алгоритм с 64-разрядным блоком и 256-разрядным ключом. Функция вычисляет 256-разрядное хэш-значение. Шаговая сжимающая функция, #,=/(Л4 #м) (оба операнда - 256-разрядные величины), определяется следующим образом: ✓ С использованием операции линейного смешивания величин М» Ям и некоторых констант генерируются четыре ключа шифрования ГОСТ. ✓ Каждый ключ используется для шифрования различных 64 разрядов #,_1 в режиме ЕСВ. Полученные 256 разрядов сохраняются во временной переменной 5. ✓ Я, является сложной, хотя и линейной функцией 5, Мг и Ям. В алгоритме хэш-значение последнего блока сообщения не является его окончательным хэш-значением. В действительности сцепляются три переменных: #п - это хэш-значение последнего блока, 2 - это сумма по модулю 256 всех блоков сообщения, и Ь - длина сообщения. Окончательное хэш-значение вычисляется с использованием этих переменных и дополненного последнего блока М'\ Я = /(20М’,/(1,/(М’,ЯЛ))) Документация по этому алгоритму немного запутанная (и на русском языке), но думаю, что я все правильно понял. Во всяком случае, эта хэш-функция определена как часть российского Стандарта цифровой подписи (см. раздел 20.3). Другие схемы Ральф Меркл предложил схему, использующую алгоритм ЭЕ8, но она работает слишком медленно - обрабатывает только семь разрядов сообщения за одну итерацию, а каждая итерация состоит из двух шифрований ОЕ8 [1065, 1069]. Другая схема, предложенная в [1642, 1645] нестойка [1267], хотя когда-то предлагалась в качестве стандарта 180.
ГЛАВА 18. Однонаправленные хэш-функции 509 18.12. Использование алгоритмов с открытым ключом Алгоритм шифрования с открытым ключом в режиме сцепления блоков также может быть использован в качестве однонаправленной хэш-функции. Если после применения алгоритма вы уничтожите закрытый ключ, то взломать хэш-функцию будет так же трудно, как и прочитать сообщение без закрытого ключа. Вот пример, использующий алгоритм Я8А. Если М - это хэшируемое сообщение, п - произведение двух простых чисел р и д, а е - другое большое число, взаимно простое с (р - 1) (д - 1), то хэш-функция Я (М) определяется следующим образом: Н(М) = Ме тоб п Еще проще использовать единственное сильное простое число в качестве модуля р. Тогда: Н(М) = Ме шоб р Вскрытие этого алгоритма, возможно, так же затруднительно, как и нахождение дискретного логарифма е. Но проблема у него в том, что он намного медленнее, чем другие, обсуждаемые здесь алгоритмы. По этой причине я не советую его использовать. 18.13. Выбор однонаправленной хэш-функиии Лучшими хэш-функциями представляются 8НА, М05 и схемы, основанные на блочных шифрах. Другие функции, в действительности, не были исследованы в полной мере. Я считаю лучшей функцией 8НА. Хэш-значение этой функции имеет больший размер, чем у МЭ5, она вычисляется быстрее, чем многие схемы с блочными шифрами, и разработана АНБ. Несмотря на то, что АНБ не публикует все свои результаты, ее криптоаналитические возможности вызывают доверие. В табл. 18.2 для сравнения приведены временные параметры работы некоторых хэш- функций. Эти параметры имеют чисто ознакомительный характер. Таблица 18.2. Скорости шифрования некоторых хэш-функций на компьютере 14868Х/33 МГц Алгоритм Длина хэш-значения Скорость хэширования (Кбайт/с) Схема Дэвиса-Майера «в ряд» (с ШЕА) 128 22 Схема Дэвиса-Майера (с ОЕ8) 64 9 Хэш-функция ГОСТ 256 11 НАУАЬ (3 прохода) Переменная 168 НАУАЬ (4 прохода) Переменная 118 НАУАЬ (5 проходов) Переменная 95
510 Прикладная криптография Алгоритм Длина хэш-значения Скорость хэширования (Кбайт/с) МЭ2 128 23 МБ4 128 236 КГО5 128 174 К-хэш (12 раундов) 128 29 ТМ-хэш (15 раундов) 128 24 МРЕ-МО 128 182 5НА 160 75 ЗпегГи (4 прохода) 128 48 Зпегйд (8 проходов) 128 23 18.14. Коды проверки подлинности сообщения Код проверки подлинности сообщения, или МАС (Мезза^е Аийюпбсабоп Собе, русский термин - имитовставка) - это зависящая от ключа однонаправленная хэш-функция. Коды МАС обладают свойствами, совпадающими с рассмотренными ранее хэш- функциями, но, кроме того, коды МАС включают ключ. Только владелец идентичного ключа сможет верифицировать хэш-значение. Коды МАС весьма полезны, когда есть потребность в аутентификации, но не нужна излишняя секретность. Коды МАС могут быть использованы для аутентификации файлов, которыми обмениваются пользователи. Также они могут быть использованы одним пользователем для проверки, не изменились ли его файлы, в том числе программой-вирусом. Пользователь может вычислить код МАС своих файлов и сохранить эти коды в таблице. Если пользователь воспользуется вместо кода МАС однонаправленной хэш-функцией, то программа-вирус может вычислить новые хэш-значения после заражения файлов и заменить сохраненные в таблице значения. При использовании кода МАС вирус не сможет этого сделать, так как программе-вирусу неизвестен ключ. Простым способом преобразования однонаправленной хэш-функции в МАС является шифрование хэш-значения симметричным алгоритмом. Любой код МАС может быть преобразован в однонаправленную хэш-функцию с помощью раскрытия ключа. СВС-МАС Простейшим способом создания зависящей от ключа однонаправленной хэш-функции является шифрование сообщения блочным алгоритмом в режимах СВС или СРВ. Хэш- значением является последний блок, зашифрованный в режиме СВС или СРВ. Метод СВС специфицирован в стандартах АЫ81 Х9.9 [54], АЫ81 Х9.19 [56], 180 8731-1 [759], 180 9797 [763] и австралийском стандарте [1496]. Эту схему можно вскрыть средствами дифференциальный криптоанализа, если в качестве блочного алгоритма используется БЕ8 с уменьшенным числом раундов, или алгоритм РЕАЬ [1197].
ГЛАВА 18. Однонаправленные хэш-функции 511 С безопасностью этого метода связана потенциальная проблема, состоящая в том, что получатель сообщения должен знать ключ. Дело в том, что этот же ключ позволит получателю генерировать сообщения с тем же хэш-значением, что и у присланного сообщения, если он выполнит процедуру шифрования в обратном направлении. Алгоритм МАА Алгоритм МАА (Мезза^е Аи1Ьепбса1ог А1§огКЬт - алгоритм аутентификации сообщения) является стандартом 180 [760]. Он выдает 32-разрядное хэш-значение и сконструирован специально для мэйнфреймов с быстрыми командами умножения [428]. V =У <« 1 г - V Ф ту х = ((((е + У) тос* 232 ) VА л С) * (х ® М,)) тоб 232 -1 у = ((((в + х) тоб 232) V В л Я) * (у 0 М,)) тоб 232 -2 Эти действия циклически выполняются для каждого блока сообщения Мх, а результирующее хэш-значение получается выполнением операции ХОЯ над х и у. Переменные V и с зависят от ключа, а переменные А, В, С и 7) являются константами. Быть может, этот алгоритм и имеет широкое распространение, но я не верю в его достаточную безопасность. Алгоритм был разработан очень давно и не отличается сложностью. Двунаправленный МАС Этот код МАС выдает хэш-значение вдвое большей разрядности, чем блок алгоритма [978]. Вначале обработки сообщения алгоритм вычисляет код СВС-МАС. Затем код СВС-МАС сообщения вычисляется второй раз, причем с обратным порядком блоков. Двунаправленный МАС, по сути, представляет собой объединение этих двух значений. К сожалению, описанная схема нестойка [1097]. Методы Джунемана Этот код МАС также называют квадратичным конгруэнтным кодом обнаружения манипуляций (Оиабгабс Соп§гиепба1 Машри1абоп Эе^есбоп Собе, 0СМЭС) [792, 789]. Вначале сообщение разбивается на /^-разрядные блоки. Затем вычисляются: Н() = 1н > гДе 1н~ секретный ключ Я, = (Ям + А/,)2 тоб р где р - простое число, меньшее 2т-1, а символ «+» обозначает целочисленное сложение. Джунеман (Зиепетап) предлагает для использования такие значения: п = 16 и р = 231 -1. В [792] Джунеман также предложил, чтобы Н{ использовался в качестве дополнитель¬ ного ключа, а реальное сообщение начиналось бы с Я2.
512 Прикладная криптография Из-за множества атак, подобных атаке «дней рождений», выполненных в сотрудничестве с Доном Копперсмитом, Джунеман предложил вычислять код ОСМОС четыре раза, используя результат одной итерации в качестве ВИ для следующей итерации; полученные результаты конкатенируются в 128-разрядное хэш-значение [793]. В дальнейшем эта идея была усовершенствована за счет параллельного выполнения четырех итераций с перекрестными связями между ними [790, 791]. Такая схема была взломана Копперсмитом [376]. В другом варианте [432, 434] операция сложения заменена операцией ХОК, и использованы блоки сообщения, намного меньшие р. Кроме того, был определен блок Н0, что превратило алгоритм в однонаправленную бесключевую хэш-функцию. После того, как эта схема была вскрыта [612], она была усовершенствована для использования в качестве части проекта Еигореап Ореп 8Ьор 1п1огта1;юп-Те1еТги51; [1221], процитирована в СС1ТТ Х.509 [304] и включена в стандарт 180 10118 [764, 765]. К сожалению, Копперсмит взломал и эту схему [376]. В ряде исследований изучалась возможность использовать отличные от 2 основания экспоненты [603], но ни одно не оказалось перспективным. МРЕ-МАС Алгоритм К1РЕ-МАС был изобретен Бартом Пренелом [1262] и использован в проекте ИРЕ [1305] (см. раздел 18.8). Этот алгоритм основан на стандарте 180 9797 [763] и использует ОЕ8 в качестве функции блочного шифрования. Существуют два варианта алгоритма ИРЕ-МАС: первый использует обычный ОЕ8 и называется НРЕ-МАС1, а второй использует для усиления безопасности тройной ЭЕ8 и называется ИРЕ-МАСЗ. Алгоритм ИРЕ-МАС 1 использует одно шифрование ЭЕ8 на 64-разрядный блок сообщения, а ИРЕ-МАСЗ - три шифрования. Алгоритм включает три части. Вначале сообщение расширяется с тем, чтобы его длина стала кратна 64 разрядам. Затем расширенное сообщение разбивается на 64-разрядные блоки. Эти блоки с помощью сжимающей функции, управляемой секретным ключом, хэшируются в один блок. На данном этапе используются алгоритмы либо ЭЕ8, либо тройной ЭЕ8. Наконец, выходной результат этой функции сжатия подвергается еще одному ОЕ8-шифрованию с новым ключом, производным от ключа сжатия. Подробности можно найти в [1305]. I ВС-хэш Термин ШС-хэш означает еще один код МАС, используемый в проекте ИРЕ [1305] (см. раздел 18.8). Код 1ВС-хэш интересен по причине его доказанной оценки стойкости; вероятность успешного вскрытия алгоритма 1ВС-хэш может быть оценена количественно. К сожалению, при использовании 1ВС-хэш каждое сообщение должно хэшироваться новым ключом. Выбранный уровень безопасности ограничивает максимальный размер хэшируемого сообщения, чего не делает ни одна функция из рассмотренных в этой главе. С учетом этих соображений в отчете ИРЕ рекомендуется использование 1ВС-хэш только для длинных, редко посылаемых сообщений. Сердцевиной функции является такая операция: А/ = ((М той р) + у) той 2п
ГЛАВА 18. Однонаправленные хэш-функции 513 Секретный ключ представляет собой пару р и V, где р - «-битовое простое число, а V - случайное число, меньшее 2". Значения М, вычисляются с помощью строго заданной процедуры дополнения блока. Вероятность потери однонаправленности функции, а также ее устойчивость к коллизиям, может быть оценена количественно, и пользователи, меняя параметры, могут выбрать нужный уровень безопасности. МАС на основе однонаправленной хэш-функции В качестве кода МАС может быть использована и однонаправленная хэш-функция [1537]. Пусть Алиса и Боб используют общий ключ К, и Алиса хочет отправить Бобу МАС для сообщения М. Алиса конкатенирует К и Л/, и вычисляет однонаправленную хэш-функцию полученного объединения: Н(К, М). Полученное хэш-значение и является кодом МАС. Так как Боб знает ключ К, он сможет воспроизвести результат Алисы, а Мэллори, не зная ключ К, не сможет это сделать. При использовании совместно с методами МО-усиления описанный выше способ вполне работоспособен, но в нем имеются серьезные проблемы. Мэллори всегда может добавить к концу сообщения новые блоки и вычислить правильный код МАС. Если к началу сообщения добавить его длину, такое вскрытие может быть предотвращено, но Пренел выразил сомнение в безопасности такой схемы [1265]. Эффективнее будет добавлять к концу сообщения ключ Н (М, К), но при этом также возникают проблемы [1265]. Если Н - однонаправленная функция, не стойкая к коллизиям, Мэллори сможет подделывать сообщения. Еще лучше использовать Я(Я, А/, К) или Н{Ки М, К2), где К\ и К2 различны [1537]. Однако Пренел высказывает сомнения в эффективности и этого подхода. [1265]. Безопасными кажутся следующие конструкции: Н(Ки Н{КЪМ)) Н(К, Н(К,Щ Н(К, р, А/, К)), где р дополняет К до полного блока сообщения. Наилучшим подходом является объединение с каждым блоком сообщения, по крайней мере, 64 разрядов ключа. Это делает однонаправленную функцию менее эффективной, так как уменьшаются размеры блоков сообщения, но она становится намного надежнее [1265]. Можно также использовать однонаправленную хэш-функцию и симметричный алгоритм. Сначала схэшируйте файл, потом зашифруйте полученное хэш-значение. Это безопаснее, чем сначала шифровать файл, а затем хэшировать зашифрованный файл, но эта схема чувствительна к той же атаке, что и подход, использующий Я(А/, К) [1265]. МАС на основе потокового шифра В этой схеме МАС используются потоковые шифры (см. Рис. 18.15) [932]. Криптографически стойкий генератор псевдослучайных двоичных значений (КСГПСЧ) демультиплексирует поток сообщения на два подпотока. Если на выходе генератора появляется единица, то текущий бит сообщения /«, отправляется в первый подпоток, если ноль, то /и,- отправляется во второй подпоток. Каждый подпоток отправляется на свой РСЛОС (раздел 16.2). Выходом функции МАС является конечное состояние обоих регистров.
514 Прикладная криптография К сожалению, этот метод нестоек по отношению к небольшим изменениям в сообщении [1523]. Например, если изменить последний бит сообщения, то для создания поддельного кода МАС нужно будет изменить только 2 разряда соответствующего кода МАС; это может быть выполнено с заметными шансами на успех. Автор предлагает более безопасный и более сложный вариант алгоритма. Рис. 18.15. Код МАС с использованием потокового шифра
ГЛАВА 19. Алгоритмы с открытым ключом 19.1. Основы Концепция криптографии с открытым ключом была предложена Уитфилдом Диффи (\УЫШе1с1 ЭИГю) и Мартином Хеллманом (Магйп НеПшап), и, независимо, Ральфом Мерклом (Яа1рЬ Мегк1е). Основным пунктом концепции было предложение использо¬ вать ключи парами, состоящими из ключа зашифрования и ключа расшифрования, которые невозможно вычислить один из другого (см. раздел 2.5). Впервые эту идею Диффи и Хеллман представили на Национальной компьютерной конференции (На1юпа1 Сотри1ег СопГегепсе) 1976 года [495], а через несколько месяцев в печати появилась их основополагающая работа Этесбопз т Сгур1о§гарЬу» (Новые направления в криптографии) [496]. (Крайняя медлительность процесса публикации стала причиной, по которой первая работа Меркла в этой сфере появилась только в 1978 году [1064]). С 1976 года было создано множество криптографических алгоритмов, использующих концепцию открытых ключей. Многие из них не являются стойкими, а многие стойкие алгоритмы очень часто непригодны для практической реализации, поскольку в них либо используется слишком большой ключ, либо размер полученного с их помощью шифртекста намного превышает размер открытого текста. И только весьма небольшая часть указанных алгоритмов являются и стойкими, и пригодными для практического использования. Как правило, эти алгоритмы основываются на решении одной из трудных математических задач, рассмотренных в разделе 11.2. Некоторые из этих безопасных и практичных алгоритмов пригодны только для решения ограниченной задачи распределения ключей шифрования, другие обеспечивают как шифрование, так и распределение ключей, а третьи полезны только для создания цифровых подписей. Известны всего лишь три алгоритма, которые предоставляют достаточные возможности, как для шифрования текста, так и для его цифровой подписи: К5А, Эль-Гамаля и Рабина. Однако все эти алгоритмы работают достаточно медленно, зашифровывая и расшифровывая данные значительно медленнее, чем симметричные алгоритмы. В результате они очень часто непригодны для шифрования больших объемов данных. Для решения проблем со скоростью работы алгоритмов с открытым ключом можно применить гибридные криптосистемы (см. раздел 2.5), в которых для шифрования сообщения используется симметричный алгоритм со случайным сеансовым ключом, для шифрования которого используется алгоритм с открытым ключом. Безопасность алгоритмов с открытым ключом Поскольку открытый ключ, применяемый в описываемых алгоритмах, общедоступен, криптоаналитики всегда могут использовать его для своих целей, выбрав несколько сообщений для шифрования. Это означает, что криптоаналитик, имея в своем распоряжении шифртекст С = ЕК(Р), может попробовать угадать значение Р и легко проверить свою догадку. Если количество возможных открытых текстов настолько мало, что делает возможным поиск методом полного перебора вариантов, такой метод вскрытия становится серьезной проблемой. Однако указанную проблему легко можно
516 Прикладная криптография решить, дополняя сообщения строкой случайных битов. Такое дополнение приводит к тому, что идентичным открытым текстам будут соответствовать различные шифртексты. (Подробнее этот способ описан в разделе 23.15). Дополнение сообщения становится особенно важным, если алгоритм с открытым ключом используется для шифрования сеансового ключа. Ведь в этом случае Ева может создать базу данных всех теоретически возможных сеансовых ключей, зашифрованных открытым ключом Боба. Естественно, это потребует больших затрат времени и памяти компьютера, но лобовой взлом разрешенного к экспорту1 40-битового ключа или 56- битового ключа БЕ8 займет намного меньше этих ресурсов, чем взлом открытого ключа Боба. Как только Ева создаст такую базу данных, она сможет выявить ключ Боба и далее без проблем читать его почту. Алгоритмы с открытым ключом проектируются с обеспечением их стойкости к атакам на основе подобранного открытого текста. Стойкость такого рода алгоритмов основывается как на сложности вычисления закрытого ключа по открытому ключу, так и на сложности получения открытого текста по шифртексту. Однако большинство алгоритмов с открытым ключом особенно нестойки к атакам на основе подобранного шифртекста (см. раздел 1.1). Если в криптосистеме для цифровой подписи применяется операция, обратная шифрованию, то атаки указанного выше типа невозможно предотвратить, пока для шифрования и цифровых подписей не используются разные ключи. Следовательно, важно рассматривать криптосистему как единое целое, а не как совокуп¬ ность отдельных частей. Хорошие протоколы, основанные на открытых ключах, должны обеспечивать невозможность дешифровки ни одного сообщения, генерированного любой из переговаривающихся сторон; хорошим примером являются протоколы доказательства подлинности (см. раздел 5.2). 19.2. Алгоритмы на основе задачи об укладке раниа Ранцевый алгоритм, разработанный Ральфом Мерклом и Мартином Хеллманом [713, 1074], стал первым алгоритмом шифрования с открытым ключом широкого назначения. Вначале алгоритм обеспечивал только шифрование сообщений, но, позднее, Ади Шамир модифици¬ ровал соответствующую криптосистему для поддержки средств цифровой подписи [1413]. Безопасность ранцевых алгоритмов опирается на известную математическую задачу об укладке ранца (рюкзака), относящуюся к числу ^-полных задач. Впоследствии было обнаружено, что этот алгоритм нестоек, однако его стоит изучить, чтобы продемонстри¬ ровать возможность применения ^-полной задачи в криптографии с открытым ключом. Проблема укладки ранца формулируется просто. Дано множество предметов различного веса; спрашивается, можно ли положить некоторые из этих предметов в ранец так, чтобы его вес стал равен определенному значению? Более формально задача формулируется так: дан набор значений Ми М2,..., Мп и суммарное значение З, требуется вычислить значения Ь„ такие что: 8 = Ь} М} +Ъ2 М2 + ... +Ьп Мп 1 Из США. Правда, сейчас экспортные ограничения серьезно пересмотрены. - Прим. ред.
ГЛАВА 19. Алгоритмы с открытым ключом 517 Здесь б,- может быть либо нулем, либо единицей. Значение 6, = 1 означает, что предмет / кладут в рюкзак, а = 0 - не кладут. Пусть, например, веса предметов имеют значения 1, 5, 6, 11, 14 и 20. При этом вы можете упаковать рюкзак так, чтобы его вес стал равен 22, использовав предметы весом 5, 6 и 11. Невозможно упаковать рюкзак так, чтобы его вес стал равен 24. Время, необходимое для решения этой проблемы, в общем случае возрастает как экспонен¬ циальная функция от количества предметов в куче. В основе алгоритма, предложенного Мерклом и Хеллманом, лежит идея шифрования сообщения на основе решения серии задач укладки ранца. Предметы из кучи выбира¬ ются с помощью блока открытого текста, длина которого (в битах) равна количеству предметов в куче. При этом биты открытого текста соответствуют значениям Ь, а шифртекст является полученным суммарным весом. Пример текста, зашифрованного с помощью задачи укладки ранца, показан на Рис. 19.1. Открытый текст 1110 0 1 0101 1 0 0000 0 0 0110 0 0 Рюкзак 1 56 11 14 20 1 5 6 11 14 20 1 5 6 11 14 20 1 56 И 14 20 Шифртекст 1+5+6+20= 5+11+14= 0= 5+6= 32 30 0 И Рис. 19.1. Шифрование с помощью укладки рангщ Суть в том, что на самом деле существуют две различные задачи укладки ранца; одна из них решается легко и характеризуется линейным ростом трудоемкости, а другая - как принято считать, нет. Легкий для укладки ранец можно превратить в трудный. Раз так, то можно применить в качестве открытого ключа трудный для укладки ранец, который легко использовать для шифрования, но невозможно - для расшифрования сообщений. А в качестве закрытого ключа применим легко разрешимый для укладки ранец, который предоставляет простой способ расшифрования сообщения. Тому, кто не знает закрытый ключ, придется попытаться решить трудную задачу укладки ранца. Сверхвозрастающие ранцы Что такое легкая задача укладки ранца? Если перечень весов предметов представляет собой сверхвозрастающую последовательность, то полученную проблему укладки ранца решить очень легко. Сверхвозрастающей называется последовательность, в которой каждой член больше суммы всех предыдущих членов. Например, последовательность {1,3,6,13,27,52} является сверхвозрастающей, а {1,3,4,9,15,25} - нет. Решение для сверхвозрастающего ранца найти легко. Возьмем в качестве текущего полный вес, который надо получить, и сравним его с весом самого тяжелого предмета в куче. Если текущий вес меньше веса данного предмета, то не его в рюкзак не кладут. Если текущий вес больше или равен весу этого предмета, то положим его в рюкзак. Уменьшим текущий вес на вес положенного предмета и перейдем к следующему по весу предмету в последовательности. Будем повторять такие шаги, пока процесс не закончится. Если текущий вес уменьшится до нуля, то решение найдено. В противном случае, нет.
518 Прикладная криптография Например, пусть полный вес рюкзака равен 70, а последовательность весов предметов равна {2,3,6,13,27,52}. Самый большой вес - 52; он меньше 70, поэтому кладем предмет весом 52 в рюкзак. Вычитаем 52 из 70 и получаем 18. Следующий наибольший вес в последовательности равен 27; он больше 18, поэтому предмет весом 27 мы в рюкзак не кладем. Следующий самый тяжелый предмет имеет вес 13; он меньше 18, поэтому предмет весом 13 мы в рюкзак кладем. Вычитаем 13 из 18 и получаем 5. Следующий самый тяжелый предмет имеет вес 6; он больше 5, поэтому предмет весом 6 мы в рюкзак не кладем. Продолжение этого процесса покажет, что предметы весом 2 и 3 кладутся в рюкзак, и полный вес уменьшается до 0, означая, что решение найдено. Если бы этот рюкзак был бы применен для шифрования по алгоритму Меркла-Хеллмана, открытый текст, полученный из значения шифртекста 70, был бы равен 110101. Не сверхвозрастающие, или нормальные, рюкзаки представляют собой трудную задачу, для решения которой быстрый алгоритм не известен. Единственным известным методом определения предметов, помещаемых в рюкзак, является полный перебор возможных решений, проводимый до нахождения правильной комбинации. Самый быстрый алгоритм, принимающий во внимание различные эмпирические правила, характеризуется экспоненциальной зависимостью от числа возможных предметов. При этом добавление к куче одного предмета удваивает трудоемкость поиска решения. Это намного труднее решения проблемы сверхвозрастающего рюкзака, где добавление одного предмета к последовательности увеличивает трудоемкость поиска решения на одну операцию. Алгоритм Меркла-Хеллмана базируется на описанном выше свойстве. Закрытым ключом является последовательность весов для задачи укладки сверхвозрастающего ранца. Открытым ключом является последовательность весов для задачи укладки нормального ранца, имеющая то же самое решение. Меркл и Хеллман разработали способ преобразования задачи укладки сверхвозрастающего рюкзака в задачу укладки нормального рюкзака. Для этого они применили арифметику модулярных операций. Создание открытого ключа по закрытому Рассмотрим работу алгоритма Меркла-Хеллмана, не углубляясь в теорию чисел: для пре¬ образования сверхвозрастающей последовательности для укладки рюкзака в нормальную возьмем сверхвозрастающую последовательность {2,3,6,13,27,52} и умножим все значения в последовательности на число п по модулю т. Значение модуля т должно быть больше суммы всех чисел последовательности, например, 105. Множитель должен быть взаимно простым числом с модулем, например, 31. Нормальной последовательностью будет: 2*31 тоб 105 = 62 3*31 тоб 105 = 93 6*31тоб105 = 81 13* 31 тоб 105 = 88 27 *31тоб105 = 102 52 * 31 тоб 105 = 37 Итого - {62,93,81,88,102,37}.
ГЛАВА 19. Алгоритмы с открытым ключом 519 Сверхвозрастающая последовательность является закрытым ключом, а нормальная последовательность — открытым ключом. Зашифрование Для зашифрования сообщение сначала разбивается на блоки, по размерам равные числу элементов последовательности для укладки рюкзака. Затем, считая, что единица указывает на присутствие элемента последовательности в рюкзаке, а ноль — на его отсутствие, вычисляем полные веса рюкзаков — по одному рюкзаку для каждого блока сообщения. Например, если сообщение в бинарном виде выглядит как 011000110101101110, шифрование, использующее вышеописанную последовательность, будет происходить следующим образом: сообщение =011000 110101 101110 011000 соответствует 93 + 81 = 174 110101 соответствует 62 + 93 + 88 + 37 = 280 101110 соответствует 62 + 81 + 88 + 102 = 333 Шифртекстом будет последовательность 174,280,333 Расшифрование Законный получатель данного сообщения знает закрытый ключ: исходную сверх¬ возрастающую последовательность, а также значения пит, использованные для превращения ее в нормальную последовательность. Для расшифрования сообщения получатель должен сначала определить л”1, такое что п(п~1) = \(тойт). Каждое значение шифртекста умножается на п~1 тоб т, а затем разделяется на биты с помощью закрытого ключа, чтобы получить значения открытого текста. В нашем примере сверхвозрастающая последовательность равна {2,3,6,13,27,52}, т равно 105, а п равно 31. Шифртекст равен 174,280,333. Следовательно, п~х равно 61, поэтому значения шифртекста должны быть умножены на 61 по модулю 105. 174 * 61 той 105 = 9 = 3 + 6, что соответствует 011000 280 * 61 той 105 = 70 = 2 + 3 +13 + 52, что соответствует 110101 333*61 тоб 105 = 48 = 2 + 6 + 13 + 27, что соответствует 101110 Расшифрованным открытым текстом является 011000 110101 101110. Практические реализации Для последовательности из шести элементов проблему укладки ранца решить нетрудно, даже если последовательность не является сверхвозрастающей. Пригодные для практического использования рюкзаки должны содержать не менее 250 элементов. Длина каждого члена сверхвозрастающей последовательности должна находится в
520 Прикладная криптография диапазоне между 200 и 400 битами, а длина модуля должна быть от 100 до 200 битов. Для получения этих значений в практических реализациях используют генераторы случайных последовательностей. Вскрывать подобные рюкзаки «в лоб» бесполезно. Если даже компьютер сможет проверять миллион вариантов в секунду, проверка всех возможных вариантов рюкзака потребует свыше 1046 лет. Даже миллион машин, работающих параллельно, не успеет решить эту задачу до превращения солнца в сверхновую звезду. Стойкость ранцевого метола Криптосистему, основанную на задаче об укладке ранца, взломали не миллион компьютеров, а пара криптографов. Сначала был вскрыт единственный бит открытого текста [725]. Затем Шамир показал, что ранцевая система может быть взломана в определенных обстоятельствах [1415, 1416]. Были и другие успехи, описанные в [1428, 38, 754, 516, 488] - но никто не мог взломать криптосистему Мартина-Хеллмана в общем случае, пока, наконец, Шамир и Циппел (21рре1) [1418, 1419, 1421] не обнаружили слабые места в преобразовании, что позволило им восстановить сверхвозрастающую последовательность рюкзака из нормальной. Точные доказа¬ тельства выходят за рамки этой книги, но их хороший обзор можно найти в [1233, 1244]. На конференции, где докладывались эти результаты, вскрытие было продемонст¬ рировано по шагам, с помощью компьютера Арр1е II [492, 494]. Варианты ранцевых систем После взлома исходной схемы Меркла-Хеллмана было предложено множество других систем на основе алгоритма укладки ранца: несколько последовательных рюкзаков, рюкзаки Грэм-Шамира (ОгаЬат-БЬагшг), и другие. Все они были проанализированы и взломаны, как правило, с использованием одних и тех же криптографических методов, и их обломки были сметены со столбовой дороги развития криптографии [260, 253, 269, 921, 15, 919, 920, 922, 366, 254, 263, 255]. Хороший обзор этих систем вместе с соответствующим криптоанализом можно найти в [267, 479, 257, 268]. Были предложены и другие алгоритмы, использующие похожие идеи, но все они так же были взломаны. Криптосистема Лу-Ли (Ьи-Ьее) [990, 13] была взломана в [20, 614, 873], ее модификация [507] также оказалась нестойкой [1620]. Взломы криптосистемы Гудмана-МакОле (Оообтап-МсАЫеу) приведены в [646, 647, 267, 268]. Криптосистема Пиепржика (Р1ерг2ук) [1246] была вскрыта аналогичным образом. Криптосистема Ниеми (Мегш) [1169], основанная на модульных рюкзаках, вскрыта методом, описанным в [345, 788]. Новый, многостадийный рюкзак [747], пока еще не вскрыт, но я не испытываю по этому поводу оптимизма. Еще один вариант предложен в [294]. Единственным известным в настоящее время вариантом ранцевого алгоритма, считающийся безопасным, является алгоритм Чора-Ривеста (СЬог-Клуез!) [356], хотя в [743] предложена «специализированная атака». Однако количество необходимых вычислений делает алгоритм Чора-Ривеста намного менее полезным, чем другие рассмотренные здесь алгоритмы. Вариант, названный Ро\уегПпе Бузует, нестоек [958]. Более того, учитывая легкость, с которой пали все остальные варианты, доверять устоявшим пока вариантом, скорее всего, будет большой неосторожностью.
ГЛАВА 19. Алгоритмы с открытым ключом 521 Патенты Оригинальный алгоритм Меркла-Хеллмана запатентован в Соединенных Штатах [720] и в остальном мире (см. табл. 19.1). Компания РиЬНс Кеу РаЛпегз (РКР) получила лицензию на патент вместе с другими патентами криптографии с открытым ключом (см. раздел 25.5). Время действия патента США истекает 19 августа 1997 года. Таблица 19.1. Иностранные патенты на ранцевый алгоритм Меркла-Хеллмана Страна Номер Дата получения Бельгия 871039 5 апреля 1979 года Нидерланды 7810063 10 апреля 1979 года Великобритания 2006580 2 мая 1979 года Германия 2843583 10 мая 1979 года Швеция 7810478 14 мая 1979 года Франция 2405532 8 июня 1979 года Германия 2843583 3 января 1982 года Германия 2857905 15 июля 1982 года Канада 1128159 20 июля 1982 года Великобритания 2006580 18 августа 1982 года Швейцария 63416114 14 января 1983 года Италия 1099780 28 сентября 1985 года 19.3. Алгоритм К5А Вскоре после появления алгоритма укладки ранца Меркла был создан первый полноценный алгоритм с открытым ключом, который можно использовать и для шифрования, и для создания цифровых подписей - алгоритм К8А [1328, 1329]. Из всех предложенных за эти годы алгоритмов с открытым ключом К8А проще всего понять и реализовать. (Мартин Гарднер (МаШп Оагбпег) опубликовал раннее описание алгоритма в своей колонке «Математические игры» в журнале БЫепйЯс Атепсап [599]). К8А также является самым популярным алгоритмом. Названный в честь трех изобретателей - Рона Ривеста (Коп К1Уез1), Ади Шамира (АсН 8Ьаппг) и Леонарда Адлемана (Ьеопагё АсНетап), этот алгоритм многие годы противостоит многочисленным попыткам криптоаналитического вскрытия. Хотя криптоанализ ни доказал, ни опроверг безопасность алгоритма К8А, проведенная за эти годы работа, по сути, обосновывает степень доверия к алгоритму. Безопасность алгоритма К8А основана на трудоемкости разложения на множители (факторизации) больших чисел. Открытый и закрытый ключи являются функциями двух больших простых чисел, разрядностью 100 - 200 десятичных цифр или даже больше. Предполагается, что восстановление открытого текста по шифртексту и открытому ключу равносильно разложению числа на два больших простых множителя.
522 Прикладная криптография Для генерации двух ключей применяются два больших случайных простых числа р и д. Для максимальной безопасности р и д должны иметь равную длину. Рассчитывается произведение: п = рд Затем случайным образом выбирается ключ шифрования г, такой что е и (р-\)(д-\) являются взаимно простыми числами. Наконец, с помощью расширенного алгоритма Евклида вычисляется ключ расшифрования ф такой что: ес1 = 1 (тоё (р-1)(<?-1)) Другими словами: (I = е~] той ((р ~1)(д~ 1)) Заметим, что с1 и п также взаимно простые числа. Числа ей п - это открытый ключ, а число с! - закрытый. Два простых числа р и д больше не нужны. Они могут быть отброшены, но не должны быть раскрыты. При шифровании сообщение т сначала разбивается на цифровые блоки, размерами меньше п (для двоичных данных выбирается самая большая степень числа 2, меньшая п). То есть, если р и д являются 100-разрядными простыми числами, то п будет содержать около 200 разрядов, и каждый блок сообщения т1 должен быть около 200 разрядов в длину. (Если нужно зашифровать фиксированное число блоков, их можно дополнить несколькими нулями слева, чтобы гарантировать, что блоки всегда будут меньше п). Зашифрованное сообщение с будет состоять из блоков с, той же самой длины. Формула зашифрования выглядит просто: с1 = т* той п При расшифровке сообщения для каждого зашифрованного блока С/ вычисляется: т1 = с/ той п Так как: с/ = (т*)* = = т. т.*(Р-1)(<Н) = щ * 1 = все по (тоа п) то формула восстанавливает сообщение. Все вышесказанное суммировано в табл. 19.2. Таблица 19.2. Шифрование Я8А Открытый ключ: п - произведение двух простых чисел ркд(р\\д должны храниться в секрете) е - число, взаимно простое с (р - 1) (д - 1) Закрытый ключ: 6? = е~х той Цр 1))
ГЛАВА 19. Алгоритмы с открытым ключом 523 Зашифрование: с = те той п Расшифрование: т-с^ той п Точно также сообщение может быть зашифровано с помощью с1, а расшифровано с помощью е, тут возможен любой выбор. Я уберегу вас от теории чисел, доказывающей, почему этот алгоритм работает. В большинстве книг по криптографии этот вопрос рассмотрен более подробно. Небольшой пример, возможно, поможет пояснить работу алгоритма. Если р = 41 и ц = 71, то: п = рц = 3337 Ключ е не должен иметь общих множителей с числом (р - 1)(д -1) = 46 * 70 = 3220 Выберем (случайным образом) е равным 79. В этом случае: б? = 79-1 той 32220 = 1019 При вычислении этого числа использован расширенный алгоритм Евклида (см. раздел 11.3). Опубликуем ей п9 сохранив в секрете с1. Отбросим р и д. Для шифрования сообщения т = 6882326879666683 сначала разделим его на маленькие блоки. Для нашего случая подойдут блоки из трех цифр. Сообщение разбивается на шесть блоков т*: тх = 688 т2 - 232 тъ - 687 т4 = 966 т5 = 668 т6 = 003 Первый блок шифруется как 68879 той 3337 = 1570 = сх Выполним такие же операции для последующих блоков, и создадим шифртекст сообщения: с = 1570 2756 2091 2276 2423 158
524 Прикладная криптография Для расшифрования нужно выполнить такое же возведение в степень, с использованием ключа расшифрования 1019: 15701019 тос! 3337 = 688 = т1 Аналогично восстанавливается оставшаяся часть сообщения. Аппаратные реализации К5А Существует много публикаций, затрагивающих тему аппаратных реализаций К8А [1314, 1474, 1456, 1316, 1485, 874, 1222, 87, 1410, 1409, 1343, 998, 367, 1429, 523, 772]. Хорошими обзорными статьями служат [258, 872]. Шифрование К8А выполняется многими микросхемами, описанными в [1310, 252, 1101, 1317, 874, 69, 737, 594, 1275, 1563, 509, 1223]. Частично список доступных в настоящее время микросхем К8А, приведенных в работах [150, 258], приведен в табл. 19.3. Не все из этих микросхем доступны в свободной продаже. Таблица 19.3. Существующие микросхемы К8А Компания Тактовая частота Скорость передачи в Бодах на 512 бит Тактовые циклы для шифрования 512 бит Техноло¬ гия Битов на микро¬ схему Количе¬ ство транзи¬ сторов А1рЬа.ТесЬп. 25 МГц 13 КБ 0.98 М 2 микрона 1024 180000 АТ&Т 15 МГц 19 КБ 0.4 М 1.5 микрона 298 100000 ВгШзЬ Те1есот 10 МГц 5.1 КБ 1 М 2.5 микрона 256 — Визтезз 81т. Ш 5 МГц 3.8 КБ 0.67 М Вентильная матрица 32 — Са1тоз 8уз1. 1пс. 20 МГц 2.8 КБ 0.36 М 2 микрона 593 95000 СЫЕТ 25 МГц 5.3 КБ 2.3 М 1 микрон 1024 100000 Сгур1есЬ 14 МГц 17 КБ 0.4 М Вентильная матрица 120 33000 СуНпк 30 МГц 6.8 КБ 1.2 М 1.5 микрона 024 150000 СЕС Магсош 25 МГц 10.2 КБ 0.67 М 1.4 микрона 512 160000 РупепЬиг§ 25 МГц 50 КБ 0.256 М 1 микрон 1024 400000 8апсНа 8 МГц 10 КБ 0.4 М 2 микрона 272 86000 81етепз 5 МГц 8.5 КБ 0.3 М 1 микрон 512 60000
ГЛАВА 19. Алгоритмы с открытым ключом 525 Скорость работы К5А Аппаратно реализованный алгоритм Я8А работает примерно в 1000 раз медленнее алгоритма БЕ8. Скорость работы самой быстрой СБИС, реализующей алгоритм Я8А с 512-битовым модулем, равна 64 килобитам в секунду [258]. Существуют также микросхемы, которые выполняют 1024-битовое шифрование Я8А. В настоящее время разрабатываются микросхемы, которые, используя 512-битовый модуль, должны приблизиться к рубежу 1 Мбит/с. Возможно, эти микросхемы появятся в 1995 году. Производители также применяют алгоритм Я8А при реализации чипов в интеллек¬ туальных карточках, но эти реализации работают медленнее. При программной реализации алгоритм ЭЕ8 работает примерно в 100 раз быстрее Я8А. Эти числа могут незначительно измениться при изменении технологии, но Я8А никогда не достигнет скорости работы симметричных алгоритмов. В табл. 19.4 приведены скорости программного шифрования Я8А [918] различных модулей с помощью 8РАЯСII. Таблица 19.4. Скорости К8А для различных длин модулей при 8-битовом открытом ключе {на 8РАКСII) 512 битов 768 битов 1024 бита Зашифрование 0.03 с 0.05 с 0.08 с Расшифрование 0.16 с 0.48 с 0.93 с Подпись 0.16 с 0.52 с 0.97 с Проверка 0.02 с 0.07 с 0.08 с Программные ускорители Шифрование Я8А выполняется намного быстрее при правильном выборе значения е. Тремя наиболее частыми вариантами являются значения 3, 17 и 65537 (216+ 1). (Двоичное представление 65537 содержит только две единицы, поэтому для возведения в степень нужно выполнить только 17 умножений). Стандарт Х.509 советует применять число 65537 [304], РЕМ рекомендует 3 [76], а РКС8 #1 (см. раздел 24.14) предлагает 3 или 65537 [1345]. Не существует никаких проблем безопасности, связанных с использованием в качестве е любого из этих трех значений (при условии дополнения сообщения случайными числами - см. раздел ниже), даже если одно и то же значение е используется целой группой пользователей. Если вы сохраните значения р и <?, а также дополнительные значения: тоб (/? -1), с! тос1(<7-1) и ц~] тод р, то операции с закрытым ключом можно ускорить при помощи китайской теоремы об остатках [1283, 1276]. Эти дополнительные числа можно легко вычислить по закрытому и открытому ключам. Стойкость К5А Стойкость алгоритма Я8А полностью зависит от трудоемкости решения проблемы разложения на множители больших чисел. С технической точки зрения это не корректно. Утверждение, что безопасность Я8А зависит от проблемы разложения на множители
526 Прикладная криптография больших чисел, является гипотетическим. Никто и никогда не доказал математически, что для восстановления т по с и е нужно разложить п на множители. Понятно, что может быть открыт совсем иной способ криптоанализа ЯЗА. Но если этот новый способ позволит криптоаналитику получить с/, он также может быть использован для разложения на множители больших чисел. Это не вызывает у меня какого-либо беспокойства. Также можно вскрыть ЯЗА, угадав значение (/?-1)(<7-1). Это вскрытие не проще разложения п на множители [1616]. Для сверхскептиков укажем: доказано, что некоторые варианты алгоритма ЯЗА настолько же сложны, что и разложение на множители (см. раздел 19.5). Ознакомьтесь также с работой [361], где показано, что раскрытие даже нескольких битов информации из зашиф¬ рованного с помощью ЯЗА шифртекста не легче, чем дешифрование всего сообщения. Самым очевидным средством вскрытия является разложение п на множители. Любой противник сможет получить открытый ключ е и модуль п. Чтобы найти ключ расшиф¬ рования с1, противник должен разложить п на множители. Современное состояние технических средств разложения на множители рассматривалось в разделе 11.4. В настоящее время последним достижением этой техники является число, содержащее 129 десятичных цифр2. Значит, выбираемое число п должно быть больше этого значения. Рекомендации по выбору длины открытого ключа приведены в разделе 7.2. Конечно, криптоаналитик может перебирать все возможные с1 до тех пор, пока не найдет правильное значение. Но такой лобовой взлом менее эффективен, чем даже попытка разложить п на множители. Время от времени кое-кто провозглашает, что им найден простой способ вскрытия ЯЗА, но пока ни одно из подобных заявлений не подтвердилось. Например, в 1993 году в черновике статьи Вильяма Пейна (\УПНат Раупе) был предложен метод, основанный на малой теореме Ферма [1234]. К сожалению, этот метод оказался медленнее разложения на множители. Существует еще один повод для тревоги. Большинство общепринятых алгоритмов вычисления простых чисел р иц носит вероятностный характер; что же произойдет, если полученные значения р или д окажутся составными? Прежде всего, можно свести вероятность такого события до приемлемого минимума. Но даже если это произойдет, скорее всего, такое событие будет сразу же обнаружено - шифрование и расшифрование не будут работать. Существует ряд чисел, называемых числами Кармайкла, которые не обнаружимы некоторыми вероятностными алгоритмами поиска простых чисел. Они небезопасны, но чрезвычайно редки [746]. Честно говоря, я не испытываю никаких тревог по этому поводу. Взлом К5А на основе подобранного шифртекста Имеются методы взлома, предназначенные для вскрытия реализаций алгоритмов ЯЗА. Они вскрывают не сам базовый алгоритм, а использующий его протокол. Важно понимать, что само по себе использование ЯЗА не обеспечивает безопасности. Дело еще и в деталях реализации. 2 155, см. гл. 7. - Прим. ред.
ГЛАВА 19. Алгоритмы с открытым ключом 527 Сценарий 1: Еве, подслушавшей линии связи Алисы, удалось перехватить сообщение с, шифрованное с помощью ЯЗА открытым ключом Алисы. Ева хочет прочитать сообщение. В математической форме ей нужно узнать т, для которого: т = Для вскрытия т она сначала выбирает первое случайное число г, меньшее п и достает открытый ключ Алисы е. Затем она вычисляет: х-ге тоб п у = хс тоб п I = г~х тоб п Если х = ге тоб л, то г = хи тоб л . Теперь просит Алису подписать у ее закрытым ключом, тем самым расшифровав у. (Алиса должна подписать сообщение, а не его хэш-значение). Не забывайте, Алиса никогда раньше не видела у. Алиса посылает Еве: и-у1 тоб п После этого Ева вычисляет: 1и тоб п = г~] уа тоб л = г"1 хаса тоб п-са тоб п~т И Ева получает т. Сценарий 2: Трент - это компьютер-нотариус. Если Алиса хочет заверить документ, она посылает его Тренту. Трент подписывает его цифровой подписью ЯЗА и отправляет обратно. (Однонаправленные хэш-функции не используются, Трент шифрует своим закрытым ключом всё сообщение). Мэллори хочет, чтобы Трент подписал такое сообщение, которое в обычном случае он никогда не подпишет. Это сообщение может содержать фальшивую временную метку, или же автором этого сообщения может являться другое лицо. Какой бы ни была причина, Трент никогда не подпишет это сообщение, если у него будет возможность выбора. Назовем это сообщение т\ Сначала Мэллори выбирает произвольное значение х и вычисляет у = хе тоб п. Значение е он может получить без труда - это открытый ключ Трента, который должен быть опубликован, чтобы можно было проверять подписи Трента. Теперь Мэллори вычисляет т-ут'тод.п и посылает т Тренту на подпись. Трент возвращает та тоб п. Теперь Мэллори вычисляет значение (та тобя)х-1 тоб л, которое равно т,(1 тоб п и является подписью т\ На самом деле Мэллори может использовать множество методов решения подобной задачи [423, 458, 486]. Слабым местом алгоритма, которое используют атаки такого рода, является сохранение мультипликативной структуры входа при возведении в степень. То есть:
528 Прикладная криптография (хт)и тос! п~хата тос! п Сценарий 3: Ева хочет, чтобы Алиса подписала сообщение т3. Она создает два сообщения, гп\ и т2, такие что: тъ = тх т2 (тоё п) Если Ева сможет заставить Алису подписать тх и т2, она может вычислить подпись для тъ\ т2 = (тх тоё п) (т2 тоё п) Вывод: Никогда не используйте алгоритм Я8А для подписи случайных документов, подсунутых вам посторонними. Вначале всегда следует воспользоваться однонаправленной хэш-функцией. Формат блоков, предлагаемый 180 9796, предотвращает описанное вскрытие. Атаки при использовании общего модуля Возможна реализация Я8А, в которой всем пользователям раздается одинаковый модуль л, но каждому передается отдельное значение показателей степени еи^/.К сожалению, такая реализация работать не будет. Наиболее очевидная проблема заключается в следующем. Пусть одно и то же сообщение когда-нибудь шифровалось разными показателями (с одним и тем же модулем), и эти два показателя - взаимно простые числа (как это обычно и бывает). Тогда открытый текст может быть раскрыт даже при отсутствии каких-либо сведений об одном из ключей расшифрования [1457]. Пусть т - это открытый текст сообщения, ех и е2 - два ключа шифрования, а п - общий модуль. Шифртекстами сообщения являются: сх = тоё п с2 = т*2 тоё п Криптоаналитик знает п, ех, е2, сх и с2. Вот как он узнает т. Так как ех и е2 - взаимно простые числа, то с помощью расширенного алгоритма Евклида можно найти г и 5, для которых: гех +зе2=1 Считая г отрицательным (здесь или г, или 5 должно быть отрицательным, положим, что отрицательным будет г), снова воспользуемся расширенным алгоритмом для вычисления с{х. Затем: (с1”1)_г * с2 - т тоё п Существуют два других, более тонких вскрытия систем такого типа. Одно использует вероятностный метод для разложения п на множители. Другой является детермини¬ рованным алгоритмом вычисления какого-нибудь секретного ключа без разложения модуля на множители. Оба вскрытия подробно описаны в [449]. Вывод: Не делайте п общим для группы пользователей.
ГЛАВА 19. Алгоритмы с открытым ключом 529 Раскрытие малого открытого показателя Шифрование и проверка подписи Я8А выполняется быстрее, если для е используется небольшое значение, но это также может быть небезопасным [704]. Если е(е+\)/2 линейно зависящих сообщений шифруются различными открытыми ключами с одним и тем же показателем е, существует способ вскрыть такую систему. Если сообщений не слишком много или если сообщения не связаны, то проблем не возникает. Если сообщения одинаковы, то для вскрытия достаточно е сообщений. Самым простым решением проблемы в этом случае будет дополнение сообщения независимыми случайными числами. Это также гарантирует, что те тоб пФте. Такое дополнение выполняется в большинстве практических реализаций алгоритма Я8А, например, в стандарте РЕМ и программе РОР (см. разделы 24.10 и 24.12). Вывод: Дополняйте сообщения перед шифрованием случайными значениями, гаранти¬ руйте, чтобы размер т был примерно равен п. Раскрытие малого секретного показателя Другая атака, предложенная Майклом Винером (МюЬае1 Мепег), раскрывает А, если й не превышает четверти размера п, а е меньше п [1596]. При случайном выборе е и с1 такое встречается редко и никогда не происходит, если значение е невелико. Вывод: Выбирайте большое значение с1. Полученные уроки На основании перечисленных выше атак Джудит Мур (1исШЬ Мооге) подытоживает следующие ограничения Я8А [1114, 1115]: ✓ Знание одной пары секретного/открытого показателей для данного модуля позволяет взломщику разложить модуль на множители. ✓ Знание одной пары секретного/открытого показателей для данного модуля позволяет взломщику вычислить другие пары показателей, не разлагая модуль на множители. ✓ В протоколах сетей связи, применяющих Я8А, не должен использоваться общий модуль. (Это является очевидным следствием предыдущих двух пунктов). |/ Для предотвращения вскрытия малого открытого показателя все сообщения должны быть дополнены случайными значениями. ✓ Секретный показатель должен быть большим числом. Не забывайте, недостаточно использовать стойкий криптографический алгоритм, должны быть безопасными вся криптосистема и криптографический протокол. Слабое место любого из трех этих компонентов сделает небезопасной всю систему. Атака на зашифрование и подпись Подписывать сообщение лучше всего перед его шифрованием (см. раздел 2.7), но на практике этого правила никто не придерживается. В последнем случае при использо¬ вании Я8А можно вскрыть протоколы, шифрующие сообщение до его подписания [48].
530 Прикладная криптография Пусть Алиса хочет послать сообщение Бобу. Сначала она шифрует его открытым ключом Боба, а затем подписывает своим закрытым ключом. Ее зашифрованное и подписанное сообщение выглядит так: {тв тойпв)^А то<\пА Вот как Боб может доказать, что Алиса послала ему сообщение т\ а не т. Так как Бобу известно разложение на множители пв (это его собственные модули), он может вычислить дискретные логарифмы по основанию пв. Следовательно, ему нужно только найти х, для которого: т'х = т тоб пв Тогда, если он сможет опубликовать хев в качестве своего нового открытого показателя и сохранить свой прежний модуль пв, он сможет утверждать, что Алиса послала ему сообщение т \ зашифрованное этим новым показателем. В некоторых случаях это особенно неприятное вскрытие. Заметим, что хэш-функции не решают проблему. Однако проблема разрешается при использовании каждым пользо¬ вателем фиксированного показателя шифрования. Стандарты Алгоритм Я8А является стандартом де-факто, принятым почти во всем мире. Организация 180 уже почти разработала стандарт цифровой подписи, основанный на Я8А; Я8А служит информационным дополнением стандарта 180 9796 [762]. Французское банковское сообщество приняло Я8А в качестве стандарта [525], так же поступили и австралийцы [1498]. В Соединенных Штатах из-за давления АНБ и проблем, связанных с патентами, в настоящее время нет стандарта для шифрования с открытым ключом. Многие американские компании используют алгоритм РКС8 (см. раздел 24.14), созданный компанией Я8А Оа1а Зесигку, 1пс. Спецификация Я8А содержится и в черновике банковского стандарта А1М81 [61]. Патенты Алгоритм Я8А запатентован только в Соединенных Штатах [1330] и более ни в какой другой стране. Компания РКР получила лицензию вместе с другими патентами в области криптографии с открытым ключом (раздел 25.5). Срок действия патента США истек 20 сентября 2000 года. 19.4. Схема Полига-Хеллмана Схема шифрования Полига-Хеллмана (РоЬП^-НеНтап) [1253] похожа на Я8А. Это не симметричный алгоритм, так как для шифрования и расшифрования используются различные ключи. Это не схема с открытым ключом, потому что ключи легко получаются один из другого, и ключ зашифрования, и ключ расшифрования должны храниться в секрете. Как и в Я8А: С = Ре тоб п
ГЛАВА 19. Алгоритмы с открытым ключом 531 Р = Са тос! п где ес!=1 (тос! какое-нибудь сложное число) В отличие от ЯЗА значение п не определяется с помощью двух простых чисел и остается частью закрытого ключа. Если у кого-нибудь есть е и л, он может вычислить с/. Не зная е или с/, противник будет вынужден вычислять: е - 1о&Р С тоб п Мы уже видели, что это трудная задача. Патенты Алгоритм Полига-Хеллмана запатентован в США [722] и в Канаде. Компания РКР получила лицензию вместе с другими патентами в области криптографии с открытым ключом (см. раздел 25.5). 19.5. Схема Рабина Безопасность схемы Рабина (ЯаЫп) [1283, 1601] опирается на сложность поиска квадратных корней по модулю составного числа. Эта проблема аналогична разложению на множители. Вот одна из реализаций этой схемы. Сначала выбираются два простых числа р ид, сравнимых с 3 тоб 4. Эти простые числа являются закрытым ключом, а их произведение п=рд является открытым ключом. Для шифрования сообщения М (М должно быть меньше п), просто вычисляется: С = М2 тоб п Расшифрование сообщения также несложно, но немного скучнее. Так как получатель знает р и д, он может решить два сравнения с помощью китайской теоремы об остатках. Вычисляется: тх = С(/?+1)/4 тоб р т2=(р-С<-р+х)14)тойр щ = с(9+0/4 тос1 ц т4 =^-С{ч+Х)Ц) тойц Затем выбираются целые числа а = д тоб р) и Ъ-р {р~х тоб <у). Четырьмя воз- можными решениями являются: Мх = (атх + Ьтъ) тоб п М2 = (атх + Ът4) тоб п
532 Прикладная криптография Мъ - (ат2 + Ътъ) гпос! п МА - (ат2 + ЪтА) тос! п Один из четырех результатов, Л/ь М2, Мъ и Л/4, равно М. Если сообщение написано на английском языке, выбрать правильное М, нетрудно. С другой стороны, если сообщение является потоком случайных битов (предназначенных, скажем, для генерации ключей или цифровой подписи), способа определить, какое М,- является правильным, не существует. Одним из способов решить эту проблему служит добавление к сообщению известного заголовка, выполняемое перед шифрованием. Схема Вильямса Хью Вильямс (Ни§Ь \\Ч1Натз) переопределил схему Рабина, чтобы устранить эти недостатки [1601]. В его схеме р ид выбираются так, чтобы: р = 3 тоб 8 <7 = 7 тюб 8 и N = р^ Кроме того, используется небольшое целое число Я, для которого ./(Я, АО = -1. (У - это символ Якоби - см. раздел 11.3). N и 8 опубликовываются. Секретным ключом является к, для которого: & = 1 /2 * (1 /4 * (/? -1) * (д-1) +1) Для шифрования сообщения М вычисляется сь такое что ^(МУN) = (-\)С^. Затем вычисляется М' = (5е* * М) шоб N. Как и в схеме Рабина, С = Ма тоб N. Также с2 = М' тоб 2. Окончательным шифртекстом сообщения является тройка: (С, сь с2) Для расшифрования С, получатель вычисляет М” с помощью: Ск=±М"{ ШОС1Л0 Правильный знак М" определяет с2. Наконец: М = {8С1 *(-1)с1 *Л/") тоб N Впоследствии Вильямс улучшил эту схему в [1603, 1604, 1605]. Вместо возведения в квадрат открытого текста сообщения, возведите его в третью степень. Большие простые числа должны быть сравнимы с 1 по модулю 3, иначе открытый и закрытый ключи окажутся одинаковыми. Эта схема еще лучше, существует только одна уникальная расшифровка каждого шифртекста. Преимущество схем Рабина и Вильямса перед Я8А в том, что доказано, что они настолько безопасны, насколько безопасно разложение на множители. Однако они беззащитны перед атакой методом подобранного шифртекста.
ГЛАВА 19. Алгоритмы с открытым ключом 533 Если вы собираетесь использовать эти схемы в случаях, когда взломщик может выполнить такую атаку (например, при использовании схем в качестве алгоритма цифровой подписи, когда взломщик может выбирать подписываемые сообщения), не забывайте использовать перед подписанием однонаправленную хэш-функцию. Рабин предложил другой способ защититься от такой атаки: к каждому сообщению перед хэшированием и подписанием добавляется уникальная случайная строка. К несчастью, после добавления однонаправленной хэш-функции больше не является доказанным тот факт, что система остается столь же безопасной, что и разложение на множители, [628]. Хотя с практической точки зрения добавление хэширования не может ослабить систему. Другими вариантами схемы Рабина являются [972, 909, 696, 697, 1439, 989]. Двумерный вариант описан в [866, 889]. 19.6. Схема Эль-Гамадя Схему Эль-Гамаля (ЕЮатаГ) [518, 519] можно использовать как для цифровых подписей, так и для шифрования, безопасность схемы основана на трудоемкости вычисления дискретных логарифмов в конечном поле. Для генерации пары ключей сначала выбирается простое число р и два случайных числа, § и х; оба эти числа должны быть меньше р. Затем вычисляется: у = §х тоб р Открытым ключом являются у, § и р. И и р можно сделать общими для группы пользователей. Закрытым ключом является х. Подписи Эль-Гамаля Чтобы подписать сообщение А/, сначала выбирается случайное число к, взаимно простое с р - 1. Затем вычисляется: а = §к тоб р Далее с помощью расширенного алгоритма Евклида для нахождения Ъ решается следующее уравнение: М = (ха + кЬ) тоб (р -1) Подписью является пара чисел: а и Ъ. Случайное значение к должно храниться в секрете. Для проверки подписи нужно убедиться, что уа аь тоб р-§м тоб р Каждая подпись или шифрование Эль-Гамаля требует нового значения к, и это значение должно быть выбрано случайным образом. Если когда-нибудь Ева раскроет значение к, используемое Алисой, она сможет раскрыть закрытый ключ Алисы х. Если Ева когда- нибудь сможет получить два сообщения, подписанные или зашифрованные с помощью одного и того же к, то она сможет раскрыть х, даже не зная значение к. Описание схемы Эль-Гамаля приведено в табл. 19.5.
534 Прикладная криптография Таблица 19.5. Подписи Элъ-Гамаля Открытый ключ: р - простое число (может быть общим для группы пользователей) 8 < р (может быть общим для группы пользователей) у- 8х тоб р Закрытый ключ: х < р Подпись: к выбирается случайным образом, как взаимно простое с р - 1 а (подпись) = тоб р Ь (подпись) такое что: М = {ха + кЬ) тоб (р -1) Проверка: Подпись считается правильной, если уа аь тоб р = тоб р Например, выберем р = И и 8 = 2, а закрытый ключ х = 8. Вычислим: у = тоб р = 28 тоб 11 = 3 Открытым ключом являются у- 3, §=2 и р= И. Чтобы подписать М= 5, сначала выберем случайное число к- 9. Убеждаемся, что НОД (9, 10) = 1. Вычисляем: а = 8к тоб р~ 29 тоб 11 = 6 Далее с помощью расширенного алгоритма Евклида находим Ь: М = (ах + кЬ) тоб (р -1) 5 = (8*6 + 9*Ь) тоб 10 Решением будет Ь = 3, а подпись представляет собой пару: а = 6 и Ь = 3. Для проверки подписи убедимся, что: уа аь тоб р-8М тоб р З6 63 тоб 11 = 25 тоб 11 Вариант Эль-Гамаля, используемый для подписей, описан в [1377]. Томас Бет (ТЬотаз Ве1Ь) изобрел вариант схемы Эль-Гамаля, подходящий для доказательства идентичности [146]. Существуют варианты для аутентификации по паролю [312] и для обмена ключами [773], а также тысячи и тысячи других (см. раздел 20.4).
ГЛАВА 19. Алгоритмы с открытым ключом 535 Шифрование Эль-Гамаля Существует модификация алгоритма Эль-Гамаля, позволяющая шифровать сообщения. Чтобы зашифровать сообщение М, сначала выбирается случайное число к, взаимно простое с/7-1. Затем вычисляются такие величины: а-%к тоб р Ъ-укМ тоб р Пара а и Ъ является шифртекстом. Заметьте, что шифртекст в два раза длиннее открытого текста. Для расшифрования а и Ь вычисляется величина: М = Ыах тоб р Так как ах = ^ (тоб р) и Ы ах = укМ/ах = §хкМ I §хк = М (тоб р), то все работает (см. табл. 19.6). В сущности, этот метод аналогичен обмену ключами Диффи-Хеллмана (см. раздел 22.1) за исключением того, что у - это часть ключа, а при шифровании сообщение умножается на;/. Таблица 19.6. Шифрование Эль-Гамаля Открытый ключ: р простое число (может быть общим для группы пользователей) # < р (может быть общим для группы пользователей) у-^х тоб р Закрытый ключ: х < р Зашифрование: к выбирается случайным образом, как взаимно простое с р - 1 а (шифртекст) = §к тоб р Ъ (шифртекст) = ук М тоб р Расшифрование: М {открытый текст) - Ы ах тоб р Скорость В табл. 19.7 приведены некоторые примеры скорости работы программных реализаций Эль-Гамаля [918].
536 Прикладная криптография Таблица 19.7. Скорости Эль-Гамаля для различных длин модулей при 160-битовом показателе степени {на 8РАКСII) 512 битов 768 битов 1024 битов Зашифрование 0.33 с 0.80 с 1.09 с Расшифрование 0.24 с 0.58 с 0.77 с Подпись 0.25 с 0.47 с 0.63 с Проверка 1.37 с 5.12с 9.30 с Патенты Алгоритм Эль-Гамаля не запатентован. Но не спешите и прежде чем двигаться вперед и приступать к реализации алгоритма, учтите, что компания РКР считает этот алгоритм подпадающим под действие патента Диффи-Хеллмана [718]. Однако срок действия патента Диффи-Хеллмана заканчивается 29 апреля 1997 года, что делает Эль-Гамаля первым криптографическим алгоритмом с открытым ключом, пригодным для шифрования и цифровых подписей, применение которого не ограничено патентами США. Я жду, не дождусь этого момента. 19.7. Система МакЭлиса В 1978 году Роберт МакЭлис (ЯоЬег! МсЕПесе) разработал криптосистему с открытым ключом, основанную на теории алгебраического кодирования [1041]. Этот алгоритм использует существование определенного класса кодов с исправлением ошибок, называемых кодами Гоппы (Сорра). Концепция такой криптосистемы предлагает создать код Гоппы и замаскировать его под обычный линейный код. Существует быстрый алгоритм декодирования кодов Гоппы, но общая проблема нахождения кодового слова с данным весом в линейном двоичном коде является ^-полной. Подробное описание этого алгоритма можно найти в [1233], а также в [1562]. Ниже приводится только краткий обзор алгоритма. Пусть с!н {х, у) обозначает расстояние Хэмминга между х и у. Числа п, к и I служат параметрами системы. Закрытый ключ состоит из трех частей: С* - матрица размером к*п генерации кода Гоппы, исправляющего / ошибок. Р - это матрица перестановок размером п*п. 51 - это невырожденная матрица размером к * к. Открытым ключом служит матрица С размером к*п: С = ЗС'Р. Открытым текстом сообщения являются строки к битов, представленные в виде ^-элементных векторов над полем СГ (2). При шифровании сообщения случайным образом выбирается п-элементный вектор г над полем СГ (2), для которого расстояние Хэмминга меньше или равно /. с = тС + 2
ГЛАВА 19. Алгоритмы с открытым ключом 537 При расшифровании сообщения вначале вычисляется с' = сР~]. Затем с помощью декодирующего алгоритма для кодов Гоппы находится т\ для которого с1н(т'С, с') меньше или равно /. Наконец вычисляется т = т’8~\ В своей оригинальной работе МакЭлис предложил значения п- 1024, /=50 и &=524. Это минимальные значения, требуемые для безопасности. Этот алгоритм был одним из первых алгоритмов с открытым ключом, и до сих пор не появлялось публикаций о его успешном криптоаналитическом вскрытии. Однако алгоритм не получил широкого признания в криптографическом сообществе. Схема работает на два-три порядка быстрее, чем ЯЗА, но у нее есть ряд недостатков. Открытый ключ огромен: 219 битов. Сильно увеличивается объем данных - шифртекст становится вдвое длиннее открытого текста. Ряд попыток криптоанализа этой системы представлен в [8, 943, 1559, 306]. Ни одна из описанных попыток не достигла успеха для общего случая, хотя сходство между алгоритмом МакЭлиса и алгоритмом об укладке ранца вызывает некоторое беспокойство. В 1991 два криптографа из России заявили, что взломали систему МакЭлиса с некоторыми параметрами [882]. Однако в их статье это утверждение не было обосновано, и большинство криптографов не приняли во внимание этот результат. Еще одну атаку, разработанную также в России, нельзя непосредственно использовать против криптосистемы МакЭлиса [1447, 1448]. Дополнительные сведения по алгоритму МакЭлиса можно найти в [424, 1227, 976]. Другие алгоритмы, основанные на линейных колах, исправляющих ошибки Алгоритм Нидеррейтера (Мебеггекег) [1167] очень близок к алгоритму МакЭлиса, и в нем предлагается в качестве открытого ключа использовать случайную матрицу проверки четности для кода с исправлением ошибок. Закрытым ключом служит эффективный алгоритм декодирования этой матрицы. Для проверки подлинности и создания цифровых подписей предложен другой алгоритм, основанный на синдромном декодировании [1501]; его подробное описание приведено в работе [306]. В работе [1621] предложен алгоритм, использующий коды с исправлением ошибок, который является нестойким [698, 33, 31, 1560, 32]. 19.8. Криптосистемы на эллиптических кривых Эллиптические кривые являлись предметом изучения многие годы, в данной области существует огромное количество литературы. В 1985 году Нил Коблиц (Иеа1 КоЫйг) и, независимо, В.С. Миллер (У.З. МШег) предложили использовать эллиптические кривые для создания криптосистем с открытым ключом [867, 1095]. Они не изобрели нового криптографического алгоритма, использующего эллиптические кривые над конечными полями, но реализовали существующие алгоритмы, подобные Диффи-Хеллману, с помощью эллиптических кривых.
538 Прикладная криптография Интерес к эллиптическим кривым связан с тем фактом, что они обеспечивают способ конструирования «элементов» и «правил объединения», образующих группы. Свойства этих групп известны достаточно хорошо, чтобы использовать их для криптогра¬ фических алгоритмов, но у них нет определенных свойств, облегчающих криптоанализ. Например, понятие «гладкости» неприменимо к эллиптическим кривым. То есть, не существует такого множества небольших элементов, используя которые с помощью простого алгоритма, с высокой вероятностью можно выразить случайный элемент. Следовательно, алгоритмы вычисления дискретного логарифма, аналогичные используемым в конечных полях, работать не будут. Подробнее эти вопросы описаны в [1095]. Особенный интерес представляют эллиптические кривые над полем СР (2"). Для п со значением в диапазоне от 130 до 200 несложно разработать схему и относительно просто реализовать арифметический процессор для используемого поля. Такие алгоритмы потенциально могут послужить основой для более быстрых криптосистем с открытым ключом и меньшими размерами ключей. С помощью эллиптических кривых над конечными полями могут быть реализованы многие алгоритмы с открытым ключом, типа, например, алгоритмов Диффи-Хеллмана, Эль-Гамаля и Шнорра3. Используемая в этих случаях математика сложна и выходит за рамки этой книги. Всем, кто заинтересовался этой темой, я советую ознакомиться с двумя вышеупомянутыми работами и отличной книгой Альфреда Менезеса (АИтеё Мепегез) [1059]. Эллиптические кривые используются в двух алгоритмах - аналогах Я8А [890, 454]. Другими работами являются [23, 119, 1062, 869, 152, 871, 892, 25, 895, 353, 1061, 26, 913, 914, 915]. Криптосистемы с ключами небольшой длины, основанными на эллиптических кривых, рассмотрены в работе [701]. Алгоритм РЕЕ (Раз* ЕШрйс Епсгурйоп) компании Ыех! СотрЩег 1пс. также использует эллиптические кривые [388]. Алгоритм РЕЕ особенно удобен тем, что закрытый ключ может быть любой легко запоминающейся строкой. Предлагаются и криптосистемы, использующие гиперэллиптцческие кривые [868, 870, 1441, 1214]. 19.9. ШС Отдельные криптографы разработали обобщенные модификации Я8А, которые используют различные перестановочные многочлены вместо возведения в степень. Одна из модификаций, названная Кравитц-Рид (Кгаукг-Яеес!), использует неприво¬ димые двоичные многочлены [898] и является нестойкой [451, 589]. Винфрид Мюллер (\\^пйтес1 Ми11ег) и Вилфрид Нобауер (^Нйтеё ЫоЬаиег) разработали модификацию, использующую полиномы Диксона (Оюкзоп) [1127, 1128, 965]. Рудольф Лидл (ЯискЯрЬ Ыс11) и Мюллер обобщили этот подход в [966, 1126] (этот вариант назван схемой ЯекН), а Нобауер подверг анализу его безопасность в [1172, 1173]. (Комментарии по поводу генерации простых чисел с помощью функций Лукаса (Ьисаз) можно найти в [969, 967, 968, 598]). Несмотря на все предыдущие разработки, группе исследователей из Новой Зеландии удалось запатентовать эту схему в 1993 году, назвав ее ШС [1486, 521, 1487]. 3 В настоящий момент криптосистемы на эллиптических кривых считаются одними из самых перспективных. - Прим. ред.
ГЛАВА 19. Алгоритмы с открытым ключом 539 В этой схеме п-ое число Лукаса У„ (Р, 1) определяется как: Уп (?> 1) = РУп_} (Р,\)-У„_2 (Р, 1) Теория чисел Лукаса представляет собой весьма обширную область знаний, но здесь я не буду ей заниматься. Теория последовательностей Лукаса неплохо изложена в [1307, 1308]. Особенно хорошо математика ШС описана в [1494,708]. В любом случае для генерации пары открытый ключ/закрытый ключ сначала выбираются два больших простых числа р ид. Вычисляется п, произведение р и с/. Ключ шифрования е - это случайное число, взаимно простое с р — \, с]—\,р+\ и <7+1. Существуют четыре возможных ключа расшифрования: с! = е~х тоб (НОК (р +1),(я +1))) с1 = е-1 тоб (НОК (р + 1),(я -1))) <1 = е-1 тоб (НОК (р -1),(<7 +1))) а = е"1 тоб (НОК (р - 1),(д -1))) где НОК означает наименьшее общее кратное. Открытым ключом являются (1 и п\ закрытым ключом являются ей п. Переменные р и д более не нужны и отбрасываются. Для зашифрования сообщения Р (Р должно быть меньше п) вычисляется: С = К,(Л 1) (тоб п) А для расшифрования: Р = (Р91) (тоб п), с соответствующим б/. В лучшем случае ШС не безопаснее ЯЗА. А недавние, еще неопубликованные4 результаты, показывают, как можно взломать ШС, по крайней мере, в некоторых реализациях. Я не доверяю этому алгоритму. 19.10. Криптосистемы с открытым ключом на основе конечных автоматов Китайский криптограф Тао Ренжи (Тао ЯепД) разработал алгоритм с открытым ключом, основанный на использовании конечных автоматов [1301, 1302, 1303, 1300, 1304, 666]. Такой же трудной задачей, как и разложение на множители произведения двух больших простых чисел, является задача разложения на составляющие композиции двух конечных автоматов. Это тем более верно, если один из автоматов не линеен. По большей части исследования в этой области были выполнены в Китае в 80-х годах, а их результаты опубликованы на китайском языке. Впоследствии Ренжи начал писать на 4 на момент написания книги (1996 г). - Прим. ред.
540 Прикладная криптография английском языке. Основным итогом исследований было заключение, что инверсия некоторых нелинейных (квазилинейных) автоматов является слабым тогда и только тогда, когда эти автоматы обладают определенной ступенчатой матричной структурой. Это свойство исчезает, если они объединены с другим автоматом (хотя бы линейным). В алгоритме с открытым ключом секретный ключ является инвертируемым квазилинейным автоматом и линейным автоматом, а соответствующий открытый ключ может быть получен с помощью их почленного перемножения. Данные шифруются, проходя через линейный автомат, а расшифровываются, проходя через инверсии его компонентов (в некоторых случаях автоматы должны быть установленными в подходящее начальное значение). Эта схема работает и для шифрования, и для цифровых подписей. О производительности таких криптосистем вкратце можно сказать следующее: они, как и система МакЭлиса, намного быстрее Я8А, но требуют использования более длинных ключей. Длина ключа, обеспечивающая безопасность, достигаемую при использовании 512-битового Я8А, здесь, предположительно, равна 2792 битам, а 1024-битовому Я8А - 4152 битам. В первом случае система шифрует данные со скоростью 20869 байт/с и расшифровывает со скоростью 17117 байт/с при использовании компьютера 80486/33 МГц. Ренжи опубликовал три алгоритма. Первым был РАРКСО. Эта слабая система, которая использует линейные компоненты и, по большей части, является иллюстративной. В каждой из последующих, более серьезных версий, названных РАРКС1 и РАРКС2, используется один линейный и один нелинейный компонент. Последняя версия более сложна, она была разработана для поддержки операции проверки подлинности. Что касается надежности этих алгоритмов, то в Китае (где сейчас, судя по публикациям, вопросами криптографии и безопасности занимается свыше 30 институтов) немало занимались этой проблемой. По достаточно большому количеству источников на китайском языке можно заметить, что проблема подверглась значительному исследованию. Привлекательной особенностью алгоритмов РАРКС1 и РАРКС2 является отсутствие патентов США, ограничивающих их применение. Следовательно, поскольку срок действия патента на алгоритм Диффи-Хеллмана истекает в 1997 году, эти алгоритмы, несомненно, представляют большой интерес.
Г Л А В А 20. Алгоритмы цифровой подписи с открытым ключом 20.1. Алгоритм цифровой подписи Р5А В августе 1991 года N181 в своем стандарте цифровой подписи Э88 (01§ка1 81§па1иге 81апс1агс1) предложил для использования алгоритм цифровой подписи Э8А ф1§ка1 ЗщпаШге А1§огкЬт). Согласно Федеральному Регистру [538]: Предлагается Федеральный стандарт обработки информации (Редега! /пГогтаИоп Ргосеззтд 81апбагб, Р1Р8) для создания цифровой подписи Э88. В этом стандарте определяется алгоритм цифровой подписи с открытым ключом (й8А), удовлетво¬ ряющий федеральным требованиям к цифровым подписям. Предложенный алго¬ ритм И88 использует открытый ключ для проверки получателем целостности полученных данных и личности отправителя. Алгоритм й88 также может быть использован третьей стороной для проверки правильности подписи и связанных с ней данных. В этом стандарте принимается схема подписи с открытым ключом, исполь¬ зующая пару преобразований для создания и проверки цифрового значения, называемого подписью. Предложенный стандарт представляет собой результат оценки различных методик цифровой подписи. Принимая решение, Ы18Т следовал положению раздела 2 Акта «компьютерной безопасности (Сотри(ег 8есигИу Ас!) 1987 года» в том, что N187 разрабатывает стандарты, «...обеспечивающие рентабельную систему защиты и секретность Федеральной информации, выбирая из набора технологий защиты информации со сравнимой степенью безопасности наиболее оптималь¬ ную по рабочим и эксплуатационным характеристикам». Среди факторов, рассмотренных в процессе принятия решения, были уровень обеспечиваемой безопасности, простота аппаратной и программной реализации, простота экспорта за пределы США, применимость патентов, влияние на нацио¬ нальную безопасность и обеспечение правопорядка, а также степень эффек¬ тивности операций для создания подписи и ее проверки. Предполагалось, что обеспечить соответствующую защиту Федеральным системам можно многими способами. Выбранный способ удовлетворяет следующим требованиям: Л//8Г ожидает, что предложенный алгоритм можно будет использовать бесплатно. Широкое использование этой технологии, обусловленной его доступ¬ ностью, послужит к экономической выгоде правительства и общества. Выбранная технология обеспечивает эффективное использование операций подписи в приложениях, связанных с использованием смарт-карт. В этих прило¬ жениях операции подписи выполняются в слаборазвитой вычислительной среде, обеспечиваемой смарт-картами, а процесс проверки реализуется в более мощной вычислительной среде, например, на персональном компьютере, в аппаратном криптографическом модуле или на компьютере-мэйнфрейме.
542 Прикладная криптография Прежде чем все совсем запутается, позвольте мне разобраться с названиями: 08А - это алгоритм, а 088 - стандарт. Стандарт использует алгоритм. Алгоритм является частью стандарта. Реакция на заявление Заявление №8Т вызвало поток критических замечаний и обвинений. К сожалению, они скорее относились к сфере политике, чем науки. Компания Я8А Оа*а 8есигйу, 1пс., продающая алгоритм К8А, возглавила критиков алгоритма 088. Критики требовали, чтобы в стандарте использовался алгоритм К8А. Компания К8А081 заработала немало денег за лицензирование алгоритма К8А, и стандарт бесплатной цифровой подписи напрямую затрагивал самую суть ее коммерческих успехов. (Примечание: алгоритм 08А не обязательно свободен от нарушений патентного права, мы рассмотрим эту тему позднее). До заявления о принятии стандарта 088 компания К8АБ81 вело борьбу против «общих модулей», которые, возможно, позволят правительству подделывать подписи. Когда было объявлено, что алгоритм 08А не использует общих модулей, критика была продолжена с других позиций [154], как с помощью писем в Ш8Т, так и с помощью заявлений в прессе. (Четыре письма в N184 появились в [1326]. Читая их, не забывайте, что, по крайней мере, два автора, Ривест и Хеллман, были финансово заинтересованы в том, чтобы 088 не был принят). Многие большие компании, разрабатывающие программное обеспечение, которые уже лицензировали алгоритм К8А, также выступили против 088. В 1982 году правительство попросило предоставить ему алгоритмы с открытым ключом, чтобы выбрать один из них в качестве стандартного [537]. После этого в течение девяти лет от N184 не было никаких известий. Такие компании, как 1ВМ, Арр1е, Коуе11, ЬоШз, ИоЛЬеш Те1есош, Мюгозой, ОЕС и 8ип потратили много денег, реализуя алгоритм К8А. Они не были заинтересованы в потере инвестиций. Всего к концу первого периода обсуждения (28 февраля 1992 года) №8Т получил 109 замечаний. Рассмотрим по порядку критические замечания в адрес 08А. |/ Э8А нельзя использовать для шифрования или распределения ключей. Правильно, но стандарт и не ставил это своей целью. Это стандарт цифровой подписи. №8Т намеревается подготовить стандарт для шифрования открытым ключом. №8Т считает, что было бы большой несправедливостью оставить американский народ без стандарта шифрования с открытым ключом. По всей вероятности, предложенный стандарт цифровой подписи будет невозможно использовать для шифрования. (Но оказывается, что возможно - см. раздел 23.3). Это не означает, что стандарт подписи бесполезен. ✓ 08А был разработан агентством АНБ, и в алгоритме могут быть специальные лазейки. Большинство первоначальных комментариев были просто параноидальными: «Отрицание организацией N184 существующих алгоритмов без всяких видимых причин не внушает доверия к 088, а усиливает подозрение, что существует тайная программа, заложенная в фундамент национальной криптосистемы с отрытым ключом, которая нацелена на обеспечение организациям №8Т и/или АНБ
ГЛАВА 20. Алгоритмы цифровой подписи с открытым ключом 543 возможностей ее взлома» [154]. Серьезный вопрос относительно безопасности Э8А был поставлен Арженом Ленстрой (Ацеп ЬепзЦа) и Стюартом Хабером (8Шаг1 НаЬег) из компании ВеИсоге. Он будет рассмотрен ниже. ✓ Б8А медленнее Я8А [800]. Более или менее справедливое заключение. Скорости генерации подписи примерно одинаковы, но проверка подписи с помощью алгоритма Э8А от 10 до 40 раз медленнее. Однако генерация ключей выполняется быстрее. Но эта операция не критична с точки зрения быстродействия, пользователь редко применяет ее. С другой стороны проверка подписи - это наиболее частая операция. Проблема таких критических замечаний в том, что существует много способов настройки параметров тестирования для достижения нужных результатов. Предварительные вычисления могут ускорить генерацию подписи Б8А, но они не всегда возможны. Сторонники Я8А подбирают числа, выставляющие преимущества своего алгоритма, а сторонники 08А используют свой способ оптимизации. В любом случае компьютеры становятся все быстрее и быстрее. Хотя разница в скорости и существует, в большинстве приложений она не будет заметна. ✓ ПЗА - это стандарт с1е /ас1о. Вот два примера подобных жалоб. Ниже приведено письмо Роберта Фоллетта (ЯоЬег! РоНеЯ), директора программы по стандартам компании 1ВМ [570]: 1ВМ считает, что Ы18Т предложил стандарт схемы цифровой подписи, отличающийся от принимаемых международных стандартов. Пользователи и организации пользователей убедили нас в том, что поддержка международных стандартов, использующих Я8А, в самом ближайшем будущем станет необходимым условием продажи средств для обеспечения безопасности. А вот письмо Леса Шроера (Ьез 8Ьгоуег), вице-президента и директора компании Мо1ого1а [1444]: У нас должен быть единый, надежный, признанный всеми алгоритм цифровой подписи, который можно использовать по всему миру как между различными организациями, как американскими, так и неамериканскими, как принадлежащими компании Мо1ого1а, так и не принадлежащими ей. Отсутствие других жизнеспо¬ собных технологий цифровой подписи за последние восемь лет сделало Я8А фактическим стандартом.... Компания Мо1ого!а и многие другие компании... вложили в Я8А миллионы долларов. Мы сомневаемся во взаимодействии и возможности поддержки двух различных стандартов, такое положение приве¬ дет к росту расходов, задержкам развертывания систем и их усложнению... Многим компаниям хотелось, чтобы Ы18Т принял международный стандарт цифровой подписи 180 979, использующий Я8А [762]. Хотя это и серьезный аргумент, но его недостаточно, чтобы принять международный стандарт в качестве национального. Бесплатный стандарт лучше отвечал бы общественным интересам Соединенных Штатов. %/ Выбор национального алгоритма не был открытым, и не было дано достаточно времени для его анализа. Сначала Ш8Т утверждал, что разработал Э8А самостоятельно, затем признал помощь агентства АНБ. Наконец №8Т подтвердил, что АНБ является автором
544 Прикладная криптография алгоритма. Это многих обеспокоило - АНБ не внушает людям доверие. Но даже в этом случае алгоритм опубликован и доступен для анализа, кроме того, N181 продлил время анализа и комментирования алгоритма. ✓ Б8А может нарушать другие патенты. Это так. Этот вопрос будет рассмотрен в разделе описания патентов. ✓ Размер ключа слишком мал. Это единственно справедливая критика 088. Первоначально предлагалось использовать модуль длиной 512 битов [1149]. Так как стойкость алгоритма определяется сложностью вычисления дискретных логарифмов по заданному модулю, этот вопрос волновал многих криптографов. С тех пор вычисление дискретных логарифмов в конечном поле достигло определенных успехов, и размер в 512 битов стал недостаточным для долговременной подписи (см. раздел 7.2). Согласно Брайану ЛаМаккиа (Впап ЬаМассЫа) и Эндрю Одлыжко (Апбге\у ОсИугко), «... Даже безопасность, обеспечиваемая 512-битовыми простыми числами, по¬ видимому, находится на пределе...» [934]. В ответ на эти замечания №8Т сделал длину ключа переменной, от 512 до 1024 битов. Немного, но все-таки лучше. 19 мая 1994 года был издан окончательный вариант стандарта [1154]. При этом было сказано [542]: Этот стандарт может применяться всеми Федеральными департаментами и управлениями для защиты несекретной информации.... Этот стандарт будет использован при проектировании и реализации схем подписи с открытым ключом, которые разрабатывают Федеральные департаменты и управления, или которые разрабатываются по их заказу. Частные и коммерческие организации могут принять и использовать этот стандарт. Прежде чем пользоваться стандартом Э88 и реализовывать его, прочтите раздел о патентах, приведенный чуть далее в этой главе. Описание 05А Алгоритм 08 А представляет собой вариант алгоритмов подписи Шнорра и Эль-Гамаля; полное описание алгоритма приведено в [1154]. В алгоритме используются следующие параметры: р = простое число длиной Ь битов, где Ь принимает значение, кратное 64, в диапазоне от 512 до 1024. (В первоначальном стандарте размер р был фиксирован и равен 512 битам [1149]. Это ограничение вызвало множество критических замечаний, и №8Т отменил его [1154]). д= 160-битовый простой множитель р- 1. ^ = И(р~])/д тос! р, где Н - любое число, меньшее р~ 1, для которого И^р~^/д тоб р больше 1. * = число, меньшее д. у = 8х тоб р .
ГЛАВА 20. Алгоритмы цифровой подписи с открытым ключом 545 В алгоритме также используется однонаправленная хэш-функция: Н(т). Стандарт определяет использование алгоритма 8НА, рассмотренного в разделе 18.7. Первые три параметра, р, д и открыты и могут быть общими для пользователей сети. Закрытым ключом является х, а открытым —у. Чтобы подписать сообщение т: 1) Алиса генерирует случайное число к, меньшее д. 2) Алиса генерирует: г - (§к тоб р) тоб д з = (к~] (Н(т) + хг)) тоб д 3) Ее подписью служат параметры г и 5, которые она посылает Бобу. 4) Боб проверяет подпись, вычисляя м? = я-1 тоб ц щ = (Н(т) * м>) тоб д и2 = (гм) тоб д V = ((^ * уЫ2) тоб р) тоб д Если V = г, то подпись правильна. Доказательства математических соотношений можно найти в [1154]. В табл.20.1 представлено краткое описание алгоритма. Таблица 20.1. Подписи И8А Открытый ключ: р Простое число длиной от 512 до 1024 битов (может использоваться группой пользователей) я 160-битовый простой множитель р-1 (может использоваться группой пользователей) я = И^р~1)/я тоб р, где к - любое число, меньшее р-1, для которого /г (р-!)/</ тос1 р > | (Может использоваться группой пользователей) У = §хтой р (р-битовое число) Закрытый ключ: X <д (160-битовое число)
546 Прикладная криптография Подпись: к случайно выбираемое число, меньшее ц Г (подпись) = (%к той р) той ц 3 (подпись) = (кГх (Н(т) + хг)) той ц Проверка: IV = я-1 той ц Щ = (Н(т) * >г)) той ^ и2 ~ (/V) той ц V = ((&"1 * /2) той р) той ц Если V = г, то подпись правильна. Ускоряющие предварительные вычисления В табл. 20.2 приведены примеры скорости работы программных реализаций Б8А [918]. Таблица 20.2. Скорость ВБА для различных длин модулей с 160-битовым показателем степени (на БРАКСII) 512 битов 768 битов 1024 бита Подпись 0.20 с 0.43 с 0. 57 с Проверка 0.35 с 0.80 с 1.27 с Работу практических реализаций Б8А часто можно ускорить с помощью предвари¬ тельных вычислений. Обратите внимание, что значение г не зависит от сообщения. Можно создать массив случайных значений к, и затем рассчитать значения г для каждого значения к. Можно также вычислить кЛ для каждого из этих значений к. Затем, когда приходит сообщение, можно вычислить .у для заданных значений г и к'\ Эти предварительные вычисления заметно ускоряют БЗА. В табл. 20.3 приведены сравнения времени вычисления ОЗА и ЯЗА для конкретной реализации смарт-карты [1479]. Вычисления вне карты выполнялись на персональном компьютере 80386/33 МГц. (Р) указывает на открытые параметры вне карты, а (8) - на закрытые параметры вне карты. В обоих алгоритмах используется 512-битовый модуль.
ГЛАВА 20. Алгоритмы цифровой подписи с открытым ключом 547 Таблица 20.3. Сравнение времени вычислений К8А и В8А В8А К8А В8А С общими /7, % Глобальные вычисления Вне карты (Р) - Вне карты (Р) Генерация ключа 14 сек Вне карты (3) 4 сек Предварительные вычисления 14 сек - 4 сек Подпись 0.03 сек 15 сек 0.03 сек Проверка 16 сек 1.5 сек 10 сек 1-5 сек вне карты (Р) 1-3 сек вне карты (Р) Генерация простых чисел для Э5А Ленстра и Хабер указали, что одни модули ЭЗА взломать намного легче, чем другие [950]. Если кто-нибудь заставит пользователей сети использовать один из таких слабых модулей, то их подписи будет легче подделать. Тем не менее, это не представляет проблемы по двум причинам: слабые модули легко обнаружить, и они так редки, что вероятность случайного использования одного из них пренебрежимо мала, меньше, чем вероятность случайного получения составного числа на выходе вероятностной процедуры генерации простых чисел. В [1154] №8Т рекомендовал конкретный метод генерации двух простых чисел р^^^, где <7 является делителем р- 1. Длина простого числа р должна лежать в пределах 512 и 1024, и быть кратной 64 битам. Длина д равна 160 битам. Пусть Ь - 1 = 160п+Ь, где Ь - это длина р,апкЬ~ два числа, причем Ъ меньше 160. 1) Выберем произвольную последовательность длиной, по крайней мере, 160 битов, и назовем ее 5. Пусть % - это длина 5 в битах. 2) Вычислим V = ЗНА (5) 0 ЗНА ((Я + 1) тоб 2*), где алгоритм 8НА описан в разделе 18.7. 3) Образуем <7, установив наибольший и наименьший значащие биты V в 1. 4) Проверим, является ли <7 простым. 5) Если д не является простым, то вернемся на этап 1. 6) Пусть С= 0 иА=2. 7) Для к= 0, 1.., л, пусть Р* = ЗНА ((5+ЛГ+*) тоб 2*) 8) Пусть - целое число IV = У0 +2т Ух + ... + 2160(п_1) У„_, +2Шп (У„ тос!2Ь)
548 Прикладная криптография и пусть Х = Ш + 21~х Обратите внимание, что X- это 1-битовое число. 9) Пусть р = X - ((X тоб 2д) -1)). Обратите внимание, чтор сравнимо с 1 по модулю 2д. 10) Еслир < 2Ь’\ то перейдем на этап 13. 11) Проверим, является ли р простым. 12) Если да, то перейдем на этап 15. 13) Пусть С = С + 1 и N = N + п + 1. 14) Если С = 4096, вернемся к этапу 1. В противном случае перейдем на этап 7. 15) Сохраним значения 8 и С, использованные для генерации р и д. В работе [1154] переменная 5 называется «инициализацией», С названа «счетчиком», а N названо «смещением». Смысл этого примера в том, что он является опубликованным способом генерации ряд. Этот метод позволяет избежать слабых значений р и д во всех практических применениях. Если кто-то вручит вам какие-то числа р и д, вас может заинтересовать, как эти числа были получены. Однако если вы получите значения 5 и С, использованные при генерации случайных чисел р и д, вы сможете повторить всю процедуру самостоятельно. Использование однонаправленной хэш-функции (в стандарте исполь¬ зуется 8НА) не позволяет получить 5 и С по значениям р и д. Достигаемая при этом безопасность выше обеспечиваемой алгоритмом К8А. В Я8А простые числа хранятся в секрете. Любой может генерировать фальшивое простое число или число, форма которого упрощает разложение на множители. Не зная закрытого ключа, это никогда не проверишь. В Э8А, даже если закрытый ключ неизвестен, можно убедиться, что р и д генерировались случайным образом. Шифрование Эль-Гамаля с ОБА Раздавались голословные утверждения, что алгоритм Э8А потому так нравится правительству, что его нельзя использовать в качестве алгоритма шифрования. Однако можно использовать вызов функции Б8А для шифрования Эль-Гамаля. Предположим, что алгоритм Б8А реализован как вызов одной функции: БЗАзхдп (р, я, д, к, х, Ь, г, з) Задав входные параметры р, д, х и А, можно получить параметры подписи: г и 5. Чтобы зашифровать сообщение т по алгоритму Эль-Гамаля с помощью открытого ключа у, выберем случайное число к и вызовем: ОЗАз±дп (р, р, д, к, 0, 0, г, з)
ГЛАВА 20. Алгоритмы цифровой подписи с открытым ключом 549 Возвращенное значение г соответствует переменной а из схемы ЕЮатаЬ Отбросим 5. Затем вызовем: 05Аз±дп (р, р, у, к, 0, 0, г, з) Переименуем величину г в и, отбросим 5. Вызовем: 03Аз±дп(р, р, т, 1, и, 0, г, з) Отбросим значение г. Возвращенное значение 5 соответствует переменной Ъ в схеме Эль-Гамаля. Теперь у вас есть шифртекст и значения а и Ъ. Расшифрование также просто. Используя закрытый ключ х и шифртекст сообщений а и Ь, вызовем: БЗАзхдп (р, р, а, х, 0, 0, г, з) Значение г равно а* тоб р. Назовем его е. Затем вызовем: БЗАз±дп(р, р, 1, е, Ь, 0, г, з) Значение 5 и будет открытым текстом сообщения т. Этот способ работает не со всеми реализациями Э8А - в некоторых из них могут быть зафиксированы значения р и д или длины некоторых других параметров. Тем не менее, если реализация является достаточно общей, то можно шифровать сообщение, не используя ничего, кроме функции цифровой подписи. Шифрование К5А с ОБА Шифрование Я8А еще проще. Используя модуль п, сообщение т и открытый ключ е, вызовем функцию: БЗАзхдп (п, п, т, е, 0, 0, г, з) Возвращенное значение г и есть шифртекст. Расшифрование Я8А делается точно так же. Если с1 - закрытый ключ, то вызов БЗАзхдп (п, п, т, с!, 0, 0, г, з) возвращает открытый текст как значение г. Стойкость ОБА При использовании с ключом 512 битов алгоритм Б8А недостаточно стоек для обеспечения длительной безопасности, но он вполне надежен при ключе 1024 битов. В своем первом заявлении на эту тему организация АНБ так комментировала утверждение Джо Эбернети (1ое АЪепШЬу) из ТНг Нож1оп СкгопШе по поводу лазейки в стандарте Б88 [363]: По поводу предполагаемой лазейки в 038. Мы считаем, что термин «лазейка» вносит путаницу, так как подразумевается, что через лазейку можно как-то дешифровать (прочитать) зашифрованные сообщения, подписываемые с помощью й88, без разрешения отправителя.
550 Прикладная криптография Алгоритм 055 не предназначен для шифрования каких-либо данных. Реальная проблема состоит в наличии у кого-либо возможностей при помощи 055 подде¬ лать подпись, и, таким образом, дискредитировать всю систему. Мы категори¬ чески утверждаем, что вероятность подделки кем-либо - включая агентство АНБ - подписи 055, при правильном использовании стандарта бесконечно мала. Более того, предположение о наличии лазеек справедливо для любой системы аутентификации с открытым ключом, включая РЗА. Утверждение, что это касается только стандарта 055 (аргумент, популярный в прессе), полностью неверно. Вопрос еще и в реализации и способе выбора простых чисел. Мы обращаем ваше внимание на недавнюю конференцию ЕШЮСКУРТ, где «за круглым столом» обсуждался вопрос о наличии лазеек в 055. Одним из участников обсуждения был исследователь из компании ВеНсоге, один из тех, кто впервые заявил о наличии лазеек, и по нашему пониманию участники дискуссии, включая этого исследователя, пришли к выводу, что не надо ставить вопрос о лазейках в 055. Более того, всеми было признано, что вопрос о лазейке является тривиальным и был раздут прессой. Однако, пытаясь по просьбе Л//5Г ответить на обвинение о лазейке, мы разрабо¬ тали процесс генерации простых чисел, позволяющий избежать выбора одного слабых простых чисел, количество которых относительно невелико, но их исполь¬ зование ослабляет 055. Кроме того, МЗТ настаивает на использовании модулей большей длины, вплоть до 1024, что даже снимает необходимость в использовании разработанного процесса генерации простых чисел во избежании генерации слабых чисел. Очень важным дополнительным моментом, на который часто не обращают внимание, является тот факт, что при использовании 055 простые числа общедоступны и, следовательно, могут быть предметом открытого изучения. Подобную проверку способны пройти не все системы с открытым ключом. Целостность любой системы защиты информации требует обратить внимание на реализацию. Учитывая уязвимость систем с миллионами равноправных пользо¬ вателей, АНБ по традиции настаивает на использовании централизованных доверенных центров как на способе минимизации риска. Хотя мы по просьбе МЗТ и разработали ряд технических модификаций 055, позволяющих реализовать менее централизованный подход, все же нужно выделить ту часть объявления о стандарте 055 в Федеральном Регистре, в которой говорится: «Хотя этот стандарт должен обеспечить выполнение общих требований к безопасной генерации цифровых подписей, соответствие стандарту само по себе вовсе не обеспечивает безопасность конкретной реализации. Ответственное лицо в каждом департаменте или управлении должно гарантировать, что общая реализация системы гарантирует приемлемый уровень безопасности. МЗТ продолжит работу с правительственными пользователями, обеспечивая правиль¬ ность реализаций». Наконец, мы изучили все утверждения о небезопасности 055, и они нас не убедили. Стандарт 055 был тщательно изучен в АНБ, что позволило нашему Директору по безопасности информационных систем разрешить использовать этот стан¬ дарт для подписи несекретных данных, обрабатываемых в определенных разведы¬ вательных системах, и даже для подписи секретных данных в ряде систем. Мы считаем, что подобное признание свидетельствует о невозможности какого-либо вероятного вскрытия системы защиты, обеспечиваемой 055 при его правильной реализации и использовании. Основываясь на требованиях правительства США к технике и безопасности цифровых подписей, мы считаем, что 055 является лучшим выбором. В действительности, 055 выступает в качестве экспери¬ ментального проекта Системы защиты сообщений (йеГепзе Меззаде Зуз(ет), призванного гарантировать подлинность электронных сообщений для жизненно важных команд и контрольной информации. Эта первоначальная демонстрация
ГЛАВА 20. Алгоритмы цифровой подписи с открытым ключом 551 включает участие Комитета начальников штабов, военных служб и оборонных ведомств и проводится в кооперации с А//5Г. Я не собираюсь комментировать правдивость заявления агентства АНБ. Принимать его на веру или нет - зависит от вашего к нему отношения. Атаки, направленные на к Для каждой подписи нужно новое значение к, которое должно выбираться случайным образом. Если Ева узнает значение к, которое Алиса использовала для подписи сообщения, быть может, воспользовавшись некоторыми свойствами генератора случайных чисел, выдающего к, она сможет взломать закрытый ключ Алисы х. Если Ева добудет два сообщения, подписанные с помощью одного и того же к, то, даже не зная значение к, она сможет раскрыть х. А с помощью х Ева сможет тайно подделывать подпись Алисы. В любой реализации ОБА для безопасности системы очень важен хороший генератор случайных чисел [1468]. Опасности общих модулей Хотя ИЗБ не определяет применение пользователями общего модуля, различные реали¬ зации могут воспользоваться такой возможностью. Например, Налоговое управление рассматривает возможность применения ОББ для электронного подтверждения нало¬ говых деклараций. Что, если эта организация потребует, чтобы все налогоплательщики страны использовали общие р и д? Общий модуль слишком легко становится мишенью для криптоанализа. Пока слишком рано обсуждать различные реализации ОББ, но причины для беспокойства есть. Скрытый канал в ОБА Гус Симмонс (Сиз Бттюпз) обнаружил в ОБА скрытый канал [1468, 1469] (см. раздел 23.3). Этот скрытый канал позволяет встраивать в подпись тайное сообщение, которое может быть прочитано только тем, у кого есть ключ. Согласно Симмонсу, это «знаковое совпадение», что «все очевидные недостатки скрытых каналов, использующих схему Эль-Гамаля, могут быть устранены» в ОББ, и что ОББ «на сегодня обеспечивает наиболее подходящую среду для скрытых коммуникаций». Организации №БТ и АНБ не комментировали этот скрытый канал, никто даже не знает, догадывались ли они о такой возможности. Так как этот скрытый канал позволяет при недобросовестной реализации ОББ передавать с каждой подписью часть закрытого ключа, никогда не пользуйтесь реализацией ОББ, если вы не доверяете разработчику реализации. Патенты Патентом ОБА владеет Дэвид Кравиц (ОауМ Кгауйх), ранее работавший в агентстве АНБ [897]. Согласно МБТ [538]: Ы/8Т в интересах общества стремится сделать технологию Э88 доступной бесплатно по всему миру. Мы считаем, что эта технология может быть запатентована, и что никакие другие патенты не применимы к Э88, но мы не можем дать твердых гарантий этого до получения патента.
552 Прикладная криптография Даже если все это так на самом деле, три владельца патентов заявляют, что 08А нарушает их патенты: на схемы Диффи-Хеллмана (см. раздел 2.2.1) [718], Меркла- Хеллмана (см. раздел 19.2) [720] и Шнорра (см. раздел 21.3) [1398]. Патент Шнорра является источником наибольших сложностей. Срок действия двух других патентов истекает 1997 году, а патент Шнорра действителен до 2008 года. Алгоритм Шнорра был разработан не на правительственные деньги. В отличие от патентов РКР у правительства США нет прав на патент Шнорра, и Шнорр запатентовал свой алгоритм по всему миру. Даже если суды США вынесут решение в пользу 08А, неясно, какое решение примут суды в других странах. Сможет ли международная корпорация принять стандарт, который законен в одних странах и нарушает патентное законодательство в других? Нужно время, чтобы решить эту проблему, к моменту написания этой книги этот вопрос не был решен даже в Соединенных Штатах. В июне 1993 года №8Т предложил выдать РКР исключительную патентную лицензию на 08А [541]. Соглашение провалилось после протестов общественности, и стандарт вышел в свет без всяких соглашений. М8Т заявил [542]: ... АИ ВТ рассмотрел заявления о возможном нарушении патентов и сделал вывод, что эти заявления несправедливы. Итак, стандарт официально принят, в воздухе пахнет судебными процессами, и никто не знает, что делать. N181 заявил, что она поможет защититься людям, обвиненным в нарушении патентного законодательства при использовании 08А в работе по правительственному контракту. Остальные, по-видимому, должны позаботиться о себе сами. Проект банковского стандарта, использующего 08А, выдвинут АИ81 [60]. №8Т работает над внедрением стандарта Э8А в правительственный аппарат. Компания 8Ье11 ОН сделала 08А своим международным стандартом. О других предложенных стандартах 08А мне неизвестно. 20.2. Варианты Э5А Описываемый ниже вариант упрощает вычисления, необходимые для создания подписи, поскольку не заставляет вычислять к'1 [1135]. Все используемые параметры - такие же, как в стандартном 08А. Для подписи сообщения т Алиса генерирует два случайных числа, кис1, меньшие <7. Подпись вычисляется так: г = (%к тос! р) тоб <7 з = (Н (т) + хг) * ^ тоб д {= М тоб ^ Боб проверяет подпись, вычисляя: м? = 1/ 8 тоб д щ = (Я (т) * м>) тоб <7 и2 = (гм) тоб <7 Если г = ((%щ * у1*2) тоб р) тоб д, то подпись правильна.
ГЛАВА 20. Алгоритмы цифровой подписи с открытым ключом 553 Следующий вариант 08А упрощает вычисления при проверке подписи [1040, 1629]. Все используемые параметры - такие же, как в стандартном Б8А. Для подписи сообщения т Алиса генерирует случайное число к, меньшее <7. Подпись вычисляется так: г = (%к тоё р) тоё ^ 5 = к*(Н (т) + лг)"1 тоё д Боб проверяет подпись, вычисляя: щ - (Я (т) * 5) тоё <7 и2 = (зг) тоё ^ Если г - * у 4) тоё р) тоё ^, то подпись правильна. Еще один вариант 08А разрешает пакетную проверку, Боб может проверять подписи пакетами [1135]. Если все подписи правильны, то работа Боба закончена. Если одна из них неправильна, то ему еще нужно понять, какая. К несчастью, это небезопасно. Либо подписывающий, либо проверяющий может легко создать набор фальшивых подписей, который удовлетворяет критерию проверки пакета подписей [974]. Существует также вариант генерации простых чисел для 08А, включающий внутрь р величину <7 и параметры, используемые для генерации простых чисел. Влияет ли эта схема на безопасность Б8А, все еще неизвестно. 1) Выберем произвольную последовательность, по крайней мере, 160 битов, и назовем ее 5. Пусть § - это длина 5 в битах. 2) Вычислим (7= 8НА (5) 0 8НА ((5+ 1) тоё 28), где функция 8НА описана в разде¬ ле 18.7. 3) Образуем <7, установив наибольший и наименьший значащие биты Ц в 1. 4) Проверим, является ли <7 простым. 5) Пусть р - это конкатенация <7, 5, С и 8НА(5). Значение С установлено равным 32 нулевым битам. 6) р = р-(р тоё <7) +1 7) р = р + Я 8) Если С в р равно 0x7ШШТ, вернемся на этап 1. 9) Проверим, является ли р простым. 10) Если р - составное число, вернемся на этап 7. Преимущество данного варианта в том, что здесь не нужно хранить значения С и 8, использованные для генерации р и <7, поскольку они включены в состав р. Для приложений, работающих в условиях недостатка памяти, например, для смарт-карт, это может быть важно.
554 Прикладная криптография 20.3. Алгоритм цифровой подписи ГОСТ Это Российский стандарт цифровой подписи, официально называемый ГОСТ Р 34.10-94 [656]. Алгоритм очень похож на 08А, и использует следующие параметры: р = простое число, длина которого лежит в диапазоне либо 509-512 битов, либо 1020-1024 битов. ^ = простое число - множитель р - 1, длиной от 254 до 256 битов. а = любое число, меньшее р - 1, для которого ац тоб р = 1 х = число, меньшее #. у = ах тоб р Этот алгоритм также использует однонаправленную хэш-функцию Н(х). Стандарт определяет использование хэш-функции ГОСТ Р 34.11-94 (см. раздел 18.11), основанной на симметричном алгоритме ГОСТ 28147-89 (см. раздел 14.1) [657]. Первые три параметра, /?, # и я, открыты и могут совместно использоваться пользо¬ вателями сети. Закрытым ключом служит х, а открытым - у. Чтобы подписать сообщение т: 1) Алиса генерирует случайное число к, меньшее #. 2) Алиса генерирует г = (ак тоб р) тоб # 5 = (хг + к (Н (т))) тоб <7 Если Н(т) тоб # будет равным нулю, то установите его в 1. Если г =0!, то выберите другое значение к и начните снова. Подписью служат два числа: г тоб 2256 и ^ тоб 2256, Алиса посылает их Бобу. 3) Боб проверяет подпись, вычисляя V = Н(т)ч~2 тоб# 2Х = (л>) тоб # = ((<7 “ г) * V) тоб # и - ((а21 * у22) тоб р) тоб # Если и=г, то подпись правильная. 1 Или 3 = 0.- Прим. ред.
ГЛАВА 20. Алгоритмы цифровой подписи с открытым ключом 555 Эта схема отличается от БЗА уравнением для подсчета з; в ЭЗА значение ^ = (хг + к~1 (Н (т))) шос! ^, что дает другое уравнение проверки. Любопытно, однако, что длина <7 равна 256 битам. Большинству западных криптографов кажется достаточным <7 около 160 битов длиной. Может быть, это просто следствие русской привычки играть в сверхбезопасность. Стандарт используется с начала 1995 года и не закрыт грифом «Для служебного пользования», что бы это ни значило2. 20.4. Схемы цифровой подписи с использованием дискретных логарифмов Схемы подписи Эль-Гамаля, Шнорра (см. раздел 21.3) и Б8А весьма похожи. В сущности, все они являются тремя разновидностями общей схемы цифровой подписи, использующей проблему дискретных логарифмов. Вместе с тысячами других схем подписей они являются частью одного и того же семейства [740, 741, 699, 1184]. Выберем большое простое число р, и установим <7 равным либо р- 1, либо большому простому множителю р - 1. Затем выберем значение # как число в диапазоне от 1 до /?, для которого = 1 (тоб р). Все эти числа открыты, и могут быть совместно использованы группой пользователей. Закрытым ключом является х, меньшее <7. Открытым ключом служит у = §х тоб ^. Для создания подписи сообщения т вначале выберем случайное значение к, меньшее и взаимно простое с ним. Если <7 тоже простое число, то годится любое к, меньшее Сначала вычислим: г = §к тоб р Обобщенное уравнение подписи примет вид: ак = Ъ + сх тоб <7 Коэффициенты а, Ь и с могут принимать различные значения. Каждая строка табл. 20.4 предоставляет шесть возможностей. При проверке подписи получатель должен убедиться, что: га = %ь у° тоб р Данное уравнение называется уравнением проверки. 2 В настоящее время принят новый ГОСТ на цифровую подпись, основанный на алгоритмах на эллиптических кривых. - Прим. ред.
556 Прикладная криптография Таблица 20.4. Возможные перестановки а, Ь и с(г' = г тос1 д) ±г' ±8 т ±г' т ±5 1 ±г’ т ± тз 1 ±тг' ± Г' 8 1 ± тз ±г'з 1 В табл. 20.5 перечислены возможные варианты подписи и проверки, полученные только из первой строки возможных значений а,Ь\\с без учета вариантов выбора знака ±. Таблица 20.5. Схемы цифровой подписи с использованием дискретных логарифмов Уравнение подписи Уравнение проверки (1) г'к = з + тх тоб д / - ут тоб р (2) г'к-тл- зх тоб д гг' = §т /тоб р (3) зк = г' + тх тоб д г* =8г'ут тоб р (4) зк = т + г'х тоб д г* = §т / тоб р (5) тк - з + г'х тоб д гт = в* у'той р (6) тк-г' + зх тоб д гт - Ул т°б р Всего имеется шесть различных схем цифровых подписей. Добавление минуса увеличивает их количество до 24. При использовании всех возможных значений а, Ь и с число схем доходит до 120. Схемы Эль-Гамаля [518, 519] и Э8А [1154], в сущности, основаны на уравнении (4), а другие схемы - на уравнении (2) [24, 1629]. Схема Шнорра [1396, 1397], как и другая схема [1183], тесно связана с уравнением (5). Уравнение (1) можно изменить так, чтобы получить схему, предложенную в [1630]. Остальные уравнения - новые. Более того, любую из этих схем можно еще более уподобить Э8А, определив г как г - (%к тоб р) тоб д При использовании того же самого уравнения подписи, получим следующее уравнение проверки: щ ~ а~] Ъ тоб д и2 = а~] с тоб д г - * /2) тоб р) тоб д
ГЛАВА 20. Алгоритмы цифровой подписи с открытым ключом 557 Существуют и две другие возможности подобных модификаций Б8А [740, 741]. Такие операции можно проделать с каждой из 120 схем, доведя общее число схем цифровой подписи, использующих дискретные логарифмы, до 480. Но и это еще не все. Дополнительные обобщения и изменения приводят более чем к 13000 вариантам (не все из них достаточно эффективны) [740, 741]. Одним из аспектов использования К8А для цифровой подписи является свойство, называемое восстановлением сообщения. При проверке подписи К8А вы вычисляете т. Затем вычисленное значение т сравнивается с сообщением и проверяется, правильна ли подпись сообщения. В предыдущих схемах восстановить т при вычислении подписи невозможно, вам потребуется выбрать пробное значение т, которое и используется в уравнении проверки. Но, оказывается, можно построить вариант с восстановлением сообщения для всех вышеприведенных схем. Для подписи сначала вычислим: г = т§к тоб р Далее в уравнении подписи заменим т единицей. После этого можно преобразовать уравнение проверки так, чтобы т могло быть вычислено непосредственно. То же самое можно предпринять для сходных с Э8А схем: г = (т§к тоб р) тоб <7 У всех вариантов безопасность одинакова, поэтому имеет смысл выбирать схему по легкости вычисления. Работу большинства схем замедляет необходимость вычислять обратные значения. Как оказывается, одна из этих схем позволяет вычислять и уравнение подписи, и уравнение проверки без использования обратных значений, при этом еще и восстанавливая сообщение. Она называется схемой р-^Е\У [1184]. г = т§~к тоб р е — к — г'х тоб р Сообщение т восстанавливается (и проверяется подпись) с помощью вычисления: т = §*уг г тоб р В ряде вариантов одновременно подписывается по два-три блока сообщения [740], другие варианты можно использовать для подписей «вслепую» [741]. Исследование схем представляет собой весьма обширную область деятельности. Все различные схемы цифровой подписи с использованием дискретных логарифмов должны быть собраны в логически-согласованную структуру. Лично я считаю, что это окончательно положит конец спорам между приверженцами схем Шнорра [1398] и Б8А [897]: алгоритм 08А не является производным ни от схемы Шнорра, ни от схемы Эль- Гамаля. Все три алгоритма являются частными случаями описанной общей схемы, и эта общая схема не запатентована.
558 Прикладная криптография 20.5. Схема Онга-Шнорра-Шамира Данная схема создания подписи использует многочлены по модулю п [1219, 1220]. Выбирается большое целое число (при этом нет нужды знать разложение п на множители). Затем выбирается случайное число к, взаимно простое с п, и вычисляется значение к, равное: к - -к2 тоб п = ~{к~х )2 тоб п Открытым ключом служат значения кип; а. закрытым ключом - значение к. Чтобы подписать сообщение М, сначала генерируется случайное число г, взаимно простое с п. Затем вычисляется: 5, = 1/2 (М1г + г) тоб п 82 =к/2(М/г-г) тоб и Подписью является пара чисел 81 и 82. При проверке подписи следует убедиться, что: + к * 822 = М(тоб п) Описанный здесь вариант схемы основан на квадратных многочленах. При его опубликовании в [1217] всем, добившимся успеха при криптоанализе, было предложено вознаграждение в 100$. Нестойкость схемы была доказана [1255, 18], но это не остановило ее авторов. Они предложили модификацию алгоритма, основанную на кубических многочленах, также оказавшуюся небезопасной [1255]. Авторы предложили версию на базе многочленов четвертой степени, но она также была взломана [524, 1255]. Вариант схемы, в котором решены все эти проблемы, описан в [1134]. 20.6. Е51СМ ЕЗЮИ - это схема цифровой подписи, разработанная компанией ОТТ 1арап [1205, 583]. Она разрекламирована как схема, не менее безопасная, чем ЯЗА или ЭЗА, но работающая намного быстрее при тех же размерах ключа и подписи. Закрытым ключом служит пара больших простых чисел р и д. Открытым ключом является значение п, вычисляемое так: я = р2 * <? Далее Я - это хэш-функция, применяемая к сообщению т, причем значение Н(т) находится в пределах от 0 до п-1. Используется также параметр безопасности к, который будет вкратце рассмотрен. 1) Алиса выбирает случайное число х, меньшее /?д. 2) Алиса вычисляет: наименьшее целое, которое больше или равно (Н(т) - хк тоб п)/ р^ з = х + ((м?/кхк~1 тоб р) рд
ГЛАВА 20. Алгоритмы цифровой подписи с открытым ключом 559 3) Алиса посылает 5 Бобу. 4) Для проверки подписи Боб вычисляет / той п. Кроме этого, он вычисляет а, наименьшее целое, которое больше или равно удвоенному числу битов п, деленному на 3. Если Н(т) меньше или равна / той л, и если зк той п меньше Н(т)+2а, то подпись считается правильной. Этот алгоритм можно ускорить, выполнив ряд предварительных вычислений. Предварительные вычисления могут быть выполнены в произвольный момент времени и никак не связаны с подписываемым сообщением. Выбрав х, Алиса может разбить этап 2 на два подэтапа. Сначала: 2а. Алиса вычисляет: и-хк той п V = / /(кхк~') той р 2Ъ. Алиса вычисляет: = наименьшее целое, которое больше или равно (Н(т)-и)! рд з-х + ((м;у той р) рд Для обычно используемых размеров чисел предварительные вычисления ускоряют процесс подписи на порядок. Почти вся трудная работа выполняется именно на стадии предварительных вычислений. Обсуждение операций модулярной арифметики, выполняемых при ускорении схемы Е81СГЫ, можно найти в [1625, 1624]. Этот алгоритм можно расширить для работы с эллиптическими кривыми [1206]. Безопасность Е51СМ Когда этот алгоритм был предложен впервые, к было выбрано равным 2 [1215]. Такая схема была быстро взломана Эрни Брикеллом (Егте ВпскеН) и Джоном ДеЛаурентисом (1оЬп БеЬаигепйз) [261], которые распространили свое вскрытие и на случай к = 3. Модифицированная версия этого алгоритма [1203] была взломана Шамиром [1204]. Вариант, предложенный в [1204], был взломан в [1553]. Е81СГЫ - это текущая версия алгоритмов, образующих целое семейство. Попытка вскрыть Е810Ы [963] оказалась безрезультатной. В настоящее время авторы рекомендуют использовать следующие значения к: 8, 16, 32, 64, 128, 256, 512 и 1024. Авторы также рекомендуют, чтобы значения р и д были не меньше 192 битов каждое, что создает п не менее чем 576 битов в длину. (Я думаю, что п должно быть еще в два раза больше). Авторы считают, что с такими значениями параметров, безопасность Е8КЖ равна безопасности алгоритму К8А или Рабина. Плюс к тому, выполненный ими анализ показывает, что скорость алгоритма ЕЗКЖ намного выше, чем у алгоритмов К8А, Эль-Гамаля и Э8А [582]. Патенты Алгоритм Е8КЖ запатентован в Соединенных Штатах [1208], Канаде, Англии, Франции, Германии и Италии. Любой, кто хочет получить лицензию на алгоритм,
560 Прикладная криптография должен обратиться в Отдел интеллектуальной собственности 1ЧТТ (МеПесШа! Ргорег1у ЭераПтеп!, ЭТТ, 1-6 СсЫзапуа^сЬо, 1-сЬоте, СЫуаба-ки, 100 .1арап). 20.7. Клеточные автоматы Совершенно новый подход был предложен Папуа Гуамом (Рариа Сиат) [665], суть которого сводится к использованию в криптосистемах с открытым ключом клеточных автоматов. Эта система все еще слишком нова и не прошла через тщательное тестирование, но предварительное исследование показало, что у нее могут быть такие же криптографически слабые места, как и у других систем [562]. Тем не менее, это перспективная область исследований. Свойством клеточных автоматов является то, что даже если они инвертируемы, невозможно вычислить предка произвольного состояния, инвертировав правило нахождения потомка. Схема выглядит очень похожей на однонаправленную хэш-функцию с потайным входом. 20.8. Другие алгоритмы с открытым ключом За эти годы было предложено и вскрыто множество других алгоритмов с открытым ключом. Алгоритм Мацумото-Имая (Ма1зито1о-1та1) [1021] был вскрыт в [450]. Алгоритм Кейда (Сабе) был впервые предложен в 1985 году, взломан в 1986 [774] и затем доработан в том же году [286]. Помимо этих атак, существуют общие атаки на основе декомпозиции многочленов над конечными полями [605]. К любому алгоритму, безопасность которого определяется композицией многочленов над конечными полями, нужно относиться со скептицизмом, если не с откровенным подозрением. Алгоритм Ягисавы (Уа§1за\уа) объединяет возведение в степень тоб р с арифметикой тоб р-1 [1623]; он был взломан в [256]. Другой алгоритм с открытым ключом, Тсуджи- Куросавы-Итоха-Фудзиоки-Мацумото (Тзи]и-Кигоза\уа-11оЬ-Ри]1ока-Ма1зито1о) [1548], также оказался небезопасным [948]. Нестойкой [717] была и третья система, Лучио- Маццоне (Ьиссю-Маягопе) [993]. Схема подписи на базе бирациональных перестановок [1425] была взломана на следующий день после ее представления [381]. Несколько схем подписей предложил Тацуаки Окамото (Та1зиак1 Окато1о): было доказано, что одна из них так же безопасна, как проблема дискретного логарифма, а другая - как проблема дискретного логарифма и проблема разложения на множители [1206]. Аналогичные схемы представлены в [709]. Густавус Симмонс (СизШуиз 81ттопз) предложил использовать в качестве основы алгоритмов с открытым ключом .1-алгебру [1455, 145]. От этой идеи пришлось отказаться после изобретения эффективных методов разложения многочленов на множители [951]. Были также изучены специальные полугруппы многочленов [1619, 962], но и это ничего не дало. Харальд Нидеррейтер (Нага1б ТЛебеггейег) предложил алгоритм с открытым ключом на базе последовательностей регистров сдвига [1166]. Другой алгоритм использовал слова Линдона (Ьупбоп) [1476], а третий - исчисление высказываний [817]. Безопасность одного из недавних алгоритмов с открытым ключом основывалась на задаче о покрытии матрицы [82]. Тацуаки Окамото и Казуо Охта (Кагио ОЬ1а) провели сравнение ряда схем цифровой подписи в [1212].
ГЛАВА 20. Алгоритмы цифровой подписи с открытым ключом 561 Перспективы создания радикально новых и различных алгоритмов с открытым ключом неясны. В 1988 году Уитфилд Диффи отметил, что большинство алгоритмов с открытым ключом основываются на одной из трех трудных задач [492, 494]: 1) Укладка ранца. Дано множество уникальных чисел, найти подмножество, сумма которого равна У. 2) Дискретное логарифмирование. Если р - простое число, а § и М - целые, найти х, для которого выполняется: §х = М (тоб р) 3) Разложение на множители. Если М- произведение двух простых чисел, то либо 2с. Разложить У на множители, 26. Для заданных целых чисел М и С найти значение й, для которого Ми = С (тос! АО 2е. Для заданных целых чисел ей С найти М, для которого Ме = С (тоб У) 2Г Для заданного целого числа х определить, существует ли целое число у, такое что х = у1 (тоб У) Согласно Диффи [492, 494], проблема дискретных логарифмов была предложена Дж. Гиллом (Г СШ), проблема разложения на множители - Кнутом, а проблема укладки ранца - самим Диффи. Такая ограниченность математических основ криптографии с открытым ключом немного беспокоит. Прорыв в решении проблемы дискретных логарифмов или разложения на множители сделает небезопасными целые классы алгоритмов с открытым ключом. Диффи показал [492, 494], что подобный риск смягчается двумя факторами: ✓ Все операции, на которые сейчас опирается криптография с открытым ключом - умножение, возведение в степень и разложение на множители - представляют собой фундаментальные арифметические явления. Веками они были предметом интенсив¬ ного математического изучения, и рост внимания к ним, вызванный применением в криптосистемах с открытым ключом, увеличил, а не уменьшил наше доверие. ^ Наша способность выполнять большие арифметические вычисления растет равномерно, и имеющиеся ныне средства позволяют нам реализовывать крипто¬ системы с числами такой величины, что эти системы станут уязвимыми только в случае радикальных прорывов в разложении на множители, дискретных логарифмах или извлечении корней. Как мы уже говорили в этой главе, не все алгоритмы с открытым ключом, основанные на указанных выше проблемах, безопасны. Сила любого алгоритма с открытым ключом зависит не только от вычислительной сложности проблемы, лежащей в основе алгоритма. В сильном алгоритме необязательно реализуется трудная задача. Ади Шамир объясняет это тремя причинами [1415]:
562 Прикладная криптография Теория вычислительной сложности обычно имеет дело только с отдельными частными случаями проблемы. Криптоаналитик же часто получает для разрешения целый набор статистически связанных проблем, включающий различные шифр¬ тексты, зашифрованные одним и тем же ключом. ✓ Вычислительная сложность проблемы обычно измеряется для худшего или среднего случаев. Однако чтобы проблема обеспечивала эффективный способ шифрования, она должна быть трудоемкой для решения почти во всех случаях. Не всякую сложную проблему можно использовать в криптосистеме, плюс ко всему прочему проблема должна позволять встраивать в нее секретный параметр, знание которого и является единственным способом ее простого решения.
ГЛАВА 21. Схемы идентификации 21.1. Схема Фейге-Фиата-Шамира В работах [566, 567] рассмотрена схема цифровой подписи и проверки подлинности, разработанная Амосом Фиатом (Атоз Па!) и Ади Шамиром (АсП 8Ьагшг). Уриель Фейге (Ппе1 Ре1§е), Фиат и Шамир модифицировали предложенный там алгоритм, превратив его в доказательство подлинности с нулевым разглашением [544, 545]. Это лучшее из всех известных доказательств подлинности с нулевым разглашением. Три автора 9 июля 1986 года подали заявку на получение патента США [1427]. Из-за возможностей военного применения алгоритма заявка была рассмотрена военным ведомством. Время от времени результатом работы Патентного бюро является выдача не патента, а так называемого секретного распоряжения. И вот, 6 января 1987 года, за три дня до истечения шестимесячного периода, Патентное бюро по просьбе армии издало такое распоряжение. «... Раскрытие или публикация предмета заявки... может причинить ущерб национальной безопасности...». Авторам было приказано уведомить всех граждан США, которые по тем или иным причинам узнали о проводимых исследованиях, что несанкционированное раскрытие информации может закончиться двумя годами тюремного заключения, штрафом 10000 $ или тем и другим одновременно. Кроме того, авторы должны были сообщить Уполномоченному по патентам и торговым знакам обо всех иностранных гражданах, получивших доступ к этой информации. Все это выглядело смехотворно. В течение всей второй половины 1986 года авторы представляли свою работу на конференциях в Израиле, Европе и Соединенных Штатах. Они даже не были американским гражданами, и вся работа была выполнена в Институте Вейцмана ОУешпапп) в Израиле. Слухи об этом инциденте стали распространяться в научном сообществе и прессе. В течение двух дней секретное распоряжение было отменено. Хотя никаких официальных комментариев не последовало, Шамир и его коллеги считают, что за отменой секретного распоряжения стояло АНБ. Более подробно эта занятная история описана в [936]. Упрошенная схема идентификации Фейге-Фиата-Шамира Перед выдачей любых закрытых ключей посредник выбирает случайный модуль п, равный произведению двух больших простых чисел. На практике длина п должна быть не меньше 512 битов и лучше как можно ближе к 1024 битам. Значение п может совместно использоваться группой претендентов, доказывающих свою подлинность. (Использование чисел Блюма облегчит вычисления, но не является обязательным для безопасности). Для генерации открытого и закрытого ключей Пегги доверенный посредник выбирает число V, являющееся квадратичным вычетом по модулю п. Другими словами выбирается такое значение V, что уравнение х = V (тоб п) имеет решение, и существует V"1 тоб п. Это у и будет открытым ключом Пегги. Затем вычисляется наименьшее значение 5, для которого 5 = здг1(ул) (тоб п). Это будет закрытый ключ Пегги. Используется следующий протокол идентификации.
564 Прикладная криптография 1) Пегги выбирает случайное значение г, меньшее п. Затем она вычисляет х = г1 тоб п и посылает х Виктору. 2) Виктор посылает Пегги случайный бит Ь. 3) Если Ъ- 0, то Пегги посылает Виктору г. Если Ь= 1, то Пегги посылает Виктору у = г*8 тоб п. 4) Если Ь- 0, Виктор проверяет, что х = г2 тоб п, убеждаясь, что Пегги знает значение 8цг1 (х). Если 6=1, Виктор проверяет, что х=у2* V тоб п, убеждаясь, что Пегги знает значение здг( (у'1). Это один этап протокола, называемый аккредитацией. Пегги и Виктор повторяют этот протокол / раз, пока Виктор не убедится, что Пегги знает 5. Протоколы такого типа называются «разделяй и выбирай». Если Пегги не знает 5, она может подобрать г так, что сможет обмануть Виктора, если он пошлет ей 0. Или если Виктор пошлет 1, Пегги может подобрать г так, что опять сможет обмануть Виктора. Она не может сделать одновременно и то, и другое. Шанс на то, что Пегги удастся обмануть Виктора один раз, равен 50 %. Шанс на то, что ей удастся обмануть Виктора I раз, равен 1 из 2'. Виктор может попробовать вскрыть протокол, выдавая себя за Пегги. Он может начать выполнение протокола с другим верификатором, Валерией. На шаге (1) вместо выбора случайного г ему останется просто использовать значение г, которое Пегги использовала в прошлый раз. Однако вероятность того, что Валерия на шаге (2) выберет то же значение Ъ, которое Виктор использовал в протоколе с Пегги, равна 1/2. Следовательно, вероятность, что он обманет Валерию, равна 50 %. Вероятность, что ему удастся обмануть ее I раз, равна 1/2'. Чтобы этот протокол работал, Пегги никогда не должна использовать г повторно. В противном случае, если Виктор на шаге (2) пошлет Пегги другой случайный бит, то он получит оба ответа Пегги. Тогда даже по одному из них он сможет вычислить 8, и для Пегги все закончится. Схема идентификации Фейге-Фиата-Шамира Фейге, Фиат и Шамир в своих работах [544, 545] показали, как параллельная схема может повысить число аккредитаций на этап и уменьшить взаимодействие Пегги и Виктора. Как и в предыдущем примере, вначале генерируется значение п, равное произведению двух больших простых чисел. Для генерации открытого и закрытого ключей Пегги сначала выбирается к различных чисел: уь у2... V*, где каждое V,- является квадратичным вычетом по модулю п. Иначе говоря, значения V/ выбираются так, чтобы х2 = у, (тоб п) имело решение, и существовало V/'1 тоб п. Строка, VI, у2... V* служит открытым ключом. Затем вычисляются наименьшие значения зь для которых з^здП (у*’1) (тоб п). Строка $1, я2... 8/с служит закрытым ключом. Далее выполняется следующий протокол: 1) Пегги выбирает случайное значение г, меньшее п. Затем она вычисляет х = г2 тоб п и посылает х Виктору. 2) Виктор посылает Пегги строку из к случайных битов: 6Ь 62... Ьк.
ГЛАВА 21. Схемы идентификации 565 3) Пегги вычисляет у = г * (з\х * в*2 * яД) тоё п. (Она перемножает вместе значения я, соответствующие Ь\- 1. Если первым битом Виктора будет 1, то войдет в произведение, а если первым битом будет 0, то нет, и т.д). Она посылает у Виктору. 4) Виктор проверяет, что х-у2 * (у^1 * у2^2 *...* у/*) тоё ю. (Он перемножает вместе значения V/, основываясь на случайной двоичной строке. Если его первым битом является 1, то VI войдет в произведение, а если первым битом будет 0, то нет, и т.д). Пегги и Виктор повторяют этот протокол I раз, пока Виктор не убедится, что Пегги знает 5\, я*.. Як- Шанс того, что Пегги удастся обмануть Виктор I раз, равен 1 из 2к{. Авторы рекомендуют принять шанс обмана равным 1 из 220 и предлагают значения & = 5 и / = 4. Если у вас склонность к мании преследования, увеличьте эти значения. Пример Взглянем на работу этого протокола с небольшими числами. Если п- 35 (два простых числа - 5 и 7), то возможными квадратичными вычетами являются: 1: х2 = 1 (тоё 35) имеет решения: х =1,6, 29, 34. 4: х2 = 4 (тоё 35) имеет решения: х =2, 12, 23, 33. 9:х2 = 9 (тоё 35) имеет решения: х =3, 17, 18, 32. 11: х2 = 11 (тоё 35) имеет решения: х =9, 16, 19,26. 14: х2 = 14 (тоё 35) имеет решения: х =7,28. 15: х2 = 15 (тоё 35) имеет решения: х = 15, 20. 16: х2 = 16 (тоё 35) имеет решения: х =4, 11, 24, 31. 21: х2 = 21 (тоё 35) имеет решения: х = 14, 21. 25:х2 = 25 (тоё 35) имеет решения: х =5,30. 29: х2 = 29 (тоё 35) имеет решения: х =8, 13, 22, 27. 30: х2 = 30 (тоё 35) имеет решения: х= 10, 25. Обратными значениями (тоё 35) и их квадратными корнями являются: V V1 .V = $дг1 (V1) 1 1 1 4 9 3 9 4 2 11 16 4 16 11 9 29 29 8
566 Прикладная криптография Обратите внимание, что у чисел 14, 15, 21,25 и 30 нет обратных значений по модулю 35, так как они не взаимно простые с 35. Это верно, так как должно быть (5 - 1) * (7 - 1)/4 квадратичных вычетов по модулю 35, взаимно простых с 35. Поэтому НОД (х, 35) должен быть равен 1 (см. раздел 11.3). Итак, Пегги получает открытый ключ, состоящий из к=4 значений: {4,11,16,29}. Соответствующим закрытым ключом является {3,4,9,8}. Вот один этап протокола. 1) Пегги выбирает случайное г= 16, вычисляет 162 тоб 35 = 11 и посылает его Виктору. 2) Виктор посылает Пегги строку случайных битов: {1, 1,0, 1}. 3) Пегги вычисляет 16 * ((З1) * (41) * (9 °) * (81)) тоб 35 = 31 и посылает его Виктору. 4) Виктор проверяет, что 312 * ((41) * (11 *) * (16°) * (291)) тоб 35 = 11. Пегги и Виктор повторяют этот протокол I раз, каждый раз с новым случайным значением г, пока Виктор Не станет убежден. Небольшие числа, использованные в примере, не обеспечивают реальной безопасности. Но когда длина п равна 512 и более битам, Виктор не сможет узнать о закрытом ключе Пегги ничего, кроме того факта, что Пегги действительно знает его. Усовершенствования протокола В описываемый протокол можно встроить идентификационные данные. Пусть / - это двоичная строка, представляющая идентификатор Пегги: имя, адрес, номер социального страхования, размер головного убора, любимый сорт прохладительного напитка и другая конфиденциальная информация. Используем однонаправленную хэш-функцию Н(х) для вычисления Н(1, у), где у - небольшое число, конкатенированное с /. Найдем набор значений у, для которых #(/,у) - это квадратичный вычет по модулю п. Соответствующие значения Н(1, у) становятся равными у2... V* (значенияу не обязаны быть квадратичными вычетами). Теперь открытым ключом Пегги служит I и перечень у. Пегги посылает I и перечень у Виктору перед шагом (1) протокола (или Виктор загружает эти значения с какой-то открытой доски объявлений), и Виктор генерирует уь у2... у*из#(/,у). После того, как Виктор успешно завершит протокол с Пегги, он будет убежден, что Трент, которому известно разложение модуля на множители, сертифицировал связь между / и Пегги, выдав ей квадратные корни из V/, полученные из / (см. раздел 5.2). Фейге, Фиат и Шамир добавили следующие замечания к реализациям протокола [544, 545]: Для неидеальных хэш-функций можно посоветовать рандомизировать значение I, добавляя к нему длинную случайную строку Р. Эта строка выбирается посредником и открывается Виктору вместе с I. В типичных реализациях значение к должно быть от 1 до 18. Большие значения к могут уменьшить время и трудности связи, уменьшая количество этапов. Разрядность п должна быть не меньше 512 битов. (Конечно, с тех пор разложение на множители заметно продвинулось).
ГЛАВА 21. Схемы идентификации 567 Если каждый пользователь выбирает свое собственное значение п и публикует его в файле открытых ключей, то можно обойтись и без посредника. Однако такая реализация, подобная используемой в К8А, делает схему заметно менее удобной. Схема подписи Фиата-Шамира Превращение описанной выше схемы идентификации в схему подписи - это, по сути, вопрос превращения Виктора в хэш-функциию. Главным преимуществом схемы цифровой подписи Фиата-Шамира по сравнению со схемой Я8А является ее скорость: для подписи Фиата-Шамира нужно всего лишь от 1 до 4 % модулярных умножений от числа используемых в схеме К8А. В этом протоколе снова вернемся к Алисе и Бобу. Используемые здесь параметры такие же, как и в схеме идентификации. Выбирается гг - произведение двух больших простых чисел. Генерируется открытый ключ уь у2... у*, и закрытый ключ, 82... 8кь где з{ = 8дг( (V/*1) (тоб п). 1) Алиса выбирает / случайных целых чисел в диапазоне от 1 до п: ги г2..., г, и вычисляет значения хи х2... хь такие, что х{ = г} тоб гг. 2) Алиса создает битовый поток, хэшируя конкатенацию сообщения и строки, состоящей из Н(т, х{, х2... х(). Она использует первые к*1 битов этой строки в качестве значений Ьу, где г пробегает значения от 1 до /, а у от 1 до к. 3) Алиса вычисляет^!, Уъ- Уь где У; = П * (3\Ьп * 82П * ... * 8к1к) тоб п (Для каждого / она перемножает вместе значения в зависимости от случайных значений Ьу. Если Ьп равно 1, то участвует в вычислениях, если Ьп равно 0, то нет). 4) Алиса посылает Бобу т, все биты Ьу и все значения у,. У Боба уже есть открытый ключ Алисы: уь у2... ук. 5) Боб вычисляет г2... ги где 2, -у} * (у Л1 * у//2 *... * ук!к) тоб п (И снова Боб выполняет умножение в зависимости от значений Ьу). Также обратите внимание, что г; должно быть равно х{. 6) Боб проверяет, что первые к*1 битов Н(т, 2Х, г2... х') - это значения Ъу9 которые прислала ему Алиса. Безопасность схемы подписи, как и в схеме идентификации, пропорциональна У2к1. Она также зависит от сложности разложения п на множители. Фиат и Шамир показали, что подделка подписи облегчается, если сложность разложения п на множители заметно меньше 2к1. Кроме того, из-за атак типа «дней рождений» (см. раздел 18.1), они рекомендуют повысить Ы от 20 до, по крайней мере, 72, предлагая к=9 и /=8.
568 Прикладная криптография Улучшенная схема подписи Фиата-Шамира Сильвио Микали (8Иую МюаН) и Ади Шамир улучшили протокол Фиата-Шамира [1088]. Они выбирали уь у2... у* так, чтобы они были первыми к простыми числами. То есть: у1=2, у2 = 3, у3 = 5 и т.д. Это открытый ключ. Закрытым ключом, яь я2... зк, служат случайные квадратные корни, определяемые как: я,=щг1 (у/1) (тоб п) В этой версии у каждого участника должен быть свой п. Такая модификация облегчает проверку подписей, не влияя на время генерации подписей и их стойкость. Другие улучшения На основе алгоритма Фиата-Шамира существует и А-сторонняя схема идентификации [264]. Два других улучшения схемы Фиата-Шамира описаны в [1218]. Еще один вариант-в [1368]. Схема идентификации Охта-Окамото Этот протокол является вариантом схемы идентификации Фейге-Фиата-Шамира, его безопасность основана на трудности разложения на множители [1198, 1199]. Эти же авторы разработали схему многократных подписей (см. раздел 23.1), позволяющую различным людям последовательно подписывать сообщения [1200]. Эта схема была предложена для реализаций в смарт-картах [850]. Патенты Алгоритм Фиата-Шамира запатентован [1427]. Для получения лицензии на алгоритм свяжитесь с Уеба ЯезеагсЬ апб Оеуе1ортеп1, ТЬе >Уе12тапп 1пз1ки1;е оГ 8с1епсе, ЯеЬоуо! 76100,1згае1. 21.2. Схема Гидду-Кискате Протокол Фейге-Фиата-Шамира был первым, обеспечивающим практическую идентификацию. Этот протокол минимизировал вычисления, увеличивая число итераций и аккредитаций на итерацию. Для некоторых реализаций, например, для смарт- карт, такой способ вычислений не слишком подходит. Обмены с внешним миром требуют затрат времени, а хранение данных для каждой аккредитации может быстро исчерпать ограниченные возможности карточки. Луи Гиллу (Ьошз ОиШои) и Жан-Жак Кискате (1еап-3асяиез (Зшзяиа1:ег) разработали алгоритм идентификации с нулевым разглашением, более подходящий для подобных приложений [670, 1280]. Обмены информацией между Пегги и Виктором, а также параллельные аккредитации в каждом обмене сведены к абсолютному минимуму: для каждого доказательства существует только один обмен, в котором выполняется только одна аккредитация. Чтобы достичь при использовании схемы Гиллу-Кискате того же уровня безопасности, что и в схеме Фейге-Фиата-Шамира, потребуется выполнить в три
ГЛАВА 21. Схемы идентификации 569 раза больше вычислений. Так же, как и в случае схемы Фейге-Фиата-Шамира, этот алгоритм идентификации можно превратить в алгоритм цифровой подписи. Схема идентификации Гилду-Кискате Пусть Пегги - это смарт-карта, которая собирается доказать свою подлинность Виктору. Идентификация Пегги проводится по ряду атрибутов, представляющих собой строку данных, содержащих название карточки, период действия, номер банковского счета и другие, подтверждаемые ее применимость, данные. Эта битовая строка называется (В действительности, строка атрибутов может быть очень длинной, а в качестве ^ используется ее хэш-значение. Это усложнение никак не влияет на протокол). Эта строка данных аналогична открытому ключу. Другой открытой информацией, общей для всех «Пегги», которые могут использовать это приложение, является показатель степени V и модуль п, где п - это произведение двух хранящихся в секрете простых чисел. Закрытым ключом служит значение В, рассчитываемое так, чтобы *Л?У = 1 (тоб п) . Пегги посылает Виктору свои атрибуты Далее Пегги хочет доказать Виктору, что это именно ее атрибуты. Для этого она должна убедить Виктора, что ей известно значение В. Вот какой протокол она для этого использует: 1) Пегги выбирает случайное целое г, находящееся в диапазоне от 1 до л-1. Она вычисляет Т = тоб п и отправляет его Виктору. 2) Виктор выбирает случайное целое й, находящееся в диапазоне от 0 до V - 1. Он посылает Л Пегги. 3) Пегги вычисляет Г> = гВа тоб п и посылает его Виктору. 4) Виктор вычисляет Если Г = Г'(тоб и), то подлинность Пегги доказана. Используемая здесь математика не слишком сложна: =(гВ<*У^ = гуВ*^ = гу(Ж)а =гу =7Хтобл) так как В по определению удовлетворяет: Ж = 1 (тоб п) Схема подписи Гиллу-Кискате Схему идентификации Гиллу-Кискате можно превратить в схему подписи, также пригодную для реализации в смарт-картах [671, 672]. Открытый и закрытый ключи не меняются. Вот как выглядит соответствующий протокол: 1) Алиса выбирает случайное целое г, находящееся в диапазоне от 1 до л-1. Она вычисляет Т = гу тоб п. 2) Алиса рассчитывает 7), где М - подписываемое сообщение, а Н(х) - однонаправленная хэш-функция. Значение с1, полученное с помощью хэш-функции,
570 Прикладная криптография должно быть в диапазоне от 0 до V - 1 [1280]. Если результирующее значение хэш- функции выходит за этот диапазон, оно должен быть приведено по модулю V. 3) Алиса рассчитывает О = гВа тос! п. Подпись состоит из сообщения М9 двух вычисленных значений, с/ и Д и ее атрибутов У. Она посылает подпись Бобу. 4) Боб вычисляет Т'= й**!61 той п . Затем он вычисляет У' = Н(М,Т'). Если У=У', то Алиса знает В и ее подпись действительна. Многократные подписи Что делать, если один и тот же документ требуется подписать нескольким людям? Проще всего, чтобы они подписали его порознь, но рассматриваемая схема подписи делает это более оптимально. Пусть Алиса и Боб подписывают документ, а Кэрол проверяет подписи, но в процесс подписания может быть вовлечено произвольное количество людей. Как и раньше, Алиса и Боб обладают уникальными значениями ^ и В: (Ул, Ва) и (Уд, Вв). Значения п и V являются общими для всей системы. 1) Алиса выбирает случайное целое гА, находящееся в диапазоне от 1 до и - 1. Она вычисляет ТА = г/ тос! п и посылает ТА Бобу. 2) Боб выбирает случайное целое гв, находящееся в диапазоне от 1 до п - 1. Он вычисляет Тв = г/ тос! п и посылает Тв Алисе. 3) Алиса и Боб, каждый вычисляет Т = (ТАТв)то<1 п. 4) Алиса и Боб, каждый вычисляет У = Я(М,Г), где М- подписываемое сообщение, а Н(х) - однонаправленная хэш-функция. Значение с/, полученное с помощью хэш- функции, должно быть в диапазоне от 0 до V- 1 [1280]. Если выход хэш-функции выходит за этот диапазон, он должен быть приведен по модулю V. 5) Алиса вычисляет ИА = гАв/ тоб п и посылает Оа Бобу. 6) Боб вычисляет йв = гвВв тоб п и посылает йв Алисе. 7) Алиса и Боб, каждый вычисляет Э = ОаОв тоб п . Подпись состоит из сообщения М, двух вычисленных значений, с! и О, и атрибутов обоих подписывающих: ^А и Уд. 8) Кэрол вычисляет ^ = ^А^В тоб п . 9) Кэрол вычисляет Т - ^V^й тоб п . Затем она вычисляет с1’ = Н(М,Т'). Если У = У', то многократная подпись действительна. Этот протокол может быть расширен на любое количество людей. Для этого подписывающие сообщение люди должны перемножить свои значения Тг на этапе (3), и свои значения Д на этапе (7). Чтобы проверить множественную подпись, нужно на этапе (8) перемножить все значения подписывающих лиц. Либо все подписи будут правильны, либо существует, по крайней мере, одна неправильная подпись.
ГЛАВА 21. Схемы идентификации 571 21.3. Схема Шнорра В схеме проверки подлинности и подписи Клауса Шнорра (С1аи$ 8сЬпогг) [1396,1397] безопасность базируется на трудоемкости вычисления дискретных логарифмов. Для генерации пары ключей вначале выбираются два простых числа, рид так, чтобы д было множителем р- 1. Далее выбирается значение а, не равное 1, такое, что а4 = 1 (тоб р). Все эти числа могут быть свободно опубликованы и использованы группой пользователей. Для генерации отдельной пары ключей выбирается случайное число, меньшее <7. Его значение служит закрытым ключом 5. Затем вычисляется открытый ключ V = аГ5 тоб р. Протокол аутентификации 1) Пегги выбирает случайное число г, меньшее <7, и вычисляет х = аг той р. Это вычисление может быть выполнено задолго до появления Виктора. 2) Пегги посылает х Виктору. 3) Виктор посылает Пегги случайное число е, из диапазона от 0 до 2-1. (Что такое /, я объясню чуть позже). 4) Пегги вычисляет у = (г + зё) тоб <7 и посылает у к Виктору. 5) Виктор проверяет, что д: = ау\е тоб р. Безопасность алгоритма зависит от параметра и Сложность вскрытия алгоритма примерно равна 2'. Шнорр советует использовать значение р, длиной примерно 512 битов, (7 - примерно 140 битов и 1 — 12. Протокол цифровой подписи Алгоритм Шнорра можно использовать также и в качестве протокола цифровой подписи для сообщения М При этом используется та же самая пара ключей, но добавляется однонаправленная хэш-функция Н(М). 1) Алиса выбирает случайное число г, меньшее <7, и вычисляет х-аг той р. Это стадия предварительных вычислений. 2) Алиса конкатенирует М и х и хэширует результат: е = Н(М,х) 3) Алиса рассчитывает значение у = (г + зё) тоб <7. Подписью являются значения е и у, которые Алиса посылает Бобу. 4) Боб рассчитывает значение = ау Vе тоб р. Затем он проверяет, что хэш-значение для конкатенацииМих'равно е. е = Н(М,хг) Если это так, то он считает подпись верной.
572 Прикладная криптография В своей работе Шнорр приводит следующие новые свойства своего алгоритма: Большая часть вычислений, нужных для генерации подписи, может быть выпол¬ нена на стадии предварительных вычислений независимо от подписываемого сообщения. Следовательно, эти вычисления могут быть выполнены во время простоя компьютера и не влияют на скорость подписания. Атака, направленная на стадию предварительных вычислений, рассматривается в [475], я не думаю, что она имеет практическую ценность. При одинаковом уровне безопасности длина подписей для схемы Шнорра короче, чем для схемы КЗ А. Например, при 140-битовом ключе д длина подписей равна всего лишь 212 битам, меньше половины длины подписей К8А. Подписи Шнорра также намного короче подписей Эль-Гамаля. Из практических соображений количество битов, используемых в схеме Шнорра, может быть уменьшено. Это может быть сделано, например, для схемы идентификации, в которой мошенник должен выполнить вскрытие в онлайновом режиме в течение всего лишь нескольких секунд (сравнительно со схемой подписи, когда мошенник может годами вести расчеты, чтобы выполнить подлог). Модификация алгоритма, выполненная Эрни Брикеллом (Егше ВпскеИ) и Кевином МакКерли (Кеут МсСиНеу), повысила его стойкость [265]. Патенты Схема Шнорра запатентована в Соединенных Штатах [1398] и многих других странах. В 1993 году компания РКР приобрела общемировые права на этот патент (см. раздел 25.5). Срок действия патента США истекает 19 февраля 2008 года. 21.4. Преобразование схем идентификации в схемы подписи Стандартный метод преобразования схемы идентификации в схему подписи таков: Виктор заменяется однонаправленной хэш-функцией. Перед подписанием сообщение не хэшируется, вместо этого хэширование встраивается в алгоритм подписи. В принципе, такое преобразование можно проделать с любой схемой идентификации.
Г Л А В А 22. Алгоритмы обмена ключами 22.1. Алгоритм Диффи-Хеллмана Алгоритм Диффи-Хеллмана был первым в истории алгоритмом с открытым ключом, изобретенным в 1976 году [496]. Безопасность алгоритма основывается на трудоемкости вычисления дискретных логарифмов в конечном поле, в сравнении с легкостью возведения в степень в том же самом поле. Алгоритм Диффи-Хеллмана может быть использован для распределения ключей - Алиса и Боб могут воспользоваться этим алгоритмом для генерации секретного ключа - но его нельзя использовать для зашифрования и расшифрования сообщений. Математика, применяемая в алгоритме, несложна. Вначале Алиса и Боб вместе выбирают большие простые числа п и # так, чтобы # было примитивным корнем по модулю п. Эти два целых числа необязательно хранить в секрете, поэтому Алиса и Боб могут договориться об их использовании по несекретному каналу. Эти числа могут даже совместно использоваться группой пользователей. Это не имеет никакого значения. Далее выполняется следующий протокол: 1) Алиса выбирает случайное большое целое число х и посылает Бобу: X = §х тоб п 2) Боб выбирает случайное большое целое число у и посылает Алисе: У = зу тоб п 3) Алиса вычисляет значение: к = Ух тоб п 4) Боб вычисляет значение: к' = Ху тоб п Значения к и к' оба равны §ху тоб п. Ни один шпион, подслушивающий этот канал, не сможет вычислить это значение, им известны только значения п, & X и У. Пока они не смогут вычислить дискретный логарифм и раскрыть х или у, они не смогут решить указанную проблему. Поэтому к - это секретный ключ, вычисляемый Алисой и Бобом независимо друг от друга. Выбор значений # и п может заметно повлиять на безопасность системы. Число (гг - 1)/2 также должно быть простым [1253]. И, самое главное, значение п должно быть большим: безопасность системы основана на сложности разложения на множители чисел той же величины, что и п. Можно выбирать любое значение которое является примитивным корнем по модулю п\ нет причин, по которым нельзя было бы выбрать наименьшее возможное значение поэтому обычно оно равно одноразрядному числу. (К тому же, на самом деле, # не должно даже быть примитивным корнем, оно только должно
574 Прикладная криптография генерировать достаточно большую подгруппу мультипликативной группы вычетов по модулю п). Алгоритм Диффи-Хеллмана с тремя и более участниками Протокол обмена ключами Диффи-Хеллмана легко можно расширить на случай с тремя и более участниками. В приводимом далее примере Алиса, Боб и Кэрол вместе генерируют секретный ключ. 1) Алиса выбирает случайное большое целое число х и вычисляет значение: X = §х тоб п 2) Боб выбирает случайное большое целое число у и посылает Кэрол сообщение: У = §у тоб п 3) Кэрол выбирает случайное большое целое число ъ и посылает Алисе: 2 = %2 тоб п 4) Алиса посылает Бобу: 2' = 2х тоб п 5) Боб посылает Кэрол: X'= ХУ той п 6) Кэрол посылает Алисе: Г = Г2 тоб и 7) Алиса вычисляет: к = У'хтойп 8) Боб вычисляет: к - 2'у тоб п 9) Кэрол вычисляет: к = X'2 тоб п Закрытый ключ к равен %ху2 тоб п, и никакой шпион, подслушивающий каналы связи, не сможет вычислить это значение. Протокол можно легко расширить для четверых и более участников, просто добавляются участники и этапы вычислений. Расширенный алгоритм Диффи-Хеллмана Алгоритм Диффи-Хеллмана также работает в коммутативных кольцах [1253]. 3. Шмули (2. 8Ьти1еу) и Кевин МакКерли (Кеут МсСиНеу) изучили вариант алгоритма, в котором
ГЛАВА 22. Алгоритмы обмена ключами 575 модуль является составным числом [1441, 1038]. В.С. Миллер (V. 8. МШег) и Нил Коблиц (Ыеа1 КоЫкг) расширили этот алгоритм для использования с эллиптическими кривыми [1095, 867]. Тахер Эль-Гамаль (ТаЬег Е1Саша1) использовал основополагающую идею для разработки алгоритма шифрования и цифровой подписи (см. раздел 19.6). Алгоритм Диффи-Хеллмана также работает в поле Галуа ОР (2) [1442, 1038]. В ряде реализаций используется именно этот подход [884, 1631, 1632], так как вычисления выполняются намного быстрее. Но и криптоаналитические вычисления выполняются намного быстрее, поэтому важно тщательно выбирать поле, достаточно большое, чтобы обеспечить нужную стойкость. Алгоритм Хьюза Этот вариант алгоритма Диффи-Хеллмана, предложенный Хьюзом (Ни§Ьез), позволяет Алисе генерировать ключ и послать его Бобу [745]. 1) Алиса выбирает случайное большое целое число х и генерирует: к = %х тоб п 2) Боб выбирает случайное большое целое число у. Оно должно быть взаимно простым с п- 1, иначе обратная функция на шаге 4 не будет работать. Если п - сильное простое число, т.е. (п- 1)/2 также является простым, тогда у может быть любым большим случайным нечетным числом, кроме (п - 1)/2. Боб посылает Алисе: У = §у тоб п 3) Алиса посылает Бобу: X = Vх тоб п 4) Боб вычисляет: 2 = у~] тоб (п -1) К' = Х*тойп Если все выполнено правильно, то к-к\ Преимуществом описанного выше протокола над протоколом Диффи-Хеллмана состоит в том, что к можно вычислить заранее, до какого-либо взаимодействия, и Алиса может зашифровать сообщения с помощью к задолго до установления соединения с Бобом. При этом Алиса может послать сообщение сразу множеству людей, а передать ключ позднее каждому по отдельности. Обмен ключей без обмена ключами Если у вас имеется сообщество пользователей, каждый может опубликовать открытый ключ X = %х тоб п, поместив его в общую базу данных. Если теперь Алисе потребуется установить связь с Бобом, ей нужно только получить открытый ключ Боба и сгенерировать их общий секретный ключ. Далее она может зашифровать сообщение
576 Прикладная криптография этим ключом и послать его Бобу. Боб извлечет открытый ключ Алисы и вычислит общий секретный ключ. Каждая пара пользователей может использовать уникальный секретный ключ, при этом не требуется никаких предварительных обменов данными между пользователями. Открытые ключи должны пройти сертификацию, чтобы предотвратить атаки, связанные с их подменой, и должны регулярно меняться, но в любом случае это очень полезная идея. Патенты Алгоритм обмена ключами Диффи-Хеллмана запатентован в Соединенных Штатах [718] и Канаде [719]. Лицензию на этот патент вместе с другими патентами в области криптографии с открытым ключом получила группа, называющаяся РиЬПс Кеу РаПпегз (РКР) (см. раздел 25.5). Срок действия патента США истек 29 апреля 1997 года. 22.2. Протокол «станция-станиия» Обмен ключами Диффи-Хеллмана чувствителен к атаке «человек посередине». Одним из способов предотвратить такую атаку является подпись Алисой и Бобом сообщений, которые они посылают друг другу [500]. Применяемый при этом протокол предполагает, что у Алисы есть сертифицированный открытый ключ Боба, а у Боба есть сертифицированный открытый ключ Алисы. Данные сертификаты подписаны некоторым заслуживающим доверия органом власти, непосредственно не участвующим в протоколе. Вот как Алиса и Боб генерируют секретный ключ к. 1) Алиса генерирует случайное число х и посылает Бобу: %х тоб л 2) Боб генерирует случайное число у. Используя протокол Диффи-Хеллмана, он вычисляет общий ключ к на основе значений §х тоб л и у. Далее Боб подписывает #*тобл и з^тобл, затем шифрует подпись ключом к. Потом он посылает получившийся результат вместе со значением %у тоб л Алисе. ^тобл, Ек (8В (%х тобл, %у тобл)) 3) Алиса также вычисляет к. Она расшифровывает оставшуюся часть сообщения Боба и проверяет его подпись. Затем она посылает Бобу подписанное сообщение, состоящее из значений §х тоб ли^ тоб л, зашифрованных общим ключом к. Ек (8а (§х тобл, зу тобл)) 4) Боб расшифровывает сообщение и проверяет подпись Алисы.
ГЛАВА 22. Алгоритмы обмена ключами 577 22.3. Трехпроходный протокол Шамира Этот изобретенный Ади Шамиром, но никогда не опубликованный протокол, позволяет Алисе и Бобу безопасно обмениваться информацией, не используя предварительного обмена ни секретными, ни открытыми ключами [1008]. Он предполагает использование коммутативного симметричного шифра, для которого: Еа(Ев(Р)) = Ев(Еа(Р)) Секретным ключом Алисы является значение А, а Боба - значение В. Алиса хочет послать Бобу сообщение М. Для этого Алиса применяет следующий протокол. 1) Алиса шифрует М своим ключом и посылает его Бобу: Сх=Еа(М) 2) Боб шифрует С\ своим ключом и посылает Алисе: С2 = Ев(Еа(М)) 3) Алиса расшифровывает С2 своим ключом и посылает Бобу: С3 = ВА (Ев (Еа (М))) = Ол (Еа (Ев (М))) = Ев (М) 4) Боб расшифровывает С3 своим ключом, получая М. Одноразовые блокноты обладают свойством коммутативности и обеспечивают абсолютную безопасность, но с описанным выше протоколом они работать не будут. При использовании одноразового блокнота три шифртекста будут выглядеть следующим образом: С{=РФА с2=рфафв С3=РФВ Ева, записав все эти три сообщения, которыми обмениваются Алиса и Боб, просто выполнит операцию ХОК над всеми этими шифртекстами и восстановит сообщение: С,0С20С3 =(Р0Л)0(Р0 АФВ)Ф(РФВ) = Р Как видим, такой способ шифрования работать не будет. Шамир (и, независимо, Джим Омура (Лт Отига)) описал алгоритм шифрования, похожий на алгоритм Я8А, который будет работать с описываемым протоколом. Пусть р будет большим простым числом, для которого значение р - 1 имеет большой простой множитель. Выберем ключ шифрования е, взаимно простой с р~ 1. Вычислим значение с/, для которого выполняется <1е = 1 (тоб р-1). Для зашифрования сообщения вычисляем: С = Ме тоб р Для расшифрования сообщения вычисляем: М = СЛ той Р
578 Прикладная криптография Представляется правдоподобным утверждение, что у Евы нет способа получить М, не решив проблему дискретного логарифма, но оно никогда не было доказано. Подобно протоколу Диффи-Хеллмана, описываемый протокол позволяет Алисе начать секретный обмен информацией с Бобом, не зная ни одного из его ключей. При использовании алгоритма с открытым ключом Алиса должна знать открытый ключ Боба. Применяя трехпроходный алгоритм Шамира, она просто посылает Бобу шифртекст сообщения. Такое же действие с помощью алгоритма с открытым ключом выглядит следующим образом: 1) Алиса запрашивает у Боба (или у центра КБС) его открытый ключ. 2) Боб (или КХ)С) посылает Алисе свой открытый ключ. 3) Алиса шифрует М открытым ключом Боба и посылает его Бобу. Трехпроходный алгоритм Шамира уязвим для атаки методом «человек посередине». 22.4. СОМ5ЕТ СОМ8ЕТ (СОМтишсайопз 8ЕТир - установление связи) - это протокол одновременной идентификации и обмена ключом, разработанный для проекта ШРЕ [1305] (см. раздел 25.7). Данный протокол с помощью криптографии с открытым ключом позволяет Алисе и Бобу идентифицировать друг друга, при этом обмениваясь секретным ключом. Математической основой СОМ8ЕТ служит схема Рабина [1283] (см. раздел 19.5). Данная схема впервые была предложена в [224] (см. подробности в [1305]). 22.5. Обмен зашифрованными ключами Протокол обмена зашифрованными ключами (Епсгур1ес1 Кеу ЕхсЬап§е, ЕКЕ) был разработан Стивом Белловином (81еуе ВеИоут) и Майклом Мерриттом (МюЬае1 Мегпй) [109]. Он обеспечивает безопасность и проверку подлинности в компьютерных сетях, новым образом используя и симметричную криптографию, и криптографию с открытым ключом: общий секретный ключ используется для шифрования генерированного случайным образом открытого ключа. Базовый протокол ЕКЕ Алиса и Боб (которыми могут быть два пользователя, клиент и сервер, или кто угодно) имеют общий пароль Р. Используя следующий протокол, они могут проверить подлинность друг друга и сгенерировать общий сеансовый ключ К. 1) Алиса случайным образом генерирует пару «открытый ключ/закрытый ключ». Далее Алиса шифрует открытый ключ К' с помощью симметричного алгоритма, используя Р в качестве ключа: ЕР {К') и посылает Бобу сообщение:
ГЛАВА 22. Алгоритмы обмена ключами 579 2) Боб знает Р. Он расшифровывает сообщение, получая К. Затем он генерирует случайный сеансовый ключ К, зашифровывает его открытым ключом, который он получил от Алисы, а затем еще и ключом Р. Он посылает Алисе такое сообщение: Ер(Ек,(К) 3) Алиса расшифровывает сообщение, получая К. Она генерирует случайную строку КА, шифрует ее с помощью К и посылает Бобу: Ек (ЕЛ) 4) Боб расшифровывает сообщение, получая ЯА. Он генерирует другую случайную строку, Яв, шифрует обе строки ключом К и посылает Алисе результат: Ек (ЯА, Яв) 5) Алиса расшифровывает сообщение, получая ЯА и Яв. Если строка ЯА, полученная от Боба, - это та самая строка, которую она послала Бобу на этапе 3, она, используя К, шифрует строку Яв и посылает ее Бобу: ЕК(ЯВ) 6) Боб расшифровывает сообщение, получая Яв. Если строка Яв, полученная от Алисы, - это та самая строка, которую он послал ей на этапе 4, то протокол завершен. Теперь обе стороны могут обмениваться информацией, используя К в качестве сеансового ключа. На этапе 3 и Алиса, и Боб знают значения К1 и К. К - это сеансовый ключ, он может быть использован для шифрования всех других сообщений, которыми обмениваются Алиса и Боб. Ева, сидя между Алисой и Бобом, знает только ЕР(К\), Ер(Ек>(К)) и несколько сообщений, зашифрованных ключом К. В других протоколах Ева могла бы попробовать угадать Р (все люди имеют склонность к выбору плохих паролей, и если Ева достаточно умна, она может сделать удачные предположения) и затем проверить свои предположения. В рассматриваемом протоколе Ева не может проверять свои предположения, не вскрыв при этом и алгоритм с открытым ключом. Тогда, если К1 и К выбираются случайным образом, эта проблема будет непреодолимой. Ответная часть протокола, соответствующая этапам 3-6, обеспечивает подтверждение. Этапы 3-5 доказывают Алисе, что Боб знает К, этапы 4-6 доказывают Бобу, что Алиса знает К. В протоколе КегЬегоз для решения этой же задачи используется обмен метками времени. Протокол ЕКЕ может быть реализован с множеством алгоритмов с открытым ключом: Я8А, Эль-Гамаля, Диффи-Хеллмана. Проблемы с безопасностью возникают при реализации ЕКЕ с помощью ранцевых алгоритмов (даже без учета проблем безопасности, присущих самим этим алгоритмам): нормальное распределение шифртекста сообщений сводит на нет преимущества ЕКЕ. Реализация ЕКЕ с помощью К5А Алгоритм Я8А кажется идеальным для такого использования, но есть ряд тонких проблем. Авторы рекомендуют шифровать на этапе 1 только показатель степени, посылая модуль в открытую. Объяснение этого совета и другие тонкости, связанные с использованием Я8А, можно найти [109].
580 Прикладная криптография Реализация ЕКЕ с помощью Эль-Гамаля Реализация протокола ЕКЕ на базе алгоритма Эль-Гамаля тривиальна и даже позволяет упростить основной протокол. Воспользуемся обозначениями из раздела 19.6, где # и р служат частями открытого ключа, общими для всех пользователей. Закрытым ключом является случайное число г, а открытым - %г тоб р. На этапе 1 Алиса посылает Бобу следующее сообщение: АНсе, §г тоб р Обратите внимание, что этот открытый ключ не нужно шифровать с помощью Р. В общем случае это неверно, но это так для алгоритма Эль-Гамаля. Подробности можно найти в [109]. Боб выбирает случайное число К (для алгоритма Эль-Гамаля, независимо от других случайных чисел, выбираемых для ЕКЕ), и сообщение, которое он посылает Алисе на этапе 2, выглядит так: Ер{ёК той р, К§Кг тоё р) Существующие ограничения на выбор переменных для Эль-Гамаля были приведены в разделе 19.6. Реализация ЕКЕ с помощью Аиффи -Хеллмана При использовании протокола Диффи-Хеллмана значение К генерируется автоматически. Окончательный протокол еще проще. Значения # и п определяются для всех пользователей сети. 1) Алиса выбирает случайное число гА и посылает Бобу сообщение: А, тоб п При использовании Диффи-Хеллмана Алисе не нужно шифровать с помощью ключа Р свое первое сообщение. 2) Боб выбирает случайное число гв и вычисляет: К=%а •'ятоб п 3) Он генерирует случайную строку Яв, затем вычисляет и посылает Алисе такое сообщение: ЕР (%в тоб п), Ек (Кв) 4) Алиса расшифровывает первую половину сообщения Боба и получает значение %гв тоб п. Затем она вычисляет К и использует его для расшифрования Рв. Она генерирует другую случайную строку КА, шифрует обе строки ключом К и посылает результат Бобу: Ек (Ра, Рв)
ГЛАВА 22. Алгоритмы обмена ключами 581 5) Боб расшифровывает сообщение и получает значения КА и Кв. Если полученная от Алисы строка Кв совпадает с той, которую он посылал ей на этапе 2, он шифрует КА ключом К и посылает результат Алисе. ЕкШ 6) Алиса расшифровывает сообщение, получая Я^. Если полученная от Боба строка Я^ совпадает с той, которую она посылала Бобу на этапе 3, протокол завершается. Теперь стороны могут обмениваться сообщениями, используя К в качестве сеансового ключа. Усиленная версия ЕКЕ Белловин и Мерритт предложили улучшение в части «запрос-ответ», которое позволяет избежать возможной атаки при обнаружении криптоаналитиком старого значения К. На этапе 3 базового протокола ЕКЕ Алиса генерирует другое случайное число 3А и посылает Бобу: Ек (КА, 3А) На этапе 4 Боб генерирует другое случайное число Зв и посылает Алисе: Ек (Еа, Яв, Зв) Теперь Алиса и Боб могут вычислить истинный сеансовый ключ, 3А 0 8В. Этот ключ в дальнейшем используется для сообщений, которыми обмениваются Алиса и Боб; значение К используется просто в качестве ключа для обмена ключами. Посмотрим на уровни защиты, предоставляемые ЕКЕ. Восстановленное значение 5 не дает Еве никакой информации о Р9 так как Р никогда не используется для шифрования чего-то такого, что ведет непосредственно к 5. Криптоаналитическое вскрытие К также невозможно; К используется только для шифрования случайных данных, а 5 никогда не шифруется отдельно. Расширенная версия ЕКЕ Протокол ЕКЕ имеет один серьезный недостаток: он требует, чтобы обе стороны знали пароль Р. В большинстве систем авторизации доступа хранятся не сами пароли, а значения однонаправленной хэш-функции паролей пользователей (см. раздел 3.2). В варианте протокола А-ЕКЕ (Аи§теп1:ес1 ЕКЕ - расширенный ЕКЕ), основанном на алгоритме Диффи-Хеллмана, значение однонаправленной хэш-функции пароля пользователя применяется в качестве ключа сверхшифрования. Затем пользователь посылает дополнительное сообщение, основанное на реальном пароле, и это сообщение удостоверяет заново выбранный сеансовый ключ. Вот как работает этот протокол. Как обычно, Алиса и Боб хотят проверить подлинность друг друга и сгенерировать общий ключ. Они выбирают какую-нибудь схему цифровой подписи, в которой в качестве закрытого ключа может использоваться любое число, а открытый ключ получается из закрытого ключа, а не генерируется отдельно.
582 Прикладная криптография Здесь прекрасно подходят алгоритмы Эль-Гамаля и ЭЗА. Пароль Алисы Р (или, может быть, какое-нибудь простое хэш-значение этого пароля) будет служить закрытым ключом, а также Р'1. 1) Алиса выбирает случайный показатель степени гА и отправляет: Ер»(%л тоб п) 2) Боб, который знает только Р' и не может получить из него Р, выбирает гв и посылает: ЕР> (%в тоб п) 3) Алиса и Боб вычисляют общий сеансовый ключ К=%А *Гв тоб п. Наконец Алиса доказывает, что она сама знает Р, а не только Р\ посылая: Ек(ЕР(К)) Боб, который знает К и Р\ может расшифровать и проверить подпись. Только Алиса могла прислать это сообщение, так как только она знает Р. Самозванец, добывший копию файла паролей Боба, может только попытаться угадать Р9 иначе он не сможет подписать сеансовый ключ. Схема А-ЕКЕ не работает с вариантом протокола ЕКЕ, использующим открытые ключи, так как в этом протоколе одна сторона выбирает сеансовый ключ и навязывает его другой. Это позволяет взломщику, заполучившему Р\ выполнить атаку «человек посередине». Применения ЕКЕ Белловин и Мерритт предлагают использовать протокол ЕКЕ для безопасной телефонной связи [109]: Давайте представим, что развернута сеть шифрующих телефонных аппаратов. Если кто-нибудь захочет воспользоваться таким телефоном, ему понадобится определенная информация о настройке ключей. Общепринятые решения... требуют, чтобы у звонящего был физический ключ. Во многих ситуациях это нежелательно. Протокол ЕКЕ позволяет использовать короткий, вводимый с клавиатуры, пароль, обеспечивая гораздо более длинный сеансовый ключ. Протокол ЕКЕ может быть полезен и для сотовой связи. Мошенничество представляет собой большую проблему сотовой телефонии, и ЕКЕ может помочь защититься от него (и обеспечить конфиденциальность звонка) за счет продажи телефонов, бесполезных без ввода Р/А/-коба. Так как Р1Ы-код не хранится в телефоне, его невозможно извлечь из украденного устройства. Главное достоинство протокола ЕКЕ состоит в том, что криптография с открытым ключом и симметричная криптография объединяются и усиливают друг друга: С общей точки зрения протокол ЕКЕ работает как усилитель секретности. То есть, его можно использовать для усиления сравнительно слабых симметричных и асимметричных систем, используемых совместно. Рассмотрим, например, размер 1 Р'— открытый ключ, полученный из Р. - Прим. ред.
ГЛАВА 22. Алгоритмы обмена ключами 583 ключа, необходимый для обеспечения безопасности при использовании схем обмена ключей, использующих возведение в степень. Как показали ЛаМаккиа (каМассЫа) и Одлыжко (Од1у2ко) [934], даже модули с размерами, считавшимися безопасными, (а именно, 192 бита) чувствительны к вскрытию, занимающему несколько минут компьютерного времени. Но их вскрытие становится невозможным, если перед применением вскрытия необходимо угадать пароль. С другой стороны, сложность вскрытия экспоненциальных схем обмена ключами может быть использована для срыва попыток угадывания пароля. Возможность вскрытия угадыванием пароля зависит от скорости проверки каждого предположения. Если для выполнения такой проверки необходимо решить экспоненциальное уравнение обмена ключами, то общее время впечатляюще возрастает. Протокол ЕКЕ запатентован [111]. 22.6. Защищенные переговоры о согласовании ключа Данная схема позволяет защитить схемы переговоров о согласовании ключа (кеу пе^оНаНоп), от плохого выбора паролей и атак вида «человек посередине» [47, 983]. В ней используется хэш-функция двух переменных, обладающая особым свойством: она часто приводит к коллизиям по первой переменной и практически никогда - по второй.2 Я' {к, х) = Н(Н 0к, х) той 2", *), где Н(к, х) - обычная хэш-функция от конкатенации к и х, а к - это пароль. Вот как выглядит этот протокол. Алиса и Боб используют общий секретный пароль Р и уже обменялись секретным ключом К, используя протокол Диффи-Хеллмана. Они используют Р для проверки, что их сеансовые ключи одинаковы (и что Ева не предприняла атаку методом «человек посередине»), не позволяя Еве получить Р. 1) Алиса посылает Бобу: Н'(Р,К) 2) Боб вычисляет Я' (Р, К) и сравнивает результат со значением, присланным Алисой. Если они совпадают, он посылает Алисе сообщение: Н' (Я (Р), К) 3) Алиса вычисляет Я'(Я(Р), К) и сравнивает результат со значением, полученным от Боба. Если Ева пытается выполнить атаку методом «человек посередине», она использует один ключ, Ки общий с Алисой, и другой - К2, общий с Бобом. Чтобы обмануть Боба на этапе (2), ей придется вычислить общий пароль и затем послать Бобу Я' (Р, Я2). При использовании обычной хэш-функции Алиса может перебирать часто встречающиеся пароли, пока не угадает правильный пароль, после чего успешно взломать протокол. Но при использовании предлагаемой хэш-функции многие пароли дают одно и то же 2 Приведенные формулы исправлены в соответствии с первоисточником [47]. Функция Я с одним аргументом означает, что хэш-значение рассчитывается только для него. - Прим. ред.
584 Прикладная криптография значение при хэшировании с ключом К\. Поэтому, когда она находит совпадение, то, скорее всего, это неправильный пароль, и в этом случае Боба обмануть не удастся. 22.7. Распределение ключей для конференц-связи и секретная широковещательная передача Допустим, что Алиса хочет передать сообщение М сразу нескольким получателям. Однако она совсем не хочет, чтобы кто угодно смог его прочесть. В действительности, ей нужно, чтобы правильно раскрыть М могли только получатели из определенного подмножества. У всех остальных должен получиться бессмысленный результат. Алиса может использовать для каждого получателя уникальный ключ (секретный или открытый). Она шифрует сообщение каким-нибудь случайным ключом К. Затем она шифрует копию К каждым из ключей выбранных получателей сообщения. Наконец она широковещательно посылает зашифрованное сообщение, а затем все зашифрованные К. Слушающий передачу Боб либо пытается расшифровать все К своим секретным ключом, пытаясь найти правильный, либо, если Алиса не забыла перечислить получателей своего сообщения, он ищет свое имя, сопровождаемое зашифрованным ключом. Также будет работать и ранее рассмотренная криптография с несколькими ключами. Другой способ предлагается в [352]. Сначала каждый из получателей договаривается с Алисой об общем для них двоих ключе, который длиннее любого возможного шифрованного сообщения. Все эти ключи должны быть попарно взаимно простыми. Она шифрует сообщение случайным ключом К. Затем она вычисляет одно целое число Я, которое сравнимо с К по модулю секретного ключа, если этот секретный ключ предполагается использовать для расшифровки сообщения, и сравнимо с нулем в противном случае. Например, если Алиса хочет, чтобы секретное сообщение получили Боб, Кэрол и Эллен, но не Дэйв и Фрэнк, она шифрует сообщение ключом К, а затем вычисляет такое Я, что: Я = К(тойКв) Я = К (той Кс) Я = 0 (тоб К0) Я = К(тойКЕ) Я = 0 (тоб К?) Это простая алгебраическая проблема, которая легко может быть решена Алисой. Когда это сообщение будет принято получателями, они вычислят значение полученного ключа по модулю их секретного ключа. Те, кому предназначалось это сообщение, в результате вычисления получат нужный ключ. В противном случае результатом будет 0. В [141] предлагается еще один, третий, путь, использующий пороговую схему (см. раздел 3.7). Каждый потенциальный получатель, как и в других способах, получает секретный ключ. Этот ключ является долей в еще не созданной пороговой схеме. Алиса сохраняет ряд секретных ключей для себя, внося некоторую непредсказуемость в
ГЛАВА 22. Алгоритмы обмена ключами 585 систему. Пусть существует всего к возможных получателей. Тогда для широковеща¬ тельной передачи М Алиса шифрует М ключом К и делает следующее. 1) Алиса выбирает случайное число у. Это число призвано замаскировать количество получателей сообщения. Оно не должно быть слишком большим и может даже равняться нулю. 2) Алиса создает (к + у + 1, 2к + у + 1) - пороговую схему, в которой имеется: a. К- секрет. b. Секретные ключи адресатов сообщения, служащие долями. c. Секретные ключи пользователей, которых нет среди получателей сообщения, не являющиеся долями. б. у случайным образом выбранных долей, не совпадающих ни с одним секретным ключом. 3) Алиса широковещательно передает к +у случайно выбранных долей, ни одна из которых не совпадает с долями этапа 2. 4) Каждый из слушателей, принявших широковещательное сообщение, добавляет свою долю к полученным к+) долям. Если добавление своей доли позволяет пользователю вычислить секрет, то ему удалось открыть ключ. В противном случае - не удалось. Описания другого подхода можно найти в [885, 886, 1194]. Имеется и еще один - в работе [1000]. Распределение ключей для конференц-связи Данный протокол позволяет группе из п пользователей договориться о секретном ключе, используя только несекретные каналы. Группа использует два общих больших простых числа р и а также образующую # той же длины, что и 1) Пользователь / (/ лежит в диапазоне от 1 до п) выбирает случайное число г„ меньшее д, и широковещательно отправляет сообщение: тоб р 2) Каждый пользователь проверяет, что г? = 1 (тоб р) для всех / от 1 до п. 3) Пользователь / широковещательно передает: Х1 =(2,41/г,тос1 р 4) Пользователь / вычисляет: к = (ГМ Г * хГХ * *,+Г2... * х,_2 тоа р Все вычисления индексов в приведенном протоколе: /- 1, /-2 и / + 1 - проводятся по тоб п. По окончании протокола у всех честных пользователей окажется один и тот же К,
586 Прикладная криптография а все остальные ничего не получат. Однако этот протокол взламывается методом «человек посередине». Другой протокол, не такой хороший, приведен в [757]. Протокол Татебаяши-Мацузаки-Ньюмана Данный протокол распределения ключей пригоден для использования в сетях [1521]. Алиса хочет с помощью Трента, или центра КХ)С, сгенерировать ключ для сеанса связи с Бобом. Всем участникам известен открытый ключ Трента п. Тренту известны два простых множителя п, и, следовательно, он может легко вычислять кубические корни по модулю п. Следующий протокол не содержит некоторых деталей, но позволяет получить общее представление об описываемом методе. 1) Алиса выбирает случайное число гА и посылает Тренту сообщение: гА пюс! п 2) Трент сообщает Бобу, что кто-то хочет обменяться с ним ключом. 3) Боб выбирает случайное число гв и посылает Тренту: г в тоб п 4) Трент, используя свой закрытый ключ, расшифровывает гА и гв. Он посылает Алисе: га®гв 5) Алиса вычисляет: (гА®гв)®гА = гв Она использует гв для безопасного сеанса связи с Бобом. Протокол выглядит хорошо, но содержит заметный изъян. Кэрол может подслушать этап (3) и использовать эту информацию, воспользовавшись помощью доверчивого Трента и своего сообщника Дэйва, чтобы раскрыть сообщение [1472]. 1) Кэрол выбирает случайное число гс и посылает Тренту: г в ?с тоб п 2) Трент сообщает Дэйву, что кто-то хочет обменяться с ним ключом. 3) Дэйв выбирает случайное число го и посылает Тренту: Го тоб п 4) Трент, используя свой закрытый ключ, расшифровывает гс и г0. Он посылает Кэрол сообщение: (гвгс)тоб п®г0 5) Дэйв посылает гв Кэрол. 6) Кэрол использует гс и гв для получения гв. Она использует гв для перехвата переговоров Алисы и Боба. Это плохо.
ГЛАВ А 23. Специальные алгоритмы для протоколов 23.1. Криптография с несколькими открытыми ключами Такая криптография представляет собой обобщение протокола Я8А (см. раздел 19.3) [217, 212]. В ней модуль п получается произведением двух простых чиселр ид. Однако вместо значений ей <7, для которых ес! = 1 тоб ((р -1 )(д -1)), выбирается 7 ключей Кь для которых верно сравнение: Кх * К2 *... * К( = 1 тоб {{р -1 )(д -1)) Поскольку д4к,о...к1*...к, =м то эта схема является схемой с несколькими ключами, описанной в разделе 3.5. Если, например, применяется пять ключей, то сообщение, зашифрованное ключами и К5, может быть расшифровано с помощью Ки К2 и К4. С = МКъ *к* тоб п М = ск'*к'*к* то&п Одним из применений этой схемы служит подписание документа несколькими людьми. Представим ситуацию, когда для того, чтобы документ был действителен, он должен быть подписан и Алисой, и Бобом. Используются три ключа: Ки К2 и К3. Алиса и Боб получают по одному ключу, а третий опубликовывается. 1) Вначале Алиса подписывает М и посылает его Бобу: М'= МК{ тоб и 2) Боб может восстановить М из М ': М = М'Кг *Кз тоб п 3) Боб может также добавить свою подпись: М” = М,Кг тоб п 4) Проверить подписи можно при помощи открытого ключа Къ: М = М"Къ тоб п Заметьте, что для работоспособности этой системы нужна заслуживающая доверия сторона, которая должна установить систему и выдать ключи Алисе и Бобу. Такая же проблема существует и в схеме [484]. Более утонченная схема описана в [695, 830, 700], но в ней усилия, предпринимаемые для проверки, пропорциональны количеству подписывающих лиц. Новые схемы, предложенные в [220, 1200], основаны на схемах
588 Прикладная криптография идентификации с нулевым разглашением и преодолевают указанные недостатки предшествующих систем. 23.2. Алгоритмы разделения секрета В разделе 3.7 была обсуждена идея, используемая в схемах разделения секрета. Приведенные ниже четыре различных алгоритма представляют собой частные случаи общего теоретического подхода [883]. Схема интерполяционных полиномов Лагранжа Для создания пороговой схемы Ади Шамир воспользовался полиномиальными уравнениями в конечном поле [1414]. Выберем простое число р, которое больше количества возможных долей и больше самого большого из возможных секретов. Чтобы сделать секрет общим, сгенерируем произвольный многочлен степени т- 1. Например, если нужно создать (3, п) - пороговую схему (для восстановления сообщения М потребуется три доли), генерируется квадратичный многочлен: (ах2 + Ьх + М)т ос1 р где р - это случайное простое число, большее любого из коэффициентов. Коэффициенты а и Ь выбираются случайным образом, они хранятся в тайне и отбрасываются после распределения долей. М-это сообщение. Простое число должно быть опубликовано. Доли получаются с помощью вычисления многочлена в п различных точках: Иначе говоря, первой долей может быть значение многочлена при х = 1, второй долей - значение многочлена при х = 2, и т.д. Поскольку в квадратных многочленах имеются три неизвестных коэффициента, а, Ъ и М, для создания трех уравнений можно использовать любые три доли. Одной или двух долей не хватит, а четырех или пяти долей хватит с избытком. Например, пусть М равно 11. Чтобы создать (3, 5) - пороговую схему, в которой любые трое из пяти человек могут восстановить М, сначала получим квадратное уравнение (7 и 8 - случайно выбранные числа): Р(х) - (7х2 + 8х +11) тоб 13 Пятью долями являются: кх = /^(1) = 7 + 8 +1 = О (тоб 13) к2 =^(2) = 28 + 16 + 1зЗ(тоб13) къ = Р(3) = 63 + 24 +1 = 7 (тоб 13) к4 = Р(4) = 112 + 32 + 1 = 12 (тоб 13) к5 = Р(5) = 175 + 40 + 1 = 5 (тоб 13)
ГЛАВА 23. Специальные алгоритмы для протоколов 589 Чтобы восстановить сообщение М по трем долям, например, к2, къ и к5, решается система линейных уравнений: а *22 +Ь*2 + М = 3 (тос! 13) а*32 +Ъ*3 + М = 7 (тос! 13) а*52+Ь*5 + М = 5 (тос! 13) Решением будут а= 7, 6 = 8 и М= 11. Итак, М восстановлено. Описанную схему совместного использования секрета можно легко реализовать для больших чисел. Если требуется разбить сообщение на 30 равных частей так, чтобы восстановить сообщение можно было, объединив любые шесть частей, выдайте каждому из 30 человек значения многочлена пятой степени. ^(х) = (ах5 + ЬхА + ос3 + ск2 +ех + М) тос! р Шесть человек смогут решить его при шести неизвестных (включая М), но пятерым не удастся узнать ничего об М Наиболее замечательным аспектом совместного использования секрета является тот факт, что, если коэффициенты выбраны случайным образом, пять человек даже при помощи бесконечных вычислительных мощностей не смогут узнать ничего, кроме длины сообщения (которая и так им известна). Это так же безопасно, как одноразовый блокнот - попытка выполнить исчерпывающий поиск (то есть, перебор всех возможных шестых долей) покажет, что любое мыслимое сообщение может быть секретным. Это справедливо для всех представленных в этой книге схем разделения секрета. Векторная схема Джордж Блэкли (Оеог§е В1ак1еу) изобрел схему с использованием точек в пространстве [182]. В ней сообщение определяется как точка в т-мерном пространстве. Каждая доля - это уравнение (т-1)-мерной гиперплоскости, содержащей эту точку. Пересечение любых т гиперплоскостей однозначно определяет эту точку. Если, например, для восстановления сообщения нужны три доли, то сообщение представ¬ ляется точкой в трехмерном пространстве. Каждая доля представляет собой отдельную плоскость. Зная одну долю, можно утверждать, что точка находится где-то на плоскости. Зная две доли - что она находится где-то на прямой пересечения двух плоскостей. Зная три доли, можно точно определить, что точка находится на пересечении трех плоскостей. Схема Асмута-Блума В данной схеме используются простые числа [65]. Для (т, и)-пороговой схемы выбирается большое простое число /?, большее М. Далее выбирается п чисел, меньших р, - с1\9 б/2,-.., &п Для которых: ✓ Значения ^ упорядочены по возрастанию, < <7/+1 ✓ Каждое с1, взаимно просто с любым другим
590 Прикладная криптография ✓ «/, *й2 *...*с!т >р*<1п-т+г *^„_т+3 Чтобы распределить доли, сначала выбирается случайное число г и вычисляется: М’ = М + гр Долями к, являются значения: к, = М' тоб <7, Используя китайскую теорему об остатках, можно восстановить М9 объединив любые т долей, но это невозможно с помощью любых т-1 долей. Подробности приведены в [65]. Схема Карнина-Грини-Хеллмана В данной схеме используется матричное умножение [818]. Выбирается п+ 1 таких ди¬ мерных векторов У0, У\... УП9 что ранг любой матрицы размером т *т , образованной из этих векторов, равен т. Вектор V- это вектор размерности т +1. М - это матричное произведение {У*К0. долями являются произведения V-К,, где / меняется от 1 до п. Любые т долей можно использовать для решения системы линейных уравнений размерности т * т , неизвестными являются коэффициенты V. 11- У0 можно вычислить по II. Решить систему уравнений, используя любые т -1 долей, и, тем самым, восстановить секрет, невозможно. Более сложные пороговые схемы В предыдущих примерах были описаны только простейшие пороговые схемы: секрет делится на п долей таким образом, что, объединив любые т долей, можно раскрыть секрет. На базе этих алгоритмов можно создать намного более сложные схемы. В следующих примерах используется алгоритм Шамира, хотя будут работать и все остальные. Для создания схемы, в которой один из участников важнее других, ему выдается больше долей. Если для восстановления секрета нужно пять долей и у кого-то есть три доли, а у всех остальных - по одной, этот человек вместе с любыми двумя другими может восстановить секрет. Без его участия для восстановления секрета потребуется пять человек. Более одной доли могут получить два человека и более. Каждому человеку может быть выдано отличное число долей. Вне зависимости от числа розданных долей, для восстановления секрета потребуется любые т из них. Ни один человек, ни целая группа не смогут восстановить секрет, обладая только т -1 долями. Для описания других схем представим сценарий с двумя враждебными делегациями. Можно распределить секрет так, чтобы для его восстановления потребовалось двое из 7 участников делегации А и трое из 12 участников делегации В. Создается многочлен степени 3, который является произведением линейного и квадратного выражений.
ГЛАВА 23. Специальные алгоритмы для протоколов 591 Каждому участнику делегации А выдается доля, которая является результатом вычисления линейного выражения, а участникам делегации В выдаются результаты вычисления квадратичного выражения. Для восстановления линейного выражения достаточны любые две доли участников делегации А, но независимо от того, сколько других долей есть у делегации А, ее участники не смогут ничего узнать о секрете. Аналогично для делегации В: ее участники могут объединить три доли, чтобы восстановить квадратичное выражение, но другую информацию, необходимую для восстановления секрета в целом, они получить не смогут. Только объединив свои выражения и перемножив их, участники двух делегаций смогут восстановить секрет. В общем случае, может быть реализована любая мыслимая схема разделения секрета. Необходимо только написать систему уравнений, соответствующих конкретной системе. На тему обобщенных схем разделения секрета написано несколько прекрасных работ [1462, 1463, 1464]. Разделение секрета с мошенниками Этот алгоритм использует измененную стандартную пороговую схему (т, п) для обнаружения мошенников [1529]. Я покажу использование алгоритма на базе схемы Лагранжа, но алгоритм работает и с другими схемами. Выбирается простое число р, большее гг и большее, чем (5-\)(т-\)/е + т где 5 - это самый большой возможный секрет, а е - вероятность успеха мошенничества. Значение е можно сделать настолько малым, насколько это необходимо, это просто усложнит вычисления. Как и в приведенных ранее примерах, так же построим доли, но вместо использования для значений 1, 2, 3..., п выберем случайным образом числа из диапазона от 1 до р - 1. Если теперь при восстановлении секрета Мэллори заменит свою часть подделкой, его доля с высокой вероятностью окажется некорректной. Некорректный секрет, конечно же, окажется фальшивым секретом. Математика этой схемы приведена в [1529]. К несчастью, в этой схеме, хотя мошенничество Мэллори и будет открыто, ему удастся узнать секрет (при условии, что все остальные нужные доли правильны). Этого недостатка лишен другой протокол, описанный в [1529, 975]. Основной идеей является использование набора из к секретов таким образом, что никто из участников заранее не знает, какой из них правильный. Каждый секрет, за исключением настоящего, больше предыдущего. Участники объединяют свои доли, получая один секрет за другим, пока они не получат секрет, меньший чем предыдущий. Этот секрет и будет правильным. В такой схеме мошенники легко выявляются еще до получения конечного секрета. Существуют определенные сложности, когда участники предъявляют свои доли по очереди; подробности можно найти в литературе. В следующих работах также рассматриваются вопросы обнаружения и предотвращения мошенничества в пороговых схемах [355, 114, 270].
592 Прикладная криптография 23.3. Скрытый канал На основе схемы Онга-Шнорра-Шамира Данный скрытый канал (см. раздел 4.2), разработанный Густавусом Симмонсом (Ои${ауи$ $1ттоп$) [1458, 1459, 1460], использует схему идентификации Онга-Шнорра- Шамира (см. раздел 20.5). Как и в оригинальной схеме, отправитель (Алиса) выбирает общедоступный модуль п и закрытый ключ к так, чтобы пик были взаимно простыми числами. В отличие от оригинальной схемы, к используется совместно Алисой и Бобом, получателем в скрытом канале. Открытый ключ вычисляется следующим образом: к = -к2 тобт? Если Алисе нужно отправить скрытое сообщение М в безобидном сообщении М\ она сначала проверяет, что пары М' и п, а также Мип являются взаимно простыми числами. Алиса вычисляет: ^ =1/2* ((А/7 М + А/)) то Ап Б2 =к/2*((М'/М-М)) то Ап Пара чисел 8Х и $>2 представляет собой подпись в традиционной схеме Онга-Шнорра- Шамира и одновременно является носителем скрытого сообщения. Надзиратель Уолтер (вы его еще не забыли?) может проверить подлинность сообщения, как это принято в схеме Онга-Шнорра-Шамира, но Боб может сделать и еще кое-что. Он может проверить подлинность сообщения (всегда возможно, что Уолтер попытается ему подсунуть поддельное сообщение). Он проверяет, что: 5]2 - 822/к2 = М' (той п) Если подлинность сообщения доказана, получатель может извлечь и скрытое сообщение, используя следующую формулу: М = М’/(81+52к~1) той п Эта схема работоспособна, но помните, что сама схема Онга-Шнорра-Шамира была взломана. На основе схемы Эль-Гамаля Другой предложенный Симмонсом скрытый канал [1459] описан в [1407, 1473]; он основан на схеме подписи Эль-Гамаля (см. раздел 19.6). Генерация ключа выполняется так же, как и в основной схеме подписи Эль-Гамаля. Сначала выбирается простое число р и два случайных числа # и г, меньшие р. Затем вычисляется: К = #гпкх1 р
ГЛАВА 23. Специальные алгоритмы для протоколов 593 Открытым ключом служат К, % и р. Закрытым ключом является г. Помимо Алисы г известно и Бобу, это число используется не только для подписи безобидного сообщения, но и в качестве ключа для отправки и чтения скрытого сообщения. Для отправки скрытого сообщения М в безобидном сообщении значения М\ М и р должны быть взаимно простыми, кроме того, взаимно простыми должны быть значения А/ир-1. Алиса вычисляет: X = §м тоб р И решает следующее уравнение для У (с помощью расширенного алгоритма Евклида): М'=гХ + МУ тоб (р-1) Как и в базовой схеме Эль-Гамаля, подписью является пара чисел: X и У. Уолтер может проверить подпись Эль-Гамаля. Он убеждается, что: КхХу = ям'(тос1 р) Боб может восстановить скрытое сообщение. Сначала он убеждается, что: (§Г)ХХУ ш§м\той р) Если это так, он считает сообщение подлинным (не подделанным Уолтером). Затем для восстановления М он вычисляет: М = {У~\М'~ гХ)) тос! (р -1) Например, пусть р= 11, а #=2. Закрытый ключ г выбирается равным 8. Это означает, что открытым ключом, который Уолтер может использовать для проверки подписи, будет %г тоб р = 28 тоб 11 = 3. Чтобы отправить скрытое сообщение М- 9, используя безобидное сообщение М'= 5, Алиса проверяет, что 9 и И, а также 5 и 11 попарно взаимно простые числа. Она также убеждается, что взаимно просты числа 9 и 11-1=10. Это и в самом деле так, поэтому она вычисляет: X = (тоб р) = 29 тоб 11 = 6 Затем она решает следующее уравнение для У: 5=8*6 + 9* Гтоб 10 У= 3, поэтому подписью служит пара чисел 6 и 3 (Xи У). Боб убеждается, что: {§г)х ху =ём\тод. р) (28)б63 = 25 (тос! 11) Эти равенства справедливы (выполните арифметические действия самостоятельно, если вы мне не верите), поэтому он может раскрыть скрытое сообщение, вычисляя: М = (У~\М'~ гХ)) тос! О -1) = 3"’ (5 - 8 * 6) тос! 10 = 7 (7) тос! 10 = 49 той 10 = 9
594 Прикладная криптография На основе Е51СЫ В схеме Е8ЮК [1460] (см. раздел 20.6) также можно создать скрытый канал. В Е8ЮК секретный ключ представляет собой пару больших простых чисел рид,а открытым ключом служит п = р2^. При использовании скрытого канала закрытым ключом являются три простых числа р, ц и г, а открытым ключом такое значение п, что: п = р2^^ Переменная г - это дополнительная информация, нужная Бобу для прочтения скрытого сообщения. Чтобы подписать обычное сообщение, Алиса сначала выбирает случайное число х, меньшее рдг, и вычисляет: наименьшее целое, которое больше, чем (Н(т)-хк тоб п)! рцг) 8 = х + ((м?/кхк~1) тоб р) р^^ Здесь Н(т) - это хэш-значение сообщения, а к - параметр безопасности. Значение $ является подписью. Чтобы проверить подпись, Боб вычисляет 8к тоб п. Кроме этого, он вычисляет а, наименьшее целое, которое больше или равно удвоенному числу битов л, деленному наЗ. Если значение Н(т) меньше или равно я* тоб л, и если ^тоби меньше Н(т) + 2а , то подпись считается правильной. Для отправки скрытого сообщения М с помощью безобидного сообщения М' Алиса вычисляет $, используя М вместо Н(т). Это означает, что сообщение должно быть меньше, чем р2 Затем она выбирает случайное число и и вычисляет: х' = М' + иг Далее это значение х9 используется в качестве «случайного числа» х при подписи М. Это второе значение $ посылается в качестве подписи. Уолтер может проверить, что ^ (второе $) является правильной подписью М\ Точно так же проверить подлинность сообщения может и Боб. Но так как ему известно и значение г, он может вычислить ^ = х' + ур^^ = М + иг + урдг = М (тоб г) Описанная реализация скрытого канала намного лучше двух предыдущих. При использовании вариантов Онга-Шнорра-Шамира и Эль-Гамаля у Боба должен быть закрытый ключ Алисы. Боб сможет не только читать скрытые сообщения Алисы, но и выдавать себя за Алису, подписывая обычные документы. Алиса ничего с этим не сможет поделать; устанавливая такой скрытый канал, ей придется довериться Бобу. Схема Е810И не имеет этого недостатка. Закрытым ключом Алисы служит набор трех простых чисел: р, д и г. Секретным ключом Боба является только г. Он знает п = р2^г, но, чтобы раскрыть р и д, ему понадобится разложить на множители число гг. Если
ГЛАВА 23. Специальные алгоритмы для протоколов 595 простые числа достаточно велики, Бобу будет так же трудно выдать себя за Алису, как и Уолтеру или кому-нибудь еще. На основе 05А В схеме Э8А [1468, 1469, 1473] (см. раздел 20.1) также существует скрытый канал. Фактически их даже может быть несколько. Простейший скрытый канал включает выбор к. Предполагается, что это будет случайное 160-битовое число. Однако если Алиса выбирает конкретное значение к, то Боб, зная закрытый ключ Алисы, сможет раскрыть это к. Алиса может посылать Бобу 160-битовое скрытое сообщение в каждой подписи Б8А, а все остальные будут только проверять подпись Алисы. Дополнительное усложнение: так как значение к должно быть случайным, Алиса и Боб должны использовать общий одноразовый блокнот и шифровать скрытое сообщение с помощью этого блокнота, генерируя к. В схеме Э8А есть скрытые каналы, не требующие передавать Бобу закрытый ключ Алисы. Эти каналы также подразумевают выбор конкретных значений к, но они не могут переда¬ вать по 160 битов информации. Следующая схема, представленная в [1468, 1469], позво¬ ляет Алисе и Бобу обмениваться в каждой подписи одним битом скрытой информации. 1) Алиса и Боб выбирают случайное простое число Р (отличающееся от параметра р в схеме подписи). Это секретный ключ для скрытого канала. 2) Алиса подписывает безобидное сообщение М. Если она хочет отправить Бобу скрытый бит 1, она убеждается, что параметр г подписи является квадратичным вычетом по модулю Р. Если она хочет отправить ему 0, она проверяет, что параметр г подписи является квадратичным невычетом по модулю Р. Она добивается этого, подписывая сообщение с помощью случайных значений к, пока она не получит подпись с нужным ей свойством для г. Так как числа, являющиеся квадратичными вычетами и невычетами, равновероятны, то добиться результата не слишком сложно. 3) Алиса посылает Бобу подписанное сообщение. 4) Боб проверяет подпись и убеждается в подлинности сообщения. Затем он проверяет, является ли г квадратичным вычетом по модулю Р и восстанавливает скрытый бит. Передача описанным выше способом нескольких битов подразумевает подбор такого значения г, которое является квадратичным вычетом или невычетом по нескольким модулям. Подробности приведены в [1468, 1469]. Описанная выше схема может быть легко расширена для передачи в одной подписи нескольких скрытых битов. Если Алиса и Боб выбирают два случайных числа Р и (9, то Алиса может посылать два бита, выбирая случайное к так, чтобы г являлось квадратичным вычетом или невычетом по модулю Р, а также являлось квадратичным вычетом или невычетом по модулю (9. Случайное значение к с вероятностью 25 % позволит получить г с нужными свойствами. Вот как Мэллори, недобросовестный создатель реализации Э8А, может создать алгоритм, извлекающий по 10 битов закрытого ключа Алисы из каждой ее подписи. 1) Мэллори конструирует свою реализацию Э8А на базе устойчивой к взлому СБИС, чтобы никто не смог проверить, как она работает. Он создает 14-битный скрытый канал в своей реализации Б8А. То есть, он выбирает 14 случайных простых чисел и
596 Прикладная криптография использует микросхему, которая выбирает значение к так, чтобы г являлось квадратичным вычетом или невычетом по модулю каждого из этих 14 простых чисел, в зависимости от скрытого сообщения. 2) Мэллори выдает микросхемы Алисе, Бобу и остальным желающим. 3) Алиса подписывает сообщение обычным образом, используя свой закрытый 160-битовый ключ л;. 4) Микросхема случайным образом выбирает 10-битовый блок х: первые 10 битов, вторые 10 битов, и т.д. Так как существует 16 возможных 10-битовых блоков, то номер блока выражается 4-битовым числом. Этот 4-битовый идентификатор плюс 10 битов ключа и представляют собой 14-битовое скрытое сообщение. 5) Микросхема перебирает случайные значения к, пока не удастся найти то, которое обладает правильными квадратичными вычетами, нужными для передачи скрытого сообщения. Вероятность того, что случайное значение к обладает правильной формой, равна 1/16384. Если микросхема может проверить 10000 значений к в секунду, нужное значение будет найдено меньше, чем за пару секунд. Эти вычисления не зависят от сообщения и могут быть вычислены заранее, до того, как Алиса захочет подписать сообщение1. 6) Микросхема обычным образом подписывает сообщение, используя выбранное на этапе 5 значение к. 7) Алиса посылает цифровую подпись Бобу или опубликовывает ее в сети, или выполняет какие-либо другие операции. 8) Мэллори восстанавливает г и, так как он знает 14 простых чисел, расшифровывает скрытое сообщение. Хуже всего то, что, даже если Алиса знает, что происходит, она ничего не сможет доказать. Пока 14 простых чисел хранятся в секрете, Мэллори в безопасности. Уничтожение скрытого канала в Э5А Данный скрытый канал использует то обстоятельство, что Алиса может выбирать к для передачи скрытой информации. Чтобы уничтожить скрытый канал связи, Алисе должна быть запрещена возможность выбора к. Однако выбор к должен быть запрещен и для всех других лиц. Если кому-либо другому будет позволено выбирать к, то это лицо получит возможность подделать подпись Алисы. Единственным решением для Алисы является проведение генерации к вместе с другой стороной, Бобом, так, чтобы Алиса не могла управлять ни одним битом к, а Боб не мог определить ни один бит к. На другой стороне протокола у Боба должна быть возможность проверить, что Алиса использовала именно совместно созданное к. 1 Как отмечает Шнайер, эти действия могут быть ускорены в 16 раз. Для этого Мэллори будет выбирать не случайный блок ключа х, а тот, на который указывают младшие 4 бита числа г, и тогда ему понадобится всего лишь 10-битный скрытый канал.
ГЛАВА 23. Специальные алгоритмы для протоколов 597 Ниже представлен соответствующий протокол [1470, 1472, 1473]: 1) Алиса выбирает к' и посылает Бобу сообщение: и - тоб р 2) Боб выбирает к" и посылает его Алисе. 3) Алиса вычисляет к = к'к” тоб (р -1). Она использует к, чтобы подписать свое сообщение М, используя Б8А, и посылает Бобу свою подпись: г ид. 4) Боб проверяет, что: {{ик тоб р) тоб Если это справедливо, то Боб знает, что для подписи М использовалось к. После этапа 4 Боб знает, что в г не было включено никакой скрытой информации. Если он является доверенной стороной, он может проверить, что в подписи Алисы нет скрытой информации. Другим придется поверить его заявлению, Боб не сможет доказать этот факт третьей стороне, воспроизведя запись протокола. Удивительно то, что Боб, если захочет, может использовать этот протокол для создания собственного скрытого канала. Боб может включить скрытую информацию в одну из подписей Алисы, выбрав к" с определенными характеристиками. Когда Симмонс открыл такую возможность, он назвал ее «Каналом кукушки». Подробности работы «Канала кукушки», и предотвращающий ее создание трехпроходный протокол генерации к, рассматриваются в [1471, 1473]. Другие схемы Скрытый канал можно встроить в любую схему подписи [1458, 1460, 1406]. В [485] можно найти описание протокола встраивания скрытого канала в схемы Фиата-Шамира и Фейге-Фиата-Шамира вместе с возможными злоупотреблениями. 23.4. Неоспоримые цифровые подписи Автором описываемого ниже алгоритма неоспоримой подписи (см. раздел 4.3) является Дэвид Чаум (Оау1б СЬашп) [343,327]. Сначала опубликовываются большое простое число р и примитивный корень которые будут совместно использоваться группой подписывающих лиц. У Алисы есть закрытый ключ х и открытый ключ %х тоб р . Чтобы подписать сообщение, Алиса вычисляет 2 = тх тоб р. Это все, что ей нужно сделать. Проверка подписи немного сложнее. 1) Боб выбирает два случайных числа, а и Ъ, оба меньшие р, и отправляет Алисе: с = 2а(%х)ь тоб р 2) Алиса вычисляет / = х-1 тоб (р -1), и отправляет Бобу: с1 = с1 тоб р
598 Прикладная криптография 3) Боб проверяет, что: й = та%ь (тоб р) Если это имеет место, он считает подпись истинной. Предположим, что Алиса и Боб выполнили этот протокол, и Боб теперь считает, что Алиса подписала сообщение. Боб хочет убедить в этом Кэрол, поэтому он показывает ей запись протокола. Дэйв, однако, хочет убедить Кэрол, что документ подписан кем-то другим. Для этого Дэйв создает поддельную запись протокола. Сначала он генерирует сообщение на этапе 1. Затем на этапе 3 он генерирует д, и ложную передачу от другого человека на этапе 2. Наконец, он создает сообщение этапа 2. Для Кэрол записи Боба и Дэйва одинаковы. Ее невозможно убедить в правильности подписи, пока она не выполнит протокол самостоятельно. Конечно, если бы она следила из-за плеча Боба за тем, как он выполняет протокол, она была бы убеждена. Кэрол нужно увидеть выполнение этапов по порядку, так, как это делал Боб. Используя такую схему подписи, можно столкнуться с проблемами, но я не знаю подробностей. Прежде чем воспользоваться этой схемой, просмотрите литературу. Другой протокол включает не только протокол подтверждения - Алиса может убедить Боба в правильности своей подписи - но и протокол отрицания. Алиса может с помощью интерактивного протокола с нулевым разглашением убедить Боба, что ее подпись неправильна, если это так [329]. Как и в предыдущем протоколе, здесь также группа подписывающих лиц использует общедоступное, большое, простое число р и примитивный корень У Алисы есть закрытый ключ х и открытый ключ ^ тоб р. Чтобы подписать сообщение, Алиса вычисляет 2=тх тоб р. Чтобы проверить подпись: 1) Боб выбирает два случайных числа, а и Ь, меньшие р, и отправляет Алисе: с = та тоб р 2) Алиса выбирает случайное число меньшее р, а затем вычисляет и отправляет Бобу: ^ = с%д тоб р, 52 = (с8я)х тоб р 3) Боб посылает Алисе а и Ь, чтобы Алиса могла убедиться, что Боб не мошенничал на этапе (1). 4) Алиса посылает Бобу д, чтобы он мог воспользоваться тх и восстановить 5] и з2. Если: 51 = С8Ч (тос1 Р) *2=(%Х)Ь+9 1<х (той р) то подпись правильна.
ГЛАВА 23. Специальные алгоритмы для протоколов 599 Алиса может также отрицать подпись г под сообщением т. В работе [329] приведены подробности действия этой схемы. Дополнительные протоколы для неоспоримых подписей можно найти в [584, 344]. В работе [700] Лейн Харн (Ьеш Нагп) и Шубао Янг (ЗЬоиЬао Уап§) предложили схему групповых неоспоримых подписей. Преобразуемые неоспоримые подписи В [213] приведен алгоритм для преобразуемых неоспоримых подписей, которые можно проверять, отрицать и преобразовывать в обычные цифровые подписи. Он основан на алгоритме цифровых подписей Эль-Гамаля. Вначале, как и в алгоритме Эль-Гамаля, выбираются два таких простых числа ри<у, что ^ является делителем р - 1. Далее создается число меньшее для этого в диапазоне от 2 до р - 1 выбирается случайное число к и вычисляется: § = к^р'1^1д тоб р Если § равно 1, выбирается другое случайное значение к. Если не равно, используется полученное значение Закрытыми ключами служат два различных случайных числа, х и г, оба меньшие д. Открытыми ключами являютсяр, <7, & у и и, где: у = %х тоб р и = %2 тоб р Для вычисления преобразуемой неоспоримой подписи сообщения т (которое в действительности является хэш-значением сообщения), сначала диапазоне от 1 до ^ - 1 выбирается случайное число /. Затем вычисляется: Т = тоб р и т' = Лип тоб <7 Теперь вычисляется обычная подпись Эль-Гамаля для т'. Выбирается случайное число К, меньшее р - 1 и взаимно простое с ним. Затем вычисляется г = тоб р и, с помощью расширенного алгоритма Евклида, вычисляется 5, для которого: гх + Кз (тоб <7) В качестве подписи используется подпись Эль-Гамаля {г, з) и Т. Вот как Алиса подтверждает свою подпись Бобу: 1) Боб генерирует два случайных числа, а и Ь, и вычисляет с = ТТта %ь той р и посылает результат Алисе.
600 Прикладная криптография 2) Алиса генерирует случайное число к и вычисляет кх = с%к тос! р и к2~ к2 тос! р , а затем посылает оба числа Бобу. 3) Боб посылает Алисе а и Ь. 4) Алиса проверяет, что с = ТГта тоб р . Она посылает к Бобу. 5) Боб проверяет, что кх - ТТта тоб р , и что к2 = у™ г™ иь+к тоб р . Опубликовав значение 2, Алиса может преобразовать все свои неоспоримые подписи в обычные. Теперь любой сможет проверить подпись Алисы без ее помощи. Схемы неоспоримых подписей можно объединить со схемами разделения секрета, создав распределенные преобразуемые неоспоримые подписи [1235]. Некое лицо может подписать сообщение, а затем распределить возможность подтверждения правильности подписи. Это лицо может, например, потребовать, чтобы в протоколе убеждения Боба в правильности подписи участвовали трое из пяти обладателей возможности подтверждения правильности. В [700, 1369] предложены улучшения, позволяющие отказаться от необходимости доверенного лица. 23.5. Подписи, подтверждаемые доверенным лицом Покажем, как Алиса может подписать сообщение, а Боб проверить его так, чтобы и Кэрол немного позже могла доказать Дэйву правильность подписи Алисы (см. раздел 4.4) [333]. Вначале опубликовываются большое простое число р и примитивный корень которые будут совместно использоваться группой пользователей. Также опубликовывается значение л, равное произведению двух простых чисел. У Кэрол есть закрытый ключ 2 и открытый ключ к-§2 тоб р. В этом протоколе Алиса может подписать т так, чтобы Боб мог проверить правильность ее подписи, но не мог убедить в этом третью сторону. 1) Алиса выбирает случайное значение х и вычисляет: а = §х тоб р Ъ-кх тоб р Она вычисляет Н(т) - хэш-значение т, далее Н(а, Ъ) - хэш-значение конкатенации а и Ь, а затем значение: ; = №)ФЯ(а(/>))|/3 шос1 п И посылает а, Ь иу Бобу. 2) Боб выбирает два случайных числа, 5И/, оба меньшие р, и посылает Алисе: с = к1 тоб р
ГЛАВА 23. Специальные алгоритмы для протоколов 601 3) Алиса выбирает случайное значение меньшее р, и посылает Бобу: (I - §ч тоб р е - (Ы)х тоб р 4) Боб посылает Алисе 5) Алиса проверяет, что: %5 к1 = с (тоб р) Затем она посылает Бобу д. 6) Боб проверяет: (I = §ч (тоб р) е/ад = </ Ъ1 (тоб р) Н(т)® Н(а,Ь)) = у1/3 тоб я Если все тождества выполняются, то Боб считает подпись истинной. Боб не может использовать запись этого доказательства для убеждения Дэйва в истинности подписи, но Дэйв может выполнить протокол с доверенным лицом Алисы Кэрол, которая уполномочена подтверждать ее подпись. Вот как Кэрол убеждает Дэйва в том, что а и Ь образуют правильную подпись. 1) Дэйв выбирает случайные и и V, оба меньшие р, и посылает Кэрол: к = §и ах тоб р 2) Кэрол выбирает случайное значение >г, меньшее р, и посылает Дэйву: 1-^ тоб р у - (И)2 тоб р 3) Дэйв посылает Кэрол и и V. 4) Кэрол проверяет, что: а* = к (тоб р) Затем она посылает Дэйву м>. 5) Дэйв проверяет, что: =1 (тоб р) у/к”=ки V (тоб р) Если все сравнения верны, то Дэйв считает подпись истинной.
602 Прикладная криптография Имеется другой протокол, в котором Кэрол может преобразовать протокол доверенного лица в обычную цифровую подпись. Подробности содержаться в работе [333]. 23.6. Вычисления с зашифрованными данными Проблема дискретного логарифма Пусть имеется большое простое число р и образующая Алиса хочет для конкретного значения х найти такое значение е, для которого: §е (тоб р) Эта задача относится к числу трудных, и Алисе не хватает вычислительных мощностей для вычисления результата. А у Боба есть такие возможности - он представляет правитель¬ ство, или мощный вычислительный центр, или еще какую-либо влиятельную органи¬ зацию. Вот как Алиса может получить помощь Боба, не раскрыв ему значение х [547,4]: 1) Алиса выбирает случайное число г, меньшее р. 2) Алиса вычисляет: х'= х#гтоб р 3) Алиса просит Боба решить: §е = х' (тоб р) 4) Боб вычисляет ё и посылает его Алисе. 5) Алиса восстанавливает е, вычисляя: е = (ё-г) тоб (р -1) Подобные протоколы для проблем квадратичных вычетов и примитивных корней приведены в [3, 4] (см. также раздел 4.8). 23.7. Подбрасывание монеты «по телефону» Представленные далее протоколы позволяют Алисе и Бобу подбрасывать монету без изъянов в сети передачи данных (см. раздел 4.9) [194]. Это пример алгоритма бросания монеты в колодец (см. раздел 4.10). Сначала только Боб узнает результат броска и сообщает его Алисе. Затем Алиса может проверить, что Боб сообщил правильный результат броска. Бросание монеты с помощью квадратных корней Подпротокол бросания монеты таков: 1) Алиса выбирает два больших простых числа, р ид, и посылает их произведение п Бобу.
ГЛАВА 23. Специальные алгоритмы для протоколов 603 2) Боб выбирает случайное положительное целое число г, меньшее п/2. Боб вычисляет 2 = г2 тоб п и посылает 2 Алисе. 3) Алиса вычисляет четыре квадратных корня 2 (тоб п). Она может сделать это, так как она знает разложение п на множители. Назовем их +х, -х, +у и -у. Обозначим переменной х' меньшее из следующих двух чисел: хтоби -х тоб п Аналогично, обозначим как у'меньшее из следующих двух чисел: у тоб п -у тоб п Заметьте, что г равно либо х', либо у’. 4) Алиса делает попытку угадать, какое из значений равно г. х' или у', и посылает свою догадку Бобу. 5) Если догадка Алисы правильна, результатом броска монеты является «орел», а если неправильна - «решка». Боб объявляет результат броска монеты. Подпротокол проверки: 6) Алиса посылает р ид Бобу. 7) Боб вычисляет х' и у' и посылает их Алисе. 8) Алиса вычисляет г. Алиса не имеет возможности узнать г, поэтому она действительно угадывает. На этапе 4 Алиса сообщает Бобу только один бит своей догадки, не давая Бобу получить как х', так и у'. Если Боб получит оба этих числа, он сможет изменить г после этапа 4. Бросание монеты с помощью модулярного возведения в степень В данном протоколе в качестве однонаправленной функции используется возведение в степень по модулю простого числар [1306]: Подпротокол бросания монеты таков: 1) Алиса выбирает простое число р так, чтобы множители р - 1 были известны, и среди них было, по крайней мере, одно большое простое число. 2) Боб выбирает два примитивных корня, к и I, в поле ОР (р). Он посылает их Алисе. 3) Алиса убеждается, что к и / являются примитивными корнями, и затем выбирает случайное число х, взаимно простое с р-\. Затем она вычисляет одно из двух значений:
604 Прикладная криптография у = кх тоё р , или у-Iх тоё р Алиса посылает у Бобу. 4) Боб пытается угадать, вычислила Алиса у как функцию к или как функцию и посылает свое предположение Алисе. 5) Если догадка Боба правильна, результатом бросания монеты является «орел», в противном случае - «решка». Алиса объявляет результат броска монеты. Подпротокол проверки: 6) Алиса раскрывает Бобу значение х. Боб вычисляет кх тоё р и Iх тоё р , убежда¬ ется, что Алиса играла честно, и проверяет результат броска. Боб также проверяет, что х и р - 1 - взаимно простые числа. Чтобы Алиса могла смошенничать, она должна знать два целых числа х и х', для которых выполняется сравнение кх = Iх (тоё р). Если бы она знала эти числа, она могла бы вычислить: 1о§, к — х' х-1 тоё р -1 и 1о§, к = х-1 х' тоё р -1 Это трудные задачи. Алиса смогла бы сделать это, если бы она знала 1о§, к, но Боб выбирает к и / на этапе 2. У Алисы нет другого способа, кроме как попытаться вычислить дискретный логарифм. Алиса может также попытаться смошенничать, выбрав х, которое не является взаимно простым с/?-1, но Боб обнаружит это на этапе 6. Боб может смошенничать, если к и I не являются примитивными корнями в поле в СР{р), но Алиса сможет легко проверить это после этапа 2, так как ей известно разложение р- 1 на простые множители. Удачным в этом протоколе является то, что если Алиса и Боб захотят бросить несколько монет, они смогут использовать одни и те же значения р, к и /. Алиса просто генерирует новое значение х, и протокол продолжается с этапа 3. Бросание монеты с помощью чисел Блюма В протоколе бросания монеты можно использовать числа Блюма. 1) Алиса генерирует число Блюма п, случайное х, взаимно простое с п, х0 = х2 тоё п и х, = х02 тоё п . Она посылает Бобу п и хь 2) Боб угадывает, четным или нечетным является х0. 3) Алиса посылает х Бобу. 4) Боб проверяет, что п является целым числом Блюма (Алисе нужно передать Бобу множители п и доказательства того, что они являются простыми, или выполнить некоторый протокол с нулевым разглашением, убеждающий Боба, что п - это число
ГЛАВА 23. Специальные алгоритмы для протоколов 605 О 7 Блюма) и что х0 = х тос! « и = х0 тос! «. Если все проверки выполняются, и Боб угадал правильно, он выигрывает бросок. Принципиально важно, чтобы « было числом Блюма. Иначе Алиса сможет найти такое х о, что х'02 тоб « = х02 тоб « = х}, где х'0 также является квадратичным вычетом. Если х0 будет четным, ах о - нечетным (или наоборот), Алиса могла бы мошенничать. 23.8. Однонаправленные сумматоры Существует простая функция однонаправленного сумматора [116] (см. раздел 4.12): 4(х;,у) = х,_/ тоб « Числа « (« получается произведением двух простых чисел) и х0 должны быть заранее согласованы. Тогда суммированием уиуг иуз будет: ((х0Ух тоб п)Уг тоб п)Уз тоб « Это вычисление не зависит от порядка у ь у2 иу$. 23.9. Раскрытие секретов «все или ничего» Этот протокол позволяет нескольким сторонам (для работы протокола нужно не меньше двух участников) покупать различные секреты у одного продавца (см. раздел 4.13) [1374, 1175]. Начнем с определения. Возьмем две строки битов, х и у. Фиксированным битовым индексом (Пхеб Вй 1пбех, РВ1) х и у называется последовательность номеров совпадающих битов этих строк. Например: х = 110101001011 ^ = 101010000110 ЕВ1(х,у) = { 1,4, 5,11} (Мы считаем биты справа налево, считая крайний правый бит нулевым). Теперь опишем сам протокол. Алиса будет продавцом. Боб и Кэрол - покупателями. У Алисы есть к «-битовых секретов: 5Ь Б2... *$*. Боб хочет купить секрет 8Ь, Кэрол - секрет 5^. 1) Алиса генерирует пару «открытый ключ/закрытый ключ» и сообщает Бобу (но не Кэрол) открытый ключ. Она генерирует другую пару «открытый ключ/закрытый ключ» и сообщает Кэрол (но не Бобу) открытый ключ. 2) Боб генерирует к «-битовых случайных чисел, Вх, В2... Вк и сообщает их Кэрол. Кэрол генерирует к «-битовых случайных чисел, Сь С2... Ск, и сообщает их Бобу. 3) Боб зашифровывает Сь (напомним, он хочет купить секрет 5Ь) открытым ключом, полученным от Алисы. Он вычисляет РВ1 для Сь и только что зашифрованного результата и посылает этот РВ1 Кэрол.
606 Прикладная криптография 4) Кэрол шифрует Вс (напомним, она хочет купить секрет 5С) открытым ключом, полученным от Алисы. Она вычисляет РВ1 для Вс и только что зашифрованного результата. Она посылает этот РВ1 Бобу. 5) Боб берет каждое из «-битовых чисел #ь #2... Вк и заменяет каждый бит, номера которого нет в значении РВ1, полученном от Кэрол, его дополнением. Он посылает этот новый список «-битовых чисел В\, В'2... В\. Алисе. Кэрол берет каждое из «-битовых чисел Сь С2... Ск и заменяет каждый бит, номера которого нет в значении РВ1, полученном от Боба, его дополнением. Она посылает этот новый список п-битовых чисел С ь С 2... С'к Алисе. 6) Алиса расшифровывает все С'/ закрытым ключом Боба, получая к «-битовых чисел С", С"2... С”к. Алиса вычисляет 5,0 С"/ для г = 1,..., к, и посылает результаты Бобу. Алиса расшифровывает все Взакрытым ключом Кэрол, получая к «-битовых чисел #"ь В"2... В"к. Она вычисляет 5, 0 В*для г = 1,..., к, и посылает результаты Кэрол. 7) Боб вычисляет Вь, выполняя операцию ХОК над Вс и й-ым числом, полученным от Алисы. Кэрол вычисляет 5С, выполняя ХОК над Вс и с-ым числом, полученным от Алисы. Все так сложно. Поясним эти долгие действия на примере. У Алисы есть для продажи восемь 12-битовых секретов: #! = 1990, 52 = 471, 53 = 3860, 54 = 1487,55 = 2235,56= 3751, #7 = 2546 и 58 = 4043. Боб хочет купить 57, а Кэрол -32. 1) Алиса использует алгоритм К8А. В диалоге с Бобом она использует следующую пару ключей: «=7387, е = 5145 и й- 777, а в диалоге с Кэрол - «=2747, е= 1421 и */= 2261. Она сообщает Бобу и Кэрол их открытые ключи. 2) Боб генерирует восемь 12-битовых чисел, #1 = 743, В2 - 1988, #3 = 4001, #4 = 2942, #5 = 3421, #6 = 2210, #7= 2306, #8 = 222, и сообщает их Кэрол. Кэрол генерирует восемь 12-битовых чисел, С1= 1708, С2=711, С3= 1969, С4 =3112, С5 = 4014, С6 = 2308, С7 = 2212, С8 = 222, и сообщает их Бобу. 3) Боб хочет купить 57, поэтому он открытым ключом, выданным Алисой, шифрует С7. 22125145 тос! 7387 = 5928 Теперь: 2212 = 0100010100100 5928=1011100101000 Следовательно, значение РВ1 этих двух чисел равно {0, 1, 4, 5, 6}. Боб посылает его Кэрол. Кэрол хочет купить 8Ъ поэтому она открытым ключом, выданным Алисой, шифрует #2 и вычисляет РВ1 для #2 и результата шифрования. Она посылает Бобу {0, 1,2, 6,9, 10}. 4) Боб берет #ь #2,..., #8 и заменяет каждый бит, индекс которого отсутствует в наборе {0, 1, 2, 6, 9, 10} его дополнением. Например: #2 = 111111000100= 1988
ГЛАВА 23. Специальные алгоритмы для протоколов 607 Я'2 = 011001111100= 1660 Он посылает В'и В2... В\ Алисе. Кэрол берет значения Сь С2... С8 и заменяет каждый бит, индекс которого отсутствует в наборе {0, 1, 4, 5, 6} его дополнением. Например: С7= 0100010100100 = 2212 С'7= 1011100101000=5928 Она посылает С'ь С'2... С'8 Алисе. 5) Алиса расшифровывает все С\ закрытым ключом Боба и выполняет ХОК над результатами и 5,. Например, для /= 7: 5928777 тос! 7387 = 2212,2546 0 2212 = 342 Алиса посылает результаты Бобу. Алиса расшифровывает все Взакрытым ключом Кэрол и выполняет ХОК результатов с 5,-. Например, для / = 2: 16602261 (тос! 2747) = 1988,47101988 = 1555 Она посылает результаты Кэрол. 6) Боб вычисляет 57, выполняя ХОК над С7 и седьмым числом, полученным им от Алисы: 2212 0 342 = 2546 Кэрол вычисляет 82, выполняя ХОК В2 и второго числа, полученного ею от Алисы. 198801555 = 471 Протокол работоспособен при любом количестве покупателей. Если Боб, Кэрол и Дэйв хотят купить секреты, Алиса выдает каждому покупателю два открытых ключа, по одному на каждого другого покупателя. Каждый покупатель получает набор чисел от каждого другого покупателя. Затем они выполняют протокол с Алисой для каждого из своих наборов номеров и выполняют операцию ХОК для всех полученных от Алисы результатов, получая свои секреты. Более подробно это описано в [1374, 1175]. К несчастью, пара нечестных участников могут смошенничать. Алиса и Кэрол, действуя на пару, могут легко понять, какой секрет получил Боб: если они знают РВ1 Сь и алгоритм шифрования Боба, они могут подыскать такое й, что у Сь будет правильное значение РВ1. А Боб и Кэрол, действуя вместе, могут легко заполучить все секреты Алисы. Если есть уверенность, что участники честны, можно использовать более простой протокол [389]. 1) Алиса зашифровывает все секреты с помощью К8А и посылает их Бобу: С, = 5/ тоб п
608 Прикладная криптография 2) Боб выбирает свой секрет Сь, генерирует случайное число г и посылает Алисе: С = Сь ге тоб п 3) Алиса посылает Бобу Р’\ Р' = С'а тос! п 4) Боб вычисляет 5': 5Ъ = Р' г~х тоб п Если участники могут жульничать, Боб может доказать с нулевым разглашением, что он знает некоторое г, такое что С - Сь ге тоб п, и хранить Ъ в секрете, пока Алиса не передаст ему на этапе 3 значение Р' [246]. 23.10. Законные и отказоустойчивые криптосистемы Законная схема Диффи -Хеллмана Законные криптосистемы представляют собой способ осуществить депонирование ключей программным методом (см. раздел 4.14). Описываемый далее пример взят из работ Сильвио Микали (8Иую МюаН) [1084, 1085]. Он запатентован [1086, 1087]. В базовой схеме Диффи-Хеллмана группа пользователей использует общее простое число р и образующую Закрытым ключом Алисы является 5, а ее открытым ключом является значение I = тоб р. Вот как сделать схему Диффи-Хеллмана законной (в этом примере используется пять доверенных лиц). 1) Алиса выбирает пять целых чисел, з1, з2, $3, з4, $5, меньших р-1. Закрытым ключом Алисы является Д = (51! + ^2 + + 54 + ^з) тоб р - 1 А ее открытым ключом будет: (= §* тоб р Алиса также вычисляет доли ^ тоб р, для I = 1... 5. Открытыми долями Алисы являются а закрытыми долями - 57. 2) Алиса посылает закрытую и соответствующую открытую долю каждому доверен¬ ному лицу. Например, она посылает и доверенному лицу 1. Она посылает I в КЭС. 3) Каждое доверенное лицо проверяет, что ^ тоб р
ГЛАВА 23. Специальные алгоритмы для протоколов 609 Если это так, доверенное лицо подписывает 11 и посылает его в КОС. Доверенное лицо сохраняет я, в безопасном месте. 4) Получив все пять открытых долей, КОС проверяет, что *=(а * а * н * и * А)тос* Р Если это так, центр КОС признает открытый ключ. В этот момент центр КОС знает, что у каждого доверенного лица есть правильная доля, и что они при необходимости смогут восстановить закрытый ключ. Однако ни КОС, ни любые четыре доверенных лица не могут восстановить закрытый ключ Алисы. Работы Микали [1084, 1085] также содержат описание последовательности действий для создания законного К8А и для объединения пороговой схемы с законной криптосистемой, позволяющей т доверенным лицам из п восстановить закрытый ключ. Отказоустойчивая схема Диффи -Хеллмана Как и в предыдущем протоколе, у группы пользователей есть общее простое число р и образующая Закрытым ключом Алисы является з, а ее открытым ключом I - тоб р. 1) КОС выбирает случайное число В из диапазона от 0 до р- 2 и вручает его с помощью протокола вручения битов (см. раздел 4.9). 2) Алиса выбирает случайное число А из диапазона от 0 до р - 2. Она посылает КОС %л тоб р . 3) Пользователь «разделяет» А с каждым доверенным лицом, используя схему подтверждаемого разделения секрета (см. раздел 3.7). 4) КОС раскрывает В Алисе. 5) Алиса проверяет вручение этапа (1). Затем она устанавливает свой открытый ключ равным: 1 = (8Л)ёВ тос! р а закрытый ключ равным: д = (А + В) тоб (р -1) Доверенные лица могут восстановить А. Так как центр КОС знает В, этого достаточно для восстановления я. И Алиса не сможет использовать никаких скрытых каналов для передачи несанкционированной информации. Этот протокол, рассмотренный в [946, 833], в настоящее время патентуется.
610 Прикладная криптография 23.11. Доказательства знания с нулевым разглашением Доказательство знания дискретного логарифма с нулевым разглашением Допустим, Пегги хочет доказать Виктору, что ей известно х, являющееся решением Ах = В (той р) где р - простое число, ах- произвольное число, взаимно простое с р - 1. Числа А, В и р общедоступны, а х хранится в секрете. Вот как Пегги, не раскрывая значения х, может доказать, что ей известно значение х (см. раздел 5.1) [338, 337]. 1) Пегги генерирует ^ случайных чисел, г\9 г2... гь причем все г, меньшер - 1. 2) Пегги вычисляет /*, = Ап той р для всех значений / и посылает их Виктору. 3) Пегги и Виктор, воспользовавшись протоколом подбрасывания монеты, генерируют /битов: Ь\, Ъ2... Ь{. 4) Для всех 1 битов Пегги выполняет одну из следующих операций: a. Если Ъ{ = 0, она посылает Виктору г, b. Если = 1, она посылает Виктору 5,-=(/;•-Гу)той(/?-1), где у - наименьшее значение индекса, при котором = 1 5) Для всех / битов Виктор проверяет одно из следующих условий: а. При Ь( = 0, что Ап = А, (той р) c. При 6/ = 1, что А** = ^ Н~1 (той р) 6) Пегги посылает Виктору 2, где 2 = (х - г;) той (р -1) 7) Виктор проверяет, что: Аг н ВИ~Х (той р) Вероятность удачного мошенничества Пегги равна 2~‘. Доказательство способности вскрытия К5А с нулевым разглашением Допустим, что Алиса знает закрытый ключ Кэрол. Может быть, она взломала ЯЗА, а может, она взломала дверь квартиры Кэрол и выкрала ключ. Алиса хочет убедить Боба, что ей известен ключ Кэрол. Однако она не хочет ни сообщать Бобу ключ, ни даже расшифровать для Боба одно из сообщений Кэрол. Далее приведен протокол с нулевым
ГЛАВА 23. Специальные алгоритмы для протоколов 611 разглашением, с помощью которого Алиса убеждает Боба, что она знает закрытый ключ Кэрол [888]. Пусть открытый ключ Кэрол - е, ее закрытый ключ - с/, а модуль К8А - п. 1) Алиса и Боб выбирают случайное значение к и значение т, для которых: кт = е (тоб п) Числа они должны выбирать случайным образом, используя для генерации к протокол бросания монеты, а затем вычисляя т. Если и к, и т больше 3, протокол продолжается. В противном случае числа выбираются заново. 2) Алиса и Боб генерируют случайный шифртекст С. И снова они должны восполь¬ зоваться протоколом бросания монеты. 3) Алиса, используя закрытый ключ Кэрол, вычисляет: М = Са тоб п Затем она вычисляет: X = Мк тоб п и посылает X Бобу. 4) Боб проверяет, что Хт тоб п = С . Если это так, то он убеждается в правильности заявления Алисы. Аналогичный протокол можно использовать для демонстрации способности вскрытия криптосистем, основанных на задаче дискретного логарифмирования [888]. Доказательство с нулевым разглашением того, что п является числом Блюма Пока неизвестно никаких действительно практичных доказательств того, что и = р#, где р и ^ - простые числа, сравнимые с 3 по модулю 4. Однако если п имеет форму ргс(, где г и 5 нечетны, то у числа п все еще сохраняются свойства чисел Блюма, полезные для криптографии. И тогда существует доказательство с нулевым разглашением того, что п имеет указанную форму. Предположим, что Алисе известно разложение на множители числа Блюма п, где п обладает рассмотренной выше формой. Вот как она может доказать Бобу, что п имеет такую форму [660]. 1) Алиса посылает Бобу число г/, чей символ Якоби равен -1 по модулю п. 2) Алиса и Боб совместно выбирают случайные биты: Ьь Ь2... Ьк. 3) Алиса и Боб совместно выбирают случайные числа: хь х2... **• 4) Для каждого / = 1,2...к Алиса посылает Бобу квадратный корень по модулю п для одного из четырех чисел: х» -х» ихи -их,. Символ Якоби квадратного корня должен быть равен 6,. Вероятность удачного мошенничества Алисы равна 1/2*.
612 Прикладная криптография 23.12. Подписи «вслепую» Понятие подписей «вслепую» (см. раздел 5.3) было предложено Дэвидом Чаумом [317, 323], который также предложил и первую реализацию [318]. Она использует алгоритм ЯЗА. У Боба есть открытый ключ е, закрытый ключ А и открытый модуль п. Алиса хочет, чтобы Боб вслепую, не читая, подписал сообщение т. 1) Алиса выбирает случайное число к из диапазона от 1 до п. Затем она маскирует т, вычисляя: I - тке тоб п 2) Боб подписывает V. = (ткеУ тоб п 3) Алиса снимает маскировку с вычисляя: 8 = 1а /к тоб п 4) Результатом является: 5 -та тоб п Это можно легко показать: I* = (тке)а =та к = (тоб п), поэтому г* !к = т6* к/к = ти (тоб п). Чаум придумал целое семейство более сложных алгоритмов подписи «вслепую» [320, 324], называемых неожиданными (тап1тра1ес1) слепыми подписями. Схемы этих подписей сложнее, но они обеспечивают больше возможностей. 23.13. Передача с забыванием В этом протоколе, предложенном Майклом Рабином (МюЬае1 ЯаЫп) [1286], Алисе с вероятностью 50 % удается передать Бобу два простых числа, р и Алиса не знает, успешно ли прошла передача (см. раздел 5.5). (Этот протокол можно использовать для передачи Бобу любого сообщения с 50 % вероятностью успешной передачи, если р и д раскрывают закрытый ключ ЯЗА). 1) Алиса посылает Бобу произведение двух простых чисел: п- /?<? . 2) Боб выбирает случайное число х, меньшее п и взаимно простое с п. Он посылает Алисе: а = х2 тоб п 3) Алиса, зная р и д, вычисляет четыре квадратных корня а: х, п-х, у и п-у. Она случайным образом выбирает любой из этих корней и посылает его Бобу.
ГЛАВА 23. Специальные алгоритмы для протоколов 613 4) Если Боб получает >> или п-у, он может вычислить наибольший общий делитель х+у и п, которым будет либо р, либо д. Затем, конечно же, вычислить п/р = д. Если Боб получает х или п - х, он не может ничего вычислить. У этого протокола может быть слабое место: возможна ситуация, когда Боб может вычислить такое число а, что при известном квадратном корне он сможет всегда разложить п на множители. 23.14. Тайные многосторонние вычисления Данный протокол взят из [1373]. Алиса знает целое число а Боб - целое число у. Алиса и Боб вместе хотят узнать, что правильно - / < у или / > у, но ни Алиса, ни Боб не хотят раскрыть свое число партнеру. Этот особый случай тайных многосторонних вычислений (см. раздел 6.2) иногда называют проблемой миллионера Яо (Уао) [1627]. В приводимом примере предполагается, что / и у находятся в диапазоне от 1 до 100. У Боба есть открытый и закрытый ключи. 1) Алиса выбирает большое случайное число х и шифрует его открытым ключом Боба. с - Ев(х) 2) Алиса вычисляет с-у и посылает результат Бобу. 3) Боб вычисляет следующие 100 чисел: уи = Бв (с - / + и) , для 1 < и < 100 Д? обозначает расшифрование закрытым ключом Боба. Он выбирает большое случайное простое число р. (Размер р должен быть немного меньше х. Боб не знает х, но Алиса может легко сообщить ему размер х). Далее Боб вычисляет следующие 100 чисел: 2и = (уи тоб р) , для 1 < и < 100 Далее он проверяет, что для всех и Ф V \2и-2у\>2. И что для всех и 0<ги<р-\ Если это не так, то Боб выбирает другое простое число и пробует снова. 4) Боб посылает Алисе эту последовательность чисел, соблюдая их точный порядок: > ^2’* * *> ’ ^/+1 ^ ^7+2 * •» ^100 Ь Р 5) Алиса проверяет, сравним ли /-ый член последовательности с х по модулю /?. Если это так, она делает вывод, что / < у . В противном случае она решает, что / > у. 6) Алиса сообщает Бобу свои выводы.
614 Прикладная криптография Проверка, которую Боб выполняет на этапе 3, должна гарантировать, что в последовательности, генерированной на этапе 4 ни одно число не появится дважды. В противном случае, если га=гь, Алиса узнает, что а < ] <Ъ. Недостатком этого протокола является то, что Алиса узнает результаты вычислений раньше Боба. Ничто не помешает ей завершить протокол на этапе 5, отказавшись сообщать Бобу результаты. Она даже может солгать Бобу на этапе 6. Пример исполнения протокола Пусть они используют К8А. Открытым ключом Боба является 7, а закрытым - 23; п = 55. Секретное число Алисы / равно 4, секретное число Боба у равно 2. (Предположим, что числа / и у могут принимать только значения 1, 2, 3 и 4). 1) Алиса выбирает х= 39 и с-Ев (39) = 19. 2) Алиса вычисляет с-/ = 19-4 = 15. Она посылает 15 Бобу. 3) Боб вычисляет следующие четыре числа: Л=Я*(15 + 1) = 26 У2 -ПВ (15+ 2) = 18 у3=йв( 15 + 3) = 2 Л=Л*(15 + 4) = 39 Он выбирает р- 31 и вычисляет: 2\ - (26 тоб 31) = 26 22 =(18 тоб 31) = 18 23 = (2 тоб 31) = 2 г4 =(39 тоб 31) = 8 Он выполняет все проверки и убеждается, что последовательность правильна. 4) Боб посылает Алисе эту последовательность чисел, соблюдая их порядок: 26, 18, 2+1,8+1,31 =26, 18,3,9,31 5) Алиса проверяет, сравнимо ли четвертое число с X тоб р. Так как 9 Ф 39 (тоб 31), то / > у. 6) Алиса сообщает об этом Бобу. Описанный выше протокол можно использовать для создания намного более сложных протоколов. С его помощью группа людей может проводить тайный аукцион по сети. Они логически упорядочивают себя по кругу и с помощью попарных сравнений определяют, кто предложил большую цену. Чтобы не дать людям возможности изменять уже сделанные предложения в середине аукциона, должен использоваться какой-то
ГЛАВА 23. Специальные алгоритмы для протоколов 615 протокол вручения битов. Если аукцион проводится по голландской системе, то лицо, предложившее наивысшую цену, получает предмет за его наивысшую цену. Если аукцион проводится по английской системе, то лицо получает предмет за вторую высшую цену. (Это может быть выяснено во время второго круга попарных сравнений). Аналогичные идеи применимы при заключении сделок, переговорах и арбитраже. 23.15. Вероятностное шифрование Идея вероятностного шифрования было изобретено Шафи Голдвассером (8Ьай ОоШхуаззег) и Сильвио Микали [624]. Хотя их теория позволяет создать самую безопасную из изобретенных криптосистем, ранняя реализации была неэффективной [625]. Но более поздние реализации все изменили. Основной целью вероятностного шифрования является устранение утечки информации в криптографии с открытым ключом. Поскольку криптоаналитик всегда может зашифровать случайные сообщения открытым ключом, он может получить некоторую информацию. При условии, что у него есть шифртекст С = Ек (М) и он пытается получить открытый текст М, он может выбрать случайное сообщение М' и зашифровать его: С - Ек (М'). Если С = С, то он угадал правильный открытый текст. В противном случае он делает следующую попытку. Вдобавок, вероятностное шифрование позволяет избежать даже частичной утечки информации об оригинальном сообщении. При использовании криптографии с открытым ключом криптоаналитик иногда может узнать кое-что о битах: что операция ХОК над 5, 17 и 39 битами равна 1, и т.п. При вероятностном шифровании остается скрытой и такая информация. Указанным методом можно извлечь немного информации, но возможность крипто¬ аналитика расшифровывать случайные сообщения вашим открытым ключом может создать потенциальные проблемы. Каждый раз, шифруя сообщение, криптоаналитик может извлечь немного информации. Никто не знает, насколько значительна эта информация. Вероятностное шифрование пытается устранить эту утечку. Цель этого метода состоит в том, чтобы ни вычисления, проводимые над шифртекстом, ни проверка любых других открытых текстов не смогли дать криптоаналитику никакой информации о соответ¬ ствующем открытом тексте. При вероятностном шифровании алгоритм шифрования является вероятностным, а не детерминированным. Другими словами, многие шифртексты при расшифровке дают данный открытый текст, и конкретный шифртекст, используемый в любом конкретном шифровании, выбирается случайным образом. СХ=ЕК(М), С2 = Ек(М), С3 = ЕК(М),..., С1 = ЕК(М) м = Ок(Сх) = Ок(С2) = Ок(С3) =... = ПК(С{) При вероятностном шифровании криптоаналитику больше не удастся шифровать произвольные открытые тексты в поисках правильного шифртекста. Для иллюстрации пусть у криптоаналитика есть шифртекст С, = Ек (М). Даже если он правильно
616 Прикладная криптография угадает М, полученный при шифровании Ек (М) результат будет совершенно другим шифртекстом С: Су. Ему бесполезно сравнивать С/ и Су, он не сможет узнать, была ли его догадка правильной. Это очень впечатляющее средство. Даже если у криптоаналитика есть открытый ключ зашифрования, открытый текст и шифртекст, он не сможет без закрытого ключа расшифрования доказать, что шифртекст является результатом шифрования конкретного открытого текста. Даже выполнив полный перебор, он может доказать только, что каждый допустимый открытый текст является всего лишь возможным открытым текстом. В этой схеме шифртекст всегда будет длиннее открытого текста. Данного обстоятельства невозможно избежать, поскольку причина в том, что многие шифртексты расшифровываются в один и тот же открытый текст. В первой схеме вероятностного шифрования [625] шифртекст получался настолько больше открытого текста, что он был бесполезным. Однако Мануэль Блюм (Мапие1 В1ит) и Голдвассер получили эффективную реализацию вероятностного шифрования с помощью генератора псевдослучайных битов ВВ5, описанного в разделе 17.9 [199]. Генератор ВВ8 основан на теории квадратичных вычетов. Если по-русски, то существуют два простых числа, р и д, сравнимых с 3 по модулю 4. Это закрытый ключ. Их произведение, рд = п, является открытым ключом. (Запомните свои р и д, безопасность схемы опирается на сложность разложения п на множители). Для шифрования сообщения М сначала выбирается случайное х, взаимно простое с п. Затем вычисляется. х0 = х2 тоб п которое служит начальным значением для генератора псевдослучайных битов ВВ8, а выход генератора используется в качестве потокового шифра. Побитно выполняется операция ХОК над М и выходом генератора. Генератор выдает биты Ъ, (младший значащий бит х/9 где х, = хм тоб п ), поэтому: М = МЬМЪМЪ...М1 С - Мх 0 6,, М2 0 Ъъ Мъ 0 ^3,..., М( 0 Ъ{ где /- это длина открытого текста Добавьте последнее вычисленное значение, х,, к концу сообщения, и дело сделано. Расшифровать это сообщение можно только одним способом - получить х0 и с этим начальным значением последовательности запустить генератор ВВ8, выполняя операцию ХОК над выходом с шифртекстом. Так как генератор ВВ8 непредсказуем влево, значение х, бесполезно для криптоаналитика. Только тот, кому известны р и д, может расшифровать сообщение. Вот как на языке С выглядит программа, реализующая алгоритм получения х0 из х{: ±п! хО (±п-Ь р, ±п-Ь д, ±п-Ь п, ±пЪ Ь, д.пЪ хЪ) {
ГЛАВА 23. Специальные алгоритмы для протоколов 617 ±пЪ а, Ъ, и, V, те, г; /* мы уже знаем, что НОД (р, ф == 1 */ (■уо±с1) ех,Ьепс1ес1^еи.с1д.с1з-э.п (р, я, &а, &Ь) ; и = шо<1ехр ((р+1)/4, Ь, р-1) ; V = шо<1ехр ((я+1) /4, Ь, я-1) ; те = шодехр (хЪ%р, и, р); 2 = шос!ехр (хЪ%д, V, я) ; геЪигп (Ь*д*те + а*р*г) % п; } При наличии х0 расшифрование выполнить несложно. Просто инициализируйте генератор ВВ8 и выполните операцию ХОК над его выходом и шифртекстом. Эту схему можно сделать еще быстрее, если использовать все известные безопасные биты X/, а не только младший значащий бит. С таким улучшением вероятностное шифрование Блюма-Годлвассера оказывается быстрее К8А и не допускает утечки информации об открытом тексте. Кроме того, можно доказать, что сложность вскрытия этой схемы равна сложности разложения п на множители. С другой стороны, эта схема совершенно небезопасна к вскрытию с подобранным шифртекстом. По младшим значащим битам правильных квадратичных вычетов можно вычислить квадратный корень любого квадратичного вычета. Если это удастся, то удастся и разложение на множители. Подробности можно найти в [1570, 1571, 35, 36]. 23.16. Квантовая криптография Квантовая криптография вводит естественную неопределенность квантового мира. С ее помощью можно создавать линии связи, которые невозможно прослушать, не внося помех в передачу. Законы физики надежно защищают такой квантовый канал, даже если подслушивающий может предпринимать любые действия, даже если он имеет доступ к неограниченной вычислительной мощности, даже если Р = ОТ. Чарльз Беннетт (СЬаНез ВеппеЯ), Жиль Брассар (ОШез Вгаззагб), Клод Крепо (С1аис1е Сгереаи) и другие расширили эту идею, описав квантовое распределение ключей, квантовое бросание монеты, квантовое вручение бита, квантовую передачу с забыванием и квантовые многосторонние вычисления. Описание их результатов можно найти в [128, 129, 123, 124, 125, 133, 126, 394, 134, 392, 243, 517, 132, 130, 244, 393, 396]. Лучшим обзором по квантовой Криптографии является [131]. Другим хорошим нетехническим обзором может служить [1651]. Полную библиографию по квантовой криптографии можно найти в [237]. Эти идеи так и остались бы предметом обсуждения фанатиков криптографии, но Беннетт и Брассар разработали действующую модель [127, 121, 122]. Теперь у нас есть экспериментальная квантовая криптография. Итак, устройтесь поудобнее, налейте себе чего-нибудь выпить и расслабьтесь. Я попробую объяснить вам, что это такое.
618 Прикладная криптография В соответствии с законами квантовой механики частицы на самом деле не находятся в одном месте, а с определенной вероятностью существуют сразу во многих местах. Однако это так только до тех пор, пока не приходит ученый и не измеряет частицу, «оказавшуюся» в данном конкретном месте. Но измерить все параметры частицы (например, координаты и скорость) одновременно невозможно. Если измерить одну из этих двух величин, сам акт измерения уничтожает всякую возможность измерить другую величину. Неопределенность является фундаментальным свойством квантового мира, и никуда от этого не денешься. Эту неопределенность можно использовать для генерации секретного ключа. Путешествуя, фотоны колеблются в определенном направлении, вверх-вниз, влево- вправо, или, что более вероятно, под каким-то углом. Обычный солнечный свет не поляризован, фотоны колеблются во всех возможных направлениях. Когда направление колебаний многих фотонов совпадает, они являются поляризованными. Поляризационные фильтры пропускают только те фотоны, которые поляризованы в определенном направлении, а остальные блокируются. Например, горизонтальный поляризационный фильтр пропускает только фотоны с горизонтальной поляризацией. Повернем этот фильтр на 90 градусов, и теперь сквозь него будут проходить только вертикально поляризованные фотоны. Пусть у вас есть пучок горизонтально поляризованных фотонов. Если они попробуют пройти через горизонтальный фильтр, то у них у всех прекрасно получится. Если медленно поворачивать фильтр на 90 градусов, количество пропускаемых фотонов будет становиться все меньше и меньше, и, наконец, ни один фотон не пройдет через фильтр. Это противоречит здравому смыслу. Кажется, что даже незначительный поворот фильтра должен остановить все фотоны, так как они горизонтально поляризованы. Но в квантовой механике каждая частица с определенной вероятностью может изменить свою поляризацию и проскочить через фильтр. Если угол отклонения фильтра невелик, эта вероятность высока, а если он равен 90 градусам, то вероятность равна нулю. А если угол поворота фильтра равен 45 градусам, то вероятность, что фотон пройдет фильтр, равна 50 %. Поляризацию можно измерить в любом базисе: двух направлениях, расходящихся под прямым углом. Примерами базисов являются прямоугольный - горизонтальное и вертикальное направления. Другой пример - диагональный базис, включающий левую и правую диагонали. Если фотон поляризован в заданной системе координат, то при измерении в той же системе координат вы узнаете поляризацию. При измерении в неправильной системе координат, вы получите случайный результат. Мы собираемся использовать это свойство для генерации секретного ключа: 1) Алиса посылает Бобу последовательность фотонов. Каждый из них случайным образом поляризован в одном из четырех направлений: горизонтальном, вертикальном, лево- или право-диагональном. Например, Алиса посылает Бобу: и/—\—|—/ 2) У Боба есть детектор поляризации. Он может настроить свой детектор на измерение прямоугольной или диагональной поляризации. Одновременно мерить и ту, и другую у него не получится, ему не позволит квантовая механика. Измерение одной
ГЛАВА 23. Специальные алгоритмы для протоколов 619 поляризации не даст измерить другую. Итак, он устанавливает свои детекторы произвольным образом: Х++ХХХ+Х++ Теперь, если Боб правильно настроит свой детектор, он зарегистрирует правильную поляризацию. Если он настроит детектор на измерение прямоугольной поляризации, и фотон будет поляризован прямоугольно, он узнает, какую поляризацию фотонов выбрала Алиса. Если он настроит детектор на измерение диагональной поляризации, а фотон будет поляризован прямоугольно, то результат измерения будет случайным. Боб не сможет определить разницу. В приведенном примере он может получить следующий результат: 3) Боб сообщает Алисе по незащищенному каналу, какие настройки он использовал. 4) Алиса сообщает Бобу, какие настройки были правильными. В нашем примере детектор был правильно установлен для фотонов 2, 6, 7 и 9. 5) Алиса и Боб оставляют только правильно измеренные поляризации. В нашем примере они оставляют: * | * * * \ * * С помощью заранее приготовленного кода Алиса и Боб преобразуют в биты эти результаты измерений поляризации. Например, горизонтальная и лево-диагональная поляризация могут означать единицу, а вертикальная и право-диагональная - ноль. В нашем примере они оба получат: 00 11 Итак, Алиса и Боб получили четыре бита. С помощью этой системы они могут генерировать столько битов, сколько им нужно. В среднем Боб правильно угадывает в 50 % случаев, поэтому для генерации п битов Алисе придется послать 2п фотонов. Они могут использовать эти биты как секретный ключ симметричного алгоритма или обеспечить совершенную стойкость, получив достаточно битов для использования в качестве одноразового блокнота. Замечательным является то, что Ева не сможет подслушать. Как и Бобу, ей нужно угадать тип измеряемой поляризации, и, как и у Боба, половина ее догадок будет неправильной. Так как неправильные измерения изменяют поляризацию фотонов, то при подслушивании она неминуемо вносит ошибки в передачу. Если это так, Алиса и Боб получат различные битовые последовательности. Итак, Алиса и Боб заканчивают протокол подобными действиями: 6) Алиса и Боб сравнивают несколько битов своих строк. По наличию расхождений они узнают о подслушивании. Если строки не отличаются, то они отбрасывают использованные для сравнения биты и используют оставшиеся. Улучшения этого протокола позволяют Алисе и Бобу использовать свои биты даже в присутствии Евы [133, 134, 192]. Они могут сравнивать только четность битовых подмножеств. Тогда, если не обнаружено расхождений, им придется отбросить только один бит подмножества. Это обнаруживает подслушивание с вероятностью 50 %, но
620 Прикладная криптография если они сверят указанным образом п различных битовых подмножеств, вероятность Евы подслушать и остаться незамеченной будет равна 1 шансу из 2”. В квантовом мире не бывает пассивного подслушивания. Если Ева попытается раскрыть все биты, она обязательно разрушит канал связи. Беннетт и Брассар построили работающую модель квантового распределения ключей и обменялись секретными битами на лазерном столе. Последнее, что я слышал, было сообщение о том, что в ВгМзЬ Те1есот посылали биты по 10-километровому оптоволокну [276, 1245, 1533]. Они считают, что достижимо и расстояние в 50 километров. Это поражает воображение.
Часть 4 РЕАЛЬНЫЙ МИР
Г Л А В А 24. Примеры практических реализаций Разработка протоколов и алгоритмов весьма отличается от их реализации на основе определенной операционной системы. С теоретической точки зрения практика и теория неотличимы, но в действительности различие между ними огромно. Очень часто красиво выглядящие на бумаге идеи не пригодны для практического использования. Причины могут быть различны - скажем, в предложенном методе слишком велики требования к скорости канала, или, возможно, протокол работает слишком медленно. Некоторые из вопросов использования криптографии рассматривались в главе 10, в этой же главе обсуждаются примеры их практической реализации. 24.1. Протокол компании 1ВМ для управления секретными ключами В конце 70-х годов компания 1ВМ разработала законченную систему управления ключами для передачи данных и защиты файлов в компьютерных сетях, использующую только симметричную криптографию [515, 1027]. Нам сейчас не так важны реальные механизмы протокола, как его общая концепция: включение в него средств автома¬ тизации генерации, распределения, установки, хранения, изменения и разрушения ключей значительно усовершенствовало протокол, что позволило обеспечить безопасность лежащих в его основе криптографических алгоритмов. Данный протокол обеспечивает три возможности: безопасную связь между сервером и несколькими терминалами, безопасное хранение файлов на сервере и безопасную связь между серверами. Протокол на самом деле не обеспечивает прямого соединения терминал-терминал, хотя он может быть модифицирован для этой цели. Все серверы сети подключены к криптографической аппаратуре, выполняющей все зашифрование и расшифрование. Каждый сервер имеет Главный ключ (Маз1:ег Кеу) КМ0, и две его модификации КМХ и КМ2, которые являются упрощенными версиями ключа КМ0. Эти ключи используются как для шифрования других ключей, так и для генерации новых ключей. Для каждого терминала определен Главный ключ терминала (Ма$1ег Теггшпа1 Кеу) КМТ, используемый для обмена ключами с другими терминалами. Ключи КМТ хранятся на серверах, зашифрованные ключом КМХ. Все остальные ключи, в том числе используемые для шифрования файлов ключей (они называются КИР), хранятся в зашифрованной форме, закрытые ключом КМ2. Главный ключ КМ0 хранится в энергонезависимом модуле защиты. Сегодня это может быть ключ, зашитый в ПЗУ, либо магнитная карточка, либо ключ может вводиться пользователем с клавиатуры (скажем, в виде текстовой строки, преобразуемой в ключ). Ключи КМ\ и КМ2 не хранятся где-нибудь в системе, и в случае необходимости вычисляются по ключу КМ0. Сеансовые ключи, используемые для связи между серверами, генерируются на сервере с помощью псевдослучайного процесса. Подобным образом генерируются ключи для шифрования хранимых файлов (КАТ7).
ГЛАВА 24. Примеры практических реализаций 623 Ядром протокола служит устойчивый к вскрытию модуль, называемый крипто¬ графическим оборудованием (}асИНу). Именно в этом модуле происходит все зашифрование и расшифрование, как на сервере, так и на терминалах. В этом модуле хранятся самые важные ключи, которые используются для генерации фактически применяемых ключей шифрования. После того, как эти ключи будут записаны, их считывание становится невозможным. Кроме того, они помечаются для конкретного использования: ключ, предназначенный для решения одной задачи, не может быть случайно использован для решения другой. Эта концепция, использующая понятие векторов управления ключами, возможно, является самым значительным достиже¬ нием описываемой системы. Дональд Дэвис (ОопаМ Оау1ез) и Вильям Прайс ОУПНат Рпсе) подробно рассматривают этот протокол управления ключами в работе [435]. Модификация схемы Модификацию данной схемы применения главного и сеансовых ключей можно найти в работе [1478]. Описываемая в ней система построена на базе сетевых узлов с аппаратурой заверения (по1ап2аИоп) ключей, обслуживающей локальные терминалы. Эта модификация была разработана с целью: ✓ Защиты дуплексного канала между двумя пользовательскими терминалами. ✓ Защиты связи по зашифрованной почте. ✓ Обеспечения защиты личных файлов. ✓ Поддержки средств цифровой подписи. Для связи и передачи файлов между пользователями в этой схеме используются ключи, генерированные в аппаратуре заверения ключей, отправляемые пользователям после шифрования с помощью главного ключа. Информация о личности пользователя встраивается в ключ, представляя доказательство того, что сеансовый ключ используется конкретной парой пользователей. Возможность заверения ключей является главной в этой системе. Хотя в системе не используется криптография с открытым ключом, она поддерживает возможность, похожую на цифровую подпись: ключ может быть прислан только из конкретного источника и прочитан только в конкретном месте назначения. 24.2. Система М1ТКЕМЕТ Одной из самых ранних реализаций средств криптографии с открытым ключом была экспериментальная система МЕМО (М1ТЯЕ Епсгур1ес1 МаП ОШсе - шифрованное почтовое отделение). М1ТЯЕ - это название группы квалифицированных специалистов, работающих по заказу Министерства обороны. Система МЕМО обеспечивала безопасность электронной почты для пользователей сети М1ТЯЕКЕТ, применяя криптографию с открытым ключом для обмена ключами и ОЕ8 для шифрования файлов. В системе МЕМО все открытые ключи хранятся в Центре распределения открытых ключей (РиЬНс Кеу 0151;пЪи1;юп Сеп1ег), представляющем собой отдельный узел сети. Ключи хранятся в стираемом перепрограммируемом ПЗУ, что защищает ключи от попыток их изменения. Закрытые ключи генерируются пользователями или системой.
624 Прикладная криптография Для обеспечения отправки пользователем безопасных сообщений система вначале устанавливает защищенное соединение с Центром распределения открытых ключей. Далее пользователь запрашивает в Центре файл всех открытых ключей. Если пользователь проходит аутентификацию, использующую его закрытый ключ, Центр пересылает запрошенный список на рабочую станцию пользователя. Для поддержки целостности список шифруется с помощью ЭЕ8. Для шифрования сообщений используется ЭЕ8. При шифровании файлов система генерирует случайный ключ ЭЕ8, пользователь шифрует файл ключом ЭЕ8, а ключ ЭЕ8 шифрует открытым ключом получателя. Зашифрованный файл и ключ отправляются получателю. Система МЕМО не предусматривает защиты от потерь ключей. В ней имеются определенные средства для проверки целостности сообщений, использующие контроль¬ ные суммы. В систему не встроены средства аутентификации. Прежде, чем система была реализована, была доказана нестойкость конкретной реализации системы с открытым ключом - обмена ключами по схеме Диффи-Хеллмана над СР{2127) (см. раздел 11.6), хотя нетрудно изменить систему, чтобы можно было использовать большие числа. Система МЕМО была изобретена, в основном, для экспериментальных целей и никогда не использовалась в реальной сети М1ТЯЕЫЕТ. 24.3. Телефон 15РЫ Компания ВеН-Ког&егп ЯезеагсЬ разработала прототип безопасного телефонного терминала 18ЭИ (1п1е§га1ес1 8етсез Э1§й:а1 Ые1дуогк - цифровая сеть интегрированных услуг) [499, 1192, 493, 500]. Как и телефонный аппарат, терминал остался на уровне первоначального прототипа. Результирующим продуктом был оверлей безопасности пакетов данных (Раске! Оа1а 8есип{у ОуеНау). В терминале используется схема обмена ключами Диффи-Хеллмана, цифровые подписи Я8А, а также ЭЕ8 для шифрования данных. Терминал может передавать и принимать речь и данные со скоростью 64 Кбит/с. Ключи В телефон встроена предназначенная для длительного использования пара «открытый ключ/закрытый ключ». Закрытый ключ хранится в устойчивом ко вскрытию модуле телефона. Открытый ключ применяется для идентификации телефона. Эти ключи составляют часть самого телефонного аппарата и не могут быть изменены. Вдобавок, в телефоне хранятся еще два открытых ключа. Одним из них является открытый ключ владельца аппарата. Этот ключ используется для проверки подлинности команд владельца; ключ может быть изменен по команде, подписанной владельцем. Таким образом, пользователь может передать кому-то другому право владения телефонным аппаратом. В телефоне также хранится открытый ключ сети. Этот ключ используется для проверки подлинности команд, поступающих от оборудования управления ключами сети, и вызовов, поступающих от других пользователей сети. Данный ключ также можно
ГЛАВА 24. Примеры практических реализаций 625 изменить командой, подписанной владельцем. Это дает владельцу возможность менять сеть, к которой подключен его аппарат. Эти ключи предназначены для длительного пользования, они меняются редко, если вообще меняются. Также для краткосрочного использования в телефоне хранится пара «открытый ключ/закрытый ключ». Эти ключи встроены в сертификат, подписанный оборудованием управления ключами. При установлении соединения два телефона обмениваются сертификатами. Подлинность этих сертификатов удостоверяется открытым ключом сети. Обмен сертификатами и их проверка выполняются только при установлении засекреченного соединения между аппаратами. Для установления засекреченного соединения между людьми в протоколе имеется дополнительный компонент. В аппаратном ключе зажигания, который вставляется в телефон владельцем, хранится закрытый ключ владельца, зашифрованный секретным паролем, известным только владельцу (его не знает ни телефонный аппарат, ни центр управления сетью, ни еще кто- нибудь). Ключ зажигания также содержит сертификат, подписанный оборудованием управления ключами сети. В сертификат включены открытый ключ владельца и некоторая идентификационная информация (имя, компания, специальность, степень допуска, любимые сорта пиццы, сексуальная ориентация и прочее). Все эти данные также зашифрованы. Для расшифрования этой информации и ввода ее в телефон пользователь должен ввести с клавиатуры аппарата свой секретный пароль. Телефонный аппарат использует эту информацию для соединения, но после того, как пользователь извлечет свой ключ зажигания, она удаляется. В телефоне также хранится набор сертификатов, выданных оборудованием управления ключами сети. Эти сертификаты удостоверяют право отдельных лиц пользоваться конкретными телефонными аппаратами. Телефонный звонок Алиса звонит Бобу по телефону следующим образом. 1) Алиса вставляет в свой телефон ключ зажигания и вводит свой пароль. 2) Телефон опрашивает ключ зажигания Алисы, чтобы определить ее личность, и выдает ей «гудок». 3) Телефон проверяет свой набор сертификатов, удостоверяясь, что Алиса имеет право использовать данный аппарат. 4) Алиса набирает номер; телефон заказывает разговор. 5) Два телефона, используя протокол обмена ключами на базе криптографии с открытым ключом, генерируют уникальный и случайный сеансовый ключ. Все последующие обмены информацией на этапах протокола шифруются с помощью этого ключа. 6) Телефон Алисы передает свой сертификат и аутентифицирующую пользователя информацию. 7) Телефон Боба, используя открытый ключ сети, проверяет подписи сертификата и аутентифицирующей информации.
626 Прикладная криптография 8) Телефон Боба выполняет последовательность запросов/ответов. Для этого необходимо в реальном масштабе времени откликаться подписанными ответами на запросы, поступающие в определенной временной последовательности. (Это помешает злоумышленнику использовать сертификаты, скопированные из предыдущего обмена). Один ответ должен быть подписан закрытым ключом телефона Алисы, а другой - закрытым ключом Алисы. 9) Если Боб не у телефона, то его телефон звонит. 10) Если Боб дома, он вставляет в телефон свой ключ зажигания. Его телефон опрашивает ключ зажигания и проверяет сертификат Боба, подобно этапам 2 и 3. 11) Боб передает свой сертификат и аутентифицирующую информацию. 12) Телефон Алисы проверяет подписи Боба, подобно этапу 7, и инициирует последовательность запросов/ответов, подобно этапу 8. 13) Оба телефона отображают личность и номер телефона другого пользователя. 14) Начинается засекреченный разговор. 15) После того, как одна из сторон вешает трубку, удаляются сеансовый ключ, а также сертификаты, которые телефон Боба получил от телефона Алисы, и сертификаты, которые телефон Алисы получил от телефона Боба. Каждый ключ ОЕ8 уникален для каждого звонка. Он существует только внутри двух телефонных аппаратов и только в течение разговора по телефону, а после его окончания немедленно уничтожается. Если злоумышленник добудет один или оба участвовавших в разговоре телефонных аппарата, он не сможет расшифровать ни один предшествующий разговор, в котором участвовали эти два аппарата. 24.4. Телефон 5ТЫ-1П Аббревиатура 8Т11 означает 8есиге Те1ерЬопе Шй - безопасный телефонный модуль, представляющий собой разработанный в агентстве АНБ безопасный телефон. По размерам и форме этот модуль подобен обычному телефону и может быть использован в качестве обычного телефона. Телефонные аппараты устойчивы к взлому, без ключа они работают как несекретные. Они также включают порт передачи данных и помимо передачи речи могут быть использованы для безопасной передачи данных по модемному каналу [1133]. Уитфилд Диффи в работе [494] описал модуль БТО-Ш следующим образом: Чтобы позвонить с помощью 8ТШН, вызывающий абонент вначале обычным образом звонит на другой 8ТШИ, затем вставляет похожее на ключ устройство, содержащее криптографические переменные, и нажимает кнопку «секретные переговоры» (до зесиге). После примерно 15 секунд задержки, нужной для криптографической настройки, каждый телефон выводит на экран информацию о личности и степени допуска другой стороны, и разговор может начинаться. В эксклюзивном интервью, данном Нью-Йорк Таймс [282] Уолтером Дили (\Л/аНег Оее!еу), заместителем директора АНБ по безопасности коммуникаций, содер¬ жится беспрецедентное заявление о 577Л/// или будущей системе безопасной голосовой связи. Основной целью новой системы было обеспечение Министерства
ГЛАВА 24. Примеры практических реализаций 627 обороны США и его подрядчиков средствами безопасной передачи речи и безопасной низкоскоростной передачи данных. В интервью не было много сказано о работе системы, но информация постепенно стала выходить наружу. В новой системе используются открытые ключи. О новой концепции распределения ключей было рассказано в [68], а одна из статей сообщала о телефонах, «перепрограммируемых раз в год по засекреченному телефонному каналу». Весьма возможно, что это средство предполагает использование протокола проверки сертификатов, аналогичного описанному [в разделе 24.3]. Этот протокол должен минимизировать общение телефонов с центром управления ключами. Последние новости были более информативными, в них рассказывалось о системе управления ключами, названной Е/ЕЕЕ/_У, которая, как сообщалось в [1341], была «разработана на базе технологии открытых ключей и используется для распределения ключей шифрования трафика между двумя точками». И это описание, и свидетельские показания, данные Ли Ньювиртом (1ее ЫеитШ) из СуИпк Конгрессу США [1164] предполагают использование комбинации обмена ключами и сертификатами, аналогичной используемой в безопасных телефонах /ЗОЛ/. Весьма вероятно, что система Р/РЕР/.У также основана на возведении в степень. Устройства 8Т11-Ш производятся компаниями АТ&Т и СЕ. За 1994 год было выпущено около 300000-400000 телефонов. Новая версия, 8есиге Тептппа1 Ецшртеп! (8ТЕ, Безопасный терминал), предназначена для работы по линиям 180Ы. 24.5. Протокол КЕКВЕКОЗ КегЬегоз представляет собой протокол проверки подлинности с доверенной третьей стороной, разработанный для сетей ТСР/1Р. Установленная в сети служба КегЬегоз действует как доверенный посредник, обеспечивая надежную сетевую аутентификацию. Это предоставляет пользователям возможность работать на нескольких машинах сети. КегЬегоз создан на базе симметричной криптографии (в нем реализован алгоритм ЭЕ8, но вместо него можно использовать и другие алгоритмы). При общении с каждым субъектом сети КегЬегоз использует различный общий секретный ключ, и знание этого секретного ключа равносильно доказательству идентичности субъекта. Протокол КегЬегоз был первоначально разработан в МТИ для проекта АШепа. Конструкция КегЬегоз основана на протоколе Нидхема-Шредера с доверенной третьей стороной (см. раздел 3.3) [1159]. Исходная версия КегЬегоз, называемая Версия 4, определена в [1094, 1499]. (Версии с 1 по 3 представляют собой рабочие версии протокола, предназначенные для внутреннего использования). Версия 5, модификация версии 4, описана в [876, 877, 878]. Лучшим обзором по протоколу КегЬегоз является работа [1163]. Другие обзоры содержатся в статьях [1384, 1493], практическое применение КегЬегоз хорошо описано в [781, 782]. Модель, применяемая в КегЬегоз Базовый протокол КегЬегоз был схематично описан в разделе 3.3. В модель КегЬегоз включены расположенные в сети объекты - клиенты и серверы. Клиентами могут быть и пользователи, и независимые программы, выполняющие такие, например, действия: загрузка файлов, передача сообщений, доступ к базам данных, доступ к принтерам, получение административных привилегий и т. д.
628 Прикладная криптография КегЬегоз поддерживает базу данных клиентов и их секретных ключей. Для пользователей-людей секретный ключ является зашифрованным паролем. Сетевые службы, требующие аутентификации, и клиенты этих служб регистрируют в КегЬегоз свои секретные ключи. Так как КегЬегоз знает все секретные ключи, он может создавать сообщения, убеждающие один объект в подлинности другого. КегЬегоз также создает сеансовые ключи, которые выдаются клиенту и серверу (или двум клиентам) и никому больше. Сеансовый ключ используется для шифрования сообщений, которыми обмениваются две стороны, и уничтожается после окончания сеанса. Для шифрования в протоколе КегЬегоз используется алгоритм ОЕ8. Протокол КегЬегоз версии 4 обеспечивал нестандартный режим аутентификации. Этот режим был слабым - он не мог выявлять определенные изменения в шифртексте (см. раздел 9.10). КегЬегоз версии 5 использует режим СВС. Функционирование КегЬегов В этом разделе рассматривается КегЬегоз версии 5. Далее будут описаны различия между версиями 4 и 5. Протокол КегЬегоз функционально прост (см. Рис. 24.1). Клиент запрашивает у КегЬегоз мандат (Иске1) на обращение к Службе выделения мандатов (ТюкеНЗгапИпз 8епчсе, Т08). Этот мандат посылается клиенту в зашифрованном секретным ключом клиента виде. Для подсоединения к конкретному серверу клиент запрашивает у Т08 мандат на обращение к серверу. Если все в порядке, Т08 отсылает мандат клиенту. Далее клиент предъявляет серверу этот мандат вместе с аутентифи¬ катором. И, опять-таки, если удостоверение клиента правильно, сервер предоставляет клиенту доступ к службе. ( ТОЗ ] 1. Запрос мандата на выделение мандата 2. Мандат на выделение мандата I КегЬегоз) | 3. Запрос мандата сервера 4. Мандат сервера 2 ' 5. Запрос услуги ( Клиент Ь * сл —►^Серв^ Рис. 24.1. Этапы проверки подлинности КегЬегоз Таблица 24.1. Таблица сокращений КегЬегоз с = клиент 3 = сервер а = сетевой адрес клиента V = начало и окончание времени действия мандата
ГЛАВА 24. Примеры практических реализаций 629 1 = метка времени кх = секретный ключ х Кх.у = сеансовый ключ для хиу {т}Кх = т, зашифрованное секретным ключом х Тх,у = мандат х на использование А*.у = аутентификатор х для у Удостоверения КегЬегоз использует два типа удостоверений (сгейепйаЪ)'. мандаты и аутентифи¬ каторы (аи1кепИса1ог$). (В дальнейшем в этом разделе будет использоваться терминология, используемая в документах КегЬегоз - см. табл. 24.1). Мандат исполь¬ зуется для безопасной передачи серверу информации о личности клиента, которому выдан этот мандат. В нем также содержатся данные, которые сервер может использовать для подтверждения, что использующий мандат клиент - именно тот, кому мандат был выдан. Аутентификатор - это дополнительное удостоверение, предъявляемое вместе с мандатом. Мандат КегЬегоз имеет следующую форму: Тс, $ {с, и, V, Кс> К, Использование мандата оптимально для одного сервера и одного клиента. Мандат содержит имя клиента, его сетевой адрес, имя сервера, метку времени и сеансовый ключ. Эта информация шифруется секретным ключом сервера. Если клиент получил мандат, он может использовать его для доступа к серверу много раз - пока не истечет срок действия мандата. Клиент не сможет расшифровать мандат (он не знает секретного ключа сервера), но он может предъявить его серверу в зашифрованной форме. Прочитать или изменить мандат при передаче его по сети невозможно. Аутентификатор КегЬегоз имеет следующую форму: Лс> * = {с, I, ключ} Кс> 5 Клиент создает аутентификатор каждый раз, когда ему нужно воспользоваться службами сервера. Аутентификатор содержит имя клиента, метку времени и необязательный дополнительный сеансовый ключ; все эти данные шифруются сеансовым ключом, общим для клиента и сервера. В отличие от мандата, аутентификатор используется только один раз. Однако это не проблема, так как клиент может генерировать аутентификаторы по мере надобности (ему известен общий секретный ключ). Использование аутентификатора преследует две цели. Во-первых, оно содержит некоторый открытый текст, зашифрованный сеансовым ключом. Это доказывает, что клиенту известен ключ. Не менее важно то обстоятельство, что «запечатанный» открытый текст включает метку времени. Злоумышленник, которому удалось записать и мандат, и аутентификатор, не сможет использовать их спустя два дня.
630 Прикладная криптография Сообщения КегЬегоз версии 5 В КегЬегоз версии 5 используются сообщения пяти типов (см. Рис. 24.1): 1. Клиент-КегЬегоз: с, 1§з 2. КегЬегоз-клиенту: {Кс> 188} Кс> {Тс> 1е$} К188 3. Клиент-Т08: {АС) 8} Кс> ^ {Тс> 188} К*88 4. Т08-клиенту: {Кс, 8} Кс> ^ {Тс> 8} К8 5. Клиент-серверу: {Ас> 8} Кс, 8> {Тс> 8} К8 Рассмотрим подробнее использование этих сообщений. Получение первоначального мандата У клиента есть часть информации, идентифицирующая его личность: его пароль. Понятно, что не хочется вынуждать клиента передавать пароль по сети. Протокол КегЬегоз минимизирует вероятность компрометации пароля, но при этом не позволяет пользователю правильно аутентифицировать себя, если он не знает пароля. Клиент отсылает сообщение с его именем и именем его сервера Т08 на сервер аутентификации КегЬегоз. (Серверов Т08 может быть несколько). На практике пользователь, скорее всего, просто вводит свое имя, и программа входа в систему посылает запрос. Сервер аутентификации КегЬегоз производит поиск данных о клиенте в своей базе данных. Если информация о клиенте в базе данных найдена, КегЬегоз генерирует сеансовый ключ, используемый далее для обмена данными между клиентом и сервером Т08. Это называется мандатом на выделение мандата (Ткке! Сгап1т§ Т1ске1, ТСТ). КегЬегоз шифрует секретным ключом клиента этот сеансовый ключ. Затем он создает для клиента мандат ТОТ, доказывающий подлинность клиента Т08, и шифрует его секретным ключом Т08. Далее сервер аутентификации посылает клиенту эти два зашифрованных сообщения. Теперь клиент расшифровывает первое сообщение и получает сеансовый ключ. Секретный ключ является однонаправленной хэш-функцией клиентского пароля, поэтому у законного пользователя не будет никаких проблем. Самозванец не знает правильного пароля и, следовательно, не может расшифровать ответ сервера проверки подлинности. Доступ запрещается, и самозванный клиент не может получить мандат или сеансовый ключ. Клиент сохраняет мандат ТОТ и сеансовый ключ, удаляя пароль и хэш-значение. Эта информация уничтожается для уменьшения вероятности компрометации. Если злоумышленник попытается скопировать память клиента, он получит только мандат ТОТ и сеансовый ключ. Эти данные важны, но только на время жизни мандата ТОТ. Когда срок действия ТОТ истечет, эти сведения станут бессмысленными. Теперь в течение времени жизни ТОТ клиент может доказывать серверу Т08 свою подлинность.
ГЛАВА 24. Примеры практических реализаций 631 Получение мандатов сервера Клиенту требуется получить отдельный мандат для каждой нужной ему службы. Сервер Т08 выделяет мандаты для отдельных серверов. Когда клиенту нужен мандат, которого у него пока нет, он посылает запрос к Т<38. (На практике программа, скорее всего, делает это автоматически и незаметно для пользователя). Сервер Т08, получив запрос, расшифровывает мандат ТОТ своим секретным ключом. Затем служба ТС8 использует включенный в ТОТ сеансовый ключ, чтобы расшифровать аутентификатор. Наконец Т08 сравнивает информацию аутентификатора с информа¬ цией мандата, сетевой адрес клиента с адресом отправителя запроса и метку времени с текущим временем. Если все совпадает, служба Т08 разрешает выполнение запроса. Проверка меток времени предполагает, что часы всех компьютеров синхронизированы, по крайней мере, с точностью до нескольких минут. Если время, указанное в запросе, отстоит от текущего момента слишком далеко в прошлое или в будущее, служба Т08 считает запрос попыткой повторения предыдущего запроса. Служба Т08 должна также отслеживать все «живые» аутентификаторы, так как повторные запросы могут иметь метки времени, которые еще действительны. Другой запрос с тем же мандатом и меткой времени будет отвергнут. В ответ на правильный запрос сервер Т08 возвращает правильный мандат, который клиент может предъявить серверу. Т08 также создает новый сеансовый ключ для клиента и сервера, зашифрованный сеансовым ключом, общим для клиента и Т08. Оба этих сообщения отправляются клиенту. Клиент расшифровывает сообщение и извлекает сеансовый ключ. Запрос службы Теперь клиент может доказать свою подлинность серверу. Он создает сообщение, очень похожее на то, которое посылалось серверу Т08 (и это понятно, так как Т08 является службой). Клиент создает аутентификатор, состоящий из его имени, сетевого адреса и метки времени, зашифрованных сеансовым ключом, который был генерирован службой Т08 для сеанса клиента и сервера. Запрос состоит из мандата, полученного от КегЬегоз (уже зашифрованного секретным ключом сервера), и зашифрованного аутентификатора. Сервер расшифровывает и проверяет мандат и аутентификатор, как уже ранее обсуждалось, а также проверяет адрес клиента и метку времени. Если все в порядке, то сервер уверен, что, согласно КегЬегоз, клиент - именно тот, за кого он себя выдает. Если приложение требует взаимной проверки подлинности, сервер посылает клиенту сообщение, состоящее из метки времени, зашифрованной сеансовым ключом. Это доказывает, что серверу известен правильный секретный ключ, и он может расшифровать мандат и аутентификатор. При необходимости клиент и сервер могут шифровать дальнейшие сообщения общим ключом. Так как этот ключ известен только им, они оба могут быть уверены, что недавнее сообщение, зашифрованное этим ключом, отправлено другой стороной.
632 Прикладная криптография КегЬегоз версии 4 В предыдущих разделах рассматривался КегЬегоз версии 5. Версия 4 немного отличается сообщениями и конструкцией мандатов и аутентификаторов. В КегЬегоз версии 4 используются следующие пять сообщений: 1. Клиент-КегЬегоз: с, 1§з 2. КегЬегоз-клиенту: {Кс,188, {ТМ88} К188} Кс 3. Клиент-ТС8: {Ас> 8} Кс> 188, {Тс, 188} К188, з 4. ТС8 -клиенту: {Кс> 8, {Тс, 8} К8} Кс> ^ 5. Клиент-серверу: {Ас> 8} Кс> 8, {Тс> 8} К8 Тс, х ~ ^ КС) л} Кх АС, 0 КСш 8 Как видим, сообщения 1, 3 и 5 не изменились. Двойное шифрование мандата на этапах 2 и 4 в версии 5 было устранено. Мандаты версии 5 дополнительно включают возможность использовать несколько адресов, а поле «время жизни» / заменено временем начала и окончания. В аутентификатор версии 5 добавлена возможность включения дополнительного ключа. Стойкость КегЬегоз Стив Белловин (81еуе ВеИоут) и Майкл Мерритт (МюЬае! МегпЦ) проанализировали некоторые потенциально уязвимые места КегЬегоз [108]. Хотя эта работа исследует протоколы версии 4, многие ее замечания применимы и к версии 5. Допускается кэширование и повторная передача старых аутентификаторов. Хотя метки времени должны предотвратить такую возможность, повторную передачу можно осуществить в течение времени жизни мандата. Предполагается, что серверы хранят все правильные мандаты, чтобы предотвратить повторы, но это не всегда возможно. Кроме того, время жизни бывает достаточно большим, часто до восьми часов. Использование аутентификаторов основано на предположении, что все часы сети более или менее синхронизированы. Если время компьютера будет установлено неправильно, то старый аутентификатор может быть использован без проблем. Большинство сетевых времязависимых протоколов небезопасны, поэтому такая возможность представляет собой серьезную проблему. КегЬегоз также уязвим для атак с угадыванием пароля. Злоумышленник может записать мандаты и затем попытаться их расшифровать. Не забудьте, что обычный пользователь редко выбирает хороший пароль. Если Мэллори добудет достаточно мандатов, у него появятся неплохие шансы вскрыть пароль. Возможно, самой опасной является атака, использующая «троянское» программное обеспечение. Протоколы КегЬегоз подразумевают, что программному обеспечению можно доверять. Нет способа запретить Мэллори тайно заменить все клиентское программное обеспечение КегЬегоз такой версией, которая, помимо выполнения протоколов КегЬегоз, будет записывать пароли. Это является общей проблемой для
ГЛАВА 24. Примеры практических реализаций 633 любого криптографического программного пакета, работающего на незащищенном компьютере. Однако широко распространенное использование КегЬегоз в подобных средах делает его особенно привлекательной мишенью. Ведутся работы над улучшением КегЬегоз, включая модернизацию управления ключами с помощью криптографии с открытым ключом и интерфейса на основе смарт-карт для управления ключами. Лицензии КегЬегоз не является общедоступным протоколом, но код М1Т доступен свободно. Практи¬ ческое внедрение его в рабочую среду ИЫ1Х - это совсем другая история. Ряд компаний продает версии КегЬегоз, но можно получить хорошую версию бесплатно от Су§пиз БирроП, 814 ЦшуегзНу Ауе., Ра1е АНо, СА, 94301; (415) 322-3811; Гах: (415) 322-3270. 24.6. Система Кгур*оКш§М Кгур1оКш§Ь1 (КриптоРыцарь) является системой проверки подлинности и распределения ключей, разработанной в компании 1ВМ. В ней используется протокол с секретным ключом, использующий либо алгоритм ОЕБ в режиме СВС (см. раздел 9.3), либо модифицированную версию МЭ5 (см. раздел 18.5). Кгур1оКт§Ь1 поддерживает четыре службы защиты: ✓ Проверка подлинности пользователя (называемая «однократной регистрацией» (зш§1е 51§п-оп)). ✓ Двусторонняя проверка подлинности. ✓ Распределение ключей. ✓ Проверка подлинности содержания и происхождения данных. С точки зрения пользователя, протокол Кгур1оКт§М подобен протоколу КегЬегоз. Вот некоторые отличия: ✓ Для проверки подлинности и шифрования мандатов Кгур1оКш§М использует хэш- функцию. ✓ Система Кгур1оКт§Ы: не использует синхронизированных часов, для запросов используются случайные числа (см. раздел 3.3). ✓ Если Алисе нужно связаться с Бобом, одна из опций Кгур1оКт§Ы: позволяет Алисе послать сообщение Бобу, а затем позволяет Бобу начать протокол обмена ключами. Протокол Кгур1оКш§Ь1, как и КегЬегоз, использует мандаты и аутентификаторы. Он содержит и службы ТОБ, но в Кгур1оКт§М они называются серверами проверки подлинности. Разработчики Кгур1оКш§Ь1: потратили немало усилий для минимизации количества сообщений, их размера и объема шифрования. О протоколе Кгур1оКт§Ы; более подробно можно узнать в [1110, 173, 174, 175].
634 Прикладная криптография 24.7. Система 5Е5АМЕ Аббревиатура 8Е8АМЕ означает «Зесиге Еигореап 8у§1еш Гог АррНсабопз т а МиШуепбог Епуцоптеп!» - Безопасная европейская система для приложений в средах различных производителей. Это проект Европейского сообщества, на 50% финанси¬ руемый ЯАСЕ (см. раздел 25.7). Главной целью проекта является разработка технологии для проверки подлинности пользователя при распределенном управлении доступом. Эту систему можно рассматривать как европейский вариант КегЬегоз. Проект состоит из двух частей: на первой стадии разрабатывается базовая архитектура, а вторая стадия представляет собой ряд коммерческих проектов. Следующие три компании принимают наибольшее участие в разработке системы - 1СЬ в Великобритании, 81етепз в Германии и Ви11 во Франции. 8Е8АМЕ представляет собой систему проверки подлинности и обмена ключами [361, 1248, 797, 1043]. Она использует протокол Нидхема-Шредера, в котором для связи между доменами с различной безопасностью применяется криптография с открытым ключом. В системе есть ряд серьезных изъянов. Вместо использования настоящего алгоритма шифрования в этой системе применяется ХОК с 64-битовым ключом. Что еще хуже, в 8ЕЗАМЕ используется операция ХОК в режиме СВС, который оставляет незашифрованным половину открытого текста. В защиту разработчиков надо сказать, что они собирались использовать алгоритм БЕ8, но французское правительство выразило по этому поводу неудовольствие; оно утвердило код с алгоритмом ЭЕ8, но затем отказалось от него. Эта система меня не впечатлила. Аутентификация в 8Е8АМЕ выполняется по первому блоку сообщения, а не по всему сообщению. В результате этого, например, аутентификация сообщения будет проведена по словам «Уважаемый господин» в его начале, а не по всему содержимому сообщения. Генерация ключей состоит из двух вызовов функции гапа. операционной системы 1Ж1Х, которая генерирует совсем не случайные числа. В качестве однонаправленных хэш- функций 8Е8АМЕ использует сгс32 и МЭ5. И конечно, система 8Е8АМЕ, подобно КегЬегоз, чувствительна к угадыванию паролей. 24.8. Обшая криптографическая архитектура 1ВМ Общая криптографическая архитектура (Соттоп Сгур1о§гарЫс АгсЬйесШге, ССА) была разработана компанией 1ВМ, чтобы обеспечить криптографические примитивы для конфиденциальности, целостности, управления ключами и обработки персонального идентификационного кода (РП4) [751, 784, 1025, 1026, 940, 752]. Управление ключами происходит с помощью векторов управления (Соп1го1 Уес1ог, СУ) (см. раздел 8.5). Каждому ключу соответствует СУ, с которым ключ объединен операцией ХОЯ. Ключ и СУ разделяются только в безопасном аппаратном модуле. СУ представляет собой структуру данных, обеспечивающую интуитивное понимание привилегий, связанных с конкретным ключом. Отдельные биты СУ имеют определенное значение при использовании и обработке каждого ключа, управляемого с помощью ССА. СУ передаются вместе с зашифрован¬ ным ключом в структурах данных, называемых ключевыми маркерами. Внутренние ключевые маркеры используются локально и содержат ключи, зашифрованные локальным главным ключом (Маз1ег Кеу, МК). Внешние ключевые маркеры использу¬
ГЛАВА 24. Примеры практических реализаций 635 ются для импортирования и экспортирования зашифрованных ключей между системами. Ключи во внешних ключевых маркерах зашифрованы ключами шифрования ключей (Кеу-Епсгур1т& Кеу, КЕК). Управление КЕК осуществляется с помощью внутренних ключевых маркеров. Ключи разделяются на группы в соответствии с их использованием. Длина ключа также задается при помощи битов СУ. Ключи одинарной длины - 56-битовые - используются для таких функций, как обеспечение конфиденциальности и сообщений. Ключи двойной длины - 112-битовые применяются для управления ключами, операций с РШ-кодами и других специальных целей. Ключи могут быть ООиВЬЕ-СЖЬУ (только двойные), правые и левые половины которых должны быть различны, ВОЫВЬЕ (двойные) половины которых могут случайно совпасть, ЗГЫОЬЕ- КЕРЫСАТЕО (одинарные-повторенные), в которых правые и левые половины равны, или ЗШОЬЕ (одинарные), содержащие только 56 битов. ССА определяет аппаратную реализацию определенных типов ключей, используемых для некоторых операций. СУ проверяется в безопасном аппаратном модуле: для каждой функции ССА вектор должен соответствовать определенным правилам. Если СУ успешно проходит проверку, то при помощи операции ХОЯ над КЕК и СУ или над МК и СУ получается модификация КЕК или МК, и извлеченный ключ для расшифрования открытого текста сообщения используется только для внутреннего использования для функционирования ССА. При генерации новых ключей СУ задает способ использования созданного ключа. Комбинации типов ключей, которые могут быть использованы для вскрытия системы, не создаются в ССА-совместимых системах и не импортируются в них. Для распределения ключей в архитектуре ССА применяется комбинация криптографии с открытым ключом и криптографии с секретным ключом. Центр КБС шифрует сеансовый ключ для пользователя секретным главным ключом, разделяемым с этим пользователем. Распределение главных ключей происходит с помощью криптографии с открытым ключом. Разработчики системы выбрали такой гибридный подход по двум причинам. Первая из них связана с эффективностью. Криптография с открытым ключом требует больших вычислительных ресурсов, если сеансовые ключи распределяются с помощью крипто¬ графии с открытым ключом, так что вычислительная система может зависнуть. Второй причиной является необходимость обеспечения обратной совместимости, система должна позволять установку с минимальными последствиями поверх существующих схем с секретными ключами. ССА-системы проектировались так, чтобы они могли взаимодействовать с различными другими системами. Для систем, несовместимых с ССА, функция трансляции вектора управления (Соп1го1 Уес1ог Тгап§1а1е, СУХЬТ) позволяет обмен ключами между различными реализациями. Инициализация функции СУХЬТ требует управления с обеих сторон. Каждая из них должна независимо установить нужные таблицы трансляции. Такой двойной контроль обеспечивает высокую степень надежности, связанную с целостностью и происхождением ключей, импортируемых в систему. Тип ключа ЭАТА поддерживается для совместимости с другими системами. Ключ типа БАТА хранится вместе с соответствующим СУ, указывающим, что это ключ типа ОАТА. Ключи типа ВАТА могут использоваться достаточно широко, и поэтому к ним нужно относиться с подозрением и использовать их с осторожностью. Ключи типа БАТА нельзя использовать ни в каких функциях управления ключами.
636 Прикладная криптография Аппаратура закрытия коммерческих данных (Соттепла! Оа1а Ма$кт§ РасПку, СОМР) представляет собой экспортную версию ССА. Ее особенностью является уменьшение эффективной длины ключей ЭЕ8 до разрешенных к экспорту 40 битов (см. раздел 15.5) [785]. 24.9. Схема проверки подлинности 150 В схеме проверки подлинности 180 (АиШепйсабоп Ргатехуогк), также известной как протоколы Х.509, рекомендуется применение криптографии с открытым ключом [304]. Эта схема обеспечивает проверку подлинности по сети. Хотя конкретный алгоритм не определен ни для обеспечения безопасности, ни для проверки подлинности, спецификация рекомендует использовать К8А. Однако возможно использование нескольких алгоритмов и хэш-функций. Первоначальный вариант Х.509 был опубликован в 1988 г. После открытого изучения и комментирования он был пересмотрен в 1993 году, чтобы исправить некоторые изъяны в безопасности [1100, 750]. Сертификаты Наиболее важной частью протокола Х.509 является используемая им структура сертификатов открытых ключей. Имена всех пользователей различны. Доверенный Орган сертификации (СеглПсаПоп Аийюгку, СА) присваивает каждому пользователю уникальное имя и выдает подписанный сертификат, содержащий имя и открытый ключ пользователя. Структура сертификата Х.509 показана на Рис. 24.2 [304]. Версия Последовательный номер Идентификатор алгоритма: -Алгоритм - Параметры Выдавшая организация Время действия: - Начало действия -Конец действия Субъект Открытый ключ субъекта: -Алгоритм - Параметры - Открытый ключ Подпись Рис. 24.2.СертифтатХ.509
ГЛАВА 24. Примеры практических реализаций 637 Поле версии определяет формат сертификата. Серийный номер уникален для конкретного сертификата СА. Следующее поле определяет алгоритм, использованный для подписи сертификата, вместе со всеми необходимыми параметрами. Выдавшей организацией является имя конкретного СА. Срок действия представляет собой пару дат, сертификат действителен в промежутке между этими двумя датами. Субъект - это имя пользователя. Информация об открытом ключе включает название алгоритма, все необходимые параметры и открытый ключ. Последним полем является подпись СА. Если Алисе требуется связаться с Бобом, она сначала извлекает из базы данных его сертификат и проверяет его достоверность. Если у них общий СА, то все просто. Алиса проверяет подпись СА на сертификате Боба. Если они пользуются различными СА, то все гораздо сложнее. Представьте себе древовидную структуру, в которой одни СА сертифицируют другие СА и пользователей. На самом верху находится главный сертификат СА. У каждого СА есть сертификаты, подписанные вышестоящим СА и нижестоящим СА. При проверке сертификата Боба Алиса использует эти сертификаты. Такая схема продемонстрирована на Рис. 24.3. Сертификат Алисы заверен САа, сертификат Боба заверен САВ. Алиса знает открытый ключ САа. У САс есть сертификат, подписанный САЛ, поэтому Алиса может проверить это. У С Ар есть сертификат, подписанный СА& а у САВ - подписанный СА0. И сертификат Боба подписан САВ. Поднимаясь по дереву сертификации до общей точки, в данном случае САр, Алиса может проверить сертификат Боба. Сертификаты могут храниться в базах данных, размещенных на различных узлах сети. Пользователи могут посылать их друг другу. По истечении срока действия сертификата он должен быть удален из всех общедоступных каталогов. Однако СА, выдавший сертификат, должен продолжать хранить его копию, которая может потребоваться при разрешении возможных споров.
638 Прикладная криптография Сертификаты также могут быть отозваны либо из-за компрометации ключа пользователя, либо ключа СА, либо из-за того, что СА больше не хочет подтверждать сертификат данного пользователя. Каждый СА должен поддерживать список всех отозванных серти¬ фикатов, срок действия которых еще не закончился. Когда Алиса получает новый сертификат, она должна проверить, не был ли он отозван. Она может проверить базу данных отозванных ключей по сети, но скорее всего она проверит локально кэшируемый перечень отозванных сертификатов. В такой системе определенно вероятны злоупотреб¬ ления, отзыв сертификатов, возможно, является самой слабой частью этой схемы. Протоколы проверки подлинности Допустим, Алисе нужно связаться с Бобом. Вначале она извлекает из базы данных последовательность сертификации (сегИрсаИоп ршк) от Алисы до Боба и открытый ключ Боба. В этот момент Алиса может инициировать однопроходный, двухпроходный или трехпроходный протокол проверки подлинности. Однопроходный протокол представляет собой простую передачу данных Бобу Алисой. Протокол устанавливает личности и Алисы, и Боба, а также целостность информации, передаваемой Бобу Алисой. Кроме того, он обеспечивает защиту от атаки с повторной передачей. В двухпроходный протокол добавлен ответ Боба. Протокол устанавливает, что именно Боб, а не какой-то самозванец, посылает ответ. Он также обеспечивает безопасность обеих передач и защищает от атаки с повторной передачей. И в однопроходных, и в двухпроходных алгоритмах используются метки времени. В трехпроходный протокол добавлено еще одно сообщение Алисы Бобу, и он позволяет избежать меток времени (и, следовательно, необходимости использования правильного единого времени). Однопроходный протокол таков: 1) Алиса генерирует случайное число КА. 2) Алиса создает сообщение, М= (ТА, КА, 1В, </), где ТА - метка времени Алисы, 1В - идентификатор Боба, - произвольные данные. Для безопасности данные могут быть зашифрованы открытым ключом Боба Ев. 3) Алиса посылает Бобу (СА, Ол (М)). (СА - это сертификат Алисы, йА - это закрытый ключ Алисы). 4) Боб проверяет СА и получает ЕА. Он проверяет, что срок действия этих ключей еще не истек. (ЕА - это открытый ключ Алисы). 5) Боб использует ЕА для расшифрования ИА (М). Этой операцией он проверяет и подпись Алисы, и целостность подписанной информации. 6) Боб для большей точности проверяет 1В в М 7) Боб проверяет ТАв Ми убеждается, что сообщение является текущим. 8) Дополнительно Боб может проверить ЯА в М по базе данных прошлых случайных чисел, чтобы убедиться, что сообщение не является повторяемым старым сообщением.
ГЛАВА 24. Примеры практических реализаций 639 Двухпроходный протокол состоит из однопроходного протокола и последующего аналогичного однопроходного протокола от Боба к Алисе. После выполнения этапов 1-8 однопроходного протокола двухпроходный протокол продолжается следующим образом: 9) Боб генерирует случайное число Яв. 10) Боб создает сообщение М'=(ТВ, Кв, 1Аь ЯА, й), где Тв - метка времени Боба, 1Л - идентификатор Алисы, а с1- произвольные данные. Для безопасности данные могут быть зашифрованы открытым ключом Алисы ЕА. ЯА - это случайное число Алисы, созданное на этапе 1. 11) Боб посылает Алисе Ов (М'). 12) Алиса использует Ев, чтобы расшифровать йв{М(). Таким образом, одновременно проверяются подпись Боба и целостность подписанной информации. 13) Алиса для большей точности проверяет 1А в М\ 14) Алиса проверяет Т^вМ'и убеждается, что сообщение является текущим. 15) Дополнительно Алиса может проверить Яв в М\ чтобы убедиться, что сообщение не является повторяемым старым сообщением. Трехпроходный протокол решает ту же самую задачу, но без меток времени. Этапы 1-15 такие же, как в двухпроходном алгоритме, но ТА=ТВ= 0. 16) Алиса сверяет полученную версию ЯА с ЯА, которое было отправлено Бобу на этапе 3. 17) Алиса посылает Бобу БА (Яв). 18) Боб использует ЕА, чтобы расшифровать Ол(Яв). Таким образом, одновременно проверяются подпись Алисы и целостность подписанной информации. 19) Алиса сверяет полученную версию Яв с Яв, которое было отправлено Алисе на этапе 10. 24.10. Стандарт РЕМ Аббревиатура РЕМ означает Рпуасу-ЕпЬапсес! Май - почта с повышенной секретностью, и является названием стандарта Интернета для почты с повышенной секретностью, одобренным Советом по архитектуре Интернета (1п1егпе1 АгсЬйесШге Воагб, 1АВ). Стандарт имеет целью обеспечение безопасности электронной почты в Интернете. Первоначальный вариант был разработан Группой Рпуасу апб Зесигйу ЯезеагсЬ Огоир (Р8ЯО) из 1Мегпе( Кезоигсез Тазк Рогсе (1ЯТР), а затем их разработка была передана в Рабочую группу РЕМ из Мете* Еп§теепп§ Тазк Рогсе (1ЕТР). Протоколы РЕМ предназначены для шифрования, проверки подлинности, проверки целостности сообщения и управления ключами. Полностью протоколы РЕМ сначала были детально описаны в ряде ЯРС в [977] и затем пересмотрены в [978]. Третья итерация протоколов [979, 827, 980] сведена в [177, 178]. Протоколы были изменены и улучшены, и окончательные протоколы детально описываются в другом наборе КРС [981, 825, 76, 802]. В другой статье Мэтью Бишопа
640 Прикладная криптография (МаНЬеш ЕЙзЬор) [179] подробно описаны все изменения. Попытки реализации РЕМ рассматриваются в [602, 1505, 1522, 74, 351, 1366, 1367] (См. также [1394]). Стандарт РЕМ является всеохватным. Процедуры и протоколы РЕМ разработаны так, чтобы быть совместимыми с множеством подходов к управлению ключами, включая симметричную схему и использование открытых ключей для шифрования ключей шифрования данных. Симметричная криптография применяется для шифрования текста сообщений. Для контроля целостности сообщения используются криптографические способы хэширования. Другие документы поддерживают механизмы управления ключами с помощью сертификатов открытых ключей, алгоритмов, режимов и связанных идентификаторов, а также и электронные подробности, инфраструктуру и процедуры управления ключами. РЕМ поддерживает только определенные алгоритмы, но позволяет добавлять и более поздние алгоритмы. Сообщения шифруются алгоритмом БЕЗ в режиме СВС. Проверка подлинности, обеспечиваемая средством М1С (Мезза^е 1п1е§п1у СЬеск - проверка целостности сообщения), использует МБ2 или МБ5. Симметричное управление ключами может применять либо БЕЗ в режиме ЕСВ, либо тройной БЕЗ с двумя ключами (режим ЕБЕ). Для управления ключами РЕМ также поддерживает сертификаты открытых ключей, используя ЯЗА (длина ключа до 1024 битов) и стандарт Х.509 для структуры сертификатов. РЕМ обеспечивает три сервиса повышения тайны переписки: конфиденциальность, проверка подлинности и контроль целостности сообщений. К электронной почтовой системе не предъявляется никаких специальных требований. Средства РЕМ могут быть установлены выборочно, как в определенные узлы, так и для определенных пользователей, без всякого воздействия на работу остальной сети. Документы стандарта РЕМ Стандарт РЕМ содержит следующие четыре документа: %/ ЯРС 1421: Часть I, Процедуры шифрования и проверки подлинности сообщений. В этом документе определяются процедуры шифрования и проверки подлинности сообщений, которые должны обеспечить функции почты с повышенной секретностью для передачи электронной почты в Интернет. ✓ ЯРС 1422: Часть II, Управление ключами с помощью сертификатов. В этом документе определяется архитектура и инфраструктура управления ключами, которые основаны на методе сертификатов открытых ключей, предоставляющих информацию о ключах отправителям и получателям сообщений. ✓ ЯРС 1423: Часть III, Алгоритмы, режимы и идентификаторы. Этот документ содержит определения, форматы, ссылки и цитаты для криптографических алгоритмов, режимов использования и связанных идентификаторов и параметров. ✓ ЯРС 1424: Часть IV, Сертификация ключей и родственные функции. В этом документе описываются три типа функций, поддерживаемых РЕМ: сертификация ключей, хранение и извлечение списка отозванных сертификатов (СЯЬ).
ГЛАВА 24. Примеры практических реализаций 641 Сертификаты Стандарт РЕМ совместим со схемой проверки подлинности, описанной в [304], см. также [826]. Стандарт РЕМ представляет собой надмножество стандарта Х.509, определяя процедуры и соглашения для инфраструктуры управления ключами, используемой с РЕМ и в будущем другими протоколами (включая стеки ТСР/1Р и 081). Инфраструктура управления ключами использует общий корень для всей сертификации Интернета. Центр регистрационной политики (1п1егпе1 РоПсу Ке§151габоп АиШогйу, 1РКА) определяет глобальную стратегию, применимую ко всей иерархии. Ниже корня - 1РЯА - находятся Центры сертификационной политики (РоПсу СеПШсайоп АиЙюгШез, РСА), каждый из которых определяет и опубликовывает свою стратегию регистрации пользователей и организаций. Каждый РСА сертифицирован 1РКА. Следом за РСА идут СА, сертифицирующие пользователей и управляющие организационными подразделениями (департаментами, офисами, дочерними компаниями). Первоначально предполагалось, что большинство пользователей будет регистрироваться в качестве членов организаций. Как ожидается, ряд РСА будет обеспечивать сертификацию пользователей, не желающих регистрироваться от имени какой-либо организации. Предполагается выделить один или несколько РСА для регистрации пользователей, желающих воспользоваться преимуществами секретности РЕМ и сохранить анонимность. Стратегия этих РСА будет позволять регистрировать пользователей, не желающих раскрывать свои личности. Сообщения РЕМ Сердцем РЕМ является формат сообщений. На Рис. 24.4 показано зашифрованное сообщение при симметричном управлении ключами. На Рис. 24.5 показано подписанное и зашифрованное, а на Рис. 24.6 показано подписанное (но незашифрованное) сообщение при управлении ключами с помощью протоколов с открытым ключом. ВЕ01Ы РШУАСУ-ЕЫНАЫСЕО МЕЗЗАСЕ Ргос-Туре: 4,ЕКСКУРТЕБ СоггЬепЪ-Ботахп: КРС822 БЕК-Гп^о: БЕЗ-СВС,Р8143ЕБЕ5960С597 Ог±д±паЪог-1В-5уттеЪг±с: зсЪпе±ег@соипЪеграпе.сот,, Кес±р±епЪ-1В-5уттеЪг±с: зсЪпе±ег@сЫпеЪ. сот,рЪ^-ктс, 3 Кеу-1п^о: БЕЗ-ЕСВ,К5А-М02 , 9ЕЮЗААБ2Е2 691В9А, В70665ВВ9ВР7СВСВА60195ВВ94Р727ОЗ Кес±р±епЪ-1В-5уттеЪг±с: рет-с^еV@Ъ^з.сот,рЪ^-ктс,4 Кеу-1п^о: Рис. 24.4. Пример встроенного сообщения (симметричный случай)
642 Прикладная криптография БЕЗ-ЕСВ,К5А-МЛ2,161АЗР7 50С82ЕР2 6,Е2ЕР532С65СВСРР79Р83А26581320В47 ЬЬгНВ0еа2уЬР^г551:ает8океЕтг47эхе730УхН72оЬНсЦк2эНЕиЗоН1тгМ5:Ш1,9М 8кЕзтГ/2хВ+ЬАТМкР:СЦИЬ28Ьг9и1оХ1кзШ1ВЬруХК0ОгО2УЬкНрк0адУ212ирк ^б^xКК^с^5V2^зоК+оNV^и627Xз5Xг25^^^^сМ1К126720асВИгеез^^рТр5Спро^: аха/н5шоипоп^рсмдцнк== ЕЖ> РК.1 УАСУ-ЕЫНАЫСЕО МЕЗ5АСЕ Рис. 24.4. (Продолжение). Пример встроенного сообщения (симметричный случай) ВЕС1Ы РКГУАСУ-ЕША1ГСЕО МЕЗЗАСЕ Ргос-Туре: 4,ЕЬГСЮГРТЕВ Сопкепк-Оотахп: ШГС822 ОЕК-1пго: ОЕЗ-СВС,ВРР968АА74691АС1 Огхдхпаког-Сегкх^хсаке: М11В1ТССАЗсСАШиВдУ.Жо211тусЫАдЕСВдАиОТЕЪМАкСА1ЦЕВЬМСУУМх1ПАеВдНУ ВАоТЕЦТдЗВЕУХЕЫЕтУЗУуаХК5ЬСВаЬшМиМ08иВ0ТОУд0ЬЕм2С2ХКЫОЕхП2АМ ВдЫУВАз ТВк 5 РУЕ РЗИТАеРиО 5МТА5МОдхОВМ4МТс1аРиО 5М2А5МВМхООМ4МТ 2аМЕЦх С2АОВдНУВАУТА1УТМЗАмНдУОУддКЕхс}5иОЕдКСРОУЗВТ2Ш1ст10еЗмдЗет5э1оЕ1! МВ16А1ЦЕАхМЬУСУ2асвУс2УутЕ»ИТАКВдКУСАЕВАд1САА1ШШВ1АкЕА»Н2Н17х+ уД'сдОк^СсжгТавЛ'гаАхЬАпЗС+СппэОЛЕЬуидхВдкСгдХЪЗэв/хО^М+УгзуРЗ.иЗР Ь2РУк21паЬУРад10АдАВМАОССЗдС31ЬЗПдЕВАдОАА1кАСКгОРдрЬаУи1з+Уркс1д хтРРиМБз Л 9КЬгд7АЗРхзкУкЕМэШ2У/Н2П2дЕЬкУа07 ахг2з2мгх5ЬуМр2ХЗО/ 5Х0ХСх7дизВдНдСз70к9И8СК1гиЗЖГдМ4^= Кеу-1п^о: К5А, 13гК1СХаСИАР8зз5иС2КТкаЬО34РТНаК2У9Ти^03М+Ш7гхбдс5иаххрз2Ьпд0+ мСгкхОт/ <уу~ЬКс1хп2б2д/ад== 1ззиег-Сегкх^хсаке: М11В30ССАидСАдои0дХ,Жо211тусНАдЕСВдАнТ2Е1*МАкСА1ЦЕВЪМСУУМх:тАеВдЫУ ВАоТРЦТдЗВЕУХЕЫРЫ1УЗУуаХЕ5ЬСВОЬтМиМд8иОдУОУддЬЕи2С2ХЕЫОЕхПТАЬ ВдМУВАзТВРВМд0ЕиНЬсЫОТЕ»гОТАхМОдмМВА»гИ11сЫ0Т1иОТАхМВо1ОТО5ИзВБ?Мдзи СдУБУддСЕмаУ02ЕдМВ46А10ЕСЫШЛМВ1ЕВЬаСЕди2УзахСранкз1Е1иУу4хП2АМ Рис. 24.5. Пример встроенного шифрованного (ЕЕС РУР ТЕП) сообщения (асимметричный случай)
ГЛАВА 24. Примеры практических реализаций 643 ВдЫУВАзТВкЛс1СЕдМТЕРМА0(УаЦЕСхМСТк9и0У^МНА™СдУЕУ0дВА01САг1Д)УдАет ХтеЛСзпр610СхУукК1ОО1тЪР/эМЛкЪ+ЗРэУуНО1*к+/9г11д6Х65В/ЫЭ4Ъ.7НЪО5ХИг сдА2/7К7ХЬэУСт0РсяЬс12оАС2Ъ11ЕТгКгсЛВУоР+Вк28к1дСк7Ъ0НрМ1*1ОА0АВ МАОСС5дС81ЪЗООЕВАдиАА38АА1СРу4^9Сх/1;У4+р+4ВВ7^+ЪК2тгВоу82доМСОх аБ2зМ2/ЗНзуШСетд5Р0еН/АаВЗдг92ОзС47руМпТ:еЗа5у2пВ07СМхрШКВсХирЕ+х ЕКЕ2а9++32о^СВ1Ха±а1п0дУШ0025Удид±0077п«ШШз0ЪдеЪС±2Ез51*иа35а5Ъ М1С-1п^о: К8А-М05, К5А, ^аР^К8и/ТIСЬ^Н65^ееVе210Ш1:ооаЗV2СVVNСВ2^^^/7п^д2Ш)АВ28V9NзXЗеxV Аз КГЬНоЖ 2 Вих тетОАРеАО Н ^ 2 Ъ4 уВ Кес±р±епЪ-1В“Азуште1:г±с: МЕЕхС2АЗВдЮтАУТА1УТМЗА\гНдУВУ<2<2КЕхс13и0ЕдКСЕ0УЗВТ2Ш1ст10еЗ\гдЗК5з ^^ЕРМА0^А1^ЕСxМ^^тУ0УЗАxМ^8V^^У^V^^^ЕV2ОТ1ЕВ^1к=, 66 Кеу-1п±о: КЗ А, ОбВ81т>т9СТуНРЪЗЗЪМЬП+Ь0Ъез<1'гХб0у1НК2й5250РЕаХЪХ8ЕЪгУрЪНУТЗъек<ттг 7х023ах2чТА11ОУНМсддСзА~ деЧ1з/УЖХ1±5пд9у2пРЪЪП0тУ1о8ч1иУ9тУх+д2У+81Х<1/Я<2гХН±16/МЬВ±РЕЗ<1 31 дС*7Ах\г1 <32хдд(2±т172о31 а4г7к005с/1иа 4 ЬдКедЗс±ЕгЕ^/МЬ2ЪА~ ЕЖ) РК1УАСУ-ЕЫНАЫСЕО МЕЗ5АСЕ Рис. 24.5. (Продолжение). Пример встроенного шифрованного (ЕИСЯУРТЕ Б) сообщения (асимметричный случай) Первым полем является «Ргос-Туре», идентификатор типа обработки, которой подверглось сообщение. Существуют три возможных типа сообщений. Спецификатор «ЕИСЯУРТЕО» обозначает, что сообщение зашифровано и подписано. Спецификаторы «М1С-(ЖЬУ» и «М1С-СЬЕАЯ» указывают, что сообщение подписано, но не зашиф¬ ровано. Сообщения М1С-СЬЕАЯ не кодируются и могут быть прочитаны с помощью другого, не входящего в РЕМ программного обеспечения. Для преобразования сообщений М1С-01ЧЕУ в удобочитаемую форму необходимо программное обеспечение РЕМ. Сообщение РЕМ подписывается всегда, а шифрование не является обязательным. Следующее поле, «Соп1еп1-Оотат», задает тип почтового сообщения. Оно не связано с безопасностью. Поле «ОЕК-1пГо» содержит информацию о ключе обмена данными (Ва1а ЕхсЬап^е Кеу, ВЕК), алгоритме, используемом для шифрования текста, и параметрах, связанных с алгоритмом шифрования. В настоящее время определен единственный алгоритм - БЕ8 в режиме СВС, «ОЕ8-СВС». Второе подполе содержит вектор инициали¬ зации. В будущем для РЕМ могут быть определены и другие алгоритмы, их использование будет запротоколировано в поле ОЕК-1пГо и других полях, определяющих алгоритм.
644 Прикладная криптография В сообщениях с симметричным управлением ключами (см. Рис. 24.4) следующим полем будет <<Оп§та1ог-1Б-8утте{пс>> с тремя подполями. Первое подполе с помощью уникального адреса электронной почты определяет отправителя. Второе поле не является обязательным и определяет орган, выдавший ключ обмена. Третьим является необязательное подполе Уег$юп/Ехр1габоп (Версия/Окончание срока действия). Далее, при использовании симметричного управления ключами, у каждого получателя есть два поля: <<Яес1р1еп{-1Б-8утте1:пс>> и «Кеу-1пГо». Поле «Яес1р1епТГО-$утте1пс» содержит три подполя, которые определяют получателя так же, как подполя поля «Оп§таЯ)г- Ш-$утте1пс» определяют отправителя. Поле «Кеу-1пГо» задает параметры управления ключами. У этого поля четыре подполя. Первое определяет алгоритм, использованный для шифрования БЕК. Так как в рассматриваемом сообщении применяется симметричное управление ключами, то отправитель и получатель используют общий ключ. Он называется ключ обмена (1п1егсЬап§е Кеу, 1К) и используется для шифрования БЕК. БЕК может быть зашифрован либо с помощью БЕЗ в режиме ЕСВ (этот способ обозначается «БЕ8- ЕСВ»), либо тройным БЕ8 («БЕ8-ЕБЕ»). Второе подполе определяет алгоритм М1С. Может использоваться МБ2 (обозначается «Я8А-МБ2») или МБ5 («Я8А-МБ5»). Третье подполе, БЕК, и четвертое подполе, М1С, шифруются с помощью 1К. вЕсга ркгуасу-еынаксеб меззасе Ргос-Туре : 4 , ШС-ОЫЬУ СопЪепЪ-Бота±п: КЕС822 Ог±д±паЪог-Сег1:±^±са*:е: М11В1ТССАЗсСАТО17ВОУаКо21^сЫАОЕСВОА>гиТЕЬМАкСА1ЦЕВ11МСУУМх10АеВдЫУ ВАоТЕЦТдЗВЕУХКЫГЫ1УЗУуаХК5ЪСВаЬшМгдМд8^0дУВУддЪЕ172С2ХКЫВЕхВ2АН ВдЫУВАзТВк5РУЕЕЗОТАеЕ*г05МТА5МОдхОБМ4МТс1аЕ*г05М2А5МОМхОВМ4МТ2аМЕих С2АаВдЫУВАУТА1УТМЗА^НдУВУС0КЕхс13и0ЕдКСЕ0УЗВТ2™1ст10е3^дЗИ5зЪзЕи МВ1(^1ЦЕАхМЬУ(^2с1СВУс2Уу10ЕтеОТАКВдКУСАЕВАд1<^А1Ш\БВ1АкЕАтеН2Н17±+ у«7сдБ1:э«1Соте2Тс1В1Тгс1Ал.1»Ап5С+Спп;зООЕ11уид1Вдк6гд1ЬЗз8/хО^М+УгзуЕ1иЗЕ Ъ2РУЪ21пйЬУЕад1БАОАБМАОССЗдС51ЪЗООЕВАдиАА1кАСКгОРдрЪ,ТУ™ао+*Р1:с1д 1^1ЕРиЫ5з Л9КМд7А5ЕхзкУкЕМэКЫ2У/Н2Б2дЕЫ:Уаи7 ^^2з2теЕХ5ЪуМр2ХЗи/ 5ХЦХСх7дизБдН0аз7Л9И8ОТ1^иЗШдЫ4^== 1ззиег-СегЪ±^з.саЪе: М11ВЗБССАидСАдо170дУаКо21^сЫАдЕСВдА^Т2ЕЬМАкаА1ЦЕВ11МСУУМх1БАеВдЫУ ВАоТЕЦТдЗВЕУХКЫЕК1УЗУуаХК5ЬСВаЪтМгдМд8«ОдТОУддЪЕ«2С2ХМ11БЕхОТАБ ВдЫУВАзТВЕКМд0Е1/Н11сКОТЕ^ОТАхМОд17МБА>г^7ЬсЫОТ117ОТАхМБс1ОТи5^ВНМдз>г С^У^V^^СЕV^V^2ЕдМВ4^А1^ЕСЬМX^1NВIЕКЬс^6Ед^2V^аX^рс^НкзIЕ1иУу4x^2АN ВдЫУВАзТВкЛаСЕдМТЕРМАОСАШЕСхМОТкЭидУагМНА^СдУЕУддВАдЮАг^БУдА^ Рис. 24.6. Пример встроенного сообщения М1С_ОИЬ У (асимметричный случай)
ГЛАВА 24. Примеры практических реализаций 645 Х^^Сзпр61ССхУукЫ10В1шЪГ/зМаЗкЪ+ЗРзУуН0^к+/9гЬдбХб5В/1Ю4ЬгаЪ05ХР7 сдА2/7К7ХЬзУСш0РсдЬс12оАС2Ъ11ЕТгКгсЛВУоР+Вк28к1дСк7ЬдНрЫ^1ВА0АВ МАОССЗдСЗТЬЗООЕВАдиААЗЗААТСЕ^^ЭСх/Ъ^+рЧ^ОВТМУ+ЪКгтгВоувгдоМСОх сЮ2зМ2/ЗНзуИК^дЗР0еН/А0ВЗдг92озС47руМпТ^ЗаЗу2пВО7СМхрШКВсХирЕ+х ЕКЕ2с19++32о^СВ1Ха±а1п0дУОп0023Удид100771ЦЪВ^0Ь0еЬС±2Ез517Ш35а511 М1С-1п^о: КЗА-М05,КЗА, 3 V20^Н+ппXН^8Ьп^8кРАас^/Iп3^1Т^21ЬVиxV2А0VН25^5+Е^ 15Ь^V^Nе^0^N^^ г 6 Е ЪЕ 7К2дБеУМСуХз<1 ЛА8^А== Ь5ВВ1С11сЗЫЪ22ид2т9у1НУ225ВрЪ±В02ХК0ате5пЪд0КЪ5ВаЬ2хзЬЗс1рЪтсдаХМд УЗВ±Ь6ГиауВза^510д0К00риаС121С121НКо23В1Ьт0г1Одо= ЕЛО РН1УАСУ~ЕЫШШСЕ0 МЕЗЗАСЕ Рис. 24.6. (Продолжение). Пример встроенного сообщения М1С_0ИЬУ (асимметричный случай) На Рис. 24.5 и Рис. 24.6 показаны сообщения, в которых используется управление ключами с помощью открытых ключей (в перечне РЕМ такой способ называется асимметричным). Заголовки изменяются. В сообщениях типа ЕИСЯУРТЕО после поля «ОЕКПпГо» идет поле «Оп§та{ог-СегбГ1са{е». Форма сертификата соответствует стандарту Х.509 (см. раздел 24.9). Следующим полем является «Кеу-1пГо» с двумя подполями. Первое подполе определяет алгоритм с открытым ключом, использованный для шифрования БЕК, в настоящее время поддерживается только Я8А. Следующее подполе - ОЕК, зашифрованное открытым ключом отправителя. Это необязательное поле, которое позволяет отправителю расшифровать свое собственное сообщение, возвращенное почтовой системой. Следующим полем является «1$$иег-Сег1Шса{е», сертификат организации, подписавшей сертификат отправителя («Оп§та1ог- СегбГюа1е»). Далее при асимметричном управлении ключами следует поле «М1С-1п&». Первое подполе задает алгоритм вычисления М1С, а второе - алгоритм, использованный для подписи М1С. Третье подполе содержит М1С, подписанный закрытым ключом отправителя. Следующие поля связаны с получателями. Каждому получателю соответствуют два поля: «Яес1р1еп1-ГО-Азутте1т1С» и «Кеу-1пй». У поля «Яес1р1епМЭ-А$утте1:пс» два подполя. Первое определяет орган, выдавший открытый ключ получателя, а вторым является необязательное подполе Уег$юп/Ехр1габоп. Поле «КеуПпГо» задает параметры управления ключами: первое подполе определяет алгоритм, использованный для шифрования сообщения, а вторым подполем служит ОЕК, зашифрованный открытым ключом получателя. Безопасность РЕМ Длина ключей Я8А, используемых в РЕМ, может лежать в диапазоне от 508 до 1024 битов. Этого достаточно практически для любого уровня безопасности. Более
646 Прикладная криптография вероятно, что атака будет направлена против протоколов управления ключами. Мэллори может украсть ваш закрытый ключ - не записывайте его нигде - или попытаться подсунуть вам фальшивый открытый ключ. Процедуры сертификации ключей в РЕМ делают это невозможным, если все пользователи строго следуют соответствующим процедурам, но, как известно, люди часто неаккуратны. Мэллори может поступить хитрее и модифицировать реализацию РЕМ, работающую в вашей системе. Эта измененная версия может тайком пересылать Мэллори всю вашу почту, зашифровав ее открытым ключом Мэллори. Ему может быть послана даже копия вашего закрытого ключа. Если измененная реализация будет работать хорошо, то вы никогда не узнаете, что случилось. Реального способа предотвратить такую атаку не существует. Вы можете использовать однонаправленную хэш-функцию и получить контрольную сумму исполняемого кода РЕМ. Затем, при каждом запуске программного обеспечения вы можете проверять контрольную сумму, чтобы вовремя обнаружить изменения. Но Мэллори точно также может изменить и значение контрольной суммы, как он это сделал с кодом РЕМ. Можно сохранить контрольную сумму контрольной суммы, но Мэллори может изменить и ее. Если у Мэллори есть доступ к вашему компьютеру, он может разрушить безопасность РЕМ. Вывод таков, что вы не должны доверять никакому элементу программного обеспе¬ чения, если вы не можете доверять аппаратуре, на которой работает это программное обеспечение. Для большинства такие опасения покажутся необоснованными. Но для некоторых людей они вполне реальны. Т15/РЕМ Организация Тги$1ес1 ЫГогтабоп 8у$1ет$, частично поддерживаемая Управлением по передовым научным проектам правительства Соединенных Штатов, спроектировала и реализовала эталонную версию РЕМ (Т18/РЕМ). Вначале они были разработаны для платформ 1Ж1Х, а далее перенесены на системы УМ8, Э08 и Мпбо\У5. Хотя спецификации РЕМ определяют для Интернета один главный сертификационный центр, Т18/РЕМ поддерживает существование нескольких иерархий сертификации. Узлы могут определить набор сертификатов, которые будут считаться действительными, включая все сертификаты, выданные узлами. Для использования Т18/РЕМ узлу не нужно присоединяться к иерархии Интернета. Все организации и граждане США и Канады при желании могут получить доступ к системе Т18/РЕМ, которая распространяется в виде исходного кода. Заинтересованные лица должны обращаться по следующему адресу: Рпуасу-ЕпЬапсес! Май, Тгиз1ес1 Могтабоп 8у$1етз, 1пс., 3060 ^азЫп^оп Яоаб (Ше. 97), 01еп\уоос1, МЭ 21738; (301) 854-6889; Гах: (301) 854-5363; 1п1ете{: рет-тГо@бз.сот. К1РЕМ К1РЕМ - это название программы, написанной Марком Риорданом (Магк Клогбап) и реализующей протоколы РЕМ. Хотя эта программа не является свободно доступной, ей можно воспользоваться бесплатно для частного, некоммерческого использования. Лицензия на ее использование входит в документацию.
ГЛАВА 24. Примеры практических реализаций 647 Код программы не может быть экспортирован. Конечно, законы правительства США не действуют за пределами Соединенных Штатов, и некоторые люди игнорируют экспортные ограничения. Код Я1РЕМ доступен по всему миру на электронных досках объявлений. Для экспорта разрешена версия, называемая Я1РЕМ/81С, и реализующая только цифровые подписи. К моменту написания этих строк Я1РЕМ не полностью реализовала протоколы РЕМ, в ней нет возможности использовать сертификаты проверки подлинности ключей. Перед созданием программы Я1РЕМ Риордан написал подобную программу ЯРЕМ. Подразумевалось, что это будет общедоступная программа электронной почты. Пытаясь обойти патентные проблемы, Риордан использовал алгоритм Рабина (см. раздел 19.5). Однако компания РиЬНс Кеу РаЛпегз заявила, что ее патенты распространяются на 'всю криптографию с открытым ключом. Под угрозой судебного процесса Риордан прекратил распространение программы. В настоящее время программа ЯРЕМ не используется. Она не совместима с Я1РЕМ. Так как программу Я1РЕМ можно использовать, не встречая препятствий со стороны компании РиЬНс Кеу РаЯпегз, нет причин для возвращения к ЯРЕМ. 24.11. Протокол М5Р Протокол М8Р (Мезза^е 8есигку Рго1осо1, Протокол безопасности сообщений) - это военный эквивалент стандарта РЕМ. Протокол был разработан агентством АНБ в конце 80-х годов при работе по программе создания Безопасной системы передачи данных по сети (8есиге Оа*а Ие1\Уогк 8уз1ет, 80Ы8). Это протокол уровня приложений, он совместим с Х.400 и предназначен для засекречивания электронной почты. Протокол М8Р планируется использовать в разрабатываемой сети оборонных сообщений (Эе&пзе Мезза^е 8уз1ет, ЭМ8) Министерства обороны. Предварительный протокол безопасности сообщений (РгеПгшпагу Мезза^е 8есигйу Рго1осо1, РМ8Р), который предполагается использовать для пересылки «несекретных, но важных» сообщений, представляет собой адаптированную для использования совместно с Х.400 и ТСР/1Р версию М8Р. Этот протокол иногда также называют Мозаю. Как и в случае РЕМ, программные реализации протоколов М8Р и РМ8Р достаточно гибки, их конструкция позволяет подстроиться под использование различных алгоритмов для осуществления функций защиты, таких как подпись, хэширование и шифрование. Протокол Р8МР будет работать с микросхемой Сарз1;опе (см. раздел 24.17). 24.12. Программа РСР Программа РОР (РгеЯу Оооб Рпуасу, весьма хорошая секретность) - это свободно распространяемая программа безопасной электронной почты, разработанная Филипом Циммерманном (РЫНр 21ттегтапп) [1652]. Для шифрования данных она использует алгоритм ГОЕА, для управления ключами и цифровой подписи - алгоритм Я8А (длина ключа до 2047 битов), а для однонаправленного хэширования - алгоритм МЭ5. Для получения случайных открытых ключей РОР использует вероятностную проверку чисел на простоту, используя для получения начальных значений интервалы между
648 Прикладная криптография нажатиями пользователем клавиш на клавиатуре. РСР генерирует случайные ключи ГОЕА с помощью метода, описанного в АЫ81 Х9.17, Приложение С (см. раздел 8.1) [55], используя в качестве симметричного алгоритма ГОЕА вместо ОЕ8. РОР также шифрует закрытый ключ пользователя с помощью хэшированной парольной фразы, а не пароля непосредственно. Сообщения, зашифрованные РСР, имеют несколько уровней безопасности. Единствен¬ ная вещь, известная криптоаналитику о зашифрованном сообщении - это получатель сообщения, при условии, что криптоаналитику известен ГО ключа получателя. Только расшифровав сообщение, получатель узнает, кем оно подписано, если оно подписано. Это резко отличается от сообщения РЕМ, в заголовке которого немало информации об отправителе, получателе и самом сообщении хранится в незашифрованном виде. Самой интересной особенностью РОР является распределенный подход к управлению ключами (см. раздел 8.12). Центров сертификации ключей нет, вместо этого в РОР поддерживается «сеть доверия». Каждый пользователь сам создает и распространяет свой открытый ключ. Пользователи подписывают ключи друг друга, создавая взаимо¬ связанное сообщество пользователей РОР. Например, Алиса может физически передать Бобу свой открытый ключ. Боб лично знает Алису, поэтому он подписывает ее открытый ключ. Одну подписанную копию он возвращает Алисе, а другую оставляет. Когда Алисе нужно связаться с Кэрол, она посылает Кэрол подписанную Бобом копию ключа. Кэрол, у которой каким-то образом уже есть ключ Боба (она получила его раньше), и которая доверяет Бобу заверение ключей другого человека, проверяет его подпись под ключом Алисы и убеждается, что она правильна. Таким образом, Боб поручается (Шгодисеф за Алису перед Кэрол. Программа РОР не определяет стратегию установки доверительных связей, пользова¬ тели сами решают, кому верить, а кому нет. РОР обеспечивает механизмы для связи доверия с открытыми ключам и для использования доверия. Каждый пользователь хранит набор подписанных открытых ключей в виде файла, называемого кольцом открытых ключей (риЬПс-кеу пп%). Каждый ключ кольца обладает полем законности ключа, определяющим уровень доверия к ключу конкретного пользователя. Чем больше уровень доверия, тем больше пользователь уверен в законности ключа. Поле доверия к подписи измеряет, насколько пользователь верит тому, кто подписал открытые ключи других пользователей. И, наконец, поле доверия к владельцу ключа задает уровень, определяющий, насколько конкретный пользователь верит владельцу ключа, подписав¬ шему другие открытые ключи. Это поле устанавливается пользователем вручную. По мере появления новой информации РОР непрерывно обновляет эти поля. На Рис. 24.7 показано, как выглядит эта модель для конкретного пользователя - Алисы. Ключ Алисы находится в самом верху иерархии, владелец ключа абсолютно надежен. Алиса подписывает ключи Боба, Кэрол, Дэйва, Элен и Фрэнка. Она доверяет Бобу и Кэрол подписывать открытые ключи других людей, кроме того, она частично доверяет Дэйву и Элен подписывать открытые ключи других людей. И она доверяет Гейл подписывать открытые ключи других людей, хотя сама не подписывала ключ Гейл. Двух частично доверяемых подписей может оказаться достаточно для сертификации ключа. Алиса считает, что ключ Курта законен, так как Дэйв и Элен его подписали. Уровень доверия устанавливается в РСР вручную, и Алиса может сама выбрать устраивающую ее степень паранойи.
ГЛАВА 24. Примеры практических реализаций 649 Алиса не должна автоматически доверять другим людям право подписывать ключи только потому, что она считает их ключ подлинным. Алиса не доверяет Фрэнку подписывать другие ключи, хотя она собственноручно подписывала его ключ. Кроме того, она не доверяет подписи Ивана под ключом Мартина или подписи Курта под ключом Нэнси. Ключ Оуэна вообще не входит в сеть; возможно, Алиса получила его от сервера ключей. РОР не считает ключ автоматически правильным, Алиса должна либо объявить о правильности ключа, либо решиться поверить одному из тех, кто подписал ключ. Конечно, ничто не мешает Алисе использовать ключи, которым она не доверяет. Задача РОР - предупредить Алису о подозрительности ключа, а не помешать ей в установлении соединения. Самым слабым звеном этой системы является отзыв ключей: гарантировать, что кто- нибудь не воспользуется скомпрометированным ключом, невозможно. Если закрытый ключ Алисы украден, она может послать некий сертификат отзыва ключа, но, так как некое распределение ключей уже произошло, нельзя гарантировать, что это сообщение будет получено всеми, использующими ее открытый ключ в своем кольце ключей. И так как Алиса должна будет подписать свой сертификат отзыва ключа своим закрытым ключом, то в случае потери ключа она не сможет и отозвать его. Рис. 24.7. Модель доверия в РСР
650 Прикладная криптография Текущей версией РОР является 2.62х. Появление новой версии, РОР 3.0, ожидалось к концу 1995 года. В нее включены опции тройного БЕЗ, ЗНА, другие алгоритмы с открытым ключом, разделение пар «открытый ключ/закрытый ключ» для шифрования и для подписи, расширенные процедуры отзыва ключей, улучшенные функции управления кольцом ключей, АР1 для интегрирования РОР в другие программы и полностью переписанные основные части кода. Программа РОР доступна для работы в среде М3 003,1Ж1Х, Маст1о$Ь, Агш^а и А1ап. В личных, некоммерческих целях ее можно использовать бесплатно, скачав с многих РТР-сайтов в Интернете. Чтобы скопировать программу РОР с узла М1Т через РТР, подключитесь по протоколу 1е1пе1 к пе1-<Нз1.тк.ес1и, войдите в систему под именем §е*р§р, ответьте на вопросы, затем подсоединитесь по йр к пеГсНзктк.еби и перейдите в каталог, указанный в сессии 1е1пе1. Эту программу также можно получить на узлах йр.ох.ас.ик, йр.бзьишгш.к, йр.йте!.й, Ар.бетоп.со.ик, СотриЗегуе, АОЬ, и т.д. Для коммерческого использования в США программу РОР можно приобрести - полностью, вместе с лицензиями - примерно за 100 долларов в компании У1аСгур1, 9033 N 24Й1 Ауе., РЬоешх, А2, 85021; (602) 944-0773; у1асгур1@аст.ог§. Существуют различные средства, помогающие интегрировать РОР в МЗ-БОЗ, Мюгозой >Ушс1о\уз, Маст1озЬ и 1Ж1Х. О РСР написано несколько книг [601,1394,1495]. Исходный код был даже опубликован в печатном виде в [1653] при попытке обойти Госдепартамент США, который продолжает считать, что исходный код можно экспортировать только в бумажном, а не в электронном виде. Если вы доверяете алгоритму ЮЕА, программа РОР позволит вам приблизиться к военному уровню шифрования. 24.13. Смарт-карты Смарт-карта представляет собой пластиковую карточку, по размеру и форме аналогичную кредитной карте, но имеющую встроенный компьютерный чип. Идея таких карточек не нова - первые патенты были выданы лет 20 тому назад - но из-за практических ограничений возможность реализовать такие карточки появилась приблизительно пять лет назад. С тех пор они стали популярны, главным образом в Европе. Во многих странах смарт-карты используются для оплаты за телефоны. Существуют кредитные смарт-карты, дебетные смарт-карточки, смарт-карточки для чего угодно. Американские компании по выпуску кредитных карточек работают над усовершенствованием соответствующих технологий, и через несколько лет даже захудалые американцы будут носить смарт-карты в своих бумажниках. Смарт-карта содержит маленький компьютер (обычно 8-битовый микропроцессор), с ОЗУ (четверть килобайта), ПЗУ (примерно 6-8 килобайт), и несколько килобайт памяти либо типа ЕРЯОМ (стираемое программируемое ПЗУ), либо типа БЕРНОМ (электрически стираемое программируемое ПЗУ). Объем памяти в интеллектуальных карточках следующего поколения наверняка возрастет, но определенные физические 1 На сегодняшний день последней версией является 7.0 , но с РСР за это время произошло много изменений, в частности, она перестала распространяться в исходных текстах и Циммерманн также не имеет отношения к последним версиям. Более того, в некоторых нововведениях были найдены уязвимости. Все это позволяет рекомендовать версию 2.6.3 как наиболее надежную и проверенную. - Прим. ред.
ГЛАВА 24. Примеры практических реализаций 651 ограничения могут затруднить такое расширение. Карточка использует свою операционную систему, программы и данные. (Чего в ней нет, так это источника питания, электроэнергия подается, когда карточку вставляют в считыватель). Карточка снабжена защитой. В нашем меняющемся мире, когда нельзя доверять чужому компьютеру, телефону, да чему угодно, вы можете быть уверены в своей карточке, которая хранится в вашем бумажнике. В смарт-картах могут использоваться различные криптографические протоколы и алгоритмы. Такие карточки могут служить электронным кошельком, давая возможность тратить и получать электронные наличные. Карточки могут использоваться в протоколах проверки подлинности с нулевым разглашением, они могут обладать собственными ключами шифрования. Они могут поддерживать средства подписи документов или снятия блокировки с компьютерных программ. Некоторые смарт-карты считаются устойчивыми к взлому устройствами, что часто является средством защиты организации, эмитировавшей карточки. Ведь банк вовсе не хочет, чтобы вы могли взломать их смарт-карту и начислить себе побольше денег. Смарт-карты представляют собой очень интересную тему, на которую написано множество литературы. Хорошей обзорной статьей по криптографии в смарт-картах может служить [672]. Ежегодно проводятся конференции: САЯТЕ8 в октябре в Париже и СагбТесЬ в апреле в Вашингтоне, округ Колумбия. Труды двух других конференций по смарт-картам можно найти в [342, 382]. В области смарт-карт существуют сотни патентов, в большинстве принадлежащие европейским компаниям. В [1628] обсуждены интересные вопросы будущего использования смарт-карт - проверка целостности, аудиторский контроль, защита от копирования, электронные наличные, оплата почтовых расходов. 24.14. Стандарты РКС5 Стандарты РКС8 (РиЬПс-Кеу СгурЮ^гарЬу ЗЩпбагбз, стандарты криптографии с открытым ключом) - это документы, появившиеся на свет при попытке компании К8А Ба1а 8есип1у, 1пс. (К8А081) обеспечить промышленный стандарт для криптографии с открытым ключом. По традиции такими делами занимается организация А1Ч81, но, учитывая современную политическую ситуацию в сфере криптографии, компания К8АБ81 решила сделать все самостоятельно. Работая с множеством компаний, Я8АБ81 разработала набор стандартов. Одни из них совместимы с другими стандартами, а другие - нет. Соответствующие документы не являются стандартами в общепринятом смысле этого слова, ведь никто не собирался и не голосовал за принятие РКС8. По своим собственным словам К8АБ81 «будет единственной организацией, правомочной принимать решения о каждом стандарте», и будет «пересматривать эти стандарты по мере необходимости» [803]. Тем не менее, это совсем неплохо. Если вы не уверены, какие структуры данных и синтаксис следует использовать при программировании криптографии с открытым ключом, эти стандарты помогут вам не хуже каких-либо других. К тому же, так как это не настоящие стандарты, вы можете подстроить их под свои нужды.
652 Прикладная криптография Далее приведено краткое описание каждого РКС8 (РКС8 #2 и РКС8 #4 были включены в РКС8 #1). РКС8 #1 [1345] описывает метод зашифрования и расшифрования по схеме К8А, главным образом для создания цифровых подписей и цифровых конвертов, описанных в РКС8 #7. Для цифровых подписей сообщение хэшируется, а затем хэш-значение шифруется закрытым ключом подписывающего лица. Совместное представление сообщения и хэш-значения подробно описано в РКС8 #7. Для цифровых конвертов (шифрованных сообщений) сообщение сначала шифруется симметричным алгоритмом, а затем ключ сообщений шифруется открытым ключом получателя. Совместное представление зашифрованного сообщения и зашифрованного ключа должно соответствовать РКС8 #7. Эти два метода совместимы со стандартами РЕМ. Для открытых и закрытых ключей Я8А и трех алгоритмов подписи (сертификатов и т.п.) - МБ2 и Я8А, МБ4 и Я8А, МЭ5 и Я8А - РКС8 #1 также описывает синтаксис, идентичный синтаксису Х.509 и РЕМ. РКС8#3 [1346] описывает способ реализации обмена ключами по схеме Диффи- Хеллмана. РКС8#5 [1347] описывает способ шифрования сообщений секретным ключом, полученным из пароля. Стандарт использует схемы МЭ2 или МЭ5 для получения ключа из пароля и шифрует сообщения с помощью ЭЕ8 в режиме СВС. Этот метод предназначен главным образом для шифрования закрытых ключей при их передаче от одной компьютерной системы другой, но может быть использован и для шифрования сообщений. РКС8#6 [1348] описывает стандартный синтаксис сертификатов открытых ключей. Синтаксис является надмножеством сертификата Х.509, при необходимости можно извлечь и сертификат Х.509. Дополнительные атрибуты не ограничивают процесс сертификации только открытым ключом. Они содержат и другую информацию, например, адрес электронной почты. РКС8 #7 [1349] определяет общий синтаксис данных, которые могут быть зашифрованы или подписаны, например, синтаксис цифровых подписей или цифровых конвертов. Синтаксис является рекурсивным, поэтому можно организовать вложенность конвертов или поставить чью-то подпись под ранее зашифрованными данными. Синтаксис также разрешает вместе с содержанием сообщения проверку подлинности других атрибутов, например, меток времени. РКС8 #7 совместим со стандартом РЕМ, поэтому подписанные и зашифрованные сообщения без дополнительных криптографических операций могут быть преобразованы в сообщения РЕМ, и наоборот. Для управления ключами с помощью сертификатов РКС8 #7 может поддерживать множество структур - одной из них является структура, определяемая РЕМ. РКС8#8 [1350] описывает синтаксис информации о закрытых ключах, включая закрытый ключ и набор атрибутов, и синтаксис зашифрованных закрытых ключей. Для шифрования информации о закрытых ключах можно использовать РКС8 #5. РКС8#9 [1351] определяет выбранные типы атрибутов для расширенных сертификатов РКС8 #6, сообщений с цифровой подписью РКС8 #7 и информации о закрытых ключах РКС8 #8.
ГЛАВА 24. Примеры практических реализаций 653 РКС8#10 [1352] описывает стандартный синтаксис запросов сертификации. Сертификация включает индивидуальное имя, открытый ключ и (необязательно) набор атрибутов, которые подписаны лицом, приславшим запрос. Запросы сертификации присылаются в сертифицирующий орган, который преобразует запрос либо в сертификат открытого ключа Х.509, либо в сертификат РКС8 #6. РКС8#11 [1353], Стандарт АР1 для криптографических устройств (СгурЮ^гарЫс Токеп АР1 81ап(1аг(1), определяет интерфейс программирования, называемый «Сгур1окл», для портативных криптографических устройств всех типов. Сгур1о1о представляет собой обобщенную логическую модель, позволяющую приложениям выполнять криптографические операции на портативных устройствах, не зная деталей используемой технологии. Этот стандарт также определяет профили приложения: наборы алгоритмов, которые может поддерживать устройство. РКС8 #12 [1354] описывает синтаксис хранения в программном обеспечении открытых ключей пользователей, защищенных закрытых ключей, сертификатов и другой связанной криптографической информации. Целью этого является стандартизация единого файла ключей, используемого многими приложениями. Эти стандарты обширны, но не всеобъемлющи. Многие вопросы остались за пределами этих стандартов: проблема присвоения имен, не криптографические вопросы, касающиеся сертификации, длины ключей и условия для различных параметров. РКС8 призваны обеспечить формат передачи данных, основанной на криптографии с открытым ключом, и инфраструктуру, поддерживающую такую передачу. 24.15. Универсальная система электронных платежей ЫЕР5 Универсальная система электронных платежей ИЕР8 (11шуег8а1 Е1ес1готс Раутеп! 8у$1ет) представляет собой банковское приложение, использующее смарт-карты, первоначально разработанное для сельской Южной Африки, но позднее принятое основными банковскими группами этой страны. К началу 1995 года в ЮАР было выпущено около 2 миллионов карточек. Эта система также принята в Намибии, и развертывается, по крайней мере, одним российским банком. Система позволяет использовать безопасные дебитные карточки, подходящие для регионов, в которых плохая телефонная сеть делает невозможной онлайновую проверку. Карточки есть и у покупателей, и у продавцов, покупатели могут использовать свои карточки для перевода денег продавцам. Продавец может воспользоваться своей карточкой, чтобы позвонить в банк и поместить деньги на свой банковский счет, покупатель может воспользоваться своей карточкой, чтобы позвонить в банк и перевести деньги на свою карточку. В этой системе не было намерений заботиться об анонимности, нужно было обеспечить только защиту от мошенничества. Вот как выглядит протокол связи между покупателем Алисой и продавцом Бобом. (В действительности, Алиса и Боб просто вставляют свои карточки в машину и ожидают выполнения транзакции). Когда Алиса впервые получает свою карточку, она получает и пару ключей, К\ и К2, банк вычисляет их, используя ее имя и некоторую секретную функцию. Только в карточки продавцов встроены секретные средства, необходимые для вычисления ключей покупателей.
654 Прикладная криптография 1) Алиса посылает Бобу свое имя, А, его имя, В, и случайное число КА, шифруя их с помощью ЭЕ8: сначала ключом К2, затем Кх. Она также посылает свое имя открытым текстом. Л,ЕК] (ЕКг(А,В,Кл)) 2) Боб вычисляет Кх и К2 по имени Алисы. Он расшифровывает сообщение, убеждается, что А и В правильны, затем зашифровывает незашифрованную вторую половину сообщения Алисы ключом К2. Ек2 ? В, К а) Боб не посылает это сообщение Алисе; 56 битов шифртекста становятся ключом К3. Боб посылает Алисе свое имя, ее имя и случайное число, Яв, шифруя их с помощью БЕ8: сначала ключом К3, затем Кх. ЕКх (^3 (В, А, Кв)) 3) Алиса аналогичным образом вычисляет К3 и расшифровывает сообщение Боба, убеждаясь, что А и В правильны, затем шифрует незашифрованное сообщение Боба ключом К3. Ек3 (В9 А, Кв) Алиса не посылает это сообщение Бобу; 56 битов шифртекста становятся ключом К4. Затем Алиса посылает Бобу свое имя, его имя и цифровой чек С. Этот цифровой чек содержит имена отправителя и получателя, дату, контрольное число, сумму и два кода МАС. Все это шифруется ЭЕ8: сначала ключом К4, затем Кх. Один из МАС может быть проверен банком Алисы, а второй может быть проверен только расчетно-кассовым центром. Алиса уменьшает свой счет на соответствующее значение. ЕКх (ЕК4(В,А,С)) 4) Боб аналогичным образом вычисляет К4. При условии, что все имена совпадают, и чек имеет корректную форму, он принимает платеж. Весьма удачным нововведением в этом протоколе является зависимость каждого сообщения от предыдущего. Каждое сообщение выступает удостоверением всех предыдущих сообщений. Это означает, что повторно передать старое сообщение никому не удастся, получатель просто никогда не расшифрует его. Мне нравится эта идея, и я уверен, что она получит широкое применение, как только станет широко известна. Другой разумной вещью в этом протоколе - навязывание правильной реализации. Если разработчик приложения неправильно реализует протокол, он просто не будет работать. Обе карточки сохраняют записи каждой транзакции. Когда карточки рано или поздно установят онлайновое подсоединение к банку (продавец - положить деньги на счет, а покупатель - снять со счета), банк извлечет эти записи для последующего контроля. Аппаратура изготавливается устойчивой к взлому, чтобы помешать любому из участников испортить данные. Алиса не сможет изменить значение своей карточки. Подробная запись обеспечивает данные для обнаружения и запрещения мошеннических
ГЛАВА 24. Примеры практических реализаций 655 транзакций. В карточках используются универсальные секреты - ключи МАС в карточках покупателей, функции для преобразования имен пользователей в К] и К2 в карточках продавцов - но считается, что понять, как они работают, достаточно трудно. Эта схема, конечно же, несовершенна, но она безопаснее бумажных чеков и обычных дебитных карточек. Угроза мошенничества исходит не от военных противников, а от покупателей и продавцов. Система 11ЕР8 предоставляет защиту от таких злоупо¬ треблений. Обмен сообщения является хорошим примером устойчивого протокола: в каждом сообщении присутствуют имена обеих сторон, включая информацию, уникальную для сообщения, каждое сообщение явным образом зависит от всех предыдущих. 24.16. Микросхема СЫРРЕК СНррег (известная также как МУК-78Т) - это разработанная в АНБ устойчивая к взлому микросхема, предназначенная для шифрования переговоров голосом. Это одна из двух схем, реализующих правительственный стандарт шифрования с депонированием ключей (Е$сго\уес1 ЕпсгурНоп 81апс1агс1, ЕЕ8) [1153]. Компания УБ81 ТесНпо1о§1е5,1пс. изготовила микросхему, а Муко1гопх, 1пс. запрограммировала ее. Изначально микросхемы СНррег предназначались для использования в безопасном телефоне модели 3600 компании АТ&Т (см. раздел 24.18). Микросхема реализует алгоритм шифрования 81ар]аск (см. раздел 13.12), представляющий собой разработанный агентством АНБ секретный алгоритм с шифрованием секретным ключом, работающий только в режиме ОРВ. Самым спорным свойством микросхемы СНррег, так же как и ЕЕ8 в целом, является использование протокола депонирования ключей (см. раздел 4.14). У каждой микро¬ схемы есть специальный, не нужный для сообщений, ключ. Этот ключ используется при шифровании копии ключа сообщений для каждого пользователя. В ходе процесса синхронизации передающая микросхема СНррег генерирует и посылает принимающей микросхеме СНррег поле доступа для выполнения закона (Ьа\у ЕпГогсетеп* Ассезз ИеШ, БЕАЕ). Поле БЕАР содержит копию текущего сеансового ключа, зашифрованного специальным ключом, называемым ключом модуля (ипП кеу). Это позволяет правительственным агентам по прослушиванию восстановить сеансовый ключ и получить открытый текст разговора. По словам директора N181 [812]: Предусматривается, что система «депонирования ключей» обеспечит исполь¬ зование микросхемы СНррег для защиты законопослушных американцев. В каждом устройстве, содержащем микросхему, будет два уникальных «ключа», два числа, которые понадобятся уполномоченным правительственным органам для дешиф¬ рования сообщений, зашифрованных устройством. При изготовлении устройства оба ключа будут помещены порознь в двух базах данных «депонированных ключей», контролируемых Генеральным прокурором. Доступ к этим ключам будет разрешен только правительственным чиновникам с законным разрешением подключить подслушивающее устройство. Правительство также собирается поощрять широкое распространение таких телефонных аппаратов, но никто не знает, что может произойти с базами данных депонированных ключей.
656 Прикладная криптография Помимо политических аспектов, внимание заслуживает и внутренняя структура поля ЬЕАР [812, 1154, 1594, 459, 107, 462]. ЬЕАР - это строка, включающая достаточно информации, чтобы для обеспечения выполнения закона можно было раскрыть сеансовый ключ Кх при условии, что два депозитных учреждения (ехсгом а§епсу) будут действовать сообща. ЬЕАР содержит 32-битовый идентификатор модуля {У, уникальный для каждой микросхемы СНррег. Оно также содержит текущий 80-битовый сеансовый ключ, зашифрованный уникальным ключом модуля Ки, и 16-битовую контрольную сумму С, называемую идентификатором депонирования. Контрольная сумма представ¬ ляет собой функцию сеансового ключа, вектора ВИ и возможно другой информации. Указанные три поля шифруются фиксированным общим ключом Кр, общим для всех взаимодействующих микросхем СНррег. Общий ключ, используемые режимы шифрования, детали контрольной суммы и точная структура ЬЕАР засекречены. Возможно, это поле похоже на такое: ЕКр(У,ЕКи(К8,С)) Ки вводится в микросхемы СНррег при изготовлении. Этот ключ затем разделяется (см. раздел 3.6) и хранится в двух базах данных депонированных ключей, охраняемых двумя различными учреждениями. Чтобы Ева могла извлечь К4. из ЬЕАР, она должна сначала расшифровать ЬЕАР ключом Кр и получить Ц. Затем она должна получить постановление суда для каждого из депозитных учреждений, каждое из которых возвращает половину Ки для данного V. Ева выполняет операцию ХОЯ над обеими половинами и получает Ки, затем она использует Ки для получения Кх> а далее с помощью Кх подслушивает разговор. Контрольная сумма должна помешать нарушению этой схемы, принимающая микросхема СНррег не может выполнить расшифрование, если контрольная сумма неправильна. Однако существует лишь 216 возможных значений контрольной суммы, и фальшивое ЬЕАР с правильной контрольной суммой, но неправильным ключом, может быть найдено примерно за 42 минуты [187]. Но это не очень поможет для разговоров, ведущихся с помощью СНррег. Так как протокол обмена ключами не является частью микросхемы СНррег, 42-минутное лобовое вскрытие должно быть выполнено после обмена ключами, оно не может быть выполнено до телефонного звонка. Такая атака может сработать при передаче факсов или при использовании карточки РоПехга (см. раздел 24.17). Считается, что микросхема СНррег в состоянии противостоять изучению ее работы, выполненному «изощренным, хорошо оснащенным противником» [1154], но, по слухам, в 8апсПа КаНопа1 ЬаЪогаЦшез успешно провели изучение одной из микросхем. Даже если это только слухи, я подозреваю, что крупнейшим мировым производителям такое изучение микросхемы вполне по силам, и срок его исполнения зависит только от ресурсов и этических норм. С этой темой связано множество вопросов о тайне личности. Многочисленные группы защиты гражданских свобод ведут активную компанию против любого механизма депонирования ключей, предоставляющего правительству право подслушивать граждан. Вся проблема в том, что, хотя эта схема никогда не проходила через Конгресс, М18Т опубликовал ЕЕ8 в качестве Р1Р8 [1153], обойдя болезненный законодательный процесс.
ГЛАВА 24. Примеры практических реализаций 657 Сейчас все выглядит так, как если бы ЕЕ8 тихо и медленно умирал, но стандарты способны продолжать свою ползучую деятельность. В табл. 24.2 перечислены различные организации, участвующие в этой программе. Как насчет идеи, чтобы оба депозитных учреждения относились только к исполнительной ветви власти? Что вы скажете об депозитных учреждениях, которые по сути ничего не знают о заявках на подслушивание и могут только слепо одобрять их? А как насчет идеи о принятии правительством секретного алгоритма в качестве коммерческого стандарта? Таблица 24.2. Организации, участвующие в ЕЕ8. Министерство юстиции Спонсор системы, владелец общего ключа №8Т Руководство программой, хранитель депонированных ключей ФБР Пользователь-дешифровальщик, владелец общего ключа Министерство финансов Хранитель депонированных ключей АНБ Разработчик программы В любом случае, использование СНррег породит немало проблем при обращении в суд. Не забывайте, СНррег работает только в режиме ОРВ. Что бы вам иное не говорили, этот режим не обеспечивает целостности или проверки подлинности. Предположим, что Алиса предстала перед судом, и частью доказательств является телефонный разговор, зашифрованный микросхемой СНррег. Алиса утверждает, что она никогда не звонила, и голос - не ее. Алгоритм сжатия речи настолько плох, что опознать голос Алисы трудно, но обвинение утверждает, что, так как расшифровать разговор можно было только с помощью депонированного Алисой ключа, этот звонок был сделан с ее телефона. Алиса заявляет, что разговор был подделан в соответствии с [984, 1339] следующим образом: даны шифртекст и открытый текст; объединив их с помощью ХОК, можно получить гамму. Затем эту гамму можно сложить с помощью ХОК с абсолютно другим открытым текстом, получая фальшивый шифртекст, который затем может быть преобразован в фальшивый открытый текст, если его подать на вход микросхемы с режиме расшифровки. Правдив он или нет, этот довод может легко посеять сомнение в жюри присяжных, которые не сочтут телефонный разговор доказательством. Другая атака, называемая $яиееге (Сжатие), позволяет Алисе выдать себя за Боба. Вот как это происходит [575]: Алиса звонит Бобу, используя СНррег. Она сохраняет копию его поля ЬЕАР вместе с сеансовым ключом. Затем она звонит Кэрол (про которую известно, что ее подслушивают). При установке ключа Алиса делает сеансовый ключ идентичным тому, который она использовала для разговора с Бобом. Для этого потребуется взломать телефон, но это нетрудно. Затем вместо того, чтобы послать свое поле ЬЕАР, она посылает ЬЕАР Боба. Это правильное ЬЕАР, поэтому телефон Кэрол ничего не заметит. Теперь она может говорить Кэрол все, что захочет - когда полиция расшифрует ЬЕАР, она обнаружит, что оно принадлежит Бобу. Даже если Алисе не удастся выдать себя за Боба, ему придется доказывать свою невиновность в суде, что вполне может подорвать доверие к подобной схеме. Органам охраны правопорядка Соединенных Штатов не следует тратить свое время, занимаясь в уголовных расследованиях сбором информации, которую нельзя
658 Прикладная криптография использовать в суде. Даже если депонирование ключей и являлось бы неплохой идеей. СНррег - это не лучший способ ее реализации. 24.17. Микросхема СарзЩпе СарзНте (известный также как МУК-80) - это другая, разработанная АНБ, СБИС, реализующая стандарт шифрования с депонированием ключей правительства США [1153]. Микросхема СарзЬпе реализует следующие функции [1155, 462]: Алгоритм 8к1р]аск в любом из четырех основных режимов: ЕСВ, СВС, СРВ и ОРВ. Алгоритм обмена ключами КЕА (Кеу ЕхсНап^е А1§опЙип) на базе открытых ключей, предположительно Диффи-Хеллмана2. Алгоритм цифровой подписи Э8А. Алгоритм хэширования 8НА. Алгоритм возведения в степень для общего назначения. Генератор случайных чисел с использованием истинного источника шума. Сарз*опе обеспечивает криптографические возможности, необходимые для безопасной электронной торговли и других компьютерных приложений. Первым применением СарзШпе является карточка РСМС1А, названная РоЛегга. (Сначала она называлась Теззега, пока на это не пожаловалась компания Теззега, 1пс.). Агентство АНБ предусматривало удлинение контрольной суммы ЬЕАР в версиях микросхемы СарзШпе, производимых для карточек РоЛегга, для того, чтобы помешать ранее рассмотренной атаке на нее. Вместо этого была добавлена возможность перезапуска карточки после получения 10 неправильных полей ЬЕАР. Меня это не впечатлило - время поиска правильного поля ЬЕАР увеличилось только на 10%. до 46 минут. 24.18. Безопасный телефон АТ&Т модели 3600 Безопасный телефон компании АТ&Т (Те!ерЬопе 8есигйу Эеуюе, Т80) - это телефон с микросхемой СНррег. Фактически существуют четыре модели Т80. Одна модель содержит микросхему СНррег, другая использует пригодный для экспорта собственный алгоритм шифрования АТ&Т, третья - собственный алгоритм для использования внутри страны плюс экспортируемый алгоритм, а четвертая модель включает микросхему СНррег плюс внутренний и экспортируемый алгоритмы. При каждом телефонном звонке Т8Э используют различные сеансовые ключи. Пара телефонов Т8Э генерирует сеансовый ключ с помощью схемы обмена ключами Диффи- Хеллмана, независящей от микросхемы СНррег. Так как схема Диффи-Хеллмана не включает проверку подлинности, Т8Э использует два описанных ниже метода для предотвращения атаки «человек посередине». 2 Этот алгоритм в настоящее время также рассекречен, как и 8клр]аск. - Прим. ред.
ГЛАВА 24. Примеры практических реализаций 659 Первым методом является использование экрана. Телефон Т80 хэширует сеансовый ключ и выводит хэш-значение на маленький экран в виде четырех шестнадцатеричных цифр. Собеседники проверяют, что на их экраны выведены одинаковые цифры. Качество голоса достаточно хорошее, чтобы они могли узнать друг друга по голосу. Ева все еще может вскрыть эту схему. Вообразите себе, что ей удалось подключиться к линии между Бобом и Алисой. Ева использует телефон Т80 на линии связи с Алисой и модифицированный телефон Т80 на линии связи с Бобом. Посередине она связывает два телефонных звонка. Алиса пытается засекретить разговор. Она обычным образом генерирует ключ, но общается с Евой, выдающей себя за Боба. Ева раскрывает ключ, и, с помощью модифицированного телефона Т80, делает так, чтобы ключ, который она сгенерировала для Боба, имел такое же хэш-значение. Это вскрытие может показаться не очень вероятным, но для его предотвращения в Т80 используется вариант протокола взаимоблокировки. Т80 генерирует случайные числа, используя источник шума и усилитель хаоса с цифровой обратной связью. Он генерирует битовый поток, который пропускается через постотбеливающий фильтр на базе цифрового процессора. Несмотря на все это, в справочном руководстве Т80 вопросы безопасности не упоминаются вообще. Фактически, там написано только следующее [70]: Компания АТ&Т не гарантирует, что телефон Т8й защитит от криптоанали¬ тических атак на зашифрованную передачу, предпринятую правительственным учреждением, его агентами или третьей стороной. Более того, АТ&Т не гаран¬ тирует, что Т8Б защитит от атак на передаваемую информацию с помощью методов, обходящих шифрование.
ГЛАВА 25. Политические вопросы 25.1. Агентство Национальной Безопасности Аббревиатура АНБ означает Агентство Национальной Безопасности (Иа1;юпа1 Зесигйу А§епсу, Ы8А), когда-то она расшифровывалось шутниками как «N0 8исЬ А^епсу» (нет такого агентства) или «Ыеуег 8ау Апу*Ы炙 (никогда ничего не скажу). Однако теперь агентство превратилось в более открытую организацию. Это официальный правительственный орган США по вопросам безопасности. АНБ создано в 1952 году президентом Гарри Трумэном и входило в состав Министерства обороны. Долгие годы даже сам факт его существования хранился в тайне. АНБ предназначалось для ведения электронной разведки, в его задачи входило подслушивать и декодировать все иностранные линии связи в интересах Соединенных Штатов. Следующие строки взяты из оригинального положения о АНБ, подписанного в 1952 году президентом Трумэном и засекреченного на долгие годы [1535]: В задачи СОМ1ИТ Агентства Национальной Безопасности (АНБ) должны входить эффективные организация и управление разведывательной деятельностью Соединенных Штатов в области телекоммуникаций, проводимой против иностранных правительств, с целью обеспечения целостной и действенной политики и соответствующих мер. Используемый в этой директиве термин «соттипюаИоп ШеШдепсе» (электронная разведка) или «СОМ/ИТ» обозначает все действия и методы, используемые для перехвата телекоммуникаций, кроме зарубежной прессы и радиовещания, и получения информации, предназначенной для приема другим получателем, но исключает цензуру, а также подготовку и распространение полученной разведывательной информации. Особый характер деятельности СОМ1ИТ требует, чтобы она во всех отношениях велась отдельно от другой или общей разведывательной деятельности. Приказы, директивы, указания или рекомендации любого органа исполнительной власти, касающиеся сбора, получения, защиты, обработки, распространения или использования разведывательной информации неприменимы в отношении действий СОМ1ЫТ, если это не оговорено особо, и документы не должны издаваться без разрешения компетентного представителя агентства, входящего в правительство. Другие директивы Национального совета безопасности директору ЦРУ и связанные директивы, изданные директором ЦРУ, не должны применяться к действиям СОМ1ЫТ, если это не будет специальная директива Национального совета безопасности, касающаяся СОМШТ. АНБ ведет исследования в области криптологии, занимаясь как разработкой надежных алгоритмов для защиты коммуникаций Соединенных Штатов, так и криптоаналитических методов прослушивания каналов связи за пределами США. Известно, что АНБ - крупнейший в мире работодатель для математиков. Оно также крупнейший в мире покупатель компьютерной аппаратуры. Возможно, криптографический опыт АНБ на много лет опередил открытую науку (в части алгоритмов, но едва ли в части протоколов). Несомненно, АНБ может взломать многие современные криптосистемы. Однако по соображениям национальной безопасности почти вся информация о АНБ - даже ее бюджет - засекречена. (По слухам, бюджет
662 Прикладная криптография Агентства составляет около 13 миллиардов долларов в год - включая военное финансирование проектов АНБ и оплату персонала - говорят, в нем работает 16 тысяч человек). АНБ использует свое влияние для ограничения публичного доступа к крипто¬ графическим средствам и противодействия использованию потенциальным противникам настолько мощных методов шифрования, что АНБ не сумеет их взломать. Джеймс Мэсси (Затез Маззеу) анализирует эту борьбу между научными и военными исследованиями в криптографии [1007]: Если полагать, что криптология относится к прерогативам правительства, то, разумеется, большая часть криптологических исследований должна вестись за закрытыми дверями. Вне всякого сомнения, число людей, занятых сегодня секретными криптологическими исследованиями, намного больше числа людей, работающих в открытой криптологии. Открытые криптологические исследования широко ведутся только последние 10 лет. Между этими двумя сообществами исследователей были и будут конфликты. Открытые исследования представляют собой обычный поиск знаний, для которого жизненно важен открытый обмен идеями с помощью конференций, презентаций и публикаций в научных журналах. Но может ли правительственная организация, ответственная за вскрытие шифров других государств, приветствовать публикацию шифра, который нельзя взломать? Может ли исследователь с чистой совестью опубликовать шифр, который подорвет всю эффективность правительственных взломщиков кодов? Можно возразить, что публикация доказуемо надежного шифра заставит все правительства вести себя подобно «джентльменам» Стимсона, но необходимо помнить, что открытые криптографические исследования полны политических и этических мотивов гораздо более серьезных, чем во многих других областях науки. Удивляться надо не тому, что правительственные организации конфликтуют на почве криптологии с независимыми исследователями, а тому, что эти конфликты (по крайней мере, те, о которых нам известно) так незначительны и так сглажены. Джеймс Бэмфорд (Затез ВатГогб) написал увлекательную книгу про АНБ: Тке Ринк Ра1асе («Дворец загадок») [79], недавно доработанную совместно с Вэйной Медсен (\Уаупе Мабзеп) [80]. Программа ССЕР Коммерческая программа поддержки компьютерной безопасности ССЕР (Сотшегс1а1 СОМ8ЕС Епбогзетеп!; Рго^гат), кодовое имя Оуейаке - это инициатива АНБ 1984 года, призванная облегчить разработку компьютеров и средств связи с встроенными криптографическими средствами [85, 1165]. Обычно всю разработку таких изделий оплачивали военные ведомства, что обходилось им недешево. АНБ посчитало, что если компании могут продавать аппаратуру и армии, и корпорациям, даже иностранным, это позволит уменьшить расходы к всеобщей выгоде. От АНБ более не требовалось бы проверять соответствие оборудования с требованиями Федерального стандарта 102.7, а затем ССЕР предоставила бы одобренное правительством криптографическое оборудование [419]. АНБ разработало ряд криптографических модулей различного назначения. В этих модулях для различных приложений используются различные алгоритмы, и производители получают возможность извлечь один модуль и вставить другой, в
ГЛАВА 25. Политические вопросы 663 зависимости от требований клиента. Существуют модули для военного использования (Тип I), модули для «несекретного, но важного» правительственного использования (Тип II), модули для корпоративного использования (Тип III) и экспортные модули (Тип IV). Различные модули, их применение и названия приведены в табл. 25.1. Таблица 25.1. Модули ССЕР Применение Тип I Тип II Речевая связь/низкоскоростная передача данных \Ушз1ег Еб^езЬо! Компьютер ТерасЬе Ви11е!ргооГ Высокоскоростная передача данных Рогезее ВгизЬз1;гоке Следующее поколение Соип1;егз1§п I Соип1;егз1§п II Эта программа все еще действует, но не вызывает энтузиазма ни у кого, кроме правительства. Все модули защищены от вскрытия, все алгоритмы засекречены, а пользователи должны получать ключи в АНБ. Корпорации никогда не верили в реальность идеи использования секретных алгоритмов, навязанных правительством. Казалось бы, АНБ получило хороший урок, чтобы больше не докучать применением СНррег, 8к1р]аск и микросхем шифрования с депонированием ключей. 25.2. Национальный центр компьютерной безопасности ЫСЗС Национальный центр компьютерной безопасности (МаНопа1 Сотри1ег 8есш% СегЦег- 14С8С), отделение АНБ, отвечает за доверенную правительственную компьютерную программу. В настоящее время центр проводит оценку продуктов компьютерной защиты (программных и аппаратных), спонсирует исследования и публикует их результаты, разрабатывает технические руководства и обеспечивает общую поддержку и обучение. ИС8С издает скандально известную «Оранжевую книгу» [465]. Ее подлинное название - В ер аг (теп! о/ Ведете Тгш(ес1 СотрШег $>уз(ет Еуа1иаИоп СгИепа (Критерии оценки доверенных компьютерных систем Министерства обороны США), но его трудно запомнить, а к тому же у книги оранжевая обложка. «Оранжевая книга» пытается определить требования к безопасности, предоставляет производителям компьютеров объективный способ оценки надежности их систем и указывает им, что необходимо встраивать в защищенные продукты. Книга посвящена компьютерной безопасности, о криптографии в ней, по сути, говорится не слишком много. «Оранжевая книга» определяет четыре обширные категории защиты. Кроме того, в ней определяются классы защиты в пределах некоторых из этих категорий. Они сведены в табл. 25.2.
664 Прикладная криптография Таблица 25.2. Классификация защиты в терминах «Оранжевой книги» Э: Минимальная С: Дискреционная защита С1: Дискреционная защита С2: Управление доступом В: Мандатная защита В1: Защита с применением меток безопасности В2: Структурированная защита ВЗ: Домены безопасности А: Верифицированная защита А1: Верифицированная разработка Иногда производители говорят «мы обеспечиваем безопасность С2». Они имеют в виду классификацию «Оранжевой книги». За более подробной информацией обратитесь к [1365]. Модель компьютерной безопасности, используемая в этих критериях, называется моделью Белла-Лападулы [100, 101, 102, 103]. N080 издал целую серию книг по компьютерной безопасности, иногда называемую «радужной серией» (все обложки имеют различные цвета). Например, Тгиз1ей ИеЪногк 1п1егрге1аИоп о/ 1ке Тгиз1ес1 СотрШег БуШет Еуа1иаИоп СгИепа [1146] (Интерпретация критериев оценки доверенных компьютерных систем в отношении доверенных сетей), иногда называемая «Красной книгой», толкует положения «Оранжевой книги» по отношению к сетям и сетевому оборудованию. ТгиМес! ЭаШЬазе Мапа%етеп1 БуМет ШегргеШюп о/1Не Тгш!ес1 СотрШег БуМет Е\а1иайоп СгИепа [1147] (Интерпретация критериев оценки доверенных компьютерных систем в отношении доверенных систем управления базами данных) - я даже не пытаюсь описать цвет обложки - делает то же самое для баз данных. Сегодня существует свыше 30 таких книг, цвет обложек некоторых из них отвратителен. За полным комплектом «радужных» книг обращайтесь по адресу 01гес1:ог, №1юпа1 8есип1у А^епсу, ШР08ЕС А\уагепезз, АЛепИоп: С81, 9800 8ауа§е Коаб, Рог1 Сеог§е О. Меабе, МЭ 20755-6000; (410) 766-8729. Только не говорите им, что вас послал я. 25.3. Национальный институт стандартов и технологии N151 Национальный институт стандартов и технологии N181 (Ыа1;юпа1 ГпзбШе оГ 81апбагбз апб ТесЬпо1о§у)- подразделение Министерства торговли США. Ранее он назывался Национальным бюро стандартов (Набопа1 Вигеаи оГ 81апбагбз, N138) и изменил имя в 1988 году. Средствами своей Лаборатории компьютерных систем (СотрЩег 8уз1етз ЬаЪога1огу, С8Ь) М8Т выпускал открытые стандарты взаимодействия, которые, как он надеялся, ускорят развитие отраслей промышленности, связанные с компьютерами. К настоящему времени Ш8Т выпустил стандарты и руководства, которые, как он полагает, будут приняты во всех компьютерных системах Соединенных Штатов.
ГЛАВА 25. Политические вопросы 665 Официальные стандарты публикуются в выпусках Р1Р8 (Ребега1 1пГогта1:юп Ргосеззт§ 81апс1агс1з -Федеральные стандарты обработки информации). Если вам нужна копия любого Р1Р8 (или других изданий Ы18Т), свяжитесь с Национальной службой технической информации Министерства торговли США по адресу: Ыабопа1 ТесЬшса11пГогтабоп 8етсе (N118), 118. ОераНтеп* оГ Сотшегсе, 5285 Рог! Коуа1 Яоаб, 8рпп§Г1еЫ, УА 22161; (703) 487-4650, или посетите узел §орЬег://сзгс.псз1.тз1.§оу. Когда в 1987 году Конгресс принял Акт о компьютерной безопасности (СотрЩег Зесигку Ас1), М8Т был уполномочен определять стандарты, обеспечивающие безопасность важной, но не секретной информации в правительственных компьютерных системах. (Секретная информация и данные Предупреждающей поправки входят в юрисдикцию АНБ). Акт разрешает N181 в ходе оценки предлагаемых технических стандартов сотрудничать с другими правительственными организациями и частными предприятиями. М8Т издает стандарты криптографических функций. Правительственные органы США обязаны использовать их для работы с важной, но несекретной информацией. Нередко этим стандартам следует и частный сектор. М8Т выпустил стандарты для алгоритмов ОЕ8, Э88, 8Н8 и ЕЕ8. Все эти алгоритмы разработаны с некоторой помощью АНБ, начиная от анализа ОЕ8 до проектирования И88, 8Н8 и алгоритма 8к1р]аск в ЕЕ8. Некоторые критикуют №8Т за то, что АНБ в значительной степени может контролировать эти стандарты, хотя интересы АНБ могут не совпадать с интересами Ш8Т. Неясно, как действия АНБ могут влиять на проектирование и разработку алгоритмов. Однако в силу ограниченности численности персонала, бюджета и ресурсов >П8Т, привлечение АНБ представляется разумным. АНБ располагает большими возможностями, включая лучшие в мире компьютерные средства. Официальный «Меморандум о взаимопонимании» (Метогапбит оГ 11пбегз1:ап(1т§- МОИ) между двумя организациями гласит: МЕМОРАНДУМ О ВЗАИМОПОНИМАНИИ МЕЖДУ ДИРЕКТОРОМ НАЦИОНАЛЬНОГО ИНСТИТУТА СТАНДАРТОВ И ТЕХНОЛОГИЙ И ДИРЕКТОРОМ АГЕНТСТВА НАЦИОНАЛЬНОЙ БЕЗОПАСНОСТИ ОТНОСИТЕЛЬНО ПРИМЕНЕНИЯ ПУБЛИЧНОГО ЗАКОНА 100-235 Признавая, что: А. В соответствии с разделом 2 Акта о компьютерной безопасности 1987 года (Публичный закон 100-235) (далее - Акт), на Национальный институт стандартов и технологии (М8Т) как часть Федерального правительства возлагается ответственность за: 1. Разработку технических, административных и физических стандартов, а также стандартов управления и руководств по созданию рентабельных систем безопасности и защиты уязвимой информации Федеральных компьютерных систем, определенных в Акте; и 2. Разработку руководств по технической безопасности соответствующих компьютерных систем Агентства Национальной Безопасности (АНБ).
666 Прикладная криптография B. В соответствии с разделом 3 Акта, М8Т обязан работать в тесном взаимодействии с другими организациями, включая АНБ, обеспечивая: 3. Максимальное использование всех существующих и планируемых программ, материалов, исследований и отчетов, относящихся к безопасности и защите компьютерных систем во избежание ненужного и дорогостоящего дублирования работ; и 4. Стандарты, разработанные Т418Т в соответствии с Актом, должны быть в максимально возможной степени согласованы и совместимы со стандартами и процедурами, разработанными для защиты секретной информации в Федеральных компьютерных системах. C. В соответствии с Актом в обязанности Министра торговли, которые он перепоручает 1Ч18Т, входит назначение членов Консультативного комитета по безопасности и защите компьютерных систем (Сотри1ег 8уз1ет 8есигйу апб Рпуасу АсМзогу Воагб), в числе которых хотя бы один должен представлять АНБ. Следовательно, для обеспечения целей данного М011, Директор N181 и Директор АНБ настоящим признают следующее: I. N181 обязуется: 1. Назначать в Консультативный комитет по безопасности и защите компьютерных систем по крайней мере одного представителя, замещающего Директора АНБ. 2. Опираться на разработанные АНБ руководства по технической безопасности компьютерных систем в той степени, в которой №8Т определяет, что эти руководства отвечают требованиям, предъявляемым к защите важной информации в Федеральных компьютерных системах. 3. Признавать сертифицированный АНБ рейтинг доверенных систем в соответствии с Программой критериев оценки безопасности доверенных компьютеров без дополнительной экспертизы. 4. Разрабатывать стандарты безопасности телекоммуникационных каналов для защиты важных несекретных компьютерных данных, максимально опираясь на результаты экспертизы и разработки Агентства Национальной Безопасности, чтобы выполнять эти обязанности своевременно и эффективно. 5. По возможности избегать дублирования, разграничив совместные работы с АНБ для получения помощи АНБ. 6. Запрашивать помощь АНБ по всем вопросам, связанным с криптографическими алгоритмами и методами, включая исследования, оценку разработки, одобрение, но не ограничиваясь этими действиями. II. АНБ обязуется: 1. Обеспечивать №8Т техническими руководствами по доверенным технологиям, безопасности систем телекоммуникаций и идентификации личности, которые могут быть использованы в рентабельных системах защиты важных компьютерных данных.
ГЛАВА 25. Политические вопросы 667 2. Проводить или инициировать исследовательские и проектные программы по доверенным технологиям, безопасности телекоммуникаций, криптографическим методам и методам идентификации личности. 3. По просьбам Ш8Т оказывать помощь в решении всех вопросов, связанных с криптографическими алгоритмами и криптографическими методами, включая исследования, оценку разработки, одобрение, но не ограничиваясь этими действиями. 4. Устанавливать стандарты и одобрять изделия для применения в безопасных системах, охватываемых 10 ШС раздел 2315 (Поправка Уорнера). 5. По требованию федеральных организаций, их подрядчиков и других финансируемых правительством субъектов проводить оценку возможности вражеской разведывательной деятельности в отношении федеральных информационных систем, а также обеспечивать техническое содействие и рекомендовать изделия, одобренные для применения в безопасных системах, чтобы противостоять такой угрозе. III. Ш8Т и АНБ обязуются: 1. Координировать свои планы по обеспечению безопасности и защищенности компьютерных систем, за которые Ы18Т и АНБ несут ответственность в соответствии с разделом 6 (Ь) Акта. 2. Обмениваться техническими стандартами и руководствами, если это необходимо для достижения целей Акта. 3. Совместно работать над достижением целей этого меморандума с максимальной эффективностью, избегая ненужного дублирования усилий. 4. Поддерживать непрерывный диалог, гарантирующий, что каждая из организаций будет находиться на одинаковом уровне современных технологий и вопросов, влияющих на безопасность автоматизированных информационных компьютерных систем. 5. Организовать техническую рабочую группу для обзора и анализа областей совместных интересов, касающихся защиты систем, обрабатывающих важную или другую несекретную информацию. Эта группа будет состоять из шести федеральных служащих, по трое от Ы18Т и АНБ, и при необходимости может быть увеличена за счет представителей других организаций. Темы работы группы могут определяться либо заместителем директора АНБ по информационной безопасности, либо заместителем директора Ш8Т, либо инициироваться самой группой с последующим одобрением заместителем директора АНБ по информационной безопасности или заместителем директора Ы18Т. В течение нескольких дней после постановки перед группой вопроса либо заместителем директора АНБ по информационной безопасности, либо заместителем директора Ш8Т группа должна представить отчет о выполнении работ по этому вопросу и, при необходимости, план дальнейшего анализа. 6. Ежегодно обмениваться планами работы по всем исследовательским и конструкторским проектам, связанными с защитой систем, обрабатывающих важную или другую несекретную информацию, включая доверенные
668 Прикладная криптография технологии, защиту целостности и доступности данных, безопасности телекоммуникаций и методов идентификации личности. Обмен информацией по проектам должен происходить ежеквартально, и обзор состояния проектов должен любой из сторон предоставляться по запросу другой стороны. 7. Проверять обзоры технической рабочей группы до опубликования всех вопросов, касающихся техники обеспечения безопасности систем, разрабатываемых для использования при защите важной информации в федеральных компьютерных системах, чтобы гарантировать совместимость раскрытия этих тем с национальной безопасностью Соединенных Штатов. Если N181 и АНБ не смогут решить подобный вопрос в течение 60 дней, любая из организаций может поднять этот вопрос перед Министром обороны и Министром торговли. Признается, что данный вопрос с помощью N80 может быть передан для решения Президенту. До окончательного решения вопроса не должны предприниматься никакие действия. 8. Определять дополнительные рабочие соглашения, заключенные между АНБ и N181, как приложения к данному МОП IV. Любая из сторон может прекратить действие этого МОИ письменным уведомлением, направленным за шесть месяцев до прекращения действия. Этот М011 считается действительным при наличии обеих подписей. /Подписано/ РЭЙМОНД. ДЖ. КАММЕР Исполнительный Директор Национального института стандартов и технологий, 24 марта 1989 года V. О. СТЬЮДМЕН Вице-адмирал ВМС США, Директор Агентства Национальной Безопасности, 23 марта 1989 года 25.4. Корпорация К5А Ра1а ЗесигКу Корпорация К8А Ба1а 8есип1у, 1пс. (К8АБ81) основана в 1982 году для разработки, лицензирования и коммерческого использования патента К8А. Компания владеет рядом коммерческих продуктов, включая отдельный пакет защиты электронной почты, и различные криптографические библиотеки (доступные в виде исходного или объектного кодов). Кроме того, К8АБ81 предлагает симметричные алгоритмы КС2 и ЯС4 (см. раздел 11.8). К8А ЬаЪога1опез, исследовательская лаборатория, связанная с Я8А081, выполняет фундаментальные криптографические исследования и оказывает консультационные услуги. При заинтересованности в лицензиях или продуктах обращайтесь к директору по продажам: ЕНгесШг оГ 8а1ез, К8А Ба1а 8есип1у, 1пс., 100 Маппе Рагкдуау, Кеб^ооб Сйу, СА 94065; (415) 595-8782; факс: (415) 595-1873.
ГЛАВА 25. Политические вопросы 669 25.5. Компания РКР Пять патентов, перечисленных в табл. 25.3, принадлежат компании РКР (РиЪНс Кеу Рагйюгз) из Саннивэйла (8иппууа1е) Калифорния, партнерству К8А081 и Саго-КаЬп, 1пс. - родительской компании СуНпк. (Я8АП81 получает 65% прибыли, а Саго-КаЬп, 1пс. - 35%). РКР утверждает, что эти патенты, в особенности 4218582, применимы к любым способам использования криптографии с открытым ключом. Таблица 25.3. Патенты компании РКР Номер патента Дата Авторы Название патента 4200770 29.4.80 НеИшап, Б1Ше, Мегк1е ОЖе-НеИтап Кеу ЕхсЬап§е 4218582 19.8.80 НеНтап, Мегк1е Мегк1е-Не11тап Кпарзаскз 4405829 20.9.83 Клуез!, 8Ьагтг, АсИетап Я8А 4424414 3.3.84 НеИтап, РоЫщ РоЬН§-Не11тап 4995082 19.2.91 8сЬпогг 8сЬпогг 81§паШге В [574], компания РКР писала: Эти патенты [4200770, 4218582, 4405829 и 4424414] охватывают все известные методы использования открытых ключей, включая версии, известные под собирательным именем Эль-Гамаля. Благодаря широкому распространению цифровых подписей Р8А в международном сообществе, РиЬНс Кеу Раг1пегз решительно одобряет их включение в стандарт цифровой подписи. Мы заверяем все заинтересованные стороны, что РиЬНс Кеу Раг1пег$ подчинится всем решениям АЛ/5/ и 1ЕЕЕ, касающимся доступности лицензирования этой технологии. В частности, для поддержки любых принимаемых стандартов, использующих цифровую подпись Р8А, настоящим РиЬНс Кеу Раг1пегз заверяет, что лицензии на использование подписей Р8А будут предоставляться в разумные сроки, на разумных условиях и без какой-либо дискриминации. Правда ли это, зависит от того, с кем вы говорите. Как правило, лицензии РКР секретны, поэтому проверить, отличается ли данная лицензия от других, невозможно. Хотя компания утверждает, что никому не отказала в выдаче лицензии, по крайней мере две компании заявили об отказе им в выдаче лицензии. РКР тщательно охраняет свои патенты, угрожая всем, кто использует криптографию с открытым ключом без лицензирования. Частично это реакция на патентное законодательство США. Если владельцу патента не удается наказать нарушителя патента, он может потерять свой патент. Было много разговоров о законности этих патентов, но дальше разговоров дело не пошло. Все законные претензии к патентам РКР были урегулированы без суда.
670 Прикладная криптография Я не собираюсь в этой книге давать юридические советы. Возможно, патент Я8А не устоит перед судом. Возможно, эти патенты не применимы ко всей криптографии с открытым ключом. (Честно говоря, я не понимаю, как они охватывают схему Эль- Гамаля или криптосистемы на эллиптических кривых). Возможно, кому-то и удастся выиграть процесс против РКР или Я8АБ81. Но не забывайте, что все корпорации с огромными юридическими отделами, например, 1ВМ, Мюгозой, ЬоШз, Арр1е, ИоуеИ, Ощйа1, Иайопа1 8етюопс1ис1:ог, АТ&Т и 8ип, приобрели лицензию на использование Я8А в своих продуктах, а не обращались в суд. Компании Воет§, 8Ье11 ОН, ЭиРоЩ, ЯауШеоп и СШсогр тоже лицензировали Я8А для своего внутреннего использования. В одном случае РКР возбудило процесс против ТЯ\У Согрогабоп по поводу использования без лицензирования алгоритма Эль-Гамаля. ТКЛУ утверждала, что ей не нужна лицензия. В июне 1992 года РКР и ТКЛУ достигли соглашения. Подробности урегулирования конфликта неизвестны, но среди них - согласие ТКЛУ получить лицензию на патенты. Это не предвещает ничего хорошего. ТКЛУ могла позволить себе хороших адвокатов. Я могу только предположить, что, если бы ТКЛУ была уверена, что сможет выиграть процесс, не потратив бешеных денег, она не отказалась бы от борьбы. Тем не менее, у РКР есть внутренние проблемы. В июне 1994 года Саго-КаЬп подала в суд на Я8АБ81, заявив, среди всего прочего, что патент Я8А незаконен и не может оспариваться в суде [401]. Оба партнера попытались разорвать свое партнерство. Так законны патенты или нет? Нужно ли пользователям получать лицензию у Саго-КаЬп, чтобы пользоваться алгоритмом Я8А? Кому перейдет патент Шнорра? Возможно, это дело будет урегулировано к моменту выхода настоящей книги. Патенты действительны в течение лишь 17 лет и не могут возобновляться. 29 апреля 1997 года алгоритм обмена ключами Диффи-Хеллмана (а также алгоритм Эль-Гамаля) станут общедоступными. 20 сентября 2000 года станет общедоступным и алгоритм К8А. Пометьте на своих календарях. 25.6. Международная ассоциация криптологических исследований 1АСК Международная ассоциация криптологических исследований 1АСЯ (Метабопа! Аззощабоп йг Сгур1;о1о§1с ЯезеагсЬ) - это всемирная криптографическая исследовательская организация. Ее цель состоит в развитии теории и практики криптологии и связанных отраслей. Членом организации может стать кто угодно. Ассоциация выступает спонсором двух ежегодных конференций, СгурЯ) (проводится в августе в Санта-Барбаре) и Еигосгур! (проводится в Европе), и ежеквартально издает Тке А оигпа1 о/Сгур(о1о%у и 1АСК Иеш1еПет. Адрес штаб-квартиры 1АСЯ меняется вместе со сменой президента. Текущий адрес: 1АСЯ Визтезз ОЯ1се, АагЬиз 8с1епсе Рагк, Сиз1ау Мебз Уе] 10, ОК-8000 АагЬиз С, Оептагк. 25.7. Консорциум К1РЕ Программа исследования и развития передовых средств связи в Европе ЯАСЕ (ЯезеагсЬ апб Беуе1ортеп1 т Абуапсеб Соттишсабоп ТесЬпо1о§1ез т Еигоре) инициирована
ГЛАВА 25. Политические вопросы 671 Европейским сообществом для поддержки предварительной проработки телекоммуникационных стандартов и технологий, поддерживающих Интегрированные высокоскоростные средства связи (1п1е§га1еб ВгоабЬапб Сотшишсабоп - 1ВС). В качестве части этой работы КАСЕ учредило консорциум по Оценке примитивов целостности КАСЕ (КАСЕ 1п1е§п1у РптШуез Еуа1иабоп - К1РЕ), чтобы собрать в одно целое пакет технологий, соответствующих возможным требованиям к безопасности 1ВС. Консорциум К1РЕ образован шестью ведущими европейскими криптографическими исследовательскими группами: СеШег Гог Майютайсз апб СотрЩег 8шепсе, Атз1;егс1ат; 81етеп5 АО; РЫНрз Сгур1о ВУ; Коуа1 РТТ №с1ег1апс1 Т4У, РТТ КезеагсЬ; КаЙюНеке 11п1уезкек Ьецуеп и АагЬиз 11туегзке1. После объявлений о приеме алгоритмов в 1989 и 1991 годах [1564], подачи 32 заявок, присланных со всего мира, и завершения проекта оценки длительностью 350 человеко-месяцев, консорциум опубликовал отчет ШРЕ 1п(е§гИу РгтИмез [1305, 1332]. Отчет содержит введение, несколько основных концепций целостности и ее примитивы: МЭС-4 (см. раздел 18.11), К1РЕ-1УГО (см. раздел 18.8), К1РЕ-МАО (см. раздел 18.14) 1ВС-НА8Н, 8КГО (см. раздел 3.2), К8А, СОМ8ЕТ (см. раздел 16.1) и генерацию ключей К8А. 25.8. Проект САРЕ Проект САРЕ (Сопс1Шопа1 Ассезз Гог Еигоре, условный доступ для Европы) - это проект в рамках программы Е8РК1Т Европейского сообщества [204, 205]. Работа началась в декабре 1992 года и по плану должна завершиться в конце 1995 года. Образованный консорциум состоит из групп социальных исследований и исследований рынка (Сагсруаге, 1пзЕШ1: Гиг 8о21а1ГогзсЬип§), производителей программного обеспечения и аппаратуры (ОщЮазЬ, Сешр1из, 1п§ешсо, 81етепз), а также криптографов (С\У1 Атз1ег(1ат, РТТ КезеагсЬ 1Яе1Ьег1апс15, 8РЕТ, 8т1еГ Ое1аЬ ТгопсШеип, университеты Аргуса (АгЬиз), Хильдесхейма (ШЫезЬеип) и Лейвена (Ьеиуеп)). Цель проекта - разработка системы условного доступа, особенно для систем электронных платежей. Платежные системы должны обеспечивать защиту каждого пользователя и как можно меньше опираться на доверие - надежность не должна зависеть от устойчивости устройств к взлому. Основным устройством САРЕ служит электронный бумажник: маленький компьютер, напоминающий карманный калькулятор. В нем есть батарейка, клавиатура, экран и инфракрасный канал связи с другими бумажниками. Каждый пользователь располагает собственным бумажником, что обеспечивает его права и гарантирует безопасность. У устройства с клавиатурой и экраном есть определенное преимущество перед смарт- картой: оно может работать независимо от терминала. Пользователь может напрямую ввести свой пароль и сумму платежа. В отличие от кредитной карты, чтобы выполнить транзакцию, пользователю не нужно отдавать свой бумажник кому-то постороннему. У бумажника есть и дополнительные возможности: ✓ Транзакции в оффлайновом режиме. Система предназначена для замены обращения небольших сумм наличных; здесь онлайновая система была бы слишком громоздкой. ✓ Устойчивость к потерям. Если пользователь потеряет свой бумажник или бумажник сломается, или его украдут, пользователь не потеряет свои деньги.
672 Прикладная криптография ✓ Поддержка различных валют. ✓ Открытая архитектура и открытая система. Пользователь должен иметь возможность оплатить любые услуги, предоставляемые различными поставщиками, например, покупки в магазине, таксофон, общественный транспорт. Система должна поддерживать взаимодействие любого числа эмитентов электронных денег, а также бумажников различных моделей и производителей. ✓ Низкая стоимость. К моменту написания этой книги существовала только программная версия системы, но консорциум вплотную работает над аппаратным прототипом. 25.9. Регистрация алгоритмов в 150/1ЕС 9979 В середине восьмидесятых годов организация 150 решила стандартизировать алгоритм 0Е8, который уже использовался в качестве стандарта Р1Р8 и АИ81. После некоторой политической возни 180 решило не стандартизировать криптографические алгоритмы, а регистрировать их. Зарегистрировать можно только алгоритмы шифрования; регистрировать, скажем, хэш-функции и схемы цифровой подписи нельзя. Любая национальная организация может подать заявку на регистрацию алгоритма. В настоящее время поданы заявки на регистрацию трех алгоритмов (см. табл. 24.4). В заявку следует включать информацию об использовании, параметрах, реализациях, режимах и тестовые векторы. Подробное описание необязательно; на регистрацию можно подавать и секретные алгоритмы. Сам факт регистрации алгоритма ничего не говорит о его качестве. Регистрация не доказывает одобрение алгоритма 180/1ЕС, она просто показывает, что одна из национальных организаций хочет зарегистрировать алгоритм, независимо от критериев, используемых данной организацией. Эта идея меня не впечатляет. Регистрация мешает стандартизации. Вместо того чтобы принять несколько алгоритмов, 180 регистрирует любой алгоритм. При таком контроле можно зарегистрировать все, что угодно, а далее с полным правом сопровождать свой алгоритм звучной добавкой «Зарегистрирован 180/1ЕС 9979». В любом случае реестр ведет ИаЕопа! Сошри1ег Сепйе Ый., ОхГогй Коай, МапсЬез1ег, М1 7ЕЭ, Шкей Клп^йот. Таблица 25.4. Алгоритмы, зарегистрированные 180/1ЕС 9979 Имя алгоритма Регистрационный номер В-Сгур* 0001 ГОЕА 0002 ШС 0003
ГЛАВА 25. Политические вопросы 673 25.10. Профессиональные, промышленные и правозащитные группы Центр ЕР1С Центр защиты конфиденциальности электронной информации ЕРЮ (Е1ес1гошс Рпуасу ГпГогтаЕоп Сеп1ег) учрежден в 1994 году для привлечения общественного внимания к возникающим проблемам охраны тайны личной жизни. Эти проблемы связаны с национальной информационной инфраструктурой, например, микросхемами СНррег, предложениями по цифровой телефонии, национальным системам идентификационных номеров, тайнами историй болезни и продажей сведений о потребителях. ЕРЮ ведет судебные процессы, проводит конференции, публикует отчеты, издает ЕРЮ Л1ег( (Предупреждения ЕРЮ) и организует кампании по вопросам охраны тайны личной жизни. Желающие присоединиться могут обратиться по адресу Е1ес1готс Рпуасу ЫГогтабоп Сеп1ег, 666 РеппзуЫата Ауепие 8Е, 8ике 301, ^УазЫп^оп, Б.С. 20003; (202) 544-9240; факс: (202) 547-5482; Интернет: тГо@ер1с.ог§. Фонд ЕРР Фонд первопроходцев киберпространства ЕРР (Е1ес1хошс РгопЕег Рошк1а1юп) посвятил себя защите гражданских прав в киберпространстве. Рассматривая криптографическую политику США, ЕРР считает, что доступ к информации и криптографическим средствам относятся к фундаментальным правам, а потому с них должны быть сняты правительственные ограничения. Фонд организовал рабочую группу по защите безопасности и тайны личной жизни в мире цифровой информации (Б1§ка1 Рпуасу апсГ 8есигку ^огкт§ Огоир), которая составлена коалицией 50 организаций. Группа противодействует закону о цифровой телефонии и инициативе СИррег. Кроме того, фонд ЕРР содействует возбуждению процессов против контроля экспорта криптографических продуктов [143]. Желающие присоединиться к ЕРР могут связаться с фондом по адресу: Е1ес1гошс РгопИег РошкЫюп, 1001 О 81гее1 РГМ, 8ике 950Е, \\^азЫп§1оп, Э.С. 20001; (202) 347-5400, факс: (202) 393-5509; Интернет: еГГ@еГГ.ог§. Ассоциация АСМ Ассоциация по вычислительной технике (АззоЫаНоп Гог Сотри1т§ МасЫпегу - АСМ) - это международная компьютерная промышленная организация. В 1994 году Комитет общественной политики АСМ США представил прекрасный отчет о политике США в области криптографии [935]. Его стоит прочитать каждому, кто интересуется политикой в криптографии. Отчет можно загрузить через анонимный йр тГо.аст.ог& из /герог4з/аст_сгур1:о/аст_сгур1о_зШс1у.рз. Институт 1ЕЕЕ Институт инженеров по электротехнике и электронике (Аззошабоп Гог Сотри1т§ МасЫпегу - ШЕЕ) - еще одна профессиональная организация. Отделение института в США изучает вопросы, связанные с тайной личности, включая криптографическую
674 Прикладная криптография политику, идентификационные номера, и защиту тайн в Интернете, и разрабатывает соответствующие рекомендации. Ассоциация 5РА Ассоциация производителей программного обеспечения (8ой\уаге РиЪНзЬегз Аззоаайоп - БРА) - это торговая ассоциация, в которую входят свыше 1000 компаний, разрабатывающих программное обеспечение для персональных компьютеров. Они выступают за ослабление экспортного контроля в криптографии и поддерживают перечень коммерческих зарубежных продуктов. 25.11. Телеконференция 5а.сгур1 Зщ.сгур* - это телеконференция Изепе! по криптологии. Ее посещают примерно 100000 человек по всему миру. Большинство сообщений - обычная чепуха, перебранка, или то и другое вместе. Некоторые сообщения касаются политики, а большинство остальных - просьбы предоставить сведения или общие вопросы. Изредка в этой телеконференции встречаются самородки новой или полезной информации. Если регулярно читать 5С1.сгур1, можно узнать, как использовать нечто, называемое «черным списком» (кШ]11е). Другая телеконференция в Изепе! - зщ.сгуркгезеагсЬ. Это модерируемая телеконференция, посвященная обсуждению криптологических исследований. В ней меньше сообщений, но они гораздо интереснее. 25.12. Шифропанки Шифропанками (СурЬегрипкз) называют группу неформалов, заинтересованных в обучении и изучении криптографии. Кроме того, они экспериментируют с криптографией, пытаясь ввести ее в обиход. По их мнению, все криптографические исследования не принесут обществу выгоды, если люди не пользуются достижениями криптографии. В «Манифесте шифропанков» Эрик Хьюз (Епс Ни§Ьез) пишет [744]: Мы, Шифропанки, стремимся создать анонимные системы. Мы защищаем наши личные тайны с помощью криптографии, с помощью систем анонимной отправки почты, с помощью цифровых подписей и электронных денег. Шифропанки пишут код. Мы знаем, кто-то должен писать программное обеспечение, защищающее тайны личной жизни - пока это не сделано, мы не можем ее обеспечить - потому мы собираемся писать его сами. Мы опубликуем наши коды, чтобы наши друзья Шифропанки могли попрактиковаться и поиграть с ними. Нашими кодами сможет бесплатно пользоваться кто угодно и где угодно. Нас не слишком волнует, нравятся ли вам программы, которые мы пишем. Мы знаем- программы не горят, а рассеянные по всему миру системы нельзя выключить одним рубильником. Те, кто хочет присоединиться к списку рассылки шифропанков в Интернет, напишите по адресу та]огс1ото@1оаб.сот. Список рассылки хранится на узле йр.сзиа.Ьегке1еу.ес1и в /риЪ/сурЬегрипкз.
ГЛАВА 25. Политические вопросы 675 25.13. Патенты В рамки этой книги невозможно втиснуть вопрос о патентах на программное обеспечение. Хороши они или нет, но патенты существуют. В Соединенных Штатах алгоритмы, в том числе и криптографические, можно запатентовать. Так, корпорация 1ВМ владеет патентами на алгоритм БЕЗ [514]. Запатентован алгоритм ЮЕА. Запатентованы почти все алгоритмы с открытым ключом. Ы18Т даже запатентовал ОБА. Действие ряда криптографических патентов было блокировано вмешательством АНБ в соответствии с Актом о секретности изобретений (1пуеп1;юп Зесгесу Ас!) 1940 года и Актом о национальной безопасности (Ыа!юпа1 8есип!у Ас!) 1947 года. Это означает, что вместо патента изобретатель получает секретное постановление и ему запрещается обсуждать его изобретение с кем-нибудь еще. У АНБ есть особые возможности при патентовании. Агентство может обратиться за патентом, затем блокировать его выдачу. Снова появляется секретное постановление, но теперь АНБ одновременно и изобретатель, и издатель постановления. Когда спустя некоторое время секретное постановление отменяется, регистрационная контора выдает патент, действующий стандартные 17 лет. Это более явно защищает изобретение, чем хранение его в секрете. Если кому-нибудь удастся изобрести то же самое, АНБ уже подало заявку на патент. Если никому другому не удастся изобрести то же самое, изобретение остается секретным. Несмотря на то, что процесс патентования должен не только защищать изобретения, но и раскрывать их, благодаря этой уловке АНБ может держать патент более 17 лет. Отсчет 17-летнего срока начинается с момента выдачи патента, а не подачи заявки. Пока неясно, как все может измениться в связи с ратификацией Соединенными Штатами соглашения ОАТТ. 25.14. Экспортное законодательство США1 По мнению правительства США, криптография приравнивается к военному снаряжению. Это означает, что криптография подчиняется тем же законам, что противотанковая ракета ТО\/У или танк М1 АЬгашз. Если вы продаете криптографический продукт без надлежащей экспортной лицензии, вы - международный контрабандист оружием. Если вы не хотите испортить ваше резюме строкой о пребывании в федеральной тюрьме, обращайте внимание на законодательство. С началом в 1949 году холодной войны все страны НАТО (кроме Исландии), а затем Австралия, Япония и Испания, образовали комитет КОКОМ - Координационный комитет многостороннего контроля экспорта (СоогсНпа!т§ СотпиЯее &г МиШ1а!ега1 Ехрог! Соп!го1$ - СоСот). Это неофициальная организация, призванная координировать национальные ограничения экспорта важных военных технологий в Советский Союз, другие страны Варшавского Договора и Китайскую Народную Республику. Например, к числу контролируемых технологий относятся компьютеры, фрезерные станки и криптографические продукты. Организация преследовала цель замедления передачи 1 За прошедшее время экспортные ограничения США на средства криптографии сильно изменились (в частности, разрешен экспорт продуктов с длиной ключа до 128 бит), и этот раздел представляет больше исторический интерес. - Прим. ред.
676 Прикладная криптография технологий в указанные страны, и сдерживания, таким образом, роста их военного потенциала. С окончанием холодной войны страны-участницы КОКОМ осознали, что выполняемый ими контроль большей частью устарел. В настоящее время, по-видимому, идет процесс формирования «Нового форума», другой международной организации, которая собирается остановить поток военных технологий в страны, которые не нравятся членам организации. В любом случае экспортная политика США в отношении стратегических товаров регулируется правительственным актом об экспорте (Ехрог* АскшшзЦ-айоп Ас1), Актом о контроле над экспортом вооружения (Агтз Ехрог* Соп1го1 Ас1), Актом об атомной энергии (А1огшс Епег§у Ас1) и Актом о нераспространении ядерных вооружений (Ыис1еаг Моп-РгоНГегайоп Ас1). Контроль, установленный этим законодательством, реализуется многими подзаконными актами, причем ни один из них не согласован с другим. Контролем заняты свыше дюжины организаций, включая военные службы, часто их деятельность перекрывается и конфликтует. Подконтрольные технологии фигурируют в нескольких списках. Криптография, традиционно относящаяся к вооружениям, упоминается в Перечне вооружений США (И8 МипШопз 1л з1 - ИЗМЦ), Международном перечне вооружений (1п1ета1юпа1 МипШопз 1лз1- 1МЬ), Перечне контроля торговли (Соттегсе СопйчЯ 1лз1 - ССЬ) и Международном промышленном перечне (1п1егпабопа1 1пбиз1г1а1 1лз1; - НЬ). Госдепартамент отвечает за П8МЬ. Этот список публикуется как часть Правил по регулированию международного трафика вооружений (1п1ета1юпа1 ТгаШс т Агтз Ке§и1а1;юп5 - 1ТАК) [466, 467]. Экспорт криптографических продуктов в США контролируется двумя правительственными организациями. Одна из них - Бюро по управлению экспортом (Вигеаи оГ Ехрог* Абплшзй-айоп - ВХА) в Министерстве торговли, уполномоченный Правилами регулирования экспорта (Ехрог* АйтЫзйтШоп Ке§и1а1юпз - ЕАК). Другая контролирующая организация - Управление по регулированию продажи средств обороны (ОШсе о Г Ое&пзе Тгабе Соп1то1з - ОТС) в Государственном департаменте, уполномоченное 1ТАК. Как правило, требования ВХА из Министерства торговли менее строги, но сначала весь криптографический экспорт просматривается управлением ОТС из Госдепартамента, которое получает советы по технологии и национальной безопасности от АНБ и, кажется, всегда следует этим советам. Управление ОТ8 может отказаться передать право решения ВХА. Этот процесс регулируется правилами 1ТАК. (До 1990 года организация ОТС называлась Управлением по контролю над вооружением; возможно, этими усилиями в области «общественного мнения» правительство пытается заставить нас забыть, что здесь мы имеем дело с бомбами и пушками). Исторически ОТС сопротивлялась выдаче экспортных лицензий на средства шифрования, превышающих определенный уровень - хотя о том, каков этот уровень, никогда не сообщалось. Следующие цитаты взяты из документов 1ТАК [466, 467]: § 120.10 Технические данные.
ГЛАВА 25. Политические вопросы 677 К техническим данным, в соответствии с данным подпунктам, относится: ✓ Информация, отличная от программного обеспечения, определенного в 120.10 (б), которая нужна для проектирования, разработки, производства, обработки, изготовления, сборки, работы, ремонта, поддержки или модификации средств обороны. Это, например, информация в форме светокопий, чертежей, фотографий, планов, инструкций и документации; ✓ Секретная информация, касающаяся средств обороны и оборонной деятельности; ✓ Информация, охватываемая постановлением о засекречивании изобретения; ✓ Программное обеспечение, определенное в разделе 121.8 (Г) и непосредственно связанное со средствами обороны ✓ Это определение не включает информацию, касающуюся общенаучных, математических или инженерных принципов, обычно изучаемых в общедоступных школах, колледжах и университетах, как определено в § 120.11. Оно также не включает базовую рыночную информацию о функции, назначении или общесистемном описании средств обороны. § 120.11 Всеобщее достояние. К всеобщему достоянию относится свободно публикуемая информация, общедоступная: ✓ В киосках и книжных магазинах; ✓ По подписке, которая доступна без ограничений любому, кто желает получить или приобрести опубликованную информацию; ✓ По почтовым привилегиям второго класса, выданным правительством США; ✓ В библиотеках, открытых для публики, или в которых публика может получить документы; ✓ Из патентов, доступных в любой патентной конторе; ✓ Неограниченным распространением на конференциях, встречах, семинарах, презентациях или выставках в Соединенных Штатах, доступных обычной публике; |/ Из сообщений для печати (т.е. неограниченного распространения) в любой форме (например, необязательно опубликованной), одобренных компетентными органами США (см. также § 125.4 (Ь) (13)). ✓ Из фундаментальных исследований в науке и технике в аккредитованных высших учебных заведениях США, где полученная информация обычно публикуется и широко распространяется в научном сообществе. Фундаментальными называются базовые и прикладные исследования в науке и технике, когда полученная информация обычно публикуется и широко распространяется в научном сообществе в отличие от исследований, результаты которых не разглашаются из-за прав собственности или определенного контроля доступа и распространения правительством США. Университетские исследования не считаются фундаментальными, если:
678 Прикладная криптография 1. Университет или его исследователи соглашаются с другими ограничениями на публикацию научно-технической информации, полученной в результате работы над проектом, или и. Исследования финансируются правительством США, а доступ к результатам исследований и их распространение ограничены с целью защиты информации. § 120.17 Экспорт. Под экспортом понимается: ✓ Передача или вывоз средств обороны за пределы Соединенных Штатов любым способом, кроме путешествия за пределы Соединенных Штатов лица, чьи личные знания включают технические данные; или ✓ Передача иностранному лицу прав регистрации, управления или собственности на любой самолет, судно или спутник, присутствующий в Перечне вооружений США, в Соединенных Штатах или за их пределами; или ✓ Раскрытие (в том числе устное или визуальное) или передача в Соединенных Штатах любых средств обороны посольству, учреждению или подразделению иностранного правительства (например, дипломатическим миссиям); или ✓ Раскрытие (в том числе устное или визуальное) или передача технических данных иностранному лицу в Соединенных Штатах или за их пределами; или ✓ Выполнение оборонной деятельности от имени или для выгоды иностранного лица в Соединенных Штатах или за их пределами. ✓ Запускаемый аппарат или полезная нагрузка такого аппарата не должны рассматриваться как экспорт. Однако для определенных целей (см. § 126.1 этого подпункта) положения этого подпункта применимы к продажам и другим способам передачи средств обороны или продуктов оборонительной деятельности. Часть 121 - Перечень вооружений США § 121.1 Общие положения. Перечень вооружений США Категория XIII - Дополнительное военное снаряжение ✓ Криптографические (включая управление ключами) системы, аппаратура, конструкции, модули, интегральные схемы, компоненты или программное обеспечение с возможностью поддержки секретности или конфиденциальности информации или информационных систем, кроме следующего криптографического оборудования и программного обеспечения: 1. Ограниченное только функциями расшифрования, специально спроектированными так, чтобы, позволяя исполнение копии программы, не допускали вмешательство пользователя в функции расшифрования. п. Специально спроектированное, разработанное или модифицированное для использования в машинах для банковских операций или денежных транзакций, которое можно использовать только для таких транзакций. Машины для банковских операций или денежных транзакций включают автоматические
ГЛАВА 25. Политические вопросы 679 кассовые аппараты, самообслуживаемые печатающие устройства, торговые терминалы или оборудование для шифрования межбанковских транзакций. ш. Использующее только аналоговые методы для криптографической обработки, которая обеспечивает безопасность информации в следующих приложениях... IV. Персональные смарт-карты, использование которых возможно только в оборудовании или системах, не попадающих под регулирование 118МЬ. V. С ограничением доступа, такие как автоматические кассовые аппараты, самообслуживаемые печатающие устройства или торговые терминалы, которые обеспечивают защиту паролей или персональных идентификационных номеров (РГМ), или аналогичных данных для предотвращения несанкционированного доступа к средствам, но не могут шифровать файлы или тексты, непосредственно не связанные с защитой паролей или РШ-кодами. VI. Выполняющие только проверку подлинности данных с помощью вычисления кода проверки подлинности сообщения (МАС) или аналогичной функции для проверки, что в текст не было внесено изменений, или для проверки подлинности пользователей, но которое нельзя использовать для шифрования данных, текста или другой информации, помимо необходимой для проверки подлинности. VII. Использующие только фиксированные методы сжатия и кодирования данных. VIII. Используемое только для радиовещания, платного телевидения или аналогичных телевизионных систем с ограниченной аудиторией, без цифрового шифрования, и в которых цифровое расшифрование ограничено только видео- и аудиофункциями или управлением. 1х. Программное обеспечение, спроектированное или модифицированное для защиты от злоумышленных компьютерных повреждений (например, вирусов). ✓ Криптографические (включая распределение ключей) системы, аппаратура, конструкции, модули, интегральные схемы, компоненты или программное обеспечение с возможностью генерации распространяемых кодов для большого числа систем или устройств: ✓ Криптографические системы, аппаратура, конструкции, модули, интегральные схемы, компоненты или программное обеспечение. § 125.2 Экспорт несекретных технических данных. ✓ Общие положения. Для экспорта несекретных технических данных необходима лицензия (08Р-5), если эти данные не исключены из лицензирующих требований данного подпункта. В случае планового визита детали предполагаемых дискуссий должны быть переданы в Управление по регулированию продажи средств обороны для экспертизы технических данных. Должно быть предоставлено семь копий технических данных или тем дискуссий. ✓ Патенты. Для экспорта технических данных требуется лицензия, выданная Управлением по регулированию продажи средств обороны, если данные превышают необходимые для заполнения внутренней патентной заявки или для заполнения иностранной патентной заявки, если внутренняя заявка не была
680 Прикладная криптография заполнена. Заявки на патентование за рубежом, выполнение в таких патентах улучшений, модификаций или дополнений должны регулироваться Управлением по патентам и торговым знакам США в соответствии с 37 СРК, часть 5. Экспорт технических данных, необходимых для патентования в других странах, является субъектом норм, издаваемых Управлением по патентам и торговым знакам США, в соответствии с 35 1Г8.С. 184. ✓ Раскрытия. Для устного, визуального или документального раскрытия технических данных гражданами США иностранным лицам требуется лицензия, если в данном подпункте не оговорено иное. Лицензия требуется независимо от формы передачи технических данных (например, лично, по телефону, в переписке, электронными средствами, и т.д.). Лицензия требуется для таких раскрытий, делаемых гражданами США при посещении иностранных дипломатических миссий и консульств. И так далее. Весь документ намного обширнее. Если вы собираетесь экспортировать криптографические продукты, советую добыть его копию и воспользоваться услугами юриста, который во всем этом разбирается. Фактически экспорт криптографических продуктов контролируется АНБ. Если вам нужно получить свидетельство о признании вашего продукта предметом общего потребления (Соттобку Зипзбюбоп - СЛ), вы должны представить его на одобрение в АНБ и подать в Государственный департамент заявку на получение СЛ. После одобрения в Госдепартаменте дело попадает под юрисдикцию Министерства торговли, которое никогда особенно не интересовалось криптографией. Однако Государственный департамент никогда не выдаст СЛ без одобрения АНБ. В 1977 году Джозеф А. Майер (1о$ерЬ А. Меуег), служащий АНБ, написал в ШЕЕ письмо (по официальной версии - несанкционированное), предупреждающее, что планируемое представление оригинальной статьи с описанием Я8А нарушает ГГАЯ. Вот цитата из книги Тке Ртг1е Ра1асе: Вот его точка зрения. 1ТАК охватывает всю «несекретную информацию, которая может быть использована, или адаптирована для использования, при проектировании, производстве, изготовлении, ремонте, капитальном ремонте, переработке, конструировании, разработке, действии, поддержке или восстановлении» перечисленных материалов, так же как и «любую технологию, которая развивает определенное умение или создает новое в области, которая имеет важное военное применение в Соединенных Штатах». И экспорт действительно включал передачу информации, как в письменном виде, так и с помощью устных или визуальных средств, включая краткие обсуждения и симпозиумы, на которых были представлены иностранцы. Но, буквально следуя туманному, часто слишком пространному законода¬ тельству, кажется, требуется, чтобы каждый, кто собирается написать или заявить что-то на тему, касающуюся Перечня вооружений, сначала получил бы одобрение Государственного департамента - эта унылая перспектива явно противоречит Первой поправке и требует подтверждения Верховным судом. В конце концов, АНБ признало действия Майера несанкционированными, и работа по Я8А была опубликована, как планировалось. Против изобретателей не было предпринято никаких действий, хотя может быть доказано, что их работа повысила
ГЛАВА 25. Политические вопросы 681 возможности зарубежной криптографии гораздо больше, чем что-нибудь, опублико¬ ванное до того. Экспорт криптографических средств обсуждается в следующем заявлении АНБ [363]: Криптографические технологии считаются жизненно важными для интересов национальной безопасности, включая экономические интересы, военные интересы и интересы внешней политики. Мы не согласны с заявлениями, сделанными 7 мая 1992 года на слушаниях Судебного комитета, и последними газетными статьями, которые заявляют, что экспортные законы США мешают американским фирмам изготавливать и использовать современное шифровальное оборудование. Нам неизвестно ни об одном случае, когда из-за экспортных ограничений США американской фирме помешали изготавливать и использовать аппаратуру шифрования внутри страны, или американской фирме либо ее дочерней компании помешали использовать аппаратуру шифрования за пределами США. В действительности АНБ всегда поддерживало использование шифрования в американском бизнесе для защиты важной информации, как дома, так и за рубежом. Для экспорта в другие страны АНБ, как учреждение Министерства обороны, (вместе с Государственным департаментом и Министерством торговли) просматривает экспортные лицензии в поисках технологий информационной безопасности, попадающих под действие Экспортного правительственного законодательства или Правил по регулированию международного трафика вооружений. Аналогичная система контроля экспорта действует во всех странах КОКОМ и во многих других странах, так как эти технологии повсеместно считаются важными. Не существует общего запрета на экспорт подобных технологий, каждый случай рассматривается отдельно. При этом может потребоваться получить лицензии на такие системы, при получении которых анализируется влияние экспорта этой системы на интересы национальной безопасности - включая интересы экономической, военной и политической безопасности. Экспортные лицензии выдаются или не выдаются в зависимости от типа задействованного оборудования, предполагаемого использования и предполагаемого пользователя. Наш анализ показывает, что США лидирует в мировом производстве и экспорте технологий информационной безопасности. АНБ одобряет для экспорта свыше 90% криптологических продуктов, направленных в АНБ Государственным департаментом для лицензирования. Экспортные лицензии на продукты информационной безопасности, попадающие под юрисдикцию Министерства торговли, выдаются без участия АНБ или Министерства обороны. Среди них - продукты, использующие такие методы, как 055 и Н8А, обеспечивающие проверку подлинности и контроль доступа к компьютерам и сетям. На самом деле, в прошлом АНБ играло главную роль в успешном отстаивании ослабления экспортного контроля над Н8А и близкими технологиями проверки подлинности. Эти методы особенно важны при решении проблемы хакеров и несанкциони¬ рованного использования ресурсов. Итак, заявлено, что АНБ ограничивает экспорт только продуктов шифрования, но не проверки подлинности. Если вы собираетесь экспортировать продукт, предназначенный только для проверки подлинности, получение разрешения ограничится демонстрацией того, что ваш продукт нельзя использовать для шифрования без значительных переделок. Более того, бюрократическая процедура лицензирования продуктов для проверки подлинности намного проще, чем продуктов шифрования. Для системы
682 Прикладная криптография проверки подлинности получать одобрение Госдепартамента следует только при получении СУ9 система же шифрования требует повторного одобрения для каждой версии продукта или даже при каждой продаже. Без С1 вам придется запрашивать разрешение на экспорт всякий раз, когда вы захотите экспортировать продукт. Государственный департамент не разрешает экспортировать продукты с надежным шифрованием, даже использующие ЭЕ8. Отдельные исключения были сделаны для дочерних фирм американских компаний для возможности закрытой связи с США, для некоторых банковских приложений и экспорта для военных пользователей США. Ассоциация производителей программного обеспечения (8РА) вела переговоры с правительством об ослаблении ограничений на экспорт. Соглашение, заключенное 8РА и Госдепартаментом в 1992 году, облегчило правила выдачи экспортных лицензий для двух алгоритмов, КС2 и КС4, при условии, что длина используемого ключа не превысит 40 бит. Подробности можно найти в разделе 7.1. В 1993 году в Палате представителей Мария Кантвелл (Мапа Сап1луе11) (Вашингтон) по просьбе компаний-разработчиков программного обеспечения внесла законопроект, ослабляющий контроль экспорта программ. Сенатор Пэтти Мюррей (Райу Мигтау) (Вашингтон) внесла соответствующий билль в сенате. Законопроект Кантвелл был добавлен к общему закону о контроле над экспортом, проходящему через Конгресс, но был удален Комитетом по разведке под сильным давлением АНБ. Когда АНБ что- нибудь делает, оно делает это хорошо - комитет единодушно проголосовал за удаление формулировки. За последнее время я не припомню другого случая, чтобы группа законодателей что-то сделала единодушно. В 1995 году Дан Бернштейн (Эап Вешз1ет) при поддержке ЕРР подал в суд на правительство США, пытаясь помешать правительству ограничивать публикации криптографических документов и программного обеспечения [143]. В иске утверждалось, что законы об экспортном контроле неконституционны и вносят «непозволительные априорные ограничения высказываний в нарушение Первой поправки». Конкретно в иске утверждалось, что современный процесс контроля над экспортом: ✓ Позволяет бюрократам ограничивать публикации без решения суда. ✓ Обеспечивает слишком мало процедурных возможностей защиты прав в соответствии с Первой поправкой. ✓ Требует от издателей регистрироваться в правительстве, создавая эффект «лицензированной прессы». ✓ Отказывает в общих публикациях, требуя идентифицировать каждого получателя. ✓ Достаточно запутан, чтобы простые люди не могли знать, какое поведение правильно, а какое - нет. ✓ Слишком пространен, так как запрещает поведение, которое явно защищается (например, разговор с иностранцами внутри Соединенных Штатов). ✓ Применяется слишком широко, запрещая экспорт программного обеспечения, не содержащего криптографии, исходя из соображений, что криптография может быть добавлена позже.
ГЛАВА 25. Политические вопросы 683 ✓ Явно нарушает Первую поправку, запрещая частные беседы по криптографии, так как правительство желает вместо этого навязывать публике свои криптографические взгляды. ✓ Многими способами превышает полномочия, предоставленные в экспортном законодательстве, как Конгрессом, так и Конституцией. Можно предсказать, что решение этого дела займет несколько лет, но предвидеть, чем оно закончится, невозможно. Тем не менее, Консультативный комитет по компьютерной безопасности и защищенности (СотрЩег 8есигку ап<1 Рпуасу АсМзогу Воагб), официальный консультант М8Т, в марте 1992 года проголосовал за пересмотр национальной политики в области криптографии, включая экспортную политику. Было заявлено, что экспортная политика определяется только организациями, отвечающими за национальную безопасность, без учета точки зрения организаций, связанных с развитием торговли. Эти связанные с национальной безопасностью организации делают все возможное, чтобы ничего не изменилось, но необходимость перемен уже назрела. 25.15. Экспорт и импорт криптографических средств за рубежом В других странах существует свое экспортное и импортное право [311]. Приведенный обзор неполон и возможно устарел. Страны могут издать законы и не обращать на них внимания, или не иметь законов, но каким-то образом ограничивать экспорт, импорт и использование. ✓ Австралия требует наличия сертификата у импортируемого криптографического продукта только по требованию страны-экспортера. ✓ В Канаде нет контроля импорта, а контроль экспорта аналогичен американскому. Экспорт продуктов из Канады может быть ограничен, если они включены в Перечень контроля экспорта, соответствующий Акту разрешений экспорта и импорта. В отношении криптографических технологий Канада следует ограничениям КОКОМ. Шифровальные устройства описаны под категорией пять, части два канадских правил экспорта. Эти условия аналогичны категории пять в Правительственных правилах экспорта в США. ✓ Китай использует схему лицензирования импортируемых продуктов, экспортеры должны заполнить заявку в Министерстве зарубежной торговли. На основе китайского Перечня запрещенного и ограниченного экспорта и импорта, принятого в 1987 году, Китай ограничивает импорт и экспорт устройств кодирования речи. ✓ Во Франции нет специального законодательства относительно импорта криптографии, но существуют законы, касающиеся продажи и использования криптографии в стране. Продукты должны быть сертифицированы: либо они должны соответствовать опубликованным спецификациям, либо фирменная спецификация компании должна быть предоставлена правительству. Правительство может также затребовать два устройства для собственного использования. У компаний должна быть лицензия на продажу криптографических продуктов во Франции, в лицензии указывается рыночное назначение. У пользователей должна быть лицензия на
684 Прикладная криптография покупку и использование криптографических средств, в лицензию включено положение о том, что пользователи должны быть готовы передать свои ключи правительству в течение четырех месяцев после использования. Это ограничение иногда допускает исключения для банков, больших компаний, и т.д. Для криптографии, экспортируемой из США, лицензионные требования отсутствуют. ✓ Германия следует положениям КОКОМ, требуя лицензировать экспорт крипто¬ графии. Проводится специальный контроль общедоступного криптографического программного обеспечения. ✓ В Израиле есть ограничения импорта, но, по видимому, никто не знает какие. ✓ Бельгия, Италия, Япония, Нидерланды и Великобритания следуют положениям КОКОМ, требуя лицензировать экспорт криптографии. ✓ В Бразилии, Индии, Мексике, России, Саудовской Аравии, Испании, Южной Африке, Швеции и Швейцарии контроль экспорта или импорта криптографии отсутствует. 25.16. Правовые вопросы Правомочны ли цифровые подписи? Признает ли их суд? Некоторые предварительные правовые исследования привели к мнению, что цифровые подписи должны соответствовать требованиям обязательных по закону подписей в большинстве применений, включая коммерческое использование, определенное в Едином своде законов о торговле (ШЦогт Соттегс1а1 Собе - 1ЮС). Решение Управления по общей бухгалтерии (Оепега1 Ассоипбп§ ОШсе - ОАО), вынесенное по просьбе N181, утверждает, что цифровые подписи соответствуют правовым стандартам для рукописных подписей [362]. Акт штата Юта о цифровых подписях вступил в действие 1 мая 1995 года, обеспечивая законную основу использования цифровых подписей в системе судопроизводства. Калифорния рассматривает соответствующий законопроект, а в Орегоне и Вашингтоне разрабатывают свои законы. Техас и Флорида дышат им в затылок. К моменту издания книги большинство штатов пройдут этот путь. Американская юридическая ассоциация (Отдел ЕЭ1 и информационных технологий секции науки и техники) разработала образец акта, который может быть использован штатами в процессе законотворчества. Акт пытается вписать цифровые подписи в существующую для подписей правовую инфраструктуру: Единый свод законов о торговле, Законы Федеральной резервной системы Соединенных Штатов, общее право о контрактах и подписях, Конвенция ООН по контрактам для международной продажи товаров и Конвенция ООН по международным законам о комитетах по биржам и долговым обязательствам. В акт включены положения об ответственности и обязанностях сертифицирующих органов, вопросы ответственности, а также ограничения и политика. В Соединенных Штатах законы о подписях, контрактах и торговых операциях находятся в юрисдикции штатов, поэтому этот акт-образец разработан для штатов. Окончательной целью является федеральный акт, но если все начинается на уровне штатов, у АНБ меньше возможностей все испортить.
ГЛАВА 25. Политические вопросы 685 Даже при этом, пока достоверность цифровых подписей не будет оспорена в суде, их правовой статус остаётся неопределенным. Для того чтобы цифровые подписи обладали теми же идентификационными возможностями, что и рукописные подписи, они сначала должны быть использованы для подписания обязательного по закону документа, затем оспорены в суде одной из сторон. Тогда суд рассмотрит надежность схемы подписи и вынесет решение. Спустя некоторое время, когда повторится подобный случай, решения о том, какие методы цифровой подписи и какие размеры ключей понадобятся, чтобы цифровая подпись была признана законной, будет вынесено на основе предыдущих решений. Возможно, для этого потребуются годы. А до тех пор, если два человека хотят использовать цифровые подписи для контракта (для заявок на покупку, для приказов по работе и т.д.), рекомендую подписать на бумаге контракт, в котором они соглашаются в будущем признавать любые документы, подписанные их цифровыми подписями [1099]. В этом документе должны определяться алгоритм, размер ключа и прочие параметры. Кроме того, в нем должен быть определен способ разрешения споров.
Послесловие Мэтта Блейза Один из опаснейших аспектов знания криптологии (а, следовательно, чтения этой книги), заключается в возможности делать почти точные оценки. Действительно, зная длину ключей, методы разложения на множители и другие криптоаналитические приемы, вы можете оценить (в отсутствие настоящей теории проектирования шифров) «фактор трудозатрат», необходимых для вскрытия конкретного шифра. Возникает соблазн бездумно использовать эти оценки в качестве общей меры безопасности системы. Однако помимо криптоанализа у настоящего взломщика есть куда больше возможностей. Он может прибегнуть к вскрытию протоколов, троянским коням, вирусам, мониторингу электромагнитных излучений, физической компрометации, шантажу и запугиванию владельцев ключей. Он воспользуется ошибками операционной системы, приложений и пользователей, сбоями аппаратуры, физическим подслуши¬ ванием, так называемой «социальной инженерией», анализом содержимого мусорных корзин - и это далеко не все. Высококлассные шифры и протоколы - важные средства, но сами по себе не заменят реалистичных, критических размышлений о том, что действительно нужно защищать, и как могут быть взломаны различные линии обороны (в конце концов, взломщики редко ограничиваются чистыми, хорошо определенными академическими моделями). Росс Андерсон (Козз Апбегзоп) приводит примеры криптографически надежных банковских систем, которые не устояли перед угрозами реального мира [43, 44]. Даже когда у* взломщика есть доступ только к шифртексту, через малозаметные бреши в других частях системы может просочиться достаточно информации, чтобы сделать хорошую криптосистему бесполезной. Союзники во Второй мировой войне взломали трафик немецкой машины Еш§та главным образом умелым использованием ошибок операторов [1587]. Агентство АНБ в ответ на вопрос, может ли правительство вскрыть зашифрованный по алгоритму БЕЗ трафик, цинично заметило, что реальные системы настолько ненадежны, что об этом даже не стоит беспокоиться. К сожалению, не существует простых рецептов обеспечения безопасности системы. Ничто не заменит тщательное проектирование и критический анализ. Хорошие криптосистемы делают жизнь взломщика намного труднее жизни законного пользователя, но это не так в отношении почти всех остальных аспектов безопасности компьютеров и систем связи. Рассмотрим «десять главных угроз безопасности реальных систем» (наверняка, их больше). Заметим, каждую угрозу легче воплотить, чем предотвратить. ✓ Жалкое программное обеспечение. Всем известно, что никто не умеет писать программы. Современные системы сложны, включают сотни тысяч строк кодов, и любая из них может ослабить безопасность. Более того, фатальные ошибки могут быть расположены далеко вне модулей защиты. ✓ Неэффективная защита от атак отказа в обслуживании. В некоторых криптогра¬ фических протоколах допускается анонимность. Внедрение анонимных протоколов может быть особенно опасным, если они увеличивают возможность неопознанному вандалу нарушить работу служб. Поэтому анонимные системы должны быть особенно устойчивы к атакам отказа в обслуживании. В устойчивых сетях поддерживать анонимность может быть проще. Действительно, вряд ли кого-то беспокоят миллионы анонимных входных точек в большинстве устойчивых сетей,
Послесловие Мэтта Блейза 687 скажем, телефонной сети или почтовых системах. Отдельному пользователю относительно трудно (или дорого) вызвать в них масштабные аварии. ✓ Негде хранить секретную информацию. Криптосистемы защищают большие секреты малыми (ключами). К сожалению, современные компьютеры не особенно хороши для защиты даже малых секретов. Многопользовательские сетевые рабочие станции могут быть взломаны, а их память - скомпрометирована. Автономные однопользо¬ вательские машины могут быть украдены или поражены вирусами, которые организуют асинхронную утечку секретов. Особенно трудную проблему представ¬ ляют собой удаленные серверы, где может и не быть пользователя, вводящего пароль (см. однако, угрозу № 5). ✓ Плохие генераторы случайных чисел. Для создания ключей и сеансовых переменных нужны хорошие источники непредсказуемых битов. Энтропия работающего компьютера велика, но только редкое приложение в состоянии правильно ее использовать. Предлагалось множество программных методов генерации истинно случайных чисел. Например, используются непредсказуемость времени исполнения операций ввода/вывода, отклонения хода системных часов и таймера и даже турбулентность воздуха в корпусе жесткого диска, но все они очень чувствительны к незначительным изменениям окружения, в котором используются. ✓ Слабые пароли. Большинство криптографических программ решают проблемы хранения и генерации ключей на основе пользовательских парольных фраз, которые они полагают достаточно непредсказуемыми для создания хороших ключей, а, кроме того, легко запоминаются и поэтому не требуют надежного хранения. В то время как вскрытие со словарем - общеизвестная проблема коротких паролей, о способах вскрытия ключей, созданных на основе парольных фраз, выбранных пользователями, известно мало. Шеннон показал, что энтропия английского текста чуть больше 1 бита на символ, что, как будто бы, допускает лобовое вскрытие парольных фраз. Однако пока что не вполне ясно, каким образом упорядочивать парольные фразы, чтобы сделать это. Пока мы не поймем, каким образом можно атаковать парольные фразы, мы не поймем, насколько они слабы или сильны. ✓ Ложное доверие. Почти все доступные криптографические программы предполагают, что пользователь находится в прямом контакте с системой и пользуется безопасным методом доступа. Например, интерфейсы программ, подобных РОР, предполагают, что идентификационные фразы поступают от пользователя по надежному пути, например, с локальной клавиатуры. Но это не всегда так. Возьмем, например, проблему чтения зашифрованной почты при подключении к сети. То, что проекти¬ ровщик системы полагает надежным, может не соответствовать потребностям или ожиданиям реальных пользователей, особенно если программой можно управлять удаленно по незащищенным каналам. %/ Недостаточное понимание взаимодействия протоколов и служб. С ростом и усложнением систем нередко случаются странные вещи, и порой трудно что-нибудь понять даже при авариях. Червь Морриса распространялся по Интернету с помощью скрытой и с виду вполне безобидной опции программы зепбтаП. Сколько еще таких опций, и в каких программах, несущих неожиданные последствия, которые только и ждут своего часа?
688 Прикладная криптография ✓ Нереалистичная оценка угроз и рисков. Эксперты по безопасности стремятся концентрировать усилия на угрозах, которые они умеют моделировать и предотвращать. К сожалению, взломщики концентрируются на тех, которые можно осуществить, и две эти области редко совпадают. Слишком много «безопасных» систем было спроектировано без учета реально возможных действий взломщика. ✓ Интерфейсы, которые делают защиту дорогой и неудобной. Средства защиты, если необходимы, должны быть удобными и достаточно прозрачными, чтобы люди действительно пользовались ими. Нетрудно спроектировать механизмы шифрования, пожертвовав ради них быстродействием или простотой использования, еще проще создать механизм, который провоцирует ошибки. Система защиты должна быть такой, чтобы отключить ее было труднее, чем включить; к сожалению, лишь немногие системы действительно работают именно так. ✓ Чрезмерные требования к безопасности. Эта проблема хорошо известна почти всем продавцам продуктов и услуг защиты. Пока существует широко распространенное требование прозрачной защиты, средства и инфраструктура, обеспечивающие его реализацию, будут дороги и недоступны многим приложениям. Частично это проблема понимания и раскрытия угроз и опасностей в реальных приложениях, а частично - проблема проектирования систем, в которых средства защиты не предусматриваются изначально, а надстраиваются позднее. Более полный список и обсуждение подобных угроз может легко заполнить книгу такого же размера, при этом проблема будет лишь едва затронута. Что делает их особенно трудными и опасными, так это то, что не существует никакого магического способа избавиться от них, кроме хорошего анализа и тщательной инженерной проработки. Честолюбивый криптограф должен чувствовать границы искусства. Мэтт Блейз Нью-Йорк
Часть 5 ИСХОДНЫЕ КОЛЫ
ИСХОДНЫЕ КОДЫ 1. йЕЗ 2. 1.0К191 3. ЮЕА 4. ООЗТ 5. В1ожЛзН 6. 3-\Л/ау 7. КС5 8. А5 9. 5ЕА1. йЕЗ #с1е^1пе ЕЫО 0 /* МСЮЕ == епсгурЪ */ #с!е^д.пе 0Е1 1 /* МОБЕ == йесгурЪ */ Ъуре&еИ зЪгисЪ { ипзхдпес! 1опд ек[32]; ипз1дпес1 1опд с!к [32 ]; } йез_сЪх; ехЪегп VО^с^ йезкеу (ипз1дпе<1 сЬаг *, зЪогЪ); /* Ъехкеу[8] МСЮЕ * ЗеЪз ^Ье 1пЪегпа1 кеу гедхзЪег ассогсИпд Ъо ЪЪе Ьеха<1ес1ша1 * кеу сопЪал.пес1 л.п ЪЪе 8 ЪуЪез Ъехкеу, ассогсНпд Ъо ЪЪе БЕЗ, * €ог епсгурЫоп ог йесгурЫоп ассогсНпд Ьо МСЮЕ. */ ехЪегп \год.с! изекеу (ипз1дпе<1 1опд *) ; /* соокейкеу[32] * Ъоайз *:Ъе 1пЪета1 кеу гед1з1ег ЪЪе с!а*:а л.п соокес!кеу. */ ехЪегп уол.с1 сркеу (ипз1дпе<1 1опд *) ; /* соокейкеу[32] * Сорхез ЪЪе соп^еЫз ЪЪе д.п1:егпа1 кеу гед1з^ег л.п{:о ЪЬе зЪогаде * 1оса-1ес1 аЬ &сооке<1кеу [0] . */ ехЪегп уод.с! <1ез (ипз1дпе<1 сЬаг *, ипзхдпес! сЪаг *); /* Ггош[8] Ъо[8] * Епсгур^з/Оесгур^з (ассогсИпд Ъо ЪЪе кеу сиггепЫу 1оайе<1 1п ^Ье * 1пЪета1 кеу гед1з1ег) опе Ыоск о± е1дЫ: Ъу^ез аЬ асИгезз '^гот' * 1пЪо №е Ыоск аЪ асИгезз '1:о' . ТЪеу сап Ье ЪЬе заше. */
Исходные коды 691 зЪаПс уо1<1 зсгипсЪ(ипзЪдпес! сЪаг *, ипзЪдпес! 1опд *); зЪаПс уоЪс! ипзсгип(ипзЪдпес! 1опд *, ипзЪдпес! сЬаг *) ; зЪаПс уо1с! йезГипс (ипзхдпес! 1опд *, ипзЪдпес! 1опд *) ; зЪаПс уо1с! соокеу (ипзЪдпес! 1опд *); зЪаПс ипзЪдпес! 1опд КпЪ[32] = { ОЪ }; зЪаПс ипзЪдпес! 1опд КпК[32] - { ОЪ }; зЪаЪл.с ипзхдпес! 1опд Кп3[32] = { ОЪ }; зЪаПс ипзЪдпес! сЬаг Ъ!:_Кеу[24] = { 0x01, 0x23, 0x45, 0x67, 0x89, ОхаЪ, 0хс<1, Охе!:, ОхГе, ОхЪс, ОхЪа, 0x98, 0x76, 0x54, 0x32, 0x10, 0x89, ОхаЪ, ОхсЪ, Охе!:, 0x01, 0x23, 0x45, 0x67 } ; зЪаЪЪс ипзхдпеЪ зЪогЪ ЪуЪеЫЪ[8] = { 0200, 0100, 040, 020, 010, 04, 02, 01 }; зЪаПс ипзЪдпес! 1опд МдЪуЪе[24] = { 0х800000Ъ, 0х400000Ъ, 0х200000Ъ, ОхЮООООЪ, 0х80000Ъ, 0х40000Ъ, 0х20000Ъ, ОхЮОООЪ, 0х8000Ъ, 0х4000Ъ, 0х2000Ъ, ОхЮООЪ, 0х800Ъ, 0х400Ъ, 0х200Ъ, ОхЮОЪ, 0х80Ъ, 0х40Ъ, 0х20Ъ, ОхЮЪ, 0х8Ъ, 0х4Ъ, 0х2Ъ, 0х1Ъ }; /* Ъзе ЪЪе кеу зсЪес1и1е зресЪПей л.п ЪЪе ЗЪапЪагс! (АЫ31 Х3.92 1981). */ зЪаПс ипз1дпес1 сЬаг рс1[5б] = { 56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 62, 54, 46, 38, 30, 22, 14, б, 61, 53, 45, 37, 29, 21, 13, 5, 60, 52, 44, 36, 28, 20, 12, 4, 27, 19, 11, 3 }; зЪаПс ипзЪдпеЪ сЪаг ЪоЪгоЪ[16] = { 1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28 }; зЪаПс ипзЪдпес! сЪаг рс2[48] = { 13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20, 9, 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, 40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31 }; уод.с1 Ъезкеу(кеу, еЪГ) /* ТЪапкз Ъо ^ашез СИ1од1у & РМ1 Кагп! */ ипзхдпес! сЬаг *кеу; зЪогЪ е<1Г; { гедхзЪег л.пЪ д., з, 1, ш, п; ипзЪдпеЪ сЬаг рс1ш[5б], рсг[5б]; ипзЪдпес! 1опд кп[32]; Гог ( з = 0; з < 56; з++ ) { 1 = рс1[з 3; гп = 1 & 07; рс1ш[з] = (кеу[1 » 3] & ЪуЪеМЪ[т]) ? 1 : 0; } Гог( 1=0; 1 < 16; 1++ ) { л.Г( еЪГ == БЕ1 ) ш = (15 - з.) « 1;
692 Прикладная криптография е1зе т = 1 « 1; п = т + 1; кп[т] = кп[п] = ОЪ; ^ог( з = 0; з < 28; з++ ) { 1=3+ +о+го+[х]; х:П 1 < 28 ) рсг[з] = рс1т[1]; е1зе рсг[Л = рс1т[1 - 28]; } ^ог( з = 28; з < 56; з++ ) { 1=3+ +о+го+[х]; х^ ( 1 < 56 ) рсг[з] = рс1т[1]; е1зе рсг[з] = рс1т[1 - 28]; } ^ог( з = 0; з < 24; з++ ) { рсг[рс2[з] ] ) кп[т] |= ЪхдЪу+е[3]; И ( рсг [рс2 [з+24] ] ) кп[п] |= ЪхдЪу+е[з]; } } соокеу(кп); ге+игп; } з^а+хс уохс! соокеу (гам1) гедхз+ег ипзхдпес! 1опд *гам1; { гедхз+ег ипзхдпес! 1опд *соок, *гам0; ипзхдпес! 1опд с!оид11[32]; гедхз+ег хп+ х; соо к = скэидЪ; ^ог( х = 0; х < 16; х++, гам1++ ) { гамО = гам1++; *соок = (*гаъЮ & ОхООГсООООЬ) « б; *соок |= (*гаъЮ & ОхОООООГсОЬ) « 10; *соок |= (*гам1 & ОхОО^сООООЬ) » 10; *соок++ |= (*гаю1 & ОхОООООГсОЪ) » 6; *соок = (*гаюО & ОхОООЗГОООЬ) « 12; *соок |= (*гамО & ОхООООООЗ^Ь) « 16; *соок |= (*гам1 & ОхОООЗГОООЬ) » 4; *соок++ |= (*гам1 & ОхООООООЗП,) ; } изекеу (скэидЗх) ; ге+игп; } уохс! сркеу(хп+о) гедхз+ег ипзхдпес! 1опд *хп+о; { гедхз+ег ипзхдпес! 1опд *Ггот, *епф; Ггот = КпЪ, епф = &КпЪ[32]; мЫ1е ( ^гош < епф ) *хп+о++ = *Ггош++; ге+игп; } ^гохс! изекеу (^гот)
Исходные коды 693 гедхзЪег ипзхдпес! 1опд *^гош; { гедхзЪег ипзхдпес! 1опд *1;о, *епс!р; Ъо = КпЪ, епф = &КпЪ[32]; мЪИе ( Ъо < епс!р ) *Ъо++ = *^гот++; геЪигп; } л/охс! (ЗезЦпЫоск, оиЪЫоск) ипзхдпес! сЪаг *хпЫоск, *оиЪЫоск; { ипзхдпес! 1опд могк[2]; зсгипсЪ (хпЫоск, могк); йез^ипс(могк, КпЪ); ипзсгип (могк, оиЪЫоск) ; геЪигп; } зЪаЪхс л/охс! зсгипсЪ (ои*:о!:, хп1:о) гедхзЪег ипзхдпес! сЪаг *оиЪо!:; гедхзЬег ипзхдпес! 1опд *хп*:о; { *хпЪо = (*оиЪо:Е++ & Ох^^Ъ) « 24; *хп1:о 1= (*ои*:о!:++ & Ох^Ъ) « 16; *хп1:о |= (*оиЪо!:++ & Ох^Ь) « 8; *хп1:о++ |= (*оиЪоГ++ & Ох^^Ъ) ; *хп1:о = (*оиЪо^++ & Ох^Ъ) « 24; *хпЪо |= (*оиЪо:Е++ & Ох^Ь) « 16; *хпЪо |= (*оиЪоГ++ & ОхГ^Ъ) « 8; *хп*:о 1= (*оиЪо!: & ОхГ^Ъ); геЪигп; } зЬаЬхс уохс! ипзсгип (ои^о^, хпЪо) гедхзЪег ипзхдпес! 1опд *ои*:о1:; гедхзЬег ипзхдпес! сЪаг *хп*:о; { *хпЪо++ = (*оиЪо:Е V V 24) & 0х«Ъ; *хп1:о++ = (*оиЪо1: V V 16) & ОхМЬ; *хпЪо++ = (*ои-ЬоГ V V 8) & Ох^Ь; *хп*:о++ = *ои-ЬоГ++ & 0: *хпЪо++ = (*оиЪо:Е V V 24) & Ох^Ь; *хп1:о++ = (*оиЪо1: V V 16) & Ох^Ь; *хпЪо++ = (*оиЪо^ V V 8) & Ох^Ъ; *хпЪо = *оиЪо^ & ОхМЬ; геЪигп; } зЬаЬхс ипзхдпес! 1опд 5Р1[64] = { 0х0ЮЮ400Ъ, 0х0ЮЮ004Ъ, 0х00000400Ъ, 0х0Ю00404Ъ, 0х00000404Ъ, 0х000Ю400Ъ, ОхООООООООЪ, 0х000Ю404Ь, 0х0ЮЮ400Ъ, 0х0ЮЮ004Ъ, 0х01000400Ъ, ОхОЮЮОООЪ, ОхОООЮОООЪ, 0х00000004Ь, 0x010104041, ОхОЮОООООЪ, 0х01000400Ъ, ОхОЮЮОООЪ, 0х0ЮЮ404Ъ, ОхОООЮОООЪ, 0х00000400Ъ, 0х00000004Ъ, 0х000Ю400Ъ, 0х0Ю00404Ъ,
694 Прикладная криптография 0x000100041., 0х0Ю00004Ь, 0x010000041,, 0х000Ю004Ь, ОхООООООООЬ, 0х00000404Ь, 0х000Ю404Ь, ОхОЮОООООЬ, ОхОООЮОООЬ, 0х0ЮЮ404Ь, 0х00000004Ь, ОхОЮЮОООЬ, 0x010104001,, ОхОЮОООООЬ, ОхОЮОООООЬ, 0х00000400Ь, 0х0ЮЮ004Ь, ОхОООЮОООЬ, 0х000Ю400Ь, 0х0Ю00004Ь, 0х00000400ь, 0х00000004Ь, 0х0Ю00404Ь, 0х000Ю404Ь, 0х0ЮЮ404Ь, 0х000Ю004Ь, ОхОЮЮОООЬ, 0х0Ю00404Ь, 0х0Ю00004Ь, 0х00000404Ь, 0х000Ю404Ь, 0х0ЮЮ400Ь, 0х00000404ь, 0х0Ю00400Ь, 0х0Ю00400Ь, ОхООООООООЬ, 0х000Ю004Ь, 0х000Ю400Ь, ОхООООООООЬ, 0х0ЮЮ004Ь }; зЪа'Ыс ипзЬдпей 1опд 5Р2[64] = { 0х80Ю8020Ь, 0х80008000Ь, 0х00008000Ь, 0х00Ю8020Ь, ОхООЮООООЬ, 0х00000020Ь, 0х80Ю0020Ь, 0х80008020Ь, 0х80000020Ь, 0х80Ю8020Ь, 0х80Ю8000Ь, 0х80000000Ь, 0х80008000Ь, ОхООЮООООЬ, 0х00000020Ь, 0х80Ю0020Ь, 0х00Ю8000Ь, 0х00Ю0020Ь, 0х80008020Ь, ОхООООООООЬ, 0х80000000Ь, 0х00008000Ь, 0х00Ю8020Ь, 0х80Ю0000Ь, 0х00Ю0020Ь, 0х80000020Ь, ОхООООООООЬ, 0х00Ю8000Ь, 0х00008020Ь, 0х80Ю8000Ь, 0х80Ю0000Ь, 0х00008020Ь, ОхООООООООЬ, 0х00Ю8020Ь, 0х80Ю0020Ь, ОхООЮООООЬ, 0х80008020Ь, 0х80Ю0000Ь, Ох80Ю8000Ь, 0х00008000Ь, 0х80Ю0000Ь, 0х80008000Ь, 0х00000020Ь, 0х80Ю8020Ь, 0х00Ю8020Ь, 0х00000020Ь, 0х00008000Ь, 0х80000000ь, Ох00008020Ь, 0х80Ю8000Ь, ОхООЮООООЬ, 0х80000020ь, 0х00Ю0020Ь, 0х80008020Ь, 0х80000020Ь, 0х00Ю0020Ь, 0х00Ю8000Ь, ОхООООООООЬ, 0х80008000ь, 0х00008020Ь, 0х80000000Ь, 0х80Ю0020Ь, 0х80Ю8020Ь, 0х00Ю8000Ь }; з*:аЫс ипзЬдпей 1опд 5РЗ[64] = { 0х00000208Ь, 0х08020200Ь, ОхООООООООЬ, 0х08020008Ь, 0х08000200ь, ОхООООООООЬ, 0х00020208Ь, 0х08000200Ь, 0х00020008Ь, 0х08000008Ь, 0х08000008Ь, 0х00020000Ь, 0х08020208Ь, 0х00020008ь, 0х08020000Ь, 0х00000208Ь, 0х08000000Ь, 0х00000008Ь, 0х08020200Ь, 0х00000200Ь, 0х00020200Ь, 0х08020000Ь, 0х08020008Ь, 0х00020208Ь, 0х08000208Ь, 0х00020200Ь, 0х00020000Ь, 0х08000208ь, 0х00000008Ь, 0х08020208Ь, 0х00000200Ь, 0х08000000Ь, 0х08020200Ь, 0х08000000Ь, 0х00020008Ь, 0х00000208Ь, 0х00020000Ь, 0х08020200Ь, 0х08000200Ь, ОхООООООООЬ, 0х00000200Ь, 0х00020008Ь, 0х08020208Ь, 0х08000200Ь, 0х08000008Ь, 0х00000200Ь, ОхООООООООЬ, 0х08020008Ь, 0х08000208Ь, 0х00020000ь, 0х08000000Ь, 0х08020208Ь, 0х00000008Ь, 0х00020208Ь, 0х00020200Ь, 0х08000008Ь, 0х08020000Ь, 0х08000208Ь, 0х00000208Ь, 0х08020000Ь, 0х00020208Ь, 0х00000008Ь, 0х08020008Ь, 0х00020200Ь }; зЪа1:1с ипзЬдпей 1опд ЗР4[64] = { 0х00802001Ь, 0х00002081Ь, 0х00002081Ь, 0х00000080Ь, 0х00802080Ь, 0х00800081Ь, 0х00800001Ь, 0х00002001Ь, ОхООООООООЬ, 0х00802000Ь, 0х00802000Ь, 0х00802081Ь, 0х00000081Ь, ОхООООООООЬ, 0х00800080Ь, 0х00800001Ь, 0х00000001Ь, 0х00002000Ь, 0х00800000Ь, 0х00802001Ь, 0х00000080Ь, 0х00800000Ь, 0х00002001Ь, 0х00002080Ь, 0х00800081Ь, 0х00000001Ь, 0х00002080Ь, 0х00800080Ь,
Исходные коды 695 0х00002000Ь, 0х00802080Ъ, 0х00802081Ъ, 0х00000081Ъ, 0х00800080Ъ, 0х00800001Ъ, 0х00802000Ъ, 0x008020811., 0х00000081Ъ, ОхООООООООЪ, ОхООООООООЪ, 0х00802000Ъ, 0х00002080Ъ, 0х00800080Ъ, 0х00800081Ъ, 0х00000001Ъ, 0х00802001Ъ, 0х00002081Ъ, 0х00002081Ъ, 0х00000080Ъ, 0х00802081Ъ, 0х00000081ъ, 0х00000001Ъ, 0х00002000Ъ, 0х00800001Ъ, 0х00002001Ъ, 0х00802080Ъ, 0х00800081Ъ, 0х00002001Ъ, 0х00002080Ъ, 0х00800000Ъ, 0х00802001Ъ, 0х00000080Ъ, 0х00800000Ъ, 0х00002000Ъ, 0х00802080Ъ }; зЪаЪхс ипзхдпес! 1опд 5Р5[64] = { ОхОООООЮОЪ, 0х02080100Ъ, 0х02080000Ъ, 0х42000100Ъ, 0х00080000Ъ, ОхОООООЮОЪ, 0х40000000Ъ, 0х02080000Ъ, 0х40080100Ъ, 0х00080000Ъ, ОхО20ООЮОЪ, 0х40080100Ъ, 0х42000100Ъ, 0х42080000Ъ, ОхОООЭОЮОЪ, 0х40000000Ъ, 0х02000000Ъ, 0х40080000Ъ, 0х40080000Ъ, ОхООООООООЪ, 0х40000100Ъ, 0х42080100Ъ, 0х42080100Ъ, 0х02000100Ъ, 0х42080000Ъ, 0х40000100Ъ, ОхООООООООЪ, 0х42000000Ъ, 0х02080100Ъ, 0х02000000Ъ, 0х42000000Ъ, ОхОООЭОЮОЪ, 0х00080000Ъ, 0х42000Ю0Ъ, ОхОООООЮОЪ, 0х02000000Ъ, 0х40000000Ъ, 0х02080000Ъ, 0х42000Ю0Ъ, 0х40080Ю0Ъ, 0х02000Ю0Ъ, 0х40000000Ъ, 0х42080000Ъ, 0х02080Ю0Ъ, 0х40080Ю0Ъ, ОхОООООЮОЪ, 0х02000000Ъ, 0х42080000Ъ, 0х42080Ю0Ъ, ОхОООЭОЮОЪ, 0х42000000Ъ, 0х42080Ю0Ъ, 0х02080000Ъ, ОхООООООООЪ, 0х40080000Ъ, 0х42000000Ъ, 0х00080Ю0Ъ, 0х02000Ю0Ъ, 0х40000100ъ, 0х00080000Ъ, ОхООООООООЪ, 0х40080000Ъ, 0х02080Ю0Ъ, 0х40000Ю0Ъ ) зйаЪхс ипзхдпес! 1опд 5Р6[64] = { 0х20000010ъ, 0х20400000Ъ, 0х00004000ъ, 0х204040ЮЪ, 0х20400000Ъ, ОхООООООЮЪ, 0х204040ЮЪ, 0х00400000Ъ, 0х20004000Ъ, 0х004040ЮЪ, 0х00400000Ъ, 0х200000ЮЪ, 0х004000ЮЪ, 0х20004000Ъ, 0х20000000Ъ, 0х000040ЮЪ, ОхООООООООЪ, 0х004000ЮЪ, 0х200040ЮЪ, 0х00004000ъ, 0х00404000Ъ, 0х200040ЮЪ, ОхООООООЮЪ, 0х204000ЮЪ, 0х204000ЮЪ, ОхООООООООЪ, 0х004040ЮЪ, 0х20404000Ъ, 0х000040ЮЪ, 0х00404000Ъ, 0х20404000Ъ, 0х20000000Ъ, 0х20004000Ъ, ОхООООООЮЪ, 0х204000ЮЪ, 0х00404000Ъ, 0х204040ЮЪ, 0х00400000Ъ, 0х000040ЮЪ, 0х20000010ъ, 0х00400000Ъ, 0х20004000Ъ, 0х20000000Ъ, 0х000040ЮЪ, 0х200000ЮЪ, 0х204040ЮЪ, 0х00404000Ъ, 0х20400000Ъ, 0х004040ЮЪ, 0х20404000Ъ, ОхООООООООЪ, 0х204000ЮЪ, ОхООООООЮЪ, 0х00004000ъ, 0х20400000Ъ, 0х004040ЮЪ, 0х00004000Ъ, 0х00400010ъ, 0х200040ЮЪ, ОхООООООООЪ, 0х20404000Ъ, 0х20000000Ъ, 0х004000ЮЪ, 0х20004010Ъ }; З'Ьа^хс ипзхдпес! 1опд 5Р7[64] = { 0х00200000Ъ, 0х04200002Ъ, 0х04000802Ъ, ОхООООООООЪ, 0х00000800Ъ, 0х04000802Ъ, 0х00200802Ъ, 0х04200800Ъ> 0х04200802Ъ, 0х00200000Ъ, ОхООООООООЪ, 0х04000002Ъ, 0х00000002Ъ, 0х04000000Ъ, 0х04200002Ъ, 0х00000802ъ, 0х04000800Ъ, 0х00200802Ъ, 0х00200002Ъ, 0х04000800Ъ, 0х04000002Ъ, 0х04200000Ъ, 0х04200800ъ, 0х00200002Ъ, 0х04200000Ъ, 0х00000800Ъ, 0х00000802Ъ, 0х04200802Ъ, 0х00200800Ъ, 0х00000002Ъ, 0х04000000Ъ, 0х00200800Ъ,
696 Прикладная криптография 0х04000000Ь, 0х04000802Ь, 0х00200002Ь, 0х04200800Ь, 0х00000802Ь, 0х00200800Ь, ОхООООООООЬ, 0х04000002Ь, зЪаЫс ипзхдпес! 1опд 0х10001040Ь, ОхЮООООООЬ, 0х00040040Ь, 0х10041000Ь, 0х10040000Ь, 0х00041000Ь, 0х00001040Ь, 0х10000040Ь, 0х00041040Ь, 0х00000040Ь, ОхЮООЮООЬ, 0х10040040Ь, ОхООООООООЬ, 0х10040000Ь, 0х10041040Ь, 0х00001040Ь, 0х00200800Ь, 0х04200002Ь, 0х04000000Ь, 0х00000802Ь, 0х04000002Ь, ОхООООООООЬ, 0х00200802Ь, 0х04000800Ь, 5Р8[64] - { ОхООООЮООЬ, 0х10001040Ь, 0х10040000Ь, 0х00041040Ь, 0х10000040Ь, 0х00040040Ь, ОхООООООООЬ, ОхЮООЮООЬ, 0х00040000Ь, 0хЮ040040Ь, 0х00000040Ь, ОхЮООООООЬ, 0хЮ04Ю40Ь, ОхЮООЮООЬ, 0х0004Ю00Ь, 0х00040040Ь, 0х00200000Ь, 0х04200002Ь, 0х04000800Ь, 0х00200802Ь, 0х04200802Ь, 0х00000002Ь, 0х04200000Ь, 0х00000800Ь, 0х00040000Ь, 0х00000040Ь, 0хЮ04Ю40Ь, ОхООООЮООЬ, ОхЮООЮООЬ, 0хЮ040040Ь, ОхООООООООЬ, 0х0004Ю40Ь, 0хЮ04Ю00Ь, ОхООООЮООЬ, 0хЮ000040Ь, 0х00040000Ь, 0х00040040Ь, 0хЮ00Ю40Ь, 0х0004Ю00Ь, ОхЮООООООЬ, 0х04000802Ь, 0х00000002Ь, 0х00200000Ь, 0х04200800Ь, 0х04200000Ь, 0х04200802Ь, 0х00000800Ь, 0х00200002Ь }; 0хЮ04Ю40Ь, ОхЮООООООЬ, 0х0004Ю00Ь, 0х00000040Ь, 0х0000Ю40Ь, 0хЮ04Ю00Ь, 0хЮ040040Ь, 0х00040000Ь, ОхООООЮООЬ, 0х0004Ю40Ь, 0хЮ040000Ь, 0хЮ00Ю40Ь, 0хЮ000040Ь, ОхООООООООЬ, 0х0000Ю40Ь, 0хЮ04Ю00Ь }; з^аИс У'охс! <1ез^ипс (Ыоск, кеуз) гед1зЬег ипз1дпес1 1опд *Ыоск, *кеуз; { гедхз^ег ипзЬдпес! 1опд ^а1, могк, гхдЬЬ, 1е^^; гедЬз^ег хп*: гоипс!; 1е^!: = Ыоск [О]; г1дЪ{: = Ыоск[1]; ыогк « ( (1е?Ь^ » 4) А ЫдЫ:) & ОхОЮЮЮГЬ; г1дЪ{: А= мог к; А= (могк « 4); могк = ((1еПЪ » 16) А ЫдЫ) & ОхОООО^^^^Ь; ЫдЫ: А= могк; 1е^1: А= (могк « 16) ; могк = ((гхдЫ: » 2) А 1еГ^Ь) & ОхЗЗЗЗЗЗЗЗЬ; А= могк; г1дЫ: А= (могк « 2); могк = ((гЬдЫ: » 8) А & ОхОО^^ОО^^Ь; 1е^1: А= могк; ЫдЫ: А= (могк « 8); ЫдЫ: - ((ЫдЫ: « 1) | ({г±дЪЪ » 31) & 1Ь) ) & Ох«К««Ь; могк = (1е^Ь^ А г1дЬЬ) & ОхааааааааЬ; А= могк; г!дЫ: А= могк; 1еШ: = (|1ет « 1) | ((1ет » 31) & 1Ь) ) & Ох««««Ь; Гог( гоипс! = 0; гоипс! < 8; гоип<1++ ) { ** могк = (ЫдЫ: « 28) | (ЫдЫ: » 4);
Исходные коды 697 1 = 1 = 1 = могк ^а1 ^а1 ^а1 ^а1 могк Гуа1 €ча1 ^а1 | - ^а1 | = л= могк = могк л= ^а1 = ^а1 | = ^а1 | = ^а1 | = могк = ±ча1 | = ^а1 | = ^а1 | = ^а1 | = г1дЫ: л= } *кеуз++; 5Р7[ могк 5Р5[(могк 5РЗ[(могк 5Р1 [ (могк г1дЫ: 5Р8[ могк 5Рб[(могк 5Р4[(могк 5Р2[(могк : Гта1; (1е^^ « *кеуз++; ЗР7[ могк ЗР5[(могк ЗРЗ[(могк ЗР1[(могк 1еГЫ: ЗР8[ могк ЗР6[(могк ЗР4[(могк ЗР2[(могк = Г^а1; & 0x3^Ь]; » 8) & 0x3^Ь]; » 16) & 0x3^Ь]; » 24) & 0x3^Ь]; кеуз++; & 0x3^Ь]; » 8) & 0x3^Ь]; » 16) & 0x3ГЬ]; » 24) & 0x3^Ь]; 28) | (1ет » 4); & 0x3^Ь]; » 8) & ОхЗ^Ь]; » 16) & ОхЗ^Ь]; » 24) & 0x3^Ь]; кеуз++; & ОхЗПЛ ; » 8) & 0x3ГЬ]; » 16) & 0x3^Ь]; » 24) & ОхЗ^Ь]; гхдЪ*: = (гхдЬ^ « 31) могк = (1е^1: А г1дЬ^) 1е^^-Ь л= могк; г1дЬ^ л= могк; 1е^^ = (1е^^1: « 31) могк = ( (1е^Ъ^ » 8) л г1дЬ^ А= могк; 1е^^^ А= (могк « 8); могк = ( (1е^^ » 2) А гхдЫ: А= могк; 1е^Ъ1: А= (могк « 2) ; могк = ( (гхдЪЪ » 16) ‘ 1е^^ А= могк; г1дЬ^ А= (могк « 16) ; могк = ((г1дЬ^ » 4) А 1е^1:^ А= могк; г1дЬ^ А= (могк « 4); *Ыоск++ = гхдЫ:; *Ыоск = 1е^Ь; ге^игп; (гхдЪ*: » 1) ; & ОхааааааааЬ; (1еШ: » 1); ггдЪ*:) & ОхОО^ОО^Ь; ггдЪ*:) & ОхЗЗЗЗЗЗЗЗЬ; 1е^1:) & ОхОООО^^Ь; 1е^1:^) & 0х0^0Г0^0^Ь; } /* УаИс1а^1оп зе^з: * 5л.пд1е-1епди1 кеу, з1пд1е-1епд№ р1а1п1:ех^ * Кеу : 0123 4567 89аЪ еде? * Р1ал.п : 0123 4567 89аЬ с<1е7 * С1р11ег : с957 4425 6а5е с131с! 'к'к'к-к-к-к'к'к'к-к-к-к-к'к-к'к-к'к-к'к-к-к'к-к-к-к-к-к'к'Ыск-к-к-к-к-к-к-к-к-к-к-к-к'к-к'к'к-к-к-к-к-к'к-к-к-к-к-к-к-к-к-к'к-к-к-к'к-к-к/
698 Прикладная криптография уо1с1 <3ез_кеу (с!ез__сГх *с!с, ипз1дпес! сЬаг *кеу){ с!езкеу(кеу,ЕЫ0); сркеу(с!с->ек); сАезкеу (кеу, БЕ1) ; сркеу (с!с—>с!к) ; } /* ЕпсгурГ зеуега1 Ыоскз л.п ЕСВ тос!е. Са11ег 15 гезропзхЫе Гог зЪогГ Ыоскз. */ уо1с! с!ез_епс (с!ез__сГх *с!с, ипз1дпес! сЬаг МаГа, 1пГ Ыоскз) { ипзхдпес! 1опд могк[2]; 1ПГ д.; ипз1дпес! сЪаг *ср; ср = с!аГа; Гог (1=0; 1<Ыоскз; 1++) { зсгипсЪ(ср,могк) ; с!езГипс (могк, с!с->ек) ; ипзсгип(могк, ср); ср+=8; } } уол.с! с!ез__с!ес (с!ез__сГх *с!с, ипз1дпес! сЬаг МаГа, л.пГ Ыоскз) { ипзхдпес! 1опд могк[2]; Л-пГ д.; ипзхдпес! сЬаг *ср; ср = с!аГа; Гог (1=0; л.<Ыоскз; 1++) { зсгипсЬ(ср,ыогк) ; с!езГипс (могк, с!с->с!к) ; ипзсгип(могк,ср); ср+=8; } } лтол.с! тал.п ^ол.с!) { с!ез_сГх с!с; 1пГ 1 ; ипзхдпес! 1опд с!аГа[10]; сЬаг *ср,кеу[8] = {0x01, 0x23, 0x45, 0x67, 0x89, ОхаЪ, Охсс!, ОхеГ} ; сЪаг х[8] = {0x01, 0x23, 0x45, 0x67, 0x89, ОхаЪ, Охсс!, 0хе7}; ср = х; с!ез_кеу (&с!с, кеу) ; с!ез_епс (&с!с, ср, 1) ; рг л.пГГ("Епс(0..7,0..7) = "); Гог (1=0; 1<8; 1++) рптГГ ("%02х ", ( (ипз1дпес! л.пГ) ср [д.]) &0х00ГГ) ; рг1пГГ("\п"); с!ез_с!ес (&с!с, ср, 1) ; рг1пГГ("Бес(аЬоуе,0..7) = ") ; Гог(1=0;1<8;1++) ргл.пГГ("%02х ",((ипз1дпес! 1пГ)ср[Л])&0х00ГГ); рг1пГГ("\п");
Исходные коды 699 ср = (сЬаг *) <1аЬа; ^ог (1=0; К10; 1++) (ХаЬа [ 1 ] =1; сАез_епс(&с!с,ср,5); /* Епс 5 Ыоскз. */ ^ог(1=0;К10; 1+=2) рг1П^:^("В1оск %01<1 = %081х %081х.\п", 1/2,<ЗаЬа[1] , <2аЬа[1+1]); с!ез_с1ес (&с!с, ср, 1); <3ез_с1ес (&йс, ср+8, 4) ; ^ог (1=0; 1<Ю; 1+=2) рг1п1:1: ("В1оск %01<3 = %081х %081х.\п//, д./2,с!аЪа[:1] , <1аЬа[1+1]) ; } ЮК191 #1пс1и<3е <зМл.о.11> #ЬеПпе ЬОК1ВЬК 8 */ ЫеНпе КОШТОЗ 16 */ ЬуреЬе!: ипзЬдпес! 1опд ЬОК! Ыоскз */ ехЬегп Ьопд */ ехЬегп сЬаг соругЬдЬЬ 1ок1кеу[2]; *1ок1_1л.Ъ_уег; */ /* N0 Ьу^ез 1П а ЬОК1 «ЗаЬа-Ыоск /* N0 о! Ь0К1 гоипЬз Ьопд; /* Ьуре зрес1^1са1:1оп Ног аИдпе<3 /* 64-М1: кеу изе<2 Ьу Ь0К1 гоиЫпез /* ЗЬгЬпд ЫЬЪ Vе^з^оп по. & /* ЬесЬаге ргоЬоЬурез Ног ИЬгагу #1Ме! ЗТЬС ГипсЫопз */ ехЬегп Vо^с^ еп1ок1(сЬаг *Ъ); ехЬегп Vо^с^ с!е1ок1 (сЬаг *Ъ) ; ехЬегп Vо^с^ зеЫокЬкеу (сЬаг кеу [Ь0К1ВЬК]) ; #е1зе /* е1зе }изЬ йес1аге ИЬгагу ^ипсЫопз ехЬегп */ ехЬегп Vо^с^ еп1ок1(), с!е1ок1(), зеЫокЬкеу() ; #епсИг 5Т0С сЬаг Р[32] = { 31, 23, 15, 7, 30, 22, 14, б, 29, 21, 13, 5, 28, 20, 12, 4, 27, 19, 11, 3, 26, 18, 10, 2, 25, 17, 9, 1, 24, 16, 8, О }; Ьурейе*: зЬгисЬ { зЬогЬ деп; *1е1й */ зЬогЪ ехр; ^ипсЫоп */ /* ЬггеЬисЬЫе ро1упош1а1 изе<2 1п ЬЫз /* ехропепЬ изес! Ьо депегаЬе ЬЫз з } зГп <1езс;
700 Прикладная криптография зГп <3езс з^п[] = { { /* 101110111 */ 375, 31}, { /* 101111011 */ 379, 31} { /* 110000111 */ 391, 31}, { /* 110001011 */ 395, 31} { /* 110001101 */ 397, 31}, { /* 110011111 */ 415, 31} { /* 110100011 */ 419, 31}, { /* 110101001 */ 425, 31} { /* 110110001 */ 433, 31}, { /* 110111101 */ 445, 31} { /* 111000011 */ 451, 31}, { /* 111001111 */ 463, 31} { /* 111010111 */ 471, 31}, { /* 111011101 */ 477, 31} { /* 111100111 */ 487, 31}, { /* 111110011 */ 499, 31} { 00 , 00} ЬурейеЬ з^гис1: { Ьопд 1ок1_зиЬкеуз [К0Ш05]; } 1окл._с1:х; зЬаЫс Ьопд Ы); /* <3ес1аге ЬОК1 ^ипсЫоп И */ з1:аЫс зЪогЬ з () ; /* <2ес1аге Ь0К1 5-Ъох з */ #<ЗеЫпе К0Ы2 (Ь) Ь - ((Ь « 12) | (Ь » 20)); #с!еЫпе КОЫЗ (Ъ) Ь - ((Ь « 13) | (Ь » 19)); ЫТТЬЕ_ЕЫ01АЫ #с!еЫпе Ьзыар(сЬ) { гедЬзЬег сЪаг с; с = сЬ[0]; сЬ[0] = сЬ[3]; сЬ[3] с - сЬ[1]; сЬ[1] « сЬ[2]; сЬ[2] с = сЬ[4]; сЪ[4] * сЬ[7]; сЪ[7] с = сЬ[5]; сЬ[5] - сЪ[6]; сЬ[б) } #епсШ: У01С! зеЫокЬкеу (1ок1_с1:х *с, сЬаг *кеу) { гедЬзЬег 1; гед1з1:ег Ьопд КЬ, КК; ЫТТЬЕ__ЕЫ01АЫ Ъзмар(кеу); /* зюар Ьу1:ез гоипй Щ ЫЬЫе- епсИап */ #епсЫЬ КЬ = ((Ьопд *)кеу)[0]; КК. = ((Ьопд *)кеу)[1]; ^ог (1=0; лХКОДОТОЗ; 1+=4) { /* СепегаЪе ЬЬе 16 зиЬкеуз */ с->1ок1_зиЬкеуз[1] = КЬ; КОЫ2 (КЬ) ; с->1ок1_зиЬкеуз[1+1] = КЬ; КОЫЗ (КЬ) ; с->1ок1_зиЬкеуз[1+2] = КК; КОЫ2 (КК); с->1ок1_зиЬкеуз[1+3] = КК; КОЫЗ (КК); } \ \ = с; \ = с; \ = с; \ = с; \ #1ШеЬ ЫТТЬЕ ЕЫЭ1АЫ
Исходные коды 701 Ьзмар(кеу); /* змар Ьу+ез Ьаск д.1: 1д.1:1:1е-*еп<±1ап */ #епсШ: } VО^С^ еп1ок1 (1окл._с!:х *с, сЬаг *Ь) { гед151:ег 1; гед1з+ег Ьопд Ъ, К; /* 1е!:Ъ & г1дЫ: да*:а Ъа^ез */ #1Ме^ Ь1ТТЪЕ_ЕЫ01М1 Ьзюар(Ь); /* змар ЬуЪез гоипс! И Ии:1е- епсИап */ #епсШ: Ъ = ((Ьопд *)Ь)[0]; К = ((Ьопд *)Ь)[1]; ^ог (1=0; ККОШБЗ; 1+=2) { /* ЕпсгурЪ ЪЪе 16 зиЬкеуз */ Ъ А= 1: (К, с->1окл._зиЪкеуз [1]); К А= I (Ъ, с->1окл._зиЪкеуз [1+1]) ; } ((Ьопд *)Ь)[0] = К; /* У = змар(ЪК) */ ( (Ьопд *)Ь) [1] = Ь; #1^с1е^ ЫТТЪЕ_ЕЫ01АЫ Ьзмар(Ь); /* змар ЬуЪез гоипс! И И!:1:1е- епсНап */ #епсИ^ } VО^С^ с!е1ок1 (1окд._с1:х *с, сЪаг *Ь) { гед1з+ег 1; гед1з!:ег Ьопд Ъ, К; /* 1е^ & г1дЫ: йаЪа Ьа^ез */ #1Ме^ ЫТТЪЕ_ЕЫ01АЫ Ьзмар(Ь); /* змар Ьу!:ез гоипс! И 1лД:1:1е- епсНап */ #епс11^ Ъ = ((Ьопд *)Ь)[0]; /* ЪК - X ХОК К */ К = ((Ьопд *)Ь)[1]; ^ог (1=К0Ш03; 1>0; л.-=2) { /* зиЬкеуз л.п ^еVе^зе огс!ег */ Ъ А= !: (К, с->1окл.__зиЪкеуз [1-1]); К А= !: (Ъ, с->1ок1__зиЪкеуз [1-2]) ; } ((Ьопд *)Ь)[0] = К; /* У = ЬК ХОК К */ ((Ьопд *)Ь)[1] = Ъ;
ш Прикладная криптография } #с1е^1пе МАЗК12 0x0^^^ /* 12 ЫЪ тазк ^ог ехрапзгоп Е */ зЪаЫс Ьопд Пг, к) гед1з1:ег Ьопд г; /* Ьа-Ьа Vа1ие К (1-1) */ Ьопд к; /* Кеу К (л.) */ { Ьопд а, Ь, с; /* 32 ЪИ: 5-Ъох оиЪриЪ, & Р оиЪриЪ */ а - г А к; /* А = КЦ-1) ХОК К(л.) */ /* мапЪ Ъо изе з1ом зрееЪ/зтаЫ з1ге Vе^з^оп */ Ь = ( (Ьопд) з ( (а & МА5К12)) ) | /* В = 5(Е(К(л.- 1) ) АК(л.) ) */ ((Ьопд)з(((а » 8) & МАЗК12)) « 8) | ((Ьопд)з(((а » 16) & МА5К12)) « 16) | ((Ьопд)з((((а » 24) | (а « 8)) & МА5К12)) « 24); регт32(&с, &Ъ, Р); /* С = Р(3( Е(К(1-1)) ХОК К(1))) */ геЪигп(с); /* 1 геЪигпз ЪЪе лгези1Ъ С */ } зЪаЫс зЪогЪ 5(1) гед15Ъег Ьопд 1; /* геЪигп З-Ьох Vа1ие ^ог л.приЪ 1 */ { гед1з1:ег зЪогЪ г, с, V, Ь; зЪогЪ ехр8(); /* ехропепЫаЫоп гоиЫпе ^ог СЕ(2А8) */ г = ( (л»8) & Охе) | (1 & 0x3); /* лгом Vа1ие-Ъор 2 & ЪоЪЪот 2 */ с = (1»2) & Ох^Е; /* со1итп Vа1ие- тл.с!с11е 8 ЫЪз */ Ъ = (с + ((г * 17) А 0х^) ) & 0x1:^; /* Ьазе Vа1ие ^ог З^п */ V = ехр8(Ъ, з^п[г].ехр, з^п[г].деп); /* 3^п[г] = 1: А ехр тос! деп */ геЪигп(V); } #с1е^1пе МЗВ 0х80000000Ь /* МЗВ о^ 32-Ы1: ъюгЪ */ регт32 (оиЪ, 1п , регт) Ьопд *оиЪ; /* ОиЪриЪ 32-ЫЪ Ыоск Ъо Ье регтиЪес! */ Ьопд *л.п; /* 1приЪ 32-ЫЪ Ыоск а^Ъег регтиЪаЫоп */ сЪаг регт[32]; /* РегтиЪаЫоп аггау */ { Ьопд тазк = МЗВ; /* тазк изеЪ Ъо зеЪ ЫЪ л.п оиЪриЪ */ гед1з1:ег 1пЪ 1, о, Ь; /* л.приЪ ЫЪ по, оиЪриЪ ЫЪ по, Vа1ие */ гед151ег сЪаг *р = регт; /* рЪг Ъо регтиЪаЫоп аггау */
Исходные коды 703 *оиЪ = 0; Еог (о=0; о<32; о++) { р05Л.Ъ10П о */ 1 = (л.пЪ) *р++; Ъо оиЪриЪ о */ Ь = (*л.п » 1) & 01; 1* (Ь) *оиЪ |= шазк; оиЪриЪ 1 */ шазк »= 1; пехЪ МЪ * / } } /* с1еаг оиЪриЪ Моек */ /* Гог еасЬ оиЪриЪ МЪ /* деЪ 1приЪ МЪ регшиЪес! /* Vа1ие оЪ л.приЪ МЪ 1 */ /* 1Ъ ЪЬе 1приЪ МЪ 1 13 зеЪ */ /* ОК 1П шазк Ъо /* ЗМЪЪ шазк Ъо #с1еЪл.пе 312Е 256 зЬогЪ ти1Ъ8(а, Ь, деп) зЬогЪ а, Ь; зЬогЪ деп; */ { зЬогЪ ргойисЪ = 0; /* 256 е1ешепЪз 1П СЕ(2А8) */ /* орегапс!з Ъог ши1Ъ1р1у */ /* 1ггес1ис1Ме ро1упот1а1 депегаЪл.пд Са1о1з ПеЫ юМ1е(Ь != 0) { гего */ ЪЗВ оЪ Ь зеЪ */ л.Ъ (Ь & 01) ргойисЪ А= а; а «= 1; л.Ъ (а >= 312Е) а А= деп; Ь »= 1; } геЪигп(ргойисЪ) ; /* гези1Ъ оЪ ти1Ъ1рНсаЪл.оп */ /* мМ1е ши1Ъ1рИег 13 поп- /* ас!с1 ти1Ъ1рИсапс1 л.Г /* зМЕЪ ти1Ъ1рИсапс1 опе р1асе /* апс! тос!и1о гес!исе пеес1ес! */ /* зМЪЪ ти1Ъ1рИег опе р1асе */ } зЬогЪ ехр8(Ьазе, ехропепЪ, деп) зЬогЪ Ьазе; /* Ьазе оЪ ехропепЪ1аЪл.оп */ зЬогЪ ехропепЪ; /* ехропепЪ */ зЬогЪ деп; /* л.ггес!ис1Ые ро1упот1а1 депегаЪ1пд Са1о1з Е1е1с1 - */ { зЬогЪ ассит = Ьазе; зЬогЪ гези1Ъ = 1; (Ьазе == 0) геЪигп(0); мМ1е (ехропепЪ != 0) { /* зирег1псгеаз1пд зедиепсе оЪ Ьазе /* гези1Ъ оЕ ехропепЪ1аЪ1оп */ /* гего Ьазе зресз-Мес! ЪЬеп /* ЪЬе гези1Ъ 15 "0" л.Ъ Ьазе =0 */ /* гереаЪ мМ1е ехропепЪ поп-гего
704 Прикладная криптография л.1: (( ехропепЪ & 0x0001) — 0x0001) /* ти11:хр1у Щ ехр 1 */ гезиИ: * ши1^8 (гези1!:, ассит, деп) ; ехропепЪ »= 1; /* зМ^ ехропепЪ Ъо пех!: сИдл.1: */ ассиш =* ти1!:8 (ассит, ассит, деп); /* & зсрхаге */ } ге1:игп (гези1Ъ) ; } Vо^с^ 1окх_кеу (1ок1__с!:х *с, ипзхдпес! сЬаг *кеу) { зеЫокхкеу (с, кеу); } ^юхс! 1окх_епс (1окх_с!:х *с, ипзхдпес! сЬаг *с!а1:а, хп! Ыоскз) { ипзхдпес! сЬаг *ср; хп!: х; ср = с!а!:а; !:ог (х=0;х<Ыоскз;х++) { еп1окх(с,ср); ср+=8; } } Vо^с^ 1окх_с!ес (1окх_с!:х *с, ипзхдпес! сЬаг *с!аЪа, хп!: Ыоскз) { ипзхдпес! сЬаг *ср; хп!: 1; ср = <3а!:а; ^ог(х=0;х<Ь1оскз;х++) { с!е1окх (с, ср); ср+*8; } } лгохс! тахп ("^охс!) { 1окх_с!:х 1с; ипзхдпес! 1опд с!аЪа [ 10]; ипзхдпес! сЬаг *ср; ипзхдпес! сЬаг кеу[] = (0,1,2, 3, 4, 5, 6, 7} ; хп!: х; ^ог (х=0; х<10; х++) йаЪа [1] =1; 1окх_кеу(&1с,кеу); ср = (сЬаг *)с!а!:а; 1окх_епс(&1с,ср, 5); ^ог (х=0;х<10;х+*=2) ргхп!:^ ("В1оск %01с! = %081х %081х\п", х/2,с!а!:а[х] ,с!а!:а[х+1]) ; 1окх_с!ес (&1с,ср,1); 1окх_с!ес (&1с,ср+8, 4) ; ^ог(х=0;х<10;х+=2) ргхп«("В1оск %01с! - %081х %081х\п", х/2,с!аЪа[х] , <За1:а[х+1]); }
Исходные коды 705 ЮЕА ЪуресЗеЪ ипз1дпес1 сЬаг Ьоо1еап; /* Vа1ие5 аге ТШЕ ог ЕАЪЗЕ */ Ъурейе*: ипз1дпес! сЬаг ЬуЪе; /* уа1иез аге 0-255 */ ЪурейеЪ ЪуЪе *ЬуЪерЪг; /* роллЪег Ъо ЪуЪе */ ЪурейеЪ сЬаг *зЪгд.пд;/* ро1пЪег Ъо АЗС11 сЬагасЪег зЪгллд */ Ъурес1еЪ ипзгдпес! зЬогЪ ъгогсИб; /* Vа1иез аге 0-65535 */ Ъуре<ЗеЪ ипз1дпес1 1опд \лгогс132; /* Vа1иез аге 0-4294967295 */ #л.Ъпс1еЪ ЮТЕ #<1еЪ1пе ЕАЪЗЕ 0 #с1еЪл.пе ЮТЕ (! ЕАЪЗЕ) #епс11Ъ /* л.Ъ ТШ поЪ а1геас!у с!еЪл.пе<1 */ #1Ъпс1еЪ Ш1п /* л-Е ш1п шасго поЪ а1геас!у с1еЪ1пес! */ МеЪЪпе пи.п(а,Ъ) ( (а)<(Ь) ? (а) : (Ь) ) #с1еЪл.пе тах(а,Ъ) ( (а)>(Ь) ? (а) : (Ъ) ) #епсШ: /* л.Ъ пип шасго поЪ а1геас!у с1еЪ1пе<3 */ #с1еЪ1пе ЮЕАКЕУ512Е 16 #<ЗеЪл.пе ЮЕАВЪОСК312Е 8 #с1еЪ1пе ЮЕАКСШЪЗ 8 #с1еЪл.пе ЮЕАКЕУЪЕЫ (6*ЮЕАКСШ05+4) Ъуре<1еЪ зЪгисЪ{ ж>гс116 ек [ ЮЕАКЕУЪЕЫ ], йк [ ЮЕАКЕУЪЕЫ ] ; }1<Зеа_сЪх; /* Епс! 1пс1ис1ез Ъог ЮЕА.С */ #л.Ъс1еЪ ЮЕА32 /* Ъзе >16-ЫЪ Ъетрогагиез */ #йеЪл.пе 1о\Л6(х) ( (х) & ОхГЕЕЕ) Ъуре<ЗеЪ ипз1дпе<3 1пЪ ил.пЪ16;/* аЪ ЪЕАЗТ 16 ЫЪз, шауЬе тоге */ #е1зе #с!еЪ:те 1ом16(х) (х) /* ЪМз 13 оп1у еуег аррПес! Ъо ил.пЪ16'з */ ЪуресЗеЪ ъюгс116 и1пЪ16; #епс11Ъ #1МеЪ 5 МАЪ Ь_С АС НЕ 5ЪаЪл.с иЪпЪ16 ши1(гед1зЪег и1пЪ16 а, гед1зЪег ил.пЪ16 Ь) { гедхзЪег \люгс!32 р; р = (ъгогс132)а * Ь; ^ (Р) { Ь = 1ом16(р); а = р»16; геЪигп (Ь - а) + (Ь < а); } е1зе л.Ъ (а) { геЪигп 1-Ь; } е1зе { геЪигп 1-а; } } /* ти1 */
706 Прикладная криптография #епсШ /* 5МАЬЬ_САСНЕ */ зЪаЪ1с и1п!:16 ши1IпV (ид.п*:16 х) { и1п-Ыб 1:0, 1:1; и!п!:16 у; (х <= 1) ге+игп х; /* 0 ап<1 1 аге зе1У-1пуегзе */ 1:1 = 0х10001Ь / х; /* 51псе х >= 2, 1Ыз Й1з т+о 16 Ы+з */ у = 0х10001Ь % х; (У — 1) ге+игп 1ом1б(1-+1); 1:0 = 1; <1о { ^ = X / у; х = х % у; 1:0 += ч * 1:1; И (х == 1) ге1игп 1:0; ^ = у / х; у = у % х; 1:1 += д * ^0; } мМ1е (у != 1); ге+игп 1ом1б(1-+1); } /* тик!^ */ з!:а1:1с VО^с^ ЫеаЕхрапсЖеу (Ъу+е сопз!: *изегкеу, могс11б *ЕК) { 1п1: 1,3; Уог (з=0; з<8; з++) { ЕК [з ] = (изегкеу [0] «8) + изегкеу[1]; изегкеу += 2; } 1ог (1=0; з < ЮЕАКЕУЪЕЫ; з++) { 1++; ЕК[1+7] = ЕК[1 & 7] «9 | ЕК[1+1 & 7] » 7; ЕК += 1 & 8; 1 &= 7; } } /* ЫеаЕхрапсЖеу */ з!:а+1с Vо^с^ 1<1еа1т7ег1:Кеу (могс116 сопз!: *ЕК, могс!16 ИК [ЮЕАКЕУЬЕЫ]) { 1П+ 1; итИб 1:1, 1:2, 1:3; \л/огс!161етр[ЮЕАКЕУ1_ЕЫ]; ж>гй16 *р = +етр + ЮЕАКЕУЬЕЫ; 1:1 = ти11тг (*ЕК++) ; 1:2 = -*ЕК++; 1:3 = -*ЕК++;
Исходные коды 707 *—р = глиИтт (*ЕК++) ; *—р = 1:3; *—р = 1:2; *—р = 1:1; ^ОГ (1 = 0; 1 < ЮЕАК0Ш03-: 1:1 = *ЕК++; *— р = *ЕК++; *—р « и; 1:1 = ти11ггу (*ЕК++); 1:2 = -*ЕК++; 1:3 = -*ЕК++; *—р = шиИтт (*ЕК++) *—р = 1:2; *—р = 1:3; *—р * 1:1; } Ы = *ЕК++; *—р = *ЕК++; ★ —р = 1:1; 1:1 « ти11тт' (*ЕК++) ; Ь2 = -*ЕК++; ЪЗ = -*ЕК++; *—р = ти11ггу (*ЕК++) ; -Р = ИЗ ~р = 1:2 -р = И1 /* Сору апс! йезЪгоу Ъетр сору */ тетсру(0К, Ъетр, з1гео^(Ъетр)); 1:ог(1—0;1<IБЕАКЕУЬЕЫ;1++)Ъетр[1]=0; } /* 1с1еа1пуег1:Кеу */ ЗМАЪЬ_САСНЕ #с1е^1пе МОЬ(х,у) (х = ти1 (1ом16 (х) , у) ) #е1зе /* !ЗМАЬЪ_САСНЕ */ Н?бе± АУ010_ЛМР5 #с!е^1пе М11Ь(х,у) (х = 1ом16(х-1) , 1:16 = 1ом16 ( (у) -1) , \ 1:32 = (ъюгсШ) х*1:16 + х + 1:16 + 1, х = 1ом16 (1:32) , \ 1:16 = 1:32»16, х = (х-1:16) + (х<И16) ) #е1зе /* !АУ010_Л1МР5 (йе^аиИ:) */ #с1е^1пе М1Л(х,у) \ ((1:16 = (у)) ? \ (х=1ом16(х)) ? \ 1:32 = (юогй32)х*1:16, \ х = 1ом16 (1:32) , \ 1:16 = И32»16, \ х = (х-1:16) + (х<1:16) \ : \ (х = 1-Ы6) \ : \ (х = 1-х)) #еп(И^ #епсШ:
708 Прикладная криптография зЬаЬл.с VО^с^ ЫеаС^рЬег (ЪуЬе *л.пЪиЕ, ЪуЬе *оиЬЪиЕ, могсИб *кеу) { гед1з1:ег ил.п1:16 х1, х2, хЗ, х4, з2, зЗ; юогс116 *л.п, *оиЬ; #л.Еп<Зе^ 5МАЬЬ_САСНЕ гед1зЬег ил.пЫ6 Ь16; /* Тешрогаг1ез пее<1ес1 Ьу М11Ь шасго */ гед1зЬег \лгог<332 Ь32; #епс!1^ 1ПЬ г = ЮЕАКОШБЗ; л.п = (жэгс116 *)1пЬиГ; х1 = *л.п++; х2 = *1П++; хЗ = *1П++; х4 = *л.п; #л.Еп<ЗеЕ Н1СНЕ1КЗТ х1 = (х1 »8) | (х1«8); х2 = (х2 »8) I (х2«8); хЗ = (хЗ »8) | (хЗ«8); х4 = (х4 »8) I (х4«8) ; #епсШ: <Зо { М11Ъ (х1, * кеу++) ; х2 += *кеу++; хЗ += *кеу++; М11Ь (х4, *кеу++) ; зЗ = хЗ; хЗ А= х1; МОЬ(хЗ, *кеу++); 52 = х2; х2 А= х4; х2 += хЗ; МОЬ(х2, *кеу++); хЗ += х2; х1 А= х2; х4 А= хЗ; х2 А= зЗ; хЗ А= з2; } мЬНе (—г) ; ШЬ(х1/ *кеу++) ; хЗ += *кеу++; х2 += *кеу++; ШЬ(х4, *кеу); оиЬ = Ыог<31б *)оиЬЬиЕ; #л.Е<ЗеЕ Н1СНЕ1КЗТ *оиЬ++ = х1; *оиЬ++ = хЗ; *оиЬ++ = х2; *оиЬ = х4; #е1зе /* !Н1СНЕ1КЗТ */ *оиЬ++ = (х1 »8) | (х1«8); *оиЬ++ = (хЗ »8) | (хЗ«8); *оиЬ++ = (х2 »8) | (х2«8); *оиЬ = (х4 »8) | (х4«8) ;
Исходные коды 709 #епсНГ } /* ЫеаСЪрЬег */ люл-с! 1<3еа_кеу (л.с!еа_сГх *с, ипз1дпес! сЪаг *кеу) { ЫеаЕхрапсЖеу (кеу, с->ек) ; 1<Зеа1т7-егГКеу (с->ек, с-><3к) ; } люд-с! л.<1еа__епс (л.<Зеа__сГх *с, ипз1дпес1 сЪаг МаГа, л.пГ Ыоскз) { 1ПГ л.; ип51дпе<3 сЪаг *<3 = с!аГа; Гог (1=0; КЫоскз; 1++) { ЫеаСЪрЬег (с1, с!, с->ек) ; с!+=8; } } ■у'ол.с! л.с!еа_с1ес (Ыеа^сГх *с, ипзЪдпес! сЬаг *<2аГа, л.пГ Ыоскз) { 1ПГ 1; ипзхдпес! сЬаг М = с!аГа; Гог (1=0; КЫоскз ,*1++) { ЫеаСГрЪег <3, с-><3к) ; с!+=8; } } #л.пс1ис!е <зГсИо.]1> #л.Гп<ЗеГ ВЪОСКЗ #л.Гп<ЗеГ КВУТЕЗ #<ЗеГл.пе КВУТЕЗ 1024 #епсЫГ #с1еГл.пе ВЪОСКЗ (64*КВУТЕЗ) #еп<Зл.Г 1ПГ тад.п ( ■\7'01с1) { /* ТезГ <ЗгКег Гог ЮЕА ЫрЪег */ л.пГ 1, 3, к; л.с!еа__с1:х с; ЪуГе изегкеу [16]; иог<316 ЕК [ ЮЕАКЕУЪЕЫ ] , ЪК[ЮЕАКЕУЪЕЫ] ; ЬуГе XX [ 8 ], УУ[8], 22[8]; ъюгс!32 1опд_Ыоск[10]; /* 5 Ыоскз */ 1опд 1; сЪаг *1Ър; /* Маке а зашр1е изег кеу Гог ГезЫпд... */ Гог(1=0; К16; 1++) изегкеу[1] = 1+1; л.с!еа_кеу(& с, изегкеу) ; /* Маке а зашр1е р1ал.пГехГ раГГегп Гог ГезЫпд. . . */ Гог (к=0; к<8; к++)
710 Прикладная криптография XX [к] = к; л.с!еа_епс (&с,ХХ, 1) ; /* епсгурЬ */ 1Ър = (ип51дпес1 сЬаг *) 1опд_Ыоск; ^ог (1=0; К10; 1++) 1опд_Ыоск [л.] = 1; Ыеа^епс (&с, 1Ър, 5) ; ^ог (1=0;1<10;1+=2) рЫпЬ^ ("В1оск %01Ь « %081х %081х.\п", 1/2,1опд_Ыоск [1], 1опд__Ыоск [1+1]) ; 1с1еа_с1ес (&с, 1Ър, 3) ; 1<1еа__с1ес (&с, 1Ър+24, 2) ; ^ог (1=0; 1<Ю; 1+=2) ргл.п1:1: ("В1оск %01с1 = %081х %081х.\п", 1/2,1опд_Ыоск [л.], 1опд_Ъ1оск [1+1]) ; геЬигп 0; /* погта1 ех1Ь */ } /* тал.п */ С05Т ЬуреЬе! ипз1дпес1 1опд и4; ЬуреЬеЬ ипз1дпес! сЬаг ЪуЬе; ЬуреЬеЬ зЬгисЬ { и4 к[8]; /* СопзЬапЬ з-Ьохез — зеЬ ир 1п дозЬ_ллл.Ь () . */ сЬаг к87[256],кб5[256],к43[256], к21[256] ; } дозЬ_сЬх; /* ЫоЬе: епсгурЬ апЬ ЬесгурЬ ехресЬ Ьи11 Ыоскз—раскИпд Ыоскз 15 са11ег'з гезропз1Ы1л.Ьу. А11 Ьи1к епсгурЫоп 13 Ьопе 1П ЕСВ тоЬе Ьу ЬЬезе са11з. ОЫлег тоЬез тау Ъе аЬЬес! еазЫу епоидЪ. */ -^го1с1 дозЬ_епс(дозЬ_сЬх *, и4 *, ллЬ); '\7’о1с1 дозЬ_Ьес(дозЬ_сЬх *, и4 *, ллЬ) ; '^о1с1 дозЬ_кеу(дозЬ_сЬх *, и4 *) ; ’У'ол.с! дозЬ_ллл.Ь (дозЬ_сЬх *); Vо^с^ дозЬ_ЬезЬгоу(дозЬ_сЬх *); #1Ьс1е:Ё а1рЬа /* Апу оЬЪег 64-ЫЬ тасЫпез? */ ЬуреЬеЬ ипз1дпес1 ллЬ мог<132; #е1зе ЬуреЬеЬ ипз1дпес1 1опд когс!32; #епсИ^ кЪохлл1Ь(дозЬ_сЬх *с) { 1П+ 1,* ЪуЬе к8[16] = {14, 4, 13, 1, 12, 5, 9, О, ЪуЬе к7[16] = {15, 1, 8, 14, 2, 15, 11, 8, 3, 10, 6, 7 }; 6, 11, 3, 4, 9, 7, 2,
Исходные коды 711 13, 12, 0, 5, 10 ЪуЪе кб[16] — {10, 7, 0, 11, 9, 4, 14, 2, 6, 8 з, }; 15, 5, 1, 13, 12, ЪуЪе к5[16] { 7, 5, 13, 11, 14, 12, 3, 4, 0, 15 б, }; 9, Ю, 1, 2, 8, ЪуЪе к4[16] — { 2, 15, 12, 13, 4, 0, 1, 14, 7, 9 Ю, }; 11, б, 8, 5, 3, ЪуЪе кЗ[16] — {12, 4, 1, 14, Ю, 7, 15, 5, 9, 11 2, }; б, 8, 0, 13, 3, ЪуЪе к2[16] — { 4, 7, 11, 5, 2, Ю, 14, 6, 15, 1 0, }; 8, 13, 3, 12, 9, ЪуЪе к1[16] = {13, 14, 2, 5, 8, 0, 4, 12, б, 7 15, }; 11, 1, Ю, 9, 3, ^ог (1 =0; 1 < 256; 1++) { с->к87[1] = к8Ц » 4] « 4 1 к7 [1 & 15] с->к65 [3.] = кб [1 » 4] « 4 1 к5[1 & 15] с->к43[1] = к4[1 » 4] « 4 1 кЗ[1 & 15] с->к21[1] = к2Ц » 4] « 4 1 к1[1 & 15] } } з1:а!:1с могс!32 2 (дозЪ_с1:х *с,могс!32 х) { х = с->к87[х»24 & 255] « 24 | с->кб5[х»1б & 255] « 16 | с->к43[х» 8 & 255] « 8 | с->к21[х & 255]; /* КоЪаЪе 11 ЫЪз */ геЪигп х«11 | х»(32-11); } "^оз.с1 дозЪсгурЪ (доз1:_сЪх *с, могс!32 *<2) { гед1з1:ег ж>гс132 п1, п2; /* Аз патей 1п ЪЪе С05Т */ п1 = с! [ 0 ]; п2 = й[1] ; /* ТпзЪеас! змарр1пд Ъа^ез, змар пашез еасЬ гоипс! */ п2 А__ ±(с,п1+с->к[0]); п1 /\_ Г(с,п2+с->к[1]) п2 /\_ Г(с,п1+с->к[2]); п1 /\_ Г(с,п2+с->к[3]) п2 а_ ±(с,п1+с->к[4]); п1 А _ ^(с,п2+с->к[5]) п2 а_ Г(с,п1+с->к[б]); п1 А_ Г(с,п2+с->к[7]) п2 а _ Г(с,п1+с->к[0]); п1 А_ ±(с,п2+с->к[1]) п2 л__ Г(с,п1+с->к[2]); п1 А__ Г(с,п2+с->к[3]) п2 А_ Г(с,п1+с->к[4]); п1 А _ ±(с,п2+с->к[5]) п2 А__ ^(с,п1+с->к[6]); п1 А__ ±(с,п2+с->к[7]) п2 л__ 1: (с,п1+с->к[0]) ; п1 А __ ^(с,п2+с->к[1]) п2 А__ ^(с,п1+с->к[2]); п1 А __ ±(с,п2+с->к[3]) п2 л__ ±(с,п1+с->к[4]); п1 А_ ± (с,п2+с->к[5]) п2 А_ 1: (с, п1+с->к [6] ) ; п1 А__ ^ (с,п2+с->к[7]) п2 ^(с,п1+с->к[7]); п! Г(с,п2+с->к[6]);
712 Прикладная криптография п2 Л= Г(с,п1+с->к[5]); п1 Л= Г(с,п2+с->к[4]); п2 Л= Г(с,п1+с->к[3]); п1 Л= Г(с,п2+с->к[2]); п2 Л= Г(с,п1+с->к[1]); п1 Л= Г(с,п2+с->к[0]); й[0] = п2; <ШЗ = п1; } ■\юз.с1 дозГйесгурГ (до51:__сГх *с, и4 *й) { гед1з1:ег могй32 п1, п2; /* Аз пашей л.п ГЪе С05Т */ п1 = й[0]; п2 = й[1]; п2 74 яв Г с,п1+с->к[0 ); п1 /\_ г с,п2+с->к[1] п2 /\__ г с,п1+с->к[2 ); п1 /\_ г с,п2+с->к[3] п2 /\__ г с,п1+с->к[4; ); п1 /\_ г с,п2+с~>к[5] п2 /\_ г с,п1+с->к[б; ); п1 /\_ г с,п2+с->к[7] п2 /Ч_ г с,п1+с->к[7 ); п1 /\__ г с,п2+с->к[6] п2 /\_ г с,п1+с->к[5; ); п1 /\_ г с,п2+с->к[4] п2 /\__ г с,п1+с->к[3; ); п1 /\_ г с,п2+с->к[2] п2 /Ч__ г с,п1+с->к[1 ); п1 /Ч_ г с,п2+с->к[0] п2 /\_ г с,п1+с->к[7 ); п1 /\_ г с,п2+с->к[6] п2 /\_ г с,п1+с->к[5; ); п1 Л_ г с,п2+с->к[4] п2 /Ч = г с,п1+с->к[3; ); п1 /ч_ г с,п2+с->к[2] п2 /\_ г с,п1+с->к[1 ); п1 /\__ г с,п2+с->к[0] п2 /ч_ г с,п1+с->к[7; ); п1 /\_ г с,п2+с->к[6] п2 /ч_ г с,п1+с->к[5 ); п1 /\__ г с,п2+с->к[4] п2 /ч_ г с,п1+с->к[3 ); п1 /\__ г с,п2+с->к[2] п2 /Ч_ г с,п1+с->к[1; ); п1 /\__ г с,п2+с->к[0] й[0] = п2; й[1] = п1; } ■уоз.с! дозГ_епс (дозГ_сГх *с, и4 *й, д.пГ Ыоскз) { 1пГ 1; Гог (1=0; лхЫоскз; 1++) { дозГсгурГ (с, й) ; й+=2; } } "^ОЗ-С! дозГ_йес (дозГ__сГх *с, и4 *й, 1пГ Ыоскз) { л.пГ 1; Гог (1=0; КЫоскз; 1++) { дозГйесгурГ(с,й); й+=2; } } ■уоз.с1 дозГ_кеу (дозГ_сГх *с, и4 *к) { 1пГ 1;
Исходные коды 713 Гог (1=0; д.<8; 1++) с->к[1]=к[1]; люз-с! дозГ^пИ: (дозГ_сГх *с) { кЬох1п11: (с) ; } уол.с1 дозГ__с1е51:гоу (дозГ_с1:х *с) { 1ПГ 1; Гог(1=0;1<8;±++) с->к[1]=0; } ■\юл.с1 та1п ^оЫ) { дозГ^сГх дс; и4 к[8], <1аГа [10] ; 1ПГ 1; /* 1пИ:1а112е С05Т сопГехГ. */ дозГ_1п1Г(&дс) ; /* Ргераге кеу—а зтр1е кеу зЪоиЫ Ье ОК, ш.ГЪ ГМз тапу гоип<±з! */ Гог (1=0; 1<8; 1++) к [л.] = 1; дозГ_кеу(&дс,к); /* Тгу зоте ГезГ Vес1:о^з. */ с!аГа[0] = 0; с!а1:а[1] = 0; дозГсгурГ (&дс,с!а1:а) ; рг1п1:Г("Епс оГ гего Vес{:о^: %081х %081х\п", <2аГа [0] , <ЗаГа [1]) ; дозГсгурГ (&дс,<3а1:а) ; ргз.п1:Г ("Епс оГ аЬоVе: %081х %081х\п",с1аГа[0] ,йа1:а [1]) ; с!аГа [0] = ОхГГГГГГГГ; с!аГа[1] = ОхГГГГГГГГ; дозГсгурГ (&дс,с!а1:а) ; ргл-пГГ ("Епс оГ опез Vес^:о^: %081х %081х\п",с1аГа [0] ,с1аГа[1]) ; дозГсгурГ (&дс,с!аГа) ; ргл.п1:Г ("Епс оГ аЪоче: %081х %081х\п", <ЗаГа [0], с!аГа [1]) ; /* Боез дозГ_с!ес() ргорег1у ^еVе^зе дозГ_епс()? Бо юе с!еа1 ОК зл.пд1е-Ыоск ГепдГЬз раззес! л.п дозГ_йес () ? Бо юе <3еа1 ОК ш.ГЪ сИГГегепГ 1епдГЬз раззес! 1П? */ /* 1ПЗ.Г с1аГа */ Гог (1=0; 1<Ю; 1++) с!аГа [1] =1; /* ЕпсгурГ йаГа аз 5 Ыоскз. */ дозГ_епс (&дс, <ЗаГа, 5) ; /* Б1зр1ау епсгурГес! с!аГа. */ Гог (1=0; 1<10; 1+=2) ргл.п1:Г ("В1оск %02с1 = %081х %081х\п", ±/2,д.аЪа[1], с!аГа [1+1]) ; /* БесгурГ 1П сИГГегепГ 512ес! сЬипкз. */ дозГ_с!ес (&дс, йаГа, 1) ; доз1:_с1ес (&дс, <1аГа+2, 4) ; рЫпГГ ("\п") ;
714 Прикладная криптография /* Б15р1ау <3есгур*:ес1 <3а1:а. */ Еог (1=0; 1<Ю; 1+=2) рг1ГгЬЕ ("В1оск %02с1 = %081х %081х\п", 1/2, <ЗаЪа [ 1 ], <ЗаЕа [1+1]) ; дозЕ_с!е51:гоу (&дс) ; } ВЮМР15Н #1пс1ис1е <таЕ]1.]1> #1пс1ис1е <зЕсИо. Ь> #1пс1ис1е <зЕсШЪ.]1> #1пс1ис1е <^1те.Ь> #1Гс1е^ 1з.1:1:1е_епс11ап /* Ед: 1пЕе1 */ #1пс1ис1е <а11ос.Ь> #еп<ИЕ #1пс1ис1е <с1:уре.11> #1^с1е^ И'Ы:1е_епс11ап /* Ед: 1пЪе1 */ #л.пс1ис1е <сИг.]1> #1пс1ис1е <Ыоз.Ь> #еп<ИЕ #л.Ес1еЕ Ыд_епс11ап #1пс1ис1е <Турез.]1> #епсШ: Еурес1еЕ зЕгисЕ { ипз1дпес1 1опд 5 [4] [256], Р[18]; } ЫЕ_с1:х; #с1еЕл.пе МАХКЕУВУТЕЗ 56 /* 448 Ы±з */ // #<ЗеЕ1пе 1л.{:{:1е_епс11ап 1 /* Ед: 1п1:е1 */ #<ЗеЕ1пе Мд_епс11ап 1 /* Ед: МоЕого1а */ уо1(1 В1омЕ1з11_епс1р]1ег (Ъ1Е_с1:х *,ипз1дпе<1 1опд *х1, ипз1дпес! 1опд *хг) ; ‘У'ол.с! В1оюЕ1зЬ_с1ес1р]1ег (Ъ1Е_с*:х *,ипз1дпес! 1опд *х1, ипз1дпес1 1опд *хг) ; #с!е^1пе N 16 #<ЗеЕ1пе поЕгг 0 #йеЕл.пе БАТАЕККОК -I #<ЗеЕ1пе КЕУВУТЕ5 8 Е1ЬЕ* ЗиЪкеуЕНе; ипз1дпе<1 1опд Е(ЫЕ_сЕх *Ъс, ипз1дпе<1 1опд х) { ипз1дпес1 зЬогЕ а; ипз1дпе<3 зйогЕ Ъ; ипз1дпес1 зЬогЕ с; ипз1дпе<3 зЬоП: <3;
Исходные коды 715 ипзхдпес! 1опд у; а - х & ОхООЕЕ; х »= 8; с = х & ОхООЕЕ; х »= 8; Ь = х & 0x0ОЕЕ; х »- 8; а = х & ОхООЕЕ; //У = ((3[0] [а] + 3[1] [Ь]) А 3[2] [с]) + 5[3] [й] ; у = Ьс->5[0] [а] + Ъс->5 [1] [Ь]; у = у А Ъс->3[2][с]; у = у + Ьс->5 [3] [с1] ; геЪигп у; ■\юл.с1 В1оиЕ15Ь__епс1рЬег (Ы^_с1:х *с,ипз1дпес! 1опд *х1, ипзхдпес! 1опд *хг) { ипз1дпес! 1опд XI; ипз1дпе<1 1опд Хг; ипз1дпес1 1опд Ъетр; зЪогЬ 1; XI - *х1; Хг = *хг; ^ог (1 =0; 1 < Ы; ++3.) { XI = XI А с->Р[1]; Хг - Е(с,XI) А Хг; ■Ьетр = XI; XI = Хг; Хг = Ъетр; } ■Ьетр = XI; XI = Хг; Хг = Ъетр; Хг = Хг А с->Р[Ы]; XI = XI А с->Р[Ы + 1]; *х1 - XI; *хг = Хг; } В1ом1:1з11__с1ес1рЬег (ЫЕ_с{:х *с, ипз1дпес! 1опд *х1, ипзхдпес! 1опд *хг) { ипз1дпес1 1опд XI; ипзхдпес! 1опд Хг; ипзхдпес! 1опд Ъетр; зЪогЪ 1; XI = *х1; Хг = *хг;
716 Прикладная криптография Гог (1 = N + 1; 1 > 1; —1) { XI = XI Л с->Р[1]; Хг = Е(с,XI) Л Хг; /* ЕхсЪапде XI ап(1 Хг */ Гетр = XI; XI = Хг; Хг = Гетр; /* ЕхсЬапде XI ап(1 Хг */ Гетр = XI; XI = Хг; Хг = Гетр; Хг = Хг л с~>Р[1]; XI = XI л с->Р[0]; *х1 == XI; *хг = Хг; } зЪогГ 1п1Г1а112;еВ1омГ1з11 (ЫГ_сГх *с, сЬаг кеу[], зЪогГ кеуЪуГез) { зЬогГ 1; зЬогГ з; зЬогГ к; зЬогГ еггог; зЬогГ питгеас!; ипзхдпес! 1опд <1аГа; ипз1дпе<1 1опд с!аГа1; ипзхдпес! 1опд с!аГаг; ипз1дпес! 1опд кз0[] = { 0хс11310Ьа6, 0х98с!ГЪ5ас, 0х2ГГс!72с!Ъ, 0хсЮ1ас!ГЬ7, 0хЪ8е1аГей, 0х6а267е96, 0хЪа7с9045, 0хГ12с7Г99, 0х24а19947, 0хЪ3916сГ7, 0х0801Г2е2, 0х858еГс16, 0x636920(18, 0х71574е69, 0ха458ГеаЗ, 0хГ4933<17е, 0х0с!95748Г, 0х728еЪ658, 0х718Ъсс!58, 0х82154аее, 0х7Ъ54а41с!, 0хс25а59Ъ5, 0х9с30с!539, 0х2аГ26013, 0хс5с11Ъ023, 0х286085Г0, 0хса417918, 0хЪ8с!Ъ38еГ, 0х8е79с!сЪ0, 0х603а180е, 0х6с9е0е8Ъ, 0хЪ01е8аЗе, 0хс!71577с1, 0хМ314Ъ27, 0х78аГ2Гс!а, 0х55605с60, 0хе65525ГЗ, 0хаа55аЪ94, 0x57489862, 0х63е81440, 0х55са396а, 0х2ааЫ0Ь6, 0хЬ4сс5с34, 0х1141е8се, 0ха15486аГ, 0х7с72е993, 0хЬЗее1411, 0х636ГЬс2а, 0х2Ъа9с55с1, 0х741831Г6, 0хсе5сЗе16, 0х9Ь87931е, 0хаГс!6ЪаЗЗ, 0х6с24сГ5с, 0х7а325381, 0x28958677, 0хЗЪ8Г4898, 0х6Ъ4ЬЪ9аГ, 0хс4ЬГе81Ъ, 0x66282193, 0х61с!809сс, 0хГЪ21а991, 0х487сас60, 0х5с!ес8032, 0хеГ845с!5с!, 0хе98575Ы, 0х<3с262302, 0хеЬ651Ь88, 0х23893е81, 0хс1396асс5, ОхОГбйбГГЗ, 0х83Г44239, 0х2е0Ь4482, 0ха4842004, 0х69с8Г04а, 0х9е1Г9Ъ5е, 0х21сбб842, 0хГ6е96с9а, 0х670с9с61, 0хаЪс!388Г0, 0х6а51а0с!2, 0хс!8542Г68, 0х960Га728, 0хаЬ5133аЗ, ОхбееГОЪбс, 0х137аЗЪе4, 0хЪаЗЪГ050, 0х7еГЪ2а98, 0ха1Г1651с1, 0х39аГ0176, 0х66са593е, 0х82430е88, 0х8сее8619, 0х456Г9ГЪ4, 0х7с!84а5сЗ, 0хЗЬ8Ь5еЬе, 0хе06Г75с!8, 0х85с12073, 0х401а449Г, 0х56с1бааб, 0х4ес!3аа62, 0х363Г7706, 0х1ЪГес!Г72, 0х429Ъ023й, 0х37(10с1724, 0хс!00а1248, 0хс!Ъ0Геа<13, 0х49Г1с09Ъ, 0х075372с9, 0х80991Ь7Ь, 0x25(1479(18, 0хГ6е8с!еГ7, 0хеЗГе501а, 0хЬ6794сЗЬ, Ох976сеОЬс1, 0х04с006Ьа, 0хс1а94ГЪ6, 0х409Г60с4, 0х5е5с9ес2, 0х19ба2463, 0х68ГЪ6ГаГ, 0хЗе6с53Ь5, 0х1339Ь2еЬ, 0хЗЪ52ес6Г, 0х6с!Гс511Г, 0х9Ь30952с,
Исходные коды 717 1о: 0хсс814544 0хс0сЪа857 ОхббаЮОсб 0хЗс75166Г 0х53317Ь48 0х6542а81:6 0хе1«а356 0х9а53е479 0хб2^Ы341 0х956Ъ6а46 0х8еЗс5Ь2^ Ох41:а65еаО 0хеа75261:е ОхЬ4а84^еО 0х93сс7314 0хеЪс6а:Е0с 0х226800ЪЬ 0х78с14389 0х11с81968 0x6601:573^ 0х^296есбЬ 0х53Ь02656 ипзхдпеб 0х4Ъ7а70е9 0х9сееб0Ъ8 0х193602а5 0х6Ъ8:Ее466 0х4с662086 0хЗс971814 0хЗе07841с 0х^01с1^04 0x619113^9 0хс8Ь57б34 0хе238с699 0хбГ420<103 0х6е9а7711: 0х501ас1с1е6 0хес7аесЗа 0х<1<1433Ь37 0х716К89е 0хЗс11183Ъ 0х86е34570 0х2965<1сЬ9 0хс6150еЬа 0x1939260:1: 0хеЗЬс4595 0x65582185 0х1521Ь628 0х0334^е1е 0хеесс86Ьс 0ха02369Ь9 0х9Ь540Ы9 0х11е<1935^ 0х57^584а5 0х8М948е4 0ха1:5еЪ609 0х45с8740Г 0х402с7279 0хМ616Ы5 0хЗе0061:82 0х287е^^сЗ 0хЬ8Г011а0 0хЬ6^84565 0хсее4с6е8 0хае909198 0х8е7594Ь7 0х688^с31с 0х8Ь021^а1 0хМ13е0Ь7 0х211а1477 0х7ЬЗе89а0 0х57Ь8е0а^ 0х695а537:Е 0х4е734а41 0хЬс9Ьс6е4 0х2а0<1(1915 0ха99^а1 пд кз1[] = 0хЬ5Ь32944 0х81:е6Ъ266 0х75094с29 0х99Г73*66 0х8470еЬ26 0х6Ь6а70а1 0х71:6еае5с 0х0200ЬЗ^ 0х7са92^^6 0х9аГ366а7 0хЗЬеа0е2^ 0х^60а04Ь^ 0хс19930810 0х91:84с687 0х6Ъ8516^а 0х24с2Ьа16 0х10314е55 0х5924а509 0хеае96^Ы 0х99е7160:Ё 0х94е2еа78 0х19с27960 0ха67Ьс883 0х68аЬ9802 0x29076170 ОхааОЗбЗсГ 0х60622са7 0х655аЬЬ50 0х875^а099 0x16681281 0х1Ь227263 0х6с1Ъс3128 0хЬееЗ<1004 0х620Ъ5^39 0х679^25^е 0х2Г501ес8 0х9е5с57ЬЬ 0хасб732с6 0х101:а3698 0х<128е49Ьс 0хе1:20са6а 0хеаа68е71 0х8«бе2Яэ 0х61ст91 0хе5а0сс0^ 0х7сс43Ь81 0хебас12065 0х66411Ъ63 0x2464369Ь 0х207<15Ьа2 0хЬ3472(1са 0х2Ь60а476 0хЬ6636521 0х08Ьа4799 0х<1Ь75092е 0хесаа8с71 0ха0591340 0ха1<129с07 0х6382е9с6 0x687^3584 0х8е7с144ес 0хае0с^51а 0x94324773 0ха944614б Ох3280ЬЬа1 0х2сЬ81290 0хЬ38Ьае12 0х7а584718 0x63094366 0х12а14<143 0х81ас77<16 0х^281:е6е6 0х860е5е0а 0х803е89с16 0ха5^с3с53 0х5223а708 0хЫ7Г3761 0хеесеа50Г 0хес<1<14775 0хЬ5735с90 0х9саЬ5саЬ 0х40685а32 0х95Г7997е 0х0е358829 0х9Ь83сЗГ^ 0х58еЬГ2е^ 0х6е334а:(:6, 0хЪ9631:Ъ6Ъ, 0хЙэ1^аЗсс, 0ха60552аЪ, 0хса6^8са0, 0х8с41:5573, 0х:(:62183Ъ8, 0х4Ы:Ъ9790, 0х36774с01, 0х6Ъ93<15а0, 0х^2122Ь64, 0хЪЗа8с1а6, 0хЪ56Г74е8, 0х<12а<1а8с19, 0х77Ъ5^а86, 0хае1е7е49, 0х^009Ъ91е, 0х02е5Ъ9с5, 0х7Ы4а94а, 0х81е67400, 0хе7Ь9^9Ь6, 0хбе85076а} 0хс4192623 0х699а17^Г 0хе4183а3е 0хе^е830^5 0х021есс5е 0х52а0е28б 0х5716^2Ь8 0хЗсЬ574Ь2 0x22^54701 ОхО^бООЗОе 0х183еЪ331 0х24977с79 0х6сс1:31:2е 0х7408(1а17 0хс464с362 0х2а65с451 0х5П1199Ь 0х97П*Ма 0х5аЗе2аЬЗ 0х5266с825 0х1е0а2<1^4 0хГ71312Ъ6 0х018сГ^28 0х6Ъ21:953Ъ 0x619^1510 0х4с70а239 0хЬ2^3846е 0хЗс2аЬ4ЬЗ 0х623<17<1а8 0хс7е61М6 0х1ас24696 0х34с6^^еа 0x6601:2807, 0х5579с0Ъ6, 0х8еа5е9Г8, 0х3236Ъ51:а, 0х1а87562е, 0х695Ъ27Ъ0, 0х4а1:сЪ56с, 0хе166^26а, 0х607е9е^е, 0х608е6160, 0х8888Ъ812, 0x21:21:2218, 0х18ас1:366, 0х1651:а266, 0хс75442^5, 0х00250е26, 0x5563911(1, 0x83260376, 0х1Ь510052, 0х08ЬабГЬ5, 0х«34052е, 0ха<1беа6Ь0 0x5664526с 0x31:54989а 0х4<12 <138е6 0х09686ЬЗ^ 0хЬ79с5305 0хЬ03а<1а37 0х25837а58 0хЗае5е581 0хесс8с73е 0х4е548Ь38 0х5679Ь072 0x55127211: 0хЬс9^9аЬс 0хе^1с1847 0x50940002 0x043556^1 0х9еЪаМ2с 0х771^е71с 0х2е4сс978 0х^2^74еа7 0хеЪа61:е6е 0хс33266е1: 0х2ае:И6а6 0х13сса830 0х<159е9е0Ь 0хб48Ыеа^ 0х319ее9<15 0х^837889а 0х966е61:а1 0хс<1Ь30аеЬ 0х1:е28е661 0х192е4ЬЬЗ, 0х1аб0320а, 0х6Ъ3222^8, 0хМ238760, 0х6^17696Ъ, 0хЪЪса58с8, 0х2<1с11(135 Ъ, 0ха4сЬ7еЗЗ, 0х2ЬП1Яэ4, 0ха^с725е0, 0х9006^01с, 0хЬе0е1777, 0хсе89е299, 0x80957705, 0хЯэ9635с^, 0х2071Ь35е, 0х596^а6аа, 0х6295с^а9, 0х9а532915, 0х571Ье91^, 0хс5855664, 0х49а76Г76, 0хс2Ы9ее1, 0х5Ъ429665, 0х*02556с1, 0хЗеЬае^с9, 0хаа500737, 0х^0500с06, 0х6с0921Ъ6, 0х37с26а6с, 0ха4751е41, 0х4Г66Ь908, 0хЬса^89аГ, 0х2е6Ь7124, 0хе94Ь768с, 0x32156908, 0х133ае466, 0х67аЗс76Ъ, 0х1е153с6е, 0х4е36061:а, 0х9с10Ь36а, 0х36162Ь36, 0хеас31^66, 0хЪе6с5аа5, 0х5Ь6е2^84, 0хеЬ61Ь696, 0хсЬаа6е14, 0х19Ь6^0са, 0хс021Ь8Г7, 0х97е32677, 0х7858Ьа99, 0х532е3054, 0хее7с3с73,
718 Прикладная криптография 0х5(14а14<19 0хс1Ъ6с4П5 0хсШ1е799е 0х1Гс8883а0 0х095ЪЫ:00 0х1с1а«43е 0х7с<1е3759 Охе 8 е!: с185 5 0х9е447а2е 0x6751: (1а79 0х153е21е7 0х4^3^еа2 0хсе78а399 0х1<3с9^а^7 0х6841е7Г7 0х55533а3а 0хсса929бЗ 0хМ^8е802 0х48с1133^ 0х3251:51еЬ 0х<3^^8е8а3 0хбЬ2395е0 0х<3е720с8с 0х5449а361: ОхЗаб^беаЬ 0хсб7Ь5510 0хЬ5390^92 0хЬЫ32^88 0х802бе297 0хба124237 0хЗ<12 5Ъс1с18 0хб4а^б74е 0хб0787М8 0х8342бЬЗЗ 0x55464299 0х53661:9с3 0х846а0е79 0хЬ90Ьасе1 0хбб2с109а1 0х1аЬ93<11<1 0ха1е2се9Ь 0х9а^88с27 0х006058аа 0хЬЬсЬее5б 0х39720а3<1 0хес1545578 0ха28514<19 0х<179а3234 0хе8б4Ь7еЗ 0х^асЬ4М0 0х86854<1с7 0хс1с7Ь6аЗ 0ха<119489<1 0x233^7061 0хсЬее74б0 0хб1<199735 0хс3453484 0хе3674340 0х8ГЬ03<14а 0хе887а<18с 0х406Ъ2а42 0х4Ь6<11856 0хса7820^Ь 0х20838<187 0х99е1<1ЬЗЗ 0x042721:70 0хс701:86<1с 0х<159Ъс0<11 0х1^636с1Ь 0х333е92е1 0х2с1а21:728 0х877с148^а 0x^4*8*137 0хб<1672с37 0х690*е<10Ъ 0х515Ьа<124 0х*42е312<1 0хЪ79251е7 0хе2е1сЗс9 0х<1а86а85* 0x6003604(1 0х*01еаЪ71 0хЪ*582е61 0хс8Ь38е74 0х915*95е2 0хЬЬ8205<10 0хс4324633 0х0Ъа5а4с1* 0х4*с<17*52 0x773*8641 0х30<1с7<162 0х90ЬсЬб<1е 0х7с927с24 0х08*са5Ъ5 0хбс51133с 0x92638212 0x42105(114 0хс742*442 0хе44Ъ47ба 0х7*1524сЗ 0х1462Ы74 0x3372*092 0х4085*2а7 0ха969а7аа 0х*<1<156705 0хс5с43465 0хе6е39*2Ъ 0х*64с261с 0х<14082471 0x14214*74 0хЪ*Ъс09ес 0х<1а2547е6 0х68(1с1462 0хЬ58се006 0х20*е9е35 0х26а36631 0х*Ъ0а*54е 0х*е6Ьа9Ъ7 0хаб2а4а5б 0х80ЬЫ55с 0х07*9с9ее 0х*2Ъсс18* 0х0е12Ь4с2 0хЗЬ240Ъ62 0х<10127845 0хс39с1*с127 0ха812(1с60 0х2765<143Ь 0х667Ъ9**Ъ 0х7Ъ9479Ъ* 0х6842а<1а7 0х06а1ЬЬе6 0x44421659 0хЪеЪ*е988 0хс11*с18346 0хЬ0804187 0х4е58*48* 0хЪ475*255 0х4ббе598е 0х11а86248 0хе85а1*02 0ха186*20* 0х50115е01 0хс3604с06 0х11е69е(17 0хеЪ*с7(1а1 0х86е3725* 0х<183(17с(13 0х6*<15с7е7 0х670е*а8е 0х203е13е0, 0хе*6аЪЪЪ5, 0x3(1816250, 0х69сЪ7492, 0х23820е00, 0х8<1937е41, 0хсе77326е, 0хс50с06с2, 0х0е1е9ес9, 0х713е38<18, 0хс1Ъ83а<1*7}; 0x94692934, 0x33201:46а, 0хЬ*8Ь8840, 0х03Ь<19785, 0хаЬса0а9а, 0х<17486900, 0х7а*4<16Ъ6, 0хс19*385Ъ9, 0хеае397Ь2, 0хс18*еЪ397, 0хсЮ96954Ъ, 0x3*3125*9, 0х05282сеЗ, 0x41041*0*, 0x41113564, 0х02е1329е, 0хееЬеЪ922, 0х95Ь7 94*<1, 0х*33е8с11е, 0ха1еЪс1с1*8, 0х(1сс10е804, 0хсе<1Ь7(19с, 0x7 63Ь«16еЪ, 0хс66а2ЬЗЬ, 0х4Ъ*Ъ6350, 0х0а121386, 0х64е4сЗ*е, 0х*6381*Ъ0, 0хЗс005е5*, 0х*2с1с1*с1а2, 0х46*сс19Ъ9, 0х20Ь45770, 0х7574а99е, 0х09*0Ъе8с, 0x2868*169, 0ха70683*а, 0х61а806Ъ5, 0х2338еаб3, 0хсе591(176, 0х724с19(1Ь9, 0х4<1а<10*с4, 0х56е14ес4, 0х406000е0} ; 0х45еее2Ъ6, 0х654*ЗЫ<1, 0хс*62а1*2, 0х47848а0Ь, 0х58428(12а, 0хс165*ес*1, 0ха6078084, 0х5а04аЪ*с, 0хс1Ъ73<1Ьс13, 0хЗ<128*89е, 0x411520*7 0х43Ь7с14Ь7 0х4<195*с1<1 0х7*ас6с1<10 0x28507825 0х680ес0а4 0хаасе1е7с 0хее39с17аЬ 0хЗа6е*а74 0х45405бас 0х55а867Ъс 0х5е*47е1с 0х95с11548 0х404779а4 0х257Ь7834 0ха*664*с11 0х85Ь2а20е 0x647(10862 0х0а476341 0х991Ье14с 0х*1290<1с7 0ха091с*0Ъ 0х37392еЬЗ 0х12754ссс 0х1а6Ы018 0хс190сес6е 0х9с1Ьс8057 0х7745ае04 0х77а057Ье 0х*474е*38 0х7аеЬ2661 0х8с(155591 0хЪ77*19Ъ6 0х4а99а025 0х<1сЬ7<1а83 0ха002Ь5с4 0х*0177а28 0х53с2(1(194 0х6*05е409 0х1ас15ЬЬ4 0х1е50е*5е 0х362аЪ*се ОхаЗаааЬеа, 0х41с(12105, 0х5Ь8<12646, 0х5692Ь285, 0х0с55*5еа, 0х6с223Ь(1Ь, 0х19*8509е, 0х800Ъса<1с, 0х105588с<1, 0х*16с1**20, 0х7602<14*7, 0x500061а*, 0х96Ъ591а*, 0х31сЬ8504, 0x530429*4, 0х27а18<!ее, 0х<13375*ес, 0хЗЫ24е8Ь, 0х<1(15Ь4332, 0хЬа489527, 0ха1159а58, 0x9029317с, 0хе4сб6(122, 0х5<1886е17, 0х602а9с60, 0хса<118115, 0хебЪа0с199, 0хе7сс*5*0, 0х992е**74, 0хс1Ъ6е6Ъ0с1, 0хсс00**а3, 0х<19155еаЗ, 0хсс115979, 0х782е*11с, Ох11сае<1*а, 0х(15аЬеа2а, 0х*0*7с086, ОхсГ736*ссс, 0хЪ<1е8ае24, 0х8789Ъ(1с2, 0х8Ы<1<1*84, 0хс902с1е4с, 0хе0а9с1с09, 0х1с16е*е10, 0х573906*е, 0х0«1е6(1027, 0хс0*586е0, 0хс2с21634, 0х4Ь7с0188, 0хс139еЪ8*с, 0хЫ61е6*8, 0хс1<1с6с837, 1о: ипз1дпе<1 0хе93<15а68 0хЪс*46Ъ2е 0х1е39*62е 0х70Г4с1(1(13 0х9беЬ27ЬЗ 0х0а2с86с1а пд кз2[] = 0x948140*7 0хс14а20068 0x97244546 0х66а02*45 0x551: <13941 0хе9Ъ66с1*Ъ
Исходные коды 719 ипзхдпе! 1опд кзЗ[] = { 0х3а39се37 0x13822740 0хЪ78с1Ъ6Ъ 0хс6а37612 0х2939ЪМЬ 0хбЗе^8се2 0х83с061Ьа 0х4Ьа9958б 0х80е4а915 0х2с1:0Ъ719 0х1^9^25сГ 0х47Ь0асШ 0x785^0191 0х03а1б125 0х1Ъ3^619Ъ 0x03563482 0х41е81751 0х5121се64 0ха2ае0810 0х586с1ес:Ё 0х11а2ба7е 0х816612ае 0х740е0181 0x3412466а 0х6«*ЗЬ82 0хЬЬЗа792Ь 0хе01сс87е 0х101а1есЪ 0х^79е59Ь7 0х0^91^с71 0хЬ6с1075е 0х4с98а0Ье 0х1Ь0а7441 0хе60Ь6^47 0х1618Ы66 0х93а83531 0х1е966292 0х45е11006 0x71126905 0х38аЪМ60 0х85сЫ:е4е 0х01с36ае4 0хЬ74е6132 0хс13^а^5с^ 0х99Ьс9ЬЬе 0х21а19045 0х6549с2с8 0ха9Ьа4650 0х9а86ее22 0х9Ъе96а41 0хе^5562е9 0х87Ь08601 0х022Ь8Ь51 0ха1^2Ъ89Ъ 0хе1931:а9Ъ 0хес1756055 0х05641:0Ъ1 0х1е6321^5 0х8аЬаЗсЬЪ 0х38301с8е 0х774^Ъе32 0х1161Ъ224 0х1с20с8ае 0хЗа59^^45 0хМЗс6^47 0хе75Ы357 0х0115а^84 0х3520аЬ82 0х344525Ь1 0хЪсс7111:6 0х150а1а38 0х43^5ЪЬЗа 0х9Ь941525 0хе3056а0с 0х3278е964 0х4Ьа3348с ОхО^еЗП.11 0х^12с1105 0х56ссс102 0х81Ъ94910 0хс3^27Ь9а 0хЬ2040222 0х2547а1*0 0х8ае88118 0х16еЪе11:9 0хсе77е25Ь 0хаЬс27737 0х15118е91 0хЬ26еЫЬе 0х530^^8ее 0хас9526е8 0хс089с2Ъ8 0х8^е51550 0хс72*еМЗ 0х9Ъ09е6а1 0х9615асЗа 0х5а16Ь472 0хе813с481 0х^7960е44 0хсЗеЬ9е15 0х^59с66^Ь 0x28517711 0х379с15862 0ха8Ь6е37е 0x698521^1 0х5ЪЪе^7<1<1 0х3е350а44 0хс129Ъе4 63 0x^8721671 0хе1Ь00428 0х011а114Ъ 0ха08839е1 Охс^ОШсЗ 0х0339с32а 0х^21519« 0х^ае59361 0x10(125065 0x9^1^9532 0хс5Ье7120 0хе54с<1а54 0х848Ш2с5 0хасГ08162 0х4с50901Ь 0хс9аа531:1 0хЬ6сЪс^7с 0хЬа38209с 0х7ааа^9Ъ0 0x9014:1:869 0х578МГеЗ 0х5ас52<11Ь 0хМ0Г7315 0х6а366еЬ4 0х468<1<1е7<1 0хЬе5ее304 0х43242е^6 0хЬа645Ь(16 0хГ752Г71а 0хЗЬЗее593 0х017(1а67<1 0х5а88Г54с 0х283Ь57сс 0хе3<135е8с 0хЗс9057а2 0х261с1:319 0хс20а19*:8 0x9320^991 0хс3293<146 0x09072166 0х1Ъ588140 0хЬсЬ4с<1<15 0х542Г519е 0хаГ537151 0х95983а1<1 0x277227^8 0х51се794Ь 0ха1е8аас7 0хс6913667 0х27(19459с 0хсеЬ69сеЬ 0хсЬ03а442 0хе0139211: 0хс37 632(18 0х1е<1а(1891 0х^6^Ь2299 0х5а75еЪЬ5 0х71с65614 0х62а80^00 0хссГ769с2Ъ 0х^746се76 0х4с^9аа7е 0ха65с<1еа0 0х3ас372е6}; 0х5сЬ0679е 0х<162(11с7е 0х5748аЬ2^ 0х<15730а1с1 0ха1^а15:Ё0 0ха51е03аа 0х2826а2^9 0x3^046^69 0хе990:Ё15а 0х11с:ЕЗе16 0хе029ас71 0x1:8156629 0x15056114 0х97271аес 0x7533(1928 0хаЬсс5167 0хеа7а90с2 0х48с1е5369 0хЬ39а460а 0хсс120171: 0х72еасеа8 0хаес2771Ь 0х4040сЬ08 0х06Ь89Яэ4 0х611560Ы 0х2Г32с9Ь7 0х1а908749 0x811:9317с 0хЫ:97222с 0хс2а86459 ОхеОесбеОе 0х<13а0342Ь 0x11:3591:81 0хсе6279с^ 0x^523^357 0х6е163697 0хебс6с7Ь<1 0хЪЪ25Ме2 0х53113ес0 0х77а^а1с5 0х1948с25с 0x3^092521 0х4Иа33742, 0хс700с47Ъ, 0хЪс946е79, 0х4с1041с6, 0х6а21519а, 0х9с1:210а4, 0ха73а3ае1, 0х77^а0а59, 0х9е341797, 0х7с712128, 0хе019а5е6, 0х79132е28, 0х881:4б1Ъа, 0ха93а072а, 0хЫ55М«, 0хсса19251:, 0х1:ЪЗе7Ъсе, 0х6413е680, 0х6445с011, 0х6ЪЪ4еЗЪЪ, 0х1:а6484ЬЪ, 0х1:64е6370, 0х4еЪ4е2сс, 0хсе6еа048, 0хе7 9331:1с, 0ха011:Ъас9, 0х1441:Ъ19а, 0хе0Ы2Ъ4^, 0х15е6:Ес2а, 0х12Ъаа811, 0х16981ЪЗЪ, 0х89711:21е, 0х9Ъ992Г2е, 0хс13е7е6^, 0ха6327623, 0х881273сс, 0х327а140а, 0х35М121Г6, 0х1640е313, 0x20756060, 0х021:Ъ8а8с, 0хс208е691:, ипз1дпе(1 1опд рз [18] = {0х243^6а88, 0х85а30813, 0х13198а2е, 0x03707344, 0ха4093822, 0х299тЮ, 0х082е^а98, 0хес4е6с89, 0х452821е6, 0x38(101377, 0хЬе54ббс^, 0х34е90сбс, 0хс0ас29Ь7, 0хс97с5011, 0хЗГ8415Ь5, 0хЬ5470917, 0x92161519, 0х8979Я>1Ъ}; /* 1п11:1а112е Р аггау */ Ног(1=0;1<18;1++) с->Р [з.]=рз[1]; /* Тпл-ПИаИге з-Ьохез мИЛоиЪ Ше геа1. */
720 Прикладная криптография Гог (1=0; К256; 1++) { с->5 [0] [1] = кзОЩ с->8[1][1] = кз1[Ц с->5 [2] [1] = кз2[1] с->5 [3] [1] = кзЗ[1] } 3 = 0; Гог (1=0; 1 < N + 2; ++д.) { <ЗаГа = 0x00000000; Гог (к =0; к < 4; ++к) { <ЗаГа = (йаГа « 8) | кеу[зЗ; : = :+!; л.Г (з >= кеуЪуГез) { 3 = 0; } } с~>Р[1] = с~>Р[1] Л с1аГа; } с1аГа1 = 0x00000000; с!аГаг = 0x00000000; Гог (1=0; 1 < N + 2; 1 += 2) { В1омГ1зЪ_епс1р]1ег (с, &<ЗаГа1, &<ЗаГаг) ; с_>Р [ 1 ] = <ЗаГа1; с~>Р [ 1 + 13 = (ЗаГаг; } Гог (1=0; 1 < 4; ++1) { Гог (з =0; з < 256; з += 2) { В1омПз11_епс1р11ег (с, &с!аГа1, &с1аГаг) ; с—>3 [13 [ 3 3 = <ЗаГа1; с->5[13[з + 1) = <ЗаГаг; } лто1с1 ЫГ_кеу (ЫГ_сГх *с, сЬаг *к, 1пГ 1еп) { 1п1Г1а112еВ1о^Г1з11 (с, к, 1еп) ; } уоз.с1 ЫГ_епс (ЫГ_сГх *с, ипз1дпес1 1опд МаГа, 1пГ Ыоскз) ипз1дпес1 1опд *с1; 1ПГ 1; с! = с!аГа; Гог (1=0; КЫоскз; 1++) { В1омГ1з11_епс1рЪег (с, (X, <1+1) ; <1 += 2; }
Исходные коды 721 } ■\юд.с! ЫГ_с1ес (ЫГ_с1:х *с, ипз1дпес1 1опд МаЬа, д.п1: Ыоскз) { ипзхдпес! 1опд *с!; хп1: 1; с! = с!а1:а; ^ог (1=0; 1<Ыоскз; 1++) { В1ом1:1зЬ_с!ес1р]1ег (с,с1,с1+1) ; с! += 2; } } уод-с! та1п ^ол.с1) { ЫИ_сЬх с; сЬаг кеу[]="ААААА"; ипз1дпес! 1опд с!а1:а[10]; 1П1: 1; ^ог (1=0; 1<10; 1++) с!а1:а [ 1 ] = 1; Ы^_кеу (&с, кеу, 5) ; Ы1:_епс (&с, ЬаЬа, 5) ; Ы:Е_с!ес (&с,с!а1:а, 1) ; Ы1:__с!ес (&с,с!а1:а+2, 4) ; ^ог(1=0;К10; 1+=2) рг1п1:^("В1оск %01<3 с!есгурЬз Ьо: %081х %081х.\п", л./2,с!а1:а[л.] ,с!аЬа[1+13) ; } З-УУау #аеЛпе 5ТКТ_Е ♦деЛпе ЗТКТ_0 #с!е1:л.пе ЫМВК. ОхОЬОЪ /* гоипс! сопзЬапЬ о± ЫгзЬ епсгурЫоп гоипс! */ ОхЫЫ /* гоипс! сопзЬапЬ о^ ЫгзЬ «ЗесгурЫоп гоипс! */ 11 /* пишЬег о!- гоипс!з 13 11 */ ЬуреЗе!: ипз1дпес! 1опд л.п1: ъгогс!32 ; /* ЬЬе ргодгаш оп1у ъгогкз соггесЫу Щ 1опд = 32Ы!:з */ 1:урес!е1: ипз1дпес! 1опд и4; Ьурес1е1: ипз1дпес! сЬаг и1; Ьурес!е1: зЬгисЬ { и4 к[3],кл.[3], егсоп [ЫМВКЫ], Ьгсоп [ШВК+1] ; } Ьюу__сЬх; /* ЫоЬе: епсгурЬ апс! с!есгурЬ ехресЬ ^и11 Ыоскз—рас!<Ыпд Ыоскз 13 са11ег' з гезропзл-ЫНЬу. А11 Ьи1к епсгурЫоп 13 с!опе л.п ЕСВ шос!е Ьу ЬЬезе са11з. ОЬЬег шос!ез шау Ье ас!с!ес! еазЫу епоидЬ. */ /* «ЗезЬгоу: СопЬехЬ. */ /* ЗсгиЪ сопЬехЬ о^ а11 зепзл-Ьллге с!а1:а. */ уод-с! Ъ*у_с!ез1:гоу (Ь*у_с1:х *) ; /* епсгурЬ: СопЬехЬ, рЬг Ьо с!а1:а Ыоск, # о:Е Ыоскз. */ ■\юд.с! Ьму_епс (Ь^у__сЬх *, и4 *, Д-пЬ) ;
722 Прикладная криптография /* <Зесгур1:: СопЪехЪ, р1:г 1:о <За1:а Ыоск, # о€ Ыоскз. */ уо1с! Ъ*у__с1ес (Ь*у_с1:х *, и4 *, д.п1:) ; /* кеу: СопЪехЪ, р1:г 1:о кеу <3а1:а. */ уо1с! 1:му__кеу (1:*/у_с1:х *, и4 *) ; /* АСССЮЕ /* Епс1 оИ АС со<Зе рго1:о1:урез ап<3 зЪгис1:игез. /* уол.с1 ти(ъюгс!32 *а) /* л.тгег1:з 1:Ье огс!ег о^ 1:Ье Ы1:з о! а */ { 1П1: 1 ; жэгс!32 Ь[3] ; */ */ */ Ь[0] = Ь[1] = Ь[2] « 0 ; ^ог( 1-0 ; 1<32 ; 1++ ) { Ь[0] «= 1 ; Ь[1] «= 1 ИЕ(а[0]&1) Ь[2] |= 1 ; 1^(а[1]&1) Ь[1] | = 1 ; л.1:(а[2]&1) Ь[0] |= 1 ; Ь[2] «= 1 ; а [0] »= 1 ; а [1] »= 1 ; а [2] »= 1 ; } а[0] « Ь[0] ; а[1] = Ь[1] ; а[2] = Ь[2] } уо1с! датта (ъгогс132 *а) { ъгог<332 Ь [ 3 ] ; /* 1:Ье попИпеаг з1:ер */ Ь [0] = а [0] Ь [1] = а [1] Ь[2] = а [2] (а [1] | (~а [2]) ) (а [2] | (~а [0]) ) (а[0] I (~а[1]) ) а[0] « Ь[0] } а [1] = Ь [1] ; а [2] = Ь [2] ; ■\юл.с1 ЪЬеЪа (ъюг<332 *а) { жэг<332 Ь[3]; /* ЪЬе Ипеаг з1:ер */ Ь[0] = а[0] Л (а [0] »1б) Л (а [1] «16) /Ч (а [1] »16) Л (а [2] «16) /Ч (а [1] »24) /Ч (а [2] «8) /Ч (а [2] »8) /Ч (а [0] «24) Л (а [2] »16) Л (а [0] «16) /Ч (а [2] »24) Л (а[0]«8) г Ь [1] = а [1] Л (а [1] »1б) /Ч (а [2] «16) Л (а [2] »16) Л (а [0] «16) /ч (а [2] »24) Л (а [0] «8) /ч (а [0] »8) Л (а [1] «24) /Ч (а [0] »1б) Л (а [1] «16) /Ч (а [0] »24) /Ч (а [1] «8) / Ь[2] = а[2] Л (а [2] »1б) /ч (а [0] «16) Л (а [0] »16) Л (а [1] «16) /Ч (а [0] »24) Л (а [1] «8) /Ч (а [1] »8) /Ч (а [2] «24) Л (а [1] »1б) Л (а [2] «16) /Ч (а [1] »24) Л (а [2] «8) г а[0] - Ъ[0] ; а [1] = Ь [1 ] ; а[2] = Ь[2] ; } уо1<3 р1_1 (ъюг<332 *а) {
Исходные коды 723 а [0] = (а [0] >>10) А (а [0] «22); а [2] = (а [2 ] «1) А (а[2]»31); } ■\юл_с! р1_2 (могс132 *а) { а [0] = (а [0] «1) А (а[0]»31); а [2] = (а [2] »10) А (а[2]«22); } уод.с1 гЬо (могс!32 *а) /* ЪЬе гоипс! ^ипс^хоп */ { ^Ье1:а(а) ; р!_1 (а) ; дашта(а) ; рл._2 (а) ; } ■\юл.с1 гпс!соп_деп (могс132 зЪгЪ, ж>гс!32 *г{:аЪ) { /* депега1:ез ЪЪе гоипс! сопз1:ап1:з */ 1П1: 1 ; Лог(1—0 ; 1<=ымвк ; 1++ ) { гЛаЪ[л.] = зЛгЛ ; зЛгЛ «= 1 ; И{ 5ЛгЛ&0хЮ000 ) зЛП: А= 0x11011 ; } } /* МосИЛЛес! зЫдЬЛЛу Ло Лз.Л ЛЪе саПег'з пее<3з. */ ■\юд.с! епсгурЛ (Лму__сЛх *с, ъгогс!32 *а) { сЬаг 1 ; Лог( 1=0 ; 1<ШВК ; 1++ ) { а[0] А= с->к[0] А (с->егсоп[1]«16) ; а[1] А= с->к[1] ; а[2] А= с->к[2] А с->егсоп[1] ; гЬо(а) ; } а[0] А= с->к[0] А (с->егсоп [ШВК] «16) ; а[1] А= с->к[1] ; а[2] А= с->к[2] А с->егсоп[ШВК] ; 1:Ье1:а(а) ; } /* МосИЛЛес! зИдЪЛЛу Ло тееЛ саПег'з пее<3з. */ уод.с1 йесгурЛ (Лму__сЛх *с, мог<332 *а) { сЬаг 1 ; ши(а) ; Лог( 1=0 ; 1<ЫМВН ; 1++ ) {
724 Прикладная криптография а[0] Л= с->кл.[0] Л (с-><Згсоп [1] <<16) ; а [1] Л= с->к![1] ; а [2] Л= с->клЛ2] л с->с!гсоп [ 1 ] ; гЬо(а) ; } а[0] л= с->кл.[0] л (с-*><Згсоп [ШВК] <<16) ; а[1] л= с->к1[1] ; а [2] л= с->к1 [2] л с->с!гсоп [ШВК] ; ■Ы1е1:а(а) ; ти(а) ; } ■\ГОД-С1 1:му_кеу (1му_с1:х *с, и4 *кеу) { с->к1[0] = с->к[0] = кеу[0]; с->к1[1] = с->к[1] = кеу[1]; с->к1[2] = с->к[2] = кеу[2]; ЪЬеЪа (с->кл.) ; ши(с->кл.); гпс!соп_деп (ЗТКТ_Е, с->егсоп) ; гпс!соп_деп (8ТКТ_0, с->с!гсоп) ; } /* Епсгур*: 1П ЕСВ гпобе. */ уод.с1 1;му_епс (1му__с{:х *с, и4 Ма1:а, з.п1: Ыксп*:) { и4 М; 1П1: л.; <3 = с!а{;а; ^ог (1=0; 1<Ыксп!:; 1++) { епсгур{: (с, с!) ; й +=3; } } /* Оесгур1: л.п ЕСВ тос1е. */ уо1с1 1:му_<3ес (1:му_с{:х *с, и4 *<3а1:а, 1п1: Ыксп1:) { и4 *<3; 1П{: д.; <3 = <3а1:а; ^ог (1=0; 1<Ыксп1:; 1++) { <3есгур1: (с,<3) ; с1-ь—3; } } /* ЗсгиЪ зепзлЛгуе Vа1иез ^гогп шешогу Ье^оге <Зеа11оса1:л.пд. */ уо1<3 1:му_<Зез1:гоу (1:му_с{:х *с) { д.пЪ 1; ^ог (1=0; КЗ; 1++) с->к[л.] = с->кл.[1] = 0; } лгод.с1 рг1п^ес (сЬаг *с11гз, мог<332 *<3) { рг1П{:1:("%20з : %081х %081х %081х \п", сЪгз, <3 [2],с![ 1 ] гс![0]) ;
Исходные коды 725 } тал.п () { !му_с!х дс; *огй32 а [ 9 ], к [ 3 ] ; л.п! д.; /* Тез! Vес!о^ 1. */ к[0]=к[1]=к[2]=0; а [ 0]=а[1]=а[2]=1; !му_кеу (&дс, к) ; РГ1П!! ("**********\п") ; рг1п^ес("КЕУ = 77, к) ; ргл.п^ес("РЬА1Ы = 77, а) ; епсгур! (&дс, а) ; рг1п^ес("С1РНЕЯ = 77,а); /* Тез! Vес!о^ 2. */ к[0]=6;к[1]=5;к[2]=4; а[0]=3;а[1]=2;а[2]=1; !му__кеу (&дс, к) ; РГ1П!!; рг1п^ес ("КЕУ = 77, к) ; ргл.п^ес ("РЬАШ = 77,а); епсгур!(&дс,а); рг1п^ес("С1РНЕР = 77,а); /* Тез! Vес!о^ 3. */ к [2] =0хЪсс1еТ012; к [1] =0x456789аЬ; к [0] =0хс1еТ01234; а [2] =0x01234567; а [1] =0х9аЬсс1еТ0; а[0]=0x23456789; !му_кеу (&дс, к) ; рг1п!! ("**********\п") ; рг1п^ес("КЕУ = 77, к) ; рг1п^ес ("РЬАШ = 77,а); епсгур!(&дс,а); ргз.пЬгес("С1РНЕК = 77,а); /* Тез! Vес!о^ 4. */ к [2] =0хсаЪ920сс1; к [1] =0х<16144138; к [0] =0х<32!05Ъ5е; а [2 ] =0хас121ес!7; а [ 1 ] =0х83ае9с1с4; а [ 0 ] =0x4059с7 6е; !му_кеу(&дс, к) ; ргз.п!!("**********\п77) ; рг1п!уес ("КЕУ = 77, к) ; ргл.п^ес ("РЬАШ = 77,а); епсгур!(&дс,а); ргл.п^ес("С1РНЕК = 77, а) ;
726 Прикладная криптография /* ТЕ5Т УАШЕЗ кеу : 00000000 00000000 00000000 р1а1пГехГ : 00000001 00000001 00000001 сЗрЪегГехГ : а<321есГ7 83ае9с1с4 4059с76е кеу : 00000004 00000005 00000006 р1а1пГехГ : 00000001 00000002 00000003 сЗрЪегГехГ : саЪ920сс! <36144138 <32Г05Ъ5е кеу : Ъс<ЗеГ012 456789аЬ <ЗеГ01234 р1а1пГехГ : 01234567 9аЪс<ЗеГ0 23456789 С1р11егГехГ : 7с<ЗЪ76Ъ2 9ссЗ<3<ЗЪ6сЗ 0аа55<ЗЬЬ кеу : саЪ920с<3 <36144138 <32Г05Ь5е р1ал.пГехГ : ас321есГ7 83ае9с3с4 4059с76е сЗрЪегГехГ : 15Ы55е<3 */ /* Епс/<3ес ГезГ: */ 6Ъ13Г17с 478еа871 Гог(1=0;1<9; Гму_епс (&дс, 1++) а[1]= а, 3) ; =1; Гог(1=0;1<9;1+=3) ргл.пГГ("В1оск %01с1 епсгурГз Го %081х %081х %081х\п", 1/3,а[1],а[1+1],а[1+2]); Гму_<3ес (&дс,а,2); Гму_с1ес (&дс, а+6,1) ; Гог (1=0; 1<9; 1+=3) ргЛпГГ ("В1оск %01с1 <ЗесгурГз Го %081х %081х %081х\п", 1/3,а[1],а[1+1],а[1+2]); } КС5 #1пс1и<3е <зГсИо.11> Гуре<ЗеГ ипз1дпес! сЬаг и1; Гуре<ЗеГ ипз1дпе<3 1опд и4; /* Ап КС5 сопГехГ пее<3з Го кпом Ьои шапу гоипсЗз л.Г Ъаз, ап<3 л.Гз зиЪкеуз. */ Гуре<ЗеГ зГгисГ { и4 *хк; 1пГ пг; } гсб_сГх; /* Шеге роззл.Ые, ГЬезе зЪои1с1 Ъе гер1асес! ш.ГЪ. асГиа1 гоГаГе ЛпзГгисПопз. Еог ТигЬо С++, ГМз 15 <Зопе мл.ГЪ. _1гоГ1 апс! _1гоГг. */ #йеПпе ЮТЬ32 (X, С) ( ( (X) « (С) ) I ( (X) » (32- (С) ) ) ) #<ЗеПпе КОТК32 (X, С) ( ( (X) » (С) ) | ( (X) « (32- (С) ) ) ) /* ЕипсПоп ргоГоГурез Гог <ЗеаИпд ^1ГЬ КС5 Ьаз1с орегаПопз. */
Исходные коды 727 ■\юл.с1 гс5_1пИ: (гс5_с^х *, 1п^) ; уол.с1 гс5__<Зез1:гоу (гс5_с1:х *); ■уол.с1 гс5_кеу (гс5_с1:х *, и1 *, 1пЪ) ; уо1с! гс5_епсгур1: (гс5_сЪх *, и4 *, ЛпЪ) ; 'У'о1с1 гс5_<2есгур{: (гс5__с1:х *, и4 *, д.п1:) ; /* ЕипсЫоп 1шр1ешеп1:а1:1оп5 Ног КС5. */ /* ЗсгиЬ ои1: а11 зепзлЛ^е Vа1иез. */ ■у'ол.с! гс5_<Зез1:гоу (гс5_с1:х *с) { 1П1: д.; 1:ог(1=0;1<(с->пг)*2+2;1++) с->хк [л-^Ог- ^гее (с->хк); } /* А11оса1:е шешогу Ног гс5 соп{:ехЪ'з хк апс! зисЫ */ ■\юл.с1 гс5_л.п:И: (гс5_с1:х *с, л.п1: гоипйз){ с->пг = гоигкЗз; с->хк = (и4 *) ша11ос (4* (гоип<Зз*2+2)) ; } ■\юл.с! гс5__епсгур1: (гс5__с1:х *с, и4 *с!а1:а, л.п1: Ыоскз) { и4 М, *зк; 1П1: Ъ,л.,гс; с! = с!а1:а; зк = (с->хк)+2; ^ог (Ъ=0;11<Ыоск5 ;Ы-+) { <1 [0] += с->хк[0]; й[1] += с->хк[1]; Ног (1=0; Кс->пг*2; 1+=2) { й[0] л= а[1]; гс = с1[1] & 31; сЦО] = КОТЬ32 (<1 [0), гс); <3[0] += зк[1]; аш л= с![0]; гс = й[0] & 31; й[1] = ЕОТЬ32 (с! [ 1 ], гс) ; с![1] += зк[1+1]; /♦рго-П^С ("Яоипс! %03д : %081х %081х зк= %081х %081х\п",1/2 с1[0],с1[1],зк[1],зк[1+1]);*/ } с!+=2; } } ■уол_с1 гс5_с!есгур1: (гс5_с{:х *с, и4 МаЪа, д.пЪ Ыоскз) { и4 *<3, *зк; 1П1: Ь,1ггс; с! = <3а{:а; зк = (с->хк)+2; ^ог (11=0;11<Ыоскз;Ы-+) { ^ог(1=с->пг*2-2;1>=0;1~=2){ /*рг1п1:^("Коипс! %03Ы %081х %081х * зк: %081х %081х\п",
728 Прикладная криптография 1/2,й[0],й[1],зк[з.Ьзк[1+1]) ; */ с! [1] — зк[1+1] ; гс = сЦО] & 31; с! [1] = КОТК.32 (с! [ 1 ], гс) ; с![1] А= <3 [ 0 ] ; с![0] -= зк[1]; гс = с![1] & 31; <3 [0] = ЕОТК.32 (с![0] ,гс) ; <3 [0] А= <3 [1] ; } с![0] -= с->хк[0] ; й[1] -= с->хк[1] ; с!+=2; } } “^юл-с! гс5_кеу (гс5_с{:х *с, и1 *кеу, з.п1: кеу1еп) { и4 *рк, А, В; /* ра<3с!е<3 кеу */ 1П1: хк_1еп, рк_1еп, 1, пит_з{:ерз, гс; и1 *ср; хк_1еп = с->пг*2 + 2; рк_1еп = кеу1еп/4; ((кеу1еп%4)!=0) рк_1еп += 1; рк = (и4 *) та11ос(рк_1еп * 4); Шрк==ШЬЬ) { рг1п^^("Ап еггог оссиггесП\п"); ехз.*: (-1) ; } /* 1п1-Ыа112е рк — Шз зЪои1<3 могк оп 1п1:е1 тасЫпез, апумау. . . . */ 1:ог (1=0; 1<рк_1еп; 1++) рк [д.] =0; ср = (и1 *)рк; ^ог(1=0;1<кеу1еп;1++) ср[1]=кеу[1]; /* 1п:И:1а11.2е хк. */ с->хк[0] = 0хЪ7е15163; /* Р32 */ ^ог(1=1;1<хк_1еп;1++) с->хк[1] = с->хк[1-1] + 0х9е3779Ъ9; /* 032 */ /* ТЕ5ТШС */ А = В = 0; ^ог (1=0;1<хк_1еп;1++) { А = А + с->хк[д.] ; В = В Л с->хк [д.]; } /* Ехрапс! кеу 1п1:о хк. */ 1^ (рк 1еп>хк 1еп) пиш_з1:ерз = 3*рк_1еп;е1зе пиш_з-Ьерз = 3*хк_1еп; А = В = 0; ^ог(1=0;1<пиш_з+ерз;1++){ А = с->хк[1%хк_1еп] = НОТЪ32(с->хк[1%хк_1еп] + А + В, 3); гс = (А+В) & 31;
Исходные коды 729 В = рк[1%рк_1еп] = КОТЬ32(рк[1%рк_1еп] + А + В,гс); } /* СХоЬЬег зепзЛЪллге с!аЪа ЪеЪоге (ЗеаНосаЪл-пд тетогу. */ Ъог(1=0;1<рк_1еп;1++) рк[л.] =0; Ъгее(рк); } уо1с! та1п(уо1с1) { гс5__сЪх с; и4 с!аЪа[8]; сЬаг кеу[] = "АВСОЕ"; 1ПЪ 1; ргтЪЪГ \п") ; Ъог (1=0; К8; 1++) с!аЪа[:1] = з.; гс5_1п11: (&с, 10); /* 10 гоипйз */ гс5_кеу (&с, кеу, 5) ; гс5_епсгурЪ (&с, «ЗаЪа, 4) ; ргЪпЪЪ ("ЕпсгурЪ10пз: \п") ; Ъог(1=0;1<8;1+=2) рптЪЪ ("В1оск %01<1 = %081х %081х\п", 1/2,с1а1:а[1] , <1аЪа[1+1]) ; гс5_с1есгурЪ (&с,с1аЪа, 2) ; гс5_с1есгур1: (& с, с1а1:а+4, 2) ; ргд.п1:Ъ ("0есгурЪ1ОПз: \п") ; ^ог (1=0; 1<8; 1+=2) ргЪпЪЪ("В1оск %01с* = %081х %081х\п", 1/2,с1а1:а[1] ,с!а1:а[1+1]) ; } А5 Ъуре<2еЪ зЪгисЪ { ипз 1дпес! 1опд г 1, г2, г3 ; } а5__с1:х; зЪаЪл.с 1пЪ ЪЪгезЪоЫ (г1, г2, гЗ) ипз1дпе<1 л.пЪ г1; ипз1дпес1 Л-ПЪ г2; ипзЪдпес! л.пЪ гЗ; { ЛпЪ ЪоЪа1; ЪоЪа1 = (((г1 » 9) & 0x1) == 1) + ( ( (г2 » 11) & 0x1) == 1) + (((гЗ » 11) & 0x1) == 1); НЕ (ЪоЪа1 > 1) геЪигп (0); е1зе
730 Прикладная криптография геЪигп (1); } ипз1дпес1 1опд с1оск_г1(сЪ1, г1) л.пЪ сЪ1; ипз1дпес1 1опд г1; { ип51дпес1 1опд 1:еес1Ъаск; сЪ1 А= ( (г1 » 9) & 0x1); (сЪ1) { ^еес!Ьаск = (г1 » 18) А (г1 » 17) А (г1 » 16) А (г1 » 13); г1 = (г1 « 1) & 0x1 И (^еес!Ъаск & 0x01) г1 А= 0x01; } ге^игп (г1); } ипз1дпес1 1опд с1оск_г2 [сЫ, г2) 1П1: сЪ1; ипз1дпе<3 1опд г2; { ипз1дпе<3 1опд ^ее<1Ьаск; с-Ы А= ( (г2 » 11) & 0x1); И (сЫ) { ^еес1Ьаск = (г2 » 21) А (г2 » 20) А (г2 » 16) А (г2 » 12); г2 = (г2 « 1) & 0x3^^^^^; И (^еесЗЪаск & 0x01) г2 А= 0x01; } ге{:игп (г2); ипз1дпес1 1опд с1оск_гЗ (с{:1, гЗ) л-пЪ сЪ1; ип51дпес! 1опд гЗ; { ипз1дпес1 1опд ^ее<1Ьаск; с1:1 А= ( (гЗ » 11) & 0x1) ; И (с1:1) { НеедЪаск = (гЗ » 22) А (гЗ » 21) А (гЗ » 18) А (гЗ » 17); гЗ = (гЗ « 1) & ОхИШ?; Щ (^еесШаск & 0x01) гЗ А= 0x01; } ге{:игп (гЗ) ; } 1П1: кеу5-Ьгеаш(кеу, ^гаше, аНсе, ЬоЬ)
Исходные коды 731 ипз1дпес1 сЬаг *кеу; ипз1дпес! 1опд Ъгаше; ипз1дпес! сЬаг *аНсе ипз1дпес1 сЬаг *ЬоЬ; { ипз1дпес! 1опд г1; /* ипз1дпес1 1опд г2; /* ипз1дпес1 1опд гЗ; /* 1пЪ 1; /* 1пЪ с1оск_сЪ1; /* ипз1дпес! сЬаг *рЪг; /* ипзхдпес! сЬаг ЬуЪе; /* ипз1дпес! л.пЪ ЫЪз; /* ипзхдпес! л.пЪ МЪ; /* /* 64 МЪ зеззл-оп кеу */ /* 22 МЪ ^гаше зедиепсе пишЬег */ /* 114 МЪ АИсе Ъо ВоЬ кеу зЪгеаш */ /* 114 МЪ ВоЬ Ъо АНсе кеу зЪгеаш */ 19 МЪ зМЪЪ гед1зЪег */ 22 МЪ зМ^Ъ гед1зЪег */ 23 МЪ зМЪЪ гед1зЪег */ соипЪег Ъог 1оорз */ хогес! ш.ЪЬ с1оск епаЫе оп еасЪ зМЪЪ гед1зЪег */ сиггепЪ розд.Ъд.оп л.п кеузЪгеаш */ ЬуЪе оЪ кеузЪгеаш Ье1пд аззешЫес! */ пишЬег оЪ МЪз оЪ кеузЪгеаш л.п ЬуЪе */ МЪ оиЪриЪ Ъгот кеузЪгеаш депегаЪог */ /* 1п1Ъ1аИзе зМЪЪ гед1зЪегз ^гош зеззл.оп кеу */ г1 = (кеу[0] | (кеу[1] « 8) | (кеу[2] « 16) ) & 0х7ЪЪ^Ъ; г2 - ((кеу[2] » 3) | (кеу[3] « 5) | (кеу[4] « 13) I (кеу[5] « 21)) & ОхЗЪЪЪЪЪ; гЗ = ((кеу[5] » 1) | (кеу[6] « 7) | (кеу[7] « 15) ) & 0х7ЪЪЪЪЪ; /* Мегде Ъгаше зедиепсе пишЬег л.пЪо зМЪЪ гедхзЪег зЪаЪе, Ьу хог'л.пд л.Ъ * 1пЪо ЪЬе Ъеес!Ьаск раЪЬ */ Ъог (1=0; л.<22; 1++) { с1оск__сЪ1 = ЪЬгезЬоЫ (г1, г2, г2) ; г1 = с1оск_г1(с1оск_сЪ1, г1) ; г2 = с1оск_г2(с1оск_сЪ1, г2) ; гЗ = с1оск_гЗ(с1оск_сЪ1, гЗ) ; д.Ъ (Ъгаше & 1) { г1 л= 1; г2 л= 1; гЗ л= 1; } Ъгаше = Ъгате » 1; /* Кип зМЪЪ гедхзЪегз Ъог 100 с1оск Ъхскз Ъо а11ом Ъгаше пишЬег Ъо * Ье ЫЪЪизеЬ л.пЪо а11 ЪЬе МЪз оЪ ЪЬе зЫЪЪ гед1зЪегз */ Ъог (1=0; 1<Ю0; 1++) { с1оск_сЪ1 = ЪЬгез1ю1с!(г1, г2, г2) ; г1 = с1оск_г1(с1оск_сЪ1, г1) ; г2 = с1оск_г2(с1оск_сЪ1, г2); гЗ = с1оск_гЗ(с1оск_сЪ1, гЗ) ; /* Ргос!исе 114 МЪз оЪ АИсе->ВоЬ кеу зЪгеаш */ рЪг = аПсе; МЪз = 0;
732 Прикладная криптография Ьуке = 0; ког (1=0;1<114;1++) { с1оск_ск1 = кЬгезЬоЫ (г1, г2, г2) ; г1 = с1оск_г1 (с1оск_ск1, г1) ; г2 = с1оск_г2 (с1оск_ск1, г2) ; гЗ = с1оск_гЗ (с1оск_ск1, гЗ) ; Мк = ( (г1 » 18) Л (г2 » 21) Л (гЗ » 22)) & 0x01; Ьуке = (Ьуке «1) I Ык; Ыкз++; И (Ыкз == 8) { *ркг = Ьуке; ркг++; Ыкз = 0; Ьуке = 0; } } И (Ыкз) *ркг = Ьуке; /* Кип зЫЛ: гед1зкегз ког апокЬег 100 Ыкз ко Ыс1е ге1акл.опзЫр Ъекмееп * АИсе->ВоЬ кеу зкгеагп апс! ВоЬ->АИсе кеу зкгеат. */ ког (1=0; 1<Ю0; 1++) { с1оск_ск1 = кЬгезЬоЫ (г1, г2, г2) ; г1 = с1оск_г1(с1оск_ск1, г1) ; г2 = с1оск__г2 (с1оск_ск1, г2) ; гЗ = с1оск_гЗ (с1оск_ск1, гЗ) ; /* РгоЬисе 114 Ыкз ок ВоЬ->АИсе кеу зкгеат */ ркг = ЪоЬ; Ыкз = 0; Ьуке = 0; Рог (1=0;1<114;1++) { с1оск_ск1 = кЬгезЬоЫ (г1, г2, г2) ; г1 = с1оск_г1 (с1оск_ск1, г1) ; г2 = с1оск_г2(с1оск_ск1, г2); гЗ = с1оск_гЗ (с1оск_ск1, гЗ) ; Ык = ( (г1 » 18) Л (г2 » 21) Л (гЗ » 22)) & 0x01; Ьуке = (Ьуке << 1) | Ык; Ыкз++; 1к (Ыкз == 8) { *ркг = Ьуке; ркг++; Ыкз = 0;
Исходные коды 733 ЪуГе = 0; } } Л.Г (МГз) *рГг = ЪуГе; геГигп (0) ; } \гол.с1 а5__кеу (а5_сГх *с, сЬаг *к) { с->г1 = к[0] «111 к[1]«3 | к[2]»5 ; /* 19 */ с->г2 = к[2]<<17 | к[3]«9 | к[4]«1 I к[5]»7; /* 22 */ с->гЗ = к[5]«151к[6]«8 I к[7] ; /* 23 */ } /* ЗГер опе МГ л.п А5, геГигп 0 ог 1 аз оиГриГ МГ. */ Д-ПГ а5_зГер(а5_сГх *с) { МГ сопГго1; сопГго1 = Г11ге5]1о1с1(с->г1,с->г2, с->гЗ) ; с->г1 = с1оск_г1 (сопГго1, с->г1) ; с->г2 = с1оск_г2(сопГго1,с->г2); с->гЗ = с1оск__гЗ (сопГго1, с->гЗ) ; геГигп ( (с->г1Ас->г2Ас->гЗ) &1) ; } /* ЕпсгурГз а ЪиГГег оГ 1еп ЪуГез. */ \гол.с! а5_епсгурГ (а5__сГх *с, сЬаг МаГа, л.пГ 1еп) { МГ 1/ з; сЬаг Г; Гог (1=0; л.<1еп; 1++) { Гог (з=0;з<8;з++) 1: = Г«1 | а5_зГер(с); йаГа[л.]л=Г; } } '^'ол.с! а5_с!есгурГ (а5__сГх *с, сЬаг МаГа, л.пГ 1еп) { а5_епсгурГ (с, с!аГа, 1еп); } \юл.с1 ша1п (VО^с^) { а5_сГх с; сЬаг йаГа[100]; сЬаг кеу[] = {1,2,3,4,5,6,7,81; л.пГ 1, Пад; Гог (1=0; 1<Ю0; 1++) с!аГа[л.] = 1; а5_кеу (&с, кеу) ; а5_епсгурГ (&с, с!аГа, 100); а5_кеу (&с, кеу); а5_<1есгурГ (&с,с!аГа, 1) ; а5_с!есгурГ (&с, йаГа+1, 99) ; Пад = 0;
734 Прикладная криптография Тог (1=0; 1<Ю0; 1++) л.Е (йаЪа [1] ! =л.) :Е1ад = 1; 1^ (^1ад) рг1п1:^ ("Оесгур1: Еа:11ес1\п") ; е1зе ргл.п1:1: ( зиссеес1ес1\п") ; } 'Ресгур*: 5ЕМ #ипс!еГ ЗЕАЪ_РЕВиС #с!е^1пе АЬС_ОК 0 ЫеНпе АЬС_ЬЮТОК 1 #<Зе:Ел.пе КЮКРЗ РЕК ЗЕАЬ САЬЬ 1024 ЪурейеЕ з^гис1: { ипзхдпес! 1опд 1: [520]; /* 512 гоипс!ес1 ир Ъо а ти1Ъ1р1е оЕ 5 ипз1дпес1 1опд з[2б5]; /* 256 гоипйес! ир Ъо а ти1Ъ1р1е оЕ 5 ипз1дпес! 1опд г[20]; /* 16 гоипс!ес1 ир Ъо ти1Ъ1р1е оЕ 5 */ ипз1дпес! 1опд соипЪег; /* 32-МЪ зупсЬ Vа1ие. */ ипз1дпес! 1опд кз__ЪиЕ [Ж)КРЗ_РЕК_ЗЕАЬ_САЪЪ] ; л.пЪ кз_роз; } зеа! сЪх; 5*/ 5*/ #с!еЕд.пе #с1еЕл.пе #с!еЕд.пе #<ЗеЕ1пе #<ЗеЕл.пе КОТ2(х) КОТ9(х) КОТ8(х) КОТ16(х) КОТ24(х) #с!еЕл.пе КОТ27 (х) (((х) » 2) | (((х) » 9) | (((х) » 8) | (((х) » 16) (((х) » 24) (((х) » 27) ((х) « 30)) ((х) « 23)) ((х) « 24)) I ((х) « 16)) I ((х) « 8)) I ((х) « 5)) #<1еЕ:те ЖЖР(ср) { <ср[0] « 24) | (ср[ 1 ] « 16) | (ср[2] « 8) | (ср[3]) ) #с!еЕл.пе Е1 (х, у, 2) #с!еЕ:те Е2 (х, у, 2) #с1еЕ:1пе ЕЗ (х, у, 2) #<ЗеЕл.пе Е4 (х, у, 2) (((х) & (у)) ((х)л (уГ (2)) (((х) & (у)) ( (хГ (у)л(2) ) I ((~ (х) ) & (2))) I ((X) & (2)) I ((у) & (2))) л.пЪ д(1п, 1, Ь) ипз1дпес! 1ПЪ д.; сЬаг *л.п; ипз1дпес1 { ипз1дпес! 1опд *Ъ; 1опд ЬО; ипз1дпе<1 1опд Ы; ипз1дпес! 1опд Ь2; ипз1дпес! 1опд ЪЗ; ипз1дпес1 1опд Ы ; ипз1дпес! 1опд а; ипз1дпе<1 1опд Ь;ипз1дпес1 1опд с; ипз1дпес1 1опд с1; ипз1дпес! 1опд е; ипз1дпес1 сЬаг *кр; ипз1дпес! 1опд *[80]; ипз1дпес! 1опд Ъетр;
Исходные коды 735 кр = 1п; ЬО = ТОКБ(кр); кр += 4 М = ЖЯШ(кр) ; кр += 4 Ь2 = ТОКБ(кр); кр += 4 ЬЗ - ЖЖБ(кр); кр += 4 Ь4 * ТОКО(кр); кр += 4 м[0] = д.; Гог (1=1;1<1б;1++) *[1] = 0; Гог (1=16;1<80;1++) ^[1] = N[1-3] Аи[1-8]лю[1-14]лю[л.-16] ; а = ЬО; Ь = Ь1; с = Ь2; с! = ЬЗ; е = Ь4; Гог (1=0;1<20;1++) { Гетр = КОТ27(а) + Е1(Ъ, с, й) + е + уг[1] + 0х5а827999; е = с!; с! = с; с = КОТ2 (Ь) ; Ъ = а; а = Гетр; } Гог (1=20; К40; 1++) { Гетр = КОТ27 (а) + Е2 (Ъ, с, с!) + е + м[л.] + 0х6ес19еЬа1; е = с!; с! = с; с = КОТ2(Ь); Ь = а; а = Гетр; } Гог (1=40;1<60;1++) { Гетр = КОТ27 (а) + ЕЗ (Ь, с, й) + е + и[Ц + 0х8Г1ЪЪсс1с; е = с1; с! = с; с = КОТ2 (Ъ); Ь = а; а = Гетр; } Гог (1=60;1<80;1++) { Гетр = КОТ27 (а) + Е4 (Ъ, с, с!) + е + ю[1] + 0хса62с1с16; е = с1; с! = с; с = КОТ2 (Ь) ; Ь = а; а = Гетр;
736 Прикладная криптография Ь[0] = ЬО+а; Ь[1] = Ы+Ъ; Ь[2] = Ь2+с; Ь[3] = Ь3+с1; Ь[4] = Ъ4+е; геГигп (АЬС_ОК) ; } ипзхдпес! 1опд дашта (а, л.) ипз1дпес! сЬаг *а; 1ПГ 1; { ипз1дпес! 1опд Ь[5]; ^о1<3) д(а, 1/5, Ь) ; геЪигп Ь[1 % 5]; } 1пЬ зеа1_1П1-Ь (зеа1_сГх *гези1Г, ипз1дпес! сЬаг *кеу) { 1пЬ л.; ипз1дпес1 1опд Ь[5]; Гог (1=0;1<510;1+=5) д(кеу, 1/5, &(гези1Г->Г[1]) ) ; /* Ьогг1Ые зрес1а1 сазе Гог ГЬе епс! */ д(кеу, 510/5, Ь); Гог (1=510;К512;1++) гези1Г->Г [л.] = Ъ[1-510]; /* 0x1000 тос! 5 15 +1, зо ЪаVе Ьогг1Ые зрес1а1 сазе Гог ГЬе зГагГ */ д(кеу, (-1+0x1000)/5, Ь); Гог (1=0;1<4;1++) гези1Г->5 [1] = 1п [ 1+1 ] ; Гог (1=4;1<254;1+=5) д(кеу, (1+0x1000)/5, &(гези1Г->з[1])); /* Ъоггл.Ые зрес1а1 сазе Гог ЬЬе епс! */ д(кеу, (254+0x1000)/5, Ь); Гог (1=254;1<25б;1++) гези1Г->з [ 1 ] = 1п [ 1—254] ; /* 0x2000 тос! 5 15 +2, зо ЪаVе Ьогг1Ые зрес1а1 сазе аГ ГЪе зГагГ */ д(кеу, (-2+0x2000)/5, Ь); Гог (1=0;1<3;1++) гези1Г->г[1] = Ь. [ 1+2 ] ; Гог (1=3;1<13;1+=5) д(кеу, (1+0x2000)/5, &(гези1Ь->г[1])); /* Ьогг1Ые зрес1а1 сазе Гог ГЬе епс! */ д(кеу, (13+0x2000)/5, Ь); Гог (1=13;1<1б;1++) гези1Ь->г[1] = Ь[л.-13]; геГигп (АЬС_ОК); } 1пГ зеа1 (зеа1_сГх *кеу, ипз1дпес! 1опд л.п, ипз1дпес! 1опд *оиГ) {
Исходные коды 737 хп! 1; хпГ ^; хп1: 1; ипзхдпес! 1опд а; ипзхдпеа 1опд Ь; ипзхдпеа 1опд с; ипзхдпеа 1опд а; ипзхдпеа зЬогГ р; ипзхдпес! зЪогГ ипзхдпес! 1опд п1; ипзхдпес! 1опд п2; ипзхдпес! 1опд пЗ; ипзхдпес! 1опд п4; ипзхдпес! 1опд *щ>; мр = оиГ; Гог (1=0;1<4;1++) { а = хп л кеу->г[4*1]; Ь = КОТ8(хп) л кеу->г[4*1+1]; с = НОТ16(хп) л кеу->г[4*1+2]; с! = КОТ24 (хп) л кеу->г [4*1+3] ; Гог (]=0п<2;]++) { р = а & 0x7Гс; Ь += кеу->Г[р/4]; а = КОТ9(а); р = Ь & 0x7Гс; с += кеу->Г[р/4]; Ь = КОТ9 (Ъ) ; р = с & 0x7Гс; с! += кеу->Г [р/4 ] ; с = КОТ9(с); р = с! & 0х7Гс; а += кеу->1: [р/4 ] ; а = КОТ9(с!) ; } п1 = а; п2 = Ь; пЗ = а; п4 = с; р = а & 0x7Гс; Ь += кеу->Г[р/4]; а = НОТ9(а); р = Ъ & 0x7Гс; с += кеу->Г[р/4]; Ь = КОТ9(Ь);
738 Прикладная криптография р = с & 0x7 Тс; а += кеу->Т [р/4 ] ; с = КОТ9(с); р = а & 0x7Тс; а += кеу—>1: [р/4 ] ; с! = КОТ9 (й) ; /* ТМз депегаТез 64 32-ЫТ иогдз, ог 256 ЪуТез оТ кеузТгеат. */ Тог (1=0; 1<б4 ; 1+4-) { р = а & 0x7Тс; Ь += кеу->Т[р/4]; а = КОТ9(а); Ь А= а; д = Ь & 0x7Тс; с А= кеу->Т[д/4]; Ь = КОТ9 (Ь) ; с += Ь; р = (р+с) & 0х7Тс; а += кеу->Т[р/4]; с = КОТ9(с); а А= с; д = (д+а) & 0x7Тс; а А= кеу->Т[д/4]; а = КОТ9 (а) ; а += а; р = (р+а) & 0x7Тс; Ь А= кеу->Т[р/4]; а = КОТ9(а); д = (д+Ъ) & 0х7Тс; с += кеу->1: [д/4 ] ; Ь = КОТ9(Ь); р = (р+с) & 0х7Тс; а А= кеу->Т[р/4]; с = КОТ9(с); д = (д+а) & 0x7Тс; а += кеу->Т[д/4]; а = КОТ9(а); *^р = Ь + кеу->з[4*л.]; мр++; *мр = с А кеу->з[4*1+1 ] ; >/р++; *ир = а + кеу->з[4*1+2]; мр++; *мр = а А кеу->з[4*1+3];
Исходные коды 739 мр++; И (1 & 1) { а += пЗ; с += п4; } е1зе { а += п1; с += п2; } } геЪигп (АЬС_ОК) ; } /* Ас1с1ес1 са11 Ъо геЪШ кз_ЪиЪ апс! гезеЪ соипЪег ап<1 кз_роз. */ люз.с1 зеа1__ге^И1_Ьи^^ег (зеа1_сЪх *с) { зеа1(с,с->соипЪег,с->кз_ЬиЪ); с->соипЪег++; с->кз_роз = 0; люЪс! зеа1_кеу(зеа1_сЪх *с, ипз1дпес1 сЬаг *кеу){ зеа1__1п1Ъ (с, кеу) ; с~>соипЪег = 0; /* Ву с1е1:аи1Ъ, 1П1Ъ Ъо гего. */ с->кз_роз = ТОК05_РЕК_5ЕАЬ_САЬЪ; /* КеЪШ кеузЪгеаш ЬиЪЪег оп пехЪ са11. */ } /* ТЫз епсгурЪз ЪЬе пехЪ V могйз ыл.ЪЬ ЗЕАЬ. */ уоЪс! зеа1__епсгурЪ (зеа1_сЪх *с, ипзЬдпес! 1опд *<2аЪа_рЪг, ЪпЪ V/) 1пЪ Ъ; Ъог(1=0;1<м;1++){ 1Ъ (с—>кз роз>—МОРОЗ РЕН ЗЕАЬ САЬЬ) зеа1_геЪШ_ЪиЪЪег (с) / <ЗаЪа_рЪг [1] Лч=с->кз_ЬиЪ [с->кз_роз] ; с->кз_роз++; } } люл.с1 зеа1_с1есгуръ (зеа1_сЪх *с, ипзЬдпес! 1опд *<2аЪа_рЪг, ЪпЪ { зеа1_епсгурЪ (с, с!аЪа_рЪг,ы) ; } уоЪс! зеа1__гезупсЪ (зеа1_сЪх *с, ипзЪдпес! 1опд зупсЬ^ъюгс!) { с->соипЪег = зупсЬ_^огс1; с->кз_роз = М0Я05_РЕР_5ЕАЬ_САЬЬ; } уоЪс! шаЪп (уоЪс!) { зеа1_сЪх зс; ипз1дпес1 1опд ЪиГ[1000] ,Ъ;
740 Прикладная криптография 1П{: 1,^1ад; ипз1дпес1 сЬаг кеу[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; рг1п1:^ ("1\п") ; зеа1_кеу(&зс,кеу); рг1п«("2\п") ; ^ог (1=0; 1<Ю00; 1++) Ьи^[1]=0; ргл.п{:^("3\п"); зеа1_епсгурЪ (&зс, Ъи1Г, 1000) ; ргз.п1:Г("4\п") ; 1: = 0; ^ог (1=0; 1<Ю00; 1++) 1: = 1: Л Ьи^[1]; рг1п^^("ХОЕ о!: ЬиГ 13 %081х. \п", 1:) ; зеа1_кеу(&зс,кеу) ; зеа1__с1есгур1: (&зс, ЪиИ, 1) ; зеа1_с!есгур^ (&зс,Ьи^+1, 999) ; ^1ад = 0; ^ог (1=0; 1<Ю00; 1++) 1^(Ъи1:[л.] !=0)^1ад=1; И:(^1ад) рг1п!:^ ("Бесгур^ ^аНейЛп") ; е1зе ргл.пЪ^ ("ОесгурЪ зиссеес!ес1. \п") ;
Список литературы 1. АВА Вапк Сагд 51апс!агс!, “Мапа§етеп1 апс! 1!зе 15. оГ Регзопа! ШГогтаИоп КитЬегз,” АШз Ггот АВА, Са1а1о§ по. 207213, Атепсап Вапкегз АззоааНоп, 1979. 2. АВА Ооситеп! 4.3, “Кеу Мапа§етеп1 16. 31апс1агс!,” Атепсап Вапкегз АззоЫаНоп, 1980. 3. М. АЬасП, .1. Ре1§епЬаит, апс! ^. КШап, “Оп Н1сПп5 ШГогтаПоп Ггот ап Огас1е,” РгосеесПп55 оГ 1Не 19Ш АСМ Зутрозшт оп 1Ье ТЬеогу оГ 17. СошриПп§, 1987, рр. 195-203. 4. М. АЬасН, 1 Ре1§епЬаит, апс! ). КШап, “Оп Н1(Ип§ ШГогтаИоп Ггот ап Огас1е,” .Юита! оГ 18. Сотри1ег апс! Зуз1ет Заепсез, V. 39, п. 1, Аи& 1989, рр. 21-50. 5. М. АЬасИ апс! К. КеесШат, “Ргиёеп! Еп§теепп§ РгасПсе Гог Сгур1о§гарЫс РгоЮсо1з,” ЯезеагсЬ 19. КероП 125, 01§!1а1 Ецшртем Согр Зузютз ЯезеагсЬ Ссп1ег, .!ип 1994. 6. С.М. Ас!атз, “Оп 1ттиш1у А§а1П51 ВШат апд ЗЬапПг’з ‘01ГГегеп11а1 Сгур1апа1уз15,’” 20. ШГогтаПоп Ргосеззт5 ЬеИегз, V. 41, 14 РеЬ 1992, рр. 77-80. 7. С.М. Ас!атз, “31тр1е апс! ЕГГесИуе Кеу 5сЬес1и1тё Гог Зутте1пс С1рЬегз,” \УогкзЬор оп 21. Зе1ес1ес! Агеаз т Сгур1о^гарНу—\УогкзЬор Кесогс1, К1п§зЮп, Оп1агю, 5-6 Мау 1994, рр. 129-133. 8. С.М. Адатз апс! Н. Меуег, “5есип1у-Ке1а1ес! 22. СоттеШз Ке^агсИп^ МсЕПесе’з РиЬИс-Ксу Сгур1озуз1ет,” Ас!уапсез ш СгурЮ1о§у— СКУРТО ’87 РгосеесИп55, 5рг1п§ег-Уег1а§, 1988, рр. 224-230. 23. 9. С.М. Ас!атз апс! З.Е. Тауагез, “ТЬе 31гис1игес1 Эе51§п оГ СгурЮ^гарЫсаПу Соос! 5-Вохез,” .1оита1 оГСгурю1о5у, у. 3, п. 1, 1990, рр. 27-41. 10. С.М. Ас!атз апс! З.Е. Тауагез, “Ое51§тп§ 5- 24. Вохез Гог С1рЬегз Кез1з1ап1 Ю ОИТегеппа! Сгур1апа1уз15,” РгосеесИп^з оГ 1Ье Зге! Зутрозшт оп 51а1е апс! Рго§гезз оГ ЯезеагсЬ т СгурЮ^гарЬу, Коше, 11а1у, 15-16 РеЬ 1993, рр. 181-190. 25. 11. \У. Ас!атз апс! Э. ЗЬапкз, “31гоп5 РптаШу Тез1з ТЬа1 Аге N01 ЗиГПаеп!,” МаШетаПсз оГ СотрШаПоп, V. 39, 1982, рр. 255-300. 12. \У.\У. Ас!атз апс! ЬТ. Оо1с!51е1п, 1п1гос!ис1юп ю ЫитЬег ТЬеогу, Еп§1е\УООс! СЬГГз, КТ.: РгепНсе- 26. На11, 1976. 13. В.5. АсЬ§а апс! Р. ЗЬапкаг, “МосППес! Ьи-Ьее СгурЮзузЮт” Е1ес1готсз ЬеПегз, V. 21, п. 18, 29 Аи§ 1985, рр. 794-795. 14. ОМ. АсИетап, “А ЗиЬехропепПа1 А1§ог11Ьт Гог ^7• 1Ье 01зсге1е ЬозагкНт РгоЫет \уЬЬ АррНсаПопз 1о СгурЮ§гарЬу,” РгосеесНп55 оГ 1Ье ШЕЕ 20(Ь Аппиа1 Зутрозшт оГ Роипс!а1юпз оГ Сотри1ег 28. Заепсе, 1979, рр. 55-60. Ь.М. АсИетап, “Оп Вгеакт§ ОепегаПгес! Кпарзаск РиЬПс Кеу СгурЮзузЮтз,” Ргосееё1П§з оГ 1Ье 151Ь АСМ Зутрозшт оп ТЬеогу оГСотрШтв, 1983, рр. 402- 412. Ь.М. АсИетап, “Рас1опп§ КитЬсгз 1!зт5 5|п§и1аг 1п1е5егз,” Ргосееё1п§з оГ 1Ье 23гё Аппиа1 АСМ Зутрозшт оп 1Ье ТЬеогу оГ СотриПп§, 1991, рр. 64-71. ОМ. АсИетап, “Мо1еси1аг Сотри1аПоп оГ Зо1и1юпз 1о СотЫпаЮпа! РгоЫетз,” Заепсе, у. 266, п. 11, Ыоу 1994, р. 1021. ОМ. АсИетап, Э. Ез1ез, апс! К. МсСиг1су, “Зо1уш5 В1уапа1е (}иас1га11с Соп§гиепсез т Капс!от Ро1упогша1 Т1те,” МаШетаПсз оГ Сотри1а1юп, V. 48, п. 177, ^п 1987, рр. 17-28. ОМ. АсИетап, С. Ротегапсе, апс! К.З. Ките1еу, “Оп 0|§1т§ш$Ып5 Рпте ЫитЬегз Ггот Сотроз11е КитЬегз,” Аппа1з оГ Ма1Ьета11сз, V. 117, п. 1, 1983, рр. 173-206. Ь.М. АсИетап апс! К.Ь. К|уез1, “Но\у 1о Вгеак 1Ье Ьи-Еее (СОМЗАТ) РиЬПс-Кеу СгурЮзуз1ет,” М1Т ЬаЬогаЮгу Гог СотрШег Заепсе, Ли1 1979. О.В. А§пе\у, “Капс!от Зоигсез Гог Сгур1о§гарЫс Зуз1етз,” Ас!уапсез 1п СгурЮ1о§у—Е11КОСКУРТ ’87 РгосеесИп^з, Зрпп§ег-Уег1а§, 1988, рр. 77-81. О.В. А§пе\у, К.С. МиШп, 1.М. ОпузгсЬик, апс! З.А. УапзЮпе, “Ап 1тр1етеп1аПоп Гог а Раз! РиЬЬс-Кеу Сгур1озуз1ет,” ^оита1 оГ Сгур1о1оёу, V. 3, п. 2, 1991, рр. 63-79. О.В. А§пе% К.С. МиШп, апс! З.А. УапзЮпе, “А Раз! ЕШрНс Сигуе Сгур1озуз1ет,“ Ас!уапсез 1п СгурЮЮеу—Е11КОСКУРТ ’89 РгосеесИп^з, Зрпп§ег-Уег1а§, 1990, рр. 706-708. С.В. А§пе\у, К.С. МиШп, апс! З.А. УапзЮпе, “1тргоуес! 01511а! 5|§па1иге ЗсЬете Вазес! оп 01зсге!е ЕхропепПаНоп,” Е1ес1гоп1сз ЬеИегз, V. 26, п. 14, 5 М 1990, рр. 1024-1025. С.В. А§пе\у, К.С. МиШп, апд З.А. УапзЮпе, “Оп Ше ОеуеЮртсп! оГ а Раз! Е1Ир1!С Сигуе СгурЮзузЮт,” Ас!уапсез 1п СгурЮЮ^у— Е11КОСКУРТ ’92 РгосеесИп^з, Зрг1п§ег-Уег1а5, 1993, рр. 482-287. О.В. А&пе\у, К.С. МиШп, апс! З.А. УапзЮпе, “Ап 1тр1етеп1аПоп оГ ЕШрИс Сигуе СгурЮзузЮтз оуег Р2155,” ШЕЕ 5е1ес1ес1 Агеаз оГ СоттитсаПопз, у. 11, п. 5, ^ип 1993, рр. 804-813. А. АЬо, .1. НорсгоИ, апс! Т 1П1тап, ТЬе Оез15П апс! Апа1уз!5 оГ СотриЮг А1§ог11Ьтз, АёсИзоп- \Уез1еу, 1974. З.О. Ак1, “01511а! 315па1игез: А ТиЮг1а1 Зигуеу,” СогприЮг, у. 16, п. 2, РеЬ 1983, рр. 15-24.
742 Прикладная криптография 29. 5.0. Ак1, “Оп 1Ье Зесигку оГ Сотргеззес! ЕпсосЬп§з,” Аскапсез ш СгурЮ1о§у: РгосеесИп^ оГСгурЮ 83, Р1епит Ргезз, 1984, рр. 209-230. 30. 5.0. Ак1 апс1 Н. Мецег, “А Раз! Рзеис1о-Капс1от РеггтПаПоп ОепегаЮг \укЬ АррПса1юпз Ю Сгур1о1о§у,” Айуапсез т Сгурю1о§у: РгосеесПп§з оГ СКУРТО 84, Зрпп^ег-УеНаБ, 1985, рр. 269-275. 31. М. А1аЬЬасП апс! 5.В. \Уккег, “Зесигку оГ Хтте! Э^ка! 5|§па1иге ЗсЬете,” Е1ес1гошсз ЬеИегз, V. 28, п. 9, 23 Арг 1992, рр. 890-891. 32. М. А1аЬЪасП апс! 5.В. \Уккег, “Э|§ка1 З^паШге ЗсЬетез Вазес! оп Еггог-СоггесПп§ Соскз,” РгосеесИп§з оГ 1Ье 1993 1ЕЕЕ-151Т, ШЕЕ Ргезз, 1993, р. 199. 33. М. А1аЬЪасИ апс! 5.В. \Уккег, “Сгур1апа1уз1з оГ 1Ье Нагп апс! \Уап§ МосИЛсаиоп оГ 1Ье Хтте! 5|§па1иге ЗсЬете,” Е1ес1готсз ЬеИегз, V. 28, п. 18, 27 Аи§ 1992, рр. 1756-1758. 34. К. А1а§аррап апс! ^. Тагс1о, “5РХ Ошск: Рго№1уре РиЬЬс Кеу Аи1Ьеп1каПоп Зетсе,” Э1§ка1 Ецшртеп! Согр., Мау 1991. 35. \У. А1ех1, В.-2. СЬог, О. ОоШгекЬ, апс! С.Р. ЗсЬпогг, “КЗА апс! КаЫп РипсПопз: СеЛат Раг1з Аге аз Нагс! аз 1Ье \УЬо1е,” РгосеесЬп§5 оГ 1Ье 251Ь ШЕЕ Зутрозшт оп 1Ье РоипЛаПопз оГ Сотри1ег 5с1епсе, 1984, рр. 449-457. 36. \У. А1ех1, В.-2. СЬог, О. ОоШгекЬ, апс! С.Р. ЗсЬпогг, “КЗА апс! КаЫп Рипс1юпз: СеЛат Раг1з аге аз Нагс! аз 1Ье \УЬо1е,” 51АМ .1оигпа1 оп СотриПп§, V. 17, п. 2, Арг 1988, рр. 194-209. 37. АтегкесЬ МоЬПе Соттишсапопз е! а!., “Се11и1аг Э|§ка1 Раске! Эа1а 5уз1ет ЗресШса- Попз: РаЛ 406: АкИпк Зесигку,” СЭРЭ 1пс!из1гу 1при1 СоогсИпаЮг, Соз1а Меза, СаЬГ, Ли] 1993. 38. Н.К. Атка2121, Е.Э. Кагшп, апс! ТМ. Кеупег», “Сотрас! Кпарзаскз аге Ро1упогта1 ЗоЫаЫе,” АСМ 510АСТ Ые^з, V. 15, 1983, рр. 20-22. 39. КЛ. Апбегзоп, “Зо1уш§ а С1азз оГ 31геат ОрЬегз,” Сгур1о1о§1а, V. 14, п. 3, Ли1 1990, рр. 285-288. 40. К Л. Апбегзоп, “А 5есопс! Оепега1юп Е1ес1готс \Уа11е1,” ЕЗОК1СЗ 92, РгосеесИп§5 оГ 1Ье 5есопс1 Еигореап Зутрозшт оп КезеагсЬ т Сотри1ег Зесигку, Зргт§ег-Уег1а§, 1992, рр. 411-418. 41. КЛ. Апбегзоп, “Раз1ег АНаск оп Сег1ат 51геат С1рЬегз,” Е1ес1гошсз ЬеПегз, V. 29, п. 15, 22 Ли1 1993, рр. 1322-1323. 42. КЛ. Апскгзоп, “Эепуес! Зециепсе АПаскз оп 31геат ОрЬегз,” ргезеШес! а! 1Ье гитр зеззюп оГ СКУРТО ’93, Аи§ 1993. 43. КЛ. Апскгзоп, “\УЬу Сгур1озуз1ет5 РаП,” 1з1 АСМ СопГегепсе оп СотрШег апс! Соттитса- Нопз Зесигку, АСМ Ргезз, 1993, рр. 215-227. 44. КЛ. Апбегзоп, “\УЬу Сгур1озу51етз РаП,” Соттитса1юпз оГ 1Ье АСМ, у. 37, п. 11, Ыоу 1994, рр. 32-40. 45. КЛ. Апскгзоп, “Оп Р1Ьопасс1 Кеуз1геат Оепега1огз,” К. II. Ьеиуеп \УогкзЬор оп СгурЮ^гарЫс А1§огкЬтз, Зрпп§ег-Уег1а§, 1995, Ю арреаг. 46. КЛ. Апбегзоп, “ЗеагсЫп^ Гог 1Ье ОрПтит Согге1а1юп Аиаск,” К.II. Ьеиуеп \УогкзЬор оп СгурЮ^гарЫс А1§огкЬтз, 5рпп§ег-Уег1а§, 1995, Ю арреаг. 47. КЛ. Апскгзоп апс! Т.М.А. Ьотаз, “Рог11!уЫ§ Кеу Ке§о11а!юп ЗсЬетез \укЬ Роог!у СЬозеп Разз\Уогс1з,” Е1ес1готсз Ьеиегз, V. 30, п. 13, 23 Ып 1994, рр. 1040-1041. 48. КЛ. Апскгзоп апс! К. ЫеедЬат, “КоЬизШезз РппЫркз Гог РиЬПс Кеу Рго1осо1з,” Адуапсез т СгурЮ1о§у—СКУРТО ’95 Ргосеед1п§з, 5рпп^ег-Уег1а^, 1995,1о арреаг. 49. Э. АпсИетап апс! ^. Кеес!5, “Оп 1Ье Сгур1апа1уз1з оГ Ко1ог МасЫпез апс! 5иЬзП1ииоп-Регти1аПоп Ке1\УОгкз,” ШЕЕ Тгапзасиопз оп 1пГогта1!оп ТНеогу, V. 1Т-28, п. 4, Ли1 1982, рр. 578-584. 50. АЫ51 Х3.92, “Атепсап ЫаПопа! 51апдагс! Гог Эа1а ЕпсгурПоп А1§ог11Ьт (ЭЕА),” Атег1сап КаПопа1 51апс1агс15 1пзП1и1е, 1981. 51. АЫ51 Х3.105, “Атепсап Ка1юпа1 51апс!агс! Гог 1пГогта1юп 5уз1етз—Оа1а Ыпк ЕпсгурПоп,” Атег1сап Ыа110па1 51апс!агс!5 1пз111и1е, 1983. 52. АЫ51 Х3.106, “Атепсап Ка!юпа1 51апс!агс1 Гог 1пГогтаПоп 5уз1етз—Эа1а ЕпсгурПоп А1ёог11Ьт—Москз оГ ОрегаПоп,” Атег1сап ЫаПопа! 51апс1агс!з 1пзи1и1е, 1983. 53. АЫ51 Х9.8, “Атепсап Ка1юпа1 51апс!агс1 Гог Регзопа! 1пГогтаиоп ЫитЬег (Р1Ы) Мапа§етеп1 апс! 5есип1у,“ Атепсап Вапкегз Аззос1а11оп, 1982. 54. АЫ51 Х9.9 (Кеу1зес1), “Атепсап КаПопа1 51апс!агс! Гог Р|папс1а! 1пзти1юп Мезза^е Аи1Ьеп11са11оп (\УЬо1еза1е),” Атег1сап Вапкегз АззоааЬоп, 1986. 55. АЫ51 Х9.17 (Кеу|зес1), “Атепсап ЫаОопа! 51апс!агс1 Гог РтапЫа! 1пзП1иПоп Кеу Мапа^етет (\УЬо1еза1е),” Атег^сап Вапкегз Аззос1а1юп, 1985. 56. АЫ51 Х9.19, “Атепсап Ыаиопа! 51апс!агс! Гог Ке1аЛ Мезза^е АтЬепНсаПоп,” Атепсап Вапкегз Аззоаакоп, 1985. 57. АЫ51 Х9.23, “Атег1сап КаПопа! 51апс!агс! Гог Ртапс1а1 1пз111иПоп Мезза§е ЕпсгурПоп,” Атепсап Вапкегз АззоааПоп, 1988. 58. АЫ51 Х9.24, “ЭгаК Ргорозес! Атег1сап ЫаПопа! 51апс1агс! Гог Ке1аЛ Кеу Мапа§етеп1,” Атег1сап Вапкегз Аззос1а110п, 1988. 59. АЫ51 Х9.26 (Кеу1зес1), “Атег1сап ЫаПопа1 51апс!агс1 Гог Р1папс1а1 1пзП1иПоп З^п-Оп
Список литературы 743 АиШепПсаПоп Гог \УЬо1еза1е Ртапаа1 ТгапзасПоп,” Атепсап Вапкегз АззоааПоп, 1990. 60. АЫ31 Х9.30, “\Уогкт§ ЭгаЛ: РиЬПс Кеу СгурЮ^гарЬу 11з1п§ 1ггеуегз1Ые А^огЛЬтз Гог 1Ье Ртапс1а1 Зетсез 1пЛиз1гу,“ Атепсап Вапкегз АззоЫаПоп, Аи§ 1994. 61. АК51 Х9.31, “УУогкт^ ЭгаП: РиЬПс Кеу СгурЮ^гарЬу 115т§ КеуегзМе А1§огЛЬтз Гог 1Ье Ртапаа1 Зетсез 1пЛиз1гу,” Атепсап Вапкегз АззоЫаПоп, Маг 1993. 62. К. Аок| апс! К. ОЬ1а, “ОНТегепПЫ-Упеаг Сгур1апа1уз1з оГ РЕАЬ-8,” РгосееЛт^з оГ 1Ье 1995 Зутрозшт оп СгурЮ^гарЬу апс) 1пГогтаНоп ЗесигЛу (5С15 95), 1пиуата, Ьрап, 24-27 .1ап 1995, рр. АЗА 1-11. (1п Трапезе.) 63. К. Атак! апс! Т. Зекте, “Оп 1Ье СопзрНасу РгоЫет оГ 1Ье ОепегаПгеЛ Тапака’з СгурЮзузЮт,” 1Е1СЕ ТгапзасПопз, V. Е74, п. 8, Аи§ 1991, рр. 2176-2178. 64. 3. Агак|, К. Аок1, апс! К. ОН1а, “ТЬе Вез1 Упеаг Ехргеззюп ЗеагсН Гог РЕАЬ,” РгосееЛт^з оГ 1Ье 1995 Зутрозшт оп СгурЮ^гарЬу апс1 1пГогтаПоп ЗесигЛу (ЗС13 95), 1пиуата, ^рап, 24-27 .1ап 1995, рр. А4.4.1-10. 65. С. АзшШН апс! .1. В1оош, “А Мос!и1аг АрргоасЬ Ю Кеу ЗаГеёиагЛт§,” 1ЕЕЕ ТгапзасПопз оп 1пГогтаПоп ТЬеогу, V. 1Т-29, п. 2, Маг 1983, рр. 208-210. 66. О. А1ктз, М. ОгаГГ, А.К. Ьепз1га, апс! Р.С. Ьеу1апЛ, “ТЬе Ма§1с \\^огс!з аге ЗциеагтзЬ Озз|Гга§е,” АЛуапсез т СгурЮ1о§у— А51АСКУРТ ’94 РгосееЛт^з, Зрип^ег-УеНаё, 1995, рр. 263-277. 67. АТ&Т, “Т7001 КапЛот ЫитЬег ОепегаЮг,” Оа1а 8Ьее1, Аи§ 1986. 68. АТ&Т, “АТ&Т КеаЛут^ №\у Зру-РгооГ РЬопе Гог В\% МЛЛагу апс! СтИап Магке1з,” ТЬе КероП оп АТ&Т, 2.1ип 1986, рр. 6-7. 69. АТ&Т, “Т7002/Т7003 ВЛ ЗЬсе МиШрПег,” ргос!ис1 аппоипсетеШ, 1987. 70. АТ&Т, “Те1ерЬопе ЗесигЛу Эеуше ТЗО 3600— 11зег’з Мапиа!,” АТ&Т, 20 Зер 1992. 71. V. Аитапп апс! II. Ре^е, “Оп Мезза^е РгооГ 5уз1етз \уЛЬ Кпоууп Зрасе УепПегз,” АЛуапсез ш Сгур1о1о§у—СКУРТО ’93 РгосееЛт§з, Зрпп§ег-Уег1а§, 1994, рр. 85-99. 72. К.О. АуоиЬ, Ап 1п1гоЛисНоп Ю 1Ье ТЬеогу оГ РЮтЬегз, РгсмЛепсе, К1: Атепсап МаЮетаПса! Зоае1у, 1963. 73. А. Ат апЛ \У. 0|ГПе, “Рпуасу апс1 АтЬепПсаПоп Гог УУЫезз Ьоса1 Агеа Ыеиуогкз,” ШЕЕ Регзопа! СоттитсаПопз, V. 1, п. 1, 1994, рр. 25-31. 74. А. ВаЬгетап апс1 Ту§аг, “СетЛеЛ Е1ес1гошс МаЛ,” РгосееЛш§з оГ 1Ье 1п1егпе1 Зос1е1у 1994 \УогкзЬор оп №1\уогк апс! 01з1пЬи1еЛ 8уз1ет ЗесигЛу, ТЬе 1п1ете1 Зос1е1у, 1994, рр. 3-19. 75. Э. Ва1епзоп, “АиЮта1еЛ 01з1пЬиНоп оГ СгурЮ^гарЫс Кеуз 11зт§ 1Ье Р1папс1а1 1пз1ЛиНоп Кеу Мапа^етеп! 51апЛагЛ,” ШЕЕ Соттишсапопз Ма§агте, V. 23, п. 9, Зер 1985, рр. 41-46. 76. О. Ва1епзоп, “Рпуасу ЕпЬапсетеп! Гог 1п1егпе1 Е1ес1готс МаЛ: РаП III: А1§огЛЬтз, МоЛез, апЛ 1ЛепПЛегз,” КРС 1423, РеЬ 1993. 77. О. Ва1епзоп, С.М. ЕШзоп, З.В. Ырпег, апЛ 5.Т. \Уа1кег, “А №\у АрргоасЬ № ЗоК\уаге Кеу Езсго\у ЕпсгурПоп,” Т13 КероП #520, Тгиз1еЛ 1пГогтаЛоп Зуз1етз, Аи§ 94. 78. К. Ва11, МаЮетаЛса^ КесгеаПопз апЛ Еззауз, Ые\у Уогк: МасМШап, 1960. 79. 3. ВатГогЛ, ТЬе Ригг1е Ра1асе, ВозЮп: Нои^ЬЮп МЛШт, 1982. 80. .1. ВатГогЛ апЛ \У. МаЛзеп, ТЬе Ри2г1е Ра1асе, ЗесопЛ ЕЛЛюп, Реп§ит Воокз, 1995. 81. З.К. Вапецее, “ЬЛ§Ь ЗрееЛ 1тр1етеп1аЛоп оГ ОЕЗ,” Сотри1егз & ЗесигЛу, у. 1, 1982, рр. 261- 267. 82. 2. ВаоЛоп§, “МС-УеЛеЛ Упеаг ТгапзГогт РиЬПс Кеу Сгур1озу51ет,’’ Ас1а Е1ес1готса 51тса, у. 20, п. 4, Арг 1992, рр. 21-24. (1п СЫпезе.) 83. Р.Н. ВагЛеИ, “Апа1уз1з оГ Се11и1аг АиЮта1а 11зеЛ аз РзеиЛогапЛот Раиегп СепегаЮгз,” РгосееЛт^з оГ 1990 1п1егпаПопа1 Тез! СопГегепсе, рр. 762-768. 84. Т. ВагЛаиЛ, Н. СЛЬеП, апЛ М. ОНаиЬ, “РРТ НазЫп§ 15 по1 СоШзюп-Ргее,” АЛуапсез 1п Сгур1о!о^у—Е1ЖОСКУРТ ’92 РгосееЛ1п§з, 5рг1пёег-Уег1а§, 1993, рр. 35-44. 85. С. Вагкег, “Ап 1пЛиз1гу РегзресПуе оГ 1Ье ССЕР,” 2пЛ Аппиа! А1АА СотриЮг ЗесигЛу СопГегепсе РгосееЛ1п§з, 1986. 86. \У.О. Вагкег, Сгур1апа1уз1з оГ 1Ье На^еПп Сгурю§гарЬ, Ае^еап Рагк Ргезз, 1977. 87. Р. ВаггеП, “1тр1етепПп§ 1Ье К1уез1 ЗЬаш1г апЛ АЛ1етап РиЬПс Кеу ЕпсгурПоп А1§ог11Ьт оп а 81апЛагЛ 0|§11а1 51§па1 Ргосеззог,” АЛуапсез т СгурЮ1о§у—СКУРТО ’86 РгосееЛ1пё5, 8рпп§ег-Уег1а§, 1987, рр. 311-323. 88. Т.С. Валее апЛ О.1. ЗсЬпе1Лег, “Сотри1аНоп \у11Ь РтЛе р1е1Лз,” 1пГогтаиоп апЛ Соп1го1, у. 6, п. 2, .1ип 1963, рр. 79-98. 89. II. Вайт апЛ 5. В1аскЬигп, “С1оск-Соп1го11еЛ РзеиЛогапЛот СепегаЮгз оп РтЛе Сгоирз,” К. II. Ьеиуеп \УогкзЬор оп СгурЮ^гарЫс А1§ог11Ьтз, Зрг1п§ег-Уег1а§, 1995, Ю арреаг. 90. К.К. Ваиег, Т.А. Вегзеп, апЛ К.^. Ре1еПаё, “А Кеу 0151пЬиПоп РгоЮсо1 11з1п§ Еуеп1 Магкегз,” АСМ ТгапзасПопз оп Сотри1ег 5уз1етз, V. 1, п. 3, 1983, рр. 249-255.
744 Прикладная криптография 91. Р. Ваизр1ез8 апй Р. Оатт, “Кецшгететз Гог СгурЮ^гарЫс НазН РипсПопз,” Сотри!егз & Зесигку, V. 11, п. 5, Зер 1992, рр. 427-437. 92. Э. Вауег, 5. НаЬег, апй \У.З. ЗЮгпсИа, “1тргоут§ (Не ЕГПаепсу апс! КеПаЬПку оГ С)1^11а1 Т1те-5(атрт§,” Зециспсез ’91: Ме(Нойз т СоттитсаПоп, Зесигку, апй Сотри1ег Заепсе, 5рпп§ег-Уег1а2, 1992, рр. 329-334. 93. К. Вауег апс! ТК. Ме(2§ег, “Оп (Не ЕпЫрНегтеп! оГЗеагсН Тгеез апс! Капйот Ассезз РПез,” АСМ Тгапзас1юпз оп Оа(аЬазе 5уз(етз, V. 1, п. 1, Маг 1976, рр. 37-52. 94. М. Веа1е апс1 М.Р. Мопа§Нап, “ЕпсгуПоп Ызт^ Капйот Воо1еап Рипсиопз,” Сгур(о§гарНу апс! Сойт§, Н.Т Векег апс! Р.С. Ргрег, ейз., ОхГогс!: С1агепс!оп Ргезз, 1989, рр. 219-230. 95. Р. ВеаисНетт апс! С. Вгаззагс!, “А ОепегаИгаПоп оГ НеИтап’з Ех(епзюп Ю ЗНаппоп’з АрргоасН Ю Сгур(о§гарНу,” .1оигпа1 оГ Сгур(о1о§у, V. 1, п. 2, 1988, рр. 129-132. 96. Р. ВеаисНетт, С. Вгаззагс!, С. Сгёреаи, С. ОоиПег, апс! С. Ротегапсе, “ТНе ОепегаНоп оГ Капйот КитЬегз (На( аге РгоЬаЫу Рпте,” Юита! оГСгур(о1о§у, V. 1, п. 1, 1988, рр. 53-64. 97. Э. Веауег, 3. Ре1§епЬаит, апс! V. ЗНоир, “Н|йт& 1пз(апсез т 2его-Кпо\у1еЙ2е РгооГз,” Айуапсез т Сгур(о1о§у—СКУРТО ’90 РгосеесИп^з, 5рпп§ег-Уег1а§, 1991, рр. 326-338. 98. Н. Векег, 3. Рпепй, апс! Р. НаШйеп, “31трПГу1п§ Кеу Мапа§етеп( т Е1ес(готс Рипйз ТгапзГег Рот(з оГЗа!е 5уз(етз,” Е1ес(готсз ЬеИегз, V. 19, п. 12, Зип 1983, рр. 442-444. 99. Н. Векег апс1 Р. Р1рег, С1рНег 5уз1етз: ТНе Рго(есПоп оГ Соттишсапопз, Ьопйоп: РЮпНууоой Воокз, 1982. 100. О.Е. Ве11 апс! Ь.З. ЬаРайи1а, “Зесиге Сотри(ег 5уз(етз: Ма(НетаПса1 Роипйаиопз,” КероП Е5Э-ТК-73-275, М1ТКЕ Согр., 1973. 101. О.Е. Ве11 апс! Ь.З. ЬаРайи1а, “Зесиге Сотри(ег Зуз1етз: А Ма(НетаПса1 Мос1е1,” КероП МТК- 2547, М1ТКЕ Согр., 1973. 102. О.Е. Ве11 апс! Ь.З. ЬаРайи1а, “Зесиге Сотри(ег 5уз(етз: А КеПпетеп! оГ (Не Ма(НетаПса1 Мойе1,” КероП Е50-ТК-73-278, М1ТКЕ Согр., 1974. 103. О.Е. Ве11 апс! Ь.З. ЬаРайи1а, “Зесиге Сотри(ег 5уз(етз: 11п1Г1ес1 ЕхрозШоп апй МиШсз 1п1егрге(а(юп,” КероП Е5О-ТК-75-306, М1ТКЕ Согр., 1976. 104. М. ВеИаге апс! 5. Оо1й\уаззег, “Ые\у Рагай^тз Гог 01§ка1 51§па(игез апс! Мезза^е АмНеппсаПоп Вазей оп Коп-1п(егасПуе 2его КпочуЫ^е РгооГз,” Айуапсез т Сгур(о1о§у—СКУРТО ’89 Ргосеейт^з, Зрип^ег-УеНа^, 1990, рр. 194-211. 105. М. ВеИаге апс! 5. М1саН, “Коп-1п(егасПуе ОЬПуюиз ТгапзГег апй АррИсаПопз,” Айуапсез т СгурЮЮ^у—СКУРТО ’89 Ргоссейт^з, Зрг1п§ег-Уег1аё, 1990, рр. 547-557. 106. М. ВеИаге, 3. М1саН, апй К. Оз1гоузку, “РегГес1 2его-Кпо\у1ей&е т Сопз1ап1 Коипйз,” Ргосеейт^з оГ (Не 22пй АСМ Зутрозшт оп 1Не ТНеогу оГСотриПп§, 1990, рр. 482-493. 107. З.М. ВеИоут, “А РгеПттагу ТесНтса1 Апа1уз1з оГСПррег апй 5к^р^аск,” иприЬПзНей тапизспр!, 20 Арг 1993. 108. З.М. ВеИоут апй М. Мети, “иткаПопз оГ 1Не КегЬегоз Рго1осо1,” \Ут(ег 1991 УЗЕНПХ СопГегепсе Ргосеейт^з, УЗЕНИХ АззоЫаПоп, 1991, рр. 253-267. 109. З.М. ВеИоут апй М. МегпИ, “Епсгур1ей Кеу ЕхсНап^е: Раззчуогй-Вазей Рго(осо1з Зесиге А§атз1 ОюПопагу АПаскз,” Ргосеейт^з оГ (Не 1992 1ЕЕЕ "СотриЮг 5оае(у СопГегепсе оп КезеагсН т 5есип(у апй Рпуасу, 1992, рр. 72-84. 110. З.М. ВеИоут апй М. МегнИ, “Ап АНаск оп 1Не 1п1ег1оск РгоЮсо! \УНеп 11зей Гог АтНепПсаПоп,” 1ЕЕЕ ТгапзасПопз оп 1пГогта(юп ТНеогу, у. 40, п. 1, .1ап 1994, рр. 273-275. 111. З.М. ВеИоут апй М. Мети, “СгурЮ^гарЫс РгоЮсо! Гог Зесиге СоттитсаПопз,” 0.5. Ра1еп( #5,241,599,31 Аи&93. 112. I. Веп-Агоуа апй Е. В1Нат, “ОкТсгепПа1 Сгур(апа1уз1з оГ ЕиаГег,” Айуапсез т СгурЮ1о§у—СКУРТО ’93 Ргосеейт&з, 5рпп§ег-Уег1а§, 1994, рр. 187-199. 113. ^.С. Вепа1оН, “СгурЮ§гарН|с Сарзи1ез: А ^^5^ипсиVе РптМуе Гог 1п1егасПуе Рго1осо1з,” Айуапсез т Сгур1о1о§у—СКУРТО ’86 РгосееЙ1П§з, 5рпп§ег-Уег1а§, 1987, 213-222. 114. ТС. Вепа1оН, “Зесге! ЗНаг1п§ НотофН1зтз: Кеерт^ ЗНагез оГ а Зесге! Зесге!,” Айуапсез 1п СгурЮ1о§у—СКУРТО ’86 РгосееЙ1п§з, 5рг1п§ег- Уег1а§, 1987, рр. 251-260. 115. ТС. ВепаЮН, “УепПаЫе 5есге1-Ва11о1 Е1ес11опз,” РН.Э. й1ззеПаПоп, Уа1е 11п1Уегз11у, УАТЕШОС5ЯК-561, Эес 1987. 116. ТС. ВепаЮН апй М. йе Маге, “ОпеЛУау Ассити1аЮгз: А ОесепиаПгей АкегпаПуе Ю 0|§11а1 З^паШгез,” Айуапсез 1п Сгур1о1о§у— Е11КОСКУРТ ’93 Ргосеей|Пё5, 5рг1п§ег-Уег1а§, 1994, рр. 274-285. 117. ТС. ВепаЮН апй Э. Ти1пз1га, “Кесе1р1-Ргее Зесге! Ва11о! Е1есПопз,” Ргосеей1п^з оГ !Не 261Н АСМ 5утроз1ит оп !Не ТНеогу оГ Сотрипп^, 1994, рр. 544-553. 118. ТС. Вепа1оН апй М. Уип§, “0151г|Ьи!1п§ 1Не Ро\уег оГ а Соуегптеп! !о ЕпНапсе !Не Рпуасу оГ Уо!егз,” РгосееЙ1П§з оГ (Не 5Ш АСМ 5утроз1ит оп !Не Рг1ПС1р1ез 1п 01з!г1Ьи!ей СотриПп^, 1986, рр. 52-62.
Список литературы 119. А. Вепёег апс! С. Саз!а&поП, “Оп !Не 1тр1етеп!а!юп оГЕШрЛс Сигуе СгурШзузШтз,” Айуапсез т Сгур!о1о&у—СЯУРТО ’89 РгосеесНп§з, 8рпп§ег-Уег1а§, 1990, рр. 186-192. 120. $. Веп^ю, О. Вгаззагс!, У.О. Оезтес!!, С. ОоиНег, апс! .Ы. (ЗшзциаШг, “Зесиге 1тр1етеп!а!юп оГ МепНЛсаНоп 5уз1етз,” .1оита1 оГ Сгур1о1о^у, V. 4, п. 3, 1991, рр. 175-184. 121. С.Н. ВеппеП, Р. Веззеие, О. Вгаззагс!, Ь. 5а1уаП, апс! .1. ЗтоПп, “Ехрептеп!а1 (ЗиапШт Сгур!о§гарНу,” Айуапсез т Сгур!о1о&у— Е11ЯОСЯУРТ ’90 РгосеесНп^з, Зрг1п^ег-Уег1аё, 1991, рр. 253-265. 122. С.Н. Веппеи, Р. ВеззеПе, С. Вгаззагс!, Ь. 5а1уаП, апс! .1. ЗтоПп, “ЕхрептеШа! (}иап1ит Сгур!о§гарНу,” .1оигпа1 оГ Сгур!о1о§у, V. 5, п. 1, 1992, рр. 3-28. 123. С.Н. Веппеи апс! С. Вгаззагс!, “(ЗиапШт СгурЮ&гарНу: РиЬНс Кеу 01з!пЬи!юп апс! Сот Тоззт§,” РгосеесНп§з оГ !Не ШЕЕ 1п!егпа!юпа1 СопГегепсе оп Сотри!егз, Зуз!етз, апд 31§па1 Ргосеззт^, Ва^а!оге, 1псПа, Эес 1984, рр. 175- 179. 124. С.Н. Веппеи апс! О. Вгаззагс!, “Ап 11рс!а1е оп (ЗиапШт Сгур!о§гарНу,” Айуапсез т Сгур!о1о§у: РгосеесНп^з оГ СЯУРТО 84, 5рпп&ег-Уег1а§, 1985, рр. 475-480. 125. С.Н. Веппеи апс! С. Вгаззагс!, “(ЗиапШт РиЬПс- Кеу 01з!пЬи!юп 5уз1ет,” 1ВМ ТесНтса! 015с!озиге ВиНеЛп, V. 28, 1985, рр. 3153-3163. 126. С.Н. Веппеи апс! С. Вгаззагс!, “(ЗиапШт РиЬНс Кеу 01з1пЬи!юп ЯетуеШес!,” ЗЮАСТ Иечуз, у. 18, п. 4, 1987, рр. 51-53. 127. С.Н. Веппеи апс! О. Вгаззагс!, “ТНе Оа\уп оГ а Ые\у Ега Гог (ЗиапШт Сгур!о§гарНу: ТНе Ехрептеп!а1 Рго!о!уре 15 \Уогкт§!” ЗЮАСТ Ие\уз, у. 20, п. 4, РаП 1989, рр. 78-82. 128. С.Н. Веппеи, О. Вгаззагс!, апс! 3. Вге^ЬаП, (ЗиапШт СгурЮ^гарНу И: Но\у !о Яе-11зе а Опе¬ йте Рас! 5аГе1у Еуеп Ш Р-ЫР, иприЬПзНес! тапизспр!, Ь4оу 1982. 129. С.Н. Веппеи, О. Вгаззагс!, 3. Вге1с!ЬаП, апс! 3. \Уе1зпег, “(ЗиапШт СгурЮ^гарНу, ог 11пГог^еаЫе 5иЬ\уау Токепз,” Ас!уапсез т Сгур!о1о&у: РгосеесНп§з оГ Сгурю 82, Р1епит Ргезз, 1983, рр. 267-275. 130. С.Н. Веппеи, С. Вгаззагс!, С. Сгёреаи, апс! М.-Н. ЗкиЫзгеуузка, “РгасНса! (Зиатит ОЬПуюиз ТгапзГег,” Айуапсез т Сгур!о1о§у—СЯУРТО '91 РгосеесИп§5, 5рпп§ег-Уег1аё, 1992, рр. 351-366. 131. С.Н. Веппеи, С. Вгаззагс!, апс! А.К. ЕкеП, “(ЗиапШт Сгур!о§гарНу,” ЗЫепЛЛс Атепсап, V. 267, п. 4, Ос1 1992, рр. 50-57. 132. С.Н. Веппеи, С. Вгаззагд, апс! N.0. Мегтт, “(ЗиапШт Сгур!о§гарНу \УкНои! ВеИ’з ТНеогет,” РНузюа! Яеу1е\у Ьеиегз, V. 68, п. 5, 3 РеЬ 1992, рр. 557-559. 745 133. С.Н. Веппеи, С. Вгаззагс1, апс! Т-М. ЯоЬеП, “Но\у 1о Яес!исе Уоиг Епету’з 1пГогта!юп,” Айуапсез т Сгурю1о§у—СЯУРТО '85 РгосеесНп^з, Зрпп§ег-Уег1аё, 1986, рр. 468-476. 134. С.Н. Веппеи, О. Вгаззагс!, апс! Т-М. ЯоЬеП, “Рпуасу АтрПЛсаЛоп Ьу РиЬНс 0|зсиззюп,” 31АМ ^ита! оп СотриЛп^, V. 17, п. 2, Арг 1988, рр. 210-229. 135. 1 Веппеи, “Апа1уз15 оГ 1Не ЕпсгурПоп А^огкНт 1)зес1 т \Уогс!РегГес1 \Уогс! Ргосеззте Рго^гат,” СгурЮШ^а, V. 11, п. 4, Ос! 1987, рр. 206-210. 136. М. Веп-Ог, 5. ОоИууаззег, апс! А. ХУ^йегзоп, “Сотр1е!епезз ТНеогетз Гог Моп-СгурЮ^гарЫс Раи1!-То1егап! 01з!пЬи!ес! Сотри!аЛоп,” РгосеесПп^з оГ 1Не 20!Н АСМ Зутрозшт оп !Не ТНеогу оГСотриЛп§, 1988, рр. 1-10. 137. М. Веп-Ог, О. ОоМгеюН, 3. Оо1сКуаззег, Н&зЫ, Г^КШап, 3. МюаП, апс! Р. Яо§а\уау, “ЕуегуЛПпБ РгоуаЫе 15 РгоуаЫе ш 2его- Кпо\у1её§е,” Айуапсез ш Сгур!о1о2У—СЯУРТО ’88 РгосеесПп&з, Зрг1п^ег-Уег1а§, 1990, рр. 37-56. 138. М. Веп-Ог, О. СоМгеюН, 5. МюаП, апс! Я.Ь. Я^уез!, “А Раи РгоЮсо1 Гог 31§пт§ Соп!гас!з,” ШЕЕ ТгапзасЛопз оп 1пГогтаЛоп ТНеогу, V. 36, п. 1, Лап 1990, рр. 40-46. 139. Н.А. Вег§еп апс! \УЛ. СаеШ, “РНе Зесигку т \УогйРегГес! 5.0,” Сгур!о1о§1а, у. 15, п. 1, ^п 1991, рр. 57-66. 140. Е.Я. ВеНекатр, А^еЬгаю СосНп§ ТНеогу, Ае§еап Рагк Ргезз, 1984. / 141. 3. Вегкоукз, “Но\у !о Вгоас!саз! а Зесге!,” Айуапсез т Сгур!о1о§у—Е11ЯОСЯУРТ ’91 РгосеесНп^з, 5рпп^ег-Уег1а§, 1991, рр. 535-541. 142. 3. Вегкоукз, Ко\уа1сНик, апс! В. 5сНаппт§, “1тр1етеп11п^ РиЬПс-Кеу ЗсНете,” ШЕЕ Соттип!са!1опз Ма§а21пе, у. 17, п. 3, Мау 1979, рр. 2-3. 143. ЭЛ. Вегпз1ет, Ветз!ет уз. 11.3. ОераПтеп! оГ 3!а!е е! а1., С1уН АсЛоп N0. С95-0582-МНР, 11п1!ед 3!а!ез 01з!г1с! СоиП Гог !Не ЫоиНет 0!з!г1С! оГСаПГогта, 21 РеЬ 1995. 144. Т. Вегзоп, “01Легеп!1а1 Сгур!апа1уз15 Мос! 232 \У1!Н АррПсаЛопз !о МЭ5,” Айуапсез 1п Сгур!о1оеу—Е11ЯОСЯУРТ ’92 РгосеесНп^з, 1992, рр. 71-80. 145. Т. Ве!Н, УегГаНгеп с!ег зсНпеПеп Роипег- ТгапзГогта!10п, ТеиЬпег, 3!и!!§аП, 1984. (1п Оегтап.) 146. Т. Вс!Н, “ЕГЛаеп! 2его-Кпо\у1ес!2е 1с1еп!1Лса!1оп ЗсНете Гог Зтаг! СагЛз,” Айуапсез 1п Сгурю1о§у—Е11ЯОСЯУРТ ’88 РгосеесНп^з, 5рпп§ег-Уег1аё, 1988, рр. 77-84. 147. Т. Ве!Н, В.М. Соок, апс! О. ОоПтапп, “АгсН1!ес!игез Гог Ехропеп!1а!10П 1п ОР(2п),” Айуапсез 1п Сгур!о1о§у—СЯУРТО '86 РгосеесПпвз, Зрпп§ег-Уег1а§, 1987, рр. 302-310.
746 Прикладная криптография 148. Т. Ве!Ь апс! У. ОезшесЬ, “МепНЛсаНоп Токепз— ог; 5о1уш§ !Ье СЬезз Огапс!та5!ег РгоЫет,” АНуапсез ш Сгур1о1о^у—СКУРТО ’90 РгосеесПп^з, Зрип^ег-УеЛа^, 1991, рр. 169-176. 149. Т. Ве!Ь апс1 С. От§, “Оп А1тоз! МопПпеаг Регти!аПопз,” АЛуапсез т Сгур!о1о§у— Е1ЖОСКУРТ ’93 РгосеесЛп^з, 5рпп§ег-Уег1а§, 1994, рр. 65-76. 150. Т. Ве!Ь, М. РпзсЬ, апс! 0..1. ЗЫтопз, едз., Ьес!иге Ыо!ез ш Сотри!ег Заепсе 578; РиЬПс Кеу Сгур!о§гарЬу: 5!а!е оГ !Ье АЛ апс! Ри!иге ОЫсПопз, 5рг1п§ег-Уег1аё, 1992. 151. Т. Ве!Ь апс! Р.С. Р|рег, “ТЬе Зюр-апс!-Оо Оепега!ог,” АЛуапсез т Сгур!о1о§у: РгосеесПп^з оГ Е1ЖОСКУРТ 84, Зрпп§ег-Уег1ав, 1984, рр. 88-92. 152. Т. Ве!Ь апс! Р. ЗсЬаеГег, “Ыоп 5ирег5т§и1аг ЕШрПс Сигуез Гог РиЬПс Кеу Сгур!озуз1етз,” АЛуапсез т Сгур!о1о§у—Е11КОСКУРТ ’91 РгосеесПп^з, Зрпп2ег-Уег1а§, 1991, рр. 316-327. 153. А. Веи!е1зрасЬег, “Но\у Ю 5ау ‘Ыо’,” АЛуапсез т СгурЮ1оеу—Е1ЖОСКУРТ ’89 РгосеесПп^з, 5рпп§ег-Уег1а§, 1990, рр. 491-496. 154. .1. В|(120з, 1еПег !о Ы15Т ге§агс!т§ 035,20 Зер 1991. 155. 1 В1П205, регзопа1 соттишсаПоп, 1993. 156. Р. В1еЬег, “А Ьо§1с оГ СоттишсаПоп т а НозП1е ЕпуЫптеп!,” РгосеесПп^з оГ !Ье Сотри!ег ЗесигЛу РоипдаПопз \УогкзЬор 111, ШЕЕ Сотри!ег 5ос1е!у Ргезз, 1990, рр. 14-22. 157. Е. ВШат, “Сгур!апа1уз15 оГ !Ье СЬаоПс-Мар Сгур1озуз1ет 5觧ез1ес! а! Е1ЖОСКУРТ '91,” АЛуапсез т СгурЮ1о§у—Е11КОСКУРТ ’91 РгосеесПп§з, Зрпп^ег- Уег1а§, 1991, рр. 532-534. 158. Е. ВШат, “Ые\у Турез оГ Сгур!апа1уПс Аиаскз 115т§ Ке1а!ес! Кеуз,” ТесЬшса1 КероЛ #753, Сотри!ег 5с1епсе ОераЛтеп!, ТесЬтоп—1згае1 1пзН!и!е оГТесЬпо1о§у, Зер 1992. 159. Е. В|Ьаш, “Оп !Ье АррПсаЬППу оГ 01РГегепПа1 Сгур1апа1уз1з № НазЬ РипсПопз,” 1ес!иге а! Е1Е5 \УогкзЬор оп Сгур!о§гарЫс НазЬ РипсПопз, Маг 1992. 160. Е. В|Ьаш, регзопа! соттишсаПоп, 1993. 161. Е. В1Ьат, “Н^Ьег ОгНег ОНТегепПа1 Сгур1апа1уз15,” иприЬПзЬес! тапизспр!, .1ап 1994. 162. Е. В|Ьат, “Оп МоНез оГ ОрегаНоп,” Раз! 5о(Ьуаге ЕпсгурНоп, СатЬпс^е 5есип!у \УогкзЬор РгосеесПп§5, Зрпп§ег-Уег1а§, 1994, рр. 116-120. 163. Е. В1Ьат, “Ые\у Турез оГ Сгур!апа1уПс Аиаскз 11зт§ Ке1а!ес! Кеуз,” .1оита1 оГ Сгур1о1о§у, V. 7, п. 4, 1994, рр. 229-246. 164. Е. В1Ьат, “Оп Ма!зш’з Ыпеаг Сгур1апа1уз1з,” АЛуапсез т Сгур!о1о§у—Е1ЖОСКУРТ '94 РгосеесПп^з, 5рпп§ег-Уег1а§, 1995, рр. 398-412. 165. Е. В1Ьат апс! А. В1гуикоу, “Но\у № 5!геп§!Ьеп ОЕЗ Узт§ Ех1зПп§ Нагс1\уаге,” АНуапсез т Сгур!о1о§у—А51АСКУРТ ’94 РгосеесПп§з, Зрип^ег-УеНа^, 1995, Ю арреаг. 166. Е. В|Ьат апс! Р.С. КосЬег, “А Кпо\уп Р1а1п!ех! Аиаск оп 1Ье РК21Р ЕпсгурПоп,” К.II. Ьеиуеп \УогкзЬор оп СгурЮ^гарЫс А^огПЬтз, 5рг1П^ег-Уег1а§, 1995,!о арреаг. 167. Е. В|Ьат апс! А. ЗЬагшг, “ОНТегепПа! Сгур1апа1уз15 оГ ЭЕЗ-Пке Сгур1о5уз!ет5,” АПуапсез т Сгурю1о§у—СКУРТО ’90 РгосеесПп^з, 5рпп§ег-Уег1а^, 1991, рр. 2-21. 168. Е. В1Ьат апс! А. ЗЬапПг, “ОПТегепПа1 Сгур1апа1уз13 оГ ОЕЗ-Пке Сгур!озуз1етз,” .1оигпа1 оГСгурю1о§у, V. 4, п. 1, 1991, рр 3-72. 169. Е. В1Ьат апё А. ЗЬат^г, “01ГГегепПа1 Сгур1апа1уз15 оГ Реа1 апс! Ы-НазЬ,” АПуапсез 1П Сгурю1о^у—Е11КОСКУРТ ’91 РгосеесПп§з, 5рг1п§ег-Уег!а§, 1991, рр. 1-16. 170. Е. В^Ьат апс! А. ЗЬати, “ЭПТегепНа! Сгур1апа1уз15 оГ ЗпеГги, КЬаГге, КЕООС-Н, ЬОК1, апс! Ьис1Гег,” АПуапсез 1п Сгур!о1о§у— СКУРТО ’91 РгосеесПп^з, 1992, рр. 156-171. 171. Е. В|Ьат апс! А. ЗЬапПг, “ОПТегепПа1 Сгур1апа1уз13 оГ 1Ье Ри11 16-Коипс! ОЕЗ,” АПуапсез \п СгурЮ1о§у—СКУРТО ’92 РгосеесЛп^з, 5рпп2ег-Уег1а§, 1993, 487-496. 172. Е. В1Ьат апс! А. 5Ьат1г, ОПТегепПа1 Сгур1апа1уз15 оГ 1Ье Эа1а ЕпсгурПоп 51апс!агс!, 5рпп§ег-Уег1а§, 1993. 173. К. В1гд, 1. Сора1, А. НеггЬег^, Р. ^пзоп, 5. КиПеп, К. Мо1уа, апс! М. Уип§, “5уз1етаПс Ое51§п оГ Т\уо-РаЛу Аи1ЬепПсаПоп Рго1осо1з,” АПуапсез 1п Сгур!о1о§у—СКУРТО ’91 РгосеесПп^з, 5рпп§ег-Уег1аё, 1992, рр. 44-61. 174. К. ВЫ, I. Оора1, А. НеггЬег^, Р. Запзоп, 5. КиПеп, К. Мо1уа, апс! М. Уип^, “5уз1етаПс Оез1ёп оГ а РатПу оГ Аиаск*Кез1з1ап1 Аи1ЬепПсаПоп РгоЮсо1з,” ШЕЕ ^ои^па1 оГ 5е1ес1ес1 Агеаз 1п Соттип1саПоп, Ю арреаг. 175. К. ВЫ, I. Оора1, А. НсггЬег^, Р. ^ап5оп, 5. КиНеп, К. Мо1уа, апс! М. Уип^, “А Мос!и1аг РатПу оГ Зесиге Рго!осо1з Гог АиШепПсаПоп апс! Кеу 01з1пЬиПоп,” 1ЕЕЕ/АСМ ТгапзасПопз оп Ые1\уогкт&, (о арреаг. 176. М. В1зЬор, “Ап АррПсаПоп Гог а Раз! Оа!а Епсгур!1оп 5!апс!агс11шр1егпеп!а!10п,” СотриПп§ Зуз!етз, V. 1, п. 3, 1988, рр. 221-254. 177. М. В1зЬор, “Рпуасу-ЕпЬапсес! Е1ес!гоп1с МаП,” 01з!пЬи!ес! СотриПп§ апс! Сгур!о§гарЬу, Ре1§епЬаит апс! М. Мет!!, ес!з., Атег^сап Ма!ЬетаПса1 5ос1е!у, 1991, рр. 93-106. 178. М. В1зЬор, “Рпуасу-ЕпЬапсеП Е1ес!гоп1с МаП,” 1п!егпе!\уогк|пе: КезеагсЬ апс! Ехрег1епсе, у. 2, п. 4, Оес 1991, рр. 199-233. 179. М. В1зЬор, “Кесеп! СЬап§ез !о Рг1Уасу ЕпЬапсеП Е1ес!готс МаП,” 1п!ете!\УОгк1п§: КезеагсЬ апс! Ехрепепсе, у. 4, п. 1, Маг 1993, рр. 47-59.
Список литературы 180. 1.Р. В1аке, Я. Рцр-Нага, Я.С. МиШп, апс! З.А. УапзЮпе, “Сотри!т§ Ьо&ап!Ьтз т РтЬе Р|е1с!5 оГ СЬагасЮпзПс Т\уо,” 51АМ Юигпа! оп А^еЬгаю 01зсге!е МеЮоНз, V. 5, 1984, рр. 276- 285. 181. 1.Р. В1аке, Я.С. МиШп, апН З.А. УапзЮпе, “Сотри!т§ ЬоёагЬЬтз т СР (2п),” Айуапсез т Сгурю1о§у: РгосеесЬп§5 оГ СЯУРТО 84, 8рпп§ег-Уег1а^, 1985, рр. 73-82. 182. С.Я. В1ак1еу, “5аГе§иагс11п^ СгурЮ^гарЫс Кеуз,” РгосеесЬп^з оГ !Ье Ыа!юпа1 Сотри!ег СопГегепсе, 1979, Атепсап РеНегаОоп оГ 1пГогта!юп Ргосе$зт§ ЗоЫеОез, V. 48, 1979, рр. 313-317. 183. С.Я. В1ак1еу, “Опе-Ите РаПз аге Кеу ЗаГе§иагс11п§ ЗсЬетез, N01 Сгур1озуз1етз—Раз! Кеу ЗаГе^иагсИпё ЗсЬетез (ТЬгезЬоЮ ЗсЬетез) Ех131,” РгосеесЬп^з оГ 1Ье 1980 Зутрозшт оп ЗесигЬу апс! Рпуасу, 1ЕЕЕ Сотртег 5ос1е!у, Арг 1980, рр. 108-113. 184. О.Я. В1ак1еу апс! I. ВогозЬ, “Я1уез!-ЗЬагтг- АсИетап РиЬНс Кеу Сгур1озу51етз Оо Ыо! А!\уауз Сопсеа! Мезза^ез,” Сотри1егз апс1 МаЮетаПсз \уИЬ АррЬсапопз, V. 5, п. 3, 1979, рр. 169-178. 185. О.Я. В1ак1еу апс! С. Меаскпуз, “А Оа!аЬазе ЕпсгурПоп ЗсЬете \уЫсЬ АИо\уз 1Ье Сотри!а!юп оГ ЗиОзИсз 0$'т^ Епсгур1ес! Оа!а,” РгосееНт^з оГ 1Ье 1985 Зутрозшт оп ЗесигЬу апс! Рпуасу, ШЕЕ Сотри!ег Зоае!у, Арг 1985, рр. 116-122. 186. М. В1ате, “А СгурЮ^гарЫс РИе 5уз1ет Гог 1ЛЧ1Х,” 1з1 АСМ СопГегепсе оп Сотри1ег апс! Соттит- са!юпз ЗесигЬу, АСМ Ргезз, 1993, рр. 9-16. 187. М. В1аге, “РгоЮсо! РаПиге т 1Ье Езсго^ед ЕпсгурПоп 3!апс!агс1,” 2пс! АСМ СопГегепсе оп Сотри!ег апс! СоттитсаИопз Зесигку, АСМ Ргезз, 1994, рр. 59-67. 188. М. В1аге, “Кеу Мапа^етеп! т ап Епсгур!т§ РИе Зуз1ет,” РгосеесИп§з оГ 1Ье Зиттег 94 118ЕЫ1Х СопГегепсе, 115ЕЫ1Х АззоааОоп, 1994, рр. 27-35. 189. М. В1аге апс1 В. ЗсЬпе1ег, “ТЬе МасОиГПп В1оск С1рЬег А1§огкЬт,” К.II. Ьеиуеп \УогкзЬор оп СгурЮ^гарЫс А1§огкЬтз, Зрг1п^ег-Уег1а§, 1995, Ю арреаг. 190. II. ВЮсЬег апд М. 01сЬ(1, “Р1зЬ: А Раз! 5оЯ\уаге 31геат ОрЬег,” Раз! 5оЙ\уаге ЕпсгурПоп, СатЪпП&е Зесигку \УогкзЬор РгосеесЬп^з, 5рпп§ег-Уег1а§, 1994, рр. 41-44. 191. Я. В1от, “Ыоп-РиЬЬс Кеу 01з!пЪи!юп,” АПуапсез т Сгурю1о§у: РгосееНт^з оГ СгурЮ 82, Р1епит Ргезз, 1983, рр. 231-236. 192. КТ. В1о\у апс! ЗТ.Э. РЬоетх, “Оп а Рипс!атеп1а1 ТЬеогет оГ (ЗиапШт СгурЮ^гарЬу,” .Юигпа! оГ МоНет Орпсз, у. 40, п. 1, Лап 1993, рр. 33-36. 747 193. Ь. В1ит, М. В!ит, апс! М. ЗЬиЬ, “А 51тр!е 11пргескс!аЫе РзеиНо-ЯапПот ЫитЬег ОепегаЮг,” 31АМ .1оигпа1 оп Сотри!т§, у. 15, п. 2, 1986, рр. 364-383. 194. М. В1ит, “Сот РПррт§ Ьу Те1ерЬопе: А РгоЮсо1 Гог 5о1у1п§ 1трозз1Ые РгоЫетз,” РгосеесЬп§з оГ 1Ье 24!Ь ШЕЕ СотриЮг СопГегепсе (СотрСоп), 1982, рр. 133-137. 195. М. В1ит, “Но\у ю ЕхсЬап^е (Зесге!) Кеуз,” АСМ ТгапзасПопз оп СотрШег 8уз1етз, у. 1, п. 2, Мау 1983, рр. 175-193. 196. М. В1ит, “Но\у Ю Ргоуе а ТЬеогет Зо N0 Опе Е1зе Сап СЫт И,” РгоссесПп^ оГ !Ье 1п!егпа!юпа1 Соп§гезз оГ МаШетаПаапз, Вегке1еу, СА, 1986, рр. 1444-1451. 197. М. В1ит, А. Ос ЗапИз, 5. МшаЬ, апс! О. Регз!апо, “Ыопт!егасПУе 2его-Кпо\у1ес!2е,” 31АМ Юигпа! оп Сотри!т§, у. 20, п. 6, Эес 1991, рр. 1084-1118. 198. М. В1ит, Р. РеШтап, апс! 3. МюаЬ, “Ыоп- ^ 1п!егасПуе 2е^о-КпоVV1ес^§е апс! !!з АррЬсаОопз,” РгосеесИп^з оГ !Ье 20Ш АСМ Зутрозшт оп ТЬеогу оГСотри!т§, 1988, рр. 103-112. 199. М. В1ит апс! 3. ОоШ\уаззег, “Ап ЕГПаеп! РгоЪаЫЬзпс РиЬЬс-Кеу ЕпсгурПоп ЗсЬете \УЫсЬ РЬНез АН РагПа! ШГогтаПоп,” Аскапсез т Сгур1о1о&у: РгосеесЬп^ оГ СЯУРТО 84, 8рпп§ег-Усг1аё, 1985, рр. 289-299. 200. М. В1ит апс! 3. МшаЬ, “Но\у ю Оепега!е СгурЮ§гарЫса11у-31гоп§ Зециепсез оГ РзеиНо- ЯапПот Виз,” 31АМ .Юита1 оп СотриПп§, у. 13, п. 4, Коу 1984, рр. 850-864. 201. В. с!еп Воег, “Сгур!апа1уз1з оГ Р.Е.А.Ь.,” Аскапсез т Сгур!о1о§у—Е11ЯОСЯУРТ ’88 РгосеесЬп^з, 5рпп§ег-Уег1а§, 1988, рр. 293-300. 202. В. с!еп Воег апс! А. Воззе1аегз, “Ап АПаск оп 1Ье Ьаз! Т\уо Яоипйз оГ М04," АИуапсез 1п Сгурю1о§у—СЯУРТО ’91 РгосеесЬп^з, 5рпп§ег-Уег1аё, 1992, рр. 194-203. 203. В. Иеп Воег апс! А. Воззе1аегз, “С0Ш510П8 Гог !Ье Сотргез510п Рипс!10п оГ М05,” Аскапсез 1п Сгурю1о^у—Е11ЯОСЯУРТ ’93 РгосеесЬп§5, Зрг1п^ег-Уег1аё, 1994, рр. 293-304. 204. Т-Р. Во1у, А. Воззе1аегз, Я. Сгатег, Я М|сЬе1зеп, 3. М^015пе5, Р. МиНег, Т. РеИегзеп, В. РГ|1гтапп, Р. с!е Яооу, В. ЗсЬоептакегз, М. ЗсЬитег, Ь. УаПее, апс! М. \Уа1с!пег, “Э^Ьа! Раутеп! Зуз!етз 1п !Ье Е5РЯ1Т Р^о^ес! САРЕ,” Зесиг1Сот 94, Рапз, Ргапсе, 2-6 ^ап 1994, рр. 35-45. 205. ^.*Р. Во1у, А. Воззс1аегз, Я. Сгатег, Я. М1сЬе1зеп, 3. М)01зпез, Р. МиНег, Т. РеИегзеп, В. РП!2тапп, Р. Не Яооу, В. ЗсЬоептакегз, М. ЗсЬиШег, Ь. УаИее, апс! М. \Уа1с1пег, “ТЬе Е5РЯ1Т Рго^ес^ САРЕ—РП^Ь Зесиг1!у 0|§>!а1 Раутеп! 5уз!ет,” Сотри!ег Зесиг1!у—ЕЗОЯ1СЗ 94, Зрпп^ег-Уег1а§, 1994, рр. 217-230.
748 Прикладная криптография 206. ЭЛ. Вопс!, “РгасНса1 РптаШу ТезНпз,” РгосеесИп^з оГ 1ЕЕ 1тегпаПопа1 СопГегепсе оп Зесиге СоттитсаПопз Зуз1етз, 22-23 РеЬ 1984,рр. 50-53. 207. Н. ВоппепЬег^, Зесиге ТезПп^ оГ УЗЫ Сгур1о§гарЫс ЕцшртеШ, Зепез т М1сгое1ес1готсз, Уо1. 25, Копз1апг: НаЛип^ Оогге Уег1а§, 1993. 208. Н. ВоппепЬег^, А. Сип^ег, N. Ре1Ьег, Н. КаезНп, апс! X. Ьа1, “УЬ31 1тр1етеп1аНоп оГ а Ые^ В1оск С1рЬег,” РгосеесНп^з оГ 1Ье 1ЕЕЕ 1п1етаПопа1 СопГегепсе оп Сотри1ег Оез^п: УЬ31 1П Сотри1егз апс! Ргосеззогз (1ССЭ 91), Ос1 1991, рр. 510-513. 209. К.5. Воо1Ь, “АШЬепПсаПоп оГ З^паШгез Ызт^ РиЬНс Кеу ЕпсгурПоп,” СоттитсаНопз оГ Ше АСМ, V. 24, п. 11, Ь1оу 1981, рр. 772-774. 210. А. Воззе1аегз, К. ОоуаеПз, апс! ^. Уапс!епуа11е, АЛуапсез т Сгурю1о^у—СКУРТО ’93 РгосеесНп§з, Зрип^ег-УеНа^, 1994, рр. 175-186. 211. О.Р. Воуе! апс! Р. Сгезсепг!, 1п1гос!исПоп Ю 1Ье ТЬеогу оГ Сотр1ехНу, Еп^1е\Уоод СИГГз, N.1: РгепПсе-НаИ, 1994. 212. ^. Воуаг, “1пГетп§ Зециепсез Ргос1исес! Ьу а Ыпеаг Соп^гиепНа! Сепега1ог М1ззт5 Ьо\у- Огс1ег Вкз,” .1оигпа1 оГ СгурЮ1о§у, V. 1, п. 3, 1989, рр. 177-184. 213. Т Воуаг, О. СЬаит, апс! I. Эатв&гс!, “СопуеШЫе 11пс!етаЫе З^паШгез,” Адуапсез т Сгур1о1о§у—СКУРТО ’90 РгосеесНп^з, 5рпп^ег-Уег1а§, 1991, рр. 189-205. 214. .1. Воуаг, К. РпесН, апс! С. Ьипд, “РгасНса! 2его- Кпо^Ы^е РгооГз: С1у1П^ ЬПмз апс! 11зт5 ОеЛЫепЫез,” Аскапсез т СгурЮ1о§у— Е1ЖОСКУРТ ’89 РгосеесНп^з, Зрг1п^ег-Уег1а§, 1990,рр. 155-172. 215. .1. Воуаг, С. Ьипс!, апс! К. РегаНа, “Оп 1Ье СоттишсаПоп Сотр1ехЬу оГ 2его-Кпо\у1ес!§е РгооГз,” .1оита1 оГ Сгурю1о§у, у. 6, п. 2, 1993, рр. 65-85. 216. .1. Воуаг апс! К. РегаЬа, “Оп 1Ье Сопсге1е Сотр1ехку оГ 2его-Кпо\у!ес!§е РгооГз,” АЛуапсез т Сгур1о1о§у—СКУРТО ’89 РгосеесНп^з, Зрпп§ег-Уег1а§, 1990, рр. 507-525. 217. С. Воус1, “Зоте АррИсаНопз оГ Ми1пр1е Кеу С|рНегз,” АЛуапсез т Сгурю1о&у— Е11КОСКУРТ ’88 РгосеесНп^з, Зрпп&ег-УеНа^, 1988, рр. 455-467. 218. С. Воус!, “01511а! МиШз^паШгез,” СгурЮ^гарЬу апс! СосНп§, Н.1 Векег апс! Р.С. Йрег, ес!з., ОхГогс!: С1агепс!оп Ргезз, 1989, рр. 241-246. 219. С. Воус!, “А Ые\у Ми1Пр1е Кеу С|рЬег апс! ап 1тргоуес! УоПп^ ЗсЬете,” АЛуапсез ш СгурЮ1о§у—Е1ЖОСКУРТ ’89 РгосеесНп^з, Зрпп5ег-Уег1а§, 1990, рр. 617-625. 220. С. Воус!, “МиШз^паШгез КеУ15Нес!,” Сгур№§гарЬу апс! СосЬп^ III, М.Т Оап1еу, ес!., ОхГогс!: С1агепс1оп Ргезз, 1993, рр. 21-30. 221. С. Воус! апс! V/. Мао, “Оп Ше ЫгтШюп оГВАN Ьо51с,” АЛуапсез т СгурЮШ^у—Е1ЖОСКУРТ ’93 РгосееШп^з, Зрпп^ег-УеНа^, 1994, рр. 240- 247. 222. С. Воус! апс! \У. Мао, “Оез^тп^ Зесиге Кеу ЕхсЬап§е Рго1осо1$,” Сотри1ег ЗесигЬу— ЕЗОК1СЗ 94,5рпп§ег-Уег1а§, 1994, рр. 217-230. 223. В.О. ВгасЬП, О. СоррегзгтШ, М.М. Нудеп, З.М. Ма1уаз, С.Н. Меуег, I Озеаз, 8. РПре1, апс! М. ЗсЫШп5, “Оа1а АиШепНсаНоп 1!з1П5 МоШЯсаПоп Эе1есНоп Сос!ез Вазед оп а РиЬНс Опе \Уау РипсПоп,” ИЗ. Ра1еп1 #4,908,861, 13 Маг 1990. 224. Т ВгапсЬ, 1.В. Оат^йгс!, Р. ЬапШоск, апс! Т. Рес!егзоп, “2его-Кпо\у1ес!5е АиШепНсаНоп ЗсЬете \уНЬ Зесге! Кеу ЕхсЬап^е,” АЛуапсез т Сгурю!о5у—СКУРТО ’88, 5рпп5ег-Уег1а5, 1990, рр. 583-588. 225. З.А. Вгапс!$, “Ап ЕГЯЫеп! ОГГ-Ыпе Е1ес1гоп1с СазЬ 5уз1ет Вазес1 оп 1Ье КсргезеШаПоп РгоЫет,” КероП С5-К9323, Сотри1ег ЗЫепсеЛЭераПтет оГ А^опШтз апс! АгсЬЬесШге, С\У1, Маг 1993. 226. З.А. Вгапс!з, “11пИасеаЫе ОГГ-Ппе СазЬ т \Уа11е1 \уиЬ ОЬзегуегз,” Аскапсез т СгурЮШ^у— СКУРТО ’93, Зрпп^ег-УеНа^, 1994, рр. 302-318. 227. З.А. Вгапс!з, “Е1ес1гошс СазЬ оп Ше 1п1егпе1,” РгосеесНп^з оГ 1Ье 1п1ете1 Зос1е1у 1995 Зутроз1ит оп Ые1\Уогк апс! 01з1г1Ьи1ес! Зуз1етз ЗесигЬу, ШЕЕ Сотри1ег Зос^еСу Ргезз 1995, рр 64-84. 228. Э.К. ВгапзЫ, “НеНтап’з Эа1а Эоез N01 ЗирроП Н15 Сопс1из!Оп,” ШЕЕ ЗресИит, V. 16, п. 7,.1и1 1979, р. 39. 229. О.К. Вгапз1ас1,Оа11, апс! 5. Ка1гке, “КероП оп Ше \УогкзЬор оп СгурЮ^гарЬу «п ЗирроП оГ Сотри1ег Зесигйу,” ЫВ51К 77-1291, ЫаПопа! Вигеаи оГ31апс!аг^з, Зер 21-22, 1976, Зер1етЬег 1977. 230. С. Вгаззагс!, “А Ыо1е оп 1Ье Сотр!ех11у оГ СгурЮ^гарЬу,” ШЕЕ ТгапзасПопз оп 1пГогтаПоп ТЬеогу, у. 1Т-25, п. 2, Маг 1979, рр. 232-233. 231. С. Вгаззагс!, “Ке1аНу12ес! СгурЮ§гарЬу,” РгосеесНп^з оГ 1Ье ШЕЕ 20гЬ Аппиа1 Зутрозшт оп 1Ье Роипс!апопз оГ Сотри1ег 5с1епсе, 1979, рр. 383-391. 232. О. Вгаззагс!, “А Т1те-Ьиск ТгадеоГГ т Ке1аПУ12ес! СгурЮ^гарЬу,” РгосеесНп^з оГ 1Ье ШЕЕ 21 з1 Аппиа! Зутроз1ит оп 1Ье РоипёаПопз оГСотри1ег 5с1епсе, 1980, рр. 380-386. 233. О. Вгаззагс!, “А Т1те-Ьиск Тгас!еоГГ т Ке1аПУ12ес! СгурЮ^гарЬу,” ^ои^па! оГ Сотри1ег апс! 8у51ет 5с1епсез, у. 22, п. 3, ,1ип 1981, рр. 280-311.
Список литературы 234. С. Вгаззагс!, “Ап ОрПтаНу Зесиге Ке1аПУ12ес! Сгурюзуз1ет,” ЗЮАСТ Ые\уз, V. 15, п. 1, 1983, рр. 28-33. 235. О. Вгаззагс!, “Ке1а1т2ес1 СгурЮ^гарЬу,” ШЕЕ Тгапзасиопз оп 1пГоггпа1юп ТЬеогу, V. 1Т-29, п. 6, Коу 1983, рр. 877-894. 236. С. Вгаззагс1, Мос!егп Сгурю!о§у: А ТиЮпа1, Зрпп§ег-Уег1а§, 1988. 237. О. Вгаззагс!, “ОиаМит СгурЮ§гарЬу: А В1Ыю§гарЬу,” ЗЮАСТ Ые\уз, V. 24, п. 3, Ос1 1993, рр. 16-20. 238. С. Вгаззагс!, Э. СНаит, апс! С. Сгёреаи, “Ап 1п1гос!ис1юп ю МЫтит 01зс1озиге,” СМ (}иаПег1у, V. I, 1988, рр. 3-17. 239. С. Вгаззагс!, Э. СЬаит, апс! С. Сгёреаи, “МЫтит 0|зс1озиге РгооГз оГ Кпо\у1е<1&е,” .1оита1 оГ Сотртег апс! 5уз1ет Зтепсез, V. 37, п. 2, Ос1 1988, рр. 156-189. 240. О. Вгаззагс! апс! С. Сгёреаи, “Коп-ТгапзШуе ТгапзГег оГ СопЕдепсе: А РегГесГ 2его- КпоууЫ^е 1п1егас1!Уе РгоЮсо1 Гог ЗАТ апс! Веуопс!,” РгосеесИп^з оГ 1Не 27Ш 1ЕЕЕ/ Зутрозшт оп РоипйаПопз оГ Сотри1ег ЗЫепсе, 1986, рр. 188-195. 241. С. Вгаззагс! апс! С. Сгёреаи, “2его-Кпо^1ес!§е 51ти1а1юп оГ Воо1еап Огсикз,” Айуапсез т Сгурю1оёУ—СКУРТО ’86 РгосеесИп^з, 5рпп§ег-Уег!а&, 1987, рр. 223-233. 242. О. Вгаззагс1 апс! С. Сгёреаи, “ЗоПт§ От 2его- КпоууЫее,” Айуапсез т СгурЮ1о§у— Е11КОСКУРТ ’89 РгосеесИп&з, Зрпп§ег-Уег1а§, 1990, рр. 181-191. 243. О. Вгаззагс1 апс! С. Сгёреаи, “ОиаМит В»1 СоттИтет апс! Сот Тоззт§ РгоЮсо1з,” Аскапсез т СгурЮ1о§у—СКУРТО ’90 РгосеесНп§5, Зрпп&ег-Уег1а&, 1991, рр. 49-61. 244. О. Вгаззагс!, С. Сгёреаи, К. Югза, апс! О. Ьап&кпз, “А (}иатит ВИ Соттктеп! ЗсНете РгоуаЫу 11пЬгеакаЫе Ьу Во1Ь Рал1ез,” РгосеесНп&з оГ 1Ье 34гЬ ШЕЕ Зутрозшт оп Роипс!аПопз оГ Сотртег 5с1епсе, 1993, рр. 362-371. 245. С. Вгаззагс!, С. Сгёреаи, апс! Т-М. КоЬеП, “1пГогта1юп ТЬеогеис Кес!исПопз Атоп& 01зс1озиге РгоЫетз,” РгосеесПп§з оГ 1Ье 271Н ШЕЕ Зутрозшт оп РоипсЫюпз оГ Сотртег ЗЫепсе, 1986, рр. 168-173. 246. С. Вгаззагс!, С. Сгёреаи, апс! Т-М. КоЬеП, “АИ- ог-Ыо1Ыпё 01зс1озиге оГ ЗесгеГз,” Айуапсез ш СгурЮ1о§у—СКУРТО ’86 РгосеесНп§з, Зрпп§ег-Уег1а§, 1987, рр. 234-238. 247. С. Вгаззагс!, С. Сгёреаи, апс! М. Уип§, “Еуегу1Ып§ т 1ЧР Сап Ве Аг§иес1 т РегГес! 2его-Кпо\у1ес1§е т а Воипс!ес1 ЫитЬег оГ Коипс!з,” РгосеесЬп^з оп 1Ье 1б1Ь 1п!етаПопа1 СоИояишт оп АиЮтаГа, Еап§иа^ез, апс! Рго2гаттт§, 5рпп§ег-Уег1а§, 1989, рр. 123-136. 749 248. К. Р. ВгеШ, “Ап 1тргоуес! Моп1е-Саг1о РасЮпгаПоп А1ёоп1Нт ,” В1Т, V. 20, п. 2, 1980, рр. 176-184. 249. К.Р. Вгеп1, “Оп 1Не Репойз оГ СепегаИхед Рйопасс! Кесиггепсез, МаЮетаПсз оГ СотриГаНоп, V. 63, п. 207, Ли1 1994, рр. 389-401. 250. К.Р. Вгеп1, “РагаИе! А1§оп1Ьтз Гог 1п(е&ег РасЮпгаПоп,” КезеагсЬ КероП СМА-К49-89, Сотртег Зс1епсе ЬаЬогаЮгу, ТЬе Аиз1гаПап ЫаИопа!11туегзку, Ос1 1989. 251. О.М. Вгеззоис!, РасЮпгаПоп апс! РптаПГу ТезОп^, Зрпп§ег-Уег1а& 1989. 252. Е.Р. ВпскеИ, “А Раз1 Мос!и1аг МиШрПса1юп А1&огкЬт \уНЬ АррПса1юпз Ю Т\уо Кеу СгурЮ- ^гарЬу,” Айуапсез т СгурЫо^у: РгосеесНп^з оГ СгурЮ 82, Р1епит Ргезз, 1982, рр. 51-60. 253. Е.Р. ВпскеИ, “Аге Моз1 Ьо\у ОепзЬу Ро1упот1а1 Кпарзаскз Зо1уаЫе т Ро1упот1а1 Т1те?” РгосеесНп^з оГ 1Ье 14гЬ 5отЬеаз1егп СопГегепсе оп СотЫпаЮпсз, СгарЬ ТЬеогу, апс! Сотри1т§, 1983. 254. Е.Р. ВпскеИ, “5о1уш§ Ьо\у ЭепзЬу Кпарзаскз,” Айуапсез т Сгурю1о§у: РгосеесИп^з оГ СгурЮ 83, Р1епит Ргезз, 1984, рр. 25-37. 255. Е.Р. ВпскеИ, “Вгеакт§ Кега1ес! Кпарзаскз,” Айуапсез т СгурЮ1о§у: РгосеесИп^з оГ СгурЮ 84, 8рпп§ег-Уег1а§, 1985, рр. 342-358. 256. Е.Р. ВпскеИ, “Сгур1апа1уз15 оГ 1Ье Оа^заууа РиЬНс Кеу СгурЮзузЮт,” АЬзГгасГз оГ Рарегз, Е1ЖОСКУРТ ’86, 20-22 Мау 1986. 257. Е.Р. ВпскеИ, “ТЬе Сгур1апа1уз15 о Г Кпарзаск СгурЮзузЮтз,” АррИсаиопз оГ 01зсге1е МаЮетаНсз, К.О. К1п§е1зеп апс! Р.8. КоЬеПз, ес!з., $ос1е1у Гог 1пс!из1па1 апс! АррПес! Ма1ЬетаИс5, РЬПас!е1рЫа, 1988, рр. 3-23. 258. Е.Р. ВпскеИ, “Зигуеу оГ Нагс1\уаге 1тр1етеп1аПопз оГ К$А,” Айуапсез 1П Сгурю1о§у—СКУРТО ’89 РгосеесИп^з, 5рппёег-Уег1а§, 1990, рр. 368-370. 259. Е.Р. ВпскеИ, О. СЬаит, 1.В. Оат§йгс!, апс! ^. уап с!е СгаГГ, “Сгас!иа1 апс! Уег1ПаЫе Ке1еазе оГ а 8есге1,” Айуапсез »п СгурЮ1о^у—СКУРТО ’87 РгосеесИп§з, 5рпп^ег-Уег1а§, 1988, рр. 156-166. 260. Е.Р. ВпскеИ, ТА. ОаУ15, апс! О.Т 81ттопз, “А РгеПт1пагу КероП оп 1Ье Сгур1апа1уз15 оГ Мегк1е-Не11тап Кпарзаск,” Адуапсез 1П СгурЮ1о§у: РгосеесИп^з оГ СгурЮ 82, Р1епит Ргезз, 1983, рр. 289-303. 261. Е.Р. ВпскеИ апд .1. ОеЕаигепИз, “Ап Аиаск оп а 81§па1иге ЗсЬете Ргорозес! Ьу ОкатоЮ апс! ЗЫгшзЫ,” Айуапсез т СгурЮЮ^у—СКУРТО ’85 Ргосеес11П§5, Зрг1п§ег-Уег1а§, 1986, рр. 28-32. 262. Е.Р. ВпскеИ, О.Е. Оеппт§, З.Т. Кеп1, О.Р. МаЬег, апс! XV. ТисЬтап, “ЗКIР^АСК Кеу1е\у— 1п1епт КероП,” иприЬИзЬес! тапизсг1р1, 28 Ли! 1993.
750 Прикладная криптография 263. Е.Р. ВпскеИ, ТС. Ьа^апаз, апс! А.М. ОсНугко, “ЕуаЮаПоп оГ Ше АсИетап АНаск оГ Ми1Пр1е ЬегаЮс! Кпарзаск СгурЮ$уз1етз,” АЛуапсез т СгурЮ1о§у: РгосеесЛп§з оГ СгурЮ 83, Р1епит Ргезз, 1984, рр. 39-42. 264. Е.Р. ВпскеИ, РТ. Ьее, апс! V. УасоЫ, “Зесиге АисЛо Те1есопГегепсе,” АЛуапсез т СгурЮ1о§у—СЯУРТО ’87 РгосеесПп^з, 5рпп§ег-Уег1аё, 1988, рр. 418-426. 265. Е.Р. ВпскеИ апс! К.5. МсСиг1еу, “Ап 1п1егасПуе МепППсаПоп ЗсЬете Вазес! оп 01зсге1е Ео§алШтз апс! РасЮпп§,” АПуапсез т Сгурю1оёУ—Е1ЖОСЯУРТ ’90 РгосеесПп^з, Зрпп§ег-Уег1а&, 1991, рр. 63-71. 266. Е.Р. ВпскеИ, ТН. Мооге, апс! М.К. РипН1, “31гис1иге т Ше 5-Вохез оГ Ше ЭЕ5,” АИуапсез т Сгурю1о&у—СЯУРТО ’86 РгосеесИп§з, 5рпп§ег-Уег1а§, 1987, рр. 3-8. 267. Е.Р. ВпскеИ апс! А.М. ОсПугко, “Сгур1апа1уз1з: А Зигуеу оГ Яесеп! ЯезиИз,” РгосеесПп§$ оГ Ше ШЕЕ, у. 76, п. 5, Мау 1988, рр. 578-593. 268. Е.Р. ВпскеИ апс! А.М. ОсЛухко, “Сгур1апа1уз1з: А Зигуеу оГ Яесет Яези11з,” Сотетрогагу Сгурю1о§у: ТЬе Заепсе оГ 1пГогтаПоп 1п1е§п1у, 0.3. З^ттопз, ес!., ШЕЕ Ргезз, 1991, рр. 501-540. 269. Е.Р. ВпскеИ апс! ОТ. 51ттопз, “А 51аЮз ЯероП оп Кпарзаск Вазес! РиЬПс Кеу СгурЮзузЮтз,” Соп^геззиз ЫитегапНит, у. 7, 1983, рр. 3-72. 270. Е.Р. ВпскеИ апс1 Э.Я. ЗПпзоп, “ТЬе ОеЮсПоп оГ СЬеа1егз т ТЬгезЬо1с! ЗсЬетез,” АИуапсез т СгурЮШ^у—СЯУРТО ’88 РгосеесПп^з, Зрпп§ег-Уег1а§, 1990, рр. 564-577. 271. А.О. Вгозсшз апс! ТМ. ЗткЬ, “Ехр1окт§ РагаПеПзт т Нагс!\уаге 1тр1етеп1аНоп оГ Ше ОЕЗ,” АИуапсез т СгурЮ1о&у—СЯУРТО ’91 РгосеесПп§з, Зрпп§ег-Уег1а^, 1992, рр. 367-376. 272. Ь. Вго\уп, М. К\уап, .1. Р1ергхук, апс! Т ЗеЬеггу, “1тргоут2 Яез1з1апсе Ю 01ГГегепНа1 Сгур1апа1уз15 апс! Ше ЯеПез^п оГ ЬОК1,” АИуапсез т СгурЫо^у—А51АСЯУРТ ’91 РгосеесПп§з, Зрг1пёег-Уег1а§, 1993, рр. 36-50. 273. Ь. Вго\уп, Т Р1ерггук, апс! Т ЗеЬеггу, “ЬОК1: А СгурЮ§гарЫс РпгтНуе Гог АиШепНсаНоп апс! Зесгесу АррПсаПопз,” АЛуапсез т СгурЮ1о§у— А113СЯУРТ ’90 РгосеесПп§з, Зрпп§ег-Уег1а&, 1990, рр. 229-236. 274. Ь. Вго\уп, Т Р^ерггук, апс! 1 ЗеЬеггу, “Кеу 5сЬеНиПп§ т ЬЕЗ Туре СгурЮзуз1ет$,” АИуапсез т СгурЮ1о§у—А113СЯУРТ ’90 РгосеесПп^з, Зрпп§ег-Уег1а§, 1990, рр. 221-228. 275. Ь. Вго\уп апс! Т ЗеЬеггу, “Оп Ше Эез^п оГ РегтиШюп Р т ОЕЗ Туре СгурЮ$у$1ет$,” АИуапсез т СгурЮ1о§у—Е1ЖОСЯУРТ ’89 РгосеесПп^з, 5рпп§ег-Уег1ае, 1990, рр. 696-705. 276. \У. Вго\уп, “А (ЗиапШт Ьеар т Зесге! СоттишсаПопз,” №\у Зс1епПз1, п. 1585, 30 .1ап 1993, р. 21. 277. ТО. Вгйег, “Оп РзеиИо Яапс1от Зециепсез аз СгурЮ СепегаЮгз,” РгосеесПпвз оГ Ше 1п1етаНопа1 2ипсЬ Зеттаг оп 01§ка1 СоттишсаПоп, 3\укхег1апс!, 1984. 278. Ь. Вгуше1$зоп “Оп Ше Ьтеаг Сотр1ехку оГ СотЫпеН ЗЫГ1 Яе^зЮг Зециепсез,” АЙуапсез т СгурЮ1о§у—Е11ЯОСЯУРТ ’85, 5рпп§ег-Уег1а^, 1986, рр. 156-166. 279. Т ВисЬтапп, Т ЬоЬо, апс! .1. 2ауег, “Ап 1тр1етеп1аНоп оГ Ше Оепега! ЫитЬег Р1е1с1 51еуе,” АЛуапсез ш Сгурю1о§у—СЯУРТО ’93 РгосеесПп§з, 5рппеег-Уег1а§, 1994, рр. 159-165. 280. М. ВигтезЮг апс! У. Оезтеск, “Вгоас!са51 1п1егасПуе РгооГз,” АИуапсез ш СгурЮ1о§у— Е11ЯОСЯУРТ ’91 РгосеесПп^з, 5рпп§ег-Уег1а§, 1991, рр. 81-95. 281. М. Вигте$1ег апс! У. ОезтесЬ, “А Зесиге апё ЕГПает СопГегепсе Кеу 0|$1г1ЬиПоп Зу$1ет,” АИуапсез 1п Сгурю1о§у—Е11ЯОСЯУРТ '94 РгосеесПп^з, Зрг1п^ег-Уег1а§, 1995, Ю арреаг. 282. О. ВигпЬат, “ЫЗА Зеект^ 500,000 ‘Зесиге’ Те1ерЬопез,” ТЬе Ые\у Уогк Т1тез, 6 Ос1 1994. 283. М. Вигго\у$, М. АЬасП, апс! Я. ЫееИЬат, “А Ы^с оГ АиШепНсаНоп,” ЯезеагсЬ ЯероП 39, 01^иа! Еци1ртеп1 Согр. Зу$1етз ЯезеагсЬ Сеп1ег, РеЬ 1989. 284. М. Вигго\у$, М. АЬасП, апс! Я. ЫеесШат, “А Ьо^с оГ АиШепНсаНоп,” АСМ ТгапзасПопз оп СотриЮг ЗузЮтз, у. 8, п. 1, РеЬ 1990, рр. 18-36. 285. М. Вигго\У5, М. АЬасП, апс! Я. ЫеесШат, “Яе^о^пс1е^ Ю Ыеззеи,” ОрегаПп§ Зуз1ет Яеу1е^, у. 20, п. 2, Арг 1990, рр. 39-40. 286. ТТ Сас1е, “А МосППсаНоп оГ а Вгокеп РиЬПс-Кеу С1рЬег,” АИуапсез 1п СгурЮ1о§у—СЯУРТО ’86 РгосеесИп^з, ЗрГ1П§ег-Уег1аё, 1987, рр. 64-83. 287. Т.Я. Сат апс! А.Т. ЗЬегтап, “Но\у Ю Вгеак 01ГГогс1’5 С1рЬег,” РгосеесПп^з оГ Ше 2пс! Аппиа! АСМ СопГегепсе оп СотриЮг апс! Соттип1саПопз 5есиг11у, АСМ Ргезз, 1994, рр. 198-209. 288. С. Са1уе1П апс! V. УагасШа^ап, “Ап Апа1уз1з оГ Зоте Эе1е§аПоп РгоЮсо1з Гог 01з1г1Ьи1ес! ЗузЮтз,” Ргосеес!|П85 оГ Ше СотриЮг Зесиг11у РоипИаПопз \Уогк$Ьор V, ШЕЕ СотриЮг Зос1е1у Ргезз, 1992, рр. 92-110. 289. ТЬ. СатетзсЬ, ^.-М. Р1уе1еаи, апс! М.А. ЗЫ1ег, “Ап ЕГГ|С1еп1 Е1ес1готс РаутеШ Зуз1ет Рго1есНп§ Рг|уасу,” Сотриюг 5есиг11у— Е50Я1С5 94, Зрпп§ег-Уег1а8, 1994, рр. 207-215. 290. Р. Сатюп апс! 3. Ра1аг1п, “ТЬе Кпарзаск НазЬ РипсПоп Ргорозес! а1 СгурЮ ’89 Сап Ве Вгокеп,” АИуапсез 1п Сгурю1о§у—Е11ЯОСЯУРТ ’91, 5рппёег-Уег1а§, 1991, рр. 39-53. 291. С.М. СатрЬеИ, “Оез1еп апс1 Зрес1ПсаПоп оГ СгурЮ^гарЫс СараЬШПез,” ШЕЕ СотриЮг Зос1с1у Ма§а21пе, у. 16, п. 6, ]Моу 1978, рр. 15-19.
Список литературы 292. Е.А. СатрЬеИ, Я. ЗаГаукЫаЫ, апк Р.А. Р1еазап1з, “РагПа! ВеНеГ апк РгоЬаЫИзПс Яеазотп*» т Ше Апа1уз13 оГ Зесиге РгоЮсо1з,” Ргосеект^з оГ Ше Сотри1ег Зесигку РоипкаПопз \УогкзЬор V, ШЕЕ СотриЮг Зос1е1у Ргезз, 1992, рр. 92-110. 293. К.\У. СатрЬеИ апс1 М.]. Мепег, “ОЕЗ 1з Ыо1 а Сгоир,” АЛуапсез т СгурЮЮ^у—СЯУРТО ’92 Ргосеект^з, Зрпп^ег-УеНа^, рр. 512-520. 294. 2.Р. Сао апс! С. 2Ьао, “Зоте Ые\у МС Кпарзаск СгурЮзузЮтз,” СН1ЫАСЯУРТ ’94, Х|Шап, СЫпа, 11-15 Ыоу 1994, рр. 70-75. (1п СЫпезе). 295. С. Саг1е1, “РагПаИу-ВеШ РипсПопз,” Акуапсез т СгурюШ^у—СЯУРТО ‘92 Ргосеект^з, Зрг1п§ег-Уег1аё, 1993, рр. 280-291. 296. С. Саг1е1, “РагПаПу Веп1 РипсПопз,” Эез^пз, Сокез ап<1 СгурЮ^гарЬу, V. 3, 1993, рр. 135-145. 297. С. Саг1е1, “Т\уо Ые\у С1аззез оГ Веп1 РипсПопз” АЛуапсез т СгурЮЮ^у—Е11ЯОСЯУРТ ‘93 Ргосеект^з, 5рпп2ег-Уег1ае, 1994, рр. 77-101. 298. С. Саг1е1, .1. ЗеЬеггу, апк Х.М. 2Ьап& “Соттеп(з оп ‘ОепегаПп^ ап(1 СоиМт^ Втагу Вет Зециепсез,’ ” ШЕЕ ТгапзасПопз оп ШГогтаПоп ТЬеогу, у. 1Т-40, п. 2, Маг 1994, р. 600. 299. ТМ. СаггоИ, СотриЮг Зесигку, 2п(1 еккюп, ВиПепуогШз, 1987. 300. ТМ. СаггоИ, “ТЬе ТЬгее Расез оГ 1пГогтаПоп Зесигку,” АЛуапсез т Сгурю1о§у—А118СЯУРТ ’90 Ргосеект^з, Зрип^ег-УеНаБ, 1990, рр. 433- 450. 301. .1.М. СаггоИ, “ ‘Оо-к-уоигзе1Г СгурЮ^гарЬу,” Сотри1егз & Зесигку, у. 9, п. 7, Ыоу 1990, рр. 613-619. 302. Т.Я. Сагоп ап(1 Я.О. ЗНуегтап, “РагаИе! 1тр1етеп1апоп оГ 1Ье С^иакгаПс ЗсЬете,” .1оита1 оГ 5ирегсотриПп§, у. 1, п. 3, 1988, рр. 273-290. 303. СС1ТТ, ОгаЯ ЯесоттепкаПоп Х.509, “ТЬе ОкесЮгу—АиШепПсаПоп Ргате\Уогк,” СопзикаПоп СотткЮе, ЫетаПопа! Те1ерЬопе апк Те1е^гарЬ, 1п1етаПопа1 Те1есоттишса1юпз 11п!Оп, Сепеуа, 1987. 304. СС1ТТ, ЯесоттепкаПоп Х.509, “ТЬе ОкесЮгу—АиШепНсаНоп Ргате\уогк,” СопзикаПоп СотткЮе, 1пЮгпаПопа1 Те1ерЬопе апс! ТеЮ^гарЬ, ШЮгпаПопа! ТеЮсоттитсаПопз 11П10П, Сепеуа, 1989. 305. СС1ТТ, ЯесоттепкаПоп Х.800, “Зесигку АгсЬкесШге Гог Ореп ЗузЮтз 1пЮгсоппесПоп Гог СС1ТТ АррПсаПопз,” 1пЮтаНопа1 Те1ерЬопе ап<1 Те1е^гарЬ, 1пЮгпаНопа1 Те1есоттитсаПопз 11пюп, Сепеуа, 1991. 306. Р. СЬаЬаик, “Оп 1Ье Зесигку оГ Зоте СгурЮзузЮтз Вазек оп Еггог-СоггесПпе Сокез,” АЛуапсез т СгурюШ^у—Е1ЖОСЯУРТ ‘94 Ргосеект^з, Зрип^ег-УеНаБ, 1995, ю арреаг. 751 307. Р. СЬаЬаик ап<1 3. Уаикепау, “Ыпкз Ве1\уееп ОИТегепПа! апк Ыпеаг Сгур1апа1уз1з,” Акуапсез ш Сгур1о1о§у—Е11ЯОСЯУРТ ’94 РгосееШп^з, 5рпп§ег-Уег1а5, 1995, Ю арреаг. 308. \У.С5. СЬатЬегз апк О. СоИтапп, “Сепега1огз Гог Зечиепсез \укЬ №аг-Мах1та1 Ыпеаг Ецшуа1епсе,” 1ЕЕ Ргосеект^з, V. 135, Р1. Е, п. 1, Лап 1988, рр. 67-69. 309. \У.С5. СЬатЬегз ап<1 О. СоИтапп, “ЬосЫп ЕЯес1т Сазсакез оГ С1оск-Соп1го11ес1 ЗЫП Яе^зЮгз,” АЛуапсез ш Сгурю1о§у—Е11ЯОСЯУРТ ’88 Ргосеект^з, Зрип^ег-УеНаБ, 1988; рр. 331-343. 310. А. СЬап ап<! Я. Сатез, “Оп 1Ье Ыпеаг Зрап оГ Втагу Зециепсез Ггот р1П11е ОеотеЫез,” Акуапсез т СгурЮ1о§у—СЯУРТО ’86 Ргосеект^з, Зрг1П§ег-Уег1а§, 1987, рр. 405-417. 311. .1.Р. СЬапк1ег, О.С. Атп^Юп, О.Я. Вегке1Ьаттег, ап(1 \У.Ь. СП1, “МепППсаПоп апк Апа1уз15 оГ Роге1§п Ьа\уз апк Яе§и1а110пз РеПатт^ Ю Ше 1!зе оГ Соттегаа! ЕпсгурПоп Ргокис1з Гог Уоке апк Оа1а Соттип1саПопз,” ЫаПопа! 1п1е11ес1иа1 РгореПу Ьа\у 1пз1ки1е, Сеог^е \УазЫп§1оп Утуегзку, \УазЬ|п§1оп, О.С.,}ап 1994. 312. С.С. СЬап^ апк 5.!. Н\уап§, “СгурЮ^гарЫс АиШепПсаПоп оГ Разз\уогкз,” РгосееШп^ оГ Ше 25Ш Аппиа1 1991 ШЕЕ 1п1егпа1юпа1 СатаЬап СопГегепсе оп Зесигку ТесЬпо1о§у, Та^ре», Та1\уап, 1-3 Ос1 1991, рр. 126-130. 313. С.С. СЬапБ апк 5.!. Н\уапе, “А 31га1е§у Гог ТгапзГогт^пе РиЬНс-Кеу Сгур1озуз1ет5 1пЮ 1кеп111у-Вазек Сгур1озуз1ет5,” Ргосеек1Пё5 оГ Ше 25Ш Аппиа1 1991 ШЕЕ 1п1етаПопа1 СагпаЬап СопГегепсе оп Зесигку ТесЬпо1о§у, Та1ре!, Та1\уап, 1-3 Ос1 1991, рр. 68-72. 314. С.С. СЬапБ апк С.Н. Ып, “Ап Ю-Вазек З^^паШге ЗсЬете Вазек ироп ЯаЫп’з РиЬИс Кеу СгурЮзуз1ет,” Ргосеектез оГ Ше 25Ш Аппиа! 1991 ШЕЕ 1п1егпа1юпа1 СатаЬап СопГегепсе оп Зесигку ТесЬпо1о^у, Та1ре1, Та1\уап, 1-3 Ос1 1991, рр. 139-141. 315. С. СЬагпез апк ]. Р1ерггук, “Аиаскт§ Ше 5Ь2 НазЫп§ ЗсЬете,” Акуапсез 1п Сгурю1оеу— А81АСЯУРТ ’94 Ргосеек1п§з, 5рг1П§ег-Уег1аё, 1995, рр. 322-330. 316. Э. СЬаит, “11п1гасеаЫе Е1ес1готс Мак, Яе(игп Аккгеззез, апк 01311а! Рзеикопутз,” Соттип1саПопз оГ Ше АСМ, у. 24, п. 2, РеЬ 1981, рр. 84-88. 317. Э. СЬаит, “ВПпк З^паШгез Гог ЫтгасеаЫе РаутеШз,” Акуапсез 1п Сгурю1оеу: Ргосеек^п^з оГСгурЮ 82, Р1епит Ргезз, 1983, рр. 199-203. 318. О. СЬаит, “Зесигку \УкЬои1 ШепПЯсаПоп: ТгапзасПоп Зуз1етз Ю Маке В|§ ВгоШег ОЬзо1е1е,” Соттип1саПопз оГ Ше АСМ, у. 28, п. 10, Ос1 1985, рр. 1030-1044.
752 Прикладная криптография 319. Э. СЬаит, “Оетоп$1гаПп§ 1На1 а РиЬНс РгесЛса1е Сап Ве ЗаПзПес! \укЬои1 ЯеуеаПп^ Апу ЫГогтаПоп аЬои1 Но\у,” Айуапсез т СгурюЫ^у—СЯУРТО ’86 РгосеесПп^з, 5рпп§ег-Уег1а2, 1987, рр. 159-199. 320. О. СЬаит, “ВПпсПп§ Гог 11папПс1ра1ес1 З^паШгез,” Айуапсез т Сгурю1о§у— Н11ЯОСЯУРТ ’87 РгосеесПп§з, 5рг1П§ег-Уег1а§, 1988, рр. 227-233. 321. О. СЬаит, “ТЬе Отт§ СгурЮ^гарЬегз РгоЫет: 11псоп(Ь1!Опа1 Зепёег ап<1 Яесе1уег 11п1гасеаЫ1ку,” .1оигпа1 оГ Сгурю1о§у, V. 1, п. I, 1988, рр. 65-75. 322. О. СЬаит, “Е1есПопз \укЬ 11псоп(Ь1юпа11у Зесге* Ва11о1з апс! О^згирПопз Ецшуа1ет ю Вгеакт^ ЯЗА,” Айуапсез т Сгур*о1о§у—Е1ЖОСЯУРТ ’88 РгосеесЛп§з, $рг1п§ег-Уег1а§, 1988, рр. 177— 181. 323. О. СЬаит, “ВНп<1 З^паШге 5уз1етз,” 11.3. Ра!еп1 #4,759,063, 19 Ли1 1988. 324. О. СЬаит, “ВНп(1 ЫпапПЫра^с! 51§па1иге 5уз1етз,” 11.5. Ра1еп1 #4,759,064, 19 }и\ 1988. 325. Э. СЬаит, “ОпПпе СазЬ СЬескз,” Аскапсез ш Сгур1о1о§у—ЕЫЯОСЯУРТ ’89 РгосеесЛп^з, $рпп§ег-Уег1а§, 1990, рр. 288-293. 326. О. СЬаит, “Опе-5Ьо\у ВПпс! 51§паШге 5уз1етз,” Ы.8. Ра1еп1 #4,914,698, 3 Арг 1990. 327. О. СЬаит, “1)пс1етаЫе З^паШге 5уз1етз,” 11.5. Ра*еп1 #4,947,430, 7 Аи% 1990. 328. О. СЬаит, “ЯеШтес!-Уа1ие ВПпс! $1§па1иге $уз*етз,” 11.5. Ра1еп1 #4,949,380, 14 Аи% 1990. 329. О. СЬаит, “2его-Кпо\у!ес!§е Ыпс!етаЫе $1§па1игез,” Айуапсез т Сгур1о1о§у— Е11ЯОСЯУРТ ’90 РгосеесЛп^з, 5рпп§ег-Уег1а§, 1991, рр. 458-464. 330. Э. СЬаит, “Сгоир З^паШгез,” Айуапсез т Сгур1о1о&у—Е1ЖОСЯУРТ ’91 РгосеесЛп§з, $рпп§ег-Уег1а§, 1991, рр. 257-265. 331. О. СЬаит, “11пргесЛс1аЫе ВПпс! З^паШге $уз1етз,” Ы.5. Ра*еп* #4,991,210, 5 РеЫ991. 332. Э. СЬаит, “АсЫеУ1п§ Е1ес1гошс Рпуасу,” $с1епПЛс Атепсап, V. 267, п. 2, Аи§ 1992, рр. 96-101. 333. О. СЬаит, “Ое51§па1е(! СопЯгтег З^паШгез,” Айуапсез ш Сгур1о1о^у—Е11ЯОСЯУРТ ’94 РгосеесЛп^з, Зрип^ег-УеНаБ, 1995, Ю арреаг. 334. О. СЬаит, С. Сгёреаи, апс! 1.В. Оат^йгс!, “МиЫраПу ЫпсопсППопаИу Зесиге Рго1осо1з,” РгосеесПп^з оГ 1Ье 20*Ь АСМ Зутрозшт оп 1Ье ТЬеогу оГСотриПп^, 1988, рр. 11-19. 335. О. СЬаит, В. с!еп Воег, Е. уап Неуз*, 5. М^зпез, апс! А. 51еепЬеек, “ЕГПЫеп* ОГГПпе Е1ес1гошс СЬескз,” Айуапсез т Сгур!о1о§у— Е1ЖОСЯУРТ ‘89 РгосеесЛп^з, 5рг1п^ег-Уег1а§, 1990, рр. 294-301. 336. Э. СЬаит апс1 1-Н. ЕуеПзе, “Сгур1апа1уз15 оГ ЭЕЗ \укЬ а Яеёисес! РЫтЬег оГ Яоипёз; Зециепсез оГ Ыпеаг Расюгз т В1оск ОрЬегз,” Айуапсез т Сгур1о1о§у—СЯУРТО ’85 РгосеесНп§з, 5рпп§ег-Уег1а§, 1986, рр. 192-211. 337. О. СЬаит, Т-Н. ЕуеПзе, апс! 3. уап с!е ОгаГГ, “Ап 1тргоуес! Рго1осо1 Гог Оетопз1гаПп§ Ро5зе5з1оп оГ 01зсге1е Ео§ал1Ьтз апс! Зоте ОепегаПгаПопз,” Аёуапсез т Сгур1о1о§у—Е11ЯОСЯУРТ ’87 РгосеесЛп§з, 5рпп2ег-Уег1а§, 1988, рр. 127-141. 338. О. СЬаит, Т-Н. Еуег1зе, I уап с!е ОгаГГ, апс! Я. РегаЬа, “Оетопз1гаПп§ Роззеззюп оГ а 01зсге1е ЬоёагиЬт \укЬои* ЯеуеаПп§ II,” Айуапсез т Сгурю1о§у—СЯУРТО ’86 РгосеесЛп°5. 5рпп§ег-Уег1а§, 1987, рр. 200-212. 339. О. СЬаит, А. Р1а1, апс! М. №ог, “ЫтгасеаЫе Е1ес1готс СазЬ,” Айуапсез т Сгур1о1о§у— СЯУРТО ’88 РгосеесПп§з, 5рпп§ег-Уег1аа. 1990, рр. 319-327. 340. О. СЬаит апс! Т. Рес!егзеп, “ТгапзГеггес! СазЬ Сгоиз 1п 312е,” Айуапсез т Сгур1о1о§у—Е11ЯОСЯУРТ ’92 РгосессНпёз, 5рпп§ег-Уег1ае, 1993, рр. 391-407. 341. О. СЬаит апс! Т. Рес!егзеп, “\Уа11е* Оа1аЬазез \укЬ ОЬзегуегз,” Айуапсез т Сг>'р(о1о§у— СЯУРТО ’92 РгосеесПп^з, 5рпп§ег-Уег1а2_ 1993, рр. 89-105. 342. О. СЬаит апс! I. ЗсЬаитиИег-ВшЬе!, еёз., Зтаг. Саге! 2000, РЫпЬ НоИапс!: Е1зеу1ег Заепсе РиЬПзЬегз, 1989. 343. О. СЬаит апс! Н. уап Ап1\уегреп, “11пс!етаЫг З^паШгез,” Айуапсез т Сгур*о1о§у—СЯУРТС ’89 РгосеесЛп^з, Зрип^ег-УеНа^, 1990, рр. 212- 216. 344. О. СЬаит, Е. уап Неуз1, апс! В. РГигтапп. “СгурЮ§гарЫса!1у 51гоп§ 11пс!еп1аЫе З^паШгез. УпсопсППопаПу Зесиге Гог 1Ье 51§пег,” Аёуапсе< 1п СгурЮ1о§у—СЯУРТО ’91 Ргосееё|поч 5рпп§ег-Уег1а§, 1992, рр. 470-484. 345. Т.М. СЬее, “ТЬе Сгур1апа1уз1з оГ а Ые\у РиЬНс- Кеу Сгур1озуз1ет Вазес! оп Мос!и!гг Кпарзаскз,” Айуапсез 1п СгурЮ1о§у—СЯУРТС ’91 Ргосеес!1п§5, 5рпп^ег>Уег1а§, 1992, рр. 204- 212. 346. Ь. СЬеп, “ОЬПу1оиз $1§па1игез,” Сотри:^ Зесигку—Е50Я1СЗ 94, 5рг1П§ег-Уег1аё, 199- рр.161-172. 347. Ь. СЬеп апс! М. Вигттз1ег, “А РгасПса! Зесгг. УоПп§ ЗсЬете \уЫсЬ А11о\уз Уо1егз Ю АЬз1ат.' СН^АСЯУРТ ’94, Х1сПап, СЫпа, 11-15 Кс> 1994, рр. 100-107. 348. У СЬеп апс! Т.Р. Рекегзеп “Ые\у Сгоир 81&па:игг ЗсЬетез,” Аёуапсез 1п Сгурю1о§>— ЕЕ1ЯОСЯУРТ ’94 РгосеесПп§з, 5ргт&ег-Уег121. 1995, Ю арреаг. 349. СЬепЬи!, “5рес1га1 СЬагас1епзПсз оГ РагПаП}- Вет РипсПопз,” СН1ЫАСЯУРТ ’94, Х|сЛаг_ СЫпа, 11-15 Ыоу 1994, рр. 48-51.
Список литературы 350. V. СЬеругЬоу апс1 В. 8тее!з, “Оп а Раз! Согге1аНоп Аиаск оп СеНат 8!геат С1рЬегз,” Акуапсез т Сгур!о1о§у—Е1ЖОСКУРТ ’91 РгосеесИп^з, 8рпп§ег-Уег1а§, 1991, рр. 176-185. 351. Т.С. СЬеип§, “Мапа§етеп! оРРЕМ РиЬПс Кеу СегНРюаЮз Шт^ Х.500 ОНесЮгу 8етсе: 8оте РгоЫетз апс1 8о1иНопз,” РгосеесНп^з оР !Не 1п!егпе! 8ос1е!у 1994 ХУогкзЬор оп Ые!\Уогк апё 01з!пЬиЮ(1 8уз!ет 8есигНу, ТЬе 1п!ете! 8ос1е!у, 1994, рр. 35-42. 352. О.С. СЫои апс1 ХУ.С. СЬеп, “8есиге ВгоаНсазНп^ Шп^ !Ье 8есиге Ьоск,” ШЕЕ ТгапзасНопз оп 8ойшаге Еп§теепп§, у. 8Е-15, п. 8, Аи§ 1989, рр. 929-934. 353. УЛ. СЬо^е апН Н.8. Шуоап§, “Оп !Ье Сгур!озуз!ет Шп^ ЕШрНс Сигуез,” РгосеесНп^з оР !Не 1993 КогеаЛарап МогкзЬор оп 1пРогтаНоп 8есип!у апс1 СгурЮ^гарЬу, 8еои1, Когеа, 24-26 Ос! 1993, рр. 105-113. 354. В. СЬог апс1 О. ОоМгеюЬ, “К8А/КаЫп Ьеаз! 81§пШсап! В1!з аге 1/2+1/ро1у(1о§ Ы) 8есиге,” Акуапсез т Сгур!о1о§у: Ргосее(Лп§з оР СКУРТО 84, 8ргт§ег-Уег1а§, 1985, рр. 303-313. 355. В. СНог, 8. ОоШ\уаззег, 8. МюаП, апс! В. А\уегЬисЬ, “УепЯаЫе 8есге! 8Ьапп§ апс1 АсЫеут^ 81ти11^пеНу т !Ье Ргезепсе оРРаиПз,” РгосеесПп^з оР !Ье 2б!Ь Аппиа1 ШЕЕ 8утрозшт оп !Ье РоипНаНопз оР Сотри!ег 8с1епсе, 1985, рр. 383-395. 356. В. СЬог апс1 К.Ь. К1уез!, “А Кпарзаск Туре РиЬПс Кеу Сгур1озуз1ет Вазес1 оп АгНЬтеНс т РтНе Р1е1с1з,” Акуапсез т Сгур!о1о§у: РгосеесПп^з оР СКУРТО 84, 8рпп§ег-Уег1а§, 1985, рр. 54-65. 357. Р. СЬпзЮРРегззоп, 8.-А. ЕкаЬИ, V. Рйк, 8. Негда, Р. Ма!Н1а, \У. Рпсе, апс1 Н.-О. МНтап, СгурЮ Шегз’ НапНЬоок: А Ошс!е Рог 1тр1етеп!огз оР СгурЮ^гарЫс РгоЮсНоп ш СотриЮг 8уз!етз, Ыог!Ь НоНапН: Е1зеу1ег 8с1епсе РиЬНзЬегз, 1988. 358. К. С1еуе, “Соп!го11ес1 Сгадиа1 01зс1озиге 8сЬетез Рог Капс1от В Из апд ТЬеН АррПсаПопз,” АПуапсез т СгурЮ1о§у—СКУРТО ’89 РгосеесПп§з, 8рпп§ег-Уег1а§, 1990, рр. 572-588. 359. .Ш. СоЬеп, “1тргоуш§ Рпуасу ш Сгур!о§гарЫс ЕЮсНопз,” Уа1е ОшуегзНу СотриЮг 8аепсе ОераПтеп! ТесЬтса! КероП УАЬЕШЛСЗ/ТК- 454, РеЬ 1986. 360. 1.0. СоЬеп апс1 М.Н. Р1зсЬег, “А КоЬиз! апН УепР^аЫе Сгур!о§гарЫса11у 8есиге Е1есНоп 8сЬеше,” РгосеесНп^з оР !Ье 2б!Ь Аппиа1 ШЕЕ 8утрозшт оп !Ье РоипНаНопз оР СотриЮг 8с1епсе, 1985, рр. 372-382. 361. К. Со1е, “А Мос1е1 Рог 8есип!у т 01з!г1ЬиЮс1 8узЮтз,” СотриЮгз апс! 8есип!у, у. 9, п. 4, Арг 1990, рр. 319-330. 362. Сотр!го11ег Оепега! оР !Ье 11пПес1 8!а!ез, “МаПег оР ЫаНопа! ЮзНШЮ оР 8!апс1аг(1з апП 753 ТесЬпо1о§у—Ше оР Е1ес!готс Оа!а 1п!егсЬап§е ТесЬпо1о§у 1о СгеаЮ УаПё ОЬН§аНопз,” РПе В- 245714, 13 Оес 1991. 363. М.8. Сопп, 1еИег 1о Юе АЬегпа!Ьу, №Нопа1 8есип!у А§епсу, 8ег: 043-111-92,10 Лт 1992. 364. С. СоппеИ, “Ап Апа1уз1з оР Ые^ОЕ8: А МосИГюё Уегзюп оР ОЕ8,” Сгур!о1о§1а, V. 14, п.З,М 1990, рр. 217-223. 365. 8.А. Соок, “ТЬе СотрЮхНу оР ТЬеогет-Ргоут§ РгосеНигез,” РгосеесНп^з оР !Ье ЗгП Аппиа1 АСМ 8утрозшт оп !Ье ТЬеогу оР СотриНп§, 1971, рр. 151-158. 366. К.Н. Соорег апП XV. Раиегзоп, “А ОепегаНхаНоп оР !Ье Кпарзаск МеЙюН 11зт§ Оа1о1з ПеМз,” Сгур!о1о§1а, у. 8, п. 4, Ос! 1984, рр. 343-347. 367. К.Н. Соорег апё XV. РаИегзоп, “К8А аз а ВепсЬтагк Рог МиЫргосеззог МасЫпез,” АПуапсез ш Сгур!о1о§у—АЕ18СКУРТ ’90 РгосеесПп§з, 8рпп§ег-Уег1а2, 1990, рр. 356-359. 368. О. СоррегзтПЬ, “Раз! Еуа1иаНоп оР Ьо^агкЬтз т Р1е1с15 оР СЬагасЮпзНс Т\уо,” ШЕЕ ТгапзасНопз оп 1пРогтаНоп ТЬеогу, V. 30, п. 4, Ы 1984, рр. 587-594. 369. О. СоррегзтПЬ, “Апо!Ьег В1г!Ь<1ау АПаск,” АПуапсез 1п Сгур!о1о§у—СКУРТО ’85 Ргосее(Пп§з, 8рг1п§ег-Уег1а§, 1986, рр. 14-17. 370. О. СоррегзтПЬ, “СЬеаНп§ а! Меп!а1 Рокег,” АПуапсез 1п Сгур!о1о§у—СКУРТО ’85 РгосеесПп§з, 8рпп§ег-Уег1а§, 1986, рр. 104-107. 371. О. СоррегзтПЬ, “ТЬе Кеа1 Кеазоп Рог К1уез1’5 РЬепотепоп,” АПуапсез 1п Сгур!о1о§у— СКУРТО ’85 РгосеесПп^з, 8рг1П§ег-Уег1а§, 1986, рр. 535-536. 372. О. СоррегзтПЬ, “Т\уо Вгокеп НазЬ РипсНопз,” КезеагсЬ Керог! КО 18397, 1ВМ ТЛ. ^а!зоп СепЮг, Ос! 1992. 373. О. СоррегзтПЬ, “ТЬе Оа!а ЕпсгурПоп 8!апПаг(1 (ОЕ8) апП Из 8!геп§!Ь а§а1пз! АИаскз,” ТесЬп1са! Керог! КС 18613, 1ВМ ТЛ. ХУа!зоп СепЮг, Оес 1992. 374. О. СоррегзтПЬ, “ТЬе Оа!а ЕпсгурПоп 8!апс1аг(1 (ОЕ8) апП Из 8!геп§!Ь а§а1пз! Аиаскз,” 1ВМ .1оита1 оР КезеагсЬ апП Оеуе1ортеп1, у. 38, п. 3, Мау 1994, рр. 243-250. 375. О. СоррегзтПЬ, “Аиаск оп !Ье СгурЮ^гарЫс 8сЬете 1Ч1К8-ТА8,” АПуапсез 1п Сгур!о1о§у— СКУРТО ’94 Ргосее(Пп§з, 8рпп§ег-Уег1а§, 1994, рр. 294-307. 376. О. СоррегзтПЬ, регзопа1 соттишсаПоп, 1994. 377. О. СоррегзтПЬ апН Е. Огоззтап, “СепегаЮгз Рог Сег1ат А11ета!1Пё Огоирз \У1!Ь АррПсаПопз Ю Сгур!о§гарЬу,” 81АМ 1оита1 оп АррНеН Ма!ЬетаНсз, V. 29, п. 4, Оес 1975, рр. 624-627. 378. О. СоррегзтПЬ, Н. Кга\усгук, апс1 У. Мапзоиг, “ТЬе 8Ьппкт§ СепегаЮг,” АПуапсез 1П
754 Прикладная криптография Сгур1о1о§у—СКУРТО ’93 Ргосеейш§з, 8рпп§ег-Уег1а§, 1994, рр. 22-39. 379. и. СоррегзпПШ, А. ОсИукго, апс! К. 8сЬгоерре1, “01зсге1е Ьо§апШтз т ОР(р),” А1§опШпПса, V. 1, п. 1, 1986, рр. 1-16. 380. О. СоррегзгшШ апс1 Р. Ко§а\уау, “8ой\уаге ЕРПЫеШ Рзеийо Капйот РипсНоп апс! Ше 1!зе ТЬегеоР Рог ЕпсгурПоп,” 11.8. Ра1еп1 репШп§, 1995. 381. О. СоррегзпПШ, Т 81ет, апс! 8. Уаийепау, “АПаскз оп Ше В1гаНопа1 81§паШге ЗсЬетез,” Айуапсез т СгурЮ1о§у—СКУРТО ’93 РгосееШп§з, 8рпп§ег-Уег1а§, 1994, рр. 435-443. 382. У. Согйопшег апс! Т-1 (ЗшзяиаЮг, ес!з., САК018 ’94—Ргосеейт§з оР Ше Р1гз1 8таН Сагс1 КезеагсЬ апс1 Ас!уапсес! АррПсаНоп СопРегепсе, ЬШе, Ргапсе, 24-26 Ос1 1994. 383. С. Соиугеиг апс1 Т-Т (ЗшзциаЮг, “Ап МгойисНоп 1о Раз1 ОепегаНоп оР Ьаг§е Рпте ЫитЬегз,” РЫНрз .1оигпа1 КезеагсЬ, у. 37, п. 5-6, 1982, рр. 231-264. 384. С. Соиугеиг апс1 Т-Т С^шзяиаЮг, “Ап 1п1гойисНоп Ю Раз! ОепегаНоп оР Ьаг§е Рпте ЫитЬегз,” РЬШрз Доита1 КезеагсЬ, у. 38, 1983, р. 77. 385. С. Соуеуои апс! КЮ. МасРЬегзоп, “Роипег Апа1уз18 0р НшРогт Капс!от ЫитЬег ОепегаЮгз,” 1оигпа1 оР 1Ье АСМ, у. 14, п. 1, 1967, рр. 100-119. 386. Т.М. Соуег апс1 К.С. Клп§, “А Сопуег^еп! ОатЬПп§ ЕзНтаЮ оР Ше Еп1гору оР Еп§ПзЬ,” ШЕЕ ТгапзасНопз оп 1пРогтаНоп ТЬеогу, V. ГГ- 24, п. 4, М 1978, рр. 413-421. 387. К.ТР. Сгатег апс1 Т.Р. Редегзеп, “1тргоуес1 Рпуасу т \Уа11е1з \уПЬ ОЬзегуегз,” Айуапсез т СгурЮ1о§у—Е1ЖОСКУРТ ’93 Ргосеейт§з, Зрпп§ег-Уег1а§, 1994, рр. 329-343. 388. К.Е. Сгапс1е11, “МеШой апс! АррагаШз Рог РиЬНс Кеу ЕхсЬап§е т а СгурЮ§гарЫс 8уз1ет,” 11.8. Ра1еп1 #5,159,632, 27 Ос1 1992. 389. С. Сгёреаи, “А 8есиге Рокег РгоЮсо! ТЬа1 МтМгез Ше ЕРРес! оР Р1ауег СоаПНопз,” Айуапсез т СгурЮ1о§у—СКУРТО ’85 Ргосеейт§з, Зрпп§ег-Уег1а§, 1986, рр. 73-86. 390. С. Сгёреаи, “А 2его-Кпо\у1ей§е Рокег РгоЮсо1 Ша1 АсЫеуез СопР1йепНаП1у оР Ше Р1ауегз’ 81га1е§у, ог Но\у 1о АсЫеуе ап Е1ес1гопю Рокег Расе,” Айуапсез т СгурЮ1о§у—СКУРТО ’86 Ргосеейт§з, 8рпп§ег-Уег1а§, 1987, рр. 239-247. 391. С. Сгёреаи, “Еяшуа1епсе ВеНуееп Т\уо Пауоигз оР ОЬПуюиз ТгапзРег,” Айуапсез т СгурЮ1о§у—СКУРТО ’87 Ргосеейш^з, 8рпп§ег-Уег1а§, 1988, рр. 350-354. 392. С. Сгёреаи, “Соггес! апй РпуаЮ КейисНопз атоп§ ОЬПуюиз ТгапзРегз,” РЬЮ. ШззеПаНоп, ОераНтеп! оР Е1ес1пса! Еп§теепп§ апй Сотри1ег 8с1епсе, МаззасЬизеИз 1пзНШ1е оР ТесЬпо1о§у, 1990. 393. С. Сгёреаи, “(ЗиапШт ОЬПуюиз ТгапзРег,” 1оигпа1 оРМойет ОрНсз, V. 41, п. 12, Оес 1994, рр. 2445-2454. 394. С. Сгёреаи апй I. КШап, “АсЫеут§ ОЬПуюиз ТгапзРег Нзт§ ХУеакепей ЗесигЬу АззитрНопз,” Ргосеейт§з оР Ше 29Ш Аппиа1 8утроз1ит оп 1Ье РоипйаНопз оР Сотри1ег 8с1епсе, 1988, рр. 42-52. 395. С. Сгёреаи апй У КШап, “ХУеакепт§ 8есип1у АззитрНопз апй ОЬПуюиз ТгапзРег,” Айуапсез т Сгурю1о§у—СКУРТО ’88 РгосееШп§з, 8рпп§ег-Уег1а& 1990, рр. 2-7. 396. С. Сгёреаи апй Ь. 8а1уаП, “(ЗиапШт ОЬПуюиз Ми1иа1 ШепНРюаПоп,” Айуапсез т СгурЮ1о§у— Е11КОСКУРТ ’95 РгосееШп^з, 8ргт§ег-Уег1ав, 1995, рр. 133-146. 397. А. Сип^ег, Н. ВоппепЬег§, К. 21ттегтапп, N. Ре1Ьег, Н. КаезНп апй XV. РюЫпег, “У1ЫС1: УЬ81 1тр1етеп1аПоп оР Ше Ие\у В1оск С1рЬег ЮЕА,” Ргосеейт§з оР ШЕЕ С1СС ’93, 8ап 01е§о, СА, Мау 1993, рр. 15.5.1-15.5.4. 398. А. Сип§ег апй В. ЗшЬег, “ЗресШсаНоп Рог Ше ЮЕА СЫр,” ТесЬшса1 КероП N0. 92/03,1пзПШ1 Гйг 1п1е§пеНе ЗузЮте, ЕТН 2ипсЬ, РеЬ 1992. 399. Т. Сизюк, “Воо1еап РипсПопз 8аНз1ут§ а РП§Ьег Огйег 81пс1 Ауа1апсЬе СгПепоп,” Айуапсез т СгурЮ1о§у—Е11КОСКУРТ ’93 Ргосеейт§з, 8рпп§ег-Уег1а§, 1994, рр. 102-117. 400. Т.ХУ. Сиз1ск апй М.С. ХУоой, “ТЬе КЕЭОС-И Сгур1озуз1ет,” Айуапсез т Сгурю1о§у— СКУРТО ’90 Ргосеей1п§з, 8рг1п§ег-Уег1а§. 1991, рр. 545-563. 401. СуНпк СогрогаПоп, СуПпк СогрогаНоп уз. КЗА Эа1а 8есиг11у, 1пс., ОуП АсПоп N0. С94-02332- СХУ, ШЬей 31а1ез 01з1г1с: СоиП Рог Ше ЫоПЬет 0131пс1 оРСаНРогп1а, 30 Шп 1994. 402. I. Оаетап, “С1рЬег апй НазЬ РипсНоп Оезщп,” РЬЮ. ТЬез18, КаШоПеке ип1Уегз11е11 Ьеиуеп, Маг 95. 403. 3. Оаетап, А. Воззе1аегз, К. ОоуаеПз, апй У Уапйе\уа11е, “С0Ш510ПЗ Рог 8сЬпогг’з НазЬ РипсНоп РРТ-НазЬ РгезеШей а1 СгурЮ ’91,” Айуапсез 1п Сгурю1о§у—А81АСКУРТ ’91 Ргосеей1п§з, Зрпп§ег-Уег1а§, 1993, рр. 477-480. 404. Т Оаетап, К. ОоуаеПз, апй У Уапйе\уа11е, “А Ргате\УОгк Рог Ше Оез1§п оР Опе-ХУау НазЬ РипсПопз 1пс1ийт§ Сгур1апа1уз1з оР Оат§йгй’з Опе-ХУау РипсНоп Вазей оп Се11и1аг АиЮта1а,” Айуапсез 1п СгурЮ1о§у—А81АСКУРТ ’91 Ргосеей1п§з, 8рг1п§ег-Уег1а§, 1993, рр. 82-96. 405. У Оаетап, К. ОоуаеПз, апй Т Уапйе\уа11е, “А Нагй\уаге Оез1§п Мойе1 Рог СгурЮ§гарЫс А1§ог1Штз,” Е80К1С8 92, Ргосеей1п§з оР Ше 8есопй Еигореап 8утроз1ит оп КезеагсЬ т
Список литературы СотриЮг ЗесигИу, 5ргт§ег-Уег1а§, 1992, рр. 419-434. 406. Т Оаетеп, К. ОоуаеПз, апс! I Уапке\уа11е, “В1оск С1рЬег5 Вазек оп Мос1и1аг АпШтеНс,” Ргосеект§з оР Ше Згк Зутрозшт оп 8!а!е апк Рго^гезз оР ЯезеагсЬ т Сгур!о§гарЬу, Яоте, Иа1у, 15-16 РеЬ 1993, рр. 80-89. 407. I. Оаетеп, К. ОоуаеПз, апс1 Т Уапке^аПе, “Раз! НазЬт^ ВоШ т Нагк\уаге апс1 5ой\уаге,” ргезепЮк а! Ше гитр зеззюп оР СЯУРТО ’93, Аи§ 1993. 408. Т Оаетап, Я. ОоуаеПз, апс1 Т Уапке\уа11е, “ЯезупсЬготгаНоп ^еакпеззез т ЗупсЬгопоиз 5!геат С1рЬегз,” Акуапсез т Сгур!о1о§у— ЕШОСЯУРТ ’93 Ргосеект§з, 8рпп§ег-Уег1а§, 1994, рр. 159-167. 409. Т Оаетап, Я. ОоуаеПз, апс1 5. Уапке^аПе, “\Уеак Кеуз Рог ЮЕА,” Акуапсез ш Сгур!о1о§у—СЯУРТО ’93 Ргосеект§з, Зрпп§ег-Уег1а§, 1994, рр. 224-230. 410. I. Оаетеп, Я. ОоуаеПз, апк .1. Уапке\уа11е, “А Ые\у АрргоасЬ Ю В1оск С1рЬег Оез1§п,” Раз! ЗоЙлуаге ЕпсгурПоп, СатЬпк^е 8есип!у \УогкзЬор Ргосеект^з, Зрпп§ег-Уег1а§, 1994, рр. 18-32. 1 411. 2.-0. Ош, “РгооР оР ЯиерреГз Ьтеаг Сотр1ехку Со^есЮге,” ШЕЕ ТгапзасНопз оп 1пРогтаНоп ТЬеогу, у. ГГ-32, п. 3, Мау 1986, рр. 440-443. 412. 1.В. Оат§&гк, “СоШзюп Ргее НазЬ РипсНопз апк РиЬПс Кеу 51§па!иге ЗсЬетез,” Акуапсез т Сгур!о1о§у—ЕШОСЯУРТ ’87 Ргосеект§з, 8ргт§ег-Уег1а§, 1988, рр. 203-216. 413. 1.В. Оат§йгк, “Раутеп! Зуз1етз апк СгекепНа1 МесЬатзтз \уИЬ РгоуаЫе Зесигку А§атз! АЬизе Ьу 1пк1у1киа1з,” Акуапсез т Сгур!о1о§у— СЯУРТО ’88 Ргосеект^з, 5рпп§ег-Уег1а§, 1990, рр. 328-335. 414. 1.В. Оат§&гк, “А Оез1§п Рппс1р1е Рог НазЬ РипсНопз,” Акуапсез т Сгур!о1о§у—СЯУРТО ’89 Ргосеект§з, 8рпп§ег-Уег1а§, 1990, рр. 416— 427. 415. 1.В. Оат§йгк, “РгасНса1 апк РгоуаЫу Зесиге Яе1еазе оР а Зесге! апк ЕхсЬап§е оР ЗщпаЮгез,” Акуапсез т Сгур!о1о§у—ЕШОСЯУРТ ’93 Ргосеект^з, Зрпп§ег-Уег1а§, 1994, рр. 200-217. 416. 1.В. Оат^йгк апк Ь.Я. Кпикзеп, “ТЬе Вгеакт§ оР Ше АЯ НазЬ РипсНоп,” Акуапсез т Сгур!о1о§у—Е1ЖОСЯУРТ ’93 Ргосеект^з, 8рпп§ег-Уег1а§, 1994, рр. 286-292. 417. 1.В. Оат^йгк апк Р. Ьапкгоск, “1тргоуек Воипкз Рог Ше ЯаЫп Рпта1ку Тез!,” Сгур!о§гарЬу апк СоШп§ III, МЛ. Оап1еу, ек., ОхРогк: С1агепкоп Ргезз, 1993, рр. 117-128. 418. 1.В. Оат^йгк, Р. Ьапкгоск апк С. Ротегапсе, “Ауега^е Сазе Еггог ЕзНтаЮз Рог 1Ье 81гоп§ РгоЬаЫе Рпте Тез1,” МаШетаНсз оР Сотри1аНоп, у. 61, п. 203,ЛН 1993, рр. 177-194. 755 419. Н.Е. Оате1з, 1г., 1е!!ег № Оа!арго ЯезеагсЬ СогрогаНоп ге§агкт§ ССЕР, 23 Оес 1985. 420. Н. ОауепроП, ТЬе №§Ьег АпШтеНс, Ооуег Воокз, 1983. 421. О.1. Оау1ка, “1пуегзе оР Е1етеп!з оР а ОаЫз Р1е1к,” Е1ес!готсз ЬеПегз, у. 8, п. 21, 19 Ос! 1972, рр. 518-520. 422. О.1. ОаУ1ка, “НеИтап’з ЗсЬете Вгеакз ОЕЗ т Из Вазю Рогт,” ШЕЕ Зрескит, у. 16, п. 7, Ди1 1979, р. 39. 423. О.1. Оау1ка, “СЬозеп 31§па!иге Сгур!апа1уз1з оР !Ье Я8А (М1Т) РиЬПс Кеу Сгур!озуз!ет,” ТесЬтса1 ЯероП ТЯ-С8-82-2, ОераПтеп! оР ЕЕС8, Нтуегзку оРМзсопзт, 1982. 424. О.1. ОаУ1ка апк О.О. \Уакег, “А РиЬПс Кеу Апа1о§ Сгур!озуз!ет,” Акуапсез т Сгур!о1о§у—ЕШОСЯУРТ ’87 РгосееШп^з, 8рпп§ег-Уег1а§, 1988, рр. 143-147. 425. О.1. Оау1ка, О. ШеИз, апк I. Кат, “А Оа!аЬазе ЕпсгурПоп Зуз!ет \укЬ ЗиЬкеуз,” АСМ ТгапзасНопз оп Оа!аЬазе 8уз!етз, у. 6, п. 2,Шп 1981, рр. 312-328. 426. 0.\У. Оау1ез, “Арр1ут§ !Ье Я8А 01§1!а1 81§па!иге !о Е1ес!гошс МаП,” Сотри!ег, у. 16, п. 2, РеЬ 1983, рр. 55-62. 427. 0.\У. Оау1ез, “Зоте Яе§и1аг РгореП1ез оР !Ье ОЕЗ,” Акуапсез т Сгурю1о§у: Ргосеект^з оР СгурЮ 82, Р1епит Ргезз, 1983, рр. 89-96. 428. 0.\У. Оау1ез, “А Мезза^е АиШепНсаНоп А1§опШт ЗикаЫе Рог а МатРгате СотриЮг,” Акуапсез т Сгур!о1о§у: Ргосеект§з оР СгурЮ 82, 8рпп§ег-Уег1а§, 1985, рр. 393-400. 429. 0.\У. ОаУ1ез апк 8. МигрЬу, “Ракз апк Тпр1е!з оР ОЕЗ З-Ьохез,” СгурЮ1о§1а, V. 8, п. 1, 1995, рр. 1-25. 430. 0.\У. Оау1ез апк О.1.Р. Рагкт, “ТЬе Ауега§е 312е оР Ше Кеу Зкеат \п Ои!ри! РеекЬаск ЕпарЬегтеп!,” СгурЮ§гарЬу, Ргосеек1п§з оР Ше \УогкзЬор оп СгурЮ^гарЬу, Виг§ РеиегзЮт, Оегтапу, МагсЬ 29-АргП 2, 1982, 5рпп§ег- Уег1а§, 1983, рр. 263-279. 431. 0.\У. Оау1ез апк О.1.Р. Рагк1п, “ТЬе Ауега§е 31ге оР Ше Кеу 8!геат 1п Ои!ри! РеекЬаск Моке,” Акуапсез 1п СгурЮ1о§у: Ргосеек1п§з оР СгурЮ 82, Р1епит Ргезз, 1983, рр. 97-98. 432. 0.\У. Оау1ез апк ^.Ь. Рпсе, “ТЬе АррНса!10п оР 01§Па1 31§па!игез Вазек оп РиЬНс-Кеу СгурЮзузЮтз,” Ргосеект^з оР Ше РПШ 1пЮтаНопа1 СотриЮг СоттитсаНопз СопРегепсе, Ос! 1980, рр. 525-530. 433 . 0.\У. ОаУ1ез апк ^.Ь. Рпсе, “ТЬе АррНсаНоп оР 01§Па1 81§па!игез Вазек оп РиЬПс-Кеу СгурЮзузЮтз,” Ыа!10па1 РЬуз1са1 ЬаЬогаЮгу ЯероП ОИАСЗ 39/80, Оес 1980. 434. 0.\У. ОаУ1ез апк ^.Ь. Рпсе, “01§ка1 3|§па!иге— Ап 11рка!е,” Ргосеек1п§з оР 1пЮта!10па1 СопРегепсе
756 Прикладная криптография оп СотриЮг СоттишсаНопз, Зуйпеу, Ос11984, ЫоПЬ НоИапй: Е1зеу1ег, 1985, рр. 843-847. 435. ОЖ Оау1ез апд \УХ. Рпсе, Зесип1у Гог СотриЮг №1\Уогкз, зесопй ейШоп, ЮЬп \\Н1еу & Зопз, 1989. 436. М. Оаую, У. Оезтес11, М. Роззергег, К. ОоуаеПз, Т Ни1зЬгозсЬ, Р. Ыеи^епз, Р. РНе1,3.-1. (ЗшзяиаЮг, I. Уапс1е\уа11е, апд 8. ^оиЮгз, “Апа1уНса1 СЬагасЮпзНсз оГ 1Ье Эа1а ЕпсгурПоп Зтпйагй,” Айуапсез т СгурЮ1о§у: Ргосеейт§з оГСгурЮ 83, Р1епит Ргезз, 1984, рр. 171-202. 437. М. Оаую, У. Оезтей1, 3. ОоиЬеН, Р. НоогпаеН, апй 3.-3. (ЭшзяиаЮг, “ЕГПаеп! Нагй\уаге апй ЗоШуаге 1тр1етепШюп оГ 1Ье ОЕЗ,” Айуапсез т СгурЮ1о§у: Ргосеейт^з оГ СКУРТО 84, Зрпп§ег-Уег1а§, 1985, рр. 144-146. 438. М. Оаую, У. Оезтей1, апй 3.-3. (ЗшзяиаЮг, “Ргора§аНоп СЬагасЮпзНсз оГ 1Ье Е)Е8,” Айуапсез т Сгурю1о§у: Ргосеейт§з оГ ЕШОСКУРТ 84, 8рг1п§ег-Уег1а§, 1985, 62-73. 439. О. ОаУ13, К. Шака, апй Р. РепзЮгтасЬег, “СгурЮ^гарЫс Капйотпезз Ггот АН ТигЬи1епсе т ЕИзк Ьпуез,” Айуапсез т СгурЮ1о§у— СКУРТО ’94 Ргосеейт^з, 8рпп§ег-Уег1а§, 1994, рр. 114-120. 440. З.А. ОаУ13, О.В. Но1йЬпй§е, апй 0.3. 31ттопз, “81а1из КероП оп РасЮпп§ (а1 1Ье Запй1а Ыа110па1 Ьа^огаЮпез),” Айуапсез т СгурЮ1о§у: Ргосеейт§з оГ СгурЮ 84, 8рпп§ег-Уег1а§, 1985, рр. 183-215. 441. К.М. ОаУ13, “ТЬе Эа1а ЕпсгурПоп ЗЮпйагй т РегзресНуе,” СотриЮг ЗесигИу апй 1Ье Оа1а ЕпсгурПоп ЗЮпйагй, Ыа11опа1 Вигеаи оГ ЗЮпйагйз Зрес1а1 РиЬНсаНоп 500-27, РеЬ 1978. 442. Е. Оа\У50п апй А. С1агк, “Сгур1апа1уз1з оГШ1уегза1 Ьо§1с Зеяиепсез,” Айуапсез т СгурЮ1о§у— ЕШОСКУРТ ’93 РгосееЙ1П§з, 8рпп§ег-Уег1а§, Ю арреаг. 443. М.Н. Оажзоп апй 8.Е. Тауагез, “Ап Ехрапйей 8е1 оГ Оезщп СпЮпа Гог ЗиЬзНюНоп Вохез апй ТЬеН Т1зе т 81геп§*Ьепт§ ОЕЗ-Ыке СгурЮзузЮтз,” ШЕЕ РасШс К1т СопГегепсе оп СоттитсаНопз, СотриЮгз, апй 81§па1 Ргосеззт§, УгсЮпа, ВС, Сапайа, 9-10 Мау 1991, рр. 191-195. 444. М.Н. Оа\узоп апй 8.Е. Тауагез, “Ап Ехрапйей 8е1 оГ 8-Вох Оез1§п Сг11ег1а Вазей оп 1пГогтаНоп ТЬеогу апй Из Ке1аНоп Ю ОИГегепНа1-Нке АПаскз,” Айуапсез т СгурЮ1о§у—ЕШОСКУРТ ’91 Ргосеейт^з, Зрпп§ег-Уег1а§, 1991, рр. 352-367. 445. С.А. Оеауоигз, “11шску Рот1з т Сгур1апа1уз1з,” СгурЮ1о§1а, у. 1, п. 1, 1977, рр. 46-68. 446. С.А. Оеауоигз, “ТЬе В1аск СЬатЬег: А Со1итп; Но\у 1Ье ВпНзЬ Вгоке Ет§та,” Сгурю1о§1а, у. 4, п. 3,3и1 1980, рр. 129- 132. 447. С.А. Оеауоигз, “ТЬе В1аск СЬатЬег: А Со1итп; Ьа МёПюйе йез ВвЮпз,” СгурЮ1о§1а, V. 4, п. 4, Ос1 1980, рр. 240-247. 448. С.А. Оеауоигз апй Ь. КгиЬ, МасЫпе СгурЮ^гарЬу апй Мойегп Сгур1апа1уз1з, Ыопуоой МА: АПесЬ Ноизе, 1985. 449. З.М. ОеЬаигепНз, “А РиНЬег ^еакпезз т Юе Соттоп Мойи1из РгоЮсо1 Гог 1Ье К8А СгурЮзузЮт,” Сгурю1о§1а, у. 8, п. 3, 3и1 1984, рр. 253-259. 450. Р. Ое1заПе, У. Оезтей!, А. Ой1угко, апй Р. РИе!, “Раз1 Сгур1апа1уз18 оГ 1Ье Ма1зитоЮ-1та1 РиЬПс-Кеу ЗсЬете,” Айуапсез т Сгурю1о§у: Ргосеейт^з оГ ЕШОСКУРТ 84, 8рпп§ег- Уег1а§, 1985, рр. 142-149. 451. Р. Ое1заПе апй Р. РНе1, “Соттеп! оп ‘ЕхЮпзюп оГ К8А СгурЮзЮисШге: А ОаЫз АрргоасЬ’,” Е1есЮотсз ЬеПегз, у. 18, п. 13, 24 Зип 1982, рр. 582-583. 452. К. ОеМШо, N. ЬупсЬ, апй М. МетП, “СгурЮ^гарЫс РгоЮсо1з,” Ргосеейт^з оГ 1Ье 141Ь Аппиа1 8утрозшт оп 1Ье ТЬеогу оГ Сотри1т§, 1982, рр. 383-400. 453. К. ОеМШо апй М. МеггЩ, “РгоЮсо1з Гог Оа1а 5есип1у,” СотриЮг, у. 16, п. 2, РеЬ 1983, рр. 39-50. 454. N. ОетуЙсо, “А №\у ЕШрИс Сигуе Вазей Апа1о§ие оГ КЗА,” Айуапсез т СгурЮ1о§у— Е1ЖОСКУРТ ’93 Ргосеейт^з, 8рг1п§ег-Уег1а§, 1994, рр. 40-49. 455. О.Е. Оеппт§, “Зесиге Регзопа! СотриНп§ 1П ап 1пзесиге Nе1\VО^к,” Соттишса1юпз оГ 1Ье АСМ, у. 22, п. 8, Аиё 1979, рр. 476-482. 456. О.Е. Оеппт& СгурЮ^гарЬу апй Оа1а 8есиг11у, АйЙ18оп-^ез1еу, 1982. 457. О.Е. Оептп§, “РгоЮсПп§ РиЬНс Кеуз апй 81§паШге Кеуз,” СотриЮг, у. 16, п. 2, РеЬ 1983, рр. 27-35. 458. О.Е. Оеппт§, ‘Т%11а1 81§паШгез \укЬ КЗА апй ОШег РиЬНс-Кеу СгурЮзузЮтз,” СоттишсаНопз оГ1Ье АСМ, у. 27, п. 4, Арг 1984, рр. 388-392. 459. О.Е. Оеппт§, “ТЬе Оа1а ЕпсгурПоп 81апйагй: р1Йееп Уеагз оГ РиЬНс ЗсгиНпу,” Ргосеей1п§з оГ 1Ье 31Х1Н Аппиа1 СотриЮг Зесиг11у АррПсаНопз СопГегепсе, ШЕЕ СотриЮг 8ос1е1у Ргезз, 1990. 460. О.Е. Оеппт§, “ТЬе СНррег СЫр: А ТесЬп1са1 Зиттагу,” иприЬПзЬей тапизсг1р1,21 Арг 1993. 461. О.Е. Оепшп§ апй О.М. Зассо, “Т1тез1атрз 1п Кеу 01з1пЬиНоп РгоЮсо1з,” Соттип1саНопз оГ 1Ье АСМ, у. 24, п. 8, Аи§ 1981, рр. 533-536. 462. О.Е. Оепшп§ апй М. Згтй, “Кеу Езсго\ут§ Тойау,” ШЕЕ Соттип1саНопз Ма^агте, V. 32, п. 9, Зер 1994, рр. 58-68. 463. Т. Оеппу, В. Оойзоп, А.К. ЬепзЮа, апй М.З. Мапаззе, “Оп 1Ье РасЮг12аНоп оГ КЗА-120,”
Список литературы 757 Айуапсез ш Сгур!о1о§у—СЯУРТО ’93 Ргосеейт^з, 8рпп§ег-Уег1а§, 1994, рр. 166-174. 464. \У.Р. Оеппу, “ЕпсгурНопз Т1з1п§ 1лпеаг апй Ыоп- Ыпеаг Сойез: 1тр1етеп!аНопз апй Зесигку СопзМегаНопз,” РЬ.О. ШззеНаПоп, ТЬе Сеп!ег Гог Айуапсей Сотри!ег 8!ий1ез, Ошуегзку оГ 8ои1Ьет Ьошз1апа, 8рпп§ 1988. 465. ОераПшеп! оГ ОеГепзе, “ОераПшеп! оГ ОеГепзе Тгиз!ей Сотри!ег 5уз!ет Еуа1иаНоп Сгкепа,” ООО 5200.28-5ТО, Оес 1985. 466. ОераПшеп! оГ 81а!е, “1п!егпаНопа1 ТгаГПс ш Агтз Яе§и1аНопз (1ТАЯ),” 22 СРЯ 120-130, ОГПсе оГМитНопз Соп!го1, Ыоу 1989. 467. ОераПшеп! оГ 8!а!е, “ОеГепзе Тгайе Яе§и1а!юпз,” 22 СРЯ 120-130, ОРПсе оР ОеГепзе Тгайе Соп!го1з, Мау 1992. 468. ОераПшеп! оГ 1Ье Тгеазигу, “Е1ес!гошс Рипйз апй ЗесипНез ТгапзГег РоИсу,” ОераПшеп! оГ !Ье Тгеазигу ОкесНуез Мапиа1, СНар1ег ТО 81, ЗесНоп 80, ОераПшеп! оГ !Ье Тгеазигу, 16 Аи§ 1984. 469. ОераПшеп! оГ !Ье Тгеазигу, “Сгкепа апй Ргосейигез Гог ТезНп§, Еуа1иаНп§, апй СеНкуш§ Мезза§е Аи!ЬепНсаНоп ОеЫзюпз Гог Рейега1 Е.Р.Т. 11зе,” ОераПшеп! оГ !Ье Тгеазигу, 1 Мау 1985. 470. ОераПшеп! оГ !Ье Тгеазигу, “Е1ес!гошс Рипйз апй ЗесипНез ТгапзГег РоЬсу—Мезза§е Аи!ЬепНсаНоп апй ЕпЬапсей 8есип!у,” Огйег N0. 106-09, ОераПшеп! оГ !Ье Тгеазигу, 2 Ос! 1986. 471. РЦОоЬЬеНт, “А Зигуеу оп !Ье Сопз!гисНоп оГ Веп! РипсПопз,” К.1Т Ьеиуеп \УогкзЬор оп Сгур!о§гарЫс А1§огкНшз, 8рпп§ег-Уег1а§, 1995, Ю арреаг. 472. В. Оойзоп апй А.К. Ьепз!га, “ЫРЗ \укЬ Роиг Ьаг§е Рптез: Ап Ехр1оз1Уе Ехрептеп!,” йгай тапизспр!. 473. О. Оо1еу апй А. Уао, “Оп !Ье Зесигку оГРиЬИс- Кеу Рго!осо1з,” СоттитсаНопз оГ !Ье АСМ, у. 29, п. 8, Аи§ 1983, рр. 198-208. 474. Т Оотт^о-Реггег, “РгоЬаЬШзНс Аи!ЬепНсаНоп Апа1уз1з,” САЯ013 94—Ргосеейт^з оГ !Ье Ркз! ЗтаП Сагй ЯезеагсЬ апй АррПсаНопз СопГегепсе, Ше, Ргапсе, 24-26 Ос! 1994, рр. 49-60. 475. Р. йе Яооу, “Оп !Ье 8есип!у оГ !Ье ЗсЬпогг ЗсЬете 11зт§ Ргергосеззт§,” Айуапсез т Сгур!о1о§у—Е1ЖОСЯУРТ ’91 Ргосеейт§з, 8рпп§ег-Уег1а§, 1991, рр. 71-80. 476. А. Ое ЗапПз, О. 01 Сгезсепго, апй О. Регз1апо, “Зесге! 8Ьапп§ апй РегГес! 2его Кпо\у1ей§е,” Айуапсез ш Сгур!о1о§у—СЯУРТО ’93 Ргосеейш^з, 8рпп§ег-Уег1а§, 1994, рр. 73-84. 477. А. Ое ЗапПз, 8. МюаП, апй О. Ретапо, “Ыоп- 1п!егасНуе 2его-КпоМей§е РгооГ Зуз1етз,” Айуапсез т Сгур!о1о§у—СЯУРТО ’87 Ргосеейт^з, 8рпп§ег-Уег1а§, 1988, рр. 52-72. 478. А. Ое ЗапПз, 8. МюаП, апй О. Регз1апо, “Ыоп- 1п!егасНуе 2его-Кпо\у1ей§е \укЬ Ргергосеззт§,” Айуапсез т Сгур!о1о§у—СЯУРТО ’88 Ргосеейт§з, 8рпп§ег-Уег1а§, 1990, рр. 269-282. 479. У. Оезтей!, “МЬа! Наррепей \укЬ Кпарзаск Сгур!о^гарЫс ЗсЬетез” РегГогтапсе Ыткз т СоттишсаНоп, ТЬеогу апй РгасНсе, ЫАТО А51 Зепез Е: АррПей Заепсез, V. 142, К1и\уег Асайегшс РиЬИзЬегз, 1988, рр. 113-134. 480. У. Оезтей!, “8иЬПтта1-Ргее Аи!ЬепНсаНоп апй З^паШге,” Айуапсез т Сгур!о1о§у— Е1ЖОСЯУРТ ’88 Ргосеей1п§з, 8рпп§ег-Уег1а§, 1988, рр. 23-33. 481. У. Оезтей!, “АЬизез т Сгур!о§гарЬу апй Ноуу !о р1§Ь! ТЬет,” Айуапсез т Сгур!о1о§у— СЯУРТО ’88 Ргосеейт^з, 8рпп§ег-Уег1а§, 1990, рр. 375-389. 482. У. Оезтей! апй М. Вигтез!ег, “Ап ЕГПЫеп! 2его-Кпо\у1ей§е ЗсЬете Гог !Ье 01зсге!е Ьо§агкЬт Вазей оп 8тоо!Ь МитЬегз,” Айуапсез т Сгур!о1о§у— А81АСЯУРТ ’91 Ргосеейт§з, 8рпп§ег-Уег1а§, 1993, рр. 360-367. 483. У. Оезтей! апй У. Ргапке1, “ТЬгезЬоШ Сгур!о- зуз!ешз,” Айуапсез т Сгур!о1о§у—СЯУРТО ’89 Ргосеейт^з, 5рпп§ег-Уег1а§, 1990, рр. 307-315. 484. У. Оезтей! апй У. Ргапке1, “ЗЬагей ОепегаНоп оГ Аи!ЬепНсаНоп апй З^паШгез,” Айуапсез т Сгур!о1о§у—СЯУРТО ’91 Ргосеейт§з, 8рпп§ег-Уег1а§, 1992, рр. 457-469. 485. У. Оезтей!, С. ОоиНег, апй 8. Веп§ю, “8реаа1 Е^зез апй АЬизез оГ !Ье Р1а!-8Ьатк РаззроП Рго!осо1,” Айуапсез т Сгур!о1о§у—СЯУРТО ’87 Ргосеейт^з, 8рпп§ег-Уег1а§, 1988, рр. 21-39. 486. У. Оезтей! апй А.М. Ой1укго, “А СЬозеп Тех! А!!аск оп !Ье ЯЗА Сгур!озуз!ет апй Зоте 01зсге!е Ьо§агкЬт РгоЫетз,” Айуапсез т Сгур!о!о§у—СЯУРТО ’85 Ргосеейт§з, 8ргт§ег-Уег1а§, 1986, рр. 516-522. 487. У. Оезтей!, Т-1 (5шзчиа!ег, апй М. Оаую, “Оерепйепсе оГ Ои!ри! оп 1при! т ОЕЗ: ЗтаП Ауа1апсЬе СЬагас!епзНсз,” Айуапсез т Сгур!о1о§у: Ргосеейт^з оГ СЯУРТО 84, 5рпп§ег-Уег1а& 1985, рр. 359-376. 488. У. Оезтей!, Т Уапйе\уа11е, апй Я. ОоуаеПз, “СпНса1 Апа1уз18 оГ !Ье 8есиг1!у оГ Кпарзаск РиЬНс Кеу А1§огкЬтз,” ШЕЕ ТгапзасНопз оп 1пГогтаНоп ТЬеогу, V. ГГ-30, п. 4, 1и1 1984, рр. 601-611. 489. У. Оезтей! апй М. Уип& “^еакпеззез оГ ШйешаЫе 81§па!иге ЗсЬетез,” Айуапсез т Сгур!о1о§у—ЕЕ1ЯОСЯУРТ ’91 Ргосеейт^з, Зрпп§ег-Уег1а§, 1991, рр. 205-220. 490. \У. ОкПе, 1ес!иге а! ШЕЕ 1пГогтаНоп ТЬеогу \УогкзЬор, ИЬаса, Ы.У., 1977.
758 Прикладная криптография 491. №. 01рПе, “СгурЮ^гарЫс ТесЬпо1о§у: РШЮеп Уеаг Рогесаз!,” ВЫЯ 1пс., 1ап 1981. 492. №. 01Ше, “ТЬе Ркз* Теп Уеагз оР РиЬНс-Кеу СгурЮ§гарЬу,” Ргосеект§з оР 1Ье ШЕЕ, V. 76, п. 5, Мау 1988, рр. 560-577. 493. №. 01РГ1е, “АиШепНсаЮк Кеу ЕхсЬап^е апс! Зесиге 1пЮгасНуе СоттишсаПоп,” Ргосеект§з оРЗЕС1Ж1СОМ ’90, 1990. 494. №. 01РПе, “ТЬе Ркз1 Теп Уеагз оР РиЬПс-Кеу СгурЮ§гарЬу,” ш Соп1етрогагу СгурЮ1о§у: ТЬе ЗЫепсе оР 1пРогтаНоп 1пЮ§гку, О.). 31ттопз, ед., ШЕЕ Ргезз, 1992, рр. 135-175. 495. №. ОМПе апа М.Е. НеНтап, “МиШизег СгурЮ^гарЫс ТесЬтциез,” Ргосеект§з оР АР1РЗ ЫаНопа1 СотриЮг СопРегепсе, 1976, рр. 109-112. 496. №. 01РГ1е апа М.Е. НеИтап, “Ыелу ОкесНопз т СгурЮ^гарЬу,” ШЕЕ ТгапзасНопз оп 1пРогтаНоп ТЬеогу, V. 1Т-22, п. 6, Ыоу 1976, рр. 644-654. 497. №. ОИНе апа М.Е. НеИтап, “ЕхЬаизНуе Сгур1апа1уз15 оР Ше ЫВЗ Оа1а ЕпсгурПоп ЗЮпкага,” СотриЮг, у. 10, п. 6,Шп 1977, рр. 74-84. 498. №. 01РПе апа М.Е. НеИтап, “Рпуасу апа АиШепНсаНоп: Ап 1п1гоаисНоп Ю СгурЮ^гарЬу,” Ргосеект^з оР Ше ШЕЕ, V. 67, п. 3, Маг 1979, рр. 397-427. 499. №. 01РПе, Ь. 81га\УС2упзк1, В. О’Н^тз, апк О. 31еег, “Ап 180Ы Зесиге Те1ерЬопе Нп11,” Ргосеект§з оР Ше ЫаНопа! ТеЮсоттишсаНопз Рогит, у. 41, п. 1, 1987, рр. 473-477. 500. №. 01РР1е, Р.С. уап ОогзсЬо!, апа М.). №1епег, “АиШепНсаНоп апк АиШепНсаЮк Кеу ЕхсЬап^ез,” Оез^пз, Сокез апа СгурЮ§гарЬу, V. 2, 1992, 107-125. 501. С. Эт§, “ТЬе 01РРегепНа1 Сгур1апа1уз1з апа Оез^п оРЫа1ига1 31геат С1рЬегз,” Раз1 ЗоШуаге ЕпсгурПоп, СатЬпк^е Зесигку №огкзЬор Ргосеект§з, 8рпп§ег-Уег1а§, 1994, рр. 101-115. 502. С. От§, О. Х1ао, апН №. ЗЬап, ТЬе 81аЬШ1у ТЬеогу оР81геат С1рЬегз, Зрпп§ег-Уег1а§, 1991. 503. А. 01 РогЮ апа №. №о1Ро\У1С2, “УГЫО: А В1оск С1рЬег 1пс1икт§ УапаЫе Регти1аНопз,” Раз1 8ой\уаге ЕпсгурПоп, СатЪпк^е Зесигку №огкзЬор Ргосеект§з, 8рпп§ег-Уег1а§, 1994, рр. 205-210. 504. В. 01хоп апа А.К. ЬепзЮа, “РасЮпп§ 1пЮ§егз 11з1П§ 81МО 81еуез,” Аауапсез т СгурЮ1о§у— ЕШОСЯУРТ ’93 Ргосеект^з, 8рпп§ег-Уег1а§, 1994, рр. 28-39. 505. ТО. 01хоп, “РасЮпгаНоп апа Рпта1ку Тез1з,” Атепсап МаШетаНса1 МопШ1у, у. 91, п. 6, 1984, рр. 333-352. 506. О. Оо1еу апа А. Уао, “Оп Ше Зесигку оРРиЬЬс Кеу Рго1осо1з,” Ргосеект§з оР Ше 22па Аппиа! Зутрозшт оп Ше РоипааНопз оР СотриЮг ЗЫепсе, 1981, рр. 350- 357. 507. Ь.Х. Оиап апа С.С. КПап, “Мок1р1ек Ьи-Ьее СгурЮзузЮтз,” Е1ес1готсз ЬеПегз, V. 25, п. 13, 22 Лт 1989, р. 826. 508. Я. ЭигзЮпРеМ, “А1§опШт 235: Яапаот РегтиЮНоп,” СоттитсаНопз оР Ше АСМ, V. 7, п. 7, М 1964, р. 420. 509. 8. Оиззё апа В. КаПзк!, Л., “А СгурЮ^гарЫс ЫЬгагу Рог Ше МоЮго1а 08Р56000,” Аауапсез т СгурЮ1о§у—ЕШОСЯУРТ ’90 Ргосеект^з, 8рпп§ег-Уег1а§, 1991, рр. 230-244. 510. С. Ож>гк апа Ь. ЗЮсктеуег, “2его-Кпо\у1ек§е \укЬ Ртке 81аЮ УепГшгз,” Аауапсез т СгурЮ1о§у—СЯУРТО ’88 Ргосеект^з, 8рпп§ег-Уег1а§, 1990, рр. 71-75. 511. О.Е. ЕазНаке, 8.О. Сгоскег, апа II. ЗсЬШег, “Яапаотпезз Яецикететз Рог Зесигку,” ЯРС 1750, Оес 1994. 512. Н. ЕЬег1е, “А Н^Ь-Зреек ОЕЗ 1тр1етеп1аНоп Рог Ые1\Уогк АррПсаПопз,” Аауапсез т Сгурю1о§у—СЯУРТО ’92 Ргосеект§з, 8рпп§ег-Уег1а§, рр. 521-539. 513. Т Еа\уагаз, “1тр1етепНп§ Е1есЮотс Рокег: А РгасНса1 ЕхепПзе т 2его-Кпо\у1еа§е 1пЮгасНуе РгооРз,” МазЮг’з Шез1з, ОераПтеп1 оР СотриЮг ЗШепсе, Нтуегзку оРКепЮску, Мау 1994. 514. №.Р. ЕЬгзат, С.Н.№. Меуег, Я.Ь. Ро\уегз, Ш. ЗткЬ, апа №.Ь. ТисЬтап, “Ргокис! В1оск С1рЬег Рог Оа1а Зесигку,” 1Т8. РаЮп1 #3,962,539, 8 Лт 1976. 515. №.Р. ЕЬгзат, С.Н.№. Меуег, апк №.Ь. ТисЬтап, “А СгурЮ§гарЫс Кеу Мапа§етеп1 ЗсЬете Рог 1тр1етепНп§ Ше Оа1а ЕпсгурПоп 81апкагк,” 1ВМ ЗузЮтз .Юита1, V. 17, п. 2, 1978, рр. 106— 125. 516. Я. Е1ег апк Н. Ьа^ег, “Тгаркоогз т Кпарзаск СгурЮзузЮтз,” ЬесШге ЫоЮз т СотриЮг Заепсе 149; СгурЮ^гарЬу—Ргосеектёз, Виг§ РеиегзЮт 1982,8рпп§ег-Уег1а& 1983, рр. 316-322. 517. А.К. Екег1, “(ЗиапЮт СгурЮ^гарЬу Вазек оп ВеИ’з ТЬеогет,” РЬузюа! Яеу1е\у Ьекегз, V. 67, п. 6, Аи§ 1991, рр. 661-663. 518. Т. Е10ата1, “А РиЬПс-Кеу СгурЮзузЮт апк а 81§па1иге ЗсЬете Вазек оп 01зсгеЮ Ьо^агкЬтз,” Акуапсез 1п СгурЮ1о§у: Ргосеек1п§з оР СЯУРТО 84, Зрпп§ег-Уег1а§, 1985, рр. 10-18. 519. Т. Е10ата1, “А РиЬПс-Кеу СгурЮзузЮт апк а ЗщпаШге ЗсЬете Вазек оп 01зсгеЮ Ьо§аг1Штз,” ШЕЕ ТгапзасНопз оп 1пРогтаНоп ТЬеогу, у. 1Т- 31, п. 4, 1985, рр. 469-472. 520. Т. Е10ата1, “Оп СотриПп^ Ьо^апШтз Оуег Р1П1Ю ПеЮз,” Акуапсез т СгурЮ1о§у— СЯУРТО ’85 Ргосеек1п§з, 8рпп§ег-Уег1а§, 1986, рр. 396-402. 521. Т. Е10ата1 апк В. КаПзк1, 1е1Юг ю Ше екког ге§агк1п§ ШС, Ог. ОоЬЬ’з Л)игпа1, V. 18, п. 5, Мау 1993, р. 10.
Список литературы 522. Т. Еп§ апс! Т. Окашо1о, “8т§1е-Тегт 01У1з1Ые Е1ес1готс Сотз,” Айуапсез т Сгур1о!о§у— ЕШОСЯУРТ ’94 РгосеесПп§з, 8рпп§ег-Уег1а§, 1995, № арреаг. 523. М.Н. Ег, 0.3. \Уоп& А.А. 8е1Ьи, апс! К.8. Ы§ео\у, “Оез1§п апс! 1тр1етеп1аНоп оГ Я8А СгурЮзуз1:ет Шпе МиШр1е Э8Р СЫрз,” 1991 ШЕЕ 1п(етаПопа1 8утрозшт оп Сксикз апс1 8уз1етз, у. 1, 8т§ароге, 11-14 Зип 1991, рр. 49-52. 524. О. Ез1ез, Ь.М. АсИетап, К. КопреНа, К.8. МсСиНеу, апс1 О.Ь. МШег, “Вгеакт§ 1Ье Оп§- 8сЬпогг-8Ьатк 81§па1иге 8сЬетез Гог (ЗиаНгаНс ЫитЬег Р1е1с1з,” Айуапсез т Сгур1о!о§у— СЯУРТО ’85 РгосеесЛп^з, 8рпп§ег-Уег1а§, 1986, рр. 3-13. 525. ЕТЕВАС, “ЁсЬап§ез Те!етаНяиез Еп1ге Ьез Вапциез е1 Ьеигз СНеп1з,” 81апс1агс! ЕТЕВАС 5, Соткё Ргап9а1з сГОг^ашзаНоп е! с!е МогтаИзаНоп Вапсакез, Арг 1989. (1п РгепсЬ.) 526. А. Еуапз, >У. Кап1го\укг, апс! Е. ^е1зз, “А Изег МепНйсаНоп 8сЬете Ыо1 Яеяитп§ 8есгесу т 1Ье Сотри1ег,” СоттитсаНопз оГ 1Ье АСМ, V. 17, п. 8, Аи§ 1974, рр. 437-472. 527. 8. Еуеп апс! О. ОоМгеюЬ, “0Е8-Ыке РипсПопз Сап Сепега1е 1Ье АкегпаНп§ Огоир,” ШЕЕ ТгапзасНопз оп 1пГогтаНоп ТЬеогу, V. ГГ-29, п. 6, Ыоу 1983, рр. 863-865. 528. 8. Еуеп апс1 О. ОоМгеюЬ, “Оп 1Ье Ро\уег оГ Сазсаке С1рЬегз,” АСМ ТгапзасНопз оп Сотртег 8уз1ешз, у. 3, п. 2, Мау 1985, рр. 108-116. 529. 8. Еуеп, О. ОоМгеМЬ, апс! А. Ьетре!, “А ЯапНогтгт^ Рго1осо1 Гог 81§тп§ Соп1гас1з,” СоттитсаНопз оГ 1Ье АСМ, у. 28, п. 6, Зип 1985, рр. 637-647. 530. Еуеп апс! У. УасоЫ, “Сгур1о§гарЬу апс! ЫР- Сотр1е1епезз,” РгосеесПп^з оГ 1Ье 71Ь 1п1етаНопа1 СоИоцшит оп АиЮта1а, Ьап§иа§ез, апс! Рго§гаттт& 8рпп§ег-Уег1а& 1980, рр. 195-207. 531. Н.-Н. Еуег1зе, “Ыпеаг 81гисШгез т В!оск С1рЬегз,” АПуапсез т Сгур1о1о§у— ЕШОСЯУРТ ’87 РгосеесПп^з, 8ргт§ег-Уег1а§, 1988, рр. 249-266. 532. Р. РаЬп апс! М.З.В. ЯоЬзЬа\у, “Яезикз Ггот 1Ье Я8А Рас1опп§ СЬа11еп§е,” ТесЬтса1 ЯероП ТЯ- 501, Уегзюп 1.3, Я8А ЬаЬога1опез, Зап 1995. 533. Я.С. Ра1гйе!с!, А. МаШзеуюЬ, апс! 3. Р!апу, “Ап Ь81 01§ка1 ЕпсгурПоп Ргосеззог (ОЕР),” АПуапсез т Сгур1о1о§у: РгосеесПп^з оГ СЯУРТО 84, 8рпп§ег-Уег!а§, 1985, рр. 115-143. 534. Я.С. РакПеМ, А. МаШзеуюЬ, апс! 3. Р1апу, “Ап Ь81 Ощка1 ЕпсгурПоп Ргосеззог (ОЕР),” ШЕЕ СоттитсаНопз, V. 23, п. 7, 3и1 1985, рр. 30-41. 535. Я.С. РакПеМ, Я.Ь. МоЛепзоп, апс1 К.В. КоикЬаг!, “Ап Ь81 ЯапПот ЫитЬег Оепега1ог (ЯЫО),” АПуапсез т Сгур1о1о§у: РгосеесНп§з оГ СЯУРТО 84,8рпп8Рг-Уейа& 1985, рр. 203-230. 759 536. “1п1егпаНопа1 Визтезз МасЫпез Согр. Ысепзе 11пс!ег Ра1еп1з,” Рес!ега1 Яе§1з1;ег, у. 40, п. 52, 17 Маг 1975, р. 12067. 537. “8оНскаНоп Гог РиЬНс Кеу СгурЮ^гарЫс А!§огкЬтз,” РеНега! Яе§1з1ег, V. 47, п. 126, 30 Зип 1982, р. 28445. 538. “РгорозеП РеНега! 1пГогтаНоп Ргосеззт§ 81апс!агс! Гог 01§ка1 81§па!:иге 81апс1агс1 (088),” Рес1ега1 Яе§1з1ег, V. 56, п. 169, 30 Аи§ 1991, рр. 42980-42982. 539. “Ргорозес! Рес!ега1 1пГогтаНоп Ргосеззт§ 81апс1ап1 Гог 8есиге НазЬ 81апс!агс1,” Рес1ега1 Яе§1з1ег, у. 57, п. 21,31 Зап 1992, рр. 3747-3749. 540. “РгорозеП ЯеаГПгтаНоп оГ Рес!ега1 1пГогтаНоп Ргосеззт§ 81апс!агс! (Р1Р8) 46-1, Оа1а ЕпсгурПоп 81апПаг(1 (ОЕ8),” РеПега1 Яе§1з1ег, у. 57, п. 177, И 8ер 1992, р. 41727. 541. “ЫоНсе оГ Ргороза! Гог Огап1 оГ Ехс1из1Уе Ра1еп1 Ысепзе,” РеНега! Яе§131ег, у. 58, п. 108, 8 Зип 1993, рр. 23105-23106. 542. “Арргоуа1 оГ Рес!ега1 1пГогтаНоп Ргосеззт§ 81апс1агс1з РиЬПсаНоп 186, 01§ка1 81§паШге 81апПаг(1 (088),” РеПега! Яе§1з1ег, V. 58, п. 96, 19 Мау 1994, рр. 26208-26211. 543. “РгорозеП Яеу1зюп оГ РеПега! 1пГогтаНоп Ргосезз1П§ 81апс1агс1 (Р1Р8) 180, 8есиге НазЬ 81апПаг(1,” РеПега! Яе§1з1ег, V. 59, п. 131, И Зи! 1994, рр. 35317-35318. 544. 1Т Ре1§е, А. Р1а1, апП А. 8Ьагтг, “2его Кпо\у1ес1§е РгооГз оГ ШепН1у,” РгосеесНп^з оГ 1Ье 191Ь Аппиа! АСМ 8утроз1ит оп 1Ье ТЬеогу оГ СотриНп§, 1987, рр. 210-217. 545. II. Ре1§е, А. Р1а1, апс1 А. 8Ьат1г, “2его Кпо\у1ек§е РгооГз оГ МепН1у,” Зоита! оГ Сгур1о!о§у, V. 1, п. 2, 1988, рр. 77-94. 546. II. Ре1§е апП А. 8Ьатк, “2его Кпо\у1ес1§е РгооГз оГ Кпо\у1ес!§е т Т\уо ЯоипПз,” АПуапсез 1п Сгур1о1о§у—СЯУРТО ’89 РгосеесНп§з, 8рпп§ег-Уег1а§, 1990, рр. 526-544. 547. 3. Ре1§епЬаит, “ЕпсгурНп§ РгоЫет 1пз1апсез, ог, . . . , Сап Уои Таке Ас1уап1а§е оГ 8отеопе \УкЬои1 НаУ1П§ Ю Тгиз! Н1т,” АПуапсез 1п Сгур1о!о§у—СЯУРТО ’85 РгосеесНп^, 8рг1п§ег-Уег1а§, 1986, рр. 477-488. 548. 3. Ре1§епЬаит, “Оуете\у оГ 1п1егасНуе РгооГ 8уз1етз апс1 2его-Кпо\у1ес1§е,” 1п СоШетрогагу Сгур1о1о§у: ТЬе 8с1епсе оГ 1пГогтаНоп 1п1е§л1у, О.З. 81ттопз, ес1., ШЕЕ Ргезз, 1992, рр. 423-439. 549. 3. РещепЪаит, М.У. ЫЬегтап, Е. Огоззе, апс1 З.А. ЯееПз, “СгурЮ^гарЫс Рго1есНоп оГ МетЬегзЬ1р Ыз1з,” Ые\уз1еИ:ег оГ 1Ье 1п1егпаНопа! Аззос1аНоп оГ Сгур1о!о§1С ЯезеагсЬ, у. 9, 1992, рр. 16-20. 550. 3. Ре^епЬаит, М.У. Ыуегтап, апс1 Я.Ы. ^п§Ы, “Сгур1о§гарЫс Рго1есНоп оГ Оа1аЬазез апс1 8оклуаге,” 01з1пЬте(1 СотриНп§ апс! Сгур1о§гарЬу,
760 Прикладная криптография Т Ре1§епЬаиш апс1 М. МегпП, едз., Атепсап Ма1ЬетаНса1 ЗоЫе1у, 1991, рр. 161-172. 551. Н. Ре1з1е1, “Сгур1о§гарЫс СосПп§ Рог Оа1а-Вапк Рпуасу,” ЯС 2827, Уогк1о\Уп Не1§Ь1з, ЫУ: 1ВМ ЯезеагсЬ, Маг 1970. 552. Н. Ре1з1е1, “Сгур1о§гарЬу апс! Сотри1ег Рпуасу,” ЗЫепНРЫ Атепсап, V. 228, п. 5, Мау 1973, рр. 15-23. 553. Н. Ре18(е1, “В1оск С1рЬег СгурЮ^гарЫс 8уз1ет,” 11.3. Ра1еп1 #3,798,359, 19 Маг 1974. 554. Н. Ре181е1, “81ер Сос1е С1рЬепп§ Зуз1ет,” 11.8. Ра1еп1 #3,798,360, 19 Маг 1974. 555. Н. Ре1з1е1, “Сеп1гаП2ес1 УепГюаНоп 8уз1ет,” иЗ. Ра1еп1 #3,798,605, 19 Маг 1974. 556. Н. Ре1з1е1, \У.А. N012, апс1 ТЬ. ЗткЬ, “СгурЮ§гарЫс ТесЬтциез Рог МасЫпе Ю МасЫпе Оа1а СоттитсаНопз,” ЯС 3663, Уогк1о\уп Не1§Ь1з, Ы.У.: 1ВМ ЯезеагсЬ, Оес 1971. 557. Н. Ре1з1е1, \У.А. N012, апс1 ТЬ. ЗтЬЬ, “Зоте Сгур1о§гарЫс ТесЬЫяиез Рог МасЫпе 1о МасЫпе Е)а1а СоттитсаНопз,” РгосеесНп^з оР 1Ье ШЕЕ, V. 63, п. И, Ыоу 1975, рр. 1545-1554. 558. Р. РеШтап, “А РгасНса1 ЗсЬете Рог Ыоп- т1егасНуе УепИаЫе Зесге! 8Ьапп§,” РгосеесНп§з оР 1Ье 281Ь Аппиа1 Зутрозшт оп 1Ье РоипйаНопз оР Сотри1ег ЗЫепсе, 1987, рр. 427-437. 559. Я.А. РеШтап, “Раз1 8рес1га1 Тез! Рог Меазипп§ ЫопгапНотпезз апс1 1Ье ОЕЗ,” Аауапсез т Сгур1о1о§у—СЯУРТО ’87 РгосеесИп^з, 8рпп§ег-Уег1а§, 1988, рр. 243-254. 560. Я.А. РеМтап, “А Ые\у 8рес1га1 Тез1 Рог ЫопгапНотпезз апс11Ье ОЕЗ,” ШЕЕ ТгапзасНопз оп 8ой\уаге Еп§теепп§, V. 16, п. 3, Маг 1990, рр. 264-267. 561. О.С. РеШте1ег апс1 Р.Я. Кат, “Ш1Х Разз\Уогс1 8есип1у—Теп Уеагз Ьа1ег,” Аауапсез т Сгур1о1о§у—СЯУРТО ’89 РгосеесНп^з, 8рпп§ег-Уег1а§, 1990, рр. 44-63. 562. Н. Ре11 апс1 01РПе, “Апа1уз18 оР а РиЬПс Кеу АрргоасЬ Вазес1 оп Ро1упогта1 ЗиЬзНшНоп,” Аауапсез т Сгур1о1о§у—СЯУРТО ’85 РгосеесЛп§8, 8рпп§ег-Уег1а§, 1986, рр. 427-437. 563. Ы.Т. Рег§изоп, “Зт^е Тепп ОРР-Ыпе Сотз,” ЯероП С8-Я9318, Сотри1ег ЗЫепсе/ОераЛтеШ оР А1§оп1Ьтз апс1 АгсЫ1ес1иге, С\У1, Маг 1993. 564. Ы.Т. Рег^изоп, “8т§1е Тепп ОРР-Ыпе Сотз,” Аауапсез ш Сгур1о1о§у—ЕШОСЯУРТ ’93 РгосеесПп^з, 8рпп§ег-Уег1а§, 1994, рр. 318-328. 565. Ы.Т. Рег§изоп, “ЕхГепзюпз оР 8т§1е-1егт Сотз,” Аауапсез т Сгур1о1о§у—СЯУРТО ’93 РгосеесПп^з, 8рпп§ег-Уег1а§, 1994, рр. 292-301. 566. А. Р1а1 апд А. ЗЬатп, “Но\у 1о Ргоуе Уоигзе1Р: РгасНса1 ЗоЫНопз 1о ЫепНГюаНоп апс1 81§паШге РгоЫетз,” Аауапсез т Сгур1о1о§у—СЯУРТО ’86 РгосеесПп§з, 8рг1п§ег-Уег1а§, 1987, рр. 186-194. 567. А. Р1а1 апс! А. ЗЬаппг, “11пРог§еаЫе РгооРз оР ЫеШЬу,” РгосеесЬп§з оР Зесипсот 87, Ралз, 1987, рр. 147-153. 568. Р. РтсЬ, “А ЗиЫу оР 1Ье В1о\ур1зЬ ЕпсгурПоп А1§оп1Ьт,” РЬ.О. сНззеПаНоп, ОераПтеп! оР Сотри1ег ЗЫепсе, СНу итуегзНу оРЫе\у Уогк Огас1иа1е 8сЬоо1 апд УшуегзЬу Сеп1ег, РеЬ 1995. 569. Я. Р1упп апс! А.8. Сатразапо, “Оа1а Оерепдет Кеуз Рог 8е1есНуе ЕпсгурПоп Тегтта1,” РгосеесНп§з оРЫСС, уо1. 47, АР1Р8 Ргезз, 1978, рр. 1127-1129. 570. Я.Н. РоИеи, 1е11ег Ю Ы18Т ге§агсЬп§ 088, 25 Ыоу 1991. 571. Я. Рогге, “ТЬе 81пс1 Ауа1апсЬе СгЬепоп: 8рес1га1 РгореП1ез апс1 ап Ех1епс1ес1 ОеРтЫоп,” АНуапсез т Сгур1о1о§у—СЯУРТО ’88 РгосеесПп^з, 8рпп§ег-Уег1а§, 1990, рр. 450-468. 572. Я. Рогге, “А Раз! Согге1аНоп АЯаск оп ЫопНпеап1у Реес1Ропуагс1 РИйгес! 8ЫА Яе§1з1ег Зециепсез,” Аауапсез т Сгур1о1о§у—СЯУРТО ’89 РгосеесЛп§5,8рпп§ег-Уег1а§, 1990, рр. 568-595. 573. 8. РоНипе апс! М. Метй, “Рокег Рго1осо1з,” АсЫапсез т Сгур1о1о§у: РгосеесЬп§з оР СЯУРТО 84,8рпп§ег-Уег1а§, 1985, рр. 454-464. 574. Я.В. Рои^пег, “РиЬНс Кеу 81ап(1аг(1з апс! Ысепзез,” ЯРС 1170Лап 1991. 575. У. Ргапке! апс1 М. Уип§, “Езсго\уес1 ЕпсгурПоп 8уз1етз У1311ес1: ТЬгеа1з, АНаскз, Апа1уз1з апс! Оез1§пз,” Аауапсез 1П Сгур1о1о§у—СЯУРТО ’95 РгосеесНп^з, 8рпп§ег-Уег1а§, 1995,1о арреаг. 576. ^.Р. Рг1ес1тап, МеЫоПз Рог 1Ье ЗоЫПоп оР Яипп1п§-Кеу С1рЬегз, Я1уегЬапк РиЬНсаНоп Ыо. 16, Я1уегЬапк ЬаЬз, 1918. 577. \У.Р. РпеПтап, ТЬе 1пс1ех оР Со1пс1(1епсе апс1 Из АррПсаПопз т СгурЮ^гарЬу, Я1УегЬапк РиЬНсаНоп Ыо. 22, Я1уегЬапк ЬаЬз, 1920. ЯерпШес! Ьу Ае§еап Рагк Ргезз, 1987. 578. ^.Р. РпеПтап, Е1етеп1з оР Сгур1апа1уз1з, Ьа§ипа НП1з, СА: Ае§еап Рагк Ргезз, 1976. 579. \У.Р. Рг1ес1тап, “Сгур1о1о§у,” Епсус1оресНа ВпГапп1са, V. 6, рр. 844-851, 1967. 580. А.М. Рпеге, Т Наз1а(1, Я. Каппап, 1.С. Ьа§аг1аз, апП А. ЗЬатЬ, “Яесопз1гисНп§ Тгипса1ес11п1е§ег УапаЫез ЗаНз1у1П§ Ыпеаг Соп§гиепсез,” 81АМ .1оигпа1 оп СотриНп§, у. 17, п. 2, Арг 1988, рр. 262-280. 581. А.М. Рпеге, Я. Каппап, апс! ТС. Ьа§апаз, “Ыпеаг Соп§гиепНа1 Оепега1огз Оо по1 РгоПисе ЯапНот Зеяиепсез,” РгосеесНп§з оР 1Ье 251Ь ШЕЕ 8утроз1ит оп Роипс1аНопз оР Сотри1ег Зс1епсе, 1984, рр. 480-484. 582. Е. РиразЫ апс1 Т. Окато1о, “Оп Сотраг1зоп оР РгасНса1 01§1На1 81§па1иге ЗсЬетез,” РгосеесНп§з оР 1Ье 1992 8утроз1ит оп СгурЮ§гарЬу апс! ЫРогтаНоп 8есиг11у (8С13 92), Та1езЫпа, 1арап, 2-4 Арг 1994, рр. 1 А. 1-12.
Список литературы 583. А. Рирока, Т. ОкатоЮ, апд 8. М1уа§исЫ, “Е810Ы: Ап ЕШЫеШ Ощка1 81§паШге 1тр1етеп1а1юп Гог 8таг1 Сагдз,” Адуапсез т СгурЮ1о§у—ЕШОСКУРТ ’91 Ргосеедт§з, 8рпп§ег-Уег1а§, 1991, рр. 446-457. 584. А. Рирока, Т. ОкатоЮ, апд К. ОМа, “1пЮгаскуе ВкРгооГ 8узЮтз апд ШдетаЫе 81§паШге 8сНетез,” Адуапсез т СгурЮ1о§у— ЕШОСКУРТ ’91 Ргосеедт§з, 8рпп§ег-Уег1а§, 1991, рр. 243-256. 585. А. Рирока, Т. ОкатоЮ, апд К. ОМа, “А Ргаскса1 8есге1 Уокп§ 8сНете Гог Ьаг§е 8са1е ЕЮскопз,” Адуапсез т СгурЮ1о§у— АШСКУРТ ’92 Ргосеедш§з, 8рпп§ег-Уег1а§, 1993, рр. 244-251. 586. К. Оаагдпег апд Е. 8пеккепез, “Арр1ут§ а Рогша1 Апа1у$15 ТесНшяие Ю Ше СС1ТТ Х.509 81гоп§ Т\УоЛУау АиШепксакоп РгоЮсо!,” Юигпа1 оГСгурЮ1о§у, V. 3, п. 2, 1991, рр. 81-98. 587. Н.Р. Оатез, Сгур1апа1уз15, Атепсап РНоЮ§гарШс Ргезз, 1937. (КергтЮд Ьу Эоуег РиЬИсадопз, 1956.) 588. I. ОаК, “А Ие\у ЫопНпеаг Рзеидогапдот ЫитЬег СепегаЮг,” ШЕЕ ТгапзасНопз оп 8ой\уаге Еп§теепп§, у. 8Е-3, п. 5, 8ер 1977, рр. 359-363. 589. Т ОаК, “8Ног1 СусНп§ т Ше Кгау1Ю:-Кеед РиЬНс Кеу ЕпсгурПоп 8узЮт,” ЕЮсЮотсз ЬеКегз, у. 18, п. 16, 5 Аи§ 1982, рр. 706-707. 590. Ъ. ОаШ, 8. НаЬег, апд М. Уип§, “А РпуаЮ ШЮгасНуе Тез1 оГ а Воо1еап РгедюаЮ апд М1штит-Кпо\у1ед§е РиЬИс-Кеу СгурЮзузЮтз,” Ргосеедт§з оГ Ше 26Ш ШЕЕ 8утрозшт оп РоипдаНопз оГ СотриЮг 8с1епсе, 1985, рр. 360- 371. 591. Ъ. ОаШ, 8. НаЬег, апд М. Уип§, “СгурЮ§гарЫс СотриЮНоп: 8есиге Раик-То1егап1 РгоЮсо1з апд Ше РиЬПс-Кеу Моде1,” Адуапсез т СгурЮ1о§у—СКУРТО ’87 Ргосеедт§з, 8рпп§ег-Уег1а§, 1988, рр. 135-155. 592. Ъ. ОаШ, 8. НаЬег, апд М. Уип§, “Мдштит- Кпо\у1ед§е 1пЮгасНуе РгооГз Гог Оеазюп РгоЫетз,” 81АМ ,1оита1 оп СотриНп§, у. 18, п. 4, 1989, рр. 711-739. 593. К.О. Оа11а§ег, ШГогтаНоп ТНеогу апд КеПаЫе СоттитсаНопз, Ые\у Уогк: .ЮНп \УПеу & 8опз, 1968. 594. Р. Оа11ау апд Е. Оерге!, “А СгурЮ§гарНу Мюгоргосеззог,” 1988 ШЕЕ 1пЮтаНопа1 8оНд- 81аЮ Сксикз СопГегепсе 01§ез1 оГ ТесНшса1 Рарегз, 1988, рр. 148-149. 595. К.А. Оатез, “ТЬеге аге по де Вгиуп 8еяиепсез оГ 8рап п \уКН Сотр1ехку 2п-1 + п + 1,” }оита1 оГ СотЫпаЮпса1 ТНеогу, 8епез А, у. 34, п. 2, Маг 1983, рр. 248-251. 596. К.А. Оатез апд А.Н. СНап, “А Раз1 А1§опШт Гог ОеЮгттт§ Ше Сотр1ехку оГ а В тагу 761 8ециепсе дукН 2п,” ШЕЕ ТгапзасНопз оп 1пГогтаНоп ТНеогу, у. 1Т-29, п. 1, Зап 1983, рр. 144-146. 597. К.А. Оатез, А.Н. СНап, апд ЕХ. Кеу, “Оп Ше Сотр1ехку оГ де Вгицп 8еяиепсез,” ,1оита1 оГ СотЫпаЮпса1 ТНеогу, 8епез А, V. 33, п. 1, Ыоу 1982, рр. 233-246. 598. 8.Н. Оао апд ОХ. Ми11еп, “Оюкзоп Ро1упогша1з апд НгедиЫЫе Ро1упогша1з оуег Ртке Р1е1дз,” ,1оита1 оГЫитЬег ТНеогу, у. 49, п. 1, Ос1 1994, рр. 18-132. 599. М. Оагдпег, “А Ые\у Ктд оГ С1рНег ТНа1 \Уои1д Таке МИНопз оГ Уеагз 1о Вгеак,” 8с1епНЕс Атепсап, у. 237, п. 8, Аи§ 1977, рр. 120-124. 600. М.К. Оагеу апд О.8. ЮНпзоп, СотриЮгз апд 1п1гас1аЫ1ку: А Ошде Ю Ше ТНеогу оГ ЫР- Сотр1еЮпезз, \У.Н. Ргеетап апд Со., 1979. 601. 8Х. ОагГтке1, РОР: Ргеку Ооод Рпуасу, 8еЬазЮро1, СА: О’КеШу апд АззоЫаЮз, 1995. 602. СЖ Оагдтег, ‘ТНзШЬиЮд РиЬНс Кеу СегНЯсаЮ Мапа§етеп1,” Ргосеедт§з оГ Ше Рпуасу апд 8есигКу КезеагсН Огоир 1993 \УогкзНор оп Ие1луогк апд 0151пЬиЮд 8узЮт 8есип1у, ТНе 1пЮте18ос1е1у, 1993, рр. 69-73. 603. О. Оагоп апд К. ОиЮгЬпд§е, ‘Т)Е8 \УаЮН: Ап ЕхаттаНоп оГ Ше 8иГПс1епсу оГ Ше ОаШ ЕпсгурПоп 81апдагд Гог Ртапс1а1 ШзНшНоп ШГогтаНоп 8есигКу т Ше 1990’з,” Сгурю1о§1а, у. 15, п. 3, М 1991, рр. 177-193. 604. М. Оаззег, А. Оо1дзЮ1п, С. КаиГтап, апд В. Ьатрзоп, “ТНе 01§ка1 01з1пЬиЮд 8узЮтз 8есиг11у АгсНкесШге,” Ргосеедт§з оГ Ше 12Ш ЫаПопа1 СотриЮг 8есигку СопГегепсе, М8Т, 1989, рр. 305-319. 605. Т уоп гиг ОаШеп, О. Когеп, апд 8. Ьапдаи, “Рипсдопа1 ОесотрозШоп оГ Ро1упогта15,” Ргосеед1п§5 оГ Ше 28Ш ШЕЕ 8утрозшт оп Ше Роипдадопз оГ СотриЮг 8с1епсе, ШЕЕ Ргезз, 1987, рр. 127-131. 606. Р.К. ОеГГе, “Но\у Ю РгоЮс! Оа1а \УкН С1рНегз ТНа1 аге Кеа11у Нагд Ю Вгеак,” Е1ес1гоп1сз, V. 46, п. 1, Зап 1973, рр. 99-101. 607. О.К. ОкГогд, О. НеКтапп, О.А. 8е§а1, К.О. СоЮ, К. Тапасеа, апд О.Е. ВигтазЮг, “ВозЮп Соттип11у 1пГогтакоп 8узЮт 1986 Ехрептеп1а1 Тез1 Кезикз,” М1Т/ЬС8ЯК-397, М1Т ЬаЬогаЮгу Гог СотриЮг 8с1епсе, Аи§ 1987. 608. О.К. ОкГогд, 1М. Ьисаззеп, апд 8.Т. ВегНп, “ТНе АррНсакоп оГ 01§11а1 Вгоадсаз! Соттип1- сакоп Ю Ьаг§е 8са1е 1пГогтакоп 8узЮтз,” ШЕЕ ]оита1 оп 8е1есЮд Агеаз 1п Соттип1са1юпз, у. 3, п. 3, Мау 1985, рр. 457-467. 609. О.К. ОкГогд апд О.А. 8е§а1, “ВозЮп Соттипку 1пГогтакоп 8узЮт 1987-1988 Ехрептеп1а1 Тез1 Кезикз,” М1Т/ЬС8/ТК-422, М1Т ЬаЬогаЮгу Гог СотриЮг 8аепсе, Мау 1989.
762 Прикладная криптография 610. Н. ОПЬеП апд О. СЬазе, “А 81аНзНса1 Аиаск оп 1Ье Реа1-8 СгурЮзузЮт,” Адуапсез т СгурЮ1о§у—СКУРТО ’90 Ргосеедт§з, 8рпп§ег-Уег1а§, 1991, рр. 22-33. 611. Н. ОПЬеН апд Р. СЬаиуаид, “А СЬозеп Р1атЮх1 Аиаск оР 1Ье 16-Коипд КЬиРи СгурЮзузЮт,” Адуапсез т СгурЮ1о§у—СКУРТО ’94 Ргосеедт^з, 8рпп§ег-Уег1а§, 1994, рр. 259-268. 612. М. Оюаик, “НазЬ-РипсНопз 11зт§ Моди1о-Ы ОрегаНопз,” Адуапсез т СгурЮ1о§у— ЕШОСКУРТ ’87 Ргосеедт§з, 8ргт§ег-Уег1а§, 1988, рр. 217-226. 613. I 01еюк, “А Ые\у АрргоасЬ № РгоЮсНп§ 8есге1з 15 О1зсоуегед,” ТЬе Ые\у Уогк Т1тез, 18 РеЬ 1987, рр. С1 апд СЗ. 614. З.-М. Сое1Ьа1з апд С. Соиугеиг, “А Сгур1апа1уНс Аиаск оп Ню Ьи-Ьее РиЬПс-Кеу СгурЮзузЮт,” РЫЬрз Зоита1 оР КезеагсЬ, у. 35, 1980, рр. 301— 306. 615. О. ОоШгеюЬ, “А 11шРогт-Сотр1ех1{у Тгеа1теп1 оР ЕпсгурПоп апд 2его-Кпо\у1ед§е, Зоигпа1 оР СгурЮ1о§у, у. 6, п. 1, 1993, рр. 21-53. 616. О. ОоШгеюЬ апд Н. Кга\усгук, “Оп 1Ье СотрозЫоп оР 2его Кпо\у1ед§е РгооР 8узЮтз,” Ргосеедт§з оп 1Ье 17Ю 1пЮтаНопа1 СоНочишт оп АиЮтаЮ, Ьап§иа§ез, апд Рго§гаттт§, 8рпп§ег-Уег1а§, 1990, рр. 268-282. 617. О. ОоШгеюЬ апд Е. КизЬИеуИг, “А РегРес! 2его- Кпо\у1ед§е РгооР Рог а РгоЫет Еяшуа1еЫ Ю 01зсгею Ьо§ап1Ьт,” Адуапсез т СгурЮ1о§у— СКУРТО ’88 Ргосеедт§з, 8ргт§ег-Уег1а§, 1990, рр. 58-70. 618. О. ОоШгеюЬ апд Е. КизЬПеукг, “А РегРес12его- Кпо\у1ед§е РгооР Рог а РгоЫет Еяшуа1еп1 Ю 01зсгеЮ Ьо^агкЬт,” Зоигпа1 оР СгурЮ1о§у, V. 6, п. 2, 1993, рр. 97-116. 619. О. ОоШгеюЬ, 8. МюаП, апд А. М^дегзоп, “РгооРз ТЬа1 У1е1д Ыо1Ып§ Ьи1 ТЬею УаПдку апд а Ме1Ьодо1о§у оР СгурЮ§гарЫс РгоЮсо1 Оез1§п,” Ргосеедш§з оР 1Ье 27*Ь ШЕЕ 8утрозшт оп 1Ье РоипдаНопз оР СотриЮг 8Ыепсе, 1986, рр. 174-187. 620. О. ОоШгеюЬ, 8. МюаП, апд А. \У1§дегзоп, “Но\у ^ Ю Ргоуе АН ЫР 81аЮтеп1з т 2его Кпо\у1ед§е апд а Ме1Ьодо1о§у оР СгурЮ§гарЫс РгоЮсо1 Оезщп,” Адуапсез т СгурЮ1о§у—СКУРТО ’86 Ргосеедт§з, 8рпп§ег-Уег1а§, 1987, рр. 171-185. 621. О. ОоШгеюЬ, 8. МюаП, апд А. \У1§дегзоп, “Но\у Ю Р1ау Апу Меп1а1 Оате,” Ргосеедт§з оР 1Ье 191Ь АСМ 8утрозшт оп 1Ье ТЬеогу оР СотриНп§, 1987, рр. 218-229. 622. О. ОоШгеюЬ, 8. МюаП, апд А. \У1§дегзоп, “РгооРз ТЬа1 У1е1д Ыо1Ь1п§ Ьи1 ТЬею УаПдку апд а Ме1Ьодо1о§у оР СгурЮ§гарЫс РгоЮсо1 Оез1§п,” Зоигпа1 оР 1Ье АСМ, у. 38, п. 1, 3и1 1991, рр. 691-729. 623. 8. Оо1д\уаззег апд 3. КШап, “А1тоз1 АН Рптез Сап Ве <3шск1у СегРШед,” Ргосеедт§з оР Ше ШЬ АСМ 8утрозшт оп Ше ТЬеогу оР СотриНп§, 1986, рр. 316-329. 624. 8. Оо1д\уаззег апд 8. МюаП, “РгоЬаЬШзНс ЕпсгурПоп апд Но\у Ю Р1ау Меп1а1 Рокег Кеерт§ 8есге1 АН РагНа1 ШРогтаНоп,” Ргосеедт§з оР Ше 14Ш АСМ 8утрозшт оп Ше ТЬеогу оР СотриНп§, 1982, рр. 270-299. 625. 8. Оо1д\уаззег апд 8. МюаН, “РгоЬаЬШзНс ЕпсгурПоп,” Зоигпа1 оР СотриЮг апд 8узЮт 8с1епсез, V. 28, п. 2, Арг 1984, рр. 270-299. 626. 8. Оо1д\уаззег, 8. МюаП, апд С. КаскоРГ, “ТЬе Кпоуу1ед§е Сотр1ехКу оР 1пЮгасНуе РгооР 8узЮтз,” Ргосеедт§з оР Ше 17Ш АСМ 8утрозшт оп ТЬеогу оРСотриНп§, 1985, рр. 291-304. 627. 8. Оо1д\уаззег, 8. МюаП, апд С. КаскоРГ, “ТЬе Кпо\у1ед§е СотрЮхку оР 1пЮгасНуе РгооР 8узЮтз,” 81АМ Зоигпа1 оп СотриНп§, у. 18, п. 1, РеЬ 1989, рр. 186-208. 628. 8. Оо1д\уаззег, 8. МюаН, апд К.Ь. К1уез1, “А Ощка1 81§паШге 8сЬете 8есиге А§а1пз1 АдарПуе СЬозеп-Мезза§е Аиаскз,” 81АМ Зоита1 оп СотриПп^, у. 17, п. 2, Арг 1988, рр. 281-308. 629. 8. Оо1д\уаззег, 8. МюаП, апд А.С. Уао, “Оп 81§па1игез апд АиЮепНсаПоп,” Адуапсез т СгурЮ1о§у: Ргосеедт§з оР СгурЮ 82, Р1епит Ргезз, 1983, рр. 211-215. 630. З.О. ОоПбс, “Оп 1Ье Ь1пеаг Сотр1ехку оР РипсНопз оР Реподю ОР(ч) 8ечиепсез,” 1ЕЕЕ ТгапзасНопз оп 1пРогтаНоп ТЬеогу, у. ГГ-35, п. 1, Зап 1989, рр. 69-75. 631. З.Э. ОоПбс, “Ыпеаг Сгур1апа1уз1з оР 81геат С1рЬегз,” К. II. Ьеиуеп \УогкзЬор оп СгурЮ§гарЫс А1§огкЬтз, 8рпп§ег-Уег1а§, 1995, рр. 262-282. 632. З.О. ОоПбс, “То\уагдз Раз1 Согге1аНоп Аиаскз оп 1гге§и1аг1у СЮскед 8Ь1й Ке§1зЮгз,” Адуапсез 1п СгурЮ1о§у—Е1ЖОСКУРТ ’95 Ргосеед1п§з, 8рпп§ег-Уег1а§, 1995, Ю арреаг. 633. З.О. ОоПбс апд М.З. МШа^еу1б, “А ОепегаИгед Согге1аНоп Аиаск оп а С1азз оР 81геат С1рЬегз Вазед оп 1Ье ЬеуепзЬЮ1п 01з1апсе,” Зоита1 оР СгурЮ1о§у, V. 3, п. 3, 1991, рр. 201-212. 634. З.О. ОоПбс апд Ь. О’Соппог, “ЕтЬеддт§ апд РгоЬаЫПзНс Согге1аНоп Аиаскз оп С1оск- СопЮоПед 8ЫК Ке§1зЮгз,” Адуапсез т СгурЮ1о§у—Е11КОСКУРТ ’94 Ргосеед1П§з, 8рг1п§ег-Уег1а§, 1995, Ю арреаг. 635. К. ОоШуег, А.К. Ьепзиа, К.8. МсСиНеу, “Ьа1Нсе 81еу1п§ апд Тпа1 О1У1510п,” Ргосеед1п§з оР 1Ье А1§ог11Ьт1С ЫитЬег ТЬеогу 8утроз1ит, Соте11, 1994, Ю арреаг. 636. О. ОоНтапп, “КазкадепзсЬа1Юп§еп 1ак1§езЮиег1ег 8сЬ1еЬеге§1зЮг а!з РзеидотиРаНзтаЫеп^епегаЮгеп,” РЬ.О. д1ззег1аНоп, 11п1уег51Ш1 Упг, 1983. (1п Оегтап)
Список литературы 637. О. СоИтапп, “Рзеидо Капдот РгорегНез оР Сазсаде СоппесНопз оР С1оск СопЮоИед 8Ый Ке§15Югз,” Адуапсез т СгурЮ1о§у: Ргосеедт§з оР ЕШОСКУРТ 84, 8рппвег-Уег1а§, 1985, рр. 93-98. 638. Э. СоИтапп, “Согге1аНоп Апа1уз1з оР Сазсадед 8еяиепсез,” СгурЮ§гарЬу апд Содт§, НЛ. Векег апд Р.С. Р1рег, едз., ОхРогд: С1агепдоп Ргезз, 1989, рр. 289-297. 639. О. СоИтапп, “ТгапзРогтаНоп Ма1псез оР С1оск- СопйоНед 8Ый Ке§1зЮгз,” СгурЮ^гарЬу апд Содт§ III, МЛ. Сап1еу, ед., ОхРогд: С1агепдоп Ргезз, 1993, рр. 197-210. 640. О. СоИтапп апд \У.С. СЬатЬегз, “Ьоск-1п ЕРРес! т Сазсадез оР С1оск-Соп1го11ед 8Ый- Ке§1зЮгз,” Адуапсез т СгурЮ1о§у— ЕШОСКУРТ ’88 Ргосеедт§з, 8рпп§ег-Уег1а§, 1988, рр. 331-343. 641. О. СоИтапп апд ЖС. СЬатЬегз, “С1оск- СопйоНед 8Ый Ке§1зЮгз: А Кеу1е\у,” ШЕЕ .1оита1 оп 8е1есЮд Агеаз т СоттитсаНопз, V. 7, п. 4, Мау 1989, рр. 525-533. 642. О. СоИтапп апд \У.О. СЬатЬегз, “А Сгур1апа1уз15 оР 8Юрк,т-сазсадез,” Адуапсез т СгурЮ1о§у—ЕШОСКУРТ ’89 Ргосеедт^з, 8рпп§ег-Уег1а§, 1990, рр. 680-687. 643. 8Ж Оо1отЬ, 8ЫЙ Ке^зЮг 8еяиепсез, 8ап Ргапазсо: Но1деп-Оау, 1967. (КерппЮд Ьу Ае§еап Рагк Ргезз, 1982.) 644. Ь. Соп§, “А 8есип!у Клзк оР Эерепдт^ оп 8упсЬготгед С1оскз,” ОрегаНп§ 8узЮтз Кеу1е\у, у. 26, п. 1, ]ап 1992, рр. 49-53. 645. Ь. Соп§, К. ЫеедЬат, апд К. УаЬа1от, “Кеазотп§ АЬои1 ВеПеР т СгурЮ^гарЫс РгоЮсо1з,” Ргосеедт§з оР 1Ье 1991 1ЕЕЕ СотриЮг 8ос1е1у 8утрозшт оп КезеагсЬ т 8есигйу апд Рпуасу, 1991, рр. 234-248. 646. К.М. Соодтап апд АЛ. МсАи1еу, “А Ые^ Тгардоог Кпарзаск РиЬНс Кеу СгурЮзузЮт,” Адуапсез т СгурЮ1о§у: Ргосеедт^з оР ЕШОСКУРТ 84, 8рпп§ег-Уег1а§, 1985, рр. 150-158. 647. К.М. Соодтап апд АЛ. МсАи1еу, “А Ые\у Тгардоог Кпарзаск РиЬНс Кеу СгурЮзузЮт,” 1ЕЕ Ргосеедт^з, у. 132, рр Е, п. 6, Ыоу 1985, рр. 289-292. 648. О.М. Оогдоп, ‘ТНзсгеЮ Ео§ап1Ьт5 Т^зт^ 1Ье ЫитЬег Р1е1д 81еуе,” Ргерпп!, 28 Маг 1991. 649. Э.М. Согдоп апд К.8. МсСиг1еу, “Сотри1аНоп оР 01зсгеЮ Ьо§аг11Ьтз т Р1е1дз оР СЬагасЮпзНс Тж>,” ргезепЮд а11Ье гитр зеззюп оР СКУРТО ’91, Аи§ 1991. 650. Э.М. Оогдоп апд К.8. МсСиг1еу, “Мазз1уе1у Рага11е1 СотриЮНоп оР 01зсгеЮ Ьо^агкЬтз,” Адуапсез т СгурЮ1о§у—СКУРТО ’92 Ргосеедт^з, 8рпп§ег-Уег1а§, 1993, рр. 312-323. 763 651. ТА. Согдоп, “81гоп§ Рптез аге Еазу Ю Ртд,” Адуапсез т СгурЮ1о§у: Ргосеедт§з оР ЕШОСКУРТ 84, 8рппёег-Уег1а§, 1985, рр. 216-223. 652. ТА. Согдоп, “Уегу 81тр1е МеНюд Ю Ртд 1Ье МиПта1 Ро1упогша1 оР ап АгЬКгагу Ыоп-2его Е1етеп1 оР а Ртке Р1е1д,” ЕЮсЮотсз Ьекегз, у. 12, п. 25, 9 Бес 1976, рр. 663-664. 653. ТА. Оогдоп апд К. КеНип, “Аге В1§ 8-Вохез ВезР?” СгурЮ§гарЬу, Ргосеедт§з оР 1Ье \\ЮгкзЬор оп СгурЮ§гарЬу, Виг§ РеиегзЮт, Оегтапу, МагсЬ 29-АргП 2, 1982, 8рпп§ег- Уег1а§, 1983, рр. 257-262. 654. М. Оогезку апд А. К1аррег, “РеедЬаск Ке^зЮгз Вазед оп КагшГюд ЕхЮпзюп оР 1Ье 2-адю ЫитЬегз,” Адуапсез т СгурЮ1о§у— ЕШОСКУРТ ’94 Ргосеедт§з, 8рпп§ег-Уег1а§, 1995, Ю арреаг. 655. С08Т, Созидагз1уеппу1 81апдагд 28147-89, “СгурЮ^гарЫс РгоЮсНоп Рог Эа1а Ргосеззт§ 8узЮтз,” ОоуегптеШ СотткЮе оР 1Ье 1Л88К Рог 81апдагдз, 1989. (1п Кизз1ап.) 656. С08Т К 34.10-94, Созидагз1уеппу1 81апдагд оР Кизз1ап РедегаНоп, ‘ЧпРогтаНоп ЮсЬпо1о§у. СгурЮ§гарЫс Эа1а 8есиг11у. Ргодисе апд сЬеск ргоседигез оР Е1ес1гоп1с 01§11а1 81§па1иге Ьазед оп Азутте1г1С СгурЮ§гарЫс А1§ог11Ьт.” Соуеттеп! Сотт1иее оР 1Ье Киз51а Рог 81апдагдз, 1994. (1п Кизз1ап.) 657. С08Т К 34.11-94, Оозидагз1уеппу1 81апдагд оР Киз51ап РедегаНоп, “1пРогтаНоп 1есЬпо1о§у. СгурЮ§гарЫс Оа1а 8есип1у. НазЫп§ РипсПоп.” ОоуегптеШ СотткЮе оР 1Ье Кизз1а Рог 81апдагдз, 1994. (1п Киз81ап.) 658. К. СбиРей апд Н. Ы1едеггекег, “Оп 1Ье Ыпеаг Сотр1ехку оРРгодис!з оР 8ЫЙ-Ке§1з1ег 8ечиепсез,” Адуапсез 1п СгурЮ1о§у—Е1ЖОСКУРТ ’93 Ргосеед1п§з, 8рпп§ег-Уег1а§, 1994, рр. 151-158. 659. К. ОоиРей апд Н. ЭДедеггекег, “А Оепега1 Ьо^ег Воипд Рог 1Ье Ь1пеаг Сотр1ех11у оР 1Ье Ргодис! оР 8Ь1Й-Ке§1з1ег 8еяиепсез,” Адуапсез 1П СгурЮ1о§у—ЕШОСКУРТ ’94 Ргосеед1п§з, 8рГ1п§ег-Уег1а§, 1995, Ю арреаг. 660. I. уап де СгааР апд К. РегаЬа, “А 81тр1е апд 8есиге \Уау Ю 8Ьо\у 1Ье УаПд11у оР Уоиг РиЬПс Кеу,” Адуапсез 1п СгурЮ1о§у—СКУРТО ’87 Ргосеед1п§з, 8рпп§ег-Уег1а§, 1988, рр. 128-134. 661. Д. СгоИтап апд А.Ь. 8е1тап, “Сотр1ехку Меазигез Рог РиЬПс-Кеу СгурЮзузЮтз,” Ргосеед1п§з оР 1Ье 251Ь ШЕЕ 8утрозшт оп 1Ье РоипдаНопз оР СотриЮг 8Ыепсе, 1984, рр. 495-503. 662. С8А Редега1 81апдагд 1026, “Те1есоттиш- саПопз: Сепега1 8есиг11у Кеяи1гетеп1з Рог Еяшртеп! ТЛзгп^ 1Ье Оа1а ЕпсгурПоп 81апдагд,” Оепега1 8егу1сез Адт1п1з1гаНоп, Арг 1982. 663. С8А Редега1 81апдагд 1027, “Те1есоттип1са- Нопз: 1пЮгорегаЫП1у апд 8есигку Кеяи1гетеп1з
764 Прикладная криптография Гог Ше оГ Ые Оа1а ЕпсгурПоп 81апдагд Ы Ые РЬузюа! апд Оа1а Упк Ьауегз оГОа1а Соттиш- саНопз,” 0епега1 Зетсез Адт1тз1гаНоп, Зап 1983. 664. 08А Редега1 81апдагд 1028, “1п1егорегаЫЫу апд 8есип1у КеяшгетеШз Гог Ше оГ Ые Оа1а ЕпсгурПоп 81апдагд луЬЬ СС1ТТ Огоир 3 РасзтПе Еяшртеп1,” Оепега1 Зетсез Адгтшз1гаНоп, Арг 1985. 665. Р. Оиат, “Се11и1аг АиЫтаШп РиЬНс Кеу СгурЫзузЫтз,” Сотр1ех ЗузЫтз, V. 1, 1987, рр. 51-56. 666. Н. Оиап, “Ап Апа1уз1з оГ Ые Р1п11е Аи(ота(а РиЬНс Кеу А1§опЫт,” СН1ЫАСКУРТ ’94, Х1д1ап, СЫпа, 11-15 Ыоу 1994, рр. 120-126. (1п СЫпезе.) 667. С. СиапеИа, “Меапз Гог апд МеЫод Гог Зесге* 81§па1Пп§,” Е1.8. Ра*еп* #2,405,500, 6 Аи§ 1946. 668. М. Оиде, “Сопсер* Гог а Н^Ь-РегГогтапсе Капдот ИитЬег Оепега*ог Вазед оп РЬузюа1 Капдот РЬепотепа,” Ргеяиепг, V. 39, 1985, рр. 187-190. 669. М. Оиде, “Ет циазыдеакг 01еюЬуег*еПип§5§епега*ог Ьаз1егепд аиГ рЬуз1каПзсЬеп 2иГа11зрЬапотепеп,” РЬ.О. д138ег1аНоп, АасЬеп ШПуегзЬу оГ ТесЬпо1о§у, 1987. (1п Оегшап.) 670. Ь.С. ОиШои апд 3.-3. (2шзяиа1ег, “А РгасНса1 2его-Кпо\у1ед§е Рго1осо1 РЫед *о Зесигку Мюгоргосеззог МшШгЫё Во1Н Тгапзгтззюп апд Метогу,” Адуапсез т Сгур*о1о§у— ЕШОСКУРТ ’88 РгосеедЫ^з, 8рпп§ег-Уег1а§, 1988, рр. 123-128. 671. Ь.С. ОиШои апд 3.-3. (Зшзяиа*ег, “А ‘РагадохюаР ЫепЫу-Вазед 81§па1:иге ЗсЬете Кези1Нп§ Ггот 2его-Кпо\у1ед§е,” Адуапсез Ы Сгур*о1о§у—СКУРТО ’88 Ргосеедт§з, 8рпп§ег-Уег1а§, 1990, рр. 216-231. 672. Ь.С. ОиШои, М. Е^оп, апд 3.-3. С^шзяиаЫг, “ТНе Зтаг* Сагд: А 81апдагд12ед 8есип*у Оеуюе Оедюа*ед *о РиЬНс Сгур*о1о§у,” СоЫетрогагу Сгур*о1о§у: ТЬе ЗЫепсе оГ ЫГогтаНоп 1п*е§п1у, О. 81ттопз, ед., ШЕЕ Ргезз, 1992, рр. 561-613. 673. С.О. ОйпЫег, “АЬетаНп^ 8*ер ОепегаШгз СоЫгоИед Ьу де Вгиуп Зеяиепсез,” Адуапсез т Сгур1о1о§у—ЕШОСКУРТ ’87 Ргосеедт^з, 8рпп§ег-Уег1а§, 1988, рр. 5-14. 674. С.О. ОйпЫег, “Ап 1депН1у-Ьазед Кеу-ехсЬап§е РгоЮсо1,” Адуапсез т Сгур*о1о§у—ЕШОСКУРТ ’89 Ргосеедт§з, 8рпп§ег-Уег1а§, 1990, рр. 29-37. 675. Н. ОизтГзоп, Е. Эауузоп, апд В. СаеШ, “Сотрапзоп оГ В1оск ОрЬегз,” Адуапсез Ы Сгур1о1о§у—АИЗСКУРТ ’90 Ргосеедт^з, 8рпп§ег-Уег1а§, 1990, рр. 208-220. 676. Р. Ои*тапп, регзопа! соттишсаНоп, 1993. 677. Н. Ои1о\У112, “А Се11и1аг Аи1ота*оп Сгур1озуз1ет: ЗресШсаПоп апд Са11 Гог АПаск,” иприЬНзЬед тапизспр*, Аи§ 1992. 678. Н. ОиКлукг, “МеЫод апд АррагаЫз Гог ЕпсгурПоп, ОесгурНоп, апд АиЫепНсаНоп Шт° Оупагтса1 ЗузЫтз,” ШЗ. Ра*еп* #5,365,589, 15 Ыоу 1994. 679. Н. Ои1о\У11г, “Сгур1о§гарЬу ^кЬ Оупагшса1 8у8(етз,” Се11и1аг Аи1ота1а апд СоорегаНуе РЬепотепоп, К1и\уег АсадепПс Ргезз, 1993. 680. К.К. Оиу, “Но\у *о РасЫг а ЫитЬег,” РНЫ МапкоЬа СопГегепсе оп Ыитега1 МаЫетаНсз Соп§геззиз ЫитегапНит, у. 16, 1976, рр. 49-89. 681. К.К. Оиу, Т1п8о1уед РгоЫетз Ы РЫтЬег ТЬеогу, 8рпп§ег-Уег1а§, 1981. 682. 8. НаЬег апд \У.8. ЗЫгпеПа, “Но\у 1о Т1те- 81атр а 01§ка1 Ооситеп*,” Адуапсез т Сгур1о1о§у—СКУРТО ’90 Ргосеедт§з, 8ргт§ег-Уег1а§, 1991, рр. 437-455. 683. 8. НаЬег апд ^.8. ЗЮгпейа, “Но\у 1о Т1те- 8*атр а 01§ка1 Ооситеп*,” Зоигпа1 оГ Сгур*о1о§у, V. 3, п. 2, 1991, рр. 99-112. 684. 8. НаЬег апд ^.8. 81огпеКа, “Э^На! Эоситет Т1ше-81атр1П§ м1Ь Са1епа1е СегППса1е,” 11.3. Ра1еп1 #5,136,646, 4 Аи§ 1992. 685. 8. НаЬег апд \\^.8. 81огпеиа, “Ме1Ьод Гог Зесиге Т1те-81атрт§ оГ 01§11а1 Ооситеп1з,” 11.3. Ра1еп1 #5,136,647, 4 Аи§ 1992. 686. 3. НаЬег апд \\^.8. 81отейа, “Ме1Ьод оГ Ех1епдт§ 1Ье УаНд11у оГ а Сгур1о§гарЫс СегППса1е,” Ш8. Ра1еп1 #5,373,561,13 Эес 1994. 687. Т. НаЬи1зи, У. РЛзЫо, I. Зазазе, апд 8. Моп, “А 8есге1 Кеу Сгур1озуз1ет Ьу ИегаНп§ а СЬаоПс Мар,” ТгапзасНопз оГ 1Ье 1пзН1и1е оГ Е1ес1гошсз, ЫГогтаНоп, апд Соттип1саНоп Еп^теегз, у. Е73, п. 7, Ы1 1990, рр. 1041-1044. 688. Т. НаЬи1зи, У. Ы1зЫо, I. Зазазе, апд 8. Моп, “А 8есге1 Кеу Сгур1озуз1ет Ьу КегаПп§ а СЬаоПс Мар,” Адуапсез 1п Сгур1о1о§у—Е1ЖОСКУРТ ’91 Ргосеед1П§з, 8рпп§ег-Уег1а§, 1991, рр. 127- 140. 689. 8. Нада апд Н. Тапака, “Ап 1тргоуетеп1 ЗсЬете оГ ОЕЗ а§атз1 Е)1ГГегепНа1 Сгур1апа1уз15,” Ргосеед1п§з оГ Ые 1994 Зутроз1ит оп Сгур1о§гарЬу апд ЫГогтаНоп 8есиг11у (8С18 94), Ьаке В1\уа, ^арап, 27-29 Зап 1994, рр 14А.1-11. (1п Ырапезе.) 690. В.С.\У. На§еНп, “ТЬе 81огу оГ Ые На^еНп СгурЫз,” Сгур1о1о§1а, V. 18, п. 3, Ы1 1994, рр. 204-242. 691. Т. Напзеп апд О.Ь. Ми11еп, “РпгтНуе Ро1упот1а1з оуег Р1п11е Р1е1дз,” МаЫетаНсз оГ Сотри1аНоп, V. 59, п. 200, Ос1 1992, рр. 639- 643. 692. 8. Нагада апд 8. КазаЬага, “Ап Ю-Вазед Кеу 8Ьапп§ ЗсЬете \УНЬои1 РгеНт1паг>
Список литературы 765 СоттишсаПоп,” 1Е1СЕ Дарап, ТесЬтса1 КероП, 18ЕС89-38, 1989. (1п Дарапезе.) 693. 8. Нагап, “А Согге1аНоп СгурЮ^гарЫс ЗсЬете,” Е1ДКОССЮЕ ’90—1пЮгпаНопа1 Зутрозшт оп СосИп§ ТЬеогу, 8рпп§ег-Уег1а§, 1991, рр. 180— 192. 694. Т. Нагфопо апс! Д. ЗеЬеггу, “АиШепНсаНоп \\а Ми1Н-8етсе ТюкеЮ Ы Ше Кирегее Зегуег,” СотриЮг ЗесигНу—Е8СЖ1С8 94, §рпп§ег- Уег1а& 1994, рр. 144—160. 695. Ь. Наш апс! Т. Кле$1ег, “Ые\у ЗсЬете Гог 01^11а1 МиШз^паЮгез,” Е1ес1готсз ЬеПегз, V. 25, п. 15, 20 Ди1 1989, рр. 1002- 1003. 696. Ь. Нат апс! Т. К1ез1ег, “1тргоуес! КаЫп’з ЗсЬете умШ НщЬ ЕГПтепсу,” ЕЮсЮотсз Ьейегз, V. 25, п. 15, 20 Ди1 1989, р. 1016. 697. Ь. Нат апс! Т. Юез1ег, “Т\уо Ые\у ЕРПЫеШ СгурЮзузЮтз Вазес! оп КаЫп’з ЗсЬете,” РИШ Аппиа! СотриЮг ЗесипГу АррПсаПопз СопГегепсе, ШЕЕ СотриЮг 8ос1е1у Ргезз, 1990, рр. 263-270. 698. Ь. Нат апс1 Э.-С. \Уап§, “Сгур1апа1уз1з апс! МосПЯсаНоп оГ 01^11а1 81§паЮге ЗсЬете Вазес! оп Еггог-СоггесНп§ СоНез,” Е1ес1готсз ЬеПегз, V. 28, п. 2, 10 Дап 1992, р. 157-159. 699. Ь. Нат апс! У. Хи, “Оезщп оГ ОепегаНгес! Е10ата1 Туре 01§11а1 81§паЮге ЗсЬетез Вазес! оп 01зсгеЮ Ьо^апШт,” Е1ес1готсз ЬеПегз, V. 30, п. 24, 24 Ыоу 1994, р. 2025-2026. 700. Ь. Нат апс! 8. Уап§, “Огоир-ОпепЮс! 1Дпс!етаЫе 81§паЮге ЗсЬетез мШои! Ше Азз181апсе оГ а МиШаПу ТгизЮс! РаПу,” АсЫапсез т СгурЮ1о§у—А1Д8СКУ РТ ’92 РгосеесИп^з, 8рппвег-Уег1а§, 1993, рр. 133-142. 701. О. Нагрег, А. Мепегез, апс! 8. УапзЮпе, “РиЬНс- Кеу СгурЮзузЮтз мШ Уегу 8та11 Кеу Ьеп^Шз,” АНуапсез т СгурЮ1о§у— ЕШОСКУРТ ’92 РгосеесНп^з, 8рпп§ег-Уег1а§, 1993, рр. 163-173. 702. С. Нагрез, “ЫоЮз оп Н1§Ь ОгНег 01ГГегепНа1 Сгур1апа1уз15 оГ БЕЗ,” тЮгпа! героП, 8щпа1 апс! ЫГогтаНоп Ргосеззт^ ЬаЬогаЮгу, 3\У18з Рес1ега1 1пзНЮЮ оГТесЬпо1о§у, Аи§ 1993. 703. О.Ж НаП, “То ОесоНе 8ЬоП СгурЮ^гатз,” СоттитсаНопз оГ Ше АСМ, у. 37, п. 9, Зер 1994, рр. 102-108. 704. Д. Наз1ас1, “Оп 1Дзт§ КЗА \уИЬ Ьо\у Ехропет т а РиЬНс Кеу Ыеиуогк,” АсЫапсез т СгурЮ1о§у—СКУРТО ’85 РгосеесПп§5, 8рг1п§ег-Уег1а§, 1986, рр. 403-408. 705. Д. НазЮс! апс! А. ЗЬагтг, “ТЬе СгурЮ^гарЫс Зесигку оГ ТгипсаЮс! Ыпеаг1у Ке1аЮс! УапаЫез,” РгосеесНп§з оГ Ше 17Ш Аппиа1 АСМ Зутрозшт оп Ше ТЬеогу оГ СотриНп§, 1985, рр. 356-362. 706. К.С. Наизег апс1 Е.8. Ьее, “УепЯсаНоп апс! Мос!е1Ип§ оГ АиШепНсаНоп РгоЮсо1з,” Е80К1С8 92, РгосеесИп^з оГ Ше Зесопс! Еигореап Зутрозшт оп КезеагсЬ т СотриЮг Зесигку, 8рпп§ег-Уег1а& 1992, рр. 131-154. 707. В. Науез, “Апопутоиз Опе-Т1те З^паЮгез апс1 Р1ех1Ые ИтгасеаЫе ЕЮсЮошс СазЬ,” АсЫапсез т СгурЮЫ^у—А1Д8СКУРТ ’90 РгосеесНп^з, 8рпп§ег-Уег1а§, 1990, рр. 294-305. 708. Э.К. Не, “ЫДС РиЬНс Кеу СгурЮзузЮт апс! кз РгореП1ез,” СНГЫАСКУРТ ’94, Х1сНап, СЫпа, 11-15 Ыоу 1994, рр. 60-69. (1п СЫпезе.) 709. Д. Не апс! Т. К1ез1ег, “ЕпЬапсЫ§ Ше Зесигку оГ ЕЮатаГз ЗщпаШге ЗсЬете,” 1ЕЕ РгосеесНп^з оп СотриЮгз апс! 01§ка1 ТесЬтциез, V. 141, п. 3, 1994, рр. 193-195. 710. Е.Н. НеЬегп, “Е1ес1гошс СосНп§ МасЫпе,” 1Д.З. РаЮШ# 1,510,441, 30 Зер 1924. 711. N. НетЮе апс1 Д.О. Ту§аг, “А МоНе! Гог Зесиге РгоЮсо1з апс! Шек СотрозШопз,” РгосеесНп^з оГ Ше 1994 ШЕЕ СотриЮг 8ос1е1у Зутрозшт оп КезеагсЬ т Зесигку апс! Рпуасу, 1994, рр. 2-13. 712. М.Е. НеНтап, “Ап ЕхЮпзюп оГ Ше ЗЬаппоп ТЬеогу АрргоасЬ Ю СгурЮ^гарЬу,” ШЕЕ ТгапзасНопз оп ЫГогтаНоп ТЬеогу, V. 1Т-23, п. 3, Мау 1977, рр. 289-294. 713. М.Е. НеНтап, “ТЬе МаШетаНсз оГ РиЬНс-Кеу СгурЮ§гарЬу,” 8с1епНЯс Атепсап, у. 241, п. 8, Аи§ 1979, рр. 146-157. 714. М.Е. НеИтап, ‘Т>ЕЗ МИ Ве ТоЮИу Ызесиге \укМп Теп Уеагз,” ШЕЕ ЗресЮит, у. 16, п. 7, Ди1 1979, рр. 32-39. 715. М.Е. НеИтап, “Оп ОЕЗ-Вазес! ЗупсЬгопоиз ЕпсгурПоп,” Берн оГ Е1ес1пса1 Еп§1пеепп§, 81апГогс! 1Дп1уег811у, 1980. 716. М.Е. НеИтап, “А Сгур1апа1уНс Типе-Метогу ТгаНе ОГГ,” ШЕЕ ТгапзасНопз оп ЫГогтаНоп ТЬеогу, V. 26, п. 4, Ди1 1980, рр. 401-406. 717. М.Е. НеИтап, “АпоШег Сгур1апа1уНс АИаск оп ‘А СгурЮзузЮт Гог Ми1Нр1е Соттип1са110пз’,” ЫГогтаНоп Ргосезз1п§ ЁеПегз, V. 12, 1981, рр. 182-183. 718. М.Е. НеИтап, Ж ЭННе, апс! К.С. Мегк1е, “СгурЮ^гарЬ^с АррагаЮз апс! МеШоН,” 11.8. РаЮп! #4,200,770, 29 Арг 1980. 719. М.Е. НеИтап, Ж 01ГПе, апс! К.С. Мегк1е, “СгурЮ§гарЫс АррагаЮз апН МеШос!,” СапаНа Рают #1,121,480, 6 Арг 1982. 720. М.Е. НеИтап апс1 К.С. Мегк1е, “РиЬНс Кеу СгурЮ§гарЫс АррагаЮз апс! МеШоН,” 11.8. РаЮШ #4,218,582, 19 Аи§ 1980. 721. М.Е. НеИтап, К. Мегк1е, К. 8сЬгоерре1, Ь. \УазЫп§Юп, ОИГю, 8. РоЫщ, апс! Р. ЗсЬ\уе1Ю:ег, “КезиИз оГ ап 1п1На1 АПетр! Ю Сгур1апа1уге Ше ЫВЗ Оа1а ЕпсгурПоп 81апс!агс!,” ТесЬп1са1 КероП ЗЕЬ 76-042, ЫГогтаНоп ЗузЮтз ЬаЬ, ОераПтеп! оГ Е1ес1пса1 Еп§1пеепп§, ЗЮпГогс! 1Дп1уегз11у, 1976.
766 Прикладная криптография 722. М.Е. НеИтап апс! 8.С. РоНП§, “ЕхропепНаПоп Сгур(о§гарЫс АррагаШз апс1 Ме(Нод,” 11.8. Ра(еп( #4,424,414, 3 Зап 1984. 723. М.Е. НеНтап ап<31.М. Кеупеп, ‘Т)18(пЬиНоп оР Огата^е т (Не ОЕ8,” Адуапсез т Сгур(о1о§у: Ргосеедт^з оР Сгур(о 82, Р1епит Ргезз, 1983, рр. 129-131. 724. Р. Непдезз! апд М.К. АгеР, “А 8иссеззРи1 А((аск А§атз((Не ОЕ8,” ТЫгд Сапад1ап \УогкзНор оп 1пРогтаНоп ТНеогу апд АррНсаНопз, 8рпп§ег- Уег1а& 1994, рр. 78-90. 725. Т. Нег1ез(ат, “СпНса1 Кетагкз оп 8оте РиЬНс- Кеу Сгур(озу5(етз,” В1Т, у. 18, 1978, рр. 493- 496. 726. Т. Нег1ез(ат, “Оп РипсПопз оР Упеаг 8ЫА Ке§18(ег Зециепсез”, Адуапсез т Сгур(о1о§у— ЕШОСКУРТ ’85, 8рпп§ег-Уег1а& 1986, рр. 119-129. 727. Т. Нег1ез(ат апд К. 1оНаппеззоп, “Оп СотриНп§ Ео§ал(Нтз оуег ОР(2р),” В1Т, у. 21, 1981, рр. 326-334. 728. Н.М. Неуз апд 8.Е. Тауагез, “Оп (Не 8есип(у оР (Не СА8Т ЕпсгурПоп А1§оп(Нт,” Ргосеедт^з оР 1Не Сапад1ап СопРегепсе оп Е1ес1г1са1 апд Сотри(ег Еп§теепп§, НаПРах, Ыоуа 8соНа, 8ер. 1994, рр. 332-335. 729. Н.М. Неуз апд 8.Е. Тауагез, “ТНе Оез1§п оР 8иЬзН(иНоп-Регти(аНоп Ые(\УОгкз Кез15(ап( (о ОНРегепНа1 апд Ыпеаг Сгур(апа1уз1з,” Ргосеедт^з оР (Не 2пд Аппиа1 АСМ СопРегепсе оп Сотри(ег апд СоттитсаНопз 8есип(у, АСМ Ргезз, 1994, рр. 148-155. 730. Е. Неуз! апд Т.Р. Редегзоп, “Но^ !о Маке РаП- 81ор 81§па(игез,” Адуапсез т Сгур(о1о§у— ЕШОСКУРТ ’92 Ргосеедт^з, 8рпп§ег-Уег1а§, 1993, рр. 366-377. 731. Е. Неуз!, Т.Р. Редегзоп, апд В. РРНгтапп, “Ые\у Сопз(гисНоп оР РаП-8(ор ЗщпаШгез апд Ьо^ег Воипдз,” Адуапсез т Сгур!о1о§у—СКУРТО ’92 Ргосеедт^з, 8ргт§ег-Уег1а§, 1993, рр. 15-30. 732. Ь.8. НШ, “Сгур!о§гарНу т ап А1§еЬга1с А1рНаЪе(,” Атепсап Ма(НетаНса1 Моп!Н1у, у. 36, Ш-М 1929, рр. 306-312. 733. Р.ТМ. Нт, “СНаппе1-Еггог-СоггесНп§ Рпуасу Сгур!о5у51етз,” РН.Э. д1ззег(аНоп, Ое1А ип1уегз1!у оРТесНпо1о§у, 1986. (1п Ои(сН.) 734. К. Н1гзсНРе1д, “Макт§ Е1ес(готс КеРипдз 8аРег,” Адуапсез ш Сгур(о1о§у—СКУРТО ’92 Ргосеед»п§з, 8рпп§ег-Уег1а§, 1993, рр. 106-112. 735. А. Нод^ез, А1ап Типп§: ТНе Ет§та оР 1п(е1П§епсе, 81топ апд 8сНиз!ег, 1983. 736. \У. НоН1, X. Ьш, Т. МЫег, апд С. \Уа1дуо§е1, “8есип(у оР Иега!ед НазН РипсПопз Вазед оп В1оск ОрНегз,” Адуапсез т Сгур!о1о§у— СКУРТО ’93 Ргосеедт§з, 8рпп§ег-Уег1а§, 1994, рр. 379-390. 737. Р. НоотаеП, М. Оесгооз, I Уапде^аПе, апд К. ОоуаеПз, “Раз! К8А-Нагд\уаге: Огеат ог КеаП!у?” Адуапсез т Сгур!о1о§у— ЕШОСКУРТ ’88 Ргосеедт§з, 8рпп§ег-Уег1а§, 1988, рр. 257-264. 738. Р. НоотаеП, Т ОоиЬег!, апд У. Оезтед!, “ЕРПаеп! Нагд\уаге 1тр1етеп(аНоп оР (Не ОЕ8,” Адуапсез т Сгур!о1о§у: Ргосеедт§з оР СКУРТО 84, 8рпп§ег-Уег1а§, 1985, рр. 147-173. 739. Е. Ного\У1(2 апд 8. 8аНт, Рипдатеп!а1з оР Сотри!ег А1§оп(Нтз, КоскуШе, МО: Сотри!ег 8с1епсе Ргезз, 1978. 740. Р. Ногз!ег, Н. Ре!егзеп, апд М. М1сНе1з, “Ме(а- Е10ата1 81§па(иге 8сНетез,” Ргосеедт§з оР (Не 2пд Аппиа1 АСМ СопРегепсе оп Сотри!ег апд СоттитсаНопз 8есип(у, АСМ Ргезз, 1994, рр. 96-107. 741. Р. Ногз!ег, Н. Ре(егзеп, апд М. МюНе1з, “Ме!а Мезза§е Кесоуегу апд Ме!а ВПпд 8|§па(иге 8сНетез Вазед оп (Не 01зсге(е Ьо^агННт РгоЫет апд (НеА АррНсаНопз,” Адуапсез т Сгур(о1о§у—А81АСКУРТ ’94 Ргосеедт^з, 8рпп§ег-Уег1а§, 1995, рр. 224-237. 742. Ь.К. Ниа, 1п(годисНоп (о ЫитЬег ТНеогу, 8рпп§ег-Уег1а& 1982. 743. К. НиЬег, “8рес1аП2ед А((аск оп СНог-К1уез( РиЬНс Кеу Сгур(озу5(ет,” Е1ес(готсз Ье((егз, у. 27, п. 23, 7 Ыоу 1991, рр. 2130-2131. 744. Е. Ни^Нез, “А СурНегрипк’з МатРез(о,” 9 Маг. 1993. 745. Е. Ни^Нез, “Ап Епсгур(ед Кеу Тгапзпшзюп Рго(осо1,” ргезеп(ед а! (Не гитр зеззюп оР СКУРТО ’94, Аи§ 1994. 746. Н. Ни1е апд М.В. МиНег, “Оп (Не К8А- Сгур(озуз(ет \уКН ДУгоп§ Кеуз,” Соп(пЬиНопз (о Оепега1 А1§еЬга 6, У1еппа: Уег1а§ Н01дег- Р1сН1ег-Тетрзку, 1988, рр. 103-109. 747. Н.А. Низзшп, IV/Л. 8ада, апд 8.М. КаНрНа, “Ые\у Ми1(15(а§е Кпарзаск РиЬИс-Кеу Сгур(озуз(ет,” 1п(ета(1опа1 Зоита! оР 8уз(етз 8с1епсе, V. 22, п. 11, Ыоу 1991, рр. 2313-2320. 748. Т. Н\уап§, “А((аскз оп Окато(о апд Тапака’з Опе-\Уау Ю-Вазед Кеу 015(г1Ьи(1оп 8уз(ет,” 1пРогтаПоп Ргосеззт^ Ёе(!егз, V. 43, п. 2, Аи§. 1992, рр. 83-86. 749. Т. Н\уап§ апд Т.К.Ы. Као, “8есге( Еггог- Соггес(1п§ Содез (8ЕСС),” Адуапсез 1п Сгур(о1о§у—СКУРТО ’88 Ргосеед1п§з, 8рпп§ег-Уег1а§, 1990, рр. 540-563. 750. С. ГАпзоп апд С. МКсНеН, “8есип(у ОеРес(з т СС1ТТ КесоттепдаНоп Х.509—(Не ОАесШгу Аи(Неп(1са(1оп Ргате\Уогк,” Сотри(ег Соттит¬ саНопз Кеу1е\у, V. 20, п. 2, Арг 1990, рр. 30-34. 751. 1ВМ, “Соттоп Сгур(о§гарН1с АгсН1(ес(иге: Сгур(о§гарН1с АррПсаНоп Рго§гатт1п§ 1п(егРасе КеРегепсе,” 8С40-1675-1,1ВМ Соф., Ыоу. 1990.
Список литературы 752. 1ВМ, “Сошшоп Сгур!о§гарЫс АгсЬЬесШге: Сгур!о§гарЫс АррНсаНоп Рго§гаттт§ 1п!егГасе ЯеГегепсе—РиЬНс Кеу А1§оп!Ьт,” 1ВМ Согр., Маг 1993. 753. К.. 1тра§Иа220 апс1 М. Уип§, “ОНес! МЫтит- Кпо\у1ед§е Сотри!аНоп5,” Адуапсез т Сгур!о1о§у—СЯУРТО ’87 Ргосеедт§з, 8рпп§ег-Уег1а§, 1988, рр. 40-51. 754. I. 1п§етагззоп, “А Ые\у А1§оп!Ьт Гог 1Ье 8о1иНоп оГ !Ье Кпарзаск РгоЫет,” Ьес!иге Ыо1ез т Сотри!ег 8с1епсе 149; Сгур!о§гарЬу: Ргосеедт^з оГ !Ье \УогкзЬор оп Сгур!о§гарЬу, 8рпп§ег-Уег1а§, 1983, рр. 309-315. 755. I. 1п§етагззоп, ‘Т)е1ау ЕзНтаНоп Гог Тги1у Яапдот В тагу Зециепсез ог Но\у 1о Меазиге !Ье Ьеп§!Ь оГ Я|р уап \\Чпк1е’5 81еер,” СоттитсаНопз апд Сгур!о§гарЬу: Т\уо 81дез оГ Опе Тарез!гу, Я.Е. В1аЬи! е! а!., едз., К1шуег АдадепПс РиЬНзНегз, 1994, рр. 179-186. 756. I. 1п§етагззоп апд О.Т 81ттопз, “А Рго!осо1 № 8е! ир 8Ьагед 8есге! 8сЬетез ууЬЬои! 1Ье Аз515!апсе оГ. а Ми1иа11у Тгиз1ед РаНу,” Адуапсез ш Сгур!о1о§у—ЕЫЯОСЯУРТ ’90 Ргосеедт^з, 8рпп§ег-Уег1а§, 1991, рр. 266-282. 757. I. 1п§етагззоп, О.Т. Тап§, апд С.К. \Уоп§, “А СопГегепсе Кеу 01з!пЬиНоп 8уз!ет,” ШЕЕ ТгапзасНопз оп 1пГогтаНоп ТЬеогу, V. ГГ-28, п. 5, 8ер 1982, рр. 714-720. 758. 180 018 8730, “Вапкт§—Яеяшгетеп!з Гог Мезза§е АиШепПсаНоп (\УЬо1еза1е),” АззоааНоп Гог Раутеп! С1еапп§ 8етсез, Ьопдоп, 3и1 1987. 759. 180 018 8731-1, “Вапкт§—Арргоуед А1§оп!Ьтз Гог Мезза§е Аи!ЬепНсаНоп—РаП 1: ЫЕА,” АззоааНоп Гог Раутеп! С1еапп§ 8етсез, Ьопдоп, 1987. 760. 180 018 8731-2, “Вапкт§—Арргоуед А1§оп!Ьтз Гог Мезза§е Аи!ЬепПсаНоп—РаП 2: Мезза§е Аи!ЬепНса!ог А1§оп!Ьт,” АззоЫаНоп Гог Раутеп! С1еапп§ 8етсез, Ьопдоп, 1987. 761. 180 018 8732, “Вапкт§—Кеу Мапа^етеп! (\УЬо1еза1е),” АззоШаНоп Гог Раутеп! С1еапп§ 8етсез, Ьопдоп, Оес 1987. 762. 180/1ЕС 9796, “1пГогтаНоп ТесЬпо1о§у— 8есип!у ТесЬшяиез—01§Ьа1 81§па!иге 8сЬете 01у1п§ Мезза§е Яесоуегу,” 1п!егпаНопа1 Ог^атгаПоп Гог 8!апдагд12аНоп, 3и1 1991. 763. 180/1ЕС 9797, “Оа!а Сгур!о§гарЫс ТесЬшяиез—Оа!а 1п!е§п!у МесЬашзт Ызт§ а Сгур!о§гарЫс СЬеск РипсНоп Етр1оут§ а В1оск С1рЬег А1§оп!Ьт,” 1п!етаНопа1 Ог^ашгаНоп Гог 8!апдагд12аНоп, 1989. 764. 180 018 10118 ОЯАРТ, “МогтаНоп ТесЬпо1о§у— 8есип!у ТесЬшяиез—НазЬ РипсПопз,” 1п!егпа!юпа1 Ог^ашгаПоп Гог 8!апдагд12аНоп, 1989. 765. 180 018 10118 ОЯАРТ, “1пГогтаНоп ТесЬпо1о§у— 8есип!у ТесЬшяиез—НазЬ РипсПопз,” 1п!етаНопа1 Ог^ашгаНоп Гог 8!апдагд12аНоп, АргН 1991. 767 766. 180 N98, “НазЬ РипсПопз Ызт§ а Рзеидо Яапдот А1§оп!Ьт,” \уогкт§ доситеп!, 180- 1ЕС/ЗТС1/8С27ЛУ02, 1п!етаНопа1 Ог^атгаНоп Гог 8!апдагд12аНоп, 1992. 767. 180 N179, “АЯ Рт§егрпп! РипсНоп,” \Уогкт§ доситеп!, 180-1ЕС/ЛС1 /8С27/ \У02, 1п!етаПопа1 Ог^атгаНоп Гог 8!апдагд12аНоп, 1992. 768. 180/1ЕС 10118, ‘ТпГогтаНоп ТесЬпо1о§у— 8есип!у ТесЬшяиез—НазЬ РипсПопз—РаП 1: Оепега! апд РаП 2: НазЬ-РипсНопз Ызт§ ап п- ВН В1оск С1рЬег А1§оп!Ьт,” 1п!етаНопа1 Ог§ашгаПоп Гог 8!апдагд12аНоп, 1993. 769. К. Но, 8. Копдо, апд У. МНзиока, “8ХАЬ8/МВАЬ А1§оп!Ьт,” ТесЬтса1 ЯероП, 18ЕС93-68,1Е1СЕ Зарап, 1993. (1п Зарапезе.) 770. К.Я. 1уегзеп, “ТЬе АррПсаНоп оГ СгурЮ^гарЫс 2его-Кпо\у1ед§е ТесЬшяиез ш Сотри!епгед 8есге! Ва11о! Е1есНоп 8сЬетез,” РЬ.О. д15зеПаНоп, ЮТ-героП 1991:3, Иопуе^ап 1пзН!и!е оГТесЬпо1о§у, РеЬ 1991. 771. К.Я. 1уегзеп, “А Сгур!о§гарЫс 8сЬете Гог Сотри!епгед Оепега1 Е1есНопз,” Адуапсез т Сгур!о1о§у—СЯУРТО ’91 Ргосеедт^з, 8рпп§ег-Уег1а§, 1992, рр. 405-419. 772. К. 1\уатига, Т. Ма!зито!о, апд Н. 1та1, “Ап 1тр1етеп!аНоп Ме!Ьод Гог Я8А Сгур!озу5!ет \уЬЬ Рага11е1 Ргосеззт§,” ТгапзасНопз оГ !Ье 1п5!1!и!е оГ Е1ес!гошсз, 1пГогтаНоп, апд СоттишсаНоп Еп^теегз, у. 375-А, п. 8, Аи§ 1992, рр. 1301-1311. 773. \\и. ЗаЬигек, “А ОепегаНгаНоп оГ ЕЮатаГз РиЬНс Кеу Сгур!озу5!ет,” Адуапсез т Сгур!о1о§у—ЕЫЯОСЯУРТ ’89 Ргосеедш§з, 1990, 8рпп§ег-Уег1а§, рр. 23-28. 774. N.8. Затез, Я. Уд1, апд Н. Медеггейег, “Вгеакт§ Ше Саде ОрЬег,” Адуапсез т Сгур!о1о§у—СЯУРТО ’86 Ргосеедт^з, 1987, 8рг1п§ег-Уег1а§, рр. 60-63. 775. С.З.А. Запзеп, “Оп !Ье Кеу 8!ога§е Яеяи1гетеп!з Гог 8есиге Тегтта1з,” Сотри!егз апд 8есиг1!у, V. 5, п. 2, Зип 1986, рр. 145-149. 776. С.З.А. Запзеп, “1пуезП§аНопз оп ИопПпеаг 8!геатс1рЬег 8у5!етз: Сопз!гисНоп апд Еуа1иа!1оп МеШодз,” РЬ.О. д185еНаНоп, ТесЬп1са113п1уегз1!у оГОеШ, 1989. 777. С.З.А. Запзеп апд О.Е. Воекее, “Модез оГ В1оскс1рЬег А1§ог11Ьтз апд !Ье1г Рго!ес!10п а§а1пз! АсПуе Еауездгорр1п§,” Адуапсез т Сгур!о1о§у—ЕЫЯОСЯУРТ ’87 Ргосеед1п§з, 8рпп§ег-Уег1а§, 1988, рр. 281-286. 778. 8.М. Зепшп§5, “А 8реЫа1 С1азз оГ В1пагу 8еяиепсез,” РЬ.О. д15зеПа1юп, Ып1уег51!у оГ Ьопдоп, 1980. 779. 8.М. Зеппт^з, “МиЫр1ехед 8еяиепсез: 8оте РгореП1ез оГ !Ье МЫтит Ро1упот1а1,” Ьес!иге Ио1ез 1п Сотри!ег 8с1епсе 149; Сгур!о§гарЬу: Ргосеед1п§з оГ !Ье \\^огкзЬор оп Сгур!о§гарЬу, 8рпп§ег-Уег1а§, 1983, рр. 189-206.
768 780. 8.М. Зепшп§з, “Аи1осогге1аНоп РипсПоп оР Ше Ми1Нр1ехед 8ециепсе,” 1ЕЕ Ргосеедш^з, V. 131, п. 2, Арг 1984, рр. 169-172. 781. Т. Лп, “Саге апд Реедт§ оР Уоиг ТЬгее-Неадед Оо§,” Ооситеп! ЫитЬег 1АО-90-011, Не\у1еи- Раскагд, Мау 1990. 782. Т. Лп, “1лут§ унШ Уоиг ТЬгее-Неадед Оо§,” Ооситеп* ЫитЬег 1АО-90-012, Не^1еи-Раскагд, Мау 1990. 783. А. Л\уа, Л ЗеЬеггу, апд У. 2Ьеп§, “Веасоп Вазед АиШепНсаНоп,” Сотри1ег 8есигку—Е80К1С8 94, 8рпп§ег-Уег1а§, 1994, рр. 125-141. 784. О.В. Мтзоп, О.М. Оо1ап, М.Л Ке11у, А.У. Ле, апд 8.М. Ма1уаз, “Соттоп Сгур1о§гарЫс АгсЬкесШге Сгур1о§гарЫс АррЬсаНоп Рго§гаттт§ 1п1егРасе,” 1ВМ 8у81етз .1оигпа1, V. 30, п. 2, 1991, рр. 130-150. 785. О.В. ЗоЬпзоп, 8.М. Ма1уаз, А.У. Ье, апд ЛО. М1ктз, ‘Т)е51§п оР Ше Соттегс1а1 Оа1а Мазкт§ РасПку Оа1а Рпуасу А1§опШт,” 1з1 АСМ СопРегепсе оп Сотри1ег апд Соттитса¬ Нопз 8есигку, АСМ Ргезз, 1993, рр. 93-96. 786. ЛР. .1огдап, “А Уапат оР а РиЬЬс-Кеу Сгур1озу81еш Вазед оп Оорра Содез,” 8щас1 Ые\уз, у. 15, п. 1, 1983, рр. 61-66. 787. А. .1оих апд Ь. СгапЬои1ап, “А РгасНса1 Аиаск А§а1П81 Кпарзаск Вазед НазЬ РипсНопз,” Адуапсез т Сгур1о1о§у—ЕШОСКУРТ ’94 Ргосеедт^з, 8рпп§ег-Уег1а§, 1995,1о арреаг. 788. А. Л)их апд Л 81егп, “Сгур1апа1уз15 оР Апо1Ьег Кпарзаск Сгур1озуз1ет,” Адуапсез т Сгур1о1о§у—А81АСКУРТ ’91 Ргосеедт§з, 8рпп§ег-Уег1а§, 1993, рр. 470-476. 789. К.К. .Шепетап, “Апа1уз15 оР СеПат Азрес1з оР ОифиЬРеедЬаск Моде,” Адуапсез т Сгур1о1о§у: Ргосеедт^з оР Сгур1о 82, Р1епит Ргезз, 1983, рр. 99-127. 790. К.К. .Шепетап, “Е1ес1готс Ооситеп! АиШепНсаНоп,” ШЕЕ ИеНУОгк Ма^агте, у. 1, п. 2, Арг 1978, рр. 17-23. 791. К.К. Шепетап, “А №§Ь 8реед Машри1аНоп Ое1есНоп Соде,” Адуапсез т Сгур1о1о§у— СКУРТО ’86 Ргосеедт^з, 8рпп§ег-Уег1а§, 1987, рр. 327-346. 792. К.К. Зиепетап, 8.М. Ма1уаз, апд С.Н. Меуег, “Мезза^е АиШепНсаНоп лу!1Н Матри1аНоп Ое1есНоп Содез,” Ргосеедт§з оР Ше 1983 ШЕЕ Сотри1ег 8ос1е1у 8утрозшт оп КезеагсЬ т 8есип1у апд Рпуасу, 1983, рр. 733-54. 793. К.К. Шепетап, 8.М. Ма1уаз, апд С.Н. Меуег, “Мезза§е АиШепНсаНоп,” ШЕЕ СоттитсаНопз Ма^аяте, V. 23, п. 9, 8ер 1985, рр. 29-40. 794. О. КаЬп, ТЬе СодеЬгеакегз: ТЬе 81огу оР 8есге1 >Уп1т§, Ые\у Уогк: МастШап РиЬНзЬт§ Со., 1967. 795. О. КаЬп, КаЬп оп Содез, Ые\у Уогк: МастШап РиЬЬзЫп^Со., 1983. Прикладная криптография 796. О. КаЬп, 8е121п§ Ше Еш^та, ВозЮп: Нои^Ыоп Ы'Шп Со., 1991. 797. Р. Каузег, Т. Рагкег, апд О. Ртказ, “8Е8АМЕ: ТЬе 8о1иНоп 1о 8есип1у Рог Ореп 01з1пЬи1ед 8уз1етз,” .1оита1 оР Сотри1ег СоттитсаНопз, у. 17, п. 4, М 1994, рр. 501-518. 798. К. КаПаг апд У.О. ОП§ог, “Оп ВеНеР ЕуоШНоп т АиШепНсаНоп Рго1осо1з,” Ргосеедт§з оР Ше Сотри1ег 8есип1у РоипдаНопз ХУогкзЬор 1У, ШЕЕ Сотри1ег 8оЫе1у Ргезз, 1991, рр. 102-116. 799. В.8. КаНзк1, “А Рзеидо Капдот ВК ОепегаШг Вазед оп ЕШрНс Ло^апШтз,” Маз1ег’з Шез1з, МаззасЬизеПз 1пзНиие оРТесЬпо!о§у, 1987. 800. В.8. КаЬзк1,1еиег 1о Ы18Т ге§агдш§ 088, 4 Ыоу 1991. 801. В.8. КаНзк!, “ТЬе М02 Мезза^е 01§ез1 А1§опШт,” КРС 1319, Арг 1992. 802. В.8. КаНзк1, “Рпуасу ЕпЬапсетеШ Рог 1п1ете1 Е1ес1гошс МаП: РаП 1У: Кеу СегНР1са1ез апд Ке1а1ед 8етсез,” КРС 1424, РеЬ 1993. 803. В.8. КаЬзк!, “Ап Оуете\у оР Ше РКС8 81апдагдз,” К8А ЬаЬога1ог1ез, Ыоу 1993. 804. В.8. КаНзк1, “А 8игуеу оР ЕпсгурПоп 81апдагдз, ШЕЕ М1сго, у. 13, п. 6, Оес 1993, рр. 74-81. 805. В.8. КаНзк!, регзопа1 соттишсаПоп, 1993. 806. В.8. КаПзк1, “Оп Ше 8есип1у апд РегРогтапсе оР 8еуега1 Тг1р1е-ОЕ8 Модез,” К8А ЬаЬога1ог1ез, дгай тапизспр!, .1ап 1994. 807. В.8. КаНзк1, К.Ь. К1уез1, апд А.Т. 8Ьегтап, “1з Ше Оа1а ЕпсгурПоп 81апдагд а Огоир?”, Адуапсез 1п Сгур1о1о§у—ЕШОСКУРТ ’85, 8рпп§ег-Уег1а§, 1986, рр. 81-95. 808. В.8. КаНзк1, К.Ь. К1уез1, апд А.Т. 8Ьегтап, “1з Ше Оа1а ЕпсгурПоп 81апдагд а Риге С1рЬег? (КезиЬз оР Моге Сус1т§ Ехрег1теп1з 1п ОЕ8),” Адуапсез т Сгур1о1о§у—СКУРТО ’85 Ргосеед1п§з, 8рпп§ег-Уег1ав, 1986, рр. 212-226. 809. В.8. КаНзк!, К.Ь. К1уез1, апд А.Т. 8Ьегтап, “1з Ше Оа№ ЕпсгурПоп 81апдагд а Огоир? (КезиЬз оР СусПп§ Ехрег1теп1з оп ОЕ8),” ]оита1 оР Сгур1о1о§у, у. 1, п. 1, 1988, рр. 3-36. 810. В.8. КаПзк1 апд М.ЛВ. КоЬзЬа\у, “Раз! В1оск С1рЬег Ргороза!,” Раз1 8оК\уаге ЕпсгурПоп, СатЬг1д§е 8есигку \УогкзЬор РгосеесЬп^з, 8рпп§ег-Уег1а§, 1994, рр. 33-40. 811. В.8. КаНзк! апд М.ТВ. КоЬзЬа\у, “Ыпеаг Сгуртпа1уз15 Нз1п§ Ми1Нр1е Арргох1таНопз,” Адуапсез 1п Сгур1о1о§у—СКУРТО ’94 Ргосеед1п§з, 8рпп§ег-Уег1а§, 1994, рр. 26-39. 812. В.8. КаЬзк1 апд МЛ.В. КоЬзЬа\у, “Ыпеаг Сгур1апа1уз15 Нз1п§ Ми1Нр1е Арргох1таНопз апд РЕАЬ,” К.1Л Ьеиуеп \УогкзЬор оп Сгур1о§гарЫс А1§ог1Штз, 8рпп§еГ‘Уег1а§, 1995,1о арреаг. 813. К.О. Каттег, з1а1етеп! ЬеРоге Ше Ь.8. §оуеттеп1 8иЬсотгтиее оп
Список литературы Те1есоттитсаНопз апд Ртапсе, СотгшИее оп Епег§у апё Соттегсе, 29 Арг 1993. 814. Т. Капеко, К. Коуата, апд К. Тегада, “Оупагшс 3\уаррш§ ЗсЬетез апс! ОНГегепНа! Сгур!апа1уз15, Ргосеедт§з оР 1Ье 1993 Когеа-Зарап \УогкзЬор оп МогтаНоп 8есип!у апд Сгур!о§гарЬу, 8еои1, Когеа, 24-26 Ос! 1993, рр. 292-301. 815. Т. Капеко, К. Коуата, апд К. Тегада, “Оупагшс 8\уаррт§ ЗсЬетез апд 01РГегепНа1 Сгур!апа1уз1з,” ТгапзасНопз оР !Ье 1пзН!и!е оР Е1ес!готсз, МогтаНоп, апд СоттитсаНоп Еп§теегз, V. Е77-А, п. 8, Аи§ 1994, рр. 1328-1336. 816. Т. Капеко апд Н. М1уапо, “А 8!иду оп !Ье 3!геп§рЬ Еуа1иаНоп оР КапдопПгед ЬЕЗ-Уке Сгур1озу51етз а§атз! СЬозеп Р1ат!ех! Аиаскз,” Ргосеедт&з оР !Ье 1993 Зутрозшт оп Сгур!о§гарЬу апд МогтаНоп 8есип!у (8С18 93), ЗЬигеп^, }арап, 28-30 Зап 1993, рр. 15С.1-10. 817. 3. Кап, “А Сгур!озуз!ет Вазед оп РгорозШопа1 Ьо^с,” МасЫпез, Ьап§иа§ез, апд Сотр1ехку: 5!Ь 1п!егпаНопа1 МееНп§ оР Уоип§ Сотри!ег 8с1епНз!з, 8е1ес!ед Соп!пЬи!юпз, Зрпп^ег- УеНав, 1989, рр. 210-219. 818. Е.О. Кагпт, ЗЖ Огеепе, апд М.Е. Не11тап, “Оп ЗЬапп§ Зесге! Зу5!етз,” ШЕЕ ТгапзасНопз оп МогтаНоп ТЬеогу, V. ГГ-29, 1983, рр. 35-41. 819. РЖ Каз1зк1, 01е ОеЬетзсЬпЙеп ипд сЬе ОесЫРГпг-кипз!, Е.8. МШег ипд ЗоЬп, 1863. (1п Оегтап.) 820. А. КеЬпе, 3. ЗсЬоп^аШег, апс! Н. Ьап§епдогРег, “А Ыопсе-Вазед Рго!осо1 Рог Ми1Нр1е АиШепНсаНопз,” ОрегаНп§ 8уз1ет5 Кеу1е\у, у. 26, п. 4, Ос! 1992, рр. 84-89. 821. 3. Ке1зеу, регзопа1 соттишсаНоп, 1994. 822. К. Кеттегег, “Апа1угт§ ЕпсгурПоп Рго!осо1з Озт§ Рогта1 УепПсаНоп ТесЬшяиез,” ШЕЕ Зоигпа1 оп 8е1ес!ес1 Агеаз т СоттитсаНопз, у. 7, п. 4, Мау 1989, рр. 448-457. 823. К. Кеттегег, С.А. МеаНочуз, апс! 3. МШеп, “ТЬгее 8уз!ет5 Рог Сгур!о§гарЫс Рго!осо1 Апа1уз1з,” Зоита1 оРСгур!о!о§у, V. 7, п. 2, 1994, рр. 79-130. 824. З.Т. Кеп!, “ЕпсгурНоп-Вазед Рго!есНоп Рго!осо1з Рог 1п!егасНуе 13зег-Сотри!ег СоттитсаНопз,” М1Т/ЬС8/ТК-162, М1Т ЬаЬога!огу Рог Сотри!ег Заепсе, Мау 1976. 825. З.Т. Кеп!, “Рпуасу ЕпЬапсетеп! Рог Мете! Е1ес!готс Май: Раг! II: СегНГ1са!е-Вазес1 Кеу Мапа^етеп!,” КРС 1422, РеЬ 1993. 826. З.Т. Кеп!, ‘Т1пдегз!апдт§ !Ье 1п!ете! СегНРюаНоп 8уз!ет,” Ргосеедт^з оР 1ЫЕТ ’93, ТЬе Мегпе! 8ос1е!у, 1993, рр. ВАВ1-ВАВ10. 827. З.Т. Кеп! апд 3. Ыпп, “Рпуасу ЕпЬапсетеп! Рог 1п!ете! Е1ес!готс МаШ Раг! II: СегНР|са!е-Ва8ед Кеу Мапа§етеп!,” КРС 1114, Аи§ 1989. 828. У. Кезз1ег апд О. \Уес!е1, “А17ГОШС—Ап Адуапсед Ьо§ю оР АиШепНсаНоп,” Ргосеедш§з оР 769 !Ье Сотри!ег 8есип!у РоипдаНопз МогкзЬор VII, ШЕЕ Сотри!ег 8оае!у Ргезз, 1994, рр. 90-99. 829. Е.Ь. Кеу, “Ап Апа1уз18 оР !Ье 8!гис!иге апс! Сотр1ех1!у оР ЫопПпеаг Втагу Зеяиепсе Оепега!огз,” ШЕЕ ТгапзасНопз оп МогтаНоп ТЬеогу, у. 1Т-22, п. 6, Иоу 1976, рр. 732-736. 830. Т. Юез1ег апд Ь. Нат, “КЗА В1оскт§ апс1 Ми1Нз1§па!иге ЗсЬетез лу1!Ь N0 В К Ехрапзюп,” Е1ес!гошсз ЬеИегз, V. 26, п. 18, 30 Аи§ 1990, рр. 1490-1491. 831. 3. КШап, Е^зез оРКапдотпезз т А1§оп!Ьтз апс! Рго!осо1з, М1Т Ргезз, 1990. 832. 3. КШап, “АсЫеут§ 2его-Кпо\у1ед§е КоЬизНу,” Адуапсез т Сгур!о1о§у—СКУРТО ’90 Ргосеедт§з, 8рпп§ег-Уег1а§, 1991, рр. 313-325. 833. 3. КШап апс! Т. Ье1§Ь!оп, “РаПзаРе Кеу Езсго^,” М1Т/1Х8/ТК-636, М1Т ЬаЬогаЮгу Рог Сотри!ег Зшепсе, Аи§ 1994. 834. К. Ют, “Сопз!тсНоп оР ОЕ8-1Лке 8-Вохез Вазед оп Воо1еап РипсПопз 8аНз!ут§ !Ье 8АС,” Адуапсез т Сгур!о1о§у—А81АСКУРТ ’91 Ргосеедт§з, 8рпп§ег-Уег1а§, 1993, рр. 59-72. 835. К. Ют, 8. Ьее, апд 3. Рагк, “Ыесеззагу СопдШопз !о 8!геп§!Ьеп ОЕЗ 8-Вохез А^атз! Ьтеаг Сгур!-апа1уз15,” Ргосеедт§з оР !Ье 1994 Зутрозшт оп Сгур!о§гарЬу апд МогтаНоп 8есип!у (ЗС18 94), Ьаке В1\уа, Зарап, 27-29 Зап 1994, рр. 150.1-9. 836. К. Ют, 8. Ьее, апд 3. Рагк, “Но\у !о 3!геп§!Ьеп ОЕЗ а^атз! 01РГегеп!1а1 АИаск,” иприЬНзЬед тапизспр!, 1994. 837. К. Ют, 8. Ьее, 8. Рагк, апд О. Ьее, “ОЕЗ Сап Ве Ьптипе !о ОЬРегепНа! Сгур!апа1уз1з,” \УогкзЬор оп 8е1ес!ед Агеаз т Сгур!о§гарЬу—\УогкзЬор Кесогд, Юп§з!оп, Оп!апо, 5-6 Мау 1994, рр. 70-81. 838. К. Ют, 3. Рагк, апд 8. Ьее, “Но\у № 8!геп§!Ьеп ОЕЗ а^атз! Т^о КоЬиз! АКаскз,” Ргосеед1поз оР !Ье 1995 Зарап-Когеа \УогкзЬор оп МогтаНоп ЗесигЬу апд Сгур!о§гарЬу, 1пиуата, Зарап, 24- 27 Зап 1995, 173-182. 839. К. Ют, 8. Рагк, апд 3. Ьее, “Кесопз!гисНоп оР з20Е8 8-Вохез апд !Ье1г 1ттит!у !о 01ррегеп!1а1 Сгур!апа1уз18,” Ргосеед1п§з оР !Ье 1993 Когеа- Зарап \УогкзЬор оп 1пРогтаНоп 8есиг1!у апд Сгур!о§гарЬу, 8еои1, Когеа, 24-26 Ос! 1993, рр. 282-291. 840. 8. Ют апд В.8. 11т, “А МиШригрозе МетЬегзЫр РгооР 8уз!ет Вазед оп 01зсге!е Ьо§ап!Ьт,” Ргосеед1п§з оР !Ье 1993 Когеа-Зарап \УогкзЬор оп МогтаНоп 8есип!у апд Сгур!о§гарЬу, 8еои1, Когеа, 24-26 Ос! 1993, рр. 177-183. 841. Р. Юпписап, ‘Т)а!а ЕпсгурПоп Оигиз: ТисЬтап апд Меуег,” Сгур!о1о§1а, V. 2, п. 4, Ос! 1978. 842. А. Юаррег, “ТЬе Уи1пегаЬШ!у оР Сеоте!г1с Зеяиепсез Вазед оп Р1е1дз оР Одд СЬагас1епзНс,” Зоита! оРСгур!о1о§у, у. 7, п. 1, 1994, рр. 33-52.
770 Прикладная криптография 843. А. Юаррег, “РеекЬаск \укЬ Саггу ЗЫК Ке§1зЮгз оуег РШке ШеШз,” К.1Г Ьеиуеп \УогкзЬор оп СгурЮ^гарЫс А1§опШтз, 5рпп§ег-Уег1а§, 1995, Ю арреаг. 844. А. Юаррег апс1 М. Согезку, “2-адю ЗЫК Ке§1зЮгз,” Раз! ЗоГПуаге ЕпсгурПоп, СатЬпд°е Зесигку \Уогкз1юр РгосеедШ§з, Зрпп§ег-Уег1а§, 1994, рр. 174-178. 845. А. Юаррег апс1 М. Согезку, “2-адю ЗЫк Ке^зЮгз,” ТесЬтса1 КероН #239-93, ОераПтеп!: оГ Сотри1ег ЗЫепсе, Ш1Уегзку оГКеМиску, 19 Арг 1994. 846. А. Юаррег апс1 М. Согезку, “Ьаг§е Репод Ыеаг1у де Вгиуп РСЗК Зециепсез,” Аауапсез Ш СгурЮ1о§у—ЕШОСКУРТ ’95 Ргосеедт§з, 8рпп§ег-Уег1а§, 1995, рр. 263-273. 847. О.У. Юет, “ ‘РоШп§ Ше Сгаскег’: А Зигуеу оГ, апс1 ЬпрПсаПопз Ю, Разз\УОгс1 Зесигку,” РгосеедШ§з оГ Ше Е13ЕЫ1Х Ш1Х Зесигку \УогкзЬор, Аи§ 1990, рр. 5-14. 848. О.У. Юет, регзопа1 соттишсаПоп, 1994. 849. С.5. Юте апс! СЛ. Рорек, “РиЬНс Кеу уз. СопуепНопа! Кеу СгурЮзузЮтз,” Ргосеедт§з оГ АР1РЗ ЫаПопа1 СотриЮг СопГегепсе, рр. 831-837. 850. Н.-Е КпоЫосН, “А ЗтаП Саге! 1тр1етеп1аПоп оГ Ше Р1а1-ЗЬатк ИепППсаНоп ЗсЬете,” Аауапсез Ш СгурЮ1о§у—ЕШОСКРУТ ’88 Ргосеедт§з, Зрпп°ег-Уег1а§, 1988, рр. 87-95. 851. Т. КпорЬ, Е РгОЫ, \У. Ве11ег, апд Т. С1ез1ег, “А Нагс1\уаге 1тр1етеп1аНоп оГ а МодШед ЭЕЗ А1§опШт,” МюгоргосеззШ§ апс1 Мюгорго§гаттт§, у. 30, 1990, рр. 59-66. 852. Ь.К. Кпидзеп, “Сгур1апа1уз1з оГ ЕОЮ,” Аауапсез т СгурЮ>1о§у—А31АСКУРТ ’91 РгосеедШ§з, 8рпп°ег-Уег1а", 1993, рр. 22-35. 853. Ь.К. Кпидзеп, “Сгур1апа1уз1з оГ ЬОК1,” СгурЮ§гарЬу апс1 Содт§ III, МЛ. Сап1еу, ед., ОхГогс!: С1агепс1оп Ргезз, 1993, рр. 223-236. 854. Ь.К. Кпидзеп, “Сгур1апа1уз1з оГ ЬОК191,” Аауапсез Ш СгурЮ1о§у—АШСКУРТ ’92 РгосеесНп§з, Зрпп§ег-Уег1а§, 1993, рр. 196-208. 855. Ь.К. Кпис15еп, “ИегаПуе СЬагасЮпзНсз оГ ОЕЗ апс! з20ЕЗ,” Аауапсез Ш СгурЮ1о§у—СКУРТО ’92, Зрпп§ег-Уег1а§, 1993, рр. 497-511. 856. ОК.. Кпидзеп, “Ап Апа1уз1з оГ К1т, Рагк, апс! Ьее’з ОЕЗ-Ыке З-Вохез,” иприЬНзИес1 тапизспр!, 1993. 857. Ь.К. Кпидзеп, “РгасНсаПу Зесиге Ре1зЮ1 С1рИегз,” Раз1 ЗоГПуаге ЕпсгурПоп, СатЬпд§е Зесигку \УогкзЬор РгосеесНп^з, Зрпп§ег-Уег1а°, 1994, рр. 211-221. 858. Ь.К. Кпидзеп, “В1оск С1рЬегз—Апа1уз1з, Оез1§п, АррПсаПопз,” РН.Э. сНззеЛаНоп, АагЬиз Екпуегзку, Ыоу 1994. 859. Ь.К. Кпидзеп, регзопа! соттишсаПоп, 1994. 860. Ь.К. Кпис15еп, “АррПсаПопз оГ РП§Ьег Огс1ег 01ГГегепНа1з апд РагНа1 01ГГегепНа1з,” К.II. Ьеиуеп \УогкзЬор оп СгурЮ^гарЫс А1§огкЬтз, Зрпп§ег-Уег1а§, 1995,1о арреаг. 861. Ь.К. Кпидзеп апс1 X. Ьа1, ‘ЧЧе\у Аиаскз оп АН ОоиЫе В1оск Ьеп§Ш НазЬ РипсНопз оГ НазЬ КаЮ 1, 1пс1идт§ Ше Рага11е1-ОМ,” Адуапсез т СгурЮ1о§у—ЕШОСКУРТ ’94 Ргосеедт§з, Зрпп&ег-Уег1а§, 1995, Ю арреаг. 862. Ь.К. Кпидзеп, “А У/еакпезз Ш ЗАРЕК К-64,” Адуапсез Ш Сгурю1о§у-СКУРТО ‘95 РгосеедШ^з, Зрпп»ег-Уег1а§, 1995, Ю арреаг. 863. О. КпиШ, ТЬе АП оГ СотриЮг Рго§гаттт§: Уо1ите 2, Зеттитепса! А1§опШтз, 2пд едкюп, Адд150п-\Уез1еу, 1981. 864. О. КпиШ, “Оес1рЬепп§ а Ыпеаг Соп§гиепНа1 ЕпсгурПоп,” ШЕЕ ТгапзасНопз оп ШГогтаНоп ТЬеогу, у. ГГ-31, п. 1,Шп 1985, рр. 49-52. 865. К. КоЬауазЫ апд Ь. АоЫ, “Оп Ыпеаг Сгур1апа!уз15 оГ МВАЬ,” РгосеедШ^з оГШе 1995 Зутрозшт оп СгурЮ§гарЬу апд ШГогтаНоп Зесигку (8С15 95), Шиуата, Шрап, 24-27 Шп 1995, рр. А4.2.1-9. 866. К. КоЬауазЫ, К. Татига, апд У. ИетоЮ, “Т\уо- д1теп5юпа1 Мод1Пед КаЫп СгурЮзузЮт,” ТгапзасНопз оГ Ше ШзНШЮ оГ Е1ес1готсз, ШГогтаНоп, апд СоттишсаПоп Еп°теегз, у. 372-0, п. 5, Мау 1989, рр. 850-851. (1п Шрапезе.) 867. N. КоЬПю, “Е1ПрНс Сигуе СгурЮзузЮтз,” МаШетаПсз оГ СотриЮНоп, у. 48, п. 177, 1987. рр. 203-209. 868. N. КоЫкг, “А РатПу оГ ШсоЫапз ЗикаЫе Гог 01зсгею Ьо§ СгурЮзузЮтз,” Адуапсез т СгурЮ1о§у—СКУРТО ’88 Ргосеед1поз, Зрг1поег-Уег1а§, 1990, рр. 94-99. 869. N. КоЫкг, “Сопз1гисНп§ Е1ПрПс Сигуе СгурЮзузЮтз т СЬагасЮг1зНс 2,” Адуапсез 1п Сгурю1о§у—СКУРТО ’90 Ргосеед1п§з, Зрпп§ег-Уег1а§, 1991, рр. 156-167. 870. N. КоЬПю, “НурегеШрНс СгурЮзузЮтз,” Зоита1 оГСгурЮ1о§у, у. 1, п. 3, 1989, рр. 129-150. 871. N. КоЬПю, “СМ-Сигуез \укЬ Соод СгурЮ^гарЫс Ргореи1ез,” Адуапсез т СгурЮ1о§у—СКУРТО ’91 Ргосеед1п§з, Зрпп§ег-Уег1а§, 1992, рр. 279-287. 872. ф.К. Ко?, “Н1§Ь-8реед КЗА 1тр1етеп1аНоп,” Уегз10п 2.0, КЗА ЬаЬогаЮпез, NоV 1994. 873. МЛ. КосЬапзЫ, “Кетагкз оп Ьи апд Ьее’з Ргороза1з,” СгурЮ1о§1а, V. 4, п. 4, 1980, рр. 204- 207. 874. МЛ. КосЬапзЫ, “Оеуе1ор1п§ ап КЗА СЫр,” Адуапсез 1п Сгурю1о§у—СКУРТО ’85 Ргосеед1п§5, Зрппоег-Уег1а§, 1986, рр. 350-357. 875. ТТ. КоЫ, “ТЬе Нзе оГЕпсг>'рПоп т КегЬегоз Гог Nе1VVогк АиШепНсаНоп,” Адуапсез т СгурЮ1о§у—СКУРТО ’89 Ргосеед1п§з, 8рпп§ег-Уег!а§, 1990, рр. 35-43.
Список литературы 771 876. З.Т. КоЫ, “ТНе ЕуоЫНоп оГ Ые КегЬегоз АиЫепНсаНоп 8етсе,” ЕигОреп СопГегепсе РгосеедЫ^з, Мау 1991, рр. 295-313. 877. З.Т. КоЫ апс1 В.С. Ыеитап, “ТЬе КегЬегоз Ые!луогк АиЫепНсаНоп 8етсе,” КРС 1510, 8ер 1993. 878. З.Т. КоЫ, В.С. Ыеитап, апс! Т. Тз’о, “ТНе ЕуоЫНоп оГ Ые КегЬегоз АиЫепНсаНоп 8уз!ет,” 01з1пЬи1ед Ореп 8уз!етз, ШЕЕ Сотри!ег 8ос1е!у Ргезз, 1994, рр. 78-94. 879. КоЬпГеЫег, “Толуагд а РгасНса! РиЬНс Кеу Сгур1озуз1ет,” ВасНе1ог’з Ыез15, М1Т ОераПшеп! оГЕ1ес!пса! Еп^теепп^, Мау 1978. 880. А.О. КопНе1т, Сгур!о§гарНу: А Рптег, Ыелу Уогк: ЗоНп \УПеу & 8опз, 1981. 881. А.О. КопНет, М.Н. Маек, К.К. МсЫеШ, В. Тискегтап, апс! С. \УаЫЬаит, “ТНе 1Р8 Сгур!о&гарЫс Рго&гатз,” 1ВМ 8уз!етз Зоигпа!, у. 19, п. 2, 1980, рр. 253-283. 882. УЛ. КоггЫк апс! АЛ. ТигкЫ, “Сгур!апа1уз1з оГ МсЕИесе’з РиЬИс-Кеу Сгур1озу51ет,” Адуапсез т Сгур!о1о§у—Е1ЖОСКУРТ ’91 Ргосеедт^з, 8рпп§ег-Уег1а§, 1991, рр. 68-70. 883. 8.С. КоЫап, “ОепегаПгед Ыпеаг ТНгезНоМ 8сНете,” Адуапсез Ы Сгур!о1о§у: Ргосеедт^з оГ СКУРТО 84, 8рппёег-Уег1а& 1985, рр. 231-241. 884. 3. КолуаЫЬик, В.Р. 8сЬапп1п§, апд 8. Ро\уегз, “СоттитсаНоп Рпуасу: ЫЫ^гаНоп оГ РиЬНс апд 8есге! Кеу Сгур!о§гарНу,” РгосеедЫ^з оГ Ые ЫаНопа! Те1есоттишсаПоп СопГегепсе, ШЕЕ Ргезз, 1980, рр. 49.1.1-49.1.5. 885. К. Коуата, “А Маз!ег Кеу Гог Ые К8А РиЬПс- Кеу Сгур1озуз1ет,” ТгапзасНопз оГ !Не 1пзН1и!е оГ Е1ес!гошсз, ЫГогтаНоп, апд СоттитсаНоп Еп^пеегз, у. 36543, п. 2, РеЬ 1982, рр. 163-170. 886. К. Коуата, “А Сгур1озу5!ет Шп^ !Не Маз!ег Кеу Гог МиЫ-Аддгезз СоттитсаНопз,” ТгапзасНопз оГ Ые 1пзН!и!е оГ Е1ес!гошсз, ЫГогтаНоп, апд СоттитсаНоп Еп^пеегз, у. 365-Э, п. 9, 8ер 1982, рр. 1151-1158. 887. К. Коуата, “Оетопз1гаНп§ МетЬегзЫр оГ а Огоир из1Пё Ые 8Ы2иуа-Коуата-1!оН (8К1) Рго!осо1,” РгосеедЫ§з оГЫе 1989 8утрозшт оп Сгур1о&гарНу апд ЫГогтаНоп 8есип!у (8С18 89), Оо!епЬа, Зарап, 1989. 888. К. Коуата, “01гес1 ОетопзЫаНоп оГ Ые Ролуег !о Вгеак РиЬИс-Кеу Сгур1озуз!етз,” Адуапсез т Сгур!о1о§у—А1Л8СКУРТ ’90 Ргосеедт§з, 8рпп§ег-Уег1аё, 1990, рр. 14-21. 889. К. Коуата, “8есип!у апд ЗЛтцие Оес1рНегаЫП!у оГ Тлуо-д1тепзюпа1 РиЬНс Кеу Сгур!озу51етз,” ТгапзасНопз оГ Ые ЫзНиИе оГ Е1ес!готсз, ЫГогтаНоп, апд СоттитсаНоп ЕпёЫеегз, у. Е73, п. 7, 3и1 1990, рр. 1057-1067. 890. К. Коуата, 1Л.М. Маигег, Т. Окато!о, апд 8.А. Уапз!опе, “Ыелу РиЬИс-Кеу 8сНетез Вазед оп Е1ПрНс Сигуез оуег Ые КЫ§ 2п,” Адуапсез Ы Сгур1о1о§у—СКУРТО ’91 Ргосеедт^з, 8рпп§ег-Уег1аё, 1992, рр. 252-266. 891. К. Коуата апд К. ОЫа, “1депН!у-Ьазед СопГегепсе Кеу 01з1пЬиНоп 8уз!ет,” Адуапсез т Сгур!о1о§у—СКУРТО ’87 Ргосеедт^з, 8рпп§ег-Уег1а§, 1988, рр. 175-184. 892. К. Коуата апд Т. Окато!о, “ЕШрНс Сигуе СгурЫзузЫтз апд ТНеН АррНсаНопз,” 1Е1СЕ ТгапзасНопз оп ЫГогтаНоп апд 8уз!етз, V. Е75- Э, п. 1, Зап 1992, рр. 50-57. 893. К. Коуата апд К. Тегада, “Нолу !о 81геп§Ыеп ОЕ8-1лке СгурЫзузЫтз а^атз! ОНГегепНа1 Сгур!апа1уз15,” ТгапзасНопз оГ Ые ЫзНОИе оГ Е1ес!готсз, ЫГогтаНоп, апд СоттитсаНоп Еп^теегз, V. Е76-А, п. 1, Зап 1993, рр. 63-69. 894. К. Коуата апд К. Тегада, “РгоЬаЬЫзНс 8луаррт& 8сНетез !о 81геп§Ыеп ОЕ8 а^аЫз! ОНГегепПа1 Сгур!апа1у513,” Ргосеедт^з оГ Ые 1993 8утрозшт оп СгурЫ^гарНу апд ЫГогтаНоп 8есип!у (8С18 93), ЗНигеп^, Зарап, 28-30 Зап 1993, рр. 150.1-12. 895. К. Коуата апд У. Тзигиока, “8реедт§ ир ЕШрНс Сгур!озуз1етз Нз1пе а 8Ы&1ед Втагу \УЫдолу МеЫод,” Адуапсез т Сгур!о1о§у—СКУРТО ’92 Ргосеедт^з, 8рпп§ег-Уег1а§, 1993, рр. 345-357. 896. Е. КгапаЫз, РптаЫу апд Сгур1о§гарНу, \УПег- ТеиЬпег 8епез Ы Сотри!ег 8с1епсе, 1986. 897. О. Кгау112, “ОфЫ 81§па!иге А1&опЫт,” 13.8. Ра!еп! #5,231,668, 27 3и1 1993. 898. О. КгауИг апд I. Кеед, “Ех!епзюп оГ К8А Сгур!оз!гис!иге: А Оа1о1з АрргоасН,” Е1ес!готсз ЬеИегз, у. 18, п. 6, 18 Маг 1982, рр. 255-256. 899. Н. Кгалусгук, “Нолу !о РгедЫ! Соп§гиепНа1 Оепега!огз,” Адуапсез т Сгур1о1о&у—СКУРТО ’89 Ргосеедт^з, 8рпп§ег-Уег1аё, 1990, рр. 138— 153. 900. Н. Кгалусгук, “Нолу 1о Ргед1с! Соп§гиепНа1 Оепега1огз,” Зоита1 оГ А1§опЫтз, V. 13, п. 4, Оес 1992, рр. 527-545. 901. Н. Кгалусгук, “ТНе 8Нппкт§ ОепегаЫг: 8оте РгасНса1 Сопз1дегаПопз,” Раз! 8ойлуаге ЕпсгурПоп, СатЬг1д§е 8есиг1!у \УогкзНор Ргосеед1п§з, 8рппёег-Уег1а§, 1994, рр. 45-46. 902. О.З. КйЬп, “А1§опЫтз Гог 8е1Г-8упсЬгош2т§ С1рНегз,” Ргосеед1п§з оГСОМ8Ю 88, 1988. 903. О.З. КйЬп, Р. Вгилуег, апд \У. 8тН, “’п У1пп1§е Уее1доеП§е Епкпрз1еу1окк1е,” РгосеедЫ§5 оГ ЫГозес 90, 1990. (1п АГпкаапз.) 904. 8. КиПЬаск, 8!аНзНса1 МеЫодз 1п Сгур!апа1уз1з, 1Л.8. Ооуегптеп! РппНп§ ОГПсе, 1935. КерпШед Ьу Ае^еап Рагк Ргезз, 1976. 905. Р.У. Китаг, К.А. 8сЬо1!г, апд Ь.К. \Уе1сН, “ОепегаПгед Веп! РипсПопз апд Ые1г Ргорег!1ез,” Зоита1 оГ СотЫпаНопа! ТНеогу, 8епез А, у. 40, п. 1, 8ер 1985, рр. 90-107.
772 Прикладная криптография 906. М. КигозаЫ, Т. Ма1зито1о, апс! Н. 1тш, “81тр1е МеЫоНз Гог МиШригрозе СегНПсаНоп,” РгосеесПп^з оГ Ые 1989 Зутрозшт оп СгурЫ^гарЬу апс! ЫГогтаНоп ЗесипСу (8С13 89), Оо1епЬа, Ырап, 1989. 907. М. КигозаЫ, Т. Ма1зито1о, апс! Н. 1та1, “РгоуЫ§ Ыа1 Уои Ве1оп§ Ю а1 Ьеаз1 Опе оГ Ые 8рес1Пес1 Сгоирз,” РгосеесПп^з оГ Ые 1990 Зутрозшт оп Сгур1о§гарЬу апс1 ЫГогтаНоп 8есип1у (8С18 90), НЫопсЫга, Ырап, 1990. 908. К. Кигоза\уа, “Кеу СЬап^еаЫе Ю-Вазес! Сгур1озуз1ет,” Е1ес1готсз ЬеПегз, V. 25, п. 9, 27 Арг 1989, рр. 577-578. 909. К. Кигоза\уа, Т. Но, апс! М. ТакеисЫ, “РиЬПс Кеу Сгур1озуз1ет Ызт^ а Кес1ргоса1 ЫитЬег \уПЬ Ые Зате 1пПас1аЬШ1у аз Рас1опп& а Ьаг^е ЫитЬег,” Сгур1о1о&1а, V. 12, п. 4, Ос1 1988, рр.225-233. 910. К. Кигоза\уа, С. Рагк, апс! К. Закапо, “Огоир З^пег/Уепйег ЗерагаНоп ЗсЬете,” РгосеесПп§з оГ Ые 1995 Ырап-Когеа \УогкзЬор оп ЫГогтаНоп 8есип1у апс! Сгур1о&гарЬу, Ыиуата, Ырап, 24-27 Ып 1995, 134-143. 911. О.С. Кш12, О. ЗЬапкз, апс! Н.С. \УПНатз, “Раз! РптаП1у Тез1з Гог ЫитЬегз Ьезз Ыап 50*109,” МаЫетаНсз оГ СотрШаНоп, V. 46, п. 174, Арг 1986, рр. 691-701. 912. К. КизиНа апс! Т. Ма1зито1о, “ОрНгтгаНоп оГ Ые Т1те-Метогу Тгас1е-ОГГ Сгур1апа1уз1з апс! Из АррПсаПоп 1о В1оск ОрЬегз,” РгосеесПп^з оГ Ые 1995 Зутрозшт оп СгурЮ^гарЬу апс! ЫГогтаНоп Зесигку (8С18 95), Ыиуата, Ырап, 24-27 .1ап 1995, рр. АЗ.2.1-11. (1п Ырапезе.) 913. Н. Ки\уакас!о апс! К. Коуата, “ЗесигЬу оГЯЗА- Туре Сгур1озуз1етз Оуег Е1ПрНс Сигуез а^ашз! Наз1ас1 Аиаск,” Е1ес1готсз ЬеПегз, V. 30, п. 22, 27 Ос1 1994, рр. 1843-1844. 914. Н. Ки\уакас1о апс! К. Коуата, “А Ые\у К8А- Туре Сгур1озуз1ет оуег 8т§и1аг ЕЫрНс Сигуез,” 1МА СопГегепсе оп АррПсаПопз оГ Ртке Р1е1с18, ОхГогс! 11туегз11у Ргезз, 1о арреаг. 915. Н. Ки\уакас1о апс! К. Коуата, “А Ые\у Я8А- Туре ЗсЬете Вазес! оп 8т§и1аг СиЫс Сигуез,” РгосеесПп^з оГ Ые 1995 Ырап-Когеа \УогкзЬор оп ЫГогтаНоп 8есип1у апс! СгурЫ^гарЬу, Ыиуата, Ырап, 24-27 1ап 1995, рр. 144-151. 916. М. К\уап, “Ап Е^Ы В к \Уеакпезз т Ые ЬОК1 Сгур1озуз1ет,” 1есЬтса1 герой, АизПаПап ОеГепзе Рогсе АсаПету, Арг 1991. 917. М. К\уап апс! 3. Р1ерггук, “А Оепега1 Ригрозе ТесЬтцие Гог ЬосаНп^ Кеу ЗскесЫПп^ \Уеакпезз Ы ОЕЗ-Ыке СгурЫзузЫтз,” Акуапсез т Сгур1о1о&у—А81АСКУРТ ’91 РгосеесПп^з, 8рпп§ег-Уег1а§, 1991, рр. 237-246. 9.18. ЬВ. Ьасу, Э.Р. МксЬеП, апс! \У.М. ЗсЬеИ, “Сгур1оЫЬ: Сгур1о§гарЬу т 8ой\уаге,” 1Ж1Х Зесигку Зутрозшт 1У РгосеесПп^з, Ы8ЕМХ АззоЫаНоп, 1993, рр. 1-17. 919. ЬС. Ьа^апаз, “Кпарзаск РиЬПс Кеу Сгур1озуз1етз апс! ОюрЬапНпе Арргох1таНопз,” Акуапсез т Сгур1о1о§у: Ргосеект^з оГ Сгур1о 83, Р1епит Ргезз, 1984, рр. 3-23. 920. ЬС. Ьа^апаз, “РегГогтапсе Апа1уз1з оГ ЗЬатк’з Аиаск оп Ые Вазш Мегк1е-Не11тап Кпарзаск Сгур1озуз1ет,” ЬесШге Ыо1ез т Сотри1ег ЗЫепсе 172; Ргосеект^з оГЫе 11Ы 1п1егпаНопа1 СоИоцишт оп Аи1ота1а, Ьап&иа§ез, апк Рго^гатпИп^ (1САЬР), Зрип^ег-УеНа^, 1984, рр. 312-323. 921. ЬС. Ьа^апаз апс! А.М. ОсПугко, “8о1ут& Ьо\у- Оепз11у 8иЬзе1 Зит РгоЫетз,” Ргосеект§з оГ Ые 24Ы ШЕЕ Зутрозшт оп РоипкаНопз оГ Сотри1ег ЗЫепсе, 1983, рр. 1-10. 922. ЬС. Ьа^алаз апс! А.М. ОсПугко, “ЗоМп^ Ьо\у- Оепз11у ЗиЬзе! Зит РгоЫетз,” Ыита! оГ Ые АСМ, у. 32, п. 1, Ып 1985, рр. 229-246. 923. ЬС. Ьа^алаз апс1 ЯееНз, “Ып1цие Ех1гаро1аНоп оГ Ро1упогша1 Яесиггепсез,” 81АМ 1оигпа1 оп СотриНп^, у. 17, п. 2, Арг 1988, рр. 342-362. 924. X. Ьа1, Ое1аПес1 ОезспрНоп апс1 а Зой^аге 1тр1етеп1аНоп оГ Ые 1РЕ8 С1рЬег, иприЬПзЬес! тапизспр!, 8 Ыоу 1991. 925. X. Ьа1, Оп Ые Эез^п апс! 8есип1у оГ В1оск С1рЬегз, ЕТН Зепез Ы ЫГогтаНоп Ргосезз1п§, у. 1, Копз1апг: Найип§-Оогге Уег1а§, 1992. 926. X. Ьа1, регзопа! соттип1саНоп, 1993. 927. X. Ьа1, “Н1§Ьег ОгНег ОепуаНуез апс1 01ГГегепНа1 Сгур1апа1уз1з,” Соттип1саНопз апс1 Сгур1о§гарЬу: Т\уо 81с1е5 оГ Опе ТарезЫу, Я.Е. В1аЬи1 е1 а!., ес1з., К1и\уег Ас1ас1ет1с РиЬПзЬегз, 1994, рр. 227-233. 928. X. Ьа1 апс! Ь. КпиНзеп, “Аиаскз оп ЭоиЫе В1оск Ьеп§Ы НазЬ РипсНопз,” Раз1 8ой\уаге ЕпсгурПоп, СатЬиН^е ЗесигЬу \УогкзЬор РгосеесПп^з, Зрип^ег-УеНа^, 1994, рр. 157-165. 929. X. Ьа1 апс! Ь Маззеу, “А Ргороза! Гог а Ые\у В1оск ЕпсгурПоп 81апс1агс1,” АНуапсез 1п Сгур1о1о§у—ЕЫКОСКУРТ ’90 РгосеесПп^з, 8рпп§ег-Уег1а§, 1991, рр. 389-404. 930. X. Ьа1 апс! I. Маззеу, “НазЬ РипсНопз Вазес! оп В1оск С1рЬегз,” АНуапсез Ы Сгур1о1о§у— ЕЫКОСКУРТ ’92 РгосеесПп^з, 8рг1п§ег-Уег1а§, 1992, рр. 55-70. 931. X. Ьа1, I. Маззеу, апс1 8. МифЬу, “Магкоу С1рЬегз апс! 01ГГегепНа1 Сгур1апа1уз1з,” АНуапсез 1п Сгур1о1о§у—ЕЫКОСЯУРТ ’91 РгосеесПп^з, 8рпп§ег-Уег1аё, 1991, рр. 17-38. 932. X. Ьа1, Я.А. Яиерре1, апс! ]. \Уоо11уеп, “А Раз! Сгур1о§гарЫс СЬескзит А1§опЫт Вазес! оп 81геат С1рЬегз,” АсЫапсез 1п Сгур1о1о§у— АЫ8СКУРТ ’92 РгосееЫп§з, 8рг1п§ег-Уег1а§, 1993, рр. 339-348.
Список литературы 933. С.8. ЬаШ, IV. Ьее, С.Н. СЬеп, апс! Ь. Нагп, “А Ые\у ЗсЬете Гог Ю-Ьазей СгурЮзузЮтз апс! З^паШгез,” Зоигпа1 оГ Ше СЫпезе 1пзНшю оГ Еп^теегз, V. 15, п. 2, Зер 1992, рр. 605-610. 934. В.А. ЬаМассЫа апс! А.М. ОсИугко, “Сотри1аНоп оГ 01зсгеЮ Ьо^апШтз т Рпте Р1е1йз,” Оез1§пз, Сос!ез, апс! СгурЮ^гарЬу, V. 1, 1991, рр. 46-62. 935. Ь. ЬатроН, “Разз\Уогй ЫепНЯсаНоп \укЬ 1пзесиге СоттитсаНопз,” СоттитсаНопз оГ Ше АСМ, V. 24, п. 11, Ыоу 1981, рр. 770-772. 936. 3. Ьапс!аи, “2его-Кпо\у1ей&е апс! 1Ье ОераПшеп! оГ ОеГепзе,” N011 сез оГ Ше Атепсап МаШетаНса1 8ос1е!у, V. 35, п. 1, Зап 1988, рр. 5-12. 937. 8. Ьапс!аи, 8. Кеп1, С. Вгоокз, 8. СЬагпеу, О. Оеппт§, Ж ОННе, А. Ьаиск, О. М1ккег, Р. Ыеитапп, апс! О. 8оЬе1, “Сойез, Кеуз, апс! СопШсЮ: 1ззиез т Ы.8. СгурЮ РоЬсу,” КероП оГ а Зрес1а! Рапе1 оГ Ше АСМ Ы.8. РиЬНс РоИсу СоттЬЮе (ЫЗАСМ), Аззос1аНоп Гог СотриНп^ МасЫпегу, Зип 1994. 938. 8.К. Ьап§Гогй апс1 М.Е. НеНтап, “Сгур1апа1уз18 оГ ОЕЗ,” ргезепЮй а! 1994 КЗА Оа1а Зесигку сопГегепсе, Кейжюй ЗЬогез, СА, 12-14Зап 1994. 939. О. ЬарШо! апс! А. ЗЬагшг, “РиЬНс!у УепНаЫе Ыоп-1пЮгасНуе 2его-Кпо\у!ей§е РгооГз,” Айуапсез т СгурЮ1о§у—СКУРТО ’90 Ргосеейт^з, 8рпп§ег-Уег1а&, 1991, рр. 353-365. 940. А.У. Ье, З.М. Ма!уаз, О.В. ЗоЬпзоп, апс! 3.0. \УПктз, “А РиЬИс-Кеу ЕхЮпзюп Ю Ше Соттоп СгурЮ^гарЫс АгсЬкесШге,” 1ВМ ЗузЮтз Зоита!, V. 32, п. 3, 1993, рр. 461-485. 941. Р. Ь’Есиуег, “ЕГПс1еп1 апс! РоПаЫе СотЫпей Капйот ЫитЬег ОепегаЮгз,” СоттитсаНопз оГ Ше АСМ, у. 31, п. 6, Зип 1988, рр. 742-749, 774. 942. Р. Ь’Есиуег, “Капйот ИитЬегз Гог 81ти1аНоп,” СоттитсаНопз оГ Ше АСМ, у. 33, п. 10, Ос1 1990, рр. 85-97. 943. Р.З. Ьее апй Е.Р. ВпскеИ, “Ап ОЬзегуаНоп оп Ше 8есип!у оГ МсЕНесе’з РиЬИс-Кеу СгурЮзузЮт,” Айуапсез т Сгур1о!о§у—ЕЫКОСКУРТ ’88 Ргосеейт^з, Зрип^ег-УеНаё, 1988, рр. 275-280. 944. 8. Ьее, 3. 8ип§, апй К. К1т, “Ап ЕРПс1еп{ МеШой Ю Ртй Ше Ьтеаг Ехргеззюпз Гог Ьтеаг Сгур1апа1уз1з,” Ргосеейт^з оГ Ше 1995 Когеа- Зарап \УогкзЬор оп 1пГогтаНоп Зесигку апй СгурЮ^гарЬу, 1пиуата, Зарап, 24-26 Зап 1995, рр. 183- 190. 945. О.З. ЬеЬтапп, “Оп Рпта1ку Тез{з,” 81АМ Зоигпа1 оп СотриНп§, у. 11, п. 2, Мау 1982, рр. 374-375. 946. Т. Ье1§Ьюп, “РаПзаГе Кеу Езсго\у ЗузЮтз,” ТесЬшса1 Мето 483, МП ЬаЬогаЮгу Гог СотриЮг Зс1епсе, Аи§ 1994. 947. А. Ьетре1 апй М. СоЬп, “Мах1та! РатШез оГ Веп! Зециепсез,” ШЕЕ ТгапзасНопз оп 773 1пГогтаНоп ТЬеогу, у. ГГ-28, п. 6, Ыоу 1982, рр. 865-868. 948. А.К. ЬепзЮа, “РасЮпп§ МиШуапаЮ Ро1упогша1з Оуег Ртке Р1е1йз,” Зоигпа! оГ СотриЮг ЗузЮт 8с1епсе, V. 30, п. 2, Арг 1985, рр. 235-248. 949. А.К. ЬепзЮа, регзопа! соттитсаНоп, 1995. 950. А.К. ЬепзЮа апй 8. НаЬег, 1е1Юг Ю МЗТ Ке§агШп§ 088, 26 Ыоу 1991. 951. А.К. ЬепзЮа, Н.\У. ЬепзЮа Зг., апй Ь. Ьоуасг, “РасЮпп§ Ро1упот1а1з \укЬ КаНопа1 СоеШс1еп1з,” МаШетаНзсЬе Аппа1еп, у. 261, п. 4, 1982, рр. 515-534. 952. А.К. ЬепзЮа, Н.\У. ЬепзЮа, Зг., М.З. Мапаззе, апй З.М. РоИагй, “ТЬе ЫитЬег Р1е1й 31еуе,” Ргосеейт^з оГ Ше 22пй АСМ Зутрозшт оп Ше ТЬеогу оГСотриНп^, 1990, рр. 574-572. 953. А.К. ЬепзЮа апй Н.\У. ЬепзЮа, Зг., ейз., ЬесШге ЫоЮз т МаШетаНсз 1554: ТЬе Оеуе1ортеп{ оГ Ше ЫитЬег Р1е!й 81еуе, 8рпп§ег-Уег1а§, 1993. 954. А.К. ЬепзЮа, НЖ ЬепзЮа, Зг., М.З. Мапаззе, апй З.М. РоИагй, “ТЬе РасЮпгаНоп оГ 1Ье МпШ Регта! ЫитЬег,” МаШетаНсз оГ СотриЮНоп, V. 61, п. 203, 1993, рр. 319-349. 955. А.К. ЬепзЮа апй М.З. Мапаззе, “РасЮпп§ Ьу Е1ес{готс Май,” Айуапсез т СгурЮ1о§у— ЕЫКОСКУРТ ’89 Ргосеейт^з, 8рг1п§ег-Уег1а§, 1990, рр. 355-371. 956. А.К. ЬепзЮа апй М.З. Мапаззе, “РасЮпп^ луИЬ Т^о Ьаг§е Рптез,” Айуапсез т Сгурю1о§у— ЕЫКОСКУРТ ’90 Ргосеейт^з, 8рпп§ег-Уег1а§, 1991, рр. 72-82. 957. НЖ ЬепзЮа Зг. “ЕШрНс Сигуез апй ЫитЬег- ТЬеогеНс А1§опШтз,” КероП 86-19, МаШетаНзсЬ 1пз1кии1, Ытуегзкек уап АтзЮгйат, 1986. 958. Н.\У. ЬепзЮа Зг. “Оп Ше СЬог-К1уез1 Кпарзаск СгурЮзузЮт,” Зоита! оГ Сгур1о1о§у, V. 3, п. 3, 1991, рр. 149-155. 959. \У.З. ЬеУецие, Рипйатеп1а!з оГ ЫитЬег ТЬеогу, АйЙ15опЖез!еу, 1977. 960. Ь.А. Ьеу1п, “Опе-\Уау РипсПопз апй Рзеийо- Капйот ОепегаЮгз,” Ргосеейт^з оГ Ше 17Ш АСМ Зутрозшт оп ТЬеогу оГ СотриНп^, 1985, рр. 363-365. 961. Ьехаг СогрогаНоп, “Ап Еуа1иа11оп оГ Ше ОЕЗ,” Зер 1976. 962. О.-Х. Ц “Сгур1апа1уз18 оГ РиЬИс-Кеу 01з{пЬиНоп ЗузЮтз Вазей оп 01скзоп Ро1упот1а1з,” Е1ес1готсз ЬеПегз, V. 27, п. 3, 1991, рр. 228-229. 963. Р.-Х. Ы, “Но\у Ю Вгеак ОкатоЮ’з СгурЮзузЮтз Ьу Соп11пией РгасНоп А1§опШт,” А31АСКУРТ ’91 АЬз1гас{з, 1991, рр. 285-289. 964. У.Х. Ы апй Х.М. \Уап§, “А Зот1 АиШепНсаНоп апй Епсгур{1оп ЗсЬете Вазей оп А1§еЬга1с СоЙ1п§ ТЬеогу,” АррНей А1&еЬга, А1§еЬга1с
774 Прикладная криптография А1§опШтз апс! Еггог СоггесНп§ Сокез 9, Зрг1п§ег-Уег1а§, 1991, рр. 241-245. 965. К. Ык1, О.Ь. Ми11еп, апк О. ТипуаЫ, Рктап Мопо§гарЬз апк Зигуеуз т Риге апк АррПек МаШетаНсз 65: Оюкзоп Ро1упогта1з, Ьопкоп: Ьоп§тап ЗЫепНПс апк ТесЬшса!, 1993. 966. К. Ык1 апк \У.В. МиИег, “РегтиШНоп Ро1упогта1з 1п ЯЗА-СгурЮзузЮтз,” Акуапсез т СгурЮ1о§у: РгосееШп&з оР СгурЮ 83, Р1епит Ргезз, 1984, рр. 293-301. 967. Я. Ык1 апк \У.В. МиИег, “СепегаНгаНопз оР Ше РШопасЫ Рзеикорптез Тез1,” 01зсгеЮ МаШетаНсз, V. 92, 1991, рр. 211-220. 968. Я. Ык1 апк М.В. МйНег, “Рпта1ку ТезНп§ \укЬ Ьисаз РипсНопз,” Акуапсез 111 Сгурю1о§у— АЫЗСЯУРТ ’92 Ргосеект§з, Зрг1п§ег-Уег1а§, 1993, рр. 539-542. 969. Я. ЫП1, \У.В. МиИег, апк А. Оз\уа1к, “Зоте Яетагкз оп ЗПоп§ РШопасЫ Рзеикорптез,” АррПсаЫе А1§еЬга т Еп§теепп& СоттишсаПоп апк СотриНп§, V. 1, п. 1, 1990, рр. 59-65. 970. Я. Ык1 апк Ы. ЬПекеггекег, “Ртке Р1е1кз,” Епсус1орек1а оР МаШетаНсз апк кз АррПсаПопз, V. 20, АкШзоп-У/езку, 1983. 971. Я. Ык1 апк Н. ЬПекеггекег, ШИокисПоп Ю Ртке Р1е1кз апк ТЬеп АррПсаПопз, Ьопкоп: СатЬпк^е Ытуегзку Ргезз, 1986. 972. К. ЫеЬегЬегг, “ЫшРогт Сотр1ехку апк 01§ка1 З^паПпез,” ТНеогеНса1 СотриЮг Зшепсе, V. 16, п. 1, Ос1 1981, рр. 99-110. 973. С.Н. Ут апк Р.Ь Ьее, “А РгасНса1 Е1есИотс СазЬ ЗузЮт Гог ЗтаП Сагкз,” Ргосеект^з оР Ше 1993 Когеа-Зарап \УогкзЬор оп 1пРогтаНоп Зесигку апк СгурЮ§гарЬу, Зеои), Когеа, 24-26 Ос1 1993, рр. 34-47. 974. С.Н. Ут апк Р.Ь Ьее, “Зесигку оР 1пЮгасПуе ОЗА ВаЮЬ УепПсаНоп,” ЕЮсПошсз ЬеПегз, у. 30, п. 19, 15 Зер 1994, рр. 1592-1593. 975. Н.-У. Ып апк Ь. Нагп, “А ОепегаПгек Зесге! ЗЬапп§ ЗсЬете \укЬ СЬеаЮг ОеЮсНоп,” Акуапсез т СгурЮ1о§у—А31АСЯУРТ ’91 Ргосеект^з, Зрпп§ег-Уег1а§, 1993, рр. 149-158. 976. М.-С. Ып, Т.-С. СЬап§, апк Н.-Ь. Ри, “1пРогтаПоп ЯаЮ оР МсЕПесе’з РиЬНс-кеу СгурЮзузЮт,” ЫесПотсз ЬеПегз, V. 26, п. 1, 4 ^п 1990, рр. 16-18. 977. 3. Ыпп, “Рпуасу ЕпЬапсетеп! Рог ЬПегпе! Е1есНотс Мак: Раг! I—Мезза§е ЕпирЬегтеШ: апк АиШепНсаНоп Ргосекигез,” ЯРС 989, РеЬ 1987. 978. 3. Ыпп, “Рпуасу ЕпЬапсетеп! Рог 1пЮгпе1 ЕЮсИошс Мак: РаП I—Мезза§е Епс1рЬегтет апк АиШепНсаНоп Ргосекигез,” ЯРС 1040, Зап 1988. 979. 3. Ыпп, “Рпуасу ЕпЬапсетеп! Рог ШЮгпег ЕЮсНотс МаП: Рак I—Мезза§е ЕпЫрЬегтеп! апк АиШепНсаНоп Ргосекигез,” ЯРС 1113, Аи% 1989. 980. 3. Ыпп, “Рпуасу ЕпЬапсетеп! Рог ШЮтег ЕЮсИошс Мак: Рак III—А1§огкЬтз, Мокез, апк МепППегз,” ЯРС 1115, Аи§ 1989. 981. 3. Ыпп, “Рпуасу ЕпЬапсетеп! Рог ШЮтег ЕЮсИошс Мак: Рак I—Мезза^е Епс1рЬегтет апк АиШепНсаНоп Ргосекигез,” ЯРС 1421, РеЬ 1993. 982. 8. Ыоук, “СоипНп§ В1пагу РипсНопз ичШ СеНат СгурЮ§гарЫс РгорегНез,” Зоигпа1 оР СгурЮ1о§у, V. 5, п. 2, 1992, рр. 107-131. 983. Т.М.А. Ьотаз, “СоШзюп-Ргеекот, Сопз1кегек НагтРи1, ог Но\у Ю Воо1 а СотриЮг," Ргосеект^з оР Ше 1995 Когеа-Зарап МогкзЬор оп 1пРогтаПоп Зесигку апк СгурЮ§гарЬ\. Шиуата, Зарап, 24-26 Зап 1995, рр. 35-42. 984. Т.М.А. Ьотаз апк М. Яое, “Рог§т§ а СНррег Мезза§е,” СоттитсаНопз оР Ше АСМ, у. 37. п. 12, 1994, р. 12. 985. О.Ь. Ьоп§, “ТЬе Зесигку оР Вкз т Ше 01зсгею Ьо§апШт,” РЬ.О. к1ззекаНоп, РппсеЮп Ышуегзку, Зап 1984. 986. О.Ь. Ьоп§ апк А. ХУ^кегзоп, “Но\у 01зсгеЮ 1з Ше 01зсгеЮ Ьо§,” Ргосеект^з оР Ше 15Ш Аппиа1 АСМ Зурозшт оп Ше ТЬеогу оР СотриНп§, Арг 1983. 987. Э. Ьоп§1еу апк 3. Я1§Ьу, “Ап АиЮтаНс ЗеагсЬ Рог Зесигку Р1а\уз т Кеу Мапа§етеп1: ЗсЬетез," СотриЮгз апк Зесигку, у. 11, п. 1, Зап 1992. рр. 75-89. 988. 8.Н. Ьо\у, Ы.Р. МахетсЬик, апк 3. Раи1. “Апопутоиз Сгекк Сагкз,” РгосееШп^з оР Ше 2пк Аппиа1 АСМ СопРегепсе оп СотриЮг апк СоттитсаНопз Зесигку, АСМ Ргезз, 1994. рр. 108-117. 989. З.Н. ЬохЮп, О.З.Р. КЬоо, О.З. Впк, апк 3. ЗеЬеггу, “А СиЫс ЯЗА Соке ЕяшуаЮп! Ю РасЮпгаНоп,” Зоигпа1 оР СгурЮ1о§у, V. 5, п. 2. 1992, рр. 139-150. 990. З.С. Ьи апк Ь.Ы. Ьее, “А 81тр1е апк ЕРРесН\е РиЬПс-Кеу СгурЮзузЮт,” СОМ8АТ ТесЬшса1 Яеу1е\у, 1979, рр. 15-24. 991. М. ЬиЬу, 3. М1саН, апк С. ЯаскоРР, “Но\у Ю 31тикапеоиз1у ЕхсЬап§е а Зесге! Вк Ьу РПррт° а 5уттеНюа11у-В1азеН Сот,” РгосееШп^з оР Ше 24пк Аппиа1 Зутроз1ит оп Ше РоипкаНопз оР СотриЮг Заепсе, 1983, рр. 11-22. 992. М. ЬиЬу апк С. ЯаскоРР, “Но\у Ю Сопзкисг Рзеико-Яапкот РегтиЮНопз Ргот Рзеикогапкот РипсНопз,” 81АМ Зоигпа1 оп СотриНп§, Арг 1988, рр. 373-386. 993. Р. Ьиссю апк 8. Маггопе, “А СгурЮзузЮт Рог Ми1Нр1е Соттип1саНопз,” ШРогтаНоп Ргосезз1п§ ЬеПегз, у. 10, 1980, рр. 180-183.
Список литературы 994. V. ЬисЬап§со апс! К. Коуата, “Ап АНаск оп ап Ю-Вазед Кеу 8Ьапп§ 8узЮт, Ргосеедт§з оР 1Ье 1993 Когеа-Зарап \УогкзЬор оп МогтаНоп 8есигку апс! СгурЮ§гарЬу, 8еои1, Когеа, 24-26 Ос1 1993, рр. 262-271. 995. Э.З.С. МасКау, “А Ргее Епег^у МЫгшгаНоп Ргате\Уогк Рог 1пРегпп§ 1Ье 81аЮ оР а 8ЫЙ Ке§1зЮг 01уеп Ню Ькнзу Ои1ри1 8ечиепсе,” К.Ы. Ьеиуеп МогкзЬор оп СгурЮ^гарЫс А1§оп1Ьтз, 8рпп§ег-Уег1а§, 1995, Ю арреаг. 996. М.О. МасЬагеп апс! О. Магза^На, “ЫшРогт Капдот ЫитЬег ОепегаЮгз,” Зоита1 оР Ню АСМ V. 12, п. 1, Зап 1965, рр. 83-89. 997. О. МасМШап, “8т§1е СЫр Епсгур1з Оа1а а1 14МЪ/з,” ЕЮсИошсз, V. 54, п. 12, 16 Зипе 1981, рр. 161-165. 998. К.. МадЬауап апс! Ь.Е. Реррагс!, “А МиШргосеззог ОаАз К8А СгурЮзузЮт,” Ргосеедт^з ССУЬ81-89: СапасНап СопРегепсе оп Уегу Ьаг§е 8са1е Ме^гаНоп, Уапсоиуег, ВС, Сапада, 22-24 Ос1 1989, рр. 115-122. 999. М.Е. Мадгу§а, “А РП^Ь РегРогтапсе ЕпсгурПоп А1§оп1Ьт,” СотриЮг 8есип1у: А 01оЬа1 СЬа11еп§е, Е1зеу1ег 8с1епсе РиЪНзЬегз, 1984, рр. 557-570. 1000. М. МатЬо, А. Ы1зЫка\уа, 8. Тзсуп, апс! Е. ОкатоЮ, “ЕРГ1С1еп1; 8есиге Вгоадсаз! СоттитсаНоп 8узЮт,” Ргосеедт§з оР Ню 1993 Когеа-Зарап МогкзЬор оп МогтаНоп 8есигку апд СгурЮ§гарЬу, 8еои1, Когеа, 24-26 Ос1 1993, рр. 23-33. 1001. М. МатЬо, К. Ызида, апд Е. ОкатоЮ, “Ргоху 81§паШгез,” Ргосеедт§з оР Ню 1995 8утрозшт оп СгурЮ§гарЬу апд МогтаНоп 8есип(у (8С18 95), 1пиуата, Зарап, 24-27 Зап 1995, рр. В1.1.1-17. 1002. М. Мао апд С. Воуд, “То\уагдз Рогта1 Апа1уз1з оР 8есип1у РгоЮсо!з,” Ргосеедт§з оР Ню СотриЮг 8есип1у РоипдаНопз \УогкзЬор VI, ШЕЕ СотриЮг 8ос1е*у Ргезз, 1993, рр. 147-158. 1003.0. Магза§Па апд Т.А. Вгау, “Оп-Ыпе Капдот ЫитЬег ОепегаЮгз апд НюЬ Ызе т СотЫпаНопз,” СоттитсаНопз оР Ню АСМ, у. И, п. И,Ыоу 1968, р. 757-759. 1004. К.М. МагНп, “ЫШгизНуойЬу РагНс1рап1з т РегРес! 8есге1 8Ьалп& 8сЬетез,” СгурЮ^гарЬу апд Содт§ III, МЛ. Оап1еу, ед., ОхРогд: С1агепдоп Ргезз, 1993, рр. 255-264. 1005.З.Ь. Маззеу, “8Ый-Ке§1зЮг 8упНюз1з апд ВСН Оесодт^,” ШЕЕ ТгапзасНопз оп МогтаНоп ТЬеогу, у. ГГ-15, п. 1, Зап 1969, рр. 122-127. 1006. З.Ь. Маззеу, “СгурЮ^гарЬу апд 8узЮт ТЬеогу,” Ргосеедт§з оР Ню 24рЬ АИеПоп СопРегепсе оп СоттитсаНоп, Соп1го1, апд СотриЮгз, 1-3 Ос! 1986, рр. 1-8. 1007. ЗХ. Маззеу, “Ап ЫгодисНоп Ю СопЮтрогагу СгурЮЮ^у,” Ргосеедт^з оР Ню ШЕЕ, у. 76, п. 5., Мау 1988, рр. 533-549. 775 1008.3.Ь. Маззеу, “СопЮтрогагу СгурЮ1о§у: Ап МгодисНоп,” т СопЮтрогагу СгурЮ1о§у: ТЬе 8с1епсе оР 1пРогтаНоп Ме^гку, О.З. 81ттопз, ед., ШЕЕ Ргезз, 1992, рр. 1-39. 1009.3.Ь. Маззеу, “8АРЕК К-64: А ВуЮ-ОпепЮд В1оск-С1рЬепп§ А1§огкЬт,” Раз1 8ойлуаге ЕпсгурПоп, СатЬпд^е 8есигку \УогкзЬор Ргосеедт§з, 8рпп§ег-Уег1а§, 1994, рр. 1-17. 1010. З.Ь. Маззеу, “8АРЕК К-64: Опе Уеаг ЬаЮг,” К. 11. Ьеиуеп МогкзЬор оп СгурЮ^гарЫс А^огкЬтз, 8рпп§ег-Уег1а§, 1995, Ю арреаг. ЮП.З.Ь. Маззеу апд I. 1п§етагззоп, “ТЬе К1р Уап \Утк1е йрЬег—А 81тр1е апд РгоуаЫу Сотри1аПопа11у 8есиге С1рЬег \укЬ а Ртке Кеу,” ШЕЕ МегпаНопа! 8утрозшт оп МогтаНоп ТЬеогу, Вп^ЬЮп, ЫК, Мау 1985. 1012.3.Ь. Маззеу апд X. Ьа1, “Эеуюе Рог СопуегНп§ а 01§ка1 В1оск апд Ню Ызе ТЬегеоР,” 1пЮтаНопа1 РаЮп1 РСТ/СН91/00117, 28Ыоу 1991. 1013. З.Ь. Маззеу апд X. Ьа1, “Ыеуюе Рог 1Ье Сопуегзюп оР а 01§ка1 В1оск апд Ызе оР 8ате,” Ы.8. РаЮШ #5,214,703, 25 Мау 1993. 1014. З.Ь. Маззеу апд К.А. Киерре1, “Ыпеаг С1рЬегз апд Капдот 8ециепсе ОепегаЮгз лу11Ь Ми1Нр1е С1оскз,” Адуапсез т СгурЮ1о&у: Ргосеедт^з оР ЕЫКОСКУРТ 84,8рпп§ег-Уег1а§, 1985, рр. 74-87. 1015. М. Ма1зш, “Ыпеаг Сгур1апа1уз1з МеНюд Рог ОЕ8 С1рЬег,” Адуапсез 1п СгурЮ1о§у— ЕШОСКУРТ ’93 Ргосеед1П§з, 8рг1п§ег-Уег1а§, 1994, рр. 386-397. 1016. М. Ма1зш, “Ыпеаг Сгур1апа1уз1з оРОЕ8 С1рЬег (I),” Ргосеедш^з оР 1Ье 1993 8утроз1ит оп СгурЮ§гарЬу апд 1пРогта11оп 8есиг11у (8С18 93), 8Ьигеп)1, Зарап, 28-30 Зап 1993, рр. ЗС.1- 14. (1п Зарапезе.) 1017. М. Ма1зи1, “Ыпеаг Сгур1апа1уз1з Ме1Ьод Рог ОЕ8 СгрЬег (III),” Ргосеедт§з оР рЬе 1994 8утрозшт оп СгурЮ^гарЬу апд 1пРогта11оп 8есип1у (8С18 94), Ьаке В1\уа, Зарап, 27-29 Зап 1994, рр. 4А.1-11. (1п Зарапезе.) 1018. М. Ма1зш, “Оп Согге1аНоп ВеНуееп 1Ье Огдег оР 1Ье 8-Вохез апд 1Ье 81геп§1Ь оР ОЕ8,” Адуапсез 1п СгурЮ1о§у—ЕЫКОСКУРТ ’94 Ргосеед1п§з, 8рпп§ег-Уег1а§, 1995, Ю арреаг. 1019. М. Ма1зш, “ТЬе Ыгз! Ехрептеп1а1 Сгур1апа1уз1з оР 1Ье Оа1а ЕпсгурПоп 81апдагд,” Адуапсез т СгурЮ1о§у—СКУРТО ’94 Ргосеед1п§з, 8рпп§ег-Уег1аё, 1994, рр. 1-11. 1020. М. Ма1зш апд А. Уата^зЫ, “АЫе\у МеЮод Рог Кполуп Р1а1пЮх1 Аиаск оР РЕАЬ С1рЬег,” Адуапсез 1п СгурЮ1о§у—ЕЫКОСКУРТ ’92 Ргосеед1Пёз, 8рпп§ег-Уег1а§, 1993, рр. 81-91. 1021. Т. МаЮитоЮ апд Н. 1та1, “А С1азз оР АзуттеЮс СгурЮ-8узЮтз Вазед оп Ро1упот1а1з Оуег Р1пке К1п§з,” ШЕЕ 1пЮтаНопа1 8утрозшт оп 1пРогтаНоп ТЬеогу, 1983, рр. 131-132.
776 Прикладная криптография 1022. Т. Ма1зито1о апс! Н. 1та1, “Оп 1Ье Кеу РгодисНоп 8уз1ет: А РгасНса1 8о1иНоп 1о 1Ье Кеу 01з1пЬиНоп РгоЫет,” Адуапсез т СгурГО1о§у—СЯУРТО ’87 Ргосеедт§з, Зрип^ег-УеНа^, 1988, рр. 185-193. 1023. Т. Ма1зитоГО апд Н. 1та1, “Оп 1Ье Зесигку оГ 8оте Кеу 8Ьапп§ ЗсЬетез (РаП 2),” 1Е1СЕ Зарап, ТесЬшса1 ЯероП, 18ЕС90-28, 1990. 1024. 8.М. Ма1уаз, ‘ТИ^ка! 81§паШгез—Ап Оуете\у,” Сотри1ег ЫеПуогкз, у. 3, п. 2, Арг 1979, рр. 87-94. 1025.8.М. Ма1уаз, “Кеу НапдНп^ \укЬ Соп1го1 Уес1огз,” 1ВМ 8уз1етз Зоита1, у. 30, п. 2, 1991, рр. 151-174. 1026. 8.М. Ма1уаз, А.У. Ье, апд Э.О. АЬгаЬат, “А Кеу Мапа^етеп! ЗсЬете Вазед оп Соп1го1 Уес1огз,” 1ВМ 5уз1етз Зоита1, у. 30, п. 2, 1991, рр. 175-191. 1027.8.М. Ма1уаз апд С.Н. Меуег, “ОепегаНоп, 01з1пЬиНоп, апд 1пз1а11аНоп оГ Сгур1о§гарЫс Кеуз,” 1ВМ 8уз1етз Зоита1, у. 17, п. 2, 1978, рр. 126-137. 1028.8.М. МаГуаз, С.Н. Меуег, апд 1 Озеаз, “ОепегаНп§ 81гоп§ Опе-\Уау РипсНопз \укЬ СгурЮ^гарЫс А1ёогкЬт,” 1ВМ ТесЬтса1 О1зс!озиге ВиПеНп, V. 27, п. 10А, Маг 1985, рр. 5658-5659. 1029.1ЕМ. Маигег, “РгоуаЫе 8есигку ш СгурЮ^гарЬу,” РЬ.О. д1ззеПаНоп, ЕТН Ыо. 9260, 8\у1зз Редега! 1пз111и1е оГТесЬпо!о§у, 2йпсЬ, 1990. 1030.11.М. Маигег, “А РгоуаЫе-8есиге 81гопё1у- ЯапдопПгед ОрЬег,” Адуапсез т Сгур1о1о§у— ЕЫЯОСЯУРТ ’90 Ргосеедт^з, 8рпп§ег-Уег1а§, 1990, рр. 361-373. 1031. II.М. Маигег, “А Ытуегза1 ЗшНзНса! Тез1 Рог Яапдот В к ОепегаГОгз,” Адуапсез т Сгур*о1о§у—СЯУРТО ’90 Ргосеедт^з, 8рпп§ег-Уег1а§, 1991, рр. 409-420. 1032. ИМ. Маигег, “А 13шуегза1 81аНзНса1 Тез1 Гог Яапдот Вк ОепегаГОгз,” Зоита! оГ Сгур1о1о§у, у. 5, п. 2, 1992, рр. 89-106. 1033.1ГМ. Маигег апд З.Ь. Маззеу, “Сазсаде ПрЬегз: ТЬе 1троПапсе оГ Вет& Ркз1,” Зоигпа! оГ Сгур1о1о§у, V. 6, п. 1, 1993, рр. 55-61. 1034. НМ. Маигег апд З.Ь. Маззеу, “РегГес* Ьоса1 Яапдотпезз т Рзеидо-Яапдот Зециепсез,” Адуапсез т Сгур1о1о&у—СЯУРТО ’89 Ргосеедт^з, 8рпп§ег-Уег1а& 1990, рр. 110-112. 1035. НМ. Маигег апд У. УасоЫ, “Ыоп4п1егасНуе РиЬНс Кеу СгурГО§гарЬу,” Адуапсез т Сгур1о1о&у—ЕЫЯОСЯУРТ ’91 Ргосеедт^з, 8рпп§ег-Уег1а^, 1991, рр. 498-507. 1036.0. МауЬе\у, “А Ьо\у Соз1, Н|§Ь 8реед ЕпсгурПоп 8уз1ет апд МеНюд,” Ргосеедт^з оГ 1Ье 1994 ШЕЕ СотрЫег 8оЫе1у Зутрозшт оп ЯезеагсЬ т 8есип1у апд Рпуасу, 1994, рр. 147— 154. 1037.0. МауЬелу, Я. Ргахее, апд М. В1апсо, “ТЬе КтеНс Рго1есНоп Оеуше,” Ргосеедт^з оГ 1Ье 151Ь ЫаПопа1 Сотри1ег Зесигку СопГегепсе. Ы18Т, 1994, рр. 147-154. 1038. К.8. МсСиНеу, “А Кеу 01з1пЬиНоп 8уз1ет Ечшуа1еп1 Ю Рас1опп§,” Зоита1 оГ Сгур1о1о§>. у. 1, п. 2, 1988, рр. 95-106. 1039. К.8. МсСиНеу, “ТЬе 01зсге1е Ьо^агкЬт РгоЫет,” СгурЮ^гарЬу апд Сотри1аНопа1 ЫитЬег ТЬеогу (Ргосеедт§з оГ 1Ье Зутрозшт оп АррНед МаШетаНсз), Атепсап МаШетаНсз 8оЫе1у, 1990, рр. 49-74. 1040. К.8. МсСиНеу, ореп 1ейег Шот Ше 8апд1а ЫаНопа! ЬаЬогаШпез оп (Ье Э8А оГ Ше Ы18Т, 7 Ыоу 1991. 1041. Я.З. МсЕНесе, “А РиЬПс-Кеу СгурГОзуз1ет Вазед оп А1§еЬгаю Содт§ ТЬеогу,” Е)еер Зрасе ЫеПуогк Рго^гезз ЯероП 42-44, 3е1 РгорЫзюп ЬаЬогаГОгу, СаИГогп1а 1пз1ки1е оГ ТесЬпо1о^\. 1978, рр. 114-116. 1042. Я.З. МсЕНесе, Ппке Р1е1дз Гог Сотри1ег 8с1епНз1з апд Еп^пеегз, ВозГОп: К1и\\ег Асадегшс РиЬПзЬегз, 1987. 1043. Р. МсМаЬоп, “ЗЕ8АМЕ У2 РиЬПс Кеу апд АиШоптаНоп Ех1епзюпз 1о КегЬегоз,” Ргосеедтщ оГ Ше 1п1егпе1 8ос1е1у 1995 Зутрозшт оп ЫеПуогк апд 01з1пЬи1ед 8уз1етз Зесигку, ШЕЕ Сотри1ег 8ос1е1у Ргезз, 1995, рр. 114-131. 1044. С.А. Меадо^з, “А 8уз1ет Гог Ше ЗресШсаНоп апд Апа1уз13 оГ Кеу Мапа§етеп1 Рго1осо1з,Т' Ргосеедт§з оГ 1Ье 1991 ШЕЕ СотрШег ЗоЫеК 8утроз1ит оп ЯезеагсЬ т 8есип1у апд Рг1уасу. 1991, рр. 182-195. 1045. С.А. Меадо\УЗ, “Арр1у1п§ Роппа1 Медтодз 1о 1Ье Апа1уз18 оГ а Кеу Мапа^етеп! Рго1осо1,” Зоита! оГСотри1ег 8есип1у, V. 1, п. 1, 1992, рр. 5-35. 1046. С.А. Меадо\уз, “А Моде1 оГ Сотри1аНоп Гог 1Ье ЫЯЬ Рго1осо1 Апа1угег,” Ргосеедт§5 оГ 1Ье Сотри1ег 8есиг11у РоипдаНопз \УогкзЬор У1Ь ШЕЕ Сотри1ег 8ос1е1у Ргезз, 1994, рр. 84-89. 1047. С.А. Меадо\УЗ, “Рогта1 УепПсаНоп оГ СгурЮ^гарЫс РгоГОсо1з: А Зигуеу,” Адуапсез т Сгур1о1о§у—А81АСЯУРТ ’94 Ргосеедт^з, Зрппёег-УеНае, 1995, рр. 133-150. 1048. С. Медутзку апд В.С. Ыеитап, “Ые1СазЬ: А Оез1§п Гог Ргас11са1 Е1ес1гоп1с Сиггепсу оп 1Ье 1п1ете1,” Ргосеед1п§з оГ 1Ье 1з1 Аппиа1 АСМ СопГегепсе опчСотри!ег апд Соттип1саНопз Зесигку, АСМ Ргезз, 1993, рр. 102-106. 1049.0. Медутзку апд В.С. Ыеитап, “Е1ес1гошс Сиггепсу Гог 1Ье 1п1егпе1,” Е1ес1гошс Магке1з. у. 3, п. 9/10, Ос1 1993, рр. 23-24. 1050. \У. Ме1ег, “Оп 1Ье 8есиг11у оГ 1Ье ЮЕА В1оск С1рЬег,” Адуапсез т Сгур1о1о§у— Е1}Я0СЯУРТ ’93 Ргосеед1п^5, 8рг1п§ег-Уег1а2. 1994, рр. 371-385.
Список литературы 777 1051. XV. Ме1ег ап<1 О. 8!аРРе1ЬасЬ, “Раз! Согге1аНоп Аиаскз оп Зкеат С1рЬегз,” .Юита1 оР СгурЮ1о§у, V. 1, п. 3, 1989, рр. 159-176. 1052. XV. Ме1ег апс1 О. 81аРРе1ЬасЬ, “Апа1уз1з оРРзеидо Капдот Зециепсез ОепегаЮд Ьу Се11и1аг АиЮтаЮ,” Адуапсез т СгурЮ1о§у— ЕШОСКУРТ ’91 Ргосеедт^з, 8рпп§ег-Уег1а§, 1991, рр. 186-199. 1053. XV. Ме1ег апд О. 81аРРе1ЬасЬ, “Согге1аНоп РгорегНез оР СошЫпегз \укЬ Мешогу т 81геат С1рЬегз,” Адуапсез т СгурЮ1о§у— ЕШОСКУРТ ’90 Ргосеедт^з, 8рпп§ег-Уег1а&, 1991, рр. 204-213. 1054. XV. Ме1ег апд О. 81аРГе1ЬасЬ, “Согге1аНоп РгорегНез оР СотЫпегз \укЬ Метогу т Зкеат С1рЬегз,” 1оигпа1 оР СгурЮ1о§у, V. 5, п. 1, 1992, рр. 67-86. 1055. XV. Ме1ег апд О. 8!аРГе1ЬасЬ, “ТЬе 8е1Р-8Ьппкт§ ОепегаЮг,” СоттитсаНопз апд СгурЮ^гарЬу: Т\уо 81дез оР Опе Тарезку, К.Е. В1аЬи! е! а!., едз., Юилуег АдадепПс РиЬНзЬегз, 1994, рр. 287-295. 1056.1. Меуегз, “А1§еЬгаю-Содед СгурЮзузЮтз,” МазЮг’з Шез1з, ТесЬтса1 ишуегзку ЕтдЬоуеп, 1990. 1057.1 Меуегз апд Т уап ТПЬиг§, “Оп Ше Као-Ыат РпуаЮ-Кеу СгурЮзузЮт 11§ш§ Ыпеаг Содез,” 1пЮтаПопа! Зутрозшт оп 1пРогтаНоп ТЬеогу, Видарез!, Нип^агу, 1991. 1058Л. Меуегз апд У уап ТПЬиг§, “Ап 1шргоуед ЗТ- Аиаск оп Ше Као-Ыаш РпуаЮ-Кеу СгурЮ¬ зузЮт,” 1пЮтаНопа1 СопРегепсе оп Ртке Р1е1дз, Содт§ ТЬеогу, апд Адуапсез т СоттитсаНопз апд СотриПп^, Ьаз Уе§аз, ЫУ, 1991. 1059. А. Мепегез, ЕШрНс Сигуе РиЬНс Кеу СгурЮ¬ зузЮтз, К1и\уег АсадепПс РиЬНзЬегз, 1993. 1060. А. Мепегез, ед., АррНсаНопз оР Ртке Р1е1дз, Юилуег Асадетю РиЬНзЬегз, 1993. 1061. А. Мепегез апд 8.А. УапзЮпе, “ЕШрНс Сигуе СгурЮзузЮтз апд ТЬе1г 1тр1етеп!аНопз,” Юита! оРСгурю1о§у, у. 6, п. 4, 1993, рр. 209-224. 1062. А. Мепегез апд 8.А. УапзЮпе, “ТЬе 1тр1етеп1аПоп оР ЕШрНс Сигуе СгурЮзузЮтз,” Адуапсез т СгурЮ1о&у—АШСКУРТ ’90 Ргосеедт^з, 8рпп§ег-Уег1а&, 1990, рр. 2-13. 1063. К. Мешсоса, “ЗЬоП ОоИтапп Сазсаде ОепегаЮгз Мау Ве 1пзесиге,” Содез апд С1рЬегз, 1пз1киЮ оР МаШетаНсз апд Из АррНсаНопз, 1995, рр. 281-297. 1064. К.С. Мегк1е, “8есиге СоттитсаНоп Оуег 1пзесиге СЬаппе1з,” СоттитсаНопз оР Ше АСМ, у. 21, п. 4, 1978, рр. 294-299. 1065. К.С. Мегк1е, “8есгесу, АиШепНсаНоп, апд РиЬНс Кеу ЗузЮтз,” РЬ.О. д1ззег1аПоп, ЗШпРогд Нтуегзку, 1979. 1066. К.С. Мегк1е, “МеШод оР РгоУ1дт§ 01§ка1 З^паШгез,” 118. РаЮШ #4,309,569, 5 Зап 1982. 1067. К.С. Мегк1е, “А 01§ка1 З^паЮге Вазед оп а СопуепНопа! ЕпсгурПоп РипсНоп,” Адуапсез т СгурЮ1о§у—СКУРТО 5 87 Ргосеедт§з, 8рпп&ег-Уег1а§, 1988, рр. 369-378. 1068. К.С. Мегк1е, “А СегННед 01§ка1 81§па1иге,” Адуапсез т СгурЮ1о§у—СКУРТО ’89 Ргосеедт^з, 8рпп&ег-Уег1а§, 1990, рр. 218-238. 1069. К.С. Мегк1е, “Опе ХУау НазЬ РипсПопз апд БЕЗ,” Адуапсез т СгурЮ1о§у—СКУРТО 5 89 Ргосеедт^з, 8рпп§ег-Уег1а§, 1990, рр. 428-446. 1070. К.С. Мегк1е, “А Раз! ЗоШуаге Опе-ХУау НазЬ РипсНоп,” Юигпа1 оР Сгур!о1о§у, у. 3, п. 1, 1990, рр. 43-58. 1071. К.С. Мегк1е, “Раз! 8оЙ\уаге ЕпсгурПоп РипсПопз,” Адуапсез т Сгурю1о§у—СКУРТО ’90 Ргосеедт§з, 8рпп§ег-Уег1а§, 1991, рр. 476-501. 1072. К.С. Мегк1е, “МеШод апд АррагаЮз Рог Оа!а ЕпсгурПоп,” 11.8. РаЮп! #5,003,597,26 Маг 1991. 1073. К.С. Мегк1е, регзопа1 соттитсаНоп, 1993. 1074. К.С. Мегк1е апд М. НеИтап, “Н1дт§ МогтаНоп апд З^паЮгез т Тгардоог Кпарзаскз,” ШЕЕ ТгапзасНопз оп МогтаНоп ТЬеогу, у. 24, п. 5, Зер 1978, рр. 525-530. 1075. К.С. Мегк1е апд М. НеИтап, “Оп Ше Зесигку оР Ми1Нр1е ЕпсгурПоп,” СоттитсаНопз оР Ше АСМ, у. 24, п. 7, 1981, рр. 465-467. 1076. М. Мети, “СгурЮ^гарЫс РгоЮсо1з,” РЬ.О. д1ззег!аНоп, Оеог^а 1пз1киЮ оР ТесЬпо1о§у, 01Т-1С8-83/6, РеЬ 1983. 1077. М. Мети, “То\уагдз а ТЬеогу оР СгурЮ^гарЫс ЗузЮтз: А СпНцие оР Сгур!о-Сотр1ехку,” 01з!пЬиЮд СотриНп^ апд СгурЮ§гарЬу, I Ре^епЬаит апд М. Мети, едз., Атепсап МаШетаНса1 8ос1е!у, 1991, рр. 203-212. 1078. С.Н. Меуег, “С1рЬег!ех!/Р1а1п!ех! апд ФрЬегЮх!/ Кеу Оерепдепс1ез уз. ЫитЬег оР Коипдз Рог Оа!а ЕпсгурПоп ЗЮпдагд,” АР1Р8 СопРегепсе Ргосеедтез, 47, 1978, рр. 1119-1126. 1079. С.Н. Меуег, “СгурЮ^гарЬу—А 8!а!е оР Ше АП КеУ1е\у,” Ргосеедт^з оР Сотреиго ’89, УЬ81 апд СотриЮг РепрЬега1з, Згд Аппиа1 Еигореап СотриЮг СопРегепсе, ШЕЕ Ргезз, 1989, рр. 150-154. 1080. С.Н. Меуег апд З.М. Ма!уаз, СгурЮ^гарЬу: А Ые\у 01тепзюп 1п СотриЮг Оа1а Зесип!у, Ые\у Уогк: ЮЬп XV^1еу & Зопз, 1982. 1081. С.Н. Меуег апд М. 8сЬИИп§, “Зесиге Рго^гат Ьоад \у1Ш Мап1ри1а!1оп ОеЮсНоп Соде,” Ргосеедт^з оРЗесипсот ’88, 1988, рр. 111-130. 1082. С.Н. Меуег апд XV.^. ТисЬтап, “Рзеидо-Капдот Содез Сап Ве Сгаскед,” Е1ес1гоп1с Оез^п, у. 23, Ыоу 1972. 1083. С.Н. Меуег апд XV.^. ТисЬтап, “Оез1§п Сопз1дегаНопз Рог СгурЮ^гарЬу,” Ргосеед1п§з оР Ше ИСС, у. 42, Моп!уа1е, Ш: АР1Р8 Ргезз, Ыоу 1979, рр. 594-597.
778 Прикладная криптография 1084.8. М1саН, “Ра1г РиЬПс-Кеу СгурЮзуз&тз,” Аауапсез ш Сгур1о1о§у—СКУРТО ’92 Ргосеедш^з, 8рпп§ег-Уег1а§, 1993, рр. 113-138. 1085.8. УПсаП, “РаЬ СгурЮзузЮтз,” М1Т/ ЬС8ЯК- 579.Ь, М1Т ЬаЬогаЮгу Рог СотриЮг 8с1епсе, Ыоу 1993. 1086.8. МюаН, “Ра1г СгурЮзузЮтз апс! МеШодз Рог Ызе,” Ы.8. РаЮп1 #5,276,737, 4 Зап 1994. 1087.8. МюаН, “Раю СгурЮзузЮтз апс! МеШодз Рог Ызе,” 1Ь8. РаЮп! #5,315,658, 24 Мау 1994. 1088. 8. МюаН апс! А. 8ЬапПг, “Ап 1тргоуетеп1 оп Ше Р1а1-8Ьагтг ЫепНРюаНоп апс! 81§па1иге 8сЬете,” Адуапсез т СгурЮ1о§у—СКУРТО ’88 Ргосеедт^з, 8рпп&ег-Уег1а§, 1990, рр. 244-247. 1089. М.I МШа^еую, “А Согге1аНоп Аиаск оп 1Не Втагу 8ециепсе СепегаЮгз \у1Ш Т1те-Уагут§ Ои1ри1 РипсНоп,” Адуапсез т СгурЮ1о§у— А81АСКУРТ ’94 Ргосеедш^з, 8рпп§ег-Уег1а§, 1995, рр. 67-79. 1090. М.Ь МШа^еуЮ апс! З.О. ОоНс, “А Раз1 ИегаПуе А1§опШт Рог а 8ЫЙ Ке^зЮг 1пЮгпа1 81аЮ КесопзШисНоп 01уеп Ше Ыо1зу Ои1ри1 8ециепсе,” Ас1уапсе8 т СгурЮ1о§у— АЫ8СКУРТ ’90 Ргосеедт^з, 8рпп&ег-Уег1аё, 1990, рр. 165-175. 1091. М.З. МШа^еую апс1 З.О. ОоНс, “Сопуег^епсе оР а Вауез1ап ИегаНуе Еггог-СоггесНоп Ргосес1иге Ю а Ыо1зу 8ЫЙ Ке^зЮг 8ециепсе,” Аауапсез т СгурЮ1о§у —ЕЫКОСКУРТ ’92 Ргосеедт^з, 8рпп§ег-Уег1а§, 1993, рр. 124-137. 1092.3.К. МШеп, 8.С. С1агк, апд 8.В. Ргеес1тап, “ТЬе 1пЮгго&аЮг: РгоЮсо1 8есип1у Апа1уз1з,” ШЕЕ ТгапзасНопз оп 8оЛ\уаге Еп§теепп§, у. 8Е-13, п. 2, РеЬ 1987, рр. 274-288. 1093. О.Ь. МШег, “Шетапп’з НуроШез1з апд Тез1з Рог РптаП1у,” Зоигпа1 оР СотриЮг 8узЮтз 8с1епсе, у. 13, п. 3, Оес 1976, рр. 300-317. 1094. 8.Р. МШег, В.С. Ыеитап, 3.1. 8сЫ11ег, апд З.Н. 8а1Юег, “8есНоп Е.2.1: КегЬегоз АиШепНсаНоп апд АиШопгаПоп 8узЮт,” М1Т Рго^ес! АШепа, Оес 1987. 1095. У.8. МШег, “Ьзе оР ЕШрНс Сигуез т СгурЮ^гарЬу,” Адуапсез т СгурЮ! о§у— СКУРТО ’85 Ргосеедт^з, 8рпп§ег-Уег1а§, 1986, рр. 417-426. 1096. М. Мтзку, СотриЮНоп: Ртке апд ШГтке МасЫпез, Еп§1е\Уоод СНРРз, N3: РгепПсе-На11, 1967. 1097. С.З. МксЬеИ, “АиШепНсаНп^ Ми1Н-Саз11пЮгпе1 ЕЮсШопю МаП Мезза^ез Ызт^ а В1дюесНопа1 МАС 1з 1пзесиге,” дгаК тапизспр!, 1990. 1098. С.З. МксЬеП, “ЕпитегаНп^ Воо1еап РипсНопз оР СгурЮ^гарЫс 81ёП1р1сапсе,” Зоигпа1 оР СгурЮ1о§у, у. 2, п. 3, 1990, рр. 155-170. 1099. С.З. МксЬеН, Р. Р1рег, апд Р. \УЦд, ‘Т)1§ка1 З^паЮгез,” СопЮтрогагу СгурЮ1о&у: ТЬе 8аепсе оР 1пРогтаНоп 1пЮ&гку, О.З. 81ттопз, ед., ШЕЕ Ргезз, 1991, рр. 325-378. 1100. С.З. МксЬеП, М. \Уа1кег, апд О. КизЬ, “ССПТ/180 81апдагдз Рог 8есиге Мезза^е НапдПп§,” ШЕЕ Зоигпа1 оп 8е1есЮд Агеаз т СоттитсаНопз, у. 7, п. 4, Мау 1989, рр. 517-524. 1101. 8. М1уа^исЫ, “Раз1 ЕпсгурПоп А1&огкЬт Рог Ше К8А СгурЮ^гарЫс 8узЮт,” Ргосеедт^з оР Сотрсоп 82,1ЕЕЕ Ргезз, рр. 672-678. 1102. 8. М1уа&исЫ, “ТЬе РЕАЬ-8 СгурЮзузЮт апд Са11 Рог Аиаск,” Адуапсез т Сгур1о1о§у—СКУРТО ’89 Ргосеедт^з, 8рпп§ег-Уег1а§, 1990, рр. 624-627. 1103. 8. М1уа§исЫ, “Ехрапзюп оР Ше РЕАЬ С1рЬег,” ЫТТ Кеу1е\у, у. 2, п. 6, Ыоу 1990. 1104.8. М1уа§исЫ, “ТЬе РЕАЬ С1рЬег РатПу,” Адуапсез т СгурЮ1о§у—СКУРТО ’90 Ргосеедт^з, 8рпп§ег-Уег1а§, 1991, рр. 627-638. 1105.8. М1уа&исЫ, К. ОЫа, апд М. 1\уа1а, “128-Ьк НазЬ РипсНоп (Ы-НазЬ),” Ргосеедт^з оР 8ЕС1Ж1СОМ ’90, 1990, рр. 127-137. 1106.8. М1уа&исЫ, К. ОЬ1а, апд М. 1\уа1а, “128-Ьк НазЬ РипсПоп (Ы-НазЬ),” ЫТТ Кеу1е\у, у. 2, п. 6. Ыоу 1990, рр. 128-132. 1107.8. М|уа&исЫ, К. ОЬ1а, апд М. 1\уа1а, “СопГптпаИоп Ша1 8оте НазЬ РипсНопз Аге Ыо1 С0Ш510П Ргее,” Адуапсез 1П Сгур1о1о§у— ЕЬКОСКУРТ ’90 Ргосеедт<»5, 8рпп§ег-Уег1а^ 1991, рр. 326-343. 1108. 8. М1уа§исЫ, А. 8Ыга1зЫ, апд А. 8Ыгшги, “Раз! Эа1а ЕпЫрЬегтеп! А1§опШт РЕАЬ-8,” Кеу1е\\ оР Ше Е1ес1пса1 Соттип1саИоп ЬаЬогаШпез. у. 36, п. 4, 1988. 1109. Н. М1уапо, ‘ТНРРегепИа! Сгур1апа1уз1з оп САЬС апд Из Еуа1иаПоп,” Ргосеед1п§з оР Ше 1992 8утрозшт оп СгурЮ§гарЬу апд ШРогтаОоп 8есип1у (8С18 92), Та1езЫпа, ]арап, 2-4 Арг 1992, рр. 7В.1-8. 1110. К. Мо1уа, О. Тзид1к, Е. уап Негге\уе§Ьеп, апд 8. 2аШ, “Кгур1оКп1§Ы АиШеп11са11оп апд Кеу 01з1пЬи1юп 8уз1еш,” Ргосеед1п§з оР Еигореап 8утроз1ит оп КезеагсЬ 1п Сотри1ег 8есип1у, Тои1оизе, Ргапсе, Ыоу 1992. 1111. Р.Ь. МоШ^отегу, “Моди1аг МиЫрПсадоп \уЬЬои1 Тпа1 01у1з1оп,” МаШетаНсз оР Сотри1аНоп, у. 44, п. 170, 1985, рр. 519-521. 1112. Р.Ь. МоШ^отегу, “8реедт§ Ше РоНагд апд ЕШрНс Сигуе МеШодз оР РасШпгаНоп,” МаШетаНсз оР Сотри1аНоп, у. 48, п. 177, .1ап 1987, рр. 243-264. 1113. Р.Ь. Моп1§отегу апд К. 8Пуегтап, “Ап РРТ Ех1епз1оп 1о Ше р-1 Рас1ог1п§ А1§опШт,’* МаШетаНсз оР Сотри1аНоп, у. 54, п. 190, 1990, рр. 839-854. 1114. ЬН. Мооге, “Рго1осо1 РаПигез 1п Сгур1озуз1етз,” Ргосеедт^з оР Ше ШЕЕ, у. 76, п. 5, Мау 1988.
Список литературы 1115.З.Н. Мооге, “Рго№со1 РаПигез Ш СгурЮзузЮтз,” т СоШетрогагу Сгур1о1о^у: ТЬе 8аепсе оГ ШГогтаНоп 1п1е§п1у, О.З. 81ттопз, ед., ШЕЕ Ргезз, 1992, рр. 541-558. 1116. З.Н. Мооге апс! О.З. 81ттопз, “Сус1е 81гисШге оГ Ше ОЕ8 \укЬ \Уеак апс! 8ет1-\Уеак Кеуз,” Адуапсез т СгурЮ1о§у—СКУРТО ’86 Ргосеедт^з, 8рпп§ег-Уег1а&, 1987, рр. 3-32. 1117. Т. Мопуази, М. Мот, апд М. КазаЬага, “ЫопПпеаг Рзеидогапдот ЫитЬег ОепегаЮг \укЬ ЫупапПс 81гис1иге апд Из РгореН1ез,” Ргосеедт§з оГ Ше 1994 8утрозшт оп СгурЮргарЬу апд ШГогтаНоп 8есигку (8С18 94), В1\уако, Зарап, 27-29 Зап 1994, рр. 8А.1-11. 1118. К. Могпз, “ТЬе Ыа1а ЕпсгурПоп 81апдагд— КеЮозресНуе апд Ргозрес1з,” ШЕЕ Соттишса- Нопз Ма^ахте, V. 16, п. 6, Ыоу 1978, рр. 11-14. 1119. К. Мотз, гетагкз а1 Ше 1993 СатЬпд^е РгоЮсо1з ^огкзЬор, 1993. 1120. К. Могпз, Ы.З.А. 81оапе, апд А.Э. \Уупег, “Аззеззтеп! оГ Ше ЫВ8 Ргорозед Ыа1а ЕпсгурПоп 81апдагд,” СгурЫо^а, у. 1, п. 3, 3и1 1977, рр. 281-291. 1121. К. Могпз апд К. ТЬотрзоп, “Раззмогд 8есигку: А Сазе ЕПзШгу,” СоттитсаНопз оГ Ше АСМ, у. 22, п. 11, Ыоу 1979, рр. 594-597. 1122. 8.В. Мотз, “Езсго\у ЕпсгурПоп,” 1ес1иге а1 М1Т ЬаЬогаЮгу Гог СотриЮг 8с1епсе, 2 Зип 1994. 1123.М.Ы. Могпзоп апд 3. ВгШЬаН, “А МеШод оГ РасЮпп^ апд Ше РасЮпгаНоп оГ Р7,” МаШетаНсз оГ Сотри1аНоп, у. 29, п. 129, Зап 1975, рр. 183-205. 1124. Ы.Е. Мозег, “А Ыо^с оГКпо\у!ед§е апд ВеЬеГ Гог Кеазопт§ АЬои! СотриЮг 8есип1у,” Ргосеедт^з оГ Ше СотриЮг 8есип1у РоипдаНопз \УогкзЬор П, ШЕЕ СотриЮг 8ос1е1у Ргезз, 1989, рр. 57-63. 1125. МоЮго1а Ооуегптеп! Е1ес1готсз 01У13юп, Адуапсед ТесЬшциез Ш ЫеПУогк 8есигку, 8соПзда1е, А2, 1977. 1126. \У.В. МиИег, “Ро1упот1а1 РипсНопз т Модегп СгурЮ1о&у,” СоМпЬиНопз Ю Оепега! А1&еЬга 3: Ргосеедт^з оГ Ше \Пеппа СопГегепсе, У1еппа: Уег1а§ НйМег-РЮЫег-Тетрзку, 1985, рр. 7-32. 1127. \У.В. МйНег апд \У. ЫоЬаиег, “8оте Кетагкз оп РиЬНс-Кеу СгурЮ^гарЬу,” 81ид1а 8с1епНагит МаШетаНсагит Нип§апса, у. 16,1981, рр. 71-76. 1128. \У.В. МйНег апд ЫбЬаиег, “Сгур1апа1уз1з оГ Ше ЫШкзоп 8сЬете,” Адуапсез т СгурЮ1о§у— ЕЫКОСКУРТ ’85 Ргосеедт^з, 8рпп§ег-Уег1а2, 1986, рр. 50-61. 1129. С. Ми11ег-8сЬо1ег, “А Мюгоргосеззог-Вазед СгурЮргосеззог,” ШЕЕ МШго, Ос1 1983, рр. 5-15. 1130. К.С. МиШп, Е. ЫетеШ, апд N. \Уе1депЬоГег, “\УШ РиЬНс Кеу СгурЮзузЮтз Шуе Ыр Ю ТЬе1г ЕхресЮНопз?—НЕР 1тр1етеп1аНоп оГ Ше Ы^зсгеЮ Ыо§ СодеЬгеакег,” 1СРР 85, рр. 193-196. 779 1131. У. Мигакагш апд 8. КазаЬага, “Ап Ю-Вазед Кеу 01з1пЬиНоп 8сЬете,” 1Е1СЕ Зарап, ТесЬтса1 КероП, 18ЕС90-26, 1990. 1132. 8. МигрЬу, “ТЬе Сгур1апа1уз1з оГ РЕАЬ-4 \укЬ 20 СЬозеп Р1атЮх1з,” Зоигпа1 оГ СгурЮ1о&у, у. 2, п. 3, 1990, рр. 145-154. ИЗЗ.Е.Ы. Муегз, “8ТЫ-Ш—Ми1Н1еуе1 8есиге СотриЮг ШЮгГасе,” Ргосеедт§з оГ Ше ТепШ Аппиа1 СотриЮг 8есигку АррПсаПопз СопГегепсе, ШЕЕ СотриЮг 8оае1у Ргезз, 1994, рр. 170-179. 1134. О. ЫассасЬе, “Сап 0.8.8. Ье Керакед? Ргороза1 Гог а Ые\у РгасНса1 81§па1иге 8сЬете,” Адуапсез т СгурюШ^у—ЕЫКОСКУРТ ’93 Ргосеедт^з, 8рг1п§ег-Уег1а§, 1994, рр. 233-239. 1135. Ы. ЫассасЬе, Ы. М’КаТЫ, О. КарЬаеП, апд 8. Уаидепау, “Сап Ы.8.А. Ье 1тргоуед? Сотр1ехку Тгаде-ОГГз \уЬЬ Ше 81§паЮге 81апдагд,” Адуапсез Ш Сгурю1о§у—ЕЫКОСКУРТ ’94 РгосеедШ^з, 8рпп§ег-Уег1а§, 1995,Ю арреаг. 1136. У. Ыакао, Т. Капеко, К. Коуата, апд К. Тегада, “А 8юду оп Ше 8есигку оГ КЫЕ8-1 СгурЮзузЮт а^атз! Ыпеаг Сгур1апа1уз15,” Ргосеедт^з оГ Ше 1995 Зарап-Когеа \УогкзЬор оп ШГогтаНоп 8есигку апд СгурЮ^гарЬу, Шиуата, Зарап, 24-27 Зап 1995, рр. 163-172. 1137. М. Ыаог, “Вк Соттктеп! Ызт§ Рзеидо- Капдотпезз,” Адуапсез т СгурЮ1о§у— СКУРТО ’89 Ргосеед1п§з, 8рпп§ег-Уег1а§, 1990, рр. 128-136. 1138. М. Ыаог апд М. Уип§, “Ып1уегза1 Опе-\Уау НазЬ РипсНопз апд ТЬек Сгур1о§гарЫс АррПсаНоп,” Ргосеед|п§з оГ Ше 21з1 Аппиа! АСМ 8утрозшт оп Ше ТЬеогу оГСотриНп§, 1989, рр. 33-43. 1139.ЫаПопа1 Вигеаи оГ 81апдагдз, “КероП оГ Ше \УогкзЬор оп ЕзНтаНоп оГ 81^п1Г1сап1 Адуапсез т Сотри1ег ТесЬпо1о§у,” ЫВ81К76-1189, ЫаНопа1 Вигеаи оГ81апдагдз, Ы.8. ЫераПтеп! оГ Соттегсе, 21-22 8ер 1976, ^^с 1977. 1140. ЫаНопа1 Вигеаи оГ81апдагдз, ЫВ8 Р1Р8 РЫВ 46, “Ыа1а ЕпсгурПоп 81апдагд,” ЫаНопа1 Вигеаи оГ 81апдагдз, Ы.8. ЫераПтеп! оГ Соттегсе, Зап 1977. 1141. ЫаНопа! Вигеаи оГ81апдагдз, ЫВ8 Р1Р8 РЫВ 46- 1, “Оа1а ЕпсгурПоп 81апдагд,” Ы.8. ОераПтеп! оГ Соттегсе, Зап 1988. 1142. ЫаНопа1 Вигеаи оГ81апдагдз, ЫВ8 Р1Р8 РЫВ 74, “ОшдеПпез Гог 1тр1етепНп§ апд Ызт§ Ше ЫВ8 Ыа1а ЕпсгурПоп 81апдагд,” Ы.8. ЫераПтеп! оГ Соттегсе, Арг 1981. 1143. ЫаНопа1 Вигеаи оГ81апдагдз, ЫВ8 Р1Р8 РЫВ 81, “ЫЕ8 Модез оГ ОрегаНоп,” Ы.8. ОераПтеп! оГ Соттегсе, Ыес 1980. 1144. ЫаНопа1 Вигеаи оГ 81апдагдз, ЫВ8 Р1Р8 РЫВ 112, “Разз\уогд Ыза§е,” Ы.8. ЫераПтеп! оГ Соттегсе, Мау 1985.
780 Прикладная криптография 1145. Ыайопа! Вигеаи оР 81апдагдз, ЫВ8 Р1Р8 РШ 113, “Сотри1ег Оа1а АиЫепНсаНоп,” и.8. ОераПтеп! оРСоттегсе, Мау 1985. 1146. №Нопа1 Сотри1ег 8есип1у Сеп1ег, “Тгиз1ед №1\уогк 1п1егрге1аНоп оГ Ые Тгиз1ед Сотри1ег 8уз!ет ЕуаЫаНоп Сгкепа,” ЫС8С-ТО-005 Уегзюп 1,3и1 1987. 1147.ЫаПопа1 Сотри1ег 8есип1у Сеп!ег, “Тгиз1ед Оа1аЬазе Мапа^етеп! 8уз1ет 1п1егрге1аНоп оР Ые Тгиз1ед Сотри!ег 8уз1ет ЕуаЫаНоп Сгкепа,” ЫС8С-ТС-021 Уегзюп 1, Арг 1991. 1148. Ыаиопа! Сотри1ег 8есип1у Сеп1ег, “А Ошде 1о 1Ыдегз1апдт§ Оа1а КететЬегапсе т Аи1ота1ед ЫРогтаПоп 8уз1етз,” КС8С-ТО-025 Уегзюп 2, 8ер 1991. 1149. ЫаИопа! 1пз1ки1е оР 81апдагдз апс! ТесЬпоЫ^у, N181 Р1Р8 РШ XX, “ЭфЫ 81впа1иге 81апдагд,” 11.8. ОераПшеп! оР Соттегсе, ОЯАРТ, 19 Аи§ 1991. 1150.ЫаПопа1 1пз1ки1е оГ 81апдагдз апс! ТесЬпо1о§у, М8Т Р1Р8 Р13В 46-2, “Оа1а ЕпсгурПоп 81апдагд,” 11.8. ОераПшеп! оР Соттегсе, Оес 93. 1151. Ыа!1опа1 1пз1ки1е оР 81апдагдз апс! ТесЬпо1о§у, N181 Р1Р8 РЫВ 171, “Кеу Мапа^етеп! Изт^ Х9.17,” 11.8. ОераПтеп! оРСоттегсе, Арг 92. 1152. N3110031 1пз1ки1е оР 81апдагдз апд ТесЬпо1о&у, N181 Р1Р8 РЕЗВ 180, “8есиге НазЬ 81апдагд,” 0.8. ОераПтеп! оР Соттегсе, Мау 93. 1153. N3110031 1пз1ки1е оР 81апс1агс15 апд ТесЬпо1о§у, N181 Р1Р8 РЕ1В 185, “Езсго\уед ЕпсгурПоп 81апс1агс1,” 11.8. ОераПтеп! оР Соттегсе, РеЬ 94. 1154. N31101131 1пзН1и!е оР 81ап<1агс1з апс! ТесЬпоЫ^у, N181 Р1Р8 РШ 186, “О^ка! 81ёпа!иге 81апдагд,” 11.8. ОераПтеп! оР Соттегсе, Мау 1994. 1155. N3110031 1пзП1и!е оР 81апс1агс15 апд ТесЬпо1о§у, “СНррег СЫр ТесЬпо1о§у,” 30 Арг 1993. 1156. N3110031 1пзН1и!е оР 81апдагдз апс! ТесЬпо1о§у, “Сарз!опе СЫр ТесЬпо1о§у,” 30 Арг 1993. 1157.1 №сЬуа!а1, “РиЬНс Кеу Сгур1о§гарЬу,” N181 8реЫа1 РиЬНсаНоп 800-2, N3110031 1пзН1и1е оР 81апдагдз апд ТесЬпоЫ^у, 11.8. ОераПтеп! оР Соттегсе, Арг 1991. 1158.3. №сЬуа!а1, “РиЬНс Кеу Сгур1о§гарЬу,” СоШетрогагу Сгур1о1о§у: ТЬе 8с1епсе оР ЫРогтаПоп 1п1е§п1у, О.З. 81ттопз, ед., ШЕЕ Ргезз, 1992, рр. 177-288. 1159. К..М. №едЬат апс! М.О. 8сЬгоес1ег, “Изт^ ЕпсгурПоп Рог АиЫепНсаНоп т Ьаг§е Иепуогкз оР Сотри!егз,” СоттитсаНопз оР 1Не АСМ, у. 21, п. 12, Оес 1978, рр. 993-999. 1160. К.М. ИеедЬат апс! М.О. 8сЬгоес1ег, “АиЫепНсаНоп Кеу1зкед,” ОрегаНп§ 8уз!етз Кеу1е\у, у. 21, п. 1, 1987, р. 7. 1161. О.М. N635611, “А СпНцие оР Ые Вигго\У5, АЬасН, апс! №едЬат Ьо^с,” ОрегаНп§ 8уз1ет Кеу1е\\, у. 20, п. 2, Арг 1990, рр. 35-38. 1162. В.С. №итап апс! 8. 81иЬЫеЫпе, “А №1е оп Ые Ызе оР Т1тез1атрз аз №псез,” ОрегаНп» 8уз1етз Кеу1е\у, у. 27, п. 2, Арг 1993, рр. 10-14. 1163. В.С. №итап апс! Т. Тз’о, “КегЬегоз: Ап АиЫепНсаНоп 8етсе Рог Сотри1ег №1\уогкз,” ШЕЕ СоттитсаНопз Ма^агте, V. 32, п. 9, 8ер 1994, рр. 33-38. 1164. Ь. №и\У1НЬ, “81а1етеп! оР Ьее №и\У1НЬ о!' СуНпк оп НК 145,” зиЬтЫед 1о соп^геззюпа! сотгшИеез сопз1депп§ НК.145, РеЬ 1987. 1165.0.В. Nе\Vтап, Зг. апс! К.Ы РюкЬоНт, “Сгур1о§гарЬу т Ые Рпуа!е 8ес1ог,” ШЕЕ СоттитсаНопз Ма^ахте, V. 24, п. 8, Ащ 1986. рр. 7-10. 1166. Н. Медеггекег, “А РиЬИс-Кеу Сгур1озуз1ет Вазес! оп 8ЫН Ке§1з1ег 8ециепсез,” Адуапсез т Сгур!о1о§у—ЕШОСКУРТ ’85 Ргосеедт^з. 8рпп§ег-Уег1аё, 1986, рр. 35-39. 1167. Н. МедеггеКег, “Кпарзаск-Туре Сгур1озу51етз апс! А1§еЬгаю Содт§ ТЬеогу,” РгоЫетз оР Соп1го1 апс! ЫРогтаПоп ТЬеогу, V. 15, п. 2, 1986. рр. 159-166. 1168. Н. Медеггекег, “ТЬе Ыпеаг Сотр1ехку РгоШе апс! Ые Зитр Сотр1ехку оР Кеуз1геат 8ециепсез,” Адуапсез т Сгур1о!о°у— ЕШОСКУРТ ’90 Ргосеедт§з, 8рпп§ег-Уег1а«. 1991, рр. 174-188. 1169. У. №егш, “А №\у Тгардоог Ы Кпарзаскз,” Адуапсез Ы Сгур1о1о§у—ЕШОСКУРТ ’90 Ргосеедт^з, 8рпп§ег-Уег1а§, 1991, рр. 405-411. 1170. У. Мегт апд А. КепуаИ, “Но\у 1о Ргеуеп! Виут§ оР Уо1егз т Сотри1ег Е1есПопз,” Адуапсез т Сгур1о1о§у—А81АСКУРТ ’94 Ргосеед1пёз, 8рпп§ег-Уег1а§, 1995, рр. 164-170. 1171.1. №уеп апд Н.А. 2искегтап, Ап 1п1годисПоп Ю Ые ТЬеогу оР№тЬегз, N6^ Уогк: ЫЬп \УПеу & 8опз, 1972. 1172. К. ^Ьаиег, “Сгур1апа1уз15 оР Ые Кеде! 8сЬете,” Соп1пЬиНопз Ю Оепега1 А1§еЬга 3: Ргосеед1п^з оР Ые У1еппа СопРегепсе, Уег1а§ Нб1дег-Р1сЫег- Тетрзку, У1еппа, 1985, рр. 255-264. 1173. К. ШЬаиег, “Сгур1апа1уз1з оР а РиЬНс-Кеу Сгур1озуз1ет Вазед оп 01скзоп-Ро1упот1а1з,” МаЫетаНса 81оуаса, у. 38, п. 4, 1988, рр. 309- 323. 1174. К. ^§исЫ, Н. АзЫуа, У. 8апо, апд Т. Капеко, “А 81иду оп 01РГегепНа1 АИаск оР МВАЬ Сгур1озуз1ет,” Ргосеед1п§з оР Ые 1994 8утрозшт оп Сгур1о&гарЬу апд ЫРогтаПоп 8есигку (8С18 94), Ьаке В1\уа, Зарап, 27-29 Зап 1994, рр. 14В. 1-7. (1п Зарапезе.)
Список литературы 781 1175.Н. Ыити, А. 8а1отаа, апс! Ь. ЗапЮап, “Зесге! Ва11о! ЕЮсНопз Ы Сотри1ег ЫеПуогкз,” СотриЮгз & 8есип!у, V. 10, 1991, рр. 553-560. 1176. К. ЫуЬег§, “Соп5!гисНоп оРВеп! РипсПопз апс! ОПТегепсе 8е!з,” Адуапсез Ы Сгур!о1о§у— ЕШОСЯУРТ ’91 Ргосеедт§з, 8рпп§ег-Уег1а§, 1991, рр. 151-160. 1177. К. ЫуЬег§, “РегРес! ЫопНпеаг 8-Вохез,” Адуапсез Ы Сгур!о1о§у—ЕШОСЯУРТ ’91 Ргосеедт§з, 8рпп§ег-Уег1а§, 1991, рр. 378-386. 1178. К. ЫуЬег§, “Оп Ые СопзкисНоп оР РП^Ыу ЫопПпеаг Регти!аНопз,” Адуапсез т Сгур!о1о§у—ЕШОСЯУРТ ’92 Ргосеедт§з, 5рпп§ег-Уег1а§, 1991, рр. 92-98. 1179. К. ЫуЬег§, “ОПТегепНаИу 1Ы1рогт Маррт§з Рог Сгур!о§гарЬу,” Адуапсез т Сгурю1о§у— ЕШОСЯУРТ ’93 Ргосеедт^з, 8рпп§ег-Уег1а§, 1994, рр. 55-64. 1180. К. ЫуЬег§, “РгоуаЫе 8есип!у а^аЫз!01РГегепНа1 Сгур1апа1уз15 ” ргезепЮд а! Ые гитр зеззюп оР Еигосгур! ’94, Мау 1994. 1181. К. ЫуЬег§ апд Ь.Я. Кпидзеп, “РгоуаЫе 8есип!у а§атз! 01РРегепНа1 Сгур!апа1уз1з,” Адуапсез т Сгур!о1о§у—СЯУРТО ’92 Ргосеедт§з, 8рпп§ег-Уег1а§, 1993, рр. 566-574. 1182. К. ЫуЬег§ апд Ь.Я. Кпидзеп, “РгоуаЫе 8есип!у а§атз! 01РРегепНа1 Сгур!апа1уз1з,” Ыита1 оР Сгур!о1о§у, V. 8, п. 1, 1995, рр. 27-37. 1183. К. ИуЬег§ апд Я.А. Яиерре1, “А Ие\у 81§па!иге ЗсЬете Вазед оп Ые ОЗА СНуЫ§ Мезза§е Яесоуегу,” 1з! АСМ СопРегепсе оп СотриЮг апд СоттитсаНопз 8есип!у, АСМ Ргезз, 1993, рр. 58-61. 1184. К. ЫуЬег§ апд Я.А. Яиерре1, “Мезза§е Яесоуегу Рог 81§па!иге ЗсЬетез Вазед оп Ые 01зсге!е Ьо§апЫт РгоЫет,” Адуапсез т СгурЮ1о§у— ЕШОСЯУРТ ’94 Ргосеедт§з, 8рпп§ег-Уег1а§, 1995,Ю арреаг. 1185. Ь. О’Соппог, “Епитега!т§ Ыопде§епега!е Регти!а- Нопз,” Адуапсез т Сгур!о1о§у—ЕШОСЯУРТ ’93 Ргосеедт§з, 8рпп§ег-Уег1а§, 1994, рр. 368-377. 1186. Ь. О’Соппог, “Оп Ые 01з1пЬиНоп оР СЬагасЮпзНсз т ВуесНуе Маррт^з,” Адуапсез Ы Сгур!о1о§у—ЕШОСЯУРТ ’93 Ргосеедт§з, 8ргт§ег-Уег1а§, 1994, рр. 360-370. 1187. Ь. О’Соппог, “Оп 1Ье 01з1пЬиНоп оР СЬагасЮпзНсз т Сотрозке Регти!аНопз,” Адуапсез Ы Сгур!о1о§у—СЯУРТО ’93 Ргосеедт§з, 8рпп§ег-Уег1а§, 1994, рр. 403-412. 1188. Ь. О’Соппог апд А Юаррег, “А1§еЬгаю Ыоп1теап1у апд 11з АррНсаНоп Ю СгурЮ^гарЬу,” Ыигпа1 оР СгурЮ1о§у, V. 7, п. 3, 1994, рр. 133-151. 1189. А. Од1угко, “01зсгеЮ Ьо^агкЬтз Ы Ртке Р1е1дз апд ТЬек Сгур!о§гарЫс ЗщшПсапсе,” Адуапсез Ы Сгур!о1о§у: РгосеедЫ§з оР ЕШОСЯУРТ 84, Зрпп§ег-Уег1а§, 1985, рр. 224-314. 1190. А. Од1угко, “Рго§гезз Ы Ы!е§ег РасЮпгаНоп апд 01зсге1е Ьо§агкЬтз,” иприЬНзЬед тапизспр!, РеЬ 1995. 1191. ОРПсе оРТесЬпо1о§у Аззеззтеп!, 118. Соп^гезз, ‘Т)еРепдЫ§ 5есге!з, 5Ьапп§ Оа!а: Ие\у Ьоскз апд Кеуз Рог Е1ес!готс СоттитсаНоп,” ОТА-С1Т- 310, ^азЫп§Юп, О.С.: ИЗ. Ооуеттеп! РппНп§ ОРПсе, Ос! 1987. 1192. В. 0’РП§§Ыз, \У. 01РПе, Ь. 8!га\УС2упзк1, апд Я. де Ноо§, “ЕпсгурПоп апд 180И—а Иа!ига1 Рк,” Ргосеедт§з оР !Ье 1987 1п!етаНопа1 8луксЫп§ Зутрозшт, 1987, рр. 863-869. 1193. У. ОЬтзЫ, “А 81иду оп Оа!а 8есип!у,” Маз!ег’з 1Ьез18, ТоЬики ТИПуегзку, 1арап, 1988. (1п Ырапезе.) 1194. К. ОЫа, “А Зесиге апд ЕШаеп! Епсгур!ед Вгоадсаз! СоттитсаНоп 8уз!ет 1)зт§ а РиЬНс Маз!ег Кеу,” ТгапзасНопз оР !Ье 1пзН!и!е оР Е1ес1готсз, 1пРогта!1оп, апд Соттип1са!юп Еп§теегз, у. Р70-О, п. 8, Аи§ 1987, рр. 1616-1624. 1195. К. ОЫа, “Ап Е1ес!г1са1 УоНп§ ЗсЬете 1)зт§ а 81п§1е Адт1П1з!га!ог,” 1Е1СЕ 8рпп§ Ыа!10па1 СопуепНоп, А-294, 1988, у. 1, р. 296. (1п 1арапезе.) 1196. К. ОЫа, “1депН!у-Ьазед Аи!ЬепНса!1оп ЗсЬетез 1151П§ !Ье ЯЗА Сгур1озуз1ет,” ТгапзасНопз оР !Ье 1пз111и!е оР Е1ес1готсз, ЫРогтаПоп, апд Соттип1са11оп Еп§1пеегз, у. 1720-Н, п. 8, Аи§ 1989, рр. 612-620. 1197. К. ОЫа апд М. Ма!зш, ‘Т)1рРегепНа1 А!!аск оп Мезза§е Аи!Ьеп!1са!1оп Содез,” Адуапсез 1п Сгур!о1о§у—СЯУРТО ’93 Ргосеед1п§з, Зрпп§ег-Уег1а§, 1994, рр. 200-223. 1198. К. ОЫа апд Т. ОкатоЮ, “РгасНса1 ЕхЮпзюп оР Р1а!-8Ьат1г ЗсЬете,” Е1ес!гоп1сз ЬеИегз, V. 24, п. 15, 1988, рр. 955-956. 1199. К. ОЫа апд Т. ОкатоЮ, “А МодШсаНоп оР !Ье Р1а!-8Ьатк ЗсЬете,” Адуапсез т Сгур!о1о§у— СЯУРТО ’88 Ргосеед1П§з, 8рг!п§ег-Уег1а§, 1990, рр. 232-243. 1200. К. ОЫа апд Т. ОкатоЮ, “А 01§ка1 МиШзщпаШге ЗсЬете Вазед оп !Ье Р1а!-8Ьат1г ЗсЬете,” Адуапсез т Сгур!о1о§у— А81АСЯУРТ ’91 Ргосеед1п§з, Зрг1п§ег-Уег1а§, 1993, рр. 139-148. 1201. К. ОЫа, Т. ОкатоЮ апд К. Коуата, “МетЬегзЫр АиЫепНсаНоп Рог РПегагсЬу Ми1Н§гоирз 11з1п§ Ые Ех!епдед Р1а!-8Ьат1г ЗсЬете,” Адуапсез 1п Сгур!о1о§у—Е1РЯОСЯУРТ ’90 Ргосеед1п§з, Зрпп§ег-Уег1а§, 1991, рр. 446-457. 1202. Е. ОкатоЮ апд К. Тапака, “Кеу 01з1пЬиНоп Вазед оп ЫепНПсаНоп ЫРогтаПоп,” ШЕЕ Ыигпа! оп 8е1ес!ед Агеаз 1п Соттип1са11оп, у. 7, п. 4, Мау 1989, рр. 481-485. 1203. Т. ОкатоЮ, “Раз! РиЬИс-Кеу СгурЮзузЮтз 1181п§ Соп§гиеп! Ро1упот1а1 Ециа!1опз,” Е1ес!готсз Ьеаегз, у. 22, п. 11, 1986, рр. 581-582.
782 Прикладная криптография 1204. Т. ОкатоЮ, “МокШсаНоп оР а РиЪИс-Кеу СгурЮзузЮт,” ЕЮсПошсз ЬеПегз, V. 23, п. 16, 1987, рр. 814-815. 1205. Т. ОкатоЮ, “А Раз! ЗщпаШге ЗсЬете Вазес! оп Соп§гиепНа1 Ро1упогша1 ОрегаПопз,” ШЕЕ ТгапзасНопз оп ЫРогтаНоп ТЬеогу, V. 36, п. 1, 1990, рр. 47-53. 1206. Т. ОкатоЮ, “РгоуаЫу Зесиге апс! РгасНса! ИепНРюаНоп ЗсЬетез апс! Соггезропкт§ З^паШге ЗсЬетез,” Акуапсез т Сгур!о1о§у— СЯУРТО ’92 Ргосеект§з, 8рпп§ег-Уег1а§, 1993, рр. 31-53. 1207. Т. ОкатоЮ, А. Рирока, апс1 Е. Рцрзак1, “Ап ЕШс1еп1 01§Ьа1 81§па!иге ЗсЬете Вазес! оп ЕШрНс Сигуе оуег 1Ье ЯЫ§ Ъп,” Акуапсез Ы Сгур!о1о§у—СЯУРТО ’92 Ргосеект^з, 8рпп§ег-Уег1а§, 1993, рр. 54-65. 1208. Т. Окато1о, 3. М1уа§исЫ, А. 8Ыга1зЫ, апс! Т. Ка\уоака, “81§пек Ооситеп! Тгапзгтззюп ЗузЮт,” 0.3. РаЮп! #4,625,076, 25 Ыоу 1986. 1209. Т. ОкатоЮ апс! К. ОЫа, “01зрозаЫе 2его- Кпо\у1ек§е АиШепНсаНоп апс! ТЬек АррНсаНопз Ю ЬЫИасеаЫе ЕЮсИошс СазЬ,” Акуапсез Ы Сгур!о1о§у—СЯУРТО ’89 РгосеекЫ§з, 5рпп§ег-Уег!а§, 1990, рр. 134-149. 1210. Т. ОкатоЮ апк К. ОЫа, “Но\у !о РЗННге Ше Яапкотпезз оР 2его-Кпо\у1ек§е РгооРз,” Акуапсез т Сгур!о1о§у—СЯУРТО ’90 РгосеекЫ§з, 8рпп§ег-Уег1а§, 1991, рр. 456-475. 1211. Т. ОкатоЮ апс! К. ОЫа, “РЗтуегза! ЕЮсИошс СазЬ,” Акуапсез т Сгур!о1о§у—СЯУРТО ’91 Ргосеект§з, 5рпп§ег-Уег!а§, 1992, рр. 324-337. 1212. Т. ОкатоЮ апс! К. ОЫа, “Зигуеу оР Ощка1 81§па!иге ЗсЬетез,” Ргосеект§з оР Ше ТЬкк Зутрозшт оп 8!аЮ апс! Рго§гезз оР ЯезеагсЬ т Сгур1о§гарЬу, Ропкахопе Ы§о Вогкот, Яоте, 1993, рр. 17-29. 1213. Т. ОкатоЮ апс! К. ОЫа, “ОезщпаЮк СопПгтег 31§паШгез Ызт§ Тгаркоог РипсНопз,” Ргосеект^з оР Ше 1994 Зутрозшт оп Сгур1о§гарЬу апс! ЫРогтаНоп Зесигку (8С15 94), Ьаке Впуа, Зарап, 27-29 Зап 1994, рр. 16В.1-11. 1214. Т. Окато1о апс! К. Закит, “ЕРПсЮп! А1§огкЬтз Рог Ше СопзИисНоп оР НурегеШрНс СгурЮзузЮтз,” Акуапсез т Сгур!о!о§у—СЯУРТО ’91 РгосеекЫ§з, 8рг1п§ег-Уег!а§, 1992, рр. 267-278. 1215. Т. ОкатоЮ апк А. 8Ыга1зЫ, “А Раз! З^паШге ЗсЬете Вазес! оп (ЗиакгаНс ЫециаПНез,” Ргосеект^з оР Ше 1985 Зутрозшт оп Зесигку апс! Рпуасу, ШЕЕ, Арг 1985, рр. 123-132. 1216.1.0. 0!зеп, Я.А. ЗсЬокг, апс! Ь.Я. №еЮЬ, “Веп! РипсНоп Зециепсез,” ШЕЕ ТгапзасНопз оп ЫРогтаНоп ТЬеогу, у. 1Т-28, п. 6, Ыоу 1982, рр. 858-864. 1217. Н. Оп§ апс! С.Р. ЗсЬпогг, “З^паШгез Шгои§Ь АрркштаЮ Яергезеп1аНопз Ьу (ЗиакгаНс Рогтз,” Акуапсез т СгурЮ1о§у: Ргосеект§з оР СгурЮ 83, Р1епит Ргезз, 1984. 1218. Н. Оп§ апс! С.Р. ЗсЬпогг, “Раз! 81§па!иге СепегаНоп \укЬ а Р1а! ЗЬатк-Ыке ЗсЬете,” Акуапсез т Сгур!о1о§у—Е13ЯОСЯУРТ ’90 РгосеесЬп§8, 8рпп§ег-Уег1а§, 1991, рр. 432-440. 1219. Н. Оп§, С.Р. ЗсЬпогг, апс! А. ЗЬатк, “Ап ЕРРЮЮп! 81§па!иге ЗсЬете Вазек оп Ро1упогша1 Е^иаНоп8,” Ргосеект§з оР Ше 16Ш Аппиа1 Зутрозшт оп Ше ТЬеогу оР СотриНп§, 1984, рр. 208-216. 1220. Н. Оп§, С.Р. ЗсЬпогг, апк А. ЗЬатк, “ЕШсЮп! 81§па!иге ЗсЬетез Вазек оп Ро1упогта1 ' ЕциаНопз,” Акуапсез т СгурЮ1о§у: Ргосеект^з оР СЯУРТО 84, 5рпп§ег-Уег1а§, 1985, рр. 37-46. 1221. Ореп ЗЬор ЫРогтаНоп Зетсез, 0818 8есип!у Азрес!з, 0818 Еигореап \Уогкт§ Огоир, Щ}1, Гта1 герог!, Ос! 1985. 1222. О.А. ОПоп, М.Р. Яоу, Р.А. ЗсоИ, Ь.Е. Реррагк, апк З.Е. Тауагез, “УЬ81 1тр1етеп!аНоп оР РиЫЮ-Кеу ЕпсгурПоп А1§огкЬтз,” Акуапсез Ы Сгур!о1о§у— СЯУРТО ’86 Ргосеект^з, 8рпп§ег-Уег!а§, 1987, рр. 277-301. 1223. Н. Огир, Е. Зуепкзеп, апк Е. Апкгеазеп, “У1СТОЯ—Ап ЕРРЮЮп! Я8А Нагк\уаге 1тр1етеп!аНоп,” Акуапсез т Сгур!о!о§у— Е13ЯОСЯУРТ ’90 РгосеекЫ§з, 8рпп§ег-Уег1а&, 1991, рр. 245-252. 1224. О. 0!\уау апк О. Яеез, “ЕРПсгеп! апк Т1те1у Ми!иа! АиШепНсаНоп,” ОрегаНп§ 8уз1етз ЯеуЮ\у, у. 21, п. 1, 1987, рр. 8-10. 1225. О. Ра§е1з-РЮк, “1тр1етеп!аНоп 1ззиез Рог Маз!ег Кеу ШЮЪиНоп апк Рго!ес!ек Кеу1оак Ргосекигез,” Сотри!егз апк 8есип!у: А 0!оЬа1 СЬа11еп§е, Ргосеект§з оР 1Р1Р/ЗЕС ’83, ЫогШ НоНапк: Е1зеуЮг 8с1епсе РиЬНзЬегз, 1984, рр. 381-390. 1226. С.М. РараШткпои, Сотри!аНопа! СотрЮхку, АкШзоп-^езЮу, 1994. 1227. С.З. Рагк, “1тргоут§ Соке Яа!е оР МсЕНесе’з РиЬНс-кеу СгурЮзузЮт,” ЕЮсПошсз ЬеПегз, V. 25, п. 21, 12 Ос! 1989, рр. 1466-1467. 1228. 8. Рагк, У. К1т, 8. Ьее, апк К. К1т, “АПаскз оп Тапака’з Ыоп-т!егасНуе Кеу 5Ьапп§ ЗсЬете,” Ргосеект§з оР Ше 1995 Зутрозшт оп СгурЮ^гарЬу апк ЫРогтаНоп 8есип!у (8С18 95), Ыиуата, Зарап, 24-27 Дап 1995, рр. ВЗ.4.1-4. 1229. 8.Д. Рагк, К.Н. Ьее, апк О.Н. ^оп, “Ап ЕпПизЮк Ь!пкеп1аЫе 31§па!иге,” Ргосеек1п§з оР Ше 1995 Ырап-Когеа \УогкзЬор оп ЫРогтаНоп 8есип!у апк Сгур!о§гарЬу, Ыиуата, Зарап, 24-27 1ап 1995, рр. 120-126. 1230. 3.1 Рагк, К.Н. Ьее, апк О.Н. \Уоп, “А РгасНса! Огоир 81§па!иге,” Ргосеек1п§з оР Ше 1995 Зарап- Когеа \УогкзЬор оп ЫРогтаНоп Зесигку апк Сгур!о§гарЬу, Ыиуата, Зарап, 24-27 Зап 1995, рр. 127-133.
Список литературы 1231. 8.К. Рагк апк КЖ МШег, “Яапкот ЫитЬег ОепегаГогз: Ооос! Опез Аге Нагс! 1о Ртк,” СоттитсаНопз оГ 1Не АСМ, V. 31, п. 10, Ос! 1988, рр. 1192-1201. 1232. Ь РаГапп, “Ном Го Ртк апс! Ауо1П СоШзюпз Рог 1Ье Кпарзаск НазЬ РипсНоп,” Адуапсез т Сгур1о1о§у—ЕШОСЯУРТ ’93 Ргосеект§з, 8рпп§ег-Уег!а§, 1994, рр. 305-317. 1233. Ж РаГГегзоп, Ма!ЬетаНса1 Сгур!о1о§у Рог СотриГег ЗиепНзГз апс! МаГЬетаНЫапз, ТоГома, N.1: Яомтап & ЬкПеМП, 1987. 1234. ЖН. Раупе, “РиЬНс Кеу СгурШ^гарЬу 1з Базу !о Вгеак,” \\Н1Нат Н. Раупе, иприЬНзЬек тапизспр!, 16 Ос190. 1235. Т.Р. Рекегзоп, ‘ТНзГпЬиГек Ргоуегз мкЬ АррНсаНопз Го НпкешаЫе ЗщпаГигез,” Адуапсез ш Сгур!о1о§у—ЕШОСЯУРТ ’91 РгосеесНп^з, 8рпп§ег-Уег1а§, 1991, рр. 221-242. 1236.8. Ре1е§ апс! А. ЯозепПеМ, “Вгеакш® ЗиЬзГкиНоп С1рЬегз Ызт§ а Яе1ахаНоп А1§огкЬт,” СоттитсаНопз оР ГЬе АСМ, V. 22, п. 11, Ыоу 1979, рр. 598-605. 1237. Я. Регака, “81тикапеоиз Зесигку оРВкз т ГЬе 01зсге!е Ьо§,” Акуапсез т Сгур1о1о§у—ЕШО¬ СЯУРТ ’85, Зрг1п§ег-Уег1а§, 1986, рр. 62-72. 1238.1. РеГегзоп, “МопГе Саг1о РНузгсз: А СаиНопагу Ьеззоп,” 8с1епсе Ыемз, у. 142, п. 25, 19 Оес 1992, р. 422. 1239. В. РРкгтапп, “Рак-8!ор 81§па!игез: Рппс1р1ез апк АррНсаНопз,” РгосеесНп§з оР СОМРЫЗЕС ’91, Е1§Ь!Ь Ж>г!к СопРегепсе оп Сотри1ег Зесигку, Аикк, апк СопГго!, Е1зеу1ег Зтепсе РиЬНзЬегз, 1991, рр. 125-134. 1240. В. РПГгтапп апк М. \\^а1кпег, “Рогта1 АзресГз оР Рак-ЗГор 81§па!игез,” Ракикй! Рйг 1пРогтаНк, Ытуегзку Каг1згиЬе, Яерог!22/90, 1990. 1241. В. РГигтапп апк М. \\^а1кпег, “РаП-8!ор 81§па!иге8 апс! ТЬек АррНсаНоп,” Зесипсот ’91, 1991, рр. 145-160. 1242. В. РГкгтапп апк М. \Уа1кпег, “Ыпсопккюпа1 Сопсеа1теп! мкЬ Сгур!о§гарЫс Я觧екпезз,” У18 ’91 УеНаззПсЬе 1пГогтаНопзуз!ете РгосеесНп§8, ОагтзГакГ, Оегтапу, 13-15 МагсЬ 1991, рр. 3-2-320. (1п Оегтап.) 1243. В. РРкгтапп апс! М. Ма1кпег, “Ном Го Вгеак апк Яерак а ‘РгоуаЫу Зесиге’ ЫпГгасеаЫе Раутеп! 8уз1ет,” Акуапсез т СгурГо1о§у—СЯУРТО ’91 Ргосеект§з, 8рпп§ег-Уег1а§, 1992, рр. 338-350. 1244. С.Р. РЯее§ег, Зесигку т СотриНп^, Еп§1емоок СПРРз, N.1.: РгепНсе-На11, 1989. 1245. 8.Ю. РЬоетх апс! Р.О. Томпзепк, “(ЗиапГит СгурГо^гарЬу апк Зесиге ОрНса! СоттитсаНоп,” ВТ ТесЬпо1о§у .1оигпа1, V. 11, п. 2, Арг 1993, рр. 65-75. 1246.1 Р1ерггук, “Оп РиЬИс-Кеу СгурГозузГетз Вик! Ызт§ Ро1упогша1 Ят§з,” Акуапсез т 783 Сгур!о1о§у—ЕШОСЯУРТ ’85, 8ргт§ег-Уег1а§, 1986, рр. 73-80. 1247. Ь Р1ерггук, “Еггог Ргора^аНоп Ргорег!у апк АррНсаНопз т Сгур!о§гарЬу,” 1ЕЕ Ргосеект§з- Е, Сотри!егз апк 01§ка1 ТесЬтциез, V. 136, п. 4, М 1989, рр. 262-270. 1248. О. Ршказ, Т. Рагкег, апс! Р. Каузег, “8Е8АМЕ: Ап 1п!гокисПоп,” 1ззие 1.2, Ви11, 1СЬ, апк ЗЬП, Зер 1993. 1249. Р. Р1рег, “8!геат С1рЬегз,” Е1екГго!есЬтс ипк МазсЬтепЬаи, V. 104, п. 12, 1987, рр. 564-568. 1250. У.8. Р1езз, “ЕпсгурПоп ЗсЬетез Гог СотриГег СопИкепНаНГу,” ШЕЕ ТгапзасНопз оп СотриНп§, у. С-26, п. 11, Ыоу 1977, рр. 1133-1136. 1251 Л.В. Р1итз!еас1, “1пГегпп§ а Зециепсе Оепега!ес1 Ьу а Ыпеаг Соп§гиепсе,” Ргосеект^з оГ !Ье 23 гк ШЕЕ Зутрозшт оп !Ье РоипкаНопз оГ СотриГег ЗЫепсе, 1982, рр. 153-159. 1252. Я. Рое!, “ТЬе Оез^п оГ 8рес1а1 Ригрозе Нагкмаге !о РасГог Ьаг§е 1п!е§егз,” СотриГег РЬузюз СоттитсаНопз, у. 37,1985, рр. 337-341. 1253. 8.С. РоЬН§ апк М.Е. НеИтап, “Ап 1тргоуес1 А^огкЬт Гог СотриПп§ Ьо^агкИтз 1П ОР(р) апк Из Сгур!о§гарЫс 81§п1Г1сапсе,” ШЕЕ ТгапзасНопз оп 1пГогтаНоп ТЬеогу, у. 24, п. 1, Дап 1978, рр. 106-111. 1254Л.М. Ро11агс1, “А МопГе Саг1о МеГЬос! Гог РасГопгаНоп,” В1Т, у. 15, 1975, рр. 331-334. 1255.1М. РоНагк апН С.Р. ЗсЬпогг, “Ап ЕГНс1еп! 8о1иНоп оГ !Ье Соп§гиепсе х2 + ку2 = т (ток п),” ШЕЕ ТгапзасНопз оп 1пГогтаНоп ТЬеогу, у. ГГ-33, п. 5, Зер 1987, рр. 702-709. 1256. С. Ротегапсе, “Яесеп! Оеуе1ортеп!з 1п РптаНГу ТезНп§,” ТЬе Ма!ЬетаНса1 1п!е1П§епсег, у. 3, п. 3, 1981, рр. 97-105. 1257. С. Ротегапсе, “ТЬе (ЗиаНгаНс 31еуе Рас1опп§ А1§ог1!Ьт,” Акуапсез 1П Сгур!о1о§у: Ргосеек1п§з ОГЕ1ЛЯОСЯУРТ 84, Зрг1п§ег-Уег1аё, 1985, 169- 182. 1258. С. Ротегапсе, “Раз!, Ящогоиз РасГог^гаПоп апк 01зсге!е Ьо§аг!ГЬт А1§ог1!Ьтз,” 01зсге!е А1§ог1гЬтз апк Сотр1ехку, Ыем Уогк: Асакет1с Ргезз, 1987, рр. 119-143. 1259. С. Ротегапсе, XV. ЗткЬ, апк Я. Ти1ег, “А Р1ре- Ыпе АгсЫГесГиге Гог Рас!ог1п§ Ьаг§е 1п!е§егз М1!Ь !Ье РиакгаПс 81еуе А1§огкЬт,” 81АМ 1оигпа1 оп СотриНп§, у. 17, п. 2, Арг 1988, рр. 387-403. 1260.0.Т Рорек апк С.8. КНпе, “ЕпсгурПоп апк Зесиге СотриГег ЫеГмогкз,” АСМ СотриНп^ Зигуеуз, V. 11, п. 4, Эес 1979, рр. 331-356. 1261. Р. РгаИ, Зесге! апк Нг§епГ, В1ие ЯШЬоп Воокз, 1942. 1262. В. Ргепее1, “Апа1уз1з апк Оез1§п оГ СгурГо- §гарЫс НазЬ Рипс!1опз,” РЬ.Э. к1ззег!а!1оп, КаГЬоНеке ип1Уегзке1! Ьеиуеп, Зап 1993.
784 Прикладная криптография 1263. В. Ргепее!, “ОЛГегепНа! Сгур!апа!уз18 оГ НазН РипсНопз Вазед оп В1оск ОрНегз,” Ргосеедт§з оГ 1Не 1з! АСМ СопГегепсе оп Сотри!ег апд СоттитсаНопз Зесигку, 1993, рр. 183-188. 1264. В. Ргепее1, “Сгур!о<*гарЫс НазН РипсНопз,” Еигореап ТгапзасНопз оп Те1есоттитсаНопз, V. 5, п. 4, ,1и1/Аи& 1994, рр. 431-448. 1265. В. Ргепее!, регзопа1 соттишсаПоп, 1995. 1266. В. Ргепее1, А. Воззе1аегз, Я. ОоуаеЛз, апд I Уапде\уа11е, “СоШзюп-Ргее НазН РипсНопз Вазед оп В1оск С1рНег А1§опШтз,” Ргосеедт§з оГ 1Ие 1989 СагпаНап СопГегепсе оп 8есип!у ТесНпо1о§у, 1989, рр. 203-210. 1267. В. Ргепее!, Я. ОоуаеЛз, апд I. УапдеууаИе, “Ап АПаск оп Т\уо НазН РипсНопз Ьу ЪНеп§- Ма!5ито!о-1та1,” Адуапсез т Сгур!о1о§у— А81АСЯУРТ ’92 Ргосеедт^з, 8рпп§ег-Уег!а§, 1993, рр. 535-538. 1268. В. Ргепее1, Я. ОоуаеЛз, апд I. Уапде\уа11е, “НазН РипсНопз Вазед оп В1оск С1рНегз: А ЗупШеНс АрргоасЬ,” Адуапсез т Сгур!о1о§у—СЯУРТО ’93 Ргосеедт^з, 8рпп§ег-Уег1а§, 1994, рр. 368-378. 1269. В. Ргепее1, М. ИиИт, У. Яутеп, апд I. Вие1епз, “Сгур1апа1уз1з оГ 1Не СРВ тоде оГ гНе ОЕЗ унШ а Яедисед ЫитЬег оГ Яоипдз,” Адуапсез т Сгур!о!о§у—СЯУРТО ’93 Ргосеедт^з, 8рпп§ег-Уег1а§, 1994, рр. 212-223. 1270. В. Ргепее1 апд У. Яутеп, “Оп Нзт§ Мах1шит ЫкеННоод !о ОрНгтге Яесеп! Сгур!апа1уНс ТесИшциез,” ргезеШед а! Ше гитр зеззюп оГ Е1ЖОСЯУРТ ’94, Мау 1994. 1271. В. Ргепее1, \У. Уап Ьееклууск, Ь. Уап Упдеп, Я. ОоуаеЛз, апд Д. Уапде\уа11е, “Ргора§аНоп СИагас!епзПсз оГ Воо1еап РипсНопз,” Адуапсез т Сгур!о1о§у— Е1ЖОСЯУРТ ’90 Ргосеедт§з, Зрпп§ег-Уег1а§, 1991, рр. 161-173. 1272. \У.Н. Ргезз, В.Р. Р1аппегу, 8.А. Теико1зку, апд \У.Т. Уе11егПп§, Ыишепса1 ЯеЫрез т С: ТНе АЛ оГ ЗЫепНПс СотриНп^, СатЬпд§е Нтуегзку Ргезз, 1988. 1273. V/. Рпсе, “Кеу Мапа§етеп! Гог Оа!а ЕптрНегтеп!,” Зесигку: Ргосеедт^з оГ 1Р1Р/8ЕС ’83, Ь1оЛН НоИапд: Е1зеу1ег Заепсе РиЬПзНегз, 1983. 1274. О.Р. Ригду, “А Н1°Н-8есип!у Ьо^-т Ргоседиге,” СоттитсаНопз оГ Ше АСМ, у. 17, п. 8, Аи§ 1974, рр. 442-445. 1275.1.-1. (Зшзяиа1ег, “Аппоипст§ 1Не 8таЛ Сагд \укН Я8А СараЬкку,” Ргосеедт§з оГ Ше СопГегепсе: 1С Сагдз апд АррПсаПопз, Тодау апд Тогпоггоуу, Атз!егдат, 1989. 1276.1.-1. (Зшзциа1ег апд С. Соиугеиг, “Раз! ЭефНегтеп! А1§огкНт Гог Я8А РиЬПс-Кеу Сгур!озуз!ет,” Е1ес!готс ЬеПегз, V. 18, 1982, рр. 155-168. 1277. Т-Т (}ш5яиа1ег апд Т-Р. Ое1езсаШе, “01Нег СусПп§ Тез!з Гог ОЕЗ,” Адуапсез т Сгур!о1о§у—СЯУРТО ’87 Ргосеедтез. 8рпп§ег-Уег1а§, 1988, рр. 255-256. 1278.1.-1. (Зш5яиа!ег апд У.О. Оезтед!, “СЫпезе Ьо!!о аз ап ЕхНаизНуе Соде-Вгеакт§ МасЫпе.“ Сотри!ег, V. 24, п. 11, Иоу 1991, рр. 14-22. 1279. Т-Т (}ш5яиа1ег апд М. Окаик, “2п-ЬН Назг. РипсНопз Ызт^ п-Ьк 5утте!пс В1оск С1рЬе: А1§огкНтз, Адуапсез т Сгур!о1ое>— ЕЫЯОСЯУРТ ’89 Ргосеедт^з, 8рпп§ег-Уег1а2. 1990, рр. 102-109. 1280.Т-Т (Зшзяиа1ег апд Ь.С. ОиШои, “Оез Ргоседез д’АиШепННсаНоп Вазёз зиг ипе РиЬНсаНоп се РгоЫётез Сотр1ехез е! РегзоппаПзёз дот !ез ЗоЫНопз Мат!епие5 8есгё!ез СопзШиеп! аигаг.: д’АссгёдкаНопз,” Ргосеедт§з оГ ЗЕСЫЯЮОМ ’89: 7!Н \Уог1дуу1де Соп§гезз оп Сотртег апс СоттитсаНопз 8есиг1!у апд Рго!есНоп, Зос1ё:е д’Ёдкюп е! д’Ог^атзаНоп д’Ехрозтог.з РгоГеззюппеИез, 1989, рр. 149-158. (1п РгепсН 1281. У-Д., Мупат, Мипе1, апд М1сНаё1 (^шзяиаГег. 2 Мапе Аптек, ОаУд, Аппа, 0\уепо1ё, апд 8оа2:с ОиШои; апд Т. Вегзоп, “Но\у 1о Ехр1ат 2ег:- Кполу1ед§е Рго!осо1з !о Уоиг СНПдгепТ Адуапсез т Сгур!о1о§у—СЯУРТО 8? Ргосеедт^з, 5рпп§ег-Уег1а§, 1990, рр. 628-631 1282. М.О. ЯаЫп, “01§ка1 81§па!игез,” РоипдаНопз с: 8есиге СоттишсаПоп, №\у Уогк: Асадет:: Ргезз, 1978, рр. 155-168. 1283. М.О. ЯаЫп, “01§ка1 81§па1игез апд РиЬПс-Ке> РипсНопз аз 1п!гас!аЫе аз РаскопгаНоп,” М1Т ЬаЬога!огу Гог Сотри!ег ЗЫепсе, ТесНп1сс. ЯероЛ, М1Т/1Х8/ТЯ-212, Ы 1979. 1284. М.О. ЯаЫп, “РгоЬаЬШзНс А^огкНт Гог ТезПпс Рпта1ку,” 1оигпа1 оГЫитЬег ТНеогу, у. 12, п. 1. РеЬ 1980, рр. 128- 138. 1285. М.О. ЯаЫп, “РгоЬаЬШзНс А^огкИтз т Ртг.е Р1е1дз,” 51АМ 1оигпа1 оп СотриНп§, V. 9, п. 2. Мау 1980, рр. 273-280. 1286. М.О. ЯаЫп, “Но\у !о ЕхсНап^е 8есге!з Ьу ОЬПуюиз ТгапзГег,” ТесНп1са1 Мето ТЯ-81, А1кег. Сотри!ег ЬаЬогаЮгу, Нагуагд Нп1уегз1!у, 1981. 1287. М.О. ЯаЫп, “Рт§егрппНп§ Ьу Яапдот Ро1упот1а1з,” ТесНп1са1 ЯероЛ ТЯ-15-81, Сете: Гог ЯезеагсЬ т СотриНп§ ТесНпо1о§у, Наг\агс Нп1Уегз1!у, 1981. 1288. Т. ЯаЫп апд М. Веп-Ог, “УепПаЫе Зесге: 8Наг1п§ апд МиШраЛу Рго!осо1з \У1!Н Нопез: Ма]огНу,” РгосееШп^з оГ Ше 21з! АСМ 8утроз1ит оп Ше ТНеогу оГ СотриНп§, 1989. рр. 73-85. 1289. ЯАЫО СогрогаНоп, А МППоп Яапдот Ошпс ууНН 100,000 Ыогта1 Эеу1а!е5, 01епсое, 1Ь: Ргее Ргезз РиЬПзНегз, 1955. 1290. Т.Я.К Яао, “Сгурозуз!етз Нзт§ А1§еЬга1: Содез,” 1п!егпа!1опа1 СопГегепсе оп Сотрше: 8уз!етз апд 81§па1 Ргосез51п§, Вап^аШге, 1пд1а. Оес 1984.
Список литературы 785 1291.Т.Я.Ы. Као, “Оп 31гик-ТПЬиг§ Сгур1апа1уз18 оР Као-Ыат ЗсЬете,” Адуапсез т СгурЮ1о§у— СКУРТО ’87 Ргосеедт§з, Зргт§ег-Уег1а§, 1988, рр. 458-460. 1292. Т.К.Ы. Као апд К.Н. Ыат, “РпуаЮ-Кеу А1§еЬга1с-Содед СгурЮзузЮтз,” Адуапсез т СгурЮ1о§у—СКУРТО ’86 Ргосеедт§з, 5ргт§ег-Уег1а§, 1987, рр. 35-48. 1293.Т.К.К Као апд К.Н. Ыат, “РпуаЮ-Кеу А1§еЬгаю-Соде ЕпсгурНопз,” ШЕЕ ТгапзасНопз оп ЫРогтаПоп ТНеогу, V. 35, п. 4, Ы1 1989, рр. 829-833. 1294. ТА. Кеедз, “Сгаскт§ Капдот ЫитЬег ОепегаЮг,” С1ур1о!о§1а, у. 1, п. 1, Дап 1977, рр. 20-26. 1295. ТА. Кеедз, “Сгаскт§ а МиШрПсаПуе Соп§гиепНа1 ЕпсгурПоп А1§огНЬт,” т ЫРогтаПоп Ыпка§е ВеПуееп АррНед МаЫетаНсз апд 1пдиз1гу, Р.С.С. Мап§, ед., Асадепис Ргезз, 1979, рр. 467-472. 1296. Д.А. Кеед5, “ЗоЫНоп оР СЬа11еп§е С1рЬег,” СгурЮ1о§1а, V. 3, п. 2, Арг 1979, рр. 83-95. 1297Л.А. Кеедз апд ТЬ. МапРегдеШ, “БЕЗ Наз N0 Рег Коипд Ыпеаг РасЮгз,” Адуапсез Ы СгурЮ1о§у: РгосеедЫ^з оР СКУРТО 84, Зрпп§ег-Уег1а§, 1985, рр. 377-389. 1298. ТА. Кеедз апд Ы.ТА. 81оапе, “8ЫЙ Ке§1зЮг ЗупЫез1з (Моди1о т),” 81АМ Ыита1 оп СотриНп§, V. 14, п. 3, Аи§ 1985, рр. 505-513. 1299. ТА. Кеедз апд Р.Т ^еЫЬег§ег, “РПе Зесигку апд Ые ЦМХ Сгур! Соттапд,” АТ&Т ТесЬшса1 1оигпа1, V. 63, п. 8, Ос! 1984, рр. 1673-1683. 1300. Т. Кеп^, “Оп Ртке АиЮтаЮп Опе-Кеу СгурЮзузЮтз,” Раз! ЗоРЬуаге ЕпсгурПоп, СатЬпд^е Зесип1у \УогкзЬор Ргосеедт§з, 5рпп§ег-Уег1а§, 1994, рр. 135-148. 1301. Т. Кеп^ апд С. ЗЫЬиа, “А Ртке АиЮтаЮп РиЬПс Кеу СгурЮзузЮтз апд 01§ка1 81§паШге,” СЫпезе Ыигпа1 оР СотриЮгз, V. 8, 1985, рр. 401-409. (1п СЫпезе.) 1302. Т. Кеп^ апд С. ЗЫЬиа, “Т\уо УалеНез оРРЫке АиЮтаЮп РиЬПс Кеу СгурЮзузЮтз апд Ы1§ка1 З^паЮге,” 1оита1 оР СотриЮг ЗЫепсе апд Теспо1о§у, у. 1, 1986, рр. 9-18. (1п СЫпезе.) 1303. Т. Кеп^ апд С. 8ЫЬиа, “Ап 1тр1етеМаНоп оР 1депЫу-Ьазед СгурЮзузЮтз апд 31§паШге ЗсЬетез Ьу Ртке АиЮтаЮп РиЬНс Кеу СгурЮзузЮтз,” Адуапсез т Сгурю1о§у— СН1ЫАСКУРТ ’92, Ве^^п§: Зс1епсе Ргезз, 1992, рр. 87-104. (1п СЫпезе.) 1304. Т. Кеп^ апд С. 8ЫЬиа, “ЫоЮ оп Ртке АиЮтаЮп РиЬНс Кеу СгурЮзузЮтз,” СН1ЫАСКУРТ ’94, Х1д1ап, СЫпа, 11-15 Ыоу 1994, рр. 76-80. 1305. КезеагсЬ апд Эеуе1ортеп1 т Адуапсед СоттитсаНоп ТесЬпо1о§Ю8 Ы Еигоре, К1РЕ ЫЮ^гку РптШуез: Рта! КероП оР КАСЕ 1пЮ§гку РппППуез ЕуаЫаНоп (К 1040), КАСЕ, Ыпе 1992. 1306. ТМ. Кеупеп апд Е.Э. Кагшп, “Сот РНррт§ Ьу Те1ерЬопе,” ШЕЕ ТгапзасНопз оп ЫРогтаПоп ТЬеогу, у. ГГ-30, п. 5, Зер 1984, рр. 775-776. 1307. Р. КЫепЫмт, ТЬе Воок оР Рпте ЫитЬег Кесогдз, 8рпп§ег-Уег1а§, 1988. 1308. Р. КЫеЫхмт, ТЬе ЬкНе Воок оР В1§ Рптез, 8рпп§ег-Уег1а§, 1991. 1309. М. КЫЫег, “Ет КаизсЬ§епегаЮг гиг Ое\утпип§ ж>п циазыдеаЮп ХиРаНзгаЫеп Рйг сНе зЮсЬазНзсЬе 81ти1аНоп,” РЬ.О. д188еНаПоп, АасЬеп ЫЫуегзку оР ТесЬпо1о§у, 1992. (1п Оегтап.) 1310. К.Р. К1едеп, ТВ. 8пудег, К.Т Мдтап, апд >У.Т Ватагд, “А Т\уо-СЫр 1тр1етеп1:аНоп оР Ые КЗА РиЬПс ЕпсгурПоп А1§огкЬт,” РгосеедЫ§з оР СОМАС (СоуеттеЫ Мюгосксик АррНсаНопз СопРегепсе), Ыоу 1982, рр. 24-27. 1311. Н. К1езе1, Рпте ЫитЬегз апд СотриЮг МеЫодз Рог РасЮпгаНоп, ВозЮп: ВккЬайзег, 1985. 1312. К. КЫасгек, “Оа1а 1пЮгсЬап§е апд Ье§а1 Зесигку—81§паШге Зигго§аЮ8,” СотриЮгз & 8есип1у, у. 13, п. 4, Зер 1994, рр. 287-293. 1313. V. Кутеп апд В. Ргепее!, “1тргоуед СЬагасЮпзНсз Рог 01РГегепНа! Сгур1апа1уз18 оР НазЬ РипсПопз Вазед оп В1оск СНрЬегз,” К.Ы. Ьеиуеп ^огкзЬор оп СгурЮ§гарЫс А1§огкЬтз, 8рг1П§ег-Уег1а§, 1995, Ю арреаг. 1314. К.Ь. К1уез1, “А ЫезспрНоп оР а 8т§1е-СЫр 1тр1етеп1аНоп оР Ые КЗА С1рЬег,” ЬАМВЭА Ма^агте, у. 1, п. 3, РаИ 1980, рр. 14-18. 1315. К.Ь. К1Уе51, “ЗЮНзНса! Апа1уз1з оР Ые На^еПп СгурЮ§гарЬ,” Сгурю1о§1а, V. 5, п. 1, Ып 1981, рр. 27-32. 1316. К.Ь. К1уезЬ “А ЗЬоП КероП оп Ые КЗА СЫр,” Адуапсез т СгурЮ1о§у: Ргосеед1п§з оР СгурЮ 82, Р1епит Ргезз, 1983, р. 327. 1317. К.Ь. К1уез1, “КЗА СЫрз (Раз1/Ргезеп1/ РиШге),” Адуапсез 1п СгурЮ1о§у: Ргосеед1п§з оР ЕЫКО¬ СКУРТ 84, Зрпп§ег-Уег!а§, 1985, рр. 159-168. 1318. К.Ь. К1Уез1, “ТЬе М04 Мезза§е Э^ез! А1§опЫт,” КРС 1186, Ос1 1990. 1319. К.Ь. К1уез1, “ТЬе М04 Мезза^е 01ёез! А1§опЫт,” Адуапсез 1п СгурЮ1о§у—СКУРТО ’90 Ргосеед1П§з, Зрпп§ег-Уег1а§, 1991, рр. 303-311. 1320. К.Ь. К1уез1, “ТЬе КС4 ЕпсгурПоп А1§опЫт,” КЗА Оа1а Зесиг11у, 1пс., Маг 1992. 1321. К.Ь. К1уез{;, “ТЬе М04 Мезза^е 01§ез1 А1ёогкЬт,” КРС 1320, Арг 1992. 1322. К.Ь. К1уез1, “ТЬе МЫ5 Мезза§е 01§ез1 А1^огкЬт,” КРС 1321, Арг 1992. 1323. К.Ь. К1Уез1, “Ог. Коп К1уез{; оп Ые 01РГ1сику оР РасЮпп§,” С1рЬеПехЬ ТЬе КЗА Ые\уз1е«ег, V. 1, п. 1, РаИ 1993, рр. 6, 8.
786 Прикладная криптография 1324. К.Ь. Клуе$1, “ТНе ЯС5 ЕпсгурПоп А1§огкНш,” Е)г. ОоЬЬ’з Шита!, V. 20, п. 1, Дап 95, рр. 146-148. 1325. К.Ь. Клуез!, “ТЬе ЯС5 ЕпсгурПоп А1§огкЬш,” К.11. Ьеиуеп МогкзЬор оп СгурЮ§гарЫс А!§опШтз, 8рпп§ег-Уег!а§, 1995,Ю арреаг. 1326. Я.Ь. Я1Уез1, М.Е. НеНтап, ТС. АпПегзоп, апс! ДЖ Ьуопз, “Яезропзез Ю Ы18Т’з Ргороза1,” СоттитсаНопз оГ Ше АСМ, у. 35, п. 7, Ш1 1992, рр. 41-54. 1327. Я.Ь. К1уез1 апс! А. 8НапПг, “Но\у Ю Ехрозе ап ЕауезсЬоррег,” СоттитсаНопз оГ Ше АСМ, V. 27, п. 4, Арг 1984, рр. 393-395. 1328. КХ. Клуез!, А. 8НапПг, апс! Ь.М. АсИетап, “А МеШоН Гог ОЫатШ§ Е)1^11а1 81§па1игез апс! РиЬПс-Кеу СгурЮзузЮтз,” СоттитсаНопз оГ 1Ье АСМ, у. 21, п. 2, РеЬ 1978, рр. 120-126. 1329. Я.Ь. Шуез1, А. 8Ьагшг, апс1 Ь.М. АсИетап, “Оп 01§Па! 81§па1игез апс! РиЬПс Кеу СгурЮзузЮтз,” М1Т ЬаЬогаЮгу Гог СотриЮг 8Ыепсе, ТесЬтса1 ЯероП, М1Т/ЬС8/ТЯ-212, Дап 1979. 1330. К.Ь. Клуез!, А. 8ЬапПг, апс! Ь.М. АсИетап, “СгурЮ§гарЫс СоттитсаНопз 8узЮт апс! МеШос!” Ы.8. РаЮп! #4,405,829, 20 8ер 1983. 1331. М.ЬВ. ЯоЬзЬа\у, “1тр1ететаНопз оГ Ше 8еагсН Гог РзеиПо-СоШзюпз Ш МЭ5,” ТесЬшса! ЯероП ТЯ-103, Уегзюп 2.0, Я8А ЬаЬогаЮпез, Ыоу 1993. 1332. М.ЬВ. ЯоЬзЬа\у, “ТЬе Рта! ЯероП оГ ЯАСЕ 1040: А ТесЬтса1 8иттагу,” ТесЬшса! ЯероП ТЯ-9001, Уегзюп 1.0, Я8А ЬаЬогаЮпез, Ш1 1993. 1333. М.ЬВ. ЯоЬзЬа\у, “Оп Еуа!иаНп§ Ше ЬШеаг Сотр1ех11у оГ а 8ециепсе оГ Ьеаз! РепоН 2п,” Оез1§пз, СоПез апс! СгурЮ^гарЬу, V. 4, п. 3, 1994, рр. 263-269. 1334. М.ТВ. ЯоЬзЬа\у, “В1оск ОрЬегз,” ТесЬшса! ЯероП ТЯ-601, Я8А ЬаЬогаЮпез, Ти! 1994. 1335. М.ЬВ. ЯоЬзЬа\у, “МЭ2, МЭ4, М05, 8НА, апс! ОШег НазЬ РипсНопз,” ТесЬшса! ЯероП ТЯ-101, Уегзюп 3.0, Я8А ЬаЬогаЮпез, 1и1 1994. 1336. М.ЬВ. ЯоЬзЬа\у, “Оп РзеиПо-СоШзюпз ш М05,” ТесЬпюа! ЯероП ТЯ-102, Уегзюп 1.1, Я8А ЬаЬогаЮпез, Ьи1 1994. 1337. М.I.В. ЯоЬзЬа\у, “8есип1у оГ ЯС4,” ТесЬшса1 ЯероП ТЯ-401, Я8А ЬаЬогаЮпез, Ш! 1994. 1338. МЛ.В. ЯоЬзЬа\у, регзопа! соттишсаПоп, 1995. 1339. М. Яое, “Яеуегзе Еп§теепп§ оГ ап ЕЕ8 Оеуюе,” К.11. Ьеиуеп \УогкзЬор оп СгурЮ§гарЫс А!§опШтз, 8рпп§ег-Уег1а§, 1995, Ю арреаг. 1340. Р. Яо§а>уау апс! О. СоррегзтПЬ, “А 8оГЬуаге- ОпепЮН ЕпсгурПоп А!§опШт,” Раз! 8о1Ьуаге ЕпсгурПоп, СатЬпс!§е 8есип!у ^огкзЬор РгосеесИп§з, 8рпп§ег-Уег!а§, 1994, рр. 56-63. 1341. Н.Ь. Яо§егз, “Ап Оуете\у оГ Ше СапсПуаге Рго§гат,” РгосеесПп§з оГ Ше Зге! Аппиа! 8утрозшт оп РЬузюа1/Е1ес1гошс 8есигНу, АгтеН Рогсез СоттитсаНопз апс! Е!ес!готсз АззотаНоп, рарег 31, Аи§ 1987. 1342.1. Яотре1, “ОпеЛУау РипсНопз Аге Ыесеззагу апс! 8иГПс1еп1 Гог 8есиге 81§паШгез,” РгосеесИп§з оГ Ше 22пс1 Аппиа! АСМ 8утрозшт оп Ше ТЬеогу оГСотриНп§, 1990, рр. 387-394. 1343. Т. ЯозаН, “А Н1§Ь 8рееН Оа!а ЕпсгурПоп Ргосеззог Гог РиЬПс Кеу СгурЮ§гарЬу,” РгосеесПп^з оГ Ше ШЕЕ СизЮт ШЮ^гаЮс! СНсикз СопГегепсе, 1989, рр. 12.3.1-12.3.5. 1344.0.8. ЯоШаиз, “Оп ‘ВепН РипсНопз,” Шита1 оГ СотЫпаНопа! ТЬеогу, 8ег1ез А, у. 20, п. 3, 1976, рр. 300-305. 1345. Я8А ЬаЬогаЮпез, “РКС8 #1: Я8А ЕпсгурПоп 81апПагс1,” уегзюп 1.5, Ыоу 1993. 1346. Я8А ЬаЬогаЮпез, “РКС8 #3: ЭИГю-НеНтап Кеу-А§геетеп!81апПагс!,” уегзюп 1.4, Ыоу 1993. 1347. Я8А ЬаЬогаЮпез, “РКС8 #5: РаззжжЬВазеП ЕпсгурПоп 81апПагс1,” уегзюп 1.5, Ыоу 1993. 1348. Я8А ЬаЬогаЮпез, “РКС8 #6: ЕхЮпНеП- СеНШсаЮ 8уп1ах 81апс!агс1,” уегзюп 1.5, Ыоу 1993. 1349. Я8А ЬаЬогаЮпез, “РКС8 #7: СгурЮ§гарЫс Мезза§е 8уп1ах 81апс!агс1,” уегзюп 1.5, Ыоу 1993. 1350. Я8А ЬаЬогаЮпез, “РКС8 #8: РпуаЮ Кеу ШГогтаНоп 8уп!ах 81апНагс1,” уегзюп 1.2, Ыоу 1993. 1351. Я8А ЬаЬогаЮпез, “РКС8 #9: 8е1есЮс1 АИпЬиЮ Турез,” уегзюп 1.1, Ыоу 1993. 1352. Я8А ЬаЬогаЮпез, “РКС8 #10: СеПШсаНоп Яециез! 8уп1ах 81апс!агс1,” уегзюп 1.0, Ыоу 1993. 1353. Я8А ЬаЬогаЮпез, “РКС8 #11: СгурЮ§гарЫс Токеп ШЮгГасе 81апПагс1,” уегзюп 1.0, Арг 95. 1354. Я8А ЬаЬогаЮпез, “РКС8 #12: РиЬПс Кеу Ьзег ШГогтаНоп 8уп1ах 81апс1агс1,” уегз1оп 1.0, 1995. 1355. А.О. ЯиЫп апН Р. Нопеутап, “Рогта! МеШоПз Гог Ше Апа!уз1з оГ АиШеп11са11оп РгоЮсо1з,” Пгай тапизсг1р1, 1994. 1356. Р. ЯиЫп, “ОесгурНп§ а 81геат С1рЬег Вазес! оп 1-К РНр-Порз,” ШЕЕ ТгапзасНопз оп СотриНп§, у. С-28, п. 7, Ли! 1979, рр. 483-487. 1357. Я.А. Яиерре!, Апа1уз1з апс! Эе51§п оГ 81геат С1рЬегз, 8рпп§ег-Уег!а§, 1986. 1358. Я.А. Яиерре!, “Согге!аНоп 1ттип11у апс1 Ше 8иттаНоп СотЫпег,” АНуапсез т СгурЮ!о§у—ЕЫЯОСЯУРТ ’85, 8рпп§ег-Уег!а§, 1986, рр. 260-272. 1359. Я.А. Яиерре!, ‘ЛУЬеп 8ЫЯ Яе^зЮгз С1оск ТЬетзеШез,” АПуапсез 1П СгурЮ1о§у— ЕЫЯОСЯУРТ ’87 РгосеесПп§з, 8рг1п§ег-Уег1а§, 1987, рр. 53-64. 1360. Я.А. Яиерре!, “8есип1у МосЫз апП ЫоНопз Гог 81геат С1рЬегз,” СгурЮ^гарЬу апс1 СосПп§ II, С. МПсЬеИ, ес1., ОхГогП: С!агепс1оп Ргезз, 1992, рр. 213-230.
Список литературы 787 1361. К.А. Киерре!, “Оп Ше 8есип1у оГ 8сЬпогг’з Рзеидо-Капдот Зециепсе ОепегаШг,” Адуапсез т Сгур1о1о§у—ЕШОСКУРТ ’89 Ргосеедт^з, 8рпп§ег-Уег1а§, 1990, рр. 423-428. 1362. К.А. Киерре!, “81геат С1рЬегз,” СоШетрогагу Сгур1о1о§у: ТЬе 8с1епсе оГ МогтаНоп 1п1е§п1у, О Л. 81ттопз, ед., ШЕЕ Ргезз, 1992, рр. 65-134. 1363. К.А. Киерре! апд 1Ь. Маззеу, “ТЬе Кпарзаск аз а ЫопНпеаг РипсНоп,” ШЕЕ 1п1етаНопа1 Зутрозшт оп МогтаНоп ТЬеогу, Вп§Ыоп, 1ЛС, Мау 1985. 1364. К.А. Киерре1 апд 0.1 81аРГе1ЬасЬ, “Ргодис*з оГ Ьтеаг Кесиггт§ Зециепсез луНЬ Мах1тит Сотр!ехку,” ШЕЕ ТгапзасНопз оп МогтаНоп ТЬеогу, V. ГГ-33, п. 1,1ап 1987, рр. 124-131. 1365. и. КиззеН апд О.Т. Оап§епи, Сотри1ег 8есип1у Вазюз, О’КеШу апд АззоЫаШз, 1пс., 1991. 1366. 8. КиззеН апд Р. Сгащ, “Рпуасу ЕпЬапсед МаН Моди!ез Гог ЕЬМ,” Ргосеедш^з оГ Ше Мегпе! 8ос1е1у 1994 ^огкзЬор оп ИеНуогк апд 01з1пЬи1ед 8уз1ет Зесигку, ТЬе 1п1егпе18ос1е1у, 1994, рр. 21-34. 1367.О.Р.Н. 8адок апд Ь Ке!пег, “Рпуасу ЕпЬапсед МаН Оез1§п апд 1тр1етеп*аНоп РегзресНуез,” Сотри1ег СоттитсаНопз КеУ1е\у, у. 24, п. 3, 1и! 1994, рр. 38-46. 1368. К. 8акапо, “01§ка1 ЗщпаШгез \укЬ 11зег-Р!ех1Ые КеПаЬПку,” Ргосеедт§з оГ Ше 1993 Зутрозшт оп Сгур1о§гарЬу апд МогтаНоп Зесигку (8С18 93), ЗЬигеп^, Дарап, 28-30 Дап 1993, рр. 5С.1-8. 1369. К. 8акапо, С. Рагк, апд К. Кигоза^а, “(к,п) ТЬге8Ьо!д ЫпдешаЫе 81§па1иге ЗсЬете,” Ргосеедт§з оГ Ше 1993 Когеа-Дарап ^огкзЬор оп МогтаНоп Зесип1у апд Сгур1о§гарЬу, 8еои1, Когеа, 24-26 Ос1 1993, рр. 184-193. 1370. К. 8ако, “Е1ес1готс УоНп§ 8сЬетез А!!о\ут§ Ореп О^есНоп 1о Ше Та11у,” ТгапзасНопз оГ Ше 1пз1ки1е оГ Е1ес1гошсз, МогтаНоп, апд СоттитсаНоп Еп^теегз, V. Е77-А, п. 1, 1994, рр. 24-30. 1371. К. 8ако апд Ь КШап, “8есиге УоНп§ 11зт§ РагНаПу СотраНЫе НототогрЫзтз,” Адуапсез т СгурЮ1о§у—СКУРТО ’94 Ргосеедт§з, 8рпп§ег-Уег1а§, 1994, р. 411-424. 1372. К. 8ако апд Ь КШап, “Кесе1р1-Ргее М1х-Туре УоНп§ 8сЬете—А РгасНса! 8о!иНоп 1о 1Ье 1тр1етеп1аНоп оГ а УоНп§ ВооШ,” Адуапсез т Сгур1о1о§у—ЕЫКОСКУРТ ’95 Ргосеедт§з, 8рпп§ег-Уег1а§, 1995, рр. 393-403. 1373. А. 8а!отаа, РиЬИс-Кеу Сгур1о§гарЬу, 8рпп§ег- Уег1а§, 1990. 1374. А. 8а1отаа апд Ь. Зап1еап, “Зесге! 8еШп§ оГ 8есге1з м'Ш Мапу Виуегз,” ЕТАС8 ВиПеНп, у. 42, 1990, рр. 178-186. 1375. М. ЗапШа апд Ы.V. Уаякат, “ОепегаНп§ (ЗиазЬ Капдот Зециепсез Ггот 8П§ЬНу Капдот 8оигсез,” Ргосеедт^з оГ Ше 25Ш Аппиа1 Зутрозшт оп Ше РоипдаНопз оГ Сотри1ег ЗЫепсе, 1984, рр. 434-440. 1376. М. З&пШа апд НУ. Уашат, “ОепегаНп§ (ЗиазЬ Капдот Зециепсез Ггот 8Н§ЬНу Капдот Зоигсез,” 1оита! оГ Сотри!ег апд 8уз1ет 8с1епсез, V. 33, 1986, рр. 75—87. 1377.8. Загуахд!, “Ап Ех1епзюп Ю Е10ата1 РиЬПс Кеу Сгур1озуз1ет \уНЬ а Ые\у 81§паШге ЗсЬете,” Ргосеедт§з оГ Ше 1990 ВПкеп! 1п!етаНопа1 СопГегепсе оп Ые\у Тгепдз ш СоттитсаНоп, Соп!го1, апд 81§па1 Ргосеззт§, ЫоНЬ НоПапд: Е1зеУ1ег ЗЫепсе РиЬНзЬегз, 1990, рр. 195-198. 1378. ТЕ. 8ауа§е, “8оте 81тр1е 8е1Г-8упсЬгош2т§ 01§ка! Эа1а 8сгатЫегз,” Ве11 8уз!ет ТесЬшса1 1оигпа1, V. 46, п. 2, РеЬ 1967, рр. 448-487. 1379. В.Р. ЗсЬаптп§, “Арр1у1п§ РиЬНс Кеу 01з1пЬиНоп Ю Ьоса1 Агеа ЫеПУОгкз,” Сотри1егз & Зесигку, у. 1, п. 3, Иоу 1982, рр. 268-274. 1380. В.Р. 8сЬаппт§, 8.А. Ро\уегз, апд Ь Ко\уа1сЬик, “МЕМО: Рг1Уасу апд АиШеп11саНоп Гог Ше Аи1ота1ед ОГПсе,” Ргосеед1п§з оГ Ше 5Ш СопГегепсе оп Ьоса1 Сотри1ег ИеНУогкз, ШЕЕ Ргезз, 1980, рр. 21-30. 1381.8сЬаити!1ег-В1сЫ, “2иг Апа1узе дез Эа1а Епсгур11оп 81апдагд ипд 8упШе8е Уепуапд1ег СЫГГг1егзуз1ете,” РЬ.Э. д18зеПаНоп, Ыпг ип1уегз11у, Мау 1981. (1п Оегтап.) 1382. 8сЬаитиИег-В1сЫ, “Оп Ше Без^п апд Апа1уз1з оГ Ые\у С1рЬег 8уз1етз Ке1а1ед 1о Ше ОЕ8,” ТесЬп1са1 Керог1, Ь1П21)п1уег511у, 1983. 1383. А. 8сЬегЫиз, “С1рЬепп§ МасЫпе,” 11.8. Ра1еп1 #1,657,411,24 1ап 1928. 1384.1.1. 8сЬШег, “8есиге 01з1пЬи1ед СотриНп§,” 8с1епНПс Атепсап, V. 271, п. 5, Ыоу 1994, рр. 72-76. 1385. К. 8сЫаЯу, “Сотр!ат1 А§а1пз1; Ехс1из1Уе Редега1 Ра1еп1 Ысепзе,” С1уП АсНоп РПе N0. С-93 20450, ШНед 81а1ез 01з1пс1 СоиП Гог Ше ЫоНЬет 01з1пс1 оГ СаПГот1а. 1386. В. 8сЬпе1ег, “ОпеЛУау НазЬ РипсПопз,” Эг. ОоЬЬ’з 1оита1, V. 16, п. 9, 8ер 1991, рр. 148-151. 1387. В. 8сЬпе1ег, “Оа1а Оиагд1апз,” Мас^оНд, у. 10, п. 2, РеЬ 1993, рр. 145-151. 1388. В. 8сЬпе1ег, ‘Т)езспрНоп оГ а Ые\у Уаг1аЫе- Ьеп§Ш Кеу, 64-ВН В1оск С1рЬег (В1о\уЯзЬ),” Раз! 8оШуаге ЕпсгурПоп, СатЬг1д§е 8есигку \УогкзЬор Ргосеед1п§5, 8рпп§ег-Уег1а§, 1994, рр. 191-204. 1389. В. 8сЬпе1ег, “ТЬе В1о\уГ1зЬ ЕпсгурПоп А1§опШт,” Ог. ЭоЬЬ’з 1оита1, у. 19, п. 4, Арг 1994, рр. 38-40. 1390. В. 8сЬпе1ег, Рго1ес1 Уоиг Мас1п1озЬ, РеасЬрк Ргезз, 1994.
788 Прикладная криптография 1391. В. 8сЬпе1ег, “Оез^тп^ ЕпсгурПоп А^огкЬтз Гог Яеа! Реор1е,” Ргосеект^з оГ 1Ье 1994 АСМ 8Ю8АС Ые\у 8есигку РагасП^тз МогкзЬор, ШЕЕ СотриЮг 8ос1е1у Ргезз, 1994, рр. 63-71. 1392. В. 8сЬпе1ег, “А Рптег оп АиЮепНсаНоп апс! 01§ка! 81§па1игез,” СотриЮг 8есигку Юита!, V. 10, п. 2, 1994, рр. 38-40. 1393. В. 8сЬпе1ег, “ТЬе С08Т ЕпсгурПоп А1§огкЬт,” Ог. ОоЬЬ’з 1оита1, V. 20, п. 1,1ап 95, рр. 123— 124. 1394. В. 8сЬпе1ег, Е-Мак 8есигку (\укЬ РОР апк РЕМ) Ые\у Уогк: ЮЬп М1еу & 8опз, 1995. 1395. С.Р. 8сЬпогг, “Оп 1Ье СопзЮисНоп оГ Яапкот ЫитЬег СепегаЮгз апс! Яапкот РипсНоп СепегаЮгз,” Акуапсез т СгурЮ1о§у— ЕЫЯОСЯУРТ ’88 Ргосеект§з, 8рпп§ег-Уег1а§, 1988, рр. 225-232. 1396. С.Р. 8сЬпогг, “ЕРПиеШ: 81§паШге СепегаНоп Гог 8шаг1 Сагкз,” Акуапсез ш СгурЮ1о§у— СЯУРТО ’89 Ргосеект^з, 8рпп§ег-Уег!а§, 1990, рр. 239-252. 1397. С.Р. 8сНпогг, “ЕГНЫеШ 81§паШге СепегаНоп Гог 8шаг1 Сагкз,” 1оигпа1 оГ СгурЮ1о§у, у. 4, п. 3, 1991, рр. 161-174. 1398. С.Р. 8сНпогг, “МеНюк Гог 1кепН1утё 8иЬзспЬегз апк Гог СепегаНп§ апс! Уегкут§ ЕЮскотс 81§паЮгез ш а Эа1а ЕхсЬап^е 8узЮт,” Ы.8. Ра1еп1 #4,995,082, 19 РеЬ 1991. 1399. С.Р. 8сЬпогг, “Ап ЕГНЫеШ СгурЮ^гарЫс НазЬ РипсНоп,” ргезепЮк а1 1Ье гитр зеззюп оГ СЯУРТО ’91, Аи§ 1991. 1400. С.Р. 8сЬпогг, “РРТ-НазЬ И, ЕГПс1 еп( СгурЮ^гарЫс НазЫп§,” Акуапсез т СгурЮ1о§у—ЕЫЯОСЯУРТ ’92 Ргосеект§з, 8рпп§ег-Уег!аё, 1993, рр. 45-54. 1401. С.Р. 8сЬпогг апк \У. А!ех1, “Я8А-Ькз аге 0.5 + е 8есиге,” Акуапсез т СгурЮ1о§у: Ргосеект§з оГ ЕЫЯОСЯУРТ 84, 8рпп§ег-Уег!аё, 1985, рр. 113-126. 1402. С.Р. 8сЬпогг апк 8. Уаикепау, “РагаИе! РРТ- НазЫп§,” Раз1 8ой\уаге ЕпсгурПоп, СатЬпк^е 8есигку ^огкзЬор Ргосеекш§8, 8рпп§ег-Уег1а§, 1994, рр. 149-156. 1403. С.Р. 8сЬпогг апк 8. Уаикепау, “В1аск Вох Сгур1апа!уз18 оГ НазЬ ЫеПУОгкз Вазек оп МиЫрегпикаНопз,” Акуапсез т СгурЮ!о§у— ЕЫЯОСЯУРТ ’94 Ргосеект§з, 8рпп§ег-Уег1а§, 1995, Ю арреаг. 1404. №. 8сЬ\уаг1аи, ЮГогшаНоп №агГаге: СЬаоз оп 1Ье Е1ес1готс 8ирегЫ§Ь\уау, Ые\у Уогк: ТЬипкегз Мои1Ь Ргезз, 1994. 1405. Я. 8сои, “№1ке Ореп ЕпсгурПоп Оез1§п ОГГегз Р!ех1Ые 1гпр!етеп1аНопз,” СгурЮ1о§1а, V. 9, п. 1, 1ап 1985, рр. 75-90. 1406.1. 8еЬеггу, “А 8иЫ1т1па! СЬаппе! ш Сокез Гог АиЮепНсаНоп \укЬои1 8есгесу,” Агз СотЫпаЮпса, у. 19А, 1985, рр. 337-342. 1407.Ь 8еЬеггу апк Д. Р1ерггук, СгурЮ§гарЬу: Ап ЬкгокисНоп Ю СотриЮг 8есигку, Еп§1е\уоок СЫТз, N.1.: РгепНсе-На11, 1989. 1408.1. 8еЬеггу, Х.-М. 2Ьап§, апк У. 2Ьеп°, “ЫопНпеайу Ва1апсек Воо1еап РипсНопз апк ТЬек Ргора§аНоп СЬагасЮпзНсз,” Акуапсез т СгурЮ1о§у—ЕЫЯОСЯУРТ ’91 Ргосеект&з, 8рпп§ег-Уег!а§, 1994, рр. 49-60. 1409. Н. 8ек1аск, “ТЬе Я8А СгурЮ^гарЬу Ргосеззог ТЬе Ркз! Н1§Ь 8реек Опе-СЫр 8о!иНоп,” Акуапсез т СгурЮ1о§у—ЕЫЯОСЯУРТ ’87 Ргосеект§з, 8рпп§ег-Уег1а§, 1988, рр. 95-105. 1410. Н. 8ек1аск апк 11. Со1ге, “Ап Я8А СгурЮ§гарЬу Ргосеззог,” М1сгаргосеззт§ апк Мюгорго§гаттт° у. 18,1986, рр. 583-590. 1411.Е.8. 8е1тег, Ыпеаг Яесиггепсе оуег Ртке Р1е1к, Ышуегзку оГВег^еп, Ыопуау, 1966. 1412. ТО. 8Ьа11к, “Оп 1Ье №огз1 Сазе оГ ТЬгее А1§огкЬтз Гог СотриПп§ 1Ье 1асоЫ 8утЬо1,” Юита1 оГ8утЬоПс СотриЮНоп, у. 10, п. 6, Оес 1990, рр. 593-610. 1413. А. 8Ьатк, “А Раз1 81§па1иге 8сЬете,” МГГ ЬаЬогаЮгу Гог СотриЮг 8с1епсе, ТесЬтса1 Метогапкит, М1Т/ЬС8/ТМ-107, МаззасЬизеЮз 1пзНюю оГТесЬпо!о§у, ЛИ 1978. 1414. А. 8Ьатк, “Но\у Ю 8Ьаге а 8есгеЬ” СоттитсаНопз оГ 1Ье АСМ, у. 24, п. И, Ыоу 1979, рр. 612-613. 1415. А. 8Ьатк, “Оп 1Ье СгурЮсотр1ехку оГ Кпарзаск 8узЮтз,” Ргосеект§з оГ 1Ье 11Ш АСМ 8утрозшт оп 1Ье ТЬеогу оГ СотриНп& 1979, рр. 118-129. 1416. А. 8Ьатк, “ТЬе СгурЮ§гарЫс 8есигку оГ Сотрас! Кпарзаскз,” МГГ ЫЬгагу Гог СотриЮг 8с1епсе, ТесЬшса! Метогапкит, М1Т/ЬС8/ТМ- 164, МаззасЬизекз 1пз1киЮ оГТесЬпо!о§у, 1980. 1417. А. 8Ьат1г, “Оп гЬе Сепега1;1оп оГ СгурЮ§гарЫса11у 8{гоп§ Рзеико-Яапкот Зециепсез,” ЬесЮге ЫоЮз 1п СотриЮг 8с1епсе 62: 81Ь 1пЮтаПопа1 Со11очи1ит оп АиЮтаЮ, Ьап§иа§ез, апк Рго§гаттт§, 8рпп§ег-Уег1а§, 1981. 1418. А. 8Ьат1г, “А Ро1упот1а1 Т1те А1ёоп1Ьт Гог Вгеактё 1Ье Ваз1с Мегк1е-Не11тап СгурЮзузЮт,” Акуапсез т СгурЮ1о§у: Ргосеек1п§з оГ СгурЮ 82, Р1епит Ргезз, 1983, рр. 279-288. 1419. А. 8Ьатк, “А Ро1упопПа1 Т1те А1§огкЬт Гог Вгеакт§ 1Ье Ваз1С Мегк1е-Не11тап СгурЮзузЮт,” Ргосеект§з оГ Юе 23гк ШЕЕ 8утрозшт оп 1Ье РоипкаНопз оГ СотриЮг 8с1епсе, 1982, рр. 145-152. 1420. А. 8Ьатк, “Оп 1Ье СепегаНоп оГ СгурЮ^гарЫсаНу 81гоп§ Рзеико-Яапкот
Список литературы 789 8еяиепсез,” АСМ ТгапзасНопз оп Сотри1ег 8уз1етз, V. 1, п. 1, РеЬ 1983, рр. 38-44. 1421. А. 8Ьатк, “А Ро1упопПа1 Т1те А1§опШт Рог Вгеакт§ Ше Ваз^с Мегк!е-Не11тап СгурШзузШт,” ШЕЕ ТгапзасНопз оп ШРогтаПоп ТЬеогу, V. ГГ-30, п. 5, 8ер 1984, рр. 699-704. 1422. А. 8Ьатк, “1кеп1ку-ВазеН СгурШзузШтз апс1 81§паШге 8сЬетез,” Акуапсез т Сгур1о1о§у: Ргосеект^з оР СЯУРТО 84, 8рпп§ег-Уег1а§, 1985, рр. 47-53. 1423. А. 8Ьатк, “Оп Ше 8есигку оР ОЕ8,” Акуапсез т Сгур!о1о§у—СЯУРТО ’85 Ргосеект^з, 8рпп§ег-Уег1а§, 1986, рр. 280-281. 1424. А. 8ЬапПг, 1ес!иге а! 8ЕСШ1СОМ ’89. 1425. А. 8Ьатк, “ЕРПЫеМ 81§па1иге 8сЬетез Вазек оп ВкаНопа1 РетикаНопз,” Акуапсез т Сгур!о1о§у—СЯУРТО ’93 Ргосеект§з, 8ргт§ег-Уег1а§, 1994, рр. 1-12. 1426. А. 8Ьатк, регзопа1 соттитсаНоп, 1993. 1427. А. 8Ьатк апк А. Па!, “МеШок, АррагаШз апк АгНс1е Рог ШепНГюаНоп апк 81§па!иге,” 11.8. Ра!еп! #4,748,668, 31 Мау 1988. 1428. А. 8Ьатк апк Я. 21рре1, “Оп Ше 8есигку оР Ше Мегк1е-Не11тап Сгур!о§гарЫс 8сЬете,” ШЕЕ ТгапзасНопз оп 1пРогтаНоп ТНеогу, V. 26, п. 3, Мау 1980, рр. 339-340. 1429. М. 8Ьапк, Р. ВегНп, апк Ь УиШетт, “Нагклуаге 8реекирз т Ьоп§ 1п!е§ег МиШрНсаНоп,” Ргосеект§з оР 1Не 2пк Аппиа! АСМ 8утрозшт оп Рага11е1 А^огкЬтз апк АгсЬкесШгез, 1990, рр. 138-145. 1430. О. 8Ьапкз, 8о1уек апк Шзо^ек РгоЫетз т ЫитЬег ТЬеогу, \УазЫп§!оп О.С.: 8раг1ап, 1962. 1431. С.Е. 8Ьаппоп, “А Ма1ЬетаНса1 ТЬеогу оР СоттитсаНоп,” Ве11 8уз!ет ТесЬтса1 Доита!, у. 27, п. 4, 1948, рр. 379-423, 623-656. 1432. С.Е. 8Ьаппоп, “СоттитсаНоп ТЬеогу оР 8есгесу 8уз!етз,” Ве11 8уз!ет ТесЬтса1 Доита!, у. 28, п. 4, 1949, рр. 656-715. 1433. С.Е. 8Ьаппоп, Со11ес!ек Рарегз: С1аике Е1т\УОок 8Ьаппоп, Ю.А. 81оапе апк А.Э. ^упег, екз., Ые\у Уогк: ШЕЕ Ргезз, 1993. 1434. С.Е. 8Ьаппоп, “РгеШсаНоп апк Еп!гору т Рпп!ек Еп^ИзЬ,” Ве11 8уз!ет ТесЬтса1 1оигпа1, V. 30, п. 1, 1951, рр. 50-64. 1435. А. ЗЫпПги апк 8. М1уа§исЫ, “Раз! Эа!а ЕпЫрЬегтеп! А1§огкЬт РЕАЬ,” ТгапзасНопз оР 1Е1СЕ оР Дарап, V. .170-0, п. 7, Ди1 87, рр. 1413— 1423. (1п 1арапезе.) 1436. А. ЗЫпПги апк 8. М1уа§исЫ, “Раз! Оа!а ЕпНрЬегтеп! А1§огкЬт РЕАЬ,” Акуапсез т Сгур!о1о§у—ЕШОСЯУРТ ’87 Ргосеект^з, Зрпп§ег-Уег1а§, 1988, рр. 267-278. 1437. А. ЗЫпПги апк 8. М1уа§исЫ, “РЕАЬ—Раз! Эа!а ЕпНрЬегтеп! А1§опШт,” 8уз!етз апк Сотри!егз т 1арап, у. 19, п. 7, 1988, рр. 20-34,104-106. 1438. А. ЗЫпПги апк 8. М1уа§исЫ, “Оа!а ЯапкопНгаНоп Еяшртеп!,” 1Ь8. Ра!еп! #4,850,019, 18 ЬН 1989. 1439. М. 8Ытака, “АпоШег РгасНса! РиЬНс-кеу Сгур!озуз!ет,” Е1ес!готсз Ье!!егз, V. 28, п. 23, 5 Ыоу 1992, рр. 2146-2147. 1440. К. ЗЫглРР, регзопа! соттитсаНоп, 1993. 1441. Н. 8Ыгиуа, Т. ИоЬ, апк К. Закига1, “Оп Ше Сотр1ех1!у оР НурегеШрНс 01зсге!е Ьо§апШт РгоЫет,” Акуапсез т Сгур!о!о§у— ЕШОСЯУРТ ’91 Ргосеект§з, 8рпп§ег-Уег1а§, 1991, рр. 337-351. 1442.2. 8Ьти1еу, “Сотрозке 01рПе-Не11тап РиЬНс- Кеу СепегаНп§ 8уз!етз Аге Нагк Ю Вгеак,” Сотри!ег ЗНепсе Оераг!теп!, ТесЬтоп, На1Ра, 1згае1, ТесЬЫса! Яерог! 356, РеЬ 1985. 1443. РЖ 8Ьог, “А1§опШтз Рог (ЗиапШт Сотри!аНоп: 01зсге!е Ьо§ апк Рас!опп§,” Ргосеект§з оР Ше 35Ш Зутрозшт оп РоипкаНопз оР Сотри!ег ЗНепсе, 1994, рр. 124-134. 1444. Ь 8Ьгоуег, 1е!!ег !о МЗТ ге§агкт§ 088, 17 РеЬ 1992. 1445. С. 8Ьи, Т. Ма!зито!о, апк Н. 1та», “А Ми1Н- Рифозе РгооР 8уз!ет, ТгапзасНопз оР Ше 1пз!ки!е оР Е1ес!готсз, ЫРогтаПоп, апк СоттитсаНоп Еп§теегз, у. Е75-А, п. 6, Лт 1992, рр. 735-743. 1446. Е.Н. 8Ш1еу, “Яапкот ЫитЬег ОепегаШгз: Соок Опез Аге Нагк 1о р1пк,” Соттип1саНопз оР Ше АСМ, у. 31, п. 10, Ос1 1988, рр. 1192-1201. 1447. У.М. 81кешкоу апк 8.О. 8Ьез!акоу, “Оп ЕпсгурПоп Вазек оп ОепегаНгек Яеек-8о1отоп Сокез,” 01зкгеШауа МаШ, у. 4, 1992, рр. 57-63. (1п Яизз1ап.) 1448. У.М. 81кешкоу апк 8.0. 8Ьез!акоу, “Оп 1пзесип!у оР Сгур1озуз1етз Вазек оп ОепегаНгек Яеек-8о1отоп Сокез,” иприЬПзЬек тапизспр!, 1992. 1449. О.Р. 81кЬи, “АиШепНсаНоп Рго1осо1з Рог Сотри!ег ЫеШ^огкз,” Сотри!ег Ые!\уогкз апк 18ЭЫ 8уз!етз, у. 11, п. 4, Арг 1986, рр. 297-310. 1450. Т. 81е§епШа1ег, “Согге1аНоп-1ттипку оР ЫопИпеаг СотЫп1п§ РипсПопз Рог Сгур!о§гарЫс АррНсаНопз,” ШЕЕ ТгапзасНопз оп 1пРогтаНоп ТЬеогу, V. ГГ-30, п. 5, 8ер 1984, рр. 776-780. 1451. Т. 81е§епШа1ег, “ОесгурНп^ а С1азз оР 81геат С1рЬегз 11з1П§ С1рЬеЛех! Оп1у,” ШЕЕ ТгапзасНопз оп СотриНп& V. С-34, Дап 1985, рр. 81-85. 1452. Т. 81е§епШа1ег, “Сгур1апа1у51’5 ЯергезеШаНоп оР ЫопНпеаг1!у Рк1егек т1-зеяиепсез,” Акуапсез т Сгур!о1о§у—Е11ЯОСЯУРТ ’85, 8рпп§ег-Уег1а§, 1986, рр. 103-110.
790 Прикладная криптография 1453. К.О. ЗПуегтап, “ТЬе МиШр1е Ро!упогша! ^иа<^^а1^с 81еуе,” МаШетаНсз оГ СотрШаНоп, у. 48, п. 177,Зап 1987, рр. 329-339. 1454.0.1. Зттопз, “АиШепНсаНоп \укЬоШ Зесгесу: А Зесиге СоттишсаПоп РгоЫет 13тцие1у 8о1уаЫе Ьу Азутте1пс ЕпсгурПоп ТесЬтциез,” РгосеесИп§8 оГ ШЕЕ ЕАЗСОЫ ’79, 1979, рр. 661-662. 1455.0.! Зттопз, “Зоте ЫитЬег ТНеогеНс (ЗиезНопз Алзт§ Ш АзуттеШс ЕпсгурПоп ТесЬтциез,” Аппиа1 МееНп§ оГ Ше Атепсап МаШетаНса1 Зос1е1у, АМ8 АЬзНас* 763.94.1, 1979, рр. 136-151. 1456.0.3. Зттопз, “РП§Ь ЗрееН АпШтеНс Ызт§ КеПипПаШ ЫитЬег 8уз1етз,” РгосеесНп^з оГ Ше ЫаНопа1 Те!есоттишсаНопз СопГегепсе, 1980, рр. 49.3.1-49.3.2. 1457.0.1.Зттопз, “А ‘Меак’ Рпуасу Рго1осо1Ызт§ Ше КЗА Сгур1озуз1ет,” Сгур1о!о§1а, V. 7, п. 2, Арг 1983, рр. 180-182. 1458. О.З. Зттопз, “ТЬе Рпзопег’з РгоЫет апП Ше 8иЫтта1 СЬаппе1,” АсШапсез т Сгур1о1о^у: Ргосее<Ьп§з оГ СКУРТО ’83, Р1епит Ргезз, 1984, рр. 51-67. 1459. О.З. Зттопз, “ТЬе ЗиЬПтта! СЬаппе1 апс! 01§ка1 81ёпа1игез,” АсШапсез Ш Сгур1о!о§у: РгосеесПп^з оГ Е13КОСКУРТ 84, 8рпп§ег- Уег!а§, 1985, рр. 364-378. 1460.0.3. Зттопз, “А Зесиге ЗиЫшипа! СЬаппе! (?),” Акуапсез т Сгур1о1о§у—СКУРТО ’85 РгосеесИп§8, 8рпп§ег-Уег1а§, 1986, рр. 33-41. 1461.0.3. Зттопз, “Сгур1о1о§у,” Епсус1оресЬа Вгкаптса, 16Ш есЬНоп, 1986, рр. 913-924В. 1462. О.З. Зттопз, “Но\у 1о (Кеа11у) ЗЬаге а 8есге1,” АсШапсез т Сгур1о1о§у—СКУРТО ’88 Ргосеект^з, 8рпп§ег-Уег1а§, 1990, рр. 390-448. 1463. О.З. Зттопз, “РгерозЫопек Зесге! 8Ьапп§ ЗсЬетез апк/ог ЗЬагек СоШго! ЗсЬетез,” Акуапсез т Сгур1о1о§у—ЕШОСКУРТ ’89 РгосеесЬп§з, 8рпп§ег-Уег1а§, 1990, рр. 436-467. 1464. О.З. Зттопз, “Оеоте1пс ЗЬагез 8есге1 апк/ог ЗЬагек СоШго1 ЗсЬетез,” Акуапсез т Сгур*о!о§у—СКУРТО ’90 Ргосеект§з, 8рпп§ег-Уег1аё, 1991, рр. 216-241. 1465. О.З. Зттопз, ек., СоШетрогагу Сгур1о!о§у: ТЬе Заепсе оГ ШГогтаНоп 1Ше§п1у, ШЕЕ Ргезз, 1992. 1466. О.З. Зттопз, “Ап ШПоНисНоп 1о ЗЬагек 8есге1 апк/ог ЗЬагек СоШго! ЗсЬетез апк ТЬек АррЬсаНоп,” Ш СоШетрогагу Сгур1о!о§у: ТЬе 8с1епсе оГ ШГогтаНоп 1п1е§п1у, О.З. Зттопз, ек., ШЕЕ Ргезз, 1992, рр. 441-497. 1467. О.З. Зттопз, “Но\у 1о 1пзиге Ша1 Оа1а Асцикек 1о УегНу Тгеа1у СотрНапсе Аге Тгиз1\уогШу,” Ш СоШетрогагу Сгур1о1о§у: ТЬе ЗЫепсе оГ ШГогтаНоп 1Ше§гку, О.З. Зттопз, ек., ШЕЕ Ргезз, 1992, рр. 615-630. 1468.0.3. Зттопз, “ТЬе ЗиЬПтта! СЬаппе1з оГ Ше 13.8. 01§ка1 81§па1иге А1§опШт (ЭЗА),” РгосеесНп^з оГ Ше ТЬ1гс! 8утроз1ит оп: 81а1е апк Рго§гезз оГ КезеагсЬ ш Сгур1о§гарЬу, Коте: Ропкахопе Ы§о Вогкош, 1993, рр. 35-54. 1469.0.3. Зттопз, “8иЬНтШа1 СоттишсаПоп 15 Базу 13з1п§ Ше ОЗА,” Акуапсез т Сгур1о1о§у— Е11КОСКУРТ ’93 РгосееШп§5, 5рпп§ег-Уег1а§, 1994, рр. 218-232. 1470.0.3. Зттопз, “Ап 1Шгос1исНоп 1о Ше МаШетаНсз оГ Тгиз! ш Зесигку Рго1осо1з,” РгосеекШ^з: СотрШег Зесигку РоипкаНопз МогкзЬор VI, ШЕЕ СотрШег 8оЫе1у Ргезз, 1993, рр. 121-127. 1471.0.3. Зттопз, “Рго1осо!з Ша1 Епзиге Ракпезз,” Сокез апс! С1рЬегз, 1пз1кШе оГ МаШетаНсз апс! кз АррПсаПопз, 1995, рр. 383-394. 1472. О.З. Зттопз, “Сгур1апа!уз1з апс! Рго1осо1 РаНигез,” СоттитсаНопз оГ Ше АСМ, у. 37, п. 11, Ыоу 1994, рр. 56-65. 1473. О.З. Зттопз, “8иЬНтШа1 СЬаппе!з: Раз! апс! РгезеШ,” Еигореап ТгапзасНопз оп Те!есоттипсаНопз, V. 4, п. 4, Зи!/Аи§ 1994, рр. 459-473. 1474. О.З. Зттопз апс! М.З. Могпз, Но\у 1о С1рЬег Раз1 13з1п§ Кес1ипс!аШ ЫитЬег 8уз1етз, 8АЫО- 80-1886, ЗапсЬаЫаНопа! ЬаЬогаШпез, Аи§ 1980. 1475. А. 8Шкоу, Е1етеШагу Сгур1апа!уз1з, МаШетаНса! Аззос1аНоп оГАтепса, 1966. 1476. К. 31Готопеу апс! Ь. Ма1Ше\у, “А РиЬНс Кеу Сгур1озуз1ет ВазеН оп ЬупНоп \УогНз,” ШГогтаНоп Ргосезз1п§ ЬеПегз, V. 35, п. 1, 15 Зип 1990, рр. 33-36. 1477. В. 8тее1з, “А Ыо1е оп Зециепсез Оепега1ес1 Ьу С1оск-СоШго!1ес1 8ЫК Ке§181егз,” АНуапсез 1п Сгур1о!о§у—ЕЬ!КОСКУРТ ’85, 8рпп§ег-Уег!а§, 1986, рр. 40-42. 1478. М.Е. 8пПс1, “А Кеу ЫоШпхаНоп 8уз1ет Гог СотрШег Ые1\Уогкз,” ЫВЗ Зрес1а! КероП 500- 54, Ы.8. ОераПтеШ оГ Соттегсе, Ос1 1979. 1479. М.Е. Згшс!, “ТЬе ЭЗЗ апН Ше 8НЗ,” РеНега! 01§11а1 81§па1иге АррПсаПопз Зутрозшт, КоскуШе, МО, 17-18 РеЬ 1993. 1480. М.Е. Згтс! апс! О.К. Вгапз1ас1, “ТЬе Оа1а ЕпсгурПоп 31апс!агс1: Раз1 ап<1 РШиге,” РгосеесНпёз оГ Ше ШЕЕ, у. 76, п. 5., Мау 1988, рр. 550-559. 1481. М.Е. ЗтШ апс! О.К. ВгапзЫ, “ТЬе Оа1а ЕпсгурПоп 81апс!агс1: Раз! апН РиШге,” 1П СоШетрогагу Сгур1о1о§у: ТЬе ЗЫепсе оГ ШГоппаНоп 1п1еёГ11у, О.З. Зттопз, еШ, ШЕЕ Ргезз, 1992, рр. 43-64. 1482. З.Ь. ЗгтШ, “ТЬе Оез1§п оГ Ьис1Гег, А Сгур1о§гарЫс Оеу1се Гог Оа1а Соттип1саНопз,” 1ВМ КезеагсЬ КероП КС3326, 1971.
Список литературы 1483. ЬЬ. 8ткЬ, “Яесиси1аНп§ В1оск С1рЬег Сгур!о§гарЫс 8уз!ет,” 11.8. Ра!еп! #3,796,830, 12 Маг 1974. 1484. ЬЬ. 8ткЬ, №.А. N012, ап(1 Р.Я. Оззеск, “Ап Ехрептеп!а1 АррНсаНоп оГ Сгур!о§гарЬу № а Яето!е1у АссеззеН Оа!а 8уз1ет,” РгосеесНп§з оГ !Ье АСМ Аппиа1 СопГегепсе, Аи§ 1972, рр. 282- 290. 1485. К. 8ткЬ, “№а!сЬ Ои! Наскегз, РиЬНс ЕпсгурПоп СЫрз Аге Сотт§,” Е1ес!готсз №еек, 20 Мау 1985, рр. 30-31. 1486. Р. 8ткЬ, “ШС РиЬИс-Кеу ЕпсгурПоп,” Ог. ОоЬЬ’з .1оита1, V. 18, п. 1, Дап 1993, рр. 44-49. 1487. Р. 8ткЬ апс1 М. Ьеппоп, “ШС: А Ые^у РиЬПс Кеу 8уз!ет,” РгосеесНп§8 оГ !Ье Ыт!Ь 1п!етаНопа1 СопГегепсе оп МогтаНоп Зесигку, 1Р1Р/8ес 1993, МоПЬ НоНапс!: Е1зеУ1ег 8с1епсе РиЬНзЬегз, 1993, рр. 91-111. 1488. Е. 8пеккепез, “Ехр1опп§ !Ье ВАЫ АрргоасЬ Ю РгоЮсо1 Апа1уз18,” РгосеесПп§8 оНЬе 1991 ШЕЕ Сотри!ег 8ос1е!у Зутрозшт оп ЯезеагсН т Зесигку апс! Рпуасу, 1991, рр. 171-181. 1489. В. 8по\у, “Ми1Нр1е МерепНеп! Втагу В к 8!геат ОепегаЮг,” 0.8. Ра!еп! #5,237,615, 17 Аи§ 1993. 1490. Я. 8о1оуау апс! V. 8!газзеп, “А Раз! Моп!е-Саг1о Тез! Гог РптаЫу,” 81АМ .1оита1 оп СотриНп§, у. 6, Маг 1977, рр. 84-85; егга!ит т 1Ыд, V. 7, 1978, р. 118. 1491. Т. ЗоптасЫ, Т. Токка, апс! М. Ма!зш, “Оп а С1рЬег Еуа1иаНоп Ме!Ьос1 ВазеН оп ОкГегепНа1 Сгур!апа1уз1з,” РгосеесИп§з оГ !Не 1994 Зутрозшт оп Сгур!о§гарЬу апс! МогтаНоп Зесигку (8С18 94), Ьаке В1\уа, Зарап, 27-29 1ап 1994, рр. 4С.1-9. (1п Зарапезе.) 1492. А. 8огкт, “ЬииГег, а Сгур!о§гарЫс А1§огкЬт,” Сгур!о1о§1а, у. 8, п. 1, Зап 1984, рр. 22-41. 1493. №. 81а1Нп§з, “КегЬегоз Кеерз !Ье Е!Ьете! Зесиге,” Оа!а СоттитсаНопз, Ос! 1994, рр. 103-111. 1494. №. 8!а1Нп§5, Ые!^огк апс!1п!ете!^огк Зесигку, Еп§1е\УооН СПГГз, N.3.: РгепНсе-На11, 1995. 1495. №. 31а1Нп§з, Рго!ес! Уоиг Рпуасу: А Ошс!е Гог РОР Ызегз, Еп§1е\уоос! СПГГз, N.1.: РгепНсе-На11, 1995. 1496. ЗШпНагНз АззоиаНоп оГ Аиз!гаНа, “Аиз!гаПап 8!апс1агс1 2805.4 1985: Е1ес!готс РипНз ТгапзГег—Яеяшгетеп!з Гог 1п!егГасез: Раг! 4— Мезза§е Аи!ЬепНсаНоп,” 8АА, ЫоПЬ ЗуНпеу, Ы8№, 1985. 1497. 8!апс1агс18 АззошаНоп оГ Аиз!гаПа, “Аиз!гаНап 8!апс1агс1 2805.5 1985: Е1ес!готс РипПз ТгапзГег—Яеяшгетеп!з Гог МегГасез: Раг! 5— Оа!а ЕпшрЬегтеп! А1§огкЬт,” 8АА, ЫоПЬ ЗуНпеу, Ы8№, 1985. 791 1498. 3!апс1агс18 АззоиаНоп оГ Аиз!гаНа, “Аиз!гаНап 8!апс1агс1 2805.5.3: Е1ес!гошс Оа!а ТгапзГег— Яеяшгетеп1з Гог МегГасез: Раг! 5.3—Оа!а ЕпфЬегтеп! А1§огкЬт 2,” 8АА, Ыог!Ь ЗуНпеу, Ы8№, 1992. 1499. ТО. 8!етег, В.С. Ыеитап, апс! 3.1. ЗсНШег, “КегЬегоз: Ап АшЬепНсаНоп 8етсе Гог Ореп ЫеНУОгк 8уз1етз,” Ы8ЕЫ1Х СопГегепсе РгосеесНп§з, РеЬ 1988, рр. 191-202. 1500.3. 8!ет, “Зесге! Ьтеаг Соп§гиепНа1 Оепега!огз Аге N0! СгурЮ§гарЫса11у Зесиге,” РгосеесНп§з оГ !Ье 28!Ь Зутрозшт оп РоипНаНопз оГ Сотри!ег Заепсе, 1987, рр. 421-426. 1501 Л. 8!егп, “А Ые^у ШепНПсаНоп ЗсЬете ВазеН оп 8упс!готе ОесосНп§,” АНуапсез т Сгур!о1о§у— СЯУРТО ’93 РгосеесНп§з, 8рпп§ег-Уег1а§, 1994, рр. 13-21. 1502. А. 8!еуепз, “Наскз, Зроокз, апс! Оа!а ЕпсгурПоп,” Ог. ОоЬЬ’з Зоита1, V. 15, п. 9, Зер 1990, рр. 127-134, 147-149. 1503. Я. 8!ппк, “Оп !Ье Яао-Кат Рпуа!е-Кеу Сгур!озу81ет 11зт§ Моп-Ьтеаг СоПез,” 1ЕЕЕ 1991 Зутрозшт оп МогтаНоп ТЬеогу, ВиПарез!, Нип§агу, 1991. 1504. Я. 8!гшк апс! I. уап ТПЬиг§, “ТЬе Яао-Ыат ЗсЬете 1з 1пзесиге а§атз! а СЬозеп-Р1ат!ех! АИаск,” АПуапсез т Сгур!о1о§у—СЯУРТО ’87 РгосеесПп§8, 8рпп§ег-Уег1а§, 1988, рр. 445-457. 1505. 8.0. ЗШЬЫеЫпе апс! У.О. ОП§ог, “Рго!есНп§ !Ье 1п!е§п!у оГ Рпуасу-ЕпЬапсес! МаН \укЬ ОЕ8- Вазес! Аи!Ьеп!1са!1оп СоПез,” РгосеесНп§з оГ !Ье Рпуасу апс! Зесигку ЯезеагсЬ Огоир 1993 №огкзЬор оп Ые!^огк апс! 01з!пЬи!ес! 8уз!ет 8есип!у, ТЬе 1п!егпе! 8ос1е!у, 1993, рр. 75-80. 1506. Я. 8и§агтап, “Оп РоШп§ Сотри!ег Спте,” ШЕЕ 8рес!гит, у. 16, п. 7,1и! 79, рр. 31-32. 1507. Н.Ы. Зип апс! Т. Н^ап§, ‘сРиЬНс-кеу ГО-Вазес! Сгур1озуз1ет,” РгосеесНп§з оГ !Ье 25!Ь Аппиа1 1991 ШЕЕ 1п!ета!10па! СагпаЬап СопГегепсе оп Зесигку ТесЬпо1о§у, Та1ре1, Тапуап, 1-3 Ос! 1991, рр. 142-144. 1508. Р.Р. Зууегзоп, “Рогта! ЗетапНсз Гог Ьо§1С8 оГ Сотри!ег Рго!осо!з,” Ргосеес!1п§8 оГ !Ье Сотри!ег Зесигку РоипПаНопз №огкзЬор III, ШЕЕ Сотри!ег 8ос1е!у Ргезз, 1990, рр. 32-41. 1509. Р.Р. Зууегзоп, “ТЬе Ызе оГЬо§ю т !Ье Апа1уз18 оГ Сгур!о§гарЫс Рго!осо1з,” РгосеесНп§з оГ !Ье 1991 ШЕЕ Сотри!ег 8оае!у 8утроз1ит оп ЯезеагсЬ 1п Зесигку апс! Рпуасу, 1991, рр. 156-170. 1510. Р.Р. Зууегзоп, “Кпо\у1ес!§е, ВеИеГ, апс! ЗетапНсз 1п !Ье Апа1уз18 оГ Сгур!о§гарЫс Рго!осо1з,” 1оита1 оГ Сотри!ег 8есип!у, у. 1, п. 3, 1992, рр. 317-334. 1511. Р.Р. Зууегзоп, “Ас!сНп§ Типе Ю а Ьо§1с АшЬепНсаНоп,” 1з! АСМ СопГегепсе оп Сотри!ег апс! Соттип1са!1опз 8есип!у, АСМ Ргезз, 1993, рр. 97-106.
792 Прикладная криптография 1512. Р.Р. 8ууегзоп апс! С.А. МеаНо^уз, “А Ьо§1са1 Ьап§иа§е Рог 8ресИут§ Сгур*о§гарЫс Рго*осо! КеяшгетеШз,” РгосеесИп^з оР Ше 1993 ШЕЕ СотрШег 8ос1е*у 8утрозшт оп КезеагсЬ т 8есип*у апс! Рпуасу, 1993, рр. 14-28. 1513. Р.Р. 8ууегзоп апс! С.А. МеаНо\У8, “Рогта1 Кеяшгетеп*з Рог Кеу 01з*пЬиНоп Рго*осо1з,” Аауапсез т Сгур*о1о§у—ЕЫКОСКУРТ ’94 РгосеесНп§з, 8рпп§ег-Уег1а§, 1995,*о арреаг. 1514. Р.Р. 8ууегзоп апд Р.С. уап ОогзсЬо*, “Оп Ыт1ут§ 8оте Сгур*о§гарЫс Рго*осо1 Ьо§1сз,” РгосеесНп§з оР Ше 1994 ШЕЕ СотрШег 8оае*у 8утрозшт оп КезеагсЬ т 8есип*у апс! Рпуасу, 1994, рр. 165-177. 1515. Н. Тапака, “А КеаНгаНоп 8сЬете Рог Ше 1НепН*у-Вазес! Сгур*озуз*ет,” АНуапсез т Сгур*о1о§у—СКУРТО ’87 РгосеесНп§з, 8ргт§ег-Уег1а§, 1988, рр. 340-349. 1516. Н. Тапака, “А КеаНгаНоп 8сЬете Рог Ше ИепН*у- Вазес! Сгур*озуз*ет,” Е1ес*гошсз апс! СоттитсаНопз т 1арап, РаП 3 (Рипс1атеп1а1 Е1ес*готс 8с1епсе), у. 73, п. 5, Мау 1990, рр. 1-7. 1517. Н. Тапака, “МеШку-Вазес! ЫотШегасНуе Соттоп-Кеу СепегаНоп апд Из АррНсаНоп *о Сгур*озуз*етз,” ТгапзасНопз оР Ше 1пзН*и*е оР Е1ес*готсз, 1пРогтаНоп, апс! СоттишсаПоп Еп§теегз, у. Д75-А, п. 4, Арг 1992, рр. 796-800. 1518. Ь ТагПо апс! К. А1а§аррап, “8РХ: 01оЬа1 АиШепНсаНоп Ызт§ РиЬ!1с Кеу СеП1р1са*е5,” РгосеесНп§з оР Ше 1991 ШЕЕ СотрШег 8ос1е*у Зутрозшт оп 8есип*у апс! Рпуасу, 1991, рр. 232-244. 1519.1. ТагНо, К. А1а§аррап, апс! К. РИкш, “РиЬНс Кеу Вазес! АиШепНсаНоп Ызт§ 1п*егпе* СеН1р1са*ез,” Ы8ЕЫ1Х 8есип*у II \УогкзЬор РгосеесНп§з, 1990, рр. 121-123. 1520. А. ТагНу-СогРсНг апс! Н. ОПЬеН, “А Кпошп Р1ат*ех* АНаск оР РЕАЬ-4 апН РЕАЬ-6,” АНуапсез т Сгур*о1о§у—СКУРТО ’91 РгосеесНп§8, 8рпп§ег-Уег1а§, 1992, рр. 172-182. 1521. М. Та*еЬауазЫ, N. Ма*зи2ак1, апс! О.В. Ыеитап, “Кеу 018*пЪиНоп Рго*осо1 Рог 01§ка1 МоЬПе СоттишсаПоп 8уз*ет,” АНуапсез т Сгур*о1о§у—СКУРТО ’89 РгосеесИп§8, 8ргт§ег-Уег1а§, 1990, рр. 324-333. 1522. М. Тау1ог, “1тр1етепНп§ Рпуасу ЕпЬапсес! МаН оп УМ8,” РгосеесПп§8 оР Ше Рпуасу апс! 8есип*у КезеагсЬ Огоир 1993 ^огкзЬор оп ЫеНУогк апс! 018*пЬи*ес1 8уз*ет 8есип*у, ТЬе 1п*ете*8оте*у, 1993, рр. 63-68. 1523. К. Тау1ог, “Ап 1п*е§п*у СЬеск Уа1ие А1§опШт Рог 81геат ОрЬегз,” АсКапсез т Сгур*о1о§у—СКУРТО ’93 РгосеесНп§5,8рпп§ег-Уег1а§, 1994, рр. 40-48. 1524. Т. ТеНпск, “РаН ЕхсЬап§е оР 8есге*з,” АНуапсез т Сгур*о1о§у: РгосеесНп§8 оР СКУРТО ’84, 8рпп§ег-Уег!а§, 1985, рр. 434-438. 1525. К. ТегаНа апс! Р.О. РтЬеНо, “Но\у Ю 8*геп§Шеп РЕАЬ а§атз* ОИГегепНа1 Сгур*апа1у515,” РгосееШп§8 оР Ше 1995 1арап-Когеа ^огкзЬор оп 1пРогтаНоп 8есип*у апс! СгурЮ^гарЬу, 1пиуата, 1арап, 24-271ап 1995, рр. 153-162. 1526. Ь-Р. ТПИсЬ апН О. 2ётог, “НазЫп§ \У1*Ь 812,” АНуапсез т Сгур*о1о§у—СКУРТО ’94 РгосееШп§8, 8рпп§ег-Уег1а§, 1994, рр. 40-49. 1527. Т. ТокПа, Т. 8оптасЫ, апс! М. Ма*зш, “Ап ЕРПаеп* 8еагсЬ А1§опШт Рог Ше Вез* Ехргеззюп оп Ыпеаг Сгур*апа!у815,” 1Е1СЕ Рарап, ТесЬтса1 КероП, 18ЕС93-97, 1994. 1528. М. Тотра апН Н. \Уо11, “КапНот 8е!Р- КеНис1ЫП*у апс! 2его-Кпо\уЫ§е 1п*егасНуе РгооРз оР Роззеззюп оР 1пРогтаНоп,” РгосеесНп^з оР Ше 28Ш ШЕЕ Зутрозшт оп Ше РоипНаНопз оР СотрШег 8шепсе, 1987, рр. 472-482. 1529. М. Тотра апс! Н. \Уо11, “Но\у *о 8Ьаге а 8есге* \4Ш СЬеа*ег8,” Роита1 оР Сгур*о1о§у, V. 1, п. 2, 1988, рр. 133-138. 1530. М.-Ь Тоиззат*, “УепГюаНоп оР Сгур*о§гарЫс Рго*осо1з,” РЬ.О. Н15зеПа*10п, Ып1уег811ё с!е Уё^е, 1991. 1531. М.-Ь Тои8за|Ш, “Оепут§ Ше Сотр1е*е Кпо^у1ес!§е оР РаЛю1раШ5 1п Сгур1о§гарЬ1с Рго*осо1з,” АНуапсез т СгурЮ1о§у--СКУРТО ’91 Ргосеес!1П§5, 8рпп§ег-Уег1а§, 1992, рр. 24-43. 1532. М.-Х Тои88а1Ш, “8ерагаНп§ Ше 8рес1ПсаНоп апс! 1тр1етеп*аНоп РЬазез 1п Сгур1о!о§у,” Е80К1С8 92, РгосеесНп§5 оР Ше 8есопс! Еигореап 8утроз1ит оп КезеагсЬ 1П СотрШег 8есип*у, 8рпп§ег-Уег!а§, 1992, рр. 77-101. 1533. Р.О. ТошпзепН, ^.0. Кап*у, апс! Р.К. Тарз1ег, “ЕпЬапсес! 81п§!е РЬо1оп Рпп§е У 181Ь1111у 1п а 10 кт-Ьоп§ РгоЮ*уре ^иатит Сгур*о§гарЬу СЬаппе!,” Е1ес1гоп1сз ЬеПегз, у. 28, п. 14, 8 М 1993, рр. 1291-1293. 1534.8.А. ТгеПег, “РгореШез оР РЫ2 Зециепсез,” ШЕЕ ТгапзасНопз оп 1пРогта*1оп ТЬеогу, V. 1Т- 20, п. 2, Маг 1974, рр. 295-297. 1535. Н. Тгитап, “МетогапНит Рог: ТЬе 8есге*агу оР 8*а*е, ТЬе 8есге*агу оР ОеРепзе,” А 20707 5/4/54/080, N8А Т8 СООТЬ. N0 73-00405, 24 Ос* 1952. 1536. УЖ Тза1 апс! Т. Н\уап§, “Ю ВазеН РиЫ1С Кеу Сгур*озу8*ет Вазес! оп Окато*о апс! Тапака’з Ю Вазес! Опе-^ау Соттип1са*10пз 8сЬете,” Е1ес1гоп1сз ЬеПегз, у. 26, п. 10, 1 Мау 1990, рр. 666-668. 1537.0. ТзисИк, “Мезза^е АиШепНсаНоп \У1*Ь ОпеЛУау НазЬ Рипс*!опз,” АСМ Сотри*ег Соттип1са1юпз Кеу1еш, у. 22, п. 5,1992, рр. 29-38. 1538.8. Тзи)П апс! К. АгаУ, “А КеЬи**а1 *о СоррегзтПЬ’з АПаск1п§ МеШоН,” тетогапНит ргезеп*ес! а* Сгур*о ’94, Аи§ 1994.
Список литературы 793 1539.8. Тзц|й, К. АгаЫ, 3. СЬао, Т. 8екЫе, апд У. Ма&игаЫ, “Ю-Вазед Кеу 8Ьапп§ ЗсЬете— СапсеИаНоп оР Капдот ЫитЬегз Ьу ПегаНуе АддМоп,” 1Е1СЕ Зарап, ТесЬшса1 КероП, 18ЕС 92-47, Ос! 1992. 1540.8. ТзцЫ, К. Агак1, апд Т. 8екЫе, “А Ые\у ЗсЬете оР Ыотп!егасНуе Ю-Вазед Кеу 8Ьалп§ \У11Ь Ехр1оз1уе1у РП§Ь Ое§гее оР 8ерагаЬШ!у,” ТесЬшса1 КероП, ОераПтеп! оР Сотри!ег 8с1епсе, Токуо ЫзНППе оР ТесЬпо1о§у, 93ТК- 0016, Мау 1993. 1541.8. ТзцЫ, К. Агак1, апд Т. 8екЫе, “А Иеуу ЗсЬете оР Ыоп 1п!егасНуе Ю-Вазед кеу 8Ьапп§ м!Ь Ехр1оз1уе1у РП§Ь Ое§гее оР 8ерагаЬШ!у (8есопд Уегзюп),” ТесЬтса! КероП, ОераПтеп! оР Сотри!ег ЗЫепсе, Токуо 1пзН!и!е о!* ТесЬпо1о§у, 93ТК-0020,3и1 1993. 1542. 8. Тзи|п, К. Агак1, Т. 8екЫе, апд К. Тапада, “А №уу 8сЬете о!* Ыоп 1п!егасНуе Ю-Вазед Кеу 8Ьапп§ ум!Ь Ехр1оз1уе1у РП§Ь Ое§гее оР 8ерагаЬШ!у,” Ргосеедт§з оР !Ье 1993 Когеа- Зарап \УогкзЬор оп ЫРогтаПоп 8есип!у апд Сгур!о§гарЬу, 8еои1, Когеа, 24-26 Ос! 1993, рр. 49-58. 1543. 8. Тзи|й, К. Агак1, Н. ТапаЫ, 3. СЬао, Т. 8екте, апд У. Ма!зи2ак1, “Ю-Вазед Кеу 8Ьапп§ ЗсЬете—Кер1у 1о Тапака’з Соттеп!,” 1Е1СЕ Зарап, ТесЬтса! КероП, 18ЕС 92-60, Оес 1992. 1544.8. Тзц|п апд 3. СЬао, “А №уу Ю-Ьазед Кеу 8Ьапп§ 8уз!ет,” Адуапсез Ы Сгур!о1о§у— СКУРТО ’91 РгосеедЫ§з, 8рпп§ег-Уег1а§, 1992, рр. 288-299. 1545.8. Тзир!, I СЬао, апд К. Агак1, “А 81тр1е Ю- Вазед ЗсЬете Рог Кеу 8Ьапп§,” 1Е1СЕ Зарап, ТесЬтса1 КероП, 18ЕС 92-25, Аи§ 1992. 1546. 8. Тзи т апд Т. ПоЬ, “Ап Ю-Вазед Сгур1озуз1ет Вазед оп !Ье 01зсге!е Ьо§ап!Ьт РгоЫет,” ШЕЕ Зоита! оп 8е1ес!ед Агеаз т СоттитсаНоп, у. 7, п. 4, Мау 1989, рр. 467-473. 1547. 8. Тзир» апд Т. ПоЬ, “Ап Ю-Вазед Сгур1озуз1ет Вазед оп !Ье 01зсге!е Ьо§ал!Ьт РгоЫет,” Е1ес!готсз ЬеПегз, V. 23, п. 24, Ыоу 1989, рр. 1318-1320. 1548.8. Тзи)п, К. Кигоза\уа, Т. ПоЬ, А. Рирока, апд Т. Ма!зито!о, “А РиЬЬс-Кеу Сгур!озу51ет Вазед оп !Ье ОПГ1си1!у оР 8о!уЫ§ а 8уз!ет оР Ыоп-Ыпеаг ЕяиаНопз,” Т8ШН ЬаЬогаЮгу ТесЬшса1 Метогапдит, п. 1, 1986. 1549. У. Тзипоо, Е. Окато!о, апд Н. Оо1, “Апа!уНса1 Кпошп Р1ат-Тех! А!!аск Рог РЕАЬ-4 апд 1!з 1тргоуетеп!,” Ргосеедт§з оР !Ье 1994 Зутрозшт оп Сгур!о&гарЬу апд ЫРогтаПоп 8есип!у (8С13 93), 1993. 1550. У. Тзипоо, Е. Окато!о, Т. 11уета1зи, апд М. МатЬо, “Апа1уНса1 Кпо\уп Р1ат-Тех! АПаск Рог РЕАЬ-6” РгосеедЫ^з оР !Ье 1993 Когеа-Зарап \УогкзЬор оп ЫРогтаПоп 8есип!у апд СгурЮ§гарЬу, 8еои1, Когеа, 24-26 Ос! 1993, рр. 253-261. 1551. \У. ТисЬтап, “НеНтап Ргезеп!з N0 8ЬоПси! 8о1иНопз !о ЭЕ8,” ШЕЕ 8рес!гит, V. 16, п. 7, Зи1у 1979, рр. 40-41. 1552.13.8. 8епа!е 8е1ес! СоттЫее оп 1п!еШ§епсе, “13пс1азз1Г1ед 8иттагу: ЫуоЫетеп! оР Ы8А Ы !Ье ОеуеЫртеп! оР !Ье Эа!а ЕпсгурПоп 8!апдагд,” ШЕЕ СоттитсаНопз Ма§агте, у. 16, п. 6, Ыоу 1978, рр. 53-55. 1553. В. Уа11ёе, М. СНаиП, апд Р. ТоРПп, “Ноуу !о Вгеак Окато!о’з Сгур!озуз!ет Ьу Кедист§ ЬаНюе Уа1иез,” Адуапсез т Сгур!о1о§у— ЕШОСКУРТ ’88 Ргосеедт§з, 8рпп§ег-Уег1а§, 1988, р. 281-291. 1554. Н. Уап АпПуегреп, “Е1ес!готс СазЬ,” МазЫг’з 1Ьез18, С\У1, Ые!Ьег1апдз, 1990. 1555. К. Уап Езреп апд 3. Уап М1е§Ьет, “ЕуаЫаНе еп 1тр1етеп!аНе уап Аи!ЬепНзепп2за1§оп!теп,” §гадиа!е !Ьез1з, Е8АТ ЬаЬога!опит, КаЫоНеке 11туег511е11 Ьеиуеп, 1989. (1п Ои!сЬ.) 1556. Р.С. уап ОогзсЬо!, “Ех!епдт§ Сгур!о§гарЫс Ьо§1сз оР ВеПеР !о Кеу А^геетеп! Рго!осо1з,” Ргосеедт^з оР !Ье 1з! Аппиа! АСМ СопРегепсе оп Сотри!ег апд СоттитсаНопз 8есип!у, 1993, рр. 232-243. 1557. Р.С. уап ОогзсЬо!, “Ап А1!ета!е Ехр1апаНоп Рог Тлуо ВАЫ-1о§1с ‘РаПигез,’ ” Адуапсез Ы Сгур!о1о§у—ЕШОСКУРТ ’93 РгосеедЫ§з, 8рпп§ег-Уег1а& 1994, рр. 443-447. 1558. Р.С. уап ОогзсЬо! апд М.З. Мепег, “А Кполуп- Р1ат!ех! АПаск оп Т\УО-Кеу Тпр1е ЕпсгурПоп,” Адуапсез Ы Сгур!о1о§у—ЕШОСКУРТ ’90 Ргосеед1п§з, 8рпп§ег-Уег1а§, 1991, рр. 318-325. 1559.3. уап ТПЬиг§, “Оп !Ье МсЕИесе Сгур1озуз1ет,” Адуапсез т Сгур!о1о§у—СКУРТО ’88 Ргосеедт§з, 8рппёег-Уег1а§, 1990, рр. 119-131. 1560.3. уап ТйЬиг^, “Сгур!апа1уз18 оР !Ье Х1пте1 01§11а1 81§па!иге 8сЬете,” Е1ес!готсз ЬеПегз, у. 28, п. 20, 24 8ер 1992, рр. 1935-1938. 1561. 3. уап ТЙЬиг§, “Т\уо СЬозеп-Р1аЫ1ех1 АПаскз оп !Ье Ь1 №ап§ Зо1п§ Аи!Ьеп!1саНоп апд ЕпсгурПоп 8сЬете,” АррНед А1§еЬга, А1§еЬга1с А1§оп!Ьтз апд Еггог СоггесНп§ Содез 10, 8рпп§ег-Уег1а§, 1993, рр. 332-343. 1562.3. уап ТИЬиг§, “8есип!у-Апа1уз13 оР а С1азз оР СгурЮзузЮтз Вазед оп Ыпеаг Еггог-СоггесНп§ Содез,” РЬЮ. д1ззеПа!10п, ТесЬп1са1 13п1уегз1!у Е1пдЬоуеп, 1994. 1563. А. Уапдетеи1еЬгоеске, Е. Уап21е1е§Ьет, Т. Бепауег, апд Р.О. Зезрегз, “А 8Ы§1е СЫр 1024 В1!з К8А Ргосеззог,” Адуапсез Ы Сгур!о1о§у—ЕШОСКУРТ ’89 Ргосеед1П§з, 8рпп§ег-Уег1а§, 1990, рр. 219-236. 1564.3. УапдепуаИе, Э. СЬаит, \У. Риту, С. Запзеп, Р. Ьапдгоск, апд С. КоеЫГзеп, “А Еигореап Са11
794 Прикладная криптография Гог СгурЮ§гарЫс А1&опШтз: ЯШЕ; ЯАСЕ 1пЮ§гку РпгтНуез ЕуаШаНоп,” Аауапсез т СгурЮ1о§у—ЕШОСЯУРТ ’89 Ргосеедт^з, 8ргт§ег-Уег1а§, 1990, рр. 267-271. 1565. V. Vа^адЬа^а^ап, “УегШсаНоп оГ ЫеНУОгк 8есип1у РгоЮсо1з,” СотриЮгз апс1 8есип1у, у. 8, п. 8, Аи§ 1989, рр. 693-708. 1566. V. УагадЬага]ап, “Ызе оГ а Рогта! ОезспрНоп ТесЬтяие ш Ше ЗресШсаПоп оГ АиШепНсаНоп РгоЮсо1з,” СотриЮг ЗЮпдагдз апд ШЮгГасез, у. 9, 1990, рр. 203-215. 1567.8. Уаидепау, “РРТ-НазЬ-Н 1з по1 Уе1 СоШзюп- Ргее,” Адуапсез Ш СгурЮ1о§у—СЯУРТО ’92 РгосеедШ^з, 8рпп§ег-Уег1а§, рр. 587-593. 1568.8. Уаидепау, ‘ТИГГегепНа! Сгур1апа1уз18 оГ В1о\уПзЬ,” иприЬПзЬед шапизспр!, 1995. 1569.1ЛУ. Уагкаш апд У.У. Уагкаш, “Тгардоог Рзеидо-Яапдот ЫишЬег СепегаЮгз \укЬ АррНсаНопз Ю РгоЮсо1 Оез1§п,” РгосеедШ^з оГ Ше 24Ш ШЕЕ Зутрозшт оп Ше РоипдаНопз оГ СотрШег Зиепсе, 1983, рр. 23-30. 1570.11.У. Уагкаш апд У.У. Уагкаш, “ЕШаеп! апс! Зесиге Рзеидо-Яапдот ЫитЬег СепегаНоп,” Ргосеедт§з оГ Ше 25Ш ШЕЕ Зутрозшт оп Ше РоипдаНопз оГ СотрШег Заепсе, 1984, рр. 458— 463. 1571. и.У. Уаякаш апд У.У. Уахкат, “ЕГЯшет апд Зесиге Рзеидо-Яапдот РШтЬег СепегаНоп,” Адуапсез т СгурЮ1о§у: Ргосеедт^з оГ СЯУРТО ’84,8рпп§ег-Уег1а§, 1985, рр. 193-202. 1572.1. УегЬаилуЬеде, Р. НоотаеЛ, I. УапдепуаИе, апд Н. Ое Мап, “А81С СгурЮ§гарЫса1 Ргосеззог Вазед оп ОЕЗ,” Еиго А81С ’91 Ргосеедт§з, 1991, рр. 292-295. 1573.1. УегЬаи\уЬеде, Р. Ноотаег*, Д. УапдепуаИе, Н. Ое Мап, апд Я. СоуаеПз, “Зесигку Соп81дегаНопз т Ше Оез1§п апд 1тр1етеп1аНоп оГ а Ыеуу ОЕ8 СШр,” Адуапсез ш СгурЮ1о§у— ЕШОСЯУРТ ’87 Ргосеедт§з, 8рпп§ег-Уег1а§, 1988, рр. 287-300. 1574. Я. Уо§е1, “Оп Ше Ыпеаг СотрЮхку оГ Сазсадед Зециепсез,” Адуапсез т Сгурю1о§у: Ргосеедт^з оГ ЕЫЯОСЯУРТ 84, 5рпп§ег-Уег1а§, 1985, рр. 99-109. 1575.8. уоп 8о1тз апд О. ЫассасЬе, “Оп ВНпд З^паШгез апд РегГес! Сптез,” СотриЮгз & Зесигку, V. 11, 1992, рр. 581-583. 1576. У.Ь. Уоудоск апд 8.Т. Кеп1, “Зесигку МесЬатзтз ш Н1§Ь-Ьеуе1 Ые^огкз,” АСМ СотриНп§ Зигуеуз, V. 15, п. 2, Лт 1983, рр. 135-171. 1577. Р1.Я. \Уа§пег, Р.8. РиПег, апд М.Я. Сат, “Ьаг§е- 8са1е ЯапдогтгаНоп ТесЬшциез,” Адуапсез Ш СгурЮ1о§у—СЯУРТО ’86 РгосеедШ^з, 8рпп§ег-Уег1а§, 1987, рр. 393-404. 1578. М. \Уа1дпег апд В. РГкгтапп, “ТЬе Окип§ СгурЮ§гарЬегз т Ше 01зсо: Ыпсопд1Нопа1 Зепдег апд Яес1р1еп1 ЫпкасеаЬПку мШ Сотри1аНопа11у Зесиге ЗетсеаЬИку,” Адуапсез т СгурЮ1о&у—ЕЫЯОСЯУРТ ’89 Ргосеедт§з, 8рпп§ег-Уег1а§, 1990, р. 690. 1579. 8.Т. \Уа1кег, “ЗоШуаге Кеу Езсгоуу—А ВеНег 8о1иНоп Гог Ьа\у ЕпГогсетепНз Ыеедз?” Т15 ЯероЛ #533, ТгизЮд ШГогтаНоп ЗузЮтз, Аи§ 1994. 1580.8.Т. \Уа1кег, “ТЬои&Ыз оп Кеу Езсго\у Ассер1аЫ1ку,” Т18 ЯероЛ #5340, ТгизЮд ШГогтаНоп ЗузЮтз, Ыоу 1994. 1581.3.Т. \Уа1кег, З.В. Урпег, С.М. ЕШзоп, О.К. ВгапзЮд, апд О.М. Ва1епзоп, “Соттегс1а1 Кеу Езсгоуу—8отеШт§ Гог Еуегуопе—Р1оуу апд Гог Ше РиШге,” Т18 Яерог* #541, ТгизЮд ШГогтаНоп ЗузЮтз, 1ап 1995. 1582. М.2. \Уап^ апд ЛЬ. Маззеу, “ТЬе СЬагасЮпзНсз оГ АН Втагу Зеяиепсез \У1Ш РегГес* Ь|пеаг Сотр1ех11у РгоГдез,” АЬз1гас1з оГ Рарегз, ЕТ1ЯОСЯУРТ ’86, 20-22 Мау 1986. 1583. Е.Л. \Уа1зоп, “РптШуе Ро1упот1а1з (Мод 2),” МаШетаНсз оГСотрШаНоп, у. 16, 1962, р. 368. 1584. Р. \Уаупег, “М1т1С РипсНопз,” Сгур1о1о§1а, у. 16, п.З,Ш1 1992, рр. 193-214. 1585. Р. \Уаупег, “М1т1с РипсНопз апд Тгас1аЫ1ку,” дгай тапизспрИ 1993. 1586. А.Р. \УеЬз1ег апд З.Е. Тауагез, “Оп Ше Оез1§п оГЗ- Вохез,” Адуапсез 1п Сгур1о1о§у—СЯУРТО ’85 Ргосеед1П§з, 8рпп§ег-Уег1а§, 1986, рр. 523-534. 1587. С. \Уе1сЬтап, ТЬе Ни1 81х 81огу: Вгеак1п§ Ше Еш§та Содез, Ыеуу Уогк: МсОга\у-НП1,1982. 1588.АХ. \Уе11з 1г., “А Ро1упогта1 Рогт Гог Ьо§агкЬтз Моди1о а Рпте,” ШЕЕ ТгапзасНопз оп ШГогтаНоп ТЬеогу, Ыоу 1984, рр. 845-846. 1589.0. Л \УЬее1ег, “А Ви1к Оа1а ЕпсгурПоп А1§опШт,” Раз1 ЗоШуаге ЕпсгурПоп, СатЬг!д§е 8есип*у \УогкзЬор Ргосеед1п§з, 8рпп§ег-Уег1а§, 1994, рр. 127-134. 1590. В.]. \УЬее1ег, регзопа1 соттип1саНоп, 1994. 1591.0.1. \УЬее1ег апд Я. ЫеедЬат, “А Лаг^е В1оск ОЕЗ-Ыке А1§огкЬт,” ТесЬп1са1 Яерог! 355, “Т\уо СгурЮ§гарЬ1С Ыо1ез,” Сотри1ег ЬаЬогаЮгу, Ытуегзку оГ СатЬг1д§е, Оес 1994, рр. 1-3. 1592. О.Л \УЬее1ег апд Я. ЫеедЬат, “ТЕА, А ТШу ЕпсгурПоп А1§огкЬт,” ТесЬп1са1 ЯероЛ 355, “Тууо СгурЮ^гарЫс ЫоЮз,” СотриЮг ЬаЬогаЮгу, Ытуегзку оГ СатЬпд^е, Оес 1994, рр. 1-3. 1593. 8.Я. \УЬке, “Соуег! 01з1пЬиЮд Ргосеззт§ \у1Ш СотриЮг ХНгизез,” Адуапсез 1п СгурЮ1о§у— СЯУРТО ’89 Ргосеед1п§з, 8рпп§ег-Уег1а§, 1990, рр. 616-619.
Список литературы 795 1594. \УЫю Ноизе, ОРПсе оГ Ше Ргезз 8есге1агу, “81аЮтеп1 Ьу Ше Ргезз 8есге1агу,” 16 Арг 1993. 1595. В.А. МсЬтап апс! Ш. №11, “Ап ЕГПЫеп! апс! РоПаЫе Рзеийо-Капйот ИитЬег ОепегаЮг,” АррНей 81аНзНсз, V. 31, 1982, рр. 188-190. 1596. М.Ь Мепег, “Сгур1апа1уз1з оГ 8ЬоН К8А 8есге1 ЕхропепЮ,” ШЕЕ ТгапзасНопз оп ЫГогтаНоп ТЬеогу, V. 36, п. 3, Мау 1990, рр. 553-558. 1597. М.Ь Мепег, “ЕГПЫеп! ОЕ8 Кеу 8еагсЬ,” ргезепЮй а1 Ше гитр зеззюп оГ СКУРТО ’93, Аи§ 1993. 1598. МЛ. Мепег, “ЕШЫеп! ОЕЗ Кеу ЗеагсЬ,” ТК- 244, 8сЬоо1 оГ СотриЮг ЗЫепсе, СаПеЮп Ытует^у, Мау 1994. 1599. М.У. \УПкез, Т1те-8Ьапп§ СотриЮг ЗузЮтз, №\у Уогк: Атепсап Е1зеу1ег, 1968. 1600. Е.А. \УПНатз, Ап ЫукаНоп Ю СгурЮ§гатз, Ие^ Уогк: Зипоп апс! ЗсЬизЮг, 1959. 1601. Н.С. ХУПНатз, “А МоШПсаНоп оГ Ше КЗА РиЬИс-Кеу ЕпсгурПоп Ргосейиге,” ШЕЕ ТгапзасНопз оп ЫГогтаНоп ТЬеогу, V. ГГ-26, п. 6, Ыоу 1980, рр. 726-729. 1602. Н.С. ХУННатз, “Ап Оуете\у оГ РасЮпп§,” Айуапсез Ы СгурЮ1о§у: Ргосеейт§з оГ СгурЮ 83, Р1епит Ргезз, 1984, рр. 71-80. 1603. Н.С. \УПНатз, “8оте РиЬНс-Кеу СгурЮ- РипсНопз аз ЫНасЮЫе аз РасЮпгаНоп,” Айуапсез т СгурЮ1о&у: Ргосеейт^з оГ СКУРТО 84, 8рпп§ег-Уег1а§, 1985, рр. 66-70. 1604. Н.С. ХУННатз, “8оте РиЬИс-Кеу СгурЮ- РипсНопз аз ЫНасЮЫе аз РасЮпгаНоп,” СгурЮ1о§1а, V. 9, п. 3, Ы1 1985, рр. 223-237. 1605. Н.С. ХУПНатз, “Ап М3 РиЬИс-Кеу ЕпсгурПоп ЗсЬете,” Айуапсез Ы СгурЮ1о§у—СКУРТО ’85, 8рпп§ег-Уег1а§, 1986, рр. 358-368. 1606. К.8. \Ут1егт12, “Ргойист§ Опе-^ау НазЬ РипсНопз Ггот ОЕ8,” Айуапсез ш СгурЮ1о§у: Ргосеейт§з оГ СгурЮ 83, Р1епит Ргезз, 1984, рр. 203-207. 1607. К.8. \Ут1етЙ2, “А 8есиге Опе-ДУау НазЬ РипсНоп ВиШ Ггот ОЕ8,” Ргосеейт§з оГ Ше 1984 Зутрозшт оп 8есип1у апс! Рпуасу, 1984, рр. 88-90. 1608.8. \Уо1Ггат, “Капйот Зеяиепсе ОепегаНоп Ьу Се11и!аг АиЮтаЮ,” Айуапсез т АррНес! МаШетаНсз, V. 7, 1986, рр. 123-169. 1609.8. \Уо11гат, “СгурЮ§гарЬу \У1Ш СеНи!аг АиЮтаЮ,” Айуапсез т СгурЮ1о§у—СКУРТО ’85 Ргосеейт§з, Зрпп§ег-Уег1а§, 1986, рр. 429-432. 1610. Т.У.С. \Уоо апй 8.8. Ьат, “АиШепНсаНоп Гог 0181пЬиЮй ЗузЮтз,” СотриЮг, V. 25, п. 1, Йап 1992, рр. 39-52. 1611.Т.У.С. ХУоо апй 8.8. Ьат, “‘АиШепНсаНоп’ КеУ1зкей,” СотриЮг, у. 25, п. 3, Маг 1992, р. 10. 1612. Т.У.С. \Уоо апс! 8.8. Ьат, “А 8етапНс Мойе1 Гог АиШепНсаНоп РгоЮсо!з,” Ргосеейт§з оГ Ше 1993 ШЕЕ СотриЮг 8ос1е1у Зутрозшт оп КезеагсЬ т 8есип1у апй Рпуасу, 1993, рр. 178-194. 1613. М.С. ХУоой, ЮсЬтса! героП, СгурЮсЬ, 1пс., ЙатезЮ\УП, ЫУ, Ы1 1990. 1614. М.С. ХУоой, “МеШой оГ СгурЮ§гарЫса11у ТгапзГогт1п§ Е1ес1готс 01§Ьа1 Е)а1а Ггот Опе Рогт Ю АпоШег,” 11.8. РаЮп1 #5,003,596,26 Маг 1991. 1615. М.С. ХУоой, регзопа1 соттитсаНоп, 1993. 1616. С.К. \Уи апй Х.М. \Уап§, “ОеЮгттаНоп оГ Ше Тгие Уа1ие оГ Ше Еи!ег ТоНеп! РипсНоп Ы Ше К8А СгурЮзузЮт Ггот а 8е1 оГ Роз81Ь1ПНез,” ЕЮсНотсз ЬеПегз, V. 29, п. 1, 7 Йап 1993, рр. 84- 85. 1617. М.С. ХУипйегПсЬ, “Кесеп! Айуапсез т Ше Оез1§п апй 1тр!етеп1аНоп оГ Ьаг§е 1пЮ§ег РасЮпгаНоп А1§опШтз,” Ргосеейт^з оГ 1983 Зутрозшт оп Зесигку апй Рпуасу, ШЕЕ СотриЮг 8ос1е1у Ргезз, 1983, рр. 67-71. 1618. Хегох ЫеПуогк 8узЮт (ХЫ8) АиШепНсаНоп РгоЮсо!, Х818 098404, Хегох СогрогаНоп, Арг 1984. 1619. У.У. Х1ап, “Ые\у РиЬНс Кеу 0181пЬиНоп 8узЮт,” Е1есНошсз ЬеПегз, у. 23, п. И, 1987, рр. 560-561. 1620. Ь.О. Хт& апй Ь.О. 8Ьеп§, “Сгур1апа!уз1з оШе\у МоШИей Ьи-Ьее СгурЮзузЮтз,” ЕЮсНошсз ЬеПегз, V. 26, п. 19, 13 8ер 1990, р. 1601-1602. 1621. XV. Хтте1, ‘Т)1§На1 ЗщпаЮге 8сЬете Вазей оп Еггог-СоггесНп§ Сойез,” Е1есНошсз ЬеПегз, у. 26, п. 13, 21 Ып 1990, р. 898-899. 1622.8.В. Хи, ак. Не, апй Х.М. ^ап§, “Ап 1тр!етеп1аНоп оГ Ше 08М Оепега1 Оа1а ЕпсгурПоп А1§опШт А5,” СН1ЫАСКУРТ ’94, Х1Й1ап, СЫпа, 11-15 Ыоу 1994, рр. 287-291. (1п СЫпезе.) 1623. М. Уа§1за\уа, “А Ые\у МеШой Гог Кеа!121п§ РиЬ!1с-Кеу СгурЮзузЮт,” СгурЮ!о§1а, у. 9, п. 4, Ос1 1985, рр. 360-380. 1624. С.Н. Уап§, “Мойи1аг Аг1ШтеНс А1§опШтз Гог 8таг1 Сагйз,” 1Е1СЕ йарап, ТесЬтса1 КероП, 18ЕС92-16, 1992. 1625. С.Н. Уап§ апй Н. Моп1а, “Ап ЕГПЫеп! Мойи!аг- МиЫрНсаНоп А1§опШт Гог 8таП-Сагй 8оЙууаге 1тр1етеп1аНоп,” 1Е1СЕ йарап, ТесЬп1са1 КероП, 18ЕС91-58, 1991. 1626. ЬН. Уап§, К.С. 2еп§, апй (}.В. 01, “Оп Ше СопзПисНоп оГ Ьаг^е 8-Вохез,” СН1ЫАСКУРТ ’94, Х1Й1ап, СЬша, 11-15 Ыоу 1994, рр. 24-32. (1п СЬ1пезе.) 1627. А.С.-С. Уао, “РгоЮсо!з Гог 8есиге СотрШаНопз,” РгосееЙ1П§з оГ Ше 23гй ШЕЕ Зутрозшт оп Ше РоипйаНопз оГ СотриЮг 8с1епсе, 1982, рр. 160-164.
796 Прикладная криптография 1628. В. Уее, “ЫзЫ^ Зесиге Соргосеззогз,” РЬ.О. ЫззегГаНоп, 8сЬоо1 оГ Сотри*ег 8с1епсе, Сате§!е Ме11оп Ытуегзку, Мау 1994. 1629. 8.-М. Уеп, “Оез1§п апс! Сотри*аНоп оГ РиЬНс Кеу Сгур*озуз*етз,” РЬ.О. ЫззейаНоп, ЫаНопа1 СЬеп§ Нип§ Ытуегз1*у, Арг 1994. 1630. 8.-М. Уеп апс! С.-8. Ьа1, “Ыеуу 01§ка1 8|§па*иге ЗсЬете Вазес! оп Ые 01зсге*е Ьо^апЫт,” Е1ес*гошсз ЬеПегз, V. 29, п. 12, 1993, рр. 1120— 1121. 1631. К. Уш апс! К. Ре1егзоп, “А 8Ы§1е-СЫр УЬ81 1тр1етеп*аНоп оГ Ые 01зсге*е ЕхропепПа1 РиЪНс-Кеу 018*пЬиНоп 8уз*ет,” 1ВМ 8уз*етз .1оита1, V. 15, п. 1, 1982, рр. 102-116. 1632. К. Уш апс! К. Ре*егзоп, “А 8Ы§1е-СЫр УЬ81 1тр1етеп*аНоп оГ 1Ье 01зсге*е ЕхропепНа! РиЬПс-Кеу 013*пЬиНоп 8уз*ет,” Ргосеект^з оГ Ооуеттеп* МюгоЫгсш* АррПсаПопз СопГегепсе, 1982, рр. 18-23. 1633. Н.У. Уоит, 8.Ь. Ьее, апс! М.У. ЯЬее, “РгасНса1 Рго*осо1з Гог Е1ес*гопю СазЬ,” РгосееНЫ§з оГ Ые 1993 Когеа-Ырап \УогкзЬор оп ЫГогтаНоп 8есип*у апс! Сгур*о§гарЬу, 8еои1, Когеа, 24-26 Ос* 1993, рр. 10-22. 1634. М. Уип§, “Сгур*орго*осо1з: 8иЬзспрНопз *о а РиЬНс Кеу, Ые 8есге* В1оскт§, апс! Ые Ми!Н- Р1ауег Меп*а1 Рокег Оагпе,” Акуапсез т Сгур*о1о§у: РгосеекЫ^з оГ СЯУРТО 84, 8рпп§ег-Уег!а§, 1985,439-453. 1635. О. Уиуа1, “Но\у *о 8\утк1е ЯаЫп,” Сгур*о1о§1а, V. 3, п. 3,Ы1 1979, рр. 187-190. 1636. К.С. 2еп§ апк М. Ниап§, “Оп Ые Ыпеаг Зупкготе МеЫок Ы Сгур*апа1уз15,” Акуапсез Ы Сгур*о1о&у—СЯУРТО ’88 Ргосеект^з, 8рпп§ег-Уег!а§, 1990, рр. 469-478. 1637. К.С. 2еп§, М. .Ниап§, апк Т.Я.Ы. Яао, “Ап 1тргоуек Ыпеаг А1§оп*Ьт Ы Сгур*апа1уз18 \укЬ АррПсаПопз,” Акуапсез Ы Сгур*о1о§у— СЯУРТО ’90 Ргосеект^з, 8рпп§ег-Уег1а§, 1991, рр. 34-47. 1638. К.С. 2еп&, С.-Н. Уап§, апк Т.Я.Ы. Яао, “Оп Ые Ыпеаг Сопз151епсу Тез* (ЬСТ) Ы Сгур*апа1уз15 \укЬ АррПсаПопз,” Акуапсез Ы Сгур*о1о§у— СЯУРТО *89 Ргосеект§з, 8рпп§ег-Уег1а§, 1990, рр. 164-174. 1639. К.С. 2еп§, С.-Н. Уап§, Э.-У. \Уе1, апк Т.Я.Ы. Яао, “Рзеикогапкот В к Оепега*огз т 8*геат- С1рЬег Сгур*о§гарЬу,” ШЕЕ СотрШег, у. 24, п. 2, РеЬ 1991, рр. 8-17. 1640. М. 2Ьап§, 8.Е. Тауагез, апк Ь.Ь. СатрЬеИ, “ЫГогтаНоп Ьеака^е оГ Воо1еап РипсНопз апк Из Яе1аНопзЫр *о ОЫег Сгур*о&гарЫс СгЬепа,” Ргосеект^з оГ Ые 2пк Аппиа1 АСМ СопГегепсе оп СотрШег апк СоттитсаНопз 8есип*у, АСМ Ргезз, 1994, рр. 156-165. 1641. М. 2Ьап§ апк О. Х1ао, “А МоЫПек Оез^п СгЬепоп Гог 8*геат С1рЬегз,” СН1ЫАСЯУРТ ’94, Х1к1ап, СЫпа, 11-15 Ыоу 1994, рр. 201— 209. (1п СЫпезе.) 1642. У. 2Ьеп§, Т. Ма*зито*о, апк Н. 1та1, “ОиаП*у ЬеПуееп *ууо Сгур*о§гарЫс РптШуез,” Рарегз оГ ТесЬшса1 Огоир Гог ЫГогтаНоп 8есигку, 1Е1СЕ оГ Ырап, Маг 1989, рр. 47-57. 1643. У. 2Ьеп§, Т. Ма*зито*о, апк Н. 1та1, “1тро551ЫН*у апк ОрНтаП*у ЯезиЬз т Сопз*гисНп§ Рзеикогапкот Регти1аНопз,” Акуапсез т Сгур*о1о§у—ЕЫЯОСЯУРТ ’89 Ргосеект^з, 8рпп§ег-Уег!а§, 1990, рр. 412-422. 1644. У. 2Ьеп§, Т. Ма*зито*о, апк Н. 1тш, “Оп Ые Сопз*гисНоп оГ В1оск С1рЬегз РгоуаЫу 8есиге апк Ыо* Яе1ут& оп Апу Опргоуек НуроЫезез,” Акуапсез т Сгур*о1о§у—СЯУРТО ’89 Ргосеект^з, 8рпп§ег-Уег1а§, 1990, рр. 461-480. 1645. У. 2Ьеп§, Т. Ма*зито*о, апк Н. 1тш, “ОиаП*у ЬеНуееп *\уо Сгур*о§гарЫс РпгтНуез,” Ргосеект§з оГ Ые 8Ы 1п*етаНопа1 СопГегепсе оп АррПек А1§еЬга, А1§еЬга1с А1§опЫтз апк Еггог-СоггесНп§ Сокез, 8рг1П§ег-Уег1а§, 1991, рр. 379-390. 1646. У. 2Ыеп§, I. Р1ергтук, апк I. 8еЬеггу, “НАУАЬ— А Опе-^ау НазЬ1п§ А1§огкЬт \У1*Ь Уаг1аЫе Ьеп^Ы оГ Ои*ри1,” Акуапсез 1п Сгу*о!о§у— АЫ8СЯУРТ ’92 Ргосеек1п§з, 8рппёег-Уег1а§, 1993, рр. 83-104. 1647. N. 21ег1ег, “Ь1пеаг Яесигпп§ Зециепсез,” Ыита! 8ос. ЫкизЬ Арр1. МаЫ., у. 7, п. 1, Маг 1959, рр. 31-48. 1648. N. 21ег1ег, “Рпт1Нуе Тппогшак \УЬозе Ое§гее 1з а Мегзеппе Ехропеп*,” ЫГогтаНоп апк Соп1го1, у. 15, 1969, рр. 67-69. 1649. N. 2|ег!ег апк I. ВпИЬаП, “Оп РптШуе Тппот1а1з (ток 2),” ЫГогтаНоп апк Соп1го1, у. 13, п. 6, Оес 1968, рр. 541-544. 1650. N. 21ег1ег апк \У.Н. МП1з, “Ргокис*з оГ Ыпеаг Яесигпп^ 8еяиепсез,” 1оита1 оГ А1§еЬга, у. 27, п. 1, Ос* 1973, рр. 147-157. 1651. С. 21ттег, “РегГес* 01ЬЬепзЬ,” 018СОУег, у. 13, п. 12, Оес 1992, рр. 92-99. 1652. Р.Я. 2Пттегтапп, ТЬе ОГПс1а1 РОР Ызег’з Ошке, Воз*оп: М1Т Ргезз, 1995. 1653. Р.Я. 2Пттегтапп, РОР 8оигсе Соке апк 1п*ета1з, Воз*оп: М1Т Ргезз, 1995.
Содержание Предисловие Уитфилда Диффи 5 Введение 9 Как читать эту книгу 10 Благодарности 12 Об авторе 14 ГЛАВА 1. Основные понятия 15 1.1. Терминология 15 Отправитель и получатель 15 Сообщения и шифрование 15 Проверка подлинности, целостность и неотрицание авторства 16 Алгоритмы и ключи 17 Симметричные алгоритмы 18 Алгоритмы с открытым ключом 19 Криптоанализ 19 Стойкость алгоритмов 22 Исторические термины 24 1.2. Стеганография 24 1.3. Подстановочные и перестановочные шифры 25 Подстановочные шифры 25 Перестановочные шифры 27 Роторные машины 27 Для дальнейшего чтения 28 1.4. Простой ХОР 29 1.5. Одноразовые блокноты 30 1.6. Компьютерные алгоритмы 33 1.7. Большие числа 33 ЧАСТЬ I. КРИПТОГРАФИЧЕСКИЕ ПРОТОКОЛЫ 37 ГААВА 2. Основные элементы протоколов 38 2.1. Понятие протокола 38 Назначение протоколов 39 Участники 40 Протоколы с посредником 40 Протоколы с арбитром 43 Самодостаточные протоколы 44 Атаки на протоколы 44 2.2. Организация связи с помощью симметричной криптографии 45
798 Прикладная криптография 2.3. Однонаправленные функции 46 2.4. Однонаправленные хэш-функции 47 Коды проверки подлинности сообщения 48 2.5. Организация связи с помощью криптографии с открытым ключом 49 Смешанные (гибридные) криптосистемы 50 Головоломки Меркла 52 2.6. Цифровые подписи 52 Подписание документов с помощью симметричных криптосистем и посредника 53 Деревья цифровых подписей 55 Подписание документов с помощью криптографии с открытым ключом 55 Подписание документов с метками времени 56 Подписание документов с помощью криптографии с открытым ключом и однонаправленных хэш-функций 56 Алгоритмы и терминология 57 Многократные подписи 58 Неотрицание авторства и цифровые подписи 58 Сферы применения цифровых подписей 59 2.7. Цифровые подписи плюс шифрование 59 Повторная отсылка принятого сообщения 60 Защита от атаки при повторной отсылке сообщения 61 Атаки на криптографию с открытым ключом 62 2.8. Генераторы случайных и псевдослучайных последовательностей 63 Псевдослучайные последовательности 63 Криптографически стойкие псевдослучайные последовательности 64 Истинно случайные последовательности 65 ГЛАВА 3. Основные протоколы 67 3.1. Обмен ключами 67 Обмен ключами средствами симметричной криптографии 67 Обмен ключами средствами криптографии с открытым ключом 67 Атака «человек посередине» 68 Протокол взаимоблокировки 69 Использование цифровых подписей при обмене ключами 70 Одновременная передача ключей и сообщений 71 Широковещательная рассылка ключей и сообщений 71 3.2. Аутентификация 72 Аутентификация с помощью однонаправленных функций 72 Атака по словарю и привязка 72 Программа ЗКЕУ 73 Аутентификация средствами криптографии с открытым ключом 74 Взаимная аутентификация по протоколу взаимоблокировки 75 Протоколы 5КЮ 76 Подтверждение подлинности сообщений 77 3.3. Аутентификация и обмен ключами 77
Содержание 799 Протокол \ЛЛс1е-Мои1Ь Ргод 78 Протокол УаЬа1от 78 Протокол Нидхема-Шрёдера 79 Протокол Отвея-Рииса 80 Протокол КегЬегоз 81 Протокол Ньюмана-Стабблбайна 82 Протокол РАЗЗ 83 Протокол Деннинга-Сакко 84 Протокол Ву-Лама 85 Прочие протоколы 86 Выводы 86 3.4. Формальный анализ протоколов проверки подлинности и обмена ключами 86 3.5. Криптография с несколькими открытыми ключами 90 Широковещательная передача сообщения 91 3.6. Разбиение секрета 91 3.7. Разделение секрета 93 Разделение секрета с мошенниками 94 Разделение секрета без помощи Трента 94 Разделение секрета без раскрытия долей 95 Подтверждаемое разделение секрета 95 Схемы разделения секрета с мерами предупреждения 95 Разделение секрета с вычеркиванием из списка 95 3.8. Криптографическая защита баз данных 96 ГЛАВА 4. Промежуточные протоколы 97 4.1. Службы меток времени 97 Постановка метки времени с помощью посредника 97 Улучшенный протокол с посредником 98 Протокол связывания 98 Распределенный протокол 99 Дальнейшее развитие 100 4.2. Скрытый канал 101 Применения скрытого канала 102 Подписи, свободные от скрытого канала 102 4.3. Неоспоримые цифровые подписи 103 4.4. Подписи, подтверждаемые доверенным лицом 105 4.5. Подписи по доверенности 105 4.6. Групповые подписи 106 Групповые подписи с доверенным посредником 107 4.7. Подписи с обнаружением подделки 107 4.8. Вычисления с зашифрованными данными 108 4.9. Вручение битов на хранение 108 Вручение битов средствами симметричной криптографии 109 Вручение битов с использованием однонаправленных функций 110
800 Прикладная криптография Вручение битов с помощью генераторов псевдослучайных последовательностей 111 Блобы 111 4.10. Подбрасывание монеты «по телефону» 111 Подбрасывание монеты с помощью однонаправленных функций 113 Подбрасывание монеты с помощью криптографии с открытым ключом 113 Бросок монеты в колодец 114 Генерация ключей подбрасыванием монеты 115 4.11. Мысленный покер 115 Мысленный покер с тремя игроками 115 Атаки на протоколы мысленного покера 117 Анонимное распределение ключей 117 4.12. Однонаправленные сумматоры 119 4.13. Раскрытие секретов «все или ничего» 120 4.14. Депонирование ключей 120 Политические аспекты депонирования ключей 122 ГЛАВА 5. Развитые протоколы 125 5.1. Доказательства с нулевым разглашением 125 Базовый протокол с нулевым разглашением 125 Изоморфизм графов 128 Гамильтоновы циклы 129 Параллельные доказательства с нулевым разглашением 130 Неинтерактивные доказательства с нулевым разглашением 130 Общие замечания 132 5.2. Идентификация с помощью доказательств с нулевым разглашением 133 Проблема гроссмейстера 133 Мошенничество мафии 134 Обман, выполненный террористами 134 Возможные решения 135 Обман с несколькими лицами 135 Паспорта напрокат 135 Доказательство членства. 136 5.3. Подписи «вслепую» „ 136 Совершенно слепые подписи 136 Подписи «вслепую» 137 Патенты 139 5.4. Личностная криптография с открытым ключом 140 5.5. Передача с забыванием 141 5.6. Подписи с забыванием 142 5.7. Одновременное подписание контракта 143 Подписание контракта через посредника 143 Одновременное подписание контракта без посредника при личной встрече 143 Одновременное подписание контракта без посредника и личной встречи 144
Содержание 801 Одновременное подписание контракта без посредника средствами криптографии 145 5.8. Заказная электронная почта 147 5.9. Одновременный обмен секретами 149 ГЛАВА в. Эзотерические протоколы 151 6.1. Тайное голосование 151 Упрощенный протокол голосования 1 151 Упрощенный протокол голосования 2 151 Голосование через подписи «вслепую» 152 Выборы с двумя избирательными комиссиями 153 Выборы с одной центральной комиссией 155 Улучшенная система выборов с одной центральной комиссией 155 Выборы без центральной комиссии 156 Другие схемы выборов 160 6.2. Тайные многосторонние вычисления 161 Протокол 1 161 Протокол 2 162 Протокол 3 162 Протокол 4 163 Безусловно-тайные многосторонние протоколы 164 Тайное вычисление схемы 164 6.3. Широковещательная передача анонимных сообщений 164 6.4. Цифровые деньги 166 Протокол 1 167 Протокол 2 168 Протокол 3 169 Протокол 4 170 Цифровые деньги и идеальное преступление 172 Реальные цифровые деньги 173 Другие протоколы цифровых денег 173 Анонимные кредитные карточки 175 ЧАСТЬ 2. МЕТОДЫ КРИПТОГРАФИИ 177 ГЛАВА 7. Длина ключей 178 7.1. Длина симметричных ключей 178 Оценка продолжительности и стоимости лобовой атаки 179 Программы-взломщики 181 Нейронные сети 182 Вирусы 182 Китайская лотерея 183 Биотехнология 184 Термодинамические ограничения 185
802 Прикладная криптография 7.2. Длина открытого ключа 186 Вычисления с помощью молекул ДНК 192 Квантовые вычисления 193 7.3. Сравнение длин симметричных и открытых ключей 194 7.4. Парадокс «дней рождений» и однонаправленные хэш-функции 195 7.5. Какой длины должен быть ключ? 195 7.6. Будьте бдительны! 197 ГЛАВА 8. Управление ключами 199 8.1. Генерация ключей 200 Сокращенные пространства ключей 200 Неправильно выбранные ключи 201 Случайные ключи 203 Ключевые фразы 204 Стандарт генерации ключей Х9.17 205 Генерация ключей Министерством обороны США 206 8.2. Нелинейные пространства ключей 206 8.3. Пересылка ключей 207 Распределение ключей в крупных сетях 208 8.4. Проверка ключей 209 Обнаружение ошибок во время передачи ключей 210 Обнаружение ошибок ключей во время расшифрования 210 8.5. Использование ключей 211 Контроль использования ключей 211 8.6. Обновление ключей 212 8.7. Хранение ключей 212 8.8. Резервные копии ключей шифрования 213 8.9. Скомпрометированные ключи 214 8.10. Время жизни ключей 215 8.11. Уничтожение ключей 217 8.12. Управление ключами в системах с открытым ключом 217 Сертификаты открытых ключей 218 Децентрализованное управление ключами 219 ГЛАВА 9. Типы алгоритмов и режимов шифрования 221 9.1. Режим электронной кодовой книги 221 Дополнение блоков 222 9.2. Повтор блока 223 9.3. Режим сцепления блоков шифртекста 225 Вектор инициализации 226 Дополнение блоков 227 Распространение ошибки 228 Проблемы безопасности 229 9.4. Потоковые шифры 229
Содержание 803 9.5. Самосинхронизирующиеся потоковые шифры 231 Проблемы безопасности 232 9.6. Режим обратной связи по шифртексту 232 Вектор инициализации 234 Распространение ошибки 234 9.7. Синхронные потоковые шифры 234 Атака вставкой 235 9.8. Режим обратной связи по выходу 236 Вектор инициализации 237 Распространение ошибки 237 Проблемы безопасности в режиме ОРВ 238 Потоковые шифры в режиме ОРВ 238 9.9. Режим счетчика 239 Потоковые шифры в режиме счетчика 239 9.10. Другие режимы блочных шифров 240 Режим сцепления блоков 240 Режим сцепления блоков шифра с распространением ошибки 240 Сцепление блоков шифртекста с контрольной суммой 241 Нелинейная обратная связь по выходу 241 Другие режимы шифрования 241 9.11. Выбор режима шифрования 242 9.12. Чередование 244 9.13. Сравнение блочных и потоковых шифров 245 ГЛАВА 10. Использование алгоритмов 247 10.1. Выбор алгоритма 248 Экспорт алгоритмов 249 10.2. Сравнение криптографии с открытым ключом и симметричной криптографии 250 10.3. Шифрование каналов связи 251 Канальное шифрование 251 Оконечное шифрования 253 Объединение двух методов 254 10.4. Шифрование данных для хранения 255 Разыменование ключей 256 Шифрование на файловом уровне или на уровне драйверов 256 Обеспечение произвольного доступа к зашифрованному диску 258 10.5. Сравнение аппаратного и программного шифрования 259 Аппаратное шифрование 259 Программное шифрование 260 10.6. Сжатие, кодирование и шифрование 261 10.7. Обнаружение зашифрованных данных 262 10.8. Скрытие шифртекста в шифртексте 263 10.9. Уничтожение информации 264
804 Прикладная криптография ЧАСТЬ 3. КРИПТОГРАФИЧЕСКИЕ АЛГОРИТМЫ 267 ГААВА 11. Математические основы 268 11.1. Теория информации 268 Энтропия и неопределенность 268 Энтропия языка 269 Стойкость криптосистем 269 Расстояние единственности 270 Теория информации на практике 271 Рассеивание и перемешивание 272 11.2. Теория сложности 272 Сложность алгоритмов 273 Сложность задач 274 ЫР-полные задачи 277 11.3. Теория чисел 277 Модулярная арифметика 277 Простые числа 280 Наибольший общий делитель 281 Обратные значения по модулю 282 Вычисление коэффициентов 285 Малая теорема Ферма 285 Функция Эйлера 285 Китайская теорема об остатках 286 Квадратичные вычеты 288 Символ Лежандра 289 Символ Якоби 289 Целые числа Блюма 291 Образующие 291 Вычисления в поле Галуа 292 11.4. Разложение на множители 294 Квадратные корни по модулю п 296 11.5. Генерация простых чисел 296 Тест Соловея-Штрассена 297 Тест Леманна 298 Тест Рабина-Миллера 298 Практические соображения 299 Сильные простые числа 300 11.6. Дискретные логарифмы в конечном поле 300 Вычисление дискретных логарифмов в конечной группе 301 ГААВА 12. Алгоритм йЕ5 303 12.1. Введение 303 Разработка стандарта 303
Содержание 805 Принятие стандарта 305 Аттестация и сертификация оборудования ОЕЗ 306 События 1987 года 307 События 1993 года 307 12.2. Описание ОЕЗ 308 Схема алгоритма 310 Начальная перестановка 311 Преобразования ключа 311 Расширяющая перестановка 312 Подстановка с помощью 3-блоков 313 Перестановка с помощью Р-блоков 316 Заключительная перестановка 316 Расшифрование в ОЕЗ 316 Режимы работы ОЕЗ 317 Аппаратные и программные реализации ОЕЗ 317 12.3. Стойкость ОЕЗ 319 Слабые ключи 320 Комплементарные ключи 322 Алгебраическая структура 322 Длина ключей 323 Число раундов 324 Проектирование 3-блоков 324 Дополнительные результаты 325 12.4. Дифференциальный и линейный криптоанализ 325 Дифференциальный криптоанализ 325 Криптоанализ на основе связанных ключей 331 Линейный криптоанализ 331 Дальнейшие направления развития 334 12.5. Практические критерии проектирования 334 12.6. Варианты алгоритма ОЕЗ 335 Многократный алгоритм ОЕЗ 335 Алгоритм ОЕЗ с независимыми подключами 335 Алгоритм 0Е5Х 336 Алгоритм СПУРТ(З) 336 Обобщенный алгоритм ОЕЗ 337 Алгоритм ОЕЗ с измененными 3-блоками 338 Алгоритм РЮЕЗ 339 Алгоритм зпОЕЗ 339 ОЕЗ с зависящими от ключа 3-блоками 341 12.7. Насколько стоек ОЕЗ сегодня 342 ГЛАВА 13. Другие блочные шифры 343 13.1. Алгоритм 1_исКег 343 13.2. Алгоритм Мабгуда 344 Описание алгоритма Мабгуда 345
806 Прикладная криптография Криптоанализ алгоритма Мас1гуда 346 13.3. Алгоритм Ые\лЮЕЗ 346 13.4. Алгоритм РЕАЬ 348 Описание алгоритма РЕАЬ 348 Криптоанализ алгоритма РЕАЬ 351 Патенты 351 13.5. Алгоритм РЕООС 352 Алгоритм РЕООС III 353 Патенты и лицензии 354 13.6. Алгоритм ЮК1 354 Алгоритм ЮК191 354 Описание алгоритма 1_ОК191 355 Криптоанализ алгоритма 1_ОК191 356 Патенты и лицензии 356 13.7. Алгоритмы КШи и КЬаТге 357 Алгоритм КЬи(и 357 Алгоритм КИаТге 358 Патенты 358 13.8. Алгоритм РС2 359 13.9. Алгоритм ЮЕА 360 Обзор алгоритма ЮЕА 360 Описание алгоритма ЮЕА 361 Скорость исполнения алгоритма ЮЕА 363 Криптоанализ алгоритма ЮЕА 364 Режимы работы и варианты ЮЕА 365 Предостережение пользователям 366 Патенты и лицензии 366 13.10. Алгоритм ММВ 367 Стойкость ММВ 368 13.11. Алгоритм СА-1.1 368 13.12. 31ф]аск 369 ГЛАВА 14. И еще блочные шифры 373 14.1. Алгоритм ГОСТ 28147-89 373 Описание алгоритма ГОСТ 373 Криптоанализ алгоритма ГОСТ 375 14.2. Алгоритм САЗТ 377 14.3. Алгоритм В1о\ллПзЬ 378 Описание алгоритма В1о\лЖзЬ 379 Стойкость В1о\лЖ$11 381 14.4. Алгоритм ЗАРЕР 382 Описание алгоритма ЗАРЕР К-64 382 Алгоритм ЗАРЕР К-128 384 Стойкость ЗАРЕР К-64 384 14.5. Алгоритм ЗЛЛ/АУ 385
Содержание 807 Описание алгоритма 3-\Л/ау 385 14.6. Алгоритм СгаЬ 385 14.7. Алгоритм 8ХА1.8/МВА1- 387 14.8. Алгоритм РС5 387 14.9. Другие блочные алгоритмы 389 14.10. Теория проектирования блочных шифров 390 Сети Файстеля 391 Простые соотношения 391 Групповая структура 391 Слабые ключи 392 Устойчивость алгоритма к дифференциальному и линейному криптоанализу 392 Проектирование 8-блоков 393 Проектирование блочного шифра 395 14.11. Использование однонаправленных хэш-функций 395 Алгоритм Карна 396 Алгоритм Любы-Ракоффа ; 397 Шифр МОС 397 Стойкость шифров, основанных на однонаправленных хэш-функциях 398 14.12. Выбор блочного алгоритма 399 ГЛАВА 15. Объединение блочных шифров 401 15.1. Двойное шифрование 401 15.2. Тройное шифрование 403 Тройное шифрование с двумя ключами 403 Тройное шифрование с тремя ключами 404 Тройное шифрование с минимальным ключом 404 Режимы тройного шифрования 405 Варианты тройного шифрования 406 15.3. Удвоение длины блока 408 15.4. Другие схемы многократного шифрования 408 Двойной режим ОРВ/счетчика 409 Режим ЕСВ + ОРВ 409 Схема хОЕЗ' 409 Пятикратное шифрование 411 15.5. Уменьшение длины ключа в СйМР 411 15.6. Отбеливание 411 15.7. Каскадное применение блочных алгоритмов 412 15.8. Объединение нескольких блочных алгоритмов 413 ГААВА 16. Генераторы псевдослучайных последовательностей и потоковые шифры 415 16.1. Линейные конгруэнтные генераторы 415 Комбинирование линейных конгруэнтных генераторов 417
808 Прикладная криптография 16.2. Регистры сдвига с линейной обратной связью 419 Программные реализации РСЛОС 426 16.3. Проектирование и анализ потоковых шифров 427 Линейная сложность 428 Корреляционная стойкость 428 Другие атаки. 429 16.4. Потоковые шифры на основе РСЛОС 429 Генератор Геффе 430 Обобщенный генератор Геффе 431 Генератор Дженнингса 432 Генератор «старт-стоп» Бета-Пайпера 432 Чередующийся генератор «старт-стоп» 433 Двусторонний генератор «старт-стоп» 433 Пороговый генератор 434 Самопрореживающие генераторы 434 Многоскоростной генератор скалярного произведения 435 Суммирующий генератор 436 Генератор РМРЗО 436 Каскад Голлманна 436 Сжимающий генератор 437 Самосжимающий генератор 437 16.5 ШифрАб 437 16.6. Алгоритм НидИез ХРО/КРО 438 16.7. Алгоритм Мапо!ец 439 16.8. Алгоритм РатЬи1ап 439 16.9. Аддитивные генераторы 440 Генератор ПзИ 440 Алгоритм Р|ке 441 Алгоритм МизИ 441 16.10. Алгоритм Джиффорда 442 16.11. Алгоритм М 442 16.12. Алгоритм РК21Р 443 Стойкость алгоритма РК21Р 444 ГЛАВА 17. Другие потоковые шифры и генераторы истинно случайных последовательностей 445 17.1. Алгоритм РС4 445 17.2. Алгоритм ЗЕАЬ 446 Семейство псевдослучайных функций 446 Описание алгоритма ЗЕАЬ 447 Стойкость алгоритма ЗЕАЬ 448 Патенты и лицензии 449 17.3. Алгоритм МАКЕ 449 17.4. Регистры сдвига с обратной связью по переносу 450 17.5. Потоковые шифры на базе РСОСП 453
Содержание 809 Каскадные генераторы 453 Комбинированные генераторы РСОСП 454 Каскад РСЛОС/РСОСП с суммированием/четностью 460 Чередующиеся генераторы «старт-стоп» 460 Сжимающие генераторы 461 17.6. Регистры сдвига с нелинейной обратной связью 462 17.7. Другие потоковые шифры 463 Генератор Плесса 463 Генератор на базе клеточного автомата 463 Генератор 1/р 464 Алгоритм сгур!(1) 464 Другие схемы 464 17.8. Системно-теоретический подход к проектированию потоковых шифров 464 17.9. Сложностно-теоретический подход к проектированию потоковых шифров 466 Генератор псевдослучайных чисел Шамира 466 Генератор Блюма-Микали 466 Генератор Р8А 467 Генератор ВВ8 467 17.10. Другие подходы к проектированию потоковых шифров 468 Шифр «Рип ван Винкль» 469 Рандомизированный потоковый шифр Диффи 469 Рандомизированный потоковый шифр Маурера 469 17.11. Каскадирование нескольких потоковых шифров 470 17.12. Выбор потокового шифра 470 17.13. Генерация нескольких потоков одним генератором псевдослучайных последовательностей 471 17.14. Генераторы истинно случайных последовательностей 472 Таблицы случайных чисел 473 Использование случайного шума 474 Использование таймера компьютера 475 Измерение задержек клавиатуры 475 Смещения и корреляции 476 Извлеченная случайность 477 ГЛАВА 18. Однонаправленные хэш-функиии 481 18.1. Основы 481 Длина значений однонаправленных хэш-функций 482 Обзор однонаправленных хэш-функций 483 18.2. 8пеТги 483 Криптоанализ 8пеТги 484 18.3. Ы-хэш 485 Криптоанализ алгоритма М-хэш 487 18.4. М04 487 18.5. МР5 488 Описание функции ЬЛ05 488
810 Прикладная криптография Стойкость Мй5 493 18.6. М02 493 18.7. Алгоритм 8НА 494 Описание алгоритма 8НА 495 Стойкость 8НА 497 18.8. ГОРЕ-Л/ТО 498 18.9. НАУАЬ 498 18.10. Другие однонаправленные хэш-функции 499 18.11. Однонаправленные хэш-функции на базе симметричных блочных алгоритмов 500 Схемы, в которых длина хэш-значения равна длине блока 501 Модификация схемы Дэвиса-Майера 503 Схема Пренела-Босселаерса-Говарца-Вандевалле 503 Схема Кискате-Гиро 504 ЮК! с удвоенным блоком 504 Параллельная схема Дэвиса-Майера 505 Схемы Дэвиса-Майера типа «тандем» и «в ряд» 505 МйС-2 и МйС-4 506 Хэш-функция АР 507 Функция хэширования ГОСТ 508 Другие схемы 508 18.12. Использование алгоритмов с открытым ключом 509 18.13. Выбор однонаправленной хэш-функции 509 18.14. Коды проверки подлинности сообщения 510 СВС-МАС 510 Алгоритм МАА 511 Двунаправленный МАС 511 Методы Джунемана 511 Р1РЕ-МАС 512 I ВС-хэш 512 МАС на основе однонаправленной хэш-функции 513 МАС на основе потокового шифра 513 ГЛАВА 19. Алгоритмы с открытым ключом 515 19.1. Основы 515 Безопасность алгоритмов с открытым ключом 515 19.2. Алгоритмы на основе задачи об укладке ранца 516 Сверхвозрастающие ранцы 517 Создание открытого ключа по закрытому 518 Зашифрование 519 Расшифрование 519 Практические реализации 519 Стойкость ранцевого метода 520 Варианты ранцевых систем 520 Патенты 521
Содержание 811 19.3. Алгоритм Р5А 521 Аппаратные реализации КЗА 524 Скорость работы КЗА 525 Программные ускорители 525 Стойкость Р5А 525 Взлом Р5А на основе подобранного шифртекста 526 Атаки при использовании общего модуля 528 Раскрытие малого открытого показателя 529 Раскрытие малого секретного показателя 529 Полученные уроки 529 Атака на зашифрование и подпись 529 Стандарты 530 Патенты 530 19.4. Схема Полига-Хеллмана 530 Патенты 531 19.5. Схема Рабина 531 Схема Вильямса 532 19.6. Схема Эль-Гамаля 533 Подписи Эль-Гамаля 533 Шифрование Эль-Гамаля 535 Скорость 535 Патенты 536 19.7. Система МакЭлиса 536 Другие алгоритмы, основанные на линейных кодах, исправляющих ошибки 537 19.8. Криптосистемы на эллиптических кривых 537 19.9. ШС 538 19.10. Криптосистемы с открытым ключом на основе конечных автоматов 539 ГЛАВА 20. Алгоритмы цифровой подписи с открытым ключом 541 20.1. Алгоритм цифровой подписи ЭЗА 541 Реакция на заявление 542 Описание ЭЗА 544 Ускоряющие предварительные вычисления 546 Генерация простых чисел для йЗА 547 Шифрование Эль-Гамаля с йЗА 548 Шифрование Р5А с йЗА 549 Стойкость йЗА 549 Атаки, направленные на к 551 Опасности общих модулей 551 Скрытый канал в йЗА 551 Патенты 551 20.2. Варианты ОЗА 552 20.3. Алгоритм цифровой подписи ГОСТ 554 20.4. Схемы цифровой подписи с использованием дискретных логарифмов 555 20.5. Схема Онга-Шнорра-Шамира 558
812 Прикладная криптография 20.6. ЕЗКЗИ 558 Безопасность ЕЗЮЫ 559 Патенты 559 20.7. Клеточные автоматы 560 20.8. Другие алгоритмы с открытым ключом 560 ГЛАВА 21. Схемы идентификации 563 21.1. Схема Фейге-Фиата-Шамира 563 Упрощенная схема идентификации Фейге-Фиата-Шамира 563 Схема идентификации Фейге-Фиата-Шамира 564 Пример 565 Усовершенствования протокола 566 Схема подписи Фиата-Шамира 567 Улучшенная схема подписи Фиата-Шамира 568 Другие улучшения 568 Схема идентификации Охта-Окамото 568 Патенты 568 21.2. Схема Гиллу-Кискате 568 Схема идентификации Г иллу-Кискате 569 Схема подписи Гиллу-Кискате 569 Многократные подписи 570 21.3. Схема Шнорра 571 Протокол аутентификации 571 Протокол цифровой подписи 571 Патенты 572 21.4. Преобразование схем идентификации в схемы подписи 572 ГЛАВА 22. Алгоритмы обмена ключами 573 22.1. Алгоритм Диффи-Хеллмана 573 Алгоритм Диффи-Хеллмана с тремя и более участниками 574 Расширенный алгоритм Диффи-Хеллмана 574 Алгоритм Хьюза 575 Обмен ключей без обмена ключами 575 Патенты 576 22.2. Протокол «станция-станция» 576 22.3. Трехпроходный протокол Шамира 577 22.4. СОМЗЕТ 578 22.5. Обмен зашифрованными ключами 578 Базовый протокол ЕКЕ 578 Реализация ЕКЕ с помощью РЗА 579 Реализация ЕКЕ с помощью Эль-Гамаля 580 Реализация ЕКЕ с помощью Диффи-Хеллмана 580 Усиленная версия ЕКЕ 581 Расширенная версия ЕКЕ 581 Применения ЕКЕ 582
Содержание 813 22.6. Защищенные переговоры о согласовании ключа 583 22.7. Распределение ключей для конференц-связи и секретная широковещательная передача 584 Распределение ключей для конференц-связи 585 Протокол Татебаяши-Мацузаки-Ньюмана^ 586 ГЛАВА 23. Специальные алгоритмы для протоколов 587 23.1. Криптография с несколькими открытыми ключами 587 23.2. Алгоритмы разделения секрета 588 Схема интерполяционных полиномов Лагранжа 588 Векторная схема 589 Схема Асмута-Блума 589 Схема Карнина-Грини-Хеллмана 590 Более сложные пороговые схемы 590 Разделение секрета с мошенниками 591 23.3. Скрытый канал 592 На основе схемы Онга-Шнорра-Шамира 592 На основе схемы Эль-Гамаля 592 На основе ЕЗЮИ 594 На основе РЗА 595 Уничтожение скрытого канала в ОЗА 596 Другие схемы 597 23.4. Неоспоримые цифровые подписи 597 Преобразуемые неоспоримые подписи 599 23.5. Подписи, подтверждаемые доверенным лицом 600 23.6. Вычисления с зашифрованными данными 602 Проблема дискретного логарифма 602 23.7. Подбрасывание монеты «по телефону» ■„ 602 Бросание монеты с помощью квадратных корней 602 Бросание монеты с помощью модулярного возведения в степень 603 Бросание монеты с помощью чисел Блюма 604 23.8. Однонаправленные сумматоры 605 23.9. Раскрытие секретов «все или ничего» 605 23.10. Законные и отказоустойчивые криптосистемы 608 Законная схема Диффи-Хеллмана 608 Отказоустойчивая схема Диффи-Хеллмана 609 23.11. Доказательства знания с нулевым разглашением 610 Доказательство знания дискретного логарифма с нулевым разглашением 610 Доказательство способности вскрытия РЗА с нулевым разглашением 610 Доказательство с нулевым разглашением того, что п является числом Блюма 611 23.12. Подписи «вслепую» 612 23.13. Передача с забыванием 612 23.14. Тайные многосторонние вычисления 613 Пример исполнения протокола 614
814 Прикладная криптография 23.15. Вероятностное шифрование 615 23.16. Квантовая криптография 617 ЧАСТЬ 4. РЕАЛЬНЫЙ МИР 621 ГЛАВА 24. Примеры практических реализаций 622 24.1. Протокол компании 1ВМ для управления секретными ключами 622 Модификация схемы 623 24.2. Система М1ТРЕЫЕТ 623 24.3. Телефонам 624 Ключи 624 Телефонный звонок 625 24.4. Телефон ЗТ11-1И 626 24.5. Протокол КЕРВЕРОЗ 627 Модель, применяемая в КегЬегоз 627 Функционирование КегЬегоз 628 Удостоверения 629 Сообщения КегЬегоз версии 5 630 Получение первоначального мандата 630 Получение мандатов сервера 631 Запрос службы 631 КегЬегоз версии 4 632 Стойкость КегЬегоз 632 Лицензии 633 24.6. Система Кгур1оКтдЫ 633 24.7. Система ЗЕЗАМЕ 634 24.8. Общая криптографическая архитектура 1ВМ 634 24.9. Схема проверки подлинности 130 636 Сертификаты 636 Протоколы проверки подлинности 638 24.10. Стандарт РЕМ 639 Документы стандарта РЕМ 640 Сертификаты 641 Сообщения РЕМ 641 Безопасность РЕМ 645 Т15/РЕМ 646 К1РЕМ 646 24.11. Протокол МЗР 647 24.12. Программа РОР 647 24.13. Смарт-карты 650 24.14. Стандарты РКСЗ 651 24.15. Универсальная система электронных платежей ЦЕРЗ 653 24.16. Микросхема СИРРЕР 655
Содержание 815 24.17. Микросхема Сарз1опе 658 24.18. Безопасный телефон АТ&Т модели 3600 658 ГЛАВА 25. Политические вопросы 661 25.1. Агентство Национальной Безопасности 661 Программа ССЕР 662 25.2. Национальный центр компьютерной безопасности N050 663 25.3. Национальный институт стандартов и технологии Ы13Т 664 25.4. Корпорация П5А Оа\а ЗесигКу 668 25.5. Компания РКР 669 25.6. Международная ассоциация криптологических исследований 1АСП 670 25.7. Консорциум П1РЕ 670 25.8. Проект САРЕ 671 25.9. Регистрация алгоритмов в 150/1ЕС 9979 672 25.10. Профессиональные, промышленные и правозащитные группы 673 Центр ЕРЮ , 673 Фонд ЕРР 673 Ассоциация АСМ 673 Институт 1ЕЕЕ 673 Ассоциация 8РА 674 25.11. Телеконференция ЗсКсгур! 674 25.12. Шифропанки 674 25.13. Патенты 675 25.14. Экспортное законодательство США 675 25.15. Экспорт и импорт криптографических средств за рубежом 683 25.16. Правовые вопросы 684 Послесловие Мэтта Блейза 686 ЧАСТЬ 5. ИСХОДНЫЕ КОДЫ 689 ОЕЗ 690 ЮК191 699 ЮЕА 705 (308Т 710 ВЬСМ/ПЗН ■ 714 3-\Л/ау 721 РС5 726 А5 729 ЗЕАЬ 734 Список литературы 741 Содержание 797
Б.Шнайер ПРИКЛАДНАЯ КРИПТОГРАФИЯ Протоколы, алгоритмы, исходные тексты на языке Си Научно-технический редактор перевода П.В. Семьянов. Корректор А.Н. Левина. Верстка: О.И. Воробьева, И.Г. Колмыкова. Подписано в печать с оригинал-макета 23.01.2003 г. Формат 70x100/16. Печать офсетная. Печ. л. 51. Заказ № 6229 Доп. тираж 4 000 экз. ООО «Издательство ТРИУМФ». Лицензия серия ИД № 05434 от 20.07.01 г. Россия, 125438, Москва, а/я 18. Оптовый отдел: (095) 720-07-65. Отпечатано в полном соответствии с качеством предоставленных диапозитивов в ОАО «Можайский полиграфический комбинат» 143200, г. Можайск, ул. Мира, 93