Содержание
Предисловие
Часть I. Начальные математические сведения.
1.
Арифметика остатков, группы, конечные поля и вероятность
1.1.
Арифметика остатков
1.2.
Конечные поля
1.3.
Основные алгоритмы
1.4.
Вероятность
2.
Эллиптические кривые
2.1.
Введение
2.2.
Групповой закон
2.3.
Эллиптические кривые над конечными полями
2.4.
Проективные координаты
2.5.
Сжатие точек
Часть II. Симметричное кодирование
3.
Исторические шифры
3.1.
Введение
3.2.
Шифр сдвига
3.3.
Шифр замены
3.4.
Шифр Видженера
3.5.
Шифр перестановки
3.6.
Лента однократного использования
3.7.
Роторные машины и загадка
4.
Теоретическая защита информации
4.1.
Введение
4.2.
Вероятность и шифры
4.3.
Энтропия
4.4.
Фиктивные ключи и расстояние единственности
5.
Симметричные шифры
5.1.
Введение
5.2.
Стандарт шифрования данных
5.3.
Шифр Райндаэль
5.4.
Метод операций
5.5.
Коды аутентификации сообщений
5.6.
Современные поточные шифры
6.
Симметричное распределение ключей
6.1.
Распределение ключей
6.2.
Распределение секретных ключей
6.3.
Формальные подходы к сравнению протоколов
Часть III. Криптосистема с открытым ключом и подписи
7.
Основные алгоритмы кодирования с открытым ключом
7.1.
Криптосистема с открытым ключом
7.2.
Кандидаты на односторонние функции
7.3.
Криптосистема РСА
7.4.
Кодирование ЭльГамаль
7.5.
Кодирование Рабина
8.
Разложение на простые множители и тесты на разложимость
8.1.
Простые числа
8.2.
Алгоритмы разложения на простые множители
8.3.
Современные методы разложения
8.4.
Решето числового поля
9.
Дискретные логарифмы
9.1.
Введение
9.2.
Полиг-Хеллман
9.3.
Метод “Шаги ребенка – шаги гиганта”
9.4.
Методы урезанного типа
9.5.
Подэкспоненциальные методы для конечных полей
9.6.
Специальные методы для эллиптических кривых
10.
Распределение ключей, схемы подписи и хеш-функции
10.1.
Распределение ключей Диффи-Хеллмана
10.2.
Схемы цифровой подписи
10.3.
Хаш-функции
10.4.
Алгоритм цифровой подписи
10.5.
Подписи Шнорра
10.6.
Подписи Найберга-Руппеля
10.7.
Соглашение заверения подписи
11.
Проблемы реализации (implementation issue)
11.1.
Введение
11.2.
Алгоритмы возведения в степень
11.3.
Возведение в степень в РСА
11.4.
Возведение в степень в ДСА
11.5.
Сверхточная арифметика
11.6.
Арифметика конечных полей
12.
Получение надежного открытого ключа
12.1.
Обобщения на цифровые подписи
12.2.
Цифровое удостоверение и PKI
12.3.
Примерные приложения PKI
12.4.
Другие приложения доверия третьей стороны
12.5.
Скрытые удостоверения
12.6.
Подлинность основной криптографии
13.
Протоколы
13.1.
Введение
13.2.
Схемы передач
13.3.
Доказательства с нулевым разглашением
13.4.
Система электронного голосования
Часть IV. Проблемы надежности
14.
Атаки на криптосистемы с открытым ключом
14.1.
Введение
14.2.
Атака Винера на РСА. Решетки и решеточная редукция
14.3.
Основная решеточная атака на РСА
14.4.
Атака на частичный ключ
14.5.
Анализ дефектов
15.
Определения безопасности
15.1.
Безопасность кодирования
15.2.
Безопасность реальных алгоритмов кодирования
15.3.
Семантически надежная система
15.4.
Безопасность подписи
16.
Сложность теоретических подходов
16.1.
Классы полиномиальной сложности
16.2.
Криптосистема рюкзака
16.3.
Битовая безопасность
16.4.
Случайная само-редукция
16.5.
Алгоритмы случайности
17.
Доказуемая безопасность: со случайным оракулом
17.1.
Введение
17.2.
Безопасность алгоритмов подписей
17.3.
Безопасность алгоритмов кодирования
18.
Доказуемая безопасность: без случайного оракула
18.1.
Введение
18.2.
Некоторые новые задачи
18.3.
Схемы подписей
18.4.
Алгоритмы кодирования
Приложение А. Основная математическая терминология
А.1. Множества
А.2. Отношения
А.3. Функции
А.4. Перестановки
А.5. Операции
А.6. Группы
А.7. Кольца
А.8. Поля
А.9. Векторные пространства
Приложение Б. Примеры на языке Java
Б.1. Блоковые шифры
Б.2. Кодирование с открытым ключом
Б.3. Хеш-функции
Б.4. Цифровые подписи
Б.5. Доказательства с нулевым разглашением и передачи
Предметный указатель
Часть I
Предварительные математические сведения
Прежде чем вплотную заняться криптографией, нам необходимо осветить некоторые основные математические факты. Многое из того, что изложено в этой части, можно найти в университетском курсе «Дискретная математика» или учебниках, посвященных программированию. Поэтому Вам далеко не все параграфы покажутся незнакомыми. Читателю, желающему узнать более формализованные определения или понятия, предназначено приложение А, расположенное в конце книги.
Часть II
Симметричное шифрование
Кодирование в большинстве случаев опирается на блочные и групповые шифры, которые служат типичными примерами симметричных алгоритмов шифрования. Кроме того, исторические (т.е. использовавшиеся до 1960г.) шифры, симметричные по своей природе, служат основой многих современных криптосистем.
Главный недостаток симметричного шифрования связан с проблемой распределения секретных ключей между пользователями. В этой части рассказано о теории и практике симметричных криптосистем, но сначала мы познакомимся с докомпьютерными шифрами.
Часть III
Криптосистемы с открытым ключом и подписи
Техника шифрования с открытым ключом, разработанная для решения проблемы распределения ключей и аутентификации, имеет много преимуществ перед симметричным шифрованием. Главное из них состоит в том, что стороны, даже не подозревавшие о существовании друг друга до первого письма, могут успешно обмениваться информацией, зашифрованной с помощью криптосистемы с открытым ключом. Кроме того, она дает возможность сторонам подписывать сообщения, такие как электронные заказы или финансовые поручения. В результате шифрование данных с открытым ключом обеспечивает существование технологий электронной торговли.
Часть IV
Проблемы стойкости
Описав основные примитивы криптографии с открытым ключом, в которых у нас возникала потребность, покажем теперь, что их недостаточно. Слабые места возникают потому, что разработчики приемов часто не задумываются о том, как примитивы будут использоваться на практике. Чтобы разобраться в этом, мы сначала выделим некоторый список возможных атак и попытаемся сформулировать понятие стойкости по отношению к ним. Анализ ситуации покажет нам, что основные примитивы действительно не вполне стойки.
Осознав реальное положение дел, обратимся к двум подходам, позволяющим строить стойкие системы. Первый, основанный на чистой теории сложности, обречен на неудачу, поскольку чистая теория сложности имеет дело с самым плохим случаем, а не со средними, которые и встречаются на практике. Второй подход, связанный с доказуемой стойкостью, оказывается более подходящим для практических целей. Он, фактически, имеет высокое влияние на современную криптографию. Последний подход тоже происходит из теории сложности, но работает со средним, а не с наихудшим случаем.
Приложение А
Основная математическая терминология
Приложение Б
Примеры на языке Java
Дополнение 1
Зашифрованные поисковые системы
Дополнение 2
Сетевая система с абсолютной стойкостью
Предварительные математические сведения
Прежде чем вплотную заняться криптографией, нам необходимо осветить некоторые основные математические факты. Многое из того, что изложено в этой части, можно найти в университетском курсе «Дискретная математика» или учебниках, посвященных программированию. Поэтому Вам далеко не все параграфы покажутся незнакомыми. Читателю, желающему узнать более формализованные определения или понятия, предназначено приложение А, расположенное в конце книги.
Часть II
Симметричное шифрование
Кодирование в большинстве случаев опирается на блочные и групповые шифры, которые служат типичными примерами симметричных алгоритмов шифрования. Кроме того, исторические (т.е. использовавшиеся до 1960г.) шифры, симметричные по своей природе, служат основой многих современных криптосистем.
Главный недостаток симметричного шифрования связан с проблемой распределения секретных ключей между пользователями. В этой части рассказано о теории и практике симметричных криптосистем, но сначала мы познакомимся с докомпьютерными шифрами.
Часть III
Криптосистемы с открытым ключом и подписи
Техника шифрования с открытым ключом, разработанная для решения проблемы распределения ключей и аутентификации, имеет много преимуществ перед симметричным шифрованием. Главное из них состоит в том, что стороны, даже не подозревавшие о существовании друг друга до первого письма, могут успешно обмениваться информацией, зашифрованной с помощью криптосистемы с открытым ключом. Кроме того, она дает возможность сторонам подписывать сообщения, такие как электронные заказы или финансовые поручения. В результате шифрование данных с открытым ключом обеспечивает существование технологий электронной торговли.
Часть IV
Проблемы стойкости
Описав основные примитивы криптографии с открытым ключом, в которых у нас возникала потребность, покажем теперь, что их недостаточно. Слабые места возникают потому, что разработчики приемов часто не задумываются о том, как примитивы будут использоваться на практике. Чтобы разобраться в этом, мы сначала выделим некоторый список возможных атак и попытаемся сформулировать понятие стойкости по отношению к ним. Анализ ситуации покажет нам, что основные примитивы действительно не вполне стойки.
Осознав реальное положение дел, обратимся к двум подходам, позволяющим строить стойкие системы. Первый, основанный на чистой теории сложности, обречен на неудачу, поскольку чистая теория сложности имеет дело с самым плохим случаем, а не со средними, которые и встречаются на практике. Второй подход, связанный с доказуемой стойкостью, оказывается более подходящим для практических целей. Он, фактически, имеет высокое влияние на современную криптографию. Последний подход тоже происходит из теории сложности, но работает со средним, а не с наихудшим случаем.
Приложение А
Основная математическая терминология
Приложение Б
Примеры на языке Java
Дополнение 1
Зашифрованные поисковые системы
Дополнение 2
Сетевая система с абсолютной стойкостью