PGP - система шифрования корреспонденции

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


Программа PGP разработана в 1991 году Филиппом Зиммерман (Philip Zimmerman). В ней применены сжатие данных перед шифрованием, мощное управление ключами, вычисления контрольной функции для цифровой подписи, надежная генерация ключей.
В основе работы PGP лежат сразу два криптоалгоритм - обычные алгоритмы шифрования с закрытым ключом и алгоритм шифрования с открытым ключом. Алгоритм шифрования с закрытым ключом требует защищенного канала для передачи этого самого ключа (ведь тем самым ключом можно как зашифровать, так и расшифровать сообщение). Система с открытым ключом позволяет распространять ключ для зашифровки сообщения совершенно свободно (это открытый ключ), однако расшифровать сообщение с помощью второго, закрытого ключа, который хранится только у пользователя. Более того, это справедливо и в обратную сторону - расшифровать сообщение, зашифрованное закрытым ключом, можно только с помощью открытого ключа. Недостатком данного алгоритма является крайне низкая скорость его выполнения.


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


Когда пользователь шифрует сообщение с помощью PGP, программа сначала сжимает текст, убирая избыточность, что сокращает время на отправку сообщения через модем и повышает надежность шифрования. Большинство приемов криптоанализа (взлома зашифрованных сообщений) основаны на исследовании «рисунков», присущих текстовым файлам. Путем сжатия эти «картинки» ликвидируются. Затем программа PGP генерирует сессионный ключ, который представляет собой случайное число, созданное за счет движений мыши и нажатий клавиш клавиатуры пользователя.
Как только данные будут зашифрованы, сессионный ключ зашифровывается с помощью открытого ключа получателя сообщения, отправляемого к получателю вместе с зашифрованным текстом.


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


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


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


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