PGP: концепция безопасности и уязвимые места
Архив
|
Зачем я написал PGP
То, что вы делаете, останется неважным, но очень важно, что вы это делаете.
Махатма Ганди
Это личное. Это приватное. И это не касается никого, кроме вас. Возможно, вы планируете политическую кампанию, обсуждаете свои налоговые проблемы, или у вас тайный роман. А может быть, вы переписываетесь с политическим диссидентом из страны с репрессивным режимом. Чего бы это ни касалось, вы не желаете, чтобы ваши частные письма, отправляемые электронной почтой, или конфиденциальные документы читались кем-то еще. Нет ничего дурного в том, чтобы стремиться к приватности. Приватность - такая же американская штука, как и наша конституция.
Правом на приватность неявно пропитан весь билль о правах. Когда писалась конституция, отцы-основатели не видели необходимости в явном провозглашении права на приватное общение. Это было бы глупо: двести лет назад все общение было приватным. Если в пределах поля слышимости появлялся кто-то еще, вы просто отходили за сарай и продолжали разговор. Никто не мог подслушать вас без вашего ведома. Право на приватное общение было естественным правом, и не только в философском смысле, но и в смысле законов физики, учитывая уровень тогдашних технологий.
Но с приходом информационной эры, которая началась с изобретения телефона, все изменилось. Теперь мы общаемся в основном с помощью электроники. Это приводит к тому, что наши самые интимные разговоры могут стать достоянием посторонних, а мы об этом даже не узнаем: разговоры по сотовому телефону могут прослушиваться каждым, у кого есть радиоприемник; отправка по Интернету электронной почты ничуть не безопаснее, чем разговоры по сотовому телефону. Последняя, теряя новизну, быстро вытесняет почту бумажную, ее использование становится нормой. Но электронная почта может рутинно и автоматически сканироваться на предмет наличия интересующих кого-либо ключевых слов в больших объемах и без возможности об этом узнать - это похоже на ловлю рыбы дрифтерной сетью.
Возможно, вы полагаете, что ваша электронная почта не содержит ничего предосудительного, и шифровать ее нет необходимости. Если вы - действительно законопослушный гражданин, которому нечего скрывать, почему вы не пишете все свои письма на открытках? Почему не соглашаетесь регулярно проходить проверку на употребление наркотиков? Почему требуете предъявления ордера, если полиция собирается обыскивать ваш дом? Пытаетесь что-нибудь скрыть? Если вы прячете свои письма в конверты, значит ли это, что вы диверсант или торговец наркотиками, или, может быть, просто одержимы манией преследования? Так нужно ли законопослушным гражданам шифровать свою электронную почту?
Что, если бы все были уверены, что законопослушные граждане должны писать все свои письма на открытках? Если какой-нибудь нонконформист попытался бы достигнуть приватности, используя для своей почты конверты, это возбудило бы подозрение. Наверное, власти захотели бы открыть его письма и посмотреть, что же он там прячет. К счастью, мы не живем в таком мире, поскольку большая часть почты отправляется в конвертах. Поэтому использованием конверта никто не привлекает к себе внимания. Массовость применения обеспечивает некоторую безопасность. Точно так же, чтобы никто не мог привлечь к себе внимания использованием шифрования, было бы неплохо, если бы каждый повседневно шифровал всю свою электронную почту, сколь бы невинным ни было ее содержание. Считайте это формой солидарности.
До сих пор, если правительство хотело нарушить приватность рядовых граждан, оно должно было затратить определенное количество средств и усилий для перехвата, отпаривания и чтения бумажной почты. Или оно должно было прослушивать устные переговоры по телефону и, возможно, переписывать их, по крайней мере до того, как стали доступны технологии автоматического распознавания речи. Этот вид трудоемкого мониторинга непрактичен при применении в больших масштабах. Поэтому так делали только в важных случаях, когда такие затраты казались оправданными.
Законопроект S. 266 - внесенный в 1991 году рамочный законопроект, направленный против преступности, - таил в своих недрах беспрецедентные меры. Если бы этот билль принял форму закона, он принудил бы всех производителей оборудования для защищенной коммуникации оставлять в своих продуктах особые "черные ходы" с тем, чтобы правительство могло читать любую зашифрованную корреспонденцию. Билль гласил: "Конгресс постановляет, что поставщики услуг в области электронной коммуникации и производители оборудования, используемого для оказания услуг в области электронной коммуникации, обязаны обеспечить правительству доступ к незашифрованному содержимому всех передаваемых голосовых, цифровых и других данных в случаях, предусмотренных законом". Именно этот законопроект побудил меня опубликовать PGP в компьютерных сетях для бесплатного распространения. Это случилось незадолго до того, как после решительных протестов гражданских либертарианцев и промышленных групп указанные меры были исключены из законопроекта.
Законопроект 1994 года "О цифровой телефонии" обязал телефонные компании устанавливать на центральных телефонных узлах точки входа для удаленного подслушивания, создав тем самым новую технологическую инфраструктуру "моментального подключения" для подслушивания, так что федеральным агентам больше не нужно никуда выходить и цеплять зажимы-"крокодилы" к телефонным проводам. Теперь они смогут сидеть у себя в вашингтонской штаб-квартире и вслушиваться в ваши телефонные разговоры. Конечно, закон все еще требует для осуществления подслушивания судебного постановления. Но технологические инфраструктуры могут существовать в течение жизни нескольких поколений, а законы и правила иногда меняются за одну ночь. Раз уж коммуникационную инфраструктуру, оптимизированную для слежки, начали внедрять, любое изменение политических условий может привести к злоупотреблению этим новым видом власти. Политические условия могут измениться при смене правительства или, более неожиданно, вследствие того, что кто-нибудь взорвет правительственное учреждение.
Через год после того, как законопроект 1994 года "О цифровой телефонии" стал законом, ФБР обнародовало план, согласно которому от всех телефонных компаний требовалось встраивать в свою инфраструктуру возможность одновременного подслушивания 1% всех телефонных разговоров во всех крупных городах США. Это означало бы более чем тысячекратное увеличение количества номеров телефонов, разговоры по которым могут подслушиваться. В предшествующие годы в США производилось лишь около тысячи санкционированных судом прослушиваний телефонных разговоров в год на всех уровнях, включая федеральный, уровень штатов и местный. Трудно представить, как правительство сможет нанять такое количество судей, которое было бы способно подписывать ордера на прослушивание 1% от всех телефонных разговоров, не говоря уже о найме такого количества федеральных агентов, которое было бы способно сидеть и слушать все эти разговоры в реальном времени. Единственным осуществимым способом обработки таких объемов телефонных переговоров является массовое, по Оруэллу, применение технологий автоматизированного распознавания речи, чтобы просеивать все разговоры в поисках интересующих ключевых слов или голоса определенного человека. Если правительство не обнаружит того, что ищет, в первой однопроцентной выборке, оно перейдет к следующему проценту, и так далее, пока искомое не будет найдено или все телефоны не будут проверены на предмет "подрывной активности". ФБР утверждает, что эти возможности понадобятся в будущем. Эти намерения вызвали такое возмущение, что Конгресс отверг план, по крайней мере, на этот раз, в 1995 году. Но уже сам факт, что ФБР посмело просить о таких широких полномочиях, проливает свет на его замыслы. Кроме того, отклонение этого плана не является особо обнадеживающим, если вспомнить, что законопроект "О цифровой телефонии" тоже был отвергнут при первом рассмотрении, в 1993 году. Технологические достижения не оставляют возможности сохранения статус кво в том, что касается приватности. Само статус кво нестабильно. Если мы будем бездействовать, новые технологии предоставят правительству такие возможности для автоматизированной слежки, о которых не мечтал и Сталин. Единственным способом удержать позиции приватности в информационную эру является стойкая криптография.
Для того чтобы начать применять криптографию, вам необязательно относиться с недоверием к собственному правительству. Ваши деловые разговоры могут подслушиваться конкурентами, организованной преступностью или зарубежными правительствами. Например, французское правительство известно тем, что использует свою службу информационной разведки для помощи французским корпорациям в достижении большей конкурентоспособности. Забавно, но ограничения, накладываемые правительством США на криптографию, ослабили защиту американских корпораций от иностранных разведок и организованной преступности.
Правительство знает, насколько важную роль суждено сыграть криптографии во взаимоотношениях власти и народа. В апреле 1993 года администрация Клинтона обнародовала новую инициативу в политике отношения к шифрованию, которая разрабатывалась Агентством национальной безопасности (АНБ) с начала правления Буша. Ядро этой инициативы - разработанное правительством шифровальное устройство под названием "Клиппер", которое содержит новый секретный алгоритм шифрования, придуманный АНБ. Правительство попыталось убедить частную промышленность встроить его во все выпускаемые продукты для обеспечения безопасности коммуникаций, такие как защищенные телефоны, защищенные факсы и т. п. Компания AT&T установила "Клиппер" в свои защищенные голосовые продукты. Но дело в том, что в каждый кристалл "Клиппер" во время его производства загружается уникальный ключ шифрования, а правительство получает копию этого ключа, отправляемую в хранилище. Беспокоиться, впрочем, не стоит, ведь правительство обещает использовать этот ключ для доступа к вашим сообщениям только "в случаях, установленных законом". Конечно, чтобы сделать "Клиппер" эффективным, следующим логическим шагом должно стать запрещение других форм криптографии.
Вначале правительство заверяло, что использование "Клиппера" будет добровольным и никого не будут заставлять применять его вместо других типов криптографии. Но реакция общества против "Клиппера" была упорной, гораздо более упорной, чем оно ожидало. Компьютерная промышленность единодушно объявила о своей оппозиции использованию "Клиппера". Тогда директор ФБР Луис Фрей, отвечая на вопросы во время пресс-конференции в 1994 году, сказал, что если "Клиппер" не найдет общественной поддержки и возможности ФБР в подслушивании сообщений будут блокированы криптографией, не находящейся под правительственным контролем, его ведомство будет вынуждено искать законодательной поддержки. Позже, по горячим следам трагедии в Оклахома-Сити, г-н Фрей свидетельствовал перед законодательным комитетом Сената, что правительство должно ограничить публичный доступ к стойкой криптографии (хотя никто так и не высказал предположения, что динамитчики использовали криптографию).
Информационный Центр электронной приватности, пользуясь гарантиями закона об информации, получил доступ к ряду приоткрывающих замыслы спецслужб документов. В докладной записке под названием "Шифрование: угрозы, применения и возможные решения", отправленной ФБР, АНБ и департаментом юстиции в адрес совета по национальной безопасности в феврале 1993 года, утверждается, что "технические решения будут работать только в том случае, если они встраиваются во все шифровальные продукты. Для обеспечения этого необходимо законодательное принуждение к использованию утвержденных правительством шифровальных продуктов или к соблюдению установленных правительством критериев".
За правительством тянется "хвост", который не позволяет поверить, что оно никогда не прибегнет к подавлению наших гражданских свобод. Программа ФБР под названием COINTELPRO была направлена на преследование групп, не согласных с политикой правительства. Оно шпионило за участниками антивоенного движения и движения за гражданские права. Оно подслушивало телефонные разговоры Мартина Лютера Кинга. Никсон располагал целым списком своих врагов. А после этого случился уотергейтский скандал. Конгресс теперь, похоже, готов к принятию законов, ограничивающих наши гражданские свободы в Интернете. Никогда еще в последнее столетие недоверие к правительству не было так широко распространено по всему политическому спектру, как сегодня.
Если мы собираемся сопротивляться тревожной тенденции к запрещению криптографии, одно из действий, которые мы можем предпринять, - это по возможности более широкое использование криптографии сейчас, пока это еще легально. Чем более популярным станет использование стойкой криптографии, тем труднее будет правительству ее запретить. А значит, использование PGP идет во благо сохранению демократии.
Если приватность ставится вне закона, то лишь те, кто стоит вне закона, обладают приватностью. Разведывательные службы имеют доступ к хорошим криптографическим технологиям, его также имеют гангстеры и торговцы наркотиками. Но обычным гражданам и самодеятельным политическим организациям по большей части не была доступна криптография с открытыми ключами военной степени стойкости. До сих пор не была.
PGP отдает власть над приватностью народа в руки самого народа. И в этом есть общественная необходимость. Вот почему я написал эту программу.
Основы криптографии
Для начала, немного элементарной терминологии. Предположим, вы желаете отправить сообщение коллеге (назовем ее Алис), и вы хотите, чтобы никто, кроме Алис, не смог его прочитать. Как показано на рис.1, вы можете зашифровать (или закодировать), то есть преобразовать сообщение безнадежно сложным образом, зная, что никто, кроме вас и Алис, не сможет его прочитать. Вы применяете для шифрования криптографический ключ, а Алис должна использовать тот же ключ для его расшифровки (или раскодирования). По крайней мере, так это выглядит при применении обычной криптографии с "секретным ключом".
Один и тот же ключ используется как для зашифровки, так и для расшифровки сообщения. Это означает, что этот ключ должен быть сначала передан по надежному каналу, с тем чтобы обе стороны знали его до того, как передавать зашифрованное сообщение по ненадежному каналу. Но если у вас есть надежный канал, которым вы можете воспользоваться для обмена ключами, спрашивается, зачем вам вообще нужна криптография?
Рисунок 1.
Как работает криптография с открытым ключом
Как показано на рис. 2, при использовании криптографии с открытым ключом каждый обладает парой дополняющих друг друга ключей: открытым и закрытым. Каждый из ключей, входящих в пару, подходит для расшифровки сообщения, зашифрованного с применением другого ключа из той же пары. Зная открытый ключ, закрытый вычислить невозможно. Открытый ключ может быть опубликован и широко распространен по сетям коммуникаций.
Рисунок 2.
Такой протокол обеспечивает приватность без необходимости обладания надежным каналом, которого требует обычная криптография с секретным ключом.
Кто угодно может использовать открытый ключ получателя для того, чтобы зашифровать отправляемое тому сообщение. Получатель затем использует соответствующий закрытый ключ для его расшифровки. Никто, кроме получателя, не может расшифровать сообщение, так как никто больше не имеет доступа к его закрытому ключу. Даже тот, кто зашифровал сообщение с помощью открытого ключа, не сможет его расшифровать.
Как шифруются ваши файлы и сообщения
Поскольку алгоритм шифрования с открытым ключом значительно медленнее алгоритма обычного шифрования, использующего один ключ, шифрование лучше всего выполнять, используя процесс, показанный на рис. 3.
Рисунок 3.
Для шифрования сообщения используется качественный и быстрый алгоритм обычного шифрования с секретным ключом. В оригинальной, незашифрованной форме это сообщение называется "открытым текстом". В ходе процесса, невидимого пользователю, для обычного шифрования открытого текста используется временный случайный ключ, сгенерированный специально для этого "сеанса". Затем данный случайный ключ шифруется с помощью открытого ключа получателя. Этот зашифрованный с использованием открытого ключа "сеансовый ключ" отправляется получателю вместе с зашифрованным текстом ("шифровкой").
Как осуществляется расшифровка
Как показано на рис. 4, процесс расшифровки обратен по отношению к шифрованию. Закрытый ключ получателя используется для восстановления временного сеансового ключа, который, в свою очередь, используется при запуске быстрого обычного алгоритма с секретным ключом для расшифровки основного тела сообщения.
Рисунок 4.
Как осуществляется электронная подпись
PGP накладывает цифровую подпись для обеспечения аутентификации сообщения. Закрытый ключ отправителя используется для зашифровки дайджеста сообщения, таким образом "подписывая" сообщение. Дайджест сообщения - это 160- или 128-битная криптографически стойкая односторонняя хэш-функция. В чем-то она похожа на "контрольную сумму" или код проверки ошибок CRC, который компактно представляет сообщение и используется для проверки сообщения на наличие изменений. В отличие от CRC, дайджест сообщения формируется таким образом, что злоумышленник не может сгенерировать поддельное сообщение с аналогичным дайджестом. Дайджест сообщения передается в зашифрованном закрытым ключом отправителя виде, составляя цифровую подпись сообщения.
На рис. 5 показано, как генерируется цифровая подпись.
Рисунок 5.
Получатель (или кто-либо другой) может проверить правильность цифровой подписи, используя открытый ключ отправителя для расшифровки дайджеста сообщения. Это доказывает, что тот, кто указан в качестве отправителя сообщения, является его создателем и что сообщение не было впоследствии изменено другим человеком, так как только отправитель владеет своим закрытым ключом, использованным для формирования цифровой подписи. Подделка цифровой подписи невозможна, и отправитель не может впоследствии отрицать ее подлинность.
Рисунок 6.
Как защищать открытые ключи от подмены
В криптосистемах с открытыми ключами вам не нужно защищать открытые ключи от несанкционированного доступа. Наоборот, чем шире они распространяются, тем лучше. Однако важно защитить открытые ключи от подделки, чтобы быть уверенным в том, что ключ действительно принадлежит тому, чье имя он несет. Процедуры защиты описаны в главе 3 "Защита ваших ключей". Давайте сначала взглянем на потенциальную опасность такой подмены, а затем опишем, как ее избежать при использовании PGP.
Предположим, вы хотите отправить приватное сообщение Алис. Вы подгружаете открытый ключ Алис с какой-нибудь электронной доски объявлений (BBS). Вы шифруете свое письмо Алис ее открытым ключом и отправляете его через систему электронной почты той же BBS.
К несчастью, незаметно для вас или Алис другой пользователь, по имени Виктор, проникает на BBS и генерирует открытый ключ, несущий идентификатор пользователя Алис. Он тайно подменяет своим фальшивым ключом настоящий открытый ключ Алис. Вы неосторожно используете этот фальшивый ключ, принадлежащий Виктору, вместо открытого ключа Алис. Все выглядит нормально, потому что фальшивый ключ несет идентификатор пользователя Алис. Теперь Виктор может расшифровать сообщение, предназначенное Алис, поскольку обладает секретным ключом из фальшивой пары. Он даже может затем снова зашифровать расшифрованное им сообщение настоящим ключом Алис и отправить ей, так что никто ничего не заметит. Более того, он даже сможет потом накладывать от имени Алис подпись, которая будет казаться подлинной, так как все будут использовать для ее верификации фальшивый ключ.
Единственный способ предотвратить такую неприятность - это исключить возможность подделки открытых ключей. Если вы получили открытый ключ Алис непосредственно от нее, проблем не возникает. Но это может быть затруднительным, если Алис находится на расстоянии тысячи миль, или по другим причинам с ней невозможно встретиться лично.
Возможно, открытый ключ Алис может передать вам ваш общий друг Генри, которому вы оба доверяете и который знает, что обладает подлинным ключом Алис. Генри может подписать открытый ключ Алис, ручаясь, таким образом, за его целостность. Для подписи он должен использовать свой собственный закрытый ключ.
Эта процедура создает подписанный сертификат открытого ключа, который подтверждает, что ключ Алис не был подделан. Конечно, для того чтобы вы могли проверить правильность подписи Генри, необходимо, чтобы у вас была заведомо правильная копия его открытого ключа. Возможно, Генри может также передать Алис подписанную копию вашего ключа. Генри, таким образом, будет служить посредником между вами и Алис.
Этот подписанный сертификат открытого ключа Алис или Генри могут подгрузить на BBS, откуда вы можете его позднее скопировать. Так как вы в состоянии проверить подпись Генри с помощью его открытого ключа, вы можете быть уверены, что это - действительно ключ Алис. Никакой злодей не сможет обмануть вас, заставив поверить, что изготовленный им фальшивый ключ принадлежит Алис, поскольку никто не может подделать подпись Генри.
Пользующееся широким доверием лицо может даже специализироваться на посредничестве между пользователями, заверяя своей подписью сертификаты их открытых ключей. Это пользующееся доверием лицо может считаться "доверенным сертификатором". Любому публичному ключу, заверенному подписью уполномоченного сертификатора, можно доверять в том смысле, что он принадлежит тому, чье имя он несет. Все пользователи, желающие участвовать в реализации такой сети распределенного доверия, должны обладать заведомо верной копией ключа уполномоченного сертификатора с тем, чтобы подпись последнего могла быть проверена. В некоторых случаях доверенный сертификатор может также поддерживать сервер ключей, обеспечивая пользователям сети возможность искать открытые ключи с помощью запросов к серверу ключей, однако необязательно, чтобы тот, кто поддерживает сервер ключей, был также и тем, кто их сертифицирует.
Единый уполномоченный сертификатор особенно подходит для больших централизованно управляемых организаций, правительственных или корпоративных. Некоторые организационные среды используют иерархии доверенных сертификаторов.
Для децентрализованных сред более походящим, чем создание централизованного доверенного сертификатора, вероятно, будет предоставление всем пользователям возможности действовать в качестве посредников.
Одним из наиболее привлекательных свойств PGP остается то, что она в равной мере успешно может работать как в централизованной среде с уполномоченным сертификатором, так и в децентрализованной среде, в которой индивидуумы свободно обмениваются своими ключами.
Задача защиты открытых ключей от подделки как таковая составляет единственную серьезную проблему практического приложения криптографии с открытыми ключами. Она является "ахиллесовой пятой" этой технологии, и сложность программного обеспечения в основном связана с решением именно этой задачи.
Вам следует использовать чей-либо открытый ключ только после того, как вы убедитесь в том, что это настоящий ключ, а не подделка, что он принадлежит именно тому лицу, чье имя несет. Вы можете быть уверены в этом, только если получили сертификат открытого ключа непосредственно от его хозяина или если он подписан кем-либо, кому вы доверяете, и заведомо правильная копия ключа которого у вас уже есть. Идентификатор пользователя ключа должен нести полное имя владельца, а не только его первое имя.
Как бы велико ни было искушение, вы никогда не должны полагаться на случайность и доверять подлинности ключа, взятого с BBS, если он не подписан кем-нибудь, кому вы доверяете. Несертифицированный открытый ключ может оказаться подделкой, выполненной кем угодно, включая администратора этой BBS.
Если вас просят подписать сертификат чьего бы то ни было открытого ключа, убедитесь, что ключ действительно принадлежит лицу, чье имя он несет. Ведь ваша подпись на чужом ключе - это ручательство с вашей стороны за то, что ключ принадлежит его владельцу. Те, кто вам доверяет, примут к использованию этот ключ, потому что он несет вашу подпись. Полагаться на слухи чрезвычайно неосмотрительно - не подписывайте открытых ключей, если вы не уверены в том, что они действительно принадлежат их хозяевам. По возможности, вы должны подписывать их, только если вы получили их непосредственно от хозяев.
Для того чтобы подписать открытый ключ, вы должны быть уверены в его принадлежности хозяину в гораздо большей степени, чем если просто собираетесь использовать его для шифрования сообщения. Подписи на сертификате, сделанной надежным посредником, обычно достаточно для того, чтобы использовать сертифицированный ключ для шифрования. Однако, чтобы подписать чей-либо ключ, вы должны обладать независимым знанием из первых рук о том, кому принадлежит этот ключ. Можно позвонить владельцу ключа и продиктовать ему отпечаток ключа - удостоверившись при этом, что вы разговариваете именно с ним.
Имейте в виду, что ваша подпись на сертификате открытого ключа представляет собой ручательство за целостность ключа и принадлежности его действительному владельцу, а отнюдь не за самого владельца. Вы ничем не рискуете, подписывая открытый ключ социопата, если уверены в том, что этот ключ действительно ему принадлежит. Другие примут этот ключ, проверив вашу подпись на нем (если они, конечно, вам доверяют), но из этого не будет следовать доверия к его обладателю. Быть уверенным в ключе - совсем не то же самое, что верить его владельцу.
Совсем неплохо иметь под рукой свой собственный открытый ключ, сертифицированный подписями различных посредников, имея в виду, что большинство корреспондентов доверяет хотя бы одному из тех, кто ручается за целостность вашего ключа. Вы можете опубликовать свой открытый ключ вместе с набором удостоверяющих подписей на различных BBS. Если вы подписали чей-либо ключ, верните сертификат владельцу с тем, чтобы он смог присоединить вашу подпись к набору подписей других лиц, также ручающихся за его целостность.
PGP сама следит за тем, какие из открытых ключей на вашей связке надлежащим образом сертифицированы подписями посредников, которым вы доверяете. Все, что вам остается, - это указать, кому вы доверяете как посредникам, и сертифицировать их ключи своей собственной подписью. PGP затем будет автоматически переносить эту степень доверия на все ключи, сертифицированные подписями указанных вами посредников. И, конечно, вы можете непосредственно сертифицировать ключи сами.
Обеспечьте невозможность подделки вашей связки открытых ключей. Проверка сертификата вновь подписываемого ключа в конечном итоге зависит от целостности тех зацепленных на эту связку открытых ключей, которым вы уже доверяете. Сохраняйте физический контроль за своей связкой открытых ключей, храня ее по возможности на своем персональном компьютере, а не на удаленной системе с разделяемым доступом, так же, как вы поступаете и со своим закрытым ключом. Это следует делать для предохранения связки ключей от подделки, а не от раскрытия. Сохраняйте надежные копии связки открытых ключей и свой закрытый ключ на защищенном от записи носителе.
Так как ваш собственный открытый ключ используется в качестве последней инстанции для прямой или косвенной сертификации всех остальных открытых ключей, хранящихся на вашей связке, он является самым важным ключом для защиты от подделки. Нелишним будет сохранить его копию на отдельном защищенном от записи флоппи-диске.
Вообще, использование PGP предполагает, что вы сохраняете физический контроль над своим компьютером, связками ключей, а также исполняемой копией самой PGP. Если злоумышленник может модифицировать данные на ваших дисках, тогда, теоретически, он может модифицировать саму программу с тем, чтобы она более не могла распознавать подделку ключей.
Один из несколько более сложных способов защитить всю связку открытых ключей целиком - это подписать всю связку своим закрытым ключом. Выполнить это можно, создав отделенную цифровую подпись этой связки.
Как PGP следит за тем, какие ключи действительны?
До чтения этого раздела вам нужно прочитать предыдущий, где рассказывается о том, как защищать открытые ключи от подделки.
PGP следит за тем, какие из ключей, находящихся на вашей открытой связке, надлежащим образом сертифицированы посредниками, которым вы доверяете. Все, что вам остается, - это указать, кому вы доверяете как посредникам, и сертифицировать их ключи своей собственной подписью. PGP затем будет автоматически переносить эту степень доверия на все ключи, сертифицированные подписями указанных вами посредников. И, конечно, вы можете непосредственно сертифицировать ключи сами.
Для определения степени полезности открытого ключа PGP использует два различных критерия - не перепутайте их:
- Принадлежит ли ключ действительно тому, чье имя он несет? Иными словами, сертифицирован ли он кем-нибудь, чьей подписи вы доверяете?
- Принадлежит ли он тому, кому вы доверяете сертифицировать другие ключи?
Ответ на первый вопрос PGP может вычислить. На второй вопрос вы должны дать PGP явный ответ. После того как вы ответите на второй вопрос, PGP может вычислить ответ на первый вопрос для ключей, сертифицированных посредником, которому вы доверяете.
Ключи, сертифицированные посредниками, которым вы доверяете, PGP считает действительными. Ключи, принадлежащие этим посредникам, сами должны быть сертифицированы вами или другими посредниками, которым вы доверяете.
PGP также учитывает, что вы можете испытывать разную степень доверия к людям в смысле их способности быть посредниками. Степень вашего доверия к способности владельца ключа выступать в качестве посредника отражает вашу оценку не только его персональной порядочности, но и его компетентности в понимании механизма управления ключами и склонности руководствоваться здравым рассудком при принятии решения о сертификации ключа третьего лица. Вы можете обозначить лицо как пользующееся полным доверием, ограниченным доверием или не пользующееся доверием. Эта информация об испытываемой вами степени доверия хранится на связке вместе с соответствующими ключами, но при экспорте ключа из связки она не переносится, так как ваше личное мнение о степени, в которой можно доверять владельцу ключа, считается конфиденциальным.
Когда PGP оценивает действительность открытого ключа, она проверяет уровень доверия, приданный вами всем подписям, которыми он сертифицирован. Она вычисляет взвешенное значение действительности, то есть две подписи лиц, пользующихся ограниченным доверием, рассматриваются так же, как подпись одного лица, пользующегося полным доверием. Скептицизм PGP может регулироваться - например, вы можете настроить ее таким образом, чтобы она требовала наличия двух подписей лиц, пользующихся полным доверием, или трех лиц, пользующихся ограниченным доверием для того, чтобы считать ключ действительным1.
Ваш собственный ключ является для PGP "аксиоматически" действительным и не требует для подтверждения никаких сертификатов. PGP распознает ваши собственные открытые ключи по наличию соответствующих закрытых ключей на связке закрытых ключей. PGP предполагает, что вы доверяете себе в достаточной степени, чтобы сертифицировать ключи других лиц.
По прошествии некоторого времени вы соберете ключи людей, которым вы доверяете как посредникам. Остальные также выберут тех, кому они доверяют в этом качестве. И каждый, в свою очередь, постепенно соберет такую коллекцию сертифицирующих его открытый ключ подписей, что сможет ожидать от любого получателя доверия по крайней мере к одной или двум из этих подписей. Это приведет к возникновению широкой и устойчивой к сбоям сети доверия, по которой будут распространяться открытые ключи.
Этот уникальный самодеятельный подход контрастирует со стандартными схемами управления открытыми ключами, разработанными правительством и другими монолитными организациями, например, с Internet Privacy Enhanced Mail (PEM), основанной на централизованном контроле и принудительно централизованном доверии. Стандартная схема предполагает иерархию уполномоченных сертификаторов, которая диктует вам, кому вы должны верить. Децентрализованный вероятностный метод определения действительности ключей, реализованный PGP, позволяет вам самим решать, кому вы доверяете, ставя вас самих на вершину своей собственной пирамиды сертификации. PGP - для тех людей, которые предпочитают сами укладывать свои парашюты.
Хотя здесь подчеркивается децентрализованный, рассчитанный на самодеятельность подход, это не значит, что PGP не может использоваться в иерархических и централизованных схемах управления открытыми ключами. Например, пользователи - большие корпорации, вероятно, предпочтут иметь специальную должность или лицо, которое подписывает ключи всех сотрудников. PGP поддерживает и этот централизованный сценарий в качестве вырожденного случая своей обобщенной модели распределенного доверия.
Как защищать закрытые ключи от раскрытия
Свой закрытый ключ и пароль следует сохранять очень тщательно. Если же закрытый ключ окажется скомпрометированным, следует быстро оповестить об этом все заинтересованные стороны, пока кто-нибудь не использовал его для фальшивой подписи от вашего имени. Например, украденный ключ может быть использован для создания фальшивых сертификатов открытых ключей, что создаст проблемы для массы людей, особенно если ваша подпись пользуется широким доверием. И, разумеется, компрометация вашего ключа может привести к тому, что все зашифрованные сообщения, адресованные вам, смогут быть расшифрованы.
Защиту закрытого ключа следует начать с того, что вы должны всегда сохранять над ним физический контроль. Держать его на домашнем персональном компьютере или на переносном компьютере, который вы носите с собой, приемлемо. Если вы вынуждены использовать служебный компьютер, над которым вы не всегда сохраняете физический контроль, держите связки закрытых и открытых ключей на защищенном от записи флоппи-диске и забирайте его с собой, когда выходите из офиса. Хранить закрытый ключ на удаленной системе с разделенным доступом (например, на Unix-системе с удаленным доступом) не годится. Кто-нибудь может перехватить сеанс связи, захватить ваш пароль и затем получить доступ к самому закрытому ключу, хранящемуся на этой системе. Закрытый ключ может храниться только на машине, находящейся под вашим физическим контролем. Для получения дополнительной информации см. главу 5.
Не храните пароль на том же компьютере, где хранится ваш закрытый ключ. Сохранение закрытого ключа и пароля на одном компьютере похоже на хранение банкоматной карточки и бумажки с записанным на ней PIN в одном и том же бумажнике. Вы не должны позволить постороннему добраться до диска, содержащего и пароль, и файл с закрытым ключом. Более безопасным будет просто запомнить пароль и не держать его нигде, кроме собственной головы. Если вы все-таки чувствуете необходимость записать пароль, предохраняйте эту запись очень тщательно, возможно, более тщательно, чем сам закрытый ключ.
Вы также должны сделать резервную копию своего закрытого ключа - если у вас есть лишь одна его копия, и вы ее потеряете, это сделает бесполезными все копии вашего открытого ключа, распространенные по всему миру.
Децентрализованный неинституциональный подход к управлению ключами, поддерживаемый PGP, имеет свои преимущества, но его использование означает также, что мы не можем полагаться на единый централизованный список скомпрометированных ключей. Это делает более сложной задачу ограничения ущерба от компрометации закрытого ключа. Вам просто нужно сообщить миру о факте компрометации и надеяться, что об этом услышит каждый.
Если случится худшее, и будут скомпрометированы как ваш закрытый ключ, так и пароль (надеемся, что вы об этом каким-то образом узнаете), вам необходимо будет сгенерировать сертификат о компрометации ключа. Этот тип сертификата используется для предупреждения других о том, что ваш открытый ключ не должен больше использоваться. В PGP для создания такого сертификата используется команда Revoke (Отозвать) из меню PGPkeys. Затем вы должны каким-то образом отправить этот сертификат всем на свете, или по крайней мере своим друзьям, друзьям своих друзей и т. д. Их копия программы PGP присоединит этот сертификат к связке открытых ключей, что воспрепятствует случайному использованию скомпрометированного ключа в будущем. Затем вы можете сгенерировать новую пару из открытого и закрытого ключей и опубликовать новый открытый ключ. Новый открытый ключ и сертификат компрометации старого ключа могут быть разосланы в одном сообщении.
Что, если вы потеряете свой закрытый ключ?
Обычно для создания сертификата отзыва закрытого ключа, подписанного этим самым ключом, можно использовать команду Revoke (Отозвать) из меню PGPkeys.
А что, если вы потеряли свой закрытый ключ или ваш закрытый ключ оказался разрушенным? Вы не можете отозвать его сами, так как для этого вам потребовался бы тот самый закрытый ключ, которого у вас уже нет. Вам придется попросить каждое лицо, которое подписывало сертификат с вашим открытым ключом, отозвать свою подпись. Тогда каждый, кто попытается использовать ваш ключ, основываясь на доверии к одному из этих посредников, будет знать, что использовать ваш открытый ключ больше нельзя.
Осторожно: шарлатанские снадобья
При оценке пакета криптографического программного обеспечения всегда остается вопрос: "Почему вы должны доверять этому продукту?" Он остается даже в случае, когда вы сами изучили исходный текст программ, - ведь не каждый обладает криптографическим опытом, чтобы оценить уровень безопасности. И даже если вы опытный криптограф, от вас могут ускользнуть неочевидные слабые места в алгоритмах.
Когда в начале семидесятых я учился в колледже, я изобрел схему шифрования, которая казалась мне блестящей. Для создания шифровки к открытому тексту добавлялась простая последовательность псевдослучайных чисел. Казалось бы, это должно противостоять любому частотному анализу шифровки и сделать ее нераскрываемой даже правительственными разведывательными службами с их огромными ресурсами. Я так гордился своим достижением!
Годами позже я обнаружил ту же самую схему в нескольких текстах введения в криптографию и учебниках. Как мило: о ней думали и другие криптографы. К несчастью, эта схема приводилась как задание для простой домашней работы на применение элементарных приемов криптоанализа для тривиального ее взлома. Вот и все о моей "блестящей" схеме.
Из этого унизительного опыта я узнал, как просто впасть в ложное чувство безопасности при разработке алгоритма шифрования. Большинство людей просто не представляет, как немыслимо сложно придумать алгоритм шифрования, который выдержит продолжительную и целеустремленную атаку со стороны хорошо оснащенного противника. Многие разработчики обычного программного обеспечения используют столь же наивные схемы шифрования (а иногда и ту же самую схему), а некоторые из этих схем оказываются внедренными в коммерческие программные пакеты шифрования и продаются за немалые деньги ничего не подозревающим пользователям.
Это похоже на продажу автомобильных ремней безопасности, которые выглядят прочными, но не выдерживают даже несильного рывка. Полагаться на них будет более опасным, чем обходиться вовсе без ремней безопасности. Никто не подозревает, что они слабы, пока не случится настоящая авария. Если вы полагаетесь на слабое криптографическое обеспечение, вы можете, сами не подозревая о том, подставить под удар секретную информацию. Если бы у вас не было никакого криптографического обеспечения, наверное, вы бы этого не сделали. Возможно, вам не удастся даже узнать, что ваши данные скомпрометированы.
Некоторые коммерческие пакеты используют федеральный стандарт шифрования данных (DES), действительно неплохой алгоритм обычного шифрования, рекомендованный правительством для коммерческого использования (но не для защиты секретной правительственной информации - достаточно странно…). Существует несколько режимов использования DES, некоторые из которых лучше, чем другие. Правительство не рекомендует использовать для шифрования сообщений самый слабый из них, ECB (электронная кодовая книга), а рекомендует более стойкие, но и более сложные режимы шифрования с обратной связью (CFB) и цепочки шифрованных блоков (CBC).
К несчастью, большинство коммерческих пакетов шифрования, которые я видел, используют режим ECB. Когда я разговаривал с авторами некоторых из этих программ, они говорили, что никогда не слышали о режимах CBC и CFB и не знают ничего об уязвимости ECB. Сам факт того, что они не изучили криптографию даже до такой степени, чтобы знать об этих элементарных понятиях2, не является оправданием. К тому же они иногда реализуют управление ключами DES ненадлежащим или небезопасным образом. А кроме того, их программы часто предусматривают использование другого алгоритма, более быстрого по сравнению с DES. Авторы программ часто полагают, что их собственные алгоритмы не менее безопасны, чем DES, но после расспросов я нередко обнаруживал, что это лишь вариации на тему той моей "блестящей" схемы студенческих годов. А некоторые авторы отказываются сообщать, как работают их собственные схемы шифрования, лишь уверяя, что это блестящие схемы и что им можно доверять. Я не сомневаюсь, что они действительно верят в то, что их алгоритмы замечательные, но как в этом можно убедиться, не видя самих алгоритмов?
Впрочем, стоит отметить, что в большинстве случаев эти ужасающе слабые программы написаны все же не в компаниях, специализирующихся на криптографических технологиях.
Даже действительно хорошие криптографические пакеты, использующие DES в правильных режимах, создают проблемы. Стандартный DES использует 56-битные ключи, слишком короткие по сегодняшним стандартам, поскольку они могут быть взломаны специальными высокоскоростными компьютерами путем исчерпывающего перебора ключей. DES уже заканчивает свой жизненный путь, и с ним - все основанные на нем программы3.
Существует компания под названием AccessData (87 East 600 South, Orem, Utah 84058, тел. 1-800-658-5199), которая продает за 185 долларов пакет, взламывающий криптографические схемы, встроенные в WordPerfect, Lotus 1-2-3, MS Excel, Symphony, Quattro Pro, Paradox, MS Word и PKZIP. Эта программа не просто подбирает пароли - она выполняет настоящий криптоанализ. Люди покупают ее, когда забывают пароли от собственных файлов. Правоохранительные службы также приобретают ее, чтобы иметь возможность читать такие файлы, когда они встречаются на изъятых носителях. Я говорил с Эриком Томсоном, автором этой программы, и он сообщил, что его программе требуются для взлома лишь доли секунды и он вставил циклы задержки, чтобы покупателям не показалось, что это слишком просто.
В области средств защищенной телефонии ваш выбор невелик. Самым серьезным является устройство STU-III ("Защищенный телефонный аппарат"), продаваемый Motorola и AT&T по 2000-3000 долларов и используемый правительством для передачи секретной информации. Он использует стойкую криптографию, но для его покупки нужно особое правительственное разрешение. Доступна и его коммерческая версия, которая ослаблена для удобства АНБ, а также экспортная версия, ослабленная в еще большей степени. Затем, существует устройство Surity 3600, продаваемое AT&T по 1200 долларов, в котором для шифрования используется хваленая правительственная микросхема "Клиппер", а копии ключей помещены в правительственное хранилище для удобства подслушивающих. Кроме того, существуют и аналоговые (не цифровые) голосовые скремблеры, которые можно найти в любом каталоге для шпионов-любителей и которые в криптографическом аспекте являются на самом деле бесполезными игрушками. Однако они продаются в качестве "продуктов для безопасной коммуникации" покупателям, которые не видели ничего лучшего.
В некотором отношении криптография похожа на фармацевтику: целостность является решающим фактором. Испорченный пенициллин выглядит так же, как свежий пенициллин. Если неправильно работает ваш пакет электронных таблиц, вы это увидите; но как вы можете распознать слабость своего криптографического пакета? Шифровка, выполненная с помощью слабого алгоритма шифрования, выглядит так же, как шифровка, выполненная с помощью стойкого алгоритма. В этой области как нигде - масса шарлатанских снадобий. Куча лекарств, ни от чего не помогающих. В отличие от торговцев "патентованными средствами" прошлого, их изготовители обычно даже не подозревают, что продают знахарское зелье. Они могут быть неплохими программистами, но часто не удосуживаются прочитать ни единого учебника по криптографии. Но они полагают, что могут писать хорошие криптографические программы. Почему бы нет? Ведь, на первый взгляд, это так просто. И программы вроде бы неплохо работают.
Каждый, кто думает, что изобрел непробиваемую схему шифрования, - или невероятно редкий гений, или просто наивен и неопытен. К несчастью, мне приходилось иметь дело с такими горе-криптографами, которые хотели "улучшить" PGP, добавив алгоритм шифрования собственного производства.
Я вспоминаю разговор с Брайеном Сноу, высокопоставленным криптографом из АНБ. Он говорил, что никогда не стал бы доверять алгоритму шифрования, изобретенному тем, кто предварительно бы не "съел собаку", потратив массу времени на ломку шифров. Это звучало вполне убедительно. Я заметил, что практически никто в кругах коммерческих криптографов не удовлетворяет этому требованию. "Да, - ответил Сноу с самодовольной улыбкой. - И это так упрощает нашу работу в АНБ". Отрезвляющая мысль. Ведь и я не удовлетворяю этому требованию.
Правительство также занималось торговлей шарлатанскими снадобьями. После второй мировой войны США продавали немецкую шифровальную машину "Энигма" правительствам стран третьего мира. Однако последним при этом не сообщалось, что во время войны союзники взломали шифр "Энигмы" (факт, многие годы остававшийся засекреченным). Даже сейчас многие Unix-системы во всем мире используют шифр "Энигмы" для шифрования файлов, отчасти потому, что правительство создало юридические препятствия к использованию лучших алгоритмов. Оно даже пыталось помешать первой публикации алгоритма RSA в 1977 году. Кроме того, в течение многих лет правительство противостояло почти всем попыткам коммерческих фирм создать по-настоящему безопасные телефоны для массового использования.
Главной задачей агентства национальной безопасности США является сбор разведывательных данных в основном путем тайного подслушивания приватных коммуникаций между людьми (это описано в книге Джеймса Бэмфорда "Палата загадок"). АНБ затрачивает массу усилий и ресурсов на взлом шифров. Если народ не может получить хорошие криптографические средства для самозащиты, задача АНБ намного упрощается. АНБ также отвечает за экспертизу и рекомендацию алгоритмов шифрования. Ряд критиков усматривает в этом конфликт интересов, подобно тому, как если бы козлу поручили сторожить огород. В 1980 годы АНБ проталкивало разработанный им алгоритм обычного шифрования, (COMSEC), но не сообщало о том, как он работает, так как алгоритм был засекречен. В АНБ хотели, чтобы другие поверили им и начали его использовать. Но любой криптограф подтвердит, что хорошо продуманный алгоритм шифрования не должен оставаться засекреченным, чтобы быть безопасным: необходимо лишь обеспечить секретность ключей. Как можно судить, безопасен ли секретный алгоритм АНБ? АНБ не так трудно придумать алгоритм, который только оно может сломать, если никто больше не может его изучить. И в микросхему "Клиппер" АНБ засунуло SKIPJACK, еще один разработанный этим ведомством секретный шифр. Не подсовывают ли они снова шарлатанское снадобье?
Качество коммерческого криптографического программного обеспечения в США подрывается тремя факторами.
- Первым из них является практически повсеместная некомпетентность разработчиков коммерческого криптографического программного обеспечения (впрочем, с публикацией PGP ситуация начала меняться). Каждый программист воображает себя криптографом, что ведет к распространению исключительно плохого криптообеспечения.
- Второй - жесткое и систематическое подавление хороших коммерческих технологий шифрования со стороны АНБ посредством установления юридических ограничений и экономического давления. Частично это давление производится путем строгих ограничений на экспорт, что, в свою очередь, благодаря законам рынка программного обеспечения, ведет к подавлению криптографического программного обеспечения для внутреннего применения.
- Еще одним важным методом подавления служит передача всех патентных прав на алгоритмы шифрования с открытым ключом единственной компании, что приводит к замыканию проблемы предотвращения распространения этой технологии на одну фирму (хотя этот криптопатентный картель уже распался осенью 1995 года).
Итоговым эффектом действия этих факторов стало то, что до публикации PGP в США практически не было доступно достаточно безопасное программное обеспечение для шифрования общего назначения.
В безопасности PGP я не так уверен, как был уверен в своей "блестящей" схеме времен пребывания в колледже. Если бы это было не так, это было бы плохим знаком. Но я не думаю, что PGP содержит серьезные слабые места (хотя я почти уверен, что ошибки в ней есть). Я выбрал лучшие алгоритмы из опубликованных в литературе гражданскими учеными-криптологами. Почти каждый из алгоритмов был подвергнут тщательному изучению со стороны коллег. Я знаком со многими ведущими криптографами мира и с некоторыми из них обсуждал многие использованные в PGP алгоритмы и протоколы. PGP хорошо изучена и находится в использовании многие годы. К тому же я не работаю на АНБ. Но вам совсем не обязательно полагаться на мое слово в вопросе криптографического совершенства PGP, так как исходные тексты программ доступны для экспертизы.
И еще один пункт, касающейся моей преданности криптографическому качеству PGP. С тех пор как в 1991 году я разработал и опубликовал для бесплатного использования PGP, три года я был объектом уголовного расследования, предпринятого таможенной службой США из-за распространения PGP за рубеж, с риском уголовного наказания и многих лет тюремного заключения. Кстати, правительство не беспокоилось из-за другого криптографического программного обеспечения, только PGP заставила его выйти из себя - не говорит ли это о стойкости PGP? Я заслужил свою репутацию именно криптографической целостностью своего продукта. Я не предам свою приверженность нашему праву на приватность, за которое я рисковал своей свободой. Я не позволю продукту, связанному с моим именем, содержать скрытые "черные ходы".
Уязвимые места
Ни одна система защиты данных не является неуязвимой. PGP можно обойти целым рядом способов. Защищая данные, вы должны задать себе вопрос: является ли информация, которую вы пытаетесь защитить, более ценной для атакующего, чем стоимость атаки? Ответ на этот вопрос приведет вас к тому, чтобы защититься от дешевых способов атаки и не беспокоиться о возможности более дорогой атаки.
Нижеследующее обсуждение местами может показаться маниакальным, но такой подход уместен при обсуждении уязвимых мест.
"Если все персональные компьютеры мира (260 миллионов штук) заставить работать с единственным сообщением, зашифрованным PGP, расшифровка такого сообщения в среднем потребует времени, в 12 миллионов раз превышающего возраст Вселенной".
Уильям Кроуэлл, заместитель директора агентства национальной безопасности, 20 марта 1997 года.
Скомпрометированные пароль и закрытый ключ
Наверное, самую простую атаку можно осуществить, если вы оставите где-нибудь записанный пароль, защищающий ваш закрытый ключ. Если кто-нибудь получит его, а затем получит доступ к файлу с вашим закрытым ключом, он сможет читать адресованные вам зашифрованные сообщения и ставить от вашего имени цифровую подпись.
Вот некоторые рекомендации по защите пароля:
- Не используйте очевидные фразы, которые легко угадать, например, имена своих детей или супруги.
- Используйте в пароле пробелы и комбинации цифр и букв. Если ваш пароль будет состоять из одного слова, его очень просто отгадать, заставив компьютер перебрать все слова в словаре. Именно поэтому фраза в качестве пароля гораздо лучше, чем слово. Более изощренный злоумышленник может заставить свой компьютер в поисках пароля перебрать словарь известных цитат.
- Используйте творческий подход. Придумайте фразу, которую легко запомнить, но трудно угадать: такая фраза может быть составлена из бессмысленных выражений или очень редких литературных цитат.
Подделка открытых ключей
Самое уязвимое место - это возможность подделки открытых ключей. Вероятно, это самое серьезное слабое место любой криптосистемы с открытыми ключами, в частности, потому, что большинство новичков не в состоянии немедленно обнаружить такую подделку. О том, почему это важно и какие против этого следует предпринимать меры, подробно написано выше, в разделе "Как защитить открытые ключи от подделки".
Вкратце: когда вы используете чей-то открытый ключ, удостоверьтесь, что он не был подделан. Целостности нового чужого открытого ключа следует доверять, только если он получен непосредственно от его владельца или подписан кем-то, кому вы доверяете. Обеспечьте невозможность подделки открытых ключей на вашей связке. Сохраняйте физический контроль как над связкой открытых ключей, так и над своим закрытым ключом, по возможности сохраняйте их на своем персональном компьютере, а не на удаленной системе с разделением доступа. Сохраняйте резервную копию обеих связок.
Не до конца удаленные файлы
Еще одна потенциальная проблема безопасности связана со способом, которым большинство операционных систем удаляет файлы. Когда вы шифруете файл и затем удаляете файл с исходным открытым текстом, операционная система не стирает данные физически. Она просто помечает соответствующие блоки на диске как свободные, допуская тем самым повторное использование этого пространства. Это похоже на то, как если бы ненужные секретные документы выбрасывались в мусорную корзину вместо того, чтобы отправить их в шреддер. Блоки диска все еще сохраняют исходные секретные данные, которые вы хотели стереть, и лишь со временем будут заняты новыми данными. Если злоумышленник прочитает эти блоки данных вскоре после того, как они помечены как свободные, он сможет восстановить ваш исходный открытый текст.
Это может произойти и случайно: если из-за какого-нибудь сбоя будут уничтожены или испорчены другие файлы, для их восстановления запустят программу восстановления, а она восстановит также и некоторые из ранее стертых файлов. Может случиться так, что среди последних окажутся и ваши конфиденциальные файлы, которые вы намеревались уничтожить без следа, но они могут попасться на глаза тому, кто восстанавливает поврежденный диск. Даже когда вы создаете исходное сообщение с использованием текстового редактора, программа может оставить множество промежуточных временных файлов просто потому, что она так работает. Эти временные файлы обычно удаляются редактором при его закрытии, но фрагменты вашего секретного текста остаются где-то на диске.
Единственный способ предотвратить восстановление открытого текста - это каким-либо образом обеспечить перезапись места, занимаемого удаленными файлами. Если вы не уверены, что все блоки, занимаемые на диске удаленными файлами, будут вскоре использованы, нужно предпринять активные шаги для перезаписи места, занятого исходным открытым текстом и временными файлами, создаваемыми текстовым редактором. Это можно осуществить, используя любую утилиту, которая способна перезаписать все неиспользованные блоки на диске. Такими возможностями, к примеру, обладают Norton Utilities for MS-DOS.
Вирусы и закладки
Другая атака может быть предпринята с помощью специально разработанного компьютерного вируса или червя, который инфицирует PGP или операционную систему. Такой гипотетический вирус может перехватывать пароль, закрытый ключ или расшифрованное сообщение, а затем тайно сохранять их в файле или передавать по сети своему создателю. Вирус также может модифицировать PGP таким образом, чтобы она перестала надлежащим образом проверять подписи. Такая атака обойдется дешевле, чем криптоаналитическая.
Защита от подобных нападений подпадает под категорию общих мер защиты от вирусных инфекций. Существует ряд коммерчески доступных антивирусных программ с неплохими возможностями, а также набор гигиенических процедур, следование которым серьезно снижает риск заражения вирусами. Общие вопросы мер борьбы с вирусами и червями находятся за пределами темы настоящего документа. PGP не содержит никакой защиты от вирусов, и ее использование предполагает, что ваш персональный компьютер является надежной средой. Если такой вирус или червь действительно появится, будем надеяться, что сообщение об этом достигнет ушей каждого.
Другая аналогичная атака заключается в том, чтобы создать хитрую имитацию PGP, которая в работе выглядела бы точно так же, но делала не то, что предполагается. Например, она может обходить верификацию подписей, делая возможным принятие фальшивых сертификатов ключей.
Вы должны попытаться получить свою копию PGP непосредственно от PGP, Inc.
Существуют также возможности проверить, не подделана ли PGP, с помощью цифровых подписей. Вы можете использовать другую заведомо целостную версию PGP для верификации цифровых подписей на двоичных файлах подозрительной версии. Это не поможет, если вирусом инфицирована сама операционная система или если первоначальная версия PGP модифицирована таким образом, чтобы уничтожить в ней способность проверять подписи. Такая проверка также предполагает, что у вас есть заслуживающая доверия копия открытого ключа, который можно использовать для верификации подписей на исполняемых модулях PGP.
Файлы подкачки (виртуальная память)
PGP первоначально разрабатывалась для MS-DOS, доывольно примитивной по сегодняшним стандартам операционной системы. С ее переносом в другие, более сложные операционные системы, такие как MS Windows или MacOS, возникло еще одно уязвимое место. Оно связано с тем, что в этих более хитрых операционных системах используется технология под названием "виртуальная память".
Виртуальная память позволяет вам запускать на своем компьютере огромные программы, размер которых больше, чем объем установленных на машине полупроводниковых микросхем памяти. Это удобно, поскольку с тех пор, как графический интерфейс стал нормой, программы занимают все больше и больше места, а пользователи норовят запускать по несколько больших приложений одновременно. Операционная система сохраняет фрагменты программного обеспечения, которые в настоящий момент не используются, на жестком диске. Это значит, что операционная система может записать некоторые данные, о которых вы думаете, что они хранятся только в оперативной памяти, на диск без вашего ведома. Например, такие данные, как ключи, пароли, расшифрованные сообщения. PGP не оставляет подобного рода секретные данные в памяти дольше, чем это необходимо, однако остается вероятность того, что операционная система успеет сбросить их на диск.
Данные на диск записываются в особую временную область, известную как файл подкачки. По мере того как данные становятся нужны, они считываются обратно в память. Таким образом, в каждый отдельный момент в физической памяти находится лишь часть ваших программ и данных. Вся эта работа по подкачке остается невидимой для пользователя, который лишь слышит, как щелкает дисковод. MS Windows перекачивает фрагменты памяти, называемые страницами, используя алгоритм замещения LRU (наиболее давно использованных страниц). Это означает, что первыми окажутся сброшены на диск страницы, доступ к которым осуществлялся наиболее давно. Такой подход предполагает, что в большинстве случаев риск того, что секретные данные окажутся сброшенными на диск, неощутимо мал, поскольку PGP не оставляет их в памяти надолго. Но мы не можем дать никаких гарантий.
К этому файлу подкачки может получить доступ каждый, кому физически доступен ваш компьютер. Если вас беспокоит эта проблема, возможно, вам удастся ее решить, установив специальное программное обеспечение, стирающее данные в файле подкачки. Другим возможным средством является отключение механизма виртуальной памяти в операционной системе. Это позволяют сделать и MS Windows, и MacOS. Отключение виртуальной памяти означает, что вам потребуется больше физически установленных микросхем оперативной памяти, для того чтобы в нее вошло все.
Нарушение режима физической безопасности
Нарушение режима физического доступа может позволить постороннему захватить ваши файлы с исходным текстом или отпечатанные сообщения. Серьезно настроенный противник может выполнить это посредством ограбления, роясь в мусоре, спровоцировав необоснованный обыск и изъятие, с помощью шантажа или инфильтрации в ряды ваших сотрудников. Применение некоторых из этих методов особенно подходит против самодеятельных политических организаций, использующих в основном труд неоплачиваемых добровольцев.
Не стоит впадать в ложное чувство безопасности только потому, что у вас есть криптографическое средство. Приемы криптографии защищают данные, только пока те зашифрованы, и не могут воспрепятствовать нарушению режима физической безопасности, при котором скомпрометированными могут оказаться исходные тексты, письменная или звуковая информация.
Этот вид атаки также дешевле, чем криптоаналитическая атака на PGP.
Радиоатака
Хорошо оснащенным противником может быть предпринята атака еще одного вида, предполагающая удаленный перехват электромагнитного излучения, испускаемого вашим компьютером. Эта дорогая и часто трудоемкая атака, вероятно, также является более дешевой, чем криптоанализ. Соответствующим образом оборудованный фургон может припарковаться рядом с вашим офисом и издалека перехватывать нажатия клавиш и сообщения, отображаемые на мониторе. Это скомпрометирует все ваши пароли, сообщения и т. п. Такая атака может быть предотвращена соответствующим экранированием всего компьютерного оборудования и сетевых кабелей с тем, чтобы они не испускали излучения. Технология такого экранирования известна под названием Tempest и используется рядом правительственных служб и фирм, выполняющих оборонные заказы. Существуют поставщики оборудования, которые продают Tempest.
Защита от фальшивых дат подписей
Несколько менее очевидным слабым местом PGP является возможность того, что нечестный пользователь создаст электронную подпись на сообщении или сертификате ключа, снабженную фальшивой датой. Если вы пользуетесь PGP от случая к случаю, вы можете пропустить этот раздел и не погружаться в дебри сложных протоколов криптографии с открытыми ключами.
Ничто не помешает нечестному пользователю изменить системную дату и время на своем компьютере и создать сертификат своего открытого ключа или подпись, содержащие другую дату. Он может создать видимость того, что подписал что-то раньше или позже того времени, когда он это действительно сделал, или что его пара ключей была создана раньше или позже. Из этого могут проистекать различные юридические или финансовые выгоды, например, за счет создания некоего оправдания, позволяющего ему затем отрицать свою подпись.
Я полагаю, что проблема фальшивой даты на электронной подписи не более серьезна, чем проблема фальшивой даты, стоящей рядом с подписью ручкой. Никого не волнует, что кто угодно может поставить любую дату рядом со своей подписью на договоре. Иногда "некорректная" дата рядом с подписью не предполагает никакого мошенничества: возможно, она означает время, с которого подписывающий признает этот документ, или время, с которого он хочет, чтобы его подпись вступила в силу.
В ситуациях, когда вопрос доверия к тому, что подпись выполнена именно в определенное время, является критичным, люди могут просто обратиться к нотариусу, чтобы он засвидетельствовал момент подписи и заверил это своей печатью. Аналогично, при использовании цифровой подписи для заверки даты подписи документа можно обратиться к пользующейся доверием третьей стороне, чтобы она сертифицировала эту подпись своей. Никакого экзотического или чрезмерно формализованного протокола для этого не требуется. Подписи свидетелей издавна используются как юридическое доказательство того, что документ был подписан в определенное время.
Пользующийся доверием уполномоченный сертификатор или нотариус может создавать достойные доверия подписи с заведомо корректной датой. Такой подход не требует централизованной сертификации. Возможно, эту роль может выполнять любой пользующийся доверием посредник или незаинтересованная сторона точно так же, как действуют сегодня обычные нотариусы. Когда нотариус заверяет своей подписью подпись другого лица, он создает заверенный сертификат другого заверенного сертификата, который может служить подтверждением подписи точно так же, как подпись обычного нотариуса служит подтверждением подписи, выполненной от руки. Нотариус может вести собственный реестр, добавляя в него отделенные сертификаты с цифровыми подписями (не копируя в него сами подписанные документы). Этот реестр можно сделать общедоступным. Дата на подписи нотариуса должна пользоваться доверием, и она может являться более веским доказательством и юридически быть более значимой, чем дата на сертифицируемой подписи.
Эта тема хорошо проанализирована Деннинг в ее статье 1983 года в IEEE Computer (см. список рекомендованной вводной литературы ниже). Последующие версии PGP, вероятно, будут предусматривать возможность простого управления нотаризованными сертификатами подписей с достойными доверия датами.
Утечка данных в многопользовательских системах
PGP была разработана для использования на персональном компьютере, находящемся под физическим контролем лишь одного пользователя. Если вы запускаете PGP дома на своем собственном PC, ваши зашифрованные файлы находятся в безопасности, пока никто не ворвался в ваш дом, не украл компьютер и не заставил вас открыть ему свой пароль (или не отгадал пароль, если он слишком прост).
PGP не предназначена для защиты исходных открытых данных в скомпрометированной системе. Она также не может предотвратить использование злоумышленником изощренных способов доступа к закрытому ключу во время его использования. Вы должны просто знать о существовании этих опасностей при использовании PGP в многопользовательской среде и соответствующим образом изменить свои ожидания и свое поведение. Возможно, ваши обстоятельства таковы, что вы должны рассмотреть возможность использования PGP только на изолированной однопользовательской машине, находящейся под вашим непосредственным физическим контролем.
Анализ активности
Даже если атакующий не сможет прочитать содержимое вашей зашифрованной корреспонденции, он может извлечь по крайней мере некоторую полезную информацию, наблюдая, откуда приходят и куда уходят сообщения, отмечая их размер и время дня, когда они отправляются. Это похоже на то, как если бы злоумышленник смог взглянуть на счет за междугородные телефонные переговоры, чтобы узнать, кому вы звонили, когда и сколько времени разговаривали, даже если содержание телефонных разговоров остается ему неизвестно. Это называется анализом активности. Решение этой проблемы требует введения специальных коммуникационных протоколов, разработанных для повышения сопротивления анализу активности в вашей коммуникационной среде. Возможно, при этом потребуется применение ряда криптографических приемов.
Криптоанализ
Возможно, кто-то, обладающий суперкомпьютерными ресурсами (например, правительственная разведывательная служба) предпримет дорогостоящую и чудовищную криптоаналитическую атаку. Возможно, ему удастся сломать ваш ключ RSA, используя новые засекреченные знания в области разложения чисел на множители. Но гражданские ученые интенсивно и безуспешно атакуют этот алгоритм с 1978 года.
Возможно, правительство обладает каким-либо секретным методом взлома обычного шифра IDEA, использованного в PGP. Это - самый страшный кошмар для криптографа. Но абсолютных гарантий безопасности в практическом приложении криптографии не бывает.
И все же осторожный оптимизм кажется оправданным. Разработчики алгоритма IDEA - одни из самых сильных криптографов Европы. IDEA подвергался интенсивной проверке на безопасность и экспертировался лучшими гражданскими криптографами мира. В том, что касается устойчивости к дифференциальному криптоанализу, он, вероятно, лучше DES.
Кроме того, даже если этот алгоритм обладает какими-то до сих пор не замеченными слабыми местами, опасность сильно уменьшается из-за того, что PGP сжимает открытый текст до шифрования. Стоимость необходимых для взлома вычислений скорее всего будет больше ценности любого сообщения.
Если обстоятельства, в которых вы находитесь, оправдывают предположения о том, что вы можете подвергнуться столь чудовищной атаке, возможно, вам следует обратиться к консультанту по вопросам безопасности данных для выработки особого подхода, соответствующего вашим чрезвычайным требованиям.
В общем, без надежной криптографической защиты ваших данных от противника не требуется практически никаких усилий для перехвата ваших сообщений, и он может делать это на повседневной основе, особенно если они передаются по модему или электронной почтой. Если вы используете PGP и соблюдаете разумные меры предосторожности, злоумышленнику потребуется затратить намного больше усилий и средств для нарушения вашей приватности.
Если вы защищаете себя от простейших атак и чувствуете, что на вашу приватность не собирается посягать целеустремленный и обладающий огромными ресурсами противник, вы, вероятно, будете защищены PGP. PGP дает вам Почти Полную Приватность.
|
Рекомендованная вводная литература
1. Bacard Andre, "Computer Privacy Handbook", Peachpit Press, 1995.
2. Garfinkel Simson, "Pretty Good Privacy", O'Reilly & Associates, 1995.
3. Schneier Bruce, "Applied Cryptography: Protocols, Algorithms, and Source Code in C", 2nd Edition, John Wiley & Sons, 1996.
4. Schneier Bruce, "E-mail Security", John Wiley & Sons, 1995.
5. Stallings William, "Protect Your Privacy", Prentice Hall, 1994.
Другая литература
6. Lai Xuejia, "On the Design and Security of Block Ciphers", Institute for Signal and Information Processing, ETH-Zentrum, Zurich, Switzerland, 1992.
7. Lai Xuejia, Massey James L., Murphy Sean, "Markov Ciphers and Differential Cryptanalysis", Advances in Cryptology - EUROCRYPT'91.
8. Rivest Ronald, "The MD5 Message Digest Algorithm", MIT Laboratory for Computer Science, 1991.
9. Wallich Paul, "Electronic Envelopes", Scientific American, Feb. 1993, page 30.
10. Zimmermann Philip, "A Proposed Standard Format for RSA Cryptosystems", Advances in Computer Security, Vol. III, edited by Rein Turn, Artech House, 1988.
Перевод с англ. М.О.,
июль-август 1997 года
1 К сожалению, версия 5.0 для Windows не предоставляет такой возможности. - Здесь и далее - прим. перев.
2 При использовании режима ECB одинаковым блокам открытого текста соответствуют одинаковые блоки шифровки, что, в случае, если криптоаналитик располагает значительным количеством шифрованного материала, может существенно облегчить его работу. Остальные режимы использования DES предполагают ту или иную форму зависимости блока шифровки не только от соответствующего ему блока открытого текста и ключа, но и от других блоков открытого текста.
3 Пока эта книга переводилась, алгоритм DES был взломан совместными усилиями участников конкурса, объявленного RSA, Inc.