Шифр с автоключом
Введите короткий праймер и сообщение — и инструмент закодирует или декодирует его шифром Виженера с автоключом: ключ не повторяется, потому что продолжается самим сообщением. Вы видите, как ключ выстраивается под текстом, и сумму, стоящую за каждой буквой. Бесплатно, без регистрации, и ничего не покидает браузер.
Короткое ключевое слово, которое только начинает ключ. После него ключ продолжается самим сообщением, поэтому никогда не повторяется.
Автоключ по открытому тексту — классический шифр, именно его имеют в виду головоломки, когда говорят «автоключ». Форма по шифротексту — другой вариант, встречающийся в учебниках; обе стороны должны выбрать один и тот же.
Ход вычислений
Ключ, буква за буквой — первые 12 букв
| Открытый | A | T | T | A | C | K | A | T | D | A | W | N |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ключ | Q | U | E | E | N | L | Y | A | T | T | A | C |
| Шифр | Q | N | X | E | P | V | Y | T | W | T | W | P |
Первые 7 букв ключа (затенены) — праймер; далее каждая буква ключа — это буква открытого текста на 7 позиций назад.
- Буквы пронумерованы: A = 0, B = 1 … Z = 25, а каждая сумма берётся по модулю 26.
- Кодирование: буква шифра = буква открытого текста + буква ключа.
- Ключ — это праймер, за которым идёт открытый текст, поэтому при декодировании каждая восстановленная буква присоединяется к ключу.
Квадрат Виженера
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| B | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A |
| C | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B |
| D | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
| E | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D |
| F | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E |
| G | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F |
| H | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G |
| I | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H |
| J | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I |
| K | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J |
| L | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K |
| M | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L |
| N | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M |
| O | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N |
| P | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| Q | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P |
| R | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q |
| S | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R |
| T | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S |
| U | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T |
| V | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U |
| W | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V |
| X | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W |
| Y | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X |
| Z | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y |
Строка = буква ключа, столбец = буква открытого текста, ячейка = буква шифра. Выберите букву ниже, чтобы подсветить её: её строка и столбец станут синими, а ячейка на их пересечении — янтарной.
| Буква открытого текста | Буква ключа | Арифметика | Буква шифра |
|---|---|---|---|
| Q | 0 + 16 = 16 | Q | |
| U | 19 + 20 = 39 ≡ 13 | N | |
| E | 19 + 4 = 23 | X | |
| E | 0 + 4 = 4 | E | |
| N | 2 + 13 = 15 | P | |
| L | 10 + 11 = 21 | V | |
| Y | 0 + 24 = 24 | Y | |
| A | 19 + 0 = 19 | T | |
| T | 3 + 19 = 22 | W | |
| T | 0 + 19 = 19 | T | |
| A | 22 + 0 = 22 | W | |
| C | 13 + 2 = 15 | P |
Как пользоваться инструментом «Шифр с автоключом»
- 1. Выберите праймер. Это короткое ключевое слово, например QUEENLY, которое начинает ключ. Учитываются только его буквы.
- 2. Выберите, что продолжает ключ. Классический автоключ использует открытый текст; форма по шифротексту предлагается для учебников, где используется она. Обе стороны должны договориться.
- 3. Введите сообщение и выберите «Кодировать» или «Декодировать». Пробелы, цифры и знаки препинания проходят без изменений и не используют буквы ключа.
- 4. Смотрите, как строится ключ. Таблица ключа выстраивает открытый текст, ключ и шифротекст друг под другом, а праймер затенён; выберите букву в рабочей таблице, чтобы увидеть её в квадрате.
Как работает шифр с автоключом
Шифр с автоключом — это шифр Виженера с одним изменением: ключ не повторяется. Отправитель и получатель договариваются о коротком праймере, а ключом становится праймер, за которым следует само сообщение. При A = 0 … Z = 25 каждая буква шифра равна C = P + K (по модулю 26), точно так же, как в шифре Виженера, а декодирование вычитает ключ: P = C − K.
Декодирование работает, потому что ключ всегда на шаг впереди читающего. Праймер расшифровывает первые буквы; эти буквы открытого текста становятся следующими буквами ключа, которые расшифровывают последующие, и так до конца. Возьмём праймер QUEENLY и сообщение ATTACKATDAWN:
| Открытый | Ключ | Сумма | Шифр |
|---|---|---|---|
| A (0) | Q (16) | 0 + 16 = 16 | Q |
| T (19) | U (20) | 19 + 20 = 39 ≡ 13 | N |
| T (19) | E (4) | 19 + 4 = 23 | X |
| A (0) | E (4) | 0 + 4 = 4 | E |
| C (2) | N (13) | 2 + 13 = 15 | P |
Всё сообщение превращается в QNXEPVYTWTWP — тот же ответ, что приводит статья о шифре с автоключом в Википедии для этого примера. Ключ — это QUEENLY, за которым идёт ATTACKATDAWN; его восьмая буква, A, — первая буква сообщения. Инструмент показывает эту строку ключа прямо под вашим текстом, чтобы было видно, где кончается праймер и начинается сообщение.
Краткая история шифра с автоключом
Идею, при которой сообщение само задаёт ключ, обычно приписывают итальянскому учёному-универсалу Джироламо Кардано в середине XVI века. Его версия начинала ключ заново с каждым словом, и поэтому первое слово было так же трудно восстановить читателю, как и криптоаналитику-противнику, по словам Дэвида Кана в его истории The Codebreakers. В 1586 году Блез де Виженер описал более чистую схему в Traicté des chiffres: одна затравочная буква, а затем ключ, который продолжается через сообщение без перезапуска. Именно так сегодня и учат шифру с автоключом. Более известный шифр с повторяющимся ключевым словом, который носит имя Виженера, — другое, более раннее изобретение Джованни Баттисты Беллазо; в XIX веке за ним закрепили это имя по ошибке.
Как взламывают шифр с автоключом
Неповторяющийся ключ обходит атаки, которые разрушают шифр Виженера. Тест Касиски ищет повторяющиеся фрагменты на расстоянии, кратном длине ключа, а индекс совпадений ищет период; у сообщения с автоключом нет ни того, ни другого. Но ключ составлен из обычного языка, и в этом его слабость. Криптоаналитик угадывает частое слово, например THE, сдвигает его вдоль шифротекста и вычитает; там, где результат читается как осмысленный текст, этот фрагмент, вероятно, тоже является ключом, и он раскрывает больше открытого текста на одну длину праймера дальше. Каждая верная догадка подсказывает следующую, и сообщение быстро распутывается. Первые буквы, зашифрованные одним только праймером, — это обычный шифр Виженера с коротким ключом. Ещё один недостаток — распространение ошибки: одна неверная буква при кодировании или переписывании портит все последующие.
Для головоломок и обучения, а не для секретности
Автоключ — реальный шаг вперёд по сравнению с повторяющимся ключом, но его взламывают уже много поколений. Используйте его, чтобы изучать принцип бегущего ключа, но никогда не для защиты чего-либо личного.
Часто задаваемые вопросы
- Что такое шифр с автоключом?
- Шифр с автоключом — это полиалфавитный шифр замены, в котором ключом служит короткий праймер, за которым идёт само сообщение. Каждая буква шифруется правилом Виженера, C = P + K (mod 26), поэтому ключ такой же длины, как сообщение, и никогда не повторяется.
- Как расшифровать шифр с автоключом?
- Запишите праймер, вычитайте каждую букву ключа из соответствующей буквы шифра, чтобы получить букву открытого текста, затем добавьте эту букву к ключу и продолжайте. Когда праймер исчерпан, ключом становится просто уже восстановленный открытый текст. Этот инструмент делает это за вас, когда вы выбираете «Декодировать».
- В чём разница между шифрами с автоключом и Виженера?
- Виженер повторяет ключевое слово на всё сообщение, а автоключ использует ключевое слово один раз и затем продолжает сообщением. Это устраняет повторяющийся узор, на котором основаны тест Касиски и индекс совпадений, поэтому автоключ им сопротивлялся.
- Насколько надёжен шифр с автоключом?
- Ненадёжен. Поскольку ключ состоит из открытого текста, угаданное слово раскрывает и кусок сообщения, и кусок ключа, а куски сцепляются друг с другом. Взлом перетаскиванием по распространённым словам делается вручную, а программы восстанавливают праймер по нескольким сотням букв.
- Какой длины должен быть праймер?
- Любой: от одной буквы и больше. В оригинале Виженера использовалась одна буква, а в примере Американской ассоциации криптограмм — шестибуквенное слово PRIMER. Более длинный праймер скрывает несколько первых букв, но не меняет основной слабости: после праймера ключ — это сам открытый текст.
- Что такое автоключ по шифротексту?
- В форме по шифротексту ключ продолжается шифротекстом, а не открытым текстом. Расшифровать её легче, поскольку весь ключ виден в шифротексте, но это же означает, что его может прочитать каждый, и поэтому она почти ничего не добавляет к короткому ключу Виженера. Обе стороны должны выбрать одну и ту же версию.