PGPФ (Pretty GoodФ Privacy).

Автор Филипп Циммерман.

Элементарные сведения:

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

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

Подлинность отправителя обеспечивается следующим образом:

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

Два данных способа могут комбинироваться для обеспечения конфиденциальности и подлинности сначала подписанием сообщения с помощью Вашего собственного секретного ключа, затем шифровкой подписанного сообщения общественным ключом получателя. Получатель выполняет эти шаги в обратном порядке сначала расшифровкой сообщения своим собственным секретным ключом и затем проверкой вложенной электронной подписи Вашим общественным ключом. Эти шаги выполняются автоматически с помощью специальной программы получателя. Так как алгоритм шифровки общественным ключом более медленный чем обычный одноключевой алгоритм, то рекомендуется в такой схеме шифровать сообщение с использованием высококачественным быстрым обычным одноключевым шифровочным ключом. Это оригинальное не шифрованное сообщение называется “плэйн-текст”. В невидимом пользователю процессе временный созданный генератором случайных величин ключ только для одного данного “сеанса”, используется для обычной шифровки плэйн-текст файла. Далее общественный ключ получателя используется для шифровки данного временного обычного ключа. Данный зашифрованный общественным ключом обычный ключ “сеанса” посылается получателю вместе с зашифрованным текстом (называемый “шифротекст”). Получатель использует свой собственный секретный ключ, чтобы восстановить данный временный ключ “сеанса” и затем использует этот ключ для запуска быстрой расшифровки большого сообщения в шифротексте. Общественные ключи хранятся в индивидуальных “сертификатах ключей”, которые содержат Идентификационный номер владельца ключа (которое является именем данного лица), штамп времени, когда была сгенерирована данная пара ключей и реальный материал ключа. Сертификаты общественных ключей содержат материал общественных ключей, в то время как сертификаты секретных ключей содержат материалы секретных ключей. Каждый секретный ключ также зашифрован своим собственным паролем на случай если он будет украден. Ключ-файл, или “связка ключей” содержит один или более данных ключевых сертификатов. Связка общественных ключей содержит сертификаты общественных ключей и секретная связка ключей содержит сертификаты секретных ключей. Ключи также внутренне различаются по “Идентификаторам ключей”, являющиеся “аббревиатурами” общественных ключей (крайние значимые 64 бита большого общественного ключа). При отображении данного идентификатора ключа, только нижние 32м бита показываются для дальнейшей краткости. В то время как множество ключей может могут обладать тем же идентификатором пользователя ключа, то из практических целей никакие два ключа не могут иметь одинаковые идентификаторы ключей.

PGP использует “дайджест сообщения” для создания подписи. Дайджест сообщения является 128-битной криптографически надежной односторонне шифруемой функцией сообщения. Это что-то наподобие “сверки сумм” или код проверки ошибок CRC, в чем она компактно “представляет” сообщение и используется для обнаружения изменений в сообщении. Однако в отличие от CRC для взломщика численно невозможно выдумать подмену сообщения, который произвел бы идентичный дайджест сообщения. Дайджест сообщения зашифровывается секретным ключом для создания подписи. Документы подписываются путем помещением в начало сертификатами подписи, которые содержат ключ идентификатор ключа, который был использован для его подписи, подписанный секретным ключом дайджест сообщения документа и штамп времени, когда была поставлена подпись. Ключ идентификатор используется получателем для просмотра общественного ключа отправителя для проверки подписи. Программное обеспечение получателя автоматически просматривает общественный ключ отправителя для проверки подписи и идентификатор пользователя в связке общественных ключей получателя. В заголовок зашифрованных файлов помещается идентификатор ключа общественного ключа, используемого для их шифровки. Получатель использует ключ идентификатор данного префикса сообщения для просмотра секретного ключа, необходимого для расшифровки сообщения. Программа получателя автоматически просматривает необходимый секретный расшифровочный ключ в связке ключей секретных получателя.

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