- •Часть 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 Развитые протоколы
5.1 Доказательства с нулевым знанием
А вот другая история:
Алиса: |
"Я знаю пароль компьютера Федеральной Резервной Системы, компоненты секретного соуса МакДональдс и одержание 4-го тома Дональда Кнута". |
Боб: |
"Нет, ты не знаешь". |
Алиса: |
"Нет, я знаю". |
Боб: |
"Не знаешь". |
Алиса: |
"Нет, знаю". |
Боб: |
"Докажи". |
Алиса: |
"Хорошо, я скажу тебе". Она шепчет Бобу на ухо. |
Боб: |
"Это интересно. Теперь я тоже это знаю и собираюсь рассказать это все Вашингтон Пост". |
Алиса: |
"Оооой". |
К несчастью, обычно Алиса может доказать что-нибудь Бобу, только рассказав ему все. Но тогда он тоже получит все сведения. Затем Боб может выложить полученные сведения кому угодно, и Алиса ничего не сможет с этим поделать. (В литературе для описания этих протоколов часто используются различные персонажи. Пегги обычно доказывает, а Виктор проверяет. Именно эти имена появляются в используемых примерах вместо Алисы и Боба.)
Используя однонаправленные функции, Пегги сможет провести доказательство с нулевым знанием [626]. Этот протокол доказывает Виктору, что у Пегги действительно есть информация, но не дает Виктору не малейшей возможности узнать, что это за информация.
Эти доказательства принимают форму интерактивного протокола. Виктор задает Пегги ряд вопросов. Если Пегги знает секрет, то она ответит на все вопросы правильно. Если секрет ей неизвестен, у нее есть некоторая вероятность - 50 процентов в следующих примерах - ответить правильно. После примерно 10 вопросов Виктор убедится, что Пегги знает секрет. Но ни один из вопросов или ответов не даст Виктору ни малейших сведений об информации Пегги, но докажет знание Пегги этой информации.
Базовый протокол с нулевым знанием
Жан-Жак Кискатер (Jean-Jacques Quisquater) и Луи Гилу (Louis Guillou) поясняют нулевое знание историей о пещере [1281]. У пещеры, показанной на Рис.-1, есть секрет. Тот, кто знает волшебные слова может открыть потайную дверь между C и D. Для всех остальных оба прохода ведут в тупик.
Рис. -1. Пещера нулевого знания
Пегги знает секрет пещеры. Она хочет доказать свое знание Виктору, но не хочет раскрывать волшебных слов. Вот как она убеждает его:
Виктор находится в точке А.
Пегги проходит весь путь по пещере, либо до точки C, либо до точки D.
После того, как Пегги исчезнет в пещере, Виктор переходит в точку В.
Виктор кричит Пегги, спрашивая ее либо о:
или выйти из левого прохода
выйти из правого прохода.
Пегги исполняет его просьбу, при необходимости используя волшебные слова, чтобы отпереть дверь.
Пегги и Виктор повторяют этапы (1) - (5) n раз.
Предположим, что у Виктора есть видеокамера, и он записывает все, что видит. Он записывает, как Пегги исчезает в пещере, записывает, как он сам кричит, указывая, где Пегги должна появиться, записывает как Пегги появляется. Он записывает все n тестов. Если он покажет эту видеозапись Кэрол, поверит ли она, что Пегги знает волшебные слова, отпирающие дверь? Нет. А что если Пегги и Виктор заранее договорились, что Виктор будет кричать, а Пегги будет делать вид, что она прошла весь путь. Тогда она будет каждый раз выходить из указанного Виктором места, не зная волшебных слов. Или они могли сделать по другому. Пегги входит в один из проходов и Виктор случайным образом выкрикивает свои просьбы. Если Виктор угадывает правильно, хорошо, если нет - они вырежут эту попытку из видеозаписи. В любом случае Виктор может получить видеозапись, показывающую в точности ту последовательность, которая получилась бы, если бы Пегги знала волшебные слова.
Этот опыт показывает две вещи. Во первых, Виктор не может убедить третью сторону в правильности доказательства. И во вторых, данный протокол является протоколом с нулевым знанием. Если Пегги не знает волшебных слов, то очевидно, что Виктор не узнает ничего из просмотра видеозаписи. Но так как нет способа отличить реальную видеозапись от подделанной, то Виктор не может ничего узнать из реального доказательства - это и есть нулевое знание.
Методика, используемая в этом протоколе, называется разрезать и выбрать из-за того, что она похож на классический протокол честного деления чего-либо:
Алиса делит некую вещь пополам.
Боб выбирает одну из половин себе.
Алиса забирает оставшуюся половину.
В интересах Алисы честно разделить на этапе (1), потому что Боб выберет на этапе (2) ту половину, которая ему больше нравится. Майкл Рабин (Michael Rabin) первым использовал в криптографии технику "разрезать и выбрать" [1282]. Понятия интерактивного протокола и нулевого знания были формализованы позже [626, 627].
Протокол "разрезать и выбрать" работает, потому что Пегги не может несколько раз подряд угадывать, откуда Виктор попросит ее выйти. Если Пегги не знает секрета, он может выйти только из того прохода, в который она зашла. В каждом раундепротокола ее вероятность (иногда называемая аккредитацией) угадать, с какой стороны Виктор попросит ее выйти, составляет 50 процентов, поэтому ее вероятность обмануть Виктора также равна 50 процентам. Вероятность обмануть его в двух раундах составит 25 процентов, а во всех n раундах - один шанс из 2n. После 16 раундов у Пегги 1 шанс из 65536 обмануть Виктора. Виктор может уверенно предположить, что если все 16 доказательств Пегги правильны, то она действительно знает тайные слова, открывающие дверь между точками C и D. (Аналогия с пещерой несовершенна. Пегги может просто входить с одной стороны и выходить с другой, протокол "разрезать и выбрать" не нужен. Однако, он необходим с для нулевого знания с математической точки зрения.)
Предположим, что Пегги известна некоторая информация, которая является решением трудной проблемы. Базовый протокол нулевого знания состоит из нескольких раундов.
Пегги использует свою информацию и случайное число для преобразования одной трудной проблемы в другую, изоморфную оригинальной проблеме. Затем она использует свою информацию и случайное число для решения новой трудной проблемы.
Пегги вручает решение новой проблемы, используя схему вручения бита.
Пегги раскрывает Виктору новый экземпляр проблемы. Виктор не может использовать эту новую проблему для получения информации о первоначальной проблеме или ее решении.
Виктор просит Пегги либо
доказать ему, что новая и старая проблема изоморфны (т.е., два различных решения для двух связанных проблем), либо
открыть решение, полученное на этапе (2) и доказать, что это решение новой проблемы.
Пегги исполняет его просьбу.
Пегги и Виктор повторяют этапы (1) - (5) n раз.
Помните видеокамеру в протоколе для пещеры? Здесь вы можете сделать то же самое. Виктор может записать обмен между ним и Пегги. Он не сможет использовать эту запись для убеждения Кэрол, но он всегда может сговориться с Пегги с целью создать имитатор, который подделывает информацию Пегги. Этот аргумент может быть использован, чтобы доказать, что используется доказательство с нулевым знанием.
Математическая основа доказательства этого типа сложна. Проблемы и случайное преобразование должны выбираться осторожно, чтобы Виктор не получил никакой информации о решении оригинальной проблемы, даже после многих повторений протокола. Не все трудные проблемы можно использовать для доказательств с нулевым знанием, но большинство из них.
Изоморфизм графа
Объяснение этого понятия, пришедшего из теории графов [619, 622], может занять некоторое время. Граф представляет собой сеть линий ,соединяющих различные точки. Если два графа идентичны во всем, кроме имен точек, они называются изоморфными. Для очень больших графов доказательство их изоморфности может потребовать веков компьютерного времени, это одна из так называемых NP-полных проблем, рассматриваемых в разделе 11.1.
Предположим, что Пегги знает об изоморфности двух графов, G1 и G2. Следующий протокол докажет Виктору знание Пегги:
Пегги случайным образом тасует G1, получая другой граф, Н, который изоморфен G1. Так как Пегги знает об изоморфизме Н и G1, то ей также известен изоморфизм между Н и G2. Для любого другого поиск изоморфизма между Н и G1 или Н и G2 является такой же трудной задачей, как и поиск изоморфизма между G1 и G2.
Пегги посылает Н Виктору.
Виктор просит Пегги либо
доказать, что Н и G1 изоморфны, либо
доказать, что Н и G2 изоморфны.
Пегги исполняет его просьбу. Она либо:
доказывает, что Н и G1 изоморфны, не доказывая, что Н и G2 изоморфны, либо
доказывает, что Н и G2 изоморфны, не доказывая, что Н и G1 изоморфны.
Пегги и Виктор повторяют этапы (1) - (4) n раз.
Если Пегги не знает об изоморфизме между G1 и G2, она не сможет создать граф Н, изоморфный обоим графам. Она может создать либо граф, который изоморфен G1, либо граф, который изоморфен G2. Как и в предыдущем примере у нее только 50 шансов из 100 угадать, какое доказательство потребует от нее Виктор на этапе (3).
Этот протокол не дает Виктору никакой полезной информации, помогающей ему из ответов Пегги установить изоморфизм между G1 и G2. Так как Пегги для каждого нового раунда протокола генерирует новый граф Н, Виктор не сможет получить информацию независимо от того, из скольких раундов будет состоять их протокол. Он не сможет из ответов Пегги установить изоморфизм между G1 и G2.
В каждом раунде Виктор получает новое случайное преобразование Н, вместе с изоморфизмом между Н и G1 или G2. Виктор может также создать что-то подобное самостоятельно. Так как Виктор может создать имитацию протокола, это действительно доказательство с нулевым знанием.
Гамильтоновы циклы
Вариант этого примера был впервые представлен Мануэлем Блюмом (Manuel Blum) [196]. Пегги знает кружной, продолжительный путь вдоль линий графа, который проходит через каждую точку только один раз. Этот путь называется гамильтоновым циклом. Поиск гамильтонова цикла является другой тяжелой задачей. У Пегги есть эта информация - она, возможно, получила ее создав граф с конкретным гамильтоновым циклом - и она хочет доказать Виктору, что эта информация ей известна.
Пегги знает гамильтонов цикл графа, G. Виктору известен G, но не его гамильтонов цикл. Пегги хочет доказать Виктору, что она знает гамильтонов цикл, не раскрывая самого цикла. Вот как она должна действовать:
Пегги случайным образом преобразовывает G. Она передвигает точки и изменяет их метки, создавая новый граф, H. Поскольку G и H топологически изоморфны (т.е., это один и тот же граф), если ей известен гамильтонов цикл G, то она легко может найти гамильтонов цикл H. Если она не сама создает H, определение изоморфизма между двумя графами будет являться другой сложной проблемой, решение которой также потребует веков компьютерного времени. Затем она шифрует H, получая H'. (Должно использоваться вероятностное шифрование каждой строчки H, то есть, шифрованный 0 или шифрованная 1 для каждой линии H.)
Пегги передает Виктору копию H.
Виктор просит Пегги либо:
доказать ему, что Н' - это зашифрованная изоморфная копия G, либо
показать ему гамильтонов цикл для Н.
Пегги исполняет его просьбу. Она либо:
доказывает, что Н' - это зашифрованная изоморфная копия G, раскрывая преобразования и расшифровывая все, не показывая гамильтонов цикл для G или Н, либо
показывает гамильтонов цикл для Н, расшифровывая только те строки, которые образуют гамильтонов цикл, не доказывая, что Н и G топологически изоморфны.
Пегги и Виктор повторяют этапы (1) - (4) n раз.
Если Пегги не обманывает, она сможет предъявить Виктору одно из доказательств на этапе (3). Однако, если гамильтонов цикл для G ей неизвестен, она не сможет создать зашифрованный граф H', который удовлетворяет обоим доказательствам. Лучшее, что она может сделать - это создать или граф, изоморфный G, или граф с таким же числом точек и линий и правильным гамильтоновым циклом. Хотя ее шансы угадать, какое доказательство потребует Виктор на этапе (3), составляют 50 процентов, Виктор может повторить протокол достаточное число раз, убеждаясь, что Пегги знает гамильтонов цикл для G.
Параллельные доказательства с нулевым знанием
В базовом протоколе с нулевым знанием используется n обменов информацией между Пегги и Виктором. Почему бы не выполнить их параллельно:
Пегги использует свою информацию и n случайных чисел для преобразования трудной проблемы в n различных изоморфных проблем. Затем она с помощью своей информации и случайных чисел решает n новых трудных проблем.
Пегги вручает решение n новых трудных проблем.
Пегги раскрывает Виктору эти n новых трудных проблем. Виктор не может воспользоваться этими новыми проблемами для получения информации об оригинальных проблемах или их решении.
Для каждой новой трудной проблемы Виктор просит Пегги либо
доказать ему, что старая и новая проблемы изоморфны, либо
раскрыть решение, врученное на этапе (2), и доказать, что оно является решением данной новой проблемы.
Пегги исполняет его просьбу для каждой новой проблемы.
К несчастью, все не так просто. Этот протокол, в отличие от предыдущего, не обладает такими же свойствами нулевого знания. На этапе (4) Виктор может потребовать, чтобы доказательство было представлено в виде значения однонаправленной хэш-функции всех значений, врученных на первом этапе, делая невозможным имитацию записи протокола. Это тоже нулевое знание, но другого рода. На практике оно представляется безопасным, но никто не знает, как это доказать. Мы действительно знаем только то, что при определенных условиях определенные протоколы для определенных проблем могут быть выполнены параллельно без потери свойства нулевого знания [247, 106, 546, 616].
Неинтерактивные доказательства с нулевым знанием
Кэрол невозможно убедить, потому что она не участвует в интерактивном процессе протокол. Для убеждения Кэрол и других заинтересованных лиц нам нужен неинтерактивный протокол.
Для неинтерактивных доказательств с нулевым знанием был придуман ряд протоколов [477, 198, 478, 197], которые не требуют непосредственного взаимодействия. Пегги может опубликовать их и, таким образом, доказать свое знание всем, у кого найдется время это проверить
Базовый протокол похож на параллельное доказательство с нулевым знанием, но место Виктора занимает однонаправленная хэш-функция:
Пегги использует свою информацию и n случайных чисел для преобразования трудной проблемы в n различных изоморфных проблем. Затем она с помощью своей информации и случайных чисел решает n новых трудных проблем.
Пегги вручает решение n новых трудных проблем.
Пегги использует все эти вручения в качестве входа для однонаправленной хэш-функции. (В конце концов эти вручения - не что иное, как строки битов.) Затем она сохраняет первые n битов полученного значения однонаправленной хэш-функции.
Пегги берет n битов, полученных на этапе (3). По очереди для каждой n-ой трудной проблемы она берет n‑ый бит и
если бит равен 0, доказывает, что старая и новая проблемы изоморфны, либо
если бит равен 1, раскрывает решение, врученное на этапе (2), и доказывает, что оно является решением данной новой проблемы.
Пегги опубликовывает все решения, врученные на этапе (2), и все доказательства, полученные на этапе (4).
Виктор, Кэрол и все остальные заинтересованные лица проверяют, что этапы (1)-(5) выполнены правильно.
Это впечатляет: Пегги может опубликовать некоторые данные, которые не содержат никакой информации о ее секрете, но могут кого угодно убедить в существовании самого секрета. Этот протокол может быть использован проверка определена как вычисление однонаправленной хэш-функции первоначальных сообщений и подписываемого сообщения.
Эта схема работает, потому что однонаправленная хэш-функция действует как беспристрастный генератор случайных битов. Чтобы мошенничать, Пегги нужно уметь предсказывать результат однонаправленной хэш-функции. (Помните, если решение трудной проблемы ей неизвестно, она может сделать на этапе (4) либо (a), либо (b), но не оба действия одновременно.) Если она каким-то образом узнает, выполнение какого действия потребует от нее однонаправленная хэш-функция, то она сможет смошенничать. Однако, Пегги не сможет заставить однонаправленную хэш-функцию выдать определенный бит или догадаться, какой бит будет получен. Однонаправленная хэш-функция по сути является заменителем Виктора в случайном выборе одного из двух доказательств на этапе (4).
В неинтерактивном протоколе должно быть гораздо больше итераций в последовательности запрос/ответ. Пегги, а не Виктор, отбирает трудные проблемы с помощью случайных чисел. Она может подбирать различные проблемы, следовательно, и различные векторы вручения, до тех пор, пока хэш-функция не выдаст что-то, нужное Пегги. В интерактивном протоколе 10 итераций - вероятность мошенничества Пегги составит 1 шанс из 210 (1 из 1024) - может быть достаточно. Однако, для неинтерактивных доказательств с нулевым знанием этого не хватит. Помните, что Мэллори всегда может выполнить на этапе (4) либо (a), либо (b). Он может, выполняя этапы (1)-(3), попытаться догадаться, что его попросят сделать, и посмотреть, правильно ли его предположение. Если нет, он попробует снова и снова. Сделать 1024 предположения на компьютере нетрудно. Для предотвращения такого вскрытия грубым взломом для неинтерактивных протоколов нужно 64 или даже 128 итераций.
Главная идея состоит в использовании однонаправленной хэш-функции - Пегги не может предсказать выход хэш‑функции, потому что она не может предсказать ее вход. Вручения, используемые на входе, становятся известны только после решения новых проблем.
Общие замечания
Блюм (Blum) доказал, что любая математическая теорема может быть преобразована в граф, такой, что доказательство теоремы будет эквивалентно доказательству существования гамильтонова цикла для этого графа. В общем виде то, что для любого NP-полного утверждения есть доказательство с нулевым знанием, использующее однонаправленные функции и, следовательно, хорошие алгоритмы шифрования, доказано в [620]. Любое математическое доказательство может быть преобразовано в доказательство с нулевым знанием. Используя эту методику, исследователь может доказать миру, что ему известно доказательство конкретной теоремы, не раскрывая самого решения. Блюм мог опубликовать свои результаты, не раскрывая их.
Также существуют доказательства с минимальным раскрытием [590]. Для доказательства с минимальным раскрытием выполняются следующие свойства:
Пегги не может обмануть Виктора. Если Пегги не знает доказательства, ее шансы убедить Виктора в том, что доказательство ей известно, пренебрежимо малы.
Виктор не может обмануть Пегги. Он не получает ни малейшего намека на доказательство кроме того факта, что доказательство известно Пегги. В частности, Виктор не может продемонстрировать доказательство никому другому, не доказав все сам с самого начала.
У доказательств с нулевым знанием есть дополнительное условие:
Виктор не узнает от Пегги ничего такого, чего он не смог бы узнать и самостоятельно кроме того факта, что доказательство известно Пегги.
Существует заметная математическая разница между доказательствами с минимальным раскрытием и доказательствами с нулевым знанием. Это различие находится вне рамок данной книги, но более искушенные читатели могут проштудировать другую литературу. Понятия изложены в in [626, 619, 622]. Дальнейшая проработка этих идей, основанная на различных математических предположениях, выполнена в [240, 319, 239].
Существуют различные типы доказательств с нулевым знанием:
Совершенное. Существует имитатор, который создает стенограммы, полностью соответствующие реальным стенограммам (примеры с гамильтоновым циклом и изоморфизмом графов).
Статистическое. Существует имитатор, который создает стенограммы, полностью соответствующие реальным стенограммам, кроме фиксированного числа исключений.
Вычислительное. Существует имитатор, который создает стенограммы, неотличимые от реальных.
Неиспользующее. Имитатора может и не быть, но мы можем доказать, что Виктор не узнает никакой информации из доказательства (параллельный пример)
Годы тяжелой работы, как теоретической, так и прикладной, присели к появлению доказательств с минимальным раскрытием и нулевым знанием. Майк Берместер (Mike Burmester) и Иво Десмедт изобрели широковещательно интерактивное доказательство, где владелец секрета может широковещательно передавать большой группе контролеров интерактивное доказательство с нулевым знанием [280]. Криптографы доказали, что все, что может быть доказано с помощью интерактивного доказательства, может быть доказано и с помощью интерактивного доказательства с нулевым знанием [753, 137].
Хорошей обзорной статьей по данной теме является [548]. Дополнительные математические подробности, варианты, протоколы и приложения ищите в [590, 619, 240, 319, 620, 113,241, 152, 8, 660, 238, 591, 617, 510, 592, 214, 104, 216, 832, 97, 939, 622, 482, 615, 618, 215, 476, 71]. Много чего было написано по этому вопросу.
