零知识证明 - 区块链应用中的风险

2020-03-25 14:19 栏目:经验之谈 来源: 查看()
最近,我翻到一篇关于零知识证明安全的文章,由360安全在19世纪末发布。本文是对彭志娘在2019年世博会上的演讲的总结。本文在一个框架中引入了零知识证明zk-SNARK的知识,并给出了一些安全提示和思路。 原始链接如下: 安全-零风险-知识-证明-密码货币 对整个PPT内容感兴趣的小伙伴可以直接查看原始链接。我想分享一些亮点。 1.zk-SNARK总体流程

文章开头介绍了NIZK/zk-SNARK的基本概念,给出了zk-SNARK的工作流程图:

零知识证明 - 区块链应用中的风险

在该流程图中,清楚地给出了“回路”、“R1CS”和“QAP”之间的关系。对于一个NP问题,一个电路(由几个乘法门/门组成)是由先平坦化形成的。在电路的基础上,构造约束,即R1CS。有了每个约束,NP问题可以抽象成QAP问题。通过对QAP问题的描述,可以对Groth16算法进行初始化、生成和验证。 从工程的角度来看,整个过程可以被“切割”成几个大块:

零知识证明 - 区块链应用中的风险

设计)-NP问题,即业务的设计。 QAP翻译-摘要并翻译成QAP问题。 初始参数生成(设置)-生成可信参数,即传说中的通用参考字符串。 构建证据——提供私人/公共信息以生成证据。 验证-使用公共信息来验证证书。 2.zk-SNARK工具链 本文还详细介绍了zk-SNARK开发的各种高级语言及其依赖关系。

零知识证明 - 区块链应用中的风险

正如您所见,目前,这一系列R1CS-QAP是相对于其他产品而言最强大的。如果你是一个正在起步的伙伴,你可以从佐克拉特斯/利布斯纳克/贝尔曼开始: 零知识证明-图书馆的源代码分析 零知识证明-贝尔曼源代码分析 零知识证明——对ZoKrates的深入理解 3.应用程序风险摘要 开发和实现的风险 零知识证明(所有软件开发)开发中常见的安全风险:内存污染和逻辑漏洞。加密的东西,没有时间的挑战都感觉到了隐患。新加密的实施存在新的风险。 例如,在泽卡斯的精灵黄金攻击。当Zcash生成提交时,发送方有意使用相同的随机数(rho)来发送多个事务。接收者只能消费这些交易中的一个。 去年七月,另一个双花虫被揭露: zksnark应用的零知识证明-零化哈希攻击 初始设置的风险 Zk-SNARK因为需要可信设置而受到批评。这种初始设置涉及到人为因素。尽管MPC可以用来增强安全性,但它仍然不是绝对安全的。 信息披露 尽管Zcash提供私人交易,但事实上,截至2019年9月,所有ZCash交易中只有5%是私人交易:

零知识证明 - 区块链应用中的风险

并且可以从进行私人交易的交易地址、金额、交易时间和用户习惯中推断出一些有用的信息。 密码学的安全性 Groth16于2016年出版,并将于2017年广泛使用。没有足够的时间来核实。Zcash之前对证明相关漏洞一无所知,这一点很晚才宣布。这篇文章列出了一些之前宣布的漏洞,感兴趣的合作伙伴可以看看。 其他问题 文章给出了一些安全思路,并列举了一些其他问题。 文章最后给出了如何使用ZKP构造协议进行数据交换。对这部分感兴趣的人可以自己检查原文。 感谢360安全的彭志娘,分享零知识证明和相关的安全问题。我还分享了会议上演讲的完整PPT。如果你需要原始的完整PPT,你可以留言。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发