零知识证明(一) - 零知识证明的背景

缘起

进来参与了很多安永的区块链技术活动,安永发布了基于零知识证明的Nightfall框架。因此决定把零知识证明这个加密体系中的硬核知识给全方位的梳理一遍,就有了此零知识证明系列文章。...

缘起

进来参与了很多安永的区块链技术活动,安永发布了基于零知识证明的Nightfall框架。因此决定把零知识证明这个加密体系中的硬核知识给全方位的梳理一遍,就有了此零知识证明系列文章。

零知识证明的一则小故事

零知识证明(也叫做最小泄露证明系统)一般来说分为两大体系,一个是交互式零知识证明体系非交互式零知识证明体系。下列的这则小故事是网络上盛传的交互式零知识证明故事,详细故事如下:

很久很久以前,有一个藏着财宝的山洞,阿里巴巴因为知道开启山洞石门的咒语,而被强盗抓住。如果说出咒语,失去利用价值也是一死;如果坚持不说,强盗也会杀死他。 两难的阿里巴巴却想了一个好办法,他让强盗随机下指令:“你们只需离我一箭之遥,用弓箭指着我,你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或伺机逃跑,你们就用弓箭射死我。” 重复多次后,强盗始终无法获知咒语,却可以相信阿里巴巴拥有咒语的事实,阿里巴巴也保住了性命。

那么你可能想知道交互式零知识证明和非交互式零知识证明有什么区别?通过上述故事可以知道,交互式零知识证明需要证明人P和验证者V多次信息交互验证,这样会带来时间和成本的耗损。如果是一个交易体系中的验证模块,那么如此频繁的交互势必让整个系统带来觉得时间和成本损失。

那么非交互式零知识证明对比交互式零知识证明的异同点在哪呢?那么我们需要了解零知识证明体系的特性。

初识零知识证明

零知识证明系统:零知识证明系统包括两部分:宣称某一命题为真的示证者P(prover)和确认该命题确实为真的验证者V(verifier)。证明是通过这两部分之间的交互来执行的。在零知识协议的结尾,验证者只有当命题为真时才会确认。但是,如果示证者宣称一个错误的命题,那么验证者完全可能发现这个错误。

零知识证明协议:零知识证明(Zero—Knowledge Proof)起源于最小泄露证明。设P表示掌握某些信息,并希望证实这一事实的实体,设V是证明这一事实的实体。假如某个协议向V证明P的确掌握某些信息,但V无法推断出这些信息是什么,我们称P实现了最小泄露证明。不仅如此,如果V除了知道P能够证明某一事实外,不能够得到其他任何知识,我们称P实现了零知识证明,相应的协议称作零知识协议。

零知识证明性质:通过上述的零知识证明系统和协议我们可以知道,零知识证明有如下三个性质: (1)正确性。P无法欺骗V。换言之,若P不知道一个定理的证明方法,则P使V相信他会证明定理的概率很低。 (2)完备性。V无法欺骗P。若P知道一个定理的证明方法,则P使V以绝对优势的概率相信他能证明。 (3)零知识性。V无法获取任何额外的知识。

零知识证明属性:同时考虑到示证者P可能存在欺骗的行为,因此零知识证明满足如下三个属性: (1)如果语句为真,诚实的验证者(即:正确遵循协议的验证者)将由诚实的证明者确信这一事实。 (2)如果语句为假,不排除有概率欺骗者可以说服诚实的验证者它是真的。 (3)如果语句为真,证明者的目的就是向验证者证明并使验证者相信自己知道或拥有某一消息,而在证明过程中不可向验证者泄漏任何有关被证明消息的内容。 因此,零知识证明并不是数学意义上的证明,因为它存在小概率的误差,欺骗者有可能通过虚假陈述骗过证明者。换句话来说,零知识证明是概率证明而不是确定性证明。但是也存在有技术能将误差降低到可以忽略的值。

综上,我们可以看到,拥有上述四个特征的零知识证明可以用来对具体场景的应用:

1、A要向B证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开时,零知识证明的应用可以是B确定该房间内有某一物体,A用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给B,从而证明自己确实拥有该房间的钥匙。 该场景属于零知识证明。它的好处在于,在整个证明的过程中,B始终不能看到钥匙的样子,从而避免了钥匙的泄露。

2、A拥有B的公钥,A没有见过B,而B见过A的照片,偶然一天两个人见面了,B认出了A,但A不能确定面前的人是否是B,这时B要向A证明自己是B时,零知识证明的应用可以是A给出一个随机值,并使用B的公钥对其加密,然后将加密后的数据交给B,B用自己的私钥解密并展示给A,如果与A给出的随机值相同,则证明对方是B。 该场景同样属于零知识证明。它的好处在于,在整个证明的过程中,双方私钥信息不公式,不存在泄漏的安全风险。

3、有一个缺口环形的长廊,出口和入口距离非常近(在目距之内),但走廊中间某处有一道只能用钥匙打开的门,A要向B证明自己拥有该门的钥匙。采用零知识证明,则B看着A从入口进入走廊,然后又从出口走出走廊,这时B没有得到任何关于这个钥匙的信息,但是完全可以证明A拥有钥匙。 该场景也属于零知识证明。它的是基于已知的结果信息进行对比,通过结果来反推条件的一致性。

零知识证明与区块链

对区块链有了解的同学肯定会知道区块链的如下几个特征: 区块链的五大特点 1、去中心化——无需第三方介入,实现人与人点对点交易和互动。 2、不可篡改性——数据信息一旦被写入区块中就不能更改撤销。 3、开放性——区块链的系统数据是公开透明的,每个人都可以参与进来。 4、匿名性——区块链上面没有个人的信息,因为这些都是加密的,是一堆数字字母组成的字符串。 5、分布式自治——区块链采用基于协商一致的规范和协议(基于一套公开透明的共识算法),然后各个节点就按照这个规范来操作,这样就是所有的东西都有机器完成。

因此一个公开透明去中心化的开放区块链体系如果要进行商业化运作,那么对于一些隐私和安全性要求比较高的传统企业,必然会提出在实现公开信任和自动交易的基础上提供商用级隐私保护的诉求,那么对于看似矛盾的倡导公开透明与商用级隐私保护这个难题,零知识证明技术就是一个最佳的解决方案。 零知识证明技术应用在区块链上,可以轻易的实现在不泄漏交易双方的隐私信息同时,又能让示证者P证明自己拥有某种信息或者链上资产,最终让双方在互信和公开透明的区块链网络上完成既定的交易。

在下一讲,我们会详细分析zk-SNARK这个已经实现了的区块链零知识证明协议。

点赞 2
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
刘峰老师
刘峰老师
刘峰,华东师范大学博士,上海对外经贸大学特邀研究员、人工智能与变革管理研究院区块链技术与应用研究中心主任,中国计算机学会高级会员,中国自动化学会区块链专委,中文信息学会情感计算专委,清华X-lab区块链创新教育计划合作委员会专委。主要研究兴趣在区块链、深度学习、数据科学等学科交叉领域。担任多个国内外核心学术期刊、国际会议、SCI/EI等国际特约编辑及审稿人。