От издательства....13
Вступительное слово....14
Предисловие....16
Список аббревиатур....20
Глава 1. Шифрование....23
Классические шифры....24
Шифр Цезаря....24
Шифр Виженера....25
Основы....24
Как работают шифры....26
Перестановка....27
Режим работы....28
Почему классические шифры небезопасны....29
Идеальное шифрование: одноразовый блокнот....30
Шифрование с помощью одноразового блокнота....30
Почему одноразовый блокнот безопасен?....31
Безопасность шифрования....33
Модели атак....33
Цели безопасности....36
Аспекты безопасности....37
Асимметричное шифрование....39
Дополнительные функции шифров....40
Шифрование с аутентификацией....40
Шифрование с сохранением формата....41
Настраиваемое шифрование....42
Полностью гомоморфное шифрование....42
Шифрование, допускающее поиск....42
Какие возможны проблемы....43
Слабый шифр....43
Неправильная модель....44
Для дополнительного чтения....45
Глава 2. Случайность....46
Случайное или неслучайное?....46
Случайность как распределение вероятностей....47
Энтропия: мера неопределенности....48
Генераторы случайных и псевдослучайных чисел....49
Как работает PRNG....50
Вопросы безопасности....51
PRNG Fortuna....52
Криптографически стойкие и нестойкие PRNG....53
Полезность статистических тестов....55
PRNG на практике....56
Генерирование случайных битов в системах на базе Unix....56
Функция CryptGenRandom() в Windows....60
Аппаратный PRNG: RDRAND в микропроцессорах Intel....61
Какие возможны проблемы....62
Недостаточная энтропия на этапе начальной загрузки....62
Плохие источники энтропии....62
Криптографически нестойкие PRNG....63
Дефектная выборка при стойком PRNG....64
Для дополнительного чтения....65
Глава 3. Криптографическая безопасность....66
Определение невозможного....67
Безопасность в теории: информационная безопасность....67
Безопасность на практике: вычислительная безопасность....67
Количественное измерение безопасности....69
Измерение безопасности в битах....69
Полная стоимость атаки....71
Выбор и вычисление уровней безопасности....72
Достижение безопасности....74
Доказуемая безопасность....74
Эвристическая безопасность....77
Генерирование ключей....78
Генерирование симметричных ключей....78
Генерирование асимметричных ключей....79
Защита ключей....80
Какие возможны проблемы....81
Короткие ключи для поддержки унаследованных приложений....81
Ложное чувство безопасности....81
Для дополнительного чтения....82
Глава 4. Блочные шифры....83
Что такое блочный шифр?....84
Цели безопасности....84
Атака по кодовой книге....85
Размер блока....85
Как устроены блочные шифры....86
Раунды блочного шифра....86
Подстановочно-перестановочные сети....87
Сдвиговая атака и ключи раунда....87
Схемы Фейстеля....88
Шифр Advanced Encryption Standard (AES)....89
Внутреннее устройство AES....90
AES в действии....93
Реализация AES....93
Табличные реализации....94
Машинные команды....95
Безопасен ли AES?....96
Режимы работы....97
Режим электронной кодовой книги (ECB)....97
Режим сцепления блоков шифртекста (CBC)....99
Как зашифровать любое сообщение в режиме CBC....101
Режим счетчика (CTR)....103
Какие возможны проблемы....105
Атаки типа встречи посередине....105
Атаки на оракул дополнения....107
Для дополнительного чтения....108
Глава 5. Потоковые шифры....109
Как работают потоковые шифры....110
Потоковые шифры с хранимым состоянием и на основе счетчика....111
Аппаратные потоковые шифры....112
Регистры сдвига с обратной связью....113
Grain-128a....120
A5/1....121
Программные потоковые шифры....124
RC4....125
Salsa20....130
Какие возможны проблемы....135
Повторное использование одноразового числа....135
Дефектная реализация RC4....136
Слабые аппаратно реализованные шифры....137
Для дополнительного чтения....138
Глава 6. Функции хеширования....139
Безопасные хеш-функции....140
И снова непредсказуемость....141
Стойкость к восстановлению прообраза....142
Стойкость к коллизиям....143
Нахождение коллизий....144
Построение функций хеширования....146
Хеш-функции на основе сжатия: построение Меркла–Дамгора....146
Хеш-функции на основе перестановок: функции губки....150
Семейство хеш-функций SHA....151
SHA-1....152
SHA-2....154
Конкурс на звание SHA-3....156
Keccak (SHA-3)....157
Функция хеширования BLAKE 2....159
Какие возможны проблемы....161
Атака удлинением сообщения....161
Обман протоколов доказательства хранения....162
Для дополнительного чтения....163
Глава 7. Хеширование с секретным ключом....164
Имитовставки (MAC)....165
MAC как часть безопасной системы связи....165
Атаки с подделкой и подобранным сообщением....165
Атаки повторным воспроизведением....166
Псевдослучайные функции (PRF)....166
Безопасность PRF....167
Почему PRF более стойкие, чем MAC....167
Создание хешей с секретным ключом по хешам без ключа....168
Построение секретного префикса....168
Построение HMAC....169
Построение секретного суффикса....169
Обобщенная атака против MAC на основе функций хеширования....171
Создание функций хеширования на основе блочных шифров: CMAC....172
Взлом CBC-MAC....172
Исправление CBC-MAC....172
Проектирование специализированных имитовставок....174
Poly1305....174
SipHash....177
Какие возможны проблемы....179
Атаки с хронометражем на верификацию MAC....179
Когда губки протекают....181
Для дополнительного чтения....182
Глава 8. Шифрование с аутентификацией....183
Шифрование с аутентификацией с использованием MAC....184
Шифрование-и-MAC....184
MAC-затем-шифрование....185
Шифрование-затем-MAC....186
Шифры с аутентификацией....186
Шифрование с аутентификацией и ассоциированными данными....187
Какой шифр с аутентификацией считать хорошим?....188
Предотвращение предсказуемости с помощью одноразовых чисел....188
AES-GCM: стандартный шифр с аутентификацией....191
Внутреннее устройство GCM: CTR и GHASH....191
Безопасность GCM....193
Эффективность GCM....194
OCB: шифр с аутентификацией, более быстрый, чем GCM....194
Безопасность OCB....195
Внутреннее устройство OCB....195
Эффективность OCB....196
SIV: самый безопасный шифр с аутентификацией?....196
AEAD на основе перестановки....197
Какие возможны проблемы....199
AES-GCM и слабые хеш-ключи....199
AES-GCM и короткие жетоны....201
Для дополнительного чтения....202
Глава 9. Трудные задачи....203
Вычислительная трудность....204
Измерение времени работы....204
Полиномиальное и суперполиномиальное время....207
Классы сложности....208
Недетерминированное полиномиальное время....209
NP-полные задачи....210
Задача о равенстве P и NP....211
Задача факторизации....213
Факторизация больших чисел на практике....213
Является ли задача факторизации NP-полной?....215
Задача о дискретном логарифме....216
Что такое группа?....216
Трудная задача....217
Какие возможны проблемы....218
Когда разложить на множители легко....218
Небольшие трудные задачи трудными не являются....219
Для дополнительного чтения....220
Глава 10. RSA....222
Математические основания RSA....223
Перестановка с потайным входом в RSA....224
Генерирование ключей и безопасность RSA....225
Шифрование с помощью RSA....227
Взлом RSA-шифрования по учебнику и податливость....227
Стойкое RSA-шифрование: OAEP....227
Подписание с помощью RSA....229
Взлом RSA-подписей по учебнику....230
Стандарт цифровой подписи PSS....231
Подписи на основе полного хеша домена....232
Реализации RSA....233
Алгоритм быстрого возведения в степень....234
Выбор малых показателей степени для ускорения операций с открытым ключом....236
Китайская теорема об остатках....237
Какие возможны проблемы....239
Атака Bellcore на RSA-CRT....239
Разделение закрытых показателей степени или модулей....240
Для дополнительного чтения....241
Глава 11. Протокол Диффи–Хеллмана....243
Функция Диффи–Хеллмана....244
Проблемы протоколов Диффи–Хеллмана....246
Вычислительная задача Диффи–Хеллмана....246
Другие задачи Диффи–Хеллмана....247
Задача Диффи–Хеллмана о распознавании....247
Протоколы совместной выработки ключей....248
Пример протокола выработки ключа, не опирающегося на DH....248
Модели атак на протоколы совместной выработки ключей....249
Производительность....251
Протоколы Диффи–Хеллмана....252
Анонимный протокол Диффи–Хеллмана....252
Протокол Диффи–Хеллмана с аутентификацией....254
Протокол Менезеса–Кью–Вэнстоуна....256
Какие возможны проблемы....258
Пренебрежение хешированием разделяемого секрета....258
Небезопасные параметры группы....259
Унаследованный протокол Диффи–Хеллмана в TLS....259
Для дополнительного чтения....259
Глава 12. Эллиптические кривые....261
Что такое эллиптическая кривая?....262
Эллиптические кривые над множеством целых чисел....263
Сложение и умножение точек....265
Группы эллиптических кривых....268
Задача ECDLP....269
Протокол совместной выработки ключа Диффи–Хеллмана над эллиптическими кривыми....270
Подписание с помощью эллиптических кривых....271
Шифрование с помощью эллиптических кривых....273
Выбор кривой....274
Кривые, рекомендованные NIST....275
Другие кривые....276
Кривая Curve25519....276
Какие возможны проблемы....277
ECDSA с недостаточной случайностью....277
Взлом ECDH с помощью другой кривой....277
Для дополнительного чтения....278
Глава 13. Протокол TLS....279
Целевые приложения и требования....280
Набор протоколов TLS....281
Семейство протоколов TLS и SSL: краткая история....281
TLS в двух словах....282
Сертификаты и удостоверяющие центры....282
Протокол записи....285
Протокол подтверждения связи....286
Криптографические алгоритмы TLS 1.3....288
Улучшения TLS 1.3 по сравнению с TLS 1.2....289
Возобновление сеанса....290
Защита от понижения версии....290
Квитирование с одним периодом кругового обращения....290
Стойкость TLS....291
Аутентификация....291
Секретность прошлого....292
Какие возможны проблемы....293
Скомпрометированный сервер....293
Скомпрометированный удостоверяющий центр....293
Дефекты реализации....294
Скомпрометированный клиент....294
Для дополнительного чтения....295
Глава 14. Квантовая и постквантовая криптография....296
Как работают квантовые компьютеры....297
Квантовые биты....298
Квантовые вентили....300
Квантовое ускорение....303
Экспоненциальное ускорение и задача Саймона....303
Угроза со стороны алгоритма Шора....304
Решение задачи факторизации с помощью алгоритма Шора....305
Алгоритм Гровера....306
Алгоритм Шора и задача о дискретном логарифме....306
Почему так трудно построить квантовый компьютер?....307
Постквантовые криптографические алгоритмы....309
Криптография на основе кодов....309
Криптография на основе решеток....310
Криптография на основе многомерных систем....311
Криптография на основе функций хеширования....313
Какие возможны проблемы....314
Непонятный уровень безопасности....314
Забегая вперед: что, если уже слишком поздно?....315
Проблемы реализации....316
Для дополнительного чтения....316
Предметный указатель....318
В данном практическом руководстве по современному шифрованию анализируются фундаментальные математические идеи, лежащие в основе криптографии. Рассказывается о шифровании с аутентификацией, безопасной случайности, функциях хеширования, блочных шифрах и методах криптографии с открытым ключом, в частности RSA и криптографии на эллиптических кривых.
Каждая глава содержит обсуждение типичных ошибок реализации с примерами из практики и подробное описание возможных проблем, сопровождаемое рекомендациями по их устранению.
Независимо от того, занимаетесь вы разработкой профессионально или только начинаете знакомство с предметом, в этой книге вы найдете полный обзор современной криптографии и ее приложений.