Обозначения | 8 |
Введение | 14 |
Глава 1. | Из истории криптографии | 17 |
| 1.1. | Исторические шифры | 17 |
| | 1.1.1. | Простейшие подстановочные шифры (шифры простой замены) | 18 |
| | 1.1.2. | Полиалфавитные подстановочные шифры | 23 |
| | 1.1.3. | Простейшие шифры перестановки | 27 |
| | Упражнения | 33 |
| | Задачи | 36 |
| 1.2. | Криптоанализ классических шифров | 41 |
| | 1.2.1. | Криптоанализ шифров перестановки | 41 |
| | 1.2.2. | Криптоанализ шифров простой замены | 42 |
| | 1.2.3. | Криптоанализ полиалфавитных криптосистем | 45 |
| | Упражнения | 50 |
| | Задачи | 54 |
| 1.3. | Задачи криптографических олимпиад | 61 |
| | Примеры решения задач | 61 |
| | Задачи | 66 |
Глава 2. | Простейшие симметричные криптосистемы | 74 |
| 2.1. | Аффинные криптосистемы | 74 |
| | Упражнения | 80 |
| | Задачи | 83 |
| 2.2. | Криптоанализ аффинных криптосистем | 85 |
| | Упражнения | 88 |
| | Задачи | 90 |
Глава 3. | Шифрующие матрицы | 94 |
| 3.1. | Алгебра матриц и аффинные матричные криптосистемы | 94 |
| | Упражнения | 104 |
| | Задачи | 107 |
| 3.2. | Криптоанализ аффинных матричных криптосистем | 111 |
| | Упражнения | 116 |
| | Задачи | 118 |
Глава 4. | Система RSA. Дискретный логарифм | 123 |
| 4.1. | Система RSA и ее модификации | 123 |
| | 4.1.1. | Криптосистема без передачи ключей | 125 |
| | 4.1.2. | Криптосистема с открытым ключом | 128 |
| | 4.1.3. | Электронная подпись | 130 |
| | Упражнения | 133 |
| | Задачи | 135 |
| 4.2. | Дискретный логарифм | 138 |
| | 4.2.1. | Показатели, первообразные корни и индексы | 138 |
| | 4.2.2. | Метод перебора | 140 |
| | 4.2.3. | Метод согласования | 142 |
| | 4.2.4. | Метод Сильвестра–Полига–Хеллмана | 144 |
| | 4.2.5. | Алгоритм исчисления порядка | 148 |
| | Упражнения | 151 |
| | Задачи | 152 |
Глава 5. | Вычислительные алгоритмы и их трудоемкость | 156 |
| 5.1. | Трудоемкость арифметических действий | 156 |
| | 5.1.1. | Системы счисления | 157 |
| | 5.1.2. | Символ "О"-большое | 160 |
| | 5.1.3. | Анализ трудоемкости арифметических действий | 161 |
| | 5.1.4. | Классификация алгоритмов по их трудоемкости | 167 |
| | Упражнения | 169 |
| | Задачи | 173 |
| 5.2. | Простейшие арифметические алгоритмы и их трудоемкость | 175 |
| | 5.2.1. | Алгоритм Евклида | 175 |
| | 5.2.2. | Расширенный алгоритм Евклида | 179 |
| | 5.2.3. | Бинарный алгоритм Евклида | 180 |
| | 5.2.4. | Расширенный бинарный алгоритм | 184 |
| | 5.2.5. | Решение неопределенных уравнений первой степени | 185 |
| | 5.2.6. | Алгоритм возведения в степень по модулю n | 188 |
| | Упражнения | 191 |
| | Задачи | 193 |
Глава 6. | Простые и псевдопростые числа | 195 |
| 6.1. | Простые числа. Критерии простоты | 195 |
| | Упражнения | 200 |
| | Задачи | 202 |
| 6.2. Вероятностные тесты простоты. Псевдопростые числа | 204 |
| | 6.2.1. | Тест Ферма | 205 |
| | 6.2.2. | Тест Соловея–Штрассена | 209 |
| | 6.2.3. | Тест Миллера–Рабина | 212 |
| | Упражнения | 215 |
| | Задачи | 217 |
| 6.3. | Детерминированные тесты простоты. Генерация больших простых чисел | 219 |
| | 6.3.1. | Проверка простоты с использованием числа n-1 | 220 |
| | 6.3.2. | Проверка простоты с использованием числа n+1 | 222 |
| | 6.3.3. | Генерация простых чисел | 226 |
| | Упражнения | 227 |
| | Задачи | 228 |
Глава 7. | Факторизация натуральных чисел | 232 |
| 7.1. | Классические методы факторизации | 232 |
| | 7.1.1. | Метод пробного деления | 233 |
| | 7.1.2. | Метод Ферма | 234 |
| | Упражнения | 238 |
| | Задачи | 238 |
| 7.2. | Современные методы факторизации. Вскрытие системы RSA | 240 |
| | 7.2.1. | Метод Полларда–Флойда | 240 |
| | 7.2.2. | (P-1)-метод Полларда | 242 |
| | 7.2.3. | Вскрытие системы RSA | 244 |
| | Упражнения | 258 |
| | Задачи | 259 |
Глава 8. | Псевдослучайные последовательности над конечным полем | 261 |
| 8.1. | Поля и кольца классов вычетов. Характеристика конечного поля | 262 |
| | 8.1.1. | Кольца и поля. Примеры | 262 |
| | 8.1.2. | Натуральные кратные элементов поля и характеристика поля | 265 |
| | 8.1.3. | Расширения конечного поля. Существование конечного поля | 266 |
| | 8.1.4. | Мультипликативная группа конечного поля | 268 |
| | Упражнения | 270 |
| | Задачи | 271 |
| 8.2. | Кольцо многочленов над полем F. Построение конечного поля | 273 |
| | 8.2.1. | Неприводимые над полем многочлены | 275 |
| | 8.2.2. | Сравнимость многочленов и построение конечного поля Fpn | 278 |
| | 8.2.4. | Примитивные многочлены над конечным полем | 284 |
| | Упражнения | 285 |
| | Задачи | 287 |
| 8.3. | Линейные рекуррентные последовательности над конечным полем | 290 |
| | 8.3.1. | Псевдослучайные последовательности | 290 |
| | 8.3.2. | Последовательности над конечным полем | 292 |
| | 8.3.3. | Линейные рекуррентные последовательности | 293 |
| | 8.3.4. | Аннулирующие многочлены | 296 |
| | Упражнения | 299 |
| | Задачи | 301 |
Глава 9. | Задания для организации промежуточного и итогового контроля | 303 |
| 9.1. | Контрольные вопросы | 303 |
| 9.2. | Типовые задания обязательного минимума по основам криптографии | 305 |
| 9.3. | Задания для творческих лабораторных работ к разделу "Из истории криптографии" | 312 |
| | 9.3.1. | Таблица Виженера | 312 |
| | 9.3.2. | Шифр по книге | 313 |
| | 9.3.3. | Частотный анализ | 313 |
| | 9.3.4. | Решетки Кардано | 317 |
| | 9.3.5. | Двойная перестановка | 318 |
| 9.4. | Задания для лабораторных работ к разделу "Простейшие симметричные криптосистемы. Шифрующие матрицы" | 318 |
| | 9.4.1. | Аффинные криптосистемы | 318 |
| | 9.4.2. | Шифрующие матрицы | 319 |
| | 9.4.3. | Содержание отчета | 320 |
| 9.5. | Задания для лабораторных работ к разделу "Система RSA. Дискретный логарифм" | 320 |
| | 9.5.1. | Система без передачи ключей | 320 |
| | 9.5.2. | Система с открытым ключом | 321 |
| | 9.5.3. | Электронная подпись | 321 |
| | 9.5.4. | Дискретный логарифм | 322 |
| | 9.5.5. | Содержание отчета | 322 |
| 9.6. | Задания для лабораторных работ к разделу "Вычислительные алгоритмы и их трудоемкость" | 323 |
| | 9.6.1. | Алгоритм Евклида, его модификации и их трудоемкость | 323 |
| | 9.6.2. | Применение алгоритма Евклида к решению неопределенных уравнений первой степени | 323 |
| | 9.6.3. | Содержание отчета | 325 |
| 9.7. | Задания для лабораторных работ к разделу "Простые и псевдопростые числа" | 326 |
| | 9.7.1. | Простейшие алгоритмы проверки чисел на простоту | 326 |
| | 9.7.2. | Вероятностные алгоритмы проверки чисел на простоту | 326 |
| | 9.7.3. | Содержание отчета | 327 |
| 9.8. | Задания для лабораторных работ к разделу "Факторизация натуральных чисел" | 328 |
| | 9.8.1. | Классические методы факторизации | 328 |
| | 9.8.2. | Методы факторизации Полларда | 328 |
| | 9.8.3. | Содержание отчета | 328 |
| 9.9. | Задания для лабораторной работы к разделу "Псевдослучайные последовательности над конечным полем" | 330 |
| | 9.9.1. | Содержание отчета | 330 |
Глава 10. | Таблицы | 332 |
| 10.1. | Таблицы числовых эквивалентов символов русского и английского алфавитов | 332 |
| | 10.2. | Таблицы Виженера | 333 |
| | 10.3. | Таблицы частотности | 334 |
| | 10.4. | Таблицы простых чисел | 338 |
| | 10.5. | Таблицы неприводимых и примитивных многочленов | 346 |
| | 10.6. | Таблицы индексов | 348 |
Ответы и решения | 355 |
Словарь терминов | 359 |
Литература | 363 |
Деза Елена Ивановна
Доктор педагогических наук (2012), кандидат физико-математических наук (1993). В 1983 г. окончила математический факультет Московского государственного педагогического института имени В. И. Ленина (МГПИ), в 1992 г. — аспирантуру по кафедре теории чисел МГПИ (ныне — Московский педагогический государственный университет, МПГУ), в 2010 г. — докторантуру по кафедре теоретической информатики и дискретной математики МПГУ. С 1988 г. — преподаватель кафедры теории чисел математического факультета МПГУ, с 2006 г. — профессор кафедры теоретической информатики и дискретной математики математического факультета МПГУ. Область научных интересов: теория чисел, дискретная математика, дидактика высшей школы. Автор нескольких монографий, более 10 учебных и учебно-методических пособий, более 150 научных публикаций.