Стандартный метод факторизации
Если от нас требуется факторизовать большое число N, необходимо воспользоваться следующим: если число N не простое, то оно должно иметь хотя бы два делителя, меньший из которых не может превосходить квадратного корня из N. Это означает, что для случая N=9167 нужно проверять на делимость только простые числа, меньшие 9167 (эта величина примерно равна 96). Наибольшее простое число, не превосходящее 96, равно 89, поэтому в нашем случае мы получили бы ответ при самой последней проверке, выполнив к этому моменту более двадцати операций деления. Если бы мы выполняли эти проверки для N=9161, то не нашли бы ни одного делителя, поскольку число 9161 - простое.
С увеличением N растет и число тестов, которые необходимо провести. Так, если N=988027, то оно либо простое, либо делится на число, не превосходящее 988027, что чуть-чуть меньше 994. Теперь следует разделить 988027 на каждое простое число, меньшее 994. Если мы обнаружим простое число, которое в точности (то есть без остатка) делит 988027, то задача решена. Если такого числа нет, то число 988027 является простым. На самом деле
988027=991997,
и поскольку 991 и 997 - это простые числа, то факторизация завершена. На это пришлось бы потратить массу усилий, поскольку существует более 160 простых чисел, меньших 991, и их придется все перепробовать, прежде чем будет найден ответ. Эта задача отнимет кучу времени и будет весьма утомительна, даже если использовать калькулятор. Человек, знакомый с программированием и имеющий компьютер, разумеется, мог бы поручить ему все вычисления. Независимо от того, каким образом это будет сделано, при увеличении N с 9167 до 988027 (то есть примерно в 108 раз) число операций деления, которые нам (или компьютеру) необходимо выполнить, возрастет с 20 до более чем 160. Заметим, что при росте числа N более чем в 100 раз (так что число N возросло более чем в 10 раз) число тестов вырастает только в 8 раз. Объяснение этого факта можно найти в M21.
Такой метод поиска простых делителей заданного числа, когда это число делят поочередно на все простые числа, меньшие его квадратного корня, по существу принадлежит Эратосфену и является стандартным методом как при факторизации числа (если он срабатывает), так и при доказательстве его простоты (если ничего не найдено). Это не единственный метод, которым можно воспользоваться. Иногда можно найти быстрый путь: например, можно заметить, что
9167=9216-49=962-72=(96-7)(96+7)=89103,
или, что еще лучше,
988027=988036-9=9942-32=(994-3)(994+3)=991997,
но, вообще говоря, так везет далеко не всегда. Иногда существуют специальные приемы, позволяющие уменьшить число вариантов - например, если число, которое мы пытаемся факторизовать, является числом специального вида, таким как
2p-1
где p - простое. Однако для чисел того типа, что применяется в системе RSA, такие специальные методики оказываются неприменимы.
Стойкость описанной далее системы шифрования RSA основана на следующем факте: факторизация большого числа требует значительных затрат времени даже в том случае, когда известно, что оно является произведением двух больших простых чисел. Что касается процесса зашифрования по системе RSA, то в его основе лежит красивая и мощная теорема, сформулированная в начале семнадцатого столетия без доказательства французским математиком Пьером Ферма (Pierre Fermat). Её часто называют "Малой теоремой Ферма", и её не следует путать с пресловутой "Великой теоремой Ферма" - её он также сформулировал без доказательства, а доказана она была только в 1993 году (см. [13.2]). Возможно, у Ферма и было доказательство его "Малой теоремы", однако представляется крайне маловероятным, чтобы он сумел доказать свою "Великую теорему". Швейцарский математик Леонард Эйлер*) в 1760 году опубликовал доказательство Малой теоремы Ферма и получил ее обобщение, известное под именем теоремы Ферма-Эйлера. Именно эта теорема используется в алгоритме зашифрования/расшифрования RSA.
В качестве первого шага поучительно будет рассмотреть несколько примеров, которые иллюстрируют теорему, носящую название
- Глава 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