Доказ з нульовим розголошенням: пояснення, ніби вам 5 років
Пояснити як працює крипта складно, пояснити як працює крипта простими словами ще складніше. Пояснювати доказ із нульовим розголошенням дитині? Це легко! Пояснюю ZKP на прикладі цукерок на Хелловін.
Протокол із нульовим розголошенням
Протокол з нульовим розголошенням (Zero Knowledge Protocol) або доказ пароля з нульовим розголошенням (Zero Knowledge Password Proof ) — це спосіб автентифікації, у якому паролями не обмінюються, що означає, що їх не можна вкрасти. Це круто, тому що це робить ваше спілкування настільки безпечним і захищеним, що ніхто інший не може дізнатися, про що ви спілкуєтеся або якими файлами ви ділитеся один з одним.
ZKP дозволяє вам довести, що ви знаєте якийсь секрет (або багато секретів) комусь на іншій стороні, фактично не розкриваючи його. Сам термін «нульове знання» походить від того факту, що жодної («нульової») інформації про таємницю не розкривається, але друга сторона (названа «Верифікатор») (правомірно) переконана, що перша сторона (названа «Доказуюча») знає секрет, про яке йдеться. Навіщо вам потрібно доводити, що знаєте секрет, не розкриваючи його? Коли ви не довіряєте іншій людині, але вам все одно потрібно переконати її, що ви це знаєте. То як же виглядає процес?
Давайте проілюструємо це за допомогою Боба та Аліси, які отримали шоколадні батончики на Хелловін.
Вони хотіли б знати, чи отримали таку ж кількість цукерок, не розкриваючи кількість цукерок, тому що вони не хочуть ділитися
Припустимо, що у них може бути рівно 10, 20, 30 або 40 плиток шоколаду в їх пакетах з цукерками.
Щоб порівняти кількість плиток шоколаду, які вони отримали, не повідомляючи фактичну кількість, Боб бере 4 коробки, що закриваються, і наклеює на кожну етикетку з написом 10, 20, 30 або 40 (плитки шоколаду).
Потім Боб викидає всі ключі, крім ключа від коробки, яка відповідає кількості шоколадок, які у нього є (припустимо, у нього 20 шоколадок) і йде.
Аліса бере 4 маленькі листочки паперу і пише на одному з них «+», а на всіх інших «-».
Потім вона вставляє «+» через проріз у коробку з номером, що відповідає кількості цукерок, які вона має (припустимо, має 30 шоколадних батончиків), а папірці з «-» вставляє до інших коробок.
Боб повертається і відкриває єдину коробку, від якої у нього все ще є ключ — ту, яка відповідає кількості цукерок, які має, — і дивиться, чи містить вона «+» або «-».
Якщо це «плюс», то у Аліси в сумці така сама кількість плиток шоколаду. Якщо на листку написано «-», значить, у них різна кількість цукерок (але вони все одно не поділяться один з одним).
Ми знаємо, що у сумці Боба 20 плиток шоколаду, а в сумці Аліси — 30 плиток шоколаду. Відкривши коробку і знайшовши на ній папірець зі знаком мінус, Боб дізнається, що в нього і Аліси різна кількість цукерок. Але в нього немає можливості дізнатися, більше чи менше плиток шоколаду у Аліси.
Аліса теж повертається і бачить, що Боб має аркуш паперу з «мінусом». Значить, у нього інша кількість цукерок. Але і Аліса, і Боб досі не знають, скільки шоколадок у кожного з них. Вони знають тільки, що вони не мають однакової кількості.
Такий приклад, у дещо іншій формі, широко відомий як Задача мільйонера Яо, де два мільйонери хочуть з’ясувати, чи мають однакову суму грошей, не розкриваючи точну суму. Це один простий приклад, як працює ZKP.
Переклад зроблений Aleksander#8393
Оригінал статті —https://hackernoon.com/eli5-zero-knowledge-proof-78a276db9eff