Содержание
Предисловие 16
Как чихать эту книгу 18
Глава 1. Наша философия проектирования 21
Обратная сторона производности 22
Обратная сторона оснащенности 25
Глава 2. Криптография в контексте окружающего мира 26
Роль криптографии 27
Правило слабого звена 28
Противоборствующее окружение 30
Практическая паранойя 31
Критика 32
Модель угроз 34
Криптография — это не решение 36
Криптография очень сложна 37
Криптография -это самая простая часть 38
Рекомендуемая литература 39
Глава 3. Введение в криптографию 40
Шифрование 40
Принцип Кирхгофа 42
Аутентификация 43
Шифрование с открытым ключом 45
Цифровые подписи 47
Инфраструктура открытого ключа 48
Типы атак 50
Только шифрованный текст 50
Известный открытый текст 50
Избранный открытый текст 51
Избранный шифрованный текст 52
Различающие атаки 52
Атаки, в основе которых лежит парадокс задачи о днях рождения 53
Двусторонняя атака 54
Другие типы атак 56
Уровень безопасности 56
Производительность 57
Сложность 59
Часть I. Безопасность сообщений 61
Глава 4. Блочные шифры 62
Что такое блочный шифр? 62
Типы атак 63
Идеальный блочный шифр 65
Определение безопасности блочного шифра 65
Четность перестановки 68
Современные блочные шифры 70
DES 71
AES 74
Serpent 78
Twofish 79
Другие финалисты AES 82
Атаки с помощью решения уравнений 82
Какой блочный шифр выбрать 83
Каким должен быть размер ключа 85
Глава 5. Режимы работы блочных шифров 87
Дополнение 88
Электронная шифровальная книга (ЕСВ) 89
Сцепление шифрованных блоков (СВС) 90
Фиксированный вектор инициализации 90
Счетчик 90
Случайный вектор инициализации 91
Оказия 92
Обратная связь по выходу (OFB) 93
Счетчик (CTR) 95
Новые режимы 97
Какой режим выбрать 98
Утечка информации 99
Вероятность коллизии 101
Как бороться с утечкой информации 102
О наших вычислениях 103
Глава 6. Функции хэширования 104
Безопасность функций хэширования 105
Современные функции хэширования 107
MD5 108
SHA-1 109
SHA-256, SHA-384 и SHA-512 110
Недостатки функций хэширования 111
Удлинение сообщения 111
Коллизия при частичном хэшировании сообщений 112
Исправление недостатков 113
Полное исправление 114
Более эффективное исправление 115
Какую функцию хэширования выбрать 116
Работа на будущее 117
Глава 7. Коды аутентичности сообщений 118
Что такое MAC 118
Идеальная функция вычисления MAC 119
Безопасность MAC 119
СВС-МАС 120
НМАС 122
НМАС или SHAd? 124
UMAC 125
Размер значения 125
Выбор функции 126
Платформенная гибкость 127
Нехватка анализа 128
Зачем тогда нужен UMAC? 128
Какую функцию вычисления MAC выбрать 129
Использование MAC 129
Глава 8. Безопасный канал общения 132
Формулировка проблемы 132
Роли 132
Ключ 133
Сообщения или поток 134
Свойства безопасности 134
Порядок аутентификации и шифрования 136
Структура решения 139
Номера сообщений 139
Аутентификация 140
Шифрование 141
Формат пакете 141
Детали реализации 142
Инициализация 142
Отправка сообщения 143
Получение сообщения 145
Порядок сообщений 146
Альтернативы 147
Заключение 149
Глава 9. Проблемы реализации. Часть I 151
Создание правильных программ 153
Спецификации 153
Тестирование и исправление 154
Халатное отношение 155
Так что же нам делать? 156
Создание безопасного программного обеспечения 157
Как сохранить секреты 158
Уничтожение состояния 158
Файл подкачки 161
Кэш 162
Удерживание данных в памяти 164
Доступ других программ 166
Целостность данных 167
Что делать 168
Качество кеда 169
Простота 169
Модуляризация 170
Утверждения 171
Переполнение буфера 172
Тестирование 173
Атаки с использованием побочных каналов 174
Заключение 175
Часть II. Согласование ключей 177
Глава 10. Генерации случайных чисел 178
ЮЛ Истинно случайные числа 179
Проблемы использования истинно случайных чисел 180
Псевдослучайные числа 181
Истинно случайные числа и генераторы псевдослучайных чисел 182
Модели атак на генератор псевдослучайных чисел 183
Проект Fortuna 185
Генератор 185
Инициализация 188
Изменение начального числа 188
Генерация блоков 189
Генерация случайных данных 190
Скорость работы генератора 191
Аккумулятор 191
Источники энтропии 192
Пулы 1 193
Вопросы реализации 196
Инициализация 199
Получение случайных данных 199
Добавление события 201
Управление файлом начального числа 202
Запись в файл начального числа 203
Обновление файла начального числа 203
Когда нужно считывать и перезаписывать файл начального числа? 204
Архивирование 204
Атомарность операций обновления файловой системы 205
Первая загрузка 206
Так что же делать? 207
Выбор случайных элементов 208
Глава 11. Простые числа 210
Делимость и простые числа 210
Генерация малых простых чисел 213
Арифметика по модулю простого числа 215
Сложение и вычитание 216
Умножение 217
Группы и конечные поля 217
Алгоритм поиска НОД 219
Расширенный алгоритм Евклида 220
Вычисления по модулю 2 221
Большие простые числа 222
Проверка того, является ли число простым 225
Оценивание степеней 229
Глава 12. Алгоритм Диффи-Хеллмана 231
Группы 232
Базовый алгоритм Диффи-Хеллмана 233
Атака посредника 235
"Подводные камни" реализации 237
Надежные простые числа 238
Использование подгрупп меньшего размера 239
Размер 240
Практические правила 243
Что может пойти не так 244
Глава 13. Алгоритм RSА 247
Введение 247
Китайская теорема об остатках 248
Формула Гарнера 249
Обобщение 250
Использование 250
Заключение 252
Умножение по модулю n 252
Определение RSA 253
Создание цифровой подписи с помощью RSA 254
Открытые показатели степеней 254
Закрытый ключ 255
Размер n 257
Генерация ключей RSA 257
'Подводные камни" использования RSA 259
Шифрование 261
Подписи 264
Глава 14. Введение в криптографические протоколы 268
Роли 268
Доверие 269
Риск 271
Стимул 271
Доверие в криптографических протоколах 274
Сообщения и действия 275
Транспортный уровень 275
Идентификация протоколов и сообщений 276
Кодирование и анализ сообщений 277
Состояние выполнения протокола 278
Ошибки 279
Воспроизведение и повторение 281
Глава 15. Протокол согласования ключей 284
Окружение 284
Первая попытка 285
Пусть всегда будут протоколы 287
Соглашение об аутентификации 288
Вторая попытка 289
Третья попытка 290
Окончательная версия протокола 292
Анализ протокола с различных точек зрения 294
Точка зрения пользователя А 294
Точка зрения пользователя Б 295
Точка зрения злоумышленника 295
Взлом ключа 297
Вычислительная сложность протокола 298
Методы оптимизации 299
Сложность протокола 299
Небольшое предупреждение 301
Согласование ключей с помощью пароля 301
Глава 16. Проблемы реализации. Часть II 303
Арифметика больших чисел 303
Вупинг 305
Проверка вычислений алгоритма DH 309
Проверка шифрования RSA 310
Проверка цифровых подписей RSA 310
Заключение 311
Быстрое умножение 311
Атаки с использованием побочных каналов 313
Меры предосторожности 314
Протоколы 316
Выполнение протоколов поверх безопасного канала общения 316
Получение сообщения 317
Время ожидания 319
Часть III. Управление ключами 321
Глава 17. Часы 322
Зачем нужны часы 322
Срок действия 322
Уникальные значения 322
Монотонность 323
Выполнение транзакций в режиме реального времени 324
Использование микросхемы датчика времени 324
Виды угроз 325
Перевод часов назад 325
Остановка часов 326
Перевод часов вперед 327
Создание надежных часов 328
Проблема одного и того же состояния 329
Время 331
Заключение 332
Глава 18. Серверы ключей 333
Основная идея 334
Kerberos 334
Решения попроще 335
Безопасное соединение 336
Создание ключа 337
Обновление ключа 337
Другие свойства 338
Что выбрать 338
Глава 19. PKI: красивая места 339
Краткий обзор инфраструктуры открытого ключа 339
Примеры инфраструктуры открытого ключа 340
Всеобщая инфраструктура открытого ключа 340
Доступ к виртуальным частным сетям 341
Электронные платежи 341
Нефтеперегонный завод 341
Ассоциация кредитных карт 342
Дополнительные детали 342
Многоуровневые сертификаты 342
Срок действия 344
Отдельный центр регистрации 344
Заключение 345
Глава 20. PKI: жестокая реальность 347
Имена 347
Полномочный орган 350
Доверие 351
Непрямая авторизация 352
Прямая авторизация 353
Системы мандатов 354
Измененная мечта 357
Отзыв 358
Список отзыва 358
Быстрое устаревание 360
Отзыв обязателен 360
Где может пригодиться инфраструктура открытого ключа 361
Что выбрать 363
Глава 21. Практические аспекты PKI 364
Формат сертификата 364
Язык разрешений 364
Ключ корневого ЦС 365
Жизненный цикл ключа 366
Почему ключи изнашиваются 369
Так что же нам делать? 370
Глава 22. Хранение секретов 371
Диск 371
Человеческая память 372
Солим и растягиваем 374
Портативное хранилище 377
Идентификатор безопасности 378
Безопасный пользовательский интерфейс 379
Биометрика 381
Однократная регистрация 382
Риск утраты 383
Совместное владение секретом 384
Уничтожение секретов 385
Бумага 385
Магнитное хранилище 386
Полупроводниковые записывающие устройства 388
Часть IV. Разное 389
Глава 23. Стандарты 390
Процесс стандартизации 390
Стандарт 392
Функциональность 392
Безопасность 393
SSL 394
AES: стандартизация на конкурсной основе 395
Глава 24. Патенты 397
Прототип 397
Расширения 398
Расплывчатость описаний 399
Чтение патентов 399
Лицензирование 400
Защищающие патенты 402
Как исправить систему патентования 402
Отречение 403
Глава 25. Привлечение экспертов 404
Благодарности 409
Список основных источников информации 410
Предметный указатель 418