免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。
小编:记得关注
来源:观联锁源
第1 部分零知识证明
顾名思义,零知识证明是指在不泄露相关信息的情况下,能够充分证明自己是某项权益的合法拥有者,即对外界的“知识”为“零”。
目前以匿名着称的数字资产Zcash的匿名交易依赖于“零知识证明”。
第2 部分示例
例如:如果A想向B证明他拥有某个房间的钥匙,假设这个房间只能用钥匙打开,不能用其他任何方法打开。有两种方法:
方法一:A将钥匙出示给B,B用钥匙打开房间的锁,从而证明A拥有正确的房间钥匙。
方法二:B确定房间内有物品,A用自己拥有的钥匙打开房间的门,然后取出物品给B看,从而证明他确实有房间的钥匙.
方法二的原理是零知识证明。
证明例子:
零知识证明可以在不泄露内容本身的情况下证明自己知道秘密,可以有效解决很多验证问题。
验证过程信息不公开
Part 3 零知识证明的特点
完整性:如果证明者和验证者都是诚实的,遵循证明过程的每一步,并进行正确的计算,那么证明一定是成功的,并且验证者一定能够接受证明者。
可靠性:没有人可以冒充证明者使这个证明成功。
Zero-knowledge 零知识:证明过程执行后,验证者只获得“证明者拥有该知识”的信息,而不会获得任何关于该知识本身的信息。
第4 部分零知识证明的优点
通过使用零知识证明,由于证明的零知识性质,安全性不会降低。
效率,这个过程的计算量小,双方交换的信息量小。
安全性依赖于未解决的数学问题,例如离散对数、大整数分解、平方根等。
许多零知识证明相关技术避免直接使用政府限制的加密算法,为相关产品的出口带来优势。
零知识证明在区块链中的应用
比特币和以太坊网络都使用公共地址代替验证者和证明者的真实身份,使交易部分匿名;公众只知道发送和接收地址以及交易金额。但通过区块链上提供的各种信息,如交互记录等,可以查到地址的真实身份,存在隐私暴露的隐患。
使用零知识证明后,发送方、接收方和第三方的详细信息可以保持匿名,同时确保交易有效。
最早使用零知识证明技术的区块链称为Zcash,实际的方法称为Zk-Snarks,它是众多零知识证明方法中的一种,也是最著名的一种。
Zk-Snarks是“Zero-Knowledge Concise No-Interactive Knowledge Authentication”的缩写,是一种在不暴露数据本身的情况下证明某些数据操作的零知识证明。
Zk-Snarks 技术减少了证明所需的时间和验证它们所需的计算量。它能够证明已经满足有效交易的条件,而无需透露有关交易中涉及的地址或数量的任何关键信息。
Zcash 可以加密隐藏交易记录中的发送方、收款人和金额,因此矿工无法知道这些交易的细节,但他们仍然可以验证交易。不过目前大部分用户还是选择在Zcash上进行非加密交易,因为成本比较高。
此外,以太坊上的智能合约已经可以使用Zk-Snarks,一套零知识证明。但是,以太坊并没有完全从隐私的角度切入,而是从节省计算成本的角度应用了零知识证明。
通过Zk-Snarks,以太坊矿工不再需要重新执行交易的计算,只需要对方提供一个证明即可。大概就像我真的不需要知道你可以从高一到高三做数学,但是我可以确定你只要看到你的高中文凭就知道高中数学。然而,这只有在证明的成本远低于实际计算成本的情况下才具有成本效益。
Zk-Snarks将需要验证的交易内容转化为两个多项式乘积相等的证明,并结合同态加密等先进技术,在进行交易验证的同时保护隐藏的交易量。这个过程可以简单描述为:
将代码分解为可验证的逻辑验证步骤,然后将这些步骤分解为由加、减、乘、除组成的计算流。
进行一系列变换,将待验证的代码转化为多项式方程,如t(x)h(x)=w(x)v(x)。
为了使证明更简洁,验证者预先随机选择几个检查点,检查这些点处的方程是否为真。
通过同态编码或加密,验证者在计算方程时不知道实际输入值,但仍然可以对其进行验证。
在等式左右两边分别乘以一个不等于0的秘密值k。在验证(t(s)h(s)k)=(w(s)v(s)k)时,具体的t( s), h(s), w(s), v(s) 是不可知的,信息可以被保护。
Zk-Snarks 算法当前实现的一个缺点是需要提前内置参数。如果这些参数泄露,整个网络将面临毁灭性的破坏。因此,用户必须信任
这些网络时不会泄露的信息。
可能的解决方案包括使用现代的“可信执行环境”,如 Intel SGX 和 ARM TrustZone。对于 Intel 的 SGX 技术,即使应用程序、操作系统、BIOS 或 VMM 受到威胁,私钥也是安全的。此外,最近的一份白皮书揭示了它在零知识密码学中的创新:Zk-Snarkss(零知识可伸缩透明知识参数)。
根据 Zk-Snarks 白皮书,Zk-Snarks 是第一个不依赖任何信任设置实现区块链验证的系统,而随着计算数据数量的增加,计算速度呈指数增长。它不依赖于公钥加密系统,而且更简单的假设使它在理论上更安全,因为它唯一的加密假设是哈希函数 (如 SHA2) 是不可预测的。零知识证明和 Zk-S(T|N)ARK 等技术的测试和采用需要时间。