读心术:从零知识证明中提取「知识」——探索零知识证明系列(2)
2023-05-01 来源:飞速影视
零知识(Zero-knowledge):Alice 在交互的过程中不会泄露关于知识的任何信息。
我们可以看出来「可靠性」和「完备性」有一种「对称性」。可靠性保证了恶意的 Alice 一定失败,而完备性保证了诚实的 Alice 一定成功。
「完备性」比较容易证明,只要 Alice 诚实,Bob 也诚实,那么皆大欢喜。这好比,写好一段代码,喂了一个测试用例,跑完通过收工。
我们来想想「可靠性」应该如何定义?这个可靠性的逆否命题是:(在现实世界中)如果 Alice 能通过 Bob 的验证,那么 Alice 一定有知识。或者说:Alice 知道那……个「秘密」!
下面的问题是如何证明 Alice 知道一个「秘密」?
这好像也很难,对不对?假如我们需要证明一台机器知道一个「秘密」,最简单的办法就是我们在机器的硬盘里,或者内存中找到这个「秘密」,但是这样暴露了秘密。如果这台机器是黑盒子呢?或者是 Alice 呢?我们没有读心术,猜不到她心里的那个秘密。
如何定义「To Know」?
「零知识」保证了 验证者 Bob 没有(计算)能力来把和「知识」有关的信息「抽取」出来。不能抽取的「知识」不代表不存在。「可靠性」保证了知识的「存在性」。
只有「知识」在存在的前提下,保证「零知识」才有意义
本文将探讨「可靠性」和「To Know」。
为了进一步分析「知识」,接下来首先介绍一个非常简洁,用途广泛的零知识证明系统 —— Schnorr 协议。这个协议代表了一大类的安全协议,所谓的 Σ-协议,而且 Schnorr 协议扩展也是零知识数据交换协议 zkPoD[1] 的核心技术之一。
简洁的 Schnorr 协议
Alice 拥有一个秘密数字,a,我们可以把这个数字想象成「私钥」,然后把它「映射」到椭圆曲线群上的一个点a*G,简写为aG。这个点我们把它当做「公钥」。
sk = aPK = aG请注意「映射」这个词,我们这里先简要介绍「同态」这个概念。椭圆曲线群有限域之间存在着一种同态映射关系。有限域,我们用 Zq这个符号表示,其中素数q是指有限域的大小,它是指从0, 1, 2, …, q-1这样一个整数集合。而在一条椭圆曲线上,我们通过一个基点,G,可以产生一个「循环群」,标记为0G, G, 2G, …, (q-1)G,正好是数量为q个 曲线点的集合。任意两个曲线点正好可以进行一种「特殊的二元运算」,G G = 2G,2G 3G = 5G,看起来这个二元运算好像和「加法」类似,满足交换律和结合律。于是我们就用 这个符号来表示。之所以把这个群称为循环群,因为把群的最后一个元素(q-1)G,再加上一个G就回卷到群的第一个元素0G。
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号