Криптография 2е издание Протоколы, алгоритмы и исходные тексты на языке С
Скачать 3.25 Mb.
|
Мэллори может поступить хитрее и модифицировать реализацию PEM, работающую в вашей системе. Эта измененная версия может тайком пересылать Мэллори всю вашу почту, зашифровав ее его открытым ключом. Ему может быть послана даже копия вашего закрытого ключа . Если измененная реализация будет работать х о- рошо, то вы никогда не узнаете, что случилось . Реального способа предотвратить такое вскрытие не существует . Вы можете использовать однонаправлен- ную хэш-функцию и получить контрольную сумму исполняемого кода PEM. Затем, при каждом запуске про- граммного обеспечения вы можете проверять контрольную сумму, чтобы вовремя обнаружить изменения . Но Мэллори точно также может изменить и код контрольной суммы при изменении кода PEM. Можно сохранить контрольную сумму контрольной суммы, но Мэллори может изменить и ее. Если у Мэллори есть доступ к ва- шему компьютеру, он может разрушить безопасность PEM. Мораль в том, что вы не должны доверять никакому элементу программного обеспечения, если вы не мож е- те доверять аппаратуре, на которой работает это программное обеспечение . Для большинства такие опасения покажутся необоснованными. Но для некоторых людей они вполне реальны . TIS/ PEM Доверенные информационные системы (TIS, Trusted Information Systems), частично поддерживаемые Управлением по передовым научным проектам правительства Соединенных Штатов , включают реализацию PEM (TIS/PEM). Разработанные для платформ UNIX, они были также перенесены на VMS, DOS и Windows. Хотя спецификации PEM определяют для Internet один главный сертификационный центр, TIS/PEM под- держивает существование нескольких иерархий сертификации . Узлы могут определить набор сертификатов, которые будут считаться действительными , включая все сертификаты, выданные узлами . Для того, чтобы поль- зоваться TIS/PEM узлу не нужно присоединяться к иерархии Internet. Все организации и граждане США и Канады при желании могут получить доступ к TIS/PEM, которая распространяется в виде исходного кода. Заинтересованные лица должны обращаться по следующему адресу : Privacy-Enhanced Mail, Trusted Information Systems, Inc., 3060 Washington Road IRte. 97), Glenwood, MD 2,1738; (301) 854-6889; fax: (301) 854-5363; Inte rnet: pern-info@tis.com. RIPEM RIPEM - это программа, написанная Марком Риорданом ( Mark Riordan) и реализующая протоколы PEM. Хотя эта программа не является свободно доступной, ей можно воспользоваться бесплатно для частного, н е- коммерческого использования. Лицензия на ее использование входит в документацию . Код не может быть экспортирован. Конечно, законы правительства США не действуют за пределами Соед и- ненных Штатов, и ряд людей игнорирует экспортные ограничения . Код RIPEM доступен по всему миру на элек- тронных досках объявлений. Разрешена для экспорта версия, называемая RIPEM/SIC, реализующая только цифровые подписи. К моменту написания этих строк RIPEM не полностью реализовала протоколы PEM, в ней нет возможности использовать сертификаты проверки подлинности ключей. До RIPEM Риордан написал похожую программу RPEM. Подразумевалось, что это будет общедоступная программа электронной почты. Пытаясь обойти патентные проблемы, Риордан использовал алгоритм Rabin (см. раздел 19.5). Public Key Partners заявила, что их патенты распространяются на всю криптографию с открытыми ключами. Под угрозой судебного процесса Риордан прекратил распространение программы . Сейчас RPEM не используется. Она не совместима с RIPEM. Так как можно использовать RIPEM, не встре- чая препятствий со стороны Public Key Partners, нет повода возвращаться к RPEM. 24.11 Протокол безопасности сообщений Протокол безопасности сообщений (Message Security Protocol, MSP) - это военный эквивалент PEM. Он был разработан NSA в конце 80-х годов при работе по программе создания Безопасной системы передачи данных по сети (Secure Data Network System, SDNS) program. Это совместимый с X.400 протокол уровня приложения для закрытия электронной почты. MSP планируется использовать в разрабатываемой сети оборонных сообщений (Defense Message System, DMS) Министерства обороны. Предварительный протокол безопасности сообщений (Preliminary Message Security Protocol, PMSP), который предполагается использовать для "несекретных, но важных" сообщений , представляет собой адаптированную для использования с X.400 и TCP/IP версию MSP. Этот протокол также называют Mosaic. Как и PEM, программные реализации MSP и PMSP достаточно гибки, их конструкция позволяет подстр о- иться под использование различных алгоритмов для осуществления функций безопасности, таких как подпись, хэширование и шифрование. PSMP будет работать с микросхемой Capstone (см. раздел 24.17). 24.12 PRETTY GOOD PRIVACY (PGP) Pretty Good Privacy (PGP, весьма хорошая секретность) - это свободно распространяемая программа безопа с- ной электронной почты, разработанная Филипом Циммерманном ( Philip Zimmermann) [1652]. Для шифрования данных она использует IDEA, для управления ключами и цифровой подписи - RSA (длина ключа до 2047 би- тов), а для однонаправленного хэширования - MD5. Для получения случайных открытых ключей PGP использует вероятностную проверку чисел на простоту, используя для получения стартовых последовательностей интервалы между нажатиями пользователем клавиш на клавиатуре. PGP генерирует случайные ключи IDEA с помощью метода, в ANSI X9.17, Appendix C (см. раз- дел 8.1) [55], используя вместо DES в качестве симметричного алгоритма IDEA. PGP также шифрует закрытый ключ пользователя с помощью хэшированной парольной фразы, а не пароля непосредственно . Сообщения, зашифрованные PGP, имеют несколько уровней безопасности. Единственная вещь, известная криптоаналитику о зашифрованном сообщении, - это получатель сообщения при условии, что криптоаналитику известен ID ключа получателя. Только расшифровав сообщение, получатель узнает, кем оно подписано, если оно подписано. Это резко отличается от сообщения PEM, в заголовке которого немало информации об отправ и- теле, получателе и самом сообщении хранится в незашифрованном виде . Самой интересной особенностью PGP является распределенный подход к управлению ключами (см. раздел 8.12). Центров сертификации ключей нет, вместо этого в PGP поддерживается "сеть доверия". Каждый пользо- ватель сам создает и распространяет свой открытый ключ . Пользователи подписывают ключи друг друга, со з- давая взаимосвязанное сообщество пользователей PGP. Например, Алиса может физически передать Бобу свои открытый ключ . Боб лично знает Алису, поэтому он подписывает ее открытый ключ. Одну подписанную копию он возвращает Алисе, а другую оставляет . Когда Алисе нужно связаться с Кэрол, она посылает Кэрол подписанную Бом копию ключа. Кэрол, у которой каким- то образом уже есть ключ Боба (она получила его раньше), и которая доверяет Бобу заверить ключ другого ч е- ловека, проверяет его подпись под ключом Алисы и убеждается, что она правильна . Таким образом, Боб знако- мит Алису и Кэрол. PGP не определяет стратегию установки доверительных связей, пользователи сами решают, кому верить, а кому нет. PGP обеспечивает механизмы для поддержки ассоциативного доверия открытым ключам и для и с- пользования доверия. Каждый пользователь хранит набор подписанных открытых ключей в виде файла кольца открытых ключей (public-key ring). Каждый ключ кольца обладает полем законности ключа, определяющим уровень доверия к ключу конкретного пользователя . Чем больше уровень доверия, тем больше пользователь уверен в законности ключа. Поле доверия к подписи измеряет, насколько пользователь верит тому, кто подп и- сал открытые ключи других пользователей . И наконец поле доверия к владельцу ключа задает уровень, опред е- ляющий, насколько конкретный пользователь верит владельцу ключа, подписавшему другие открытые ключи. Это поле вручную устанавливается пользователем . PGP непрерывно обновляет эти поля по мере появления н о- вой информации. На 17-й показано, как выглядит эта модель для конкретного пользователя , Алисы. Ключ Алисы находится в самом верху иерархии, владелец ключа абсолютно надежен . Алиса подписывает ключи Боба, Кэрол, Дэйва, Элен и Фрэнка. Она доверяет Бобу и Кэрол подписывать открытые ключи других людей, кроме того, она ча с- тично доверяет Дэйву и Элен подписывать открытые ключи других людей . И она доверяет Гейл подписывать открытые ключи других людей, хотя сама не подписывала ключ Гейл. Двух частично доверяемых подписей может оказаться достаточным для сертификации ключа . Алиса счита- ет, что ключ Курта законен, так как Дэйв и Элен подписали его . Уровень доверия устанавливается в PGP вруч- ную, Алиса может выбрать устраивающую ее степень паранойи . Алиса не должна автоматически доверять ключам других людей только потому, что они подписаны ключом, который она считает правильным. Алиса Она не доверяет Фрэнку Она подписывать другие ключи, хотя она собственноручно подписывала его ключ. Кроме того, она не доверяет подписи Ивана под ключом Мартина или подписи Курта под ключом. Ключ Оуэна вообще на входит в сеть, может быть, Алиса получила его от сервера . PGP не считает ключ ав- томатически правильным, Алиса должна либо объявить о правильности ключа, либо решиться поверить одному из тех, кто подписал ключ. Конечно, ничто не мешает Алисе использовать ключи, которым она не доверяет . Задача PGP - предупредить Алису о подозрительности ключа, а не помешать ей устанавливать соединения . Самым слабым звеном этой системы является отзыв ключей : гарантировать, что кто-нибудь не воспользуе т- ся скомпрометированным ключом, невозможно . Если закрытый ключ Алисы украден, она может послать некий сертификат отзыва ключа (key revocation certificate), но, так как некое распределение ключей уже произошло, нельзя гарантировать, что это сообщение будет получено всеми, использующими ее открытый ключ в своем кольце ключей. И так как Алиса должна будет подписать свой сертификат отзыва ключа своим закрытым кл ю- чом, то если она потеряет ключ, она не сможет и отозвать его . Алиса Алиса считает ключ незаконным Алиса частично доверяет владельцу ключа право подписывать другие ключи Алиса доверяет владельцу ключа право подписывать другие ключи Алиса считает ключ законным x подписывает ключ y y x Боб Кэрол Гейл Дэйв Элен Линда Курт Дженнифер Иван Фрэнк Нэнси Оуэн Мартин ? ? ? ? ? ? Рис. 24-7. Модель доверия в PGP. Текущей версией PGP является 2.6.2. Появление новой версии, PGP 3.0, ожидается к концу 1995 года. В 3.0 включены опции тройного DES, SHA, другие алгоритмы с открытыми ключами , разделение пар "открытый ключ/закрытый ключ" для шифрования и для подписи , расширенные процедуры отзыва ключей, улучшенные функции управления кольцом ключей, API для интегрирования PGP в другие программы и полностью перепи- санные исполняемые модули. PGP доступна для MS-DOS, UNIX, Macintosh, Amiga и Atari. В личных, некоммерческих целях ее можно использовать свободно, скачав со многих узлов ftp в Internet. Чтобы скопировать PGP с узла MIT с помощью telnet подключитесь к net-dist.mit.edu, войдите в систему как getpgp, ответьте на вопросы, затем используйте ftp для соединения с net-dist.mit.edu и перейдите в каталог, указанный в сессии telnet. Эту программу также можно получить ftp.ox.ac.uk, ftp.dsi.unimi.it, ftp.funet.fi, ftp.demon.co.uk, CompuServe, AOL, и т.п. Для коммерческого использования в США PGP можно приобрести - полностью, вместе с лицензиями - примерно за 100 долларов в компании ViaCrypt, 9033 N 24th Ave., Phoenix, AZ, 85021; (602) 944-0773; viacrypt@acm.org. Существуют раз- личные средства, помогающие интегрировать PGP в MS-DOS, Microsoft Windows, Macintosh и UNIX. О PGP написано несколько книг [601,1394,1495]. Исходный код был даже опубликован в печатном виде в [1653] при попытке обойти Госдепартамент США, который продолжает считать, что исходный код можно эк с- портировать только в бумажном, а не в электронном виде . Если вы доверяете IDEA, PGP позволит вам прибли- зиться к военному уровню шифрования. 24.13 Интеллектуальные карточки Интеллектуальная карточка представляет собой пластиковую карточку, по размеру и форме как кредитная карточка, с встроенной компьютерной микросхемой . Идея стара - первые патенты были выданы лет 20 тому назад - но из-за практических ограничений возможность реализовать такие карточки появилась только приме р- но пять лет назад. С тех пор они стали популярны, главным образом в Европе . Во многих странах интеллекту- альные карточки используются для оплаты за телефоны . Существуют интеллектуальные кредитные карточки, интеллектуальные дебитные карточки, интеллектуальные карточки для чего угодно. Американские компании по выпуску кредитных карточек работают над технологией, и через несколько лет даже захудалые американцы будут носить интеллектуальные карточки в своих бумажниках . Интеллектуальная карточка содержит маленький компьютер (обычно 8-битовый микропроцессор), ОЗУ (четверть килобайта), ПЗУ (примерно 6-8 килобайт), и несколько килобайт либо EPROM (стираемое програм- мируемое ПЗУ) или EEPROM (электронно стираемое программируемое ПЗУ ). Объем памяти в интеллектуаль- ных карточках следующего поколения наверняка возрастет, но определенные физические ограничения затру д- нят такие расширения. Карточка использует свою операционную систему, программы и данные . (Чего в ней нет, так это источника питания, электроэнергия подается, когда карточку вставляют в считыватель .) Карточка безо- пасна. В нашем меняющемся мире, когда нельзя доверять чужому компьютеру, телефону, да чему угодно, вы можете быть уверены в своей карточке, которая хранится в вашем бумажнике . В интеллектуальных карточках могут использоваться различные криптографические протоколы и алгоритмы. Они могут быть электронным кошельком, давая возможность тратить и получать электронные н а- личные. Карточки могут использоваться в протоколах проверки подлинности с нулевым знанием, они могут обладать собственными ключами шифрования . Возможно, они позволяют подписывать документы или снимать блокировку с компьютерных программ. Некоторые интеллектуальные карточки считаются устойчивыми к взлому, таким образом себя часто защ и- щают организации, эмитировавшие карточки . Банк вовсе не хочет, чтобы вы могли влезть в их интеллектуал ь- ную карточку и начислить себе побольше денег . Интеллектуальные карточки - это очень интересная тема, на которую написано множество литературы . Хо- рошей обзорной статьей по криптографии в интеллектуальных карточках может служить [672]. Ежегодно про- водятся конференции: CARTES в октябре в Париже и CardTech в апреле в Вашингтоне, округ Колумбия. Труды двух других конференций по интеллектуальным карточкам можно найти в [342, 382]. В области интеллектуаль- ных карточек существуют сотни патентов , частью принадлежащие европейским компаниям . Интересные вопро- сы будущего использования интеллектуальных карточек - проверка целостности, аудиторский контроль, защита от копирования, электронные наличные, оплата почтовых расходов - описаны в [1628]. 24.14 Стандарты криптографии с открытыми ключами Стандарты криптографии с открытыми ключами ( Public-Key Cryptography Standards, PKCS) - это попытка компании RSA Data Security, Inc обеспечить промышленный стандарт для криптографии с открытыми ключами. По традиции такими делами занимался ANSI, но, учитывая текущую ситуацию в криптографической политике, RSADSI решила, что лучше они все сделают сами . Работая со множеством компаний, RSADSI разра- ботала набор стандартов. Некоторые из них совместимы с другими стандартами, а некот орые - нет. Эти стандарты не являются стандартами в общепринятом смысле этого слова, никто не собирался и не гол о- совал за PKCS. По своим собственным словам RSADSI "будет единственной организацией, правомочной пр и- нимать решения о каждом стандарте, и будет пересматривать эти стандарты по мере необходимости " [803]. Даже это уже совсем. Если вы неуверены, какие структуры данных и синтаксис использовать при програ м- мировании криптографии с открытыми ключами , эти стандарты не хуже каких-либо других . К тому же, так как это не настоящие стандарты, вы можете подстроить их под свои нужды . Далее приведено краткое описание каждого PKCS (PKCS #2 и PKCS #4 были включены в PKCS #l). PKCS #l [1345] описывает способ шифрования и дешифрирования RSA, главным образом для создания циф- ровых подписей и цифровых конвертов, описанных в PKCS #7. Для цифровых подписей сообщение хэшируется, а затем хэш-значение шифруется закрытым ключом подписывающего . Совместное представление сообщения и хэш-значения подробно описано в in PKCS #7. Для цифровых конвертов (шифрованные сообщения) сообщение сначала шифруется симметричным алгоритмом, а затем ключ сообщений шифруется открытым ключом получ а- теля. Совместное представление шифрованного сообщения и шифрованного ключа должно соответствовать PKCS #7. Эти два метода совместимы со стандартами PEM. Для структуры сертификатов (или их подобия) о т- крытых и закрытых ключей RSA и трех алгоритмов подписи - MD2 и RSA, MD4 и RSA, MD5 и RSA - PKCS #l также описывает синтаксис, идентичный синтаксису X.509 и PEM. PKCS #3 [1346] описывает способ реализации обмена ключами по схеме Diffie-Hellman. PKCS #5 [1347) описывает способ шифрования сообщений секретным ключом, полученным из пароля . Стандарт использует MD2 или MD5 для получения ключа из пароля и шифрует сообщения с помощью DES в режиме CBC. Этот метод предназначен главным образом для шифрования закрытых ключей при их передаче от одной компьютерной системы другой, но может быть использован и для шифрования сообщений . PKCS #6 [1348] описывает стандартный синтаксис сертификатов открытых ключей . Синтаксис является надмножеством сертификата X.509, при необходимости можно извлечь и сертификат X.509. Дополнительные атрибуты не ограничивают процесс сертификации только открытым ключом. Они содержат и другую информ а- цию, например, адрес электронной почты . PKCS # 7 [1349] представляет собой общий синтаксис для подписываемых или шифруемых данных, напр и- мер, цифровых подписей или цифровых конвертов . Синтаксис является рекурсивным, поэтому можно организ о- вать вложенность конвертов или поставить чью-то подпись под ранее зашифрованными данными. Синтаксис также разрешает вместе с содержанием сообщения проверку подлинности других атрибутов, например, меток |