ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА
2023 Математические методы криптографии № 59
МАТЕМАТИЧЕСКИЕ МЕТОДЫ КРИПТОГРАФИИ
УДК 003.26 + 004.056 + 001.99 DOI 10.17223/20710410/59/2
КРАТКИЕ НЕИНТЕРАКТИВНЫЕ АРГУМЕНТЫ С НУЛЕВЫМ РАЗГЛАШЕНИЕМ НА ОСНОВЕ НАБОРОВ ПОЛИНОМОВ
И. В. Мартыненков АО «КВАНТ-ТЕЛЕКОМ», г. Москва, Россия E-mail: mivpost@vandex.ru
Рассматриваются принципы построения и основные виды кратких неинтерактивных аргументов с нулевым разглашением для выполнимости булевых функций с использованием различных полиномиальных наборов, в том числе и для аутен-тифицированных данных. Приведены различные алгоритмы формирования публичных параметров, доказательств достоверности вычислений и их верификации. Представлены необходимые криптографические преобразования и некоторые примеры многосторонних верифицируемых вычислений.
Ключевые слова: доказательство знания, достоверность вычислений, нулевое разглашение, краткие неинтерактивные аргументы.
ZERO-KNOWLEDGE SUCCINCT NON-INTERACTIVE ARGUMENTS OF KNOWLEDGE BASED ON SETS OF POLYNOMIALS
I. V. Martynenkov
JSC "KVANT- TELECOM", Moscow, Russia
The paper discusses the basic principles of construction and the main types of zero-knowledge succinct non-interactive argument of knowledge (zk-SNARK) which is used in the model of a three-way insecure computing environment and based on sets of polynomials. A number of zk-SNARK cryptographic protocols with different algorithms for generating public parameters (Trusted Setup) are given, constructing succinct proofs of reliability calculations (Prover) and public/designated verification of proofs (Verifier). The cases of satisfying the feasibility of discrete functions (arithmetic/ Boolean circuits) using different polynomial sets are presented in quadratic arithmetic programs (QAP), square arithmetic programs (SAP), quadratic span programs (QSP), square span programs (SSP), quadratic polynomial programs (QPP), etc., also the use of authenticated data are described. The cryptographic transformations needed to build zk-SNARKs based on symmetric and asymmetric hash functions, exponential knowledge problems, digital signatures, homomorphic encryption, bilinear pairings based on elliptic curves, etc. are presented. Examples of multilateral verifiable calculations based on zk-SNARK are given.
Keywords: proof of knowledge, reliability of calculations, zero knowledge, succinct non-interactive arguments.
Введение
Системы доказательств дня задач класса ХР позволяют доказывающему, в том числе ненадёжному, убедить проверяющего в том, что объект w обладает свойством L или, что эквивалентно, w G L, оде L — NP-полный язык, В общем случае проверяется выполнимость дискретной функции C : {0,1}n х {0,1}h ^ {0,1}г, представляющей бинарное отношение Rc = {(x, w) G {0,1}n х {0,1}h : C(x,w) = 01} с языком Lc = = {x G {0,1}n : 3w G {0,1}h (C(x, w) = 0г)}. Если l = 1, то функция C(x, w) = {0,1} — булева схема, если l > 1, то арифметическая. Преобразование в неинтерактивный режим выполняется за счёт доверенного формирования публичных значений па основе секретных параметров защиты. Например, в криптовалюте Zcash этот этан называется «церемония» |1|,
Как правило, краткие пеиптерактивпые аргументы с нулевым разглашением включают тройку алгоритмов (G, P, V): формирователь ключей (Key Generator), доказывающего (Prover) и верификатора (Verifier), Алгоритм G принимает A G N, дискретную функцию C : {0,1}n х {0,1}h ^ {0,1}1 и проводит однократную дорогостоящую настройку общедоступных параметров выводом ключей доказательства о (Proving Key) и верификации т (Verification Key), На основе о, публичного входа схемы x и секрета w, знание которого доказывается, алгоритм P вычисляет доказательство п,
w
ww Верификатор V проверяет, что п является допустимым доказательством для x G Lc и (x, w) G Rc:
(о, т) ^ G(1A,C), п ^ P(о,x, w), 0/1 ^ V(т, x, п).
Для параметра защиты A G ^^ функции C : {0,1}n х {0,1}h ^ {0,1}1
и пары ключей (о, т) G(1A, C) если выводится пара (x, п), такая, что не существует (x,w) G Rc, то V(т, x,п) отклоняет доказательство. Протоколы с нулевым разглашением должны обладать свойствами полноты, корректности и нулевого разглашения |2|,
В дальнейшем дня краткости вместо наименования «краткие пеиптерактивпые аргументы с нулевым разглашением» будем использовать стандартное обозначение «протоколы zk-SXARK» (Zero-Knowledge Succinct Xon-interaetive Argument of Knowledge), Конструирование и применение протоколов zk-SXARK включает |3| описание функции F(•) на языке программирования, компиляцию исходного кода в арифметическую/булеву схему, задание канонического представления схемы в RlCS-форме, переход к полиномиальному представлению (QAP, SAP, QSP, SSP, QPP и др.) дня сведения доказательства к выборочной проверке полиномов в секретной точке, внесение значений полиномов в степень порождающих элементов групп и выполнение билинейных спариваний. Подробное описание основополагающих этапов построения и принципов работы протоколов zk-SXARK представлено в |4|,
Протоколы zk-SXARK являются строительными блоками многих криптографических приложений, в число которых входят защищенные многосторонние распределённые вычисления |5-8|, групповые подписи |9|, гибкие системы проверки |10|, анонимные учётные данные |11|, делегируемые учётные данные |12|, электронное голосование 113, 14|, финансовые технологии распределённых реестров на основе кринтова-лют 11,15—211, схемы делегирования вычислений функций но заданным входам с дока-
зательетвом корректности результатов [22], конфиденциальные подтверждения пересечений множеств (Private Set Intersection, PSI) без разглашения сведений о них (мощность, состав и др.) [23, 24], конфиденциальное суммирование элементов по приватным атрибутам (Private Intersection-Sum, PIS) [25-27], обращения в базы данных недоверенного провайдера без разглашения запрашиваемых индексов (Private Information Retrieval, PIE) [28] на основе дискреционных схем доступа [29, 30] с использованием «шумового» подхода, по ответам которых невозможно выделение факта присутствия/отсутствия конкретного объекта, и др.
Исчерпывающее описание всех разновидностей протоколов zk-SNARK не соответствует формату статьи, поэтому в ней рассматривается ряд исторически базовых схем на основе полиномиальных наборов,
о
1. Протокол И. Грота на основе перестановки элементов векторов
Протокол DV zk-SNARK Й. Грота [31] использует предположение о вычислительной надёжности задачи Диффи — Хеллмана (q-Computational Power Diffie — Hellman Assumption, q-CPDH), В [31] приводится пример использования публичной перестановки р, которая удовлетворяет равенствам bi = ap(i) для i g {1 ,...,n}. Для краткости обозначим {1,...,n} = [n]. Более полно идеи применения перестановок раскрыты в протоколе X, Липмаа [32], Рассматривается матрица n2 значений an,..., ann, bu,..., bnn, соответствующих левым/правым входам вентилей булевой схемы, Значения в столбцах фиксируются обязательствами c1,...,cn, Oj = grj П яТ3
i€[n]
значения в строках — обязательствами d1,... ,dn, di = gsi П gj^n+iy ® результате за-
i€[n]
n Oj n
обязательств d^. Необходимо построить доказательство, подтверждающее, что (Oj ,dj,) содержат столбцы и строки одной и той же мартицы.
Алгоритм формирования ключей (a = (ck,g,a,a)) ^ G(1k)
1, Формируются параметры группы gk = (p, G, GT,e), порождающий элемент g G G \ {1}, где p —порядок группы G; e —билинейное спаривание,
2, Фиксируется четвёрка ограничений множеств для q = n2 + 3n — 2 значений, где n
S= {1,...,n}, S= {(n +1),.. .,n(n +1)}, S= {l G [q] : l = 0 (mod n + 2)}, S С [q].
В (1) подмножество S С [q], причём q имеет такой вид, что индексы ненулевых
S
3, Выбираются случайные значения x, a G Zp
4, Формируется ключ доказательства знания для q = n2 + 3n — 2 значений:
7/7 /ч xn 2 a axn 2 \
ck =(gk,g,...,gq,g,...,gq) = (gk,g,...,g ,g,...,g ).
5, С использованием подмножеств (1) строится главная ссылочная строка (Common Reference String, CRS) a = (h, {hi}ieS) = (ga, {ga}ieS), которая открыто публикуется для всех участников протокола и необходима для формирования и верификации доказательств:
a,S,a ^ G(ck, S), G(ck, S),G(ck, S).
6, Для схемы доказательства формируется секретная «лазейка» tk = ж, необходимая верификатору для имитирования корректных доказательств,
7. На выход подаётся CRS в виде а = (ck, а, <г, а).
Алгоритм доказывающего п ^ P(а, ri,..., rn, ац,..., ann, si,..., sn, 6ц,..., 6nn)
Открытый вход имеет вид зафиксированных обязательств c = (c1,...,cn), d = = (d1,..., dn) G а секретное свидетельство доказывающего включает показатели экспонент r1,..., rn, s1,..., sn G Zp и значения входов а11,..., ann, 611,..., 6nn, на основе которых строятся обязательства:
Vi, j G [n] Cj = grj П gfj, di = П gj+i), = bj . (2)
\ i€[ra] j€[n] у
Например, на основе (cj, d^ G G2 можно проверить корректность обязательств за счёт выполнения уравнения e(g,di) = e(cj, g), Выполняются следующие шаги:
1, Выбирается случайное t G Zp, с помощью которого фиксируется «лазейка»,
2, Вычисляется набор компонентов доказательства:
nL = g' П g7(n?+1), nR = g' П g-Si,
j€[n] i€[ra]
nL=& n ^п+Ф nR=& n ,
j€[n] i€[ra]
nL = h' П j+1), nR = h' П .
j€[ra] i€[ra]
3, На выход подаётся доказательство п = (nL, nR, nL, nR, nL, nR),
Алгоритм верификатора 0/1 ^ V(a, c = (c1,..., c:), d = (d1,..., d:), п)
Верификация подтверждается, если с использованием обязательств (2) выполняются все равенства:
e(g,nR ) = e(nR,g), e(g,nR) = e(nR ,h), e(g,nL) = e(nL,g),
e(g,nL) = e(пL, h), e(g,nL) П e(cj,gj(n+1)) = e(g,nR) П e(gi,di).
j€[ra] i€[ra]
2. Протокол P. Дженнаро, С. Джентри и Б. Парно
Верифицируемые вычисления тесно связаны с протоколами zk-SNARK, В VC (Verifiable Computation) Р, Дженнаро, С, Джентри и Б, Парно [34] используется протокол Яо [35, 36], предназначенный для двухстороннего вычисления функции F схемы C по частным входным данным а, 6. Формируется замаскированное значение схемы G(C), входа G(a) и отправляется второй стороне. Вторая сторона формирует и направляет первой стороне G(6) и вычисляет G(F(а, 6)), а первая снимает шифрование и получает искомое значение.
Детальнее, для каждого провода w выбирается два случайных значения k00, kW G G {0,1}Л, представляющих значения 0 и 1, где Л —параметр защиты. Строятся замаскированные значения вентилей g с входными проводами wa,wb и выходным проводом wz, Для i,j G {0,1} и симметричной схемы шифрования E замаскированная версия G(g) представляет собой четыре шифртекета
Yij = Efca (E. (fcf,j))). (3)
Схема шифрования Е должна поддерживать свойство «проверяемого диапазона»: существует машина М, для которой М(к, 7) = 1 при 7 € что позволяет распознавать связанные с каждым вентилем шифртексты. Для скрытия структуры схемы порядок зашифрованных текстов случайно изменяется, т, е, первый зашифрованный текст не обязательно кодирует выход для (0,0), Первая сторона фиксирует соответствия между истинными входами 0/1 и соответствующими строками к^/к^ так, что вторая сторона не узнает истинные входные биты.
Стороны обмениваются сообщениями, чтобы второй участник получил значения проводов, соответствующие его входным данным (например, к0 ил и к\). Вторая сторона узнаёт по одному значению на провод, а первая сторона ничего не узнаёт о его вводе. Вторая сторона использует замаскированные значения проводов и выводит результирующее значение вентиля. Первая сторона сопоставляет данные со значениями 0/1 и получает результат вычисления Е.
Алгоритм формирования ключей схемы (РК,БК) ^ Кеувеп (Е, Л)
Используется функция Е схемы С с соответствующей С^АР [37] размера т и степени Полиномиальные задачи С^АР также рассмотрены в [38], Для каждого провода иг выбираются случайные метки проводов и^и1 ^ {0,1}Л, Для всех вентилей д, согласно (3), вычисляются по 4 шифртекета (Тоо, Тоъ т!о, 7и)- В схеме [37] используется РК
крытым ключом РК является набор шифртекстов, а секретным ключом Б К — набор случайных меток проводов:
РК ^ и(7оо,7о1,7?о,7?1))
я
Б К ^ ик^1)).
г
Алгоритм формирования ключей схемы гомоморфного шифрования ах ^ РгоЬСепж(х)
Формируются ключи (РКЕ,БКЕ) ^ Кеувепе(Л) схемы полностью гомоморфного шифрования. Пусть иг С БК являются значениями проводов, представляющими
х
вид:
ах ^ (РКе, Епее(РКе,иг)), Тх ^ БКе .
Алгоритм вычисления функции ау ^ СотрРК(ах)
Вычисляется ЕпсЕ(РКЕСтроится схема Д, которая па входе выводит
Бт(Б^ (7)), где Б - алгоритм расшифрования, соответствующий алгоритму шифро-Е
текеты, аналогично оценке замаскированной схемы Яо [35, 36], многократно вычисляются Еуа!Е(Д, ЕпсЕ(РКЕ,иг) и ЕпсЕ(РКЕ, Для значений проводов и)г, представляющих у = Е(х) в двоичном формате, результатом вычисления функции выступает
а у ^ ЕПСе (РКе ,иг).
Алгоритм верификации у/0 ^ VerSK (ау)
Используется секретный ключ БКЕ (5) для расшифрования иг ^ ЕпсЕ(РКЕ,иг), БК у
и сопоставление успешны, то верификация выполняется.
(4)
5)
Источник [40] представляет протокол zk-SNARK для любого NP-языка с небольшими С RS и включает соответствующие компактные доказательства того, что шифртекст получен из открытого текста 0 или 1, а также доказательства выполнимости схем,
3. Протокол П. Фаузи, X. Липмаа, Б. Чжана
П, Фаузи, X, Липмаа и Б, Чжан в [41] ввели новую (Л, v)-cxeMv обязательств с «лазейкой», в которой n = poly(fc), Л = (Ab...,An) е Z^ —множество без прогрессии, соответствующее [32], при Ai < Ai+1, Ai = poly(fc) и v > maxAj. Фиксируются
i
параметры группы gk, определяются секреты (a, а) е Zpp, для i е [n] формируется набор (gz,Ai, gz,Ai) = (gz, g^и устанавливается (hz, hz) = (gz, g^Публичный ключ, применяемый для формирования обязательств, определяется как ck = (gk, (gz,Ai, äz,Ai )ie[n],hz, hz), «лазейка» td = a С RS обязател ьств ck и «лазейки» cktd формируются аналогичными способами, В результате функции построения обязательств вектора а = (а1,..., an) е Z^, обязательств «лазейки» и раскрытия обязательств «лазейки» (соответствует выполнению равенства Com(cktd, 0, r) = Com(cktd, а, rtd) используют рандомизатор r е Zp и имеют следующий вид:
Com(ck, а, r) = (hz, hz)r П (gz,A; ,gz,A*)a = A,
i=1
Comid(ckid, r) = Com(cktd, 0, r) = (hz, hz)r, (6)
n
Openid(ckid, td, a, r) = r - ^ aiaAi_v.
i=1
Протокол zk-SNARK на основе произведения Адамара [41] совпадает с вариантом [32], но вместо (Л, 0)-схемы используется (Л^)-схема связывания. Как и прежде, доказывается, что при данных обязательствах A, B, C (6) выполняются равенства ci = aibi дая i е [n].
По сравнению с [32] вычисления доказывающего сокращаются до O(r-1 (n) log r-1 (n)) в Zp и 2O(r-1 (n)) возведений в степень в G2, где r3(n) — мощность наибольшего мно-
Л е [n]
одно произведение, CRS включает O(r-1(n)) элементов группы,
В [31, 32] рассмотрены протоколы zk-SNARK на основе перестановок, которые требуют значительных вычислительных ресурсов, В протоколе zk-SNARK с использованием правого/левого сдвига на £ (rsftg([(A, A)]) = [(B,B)]) [41] на основе обязательств A, B доказывается знание £ для выполнения равенства ai = bi+g при i е [n — £] и an_g+1 = ... = an = 0 (an_g+1 = b1,...,an = bg), Таким образом, (an,... ,01) = (0,..., 0, bn,... ,b?+1) ((an,... ,«1) = (bg,..., b1, bn,... ,bg+1)). Данный протокол имеет следующий вид:
Алгоритм формирования ключей crsrsft ^ Grsft(1fc, n)
1, Выводятся параметры группы gk, случайные значения a, а е Zp и gz = g^ Для z е {0,1}
2, Для l е {v} U Л вычисляются (g1,1 ,g1,1) = (g1, g1)CT^. Устанавливается g2,g = g25.
3, Для i е {A1,..., Ag, v, v + £} вычисляются (g2,i, g2,i) = (g2, g2)CT'.
4, Для i е [1,n — £] вычисляются (h2,i,h2,i) = (g2,g2)(a^+ii+i
5, Устанавливается ключ, необходимый для формирования обязательства: ck = = (gk, (g1,i,g1,i)ieWUA), и выводится CRS:
crs ^ (ck, gl, g1, g2, g2,g, (g2,i, g2,i)i€{Ai,...,Ai^v+gb (h2,i, h2,i)ie[1,n_g]).
Алгоритм доказывающего ffrsft ^ Prsft(crs,ursft = (A,A,B,B,B), wrsft = (a, ra,
b,rb))
Вычисляется и подаётся на выход доказательство сдвига вида n-í í
nrsft ^ (п,П) = П (h2,i, h2,i )*+€ П (g2,Ai ,#2А )-bi (g2,v+í , #2,v+í )a (g2,v ,~92,v )-П. i=1 i=l
Алгоритм верификатора 0/1 ^ Vrsft(crs, ursft, nrsft = (n,n)) Верификация подтверждается, если выполняются равенства
e(A,92,í )/e(B,g2) = e(gl,п), e(gi,n) = е(сц,п).
Для доказывающего наиболее трудоёмки 2 O(n) произведений в Zp, (2 + O(1)) х х log2 ß ■ n/ log2 n + O(n) билинейных произведений, где ß < p. Верификация выполняется пятью билинейными спариваниями, CRS состоит из O(n) элементов группы,
4. Протокол Р. Дженнаро, С. Джентри, Б. Парно, М. Райковой
Работы [37, 42] представляет собой развитие результатов [31, 43-45], при этом задачи QSP/QAP формируются из логических/арифметических схем C : Fn х Fh ^ F1, являющихся отображением с (n + h) значениями поля F и l выходами .Отображение C является арифметической схемой, если выходы определяются входами, проходящими по рёбрам (проводам) к вершинам графа (двоичным вентилям) в виде операторов «+» х
стпмым заданием схемы C является набор (а\,... ,aN) G FN, где N = (n + h) + l —
число всех входов и выходов, при которых C (а\,..., an+h) = (an+h+i,... ,aN), При этом
целевой полипом t(x) = ]/[ (x — ri), где ri G ^ ^ юрни; g G M — мультипликативные
деы
вентили схемы.
Недостатком QSP является то, что они описывают логические схемы (один бит на выходе), в то время как QAP более удобно описывают арифметические схемы (набор
битов на выходе) из вентилей сложения и умножения в виде уравнений по модулю по-p
приводит к более длинным доказательствам постоянного размера. Однако вычисления QAP более производительны, так как доказывающий выполняет криптографические операции над целыми элементами в кольце F [x] вместо операций для каждого логического вентиля в случае QSP, Далее рассматривается протокол DV zk-SNARK на основе QAP [37, 42], которая работает с элементами поля и поэтому является более производительной версией побитовых QSP,
Протокол zk-SNARK с алгоритмами (Gen, Regen^, P, V) для QAP использует R = = {(u, w)} — множество отношен ий над Fn, u —открытый вход, w —секретное свидетельство, Входные индексы i G {1,..., n'} соответствуют состоянию u, а позиции i G {n' + 1,..., n}— секретному свидетельству w. Отношение R может проверяться
F
ческой функции f (u, w) = 1 при (u, w) G R. В данном случае рассматривается язык L, в котором (x, w) G R при f (x) = w. Для этого требуется модифнкацпя f, чтобы построить арифметическую схему ^принимающую (u, w) в качестве входных данных,
(u, w) G R
SNARK с использованием QAP для ф. В свою очередь, ф запускает f с входом u (путём
ff
вида (wn/+1,..., w'n) ■ Затем вычисляются (bni+\,... ,bn) = (wWn,+1 — wn/+i,... ,w'n — wn),
которые должны иметь нулевые значения, если ввод схемы u является удовлетворительным.
Для отношения R многочлены QAP представлены гомоморфным зашифрованием их оценок в некоторой секретной точке s над полем F, например {E(vk(s))}, Для общедоступной верификации может использоваться возведение в степень внутри билинейной группы [31, 32] в виде E(vk(s)) = без расшифрования. Для фиксированного верификатора применяется схема аддитивного гомоморфного шифрования типа Пайе [46] или RSA [47] в виде E(vfc(s)) = Epfc(vfc(s)) с храпением секретного ключа расшифрования sk, В дальнейшем для краткости протоколы zk-SNARK с общедоступной верификацией будем обозначать PV (Public Verifiable) zk-SNARK, а с фиксированным верификатором — DV (Designated Verifiable) zk-SNARK, Алгоритм Gen формирования CRS
На вход подаются параметр защиты А и верхняя граница d степени QAP, Для функций / вычисляется пара асимметричных ключей (pk,sk), например RSA, В мультипликативной группе поля выбираются случайные независимые a, s G F* и выводятся
priv = sk, crs = (pk, {E(si)}ie[o,dj, {E(asi)}ie[o,dj).
Для протоколов PV zk-SNARK секретный ключ priv = sk также не используется. Специфичное для функции формирование CRS алгоритмом Regen На вход подаются crs функция / со строгим QAP Qf размер a m степени не выше d:
Qf = (V, W, Y,i(x),/free, labeled = U ). (7)
Также подаётся n' G [1, n], /¡n = (J /j, /mid = / \ /¡n = {1,..., m} \ /¡n, В муль-
¿e[i,n'],je[o,i]
типликативном поле выбираются случайные независимые в , Дш ,вУ , Y G F* и главная ссылочная строка для / и n' принимает следующий вид:
crs/ = (crs, Qf, п{E(vfc(s))}fce^id, {E(wfc^Mfce^ {E(yfc^^Ье^ ,
(8)
{E(evfc(s))}fce/mid, {E(ewW(s))}fce[mb {E(eyyfc^ШкеН^
shortcrsf=(priv,E(1),E(a),E(T),E(ev Y )№ Y ),Е(ву Y ),{E(vfc (s))}fceJin ,E(wo(s)),E(t(s))).
По сравнению с QSP в QAP Qf (7) добавлен набор многочленов Y с соответствующими включениями {E(yfc(s))}fceW, {E(ayfc(s))}fce[m], {E^yt(s))}fceW), E(^yY) B CRS. Алгоритм доказывающего P
На вход подаются crsf, состояние u G {0,1}n и секретное евидетельство w G G {0, l}n-n ; необходимые для проверки отношения (u, w) G R, т.е. выполнимости f (u, w) = 1, P оценивает Qf, чтобы получить (ai,...,am) и многочлен h(x) для проверки равенства
mm m
h(x)t(x) = (vo(x) + Y, afcvfc(x))(wo(x) + Y, afcW(x)) - (yo(x) + Y, afcgfc(x)).
fc=i fc=i fc=i
Для vmid(x) = ^ afc vfc (x), w(x) = ^ afc wfc (x) и y(x) = ^ afc yfc (x) алгоритм P
fce/mjd fce[m] fce[m]
выводит доказательство знания
П = (nvmi d,nw ,ny ,nh,n<iid ,nw' ,ny' ,nh' ,nz ) = (E(vmi d(s)) E(w(s)) (E(y(s)) E(h(s)) ^
E(avmid(s)), E(aw(s)), E(ay(s)), E(ah(s)), E(^vvmid(s) + в™w(s) + вуy(s))).
Аналогично доказательству версии QSP [37], для заданных crs/ и открытого входа u £ {0,1}n элементы V^, W и Y, однажды зафиксированные в доказательстве п, определяют все остальные элементы H, Viiid, W', Y',H', Z, которые также кодируются в п. Поэтому при формировании и использовании элементов Vmn, W и Y необходимо соблюдать повышенные требования к их защите.
По сравнению с доказательством для QSP [37] случай QAP (9) содержит девять элементов поля вместо семи. Добавлены E(y(s)), E(ay(s)) и «смещение» вУу(з). Алгоритм верификатора V
На вход подаются shortcrs/, sk, u и п = (nVmid,nw,пУ,nh,nv' ,nw',пу,nh,nz), V подтверждает, что используются достоверные зашифрованные элементы,
V , W, Y, H, V , W , Y , H , Z
горитм V вычисляет E(v;n(s)) для v-m(s) = ak vk(s). Используя вычисление квадрат-
keiin
пых корней на зашифрованных переменных строгого QAP, верификация проводится следующими равенствами:
(vo(s) + vin(s) + Vmid)(wo(s) + W) - (yo(s) + Y) = H • t(s), V^d = aVMd, , , W' = aW, Y' = aY, H' = aH, jZ = ^Y) Vmid + WwY)W + (вуY)Y. ( j
По сравнению с верификационными равенствами QSP [37] случай QAP (10) дополнительно учитывает значение — (yo(s)+Y) для условия делимости, контролирует Y' = aY и проверяет корректность использования введённого многочлена y для нового фрагмента доказательства nz = Z. Нулевое разглашение
Свойство ZK обеспечивается добавлением в crs/ значений E(t(s)), E(at(s)), E(evt(s)), E(ewt(s)), E(fiyt(s)), E(vo(s)), E(avo(s)), E(wo(s)), E(awo(s)), E(yo(s)), E(ayo(s)). Выполняется сдвиг значений E(^m;d(s)), E(w(s)), E(y(s)) случайным образом, кратным E(t(s)), другие значения изменяются соответственно. Таким образом, значения {ak}k £ /¡п, viQ(x), vmi(i(x), v(x) = vo(x) + viQ(x) + vmia(x), w(x), y(x), h(x) остаются прежними. Верификатор выбирает случайные 6Vmid, 8w,8y £ F, в результате чего P строит доказательство со свойством ZK:
п = (n'vmid,n'w ,,ПУ ,n'h,n'v'mid ,n'w' ,ПУ' ,nh' ,nZ ) = (E(vm id(s)) , E(w'(s)), E(y'(s)), E(h'(s)), E(avmid(s)) , E(aw'(s)), E(ay'(s)), E(ah'(s)), E(& vmid(s) + Pww'(s) + ву Уmid(s))),
где v'mid(x) = vmid(x) + 5vmidt(x); w'(x) = w(x) + 8wt(x); y'(x) = y(x) + Syt(x). Новый частный многочлен со значениями v' (x) = vo(x) + via (x) + v'nid(x) = v''(x) + 8vmidt(x), v''(x) = vo(x)+ via(x) + vm;d(x) и соответствующими w'(x),w''(x),y'(x),y''(x) принимает следующий вид:
h' (x) = (v' (x)w' (x) — y' (x))/t(x) = = ((v''(x) + 5vmUt(x))(w" (x) + 5w t(x)) — (y''(x) + 5yt(x)))/t(x) = (11)
h(x) + 8vmidw" (x) + 8w v" (x) + 8vmid6w t(x) — 8y.
По сравнению с частным многочленом QSP [37] случай QAP (11) отличается только составляющей —8У.
Согласно [48], протокол гк-ЭМАЕК на основе QSP и С^АР может повторно ран-домнзпроваться не только исходным доказывающим, но и другими произвольными участниками протокола.
5. Протокол Б. Парно, Дж. Хауэлла, С. Джентри, М. Райковой
Протокол VC Б, Парно, Дж, Хауэлла, С, Джентри и М, Райковой [49] вносит изменения в вариант [34, 37], Теперь сторонний работник проводит делегированные вычисления над публичным входом u в открытом виде. Исходный и более производительный протоколы представлены в [49], По соображениям возможного практического применения ниже рассматривается только более производительная версия VC, Алгоритм формирования ключей KeyGen
На вход подаются параметр защиты А, функция F с N входными/выходными значениями из F Для которой строится арифметичеекая схема С. Затем для С формируется QAP (7) размера m и степени d Как и ранее, индексы /m¡d = {N+1,..., m} рассматриваются как не связанные с входами/выходами, С использованием случайных секретов rv, rw, s,av, aw, ay, в,7 G F устанавливаются ry = rwrv, gv = grv , gw = grw , gy = gry. На выходе формируются ключи публичной оценки и верификации
, ) ^ KeyGen (F, 1л).
Ключи публичной оценки и верификации принимают следующий вид:
eKf = {gvk(s)}fce/mid, {gWk(s)Wmid, {gyf(s)Wmid, {g^d,
{gawwfe(s)}fce^id,к*yk(s) wmid, {/}i€M, {gevk(s)gWwk(4eyfc(s)wmid; (12)
VKf = (g1, ga, , , gY, , gt(s), {gvk(s), gWk(s), gyk(s) }fce{Q}U[N]) .
По сравнению с исходного протокола [49], соответствующего ers/ (8), модифицированный вариант (12) исключает вычисление gah(s) и $0=^], сокращая нагрузку на исполнителя.
Алгоритм исполнителя Compute
Алгоритм оценивает схему С функции F на входе u для вычисле ния y = F (u). Результатом оценки является знание работником значений {ci}ie[m] проводов схемы:
(y, пу) ^ Compute(EKF, u).
Исполнитель выводит h(x) для проверки p(x) = h(x)t(x) и на основе vm¡d(s) = = Y1 vk(x), а также соответствующих wm¡d(s),ym¡d(s), вычисляет доказательство пу, отличное от (9):
П = (gvmid(s) gwmid(s) gymid(s) gh(s) g«v vmid(s) g«w wmid(s) g«y ymid(s)
ПУ = (gv , gw , gy , g , gv , gw , gy , /-,„4
geVmi d(s) , d(s) . d(s))
gv g W У y J •
Доказательство текущего протокола (13) по сравнению с исходным (9) сокращено с девяти до восьми элементов группы. Тем не менее работы по исчерпывающему обоснованию надёжности модифицированного протокола отсутствуют. Алгоритм верификации вычислений Verify Приведём формальную запись функции верификации:
0/1 ^ Verify(VKF, u, y, Пу).
Проверка доказательства пу с элемента ми g d, gWmi d, gY,,i d, gH, gV«¡d, g Wm¡d, gYLu, gZ осуществляется па основе ключа верификации и билинейного спаривания e.
Контроль делимости QAP использует VKF для вычисления = П (gVfc(s))Cfc,
ke[N ]
gWio(s) = П (gWk(s))c^ 9yyo(s) = П (9Vyk(s))ck-
fce[N] fce[N]
e(9^(s)9^o(s)9^ d,9W0(s)9Wio(s)9rmi d) = ¿(9^,9* )e(9yyo(s)9f d,9).
Затем выполняется проверка нахождения полиномов множеств V,W,Y в соответствующих диапазонах:
e(9?"d,9) = e(9Vumid,9av), e(9W,id,9) = e(9Wmid,9°w), ¿(9^,9) = ¿(9^,9^). (14)
В заключение проверяется, что в (14) использовались одинаковые коэффициенты в каждой из линейных комбинаций V,W,Y:
e(9Z, 9y) = e(9Vmid9Wmid9Ymid,9ßY).
Нулевое разглашение Используя принципы [37], рабочий выбирает случайные ,Sw,Sy £ F и маскирует многочлены в виде vmid(x) + övt(x), v(x) + övt(x), w(x) + +5wt(x), y(x)+övt(x). Для упрощения рандомизации доказательства в ключ публичной оценки EKf (12) включаются следующие величины:
„avt(s) nw t(s) 9ay t(s) nßt(s) nßt(s) nßt(s) JV 'JW 'jy 'JV 'JW 'jy
6. Протокол X. Липмаа «с обязательством и доказательством»
Как правило, протоколы zk-SNARK строят ('HS для одного вида NP-языка, например для задачи выполнимости схем с использованием QAP, SAP, QSP, SSP [37, 50, 51] и др. Протокол zk-SNARK X. Липмаа [52] за счёт новой схемы обязательств строит CRS, которая может использоваться повторно и не зависит от вида NP-языка,
Согласно модели CRS [53], в [52] строится схема обязательств с возможностью извлечения связываемых (скрываемых) данных (Trapdoor Commitment Scheme), не зависящая от бинарного отношения R, состоящая из алгоритма Gcom (строит CRS ck и ключ-«лазейку») и С (по ck, сообщению m и рандомизатору r выдаёт обязательство C(ck, m, r)), что обуславливает их название — протоколы zk-SNARK с обязательством и доказательством (Commit-And-Prove zk-SNARK, СаР zk-SNARK), Связывание значения Wi гада Ui = C(ck, Wi, г') доказывает, что набор u = (uij ,wij ,rij) для публично известных индексов ij удовлетворяет том у, что ui. является обязательств ом для wi. с рандомизатором rij и (wij) £ R (и —размер входа Z™, lm(n) — некоторый полином). Вводится новая схема обязательств с «лазейкой» и возможностью извлечения данных, в которой n —степень 2; р —порядок группы; ш — n-й примитивный корень по модулю р. Определяются многочлены
n
fo(X) = Z(X) = П (X - ш'-1) = Xn - 1,
i=1 (15)
fi(X) = li(X) = П((X - шj-1)/(шi-1 - Ш'-1)),
j=i
где Z(ш'-1) = 0, a li(X) — i-й базисный полином Лагранжа, т. е, li(wi-1) = 1, li(wj-1) = 0 при i = j С использованием зн ачепий (gk,x,Y) и полиномов (15) вычисляется С RS
ck =(gk, (91, gl)f(x))fe{z,h,...,ir
}
и определяется схема обязательств с «лазейкой»:
k
Com(ck, (ai,..., afc),r) = П ((gi, g2a)1i(CT))°((gi,g?)Z(<7))r =
fc i=1 (16) rZ(a)+ £ aiZi(o-)
= ((gi,g2a) ^ () = (Ai,A^) = (A,a4) e Gi x Gi.
Примечательно, что Com(ck, 1n, 0) = (gi,g2). Подлинность обязательства (16) контролируется равенством e(Ai, gYJZ(x)) = e(gf(x), AY), раскрытие обязательства требует знания a, r, С учётом использования схемы обязательств (16) рассматриваемый протокол zk-S.\AHK |">2| совпадает с вариантом Й. Грот [31], где доказывающий подтверждает возможность раскрытия обязательств (A, AY), (B, BY), (C, CY) для векторов a, b, c. Таким образом, используется бинарное отношение
Rck,n = l(ux,wx,rx) : ux = ((Ai,AY), (Bi,BY), (Ci,CY)), wx = (a,b,c), rx = (r0,rb,rc), (Ai,AY) = Com(ck, a,r0), (Bi,BY) = Com(ck, b,r6), (Ci,CY) = Com(ck, c,rc), a о b = c}.
Для формирования протокола zk-SNAEK на основе произведения [52] рассматриваются полиномы A(X),B(X), C(X) при A(wi-i) = ai; B(wi-i) = bj, C(^i-i) = C для i e [п]. Пусть Q(X) = A(X)B(X) - C(X), A(X),B(X),C(X) входят в {/¿(X)}п= и n(X) = Q(X)/Z(X), В таком случае выполняется требуемое равенство: a о b = c. Используется следующая тройка алгоритмов.
Алгоритм формирования ключей crsx ^ Gx(1k, п)
1, Выводятся параметры группы gk и случайные значения (gi, g2, X, Y) e G^ x G2 x
x Zjnpn Z(x) = 0 Y = 0
2, В соответствии с (15) на основе базиса полиномов = (Z(X), (/¿(X))n=i) устанавливаются компоненты CRS:
crsp = ck = (gk, (gi,gY)fc(x)), crsy = (gk,g|JZ(x)), crsx = (crsp,crsy). (17)
Вход ux = ((Ai, AY), (Bi,BY), (C1,C2y)) является общим и используется доказывающим и верификатором.
Алгоритм доказывающего nx ^ Px (crsP , ux, wx — (a, b, c),rx = (r0, rb, rc))
Конфиденциальность обеспечивается случайными значениями r0, rb, rc e Zp, Определяется полипом Qwj(X) = (La(X) + roZ(X))Lb(X) + r6Z(X)) - (Lc(X) + rcZ(X)), где дополнения вида rZ(X) гарантируют скрытие; Qwi(X) имеет степень 2п и делится
Z(X) c = a о b
n
1, Формируется компонент доказательства nwi(X) = Qwi(X)/Z(X) = njX1 сте-
¿=0
пени n,
2, Для сокращения сообщений проверяющий передаёт оценку nwi(X) в случайной секретной точке X- Доказывающий вычисляет nx = gn™l(x) с использованием значения gf из CRS (17) и коэффициентов п
пх = gПwi(x) = П^Х)п.
г=0
Алгоритм верификатора 0/1 ^ Ух(егзу,их,пх) Верификация подтверждается, если выполняется равенство
e(Ai,BY ) = e(gi,CY )e(nx,gYZ (х)).
Для доказывающего наиболее трудоёмка процедура (n +1) возведений в степень в Gi, три полиномиальных оценки, одно произведение и одно деление полиномов. Верификатор выполняет три билинейных спаривания. Исключая gk, С RS доказывающего и ck состоят из 2(n + 1) элементов группы, CRS верификатора — из одного элемента группы, С использованием алгоритма [54] вычисление CRS составляет О(и) операций,
7. Протокол X. Липмаа на основе циклического сдвига векторов
X. Липмаа [52] предлагает реконструкцию протокола zk-SNARK на основе сдвига [41] с использованием обязательств (16), где доказывающий подтверждает возможность раскрытия таких обязательств (A, AY) = Com(ck, a, ra) и (B, BY) = Com(ck, b, rb), что a = b ^ z,T.e. ai = bi+z при i e {1,..., n—z} и ai = 0 при i e {n-z+1,..., и}. В этом случае бинарное отношение имеет вид
Rcfn = {(ux,wx,rx) : ux = ((Ai,AY), (Bi,BY), wx = (a, b), rx = (ra,rb), (A1,AY) = Com(ck, a,ra), (B1 ,B\) = Com(ck, b,rb), a = b > z.
Полученный после реконструкции протокол zk-SNARK с правым сдвигом представляет собой следующие алгоритмы.
Алгоритм формирования ключей crsrsft ^ Grsft(1fc,n)
1, Фиксируется полипом Z*(X) = Z(X)2, выводятся параметры группы gk и случайные значения (g1,g2,x,l,^) e Gl х G* х Z33 при Z(х) = 0, Y = 0.
2, В соответствии с (15) на основе базиса полиномов FC = (Z(X), (li(X))П=1) устанавливаются компоненты CRS:
ck = (gk, (g1,gY)Fc(х)), crsp = (gk, (g1 ,g2)Fzf)), crsy = (gk, (gbg2)Z(x)),g2Z(x)Z*(x)).
3, На выход подаётся crsrsft = (ck, crsP, crsy),
Вход ursft = ((A1,AY), (B1,BY)) является общим и используется доказывающим и верификатором.
Алгоритм доказывающего nrsft ^ Prsft(crsP,ursft,wrsft = (a,b),rrsft = (ra,rb))
1, Выводятся случайные секретные значения G Zp.
2, Вычисляется и подаётся на выход доказательство сдвига:
n
nrsft = (п1,п2) = (g1,g2)п(х) = П ((g1,g2)ti-^ч^шрх
2)
i=z+1
х П((g1,g2)h(x))-k ((g1,g2)Z(x)Zt(x))ra ((g1,g2)Z(x))-rb. i=1
Алгоритм верификатора 0/1 ^ Vrsft(crsy,ursft,nrsft = (n1,n2)) Верификация подтверждается, если выполняются равенства
e(n1,g2Z(x)) = e(gZ(x)n), e(B^, g2Z(x)) = e(A1,g2Z(x)Z *(х)).
n+2
G1 G2
Исключая gk CRS доказывающего и ck состоят из 4n + 6 элементов группы, CRS верификатора—из двух элементов группы. Верификатор выполняет четыре билинейных спаривания.
8. Протокол А. Э. Косба, Д. Пападопулоса, С. Папаманту и др.
Система VC «TRUESET» А. Э, Косба, Д. Пападопулоса, С, Папаманту и др. [55] представляет собой расширение реализации Pinocchio [49] на языке С++ с использованием библиотеки NTL [56, 57], обеспечивающей производительную полиномиальную арифметику на основе БПФ, библиотеки GMP [58] и библиотеки Ate-спаривания над кривыми Баррето — Нерига [59], Система VC «TRUESET» способна достоверно вычислять любую функцию полиномиального времени с полным набором логики, т, е, выраженную в виде схемы элементов множества объединения, пересечения, суммы и разности, а также гибридные схемы из булевых и арифметических вентилей. Обеспечивается зависимость времени работы доказывающего и формирования ключа, пропорциональная размеру ввода. Это достигается путём кодирования набора мощности с в виде многочлена степени с, аналогично [60, 61], а набора схем —в виде полиномиальной схемы, где провода являются полиномами, а вентили выполняют полиномиальное сложение / умножение.
Для этого вводятся QPP, в которых используется полиномиальное умножение/сложение и многочлены сводятся к простым значениям проводов арифметической схемы за счёт их оценки в секретной точке s В этом случае полиномиальиая схема F над полем F представляет схему с вентилями сложения и умножения полиномов, где d — количество вентилей умножения; N —количество входных и выходных проводов;
= {N +1,..., m} — индексы внутренних проводов; n — степень полинома провода г; n — наивысшая степень полиномов проводов.
Для множества A = {ai,a2,... ,an} € Fn определяется характеристический полином A(z) = (z + а1)... (z + ага). Операции над множествами преобразуются в набор схем по следующим формулам. Множество пересечения: I = A П B, если существуют такие полиномы a(z),e(z),Y(z),#(z), что a(z)A(z) + e(z)B(z) = I(z), y(z)I(z) = A(z), $(z)/(z ) = B (z). Множество объединения: U = A U B, если также существует такой полином ¿(z), что a(z)A(z) + в (z)B (z) = ¿(z), 7 (z )i(z) = A(z), $(z)i(z ) = B (z ), $(z)A(z ) = U (z ), Множество разности: D = A — B, если выполняются равенства a(z)A(z ) + в (z )B(z) = ¿(z), D(z)i(z) = A(z), £(z )i(z) = B(z), В результате схема C с N входами, d1 вентилями пересечения и d2 вентилями объединения преобразуется в полиномиальную схему F с 4d1 + 5d2 элементами умножения. Данный подход является преобразованием из QAP в QPP с возможностью выбора уровней абстракции в виде операций над множествами или арифметическими/битовыми операциями для разных частей схемы.
Алгоритм формирования ключей (pk,sk) ^ KeyGen(F, 1k) Используется полиномиальная схема F и соответствующая QPP Q = (V, W, Y, т(ж)), билинейное спаривание e : G х G —У Gt,порядок групп равен p, порождающий элемент группы g Фиксируются случайные значения s, t, rv, rw, , , ay, в, Y € Zp, устанавливаются ry = rv rw, = = „rw, = gry, Ключи оценки EKf и верификации VKf являются ключом доказательства pk для протокола zk-SNARK. В данном слу-
sk = pk
вид:
ekT- = ig^ (s) , r ig^ vk(s) ^«w (s) „^«У Ук (s)l,.,N^ri r
= {gv , gy }(«,fc)e[n]x/m, {gv , gy }(«,k)e[n]x/„
//^(s) /ewfc(s) ЛсГо , ,
{gv , Уу }(i,fc)e[ra]x/m, {g }(t,j)e[2ra]x|
Jy , {gv , Уте }(i,fc)G[n]x[
VK^- = (g1 „«w „«y „7 gt(s) rgiivfc(s) giiwfc(s) „^Ук(sh,.,. r , ГАЛ)
Таким образом, KeyGen строит обязательство цепи F путём вывода элементов, относящихся к внутреннему набору проводов Im для QРР Q = (V,W,Y,t(x)), Полиномы оцениваются в случайно выбранных точках t и s.
Сложность формирования ключей составляет O(n|/m| + nd + nN) = O(dn). Вычисления доказывающего составляют O(T + dv log(dv) + mdv), где T — время вычисления многочленов c^z); v — мжимальная степень полиномов проводов. Верификация имеет сложность O i Пг \ie[N ]
Алгоритм доказывающего п ^ P(pk,x,w)
Вход x содержит входные u и выходные y полиномы, секретное свидетельство w включает назначения полиномов внутренних проводов схемы F, Значенпя ck (z) являются полиномами проводов цепи, для которых выполняется равенство y = F(u,w), а h(x, z) — полином-частное QPP для равенства p(x,z) = h(x,z)т(x). Доказательство п включает вычисление набора переменных для свойства извлекаемое™, набора переменных проверки согласованности цепи — непротиворечивости назначения проводов (могут вычисляться из публичного ключа {gV evk<s), gJiWk<s),д1вУк(s'}(j,k)e[n]xim), а также значения gh<s,t) для контроля свойства делимости:
п = ( (gVm <s,t) gwm<s,t) ym <s,t) av vm<s,t) gaw wm<s,t) ay ym<s,t)) (gßvm<s,t) gßwm<s,t) gßym<s,t) ) '' у (gv , gw , gy , gv , gw , gy ) , (gv , gw , gy ) ,
(gh<s,t) : vm(x,z)= Y, Ck(z)vk(x), wm(x,z) = Y, ck(z)wk(x),
keim keim v10^
ym(x,z)= E ck(z)yk(x))
keim
Таким образом, чтобы доказать допустимость назначения входных/выходных проводов ci(z),..., cN (z), достаточно доказать существование допустимых полиномов cN+1(z),..., cm(z) для соответствующих внутренних проводов. При этом многочлен p(x, z) должен иметь корни r1,r2,... ,rd. Для этого доказывающий вычисляет корректные полиномы-назначения c1(z),c2(z),..., cm(z), которые используются с ключом EKf
п
vm(x,z),wm(x,z),ym(x, z),
Алгоритм верификации 0/1 ^ Verify(pk, x, п)
п
((jv,Yw,Yy,kv,kw,ky),A,7h). Верификация подтверждается, если выполняются проверки на основе а-переменных, свойства полиномиальной делимости для \v =
Е Ck<t)vk <s) £ Ck <t)wk <s) £ Ck<t)yk <s)
= gke[N] , Aw = gke[N] , \y = gke[N , а также на основе в-переменных:
e(Yv,gav) = e(kv,g), e(Yw,gaw) = e(k.w,g), с(Ъ,gay) = e(ky,g), e(Xv Yv ,Xw Yw )/e(Xy Yy ,g) = e(Yh ,gT <s)),e(lv Yw Yy ,gßl) = e(A,g7).
По сравнению с VC для арифметических схем [49], время работы доказывающего «TRUESET» [55] сокращается в 30-150 раз для произвольных входов,
U
9. Протокол Г. Данезиса, К. Фурне, И. Грота, М. Кольвейса
Протокол zk-SNARK Г, Данезиса, К, Фурне, II. Грота, М, Кольвейса [51] строится для удовлетворения выполнимости булевых схем с /„-разрядным публичным входом и /■^-разрядным секретным свидетельством, Используется бинарное отношение R, зависящее от параметра защиты А, которое фиксирует пары (u,w) Е {0,1}lu<A) х {0,1}lw<А),
выводимые из схем с m(А) проводами и n(A) вентилями общего размера d(A) = = m(A) + n(A), Более простая квадратичная форма SSP требует для проверки один полином вместо двух полиномов QSP и трёх полиномов QAP, что приводит к более простой и компактной предварительной настройке, меньшим размерам ключей и количеству операций для доказательства и верификации.
Алгоритм формирования ключей (а, т) ^ Setup(1A, R)
Ha вход подаются публичные параметры gk и многочлены SSP вида (v,t) и выполняются следующие шаги:
1, Вычисляется публичный параметр gk = (r, Gi, G2, GT,e), формируемый на основе параметра защиты А, где r — простой порядок групп; G1, G2 — мультипликативные циклические группы порядка r; GT — группа порядка re : G1 х G2 ^ GT — билинейное спаривание,
2, На основе R формируется булева схема CR : {0,1}1и х {0,1}1w ^ {0,1},
3, Строится SSP вида Q = (v0(x),..., vm(x), t(x)), предназначенная для верификации CR над Zp,
4, Выбираются первообразные элементы g1 е G1; g2, g2 е G2. Образующий элемент $2 может быть получен воз в едением g2 в случайную сте пень а е Zp,
5, Выбираются случайные в, s е Zp, такие, что t(s) = 0,
6, Вычисляются главная ссылочная строка а и «лазейка» т:
а = (gk,gi,g2,...,$sd, g2sd, {gfVi(s) }i>iu, t(s), $2, $2e, Q), т = (а, в, s). (19)
(а, т)
Алгоритм доказывающего п ^ Prove (а, u,w)
Ha вход подаются ключ доказательства а (19), публичный вход u, секретное свидетельство w и выполняются следующие шаги:
1, Открытый вход разбивается на биты: u = (а1,..., а1м) е {0,1}1и,
2, Ha основе секретного свидетельства w выводятся такие (a1u+1,..., am), что це-
/ m \ 2
левой многочлен t(x) делит I v0(z) + ajVj(x) I — 1,
3, Выбирается случайный элемент $ е Zp и вычисляется полином-частное:
h(x) = ^^vo(x) + ^ajVi(x) + — /t(x).
4, С использованием ключа доказательства (19) вычисляются компоненты доказательства:
ТТ _ Д _ _ \г>ги
Н _ , ^ _ ^ ,
т т 4 7
^г>1и л г г = 1
» _ 01 , _ 02 .
5, На выход подается доказательство п _ (Н, , ^, У2) е G3 х G2, Доказательство состоит из четырёх элементов: трёх элементов группы G1 и одного элемента G2,
Алгоритм верификатора 0/1 ^ Vfy(о, и, п)
На вход подаются главная ссылочная строка о (19), вход и и доказательство п (20), Затем выполняются следующие шаги:
1, Открытый вход разбивается на биты: и _ (а1,..., а1и) е {0,1}1и,
2, Доказательство п (20) разбивается на компоненты (Н, Вш, , У2) е G3 х G2,
¡и
3, Вычисляется V _ 01 г=1 УШ
4, В порядке описания проверяется достоверность обязательств, факт использования одинаковых коэффициентов и условие выполнения делимости ББР:
е(У,02)_ б(0ЬУ2), е(К„,02в)_ е(Вш,02), е(Н,02(-))_ е(У,У2)е(01,02)-1. (21)
5, Если проверки (21) выполняются, то верификация подтверждается.
Зафиксированное значение УШ (20) однозначно определяет компоненты , V, Н, Поэтому для любой пары (и, ад) е Я если действительные/имитированные доказательства выбираются случайным образом, то проверочные уравнения будут выполняться.
Верификация выполняется за счёт шести билинейных спариваний и одного умножения для каждого ненулевого входного бита, независимо от размера схемы.
Алгоритм имитирования доказательств п ^ Б1т(т, и)
На вход подаётся «лазейка» т (19), вход и и выполняются следующие шаги:
1, Открытый вход разбивается на биты: и _ (а1,..., а1и) е {0,1}1и,
2, Выводится случайный элемент е
3, Вычисляется оценка многочлена-частного в секретной точке в:
К + «¿^(в) + ^ - / ¿(в).
¡и
/ Ы-Ю+Е «г^М+г»ч
4, На выход подаётся доказательство п _ ( 01,01»,01, 02 г=1 ) еG5 х G2,
10. Протокол С. Костелло, С. Фурне, Д. Хауэлла и др.
Протокол С, Костелло, С, Фурне, Д. Хауэлла и др. [62] использует протокол /к-Я.ХАШч РтоссЫо [49] в конструкции доказательств с разбиением исходного <^АР арифметической схемы на более простые мелкие составляющие, которые обмениваются состояниями посредством общей шины данных, В отличие от стандартного подхода [49], случай [62] компилирует отдельные элементы С^АР только для динамических частей схемы, за счёт чего экономятся трудоёмкие криптографические операции при формировании общего доказательства. Подобная декомпозиция доказательств способствует масштабируемости. Доказывающий выполняет только криптографическую работу, пропорциональную пути, фактически выполненному программой.
По сравнению с [49] протокол [62] включает незначительные доработки. Например, поддерживаются индексы ] е [/] для всех переменных, соответствующих отдельным С^АР Кроме того, ключ-«лазейка» т разделяется на компоненты для имитирования и экспортирования доказательств:
(т^,ТЕ) _ (в, {о^, , Ье[г],г^, ), (г^,гад).
По сравнению с ключом оценки (12) [49] в текущий вариант ЕК, [62] добавлены зашифрованные значения целевого полинома ¿(в):
ЕК _ ( ¿(-) ¿(-) ¿(-) ¿(-) ¿(-) *(-))
_ (. . .,Уа , Уш , Уу , Уи , Уш , Уу , Уи , Уш , Уу ).
Дополнительно ключи верификации VKj включают проверяемые верификатором дайджесты для связывания EKj гада Cj = (EKj ,Uj ,Oj), где Oj = (ov ,ow ,oy) — случайные элементы поля. Дайджесты Cj используются в качестве открытого входа для функции верификации. Определяются коэффициенты (ck)keij = Uj и для полиномов значений общей шины QAP j е S (j ф S — индексы несвязанных дайджестов) вычисляются следующие обязательства:
j G s : gyyU)(s),gavyjy(j)(s),gfij(ryy(j)(s)),
j ф S : gV(j)(s) ,gW(j)(s),gy(j)(s) v(j)(s) ^gawJ w(j) (s) ^ gayj y(j)(s) ^¡3j (rv v(j)(s)+rw w(j) (s)+ryy(j) (s)),
где v(j)(s) = Y ckvk(s)+ovd(s) (для w(j)(s), y(j)(s) используются oW, oy соответственно), kej
11. Протокол M. Бэкеса, M. Барбоза, Д. Фиоре, M. Рейщук
Протокол М, Бэкеса, М, Барбоза, Д. Фиоре, М, Рейщук [63] применяет QAP и представляет собой развитие идей [64, 49, 65], позволяющее формировать доказательства с использованием аутентифицированных данных (Authenticated Data, AD), Характерной особенностью схемы [63] является то, что верификатор получает информацию из надёжного источника и направляет её третьей стороне, которая в состоянии проверить действительность принимаемых данных, аутентифицированных исходным источником, В данном случае аутентификация основана на формировании МАС-кодов с использованием схем гомоморфного шифрования [66, 67], В классическом протоколе zk-SNARK верификатор всегда знает открытое состояние, а в случае AD zk-SNARK аутентифицированные некоторым доверенным источником входные состояния верификатору не раскрываются. По сравнению с Pinoeehio [49] протокол AD zk-SNARK [63] строит доказательства в 25 раз быстрее и сокращает требования к размеру памяти доказывающих в 20 раз.
Для произвольных арифметических схем может строиться как протокол PV, так и протокол DV AD zk-SNARK, В случае протокола DV AD zk-SNARK размер доказательств фиксируется константой, а для протокола PV AD zk-SNARK — растёт линейно количеству N ^ n аутентифицированных утверждений. Алгоритм верификации работает линейно по N.
Для верификаторов, которым известен секретный ключ аутентификации, например в случае криптографических устройств с симметричным ключом в защищённой внутренней памяти, доказательства протокола AD zk-SNARK имеют постоянный размер и знание верификатором такого ключа не ставит под угрозу конфиденциальность схемы. Защищённость рассматриваемого протокола основана на допущениях g-DHE [68] и q-PKE [31] в билинейных группах. Конфиденциальность в виде свойства ZK также сохраняется против злоумышленников, которые знают/формируют ключи аутентификации.
Реализация протокола AD zk-SNARK [63] включает схему подписи на основе эллиптической кривой ed25519 [69], На вход PRF, основанного на AES, подаются 128-битная метка и 256-битный ключ. Затем одно вычисление AES-128 отображает метку в 128-битное псевдослучайное начальное значение, применяемое во втором экземпляре AES-CTR-128 для расширения начального значения до 384 псевдослучайных бит, которые сокращаются по модулю до 254-битного элемента поля. Быстродействие криптографических функций может оцениваться на платформе Supercop [70],
Алгоритм начальной установки Setup(1A). На основе Л вычисляются публичные параметры билинейной группы pp = (p, Gi, G2, GT, e, P\, P2) 4—R G(1A), группы Gj
имеют простой порядок p > 2Л, P1 е G1 и P2 е G2 — образующие элементы групп, e —
производительное билинейное спаривание. Фиксируется конечное поле F вычетов по p
Алгоритм формирования ключей аутентификации AuthKG(pp)
Формируется ключевая пара схемы подписи (sk',vka') ——R Z.KG(^), Для псевдослучайной функции : {0,1}* ^ F (Pseudo-Random Functions, PRF) вычисляется начальное секретное заполнение S и публичный параметр prfpp в виде (S, prfpp) ——r F.KG(^), Выводится случайное значение k ——R F и вычисляется Ki = kPi е Gb K2 = kP2 е G2. Формируются секретный ключ аутентификации sk = (sk', S, k), публичный ключ верификации аутентификатора vka = (vka', K2) и публичные параметры аутентификации pap = (pp, prfpp, K1),
В случае протокола DV AD zk-SNARK формируется дополнительный вывод
: {0,1}* ^ G2 и вычислявтся K = e(P^i,P2)fc е GT, На выход подаются секретный ключ аутентификации sk = vka = (S, k) и публичные параметры аутентификации pap = prfpp,K)■
Алгоритм аутентификации Auth(sk, L,x)
Для аутентификации значения x е F с меткой L формируется ф = (L) с использованием PRF, вычисляется ß = ф + kx е F и Ф = фР2 е G2, Затем вычисляется подпись а' ——r Z.Sign(sk', Ф || L) и выводится значение-аутентификатор а = (ß, Ф,а') (символ «||» означает конкатенацию),
a=
= Ф + xkP2,
Алгоритм верификации аутентификатора AuthVer(vka, а, L,x)
Используется ключ верификации аутентификатора vka = (vka',K2), Чтобы убедиться, что а = (ß, Ф, а') является допустимым тегом аутентификации для x е F относительно метки L, проверяется выполнение равенств ßP2 = Ф + xK2 в G1 и Z.Ver(vka', Ф || L, а') = 1. В случае секретной проверки vka заменяется на sk и аутенти-фикатор а проверяется равенством ß = (L) + kx,
В случае протокола DV AD zk-SNARK включается дополнительная проверка выполнения равенства а = (L) + xkP2,
Алгоритм формирования ключей Gen (pap, C)
Используется арифметическая схема C : Fn х Fh ^ F1. Индексы проводов схемы {1,...,m + 3} делятся на n значений публичного состояния входа/выхода
= {1,...,n} и h значений внутренних проводов секретного свидетельства /т;а = = {n + 1,..., m + 3}, Выполняются следующие шаги:
1, Для схемы C вычисляется QAP вида = (a, b, c,z) = QAPInst(C) размерa m и степени d. Значен ия a, b, c являются вектора ми по m +1 полиномо в в F^d-1[X целевой полипом z е F[X] имеет степень d. Векторы расширяются тремя полиномами каждый:
«m+1 (X) = bm+2(X) = Ст+з(Х) = z(X),
am+2(X) = am+3(X) = bm+1(X) = bm+3(X) = Cm+1(X) = Cm+2(X) =
2, Выбираются случайные значения pa, pb, т, аа, ab, ас, ß, 7 е F, Рс = Р«Рь и для k е {0,..., m + 3} вычисляются компоненты ключей:
Z = z(t ) Pc P2, Ka = z(t )pa Ki, Ak = ak (t )paPi, A'k = aaak (t )pa Pi,
Bk = bk (t )pbP2, B'k = abbk (T)pbPi, (22)
Ck = Ck (t )PcPi, C'k = a Ck (t )PcPi, Ek = e(ak (t )Pa + bk (т )рь + Ck (t )pc)Pi.
Расширение протокола AD zk-SNARK для k различных ключей аутентификации/источников использует видоизменённый алгоритм Gen({papj}, C) с набором общедоступных параметров аутентификации papi,..., papk. Тогда в EKC (23) включается набор {Ka,j = z(t)paKi,j}je[k\-
Ka =
= (K)z(T) G GT (22).
3. На выход подаются ключи оценки EKC и верификации VKC схемы C: ekc = (qc, A, A', B, B', C, C', E, {т^}^,...,^, Ka),
VKc = (Pi,P2,aaP2,abPi,acP2,lP2,hPi,hP2,Z, {Ak}П=о). ( j
Алгоритм доказательства Prove(EKC, x, w, a)
Используются ключ оценки EKC (23), пара «открытое состояние — секретное свидетельство» (x, w) G Fn x Fh, набор тегов аутентификации для x гада о = (ai,..., оп), где для всех i G [n] выполняется равепство ог = (цг, Фг,о'г) ми ог = * (значение «*» означает пустой параметр). Определяются индексы Ia = {i G Ix : ог = *} Ç Ixj для которых существуют аутентифицированные данные, а также I* = Ix\Ia как индек-
о
i
используется пустой тег ог = *.
Для k различных источников дополнительно каждый тег аутентификации ог G о указывает на соответствующий ключ аутентификации aj а набор Ia разбивается на k подмножеств Ia,j — по одному множеству для каждого ключа аутентификации.
Для получения доказательства выполнимости C (x, w) = 01 выполняются следующие шаги:
1. Вычисляется s = QAPwit(C, x, w) G Fm (^ = хг для всех i G [n]),
2. Выбираются случайные 5°, 5™ld,5b,5c G F 5a = 5° + 5aild и фиксируется вектор u =(1, s, 5a, 5b, 5c) G Fm+4.
k
k
дится набор случайных значений (5ai),..., 5^^), 5a = E 5j + 50lld.
j=i
3. Решается задача QAP QC для вычисления коэффициентов (h0,..., hd) G Fd+1 полинома h G F[X], соответствующего выполнению равенства h(X)z(X) = = a(X)b(X) — c(X), где a,b,c G F[X] имеют следующий вид:
a(X) = ao(X) + E Skak(X) + 5aZ(x),
kG[m]
b(X ) = bo(X )+ E Sk bk (X ) + 5bz(x),
kG[m]
c(X ) = co(X ) + E Sk Ck (X ) + 5cz(x).
kG[m]
Затем вычисляется Н _ К(т)Р1 с использованием т^ из ключа оценки (23), В итоге вычисляются значения а(Х) _ (и, а), Ь(Х) _ (и, Ъ) и с(Х)_ (и,с). 4, Вычисляются компоненты доказательства:
пь _ (и, В), пЬ _ (и, В'), пс _ (и, С), пС _ (и, С'),
пст _ (и, л)/ст+5;Ат+1, п; _ (и, а')/,+5;Ат+1,
пт1с1 _ (и Л)/тИ - 5а Ат+1, пт;с! _ (u, Л')/ст - 5;
пе _ (и, Е).
В случае к различных ключей аутентификации/источников для ] _ 1,..., к дополнительно вычисляются компоненты доказательств:
п;,, _ (и,Л)/,,. + 5П)Ат+ь п;,, _ (и,Л')/,,. + 5«п)Ат+1,
^Ап+1, (и, Л')/, - Е*п
п=1 п=1
к п к ( (24)
птМ _ (U, Л)/тг^ - Е 5«П) Ат+1, п^ _ (U, Л'- Е 5ГАт+1.
5, Вычисляются аутентификацпонные данные для п; (24):
пм _ (д, Л)/, + 5;К«. (25)
к
числяются аутентификационные данные для п;,п- (24):
пмп _ л)/,,^ + 5«К«п.
В случае протокола БУ АБ гк-ЯМАКК вычисляется новое значение пм, отличное от (25):
пм _ ( П е(Ак, Фк)) (К«)5-" е Gт.
\ке/, /
6, На выход подаётся доказательство и, в случае протокола РУ /к-ЯХАНК. набор дополнительных значений:
п _ (п^,п;,п;, ^¡(Ь ^¡(^ пь> пc, пС,пЕ,Н),
/Л ' 1 ^
{фк }ке/,.
к
выход подается набор компонент {пм,п-, п;,п-, п^.,,- }к=1-Алгоритм верификации Уег(ука, , Ь, {жг}ьг=*, п)
Используется ключ верификации аутентификатора ука, ключ верификации схемы (23), вектор меток Ь _ (Ь1,...,Ьга), неаутентифицировапные компоненты состояния х и доказательство п (26), Определяются аналогичные доказывающему индексы , I*, Вычисляется значение А* _ А0 + (х, Л)д и выполняются следующие шаги:
1, Используется секретный ключ верификации эк _ (5, к) для проверки подлинности п; то меткам Ь за счёт выполнения уравнения в G1:
пм _ (Ь), Л)/, + кп; _ Е ^ (¿¿)Л + кп; . (27)
В случае протокола 1)\ /к-Я\АНК вместо (27) включается проверка подлинности за счёт выполнения нового равенства в
= ( П е(Лк(Ьк)) ) в(па,кР2).
\kela
2, В слючае протокола РУ /к-Я\АНК используется публичный ключ верификации ука = (ука',К2), Сначала проверяется правильность всех Фк за счёт контроля £.Уег(ука', Фк || Ьк,ак) = 1 для всех к € 1а. Затем проверяется подлинноеть па за счёт выполнения равенства в
е(п^,Р2)=Ц е(Ак, Фк)е(па,К). (28)
ке1а К '
3, Проверяется подлинность обязательств для аутентифицированных значений:
е(Па ,Р2) = е(па ,ааР2). (29)
4, В порядке описания проверяется выполнимость С^АР, корректность обязательств и подтверждение использования одинаковых коэффициентов для всех линейных комбинаций С^АР:
е(А* + па + пти,пь) = е(Н, Z)е(пс, Р2), (е(п1шШ,Р2) = е(^м,а„Р2), е(п'ь, Р2) = е(аьР1,Пь), е(п'с, Р2) = е(пс,асР2)), (30) е(пЕ ЛР2) = е(А* + п° + птМ + пс, втРгМвтРъ пь).
5, Верификация успешна, если все уравнения (27), (28) и (30) выполняются,
к
фикации дополнительно проверяет уравнения (27), (28) и (29) для набора
{п^,3 , П',3 , П'а,] }к=1 ■
Алгоритм рерандомизации доказательств НеНап6(ЕКС, Ь, {хг}^=*,П) Если п (26) подтверждают наборы меток Ь и неаутентифицированных значений {хг}^=*, то п возможно повторно рерандомизировать. Для этого выполняются следующие шаги:
1, Выбираются случайные значения 5°, 5™а, 8ь, 5 с € Е, 5а = 5° + ^Г"1-
2, В компоненты доказательства вводятся новые случайные значения:
ПЬ = пь + 5ЬBm+2, ПЬ = ПЬ + 5ЬBm+2,
п с
пс + 5cCm+3, ПС = ПС + 5 сС'т
с^т+3>
Па = па + 5°Ат+1, П ' = п' + 5°А'т+1,
Пт1с1 = Пт1с1 + 5™а Ат+1, П'гшс1 = Пт;а + 5™1(1 А'+Ъ (31)
ПЕ = ПЕ + 5аЕт+1 + 5ЬЕт+2 + 5 сЕт+3,
П^ = П^ + 5° К а, Н = Н + 5аПь + 5ьПа + 5а5Ьz(т)Р1 - №.
В (31) значение г(т)Р1 может включаться в ключ оценки ЕКС (23), 3, На выход подаётся обновлённое повторно рандомизированное значение доказательства П = (П ^,Па ,П' ,ПшШ,П'шШ,Пь,П'ь,Пс,П'с, П е , Н),
Доказательство полноты рассмотренного протокола ЛП /к-ЯХАНК представлено в [63].
По сравнению с производительной версией [49], представленной в [65], алгоритм веп протокола [63] имеет одно дополнительное возведение в степень в С1 для формирования К = г(т)раК^, Размер нового ЕКс (23) расширен на один элемент К € С1. Доказательство протокола АБ гк-ЯКАЕК расширено на три элемента пст, п^ , пм € каждый с N = |/ст| возведениями в степень, а также набором подписей {ак} € для протокола РУ /к-ЯХАНК. Верификатор протокола 1)\ ЛП /к-ЯХАНК вычисляет |1*| = п — N значений А*, что меньше случая [49], а уравнение (27) требует многократного возведения в степень с N = |/ст| значениями и дополнительных вычислений РЕГ, что взаимно компенсируется, В итоге верификатор протокола БУ АБ /к-ЯХ АНК [63] ипользует на два билинейных спаривания в (29) больше, чем [49], В случае протоколов РУ /к-ЯХ АНК добавлено уравнение (28) с двумя билинейными спариваниями и |/ст| произведениями.
Протоколы [63, 71] унаследовали проблемы защищённости [72], А, Габизон [73] выявляет уязвимость протокола гк-ЯМАЕК [72], связанную с включением в СЕЯ избыточных по сравнению с исходным вариантом РтоссЫо [49] элементов ключа верификации, При наличии доказательства некоторого заданного общедоступного входа это позволяет создавать доказательства для любых других входов. Для случая исключения данных элементов и при удовлетворении С^АР определённым условиям в [73] представлено доказательство защищённости [72] в общей групповой модели,
о
12. Протокол И. Грота на основе асимметричного билинейного спаривания
Протокол /к-ЯХ АНК Й, Грота [74] строится на основе С^АР, билинейного спаривания и устраняет возможность раскрытия информации из СЕЯ, Рассматривается вариант несимметричного билинейного спаривания е : С1 х С2 ^ Ст, где д — образующий элемент к — образующий эле мент С2; е(д, к) —образующий элемент Ст; однако симметричный случай при С1 = С2 и д = к выполняется аналогично. Доказательства знания состоят из трёх элементов группы. При работе с билинейным спариванием типа III [75] верификация в степенях дискретных логарифмов требует указания групп для каждого элемента. Поэтому главная ссылочная строка и доказательство разделяются на две части, в связи с чем являются составными: а = (а1,а2),п = (п1,п2).
Таким образом, сначала строится два сообщения для С^АР, которая выводит бинарное отношение вида
Я = (р, Сь С2, Ст, е, д, к, /, {«¿(ж), ^(ж), ¿(ж)). (32)
Отношение (32) предусматривает зависимость |р| = Л, задаёт поле йр, язык состояний (а1,...,а1) € (открытые значения проводов) и секретных свидетельств (а1+1,..., ат) € Zm'-1 (секретные значения проводов), удовлетворяющих выполнимости арифметической схемы (согласованность проводов ввода/вывода). Арифметические схемы формируют соотношения, описываемые уравнениями над множеством переменных утверждений и секретных свидетелей, удовлетворяющих всем уравнениям. При этом для а0 = 1 выполняется соответствующее равенство С^АР с deg(k(ж)) = п — 2 и deg(í(ж)) = п:
т т т
Е «г«г(ж) Е Яг^г(х) = ^ ^¿(ж) + к(ж)^(ж).
¿=0 г=0 г=0
В уравнении верификации элементы доказательства п = (А, В, С) используются только один раз, поэтому их легко разнести в разные части билинейного теста, Разде-
ление общей ссылочной строки на две части позволяет вычислять отдельные компоненты доказательства. Составная конструкция также устраняет возможность раскрытия информации из общей ссылочной строки и поэтому формирует протокол zk-SNARK в общей групповой модели, В результате строится протокол zk-SNARK с QAP-етепе-нью d и значениями ß, m, n, k, n в виде констант или функций от параметра защиты А,
Алгоритм формирования ключей (а, т) ^ Setup(R)
Ha основе отношения R (32) вырабатываются ключи доказательства и верификации, где а = (аьа2) G Fmi х Fm2 ,т G Fn, Ключ доказательства: а = (g0"1, h°"2) = = ([а1]1, [а2]2) где g, h — соответствующие порождающие элементы групп билинейного спаривания G1 и G2, Част и а1 и а2 содержат единицу для исключения различий между
Setup
1, Выводятся случайные элементы а, ß, y, 5, х G Zp,
2, Выводится ключ верификации для протокола PV/DV zk-SNARK т = (a,ß,
Y, 5, x).
3, Вычисляется двухкомпонентный ключ доказательства а = ([а1]1, [а2]2), соответствующий CRS, содержащий многовариантные полиномы Лорана, оцениваемые в элементах из Zp, где
= /a,ß,5, {х^}™-)1, {(ßui(x) + avi(x) + w*(x))/y}*=оЛ а1 \j(ßu*(x) + avi(x) + Wi(x))/i}m=i+1, {хЧ(х)АК=07 , (33)
а2 = (ß,Y,5, {x*}™-,1) . (а, т)
Строка CRS в виде а (33) включает определение бинарного отношения R (32), n элементов Zp, m + 2n + 3 элемент ob G1 и n + 3 элемент ob G2,
Алгоритм доказывающего п ^ Prove(R, а, а1,..., aj, а1+1,..., am)
Идея заключается в построении пары матриц (П1,П2) ^ ProofMatrix(R, х, w), где П1 G Fkixmi, П2 G Fk2Xm2, необходимых для формирования доказательства вида п = = (gni, hn2) = ([п1]1, [п2]2) = (П1[а1]1, П2[а2]2), Таким образом, для отношения R (32), ключа а (33), входа ф и секретного свидетеля w, вде (ф || w) = (a1,..., a^, a1+1,..., am), выполняются следующие шаги:
1, Выводятся случайные элементы аддитивного поля r, s G Zp,
2, Вычисляется матрица П размер а 3 х (m + 2n + 4), В данном случае, при использовании стратегии аффинного доказательства первая строка матрицы П с известными элементами поля Aa,Aß, AY, A, Aj и полиномами A(x),Ah(х) соответствующих степеней (n — 1) и (n — 2) имеет следующий вид:
Aj1 = А«а + Aßß + ayy + Аг5 + A(x) + E Ai(ßui(x) + avi(x) + w4(x))/y+
i=0
m
+ E Aj(ßuj(x) + avi(x) + Wi(x))/5 + Ah(x)t(x)/5.
i=Z+1
Выражения для B^ и C(3) формиру ются аналогичным образом и содержатся
П
3, Вычисляется доказательство п = Па = ([А]1, [C]1, [B]2), где
mm
А = а + Е aiUi(x) + r5, B = ß + E а^(х) + s5,
/ m '=0 '=0 4 (34)
C = ( E aj(ßuj(x) + avj(x) + Wj(x)) + h(x)i(xH /5 + As + Br — rs5. \i=Z+1 /
Значения [А^ и [С]1 вычисляются линейно из П1 и [а1]1 ([А, С]1 = П1[о1]1), а [В]2 вычисляется линейно из П2 и [о2]2 ([В]2 = П2[о2]2),
4, На выход подаётся доказательство п.
Значения г и в используются для рандомизации компонент А, В и С доказательства п (34) — введение свойства ZK, Значения а и в в ключе доказательства о (33) предназначены для согласования А, В и С друг с другом в доказательстве п (34) при выборе (а0,..., ат).
Размер доказательства п (34) составляет два элемента С1 и один элемент С2.
Алгоритм верификатора 0/1 ^ Vfy(Я, о,а1,... ,а1,п)
Идея заключается в выработке арифметической схемы 1 ^ Теэ^Я, ф), которая соответствует матрицам Т1 ,...,ТП € F(ml+kl)x(m2 +к2), где Ь : Fml+kl+m2+k2 ^ Fn — квадратичный многовариантный целевой полином. Доказательство п = ([п1]1, [п2]2) € € х О^к2 (34) принимается, если для всех матриц Т1,... ,ТП выполняется равенство Ь(о, п) = 0 в следующем виде:
= [0]т,
где [0]т = е(д,к)° соответствует нейтральному элементу результирующей группы билинейного спаривания Таким образом, ал г оритм Vfy выполняется на основании отношения Я (32), ключа доказательства о (33), входа ф = (а1,... ,а1) и доказатель-п
1, Разделение доказательства на компоненты: п = ([А]1, [С]1, [В]2) € С1 х С1 х С2.
2, Проверка верификационного уравнения Ь(о, п) = 0 за счёт равенства
о1 Т о2
п1 ■г 1 п2 2
[А]1 ■ [В]2 =[а]1 ■ [в]2 + Е аг
виг(х) + аУг(х) + 'Шг(х)
[7]2 + [С]1 ■ [5]2. (35)
п
ав А В
а в АВ
а в С
ром (а0,... ,аг, а1+1,..., аm) в трёх компоне нтах А, В и С доказательства п (34),
Роль 7 и 5 состоит в том, чтобы сделать два последних произведения проверочного уравнения (35) независимыми от первого произведения за счёт деления левых множителей на 7 и 5 соответственно. Это предотвращает смешивание и сопоставление элементов, предназначенных для разных продуктов в уравнении верификации (35),
Если протокол гк-БКАНК включает элементы только одной из групп С1 ил и С2, то верификация (35) преобразуется в систему линейных уравнений, что полностью разрушает защищённость протокола. Поэтому для билинейного спаривания типа III [75] требуется включение элементов обеих групп,
о1 о2
содержат многовариантные полиномы Лорана, оцениваемые в элементах Zp. Проверочное уравнение рассматривается как равенство соответствующих полиномов Лорана, Согласно лемме Шварца — Циппеля [76], верификация выполняется при рассмот-А, В С
а, в,1,5 и х, иначе верификация имеет пренебрежимо малую вероятность успеха, Те-о1 ■ То2 = 0
о1 ■ То2 = 0
1
для ненулевого полинома Лорана имеет пренебрежимо малую вероятность, так как отрицательные и положительные суммарные степени полиномиально ограничены А, Алгоритм имитирования доказательств п ^ Sim(R, т, аь ..., аг)
Строится доказательство п = (gni, hn2) = ([niji, [п2]2). Для отношения R (32), ключа верификации т и открытого состояния ф = (а1,...,а1) выполняются следующие шаги:
1, Выбираются A, B G Zp,
2, Вычисляется компонента C доказательства п:
C = I AB — ав — Е аДвиДж) + avj(x) + Wj(x)) I / i.
V i=0 /
3, На выход подаётся доказательство п = (A, B, C),
13. Протокол Э. Бен-Сассона, А. Кьезы, Д. Генкина и др.
В протоколе Э, Бен-Сассона, А. Кьезы, Д, Генкина и др. [54] формирователь ключей G(1A, C) выбирает сообщение верификатора q G Fm (которое зависит от схемы C, но не от её входа) для LIP (Linear Interactive Proof) и выводит ключ доказательства о = E(q) = (E(q))m=p Начиная с а = E(q), честный доказывающий P гомоморфно зашифровывает скалярные произведения Е((п, q^)) для i = 1,..., k + 1 и п G Fm для линейных вероятностно-проверяемых доказательств (Linear Probabalistieallv Checkable Proofs, LPCP), выполняя k + 1 гомоморфных зашифрований скалярных произведений,
P
зашифрования имеет вид E(y) = (gY, hY), где g, h являются образующими элементами групп G1; G2 порядка r соответственно. Схемы линейного гомоморфного шифрования выполняют преобразование вида Е(а7 + М) = E(y)"E($)b с покоординатным умножением и возведением в степень. Схемы полностью гомоморфного шифрования приведены, например, в [77], где обеспечивается следующее свойство корректности: Decsk(Eval(F, Encpk(x1),..., Encpk(xn))) = F(x1,..., xn), вде (pk, sk) ^ Gen(1k); k — параметр защиты (длина секретного ключа),
В работе [54] построение LPCP для отношения RC основано на QSP/QAP [37], Источник [76] отмечает, что QSP для отношения даёт LPCP с тремя запросами, а QAP — LPCP с четырьмя запросами, В рассматриваемом случае применяется подход QAP из [37] с 5-запроеным LPCP для отношения
Размер схемы определяется как общее количество узлов. Булева схема C : {0,1}n х х {0,1}h ^ {0,1} с а соединениями (проводами) и в (билинейными) вентилями индуцирует соответствующую систему квадратных уравнений S с Nw = а переменными и Ng = в + h+1 ограничениями. Дополни тельные h +1 ограничений гарантируют, что со-
h
выводит 0, Арифметическая схема C : Fn х Fh ^ F1 с а проводами и в (билинейными) вентилями индуцируют соответствующую систему квадратных уравнений S с Nw = а переменными и Ng = в+1 ограничениями. Без потери общности далее рассматривается отношение = {(x, w) G Fn х Fh : C(x, w) = 0 (01)},
Элемент с входами x1,... ,xn G F называется билинейным, если выходом является (a, (1,x1,...,xn)) ■ (b, (1, x1,..., xn)) для некоторых a, b G Fn+1, вде (■, ■) обозначает скалярное произведение.
Для определения бинарного отношения фиксируется система квадратных урав-
нений ранга 1 над Е с набором S = ((а^-, Ъ, е^-),/=®1, п) вде а^-, Ъ, е^- € и п ^ Nw,
Такая система 5 выполнима с входом х € если есть секретное свидетельство
w € FNw при х = (/ш1,... ,'шп) и (аз-, (1, w)) ■ (Ъз-, (1, w)) = (сз-, (1, w)) для всех ] € [Аё], В таком случае Б(х, w) = 1, Параметр N определяет количество ограничений, — количество переменных, п — размер входа.
Фиксируется произвольное подмножество Б = {а1,..., } в ^ |Б| = Для I € € {0,1,..., ^} определяется тройка функций Аг, Вг, Сг : Б ^ F следующим образом: для каждого ] € ]
Аг(аз ) = ^ (i), Вг(аз ) = Ъ3 (i), Сг(аз ) = С ф.
Каждая функция Аг,Вг, Сг расширяется до многочлена от одной переменной степени (Мё — 1) над Определяв тея Дз как многочлен от одной перемени ой степени N над равный нулю на Б, Доказывающий Р^рср на основе входных данных строит доказательство в виде вектора п элементов поля F (это результат выбора честным оракулом линейного доказательства).
Таким образом, на входе (х,п) верификатор Р(х) = (^ьрср,^ьрср) делает к
п
висимо от х формируетея к запросов q1,..., qk € Fm к п и информация о состоянии и. На заданных (х, и, к) оракул (доказывающий) отвечает а1 = (п, q1),... ,ак = (п, qk), а дьрср верифицирует доказательство.
Алгоритм Р
Для входа х € Fn и секретного свидетельства w € FNw; таких, чт0 (х, w) € Р выполняется следующим образом:
1, Случайно и равновероятно выбираются 51,52,53 € F,
2, Пусть Ь = (ко, к1,..., ) € FNg+1 — коэффициенты многочлена Н(г) от одной переменной:
Н А(г)В (г) — С (г) Н (г)= ^ (г) .
Здесь А, В, С — многочлены от одной переменной степени которые определяются следующим образом:
А(г) = Ао(г) + Е тгАг(г) + 5^(г),
г=1
В (г) = Во (г) + Е 1щВг(г) + 52^ (г),
г=1
С (г) = Со (г) + Е ™Сг(г) + 5з ^ (г).
г=1
3, Выводится вектор п = (51, 52,53,1, w, Ь) € F3+(Nw+1)+(Ng+1), Алгоритм формирования запросов ^ьрср
1, Случайно и равновероятно выбирается т € F,
2, Выводится пять запросов ..., q5), qг € F5+Nw+Ng, следующего вида:
ql = Zs (т), 0, 0, Ао(т), ...,А^ (т), 0,..., 0 q2 = 0, ^ (т), 0, Во(т), ...,В^ (т), 0,..., 0 qз = 0, 0, Zs (т), Со(т), ...,С^ (т), 0,..., 0: q4 = 0,..., 0, 1,т, т2,... ,т ^; q5 = 0, 0, 0,1,т, т 2,...,тп, 0,..., 0.
3, Выводится и = (и1,..., щп+2), где щ = тг 1 для г € {1,..., п + 1} и щп+2 = ^(т),
В заключение алгоритм принятия решения Дьрср проверяет принадлежность х € путём повторной проверки информации о состоянии и, созданной алгоритмом запроса ^ьрср, а также элементами поля а1 = (п*, я1),..., а5 = (п*, я5), которые
являются ответами, связанными с линейным доказательством п*. В общем случае доп*
ное нечестным доказывающим.
Алгоритм принятия решения Дьрср
Для входа х € Еп, информации о состоянии и = (щ1,... ,щп+2) и ответов (а1,..., а5) = (п, д1),..., (п, д5) верификатор ДЬРСР принимает доказательство, если выполняются следующие равенства:
п
Й1Й2 — «3 — «4Щп+2 = 0, Й5 — Щ1 — Е ХгЩг+1 = 0.
г=1
Описанный ЬРСР имеет пять запросов по (5 + ^ + элементов Е и информацию о состоянии с (п + 2) элементами Е, Для ^ьрср каждая координата запроса является оценкой полиномов Дд, А, В, С степени не выше N от случайного т € Е, а Дьрср проверяет ноль двух многочленов степени 2, Поэтому ЬРСР имеет степень (^д, ) = (N2, 2), Значение а4 определяется от а1, а2, а3, щп+2 через ограничение а1а2 — а3 — «4щп+2 = 0, поэтому а4 также не раскрывает дополнительной информации. Значение а5 содержит информацию о части равной х, которая известна верификатору по определению. Таким образом, (а1,..., а5, и) имеют независимые от w распределения,
14. Протокол Э. Бен-Сассона, А. Кьезы, Э. Тромера, М. Вирзы
Протокол /к-Я.ХАНК [65] основан на [49] и используется для доказательства/проверки выполнимости Ег-арифметических схем. Отличие от [49] заключается в отсутствии предположений равенства С1 = С2, а также в увеличении размера ключа верификации в зависимости от размера п вход а х в гаде п + О (п) вместо 3п + О(п), Кроме того, [65] устраняет обнаруженную уязвимость [78], оформленную как СУЕ-2019-7167 в отношении криптовалюты Zeash: рк^ теперь начинается с иидекса п + 1, а переопределены соответствующим образом.
Публичные параметры включают простое число г, две циклические группы С1, С2 порядка г с образующими Р1, Р2 соответственно и епариваиие е : С1 х С2 ^ (где также цикличиа порядка г). Защищённость протокола зависит от размера группы д алгоритма Диффи — Хеллмана, знания д-степепи экспоненты и д-строгих предположений Диффи — Хеллмана [31, 79, 80] для д, полиномиально зависимого от размера схемы.
Алгоритм формирования ключей С
На вход принимается арифметическая схема С : Еп х ^ Е1 и выводятся ключи доказывающего рк и верификатора ук,
1, Вычисляются (А, В, С, ^) = РАРтэ^С), при этом А, В, С расширяются за счёт следующих значений:
Ат+1 = Вт+2 = Ст+3 = Д Ат+2 = Ат+3 = Вт+1 = Вт+3 = Ст+1 = Ст+2 = 0.
2, Производится случайная выборка т, рА, рв, , , в, 7 € Е,
3, Устанавливается ключ рк = (С,ркА,рк'А,ркв,рк'в,ркс,рк'с,ркк,ркн), где
ркА = [Аг(т)раР1}г=+, ркА = [а(т)аАРАР^тХ+ъ
ркв = {Вг(т)рвР2}?=о3, рк'в = {Вг(т)авРвР1}г=03,
ркс = {Сг(т)рАРвР^3, рк'с = {Сг(т)асРАРвР^О, (36)
ркк = {в (Аг(т )ра + В г (т )рв + С г (т )раРв )Р>1}т=+3, ркн = {тгР1}и .
По сравнению с составляющими ключа доказывающего протокола Р. Джентри и др. [37] в выражениях (9) и (8) ключ доказывающего [65] в выражении (36) содержит на три элемента больше для каждого ркА,ркв,ркс,рк'А,рк'в,рк'с,ркк, а смещения а а , ав, ас для ркА, рк'в, рккс применяются только по и ндексам г = = 0,... ,т + 3
4, Устанавливается ключ ук = (ькА,ькв,ькс,ьк1 ,ьк1р1 ,ькг,укю'), где
VкА = аАР2, Vкв = авР1, ькс = асР2, ук1 = 7Р2, vkL, = 1вР1, = 1 вР2,
= Yp2, = lв11,
vkz = 2 (т )раРв Р2, 1>кТс = (Аг(т )раР1)Щ=о.
5, Выводятся ключи доказывающего и верификатора (рк, ук).
При вызове схемы С : х ^ с а проводами и Ь билинейными вентилями формирователь ключей выводит рк с (6а + Ь+1 + 25) элемента ми С1 и (а + 4) элемента ми С2, ук с (п + 3) элементами С1 и пятью элементами С2.
Алгоритм доказывающего Р
Принимается ключ рк, вход х € секретное свидетельство а € и выводится доказательство п:
1, Вычисляются (А, В, С, 2) = РАРтэ^С),
2, Вычисляется б = РАРтэ^С, х, а) €
3, Производится случайная выборка ,52,51 €
4, Вычисляется Ь = (к0,к1,... ,ко) € который содержит коэффициенты Н (г) = (А(г)В (г) — С (г)) ¡2 (г), где А, В,С € [г] (Ег [г] —кольцо многочленов над Е от одной переменной) следующего вида:
А(г) = Ао(г) + Е ^Аг(г) + ¿12(г),
г=1
т
В (г) = Во (г) + Е ^гВг(г) + ^ (г),
г=1
т
С (г) = Со (г) + Е SгCг(z) + ¿з2 (г).
г=1
5, Устанавливается ключ ркА, соответствующий ркА с обнулением ркА,г = 0 для г = 0,1,..., п. Ключ ркА соответствует ркА, то с добавлением п +1 нулей,
6, Фиксируется с = (1, б, ¿1, 62, ¿3) € и вычисляются
ПА = (с,ркА), п'а = {с,ркА), пв = {с,ркв), п'в = {с,рк'в), пс = (с,ркс), п'с = (с,ркс), пк = (с,ркк), пн = (Ь,ркн).
7, Выводится доказательство п = (пА, п'А ,пв ,п'в ,пс ,п'с, пк, пн), содержащее семь элементов С1 и один элемент С2.
Алгоритм верификатора V
Принимается ключ vk, вход x G F^, доказательство п и выводится бит решения:
1, Вычисляется vkx = + ЕГ=1 G Gi.
2, Проверяется подлинность обязательств для A, B, C:
e(nA,vkA) = e(nA, P2), ,пБ) = e(nB, P2), е(пс) = e(nC, P2) .
3, Проверяется, что использовались аналогичные коэффициенты:
е(пк, vfc7) = e(vkx + па + пс, vfc^Mvfc^,пв) .
4, Проверяется делимость QAP:
e(vkx + па, пБ) = в(пя, vkz)е(пс, P2).
5, Доказательство принимается, если все перечисленные проверки верны.
Заключение
Рассмотрены базовые примеры протоколов DV [22, 31, 32, 37, 42, 55, 63] и PV [37, 49, 55, 63] zk-SNARK, для которых представлены алгоритмы формирования ключей, доказательств достоверности вычислений и их верификации. Описано формирование публичных и секретных параметров в виде ключей доказательства и верификации, публикуемых в форме главных ссылочных строк [32, 37, 41, 52, 63, 74, 81] и др. Представлены варианты протоколов zk-SNARK для выполнимости дискретных функций с заданными значениями выходов, связанными с открытыми и секретными входами. Рассмотрены алгебраические преобразования, сводящие задачу проверки корректности вычисления дискретных функций к проверке множества полиномиальных уравнений низкой степени, которые получили наименования QAP, SAP, QSP, SSP, QPP [37, 50-52, 55] и др. Для передачи информации о полиноме достаточно передать его значение, вычисленное в секретной точке [4], в результате чего полином произвольной степени сводится к одному значению поля. Протоколы zk-SNARK также строятся для схем с распределёнными и аутентифицированными данными [63],
Применяемые алгоритмы используют широкий спектр различных криптографических преобразований, основанных на задачах RS А, Диффи - Хеллмана, а также на различных вариациях задач о знании экспонент [37, 76], Кроме того, используются цифровые подписи, схемы гомоморфного шифрования [44, 67, 77], билинейные спаривания на эллиптических кривых и другие криптографические примитивы,
В таблице рассмотренные протоколы zk-SNARK классифицированы по применяемому до криптографических преобразований математическому аппарату, используемым криптографическим примитивам, схемам верификации и решаемым задачам. Для наглядности вариации криптографических преобразований, связанных с задачей Диффи — Хеллмана и знанием экспонент, обозначены DH, билинейное спаривание — BP, эллиптические кривые —ЕСС, полностью гомоморфное шифрование — FHE, секретная/публичная верификация — PV/DV, Решаемые протоколами zk-SNARK задачи представлены верифицируемыми вычислениями VC и доказательствами знания.
Общим для всех рассмотренных протоколов zk-SNARK является использование публичной CRS, ключей доказательства и верификации. Защищённость практически всех рассмотренных протоколов основана на вариантах задачи Диффи — Хеллмана, знании экспонент и билинейном спаривании. Тем не менее для решения прикладных
задач с использованием поразрядных операций целесообразнее выбирать протоколы /к-Я\ЛНК с полиномиальными наборами (^ЗР/ЭЭР, Набор полиномов С^АР повышает быстродействие для случая работы с целыми элементами поля. Более специфичным вариантом является набор С^РР, где провода представлены многочленами, что также может повысить производительность.
Сравнительный анализ рассмотренных протоколов zk-SNARK
Протокол Матем. аппарат Криптопримитивы Сх. вериф. Реш. задача
Й. Грот [311 Перестановка DH, BP, ЕСС PV Знания
P. Дженнаро и др. [34] QAP FHE, симметр. алг. DV VC
П. Фаузи и др. [41] Циклический сдвиг DH, BP, ЕСС PV Знания
Р. Дженнаро и др. [37] QSP, QAP RSA, DH, BP, ЕСС PV, DV Знания
Б. Парно и др. [49] QAP DH, BP, ЕСС PV VC
X. Липмаа [52] QSP, SSP, QAP, SAP DH, BP, ЕСС PV Знания
X. Липмаа [52] Циклический сдвиг DH, BP, ЕСС PV Знания
А. Косба и др. [55] QPP DH, BP, ЕСС PV, DV Знания
Г. Данезис и др. [51] SSP DH, BP, ЕСС PV Знания
К. Костелло и др. [62] QAP DH, BP, ЕСС PV VC
М. Бакес и др. [63] QAP DH, BP, ЕСС, FHE PV, DV Знания
Й. Грот [74] QAP DH, BP, ЕСС PV, DV Знания
Э. Бен-Сассон и др. [54] QAP FHE PV Знания
Э. Бен-Сассон и др. [65] QAP DH, BP, ЕСС PV Знания
Несмотря на общирный список представленных протоколов zk-SNARK, он не является исчерпывающим, а содержит исторически базовые конструкции. Отдельными вопросами являются анализ способов повышения производительности и выбор наиболее исследованного с точки зрения безопасности протокола, В рамках практической реализации необходим выбор протокола zk-SNARK с учётом ресурсов конкретной распределённой вычислительной системы и на основе таких параметров, как трудозатраты на формирование главной ссылочной строки, построение и верификацию доказательств, а также размер главной ссылочной строки и доказательств,
ЛИТЕРАТУРА
1. HopwoodD., BoweS., Hornby Т., and Wilcox N. Zcash Protocol Specification. Version 2021.2.16 [NU5 proposal], 2021. 213p. https://raw.githubusercontent.com/Zcash/zips/ master/protocol/protocol.pdf.
2. Черемушкин A. В. Криптографические протоколы. Основные свойства и уязвимости. М.: Изд. центр «Академия», 2009. 272 с.
3. Запечников С. В. Криптографическая защита процессов обработки информации в недоверенной среде: достижения, проблемы, перспективы // Вестник современных цифровых технологий. 2019. №1. С. 4-16.
4. PetkusM. Why and How zk-SNARK Works. ArXiv, abs/1906.07221. 2019. 65p. https:// arxiv.org/pdf/1906.07221.pdf.
5. Goldreich O., Micali S., and Wigderson A. How to play any mental game or a completeness theorem for protocols with honest majority 11 Proc. STOC'87. N.Y.: ACM, 1987. P. 218-229.
6. Ben-Or M., Goldwasser S., and Wigderson A. Completeness theorems for non-crvptographic fault-tolerant distributed computation 11 Proc. STOC'88. N.Y.: ACM, 1988. P. 1-10.
7. GueronS., LindellY., Nof A., and PinkasB. Fast garbling of circuits under standard assumptions // Proc. CCS'15. N.Y.: ACM, 2015. P. 567-578.
8. Wang X., Ranellucci S., and Katz J. Global-scale Secure Multiparty Computation. IACR eprint Archive. 2017. 35p. https://eprint.iacr.org/2017/189.pdf.
9. Boy en X. and Waters B. Compact group signatures without random oracles / / LNCS. 2006. V. 4004. P. 427-444.
10. Chase M., Kohlweiss M., Lysyanskaya A., and Meiklejohn S Malleable proof systems and applications // LNCS. 2012. V.7237. P. 281-300.
11. Belenkiy M., Chase M., Kohlweiss M., and Lysyanskaya A. P-signatures and noninteractive anonymous credentials // LNCS. 2008. V.4948. P. 356-374.
12. Belenkiy M., Camenisch J., Chase M., et al. Randomizable proofs and delegatable anonymous credentials // LNCS. 2009. V. 5677. P. 108-125.
13. Katz J., Myers S., and Ostrovsky R. Cryptographic counters and applications to electronic voting // LNCS. 2001. V. 2045. P. 78-92.
14. Lipmaa if. Two Simple Code-Verification Voting Protocols. Cryptologv ePrint Archive. Report 2011/317. 2011. https://eprint.iacr.org/2011/317.
15. KondaC., Connor M., Westland D., et al. Nightfall, https://raw.githubusercontent .com/ EYBlockchain/nightfall/master/doc/whitepaper/nightfall-vl.pdf. 2019.
16. Diamond B. ZSL Proof of Concept. https://github.eom/ConsenSys/quorum/wiki/ZSL# protocol.
17. Quorum — ZSL Integration: Proof of Concept. Technical Design Document. 23p. https: //github.com/ConsenSys/zsl-q/blob/master/docs/ZSL-Quorum-POC_TDD_vl.3pub.pdf.
18. Welcome to zkSvnc. https://zksync.io/faq/.
19. Doreian B. W. and Erickson R. R. PIVX: Protected Instant Verified Transaction. 25 p. https : //pivx.org/files/whitepapers/PIVX_Non_Technical_Whitepaper_v2.0.pdf.
20. Pertsev A., Semenov R., and Storm R. Tornado Cash Privacy Solution. Version 1.4. 2019. 3 p. https://tornado.cash/Tornado.cash_whitepaper_vl.4.pdf.
21. Danezis G., Fournet C., Kohlweiss M., and Parno B. Pinocchio coin: building zerocoin from a succinct pairing-based proof system // Proc. PETShop'13. N.Y.: ACM, 2013. P. 27-30.
22. Bitansky N., Canetti R., Chiesa A., et al. The hunting of the SNARK //J. Cryptologv. 2016. No. 30. P. 989-1066.
23. Kolesnikov V., Kumaresan R., Rosulek M., and Trieu N. Efficient batched oblivious PRF with applications to private set intersection // Proc. CCS'2016. N.Y.: ACM, 2016. P. 818-829.
24. Rindal P. and Rosulek M. Malicious-secure private set intersection via dual execution // Proc. CCS'2017. N.Y.: ACM, 2017. P. 1229-1242.
25. Ion M., Kreuter B., Nergiz E., et al. Private Intersection-Sum Protocol with Applications to Attributing Aggregate Ad Conversions. IACR eprint Archive. 2017. 14 p. https ://eprint. iacr.org/2017/738.
26. Bonawitz K., Ivanov V., Kreuter B., et al. Practical secure aggregation for federated learning on user-held data 11 Proc. NIPS'2016. N.Y.: ACM, 2016. P. 1175-1191.
27. Corrigan-Gibbs if. and Boneh D. Prio: Private, robust, and scalable computation of aggregate statistics 11 Proc. XS 1)117. USENIX Ass., 2017. P. 259-282.
28. Angel S., Chen H., Laine K., and Setty S. PIR with Compressed Queries and Amortized Query Processing. IACR eprint Archive. 2017. 18p. https://eprint.iacr.org/2017/1142. pdf.
29. CheuA., Smith A., Ullman J., et al. Distributed differential privacy via shuffling // LNCS. 2019. V. 11476. P. 375-403.
30. Bittau A., Erlingsson U., Maniatis P., et al. PROCHLO: Strong privacy for analytics in the crowd 11 Proc. SOSP'17. N.Y.: ACM, 2017. P. 441-459.
31. GrothJ. Short pairing-based non-interactive zero-knowledge arguments // LNCS. 2010. V. 6477. P. 321-340.
32. Lipmaa Н. Progression-free sets and sublinear pairing-based non-interactive zero-knowledge arguments 11 LNCS. 2012. V.7194. P. 169-189.
33. Tao T. and Vu V. Additive Combinatorics. Cambridge Studies in Advanced Mathematics. No. 105. Cambridge University Press, 2006. 532 p.
34. Gennaro R., Gentry C., and Parno B. Non-interactive verifiable computing: Outsourcing computation to untrusted workers // LNCS. 2010. Y. 6223. P. 465-482.
35. Yao A. Protocols for secure computations // 23rd Ann. Svmp. Foundations of Computer Science. 1982. P. 160-164.
36. Yao A. How to generate and exchange secrets // 27th Ann. Svmp. Foundations of Computer Science. 1986. P. 162-167.
37. Gennaro R., Gentry G., Parno В., and Raykova M. Quadratic span programs and succinct NIZKs without PCPs // LNCS. 2013. V.7881. P. 626-645.
38. Pankova A. Succinct Non-Interactive Arguments from Quadratic Arithmetic Programs. Technical report. University of Tartu. Cvbernetica AS, 2013. 28 p.
39. Parno В., Raykova M., and Vaikuntanathan V. How to delegate and verify in public: Verifiable computation from attribute-based encryption // LNCS. 2012. V.7194. P.422-439.
40. Groth J., Ostrovsky R., and Sahai A. Perfect non-interactive zero knowledge for NP // LNCS. 2006. V. 4004. P. 339-358.
41. FauziP., Lipmaa H., and Zhang В. Efficient modular NIZK arguments from shift and product 11 LNCS. 2013. V. 8257. P. 92-121.
42. Reitwiebner G. zkSNARKs in a Nutshell. 2017. 15 p. https://blog.ethereum.org/2016/12/ 05/zksnarks-in-a-nutshell/.
43. Bitansky N., Canetti R., Ghiesa A., and Tromer E. Recursive Composition and Bootstrapping for Snarks and Proof-Carrying data. IACR Crvptologv ePrint Archive. 2012. 61 p. http: //eprint.iacr.org/2012/095.
44. Boneh D., Segev G., and Waters B. Targeted malleability: homomorphic encryption for restricted computations 11 Proc. ITCS'12. N.Y.: ACM, 2012. P. 350-366.
45. Valiant P. Incrementally verifiable computation or proofs of knowledge imply time/space efficiency // LNCS. 2008. V.4948. P. 1-18.
46. Paillier P. Public-key crvptosvstems based on composite degree residuositv classes // LNCS. 1999. V. 1592. P. 223-238.
47. Лось А. В., Нестеренко А. Ю., Рожков M. И. Криптографические методы защиты информации: учеб. для академического бакалавриата. 2-е изд. М.: Юрайт, 2017. 473 с.
48. Chase М., Kohlweiss М., Lysyanskaya A., and Meiklejohn S. Malleable proof systems and applications 11 LNCS. 2012. V. 7237. P. 281-300.
49. Parno В., Howell J., Gentry C., and Raykova M. Pinocchio: Nearly practical verifiable computation // Proc. 34th IEEE Svmp. Security and Privacy. Oakland, 2013. P. 238-252.
50. Lipmaa H. Succinct non-interactive zero knowledge arguments from span programs and linear error-correcting codes // LNCS. 2013. V.8269. P. 41-60.
51. Danezis G., Fournet C., Groth J., and Kohlweiss M. Square span programs with applications to succinct NIZK arguments // LNCS. 2014. V.8873. P. 532-550.
52. Lipmaa H. Almost Optimal Short Adaptive Non-Interactive Zero Knowledge. Tech. Rep. 2014/396. IACR, 2014. 20p. http://eprint.iacr.org/2014/396.
53. Blum M., Feldman P., and Micali S. Non-interactive zero-knowledge and its applications // Proc. STOCKS. N.Y.: ACM, 1988. P. 103-112.
54. Ben-Sasson E., ChiesaA., GenkinD., et al. SNARKs for C: Verifying program executions succinctly and in zero knowledge // LNCS. 2013. V. 8043. P. 90-108.
55. Kosba A. E., Papadopoulos D., Papamanthou G., et al. TRUESET: Nearly practical verifiable set computations. Cryptologv ePrint Archive. Report 2014/160. 2014. 30p. http://eprint. iacr.org/2014/160.
56. Shoup V. A new polynomial factorization algorithm and its implementation //J. Symbolic Computation. 1995. V. 20. No. 4. P. 363-397.
57. Shoup V. NTL: Number Theory Library, http://www.shoup.net/ntl/.
58. Granlund T. GMP: The GNU Multiple Precision Arithmetic Library. 2006. http://gmplib. org/.
59. Beuchat J.-L., Gonzâlez-Dâz J. E., MitsunariS., et al. High-speed software implementation of the optimal ate pairing over Barreto — Naehrig curves // LNCS. 2010. V. 6487. P. 21-39.
60. Kissner L. and Song D. Privacy-preserving set operations // LNCS. 2005. V. 3621. P. 241-257.
61. Papamanthou G., Tamassia R., and Triandopoulos N. Optimal verification of operations on dynamic sets. Cryptologv ePrint Archive. Paper 2010/455. 2010. 31 p. https ://eprint. iacr. org/2010/455.
62. Costello G., Fournet C., Howell J., et al. Geppetto: Versatile verifiable computation // Proc. IEEE Svmp. SP'15. IEEE Computer Society, USA, 2015. P. 253-270.
63. Baches M., Barbosa M., FioreD., and Reischuk R. M. ADSNARK: Nearly practical and privacy-preserving proofs on authenticated data // Proc. IEEE Svmp. SP'15. IEEE Computer Society, USA, 2015. P. 271-286.
64. Fournet G., Kohlweiss M., Danezis G., and Luo Z. ZQL: A compiler for privacy-preserving data processing 11 Proc. 22nd USENIX Conf. SEC 13. USENIX Ass., 2013. P. 163-178.
65. Ben-Sasson E., GhiesaA., Tromer E., and Virza M. Succinct Non-Interactive Zero Knowledge for a von Neumann Architecture. Updated version, 2019. 37 p. https ://eprint. iacr.org/2013/879.pdf.
66. Baches M., Fiore D., and Reischuk R. M. Verifiable delegation of computation on outsourced data // Proc. CCS'13. N.Y.: ACM, 2013. P. 863-874.
67. Gennaro R. and WichsD. Fully homomorphic message authenticators // LNCS. 2013. V. 8270. P. 301-320.
68. Gamenisch J., Kohlweiss M., and Soriente G. An accumulator based on bilinear maps and efficient revocation for anonymous credentials // LNCS. 2009. V. 5443. P. 481-500.
69. Bernstein D. J., Duif N., Lange T., et al. High-speed high-securitv signatures //J. Crvptogr. Engineering. 2012. V.2. No. 2. P. 77-89.
70. Supercop. http://bench.cr.yp.to/supercop.html.
71. BoweS., Gabizon A., and Green M. D. A multi-party protocol for constructing the public parameters of the Pinocchio zk-SNARK. Cryptologv ePrint Archive. Report 2017/602. 2017. 25p. https://ia.cr/2017/602.
72. Ben-Sasson E., GhiesaA., Tromer E., and Virza M. Succinct non-interactive zero knowledge for a von Neumann architecture // Proc. 23rd USENIX Security Svmp. San Diego, CA, USA, 2014. P. 781-796.
73. Gabizon A. On the security of the BCTV Pinocchio zk-SNARK variant. Cryptologv ePrint Archive. Paper 2019/119. 2019. 9p. https://eprint.iacr.org/2019/119.
74. GrothJ. On the size of pairing-based non-interactive arguments // LNCS. 2016. V. 9666. P. 305-326.
75. Galbraith S. D., Paterson K. G., and Smart N. P. Pairings for cryptographers // Discr. Appl. Math. 2008. V. 156. Iss. 16. P. 3113-3121.
76. Bitansky N., GhiesaA., IshaiY., et al. Succinct non-interactive arguments via linear interactive proofs 11 LNCS. 2013. V.7785. P. 315-333.
77. Armknecht F., Boyd C., Carr C., et al. Guide to Fully Homomorphic Encryption. Crvptologv ePrint Archive. 35p. https://eprint.iacr.org/2015/1192.pdf.
78. GabizonA. On the Security of the BCTV Pinocchio zk-SNARK Variant. Crvptologv ePrint Archive. Report 2019/119. 2019. 9p. https://ia.cr/2019/119.
79. Boneh D. and Boy en X. Secure identity based encryption without random oracles / / LNCS. 2004. V. 3152. P. 443-459.
80. Gennaro R. Multi-trapdoor commitments and their applications to proofs of knowledge secure under concurrent man-in-the-middle attacks // LNCS. 2004. V.3152. P. 220-236.
81. Ben-Sasson E., Ghiesa A., Green M., et al. Secure sampling of public parameters for succinct zero knowledge proofs // Proc. IEEE Svmp. Security and Privacy, San Jose, CA, USA, 2015. P. 287-304.
REFERENCES
1. HopwoodD., BoweS., Hornby T., and Wilcox N. Zcash Protocol Specification. Version 2021.2.16 [NU5 proposal], 2021. 213p. https://raw.githubusercontent.com/Zcash/zips/ master/protocol/protocol.pdf.
2. Gheremushkin A. V. Kriptograficheskie protokolv. Osnovnve svovstva i uvazvimosti [Cryptographic Protocols. Basic Properties and Vulnerabilities]. Moscow, Akademiva Publ., 2009. 272 p. (in Russian)
3. Zapechnikov S. V. Kriptograficheskava zashchita protsessov obrabotki informatsii v nedoverennov srede: dostizheniva, problemv, perspektivv [Cryptographic protection of information processing processes in an untrusted environment: achievements, problems, prospects]. Vestnik Sovremennvkh Tsifrovvkh Tekhnologiv, 2019, no. 1, pp. 4-16. (in Russian)
4. PetkusM. Why and How zk-SNARK Works. ArXiv, abs/1906.07221. 2019. 65p. https:// arxiv.org/pdf/1906.07221.pdf.
5. Goldreich O., Micali S., and Wigderson A. How to play any mental game or a completeness theorem for protocols with honest majority. Proc. STOC'87, N.Y., ACM, 1987, pp. 218-229.
6. Ben-Or M., Goldwasser S., and Wigderson A. Completeness theorems for non-crvptographic fault-tolerant distributed computation. Proc. STOC'88, N.Y., ACM, 1988, pp. 1-10.
7. GueronS., LindellY., Nof A., and Pinkas B. Fast garbling of circuits under standard assumptions. Proc. CCS'15, N.Y., ACM, 2015, pp. 567-578.
8. Wang X., Ranellucci S., and Katz J. Global-scale Secure Multiparty Computation. IACR eprint Archive, 2017. 35p. https://eprint.iacr.org/2017/189.pdf.
9. Boyen X. and Waters B. Compact group signatures without random oracles, LNCS, 2006, vol. 4004, pp. 427-444.
10. Chase M., Kohlweiss M., Fysyanskaya A., and Meiklejohn S Malleable proof systems and applications. LNCS, 2012, vol.7237, pp.281-300.
11. Belenkiy M., Chase M., Kohlweiss M., and Lysyanskaya A. P-signatures and noninteractive anonymous credentials. LNCS, 2008, vol.4948, pp. 356-374.
12. Belenkiy M., Camenisch J., Chase M., et al. Randomizable proofs and delegatable anonymous credentials. LNCS, 2009, vol. 5677, pp. 108-125.
13. Katz J., Myers S., and Ostrovsky R. Cryptographic counters and applications to electronic voting. LNCS, 2001, vol.2045, pp.78-92".
14. Lipmaa H. Two Simple Code-Verification Voting Protocols. Crvptologv ePrint Archive. Report 2011/317, 2011. https://eprint.iacr.org/2011/317.
15. KondaC., Connor M., WestlandD., et al. Nightfall, https://raw.githubusercontent .com/ EYBlockchain/nightfall/master/doc/whitepaper/nightfall-vl.pdf. 2019.
16. Diamond B. ZSL Proof of Concept. https://github.eom/ConsenSys/quorum/wiki/ZSL# protocol.
17. Quorum — ZSL Integration: Proof of Concept. Technical Design Document. 23 p. https: //github.com/ConsenSys/zsl-q/blob/master/docs/ZSL-Quorum-POC_TDD_vl.3pub.pdf.
18. Welcome to zkSvnc. https://zksync.io/faq/.
19. Doreian B. W. and Erickson R. R. PIVX: Protected Instant Verified Transaction. 25 p. https : //pivx.org/files/whitepapers/PIVX_Non_Technical_Whitepaper_v2.0.pdf.
20. Pertsev A., Semenov R., and Storm R. Tornado Cash Privacy Solution. Version 1.4. 2019. 3 p. https://tornado.cash/Tornado.cash_whitepaper_vl.4.pdf.
21. Danezis G., Fournet G., Kohlweiss M., and Parno B. Pinocchio coin: building zerocoin from a succinct pairing-based proof system. Proc. PETShop'13, N.Y., ACM, 2013, pp. 27-30.
22. Bitansky N., Canetti R., Chiesa A., et al. The hunting of the SNARK. J. Cryptologv, 2016, no. 30, pp.989-1066.
23. Kolesnikov V., Kumaresan R., Rosulek M., and Trieu N. Efficient batched oblivious PRF with applications to private set intersection. Proc. CCS'2016, N.Y., ACM, 2016, pp. 818-829.
24. Rindal P. and Rosulek M. Malicious-secure private set intersection via dual execution. Proc. CCS'2017, N.Y., ACM, 2017, pp. 1229-1242.
25. Ion M., Kreuter B., Nergiz E., et al. Private Intersection-Sum Protocol with Applications to Attributing Aggregate Ad Conversions. IACR eprint Archive, 2017. 14 p. https ://eprint. iacr.org/2017/738.
26. Bonawitz K., Ivanov V., Kreuter B., et al. Practical secure aggregation for federated learning on user-held data. Proc. NIPS'2016, N.Y., ACM, 2016, pp. 1175-1191.
27. Corrigan-Gibbs if. and Boneh D. Prio: Private, robust, and scalable computation of aggregate statistics. Proc. NSDI'17, USENIX Ass., 2017, pp. 259-282.
28. Angel S., Chen H., Laine K., and Setty S. PIR with Compressed Queries and Amortized Query Processing. IACR eprint Archive, 2017. 18p. https://eprint.iacr.org/2017/1142. pdf.
29. Cheu A., Smith A., Ullman J., et al. Distributed differential privacy via shuffling. LNCS, 2019, vol.11476, pp. 375-403.
30. Bittau A., Erlingsson U., Maniatis P., et al. PROCHLO: Strong privacy for analytics in the crowd. Proc. SOSP'17, N.Y., ACM, 2017, pp. 441-459.
31. Groth J. Short pairing-based non-interactive zero-knowledge arguments. LNCS, 2010, vol.6477, pp.321-340.
32. Lipmaa if. Progression-free sets and sublinear pairing-based non-interactive zero-knowledge arguments. LNCS, 2012, vol.7194, pp. 169-189.
33. Tao T. and Vu V. Additive Combinatorics. Cambridge Studies in Advanced Mathematics, no. 105. Cambridge University Press, 2006. 532 p.
34. Gennaro R., Gentry C., and Parno B. Non-interactive verifiable computing: Outsourcing computation to untrusted workers. LNCS, 2010, vol.6223, pp.465-482.
35. Yao A. Protocols for secure computations. 23rd Ann. Svmp. Foundations of Computer Science, 1982, pp.160-164.
36. Yao A. How to generate and exchange secrets. 27th Ann. Svmp. Foundations of Computer Science, 1986, pp. 162-167.
37. Gennaro R., Gentry C., Parno B., and Raykova M. Quadratic span programs and succinct NIZKs without PCPs. LNCS, 2013, vol.7881, pp.626-645.
38. Pankova A. Succinct Non-Interactive Arguments from Quadratic Arithmetic Programs. Technical report, University of Tartu. Cvbernetica AS, 2013. 28 p.
39. Parno B., Raykova M., and Vaikuntanathan V. How to delegate and verify in public: Verifiable computation from attribute-based encryption. LNCS, 2012, vol.7194, pp.422-439.
40. Groth J., Ostrovsky R., and Sahai A. Perfect non-interactive zero knowledge for NP. LNCS, 2006, vol.4004, pp. 339-358.
41. Fauzi P., Lipmaa H., and Zhang B. Efficient modular NIZK arguments from shift and product. LNCS, 2013, vol.8257, pp.92-121.
42. Reitwiebner C. zkSNARKs in a Nutshell. 2017. 15 p. https://blog.ethereum.org/2016/12/ 05/zksnarks-in-a-nutshell/.
43. Bitansky N., Canetti R., Chiesa A., and Tromer E. Recursive Composition and Bootstrapping for Snarks and Proof-Carrying data. IACR Crvptologv ePrint Archive, 2012. 61 p. http: //eprint.iacr.org/2012/095.
44. Boneh D., Segev G., and Waters B. Targeted malleability: homomorphic encryption for restricted computations. Proc. ITCS'12, N.Y., ACM, 2012, pp. 350-366.
45. Valiant P. Incrementally verifiable computation or proofs of knowledge imply time/space efficiency. LNCS, 2008, vol. 4948, pp. 1-18.
46. Paillier P. Public-key crvptosvstems based on composite degree residuositv classes. LNCS, 1999, vol. 1592, pp. 223-238.
47. Los'A.B., Nesterenko A. Yu., and RozhkovM.I. Kriptograficheskie metodv zashchitv informatsii: uchebnik diva akademicheskogo bakalavriata [Cryptographic Methods of Information Protection: Textbook for Academic Undergraduate]. Moscow, Yuravt Publ., 2017. 473 p. (in Russian)
48. Chase M., Kohlweiss M., Lysyanskaya A., and Meiklejohn S. Malleable proof systems and applications. LNCS, 2012, vol.7237, pp.281-300.
49. Parno B., Howell J., Gentry C., and Raykova M. Pinocchio: Nearly practical verifiable computation. Proc. 34th IEEE Svmp. Security and Privacy, Oakland, 2013, pp. 238-252.
50. Lipmaa H. Succinct non-interactive zero knowledge arguments from span programs and linear error-correcting codes. LNCS, 2013, vol.8269, pp.41-60.
51. Danezis G., Fournet G., Groth J., and Kohlweiss M. Square span programs with applications to succinct NIZK arguments. LNCS, 2014, vol.8873, pp. 532-550.
52. Lipmaa H. Almost Optimal Short Adaptive Non-Interactive Zero Knowledge. Tech. Rep. 2014/396, IACR, 2014. 20p. http://eprint.iacr.org/2014/396.
53. Blum M., Feldman P., and Micali S. Non-interactive zero-knowledge and its applications. Proc. STOC'88, N.Y., ACM, 1988, pp. 103-112.
54. Ben-Sasson E., Chiesa A., GenkinD., et al. SNARKs for C: Verifying program executions succinctly and in zero knowledge. LNCS, 2013, vol.8043, pp.90-108.
55. Kosba A.E., Papadopoulos D., Papamanthou C., et al. TRUESET: Nearly practical verifiable set computations. Crvptologv ePrint Archive. Report 2014/160, 2014. 30p. http://eprint. iacr.org/2014/160.
56. Shoup V. A new polynomial factorization algorithm and its implementation. J. Symbolic Computation, 1995, vol. 20, no. 4, pp. 363-397.
57. Shoup V. NTL: Number Theory Library, http://www.shoup.net/ntl/.
58. Granlund T. GMP: The GNU Multiple Precision Arithmetic Library. 2006. http://gmplib. org/.
59. Beuchat J.-L., Gonzalez-Daz J. E., MitsunariS., et al. High-speed software implementation of the optimal ate pairing over Barreto — Naehrig curves. LNCS, 2010, vol.6487, pp. 21-39.
60. Kissner L. and Song D. Privacy-preserving set operations. LNCS, 2005, vol. 3621, pp. 241-257.
61. Papamanthou G., Tamassia R., and Triandopoulos N. Optimal verification of operations on dynamic sets. Crvptologv ePrint Archive. Paper 2010/455, 2010. 31 p. https ://eprint. iacr. org/2010/455.
62. Costello C., Fournet C., Howell J., et al. Geppetto: Versatile verifiable computation. Proc. IEEE Svmp. SP'15, IEEE Computer Society, USA, 2015, pp. 253-270.
63. Baches M., Barbosa M., FioreD., and Reischuk R. M. ADSNARK: Nearly practical and privacy-preserving proofs on authenticated data. Proc. IEEE Svmp. SP'15, IEEE Computer Society, USA, 2015, pp. 271-286.
64. Fournet C., Kohlweiss M., Danezis G., and Luo Z. ZQL: A compiler for privacy-preserving data processing 11 Proc. 22nd USENIX Conf. SEC 13. USENIX Ass., 2013. P. 163-178.
65. Ben-Sasson E., Chiesa A., Tromer E., and Virza M. Succinct Non-Interactive Zero Knowledge for a von Neumann Architecture. Updated version, 2019. 37 p. https : //eprint. iacr.org/2013/879.pdf.
66. Baches M., Fiore D., and Reischuk R. M. Verifiable delegation of computation on outsourced data. Proc. CCS'13. N.Y., ACM, 2013, pp. 863-874.
67. Gennaro R. and Wichs D. Fully homomorphic message authenticators. LNCS, 2013, vol. 8270, pp.301-320.
68. Camenisch J., Kohlweiss M., and Soriente C. An accumulator based on bilinear maps and efficient revocation for anonymous credentials. LNCS, 2009, vol.5443, pp.481-500.
69. Bernstein D. J., DuifN., Lange T., et al. High-speed high-securitv signatures. J. Crvptogr. Engineering, 2012, vol.2, no. 2, pp. 77-89.
70. Supercop. http://bench.cr.yp.to/supercop.html.
71. BoweS., Gabizon A., and Green M. D. A multi-party protocol for constructing the public parameters of the Pinocchio zk-SNARK. Crvptologv ePrint Archive. Report 2017/602, 2017. 25p. https://ia.cr/2017/602.
72. Ben-Sasson E., Chiesa A., Tromer E., and Virza M. Succinct non-interactive zero knowledge for a von Neumann architecture. Proc. 23rd USENIX Security Svmp., San Diego, CA, USA, 2014, pp.781-796.
73. Gabizon A. On the security of the BCTV Pinocchio zk-SNARK variant. Crvptologv ePrint Archive. Paper 2019/119, 2019. 9p. https://eprint.iacr.org/2019/119.
74. Groth J. On the size of pairing-based non-interactive arguments. LNCS, 2016, vol.9666, pp.305-326.
75. Galbraith S. D., Paterson K. G., and Smart N. P. Pairings for cryptographers. Discr. Appl. Math., 2008, vol. 156, iss. 16, pp. 3113-3121.
76. Bitansky N., Chiesa A., IshaiY., et al. Succinct non-interactive arguments via linear interactive proofs. LNCS, 2013, vol.7785, pp .315 333.
77. Armknecht F., Boyd G., Carr C., et al. Guide to Fully Homomorphic Encryption. Crvptologv ePrint Archive. 35p. https://eprint.iacr.org/2015/1192.pdf.
78. Gabizon A. On the Security of the BCTV Pinocchio zk-SNARK Variant. Crvptologv ePrint Archive. Report 2019/119, 2019. 9p. https://ia.cr/2019/119.
79. Boneh D. and Boyen X. Secure identity based encryption without random oracles. LNCS, 2004, vol.3152, pp. 443-459.
80. Gennaro R. Multi-trapdoor commitments and their applications to proofs of knowledge secure under concurrent man-in-the-middle attacks. LNCS, 2004, vol.3152, pp. 220-236.
81. Ben-Sasson E., Chiesa A., Green M., et al. Secure sampling of public parameters for succinct zero knowledge proofs. Proc. IEEE Svmp. Security and Privacy, San Jose, CA, USA, 2015, pp.287-304.