V神讲解zk-SNARKs内部原理(上)

简介:这是V神本系列文章的第三部分的上半部分,解释了zk-SNARKs背后的技术是如何运作的;以前关于二次运算程序椭圆曲线配对的文章是必读的,本文将假设你已经知道这两个概念,并了解zk-SNARKs的基本知识和它们的作用。另请参阅另外一篇对zk-SNARKs的介绍,Christian Reitwiessner的文章
(本文授权BH好文好报群摘编、转载以及相关转授权推文行为)

在之前的文章中,我们介绍了二次运算程序,这是一种用多项式方程表示任何计算问题的方法。我们还引入了椭圆曲线配对,它允许非常有限的单向同态加密形式,从而允许您进行相等检查。现在,我们将从我们离开的地方开始,并使用椭圆曲线配对以及其他一些数学技巧,使得证明者能够证明他们知道特定QAP的解决方案,同时不会泄露任何有关实际解决方案的信息。

本文将重点介绍2013年Parno,Gentry,Howell和Raykova的皮诺曹协议(通常称为PGHR13);基本机制有一些变化,因此在实践中实施的zk-SNARK方案可能略有不同,但基本原则通常保持不变。


首先,让我们进入一个关键的假设:指数知识假设(KEA)。这个假设我们将会在说明底层安全机制的时候会用到。

KEA1: 对于任何一个对手A,它接收输入q,g, g^a,然后返回(C, Y)并且Y = C^a,那么必然存在一个“提取者”A',当它接收和A一样的输入时,能返回c使得g^c = C。

这个假设基本上意味着,如果你得到一对点P和Q,其中P * k = Q,并且你得到一个C点,那么除非C能以某种方式从P“导出”,否则不可能得出C * k对应的点。可能看起来这是明显的事情,但这个假设实际上不能从我们在证明椭圆曲线协议的安全性时通常使用的任何其他假设(例如,离散对数难题)得出,因此zk-SNARK事实上确实在某种程度上,它的某些安全性基础要弱于椭圆曲线密码学的基础 - 不过它仍然足够坚固,大多数密码学家都可以使用它。


现在,我们来看看如何使用它。假设一对点(P,Q)从天空落下,其中P * k = Q,但没有人知道k的值是什么。现在,假设我想出了一对点(R,S),其中R * k = S 。 然后,KoE假设意味着我可以获得该对点的唯一方法,是通过P和Q乘以我自己所知的某个因子r。还要注意,由于椭圆曲线配对的非凡特性,要检查R = k * S,实际上并不需要知道k -——而是可以简单地检查e(R,Q)= e(P,S)。

让我们做一些更有趣的事情。假设我们有十对点从天空落下:(P_1,Q_1),(P_2,Q_2)......(P_10,Q_10)。在所有情况下,都满足P_i * k = Q_i。假设我然后给你一对点(R,S),其中R * k = S.你现在知道什么?你知道R是一些线性组合P_1 * i_1 + P_2 * i_2 + ... + P_10 * i_10,其中我知道系数i_1,i_2 ... i_10。也就是说,到达这样一对点(R,S)的唯一方法是取一些P_1,P_2 ...... P_10的倍数并将它们加在一起,并对Q_1,Q_2 ...... Q_10进行相同的计算。

请注意,给定您可能想要检查线性组合的任何特定P_1 ... P_10点,您实际上无法创建伴随的Q_1 ... Q_10点而不知道k是什么,如果您确实知道k是什么,那么您可以创建一对(R,S),其中R * k = S表示您想要的任何R,而无需创建线性组合。因此,为了实现这一点,创建这些点的人必须都是值得信赖的,并且一旦创建了10个点,就要删除k。这就是“可信设置”概念的来源(译者注:可信设置,指的是zkSNARK系统启动的时候所进行一次设置,这个设置只需要进行一次)。


回忆一下,QAP的解是一组多项式(A,B,C),使得A(x)* B(x) - C(x)= H(x)* Z(x),其中:

A是一组多项式{A_1 ... A_m}的线性组合
B是具有相同系数的{B_1 ... B_m}的线性组合
C是具有相同系数的{C_1 ... C_m}的线性组合
集合{A_1 ... A_m},{B_1 ... B_m}和{C_1 ... C_m}以及多项式Z是问题陈述的一部分。

然而,在大多数现实世界中,A,B和C都非常大;对于像散列函数那样具有数千个电路门的东西,多项式(以及线性组合的因子)可能有数千项。因此,我们不是让证明者直接提供线性组合,而是使用我们上面介绍的技巧来证明他们提供的东西是线性组合,并且无需透露任何其他东西。

您可能已经注意到上面的技巧适用于椭圆曲线点,而不是多项式。因此,实际的情况是,我们把下面的值添加到可信设置:

G * A_1(t),G * A_1(t)* k_a
G * A_2(t),G * A_2(t)* k_a
...
G * B_1(t),G * B_1(t)* k_b
G * B_2(t),G * B_2(t)* k_b
...
G * C_1(t),G * C_1(t)* k_c
G * C_2(t),G * C_2(t)* k_c
...
您可以将t视为计算多项式的​​“秘密点”。 G是一个“生成器”(椭圆曲线上面某个随机的点,一旦确定之后,就把它作为协议的一部分),t,k_a,k_b和k_c是“有毒废物”,这些数字必须不惜一切代价删除掉,否则任何拥有它们的人将能够制作假证明。现在,如果有人给你一对点P,Q,使得P * k_a = Q(提醒:我们不需要k_a来检查这个,因为我们可以进行配对检查),那么你知道他们给你的是在t处计算出的A_i多项式的线性组合。

因此,到目前为止,证明者必须给出:

π_a= G * A(t),π'_a= G * A(t)* k_a
π_b= G * B(t),π'_b= G * B(t)* k_b
π_c= G * C(t),π'_c= G * C(t)* k_c

注意,证明者实际上并不需要知道(并且不应该知道!)t,k_a,k_b或k_c来计算这些值;而是,证明者应该能够从我们添加到可信设置的点来计算这些值。


译者注:V神的文章喜欢用长语句,我翻译的比较慢,怕翻译错了。今天先到这里吧,今天是上半部分,明天继续下半部分

早赞声明:为方便早赞、避免乱赞,“BH好文好报群”为点赞者、写作者牵线搭桥,实行“先审后赞、定时发表”的规则,也让作品脱颖而出、速登热门!加群微信:we01230123(天平)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270