区块链是一种分散式的资料库系统,具有透明性、不可篡改性等特点,使得它可以用于各种应用场景。由于区块链上的交易是公开的,任何人都可能透过相关交易资讯,追查到一些敏感或机密的资讯。我们如何在保障隐私的同时,也确认交易资讯正确呢?为了解决这些问题,其中一个被广泛采用的方式即是本文要提到的主角-零知识证明。
在这篇文章中,我们将介绍什么是零知识证明?它是怎么运作的?以及一些应用场景。
什么是零知识证明?
零知识证明( Zero-knowledge proof, ZKP ) 是一种证明方法,在不透露资讯本身内容的情况下,验证其内容的真伪。
举例来说,假设小拓想要贩卖某个秘密派对的入场密语,要想让客人相信他真的知道密语,最直接的验证方式就是告诉客人实际密语是什么,但这样客人就会知道密语,而失去贩卖的价值了。而零知识证明则是透过间接证明的方式,让你可以在不告诉客人密语的情况下,证明自己真的知道密语。
零知识证明是怎么运作的?
在零知识证明中,分为证明者( 即前段情境中的小拓) 以及验证者( 即前段情境中的客人)。验证者会要求证明者做一些只有在知道某个秘密或答案的情况下才能完成的事,在证明者真的知道内容的情况下,那么完成他们应该不算难事;但若是证明者不知道内容,那么他只能瞎猜,就很难通过验证者的测试。
继续以前面的例子为例,客人与小拓一同到了秘密派对的举办地点。由于派对在一座山上的别墅中举办,分别有A、B 两条路可以通向别墅,但如果要从A 到B 或是B 到A,都需要穿过别墅才行,但只有知道密语的人才能穿过别墅 ( 如下图示) 。
于是,小拓与客人协议以以下方式证明小拓是否知道密语:
在客人不知情的状况下,小拓先选择一条路上山 ( 如下图示)。
然后再请客人从A、B 中选一条路,小拓再由那条路下山 ( 如例图C )。
如果小拓知道密语,那无论客人选了哪条路,他都可以出现在客人选的路里( 如下图示)。
但如果小拓不知道密语,如果刚好小拓跟客人所选的是一样的,那么他还是能出现在客人所选的路;但如果小拓先选了A ,客人要他从B 下来,由于小拓不知道密语无法穿越别墅,那么就无法出现在客人所选的路中( 如下图示)。
这样的测试反覆多做几次,如果小拓可以每次都从正确的路出现在客人面前,就可以确认他真的知道密语。
以上故事说明了零知识证明,并展示了它一般被认为应该要具备的三个特性– 完备性、健全性和零知识性:
-
-
完整性(complete):这个意思是如果证明者提供的内容是正确的( 真的知道密语),在遵守协议的情况下,证明者将能完成所有测试。
以小拓与客人间的协议来说,也就是小拓如果知道密语,那么他一定能通过测试。 -
健全性(sound):如果证明者提供的内容是错误的( 不知道密语),只能有很低的机率通过测试。
在小拓与客人的协议中,如果小拓不知道密语,虽然每次都有一半的机率( 50 % ) 回答正确,但假设重复这个试验10 次,完全正确的机率就只剩1 / 1024 ,客人就可以很容易地知道小拓不知道密语。 -
零知识(zero-knowledge):验证者只能从测验中知道验证结果的真伪,而不会知道其他资讯( 例如密语或小拓一开始选择哪条路上山等等)。
在小拓与客人的协议中,客人除了不会知道密语的内容外,透过验证客人只能知道小拓是否知道密语,他不会也不必知道如小拓的密语来源等其他额外资讯。
-
完整性(complete):这个意思是如果证明者提供的内容是正确的( 真的知道密语),在遵守协议的情况下,证明者将能完成所有测试。
不过,由于零知识证明通常是由数学或密码学的公式或语言,所构成的程式或协议,也有许多不同种类的零知识证明。本文只是以生活化的例子,来帮助我们更好的理解零知识证明基础概念,让我们可以更好地认识零知识证明的运作逻辑,也能比较容易知道,为什么零知识证明可以在下一段介绍的生活应用中发挥作用!
零知识证明可以运用在哪里?
区块链
如同我们在本篇文章一开始提到的,由于区块链上的交易是可以被大众验证的,所以如何让用户在保有隐私的情况下进行验证交易,即是一个问题。而零知识证明即提供了一个解决方案。例如,加密货币Zcash 就使用了零知识证明的方法( zero-knowledge Succinct Non-interactive Argument of Knowledge, zk-SNARKs ),来隐藏交易的发送者、接收者和金额。 这样可以保护用户的身份和财产,也可以防止交易被追踪或分析。
金融产业
零知识证明可以让金融服务提供者和客户之间进行更安全和高效的资讯交换。例如,荷兰的ING 就采用了称为「零泄密范围证明( Zero-Knowledge Range Proof, ZKRP )」的零知识证明方法,让申请房贷的客户能证明自己的收入落在可被接受贷款的某区间,而不需要告诉它们确切的收入数字。
身份验证
零知识证明可以让用户在线上验证自己的身分或属性,而不需要提供过多的个人资料。 例如,通过指纹等生物特征与密码等资讯,向需求方证明自己确实达成某种如年龄等条件的要求,而不像现在许多身分证明文件在验证特定资讯时,却间接透漏了其他个人资讯。这样可以减少个资泄漏的风险,也可以提高人们对于自身个资的控制权和信任度。
网络投票
零知识证明可以使网络投票系统更加安全和公正,让选民可以在不暴露自己的身份或选择的情况下,验证自己有投票的权利和义务。
例如,人们可以透过零知识证明的方式向网络投票系统证明其具有投票资格,而不用再提供其他过多的明文件;并搭配区块链系统,透过零知识证明向系统证明已经投过票了,而无须登记领票或注记自己的姓名。如此,系统就可以在保障每个投票人民的隐私的情况下,防止选票被窜改或重复计算。
结语
零知识证明能在保有隐私的情况下验证资讯的正确性,但我们仍要注意到,虽然证明者在验证过程中说谎的机率小到可以忽略,但仍无法保证100% 正确。
此外,就像小拓需要应客人要求多次进行测试,某些零知识证明协议会要求验证者与证明者间进行大量的互动来进行确认,这可能会消耗大量的计算资源,而限制了零知识证明的应用发展。
但无论如何,零知识证明都提供了一个可以保障隐私却又能证明资讯正确性的解决方案,在保障用户权益与验证资讯正确性之间寻求平衡。可以预期的,零知识证明将在建立更安全、更隐密且更有效率的未来社会中,发挥重要功能。
本文链接地址:https://www.wwsww.cn/jishu/28389.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。