一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第13天,点击查看活动详情。
| 有帮助的话请点个赞吧~ |
零知识证明开篇,简单介绍了定义、性质与一些特点。
定义
- 零知识证明,Zero-Knowledge Proof,简称ZKP
- 证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。
- 证明者prover简称P、验证者为verifier简称V,要证明的东西通常称为知识(一些有意义的非公开信息)
- 论断通常都指P向V证明他拥有某知识,过程中不透漏任何有关知识的内容(透漏知识为零)
- 其本质是,通过揭示一些简单的信息来证明其拥有这些信息的知识是微不足道的。
- 这句有点奇怪,个人理解是对于证明验证过程来讲,所揭露的信息更重要,而知识本身并不重要
- 挑战在于如何在不解释知识本身或任何额外知识的情况下证明这种拥有。
- 证明过程必然需要证明者与验证者之间的互动,这个交互通常是随机挑战的形式。
- 通常是验证者向证明者发出随机挑战,证明者给予相应回复,计算正确则通过验证。
- 基于挑战,那可以利用一些数学上的计算假设(如散列函数)使证明者可以自己生成随机挑战,从而实现非交互式的零知识证明。
- 交互式:需实时一问一答,仅P、V两人参与;
- 非交互式:P发送一个证明,V可以随时进行验证,若P将这个证明公开,那么所有人都可以验证其真伪。
- 但由于现实世界不存在真随机数发生器,所以非交互式方法在实现过程中并不是绝对安全的。
性质
零知识证明具有三个重要性质(通常使用模拟器思想进行证明):
- 完备性(Completeness)
- P有足够大的概率使V相信其论断(拥有某项知识)
- 也就是说,只要P确实拥有该知识,那他一定可以通过V的验证。
- 可靠性(Soundness)
- P欺骗V的概率极小,可以忽略
- 也就是说,P没有相应的知识,就一定无法通过V的验证。
- 零知识性(Zero-Knowledge)
- 在证明与验证过程中,P仅会透漏其是否拥有相应知识的论断,而不会透漏任何关于知识本身的额外信息。
优缺点
- 优点
- 不会降低方案本身的安全性
- 具有完整的隐秘性
- 安全性通常依赖于为解决的数学难题(如DLP、IFP等)
- 缺点
- 生成证明通常需要较高的算力;
- 部分协议需要可信设置(可信第三方为其生成某些参数);
- 部分协议不能抗量子计算。
- 在区块链中广泛使用的原因(与其他几种安全方法的对比)
方法 简述 优点 缺点 同态加密
(Homomorphic Encryption)不解密直接对密文操作,得到和明文计算相同的结果 保护账户余额和交易金额 不能确保账户地址的安全 安全多方计算
(Secure Multi-Party Computation)将计算任务分配给多个参与者,没有任何一个参与者可以知晓其他参与者的数据 保护账户余额和交易金额的安全 不能保护账户地址的安全 环签名
(Ring Signature)不透漏签名密钥,即便获得所有密钥也无法知晓使用了哪一个key进行签名 保护账户地址安全 不能保障账户余额与交易金额的安全 零知识证明 验证交易方在区块链中是否有足够的交易额,而不会泄露任何私人交易数据
参考
[1] Zero-knowledge proof - Wikipedia
[2] 零知识证明介绍 - 知乎 (zhihu.com)
[3] Sun, Xiaoqiang, F. Yu, Peng Zhang, Zhiwei Sun, Weixin Xie, and Xiang Peng. 2021. ‘A Survey on Zero-Knowledge Proof in Blockchain’. IEEE Network 35:198–205. doi: 10.1109/MNET.011.2000473.
| 欢迎指正与讨论! |