- •Криптографическая защита информации
- •Оглавление
- •Раздел 1. Общие подходы к криптографической защите информации
- •Тема 1. Теоретические основы криптографии
- •1.1. Криптография
- •1.2. Управление секретными ключами
- •1.3. Инфраструктура открытых ключей.
- •1.4. Формальные модели шифров
- •1.5. Модели открытых текстов
- •Тема 2. Простейшие и исторические шифры и их анализ
- •Тема 3. Математические основы криптографии
- •3.1. Элементы алгебры и теории чисел
- •3.1.1. Модулярная арифметика. Основные определения.
- •3.1.2. Алгоритм Евклида нахождения наибольшего общего делителя
- •3.1.3. Взаимно простые числа
- •3.1.4. Наименьшее общее кратное
- •3.1.5. Простые числа
- •3.1.6. Сравнения
- •3.1.7. Классы вычетов
- •3.1.8. Функция Эйлера
- •3.1.9. Сравнения первой степени
- •3.1.10. Система сравнений первой степени
- •3.1.11. Первообразные корни
- •3.1.12. Индексы по модулям рk и 2рk
- •3.1.13. Символ Лежандра
- •3.1.14. Квадратичный закон взаимности
- •3.1.15. Символ Якоби
- •3.1.16. Цепные дроби
- •3.1.17. Подходящие дроби
- •3.1.18. Подходящие дроби в качестве наилучших приближений
- •3.2. Группы
- •3.2.1. Понятие группы
- •3.2.2. Подгруппы групп
- •3.2.3. Циклические группы
- •3.2.4. Гомоморфизмы групп
- •3.2.5. Группы подстановок
- •3.2.6. Действие группы на множестве
- •3.3. Кольца и поля
- •3.3.1. Определения
- •3.3.2. Подкольца
- •3.3.3. Гомоморфизмы колец
- •3.3.4. Евклидовы кольца
- •3.3.5. Простые и максимальные идеалы
- •3.3.6. Конечные расширения полей
- •3.3.7. Поле разложения
- •3.3.8. Конечные поля
- •3.3.9. Порядки неприводимых многочленов
- •3.3.10. Линейные рекуррентные последовательности
- •3.3.11. Последовательности максимального периода
- •3.3.12. Задания
- •Тема 4. Классификация шифров
- •4.1. Классификация шифров по типу преобразования
- •4.2. Классификация шифров замены
- •4.3 Шифры перестановки
- •4.3.1. Маршрутные перестановки
- •4.3.2. Элементы криптоанализа шифров перестановки
- •4.4. Шифры замены
- •4.4.1. Поточные шифры простой замены
- •4.4.2. Криптоанализ поточного шифра простой замены
- •4.4.3. Блочные шифры простой замены
- •4.4.4. Многоалфавитные шифры замены
- •4.4.5. Дисковые многоалфавитные шифры замены
- •4.5. Шифры гаммирования
- •4.5.1. Табличное гаммирование
- •4.5.2. О возможности восстановления вероятностей знаков гаммы
- •4.5.3. Восстановление текстов, зашифрованных неравновероятной гаммой
- •5.5.4. Повторное использование гаммы
- •4.5.5. Криптоанализ шифра Виженера
- •Тема 5. Поточные шифры
- •5.1. Принципы построения поточных шифрсистем
- •Примеры поточных шифрсистем
- •5.3. Линейные регистры сдвига
- •5.4. Алгоритм Берлекемпа-Месси
- •5.5. Усложнение линейных рекуррентных последовательностей
- •5.6. Методы анализа поточных шифров
- •6. Блочные шифры
- •6.1. Принципы построения блочных шифров
- •6.2. Примеры блочных шифров
- •6.3. Режимы использования блочных шифров
- •6.4. Комбинирование алгоритмов блочного шифрования
- •6.5. Методы анализа алгоритмов блочного шифрования
- •6.6. Рекомендации по использованию алгоритмов блочного шифрования
- •7. Криптографические хэш-функции
- •7.1. Функции хэширования и целостность данных
- •7.2. Ключевые функции хэширования
- •7.3. Бесключевые функции хэширования
- •7.4. Целостность данных и аутентификация сообщений
- •7.5. Возможные атаки на функции хэширования
- •Тема 8. Криптосистемы с открытым ключом
- •8.1. Шифрсистема rsa
- •8.2. Шифрсистема Эль-Гамаля
- •8.3. Шифрсистема Мак-Элиса
- •8.4. Шифрсистемы на основе "проблемы рюкзака"
Тема 3. Математические основы криптографии
3.1. Элементы алгебры и теории чисел
3.1.1. Модулярная арифметика. Основные определения.
Пусть а и п – натуральные числа. "Разделить число а на число п с остатком" – это значит найти целые числа а и r, удовлетворяющие условию
а = q • п + r, где 0 r < п.
При этом число q называют неполным частным, а r – остатком от деления числа а на число п.
Если остаток r равен нулю, то говорят, что число п делит число а, или, по-другому, п является делителем числа а и обозначают п|а.
Наибольшее целое число, делящее одновременно целые числа а и b, называется их наибольшим делителем и обозначается НОД(a, b) или просто (а, b). Если (а, b)=1, то а и b называются взаимно простыми числами.
3.1.2. Алгоритм Евклида нахождения наибольшего общего делителя
Алгоритм Евклида нахождения наибольшего общего делителя двух целых чисел заключается в проведении следующей последовательности операций деления с остатком:
а = q • b + r, где 0 r <b,
b=q1•r+ r1, где 0 r1<r,
r =q2•r1+ r2, где 0 r2<r1,
r1 =q3•r2+ r3, где 0 r3<r2,
…
rk =qk+2•rk+1+ rk+2, где 0 rk+2<rk+1,
…
rп-1 =qп+1•rп.
Корректное завершение алгоритма гарантируется тем, что остатки от делений образуют строго убывающую последовательность натуральных чисел. Из приведенных равенств следует, что
(а, b) = (b, r) = (r, r1) =... = (rn-1, rn) = rn.
Поэтому наибольший делитель чисел а и b совпадает с rn.
НОД двух чисел равен последнему отличному от нуля остатку в алгоритме Евклида.
Как следствие из алгоритма Евклида, можно получить утверждение, что наибольший делитель целых чисел а и b может быть представлен в виде линейной комбинации этих чисел, т. е. существуют целые числа и и v такие, что справедливо равенство
а • и + b • v = rn.
Пример. Применим алгоритм Евклида к нахождению (175, 77).
(1) 175=77•2+21,
(2) 77=21•3+14,
(3) 21 =14 • 1 + 7,
(4) 14 = 7 • 2.
Последний положительный остаток – r3 = 7. Значит, (175, 77) = 7.
Из предпоследнего соотношения (3) имеем
21 – 14 • 1 =7.
Подставляя сюда вместо 14 его представление из (2) получим
21 – (77 – 21•3) • 1 =7 или 21•4 – 77•1=7.
Подставляя сюда вместо 21 его представление из (1) получим
(175 – 77•2)•4 – 77•1=7 или 175•4 – 77•9=7.
Понятие наибольшего общего делители можно ввести и для нескольких чисел а1,а2,...,ап. Его обозначают (а1,а2,...,ап). Наибольший общий делитель нескольких чисел можно вычислить последовательно. Например, (а1,а2,а3)= ((а1,а2),ап), (а1,а2, а3,а4)= ((а1,а2, а3),а4) и т.д.
3.1.3. Взаимно простые числа
Теорема 2.3.1 (критерий взаимной простоты чисел). Два целых а и b будут взаимно простыми тогда и только тогда, когда найдутся целые и и v такие, что аu + bv =1.
Из критерия взаимной простоты вытекают следующие свойства.
Свойство 1. (a,b)=1, (a,c) =1 => (a,bc) =1.
Свойство 2. а| bc, (a,b)=l => a|c.
Свойство 3. a|с, b|с, (a,b) =1=> ab|c.