PGP: Кодирование и шифрование информации с открытым ключом - [2]
Если секретность вне закона, то только люди вне закона будут ею обладать. Секретные агентства имеют доступ к хорошей криптографической технологии. Такой же технологией пользуются перевозчики оружия и наркотиков. Так поступают нефтяные компании и другие корпорации-гиганты. Но обычные люди и массовые организации в своем большинстве не имели доступа к криптографическим технологиям "военного уровня" с использованием открытого ключа. До сих пор.
PGP позволяет людям взять секретность в собственные руки. Сейчас налицо возрастающая социальная потребность для этого.
Как PGP работает.
Это поможет вам, если вы уже были знакомы с концепцией криптографии вообще, и криптографии с открытым ключом в частности. Тем не менее, есть небольшое количество вводных замечаний относительно криптографии с открытым ключом.
Сначала немного терминологии. Предположим, что я хочу послать вам сообщение, но не хочу, чтобы кто-либо, кроме вас, имел возможность его прочитать. Я могу "шифровать" или "кодировать" сообщение, это означает, что я закодирую его весьма сложным образом, что обеспечит невозможность прочтения для кого угодно, кроме вас, адресата. Я беру криптографический "ключ" для шифровки сообщения, и вы тоже должны использовать тот же самый ключ, чтобы декодировать или "расшифровать" его. По крайней мере, так это работает в стандартной криптографической системе с одним ключом.
В стандартных криптографических системах, таких, как US Federal Data Encryption Standard (DES), один и тот же ключ используется и для шифрования, и для расшифровки. Это значит, что ключ должен первоначально быть передан через секретные каналы так, чтобы обе стороны могли иметь его до того, как шифрованные сообщения будут посылаться по обычным каналам. Это может быть неудобно. Если вы имеете секретный канал для обмена ключами, тогда вообще, зачем вам нужна криптография?
В криптографической системе с открытым ключом каждый имеет два связанных взаимно однозначно ключа: публикуемый открытый ключ и секретный ключ. Каждый из них дешифрует код, сделанный с помощью другого. Знание открытого ключа не позволяет вам вычислить соответствующий секретный ключ. Открытый ключ может публиковаться и широко распространяться через коммуникационные сети. Такой протокол обеспечивает секретность без необходимости использовать специальные каналы связи, необходимые для стандартных криптографических систем.
Кто угодно может использовать открытый ключ получателя, чтобы зашифровать сообщение ему, а получатель использует его собственный соответствующий секретный ключ для расшифровки сообщения. Никто, кроме получателя, не может расшифровать его, потому что никто больше не имеет доступа к секретному ключу. Даже тот, кто шифровал сообщение, не будет иметь возможности расшифровать его.
Кроме того, обеспечивается также установление подлинности сообщения. Собственный секретный ключ отправителя может быть использован для шифровки сообщения, таким образом "подписывая" его. Так создается электронная подпись сообщения, которую получатель (или кто-либо еще) может проверять, используя открытый ключ отправителя для расшифровки. Это доказывает, что отправителем был действительно создатель сообщения и что сообщение впоследствии не изменялось кем-либо, так как отправитель — единственный, кто обладает секретным ключом, с помощью которого была создана подпись. Подделка подписанного сообщения невозможна, и отправитель не может впоследствии изменить свою подпись.
Эти два процесса могут быть объединены для обеспечения и секретности, и установления подлинности: сначала подписывается сообщение вашим собственным секретным ключом, а потом шифруется уже подписанное сообщение открытым ключом получателя. Получатель делает наоборот: расшифровывает сообщение с помощью собственного секретного ключа, а затем проверяет подпись с помощью вашего открытого ключа. Эти шаги выполняются автоматически с помощью программного обеспечения получателя.
В связи с тем, что алгоритм шифрования с открытым ключом значительно медленнее, чем стандартное шифрование с одним ключом, шифрование сообщения лучше выполнять с использованием высококачественного быстрого стандартного алгоритма шифрования с одним ключом. Первоначальное незашифрованное сообщение называется "открытым текстом" (или просто текст). В процессе, невидимом для пользователя, временный произвольный ключ, созданный только для этого одного "сеанса", используется для традиционного шифрования файла открытого текста. Тогда открытый ключ получателя используется только для шифровки этого временного произвольного стандартного ключа. Этот зашифрованный ключ "сеанса" посылается наряду с зашифрованным текстом (называемым "ciphertext" — "зашифрованный") получателю. Получатель использует свой собственный секретный ключ, чтобы восстановить этот временный ключ сеанса, и затем применяет его для выполнения быстрого стандартного алгоритма декодирования с одним ключом, чтобы декодировать все зашифрованное сообщение.
Открытые ключи хранятся в виде "сертификатов ключей", которые включают в себя идентификатор пользователя владельца ключа (обычно это имя пользователя), временную метку, которая указывает время генерации пары ключей, и собственно ключи. Сертификаты открытых ключей содержат открытые ключи, а сертификаты секретных ключей — секретные. Каждый секретный ключ также шифруется с отдельным паролем. Файл ключей, или каталог ключей ("кольцо с ключами" — "keyring") содержит один или несколько таких сертификатов. В каталогах открытых ключей хранятся сертификаты открытых ключей, а в каталогах секретных — сертификаты секретных ключей.