Доказательства с нулевым разглашением — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «В криптографии '''Доказательство с нулевым разглашением (информации)''' (Zero-knowledge proof) — это …»)
 
Строка 1: Строка 1:
В криптографии '''Доказательство с нулевым разглашением (информации)''' (Zero-knowledge proof) — это интерактивный протокол, позволяющий одной из сторон (проверяющему, verifier) убедиться в достоверности какого-либо утверждения (обычно математического), не получив при этом никакой другой информации от второй стороны (доказывающего, prover).
+
В криптографии '''Доказательство с нулевым разглашением (информации)''' (Zero-Knowledge Proof) — это интерактивный протокол, позволяющий одной из сторон (проверяющему, Verifier) убедиться в достоверности какого-либо утверждения (обычно математического), не получив при этом никакой другой информации от второй стороны (доказывающего, Prover).
  
 
Доказательство с нулевым разглашением должно обладать тремя свойствами:
 
Доказательство с нулевым разглашением должно обладать тремя свойствами:
Строка 5: Строка 5:
 
# '''Корректность''': если утверждение неверно, то даже нечестный доказывающий не сможет убедить проверяющего за исключением пренебрежимо малой вероятности.
 
# '''Корректность''': если утверждение неверно, то даже нечестный доказывающий не сможет убедить проверяющего за исключением пренебрежимо малой вероятности.
 
# '''Нулевое разглашение''': если утверждение верно, то любой даже нечестный проверяющий не узнает ничего кроме самого факта, что утверждение верно.
 
# '''Нулевое разглашение''': если утверждение верно, то любой даже нечестный проверяющий не узнает ничего кроме самого факта, что утверждение верно.
 +
 +
 +
 +
== Пример: изоморфизм графов. ==
 +
 +
Назовем проверяющую сторону Петей, а доказывающую сторону Димой. Им обоим известна пара графов <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> для проверок изоморфизма. Таким образом без участия Димы доказать изоморфизм графов, можно лишь доказав, что во всех раундах протокола выбирались действительно случайные биты.

Версия 10:55, 27 мая 2010

В криптографии Доказательство с нулевым разглашением (информации) (Zero-Knowledge Proof) — это интерактивный протокол, позволяющий одной из сторон (проверяющему, Verifier) убедиться в достоверности какого-либо утверждения (обычно математического), не получив при этом никакой другой информации от второй стороны (доказывающего, Prover).

Доказательство с нулевым разглашением должно обладать тремя свойствами:

  1. Полнота: если утверждение действительно верно, то доказывающий убедит в этом проверяющего.
  2. Корректность: если утверждение неверно, то даже нечестный доказывающий не сможет убедить проверяющего за исключением пренебрежимо малой вероятности.
  3. Нулевое разглашение: если утверждение верно, то любой даже нечестный проверяющий не узнает ничего кроме самого факта, что утверждение верно.


Пример: изоморфизм графов.

Назовем проверяющую сторону Петей, а доказывающую сторону Димой. Им обоим известна пара графов [math]\langle G_0, G_1 \rangle[/math]. Допустим, Диме известена биекция между вершинами этих графов, то есть некоторая перестановка [math]\pi[/math], такая что [math]G_0 = \pi G_1[/math]. Дима хочет доказать Пете, что графы изоморфны, не выдавая при этом ни самой перестановки, ни какой-либо информации о ней.

Для этого Петя и Дима совместно выполняют несколько раундов протокола:

  • Вначале Дима создает случайную перестановку [math]\phi[/math]. Применив ее к [math]G_0[/math], он получает некий граф [math]H = \phi G_0[/math].
  • Дима передает граф [math]H[/math] Пете.
  • Петя выбирает случайный бит [math]i \leftarrow \{0,1\}[/math]
  • Петя просит Диму доказать изоморфизм [math]G_i[/math] и [math]H[/math], то есть предоставить соответствие вершин этих двух графов.
  • Если [math]i = 0[/math], то Дима отсылает Пете [math]\phi[/math], иначе [math]\phi \cdot \pi[/math]

В каждом раунде Петя выбирает новый случайный бит, который неизвестен Диме. Поэтому чтобы ответить на оба вопроса, Диме нужно чтобы [math]H[/math] был в самом деле изоморфен [math]G_i[/math]. Это означает, что после достаточного числа раундов, Петя может быть уверен в том, что графы [math]G_0[/math] и [math]G_1[/math] изоморфны. С другой стороны, Дима не раскрывает никакой информации о перестановке [math]\pi[/math]. Более того, Пете сложно будет доказать кому-либо ещё изоморфизм этих графов.

Предположим, что у Димы нет перестановки [math]\pi[/math] и он хочет обмануть Петю. Тогда граф [math]H[/math], который он отсылает Пете, будет не изоморфен хотя бы одному из пары графов [math]\langle G_0, G_1 \rangle[/math]. Поэтому вероятность того, что он сможет обмануть Петю в одном раунде не более [math]\frac{1}{2}[/math]. Вероятность того, что Дима сможет обманывать Петю на протяжении [math]n[/math] раундов не превосходит [math]2^{-n}[/math].

Предположим, что Петя не узнал перестановку [math]\pi[/math], но хочет доказать Васе, что Дима ее знает. Если Петя, например, заснял на видео все раунды протокола, Вася едва ли ему поверит. Вася может предположить, что Петя и Дима в сговоре и в каждом раунде Петя заранее сообщал Диме свой выбор случайного бита, чтобы Дима мог передавать ему [math]H[/math] для проверок изоморфизма. Таким образом без участия Димы доказать изоморфизм графов, можно лишь доказав, что во всех раундах протокола выбирались действительно случайные биты.