Не храните парольную фразу на том же компьютере, что и закрытый ключ! Держать парольную фразу и сам ключ на одном ПК так же опасно, как держать свой PIN в одном бумажнике с банковской картой. Представьте, что будет, если кто-то получит доступ к диску, содержащему и закрытый ключ, и парольную фразу. Конечно, самое надёжное место для хранения парольной фразы — ваша собственная память. Если же вам кажется, что пароль всё-таки стоит записать, спрячьте запись и держите в безопасности, возможно даже в большей, чем сам ключ.
Сделайте несколько резервных копий закрытого ключа на разных носителях. Помните, что пока у вас только один экземпляр закрытого ключа, его потеря сделает бесполезными все копии открытого, которые вы распространили по миру, а вся зашифрованная информация окажется безвозвратно потеряна.
Децентрализованный не институциональный подход PGP по управлению открытыми ключами имеет как свои преимущества, так и недостатки: вы не можете полагаться на единый список аннулированных сертификатов, что делает ограничение последствий компрометации закрытого ключа более трудной задачей. Остаётся лишь распространить известие и надеяться, что о нём услышат все.
Если случилось худшее — закрытый ключ и его пароль оказались скомпрометированы (надо надеяться, вы как-то об этом узнали) — нужно немедленно издать сертификат аннулировании ключа (Key Revocation Certificate, KRC). Он применяется как предупредительная мера, блокирующая использование аннулированного открытого ключа. Вы можете издать сертификат KRC, воспользовавшись командой Отзыва (Revoke) из менеджера PGPkeys, либо попросить сделать это вашего "уполномоченного отменителя" (Designated Revoker). Затем нужно отправить этот сертификат на сервер-депозитарий. Любой потенциальный корреспондент, скачавший сертификат, не сможет намеренно или случайно воспользоваться вашим открытым ключом: PGP не позволит использовать его для шифрования, а при сличении подписей будет уведомлять, что ключ аннулирован. Теперь вы можете сгенерировать новую ключевую пару и опубликовать новый открытый ключ в Сети.
Что если вы потеряли закрытый ключ
Для аннулирования открытого ключа в обычной ситуации нужно воспользоваться в вашей программе командой Отзыва; так будет издан сертификат KRC, подписанный соответствующим закрытым ключом.
Но как поступить, если закрытый ключ оказался потерян, уничтожен, либо вы попросту забыли пароль? Вам не удастся самостоятельно аннулировать открытый ключ, поскольку для подписания сертификата аннулирования нужен закрытый ключ, которого у вас больше нет. Если у вас нет "доверенного отменителя", имеющего право по вашему требованию издать сертификат KRC, вам придётся лично попросить каждого человека, подписавшего открытый ключ, отозвать с него свою подпись. Тогда, если кто-то попытается воспользоваться им, полагаясь на мнение поручителей, он будет предупреждён не доверять состоянию вашего открытого ключа.
Берегитесь ханаанского бальзама
Приобретая новый криптографический продукт, всегда возникает вопрос: можно ли ему доверять? Даже лично изучив исходные тексты программы, далеко не каждый имеет математическое образование, чтобы судить о надёжности реализации криптосистемы. И будь вы даже опытным криптографом, незначительные уязвимости алгоритмов всё же могут остаться незамеченными.
В начале 70-х, ещё учась в колледже, я придумал, как тогда полагал, блестящую шифровальную схему. Простой поток псевдослучайных чисел объединялся с потоком открытого текста, производя шифртекст. Это должно было сделать его устойчивым к любому статистическому анализу, не позволяя взломать шифр даже самым могучим разведслужбам. Я почувствовал такое самодовольство!
Годы спустя я обнаружил такую же схему в ряде консультативных статей и вводных материалов по криптографии. Как мило, другим криптологам на ум пришла та же мысль! К сожалению, схема была представлена как простое домашнее задание по использованию элементарных криптоаналитических техник для её тривиального взлома. Вот и вся моя блестящая идея…
Из этого горького опыта я вынес, как легко, разрабатывая шифровальный алгоритм, впасть в ложное чувство защищённости. Большинство людей не предполагают, насколько это трудно изобрести алгоритм, который бы выдержал продолжительную атаку профессионального и обладающего огромными ресурсами оппонента. Многие заурядные разработчики создали равно неэффективные шифровальные схемы (зачастую одну и ту же схему), и некоторые из них были включены в коммерческие программные продукты, проданные за хорошие деньги тысячам ничего не подозревающих пользователей.
Это то же самое, что продавать автомобильные ремни безопасности, которые красивы и удобны, но мгновенно раскрываются даже в самом мягком крэш-тесте. Полагаться на них будет даже хуже, чем не пристёгивать ремень вообще. Никто и не поймёт, что он бесполезен, пока не попадёт в настоящую автокатастрофу. Используя слабый криптопродукт, вы, ничего не подозревая, можете поставить ценную информацию под угрозу, тогда как не сделали бы этого, вовсе не имея криптографических средств. Возможно, вы даже никогда не узнаете, что ваши данные были похищены.
Иногда в коммерческих продуктах реализован федеральный Стандарт шифрования данных — DES — весьма неплохой блочный шифр (за исключением слишком короткого ключа), рекомендованный правительством для коммерческого использования (но не для секретной информации, что довольно странно. Хммм). DES может работать в нескольких режимах, одни из которых лучше, чем другие. Правительство особо указывает не использовать при пересылке сообщений самый простой и слабый — электронную шифрокнигу (electronic codebook, ECB). Вместо него оно предлагает более стойкие и комплексные режимы гаммирования с обратной связью(cipher feedback, CFB) и сцепления блоков шифртекста (cipher block chaining, CBC).
К несчастью, большинство исследованных мною в начале 1990-х, когда я только опубликовал PGP, коммерческих пакетов использовали именно режим ECB. В беседах с некоторыми из авторов подобных разработок они отвечали, что никогда и не слышали о режимах CBC или CFB и не знают о слабостях ECB. В тех же продуктах иногда реализуются неадекватные и небезопасные протоколы управления ключами. Один тот факт, что они не изучили даже основ криптографии, чтобы понимать такие элементарные вещи, ничуть не воодушевляет. Кроме того, нередко такие программные продукты содержат альтернативный более быстрый алгоритм, который может быть использован вместо медленного DES. Разработчик программы, как правило, считает свой собственный быстрый алгоритм столь же надёжным, сколь и DES, но после разговора с ним я обычно выяснял, что это лишь вариация на тему моего собственного "блестящего" изобретения студенческих лет. Возможно он даже не понимает, как работает его алгоритм, но горячо уверяет меня, что это — великолепная схема, на которую можно положиться. Я знаю, что он считает свой алгоритм безупречным, но как мне проверить надёжность, не изучив его?
Справедливости ради стоит отметить, что компании, специализирующиеся на криптотехнологиях, не выпускают таких кошмарно слабых программ.
Но даже действительно хорошие программы, применяющие DES в верном режиме, всё же имеют проблемы. Обычный DES использует 56-битовый ключ, слишком короткий по сегодняшним меркам, который может быть с лёгкостью взломан полным перебором на специальных высокоскоростных машинах. Жизнь DES подошла к концу, равно завершилась жизнь всех его реализаций.
Есть компания под названием AccessData, торгующая очень дешёвой программой, которая взламывает шифровальные схемы, встроенные в WordPerfect, Lotus 1-2-3, MS Excel, Symphony, Quattro Pro, Paradox, MS Word и PKZIP. Она не просто угадывает пароль, а производит настоящий криптоанализ. Некоторые люди покупают её, когда забывают пароли к собственным файлам. Силовые структуры тоже её покупают, чтобы читать файлы, которые изымают в ходе обысков. Я разговаривал с Эриком Томпсоном, автором программы, и он признался, что ей требуется всего доля секунды, чтобы взломать пароль, но он добавил несколько циклов задержки для замедления процесса, дабы он не казался покупателю столь элементарным.