当前位置: 首页 > 科技观察

区块链中常见的密码技术到底是什么

时间:2023-03-13 13:24:39 科技观察

零知识证明(Zero-KnowledgeProoforZero-KnowledgeProtocol)是一种基于概率的验证方法,包括“类似于事实的陈述”和“关于个人陈述的陈述”知识”。验证者根据一定的随机性询问证明者。如果证明者给出的答案是正确的,那么证明者将很有可能拥有它所声称的“知识”。零知识证明可以在不透露使用了哪种货币的情况下验证你是否真的花了钱。如今,零知识证明已被众多区块链项目视为最佳的隐私保护方案之一。它可以在不泄露数据的情况下证明数据的真实性。在本文中,我们将解释神秘的零知识证明及其当前应用。为什么ZKP如此重要?数据隐私是当今社会最重要的话题之一。保护与个人身份相关的个人数据(出生日期、银行证明、交易记录、教育证书)至关重要,并将继续变得越来越重要。在科技时代,我们正在创造海量数据,我们也在不断创造关于我们自己的可掠夺数据。谷歌和Facebook等大公司利用我们的数据成为当今世界的科技巨头。然而,最近密码学的突破和区块链的兴起提供了保护我们的数据和身份的新方法。零知识证明可能是答案。零知识证明的原理零知识证明是麻省理工学院的研究人员在1980年代提出的一种加密方案。零知识证明协议是一方(证明者)可以向另一方(验证者)证明某事是真实的。除了这一特定声明是真实的之外,不会披露任何其他信息。例如,当前网站在其网站服务器中存储了用户密码的Hash散列值。为了验证客户端是否确实知道密码,目前大多数网站使用的方法是让客户端输入密码的哈希值,然后与存储的结果进行比较。零知识证明可以保护用户账户不被泄露。如果可以实现零知识证明,那么客户端密码对任何人都是未知的,但客户端登录仍然可以被验证。零知识证明可以分为“交互式”和“非交互式”两种。下面我们就来一一了解一下这两种证明方法的区别。交互式零知识证明零知识证明协议的基础是交互式的。它需要验证者不断地询问一系列关于证明者拥有的“知识”的问题。每轮测试不需要知道具体答案,只需要检查1~9这几个数字是否被包含在内。只要验证次数足够多,就有理由相信证明者知道数独题的答案。然而,这种简单化的方法并不能让人相信证明者和验证者都是真实的。在数独的情况下,两者可以提前串通,使得证明者在不知道答案的情况下仍然可以通过验证。如果要说服第三方,验证者还必须证明验证过程是随机的,他不会将答案泄露给证明者。因此,第三方很难验证交互式零知识证明的结果,需要额外的努力和成本来向多人证明一件事。非交互式零知识证明顾名思义,非交互式零知识证明不需要交互过程,避免了串通的可能性,但可能需要额外的机器和程序来确定实验的顺序。例如,在数独的情况下,由程序决定验证哪一列或哪一行。验证序列必须保密,否则验证者可能在不知道真实“知识”的情况下通过验证。区块链上的零知识证明比特币和以太坊都使用公共地址代替交易各方的真实身份,使交易部分匿名,公众只知道发送和接收地址以及交易金额。但地址的真实身份可以通过区块链上可用的各种信息(如交互记录)查明,存在隐私泄露的可能。零知识证明保证交易有效,而发送者、接收者和其他交易细节保持匿名。ZCash可能是成功实施零知识证明的著名区块链项目之一。Zcash实现了ZKP的修改版本,称为zk-SNARKS,它代表零知识简洁非交互式知识论证(Zero-KnowledgeConciseNon-InteractiveArgumentofKnowledge)。计算。它能够证明有效交易的条件已得到满足,而无需透露有关地址和相关价值的任何关键信息。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)是notavailable已知,从而达到保护信息的目的。但是zk-SNARKs也有缺陷。当前zk-SNARK实现的一个缺陷是需要提前设置参数。如果这些参数泄露,整个网络将面临毁灭性的打击。因此,用户在使用这些网络时,必须坚信参数不会泄露。可能的解决方案包括使用现代“可信执行环境”,例如IntelSGX和ARMTrustZone。借助英特尔的SGX技术,即使应用程序、操作系统、BIOS或VMM遭到破坏,私钥也是安全的。此外,最近的一份白皮书揭示了其在零知识密码学方面的创新:ZK-STARKs(Zero-KnowledgeScalableTransparentARgumentsofKnowledge)。根据zk-STARK白皮书,zk-STARK是一个不依赖任何信任设置,实现区块链验证的早期系统。随着计算数据的增加,计算速度呈指数级增长。它不依赖于公钥密码学,其更简单的假设使其在理论上更安全,因为它的密码学假设是Hash散列函数(如SHA2)是不可预测的。不可否认,零知识证明和zk-S(T|N)ARK技术的测试和采用都需要时间。但是对于区块链底层开发平台来说,如何平衡性能和安全性是至关重要的。或许只有零知识证明等密码学技术得到更多应用,区块链技术才能得到更好的推广。