Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kody_i_shifry_yuliy_Cezar_Enigma_i_Internet_2007.pdf
Скачиваний:
260
Добавлен:
29.03.2016
Размер:
2.04 Mб
Скачать

39

Глава 3. Многоалфавитные системы

Усиление системы Юлия Цезаря: шифры Вижанэра

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

COME AT ONCE

впредыдущей главе было зашифровано нами с фиксированным сдвигом 19, и

вшифрованном виде оно выглядело так:

VHFX TM HGVX.

Будем теперь поочередно использовать два сдвига, например 19 и 5, так чтобы первая, третья, пятая и т.д. буквы сдвигались на 19 позиций, а вторая, четвертая и т.д. буквы сдвигались на 5 позиций. В этом случае шифрованное сообщение принимает вид

VTFJ TY HSVJ.

Если в сообщении заменить знак пробела на Z и последовательно использовать три сдвига (например, 19, 5 и 11), то открытый текст выглядит так:

COMEZATZONCE,

шифрованное сообщение принимает вид

VTXXELMEZGHP,

40

а ключом зашифрования является тройка чисел 19-5-11. Чтобы прочесть это сообщение, получатель должен воспользоваться ключом расшифрования, который получается из ключа зашифрования заменой каждого числа из тройки на его дополнение по модулю 26, а именно: 7-21-15.

Даже если криптоаналитик догадается, что использован шифр Юлия Цезаря с тремя последовательными сдвигами, ему придется перебрать 75 или более комбинаций (так как один из сдвигов может быть равен нулю). Весьма вероятно, что для такого короткого сообщения, как это, решение может быть не единственным. Если сообщение слишком короткое, и невозможно найти каждый из трех сдвигов по отдельности (как это сделано в приведенном ниже примере), то, вероятно, придется воспользоваться методом "полного перебора". Однако, поскольку это потребует проверки

25 25 25=15625

вариантов, к нему стоит прибегать лишь как к крайней мере. В особом случае, когда число сдвигов в последовательности равно числу букв в тексте, сообщение становится "недешифруемым", если только у последовательности сдвигов не отмечено какой-нибудь неслучайной характеристики. Если же никаких закономерностей в ней нет (например, если эта последовательность сдвигов получена с помощью "генератора случайных чисел"), то мы имеем дело с системой шифрования, которая известна как "одноразовый блокнот". Она рассматривается в главе 7.

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

способом (A=0, B=1, C=2, ..., Z=25). Например, ключевое слово CHAOS эквивалентно использованию последовательности из пяти сдвигов 2, 7, 0, 14

и 18.

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

CHAOS будет выглядеть так:

CHAOSCHAOSCH

41

COMEZATZONCE,

и в результате получается шифрованный текст

EVMSRCAZCFEL.

Шифр Вижанэра представляет собой особый, и весьма специфический частный случай многоалфавитной системы, в которой (как следует из названия) используются несколько различных алфавитов замены (а не один, как в шифре простой замены). Число алфавитов замены может быть любым: от двух до многих тысяч; так, например, в шифр-машине "Энигма" их на самом деле 16900, и все они представляют собой произвольные алфавиты простой замены, а не сдвиги алфавита по типу шифра Юлия Цезаря, реализованные в составе шифров Вижанэра (подробнее об этом рассказано в главе 9).

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

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

Пример 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)Найти ключ и дешифровать сообщение.

42

Решение

(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.

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

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

*) Однако личный опыт Джека Гуда, о котором рассказано далее в этой главе, свидетельствует, что иногда происходят даже "самые невероятные" события.

43

должна была бы примерно равняться 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

 

 

 

 

 

 

KELFMGNHOI PJ 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 раз соответственно. Мы могли бы последовательно опробовать каждый из этих вариантов. Но есть альтернативный подход: выпишем начало шифрованного текста, опуская пробелы, стоящие после каждой пятизначной группы. Для каждой тройки

44

знаков расшифруем первую и вторую буквы, используя предполагаемые сдвиги на 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) как получить такие алфавиты?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]