T

Text Machine

Мощные текстовые инструменты прямо в браузере

Взлом шифра Виженера

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

Попробуйте пример:

Шифртекст Виженера

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

Как пользоваться Взломщик Виженера

  1. 1

    Вставьте шифртекст

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

  2. 2

    Прочитайте восстановленный ключ

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

  3. 3

    Прочитайте расшифрованное сообщение

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

  4. 4

    Проверьте свидетельства длины ключа

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

  5. 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, поэтому одна неверная буква ключа впрыскивает невозможные пары и топит оценку. Побеждает расшифровка с лучшим соответствием по биграммам, а при равенстве предпочтение отдаётся более короткому ключу — вот почему обычный шифр Цезаря правильно разрешается в однобуквенный ключ.

Сколько текста нужно и когда возникают трудности

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

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

Часто задаваемые вопросы

Можно ли действительно взломать шифр Виженера без ключа?
Да. Шифр Виженера с повторяющимся ключом — это несколько чередующихся шифров Цезаря, а шифры Цезаря поддаются частотному анализу. Решатель вычисляет длину ключа, разбивает сообщение на столько же столбцов, вскрывает каждый и считывает ключевое слово с результатов — и всё это без того, чтобы вы знали ключ заранее.
Как решатель находит длину ключа?
Двумя способами сразу. Он измеряет средний индекс совпадений для каждой возможной длины — правильная длина и кратные ей дают значение около 0.066, как у английского, тогда как неверные длины выглядят случайно, около 0.038, — и проводит метод Касиски, раскладывая на делители промежутки между повторяющимися последовательностями. Длина, на которой сходятся оба метода, почти всегда верна.
Что такое индекс совпадений?
Это вероятность того, что две случайно выбранные из текста буквы окажутся одинаковыми. Английский — около 0.066, потому что его буквы используются неравномерно; случайный текст — около 0.038. Когда шифртекст разбивается на правильное число столбцов, каждый столбец снова выглядит как английский — именно так инструмент определяет длину ключа.
Что такое метод Касиски?
Метод, опубликованный Фридрихом Касиски в 1863 году. Когда повторяющееся слово совпадает с одной и той же частью ключа, оно шифруется одинаково, и расстояние между этими повторами кратно длине ключа. Собирая такие промежутки и рассматривая их общие делители, вы восстанавливаете возможные длины ключа независимо от частотной статистики.
Почему восстановленный ключ может оказаться слегка неверным?
Каждый столбец решается частотным анализом, которому нужно достаточно букв, чтобы быть надёжным. Если шифртекст короток относительно длины ключа, в некоторых столбцах слишком мало букв, и одна-две буквы ключа могут оказаться неверными. Открытый текст обычно всё равно читаем; лекарство — больше шифртекста или подправить длину ключа вручную по диаграмме.
Сколько шифртекста мне нужно?
Стремитесь хотя бы к сорока буквам на столбец — это общая длина, делённая на длину ключа. Короткий ключ легко вскрывается из одного абзаца, тогда как длинный ключ из десятка букв требует нескольких сотен букв шифртекста для точного восстановления. Больше текста — всегда лучше.
Почему инструмент проверяет биграммы, а не просто частоты букв?
Частоту отдельных букв можно обмануть — слегка неверный ключ иногда выдаёт мешанину с правдоподобной смесью букв. Оценка по биграммам сравнивает каждую пару соседних букв с настоящим английским, где TH и HE часты, а QJ или ZX практически не встречаются. Неверный ключ впрыскивает невозможные пары и получает плохую оценку, поэтому побеждает по-настоящему английская расшифровка.
Могу ли я задать конкретную длину ключа?
Да. Нажмите на любой столбец на графике длины ключа, чтобы решить при этой точной длине, и нажмите «Авто», чтобы вернуться к автоматическому определению. Вы также можете поднять максимальную длину ключа, которую ищет инструмент, если подозреваете длинный ключ. Это удобно, когда вы уже знаете или можете угадать длину.
Работает ли он с Beaufort, Gronsfeld или другими полиалфавитными шифрами?
Этот решатель нацелен на стандартный шифр Виженера с повторяющимся ключом. Близкие родственники вроде Gronsfeld (числовой Виженер) часто частично поддаются, но Beaufort и варианты с автоключом используют другую арифметику и могут не поддаться. Если вы не уверены, какой у вас шифр, сначала запустите «Определитель шифра», а затем используйте подходящий инструмент.
Отправляется ли мой шифртекст на сервер?
Нет. Вся атака выполняется в вашем браузере, поэтому ваш текст никогда не загружается, не логируется и не сохраняется. Даже ссылка для обмена хранит ваш шифртекст в части URL после решётки, которую браузеры никогда не передают на сервер, поэтому он остаётся приватным, пока вы сами не решите им поделиться.
Чем это отличается от инструмента «Шифр Виженера»?
Инструмент «Шифр Виженера» шифрует и расшифровывает, когда вы уже знаете ключ. Этот решатель — для случая, когда вы его не знаете: он восстанавливает ключ и открытый текст из одного только шифртекста. Используйте решатель, чтобы взломать сообщение, а затем инструмент шифра, чтобы подтвердить, что ключ зашифровывает его обратно в точности.

Похожие инструменты

Продолжайте работу с этими удобными инструментами

Конвертер Unix-времени

Конвертер JSON в CSV

Конвертер CSV в JSON

Конвертер JSON в YAML

Конвертер текста в двоичный код

Конвертер текста в HEX