Секреты и ложь. Безопасность данных в цифровом мире
Шрифт:
Но они несовершенны.
Проблема в распределении ключей. Для того чтобы описанная система работала, Алиса и Боб должны договориться о секретном ключе перед тем, как получат возможность обменяться тайными сообщениями. Если они достаточно сообразительны, то будут регулярно менять ключ, скажем, раз в день. Им необходимо как-то тайно уславливаться об этих ежедневно изменяющихся ключах, так как, перехватив ключ, кто угодно сможет читать все сообщения, зашифрованные с его помощью. Кроме того, поскольку необходима попарная секретность, количество ключей будет возрастать пропорционально квадрату количества пользователей. Двум пользователям нужен только один ключ, но сеть из десяти пользователей требует 45 ключей [19] , чтобы предоставить каждой паре возможность секретного общения. А сеть из 100 пользователей потребует 4950 различных ключей. В 80-х годах корабли Военно-Морского флота США отправлялись в плавание с полным набором ключей, предоставляемых Агентством национальной безопасности – каждый ключ был напечатан на бумажной ленте, перфокарте
19
В случае попарных комбинаторных сочетаний их количество подчиняется зависимости, близкой к квадратичной. – Примеч. ред.
Это означает, что уничтожение ключей имеет большое значение. Алиса и Боб не могут просто выбросить свой ключ в корзину в конце работы и надеяться, что его никто не найдет. Перехватчики не пренебрегают хранением зашифрованных посланий, которых не способны прочесть, в надежде, что найдут к ним ключ через несколько дней. Агентство национальной безопасности получило возможность расшифровать русский трафик VENONA (вспомните эту историю; это действительно поучительно) только благодаря тому, что СССР повторно использовал ключ, который, должно быть, ранее выбросил, и тому, что АНБ хранило все эти советские шифрованные сообщения более 10 лет [20] .
20
Venona, тайная операция спецслужб США периода Второй мировой войны, получила свое название по имени матери Гайаваты из поэмы Г. Лонгфелло. В результате многократного использования одноразового шифра при обмене донесениями между Центром и резидентурой была расшифрована секретная переписка советской разведки, что привело к разоблачению и аресту множества агентов, работавших в 1939—1957 годах. Официально операция завершена в 1980 году. Американский исследователь истории криптографии Роберт Луис Бенсон, офицер АНБ, в 1996 году подготовил двухтомный сборник, названный «VENONA. Soviet Espionage and American Responce», куда вошли и материалы по Venona. Их можно посмотреть на сайте АНБ nsa gov/docs/venona). – Примеч. ред.
Есть множество исторических примеров, когда недостаточное внимание к обращению с ключами приводило к разгадке безупречного шифрования. Джон Уокер служил в военно-морском флоте США и был офицером безопасности, ответственным за обеспечение безопасности ключей, но одновременно он делал и другую карьеру, фотографируя ключи флота и отсылая фотографии русским. Японская секта поклонников смерти Аум Синрике зашифровала свои компьютерные записи, но она была настолько неосторожна, что оставили копии ключей на дискете, обнаруженной полицией. Это произошло в 1995 году: не кажется ли вам, что приверженцы культа смерти могли бы к тому времени кое-что знать о ключах.
Что означает «взломать» алгоритм? На первый взгляд очевидно – кто-то сможет прочитать сообщение, не имея ключа. Но на самом деле все сложнее.
Если злоумышленник просто берет зашифрованное сообщение и восстанавливает открытый текст, то такую атаку называют атакой с использованием только шифрованного текста (cipher text-only attack). Их, как правило, больше не используют – современные алгоритмы слишком хороши, чтобы их одолеть атаками такого рода.
С большей вероятностью можно встретить атаки с использованием известного открытого текста (known-playn text attack): у дешифровщика есть образец открытого и шифрованного текста, что позволяет ему восстановить ключ. На первый взгляд может показаться, что это бесполезно, но на самом деле смысл есть. Если при помощи этого же ключа будут зашифрованы другие тексты, злоумышленник сумеет взять ключ и прочесть остальные тексты. Например, почти у всех компьютерных файлов есть заголовок. Все файлы Microsoft Word, например, начинаются с нескольких сотен одинаковых байтов. (Это «невидимые» символы – служебные байты программы, и они не отображаются в окне.) Если криптоаналитик может, воспользовавшись имеющимся открытым текстом, воспроизвести ключ, то сумеет прочитать документ Word полностью. Атаки, при которых известен открытый текст, с большим успехом применяли против немецкой «Энигмы». Аналитики получали в руки единственный незашифрованный текст, например прогноз погоды, а через некоторое время один из отдаленных немецких постов в Норвегии начинал пунктуально присылать ежедневные одинаковые сообщения: «Нечего сообщать». (Открытый текст можно еще называть шпаргалкой.) Обычно таким образом узнавали ключ текущего дня, а затем с помощью ключа читали зашифрованные сообщения.
Еще более действенной является атака с помощью избранного открытого текста (chosen-plain text attack). При такой атаке криптоаналитик имеет возможность выбрать сообщение, которое после этого зашифровывают. Затем он получает зашифрованное сообщение и восстанавливает ключ. Атаки этого рода срабатывали против немецких шифров: союзники сознательно допускали
утечку определенной информации для того, чтобы получить зашифрованный текст, или провоцировали сообщения о событиях в городах с уникальными названиями, служащие особенно хорошими шпаргалками. Эти атаки хорошо срабатывают и против некоторых систем, использующих смарт-карты, в результате чего злоумышленники получают возможность помещать на карту нужную им информацию.Все эти атаки объединяет то, что аналитикам известны детали алгоритма. (Единственным исключением, которое мне известно, сегодня является японский код PURPLE.) Это не просто ученый ярлык, а очень хороший механизм. Если в программах будут использовать какой-то алгоритм, то его «раскрутят» и в обратную сторону. Среди секретных когда-то алгоритмов, которые уже «раскрутили» – RC4, все алгоритмы шифрования цифровой сотовой связи, DVD– и DIVX-алгоритмы шифрования видеоизображений и алгоритм Firewire. Захватят и расшифруют даже алгоритмы, глубоко запрятанные в военном оборудовании. Примерами могут служить «Энигма» во Второй мировой войне [21] или почти все алгоритмы НАТО и Варшавского договора во времена холодной войны. (Мы их не знаем, но весьма компетентные военные занимались их расшифровкой.) Полезно предполагать, что врагу известны подробности вашего алгоритма, потому что в конечном итоге они все равно станут ему известны. Август Керхкофф первым сформулировал это положение в 1883 году: «В алгоритме нет никакой тайны, вся тайна в ключе».
21
«Энигма» – одна из первых роторных машин, осуществляющая шифрование (многоалфавитную подстановку) посредством взаимодействия вращающихся роторов. Разработана в 1917 году Эдвардом Хеберном и усовершенствована Артуром Кирхом. Роторные машины активно использовались во время Второй мировой войны. Для того времени это было последнее слово докомпьютерной криптографии. До появления ЭВМ шифры роторных машин считались наиболее стойкими. После Второй мировой войны США продавало немецкую «Энигму» в страны Третьего мира. Факт, что шифр уже взломан, долгие годы при этом оставался засекреченным. До недавнего времени шифр «Энигмы» использовался отдельными UNIX-системами для шифрования файлов. Алгоритмы «Энигмы» были опубликованы в 60-х годах, как и связанные с ними результаты по решению уравнений в подстановках. Японское устройство Purple (пурпурный, багровый, царский) также является роторной машиной. – Примеч. ред.
В разговоре об атаках всегда возникает один вопрос: как криптоаналитик распознает открытый текст? Ответ прост: его легко узнать, потому что он выглядит как открытый текст. Это сообщение на английском языке или файл компьютерного приложения, изображение в формате JPEG или база данных в каком-нибудь приемлемом формате. Когда вы смотрите на расшифрованный файл, он похож на что-нибудь вам известное. Когда вы смотрите на зашифрованный файл или файл, расшифрованный с применением неправильного ключа, он выглядит как полная тарабарщина. Человек или компьютер могут понимать эту разницу.
В 1940-х годах Клод Шеннон ввел понятие расстояния уникальности (unicitydistance). Среди прочего, расстояние уникальности измеряет количество необходимого зашифрованного текста, позволяющее однозначно воспроизвести открытый текст. Это значение зависит и от свойств открытого текста, и от длины ключа, характерной для такого алгоритма шифрования.
Например, алгоритм RC4 зашифровывает данные в байтах. Представьте себе одну единственную букву в ASCII-кодировке в качестве открытого текста. На 26 букв приходится 256 возможных вариантов кодирования. Любой случайный ключ, если использовать его для расшифровки этого текста (буквы), с вероятностью 26/256 даст верный открытый текст. У аналитика нет никакого средства, позволяющего отличить ошибочный открытый текст от правильного.
Представьте теперь сообщение электронной почты размером 1 Кбайт. Аналитик пытается применять случайные ключи, и в конечном счете возникает открытый текст, который выглядит как сообщение электронной почты: слова, фразы, предложения, грамматика. Вероятность того, что это неправильный открытый текст, бесконечно мала.
Для стандартного англоязычного сообщения расстояние уникальности равно К/6,8, где К – это длина ключа в битах. (6,8 – степень естественной избыточности английского языка. Для других открытых текстов она будет больше или меньше, но незначительно.) Для ASCII-кода, применяемого согласно стандарту DES, расстояние уникальности составляет 8,2 байт. Для 128-битового шифра это примерно 19 байт. Таким образом, для англоязычных сообщений, длина которых превышает 19 байт, расшифрованный текст, похожий на английский, с большой вероятностью будет истинным открытым текстом. Почти такое же значение расстояния единственности имеют файлы электронных таблиц, текстовых процессоров и баз данных. (На самом деле оно может быть намного меньше, потому что форматы файлов предполагают стандартное начало файла.) Для сжатых файлов расстояние уникальности могло бы быть в два-три раза больше (но опять-таки, стандартное начало может его существенно снизить).
Отсюда мораль: «Распознать открытый текст просто, и для этого не требуется большого количества информации».
Коды аутентификации сообщений (Message authentication codes или MACs) – это следующий базисный элемент, о котором мы поговорим. Они не обеспечивают секретность, но гарантируют аутентификацию и целостность. Они дают уверенность, что сообщение пришло именно от того человека, который обозначен как автор (это аутентификация), и что сообщение по пути не изменилось (а это целостность).