Доказательство знания секрета, оно же: доказательство с нулевым разглашением (знанием), Zero-knowledge proof, ZKP – является распространенным требованием в сфере безопасности. Например, пароли являются наиболее распространенной формой аутентификации пользователя. Если пользователь может ввести правильный пароль, ему предоставляется доступ к своей учетной записи.
Одним из ограничений аутентификации на основе пароля является то, что она требует, чтобы обе стороны знали “секрет”. Чтобы проверить пароль пользователя, серверу также необходимо знать его пароль (или, по крайней мере, его хэш). Кроме того, подтверждение знания пароля может раскрыть его, особенно если аутентификация выполняется через общедоступный носитель, такой как блокчейн.
Доказательства с нулевым знанием (или ZKP) предоставляют альтернативу этому. С помощью ZKP проверяющий может доказать знание секрета, не раскрывая самого секрета.
Введение в доказательства с нулевым разглашением (знанием)
Представьте, что у вас есть знакомый дальтоник, который сомневается, что красный и зеленый – на самом деле разные цвета. С помощью двух шаров разного цвета, но в остальном идентичных, можно доказать это, не раскрывая фактический цвет каждого шара.
В этом доказательстве, верификатор (дальтоник-друг) скрывает оба шара. Затем он показывает проверяющему один шар и снова прячет его. Он показывают проверяющему снова один шар и спрашивает, являются ли два показанных шара одним и тем же шаром.
Теоретически, единственный способ, которым проверяющий сможет отличить шары, – это по цвету (они одного цвета, рандомизированы перед показом и т.д.). Если проверяющий говорит правду, он всегда сможет указать, являются ли два шара одинаковыми. Если они лгут, у них есть 50%-ная вероятность быть правыми каждый раз. Выполняя доказательство несколько раз, можно уменьшить вероятность правильного угадывания каждый раз, когда вы лжете, почти до нуля.
Это пример ZKP, потому что он доказывает, что шары разного цвета, не раскрывая, какой шар какого цвета. Проверяющий никогда не определяет цвет шара, только если два шара одинакового или разного цвета. Это позволяет им сохранить секрет, но продемонстрировать проверяющему, что они знают этот секрет.
ZKP и блокчейн
Цифровая бухгалтерская книга блокчейна полностью прозрачна, что означает, что каждый может видеть все. Необходимость проверки транзакций и выполнения кода смарт-контракта означает, что источник назначения и содержимое транзакций видны всем учетным записям блокчейна. В результате, конфиденциальность в блокчейне ограничена, потому что любой может видеть содержимое кошелька учетной записи и каждую транзакцию, которую он выполнил.
ZKP имеют возможность повысить конфиденциальность и безопасность в блокчейне, позволяя проверять транзакции, не раскрывая содержание транзакции. Например, финансовый перевод (например, отправка биткойна) действителен, если входные данные для перевода уникальны, а сумма входных и выходных данных равна. Zero-knowledge proof, демонстрирует это, сохраняя при этом распределение выходных данных в секрете, улучшает конфиденциальность в блокчейне.
Несколько протоколов блокчейна используют или активно исследуют использование ZKP для улучшения конфиденциальности в блокчейне. Распространенные примеры включают zk-SNARK и zk-STARK. Эти доказательства разработаны так, чтобы быть неинтерактивными, что означает, что доказательство может быть сгенерировано и опубликовано в блокчейне, и что верификатор может проверить это статическое доказательство без взаимодействия, требуемого нашим примером ZKP выше.
Zero-knowledge proof и безопасность блокчейна
Доказательства с нулевым уровнем знаний позволяют пользователям блокчейна обеспечить как конфиденциальность, так и безопасность. Без Доказательств с нулевым знанием, проверка данных транзакций требует, чтобы эти данные были общедоступными. ZKP позволяет проверяющему определить, что что-то верно или транзакция действительна, без необходимости знать детали.
Доказательства с нулевым разглашением, также, имеют другие преимущества для блокчейна. Например, Ethereum рассматривает возможность использования ZKP в качестве масштабируемого решения, повышающего пропускную способность блокчейна без изменения размера блока или скорости.