- •Часть 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 Экспорт несекретных технических данных.
- •Экспорт и импорт криптографии за рубежом
- •Правовые вопросы
5.6 Рассеянные подписи
Честно говоря, я не могу придумать, чего их можно использовать, но существует два типа рассеянных подписей [346]:
У Алисы есть n различных сообщений. Боб может выбрать одно из них, чтобы Алиса его подписала, и у Алисы не будет способа узнать, что же она подписала.
У Алисы есть единственное сообщение. Боб может выбрать один из n ключей, которым Алиса подпишет сообщение, и Алиса не сможет узнать, какой ключ она использовала.
Идея изящна, я уверен, что где-нибудь она найдет применение.
5.7 Одновременная подпись контракта
Подпись контракта с помощью посредника
Алиса и Боб хотят заключить контракт. Они достигли согласия на словах, но никто не хочет ставить свою подпись, пока не поставлена подпись другого. При личной встрече это не вызывает затруднений - оба подписывают вместе. На расстоянии они могут обратиться к посреднику.
Алиса подписывает копию контракта и посылает ее Тренту.
Боб подписывает копию контракта и посылает ее Тренту.
Трент посылает сообщение и Алисе, и Бобу, сообщающее, что другой партнер подписал контракт.
Алиса подписывает две копии контракта и посылает их Бобу.
Боб подписывает обе копии контракта, сохраняет одну для себя, и посылает другую Алисе.
Алиса и Боб сообщают Тренту, что у каждого из них есть подписанная обоими партнерами копия контракта.
Трент уничтожает свои две копии контракта, с единственной подписью под каждым.
Этот протокол работает, потому что Трент защищает любую из сторон от мошенничества другой. Если Боб попытается отказаться от подписи под контрактом на этапе (5), Алиса может обратиться к Тренту за копией контракта, уже подписанного Бобом. Если Алиса попытается отказаться от подписи под контрактом на этапе (4), Боб может сделать то же самое. Когда Трент сообщает, что он получил оба контракта на этапе (3), Алиса и Боб узнают, что другой партнер уже подписал контракт. Если Трент не получит оба контракта на этапах (1) и (2), он уничтожает имеющуюся у него копию, и ни одна из сторон не связана более обязательствами контракта.
Одновременная подпись контракта без посредника (лицом к лицу)
Если Алиса и Боб встречаются лицом к лицу, они могут подписать контракт следующим образом [1244]:
Алиса пишет первую букву своего имени и передает контракт Бобу.
Боб пишет первую букву своего имени и передает контракт Алисе.
Алиса пишет вторую букву своего имени и передает контракт Бобу.
Боб пишет вторую букву своего имени и передает контракт Алисе.
Это продолжается до тех пор, пока Алиса и Боб не напишут свои имена полностью.
Если пренебречь очевидной проблемой протокола (имя Алисы длиннее имени Боба), то он работает достаточно хорошо. Написав только одну букву из подписи, Алиса знает, что никакой судья не станет заставлять ее выполнять условия контракта. Но написанная буква - это акт доброй воли, и Боб отвечает аналогичным действием.
Когда каждая из сторон напишет несколько букв подписи, судья вероятно сможет убедиться, что обе стороны подписали контракт. Хотя, если вглядеться, ситуация весьма туманна. Конечно же, то, что контракт не вступает в силу после написания первых букв, так же очевидно как и то, что контракт становится действующим после того, как стороны напишут свои имена. В каком месте протокола стороны оказываются связанными контрактом? Написав половину своих имен? Две трети? Три четверти?
Так как ни Алиса, ни Боб не знают точно, с какого момента начинает действовать контракт, то у каждого из них на протяжении всего протокола есть опасение, что для него или для нее контракт уже вступил в силу. Не существует этапа протокола, на котором Боб смог бы сказать: "Вы написали четыре буквы подписи, а я только три. Вы связаны контрактом, а я нет." У Боба нет причин прекращать выполнение протокола. Более того, чем дольше стороны выполняют протокол, тем больше вероятность того, что судья решит, что контракт вступил в силу. И снова, нет причины прерывать протокол. В конце концов, они оба хотели подписать контракт, они просто не хотели подписывать его раньше другого партнера.
Одновременная подпись контракта без посредника (без личной встречи)
В этом протоколе используется такая же неопределенность [138]. Алиса и Боб по очереди движутся детскими шажками к подписанию протокола.
В этом протоколе Алиса и Боб обмениваются рядом подписанных сообщений вида: "Я согласен, что с вероятностью p я связан условиями контракта."
Получатель сообщения может предъявить его судье и, с вероятностью p, судья признает контракт подписанным.
Алиса и Боб согласовывают дату окончания подписания контракта.
Алиса и Боб договариваются о различии вероятностей, которым они собираются пользоваться. Например, Алиса может решить, что ее вероятность быть связанной условиями контракта не должна превышать вероятность Боба больше, чем на 2 процента. Обозначим различие Алисы как a, различие Боба - как b.
Алиса посылает Бобу подписанное сообщение с вероятностью p = a.
Боб посылает Алисе подписанное сообщение с p = a + b.
Пусть p - это вероятность из сообщения, полученного Алисой от Боба на предыдущем этапе. Алиса посылает Бобу подписанное сообщение с p' = p + a или 1, смотря что меньше.
Пусть p - это вероятность из сообщения, полученного Бобом от Алисы на предыдущем этапе. Боб посылает Алисе подписанное сообщение с p' = p + b или 1, смотря что меньше.
Алиса и Боб продолжают выполнять этапы (5) и (6) до тех пор, пока они оба не получат сообщения с p = 1 или пока не наступит согласованная на этапе (1) дата.
По мере выполнения протокола и Алиса, и Боб соглашаются, что они оказываются связанными контрактом со все большей и большей вероятностью. Например, Алиса может определить свое a как 2 процента, а Боб свое b - как 1 процент. (Лучше бы они выбрали большие приращения, а то мы застрянем на этом месте.) В первом сообщении Алиса сообщает, что она связана контрактом с вероятностью 2 процента. Боб может ответить, что он связан контрактом с вероятностью 3 процента. Следующее сообщение Алисы может утверждать, что она связана контрактом с вероятностью 5 процента и так далее, пока вероятности обоих не достигнут 100 процентов.
Если и Алиса, и Боб завершили протокол к оговоренной дате, то все прекрасно. В противном случае, любая из сторон может предъявить контракт судье вместе с подписанным последним сообщением другой стороны. Прежде, чем просмотреть контракт, судья случайным образом выбирает число между 0 и 1. Если это число меньше вероятности, подписанной второй стороной, то обе стороны связаны контрактом. Если это число больше вероятности, подписанной второй стороной, то обе стороны не связаны контрактом. (Затем судья сохраняет использованное число на случай решения другого вопроса, касающегося того же контракта.) Именно это и означает "быть связанным контрактом с вероятностью p".
Это базовый протокол, но могут использоваться и дополнительные усложнения. Судья может принимать решение в отсутствие одной из сторон. Решение судьи связывает контрактом либо обе стороны, либо ни одну из них. Не существует ситуации, когда одна из сторон связана контрактом, а другая - нет. Более того, протокол завершится, как только одна из сторон захочет иметь хоть немного большую, чем другая, вероятность быть связанной контрактом.
Одновременная подпись контракта без посредника (с помощью криптографии)
Этот криптографический протокол использует тот же принцип детских шажков [529]. Для определенности используется DES, хотя вместо него может быть любой симметричный алгоритм.
И Алиса, и Боб случайным образом выбирают 2n ключей DES, сгруппированных попарно. В парах нет ничего особенного, это просто способ группировки для данного протокола.
И Алиса, и Боб создают n пар сообщений, Li и Ri, например, "Это левая половина моей i-ой подписи" и "Это правая половина моей i-ой подписи". Идентификатор, i, меняется от 1 до n. В каждое сообщение, вероятно, также будет входить цифровая подпись контракта и метка времени. Контракт считается подписанным, если другая сторона может предъявить обе половины, Li и Ri, одной пары подписей.
И Алиса, и Боб шифруют свои пары сообщений парами ключей DES, левое сообщение - левым ключом в паре , а правое - правым.
Алиса и Боб посылают друг другу свои пачки из 2n шифрованных сообщений, поясняя, какие сообщения какими половинами каких пар являются.
Алиса и Боб посылают друг другу все пары ключей, используя протокол рассеянной передачи для каждой пары. То есть, Алиса посылает Бобу независимо для каждой из n пар ключей либо ключ, использованный для шифрования левого сообщения, либо ключ, использованный для шифрования правого сообщения. Боб делает то же самое. Они могут посылать свои половинки по очереди, или сначала один может послать все 100, а потом другой - это не имеет значения. Теперь и у Алисы, и у Боба есть по одному ключу из каждой пары, но никто не знает, какие из половинок получил партнер.
Алиса и Боб, используя полученные ключи, расшифровывают те половинки сообщений, которые они могут расшифровать. Они убеждаются, что расшифрованные сообщения правильны.
Алиса и Боб посылают друг другу первые биты всех 2n ключей DES.
Алиса и Боб повторяют этап (7) для вторых битов всех 2n ключей DES, затем третьих битов и так далее, пока все биты всех ключей DES не будут переданы.
Алиса и Боб расшифровывают оставшиеся половинки сообщений, и контракт подписан.
Алиса и Боб обмениваются закрытыми ключами, использованными для протокола рассеянной передачи на этапе (5), и каждый из них убеждается в отсутствии мошенничества.
Почему Алисе и Бобу нужно выполнить всю эту нудную последовательность действий? Предположим, что Алиса хочет смошенничать, и посмотрим, что получится. На этапах (4) и (5) Алиса могла бы разрушить протокол, послав Бобу ничего не значащие строки. Боб обнаружил бы это на этапе (6) при попытке расшифровать полученные половинки. Боб с полной безопасностью может остановиться до того, как Алиса сможет расшифровать любую из пар сообщений Боба.
Если бы Алиса была очень хитрой, она могла бы разрушить только половину протокола. Она могла бы послать одну половинку из каждой пары правильно, а вместо второй отправить бессмысленные строки. Вероятность Боба получить правильную половинку составит только 50 процентов, поэтому в половине случаев мошенничество Алисы удастся, но только для одной пары. Если бы использовались только две пары, этот способ мошенничества удастся в 25 процентах случаев. Вот почему n должно быть велико. Алисе необходимо точно угадать результат n протоколов рассеянной передачи, ее вероятность добиться этого составляет 1 шанс из 2n. Если n = 10, у Алисы 1 шанс из 1024 обмануть Боба.
Алиса также может отправить Бобу случайные биты на этапе (8). Возможно, Боб не узнает, что она послала ему случайные биты, пока не получит весь ключ и не попытается расшифровать половинки сообщения. Но снова вероятность на стороне Боба. Он уже получил половину ключей, и Алиса не знает какую. Если n достаточно велико, Алиса наверняка пришлет ему бессмысленный бит для ключа, который у него уже есть, и он немедленно узнает, что она пытается его обмануть.
Возможно, Алиса будет выполнять этап (8) до тех пор, пока она не получит достаточно битов ключей для вскрытия грубым взломом, и затем прекратит передачу битов. Длина ключа DES - 56 битов. Если она получила 40 из 56 битов, ей останется перебрать 216, или 65536, ключей для дешифровки сообщения, а эта задача, определенно, по силам современным компьютерам. Но Боб получит ровно столько же битов ее ключей (или, в худшем случае, на один бит меньше), следовательно, он сможет сделать то же самое. У Алисы нет другого выбора, кроме как продолжать следовать протоколу.
Идея в том, что Алисе придется играть честно, потому что вероятность обмануть Боба слишком мала. В конце протокола у обеих сторон есть n подписанных пар сообщений, любое из которых достаточно для правильной подписи.
У Алисы есть только один способ смошенничать - она может послать Бобу одинаковые сообщения на этапе (5). Боб не сможет обнаружить этого до окончания протокола, но он сможет использовать стенограмму протокола, чтобы убедить судью в двуличности Алисы.
Протоколы этого типа имеют два слабых места [138]. Во первых, проблема возникает, если вычислительная мощь одной стороны гораздо больше, чем у другой. Если, например, Алиса может выполнить вскрытие грубым взломом быстрее Боба, то она рано прекратит передачу битов на этапе (8) и раскроет ключи Боба самостоятельно. Бобу, которому для таких же действий просто не хватит времени, не повезет.
Во вторых, проблема возникает, если одна из сторон прекращает протокол раньше времени. Если Алиса оборвет выполнение протокола, оба столкнутся с одинаковыми вычислительными проблемами, но у не хватит ресурсов завершить вычисления к нужному сроку. Проблема появляется, к примеру, если контракт определяет, что Алиса должна сделать что-то через неделю, а она прерывает протокол в тот момент, когда Бобу для вычисления ее подписи потребуется целый год расчетов. Реальная сложность при этом заключается в близкой дате предмета контракта, к которой процесс не будет завершен одной или обеими подписывающими сторонами.
Эти проблемы существуют также для протоколов разделов 5.8 и 5.9.
