Глава 2. Фил Циммерман о PGP

Эта глава содержит подробную информацию о криптографии и PGP в авторском изложении Фила Циммермана[7].

Зачем я создал PGP

"Всё, что ты делаешь, будет незначительно, но очень важно, что ты делаешь это"

— Махатма Ганди

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

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

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

До недавних пор, если правительство намеревалось нарушить право обычных граждан на тайну связи, оно было вынуждено затратить некоторое количество времени и средств, чтобы перехватить, отпарить и вскрыть бумажный конверт. Или ему приходилось прослушивать и, возможно, вручную стенографировать телефонный разговор, по крайней мере до появления технологий автоматического распознавания речи. Этот тип трудоёмких "ручных" перехватов был непрактичен в более крупных масштабах. Он применялся только в определённых исключительных обстоятельствах, когда оправдывал затраченные на него средства. Это напоминало ловлю на удочку по рыбке. Сегодня e-mail может автоматически сканироваться на предмет интересующих ключевых слов и фраз — в огромных масштабах, неподконтрольно и незаметно. Это словно ловля тонн рыбы траулерной сетью. А экспоненциальный рост компьютерных вычислительных мощностей делает то же самое возможным и для голосового трафика.

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

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

Сенатский законопроект 266, общий антикриминальный законопроект 1991 года, скрывал в себе разрушительную меру. Если бы эта необязательная резолюция стала реальным законом, она бы обязала производителей оборудования для защищённых коммуникаций встраивать в свои изделия особые "потайные ходы", позволяющие правительству читать любые зашифрованные сообщения. Цитата:


Именно эта законодательная инициатива побудила меня в том же году разместить PGP для свободного доступа в Сети незадолго до того, как под энергичным протестом индустриальных групп и либеральных объединений за права человека эта мера была отклонена.

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

Год спустя принятия CALEA ФБР обнародовало инициативу о требовании к телефонным компаниям установить в свои инфраструктуры достаточные мощности для единовременной прослушки одного процента всех телефонных переговоров в крупных городах США. Это бы представляло более чем тысячекратное увеличение в количестве прослушиваемых переговоров. В прежние годы осуществлялось лишь около тысячи судебно санкционированных телефонных перехватов в США за год на федеральном уровне, уровне штатов и местном уровне вместе взятых. Трудно представить, как правительство наймёт достаточно судей для подписания нужного числа ордеров; ещё труднее понять, откуда оно возьмёт столько федеральных агентов, которые будут сидеть и слушать весь этот трафик в реальном времени. Единственно возможный способ обработки такого объёма информации — это огромная оруэллианская программа по автоматическому распознаванию речи, которая будет просеивать весь трафик в поисках интересующих ключевых слов или голоса определённого человека. Если правительство не найдёт цель в первом однопроцентном образце, прослушка будет переключена на следующий и так далее, пока цель не будет обнаружена или пока все телефоны не будут прослушаны на предмет подозрительных переговоров. ФБР заверяло, что эти мощности нужны ему только в качестве задела на будущее. Но эта инициатива вызвала столь яростное общественное возмущение, что была отклонена Конгрессом. Однако сам факт, что ФБР затребовало столь серьёзную силу, свидетельствует о его ближайших планах.

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

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

Правительству известно, сколь значительную роль криптография обречена играть в "силовых" взаимоотношениях с его собственным народом. В апреле 93-го администрация Клинтона раскрыла кардинально новую криптографическую политику, разрабатывавшуюся в Агентстве национальной безопасности (АНБ) США с начала администрации Буша[-старшего]. Основой этой новой политики стала сконструированная в АНБ шифровальная микросхема, названная Clipper-чипом, содержащая новый засекреченный алгоритм шифрования АНБ — Skipjack. Правительство пыталось инспирировать частную индрустрию встраивать чип во все изделия для защищённых коммуникаций, такие как криптофоны, криптофаксы и пр. AT&T установила Clipper в свои криптографические речевые продукты. В чём же здесь фокус? В процессе производства в каждый Clipper-чип загружается его собственный уникальный ключ, а правительство получает копию, которую помещает в депозитарий. Однако беспокоиться не о чем — правительство обещает использовать эти депонированные ключи для прослушки ваших переговоров, только когда"надлежащим образом уполномочено на то законом". Конечно, чтобы сделать Clipper безоговорочно эффективным, следующим логическим шагом было бы объявление всех иных форм криптографии вне закона.

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

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

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

Оказалось, что публикация PGP наряду с годами жёсткого общественного недовольства и индустриального давления на ослабление экспортного контроля дали позитивный эффект. В последние месяцы 1999 года администрация Клинтона объявила о радикальном пересмотре политики экпортного контроля криптотехнологий. Она попросту отказалась от режима ограничений. Сейчас мы, наконец, можем экспортировать средства стойкого шифрования без каких-либо максимальных порогов стойкости. Это была долгая борьба, но мы в конце концов одержали победу, по крайней мере на фронте экспортного контроля США. Теперь нужно продолжить наши усилия по распространению и популяризации криптографии, чтобы притупить эффект от усиливающихся мер по электронной слежке в Сети некоторыми государствами. И всё ещё нужно "продавить" наши права на её демократическое использование, несмотря на энергичные протесты ФБР.

PGP даёт людям власть взять защиту собственных гражданских прав в свои руки. На это существует высокая социальная потребность. Именно поэтому я создал PGP.

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

PGP располагает набором различных алгоритмов с тайным ключом, шифрующих само сообщение. Под алгоритмами с тайным ключом мы подразумеваем симметричные блочные шифры, использующие один и тот же ключ как для зашифрования, так и для расшифрования. Симметричные блочные шифры, предлагаемые PGP, это CAST, Triple-DES, IDEA, Twofish, а такжеAES. Все эти алгоритмы не были написаны "на коленке" — это результаты серьёзных научных исследований криптологических групп с выдающейся репутацией.

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

Я добавил в PGP алгоритм CAST по ряду причин: он подаёт надежды как стойкий блочный шифр со 128-битовым ключом, он очень быстр, и он бесплатный. Его название происходит от инициалов разработчиков, Карлайсла Адамса и Стаффорда Тавареса[9], из Northern Telecom (Nortel). Nortel запатентовал CAST, но дал письменное обязательство оставить его доступным для каждого без выплат патентных гонораров. CAST представляется очень удачным шифром, спроектированным людьми с хорошей репутацией в своей профессиональной сфере. Дизайн основан на сугубо формальном подходе с рядом формально доказуемых положений; всё это даёт веские основания заключить, что для взлома его 128-битового ключа потребуется лобовая атака. CAST не имеет пространства слабых и полуслабых ключей. Есть серьёзные аргументы в пользу того, что CAST совершенно неподвержен линейному и дифференциальному криптоанализу, двум мощнейшим формам криптоанализа, описанным в открытой литературе, обе из которых оказались эффективны при взломе DES. Формальная DES-подобная архитектура CAST и хорошая репутация его авторов привлекли к алгоритму внимание и попытки криптоаналитических атак со стороны всего научного сообщества, которые он выстоял достойно. У меня появляется почти то же чувство уверенности в CAST, какое было несколько лет назад от IDEA, шифра, который я избрал для ранних версий PGP. На то время IDEA был слишком молод, чтобы иметь серьёзное доверие, но и поныне он демонстрирует себя очень хорошо.

Блочный шифр IDEA (International Data Encryption Algorithm) основан на концепции"смешения операций из различных алгебраических групп". Он был разработан в ETH, Цюрих, Джеймсом Мэсси и Суэджа Лай, и опубликован в 1990 г. В первых публикациях алгоритм назывался IPES (Improved Proposed Encryption Standart), но позднее его переименовали в IDEA. IDEA гораздо более стоек против атак, нежели ранние шифры FEAL, REDOC–II, LOKI, Khufu и Khafre. Также, IDEA оказался гораздо устойчивей DES к очень удачной дифференциальной криптоатаке Бихама и Шамира, равно как и к линейному криптоанализу. Уверенность в IDEA растёт с каждым годом. К сожалению, самым большим препятствием к применению IDEA как стандарта шифрования стал тот факт, что держатель патента на его дизайн — AscomSystec — не предоставляет его для свободного применения без выплат роялти, как в случаях с DES и CAST.

Также, в числе прочих, в арсенал блочных шифров PGP включён и трёхключевой Triple-DES. DES был изобретён в IBM в середине 70-х. Хотя он и имеет эффективный дизайн, его 56-битовый ключ слишком мал по сегодняшним меркам. Triple-DES же крайне надёжен; за многие годы он был хорошо изучен, так что может быть это более удачный выбор в сравнении с относительно молодыми CAST и IDEA. Triple-DES — это DES, применяемый трижды на одном блоке данных, используя три разных ключа, за исключением того, что вторая операция проходит в обратном порядке в режиме расшифрования. Несмотря на то, что Triple-DES гораздо медленней, чем CAST или IDEA, скорость обычно не играет критической роли в email-приложениях. Хотя Triple-DES имеет длину ключа в 168 бит, эффективная стойкость составляет по меньшей мере 112 бит против взломщика с невероятно огромным вычислительным потенциалом, используемым в атаке. В соответствии с расчётами, представленными Майклом Винером на Crypto96, любые хотя бы удалённо правдоподобные ресурсы для хранения промежуточных вычислений, доступные взломщику, позволят провести атаку, требующую практически столько же времени/средств, сколько понадобится для лобового взлома 129-битового ключа. Применение Triple-DES не ограничено никакими патентами.

Начав с версии PGP 7.0, мы добавили алгоритм Брюса Шнайера Twofish. Twofish стал одним из пяти финалистов в проекте NIST "Улучшенный стандарт шифрования" (AES). AES представляет собой новую архитектуру блочного шифра, работающего на 128-битовых блоках, с размерами ключа в 128, 192 или 256 бит. Пятнадцать криптографических групп со всего света подали свои разработки, когда в 1996 году NIST объявил о начале конкурса, из которых в 1998 выбрал пять.

Пятью финалистами стали Twofish, Serpent, Rijndael, RC6 и MARS. Все пять прошли через серьёзнейшее криптоаналитическое испытание лучшими криптографами мира, многие из которых представляли на AES собственные работы, соревновавшиеся с другими. NIST из этих пяти превосходных алгоритмов в качестве победителя избрал Rijndael ("рэйн долл"). Rijndael — это блочный шифр, разработанный Джоан Даймен и Винсентом Рижменом. Rijndael был включён в PGP, начиная с версии 7.1. За более подробной информацией об AES см. http://www.nist.gov/aes.

Открытые ключи, сгенерированные в PGP 5.0 и выше, несут в себе сведения о том, какие блочные шифры распознаются программой получателя с тем, чтобы программа отправителя знала, какие алгоритмы можно применять для зашифрования. Открытые ключи типа Diffie-Hellman/DSS поддерживают CAST, IDEA, AES (Rijndael), Triple-DES и Twofish в качестве блочных шифров с AES, установленным по умолчанию (в версиях 8.0 и выше). С целью обратной совместимости, ключи RSA не обладают такой возможностью. PGP ограничен алгоритмом IDEA для шифрования сообщений ключами RSA, поскольку старые версии PGP поддерживают только RSA и IDEA[10].

О процедуре сжатия данных в PGP

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

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

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

О случайных числах и сеансовых ключах

Для генерации одноразовых симметричных сеансовых ключей PGP использует криптографически стойкий генератор псевдослучайных чисел (ГПСЧ)[11]. Если файл ПСЧ отсутствует, он автоматически создаётся и заполняется абсолютно произвольными числами, полученными программой от показаний системного таймера, задержек нажатий клавиш и перемещений мыши.

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

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

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

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

Алгоритм стойкой односторонней хэш-функции, используемый в PGP 5.0 и выше, называется SHA-1, что означает Secure Hash Algorithm; он был разработан в АНБ для Национального Института Стандартов и Технологий (NIST) США. SHA-1 — это 160-битовый хэш-алгоритм. Некоторые люди ко всем разработкам АНБ относятся с подозрением, поскольку именно АНБ "заведует" электронной и радиотехнической разведкой и взломом кодов. Но имейте в виду, что АНБ не заинтересовано в подделке подписей; правительство и его силовые структуры получат гораздо больше выгоды от хорошего стандарта неподделываемых ЭЦП, не позволяющих никому от них отрекаться. Кроме того, SHA-1 был опубликован в открытой литературе и, после тщательнейшего исследования лучшими криптографами мира, специализирующимися на хэш-функциях, получил единодушную высочайшую оценку своего крайне удачного дизайна. Он имеет некоторые архитектурные инновации, благодаря которым преодолевает все наблюдавшиеся прежде проблемы односторонних хэш-функций, когда-либо созданных гражданским криптографическим сообществом. Все последние версии PGP используют SHA-1 в качестве хэш-алгоритма для генерации подписей новыми ключами DSA, соответствующими Стандарту Цифровых Подписей (DSS) NIST[13]. Для нужд обратной совместимости новые версии PGP всё ещё используют MD5 для подписания ключами RSA [Legacy v3], т. к. старые версии PGP используют для работы с ЭЦП только алгоритм MD5.

В ранних версиях PGP в качестве алгоритма хэш-функции применялся MD5, Message Digest Algorithm, опубликованный для свободного применения компанией RSA Data Security. MD5 представляет собой хэш-алгоритм со 128-битовым выходом. В 1996 году MD5 был практически взломан немецким криптографом Гансом Доббертином. Хотя алгоритм не поддался окончательно, в нём выявились столь серьёзные недостатки (тенденция сжимающей функции алгоритма к коллизиям), что теперь никому более не рекомендуется использовать его для генерации ЭЦП. Дальнейшая работа в этой области наверняка позволит полностью его взломать, что сделает возможной свободную подделку электронных подписей. Если вы не желаете в один прекрасный день обнаружить свою электронную подпись на подставных признательных показаниях, переходите к применению новых ключей DSA и RSA v4 как предпочтительного метода генерации цифровых подписей, поскольку они в качестве криптографически стойкой односторонней хэш-функции используют SHA-1.

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

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

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

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

Единственный способ избежать подобной проблемы — не допускать махинаций с открытыми ключами. Это несложно, если вы получили открытый ключ Алисы непосредственно от неё при личной встрече, но может оказаться весьма проблематичным, если она в тысячах миль от вас или просто в данный момент недоступна.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Несколько усложнённым способом защиты всей связки открытых ключей от подделки будет подписание её файла закрытым ключом. Вы можете сделать это, создав съёмную подпись (detached signature) файла и регулярно её сверяя.

Как PGP определяет подлинность ключей

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

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

PGP применяет два параллельных критерия оценки достоверности открытых ключей, не спутайте их:

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

2. Принадлежит ли ключ человеку, уполномоченному вами на удостоверение иных ключей (поручителю)?

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

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

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

Рассчитывая достоверность открытого ключа, PGP проверяет уровни доверия всех сертифицирующих его подписей. Затем он выводит общую оценку достоверности: например, две частично доверяемые подписи расцениваются равнозначными одной полностью доверяемой. Скептицизм программы поддаётся регулировке: вы можете настроить PGP, чтобы для удостоверения ключа он требовал две полностью доверяемые или три частично доверяемые подписи и т. д[14].

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

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

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

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

Как уберечь закрытый ключ от компрометации

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

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

Не храните парольную фразу на том же компьютере, что и закрытый ключ! Держать парольную фразу и сам ключ на одном ПК так же опасно, как держать свой PIN в одном бумажнике с банковской картой. Представьте, что будет, если кто-то получит доступ к диску, содержащему и закрытый ключ, и парольную фразу. Конечно, самое надёжное место для хранения парольной фразы — ваша собственная память. Если же вам кажется, что пароль всё-таки стоит записать, спрячьте запись и держите в безопасности, возможно даже в большей, чем сам ключ.

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

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

Если случилось худшее — закрытый ключ и его пароль оказались скомпрометированы (надо надеяться, вы как-то об этом узнали) — нужно немедленно издать сертификат аннулировании ключа (Key Revocation Certificate, KRC). Он применяется как предупредительная мера, блокирующая использование аннулированного открытого ключа. Вы можете издать сертификат KRC, воспользовавшись командой Отзыва (Revoke) из менеджера PGPkeys, либо попросить сделать это вашего "уполномоченного отменителя" (Designated Revoker). Затем нужно отправить этот сертификат на сервер-депозитарий. Любой потенциальный корреспондент, скачавший сертификат, не сможет намеренно или случайно воспользоваться вашим открытым ключом: PGP не позволит использовать его для шифрования, а при сличении подписей будет уведомлять, что ключ аннулирован. Теперь вы можете сгенерировать новую ключевую пару и опубликовать новый открытый ключ в Сети.

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

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

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

Берегитесь ханаанского бальзама

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

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

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

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

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

Иногда в коммерческих продуктах реализован федеральный Стандарт шифрования данных — DES — весьма неплохой блочный шифр (за исключением слишком короткого ключа), рекомендованный правительством для коммерческого использования (но не для секретной информации, что довольно странно. Хммм). DES может работать в нескольких режимах, одни из которых лучше, чем другие. Правительство особо указывает не использовать при пересылке сообщений самый простой и слабый — электронную шифрокнигу (electronic codebook, ECB). Вместо него оно предлагает более стойкие и комплексные режимы гаммирования с обратной связью(cipher feedback, CFB) и сцепления блоков шифртекста (cipher block chaining, CBC).

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

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

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

Есть компания под названием AccessData, торгующая очень дешёвой программой, которая взламывает шифровальные схемы, встроенные в WordPerfect, Lotus 1-2-3, MS Excel, Symphony, Quattro Pro, Paradox, MS Word и PKZIP. Она не просто угадывает пароль, а производит настоящий криптоанализ. Некоторые люди покупают её, когда забывают пароли к собственным файлам. Силовые структуры тоже её покупают, чтобы читать файлы, которые изымают в ходе обысков. Я разговаривал с Эриком Томпсоном, автором программы, и он признался, что ей требуется всего доля секунды, чтобы взломать пароль, но он добавил несколько циклов задержки для замедления процесса, дабы он не казался покупателю столь элементарным.

В некотором смысле криптография аналогична фармацевтике. Её надёжность представляется критически важной. Плохой пенициллин на вид ничем не отличается от хорошего. Если с вашим текстовым редактором что-то не так, вы это увидите, но как вы определите надёжность своего криптографического пакета? Шифртекст, произведённый слабым алгоритмом, выглядит так же убедительно, как и шифртекст, сгенерированный стойким алгоритмом. В этом деле много ханаанского бальзама[16]. Много знахарских снадобий. В отличие от торгашей лекарствами древности, нынешние разработчики обычно даже не догадываются, что их продукты — ханаанский бальзам. Возможно, они неплохие программные инженеры, но, как правило, даже не знакомы с научными трудами по криптографии. Но продолжают считать, что могут написать хороший криптопродукт. А почему бы и нет? В конце концов, интуитивно это кажется несложным, а их программы вроде бы функционируют нормально.

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

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

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

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

На момент первоначальной публикации PGP, качество коммерческих криптопродуктов в США определялось тремя главными факторами:

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

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

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

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

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

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

Уязвимости

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

— Уильям Кроуэлл, замдиректора АНБ США, на сенатских слушаниях 20 марта 1997 года.

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

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

Компрометация закрытого ключа и ключевой фразы

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

Вот некоторые советы по защите парольной фразы:

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

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

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

Махинации с открытыми ключами

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

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

Не полностью удалённые файлы

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

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

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

Современные операционные системы благодаря поддержке так называемых журнальных файловых систем ещё более усугубляют проблему временных файлов. Эти файловые системы сохраняют в своей специальной внутренней области резервные копии всех записей, вносимых ОС в файловую систему — ведут журнал изменений. Такой журнал представляет собой последовательное описание всех изменений, произведённых на диске, и служит цели надёжного восстановления ФС после сбоев. Файловая система NTFS, поддерживаемая Windows NT/2000/XP, и есть пример журнальной ФС. MacOS X 10.2.2 также имеем журнальные расширения к своей файловой системе HFS. Единственный способ уничтожить записи журнала ФС, относящиеся к удалённым ценным файлам — использовать функцию PGP Freespace Wipe.

Вирусы и трояны

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

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

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

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

Наилучший источник получения PGP — это сайт PGP Corporation.

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

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

Первоначально PGP создавался для MS-DOS — примитивной по сегодняшним меркам операционной системы. Но когда он был адаптирован под более комплексные ОС, такие как Microsoft Windows и Macintosh OS, возникла новая проблема. Эта проблема проистекает из факта, что эти продвинутые ОС используют метод, называемый виртуальной памятью.

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

Данные записываются в специальную область диска, называемую своп-файлом (swap file), или файлом подкачки. Затем они по мере надобности считываются из своп-файла, так что на каждый момент времени в физической памяти находится только часть информации или исполняемой программы. Все эти действия незаметны для пользователя, который видит только перемигивания индикатора доступа к диску. Microsoft Windows подкачивает блоки памяти, называемые страницами, используя алгоритм замены наименее используемых страниц(Least Recently Used, LRU). Это значит, что из памяти в первую очередь выгружаются те страницы, к которым дольше всего не было запросов. Такой подход снижает риск, что ценные данные будут записаны на диск, поскольку PGP не оставляет их надолго в памяти. Также мы старались по возможности заставить ОС блокировать такие данные в физической памяти, не позволяя выкачивать их на диск. Но мы не можем ничего гарантировать.

Всякий, кто имеет физический доступ к вашему компьютеру, может получить доступ и к этому файлу. Если вас беспокоит эта проблема, её можно решить, установив программу для шифрования или перезаписи файла подкачки. Другое возможное решение — отключить виртуальную память операционной системы совсем. MS Windows, как и Mac OS, позволяют сделать это. Но её отключение потребует от вас установить дополнительные схемы ОЗУ, чтобы уместить всё в физической памяти.

Брешь в физическом периметре безопасности

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

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

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

TEMPEST-атака

Другой подход к взлому, применяемый хорошо оснащённым оппонентом, основан на удалённом регистрировании излучаемых компьютером электромагнитных волн. Эта дорогостоящая и трудоёмкая атака всё же дешевле прямого криптоанализа. Соответствующим образом оборудованный фургон может припарковаться неподалёку от вашего офиса и дистанционно "снять" все нажатия клавиш и отображаемую на дисплее информацию. Это, безусловно, раскроет все ваши пароли, сообщения, и т. п. Такую атаку можно предотвратить надёжным экранированием компьютерной техники и сетевых кабелей. Эта защитная технология, известная как TEMPEST (от Transient Electromagnetic Pulse Emanation Standard, стандарт всплескового переменного электромагнитного импульсного излучения), применяется некоторыми государственными службами и оборонными предприятиями. Есть компании, поставляющие экранировку TEMPEST коммерчески.

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

Фальсификация меток времени

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

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

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

PGP предваряет подписанный текст несколькими строчками с указанием даты подписания и лица, подписавшего текст. PGP Universal и PGP 8.0.3 и выше применяют особые механизмы для предостращения модификации этих служебных строк, тем не менее, взломщик может прибегнуть к обрамлению текста в электронном письме аккуратно составленным изображением, заставляющим вас поверить, что он подписал сообщение в иное время, чем было в действительности. Один из способов обнаружить обман — целиком выделить содержание сообщения (Ctrl+A). Выделенный текст выглядит обычно иначе, чем выделенная картинка.

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

Доверенный нотариус или Центр сертификации может давать надёжные подписи с достоверными метками времени[17]. Для этой цели даже не нужна централизованная служба. Любой доверенный поручитель или незаинтересованная третья сторона сможет исполнить эту роль, как это делают частные, государственные и общественные нотариусы. Когда нотариус подтверждает чужую подпись, он создаёт сертификат подписи для сертификата подписи. Затем нотариус может поместить съёмную ЭЦП (без самого заверенного документа) в специальный публичных архив. Подпись нотариуса с достоверной меткой времени будет иметь больший вес и правовое значение, нежели дата оригинальной подписи документа.

Подробное обсуждение этой темы вы можете найти в статье Деннинга в IEEE Computer за 1983 год. Будущие версии PGP, возможно, будут иметь дополнительные функции по работе с нотариальными подписями и достоверными метками времени.

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

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

Анализ трафика

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

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

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

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

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

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

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

Загрузка...