零知识证明(Zero-Knowledge Proof或Zero-Knowledge Protocol)是一种基于概率的验证方法,它包括“类似事实的陈述”和“关于个人知识的陈述”。
验证者基于一定的随机性来询问证明者,如果证明者给出的答案正确,那么证明者将有很大概率会拥有其所声称的“知识”。零知识证明可以在不透露使用哪种货币的情况下验证你确实花了钱。
如今,零知识证明已经被许多区块链项目视为最好的隐私保护方案之一。能够在不泄露数据的情况下,来证明数据的真实性。
区块链上的零知识证明
比特币和以太坊都是用公共地址来代替当事方的真实身份,使交易部分匿名,公众只知道发送和接收的地址以及交易的数量。然而,可以通过区块链上可用的各种信息(如交互记录)找出地址的真实身份,因此存在暴露隐私的可能。
零知识证明,可以在发送方、接收方和其他交易细节都保持匿名的情况下,保证交易有效。
ZCash可能是成功实现零知识证明的最著名的区块链项目之一。Zcash实现了ZKP的修改版本,被称为zk-SNARKS,代表Zero-Knowledge Succinct Non-InteracTIve Argument of Knowledge(零知识简明非交互式知识证明)
zk-SNARK技术减少了证明的大小以及验证所需的计算量。它能够在不泄漏有关地址和相关有价值的任何关键信息的情况下证明有效交易条件得到了满足。
zk-SNARK将需要验证的交易内容转换为两个多项式乘积相等的证明,并结合同态加密和其他先进技术,在执行交易验证时保护隐藏的交易金额。
其过程可以简单地描述为:
将代码拆分为可验证的逻辑验证步骤,然后将这些步骤拆分为一个由加法、减法、乘法和除法组成的运算电路;
进行一系列变换,将待验证的代码转化为多项式方程,如t(x)h(x)=w(x)v(x);
为了使证明更加简洁,验证者预先随机选择几个检查点s来检查这些点的方程是否为真;
通过同态编码/加密,验证者在计算方程式时不知道实际输入值,但仍然可以进行验证;
在方程的左边和右边,同时乘以一个不等于0的秘密值k。当验证(t(s)h(s)k)等于(w(s)v(s)k)时,具体的t(s)、h(s)、w(s)和v(s)是不可知的,从而达到保护信息的目的。
但zk-SNARK并不是完美的。当前zk-SNARK实现中的一个缺陷,是需要提前设置参数。如果这些参数被泄漏,那么整个网络将面临毁灭性的打击。因此,在使用这些网络时,用户必须坚信参数不会被泄漏。
可能的解决方案包括使用现代“可信执行环境”,如因特尔SGX以及ARM TrustZone。对于因特尔的SGX技术来说,即使应用程序、 *** 作系统、BIOS或VMM受到威胁,私钥也是安全的。
此外,最近的一份白皮书揭示了它在零知识密码学方面的创新:ZK-STARKs(零知识可扩展透明知识理论,Zero-Knowledge Scalable Transparent ARguments of Knowledge)。
根据zk-STARK白皮书,zk-STARK是第一个在不依赖任何信任设置的情况下实现区块链验证的系统,随着计算数据的增加,计算速度呈指数级增加。
它不依赖于公钥加密系统,更简单的假设使其在理论上更加安全,因为它唯一的加密假设是Hash散列函数(例如SHA2)是不可预测的。
不可否认的是,零知识证明和zk-S(T|N)ARK技术的测试和采用都将需要一定的时间。但是对于区块链底层开发平台来说,如何兼顾性能和安全性是至关重要的。也许只有零知识证明等密码学技术被更多应用的时候,区块链这项技术才能被更好地推动。
责任编辑:ct
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)