logo search
Коды и шифры

Вскрытие шифра Вижанэра

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

Пример 3.1

Дано сообщение длиной 157 знаков, закрытое шифром Вижанэра, причем пробелы в открытом тексте заменены на букву Z:

HQEOT FNMKP ELTEL UEZSI KTFYG STNME GNDGL

PUJCH QWFEX FEEPR PGKZY EHHQV PSRGN YGYSL

EDBRX LWKPE ZMYPU EWLFG LESVR PGJLY QJGNY

GYSLE XVWYP SRGFY KECVF XGFMV ZEGKT LQOZE

LUIKS FYLXK HQWGI LF

Требуется

  1.  Найти длину ключа.

  2.  Найти ключ и дешифровать сообщение.

Решение

  1. Анализируя текст, мы находим, что шесть диграфов встречаются не менее трех раз, а именно:

EL на позициях 11, 14 и 140;

FY на позициях 23, 119 и 146;

GN на позициях 31, 64 и 103;

HQ на позициях 1, 40, 58 и 151;

LE на позициях 70, 91 и 109;

YG на позициях 24, 66 и 105.

Дальнейшее исследование показывает, что диграф GN на позициях 64 и 103 в обоих случаях является началом восьмибуквенного повторения ("октографа"):

GNYGYSLE

(эти буквы в приведенном выше тексте подчеркнуты).

Случайное появление восьмибуквенного повторения крайне маловероятно*). Поэтому мы заключаем, что под ним наверняка скрывается повторение открытого текста. Найдем расстояние между этими октографами, которое равно (103-64)=39. Поскольку 39=313, мы предполагаем, что длина ключа равна либо 3, либо 13. Теперь рассмотрим расстояния между другими повторяющимися диграфами, например, следующими:

EL на позициях 11, 14 и 140 дает расстояния 3 и 126(=342);

HQ на позициях 1, 40, 58 и 151 дает расстояния 39, 18 и 93, и все они кратны 3.

Это указывает на то, что, скорее всего, наиболее вероятной длиной ключевого слова является число 3.

Допустим, что это так. Тогда нашим следующим шагом будет поиск ключа.

  1. Мы предполагаем, Что используются три сдвига: первый сдвиг применяется к буквам 1-й, 4-й, 7-й, и т.д.; второй сдвиг - к буквам 2-й, 5-й, 8-й, и т.д.; третий сдвиг - к буквам 3-й, 6-й, 9-й и т.д. Поэтому выпишем шифрованное сообщение в три колонки и подсчитаем частоту встречаемости букв шифрованного текста в каждой из этих трех колонок: в результате получим Таблицу 3.1. Складывая частоты построчно, получаем суммы, равные соответственно 53, 52 и 52. Если бы буквы были распределены равновероятно, то каждая из частот должна была бы примерно равняться 2, но в нашем случае логично ожидать разброса частот от 0 до 5 или 6. Разумеется, распределение частот далеко от равновероятного, поскольку каждая отдельно взятая колонка состоит из букв открытого текста, сдвинутых на одну и ту же величину. В данном случае следует сосредоточиться на поиске букв с аномально высокой частотой встречаемости, чтобы определить буквы, отвечающие знакам пробелов 'Z' в данных трех строчках таблицы. Отметим, что в первой строчке буква G встречается 13 раз, а после нее самой частой является буква L - она встречается 7 раз. Если G представляет собой зашифрованный знак Z, то сдвиг для первой строчки равен 7, и тогда L отвечает зашифрованной букве E, так как она отстоит от E на 7 позиций в алфавите. Поскольку E - часто встречающаяся буква, то наше предположение , что первый сдвиг равен 7, подтверждается. Таким образом, первый элемент ключа равен 7.

Таблица 3.1

Буквы

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

Первый сдвиг

0

1

0

0

0

3

13

4

0

0

1

7

1

2

1

5

0

0

2

2

4

4

0

0

2

1

Второй сдвиг

0

0

0

0

13

6

0

0

3

2

2

1

2

3

0

0

6

3

3

1

0

0

2

1

3

1

Третий сдвиг

0

0

2

2

4

1

1

1

0

1

5

5

1

0

1

4

0

2

3

2

0

1

3

4

6

3

Мы видим, что во второй строчке буква E встречается 13 раз, и значит, с большой долей уверенности можно предположить, что E - это шифрованный эквивалент буквы Z; отсюда следует, что второй сдвиг равен 5. В этой строчке самыми частыми после E будут буквы шифрованного текста F и Q, каждая из которых встречается 6 раз. Сдвигая их на 5 позиций назад, мы видим, что в открытом тексте им отвечают соответственно буквы A и L, что выглядит обнадеживающе. С другой стороны, буква открытого текста E в таком случае переходит в J. Данная буква шифрованного текста встречается во второй строчке лишь дважды, хотя можно было бы ожидать, что она должна встретиться 5 раз, так как в типичных образцах английского текста на E приходится около 10% всех букв. Эти данные, хотя и не убеждают нас окончательно, но в итоге указывают на то, что второй элемент ключа, возможно, равен 5.

В третьей строчке буквы, имеющие аномально высокую частоту, отсутствуют, а наилучшими кандидатами на роль шифрованного эквивалента буквы Z являются Y, K и L, которые встретились 6, 5 и 5 раз соответственно. Мы могли бы последовательно опробовать каждый из этих вариантов. Но есть альтернативный подход: выпишем начало шифрованного текста, опуская пробелы, стоящие после каждой пятизначной группы. Для каждой тройки знаков расшифруем первую и вторую буквы, используя предполагаемые сдвиги на 7 и на 5. Третий знак в каждой тройке заменим на знак "/". Теперь посмотрим, нельзя ли доопределить какие-нибудь слова с пропусками и таким образом вычислить третий элемент ключа. Тогда мы получаем:

Шифрованный текст: HQEOTFNMKPELTELUEZSIKTFYGSTNMEGNDGLPUJCHQWFEXFEEPR

Открытый текст: AL/HO/GH/I /M /N /LD/MA/ N/GH/ I/ G/NE/AL/Y /Y /IM

Первое слово похоже на слово ALTHOUGH. И если это так, то буква открытого текста T переходит в знак шифрованного текста E. Поскольку E стоит в алфавите на 11‑й позиции после буквы T, или, что то же самое, на 15‑й позиции до нее, то отсюда следует, что величина сдвига равна 11. Тогда пробелу, то есть букве Z, в шифрованном тексте соответствует буква K, что и было одним из наших предположений. Делаем вывод, что третий элемент ключа равен 11. Итак, ключ зашифрования состоит из трех чисел, а именно 7‑5‑11, и следовательно, ключ расшифрования равен 19‑21‑15. Расшифровав весь текст, мы окончательно убеждаемся в этом:

ALTHOUGH I AM AN OLD MAN NIGHT IS GENERALLY MY TIME FOR WALKING IN THE SUMMER I OFTEN LEAVE HOME EARLY IN THE MORNING AND ROAM ABOUT FIELDS AND LANES ALL DAY

(этими словами начинается первая глава книги Диккенса "Лавка древностей"; знаки препинания здесь опущены).

Хотя вскрыть многоалфавитную систему Юлия Цезаря сложнее, чем простую, им обеим присущ один и тот же недостаток: как только в сдвинутом алфавите найдено шифрованное обозначение для "пробела" или для любой другой часто встречающейся буквы, мы немедленно получаем 25 оставшихся букв алфавита. И даже если в одном или нескольких алфавитах мы не можем с уверенностью определить шифрованное обозначение "пробела", то, возможно, информации о некоторых буквах в неполных словах будет достаточно, чтобы восстановить их, и таким образом, получить полный текст сообщения, как это мы проделали в вышеприведенном примере. От этого недостатка можно избавиться, если вместо алфавитов с обычным порядком букв, сдвинутых на различное число позиций согласно ключу, использовать некоторое множество независимых друг от друга алфавитов с различным порядком букв. Однако эта модификация создает две новые проблемы, а именно:

  1. как получить такие алфавиты?

  2. как сообщить такие перетасованные алфавиты адресатам, для которых они предназначены, и при этом не выдать их противнику?

Эти проблемы имеют огромное значение. Ибо, если для получения "перетасованного" алфавита используется очень простой прием, как, например, в шифре Юлия Цезаря, то криптоаналитик быстро разгадает этот прием, и тем легче станет для него дешифрование. С другой стороны, адресат должен знать, какие именно алфавиты используются, или же способ, которым их можно получить. Существует целый ряд способов решения обеих этих проблем, и некоторые из них будут позже рассмотрены. Здесь же будут описаны два возможных способа решения проблемы (2). Прежде всего введем два термина, имеющие отношение к криптографическим системам вообще.