Справочник от Автор24
Поделись лекцией за скидку на Автор24

Односторонние функции и их применения

  • ⌛ 2021 год
  • 👀 745 просмотров
  • 📌 660 загрузок
Выбери формат для чтения
Статья: Односторонние функции и их применения
Найди решение своей задачи среди 1 000 000 ответов
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Односторонние функции и их применения» pdf
Односторонние функции и их применения Н.К. Верещагин 21 октября 2021 г. 2 Оглавление 1 Введение 7 2 Необратимые и односторонние функции 2.1 Определения . . . . . . . . . . . . . . . . . . . . 2.2 Второй вариант определения . . . . . . . . . . . 2.3 Задачи . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Примеры . . . . . . . . . . . . . . . . . . . . . . 2.5 Усиление . . . . . . . . . . . . . . . . . . . . . . 2.6 Неравномерные распределения вероятностей на . . . . . . 9 9 11 13 15 16 21 3 Односторонние перестановки 3.1 Примеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Общее определение семейства односторонних перестановок 3.3 Семейства односторонних перестановок с секретом . . . . . 3.4 Улучшенные семейства односторонних перестановок . . . . 25 25 29 30 31 4 Генераторы псевдослучайных чисел 4.1 Определение генератора ПСЧ . . . . . . . . . . . . . . . . 4.2 Генераторы ПСЧ и односторонние функции . . . . . . . . 4.3 Вычислительно неотличимые случайные величины . . . . 4.4 Трудный предикат (hardcore predicate) . . . . . . . . . . . 4.5 Построение функции, являющейся трудным предикатом . 4.6 Построение генератора ПСЧ из трудного предиката для односторонней перестановки . . . . . . . . . . . . . . . . . 4.7 Генератор ПСЧ из односторонней функции: общий план . 4.8 Энтропия . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.9 Универсальные семейства хэш-функций . . . . . . . . . . 4.10 Генератор ПСЧ из односторонней инъекции . . . . . . . . . . . . . 33 33 35 36 42 49 . . . . . 54 58 58 61 63 3 . . . . . . . . . . . . . . . . . . . . . . . . . входах . . . . . . 4 ОГЛАВЛЕНИЕ 4.11 Построение генератора ПСЧ из почти инъективной функции и трудного предиката . . . . . . . . . . . . . . . . . . 4.12 Извлечение остаточной энтропии . . . . . . . . . . . . . . 4.13 Фальшивая энтропия . . . . . . . . . . . . . . . . . . . . . 4.14 Построение генератора фальшивой энтропии: первый шаг 4.15 Построение генератора фальшивой энтропии для неравномерного противника: второй шаг . . . . . . . . . . . . . . . 4.16 Теорема Шеннона . . . . . . . . . . . . . . . . . . . . . . . 4.17 Построение генератора ПСЧ из генератора фальшивой энтропии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.18 Построение генератора фальшивой энтропии и генератора ПСЧ для равномерного противника . . . . . . . . . . . . . . . . 66 67 72 73 . 76 . 79 . 84 . 89 5 Псевдослучайные функции 99 5.1 Слабые семейства ПСФ . . . . . . . . . . . . . . . . . . . . . 100 5.2 Сильные семейства ПСФ . . . . . . . . . . . . . . . . . . . . 104 6 Схемы шифрования 6.1 Общее определение . . . . . 6.2 Одноразовые схемы . . . . . 6.3 Многоразовые схемы . . . . 6.4 Атака с выбором сообщений. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 107 108 112 115 7 Протоколы привязки (bit commitment) 119 7.1 Неинтерактивные протоколы привязки . . . . . . . . . . . . 119 7.2 Интерактивные алгоритмы: определение . . . . . . . . . . . 122 7.3 Интерактивные протоколы привязки . . . . . . . . . . . . . 124 8 Протоколы бросания монетки 129 8.1 Отрицательный результат . . . . . . . . . . . . . . . . . . . 134 9 Неразглашение информации 139 9.1 Последовательное выполнение . . . . . . . . . . . . . . . . . 144 10 Протоколы идентификации 10.1 Протоколы с закрытым ключом . . . . . 10.2 Протоколы с открытым ключом . . . . . 10.3 Доказательства с нулевым разглашением 10.4 Доказательство теоремы 36 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 154 156 162 165 5 ОГЛАВЛЕНИЕ 11 Семейства хэш-функций 173 11.1 Семейства хэш-функций с трудно обнаружимыми коллизиями . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 11.2 Универсальные семейства односторонних хэш-функций . . 176 12 Протоколы электронной подписи 12.1 Протоколы электронной подписи с закрытым ключом . . 12.2 Протоколы электронной подписи с открытым ключом . . 12.3 Одноразовая схема подписи одного бита . . . . . . . . . . 12.4 Подпись одного сообщения фиксированной длины . . . . 12.5 Протокол одноразовой подписи одного сообщения произвольной длины . . . . . . . . . . . . . . . . . . . . . . . . . 12.6 Построение одноразовой схемы подписи одного сообщения произвольной длины, исходя из универсальных семейств односторонних хэш-функций . . . . . . . . . . . . . . . . . 12.7 Общий случай: подпись произвольного количества сообщений произвольной длины . . . . . . . . . . . . . . . . . . . . . . . 181 183 184 185 187 . 188 . 191 . 194 13 Конфиденциальные вычисления 201 13.1 Забывающая передача (oblivious transfer) . . . . . . . . . . . 203 13.2 Вычисление произвольных функций . . . . . . . . . . . . . 210 6 ОГЛАВЛЕНИЕ Глава 1 Введение В лекциях постоянно используется понятие детерминированных полиномиальных алгоритмов (машин Тьюринга, время работы которых ограничено некоторым многочленом от длины исходного данного), вероятностных полиномиальных алгоритмов (вероятностных машин Тьюринга, время работы которых ограничено некоторым многочленом от длины исходного данного, независимо от результатов сделанных ими случайных выборов) и схем из функциональных элементов. О том, что это такое, можно прочитать в книге [2]. 7 8 ГЛАВА 1. ВВЕДЕНИЕ Глава 2 Необратимые и односторонние функции 2.1 Определения Через B мы обозначаем множество {0, 1}. Пусть имеется семейство функций fn : Bk(n) → Bl(n) , где k, l некоторые многочлены. Под многочленом в этой книге всегда понимается многочлен с положительными целыми коэффициентами степени больше нуля. Мы хотим определить понятие “плохо обратимой” функции. Обратить f (x) означает найти найти какое-то x0 такое, что f (x0 ) = f (x). Возможны разные варианты определения: слабый и сильный. Неформально говоря, обращение слабо необратимой функции оказывается неверным с заметной (не пренебрежимо малой) вероятностью; для сильно необратимой функции оно неверно почти всегда (вероятность удачного обращения пренебрежимо мала). В качестве процедур обращения мы будем рассматривать полиномиальные вероятностные алгоритмы, получающие на вход n единиц и fn (x). Дадим точные определения. Определение 1. Семейство функций {fn | n ∈ N} описанного вида называется слабо необратимым, если существует некоторый многочлен p с таким свойством: для любого полиномиального вероятностного алгоритма R вероятность события fn (R(1n , fn (x))) = fn (x), 9 10 ГЛАВА 2. НЕОБРАТИМЫЕ И ОДНОСТОРОННИЕ ФУНКЦИИ где все слова x длины k(n) считаются равновероятными, не превосходит 1− 1 p(n) для всех достаточно больших n. Если fn (R(1n , fn (x))) = fn (x), то мы говорим, что алгоритм R успешно обращает fn (x). В этом определении на вход алгоритма R (гипотетического алгоритма обращения) дается 1n (число n, записанное в унарной записи) и слово длины l(n), и он должен найти слово длины k(n), попадающее в fn прообраз входного слова. Такой прообраз существует, так как обращению подлежит слово вида fn (x) для некоторого (неизвестного алгоритму) слова x. Важно, что мы не требуем точного обращения (равенства R(1n , fn (x)) = x). Если бы требовали, то любая функция, склеивающая все слова в одно, оказалась бы необратимой. Ещё отметим, что равномерное распределение берётся на словах x, а не на их образах (иначе трудность обращения могла бы быть вызвана тем, что многие слова не имеют прообраза). Наконец, заметим, что многочлен p, задающий долю неудачных попыток обращения, не должен зависеть от алгоритма R. Если оказывается, что с ростом времени работы алгоритма R (в пределах полиномиального) обращение становится возможным всё лучше и лучше, и ошибка может быть сделана меньше любого наперёд заданного полинома, то это не годится. Если это разрешить, то получится более слабое определение: Определение 2. Назовём семейство совсем слабо необратимым, если для любого полиномиального вероятностного алгоритма R существует некоторый многочлен p с таким свойством: вероятность события fn (R(1n , fn (x))) = fn (x), не превосходит 1− 1 p(n) для всех достаточно больших n. От определения слабой необратимости это требование отличается тем, что теперь многочлен p может зависеть от алгоритма R. Мы не будем изучать совсем слабо необратимые функции и привели это определение только для того, чтобы читатель запомнил, что в определении слабо необратимой функции многочлен p не должен зависеть от алгоритма R. 2.2. ВТОРОЙ ВАРИАНТ ОПРЕДЕЛЕНИЯ 11 Определение 3. Семейство функций fn называется сильно необратимым, если для любого полиномиального вероятностного алгоритма R вероятность события fn (R(1n , fn (x))) = fn (x), (где все слова x длины k(n) считаются равновероятными) стремится к нулю при n → ∞ быстрее любого обратного полинома. Это означает, что 1 для всех достаточно для любого многочлена q она не превосходит q(n) больших n. (Разумеется, та граница, с которой начинаются “достаточно большие” n, может зависеть от q.) Определение 4. Мы будем говорить, что числовая последовательность αn пренебрежимо мала или стремится к нулю быстрее любого обратного полинома, если для любого многочлена q для всех достаточно больших n 1 . выполнено неравенство |αn | < q(n) Определение 5. Семейство fn называется полиномиально вычислимым, если имеется алгоритм, получающий на вход 1n и слово x длины k(n) и вычисляющий за полиномиальное от n время слово fn (x). Сильно необратимые полиномиально вычислимые семейства функций называются сильно односторонними. Аналогично, слабо необратимые семейства, вычислимые за полиномиальное время называются слабо односторонними. Поскольку семейство функций {fn } можно отождествлять с одной функцией, отображающей пары hn, xi, для которых x ∈ Dom fn , в fn (x), в дальнейшем мы будем говорить “сильно необратимая функция”, “сильно односторонняя функция” и так далее. Когда говорят просто “односторонняя функция”, имеют в виду сильно одностороннюю функцию. 2.2 Второй вариант определения: односторонние функции для неравномерного противника Как известно, любой полиномиальный алгоритм можно моделировать последовательностями схем из функциональных элементов полиномиального размера. Точнее, пусть A — произвольный полиномиальный алгоритм, получающий на вход и выдающих на выход двоичные слова, для которого длина выходного слова определяется только длиной входного слова. Тогда для каждого натурального n существует схема Cn из 12 ГЛАВА 2. НЕОБРАТИМЫЕ И ОДНОСТОРОННИЕ ФУНКЦИИ функциональных элементов, размер которой ограничен некоторым многочленом от n, такая, что Cn (x) = A(x) для всех двоичных слов x длины n. Вероятностные полиномиальные алгоритмы можно моделировать вероятностными схемами из функциональных элементов полиномиального размера. Точнее, назовем вероятностной схемой любую схему C из функциональных элементов, входы которой разделены на две группы, x1 , . . . , xn и r1 , . . . , rs , называемых основными и случайными входами. Для такой схемы мы будем обозначать через C(x1 . . . xn ) случайную величину, для которой при каждой последовательности битов x1 . . . xn на основном входе вероятность события C(x1 . . . xn ) = y равна доле слов r1 . . . rs , для которых C(x1 . . . xn r1 . . . rs ) = y. Для любого вероятностного полиномиального алгоритма A существует последовательность вероятностных схем Cn полиномиального размера, для которой для всех n и всех двоичных слов x длины n случайные величины A(x) и Cn (x) имеют одно и то же распределение. В самом деле, пусть алгоритм A(x) на входах длины n делает s(n) бросаний монетки, где s — некоторый многочлен. Тогда A можно воспринимать, как детерминированный полиномиальный алгоритм с дополнительным входом r длины s(n), где n обозначает длину основного входа. Построим последовательность схем Cn полиномиального размера, моделирующую работу этого детерминированного алгоритма, то есть Cn (xr) = A(x, r) для всех x длины n и всех r длины s(n). Схема Cn и является искомой. Теперь разрешим в определении сильно и слабо необратимой функции использовать последовательности вероятностных схемы полиномиального размера. Этим мы расширим класс алгоритмов обращения и тем самым получим более сильные определения (сильного и слабого) одностороннего семейств функций. Определение 6. Семейство функций {fn : Bk(n) → Bl(n) | n ∈ N} называется слабо необратимым для неравномерного противника, если существует некоторый многочлен p с таким свойством: для любой последовательности вероятностных схем {Cn } из функциональных элементов, для которых схема Cn имеет l(n) входов и k(n) выходов и её размер ограничен некоторым полиномом от n, вероятность события fn (Cn (fn (x))) = fn (x), 13 2.3. ЗАДАЧИ (где все слова x длины k(n) считаются равновероятными) не превосходит 1− 1 p(n) для всех достаточно больших n. Аналогичным образом определяются и сильно необратимые семейства для неравномерного противника. Нетрудно заметить, что в этом определении можно ограничиться детерминированными схемами из функциональных элементов. В самом деле, пусть Cn — вероятностная схема из функциональных элементов полиномиального размера. Вероятность события [fn (Cn (fn (x))) = fn (x)] (обозначим её через pn ) есть среднее по всем случайным входам r схемы C вероятности pn (r) события [fn (Cn (fn (x)r)) = fn (x)]. Поэтому для каждого n существует некоторое r = rn , для которого pn (r) не меньше pn . Запаяв rn в вероятностную схему, мы получим детерминированную схему, для которой вероятность успешного обращения будет не меньше pn . Полученная детерминированная схема имеет не больший размер, чем исходная, и вероятность успеха у нее не меньше. Чтобы отличать два определения односторонней функции (определение из предыдущего и этого разделов), мы будем в дальнейшем говорить об односторонних функциях для равномерного или неравномерного противника. Равномерный противник — это вероятностные полиномиальные алгоритмы, а неравномерный — последовательности схем (вероятностных или детерминированных) полиномиального размера. Криптографические протоколы, использующие односторонние функции, оказываются надёжными против равномерного противника, если используемая функция необратима для равномерного противника, и надёжными против неравномерного противника, если используемая функция необратима для неравномерного противника. Доказательства этих двух утверждений обычно аналогичны и мы будем приводить только одно из них, указывая, что нужно изменить в другом доказательстве. 2.3 Задачи Задача 1. Докажите, что любая сильно необратимая функция является слабо необратимой. Это верно как для равномерного, так и для неравномерного противника. {p1} 14 {p2a} {p2} {p3} ГЛАВА 2. НЕОБРАТИМЫЕ И ОДНОСТОРОННИЕ ФУНКЦИИ Задача 2. Пусть fn есть возведение в квадрат по модулю 2n на n-битовых натуральных числах. Докажите, что fn не является слабо необратимым семейством функций даже для равномерного противника. Задача 3. Докажите, что для равномерного противника сильно необратимые функции существуют (не обязательно полиномиально вычислимые). Задача 4. Докажите, что и для неравномерного противника сильно необратимые функции существуют. Задача 5. Пусть fn : {0, 1}n → {0, 1}n выбирается случайно среди всех функций (необязательно биективных). Все функции считаются равновероятными и fn независимы при разных n. Докажите, что с вероятностью 1 семейство fn сильно необратимо (для неравномерного противника). Задача 6. Докажите, что существуют слабо необратимые функции, не являющиеся сильно необратимыми. Это верно как для равномерного, так и для неравномерного противника. Задача 7. Пусть дана сильно [слабо] необратимая функция fn : {0, 1}n → {0, 1}n . Докажите, что тогда функция xy 7→ fn (x)y определенная на словах длины 2n сильно [слабо] необратима. Это верно как для равномерного, так и для неравномерного противника. Задача 8. Пусть даны две биективные полиномиально вычислимые функции fn , gn : {0, 1}n → {0, 1}n . Докажите, что если хотя бы одна из них сильно [слабо] необратима, то и их композиция сильно [слабо] необратима. Это верно как для равномерного, так и для неравномерного противника. {p-poly} Задача 9. Докажите, что существуют сильно необратимые функции fn , gn : {0, 1}n → {0, 1}n , композиция которых не является даже слабо необратимой (полиномиальная вычислимость функций не требуется). Это верно как для равномерного, так и для неравномерного противника. Задача 10. Для неравномерного противника: пусть множество значений функции fn : {0, 1}n → {0, 1}n имеет не более poly(n) элементов. Докажите, что тогда fn не является даже слабо необратимым семейством функций. Задача 11. Докажите то же самое для равномерного противника. Задача 12. Пусть даны два семейства полиномиально вычислимых функций {fn }, {gn } с одинаковой областью определения. Рассмотрим новую функцию hn (x) = fn (x)gn (x) (имеется в виду конкатенация значений 2.4. ПРИМЕРЫ 15 двух функций). Задача обращения этой функции может как упроститься по сравнению с задачей обращения каждой из исходных функций (за счет добавления новой информации об x), так и усложниться из-за того, что количество прообразов uv относительно новой функции может быть значительно меньше и количества прообразов u относительно fn , и количества прообразов v относительно gn . Следующие примеры показывают, что возможно и то, и другое (в предположении, что односторонние функции существуют). (a) Докажите, что бывает, что fn сильно односторонняя, а hn не является даже слабо односторонней. (б) Докажите, что бывает, что обе функции fn , gn сильно односторонние, а hn не является даже слабо односторонней. (в) Докажите, что бывает, что hn сильно односторонняя, а fn не является даже слабо односторонней. (г) Докажите, что бывает, что hn сильно односторонняя, и обе функции fn , gn не являются даже слабо односторонними. (д) Докажите, что если длина gn (x) есть O(log n), то из сильной [слабой] необратимости функции fn следует сильная [слабая] необратимость функции hn . (е) Докажите, что бывает, что длина gn (x) равна 1 и при этом hn сильно необратима, а fn не является даже слабо необратимой. Задача 13. Докажите, что определение сильно необратимой функции для неравномерного противника можно переформулировать следующим образом: для любого полинома q существует последовательность чисел εn , стремящаяся к нулю быстрее любого обратного полинома от n и такая, что лишь для конечного числа n существует схема размера не более q(n), успешно обращающая fn (x) с вероятностью более εn . Переформулируйте в аналогичном виде определение слабо необратимой функции. 2.4 Примеры Неизвестно, существуют ли односторонние или хотя бы слабо односторонние функции (даже для равномерного противника). Доказать их существование сложно, поскольку из него следует, что P6=NP. (О том, что такое P и NP можно прочитать в книге [2].) Теорема 1. Если P=NP, то любое полиномиально вычислимое семейство функций fn не является слабо необратимым даже для равномер- 16 ГЛАВА 2. НЕОБРАТИМЫЕ И ОДНОСТОРОННИЕ ФУНКЦИИ ного противника. Более того, существует детерминированный алгоритм, который для всех x по n и fn (x) за полиномиальное от n время находит некоторый прообраз fn (x). Доказательство. Рассмотрим следующий язык L из NP. Он состоит из всех троек слов (1n , y, z), таких, что длина z равна n и найдется слово x длины k(n), начинающееся на z, для которого fn (x) = y. Поскольку мы предположили, что P=NP, этот язык можно разрешить за полиномиальное от n количество шагов. Пусть нам даны n и слово y длины n. Сначала выясняем, принадлежит ли L тройка (1n , y, Λ), где Λ обозначает пустое слово. Если нет, то y не имеет прообраза. Иначе запускаем бинарный поиск прообраза y. А именно, сначала выясняем принадлежит ли L тройка (1n , y, 0). Если да, то у y есть прообраз, начинающийся с нуля, а иначе — с единицы. И так далее. После i шагов у нас имеется строка z длины i, для которой мы знаем, что y имеет прообраз, начинающийся на z. После k(n) шагов мы найдем некоторый прообраз целиком. Приведём два семейства функций, которые возможно являются сильно односторонними. Произведение натуральных чисел: fn (x) равно произведению первой и второй половинок x, рассматриваемых как двоичные записи натуральных чисел. Здесь k(n) = l(n) = 2n (произведение двух n-битовых чисел содержит не более 2n битов). Функция SUBSET-SUM. Определение этой функции навеяно NP-полной задачей о сумме подмножеств (SUBSET-SUM). Здесь k(n) = n2 + n. Значение fn на словах x длины n2 + n определяется так. Разрежем x на n + 1 блоков длины n и будем понимать первые n блоков как n натуральных чисел x1 , . . . , xn в двоичной записи. Последний блок будем понимать как подмножество I множества P {1, 2, . . . , n}. По определению fn (x) равно конкатенации x1 , . . . , xn и i∈I xi . В следующей главе мы приведём еще три примера предположительно односторонних функций. 2.5 Преобразование слабо одностороннего семейства в сильно одностороннее {th0} Теорема 2. Если существует слабо односторонняя функция, то существует и сильно односторонняя функция. Это верно как для равномер- 17 2.5. УСИЛЕНИЕ ного, так и для неравномерного противника. Заметим, что в этом случае существуют и слабо односторонняя функция, не являющаяся сильно односторонней, см. задачу 6. Доказательство. Проведем доказательство для равномерного противника (для неравномерного противника оно совершенно аналогично). Пусть fn — слабо одностороннее семейство и p(n) такой полином, что вероятность успешного обращения fn (x) вероятностными полиномиальными алгоритмами при достаточно больших n не превосходит 1 − 1/p(n). Для краткости мы будем опускать индекс n и говорить об одной функции. (Имеется в виду, что это построение и все рассуждения выполняются параллельно для всех n.) Рассмотрим новую функцию f N , для которой f N (x1 x2 . . . xN ) = f (x1 )f (x2 ) . . . f (xN ). Она определена на словах длины N k(n), которые отождествляются с кортежами из N слов длины k(n), и принимает значения длины N l(n). В качестве N мы возьмем некоторый достаточно большой многочлен от n (какой — скажем дальше). Начнём с простого (но, увы, неправильного) объяснения, почему при достаточно большом N функция f N является сильно односторонней. В самом деле, обращение f N (x1 . . . xN ) для случайного x1 . . . xN требует одновременного обращения f (x1 ), . . . , f (xN ) при независимых случайных x1 , . . . , xN . В каждом из N случаев вероятность ошибки не меньше 1/p(n). Поэтому общая вероятность успеха не больше  1 1− p(n) N . Если положить N = np(n), то выражение это равно (1 − 1/p(n))p(n) в степени n, что экспоненциально убывает (примерно равно e−n ). Поэтому функция f N сильно односторонняя. Забегая вперед, отметим, что хотя это рассуждение и ошибочное, выбранное значение N окажется правильным. Исправление. Что неверно в этом рассуждении? Дело в том, что мы рассматриваем вероятность успешного обращения f N с помощью алгоритма специального вида, состоящего в том, что некий алгоритм обращения функции f применяется параллельно для всех n. А что делать, 18 ГЛАВА 2. НЕОБРАТИМЫЕ И ОДНОСТОРОННИЕ ФУНКЦИИ если алгоритм обращения такого вида не имеет? Кажется странным, что какие-то алгоритмы обращения функции f N могут делать что-то более сложное, чем обращать в отдельности каждое f (xi ), но это не доказательство (и непонятно, как это можно было бы формализовать буквально). Правильное доказательство должно идти в другом направлении: вместо того, чтобы начинать с алгоритма обращения для f и затем смотреть, что получится при его раздельном применении к f (xi ), мы должны рассмотреть произвольный алгоритм Rf N , претендующий на обращение функции f N , и показать, что если он имеет непренебрежимые шансы на успех, то для функции f есть алгоритм Rf , у которого вероятность ошибки обращения меньше 1/p(n). Попробуем следующий (ещё не окончательный) вероятностный алгоритм обращения f (x). Пусть нам дано некоторое слово y, прообраз которого мы ищем. Мысленно представим себе, что y есть f (x1 ) для неизвестного x1 и дополним слово y словами f (x2 ), . . . , f (xN ) для случайных слов x2 , . . . , xN . Применим к полученному слову yf (x2 ) . . . f (xN ) алгоритм Rf N и посмотрим, что он даст на первом месте (каковы первые k(n) битов). Это слово и будет результатом работы алгоритма. Нетрудно понять, что вероятность успеха алгоритма Rf (для f (x1 ) при случайном x1 ) не меньше вероятности успешного обращения f (x1 ) . . . f (xN ) алгоритмом Rf N для случайных x1 . . . xn . Этого нам мало, поскольку надо перейти от не очень малой вероятности к вероятности, близкой к единице. Как можно усовершенствовать алгоритм Rf ? Сразу возникают две идеи. Во-первых, можно производить несколько попыток обращения подряд (и выбирать из них удачную, если таковая случилась). Ведь сама функция f полиномиально вычислима, поэтому мы можем за полиномиальное время проверить, удалась ли попытка обращения. Другая идея: мы может ставить обращаемое слово y не только на первое место, но и на любое другое место от 1 до N . Алгоритм обращения. Этих двух идей окажется достаточно для доказательства теоремы. А именно, для данного алгоритма Rf N , претендующего на обращение f N , мы рассмотрим вероятностный алгоритм для обращения f (x), действующий следующим образом. Для каждого i от 1 до N поставим обращаемое слово y на i-е место 2.5. УСИЛЕНИЕ 19 и окружим его N − 1 словами, получив набор f (x1 ), . . . , f (xi−1 ), y, f (xi+1 ), . . . , f (xN ). Слова x1 , . . . , xi−1 , xi+1 , . . . , xN выбираются независимо и равномерно распределены в Bk(n) . К полученному набору применяется Rf N . Если i-я компонента результата лежит в прообразе y, констатируем удачу (и сворачиваем всё дальнейшее). Эти действия (N попыток, по одной для каждого i) составляют один этап алгоритма Rf . Полностью Rf состоит в повторении этого действия несколько раз. Обозначим число повторений через M (и выберем его дальше). [Заметим сразу, что ставить y на разные позиции необходимо. В самом деле, если Rf N почему-то не работает на образах слов, в которых первый бит (первого слова) равен нулю, то он вполне может иметь вероятность успеха 1/2. Но тогда и алгоритм Rf (если y ставится лишь на первое место) не будет работать на образах таких слов, и вероятность успеха не подымется выше 1/2, сколько повторений ни делай.] Теперь нам нужно подобрать значение M таким образом, чтобы из того, что вероятность успеха Rf меньше 1 − 1/p(n), следовало бы, что вероятность успеха Rf N меньше 1/q(n). (Число M будет некоторым полиномом от n, причём тем большим, чем больше q(n).) Для этого необходимо разобраться, как связаны вероятности успеха для алгоритмов Rf N и Rf . Обозначим через s1 (x1 ) вероятность того, алгоритм Rf N правильно обращает слово f (x1 )f (x2 ) . . . f (xN ) для случайно выбранных x2 , . . . , xN . Вероятность успешного обращения для первой попытки (когда мы ставим y на первое место) для слова f (x1 ) не меньше s1 (x1 ). Аналогичные вероятности можно рассмотреть и для других попыток (всего в каждом этапе N попыток). По аналогии обозначим их s2 (x2 ), . . . , sN (xN ). Какова вероятность успеха на одном этапе? Для входа f (x) она заведомо не меньше max(s1 (x), . . . , sN (x)), поскольку успех одной попытки означает успех всего этапа. Обозначим этот максимум через ŝ(x). 20 ГЛАВА 2. НЕОБРАТИМЫЕ И ОДНОСТОРОННИЕ ФУНКЦИИ Дальнейший ход доказательства можно описать так. Посмотрим, сколько имеется слов x, для которых величина ŝ(x) очень мала (меньше некоторой границы ε, которую мы выберем впоследствии). Такие слова, неформально говоря, трудны для обращения. Нетрудные слова хорошо обращаются алгоритмом Rf , поскольку на каждом этапе вероятность обращения не меньше ε, этапы независимы и их много. Пользуясь тем, что вероятность неудачи Rf больше 1/p(n) мы докажем, что трудных слов много. Отсюда будет следовать, что Rf N обращает f N с вероятностью меньше 1/q(n). Эти неформальные разговоры следует, конечно, уточнить. Оценки. Вероятность успеха алгоритмов Rf и Rf N можно связать следующим образом. Пусть ε — некоторые положительное число, порядка 1/poly(n). Будем называть слово x “трудным”, если ŝ(x) < ε. Обозначим через δ долю трудных слов среди всех слов длины n. Лемма 1. (1) Вероятность ошибки Rf при обращении слова f (x) (для случайного x) меньше δ + (1 − δ)(1 − ε)M (2) Вероятность успеха Rf N при обращении слова f N (x1 . . . xN ) (для случайных независимых x1 , . . . , xN ) меньше N δε + (1 − δ)N . При подходящем выборе параметров ε, M эта лемма позволит нам ограничить сверху вероятность успеха Rf N , зная, что вероятность ошибки Rf не меньше 1/p(n). Доказательство. (1) Вероятность ошибки Rf при обращении слова f (x) (для случайного x) меньше доли трудных слов плюс верхняя оценка вероятности обращения с M попыток каждого из простых слов. (2) Оценивая вероятность успешного обращения f N (x1 , . . . , xN ) алгоритмом Rf N на случайном входе, разделим пространство на две части: когда одно из слов xi является трудным и когда все они легкие. Для второй части нам не важны значения ŝ(x), мы пользуемся тем, что эта часть сама по себе имеет вероятность не больше (1 − δ)N . Первая часть: мы оценим вероятность в случае, когда трудным оказалось слово xi , а затем умножим оценку на N (вероятность объединения событий не больше суммы вероятностей). Вероятность того, что xi оказалось трудным, равна δ, и для каждого из трудных слов xi условная вероятность успешной работы алгоритма Rf N (при данном xi значении 2.6. НЕРАВНОМЕРНЫЕ РАСПРЕДЕЛЕНИЯ ВЕРОЯТНОСТЕЙ НА ВХОДАХ21 i-й координаты) меньше ε. В итоге получаем для первой части оценку N δε. Положим M = n/ε. Тогда второе слагаемое в верхней оценке вероятности ошибки при обращении f (первое утверждение леммы) примерно равно e−n . Как мы говорили, параметр ε будет выбран равным некоторому обратному полиному от n. Поэтому и число M будет некоторым полиномом от n. Следовательно, алгоритм Rf является полиномиальным. По условию вероятность ошибки Rf не меньше 1/p(n) (при всех достаточно больших n). Поэтому при всех достаточно больших n выполнено δ > 1/2p(n). Итак, доля трудных δ не меньше 1/2p(n). Теперь воспользуемся вторым утверждением леммы для оценки сверху вероятности успеха Rf N . Нам надо выбрать ε, N так, чтобы эта оценка была строго меньшей 1/q(n). Как было уже обещано, положим N = np(n). Тогда второе слагаемое в верхней оценке равно  1 1− 2p(n) " np(n) = 1 1− 2p(n) 2p(n) #n/2 ≈ e−n/2 а значит при больших n меньше 1/2q(n). Поэтому ε можно определить так, чтобы первое слагаемое было не больше 1/2q(n). Например, положим 1 1 = . ε= 2N q(n) 2np(n)q(n) Количество этапов M в алгоритме Rf будет равно n/ε = 2n2 p(n)q(n) Теорема доказана. Задача 14. Покажите, что в построении алгоритма Rf можно обойтись меньшим количеством этапов M = n2 q(n). 2.6 Неравномерные распределения вероятностей на входах В определении необратимой функции предполагается, что задача обращения fn (x) трудна в среднем для случайного выбора x из области определения функции. При этом все слова из области определения считаются 22 {d68} ГЛАВА 2. НЕОБРАТИМЫЕ И ОДНОСТОРОННИЕ ФУНКЦИИ равновероятными. Для многих применений равномерность распределения не имеет значения: достаточно лишь, чтобы существовал полиномиальный вероятностный алгоритм генерации трудных примеров. Приведем соответствующие определения. Определение 7. Последовательность распределений вероятностей µn на множестве двоичных слов называется полиномиально моделируемой, если существует полиномиальный вероятностный алгоритм K такой, что для всех x ∈ {0, 1}∗ и n ∈ N выполнено Pr[K(1n ) = x] = µn (x). {d68a} Чуть более слабым является определение доступных распределений. Определение 8. Будем называть последовательность распределений µn доступной, если существует полиномиальный вероятностный алгоритм K, который на входе 1n выдаёт некоторое слово или символ ⊥, причём: вероятность события K(1n ) = ⊥ пренебрежимо мала (то есть, стремится к нулю быстрее любого обратного полинома) и Pr[K(1n ) = x|K(1n ) 6= ⊥] = µn (x) для всех x и n. Замечание 1. Определение доступности не изменится, если разрешить вероятности события K(1n ) = ⊥ быть меньше некоторой константы между нулем и единицей, скажем, 1/2. В самом деле, многократно запуская алгоритм K (до первого успеха), можно понизить вероятность события K(1n ) = ⊥ до экспоненциально малой величины. Более того, можно даже разрешить вероятности события K(1n ) = ⊥ быть меньше 1 − 1/p(n), где p — любой полином. В этом случае для понижения вероятности до экспоненциально малой величины достаточно сделать np(n) повторений. Ясно, что любая полиномиально моделируемая последовательность распределений доступна. Обратное неверно, как следует из примеров, приводимых ниже. Пример 1. Пусть µn не зависит от n и является равномерным распределением на множестве из трёх слов {00, 01, 10} длины 2. Это семейство распределений не является полиномиально моделируемым. В самом деле, для любого полиномиально моделируемого распределения, вероятность каждой строки есть двоично-рациональное число, то есть, рациональное число со знаменателем 2k . (Вероятность любого исхода равна 2.6. НЕРАВНОМЕРНЫЕ РАСПРЕДЕЛЕНИЯ ВЕРОЯТНОСТЕЙ НА ВХОДАХ23 доле всех бросаний, для которых моделирующий алгоритм выдаёт этот исход. А общее число исходов бросаний есть степень двойки.) Поскольку 1/3 не является двоично-рациональным числом, смоделировать это распределение за полиномиальное время невозможно1 . Но это распределение является доступным. В самом деле, рассмотрим следующий алгоритм K: делаем два бросания, если выпало 00, 01 или 10, то выдаём полученную последовательность на выход. Вероятность события K(1n ) = ⊥ равна 1/4. Пример 2. Равномерное распределение µn на множестве всех простых чисел меньших 2n является доступным. Для его генерации можно выбрать случайное число в интервале 0, 1, . . . , 2n − 1, бросая монетку n раз, и выдать полученное число, если оно окажется простым. А иначе выдать ⊥. По закону распределения простых чисел в этом интервале примерно 2n / ln(2n ) = 2n /n ln 2, поэтому вероятность ⊥ будет примерно равна 1 − 1/n ln 2. Разрешим в определении необратимости использовать любые доступные последовательности распределений. Сформулируем аккуратно один вариант определения, скажем, определение функции сильно необратимой для неравномерного противника. Остальные три варианта определения формулируются совершенно аналогично. Определение 9 (для неравномерного противника). Последовательность функций {fn } называется сильно необратимой относительно последовательности распределений {µn } (а сама последовательность распределений — трудной для последовательности функций {fn }), если для любой последовательности схем Cn из функциональных элементов, размер которых ограничен некоторым полиномом от n, вероятность события fn (Cn (fn (x))) = fn (x), по распределению µn стремится к нулю при n → ∞ быстрее любого обратного полинома. Если последовательность функций сильно необратима относительно некоторой доступной последовательности распределений, то мы будем называть эту последовательность функций необратимой в обобщенном смысле. Аналогично дается слабый вариант определения, а также определение для равномерного противника. 1 Это можно было бы сделать за полиномиальное в среднем время, но такие алгоритмы мы не рассматриваем. 24 ГЛАВА 2. НЕОБРАТИМЫЕ И ОДНОСТОРОННИЕ ФУНКЦИИ Замечание 2. В определении трудного распределения под задачей обращения fn (x) мы понимаем, как обычно, задачу нахождения хотя бы одного прообраза fn (x). Найденный прообраз может иметь нулевую вероятность относительно распределения µn . {p35} Задача 15. Докажите, что если для данного семейства функций (для любого из четырех вариантов определения) существует доступное трудное семейство распределений, то существует и полиномиально моделируемое трудное семейство распределений. Задача 16. Предположим, существует односторонняя функция в обобщенном смысле. Докажите, что тогда существует и односторонняя функция в обычном смысле. Это верно для всех четырех вариантов определения (сильного/слабого, равномерного/неравномерного). Задача 17. Предположим, что существует односторонняя функция. Докажите, что существует функция, не являющаяся односторонней, но являющаяся обобщенно односторонней. Это верно для всех четырех вариантов определения (сильного/слабого, равномерного/неравномерного). Глава 3 Односторонние перестановки Особое значение для криптографических протоколов имеют односторонние перестановки, то есть односторонние семейства функций fn : {0, 1}p(n) → {0, 1}p(n) , для которых функция fn биективна для всех n. Одно из важных свойств односторонних перестановок состоит в том, что их действие сохраняет равномерное распределение на области определения. Это позволяет довольно просто построить генератор псевдослучайных чисел (ПСЧ) из любой односторонней перестановки (о генераторах написано подробно ниже в главе 4). К сожалению, неизвестно примеров функций, которые хотя бы предположительно являлись односторонними перестановками в этом смысле. Но есть три примера семейств функций, не являющихся односторонними перестановками (в этом смысле), из которых тем не менее довольно просто можно построить генератор ПСЧ (в предположении, что эти семейства сильно необратимы). К этим трем примерам мы и переходим. 3.1 Примеры Пример 1: функция Рабина. Для каждого 2n-битового числа y определим функцию fy на 2n-битовых натуральных числах формулой fy (x) = x2 mod y. Эта функция не является биективной, поскольку из каждого полного квадрата x2 по модулю y существует по крайней мере два различных квадратных корня x и −x. Рассмотрим теперь числа y, являющиеся произведением двух различных простых n-битовых чисел p, q вида 4k + 3 (такие простые числа называются числами Блюма). Для 25 26 ГЛАВА 3. ОДНОСТОРОННИЕ ПЕРЕСТАНОВКИ таких y функция fy биективна на множестве Dy = {z 2 mod y | 0 < z < y, (z, y) = 1}. {rabin-hypo} В самом деле, пусть x = (z 2 mod y) ∈ Dy . Тогда по x2 можно найти x по модулю p, возведя x в степень (p + 1)/4. Действительно, (x2 )(p+1)/4 = z p+1 = z 2 = x в поле вычетов по модулю p. То же самое верно и по модулю q, поэтому по x2 можно восстановить x. Таким образом, x2 однозначно задаёт x mod p и x mod q, а значит и x mod pq (поскольку p, q взаимно просты). Поэтому сужение fy на Dy инъективно. (Из этого, конечно не следует, обратимость функции fy на Dy , поскольку для обращения нужно знать числа p и q.) Поскольку fy действует из Dy в Dy , она также и сюръективна, то есть, fy есть перестановка Dy . При малых y эта функция обратима, например, потому что имеет небольшое множество значений. Однако, для случайно выбранного y можно предположить, что функция fy сильно необратима. Более точно, мы будем в дальнейшем использовать следующую гипотезу. Гипотеза 1 (о необратимости функции Рабина). Пусть p выбирается случайно с равномерным распределением среди n-битовых чисел Блюма. Пусть q выбирается случайно с равномерным распределением среди nбитовых чисел Блюма, отличных от p. Положим y = pq. Пусть x выбирается случайно и независимо от p, q с равномерным распределением в Dy . Обозначим полученное распределение на словах длины 4n через νn . Гипотеза состоит в том, что это распределение является трудным для функции xy 7→ (x2 mod y)y (здесь имеется в виду конкатенация, а не произведение). Обратите внимание, что задача её обращения состоит в том, что по y и fy (x) надо найти любой прообраз fy (x) (не обязательно принадлежащий Dy ). Доступность этого распределения следует из того, что среди n-битовых простых чисел примерно половина имеет вид 4k + 3. Лемма 2. Последовательность распределений {νn } доступна. Доказательство. Выбираем случайно число вида 4k + 3 из n битов и проверяем, просто ли оно, скажем, с помощью полиномиального алгоритма проверки простоты (“алгоритма трех индийцев” Агравала, Кайала и Саксены [1]). Если не просто, то выдаём ⊥. Из закона распределения простых чисел (количество простых чисел, меньших m примерно равно 27 3.1. ПРИМЕРЫ m/ ln m, причём примерно половина из них имеет вид 4k + 3) следует, что вероятность этого события будет меньше 1 − ε/n для некоторой положительной константы ε. Затем так же генерируем q (но если оно окажется равным p, то опять выдаем ⊥). Число x выбираем равномерно среди натуральных чисел, меньших y. Затем проверяем алгоритмом Евклида взаимную простоту x и y. Если они не взаимно просты, то выдаём ⊥. Вероятность этого события отделена от 1. В самом деле, количество чисел, не взаимно простых с y = pq меньше p + q, а их доля меньше 1/q + 1/p 6 1/2 + 1/3 = 5/6. Пример 2: функция RSA. В некотором смысле функция RSA есть обобщение функции Рабина. Пусть дано 2n-битовое число y вида p·q, где p, q — различные простые n-битовые числа. Пусть еще дано 2n-битовое число z, взаимно простое со значением функции Эйлера φ(y) = (p − 1)(q − 1) на y. Определим функцию RSA fy,z на 2n-битовых числах равенством fy,z (x) = xz mod y. Рассмотрим множество Dy,z = {x | 0 < x < y, (x, y) = 1}. Функция fy,z является перестановкой этого множества. В самом деле, эта функция очевидно отображает Dy,z в себя, поэтому достаточно установить ее инъективность. В кольце вычетов по модулю φ(y) число z имеет обратный элемент u, то есть, для некоторого целого k выполнено zu = 1 + kφ(y). Поэтому по xz можно найти x, возведя xz в степень u. Действительно, φ(y) есть мощность мультипликативной группы вычетов по модулю y, и по теореме Лагранжа мы имеем xzu = x1+kφ(y) ≡ x (mod y). Из этого, конечно не следует, обратимость функции RSA, поскольку для обращения нужно знать u (или числа p и q, по которым u можно вычислить). Гипотеза 2 (о необратимости функции RSA). Пусть p выбирается случайно с равномерным распределением среди простых n-битовых чисел. Пусть q выбирается случайно с равномерным распределением среди простых n-битовых чисел, отличных от p. Пусть z выбирается случайно с равномерным распределением среди 2n-битовых чисел, взаимно простых со значением функции Эйлера φ(y) = (p − 1)(q − 1) на y. Пусть x выбирается случайно с равномерным распределением в Dyz . Обозначим полученное распределение на тройках 2n-битовых чисел через νn . Гипотеза {rsa-hypo} 28 ГЛАВА 3. ОДНОСТОРОННИЕ ПЕРЕСТАНОВКИ состоит в том, что это распределение является трудным для функции xyz 7→ (xz mod y)yz. Лемма 3. Последовательность распределений {νn } доступна Доказательство. Это не вполне очевидно из-за того, что надо уметь порождать числа, взаимно простые с N = (p − 1)(q − 1) (заметим в скобках, что порождая z, мы знаем не только y, но и те p, q, произведением которых оно было получено). Будем это делать обычным образом, то есть, выбирать случайно число, меньшее N и проверять на взаимную простоту алгоритмом Евклида. Если не повезет, то выдадим ⊥. Вероятность успеха равна доле взаимно простых с N чисел среди всех меньших N чисел. Эта доля не меньше 1/(k + 1), где k есть количество простых делителей N . В самом деле, пусть эти делители суть p1 , . . . , pk . Тогда (1 − 1/p1 )-ая часть всех чисел не делится на p1 , среди них (1 − 1/p2 )-ая часть не делится на p2 и так далее. Поэтому эта доля равна (1 − 1/p1 )(1 − 1/p2 ) · · · (1 − 1/pk ). Ясно, что pi > i + 1, поэтому эта доля не меньше (1 − 1/2)(1 − 1/3) · · · (1 − 1/(k + 1)) = 1/(k + 1). Осталось заметить, что k 6 log2 N 6 2n, поэтому вероятность успеха не меньше 1/2n. {exp-hypo} Пример 3: дискретная экспонента. Пусть дано n-битовое простое число y. Пусть дано число z, являющееся примитивным (в другой терминологии, первообразным) корнем из 1 степени y − 1 в поле вычетов по модулю y, то есть, z принадлежит интервалу [1, y − 1] и порождает всю мультипликативную группу вычетов по модулю y (то есть любой ненулевой вычет является некоторой степенью z). Дискретная экспонента fy,z определена на n битовых числах равенством fy,z (x) = (z x mod y). Она является перестановкой множества {1, 2, . . . , y − 1} Гипотеза 3 (О необратимости дискретной экспоненты). Пусть y выбирается случайно с равномерным распределением среди всех простых nбитовых чисел. Пусть z выбирается случайно с равномерным распределением среди всех примитивных корней из 1 степени y − 1 по модулю y. Пусть x выбирается случайно с равномерным распределением в {1, 2, . . . , y − 1}. Обозначим полученное распределение на тройках nбитовых числах через νn . Гипотеза состоит в том, что это распределение является трудным для функции xyz 7→ (z x mod y)yz. 3.2. ОБЩЕЕ ОПРЕДЕЛЕНИЕ СЕМЕЙСТВА ОДНОСТОРОННИХ ПЕРЕСТАНОВОК29 Доступность этого распределения не очевидна и доказана в [3]. Задача обращения этой функции есть задача вычисления логарифма данного числа по данному основанию в кольце вычетов по данному простому модулю. Эту задачу принято называть “дискретным логарифмированием”. 3.2 Общее определение семейства односторонних перестановок Обобщим эти три примера, определив односторонние семейства перестановок. Определение 10. Пусть даны многочлены p, q и для каждого натурального n и каждого e ∈ {0, 1}q(n) задана функция fe : {0, 1}p(n) → {0, 1}p(n) так, что функция ex 7→ fe (x) полиномиально вычислима. Пусть для каждого n задано некоторое множество слов An ⊂ {0, 1}q(n) и некоторое доступное распределение вероятностей µn на An . Пусть для каждого e ∈ An задано некоторое множество De ⊂ {0, 1}p(n) , сужение функции fe на которое является перестановкой множества De . Пусть, наконец, функция gn (ex) = efe (x), определённая на словах длины q(n) + p(n), является сильно необратимой относительно следующего распределения: слово e выбирается с данным нам распределением µn на An , а слово x — с равномерным распределением в De . Наконец, пусть семейство равномерных распределений на De , e ∈ An , n ∈ N, доступно.1 В этом случае семейство функций {fe } называется семейством односторонних перестановок. Замечание 3. Напомним, что мы предполагаем, что многочлены p, q имеет ненулевую степень и неотрицательные коэффициенты. Благодаря этому допущению, пару слов (e, x) можно закодировать конкатенацией ex этих слов. Замечание 4. Обратите внимание, что в определении речь идет об обращении функции ex 7→ efe (x). Задача её обращения состоит в том, что по паре слов e, fe (x) надо найти любой прообраз fe (x) (не обязательно принадлежащий De ). 1 Это означает, что существует полиномиальный вероятностный алгоритм K, который для любых n ∈ An и e ∈ An , получив на вход e, выдает некоторое x ∈ De или ⊥, причем вероятность выдачи ⊥ пренебрежим мала, а условное распределение на выходах при условии, что выход не равен ⊥, равномерно. {permutation} 30 ГЛАВА 3. ОДНОСТОРОННИЕ ПЕРЕСТАНОВКИ Замечание 5. Для применений важно то, что действие функции gn сохраняет распределение, для которого она является сильно необратимой. Это следует из того, что действие любой перестановки сохраняет равномерное распределение, а первый аргумент функция gn не меняет. Замечание 6. Если {fe } — семейство односторонних перестановок, то функция ex 7→ efe (x) является односторонней в обобщенном смысле. Как следует из задачи 16, любая односторонняя в обобщенном смысле функция может быть преобразована в одностороннюю в обычном смысле функцию. Поэтому функции Рабина, RSA и дискретная экспонента дают три новых примера предположительно односторонних функций. Поскольку семейство односторонних перестановок однозначно задаётся одной обобщенно односторонней функцией ex 7→ efe (x), мы будем говорить односторонняя перестановка вместо «семейство односторонних перестановок». 3.3 {trapdoor} Семейства односторонних перестановок с секретом В определении односторонней перестановки мы собрали общие свойства функций Рабина и RSA и дискретной экспоненты. Теперь обратим внимание на важные различия. Пусть дана односторонняя перестановка {fe }. Мы называем её односторонней перестановкой с секретом (trapdoor permutation), если алгоритм выбора случайного слова из An (см. определение односторонней перестановки) вместе со случайным словом e из An выдает дополнительную информацию d, которая позволяет обратить fe (x) для всех x ∈ De . Это слово d называется секретом. Определение 11. Семейство односторонних перестановок {fe } называется семейством односторонних перестановок с секретом, если полиномиальный алгоритм K, который по n генерирует распределение µn (см. определение односторонней перестановки) вместе с каждым словом e ∈ An выдает еще одно слово d. При этом существует полиномиальный детерминированный алгоритм, который для любой пары (e, d), которая может быть выдана алгоритмом K на входе 1n , и для любого x ∈ De , получив на вход d и fe (x), выдаёт x. 3.4. УЛУЧШЕННЫЕ СЕМЕЙСТВА ОДНОСТОРОННИХ ПЕРЕСТАНОВОК31 Если гипотезы 1, 2 верны, то у нас есть два примера односторонних перестановок секретом. Убедимся в этом. Функция Рабина. Вспомним, как устроен алгоритм, который выбирает слово y из An с равномерным распределением. Сначала он находит простые числа p, q. В качестве секрета d он может выдать эту пару чисел. Зная эти числа, мы можем по данному и x2 = z 4 mod pq найти (z 4 )(p+1)/4 mod p = z 2 mod p и (z 4 )(q+1)/4 mod q = z 2 mod q за полиномиальное время с помощью алгоритма быстрого возведения в степень. Затем мы можем найти x = z 2 mod pq с помощью полиномиального алгоритма нахождения числа по его остаткам при делении на p и q. Функция RSA. Для этого семейства функций множество An состоит из слов вида hy, zi, где y = pq и p, q являются n-битовыми простыми числами, а z взаимно просто с (p − 1)(q − 1). Алгоритм выбора слов An сначала находит p и q, поэтому он может выдать тройку hp, q, zi в качестве секрета. Алгоритм обращения по данным hp, q, zi находит u, обратное к z по модулю (p − 1)(q − 1) (это можно сделать с помощью алгоритма Евклида), и возводит xz mod pq в степень u по модулю pq, используя быстрый алгоритм возведения в степень. 3.4 Улучшенные семейства односторонних перестановок Для односторонних перестановок задача обращения заключается в том, что нужно по случайно выбранному e (по распределению µn ) и случайному y ∈ De (по равномерному распределению) найти fe−1 (y). Семейство улучшенных односторонних перестановок с секретом (enhanced trapdoor permutation) — это семейство односторонних перестановок с секретом {fe }, удовлетворяющая усиленному требованию необратимости. Требуется, чтобы даже зная случайные биты, использованные при выборе случайного элемента y из De нельзя было найти fe−1 (y) с не пренебрежимо малой вероятностью. Точнее, в Определении 11 нужно дополнительно потребовать существование алгоритма K доступа к равномерному распределению на De такого, чтобы для любой последовательности схем Cn размера poly(n) (вероятностного полиномиального алгоритма, для равномерного противника) вероятность события [Cn на входе er выдаёт некоторый прообраз слова K(e, r) относительно fe ] была пренебрежи- 32 ГЛАВА 3. ОДНОСТОРОННИЕ ПЕРЕСТАНОВКИ мо мала. Здесь e выбирается с распределением µn , а r — слово длины poly(n), используемое алгоритмом K в качестве случайных битов, а K(e, r) обозначает слово, выданное K на входе e со случайными битами r. Задача 18. Докажите, что если гипотеза 2 верна, то функция RSA является улучшенной односторонней перестановкой. Докажите, что то же самое верно для дискретной экспоненты. Для функции Рабина аналогичное утверждение может быть и неверным, поскольку естественный алгоритм генерации равномерного распределения на De , разглашает некоторый прообраз сгенерированного слова относительно fe . В самом деле, выданное число x получается возведением другого числа z в квадрат. Зная случайные биты алгоритма, можно найти это z. Можно было бы пытаться порождать полный квадрат по данному модулю не с помощью возведения случайного вычета в квадрат, а с помощью проверки, является ли случайно выбранное число полным квадратом. Однако непонятно, как это сделать за полиномиальное время, не имея разложения y на простые множители. Глава 4 Генераторы псевдослучайных чисел {ch-gen} 4.1 Определение генератора ПСЧ Определение 12. Пусть даны многочлены k(n), l(n) такие, что l(n) > k(n) для всех n. Генератором ПСЧ типа k(n) → l(n) будем называть семейство функций Gn , где для каждого n функция Gn отображает двоичные слова длины k(n) в слова длины l(n), удовлетворяющее следующим двум условиям: (а) Семейство Gn вычислимо за полиномиальное время (по данным n и s за полиномиальное от n количество шагов можно найти Gn (s)). (б) Для неравномерного противника: Для любой последовательности схем {Cn } полиномиального размера вероятности событий Cn (Gn (s)) = 1 (где s выбирается случайно среди всех строк длины k(n)) и Cn (r) = 1 (строка r выбирается с равномерным распределением среди слов длины l(n)) приблизительно равны. Для навномерного противника то же самое должно быть выполенным для вероятностных полиномиальных алгоритмов: для любого такого алгоритма A вероятности событий A(1n , Gn (s)) = 1 и A(1n , r) = 1 приблизительно равны. Свойство (б) называют надёжностью генератора. Задача 19. Пусть генератор Gn типа k(n) → l(n) надежен для неравномерного противника. Докажите, что для любого многочлена p(n) суще33 {p-gen} 34 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ ствует пренебрежимо малая последовательность αn со следующим свойством. Для любого n и любой схемы C размера p(n) вероятности событий C(Gn (s)) = 1 (где s выбирается случайно среди всех строк длины k(n)) и C(r) = 1 (строка r выбирается с равномерным распределением среди слов длины l(n)) оттличаются не более, чем на αn . Объясним смысл определения. Вероятностные алгоритмы нуждаются в случайных битах, которые компьютеру, строго говоря, неоткуда взять. На практике с этим справляются с помощью так называемых генераторов ПСЧ, получающих на вход битовую строку небольшой длины, называемую зерном, выдающую на выход битовую строку той длины, которая нужна вероятностному алгоритму. (В качестве зерна часто используется текущее значения счетчика тактов.) Выданная генератором строка подаётся на вход алгоритму вместо случайной строки, нужной ему. Чтобы такая замена была осмысленной, нужно, чтобы для любой пары (вход x, выход y) вероятность того, что исходный алгоритм на входе x даёт выход y, изменилась незначительно от такой замены. Иными словами, нам нужно, чтобы для всех x, y вероятности событий A(x, r) = y (где r — строка случайных битов, нужная алгоритму для работы на входе x) и A(x, G(s)) = y, (где s зерно, даваемое на вход используемому генератору ПСЧ G) были приблизительно равны. Теперь допустим, что исходный алгоритм A полиномиален по времени и на входах длины n использует случайную строку длины, скажем n2 . И пусть в указанной схеме мы используем в качестве генератора ПСЧ, скажем, генератор Gn типа n → n2 надежный для неравномерного противника. Это позволяет нам вместо n2 случайных бит обойтись n случайными генератор Gm типа m → m4 √ √ битами. А если использовать (для m = n), то достаточно будет n случайных бит. При этом для любой пары (вход x, выход y) с |x| = n событие A(x, r) = y распознается некоторой схемой полиномиального от n размера (схема зависит от x, y, но ее размер зависит только от n), получающей на вход r. Поэтому при использовании псевдослучайной строки Gn (s) вместо случайной строки r вероятность события A(x, r) = y изменится на пренебрежимо малую величину (см. задачу 19). Определение 13. Определим также генераторы ПСЧ типа k(n) → ∞, как семейства Gn , где Gn отображает двоичные слова длины k(n) в бесконечные двоичные последовательности, удовлетворяющие следующим требованиям. 4.2. ГЕНЕРАТОРЫ ПСЧ И ОДНОСТОРОННИЕ ФУНКЦИИ 35 (а) Существует алгоритм, который по слову s и натуральному l за полиномиальное от |s| + l время вычисляет l-ый бит последовательности Gn (s). (б) Для неравномерного противника: для любой последовательности схем Cn размера poly(n) вероятность событий Cn (Gn (s)) = 1 и Cn (rn ) = 1 отличаются на пренебрежимо малую величину. Здесь Cn (Gn (s)) обозначает результат применения схемы к kn первым битам Gn (s), где kn — количество входов Cn , а rn выбирается с равномерным распределением среди слов длины kn . Имеется следующее очевидное соотношение между генераторами типа k(n) → l(n) и генераторами типа k(n) → ∞. Если Gn — генератор типа k(n) → ∞, то для любого полинома l(n) последовательность функций Hn (s) = (Gn (s))1:l(n) , где s ∈ {0, 1}k(n) , будет генератором типа k(n) → l(n). Здесь α1:i обозначает начало длины i последовательности α. Обратно, мы докажем, что по любому генератору типа k(n) → l(n) (какие бы ни были k(n) < l(n)) можно построить генератор типа k(n) → ∞. Задача 20. Докажите, что существует последовательность функций Gn : {0, 1}n → {0, 1}n+1 (не обязательно вычислимая за полиномиальное время) такая, что случайная величина Gn (s) удовлетворяет свойству (б) для неравномерного противника из определения генератора ПСЧ. Задача 21. Докажите, что если функция Gn является генератором типа k(n) → l(n), а xn последовательность слов длины l(n), вычислимая за время poly(n), то функция s 7→ Gn (s) ⊕ xn является генератором. 4.2 Генераторы ПСЧ и односторонние функции Теорема 3. Любой генератор Gn типа k(n) → l(n) является слабо необратимой функцией. Доказательство. Приведем доказательство для неравномерного противника (для равномерного оно совершенно аналогично). Мы утверждаем, что никакая последовательность схем Cn полиномиального размера не может обратить Gn (s) в вероятностью успеха, большей 3/4 (для бесконечно многих n). В самом деле, допустим, такая последовательность схем существует. Тогда рассмотрим следующий тест 36 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ на последовательностях длины l(n): применяем к последовательности y схему Cn , затем проверяем, с помощью алгоритма, вычисляющего Gn , правильно ли схема Cn обратила y (то есть, Gn (Cn (y)) = y). Если обращение произошло удачно, то выдаем 1, а иначе 0. Вероятность того, что тест будет пройден случайной величиной Gn (s), не менее 3/4 (для бесконечно многих n). Вероятность того, что равномерно распределенная случайная величина пройдет тест, не больше 1/2, поскольку множество значений Gn составляет не более половины всего множества последовательностей длины l(n). Поскольку Cn и Gn можно вычислить схемой полиномиального от n размера, описанный тест имеет полиномиальный размер. {th-hill} Задача 22. Докажите, что любой генератор ПСЧ Gn типа k(n) → l(n) является и сильно необратимой функцией. Итак, если для каких-то l(n) > k(n) существует генератор типа k(n) → l(n), то существуют слабо односторонние, а значит и сильно односторонние функции. Оказывается, верно и обратное. Теорема 4 ([6]). Если существует сильно односторонняя функция, то существует и генератор ПСЧ типа n → ∞. Это верно и для равномерного, и для неравномерного противника. Мы докажем это только для неравномерного противника (для равномерного противника конструкция и доказательство сложнее). Сначала мы докажем немного более слабое утверждение: если существует семейство односторонних перестановок, то существует и генератор ПСЧ типа {th-gen-gen} n → ∞. Теорема 5. Если существует семейство односторонних перестановок, то существует генератор типа n → ∞. Доказательство этой теоремы излагается в следующих четырёх разделах. 4.3 Вычислительно неотличимые случайные величины {comp-dist} В этом разделе мы определяем понятие вычислительной неотличимости. Оно является технически удобным понятием при построении генераторов ПСЧ. Оно обобщает свойство (б) из определения генератора ПСЧ. 4.3. ВЫЧИСЛИТЕЛЬНО НЕОТЛИЧИМЫЕ СЛУЧАЙНЫЕ ВЕЛИЧИНЫ37 {stat-dist} Определение 14. Статистическим расстоянием между распределениями вероятностей µ и ν на множестве двоичных слов называется максимум |µ(A) − ν(A)| по всем множествам слов A. Последовательности распределений вероятностей µn и νn , называются статистически неотличимыми, если статистическое расстояние между µn и νn стремится к нулю быстрее любого обратного многочлена от n. Аналогично определяется статистическая неотличимость случайных величин: случайные величины αn и βn , зависящие от натурального параметра n, называются статистически неотличимыми, если их распределения µn (x) = Pr[αn = x] и νn (x) = Pr[βn = x] статистически неотличимы. Нетрудно понять, что максимум, упомянутый в определении, достигается на множестве слов A = {x | µ(x) > ν(x)} (а также на его Pдополнении) и равен половине L1 -расстояния между распределениями x∈{0,1}∗ |µ(x)− ν(x)|. Определение 15. Для неравномерного противника: случайные величины αn и βn , зависящие от натурального параметра n, со значениями в множестве слов некоторой длины l(n) называются вычислительно неотличимыми, если для любой последовательности схем C0 , C1 , . . . , Cn , . . . размера poly(n) (с l(n) входами и одним выходом) вероятность событий Cn (αn ) = 1 и Cn (βn ) = 1 отличаются на пренебрежимо малую величину. Схема Cn в этом контексте называется тестом и мы говорим, что случайная величина αn проходит тест Cn , если Cn (αn ) = 1. Таким образом, мы требуем, чтобы αn и βn проходили любые тесты полиномиального размера с приблизительно равной вероятностью. Определение 16. Для равномерного противника в предыдущем определении надо заменить последовательность схем C0 , C1 , . . . , Cn , . . . на полиномиальный вероятностный алгоритм, получающий на вход число n в унарной записи и значение случайной величины. Как и в случае необратимых функций, равномерное определение слабее неравномерного. Если αn и βn статистически неотличимы, то они и вычислительно неотличимыми (для неравномерного противника), поскольку разность вероятностей попадания αn и βn в множество {x | Cn (x) = 1}, задаваемое тестом Cn , не превосходит статистического расстояния между αn и βn . Мы по-существу уже использовали определение вычислительной неотличимости в определении генератора ПСЧ. А именно, в определении надежности генератора мы требовали, чтобы последовательность случайных величина Gn (s) (где s выбирается с равномерным распределением 38 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ среди строк длины l(n)) была вычислительно неотличима от равномерно распределённой случайной величины. Задача 23. Докажите, что требование надежности генератора нельзя усилить, потребовав статистической неотличимости Gn (s) и равномерно распределенной случайной величины (то есть, при таком усилении генераторы ПСЧ заведомо не существуют). Нам понадобятся некоторые простые свойства понятия вычислительной неотличимости. Лемма 4. 1) Отношение вычислительной неотличимости рефлексивно, симметрично и транзитивно. 2) Для неравномерного противника: Если αn и βn вычислительно неотличимы, а Cn последовательность схем полиномиального от n размера с l(n) входами, то и случайные величины Cn (αn ) и Cn (βn ) вычислительно неотличимы. Для равномерного противника в этом свойстве последовательность схем надо заменить на полиномиальный вероятностный алгоритм, получающий на вход число n в унарной записи и значение случайной величины. 3) Для неравномерного противника: Пусть случайные величины αn , βn и γn имеют совместное распределение, причем для всех n случайная величина γn независима с αn , а также независима с βn . Тогда, если случайные величины αn и βn вычислительно неотличимы, то и случайные величины αn γn и βn γn вычислительно неотличимы. Для равномерного противника в условии дополнительно надо потребовать, чтобы случайная величина γn была полиномиально моделируемой. 4) Для неравномерного противника предыдущее свойство можно усилить следующим образом. Пусть случайные величины αn , βn и γn имеют совместное распределение. И пусть для любой последовательности значений cn случайной величины γn случайные величины (αn |γn = cn ) и (βn |γn = cn ) вычислительно неотличимы.1 Тогда αn γn и βn γn вычислительно неотличимы. 1 (αn |γn = cn ) обозначает случайную величину с тем же множеством значений, что и у случайной величины αn , которая принимает значение a с вероятностью Pr[αn = a|γn = cn ]. 4.3. ВЫЧИСЛИТЕЛЬНО НЕОТЛИЧИМЫЕ СЛУЧАЙНЫЕ ВЕЛИЧИНЫ39 Доказательство. 1) Рефлексивность и симметричность очевидны. Транзитивность следует из транзитивности отношения приблизительного равенства. В самом деле, если вероятности событий Cn (αn ) = 1 и Cn (βn ) = 1 приблизительно равны, а также вероятности событий Cn (βn ) = 1 и Cn (γn ) = 1 приблизительно равны, то и вероятности событий Cn (αn ) = 1 и Cn (γn ) = 1 приблизительно равны. 2) Пусть дана последовательность схем Tn полиномиального от n размера с s(n) входами (где s(n) — количество выходов Cn ). Тогда последовательность схем Dn (x) = Tn (Cn (x)) можно рассматривать, как тест на отличимость αn и βn . Размер схемы Dn есть сумма размеров Tn и Cn , а значит ограничен полиномом от n. По определению вычислительной неотличимости вероятность того, что Dn (αn ) = 1 пренебрежимо мало отличается от вероятности того, что Dn (βn ) = 1. Осталось заметить, что первая вероятность равна вероятности того, что выход схемы Tn на входе Cn (αn ) равен 1, и аналогичное верно для Cn (βn ). Для равномерного противника надо в этом рассуждении заменить схемы Tn и Cn на полиномиальные вероятностные алгоритмы T (1n , ·) и C(1n , ·). 3) Для неравномерного противника: Допустим, что существует последовательность схем Tn полиномиального от n размера такая, что вероятности событий Tn (αn γn ) = 1 и Tn (βn γn ) = 1 отличаются на εn = 1/poly(n) для бесконечно многих n. Разность вероятностей событий Tn (αn γn ) = 1 и Tn (βn γn ) = 1 равна среднему значению разности вероятностей Pr[Tn (αn c) = 1] − Pr[Tn (βn c) = 1] по случайно выбранному c (в соответствии с распределением случайной величины γn ). Поэтому для бесконечно многих n найдется c = cn в множестве значений γn , для которого эта разность не меньше ε по абсолютной величине. Запаивая значение cn в схему Tn , мы получим отличитель случайных величин αn и βn , что противоречит условию. Для равномерного противника: Допустим, что существует полиномиальный вероятностный алгоритм T такой, что вероятности событий T (1n , αn γn ) = 1 и T (1n , βn γn ) = 1 отличаются на εn = 1/poly(n) для бесконечно многих n. Пусть случайная величина γn моделируется полиномиальным алгоритмом K. Тогда вероятности событий T (1n , αn γn ) = 1 и T (1n , αn K(1n )) = 1 совпадают, и аналогичное верно для случайной величины βn . Поскольку T (1n , xK(1n )) также является полиномиальным 40 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ вероятностным алгоритмом, случайные величины αn и βn не являются вычислительно неотличимыми. 4) Это доказывается аналогично предыдущему. Допустим, что существует последовательность схем Tn полиномиального от n размера такая, что вероятности событий Tn (αn γn ) = 1 и Tn (βn γn ) = 1 отличаются на εn = 1/poly(n) для бесконечно многих n. Разность вероятностей событий Tn (αn γn ) = 1 и Tn (βn γn ) = 1 равна среднему значению разности вероятностей Pr[Tn (αn c) = 1|γn = c] − Pr[Tn (βn c) = 1|γn = c] по случайно выбранному c в соотвествии с распределением случайной величины γn . (Раньше у нас не было условия, поскольку γn была независима от αn и от βn .) Поэтому для бесконечно многих n найдется c = cn в множестве значений γn , для которого эта разность не меньше ε по абсолютной величине. Запаивая значение cn в схему Tn , мы получим отличитель случайных величин (αn |γn = cn ) и (βn |γn = cn ), что противоречит условию. {l98} В дальнейшем нам понадобится еще и аналог четвертого свойства для статистического расстояния: Лемма 5. Пусть даны совместно распределённые случайные величины A, B, C. Будем обозначать через B|A=a случайную величину B с условным распределением при известном a. Тогда L1 -расстояние между парами случайных величин A, B и A, C равно среднему по a L1 -расстоянию между B|A=a и C|A=a : L1 ((A, B), (A, C)) = Ea←A L1 (B|A=a , C|A=a ). Доказательство. Это следует из равенства Pr[A = a, B = b] − Pr[A = a, C = b] =Pr[A = a] · Pr[B = b|A = a] − Pr[C = b|A = a] . Просуммировав это равенство по всем парам a, b, мы в левой части получим L1 ((A, B), (A, C)), а в правой среднее L1 -расстояние между B|A=a и C|A=a . Задача 24. Докажите, что свойство 2 выполнено и для преобразований случайной величины вероятностными схемами полиномиального размера (для неравномерного противника). 4.3. ВЫЧИСЛИТЕЛЬНО НЕОТЛИЧИМЫЕ СЛУЧАЙНЫЕ ВЕЛИЧИНЫ41 Задача 25. Пусть случайные величины αn и βn вычислительно неотличимы. Докажите, что в результате отрезания от них начала полиномиальной длины получатся вычислительно неотличимые случайные величины. В некоторых приложениях нам понадобится понятие семейства попарно неотличимых величин. Пусть для каждого натурального n задано множество слов Dn полиномиальной от n длины и для каждого u ∈ Dn задана случайная величина αnu со значениями в некотором множестве слов полиномиальной от n длины (эта длина зависит только от n). Мы говорим, что случайные величины αnu попарно вычислительно неотличимы, если для любой последовательности пар слов un , vn ∈ Dn случайные величины αnun и αnvn вычислительно неотличимы. Лемма 6. Случайные величины αnu попарно вычислительно неотличимы тогда и только тогда, когда любой последовательности схем Tn полиномиального размера найдется пренебрежимо малая последовательность εn для которой |Pr[Tn (αnu ) = 1] − Pr[Tn (αnv ) = 1]| < εn для всех u, v ∈ Dn . Доказательство. Утверждение “тогда” следует непосредственно из определения. Докажем утверждение “только тогда”. Допустим случайные величины αnu попарно вычислительно неотличимы. Зафиксируем произвольную последовательности схем Tn полиномиального размера. Для каждого n рассмотрим пару слов un , vn ∈ Dn для которых разность Pr[Tn (αnun ) = 1] − Pr[Tn (αnvn ) = 1] максимальна по абсолютной величине. Обозначим через εn абсолютную величину этой разности для этих un , vn . По условию εn пренебрежимо мало. Задача 26. Докажите, что если для данной полиномиально вычислимой функции существует трудное распределение, вычислительно неотличимое от некоторой доступной случайной величины, то эта функция является односторонней в обобщенном смысле. Задача 27. Докажите, что композиция генераторов ПСЧ типа k(n) → l(n) и l(n) → m(n) является генератором ПСЧ типа k(n) → m(n). 42 4.4 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Трудный предикат (hardcore predicate) Оказывается для построения генератора достаточно уметь добавлять один случайный бит к случайному слову, распределённому по некоторому полиномиально моделируемому распределению. {th-bm} Теорема 6 (Блюм и Микэли [4]). Пусть hn : {0, 1}k(n) → {0, 1}, gn : {0, 1}k(n) → {0, 1}k(n) полиномиально вычислимые семейства функций такие, что случайная величина hn (x)gn (x) вычислительно неотличима от случайной величины rx. Пусть p(n) — произвольный многочлен. Тогда случайная величина {eq76} h(x)h(g(x))h(g(g(x))) . . . h(g p(n)−1 (x)), g p(n) (x) (4.1) (для наглядности мы опускаем индекс n) вычислительно неотличима от случайной величины {eq77} r1 r2 . . . rp(n) , x. (4.2) Здесь x выбирается по некоторому распределению µn в множестве слов длины k(n), а r, r1 r2 . . . rp(n) случайные равномерно распределенные биты, независимые от x и друг от друга. Доказательство. Сначала докажем утверждение для неравномерного противника. Начнем с простых случаев. 1) Для p(n) ≡ 1 это дано в условии. 2) Рассмотрим следующий по простоте случай: p(n) ≡ 2. Тогда нам надо доказать вычислительную неотличимость случайных величин hn (x)hn (gn (x))gn2 (x) и r1 r2 x. Это следует из того, что обе случайные величины вычислительно неотличимы от случайной величины r1 h(x)g(x) (мы опускаем индекс n). Неотличимость этой случайной величины от r1 r2 x следует из неотличимости h(x)g(x) и r2 x (обе случайные величины получаются приписыванием к этим случайным величинам одного бита). А неотличимость случайных величин h(x)h(g(x))g 2 (x) и r1 h(x)g(x) устанавливается немного сложнее. Рассмотрим преобразование T , которое переводит строку r1 x в строку r1 h(x)g(x). Это преобразование вычислимо схемой полиномиального размера. Кроме того, оно переводит случайную величину h(x)g(x) 4.4. ТРУДНЫЙ ПРЕДИКАТ (HARDCORE PREDICATE) 43 в случайную величину h(x)h(g(x))g 2 (x). Поскольку случайные величины r1 x и h(x)g(x) неотличимы, буду неотличимы и результаты применения к ним преобразования T . 3) В общем случае доказательство аналогично. Будем рассуждать от противного и допустим, что некоторая последовательность схем Cn полиномиального размера отличает случайные величины r1 , r2 , . . . , rp(n) , x и hx, hgx, . . . , hg p(n)−1 x, g p(n) x (для наглядности мы опускаем скобки). То есть, для бесконечно многих n вероятность того, что первая случайная величина проходит тест Cn , отличается не менее, чем на εn = 1/poly(n), от вероятности того, что вторая случайная величина проходит тест Cn . Чтобы получить противоречие, мы построим схему полиномиального размера, отличающую hx, gx от r, x для тех самых n. Фиксируем любое такое n и для каждого i = 0, . . . , p(n) рассмотрим гибридную случайную величину Hi = r1 , r2 , . . . , rp(n)−i , hx, hgx, . . . , hg i−1 x, g i x. Случайные величины H0 и Hp(n) совпадают со случайными величинами из условия леммы. Поэтому для некоторого i будет выполнено |Pr[Cn (Hi ) = 1] − Pr[Cn (Hi+1 ) = 1]| > εn /p(n). Это i зависит от n и мы будем использовать его в построении схемыотличителя случайных величин (hx, gx) и (r, x). Для этого рассмотрим случайное преобразование Ti , которое в применении к rx дает Hi . Это преобразование заменяет к x на hx, hgx, . . . , hg i−1 (x), g i (x) и дописывает в начало p(n) − i − 1 случайных битов. Очевидно, что оно вычислимо вероятностной схемой полиномиального размера. Теперь заметим, что если применить это преобразование к случайной h(x)g(x) (вместо rx), то получится Hi+1 . Поэтому композиция схемы Cn и схемы вычисления Ti отличает rx от h(x)g(x). Для равномерного противника доказательство немного сложнее, поскольку вероятностный алгоритм R0 , который должен отличить (hx, gx) и (r, x), не может знать, чему равно i. Поэтому он выбирает i случайным 44 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ образом с равномерным распределением в множестве {0, 1, . . . , p(n) − 1}. Затем этот алгоритм применяет преобразование Ti и, наконец, применяет к результату полиномиальный вероятностный алгоритм R, для которого |Pr[R(H0 )] − Pr[R(Hp(n) ) = 1]| > εn = 1/poly(n). Нам достаточно убедиться, что Pr[R0 (rx) = 1] − Pr[R0 (h(x)g(x)) = 1] = Pr[R(H0 )] − Pr[R(Hp(n) ) = 1] . p(n) Для этого распишем левую часть доказываемого равенства, используя определение R0 : Pp(n)−1 Pp(n)−1 Pr[R(T i (h(x)g(x)) = 1] Pr[R(T i (rx)) = 1] − i=0 i=0 . p(n) Как мы видели, можно преобразоPp(n)−1 Pp(n)−1первую сумму в числителе этой дроби вать, как i=0 Pr[R(Hi ) = 1], а вторую — как i=0 Pr[R(Hi+1 ) = 1]. Поэтому в числителе все члены сокращаются, кроме первого члена первой суммы и последнего второй суммы. Итак, для построения генератора ПСЧ нужны семейства {µn }, {hn }, {gn } для которых hn (x)gn (x) вычислительно неотличимо от случайной величины rx при выборе x по распределению µn . Ясно, что для этого распределение µn должно быть инвариантным относительно gn в смысле следующего определения. Определение 17. Семейство распределений {µn } называется инвариантным относительно семейства функций {gn }, если случайные величины gn (x) и x, где x выбирается случайно относительно µn , вычислительно неотличимы. Например, так бывает, когда gn является перестановкой, а µn — равномерное распределение на её области определения. В этом случае случайные величины gn (x) и x имеют одно и то же распределение, а значит вычислительно и даже статистически неотличимы. Более того, если семейство {gn } получено из семейства односторонних перестановкой {fen } по формуле gn (ex) = efen (x), то распределение на входах gn , при котором мы выбираем e случайно из An , а затем x случайно с равномерным распределением из множества De , элементы которого переставляются функцией fe , также является инвариантным относительно g. 4.4. ТРУДНЫЙ ПРЕДИКАТ (HARDCORE PREDICATE) 45 Во-вторых, для вычислительной неотличимости hn (x)gn (x) и rx необходимо, чтобы hn был трудным предикатом для gn в смысле следующего определения. Определение 18. Для неравномерного противника: Семейство функций hn : {0, 1}p(n) → {0, 1} называется трудным предикатом для семейства функций gn : {0, 1}p(n) → {0, 1}p(n) , относительно последовательности распределений µn на {0, 1}p(n) , если для любой последовательности схем из функциональных элементов Cn размера poly(n) вероятность события Cn (gn (x)) = hn (x) по распределению µn приблизительно равна 1/2, то есть, стремится к 1/2 быстрее любого обратного полинома от n. (Случайную величину hn (x) нельзя вычислить по gn (x) с вероятностью существенно лучшей, чем при простом угадывании.) Для равномерного противника определение аналогично: вместо последовательности СФЭ нужно рассматривать вероятностные полиномиальные алгоритмы. {hardcore-gen} В самом деле, если hn (x)gn (x) и rx вычислительно неотличимы, то для любой последовательности схем из функциональных элементов Cn размера poly(n) вероятность событий Cn (gn (x)) = hn (x) и Cn (x) = r близки, а последняя из них равна 1/2 в силу независимости r от x. Задача 28. Если hn является трудным предикатом для gn для некоторого распределения, то оба своих значения hn принимает с примерно равной вероятностью относительно этого распределения. Задача 29. Докажите, что если имеется трудный предикат для полиномиально вычислимой инъективной функции, то эта функция сильно необратима в обобщенном смысле. Оказывается эти два требования (инвариантность распределения и трудность предиката) являются не только необходимыми, но и достаточными для вычислительной неотличимости hn (x)gn (x) и rx. Лемма 7 (Яо (Yao) о трудном предикате [9]). Если hn является трудным предикатом для функции gn (x) относительно распределения µn , то случайные величины hn (x)gn (x) и rgn (x) вычислительно неотличимы. Здесь x выбирается по распределению µn , а r случайный бит, независимый от gn (x) и равномерно распределённый. Заметим, что если дополнительно известно, что µn инвариантно относительно gn , то rgn (x) вычислительно неотличимо от rx, чего мы и хотели. {l53} 46 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Доказательство. Сначала докажем лемму для неравномерного противника. Допустим, что существует последовательность схем Dn размера poly(n) такая, что для бесконечно многих n выполнено Pr[D(h(x)g(x)) = 1] − Pr[D(rg(x)) = 1] = ε, {eq36} (4.3) где |ε| > 1/poly(n) (мы опять опускаем индекс n). Для любой схемы C, пытающейся вычислить h(x) по g(x), вероятность успеха можно вычислить по формуле полной вероятности: X Pr[C(g(x)) = h(x)] = Pr[C(y) = h(x)|g(x) = y] · Pr[g(x) = y], y Поэтому самым выгодным было бы по положить C(y) равным 1, если Pr[h(x) = 1|g(x) = y] > 1/2, и нулю иначе. Однако вычисление этой вероятности требует экспоненциального времени. Но нам и не нужно достичь максимума, нам достаточно обеспечить, чтобы Pr[C(y) = h(x)|g(x) = y] = 1/2 + εy {eq35} где (4.4) εy = Pr[D(h(x)y) = 1|g(x) = y] − Pr[D(ry) = 1|g(x) = y]. В самом деле, обе вероятности в левой части равенства (4.3) тоже можно представить по формуле полной вероятности, поэтому суммирование равенств (4.4) с весами Pr[g(x) = y] даст равенство {eq34} Pr[C(g(x)) = h(x)] = 1/2 + ε (4.5) Для этого мы поступаем следующим образом. Вычислим D(0y) и D(1y). Если D(0y) = D(1y), то схема D не помогает вычислить вероятность Pr[h(x) = 1|g(x) = y]. Но в этом случае εy = 0, поскольку схема не различает, какой бит у нее на первом месте. Поэтому в этом случае мы определим C(y) равным случайному биту и равенство (4.4) превратится в верное равенство 1/2 = 1/2 + 0. Если D(0y) = 0, D(1y) = 1, то Pr[D(ry) = 1|g(x) = y] = 1/2, и равенство D(h(x)y) = 1 означает, что h(x) = 1. По определению εy мы получаем Pr[h(x) = 1|g(x) = y] = 1/2 + εy . 4.4. ТРУДНЫЙ ПРЕДИКАТ (HARDCORE PREDICATE) 47 Хотя мы и не можем вычислить знак εy , чтобы действовать оптимальным образом, мы можем положить C(y) = 1, обеспечив верность равенства (4.4). Наконец, если D(0y) = 1, D(1y) = 0, то положим C(y) = 0. Равенство (4.4) доказывается аналогичными рассуждениями. Доказательство леммы для равномерного противника аналогично: пусть вероятностный полиномиальный алгоритм A отличает h(x)g(x) от rx. Тогда следующий вероятностный алгоритм находит h(x) по g(x) с вероятностью, сильно отличающейся от 1/2: пусть g(x) — исходное данное и s — случайная строка для алгоритма A. Если A(s, g(x)0) = A(s, g(x)1), то выдаем случайный бит, а иначе выдаем тот бит b, для которого A(s, g(x)b) = 1. Для этого алгоритма вероятность выдать h(x) на входе g(x) в точности равна 1/2 + Pr[A(h(x)g(x)) = 1] − Pr[A(rg(x)) = 1]. Доказывается это точно так же, как раньше — фиксированием g(x) и случайности s. Итак, мы почти доказали следующее утверждение. {th-hard-gen} Теорема 7. Если существует полиномиально вычислимая функция gn и трудный предикат hn для нее, причем трудное распределение µn инвариантно относительно gn , то для некоторого полинома q(n) существует генератор ПСЧ типа q(n) → ∞. Доказательство. Сначала предположим, что распределение µn равномерно на {0, 1}k(n) , области определения gn . Тогда в качестве генератора q(n) можно взять k(n) и положить Gn (s) = h(s)h(g(s))h(g 2 (s)) . . . По Теореме 6 (Блюма и Микэли) это отображение является генератором ПСЧ. Действительно, лемма утверждает, что любое начало этой последовательности полиномиальной длины вычислительно неотличимо от равномерно распределенной последовательности той же длины. В общем случае воспользуемся доступностью µn . Зафиксируем вероятностный алгоритм K, который по n за полиномиальное от n время генерирует случайную величину, которая статистически неотличима от 48 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ µn . Пусть K использует случайную строку s длины q(n) и Kn (s) обозначает выдаваемую им строку. Определим генератор Gn . Его значение на строке s длины q(n) равно Gn (s) = h(Kn (s))h(g(Kn (s)))h(g 2 (Kn (s))) . . . В этой последовательности l-ый бит равен h(g l (Kn (s))) и может быть вычислен за полиномиальное от l + n время. Докажем, что построенный генератор Gn надежен. Пусть p(n) — произвольный полином. Случайная величина Kn (s) статистически неотличима от случайной величины x. Поэтому и первые p(n) битов Gn (s) неотличимы от h(x)h(g(x))h(g 2 (x)) . . . h(g p(n)−1 (x)) тестами того же размера.2 По теореме 6 последняя неотличима от равномерно распределенной последовательности тестами размера poly(n). Генератор, построенный в доказательстве теоремы 7, обладает практически важным свойством, не отраженным в определении. Биты последовательности Gn (s) можно вычислять по очереди так, что на вычисление очередного бита уходит время, ограниченное некоторым полиномом от n, не зависящим от номера этого бита. Действительно, вычислив l первых битов Gn (s), мы сохраняем слово g l (s). Для вычисления очередного бита надо применить к g l (s) сначала функцию g, а потом к полученному слову применить функцию h. {th2} Задача 30. Если для некоторого полинома k(n), существует генератор Gn типа k(n) → k(n) + 1, то существует генератор ПСЧ типа k(n) → ∞. Задача 31. Докажите, что если для некоторого полинома q(n) существует генератор ПСЧ типа q(n) → ∞, то существует и генератор ПСЧ типа n → ∞. 2 В этом доказательстве нам достаточно всего лишь вычислительной неотличимости Kn (s) и x. 4.5. ПОСТРОЕНИЕ ФУНКЦИИ, ЯВЛЯЮЩЕЙСЯ ТРУДНЫМ ПРЕДИКАТОМ49 4.5 Построение функции, являющейся трудным предикатом Код Адамара Конструкция основана на так называемом коде Адамара. Пусть дано двоичное слово x длины n. Будем воспринимать биты слова x, как коэффициенты линейной функции y1 , . . . , yn 7→ x1 y1 + · · · + xn yn из n-мерного линейного пространства над полем B из 2 элементов в B. Кодом Адамара слова x называется последовательность длины 2n , состоящая из значений этой линейной функции на всех возможных аргументах. Мы будем использовать способность кода Адамара “исправлять ошибки”. Это означает, что если в коде Адамара f слова x изменить не более чем (1/2 − ε)2n символов на противоположные, то по полученной строке g можно быстро восстановить x. Точнее, существует вероятностный алгоритм B, который за полиномиальное от n/ε время находит некоторый список, который с вероятностью не менее 1/2 содержит x. Испорченный код Адамара g (имеющий длину 2n ) подаётся на вход алгоритма B в виде “оракула” (алгоритм может запросить значение любого бита, указав его номер, то есть слово g рассматривается как функция g : Bn → B, и алгоритм может её “вызывать”). Это важно, поскольку, если бы g подавался на вход в виде слова, то за полиномиальное от n/ε время алгоритм смог бы прочесть только его начало небольшой длины. В качестве ε мы будем рассматривать только числа вида 1/k, где k натурально. Теорема 8. Существует вероятностный алгоритм B, который, для любого слова x длины n и любого ε, получив на вход n и ε, и имея в качестве оракула любую строку g, отличающуюся от кода Адамара строки x не более чем в (1/2 − ε)2n позициях, за полиномиальное от n/ε время с вероятностью не менее 1/2 находит некоторый список слов, содержащий x. Доказательство. Итак, в роли алгоритма B мы имеем доступ к g — “искажённому варианту” неизвестной линейной функции f (y1 , . . . , yn ) = x1 y1 + . . . + xn yn , {l-hadamard} 50 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ и должны отгадать коэффициенты x1 , . . . , xn . Эти коэффициенты определяются значениями f в n точках (1, 0, . . . , 0), (0, 1, . . . , 0), . . . , (0, 0, . . . , 1) (и наоборот), и нам будет удобнее говорить об отгадывании этих значений. (На самом деле конкретный вид точек нам не важен, мы можем отгадывать значения в произвольных n точках — и даже в произвольном полиномиальном числе точек.) Поскольку функция f является линейной, для любых y и r из Bn выполняется равенство f (y) = f (y + r) − f (r). Пусть y фиксировано, а r пробегает Bn . Поскольку f и g совпадают по крайней мере в ( 21 + ε)-доле позиций (что больше половины), то f (y) = большинство из [g(y + r) − f (r)] , и это большинство можно определить методом Монте-Карло, выбрав несколько случайных r и проведя голосование среди выбранных значений. План этот на первый взгляд не имеет смысла, так как в правой части стоит f (r), которого мы всё равно не знаем. Заметим, что для нахождения большинства по методу Монте-Карло не обязательно, чтобы испытания были по-настоящему независимы. Достаточно (хотя и с худшей оценкой на вероятность ошибки), чтобы они были попарно независимы. Именно, имеет место Закон больших чисел для попарно независимых событий. Пусть события A1 , . . . , AN попарно независимы и каждое из них имеет вероятность меньше 21 − ε. Тогда вероятность того, что произойдёт половина или больше событий, не превосходит 1 1 · ε2 N (и потому мала при больших N ). В самом деле, рассмотрим индикаторы этих событий (случайные величины ai , равные единице, если Ai случилось, и нулю в противном случае). Математическое ожидание каждого из индикаторов не больше 12 −ε. Поэтому математическое ожидание суммы не больше N ( 21 − ε). Теперь 4.5. ПОСТРОЕНИЕ ФУНКЦИИ, ЯВЛЯЮЩЕЙСЯ ТРУДНЫМ ПРЕДИКАТОМ51 воспользуемся P попарной независимостью: она гарантирует, что дисперсия суммы ai равна сумме дисперсий; дисперсия ai не превосходит 1 (на самом деле даже 1/4), поэтому дисперсия суммы не превосходит N . Дисперсия есть математическое ожидание квадрата отклонения от математического ожидания. Если произойдёт больше половины событий, то отклонение будет по крайней мере N ε, а его квадрат N 2 ε2 . Поэтому по неравенству Чебышёва вероятность такого события не больше N 1 1 = 2· , 2 2 N ε ε N что и требовалось доказать. Откуда мы возьмём попарно независимые величины? Если взять s (полностью) независимых векторов в Bn , то их частичные суммы (всего 2s − 1 векторов) будут попарно независимы. Например, если u1 , u2 и u3 — (полностью) независимые векторы, то семь векторов u1 , u2 , u3 , u1 + u2 , u1 + u3 , u2 + u3 , u1 + u2 + u3 будут попарно независимы. (Скажем, при данном значении u1 + u2 все значения u1 +u3 равновероятны, поскольку u3 не зависит от пары (u1 , u2 ).) Геометрически: на s случайных независимых равномерно распределённых векторов мы натягиваем параллелепипед, и 2s − 1 его вершин (не считая нулевой) будут попарно независимы. Теперь уже можно объяснить идею доказательства: мы положим f (y) = большинство из [g(y + ri ) − f (ri )] , где ri — попарно независимые векторы (2s − 1 штук), а именно, ненулевые вершины параллелепипеда, натянутого на (полностью) независимые векторы u1 , . . . , us . Чтобы получить малую вероятность ошибки, достаточно взять полиномиальное число попарно независимых векторов, то есть 2s − 1 = poly(n/ε), а тогда s = O(log n/ε). Теперь главное: все значения f (ri ) в силу линейности f определяются значениями f (u1 ), . . . , f (us ), то есть s битами. Возможных вариантов этих значений 2s , то есть полиномиальное от n/ε количество. Вспомним, что нам разрешалось отгадывать с нескольких попыток: алгоритм B выдаёт не один набор коэффициентов, а полиномиальный (от n/ε) список вариантов. Так что нам позволено перепробовать эти варианты, и всё сходится. 52 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Оценим возникающие вероятности более подробно. Нам нужно восстановить значения f в n точках. Мы начинаем с того, что выбираем независимые векторы u1 , . . . , us и получаем из них попарно независимые векторы r1 , . . . , r2s −1 . Затем для каждой из n точек мы проводим голосование с 2s −1 участниками и получаем набор из n предполагаемых значений. Эта процедура предполагает известными значения f (u1 ), . . . , f (us ) и проводится 2s раз, для всех возможных вариантов. Подчеркнём, что выбор случайных векторов u1 , . . . , us производится только один раз: одни и те же векторы используются для всех n точек и во всех 2s попытках. Для данной точки y события f (y + ri ) 6= g(y + ri ) (всего 2s − 1 событий при i = 1, 2, . . . , 2s − 1) являются попарно независимыми. Вероятность каждого из них не больше 21 − ε. Поэтому вероятность того, что выборка окажется “плохой” (не меньше половины попаданий в ошибки, где f 6= g), не превосходит 1 1 · s . 2 ε 2 −1 Это — для данной точки y; вероятность того, что выборка окажется плохой хотя бы для одной из n точек, не больше 1 1 · s ·n 2 ε 2 −1 и потому не превосходит 1/2, если 2s > 2n + 1. ε2 А если выборка хороша для всех n точек, то в список, выдаваемый алгоритмом B (и содержащий 2s вариантов), войдёт и правильный ответ (коэффициенты аффинной функции f ). Длина списка и время работы алгоритма B при этом полиномиальны от n/ε2 = poly(n/ε). Задача 32. Постройте вероятностный алгоритм, который для любого слова x длины n и любых ε, δ, получив на вход n, ε, δ и имея в качестве оракула любую строку g, отличающуюся от кода Адамара строки x не более чем в (1/4 − ε)2n позициях (мы заменили 1/2 на 1/4), за полиномиальное от n, 1/ε, 1/δ время с вероятностью не менее 1 − δ находит само слово x (а не список, содержащий x, как в теореме). Задача 33. Докажите, что в предыдущей задаче в оценке времени работы алгоритма можно заменить 1/δ на log(1/δ), не меняя всего остального. 4.5. ПОСТРОЕНИЕ ФУНКЦИИ, ЯВЛЯЮЩЕЙСЯ ТРУДНЫМ ПРЕДИКАТОМ53 Конструкция трудного предиката Пусть fn : {0, 1}l(n) → {0, 1}∗ некоторая функция, и Dn ⊂ {0, 1}l(n) последовательность множеств, для которых равномерное распределение на Dn является трудным для fn . Рассмотрим функции gn , hn определенные на множестве Dn × {0, 1}l(n) равенствами gn (xy) = fn (x)y и hn (xy) = x y. Здесь выражение xy обозначает конкатенацию слов x, y длины l(n), а Pl(n) x y = i=1 xi yi mod 2. Ясно, что функции gn и hn полиномиально вычислимы и gn является перестановкой. Теорема Гольдрайха—Левина утверждает, что hn является трудным предикатом для нее. Теорема 9 (Гольдрайха–Левина). Если fn сильно необратима относительно равномерного распределения на Dn , то функция x y является трудным предикатом для функции gn (x, y) = fn (x)y относительно равномерного распределения на Dn × {0, 1}l(n) . Доказательство. Допустим противное — для бесконечно многих n существует схема Cn размера poly(n) такая, что вероятность события Cn (f (x)y) = x y не меньше 1/2 + εn , где εn = 1/poly(n) (слово x выбирается равномерно из Dn , слово y выбирается равномерно из {0, 1}l(n) независимо от x). Зафиксируем некоторое n из этого бесконечного множества и построим вероятностную схему полиномиального от n размера, которая будет обращать f (x) с вероятностью не меньше εn /4. Эта схема работает так: она запускает алгоритм из теоремы 8, используя в качестве внешней процедуры g(y) = Cn (f (x)y), и εn /2 в качестве ε. Затем для каждой строки x̃ из списка, выданного алгоритмом, схема проверяет равенство f (x̃) = f (x) и выдает первое x̃, для которого f (x̃) = f (x). Если такого x̃ в списке не нашлось, то схема выдает, что угодно. Оценим вероятность, с которой эта схема правильно обращает f (x). Обозначим через p(x) вероятность события Cn (f (x)y) = x y для случайно выбранного y. По теореме 8 схема обратит f (x) с вероятностью не меньше 1/2 для любого такого x, что p(x) > 1/2 + εn /2. Поэтому достаточно доказать, что для случайного x ∈ Dn это неравенство имеет место с вероятностью не меньше εn /2. {th-lg} 54 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Это легко доказать от противного. Действительно, по условию среднее значение величины p(x) не меньше 1/2 + εn . Разделим все строки из Dn на “хорошие”, для которых p(x) > 1/2 + εn /2, и “плохие”, для которых это неверно. Если бы x было хорошим с вероятностью меньше εn /2, то среднее значение величины p(x) было бы меньше (εn /2) · 1 + 1 · (1/2 + εn /2) = 1/2 + εn (первое слагаемое в этой сумме ограничивает сверху вклад в среднее хороших строк, второе слагаемое — вклад плохих строк). Теорема доказана. 4.6 Построение генератора ПСЧ из трудного предиката для односторонней перестановки Пусть дано семейство односторонних перестановок {fe : {0, 1}k(n) → {0, 1}k(n) | e ∈ An ⊂ {0, 1}q(n) , n ∈ N} {hardcore-perm} с трудным (доступным) распределением вероятностей µn на An . Определение 19 (для неравномерного противника). Полиномиально вычислимое семейство функций {he : {0, 1}k(n) → {0, 1} | e ∈ {0, 1}q(n) , n ∈ N} является трудным предикатом для семейства односторонних перестановок {fe }, если для любой последовательности схем из функциональных элементов Cn размера poly(n) вероятность события Cn (fe (x)e) = he (x) приблизительно равна 1/2. Здесь e выбирается с равномерным распределением из An , а x — с равномерным распределением из De (трудного множества). Замечание 7. Можно доказать следующее. Если Гипотеза 1 верна, то трудным предикатом для функции Рабина является последний бит (четность) её аргумента. Если Гипотеза 3 верна, то трудным предикатом для дискретной экспоненты является функция hy,z (x) = 0, если z < (y − 1)/2, и hy,z (x) = 1 иначе. 4.6. ПОСТРОЕНИЕ ГЕНЕРАТОРА ПСЧ ИЗ ТРУДНОГО ПРЕДИКАТА ДЛЯ ОДНОСТОРОННЕ Преобразуем семейство односторонних перестановок {fe } в одностороннее (в обобщенном смысле) семейство функций {gn }, где gn (xe) = fe (x)e. Функция gn определена на словах длины k(n) + q(n) и принимает значение в словах той же длины. Это семейство является односторонним в обобщенном смысле, то есть, для него существует доступное трудное семейство распределений. Важной особенностью этого распределения является его инвариантность относительно функции gn . В самом деле, функция не изменяет e, а все слова из De переставляет между собой. Поскольку все слова из De равновероятны, их перестановка не меняет распределения вероятностей. Этой особенности достаточно, чтобы с помощью трудного предиката из односторонних перестановок изготовить генератор ПСЧ. Преобразование пары (односторонняя перестановка, трудный бит) в генератор ПСЧ. Пусть {he } — трудный предикат для семейства односторонних перестановок {fe }. Тогда семейство функций hn (ex) = he (x) является трудным предикатом для семейства {gn }, где gn (xe) = fn (x)e. Причём трудное распределение инвариантно относительно gn . По лемме Яо случайные величины hn (x)gn (x) и rgn (x) вычислительно неотличимы, если x выбирается случайно по этому распределению. При этом распределение gn (x) вычислительно неотличимо от распределения x. Таким образом, случайные величины hn (x)gn (x) и rx вычислительно неотличимы. Говоря неформально, случайная величина hn (x)gn (x) имеет на один бит случайности больше, чем x. Повторяя этот прием, можно добавить и второй случайный бит. А именно, случайная величина hn (x)hn (gn (x))gn2 (x) вычислительно неотличима от случайной величины r1 r2 x, где r1 , r2 — случайные биты, независимые от x. В самом деле, обе случайные величины вычислительно неотличимы от случайной величины r1 h(x)g(x). Неотличимость этой случайной величины от r1 r2 x следует из неотличимости h(x)g(x) и r2 x (обе случайные величины получаются приписыванием к этим случайным величинам одного бита). А неотличимость случайных величин h(x)h(g(x))g 2 (x) и r1 h(x)g(x) устанавливается немного сложнее. Рассмотрим преобразование T , которое переводит строку r1 x в строку r1 h(x)g(x). Это преобразование вычислимо схемой полиномиального размера. Кроме того, оно переводит случайную величину h(x)g(x) в случайную величину h(x)h(g(x))g 2 (x). Поскольку случайные величины r1 x и h(x)g(x) неотличимы, будет неотличимы и результаты применения к ним преобразования T . Этот приём можно повторять и таким образом генерировать сколько 56 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ угодно случайных битов. А именно, пусть дан произвольный полином p(n), задающий количество случайных битов, которые нам нужно получить. Рассмотрим последовательность {eq76a} hx, hgx, hggx, . . . , hg p(n)−1 x, g p(n) x (4.6) (для наглядности мы опускаем индекс n и скобки в выражении g(x)). По теореме 6 (Блюма и Микэли) она вычислительно неотличима от случайной величины {eq77} r1 , r2 , . . . , rp(n) , x, (4.7) где r1 r2 . . . rp(n) случайная равномерно распределенная строка длины p(n), независимая от x. Из Теоремы 9 легко получается следующее следствие. Теорема 10. Если существует односторонняя перестановка fe с секретом, то существует односторонняя перестановка ge с секретом и трудный предикат he для нее. При этом по секрету и ge (x) можно найти he (x) для всех x, e полиномиальным детерминированным алгоритмом для всех x, e. Кроме того, если fe является улучшенной односторонней перестановка с секретом, то he ((ge )−1 (y)) трудно вычислимо по e и случайным битам, использованным при генерации y. Доказательство. Пусть {fe | e ∈ An , n ∈ N} исходная односторонняя перестановка с секретом. В новой односторонней перестановке функция ge определяется как ge (xy) = fe (x)y, где y строка из нулей и единиц той же длины, что и x. Трудный предикат he определяется как скалярное произведение: he (xy) = x y. Докажем, что he трудный предикат к ge . Рассуждая от противного, предположим, что схема Cn полиномиального от n размера с вероятностью 1/2 + 1/poly(n) по e, fe (x), y вычисляет x y для бесконечно многих n. Тогда ее легко переделать в схему полиномиального размера, которая по e, fe (x), y, z (где z равномерно распределено среди слов той же длины, что e, и независимо от x, y, e) вычисляет с той же вероятностью скалярное произведение конкатенации ex и zy, поскольку последнее равно e z ⊕ z y. А это невозможно, поскольку he, x, yi является трудным для функции (e, x, y, z) 7→ (e, ge (x), y, z) по теореме 9. Замечание. В доказательстве теоремы мы не использовали то, что трудное распределение для gn является равномерным. Таким образом, верно следующее обобщение теоремы Голдрайха–Левина и ее следствие. 4.6. ПОСТРОЕНИЕ ГЕНЕРАТОРА ПСЧ ИЗ ТРУДНОГО ПРЕДИКАТА ДЛЯ ОДНОСТОРОННЕ {th:lg-gen} Теорема 11. Пусть αn доступная трудная случайная величина для функции gn . Тогда случайная величина x y трудно вычислима по случайной величине gn (x)y, где x распределено так же, как αn , а y независимо от x и распределено равномерно среди слов той же длины, что и αn . Теорема 12. Если существует сильно односторонняя функция gn , и трудное инвариантное для нее распределение, то для некоторого полинома q(n) существует генератор ПСЧ типа q(n) → ∞. Доказательство. Пусть дана трудная для fn случайная величина αn , вычислительно неотличимая от gn (αn ). Рассмотрим функцию (x, y) 7→ (gn (x), y), где y произвольное слово той же длины, что и x. Будем выбирать x случайно по распределению αn , a y равномерно и независимо от x. Такое распределение на парах (x, y) доступно, и по предыдущей теореме x y трудно вычислимо по (gn (x), y). Кроме того, (x, y) вычислительно неотличимо от (gn (x), y). Осталось применить Теоремы 11 и 7. Трудный предикат для односторонней перестановки с секретом Лемма 8. Если существует односторонняя перестановка с секретом, то существует и односторонняя перестановка и секретом и трудный предикат для нее. Доказательство. Это следует из теоремы Левина–Голдрайха. Пусть fe исходная односторонняя перестановка с секретом. В новой односторонней перестановке случайная величина hen , dn i та же самая, а функция ge определяется как ge (xy) = fe (x)y, где y строка из нулей и единиц той же длины, что и x (мы опускаем параметр безопасности n в обозначениях). Таким образом область определения ge состоит из всех слов вида xy, где x ∈ De , |y| = |x|. Трудный предикат he определяется как скалярное произведение: he (xy) = x y. Условия (а)–(г) очевидно выполнены для ge . Докажем, что he трудный предикат к ge . Предположим, что схема Cn полиномиального от n размера с вероятностью 1/2 + εn по e, fe (x), y вычисляет x y. Тогда ее можно переделать в схему полиномиального размера, которая по e, fe (x), y, z (где z равномерно распределено среди слов той же длины, 58 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ что e, и независимо от x, y, e) вычисляет с вероятностью 1/2 + εn скалярное произведение конкатенации ex и zy, поскольку последнее равно e z⊕z y. Из условия (б) следует, что указанное распределение на тройках he, x, yi является трудным для функции (e, x, y, z) 7→ (e, ge (x), y, z). По теореме 11 εn пренебрежимо мало. 4.7 Построение генератора псевдослучайных чисел из односторонней функции: общий план Мы завершим эту главу, доказав теорему 4 для неравномерного противника. План изложения следующий. Сначала мы представим основные технические средства — энтропию и универсальное семейство хэш-функций. Затем мы потренируемся в использовании этих понятий, построив генератор ПСЧ из произвольной односторонней инъективной функции. Затем мы продолжим тренировку, построив генератора ПСЧ из односторонней неинъективной функции, степень неинъективности которой заранее известна — каждый её образ y имеет 2l прообразов, где l не зависит от y. Наконец в оставшихся трёх разделах мы изложим собственно конструкцию генератора ПСЧ из любой односторонней инъективной функции. Она будет состоять из двух частей: конструкция так называемого генератора фальшивой энтропии и конструкция генератора ПСЧ из генератора фальшивой энтропии. 4.8 {s-entropy} Энтропия Пусть дана случайная величина X со значениями в некотором конечном множестве {x1 , . . . , xn }. Обозначим через pi вероятность исхода xi : pi = Pr[X = xi ]. Определение 20. Энтропией Шеннона случайной величины X называется величина n X H1 (X) = − pi log2 pi . i=1 59 4.8. ЭНТРОПИЯ (В этой формуле мы считаем, что 0 log2 0 определено по непрерывности, как 0.) Энтропией совпадения (collision entropy) случайной величины X называется величина n X p2i . H2 (X) = − log2 i=1 P (Объяснение названия: пусть X1 , X2 — независимые копии X; тогда ni=1 p2i есть вероятностью события X1 = X2 . Чем больше энтропия совпадения, тем меньше эта вероятность.) Минимальной энтропией случайной величины X называется величина H∞ (X) = min(− log2 pi ). i (Объяснение названия: как мы увидим, минимальная энтропия меньше всех остальных.) {p61} Задача 34. Докажите, что H∞ (X) 6 H2 (X) 6 H1 (X) для любой случайной величины X. Задача 35. Утверждение из предыдущей задачи можно обобщить следующим образом. Для любого r ∈ [0, +∞), r 6= 1, определим энтропии Реньи Hr (X) формулой P log2 ni=1 pri . Hr (X) = 1−r В этой формуле мы считаем, что 00 определено по непрерывности, как 1. (а) Докажите, что H∞ (X) = limr→∞ Hr (X) и H1 (X) = limr→1 Hr (X). (б) Докажите, что Hr (X) не возрастает с ростом r для любой случайной величины X. Из этой задачи следует, что все энтропии не превосходят H0 (X) = log2 n. А для равномерно распределённой в множестве {x1 , . . . , xn } случайной величины все энтропии равны log2 n. Наиболее известной является энтропия Шеннона H1 (X). Для неё естественным образом можно определить понятие условной энтропии. Пусть имеются две совместно распределённые случайные величины X, Y с конечными множествами значений. Пусть x — возможный исход случайной величины X (то есть, вероятность события Pr[X = x] положительна. Будем тогда обозначать через Y |X=x случайную величину Y с условным распределением при известном X = x, то есть, Pr[Y |X=x = y] определено, как условная вероятность Pr[Y = y|X = x]. 60 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Определение 21. Условная энтропия Шеннона Y при известном X определяется как среднее значение энтропии Шеннона случайной величины Y |X=x : X H1 (Y |X) = Pr[X = x] · H1 (Y |X=x ) x:Pr[X=x]>0 Задача 36. Докажите, что энтропия Шеннона Y равна нулю тогда и только тогда, когда какой-то один исход имеет единичную вероятность (а все остальные — нулевую). Докажите, что H1 (Y |X) = 0 тогда и только тогда, когда существует детерминированная функция f , для которой с вероятностью 1 выполнено f (X) = Y . Нетрудно убедиться, что энтропия Шеннона пары X, Y есть сумма энтропии Y и условной энтропии X при известном Y : H1 (X, Y ) = H1 (Y ) + H1 (X|Y ). В этом равенстве пара случайных величин X, Y рассматривается как одна случайная величина, исходами которой являются пары, состоящие из исхода X и исхода Y . Задача 37. Докажите это равенство. Мы будем применять это равенство к случайной величине Y = f (X), где f есть некоторая детерминированная функция. Из него следует, что H1 (X) = H1 (f (X)) + H1 (X|f (X)). В самом деле, H1 (X, f (X)) = H1 (X) + H1 (f (X)|X) = H1 (X), поскольку H1 (f (X)|X) = 0. С другой стороны H1 (X, f (X)) = H1 (f (X)) + H1 (X|f (X)). Задача 38. Докажите, что условная энтропия не превосходит безусловной: H1 (Y |X) 6 H1 (Y ). 4.9. УНИВЕРСАЛЬНЫЕ СЕМЕЙСТВА ХЭШ-ФУНКЦИЙ 4.9 {s-hash-uni} 61 Универсальные семейства хэш-функций Определение 22. Семейство функций gz : {0, 1}n → {0, 1}m , где z пробегает некоторое конечное множество индексов, называется универсальным семейством хэш-функций, если для любых двух различных x1 , x2 ∈ {0, 1}n и любых y1 , y2 ∈ {0, 1}m вероятность события [gZ (x1 ) = y1 , gz (x2 ) = y2 ] равна 2−2m (здесь предполагается, что Z выбирается из множества индексов с равномерным распределением). Иными словами, для любого x случайная величина gZ (x) имеет равномерное распределение в {0, 1}m и для различных x1 , x2 случайные величины gZ (x1 ) и gZ (x2 ) независимы. Задача 39. Для каждой матрицы A размера m × n и вектора b длины m из нулей и единиц рассмотрим функцию x 7→ Ax + b (все операции выполняются в поле из двух элементов). Докажите, что при равномерном распределение на парах A, b получается универсальное семейство хэш-функций. Задача 40. Пусть дано универсальное семейство хэш-функций gz : {0, 1}n → {0, 1}m — универсальное семейство. У значения каждой функции оставим только первые m0 битов. Докажите, что полученное семейство функ0 ций типа {0, 1}n → {0, 1}m снова является универсальным. Задача 41. Пусть m 6 n. Построить универсальное семейство хэш-функций gz : {0, 1}n → {0, 1}m , в котором длина z есть O(n). Лемма 9 (о сглаживании). Пусть X есть случайная величина со значениями в множестве слов длины n. Пусть gz является универсальным семейством хэш-функций типа {0, 1}n → {0, 1}m , где z пробегает множество слов длины k. Обозначим через Z случайную величину, равномерно распределённую среди слов длины k. Тогда L1 -расстояние между распределением случайной величиной ZgZ (X) и равномерным распределением на словах длины k + m не превосходит 2(m−H2 (X))/2 . Доказательство. L1 -расстояние между распределением случайной величиной Y gZ (X) и равномерным распределением на словах длины k + m равно X |2−k Pr[gz (X) = y] − 2−m−k |. z∈{0,1}k ,y∈{0,1}m Переписав эту сумму в виде X 2m 2−k−m |Pr[gz (X) = y] − 2−m |, z,y 62 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ мы увидим, что она в 2m раз больше среднего значения по z, y величины ξ = |Pr[gz (X) = y] − 2−m |. Таким образом, нам нужно доказать, что среднее значение ξ не больше 2(−m−H2 (X))/2 . По неравенству между средним арифметическим и средним квадратическим среднее значение этой случайной величины не превосходит квадратного корня из среднего значения её квадрата. Поэтому нам достаточно оценить сверху величиной 2−m−H2 (X) среднее значение по y, z величины (Pr[gz (X) = y] − 2−m )2 . А для этого достаточно доказать, что для любого фиксированного y выполнено −m 2 −m−H2 (X) . Ez (Pr[gz (X) = y] − 2 ) < 2 Для этого, во-первых, заменим здесь вероятность Pr[gz (X) = y] на среднее значение предиката [gz (X) = y], равного 1, если выражение в скобках истинно, и равного 0 иначе. Доказываемое неравенство перепишется в виде −m 2 −m−H2 (X) . Ez (Ex [gz (x) = y] − 2 ) < 2 Во-вторых, рассмотрим случайную величину X 0 с тем же распределением, что у X, но независимую от X. С её использованием доказываемое неравенство можно переписать в виде −m Ez (Ex [gz (x) = y] − 2 )(Ex0 [gz (x0 ) = y] − 2−m ) < 2−m−H2 (X) . Поскольку для независимых случайных величин среднее значение произведения равно произведению средних, наше неравенство можно переписать так: −m Ez Ex Ex0 ([gz (x) = y] − 2 )([gz (x0 ) = y] − 2−m ) < 2−m−H2 (X) . При вычислении этого среднего мы можем переставить операторы усреднения и считать, что внутренним является Ez . Таким образом, нам достаточно доказать неравенство −m Ex Ex0 Ez ([gz (x) = y] − 2 )([gz (x0 ) = y] − 2−m ) < 2−m−H2 (X) . Поскольку семейство функций gz предполагается универсальным. Ez [gz (x) = y] = 2−m (и аналогично для среднего по x0 ). Кроме того, если x 6= x0 , то 4.10. ГЕНЕРАТОР ПСЧ ИЗ ОДНОСТОРОННЕЙ ИНЪЕКЦИИ 63 события [gz (x) = y] и [gz (x0 ) = y] независимы. Таким образом, для x 6= x0 среднее по z величины ([gz (x) = y] − 2−m )([gz (x0 ) = y] − 2−m ) равно произведению средних, то есть, нулю. Для x = x0 среднее по z величины ([gz (x) = y] − 2−m )([gz (x0 ) = y] − 2−m ) меньше 2−m , что вычисляется прямым подсчетом: −m 2 Ez ([gz (x) = y] − 2 ) = Ez [gz (x) = y] − 2 · Ez [gz (x) = y]2−m + 2−2m = 2−m − 2 · 2−2m + 2−2m < 2−m . По условию X x Pr[X = x]Pr[X 0 = x]2−m = 2−m X (Pr[X = x])2 = 2−m−H2 (X) , x откуда и следует доказываемое неравенство. Мы будем применять лемму о сглаживании к случайным величинам с большой минимальной энтропией. Если минимальная энтропия X не меньше k, то по задаче 34 и энтропия совпадения не меньше s, а поэтому L1 -расстояние между распределением случайной величины Z, gZ (X) и равномерным распределением не больше 2(m−s)/2 . Говоря неформально, сглаживание происходит, если длина хэш-значений существенно меньше энтропии. 4.10 Генератор ПСЧ из односторонней инъекции Сначала мы опишем конструкцию ПСЧ из односторонней инъективной функции и трудного предиката для неё. Пусть дано одностороннее семейство, состоящее из инъективных функций fn : {0, 1}k(n) → {0, 1}l(n) , и трудный предикат hn : {0, 1}k(n) → {0, 1} для fn . Мы доказывали, что если fn еще и сюръекция, то есть, l(n) = k(n), то отображение x 7→ fn (x)hn (x) является генератором псевдослучайных чисел (типа k(n) → k(n) + 1). В самом деле, по лемме Яо о трудном предикате (лемма 7) случайная {s-gen-inj} 64 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ величина fn (X)hn (X) вычислительно неотличима от случайная величина fn (X)R, где X, R равномерно распределены и независимы. А поскольку fn является перестановкой, fn (X)R имеет то же распределение, что и XR, то есть, равномерное. По транзитивности распределение fn (X)hn (X) вычислительно неотличимо от равномерного. Если же l(n) 6= k(n), то случайные величины fn (X)R и XR имеют распределения в множествах слов разной длины. Поэтому нам нужно отображение, которое из fn (X) изготавливает равномерно (или почти равномерно) распределенную в {0, 1}k(n) случайную величину. Здесь-то нам и понадобится универсальное семейство хэш-функций gz : {0, 1}l(n) → {0, 1}k(n) . А именно, предикат hn (x) является трудным и для отображения z, x 7→ z, gz (fn (x)). В самом деле, любую СФЭ, вычисляющую hn (x) по z, gz (fn (x)) можно переделать в вероятностную схему вычисления hn (x) по fn (x), при этом размер схемы увеличивается на размер схемы вычисления функции g, а вероятность успеха не изменяется. По лемме Яо случайные величины Z, gZ (fn (X)), hn (X) и Z, gZ (fn (X)), R вычислительно неотличимы (здесь X выбирается с равномерным распределением среди слов длины k(n) независимо от Z, а R — случайный бит, независимый от пары Z, X). С другой стороны, по лемме о сглаживании распределение пары Z, gZ (fn (X)) примерно такое же, как и распределение пары Z, Y , где Y выбирается с равномерным распределением среди слов длины k(n) независимо от Z. Поэтому и распределение тройки Z, gZ (fn (X)), R примерно такое же, как и распределение тройки Z, Y, R. По транзитивности случайная величина Z, gZ (fn (X)), hn (Z) вычислительно неотличима от (равномерно распределённой) случайной величины Z, Y, R. В этом рассуждении имеется существенный пробел. Чтобы статистическое расстояние между случайными величинами Z, gZ (fn (X)) и Z, Y было пренебрежимо мало, нам нужно, чтобы длина gz (y) была на сверхлогарифмическую величину (от n) меньше, чем энтропия совпадения случайной величины fn (X). Последняя равна k(n), поскольку функция fn инъективна. Однако уменьшив длину gz (y) хотя бы на единицу, мы лишим отображение z, x 7→ z, gz (fn (x)), hn (x). 4.10. ГЕНЕРАТОР ПСЧ ИЗ ОДНОСТОРОННЕЙ ИНЪЕКЦИИ 65 свойства расширения — длина выхода перестанет быть строго больше длины входа. Чтобы устранить этот недостаток, мы рассмотрим несколько копий функции fn , примененных, к независимым входам. Точнее, рассмотрим отображение z, x1 . . . xn 7→ z, gz (fn (x1 ) . . . fn (xn )), hn (x1 ) . . . hn (xn ), где gz : {0, 1}l(n) → {0, 1}nk(n)−n+1 — универсальное семейство хэш-функций. Поскольку длина значения gz на n − 1 меньше длины слова x1 . . . xn , а длина hn (x1 ) . . . hn (xn ) равна n, длина образа этого отображения больше длины прообраза на 1. Минимальная энтропия случайной величины fn (X1 ) . . . fn (Xn ) равна nk(n), поэтому длина хэш-значений стала существенно (на n − 1) меньше энтропии Реньи. По лемме о сглаживании статистическое расстояние между парой Z, gZ (fn (X1 ) . . . fn (Xn )) и парой Z, Y (где Y равномерно распределено среди слов длины nk(n) − n + 1) меньше 2−(n−1)/2 , то есть, пренебрежимо мало. С другой стороны, по лемме Яо о трудном предикате fn (Xi ), hn (Xi ) вычислительно неотличимо от fn (Xi ), Ri (где Ri — случайный бит, независимый от Xi ). Отсюда следует вычислительная неотличимость случайных величин fn (X1 ) . . . fn (Xn ), hn (x1 ) . . . hn (xn ) и fn (X1 ) . . . fn (Xn ), R1 . . . Rn . Чтобы это доказать, нужно рассмотреть гибридные случайные величины. А именно, в первой случайной величине нужно по очереди n − 1 раз заменять трудные биты на случайные. По лемме Яо каждая такая замена приводит к вычислительно неотличимой от исходной случайной величине. Итак, случайная величины Z, gZ (fn (X1 ) . . . fn (Xn )) и Z, Y статистически, а значит и вычислительно, неотличимы. Поэтому и случайные величины, получаемые приписыванием к ним n случайных битов R1 . . . Rn вычислительно неотличимы. Вторая из получаемых этим приписыванием случайных величин Z, Y, R1 . . . Rn имеет равномерное распределение. А первая Z, gZ (fn (X1 ) . . . fn (Xn )), R1 . . . Rn 66 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ вычислительно неотличима от случайной величины Z, gZ (fn (X1 ) . . . fn (Xn )), hn (X1 ) . . . hn (Xn ). Это верно, поскольку они получаются из вычислительно неотличимых величин полиномиально вычислимым преобразованием. По транзитивности случайная величина, порождаемая нашим отображением, вычислительно неотличима от равномерно распределённой случайной величины. Итак, мы доказали следующую теорему. Теорема 13. Если существует сильно одностороннее семейство инъективных функций, то для некоторого полинома k(n) существует генератор псевдослучайных чисел вида k(n) → k(n) + 1 Доказательство. В самом деле, по теореме Левина–Голдрайха (теорема 9 на с. 53) исходное семейство fn можно преобразовать в новое семейство инъективных функций и трудный предикат для него, а затем применить описанную выше конструкцию. 4.11 Построение генератора ПСЧ из почти инъективной функции и трудного предиката Пусть дано одностороннее семейство функций fn : {0, 1}k(n) → {0, 1}l(n) , и трудный предикат hn : {0, 1}k(n) → {0, 1} для fn . Пусть также известно, что H2 (fn (X)) > k(n) − 1 + ε для некоторого ε > 0 и всех n. (Здесь X обозначает случайную величину с равномерным распределением в {0, 1}k(n) .) Случайная величина fn (X) принимает не более 2k(n) значений, поэтому ее энтропия различения (и все другие энтропии) не превосходит k(n) и достигается, если fn (X) равномерно распределено на некотором множестве мощности 2k(n) , то есть, 4.12. ИЗВЛЕЧЕНИЕ ОСТАТОЧНОЙ ЭНТРОПИИ 67 если fn инъективна. Нам дано, что энтропия различения fn (X) близка к той, которая бывает у инъективных функций, поэтому мы и говорим о “почти инъективной” функции. Рассмотрим следующее отображение: z, x1 . . . xn 7→ z, gz (fn (x1 ) . . . fn (xn )), hn (x1 ) . . . hn (xn ), где gz универсальное семейство хэш-функций с длиной значений n(k(n)− 1) + 1. Мы утверждаем, что оно является генератором построить генератор ПСЧ типа {0, 1}p(n) → {0, 1}p(n)+1 , где p(n) = t(n) + k(n)n и t(n) есть длина z. Нетрудно подсчитать, что длина аргумента этого отображения в самом деле равна p(n). Длина значений хэш-функций выбрана так, чтобы длина значений отображения была равна p(n) + 1. Очевидно, что отображение полиномиально вычислимо. Так же, как раньше, доказывается что порождаемая этим отображением случайная величина Z, gZ (fn (X1 ) . . . fn (Xn )), hn (X1 ) . . . hn (Xn ). (4.8) {eq-almost} вычислительно неотличима от случайной величины Z, gZ (fn (X1 ) . . . fn (Xn )), R, где Z — случайная величина с равномерным распределением на словах длины t(n), R случайная величина с равномерным распределением на словах длины n они независимы друг от друга и от X. По лемме о сглаживании статистическое расстояние между последней случайной величиной и Z, U, R (4.9) {eq-rand} (где U имеет равномерное распределение в множество слов длины n(k(n)− 1) + 1 и независимо от пары Z, R) не превосходит 2 −n(k(n)−1+ε)+n(k(n)−1)+1 2 =2 −nε+1 2 , что пренебрежимо мало. По транзитивности случайные величины (4.8) и (4.9) вычислительно неотличимы. 4.12 Извлечение остаточной энтропии Теперь объясним, как можно построить генератор псевдослучайных чисел из полиномиально вычислимой функции fn : {0, 1}k(n) → {0, 1}m(n) , у {s-rem-entr} 68 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ которой каждый образ имеет одинаковое число прообразов, являющееся целой степенью двойки, и трудного предиката hn для неё. Пусть для каждого x ∈ {0, 1}k(n) количество прообразов fn (x) (относительно fn ) равно, скажем 2l(n) , причем l(n) можно вычислить по n за полиномиальное от n время. Тогда fn (X) равномерно распределено на некотором множестве мощности 2k(n)−l(n) (где X равномерно распределено в области определения fn ). Поэтому минимальная энтропия fn (X) равна k(n) − l(n). Повторив рассуждение из раздела 4.10, мы можем установить, что отображение z, x1 . . . xn 7→ z, gz (fn (x1 ) . . . fn (xn )), hn (x1 ) . . . hn (xn ) (где gz : {0, 1}l(n) → {0, 1}n(k(n)−l(n))−n+1 — универсальное семейство хэшфункций) генерирует распределение, вычислительно неотличимое от равномерного. Однако на этот раз этого недостаточно для построения генератора, поскольку длина образов этого отображения равна n(k(n) − l(n)) + 1, что меньше длины входа nk(n), поскольку l(n) > 0. Всего в случайной величине x1 . . . xn имеется nk(n) случайных бит, а в случайной величине fn (x1 ) . . . fn (xn ) — n(k(n) − l(n)) бит. Эти n(k(n) − l(n)) бит извлекаются семейством хэш-функций gz . Откуда нам взять недостающие примерно nl(n) случайных бит? Эта случайность имеется в x1 , . . . , xn и можно попытаться её извлечь с помощью другого семейства хэш-функций. А именно, рассмотрим отображение z, z 0 , x1 . . . xn 7→ z, z 0 , gz (fn (x1 ) . . . fn (xn )), gz0 (x1 . . . xn ), hn (x1 ) . . . hn (xn ), где gz : {0, 1}l(n) → {0, 1}n(k(n)−l(n))−n/3 и gz : {0, 1}l(n) → {0, 1}nl(n)−n/3 (мы укоротили хэш-значения по сравнению с предыдущей конструкцией, поскольку теперь у нас два семейства). Длина образов этого отображения равна [n(k(n) − l(n)) − n/3] + [nl(n) − n/3] + n = nk(n) + n/3, что больше длины входа и даже с запасом. Это отображение порождает случайную величину {eq-r1} Z, Z 0 , gZ (f (X1 ) . . . f (Xn )), gZ 0 (X1 . . . Xn ), h(X1 ) . . . h(Xn ). (4.10) Хотелось бы доказать, что она вычислительно неотличима от равномерной случайной величины. Для этого можно было бы рассмотреть следующие случайные величины: {eq-r2} Z, Z 0 , gZ (f (X1 ) . . . f (Xn )), gZ 0 (X1 . . . Xn ), R1 . . . Rn , (4.11) 4.12. ИЗВЛЕЧЕНИЕ ОСТАТОЧНОЙ ЭНТРОПИИ {eq-r3} Z, Z 0 , gZ (f (X1 ) . . . f (Xn )), U, R1 . . . Rn , Z, Z 0 , Y, U, R1 . . . Rn . 69 (4.12) (4.13) {eq-r4} Здесь R1 . . . Rn , U, Y обозначают случайные величины, которые равномерно распределены в множествах слов подходящей длины и независимы от всех остальных. По транзитивности достаточно доказать вычислительную неотличимость каждой из этих случайных величин от следующей. Статистическая неотличимость последних двух (4.12) и (4.13) следует из леммы о сглаживании. Статистическая неотличимость (4.11) и (4.12) доказывается так. При любых фиксированных y1 , . . . , yn из множества значений fn , по лемме о сглаживании L1 -расстояние между случайными величинами Z 0 , gz0 (X1 . . . Xn |f (X1 )=y1 ,...f (Xn )=yn ) и Z 0 , U не превосходит 2−n/6 . По лемме 5 то же самое верно и для L1 расстояния между случайными величинами f (X1 ) . . . f (Xn ), Z 0 , gz0 (X1 . . . Xn |f (X1 )=y1 ,...f (Xn )=yn ) и f (X1 ) . . . f (Xn ), Z 0 , U . Осталось заметить, что случайные величины (4.11) и (4.12) получены из этих двух приписыванием независимых от них случайных величин Z, R1 . . . Rn и применением детерминированной функции g (от аргументов Z, f (X1 ) . . . f (Xn )). Но непонятно, как доказать вычислительную неотличимость случайных величин (4.10) и (4.11). Дело в том, что gz0 (x1 . . . xn ) содержит дополнительную к f (x1 ) . . . f (xn ) информацию об x1 . . . xn , поэтому h(xi ) может не быть трудным предикатом для функции z, z 0 , x1 . . . xn 7→ z, z 0 , gz (fn (x1 ) . . . fn (xn )), gz0 (x1 . . . xn ). Поэтому мы будем рассуждать по-другому. Мы преобразуем данную нам функцию в почти инъективную одностороннюю функцию, а затем применим конструкцию из предыдущего раздела. А именно, рассмотрим новую функцию z, x 7→ z, fn (x), gz (x), (4.14) {eq-almost-inj} где gz — универсальное семейство хэш-функций с длиной значений n(k(n)− l(n)) + 1. Очевидно, что эта функция полиномиально вычислима. Докажем, что она необратима и почти инъективна. 70 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ {l1} {l2} Лемма 10. Если количество прообразов любого слова относительно функции fn не превосходит 2l(n) , то функция (4.14) порождает случайную величину с энтропией различения не меньше длины входа минус log2 (3/2). Лемма 11. Если количество прообразов любого слова относительно односторонней функции fn не меньше 2l(n) , то функция (4.14) необратима. Доказательство Леммы 10. Пусть Z1 , Z2 , X1 , X2 независимы и равномерно распределены. Нам нужно доказать, что вероятность события A = [Z1 = Z2 , f (X1 ) = f (X2 ), gZ1 (X1 ) = gZ2 (X2 )] не превосходит (3/2)2−k(n)−t(n) , где t(n) обозначает длину z. Представим это событие как объединение двух событий A1 = [Z1 = Z2 , X1 = X2 ] и A2 = [Z1 = Z2 , X1 6= X2 , f (X1 ) = f (X2 ), gZ1 (X1 ) = gZ2 (X2 )]. Вероятность события A1 очевидно равна 2−k(n)−t(n) . Поэтому нам достаточно доказать что вероятность события A2 меньше 2−k(n)−t(n)−1 . В самом деле, событие [Z1 = Z2 , f (X1 ) = f (X2 )] есть пересечение двух независимых событий, первое из которых происходит с вероятностью 2−t(n) (совпадение Z1 и Z2 ), а второе — с вероятностью не больше 2l(n)−k(n) (попадание X1 в прообраз f (X2 )). Поэтому вероятность этого события не больше 2l(n)−k(n)−t(n) , а значит и вероятность события [Z1 = Z2 , X1 6= X2 , f (X1 ) = f (X2 )] не больше этой величины. Наконец, вероятность события gZ1 (X1 ) = gZ2 (X2 ) при условии [Z1 = Z2 , X1 6= X2 , f (X1 ) = f (X2 )] равна 2−l(n)−1 , так как по свойству семейства хэш-функций при любых фиксированных x1 6= x2 вероятность события gZ (x1 ) = gZ (x2 ) равна 2−l(n)−1 . Доказательство Леммы 11. Будем рассуждать от противного и предположим, что существует многочлен p(n) и последовательность СФЭ Cn , обращающая функцию (4.14) на доле входов 1/p(n) для бесконечно многих n. Сначала рассмотрим следующий вероятностный алгоритм, который для этих n пытается обратить обратить функцию f : 4.12. ИЗВЛЕЧЕНИЕ ОСТАТОЧНОЙ ЭНТРОПИИ 71 К данному нам входу y приписываем слева случайное Z, а справа — слово gZ (X), где X выбрано случайно среди всех прообразов y относительно fn . К полученному слову ZygZ (X) применяем схему Cn . Схема выдаст некоторое слово z 0 x. Выдаём x в качестве результата. Этот алгоритм трудно задать вероятностной СФЭ полиномиального от n размера, поскольку задача выбора X с указанным распределением трудна. Но зато легко оценить вероятность успеха этого алгоритма — она не меньше вероятности успеха схемы Cn . Теперь модифицируем наш алгоритм, упростив немного задачу порождения слова gZ (X): К данному нам входу y приписываем слева случайное Z, а справа — слово gZ (X)1:l(n)+1−2 log(2p(n)) v, где где X выбрано случайно среди всех прообразов y, в качестве v перебираются по очереди все слова длины 2 log(2p(n)). Затем применяем схему Cn к полученному слову. Схема выдаст некоторое слово z 0 x. Если окажется, что fn (x) = y, то выдаем x, а иначе переходим к следующему слову v. Этот алгоритм также трудно задать вероятностной СФЭ полиномиального от n размера. Очевидно, что вероятность его успеха также не меньше 1/p(n). Теперь заметим, что нужная случайность для нашего алгоритма состоит из пары Z, gZ (X)1:l(n)+1−2 log(2p(n)) , где где X выбрано случайно среди всех прообразов y. Каким бы ни было y из множества значений fn , энтропия различения X не меньше l(n), поэтому по лемме о сглаживании, статистическое расстояние между распределением пары Z, gZ (X)1:l(n)+1−2 log(2p(n)) и пары Z, U , где U выбирается случайно среди слов той же длины, не превосходит 2−2 log(2p(n))/2 = 1/2p(n). Поэтому, если заменить трудно генерируемое распределение на равномерное, вероятность успеха изменится не более, чем на 1/2p(n), а значит будет не меньше 1/2p(n). Таким образом окончательный алгоритм состоит в следующем: К данному нам входу y приписываем слева случайное z, а справа — слово U v, где U выбрано случайно и его длина равна l(n) + 1 − 2 log(2p(n)), а в качестве v перебираем по очереди все слова длины 2 log(2p(n)). Затем применяем схему Cn к 72 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ полученному слову ZyU v. Схема выдаст некоторое слово z 0 x. Если окажется, что fn (x) = y, то выдаем x, а иначе переходим к следующему слову v. Ясно, что этот алгоритм уже можно задать вероятностной СФЭ полиномиального от n размера и он обращает fn с вероятностью не меньше 1/2p(n). Получаем противоречие с обратимостью fn . Задача 42. Убедитесь, что для этой конструкции достаточно, чтобы по x за полиномиальное от n время можно было оценить с полиномиальной точностью количество прообразов fn (x). Точнее, достаточно полиномиально вычислимой функции ln (y) с таким свойством: количество прообразов fn (x) находится в интервале [2ln (fn (x))−O(log n) , 2ln (fn (x)) ]. 4.13 Генератор фальшивой энтропии из односторонней функции В предыдущем разделе мы научились использовать одностороннюю функцию, степень неинъективности которой заранее известна. Осталось научиться использовать одностороннюю функцию fn , степень неинъективности которой неизвестна. Для этого из неё изготавливается так называемый генератор фальшивый энтропии, а затем из генератора фальшивой энтропии изготавливается генератор ПСЧ. Определение 23. Полиномиально вычислимая всюду определенная функция функция fn : {0, 1}k(n) → {0, 1}l(n) называется генератором фальшивой энтропии для неравномерного противника, если существует последовательность случайных величин {Yn }, для которой энтропия Шеннона случайной величины Yn на 1/poly(n) больше, чем энтропия Шеннона случайной величины fn (Xn ) и при этом Yn и fn (X) вычислительно неотличимы. Здесь Xn равномерно распределена в области определения fn . Если существует полиномиально моделируемая последовательность случайных величин {Yn } с этим же свойством, то fn называется генератором фальшивой энтропии для равномерного противника. Задача 43. Докажите, что любой генератор ПСЧ является генератором фальшивой энтропии. В соотвествии с названием, генератором фальшивой энтропии для равномерного противника можно построить из любой односторонней для 4.14. ПОСТРОЕНИЕ ГЕНЕРАТОРА ФАЛЬШИВОЙ ЭНТРОПИИ: ПЕРВЫЙ ШАГ73 равномерного противника функции, а затем из него изготовить генератор ПСЧ для равномерного противника. Аналогично — для неравномерного противника. Конструкция генератора ПСЧ на основе генератора фальшивой энтропии одинакова в равномерном и неравномерном случае. Однако конструкции генератора фальшивой энтропии разные — для равномерного противника она сложнее. Однако первый шаг в построении генератора фальшивой энтропии одинаков в равномерном и неравеномерном случаях. 4.14 Построение генератора фальшивой энтропии: первый шаг На этом шаге мы строим почти необратимую функцию, у которой существенная доля трудных для обращения образов имеют единственный прообраз. {th98} Теорема 14. Пусть существует необратимая функция. Тогда существует многочлен p(n) такой, что для любого многочлена q(n) существует полиномиально вычислимая функция Fn и подмножества In , On в её области определения с такими свойствами. (1) Принадлежность x к In , On зависит только от Fn (x). (2) Объединение In и On равно области определения Fn , причем, пересечение In ∩On составляет не меньше 1/p(n)-ой части всей области определения Fn . Кроме того, доля On не больше 1 − 1/p(n). (3) Равномерное распределение на On является трудным для Fn . (4) Доля x ∈ In , для которых fn (x) имеет единственный прообраз не меньше 1 − 1/q(n). Доказательство. Пусть дана односторонняя функция fn : {0, 1}k(n) → {0, 1}l(n) . Рассмотрим следующее отображение F i, z, x 7→ i, z, gz (x)1:i+dlog q(n)e , fn (x). (4.15) {eq95} Здесь i ∈ [0, k(n) + 2], а gz — универсальное семейство хэш-функций со значениями длины k(n) + dlog q(n)e. Через gz (x)1:j обозначен префикс gz (x) длины j. Обозначим через d(x) логарифм количества прообразов f (x) относительно f и положим I = {(i, z, x) | i 6 d(x) + 1}, O = {(i, z, x) | i > d(x)}, p(n) = k(n) + 3. 74 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Полиномиальная вычислимость F и свойства (1) и (2) очевидны. Доказательство свойства (4): Зафиксируем любую пару (i, x), для которой i > d(x), то есть, f (x) имеет не более 2i прообразов относительно f . Нам достаточно доказать, что доля z, для которых F (i, z, x) имеет не-единственный прообраз, меньше 1/q(n). В любом прообразе F (i, z, x) первые две компоненты должны равны i и z, а последняя должна быть прообразом f (x) относительно f . Таким образом, нам достаточно доказать, что вероятность события ∃x0 6= x f (x0 ) = f (x), gZ (x)1:i+dlog q(n)e = gZ (x0 )1:i+dlog q(n)e меньше 1/q(n) (вероятность берётся по случайному выбору Z). По требованию к универсальному семейству для любого x0 6= x случайная величина gZ (x0 ) равномерно распределена и независима от gZ (x). Поэтому вероятность события gZ (x)1:i+dlog q(n)e = gZ (x0 )1:i+dlog q(n)e не больше 2−i−log q(x) для всех x0 6= x. Количество прообразов f (x), отличных от x, меньше 2i . Поэтому вероятность события ∃x0 6= x f (x0 ) = f (x), gZ (x)1:i+dlog q(n)e = gZ (x0 )1:i+dlog q(n)e меньше 2i 2−i−log q(n) = 1/q(n). Доказательство свойства (3): Это делается точно так же, как доказывалась необратимость функции в разделе 4.12. Будем рассуждать от противного и предположим, что существует многочлен r(n) и последовательность СФЭ Cn , обращающая функцию Fn на доле входов 1/r(n) из On (для бесконечно многих n). Рассмотрим следующие три вероятностных алгоритма для обращения fn . Первый алгоритм: Выбираем случайное i 6 k(n) + 2. К данному нам входу y приписываем слева случайное izgz (x)1:i+dlog q(n)e , где x выбрано случайно с равномерным распределением среди всех прообразов y относительно fn , а z случайно с равномерным распределением среди всех слов. К полученному слову применяем схему Cn и выдаем слово x, возвращенное схемой. Второй алгоритм: 4.14. ПОСТРОЕНИЕ ГЕНЕРАТОРА ФАЛЬШИВОЙ ЭНТРОПИИ: ПЕРВЫЙ ШАГ75 Выбираем случайное i 6 k(n)+2. К данному нам входу y приписываем слева случайное izgz (x)1:i+dlog q(n)e−s v, где x выбрано случайно с равномерным распределением среди всех прообразов y относительно fn , z случайно с равномерным распределением среди всех слов, а в качестве v перебираются по очереди все слова длины s (величину s мы выберем позднее). Затем применяем схему Cn к полученному слову. Если для выданного схемой x окажется, что fn (x) = y, то выдаем это x, а иначе переходим к следующему слову v. Последний и окончательный алгоритм: Выбираем случайное i 6 k(n) + 2. К данному нам входу y приписываем слева случайное izuv, где u — случайное слово длины i + dlog q(n)e − s, слово z выбрано случайно с равномерным распределением среди всех слов, а в качестве v перебираются по очереди все слова длины s. Затем применяем схему Cn к полученному слову. Если для выданного схемой x окажется, что fn (x) = y, то выдаем это x, а иначе переходим к следующему слову v. Пусть на вход каждого из алгоритмов подается y = f (x), где x выбрано случайно с равномерным распределением в области определения f . Оценим вероятность успеха каждого из алгоритмов при условии i 6 d(x) + 1. (4.16) {eq-cond} Для первого из них она равна доле тех троек v ∈ On , для которых Cn правильно обращает Fn , а значит не меньше 1/r(n). Вероятность успеха второго алгоритма не меньше, чем у первого. Наконец, при любой фиксированной паре i, x с условием (4.16) вероятность успеха третьего алгоритма отличается от вероятности успеха второго не более, чем на 2−s/2 . В самом деле разность этих вероятностей не больше статистического расстояния между случайными величинами izu и izgz (x)1:i+dlog q(n)e−s . Последнее не больше 2−s/2 по лемме о сглаживании. Усредняя по x, мы получим, что при условии (4.16) разница вероятностей успеха второго и третьего алгоритма не больше 2−s/2 . Поскольку последняя равна 1/r(n), условная вероятность успеха третьего алгоритма не меньше 1/r(n) − 2−s/2 . Теперь мы можем выбрать s = 2 log 2r(n), так чтобы это было не меньше 76 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ 1/2r(n). Значит безусловная вероятность успеха третьего алгоритма не меньше 1/2r(n)(k(n) + 2). Последний алгоритм является полиномиальным в равномерном случае и его можно задать вероятностной СФЭ полиномиального от n в неравномерном случае. (Заметим в скобках, что вероятность успеха окончательного алгоритма можно было бы повысить за счет увеличения времени работы путем замены угадывания i на перебор всех i 6 k(n) + 1.) Полученное противоречие с обратимостью fn завершает доказательство леммы. Вот теперь мы можем построить генератор фальшивой энтропии для неравномерного противника. 4.15 Построение генератора фальшивой энтропии для неравномерного противника: второй шаг Нам понадобится функция из теоремы 14. В построении генератора фальшивой энтропии мы будем использовать только то, что на множестве On ∩ In функция обладает двумя свойствами — она односторонняя относительно равномерного распределения на этом множестве и почти инъективна на нем. Первое следует из того, что On ∩ In составляет долю 1/poly(n) во всей области определения Fn , а значит и в On . Теорема 15. Если существует односторонняя функция, то существует и генератор фальшивой энтропии. Доказательство. Сначала мы воспользуемся теоремой Левина-Голдрайха для построения трудного предиката. Пусть Fn , p функция и многочлен, существующие по теореме 14 для многочлена q(n) = 2. По теореме Левина– Голдрайха функция h u, w 7→ u w является трудным предикатом для отображения F0 u, w 7→ Fn (u), w. Здесь u выбирается с равномерным распределением в In ∩ On , a w — с равномерным распределением среди всех слов той же длины, что и u. 4.15. ПОСТРОЕНИЕ ГЕНЕРАТОРА ФАЛЬШИВОЙ ЭНТРОПИИ ДЛЯ НЕРАВНОМЕРНОГО П Ясно, что функция Fn0 полиномиально вычислима. Положим D = (In ∩ On ) × {0, 1}k(n) . Очевидно, что D составляет ту же долю слов, что и In ∩ On , то есть, 1/poly(n). Мы утверждаем, что генератором фальшивой энтропии будет функция G v 7→n Fn0 (v), hn (v). Ясно, что эта функция полиномиально вычислима. Пусть V выбираются случайно с равномерным распределением в Dn . Функция G порождает случайную величину F 0 (V ), h(V ). (4.17) {eq89} В качестве свидетеля фальшивой энтропии возьмём случайную величину, отличающуюся от этой только последним битом: Fn0 (V ), h0 (V ), где (4.18) {eq88} ( случайный бит, если v ∈ D, h0 (v) = h(v), иначе. Нам нужно доказать следующие две леммы: Лемма 12. Энтропия Шеннона случайной величины (4.17) на 1/poly(n) меньше энтропии Шеннона случайной величины (4.18). Лемма 13. Случайные величины (4.17) и (4.18) вычислительно неотличимы. Доказательство леммы 12. Воспользуемся формулой для энтропии пары случайных величин: H1 (A, B) = H1 (A) + H1 (B|A). В нашем случае A = F 0 (V ), а B есть либо h0 (V ), либо h(V ). По этой формуле разница между энтропиями случайных величин (4.17) и (4.17) равна разности H1 (h0 (V )|F 0 (V )) − H1 (h(V )|F 0 (V )). {l36} {l35} 78 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Вспомним, что H1 (B|A) есть среднее по всем исходам a случайной величины A энтропии Шеннона случайной величины B|A=a . Поэтому нам достаточно доказать, что разность H1 (h0 (V )|F 0 (V )=y ) − H1 (h(V )|F 0 (V )=y ) не отрицательна для всех y, причем она достаточно часто больше 1. Разделим все исходы y случайной величины F 0 (V ) на две группы: (1) исходы y, прообразы которых лежат вне D (здесь нам важно, что принадлежность x к D зависит только от F (x)) и (2) исходы y, прообразы которых лежат в D. Для y из первой группы H1 (h0 (V )|F 0 (V )=y ) − H1 (h(V )|F 0 (V )=y ) = 0, поскольку h0 (V ) = h(V ) в этом случае. Для y из второй группы энтропия h0 (V )|F 0 (V )=y равна единице, поскольку h0 (V )|F 0 (V )=y есть случайный бит. С другой стороны энтропия h(V )|F 0 (V )=y для половины y из второй группы равна нулю. В самом деле, множество D включено в I, а доля x из I, для которых f (x) имеет не единственный прообраз, меньше 1/q(n) = 1/2. Поэтому половины y из второй группы H1 (h0 (V )|F 0 (V )=y ) − H1 (h(V )|F 0 (V )=y ) = 1, а для остальных y из второй группы она неотрицательна. Таким образом, при усреднении по y величины H1 (h0 (V )|F 0 (V )=y ) − H1 (h(V )|F 0 (V )=y ), мы получаем не меньше (1/p(n))(1/2) = 1/poly(n). Доказательство леммы 13. Пусть U равномерно распределено в D0 , а W равномерно распределено в {0, 1}k(n) \ D0 . Пусть на вход некоторой схемы Cn полиномиального размера даётся либо F 0 (V ), h0 (V ), либо и F 0 (V ), h(V ). Нам нужно доказать, что вероятность события [C выдала 1] в первом и втором случае отличаются на пренебрежимо малую величину. 4.16. ТЕОРЕМА ШЕННОНА 79 Вероятность первого события [C(F 0 (V ), h0 (V )) = 1] есть сумма с некоторыми весами вероятностей событий [C(F 0 (U ), h0 (U )) = 1] и [C(F 0 (W ), h0 (W )) = 1]. Аналогично, [C(Yn ) = 1] есть сумма с некоторыми весами вероятностей событий [C(F 0 (U ), h(U )) = 1] и [C(F 0 (W ), h(W )) = 1]. Вторые слагаемые в обеих суммах одинаковы. По лемме Яо F 0 (U ), h0 (U ) и F 0 (U ), h(U ) вычислительно неотличимы. Поэтому первые слагаемые приблизительно равны. Поэтому и суммы приблизительно равны. Теорема доказана. Заметим, что в доказательстве мы использовали только то, что на множестве I ∩ O функция необратима и это множество составляет полиномиальную долю в области определения функции. Множества I и O по отдельности будут использованы при построении генератора фальшивой энтропии для равномерного противника. 4.16 Теорема Шеннона Теорема Шеннона подсказывает, как можно из случайной величины X с большой энтропией Шеннона изготовить случайную величину с большой минимальной энтропией. Это можно сделать повторением достаточно большого числа m независимых испытаний исходной случайной величины. Если m достаточно велико, то логарифм вероятности почти всех исходов новой случайной величины близок к −mH1 (X). Пусть дана случайная величина X со значениями в множестве слов длины k. Рассмотрим m независимых копий X, обозначаемых X1 , . . . , Xm . Случайную величину X1 . . . Xm , принимающую значения в множестве слов длины km, мы будем обозначать через X m . Вероятность события [X = x] будем обозначать через p(x), а вероятность события [X m = (x1 . . . xm )], равную p(x1 ) · · · p(xm ), — через p(x1 . . . xm ). Если m велико по сравнению с k то по закону больших чисел случайная величина − log p(X1 . . . Xm ) = − log p(X1 ) − · · · − log p(Xm ) с почти единичной вероятностью близка к своему среднему значения H1 (X1 . . . Xm ) = mH1 (X). Теорема Шеннона даёт некоторую оценку этой вероятности. Сформулируем её в наиболее простом виде, достаточном для дальнейшего изложения. 80 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Теорема 16. Вероятность события [− log2 p(X m ) 6 mH1 (X) − mε] не превосходит e− m(ε−O(2−k ))2 2k2 . Доказательство. Мы будем использовать неравенство Хёфдинга: если даны независимые числовые случайные величины Y1 , . . . , Ym , принимающие значения на отрезках [a1 , b1 ], . . . [am , bm ], соответственно, то для любого ε вероятность события [Y1 + · · · + Ym 6 E(Y1 + · · · + Ym ) − εm] не превосходит − e 2m2 ε2 (b1 −a1 )2 +···+(bm −am )2 . Мы хотели бы применить это неравенство к случайным величинам Zi = − log2 p(Xi ). Они независимы, их сумма равна − log2 p(X m ), а среднее значение их суммы равно mH1 (X). Они неотрицательны, однако у нас нет хорошей верхней оценки на их возможные значения. Поэтому применять ним неравенство Хёфдинга затруднительно. Вместо них мы применим это неравенство к искусственно заниженным случайным величинам: ( Zi , если Zi 6 2k, Vi = 2k, иначе. От занижения среднее значение могло уменьшиться, но не более, чем на O(2−k ). В самом деле, суммарная вероятность всех исходов x случайной величины X, для которых p(x) находится на отрезке (2−2k−i , 2−2k−i−1 ], меньше 2k−2k−i , поскольку всего исходов не больше 2k , и каждый вносит вклад меньший 2−2k−i . Вклад каждого такого исхода в среднее значение Zi не превосходит 2k + i + 1, а в среднее значение Vi — 2k. Поэтому разница вкладов в среднее Zi и Vi , приносимый исходами с вероятностью более 2−2k , меньше ∞ ∞ X X −k−i −k 2 (i + 1) = 2 2−i (i + 1). i=0 P∞ i=0 Поскольку ряд i=0 2−i (i+1) сходится, эта величина есть O(2−k ). Остальные исходы приносят одинаковый вклад в среднее Zi и среднее значение Vi . 81 4.16. ТЕОРЕМА ШЕННОНА Итак, среднее значение Vi не меньше, чем H1 (X) − O(2−k ). Поскольку Vi 6 Zi , событие [Z1 + · · · + Zk 6 mH1 (X) − mε] включено в событие [V1 + · · · + Vk 6 mH1 (X) − mε]. Последнее событие включено в событие [V1 + · · · + Vk 6 E(V1 + · · · + Vm ) + O(m2−k ) − mε]. Случайные величины Vi независимы и принимают значения на отрезке [−2k, 0]. По неравенству Хёфдинга вероятность последнего события не превосходит e− 2m2 (ε−O(2−k ))2 4mk2 = e− m(ε−O(2−k ))2 2k2 . Мы будем пользоваться следующим следствием этой теоремы. {c-sh1} Следствие 17. Пусть случайная величина X принимает значение среди слов длины k. Тогда для любого ε существует случайная величина A, для которой статистическое расстояние до X m не больше e− m(ε−O(2−k ))2 2k2 и при этом минимальная энтропия A не меньше mH1 (X) − mε. Доказательство. Разделим все исходы a случайной величины X m на толстые (те, для которых − log2 pm (a) < mH1 (X|Y )−mε) и тонкие (все остальные). Затем произведём перераспределение вероятностей в пользу тонких исходов: для каждого толстого исхода уменьшим его вероятность до уровня 2−mH1 (X)+mε увеличив вероятности каких-то тонких исходов но так, чтобы они не превысили этого уровня. Докажем, что это возможно. В самом деле, если в некоторый момент этого перераспределения не найдётся тонкого исхода, чтобы увеличить его вероятность, то вероятности всех вообще исходов стали не меньше этого уровня. Всего исходов 2mk , поэтому общая их вероятность не меньше 2mk−mH1 (X)+mε , что больше 1, поскольку H1 (X) 6 mk. 82 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Заметим, что статистическое расстояние между полученным распределением и исходным равно общему уменьшению вероятностей толстых исходов в этом процессе. Вероятность никакого толстого исхода не могла уменьшится на величину большую его начального значения. Поэтому мы удалились от исходного распределения не более чем на суммарную вероятность толстых исходов, которая по теореме Шеннона не больше e− m(ε−O(2−k ))2 2k2 . Нам понадобится еще и условный вариант этой теоремы. Пусть дана случайная величина X со значениями в множестве слов длины k и совместно с ней распределённая случайная величина Y . Рассмотрим m независимых копий пары X, Y , обозначаемых X1 , Y1 , . . . , Xm , Ym . Случайную величину X1 . . . Xm , мы будем обозначать через X m , а случайную величину Y1 . . . Ym , мы будем обозначать через Y m , Условную вероятность события [X m = x|Y m = y] будем обозначать через pm (x|y). Теорема 18. Вероятность события [− log2 pm (X m |Y m ) 6 mH1 (X|Y ) − mε] не превосходит e− m(ε−O(2−k ))2 2k2 . Доказательство. Эта теорема очень похожа по формулировке на предыдущую и доказывается почти так же. Определим вспомогательные случайные величины Vi , Zi аналогично тому, как мы это делали раньше: Zi = − log2 p(Xi |Yi ) и ( Zi , если Zi 6 2k, Vi = 2k, иначе. Среднее значение Vi оценивается так же, как и раньше. В самом деле, при любом фиксированном значении y случайной величины Yi , разница между средними значениями Vi и Zi по условному распределению (с условием Yi = y) оценивается O(2−k ), как и раньше. При этом не надо повторять вычисления, поскольку мы можем воспользоваться самим 83 4.16. ТЕОРЕМА ШЕННОНА результатом. Далее усредняя разницу по случайному выбору y мы получаем опять O(2−k ). Теперь вспомним, что среднее по y случайной величины Zi |Yi =y равно условной энтропии H1 (X|Y ), поэтому среднее значение суммы Z1 + · · · + Zm не меньше mH1 (X|Y )−O(m2−k ). Поэтому из того, что V1 +· · ·+Vm 6 mH1 (X|Y ) − mε, следует, что V1 + · · · + Vm 6 E(V1 + · · · + Vm ) + O(m2−k ) − mε. Применив неравенство Хёфдинга, мы оценим вероятность последнего события той же величиной, что и раньше. Наконец, вспомнив, что Z1 +· · ·+ Zm = − log pm (X m |Y m ), мы получим утверждение теоремы. Мы будем пользоваться следующим следствием этой теоремы. {c-sh2} Следствие 19. Пусть X принимает значение среди слов длины k, а Y среди слов длины l. Тогда для любого ε существует случайная величина A, совместно распределённая с Y m , для которой статистическое расстояние между парами X m , Y m и A, Y m не больше e− m(ε−O(2−k ))2 2k2 и при этом минимальная энтропия случайной величины A|Y m =b не меньше mH1 (X|Y )−mε для любого возможного исхода b случайной величины Y m. Доказательство. Построение A точно такое же, как и в доказательстве следствия 17 только его надо применять отдельно для каждого исхода b случайной величины Y m . То есть, теперь для каждого b будет свое разделение на толстые и тонкие исходы. Расстояние, на которое мы удалимся от исходной пары случайных величин, есть среднее по b уменьшение вероятности толстых исходов при данном b. Условная вероятность никакого толстого исхода не могла уменьшится на величину большую его начального значения. Поэтому мы удалились от исходного распределения не более чем на суммарную вероятность толстых исходов, которая не больше m(ε−O(2−k ))2 2k2 . e− 84 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Задача 44. Докажите, что можно соединить оба следствия следующим образом. Пусть X принимает значение среди слов длины k, а Y среди слов длины l. Тогда для любого ε существует пара совместно распределённых случайных величин A, B для которых статистическое расстояние до пары X m , Y m не больше e− m(ε−O(2−k ))2 2k2 + e− m(ε−O(2−l ))2 2l2 и при этом минимальная энтропия B не меньше mH1 (X|Y )−mε, а минимальная энтропия A|B=b не меньше mH1 (Y )−mε для любого возможного исхода B. 4.17 Построение генератора ПСЧ из генератора фальшивой энтропии Пусть имеется генератор фальшивой энтропии fn : {0, 1}k(n) → {0, 1}l(n) . Выберем достаточно большое m = m(n) (из дальнейшего станет ясно, насколько большим оно должно быть) и рассмотрим m независимых копий fn : x1 . . . xm 7→ fn (x1 ) . . . fn (xm ). Рассмотрим независимые случайные величины X1 . . . Xm , равномерно распределённые в области определения fn и положим Yi = f (Xi ). По теореме Шеннона, если m достаточно велико, минимальная энтропия Y m примерно равна mH(Y ) (где Y = f (X)), а минимальная энтропия X m |Y m =b примерно равна mH(X|Y ) (если игнорировать события малой вероятности). Поэтому с помощью двух семейств универсальных хэшфункций из Y m можно извлечь примерно mH(Y ) случайных бит, а из X m примерно mH(X|Y ) случайных бит, как это делалось в разделе 4.12. В результате будет примерно mH(Y ) + mH(X|Y ) бит (на самом деле немного меньше, поскольку при сглаживании часть случайности утрачивается). По формуле для энтропии пары это равно mH(X) = mk. То есть на выходе будет столько же бит, сколько и было во входе. На самом деле, даже меньше, поскольку сглаживанием можно извлечь немного меньше бит, чем энтропия различения. 4.17. ПОСТРОЕНИЕ ГЕНЕРАТОРА ПСЧ ИЗ ГЕНЕРАТОРА ФАЛЬШИВОЙ ЭНТРОПИИ85 Теперь самое время вспомнить, что f предполагается генератором фальшивой энтропии, то есть, в Y = f (X) имеется дополнительная «фальшивая» энтропия в размере δ(n) = 1/poly(n). Фальшивой энтропии в Y m в m раз больше. Поэтому при сглаживании длину хэш-значений Y m можно выбрать немного меньшей не mH(Y ), а mH(Y ) + mδ. В результате этого длина выхода станет больше длины входа. Теперь изложим построение генератора подробнее. Рассмотрим отображение G z, z 0 , x1 . . . xm 7→ z, z 0 , gz (f (x1 ) . . . f (xm )), gz0 (x1 . . . xm ). Здесь gz универсальное семейство хэш-функций с длиной значений bmH1 (Y )c + mδ − α (mδ будет целым), а gz0 универсальное семейство хэш-функцию с длиной значений bmH1 (X|Y )c − α, а величину α определим позднее. Величина α должна быть сверхлогарифмической, чтобы произошло сглаживание, но не слишком малой, чтобы длина выхода, равная |z| + |z 0 | + (bmH1 (Y )c + mδ − α) + (bmH1 (X|Y )c − α) > |z| + |z 0 | + mH1 (X) − 2 + mδ − 2α = |z| + |z 0 | + mk + mδ − 2α − 2, была больше длины входа, равной |z|+|z 0 |+mk. Для этого нужно, чтобы mδ > 2α + 3. К сожалению, эта функция может не быть полиномиально вычислимой, поскольку значения H1 (X) может быть трудно вычислимым по n. Как решать эту проблему мы обсудим позже, а сейчас докажем, что при подходящем выборе параметров m, α распределение на выходе этой функции вычислительно неотличимо от равномерного. Теорема 20. Пусть на вход Gn подается равномерно распределённая случайная величина Z, Z 0 , X, X = X1 . . . Xm . Тогда существуют многочлены m = m(n) и α = α(n), для которых на выходе получается случайная величина G(Z, Z 0 , X m ) вычислительно неотличимая от равномерно распределённой. 86 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Доказательство. Пусть V есть свидетель фальшивой энтропии для Y = f (X). Тогда V вычислительно неотличимо от Y . Рассмотрим m независимых копий V1 , . . . , Vm случайной величины V . Тогда V m = V1 . . . Vm вычислительно неотличимо от Y m = f (X1 ) . . . f (Xm ). Из этого следует вычислительная неотличимость случайных величин Z, Z 0 , V m , U и Z, Z 0 , Y m , U. Здесь Z, Z 0 случайно выбранные идентификаторы хэш-функций, а U случайно выбранное слово длины, равной длине значений функций второго семейства; все указанные случайные величины независимы в совокупности. Следовательно, и случайные величины, получающиеся из этих применением сглаживания Z, Z 0 , gZ (V m ), U и Z, Z 0 , gZ (Y m ), U, вычислительно неотличимы. Теперь нам нужно доказать, что первая случайная величина статистически неотличима от равномерной, а вторая — от Z, Z 0 , gZ (Y m ), gZ 0 (X m ). Начнем с первого. Пусть A случайная величин, существующая по следствию 17 для ε = δ/3 и V m . То есть, статистическое расстояние между парами A и V m не превосходит e− m(δ/3−O(2−l ))2 2l2 и при этом минимальная энтропия A не меньше mH1 (V ) − mδ/3 = mH1 (Y ) + 2mδ/3. Без ограничения общности мы можем считать, что δ/3−O(2−l ) не меньше δ/6. Если m = m(n) достаточно большой полином, то mδ/l2 > n, а поэтому статистическое расстояние между A и V m пренебрежимо мало. Поэтому случайные величины Z, Z 0 , gZ (V m ), U и Z, Z 0 , gZ (A), U статистически неотличимы. По лемме о сглаживании, статистическое расстояние от Z, gZ (A) до равномерно распределённой величины W меньше −mH1 (Y )−2mδ/3+mH1 (Y )+mδ−α mδ/3−α 2 2 =2 2 . 4.17. ПОСТРОЕНИЕ ГЕНЕРАТОРА ПСЧ ИЗ ГЕНЕРАТОРА ФАЛЬШИВОЙ ЭНТРОПИИ87 Следовательно, и случайные величины Z, Z 0 , gZ (A), U и Z, Z 0 , W, U статистически неотличимы, если α − mδ/3 растёт сверхлогарифмически. Теперь докажем второе. Нам надо установить статистическую неотличимость случайных величин и Z, Z 0 , gZ (Y m ), U Z, Z 0 , gZ (Y m ), gZ 0 (X m ). (4.19) {eq72} Пусть A случайная величина, существующая по следствию 19 для ε = δ/3 и X m , Y m . То есть, статистическое расстояние между парами A, Y m и X m , Y m не превосходит e− m(δ/3−O(2−k ))2 2k2 и при этом минимальная энтропия A|Y m =b не меньше mH1 (X|Y ) − mδ/3 для любого возможного исхода Y m . Без ограничения общности мы можем считать, что не только δ/3 − O(2−l ), но и δ/3 − O(2−k ), не меньше δ/6. Если m = m(n) достаточно большой полином (нам нужно, чтобы не только mδ/l2 но и mδ/k 2 было больше n), то статистическое расстояние между A, Y m и X m , Y m пренебрежимо мало. Поэтому нам достаточно доказать статистическую неотличимость случайных величин, получающихся из (4.19) заменой X m на A: и Z, Z 0 , gZ (Y m ), U Z, Z 0 , gZ (Y m ), gZ 0 (A). (4.20) {eq87} При любом фиксированном значении b случайной величины Y m минимальная энтропия случайной величины A|Y m =b не меньше mH(X|Y ) − mδ/3. А длина хэш-значений A не больше mH(X|Y ) − α. По лемме о сглаживании статистическое расстояние между случайными величинами Z 0 , U и Z 0 , gZ 0 (A|Y m =b ) меньше 2 −mH(X|Y )+mδ/3+mH(X|Y )−α 2 =2 mδ/3−α 2 . Следовательно, и случайные величины Z, Z 0 , gZ (b), U и Z, Z 0 , gZ (b), gZ 0 (A|Y m =b ) 88 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ статистически неотличимы, если α − mδ/3 растёт сверхлогарифмически. Усредняя по случайному выбору b, мы получаем, что случайные величины Z, Z 0 , gZ (Y m ), U и Z, Z 0 , gZ (Y m ), gZ 0 (A) статистически неотличимы. Теперь понятно, как нужно выбрать параметр α. Например, можно положить α = 5mδ/12. Тогда с одной стороны α − mδ/3 растёт сверхлогарифмически, так как mδ > n по выбору m, а с другой стороны mδ  2α + 3 (это было нужно, чтобы длина выхода G была больше длины входа. Осталось объяснить, как быть с тем, что построенная функция G может не быть полиномиально вычислимой из-за того, что H1 (X) может быть трудно вычислимым по n. Для того, чтобы вычислить Gn (x) нам нужно знать два натуральных числа a = bmH1 (Y )c, b = bmH1 (X|Y )c. Хотя мы не знаем эти числа, но оба они ограничены полиномом от n, поэтому количество Nn возможных пар a, b полиномиально. Перенумеруем их все и обозначим через ai , bi пару с номером i. Таким образом мы построили полиномиальную функцию с дополнительным аргументом i Gn (i, x) такую, что распределение Gn (i, X) вычислительно неотличимо от равномерного хотя бы для одного i 6 Nn и при этом длина выхода больше длины входа. По теореме 30 мы можем считать, что длина Gn (i, x) больше, чем N |x|. Теперь рассмотрим отображение x1 . . . xN 7→ N M Gn (i, xi ) i=1 (имеется в виду побитовое сложение по модулю 2). Эта функция уже полиномиально вычислима и длина её выхода строго больше длины входа. LN Докажем, что распределение i=1 Gn (i, Xi ) вычислимо неотличимо от равномерного, если X1 , . . . , XN равномерно распределены и независимы. Мы знаем, что для некоторого i = i0 распределение Gn (i0 , Xi0 ) вычислительно неотличимо от равномерного распределения U . В силу 4.18. ПОСТРОЕНИЕ ГЕНЕРАТОРА ФАЛЬШИВОЙ ЭНТРОПИИ И ГЕНЕРАТОРА ПСЧ ДЛЯ РА независимости X1 , . . . , XN отсюда следует, что и пары случайные величины M M Gn (i0 , Xi0 ), Gn (i, Xi ) и U, Gn (i, Xi ) i6=i0 i6=i0 вычислительно неотличимы. А значит и побитовые суммы случайных величин в паре вычислительно неотличимы: M M Gn (i0 , Xi0 ) ⊕ Gn (i, Xi ) и U ⊕ Gn (i, Xi ). i6=i0 i6=i0 Распределение второй случайной величины равномерное, а первая случайной величины это и есть выход генератора, записанный в другом виде. Построение генератора ПСЧ из односторонней функции завершено. 4.18 Построение генератора фальшивой энтропии и генератора ПСЧ для равномерного противника Теорема 21. Пусть существует односторонняя функция для равномерного противника. Тогда существует генератор фальшивой энтропии для равномерного противника. Доказательство. Пусть p(n) многочлен, существующий по следствию ?? (доказательства этого следствия и теоремы 14 для равномерного противника совершенно аналогичны). Положим q(n) = 2p(n) и пусть fn , hn , In , On — функция и множества, существующие по этой теореме. Выберем достаточно большой многочлен m = m(n). Он должен быть тем больше, чем меньше доля On . Последнюю мы будем обозначать через λ = λn . Генератором фальшивой энтропии будет отображение G z, x1 . . . xm 7→ z, f (x1 ) . . . f (xm ), gz (h(x1 ) . . . h(xm )) Здесь gz — универсальное семейство хэш-функций с длиной хэш-значений t(n), которое будет немножко меньше, чем mλ, а именно t = mλ − m/4p(n). Это отображение порождает случайную величину Z, f (X1 ) . . . f (Xm ), gZ (h(X1 ) . . . h(Xm )), (4.21) {r2} 90 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ где Z, X1 , . . . , Xm выбираются с равномерным распределением. Свидетелем фальшивой энтропии будет случайная величина Z, f (X1 ) . . . f (Xm ), U (4.22) {r1} где U выбирается независимо от всего остального с равномерным распределением. Лемма 14. Энтропия Шеннона случайной величины (4.21) на m/4p(n) больше энтропии Шеннона случайной величины (4.22). Доказательство. Это доказывается почти так же, как и аналогичная ~ В самом деле, лемма 12. Будем обозначать f (X1 ) . . . f (Xm ) через f (X). разница между энтропиями этих величин равна ~ − H1 (gZ (h(X1 ) . . . h(Xm ))|Z, f (X)) ~ H1 (U |Z, f (X)) Уменьшаемое здесь очевидно равно t = t(n). Оценим сверху вычитаемое: ~ H1 (gZ (h(X1 ) . . . h(Xm ))|Z, f (X)) ~ 6 H1 (h(X1 ) . . . h(Xm )|Z, f (X)) ~ = H1 (h(X1 ) . . . h(Xm )|f (X)) ~ + · · · + H1 (h(Xm )|f (X)) ~ 6 H1 (h(X1 )|f (X)) = H1 (h(X1 )|f (X1 )) + · · · + H1 (h(Xm )|f (Xm )) = mH1 (h(X)|f (X)). Осталось оценить сверху H1 (h(X)|f (X)). Разделим все значения X на принадлежащие I и остальные. Среди вторых лишь для 1/2p(n)-ой части x’ов значение f (x) не определяет x однозначно, поэтому среднее H1 (h(X)|f (X)) при случайном выборе X из I не больше 1/2p(n). Для исходов x вне I мы оценим сверху H1 (h(X)|f (X) = f (x)) единицей. Итак, мы получаем H1 (h(X)|f (X)) = Pr[X ∈ / I] · 1 + Pr[X ∈ I] · (1/2p(n)) 6 6 Pr[X ∈ / I] + 1/2p(n). Итак, разность энтропий случайных величин (4.21) и (4.22) не меньше t − m(Pr[X ∈ / I] + 1/2p(n)) = = (mλ − m/4p(n)) − m(Pr[X ∈ / I] + 1/2p(n)) = = m(λ − Pr[X ∈ / I]) − 3m/4p(n). 4.18. ПОСТРОЕНИЕ ГЕНЕРАТОРА ФАЛЬШИВОЙ ЭНТРОПИИ И ГЕНЕРАТОРА ПСЧ ДЛЯ РА Теперь вспомним, что λ — это доля O, которое покрывает дополнение до I, причем доля разности O и дополнения до I (то есть, пересечения O и I) не меньше 1/p(n). Поэтому λ − Pr[X ∈ / I] = Pr[X ∈ O ∩ I] > 1/p(n). Следовательно, разность энтропий случайных величин (4.21) и (4.22) не меньше m/p(n) − 3m/4p(n) = m/4p(n). Лемма 15. Случайные величины (4.22) и (4.21) вычислительно неотличимы. {l-indist} Доказательство. Рассуждая от противного, предположим, что они вычислительно отличимы и зафиксируем вероятностный алгоритм R для которого ~ gZ (h(X))) ~ ~ U) − E R(Z, f (X), E R(Z, f (X), (4.23) {eq-dist-R} не меньше εn = 1/poly(n) для бесконечно многих n. Здесь ~ = (X1 . . . Xm ), U Z, X выбираются независимо с равномерным распределением. Будем считать для определённости, что эта разность положительна (и больше εn ) для бесконечно многих n. Преобразуем R в отличитель R0 случайных величин f (T ), h(T ) и f (T ), β, где T выбирается с равномерным распределением из множества O, а β — случайный бит. На входе y, b отличитель R0 работает так: Выбираем случайно i от 1 до m и применяем R ко входу Di (y, b), где Di (y, b) получается следующим образом. Выбираем случайно независимые биты c1 , . . . , ci−1 , каждый из них равен 1 с вероятностью λ. Выбираем случайно независимо слова x1 , . . . , xi−1 , причем xj выбирается равномерно из O, если cj = 1, и равномерно из дополнения O иначе. Выбираем случайно независимо слова xi+1 , . . . , xm с равномерным распределением среди всех слов. Полагаем βj равным случайному биту, если j < i, и cj = 1 и равным h(xj ) иначе (если j > i или cj = 0). Наконец, полагаем Di (y, b) = = z, f (x1 ) . . . f (xi−1 )yf (xi+1 ) . . . f (xm ), gz (β1 . . . βi−1 bβi+1 . . . βm ), (4.24) {eqDi} 92 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ где z выбрано случайно с равномерным распределением. (Входное слово y ставится в последовательность f (x1 ) . . . f (xm ) на i-ое место, и аналогично входной бит b ставится в последовательность β1 . . . βm на i-ое место.) Заметим, что ту же случайную величину Di (y, b) можно определить и так: выбираем случайно независимо слова x1 , . . . , xi−1 , xi+1 , . . . , xm c равномерным распределением в области определения f (мы пропустили xi ). Полагаем βj равным случайному биту, если j < i и xj ∈ O, и равным h(xj ) иначе (если j > i или xj ∈ / O). Наконец, как и раньше, используем формулу (4.24). Для дальнейшего анализа нам понадобится также случайная величина Dm+1 (y, b), которая определяется тем же способом, что и Di (y, b) для i 6 k за исключением того, что параметры y, b просто выбрасываются (случайная величина Dm+1 не зависит от их значений). Этот отличитель не является полиномиальным по времени из-за необходимости выбирать слова из O или его дополнения с равномерным распределением. Этот недостаток мы исправим позже. Докажем, что если разность λm − t растет сверхлогарифмически, то {eq-R’-dist} E R (f (T )h(T )) − E R (f (T )β) > ε/mλ − small(n). (4.25) Здесь T выбирается из множества O с равномерным распределением, а small(n) обозначает некоторую пренебрежимо малую функцию. В соответствии с конструкцией R0 разность в левой части неравенства (4.25) равна m 1 X [E RDi (f (T )h(T )) − E RDi (f (T )β)]. m i=1 Будем через Di обозначать случайную величину Di (f (X)h(X)), где X выбирается с равномерным распределением в области определения f независимо от всего остального. Будем E RDi сокращать, как D̃i и аналогичные сокращения использовать для E RDi (f (T )h(T )) и так далее. В этих обозначениях разность в левой части неравенства (4.25) равна m {eq-R’-dist-sum} 1 X [D̃i (f (T )h(T )) − D̃i (f (T )β)]. m i=1 (4.26) 4.18. ПОСТРОЕНИЕ ГЕНЕРАТОРА ФАЛЬШИВОЙ ЭНТРОПИИ И ГЕНЕРАТОРА ПСЧ ДЛЯ РА Докажем, что с точностью до множителя λ в сумме (4.26) складываются разности D̃i − D̃i+1 : {l-comparison} Сублемма 15.1. Для всех i 6 k выполнено λ[D̃i (f (T )h(T )) − D̃i (f (T )β)] = D̃i − D̃i+1 . Доказательство. Из определения случайных величин Di (y, b) и Di+1 (y, b) мы видим, что Di+1 есть линейная комбинация случайных величин Di (f (T ), β) и Di (f (T̄ ), h(T̄ )) с коэффициентами λ и 1 − λ. Поэтому D̃i+1 = λD̃i (f (T ), β) + (1 − λ)D̃i (f (T̄ ), h(T̄ )), (4.27) {eq1} где T̄ выбирается из дополнения множества O. Аналогичным образом и Di есть линейная комбинация похожих случайных величин Di (f (T ), h(T )) и Di (f (T̄ ), h(T̄ )) с теми же коэффициентами (вторая случайная величина точно та же, а в первой вместо β написано h(T ): D̃i = λD̃i (f (T ), h(T )) + (1 − λ)D̃i (f (T̄ ), h(T̄ )). (4.28) {eq2} Вычитая из второго равенства первое, мы получаем утверждение леммы, поскольку вторые слагаемые в обоих равенствах сокращаются. Из этой леммы следует, что сумма (4.26) равна (D̃1 − D̃m+1 )/mλ. Теперь установим, что Dm+1 статистически неотличимо от случайной величины (4.22). Сублемма 15.2. Статистическое расстояние между Dm+1 и (4.22) не больше 2(t−λm)/2 . Доказательство. Заметим, что у случайных величин Dm+1 и (4.22) все одинаковое, кроме последних t бит. Поэтому нам достаточно доказать, что при любых фиксированных X1 , . . . , Xm энтропия различения случайной величины β1 . . . βm , являющейся аргументом функции gZ не меньше λm. Напомним, что βi с вероятностью λ есть случайный бит, а с вероятностью 1 − λ равно h(Xi ) причем βi друг от друга независимы. Нетрудно подсчитать распределение βi : эта случайная величина принимает оба своих исхода с вероятностями λ/2, 1 − λ/2. {l-min-entropy} 94 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Отсюда следует, что две независимых копии βi совпадут с вероятностью λ2 /4 + (1 − λ/2)2 = λ2 /2 − λ + 1. Нетрудно проверить, что это не больше 2−λ . Поскольку β1 . . . βm независимы, отсюда следует утверждение леммы. По этой лемме, если t меньше чем λm на сверхлогарифмическую величину, то D̃m+1 приблизительно равно среднему значению R на случайной величине (4.22). С другой стороны случайная величина D1 совпадает с (4.21), что доказывает неравенство (4.25). Например, мы можем выбрать m = p(n) log2 n и тогда λm − t = m/4pm = log2 n/4. Теперь объясним, как изменить R0 , чтобы он работал в полиномиальное время. Для этого в определении R0 мы заменим случайные величины D1 , . . . , Dm+1 на некоторые полиномиально моделируемые случайные величины, которые мы будем обозначать теми же буквами. Изменение коснётся только способа выбора слов x1 , . . . xi−1 в определении Di , а всё остальное останется таким же. Заметим, что после таких изменений лемму 15.2 придется переформулировать. Для этого для каждого i 6 m + 1 обозначим через Ei случайную величину Di , которая получается из Di заменой последних t бит на случайные биты. {l-min-entropy-bis} Сублемма 15.3. Статистическое расстояние между Dm+1 и Em+1 не больше 2(t−λm)/2 . Поскольку в лемме 15.2 мы никак не использовали, как именно распределены X1 , . . . , Xm её доказательство переносится безо всяких изменений. Лемма 15.1, разумеется, тоже может нарушиться, после изменения способа выбора x1 , . . . xm . Выбор x1 , . . . xi обеспечит, что с вероятностью 1 − small(n) выполнено следующее неравенство: {l-comparison-bis} D̃i (f (T )h(T )) − D̃i (f (T )β) > D̃i − D̃i+1 − Ẽi + Ẽi+1 − ε/2m . λ (4.29) Заметим, что после выбора c1 , . . . ci , β1 , . . . βi и x1 , . . . xi становятся определёнными случайные величины Di , Ei , Di+1 , Ei+1 , поэтому неравенство имеет смысл. 4.18. ПОСТРОЕНИЕ ГЕНЕРАТОРА ФАЛЬШИВОЙ ЭНТРОПИИ И ГЕНЕРАТОРА ПСЧ ДЛЯ РА Объясним, почему этого будет достаточно. В самом деле, складывая неравенства (4.29) мы получим (игнорируя множитель 1/λ > 1): E R (f (T )h(T )) − E R (f (T )β) > > D̃1 − D̃m+1 − Ẽ1 + Ẽm+1 − ε/2 > > D̃1 − Ẽ1 − ε/2 − small(n). (последнее неравенство выполнено по лемме 15.3). Поскольку определение D1 и E1 не изменилось, D1 по-прежнему совпадает с (4.21), а E1 — с (4.22) и мы получаем нижнюю оценку ε/2 − small(n) на качество различителя R0 (надо еще раз вычесть small(n), поскольку с этой вероятностью может оказаться, что одно из неравенств (4.29) ложно, в этом случае мы можем оценить снизу левую часть минус единицей). Осталось объяснить, как выбрать x1 , . . . xm так, чтобы выполнялись неравенства (4.29) и при этом Di оставалось полиномиально моделируемым. Будем выбирать x1 , . . . , xm по очереди по правилу: ( x1i , если ci = 1, xi = x0i , если ci = 0. причем, x1i , x0i выбираются случайно так, чтобы с вероятностью 1−small(n) были выполнены неравенства D̃i (f (x1i )β) − Ẽi (f (x1i )) > D̃i (f (T )β) − Ẽi (f (T )) − ε/2m, (4.30) {ineq1} D̃i (f (x0i )h(x0i )) (4.31) {ineq2} − Ẽi (f (x0i )) > D̃i (f (T̄ )h(T̄ )) − Ẽi (f (T̄ )) − ε/2m (мы опускаем второй параметр у Ei , поскольку эта случайная величина не зависит от него). Усреднение берётся по выбору T, T̄ , но не x1i , x0i . Будем в дальнейшем называть набор x1i , x0i удачным, выполнены неравенства (4.30) и (4.31). Возможность с близкой к единице вероятностью сделать удачный выбор за полиномиальное время следует из следующей леммы, доказательство которой мы отложим на конец. Сублемма 15.4. Пусть s(n), p(n), u(n) — произвольные многочлены. Тогда существует вероятностный алгоритм который на входе n, δ, имея в качестве оракула функцию A : {0, 1}s(n) × {0, 1}u(n) → {−1, 0, 1} c вероятностью 1 − small(n) за время poly(n/δ) выдает некоторое x ∈ {0, 1}s(n) . При этом, для любого множества S ⊂ {0, 1}q(n) доли не менее 1/p(n) с вероятностью не менее 1 − small(n) для выданного x выполнено неравенство Ey A(x, y) > Ex,y A(x, y) − δ. {l-choice} 96 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Применим алгоритм этой леммы к δ = ε/2m и функциям A(x, v) = R(Di (f (x)β) − R(Ei (f (x))) (для выбора x1i ) и A(x, v) = R(Di (f (x)h(x)) − R(Ei (f (x))) (для выбора x0i ), где v последовательность случайных бит, нужная для выбора β и всего остального скрытого в определении случайных величин Di , Ei . В качестве S мы будем рассматривать множество O для выбора x1i и его дополнение для выбора x0i . Используя алгоритм этой леммы, мы сможем удачно выбрать x1i , x0i , с вероятностью 1 − small(n). Докажем, что если выбор x1i , x0i был удачным, то то выполнено неравенство (4.29). В самом деле, сложим неравенства (4.30) и (4.31) с коэффициентами λ и 1 − λ. Сложение отрицательных слагаемых даст Ẽi+1 с минусом в левой части и Ẽi + ε/2m, также с минусом, в правой. Сумма остальных двух членов в левой части равна D̃i+1 . Итак, мы получили неравенство D̃i+1 − Ẽi+1 + Ẽi > > λD̃i (f (T )β) + (1 − λ)D̃i (f (T̄ )h(T̄ )) − ε/2m. Теперь добавим и вычтем из правой части λD̃i (f (T )h(T )): D̃i+1 − Ẽi+1 + Ẽi > > λ[D̃i (f (T )β) − D̃i (f (T )h(T ))]+ + λD̃i (f (T )h(T )) + (1 − λ)D̃i (f (T̄ )h(T̄ )) − ε/2m. Последние два слагаемых дают D̃i и мы получаем искомое неравенство D̃i+1 − Ẽi+1 + Ẽi > > λ[D̃i (f (T )β) − D̃i (f (T )h(T ))] + D̃i − ε/2m. Итак, мы доказали лемму 15. Доказательство леммы 15.4. Мы выбираем случайно достаточно много кандидатов x1 , . . . , xN ∈ {0, 1}s(n) . Для каждого кандидата x = xj мы оцениваем методом Монте-Карло величину Ey A(x, y). По x за время poly(n/δ) можно найти приближенное значение Ey A(x, y) с погрешностью δ/3 с вероятностью не менее 1 − e−Ω(n) . Для этого нужно взять в качестве приближения среднее арифметическое (A(x, y1 )+· · ·+A(x, yM ))/M , где yi выбираются случайно и M > n/δ 2 (неравенство Хёфдинга). Мы выбираем кандидата x, для которого найденное приближение к Ey A(x, y) оказалось наибольшим, мы и выдаём его. 4.18. ПОСТРОЕНИЕ ГЕНЕРАТОРА ФАЛЬШИВОЙ ЭНТРОПИИ И ГЕНЕРАТОРА ПСЧ ДЛЯ РА При выборе N мы заботимся, чтобы с вероятностью 1−e−Ω(n) не менее N/2p(n) кандидатов попали в множество S. По неравенству Хёфдинга, для этого достаточно, чтобы N было больше np(n)2 . Тогда при этом условии, среднее арифметическое чисел Ey A(xi , y) по кандидатам, попавшим в S, отличается от Ex∈S,y A(x, y) более, чем δ/3, c вероятностью меньшей 2 e−Ω(δ (N/2p(n)) и при N > np(n)/δ 2 эта вероятность есть e−Ω(n) . Таким образом, с вероятностью 1 − e−Ω(n) у некоторого кандидата x00 из S найденное приближение к Ey A(x00 , y) не меньше, чем Ex∈S,y A(x, y) − δ/3 − δ/3. Для выданного кандидата x0 мы нашли приближение к Ey A(x0 , y) с погрешностью δ/3. Поскольку у x0 найденное приближение не меньше, чем у x00 , мы можем заключить, что Ey A(x , y) > Ex∈S,y A(x, y) − δ. Теорема доказана. 98 ГЛАВА 4. ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ Глава 5 Псевдослучайные функции Пусть фиксированы многочлены k(n), l(n). Будем рассматривать функции из {0, 1}k(n) или из {0, 1}∗ в {0, 1}l(n) с равномерным распределеk(n) нием на них. В первом случае таких функций (2l(n) )2 и каждая из них задается l(n)2k(n) битами. Поэтому для выбора случайной функции нам нужно l(n)2k(n) случайных битов. Во втором случае функций вообще бесконечно много и конечным числом битов не обойтись. Наша цель — уменьшить количество случайных битов до некоторого многочлена от n за счет небольшого ухудшения “степени случайности”. Точнее, мы хотим построить семейство функций fs : {0, 1}k(n) → {0, 1}l(n) или fs : {0, 1}∗ → {0, 1}l(n) , где s ∈ {0, 1}m(n) и m(n) — некоторый многочлен (положительной степени и с положительными коэффициентами, так что по длине s можно найти n), удовлетворяющее следующим двум требованиям. В первом из них требуется полиномиальная вычислимость fs (x) по s, x. Во втором из них требуется вычислительная неотличимость функции fs от случайной функции того же типа (у случайной функции значения на разных словах независимы и равномерно распределены в множестве значений). Определение 24. Семейство функций fs : {0, 1}k(n) → {0, 1}l(n) или fs : {0, 1}∗ → {0, 1}l(n) называется полиномиально вычислимым, если существует детерминированный алгоритм, который по s, x вычисляет fs (x) за полиномиальное от |x| + |s| время. 99 100 5.1 ГЛАВА 5. ПСЕВДОСЛУЧАЙНЫЕ ФУНКЦИИ Слабые семейства ПСФ Требование вычислительной неотличимости существует в двух вариантах, обычном и усиленном. Определение 25. Полиномиально вычислимое семейство функций {fs | s ∈ {0, 1}m(n) , s ∈ N} называется слабым семейством ПСФ, если выполнено следующее. Пусть для некоторого полинома p(n) для каждого n выбраны p(n) попарно различных строк xn1 , . . . , xnp(n) из области определения fs ; тогда случайная величина {prf} fs (xn1 ) . . . fs (xnp(n) ) (5.1) вычислительно неотличима от равномерно распределенной последовательности битов той же длины. Здесь s выбирается случайно среди всех слов длины m(n) с равномерным распределением. Псевдослучайные функции из {0, 1}k(n) в {0, 1}l(n) с идентификатором длины m(n) можно понимать и как генераторы псевдослучайных чисел вида m(n) → 2k(n) l(n). При этом тестирующему генератор алгоритму доступны любые символы выходной последовательности в полиномиальном количестве. Поэтому возникает естественная идея построения семейства ПСФ. Пусть нам дан генератор Gn : {0, 1}m(n) → {0, 1}∞ , где m(n) — некоторый многочлен. Разрежем Gn (s) на блоки длины l(n), занумеруем первые 2k(n) из них двоичными последовательностями длины k(n) и положим fs (x) равным x-ому из полученных блоков. Однако эта конструкция не удовлетворяет ни первому, ни второму требованию. Требование полиномиальной вычислимости не выполнено, поскольку мы не можем по n, x, s за полиномиальное от n время найти xый блок Gn (s) (определение генератора гарантирует только возможность найти его за экспоненциальное от n время). Требование неотличимости не выполнено, поскольку определение генератора гарантирует вычислительную неотличимость только начала полиномиальной длины выходной последовательности от равномерно распределённой последовательности. Тем не менее, генераторы ПСЧ можно использовать для построения семейства ПСФ. Для этого надо действовать несколько другим способом. Как именно, мы расскажем в доказательстве следующей теоремы. Задача 45. Объясните, как из слабого семейства ПСФ типа {0, 1}∗ → {0, 1}l(n) можно изготовить слабое семейство ПСФ типа {0, 1}k(n) → {0, 1}l(n) . Объясните, как из слабого семейства ПСФ типа {0, 1}∗ → {0, 1}l(n) можно 101 5.1. СЛАБЫЕ СЕМЕЙСТВА ПСФ изготовить слабое семейство ПСФ типа {0, 1}k(n) → {0, 1}l (n) для любого полинома l0 6 l. Теорема 22. Если существует генератор ПСЧ Gn : {0, 1}n → {0, 1}2n , то любых полиномов k(n), l(n) существует слабое семейство ПСФ fs : {0, 1}k(n) → {0, 1}l(n) c идентификатором s длины max{n, l(n)}. Доказательство. Предположим сначала, что l(n) > n. Тогда отображение Gl(n) : {0, 1}l(n) → {0, 1}2l(n) является генератором ПСЧ. Идентификатор случайной функции s будет иметь длину l(n). Пусть s произвольная строка длины l = l(n) и x = x1 . . . xk — любое слово длины k = k(n). Значение fs (x) определяется так. Разрежем слово G(s) на две половины, и обозначим их через s0 и s1 . Оставим первую половину, если x1 = 0 и вторую половину, если x1 = 1. Опять применим к полученному слову sx1 отображение G и разрежем полученное слово на две части. Обозначим их через sx1 0 , sx1 1 . Теперь опять оставим только слово sx1 x2 и так далее. На каждом шаге мы применяем к текущему слову sw отображение G и оставляем левую половину, если очередной бит слова x равен нулю, и вторую половину, иначе. В результате мы получим некоторое слово sx , которое и будет значением fs на x. Очевидно, что fs (x) можно найти за полиномиальное время. Условие полиномиальной вычислимости выполнено. Проверим условие неотличимости от случайной функции. Пусть x1 , . . . , xp(n) последовательность из p(n) различных слов длины k(n). Нам нужно доказать вычислительную неотличимость fs (x1 ) . . . fs (xp(n) ) от равномерно распределённой строки длины p(n)l(n). Для этого рассмотрим новое семейство функций f˜t0 t1 , каждая функция в котором задается строкой t0 t1 длины 2l (а не длины l, как раньше). Новое семейство будем определять в точности, как и раньше, за исключением первого шага в рекуррентном определении sw (для слов w длины не более k). А именно, слова s0 , s1 теперь положим равными t0 , t1 , соответственно. Слово sΛ (где Λ обозначает пустое слово) теперь не определено. Мы утверждаем, что случайные величины fs (x1 ) . . . fs (xp(n) ) и f˜t0 t1 (x1 ) . . . f˜t0 t1 (xp(n) ) вычислительно неотличимы. Действительно, если бы они были отличимы схемой C, то эту схему можно было бы использовать для отличения случайных величин G(s) = s0 s1 и t0 t1 . Тот же трюк можно проделать еще раз: в определении f˜t0 ,t1 можно заменить s00 , s01 на независимые равномерно распределенные слова длины {th-random-function} 102 ГЛАВА 5. ПСЕВДОСЛУЧАЙНЫЕ ФУНКЦИИ l (слово s0 после этой замены становится неопределенным). Затем можно заменить, например, s010 , s011 на независимые равномерно распределенные слова и так не более, чем полином раз. На очередном шаге мы можем сделать следующее: если в определении текущего семейства f˜t слово sw выбирается чисто случайным образом (как подслово строки t, задающей функцию), мы можем заменить способ определения sw0 , sw1 : вместо того, чтобы применять к sw генератор G, мы можем взять случайные и независимые строки. При этом количество битов в t увеличится на l. Будем называть это преобразование модификацией относительно w. При модификации семейства f˜t относительно любого слова w случайная величина f˜t (x1 ) . . . f˜t (xp(n) ) изменяется незначительно: новая случайная величина будет вычислительно неотличима от исходной. Потому применить к исходному семейству ПСФ fs не более чем полином модификаций, то для результирующего семейства f˜t случайная величина f˜t (x1 ) . . . f˜t (xp(n) ) будет будет вычислительно неотличима от случайной величины fs (x1 ) . . . fs (xp(n) ). Применим модификации относительно всех начал w слова x1 (в порядке возрастания длины w), затем относительно всех начал слова x2 , которые не являются началами x1 , и так далее. Всего мы произведем не более k(n)p(n) модификаций. Полученная случайная величина f˜t (x1 ) . . . f˜t (xp(n) ) вычислительно неотличима от случайной величины fs (x1 ) . . . fs (xp(n) ). Осталось заметить, что f˜t (x1 ) . . . f˜t (xp(n) ) имеет равномерное распределение, поскольку для всех i слово f˜t (xi ) по построению является подсловом t и при разных i эти подслова не перекрываются. Осталось построить ПСФ для любого полинома l(n) < n. Для этого построим сначала ПСФ fs : {0, 1}k(n) → {0, 1}n , а затем модифицируем его, обрезав в fs (x) лишние n − l(n) битов. Аналогичным образом можно построить слабое семейство псевдослучайных функций типа {0, 1}∗ → {0, 1}l(n) (получающих на вход слова любой длины). Для этого сопоставим каждому слову x = x1 x2 . . . xm его префиксный код x̂ = x1 x1 x2 x2 . . . xm xm 01. Этот код обладает следующим свойством: если x 6= z, то ни одно из слов x̂, ẑ не является началом другого. Положим m(n) = l(n) и fs (x) = sx̂ (отображение (w, s) 7→ sw определено в доказательстве Теоремы 22). Поясним, почему мы в определении заменили x на его префиксный код. Это сделано потому, что для любых слов u, v слово suv является легко вычислимой функцией слова su , и поэтому старое определение не годится. dom-function1} 5.1. СЛАБЫЕ СЕМЕЙСТВА ПСФ 103 Теорема 23. Так определённое семейство функций является слабым семейством псевдослучайных функций. Доказательство. Условие полиномиальной вычислимости выполнено. Условие неотличимости от случайной функции доказывается точно так же, как в теореме 22. В том доказательстве нам было достаточно попарной несравнимости слов x1 , . . . , xp(n) . Это позволяло нам модифицировать семейство ft так, чтобы для всех i по очереди делать значения ft (xi ) случайными и независимыми от ft (xj ) при j < i. (После модификации семейства относительно всех собственных начал слова xi функции из полученного семейства становятся неопределёнными для всех собственных начал xi . Поэтому нам нужно, чтобы слова x1 , . . . , xp(n) были не только попарно различны, но и чтобы, ни одно из них не было собственным префиксом другого.) Задача 46. Нужно зарегистрировать паспортные данные всех желающих голосовать так, чтобы каждый мог проголосовать только один раз. При этом требуется, чтобы база данных избирательной комиссии этих данных не разглашала. Точнее, надо построить вероятностный полиномиальный алгоритм K и детерминированного полиномиальный алгоритм B с такими свойствами. Алгоритм K получает на вход параметр безопасности n в унарной записи и генерирует ключ k (хранящийся в избирательной комиссии). Алгоритм B получает на вход параметр безопасности, ключ k и паспортные данные (строку) x и генерирует элемент базы данных (другую строку) y. Требование безопасности заключается в следующем: для любого полиномиального количества различных строк x1 , . . . , xm полиномиальной длины (от параметра безопасности) строка B(n, k, x1 ) . . . B(n, k, xm ) имеет распределение, неотличимое от некоторого полиномиально моделируемого распределения. Требование возможности проголосовать: для любого полиномиального количества различных строк x1 , . . . , xm полиномиальной длины (от параметра безопасности) пренебрежимо мала вероятность совпадения каких-то из двух значений B(n, k, x1 ) . . . B(n, k, xm ). Постройте такие алгоритмы. (Похожая проблема возникла при выборах в Координационный совет Российской оппозиции в 2012 году.) 104 5.2 {p75} ГЛАВА 5. ПСЕВДОСЛУЧАЙНЫЕ ФУНКЦИИ Сильные семейства ПСФ Можно усилить требование неотличимости, разрешив в нём слову x2 зависеть от fs (x1 ), слову x3 — от пары fs (x1 ), fs (x2 ) и так далее. Для этого разрешим алгоритму, тестирующему псевдослучайную функцию, запрашивать ее значение на произвольных аргументах, причем очередной аргумент можно выбрать после того, как алгоритм узнал значение функции на предыдущих аргументах. Для аккуратного определения таких тестеров, нам понадобятся схемы с оракулом. Так называют схемы, в которых есть элементы для вычисления “внешней” функции g, аргументами и значениями которой являются бинарные слова. Такие элементы мы будем называть внешними. Результат работы схемы C с оракулом, которому дана внешняя функция g мы будем обозначать через C[g]. Усиленное требование неотличимости семейства fs от случайной функции звучит так: для любой последовательности схем Cn полиномиального размера с оракулом вероятность события A[fs ] = 1 приблизительно равна вероятности события A[g] = 1. Здесь s выбирается с равномерным распределением среди строк длины m(n), а g выбирается с равномерным распределением среди всех функций того же типа, что и fs . (То есть, каждый внешний элемент g возвращает случайное слово, не зависимое от всех выданных ранее слов, если на его входе новое слово, и то же самое слово, которое он выдал раньше на входе x, если на его вход подано слово x, которое уже было на входе какого-то из предыдущих внешних элементов схемы.) Замечание 8. Заметим, что это требование и в самом деле сильнее: существует семейство функций fs , удовлетворяющие требованию (б), но не удовлетворяющее усиленному требованию (б). Пусть, например, функция fs : {0, 1}n → {0, 1}n выбирается так. Выберем случайное слово v и положим fs (00 . . . 0) = v и fs (v) = 00 . . . 0. Значение на всех остальных словах выберем случайно и независимо. Тогда для всех s выполнено равенство fs (fs (00 . . . 0)) = 00 . . . 0. Это равенство можно проверить полиномиальным алгоритмом с оракулом. При этом, для случайной функции g равенство g(g(00 . . . 0)) = 00 . . . 0 выполнено с пренебрежимо малой вероятностью 2−n + (2n − 1)2−2n (первое слагаемое есть вероятность того, что g(00 . . . 0) = 00 . . . 0, а вторая — вероятность того, что g(00 . . . 0) = v 5.2. СИЛЬНЫЕ СЕМЕЙСТВА ПСФ 105 и g(v) = 00 . . . 0 для некоторого v, состоящего не из одних нулей). Таким образом, усиленное требование не выполнено. С другой стороны, для любой последовательности различных слов u1 , . . . , upoly(n) длины n слово v с приблизительно единичной вероятностью отлично от всех слов u1 , . . . , upoly(n) . Поэтому распределение случайной величины fs (u1 ), . . . , fs (upoly(n) ) статистически неотличимо от равномерного распределения. Определение 26. Семейство функций fs : {0, 1}k(n) → {0, 1}l(n) или fs : {0, 1}∗ → {0, 1}l(n) называется сильным семейством ПСФ, если оно удовлетворяет требованиям полиномиальной вычислимости и усиленному требованию вычислительной неотличимости от случайной функции. {th-random-function2} Теорема 24. Построенное для теоремы 22 семейство ПСФ fs : {0, 1}k(n) → {0, 1}l(n) удовлетворяет усиленному требованию неотличимости. Доказательство. Пусть дана последовательность схем с оракулом Cn полиномиальной длины. Нам нужно доказать, что вероятность события C[fs ] = 1 приблизительно равна вероятности события C[g] = 1, где s случайная строка, а g — случайная функция. Для этого упорядочим все элементы схемы так, что входом любого элемента являются только выходы меньших элементов. Пусть количество внешних элементов в схеме равно k. Рассмотрим k + 1 следующих экспериментов. В эксперименте номер i = 0, 1, . . . , k мы запускаем схему C, при этом первым i внешним элементам даём функционировать как случайная функция g (одна и та же для всех элементов). После того, как мы найдём слова x1 , . . . , xi , которые подаются на вход первых i внешних элементов, мы приступаем ко второму этапу эксперимента. Для этого применим к семейству функций fs преобразование T из предыдущего доказательства для всех собственных начал w всех слов x1 , . . . , xi . В результате мы получим некоторое новое семейство функций. Выберем случайную функцию f из нового семейства так, чтобы ее значение на словах x1 , . . . , xi совпадало со значением g. Это можно сделать так, чтобы при фиксированных g(x1 ), . . . , g(xk ) функции f и g были независимыми. Затем продолжим вычисление схемы, считая, что все остальные внешние элементы вычисляют функцию f . Эксперимент считается успешным, если в результате схема выдала 1. Поскольку на словах x1 , . . . , xi функции f и g принимают одно и то же значение, результат эксперимента равен C[f ]. 106 ГЛАВА 5. ПСЕВДОСЛУЧАЙНЫЕ ФУНКЦИИ Нам надо доказать, что вероятность успеха в экспериментах с номерами 0 и k приблизительно равны. Поскольку количество экспериментов ограничено многочленом от n, достаточно доказать это для экспериментов с номерами i и i + 1 (для любого i). Допустим это не так. Тогда можно зафиксировать значения функции g на входах первых i внешних элементов так, чтобы результаты успеха в i-ом и i + 1-ом экспериментах сильно отличались. Причем эти значения для обоих экспериментов можно зафиксировать одинаковым образом. После этого слова на входах первых i + 1 внешних элементов в обоих экспериментах окажутся одинаковыми. Обозначим их через x1 , . . . , xi+1 . Как мы отмечали, результат i-ого эксперимента равен C[f ], где f есть функция выбранная из некоторого семейства случайных функций. Если слово xi+1 совпадает с одним из слов x1 , . . . , xi , то результат i + 1-ого эксперимента равен C[f ], где f есть функция, выбранная из того же самого семейства, и поэтому вероятности успеха двух экспериментов не различаются. Иначе результат i + 1-ого эксперимента равен C[f ], где f есть функция выбранная из семейства, полученного из первого семейства преобразованием T , выполненным для всех собственных начал слова xi+1 . Будем выполнять их по очереди, начиная с более коротких начал. Если после применения одного преобразования для какого-то начала вероятность события C[f ] = 1 сильно изменится, то схему C можно будет использовать для различения выхода генератора ПСЧ от случайной последовательности. Поэтому при каждом применении преобразования, вероятность события C[f ] = 1 изменяется незначительно. После применения всех преобразований мы получив вероятность успеха в i + 1-ом эксперименте. Задача 47. Докажите, что семейство ПСФ, построенное в доказательстве теоремы 23 удовлетворяет усиленному требованию неотличимости от случайной функции. Глава 6 Схемы шифрования {s-encription} 6.1 Общее определение Схемы шифрования состоят из трех полиномиальных вероятностных алгоритмов: алгоритма шифрования E, алгоритма расшифровки D и алгоритма генерации ключей K. Алгоритм K получает на вход параметр безопасности (в унарной записи) и выдаёт в качестве результата пару слов (e, d), называемых ключами. Алгоритм E получает на вход параметр безопасности и пару слов, ключ для шифровки e и сообщение m, а на выход выдаёт некоторое слово, называемое шифрограммой. Алгоритм D получает на вход параметр безопасности и пару слов, ключ для расшифровки d и шифрограмму, а на выход выдаёт некоторое слово (которое в идеале должно быть равно зашифрованному сообщению). Требования к этим алгоритмам зависят от того, какую атаку выдерживает схема. Однако, независимо от типа атаки, схема схема шифрования должна удовлетворять следующему требованию, обеспечивающему возможность правильной расшифровке при наличии правильного ключа: {pccs} Правильность расшифровки: для любой последовательности сообщений xn длины poly(n) с вероятностью приблизительно равной 1 выполнено D(d, E(e, x)) = x. (Для упрощения обозначений мы опускаем индекс n.) Источником случайности в этом требовании является не только случайная пара ключей (e, d), но и случайные биты алгоритмов E, D. Распределение на парах ключей (e, d) задается алгоритмом генерации K. 107 108 ГЛАВА 6. СХЕМЫ ШИФРОВАНИЯ Кроме того, мы предполагаем, что случайные биты алгоритмов E, D независимы от пары (e, d). Вторым требованиям к схеме шифрования является невозможность из одной или нескольких шифрограмм получить хоть какую-то информацию о зашифрованном сообщении (зашифрованных сообщениях в случае нескольких шифрограмм), кроме его длины 1 . В зависимости от того, предполагается ли известным противнику ключ для шифрования, различают схемы шифрования с открытым ключом, или асимметричные схемы, и схемы шифрования с закрытым ключом, или симметричные схемы. Кроме этого различия, мы будем различать еще три вида атаки: (1) противнику известна лишь одна шифрограмма одного неизвестного ему сообщения (и, возможно, открытый ключ), (2) противнику известны шифрограммы полиномиального от n количества неизвестных сообщений и (3) противнику известны шифрограммы полиномиального от n количества сообщений (и, возможно, открытый ключ), некоторые из которых ему неизвестны, а остальные известны и выбраны им самим (и, возможно, открытый ключ). Таким образом, в теории возможно шесть определению надежности схем шифрования. Однако, когда мы дадим точные определения, станет ясно что, если противнику известен ключ для шифрования, то устойчивость относительно атаки всех трех типов означает одно и то же. Поэтому из шести типов надёжности остается лишь четыре. 6.2 Одноразовые схемы Сначала дадим определение надежности первого типа. Определение 27. Схема шифрования (K, E, D) выдерживает подслушивание одной шифрограммы, если для любого полинома p(n) и для любых двух последовательностей сообщений an , bn таких, что длины an , bn равны p(n), случайные величины E(e, an ) и E(e, bn ) вычислительно неотличимы. В этом случае будем называть схему одноразовой схемой шифрования с закрытым ключом (или одноразовой симметричной схемой). Схема шифрования (K, E, D) выдерживает подслушивание одной шифрограммы и ключа для шифрования, если для любого полинома p(n) и 1 было бы желательно, чтобы он не узнавал и длины, но таких схем в предположении, что сообщения могут иметь любую длины, неизвестно 6.2. ОДНОРАЗОВЫЕ СХЕМЫ 109 для любых двух последовательностей сообщений an , bn таких, что длины an , bn равны p(n), случайные величины (e, E(e, an )) и (e, E(e, bn )) вычислительно неотличимы. В этом случае будем называть схему одноразовой схемой шифрования с открытым ключом (или одноразовой асимметричной схемой). Доступность противнику ключа для шифрования означает, что в определении вычислительной неотличимости к шифрограммам добавляется еще этот ключ. Поэтому любая одноразовая схема является с открытым ключом является и схемой с закрытым ключом. Обратное, как мы увидим, может не выполняться. Условие вычислительной неотличимости в определении выдерживания подслушивания одного сообщения эквивалентно своему частному случаю: неотличимости случайных величин E(e, an ) и E(e, 00 . . . 0) (подряд p(n) нулей). Вторую из этих случайных величин можно генерировать, зная только n и длину сообщения. Поэтому, какое бы сообщение мы не зашифровывали случайно выбранным ключом, шифрограмма не будет нести никакой информации — некоторую неотличимую от нее случайную величину можно сгенерировать и не зная исходного сообщения. Заметим, что в определении важно, что ключ выбирается случайно, а не фиксирован. Мы не можем требовать неотличимости шифрограмм E(e, an ) и E(e, bn ) при любом фиксированном ключе e, поскольку любой фиксированный ключ d можно “запаять” в схему-отличитель, которая будет применять алгоритм D и, скажем, выдавать первый бит расшифрованного сообщения. Из условия выдерживания подслушивания одного сообщения следует, что, не зная ключа, никакой бит исходного сообщения нельзя найти по шифрограмме с вероятностью существенно больше 1/2, если сообщение выбирается случайно с равномерным распределением среди всех строк какой-то фиксированной полиномиальной от n длины k. Действительно, пусть противник C (схема полиномиального от n размера) пытается по шифрограмме восстановить, скажем, первый бит сообщения. Из условия (б) следует, что вероятности событий C(E(e, 0a)) = 1 и C(E(e, 1a)) = 1 (где a случайная строка длины k − 1) приблизительно равны. Другими словами сумма вероятностей событий C(E(e, 0a)) = 0 и C(E(e, 1a)) = 1 приблизительно равна 1, следовательно, вероятность события C(E(e, b)) = b[1] (где b случайная строка длины k) примерно равна 1/2. Задача 48. Пусть противник интересуется некоторой информацией f (x) 110 {th3} ГЛАВА 6. СХЕМЫ ШИФРОВАНИЯ о передаваемом сообщении x (где f : {0, 1}∗ → {0, 1}∗ — некоторая функция). Допустим противник применяет к шифрограмме E(e, x) некоторую схему Dn полиномиального от n размера для извлечения этой информации. Докажите, что если схема шифрования выдерживает подслушивание одной шифрограммы, то существует доступная случайная величина αn такая, что для любой последовательности сообщений xn полиномиальной длины, вероятности событий Dn (E(e, xn )) = f (xn ) (вероятность успеха атаки) и αn = f (xn ) приблизительно равны. То есть, информация f (xn ) может быть вычислена и без подслушивания с примерно той же вероятностью успеха. Мы начнём с построения одноразовой симметричной схемы. Её можно построить на основе любого генератора ПСЧ. Теорема 25. Если существует генератор Gn : {0, 1}n → {0, 1}∞ , то существует и схема шифрования с закрытым ключом. Доказательство. Сначала построим схему шифрования с закрытым ключом, для которой определение выполняется только для какого-нибудь одного фиксированного полинома p(n) (а не для всех полиномов, как требуется). Эта схема называется гаммированием (one-time pad). Ключи для шифровки и расшифровки в схеме гаммирования совпадают и равны случайно выбранному с равномерным распределением слову γ длины p(n). Шифрограмма равна E(γ, x) = γ ⊕ x (побитовое сложение по модулю 2), а алгоритм расшифровки точно такой же D(γ, y) = γ ⊕ y. Если длина сообщения не равна p(n), то положим E(γ, x) = x, D(γ, y) = y; условие (б) в этом случае, разумеется, не выполнено, но это и не требуется.) Условие полиномиальной вычислимости E и D очевидно выполнено. Неотличимость шифрограмм сообщений одной длины очевидна, поскольку случайные величины γ ⊕ an и γ ⊕ bn ) имеют одно и то же распределение (равномерное), а потому вычислительно неотличимы. Недостатком гаммирования является то, что длина ключа равна длине сообщения, поэтому на практике его можно применять только для шифрования коротких сообщений. Теперь модифицируем схему гаммирования, заменив случайную величину γ на псевдослучайную величину, порожденную генератором. Ключи для шифровки и расшифровки опять совпадают и равны некоторому слову s, равномерно распределенному среди строк длины n. Алгоритм E(s, x) является детерминированным и выдает побитовую сумму x и первых |x| битов последовательности Gn (s). Будем обозначать выданную им 6.2. ОДНОРАЗОВЫЕ СХЕМЫ 111 последовательность через x ⊕ G(s). Алгоритм D(s, y) выдает y ⊕ G(s), побитовую сумму y и первых |y| битов последовательности G(s). Ясно, что условие полиномиальной вычислимости E и D очевидно выполнено. Для проверки выдерживания подслушивания шифрограммы фиксируем произвольный полином p(n). Нам надо доказать неотличимость случайных величин an ⊕ G(s) и bn ⊕ G(s), где an , bn любые последовательности слов длины p(n). Поскольку функция G является генератором, случайная величина G(s)p(n) вычислительно неотличима от случайной величины γp(n) , равномерно распределенной среди слов длины p(n). Поскольку применение схемы полиномиального размера сохраняет вычислительную неотличимость, случайная величина an ⊕ G(s) неотличима от случайной величины an ⊕ γp(n) . Случайная величина an ⊕ γp(n) имеет равномерное распределение, значит случайная величина an ⊕ G(s) вычислительно неотличима от случайной величины γp(n) . То же самое справедливо для случайной величины bn ⊕ G(s), значит она вычислительно неотличима от an ⊕ G(s). Для существования схемы шифрования с открытым ключом требуется более сильная гипотеза, чем существование генератора. Такую схему удается построить при условии существования односторонней перестановки с секретом. {th4} Теорема 26. Если существует односторонняя перестановка с секретом, то существует и схема шифрования с открытым ключом. Доказательство. Сначала научимся шифровать один бит. Гаммирование нам уже не поможет, потому что в схеме гаммирования закрытый ключ совпадал с открытым. Пусть дана односторонняя функция {ge | e ∈ An , n ∈ N} с секретом. Как мы видели, немного и изменив ее, мы можем построить трудный бит he для нее. Теперь построим схему шифрования с открытым ключом одного бита b. Ключом для шифрования e будет идентификатор функции ge , он выбирается алгоритмом доступа к равномерному распределению в An . Ключом для расшифровки будет секрет d. Алгоритм шифрования выдает пару y = hb ⊕ he (x), ge (x)i. Здесь x выбирается по распределению ξe из условия (в) для функции ge . Зная d расшифровать y просто: надо найти x, обратив ge (x), и сложить первую компоненту y с he (x). Вероятность ошибки при расшифровке складывается из статистического расстояния между случайными 112 ГЛАВА 6. СХЕМЫ ШИФРОВАНИЯ величинами (e, ξe ) и (e, γe ) (где γe равномерно распределено в De ) и вероятности ошибки алгоритма из условия (г). Обе вероятности по условию пренебрежимо малы. Шифрограмма любого из двух битов вместе с открытым ключом e будет вычислительно неотличима от случайной величины hr, ge (x), ei, где r случайный равномерно распределенный бит, независимый от x, e. Действительно, по лемме 7 случайная величина hr, ge (x), ei вычислительно неотличима от случайной величины hhe (x), ge (x), ei. Поэтому для любого бита b случайные величины hb ⊕ r, ge (x), ei и hb ⊕ he (x), ge (x), ei вычислительно неотличимы. Первая из них имеет то же распределение, что и hr, ge (x), ei. При замене равномерного распределения на De на распределение, генерируемое алгоритмом из пункта (в), получим случайную величину, статистически неотличимую от исходной. Теперь построим схему шифрования произвольного числа битов. Ключом для шифрования опять будет идентификатор e односторонней перестановки, а ключом для расшифровки соответствующий секрет. Шифрограмму сообщения b1 b2 . . . bm из m битов определим как b1 ⊕ he (x), b2 ⊕ he (ge (x)), . . . , bm ⊕ he ((ge )m−1 (x)), (ge )m (x). Выдерживание подслушивания одной шифрограммы и ключа для шифрования следует из Теоремы 6. Пусть p(n) произвольный полином. Из неё следует вычислительная неотличимость случайных величина e, b1 ⊕ he (γe ), b2 ⊕ he (ge (γe )), . . . , bp(n) ⊕ he ((ge )p(n)−1 (γe )), (ge )p(n) (γe ) и e, b1 ⊕ r1 , b2 ⊕ r2 , . . . , bp(n) ⊕ rp(n) , γe вычислительно неотличимы. Последняя из них имеет то же распределение, что и случайная величина e, r1 , r2 , . . . , rp(n) , γe , которая не зависит от b1 . . . , bp(n) . Поэтому при разных сообщениях b1 . . . , bp(n) случайные величины, состоящие из открытого ключа и шифрограммы, вычислительно неотличимы друг от друга. 6.3 {s-encrypt-many} Многоразовые схемы Теперь дадим определение надежности второго типа, когда противнику разрешается подслушать шифрограммы произвольного полиномиального числа неизвестных сообщений. 6.3. МНОГОРАЗОВЫЕ СХЕМЫ 113 Определение 28. Схема шифрования (K, E, D) выдерживает подслушивание нескольких шифрограмм, если для любых полиномов p(n), q(n) и q(n) q(n) для любой пары последовательностей x1n , . . . , xn и yn1 , . . . , yn из q(n) слов длины p(n) последовательность случайных величин E(e, x1 ), E(e, x2 ), . . . , E(e, xq(n) ) и E(e, y 1 ), E(e, y 2 ), . . . , E(e, y q(n) ) (6.1) {eq-mutlisec} вычислительно неотличимы (для читаемости мы опустили нижний индекс n). В этом случае мы будем называть схему многоразовой симметричной схемой. Схема шифрования (K, E, D) выдерживает подслушивание нескольких шифрограмм и ключа для шифрования, если более того, для случайных величин из (6.1) случайные величины e, E(e, x1 ), E(e, x2 ), . . . , E(e, xq(n) ) и e, E(e, y 1 ), E(e, y 2 ), . . . , E(e, y q(n) ) также вычислительно неотличимы. В этом случае мы будем называть схему многоразовой асимметричной схемой. Задача 49. Докажите, что если любая одноразовая схема шифрования (K, E, D) c открытым ключом является также и многоразовой, то есть, выдерживает подслушивание нескольких шифрограмм и ключа для шифрования. Задача 50. Докажите, что в многоразовой асимметричной схеме алгоритм E обязан быть вероятностным. Для симметричных схем это неверно: схему, построенную в доказательстве предыдущей теоремы нельзя применять дважды с одним и тем же ключом. Действительно, узнав шифрограммы сообщений a и b, то есть, узнав a ⊕ G(s) и b ⊕ G(s), противник узнает побитовую сумму переданных сообщений a ⊕ b. Конструкция многоразовой схемы шифрования из семейства ПСФ. Пусть дано семейство ПСФ fs : {0, 1}n → {0, 1}. Требуется построить многоразовую схему шифрования однобитовых сообщений. Ключи для шифровки и расшифровки совпадают и равны случайно выбранному идентификатору s функции fs из данного семейства ПСФ. Шифрограмма однобитового сообщения m ∈ {0, 1} состоит из случайно выбранного слова z длины n и еще одного бита m ⊕ fs (z): Ẽ(s, m) = (z, m ⊕ fs (z)). 114 ГЛАВА 6. СХЕМЫ ШИФРОВАНИЯ Алгоритм расшифровки D в применении к ключу s и шифрограмме (z, c) выдает c ⊕ fs (z): D(s, (z, c)) = c ⊕ fs (z). Шифрограмма l-битного сообщения m состоит из l выбранных слов z1 , . . . , zl длины n и ещё одного слова длины l: m1 ⊕ fs (z1 ) . . . ml ⊕ fs (zl ). Теорема 27. Если исходное семейство является слабым семейством ПСФ, то построенная схема шифрования выдерживает подслушивание нескольких сообщений. Доказательство. Поскольку мы шифруем сообщения, разбивая его на биты, достаточно проверить требование только для одной пары сообщений xn и yn одной и той же длины p(n), где p — некоторый многочлен. То есть, нам надо доказать вычислительную неотличимость шифрограмм E(e, xn ) и E(e, yn ). Для этого докажем, что обе они вычислительно неотличимы от случайной величины z1 , . . . , zp(n) , r, состоящей из независимых слов, выбранных с равномерным распределением среди слов длины где n, . . . , n, p(n) соответственно. Напомним, что шифрограмма E(e, x) сообщения x выглядит так: z1 , . . . , zp(n) , x1 ⊕ fs (z1 ) . . . xp(n) ⊕ fs (zp(n) ) Сначала заменим в определении этой случайной величины псевдослучайную функцию fs на случайную функцию g. Мы получим такую случайную величину: z1 , . . . , zp(n) , x1 ⊕ g(z1 ) . . . xp(n) ⊕ g(zp(n) ). Эта случайная величина вычислительно неотличима от шифрограммы в силу того, что семейство ПСФ надежно в слабом смысле (определение на стр. 100). В самом деле, если бы они были отличимы, то можно было бы зафиксировать z1 , . . . , zp(n) так, чтобы полученные случайные величины были отличимыми. А эти случайные величины получаются из неотличимых случайных величин fs (z1 ) . . . fs (zp(n) ) и g(z1 ) . . . g(zp(n) ) преобразованием, задаваемым схемами полиномиального размера. Затем заменим в полученной случайной величине слово g(z1 ) . . . g(zp(n) ) на последовательность r1 . . . rp(n) из p(n) случайных бит. Полученная последовательность z1 , . . . , zp(n) , x1 ⊕ r1 . . . xp(n) ⊕ rp(n) 6.4. АТАКА С ВЫБОРОМ СООБЩЕНИЙ. 115 статистически неотличима от исходной, поскольку вероятность того, что какие-то два слова из z1 , . . . , zp(n) совпадут, пренебрежимо мала. А при условии попарного различия слов z1 , . . . , zp(n) эти случайные величины имеют одинаковое распределение. Наконец, полученная последовательность имеет одинаковое распределение с последовательностью z1 , . . . , zp(n) , r1 . . . rp(n) . Более экономная симметричная многоразовая схема шифрования Недостатком построенной СШЗК является большая длина шифрограммы: она примерно равна произведению параметра безопасности n и длины сообщения. Небольшим усложнением схемы произведение можно заменить на сумму. Пусть дано семейство ПСФ fs : {0, 1}n → {0, 1}n и генератор ПСЧ Gn {0, 1}n → {0, 1}∞ . Построим многоразовую схему шифрования сообщений, у которой длина шифрограммы равна сумме параметра безопасности и длины сообщения. Ключом для шифрования и расшифровки является случайно выбранный идентификатор ПСФ: e = d = s. Шифрограмма сообщения m ∈ {0, 1}l состоит из случайно выбранного слова z длины n и побитовой суммы сообщения и l первых битов выхода генератора на зерне fs (z): E(s, m) = z, m ⊕ Gn (fs (z))l . Алгоритм расшифровки D в применении к ключу s и шифрограмме (z, c) выдает c ⊕ Gn (fs (z))l : D(s, z, c) = c ⊕ Gn (fs (z))l . 6.4 Атака с выбором сообщений. Наконец, сформулируем требование надежности третьего типа. 116 ГЛАВА 6. СХЕМЫ ШИФРОВАНИЯ Определение 29. Наконец, схема шифрования (K, E, D) выдерживает атаку с выбором сообщений, если выполнено следующее. Пусть даны полиномы p(n) и q(n) и последовательность x1 , . . . , xp(n) из p(n) (секретных) сообщений длины q(n). Представим себе, что противник с помощью схемы Cn , размер которой ограничен полиномом от n, играет с нами в следующую игру. На i-ом ходу либо предлагает нам зашифровать либо наше сообщение xi , либо одно своё сообщение, вычисленное схемой Cn . Мы передаём противнику шифрограмму этого сообщения, так что на каждом ходу на вход схемы Cn подаётся последовательность шифрограмм предыдущих сообщений. Игра продолжается ходов p(n). Обозначим через ξn (Cn , x1 , . . . , xp(n) ) случайную величину, состоящую из последовательности полученных противником шифрограмм. Требуется, чтобы для всех p, q, Cn и x1 , . . . , xp(n) как выше некоторую вычислительно неотличимую от ξn (Cn , x1 , . . . , xp(n) ) случайную величину ηn (Cn ) можно было сгенерировать по n и схеме Cn . Будем также говорить, что схема шифрования (K, E, D) выдерживает атаку с выбором сообщений и известным ключом для шифрования, если в описанном выше сценарии противнику дается ключ для шифрования (а значит схема Cn использует его, как дополнительный вход), а требование состоит в том, чтобы для всех p, q, Cn и x1 , . . . , xp(n) по паре e, Cn можно было за полиномиальное время породить некоторую случайную величину ηn (e, Cn ) такую, что пара e, ηn (Cn ) вычислительно неотличима от пары e, ξn (Cn , x1 , . . . , xp(n) )). Здесь ξn (e, Cn , x1 , . . . , xp(n) ) обозначает последовательность всех шифрограмм, сообщенных противнику. Схемы шифрования с открытым ключом. Можно показать, что любая одноразовая схема шифрования (K, E, D) с открытым ключом выдерживает и атаку с выбором сообщений и известным ключом для шифрования. Однако это не так просто — мы докажем это позже в главе о разглашении информации. Схемы шифрования с закрытым ключом. Нетрудно показать, что построенные нами в разделе 6.3 на основе слабого семейства ПСФ многоразовые симметричные схемы шифрования выдерживают атаку с выбором сообщений. Докажем это для первой (неэкономной) схемы. 6.4. АТАКА С ВЫБОРОМ СООБЩЕНИЙ. 117 В самом деле, допустим, что существует схема из функциональных элементов, которая атакует схему шифрования с не пренебрежимо малой вероятностью. Заменим в алгоритме шифрования использование псевдослучайной функции на случайную. Тогда вероятность успеха атаки изменится незначительно. При этом мы можем предполагать все слова z, выбранные случайно во время атаки попарно различны (это происходит с вероятностью, приблизительно равной 1). Но тогда все биты используемые при гаммировании независимы. Поэтому все шифрограммы представляют независимо выбранные случайные биты. Замечание 9. Говорят, что посол, получив по дипломатическим каналам зашифрованную ноту, прежде чем оглашать ее текст, должен хотя бы немного изменить ее текст (например, переставив пару слов), чтобы не разгласить информации о ключе, использованном при шифровании (противнику, который уже знает содержание шифрограммы этой ноты). Для многоразовых схем в этом нет необходимости. В самом деле, пусть мы зашифровали дипломатическую ноту x1 с помощью ключа e, а потом с помощью того же ключа e зашифровали некоторое секретное сообщение x2 . Тогда случайная величина x1 E(e, x1 )E(e, x2 ) вычислительно неотличима от случайной величины x1 E(e, 00 . . . 0)E(e, 00 . . . 0), то есть мы разгласили только x1 и длину x2 . 118 ГЛАВА 6. СХЕМЫ ШИФРОВАНИЯ Глава 7 Протоколы привязки (bit commitment) Протоколы привязки имитируют сундучок с замком, в который первый игрок (отправитель) может положить некоторое бинарное слово, закрыть его на ключ и передать второму игроку (получателю). Получатель не может открыть сундучок до тех пор, пока отправитель не передаст ему ключ. Отправитель не может подменить бит, положенный в сундучок. Различают два вида таких протоколов — интерактивные и неинтерактивные. Начнем со вторых, как более простых. 7.1 Неинтерактивные протоколы привязки Неинтерактивный протокол привязки состоит из двух алгоритмов: вероятностного полиномиального алгоритма S и детерминированного полиномиального алгоритма R. Алгоритм S получает на вход параметр безопасности n, сообщение σ и выдает на выход ключ kn (σ) и привязку cn (σ). Случайные величины k(σ) и c(σ) (мы опускаем параметр безопасности в обозначениях) имеют параметр σ и являются зависимыми, поскольку имеют общий источник случайности — результаты бросаний, выполненных алгоритмом S(σ). Привязка имитирует закрытый сундучок, в котором хранится сообщение σ. Алгоритм R получает на вход две строки k (ключ) и c (привязку) и выдает на выход двоичную строку или специальный символ ⊥, означающий, что ключ k не подошел к замку. Требования к этим алгоритмам такие. 119 {bit-commitment} ment-non-interactrive} 120 ГЛАВА 7. ПРОТОКОЛЫ ПРИВЯЗКИ (BIT COMMITMENT) Полнота: для любой последовательности слов {σn } с |σn | 6 poly(n) с вероятностью, приблизительно равной 1, выполнено R(c(σn ), k(σn )) = σn . Это требование означает, что при открытии сундучка настоящим ключом там обнаруживается положенное туда слово. Если вероятность этого события в точности равна 1, то мы будем говорить, что выполнено условие сильной полноты Неразглашение: Для любых последовательностей слов {σn }, {τn } с |σn | = |τn | 6 poly(n) последовательности случайных величин cn (σn ) и cn (τn ) вычислительно неотличимы. Это свойство протокола формализует непрозрачность сундучка: не имея ключа, получатель не имеет никакой информации о содержимом сундучка. Недвусмысленность привязки: ни для какого n не существует таких слов c, k0 , k1 , что слова R(c, k0 ) и R(c, k1 ) различны и оба не равны ⊥. Это требование выражает невозможность, подбирая ключи, обнаружить в сундучке два разных слова: любая строка c может быть привязкой только к одному слову. Определение 30. Пара полиномиальных вероятностных алгоритмов (R, S) называется протоколом привязки, если она удовлетворяет требованиям полноты, неразглашения и недвусмысленности привязки. Замечание 10. Заметим, что зная параметр безопасности и длину σ, по привязке c(σ) можно найти σ (с почти единичной вероятностью) с помощью перебора. В самом деле, мы можем перебрать все строки k подходящей длины и для каждой из них применить алгоритм R к паре c(σ), k и выдать первый результат, отличный от ⊥. По условию полноты, для некоторого k (а именно для k = k(σ)) алгоритм R выдаст σ, и по условию недвусмысленности привязки все полученные результаты, отличные от ⊥, равны σ. Поэтому в требовании неразглашения существенно, что неотличимость cn (σn ) и cn (τn ) вычислительная, а не статистическая — статистическое расстояние между cn (σn ) и cn (τn ) может быть близко к 1. Сначала построим протокол привязки к биту, то есть пару алгоритмов (S, R), которые удовлетворяют всем трём требованиям для однобуквенных слов σ. Протокол привязки к биту можно построить, имея любую одностороннюю перестановку fn : Dn → Dn . Теорема 28. Если существует семейство сильно односторонних в обобщенном смысле функций, которые инъективны на носителе Dn трудной для них случайной величины, то существует и протокол привязки к биту. 7.1. НЕИНТЕРАКТИВНЫЕ ПРОТОКОЛЫ ПРИВЯЗКИ 121 Доказательство. По теореме Левина-Голдрайха из условия теоремы следует существование функции gn , удовлетворяющей условию теоремы и трудного бита hn к ней. Алгоритм S запускает полиномиальный алгоритм K, который выбирает случайную строку x из области определения gn , либо (с пренебрежимо малой вероятностью) выдает x = ⊥. При этом он запоминает использованные случайные биты r и выдает их в качестве ключа k. В качестве привязки c он выдает пару hσ ⊕ h(x), g(x)i (мы опускаем в обозначениях параметр безопасности n), если x 6= ⊥, и ⊥, если x = ⊥. Алгоритм R, получив на вход строку случайных битов r и пару hδ, yi, состоящую из одного бита и строки, сначала находит строку x, запуская алгоритм K на r и 1n , затем проверяет равенство g(x) = y. Если равенство неверно или x = ⊥, он выдает ⊥. Иначе он выдает δ ⊕ h(x). Условие полноты очевидно выполнено. Условие недвусмысленности привязки следует из инъективности g. Действительно, если g(x0 ) = y = g(x1 ), и x0 , x1 ∈ Dn , то x0 = x1 , следовательно, δ ⊕ h(x0 ) = δ ⊕ h(x1 ). Условие неразглашения сводится к вычислительной неотличимости случайных величин hh(x), g(x)i и h1⊕h(x), g(x)i (где x выбирается равномерно из Dn ). Это следует из того, что они обе неотличимы от случайной величины hγ, g(x)i, где γ случайный бит, независимый от x. Замечание 11. Отметим, что построенный протокол не удовлетворяет свойству сильной полноты, поскольку Посылающему может сильно не повезти и он не найдёт слова x из области определения gn . Задача 51. Докажите, что без ограничения общности можно считать, что в неинтерактивных протоколах привязки ключ равен (σ, r) (где σ — исходное сообщение, а r случайные биты алгоритма S). Задача 52. Пусть дана односторонняя перестановка gn и трудный бит hn для нее. Рассмотрим следующий протокол привязки к биту. Посылающий выбирает случайное x из Dn и проверяет, верно ли, что hn (x) совпадает с битом, к которому надо привязаться. Если это так, то в качестве привязки выдается gn (x), а в качестве ключа случайные биты, использованные при генерации x. Если это не так, то все повторяется сначала. Так делается n раз, и если все попытки неудачны, то выдается gn (x) для последнего x. Алгоритм раскрытия сундучка проверяет, что значение функции gn на слове x, сгенерированном с использованием данных ему случайных битов, равно привязке и в этом случае выдает hn (x) (а иначе ⊥). Докажите, что этот протокол удовлетворяет требуемым свойствам. 122 ГЛАВА 7. ПРОТОКОЛЫ ПРИВЯЗКИ (BIT COMMITMENT) Протокол привязки к сообщению любой длины можно построить на основе любого протокола привязки к биты: для этого надо выполнить протокол привязки к биту для каждого бита исходного сообщения. Задача 53. Докажите, что построенный так протокол удовлетворяет всем требованиям. Оказывается, протокол привязки можно построить и на основе любой сильно односторонней функции. Но такой протокол оказывается интерактивным. Что такое интерактивные протоколы будет рассказано в следующем разделе. 7.2 Интерактивные алгоритмы: определение Интерактивные алгоритмы — это алгоритмы, которые, кроме обычного входа, имеют еще входной и выходной каналы обмена информацией. Нас будут интересовать только полиномиальные алгоритмы, которые способны получать и посылать только полиномиальное количество сообщений полиномиальной длины. Определение 31. Интерактивным детерминированным полиномиальным алгоритмом называется пара (A, p), где A — это некоторый полиномиальный детерминированный алгоритм, с двумя входами, а p — некоторый многочлен. На первый из входов алгоритма подается x (бинарное слово), а на второй вход подаётся последовательность сделанных сообщений (слово в алфавите 0, 1, ♦, последний символ будет отделять сообщения друг от друга). Многочлен p(n) указывает сколько сообщений надо передать и принять алгоритму. Пусть имеются два интерактивных алгоритма (A, p) и (B, p) с одним и тем же многочленом p. Сообщения, посылаемые алгоритмами A(x) и A(y) определяются следующим образом. = A(x, Λ) (первое сообщение посылается алгоритмом A), = B(y, c1 ♦) (второе сообщение посылается алгоритмом B, = A(x, c1 ♦c2 ♦), = B(y, c1 ♦c2 ♦c3 ♦), ... c2p(n) = B(y, c1 ♦c2 . . . ♦c2p(n)−1 ♦) c1 c2 c3 c4 7.2. ИНТЕРАКТИВНЫЕ АЛГОРИТМЫ: ОПРЕДЕЛЕНИЕ 123 Слово ci называется сообщением, посланным в i-ом раунде, а протоколом общения, или диалогом, называется последовательность c = c1 ♦c2 . . . ♦c2p(n,|x|+|y|) ♦. После общения алгоритмы A, B применяются еще один раз к к своим входам и полученному протоколу, чтобы получить результаты: алгоритм A печатает результат, равный A(x, c), алгоритм B печатает результат, равный B(y, c). Мы также будем рассматривать интерактивные алгоритмы без выхода, это означает, что нам не важно, какой он результат алгоритм напечатает. Определение 32. Кроме того, мы будем рассматривать вероятностные интерактивные алгоритмы. Вероятностным полиномиальным интерактивным алгоритмом называется детерминированный интерактивный алгоритм с дополнительным входом r, длина которого равна некоторому многочлену от длин остальных входов. Диалог и выход такого алгоритма с любым другим детерминированным или вероятностным алгоритмом являются случайной величиной. На дополнительном входе мы рассматриваем равномерное распределение. Иногда мы будем рассматривать общение интерактивного алгоритма со схемой из функциональных элементов. Пусть дана схема из функциональных элементов C, количество входов и выходов которой четно и равно, скажем 2m. С помощью такой схемы мы хотим вычислять отображение из множества слов в алфавите 0, 1, ♦ в множество слов длины не более m из нулей и единиц. Для того чтобы определить значение отображения, задаваемого схемой C на некотором слове w в алфавите 0, 1, ♦, припишем к этому слову столько символов # или отрежем справа столько символов, чтобы получилось слово длины ровно m. Затем применим схему C к полученному слову в алфавите 0, 1, ♦, #, закодировав каждый символ этого алфавита двумя битами. Затем выбросим у слова длины m в алфавите 0, 1, ♦, #, полученного на выходе схемы C, все символы, кроме нулей и единиц. Полученное бинарное слово и будет значением этого отображения на слове w и будет обозначаться через C(w). Протокол общения (диалог) алгоритма A(x) со схемой C определяется следующим образом. Очередное сообщение c2i , посылаемое схемой C в 2i-ом раунде определяется, как C(x♦c1 ♦ . . . c2i−1 ♦). Результат, который выдает схема после окончания общения, определяется как C(x♦c), где c есть протокол общения. 124 ГЛАВА 7. ПРОТОКОЛЫ ПРИВЯЗКИ (BIT COMMITMENT) 7.3 Интерактивные протоколы привязки В интерактивном протоколе получатель также участвует в положении бита в сундучок. Отправитель и получатель обмениваются сообщениями, которые записываются на магнитофонную ленту. Эта запись и играет роль привязки. Определение интерактивного протокола привязки немного сложнее, чем неинтерактивного. Но зато интерактивный протокол можно построить, исходя из любого генератора псевдослучайных чисел. Интерактивный протокол привязки состоит из двух вероятностных полиномиальных интерактивных алгоритмов S, T и детерминированного полиномиального алгоритма R (требование детерминированности алгоритма R не очень существенно, но для детерминированных алгоритмов определение проще). Алгоритм S получает на вход параметр безопасности n (в унарной записи) и слово σ, а алгоритм T получает на вход только параметр безопасности (тот же, что и алгоритм S). После этого эти алгоритмы общаются друг с другом, то есть, по очереди посылают друг другу сообщения (без ограничения общности можно считать, что общение начинает S). Через cT,S(σ) мы будем обозначать последовательность всех переданных сообщений между S и T , если S получил на вход σ. Последовательность cT,S(σ) является случайной величиной, причем зависящей от параметра безопасности (который мы для краткости опускаем в обозначениях). Она выполняет роль привязки в неинтерактивных протоколах. Кроме того, алгоритм S выдает на выход строку kT,S(σ) , называемую ключом, которая может зависеть от сообщений, полученных от T (поэтому мы пишем T в качестве дополнительного индекса). Случайные величины cT,S(σ) и kT,S(σ) имеют параметр σ и являются зависимыми (при любом значении σ), поскольку используют общий источник случайности — результаты бросаний, выполненных вероятностными алгоритмами S(σ) и T . Алгоритм R получает на вход параметр безопасности n, строку c (привязку) и строку k (ключ) и выдает на выход один бит или сообщение о том, что ключ не подошёл. Будем это сообщение обозначать через ⊥. Тройка алгоритмов T, S, R такого вида называется интерактивным протоколом привязки, если выполнены требования Полноты, Неразглашения и Недвусмысленности привязки. В первом и втором условиях выражены интересы посылающего. Они состоят в том, чтобы при применении правильного ключа в сундучке обнаруживался положенное туда 7.3. ИНТЕРАКТИВНЫЕ ПРОТОКОЛЫ ПРИВЯЗКИ 125 слово (Полнота) и чтобы сундучок был непрозрачным (Неразглашение). Третье условие выражает интересы получателя — невозможно один и тот же сундучок открыть двумя разными ключами так, чтобы там были обнаружены разные слова. При формулировке первого и второго свойств мы должны предусмотреть, что получатель может жульничать, применяя вместо алгоритма T а какую-то стратегию T ∗ , вычислимую схемой Tn∗ полиномиального от n размера (схема зависит от параметра безопасности n). В третьем свойстве мы должны предусмотреть, что жульничать может отправитель, применяя вместо алгоритма S какую-то стратегию S ∗ , вычислимую схемой Sn∗ полиномиального от n размера. Итак, тройка алгоритмов T, S, R называется интерактивным протоколом привязки, если для любой последовательности схем {Tn∗ } полиномиального размера выполнены условия следующие требования Полноты и Неразглашения и для любой последовательности схем {Sn∗ } полиномиального размера выполнено следующее условие Недвусмысленности привязки. Полнота. С вероятностью, приблизительно равной 1 (при n → ∞), для любого слова σ алгоритм R на входе cT ∗ ,S(σ) и kT ∗ ,S(σ) выдает либо σ, либо ⊥ (для краткости мы опускаем параметр безопасности n в обозначениях). Если вероятность этого события в точности равна 1, то мы будем говорить, что выполнено условие полноты выполнено в сильном смысле. Неразглашение. Случайные величины cT ∗ ,S(xn ) и cT ∗ ,S(yn ) вычислительно неотличимы для любой последовательности пар слов {(xn , yn )} одной длины |xn | = |yn | = poly(n). Недвусмысленность привязки. Назовём слово c двусмысленной привязкой, если существуют такие слова k0 , k1 , что R(c, k0 ) и R(c, k1 ) есть два различных слова. Требование состоит в том, что вероятность того, что диалог общения алгоритмов S ∗ и T является двусмысленной привязкой, пренебрежимо мала. Заметим, что мы не предполагаем, что схема Sn∗ получает на вход некоторое слово σ, как это делал “честный” алгоритм S. Это делается потому, что жульничающий отправитель заинтересован только в том, чтобы создать двусмысленную привязку, а не привязаться к какому-то конкретному слову. Как обычно, во всех трех условиях можно считать схемы Tn∗ и Sn∗ вероятностными. Точнее, если тройка T, S, R является интерактивным протоколом привязки, то все три требования выполнены и для любых по- 126 ГЛАВА 7. ПРОТОКОЛЫ ПРИВЯЗКИ (BIT COMMITMENT) следовательностей вероятностных схем Sn∗ и Tn∗ полиномиального размера. В частности, для любых полиномиальных вероятностных алгоритмов S 0 , T 0 все три требования условия выполнены для стратегий Sn∗ = S 0 (1n ) и Tn∗ = T 0 (1n ). По этой причине из требований Полноты и Недвусмысленности следует, что для всех слов σ полиномиальной от n длины с приблизительно единичной вероятностью R(cT,S(σ) , kT,S(σ) ) = σ (если и отправитель, и получатель действуют честно, то в сундучке обнаруживается положенный туда бит). В самом деле, рассмотрим в качестве S 0 , T 0 исходные алгоритмы S, T . Тогда условие недвусмысленности гарантирует, что вероятность результата ⊥ пренебрежимо мала. В то же время по требованию полноты с приблизительно единичной вероятностью результат равен либо σ, либо ⊥, а значит равен σ. Любой неинтерактивный протокол привязки (S, R) легко переделать в интерактивный протокол. Для этого нужно оставить алгоритмы S, R, как они есть, а в качестве T взять тривиальный алгоритм, который ничего не делает. Интерактивный протокол привязки к биту mmitment-interactrive} Теорема 29. Если существует генератор ПСЧ, то существует интерактивный протокол привязки к биту. При этом условие полноты выполнено в сильном смысле. Доказательство. Пусть G генератор ПСЧ {0, 1}n → {0, 1}3n . Алгоритм T посылает случайную строку r длины 3n, после чего останавливается. Алгоритм S ждет от T строчку r длины 3n, после ее получения он выбирает случайную строчку s длины n и посылает G(s), если σ = 0, и посылает G(s) ⊕ r иначе, то есть, он посылает G(s) ⊕ σ · r. (Если присланная строка r имеет длину, не равную 3n, то действует, как будто присланная строка состоит, скажем, слово из 3n нулей). Ключ, выдаваемый алгоритмом S есть σs. Входом алгоритма R, кроме n, является пара строк r, x и строка k. Если какие-то строки имеют неправильную длину, то алгоритм R считает, что они состоят из одних нулей в нужном количестве. Если x = G(s)⊕σ·r, где σ первый бит строки k, а s — остальные ее биты, то алгоритм R выдает σ. Иначе, алгоритм R выдает ⊥. Ясно, что требование полноты выполнено, причём в сильном смысле. Проверим требование недвусмысленности привязки. Пусть дана после- 7.3. ИНТЕРАКТИВНЫЕ ПРОТОКОЛЫ ПРИВЯЗКИ 127 довательность стратегий Sn∗ . Алгоритм R получает на вход ключ k и диалог, который состоит из строк r, S ∗ (r). Допустим, алгоритм R, получив на вход ключи k0 , k1 и привязку r, S ∗ (r), выдает два разных слова соответственно 0,1. Ясно, что тогда k0 = 0s0 и k1 = 1s1 для некоторых строк s0 , s1 длины n. Поэтому достаточно доказать, что вероятность события ∃s0 , s1 , S ∗ (r) = G(s0 ), S ∗ (r) = G(s1 ) ⊕ r пренебрежимо мала. Вероятность этого события не больше вероятности того, что найдутся s0 , s1 такие, что G(s0 ) = G(s1 ) ⊕ r. При фиксированных s0 , s1 вероятность этого события равна 2−3n . Суммируя по всем s0 , s1 , получаем не больше 2−n , что стремится к нулю быстрее любого обратного полинома от n. Проверим условие неразглашения. Пусть дана последовательность схем Tn∗ полиномиального от n размера. Схема Tn∗ применяется только один раз к пустой последовательности. Ограничимся случаем, когда сообщение, посланное схемой, имеет длину 3n. (На общий случай рассуждения переносятся очевидным образом.) Обозначим первое сообщение, посланное схемой, через rn∗ . Диалог Посылающего и Получателя в случаях для σ = 0 и σ = 1 выглядит, соответственно, так hr∗ , G(s)i, hr∗ , G(s) ⊕ r∗ i, соответственно. Нам нужно доказать вычислительную неотличимость этих случайных величин. Это следует из того, что обе они вычислительно неотличимы, от случайной величины hrn∗ , γ3n i, где γ3n равномерно распределенная среди слов длины 3n случайная величина. Задача 54. Докажите, что без ограничения общности можно считать, что интерактивный протокол привязки к биту в качестве ключа всегда выдает свои случайные биты и σ. {p-coins} Интерактивные протоколы привязки к строке Протокол привязки к строке можно построить из любого протокола (S, T, R) привязки к биту. Посылающий и получающий привязываются по очереди к каждому из битов данной строки x. Другими словами, новая стратегия S̃ есть |x|-кратное последовательное повторение стратегии S, новая стратегия T̃ есть p(n)-кратное последовательное повторение стратегии 128 ГЛАВА 7. ПРОТОКОЛЫ ПРИВЯЗКИ (BIT COMMITMENT) T , а новый алгоритм раскрытия сундучка есть |x|-кратное применение старого алгоритма R. Если хотя бы в одном из применений R выдал ⊥, то новый алгоритм выдает ⊥. Иначе надо выдать полученную битовую строку. {three} Задача 55. Докажите, что построенный протокол удовлетворяет всем трём требованиям. Задача 56. Докажите, что для любого протокола привязки к строке существует функция F (c) со значениями в множестве слов такая, что для любой последовательности стратегий {Sn∗ } с приблизительно единичной вероятностью для всех k выполнено R(cT,S ∗ , k) = F (cT,S ∗ ). Глава 8 Протоколы бросания монетки Представим себе, что Алиса и Боб, находясь в разных городах, хотят найти общий случайный бит, не имея общего источника случайности. Каждый из них может найти его, самостоятельно подбросив монетку, но тогда не будет гарантии, что полученные ими результаты совпадут. А Алиса и Боб хотят найти одинаковый случайный бит. Можно доверить бросить монетку Алисе, которая потом сообщит Бобу результат бросания. Этот протокол нехорош тем, что позволяет Алисе сжульничать. Например, он не годится для того, чтобы разыграть, кому достанется машина, находящаяся в общей собственности разводящихся и не доверяющих друг другу супругов. Проблему решают так называемые протоколы бросания монетки. Протоколом бросания монетки называется тройка полиномиальных алгоритмов (A, B, J). Алгоритмы A, B вероятностные интерактивные, каждый из них получает на вход параметр безопасности n в унарной записи, а выхода не имеет. Алгоритм J детерминированный (это важно) и неинтерактивный, он получает на вход пару, состоящую из параметра безопасности n в унарной записи и двоичной строки c, а на выход выдает один из четырех результатов 0, 1, ⊥A , ⊥B . Бросание монетки осуществляется следующим образом. Сначала Алиса и Боб выполняют алгоритмы A, B, соответственно, для достаточно большого параметра безопасности n. Эти алгоритмы общаются по телефону (без ограничения общности можно считать, что первое сообщение посылается алгоритмом A). Потом каждый из них запускает алгоритм J, дав ему на вход запись телефонного общения cA,B вместе с параметром безопасности. Алгоритм J определяет результат бросания. Результаты 129 130 ГЛАВА 8. ПРОТОКОЛЫ БРОСАНИЯ МОНЕТКИ ⊥A , ⊥B означают, что Алиса или Боб заблокировали протокол. Результат работы J(cA,B ) алгоритма J на протоколе cA,B общения A, B есть случайная величина (поскольку A, B вероятностные алгоритмы) с параметром n. Будем обозначать ее через resA,B . В этих обозначениях мы опускаем вход алгоритмов A, B, который есть n в унарной записи. Полностью следовало бы писать cA(1n ),B(1n ) и resA(1n ),B(1n ) вместо cA,B и resA,B . Требуется, чтобы случайная величина resA,B принимала каждое из значений 0,1 с вероятностью приблизительно 1/2 (при стремлении n к бесконечности). Детерминированность алгоритма J обеспечивает, что Алиса и Боб приходят к одному и тому же выводу о результате выполненного бросания. Кроме того, требуется, чтобы если один из партнеров жульничает, и вместо положенного алгоритма A(1n ) или B(1n ) запускает некоторую полиномиального размера схему A∗n или Bn∗ , соответственно, то вероятности обоих результатов 0,1 не превосходила 1/2 плюс некоторая пренебрежимо малая величина, а также, чтобы вероятность обвинить честного партнера в блокировке протокола была пренебрежимо мала. Итак, мы называем тройку алгоритмов (A, B, J) вышеописанного вида протоколом бросания монетки, если выполнены следующие три требования. (а) Вероятность каждого из двух событий, resA,B = 0, resA,B = 1, приблизительно равна 1/2 (то разность вероятности и 1/2 стремится с ростом n к нулю быстрее любого обратного полинома). (б) Для любой неравномерно полиномиальной стратегии Bn∗ вероятность каждого из событий, resA,B ∗ = 0 и resA,B ∗ = 1 не превосходит 1/2 плюс некоторая пренебрежимо малая величина, а вероятность события resA,B ∗ = ⊥A пренебрежимо мала. (в) Для любой неравномерно полиномиальной стратегии A∗n вероятность каждого из событий, resA∗ ,B = 0 и resA∗ ,B = 1 не превосходит 1/2 плюс некоторая пренебрежимо малая величина, а вероятность события resA∗ ,B = ⊥B пренебрежимо мала. Замечание 12. Как обычно, во всех трех условиях можно предполагать, что схемы Bn∗ и A∗n вероятностные — требования для вероятностных схем следуют из аналогичных требований для детерминированных. Поэтому требование (а) следует из условий (б) и (в), примененных к Bn∗ = B(1n ) и A∗n = A(1n ), соответственно. Действительно, в силу (б) и (в), во-первых, вероятность каждого из событий resA,B = ⊥A , resA,B = ⊥B пренебре- 131 жимо мала, а, во-вторых, вероятность каждого из событий resA,B = 0, resA,B = 1 не может существенно превосходить 1/2. Поскольку сумма вероятностей этих четырёх событий равна 1, каждое из двух последних событий происходит с вероятностью приблизительно 1/2. Поэтому достаточно проверять только условия (б) и (в). Теорема 30. Если существует интерактивный протокол привязки к биту, то существует и протокол подбрасывания монетки по телефону. Доказательство. Пусть нам дан некоторый протокол (S, T, R) привязки к биту. Алгоритмы A и B действуют так (см. Рис. 8.1). Сначала алгоритм A подбрасывает монетку один раз. Обозначим через σ случайный бит, полученный в результате бросания. Затем алгоритм A запускает алгоритм S(σ), а алгоритм B — алгоритм T , и эти алгоритмы общаются друг с другом. После того, как общение закончится и алгоритм S(σ) выдаст некоторый ключ k, алгоритм B подбрасывает монетку один раз и посылает результат бросания τ алгоритму A. Наконец, алгоритм A посылает алгоритму B ключ k. σ k A S c R τ B k Рис. 8.1: Алгоритмы A и B. Алгоритм J действует так. Пусть c обозначает протокол общения на первой стадии. (Чтобы, глядя на протокол, можно было понять, где заканчивается общение первой стадии, алгоритмы S и T надо модифицировать так, чтобы они приписывали ко всем сообщениям 0 слева. На второй стадии все сообщения будут начинаться на 1.) Запускаем алгоритм R на паре c, k, где k последнее сообщение Алисы. Объявляем, что Алиса блокировала протокол, если R выдаст ⊥. Иначе, выдаём сумму (по {pic1} 132 ГЛАВА 8. ПРОТОКОЛЫ БРОСАНИЯ МОНЕТКИ модулю 2) бита, посланного Бобом, и бита, выданного R. Боб не может блокировать этот протокол. Проверим, что этот протокол соблюдает интересы обоих игроков, то есть, условия (а) и (б). (а) Интересы Алисы. Пусть Алиса действует честно, а Боб руководствуется некоторой неравномерно полиномиальной стратегией Bn∗ . Это означает, что на первой стадии он выполняет некоторую неравномерно полиномиальную стратегию Tn∗ , а на второй стадии применяет к протоколу беседы c, полученному на первой стадии, некоторую схему τn∗ полиномиального от n размера, выдающую на выход один бит. Поскольку на обоих стадиях Алиса действует честно, алгоритм R с приблизительно единичной вероятностью выдает бит σ (это следует из свойства полноты протокола привязки). Значит вероятность того, что Алиса будет объявлена блокирующей протокол, пренебрежимо мала. Теперь докажем, что вероятность обоих результатов 0,1 не превосходит 1/2 с точностью до пренебрежимо малой добавки. Это делается одинаково для 0 и 1, поэтому разберем случай 0. Будем обозначать результат работы схемы τ ∗ на протоколе общения алгоритмов S(σ) и T ∗ через τ (σ). Алгоритм J выдаёт 0, если алгоритм R выдаст бит, равный τ (σ). В силу свойства (а) протокола привязки, с приблизительно единичной вероятностью алгоритм R выдаёт σ. Поэтому с точностью до пренебрежимо малой добавки вероятность результата 0 не превосходит вероятности того, что τ (σ) = σ (с точностью до пренебрежимо малой величины). Так как Алиса выбирает свой бит σ случайно, вероятность этого события равна среднему арифметическому вероятности событий τ (0) = 0 и τ (1) = 1. Поскольку протокол привязки удовлетворяет условию неразглашения, запись общения S(0) и T ∗ вычислительно неотличима от записи общения S(1) и T ∗ . В частности, они неотличимы и схемой τ ∗ . Поэтому, вероятность события τ (1) = 1 приблизительно равна вероятности события τ (0) = 1. Отсюда следует, что вероятность события τ (σ) = σ приблизительно равна среднему арифметическому вероятности событий τ (0) = 0 и τ (0) = 1, которая очевидно не больше 1/2, поскольку эти события не пересекаются. (б) Интересы Боба. Пусть Боб действует честно, а Алиса руководствуется некоторой неравномерно полиномиальной стратегией A∗n . Это означает, что на первой стадии она выполняет некоторую неравномерно полиномиальную стратегию Sn∗ , а на второй стадии применяет к протоколу беседы c, и биту τ , посланному Бобом, некоторую схему kn∗ полино- 133 миального от n размера. Докажем, что вероятность обоих исходов 0,1 не превосходит 1/2 плюс пренебрежимо малая величина. Опять это делается одинаково для обоих исходов, поэтому разберем случай нуля. Ключ, выданный схемой kn∗ зависит от записи общения T и S ∗ , и от бита τ . Нам будет важна главным образом зависимость от τ , поэтому мы будем обозначать ключ, выданный схемой kn∗ , через kτ . Поскольку свой бит τ Боб выбирает случайно, вероятность выдачи 0 равна среднему арифметическому двух событий: первое событие заключается в том, что алгоритм R, получив на вход запись общения T и S ∗ и ключ k0 , выдает 0, а второе — в том, что алгоритм R, получив на вход ту же запись общения, но другой ключ k1 , выдаёт 1. Поскольку протокол привязки удовлетворяет свойству недвусмысленности привязки, вероятность того, что для записи общения T и S ∗ существуют такие два ключа, пренебрежимо мала. Теперь воспользуемся очевидным свойством вероятностей: сумма вероятностей любых двух событий не превосходит 1 плюс вероятность их пересечения (в самом деле, эта сумма равна вероятности объединения событий плюс вероятность их пересечения, а вероятность объединения не может быть больше 1). Отсюда следует, что среднее арифметическое вероятностей указанных событий не превосходит 1/2 с точностью до пренебрежимо малой величины. С помощью протоколов бросания монетки можно играть в орлянку по телефону следующим образом. Для каждого n рассмотрим игру Gn между Алисой и Бобом. Количество ходов в этой игре равно полиному p(n), ограничивающим время работы алгоритмов A и B. Каждый ход является словом длины не более p(n), где p есть полином, ограничивающий время работы алгоритмов A и B. Игроки ходят по очереди, начиная с Алисы и игра продолжается до тех пор, пока не будет сделано p(n) ходов. Последовательность сделанных ходов дается на вход алгоритму J, который определяет, кто выиграл: 0 и ⊥B означают выигрыш Алисы, а 1 и ⊥A — выигрыш Боба. Из условий (б) и (в) следует, что у каждого из игроков имеется полиномиально вычислимая стратегия, гарантирующая ему выигрыш с вероятностью не менее 1/2 (минус пренебрежимо малая величина), если противник использует любую неравномерно полиномиальную стратегию. По известной теореме Цермело [10], в любой игре двух игроков с конечным числом ходов и без ничьих один из игроков имеет детерминиро- 134 ГЛАВА 8. ПРОТОКОЛЫ БРОСАНИЯ МОНЕТКИ ванную стратегию, которая обыгрывает любую стратегию противника. В частности, это верно и для игры Gn для каждого n. Поэтому в условиях (б) и (в) важно, что стратегии Bn∗ , A∗n разрешаются не любые, а только неравномерно полиномиальные. В самом деле, если для бесконечно многих n в игре Gn Алисы имеет некоторую выигрышную стратегию A∗n , то условие (б) не выполнено для последовательности стратегий A∗n (для тех n, для которых выигрышной стратегии не существует, можно определить A∗n произвольным образом). Действительно, в этом случае суммарная вероятность исходов 0, ⊥B равна 1 для бесконечно многих n (а должно быть не больше 1/2 плюс пренебрежимо малая величина). А в противном случае для почти всех n в игре Gn выигрышная стратегия есть у Боба, и условие (а) не выполнено для некоторой последовательности стратегий Боба A∗n . Задача 57. Пусть в качестве протокола привязки в протоколе игры в орлянку по телефону использован неинтерактивный протокол, основанный на однозначной односторонней функции. У кого из двух игроков есть выигрышная стратегия, если не требовать реализуемости стратегии СФЭ полиномиального размера? Задача 58. Пусть в качестве протокола привязки в протоколе игры в орлянку по телефону использован интерактивный протокол из предыдущего раздела, основанный на существовании генератора ПСЧ. У кого из двух игроков есть выигрышная стратегия, если не требовать реализуемости стратегии СФЭ полиномиального размера? 8.1 Отрицательный результат Существует ли протокол бросания монетки, в котором у обоих игроков есть гарантия, что выход почти равномерно распределен (с точностью до пренебрежимо малой величины)? Разумеется, при условии, что другой игрок использует стратегию, реализуемую схемой полиномиального размера. Оказывается, что нет: если протокол работает в k(n) раундов, то у одного из двух игроков есть стратегия, добивающаяся отклонения от 1/2 на Ω(1/k(n)). Теорема 31 (R. Cleve [5]). Для любой тройки A, B, J, где A, B — полиномиальные вероятностные интерактивные алгоритмы, работающие в k(n) раундов, а J — полиномиальный детерминированный алгоритм, 8.1. ОТРИЦАТЕЛЬНЫЙ РЕЗУЛЬТАТ 135 выполнено одно из двух. Либо у Алисы имеется полиномиальная вероятностная стратегия A∗n , для которой |resA∗ ,B − 1/2| = Ω(1/k(n)) для бесконечно многих n, либо у Боба имеется полиномиальная вероятностная стратегия Bn∗ , для которой |resA,B ∗ − 1/2| = Ω(1/k(n)) для бесконечно многих n. Доказательство. Будем считать, что общение начинает Алиса. Обозначим через r, s случайные биты, используемые алгоритмами A, B, соответственно. При фиксации r, s алгоритмы A, B превращаются в детерминированные. Для каждого i = 1, 2, . . . , k(n) + 1 рассмотрим две функции ai (r, s) и bi (r, s), определяемые следующим образом. Запустим алгоритмы A, B со случайными битами r, s и дождемся раунда i. Представим, что начиная с этого раунда, Боб перестает следовать алгоритму B(s), а вместо этого посылает в каждом раунде «тривиальное сообщение» — последовательность из одних нулей (в этом случае будем говорит, что Боб «падает» в раунде i), а Алиса по-прежнему следует алгоритму A. Обозначим через ai (r, s) результат таких стратегий Алисы и Боба, то есть результат, выдаваемый алгоритмом J на протоколе общения этих двух алгоритмов. Аналогичным образом, определяется и bi (r, s), но на этот раз в раунде i падает Алиса. Величины ak(n)+1 (r, s) и bk(n)+1 (r, s) определяются одинаково — как результат общения алгоритмов A(r) и B(s). Заметим, что после i − 1 раундов Алиса может быстро вычислить ai (r, s), просто смоделировав общение алгоритма A(r) с упавшим партнером. Аналогично, Боб может после i − 1 раундов быстро вычислить bi (r, s). С другой стороны, у Алисы есть стратегия, которая обеспечивает выход bi (r, s) в общении с B: для этого надо в самом деле начиная с раунда i посылать тривиальные сообщения. Аналогично, у Боба есть стратегия, которая обеспечивает выход ai (r, s) в общении с A. Но не эти две стратегии будут обеспечивать отклонение от 1/2, а немножко более сложные. Сначала мы построим 4k(n) + 1 стратегий для Алисы или Боба, одна из которых даст отклонение ε = 1/(8k(n) + 2). Рассмотрим стратегию Алисы A0 , которая падает в первом же раунде независимо ни от чего. Результат общения стратегии A0 (r) с B(s) есть b1 (r, s). Поэтому, если выполнено неравенство: |Pr[b1 = 0] − 1/2| > ε, (8.1) {eq73} 136 ГЛАВА 8. ПРОТОКОЛЫ БРОСАНИЯ МОНЕТКИ то стратегия A0 дает нужное отклонение. Будем предполагать поэтому, что неравенство (8.1) не выполнено. Заметим, что a1 (r, s) на самом деле зависит только от r, а b1 (r, s) — только от s, поэтому случайные величины a1 и b1 независимы. Поэтому вероятность совпадения a1 и b1 примерно равна 1/2. Для дальнейшего важно, что эта вероятность меньше 1/2 + ε. В самом деле: Pr[a1 = b1 ] = Pr[a1 = 0]Pr[b1 = 0] + Pr[a1 = 1]Pr[b1 = 1] 6 Pr[a1 = 0](1/2 + ε) + Pr[a1 = 1](1/2 + ε) = (1/2 + ε). С другой стороны, вероятность совпадения ak(n)+1 и bk(n)+1 равна 1, поскольку эти случайные величины есть результат общения A и B. Поэтому существует такое i = 1, . . . , k(n), для которого Pr[ai+1 = bi+1 ] − Pr[ai = bi ] > (1 − (1/2 + ε))/k(n) = (1/2 − ε)/k(n) = 4ε (равенство выполнено по выбору ε). Зафиксируем такое i и рассмотрим следующие две стратегии Алисы Ai0 , Ai1 . Стратегия Aij (r) работает первые i − 1 раундов как A(r), затем падает в i-м или (i + 1)-м раунде в зависимости от значения ai (r, s) (как мы уже отмечали, чтобы вычислить ai (r, s) в i-м раунде, не нужно знать s). А именно, и если ai (r, s) = j, то она падает в раунде i + 1, а иначе в раунде i. По построению результат общения Aij (r) и B(s) равен bi (r, s), если ai (r, s) 6= j, и равен bi+1 (r, s), если ai (r, s) = j. Для Боба рассмотрим следующие стратегии Bi0 , Bi1 . Стратегия Bij (s) работает первые i−1 раундов как B(s), затем получает сообщение Алисы, посланное в i-м раунде и вычисляет bi+1 (r, s) (как мы уже отмечали, для этого не нужно знать r), и если bi+1 (r, s) = j, то падает в раунде i + 1, а иначе падает в раунде i. По построению результат общения A и Bij (s) равен ai (r, s), если bi+1 (r, s) 6= j, и равен ai+1 (r, s), если bi+1 (r, s) = j. Мы докажем, что хотя бы одна из вероятностей Pr[resAi0 B = 0], Pr[resABi0 = 0], Pr[resAi1 B = 1], Pr[resABi1 = 1] больше 1/2 + ε. Для этого выразим каждую из вероятностей через ai , bi : Pr[resAi0 B Pr[resABi0 Pr[resAi1 B Pr[resABi1 = 0] = Pr[bi = 0, ai = 1] + Pr[bi+1 = 0, ai = 0], = 0] = Pr[ai = 0, bi+1 = 1] + Pr[ai+1 = 0, bi+1 = 0] = 1] = Pr[bi = 1, ai = 0] + Pr[bi+1 = 1, ai = 1], = 1] = Pr[ai = 1, bi+1 = 0] + Pr[ai+1 = 1, bi+1 = 1]. 8.1. ОТРИЦАТЕЛЬНЫЙ РЕЗУЛЬТАТ 137 Теперь сложим эти четыре вероятности. Заметим, что в полученную сумму входят четыре слагаемых Pr[bi+1 = 0, ai = 0], Pr[bi+1 = 1, ai = 1], Pr[ai = 0, bi+1 = 1] Pr[ai = 1, bi+1 = 0], которые в сумме дают 1. Поэтому сумма этих четырех вероятностей равна 1 + Pr[bi = 0, ai = 1] + Pr[bi = 1, ai = 0] Pr[bi+1 = 0, ai+1 = 0] + Pr[bi+1 = 1, ai+1 = 1], что как раз равно 2 + Pr[bi+1 = ai+1 ] − Pr[bi = ai ] > 2 + 4ε. Таким образом, хотя бы одна из четырех вероятностей больше 1/2 + ε, что и требовалось доказать. Чтобы построить равномерные стратегии Алисы и Боба, рассмотрим, две стратегии Алисы: «выполнить случайно выбранную стратегию из набора A0 , A10 , A20 , . . . , Ak(n)0 » и «выполнить случайно выбранную стратегию из набора A0 , A11 , A21 , . . . , Ak(n)1 ». Для Боба рассмотрим стратегии «выполнить случайно выбранную стратегию из набора B10 , B20 , . . . , Bk(n)0 » и «выполнить случайно выбранную стратегию из набора B11 , B21 , . . . , Bk(n)1 ». Из доказанных неравенств следует, что одна из этих четырех стратегий для бесконечно многих n даст отклонение 1/(8k(n) + 2). 138 ГЛАВА 8. ПРОТОКОЛЫ БРОСАНИЯ МОНЕТКИ Глава 9 Неразглашение информации Мы уже трижды встречались с понятием неразглашения информации. В определении схем шифрования с закрытым ключом мы требовали, чтобы алгоритм шифрования разглашал только длину сообщения. В определении схем шифрования с открытым ключом мы требовали, чтобы алгоритм шифрования разглашал только длину сообщения при условии, что открытый ключ общеизвестен. В определении протоколов привязки к биту мы требовали, чтобы алгоритм S, используемый Посылающим, ничего не разглашал (алгоритм привязки к слову произвольной длины разглашал только его длину). В этом разделе мы дадим общее определение неразглашения информации вероятностными интерактивными алгоритмами. Пусть имеется полиномиальный вероятностный интерактивный алгоритм A, получающий на вход параметр безопасности n в унарной записи и два слова x, e. Слово x выбирается из данного множества Dn , зависящего от параметра безопасности, а слово слово e выбирается случайно по данному распределению νn , также зависящему от параметра безопасности. В примерах, которые у нас будут, вход x будет либо сообщением для шифрования, либо битом для привязки, либо закрытым ключом в протоколах идентификации. Вход e будет открытым ключом в асимметричных схемах шифрования и протоколах идентификации (и будет фиктивным в остальных примерах). Мы будем считать, что для каждого значения параметра безопасности n зафиксировано некоторое полиномиально порождаемое распределение вероятностей на e. Будем считать, что с алгоритмом A(x, e) (алгоритмом A, получившим на вход x, e и параметр безопасности n, который мы в обозначениях 139 140 {d1} ГЛАВА 9. НЕРАЗГЛАШЕНИЕ ИНФОРМАЦИИ опускаем) беседует некоторая схема Cn полиномиального от n размера, которая уже имеет некоторую информацию об x, e. (Например, она может знать открытый ключ e, использованный в схеме шифрования.) Эта информация является некоторой функцией g от x, e (и параметра безопасности). 1 Пусть имеется еще одна функция f от x, e (и параметра безопасности). Мы хотим определить, что значит, что алгоритм A(x, e) разглашает только информацию f (x, e), если противнику уже известна информация g(x, e) об паре x, e. Определение 33 (неразглашения). Мы говорим, что алгоритм A разглашает только f при известном g на области Dn , если существует полиномиальный вероятностный алгоритм M , для которого выполнено следующее. Для любой последовательности слов {xn ∈ Dn } и любой последовательности схем {Cn }, для которых длина xn и размер Cn ограничены некоторым многочленом от n, верно следующее. Пусть алгоритм M получает на вход f (xn , e) и схему Cn в качестве черного ящика (то есть, алгоритм может только применять схему к любому входу, но не может копаться в её устройстве). Тогда он генерирует случайную величину αn (e), вычислительно неотличимую от протокола общения βn (e) межg(x ,e) ду алгоритмом A(xn , e) и схемой Cn n (схемой Cn , которая до начала общения прочитала g, то есть первые |g(x, e)| + 1 входов в схеме зафиксированы равными g(x, e)♦) при известном g(xn , e). То есть, случайные величины g(xn , e)αn (e) и g(xn , e)βn (e) вычислительно неотличимы при стремлении n к бесконечности. Вероятностное пространство в этом определении состоит из e (с заданным распределением νn ) и случайных битов алгоритмов A(xn , e) и M . Множество Dn мы будем называть областью неразглашения алгоритма. Алгоритм M , удовлетворяющий этому определению, будем называть симулятором. В определении важно, что симулятору разрешается запускать схему Cn ее на любых входах по своему выбору. Смысл этого определения следующий. Противник имеет общеизвестную информацию g(x, e) о входах алгоритма A. Общаясь с алгоритмом A(x, e) с помощью стратегии, реализуемой схемой C, он хочет извлечь некоторую дополнительную информацию о об x, e. Определение гарантирует, что он не может извлечь больше информации, чем содержится в f (x, e): всё, что 1 На самом деле, все написанное ниже верно в большей общности: g может быть случайной величиной, зависящей от параметров n, x, e. Однако во всех примерах g(n, x, e) будет функцией от n, x, e, поэтому такой общности нам не потребуется. 141 он узнаёт из общения, но может извлечь самостоятельно с помощью применения симулятора к f (x, e). Задача 59. Докажите, что любой алгоритм A разглашает только (e, x, g(x, e)) при известном g(x, e). В определении 33 не подразумевается никакого распределения x, требование должно быть выполнено для всех слов x ∈ Dn полиномиальной длины от n длины. Нам также понадобится ослабленное определение, в котором требуется, чтобы это было выполнено для почти всех x. Определение 34 (слабого неразглашения). Пусть для каждого n задано некоторое распределение вероятностей µn на словах полиномиальной от n длины. Мы говорим, что алгоритм A разглашает только f при известном g в слабом смысле, если существует полиномиальный вероятностный алгоритм M , для которого для любой последовательности схем {Cn } полиномиального размера требование из определения 33 выполнено с вероятностью приблизительно 1 при случайно выбранном x по распределению µn (при стремлении параметра безопасности n к бесконечности). Замечание 13. В определении неразглашения можно заменить кванторы всеобщности по последовательностям слов и схем полиномиального размера на кванторы всеобщности по словам данной длины и схемам данного размера. Для этого в определениях в соответствующем месте надо сказать так: для любых полиномов p, q, r найдется пренебрежимо малая величина αn с таким свойством: для любого слова x длины не более p(n) и любых схем C, T размера не более q(n), r(n), соответственно, вероятности событий “T (g, диалог A(x, e) и C(g)) = 1” и “T (g, M (C, f ))) = 1” отличаются не более чем на αn . Замечание 14. Определение неразглашения тем сильнее, чем меньше информации в f и больше в g. Это означает следующее. (1) Для любых функций f, g, h, если A разглашает только f при известном g, то A разглашает только пару (f, h) при известном g. В самом деле, новый симулятор M 0 в применении к паре (f, h) и схеме C применяет старый симулятор M к f и C, игнорируя дополнительную информацию h. (2) Для любых функций f, g, h, если A разглашает только f при известной паре (g, h), то A разглашает только f и при известном g. В самом деле, новый симулятор M 0 в применении к f и схеме C применяет старый симулятор M к f и схеме D, которая построена так, что прочтя g, h, 142 ГЛАВА 9. НЕРАЗГЛАШЕНИЕ ИНФОРМАЦИИ она выбрасывает h и работает так же, как C(g). По условию случайные величины (g, h, протокол общения A(x, e) и D(g, h)) и (g, h, M (D, f )) вычислительно неотличимы. Значит и случайные величины (g, протокол общения A(x, e) и D(g, h)) и (g, M (D, f )), получаемые вычёркиванием h, вычислительно неотличимы. Осталось заметить, что D(g, h) ≡ C(g), и поэтому протокол общения A(x, e) и D(g, h)) совпадает с протоколом общения A(x, e) и C(g). {ex1} Определение 35 (нулевого разглашения). Если A разглашает только g при известном g (то есть f и g — это одна и та же функция), то мы говорим, что A имеет нулевое разглашение при известном g. Если g постоянная функция, то мы говорим, что A разглашает только f . Если при этом еще и f постоянная функция, то мы говорим, что A имеет нулевое разглашение. Пример 1. Пусть e есть случайное слово длины n, а алгоритм A посылает побитовую сумму (по модулю 2) слова x длины n и e и затем останавливается (если длина одного из слов x, e отлична от n, то просто выдается случайная строка длины n). Этот алгоритм имеет нулевое разглашение. Симулятор выдает на выход случайную строку длины n (схему Cn он не использует, поскольку алгоритм A не интерактивный и поэтому запись общения A и Cn не зависит от Cn ). Этот пример очень похож на схему шифрования с помощью гаммирования (x есть шифруемое сообщение, а e — ключ). Вообще, в любой схеме K, E, D шифрования (с закрытым или открытым ключом) алгоритм E(e, x) разглашает только длину шифруемого сообщения x. Действительно, по условию шифрограмма E(e, x) сообщения x вычислительно неотличима от шифрограммы E(e, 00 . . . 0) сообщения той же длины. Поэтому симулятор M , зная длину зашифрованного сообщения l, может выбрать случайный ключ для шифрования e и выдать на выход E(e, 0l ). Схему C он не использует, поскольку алгоритм A опять не интерактивный. Этот пример показывает, что в определении разглашения важно, что входы x и e трактуются по-разному. А именно, в определении разглашения требуется, чтобы для всех (или почти всех) x, случайная величина, равная протоколу общения между A и C при случайном выборе e, могла быть порождена по f . В примере 1 невозможно порождать протокол общения для любых x, e, зная только длину x. Различие в трактовке x и e можно увидеть и на более простом при- 143 мере. Рассмотрим вероятностный алгоритм, игнорирующий свой вход x и печатающий на выход e, которое распределено равномерно независимо от x. Он имеет нулевое разглашение, однако алгоритм, который печатает на выход свой вход x не имеет нулевого разглашения. Пример 2. Пусть дана любая схема шифрования K, E, D с открытым ключом. Обозначим через e открытый ключ. Тогда алгоритм x, e 7→ E(x, e) разглашает только пару (|x|, e) при известном e. Действительно, по условию E(e, x) вычислительно неотличима от E(e, 0|x| ) при известном e. Поэтому симулятор M , зная длину зашифрованного сообщения l и открытый ключ e, выдает на выход E(e, 0l ). Пример 3. В любом интерактивном протоколе S, R, T привязки алгоритм S имеет нулевое разглашение. (Мы считаем, что алгоритм S воспринимает любой вход x длины, отличной от 1, как, скажем, нулевой бит.) Симулятор, имея схему C, моделирует общение алгоритма S(0) и схемы C и выдает на выход запись их общения. В этом примере симулятор запускает схему C в “штатном режиме”, то есть, общается с ней. В других примерах будет использоваться и нештатный режим. Следующая задача показывает, что нулевое разглашение при известном g немонотонно по g. Задача 60. Постройте алгоритм A, и функции f, g, h, для которых A имеет нулевое разглашение при известных f (x, e) и hf (x, e), g(x, e), h(x, e)i, но не имеет нулевого разглашения при известном hf (x, e), g(x, e)i. Бывают алгоритмы, которые не разглашают информацию только общаясь с определенными собеседниками (а не с любыми схемами полиномиального размера). Дадим определение этому понятию. Определение 36. Пусть B вероятностный интерактивный алгоритм, который получает на вход параметр безопасности и e. Мы говорим, что алгоритм A разглашает только f при известном g в беседе с B, если существует полиномиальный вероятностный алгоритм S, для которого выполнено следующее. Для любой последовательности слов {xn } полиномиальной длины алгоритм S, получив на вход f , порождает случайную величину, вычислительно неотличимую от записи общения алгоритмов A(e, x) и B(g, s) при известных g, s. Здесь s обозначает случайные биты алгоритма B. В этом контексте случайная величина (запись общения алгоритмов A(e, x) и B(g, s), s, g) обозначается через viewB (A(e, x), B(g)). 144 ГЛАВА 9. НЕРАЗГЛАШЕНИЕ ИНФОРМАЦИИ Задача 61. Докажите, что если вероятностный алгоритм A разглашает только f при известном e, то и для любого вероятностного полиномиального алгоритма B он в беседе с A разглашает только f при известном g. 9.1 Неразглашение информации при последовательном выполнении алгоритмов (Sequential composition lemma) Установим одно важное свойство понятия неразглашения. Для этого определим операцию последовательного соединения вероятностных интерактивных алгоритмов. Пусть A, B вероятностные полиномиальные алгоритмы. Выполним сначала алгоритм A на данной паре входов x и e, а затем выполним алгоритм B на паре входов (x, c) и e, где c — протокол общения, полученный в ходе выполнения A. Полученный алгоритм обозначим через (A, B). Последовательное соединение алгоритмов возникает, например, при использовании алгоритма шифрования E из схемы шифрования с открытым ключом для последовательной шифровки двух сообщений y, z с помощью одного и того же открытого ключа: алгоритм A применяет алгоритм E к первой компоненте входа x = hy, zi и открытому ключу e, а алгоритм B — ко второй компоненте и тому же открытому ключу e. Следующая теорема утверждает, что при последовательном выполнении алгоритмов A(x, e) и B(x, e) разглашение “складывается”. Точнее, разглашается только пара, состоящая из слов, разглашаемых каждым алгоритмом. Однако выполнено это не всегда. Достаточными условиями для этого является вхождение e в состав общеизвестной информации, и то, что с почти единичной вероятностью пара (c, x) попадает в область неразглашения алгоритма B. {th42} Теорема 32 (о неразглашении при последовательном выполнении). Пусть g(x, e) = (e, k(x, e)), где k — произвольная функция. Допустим, что алгоритм A(x, e) разглашает только f (x, e) при известном g(x, e) на области Dn , а алгоритм B(x, e) разглашает только h(x, e) при известном g(x, e) на той же области Dn . Пусть также хотя бы одна из функций f (x, e) или h(x, e) полиномиально вычислима. Тогда алгоритм 9.1. ПОСЛЕДОВАТЕЛЬНОЕ ВЫПОЛНЕНИЕ 145 (A, B) разглашает только пару (f (x, e), h(x, e)) при известном g(x, e) на области Dn . То же самое верно и для слабого разглашения (для любого распределения вероятностей на входах x). Доказательство. Зафиксируем симуляторы M, N для алгоритмов A, B и построим симулятор для алгоритма (A, B). Алгоритмы A, B получают на вход некоторое неизвестное x и некоторое неизвестное и случайно выбранное e и после этого по очереди беседуют с некоторой схемой C, которая прочитала g(x, e). В результате получается протокол беседы c((A, B)(x, e), C(g(x, e)), который является случайной величиной с параметром x. Новый симулятор должен, получив схему C и подсказку об x, e в виде пары f (x, e), h(x, e), сгенерировать случайную величину, вычислительно неотличимую от случайной величины c((A, B)(x, e), C(g(x, e)) при известном g(x, e). Будем в дальнейшем, через C w мы обозначаем схему, полученную из C фиксацией первых |w| + 1 входов равными слову w♦. Совместно распределённые случайные величины f (x, e), h(x, e), g(x, e) будем кратко обозначать через f, h, g. Процесс общения алгоритма (A, B)(x, e) со схемой C устроен так. Сначала схема C прочитывает g, превращаясь в схему C g . Затем эта схема беседует с алгоритмом A(x, e). Обозначим через u протокол этого общения. Затем с алгоритмом B беседует схема, в которой следующие |u| + 1 входов (после первых |g|+1) зафиксированы равными u♦. Будем обозначать эту схему через C gu . Таким образом, протокол общения алгоритма (A, B)(x, e) со схемой C имеет вид uD(C gu ), где u — протокол общения алгоритма A(x, e) и схемы C g , а D(C gu ) — протокол общения алгоритма B(x, e) и схемы C gu . Обе случайные величины u, D(C gu ), разумеется, зависят от x. Нам нужно, по f, h и C, сгенерировать некоторую случайную величину, вычислительно неотличимую от uD(C gu ) при известном g. Чтобы сгенерировать такую случайную величину, запускаем данный нам симулятор M на входах f и C. Он выдаст некоторую последовательность сообщений ũ. После этого запустим симулятор N на входе h и C ∗ũ (так обозначена схема, которая на входе y1 ♦y2 ♦ . . . yk ♦## . . . # выдаёт тот же результат, что и схема C на входе y1 ♦ũy2 ♦ . . . yk ♦## . . . #; последовательность ũ вставляется после первого разделителя). Он нам выдаст 146 ГЛАВА 9. НЕРАЗГЛАШЕНИЕ ИНФОРМАЦИИ последовательность, которую мы обозначим через D̃(C gũ ) и про которую известно, что она вычислительно неотличима от протокола общения алгоритма B(x, e) и схемы C gũ при известном g. Выдаём в качестве результата ũD̃(C gũ ). Зафиксируем произвольную последовательность строк xn полиномиальной длины. Нам нужно установить вычислительную неотличимость (при известном g) случайных величин α = ũD̃(C gũ ) и γ = uD(C gu ), полученных фиксацией первого входа алгоритмов A, B как xn . В силу транзитивности отношения неотличимости, достаточно доказать, что они обе неотличимы (при известном g) от какой-нибудь третьей случайной величины. Какую величину взять в качестве третьей, зависит от того, какая из двух функций f, h является полиномиально вычислимой функцией от g, x. Сначала рассмотрим случай, когда таковой является h. Тогда в качестве третьей рассмотрим случайную величину β = uD̃(C gu ). Неотличимость β и α доказывается так. Рассмотрим преобразование gv 7→ gv D̃(C gv ). Поскольку h есть полиномиально вычислимая функция, x фиксировано, а e входит в состав g, это преобразование можно вычислить вероятностной схемой полиномиального размера: эта схема вычисляет h и применяет симулятор N к h и схеме C ∗v . В применении к случайной величине gu это преобразование даст случайную величину gβ, а в применении к gũ оно даст gα. Поскольку исходные случайные величины gu и gũ неотличимы, то таковы и gα и gβ. Осталось доказать неотличимость γ и β. Нам достаточно доказать их неотличимость при любой фиксации случайных битов алгоритма A. После этой фиксации случайная величина u становится функцией от e и g (и, поскольку e входит в состав g, только от g), вычислимой схемой полиномиального размера. Поэтому нам достаточно доказать (вычислительную) неотличимость случайных величин {eq-rv1} gD(C gu ) и g D̃(C gu ). (9.1) 9.1. ПОСЛЕДОВАТЕЛЬНОЕ ВЫПОЛНЕНИЕ 147 Поскольку по g можно вычислить u схемой полиномиального размера, существует последовательность схем Fn полиномиального размера, для которой схема F g реализует ту же функцию, что и схема C gu : C gu ≡ F g . По условию, для последовательности схем Fn случайные величины gD(F g ) и g D̃(F g ). (9.2) {eq-rv2} вычислительно неотличимы. Из эквивалентности схем следует, что их диалоги с алгоритмом B(x, e) будут одинаковы и результаты применения к ним симулятора будут одинаковы (здесь нам важно, что симулятор использует схему, как чёрный ящик). Поэтому случайные величины (9.1) совпадают со случайными величинами (9.2). Поэтому из вычислительной неотличимости (9.2) следует вычислительная неотличимость (9.1). Во втором случае, когда f является полиномиально вычислимой функцией от g, x, в качестве третьей рассмотрим случайную величину β = ũD(C gũ ). Рассуждение в этом случае аналогично. Для неотличимости α и β (при известном g) нам нужно, чтобы f было полиномиально вычислимой функцией от g, x (это позволяет вычислить ũ по g и случайным битам симулятора M схемой полиномиального размера). А для неотличимости α и β (при известном g) нам опять нужно, чтобы e было полиномиально вычислимой функцией от g, x (это позволяет вычислить D(C gu ) по g и u вероятностной схемой полиномиального размера). Для слабого разглашения теорема доказывается точно так же. Замечание 15. Утверждение останется верным (и доказательство не изменится), если e является функцией от x и общеизвестной информации g(x, e), причем эта функция полиномиально вычислима, и хотя бы одна из функций f (x, e) или h(x, e) является полиномиально вычислимой функцией от пары (g(x, e), x).2 2 Напомним, что мы не предполагаем, функции f (x, e) или h(x, e) полиномиально вычислимы. Поэтому полиномиальная вычислимость f (x, e) и h(x, e) по (g(x, e), x) не следует из полиномиальной вычислимости e по (g(x, e), x). 148 ГЛАВА 9. НЕРАЗГЛАШЕНИЕ ИНФОРМАЦИИ Замечание 16. Теорема о неразглашении при последовательном выполнении сохраняется и в ситуации, когда алгоритму B дополнительно даётся на вход протокол общения c алгоритма A и использованные им случайные биты r. В этом случае её можно сформулировать таким образом. Пусть g(x, e) = (e, k(x, e)), где k — произвольная функция. Допустим, что алгоритм A(x, e) разглашает только f (x, e) при известном g(x, e) на области Dn , а алгоритм B(c, r, x, e) разглашает только h(x, e) при известном g(x, e) на области En . Пусть также хотя бы одна из функций f (x, e) или h(x, e) полиномиально вычислима. Пусть наконец, для всех x ∈ Dn для протокола общения c алгоритма A c любой схемой Cn полиномиального размера и его случайных битов r с почти единичной вероятностью выполнено (c, r, x) ∈ En . Тогда алгоритм (A, B) разглашает только пару (f (x, e), h(x, e)) при известном g(x, e) на области Dn . То же самое верно и для слабого разглашения (для любого распределения вероятностей на входах x). Доказательство этого утверждения получается повторением доказательства теоремы о неразглашении при последовательном выполнении. Теорема о неразглашении при последовательном выполнении алгоритмов верна и произвольного полиномиального числа алгоритмов. Для её аккуратной формулировки, будем считать, что имеется один алгоритм A, который применяется k = poly(n) раз. Причем при i-ом применении он получает на вход x и ещё само число i. Например, при i = 1 алгоритм A может применять ко входу некоторый алгоритм B, а при i = 2 совсем другой алгоритм C, как в теореме 32. Итак пусть дан вероятностный интерактивный алгоритм A, получающий на вход параметр безопасности n, строку x, число i 6 k = poly(n) и случайную величину e с распределением зависящем от n. Выполним k раз алгоритм A последовательно на входах (x, 1, e), . . . , (x, k, e) (строки x, e во всех запусках одни и те же). Будем обозначать полученный алгоритм через Ak(n) . {l-seq-comp} Теорема 33 (о неразглашении при последовательном применении полиномиального числа алгоритмов). Пусть g(x, e) = (e, k(x, e)), где k — произвольная функция, а f (x, e) некоторая полиномиально вычислимая функция. Если алгоритм A разглашает только f (x, e) при известном g(x, e), то алгоритм Ak(n) также разглашает только f (x, e) при известном g(x, e). Аналогичное утверждение выполнено для слабого разглашения. {seq1} 9.1. ПОСЛЕДОВАТЕЛЬНОЕ ВЫПОЛНЕНИЕ 149 Доказательство. Обозначим через M симулятор для алгоритма A и построим симулятор для алгоритма Ak . Новый симулятор должен, получив на вход f и некоторую схему C полиномиального размера, породить случайную величину, при известном g вычислительно неотличимую от протокола общения алгоритма Ak (x, e) и схемы C g . Мы будем использовать обозначения C v и C ∗v , введённые в доказательстве теоремы 32. Будем обозначать через Di (C, e) протокол общения алгоритма A(x, i, e) со схемой C g(x,e) . Будем также обозначать через D̃i (C, e), результат работы симулятора M на входах f (x, e) и C. Зафиксируем произвольную схему C (точнее последовательность схем Cn полиномиального размера). Протокол общения γ алгоритмов Ak (x, e) и C g можно получить последовательным применением к пустой строке для j = 1, . . . , k вероятностных операторов u 7→ uDj (C gu , e). (9.3) {op1} Поэтому естественно предположить, что если вместо (9.3) применить к пустой строке “близкие” операторы u 7→ uD̃j (C gu , e), (9.4) {op2} то полученная случайная величина α будет вычислительно неотличима от γ при известном g. Заметим, что случайная величина α может быть порождена только по f (x, e). Зафиксируем произвольную последовательность xn слов полиномиальной длины для алгоритма Ak и докажем, что α в самом деле неотличима от γ при известном g(xn , e). Для этого рассмотрим гибридные случайные величины β0 , . . . , βk . Случайная величина βi определяется как результат применения к пустой строке последовательно операторов (9.3) для j = 1, . . . , i и затем операторов (9.4) для j = i + 1, . . . , k. В частности, β0 это то же самое, что α, а βk — то же самое, что γ. Поэтому нам достаточно доказать, что βi−1 вычислительно неотличима от βi при известном g (точнее, это нужно доказать для любой последовательности индексов in , в дальнейшем мы считаем, что такая последовательность зафиксирована). Обозначим через δ случайную величину, полученную применением к пустой строке операторов (9.3) для j = 1, . . . , i − 1, а через F (u, e) обозначим случайную величину, полученную из строки u путем применения операторов (9.4) для j = i + 1, . . . , k. В этих обозначениях βi = F (δDi (C gδ , e), e), βi−1 = F (δ D̃i (C gδ , e), e). 150 ГЛАВА 9. НЕРАЗГЛАШЕНИЕ ИНФОРМАЦИИ Поскольку оператор F (u, e) можно вычислить вероятностной схемой полиномиального размера по xn , f (xn , e) и u (напомним, что xn фиксировано, и его можно запаять в схему), нам достаточно доказать неотличимость δDi (C gδ , e) и δ D̃i (C gδ , e) при известном g. Слово δ зависит от e и случайных битов, использованных алгоритмом A в первых его i − 1 запусках. Нам достаточно доказать неотличимость δDi (C gδ , e) и δ D̃i (C gδ , e) при известном g для любой фиксации этих битов. После такой фиксации δ становится функцией от e, а значит и от g(e, x), вычислимой схемой полиномиального размера. Поэтому достаточно доказать неотличимость Di (C gδ , e) и D̃i (C gδ , e) (при известном g). Преобразуем схему C eδ в схему F полиномиального размера, для которой Fe ≡ C eδ . (Точнее, речь идет о последовательности схем Fn полиномиального размера — по одной схеме для каждого значения параметра безопасности.) Тогда Di (C gδ , e) = Di (F g , e), D̃i (C gδ , e) = D̃i (F g , e). По условию Di (F g , e) и D̃i (F g , e) вычислительно неотличимы при известном g, что завершает доказательство. Следующая задача показывает, что в теореме 32 важно, что известная информация включает в себя e. Задача 62. Пусть e случайный бит, выбранный с равномерным распределением. Пусть алгоритм A выдает на выход x1 ⊕ e (где x1 — первый бит входа x). Пусть алгоритм B выдаёт на выход x2 ⊕ e. Докажите, что оба алгоритма имеют нулевое разглашение, но их последовательное выполнение не имеет нулевого разглашения. В следующей задаче приводится аналогичный пример для случая, когда вход x отсутствует и количество повторений пропорционально длине входа e. Задача 63. Пусть gn : {0, 1}n → {0, 1}n сильно односторонняя функция, а e равномерно распределено на её области определения {0, 1}n . Рассмотрим алгоритм, который (игнорируя вход x), выбирает случайное слово y длины n, сообщает пару hy, y ei и останавливается. (а) Докажите, что этот алгоритм имеет нулевое разглашение при известном gn (e). (б) Докажите, что алгоритм B, который 2n раз запускает алгоритм A (с одним и тем же e и независимыми y-ами не имеет нулевого разглашения при известном gn (e). Глава 10 Протоколы идентификации В протоколах идентификации участвуют две стороны, называемые Проверяющим и Доказывающим. Доказывающий должен убедить Проверяющего, что ему известна некоторая секретная строка, называемая закрытым ключом, не разгласив при этом эту строку. Протоколом идентификации (с открытым или закрытым ключом) называется тройка полиномиальных вероятностных алгоритмов K, P, V . Все три алгоритма получают на вход параметр безопасности n и работают время, ограниченное полиномом от n. Алгоритм K генерирует пару слов x, y, называемых ключами. Ключ x используется при идентификации клиентом в качестве пароля, а ключ y используется проверяющим алгоритмом. Алгоритмы P, V интерактивные и получают на вход, кроме параметра безопасности, ключи x, y, соответственно. Алгоритм P (x) выполняется Доказывающим, а алгоритм V (y) — Проверяющим. Доказывающий, зная x, должен убедить Проверяющего, который знает y, что он в самом деле знает x. Слово x будет называться ключом для идентификации, а слово y — ключом для проверки. Протокол идентификации может быть использован в следующей ситуации. Алгоритм V (y) выполняется банкоматом, в который вставлена банковская карточка, микропроцессор которой выполняет алгоритм P (x). Если алгоритм V (y) после общения выдал 1, то он признал карточку подлинной, а иначе фальшивой. Первое требование на протоколы идентификации очевидно: честный клиент должен пройти идентификацию. Формально это выражается следующим условием полноты:. V P (x) (y) = 1 с вероятностью, приблизительно равной 1. Вероятность берется по распределению на ключах, порождаемому 151 152 ГЛАВА 10. ПРОТОКОЛЫ ИДЕНТИФИКАЦИИ алгоритмом K, и по исходам случайных бросаний, выполняемых P и V . Второе требование должно выражать то, что нечестный клиент не должен пройти идентификацию. Мы будем рассматривать три вида атаки на протоколы идентификации. (1) Простая атака: противник, не зная ничего или зная только ключ y в протоколах с открытым ключом, пытается пройти идентификацию. Требование надежности в этом случае формулируется так: Для протоколов с закрытым ключом: любой последовательности схем Cn полиномиального размера вероятность события V Cn (y) = 1 пренебрежимо мала. Вероятность берется по случайному выбору y и по исходам случайных бросаний, выполняемых V . Для протоколов с открытым ключом в этом требовании нужно заменить схему Cn на схему Cn (y) (схема Cn сначала читает y, а потом беседует с алгоритмом Vn ). (2) Атака с подслушиванием. Противник сначала подслушивает полиномиальное число протоколов общения алгоритмов P (x) и V (y), а потом хочет пройти идентификацию. Требование устойчивости против атаки с подслушиванием формулируется следующим образом: Для протоколов с закрытым ключом: пусть даны произвольная последовательность схем Cn полиномиального размера и произвольный полином k(n). Рассмотрим следующую атаку: атакующая схема Cn , получив k(n) протоколов общения алгоритмов P (x) и V (y) (в каждом из этих протоколов алгоритмы используют свежие случайные биты), пытается пройти идентификацию, беседуя с алгоритмом V (y). Атака считается успешной, если алгоритм V (y) выдал 1. Требуется, чтобы вероятность успеха этой атаки была пренебрежимо мала. Вероятность считается по распределению на ключах, порождаемому алгоритмом K и по случайным выборам, сделанным алгоритмами P, V . Для протоколов с открытым ключом: атакующей схеме на вход даётся еще и ключ y (и, как и раньше, k(n) протоколов общения алгоритмов P (x) и V (y)). (3) Атака с фальшивым банкоматом. Представим себе, что противник изготовил фальшивый банкомат, который вместо правильной стратегии 153 проверяющего V использует некоторую неравномерно полиномиальную стратегию V ∗ , вычисляемую схемой полиномиального размера. Пусть владелец карточки k(n) раз прошел идентификацию в этом фальшивом банкомате. После этого противник, используя полученную информацию, пытается сам пройти идентификацию в настоящем банкомате с помощью схемы полиномиального размера P ∗ . Вероятность того, что противник успешно пройдет идентификацию, должна быть пренебрежимо малой. Требование устойчивости против атаки с фальшивым банкоматом формулируется следующим образом: Для протоколов с закрытым ключом: пусть даны произвольная последовательность схем Cn полиномиального размера и произвольный полином k(n). Рассмотрим следующую атаку: атакующая схема Cn беседует с алгоритмом P (x)k(n) (k(n)кратное последовательное выполнение независимых копий P с одним и тем же ключом). После этого схема пытается пройти идентификацию, беседуя с алгоритмом V (y). Атака считается успешной, если алгоритм V (y) выдал 1. Требуется, чтобы вероятность успеха этой атаки была пренебрежимо мала. Вероятность считается по распределению на ключах, порождаемому алгоритмом K и по случайным выборам, сделанным алгоритмами P, V . Для протоколов с открытым ключом: перед началом общения схема получает на вход ключ y, а дальше то же самое. Определение 37. Протоколом идентификации называется тройка полиномиальных вероятностных алгоритмов (K, P, V ), удовлетворяющая требованиям полноты и устойчивости (в зависимости от того, какое из шести рассмотренных нами требований надежности выбрать, получится определение одного из шести типов протоколов идентификации). Задача 64. Докажите, что в протоколах, устойчивых против простой атаки, без ограничения общности можно считать, что алгоритм P посылает алгоритму V ключ для идентификации и после этого останавливается. Поэтому определение протоколов, устойчивых против простой атаки, можно изменить, считая таким протоколом только алгоритм проверки V , который получает на вход оба ключа. Задача 65. Докажите, что для протоколов с открытым ключом из условия устойчивости против атаки с фальшивым банкоматом следует условие устойчивости против атаки с подслушиванием. 154 ГЛАВА 10. ПРОТОКОЛЫ ИДЕНТИФИКАЦИИ Задача 66. Докажите, что для протоколов с закрытым ключом из условия устойчивости против атаки с фальшивым банкоматом не следует условие устойчивости против атаки с подслушиванием. 10.1 Протоколы идентификации с закрытым ключом Протокол идентификации с закрытым ключом, устойчивый относительно простой атаки, можно построить без всяких теоретико-сложностных предположений: ключи x, y совпадают и выбираются случайно с равномерным распределением среди слов длины n. Алгоритм P посылает x, а алгоритм V проверяет, что присланное слово совпадает с y. Однако этот протокол, очевидно неустойчив относительно атаки с подслушиванием. Последний можно построить на основе семейства псевдослучайных функций. Причем, если это семейство удовлетворяет усиленному требованию надежности, то протокол будет устойчив и относительно атаки с фальшивым банкоматом. Теорема 34. Если существует сильное семейство ПСФ ft : {0, 1}n → {0, 1}n (то есть, удовлетворяющее усиленному условию неотличимости на стр. 104), то существует протокол идентификации с закрытым ключом, устойчивый против атаки с фальшивым банкоматом. Если существует семейство ПСФ ft : {0, 1}n → {0, 1}n , удовлетворяющее обычному условию неотличимости (стр. 100), то существует протокол идентификации с закрытым ключом, устойчивый против атаки с подслушиванием. Доказательство. Пусть длина идентификатора t ПСФ ft равна l(n). Алгоритм генерации ключей выбирает с равномерным распределением случайную строку t длины l(n) и полагает y = x = t. Алгоритм V выбирает случайное z длины n и посылает его алгоритму P . Алгоритм P вычисляет ft (z) и посылает его V . На этом общение заканчивается и алгоритм V выдаёт 1, если присланная ему строка совпадает с ft (z), и выдаёт 0 иначе. Требование полноты очевидно выполнено. Проверим требование надёжности для атаки с фальшивым банкоматом, предполагая, что семейство ПСФ удовлетворяет усиленному требованию неотличимости. Пусть 10.1. ПРОТОКОЛЫ С ЗАКРЫТЫМ КЛЮЧОМ 155 даны последовательность схем Cn , атакующая схему идентификации, и полином k(n). Преобразуем схему Cn в схему Dn , тестирующую ПСФ. Схема Dn получает тестируемую функцию ft : {0, 1}n → {0, 1}n как внешнюю процедуру и моделирует атаку схемы Cn . А именно, сначала она моделирует общение схемы Cn с алгоритмом P k(n) (x). При этом всякий раз, когда алгоритм P (x) должен вычислить значение ft (z) на запрошенном аргументе z, схема Dn вызывает внешнюю процедуру для вычисления этого значения. После k(n) повторений схема Dn моделирует общение Cn с V (y). Для этого она выбирает теперь уже сама случайное z 0 длины n и подаёт его на вход схеме Cn . Схема Cn возвращает некоторое u0 . Наконец, схема Dn в последний раз запрашивает значение внешней функции ft на z 0 . Если полученное значение совпадает с u0 , она выдаёт 1, а иначе 0. По условию, вероятность ответа 1 изменится незначительно, если внешнюю функцию ft заменить на случайно выбранную функцию g : {0, 1}n → {0, 1}n . Убедимся, что для случайной функции вероятность выдать 1 пренебрежимо мала. Поскольку строка z 0 выбирается случайно, вероятность того, что она совпадёт с каким-то из z’ов, значение на которых схема Cn узнала у внешней процедуры, не превосходит k(n)/2n . Если этого не произойдет, то g(z 0 ) является случайно выбранной независимо от u0 строкой, поэтому вероятность их совпадения равна 2−n . Теперь проверим требование устойчивости против атаки с подслушиванием, предполагая, что семейство ПСФ удовлетворяет обычному требованию неотличимости. Пусть даны последовательность схем Cn , атакующая схему идентификации и полином k(n). Схема Cn , получив на вход k(n) значений ПСФ ft на случайно выбранных входах z1 , . . . , zk , должна вычислить значение на еще одном случайно выбранном входе z. Пусть p обозначает вероятность успеха атаки. Тогда можно зафиксировать различные слова z1 , . . . , zk , z так, чтобы вероятность успеха была не меньше p − k(k + 1)2−n−1 . Атаку схемы можно рассматривать, как тестирование на случайность значений ft (z1 ), . . . , ft (zk ), ft (z). Ясно, что случайно выбранные k + 1 слов пройдут этот тест с вероятностью 2−n . Поэтому и значения ft (z1 ), . . . , ft (zk ), ft (z) пройдут этот тест с вероятностью приблизительно 2−n . Следовательно, p пренебрежимо мало. 156 10.2 ГЛАВА 10. ПРОТОКОЛЫ ИДЕНТИФИКАЦИИ Протоколы идентификации с открытым ключом Протоколы, устойчивые против простой атаки Легко построить такой протокол на основе любой сильно односторонней функции. В самом деле, пусть fn : {0, 1}p(n) → {0, 1}q(n) — сильно односторонняя функция. В качестве ключей выбирается пара (x, f (x)), алгоритм P посылает x, алгоритм V применяет к присланному слову функцию f и сравнивает полученное значение с f (x). Задача 67. Проверьте, что этот протокол удовлетворяет требованиям полноты и устойчивости против простой атаки. Говорят, что именно так устроена идентификация в UNIX системах. Однако этот протокол не устойчив против атаки с подслушиванием: противник, перехвативший сообщение, посланное P , может затем сам пройти идентификацию. Протоколы, устойчивые против атаки с подслушиванием Задача 68. Построить протокол идентификации с открытым ключом, удовлетворяющий условиям полноты и устойчивости относительно атаки с подслушиванием, на основе любой односторонней перестановки с секретом. Задача 69. Построить протокол идентификации с открытым ключом, удовлетворяющий условиям полноты и устойчивости относительно атаки с подслушиванием, на основе любого протокола шифрования с открытым ключом. Протоколы из обеих задач могут быть не устойчивы против атаки с фальшивым банкоматом. В следующем разделе мы построим такой протокол на основе любой односторонней функции. Задача 70. Объясните, почему протокол, основанного на односторонней функции с секретом, может оказаться не устойчивым против атаки с фальшивым банкоматом. 10.2. ПРОТОКОЛЫ С ОТКРЫТЫМ КЛЮЧОМ 157 Протоколы, устойчивые против атаки с фальшивым банкоматом Сначала мы построим такой протокол идентификации на основе функции Рабина, RSA или дискретной экспоненты (в предположении их необратимости). В этом протоколе устойчивость против атаки с фальшивым банкоматом будет следовать из устойчивости против простой атаки и того, что алгоритм P (x) имеет нулевое разглашение при известном y в слабом смысле (ключ y будет функцией от ключа x — только при таком условие наше определение неразглашения имеет смысл). Лемма 16. Пусть ключ y является функцией от ключа x. Тогда устойчивость против атаки с фальшивым банкоматом будет следовать из устойчивости против простой атаки и того, что алгоритм P (x) имеет нулевое разглашение при известном y в слабом смысле. Доказательство. Пусть Cn — произвольная последовательность схем полиномиального размера в требовании устойчивости против простой атаки. По предположению P (x) имеет нулевое разглашение при известном y. Тогда по теореме 33 алгоритм P k имеет нулевое разглашение при известном y. Обозначим через M симулятор для алгоритма P k . Применим его к открытому ключу y с оракулом C y . Он выдаст случайную величину ũ, вычислительно неотличимую от записи общения u схемы C g и алгоритма P k (x) при известном y. Рассмотрим теперь следующую попытку их отличить. Получив на вход hv, yi, запускаем беседу стратегий V (y) и C yv и выдаем в качестве результата ответ V . Этот отличитель задается схемой полиномиального размера. Вероятность того, что он выдаст 1 на входе hũ, yi, пренебрежимо мала в силу устойчивости протокола против простой атаки. Из неотличимости hu, yi и hũ, yi следует, что и вероятность того, что он на входе hu, yi выдаст 1, также пренебрежимо мала. Это и надо было доказать. Мы изложим метод, которым можно построить протокол идентификации с открытым ключом на основе любой из трех предположительно односторонних перестановок, функции Рабина, RSA или дискретной экспоненты. Изложим её, например, для функции Рабина. Теорема 35. Если функция Рабина необратима, то существует протокол идентификации. 158 ГЛАВА 10. ПРОТОКОЛЫ ИДЕНТИФИКАЦИИ Доказательство. Напомним, что функция Рабина fy определена как fy (x) = x2 mod y. Допустим, Гипотеза 1 (о необратимости функции Рабина) верна. Это означает, что функция xy 7→ (x2 mod y)y сильно односторонняя, если y выбирается случайно с равномерным распределением среди всех чисел, являющихся произведением двух различных n-битовых простых чисел p, q вида 4k +3, а x выбирается случайно с равномерным распределением в Dy = {z 2 mod y | 0 < z < y, (z, y) = 1}. Алгоритм K на входе 1n выбирает случайное y, как в Гипотезе 1, и случайное x ∈ Dy . В качестве закрытого ключа выдаётся пара hx, yi, а в качестве открытого ключа — пара hx2 mod y, yi. Основная идея протокола в том, чтобы Доказывающий доказал знание x, не разгласив его. Для этого Доказывающий указывает два таких числа z0 , z1 , что зная корень из обоих чисел можно найти x, но при этом корень только из одного из них не сообщает никакой информации об x. Проверяющий просит Доказывающего извлечь корень из одного из них. В качестве таких чисел, можно например взять z0 = v 2 и z1 = v 2 x2 , где v выбрано случайно среди обратимых вычетов. Тогда, зная корни из обоих этих чисел, можно найти и корень из x2 , как их отношение. При этом корень из каждого из них есть случайный вычет, поэтому не даёт никакой информации об x. Более конкретно, алгоритмы P, V работают так. 1) Алгоритм P выбирает случайный обратимый вычет v и посылает z = v 2 mod y (с пренебрежимо малой вероятностью ему не удастся найти такого вычета, в этом случае он останавливает беседу). 2) Алгоритм V посылает случайный бит α. 3) Алгоритм P проверяет, является ли присланное ему одним битом (если это не так, то в качестве α он берет первый бит полученного слова) и посылает u = vxα . Заметим, что u2 = zx2α (mod y). 4) Алгоритм V проверяет это равенство (он может это сделать, поскольку знает x2 , y) и проверяет, взаимно просты ли u и y. Если что либо из этого не выполнено, он останавливает беседу досрочно и выдает 0. Иначе повторяются пункты 1)–3), причем каждая из сторон использует новые случайные биты. Если после n повторений общение не остановлено досрочно, алгоритм V останавливает беседу и выдает 1. 10.2. ПРОТОКОЛЫ С ОТКРЫТЫМ КЛЮЧОМ 159 Условие полноты очевидно выполнено. Нулевое разглашение (в слабом смысле) проверяется следующим образом. По теореме 33 нам достаточно доказать, что в ходе однократного выполнения пунктов 1)–3) разглашается только y, x2 при известном y, x2 . При этом мы будем предполагать, что пара (y, x) берётся, как было описано выше. Это происходит с приблизительно единичной вероятностью при генерации ключей, поэтому мы докажем неразглашение в слабом смысле. Пусть банкомат использует схему F = Fn , которая по квадратичному вычету z сообщает бит F (z) (если F (z) состоит более чем из одного бита, то в дальнейших рассуждениях надо заменить F (z) на первый бит F (z)). Нам надо, используя F , как оракул, сгенерировать случайную величину, вычислительно неотличимую от случайной величины 2 hv 2 , F (v 2 ), vxF (v ) i. (10.1) {eq33} Здесь v выбирается по распределению, статистически неотличимому от равномерного распределения среди всех обратимых вычетов по модулю y. Если мы заменим распределение v на равномерное, то новое распре2 деление на тройках hv 2 , F (v 2 ), vxF (v ) i будет статистически неотличимо от старого, поэтому достаточно сгенерировать случайную величину, вычислительно неотличимую от (10.1) при равномерном распределении на v. На самом деле, мы сгенерируем величину, даже статистически неотличимую от неё. Для этого заметим, что каждая тройка (10.1) имеет вид hz, α, ui, где F (z) = α, u2 = zx2α и u взаимно просто с y. Будем тройки такого вида называть удачными. Естественно пытаться генерировать удачные тройки «с конца»: сначала выбрать случайным образом u (с равномерным распределением среди всех обратимых вычетов), затем выбрать случайным образом α (с помощью симметричной монетки), а z положить равным u2 x−2α . Если нам повезет и полученная тройка удовлетворяет равенству F (z) = α, то мы получим удачную тройку. Нетрудно понять, что вероятность удачи в таком эксперименте равна 1/2. В самом деле, случайные величины u2 x−2α и α независимы: при любом α случайная величина u2 x−2α имеет равномерное распределение среди всех обратимых квадратичных вычетов. Поэтому и случайные величины F (u2 x−2α ) и α независимы. Отсюда следует, что вероятность события F (u2 x−2α ) = α равна 1/2. 160 ГЛАВА 10. ПРОТОКОЛЫ ИДЕНТИФИКАЦИИ Будем повторять наш эксперимент с поиском удачной тройки, скажем n раз и выдавать первую найденную удачную тройку. Если же нам не повезёт все n раз, то выдадим любую тройку. В результате мы сгенерируем некоторое распределение на тройках, которое статистически неотличимо от равномерного распределения на всех удачных тройках. Осталось понять, что в беседе в самом деле появляется равномерное распределение на удачных тройках (точнее, статистически неотличимое от него). Тройка (10.1) целиком определяется выбором v, поэтому нам достаточно установить, что для любой удачной тройки hu2 x−2α , α, ui существует и притом единственное v, для которого u2 x−2α = v 2 , α = F (v 2 ), u = vxα . Единственность очевидна — последнее равенство однозначно задаёт v. Существование доказывается так: возведя последнее равенство в квадрат, мы получим первое равенство, а второе гарантировано удачностью исходной тройки hu2 x−2α , α, ui. Осталось проверить устойчивость относительно простой атаки. Пусть для некоторой последовательности схем F = Fn вероятность события 2 V F (y,x ) (y, x2 ) = 1 не пренебрежимо мала. Чтобы получить противоречие, нам достаточно, используя Fn , построить последовательность схем Dn полиномиального размера, которая для бесконечно многих n по паре y, x2 выдает некоторый корень из x2 с вероятностью не менее 1/poly(n). Итак, нам известно, что для бесконечно многих n вероятность со2 бытия V F (y,x ) (y, x2 ) = 1 больше ε = 1/poly(n). Фиксируем одно из таких n. Сначала рассмотрим совсем простой случай: вероятность события 2 V F (y,x ) (y, x2 ) = 1 равна 1. Схема F для любых данных y, x2 сначала посылает Проверяющему некоторый вычет z = z(y, x2 ). Затем в зависимости от присланного ему α она присылает некоторый другой вычет. Будем обозначать вычет, присланный в ответ на α = 0 через u0 = u0 (y, x2 ), а вычет, присланный в ответ на α = 0, через u1 = u1 (y, x2 ). По предположению с вероятностью 1 выполнено u20 = z, u21 = zx2 и u0 , u1 взаимно просты с y, а следовательно, x2 = (u1 /u0 )2 . Таким образом, следующий алгоритм обращает функцию Рабина с единичной вероятностью: Для данных y, x2 применяем F к паре (y, x2 ). Обозначим через z полученный вычет. Применяем F к обоим тройкам ((y, x2 ), z, 0) и ((y, x2 ), z, 0). Мы получим два вычета u0 , u1 . Выдаем в качестве ответа их частное. 10.2. ПРОТОКОЛЫ С ОТКРЫТЫМ КЛЮЧОМ 161 Заметим, что реальный Доказывающий отказался бы в одном раунде отвечать на два разных α. Когда мы обращаем функцию Рабина, мы используем схему, реализующую его стратегию, и можем делать это так, как запрещено в процессе идентификации. Теперь рассмотрим чуть более сложный случай: пусть известно, что 2 вероятность события V F (y,x ) (y, x2 ) = 1 не меньше 3/4. В этом случае опять достаточно использовать, что с вероятностью не менее 3/4 беседа не будет остановлена Проверяющим в первом раунде. Среднее арифметическое вероятностей событий “u20 = z и u0 взаимно просто с y” и “u21 = zx2 и u1 взаимно просто с y” не меньше 3/4. Значит сумма их вероятностей не меньше 3/2, поэтому вероятность их пересечения не меньше 1/2. Таким образом, с вероятностью не меньше 1/2 будет выполнено x2 = (u1 /u0 )2 . Тот же самый алгоритм будет теперь обращать функцию Рабина с вероятностью не менее 1/2. Теперь рассмотрим общий случай. Обозначим через p1 вероятность того, что беседа не остановлена Проверяющим в первом раунде, а через pi — вероятность того, что беседа не остановлена Проверяющим в i-ом раунде при условии, что она не остановлена раньше. Нам известно, что произведение чисел p1 , p2 , . . . , pn не меньше ε = 1/poly(n). Отсюда следует, что это произведение больше (3/4)n при всех достаточно больших n. Значит, существует такое i, для которого pi больше 3/4. Зафиксируем любое такое i, и рассмотрим следующую вероятностную процедуру обращения функции Рабина. Для данных y, x2 , моделируем протокол общения F и V и находим последовательность сообщений c, которая появится в беседе в первых i−1 раундах. При этом α1 , . . . , αi−1 (биты, посылаемые Проверяющим) выбираем случайным образом. Находим z = F (c), и u0 = F (c, z, 0) и u1 = F (c, z, 1). Выдаем в качестве ответа частное u1 /u0 . Нам известно, что с вероятностью более 1/2, вычеты u0 , u1 обратимы и квадрат их частного равен x2 , при условии, что беседа дойдет до i-ого раунда, не меньше 1/2. Поскольку вероятность самого условия не меньше ε, безусловная вероятность того, что мы найдем корень из x2 , не меньше ε/2. В приведенном рассуждении есть неточность — мы не знаем, чему равно i. Ее легко исправить: например, можно пробовать все i. А именно, для каждого i применять F к α = 0 и к α = 1. Если нам не повезло 162 ГЛАВА 10. ПРОТОКОЛЫ ИДЕНТИФИКАЦИИ и корень из x2 не найден, то выбираем α случайно и переходим к следующему раунду. А можно рассуждать и так: поскольку обратитель является схемой полиномиального размера, которая не обязана вычисляться эффективно по n, можно запаять i в схему-обратитель. Задача 71. Постройте аналогичные протоколы идентификации в предположении необратимости функции RSA и дискретной экспоненты. В следующем разделе мы построим протокол идентификации с открытым ключом на основе любой сильно односторонней функции f . Закрытым ключом будет случайно выбранное слово x из области определения f , а открытым ключом будет f (x). Идентификация будет заключаться в доказательстве с нулевым разглашением (при известном f (x)) знания некоторого прообраза f (x). 10.3 Доказательства с нулевым разглашением Пусть даны произвольное полиномиально разрешимая последовательность отношений Rn ⊂ {0, 1}p(n) × {0, 1}q(n) , где p, q — некоторые полиномы. Полиномиальная разрешимость означает, что за полиномиальное время можно по 1n , x, y выяснить, принадлежит ли пара (x, y) к Rn (то есть, верно ли Rn (x, y)). Представим следующую ситуацию: у нас и нашего партнера имеется n некоторое слово y, а кроме этого, мы (но не партнер) знаем некоторое x для которого выполнено Rn (x, y) (будем такие x называть свидетелями для y об R). Мы хотим доказать партнеру, что мы в самом деле знаем некоторого свидетеля для y. При этом мы хотим разгласить только y и ещё один бит, равный R(x, y). Для этого мы и наш партнер выполняем некоторые полиномиальные вероятностные алгоритмы P (x, y) и V (y), которые общаются между собой. После остановки второй из них должен сказать, убедился ли он, что алгоритм P (x, y) в самом деле знает некоторого свидетеля. Перейдем к формальным определениям. Пусть дан вероятностный интерактивный полиномиальный алгоритм V , получающий на вход (кроме параметра безопасности) одну строку y, и вероятностный интерактивный полиномиальный алгоритм P , получающий на вход (кроме параметра безопасности) две строки x, y. Такая пара называется неразгла- 10.3. ДОКАЗАТЕЛЬСТВА С НУЛЕВЫМ РАЗГЛАШЕНИЕМ 163 шающим протоколом доказательства наличия свидетелей об R, если выполнены следующие три условия Полнота: Для всех y и всех свидетелей x для y об R с приблизительно единичной вероятностью алгоритм V (y) после общения с алгоритмом P (x, y) выдает 1. Если вероятность этого события в точности равна 1, то мы будем говорить, что выполнено условие сильной полноты Корректность: Существует пренебрежимо малая последовательность αn такая, что для любой схемы C и любого y, для которого нет свидетеля, вероятность того, что V (y), общаясь с C, выдаст 1 не больше αn . Неразглашение: Алгоритм P разглашает только пару x, R(x, y). Определение 38. Если для данной пары (P, V ) выполняются условия полноты, неразглашения и корректности, та такую пару мы будем называть неразглашающим протоколом доказательства наличия свидетеля. Нам понадобится и более сильное условие корректности, в котором требуется, чтобы из убеждающей схемы Cn можно было извлечь свидетеля. Сильная корректность: Существует полиномиальный вероятностный алгоритм M и пренебрежимо малая последовательность αn с такими свойствами. Пусть даны схема C и y такие, что V (y), общаясь с C, выдаёт 1 с вероятностью больше αn . Тогда алгоритм M , получив на вход y и схему Cn (которую он может использовать, как чёрный ящик), выдает на выход c вероятностью 1 − αn некоторого свидетеля для y. Определение 39. Если для данной пары (P, V ) выполняются условия полноты, неразглашения и сильной корректности, та такую пару мы будем называть неразглашающим протоколом доказательства знания свидетеля. Теорема 36. Если существует протокол привязки, то для любого R существует неразглашающий протокол доказательства знания свидетелей об R. При этом если протокол привязки удовлетворяет условию сильной полноты, то и неразглашающий протокол доказательства знания удовлетворяет условию сильной полноты. Мы докажем эту теорему позже, а сейчас установим, как используя эту теорему можно построить протокол идентификации с открытым ключом. Теорема 37. Если существует сильно односторонняя функция, то существует и протокол идентификации с открытым ключом. {TH-ZKP} 164 ГЛАВА 10. ПРОТОКОЛЫ ИДЕНТИФИКАЦИИ Доказательство. Сначала заметим, что из условия следует существование протокола привязки (теорема 29), а значит (теорема 36) и существование протокола доказательства знания с нулевым разглашением для любого полиномиально разрешимого отношения R. Пусть дана произвольная сильно односторонняя функция fn : {0, 1}p(n) → {0, 1}q(n) . Пусть Rn (x, y) истинно, если |x| = p(n), |y| = q(n) и fn (x) = y. Пусть P, V протокол, существующий по этой теореме 36 для отношения R. Рассмотрим следующий протокол идентификации K̃, P̃ , Ṽ : алгоритм генерации ключей K̃ выбирает случайное x длины p(n) и выдает x в качестве закрытого ключа и fn (x) в качестве открытого ключа. В качестве алгоритма P̃ возьмем алгоритм, который на входе x сначала вычисляет y = f (x), а затем выполняет алгоритм P на входе x, y. И наконец положим Ṽ = V . Условие полноты для протокола доказательства знания эквивалентно условию полноты для построенного протокола идентификации. Неразглашение протокола доказательства знания влечет неразглашение для построенного протокола идентификации. В самом деле, рассмотрим следующий симулятор: получив открытый ключ y, добавим к нему бит 1 (поскольку свидетели есть для всех открытых ключей y) и запустим на полученной паре симулятор для исходного протокола. Докажем, что условие корректности для протокола доказательства знания влечет надежность против простой атаки для построенного протокола идентификации. Зафиксируем произвольную последовательность схем Cn полиномиального размера, для которой нужно установить, что вероятность события {event} V C(f (x)) (f (x)) = 1 (10.2) пренебрежимо мала. Обозначим через p(a) вероятность этого события при условии x = a. По условию при любом a алгоритм M C обращает f (a) с вероятностью не менее p(a)/poly(n). Усредняя по a, получаем, что вероятность события “M C обращает случайное f (x) ” не меньше, чем вероятность события (10.2), делённая на poly(n). Поскольку f необратима, вероятность первого события пренебрежимо мала, а значит такова же и вероятность события (10.2). 10.4. ДОКАЗАТЕЛЬСТВО ТЕОРЕМЫ 36 10.4 165 Доказательство теоремы 36 Сначала докажем теорему 36 для конкретного отношения R, означающего что x является корректной раскраской неориентированный графа y с n вершинами. А потом используем NP полноту задачи поиска корректной раскраски. Итак рассмотрим отношение Rn ⊂ {0, 1}p(n) × {0, 1}q(n) , где q(n) = n(n − 1)/2 и строки y этой длины отождествляются с неориентированными графами G = ({1, . . . , n}, E) с n вершинами. Строка x имеет длину p(n) = 2n и задает произвольную раскраску вершин графа в три цвета 1, 2, 3 (двух битов достаточно для задания цвета одной вершины). Отношение R(x, y) выполнено, если раскраска корректна, то есть концы любого ребра графа имеют разные цвета. Теорема 38. Если существует протокол привязки к строке длины 2, то существует интерактивный протокол с нулевым разглашением доказательства знания корректной раскраски графа в три цвета. Доказательство. Заметим, что протокол привязки к строке длины 2 можно использовать для привязки к одному из трех цветов (с помощью привязки к его двухбитной двоичной записи). Итак, нам достаточно построить протокол (P, V ), имеющий следующие свойства. (а) Если раскраска, данная Доказывающему, корректна, то с приблизительно единичной вероятностью Проверяющий выдаёт 1. (б) Сильная корректность. (в) Алгоритм P (φ) разглашает только R(φ, G) (то есть, является ли раскраска φ корректной). Интерактивный протокол (P, V ) состоит в следующем. Если данная алгоритму P раскраска φ не корректна, то он сразу останавливает общение. Иначе алгоритм P выбирает случайную перестановку π множества цветов {1, 2, 3} и применяет ее к данной раскраске φ. Полученную раскраску πφ будем обозначать через α. Затем P и V последовательно для каждой вершины u ∈ {1, . . . , n} запускают алгоритмы S, T привязки к цвету α(u) вершины u. То есть, происходит беседа интерактивных алгоритмов Sα = Sα(1) . . . Sα(n) и T n . Обозначим для дальнейшего через ku ключ, выданный u-ым запуском алгоритма S (на входе α(u)). Затем алгоритм V выбирает случайным образом некоторое ребро (u, v) в графе и посылает Доказывающему пару (u, v). В ответ алгоритм 166 ГЛАВА 10. ПРОТОКОЛЫ ИДЕНТИФИКАЦИИ P посылает ku , kv . Алгоритм V , применяя алгоритм R раскрытия сундучка, проверяет что цвета α(u) и α(v) различны. Если они оказались совпадающими или алгоритм T сообщил ⊥S для u или v, то алгоритм V выдает 0 и останавливается. Указанная процедура повторяется в 2n|E| раз (одно ее применение мы будем называть раундом) и если ни в одном раунде V не выдал 0, то он выдает 1 и останавливается. (Конец описания интерактивного протокола.) (а) Свойство полноты (сильной полноты, если этим свойством обладал протокол привязки) очевидно выполнено. (б) Проверим свойство сильной корректности. По требованиям к протоколу привязки существует функция F (c) со значениями 1,2,3 такая, что для любой схемы S ∗ полиномиального размера с приблизительно единичной вероятностью для всех k выполнено {eq333} T (cS ∗ ,T , k) ∈ {F (cS ∗ ,T ), ⊥S }. (10.3) Поэтому мы можем считать, что в каждом раунде после стадии привязки имеется некоторая функция F : {1, . . . , n} → {1, 2, 3} такая, что любой ключ ku примененный для открытия сундучка номер u, открывает F (u) или ⊥S . Точнее, такая функция существует с приблизительно единичной вероятностью. Пусть имеется схема из функциональных элементов C. Надо построить полиномиальный вероятностный алгоритм M с оракулом C. Этот алгоритм моделирует общение V и C. При этом в конце каждого раунда, прежде чем перейти к следующему раунду, он дополнительно просит схему C по очереди раскрыть ключи для концов всех ребер. Поскольку схема нам дана в виде внешней процедуры, мы можем это сделать. Затем применяем алгоритм R раскрытия сундучка для полученных ключей. Если мы таким образом получаем корректную раскраску (всех вершин положительной степени), то выдаем ее, продолжая моделирование дальше. Если раскраска не найдена, то, не меняя i, повторяем то же самое еще один раз, начиная со стадии привязки. Если опять не повезет, повторяем еще раз, всего n раз. Только после этого мы переходим к следующему раунду. Обозначим через p вероятность того, что C убеждает V (G) выдать 1. Будем предполагать, что p > e−n , поскольку иначе доказывать нечего (если пренебрежимо малая величина в условии меньше e−n /2). Вероятность успеха атаки C равна произведению чисел p1 , p2 , . . . , p2n|E| , где pi 10.4. ДОКАЗАТЕЛЬСТВО ТЕОРЕМЫ 36 167 вероятность того, i-ый раунд завершен успешно (Проверяющий не выдал 0), при условии, что все предыдущие раунды также завершились успешно. Нам известно, что произведение чисел p1 , p2 , . . . , p2n|E| не меньше p > e−n . Значит, существует такое i, для которого pi > e−1/2|E| > 1 − 1/2|E|. Докажем, что для этого i вероятность найти раскраску в i раунде не меньше p с точностью до пренебрежимо малой величины. А для этого достаточно доказать, что вероятность этого при условии, что все i−1 предыдущих раундов завершились успешно, равна 1 с точностью до пренебрежимо малой величины. Неравенство pi > 1−1/2|E| означает, что условная вероятность неудачи атаки i-ом раунде меньше 1/2|E|. Пусть F обозначает случайную величину, равную раскраске графа спрятанного в сундучках после стадии привязки в i-ом раунде (смотри начало доказательства). Будем называть ребро u, v плохим, если при посылке этого ребра схеме C она выдает ключи, при использовании которых не раскрываются F (u), F (v) или F (u) 6= F (v). Вероятность того, что найдется плохое ребро не больше 1/2 (с точностью до пренебрежимо малой величины). Действительно, иначе, вероятность выбора плохого ребра была бы не меньше 1/2|E|, а мы знаем, что она меньше этого. Поэтому, с вероятностью не менее 1/2, узнав ключи для концов всех ребер, мы найдем корректную раскраску вершин графа (имеющих положительную степень, остальные вершины можно раскрасить как угодно). Поскольку мы повторяем для данного i эту процедуру n раз, вероятность условная вероятность невезения не больше 2−n . (в) Осталось проверить неразглашение. Пусть Проверяющий вместо предписанной стратегии применяет некоторую последовательность схем V ∗ полиномиального размера. Будем обозначать через cP,V ∗ запись общения P (φ) и V ∗ (G). Если раскраска φ некорректна, то cP,V ∗ состоит из пустого слова и может быть порождено по известной нам информации, что R(φ, G) ложно. Пусть раскраска φ корректна. Нам нужно придумать алгоритм с оракулом V ∗ порождающий случайную величину, вычислительно неотличимую от случайной величины cP,V ∗ . Пусть β произвольная, возможно некорректная, раскраска графа. Рассмотрим следующую стратегию Доказывающего, которую мы обозначим через Pβ : запускаем алгоритмы Sβ и V ∗ , и по получении ребра (u, v) выдаём пару ключей ku , kv . Таким образом, исходная стратегия Доказывающего P заключается в выполнении Pα для случайной корректной раскраски α вида πφ. 168 ГЛАВА 10. ПРОТОКОЛЫ ИДЕНТИФИКАЦИИ Алгоритм порождения случайной величины, неотличимой от cP,V ∗ , таков. Выберем случайную раскраску β (все раскраски, корректные и некорректные выбираются с одинаковой вероятностью) и смоделируем общение Pβ с V ∗ . Скажем, что нам повезло, если V ∗ после выполнения алгоритма Sβ выдаст ребро (u, v), для которого β(u) 6= β(v). В этом случае выдаём полученную запись беседы в качестве результата. Иначе повторяем то же самое, используя новую случайную раскраску β. И так действуем до тех пор, пока нам не повезет или не произойдет n неудачных попыток. Докажем, что вероятность везения в каждой попытке примерно равна 2/3, поэтому вероятность того, что во всех n попытках не повезло, пренебрежимо мала. Зафиксируем ребро (u, v) и два различных цвета a, b. Вероятность везения равна сумме по всем ребрам (u, v) и парам различных цветов a, b вероятности того, что V ∗ (cSβ ,V ∗ ) = (u, v) (то есть, V ∗ , изучив запись своего общения с Sβ , выдаёт (u, v)) и при этом β(u) = a, β(v) = b. Поскольку мы зафиксировали цвета вершин u и v, при подсчете этой вероятности алгоритм Sβ может быть заменен на композицию алгоритмов Sβ(1) , . . . , Sa , . . . , Sb , . . . , Sβ(n) . Будем эту композицию обозначать через Sβabuv . Поскольку события {eq39} V ∗ (cSβabuv ,V ∗ ) = (u, v) (10.4) и β(u) = a, β(v) = b независимы, вероятность их пересечения равна произведению их вероятностей, то есть, одной девятой вероятности события (10.4). Теперь воспользуемся тем, что каждая из стратегий Sβ(1) , . . . , Sa , . . . , Sb , . . . , Sβ(n) имеет нулевое разглашение, а значит и их композиция тоже. Следовательно, существует полиномиальный алгоритм с оракулом V ∗ , генерирующий случайную величину θ, вычислительно неотличимую от протокола общения Sβabuv и V ∗ . Поэтому для любых β, a, b, u, v вероятность события (10.4) примерно равна вероятности того, что V ∗ (θ) = (u, v). Отсюда следует, что вероятность везения примерно равна одной девятой суммы по ребрам (u, v) и парам a, b разных цветов вероятности того, что V ∗ (θ) = (u, v). Действительно, в этой сумме полиномиальное от n количество слагаемых, поэтому от изменения каждого слагаемого на пренебрежимо малую величину сумма изменится незначительно. Сумма по всем (u, v) вероятности того, что V ∗ (θ) = (u, v), равна 1. Поскольку существует ровно 6 пар различных цветов a, b, мы в результате получаем примерно 6 · (1/9) = 2/3. 10.4. ДОКАЗАТЕЛЬСТВО ТЕОРЕМЫ 36 169 Итак, наш алгоритм порождает случайную величину, статистически неотличимую от следующей случайной величины η. Ее значение равно cPβ ,V ∗ при условии, что в раскраске β концы ребра V ∗ (cSβ ,V ∗ ) имеют различные цвета. То есть, Pr[η = d] ≈ Pr[cPβ ,V ∗ = d | (∃u, v) V ∗ (cSβ ,V ∗ ) = (u, v), β(u) 6= β(v)] (10.5) {eq79} Пусть A = An произвольная последовательность схем полиномиального от n размера. Нам надо доказать, что вероятность события A(cPα ,V ∗ ) = 1 (10.6) {eq80} примерно равна вероятности события A(η) = 1. Поскольку вероятность условия в (10.5) приблизительно равна 2/3, вероятности события A(η) = 1 примерно равна 3/2 вероятности события A(cPβ ,V ∗ ) = 1, β(u) 6= β(v). (10.7) {eq78} Представим каждое из событий (10.6) и (10.7) как объединение полиномиального числа непересекающихся событий. А именно, для каждого ребра (u, v) и каждой пары различных цветов a, b рассмотрим пересечение события (10.6) и события “Проверяющий послал ребро u, v и концы этого ребра имеют цвета a, b”: V ∗ (cPα ,V ∗ ) = (u, v), α(u) = a, α(v) = b. (10.8) {eq4} Аналогичным образом, для каждого ребра (u, v) и каждой пары различных цветов a, b рассмотрим пересечение события (10.7) с аналогичным событием: V ∗ (cPβ ,V ∗ ) = (u, v), β(u) = a, β(v) = b. (10.9) {eq5} Нам достаточно доказать, что при любых (u, v) и a 6= b вероятности событий (10.6) ∩ (10.8) и (10.7) ∩ (10.9) относятся примерно как 3 к 2. Заметим, что вероятности событий α(u) = a, α(v) = b и β(u) = a, β(v) = b равны 1/6 и 1/9, соответственно, за счет того, что α есть композиция корректной раскраски и некоторой перестановки цветов, а β является случайной раскраской. То есть они относятся как раз, как 3 к 2. А ещё заметим, что при подсчёте вероятности события (10.7) ∩ (10.9) мы можем не учитывать условия β(u) 6= β(v), поскольку это условие следует из того, что β(u) = a, β(v) = b. Наконец заметим, что вероятность события (10.6) ∩ (10.8) не изменится, если алгоритм Pα заменить 170 ГЛАВА 10. ПРОТОКОЛЫ ИДЕНТИФИКАЦИИ на алгоритм Pαabuv , который выполняет алгоритмы Sα(1) , . . . , Sa , . . . , Sb , . . . , Sα(n) а после получения ребра выдает ключи ku , kv (независимо от того, какое ребро пошлет Проверяющий). Аналогичную замену можно произвести в событии (10.7) ∩ (10.9). После такой замены условие α(u) = a, α(v) = b, имеющееся в событии (10.6) ∩ (10.8), становится независимым от остальных двух условий. [Это верно, но нуждается в доказательстве, поскольку для раскраски α цвета разных вершин зависимы. На самом деле это не нужно, поскольку можно рассмотреть условную вероятность.] То же самое верно и для события (10.7) ∩ (10.9). Поэтому вероятность (10.6) ∩ (10.8) равна одной шестой вероятности события {eq40} A(cPαabuv ,V ∗ ) = 1, V ∗ (cSαabuv ,V ∗ ) = (u, v), (10.10) а (10.7) ∩ (10.9) — одной девятой вероятности события {eq50} A(cPβabuv ,V ∗ ) = 1, V ∗ (cSβabuv ,V ∗ ) = (u, v). (10.11) Следовательно, нам достаточно доказать, что вероятности событий (10.10) и (10.11) примерно равны. В чём разница между событиями (10.10) и (10.11)? Разница только в способе выбора раскраски: раскраски α и β выбирается по различным распределениям. Поэтому нам достаточно доказать, что вероятность события (10.11) при фиксированной раскраске β мало зависит от β. Точнее, нам достаточно доказать, что при фиксированной β вероятность события (10.11) равна (с точностью до пренебрежимо малой величины) некоторому числу pabuv , которое не зависит от β. Это следует из того, что алгоритм S имеет нулевое разглашение. Отсюда и из теоремы 33 следует, что алгоритм Sβabuv , получающий на вход β, a, b, u, v, имеет нулевое разглашение. Однако для алгоритма Pβabuv , получающего на вход β, a, b, u, v, это неверно — он сообщает ключи ku , kv . Докажем, что он разглашает только a, b, u, v и случайные биты алгоритмов Sa , Sb . В самом деле алгоритм Pβabuv можно представить как последовательное выполнение следующих алгоритмов A1 , . . . , An+2 . Все алгоритмы получают на вход β, a, b, u, v и пару строк r, s. Алгоритм Ai при i 6 n и i 6= u, v запускает Sβ(i) , а алгоритмы Au , Av запускают Sa , Sb , используя в качестве случайности r, s, соответственно. Наконец алгоритмы An+1 и An+2 сообщают ku и kv , соответственно. Напомним, что по задаче 54 без ограничения общности можно считать, что ключ, выдаваемый алгоритмом S, состоит из его входа и его случайных битов, то есть, ku = ra, kv = sb. 10.4. ДОКАЗАТЕЛЬСТВО ТЕОРЕМЫ 36 171 Таким образом, мы представили Pβabuv , как последовательность независимо работающих алгоритмов, и можем применить к ним теорему 33. Поскольку для всех i алгоритм Ai разглашает только i, a, b, u, v, r, s (что следует из нулевого разглашения алгоритма S), алгоритм Pβabuv , разглашает только a, b, u, v, r, s. Поэтому существует симулятор M , который по a, b, u, v, r, s и V ∗ выдает случайную величину, вычислительно неотличимую от cPβabuv ,V ∗ . Это верно для любых r, s, поэтому верно и для случайно выбранных r, s. Итак, рассмотрим тест, который получив на вход протокол общения алгоритмов Pβabuv и V ∗ применяет к ней схему A, затем еще применяет схему V ∗ к той ее части, которая произошла на стадии привязки. Если схема A выдает 1 и схема V ∗ выдает ребро (u, v), то тест выдает 1, а иначе — 0. Этот тест (как и любой тест, задаваемый схемой полиномиального размера) не может отличить исходную запись общения от результата работы симулятора. Но поскольку последний от раскраски β не зависит, то и вероятность события (10.11) от раскраски зависит лишь незначительно. Теперь объясним как с помощью теории NP полноты доказать утверждение теоремы для любого полиномиально разрешимого R. Пусть дана полиномиально разрешимая последовательность отношений Rn ⊂ {0, 1}p(n) × {0, 1}q(n) . Тогда можно указать три полиномиально вычислимые функции fn , gn , hn с таким свойством. Функция fn по любому y длины q(n) указывает некоторый граф G с r(n) вершинами (где r — некоторый полином). Функция gn по любой паре x, y в отношении Rn выдает корректную раскраску графа f (y). И наконец функция hn по y и любой корректной раскраске графа f (y) указывает некоторого свидетеля x для y. Пусть P, V интерактивный протокол доказательства знания раскраски графа. Рассмотрим протокол P (g(x, y), f (y)), V (f (y)). Точнее, если x, y находятся в отношении R, то Доказывающий запускает алгоритм P на входе g(x, y), f (y), а иначе сразу останавливается. Проверяющий же просто запускает V (f (y)). Проверим условия (a), (б) и (в). (а) Если x, y находятся в отношении R, то по условию g(x, y) корректная раскраска графа f (x). Поэтому P (g(x, y)) убеждает V (f (y)) с примерно единичной вероятностью. (б) Пусть дана схема C полиномиального размера, убеждающая V (f (y)) выдать 1 с некоторой вероятностью p. Запустим симулятор на графе 172 ГЛАВА 10. ПРОТОКОЛЫ ИДЕНТИФИКАЦИИ V (f (y)), взяв в качестве оракула схему C. С вероятностью примерно p/2 мы найдем раскраску графа f (y). Применив к этой раскраске функцию h мы найдем некоторого свидетеля для y. (в) По условию P (g(x, y), f (y)) разглашает только f (y) и то, является ли g(x, y) раскраской графа f (y). Мы запускаем P (g(x, y), f (y)) только, если выполнено R(x, y), а, следовательно, g(x, y) есть корректная раскраска графа f (y). Поэтому, если R(x, y) верно, то мы можем запустить симулятор для P на входе f (y), 1 и получить случайную величину, вычислительно неотличимую от протокола общения P (g(x, y), f (y)) и любой схемы полиномиального размера. А если R(x, y) ложно, то просто выдаём пустую последовательность сообщений. Глава 11 Семейства хэш-функций Говоря неформально, хэш-функцией называется функция h : {0, 1}∗ → {0, 1}k , для которой трудно найти такие x1 6= x2 , что h(x1 ) = h(x2 ). Любая такая пара слов hx1 , x2 i называется коллизией функции h. Поскольку мощность множества значений меньше мощности области определения, коллизии обязательно есть, но мы хотим, чтобы их было трудно обнаружить. Чтобы формализовать это понятие, будем говорить не об одной хэш-функции, а о семействе хэш-функций. Мы рассмотрим две разных формализации: сильную — семейства хэш-функций с трудно обнаружимыми коллизиями (СТОК) и слабую — универсальные семейства односторонних хэш-функций (УСОХ). 11.1 Семейства хэш-функций с трудно обнаружимыми коллизиями Будем рассматривать полиномиально вычислимые семейства функций вида hn : {0, 1}l × {0, 1}∗ → {0, 1}k , где l, k являются полиномами от n. Полиномиальная вычислимость означает, что по n, t, x за время, ограниченное полиномом от n+|x|, можно найти hn (t, x). При каждых фиксированных n и t из {0, 1}l получаем функцию x 7→ hn (t, x), которую мы будем обозначать через hnt . Число n называется параметром безопасности, а строка t — идентификатором хэш-функции. Пусть еще имеется доступная случайная величина αn , принимающая значения в {0, 1}l(n) (то есть, распределение вероятности на идентификаторах хэш-функций). Пару, состоящую из hn и αn , называют семейством хэш-функций с трудно об173 174 ГЛАВА 11. СЕМЕЙСТВА ХЭШ-ФУНКЦИЙ наружимыми коллизиями (СТОК), если для любой последовательности схем Cn размера poly(n) вероятность события “Cn (αn ) есть коллизия для hnαn ” пренебрежимо мала. Для построения СТОК нам понадобится вспомогательный примитив — семейства перестановок с трудно обнаружимыми зацеплениями (clawfree). Зацеплением функций f 0 , f 1 называется пара слов z, y, для которых f 0 (z) = f 1 (y). Разрешается, чтобы z, y совпадали. Неформально, пара полиномиально вычислимых перестановок ft0 , ft1 одного и того же множества Dt называется семейство с трудно обнаружимыми зацеплениями (СТОЗ), если по t трудно найти зацепление функций ft0 , ft1 . Пусть задана полиномиально вычислимая последовательность отображений fn : {0, 1} × {0, 1}l(n) × {0, 1}m(n) → {0, 1}k(n) . Фиксируя n и последовательность t из l(n) битов, мы получим функции ft0 (x) = f (0, t, x) и ft1 (x) = f (1, t, x) (параметр безопасности в обозначениях опускаем). Пусть еще имеется доступная последовательность случайных величин αn , принимающая значения в {0, 1}l(n) . И кроме того, для каждого возможного значения t случайной величины αn имеется множество Dt ⊂ {0, 1}m(n) , на котором обе функции ft0 , ft1 являются перестановками. При этом требуется, чтобы существовал полиномиальный алгоритм, который по n и α с приблизительно единичной вероятностью находит некоторый элемент βα из Dα . Вероятность здесь берется по данному нам распределению случайной величины αn . Будем такое семейство функций называть СТОЗ, если для любой последовательности схем Cn полиномиального размера вероятность того, что Cn на входе α выдает пару слов y, z ∈ Dα , являющуюся зацеплением функций, fα0 , fα1 , пренебрежимо мала. Вероятность здесь берется по данному нам распределению случайной величины αn . Семейство с трудно обнаружимыми зацеплениями можно построить, если предположить сильную необратимость любой из трех функций: функции Рабина, функции RSA или дискретной экспоненты. Теорема 39. Если функция Рабина необратима, то существует СТОЗ. Доказательство. Случайная величина αn равномерно распределена среди всех (m, x) из области определения функции Рабина (m = pq, где p, q — простые n-битовые числа вида 4k + 3, а x — обратимый квадратичный вычет по модулю m). Множество Dm,x состоит из всех обратимых квадратичных вычетов по модулю m. Функция fm,x (y) определена как 11.1. СЕМЕЙСТВА ХЭШ-ФУНКЦИЙ С ТРУДНО ОБНАРУЖИМЫМИ КОЛЛИЗИЯМИ175 1 xy 2 mod m, а fm,x (y) = y 2 mod m (вторая функция от x не зависит). Пары m, x из области определения функции Рабина можно генерировать с почти равномерным распределением, причем по m можно найти элемент из Dm,x за полиномиальное время (скажем, 1 ∈ Dm,x ). Поэтому все исходные условия выполнены. Проверим условие трудности обнаружения зацеплений. Допустим, мы можем не с пренебрежимо малой вероятностью по паре (m, x) из области определения функции Рабина находить такие обратимые квадратичные вычеты y, z, для которых xy 2 mod m = z 2 mod m. Поскольку вычет (z/y) mod m является квадратичным и его квадрат равен x, с этой же вероятностью мы можем обращать функцию Рабина. Задача 72. Докажите, что существует СТОЗ, если функция RSA необратима или экспонента в поле вычетов по простому модулю необратима. Осталось построить СТОК, исходя из СТОЗ. Пусть дано семейство перестановок ft0 , ft1 множества Dt с трудно обнаружимыми зацеплениями, причем распределение на t дается доступной случайной величиной α. Сопоставим каждому слову x = x1 x2 . . . xm его префиксный код x̂ = x1 x1 x2 x2 . . . xm xm 01. Этот код обладает следующим свойством: если x 6= z, то ни одно из слов x̂, ẑ не является началом другого. Рассмотрим следующее семейство хэш-функций ht (x) = ftx̂1 (ftx̂2 (. . . ftx̂l (βt ) . . . )), где x̂1 x̂2 . . . x̂l обозначает префиксный код x. Слово t выбирается по распределению α, данному в определении СТОЗ. Теорема 40. Построенное семейство функций является семейством с трудно обнаружимыми коллизиями. Доказательство. Допустим, что схема C полиномиального размера с не пренебрежимо малой вероятностью находит коллизии у ht (x). То есть, она выдает пару слов x 6= z, для которых ftx̂1 (ftx̂2 (. . . ftx̂l (βt ) . . . )) = ftẑ1 (ftẑ2 (. . . ftẑm (βt ) . . . )). Пусть i наименьшее число такое, что x̂i 6= ẑi (такое существует по свойству префиксного кода). Поскольку ft0 , ft1 — перестановки Dt и x̂1 = ẑ1 , 176 ГЛАВА 11. СЕМЕЙСТВА ХЭШ-ФУНКЦИЙ . . . , x̂i−1 = ẑi−1 , мы можем сократить это равенство слева на композицию x̂ функций ftx̂1 , . . . , ft i−1 : x̂ ẑ ftx̂i (ft i+1 (. . . ftx̂l (βt ) . . . )) = ftẑi (ft i+1 (. . . ftẑm (βt ) . . . )). x̂ ẑ Значит, слова ft i+1 (. . . ftx̂l (βt ) . . . ) и ft i+1 (. . . ftẑm (βt ) . . . ) являются зацеплением функций ft0 , ft1 . Чтобы найти эти слова, мы находим длину i наибольшего общего префикса слов x̂, ẑ, а затем выдаем пару слов, указанную выше. Задача 73. Пусть даны два семейства СТОК hns : {0, 1}k(n) → {0, 1}m(n) и hnt : {0, 1}m(n) → {0, 1}l(n) , у которых множество возможных хэшзначений первого семейства совпадает с областью определения функций второго семейства. Рассмотрим семейство всех композиций функций из первого и второго семейства hnst (x) = hnt (hns (x)). Докажите, что полученное семейство есть СТОК. 11.2 Универсальные семейства односторонних хэш-функций Полиномиально вычислимое отображение hn : {0, 1}q(n) × {0, 1}p(n) → {0, 1}n (здесь p(n), q(n) — некоторые многочлены) называется универсальным семейством односторонних хэш-функций (УСОХ), если существует полиномиально моделируемое распределение µn на словах длины q(n) со следующим свойством. Для любой последовательности схем Cn размера poly(n) и любой последовательности слов xn ∈ {0, 1}p(n) вероятность события «пара слов hxn , Cn (t)i есть коллизия для hnt » пренебрежимо мала. Здесь hnt обозначает функцию hn (t, x) и t выбирается по распределению µn . Заметим, что по сравнению со СТОК в определении УСОХ два послабления: во-первых, в области определения каждой хэш-функции семейства слова фиксированной длины, полиномиальной зависящей от параметра безопасности (а в определении СТОК — произвольной длины) и, во-вторых, от атакующего требуется предъявить первый элемент коллизии, не зная идентификатора хэш-функции (а в определении СТОК первый элемент коллизии мог зависеть от идентификатора). Если ограничить область определения каждой функции в любом СТОК словами 11.2. УНИВЕРСАЛЬНЫЕ СЕМЕЙСТВА ОДНОСТОРОННИХ ХЭШ-ФУНКЦИЙ177 полиномиальной (от параметра безопасности) длины (полином можно выбрать любым), то мы получим УСОХ. Поэтому неудивительно, что универсальные семейства односторонних хэш-функций можно построить при более слабых предположениях, чем СТОК. А именно, достаточно существования любой односторонней функции [8]. Теорема 41. Если существует частичная сильно односторонняя функция, то для любого полинома p(n) существует полином q(n) и УСОХ hn : {0, 1}q(n) × {0, 1}p(n) → {0, 1}n . Мы не приводим доказательства этой довольно сложной теоремы. Вместо этого мы приведем конструкцию УСОХ на основе односторонней перестановки fn : {0, 1}n → {0, 1}n . Теорема 42. Если существует сильно односторонняя перестановка fn : {0, 1}n → {0, 1}n , то для любого полинома p(n) существует полином q(n) и УСОХ hn : {0, 1}q(n) × {0, 1}p(n) → {0, 1}n . Доказательство. Сначала построим УСОХ hs : {0, 1}n+1 → {0, 1}n . Идентификатором хэш-функции будет невырожденная над полем мощности 2 матрица A порядка n × (n + 1), а сама хэш-функция hA отображает x в Afn+1 (x). (Матрица называется невырожденной, если ее ранг равен n, то есть, строки линейно независимы.) Распределение µ — равномерное на невырожденных матрицах. Задача 74. Докажите, что равномерное распределение на невырожденных матрицах порядка n × (n + 1) доступно. Лемма 17. Если перестановка fn : {0, 1}n → {0, 1}n сильно односторонняя, то так определенное семейство hA является УСОХ. Доказательство. Пусть нам дана схема C полиномиального от n размера и строка x длины n + 1, для которых вероятность события “x и C(A) есть коллизия для hA ” не пренебрежимо мала. Будем с помощью C и x обращать f следующим образом. Пусть дана строка y длины n + 1, подлежащая обращению. Сначала проверим, не является ли x обратным к y. Если да, то выдаем x. Иначе мы генерируем случайную невырожденную матрицу A со свойством Af (x) = Ay и выдаем C(A) в качестве результата. 178 ГЛАВА 11. СЕМЕЙСТВА ХЭШ-ФУНКЦИЙ Задача 75. Докажите, что по ненулевому вектору z можно сгенерировать за полиномиальное время распределение, статистически неотличимое от равномерного распределения на невырожденных матрицах со свойством Az = 0. Будем считать, что исходное данное выбирается среди всех строк y, отличных от f (x). Очевидно, нам достаточно доказать, что вероятность успеха обращения по этому распределению не пренебрежимо мала. Для этого надо связать эту вероятность с вероятностью того, что C находит коллизию hA . Заметим, что если пара hz = C(A), xi является коллизией для hA , то Af (z) = Af (x) = Ay. В силу невырожденности A существует не более двух различных строк u с данным значением Au. Поэтому f (z) равно f (x) или y (напомним, что мы предполагаем, что f (x) 6= y). Поскольку z не равно x и f инъективна, первый случай невозможен, то есть z является прообразом y. Закончено ли доказательство? Еще нет, поскольку нам нужно проверить, что в результате двухступенчатого процесса (сначала выбираем случайное y 6= f (x), затем выбираем случайную невырожденную матрицу A, удовлетворяющую уравнению Af (x) = Ay) генерируется равномерное распределение на невырожденных матрицах. Если это в самом деле так, то вероятность успеха в обращении случайно взятого y 6= f (x) в точности равна вероятности успеха C в поиске коллизии. Как найти вероятность того, что в результате указанного двухступенчатого процесса появится данная невырожденная матрица? Рассмотрим множество S всех пар (A, y), удовлетворяющих нашим свойствам: Ay = Af (x), y 6= f (x), A не вырождена. Будем себе представлять эти пары расположенными на плоскости, где A откладывается по вертикальной оси, а y — по горизонтальной. В нашем двухступенчатом процессе генерируется равномерное распределение на этом множестве, поскольку все вертикальные сечения множества S содержат одинаковое число элементов (количество невырожденных матриц, аннулирующих данный вектор, не зависит от этого вектора). С другой стороны, все горизонтальные сечения множества S тоже равномощны (все горизонтальные сечения одноэлементны, поскольку для данной невырожденной матрицы A существует ровно один вектор y 6= f (x), удовлетворяющий равенству Ay = Af (x)). Поэтому при случайном равномерном выборе пары из S ее первая компонента имеет также равномерное распределение. Пусть теперь дан произвольный многочлен p(n) > n и УСОХ hnt : {0, 1}n+1 → 11.2. УНИВЕРСАЛЬНЫЕ СЕМЕЙСТВА ОДНОСТОРОННИХ ХЭШ-ФУНКЦИЙ179 {0, 1}n . Преобразуем его в семейство хэш-функций gt̃n : {0, 1}p(n) → {0, 1}n следующим образом. Идентификатором t̃ новой хэш-функции будет строка из m = p(n) − n идентификаторов tp(n)−1 , . . . , tn функций из исходного семейства, причем gt̃ (x) есть композиция функций htp(n)−1 , . . . , htn . Применение каждой из функций уменьшает длину исходной строки на единицу, поэтому полученная функция как раз отображает строки длины p(n) в строки длины n. Лемма 18. Если исходное семейство ht является УСОХ, то и построенное семейство gt̃ является УСОХ. Доказательство. Утверждение следует из следующего простого наблюдения. Пусть x 6= y есть коллизия gt̃ , то есть, gt̃ (x) = gt̃ (y). Будем вычислять левую и правую часть этого равенства последовательно: сначала применим к x и y функцию htp(n)−1 , получим новую пару строк. Применим к этим строкам функцию htp(n)−2 и так далее. Рассмотрим тот первый момент когда строки в паре стали совпадать. В этот момент мы получим коллизию одной функции htj для некоторого j = n, . . . , p(n) − 1. Теперь допустим, что некоторая схема Cn полиномиального размера для бесконечно многих n атакует семейство gt̃ с вероятностью успеха не менее εn = 1/poly(n) и при этом первый элемент коллизии равен xn . Тогда для каждого из этих n можно найдется j = n, . . . , p(n) − 1, для которого с вероятностью не менее εn /(p(n) − n) в указанном процессе будет найдена коллизия функции htj . Таких j, очевидно, бесконечно много. Для каждого из них, зная xn и Cn (размеры которых ограничены полиномом от j, поскольку j > n), можно атаковать семейство htj так. В качестве первого элемента коллизии выдаем результат последовательного применения к xn функций htp(n)−1 , . . . , htj+1 . При этом идентификаторы этих функций выбираем случайно. После получения случайного идентификатора j-й функции tj строим t̃, дополнив к tj , с одной стороны, выбранные ранее (tj+1 , . . . , tp(n)−1 ), а с другой стороны, выбранные случайно (tn , . . . , tj−1 ). К полученному t̃ применяем к схему Cn и выдаем результат в качестве второй строки коллизии. Заметим, что распределение t̃ получилось равномерным. При этом выбор j от него не зависит, так что с вероятностью 1/(p(n) − n) параметр j будет именно таким, при котором в этом процессе найдётся коллизия htj . Эта вероятность умножится на вероятность успешного поиска коллизии gt̃ , что и даст итоговую вероятность εn /(p(n) − n). 180 ГЛАВА 11. СЕМЕЙСТВА ХЭШ-ФУНКЦИЙ Полученная вероятностная атакующая схема обычным образом может быть преобразована в детерминированную. Глава 12 Протоколы электронной подписи Протоколом электронной подписи называется тройка вероятностных полиномиальных алгоритмов (K, S, V ), называемыми алгоритмом генерации ключей, алгоритмом подписи и алгоритмом проверки, соответственно. Все алгоритмы получают на вход параметр безопасности n в унарной записи, а алгоритмы подписи и проверки еще и несколько слов. Алгоритм K, получив на вход параметр безопасности, выдаёт на выход пару слов (x, y), называемых ключами для подписи и её проверки. Алгоритм подписи, кроме параметра безопасности, получает на вход еще пару слов, ключ для подписи d и подписываемое сообщение m, и выдает на выход слово, называемую подписью. Алгоритм V , кроме параметра безопасности, он получает на вход три слова, ключ для проверки y, сообщение m и подпись s, выдаёт на выход 0 или 1 (отвергает или принимает подпись). Любой протокол электронной подписи должен позволить честному участнику подписывать любые сообщения полиномиальной (от параметра безопасности) длины. Это условие выражается в следующем требовании полноты. (а) Полнота. Для любой последовательности слов mn (длина слова mn должна быть ограничена полиномом от n) с вероятностью, приблизительно равной 1, выполнено V (y, m, S(x, m)) = 1 (параметр безопасности n мы во всех обозначениях опускаем). Вероятность берется по распределению вероятностей на парах ключей (x, y), порождаемому алгоритмом K, и по бросаниям монетки, выполняемым алгоритмами S, V . Кроме этого, нужно потребовать, чтобы нечестный участник (то есть, 181 182 ГЛАВА 12. ПРОТОКОЛЫ ЭЛЕКТРОННОЙ ПОДПИСИ не знающий ключа x) не мог подписать никакого сообщения. Это требование, которое мы будем называть надежностью схемы подписи, существует в нескольких модификациях. Во-первых, протоколы делятся на протоколы с закрытым ключом и протоколы с открытым ключом. В протоколах с закрытым ключом мы считаем, что противник не знает ни одного из двух ключей, а в протоколах с открытым ключом мы считаем, что противник знает ключ для проверки. Во-вторых, протоколы можно делить по виду атаки, которую они способны выдержать. Мы ограничимся рассмотрением только одного вида атаки, называемой адаптивной атакой с выбором сообщений: противник (получив ключ для проверки в системах с открытым ключом) выбирает любое сообщение m1 , получает подлинную подпись s1 под ним, затем выбирает сообщение m2 , получает подлинную подпись s2 под ним и так далее некоторое полиномиальное от n количество раз. После этого противник должен выдать сообщение, которое отлично от всех выбранных ранее сообщений и подпись под ним. Если эта подпись признана подлинной, то атака считается успешной. Требование надежности состоит в том, что если алгоритм действия противника реализуем схемой, количество функциональных элементов в которой ограничено некоторым полиномом от параметра безопасности, то вероятность успеха атаки пренебрежимо мала. Вот более детальная формулировка требования надёжности. Сначала сформулируем требование надёжности для протоколов с открытым ключом. Надёжность для протоколов с открытым ключом: Для любой полинома k(n) и любой последовательности схем Cn полиномиальной длины должно быть выполнено следующее. Для каждого значения параметра безопасности n и каждой пары ключей (x, y) определим две последовательности mi и si рекурсивно: m1 = C(y), s1 = S(x, m1 ), m2 = C(y♦s1 ), s2 = S(x, m2 ), ... mk = C(y♦s1 ♦ . . . ♦sk−1 ), sk = S(x, mk ), mk+1 = C(y♦s1 ♦ . . . ♦sk ), sk+1 = C(x, s1 , . . . , sk ). Требуется, чтобы при случайном выборе пары ключей (x, y) вероятность события mk+1 6∈ {m1 , . . . , mk }, V (y, mk+1 , sk+1 ) = 1 12.1. ПРОТОКОЛЫ ЭЛЕКТРОННОЙ ПОДПИСИ С ЗАКРЫТЫМ КЛЮЧОМ183 была пренебрежимо малой. (В вероятностное пространство также входят случайные биты алгоритма подписи S.) Требование надёжности для протоколов с закрытым ключом: формулируется совершенно аналогично. Для этого в этом определении везде надо заменить C(y∗) на C(∗) (схема не получает на вход ключа y). Определение 40. Протоколом электронной подписи с открытым (закрытым) ключом называется тройка вероятностных полиномиальных алгоритмов (K, S, V ), удовлетворяющая требованиям полноты и надёжности для схем с открытым (закрытым) ключом. В чем отличие схем подписи от протоколов идентификации? Главное отличие в том, что идентификация — это интерактивный процесс, в протоколах идентификации алгоритмы P, V интерактивные, а в протоколе подписи алгоритмы S, V — не интерактивные. По этой причине алгоритмы идентификации не применимы в построении схем подписи. В обратную же сторону сведение возможно: любую схему подписи можно переделать в протокол идентификации. Для идентификации доказывающий подписывает случайное выбранное Проверяющим сообщение длины n. Задача 76. Докажите, что этот протокол идентификации удовлетворяет требованиям полноты и надежности для протоколов идентификации (с открытым ключом, если таковой была исходная схема подписи, и с закрытым ключом, иначе). 12.1 Протоколы электронной подписи с закрытым ключом Протокол электронной подписи с закрытым ключом можно изготовить из семейства псевдослучайных функций. Теорема 43. Если существует семейство ПСФ fs : {0, 1}∗ → {0, 1}n , удовлетворяющее усиленному условию на стр. 104, то существует протокол идентификации с закрытым ключом. Доказательство. Пусть длина идентификатора s ПСФ fs равна l(n). Алгоритм генерации ключей выбирает с равномерным распределением случайную строку s длины l(n) и выдаёт её в качестве обоих ключей: x = 184 ГЛАВА 12. ПРОТОКОЛЫ ЭЛЕКТРОННОЙ ПОДПИСИ y = s. Подписью под сообщением m является ft (m). Алгоритм проверки сравнивает присланную строку с ft (m) и выдаёт 1, если присланная ему строка совпадает с ft (m), и выдаёт 0 иначе. Условие полноты очевидно выполнено. Проверим условие надёжности. Пусть даны многочлен k = k(n) и последовательность схем Cn , атакующая схему подписи. Преобразуем схему Cn в схему Dn , тестирующую ПСФ. Схема Dn получает тестируемую функцию ft : {0, 1}n → {0, 1}n в качестве чёрного ящика (= внешней процедуры) и моделирует атаку схемы Cn и выдает результат выдаёт 1, если атака удачна. По условию, вероятность ответа 1 изменится незначительно, если внешнюю функцию ft заменить на случайно выбранную функцию g : {0, 1}n → {0, 1}n . Убедимся, что для случайной функции вероятность выдать 1 пренебрежимо мала. Атака признается удачной только, если mk+1 6∈ {m1 , . . . , mk }, g(mk+1 ) = D(g(m1 )♦ . . . ♦g(mk )). Поскольку g — случайная функция, значение g(mk+1 ) не зависит от g(m1 )♦ . . . ♦g(mk ) (при соблюдении первого условия). Значит условная вероятность истинности последнего равенства при любых фиксированных mk+1 , m1 , . . . , mk , удовлетворяющих первому условию, равна 2−n . 12.2 Протоколы электронной подписи с открытым ключом В дальнейшем мы будем накладывать на противника разные ограничения. Первое из них — полином ограничивающий k есть тождественно единичный полином. Другими словами, противнику разрешается получить настоящую подпись только под одним сообщением, а затем самостоятельно изготовить другое сообщение и фальшивую подпись под ним. Протоколы подписи, устойчивые против такой атаки, называются протоколами одноразовой подписи или протоколами подписи одного сообщения (поскольку с гарантией можно подписать только одно сообщение). Второе ограничение, которое мы будем рассматривать, относится к длинам подписываемых сообщений. Пусть фиксирован некоторый полином p(n). Протоколы подписи, которые устойчивы против атаки, в которой длины всех сообщений x1 , . . . , xk , xk+1 равны p(n), называются протоколами под- 12.3. ОДНОРАЗОВАЯ СХЕМА ПОДПИСИ ОДНОГО БИТА 185 писи сообщений длины p(n). Самым простыми будут одноразовые схемы подписи одного бита (то есть протоколы подписи сообщений длины 1). 12.3 Одноразовая схема подписи одного бита Атака на такую схему подписи вырождается в следующее. Атакующая схема Cn сначала применяется к открытому ключу e и выдает некоторый бит σ. Затем схема C = Cn еще раз применяется к паре e, s, где s = S(d, σ) есть настоящая подпись под битом σ. Атака считается успешной, если выданная фальшивая подпись s0 = C(e, s) признана правильной подписью под противоположным битом σ, то есть, V (e, σ, s0 ) = 1. Требуется, чтобы вероятность успеха атаки была пренебрежимо мала (для любой последовательности схем {Cn } полиномиального от n размера. Теорема 44. Если существует односторонняя функция, то существует протокол подписи одного бита. Доказательство. Пусть fn сильно односторонняя функция и G — алгоритм генерации распределения, статистически неотличимого от равномерного распределения в области определения fn . В качестве закрытого ключа возьмем пару hx0 , x1 i, где x0 , x1 получены независимыми применениями алгоритма G к параметру безопасности n. В качестве открытого ключа возьмем hy 0 , y 1 i, где y 0 = fn (x0 ) и y 1 = fn (x1 ). Таким образом, алгоритм генерации ключей K по существу заключается в двукратном выполнении алгоритма G и последующем применении алгоритма вычисления функции fn к полученным результатам. Подпись под битом 0 есть x0 (первый компонент закрытого ключа), а подпись под битом 1 есть x1 (второй компонент закрытого ключа). Проверяющий, проверяя подпись s под битом σ, применяет fn к s и принимает подпись, если fn (s) = y σ . Очевидно, что этот протокол удовлетворяет требованию (а). Проверим требование (б). Допустим, что существуют последовательность схем Cn полиномиального от n размера, атакующая для бесконечно многих n построенную систему подписи с вероятностью успеха не меньше ε = 1/poly(n). Зафиксируем любое из таких n. Противник, применяя схему C = Cn к открытому ключу y 0 , y 1 вычисляет бит σ = C(y 0 , y 1 ). Затем, получив от подписывающего xσ , он применяет схему C к откры- 186 ГЛАВА 12. ПРОТОКОЛЫ ЭЛЕКТРОННОЙ ПОДПИСИ тому ключу и xσ и выдаёт поддельную подпись s0 . Атака признаётся успешной, если y σ = f (s0 ). Рассмотрим следующий вероятностный алгоритм D для обращения f . Получив на вход y = f (x), выбираем случайным образом x0 из области определения f (с помощью алгоритма G), а также выбираем случайным образом бит σ. Затем составляем пару y0 , y1 положив yσ = f (x0 ), а другой компонент пары положив равным данному нам y. Применим схему C ко входу (y0 , y1 ). Будем считать, что нам повезло, если схема выдала тот же бит σ, который мы выбрали случайно. В этом случае выдадим на выход C(y0 , y1 , x0 ) (а если нам не повезло, то можно выдать что угодно). Пусть исходное x выбирается случайно с помощью алгоритма G. Докажем, что вероятность того, что мы правильно обратили f (x) не менее ε/2. Для этого заметим, что, несмотря на то, что мы формировали пару (y0 , y1 ), исходя из значения σ, случайные величины σ, y0 , y1 независимы. И при этом случайная величина (y0 , y1 ) распределена так же, как и открытый ключ в схеме цифровой подписи. Поэтому σ не зависимо от бита, выданного схемой на входе (y0 , y1 ). Следовательно, при любых фиксированных y0 , y1 условная вероятность везения равна 1/2. Поскольку (y0 , y1 ) имеет то же распределение, что и открытый ключ, с вероятностью не менее ε/2 атака схемы C на схему подписи окажется успешной и при этом нам повезет, то есть C(y0 , y1 , x0 ) будет равно некоторому прообразу y. Осталось заметить, что выполняемый нами алгоритм D может быть выполнен вероятностной схемой полиномиального размера. Задача 77. Рассмотрим вместо использованного в доказательстве теоремы алгоритма обращения f следующую его модификацию: как и раньше, выбираем случайно x0 , а затем применяем схему C к обоим тройкам (y, f (x0 ), x0 ) и C(f (x0 ), y, x0 ). Если хотя бы одно из полученных слов будет прообразом y (мы можем это проверить полиномиальной схемой), выдадим это слово. Докажите, что вероятность успеха этого алгоритма также не меньше ε/2, причем в худшем случае она может быть примерно равна ε/2. 12.4. ПОДПИСЬ ОДНОГО СООБЩЕНИЯ ФИКСИРОВАННОЙ ДЛИНЫ187 12.4 Подпись одного сообщения фиксированной длины Пусть p(n) произвольный полином. Для протоколов подписи одного сообщения длины p(n) условие невозможности подделывания подписи вырождается в следующее требование. Для любой последовательности схем Cn , Dn , En полиномиального от n размера вероятность события x0 6= x, |x| = |x0 | = p(n), V (e, x0 , s0 ) = 1 пренебрежимо мала (опускаем параметр n). Здесь x = C(e), x0 = E(e, s) и s0 = D(e, s), где s = S(d, x). Теорема 45. Если существует протокол подписи одного бита, то для любого полинома p существует протокол подписи одного сообщения длины p(n). Доказательство. Пусть hK, S, V i данный нам протокол подписи одного бита. Рассмотрим “p(n)-ю степень этого протокола”, определяемую так: алгоритм генерации ключей K̃ порождает p(n) пар независимых ключей. В качестве открытого ключа он выдает кортеж из полученных открытых ключей ẽ = e1 . . . ep(n) , а в качестве закрытого ключа — кортеж из полученных закрытых ключей — d˜ = d1 . . . dp(n) . Подпись s̃ под сообщением x1 . . . xp(n) состоит из конкатенации подписей s1 , . . . , sp(n) с помощью S под битами x1 , . . . , xp(n) , причем при подписывании бита xi используется ключ di . Алгоритм проверки Ṽ заключается в проверке всех подписей s1 , . . . , sp(n) с открытыми ключами e1 , . . . , ep(n) . Если все они выдержали проверку, то подпись признается, иначе отвергается. Условие корректности очевидно выполнено. Условие невозможности подделать подпись проверяется так. Нам нужно атакующего C̃n , D̃n , Ẽn новую систему подписи преобразовать в атакующего исходную систему. Пусть вероятность успешной атаки C̃n , D̃n , Ẽn равна ε = 1/poly(n) для бесконечно многих n. Очевидно существует i 6 p(n), для которого с вероятностью не меньше ε/p(n) атака будет успешной и при этом iые биты x0 и x различны. Успешность атаки означает, в частности, что V (ei , x0 [i], si ) = 1 (параметр n опускаем). Будем атаковать исходную систему подписи одного бита следующим образом. Нам дан открытый ключ e, причем закрытый ключ, соответствующий ему, неизвестен. Выбираем 188 ГЛАВА 12. ПРОТОКОЛЫ ЭЛЕКТРОННОЙ ПОДПИСИ случайным образом p(n) − 1 пару ключей. Даем полученную последовательность из p(n)−1 открытых ключей на вход схеме C̃, вставив в нее на i-ое место данный нам открытый ключ e. Схема C̃ выдаст некоторое сообщение x. Подписываем все его биты, кроме i-го, с помощью известных закрытых ключей. А i-й бит просим подписать Подписывающего один бит с ключом d (неизвестным нам). Полученную последовательность из n подписей даем на вход схеме D. Она выдаст n поддельных подписей. Оставляем в этой последовательности только i-ую подпись s0i . Эта подпись с вероятностью не менее ε/p(n) будет принята Проверяющим V , как подпись под x0 [i] = x[i] с ключом e. Описанная атака использует случайные биты (при выборе p(n)−1 пар ключей). Зафиксировав их подходящим образом, мы можем получить детерминированные схемы с не меньшей вероятностью успеха. Эта система подписи является в самом деле всего лишь одноразовой в следующем смысле. Имея подписи под сообщениями 00 . . . 0 и 11 . . . 1, можно изготовить подпись под любым сообщением. 12.5 Протокол одноразовой подписи одного сообщения произвольной длины Для протоколов одноразовой подписи сообщений произвольной длины условие невозможности подделывания подписи вырождается в следующее требование. Для любой последовательности схем Cn , Dn , En полиномиального от n размера вероятность события x0 6= x, V (e, x0 , s0 ) = 1 пренебрежимо мала. Здесь x = C(e), x0 = E(e, s), и s0 = D(e, s), где s = S(d, x). Протокол подписи одного сообщения произвольной полиномиальной длины можно построить, имея протокол одноразовой подписи длины n с помощью и СТОК (или даже УСОХ). Для преобразования системы подписи сообщений длины k(n) в систему подписи сообщений любой длины достаточно хэш-функций, значения которых имеют k(n) битов. Новый алгоритм подписи будет сначала применять хэш-функцию, а потом с помощью старого алгоритма подписывать полученное хэш-значение. 12.5. ПРОТОКОЛ ОДНОРАЗОВОЙ ПОДПИСИ ОДНОГО СООБЩЕНИЯ ПРОИЗВОЛЬНОЙ ДЛ Теорема 46. Если существует СТОК hn : {0, 1}l(n) ×{0, 1}∗ → {0, 1}k(n) и система одноразовой подписи сообщений из k(n) битов, то существует и система одноразовой подписи сообщений произвольной длины. Доказательство. Пусть S, V данные нам в условии алгоритмы подписи и проверки, en , dn — открытый и закрытый ключи для нее, а αn — случайная величина из определения СТОК hn : {0, 1}l(n) × {0, 1}∗ → {0, 1}k(n) . Нам нужно построить одноразовую систему подписи (hẽn , d˜n i, S̃, Ṽ ) сообщения любой длины. В качестве открытого ключа возьмем пару hen , αn i, состоящую из старого открытого ключа и идентификатора хэшфункции из семейства hα . Аналогично определим закрытый ключ: d˜n = hdn , αn i. Алгоритм подписи S̃: сначала применяем к данному сообщению x хэш-функцию hα , а затем подписываем старым алгоритмом S с ключом ˜ x) = S(d, hα (x)). d полученное слово. То есть S̃(d, Алгоритм проверки Ṽ : сначала применяем к данному сообщению x хэш-функцию hα , а затем проверяем старым алгоритмом проверки данную подпись, как подпись под полученным словом. То есть Ṽ (ẽ, x, s) = V (e, hα (x), s). Очевидно, что требование (а) выполнено. Проверим условие (б). Рассуждая от противного, допустим, что имеются последовательности схем Cn , En , Dn полиномиального размера, для которых для бесконечно многих n вероятность успеха атаки не меньше ε = 1/poly(n). То есть с этой вероятностью случается событие Tn = (x0 6= x ∧ V (e, hα (x0 ), s0 ) = 1), где x = C(e, α), x0 = E(e, α, s), и s0 = D(e, α, s), где s = S(d, hα (x)). Вероятность здесь берется по случайному выбору e, d, α и случайным датчикам внутри E, S. Будем атаковать семейство хэш-функций или схему подписи (he, di, S, V ). От чего зависит, что именно мы атакуем? Одно из двух событий An = (x0 6= x ∧ hα (x0 ) = hα (x)) и Bn = (hα (x0 ) 6= hα (x) ∧ V (e, hα (x0 ), s0 ) = 1) имеет вероятность не менее ε/2. Действительно, вместе они покрывают событие Tn , которое имеет вероятность не менее ε. Либо для бесконечно 190 ГЛАВА 12. ПРОТОКОЛЫ ЭЛЕКТРОННОЙ ПОДПИСИ многих n вероятность An не меньше ε/2, либо для бесконечно многих n вероятность Bn не меньше ε/2 (либо и то, и другое). В первом случае мы получим противоречие с тем, что семейство хэш-функций является СТОК, а во втором, получим противоречие с надежностью данной нам системы подписи. Семейство хэш-функций атакуется следующим образом (в первом случае). Получив идентификатор α хэш-функции, мы запускаем алгоритм генерации пары e, d из данной нам системы подписи. Затем находим сообщение x = C(e, α) и подписываем его (поскольку мы сами сгенерировали оба ключа, мы можем подписать, что угодно), вычисляя s = S(d, hα (x)), а затем находим x0 = E(e, hα (x), s). Вероятность успеха этой атаки равна вероятности того, что x0 6= x, но hα (x0 ) = hα (x), то есть вероятности события An . По условию она не меньше ε/2 (для бесконечно многих n). Здесь важно, что распределение на парах (e, d, α), которое мы используем, такое же, как и в определении события An . Исходная система подписи (he, di, S, V ) атакуется следующим образом (во втором случае). Получив открытый ключ e, мы запускаем алгоритм генерации идентификатора хэш-функции α, данный нам в условии. Затем находим сообщение x = C(e, α). Подписать его самостоятельно мы теперь не можем, поскольку у нас нет закрытого ключа. Поэтому мы просим обладателя закрытого ключа подписать hα (x) (мы имеем право попросить один раз подписать сообщение длины k(n)). Получив s = S(d, hα (x)), мы вычисляем x0 = E(e, α, s) и s0 = D(e, α, s). В качестве результата мы выдаем сообщение hα (x0 ) и фальшивую подпись s0 под ним. Вероятность успеха этой атаки равна вероятности того, что hα (x0 ) 6= hα (x), но V (e, hα (x0 ), s0 ) = 1, то есть вероятности события Bn . Здесь опять важно, что распределение на парах (e, d, α), которое мы используем, такое же, как и в определении события Bn . Эта система подписи обладает одним важным достоинством, не отраженным в определениях. Длина подписи зависит только от параметра безопасности (и не зависит от длины исходного сообщения). 12.6. ПОСТРОЕНИЕ ОДНОРАЗОВОЙ СХЕМЫ ПОДПИСИ ОДНОГО СООБЩЕНИЯ ПРОИЗВО 12.6 Построение одноразовой схемы подписи одного сообщения произвольной длины, исходя из универсальных семейств односторонних хэш-функций Пусть имеется схема подписи hhen , dn i, S, V i одного сообщения длины n + 1. Пусть длина открытого ключа en в этой схеме равна полиному p(n). Пусть, кроме того, имеется универсальное семейство семейство односторонних хэш-функций hn : {0, 1}q(n) × {0, 1}p(n) → {0, 1}n , где p(n) есть длина открытого ключа в схеме подписи, а q(n) — произвольный многочлен. Сначала построим систему подписи, в которой условие x0 6= x успеха атаки заменено на более сильное условие: ни одно из слов x0 и x не является началом другого. Открытый ключ состоит из пары he, si, а закрытый ключ — из пары hd, si (опускаем параметр безопасности). Подпись под последовательностью битов x = σ1 . . . σl устроена так. Подписывающий выбирает случайно и независимо новые пары ключей he2 , d2 i, . . . , hel+1 , dl+1 i. Затем подписывает (алгоритмом S) последовательность hs (e2 )σ1 с ключом d, последовательность hs (e3 )σ2 с ключом d2 , и так далее. Последовательность hs (ei+1 )σi подписывается с ключом di . Последней подписывается последовательность hs (el+1 )σl с ключом dl (ключ el+1 использоваться не будет). Обозначим через s1 , . . . , sl полученную последовательность подписей. Общей подписью будет последовательность открытых ключей e2 , . . . , el+1 и последовательность подписей s1 , . . . , sl . Алгоритм проверки подписи состоит в применении алгоритма V с ключами e, e2 , . . . , el к сообщениям (соответственно) hs (e2 )σ1 , . . . , hs (el )σl−1 , hs (el+1 )σl и подписям s1 , . . . , s l . Теорема 47. Построенные пара алгоритмов S̃, Ṽ и случайная величи˜ являются протоколом электронной подписи одного сообщения на hẽ, di произвольной длины. Доказательство. Пусть противник атакует построенную систему подписи, используя схемы C̃, D̃, Ẽ. То есть, сначала он вычисляет x = σ1 . . . σl = C̃(α, e). 192 ГЛАВА 12. ПРОТОКОЛЫ ЭЛЕКТРОННОЙ ПОДПИСИ Затем получает подпись hs1 s2 . . . sl , e2 e3 . . . el+1 i под x, где s1 = S(d, hs (e2 )σ1 ), s2 = S(d2 , hs (e3 )σ2 ), ... sl = S(dl , hs (el+1 )σl ). После этого он сам вычисляет x0 = σ10 . . . σl00 = Ẽ(s, e, s1 s2 . . . sl ) и фальшивую подпись s0 = hs01 s02 . . . s0l0 , e02 e03 . . . e0l0 +1 i = D̃(s, e, s1 s2 . . . sl ). Атака успешна, если x0 не согласовано с x и V (e, hs (e02 )σ10 , s01 ) = 1, V (e2 , hs (e03 )σ20 , s02 ) = 1, ... V (el0 , hs (el0 +1 )σl00 , s0l0 ) = 1. Допустим для бесконечно многих почти всех n вероятность этого события больше ε = 1/poly(n). Лемма 19. Если атака успешна, то найдется такое 1 < j 6 min{l, l0 }, что ej 6= e0j , но hs (ej ) = hs (e0j ), или найдется такое 1 6 j 6 min{l, l0 }, что ej = e0j , но σj hs (ej+1 ) 6= σj0 hs (e0j+1 ). В формулировке этой леммы мы предполагаем, что e1 = e01 = e. Эта лемма утверждает, что у противника есть только две возможности подделать подпись в новой системе: первая заключается в том, чтобы отыскать e0j отличное от ej с тем же хэш-значением, что и у ej . Вторая возможность — подделать подпись в старой системе под сообщением σj0 hs (e0j+1 ), отличным от сообщения σj hs (ej+1 ), подписанного владельцем секретного ключа dj . Доказательство. Допустим, что утверждение леммы неверно. В частности, вторая возможность не реализуется для j = 1. Поскольку e1 = e01 = e, мы можем заключить, что σ1 hs (e2 ) = σ10 hs (e02 ), то есть σ1 и σ10 12.6. ПОСТРОЕНИЕ ОДНОРАЗОВОЙ СХЕМЫ ПОДПИСИ ОДНОГО СООБЩЕНИЯ ПРОИЗВО совпадают и hs (e2 ) = hs (e02 ). Пользуясь тем, что первая возможность не реализуется для j = 2, выводим, что e2 = e02 . Рассуждая по индукции, мы установим, что первые m = min{l, l0 } битов x и x0 совпадают и em+1 = e0m+1 . Это означает, что одно из слов x и x0 является началом другого, то есть, атака не является успешной. По лемме с вероятностью не меньше ε/2 то найдется такое 1 < j 6 min{l, l0 }, что ej 6= e0j , но hs (ej ) = hs (e0j ), или найдется такое 1 6 j 6 min{l, l0 }, что ej = e0j , но σj hs (ej+1 ) 6= σj0 hs (e0j+1 ) и V (e0j , σj0 hs (e0j+1 ), s0j ) = 1. В первом случае мы можем успешно атаковать семейство хэш-функций. Поскольку j ограничено некоторым полиномом r(n) для некоторого фиксированного j 6 r(n) с вероятностью не менее ε/2r(n) будет выполнено j 6 min{l, l0 }, ej 6= e0j , но hs (ej ) = hs (e0j ). Найдем первый элемент коллизии, сгенерировав случайный ключ исходной схемы; обозначим этот ключ через ej . Получив случайный номер хэш-функции s, сгенерируем случайную пару ключей e1 , d1 и дадим ее противнику, использующему схемы C̃, D̃, Ẽ. Он попросит нас подписать некоторое сообщение x. Мы подписываем его, генерируя нужное количество пар ключей. Когда же он выдаст фальшивую подпись s0 , возьмем в ней j-ый ключ e0j . Этот ключ и будет с вероятностью не меньше ε/2r(n) вторым элементом коллизии hs . Описанная атака на семейство хэш-функций вычисляется вероятностными схемами полиномиального размера. Зафиксировав в этих схемах подходящим образом используемые случайные биты, получим детерминированные атакующие схемы полиномиального размера. Пусть теперь с вероятностью не меньше ε/2 найдется такое j 6 min{l, l0 }, что ej = e0j , но σj hs (ej+1 ) 6= σj0 hs (ej+1 ). Опять, это событие имеет место с вероятностью не менее ε/2r(n) для некоторого фиксированного j 6 r(n). Будем атаковать систему подписи одного сообщения длины n + 1. Пусть нам дан открытый ключ, обозначим его через ej (он будет использован как j-ый ключ в подписи). Выберем случайно пару ключей e, d и хэш-функцию hs . Затем дадим ключ ẽ = he, si на вход схеме C̃. Подпишем выданное схемой сообщение σ1 . . . σl , генерируя новые пары ключей e2 , d2 , . . . , el , dl (кроме j-ой пары). А подпись под σj hs (ej+1 ) получим у Подписывающего одно сообщение длины n+1 закрытым ключом dj . Все подписи даем на вход схемам D̃, Ẽ. Схемы выдадут новое сообщение σ10 . . . σl00 и фальшивую подпись hs01 s02 . . . s0l0 , e02 e03 . . . e0l0 +1 i, про которые известно, что с вероятностью не менее ε/2r(n) выполнено ej = e0j , σj hs (ej+1 ) 6= σj0 hs (e0j+1 ) и V (e0j , σj0 hs (e0j+1 ), s0j ) = 1. То есть, σj0 hs (e0j+1 ) яв- 194 ГЛАВА 12. ПРОТОКОЛЫ ЭЛЕКТРОННОЙ ПОДПИСИ ляется сообщением, отличным от того, которое мы просили подписать, и подпись s0j под которым принимается с ключом ej = e0j . Осталось построить схему в которой условие x0 6= x успеха атаки не заменено на более сильное условие. Определим для каждого двоичного слова y его префиксный код ŷ следующим образом. Удвоим все биты y и d = 00111101. По y легко найти ŷ, и есприпишем 01 в конце, например, 011 ли одно из слов вида ŷ является началом другого слова такого же вида, то эти слова совпадают Модифицируем построенную систему подписи следующим образом. Будем вместо подписывания слова y подпишем его префиксный код ŷ (и при проверке будем проверять, подписано ли ŷ). Если два слова вида вида ŷ различны, то ни одно из них не является началом другого. Поэтому модифицированная система подписи удовлетворяет требованию (б) в его исходном виде. 12.7 Общий случай: подпись произвольного количества сообщений произвольной длины Конструкция Схему подписи произвольного количества сообщений произвольной длины можно изготовить, исходя из протокола одноразовой подписи сообщений произвольной длины и семейства псевдослучайных функций. А именно, пусть hK, S, V i — протокол одноразовой подписи сообщений любой длины (его мы далее будем называть “старым”, чтобы отличить от “нового”, который мы построим). Пусть l(n) — полином, ограничивающий количество случайных битов, нужных алгоритму генерации ключей K. Пусть fsn : {0, 1}∗ → {0, 1}l(n) — семейство ПСФ. В новом протоколе hK̃, S̃, Ṽ i алгоритм алгоритм K̃ запускает алгоритм K (с тем же параметром безопасности), который выдает некоторую пару he, di, и алгоритм генерации идентификатора псевдослучайной функции (с тем же параметром безопасности), который выдает идентификатор s псевдослучайной функции fsn . В качестве закрытого ключа алгоритм K̃ выдает пару hd, si, а в качестве открытого ключа — e. Подчеркнем, что s не включается в состав открытого ключа. Новый алгоритм подписи основан на идее “размножения ключей”. 12.7. ОБЩИЙ СЛУЧАЙ: ПОДПИСЬ ПРОИЗВОЛЬНОГО КОЛИЧЕСТВА СООБЩЕНИЙ ПРОИ Применим алгоритм K для генерации двух новых открытых ключей e0 , e1 вместе с парными к ним закрытыми ключами d0 , d1 . Чтобы проверяющий мог им доверять, подпишем конкатенацию e0 e1 с помощью исходного закрытого ключа и сообщим подпись и сами ключи адресату. Используя новые закрытые ключи d0 , d1 , можно подписать уже четыре новых открытых ключа, e00 , e01 , e10 , e11 , и так далее. Таким образом, можно считать что в нашем распоряжении находятся 2n новых ключей eα — для всех бинарных слов α длины n — любой из них использовать для подписи данного сообщения. При этом в состав подписи нужно включить саму последовательность α и ключи eβ для всех непустых начал слова α, а также подписи под ними. Строку α, которую мы дальше будем называть идентификатором сообщения, алгоритм подписи может выбирать случайно — тогда вероятность того, что при атаке идентификаторы двух разных сообщений совпадут, будет ничтожна. Поэтому этим событием можно пренебречь, а значит каждый из ключей dα (для всех строк α длины n) будет использован не более одного раза. (А можно идентификатор выбирать детерминированным образом, исходя из сообщения, — этот способ изложен в виде задачи, приведённой после доказательства.) Однако нам нужно еще, чтобы и все остальные ключи dβ , а также исходный ключ d, использовались только один раз. Описанный выше алгоритм подписи этого не гарантирует. Действительно, допустим атакующий попросил нас подписать два сообщения. Тогда в первый раз мы подпишем с помощью исходного ключа d одну конкатенацию ключей e0 e1 , а во второй раз — другую. Исправить этот недостаток можно использованием псевдослучайной функцию fs . А именно, запустим алгоритм K с параметром безопасности n, а в качестве случайных битов дадим ему биты слова fs (α), где α — любая непустая строка длины не более n. Полученную пару ключей и будем использовать в качестве вышеупомянутых ключей (dα , eα ). Обозначение (eΛ , dΛ ), где Λ обозначает пустое слово, будем использовать для исходной пары ключей. Если длина α меньше n, то ключ dα мы будем использовать только для подписи конкатенации ключей eα0 eα1 , а при |α| = n — только для подписи самого сообщения. Напомним, что мы подписываем сразу конкатенацию ключей, поскольку иначе пришлось бы использовать ключ dα дважды — для подписи eα0 и для подписи eα1 . Итак, сообщение x подписываем так. Выбираем случайным образом идентификатор α (бинарную строку длины n). Затем алгоритмом S с ключом dα подписываем x и включаем полученную строку в состав под- 196 {th-sig} ГЛАВА 12. ПРОТОКОЛЫ ЭЛЕКТРОННОЙ ПОДПИСИ писи под x. Кроме того, в состав подписи включаем eγ0 eγ1 и S(dγ , eγ0 eγ1 ) для всех собственных начал (включая пустое) строки α и сам идентификатор α. Проверяется новая подпись так: пусть нам дана последовательность, состоящая из идентификатора α, n + 1-ой подписи s0 , . . . , sn для старой схемы и n пар ключей, которые мы будем обозначать через e0γ0 e0γ1 , где γ пробегает все собственные начала α. Мы используем штрихи, поскольку не предполагаем заранее, что подпись честная. Таким образом, для любого непустого начала β последовательности α у нас имеется ключ e0β . Также положим e0Λ равным данному нам открытому ключу. Затем алгоритмом V с ключом e0α проверяем, что sn является подлинной подписью под данным нам сообщением, а так же, что для всех собственных начал γ строки α слово s|γ| является подлинной подписью под e0γ0 e0γ1 с ключом e0γ . Если все проверки закончились успешно, то подпись признается, а иначе отвергается. Теорема 48. Построенная схема hK̃, S̃, Ṽ i является схемой подписи произвольного числа сообщений. Доказательство. Условие (а) очевидно выполнено. Проверим условие (б). Пусть имеется схема Cn , которая для бесконечно многих n атакует новую схему с вероятностью успеха ε = 1/poly(n). Заменим в новой схеме ПСФ fs на случайную функцию g : {0, 1}∗ → {0, 1}l(n) . Подписывающий алгоритм S̃ вместе с атакующей схемой C и проверяющим алгоритмом Ṽ можно рассматривать как вероятностную схему для проверки случайности функции fs : имея функцию fs в качестве оракула, эта схема генерирует ключи e, d и моделирует атаку схемы C на новую систему подписи с ключами (d, s), e (заметим, что само s при моделировании атаки знать не нужно). После окончания атаки схема выдает 1, если атака прошла успешно. В силу надежности семейства ПСФ, в результате замены fs на случайно выбранную функцию g вероятность успеха атаки изменится незначительно, поэтому для бесконечно многих n она не меньше ε/2. Таким образом, мы можем считать далее, что в состав закрытого ключа ẽ вместо идентификатора псевдослучайной функции s входит случайно выбранная функция g. Другими словами, мы можем считать, что все ключи (eβ , dβ ) независимо друг от друга порождаются старым алгоритмом K. Нам нужно научиться с помощью схемы C научиться атаковать исходный протокол одноразовой подписи. Объясним сначала неформаль- 12.7. ОБЩИЙ СЛУЧАЙ: ПОДПИСЬ ПРОИЗВОЛЬНОГО КОЛИЧЕСТВА СООБЩЕНИЙ ПРОИ но, каким образом мы будем использовать схему C для атаки исходного протокола. Смоделируем мысленно атаку схемы C на новый протокол подписи, выбирая самостоятельно случайным образом исходную пару ключей и случайную функцию g. А именно, сначала запустим алгоритм K и найдем исходную пару ключей, которую обозначим (eΛ , dΛ ). Затем передаем eΛ схеме C. После этого схема дает нам на подпись сообщение и мы подписываем его, используя для генерации ключей случайную функцию g. Так же поступаем со вторыми и последующими сообщениями. Как мы уже отмечали, использование случайной функции g означает, что каждая новая пара ключей (eα , dα ), которая нам понадобилась, генерируется независимо от предыдущих. Но при этом, если при подписывании некоторого сообщения мы сгенерировали один раз пару ключей (eα , dα ), а затем позже нам понадобилась еще раз пара ключей (eα , dα ), то мы не генерируем ее заново, а используем вторично ту же самую (для этого мы запоминаем все сгенерированные пары ключей). В какой-то момент атакующая схема сообщит фальшивое сообщение x и фальшивую подпись s̃ под ним. После этого моделирование останавливается. Будем считать моделирование успешным, если пара (фальшивое сообщение, фальшивая подпись) прошла проверку алгоритмом Ṽ . Как мы уже говорили, моделирование заканчивается успешно с вероятностью не меньше εn /2 (для бесконечно многих n). Будем называть строку α использованной (в моделировании), если мы в ходе него сгенерировали пару ключей (eα , dα ). Допустим, что моделирование закончилось успехом. Добавим фальшивое сообщение x в конец фальшивой подписи s̃. Изменённая таким образом s̃ состоит некоторого идентификатора β (двоичной строки длины n) и n + 1 пары (подпись, сообщение) для исходной системы подписи. В последней, n + 1-ая паре сообщение состоит из x, а в первых n парах сообщение состоит из пары ключей. Будем эти ключи, аналогично настоящим ключам, использованным нами, обозначать через e0α , где α обозначает соответствующее начало β или его брата. Положим также e0Λ равным ключу eΛ . Раз атака успешна, все пары проходят проверку алгоритмом S с подходящими ключами, то есть, j + 1-ая пара фальшивой подписи признана подлинной алгоритмом V с ключом e0β[1...j] . Тогда идентификатор β, c которого начинается фальшивое сообщение, имеет начало α = β[1 . . . j] такое, что 198 ГЛАВА 12. ПРОТОКОЛЫ ЭЛЕКТРОННОЙ ПОДПИСИ • α является использованным, • e0α = eα , • с помощью ключа dα мы ничего не подписывали или подписанное с его помощью сообщение отличается от сообщения в j + 1-ой паре фальшивой подписи (напомним, что первый компонент этой пары прошел проверку как подпись под этим сообщением). Действительно, если мы вообще ничего не подписывали в ходе атаки, то можно положить α равным пустому слову. Иначе, мы с ключом dΛ подписали слово e0 e1 . Если слово e00 e01 не совпадает со словом e0 e1 , то опять же можно положить α равным пустому слову. Иначе положим α равным первому биту β. Заметим, что e0α = eα , поскольку e00 e01 = e0 e1 . Дальше продолжаем рассуждать по индукции. На очередном шаге у нас имеется некоторое начало α фальшивого идентификатора β, которое использовано и для которого eα = e0α . Если ни один из использованных нами идентификаторов не начинается на α, то мы с ключом dα ничего не подписывали и тем самым α годится. Иначе α является собственным началом как слова β, так и некоторого использованного нами идентификатора. Поэтому мы с ключом dα подписали слово eα0 eα1 , а схема — слово e0α0 e0α1 . Если эти слова различны, то опять же текущее α годится. Иначе приписываем к α еще один бит β, сохраняя инвариант. Рано или поздно мы найдем нужное начало, поскольку в последней паре из фальшивой подписи сообщение отличается от всех подписанных нами сообщений. Будем такие α, ключ eα и j-ую пару слов из фальшивой подписи называть особыми. Если особых пар в фальшивой подписи несколько, то будем считать особой, скажем, только первую из них. Особая пара успешно прошла проверку алгоритмом V со случайно выбранным ключом eα и второй компонент в ней не был подписан нами в ходе моделирования атаки. Это означает, что схема C умеет подписывать выбранным нами случайным ключом не подписанные нами сообщения. Нам надо научиться использовать это ее свойство. Теперь мы, наконец, объясним, как с помощью этого моделирования можно атаковать исходный протокол подписи. Оценим сверху общее количество пар (открытый ключ, закрытый ключ), которое может быть использовано в ходе моделирования атаки C. Ясно, что их количество не превосходит некоторого полинома p(n). (Нам будет достаточно столько пар ключей, какова суммарная длина всех сообщений, которые нам 12.7. ОБЩИЙ СЛУЧАЙ: ПОДПИСЬ ПРОИЗВОЛЬНОГО КОЛИЧЕСТВА СООБЩЕНИЙ ПРОИ придётся подписать. А последняя ограничена размером схемы Cn .) Пусть нам дан открытый ключ для атаки, сгенерированной алгоритмом K. Выбираем случайным образом число i от 1 до p(n) (с равномерным распределением). Затем запускаем моделирование атаки схемы C, описанное выше со следующим изменением. Когда понадобится в i-ый раз запускать алгоритм K для порождения очередной пары ключей, мы этого не делаем. Вместо i-ого открытого ключа мы используем данный нам открытый ключ, а когда (и если) потребуется использовать использовать парный к нему закрытый ключ, мы просто попросим владельца этого закрытого ключа подписать требуемое сообщение. Это произойдет не более одного раза, если пренебречь тем, что какие-то два идентификатора совпали — вероятность этого события в самом деле пренебрежимо мала. Если атака схемы C оказалась успешной, причем нам повезло и особый ключ равен данному нам для атаки ключу, то выдаем особую пару на выход. Докажем, что вероятность успеха этой атаки не меньше ε/2p(n). Сначала заметим, что сделанная нами подмена в i-ой паре, никак не повлияла на вероятность успеха моделируемой атаки. Действительно, с точки зрения схемы C мы действуем ровно таким же образом, как в исходном моделировании атаки. Замена i-ой пары ключей на данный нам ключ никак не влияет на распределение открытых ключей, поскольку данный нам ключ выбирается случайно и независимо от остальных сгенерированных ключей. Кроме того, последовательность пар ключей после подмены и само число i независимы (в смысле теории вероятностей). В самом деле, при любом фиксированном i последовательность, полученная в результате подмены, так же распределена, как и до подмены. Наконец, все подписи, сообщенные схеме C, были получены применением алгоритма S с подлинными ключами. Итак, с вероятностью не менее ε/2 фальшивая подпись будет признана подлинной и содержит особую пару. Кроме того, в силу независимости i и последовательности пар ключей, при любой фиксированной последовательности пар ключей, для которой существует особое α, с вероятностью 1/p(n) число i окажется равным номеру особого ключа eα в порядке генерации пар ключей. Поэтом с вероятностью ε/2p(n) нам повезет и особый ключ окажется равным данному нам для атаки ключу. Задача 78. Докажите, что для теоремы 48 достаточно требования обычной неотличимости семейства ПСФ. 200 ГЛАВА 12. ПРОТОКОЛЫ ЭЛЕКТРОННОЙ ПОДПИСИ Задача 79. Будем в многоразовой схеме подписи в качестве идентификатора сообщения использовать его префиксный код. Докажите, что теорема 48 останется верной. Докажите, что если в качестве идентификатора использовать сообщения использовать само сообщение, то теорема 48 перестанет быть верной. Задача 80. В предыдущей задаче длина подписи зависит от длины сообщения. Модифицируйте систему подписи из предыдущей задачи так, чтобы длина подписи зависела только от параметра безопасности (предполагая, что это верно для исходной одноразовой схемы). Глава 13 Конфиденциальные вычисления Пусть у Алисы имеется строка x, а у Боба строка y. Пусть еще имеется полиномиально вычислимая функция f (x, y). Нужно придумать протокол общения, выполнив который Алиса и Боб узнают f (x, y) и ничего больше. В частности, Боб не узнает x, а Алиса не узнает y. Например, они хотят узнать, кто из них богаче, не разглашая своего состояния. В более общей формулировке имеются две функции f (x, y) и g(x, y). После выполнения протокола Алиса должна узнать только f (x, y), а Боб только g(x, y). Будем называть протоколом конфиденциального вычисления пары f, g пару полиномиальных вероятностных алгоритмов (A, B), получающих на вход параметр безопасности в единичной кодировке и слова x, y (алгоритм A получает на вход x, а B — y) удовлетворяющую следующим свойствам. Полнота: Для любых последовательностей слов xn , yn полиномиальной длины с приблизительно единичной вероятностью после общения A(x) и B(y) алгоритм A напечатает f (x, y), а алгоритм A напечатает g(x, y). Если вероятность этого события в точности равна 1, то мы будем говорить, что выполнено условие сильной полноты. Вторым условием будет неразглашение информации. Его можно сформулировать в двух вариантах: первый вариант предполагает, что во время общения Алиса и Боб не отклоняются от протокола (так называемые “полу-честные”, semi-honest, игроки), а во втором варианте они могут отклоняться от протокола (“нечестные”, malicious, игроки). Неразглашение информации для полу-честных игроков. Неразглашение информации алгоритмом B: существует полиномиальный вероят201 202 ГЛАВА 13. КОНФИДЕНЦИАЛЬНЫЕ ВЫЧИСЛЕНИЯ ностный алгоритм S, который получает на вход параметр безопасности и две строки и такой, что для любой последовательности строк xn , yn полиномиальной длины случайная величина S(xn , f (xn , yn )) вычислительно неотличима от пары hr, c(A(xn , r), B(yn ))i, состоящей из случайных битов r алгоритма A и протокола общения между A с входом xn и B с входом yn . Неразглашение информации алгоритмом A: существует полиномиальный вероятностный алгоритм T , который получает на вход параметр безопасности и две строки и такой, что для любой последовательности строк xn , yn полиномиальной длины случайная величина T (yn , g(xn , yn )) вычислительно неотличима от hr, c(A(xn ), B(yn , r)i. Иными словами, если Алиса и Боб во время общения ведут себя честно, но после общения становятся не в меру любопытными, они не смогут извлечь никакой дополнительной информации, вспоминая проведенный протокол общения. Неразглашение информации для нечестных игроков. Неразглашение информации алгоритмом B: Существует полиномиальный вероятностный алгоритм S, который получает на вход параметр безопасности и СФЭ и такой, для любой последовательности строк yn полиномиальной длины и любой последовательности схем A∗n полиномиального размера алгоритм S на входе yn , A∗n находит некоторую строку xn , и после того, как ему сообщат f (xn , yn ), выдает на выход случайную величину, вычислительно неотличимую от протокола общения между A∗n и B(yn ), c(A∗n , B(yn )). Неразглашение информации алгоритмом A формулируется симметричным образом. Если функция f тривиальна (то есть, всюду равна пустому слову), то мы будем говорить, что о конфиденциальном вычислении функции g. Замечание 17. Заметим, что из неразглашения для нечестных игроков следует неразглашение для полу-честных игроков лишь в ослабленном виде. Для неразглашения алгоритмом B ослабленное условие такое: симулятор, получив на вход случайные биты r алгоритма A и его вход x, может найти некоторое слово x∗ и, узнав f (x∗ , y), породить случайную величину, вычислительно неотличимую от hr, c(A(x, r), B(y))i. Для этого симулятор для нечестных игроков надо применить к схеме, моделирующей работу алгоритма A(x, r). Довольно странно, что этому симулятору может понадобиться значение f (x∗ , y), отличное от f (x, y). Во всех примерах, которые у нас будут, симулятор со схемой A(x, r) на входе будет выдавать x∗ = x. Можно было бы включить это ограничение в требова- 13.1. ЗАБЫВАЮЩАЯ ПЕРЕДАЧА (OBLIVIOUS TRANSFER) 203 ние неразглашения для нечестных игроков, но неясно, зачем это нужно. 13.1 Забывающая передача (oblivious transfer) Так называется протоколы конфиденциального вычисления функции f , где f (x, i) = xi (i-й бит x). Если длина x предполагается фиксированной и равной m, то такие протоколы называются OTm 1 . Сначала предположим, что требование неразглашения информации должно быть выполнено для полу-честных игроков. Протокол забывающей передачи можно изготовить из улучшенной проверяемой перестановки с секретом. Пусть дана такая такая перестановка fe (x). Применив теорему ЛевинаГолдрайха, мы можем считать, что у нас есть еще и трудный бит he (x) для этой функции. Причём мы можем считать, что этот бит трудно вычислить даже по случайным битам, использованным при генерации fe (x) по e. По лемме Яо (Лемма 7) пара, состоящая из he (fe−1 (y)) и случайных битов r, использованных при генерации y вычислительно неотличима от пары (случайный бит, r) при известном e. Теорема 49. Если существует улучшенная односторонняя перестановка с секретом, то существует и протокол забывающей передачи для получестных игроков. Доказательство. Пусть входом Алисы является строка x длины m, а входом Боба — число i от 1 до m. Протокол. Алиса выбирает случайно пару e, d и посылает e Бобу. Боб, запустив m раз алгоритм порождения слов из De , выбирает m случайных строк y1 , . . . , ym из De , применяет к i-й строке функцию fe (а к остальным строкам не применяет) и посылает полученные m строк z1 , . . . , zm Алисе. Алиса, получив кортеж из m строк z1 , . . . , zm , посылает обратно Бобу кортеж σ1 = he (f −1 (z1 )) ⊕ x1 , . . . , σm = he (f −1 (zm )) ⊕ xm . Напомним, что Алисе известно d и поэтому она может обращать fe . Наконец, Боб получив кортеж из m битов σ1 , . . . , σm , выдает σi ⊕ he (yi ). 204 ГЛАВА 13. КОНФИДЕНЦИАЛЬНЫЕ ВЫЧИСЛЕНИЯ По построению, zi = fe (yi ), поэтому σi = he (yi ) ⊕ x[i], а значит Боб в самом деле выдает x[i]. Поэтому этот протокол удовлетворяет условию полноты. Проверим условие неразглашения информации. Сразу отметим, что для этого протокола оно выполнено только для полу-честных игроков. Действительно, нечестный Боб мог бы применить функцию fe не только к yi , но и ко всем остальным строкам. Тогда бы он мог узнать аналогичным образом и все остальные биты x, а не только i-й. Кроме того, нечестная Алиса могла послать Бобу слово e, для которого fe вообще не определена. Алгоритм вычисления fe в этом случае выдаёт неизвестно что, например, пустое слово. Поэтому, может получиться, что изучив слова z1 , . . . , zm , Алиса найдёт i. Сначала проверим, что Боб не разглашает информации. Действительно, последнее сообщение делается Алисой, поэтому достаточно проверить что первые два сообщения из протокола общения A(x) и B(i) можно сгенерировать, не зная i. Первое сообщение есть случайно выбранный открытый ключ e, а второе равно (y1 , . . . , fe (yi ), . . . , ym ). Поскольку fe — перестановка и распределение yi статистически неотличимо от равномерного распределения на De , второе сообщение статистически неотличимо от (y1 , . . . , yi , . . . , ym ) (при любом фиксированном e), а последнее можно сгенерировать, не зная i. Теперь проверим, что Алиса разглашает только xi . Для простоты обозначений предположим, что m = 2. Пусть G(e, r) обозначает выход алгоритма генерации равномерного распределения на De при случайном числе r на его входе. Пусть Боб использовал случайные биты r1 , r2 для генерации y1 , y2 . Нам нужно научиться порождать случайную величину, вычислительно неотличимую от {eq-given} r1 , r2 , e, z1 , z2 , x1 ⊕ he (fe−1 (z1 )), x2 ⊕ he (fe−1 (z2 )) (13.1) зная только i и xi . Здесь ( (fe (y1 ), y2 )), если i = 1, (z1 , z2 ) = (y1 , fe (y2 )), если i = 2, где y1 = G(e, r1 ), y2 = G(e, r2 ). Для этого запускаем алгоритм генерации ключей e, d и выбираем случайно r1 , r2 . После этого выдаем {eq-simulated} r1 , r2 , e, z1 , z2 , σ1 , σ2 , (13.2) 13.1. ЗАБЫВАЮЩАЯ ПЕРЕДАЧА (OBLIVIOUS TRANSFER) 205 где z1 , z2 определяются точно так же, как и раньше, а ( (x1 ⊕ he (y1 ), b), если i = 1, (σ1 , σ2 ) = (b, x2 ⊕ he (y2 ), если i = 2, где b — случайный бит. Почему эта случайная величина вычислительно неотличима от (13.1)? Пусть, скажем, i = 2. Тогда случайные величины, неотличимость которых нужно доказать, имеют вид r1 , r2 , e, fe (y1 ), y2 , x1 ⊕ he (y1 ), x2 ⊕ he (fe−1 (y2 )) (13.3) {eq83} и r1 , r2 , e, fe (y1 ), y2 , x1 ⊕ he (y1 ), b. Разница у них только в последнем компоненте. Ясно, что в последнем компоненте второй случайной величины можно x2 ⊕ b заменить просто на b, не изменив её распределения. Получится случайная величина r1 , r2 , e, fe (y1 ), y2 , x1 ⊕ he (y1 ), x2 ⊕ b. (13.4) {eq84} Нам известно, что случайные величины r2 , e, he (fe−1 (y2 )) и r2 , e, b вычислительно неотличимы. Нетрудно заметить, что случайные величины (13.3) и (13.4) могут быть получены из этих случайных величин применением некоторой вероятностной схемы полиномиального размера. Поэтому они также вычислительно неотличимы. {th-obl} Теорема 50. Если существует улучшенная односторонняя перестановка с секретом и для любого полиномиально разрешимого отношения Rn (x, y) существует неразглашающий протокол знания свидетелей со свойством сильной полноты, то существует и протокол забывающей передачи для нечестных игроков. Доказательство. Будем обозначать через (e, d) открытый и закрытый ключи данного семейства улучшенных перестановок с секретом fe . В доказательстве нам понадобится также существование протокола привязки (R, S, T ), очевидно, гарантируемое условием теоремы. 206 ГЛАВА 13. КОНФИДЕНЦИАЛЬНЫЕ ВЫЧИСЛЕНИЯ Протокол. 1) Алиса выбирает случайно пару e, d с помощью алгоритма генерации ключей K. Если генерация окончилась неудачно, то дальше Алиса и Боб посылают только тривиальные сообщения, скажем, пустые. Фактически это означает, что протокол на этом заканчивается. Иначе Алиса посылает e Бобу. 2) Алиса доказывает Бобу без разглашения информации, что она знает случайные биты, для которых алгоритм генерации ключей K выдаст ключ e (тем самым доказывая, что fe есть перестановка De ). Если доказательство закончилось безуспешно (алгоритм проверки выдал 0), то протокол на этом обрывается. Иначе Боб хочет, как это было в протоколе для полу-честных игроков, выбрать m случайных строк y1 , . . . , ym из De , применить к i-ой строке функцию fe (а к остальным строкам не применять) и послать полученные слова z1 , . . . , zm Алисе. При он хочет без разглашения информации убедить Алису, что он действовал честно. В частности, убедить Алису в том, что при при выборе z1 , . . . , zm он использовал случайные биты. Для этого он дает Алисе участвовать в бросании монеток, используя протокол бросания монетки по телефону. Далее описано подробно, как именно это делается. Пусть для честного изготовления z1 , . . . , zm нужна случайная строка r известной обоим длины l. Обозначим через F (i, r, e) последовательность z1 , . . . , zm , которая пересылалась бы в протоколе для полу-честных игроков при использовании случайных битов r. Алиса и Боб вместе находят строку r, выполняя протокол бросания монетки по телефону l раз (пункты 3–4). 3) Боб выбирает случайную последовательность b длины l и посылает её Алисе, используя протокол привязки. 4) Алиса выбирает случайную последовательность a длины l и посылает её Бобу. 5) Боб посылает Алисе z = (z1 , . . . , zm ) = F (i, a ⊕ b, e). 6) Боб доказывает Алисе с нулевым разглашением, что он знает i, b и ключ k, для которых посланная Алисе строка z в 13.1. ЗАБЫВАЮЩАЯ ПЕРЕДАЧА (OBLIVIOUS TRANSFER) 207 самом деле равна F (i, a⊕b, e) и алгоритм раскрытия сундучка R, получив на вход привязку из пункта 3 и ключ k, выдаёт b. Если протокол закончился неудачей (алгоритм проверки выдал 0), то оба алгоритма посылают в дальнейшем только пустые сообщения. 7) Иначе Алиса посылает Бобу слово σ длины m, j-ый бит равен he (fe−1 (zj )) ⊕ xj . 8) Наконец, Боб выдает σi ⊕ he (yi ). Полнота построенного протокола очевидна. Проверим неразглашение. Неразглашение информации Алисой: Пусть Боб применяет некоторый алгоритм, реализуемый схемой полиномиального размера Bn∗ и пусть фиксирована последовательность входов xn полиномиальной длины для Алисы. Единственное место, в протоколе, в котором действия Алисы зависят от секретного входа, это пункт 7. Поэтому до этого места симулятор просто запускает алгоритм Алисы и записывает в протокол посланные ей и схемой Боба сообщения. При этом делается попытка извлечь из схемы, используемой Бобом в пункте 6 (исходной схемы, в которую запаяны все сделанные сообщения), некоторые i, b и k такие, что z, посланное в пункте 6, равно F (i, a ⊕ b, e) и алгоритм раскрытия сундучка R, получив на вход привязку из пункта 3 и k выдаёт b. По условию вероятность успешного извлечения не меньше чем p+αn , где p — вероятность того, что протокол доказательства с нулевым разглашением выдал 1, а αn — пренебрежимо малая величина. Если протокол доказательства с нулевым разглашением выдал 0 или извлечение прошло неудачно, то моделирование продолжается дальше с тривиальными сообщениями Алисы. Иначе симулятор запрашивает xi и записывает в протокол последовательность из m случайных битов, в которой он заменяет i-ый бит на xi ⊕ he (yi ), где yi получено с помощью случайных битов a ⊕ b. Описание работы симулятора закончено. Почему полученный протокол общения вычислительно неотличим от настоящего? Пусть для простоты обозначений m = 2. При известных e и случайных битах r, использованных для генерации y, трудный бит he (fe−1 (y(r)), вычислительно неотличим от случайного бита. По требованию недвусмысленности привязки, существует слово b1 b2 длины l, для которого алгоритм раскрытия сундучка выдает b1 b2 или ⊥, причем b1 b2 208 ГЛАВА 13. КОНФИДЕНЦИАЛЬНЫЕ ВЫЧИСЛЕНИЯ зависит только от сообщений сделанных до шага 4. При известном e и b1 , b2 для j = 1, 2 слово rj = aj ⊕ bj имеет равномерное распределение, поэтому he (fe−1 (yj (rj ))) неотличимо от случайного бита при известных e, bj , aj . В самом деле пусть c1 , c2 — случайные биты. При любом j = 1, 2 случайные величины e, aj ⊕ bj , he (fe−1 (y(aj ⊕ bj )), bj и e, aj ⊕ bj , cj , bj вычислительно неотличимы. Поэтому вычислительно неотличимыми являются и случайные величины e, a1 ⊕ b1 , he (fe−1 (y(a1 ⊕ b1 )), b1 , a2 ⊕ b2 , he (fe−1 (y(a2 ⊕ b2 )), b2 и e, a1 ⊕ b1 , c1 , b1 , a2 ⊕ b2 , c2 , b2 . Отсюда следует и неотличимость случайных величин e, a1 , he (fe−1 (y(a1 ⊕ b1 )), a2 , he (fe−1 (y(a2 ⊕ b2 )) и e, a1 , c1 , a2 , c2 , поскольку они являются легко вычислимыми функциями от предыдущих. Всё, что Алиса посылает Бобу, есть функция, вычислимая схемой полиномиального размера, от e, a1 , a2 . Поэтому если заменить he (fe−1 (y2−i (r2−i ))) на случайный бит, то полученный протокол беседы будет вычислительно неотличим от исходного. Осталось заметить, что после такой замены мы как раз получим протокол, выданный симулятором. Неразглашение информации Бобом: Пусть Алиса применяет некоторый алгоритм, реализуемый схемой полиномиального размера A∗n и пусть фиксирована последовательность входов in для Боба. Симулятор просто моделирует общение алгоритма Боба со схемой A∗n , считая секретный вход Боба равным, скажем, 1. Почему полученный протокол общения вычислительно неотличим от настоящего? Рассмотрим два случая. Первый случай. Слово e, посланное Алисой в первом раунде, не могло быть сгенерировано алгоритмом K. Тогда с приблизительно единичной вероятностью доказательство в пункте 2 закончится неудачей, и в дальнейшем сообщения Боба пустые, поэтому не зависят от его входа. 13.1. ЗАБЫВАЮЩАЯ ПЕРЕДАЧА (OBLIVIOUS TRANSFER) 209 Первый случай. Слово e, посланное Алисой в первом раунде, могло быть сгенерировано алгоритмом K. Тогда fe является перестановкой De . Давайте изменим образ действия Боба так, чтобы в пункте 3 он привязывался к слову b из одних нулей, а не к тому, который он получил, бросая монетку. Протокол общения, который получится в этому случае, вычислительно неотличим от исходного, поскольку алгоритм Боба T , примененный в пункте 3, не разглашает информации. Поэтому достаточно доказать, что протоколы общения для этого нового алгоритма Боба с A∗ вычислительно неотличимы друг от друга при i = 1, 2. Последовательность a ⊕ b равномерно распределена, поскольку b выбирается независимо от a (мы можем считать, что Боб бросает монетку после Алисы). Поэтому последовательности z при разных секретных входах Боба i вычислительно неотличимы друг от друга. Поэтому протоколы общения на шагах 1–5 вычислимо неотличимы друг от друга при разных i. В дальнейшем мы выполняем неразглашающий алгоритм, секретным входом которого можно считать i, все предшествующие сообщения и случайные биты, использованные ранее (из них он может восстановить k, a, b). Поэтому мы можем воспользоваться теоремой о неразглашении при последовательном выполнении. {r-comp} Замечание 18. Заметим, что условия теоремы гарантируют существование алгоритма привязки, удовлетворяющего требованию сильной полноты, поэтому мы можем предполагать, что использованный протокол привязки имеет это свойство. Допустим, что и использованный протокол доказательства с нулевым разглашением также имеет это свойство. К сожалению, всё это ещё не гарантирует, что построенный в доказательстве теоремы протокол также удовлетворяет требованию сильной полноты. Причина кроется в том, что на первом шаге с ненулевой вероятностью Алиса может не найти ключа e. Однако это единственная причина. Поэтому если Алиса действует честно, а Боб действует честно за исключением выбора случайных битов (то есть, случайные биты, нужные его алгоритму он выбирает по своему усмотрению, используя свой вход и всю информацию, полученную от Алисы к данному моменту, а в остальном следует своему алгоритму). Тогда алгоритм Боба выдаст xi с приблизительно единичной вероятностью. 210 ГЛАВА 13. КОНФИДЕНЦИАЛЬНЫЕ ВЫЧИСЛЕНИЯ 13.2 Конфиденциальное вычисление произвольной полиномиально вычислимых функции Пусть имеется полиномиально вычислимая последовательность функций fn : {0, 1}k(n) × {0, 1}l(n) → {0, 1}. Мы построим алгоритм конфиденциального вычисления пары функций Λ, fn (x, y) (то есть, Алиса не узнает ничего, а Боб узнаёт fn (x, y), но не больше). В качестве исходного примитива нам понадобится протокол забывающей передачи OT41 для нечестных противников, удовлетворяющий замечанию 18. {prot-conf} Протокол. 1) Сначала Алиса и Боб строят схему Cn полиномиального размера, вычисляющую fn . Пусть x1 . . . xk — входное слово Алисы, а y1 . . . yl — входное слово Боба. Обозначим через s обозначает общее число проводников схемы Cn (входы схемы x1 , . . . , xk , y1 . . . yl также считаются её проводникам). Алиса и Боб по очереди вычисляют для каждого проводника zi пару булевских переменных ai , bi таких, что ai ⊕ bi = zi . Причём делают они это таким образом, что для каждой переменной zi , за исключением входных переменных, Алиса знает ai , но не знает bi , а Боб наоборот знает bi , но не знает ai . 2) Для этого производится инициализация: Алиса выбирает k случайных бит a1 . . . ak и посылает Бобу b1 = a1 ⊕ x1 . . . ak ⊕ xk . Аналогично, Боб выбирает l случайных бит bk+1 . . . bk+l и посылает Алисе ak+1 = bk+1 ⊕ y1 . . . bk+l ⊕ yl . Теперь у Алисы и Боба есть переменные ai и bi такие, что ai ⊕ bi = zi для всех входных переменных zi . Ни Алиса, ни Боб в дальнейшем не будут использовать сами входные переменные, вместо них Алиса будут использовать ai , а Боб bi . 3) После этого для всех i = k +l+1, . . . , s Алиса и Боб находят ai , bi так чтобы ai ⊕bi = zi . Для этого они выполняют для каждого такого i следующие. Пусть zi получается из каких-то проводников схемы zj , zm какой-то бинарной операцией, скажем ∧ (случаи других бинарных операций или унарных операций аналогичны). Тогда Алиса выбирает случайным образом ai и 211 13.2. ВЫЧИСЛЕНИЕ ПРОИЗВОЛЬНЫХ ФУНКЦИЙ забывающе пересылает Бобу {eq-ot} bi = ai ⊕ [(aj ⊕ bj ) ∧ (am ⊕ bm )]. (13.5) Переменные aj , am стали известны Алисе на предыдущих шагах, а переменные bj , bm стали известны Бобу. Алиса не знает bj , bm , поэтому она формирует четыре бита, по одному биту на каждое из четырех возможных значений пары bj , bm . Точнее Алиса и Боб выполняют протокол OT41 в котором входом Алисы является четверка битов, в котором бит с номером bj bm определяемая равенством (13.5), а входом Боба является номер bj bm в двоичной записи. Заметим, что Боб узнаёт бит bi , задаваемый равенством (13.5), а этот бит равномерно распределён и не зависит от всех предыдущих сообщений. То есть, по существу, Боб не узнает ничего. И Алиса ничего не узнаёт, но вместе они теперь знают ai , bi , для которых ai ⊕ bi = zi . 4) Наконец Алиса сообщает Бобу as ; теперь Боб может вычислить zs = as ⊕ bs = fn (x, y) и выдаёт его в качестве результата протокола. Теорема 51. Построенный протокол является протоколом конфиденциального вычисления функции fn для получестных противников. Более того, алгоритм Боба имеет нулевое разглашение (для нечестного противника). Доказательство. Алгоритм Боба состоит из последовательного выполнения неразглашающих алгоритмов. Поэтому последнее утверждение следует из Замечания 16 на стр. 148. Полнота протокола очевидна. Объясним, почему алгоритм Алисы разглашает только f (x, y). Симулятор, получив на вход f (x, y), случайные биты Боба и его вход y, посылает со стороны Алисы случайные биты, а со стороны Боба в точности то же, что должен посылать Боб. Затем симулятор применяет s − k − l раз симулятор для протокола забывающей передачи. При этом в качестве передаваемого бита, который этот симулятор запросит, ему даётся случайный бит. Поскольку и в реальном протоколе этот бит случаен, полученный на шагах 2,3 симулированный протокол вычислительно неотличим от настоящего. На последнем пятом шаге бит as , переданный Алисой, удовлетворяет соотношению bs = as ⊕zs , 212 ГЛАВА 13. КОНФИДЕНЦИАЛЬНЫЕ ВЫЧИСЛЕНИЯ то есть as = bs ⊕ zs , где bs — случайный бит, который был выбран симулятором в самом конце четвертого шага. Этот бит симулятор не может выбирать случайно, тут ему как раз и понадобится zs = f (x, y). Недостатком этого протокола является то, что при нечестном поведении Боба Алиса может разгласить совсем не то, что разрешено. Напомним, что ей разрешено разгласить f (x, y) для какого-то одного y. Пусть, скажем, f (x, y) не зависит от y и равно x1 ∧ x2 . Допустим, Боб действует честно на втором шаге, а на третьем шаге узнаёт у Алисы a3 ⊕ [(a1 ⊕ (b1 ⊕ 1)) ∧ (a2 ⊕ b2 )]. На четвертом шаге Алиса сообщит Бобу a3 и таким образом Боб узнаёт (a1 ⊕ (b1 ⊕ 1)) ∧ (a2 ⊕ b2 ) = ¬x1 ∧ x2 вместо положенного x1 ∧ x2 . Исправляется этот недостаток следующим образом: после третьего шага Боб должен доказать Алисе, что действовал честно, то есть во всех применениях протокола забывающей передачи он просил передать именно то, что ожидалось. При этом Бобу не обязательно доказывать, что он использовал честные случайные биты в качестве bk+1 . . . bk+l и в протоколе забывающей передачи, если последний удовлетворяет Замечанию 18. Теорема 52. Если существует улучшенная односторонняя перестановка с секретом, то существует и протокол конфиденциального вычисления любой полиномиально вычислимой булевой функции для нечестных игроков. Доказательство. По теореме 50 существует протокол забывающей передачи OT41 , удовлетворяющий Замечанию 18. Кроме того, по теоремам 36 и 29 существует неразглашающий протокол доказательства знания свидетелей с условием сильной полноты. Мы будем использовать эти протоколы в следующем протоколе конфиденциального вычисления полиномиально вычислимой функции fn : {0, 1}k(n) × {0, 1}l(n) → {0, 1}. Протокол. Сначала повторяются шаги 1–3 из протокола для получестных противников, приведенного на стр. 210. Напомним, что на этих шагах они делали следующее. 1) Алиса и Боб строят схему Cn полиномиального размера, вычисляющую fn . 2) Инициализация: Алиса выбирает k случайных бит a1 . . . ak и посылает Бобу b1 = a1 ⊕ x1 . . . ak ⊕ xk . Аналогично, Боб выбирает l случайных бит bk+1 . . . bk+l и посылает Алисе ak+1 = bk+1 ⊕ y1 . . . bk+l ⊕ yl . 13.2. ВЫЧИСЛЕНИЕ ПРОИЗВОЛЬНЫХ ФУНКЦИЙ 213 3) Для всех i = k + l + 1, . . . , s Алиса и Боб делают следующее. Пусть zi получается из каких-то проводников схемы zj , zm какой-то бинарной операцией, скажем ∧. Тогда Алиса выбирает случайным образом ai и забывающе пересылает Бобу bi = ai ⊕ [(aj ⊕ bj ) ∧ (am ⊕ bm )]. 4) Теперь Боб должен доказать, что он просил Алису передать именно те биты, которые следовало. Для этого Боб доказывает Алисе знание слова y, битов bk+1 . . . bk+l и случайных битов r для протокола забывающей передачи таких, что при честном выполнении алгоритма Боба на шагах 2,3 для этих y, b, r посылается именно то, что и было послано. Поскольку протокол забывающей передачи удовлетворяет Замечанию 18, если это в самом деле верно для каких-то y, b, r, то as ⊕bs = f (x, y) с приблизительно единичной вероятностью. 5) Если доказательство окончилось неудачно, то Алиса посылает Бобу пустое слово, а иначе она сообщает ему as . Условие полноты очевидно выполнено. Алгоритм Боба по-прежнему не разглашает информации, что доказывается так же, как и раньше, поскольку на шаге 4 Боб по-прежнему выполняет алгоритм с нулевым разглашением. Наиболее сложная часть — убедиться в том, что Алиса разглашает не более f (x, y) для какого-то y. Для этого нам надо построить симулятор, который получает на вход алгоритм Боба Bn∗ , реализуемый схемой полиномиального размера, и порождает случайную величину, неотличимую от протокола общения честной Алисы с Bn∗ . При этом симулятору разрешается один раз узнать f (x, y) для какого-то y, который он сам выберет. Для этого симулятор запускает алгоритм Алисы и алгоритм Боба и просто записывает все посланные сообщения на на шаге 2. На шаге 3 он запускает симулятор для протокола забывающей передачи, и когда тот, спросит бит из базы данных, даёт ему случайный бит. При этом каждый раз на вход симулятора дается схема Bn∗ , в которую запаяны все до сих пор симулированные сообщения. Полученный протокол вычислительно неотличим от настоящего, что доказывается так же, как и теорема о последовательном выполнении неразглашающего алгоритма. 214 ГЛАВА 13. КОНФИДЕНЦИАЛЬНЫЕ ВЫЧИСЛЕНИЯ На шаге 4 опять запускается симулятор для неразглашающего протокола доказательства, который извлекает свидетелей y, b, r. По условию вероятность того, что они извлекутся приблизительно равна 1 при условии, что алгоритм доказательство прошло успешно. Если доказательство закончилось неудачей, то последнее сообщение Алисы пусто, и симулятор записывает в протокол пустое слово. Иначе симулятор узнаёт значение f (x, y) и записывает в протокол as = bs ⊕f (x, y), где bs есть случайный бит, выбранный симулятором для протокола забывчивой передачи. Почему симулированный протокол вычислительно неотличим от настоящего? Для шагов 2–4 это доказывается точно так же, как и в теореме последовательном выполнении неразглашающего алгоритма. Поэтому нам остаётся лишь доказать, что последнее сообщение, записанное симулятором (пустое слово или as = bs ⊕ f (x, y)) с почти единичной вероятностью равно тому сообщению, которое послала бы Алиса, получив те же сообщения, которые симулятор записал в протокол. Назовем это событием G. Для этого рассмотрим событие E “доказательство закончилось удачно”. Условная вероятность события G при условии Ē (дополнение до E) равна 1. Поэтому достаточно доказать, что условная вероятность G при условии E приблизительно единичная. Если доказательство закончилось удачно, то с приблизительно единичной вероятностью симулятор извлечёт такие y, b, r, что при честном выполнении алгоритма Боба на шагах 2,3 для этих y, b, r посылается именно то, что и было послано. Отсюда следует, что на шаге 5 Алиса посылает bs = as ⊕ f (x, y), следовательно, событие G выполнено. Таким образом, условная вероятность G при условии E приблизительно единичная, что и требовалось доказать. Замечание 19. Аналогичным образом можно построить протокол вычисления любой полиномиально вычислимой функции: на последнем шаге Алиса сообщает Бобу значения всех своих случайных битов, соответствующих выходам схемы. Протокол конфиденциального вычисления любой пары полиномиально вычислимых функций f, g можно построить, выполним последовательно протокол конфиденциально вычисления каждой из них. Неразглашение информации для полученного протокола доказывается так же, как и лемма о последовательном выполнении неразглашающих алгоритмов. Литература [1] M. Agrawal, N. Kayal, N. Saxena, PRIMES is in P, Annals of Mathematics 160:2 (2004) 781—793. [2] А. Китаев, А. Шень, М. Вялый. Классические и квантовые вычисления. М.: МЦНМО, 1999, 192 с. [3] Eric Bach: How to Generate Factored Random Numbers. SIAM J. Comput. 17(2): 179-193 (1988) [4] Manuel Blum and Silvio Micali, How to Generate Cryptographically Strong Sequences of Pseudorandom Bits, SIAM Journal on Computing 13, no. 4 (1984): 850-864. [5] R. Cleve. Limits on the security of coin flips when half the processors are faulty. in: Proceedings of the eighteenth annual ACM symposium on Theory of computing (STOC ’86), Pages 364-369 (1986). [6] Johan Håstad, Russell Impagliazzo, Leonid A. Levin, Michael Luby: A Pseudorandom Generator from any One-way Function. SIAM J. Comput. (SIAMCOMP) 28(4):1364-1396 (1999) [7] Luby M., Pseudorandomness Princeton Univ Press, 1996. and Cryptographic Applications, [8] John Rompel. One-Way Functions are Necessary and Sufficient for Secure Signatures. STOC 1990, pages 387–394. [9] Andrew Chi-Chih Yao. Theory and applications of trapdoor functions. In Proceedings of the 23rd IEEE Symposium on Foundations of Computer Science, 1982. 215 216 ЛИТЕРАТУРА [10] Zermelo, Ernst. Über eine Anwendung der Mengenlehre auf die Theorie des Schachspiels. Proc. Fifth Congress Mathematicians, (Cambridge 1912), Cambridge University Press 1913, pp. 501–504.
«Односторонние функции и их применения» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Тебе могут подойти лекции

Смотреть все 81 лекция
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot