安全

区块链和分布式账本的安全性

区块链的安全性

布莱恩的用具
安全技术副总裁

2019年1月10日

经验证据揭示了一种敌意的信念,即区块链和分布式账本技术(dlt)本质上是安全的,因为它们使用密码学,采用哈希算法,并具有公共/私有密码对-简而言之,相信这些系统中的数据极不可能被暴露。在评估需求和决定使用区块链解决方案在美国,从一开始就必须考虑安全问题。

在过去的几年里,CableLabs研究和开发组织的安全技术部门一直在跟踪区块链攻击和妥协。亚博yabo888vip网页版从这项工作中,已经确定了几种危险类别。下面的列表旨在帮助围绕使用这些技术的企业项目进行架构、设计和实现工作。

智能合约注入

智能合约引擎是一种(有时是新颖的)编程语言的解释器,也是与引擎需要做出的决策相关的数据解析器。这种情况下的危险在于,可执行代码出现在智能合约中,试图破坏合约语言或数据。实现者需要考虑清洁智能合约的输入,适当的解析和错误处理。

重播攻击

不仅在事务处理和验证方面存在威胁,在节点行为、身份验证和机密消息的安全方面也存在威胁。添加nonce来检查先前的事务是至关重要的。

修改历史攻击

当有许多参与节点处理、竞争和协作下一个区块时,依赖于容错共识模型的区块链表现良好。当节点数量下降时,或者如果存在可预测的循环行为,可以在历史修改攻击中利用暂停,其中创建一个新的分支,有效地删除先前接受的事务。设计人员应该考虑如何最好地保证节点的最小支持和多样性。

永久中毒

由于区块链的持久性和分叉的成本,甚至可以用索赔来破坏链非法内容引起监管机构和执法部门的愤怒。

机密信息泄露

持久性增加了数据从链中泄露的风险。即使是加密数据,未来也有可能受到这些算法或暴力攻击的威胁。设计人员需要确保他们了解所存储的数据,如何保护数据,谁拥有数据,以及如何将数据与任何化名用户重新关联。

与会者认证失败

事务创建者是否对其事务进行加密签名?这个签名通过协议验证了吗?交易收据是否已确认(不可抵赖)?会话是否被管理?架构师需要在参与者的验证和身份验证中考虑私有密钥的持有证明。

节点的欺骗

节点是在链中创建并同意下一个新区块的实体。节点应该像任何其他用户或系统一样进行身份验证,并且必须验证身份,禁止多次投票。如果设计人员不能发现投票不规范,那么他们的实现就会面临风险。

节点的不当行为

行为不正确的节点、故意绕过容错机制的节点或木马节点(遵循标准协议但具有非标准实现的公共链中的节点)都是有问题的。事务传播不遵从性是另一个需要关注的问题——节点不能快速地将事务传递给其他节点,节点始终与其他节点相反,或者在小领域内始终一致地对齐验证。此外,架构师需要考虑当链、节点或节点的子集受到拒绝服务攻击时,链操作会发生什么。

不可信任的节点链接缝

参与者的意图、节点中发生的事情和链上发生的事情之间的密码差异必须都是一致的。架构师应该执行这样的设计,即节点不能修改事务(签名和哈希验证)、跳过事务(不可抵赖性)或添加新事务(源验证)。

一般安全隐患

这些危险属于一般安全问题的元类别,在区块链/DLT领域具有特定的影响。架构师、设计师和实现者都需要注意这些实践,并努力确保一个完整的解决方案:

  • 未经证实的加密:寻找在密码套件、哈希算法、密钥长度、使用的椭圆曲线等方面的最佳实践和经过验证的加密技术。
  • 非扩展性密码学如果链的基本算法方面受到损害,链可以轻松地迁移到另一个套件/哈希/密钥对吗?在节点操作员之间是否有一种机制和流程来快速达成一致并进行部署?
  • 安全错误配置了解所使用的所有代码库,了解有关部署技术(如Docker)的最新安全信息,并确保测试系统中出现的默认值在生产系统中不可用。询问是否有任何组件存在已知的漏洞,确定是否有任何开放端口或文件系统权限可能存在风险,并了解私钥的保护机制。
  • 日志记录和警报不足如果出现问题,是否有足够的方法来捕获发生的操作(投票、智能合约、身份验证、授权)?项目经理必须确保在代码中添加了警报,在部署时添加了正确的收件人,并且执行了对这些收件人进行持续监视和更新的程序。
  • 边防薄弱开发团队需要意识到并加强防御,这样客户端代码或节点软件、智能合约引擎、移动应用程序、web应用程序、链查看器或管理工具中就不会有可利用的漏洞。

显然,这个列表并没有包含区块链或DLT应用程序中必须审查的所有内容,但目标是提供一些需要关注的关键领域,并提供深入研究的见解,以便在您自己的应用程序中深入研究。区块链可以帮助弥合生态系统中的信任差距,但安全是这种信任的基础。

想了解更多关于未来区块链和分布式账本安全的信息吗?点击下方订阅我们的博客。


订阅我们的博客

隐私偏好中心

    严格的必要

    网站正常运行所必需的cookie。

    PHPSESSID, __cfduid hubspotutk

    性能

    它们用于跟踪用户交互并检测潜在的问题。这些数据有助于我们通过提供用户如何使用本网站的分析数据来改善我们的服务。

    BizoID, wooTracker, GPS, _ga, _gat, _gid, _hjIncludedInSample, mailmunch_second_pageview

    针对

    这些cookies用于(1)发送与您和您的兴趣更相关的广告;(2)限制你看广告的次数;(3)帮助衡量广告活动的效果;(4)了解人们在观看广告后的行为。

    __hssc, __hssrc, __hstc,