Изменения

Перейти к: навигация, поиск

Доказательства с нулевым разглашением

6010 байт добавлено, 14:31, 13 ноября 2020
Пример: изоморфизм графов.: убрал точку из конца подзаголовка
В криптографии '''Доказательство с нулевым разглашением (информации)''' (Zero-knowledge proofKnowledge Proof) — это интерактивный протокол, позволяющий одной из сторон (проверяющему, verifierVerifier) убедиться в достоверности какого-либо утверждения (обычно математического), не получив при этом никакой другой информации от второй стороны (доказывающего, proverProver).
Доказательство с нулевым разглашением должно обладать тремя свойствами:
# '''Полнота''': если утверждение действительно верно, то доказывающий убедит в этом проверяющего.
# '''Корректность''': если утверждение неверно, то даже нечестный доказывающий не сможет убедить проверяющего за исключением пренебрежимо малой вероятности.
# '''Нулевое разглашение''': если утверждение верно, то любой даже нечестный проверяющий не узнает ничего кроме самого факта, что утверждение верно. == Формальное определение ==Пусть <tex>L</tex> ∈ '''[[NP]]''', и <tex>M</tex> — машина Тьюринга для проверки сертификата, то есть <tex>x \in L \Leftrightarrow \exists y \in \{0,1\}^{p(|x|)} : M(x, y) = 1</tex>. Пара <tex>\langle P, V \rangle</tex> интерактивных вероятностных алгоритмов называется доказательством с нулевым разглашением для <tex>L</tex>, если выполнены следующие три условия:# '''Полнота''': Для любого <tex>x \in L</tex> и сертификата <tex>y</tex> выполнено <tex>P \left( \text{out}_V \left\langle P(x,y), V(x) \right\rangle = 1 \right) \ge 2/3</tex># '''Корректность''': Если <tex>x \not \in L</tex>, то для любых <tex>P^*, y</tex> выполнено <tex> P \left( \text{out}_V \left\langle P^*(x,y), V(x) \right\rangle = 1 \right) \le 1/3</tex># '''Нулевое разглашение''': Для любой вероятностной полиномиальной интерактивной стратегии <tex>V^*</tex> существует вероятностный полиномиальный алгоритм <tex>S^*</tex>, такой что для любого <tex>x \not \in L</tex> и соответствующего сертификата ''y'' выполнено <tex>\text{out}_{V^*} \left \langle P(x,y), V^*(x) \right \rangle\equiv S^*(x)</tex>. Такой алгоритм <tex>S^*</tex> называется симулятором для <tex>V^*</tex>, он симулирует результат взаимодействия <tex>V^*</tex> c proover'ом без доступа к последнему. == Пример: изоморфизм графов == Назовем проверяющую сторону Виктор (Victor), а доказывающую сторону Пегги (Peggy). Им обоим известна пара графов <tex>\langle G_0, G_1 \rangle</tex>. Допустим, эти графы изоморфны и Пегги известна биекция между вершинами этих графов, то есть некоторая перестановка <tex>\pi</tex>, такая что <tex>G_0 = \pi G_1</tex>. Пегги хочет доказать Виктору, что графы изоморфны, не выдавая при этом ни самой перестановки, ни какой-либо информации о ней.  Для этого Виктор и Пегги совместно выполняют несколько раундов протокола:* Вначале Пегги создает случайную перестановку <tex>\phi</tex>. Применив ее к <tex>G_0</tex>, она получает некий граф <tex>H = \phi G_0</tex>.* Пегги передает граф <tex>H</tex> Виктору.* Виктор выбирает случайный бит <tex>i \leftarrow \{0,1\}</tex>* Виктор просит Пегги доказать изоморфизм <tex>G_i</tex> и <tex>H</tex>, то есть предоставить соответствие вершин этих двух графов.* Если <tex>i = 0</tex>, то Пегги отсылает Виктору <tex>\phi</tex>, иначе <tex>\phi \cdot \pi</tex> В каждом раунде Виктор выбирает новый случайный бит, который неизвестен Пегги. Поэтому чтобы ответить на оба вопроса, Пегги нужно чтобы <tex>H</tex> был в самом деле изоморфен <tex>G_i</tex>. Это означает, что после достаточного числа раундов, Виктор может быть уверен в том, что графы <tex>G_0</tex> и <tex>G_1</tex> изоморфны. С другой стороны, Пегги не раскрывает никакой информации о перестановке <tex>\pi</tex>. Более того, Виктору сложно будет доказать кому-либо ещё изоморфизм этих графов. Предположим, что у Пегги нет перестановки <tex>\pi</tex> и она хочет обмануть Виктора. Тогда граф <tex>H</tex>, который она отсылает Виктору, будет не изоморфен хотя бы одному из пары графов <tex>\langle G_0, G_1 \rangle</tex>. Поэтому вероятность того, что она сможет обмануть Виктора в одном раунде не более <tex>\frac{1}{2}</tex>. Вероятность того, что Пегги сможет обманывать Виктора на протяжении <tex>n</tex> раундов не превосходит <tex>2^{-n}</tex>. Предположим, что Виктор не узнал перестановку <tex>\pi</tex>, но хочет доказать Френку, что Пегги ее знает. Если Виктор, например, заснял на видео все раунды протокола, Френк едва ли ему поверит. Френк может предположить, что Пегги и Виктор в сговоре и в каждом раунде Виктор заранее сообщал Пегги свой выбор случайного бита, чтобы Пегги могла передавать ему <tex>H</tex> для проверок изоморфизма. Таким образом без участия Пегги доказать изоморфизм графов, можно лишь доказав, что во всех раундах протокола выбирались действительно случайные биты.
Анонимный участник

Навигация