ZK-доказательства позволяют доказывающему убедить проверяемого в истинности утверждения, не раскрывая никакой информации о самом утверждении. Доказатель и верификатор взаимодействуют в нескольких раундах протокола, и в заключении верификатор вырабатывает уверенность в истинности утверждения, не узнавая никакой дополнительной информации о секрете.
Давайтевоспользуемся Проблемой трех цветов, также известной как Проблема раскраски графиков, в качестве иллюстрации того, как функционируют ZK-доказательства.
Проблема
Представьте себе, что у Вас есть карта с множеством областей (вершин), соединенных линиями (ребрами), и вот в чем заключается проблема. Задача состоит в том, чтобы использовать один из трех цветов для окрашивания каждой области таким образом, чтобы никакие две соседние части не имели одинакового цвета. Можете ли Вы убедить кого-то в том, что Вы знаете, как правильно раскрасить область, не раскрывая реальных оттенков, присвоенных каждой области?
Решение с использованием протокола ZK-proofs
Настройка
Доказатель и верификатор оба согласны с областями и связями графа (карты).
Заявление
Доказатель утверждает, что у него есть надежная трехцветная раскраска для предоставленного графа.
Раунд 1: Обязательства
Доказатель выбирает цвета случайным образом для каждой области в секрете, не раскрывая их. Вместо этого, доказывающий предоставляет проверяющему одно зашифрованное обещание для каждой области. Проверяющий не может видеть, какие цвета находятся внутри обещаний, поскольку они заперты, как коробки.
Раунд 2: Challenge
Проверяющий выбирает случайную область и просит доказующего открыть обязательство для этой конкретной зоны. Доказатель должен раскрыть оттенок обязательства этой зоны.
Раунд 3: Ответ
После принятия на себя обязательств по выбору цветов, доказывающий должен теперь доказать, что выявленная раскраска является точной. Для этого необходимо показать цветовые различия между соседними секциями. Верификатор проверяет ответ, чтобы убедиться, что проверяющий правильно выполнил правила.
Итерация
Раунды 2 и 3 повторяются множество раз, используя различные области, которые выбираются случайным образом. Эта процедура повторяется столько раз, сколько необходимо для установления высокой степени доверия к истинности утверждения проверяющего.
Заключение
Верификатор становится уверенным в том, что проверяющий действительно имеет правильную трехцветную раскраску, не зная фактически используемых цветов, если проверяющий регулярно выдает правильные ответы в каждом раунде.
Верификатор постепенно увеличивает способность проверяющего распознавать правильную трехцветную раскраску графа, повторяя процедуру для различных областей. Однако свойство “нулевого знания” сохраняется, поскольку проверяющий никогда не узнает реальные цвета, присвоенные каждой области в ходе процедуры.
Приведенная выше иллюстрация показывает, как ZK-доказательства могут быть использованы для убеждения кого-либо в существовании решения, сохраняя при этом его идентичность в тайне, предлагая мощный инструмент для повышения уровня конфиденциальности и безопасности в различных приложениях.