- •Глава 1. Введение 10
- •Глава 9. Шифрмашина "Энигма" 130
- •Глава 10. Шифрмашина "Хагелин" 152
- •Глава 11. После "Энигмы" 172
- •Глава 12. Криптография с открытым ключом 179
- •Глава 13. Шифрование и Интернет 188
- •Предисловие
- •Глава 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
- •Литература
- •Глава 1
- •Глава 2
- •Глава 3
- •Глава 4
- •Глава 5
- •Глава 6
- •Глава 7
- •Глава 8
- •Глава 9
- •Глава 10
- •Глава 11
- •Глава 12
- •Глава 13
Другие методы сокрытия содержания сообщений
Существуют и другие способы скрыть смысл или содержание сообщения, не использующие кодирования или шифрования. Первые два из них никак не связаны с темой этой книги, однако заслуживают упоминания. Итак, это:
использование симпатических ("невидимых") чернил;
использование микроточек, то есть крошечных фотографий сообщения на микропленке, прикрепляемых к письму в незаметном месте;
вкрапление сообщения в текст другого, совершенно безобидного письма, причем слова или буквы секретного послания разбросаны, согласно определенному правилу, по всему тексту открытого письма.
Двумя первыми способами пользуются шпионы. Так, например, знаменитый и весьма удачливый "двойной агент" Хуан Пуйоль, по кличке ГАРБО, применял оба эти способа с 1942 по 1945 гг. (см. [1.5]). Третий метод шпионами также применялся, но вполне вероятно, им пользовались также и военнопленные в своих письмах домой, чтобы передать информацию о своем местонахождении или об условиях содержания в лагере; такие попытки тщательно пресекались цензурой. Об этом третьем методе рассказано в главе 7.
Примеры, приведенные в этой книге, почти всегда строятся на основе английских текстов, с использованием 26-буквенного латинского алфавита или его расширенного варианта с учетом таких знаков препинания, как пробел, точка и запятая. Теоретически не трудно видоизменить эти примеры, включив туда дополнительные символы либо цифры, или же перейти к языкам с другими алфавитами. Однако для реализации системы шифрования в виде физического устройства изменение размера алфавита без реконструкции самого прибора может оказаться невозможным. Последнее, как мы увидим в дальнейшем, справедливо для машин "Энигма" и "Хагелин". Языки, не имеющие буквенного письма, (например, японский) придется "алфавитизировать"*) , или же обрабатывать их как нетекстовую информацию (такую, как фотографии, карты, диаграммы и пр.), которую можно зашифровать с помощью специально разработанных для этого систем, подобных системам шифрования спутниковых телевизионных программ или данных, поступающих от космических аппаратов.
Модульная арифметика
В криптографии и криптоанализе часто бывает необходимо сложить две последовательности чисел или же вычесть одну последовательность из другой. Такое сложение и вычитание производится, как правило, не с помощью обычных арифметических действий, а с помощью операций, называемых модульной арифметикой. В модульной арифметике сложение, вычитание (а также и умножение, которое понадобится нам в главах 12 и 13) выполняется относительно некоторого фиксированного числа, которое называется модуль. Типичными значениями модулей, используемых в криптографии, являются 2, 10 и 26. Какой бы модуль мы ни взяли, все встречающиеся числа заменяются на остатки от деления этих чисел на модуль. Если в остатке получается отрицательная величина, то к ней прибавляют значение модуля, чтобы остаток стал неотрицательным. Например, если используется модуль 26, то единственно возможные числа лежат в диапазоне от 0 до 25. Так, если прибавить 17 к 19, то результат равен 10, поскольку 17+19=36, а 36 при делении на 26 дает остаток 10. Чтобы указать, что используется модуль 26, принята форма записи:
17+1910(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) в обоих случаях.