Кто угодно может использовать открытый ключ получателя, чтобы зашифровать сообщение ему, а получатель использует его собственный соответствующий секретный ключ для расшифровки сообщения. Никто, кроме получателя, не может расшифровать его, потому что никто больше не имеет доступа к секретному ключу. Даже тот, кто шифровал сообщение, не будет иметь возможности расшифровать его.
Кроме того, обеспечивается также установление подлинности сообщения. Собственный секретный ключ отправителя может быть использован для шифровки сообщения, таким образом "подписывая" его. Так создается электронная подпись сообщения, которую получатель (или кто-либо еще) может проверять, используя открытый ключ отправителя для расшифровки. Это доказывает, что отправителем был действительно создатель сообщения и что сообщение впоследствии не изменялось кем-либо, так как отправитель — единственный, кто обладает секретным ключом, с помощью которого была создана подпись. Подделка подписанного сообщения невозможна, и отправитель не может впоследствии изменить свою подпись.
Эти два процесса могут быть объединены для обеспечения и секретности, и установления подлинности: сначала подписывается сообщение вашим собственным секретным ключом, а потом шифруется уже подписанное сообщение открытым ключом получателя. Получатель делает наоборот: расшифровывает сообщение с помощью собственного секретного ключа, а затем проверяет подпись с помощью вашего открытого ключа. Эти шаги выполняются автоматически с помощью программного обеспечения получателя.
В связи с тем, что алгоритм шифрования с открытым ключом значительно медленнее, чем стандартное шифрование с одним ключом, шифрование сообщения лучше выполнять с использованием высококачественного быстрого стандартного алгоритма шифрования с одним ключом. Первоначальное незашифрованное сообщение называется "открытым текстом" (или просто текст). В процессе, невидимом для пользователя, временный произвольный ключ, созданный только для этого одного "сеанса", используется для традиционного шифрования файла открытого текста. Тогда открытый ключ получателя используется только для шифровки этого временного произвольного стандартного ключа. Этот зашифрованный ключ "сеанса" посылается наряду с зашифрованным текстом (называемым "ciphertext" — "зашифрованный") получателю. Получатель использует свой собственный секретный ключ, чтобы восстановить этот временный ключ сеанса, и затем применяет его для выполнения быстрого стандартного алгоритма декодирования с одним ключом, чтобы декодировать все зашифрованное сообщение.
Открытые ключи хранятся в виде "сертификатов ключей", которые включают в себя идентификатор пользователя владельца ключа (обычно это имя пользователя), временную метку, которая указывает время генерации пары ключей, и собственно ключи. Сертификаты открытых ключей содержат открытые ключи, а сертификаты секретных ключей — секретные. Каждый секретный ключ также шифруется с отдельным паролем. Файл ключей, или каталог ключей ("кольцо с ключами" — "keyring") содержит один или несколько таких сертификатов. В каталогах открытых ключей хранятся сертификаты открытых ключей, а в каталогах секретных — сертификаты секретных ключей.
На ключи также внутренне ссылаются "идентификаторы ключей", которые являются "сокращением" открытого ключа (самые младшие 64 бита большого открытого ключа). Когда этот идентификатор ключа отображается, то показываются лишь младшие 24 бита для краткости. Если несколько ключей могут одновременно использовать один и тот же идентификатор пользователя, то никакие два ключа не могут использовать один и тот же идентификатор ключа.
PGP использует "дайджесты сообщений" для формирования подписи. Дайджест сообщения — это криптографически мощная 128-битная односторонняя хэш-функция от сообщения. Она несколько напоминает контрольную сумму, или CRC-код, она однозначно представляет сообщение и может использоваться для обнаружения изменений в сообщении. В отличие от CRC-кода (контроля циклическим избыточным кодом), дайджест не позволяет создать два сообщения с одинаковым дайджестом. Дайджест сообщения шифруется секретным ключом для создания электронной подписи сообщения.
Документы подписываются посредством добавления перед ними удостоверяющей подписи, которая содержит идентификатор ключа, использованного для подписи, подписанный секретным ключом дайджест сообщения и метку даты и времени, когда подпись была сгенерирована. Идентификатор ключа используется получателем сообщения, чтобы найти открытый ключ для проверки подписи. Программное обеспечение получателя автоматически ищет открытый ключ отправителя и идентификатор пользователя в каталоге открытых ключей получателя.
Шифрованным файлам предшествует идентификатор открытого ключа, который был использован для их шифрования. Получатель использует этот идентификатор для поиска секретного ключа, необходимого для расшифровки сообщения. Программное обеспечение получателя автоматически ищет требуемый для расшифровки секретный ключ в каталоге секретных ключей получателя.
Эти два типа каталогов ключей и есть главный метод сохранения и работы с открытыми и секретными ключами. Вместо того, чтобы хранить индивидуальные ключи в отдельных файлах ключей, они собираются в каталогах ключей для облегчения автоматического поиска ключей либо по идентификатору ключа, либо по идентификатору пользователя. Каждый пользователь хранит свою собственную пару каталогов ключей. Индивидуальный открытый ключ временно хранится в отдельном файле, достаточно большом для посылки его вашим друзьям, которые добавят его в свои каталоги ключей.
Установка PGP.
Версия PGP 2.2 для MS-DOS распространяется в виде архивного файла с именем PGP22.ZIP (каждая новая версия будет иметь имя вида PGPxy.ZIP для PGP с номером версии x.y). Этот архив нужно распаковать с помощью утилиты PKUNZIP для MS-DOS (распространяемой как shareware) или утилиты для Unix unzip. Пакет с очередной версией PGP содержит файл README.DOC, который вам нужно прочитать перед установкой PGP. Этот файл содержит последние новости о том, что нового в данной версии PGP, а также о том, что находится в остальных файлах архива.
Если у вас уже есть версия 1.0 PGP для MS-DOS, вы можете удалить ее, так как никто более не использует ее. Если вы не хотите ее удалять, переименуйте старый исполняемый файл в pgp1.exe для предотвращения конфликта имен файлов.
Для установки PGP на вашей системе MS-DOS, вы должны просто скопировать архив PGPхх.ZIP в подходящий каталог на вашем жестком диске (например, C:\PGP), и распаковать его с помощью PKUNZIP. Для более эффективной работы с PGP, вам также будет необходимо изменить ваш файл AUTOEXEC.BAT, как описано далее в этом руководстве, но вы можете сделать это позже, после того, как немного повозитесь с PGP и прочитаете это руководство. Если вы ранее не использовали PGP, первым шагом после установки (и прочтения настоящего руководства) будет запуск команды PGP для генерации ключей pgp –kg.
Установка в системах Unix и VAX/VMS в основном похожа на установку в MS-DOS, но для начала вам необходим исходный текст для компиляции. Для этого вариант с исходными текстами для Unix дополняется make-файлом.
Как использовать PGP.
Вывод краткой справки.
Для получения краткой справки об использовании команды PGP введите:
pgp -h
Шифрование Сообщения
Для шифровки текстового файла открытым ключом получателя, введите:
pgp -e textfile her_userid
В результате будет получен зашифрованный файл textfile.pgp.
Типичный пример:
pgp -e letter.txt Alice
или:
pgp -e letter.txt "Alice S"
В первом примере PGP будет искать в каталоге ваших открытых ключей "pubring.pgp" сертификаты открытых ключей, которые содержат строку "Alice" в поле идентификатора пользователя. Во втором примере PGP будет искать идентификаторы пользователя, которые содержат строку "Alice S". Нельзя использовать пробелы в командной строке, если вы не заключаете целую строку в кавычки. Поиск ведется без учета регистра. Если соответствующий открытый ключ найден, то он используется для шифровки текстового файла "letter.txt", получается зашифрованный файл "letter.txt".