:RU: Основы нулевого разглашения

Перевод статьи https://cexplorer.io/article/basics-of-zero-knowledge

image

Предполагается, что Midnight станет блокчейном для защиты данных, который сможет защитить конфиденциальные коммерческие и пользовательские данные. Для этого будут использоваться доказательства с нулевым разглашением или знанием (ZK). В этой статье мы объясним основы доказательств с нулевым знанием.

Скажи, что Это Правда, Не раскрывая Правды

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

Доказательства ZK - это увлекательная концепция в криптографии. Они позволяют доказывающему доказать верификатору, что он знает значение x, не передавая никакой информации, кроме того факта, что он знает значение x. Верификатор не будет знать значение x, но у него будет доказательство того, что проверяющий его знает. Доверие к доказательствам ZK проистекает из их математических свойств.

Классический пример доказательства ZK включает сценарий, в котором Алиса (проверяющий) хочет убедить Боба (верификатор), что она знает пароль к секретной двери в пещере, фактически не раскрывая самого пароля. Алиса входит в пещеру и выходит через выход, выбранный Бобом, таким образом доказывая, что она знает пароль, не раскрывая его.

В пещере есть только один вход, который одновременно является и выходом. Сразу за входом Алиса может идти в двух направлениях, A или B. За входом находится единственный длинный коридор. В середине коридора находится дверь, которую можно открыть только с помощью пароля. Алиса хочет доказать Бобу, что она может пройти через дверь, то есть что она знает пароль.

Посмотрите на картинку, изображающую, как выглядит пещера и где находится дверь. Чтобы открыть дверь, необходимо знать пароль. Обратите внимание, что Боб не заглядывает в пещеру и не знает, пошла ли Алиса в направлении А или В.

e6d587732d2dc460157e6a58d9a108e7

С точки зрения взаимодействия, это выглядит примерно так. В начале всегда есть некоторое обязательство доказывающего. Доказывающий пытается доказать истинность утверждения, а верификатор хочет его проверить. Проверка осуществляется в режиме “вызов-ответ”. Сперва, верификатор бросает вызов доказывающему. Доказывающий должен предоставить ответ. Проверка производится на основе ответа. Верификатор проверяет ответ, чтобы проверить, является ли утверждение истинным или ложным.

Давайте продолжим наш рассказ о пещере. Заявление Алисы о том, что она знает секретный пароль от двери, является обязательством. Она входит в пещеру и выбирает направление А. Боб не знает, какое направление выбрала Алиса. Боб входит в пещеру и кричит Алисе, чтобы она возвращалась в любом направлении - А или В.

Несмотря на то, что Боб находится в пещере, он не может видеть Алису. Он выбирает направление В и кричит об этом выборе Алисе. Вы можете увидеть описанную ситуацию на следующем рисунке. Боб бросает вызов Алисе.

b81c36cecd4377dcd1db627eba8c7f3d

Алиса должна дать ответ. В нашем примере это означает, что она должна использовать секретный пароль и пройти через дверь, поскольку это единственный вариант для нее вернуться с направления В. Боб проходит немного дальше в пещеру, чтобы посмотреть, каким путем выйдет Алиса. На картинке ниже вы можете видеть, что Алиса приближается со стороны В.

27f6b7ae5295e8a0bd9ea03ec2d03ada

Обратите внимание, что если бы Боб прокричал направление A, Алисе вообще не пришлось бы использовать секретный пароль и она пришла бы с правильного направления. Другими словами, у нее был 50%-ный шанс одурачить Боба. Необходимо повторить этот процесс несколько раз. Если Алиса может последовательно возвращаться по указанному Бобом пути, он убеждается, что она знает секретный пароль. Однако он ничего не узнает о том, что на самом деле представляет собой пароль, следовательно, это доказательство с нулевым разглашением или знанием.

Алиса может доказать Бобу, что ее утверждение верно. Если Боб хочет купить секретный пароль, у него есть доказательства того, что Алиса его знает.

Более практичное применение

Давайте рассмотрим сценарий, в котором Алиса (доказывающий) хочет убедить Боба (верификатор), что ей по крайней мере 18 лет, используя доказательство с нулевым разглашением.

Боб может быть продавцом алкогольных напитков, швейцаром в клубе только для взрослых или любым сервисом в Интернете, который предназначен только для взрослых, таким как криптобиржа.

Если у Алисы есть только обычное удостоверение личности, она может показать его Бобу физически или сделать ксерокопию и отправить Бобу через Интернет. Проблема в том, что таким образом вы часто раскрываете всю информацию, которая содержится в идентификаторе, даже если верификатору это может и не понадобиться. Согласно закону может потребоваться подтверждение только возраста и гражданства, чтобы можно было пользоваться сервисом, без необходимости указания имени или места жительства. Теоретически пользователи могли бы лучшим образом защитить свою частную жизнь, но в настоящее время это невозможно. Доказательства ZK делают это возможным. Доказательство может быть устроено таким образом, что сама информация не будет раскрыта. Алиса может доказать, что ей больше 18 лет, не раскрывая своего точного возраста.

Вот как могло бы выглядеть взаимодействие по протоколу ZK.

Первый этап - это подготовка обязательства. Алиса начинает с того, что фиксирует свой возраст. Это можно было бы сделать, хешируя ее возраст с помощью секретного случайного числа (также известного как nonce). Алиса отправляет обязательство Бобу. Схема принятия обязательств должна быть скрытой и обязательной. Боб не может определить возраст Алисы по полученному обязательству, но в то же время Алиса не может изменить возраст после отправки обязательства. Боб проверяет тот факт, по которому Алиса взяла на себя обязательство.

Как только у Боба появится обязательство Алисы, он сможет отправить ей вызов. Итак, Боб посылает Алисе случайный вызов. Это может быть простой бинарный вопрос, например, старше ли она 18 лет.

Алиса отвечает на вызов Боба, предоставляя доказательство, которое удовлетворяет вызову, не раскрывая своего точного возраста. В этом случае она могла бы использовать доказательство диапазона с нулевым разглашением, чтобы доказать, что ее возраст находится в пределах определенного диапазона, который превышает 18 лет.

Наконец, Боб проверяет доказательство Алисы. Если доказательство достоверно, Боб убеждается, что Алисе по меньшей мере 18 лет, не узнавая ее точного возраста. Боб не узнает никакой информации из идентификатора Алисы. Обратите внимание, что Боб даже не узнает точный возраст Алисы, который его интересовал. Он довольствуется доказательством того, что Алиса взрослая.

Само по себе обязательство не является каким-либо доказательством действительности заявленного. Обязательство - это всего лишь процесс настройки перед этапами “вызов-ответ” и “проверка”. Фактическое доказательство приходит позже, когда доказывающий успешно отвечает на вызовы верификатора.

Если бы Алиса предоставила ложное обязательство, она не смогла бы последовательно отвечать на вызовы Боба таким образом, чтобы убедить его в ее утверждениях. Вызовы генерируются случайным образом, поэтому Алиса не может предсказать их заранее. Если бы ее обязательство было ложным, она не смогла бы правильно ответить, по крайней мере, на некоторые вызовы, и Боба это бы не убедило.

Обязательство в доказательстве ZK играет решающую роль. Это способ для доказывающего (Алисы) “зафиксировать” свое утверждение, не раскрывая никакой информации о нем. Обязательство разработано как односторонняя функция, что означает, что Алиса не может изменить свое утверждение после того, как обязательство было принято (привязано). Безопасность доказательств ZK обусловлена их интерактивным характером и использованием случайных вызовов. Даже если Алиса попытается схитрить, предоставив ложное обязательство, протокол гарантирует, что Боб с высокой вероятностью обнаружит это.

Вывод

Доказательства с нулевым разглашением потенциально могут значительно улучшить удобство использования блокчейна, особенно в таких областях, как масштабируемость (ZK-роллапы), конфиденциальность транзакций и смарт контрактов. Таким образом, в то время как шифрование может защитить данные только для предотвращения несанкционированного доступа, доказательства ZK обеспечивают безопасное и конфиденциальное вычисление и проверку этих данных. Доказательство ZK позволит участникам работать с данными конфиденциально, не раскрывая никакой конфиденциальной информации. Доказательство ZK можно рассматривать как дополнительный уровень конфиденциальности в дополнение к шифрованию, используемому в технологии блокчейн.

Midnight станет очень полезным блокчейном для бизнес среды, банков, учреждений, компаний и особенно пользователей, поскольку можно будет защищать конфиденциальные данные и в то же время использовать их для различных сервисов.

// От переводчика: для получения дополнительных переведенных на русский язык статей о Cardano посетите русскоязычный раздел на форуме Cardano. Видеоролики о Cardano на русском языке можно найти на YouTube канале нашего замечательного амбасадора Тимура Сахабутдинова, а также на канале Чарльз Хоскинсон на русском. Хотите поговорить или задать вопрос о Cardano? Тогда приглашаем в наше уютное русскоязычное сообщество Cardano в Telegram. Оставайтесь на связи, все только начинается!