- •Предисловие
- •Глава 1. Введение
- •Некоторые аспекты безопасности связи
- •Шифр Юлия Цезаря
- •Несколько основных определений
- •Коды и шифры
- •Оценка стойкости системы шифрования
- •Коды, обнаруживающие и исправляющие ошибки
- •Другие методы сокрытия содержания сообщений
- •Модульная арифметика
- •Модульное сложение и вычитание букв
- •Заключение
- •Глава 2. От Юлия Цезаря до простой замены
- •Шифры Юлия Цезаря и их вскрытие
- •Шифры простой замены
- •Вскрытие шифра простой замены
- •Частоты встречаемости букв в других языках, кроме английского
- •Сколько знаков необходимо для дешифрования простой замены?
- •Глава 3. Многоалфавитные системы
- •Усиление системы Юлия Цезаря: шифры Вижанэра
- •Вскрытие шифра Вижанэра
- •Индикаторы
- •Одноключевые сообщения
- •Распознавание одноключевых сообщений
- •Какой объем текста необходим для дешифрования шифра Вижанэра?
- •Цилиндр Джефферсона
- •Глава 4. Шифры-головоломки
- •Перестановки
- •Простая перестановка
- •Двойная перестановка
- •Другие виды перестановок
- •Регулярные перестановочные таблицы
- •Нерегулярные перестановочные таблицы
- •Оценка стойкости шифров перестановки
- •Общая концепция двойного шифрования
- •Глава 5. Двухбуквенные шифры
- •Замена "монограф-диграф"
- •МДПМ-шифры
- •Система "диграф-диграф"
- •Шифр Плейфера*)
- •Расшифрование в системе Плейфера
- •Криптоаналитические аспекты системы Плейфера
- •Двойной шифр Плейфера
- •Глава 6. Коды
- •Характеристики кодов
- •Одночастевые и двухчастевые коды
- •Код плюс аддитивное шифрование
- •Глава 7. Шифры для шпионов
- •Шифры-решетки
- •Книжные шифры
- •Использование книжного шифра
- •Частоты встречаемости букв в книжных шифрах
- •Вскрытие книжного шифра
- •Индикаторы
- •Катастрофические ошибки при использовании книжного шифра
- •Шифры "агента Гарбо"
- •Первый шифр "агента Гарбо"
- •Второй шифр "агента Гарбо"
- •Одноразовый блокнот
- •Глава 8. Получение случайных чисел и букв
- •Случайные последовательности
- •Получение случайных последовательностей
- •Бросание монеты
- •Бросание костей
- •Извлечение из урны (по типу лотереи)
- •Космические лучи
- •Шум от усилителей
- •Псевдослучайные последовательности
- •Линейные рекурренты
- •Использование последовательности двоичных знаков гаммы для шифрования
- •Двоичные линейные последовательности как генераторы гаммы
- •Криптоанализ линейной рекурренты
- •Повышение стойкости двоичной гаммы
- •Генераторы псевдослучайных чисел
- •Метод срединных квадратов
- •Линейные конгруэнтные генераторы
- •Глава 9. Шифрмашина "Энигма"
- •Историческая справка
- •Первая "Энигма"
- •Шифрование с использованием контактных колес
- •Шифрование в "Энигме"
- •Коммутатор "Энигмы"
- •Ахиллесова пята "Энигмы"
- •Цепочки индикаторов в "Энигме"
- •Выравнивание цепочек
- •Идентификация колеса R1 и его угловой установки
- •Двойное шифрование в "Энигме"
- •"Энигма" Абвера
- •Глава 10. Шифрмашина "Хагелин"
- •Историческая справка
- •Конструкция шифрмашины «Хагелин»
- •Шифрование при помощи шифрмашины "Хагелин"
- •Выбор установок барабана в шифрмашине "Хагелин"
- •Теоретический объем перебора для шифрмашины "Хагелин"
- •Вскрытие установок "Хагелина" по отрезку гаммы
- •Дополнительные возможности шифрмашины "Хагелин"
- •Смещение
- •Определение смещения по шифрованному тексту
- •Перекрытия
- •Вскрытие шифрмашины "Хагелин" только по шифрованному тексту
- •Глава 11. После "Энигмы"
- •SZ42 - предтеча электронных машин
- •Описание шифрмашины SZ42
- •Шифрование в машине SZ42
- •Вскрытие шифрмашины SZ42 и определение ее угловых установок
- •Модификации шифрмашины SZ42
- •Глава 12. Криптография с открытым ключом
- •Историческая справка
- •Вопросы безопасности
- •Защита программ и данных
- •Шифрование программ, данных и сообщений
- •Задача распределения ключей
- •Система ключевого обмена Диффи-Хеллмана
- •Стойкость системы Диффи-Хеллмана
- •Глава 13. Шифрование и Интернет
- •Обобщение шифра простой замены
- •Факторизация больших целых чисел
- •Стандартный метод факторизации
- •Малая теорема Ферма
- •Теорема Ферма-Эйлера (для случая системы RSA)
- •Ключи зашифрования и расшифрования в системе RSA
- •Процессы зашифрования и расшифрования в системе RSA
- •Каким образом хозяин ключей отвечает корреспондентам?
- •Американский Стандарт Шифрования Данных (DES)*)
- •Общие сведения
- •Процедура зашифрования
- •Процедура расшифрования
- •Стойкость DES-алгоритма
- •Зацепление
- •Реализации DES-алгоритма
- •Совместное использование алгоритмов RSA и DES
- •Полезное замечание
- •После DES-алгоритма
- •Проверка подлинности сообщения и удостоверение подлинности подписи
- •Криптография эллиптической кривой
- •Приложение. Математические вопросы
- •Глава 2
- •М1. Совпадения знаков в алфавитах замены
- •М2. Снижение стойкости при использовании взаимно-обратных алфавитов
- •M3. Парадокс дней рождения
- •Глава 3
- •М4. Евклидово доказательство бесконечности множества простых чисел
- •Глава 6
- •М5. Последовательность чисел Фибоначчи
- •Глава 7
- •М6. Частота встречаемости букв для книжного шифра
- •М7. Одноразовый блокнот дешифровать невозможно
- •Глава 8
- •М8. Частота появления случайных чисел на странице
- •М9. Комбинирование двух последовательностей двоичных знаков гаммы, имеющих отклонения
- •М10. Последовательность типа Фибоначчи
- •М11. Двоичные линейные рекурренты
- •M12. Восстановление двоичной линейной рекурренты по отрезку гаммы
- •М13. Получение псевдослучайных чисел
- •Глава 9
- •М14. Распайка колёс шифрмашины "Энигма"
- •М15. Число возможных отражателей шифрмашины "Энигма"
- •М16. Вероятность одноключевых сообщений для "Энигмы"
- •М17. Среднее число индикаторов, необходимое для построения полных цепочек
- •Глава 10
- •М18. Число возможных барабанов шифрмашины "Хагелин"
- •М19. Максимальная кратность значения зацепления, которая может встретиться при вычислении разности гаммы шифрмашины "Хагелин"
- •M20. Определение смещения шифрмашины "Хагелин" с помощью коэффициента корреляции
- •Глава 13
- •M21. (Порядок роста количества простых чисел)
- •M22. Вычисление остатка с использованием модульной арифметики
- •М23. Доказательство теоремы Ферма-Эйлера
- •М24. Нахождение чисел, "предположительно" являющихся простыми
- •M25. Алгоритм Евклида
- •М26. Эффективность возведения в степень методом последовательного возведения в квадрат
- •М27. Число ложных ответов при дешифровании DES-алгоритма методом "встречного поиска "
- •М28. Криптография эллиптической кривой
- •Решения задач
- •Глава 2
- •Глава 3
- •Глава 4
- •Глава 5
- •Глава 6
- •Глава 7
- •Глава 8
- •Глава 9
- •Глава 10
- •Глава 11
- •Глава 13
- •Литература
103
ELEVEN*) является наиболее вероятным кандидатом, так как в нем ровно 6 букв. Вычитая эти 6 букв из соответствующих букв шифрованного текста, ACMOXR, получаем в тексте 1 WRITTE. Дешифрование окончено. Полный текст читается следующим образом:
FLIQTNYQFKVACEHUCUACMOXRGEYYQJBNOEQFJXULILREJAT VQB
THE LAST SYMPHONY WRITTEN BY MOZART WAS THE JUPITE MEETING IS ON THE ELEVENTH AT NOON IN COPENHAGEN
Криптоаналитик не только дешифровал сообщение, но и выяснил, что в качестве гаммы используется книга либо о музыке, либо о Моцарте. Эта информация может оказаться полезной при дешифровании последующих сообщений.
Приведенный нами пример, несмотря на его краткость и простоту, показывает, что для достижения цели криптоаналитику необходимо владеть сочетанием аналитических и лингвистических навыков, иметь знания общего характера, а также богатое воображение и везение. И, кроме того, не надо забывать, что ему прежде всего нужно понять, что при зашифровании сообщения в качестве гаммы использовалась книга, а это не всегда легко установить.
Индикаторы
Об индикаторах уже говорилось в главе 3. Они играют довольно важную роль и заслуживают подробного описания, так как необходимость использования индикатора может оказаться ахиллесовой пятой любой системы шифрования. При использовании книжного шифра отправитель должен сообщить получателю, с какой страницы и строки ключевой книги он начал шифрование. Если, например, он начинает работу со строки 15 на странице 216, то он может предварить сообщение числом 15216. Однако такой способ слишком очевиден, и поэтому отправитель наверняка постарается замаскировать эти цифры. Для этого существуют несколько приемов, таких, например, как:
(1)перестановка цифр по заранее оговоренному правилу; например, 15216 превратится, скажем, в
65121;
*) одиннадцать (англ.) - прим. перев.
104
(2)позначное сложение индикатора с заранее оговоренным числом, например, 59382, так что в итоге получится
64598;
(3)преобразование цифр индикатора в буквы и сокрытие получившейся пятизначной группы в заранее оговоренном месте шифрованного текста сообщения; тогда 15216 превращается в
BFCBG;
(4)любая комбинация перечисленных способов.
Необходимость сообщения индикатора, разумеется, характерна не только для книжных шифров; это существенная часть многих систем шифрования. Основной принцип всегда один и тот же: отправитель должен как-то сообщить индикатор получателю, но так, чтобы криптоаналитику было как можно труднее его обнаружить. Со своей стороны, криптоаналитик посчитает определение местонахождения индикатора и установление метода его шифрования одной из своих первоочередных задач.
Катастрофические ошибки при использовании книжного шифра
Серьезной опасностью для отправителя сообщения, закрытого книжным шифром, является возможность совершить ошибку, в результате чего сообщение придется отправлять снова. Тем самым он может дать в руки криптоаналитика сравнительно простой способ дешифрования. Такой решающей ошибкой может стать пропуск буквы в книжной гамме, например:
Пример 7.5 (шпион делает ошибку и тем самым выдает себя)
Два сообщения посланы одним и тем же лицом с одинаковыми индикаторами с интервалом в несколько часов; в нашем распоряжении имеются следующие шифрованные тексты:
ZECBH MOPJO IIUXJ ELFDR WRSJX CQ.
ZECSS HLIEL RVBCM CUAKA OLPBP PPP
Первое сообщение короче второго на одну букву, поэтому начнем дешифрование, основываясь на предположении, что отправитель пропустил одну букву книжной гаммы в первом сообщении, а во втором сообщении повторно зашифровал этот же текст правильно.
105
Начало решения Поскольку первые три буквы шифрованного текста в обоих случаях
одинаковы, мы предполагаем, что в первом сообщении пропущена именно четвертая буква книжной гаммы. Если перебрать все 26 вариантов этой буквы во втором шифрованном сообщении, то мы получим 26 вариантов четвертой буквы этого текста. Для каждого из вариантов с помощью первого шифрованного текста можно вычислить пятую букву книжной гаммы. Зная пятую букву книжной гаммы, теперь можно восстановить пятую букву текста второго сообщения, что, в свою очередь, позволит нам по первому сообщению вычислить шестую букву книжной гаммы, и так далее. Таким образом, мы сможем восстановить и книжную гамму, и текст сообщения, начиная с четвертой буквы и до самого конца. Разумеется, придется перебрать все 26 вариантов четвертой буквы гаммы. Но по мере восстановления текстов книжной гаммы и сообщения мы быстро установим, какой вариант является правильным. Для экономии времени и места мы просто посмотрим, что получается, когда выбран верный вариант четвертого знака гаммы (буква F). Обозначим шифрованные тексты через CT1 и CT2. Текст CT2 является правильным текстом, а текст CT1 содержит ошибку. Буквы открытого текста можно вычислять непосредственно, как показано ниже, а можно использовать таблицу 7.3.
По CT2: (буква шифрованного текста) - (знак гаммы) на 4-ом месте = буква открытого текста на 4-ом месте, то есть S-F=N.
По CT1: (буква шифрованного текста) - (буква открытого текста) на 4-ом месте = знак гаммы на 5-ом месте, то есть B-N=O.
По CT2: (буква шифрованного текста) - (знак гаммы) на 5-ом месте = буква открытого текста на 5-ом месте, то есть S-O=E.
По CT1: (буква шифрованного текста) - (буква открытого текста) на 5-ом месте = знак гаммы на 6-ом месте, то есть H-E=D.
По CT2: (буква шифрованного текста) - (знак гаммы) на 6-ом месте = буква открытого текста на 6-ом месте, то есть H-D=E.
По CT1: (буква шифрованного текста) - (буква открытого текста) на 6-ом месте = знак гаммы на 7-ом месте, то есть M-E=I.
По CT2: (буква шифрованного текста) - (знак гаммы) на 7-ом месте = буква открытого текста на 7-ом месте, то есть L-I=D.
По CT1: (буква шифрованного текста) - (буква открытого текста) на 7-ом месте = знак гаммы на 8-ом месте, то есть O-D=L.
По CT2: (буква шифрованного текста) - (знак гаммы) на 8-ом месте = буква открытого текста на 8-ом месте, то есть I-L=X.
Таким образом, получаем часть текста гаммы и сообщения:
106
Гамма: |
...F O D I L |
Сообщение: |
...N E E D X |
Это выглядит вполне правдоподобно.
Задача 7.3.
Доведите до конца начатое выше решение задачи.
Шифры "агента Гарбо"
Двойной агент Хуан Пуйоль (кличка "Гарбо"), испанец, работая в Англии в 1942-45 гг., пользовался как симпатическими чернилами, так и системами шифрования. И чернила, и шифры он получал из Мадрида от своего германского "руководства", которое, разумеется, и не подозревало, что Гарбо работает на Великобританию. В 1942 и 1943 годах Гарбо пользовался системой простой замены с пятью алфавитами. Это была очень слабая система, которую любой компетентный криптоаналитик вскрыл бы очень быстро. Возможно, его руководство поняло это, так как в 1944 году ему было предложено использовать другую 5-алфавитную систему простой замены с последующей двойной перестановкой. В результате шифр стал более стойким, но все еще оставался уязвимым в ситуации, если посылалось много сообщений (как это и было на самом деле). Поскольку англичане не только знали его систему шифрования, но и вместе с Гарбо принимали участие в составлении его посланий, то криптоаналитикам вообще не надо было ничего делать.
Первый шифр "агента Гарбо"
Сообщение выписывалось в виде серии пятизначных групп, которые шифровались с помощью пяти алфавитов замены, применяемых последовательно. Для первой буквы каждой группы применялся первый алфавит, для второй буквы - второй алфавит, и так далее. Эта слабая по сути система была дополнительно ослаблена тем, что первый алфавит замены был шифром Юлия Цезаря, где каждая буква сдвигалась на 6 позиций вперед. Остальные алфавиты были не намного лучше. Если бы Гарбо действительно работал на Германию, у него бы почти не было шансов остаться на свободе.
Второй шифр "агента Гарбо"
Второй шифр Гарбо представлял собой пятиалфавитную замену с
107
последующей двойной перестановкой. В основе алфавитов замены лежал квадрат 5 5. Такая замена сама по себе была даже слабее, чем пять независимых алфавитов, но ее стойкость значительно повышалась двойной перестановкой. Квадрат замены 5 5 был таков, как показано в таблице 7.5.
Буква K отсутствует в данном квадрате, поскольку сообщения Гарбо были написаны обычно на испанском языке, и буква K почти никогда не употреблялась. Если K все же встречалась в тексте (например, в названиях YORK или KIDDERMINSTER), она оставлялась без изменения.
Таблица 7.5
L |
A |
C |
O |
N |
F |
I |
Z |
E |
G |
B |
R |
T |
D |
H |
J |
M |
P |
Q |
S |
U |
V |
W |
X |
Y |
|
|
|
|
|
В данной системе сообщение также выписывалось в виде серии пятизначных групп. Замена осуществлялась следующим образом:
(1)первая буква в каждой группе заменялась на букву, стоящую в квадрате над ней;
(2)вторая буква в каждой группе заменялась на букву, стоящую в квадрате справа от нее;
(3)третья буква в каждой группе заменялась на букву, стоящую в квадрате под ней;
(4)четвертая буква в каждой группе заменялась на букву, стоящую в квадрате слева от нее;
(5)пятая буква в каждой группе оставлялась без изменения.
Как обычно, при необходимости нижняя строка квадрата считалась стоящей "над" первой, а самый левый столбец считался стоящим справа от самого правого, и т.п. Таким образом, пять последовательных букв T перейдут при зашифровании в ZDPRT, а пятерка букв N - в YLGON. Текст, начинающийся
с
STRON GXIND ICATI ONSXT
после первого этапа преобразуется в текст
HDMCN NYROD AOIRI XLYWT.
Далее применялась перестановка длины 31. Нумерация столбцов в перестановке была всегда одна и та же, но "случайная". Шифрованный текст вписывался в перестановочную таблицу построчно, причем первая буква
108
текста помещалась в столбец под номером, соответствующим дню месяца.
Первая и последняя строки обычно содержали менее 31 буквы, но промежуточные строки были "полными". Затем текст выписывался из таблицы по столбцам, согласно нумерации столбцов, начиная со столбца под номером 1. Этот переставленный шифрованный текст вписывался в ту же самую перестановочную таблицу из 31 столбца, причем первая буква вписывалась в столбец под номером, соответствующим месяцу. Текст снова выписывался по столбцам, начиная , как и ранее, со столбца под номером 1. Затем этот дважды переставленный текст выписывался в виде пятизначных групп и в таком виде передавался.
Для иллюстрации метода шифрования по второй системе Гарбо заменим ее перестановку на перестановку длины 12, а также для определения начального столбца первой перестановки используем месяц передачи сообщения, а для определения начального столбца второй перестановки - день недели (Воскресенье = 1).
Пример 7.6 Зашифровать следующее сообщение
AGENTXFOURXREPORTSXTHATXCONVOYXLEFTXGLASGOWXTODA YX,
используя второй шифр Гарбо с приведенной выше таблицей замены и перестановкой длины 12
6 1 10 4 8 11 3 7 12 2 9 5.
Дата отправки сообщения - вторник, 18 мая.
Зашифрование Выпишем сообщение в виде пятизначных групп:
AGENTáXFOURáXREPOáRTSXTáHATXCáONVOYáXLEFTá
GLASGáOWXTOáDAYXX
(чтобы последняя группа была полной, в конце сообщения добавлена еще одна буква X). Таблица замены приведена в таблице 7.5. Получаем текст, зашифрованный пятиалфавитной заменой согласно сформулированным выше правилам:
VFDOTáQIEYRáQTDMOáIDYWTáGCPWCáXLACYáQADGTá
NAIQGáXXOROáECNWX
109
Ключ перестановки следующий:
6 1 10 4 8 11 3 7 12 2 9 5.
Поскольку месяцем передачи сообщения является май, необходимо вписывать текст, начиная со столбца под номером 5 (см. таблицу 7.6).
Таблица 7.6.
|
6 |
1 |
10 |
4 |
8 |
11 |
3 |
7 |
12 |
2 |
9 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
V |
|
F |
D |
O |
T |
Q |
I |
E |
Y |
R |
Q |
T |
D |
|
M |
O |
I |
D |
Y |
W |
T |
G |
C |
P |
W |
C |
X |
L |
A |
C |
Y |
Q |
A |
D |
G |
T |
N |
A |
|
I |
Q |
G |
X |
X |
O |
R |
O |
E |
C |
N |
W |
|
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Далее выпишем текст по столбцам, начиная со столбца под номером 1:
DOLQQáPTCETáARTDCáXVDCAáWFMXIáXYGDOáQYYXTá WNNOIáAGIWQáORCGE.
Снова используем ту же перестановочную таблицу. Поскольку днем передачи сообщения является вторник (в этом упрощенном варианте шифра Гарбо дата не имеет значения), впишем текст в таблицу, начиная со столбца под номером 3 (см. таблицу 7.7).
Таблица 7.7.
|
6 |
1 |
10 |
4 |
8 |
11 |
3 |
7 |
12 |
2 |
9 |
5 |
|
|
|
|
|
|
|
D |
O |
L |
Q |
Q |
P |
|
T |
C |
E |
T |
A |
R |
T |
D |
C |
X |
V |
D |
|
C |
A |
W |
F |
M |
X |
I |
X |
Y |
G |
D |
O |
Q |
Y |
Y |
X |
T |
W |
N |
N |
O |
I |
A |
G |
|
I |
W |
Q |
O |
R |
C |
G |
E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
И наконец, выпишем текст из таблицы по столбцам, начиная со столбца под номером 1, и запишем его в виде пятизначных групп. Теперь текст готов к передаче:
CAYWQáXGIDTáINGTFáXOPDOáGTCQIáODXNEáAMTRQá VDAEWáYQRXWáCLCYO.