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 основаниями, но эти цепочки выбирались не случайным образом: они умело подбирались так, чтобы «начало» цепочки ДНК, представляющей дорогу от города Р к городу К («дорога РК») стремилось соединиться с цепочкой ДНК, представляющей город Р, а «конец» дороги РК стремился соединиться с городом К. Адлеман синтезировал