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