较多,不仅可能出现在零知识证明系统中,BNB Chain跨链桥的merkle tree 任意构造漏洞就是在实现merkle tree验证原语的过程中产生出错误,直接导致了586,000,000美元的损失。 随机性缺失:零知识证明通常依赖于随机数生成器(RNG)生成随机数。如果随机数生成过程存在问题,可能导致证明的安全性受损。 比如2018年,Dfinity的开发团队在审计其基于zk-SNARK的隐私方案时,发现了一个随机数生成漏洞。该漏洞可能导致攻击者通过特定输入破解电路的零知识特性。 2. 合约安全 该项主要是针对Layer2或者通过智能合约实现的隐私币项目而言。智能合约的安全性不言而喻,除了常见的重入、注入、溢出、权限绕过等漏洞外, 对于ZKP项目,智能合约在资产跨链、验证proof等方面起到至关重要的作用,在跨链消息验证和proof验证方面的漏洞,会直接导致可靠性失效。 例如今年早些时候发现的Circom的Verify合约漏洞,直接导致可输入假名实现双花的攻击。 3. 数据可用性 检查项目如何解决数据可用性问题,确保链下数据能够在需要时被安全、有效地访问和验证。关注数据存储、验证机制、传输过程等方面。 2019年,Plasma链上发生了一起数据可用性问题。由于Validator在某段时间内无法访问链下数据,用户在这段时间内无法提交交易或提取资金。这个案例表明了数据可用性问题对Layer 2项目的潜在影响。 除了使用数据可用性证明来重新构建数据可用性外,我们也可以在主机防护,数据状态监控方面加强保护。 4. 经济激励 评估项目中的激励机制,确保其可以刺激验证者、用户等参与方合理参与并维护整个系统的安全性和稳定性。关注激励模型设计、奖励分配、惩罚机制等方面。 5. 隐私保护 如果项目涉及隐私保护,审计其隐私方案的实现。确保用户数据在传输、存储和验证过程中得到充分保护,同时维持系统的可用性和可靠性。 虽然零知识性的证明需要引入模拟、倒带等复杂的概念,我们仍然可以基于协议通信的流程,来推断是否有证明者的隐私被泄露,对于恶意验证者,我们也可以通过验证者的交互数据内容,来推算是否有重新构建证明者只是的可能性。 6. 性能优化 评估项目中的性能优化策略,例如交易处理速度、验证过程效率等。审计代码实现中的优化措施,以确保项目能够满足性能需求。 7. 容错和恢复机制 审计项目在面对意外情况(如网络故障、恶意攻击等)时的容错和恢复策略。确保在可能的情况下,系统能够自动恢复并维持正常运行。 8. 代码质量 审计项目代码的整体质量,关注代码的可读性、可维护性和健壮性。评估代码中是否存在不规范编程实践、冗余代码、潜在错误等问题。 Numen可以为ZKP项目做什么 Numen在ZKP项目的安全服务方面,可以为项目方和用户提供全方位的安全保护。 我们除了具备丰富的智能合约代码审计经验外,也具备对电路编码逻辑的审计,能够同时采用人工和自动化的方式审计约束条件和见证(Witness)生成的正确性,尤其对欠缺约束计算漏洞具有深刻的理解和捕捉能力,我们针对重要的逻辑,会通过手动组装自定义逻辑见证的方式来模拟多种攻击行为进行测试。 针对Sequencer/Prover代码和验证合约,我们也具备Fuzz和安全测试能力,能够同时对节点实体和节点数据提供防护能力。 除了安全服务,我们的两个安全产品也可以在项目上线后,为项目提供实时的保护:ImmunX是Numen研发的Web3链上安全监控和防护系统,目前已经具备链上安全态势感知、风险告警、链上追踪等能力,如果与Sequencer合作,也可以实现我们在Layer1区块链中的攻击阻断服务。目前我们与Binance已达成合作协议,帮助其实现BNB Chain的风险感知。 Leukocyte是一个具备CWPP(Cloud Workload Protection Platform)和ASA(Adaptive Security Architecture)能力的主机安全防护产品,应用场景覆盖云主机,物理主机和虚拟机,可以提供针对服务器层面的资产,风险,威胁和响应闭环管理,有效保障服务器安全可靠运行。 总结 当我们在谈论ZKP项目安全的时候,我们首先要明确该项目将ZKP用于何处,对于Layer2、隐私币、公链的安全侧重点是不一样的。但无论如何,都要确保ZKP的三个性质:完备性、可靠性和零知识性的有效性。 更多详情请查阅当我们在谈论零知识证明安全的时候,我们在谈论什么 来源:金色财经lg...