Введение
Криптография, или тайнопись, известна с незапамятных времен. Нужда в ней возникала всякий раз, когда людям приходило в голову, что-либо скрыть. От противников, обычно, скрывали военные или государственные секреты, а от непосвященных тайные истины и обряды.
Криптографию часто путают с ее сестрой – теорией кодирования. Если вы, просматривая страницу Интернета, случайно, поставите в браузере какой-нибудь экзотический шрифт, то на экране увидите знаменитые «кракозябры», выглядящие как шифртекст. Однако это никакая не криптография. Тот, кто узнает, что означает каждый из экзотических символов, тоже сможет читать «шифртекст» так же как и вы.
Кодирование можно использовать для сокрытия тайны сообщения, но очень ограниченное время, пока способ кодирования не станет общеизвестным. В кодировании сокрытие информации обеспечивается секретностью алгоритма кодирования. В криптографии же тайна обеспечивается секретностью некоторого параметра алгоритма, называемого ключом. Этот параметр может изменяться и его всегда нужно держать в секрете.
Поскольку шифровать приходится тест, звук, изображение, а не просто набор цифр и символов, то, кажется, что чистая математика, а тем более ее самый абстрактный раздел теория чисел, в этом деле может помочь очень мало. К счастью для математиков, и, к сожалению, для потребителей, это совсем не так. В конечном счете, все сводится к математике, к алгебре, к теории чисел.
Представьте себе огромный корабль, перевозящий товары и пассажиров. В нем много всякой всячины, но главное его предназначение – это доставка груза в порт назначения. Корабль перемещается силой винтов, винты вращаются двигателем, а все в движение приводит микровзрыв в маленьком пространстве в головке цилиндра двигателя – это истинное сердце корабля.
Криптографическая система тот же корабль. В ней есть аппаратная часть – шифраторы, компьютеры, вспомогательное оборудование, например, перекодирующее, изображение с видеокамеры в поток бит для шифратора. Программная часть – операционные системы, драйвера, прикладные и сервисные программы. Команда крипто корабля – шифровальщики, администраторы, агенты, охранники, аудиторы, программисты, пользователи и т.д. И все это нужно для того, чтобы крипто контроллер, в который на аппаратном уровне вшит математический алгоритм, выполнил преобразование, переводящее один набор бит в другой.
Конечно, для большинства пользователей не обязательно знать, что именно вшито в этот крипто чип, какие операции запрограммированы в крипто библиотеке Windows или Unix. Но профессиональные защитники информации, конечно, должны об этом иметь представление. Если продолжить сравнение с кораблем. Не обязательно знать всю теорию двигателя внутреннего сгорания, но нужно понимать на каком горючем он работает, для чего нужен карбюратор, и почему под выхлопной трубой плохо дышится.
Все современные крипто алгоритмы используют важные понятия алгебры – векторные пространства, линейные преобразования, неприводимые многочлены, конечные поля, расширения полей и колец, конечные группы, перестановки, эллиптические кривые, признаки простоты простых чисел и т.д.
Чтобы не быть голословным, перечислим понятия, используемые в алгоритме цифровой подписи - основы товарно-денежных отношений в Интернете. Это поле Галуа, эллиптическая кривая над конечным полем, примитивный элемент поля, порождающий элемент группы, простые числа. К обсуждению этих важных алгебраических понятий мы и приступаем.
Главная цель этого обсуждения - показать, как вся теоретико-числовая техника работает в криптографии. Формальности можно уточнить в любом из классических учебников по алгебре и теории чисел. Часть из них приведена в списке литературы.
По поводу строгости в математике всегда велись споры. Грандиозная попытка изложить всю математику на основе аксиом была предпринята Н.Бурбаки во Франции в середине прошлого века. Было написано несколько десятков томов, но проект остался незавершенным. Изучать математику по Бурбаки совершенно невозможно. Но как справочное пособие для людей, уже знающих предмет, она очень полезна.
- Теоретико-числовые методы в криптографии
- Аннотация.
- Предисловие
- Введение
- Глава 1. Основы теории чисел. §1. Теория делимости.
- 1.1. Основные понятия и теоремы.
- 1.2. Наибольший общий делитель.
- 1.3 Нок (наименьшее общее кратное)
- 1.4. Простые числа
- Решето Эратосфена
- 1.5. Единственность разложения на простые сомножители.
- 1.6. Асимптотический закон распределения простых чисел.
- §2. Функция Эйлера.
- 2.1. Мультипликативные функции.
- 2.2. Функция Эйлера.
- §3. Теория сравнений
- 3.1. Свойства сравнений:
- 3.2. Полная система вычетов.
- 3.3. Приведенная система вычетов
- 3.4. Обратный элемент.
- 3.5. Алгебраические структуры на целых числах.
- 3.6. Теоремы Эйлера и Ферма. Тест Ферма на простоту.
- Тест Ферма на простоту
- 3.7. Применение теоремы Эйлера в rsa:
- §4. Сравнения с одним неизвестным
- 4.1. Сравнения первой степени.
- 4.2. Система сравнений первой степени. Китайская теорема об остатках.
- 4.3. Применения китайской теоремы об остатках.
- 4.4. Сравнения любой степени по простому модулю.
- 4.5. Сравнения любой степени по составному модулю.
- §5. Теория квадратичных вычетов
- 5.1. Квадратичные вычеты по простому модулю.
- 5.2. Символ Лежандра. Символ Якоби.
- Свойства символа Лежандра:
- Свойства символа Якоби:
- 5.3. Тест на простоту Соловея-Штрассена.
- Тест Соловея-Штрассена:
- 5.4. Решение квадратичных сравнений по простому модулю.
- 5.5. Квадратичные сравнения по составному модулю.
- 5.6. Тест на простоту Миллера-Рабина.
- 5.7. Связь задач извлечения квадратных корней и факторизации по модулю rsa. Криптосистема Рабина.
- 5.8. Квадраты и псевдоквадраты.
- 5.9. Числа Блюма.
- §6. Первообразные корни и индексы. Порождающий элемент и дискретный логарифм.
- 6.1. Основные понятия и теоремы.
- 6.2. Существование первообразных корней по модулю p.
- 6.3. Первообразные корни по модулям pα, 2pα.
- 6.4. Нахождение первообразных корней по простому модулю.
- 6.5. Существование и количество первообразных корней.
- 6.6. Дискретные логарифмы.
- 6.7. Проблема Диффи-Хеллмана.
- 6.8. Условная стойкость шифра Эль Гамаля.
- §7. Построение доказуемо простых чисел общего и специального вида.
- 7.1. Теорема Сэлфриджа и доказуемо простые числа общего вида на основании полного разложения (n—1).
- 7.2. Теорема Поклингтона и доказуемо простые числа общего вида на основании частичного разложения (n—1).
- 7.3. Числа Ферма. Теорема Пепина.
- 7.4. Числа Мерсенна.
- 7.5. Теорема Диемитко и процедура генерации простых чисел заданной длины гост р 34.10-94.
- Глава 2. Алгебраические основы теории чисел.
- §1. Основные понятия алгебры.
- 1.1. Начальные понятия.
- 1.2. Делимость в кольцах.
- 1.3. Деление с остатком.
- 1.4. Основная теорема арифметики.
- §2. Конечные поля и неприводимые многочлены.
- §3. Кольца многочленов.
- 3.1. Кольца многочленов.
- 3.2. Кольцо многочленов Zp[X].
- 3.3. Конечные поля многочленов.
- Глава 3. Алгоритмы в криптографии и криптоанализе. §1. Элементы теории сложности.
- §2. Алгоритмы факторизации.
- 2.1. Метод пробных делений.
- 2.2. Метод Ферма.
- 2.3. Метод квадратичного решета.
- 2.6. Методы случайных квадратов.
- §3. Алгоритмы дискретного логарифмирования.
- 3.1. Метод прямого поиска.
- 3.2. Шаг младенца – шаг великана.
- 3.4. Алгоритм Полига-Хеллмана.
- 3.5. Алгоритм исчисления порядка (index-calculus algorithm).
- Задачи и упражнения.
- Упражнения к Главе 2.
- Ответы к упражнениям.
- 1. Пояснительная записка
- 1.1. Цели и задачи дисциплины
- 1.2. Требования к уровню освоения содержания дисциплины
- 2. Объем дисциплины и виды учебной работы
- 3. Тематический план изучения дисциплины
- 4. Содержание разделов дисциплины
- 6. Вопросы к экзаменам
- 7.Литература основная:
- Дополнительная:
- Оглавление