ГЛАВНАЯ   УСЛУГИ   ЗАКОНЫ   ПРЕССА   КРИПТОГРАФИЯ   PRIVACY   СОРМ   KeyPGP


Особенности модели безопасности и уязвимые места

   Эта глава, написанная Филом Зиммерманом, содержит вводную и базовую информацию о криптографии.

"То, что вы делаете, останется неважным, но очень важно, что вы это делаете"
- Махатма Ганди


   Зачем я написал PGP

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

   Правом на приватность неявно пропитан весь Билль о правах. Но когда писалась Конституция, отцы-основатели не видели необходимости в явном провозглашении права на приватное общение. Это было бы глупо: двести лет назад все общение было приватным. Если в пределах поля слышимости появлялся кто-то еще, вы просто отходили за сарай, и продолжали разговор. Никто не мог подслушивать вас, без вашего ведома. Право на приватное общение было естественным правом, и не только в философском смысле, но и в смысле законов физики, учитывая уровень тогдашних технологий.

   Но с наступлением информационной эры, которая началась с изобретения телефона, все изменилось. Теперь мы общаемся в основном с помощью электроники. Это приводит к тому, что наши самые интимные разговоры могут стать достоянием посторонних, а мы об этом даже не узнаем: разговоры по сотовому телефону могут прослушиваться каждым, у кого есть радиоприемник; отправка по Интернет электронной почты ничуть не безопаснее, чем разговоры по сотовому телефону. Последняя, теряя новизну, быстро вытесняет почту бумажную, ее использование становится нормой. Но электронная почта может рутинно и автоматически сканироваться на предмет наличия интересующих кого-либо ключевых слов, в больших объемах и без возможности распознавания - это похоже на ловлю рыбы дрифтерной сетью.

   Возможно, вы полагаете, что ваша электронная почта не содержит ничего предосудительного, и шифровать ее нет необходимости. Если вы - действительно законопослушный гражданин, которому нечего скрывать, почему вы не пишете все свои письма на открытках? Почему не соглашаетесь регулярно проходить проверку на употребление наркотиков? Почему требуете предъявления ордера, если полиция собирается обыскивать ваш дом? Пытаетесь что-нибудь скрыть? Если вы прячете свои письма в конверты, значит ли это, что вы диверсант, или торговец наркотиками, или, может быть, просто одержимы манией преследования? Так нужно ли законопослушным гражданам шифровать свою электронную почту?

   Что, если бы все были уверены, что законопослушные граждане должны писать все свои письма на открытках? Если какой-нибудь нонконформист попытался бы достигнуть приватности, используя для своей почты конверты, это возбудило бы подозрение. Наверное, власти захотели бы открыть его письма, и посмотреть, что же он там прячет. К счастью, мы не живем в таком мире, поскольку большая часть почты отправляется в конвертах. Поэтому никто не может привлечь к себе внимания использованием конверта. Количество обеспечивает некоторую безопасность. Аналогично, было бы неплохо, если бы каждый повседневно использовал шифрование для всей своей электронной почты, сколь бы невинным ни было ее содержание, чтобы никто не мог привлечь к себе внимания использованием шифрования. Считайте это формой солидарности.

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

   Законопроект S. 266 - внесенный в 1991 г. рамочный законопроект, направленный против преступности - таил в своих недрах беспрецедентные меры. Если бы этот билль принял форму закона, он принудил бы всех производителей оборудования для защищенной коммуникации оставлять в своих продуктах особые "черные ходы", с тем, чтобы правительство могло читать любую зашифрованную корреспонденцию. Билль гласил: "Конгресс постановляет, что поставщики услуг в области электронной коммуникации и производители оборудования, используемого для оказания услуг в области электронной коммуникации, обязаны обеспечить правительству доступ к незашифрованному содержимому всех передаваемых голосовых, цифровых и других данных в случаях, предусмотренных законом". Именно этот законопроект побудил меня опубликовать PGP в компьютерных сетях для бесплатного распространения. Это случилось незадолго до того, как после решительных протестов гражданских либертарианцев и промышленных групп указанные меры были исключены из законопроекта.

   Законопроект 1994 г. "О цифровой телефонии" обязал телефонные компании устанавливать на центральных телефонных узлах точки входа для удаленного подслушивания, создав тем самым новую технологическую инфраструктуру "моментального подключения" для подслушивания, так что федеральным агентам больше не нужно никуда выходить и цеплять зажимы-"крокодилы" к телефонным проводам. Теперь они смогут сидеть у себя в вашингтонской штаб-квартире и вслушиваться в ваши телефонные разговоры. Конечно, закон все еще требует судебного постановления для осуществления подслушивания. Но технологические инфраструктуры могут существовать в течении жизни нескольких поколений, а законы и правила иногда меняются за одну ночь. Раз уж коммуникационную инфраструктуру, оптимизированную для слежки, начали внедрять, любое изменение политических условий может привести к злоупотреблению этим новым видом власти. Политические условия могут измениться при смене правительства или, более неожиданно.

   Через год после того, как законопроект 1994 г. "О цифровой телефонии" стал законом, ФБР обнародовало план, согласно которому от всех телефонных компаний требовалось встроить в свою инфраструктуру возможность одновременного подслушивания 1% всех телефонных разговоров во всех крупных городах США. Это означало бы более чем тысячекратное увеличение количества номеров телефонов, разговоры по которым могут подслушиваться. В предшествующие годы, в США производилось лишь около тысячи санкционированных судом прослушиваний телефонных разговоров в год на всех уровнях, включая федеральный, штатов и местный. Трудно представить, как правительство может нанять такое количество судей, которое было бы способно подписывать ордера на прослушивание 1% от всех телефонных разговоров, не говоря уже о найме такого количества федеральных агентов, которое было бы способно сидеть и слушать все эти разговоры в реальном времени. Единственным осуществимым способом обработки таких объемов телефонных переговоров является массовое, по Оруэллу, применение технологий автоматизированного распознавания речи, чтобы просеивать все это в поисках интересующих ключевых слов или голоса определенного человека. Если правительство не обнаружит того, что ищет, в первой однопроцентной выборке, она перейдет к следующему проценту, и так далее, пока искомое не будет найдено или все телефоны не будут проверены на предмет подрывной активности. ФБР утверждает, что эти возможности понадобятся в будущем. Эти намерения вызвали такое возмущение, что Конгресс отверг план, по крайней мере, на этот раз, в 1995 г. Но уже сам факт, что ФБР посмело просить о таких широких полномочиях, проливает свет на его замыслы. Кроме того, отклонение этого плана не является особо убедительным, если вспомнить, что законопроект "О цифровой телефонии" тоже был отвергнут при первом рассмотрении, в 1993 г. Технологические достижения не оставляют возможности сохранения статус кво в том, что касается приватности. Само статус кво нестабильно. Если мы будем бездействовать, новые технологии предоставят правительству такие возможности для автоматизированной слежки, о которых не мечтал и Сталин. Единственным способом удержать позиции приватности в информационную эру является стойкая криптография.

   Для того чтобы начать применять криптографию, вам необязательно относиться с недоверием к собственному правительству. Ваши деловые разговоры могут подслушиваться конкурентами, организованной преступностью, или зарубежными правительствами. Например, французское правительство известно тем, что использует свою службу информационной разведки для помощи французским корпорациям в достижении большей конкурентоспособности. Забавно, но ограничения, накладываемые правительством США на криптографию, ослабили защиту американских корпораций от иностранных разведок и организованной преступности.

   Правительство знает, насколько важную роль суждено сыграть криптографии во взаимоотношениях власти и народа. В апреле 1993 г. администрация Клинтона раскрыла новую инициативу в политике отношения к шифрованию, которая разрабатывалась Агентством национальной безопасности (АНБ) с начала правления Буша. Ядро этой инициативы - разработанное правительством шифровальное устройство под названием "Клиппер", которое содержит новый секретный алгоритм шифрования, придуманный АНБ. Правительство попыталось убедить частную промышленность встроить его во все выпускаемые продукты для обеспечения безопасности коммуникаций, такие как защищенные телефоны, защищенные факсы и т.п. Компания AT&T установила "Клиппер" в свои защищенные голосовые продукты. Но дело в том, что в каждый кристалл "Клиппер" во время его производства загружается уникальный ключ шифрования, и правительство получает копию этого ключа, отправляемую в хранилище. Беспокоиться, впрочем, не стоит, ведь правительство обещает использовать этот ключ для доступа к вашим сообщениям только "в случаях, установленных законом". Конечно, чтобы сделать Клиппер эффективным, следующим логическим шагом должно стать запрещение других форм криптографии.

   Вначале правительство заверяло, что использование "Клиппера" будет добровольным, и что никого не будут заставлять применять его вместо других типов криптографии. Но реакция общества против "Клиппера" была упорной, гораздо более упорной, чем ожидало правительство. Компьютерная промышленность единодушно объявила о своей оппозиции использованию "Клиппера". Тогда директор ФБР Луис Фрей, отвечая на вопросы во время пресс-конференции в 1994 г., сказал, что если "Клиппер" не найдет общественной поддержки, и возможности ФБР в подслушивании сообщений будут блокированы криптографией, не находящейся под правительственным контролем, его ведомство будет вынуждено искать законодательной поддержки. Позже, по горячим следам трагедии в Оклахома-Сити, г-н Фрей свидетельствовал перед Законодательным комитетом Сената, что правительство должно ограничить публичный доступ к стойкой криптографии.

   Информационный Центр по Электронной Приватности (ИЦЭП), пользуясь гарантиями Закона об информации, получил доступ к ряду приоткрывающих замыслы спецслужб документов. В "кратком послании" под названием "Шифрование: угрозы, применения и возможные решения", отправленном ФБР, АНБ и Департаментом юстиции в адрес Совета по национальной безопасности в феврале 1993 г., утверждается, что "технические решения будут работать только в случае, если они встраиваются во все шифровальные продукты. Для обеспечения этого необходимо законодательное принуждение к использованию утвержденных правительством шифровальных продуктов или к соблюдению установленных правительством критериев".

   За правительством тянется "хвост", который не позволяет поверить, что оно никогда не прибегнет к подавлению наших гражданских свобод. Программа ФБР под названием COINTELPRO была направлена на преследование групп, не согласных с политикой правительства. Оно подслушивало телефонные разговоры Мартина Лютера Кинга. Никсон располагал целым списком своих врагов. А после этого случился уотергейтский скандал. Конгресс теперь, похоже, готов к принятию законов, ограничивающих наши гражданские свободы в Интернет. Никогда еще в последнее столетие недоверие к правительству не было так широко распространено по всему политическому спектру, как сегодня.

   Если мы собираемся сопротивляться тревожащей тенденции к запрещению криптографии, одно из действий, которое мы можем предпринять - это по возможности более широкое использование криптографии сейчас, пока это еще легально. Чем более популярным станет использование стойкой криптографии, тем труднее будет правительству ее запретить. А значит, использование PGP идет во благо сохранению демократии.

   Если приватность ставится вне закона, то лишь те, кто стоит вне закона, обладают приватностью. Разведывательные службы имеют доступ к хорошим криптографическим технологиям, его также имеют гангстеры и торговцы наркотиками. Но обычным гражданам и самодеятельным политическим организациям в основном не была доступна криптография с открытыми ключами "военной степени" стойкости. До сих пор не была.

   PGP отдает власть над приватностью народа в руки самого народа. И в этом есть общественная необходимость. Вот почему я написал эту программу.

   Основы шифрования

   Для начала, немного элементарной терминологии. Предположим, вы желаете отправить сообщение своей коллеге (назовем ее Алис), и вы хотите, чтобы никто, кроме Алис, не смог его прочитать. Как показано на Рис.1, вы можете зашифровать (или закодировать), то есть преобразовать сообщение безнадежно сложным образом, зная, что никто, кроме вас и Алис не сможет его прочитать. Вы применяете для шифрования криптографический ключ, а Алис должна использовать тот же ключ для его расшифровки (или раскодирования). По крайней мере, так это выглядит при применении обычной криптографии с "секретным ключом".

   Один и тот же ключ используется как для зашифровки, так и для расшифровки сообщения. Это означает, что этот ключ должен быть сначала передан по надежному каналу, с тем, чтобы обе стороны знали его до того, как передавать зашифрованное сообщение по ненадежному каналу. Но если у вас есть надежный канал, которым вы можете воспользоваться для обмена ключами, спрашивается, зачем вам вообще нужна криптография?

   Как работает криптография с открытым ключом

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

   Такой протокол обеспечивает приватность без необходимости обладания надежным каналом, которого требует обычная криптография с секретным ключом.

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

   Как шифруются ваши файлы и сообщения

   Для шифрования сообщения используется качественный и быстрый алгоритм обычного шифрования с секретным ключом. Это сообщение в оригинальной, незашифрованной форме называется "открытым текстом". В ходе процесса, невидимого для пользователя, для обычного шифрования открытого текста используется временный случайный ключ, сгенерированный специально для этого "сеанса". Затем этот случайный ключ шифруется с помощью открытого ключа получателя. Этот, зашифрованный с использованием открытого ключа "сеансовый ключ", отправляется получателю вместе с зашифрованным текстом ("шифровкой").

   Симметричные алгоритмы PGP

   PGP предоставляет выбор из ряда различных алгоритмов с секретным ключом, используемых для шифрования тела сообщения. Под алгоритмом с секретным ключом мы понимаем обычный, или симметричный, блочный шифр, который использует для шифрования и расшифровки один и тот же ключ. PGP предоставляет три симметричных блочных шифра, включая CAST, тройной DES и IDEA. Эти алгоритмы не являются "домашними поделками"; все они разработаны командами криптографов с выдающейся репутацией.

   Для интересующихся криптографией: все три шифра оперируют 64-битными блоками открытого текста и шифровки. CAST и IDEA работают со 128-битным ключом, а тройной DES - с ключом длиной 168 бит. Как и Стандарт шифрования данных (DES), любой из этих шифров может использоваться в режимах CFB (контекстно-зависимого шифрования) и CBC (односторонне-контекстно-зависимого шифрования). PGP использует их в режиме CFB с размером блока 64 бит.

   Алгоритм CAST я включил в PGP, потому что он является многообещающим в качестве хорошего блочного шифра с 128-битной длиной ключа, потому что он очень быстрый, и потому что он может быть использован бесплатно. Его название состоит из инициалов разработчиков, Карлисла Адамса и Стаффорда Тавареса из Northern Telecom (Nortel). Nortel подал патентную заявку на CAST, но разработчики сделали письменное заявление о том, что CAST может использоваться всеми на бесплатной основе. Специалистами с хорошей репутацией в области криптографии CAST признан исключительно хорошо построенным алгоритмом. Он основан на очень формальном подходе, с использованием ряда математически доказуемых положений. Это позволяет предположить, что для взлома его 128-битного ключа требуется исчерпывающий перебор вариантов. Существуют сильные аргументы в пользу того, что CAST полностью иммунен как к линейному, так и к дифференциальному криптоанализу (двум самым мощным из опубликованных схем криптоанализа, обе из которых оказались достаточно эффективными для взлома DES). Хотя CAST слишком молод для того, чтобы иметь долгий послужной список, его формальный дизайн и отличная репутация разработчиков, несомненно, привлекут внимание других членов академического криптографического сообщества. У меня складывается то же предварительное ощущение доверия к CAST, которое ранее я испытывал к IDEA, шифру использованному мною в более ранних версиях PGP. В то время IDEA также был слишком молод для того, чтобы иметь хороший послужной список, но он достойно выдержал все испытания.

   Блочный шифр IDEA (Международный алгоритм шифрования данных) основан на понятии "смешения операций, принадлежащих различным алгебраическим группам". Он был разработан в ETH в Цюрихе Джеймсом Л. Мэссли и Ксуэйджа Лайем, и опубликован в 1990 г. В ранних статьях этот алгоритм упоминается как IPES (Предложенный улучшенный алгоритм шифрования), но позднее они изменили название на IDEA. До сих пор IDEA оказывался устойчивым к криптографическим атакам в большей степени, чем другие шифры, такие, как FEAL, REDOC-II, LOKI, Snefru и Khafre. IDEA более устойчив, чем DES, к очень успешной криптографической атаке Бихама и Шамира, использующей дифференциальный криптоанализ, так же, как и к атакам с применением линейного криптоанализа. Поскольку этот шифр продолжает быть мишенью для атак со стороны наиболее выдающихся представителей мира криптоанализа, уверенность в стойкости IDEA растет со временем. К сожалению, самым серьезным препятствием к принятию IDEA в качестве стандарта является то, что Ascom Systec обладает патентом на этот алгоритм, и он, в отличие от DES и CAST, не является доступным для всех на бесплатной основе.

   В репертуар блочных шифров PGP включает также тройной DES, использующий три ключа. Алгоритм DES был разработан в IBM в середине 1970-х гг. При хорошем дизайне, 56-битный ключ является по сегодняшним стандартом слишком коротким. Тройной DES очень стоек, и изучался многие годы, так что ставка на его использование может оказаться более верной, чем использование таких шифров, как CAST и DES. Тройной DES - это DES, примененный к одному и тому же блоку данных три раза с тремя разными ключами, причем второй раз DES запускается в режиме расшифровки. Хотя тройной DES много медленнее, чем CAST и IDEA, скорость обычно не является критичной для применения в электронной почте. Тройной DES обладает ключом длиной 168 бит, но, эффективная приведенная длина ключа, вероятно, составляет 112 бит при атаке, когда атакующий располагает невероятно большим ресурсом для хранения данных. Согласно статье, представленной Мишелем Винером на Crypto96, любой хотя бы отдаленно правдоподобный объем запоминающего устройства позволит провести атаку, требующую столько же времени, сколько взлом 129-битного ключа. Тройной DES не защищен патентами.

   Открытые ключи, генерируемые PGP версий 5.0 или более ранних, содержат информацию, которая сообщает отправителю, какие из блочных шифров поддерживаются программным обеспечением получателя, так что программное обеспечение отправителя знает, какие из шифров могут быть использованы. С открытыми ключами DSS/DH могут использоваться блочные шифры CAST, IDEA и тройной DES, причем CAST является выбором по умолчанию. С открытыми ключами RSA в настоящее время может использоваться только IDEA, так как ранние версии PGP поддерживают лишь RSA и IDEA.

   Сжатие данных

   Обычно PGP сжимает данные до того, как шифровать их, так как сжимать их после шифрования слишком поздно: зашифрованные данные несжимаемы. Сжатие данных экономит время передачи данных по модему, дисковое пространство и, что более важно, усиливает криптографическую безопасность. Большинство приемов криптоанализа используют для взлома шифра избыточность исходного открытого текста. Сжатие данных снижает избыточность, значительно увеличивая, таким образом, устойчивость к криптоанализу. На сжатие исходного текста требуется дополнительное время, но с точки зрения безопасности это оправдано.

   Файлы, слишком короткие для сжатия, или просто плохо сжимаемые, не сжимаются PGP. Вдобавок, PGP распознает файлы, создаваемые наиболее популярными программами сжатия, например PKZIP, и не пытается сжимать уже сжатые файлы.

   Для интересующихся техническими подробностями: в программе использованы свободно распространяемые подпрограммы сжатия ZIP, написанные Жаном-Лу Гэйи, Марком Адлером и Ричардом Б. Уэлсом. Эти алгоритмы сжатия ZIP функционально эквивалентны использованным фирмой PKWare в PKZIP 2.x. Программы сжатия ZIP использованы, потому что они характеризуются хорошим коэффициентом сжатия, и потому что они быстрые.

   О случайных числах, используемых в качестве сеансовых ключей

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

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

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

   Как осуществляется расшифровка

   Процесс расшифровки обратен по отношению к шифрованию. Закрытый ключ получателя используется для восстановления временного сеансового ключа, который, в свою очередь, используется при запуске быстрого обычного алгоритма с секретным ключом для расшифровки основного тела сообщения.

   Как осуществляется электронная подпись

   PGP накладывает цифровую подпись для обеспечения аутентификации сообщения. Закрытый ключ отправителя используется для зашифровки дайджеста сообщения, таким образом "подписывая" сообщение. Дайджест сообщения - это 160- или 128-битная криптографически стойкая односторонняя хэш-функция. В чем-то она похожа на "контрольную сумму", или код проверки ошибок CRC, который компактно представляет сообщение и используется для проверки сообщения на наличие изменений. В отличие от CRC, дайджест сообщения формируется таким образом, что злоумышленник не может сгенерировать поддельное сообщение с аналогичным дайджестом. Дайджест сообщения передается в зашифрованном закрытым ключом отправителя виде, составляя цифровую подпись сообщения.

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

   О дайджесте сообщения

   Дайджест сообщения - это компактная (160- или 128-битная) "выжимка" вашего сообщения, или контрольная сумма файла. Ее можно также сравнить с отпечатком вашего пальца на сообщении или файле. Дайджест сообщения "представляет" ваше сообщение таким образом, что если сообщение подвергнется какому-либо изменению, ему будет соответствовать другой дайджест. Это позволяет обнаружить любое изменение, внесенное в сообщение злоумышленником. Дайджест сообщения вычисляется с использованием криптографически стойкой односторонней хэш-функции сообщения. Для атакующего, должно быть вычислительно невозможным изобрести подложное сообщение, которому соответствовал бы идентичный дайджест. В этом отношении, дайджест сообщения гораздо лучше контрольной суммы, потому что сгенерировать другое сообщение, дающее ту же контрольную сумму, достаточно просто. Но, как и из контрольной суммы, из дайджеста сообщения невозможно восстановить само сообщение.

   Используемый теперь (начиная с версии 5.0 и выше) в PGP алгоритм получения дайджеста сообщения называется SHA (Алгоритм защищенного хеширования), он разработан в АНБ для Национального института стандартов и технологий (NIST). SHA является 160-битным алгоритмом хеширования. Некоторые относятся ко всему, исходящему от АНБ, с подозрением, поскольку АНБ занимается перехватом коммуникации и взломом шифров. Но следует иметь в виду, что АНБ не заинтересовано в подделке подписей, и что правительство только выиграет от внедрения стандарта цифровой подписи, которую невозможно подделать, поскольку это помешает кому-либо отрицать подлинность своей подписи. Это несет очевидные преимущества для поддержания законности и сбора разведывательных данных. Кроме того, SHA был опубликован в открытой литературе. Он внимательно изучен большинством криптографов во всем мире, которые специализируются на хэш-функциях. Они единодушно заявляют об исключительно хорошей проработанности SHA. Во всех новых версиях PGP в качестве алгоритма генерации дайджестов сообщений используется SHA, а для наложения цифровой подписи - новые ключи DSS, соответствующие Стандарту цифровой подписи NIST. Из соображений совместимости, новые версии PGP продолжают поддерживать алгоритм MD5 в сочетании с RSA, поскольку такой была технология подписи в прежних версиях PGP.

   Использовавшийся в ранних версиях PGP для создания дайджестов сообщений алгоритм MD5, предоставленный в общее пользование RSA Data Security, Inc., является 128-битным хеш-алгоритмом. Он был почти взломан в 1996 г. немецким криптографом Хансом Доббертином. Хотя к настоящему времени MD5 и не взломан окончательно, в нем были обнаружены настолько серьезные слабые места, что никто не должен продолжать использовать его для генерации цифровой подписи. Дальнейшие разработки в этой области могут окончательно взломать его, позволив, таким образом, подделывать подписи. Если вы не хотите однажды увидеть свою цифровую подпись PGP на каком-либо подложном документе, примите совет перейти к новым ключам DSS в качестве основного метода наложения цифровой подписи, так как DSS использует в качестве алгоритма защищенного хеширования SHA.

   Как защищать открытые ключи от подмены

   В криптосистемах с открытыми ключами вам не нужно защищать открытые ключи от несанкционированного доступа. На самом деле, чем шире они распространяются, тем лучше. Однако важно защитить открытые ключи от подделки, чтобы быть уверенным в том, что ключ действительно принадлежит тому, чье имя он несет. Процедуры защиты описаны в главе 3 "Защита ваших ключей". Давайте сначала взглянем на потенциальную опасность такой подмены, а затем опишем, как ее избежать при использовании PGP.

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

   К несчастью, незаметно для вас или Алис, другой пользователь, по имени Виктор, проникает на BBS и генерирует открытый ключ, несущий идентификатор пользователя Алис. Он тайно подменяет своим фальшивым ключом настоящий открытый ключ Алис. Вы неосторожно используете этот фальшивый ключ, принадлежащий Виктору, вместо открытого ключа Алис. Все выглядит нормально, потому что фальшивый ключ несет идентификатор пользователя Алис. Теперь Виктор может расшифровать сообщение, предназначенное Алис, поскольку обладает секретным ключом из фальшивой пары. Он даже может затем снова зашифровать расшифрованное им сообщение настоящим ключом Алис и отправить его ей, так что никто ничего не заметит. Более того, он даже сможет потом накладывать от имени Алис подпись, которая будет казаться подлинной, так как все будут использовать для ее проверки фальшивый ключ.

   Единственный способ предотвратить такую неприятность - это исключить возможность подделки открытых ключей. Если вы получили открытый ключ Алис непосредственно от нее, проблем не возникает. Но это может быть затруднительным, если Алис находится на расстоянии тысячи миль, или по другим причинам с ней невозможно встретиться лично.

   Возможно, открытый ключ Алис может передать вам ваш общий друг Генри, которому вы оба доверяете, и который знает, что обладает подлинным ключом Алис. Генри может подписать открытый ключ Алис, ручаясь, таким образом, за его целостность. Для подписи он должен использовать всей собственный закрытый ключ.

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

   Этот подписанный сертификат открытого ключа Алис или Генри могут подгрузить на BBS, откуда вы можете его позднее скопировать. Так как вы в состоянии проверить подпись Генри с помощью его открытого ключа, вы можете быть уверены, что это - действительно ключ Алис. Никакой злодей не сможет обмануть вас, заставив поверить, что изготовленный им фальшивый ключ принадлежит Алис, поскольку никто не может подделать подпись Генри.

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

   Централизованный доверенный сертификатор особенно подходит для больших централизованно управляемых организаций, правительственных или корпоративных. Некоторые организационные среды используют иерархии доверенных сертификаторов.

   Для более децентрализованных сред, вероятно, более походящим, чем создание централизованного доверенного сертификатора, будет предоставление всем пользователям возможности действовать в качестве "представителей".

   Одним из наиболее привлекательных свойств PGP остается то, что она в равной мере успешно может работать как в централизованной среде с доверенным сертификатором, так и в децентрализованной среде, в которой индивидуумы свободно обмениваются своими ключами.

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

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

   Как бы велико ни было искушение, вы никогда не должны полагаться на случайность и доверять подлинности ключа, взятого с BBS, если он не подписан кем-нибудь, кому вы доверяете. Несертифицированный открытый ключ может оказаться подделкой, выполненной кем угодно, включая администратора этой BBS.

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

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

   Имейте в виду, что ваша подпись на сертификате открытого ключа представляет собой ручательство за целостность ключа и связи его с владельцем, а отнюдь не за самого владельца. Вы ничем не рискуете, подписывая открытый ключ социопата, если уверены в том, что этот ключ действительно ему принадлежит. Другие примут этот ключ, проверив вашу подпись на нем (если они, конечно, вам доверяют), но из этого не будет следовать доверия к его обладателю. Быть уверенным в ключе - совсем не то же самое, что верить его владельцу.

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

   PGP сама следит за тем, какие из открытых ключей на вашей связке надлежащим образом заверены подписями посредников, которым вы доверяете. Все что вам остается - это указать, кому вы доверяете как посредникам, и заверить их ключи своей собственной подписью. PGP затем будет автоматически переносить эту степень доверия на все ключи, заверенные подписями указанных вами посредников. И, конечно, вы можете непосредственно заверять ключи сами.

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

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

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

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

   Как PGP следит за тем, какие ключи действительны?

   До чтения этого раздела вам нужно прочитать предыдущий, где рассказывается о том, как защищать открытые ключи от подделки.

   PGP следит за тем, какие из ключей, находящихся на вашей открытой связке, надлежащим образом заверены посредниками, которым вы доверяете. Все что вам остается - это указать, кому вы доверяете как посредникам, и заверить их ключи своей собственной подписью. PGP затем будет автоматически переносить эту степень доверия на все ключи, заверенные подписями указанных вами посредников. И, конечно, вы можете непосредственно заверять ключи сами.

   Для определения степени полезности открытого ключа PGP использует два различных критерия - не перепутайте их: 1) Принадлежит ли ключ действительно тому, чье имя он несет? Иными словами, сертифицирован ли он кем-нибудь, чьей подписи вы доверяете? 2) Принадлежит ли он тому, кому вы доверяете заверять другие ключи?

   Ответ на первый вопрос PGP может вычислить. На второй вопрос вы должны дать PGP явный ответ. После того, как вы ответите на второй вопрос, PGP может вычислить ответ на первый вопрос для ключей, заверенных посредником, которому вы доверяете.

   Ключи, заверенные посредниками, которым вы доверяете, PGP считает действительными. Ключи, принадлежащие этим посредникам, сами должны быть заверены или вами или другими посредниками, которым вы доверяете.

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

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

   Ваш собственный ключ является для PGP "аксиоматически" действительным и не требует для подтверждения никаких сертификатов. PGP распознает ваши собственные открытые ключи по наличию соответствующих закрытых ключей на связке закрытых ключей.

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

   Этот уникальный самодеятельный подход контрастирует со стандартными схемами управления открытыми ключами, разработанными правительством и другими монолитными организациями, например, с Internet Privacy Enhanced Mail (PEM), основанным на централизованном контроле и принудительно централизованном доверии. Стандартная схема предполагает иерархию уполномоченных сертификаторов, которая диктует вам, кому вы должны верить. Децентрализованный вероятностный метод определения действительности ключей, реализованный PGP, позволяет вам самим решать, кому вы доверяете, ставя вас самих на вершину своей собственной пирамиды сертификации. PGP - для тех людей, которые предпочитают сами укладывать свои парашюты.

   Хотя здесь подчеркивается децентрализованный, рассчитанный на самодеятельность подход, это не значит, что PGP не может использоваться в более иерархических и централизованных схемах управления открытыми ключами. Например, пользователи - большие корпорации, вероятно, предпочтут иметь специальную должность или лицо, которое подписывает ключи всех сотрудников. PGP поддерживает и этот централизованный сценарий в качестве вырожденного случая своей обобщенной модели распределенного доверия.

   Как защищать закрытые ключи от раскрытия

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

   Защиту закрытого ключа следует начать с того, что вы должны всегда сохранять над ним физический контроль. Держать его на домашнем персональном компьютере или на переносном компьютере, который вы носите с собой, приемлемо. Если вы вынуждены использовать служебный компьютер, над которым вы не всегда сохраняете физический контроль, держите связки закрытых и открытых ключей на защищенном от записи флоппи-диске, и забирайте его с собой, когда выходите из офиса. Хранить закрытый ключ на удаленной системе с разделенным доступом (например, на UNIX-системе с удаленным доступом) не годится. Кто-нибудь может перехватить сеанс связи, захватить ваш пароль и затем получить доступ к самому закрытому ключу, хранящемуся на этой системе. Закрытый ключ может храниться только на машине, находящейся под вашим физическим контролем.

   Не храните пароль на том же компьютере, где хранится ваш закрытый ключ. Сохранение закрытого ключа и пароля на одном компьютере похоже на хранение банкоматной карточки и бумажки с записанным на ней PIN в одном и том же бумажнике. Вы не должны позволить постороннему добраться до диска, содержащего и пароль, и файл с закрытым ключом. Более безопасным будет просто запомнить пароль, и не держать его нигде, кроме собственной головы. Если вы все-таки чувствуете необходимость записать пароль, предохраняйте эту запись очень тщательно, возможно, более тщательно, чем сам закрытый ключ.

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

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

   Если случится худшее, и будут скомпрометированы как ваш закрытый ключ, так и пароль (надеемся, что вы об этом каким-то образом узнаете), вам необходимо будет сгенерировать сертификат о "компрометации ключа". Этот тип сертификата используется для предупреждения других о том, что ваш открытый ключ не должен больше использоваться. В PGP для создания такого сертификата используется команда Revoke (Отозвать) из меню PGPkeys. Затем вы должны каким-то образом отправить этот сертификат всем на свете, или, по крайней мере, своим друзьям, друзьям своих друзей и т.д. Их копия программы PGP присоединит этот сертификат к связке открытых ключей, что воспрепятствует случайному использованию скомпрометированного ключа в будущем. Затем вы можете сгенерировать новую пару из открытого и закрытого ключей и опубликовать новый открытый ключ. Новый открытый ключ и сертификат компрометации старого ключа могут быть разосланы в одном сообщении.

   Что, если вы потеряете свой закрытый ключ?

   Обычно для создания сертификата отзыва закрытого ключа, подписанного этим самым ключом, можно использовать команду Revoke (Отозвать) из меню PGPkeys.

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

   Осторожно: шарлатанские снадобья

   При оценке пакета криптографического программного обеспечения всегда остается вопрос: "Почему вы должны доверять этому продукту?" Он остается даже в случае, когда вы сами изучили исходный текст программ - ведь не каждый обладает криптографическим опытом, чтобы оценить уровень безопасности. И даже если вы опытный криптограф, от вас могут ускользнуть неочевидные, слабые места в алгоритмах.

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

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

   Из этого унизительного опыта я узнал, как просто впасть в ложное чувство безопасности при разработке алгоритма шифрования. Большинство людей просто не представляет, как немыслимо сложно придумать алгоритм шифрования, который выдержит продолжительную и целеустремленную атаку со стороны хорошо оснащенного противника. Многие разработчики обычного программного обеспечения используют столь же наивные схемы шифрования (а иногда - и ту же самую схему), а некоторые из этих схем оказываются внедренными в коммерческие программные пакеты шифрования и продаются за немалые деньги ничего не подозревающим пользователям.

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

   Некоторые коммерческие пакеты используют Федеральный стандарт шифрования данных (DES), действительно неплохой алгоритм обычного шифрования, рекомендованный правительством для коммерческого использования (но не для защиты правительственной секретной информации - достаточно странно…). Существует несколько "режимов использования" DES, некоторые из которых лучше, чем другие. Правительство не рекомендует использовать для шифрования сообщений самый слабый из них, ECB ("электронная кодовая книга"), а рекомендует более стойкие, но и более сложные режимы "шифрования с обратной связью" (CFB) и "цепочки шифрованных блоков" (CBC) режимы.

   К несчастью, большинство коммерческих пакетов шифрования, которые я видел, используют режим ECB. Когда я разговаривал с авторами некоторых из этих программ, они говорили, что никогда не слышали о режимах CBC и CFB и не знают ничего об уязвимости ECB. Сам факт того, что они не изучили криптографию даже до такой степени, чтобы знать об этих элементарных понятиях, не является оправданием. К тому же, они часто реализуют управление ключами DES ненадлежащим или небезопасным образом. А, кроме того, их программы часто предусматривают использование другого алгоритма, более быстрого по сравнению с DES. Авторы программы часто полагают, что их собственные алгоритмы не менее безопасны, чем DES, но после расспросов я часто обнаруживал, что это лишь вариации на тему той моей "блестящей" схемы студенческих годов. А некоторые авторы отказываются сообщать, как работают их собственные схемы шифрования, лишь уверяя, что это блестящие схемы, и что им можно доверять. Я уверен, что они действительно верят в то, что их алгоритмы замечательные, но как в этом можно убедиться, не видя самих алгоритмов?

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

   Даже действительно хорошие криптографические пакеты, использующие DES в правильных режимах, создают проблемы. Стандартный DES использует 56-битные ключи, слишком короткие по сегодняшним стандартам, которые могут быть взломаны специальными высокоскоростными компьютерами путем исчерпывающего перебора ключей. DES уже заканчивает свой жизненный путь, и с ним - все основанные на нем программы.

   В области средств защищенной телефонии ваш выбор невелик. Самым серьезным является устройство STU-III (Защищенный телефонный аппарат), продаваемый Motorola и AT&T, и используемый правительством для передачи секретной информации. Он использует стойкую криптографию, но для его покупки нужно особое правительственное разрешение. Доступна и его коммерческая версия, которая ослаблена для удобства АНБ, а также экспортная версия, ослабленная в еще большей степени. Затем, существует устройство Surity 3600, в котором для шифрования используется хваленая правительственная микросхема Клиппер, а копии ключей помещены в правительственное хранилище для удобства подслушивателей. Кроме того, существуют и аналоговые (не цифровые) голосовые скремблеры, которые можно найти в любом каталоге для шпионов-любителей, и которые, в криптографическом аспекте, являются на самом деле бесполезными игрушками. Однако они продаются в качестве "продуктов для безопасной коммуникации" покупателям, которые не видели ничего лучшего.

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

   Каждый, кто думает, что изобрел непробиваемую схему шифрования - или невероятно редкий гений, или просто наивен и неопытен. К несчастью, мне приходилось иметь дело с такими горе-криптографами, которые хотели "улучшить" PGP, добавив алгоритм шифрования собственного производства.

   Я вспоминаю разговор с Брайаном Сноу, высокопоставленным криптографом из АНБ. Он говорил, что никогда не стал бы доверять алгоритму шифрования, изобретенному тем, кто предварительно бы не "съел собаку", потратив массу времени на ломку шифров. Это звучало вполне убедительно. Я заметил, что практически никто в кругах коммерческих криптографов не удовлетворяет этому требованию. "Да", - ответил он с самодовольной улыбкой: "И это так упрощает нашу работу в АНБ". Отрезвляющая мысль. Ведь и я не удовлетворяю этому требованию.

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

   Главной задачей Агентства национальной безопасности США является сбор разведывательных данных, в основном, путем тайного подслушивания приватных коммуникаций между людьми (это описано в книге Джеймса Бэмфорда "Палата загадок"). АНБ затрачивает массу усилий и ресурсов на взлом шифров. Если народ не может получить хорошие криптографические средства для самозащиты, задача АНБ намного упрощается. АНБ также отвечает за экспертизу и рекомендацию алгоритмов шифрования. Ряд критиков усматривает в этом конфликт интересов, подобно тому, как если бы козлу поручили сторожить огород. В 1980-ые годы АНБ проталкивало алгоритм обычного шифрования, разработанный им (COMSEC), но не сообщало о том, как он работает, так как он был засекречен. В ANB хотели, чтобы другие поверили им и начали его использование. Но любой криптограф подтвердит, что хорошо продуманный алгоритм шифрования не должен оставаться засекреченным, чтобы быть безопасным: необходимо лишь обеспечить секретность ключей. Как можно судить, безопасен ли секретный алгоритм АНБ? Если никто больше не может его изучить, АНБ не так трудно придумать алгоритм, который только оно может сломать. И в микросхему "Клиппер" АНБ засунуло SKIPJACK, еще один разработанный этим ведомством секретный шифр. Не подсовывают ли они снова шарлатанское снадобье?

   Качество коммерческого криптографического программного обеспечения в США подрывается тремя факторами

   Первым из них является практически повсеместная некомпетентность разработчиков коммерческого криптографического программного обеспечения (впрочем, с публикацией PGP это начало меняться). Каждый программист воображает себя криптографом, что ведет к распространению исключительно плохого криптообеспечения.

   Второй - жесткое и систематическое подавление хороших коммерческих технологий шифрования со стороны АНБ посредством установления юридических ограничений и экономического давления. Частично, это давление производится путем строгих ограничений на экспорт, что, в свою очередь, благодаря законам рынка программного обеспечения, ведет к подавлению криптографического программного обеспечения для внутреннего применения.

   Другим основным методом подавления служит предоставление всех патентных прав на алгоритмы шифрования с открытым ключом единственной компании, что приводит к замыканию проблемы предотвращения распространения этой технологии на одну фирму (хотя этот криптопатентный картель уже распался осенью 1995 г.).

   Итоговым эффектом действия этих факторов стало то, что до публикации PGP в США практически не было доступно достаточно безопасное программное обеспечение для шифрования общего назначения.

   В безопасности PGP я не так уверен, как был уверен в своей "блестящей" схеме времен пребывания в колледже. Если бы это было не так, это было бы плохим знаком. Но я не думаю, что PGP содержит серьезные слабые места (хотя, я почти уверен, что ошибки в ней есть). Я выбрал лучшие алгоритмы из опубликованных в литературе гражданскими учеными-криптологами. Почти каждый из алгоритмов был подвергнут тщательному изучению коллегами. Я знаком со многими ведущими криптографами мира, и с некоторыми из них обсуждал многие использованные в PGP алгоритмы и протоколы. PGP хорошо изучена, и находится в использовании многие годы. К тому же, я не работаю на АНБ. Но вам совсем не обязательно полагаться на мое слово в вопросе криптографического совершенства PGP, так как исходные тексты программ доступны для экспертизы.

   И еще один пункт, касающейся моей преданности криптографическому качеству PGP. С тех пор, как я разработал и опубликовал в 1991 г. PGP, три года я был объектом уголовного расследования, предпринятого Таможенной службой США из-за распространения PGP за рубеж, с риском уголовного наказания и многих лет тюремного заключения. Кстати, правительство не беспокоилось из-за другого криптографического программного обеспечения - только PGP заставило его выйти из себя - не говорит ли это о стойкости PGP? Я заслужил свою репутацию именно криптографической целостностью своего продукта. Я не предам свою приверженность нашему праву на приватность, за которое я рисковал своей свободой. Я не позволю продукту, связанному с моим именем, содержать скрытые "черные ходы".

   Уязвимые места

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

   Нижеследующее обсуждение местами может показаться маниакальным, но такой подход уместен при обсуждении уязвимых мест.

   "Если все персональные компьютеры мира (260 миллионов штук) заставить работать с единственным сообщением, зашифрованным PGP, расшифровка такого сообщения в среднем потребует времени, в 12 миллионов раз превышающего возраст Вселенной". Уильям Кроуэлл, заместитель директора Агентства национальной безопасности, 20 марта 1997 г.

   Скомпрометированные пароль и закрытый ключ

   Наверное, самую простую атаку можно осуществить, если вы оставите записанный где-нибудь пароль, защищающий ваш закрытый ключ. Если кто-нибудь получит его, а затем получит доступ к файлу с вашим закрытым ключом, он сможет читать адресованные вам зашифрованные сообщения и ставить от вашего имени цифровую подпись.

   Вот некоторые рекомендации по защите пароля:

   Не используйте очевидные фразы, которые легко угадать, например, имена своих детей или супруги.

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

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

   Подделка открытых ключей

   Самое уязвимое место - это возможность подделки открытых ключей. Вероятно, это самое серьезное слабое место любой криптосистемы с открытыми ключами, в частности, потому, что большинство новичков не в состоянии немедленно обнаружить такую подделку. О том, почему это важно, и какие против этого следует предпринимать контрмеры, подробно написано выше, в разделе "Как защитить открытые ключи от подделки".

   Вкратце: когда вы используете чей-то открытый ключ, удостоверьтесь, что он не был подделан. Целостности нового чужого открытого ключа следует доверять, только если он получен непосредственно от его владельца или подписан кем-то, кому вы доверяете. Обеспечьте невозможность подделки открытых ключей на вашей связке. Сохраняйте физический контроль, как над связкой открытых ключей, так и над своим закрытым ключом, при возможности сохраняйте их на своем персональном компьютере, а не на удаленной системе с разделением доступа. Сохраняйте резервную копию обеих связок.

   Не до конца удаленные файлы

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

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

   Единственный способ предотвратить восстановление открытого текста - это каким-либо образом обеспечить перезапись места, занимаемого удаленными файлами. Если вы не уверены, что все блоки, занимаемые на диске удаленными файлами, будут вскоре использованы, нужно предпринять активные шаги для перезаписи места, занятого исходным открытым текстом и временными файлами, создаваемыми Word-процессором. Это можно осуществить с использованием любой утилиты, которая способна перезаписать все неиспользованные блоки на диске. Такими возможностями, к примеру, обладают Norton Utilities for MS-DOS.

   Вирусы и закладки

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

   Защита от подобных нападений подпадает под категорию общих мер защиты от вирусных инфекций. Существует ряд коммерчески доступных антивирусных программ с неплохими возможностями, а также набор гигиенических процедур, следование которым серьезно снижает риск заражения вирусами. Общие вопросы мер борьбы с вирусами и червями находятся за пределами темы этого документа. PGP не содержит никакой защиты от вирусов, и ее использование предполагает, что ваш персональный компьютер является надежной средой. Если такой вирус или червь действительно появится, будем надеяться, что сообщение об этом достигнет ушей каждого.

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

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

   Файлы подкачки (виртуальная память)

   PGP первоначально разрабатывалась для MS-DOS, достаточно примитивной, по сегодняшним стандартам, операционной системы. С ее переносом в другие, более сложные операционные системы, такие как MS Windows или MacOS, возникло еще одно уязвимое место. Оно связано с тем, что в этих более хитрых операционных системах используется технология по названием виртуальная память.

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

   Данные на диск записываются в особую временную область, известную как файл подкачки. По мере того, как они становятся нужны, они считываются обратно в память. Таким образом, в каждый отдельный момент в физической памяти находится лишь часть ваших программ и данных. Вся эта работа по подкачке остается невидимой для пользователя, который лишь слышит, как щелкает дисковод. MS Windows перекачивает фрагменты памяти, называемые страницами, используя алгоритм замещения LRU (Наиболее давно использованных страниц). Это означает, что первыми окажутся сброшены на диск страницы, доступ к которым осуществлялся наиболее давно. Такой подход предполагает, что в большинстве случаев риск того, что секретные данные окажутся сброшенными на диск, неощутимо мал, поскольку PGP не оставляет их в памяти надолго. Но мы не можем дать никаких гарантий.

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

   Нарушение режима физической безопасности

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

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

   Этот вид атаки также дешевле, чем криптоаналитическая атака на PGP.

   Радиоатака

Хорошо оснащенным противником может быть предпринята атака еще одного вида, предполагающая удаленный перехват электромагнитного излучения, испускаемого вашим компьютером. Эта дорогая и часто трудоемкая атака, вероятно, также является более дешевой, чем криптоанализ. Соответствующим образом оборудованный фургон может припарковаться рядом с вашим офисом и издалека перехватывать нажатия клавиш и сообщения, отображаемые на мониторе. Это скомпрометирует все ваши пароли, сообщения и т.п. Такая атака может быть предотвращена соответствующим экранированием всего компьютерного оборудования и сетевых кабелей с тем, чтобы они не испускали излучения. Технология такого экранирования известна под названием "Tempest" и используется рядом правительственных служб и фирм, выполняющих оборонные заказы.

   Защита от фальшивых дат подписей

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

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

   Я полагаю, что проблема фальшивой даты на электронной подписи не более серьезна, чем проблема фальшивой даты, стоящей рядом с подписью ручкой. Никого не волнует, что кто угодно может поставить любую дату рядом со своей подписью на договоре. Иногда, "некорректная" дата рядом с подписью не предполагает никакого мошенничества: возможно, она означает время, с которого подписывающий признает этот документ, или время, с которого он хочет, чтобы его подпись вступила в силу.

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

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

   Эта тема хорошо проанализирована Деннинг в ее статье 1983 г. в IEEE Computer. Последующие версии PGP, возможно, будут предусматривать возможность простого управления нотаризованными подписями подписей с достойными доверия датами.

   Утечка данных в многопользовательских системах

   PGP была разработана для использования на однопользовательском персональном компьютере, находящимся под физическим контролем пользователя. Если вы запускаете PGP дома на своем собственном PC, ваши зашифрованные файлы находятся в безопасности, пока никто не ворвался в ваш дом, не украл компьютер и не заставил вас открыть ему свой пароль (или если пароль достаточно прост для того, чтобы его можно было угадать).

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

   Криптоанализ

   Возможно, кто-то, обладающий суперкомпьютерными ресурсами (например, правительственная разведывательная служба) предпримет дорогостоящую и чудовищную критоаналитическую атаку. Возможно, ему удастся сломать ваш ключ RSA, используя новые засекреченные знания в области разложения чисел на множители. Но гражданские ученые интенсивно и безуспешно атакуют этот алгоритм с 1978 г.

   Возможно, правительство обладает каким-либо секретным методом взлома обычного шифра IDEA, использованного в PGP. Это - самый страшный кошмар для криптографа. Но абсолютных гарантий безопасности в практическом приложении криптографии не бывает.

   И все же, осторожный оптимизм кажется оправданным. Разработчики алгоритма IDEA - одни из самых сильных криптографов Европы. Он подвергался интенсивной проверке на безопасность и экспертировался лучшими гражданскими криптографами мира. В том, что касается устойчивости к дифференциальному криптоанализу, он, вероятно, лучше DES.

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

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

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

   Если вы защищаете себя от простейших атак, и чувствуете, что на вашу приватность не собирается посягать целеустремленный и обладающий огромными ресурсами противник, вы, вероятно, будете защищены PGP. PGP несет вам: Почти Полную Приватность.

ГЛАВНАЯ   УСЛУГИ   ЗАКОНЫ   ПРЕССА   КРИПТОГРАФИЯ   PRIVACY   СОРМ   KeyPGP

Rambler's Top100 Rambler's Top100
Hosted by uCoz