Перевод Cryptocurrency Village DEF CON 2021 - Что такое доказательства с нулевым разглашением?

Тема в разделе "Журналы о Monero", создана пользователем Mr. Pickles, 30 ноя 2021.

  1. Mr. Pickles

    Команда форума Модератор Редактор

    Регистрация:
    11 сен 2017
    Сообщения:
    1.004
    Симпатии:
    249

    Стенограмма выступления:

    Саранг: Отлично, все на месте? Хорошо. Отлично. Спасибо, что решили посетить первое на сегодня выступление. Вчера я успел на заключительную часть последнего выступления, и комната была максимально заполнена, но это уже было и не важно. Так что большое спасибо всем, что пришли.

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

    Типовой отказ от ответственности: все эти идеи я излагаю не от лица организации или сообщества — это будет образовательная беседа. То есть я использую эти материалы для помощи в делах, связанных с финансами, для профессиональных консультаций. Мне также хотелось бы поблагодарить Cake Technologies, компанию, создавшую Cake Wallet, благодаря которой моё выступление стало возможным. При этом следует отметить, что они никак не редактировали его содержание.

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

    Я буду использовать слово «транзакция» для обозначения некоторого типа структуры данных, которая строится на основе неких криптографических строительных блоков. В данном случае я буду использовать обычный языковой термин для обозначения конструкций. То есть конструкции — это криптографические строительные блоки, и позже я приведу примеры. Итак, мы имеем дело с построением протоколов транзакций, подразумевающим наличие различных алгоритмов и шагов, прочих конструкций, определяющих, помимо прочего, как мы оцениваем, является транзакция действительной или нет, является ли действительной структура данных. И это предельно упрощённое определение.

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

    Как я уже говорил, мы рассматриваем транзакцию как некий тип структуры данных, но они, как правило, не являются строго единообразными. Их содержание может быть различным. Это зависит от того, какой проект, какую конструкцию мы рассматриваем. В них может входить многое. В контексте блокчейн-приложений, например, зачастую применяются ссылки либо на предыдущие выходы, которые используются в качестве входов в новой транзакции, либо на представления наборов входов. Как правило, генерируется два выхода на транзакцию. Мы можем использовать различные типы подписей или доказательств. Но мы рассмотрим определённые виды доказательств, которые позволяют провести транзакцию в соответствии с правилами консенсуса, продиктованными протоколом. Также в нашем случае используются различные дополнительные данные: некоторые приложения предполагают наличие данных памяти или иных данных, которые понадобятся получателю, чтобы восстановить транзакцию и позднее воспользоваться активами, заложенными в ней.

    Как мы установили, протоколы транзакций, помимо прочего, диктуют правила построения транзакций, а также то, как мы определяем, являются они действительными или нет, примет или отклонит их сеть. И процесс такой проверки зачастую довольно сложен и предполагает наличие целого ряда нюансов. В том числе это может быть проверка соответствия ссылок и прошлых выходов. Очевидно, вы не станете подписывать выходы, которых на самом деле не существует в блокчейне, например, или же те, которые были созданы на пустом месте, то есть технически не имеют никакой ценности. Как правило, нам бы хотелось, чтобы любая подпись или любое доказательство, используемые для подтверждения транзакции, были действительными, что бы это ни значило в контексте рабочего пространства подписи. Мы ожидаем, что любые данные будут правильными во избежание появления вредоносных транзакций или бесполезной работы, в частности данных, которые будут добавлены в блокчейн. А также мы хотим быть уверенными в том, что, например, выходы не используются для совершения двойной траты. Таким образом, протокол может диктовать множество различных правил, которые будут гораздо более формальными, чем то, что показано здесь, чем та информация, которая представлена на графике.

    Как я уже упомянул, транзакции и протоколы строятся на основе этих строительных блоков, называемых криптографическими примитивами, криптографическими конструкциями, которые, как правило, представляют собой математически сложные, строгие с точки зрения следования процедуре структуры, и алгоритмы также довольно формализованы. И они могут быть предназначены для самых разных целей: вы можете сделать их более общими, а можете вести разработку для чего-то конкретного. И последствия будут тоже разными с точки зрения эффективности и доверия. Но сюда могут входить схемы всех видов. В случае со схемами подписи у нас есть такие схемы, как SHA, ECDSA, кольцевые подписи, то есть самые разные схемы. То же касается и схем доказательства, о которых мы поговорим подробнее чуть позже. Сюда же относятся криптографические обязательства, позволяющие скрыть определённые данные. Это могут быть схемы шифрования, симметричные схемы шифрования ― вы можете включить в них коды аутентификации сообщений. Это просто фантастическая область, в ней очень много интересного, множество занятных и полезных криптографических конструкций.

    Но мы будем говорить конкретно о системах доказательства. И именно здесь в игру среди прочих свойств вступает доказательство с нулевым разглашением. Здесь мною приводится очень, очень общее определение, согласно которому в определённых видах систем доказательства одна сторона называется «доказывающей», и эта сторона должна убедить другую сторону, так называемого «верификатора». Для их обозначения мы иногда используем буквы P (Prover) и V (Verifier), и это будет видно в примерах. Итак, одна сторона должна убедить другую в достоверности утверждения. И мы ещё немного поговорим о видах утверждений, которые могут потребовать доказательства в контексте блокчейн-технологии. Но, как правило, суть не в этом. В частности, есть определённый вид секретной информации, необходимый для того, чтобы доказать, что утверждение является действительным. И тут важно то, что доказывающая сторона совершенно не желает раскрывать такую секретную информацию верификатору. То есть доказывающая сторона хочет убедить верификатора в достоверности утверждения без раскрытия какой-либо секретной информации, лежащей в его основе.

    Итак, обычно существует несколько различных свойств, которыми должна обладать система доказательства. Это будут неполные определения, не те, на основе которых технические специалисты пишут свои работы. Я намеренно всё упрощаю для понимания. Но каким свойством должно обладать доказательство, чтобы доказывающая сторона могла убедить верификатора в том, что утверждение является достоверным? Как правило, мы называем это свойство «полнотой». По сути, это означает, что мне как честной доказывающей стороне, делающей честное утверждение, известно всё необходимое, чтобы я мог убедить верификатора.

    Следующее свойство предполагает, что доказывающая сторона не сможет, как я указываю, «содержательно» убедить верификатора в достоверности утверждения, не зная лежащей в его основе секретной информации. То есть я не могу обмануть верификатора, доказывая, что утверждение является действительным. Для этого и нужна некоторая секретная информация. Если у меня нет такой информации, то у меня не должно быть возможности доказать достоверность утверждения верификатору. Говоря «содержательно убедить», я подразумеваю, что есть случаи, в которых у доказывающей стороны может появиться возможность обмануть верификатора, допустим, при помощи многократного использования системы или каких-либо криптографических хитростей. И в данном случае мы говорим уже о «целостности знания». Система доказательства должна быть целостной. Нам не нужно, чтобы верификатор узнал какую-либо часть секретной информации. Он должен узнать только то, что утверждение является действительным. Таким образом, если у нас есть какая-либо связанная с утверждением секретная информация, верификатор не должен знать её, а должен знать то, что утверждение достоверно. Есть формальный способ записать это, но здесь я не стану приводить его. Но мы называем это свойство «нулевым разглашением». Итак, система доказательства должна быть полной, целостной и предполагать нулевое разглашение. И есть различные варианты этих свойств, и все они являются критически важными. И у верификатора, в свою очередь, не должно быть возможности убедить кого-то в том, что ему известна секретная информация. В коечном счёте, если кто-то говорит вам, что как верификатор убеждён в достоверности утверждения, содержащего чью-то секретную информацию, а также что ему не известна такая информация, и узнать её у него нет никакой возможности, то этот кто-то и не должен быть в состоянии притвориться доказывающей стороной, чтобы убедить кого-то ещё в том, что утверждение является действительным. Это, скажем так, тонкое свойство, но оно важно.

    А теперь давайте вместе разберём пару простых примеров. Существует несколько обязательных примеров, которые приводятся в рамках подобных вводных лекций. Возможно, вы слышали о них: в некоторых речь ведётся о пещерах, но в нашем случае мы берём шары для жонглирования. Это будет такой неполный, основанный на аналогиях, простой пример. Допустим, мой друг не различает красный и зелёный цвета, что совсем не смешно. Предположим, у меня есть два идентичных шара для жонглирования, и отличаются они только тем, что один из них красный, а другой зелёный. А мой друг не различает цвета и не видит этого отличия. Но я при этом различаю зелёный и красный цвета. В рамках данного примера я попытаюсь убедить моего друга, что эти шары различного цвета, что они не идентичны. Но при этом я не стану раскрывать ему, который из них красный, а который зелёный. И сделаю это с применением доказательства с нулевым разглашением.

    Давайте построим реальную систему доказательства и применим её в отношении моего друга, чтобы доказать, что шары обладают этими определёнными свойствами. И вот пример моей системы доказательства. Я беру и даю моему другу шары, по одному в каждую руку, после чего он прячет обе руки за спину. После этого он случайным образом решает, поменяет ли он местами шары, передав их из левой руки в правую и из правой в левую. При этом я не буду видеть, что происходит у него за спиной. Итак, я видел, какого цвета шары, но не знаю, поменял мой друг их местами или нет. Затем он показывает мне один из них, и я говорю ему, поменял ли он их местами, и мой друг решает, прав я или нет. В этом и суть примера. А теперь давайте посмотрим, есть ли у нас здесь свойства полноты, целостности и нулевого разглашения. Очевидно, они есть.

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

    Является ли доказательство целостным? Опять же это означает, что если я не различаю шары, то я не смогу убедить и моего друга. То есть, если я не различаю зелёный и красный цвета, не знаю какого цвета шары, то и после того, как их поменяют местами, я не буду знать, какого они цвета. И в этом случае мне остаётся только гадать. В этом примере всё же есть шанс случайно угадать правильно. Моему другу точно известно, менял он шары местами или нет, а мои шансы на правильный ответ составляют 1 из 2 — это статистика. И в этом случае у меня есть возможность обмануть его, допустим, единожды. Но если мы продолжим игру и будем делать это снова и снова, едва ли у меня получится правильно отвечать каждый раз. Таким образом, если мы будем повторять процесс, то появится некоторая мера целостности и в конечном счёте что-то выяснится.

    И наконец является ли доказательство доказательством с нулевым разглашением? Да, является, поскольку в нашем случае мой друг не получает никакой информации о цвете шаров. Мне известны цвета, а также то, что он их не знает. Но я не даю ему никакой информации, которой он мог бы воспользоваться. И в конечном счёте он не сможет впоследствии сыграть в эту игру с кем-либо другим, выступая в этом случае в роли доказывающей стороны, потому как верификатор будет выбирать менять или нет шары случайным образом, а у друга не будет никакой информации, которую он сможет использовать, чтобы ложно убедить кого-то ещё, различает он их или нет.

    Другим интересным примером, который мне нравится, является Вальдо. Это игра под названием «Где Вальдо?». Я люблю её — это круто. Если вы не слышали о ней, то цель состоит в том, чтобы найти Вальдо на большой картинке, в книге с картинками. Вальдо выглядит вот так. И, как правило, он очень и очень маленький и находится на очень большой картинке, на которой есть множество других похожих на него персонажей, но это уже просто другие, не имеющие значения персонажи […]. Но моя подруга не знает, как найти Вальдо, а я знаю, как это сделать. Она передаёт мне рисунок с Вальдо и спрашивает: «Как мне найти Вальдо?» Но я не хочу говорить ей, где он. Мне нужно убедить её, что мне известно, где он находится. И я хочу сделать это так, чтобы это было сродни доказательству с нулевым разглашением и чтобы она не получила никакой информации о местонахождении Вальдо. Также я не хочу, чтобы она смогла сказать кому-то ещё: «А я знаю, где находится Вальдо», если фактически ей не будет известно этого. Итак, давайте построим некую систему доказательства для этого случая.

    Для данного классического примера я беру большой лист картона, который гораздо больше изображения Вальдо, и вырезаю в этом листе отверстие точно по форме Вальдо. Моя подруга отворачивается, и я кладу лист картона на изображение Вальдо так, чтобы он был виден через это отверстие. После этого я говорю: «Готово», моя подруга поворачивается, и теперь она может убедиться в том, что Вальдо виден через отверстие в картоне. Затем она снова отворачивается, а я убираю картон, чтобы она не смогла узнать, где именно находилось отверстие.

    Обладает ли такое доказательство свойствами полноты, целостности и нулевого разглашения? Да, обладает. В случае с полнотой всё довольно просто — если мне известно, где находится Вальдо, я помещаю на него отверстие, а она смотрит через него, видит Вальдо и говорит: «Да, ты действительно знаешь, где Вальдо». Является ли доказательство целостным? Если бы я не знал, где Вальдо, мог бы я обмануть? Ну, я смог бы сделать это, если бы опустил лист картона случайным образом, и он бы лёг отверстием точно на изображение Вальдо. Много ли шансов на то, что так бы получилось, не знай я, где находится Вальдо? Конечно, не много. Такое попадание маловероятно? Пожалуй, это будет зависеть от того, как ляжет лист картона. То есть здесь есть определённая мера целостности. И если мы будем играть в эту игру снова и снова, едва ли я буду попадать всякий раз случайным образом, если не буду знать, где находится Вальдо. Является ли данное доказательство доказательством с нулевым разглашением? […] По крайней мере, моя подруга не сможет доказать позднее кому-то ещё, что ей известно, где находится Вальдо. У неё просто не будет для этого достаточно информации. Так что это можно считать грубым примером по аналогии с данными свойствами.

    Но на практике при использовании очень сложных протоколов транзакций многое будет зависеть от тех заявлений, которые будут лежать в основе систем доказательства с нулевым разглашением. На практике, очень вероятно, это будут очень и очень формализованные законы, по которым строятся математические языки, пишутся утверждения. Но если делать это неформально, то некоторые утверждения могут быть написаны на простом английском языке, как, например, в случае с утверждением, согласно которому мне известен приватный ключ к некоторому входу из гигантского набора элементов, но мне при этом не хочется раскрывать, к какому именно входу у меня есть ключ. Я просто утверждаю, что мне известен этот ключ. В случае с некоторыми подписями, системами доказательства используются подобные утверждения. Я утверждаю, что некое скрытое значение для неизвестного выхода транзакции находится в пределах указанного диапазона. Доказательства критически важны с точки зрения различных протоколов транзакций. И я хочу показать, что скрытые значения входов и выходов транзакции, которые я при этом не желаю раскрывать, потому что желаю сохранить их в тайне, сбалансированы, как положено, но вы при этом не увидите, сколько из них было использовано, а сколько создано при проведении транзакции. Вам просто будет известно, что всё сходится. В противном случае деньги перестают работать.

    Итак, это пример утверждений со скрытой частью данных. Или, например, во избежание двойной траты некоторые протоколы транзакций используют такие вещи, как связующие теги, которые ещё называют серийными номерами. Это протоколы, которые пытаются предотвратить двойную трату, извините, не буду в это погружаться и разъяснять, что это означает. Просто мы хотим предотвратить возможность двойной траты, не раскрывая каким-либо образом информацию, связанную с этими тегами, которая может сказать, что они собой представляют. Таким образом, в утверждении может быть сказано, что некоторый связующий тег соответствует какому-либо входу, который тратится в соответствии с данным доказательством, но при этом его функция раскрываться не будет. Итак, во всех этих случаях имеется некоторая секретная информация, лежащая в основе утверждения, действительность которой вы желаете продемонстрировать при создании транзакции, и это очень важно.

    Итак, продемонстрировать, что система доказательства является полной, а полнота — это одно из наших свойств, зачастую довольно просто. Часто для этого необходимо совершить ряд надлежащих арифметических шагов. Что касается демонстрации того, что система доказательства является целостной, то есть доказывающая сторона не может обмануть, часто используется техника, называемая «выделением», когда вы строите алгоритм, позволяющий при определённых обстоятельствах извлечь секретные значения. И это, по сути, может использоваться, чтобы математически продемонстрировать, что доказывающей стороне были известны секреты, если что-то было создано и правильно верифицировано в соответствии с протоколом. Для демонстрации того, что доказательство является доказательством с нулевым разглашением, как правило, используется техника под названием «моделирование доказательства». Моделирование доказательства, на котором я остановлюсь чуть подробнее, показывает, что доказательство не может стать причиной утечки данных, даже если верификатор сделает что-то не так. Таким образом, нулевое разглашение означает, что у нас имеется система доказательства, обладающая свойством, при котором верификатор ничего не сжигает, и обладание этим свойством демонстрируется путём моделирования.

    Часто мы рассуждаем о том, какой в принципе должна быть фактическая структура доказательства, и зачастую это зависит от мотивации, оснований, стоящих за действиями доказывающей стороны и верификатора. То есть, как правило, мы рассматриваем данный вопрос с точки зрения действий доказывающей стороны и верификатора, а фактически — их взаимодействия, обмена данными. Но, безусловно, в контексте протокола транзакций, мы этого не делаем. Вы можете создать транзакцию, содержащую доказательство, не взаимодействуя с кем-либо, кто будет верифицировать её, а это вся сеть. И для этого существуют техники, позволяющие учесть такое взаимодействие и обмен данными и сжать это до одного раунда обмена данными. Я могу обсудить с вами технический аспект этого позднее, если пожелаете, но в интерактивной версии обычно существует начальный раунд обмена данными, который показан в верхнем ряду, когда данные отправляются доказывающей стороной верификатору. Но в рамках рутины доказательства верификатор затем отвечает тем, что называется «запросом», который является случайным для доказывающей стороны. А доказывающая сторона отвечает на данный запрос верификатора, и таких раундов может быть множество. Затем верификатор рассматривает все раунды взаимодействия и в соответствии с протоколом системы доказательства решает, является ли предоставленное ему доказательство действительным или нет.

    В нашем примере с цветными шарами я как доказывающая сторона изначально расположил шары в определённом порядке, передал их верификатору, моему другу, который спрятал их за спину. Затем мой друг случайным образом «сформировал запрос», решив, менять их местами или нет, после чего показал мне один, и моим ответом было, что он их поменял. Это и есть пример взаимодействия доказывающей стороны и верификатора. А когда мы занимаемся так называемым моделированием, доказываем, является или нет существующая система системой с нулевым разглашением, нами создаётся алгоритм, предполагающий, что доказывающая сторона уже предварительно получила случайное значение запроса. То есть, что важно, в данном случае не доказывающая сторона сначала отправляет данные верификатору, а сперва отправляется запрос. И когда мы занимаемся моделированием, мы, по сути, говорим: «Предположим, запрос был отправлен заранее», и строится алгоритм, который выглядит, как реальное доказательство, которое позволит убедить верификатора. И вы можете воспользоваться им, если будете утверждать, что в результате использования доказательства может произойти утечка данных. Таким образом, когда мы занимаемся доказательством наличия нулевого разглашения, мы строим эти алгоритмы и демонстрируем, что они обладают этим свойством.

    Так что же обеспечивает нулевое разглашение, позволяет ему иметь все эти свойства, которые работают таким вот образом, подтверждая правильность утверждений, не допуская при этом утечки информации? Что я вижу в реальности, когда подобное включается в протоколы транзакций? Мне известно и другое их применение, но сегодняшней нашей темой являются именно протоколы транзакций. И если у нас имеется протокол транзакций, содержащий в качестве «строительных блоков» одну или несколько систем доказательства с нулевым разглашением, поскольку такие системы являются компонентами, которые используются помимо прочего для построения транзакций и связанных с ними протоколов, важно отметить, что это вовсе автоматически не подразумевает, например, что транзакции будут неотличимы друг от друга и единообразны, о чём мы говорили ранее. В структуру транзакций, как правило, входит множество других данных. Туда может входить одно или несколько доказательств с нулевым разглашением, но они в равной степени могут включать в себя ссылки на входы, ссылки на выходы, вспомогательные данные, возможно, какие-то другие виды доказательств или подписей. Всё что угодно. Обеспечение единообразия и невозможности отличить их является функцией протокола транзакций, но наличие нулевого разглашения, системы доказательства с нулевым разглашением, вовсе не гарантирует этого. Это отдельное техническое решение, требующее реализации. Это также не подразумевает, что в транзакциях не раскрывается какой-либо информации, что, как я думаю, является общим заблуждением. Мне кажется, все считают, что, если ваш протокол транзакции построен с использованием одной или нескольких систем доказательства с нулевым разглашением, это означает, что в транзакции не разглашается никакой информации. Но это совсем не обязательно будет так. В частности, система доказательства с нулевым разглашением скрывает только ту секретную информацию, которая позволяет подтвердить, что утверждение является действительным, и более ничего другого. Это такой небольшой самодостаточный ящик, позволяющий продемонстрировать что-то в отношении утверждения. И если вы делаете что-либо иное с вашим протоколом транзакций, этот вовсе не означает, что вы автоматически получите свойство, которое воспрепятствует раскрытию информации. При тщательной разработке можно создать протоколы, которые бы ограничили раскрытие информации, но это не срабатывает автоматически в случае с системами доказательства. И вовсе необязательно протокол транзакций решит какую-либо отдельную проблему, связанную с приватностью. Я считаю, что приватность и доказательства с нулевым разглашением зачастую некоторым образом взаимосвязаны. И по понятной причине приватность непосредственно связана с секретной информацией, информацией, касающейся утверждений, в отношении которых применяются системы доказательства с нулевым разглашением, но протокол может предусматривать совершенно другие шаги, использовать другие методы и технологии, которые будут где-то за пределами системы доказательства. Поэтому протокол транзакций может вовсе не обладать какими-либо свойствами, связанными с обеспечением приватности, даже если лежащая в его основе система доказательства с нулевым разглашением будет обладать всеми этими замечательными свойствами.

    Всё это означает, что определённо мы можем строить протоколы транзакций, которые будут обладать необходимыми вам свойствами более высокого уровня, допустим, позволяющими проверить баланс транзакции или же обеспечивающими единообразие или невозможность подделки транзакций. И зачастую эти свойства протокола транзакций будут опираться на свойства лежащей в основе системы доказательства с нулевым разглашением. Но это вовсе не обязательно. Тут можно провести следующую аналогию. Допустим, вы можете утверждать, что железо в сочетании бетоном является прекрасным и безопасным строительным материалом. Но вполне вероятно, что мост, построенный из железобетона, не будет безопасным. Сам факт того, что вы строите мост и железобетона, ещё не гарантирует его защиту от крушения. Как-то я смотрел фильм под названием «Скорость» с Киану Ривзом в главной роли, и там был мост из железобетона с гигантскими провалом, и это был вовсе не безопасный мост. Им пришлось прыгать на автобусе, в общем, было круто. Им удалось сделать это, ну, потому что Киану Ривз был в главной роли. И это был только фильм. Но это вовсе не значит, что любой мост, построенный из бетона и стали, автоматически будет безопасным. Это означает лишь то, что при строительстве моста, вероятно, использовались безопасные строительные материалы, но вовсе не обратное. Таким образом, вы можете применять в вашем протоколе самые различные решения, использовать различные виды анализа, но всё это совершенно никак не будет гарантировано свойствами лежащего в основе процесса.

    И вот что я вынес для себя, сравнивая компоненты городских систем с протоколами. Системы доказательства с нулевым разглашением критически важны, но в различных протоколах транзакций существуют другие менее заметные компоненты, и эти протоколы могут строиться с использованием полезных свойств, обеспечивающих безопасность. И это здорово, но, опять же, наличие в вашем протоколе системы доказательства ещё не подразумевает, что он будет соответствовать используемому вами определению безопасности или же будет обладать необходимыми вам свойствами безопасности. Анализ должен быть шире анализа безопасности лежащих в основе протокола отдельных компонентов, таких как системы доказательства. Таким образом, если вам необходимо реализовать свойства безопасности на уровне протокола, такие как проверка баланса, единообразие или невозможность подделки транзакций, следует понимать, что в их основе лежат свойства систем доказательства, но это не одно и то же. Поэтому мой девиз звучит так: «Система доказательства — это ещё не протокол транзакций». Они связаны, они важны, они взаимодействуют, но это не одно и то же.

    Надеюсь, мне удалось довольно кратко объяснить, что мы имеем в виду, когда говорим о доказательствах с нулевым разглашением, говорим о том, какими должны быть наши протоколы транзакций. Мы намеренно оставили время для вопросов. Сколько у нас для этого времени? Поднимают большой палец вверх, а значит у нас много минут. Итак, есть вопросы по поводу того, как всё это работает, в отношении представленного материала, Я буду рад ответить. То есть в отношении вещей, о которых вы, вероятно, слышали, об использовании систем доказательства в протоколе транзакций Zcash, например, систем доказательства со сложными утверждениями, транзакций и выходов. Monero использует систему доказательства с нулевым разглашением или верификацию диапазона. Вопросы в отношении свойств, связанных с проверкой баланса транзакций, различных проектов и систем протоколов. Стоит отметить, что свойства безопасности некоторых протоколов транзакций и, например, протокола Zcash могут очень отличаться.

    ---

    Источник:
    Introduction to Zero Knowledge Proofs (Dr. Sarang Noether) - Cryptocurrency Village at DEF CON 2021

    Перевод:
    Mr. Pickles (@v1docq47)
    Редактирование:
    Agent LvM (@LvMi4)
    Коррекция:
    Kukima (@Kukima)
     
  • О нас

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