Перейти до вмісту

Доведення з нульовим розголошенням

Матеріал з Вікіпедії — вільної енциклопедії.

Доведення з нульовим розголошенням (англ. zero-knowledge proof, zero-knowledge protocol) — метод для доведення однією стороною іншій, що твердження (зазвичай — математичне) — істинне, без розкриття будь-якої іншої інформації, окрім достовірності твердження.

Абстрактні приклад

[ред. | ред. код]

Печера Алі-Баби

[ред. | ред. код]
Оксана випадковим чином обирає вхід A чи B, тоді як Тарас чекає зовні
Тарас обирає вихід, через який має вийти Оксана, і називає його Оксані
Оксана виходить через вихід названий Тарасом

Історію, що показує деякі ідеї доведення з нульовим розголошенням, вперше оприлюднили Жан-Жак Квісквотер та ін. в їх роботі «Як пояснити протокол нульового розголошення вашим дітям».[1] На кшталт Аліси й Боба в криптографії в англомовних версіях доведення з нульовим розголошенням використовують Пеґґі (англ. Peggyмнемоніка для англ. Prover), який доводить твердження, і Віктора (англ. Victor — мнемоніка для англ. Verifier), який перевіряє твердження. У нас — Оксана і Тарас[джерело?].

У цій історії Оксана виявила таємне слово, що відкриває секретні двері в печері. Печера утворена у вигляді кола, з входом з одного боку та магічними дверима, що закривають інший бік проходу. Тарас каже, що заплатить за секрет, як впевниться, що Оксана справді знає його. Оксана каже, що скаже секрет лише після оплати. Вони розробили схему, за якої Оксана може довести Тарасові своє знання, не кажучи йому секретного слова.

Спочатку Тарас очікує зовні печери, Оксана входить. Вони позначили лівий та правий проходи як A і B. Тоді Тарас заходить у печеру і вигукує назву проходу, яким має вийти Оксана. Якщо вона справді знає магічне слово, то для неї легко вийти будь-яким проходом. Зауважте, Тарас не знає, яким саме проходом Оксана ввійшла.

Уявімо, що вона не знає слова. Тоді вона зможе вийти лише через той прохід, яким вона увійшла, тобто, ймовірність вийти названим Тарасом проходом у неї 50 відсотків. Якщо повторити, припустимо, 20 разів підряд, шанси Оксани постійно вгадувати назву проходу, що назве Тарас, надзвичайно малі ([2]).

Отже, якщо Оксана впевнено з'являється з того виходу, який обирає Тарас, він може переконатись, що вона, швидше за все, знає таємне слово.

Дві кульки і друг, що не розрізняє кольорів

[ред. | ред. код]

Уявіть собі друга, який не розрізняє червоний і зелений, а ви розрізняєте і у вас є дві кульки: одна червона і ще одна зелена, однакові за всіма іншими ознаками. Для вашого друга вони видаються геть однаковими і він сумнівається, що їх насправді можна відрізнити. Ви хочете довести йому, що вони мають різний колір, але нічого окрім цього; зокрема, ви не хочете видати яка з них якого кольору.

Ось підхід до доведення. Ви даєте ці кульки другові і він ховає за спиною. Далі, він показує вам одну з кульок. Він знов ховає її за спиною і потім знов показує вам одну кульку, обираючи будь-яку з них з однаковою ймовірністю. Він запитує вас, «Чи поміняв я кульку?» Процедуру можна повторити за необхідності.

Звісно, побачивши її колір ви можете впевнено сказати чи поміняв він їх. З іншого боку, якби вони були однакового кольору, то ви б не могли цього сказати з імовірністю більш ніж 50 %.

Через те, що імовірність випадкового успіху становить 50 %, імовірність випадково правильно відповісти в кількох спробах наближається до нуля.

Це доведення з нульовим розголошенням, бо ваш друг ніколи не з'ясує яка з кульок червона, а яка зелена.

Визначення

[ред. | ред. код]

Доведення з нульовим розголошенням повинно мати три властивості:

  1. Повнота (англ. completeness): якщо твердження істинне, той хто чесно доводить (такий, що повністю слідує протоколу) завжди переконає чесного перевіряльника.
  2. Коректність (англ. soundness) захищає від прийняття хибного твердження: якщо твердження брехливе, то ймовірність обману V в будь-якому випадку має бути дуже низькою.
    — імовірно зловмисний доводжувач.
  3. Нульове розголошення: якщо твердження істинне, жоден перевіряльник, який грає не за правилами, не може дізнатись нічого, окрім факту істинності.

Зокрема, після того, як перевіряльник переконався в істинності твердження, сам він не зможе довести його істинність третім особам[2].

Дві перші властивості виконуються для загальної інтерактивної системи доведення. Третя властивість призводить до нульового розголошення.

Доведення з нульовим розголошенням не є доведенням в математичному сенсі, бо існує мала ймовірність (англ. soundness error) того, що нечесний доводжувач зможе переконати перевіряльника в істинності брехливого твердження. Інакше кажучи, доведення швидше ймовірнісне, ніж детерміністичне. Однак, наявні техніки зменшення можливості похибки до нехтовно малої.

Формальне визначення нульового розголошення потребує використання деякої обчислювальної моделі, найпоширеніше використання машини Тюрінга. Нехай , і будуть автоматами Тюрінга. Інтерактивна система доведення з для мови є з нульовим розголошенням, якщо для будь-якого перевіряльника ймовірнісно поліноміального часу (ІПЧ) (англ. probabilistic polynomial time (PPT)) існує симулятор з очікуваним ІПЧ , такий що

[note 1][3]

Де :

  1. Розподіл імовірностей над тобто, над всіма можливими перемовинами, що і можуть мати стосовно
  2. повідомлення від , випадковість

Доводжувач змодельовано як такий, що має необмежену обчислювальну потужність (на практиці, P зазвичай є імовірнісною машиною Тюрінга). Інтуїтивно, визначення стверджує, що інтерактивна система доведення має нульове розголошення, якщо для будь-якого перевіряльника існує дієвий симулятор , який може відтворити розмову між і на будь-якому вході. Отже, розмова з не може навчити обчисленню чогось, чого він не міг обчислити до того.

Допоміжний рядок відіграє роль «попереднього знання» (англ. prior knowledge). Визначення має на увазі, що не може використати якесь попереднє знання , щоб отримати інформацію з розмови з , бо ми вимагаємо, що якщо також має це знання, тоді він може відтворити перемовини між і як і раніше.

Наведене визначення для ідеального нульового розголошення. Визначення обчислювального нульового розголошення отримаємо з вимогою, що погляди перевіряльника і симулятора обчислювально нерозрізненні, при одному допоміжному рядку.

Приклад з ізоморфізмом графів

[ред. | ред. код]

Розглянемо приклад системи доведення з нульовим розголошенням для ізоморфізму графів[4]. Маємо два графи і , хоче переконати , що знає перестановку , таку що . може просто відіслати до , але це не буде системою з нульовим розголошенням; треба переконати , що це ізоморфізм, без розкриття будь-яких даних. Маємо наступний протокол:

  • випадковим чином обирає перестановку і біт , обчислює , і відсилає до .
  • обирає біт і відправляє до .
  • відправляє перестановку до , де
  • приймає тоді і лише тоді коли .

Це протокол досконалої повноти, бо якщо це справді ізоморфізм, тоді завжди виконуватиметься . Більше того, припустимо, що є чесним перевіряльником, який обирає випадково. Отже, протокол також правильний, якщо не ізоморфізм, тоді лише в випадку , а це стається з імовірністю .

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. Наведене формальне визначення подане за Goldwasser, Micali і Rackoff, 1985

Джерела

[ред. | ред. код]
  1. Quisquater Jean-Jacques. How to Explain Zero-Knowledge Protocols to Your Children. — 1990. — Т. 435. — С. 628–631.
  2. а б Кулага, 2011, Основні визначення.
  3. Igor Gorodezky (26 березня 2009). Lecture 18: Zero-Knowledge Proofs (PDF). Theory of Computing. Корнелльський університет. Архів оригіналу (PDF) за 18 червня 2012. Процитовано 6 червня 2012.
  4. Kevin Snow (39.01.2007). Lecture 3: Zero-Knowledge Proofs (PDF). 600.641 Special Topics in Theoretical Cryptography. Університет Джонса Гопкінса. Архів оригіналу (PDF) за 16 березня 2014. Процитовано 6 червня 2012.

Посилання

[ред. | ред. код]