Рейтинг:1

zkSnarks: обеспечение того, чтобы переменная имела единственное значение во всех операциях, в которых она используется.

флаг et

Я читаю это объяснение zkSnarks, написанное Максимом Петкусом - http://www.petkus.info/papers/WhyAndHowZkSnarkWorks.pdf

В разделе 4.5 в PDF-файле объясняется, как представлять следующие операции.

$а$ Икс $b = r1$
$r1$ Икс $с = г2$

как $l(x)r(x) - o(x)$ куда $л(х)$ - многочлен левого операнда, $ г (х) $ является полиномом правого операнда & $о(х)$ является выходным полиномом.

Вот если ты это увидишь $а$ используется только один раз в LHS первого набора операций - он используется только в первом (т.е. $а$ Икс $b = r1$) - его нет во втором.

В 4.6 он переходит к тому, как сделать то же самое, когда $а$ повторяется. то есть

$а$ Икс $b = r1$
$а$ Икс $с = г2$

Здесь $а$ присутствует в обеих операциях

Так он говорит

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

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

Далее в 4.6.1 он говорит

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

Я не могу этого понять - коэффициенты $л(х)$ приходят из всех операций (вы найдете $л(х)$ используя что-то вроде полиномиальной интерполяции Лагранжа для обеих операций). Так как же доказывающий может использовать разные коэффициенты для разных операций. Может кто-нибудь пояснить на примере?

Рейтинг:1
флаг gb

Предположим, вы хотите использовать $а$ в двух ограничениях, как вы написали. Вы хотите предположить, что $л(х_1) = а$ и $л(х_2) = а$, куда $x_1$ и $x_2$ являются индексами двух ограничений. Но $л(х)$ создается испытателем, и они, безусловно, могли бы выбрать $л(х)$ который оценивается как два разные значения в $x_1$ и $x_2$. Тогда у вас в основном есть две независимые переменные вместо использования $а$ дважды. Это показано в верхней части страницы 36 в связанном PDF-файле.

До этого момента каждое ограничение проверяется независимо. Под этим я подразумеваю, что $l(x_i)*r(x_i) - о(x_i) = 0$ по каждому индексу $x_i$, что проверяется обеспечением $(х-х_я)$ является корнем многочлена. Теперь нам нужен способ проверить равенство переменных между двумя разными ограничениями.Другими словами, чтобы как-то установить такие вещи, как $л(х_1) = л(х_2)$ между разными индексами.

Это делается путем дальнейшего ограничения способа, которым доказывающая сторона может построить многочлены (например, $л(х)$), поэтому они не могут просто интерполировать любые значения, которые им нравятся. Один из способов сделать это — дать доказывающему различные полиномы. $л_а(х)$ которые оцениваются до 1 всякий раз, когда $а$ используется и 0 везде. Например, многочлен, где $l_a(x_1) = l_a(x_2) = 1$, а в остальных местах равен нулю. Затем они могут просто умножить это на $а$ установить такое же значение $а$ во всех местах он используется. Чтобы заставить доказывающую использовать это, мы снова шифруем его и предоставляем $\альфа$ измененная версия: $$g^{l_a(x)}, g^{\alpha l_a(x)}$$ (как это делалось много раз ранее). Затем доказывающий может возвести каждое из них в степень $а$ чтобы установить это значение во всех местах.

Если у нас есть еще одна такая пара для другой переменной $д$: $ $ г ^ {l_d (х)}, г ^ {\ альфа l_d (х)} $ $ Тогда доказывающий может установить оба $а$ и $д$ а затем умножить зашифрованные полиномы вместе (что соответствует сложению полиномов в показателях вместе).

То же самое делается для $ Р (х) $ и $ О (х) $.

Есть еще одна уловка, рассмотренная в разделе 4.9.3, которая позволяет доказывающему добавлять дополнительные элементы к своим полиномам путем умножения на другой. $г^1$ и $ г ^ {\ альфа} $. Это исправлено введением еще одного секретного сдвига $\гамма$.

meshcollider avatar
флаг gb
> «это так даже в более раннем случае. даже в более раннем случае доказывающий мог выбрать все, что захочет» - да, и именно поэтому нам нужно постепенно ограничивать то, что доказывающий может выбрать в PDF, поэтому когда мы закончили, мы убеждены, что они не могли обмануть.
флаг et
Есть ли пример того, как доказывающий может использовать что-то в случае, когда доказывающий не ограничен?
meshcollider avatar
флаг gb
Абсолютно. Допустим, вы пытаетесь доказать что-то, что сводится к некоторым ограничениям, включая $b = a + 1$ и $c = a - 1$. Без уверенности в том, что значение $a$, используемое в обоих этих ограничениях, одинаково, $b$ и $c$ могут независимо принимать произвольные значения, и проверка все равно будет пройдена. Допустим, злоумышленник использует значение $b = 8$ и $c = 0$. Очевидно, не существует $a$, для которого оба эти утверждения могут быть истинными. Но при использовании $a = 7$ в первом ограничении и $a = 1$ во втором оба ограничения будут проверяться независимо друг от друга.
флаг et
Когда злоумышленник формирует $l(x)$, $o(x)$ и $r(x)$ со значениями, отличными от того, что на самом деле является правильным, как тогда будет работать интерполяция Лагранжа? Не споткнется ли прувер в этот момент?
meshcollider avatar
флаг gb
Интерполяция Лагранжа работает для любых значений, которые вам нравятся. Например, если предполагается, что $l(x)$ равно $a$ при $l(x_1)$ и $l(x_2)$, ничто не мешает доказывающему интерполировать $l(x_1) = a$ и $ l(x_2) = b$, получая $l(x)$, отличный от того, который вы получили бы, если бы честно установили оба $a$ в одно и то же значение. Все, что вы делаете, это находите многочлен, который проходит через точки $(x_1, a)$, $(x_2, b)$ вместо $(x_1, a)$, $(x_2, a)$
флаг et
Я создал для этого чат - https://chat.stackexchange.com/rooms/134216/temp-zksnark - я задал там свой вопрос - не могли бы вы взглянуть на него

Ответить или комментировать

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