T

Text Machine

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

Шифр бегущего ключа

Шифруйте и расшифровывайте шифр бегущего ключа — шифр Vigenère, ключом которого служит длинный отрывок текста, а не короткое повторяющееся слово. Поскольку ключ так же длинен, как сообщение, и никогда не повторяется, периодическая закономерность, ломающая обычный Vigenère, исчезает. Переключайтесь между шифрованием и расшифровкой и наблюдайте, как разбор строится вживую. Всё работает в вашем браузере.

Бегущий ключ

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

Открытый текст
Шифртекст

Введите текст выше, чтобы увидеть здесь результат бегущего ключа.

Как пользоваться Шифр бегущего ключа

  1. 1

    Выберите шифрование или расшифровку

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

  2. 2

    Вставьте свой бегущий ключ

    Вставьте длинный отрывок текста для использования в качестве ключа, традиционно согласованную страницу книги. Для настоящего бегущего ключа он должен быть не короче вашего сообщения. Используются только его буквы, а регистр, пробелы и знаки препинания игнорируются.

  3. 3

    Введите или вставьте свой текст

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

  4. 4

    Прочтите, скопируйте и поделитесь

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

Как устроен шифр бегущего ключа

Что такое шифр бегущего ключа?

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

Именно этот длинный, неповторяющийся ключ отличает шифр бегущего ключа. Обычный шифр Vigenère выдаёт себя через периодичность: его короткое ключевое слово зацикливается, и этот ритм можно обнаружить и размотать. Бегущий ключ устраняет ритм полностью. Платой за это становится то, что ключ теперь — естественный язык, со всем статистическим перекосом, который несёт английский текст, и этот перекос становится той лазейкой, которой пользуется атакующий взамен.

Как работает шифр бегущего ключа

Пронумеруйте алфавит от A как 0 до Z как 25. Запишите текст ключа под сообщением так, чтобы одна буква ключа стояла под каждой буквой открытого текста. Чтобы зашифровать, прибавьте каждую букву ключа к стоящей над ней букве и перенесите результат по алфавиту, взяв остаток по модулю 26, что даёт букву шифртекста C = (P + K) mod 26. Арифметика — это в точности таблица Vigenère; изменился лишь источник ключа.

Чтобы расшифровать, получатель записывает тот же текст ключа под шифртекстом и вычитает, восстанавливая каждую букву открытого текста с помощью P = (C − K) mod 26. Как и в любом варианте Vigenère, преобразуются только 26 букв: пробелы, знаки препинания и цифры проходят насквозь и не расходуют букву ключа, поэтому ключ остаётся выровненным с буквами сообщения. Регистр букв сохраняется, так что вывод сохраняет форму исходного текста.

Разобранный пример

Зашифруем сообщение HELLO с бегущим ключом KEYBOARD. Выровняем первые пять букв ключа K, E, Y, B, O под сообщением и прибавим: H плюс K — это R, E плюс E — это I, L плюс Y — это J, L плюс B — это M, и O плюс O — это C. Шифртекст — RIJMC. Обратите внимание, что в отличие от шифра с автоключом буквы ключа берутся исключительно из согласованного текста ключа и не имеют никакого отношения к открытому тексту.

Чтобы расшифровать RIJMC, вы записываете тот же ключ KEYBOARD под ним и вычитаете: R минус K — это H, I минус E — это E, J минус Y — это L, M минус B — это L, и C минус O — это O, восстанавливая HELLO. Всё сообщение можно прочитать за один проход, потому что ключ известен целиком с самого начала, и нет никакой пословной обратной связи, которой пришлось бы дожидаться.

Бегущий ключ против Vigenère с повторяющимся ключом

Стандартный шифр Vigenère повторяет короткое ключевое слово вдоль всего сообщения: с ключом KEY поток — это KEYKEYKEY и так далее. Это повторение — его роковой изъян, потому что длину ключа можно восстановить исследованием Kasiski или индексом совпадений, после чего каждый столбец становится простым сдвигом Цезаря, решаемым частотным анализом. Шифр бегущего ключа использует то же правило сложения, но ключ, не короче сообщения, поэтому период находить негде, и эти классические тесты к нему напрямую неприменимы.

Опасность — в использовании слишком короткого ключа. Если бегущий ключ короче сообщения, ему приходится возвращаться к началу, и в этот момент он становится обычным шифром Vigenère с повторяющимся ключом со всеми слабостями этого шифра. Например, шифрование HELLO с трёхбуквенным ключом KEY зацикливается и даёт RIJVS — в точности результат повторяющегося Vigenère. Этот инструмент отмечает любые повторно использованные буквы ключа, чтобы вы могли увидеть, как шифр деградирует, а правильный бегущий ключ всегда должен быть не короче текста.

Бегущий ключ против шифра с автоключом

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

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

Как взломать шифр бегущего ключа

Поскольку ключ никогда не повторяется, исследование Kasiski и индекс совпадений не работают так, как на повторяющемся Vigenère. Вместо этого классическая атака использует тот факт, что каждая буква шифртекста — это сумма двух букв, обе из которых взяты из обычного языка. Английский крайне избыточен, поэтому для любой данной буквы шифртекста правдоподобно лишь небольшое число пар «буква открытого текста и буква ключа», а распространённые слова в любом из потоков оставляют обнаружимые следы.

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

От бегущего ключа к одноразовому блокноту

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

Бегущий ключ нарушает именно эти условия. Отрывок из книги не случаен; это структурированный английский, частоты букв и распространённые слова которого дают аналитику ту самую опору, что описана выше. Поэтому, хотя шифр бегущего ключа заметно стойче повторяющегося Vigenère, по современным меркам он не даёт настоящей безопасности и никогда не должен охранять подлинные секреты. Им лучше всего наслаждаться как ярким уроком истории криптографии и неизменным элементом головоломочных квестов, эскейп-румов и соревнований capture-the-flag; для настоящей защиты используйте современный, хорошо проверенный алгоритм, такой как AES.

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

Что такое шифр бегущего ключа?
Шифр бегущего ключа — это шифр Vigenère, ключом которого служит длинный отрывок текста, например страница из согласованной книги, а не короткое повторяющееся ключевое слово. Поскольку ключ так же длинен, как сообщение, и никогда не повторяется, он избегает циклической закономерности, которая делает обычный шифр Vigenère лёгким для взлома. Когда ключ берётся из книги, его иногда называют книжным шифром.
Как работает шифр бегущего ключа?
Пронумеруйте алфавит от A как 0 до Z как 25 и запишите текст ключа под сообщением, по одной букве ключа на каждую букву сообщения. Чтобы зашифровать, прибавьте каждую букву ключа к букве сообщения по модулю 26: C = (P + K) mod 26. Чтобы расшифровать, вычтите с тем же ключом: P = (C − K) mod 26. Меняются только буквы; пробелы, цифры и знаки препинания проходят нетронутыми.
Чем шифр бегущего ключа отличается от шифра Vigenère?
Они используют одно и то же правило сложения, но шифр Vigenère повторяет короткое ключевое слово вдоль сообщения, тогда как шифр бегущего ключа использует ключ такой же длины, как сообщение, который никогда не повторяется. Это устраняет период, который нашли бы исследование Kasiski или индекс совпадений. Если бегущий ключ слишком короткий и вынужден повторяться, он деградирует обратно в обычный шифр Vigenère с повторяющимся ключом.
Можете показать пример шифра бегущего ключа?
Шифрование HELLO с бегущим ключом KEYBOARD даёт RIJMC. Выровняв буквы ключа K, E, Y, B, O под сообщением: H плюс K — это R, E плюс E — это I, L плюс Y — это J, L плюс B — это M, и O плюс O — это C. Расшифровка RIJMC с тем же ключом KEYBOARD восстанавливает HELLO за один проход.
Что мне использовать в качестве бегущего ключа?
Используйте любой длинный отрывок текста, который есть у вас обоих с получателем, классически согласованную страницу определённой книги. Ключ должен быть не короче вашего сообщения, чтобы ему никогда не пришлось повторяться. Используются только буквы, а заглавные и строчные считаются одинаковыми, поэтому знаки препинания и пробелы в ключе не имеют значения.
Что произойдёт, если мой ключ короче сообщения?
Ключ возвращается к началу и начинает повторяться, что превращает шифр бегущего ключа в обычный шифр Vigenère с повторяющимся ключом и открывает его обычным атакам. Этот инструмент подсвечивает повторно использованные буквы ключа, чтобы вы могли точно увидеть, где это происходит. Для настоящего бегущего ключа всегда используйте текст не короче сообщения, которое вы шифруете.
В чём разница между шифрами бегущего ключа и автоключа?
Оба используют неповторяющийся ключ такой же длины, как сообщение, но они различаются тем, откуда берётся ключ. Шифр бегущего ключа берёт свой ключ из общего внешнего текста, например из книги, тогда как шифр с автоключом строит свой ключ из короткой затравочной фразы, за которой следует сам открытый текст. Автоключу нужен лишь крошечный общий секрет; бегущему ключу нужно, чтобы обе стороны держали один и тот же текст ключа.
Шифр бегущего ключа — это то же самое, что книжный шифр?
Это одна из разновидностей книжного шифра. Когда длинный текст ключа берётся из согласованной книги, шифр бегущего ключа часто называют книжным шифром. Название «книжный шифр» используется и для другой схемы, которая заменяет слова номерами страницы, строки и слова, поэтому термин может означать и то, и другое, но здесь он относится к использованию текста книги как бегущего ключа Vigenère.
Меняет ли шифр пробелы, цифры и знаки препинания?
Нет. Преобразуются только 26 букв. Пробелы, знаки препинания и любые цифры в сообщении проходят без изменений и не расходуют букву ключа, поэтому ключ остаётся выровненным с буквами. Регистр букв сохраняется, поэтому вывод сохраняет форму вашего исходного текста.
Как взломать шифр бегущего ключа?
Поскольку ключ никогда не повторяется, инструменты для повторяющегося ключа неприменимы. Вместо этого аналитики используют то, что и сообщение, и ключ — это обычный язык: каждая буква шифртекста является суммой двух перекошенных букв, поэтому угадывание вероятных слов в любом из потоков и протаскивание их сквозь текст раскрывает совпадающие фрагменты, которые можно расширять. Повторное использование одного текста ключа для нескольких сообщений ломает его напрочь.
Связан ли шифр бегущего ключа с одноразовым блокнотом?
Да, тесно. Одноразовый блокнот использует ключ такой же длины, как сообщение, и прибавляет его тем же способом, но требует, чтобы ключ был истинно случайным и никогда не использовался повторно, что делает его невзламываемым. Бегущий ключ использует структурированный текст книги вместо случайных букв, и именно эта статистическая структура позволяет его атаковать, поэтому он не дотягивает до совершенной секретности одноразового блокнота.
Надёжен ли шифр бегущего ключа и загружается ли мой текст?
Он стойче шифра Vigenère с повторяющимся ключом, но всё же не безопасен: ключ на естественном языке можно атаковать статистически, поэтому для настоящих секретов используйте современный алгоритм, такой как AES. Ваши данные в любом случае остаются конфиденциальными здесь — всё шифрование и расшифровка происходят в вашем браузере, и даже ссылка для обмена хранит ваш текст в части URL после знака решётки, которую браузеры никогда не отправляют на сервер.

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

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

Шифр Виженера

Шифр Бофора

Шифр Гронсфельда

Шифр с автоключом

Шифр Порта

Шифр Тритемия