Глава 3. Введение в криптографию
39
3.1 Шифрование
39
3.1.1
Принцип Кирхгофа
41
3.2 Аутентификация
42
3.3 Шифрование с открытым ключом
44
3.4 Цифровые подписи
46
3.5 Инфраструктура открытого ключа
47
3.6 Типы атак
49
3.6.1
Только шифрованный текст
49
3.6.2
Известный открытый текст
49
3.6.3
Избранный открытый текст
50
3.6.4
Избранный шифрованный текст
51
3.6.5
Различающие атаки
51
3.6.6
Атаки, в основе которых лежит парадокс задачи
о днях рождения
52
6
Содержание
7
3.6.7
Двусторонняя атака
53
3.6.8
Другие типы атак
55
3.7 Уровень безопасности
55
3.8 Производительность
56
3.9 Сложность
58
Часть I
Безопасность сообщений
61
Глава 4. Блочные шифры
62
4.1 Что такое блочный шифр?
62
4.2 Типы атак
63
4.3 Идеальный блочный шифр
65
4.4 Определение безопасности блочного шифра
65
4.4.1
Четность перестановки
68
4.5 Современные блочные шифры
70
4.5.1
DES
71
4.5.2
AES
74
4.5.3
Serpent
78
4.5.4
Twofish
79
4.5.5
Другие финалисты AES
82
4.5.6
Атаки с помощью решения уравнений
82
4.5.7
Какой блочный шифр выбрать
83
4.5.8
Каким должен быть размер ключа
85
Глава 5. Режимы работы блочных шифров
87
5.1 Дополнение
88
5.2 Электронная шифровальная книга (ECB)
89
5.3 Сцепление шифрованных блоков (CBC)
90
5.3.1
Фиксированный вектор инициализации
90
5.3.2
Счетчик
90
5.3.3
Случайный вектор инициализации
91
5.3.4
Оказия
92
5.4 Обратная связь по выходу (OFB)
93
5.5 Счетчик (CTR)
95
5.6 Новые режимы
97
5.7 Какой режим выбрать
98
5.8 Утечка информации
99
5.8.1
Вероятность коллизии
101
5.8.2
Как бороться с утечкой информации
102
5.8.3
О наших вычислениях
103
8
Содержание
Глава 6. Функции хэширования
104
6.1 Безопасность функций хэширования
105
6.2 Современные функции хэширования
107
6.2.1
MD5
108
6.2.2
SHA-1
109
6.2.3
SHA-256, SHA-384 и SHA-512
110
6.3 Недостатки функций хэширования
111
6.3.1
Удлинение сообщения
111
6.3.2
Коллизия при частичном хэшировании сообщений
112
6.4 Исправление недостатков
113
6.4.1
Полное исправление
114
6.4.2
Более эффективное исправление
115
6.5 Какую функцию хэширования выбрать
116
6.6 Работа на будущее
117
Глава 7. Коды аутентичности сообщений
118
7.1 Что такое MAC
118
7.2 Идеальная функция вычисления MAC
119
7.3 Безопасность MAC
119
7.4 CBC-MAC
120
7.5 HMAC
122
7.5.1
HMAC или SHA
d
?
124
7.6 UMAC
125
7.6.1
Размер значения
125
7.6.2
Выбор функции
126
7.6.3
Платформенная гибкость
127
7.6.4
Нехватка анализа
128
7.6.5
Зачем тогда нужен UMAC?
128
7.7 Какую функцию вычисления MAC выбрать
129
7.8 Использование MAC
129
Глава 8. Безопасный канал общения
132
8.1 Формулировка проблемы
132
8.1.1
Роли
132
8.1.2
Ключ
133
8.1.3
Сообщения или поток
134
8.1.4
Свойства безопасности
134
8.2 Порядок аутентификации и шифрования
136
8.3 Структура решения
139
8.3.1
Номера сообщений
139
8.3.2
Аутентификация
140
8.3.3
Шифрование
141
Содержание
9
8.3.4
Формат пакета
141
8.4 Детали реализации
142
8.4.1
Инициализация
142
8.4.2
Отправка сообщения
143
8.4.3
Получение сообщения
145
8.4.4
Порядок сообщений
146
8.5 Альтернативы
147
8.6 Заключение
149
Глава 9. Проблемы реализации. Часть I
150
9.1 Создание правильных программ
152
9.1.1
Спецификации
152
9.1.2
Тестирование и исправление
153
9.1.3
Халатное отношение
154
9.1.4
Так что же нам делать?
155
9.2 Создание безопасного программного обеспечения
156
9.3 Как сохранить секреты
157
9.3.1
Уничтожение состояния
157
9.3.2
Файл подкачки
160
9.3.3
Кэш
161
9.3.4
Удерживание данных в памяти
163
9.3.5
Доступ других программ
165
9.3.6
Целостность данных
166
9.3.7
Что делать
167
9.4 Качество кода
168
9.4.1
Простота
168
9.4.2
Модуляризация
169
9.4.3
Утверждения
170
9.4.4
Переполнение буфера
171
9.4.5
Тестирование
172
9.5 Атаки с использованием побочных каналов
173
9.6 Заключение
174
Часть II
Согласование ключей
175
Глава 10. Генерация случайных чисел
176
10.1 Истинно случайные числа
177
10.1.1 Проблемы использования истинно случайных чисел
178
10.1.2 Псевдослучайные числа
179
10.1.3 Истинно случайные числа и генераторы
псевдослучайных чисел
180
10.2 Модели атак на генератор псевдослучайных чисел
181
10
Содержание
10.3 Проект Fortuna
183
10.4 Генератор
183
10.4.1 Инициализация
186
10.4.2 Изменение начального числа
186
10.4.3 Генерация блоков
187
10.4.4 Генерация случайных данных
188
10.4.5 Скорость работы генератора
189
10.5 Аккумулятор
189
10.5.1 Источники энтропии
190
10.5.2 Пулы
191
10.5.3 Вопросы реализации
194
10.5.4 Инициализация
197
10.5.5 Получение случайных данных
197
10.5.6 Добавление события
199
10.6 Управление файлом начального числа
200
10.6.1 Запись в файл начального числа
201
10.6.2 Обновление файла начального числа
201
10.6.3 Когда нужно считывать и перезаписывать файл
начального числа?
202
10.6.4 Архивирование
202
10.6.5 Атомарность операций обновления файловой системы
203
10.6.6 Первая загрузка
204
10.7 Так что же делать?
205
10.8 Выбор случайных элементов
206
Глава 11. Простые числа
208
11.1 Делимость и простые числа
208
11.2 Генерация малых простых чисел
211
11.3 Арифметика по модулю простого числа
213
11.3.1 Сложение и вычитание
214
11.3.2 Умножение
215
11.3.3 Группы и конечные поля
215
11.3.4 Алгоритм поиска НОД
217
11.3.5 Расширенный алгоритм Евклида
218
11.3.6 Вычисления по модулю 2
219
11.4 Большие простые числа
220
11.4.1 Проверка того, является ли число простым
223
11.4.2 Оценивание степеней
227
Содержание
11
Достарыңызбен бөлісу: |