- •Предисловие
- •Глава 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
- •Литература
18
Эти цифры обычно образуют четыре группы, для удобства отделенные друг от друга пробелами или дефисами. Первая группа цифр обозначает языковую группу, вторая указывает на издателя, третья является серийным номером издателя, а последняя группа - это одиночный проверочный символ.
Полученная нами сумма (которая называется контрольной суммой) должна быть кратна 11; если это не так, то номер ISBN содержит ошибку. Например:
номер 1-234-56789-X даёт нам контрольную сумму
(1) 1+(2) 2+(3) 3+(4) 4+(5) 5+(6) 6+(7) 7+(8) 8+(9) 9+(10) 10,
то есть
1+4+9+16+25+36+49+64+81+100=385=35 11,
и следовательно, номер правильный. С другой стороны, номер 0-987-65432-1 дает контрольную сумму
0+18+24+28+30+30+28+24+18+10=210=19 11+1,
и следовательно, должен содержать по крайней мере одну ошибку.
Код ISBN способен обнаружить единичную ошибку, но не способен ее исправить. Если ошибок две или более, проверка может показать, что номер ISBN верен, тогда как на самом деле это может не соответствовать действительности.
Изучение кодов, обнаруживающих и исправляющих ошибки, требует от читателя знания некоторых областей высшей математики, и в этой книге далее не рассматривается. Интересующиеся могут обратиться к работам
[1.1],[1.2],[1.3].
Другие методы сокрытия содержания сообщений
Существуют и другие способы скрыть смысл или содержание сообщения, не использующие кодирования или шифрования. Первые два из них никак не связаны с темой этой книги, однако заслуживают упоминания. Итак, это:
(1)использование симпатических ("невидимых") чернил;
(2)использование микроточек, то есть крошечных фотографий сообщения на микропленке, прикрепляемых к письму в незаметном месте;
(3)вкрапление сообщения в текст другого, совершенно безобидного письма, причем слова или буквы секретного послания разбросаны, согласно определенному правилу, по всему тексту открытого письма.
19
Двумя первыми способами пользуются шпионы. Так, например, знаменитый и весьма удачливый "двойной агент" Хуан Пуйоль, по кличке ГАРБО, применял оба эти способа с 1942 по 1945 гг. (см. [1.5]). Третий метод шпионами также применялся, но вполне вероятно, им пользовались также и военнопленные в своих письмах домой, чтобы передать информацию о своем местонахождении или об условиях содержания в лагере; такие попытки тщательно пресекались цензурой. Об этом третьем методе рассказано в главе
7.
Примеры, приведенные в этой книге, почти всегда строятся на основе английских текстов, с использованием 26-буквенного латинского алфавита или его расширенного варианта с учетом таких знаков препинания, как пробел, точка и запятая. Теоретически не трудно видоизменить эти примеры, включив туда дополнительные символы либо цифры, или же перейти к языкам с другими алфавитами. Однако для реализации системы шифрования в виде физического устройства изменение размера алфавита без реконструкции самого прибора может оказаться невозможным. Последнее, как мы увидим в дальнейшем, справедливо для машин "Энигма" и "Хагелин". Языки, не имеющие буквенного письма, (например, японский) придется "алфавитизировать"*) , или же обрабатывать их как нетекстовую информацию (такую, как фотографии, карты, диаграммы и пр.), которую можно зашифровать с помощью специально разработанных для этого систем, подобных системам шифрования спутниковых телевизионных программ или данных, поступающих от космических аппаратов.
Модульная арифметика
В криптографии и криптоанализе часто бывает необходимо сложить две последовательности чисел или же вычесть одну последовательность из другой. Такое сложение и вычитание производится, как правило, не с помощью обычных арифметических действий, а с помощью операций, называемых модульной арифметикой. В модульной арифметике сложение, вычитание (а также и умножение, которое понадобится нам в главах 12 и 13) выполняется относительно некоторого фиксированного числа, которое называется модуль. Типичными значениями модулей, используемых в криптографии, являются 2, 10 и 26. Какой бы модуль мы ни взяли, все встречающиеся числа заменяются на остатки от деления этих чисел на модуль. Если в остатке получается отрицательная величина, то к ней прибавляют значение модуля, чтобы остаток стал неотрицательным. Например, если используется модуль 26, то единственно возможные числа лежат в диапазоне от 0 до 25. Так, если прибавить 17 к 19, то результат равен
*) т.е. преобразовать в буквенное письмо (прим. перев.)
20
10, поскольку 17+19=36, а 36 при делении на 26 дает остаток 10. Чтобы указать, что используется модуль 26, принята форма записи:
17+19 10(mod 26).
Если вычесть 19 из 17, то результат (-2) получается отрицательным, поэтому к нему прибавляется 26, и в итоге получается 24.
Символ читается "сравним с", и поэтому мы скажем
"36 сравнимо с 10 по модулю 26" и "-2 сравнимо с 24 по модулю 26".
При сложении по модулю 26 двух числовых последовательностей сформулированные правила сложения применяются к каждой паре чисел по отдельности, без "переноса" на следующую пару. Аналогично, при вычитании по модулю 26 одной числовой последовательности из другой правила вычитания применяются к каждой паре чисел по отдельности, без "заимствования" из следующей пары.
Пример 1.1 Сложить по модулю 26 последовательности 15 11 23 06 11 и 17 04 14 19 23.
Решение
15 11 23 06 11
17 04 14 19 23
32 15 37 25 34 (mod 26) 06 15 11 25 08,
и в результате получаем 06 15 11 25 08.
Если модуль равен 10, то используются только числа от 0 до 9; при модуле 2 - только 0 и 1. Арифметика по модулю 2, или, как ее обычно называют, двоичная (бинарная) арифметика, имеет особое значение, поскольку в этом случае сложение и вычитание являются идентичными операциями, то есть всегда дают одинаковый результат, а именно:
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
+0 1 0 1 |
-0 1 |
0 |
1 |
||||
0 |
1 |
1 |
2 |
0 -1 |
1 |
0 |
|
0 1 1 0 |
0 |
1 |
1 |
0 (mod 2) в обоих случаях. |
Модульное сложение и вычитание букв
Нередко возникает необходимость в сложении или вычитании
21
последовательностей букв с применением числа 26 в качестве модуля. Для этого преобразуем каждую букву в двузначное число, начиная с A=00 и заканчивая Z=25, как показано в таблице 1.1. Подобно операциям с числами, каждая пара букв складывается и вычитается по модулю 26 отдельно, без "переноса" или "заимствования" из следующей пары. По завершении операций сложения или вычитания результирующие числа обычно преобразуются обратно в буквы.
Таблица 1.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
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Пример 1.2
(1)Прибавить TODAY к NEVER по модулю 26.
(2)Вычесть NEVER из TODAY по модулю 26.
Решение
(1)TODAY= 19áá14áá03áá00áá24 NEVER= 13áá04áá21áá04áá17
Сумма 32áá18áá24áá04áá41á á06á18á24á04á15=GSYEP.
(2)TODAY= 19áá14áá03áá00áá24 NEVER= 13áá04áá21áá04áá17
Разность 06áá10á-18á-04áá07á á06á10á08á22á07=GKIWH.
Род
Криптографы, криптоаналитики, шпионы, "отправители" и "получатели" в этой книге все относятся к мужскому роду. Это вовсе не означает, что среди них не бывает женщин. Иногда бывают и женщины. Но поскольку большинство представителей этой профессии составляют мужчины, я использую местоимения мужского рода, которые можно при желании везде интерпретировать как местоимения женского рода.
Заключение
В конце книги можно найти, во-первых, математическое приложение, предназначенное для тех читателей, которых заинтересует математическая теория, лежащая в основе некоторых упомянутых в тексте систем, проблем, исследований и вероятностных вопросов. Как правило, читателю достаточно близкого знакомства с чистой математикой в объеме английской стандартной
22
программы обучения Уровня А, но иногда для детальных объяснений необходимы серьёзные математические познания. В таких случаях я пытаюсь дать упрощенное описание проблемы, отсылая интересующихся читателей к более серьёзным работам. В тексте книги ссылки на математическое приложение обозначаются М1, М2, и т.д. Во-вторых, в конце книги даны решения задач. В-третьих, приведен список литературы, в котором статьи и книги, относящиеся, например, к главе 5, обозначаются [5.1],[5.2] и т.д.