安全声明

A bug related to transaction priority handling may allow an attacker to crash Zcash nodes (Denial of Service) via a specially crafted transaction. A fix is implemented in zcashd release 1.0.8-1.
Please see the official announcement for more details and update your Zcash node to 1.0.8-1.

语种

审计Zcash

Nathan Wilcox | Aug 17, 2016

我们的 目标 是建立第一个利用零知识证明建立开放金融技术,让世界上的每个人都可以使用。为此我们正在进行安全审计和设计评估,并将发布完整的评审结果。

审计策略

Zcash将最新的密码学和区块链共识结合在一起,我们的 参考实现 是一个C++网络应用。我们的审计策略是让不同领域的专家审计整个系统的不同部分,包括:密码学、密码学货币(特别是比特币)、C++、网络和传统的应用安全。

安全审计者和顾问

基于我们的审计策略,我们请不同领域的顶尖专家发起了两起审计和一起设计分析。每个顾问都有他们自己的专注领域,这将会在他们各自的报告中详述。

NCC Group - 从与NCC Group一起为 Least Authority 进行审计起,我们对他们为加密软件进行安全审计的能力印象深刻。

Coinspect --当我们打算找密码学货币专家时,Coinspect很快进入我们的视野。他们已经发布了许多创新的协议设计和有洞见的分析。

Solar Designer -我们选择Solar Designer,因为他是一名 著名的老式黑客,参与了libc(ret2libc),这开始了从植入代码转移到借来的代码,并开发了第一个通用缓冲区溢出开发技术。

我们非常自豪与这些像我们一样重视开源、致力于为每一个人创建可用的安全系统的团队一起工作。

范围

我们的审计集中在以下特定领域:

  • zkSNARK密码学(例如:libsnark)
  • Zcash 加密建构(我们的“zk-SNARK回路”)
  • 工作量证明算法-Equihash
  • 共识改变(不同于比特币部分)
  • 规范性
  • C++、竞态条件、网络、缓冲区溢出、依赖性管理

我们资金和时间有限,所以我们必须选择审计重点。在选择时,我们根据几个我们相信可以小区安全风险的假设:

  • 比特币核心已经存活大概7年,控制着数十亿美元的资金,因此它经受住了真实环境的测试。我们审计重点是我们对比特币的修改部分,虽然我们对与比特币核心相比没有变化的内存安全问题和它的依赖性也进行了一些审计。
  • zkSNARK加密技术采用的同行评议,所以我们将找不到突破性进展。
  • 我们使用了libsnark的一个子集,所以我们将忽略我们不用的部分 [1]
  • Zcash建构是由同行评议过的Zerocash建构修改而来的,所以我们将专注审计修改的地方而不是整个建构。

时间安排

第一起审计已经开始了,我们可能安排再一次审计,以获得更多的安全自信。通过彻底的审计,我们的目标是减轻所有的脆弱点,减少风险--彻底审计也是我们推迟发布的原因之一。我们已经在 Zcash Sprout发布博文 中说过这一安排了。

理解风险

对于一个开放和无需许可的系统,用户必须能够依赖它的安全性和健壮性。保证这一点是个艰难的任务。我们能为Zcash的潜在用户提供的最好服务是确保他们尽可能地理解相关风险。

安全审计和算法分析并不能完全保证安全和正确运行。每个顾问只能做特殊领域的分析,不能为整个系统做担保,他们也不必要为Zcash整个系统做担保。

结论

Zcash是基于同行评议的密码学研究,是由一个专注于安全领域的工程师团队开发的,它是基于比特币核心代码开发的开源平台。发布多个安全审计是我们竭尽所能部署一个金融基础设施的另一个证明。

— Nathan Wilcox, 2016-08-17

[1]我们创建了一个libsnark分叉,移除了Zcash没有使用的部分。