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

Одиннадцатого января 1996 года министерство юстиции США без доведения до суда (и без всяких комментариев) прекратило длившееся около трех лет уголовное дело по статье «незаконный экспорт оружия». Однако подследственный «оружейный барон» Фил Зиммерман не продавал «Стингеры» Ираку или ядерные технологии Ирану. Он всего лишь написал бесплатную компьютерную программу, делающую практически невозможным расшифровку частных сообщений американскими правительственными агентствами.

Оружие для всех

Закончив Флоридский университет по специальности «компьютерные науки», Фил Зиммерман работал программистом, специализируясь на передаче данных и защите информации, а в свободное от работы время активно участвовал в антивоенном и правозащитном движении. Такое сочетание интересов привело его к сильнейшему желанию создать надежную криптографическую программу. За основу были взяты наиболее стойкие из известных по открытой печати алгоритмов шифрования. Странновато звучащее название PGP (Pretty Good Privacy — Весьма Приличная Приватность) родилось, по воспоминаниям автора, как-то само собой — по аналогии с названием бакалейной лавки Pretty Good Grocery из популярного в Америке радиоспектакля.

PGP создавалась без какой-либо финансовой поддержки и в большой спешке, поскольку при президенте Буше-папе в США отчетливо складывалась ситуация, грозившая поставить публикацию подобных программ вне закона. В 1991 году в конгрессе обсуждался новый законопроект (Билль №261), направленный на борьбу с преступностью. Среди прочих в нем имелся и пункт о том, что всякая система связи должна обеспечивать правительству доступ к открытому тексту сообщения. По этой причине уже самая первая версия PGP стала распространяться как общедоступная бесплатная программа — в попытке упредить возможное подавление правительством подобных технологий в будущем.

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

Расследование велось около трех лет — впрочем, без особого успеха. С формальной точки зрения вменить Зиммерману в вину было практически нечего: программу он написал, что называется, для себя (а сие ненаказуемо) и дал ее нескольким друзьям (что тоже законом не запрещено). Кто-то из друзей положил PGP на сервер локальной сети, не имеющей выхода в Интернет (и за это наказать невозможно). А уж с этого сервера взять программу и запустить ее в Интернет мог воистину кто угодно, и найти тех людей нет никакой возможности…

Как хранить секреты

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

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

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

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

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

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

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

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

Следующий шаг в работе PGP — генерация так называемого «сеансового ключа», относительно небольшой (обычно длиной 80, 128 или 256 бит) секретной последовательности, которая используется строго однократно для шифрования отправляемого текста. Сеансовый ключ должен иметь как можно более случайный вид, чтобы противник не мог его угадать или подобрать перебором наиболее вероятных слов. Поэтому сеансовый ключ порождается алгоритмом-генератором случайных чисел, на вход которого подаются сигналы от произвольных движений манипулятора-мышки или нажатий на кнопки клавиатуры.

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

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

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

Весьма приличная приватность

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

Чрезвычайно наглядное представление о стойкости этой криптопрограммы дал в свое время Уильям Кроуэлл, первый заместитель директора Агентства национальной безопасности США: «Если все персональные компьютеры в мире — а их примерно 260 млн. штук — бросить на вскрытие единственного сообщения, зашифрованного PGP, то для успешного его дешифрования понадобилось бы время, в 12 млн. раз превышающее возраст Вселенной». С марта 1997 года, когда Кроуэлл делал это заявление на слушаниях в конгрессе США, количество компьютеров на планете, конечно же, выросло многократно, однако это ни в малейшей степени не понизило теоретическую стойкость PGP.

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

В 1997 году базовым размером ключа для симметричного алгоритма PGP была длина 128 бит. Это для нее в докладе Кроуэлла были сделаны расчеты, согласно которым для отыскания ключа тотальным перебором (лобовым вскрытием) суперкомпьютеру производительностью порядка 30 млн. операций в секунду требовалось бы время работы, в 13 трлн. раз превышающее возраст Вселенной, составляющий 13 млрд. лет. На сегодняшний день стандартными длинами ключа в PGP являются 128, 192 и 256 бит. Увеличение длины ключа всего лишь на 1 бит означает двукратное увеличение общего числа опробований ключа при вскрытии. Иначе говоря, в таких условиях решение задачи вскрытия будет всегда оставаться абсолютно безнадежным делом.

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

Статья «» опубликована в журнале «Популярная механика» (№8, Август 2006).