Реферат Курсовая Конспект
Протоколы, алгоритмы и исходные тексты на языке С - раздел Программирование, Прикладная Криптография ...
|
Прикладная криптография
Е издание
Протоколы, алгоритмы и исходные тексты на языке С
Брюс Шнайер
Предисловие Уитфилд Диффи
История литературы по криптографии довольно любопытна. Секретность, конечно же, всегда играла важную роль, но до Первой мировой войны о важных разработках время от времени сообщалось в печати и криптогр а-фия развивалась также, как и другие специализированные дисциплины. В 1918 году в виде научного отчета ч а-стной Лаборатории Ривербэнк вышла в свет монография Вильяма Ф. Фридмана Показатель совпадений и его применения в криптографии (Index of Coincidence and Its Applications in Cryptography) [577], одна из определяющих работ 20-го столетия. И это несмотря на военный заказ, по которому была сделана эта работа. В том же году Эдвард X. Хеберн из Окленда, Калифорния, получил первый патент [710] на роторную машину, устройство, на котором основывалась военная криптография в течение почти 50 лет.
После Первой мировой войны, однако, все изменилось. Организации армии и флота Соединенных Штатов, полностью засекретив свои работы, добились фундаментальных успехов в криптографии. В течение 30 -х и 40-х годов в открытой литературе по данному предмету появлялись только отдельные основные работы и моногр а-фии, но чем дальше, тем меньше они соответствовали реальному положению дел. К концу войны переход по л-ностью завершился. Открытая литература умерла за исключением одного заметного исключения, работы Клода Шэннона "The Communication Theory of Secrecy systems" (Теория связи между секретными системами), напечатанной в 1949 году в Bell System Technical Journal [1432]. Эта статья, как и работа Фридмана в 1918 году, явилась результатом исследований Шэннона во время войны. После окончания Второй мировой войны она была рассекречена, возможно по ошибке.
С 1949 по 1967 литература по криптографии была бессодержательной. В 1967 году она пополнилась работой другого типа, историей Дэвида Кана Дешифровщики {The Codebreakers) [794]. В этой книге не было новых идей, но она содержала достаточно полную историю предмета, включая упоминание о некоторых вещах, все еще засекреченных правительством. Значение Дешифровщиков заключалось не только в значительном охвате предмета, книга имела заметный коммерческий успех и познакомила с криптографией тысячи людей, раньше и не задумывавшихся о ее существовании. Тоненьким ручейком начали появляться новые работы по криптогр а-фии.
Почти в то же время Хорста Фейстела, ранее работавшего над прибором "свой/чужой" для ВВС, на всю дальнейшую жизнь охватила страсть к криптографии, и он перешел в Уотсоновскую Лабораторию фирмы IBM, расположенную в Йорктаун Хайте, Нью-Йорк. Там он начал разработку того, что затем стало стандартом DES (U.S. Data Encryption Standard, Стандарт шифрования данных Соединенных Штатов). В начале 70-х годов IBM опубликовала ряд технических отчетов по криптографии, выполненных Фейстелом и его коллегами [1482, 1484, 552].
Таково было положение, когда в конце 1972 года я начал работать в этой области. Литература по крипт о-графии обильной не была, но в ней можно было найти ряд сверкающих самородков.
В криптографической науке есть особенность, отсутствующая в обычных академических дисциплинах: нео б-ходимость взаимодействия криптографии и криптоанализа. Причиной этого является отсутствие требований к передаче реальной информации, следовательно, нетрудно предложить систему, которая кажется непогрешимой. Многие академические разработки настолько сложны, что будущий криптоаналитик не знает с чего начать. О б-наружить дыры в этих проектах намного сложнее, чем разработать их. В результате невозможно соревнование, являющееся одним из сильнейших мотивов в академических исследований.
Когда Мартин Хеллман и я в 1975 году предложили криптографию с открытыми ключами [496], одним из косвенных аспектов нашего предложения было появление проблемы, решение которой не кажется простым. Теперь честолюбивый проектировщик мог создать что-то - вполне разумную криптосистему, решающую более обширные задачи, чем простое превращение значимого текста в чепуху. В результате значительно возросло число людей, занимающихся криптографией, число проводимых встреч и число опубликованных книг и статей.
В речи по поводу присуждения мне совместно с Мартином Хеллманом премии Дональда Е. Финка (присуждаемой за лучшую пояснительную статью в журнале IEEE) я сказал, что, написав "Privacy and Authentication" ("Секретность и удостоверение подлинности"), я получил опыт, который необычен даже для выдающи х-ся ученых, получивших премии IEEE. Я написал статью, которую я хотел бы изучить, когда я впервые серьезно заинтересовался криптографией, и которую не смог найти. Если бы я сегодня отправился в Стэнфордскую би б-лиотеку и собрал бы современные работы по криптографии, я, возможно, получил бы представление о предмете гораздо раньше. Но осенью 1972 года были доступны только несколько классических работ и ряд туманных технических отчетов.
У сегодняшнего исследователя нет такой проблемы. Сегодня основная сложность состоит в выборе, с чего
начать среди тысяч статей и десятков книг. А сегодняшние программисты и инженеры, которые просто хотят использовать криптографию? К каким источникам им обращаться? До сих пор необходимо было проводить долгие часы, выискивая научную литературу и изучая ее, прежде чем удавалось начать разработку криптогр а-фических приложений, так гладко описанных в популярных статьях.
Именно этот промежуток и призвана заполнить Прикладная криптография Брюса Шнайера. Начав с целей засекречивания передачи данных и элементарных примеров программ для достижения этих целей, Шнайер ра з-ворачивает перед нами панораму результатов 20 лет открытых исследований. Содержание книги полностью определяется ее названием, вы найдете в ней описание различных приложений, от засекречивания телефонного разговора до электронных денег и криптографического обеспечения выборов.
Не удовлетворенный простым изложением алгоритмов и описанием кода, Шнайер включил в книгу обсу ж-дение различных мировых организаций, связанных с разработкой и применением криптографических средств, от Международной ассоциации криптологических исследований до NSA (National Security Agency, Агентство национальной безопасности).
Когда на рубеже 70-х и 80-х годов возрос общественный интерес к криптографии, NSA, официальный крип-тографичекий орган США, предприняло ряд попыток подавить этот интерес. Первой такой попыткой было письмо старого сотрудника NSA, по видимому действовавшего по своему усмотрению. Письмо было послано в IEEE и предупреждало, что публикация материалов по криптографии является нарушением Правил междун а-родной продажи оружия (International Traffic in Arms Regulations, ITAR). Эта точка зрения, как оказалось, не поддерживаемая самими правилами, в явном виде содержащими льготы для публикуемых материалов, создала неожиданную рекламу использованию криптографии и Семинару по теории информации 1977 года.
Более серьезная попытка была предпринята в 1980 году, когда NSA финансировало изучение вопроса Американским советом по образованию с целью убедить Конгресс узаконить контроль над публикациями в области криптографии. Результаты, оказавшиеся далекими от ожиданий NSA, привели к программе добровольного рецензирования работ по криптографии. От исследователей потребовали перед публикацией запрашивать мнение NSA, не принесет ли раскрытие результатов исследований вред национальным интересам.
К середине 80-х годов основным объектом внимания стала не теория, а практика криптографии. Сущее т-вующие законы дают NSA право с помощью Госдепартамента регулировать экспорт криптографического об о-рудования. Так как бизнес все больше и больше принимает международный характер и американская часть м и-рового рынка уменьшается, возрастает желание использовать единый продукт и для внутреннего, и для внешн е-го рынка. Такие продукты являются субъектами контроля над экспортом, и поэтому NSA получило возможность контролировать не только экспортируемые криптографические продукты, но и продаваемые в Соединенных Штатах.
В то время, когда писались эти строки, возникло новое препятствие для общественного использования кри п-тографии. Правительство дополнило широко опубликованный и используемый алгоритм DES засекреченным алгоритмом, реализованным в микросхемах памяти, независящей от времени. Эти микросхемы будут содержать кодифицированный механизм правительственного контроля. Отрицательные аспекты такой програ м-мы-троянского коня простираются от потенциально губительного раскрытия тайны лич ности до высокой стоимости аппаратной модернизации продуктов, ранее реализованных программно. Таким образом, предлагаемое нововведение не вызвало энтузиазма и подверглось широкой критике, особенно со стороны независимых кри п-тографов. Ряд людей, однако, видят свое будущее в программировании, а не в политике и удваивают свои ус и-лия, стремясь представить миру мощные средства криптографии.
Значительное отступление от возможности того, что закон о контроле над экспортом отменит Первую п о-правку1, казалось было сделан в 1980 году, когда в опубликованные в Federal Register исправления ITAR вошло следующее положение: "...положение было добавлено с целью показать, что регулирование экспорта технич е-ских данных не приведет к конфликту с правами личности, определяемыми Первой поправкой". Но то, что ко н-фликт между Первой поправкой и законами о контроле над экспортом не разрешен окончательно, должно быть очевидно из заявлений, сделанных на конференции, проводимой RSA Data Security. Представитель NSA из отдела контроля над экспортом выразил мнение, что люди, публикующие криптографические программы, нах о-дятся " в серой зоне" по отношению к закону. Если это так, то именно эту "серую зону" немного осветило первое издание этой книги. Экспорт приложений для этой книги был разрешен с подтверждением того, что опублик о-ванные материалы не попадают под юрисдикцию Совета по контролю над вооружением. Однако, экспортир о-вать опубликованные программы на диске было запрещено.
Изменение стратегии NSA от попыток контролировать криптографические исследования к усилению регул и-рования в области разработки и развертывания криптографических продуктов по видимому обусловлено осо з-нанием того, что все величайшие криптографические работы не защитили ни одного бита информации. Будучи
^конституции США
поставлен в шкаф, этот том не сделает ничего нового по сравнению с предшествующими книгами и работами, но использование его содержания на рабочей станции, где пишется криптографический код, может привести к иному результату.
Уитфилд Диффи
Маунтэйн Вью, Калифорния.
Введение
Криптография бывает двух типов: криптография, которая помешает читать ваши файлы вашей младшей с е-стре, и криптография, которая помешает читать ваши файлы дядям из правительства. Эта книга о втором типе криптографии.
Если я беру письмо, кладу его в сейф где-нибудь в Нью-Йорке, затем велю Вам прочитать это письмо, то это не безопасность. Это непонятно что. С другой стороны, если я беру письмо и кладу его в сейф, затем передаю этот сейф Вам вместе с детальным описанием, передаю также сотню подобных сейфов с их комбинациями, чт о-бы Вы и лучшие "медвежатники" мира могли изучить систему замков, а вы все равно не сможете открыть сейф и прочитать письмо - вот это и есть безопасность.
В течение многих лет этот тип криптографии использовался исключительно в военных целях. Агентство н а-циональной безопасности Соединенных Штатов Америки (National Security Agency, NSA) и его аналоги в бывшем Советском Союзе, Англии, Франции, Израиле и прочих странах тратили миллиарды долларов на очень серьезную игру в обеспечение безопасности собственных линий связи, одновременно пытаясь взломать все о с-тальные. Отдельные личности, обладающие значительно меньшими средствами и опытом, были беспомощны защитить свои секреты от правительств.
В течение последних 20 лет значительно вырос объем открытых академических исследований. Пока обычные граждане использовали классическую криптографию, со времен Второй мировой войны компьютерная крипт о-графия во всем мире применялась исключительно в военной области. Сегодня искусство компьютерной крипт о-графии вырвалось из стен военных ведомств. Непрофессионалы получили возможность средства, позволяющие им обезопасить себя от могущественнейших противников, средства, обеспечивающие защиту от военных в е-домств.
А нужна ли обычному человеку такая криптография? Да. Люди могут планировать политическую кампанию, обсуждать налоги, вести незаконные действия. Они могут разрабатывать новые изделия, обсуждать рыночную политику или планировать захват конкурирующей фирмы. Они могут жить в стране, которая не соблюдает з а-прета на вторжение в личную жизнь своих граждан. Они могут делать что-либо, что не кажется им незаконным, хотя таковым и является. По многим причинам данные и линии связи должны быть личными, тайными и з а-крытыми от постороннего доступа.
Эта книга выходит в свет в беспокойное время. В 1994 году администрация Клинтона приняла Стандарт у с-ловного шифрования (Escrowed Encryption Standard), включая микросхему Clipper и плату Fortezza, и превратило Билль о Цифровой телефонии в закон. Эти инициативы пытаются увеличить возможности правительства проводить электронный контроль.
Вступают в силу некоторые опаснейшие домыслы Оруэлла: правительство получает право прослушивать личные переговоры, а с человеком, пытающимся скрыть свои секреты от правительства, может что-нибудь ел у-читься. Законодательство всегда разрешало слежку по решению суда, но впервые люди сами должны предпр и-нимать какие-то шаги, чтобы сделаться доступными для слежки. Эти инициативы не просто предложения правительства в некой туманной сфере, это упреждающая и односторонняя попытка присвоить прежде принадл е-жащие людям права.
Законопроекты о микросхеме Clipper и Цифровой телефонии не способствуют сохранению тайны, но беспо ч-венно заставляют людей считать, что правительство уважает их тайны. Те же самые власти, которые незаконно записывали телефоны Мартина Лютера Кинга, могут легко прослушать телефон, защищенный микросхемой Clipper. В недавнем прошлом полицейские власти на местах были привлечены к гражданской или уголовной ответственности за незаконное прослушивание во многих судах - в Мэриленде, Коннектикуте, Вермонте, Джорджии, Миссури и Неваде. Идея развернуть технологию, которая может привести к появлению полице й-ского государства - это плохая идея.
Дело в том, что недостаточно защитить себя законами, нам нужно защитить себя математикой. Шифров а-ние имеет слишком большое значение, чтобы оставить ее использование только правительствам .
Эта книга снабдит Вас инструментарием, позволяющим защитить ваши тайны. Передача криптографич е-ских продуктов может быть объявлена незаконной, передача информации - никогда .
Как читать эту книгу
Я написал Прикладную криптографию как живое введение в криптографию и как всеобъемлющий спр а-вочник. Я пытался сочетать читаемость текста с жертвенной точностью, но эта книга писалась не как математическая работа. Хотя я не искажал информацию умышленно, торопясь, я опускал теорию . Для интересующихся теоретическими выкладками приведены обширные ссылки на академическую литературу .
Глава 1 представляет собой введение в криптографию, описывает множество терминов, в ней кратко ра с-
сматривается докомпьютерная криптография.
Главы со 2 по 6 (Часть I) описывают криптографические протоколы - что люди могут сделать с помощью криптографии - от простых (передача шифрованных сообщений от одного человека другому) до сложных (щелканье монетой по телефону) и тайных (секретное и анонимное обращение электронных денег). Некоторые из этих протоколов очевидны, другие - удивительны. Множество людей и не представляет многие из проблем, которые может решить криптография.
Главы с 7 по 10 (Часть II) содержат обсуждение методов криптографии. Все эти четыре главы важны для самых распространенных применений криптографии. В главах 7 и 8 рассказывается о ключах: какова должна быть длина безопасного ключа, как генерировать, хранить и распределять ключи, и т.д. Управление ключами представляет собой труднейшую часть криптографии и часто является ахиллесовой пятой систем, безопасных во всем остальном. В главе 9 рассматриваются различные способы использования криптографических алгоритмов, а глава 10 описывает особенности и цели использования этих алгоритмов - как их выбирать, реализовывать и применять.
Главы с И по 23 (Часть III) описывают эти алгоритмы. Глава И представляет собой математическую базу и является обязательной только, если вы интересуетесь алгоритмами с открытыми ключами . Если вы собираетесь использовать DES (или что-то похожее), ее можно пропустить. В главе 12 обсуждается алгоритм DES, его история, безопасность и разновидности. В главах 13, 14 и 15 рассказывается о других блочных алгоритмах. Если вам нужно что-то более надежное чем DES, сразу переходите к разделам о IDEA и тройном DES. При желании узнать о группе алгоритмов, некоторые из которых могут быть безопаснее DES, прочитайте всю главу. В главах 16 и 17 обсуждаются потоковые алгоритмы. В главе 18 подробно рассматриваются однонаправленные хэш-функции, среди которых самыми являются MDS и SHA, хотя я останавливаюсь и на многих других. В главе 19 рассматриваются алгоритмы шифрования с открытым ключом, а в главе 20 - алгоритмы цифровой подписи с открытым ключом. В главе 21 обсуждаются алгоритмы идентификации с открытым ключом, а в главе 22 - алгоритмы обмена с открытым ключом. Самыми важными являются алгоритмы RSA, DSA, Фиат-Шамира (Fiat-Shamir) и Диффи-Хелмана (Diffie-Hellman). Глава 23 содержит ряд эзотерических алгоритмов и протоколов с открытым ключом, математика в этой главе достаточно сложна, так что пристегните ремни .
Главы 24 и 25 (Часть IV) переносят вас в реальный мир криптографии. В главе 24 обсуждаются некоторые современные применения алгоритмов и протоколов, в то время как глава 25 касается некоторых политических аспектов криптографии. Несомненно, эти главы не являются всеохватывающими .
В книгу также включены исходные коды 10 алгоритмов, рассмотренных в Части III. Я не смог включить весь код, который хотел, из-за его большого объема, кроме того, криптографические коды в любом случае нельзя экспортировать. (Любопытно, что Госдепартамент разрешил экспортировать первое издание этой книги с и с-ходным кодом, но не разрешил экспортировать компьютерный диск с теми же исходными кодами. Смотри р и-сунок.) Соответствующий набор дисков с исходным кодом содержит существенно больше исходных кодов, чем я смог включить в эту книгу, возможно, это самая большая подборка криптографических исходных кодов, по я-вившаяся за пределами военных ведомств. Сейчас я могу переслать эти диски с исходным кодом только гражданам США и Канады, живущим в этих странах, но, возможно, когда-нибудь все изменится. Если вы собира е-тесь использовать или попробовать эти алгоритмы, добудьте диск . Подробности на последней странице книги..
К недостаткам этой книги относится то, что из-за ее энциклопедической природы пострадала читаемость книги. Я хотел написать единый справочник для тех, кто мог встретиться с каким-либо алгоритмом в академ и-ческой литературе или при использовании какого-то продукта, и заранее извиняюсь перед теми, кто разыскивает учебное пособие. Впервые все множество сделанного в криптографии собрано под одной обложкой . Несмотря на это, соображения объема заставили меня оставить многое за пределами этой книги, я включил те темы, которые мне показались важными, практическими или интересными. Если я не мог полностью охватить тему, я приводил ссылки на соответствующие работы и статьи .
Я сделал все, что мог, пытаясь выловить и исправить все ошибки в книге, но многие люди уверяли меня, что это все равно невозможно. Конечно, во втором издании ошибок меньше, чем в первом. Перечень ошибок можно получить у меня, он также периодически рассылается в телеконференции Usenet sci.crypt. Если кто-нибудь из читателей обнаружит ошибку, пожалуйста, пусть сообщит мне об этом. Каждому, кто первый обн а-ружит данную ошибку в книге, я бесплатно пошлю диск с исходным кодом .
Благодарности
Перечень людей, приложивших руку к созданию этой книги, может показаться бесконечным, но все они до с-тойны упоминания. Мне хотелось бы поблагодарить Дона Альвареса (Don Alvarez), Росса Андерсона (Ross Anderson), Дэйва Бейленсона (Dave Balenson), Карла Бармса (Karl Barms), Стива Белловина (Steve Bellovin), Дэна Бернстайна (Dan Bernstein), Эли Байем (EH Biham), Джоан Бояр (Joan Boyar), Карен Купер (Karen Cooper), Вита Диффи (Whit Diffie), Джоан Фейгенбаум (Joan Feigenbaum), Фила Кана (Phil Karn), Нила Коблица (Neal Koblitz), Ксуейа Лай (Xuejia Lai), Тома Леранта (Tom Leranth), Майка Марковица (Mike Markowitz), Ральфа Меркла (Ralph Merkle), Билла Паттена (Bill Patten), Питера Пирсона (Peter Pearson), Чарльза Пфлегера (Charles
Pfleeger), Кена Пиццини (Ken Pizzini), Барта Пренела (Bart Preneel), Марка Риордана (Mark Riordan), Иоахима Шурмана (Joachim Schurman) и Марка Шварца (Marc Schwartz) за чтение и редактирование всего первого издания или его частей; Марка Воклера (Marc Vauclair) за перевод первого издания на французский; Эйба Абрахама (Abe Abraham), Росса Андерсона (Ross Anderson), Дэйва Бенисара (Dave Banisar), Стива Белловина (Steve Bellovin), Эли Байем (EH Biham), Мэтта Бишопа (Matt Bishop), Мэтта Блэйза (Matt Blaze), Гэри Картера (Gary Carter), Жана Комениша (Jan Comenisch), Клода Крепо (Claude Crepeau), Джоан Дэймон (Joan Daemon), Хорхе Давила (Jorge Davila), Эда Доусона (Ed Dawson), Вита Диффи (Whit Diffie), Карла Эллисона (Carl Ellison), Джоан Фейгенбаум (Joan Feigenbaum), Нильса Фергюсона (Niels Ferguson), Матта Франклина (Matt Franklin), Розарио Сеннаро (Rosario Cennaro), Дитера Колмана (Dieter Collmann), Марка Горески (Mark Goresky), Ричарда Грэйвмана (Richard Graveman), Стюарта Хабера (Stuart Haber), Джингмана Хе (Jingman He), Боба Хэйга (Bob Hague), Кеннета Айверсона (Kenneth Iversen), Маркуса Джекобсона (Markus Jakobsson), Берта Калиски (Burt Kaliski), Фила Кана (Phil Karn), Джона Келси (John Kelsey), Джона Кеннеди (John Kennedy), Ларса Кнудсена (Lars Knudsen), Пола Кочера (Paul Kocher), Джона Лэдвига (John Ladwig), Ксуейа Лай (Xuejia Lai), Аджена Ленстры (Arjen Lenstra), Пола Лейланда (Paul Leyland), Майка Марковица (Mike Markowitz), Джима Мэсси (Jim Massey), Брюса МакНейра (Brace McNair), Вильяма Хью Мюррея (William Hugh Murray), Роджера Нидхэ-ма (Roger Needham), Клифа Неймана (Clif Neuman), Кейсу Найберг (Kaisa Nyberg), Люка О'Коннора (Luke O'Connor), Питера Пирсона (Peter Pearson), Рене Перальта (Rene Peralta), Барта Пренела (Bart Preneel), Израиля Радай (Yisrael Radai), Мэтта Робшоу (Matt Robshaw), Майкла Роу (Michael Roe), Фила Рогуэя (Phil Rogaway), Эви Рубина (Avi Rubin), Пола Рубина (Paul Rubin), Селвина Рассела (Selwyn Russell), Казуе Сако (Kazue Sako), Махмуда Салмасизадеха (Mahmoud Salmasizadeh), Маркуса Стадлера (Markus Stadler), Дмитрия Титова (Dmitry Titov), Джимми Антона (Jimmy Upton), Марка Воклера (Marc Vauclair), Сержа Воденея (Serge Vaude-пау), Гидеона Ювала (Gideon Yuval), Глена Зорна (Glen Zorn) и многих безымянных правительственных служащих за чтение и редактирование всего второго издания или его частей ; Лори Брауна (Lawrie Brown), Лизу Кэндл (Leisa Candle), Джоан Дэймон (Joan Daemon), Питера Гутмана (Peter Gutmann), Алана Инсли (Alan Insley), Криса Джонстона (Chris Johnston), Джона Келси (John Kelsey), Ксуейа Лай (Xuejia Lai), Билла Лейнин-гера (Bill Leininger), Майка Марковица (Mike Markowitz), Ричарда Аутбриджа (Richard Outerbridge), Питера Пирсона (Peter Pearson), Кена Пиццини (Ken Pizzini), Кэлма Пламба (Calm Plumb), RSA Data Security, Inc., Майкла Роу (Michael Roe), Майкла Вуда (Michael Wood) и Фила Циммермана (Phil Zimmermann) за предоставленные исходные коды; Пола МакНерланда (Paul MacNerland) за создание рисунков к первому издания; Карен Купер (Karen Cooper) за редактирование второго издания; Бота Фридмана (Both Friedman) за сверку второго издания; Кэрол Кеннеди (Кэрол Kennedy) за работу над предметным указателем для второго издания ; читателей sci.crypt и почтового списка Cypherpunks за комментирование идей, ответы на вопросы и поиск ошибок первого издания; Рэнди Сюсс (Randy Seuss) за предоставление доступа к Internet; Джеффа Дантермана (Jeff Duntemann) и Джона Эриксона (Jon Erickson) за то, что помогли мне начать; семью Insley (в произвольном порядке) за стимуляцию, воодушевление, поддержку, беседы, дружбу и обеды; и AT&T Bell Labs, зажегшей меня и сделавшей возможным все это. Все эти люди помогли создать гораздо лучшую книгу, чем я бы смог создать в одиночку .
Брюс Шнайер
Оак Парк, Иллинойс
schneier@counterpane.com
Глава 1 Основные понятия
1.1 Терминология
Отправитель иполучатель
Предположим, что отправитель хочет послать сообщение получателю. Более того, этот отправитель хочет послать свое сообщение безопасно: он хочет быть уверен, что перехвативший это сообщение не сможет его пр о-честь.
Сообщения ишифрование
Само сообщение называется открытым текстом(иногда используется термин клер). Изменение вида сообщения так, чтобы спрятать его суть называется шифрованием.Шифрованное сообщение называется шифро-текстом.Процесс преобразования шифротекста в открытый текст называется дешифрированием.Эта последовательность показана на Oth.
(Если вы хотите следовать стандарту ISO 7498-2, то в английских текстах используйте термины "enchipher" вместо " encrypt" ("зашифровывать") и "dechipher" вместо " decrypt" ("дешифровывать")).
Искусство и наука безопасных сообщений, называемая криптографией,воплощается в жизнь криптографами. Криптоаналитикаминазываются те, кто постоянно используют криптоанализ,искусство и науку взламывать шифротекст, то есть, раскрывать, что находится под маской . Отрасль математики, охватывающая криптографию и криптоанализ, называется криптологией, а люди, которые ей занимаются, - криптологами.Современным криптологам приходится неплохо знать математику .
Первоначальный
Открытый текст ___________ Шифротекст ______________ открытый текст
----------------- ^Шифрование------------------------- ^Дешифрирован^]------------------- ►
Рис. 1-1. Шифрование и дешифрирование
Обозначим открытый текст как М (от message, сообщение), или Р (отplaintext, открытый текст). Это может быть поток битов, текстовый файл, битовое изображение, оцифрованный звук, цифровое видеоизображение... да что угодно. Для компьютера М - это просто двоичные данные. (Во всех следующих главах этой книги рассматриваются только двоичные данные и компьютерная криптография .) Открытый текст может быть создан для хранения или передачи. В любом случае, М - это сообщение, которое должно быть зашифровано .
Обозначим шифротекст как С (от ciphertext). Это тоже двоичные данные, иногда того же размера, что и М, иногда больше. (Если шифрование сопровождается сжатием, С может быть меньше чем М. Однако, само шифрование не обеспечивает сжатие информации.) Функция шифрования Е действует на М, создавая С. Или, в математической записи:
Е(М) = С
В обратном процессе функция дешифрирования D действует на С, восстанавливая М:
D(C) = М
Поскольку смыслом шифрования и последующего дешифрирования сообщения является восстановление пе р-воначального открытого текста, должно выполняться следующее равенство :
D(E(M)) = М
Проверка подлинности, целостность инеотрицание авторства
Кроме обеспечения конфиденциальности криптография часто используется для других функций :
— Проверка подлинности.Получатель сообщения может проверить его источник, злоумышленник не сможет замаскироваться под кого-либо.
— Целостность. Получатель сообщения может проверить, не было ли сообщение изменено в процессе доставки, злоумышленник не сможет подменить правильное сообщение ложным.
— Неотрицание авторства. Отправитель не сможет ложно отрицать отправку сообщения.
Существуют жизненно важные требования к общению при помощи компьютеров, также как существуют ана-
логичные требования при общении лицом к лицу. То, что кто-то является именно тем, за кого он себя выдает... что чьи-то документы - водительские права, медицинская степень или паспорт - настоящие ... что документ, полученный от кого-то, получен именно от этого человека... Как раз это обеспечивают проверка подлинности, целостность и неотрицание авторства.
Алгоритмы иключи
Криптографический алгоритм,также называемый шифром,представляет собой математическую функцию, используемую для шифрования и дешифрирования. (Обычно это две связанных функции: одна для шифрования, а другая для дешифрирования.)
Если безопасность алгоритма основана на сохранении самого алгоритма в тайне, это ограниченныйалгоритм. Ограниченные алгоритмы представляют только исторический интерес, но они совершенно не соответс т-вуют сегодняшним стандартам. Большая или изменяющаяся группа пользователей не может использовать такие алгоритмы, так как всякий раз, когда пользователь покидает группу, ее члены должны переходить на другой алгоритм. Алгоритм должен быть заменен и, если кто-нибудь извне случайно узнает секрет.
Что еще хуже, ограниченные алгоритмы не допускают качественного контроля или стандартизации. У ка ж-дой группы пользователей должен быть свой уникальный алгоритм. Такие группы не могут использовать открытые аппаратные или программные продукты - злоумышленник может купить такой же продукт и раскрыть алгоритм. Им приходится разрабатывать и реализовывать собственные алгоритмы. Если в группе нет хорошего криптографа, то как ее члены проверят, что они пользуются безопасным алгоритмом?
Несмотря на эти основные недостатки ограниченные алгоритмы необычайно популярны для приложений с низким уровнем безопасности. Пользователи либо не понимают проблем, связанных с безопасностью своих систем, либо не заботятся о них.
Современная криптография решает эти проблемы с помощью ключаК. Такой ключ может быть любым значением, выбранным из большого множества. Множество возможных ключей называют пространством ключей.И шифрование, и дешифрирование этот ключ (то есть, они зависят от ключа, что обозначается индексом К), и теперь эти функции выглядят как:
ЕК(М)=С
DK(C)=M
При этом выполняется следующее равенство (см -1-й):
DK(EK(M))=M
Для некоторых алгоритмов при шифровании и дешифрировании используются различные ключи (см -2-й). То есть ключ шифрования, К,, отличается от соответствующего ключа дешифрирования, К2. В этом случае:
ЕК/М)=С
DKi(C)=M
Рис. 1-2. Шифрование и дешифрирование с ключом
Ключ Ключ
шифрования дешифрирования
Открытый текст
Шифротекст
^Шифрование------------------------- ^Дешифрирование]
Первоначальный открытый текст
Рис. 1-3. Шифрование и дешифрирование с двумя различными ключами
ЕК(М)=С
ЕК(М)=С
Хотя открытый и закрытый ключи различны, дешифрирование с соответствующим закрытым ключом об о-значается как:
DK(C)=M
Иногда сообщения шифруются закрытым ключом, а дешифрируются открытым, что используется для ци ф-ровой подписи (см. раздел 2.6). Несмотря на возможную путаницу эти операции, соответственно, обозначаю т-ся как:
ЕК(М)=С
DK(C)=M
Рис. 1-4. Столбцовый перестановочный фильтр.
Например, в четырехроторной машине первый ротор может заменять "А" на " F", второй - "F" на "Y", третий - "Y" на "Е" и четвертый - "Е" на "С", "С" и будет конечным шифротекстом. Затем некоторые роторы смещаются, и в следующий раз подстановки будут другими.
Именно комбинация нескольких роторов и механизмов, движущих роторами, и обеспечивает безопасность машины. Так как роторы вращаются с различной скоростью, период для и-роторной машины равен 26п. Некоторые роторные машины также могут иметь различные положения для каждого ротора, что делает криптоан а-лиз еще более бессмысленным.
Самым известным роторным устройство является Энигма (Enigma). Энигма использовалась немцами во Второй мировой войне. Сама идея пришла в голову Артуру Шербиусу (Arthur Scherbius) и Арвиду Герхарду Дамму (Arvid Gerhard Damm) в Европе. В Соединенных Штатах она была запатентована Артуром Шербиусом [1383]. Немцы значительно усовершенствовали базовый проект для использования во время войны .
У немецкой Энигмы было три ротора, котроые можно было выбрать из пяти возможных, коммутатор, кот о-рый слегка тасовал открытый текст, и отражающий ротор, который заставлял каждый ротор обрабатывать о т-крытый текст каждого письма дважды. Несмотря на сложность Энигмы, она была взломана в течение Второй мировой войны. Сначала группа польских криптографов взломала немецкую Энигму и объяснила раскрытый алгоритм англичанам. В ходе войны немцы модифицировали Энигму, а англичане продолжали криптоанализ новых версий. Объяснение работы роторных шифров и способов их раскрытия можно найти в [794, 86, 448, 498, 446, 880, 1315, 1587, 690]. В двух следующих отчетах увлекательно рассказывается о взломе Энигмы [735, 796].
Для дальнейшего чтения
Данная книга не является книгой по классической криптографии, поэтому далее я не буду подробно остана в-ливаться на этих предметах. Прекрасными книгами по докомпьютерной криптологии являются [587, 1475]. [448] содержит современный криптоанализ шифровальных машин . Дороти Деннинг (Dorothy Denning) рассматривает многие из этих шифров в [456], а [880] содержит беспристрастный сложный математический анализ тех же самых шифров. Другим описанием старой криптографии, описывающим аналоговую криптографию, являе т-ся [99]. Прекрасный обзор выполнен в статье [579]. Великолепны также книги по исторической криптографии Дэвида Кана [794, 795, 796].
1.4 Простое XOR
XOR представляет собой операцию "исключающее или": ,Л' в языке С или g в математической нотации. Это обычная операция над битами:
0©0 = 0
0© 1 = 1
1 ©0 = 1
1 © 1 = 0
Также заметим, что:
а®а = 0
a®b®b = a
Казалось бы, запутанный алгоритм простого XOR по сути является ничем иным, как полиалфавитным ши ф-ром Вигенера. Здесь он упоминается только из-за распространенности в коммерческих программных продуктах, по крайней мере в мире MS-DOS и Macintosh [1502, 1387]. К сожалению, если о программе компьютерной безопасности заявляется, что это "патентованный" алгоритм шифрования, значительно более быстрый, чем DES, то скорее всего используется какой-то вариант следующего .
/* Использование: crypto key input_file output_file */
void main (int argc, char *argv[])
{
FILE *fl, *fo;
char *cp;
int c;
if ((cp = argv[l]) && *cp!= ' ') {
if ((fi = fopen(argvl[2], "rb")) != NULL) {
if ((fo = fopen(argv[3], "wb")) != NULL) { while ((c = getc(fi)) != EOF) { if (!*cp) cp = argv[l]; cA= *(cp++); putc(c,fo); }
fclose(fo); }
fclose(fi); }
} }
Это симметричный алгоритм. Открытый текст подвергается операции "исключающее или" вместе с ключ е-вым текстом для получения шифротекста. Так как повторное применение операции XOR восстанавливает оригинал для шифрования и дешифрирования используется одна и та же программа :
P®K = C
C®K = P
Настоящей безопасности здесь никогда не было. Этот тип шифрования легко вскрывается, даже без компь ю-тера [587, 1475]. Его взлом на компьютере занимает несколько секунд .
Предположим, что открытый текст использует английский язык. Более того, пусть длина ключа любое н е-болыпое число байт. Ниже описано, как взломать этот шифр:
1. Определим длину ключа с помощью процедуры, известной как подсчет совпадений[577]. Применим операцию XOR к шифротексту, используя в качестве ключа сам шифротекст с различными смещ е-ниями, и подсчитаем совпадающие байты. Если величина смещения кратна длине ключа, то совпадет свыше 6 процентов байтов. Если нет, то будут совпадать меньше чем 0.4 процента (считая, что обычный ASCII текст кодируется случайным ключом, для других типов открытых текстов числа будут др у-гими). Это называется показателем совпадений.Минимальное смещение от одного значения, кратного длине ключа, к другому и есть длина ключа.
2. Сместим шифротекст на эту длину и проведем операцию XOR для смещенного и оригинального шиф-ротекстов. Результатом операции будет удаления ключа и получение открытого текста, подвергнутого операции XOR с самим собой, смещенным на длину ключа. Так как в английском языке на один байт приходится 1.3 бита действительной информации (см раздел 11.1), существующая значительная избыточность позволяет определить способ шифрования.
Несмотря на это, количество поставщиков программного обеспечения, навязывающих этот игрушечный а л-горитм в качестве "почти такого же безопасного как DES", впечатляет [1387]. Именно этот алгоритм (с 160-битным повторяющимся "ключом") NSA в конце концов разрешило использовать в цифровых телефонных сотовых сетях для закрытия голоса. XOR может защитить ваши файлы от младшей сестры, но настоящего криптоаналитика задержит лишь на считанные секунды.
1.5 Одноразовые блокноты
Поверите или нет, но идеальный способ шифрования существует. Он называется одноразовым блокнотоми был изобретен в 1917 году Мэйджором Джозефом Моборном (Major Joseph Mauborgne) и Гилбертом Вернамом (Gilbert Vernam) из AT&T [794]. (Фактически одноразовый блокнот представляет собой особый случай пороговой схемы, см. раздел 3.7.) В классическом понимании одноразовый блокнот является большой неповторяющейся последовательностью символов ключа, распределенных случайным образом, написанных на кусочках бумаги и приклеенных к листу блокнота. Первоначально это была одноразовая лента для телетайпов . Отправитель использовал каждый символ ключа блокнота для шифрования только одного символа открытого текста. Шифрование представляет собой сложение по модулю 26 символа открытого текста и символа ключа из одн о-разового блокнота.
Каждый символ ключа используется только единожды и для единственного сообщения . Отправитель шифрует сообщения и уничтожает использованные страницы блокнота или использованную часть ленты . Получатель, в свою очередь, используя точно такой же блокнот, дешифрирует каждый символ шифротекста . Расшифровав сообщение, получатель уничтожает соответствующие страницы блокнота или часть ленты . Новое сообщение -новые символы ключа. Например, если сообщением является:
ONETIMEPAD а ключевая последовательность в блокноте:
TBFRGFARFM то шифротекст будет выглядеть как:
IPKLPSFHGQ так как
Q + Т mod 26 = I
N + В mod 26 = Р
Е + F mod 26 = К
и т.д.
В предположении, что злоумышленник не сможет получить доступ к одноразовому блокноту, использова н-ному для шифрования сообщения, эта схема совершенно безопасна. Данное шифрованное сообщение на вид соответствует любому открытому сообщению того же размера.
Так как все ключевые последовательности совершенно одинаковы (помните, символы ключа генерируются случайным образом), у противника отсутствует информация, позволяющая подвергнуть шифротекст криптоан а-лизу. Кусочек шифротекста может быть похож на:
POYYAEAAZX что дешифрируется как:
SALMONEGGS или на:
BXEGBMTMXM что дешифрируется как:
GREENFLUID
Повторю еще раз: так как все открытые тексты равновероятны, у криптоаналитика нет возможности определить, какой из открытых текстов является правильным. Случайная ключевая последовательность, сложенная с неслучайным открытым текстом, дает совершенно случайный шифротекст, и никакие вычислительные мощн о-сти не смогут это изменить.
Необходимо напомнить, что символы ключа должны генерироваться случайным образом . Любые попытки вскрыть такую схему сталкиваются со способом, которым создается последовательность символов ключа . Использование генераторов псевдослучайных чисел не считается, у них всегда неслучайные свойства . Если вы используете действительно случайный источник - это намного труднее, чем кажется на первый взгляд, см. ра з-дел 17.14 - это совершенно безопасно.
Другой важный момент: ключевую последовательность никогда нельзя использовать второй раз. Даже если вы используете блокнот размером в несколько гигабайт, то если криптоаналитик получит несколько текстов с перекрывающимися ключами, он сможет восстановить открытый текст . Он сдвинет каждую пару шифротекстов относительно друг друга и подсчитает число совпадений в каждой позиции. Если шифротексты смещены пр а-вильно, соотношение совпадений резко возрастет - точное значение зависит от языка открытого текста . С этой точки зрения криптоанализ не представляет труда. Это похоже на показатель совпадений, но сравниваются два различных "периода" [904]. Не используйте ключевую последовательность повторно .
Идея одноразового блокнота легко расширяется на двоичные данные. Вместо одноразового блокнота, с о-стоящего из букв, используется одноразовый блокнот из битов. Вместо сложения открытого текста с ключом одноразового блокнота используйте XOR. Для дешифрирования примените XOR к шифротексту с тем же одноразовым блокнотом. Все остальное не меняется, и безопасность остается такой же совершенной .
Все это хорошо, но существует несколько проблем. Так как ключевые биты должны быть случайными и не могут использоваться снова, длина ключевой последовательности должна равняться длине сообщения . Одноразовый блокнот удобен для нескольких небольших сообщений, но его нельзя использовать для работы по каналу связи с пропускной способностью 1.544 Мбит/с. Вы можете хранить 650 Мбайт случайных данных на CD-ROM, но и тут есть проблемы. Во первых, вам нужно только две копии случайных битов, но CD-ROM экономичны только при больших тиражах. И во вторых, вам нужно уничтожать использованные биты. Для CD-ROM нет другой возможности удалить информацию кроме как физически разрушить весь диск . Гораздо больше подходит цифровая лента.
Даже если проблемы распределения и хранения ключей решены, вам придется точно синхронизировать р а-боту отправителя и получателя. Если получатель пропустит бит (или несколько бит пропадут при передаче), сообщение потеряет всякий смысл. С другой стороны, если несколько бит изменятся при передаче (и ни один бит не будет удален или добавлен - что гораздо больше похоже на влияние случайного шума ), то лишь эти биты будут расшифрованы неправильно. Но одноразовый блокнот не обеспечивает проверку подлинности .
Одноразовые блокноты используются и сегодня, главным образом для сверхсекретных каналов связи с ни з-кой пропускной способностью. По слухам "горячая линия" между Соединенными Штатами и бывшим Советским Союзом (а действует ли она сейчас?) шифруется с помощью одноразового блокнота . Многие сообщения советских шпионов зашифрованы с использованием одноразовых блокнотов . Эти сообщения нераскрыты сегодня и навсегда останутся нераскрытыми. На этот факт не повлияет время работы суперкомпьютеров над этой
проблемой. Даже когда враги из созвездия Андромеды приземлят свои тяжелые корабли с компьютерами н е-мыслимой мощности, и они не смогут прочесть сообщения советских шпионов, зашифрованные с помощью о д-норазовых (если, конечно, они не смогут вернуться в прошлое и добыть нужные одноразовые блокноты ).
1.6 Компьютерные алгоритмы
Существует множество компьютерных алгоритмов. Следующие три используются чаще всего :
— DES (Data Encryption Standard, стандарт шифрования данных) - самый популярный компьютерный алгоритм шифрования, является американским и международным стандартом . Это симметричный алгоритм, один и тот же ключ используется для шифрования и дешифрирования .
— RSA (назван в честь создателей - Ривеста (Rivest), Шамира (Shamir) и Эдлмана (Adleman)) - самый популярный алгоритм с открытым ключом. Используется и для шифрования, и для цифровой подписи .
— DSA (Digital Signature Algorithm, алгоритм цифровой подписи, используется как часть стандарта цифр о-вой подписи, Digital Signature Standard) - другой алгоритм с открытым ключом. Используется только для цифровой подписи, не может быть использован для шифрования .
Именно эти и подобные алгоритмы описываются в этой книге .
1.7 Большие числа
На протяжении всей книги я использую различные большие числа для описания различных вещей в крипт о-графии. Так как легко заблудиться в этих числах и их значениях, физические аналоги некоторых чисел прив е-дены в 0-й.
Эти числа оцениваются по порядку величины и были отобраны из различных источников. Многие астроф и-зические значения объясняются в работе Фримана Дайсона (Freeman Dyson), "Время без конца: физика и биология в открытой Вселенной" ("Time Without End: Physics and Biology in an Open Universe") в Reviews of Modem Physics, v. 52, n. 3, July 1979, pp. 447-460. Смертность в результате автокатастроф рассчитана с помощью статистики Министерства транспорта (163 смерти миллион человек в 1993 году и для средней продолжительности жизни 69.7 года.
Табл. 1-1. Большие числа
Физический аналог
Число
Вероятность быть убитым молнией (в течение дня)
Вероятность выиграть главный приз в государственной лотерее США
Вероятность выиграть главный приз в государственной лотерее США и быть убитым молнией в течение того же дня
Вероятность утонуть (в США в течение года)
Вероятность погибнуть в автокатастрофе (в США в году)
Вероятность погибнуть в автокатастрофе (в США в течение времени жизни)
Время до следующего оледенения
Время до превращения Солнца в сверхновую звезду
Возраст планеты
Возраст Вселенной
Число атомов планеты
Число атомов Солнца
Число атомов галактики
Число атомов Вселенной
Объем Вселенной
1 из 9 миллиардов (233) 1 из 4000000 (222) 1 из261
1 из 59000 (216) 1 из 6100 (213) 1 из 88 (27) 14000 (214) лет 109 (230) лет 109 (230) лет 1010 (234) лет 1051 (2170) 1057 (2190) 1067 (2223) 1077 (2265) 1084 (2280) см 3
Если Вселенная конечна:
Полное время жизни вселенной
1011 (237) лет 1018 (261) секунд
Если Вселенная бесконечна:
Время до остывания легких звезд
Время до отрыва планет от звезд
Время до отрыва звезд от галактик
Время до разрушения орбит гравитационной радиацией
Время до разрушения черных дыр процессами Хокинга
Время до превращения материи в жидкость при нулевой температуре
Время до превращения материи в твердое тело
Время до превращения материи в черную дыру
1014 (247) лет
1015 (250) лет
1019 (264) лет
1020 (267) лет
1064 (2213) лет
1065 (2216) лет
101026 лет
101076 лет
Часть 1 КРИПТОГРАФИЧЕСКИЕ ПРОТОКО-
ЛЫ
Глава 2
Игроки
Для демонстрации работы протоколов я использую несколько игроков (см. 1-й). Первые двое - это Алиса и Боб. Они участвуют во всех двусторонних протоколах. Как правило, Алиса (Alice) начинает все протоколы, а Боб (Bob) отвечает. Если для протокола нужна третья или четвертая сторона, в игру вступают Кэрол (Ёубш) и Дэйв (Dave). Другие игроки играют специальные вспомогательные роли, они будут представлены по зже.
Протоколы с посредником
Посредник- это незаинтересованная третья сторона, которой доверено завершение протокола (см. 1-й (а)). Незаинтересованность означает, что у посредника нет заинтересованности в результате работы протокола и склонности к одной из сторон. "Доверено" означает, что все участники протокола принимают все, что скажет посредник за истину, все его действия - как правильные, и уверены в том, что посредник выполнит свою часть протокола. Посредники помогают реализовать работу протоколов взаимодействия недоверяющих друг другу сторон.
В реальном мире в качестве посредников часто выступают юристы . Например, Алиса продает незнакомому ей Бобу машину. Боб хочет заплатить чеком, но у Алисы нет способа проверить, действителен ли чек. Алиса хочет, чтобы расчет по чеку был произведен прежде, чем право собственности перейдет к Бобу . Боб, который верит Алисе не больше, чем она ему, не хочет передавать чек, не получив права собственности.
Табл. 2-1. Действующие лица
Алиса | Первый участник всех протоколов |
Боб | Второй участник всех протоколов |
Кэрол | Третий участник в протоколах с участием трех и четырех сторон |
Дэйв | Четвертый участник в протоколах с участием трех и четырех сторон |
Ева | Злоумышленник (eavesdropper) |
Мэллори | Взломщик протоколов |
Трент | Заслуживающий доверия посредник |
Уолтер | Контролер, защищает Алису и Боба в ряде протоколов |
Пегги | Свидетель |
Виктор | Проверяет подлинность |
Трент
Алиса
Боб
(а)протокол с посредником
Алиса
А
Боб
Трент
Доказател ьство Доказател ьство -'
после случившегося
(б) арбитражный протокол
Алиса
А
Боб
I (в) самодостаточный протокол
Рис. 2-1. Типы протоколов
Посредничество юриста устроит обоих. С его помощью Алиса и Боб могут выполнить следующий протокол, чтобы защитить себя от обмана:
(1) Алиса передает право собственности юристу.
(2) Боб передает чек юристу.
(3) Алиса депонирует чек.
(4) Дождавшись оплаты чека юрист передает право собственности Бобу. Если чек не оплачен в течение опр е-деленного времени, Алиса доказывает этот факт юристу, и тот возвращает право собственности Алисе.
В этом протоколе Алиса верит, что юрист не передаст Бобу право собственности до тех пор, пока чек не б у-дет оплачен, и вернет право собственности Алисе, если чек оплачен не будет. Боб верит, что юрист будет обла-дать правом собственности до тех пор, пока чек не будет оплачен, и передаст право собственности Бобу сразу же после оплаты чека. Юрист не заботится об оплате чека. Он в любом случае выполнит свою часть протокола, ведь ему заплатят в любом случае.
В этом примере юрист играет роль посредника. Юристы часто выступают в роли посредников при завеща-ниях и иногда при переговорах о контракте. Различные биржи выступают в качестве посредников между поку-пателями и продавцами.
В качестве посредника может выступить и банк - для покупки машины :
(1) Боб заполняет чек и передает его в банк.
(2) Если на счету Боба достаточно денег для покрытия чека, банк заверяет чек и возвращает его Бобу.
(3) Алиса передает Бобу право собственности, а Боб передает Алисе заверенный чек.
(4) Алиса депонирует чек.
Этот протокол работает, потому что Алиса верит банковскому свидетельству . Алиса верит, что банк сохра-нит деньги Боба для нее и не использует их для финансирования сомнительных операций с недвижимостью в
банановых республиках.
Другим общепринятым посредником является нотариус . Когда Боб получает от Алисы заверенный нотариу-сом документ, он убежден, что Алиса подписала документ по своему желанию и собственноручно . При необхо-димости нотариус может выступить в суде и засвидетельствовать этот факт .
Понятие посредника старо как мир. Всегда существовали определенные люди - вожди, жрецы и тому подо б-ное - обладавшие влиянием, позволяющим им действовать справедливо. Посредники играют определенную роль в нашем обществе, обман доверия подорвал бы занимаемое ими положение . Юристы-посредники, нару-шающие правила игра, подвергаются наказанию - например, исключению из коллегии адвокатов . Это идеаль-ная картина, в реальном мире положение, к сожалению, может отличаться от нее .
Этот идеал можно перенести на мир компьютеров, но с компьютерными посредниками существует ряд пр о-блем:
— Легко найти нейтральную третью сторону, которой можно доверять, если вы знаете посредника и можете лично увидеть его. Две стороны, относящиеся друг к другу с подозрением, с тем же подозрением отнесу т-ся и к безликому посреднику, затерянному где-то в сети.
— Компьютерная сеть должна обеспечить поддержку посредника. Занятость юристов общеизвестна, на кого в сети лягут дополнительные накладные расходы ?
— Существует задержка, присущая всем протоколам с посредником .
— Посредник должен принимать участие в каждой транзакции, являясь узким местом в крупномасштабных реализациях любого протокола. Рост числа посредников смягчит эту проблему, но вырастет и цена этой услуги.
— Так как каждый в сети должен доверять посреднику, то посредник представляет собой слабое место сети при попытке ее взлома.
Несмотря на это посредничество все еще активно используется. В протоколах с использованием посредника эту роль будет играть Трент.
Арбитражные протоколы
Используемый из-за высокой стоимости найма посредников арбитражные протокол может быть разбит на два подпротоколанижнего уровня. Первый представляет собой протокол без посредника, используемый при желании сторон выполнить протокол. Другой представляет собой протокол с посредником, приглашаемым в исключительных обстоятельствах - при наличии разногласий между сторонами . Соответствующий специальный посредник называется арбитром(см. 1-й(б)).
Арбитр, как и посредник, представляет собой незаинтересованного участника протокола, которому доверяют обе стороны. В отличие от посредника он непосредственно не принимает участия в каждой отдельной реализ а-ции протокола и приглашается только для проверки честности выполнения протокола сторонами .
Профессиональными арбитрами являются судьи. В отличие от нотариусов к судьям обращаются только при появлении разногласий. Алиса и Боб могут заключить контракт без участия судьи. Судья никогда не узнает о контракте, если одна из сторон не подаст на другую в суд . Протокол подписания контракта можно формализо-вать следующим образом:
Подпротокол без посредника (выполняется всегда):
(1) Алиса и Боб договариваются об условиях контракта.
(2) Алиса подписывает контракт.
(3) Боб подписывает контракт. Подпротокол с использованием арбитра (выполняется при наличии разногласий) :
(4) Алиса и Боб предстают перед судьей.
(5) Алиса предоставляет свои доказательства.
(6) Боб предоставляет свои доказательства.
(7) Судья принимает решение на основании доказательств.
Различие используемых в этой книге понятий посредника и арбитра состоит в том, что участие арбитра пр о-исходит не всегда. Стороны обращаются к судье только при разногласиях. Если разногласий нет, судья не н у-жен.
Существуют арбитражные компьютерные протоколы. Они предполагают, что участвующие стороны честны, но при подозрении о возможном мошенничестве по существующему набору данных третья сторона, которой доверяют участники, сможет обнаружить факт мошенничества. Хороший арбитражный протокол позволяет арбитру установить и личность мошенника. Арбитражные протоколы обнаруживают, а не предупреждают моше н-ничество. Неотвратимость обнаружения выступает в качестве предупредительной меры, предотвращая моше н-ничество.
Деревья цифровых подписей
Ральф Меркл предложил систему цифровых подписей, основанную на криптографии с секретным ключом, создающей бесконечное количество одноразовых подписей, используя древовидную структуру [1067,1068]. Основной идеей этой схемы является поместить корень дерева в некий открытый файл , удостоверяя его таким об-
разом. Корень подписывает одно сообщение и удостоверяет подузлы дерева. Каждый из этих узлов подписывает одно сообщение и удостоверяет свои подузлы, и так далее.
Глава 3
SKEY
SKEY - это программа удостоверения подлинности, обеспечивающая безопасность с помощью однонапра в-ленной функции. Это легко объяснить.
Регистрируясь в системе, Алиса задает случайное число , R. Компьютер вычисляет f(R), f(f(R)), f(f(f(R))), и так далее, около сотни раз. Обозначим эти значения как х,, х2, х3, ..., хт. Компьютер печатает список этих чисел, и Алиса прячет его в безопасное место. Компьютер также открытым текстом ставит в базе данных подключения к системе в соответствие Алисе число хт.
Подключаясь впервые, Алиса вводит свое имя и хт. Компьютер рассчитывает f(xm) и сравнивает его с хт, если значения совпадают, права Алисы подтверждаются . Затем компьютер заменяет в базе данных хт на хт. Алиса вычеркивает хт из своего списка.
Алиса, при каждом подключении к системе, вводит последнее невычеркнутое число из своего списка: х,. Компьютер рассчитывает/^ и сравнивает его с х1+1, хранившемся в базе данных. Так как каждый номер используется только один раз, Ева не сможет добыть никакой полезной информации . Аналогично, база данных бесполезна и для взломщика. Конечно же, как только список Алисы исчерпается ей придется перерегистрир о-ваться в системе.
SKID
SKID2 и SKID3 - это симметричные криптографические протоколы идентификации, разработанные для пр о-екта RACE RIPE [1305] (см. раздел 25.7). Они используют MAC (см. раздел 2.4) для обеспечения безопасности и предполагают, что Алиса и Боб используют общий секретный ключ, К. SKID2 позволяет Бобу доказать свою подлинность Алисе. Вот этот протокол:
(1) Алиса выбирает случайное число, RA. (Документами RIPE определяется 64-битовое число). Она посылает это число Бобу.
(2) Боб выбирает случайное число, RB. (Документами RIPE определяется 64-битовое число). Он посылает Алисе.
RB, HK(RA, RB, В)
Нк-это MAC. (В документах RIPE предлагается функция RIPE-MAC, см. раздел 18.4.) В - это имя Боба.
(3) Алиса рассчитывает HK(RA, RB, В) и сравнивает результат со значением, полученным от Боба. Если р е-
зультаты совпадают, Алиса убеждается в том, что она соединилась именно с Бобом.
SKID3 обеспечивает совместную проверку подлинности Алисой и Бобом . Этапы (1) - (3) совпадают с протоколом SKID2, а затем выполняются следующие действия:
(4) Алиса посылает Бобу:
Hk(Rb, A) А - это имя Алисы.
(5) Боб рассчитывает HK(RB, А) и сравнивает результат со значением, полученным от Алисы. Если результаты
совпадают, Боб убеждается в том, что она соединилась именно с Алисой.
Этот протокол неустойчив к вскрытию "человек-в-середине". В общем случае, вскрытие "человек-в-середине" может угрожать любому протоколу, в который не входит какой-нибудь секрет.
Табл. 3-1. Символы, используемые в протоколах удостоверения подлинности и обмена ключами
1 Имя Алисы
В Имя Боба
ЕА Шифрование ключом, выделенном Трентом Алисе
Ев Шифрование ключом, выделенном Трентом Бобу
/ Порядковый номер
К Случайное сеансовое число
L Время жизни
Та, Тв Метки времени
RA, RB Случайные числа, выбранные Алисой и Бобом, соответственно
Другие протоколы
В литературе описано множество протоколов. Протоколы Х.509 рассматриваются в разделе 24.9, Кгур-toKnight - в разделе 24.6, а Шифрованный обмен ключами (Encrypted Key Exchange) - в разделе 22.5.
Другим новым протоколом с открытыми ключами является Kuperee [694]. Ведется работа на протоколами, использующими маяки- заслуживающие доверия узлы сети, которые непрерывно и широковещательно пер е-дают достоверные метки времени [783].
Выводы
Из приведенных протоколов, как из тех, которые вскрываются, так и из надежных, можно извлечь ряд ва ж-ных уроков:
— Многие протоколы терпят неудачу, так как их разработчики пытались быть слишком умными. Они опт и-мизировали протоколы, убирая важные элементы - имена, случайные числа и т.п. - и пытаясь сделать протоколы как можно более прозрачными [43, 44].
— Оптимизация - эта манящая ловушка - сильно зависит от сделанных предположений. Пример: наличие достоверного времени позволяет вам реализовать многие вещи, невозможные в проти вном случае.
— Выбираемый протокол зависит от архитектуры используемых средств связи. Хотите ли вы минимизир о-вать размер сообщений или их количество? Могут ли сторона взаимодействовать каждый с каждым или круг их общения будет ограничен?
Именно подобные вопросы и привели к созданию формальных методов анализа протоколов .
3.4 Формальный анализ протоколов проверки подлинности и обмена ключами
Проблема выделения безопасного сеансового ключа для пары компьютеров (или людей) в сети настолько фундаментальна, что стала причиной многих исследований . Некоторые исследования заключались в разработке протоколов, подобных рассматриваемым в разделах 3.1, 3.2 и 3.3. Это, в свою очередь, привело к появлению более важной и интересной задачи: формальному анализу протоколов проверки подлинности и обмена ключами. Иногда прорехи в протоколах, кажущихся вполне надежными, обнаруживались спустя много лет п о-сле их разработки, и разработчикам потребовались средства, позволяющие сразу же проверять безопасность протокола. Хотя большая часть этого инструментария применима и к более общим криптографическим прот о-колам, особое внимание уделялось проверке подлинности и обмену ключами . Существует четыре основных подхода к анализу криптографических протоколов [1045]:
1. Моделирование и проверка работы протокола с использованием языков описания и средств проверки, не разработанных специально для анализа криптографических протоколов.
2. Создание экспертных систем, позволяющих конструктору протокола разрабатывать и исследовать различные сценарии.
3. Выработка требований к семейству протоколов, используя некую логику для анализа понятий "знание" и "доверие".
4. Разработка формальных методов, основанных на записи свойств криптографических систем в алге б-раическом виде.
Полное описание этих четырех подходов и связанных с ними исследований выходит за рамки данной книги. Хорошее введение в эту тему дано в [1047, 1355], я же собираюсь коснуться только основных вопросов.
Первый из подходов пытается доказать правильность протокола, рассматривая его как обычную компьюте р-ную программу. Ряд исследователей представляют протокол как конечный автомат [1449, 1565], другие используют расширения методов исчисления предиката первого порядка [822], а третьи для анализа протоколов используют языки описания [1566]. Однако, доказательство правильности отнюдь не является доказательством безопасности, и этот подход потерпел неудачу при анализе многих "дырявых" протоколов . И хотя его применение поначалу широко изучалось, с ростом популярности третьего из подходов работы в этой области были п е-реориентированы.
Во втором подходе для определения того, может ли протокол перейти в нежелательное состояние (например, потеря ключа), используются экспертные системы. Хотя этот подход дает лучшие результаты при поиске "дыр", он не гарантирует безопасности и не предоставляет методик разработки вскрытий . Он хорош для проверки того, содержит ли протокол конкретную "дыру", но вряд ли способен обнаружить неизвестные "дыры" в протоколе . Примеры такого подхода можно найти в [987,1521], а в [1092] обсуждается экспертная система, разработанная армией США и названная Следователем (Interrogator).
Третий подход гораздо популярнее. Он был впервые введен Майклом Бэрроузом ( Michael Burrows), Мартином Абэди (Martin Abadi) и Роджером Неедхэмом. Они разработали формальную логическую модель для анализа знания и доверия, названную БАН-логикой[283, 284]. БАН-логика является наиболее широко распространена при анализе протоколов проверки подлинности. Она рассматривает подлинность как функцию от ц е-лостности и новизны, используя логические правила для отслеживания состояния этих атрибутов на протяжении всего протокола. Хотя были предложены различные варианты и расширения, большинство разработчиков пр о-токолов до сих пор обращаются к оригинальной работе.
БАН-логика не предоставляет доказательство безопасности, она может только рассуждать о проверке подлинности. Она является простой, прямолинейной логикой, легкой в применении и полезной при поиске "дыр" . Вот некоторые предложения БАН-логики:
Алиса считает X. (Алиса действует, как если бы X являлось истиной.)
Алиса видит X. (Кто-то послал сообщение, содержащее X, Алисе, которая может прочитать и снова передать X - возможно после дешифрирования.)
Алиса сказала X. (В некоторый момент времени Алиса послала сообщение, которое содержит предложение X. Не известно, как давно было послано сообщение, и было ли оно послано в течении текущего выполнения протокола . Известно, что Алиса считала X, когда говорила 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].
Несмотря на эту критику БАН-логика достигла определенных успехов . Ей удалось обнаружить "дыры" в нескольких протоколах, включая Needham-Schroeder и раннюю черновую версию протокола CCITT X.509 [303]. Она обнаружила избыточность во многих протоколах, включая Yahalom, Needham-Schroeder и Kerberos. Во многих опубликованных работах БАН-логика используется для заявления претензии о безопасности описыва е-мых протоколов [40, 1162, 73].
Были опубликованы и другие логические системы, некоторые из них разрабатывались как расширения БАН-логики [645, 586, 1556, 828], а другие основывались на БАН-логике для исправления ощутимых слабостей [1488, 1002]. Из них наиболее успешной оказалась CNY [645], хотя у нее есть ряд изъянов [40]. В [292,474] к БАН-логике с переменным успехом были добавлены вероятностные доверия . Другие формальные логики описаны в [156, 798,288]. [1514] пытается объединить черты нескольких логик. А в [1124, 1511] представлены логики, в которых доверия изменяются со временем.
Четвертый подход к анализу криптографических протоколов предлагает моделировать протокол как алге б-раическую систему, выразить состояние знания участников о протоколе и затем проанализировать достиж и-
мость определенных состояний. Этот подход пока не привлек столько внимания, как формальная логика, но состояние дел меняется. Он впервые был использован Майклом Мерриттом [1076], который показал, что для анализа криптографических протоколов можно использовать алгебраическую модель . Другие подходы рассмотрены в [473, 1508, 1530, 1531, 1532, 1510, 1612].
Анализатор протоколов Исследовательской лаборатория ВМС (Navy Research Laboratory, NRL), возможно, является наиболее успешным применением этих методов [1512, 823, 1046, 1513]. Он был использован для поиска как новых, так и известных "дыр" во множестве протоколов [1044, 1045, 1047]. Анализатор протоколов определяет следующие действия:
— Принять (Боб, Алиса, М, N). (Боб принимает сообщение М как пришедшее от Алисы в течение локального раунда Боба N.)
— Узнать (Ева, М). (Ева узнает М.)
— Послать (Алиса, Боб, Q, М). (Алиса посылает М Бобу в ответ на запрос, Q.)
— Запросить (Боб, Алиса, Q, N). (Боб посылает Q Алисе в течение локального раунда Боба N.)
Используя эти действия, можно задать требования. Например:
— Если Боб принял сообщение М от Алисы в какой-то прошедший момент времени, то Ева не знает М в какой-то прошедший момент времени.
— Если Боб принял сообщение М от Алисы в течение локального раунда Боба N, то Алиса послала М Бобу в ответ на запрос Боба в локальном раунде Боба N.
Для анализа Анализатором протоколов NRL исследуемый протокол должен быть описан с помощью прив е-денных конструкций. Затем выполняются четыре фазы анализа: определение правил перехода для честных участников, описание операций, возможных и для полностью честных, и для нечестных участников , описание базовых блоков протокола и описание правил преобразования. Смысл всего этого в том, чтобы показать, что данный протокол удовлетворяет необходимым требованиями. Использование инструментов, подобных Анализатору протоколов NRL, в итоге могло бы привести к созданию протокола, который был бы обоснованно признан безопасным.
Хотя формальные методы в основном применяются к уже существующим протоколам, сегодня есть тенде н-ция использовать их и при проектировании протоколов . Ряд предварительных шагов в этом направлении сделан в [711]. Это же пытается сделать и анализатор протоколов NRL [1512, 222, 1513].
Применение формальных методов к криптографическим протоколам представляет собой качественно новую идею, и трудно обрисовать, к чему может привести ее реализация . С этой точки зрения слабейшим звеном кажется процесс формализации.
3.5 Криптография с несколькими открытыми ключами
Обычная криптография с открытыми ключами использует два ключа. Сообщение, зашифрованное одним ключом, может быть расшифровано другим. Обычно один ключ является закрытым, а другой - открытым. Пусть, один ключ находится у Алисы, а другой - у Боба. Мы хотим реализовать следующую схему: Алиса м о-жет зашифровать сообщение так, что только Боб сможет расшифровать его, а Боб может зашифровать сообщ е-ние так, что только Алиса сможет прочитать его.
Эта концепция была обобщены Конном Бойдом (Conn Boyd) [217]. Представьте себе вариант криптографии с открытыми ключами, использующий три ключа: КА, Кв и Кс, распределение которых показано в 1-й.
Алиса может зашифровать сообщение ключом КА так, что Эллен может расшифровать его, используя ключи Кв и Кс. То же самое, сговорившись, могут сделать Боб и Кэрол. Боб может зашифровать сообщение так, что Фрэнк сможет прочесть его а Кэрол сможет зашифровать сообщение так, что его сможет прочесть Дэйв. Дэйв может зашифровать сообщение ключом КА так, что Эллен сможет прочесть его, ключом Кв так, что его сможет прочесть Фрэнк, или обоими ключами, КА и Кв, так, что сообщение сможет прочесть Кэрол. Аналогично, Эллен может зашифровать сообщение так, что Алиса, или Дэйв, или Фрэнк сможет прочесть его. Все возможные ко м-бинации показаны в , других не существует.
Табл. 3-2. Распределение ключей в трехключевой системе.
Алиса ТА
Боб Кв
Кэрол Тс
Дэйв Кл и Кв
Эллен Кв и Кс
Франк Кс и Кл
Такая схема может быть расширена на п ключей. Если для шифрования сообщения используется заданное подмножество ключей, то для дешифрирования сообщения потребуются оставшиеся ключи .
Табл. 3-3. Шифрование сообщения в трехключевой системе.
Шифруется ключами Должно быть расшифровано ключами
ТА КвиКс
Кв КА и Кс
Кс КА и Кв
КА и Кв Кс
КА и Кс Кв
Кв и Кс КА
3.6 Разделение секрета
Вообразите, что вы изобрели новый, сверхлипкую, сверхсладкую сливочную тянучку или соус для Гамбург е-ров, который еще безвкуснее, чем у ваших конкурентов. Это очень важно, и вы хотите сохранить изобретение в секрете. Только самым надежным работникам вы можете сообщить точный состав ингредиентов , но вдруг и кто-то из них подкуплен конкурентами? Секрет выкрадут, и немного погодя каждый в квартале будет делать гамбургеры с таким же безвкусным соусом, как ваш.
Предлагаемая схема называется разделением секрета.Есть способы взять сообщение и разделить его на части [551]. Каждая часть сама по себе ничего не значит, но сложите их - и вы получите сообщение . Если это
рецепт, и у каждого работника находится только его часть, то лишь собравшись все вместе ваши служащие см о-гут сделать соус. Если кто-нибудь из работников уволится, прихватив с собой свою часть рецепта, раскрытая информация по себе будет бесполезной.
По простейшей схеме сообщение делится между двумя людьми. Вот протокол, используя который Трент д е-лит сообщение между Алисой и Бобом:
(1) Трент генерирует строку случайных битов, R, такой же длины, что и сообщение, М.
(2) Трент выполняет "исключающее или" (XOR) над Ми 7?, создавая S. R®M = S
(3) Трент передает Алисе R, а Бобу - S.
Чтобы получить сообщение, Алисе и Бобу нужно выполнить единственное действие:
(4) Алиса и Боб выполняют операцию над имеющимися у них частями, восстанавливая сообщение.
R®S = M
Этот метод при правильном выполнении абсолютно безопасен. Каждая часть в отдельности абсолютно бе с-смысленна. Что существенно, Трент шифрует сообщение одноразовым блокнотом и дает шифротекст одному человеку, а блокнот - другому. Одноразовые блокноты, обладающие абсолютной безопасностью, обсуждаются в разделе 1.5. Никакие вычислительные средства не смогут восстановить сообщение только по одной его части .
Эту схему легко расширить на большее число людей. Чтобы разделить сообщение между более чем двумя людьми, выполните операцию XOR с большим числом строк случайных битов. В следующем примере Трент делит сообщение на четыре части:
(1) Трент генерирует три строки случайных битов, R, ShT, такой же длины, что и сообщение, М.
(2) Трент выполняет "исключающее или" (XOR) над Ми созданными тремя строками, создавая U. M®R®S®T = U
(3) Трент передает Алисе R, Бобу - S, Кэрол - Т, а Дэйву - U.
Вместе Алиса, Боб, Кэрол и Дэйв могут восстановить сообщение :
(4) Алиса, Боб, Кэрол и Дэйв собираются вместе и вычисляют:
R®S®T®U = M
Это арбитражный протокол. Трент обладает абсолютной властью и может делать все, что он хочет . Он может раздать чепуху и утверждать, что это настоящие части секретной информации, никто не сможет это пров е-рить, пока, собравшись вместе, участники протокола не попробуют прочитать письмо . Он может выдать части секрета Алисе, Бобу, Кэрол и Дэйву и позже заявить всем, что только Алиса, Кэрол и Дэйв нужны для восст а-новления секрета, застрелив при этом Боба. Но это не является проблемой, так как делимый секрет принадлежит Тренту.
Однако, одна проблема у этого протокола существует. Если любая из частей будет потеряна, а Трента не б у-дет поблизости, пропадет и все сообщение. Если Кэрол, обладая частью рецепта соуса, перейдет работать к ко н-куренту, оставив свою часть секрета у себя, значит, остальным не повезло. Она не сможет восстановить рецепт, но не смогут, собравшись, и Алиса, Боб и Дэйв. Ее часть также критична для восстановления сообщения, как и любая другая. Все, что известно Алисе, Бобу и Дэйву - это длина сообщения, и ничего больше . Это истинно, так как yR, S, T, UuMодинаковая длина, следовательно, каждому из участников известна длина М. Помните, сообщение М делится не в обычном смысле этого слова, а подвергается операции XOR со случайными величинами.
3.7 Совместное использование секрета
Вы вводите программу запуска ядерной ракеты и хотите быть уверенным, что никакой псих в одиночку не сможет вызвать пуск. Вы хотите быть уверенным, что и два психа не смогут вызвать пуск. Вы хотите, чтобы пуск произошел только, если не меньше трех из пяти офицеров будут психами .
Эта проблема легко может быть решена. Сделайте механическое устройство контроля запуска . Выдайте ключ каждому из пяти офицеров и потребуйте, чтобы по меньше мере три офицера вставили свои ключи в соо т-ветствующие гнезда, прежде чем вы разрешите им взорвать того, кого мы взрываем на этой неделе . (Если вы действительно волнуетесь, сделайте гнезда подальше друг от друга и потребуйте, чтобы офицеры вставляли ключи одновременно - вы ведь не хотели бы, чтобы офицер, выкравший недостающую пару ключей, смог бы испепелить Толедо.)
Можно сделать еще сложнее. Пусть только генерал у и паре полковников разрешено запустить ракету, но е с-ли генерал занят игрой в гольф, то запустить ракету имеют право только пять полковников . Сделайте контрольное устройство с пятью ключами. Выдайте генералу три ключа, а полковникам по одному. Генерал вместе с двумя полковниками или пять полковников смогут запустить ракету. Однако ни генерал в одиночку, ни четыре полковника не смогут этого сделать.
Более сложная схема совместного использования, называемая пороговой схемой,может решить и эти задачи, и более сложные - математически. На ее простейшем уровне вы можете взять любое сообщение (секретный рецепт, коды запуска, ваш список для прачечной и т.п.) и разделить его на п частей, называемых тенямиили долями, так, что по любым т из них можно восстановить сообщение. Более точно, это называется (т,п)-пороговой схемой.
Используя (3,4)-пороговую схему, Трент может разделить свой секретный рецепт между Алисой, Бобом, К э-рол и Дэйвом так, что любые трое из них могут сложить свои тени вместе и восстановить сообщение. Если Кэрол в отпуске, то Алиса, Боб и Дэйв смогут восстановить сообщение. Если Боб попал под автобус, то сообщение смогут восстановить Алиса, Кэрол и Дэйв. Но если Боб попал под автобус, а Кэрол в отпуске, то Алиса и Дэйв самостоятельно не смогут восстановить сообщение.
Вообще, пороговые схемы могут быть еще более гибкими. Можно отмоделировать любые сценарии совм е-стного использования, которые вы только сможете вообразить. Можно разделить сообщение между людьми в вашем здании так, что для его восстановления, если нет никого с третьего этажа, потребуется семь человек с первого этажа и пять со второго, в противном случае достаточно представителя третьего этажа вместе с тремя человеками с первого этажа и двумя со второго. Если же есть кто-то с четвертого этажа, то для восстановления сообщения достаточно этого человека и одного с третьего этажа или этого человека вместе с двумя с первого этажа и одного со второго. Если же ... ну вы уловили идею .
Эта идея была независимо выдвинута Ади Шамиром [1414] и Джорджем Блэкли (George Blakley) [182] и интенсивно была изучена Гусом Симмонсом (Gus Simmons) [1466]. Множество различных алгоритмов обсуждается в разделе 23.2.
Совместное использование секрета без Трента
Банк хочет, чтобы его подвал могли открыть трое из пяти офицеров, введя свои ключи . Это выглядит как типичная (3,5)-пороговая схема, но с одной тонкостью. Никто не знает секрета целиком. Трента, которые делит секрет на пять частей, нет. Существуют протоколы, используя которые пять офицеров могут создать секрет и поделить его на части так, что никто из офицеров не узнает секрета, пока он не будет восстановлен . В этой книге я не рассматриваю эти протоколы, подробности см. в [756].
Подтверждаемое совместное использование секрета
Трент передает Алисе, Бобу, Кэрол и Дэйву часть секрета (или, по крайней мере, заявляет, что он это делает). Единственный способ убедиться, что их части правильны - это попытаться восстановить секрет . Может быть Трент послал Бобу поддельную часть, или часть Боба случайно испортилась при передаче по линиям связи. Подтверждаемое совместное использование секрета позволяет каждому из участников лично убедиться, что их часть правильна, без необходимости восстанавливать секрет [558, 1235].
Глава 4
Вручение бита с помощью однонаправленных функций
Этот протокол использует однонаправленные функции:
(1) Алиса создает две случайных строки битов, Rj и R2.
Ri, Ri
(2) Алиса создает сообщение, состоящее из ее случайных строк и бита, который она хочет вручить (в действ и-
тельности, это может быть и несколько битов).
(Ru R2, b)
(3) Алиса вычисляет однонаправленную функцию для сообщения и посылает результат вместе с одной из
случайных строк Бобу.
H(R,, R2, b), R,
Это сообщение Алисы является доказательством вручения. Использование однонаправленной функции на этапе (3) мешает Бобу, инвертируя функцию, определить бит.
Когда для Алисы придет время раскрыть свой бит, протокол продолжается :
(4) Алиса отправляет Бобу первоначальное сообщение. (Ri, R2, b)
(5) Боб вычисляет однонаправленную функцию для сообщения и сравнивает его и R, со значением однонаправленной функции и случайной строкой, полученными на этапе (3). Если они совпадают, то бит прав и-лен.
Преимущество этого протокола перед предыдущим в том, что Бобу не нужно посылать никаких сообщений . Алиса посылает Бобу одно сообщение для вручения бита, а другое - для его раскрытия .
Не нужна и случайная строка Боба, так как результат Алисиного вручения - это сообщение, обработанное однонаправленной функцией. Алиса не может смошенничать и подобрать другое сообщение (R,, R2, V), для которого H(Rj, R2, b')= H(Rj, R2, b). Посылая Бобу R,, она вручает значение Ъ. Если Алиса не сохранит в секрете R2, то Боб получит возможность вычислить H(R,, R2, b') и H(R,, R2, b), получая возможность увидеть, что же он получил от Алисы.
Глава 5
Рис. 5-1. Пещера нулевого знания
Пегги знает секрет пещеры. Она хочет доказать свое знание Виктору, но не хочет раскрывать волшебных слов. Вот как она убеждает его:
(1) Виктор находится в точке А.
(2) Пегги проходит весь путь по пещере, либо до точки C, либо до точки D.
(3) После того, как Пегги исчезнет в пещере, Виктор переходит в точку В.
(4) Виктор кричит Пегги, спрашивая ее либо о:
(a) или выйти из левого прохода
(b) выйти из правого прохода.
(5) Пегги исполняет его просьбу, при необходимости используя волшебные слова, чтобы отпереть дверь.
(6) Пегги и Виктор повторяют этапы (1) - (5) п раз.
Предположим, что у Виктора есть видеокамера, и он записывает все, что видит . Он записывает, как Пегги исчезает в пещере, записывает, как он сам кричит, указывая, где Пегги должна появиться, записывает как Пегги появляется. Он записывает все п тестов. Если он покажет эту видеозапись Кэрол, поверит ли она, что Пегги зн а-ет волшебные слова, отпирающие дверь? Нет. А что если Пегги и Виктор заранее договорились, что Виктор будет кричать, а Пегги будет делать вид, что она прошла весь путь. Тогда она будет каждый раз выходить из указанного Виктором места, не зная волшебных слов. Или они могли сделать по другому. Пегги входит в один из проходов и Виктор случайным образом выкрикивает свои просьбы . Если Виктор угадывает правильно, хорошо, если нет - они вырежут эту попытку из видеозаписи. В любом случае Виктор может получить видеозапись, показывающую в точности ту последовательность, которая получилась бы, если бы Пегги знала волше б-ные слова.
Этот опыт показывает две вещи. Во первых, Виктор не может убедить третью сторону в правильности док а-зательства. И во вторых, данный протокол является протоколом с нулевым знанием. Если Пегги не знает волшебных слов, то очевидно, что Виктор не узнает ничего из просмотра видеозаписи . Но так как нет способа отличить реальную видеозапись от подделанной, то Виктор не может ничего узнать из реального доказательства -это и есть нулевое знание.
Методика, используемая в этом протоколе, называется разрезать и выбратьиз-за того, что она похож на классический протокол честного деления чего-либо :
(1) Алиса делит некую вещь пополам.
(2) Боб выбирает одну из половин себе.
(3) Алиса забирает оставшуюся половину.
В интересах Алисы честно разделить на этапе (1), потому что Боб выберет на этапе (2) ту половину, которая ему больше нравится. Майкл Рабин (Michael Rabin) первым использовал в криптографии технику "разрезать и выбрать" [1282]. Понятия интерактивного протоколаи нулевого знания были формализованы позже [626, 627].
Протокол "разрезать и выбрать" работает, потому что Пегги не может несколько раз подряд угадывать, отк у-да Виктор попросит ее выйти. Если Пегги не знает секрета, он может выйти только из того прохода, в который она зашла. В каждом раундепротокола ее вероятность (иногда называемая аккредитацией)угадать, с какой стороны Виктор попросит ее выйти, составляет 50 процентов, поэтому ее вероятность обмануть Виктора также равна 50 процентам. Вероятность обмануть его в двух раундах составит 25 процентов , а во всех п раундах -один шанс из 2П. После 16 раундов у Пегги 1 шанс из 65536 обмануть Виктора. Виктор может уверенно предположить, что если все 16 доказательств Пегги правильны, то она действительно знает тайные слова, открыва тощие дверь между точками С и D. (Аналогия с пещерой несовершенна. Пегги может просто входить с одной стороны и выходить с другой, протокол "разрезать и выбрать" не нужен . Однако, он необходим с для нулевого знания с математической точки зрения.)
Предположим, что Пегги известна некоторая информация, которая является решением трудной проблемы . Базовый протокол нулевого знания состоит из нескольких раундов .
(1) Пегги использует свою информацию и случайное число для преобразования одной трудной проблемы в другую, изоморфную оригинальной проблеме. Затем она использует свою информацию и случайное число для решения новой трудной проблемы.
(2) Пегги вручает решение новой проблемы, используя схему вручения бита.
(3) Пегги раскрывает Виктору новый экземпляр проблемы. Виктор не может использовать эту новую пробл е-му для получения информации о первоначальной проблеме или ее решении.
(4) Виктор просит Пегги либо
(a) доказать ему, что новая и старая проблема изоморфны (т.е., два различных решения для двух ев я-занных проблем), либо
(b) открыть решение, полученное на этапе (2) и доказать, что это решение новой проблемы.
(5) Пегги исполняет его просьбу.
(6) Пегги и Виктор повторяют этапы (1) - (5) п раз.
Помните видеокамеру в протоколе для пещеры? Здесь вы можете сделать то же самое . Виктор может записать обмен между ним и Пегги. Он не сможет использовать эту запись для убеждения Кэрол, но он всегда м о-жет сговориться с Пегги с целью создать имитатор, который подделывает информацию Пегги . Этот аргумент может быть использован, чтобы доказать, что используется доказательство с нулевым знанием .
Математическая основа доказательства этого типа сложна. Проблемы и случайное преобразование должны выбираться осторожно, чтобы Виктор не получил никакой информации о решении оригинальной проблемы, даже после многих повторений протокола. Не все трудные проблемы можно использовать для доказательств с нулевым знанием, но большинство из них.
Табл. 5-1. Патенты Чаума на слепые подписи
Патента Дата Название
США
0 19.07.88 Blind Signature Systems [323] (Системы слепых подписей)
1 19.07.88 Blind Unanticipated Signature Systems [324] (Системы слепых неожиданных подписей)
4914698 03.03.90 One-Show Blind Signature Systems [326] (Системы слепых подписей, показываемых
один раз)
4949380 14.08.90 Returned-Value Blind Signature Systems [328] (Системы слепых подписей с возвра-
щаемым значением)
4991210 05.02.91 Unpredictable Blind Signature Systems [331] (Системы непредсказуемых слепых под-
писей)
5.4 Личностная криптография с открытыми ключами
Алиса хочет отправить Бобу безопасное сообщение. Она не хочет получать свой открытый ключ с сервера ключей, она не хочет проверять подпись некоторой заслуживающей доверия третьей стороны на сертификате своего открытого ключа, и она даже не хочет хранить открытый ключ Боба в своем компьютере . Она хочет просто послать ему безопасное сообщение.
Эту проблему решают личностныекриптосистемы, иногда называемые системами с Неинтерактивным разделением ключей (Non-Interactive Key Sharing, NIKS) [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], ненадежна против вскрытия с использованием выбранного открытого ключа, то же самое можно сказать и о системе, предложенной как NIKS-TAS [1542, 1540, 1541, 993, 375, 1538]. По правде говоря, среди предложенного нет ничего одновременно практичного и безопасного.
5.5 Рассеянная передача
Криптограф Боб безнадежно пытается разложить на множители 500-битовое число п. Он знает, что оно является произведением пяти 100-битовых чисел, и ничего больше . (Вот проблема. Если он не восстановит ключ, ему придется работать сверхурочно, и он не попадет на еженедельную игру с Алисой в мысленный покер .) Что же делать? И вот появляется Алиса:
"Мне посчастливилось узнать один из множителей числа", - говорит она, - "и я продам его тебе за 100 долларов. По доллару за бит." Показывая свою серьезность, она собирается использовать схему вручения бита, вручая каждый бит о тдельно.
Боб заинтересован, но только за 50 долларов. Алиса не хочет сбрасывать цену и предлагает продать Бобу половину битов за половину стоимости. "Это заметно сократит тебе работу", -.
"Но как я узнаю, что твое число действительно является множителем и. Если ты покажешь мне число и позволишь мне убедиться, что оно действительно является множителем, я соглашусь с твоими условиями ", - говорит Боб.
Они в патовой ситуации. Алиса не может убедить Боба в том, что она знает сомножитель и, не раскрыв его, а Боб не хочет покупать 50 битов, которые вполне могут оказаться бесполезными .
Эта история, утащенная у Джо Килиана [831], вводит понятие рассеянной передачи.Алиса передает Бобу группу сообщений. Боб получает некоторое подмножество этих сообщений, но Алиса не знает, какие из сообщ е-ний Боб получил. Однако, это не полностью решает проблему. Когда Боб получит случайную половину битов, Алисе придется убеждать его, используя доказательство с нулевым знанием, что она послала часть множителя п.
В следующем протоколе Алиса посылает Бобу одно из двух сообщений. Боб получает сообщение, но какое -Алиса не знает.
(1) Алиса генерирует две пары открытый ключ/закрытый ключ, всего четыре ключа . Она посылает оба открытых ключа Бобу.
(2) Боб выбирает ключ симметричного алгоритма (например, DES). Он выбирает один из открытых ключей Алисы и шифрует с его помощью свой ключ DES. Он посылает шифрованный ключ Алисе, не сообщая, какой из ее открытых ключей он использовал для шифрования .
(3) Алиса дважды расшифровывает ключ Боба, используя оба своих закрытых ключа. В одном из случаев она использует правильный ключ и успешно расшифровывает ключ DES, присланный Бобом. В другом случае она использует неправильный ключ и получает бессмысленную последовательность битов, которая, тем не менее, похожа на случайный ключ DES. Так как ей неизвестен правильный открытый текст, она не может узнать, какой из ключей правилен.
(4) Алиса зашифровывает каждое из своих сообщений каждым из ключей, полученных ею на предыдущем этапе (один из которых - настоящий, а другой - бессмысленный), и посылает оба сообщения Бобу.
(5) Боб получает сообщения Алисы, одно из которых зашифровано правильным ключом DES, а другое - бессмысленным ключом DES. Когда Боб расшифровывает каждое из этих сообщений своим ключом DES, он может прочитать одно из них, а другое будет для него выглядеть полной бессмыслицей .
Теперь у Боба есть два сообщения Алисы, и Алиса не знает, какое из них Бобу удалось успешно расшифр о-вать. К несчастью, если протокол остановится на этом этапе, Алиса сможет смошенничать. Необходим еще один этап.
(6) Когда протокол завершится, и станут известны оба возможных результата передачи , Алиса должна пере
дать Бобу свои закрытые ключи, чтобы он убедиться в отсутствии мошенничества . В конце концов, она
могла зашифровать на этапе (4) обоими ключами одно и то же сообщение .
В этот момент, конечно же Боб сможет узнать и второе сообщение .
Протокол надежно защищен от взлома со стороны Алисы, потому что у нее нет возможности узнать, какой из двух ключей DES является настоящим. Оба из них она использует для шифрования своих сообщений, но Боб может успешно расшифровать только одно из них - до этапа (6). Протокол защищен и от взлома со стороны Боба, потому что до этапа (6) он не сможет получить закрытый ключ Алисы, чтобы определить ключ DES, которым зашифровано другое сообщение. На вид этот протокол может показаться просто усложненным способом бросать "честную" монету по модему, но он интенсивно используется во многих сложных протоколах .
Конечно же, ничто не может помешать Алисе послать Бобу два совершенно бессмысленных сообщения : "Мяу-мяу " и "Ты молокосос". Этот протокол гарантирует, что Алиса передаст Бобу одно из двух сообщений, но нет никакой гарантии, что Боб захочет получить любое из них .
В литературе можно найти и другие протоколы рассеянной передачи . Некоторые из них неинтерактивны, т.е. Алиса публикует свои два сообщения, а Боб может прочесть только одно из них . Он может сделать это, когда захочет, ему не нужно для этого связываться с Алисой [105].
В действительности на практике никто не использует протокол рассеянной передачи , но это понятие является важным блоком при построении других протоколов. Хотя существует много типов рассеянной передачи - у меня есть два секрета, а вы получаете один, у меня есть п секретов, а вы получаете один, у меня есть один секрет, который вы получаете с вероятностью 1/2 и так далее - все они эквивалентны [245, 391, 395].
Глава 6
Безусловные безопасные протоколы с несколькими участниками
Это только частный случай общей теоремы: любая функция с п входами может быть вычислена п игроками способом, который позволит всем узнать значение функции, но любое количество игроков, меньшее, чем и/2, не сможет получить никакой дополнительной информации, не следующей из их собственных входов и результата вычислений. Подробности можно найти в [136, 334, 1288, 621].
Реальные электронные наличные
Голландская компания, DigiCash, владеет большей частью патентов в области электронных наличных и ре а-лизовала протоколы электронных наличных в работающих продуктах owns. Если вы заинтересовались этим, обратитесь в DigiCash BV, Kraislaan 419, 1098 VA Amsterdam, Nethe rlands.
– Конец работы –
Используемые теги: протоколы, Алгоритмы, Исходные, тексты, языке0.068
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Протоколы, алгоритмы и исходные тексты на языке С
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов