- •Часть 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 Экспорт несекретных технических данных.
- •Экспорт и импорт криптографии за рубежом
- •Правовые вопросы
Универсальная система электронных платежей
Универсальная система электронных платежей (Universal Electronic Payment System, UEPS) представляет собой банковское приложение, использующее интеллектуальные карточки, первоначально разработанное для сельской Южной Африки, но позднее принятое основными банковскими группами этой страны. К началу 1995 года в ЮАР было выпущено около 2 миллионов карточек. Эта система также принята в Намибии, и развертывается по крайней мере одним российским банком.
Система позволяет использовать безопасные дебитные карточки, подходящие для регионов, в которых плохая телефонная сеть делает невозможной диалоговую проверку. Карточки есть и покупателей, и у продавцов, покупатели могут использовать свои карточки для перевода денег продавцам. Продавец может воспользоваться своей карточкой, чтобы позвонить в банк и поместить деньги на свой банковский счет, покупатель может воспользоваться своей карточкой, чтобы позвонить в банк и перевести деньги на свою карточку. Нет необходимости заботиться об анонимности, нужно обеспечить только защиту от мошенничества.
Вот как выглядит протокол связи между покупателем Алисой и продавцом Бобом (В действительности, Алиса и Боб просто вставляют свои карточки в машину и ожидают выполнения транзакции.) Когда Алиса впервые получает свою карточку, она получает и пару ключей, K1 и K2, банк вычисляет их, используя ее имя и некоторую секретную функцию. Только в карточки продавцов встроены секретные средства, необходимые для вычисления ключей пользователей.
Алиса посылает Бобу свое имя, A, его имя, B, и случайное число RA, шифруя их с помощью DES: сначала ключом K2, затем K1. Она также посылает свое имя открытым текстом.
A, ( (A,B,RA))
Боб вычисляет K1 и K2 по имени Алисы. Он расшифровывает сообщение, убеждается, что A и B правильны, затем шифрует незашифрованную вторую половину сообщения Алисы ключом K2.
(A,B,RA)
Боб не посылает это сообщение Алисе, 56 битов шифротекста становятся ключом K3. Боб посылает Алисе свое имя, ее имя и случайное число, RB, шифруя их с помощью DES: сначала ключом K3, затем K1.
( (B,A,RВ))
Алиса аналогичным образом вычисляет K3 и расшифровывает сообщение Боба, убеждаясь, что A и B правильны, затем шифрует незашифрованную вторую половину сообщения Боба ключом K3.
(B,A,RВ)
Алиса не посылает это сообщение Бобу, 56 битов шифротекста становятся ключом K4. Затем Алиса посылает Бобу свое имя, его имя проверочное значение C. Это проверочное значение содержит имена отправителя и получателя, дату, контрольную сумму, количество и два MAC. Все это шифруется DES: сначала ключом K4, затем K1. Один из MAC может быть проверен банком Алисы, а второй может быть проверен только расчетно-кассовым центром. Алиса уменьшает свой счет на соответствующее значение.
( (A,B,С))
Боб аналогичным образом вычисляет K4. При условии, что все имена совпадают, и правильно выполнена проверка, он принимает платеж.
Великолепным нововведением в этом протоколе является то, что каждое сообщение зависит от предыдущего. Каждое сообщение выступает удостоверением всех предыдущих сообщений. Это означает, что повторить старое сообщение никому не удастся, получатель просто никогда не расшифрует его. Мне нравится эта идея, и я уверен, что она получит широкое применение, как только станет широко известна.
Другой разумной вещью в этом протоколе - навязывание правильной реализации. Если разработчик приложения неправильно реализует протокол, он просто не будет работать.
Обе карточки сохраняют записи каждой транзакции. Когда карточки рано или поздно установят диалоговое соединение с банком (продавец - положить деньги на счет, а покупатель - снять со счета), банк извлечет эти записи для последующего контроля.
Аппаратура изготавливается устойчивой к взлому, чтобы помешать любому из участников испортить данные. Алиса не сможет изменить значение своей карточки. Подробная запись обеспечивает данные для обнаружения и запрещения мошеннических транзакций. В карточках используются универсальные секреты - ключи MAC в карточках покупателей, функции для преобразования имен пользователей в K1 и K2 - но считается, что решение обратной задачи для этих секретов достаточно трудно.
Эта схема, конечно же, несовершенна, но она безопаснее бумажных чеков и обычных дебитных карточек. Источником угрозы мошенничества являются не военные враги, а покупатели и продавцы. UEPS предоставляет защиту от таких злоупотреблений.
Обмен сообщения является прекрасным примером устойчивого протокола: В каждом сообщении присутствую имена обеих сторон, включая информацию, уникальную для сообщения, каждое сообщение явным образом зависит от всех предыдущих.
CLIPPER
Микросхема Clipper (известная также как MYK-78T) - это разработанная в NSA, устойчивая к взлому микросхема, предназначенная для шифрования переговоров голосом. Это одна из двух схем, реализующих правительственный Стандарт условного шифрования (Escrowed Encryption Standard, EES) [1153]. VLSI Technologies, Inc. изготовила микросхему, а Mykotronx, Inc. запрограммировала ее. Сначала все микросхемы Clipper будут входить в Безопасное телефонное устройство Model 3600 AT&T (см. раздел 24.18). Микросхема реализует алгоритм шифрования Skipjack (см. раздел 13.12,), разработанный NSA секретный алгоритм с шифрованием секретным ключом, только в режиме OFB.
Самым противоречивым моментом микросхемы Clipper, и EES в целом, является протокол условного вручения ключей (см. раздел 4.14). У каждой микросхемы есть специальный, ненужный для сообщений, ключ. Этот ключ используется для шифрования копии ключа сообщений каждого пользователя. В ходе процесса синхронизации передающая микросхема Clipper генерирует и посылает принимающей Поле доступа для выполнения закона (Law Enforcement Access Field, LEAF). LEAF содержит копию текущего сеансового ключа, зашифрованного специальным ключом (называемым ключом модуля). Это позволяет правительственным прослушивателям получить сеансовый ключ и раскрыть открытый текст разговора.
По словам директора NIST [812]:
Предусматривается, что система "с условно врученным ключом" обеспечит использование микросхемы Clipper для защиты законопослушных американцев. В каждом устройстве, содержащем микросхему будет два уникальных "ключа", два числа, которые понадобятся уполномоченным правительственным органам для дешифрирования сообщений, зашифрованных устройством. При изготовлении устройства оба ключа будут помещены порознь в двух базах данных " условно врученных ключей", контролируемых Генеральным прокурором. Доступ к этим ключам будет разрешен только правительственным чиновникам с законным разрешением подключить подслушивающее устройство.
Правительство также собирается поощрять широкое распространение таких телефонных аппаратов, но никто не знает, что может произойти с базами данных условно врученных ключей.
Помимо политических аспектов, стоит поговорить и о внутренней структуре LEAF [812, 1154, 1594, 459, 107, 462]. LEAF - это строка, включающая достаточно информации, чтобы при обеспечении правопорядка можно было раскрыть сеансовый ключ Ks при условии, что два условно получивших ключи учреждения будут действовать сообща. LEAF содержит 32-битовый идентификатор модуля U, уникальный для каждой микросхемы Clipper. Оно также содержит текущий 80-битовый сеансовый ключ, зашифрованный уникальным ключом модуля микросхемы KU, и 16-битовую контрольную сумму C, называемую идентификатором условного вручения. Контрольная сумма представляет собой функцию сеансового ключа, IV и возможно другой информации. Эти три поля шифруются фиксированным общим ключом KF, общим для всех взаимодействующих микросхем Clipper. Общий ключ, используемые режимы шифрования, детали контрольной суммы и точная структура LEAF засекречены. Возможно это поле похоже на что-то подобное:
KU вводится в микросхемы Clipper при изготовлении. Этот ключ затем разделяется (см. раздел 3.5) и хранится в двух базах данных условно врученных ключей, охраняемых двумя различными учреждениями.
Чтобы Ева могла извлечь Ks из LEAF, она должна сначала расшифровать LEAF ключом KF и получить U. Затем она должна получить постановление суда для каждого из учреждений условного вручения, каждое из которых возвращает половину KU для данного U. Ева выполняет XOR обеих половин и получает KU, затем она использует KU для получения Ks, и Ks - для подслушивания разговора.
Контрольная сумма должна помешать нарушению этой схемы, принимающая микросхема Clipper не может выполнить дешифрирование, если контрольная сумма неправильна. Однако существует лишь 216 возможных значений контрольной суммы, и фальшивое LEAF с правильной контрольной суммой, но неправильным ключом, может быть найдено примерно за 42 минуты [187]. Но это не очень поможет подслушать разговор, ведущийся с помощью Clipper. Так как протокол обмена ключами не является частью микросхемы Clipper, 42-минутное вскрытие грубой силой должно быть выполнено после обмена ключами, оно не может быть выполнено до телефонного звонка. Такое вскрытие может работать при передаче факсов или при использовании карточки Fortezza (см. раздел 24.17).
Предположительно микросхема Clipper должна противостоять инженерному вскрытию, выполненному "изощренным, хорошо" [1154], но по слухам в Sandia National Laboratories успешно провели исследование одной из микросхем. Даже если эти слухи ложны, я подозреваю, что самым крупным мировым производителям такое инженерное вскрытие вполне по силам, и его срок является только вопросом ресурсов и морали.
С этой темой связано множество вопросов о тайне личности. Многочисленные группы защиты гражданских свобод ведут активную компанию против любого механизма условного вручения ключей, который даст правительству право подслушивать граждан. Вся подлость в том, что, ходя эта схема никогда не проходила через Конгресс, NIST опубликовал EES в качестве FIPS [1153], обойдя болезненный законодательный процесс. Сейчас все выглядит, как если бы EES тихо и медленно умирал, но стандарты способны продолжать свою ползучую деятельность.
В Табл. 22 -2 перечислены различные организации, участвующие в этой программе. Как насчет идеи, чтобы оба учреждения условного вручения относились только к исполнительной ветви власти? Что вы скажете об учреждениях условного вручения, которые по сути ничего не знают о заявках на подслушивание и могут только слепо одобрять их? И что насчет идее о принятии правительством секретного алгоритма в качестве коммерческого стандарта?
Табл. 22-2. Организации, участвующие в EES.
Министерство юстиции - Спонсор системы, владелец общего ключа
NIST - Руководство программой, хранитель условно врученной части ключа
FBI - Пользователь-дешифровщик, владелец общего ключа
Министерство финансов - Хранитель условно врученной части ключа
NSA - Разработчик программы
В любом случае, использование Clipper породит немало проблем при обращении в суд. Не забывайте, Clipper работает только в режиме OFB. Что бы вам иное не говорили, этот режим не обеспечивает целостности или проверке подлинности. Предположим, что Алиса предстала перед судом, и частью доказательств является телефонный разговор, зашифрованный микросхемой Clipper. Алиса утверждает, что она никогда не звонила, и голос - не ее. Алгоритм сжатия речи настолько плох, что опознать голос Алисы трудно, но обвинение утверждает, что, так как расшифровать разговор можно только с помощью условно врученного ключа Алисы, этот звонок был сделан с ее телефона.
Алиса заявляет, что разговор был подделан в соответствии с [984, 1339]: даны шифротекст и открытый текст, объединив их с помощью XOR, можно получить ключевой поток. Затем этот ключевой поток можно объединить с помощью XOR с абсолютно другим открытым текстом, получая фальшивый шифротекст, который затем может быть преобразован в фальшивый открытый текст, который подается на дешифратор микросхемы. Правдив он или нет, этот довод может легко посеять сомнение в жюри присяжных, которые не сочтут телефонный разговор доказательством.
Другой способ вскрытия, называемый Втискиванием (Squeeze), позволяет Алисе выдать себя за Боба. Вот как это происходит [575]: Алиса звонит Бобу, используя Clipper. Она сохраняет копию его LEAF вместе с сеансовым ключом. Затем она звонит Кэрол (про которую известно, что ее подслушивают). При установке ключа Алиса делает сеансовый ключ идентичным тому, который она использовала для разговора с Бобом. Для этого потребуется взломать телефон, но это нетрудно. Затем вместо того, чтобы послать свое LEAF, она посылает LEAF Боба. Это правильное LEAF, поэтому телефон Кэрол ничего не заметит. Теперь она может говорить Кэрол все, что захочет - когда полиция расшифрует LEAF, она обнаружит, что оно принадлежит Бобу. Даже если Алисе не удастся выдать себя за Боба, ему придется доказывать свою невиновность в суде, что вполне может оправдать применение подобной схемы.
Органы охраны правопорядка Соединенных Штатов не должны тратить свое время, занимаясь сбором информации в уголовных расследованиях, которую нельзя использовать в суде. Даже если условное вручение ключей и являлось бы неплохой идеей, Clipper - это не лучший способ реализации этой идеи.
CAPSTONE
Capstone (известный также как MYK-80) - это другая разработанная NSA СБИС, реализующая Стандарт условного шифрования правительства США [1153]. Capstone реализует следующие функции [1155, 462]:
Алгоритм Skipjack в любом из четырех основных режимов: ECB, CBC, CFB и OFB.
Алгоритм обмена ключами (Key Exchange Algorithm, KEA) на базе открытых ключей, скорее всего Diffie-Hellman.
Алгоритм цифровой подписи (Digital Signature Algorithm, DSA). *
Алгоритм безопасного хэширования (Secure Hash Algorithm, SHA). j
Алгоритм возведения в степень для общего назначения.
Генератор случайных чисел с использованием истинно шумового источника.
Capstone обеспечивает криптографические возможности, необходимые для безопасной электронной торговли и других компьютерных приложений. Первым применением Capstone является карточка PCMCIA, названная Fortezza. (Сначала она называлась Tessera, пока на это не пожаловалась компания Tessera, Inc..)
NSA изучило возможность удлинения контрольной суммы LEAF в Capstone в версиях для карточек для того, чтобы помешать ранее рассмотренному вскрытию LEAF. Вместо этого была добавлена возможность выполнять перезапуск карточки после 10 неправильных LEAF. Меня это не впечатлило - время поиска правильного LEAF только на 10 процентов, до 46 минут.
