Обозначения 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
Литература