Метод Казиски
Три столетия шифр Виженера считался неразгадываемым. Сломала его не грубая сила и не гениальная догадка о ключе, а наблюдение, которое сегодня кажется почти очевидным: в длинном тексте слова повторяются.
Почему прямой перебор бесполезен
Шифр Виженера сдвигает каждую букву на величину, заданную соответствующей буквой ключа. Ключ из восьми русских букв даёт 33⁸ вариантов — больше полутора триллионов. В XIX веке это исключало перебор полностью, да и сегодня перебор был бы не самым разумным подходом.
Главное же в том, что частотный анализ не работает. Одна и та же буква «О» превращается в разные символы в зависимости от позиции, и распределение частот в шифротексте выравнивается почти до равномерного.
Но у шифра есть структурная особенность, которую и заметил Казиски: ключ повторяется.
Наблюдение Казиски
Фридрих Вильгельм Казиски — прусский пехотный офицер, вышедший в отставку майором и всерьёз занявшийся криптографией. В 1863 году он издал книгу «Die Geheimschriften und die Dechiffrir-Kunst» — «Тайнопись и искусство дешифрования». Она была тонкой, всего 95 страниц, и почти не замечена современниками. Признание пришло позже.
Его рассуждение строится в два шага.
Во-первых, в естественном тексте часто повторяются одни и те же сочетания: в русском это «что», «ста», «ени», «про». Во-вторых, если такое сочетание случайно попадёт под одинаковый участок ключа два раза, оно и зашифруется одинаково.
А это возможно только тогда, когда расстояние между двумя вхождениями кратно длине ключа. Значит, измерив расстояния между повторами в шифротексте, мы получаем числа, кратные длине ключа.
Разбор на конкретном примере
Зашифруем фразу ключом СЕКРЕТ — шесть букв:
Фрагмент ДУЫУУФЭД встречается дважды. Уберём пробелы и посчитаем позиции букв: первое вхождение начинается с позиции 0, второе — с позиции 18. Расстояние равно 18.
Раскладываем 18 на делители:
Длина ключа — один из этих делителей. Единица отпадает (это был бы обычный шифр Цезаря), 18 для короткого текста маловероятно. Остаются 2, 3, 6 и 9. Ключ СЕКРЕТ действительно имеет длину 6.
На одном расстоянии сузить круг до единственного числа нельзя. Поэтому аналитик собирает все найденные повторы и берёт наибольший общий делитель их расстояний. Если бы в тексте нашлись повторы на расстояниях 18, 24 и 42, НОД был бы равен 6 — точный ответ.
Шаг второй: разбиваем на шифры Цезаря
Длина ключа — это ещё не ключ. Но с этого момента задача становится почти тривиальной.
Если ключ состоит из шести букв, то буквы шифротекста с номерами 1, 7, 13, 19 зашифрованы одной и той же буквой ключа, то есть одним постоянным сдвигом. То же верно для номеров 2, 8, 14, 20 — и так далее.
Иными словами, шифр Виженера с ключом длины 6 — это шесть независимых шифров Цезаря, каждый со своим сдвигом. А шифр Цезаря вскрывается частотным анализом за минуту: находим самую частую букву в группе, предполагаем, что это «О» (самая частая в русском), и вычисляем сдвиг.
Проверив несколько гипотез в каждой группе, аналитик собирает ключ по буквам и читает сообщение.
Зашифруйте текст ключом известной длины и попробуйте найти повторы сами:
Шифр Виженера онлайнЧастотный анализ внутри группы: как это выглядит
Разберём последний шаг подробнее, потому что именно на нём метод превращается из теории в готовый ответ.
Допустим, длина ключа установлена — шесть. Выписываем каждую шестую букву шифротекста в отдельную строку и считаем, сколько раз встретилась каждая буква. Распределение внутри группы будет уже не ровным, а типично «языковым»: один-два явных лидера, длинный хвост редких букв.
Дальше работает та же арифметика, что и в шифре Цезаря.
Пусть самой частой в группе оказалась буква Ю. Самая частая буква русского
языка — О, её порядковый номер 15, номер Ю — 31. Разность
31 − 15 = 16 и есть предполагаемый сдвиг, то есть шестнадцатая буква алфавита
в роли буквы ключа.
Гипотеза не всегда верна с первого раза: на коротких группах «О» и «Е» могут поменяться местами. Поэтому проверяют два-три верхних кандидата и смотрят, какой из них даёт осмысленный ключ — настоящие ключи обычно оказываются словами, а не случайным набором букв.
Почему шифр вообще поддался статистике
В 1883 году голландец Огюст Керкгоффс сформулировал принцип, который сегодня считается фундаментальным: стойкость шифра должна опираться исключительно на секретность ключа. Виженер этому принципу не соответствовал — его репутация держалась на том, что метод вскрытия просто не был опубликован.
Работа Казиски показала разницу между «никто не знает, как это сломать» и «сломать это математически невозможно». Первое — временное состояние, второе — свойство алгоритма. Современные шифры проектируют так, чтобы статистика открытого текста не просачивалась в шифротекст вообще, и публикуют их устройство открыто, приглашая исследователей искать слабости.
Где метод даёт сбой
Приём мощный, но не универсальный. У него три слабых места.
Случайные повторы
Часть найденных совпадений возникает случайно и не связана с ключом. Такие расстояния портят вычисление НОД — достаточно одного постороннего числа, чтобы получить единицу. Поэтому на практике смотрят не на строгий НОД, а на то, какой делитель встречается чаще всего.
Короткие тексты
Чем короче сообщение, тем меньше шансов, что повтор вообще возникнет. На тексте в пару строк метод Казиски обычно не даёт ничего.
Длинный ключ
Если длина ключа сопоставима с длиной сообщения, повторы не появятся в принципе. В предельном случае — ключ случаен и равен длине текста — шифр превращается в одноразовый блокнот, абсолютно стойкий и неуязвимый ни для Казиски, ни для любого другого метода.
Это не фигура речи, а доказанный факт: абсолютную стойкость одноразового блокнота математически обосновал Клод Шеннон в 1949 году. Ровно та же схема лежит в основе атак на другие классические шифры — уязвимость почти всегда возникает не из самой операции подстановки, а из повторного использования ключевого материала. Именно поэтому в современных системах ключ или его производную никогда не применяют дважды.
Какие шифры устойчивы к методу
Метод Казиски бьёт по одной конкретной уязвимости — периодичности ключа. Поэтому он работает не против всех полиалфавитных систем, а только против тех, где ключ повторяется.
- Шифр Гронсфельда — тот же Виженер, но с числовым ключом. Периодичность сохраняется, метод Казиски применим полностью.
- Шифр Бофора, названный в честь адмирала Фрэнсиса Бофора, меняет направление операции, но не устраняет период. Уязвим так же.
- Шифр Тритемиуса использует tabula recta со сдвигом, растущим по фиксированному закону. Повторов в привычном виде нет, но закон предсказуем, поэтому шифр вскрывается иначе — перебором параметров. Попробовать его можно на странице шифра Тритемиуса.
- Автоключ, предложенный самим Блезом де Виженером, продолжает ключ открытым текстом. Периода нет вовсе, и метод Казиски бесполезен.
Первым идею менять алфавит по ходу текста высказал ещё Леон Баттиста Альберти в XV веке, но именно повторяющееся ключевое слово оказалось тем компромиссом между удобством и стойкостью, который пережил три столетия — и рухнул из-за своей главной особенности.
Что появилось после
В 1922 году Уильям Фридман, будущий глава Signal Intelligence Service США, предложил индекс совпадений — вероятность того, что две случайно выбранные буквы текста окажутся одинаковыми. Для осмысленного русского текста этот показатель заметно выше, чем для случайного набора символов.
Метод даёт то же самое — длину ключа, — но работает автоматически, не требует искать повторы вручную и устойчив к коротким текстам. Сегодня взломщики Виженера используют именно его, оставляя метод Казиски как исторический и учебный.
Отдельно стоит помнить о Чарльзе Бэббидже: он вскрыл Виженера примерно в 1854 году, на девять лет раньше Казиски, но ничего не опубликовал. По распространённой версии его работу засекретила британская разведка во время Крымской войны. О приоритете Бэббиджа стало известно лишь в XX веке, когда исследователи разобрали его архив.
Почему это важно понимать сегодня
История метода Казиски — хорошая иллюстрация того, как вообще устроен криптоанализ. Шифр редко ломают перебором ключей. Его ломают, находя структурную закономерность, которая сводит большую задачу к набору маленьких.
Ровно та же логика работает против шифра Плейфера: там аналитик тоже не перебирает таблицы вслепую, а опирается на статистику языка. И ровно поэтому современные алгоритмы проектируют так, чтобы никакая статистика открытого текста не просачивалась в шифротекст.
Разбор самого шифра, его истории и путаницы с авторством — в статье шифр Виженера: как работает.
Частые вопросы
В чём суть метода Казиски?
Метод ищет в шифротексте повторяющиеся последовательности символов и измеряет расстояния между ними. Если одинаковый фрагмент открытого текста дважды попал под одинаковый участок ключа, он и в шифротексте выглядит одинаково, а расстояние между повторами оказывается кратным длине ключа. Найдя несколько таких расстояний и вычислив их наибольший общий делитель, аналитик узнаёт длину ключа.
Что делать после того, как длина ключа найдена?
Шифротекст разбивается на группы: при длине ключа шесть в первую группу попадают буквы с номерами 1, 7, 13 и так далее. Внутри каждой группы все буквы зашифрованы одним и тем же сдвигом, то есть обычным шифром Цезаря. Дальше работает классический частотный анализ: в каждой группе ищут самую частую букву и сопоставляют её с самой частой буквой языка.
Почему метод не всегда срабатывает?
Часть найденных повторов случайна и никак не связана с ключом — такие расстояния портят вычисление наибольшего общего делителя. Кроме того, на коротких текстах повторов может не быть вовсе, а если длина ключа сопоставима с длиной сообщения, они не появятся в принципе. Поэтому на практике метод Казиски дополняют индексом совпадений.
Кто взломал шифр Виженера раньше Казиски?
Чарльз Бэббидж сделал это примерно в 1854 году, за девять лет до публикации Казиски, но результатов не обнародовал. По распространённой версии его работа была засекречена британской разведкой во время Крымской войны. О приоритете Бэббиджа стало известно только в XX веке, когда исследователи разобрали его записи.