Книга шифров. Тайная история шифров и их расшифровки
Шрифт:
Циммерман же, напротив, считал, что каждый заслужил право на частную жизнь, которую предлагает шифрование RSA, и направил все свое рвение на создание программного продукта для шифрования RSA для масс. Он намеревался воспользоваться своим опытом в программировании для создания экономичной и эффективной программы, которая не вызовет перегрузки обычного персонального компьютера, а также хотел придать своему варианту RSA исключительно удобный интерфейс, чтобы пользователю не нужно было быть знатоком криптографии для работы с ним. Циммерман назвал свой проект Pretty Good Privacy, или, для краткости, PGP. На это его вдохновило название фирмы-спонсора одной из его любимых радиопостановок Гаррисона Кейлора.
В конце 80-х годов, трудясь у себя дома в Боулдере, штат Колорадо, Циммерман постепенно соединил воедино свой пакет программ, осуществляющий шифрование. Его основной целью было ускорить шифрование RSA. Обычно если Алиса
Циммерман представил следующий план действий. Если Алиса хочет послать зашифрованное сообщение Бобу, она начинает с того, что зашифровывает его с помощью симметричного шифра. Циммерман предложил использовать шифр, известный как IDEA и который похож на DES. Для зашифровывания с помощью IDEA Алисе нужно выбрать ключ, но чтобы Боб смог расшифровать сообщение, Алисе надо каким-то образом передать этот ключ ему. Алиса справляется с этим затруднением: она находит открытый ключ RSA Боба, а затем использует его, чтобы зашифровать ключ IDEA. Таким образом Алиса завершает свои действия, высылая Бобу сообщение, зашифрованное симметричным шифром IDEA, и ключ IDEA, зашифрованный асимметричным шифром RSA. На другом конце Боб использует свой секретный ключ RSA, чтобы расшифровать ключ IDEA, а затем использует ключ IDEA, чтобы расшифровать сообщение. Это может показаться слишком сложным, но преимущество заключается в том, что сообщение, которое может содержать большой объем информации, зашифровывается быстрым симметричным шифром, и только симметричный ключ IDEA, состоящий из сравнительно небольшого количества информации, зашифровывается медленным асимметричным шифром. Циммерман предполагал включить эту комбинацию RSA и IDEA в свою программу PGP, но удобный интерфейс означает, что пользователя не должно волновать, что при этом происходит.
Разрешив, в основном, проблему быстродействия, Циммерман включил также в PGP ряд полезных свойств. Например, перед применением RSA, Алисе необходимо сгенерировать свои секретный и открытый ключи. Процесс создания ключа не прост, поскольку требует нахождения пары огромных простых чисел. Но единственное, что следует сделать Алисе, — это случайным образом подвигать своей мышкой, и программа PGP создаст ее секретный и открытый ключи; движениями мышки вводится случайный фактор, который используется в PGP и благодаря которому гарантируется, что у каждого пользователя будет своя отличающаяся от других пара простых чисел и, тем самым, своя уникальная комбинация секретного и открытого ключей. После этого Алиса должна просто известить о своем открытом ключе.
Еще одно полезное свойство PGP — простота выполнения электронной подписи на сообщениях, отправляемых по электронной почте. Как правило, на этих сообщениях подпись не ставится, что означает невозможность проверки подлинности автора электронного сообщения. Например, если Алиса воспользуется электронной почтой, чтобы послать Бобу любовное письмо, она зашифрует его открытым ключом Боба, а тот, когда получит, расшифрует его своим секретным ключом. Вначале Бобу это льстит, но может ли он быть уверен, что любовное письмо действительно от Алисы? Возможно, что злокозненная Ева написала это электронное письмо и подписалась именем Алисы в конце. Кроме заверения собственноручно написанной чернилами подписью другого явного способа проверить авторство нет.
Или же представьте себе, что банк получает электронное письмо от клиента, в котором отдаются распоряжения, чтобы все его денежные средства были перечислены на номерной банковский счет частного лица на Каймановых островах. Опять-таки без собственноручно написанной подписи как может банк знать, что это электронное письмо действительно пришло от клиента? Оно могло бы быть написано преступником, пытающимся переместить денежные средства на свой банковский счет на Каймановых островах. Для выработки доверия к Интернету важно, чтобы существовала какая-либо форма достоверной цифровой подписи.
Цифровая подпись в PGP основана на принципе, который был впервые разработан Уитфилдом Диффй и Мартином Хеллманом. Когда они предложили идею о раздельных открытых и секретных ключах, то поняли, что наряду с решением проблемы распределения ключей их открытие позволяет также создавать подписи для электронных писем. В главе 6 мы видели, что открытый ключ используется для зашифровывания, а секретный ключ — для расшифровывания. На самом деле эти операции можно поменять местами, так что для зашифровывания будет использоваться секретный ключ, а для расшифровывания — открытый ключ. Режим зашифровывания как правило, игнорируется, поскольку никакой безопасности он не обеспечивает. Если Алиса применяет свой секретный ключ, чтобы зашифровать сообщение для Боба, то каждый может расшифровать его, потому что у всех есть открытый ключ Алисы. Но как бы то ни было, данный режим подтверждает авторство, так как если Боб может расшифровать сообщение с помощью открытого ключа Алисы, значит, оно должно было быть зашифровано с использованием ее секретного ключа; но только у Алисы имеется доступ к своему секретному ключу, поэтому данное сообщение было отправлено Алисой.
В сущности, если Алиса хочет послать Бобу любовное письмо, у нее есть две возможности. Либо она зашифрует сообщение с помощью открытого ключа Боба, чтобы обеспечить секретность переписки, либо она зашифрует его своим собственным секретным ключом, чтобы подтвердить авторство. Однако если она объединит обе операции, то сможет гарантировать и секретность переписки, и авторство. Существуют более быстрые способы для достижения этого, но здесь приводится один из способов, которым Алиса может послать свое любовное письмо. Она начинает с того, что зашифровывает сообщение с помощью своего секретного ключа, а затем зашифровывает получающийся зашифрованный текст, используя открытый ключ Боба. Вообразите себе сообщение, окруженное хрупкой внутренней оболочкой, которая представляет собой шифрование, выполненное с помощью секретного ключа Алисы, и прочную наружную оболочку, представляющую шифрование с использованием открытого ключа Боба. Получающийся шифртекст может быть расшифрован только Бобом, потому что только он имеет доступ к секретному ключу, необходимому для того, чтобы разбить эту прочную наружную оболочку. Расшифровав наружную оболочку, Боб затем сможет легко расшифровать с помощью открытого ключа Алисы и внутреннюю оболочку; эта внутренняя оболочка служит не для того, чтобы защитить сообщение, она удостоверяет, что данное сообщение пришло от Алисы, а не от какого-нибудь мошенника.
К этому моменту отправка зашифрованного PGP сообщения становится довольно сложной. Шифр IDEA используется для того, чтобы зашифровать сообщение, RSA применяется для зашифровывания ключа IDEA, а если необходима цифровая подпись, то должен быть задействован еще один этап шифрования. Однако Циммерман разработал свою программу таким образом, что она все будет делать автоматически, так что Алисе и Бобу не придется беспокоиться о математике. Чтобы отправить сообщение Бобу, Алиса просто напишет свое электронное письмо и выберет из меню на экране своего компьютера нужную опцию PGP. Затем она введет имя Боба, после чего PGP отыщет открытый ключ Боба и автоматически выполнит зашифровывание. Одновременно с этим PGP будет проделывать все необходимые манипуляции, требующиеся для создания электронной подписи на сообщении. При получении зашифрованного сообщения Боб выберет опцию PGP, и PGP расшифрует сообщение и удостоверит подлинность автора. В PGP нет ничего нового: Диффи и Хеллман уже придумали цифровые подписи, а другие криптографы пользовались комбинацией симметричного и асимметричного шифров для повышения скорости шифрования, но Циммерман первым объединил все это в простом в применении программном продукте для шифрования, который оказался достаточно эффективным для использования на персональном компьютере средних размеров.
К лету 1991 года Циммерман уже готов был придать PGP законченный вид. Оставались только две проблемы, причем ни одна из них не являлась технической. Одна из них — и проблема эта стояла довольно длительное время — заключалась в том, что RSA, который лежал в основе PGP, являлся запатентованным продуктом, а по патентному законодательству, перед тем как выпустить PGP, Циммерману требовалось получить лицензию у компании RSA Дата Секью-рити Инк. Однако Циммерман решил пока отложить эту проблему. PGP задумывалась не как программа для предприятий и компаний, а скорее как программа для отдельных людей. Он полагал, что не станет непосредственно конкурировать с RSA Дата Секьюрити Инк., и надеялся, что компания без задержки предоставит ему свободную лицензию.