Итак, что такое PGP? Это сокращение от 'Pretty Good Privacy' - названия
популярной системы шифрования с _открытым_ ключом.
Что такое система шифрования с открытым ключом? Hу, ты наверняка знаешь системы
с _закрытым_ ключом - например, это все архиваторы и большинство шифровщиков.
Для расшифровки в них используется тот же ключ (пароль), который был использован
для шифровки. Если этот ключ станет известен ещё кому-то - всё, нужно срочно его
менять, он больше не обеспечивает секретности.
Это удобно для закрытия личной информации, которую ты не хочешь показывать
_никому_. Hо что, если ты хочешь передать что-то другому человеку так, чтобы по
пути никто не влез в эту информацию?
Ты можешь завернуть файлы в архив с паролем, который знаешь только ты и твой
друг. Так многие сейчас и делают. Hо здесь есть уязвимое место: как сообщить
другу пароль? Для этого нужно быть уверенным, что никто по пути этот пароль не
перехватит. Получается замкнутый круг. Если ты можешь передать другу пароль
_лично_ - значит, как правило, ты можешь просто передать ему саму секретную
информацию, не возясь с паролями.
Единственное, пожалуй, исключение - если вы заранее договоритесь о пароле,
которым ты будешь шифровать всю поступающую информацию для передачи другу.
Hапример, если друг куда-то уезжает, и вы собираетесь в дальнейшем поддерживать
связь через электронную почту.
Hо что, если ты познакомился с человеком в какой-нибудь эхе, а человек живёт в
другом городе и встретиться лично - большая проблема? Вот для этого и придумана
система шифрования с открытым ключом.
Принципиальное отличие таких систем заключается в том, что они работают не с
одним ключом, а с _парой_ ключей. То, что зашифровано первым ключом, может быть
расшифровано _только_ при помощи второго, и наоборот.
Таким образом, ты хранишь у себя первый - _секретный_ - ключ, и никому его не
показываешь. Второй ключ - _публичный_ - ты раздаёшь всем друзьям, рассылаешь по
FIDO, вставляешь в комментарии к своим архивам...
Теперь, если друг хочет передать тебе секретную информацию, он зашифрует её
твоим _публичным_ ключом и отправит тебе. Расшифровать её можно только при
помощи _секретного_ ключа, который есть только у тебя. Чтобы ты мог посылать
другу секретную информацию, он должен сообщить тебе _свой_ публичный ключ.
Вот это и есть тот самый 'PGP public key', который ты видел.
Кроме того, таким же образом можно организовывать _электронную_подпись_ (это
некоторое подобие Authenticity verification, реализованной в большинстве
архиваторов). В этом случае по содержимому твоей информации (архива, мессаги
etc.) рассчитывается специальная контрольная сумма, которая затем шифруется
твоим _секретным_ ключом. После этого каждый, у кого есть твой _публичный_ ключ,
может рассчитать такую же сумму и сравнить её с результатом расшифровки. Если не
совпадёт - значит, кто-то копался в информации и что-то в ней изменил.
(Authenticity verification работает аналогично, но там просто рассчитывается
контрольная сумма содержимого архива, и все данные для сравнения содержатся в
том же архиве; получателю не нужно иметь твоего ключа, зато, в принципе, AV
достаточно (относительно, конечно) легко подделать).
Это называется 'PGP signature', которую ты, возможно, тоже видел.
Hо у этого метода есть свои недостатки.
Во-первых, и его можно взломать методом перебора, поскольку исходные тексты
распространяются _открыто_. Hо алгоритм шифровки достаточно сложен и работает
долго, поэтому при нынешнем уровне быстродействия компьютеров это пока не очень
реально.
Во-вторых - и это самое серьёзное - опасность скрыта в возможности подделки
_публичного_ ключа. Что, если кто-то начнёт распространять _свой_ публичный
ключ, подписываясь _твоим_ именем? Тогда он сможет получать письма, которые люди
будут посылать тебе, думая, что ключ передал ты. Правда, ты сам эти письма
расшифровать не сможешь - соответствующего секретного ключа у тебя нет. Или он
сможет рассылать всякую гадость, прикрываясь твоим именем и якобы твоим
публичным ключом. Вот откуда взялись фразы:
EP> "...если увидете несовпадения - бейте тревогу..."
Поэтому, по возможности, свой ключ надо посылать не открыто, а через посредника
- человека, которому ты доверяешь и чей публичный ключ известен твоему другу,
чтобы этот посредник мог сопроводить _твой_ ключ _своей_ PGP-сигнатурой.
EP> Hо "то это", "зачем это", "и где мне тоже взять" для меня не ясно :)
Что и зачем - я рассказал. Где - как обычно, поищи на BBS файл PGP*.* (у меня,
например, есть PGP20.ZIP, ~180K, но за пределы 2:463 я его отсылать не буду - и
поближе найдётся).
Andrzej Novosiolov, 2:463/51.32 (04 Feb 96)