В процессе «РGР»-шифрования информация сначала сжимается по известному алгоритму «ZIP». Сжатие не только уменьшает время передачи и экономит объём памяти, но и, что намного более важно, повышает криптостойкость. Связано это с тем, что много методов криптоанализа основано на поиске стойких соединений (так называемых паттернов), которые всегда встречаются в тексте. Сжатие уменьшает их число, чем существенно улучшает противодействие криптоанализу.
Затем «PGP» создаёт одноразовый сеансовый ключ — симметричный (секретный) ключ, который применяется только для одной операции. Этот ключ представляет собой псевдослучайное число, сгенерированное компьютером из импульсов, полученных им от случайных движений «мыши» и нажатий клавиш. С помощью этого ключа и надёжного, быстрого симметричного алгоритма «PGP» шифрует сжатое сообщение, получая в итоге зашифрованный файл. После этого она шифрует и сам секретный сеансовый ключ — по асимметричной схеме с помощью открытого ключа адресата. Данные о сеансовом ключе передаются вместе с зашифрованным файлом.
Дешифровка выполняется в обратном порядке. Сначала «РGР»-программа получателя «достаёт» из сообщения данные о сеансовом ключе, дешифрует его, используя закрытый ключ, и только потом дешифрует само сообщение.
Вот уже три десятилетия можно наблюдать за развитием отношений между традиционной (симметричной) и асимметричной криптологией. После появления последней казалось, что теперь можно решать массу новых задач, но пока строились теоретические модели. В идеале — все элементарно. Если вы собираетесь написать кому-то секретное письмо, то загружаете открытый ключ адресата с ключевого сервера, шифруете с его помощью письмо и отправляете его по электронной почте.
Однако в игре может появиться третий участник, который заранее создал свой открытый ключ с идентификатором вашего потенциального адресата и подменил на сервере настоящий ключ на свою фальшивку. Вы, ни о чём не подозревая, использовали подделку. Теперь злоумышленник может перехватить и дешифровать ваше сообщение. Он даже может перешифровать письмо правильным открытым ключом и отправить по назначению, так что и наименьшего подозрения ни у кого не возникнет. Так же, как в «чёрном кабинете», — «отпарили» конверт, прочитали письмо, заклеили и вернули его на почту.
Единственный способ избежать подобных ситуаций — получать открытые ключи непосредственно от их владельцев, то есть мы возвращаемся к проблеме защищённого канала передачи ключа.
Другой вариант — получить ключ от доверенного лица, о котором вам известно, что оно имеет достоверную копию необходимого открытого ключа. Этот посредник может даже засвидетельствовать целостность ключа своей подписью, зашифрованной с помощью собственного приватного ключа, то есть создать подписанный сертификат достоверности ключа. Он может также хранить и передавать желающим достоверную копию вашего открытого ключа, выступая между вами и вашими корреспондентами в качестве доверенного представителя.
Уитфилд Диффи и Мартин Хеллман в своей статье «Новые пути криптографии» предложили также и протокол «открытого распределения ключей». Открытое распределение ключей имеет в виду независимое генерирование каждым из пары пользователей своего случайного числа, превращение его с помощью некой процедуры обмена преобразованными числами по каналу связи и вычисление общего секретного ключа на основе информации, полученной по каналу связи от партнёра, и своего случайного числа. Каждый такой ключ существует только в течение одного сеанса связи (или даже части сеанса).
Таким образом, открытое распределение ключей позволяет паре пользователей системы создать общий секретный ключ, не имея заранее распределённых секретных элементов. При этом две функции общего секретного ключа, традиционно доставляемого из Центра, — защита информации в канале связи от третьей стороны и подтверждение подлинности каждого из абонентов его партнёру, — разделяются.
Действительно, отсутствие у абонентов перед сеансом связи заранее распределённого общего секретного ключа в принципе не даёт им возможности удостовериться с абсолютной надёжностью в легитимности друг друга с помощью только обмена сообщениями по открытому каналу. Для достоверного подтверждения легитимности каждый из них должен иметь специальный признак (пароль), известный только ему и отличающий его от всех других. Должна быть обеспечена такая процедура предъявления пароля, чтобы его многоразовое использование не снижало надёжности доказательства легитимности владельца.
Из практически действующих сетей связи, которые используют систему открытого распределения ключей, наиболее серьёзно защищённой является телефонная государственная сеть США на основе аппаратов «STU-III». Она начала функционировать в 1987 году и содержит в настоящий момент более 150 тысяч абонентов. В России аналогичная сеть, названная еще «АТС-1» или «вертушкой», также надёжно защищена, но абонентов там в сотне раз меньше.