💙 你是DApp吗?我们正在用推广方式帮助DApp吸引更多用户 点击这里联系我们
查看所有文章
2020-01-28

设计一个能自我保护的智能合约开发平台

文章内容来自 Dexaran 以及由 EOS GO支持

designing-self-securing-smart-contract-platform-big


介绍

No platform can prevent poorly designed apps.

作为对 2019 年 9 月 14 日 EOSPlay 黑客事件 的回应,BM 表示,没有任何平台可以阻止设计糟糕的应用程序。

实际上,DAPP 开发平台可以实现一组特性来防止此类“开发不佳的应用程序”或显著减少它们的数量。本文的目的是描述可用于实现这一目标的改进安全性的方法。

应该注意的是,无论是正式的验证、更好的编程语言、自动化的测试或任何其他自动化的安全改进方法,其实都不能从真正意义上解决问题。


问题的定义

这个问题有两个层次。

社交层: DAPP 开发者没有心思去关注安全问题。

技术层: DAPP 开发者想要确保他们应用程序的安全性,但却做得不够好。

在开发与资金有关的应用程序时,安全性问题非常重要。

特定于应用程序的问题和漏洞通常会影响它们所开发的平台的声誉(例如在以太坊上的 TheDAO 黑客事件。导致黑客事件中最有害的因素,是利用 DAPP 开发者不想花心思在他们项目的安全性上的心态。

根据对过去智能合约的攻击分析,我们可以得出结论,大多数的攻击都包含一个已知的漏洞,任何代码审查人员都可以很容易地检测到它的存在。

例1:奇偶校验多签黑客事件涉及到利用合约漏洞,执行者需要“所有者(owner)”许可的功能。这样事件发生的原因是合约开发人员的疏忽,他们犯了一个显而易见的错误。

例2:EOSPlay 黑客事件涉及利用 EOSPlay 智能合约的随机数生成器的实现。已知 EOS 缺乏可靠的熵源,随机数发生器在链上不能安全地实现。如果开发人员做了适当的研究,他们就会了解 EOS 中的 RNG 问题。

即使是最优秀的开发人员有时也会犯错误。重要的是要采取所有必要的措施来防止在发生错误的情况下 DAPP 可能造成的潜在伤害。这是 DAPP 开发者的责任,大多数开发平台的主要问题是开发者往往忽视了这一责任

因此,所提出的功能集不仅应该使关心安全性的开发人员能够改进他们的 dapp,而且应该迫使那些不关心安全性方面的开发人员加以注意。


安全执行系统

通用语句

系统必须:

  • 允许请求者免费对项目进行安全审计的请求。

  • 允许任何人对任何 DAPP 进行安全审计的要求,而不是专注于向 DAPP 开发者提供安全审计服务。

  • 以方便使用的形式,向一般用户提供资料,包括:(1)进行安全审计后的安全审计报告; (2)源代码的可用性; (三)如果有 BUG 赏金计划的 BUG 赏金结果; (4)其他因素。未通过安全增强程序的应用程序必须标记为“高风险”应用程序。

  • 提供一套安全改善方法。基于 DAPP 启动过程的经验和分析,可以认为由一组专家进行的安全审计是最有效的安全改进方法。(请参阅DAPP 安全标准)

想法

如果我们可以通过通货膨胀来确保 DAPP 的安全性,就像在各种共识机制中使用它来确保挖矿 / 出块的正确性一样,那会怎样呢?

描述安全增强系统的主要思想是,可以使用一个内置的资金来源以提高智能合约开发平台的安全生态系统,通过支付的专家小组将继续审查 DAPP 和报告以发现任何有可能的漏洞。因为代码审查人员是按协议级别付费的,所以对 DAPP 开发人员的安全审查是免费的。更重要的是,潜在投资者可以要求对他/她将要投资的 DAPP 进行安全审计,以获得关于 DAPP 安全的专业回应。

许多区块链生态系统都有一个内置的资助机制和治理系统。在DASHPIVX 中实现的财务模型就是很好的例子。工人提案系统(WPS)和区块生产者也是类似的工具,它们在协议级别获得资金,应该通过分发这些资金来改善网络和生态系统。

实现

所述系统若要对生态系统产生有效影响,必须由以下三部分组成:

  • 安全审计部门 -DAO 代表智能合约安全审计的自由职业者平台之一。这个组织应该处理 DAPP 审查和审计请求。

  • 已审核的 DAPP 注册表 -它应该是一个媒体资源,向用户提供关于现有 DAPP 及其安全状态的信息(或因缺乏 DAPP 安全信息,而对潜在用户/ 投资者构成风险)。重要的是,生态系统中的所有参与者都要考虑到这一资源,从而激励 DAPP 开发人员关注他们的安全状态。

  • 链上资金来源 -必须部署资金来源以支付安全审核员的工作费用。如果结果证明效率低下,资金来源还必须允许替换安全部门 DAO。

现有的例子: Callisto 网络协议

Callisto Network 是一个旨在提高智能合约行业安全性的项目。Callisto 网络实现了安全审计部门 和财务治理/资金模式。Callisto 安全部门(solidity)对以太坊/ ETC/ TRX 上的智能合约进行了[300 多次安全审计],得出了一些有价值的结论。


Callisto 网络给我们的经验

1. 融资模式

Callisto Network 从未打算成为一个独立的开发平台。因此,它迅速从“为其 DAPP 的安全支付平台”转变为“为建立在其他平台上的 DAPP 的安全支付平台”。

有一种基金锁定机制(Cold Staking),旨在弥补通货膨胀的影响,但它被证明在某些阶段是不足以满足用户需求的。安全平台最好与 DAPP 开发平台紧密结合,以保证两者的长期可持续性。

2. DAPP 开发者倾向于将安全审计作为营销活动的一部分

最初的设想是,DAPP 开发人员将推广 Callisto,以换取免费的审计,这将增强网络效应,并将 Callisto 作为一个项目来采用。

**实际上,这只有在开发人员对安全审计的结果满意时才有效。**在某些情况下,如果报告了中度或高度严重的问题,并建议 DAPP 重新设计智能合约,开发人员往往会忽略审计结果,更别他们会提起审计人员了。在某些情况下,报告发现的严重性是有争议的。这里最好的例子是“所有者特权”函数。虽然这些功能主要用于调试合约或在遇到不可抗力时中断合约的工作流程,但这些功能构成了潜在的威胁,并且在安全审计报告中被经常提到。

如果一些独立的第三方能够促进并公布 DAPP 安全审计的结果,从而传播关于审计人员的信息,并能保护用户免受潜在的威胁,那是更好的情况。

3. Callisto 安全部门的结构被证明是有效的

根据 300 多个已完成的安全审计、数千行代码审查和大量错误报告的结果,可以得出结论: Callisto 安全部门的当前结构适合这项任务。在经过审查和获得安全通过的应用程序中,没有一个在近两年的时间里被黑过。

改进安全部门结构的下一步是实现 DAO 智能合约,它将工作流程自动化。

4. 安全审计结果的公开是强制性的

Callisto 网络在其设计中缺少注册表的已审核 DAPP的组件。这个组件被证明是强制性的,因为它是更有效的目标用户和教育/说服他们使用安全的 DAPP,而不是试图说服 DAPP 开发人员注意他们的代码。

如果开发应用程序没有被审计,那么用户在使用开发应用程序时将自己的资金置于风险之中,而开发人员则将客户的资金置于风险之中。

5. 上述方法主要适用于开源的 DAPP

为了在没有合约开发人员许可的情况下对特定的合约进行安全审计,必须公布合约的源代码。

上述的安全审计部门的结构旨在确保工作过程的最大透明度和可验证性。如果审计人员不能公开强调和描述一个问题,就很难实现透明度和可验证性。


安全审计部门结构

为了确保安全审计的最大灵活性和效率,以及对底层平台的充分抽象,安全部门的结构和工作流程必须如下定义。

应该有两种类型的参与者:审计人员和审计经理。

审计人员审核实际提交的代码并提供报告。

管理者给审计人员分配任务,核实审计人员提供的报告,相互比较报告,并在最终的安全审计报告中总结报告的缺陷。

审计人员应该独立工作。必须至少有三名安全审计人员审核每一份合约,以确保审计工作的完成。安全审计完成后,审计人员应按报告和遗漏的调查结果的数量比例收到付款。审计人员应在竞争的环境中工作,这是因为审计要求的预算是分配给处理这一特殊要求的审计人员。一个审核人员的“权重”越大,他得到的奖励就越高,另外两个审核人员得到的奖励就越少(“权重”取决于每个审核员在报告中发现的数量和严重程度)。

特定安全审计请求的预算必须取决于可审计合约的代码长度。

例子: 详细的安全审核人员工资计算方案可以在这里找到。

例子: 详细的安全部门结构定义可以在这里找到。


DAPP 安全审计的结果

每项审计要求的结果如下:

  • 审计请求,已提交并可验证

  • 由至少三名独立审计人员提供至少三份安全审计报告

  • 安全经理提供的摘要

摘要和报告必须发布并存储在任何抗审查的存储中。由于在区块链中存储文本的成本相对较高,因此可能更好的方法是使用替代存储解决方案,并且只在区块链中存储哈希值。

由于过程的每个步骤都是透明和可验证的,所以也可以保留关于发现/遗漏的漏洞的有价值的统计数据,这些统计数据也可以帮助开发解决方案,以便提前预防它们的发生。


风险管理

所描述的系统旨在防止诸如 DAO 攻击、奇偶校验多签冻结或 EOSPlay 攻击等对行业有害的事件。那些可能对生态系统造成最大危害的应用程序必须具有更高的优先级。在大多数情况下,这些应用程序有大量资金进行操作,并成为黑客的潜在目标。

为了在关键或特别复杂的应用程序中提高审计部门工作的可靠性,可能需要指派 3 名以上的审计人员。


结论

此描述系统可在多个智能合约平台上实施,藉由引入平台上负责安全意识的专用组件,提高应用系统的安全性,并保护用户免受潜在威胁。


EOS GO 由 EOS ASIA 资助,由每一个您提供支持。通过在您的名字上加上 eos go 并加入 EOS GO 电报组来为整个进程贡献力量吧 !