Литмир - Электронная Библиотека

Может ли злоумышленник каким-либо образом обмануть этот протокол? Он может сфабриковать сообщение 3 и спровоцировать Боба на проверку Алисы, но Алиса увидит число Ra, которого она не посылала, и не станет продолжать. Злоумышленник не сможет убедительно подделать сообщение 7, так как ему не известны значения оклика RB или ключа KS, и он не может определить их, не имея закрытого ключа Алисы. Так что ему не везет.

8.8. Конфиденциальность электронной переписки

При пересылке между двумя удаленными пользователями сообщение обычно преодолевает по пути десяток других машин. Любая из них может читать и записывать проходящую через нее почту. Конфиденциальности не существует, что бы ни думали об этом многие пользователи. Тем не менее многие пользователи желали бы иметь возможность посылать электронную почту так, чтобы ее мог прочитать только тот, для кого она предназначается, и никто другой: ни шеф, ни даже правительство. Эта потребность стимулировала применение некоторыми группами и отдельными разработчиками криптографических принципов к электронной почте. В следующих разделах мы познакомимся с широко распространенной системой защиты электронной почты PGP, а также дадим общее представление о еще одной — S/MIME. Дополнительную информацию см. в (Kaufman и др., 2002; Schneier, 1995).

8.8.1. PGP

Наш первый пример, система PGP (Pretty Good Privacy — довольно хорошая конфиденциальность), создана всего одним человеком, Филом Циммерманом (Phil Zimmermann, 1995a, 1995b). Циммерман является сторонником безопасности в сетях и его девиз таков: «Если конфиденциальность нарушается, значит, она доступна только нарушителям закона». Выпущенная в 1991 году система PGP представляет собой полный пакет для электронной почты, обеспечивающий конфиденциальность, аутентификацию, цифровые подписи и сжатие. Все это делается в легкой и удобной форме. Более того, полный пакет, включающий все исходные тексты программ, свободно распространяется через Интернет. Благодаря своему качеству, цене (нулевой) и простоте установки на различных платформах, включая UNIX, Linux, Windows и Mac OS, в настоящее время система PGP получила широкое распространение.

PGP кодирует данные с помощью блочного шифра IDEA (International Data Encryption Algorithm — международный алгоритм шифрования данных), использующего ключи длиной 128 бит. Он был изобретен в Швейцарии в те времена, когда DES уже считался устаревшим, а AES еще не был придуман. Концептуально IDEA похож на DES/AES: производится смешивание разрядов в серии, однако детали реализации функций отличаются от DES и AES. Управление ключами происходит с помощью RSA, а для задач обеспечения целостности данных применяется MD5. Все эти методы мы обсуждали ранее.

История создания системы PGP весьма запутана с первого дня (Levy, 1993). Поскольку она свободно распространялась через Интернет, правительство США объявило, что Циммерман нарушил закон, запрещающий экспорт военного имущества. Следствие по этому делу длилось пять лет, однако в один прекрасный день прекратилось по двум основным причинам. Во-первых, Циммерман собственноручно не выкладывал PGP в Интернете, и адвокат аргументировал позицию защиты тем, что обвиняемый сам никогда не занимался экспортом чего бы то ни было (кроме того, еще надо доказать, что создание сайта равносильно экспорту). Во-вторых, правительство вдруг осознало, что выигрыш дела означал бы, что любой веб-сайт, содержащий загружаемые программы, связанные с секретностью, подпадает под действие закона о торговле такими предметами, как танки, подводные лодки, военные самолеты и ядерное оружие.

Честно говоря, законы, касающиеся экспорта, кажутся несколько диковатыми. Правительство решило, что размещение программы на веб-странице можно приравнять к нелегальному экспорту, и надоедало Циммерману по этому поводу целых 5 лет. С другой стороны, если кто-то опубликует в книге полный исходный код PGP на языке С (крупным шрифтом, да еще и с контрольной суммой в конце каждой страницы, что облегчит сканирование) и затем займется экспортом этой книги, правительство и глазом не моргнет: книги по закону не являются военным имуществом.

Еще одна проблема, с которой внезапно столкнулась система PGP, была связана с посягательством на патентные права. Владелец патента на RSA корпорация RSA Security сослалась на то, что использование метода RSA в PGP является посягательством на патент. Эта проблема разрешилась в версиях начиная с 2.6. Кроме того, в PGP используется другой запатентованный алгоритм, IDEA, что поначалу тоже вызывало некоторые вопросы.

Так как PGP — это система с открытым исходным кодом, появилось множество модификаций, созданных различными группами и отдельными заинтересованными лицами. Некоторые из них пытались каким-то образом обойти законы об экспорте оружия, другие старались избежать применения запатентованных алгоритмов, а третьи работали над превращением PGP в коммерческий продукт с закрытым исходным кодом. Несмотря на то что законы об экспорте оружия несколько смягчились (тем не менее продукцию, использующую AES, до сих пор нельзя экспортировать за пределы США), а срок действия патента RSA закончился в сентябре 2000 года, следствием всех этих проблем стало появление и распространение нескольких несовместимых версий PGP, имеющих разные названия. Ниже обсуждается классический вариант PGP, он же является самым старым и простым. Еще одна популярная версия, Open PGP, описана в RFC 2440. Можно отметить еще GNU Privacy Guard.

В системе PGP намеренно используются уже существующие криптографические алгоритмы, а не изобретаются новые. Все они прошли тщательную проверку ведущими криптоаналитиками мира, и история создания этих алгоритмов не запятнана участием каких-либо государственных организаций, пытающихся их ослабить. Последнее качество является особенно большим преимуществом для всех, кто склонен не доверять правительству.

Система PGP поддерживает сжатие текста, секретность и цифровые подписи, а также предоставляет исчерпывающие средства управления ключами. Как ни странно, не поддерживаются средства электронной почты. Она больше всего похожа на препроцессор, берущий на входе открытый текст и создающий на выходе подписанный шифротекст, представленный в формате base64. Разумеется, эти выходные данные можно отправить по электронной почте. Некоторые реализации на последнем шаге обращаются к пользовательскому агенту, чтобы упростить задачу реальной отправки сообщения.

Чтобы понять, как работает система PGP, рассмотрим пример на рис. 8.40. Алиса хочет надежным способом послать Бобу открытым текстом подписанное сообщение Р. У Алисы и у Боба есть закрытый (DX ) и открытый (EX ) RSA-ключи. Предположим, что каждому из них известен открытый ключ другого. Способы передачи ключей мы рассмотрим позднее.

Алиса начинает с того, что запускает на своем компьютере программу PGP. Программа PGP сначала хэширует ее сообщение Р с помощью алгоритма MD5, а затем шифрует полученный хэш при помощи ее закрытого RSA-ключа DA. Получив это сообщение, Боб может расшифровать хэш открытым ключом Алисы и убедиться в его правильности. Даже если какой-либо злоумышленник (например, Труди) мог полу-

чить хэш на этой стадии и расшифровать его известным открытым ключом Алисы, сила алгоритма MD5 гарантирует невозможность создания другого сообщения с тем же хэшем (из-за трудоемкости вычислений).

Компьютерные сети. 5-е издание - _522.jpg

Рис. 8.40. Использование системы PGP для передачи сообщения

Затем зашифрованный хэш-код и оригинальное сообщение объединяются в единое сообщение P1, которое сжимается с помощью программы ZIP, использующей алгоритм Лемпеля—Зива (Ziv и Lempel, 1977). Будем называть результат этого этапа P1.Z.

Затем программа PGP предлагает Алисе ввести случайную текстовую строку. При формировании 128-разрядного ключа сообщения KM для алгоритма IDEA учитываются как содержимое, так и скорость ввода. (В литературе по PGP этот ключ назван сеансовым, что является неправильным употреблением термина, так как никакого сеанса нет.) Затем P1.Z шифруется алгоритмом IDEA с помощью ключа KM в режиме шифрованной обратной связи. Кроме того, ключ KM шифруется открытым ключом Боба, EB. Эти два компонента объединяются и преобразуются в кодировку base64, о которой уже рассказывалось в главе 7, когда мы говорили о стандартах MIME. Получающееся в результате сообщение содержит только буквы, цифры и символы +, * и =, что означает — это сообщение может быть помещено в тело письма стандарта RFC 822 и можно надеяться, что оно прибудет к получателю без изменений.

298
{"b":"639789","o":1}