Типы криптографических атак

Что означает «взломать» алгоритм? На первый взгляд очевидно – кто-то сможет прочитать сообщение, не имея ключа. Но на самом деле все сложнее.

Если злоумышленник просто берет зашифрованное сообщение и восстанавливает открытый текст, то такую атаку называют атакой с использованием только шифрованного текста (cipher text-only attack). Их, как правило, больше не используют – современные алгоритмы слишком хороши, чтобы их одолеть атаками такого рода.

С большей вероятностью можно встретить атаки с использованием известного открытого текста (known-playn text attack): у дешифровщика есть образец открытого и шифрованного текста, что позволяет ему восстановить ключ. На первый взгляд может показаться, что это бесполезно, но на самом деле смысл есть. Если при помощи этого же ключа будут зашифрованы другие тексты, злоумышленник сумеет взять ключ и прочесть остальные тексты. Например, почти у всех компьютерных файлов есть заголовок. Все файлы Microsoft Word, например, начинаются с нескольких сотен одинаковых байтов. (Это «невидимые» символы – служебные байты программы, и они не отображаются в окне.) Если криптоаналитик может, воспользовавшись имеющимся открытым текстом, воспроизвести ключ, то сумеет прочитать документ Word полностью. Атаки, при которых известен открытый текст, с большим успехом применяли против немецкой «Энигмы». Аналитики получали в руки единственный незашифрованный текст, например прогноз погоды, а через некоторое время один из отдаленных немецких постов в Норвегии начинал пунктуально присылать ежедневные одинаковые сообщения: «Нечего сообщать». (Открытый текст можно еще называть шпаргалкой. ) Обычно таким образом узнавали ключ текущего дня, а затем с помощью ключа читали зашифрованные сообщения.

Еще более действенной является атака с помощью избранного открытого текста (chosen-plain text attack). При такой атаке криптоаналитик имеет возможность выбрать сообщение, которое после этого зашифровывают. Затем он получает зашифрованное сообщение и восстанавливает ключ. Атаки этого рода срабатывали против немецких шифров: союзники сознательно допускали утечку определенной информации для того, чтобы получить зашифрованный текст, или провоцировали сообщения о событиях в городах с уникальными названиями, служащие особенно хорошими шпаргалками. Эти атаки хорошо срабатывают и против некоторых систем, использующих смарт-карты, в результате чего злоумышленники получают возможность помещать на карту нужную им информацию.

Все эти атаки объединяет то, что аналитикам известны детали алгоритма. (Единственным исключением, которое мне известно, сегодня является японский код PURPLE.) Это не просто ученый ярлык, а очень хороший механизм. Если в программах будут использовать какой-то алгоритм, то его «раскрутят» и в обратную сторону. Среди секретных когда-то алгоритмов, которые уже «раскрутили» – RC4, все алгоритмы шифрования цифровой сотовой связи, DVD– и DIVX-алгоритмы шифрования видеоизображений и алгоритм Firewire. Захватят и расшифруют даже алгоритмы, глубоко запрятанные в военном оборудовании. Примерами могут служить «Энигма» во Второй мировой войне или почти все алгоритмы НАТО и Варшавского договора во времена холодной войны. (Мы их не знаем, но весьма компетентные военные занимались их расшифровкой.) Полезно предполагать, что врагу известны подробности вашего алгоритма, потому что в конечном итоге они все равно станут ему известны. Август Керхкофф первым сформулировал это положение в 1883 году: «В алгоритме нет никакой тайны, вся тайна в ключе».