
- •Часть I
- •Глава 1 представляет собой введение в криптографию, описывает множество терминов, в ней кратко рассматривается докомпьютерная криптография.
- •1.1 Терминология
- •1.2 Стеганография
- •1.3 Подстановочные и перестановочные шифры
- •1.4 Простое xor
- •1.5 Одноразовые блокноты
- •1.6 Компьютерные алгоритмы
- •1.7 Большие числа
- •Часть I криптографические протоколы
- •2 Элементы протоколов
- •2.1 Введение в протоколы
- •2.2 Передача информации с использованием симметричной криптографии
- •2.3 Однонаправленные функции
- •2.4 Однонаправленные хэш‑функции
- •2.5 Передача информации с использованием криптографии с открытыми ключами
- •2.6 Цифровые подписи
- •2.7 Цифровые подписи и шифрование
- •2.8. Генерация случайных и псевдослучайных последовательностей
- •3 Основные протоколы
- •3.1 Обмен ключами
- •3.2 Удостоверение подлинности
- •3.3 Удостоверение подлинности и обмен ключами
- •3.4 Формальный анализ протоколов проверки подлинности и обмена ключами
- •3.5 Криптография с несколькими открытыми ключами
- •3.6 Разделение секрета
- •3.7 Совместное использование секрета
- •3.8 Криптографическая защита баз данных
- •4 Промежуточные протоколы
- •4.1 Службы меток времени
- •4.2 Подсознательный канал
- •4.3 Неотрицаемые цифровые подписи
- •4.4 Подписи уполномоченного свидетеля
- •4.5 Подписи по доверенности
- •4.6 Групповые подписи
- •4.7 Подписи с обнаружением подделки
- •4.8 Вычисления с зашифрованными данными
- •4.9 Вручение битов
- •4.10 Подбрасывание "честной" монеты
- •4.11 Мысленный покер
- •4.12 Однонаправленные сумматоры
- •4.13 Раскрытие секретов "все или ничего"
- •4.14 Условное вручение ключей
- •5 Развитые протоколы
- •5.1 Доказательства с нулевым знанием
- •5.2 Использование доказательства с нулевым знанием для идентификации
- •5.3 Слепые подписи
- •5.4 Личностная криптография с открытыми ключами
- •5.5 Рассеянная передача
- •5.6 Рассеянные подписи
- •5.7 Одновременная подпись контракта
- •5.8 Электронная почта с подтверждением
- •5.9 Одновременный обмен секретами
- •6 Эзотерические протоколы
- •6.1 Безопасные выборы
- •6.2 Безопасные вычисления с несколькими участниками
- •6.3 Анонимная широковещательная передача сообщений
- •6.4 Электронные наличные
- •Часть II Криптографические методы
- •7 Длина ключа
- •7.1 Длина симметричного ключа
- •7.2 Длина открытого ключа
- •Табл-4. Разложение на множителя с помощью "квадратичного решета"
- •7.3 Сравнение длин симметричных и открытых ключей
- •7.4 Вскрытие в день рождения против однонаправленных хэш-функций
- •7.5 Каков должны быть длина ключа?
- •8 Управление ключами
- •8.1 Генерация ключей
- •Табл-1. Количество возможных ключей в различных пространствах ключей
- •8.2 Нелинейные пространства ключей
- •8.3 Передача ключей
- •8.4 Проверка ключей
- •8.5 Использование ключей
- •8.6 Обновление ключей
- •8.7 Хранение ключей
- •8.8 Резервные ключи
- •8.9 Скомпрометированные ключи
- •8.10 Время жизни ключей
- •8.11 Разрушение ключей
- •8.12 Управление открытыми ключами
- •9 Типы алгоритмов и криптографические режимы
- •9.1 Режим электронной шифровальной книги
- •9.2 Повтор блока
- •9.3 Режим сцепления блоков шифра
- •9.4 Потоковые шифры
- •9.5 Самосинхронизирующиеся потоковые шифры
- •9.6 Режим обратной связи по шифру
- •9.7 Синхронные потоковые шифры
- •9.8 Режим выходной обратной связи
- •9.9 Режим счетчика
- •9.10 Другие режимы блочных шифров
- •9.11 Выбор режима шифра
- •9.12 Чередование
- •9.13 Блочные шифры против потоковых
- •10 Использование алгоритмов
- •10.1 Выбор алгоритма '
- •10.2 Криптография с открытыми ключами против симметричной криптографии
- •10.3 Шифрование каналов связи
- •10.4 Шифрование данных для хранения
- •10.5 Аппаратный и программный способы шифрования
- •10.6 Сжатие, кодирование и шифрование
- •10.7 Обнаружение шифрования
- •10.8 Как прятать шифротекст в шифротексте
- •10.9 Разрушение информации
- •Часть III Криптографические алгоритмы Математические основы Теория информации
- •Энтропия и неопределенность
- •Норма языка
- •Безопасность криптосистемы
- •Практическое использование теории информации
- •Путаница и диффузия
- •Теория сложности
- •Сложность алгоритмов
- •Сложность проблем
- •Теория чисел
- •Арифметика вычетов
- •Простые числа
- •Наибольший общий делитель
- •Обратные значения по модулю
- •Решение для коэффициентов
- •Малая теорема Ферма
- •Функция Эйлера
- •Китайская теорема об остатках
- •Квадратичные вычеты
- •Символ Лежандра
- •Символ Якоби
- •Целые числа Блюма
- •Генераторы
- •Вычисление в поле Галуа
- •Разложение на множители
- •Квадратные корни по модулю n
- •Генерация простого числа
- •Практические соображения
- •Сильные простые числа
- •Дискретные логарифмы в конечном поле
- •Вычисление дискретных логарифмов в конечной группе
- •Стандарт шифрования данных des (Data Encryption Standard) Введение
- •Разработка стандарта
- •Принятие стандарта
- •Проверка и сертификация оборудования des
- •Описание des
- •Начальная перестановка
- •Преобразования ключа
- •Перестановка с расширением
- •Подстановка с помощью s-блоков
- •Перестановка с помощью p-блоков
- •Заключительная перестановка
- •Дешифрирование des
- •Режимы des
- •Аппаратные и программные реализации des
- •Безопасность des
- •Слабые ключи
- •Ключи-дополнения
- •Алгебраическая структура
- •Длина ключа
- •Количество этапов
- •Проектирование s-блоков
- •Дополнительные результаты
- •Дифференциальный и линейный криптоанализ Дифференциальный криптоанализ
- •Криптоанализ со связанными ключами
- •Линейный криптоанализ
- •Дальнейшие направления
- •Реальные критерии проектирования
- •Варианты des Многократный des
- •Des с независимыми подключами
- •Обобщенный des
- •Des с измененными s-блоками
- •Насколько безопасен сегодня des?
- •Другие блочные шифры
- •Описание Madryga
- •Криптоанализ и Madryga
- •Описание feal
- •Криптоанализ feal
- •Патенты
- •Патенты и лицензии
- •Описание loki91
- •Криптоанализ loki91
- •Патенты и лицензии
- •Патенты
- •Обзор idea
- •Описание idea
- •Скорость idea
- •Криптоанализ idea
- •Режимы работы и варианты idea
- •Патенты и лицензии
- •Безопасность mmb
- •И еще о блочных шифрах гост
- •Описание гост
- •Криптоанализ гост
- •Описание Blowfish
- •Безопасность Blowfish
- •Описание safer k-64
- •Безопасность safer k-64
- •Описание s-Way
- •Другие блочные алгоритмы
- •Теория проектирования блочного шифра
- •Сети Фейстела
- •Простые соотношения
- •Групповая структура
- •Слабые ключи
- •Устойчивость к дифференциальному и линейному криптоанализу
- •Проектирование s-блоков
- •Проектирование блочного шифра
- •Использование однонаправленных хэш-функций
- •Шифр краткого содержания сообщения
- •Безопасность шифров, основанных на однонаправленных хэш-функциях
- •Выбор блочного алгоритма
- •Объединение блочных шифров
- •15.1 Двойное шифрование
- •15.2 Тройное шифрование с двумя ключами
- •Тройное шифрование с тремя ключами
- •Тройное шифрование с минимальным ключом (temk)
- •Режимы тройного шифрования
- •Варианты тройного шифрования
- •15.3 Удвоение длины блока
- •15.4 Другие схемы многократного шифрования
- •Двойной ofb/счетчик
- •Пятикратное шифрование
- •15.5 Уменьшение длины ключа в cdmf
- •15.6 Отбеливание
- •15.7 Многократное последовательное использование блочных алгоритмов
- •15.8 Объединение нескольких блочных алгоритмов
- •Генераторы псевдослучайных последовательностей и потоковые шифры
- •16.1 Линейные конгруэнтные генераторы
- •Объединение линейных конгруэнтных генераторов
- •16.2 Сдвиговые регистры с линейной обратной связью
- •Программная реализация lfsr
- •16.3 Проектирование и анализ потоковых шифров
- •Линейная сложность
- •Корреляционная независимость
- •Другие вскрытия
- •16.4 Потоковые шифры на базе lfsr
- •Генератор Геффа
- •Обобщенный генератор Геффа
- •Генератор Дженнингса
- •Генератор "стоп-пошел" (Stop-and-Go) Both-Piper
- •Чередующийся генератор "стоп-пошел"
- •Двусторонний генератор "стоп-пошел"
- •Пороговый генератор
- •Самопрореживающие (Self-Decimated) генераторы
- •Многоскоростной генератор с внутренним произведением (inner-product)
- •Суммирующий генератор
- •Каскад Голлманна
- •Прореживаемый генератор
- •Самопрореживаемый генератор
- •16.9 Аддитивные генераторы
- •16.11 Алгоритм m
- •Безопасность pkzip
- •Другие потоковые шифры и генераторы настоящих случайных последовательностей
- •Семейство псевдо случайных функций
- •Описание seal
- •Безопасность seal
- •Патенты и лицензии
- •17.4 Сдвиговые регистры с обратной связью по переносу
- •17.5 Потоковые шифры, использующие fcsr
- •Каскадные генераторы
- •Комбинированные генераторы fcsr
- •Каскад lfsr/fcsr с суммированием/четностью
- •Чередующиеся генераторы "стоп-пошел"
- •Прореживаемые генераторы
- •17.6 Сдвиговые регистры с нелинейной обратной связью
- •17.7 Другие потоковые шифры
- •Генератор Плесса (Pless)
- •Генератор на базе клеточного автомата
- •Генератор 1/p
- •Другие схемы
- •17.8 Системно-теоретический подход к проектированию потоковых шифров
- •17.9 Сложностно-теоретический подход к проектированию потоковых шифров
- •Генератор псевдослучайных чисел Шамира
- •Генератор Blum-Micali
- •17.10 Другие подходы к проектированию потоковых шифров
- •Шифр "Рип ван Винкль"
- •Рандомизированный потоковый шифр Диффи
- •Рандомизированный потоковый шифр Маурера
- •17.11 Шифры с каскадом нескольких потоков
- •17.12 Выбор потокового шифра
- •17.13 Генерация нескольких потоков из одного генератора псевдослучайной последовательности
- •17.14 Генераторы реальных случайных последовательностей
- •Использование случайного шума
- •Использование таймера компьютера
- •Измерение скрытого состояния клавиатуры
- •Смещения и корреляции
- •Извлеченная случайность
- •Однонаправленные хэш-функции
- •18.1 Основы
- •Длины однонаправленных хэш-функций
- •Обзор однонаправленных хэш-функций
- •Криптоанализ Snefru
- •Криптоанализ n-хэш
- •Описание md5
- •Безопасность md5
- •18.7 Алгоритм безопасного хэширования (Secure Hash Algorithm, sha)
- •Описание sha
- •Безопасность sha
- •18.10 Другие однонаправленные хэш-функции
- •18.11 Однонаправленные хэш-функции, использующие симметричные блочные алгоритмы
- •Схемы, в которых длина хэш-значения равна длине блока
- •Модификация схемы Davies-Meyer
- •Loki с удвоенным блоком
- •Параллельная схема Davies-Meyer
- •Тандемная (Tandem) и одновременная (Abreast) схемы Davies-Meyer
- •Другие схемы
- •18.12 Использование алгоритмов с открытым ключом
- •18.13 Выбор однонаправленной хэш-функции
- •18.14 Коды проверки подлинности сообщения
- •Алгоритм проверки подлинности сообщения (Message Authenticator Algorithm, maa)
- •Двунаправленный mac
- •Методы Джунемана
- •Однонаправленная хэш-функция mac
- •Mac с использованием потокового шифра
- •Алгоритмы с открытыми ключами
- •19.1 Основы
- •Безопасность алгоритмов с открытыми ключами
- •19.2 Алгоритмы рюкзака
- •Сверхвозрастающие рюкзаки
- •Создание открытого ключа из закрытого
- •Шифрование
- •Дешифрирование
- •Практические реализации
- •Безопасность метода рюкзака
- •Варианты рюкзака
- •Патенты
- •Аппаратные реализации rsa
- •Скорость rsa
- •Программные Speedups
- •Безопасность rsa
- •Вскрытие с выбранным шифротекстом против rsa
- •Вскрытие общего модуля rsa
- •Вскрытие малого показателя шифрования rsa
- •Вскрытие малого показателя дешифрирования rsa
- •Полученные уроки
- •Вскрытие шифрования и подписи с использованием rsa
- •Стандарты
- •Патенты
- •Патенты
- •Подписи ElGamal
- •Шифрование ElGamal
- •Скорость
- •Патенты
- •Другие алгоритмы, основанные на линейных кодах, исправляющих ошибки
- •19.8 Криптосистемы с эллиптическими кривыми
- •19.10 Криптосистемы с открытым ключом на базе конечных автоматов
- •Алгоритмы цифровой подписи с открытым ключом
- •20.1 Алгоритм цифровой подписи (digital signature algorithm, dsa)
- •Реакция на заявление
- •Описание dsa
- •Ускоряющие предварительные вычисления
- •Генерация простых чисел dsa
- •Шифрование ElGamal с dsa
- •Шифрование rsa с dsa
- •Безопасность dsa
- •Вскрытия k
- •Опасности общего модуля
- •Подсознательный канал в dsa
- •Патенты
- •20.2 Варианты dsa
- •20.3 Алгоритм цифровой подписи гост
- •20.4 Схемы цифровой подписи с использованием дискретных логарифмов
- •Безопасность esign
- •Патенты
- •20.7 Клеточные автоматы
- •20.8 Другие алгоритмы с открытым ключом
- •Схемы идентификации
- •Упрощенная схема идентификации Feige-Fiat-Shamir
- •Улучшения
- •Улучшенная схема подписи Fiat-Shamir
- •Другие улучшения
- •Патенты
- •Несколько подписей
- •Протокол проверки подлинности
- •Протокол цифровой подписи
- •Патенты
- •Преобразование схем идентификации в схемы подписи
- •Алгоритмы обмена ключами
- •Diffie-Hellman с тремя и более участниками *
- •Расширенный Diffie-Hellman
- •Обмен ключом без обмена ключом
- •Патенты
- •Протокол "точка-точка"
- •Трехпроходный протокол Шамира
- •Обмен зашифрованными ключами
- •Базовый протокол eke
- •Реализация eke с помощью rsa
- •Реализация eke с помощью ElGamal
- •Реализация eke с помощью Diffie-Hellman
- •Усиление eke
- •Расширенный eke
- •Применения eke
- •Защишенные переговоры о ключе
- •Распределение ключа для конференции и секретная широковещательная передача
- •Распределение ключей для конференции
- •Специальные алгоритмы для протоколов Криптография с несколькими открытыми ключами
- •Алгоритмы разделения секрета
- •Векторная схема
- •Более сложные пороговые схемы
- •Разделение секрета с мошенниками
- •Подсознательный канал
- •Уничтожение подсознательного канала в dsa
- •Другие схемы
- •Неотрицаемые цифровые подписи
- •Преобразуемые неотрицаемые подписи
- •Подписи, подтверждаемые доверенным лицом
- •Вычисления с зашифрованными данными Проблема дискретного логарифма
- •Бросание "честной" монеты
- •Бросание "честной" монеты с помощью квадратных корней
- •Бросание "честной" монеты с помощью возведения в степень по модулю p
- •Бросание "честной" монеты с помощью целых чисел Блюма
- •Однонаправленные сумматоры
- •Раскрытие секретов "все или ничего"
- •Честные и отказоустойчивые криптосистемы Честная схема Diffie-Hellman
- •Отказоустойчивая схема Diffie-Hellman
- •Доказательство с нулевым знанием для дискретного логарифма
- •Доказательство с нулевым знанием для возможности вскрыть rsa
- •Доказательство с нулевым знанием того, что n является числом Блюма
- •Слепые подписи
- •Передача с забыванием
- •Безопасные вычисления с несколькими участниками
- •Пример протокола
- •Вероятностное шифрование
- •Квантовая криптография
- •Часть IV Реальный мир Примеры реализаций
- •Протокол управления секретными ключами компании ibm
- •Модификация
- •Модель Kerberos
- •Как работает Kerberos
- •Атрибуты
- •Сообщения Kerberos версии 5
- •Получение первоначального мандата
- •Получение серверных мандатов
- •Запрос услуги
- •Kerberos версии 4
- •Безопасность Kerberos
- •Лицензии
- •Общая криптографическая архитектура ibm
- •Сертификаты
- •Протоколы проверки подлинности
- •Почта с повышенной секретностью privacy-enhanced mail (pem)
- •Документы pem
- •Сертификаты
- •Сообщения pem
- •Безопасность pem
- •Протокол безопасности сообщений
- •Интеллектуальные карточки
- •Стандарты криптографии с открытыми ключами
- •Универсальная система электронных платежей
- •Безопасный телефон at&t model 3600 telephone security device (tsd)
- •Политика Агентство национальной безопасности (nsa)
- •Коммерческая программа сертификации компьютерной безопасности
- •Национальный центр компьютерной безопасности (ncsc)
- •Национальный институт стандартов и техники
- •Международная ассоциация криптологических исследований
- •Оценка примитивов целостности race (ripe)
- •Условный доступ для Европы (cafe)
- •Профессиональные и промышленные группы, а также группы защитников гражданских свобод Информационный центр по электронной тайне личности (epic)
- •Фонд электронного фронтира (eff)
- •Ассоциация по вычислительной технике (acm)
- •Институт инженеров по электричеству и радиоэлектронике (ieee)
- •Ассоциация производителей программного обеспечения (spa)
- •Шифропанки
- •Патенты
- •Экспортное законодательство сша
- •§ 120.10 Технические данные.
- •§ 120.11 Открытый доступ.
- •§ 120.17 Экспорт.
- •Часть 121- Перечень вооружений сша
- •§ 121.1 Общие положения. Перечень вооружений сша
- •§ 125.2 Экспорт несекретных технических данных.
- •Экспорт и импорт криптографии за рубежом
- •Правовые вопросы
- •Схемы идентификации
- •Упрощенная схема идентификации Feige-Fiat-Shamir
- •Улучшения
- •Улучшенная схема подписи Fiat-Shamir
- •Другие улучшения
- •Патенты
- •Несколько подписей
- •Протокол проверки подлинности
- •Протокол цифровой подписи
- •Патенты
- •Преобразование схем идентификации в схемы подписи
- •Алгоритмы обмена ключами
- •Diffie-Hellman с тремя и более участниками *
- •Расширенный Diffie-Hellman
- •Обмен ключом без обмена ключом
- •Патенты
- •Протокол "точка-точка"
- •Трехпроходный протокол Шамира
- •Обмен зашифрованными ключами
- •Базовый протокол eke
- •Реализация eke с помощью rsa
- •Реализация eke с помощью ElGamal
- •Реализация eke с помощью Diffie-Hellman
- •Усиление eke
- •Расширенный eke
- •Применения eke
- •Защишенные переговоры о ключе
- •Распределение ключа для конференции и секретная широковещательная передача
- •Распределение ключей для конференции
- •Специальные алгоритмы для протоколов Криптография с несколькими открытыми ключами
- •Алгоритмы разделения секрета
- •Векторная схема
- •Более сложные пороговые схемы
- •Разделение секрета с мошенниками
- •Подсознательный канал
- •Уничтожение подсознательного канала в dsa
- •Другие схемы
- •Неотрицаемые цифровые подписи
- •Преобразуемые неотрицаемые подписи
- •Подписи, подтверждаемые доверенным лицом
- •Вычисления с зашифрованными данными Проблема дискретного логарифма
- •Бросание "честной" монеты
- •Бросание "честной" монеты с помощью квадратных корней
- •Бросание "честной" монеты с помощью возведения в степень по модулю p
- •Бросание "честной" монеты с помощью целых чисел Блюма
- •Однонаправленные сумматоры
- •Раскрытие секретов "все или ничего"
- •Честные и отказоустойчивые криптосистемы Честная схема Diffie-Hellman
- •Отказоустойчивая схема Diffie-Hellman
- •Доказательство с нулевым знанием для дискретного логарифма
- •Доказательство с нулевым знанием для возможности вскрыть rsa
- •Доказательство с нулевым знанием того, что n является числом Блюма
- •Слепые подписи
- •Передача с забыванием
- •Безопасные вычисления с несколькими участниками
- •Пример протокола
- •Вероятностное шифрование
- •Квантовая криптография
- •Часть IV Реальный мир Примеры реализаций
- •Протокол управления секретными ключами компании ibm
- •Модификация
- •Модель Kerberos
- •Как работает Kerberos
- •Атрибуты
- •Сообщения Kerberos версии 5
- •Получение первоначального мандата
- •Получение серверных мандатов
- •Запрос услуги
- •Kerberos версии 4
- •Безопасность Kerberos
- •Лицензии
- •Общая криптографическая архитектура ibm
- •Сертификаты
- •Протоколы проверки подлинности
- •Почта с повышенной секретностью privacy-enhanced mail (pem)
- •Документы pem
- •Сертификаты
- •Сообщения pem
- •Безопасность pem
- •Протокол безопасности сообщений
- •Интеллектуальные карточки
- •Стандарты криптографии с открытыми ключами
- •Универсальная система электронных платежей
- •Безопасный телефон at&t model 3600 telephone security device (tsd)
- •Политика Агентство национальной безопасности (nsa)
- •Коммерческая программа сертификации компьютерной безопасности
- •Национальный центр компьютерной безопасности (ncsc)
- •Национальный институт стандартов и техники
- •Международная ассоциация криптологических исследований
- •Оценка примитивов целостности race (ripe)
- •Условный доступ для Европы (cafe)
- •Профессиональные и промышленные группы, а также группы защитников гражданских свобод Информационный центр по электронной тайне личности (epic)
- •Фонд электронного фронтира (eff)
- •Ассоциация по вычислительной технике (acm)
- •Институт инженеров по электричеству и радиоэлектронике (ieee)
- •Ассоциация производителей программного обеспечения (spa)
- •Шифропанки
- •Патенты
- •Экспортное законодательство сша
- •§ 120.10 Технические данные.
- •§ 120.11 Открытый доступ.
- •§ 120.17 Экспорт.
- •Часть 121- Перечень вооружений сша
- •§ 121.1 Общие положения. Перечень вооружений сша
- •§ 125.2 Экспорт несекретных технических данных.
- •Экспорт и импорт криптографии за рубежом
- •Правовые вопросы
Дополнительные результаты
Были предприняты и другие попытки криптоанализировать DES. Один из криптографов искал закономерности, используя спектральные тесты [559]. Другие анализировали последовательность линейных множителей, но их вскрытие потерпело неудачу после восьми этапов [1297, 336, 531]. Неопубликованное вскрытие, выполненное в 1987 году Дональдом Дэвисом (Donald Davies), использовало способ, с помощью которого перестановка с расширением повторяет биты в соседних S-блоках, это вскрытие также оказалось бесполезным после восьми этапов [172, 429].
Дифференциальный и линейный криптоанализ Дифференциальный криптоанализ
В 1990 году Эли Бихам и Ади Шамир ввели понятие дифференциального криптоанализа [167, 168, 171, 172]. Это был новый, ранее неизвестный метод криптоанализа. Используя этот метод, Бихам и Шамир нашли способ вскрытия DES с использованием выбранного открытого текста, который был эффективнее вскрытия грубой силой.
Дифференциальный криптоанализ работает с парами шифротекстов, открытые тексты которых содержат определенные отличия. Метод анализирует эволюцию этих отличий в процессе прохождения открытых текстов через этапы DES при шифровании одним и тем же ключом.
Просто выберем пару открытых текстов с фиксированным различием. Можно выбрать два открытых текста случайным образом, лишь бы они отличались друг от друга определенным образом, криптоаналитику даже не нужно знать их значений. (Для DES термин "различие" определяется с помощью XOR. Для других алгоритмов этот термин может определяться по другому.) Затем, используя различия в получившихся шифротекстах, присвоим различные вероятности различным ключам. В процессе дальнейшего анализа следующих пар шифротекстов один из ключей станет наиболее вероятным. Это и есть правильный ключ.
Подробности гораздо сложнее. На Рис. 12 -5 представлена функция одного этапа DES. Представьте себе пару входов, X и X', с различием X. Выходы, Y и Y' известны, следовательно, известно и различие между ними Y. Известны и перестановка с расширением, и P-блок, поэтому известны A и C. B и B' неизвестны, но их разность B известна и равна A. (При рассмотрении различия XOR Ki с A и A' нейтрализуются.) Пока все просто. Фокус вот в чем: для любого заданного A не все значения C равновероятны. Комбинация A и C позволяет предположить значения битов для A XOR Ki и A' XOR Ki. Так как A и A' известны, это дает нам информацию о Ki.
Рис. 12-5. Функция этапа DES.
Взглянем на последний этап DES. (При дифференциальном криптоанализе начальная и заключительная перестановки игнорируются. Они не влияют на вскрытие, только затрудняя объяснение.) Если мы сможем определить K16, то мы получим 48 битов ключа. (Не забывайте, на каждом этапе подключ состоит из 48 битов 56-битового ключа.) Оставшиеся 8 битов мы можем получить грубым взломом. K16 даст нам дифференциальный криптоанализ.
Определенные различия пар открытых текстов обладают высокой вероятностью вызвать определенные различия получаемых шифротекстов. Эти различия называются характеристиками. Характеристики распространяются на определенное количество этапов и по существу определяют прохождение этих этапов. Существуют входное различие, различие на каждом этапе и выходное различие - с определенной вероятностью.
Эти характеристики можно найти, создав таблицу, строки которой представляют возможные входы XOR (XOR двух различных наборов входных битов), столбцы - возможные результаты XOR, а элементы - сколько раз конкретный результат XOR встречается для заданного входа XOR. Такую таблицу можно сгенерировать для каждого из восьми S-блоков DES.
Например, на Рис. 12 -6a показана характеристика одного этапа. Входное различие слева равно L, оно может быть произвольным. Входное различие справа равно 0. (У двух входов одинаковая правая половина, поэтому их различие - 0.) Так как на входе функции этапа нет никаких различий, то нет различий и на выходе функции этапа. Следовательно, выходное различие левой части - L 0 = L, а выходное различие правой части - 0. Это тривиальная характеристика, она истинна с вероятностью 1.
На Рис. 12 -6б показана менее очевидная характеристика. Снова, различие L левых частей произвольно. Входное различие правых частей равно 0x60000000, два входа отличаются только первым и третьим битами. С вероятностью 14/64 различие на выходе функции этапа равно L 0x00808200. Это означает, что выходное различие левых половин равно L 0x00808200, а выходное различие правых половин - 0x60000000 (с вероятностью 14/64)
Рис. 12-6. Характеристики DES.
Различные характеристики можно объединять. Также, при условии, что этапы независимы, вероятности могут перемножаться. На Рис. 12 -7 объединяются две ранее описанных характеристики. Входное различие слева равно 0x00808200, а справа - 0x60000000. В конце первого этапа входное различие и результат функции этапа нейтрализуют друг друга, и выходное различие равно 0. Это различие поступает на вход второго этапа, окончательное выходное различие слева равно 0x60000000, а справа - 0. Вероятность этой двухэтапной характеристики - 14/64.
Рис. 12-7. Двухэтапная характеристика DES.
Пара открытых текстов, соответствующих характеристике, называется правильной парой, а пара открытых текстов, несоответствующих характеристике - неправильной парой. Правильная пара подсказывает правильный ключ этапа (для последнего этапа характеристики), неправильная пара - случайный ключ этапа.
Чтобы найти правильный ключ этапа, нужно просто собрать достаточное количество предположений. Один из подключей будет встречаться чаще, чем все остальные. Фактически, правильный подключ возникнет из всех случайный возможных подключей.
Итак, дифференциальное основное вскрытие n-этапного DES дает 48-битовый подключ, используемый на этапе n, а оставшиеся 8 битов ключа получаются с помощью грубого взлома.
Но ряд заметных проблем все же остается. Во первых, пока вы не перейдете через некоторое пороговое значение, вероятность успеха пренебрежимо мала. То есть, пока не будет накоплено достаточное количество данных, выделить правильный подключ из шума невозможно. Кроме того, такое вскрытие не практично. Для хранения вероятностей 248 возможных ключей необходимо использовать счетчики, и к тому же для вскрытия потребуется слишком много данных.
Бихам и Шамир предложили свой способ вскрытия. Вместо использования 15-этапной характеристики 16-этапного DES, они использовали 13-этапную характеристику и ряд приемов для получения последних нескольких этапов. Более короткая характеристика с большей вероятностью будет работать лучше. Они также использовали некоторые сложные математические приемы для получения вероятных 56-битовых ключей, которые и проверялись немедленно, таким образом устранялась потребность в счетчиках. Такое вскрытие достигает успеха, как только находится правильная пара. Это позволяет избежать порогового эффекта и получить линейную зависимость для вероятности успеха. Если у вас в 1000 раз меньше пар, то вероятность успеха в 1000 раз меньше. Это звучит ужасно, но это намного лучше, чем порог. Всегда есть некоторая вероятность немедленной удачи.
Результаты являются весьма интересными. В Табл. 12 -14 проведен обзор лучших дифференциальных вскрытий DES с различным количеством этапов [172]. Первый столбец содержит количество этапов. Элементы следующих двух столбца представляют собой количество выбранных или известных открытых текстов, которые должны быть проверены для вскрытия, а четвертый столбец содержит количество действительно проанализированных открытых текстов. В последнем столбце приведена сложность анализа, после обнаружения требуемой пары.
Табл. 12-14. Вскрытие с помощью дифференциального криптоанализа
Количество этапов |
Выбранные открытые тексты |
Известные открытые тексты |
Проанализированные открытые тексты |
Сложность анализа |
8 |
214 |
238 |
4 |
29 |
9 |
224 |
244 |
2 |
232† |
10 |
224 |
243 |
214 |
215 |
11 |
231 |
247 |
2 |
232† |
12 |
231 |
247 |
221 |
221 |
13 |
239 |
252 |
2 |
232† |
14 |
239 |
251 |
229 |
229 |
15 |
247 |
256 |
27 |
237 |
16 |
247 |
255 |
236 |
237 |
† Сложность анализа для этих вариантов может быть значительно уменьшена за счет использования примерно в четыре раза большего количество открытых текстов и метода группировок.
Наилучшее вскрытие полного 16-этапного DES требует 247 выбранных открытых текстов. Можно преобразовать его к вскрытию с известным открытым текстом, но для него потребуется уже 255 известных открытых текстов. При анализе потребуется 237 операций DES.
Дифференциальный криптоанализ эффективен против DES и аналогичных алгоритмов с постоянными S-блоками. Эффективность вскрытие сильно зависит от структуры S-блоков, блоки DES по счастливой случайности были оптимизированы против дифференциального криптоанализа. Для всех режимов работы DES - ECB, CBC, CFB и OFB - вскрытие с дифференциальным криптоанализом имеет одинаковую сложность [172].
Устойчивость DES может быть повышена путем увеличения количества этапов. Дифференциальный криптоанализ с выбранным открытым текстом для DES с 17 или 18 этапами потребует столько же времени, сколько нужно для вскрытия грубой силой [160]. При 19 и более этапах дифференциальный криптоанализ становится невозможным, так как для него потребуется более, чем 264 выбранных открытых текстов - не забудьте, DES использует блоки размером 64 битов, поэтому для него существует только 264 возможных открытых текстов. (В общем случае, вы можете доказать устойчивость алгоритма к дифференциальному криптоанализу, показав, что количество открытых текстов, необходимых для выполнения вскрытия, превышает количество возможных открытых текстов.)
Нужно отметить ряд важных моментов. Во первых, это вскрытие в значительной степени теоретическое. Огромные требования к времени и объему данных, необходимых для выполнения вскрытия с помощью дифференциального криптоанализа, находятся почти для всех вне пределов досягаемости. Чтобы получить нужные данные для выполнения такого вскрытия полного DES, вам придется почти три года шифровать поток выбранных шифротекстов 1.5 Мегабит/с. Во вторых, это в первую очередь вскрытие с выбранным открытым текстом. Оно может быть преобразовано к вскрытию с известным открытым текстом, но вам придется просмотреть все пары "открытый текст/шифротекст" в поисках полезных. В случае полного 16-этапного DES это делает вскрытие чуть менее эффективным по сравнению с грубой силой (вскрытие дифференциальным криптоанализом требует 255.1 операций, а вскрытие грубой силой - 255). Таким образом, правильно реализованный DES сохраняет устойчивость к дифференциальному криптоанализу.
Почему DES так устойчив к дифференциальному криптоанализу? Почему S-блоки оптимизированы так, что усложняют такое вскрытие насколько возможно? Почему используется ровно столько, а не больше этапов? Потому что создатели DES знали о дифференциальном анализе. Дон Копперсмит из IBM недавно писал [373, 374]:
При проектировании использовались преимущества определенных криптоаналитических методов, особенно метода "дифференциального криптоанализа", который не был опубликован в открытой литературе. После дискуссий с NSA было решено, что раскрытие процесса проектирования раскроет и метод дифференциального криптоанализа, мощь которого может быть использована против многих шифров. Это, в свою очередь, сократило бы преимущество Соединенных Штатов перед другими странами в области криптографии.
Ади Шамир откликнулся, предложив Копперсмиту признаться, что с тех пор ему не удалось найти эффективного способа вскрытия DES. Копперсмит предпочел отмолчаться [1426].