- •Часть 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 Экспорт несекретных технических данных.
- •Экспорт и импорт криптографии за рубежом
- •Правовые вопросы
3.7 Совместное использование секрета
Вы вводите программу запуска ядерной ракеты и хотите быть уверенным, что никакой псих в одиночку не сможет вызвать пуск. Вы хотите быть уверенным, что и два психа не смогут вызвать пуск. Вы хотите, чтобы пуск произошел только, если не меньше трех из пяти офицеров будут психами.
Эта проблема легко может быть решена. Сделайте механическое устройство контроля запуска. Выдайте ключ каждому из пяти офицеров и потребуйте, чтобы по меньше мере три офицера вставили свои ключи в соответствующие гнезда, прежде чем вы разрешите им взорвать того, кого мы взрываем на этой неделе. (Если вы действительно волнуетесь, сделайте гнезда подальше друг от друга и потребуйте, чтобы офицеры вставляли ключи одновременно - вы ведь не хотели бы, чтобы офицер, выкравший недостающую пару ключей, смог бы испепелить Толедо.)
Можно сделать еще сложнее. Пусть только генералу и паре полковников разрешается запустить ракету, но если генерал занят игрой в гольф, то правом запустить ракету обладают только пять полковников. Сделайте контрольное устройство с пятью ключами. Выдайте генералу три ключа, а полковникам по одному. Генерал вместе с двумя полковниками или пять полковников смогут запустить ракету. Однако ни генерал в одиночку, ни четыре полковника не смогут этого сделать.
Более сложная схема совместного использования, называемая пороговой схемой, может решить и эти задачи, и более сложные - математически. На ее простейшем уровне вы можете взять любое сообщение (секретный рецепт, коды запуска, ваш список для прачечной и т.п.) и разделить его на n частей, называемых тенями или долями, так, что по любым m из них можно восстановить сообщение. Более точно, это называется (m,n)‑пороговой схемой.
Используя (3,4)-пороговую схему, Трент может разделить свой секретный рецепт между Алисой, Бобом, Кэрол и Дэйвом так, что любые трое из них могут сложить свои тени вместе и восстановить сообщение. Если Кэрол в отпуске, то Алиса, Боб и Дэйв смогут восстановить сообщение. Если Боб попал под автобус, то сообщение смогут восстановить Алиса, Кэрол и Дэйв. Но если Боб попал под автобус, а Кэрол в отпуске, то Алиса и Дэйв самостоятельно не смогут восстановить сообщение.
Вообще, пороговые схемы могут быть еще более гибкими. Можно отмоделировать любые сценарии совместного использования, которые вы только сможете вообразить. Можно разделить сообщение между людьми в вашем здании так, что для его восстановления, если нет никого с третьего этажа, потребуется семь человек с первого этажа и пять со второго, в противном случае достаточно представителя третьего этажа вместе с тремя человеками с первого этажа и двумя со второго. Если же есть кто-то с четвертого этажа, то для восстановления сообщения достаточно этого человека и одного с третьего этажа или этого человека вместе с двумя с первого этажа и одного со второго. Если же ... ну вы уловили идею.
Эта идея была независимо выдвинута Ади Шамиром [1414] и Джорджем Блэкли (George Blakley) [182] и интенсивно была изучена Гусом Симмонсом (Gus Simmons) [1466]. Множество различных алгоритмов обсуждается в разделе 23.2.
Совместное использование с мошенниками
Существует множество способов обмануть пороговую схему. Вот только несколько из них. Сценарий 1: Полковники Алиса, Боб и Кэрол сидят в изолированном бункере где-то глубоко под землей. Однажды они получают закодированное сообщение от президента: "Запустить ракеты. Мы собираемся стереть с лица Земли любые следы исследований противника в области нейронных сетей". Алиса, Боб и Кэрол открывают свои тени, но Кэрол вводит случайное число. Он на самом деле пацифист и не хочет, чтобы ракеты были запущены. Поскольку Кэрол не ввела правильной тени, секретная информация, которую они хотели получить, оказалась неправильной. Ракеты остались в своих шахтах. И самое плохое, никто не знает почему. Даже объединившись Алиса и Боб не смогут доказать, что тень Кэрол неправильна.
Сценарий 2: Полковники Алиса и Боб сидят в бункере вместе с Мэллори. Мэллори ложно выдает себя за полковника. От президента приходит то же самое сообщение и все открывают свои тени. "Ха-ха-ха!" кричит Мэллори. "Я подделал это сообщение президента. Теперь я знаю обе ваших доли." Он убегает вверх по лестнице и исчезает прежде, чем его успеют поймать.
Сценарий 3: Полковники Алиса, Боб и Кэрол сидят в бункере вместе с Мэллори, который снова замаскировался. (Помните, у Мэллори нет правильной тени.) От президента приходит то же самое сообщение и все открывают свои тени. Мэллори открывает свою тень, только услышав все остальные. Так как для восстановления секрета требуется только три тени, он может быстро создать правильную тень и открыть ее. Итак, он не только заполучил секрет, но и никто не догадался, что он не является частью этой системы. Некоторые протоколы, которые позволяют бороться с подобными мошенниками, рассматриваются в разделе 23.2.
Совместное использование секрета без Трента
Банк хочет, чтобы его подвал могли открыть трое из пяти офицеров, введя свои ключи. Это выглядит как типичная (3,5)-пороговая схема, но с одной тонкостью. Никто не знает секрета целиком. Трента, которые делит секрет на пять частей, нет. Существуют протоколы, используя которые пять офицеров могут создать секрет и поделить его на части так, что никто из офицеров не узнает секрета, пока он не будет восстановлен. В этой книге я не рассматриваю эти протоколы, подробности см. в [756].
Совместное использование секрета без раскрытия долей
У этих схем есть одна проблема. Когда участники протокола собираются, чтобы восстановить секрет, они открывают свои части. Но раскрытие секрета не всегда желательно. Если разделяемый секрет является закрытым ключом (например, к цифровой подписи), то каждый из n участников может выполнить частичную подпись документа. После n-ой частичной подписи документ оказывается подписан совместно используемым закрытым ключом, а ни один из участников не может узнать содержания части, используемой другим участником. Смысл в том, что вы можете повторно использовать секрет, и для работы с ним вам не понадобится надежный посредник. Дальнейшее развитие эта идея получила в работах Иво Десмедта (Yvo Desmedt) и Йера Френкеля (Yair Frankel) [483, 484].
Подтверждаемое совместное использование секрета
Трент передает Алисе, Бобу, Кэрол и Дэйву часть секрета (или, по крайней мере, заявляет, что он это делает). Единственный способ убедиться, что их части правильны - это попытаться восстановить секрет. Может быть, Трент послал Бобу поддельную часть, или часть Боба случайно испортилась при передаче по линиям связи. Подтверждаемое совместное использование секрета позволяет каждому из участников лично убедиться, что их часть правильна, без необходимости восстанавливать секрет [558, 1235].
Схемы совместного использования секрета с мерами предохранения
Секрет делится среди 50 человек так, чтобы любые 10 могли собраться вместе и восстановить секрет. Это нетрудно. Но, можем ли мы реализовать ту же схему совместного использования секрета, добавив требование, чтобы 20 человек могли собраться вместе и помешать остальным, независимо от их числа, восстановить секрет? Оказывается, что да [153].
Математика достаточно сложна, но основная идея в том, что каждый получает две части: часть "да" и часть "нет". Когда приходит время восстановить секрет, люди предоставляют одну из своих частей. Какую конкретно зависит от того, хотят ли они, чтобы секрет был раскрыт. Если предоставлено m или больше долей "да" и меньше чем n долей "нет", то секрет может быть восстановлен. В противном случае, это невозможно.
Конечно же, ничего не мешает достаточному числу людей "да" отойти в уголок, уединившись от людей "нет" (если они знают, кто есть кто) и восстановить секрет. Но при условии, что все передают свои части в центральный компьютер, эта схема будет работать.
Совместное использование секрета с вычеркиванием из списка
Вы создали систему совместного использования секрета и теперь хотите застрелить одного из владельцев части секрета. Вы могли бы создать новую схему, исключив этого несчастного, но время поджимает. Для подобной системы существуют способы копирования. Они позволяют активизировать новую схему совместного использования секрета сразу же после того, как вы перестали доверять одному из участников [1004].
