Метод Казиски

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

Почему прямой перебор бесполезен

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

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

Но у шифра есть структурная особенность, которую и заметил Казиски: ключ повторяется.

Наблюдение Казиски

Фридрих Вильгельм Казиски — прусский пехотный офицер, вышедший в отставку майором и всерьёз занявшийся криптографией. В 1863 году он издал книгу «Die Geheimschriften und die Dechiffrir-Kunst» — «Тайнопись и искусство дешифрования». Она была тонкой, всего 95 страниц, и почти не замечена современниками. Признание пришло позже.

Его рассуждение строится в два шага.

Во-первых, в естественном тексте часто повторяются одни и те же сочетания: в русском это «что», «ста», «ени», «про». Во-вторых, если такое сочетание случайно попадёт под одинаковый участок ключа два раза, оно и зашифруется одинаково.

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

Разбор на конкретном примере

Зашифруем фразу ключом СЕКРЕТ — шесть букв:

текст: ТОРГОВЛЯ ИДЕТ ХОРОШО ТОРГОВЛЯ РАСТЕТ ключ: СЕКРЕТ (повторяется) шифр: ДУЫУУФЭД УФЙЕ ЖУЫЯЭБ ДУЫУУФЭД ЫРЦЕЦЧ

Фрагмент ДУЫУУФЭД встречается дважды. Уберём пробелы и посчитаем позиции букв: первое вхождение начинается с позиции 0, второе — с позиции 18. Расстояние равно 18.

Раскладываем 18 на делители:

18 = 2 × 3 × 3 делители: 1, 2, 3, 6, 9, 18

Длина ключа — один из этих делителей. Единица отпадает (это был бы обычный шифр Цезаря), 18 для короткого текста маловероятно. Остаются 2, 3, 6 и 9. Ключ СЕКРЕТ действительно имеет длину 6.

На одном расстоянии сузить круг до единственного числа нельзя. Поэтому аналитик собирает все найденные повторы и берёт наибольший общий делитель их расстояний. Если бы в тексте нашлись повторы на расстояниях 18, 24 и 42, НОД был бы равен 6 — точный ответ.

Шаг второй: разбиваем на шифры Цезаря

Длина ключа — это ещё не ключ. Но с этого момента задача становится почти тривиальной.

Если ключ состоит из шести букв, то буквы шифротекста с номерами 1, 7, 13, 19 зашифрованы одной и той же буквой ключа, то есть одним постоянным сдвигом. То же верно для номеров 2, 8, 14, 20 — и так далее.

Иными словами, шифр Виженера с ключом длины 6 — это шесть независимых шифров Цезаря, каждый со своим сдвигом. А шифр Цезаря вскрывается частотным анализом за минуту: находим самую частую букву в группе, предполагаем, что это «О» (самая частая в русском), и вычисляем сдвиг.

Ключ длины 6 разбивает текст на 6 групп: группа 1: буквы 1, 7, 13, 19, 25 ... -> сдвиг ключа «С» группа 2: буквы 2, 8, 14, 20, 26 ... -> сдвиг ключа «Е» группа 3: буквы 3, 9, 15, 21, 27 ... -> сдвиг ключа «К» ...

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

Зашифруйте текст ключом известной длины и попробуйте найти повторы сами:

Шифр Виженера онлайн

Частотный анализ внутри группы: как это выглядит

Разберём последний шаг подробнее, потому что именно на нём метод превращается из теории в готовый ответ.

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

Дальше работает та же арифметика, что и в шифре Цезаря. Пусть самой частой в группе оказалась буква Ю. Самая частая буква русского языка — О, её порядковый номер 15, номер Ю — 31. Разность 31 − 15 = 16 и есть предполагаемый сдвиг, то есть шестнадцатая буква алфавита в роли буквы ключа.

Гипотеза не всегда верна с первого раза: на коротких группах «О» и «Е» могут поменяться местами. Поэтому проверяют два-три верхних кандидата и смотрят, какой из них даёт осмысленный ключ — настоящие ключи обычно оказываются словами, а не случайным набором букв.

Почему шифр вообще поддался статистике

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

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

Где метод даёт сбой

Приём мощный, но не универсальный. У него три слабых места.

Случайные повторы

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

Короткие тексты

Чем короче сообщение, тем меньше шансов, что повтор вообще возникнет. На тексте в пару строк метод Казиски обычно не даёт ничего.

Длинный ключ

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

Это не фигура речи, а доказанный факт: абсолютную стойкость одноразового блокнота математически обосновал Клод Шеннон в 1949 году. Ровно та же схема лежит в основе атак на другие классические шифры — уязвимость почти всегда возникает не из самой операции подстановки, а из повторного использования ключевого материала. Именно поэтому в современных системах ключ или его производную никогда не применяют дважды.

Какие шифры устойчивы к методу

Метод Казиски бьёт по одной конкретной уязвимости — периодичности ключа. Поэтому он работает не против всех полиалфавитных систем, а только против тех, где ключ повторяется.

  • Шифр Гронсфельда — тот же Виженер, но с числовым ключом. Периодичность сохраняется, метод Казиски применим полностью.
  • Шифр Бофора, названный в честь адмирала Фрэнсиса Бофора, меняет направление операции, но не устраняет период. Уязвим так же.
  • Шифр Тритемиуса использует tabula recta со сдвигом, растущим по фиксированному закону. Повторов в привычном виде нет, но закон предсказуем, поэтому шифр вскрывается иначе — перебором параметров. Попробовать его можно на странице шифра Тритемиуса.
  • Автоключ, предложенный самим Блезом де Виженером, продолжает ключ открытым текстом. Периода нет вовсе, и метод Казиски бесполезен.

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

Что появилось после

В 1922 году Уильям Фридман, будущий глава Signal Intelligence Service США, предложил индекс совпадений — вероятность того, что две случайно выбранные буквы текста окажутся одинаковыми. Для осмысленного русского текста этот показатель заметно выше, чем для случайного набора символов.

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

Отдельно стоит помнить о Чарльзе Бэббидже: он вскрыл Виженера примерно в 1854 году, на девять лет раньше Казиски, но ничего не опубликовал. По распространённой версии его работу засекретила британская разведка во время Крымской войны. О приоритете Бэббиджа стало известно лишь в XX веке, когда исследователи разобрали его архив.

Почему это важно понимать сегодня

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

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

Разбор самого шифра, его истории и путаницы с авторством — в статье шифр Виженера: как работает.

Частые вопросы

В чём суть метода Казиски?

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

Что делать после того, как длина ключа найдена?

Шифротекст разбивается на группы: при длине ключа шесть в первую группу попадают буквы с номерами 1, 7, 13 и так далее. Внутри каждой группы все буквы зашифрованы одним и тем же сдвигом, то есть обычным шифром Цезаря. Дальше работает классический частотный анализ: в каждой группе ищут самую частую букву и сопоставляют её с самой частой буквой языка.

Почему метод не всегда срабатывает?

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

Кто взломал шифр Виженера раньше Казиски?

Чарльз Бэббидж сделал это примерно в 1854 году, за девять лет до публикации Казиски, но результатов не обнародовал. По распространённой версии его работа была засекречена британской разведкой во время Крымской войны. О приоритете Бэббиджа стало известно только в XX веке, когда исследователи разобрали его записи.