Взлом шифра Виженера
Вставьте шифртекст Виженера и восстановите ключевое слово и исходное сообщение, не зная ключа. Решатель определяет длину ключа по индексу совпадений, подтверждает её методом Касиски, вскрывает каждый столбец как шифр Цезаря и выбирает расшифровку, которая больше всего похожа на английский. Всё работает в вашем браузере.
Попробуйте пример:
Вставьте шифртекст Виженера выше, и здесь появятся восстановленный ключ, расшифрованное сообщение и анализ длины ключа. Чем больше текста вы дадите, тем надёжнее будет ответ.
Как пользоваться Взломщик Виженера
- 1
Вставьте шифртекст
Скопируйте текст, зашифрованный Виженером, и вставьте его в поле. Абзац или больше даёт лучшие результаты; буквы читаются без учёта регистра, а пробелы, цифры и знаки препинания игнорируются при взломе.
- 2
Прочитайте восстановленный ключ
Решатель показывает самое вероятное ключевое слово вверху. Скопируйте его одним нажатием — вы можете вставить его в инструмент «Шифр Виженера», чтобы проверить, что он расшифровывает то же сообщение.
- 3
Прочитайте расшифрованное сообщение
Под ключом появляется полный открытый текст с восстановленным исходным регистром, расстановкой пробелов и знаками препинания. Скопируйте его, чтобы сохранить результат.
- 4
Проверьте свидетельства длины ключа
График индекса совпадений и панель Касиски показывают, почему была выбрана эта длина ключа. Если результат выглядит неверным, нажмите на другую длину на графике, чтобы заставить решатель, или увеличьте максимальную длину ключа.
- 5
Поделитесь или очистите
Скопируйте ссылку для обмена, которая снова откроет инструмент с вашим точным шифртекстом — текст едет в части URL после решётки, которая никогда не доходит до сервера. «Очистить» сбрасывает всё.
Взлом шифра Виженера: объяснение
Что делает этот инструмент
Шифр Виженера прячет сообщение, сдвигая каждую букву на разную величину по повторяющемуся ключевому слову. Три столетия эта простая идея давала ему прозвище le chiffre indéchiffrable — нераскрываемый шифр, — потому что обычный приём подсчёта частот букв против него не работает. И всё же этот инструмент его взламывает, автоматически, без того чтобы вы вводили ключ. Вставьте шифртекст, и он вернёт самое вероятное ключевое слово и расшифрованное сообщение.
Он работает так же, как человек-криптоаналитик, только быстрее: вычисляет, какой длины ключ, разбивает сообщение на столько же отдельных шифров Цезаря, решает каждый, а затем проверяет, что результат действительно читается как английский. Ни ключа, ни угадывания, и ничто не покидает ваш браузер — вся атака выполняется на вашей собственной машине.
Почему шифр Виженера можно взломать
Ключевое слово длины L шифрует каждую L-ю букву одним и тем же сдвигом. Поэтому если взять 1-ю, (L+1)-ю, (2L+1)-ю буквы и так далее, каждая буква в этой группе была сдвинута на одну и ту же величину — они образуют обычный шифр Цезаря. То же верно для каждой из L начальных позиций. Шифр Виженера, таким образом, — это не одна трудная задача, а L лёгких задач, сложенных вместе, и единственное, что отделяет вас от открытого текста, — это определить L.
Как только длина ключа известна, каждый столбец сохраняет неравномерные частоты букв английского, лишь переименованные одним сдвигом. Это ровно та ситуация, для которой создавался классический частотный анализ. Всё искусство взлома Виженера сводится к одному вопросу: какой длины ключ?
Поиск длины ключа с помощью индекса совпадений
Индекс совпадений измеряет вероятность того, что две случайно выбранные из текста буквы окажутся одинаковыми. Обычный английский держится около 0.066, потому что его буквы используются так неравномерно; совершенно случайный текст держится около 0.038. Когда вы разбиваете шифртекст на правильное число столбцов, каждый столбец становится моноалфавитным, и его индекс совпадений подскакивает обратно к английскому значению. Разбейте на неверное число — и столбцы останутся плоскими, около случайного 0.038.
Инструмент пробует каждую длину ключа от единицы до выбранного вами максимума, измеряет средний индекс совпадений по столбцам для каждой и рисует результат в виде столбчатой диаграммы. Истинная длина выделяется как высокий столбец — и кратные ей тоже, потому что длина десять заодно выстраивает в ряд каждую группу из пяти. Эта неоднозначность с кратными — причина, по которой инструмент не доверяет просто самому высокому столбцу, как объясняют следующие разделы.
Метод Касиски
Есть второй, более старый способ найти длину ключа, открытый Фридрихом Касиски в 1863 году. Когда распространённое слово вроде THE дважды совпадает с одной и той же частью ключевого слова, оба раза оно шифруется в одну и ту же последовательность шифртекста. Расстояние между двумя такими повторами должно быть целым числом длин ключа — значит, длина ключа делит это расстояние. Найдите несколько повторяющихся последовательностей, измерьте промежутки, и длина ключа спрячется среди общих делителей этих промежутков.
Инструмент сканирует шифртекст на повторяющиеся трёхбуквенные последовательности, собирает промежутки между ними и подсчитывает, сколько промежутков делит каждый возможный делитель. Делители с наибольшей поддержкой — самые вероятные длины ключа. Это показано отдельной панелью свидетельств, независимой от индекса совпадений, чтобы две разные техники могли сойтись на ответе.
Решение каждого столбца и считывание ключевого слова
Когда длина ключа зафиксирована, каждый столбец — это шифр Цезаря, а шифры Цезаря раскрываются мгновенно. Для каждого столбца решатель пробует все двадцать шесть сдвигов и оставляет тот, чьи раскодированные буквы лучше всего совпадают с ожидаемыми частотами английского, измеряя это критерием хи-квадрат. Победивший сдвиг для столбца — это одна буква ключевого слова: сдвиг на одиннадцать — это L, сдвиг на четыре — это E, и так далее. Прочитайте победившие сдвиги по порядку, и ключевое слово сложится само собой.
Расшифровка всего сообщения этим восстановленным ключевым словом возвращает открытый текст с исходным регистром, расстановкой пробелов и знаками препинания, поставленными ровно туда, где они были. Если восстановленный ключ оказывается повтором — скажем, LEMONLEMON, тогда как настоящим ключом был LEMON, — инструмент сворачивает его до кратчайшего периода, так что вы всегда видите истинное, минимальное ключевое слово.
Сначала решить, потом проверить — почему важны биграммы
Наивный решатель берёт длину ключа из индекса совпадений и на этом останавливается. Это даёт сбой в двух частых случаях: повторяющееся сообщение может исказить статистику, а истинную длину легко спутать с её делителями. Этот инструмент обходит ловушку, решая при каждой возможной длине, а затем оценивая результаты по тому, насколько каждая расшифровка действительно читается как английский, — сначала решить, проверить вторым шагом.
Судья — не частота отдельных букв, которую на удивление легко обмануть: слегка неверный ключ может выдать искажённый текст, у которого случайно правдоподобная смесь букв. Вместо этого инструмент оценивает каждую расшифровку по её биграммам — вероятности каждой пары соседних букв, выученной по большому корпусу английского. Настоящий английский богат парами вроде TH, HE и ER и почти никогда не содержит QJ или ZX, поэтому одна неверная буква ключа впрыскивает невозможные пары и топит оценку. Побеждает расшифровка с лучшим соответствием по биграммам, а при равенстве предпочтение отдаётся более короткому ключу — вот почему обычный шифр Цезаря правильно разрешается в однобуквенный ключ.
Сколько текста нужно и когда возникают трудности
Поскольку каждый столбец решается частотным анализом, важно, сколько букв попадает в каждый столбец, — то есть общая длина, делённая на длину ключа. Примерно при сорока и более буквах на столбец восстановление обычно точное, и ключ, и открытый текст. Абзац из двухсот букв легко вскрывает короткий ключ; более длинный ключ из десятка букв требует нескольких сотен букв шифртекста, чтобы быть уверенным.
Когда шифртекст короток относительно ключа, столбцы становятся тонкими, и частотные подсчёты по столбцам становятся шумными. Решатель всё равно возвращает свой лучший результат — часто почти попадание, ошибающееся на одну-две буквы ключа, но всё ещё читаемое, — а не пустоту. Если результат выглядит почти верным, обычное лекарство — просто больше шифртекста или подправить длину ключа вручную по диаграмме. Шифр сопротивляется лишь тогда, когда текста действительно недостаточно для измерения.
Часто задаваемые вопросы
Можно ли действительно взломать шифр Виженера без ключа?
Как решатель находит длину ключа?
Что такое индекс совпадений?
Что такое метод Касиски?
Почему восстановленный ключ может оказаться слегка неверным?
Сколько шифртекста мне нужно?
Почему инструмент проверяет биграммы, а не просто частоты букв?
Могу ли я задать конкретную длину ключа?
Работает ли он с Beaufort, Gronsfeld или другими полиалфавитными шифрами?
Отправляется ли мой шифртекст на сервер?
Чем это отличается от инструмента «Шифр Виженера»?
Похожие инструменты
Продолжайте работу с этими удобными инструментами