保护您的区块链解决方案:威胁有哪些,该如何应对?

什么是区块链

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。

区块链特点

区块链具有防伪造、防篡改、可追溯的技术特性,有利于解决制造业中的设备管理、数据共享、多方信任协作、安全保障等问题,对于提升工业生产效率、降低成本,提升供应链协同水平和效率,以及促进管理创新和业务创新具有重要作用。

从科技层面来看,区块链涉及数学、密码学、互联网和计算机编程等很多科学技术问题。从应用视角来看,简单来说,区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的“诚实”与“透明”,为区块链创造信任奠定基础。而区块链丰富的应用场景,基本上都基于区块链能够解决信息不对称问题,实现多个主体之间的协作信任与一致行动。


本文着重介绍了可广泛应用于各种区块链项目和解决方案的区块链安全参考架构,此架构适用于各行各业的内部部署和软件即服务 (SaaS) 环境内的用例与部署。它审视了区块链所特有的安全风险与威胁,然后介绍了主要的区块链安全控制措施,以及其他业务控制措施和传统的安全控制措施。最后,本文还展示了一个可用于保护任何区块链解决方案的区块链安全参考架构和安全模型。

我们强烈建议您根据此区块链安全模型审查自己设计和架构的解决方案,确保已妥善采取所有措施为自己的区块链解决方案提供充分的保护。

区块链同样也会遭受网络攻击

区块链是一个经过许可和复制的共享账本,具备共识性、可证明性、永恒性和最终性这些特征。共享账本可以确保参与者能够决定要共享的资产,并能够掌握作为交易对象的其他参与者的身份。区块链还为参与者提供可证明的背书,并附带有保密性,即只能在"需要知道"的基础上共享信息。

区块链和区块链应用程序同样也会遭受网络攻击和欺诈,这早已不是什么秘密。以下是几个示例:

  • 去中心化自治组织 (DAO) 是一个风险投资基金,通过受比特币启发而产生的去中心化区块链来开展业务,它因代码惨遭不良利用而被盗取价值超过 6000 万美元的以太数字货币(约占其价值的三分之一)。

  • 总部位于中国香港特别行政区的全球最大加密货币交易所之一 Bitfinex 曾发生一起价值近 7300 万美元的客户比特币失窃案,由此证明此类货币仍然存在巨大风险。发生此类失窃案的原因可能是密钥失窃。

  • 全球最大的以太坊和比特币加密货币交易所之一 Bithumb 最近遭到黑客入侵,30,000 名用户数据惨遭泄露,价值 870,000 美元的比特币不幸失窃。即使遭到黑客入侵的只是一名员工的计算机,而不是核心服务器,该起事件仍引发了人们对于整体安全性的担忧。

    应对和检验区块链的密钥安全问题或风险有助于确保区块链解决方案的安全。

    与基于区块链的解决方案相关联的安全风险

    安全关乎风险管理,因此首先务必要认清与区块链解决方案关联的风险。区块链解决方案的特定风险取决于所使用的区块链类型。让我们来了解一下以下各种不同类型的区块链,它们的风险程度逐步降低,安全程度则逐步增加:

    • 公共区块链是任何人都可参与并验证交易的公开型区块链。此类区块链通常风险较高(例如,加密货币)。这包括任何人都可以参与区块链且缺乏任何级别的控制或限制措施这样的风险。

    • 私有区块链为受限型区块链,通常仅限于业务网络范围内,通过单一实体(监管机构)或联盟机构来控制成员资格。

    • 无许可区块链对于处理商无任何限制。

    • 许可区块链允许对账本进行加密,仅限相关参与者才能查看,并且只有满足"需要知道"条件的人才能对其进行解密。

    区块链解决方案还存在许多其他风险,这些风险大体上可归为以下三个方面:

    • 业务与监管:业务风险包括财务影响、声誉因素与合规风险。监管风险主要源自于区块链解决方案的去中心化本质,需要严格控制决策条件、监管策略、身份和访问管理。

    • 流程:这些风险与区块链解决方案在其架构和运作中所需的各种流程有关。

    • 技术:用于实现各种流程和业务需求的底层技术并不一定就是最佳选择,这最终可能会导致出现安全风险。

    表 1 中展示了上述风险的部分示例。

    表 1. 风险类别和关联风险及描述

    通过分析上述着重介绍的风险,然后衍生出基于区块链的解决方案的风险模型,这是至关重要的。设计区块链解决方案时,主要考虑的因素包括:

    • 哪些特定功能是区块链所独有的?

    • 对参与组织/成员采用何种监管模型?

    • 在每个区块内将捕获哪些数据?

    • 相关法规要求有哪些?如何通过区块链来满足这些要求?

    • 如何管理身份详细信息?是否加密区块有效负载?如何管理和撤销密钥?

    • 区块链参与方的灾难恢复计划是什么?

    • 区块链参与客户的最低安全状况如何?

    • 采用何种逻辑来解决区块链的区块冲突?

    区块链安全威胁模型

    解决方案的安全性也应在其威胁模型环境内进行评估。区块链究其本质,具备强大的记录完整性保证,但在基于区块链的应用程序的其他部分中仍可能会出现各种错误,从而导致泄露和损失。部分示例包括访问控制力度较弱、密钥和证书管理保护措施宽松,以及通信安全不足。为此类应用程序提供适当保护的关键在于,为其开发全面的威胁模型并弥补已识别的漏洞。

    身份假冒、篡改、抵赖、信息泄露、拒绝服务攻击和特权提升 (STRIDE)  模型是一个著名的模型,用于研究参与者与资产之间的关系,审查与这些关系相关的威胁和漏洞,并提供相关缓解建议。

    区块链应用程序通常整合参与者所有和管理的各种外部组件,包括身份和访问管理 (IAM) 系统、多因子认证 (MFA)、公共密钥基础架构 (PKI) 以及监管与审计系统。这些系统需要经过仔细审查后方可成为整体解决方案的一部分,因为它们是由第三方开发或控制的。对于区块链解决方案中的威胁模型,这些都应考虑在内。

    图 1 考虑了多种因素,并衍生出了可在基于区块链的实现中应用的威胁模型。

    图 1. 区块链解决方案中的威胁模型

    图 1 中所展示的威胁可分为三大类:

    1. 全新威胁态势 - 这些是区块链特有的威胁。

    2. 传统威胁有了新的含义 - 随着区块链的加入,传统威胁产生了新的含义,也带来了新的威胁。

    3. 传统威胁管理 - 这些是任何解决方案都需要应对的常见威胁。

    1 全新威胁态势

    • 在此独特的 IT 基础架构中,区块链引入了尚未被充分理解的新范式。大部分漏洞都存在于各种独立组件以及这些组件的连接方式之中。

    • 系统包含大量参与者,每个参与者都可能采用自己的身份管理机制,因此,为适当管理共识建立必要的互信机制并不容易。

    • 在为了正确识别系统参与方而收集的详细信息与安全管理和处置此类信息以满足隐私法规(GDPR 等)的需求之间,务必要找到平衡点。

    • 需要在分布式资产环境中有效识别攻击行为。

    • 必须在所有网络参与方之间协调检测、响应和恢复操作。

    • 结构化

    2 传统威胁有了新的含义

    • 区块链基础架构中的新漏洞以及篡改智能合约可能会引发新的威胁。

    • 在去中心化的区块链解决方案中,用户假冒他人的行为和特权的不当提升可能会引发新的威胁。

    • 区块链解决方案中的外部数据可能会被篡改或不幸失窃,从而给整体区块链解决方案带来威胁。

    • 密钥和证书惨遭泄露或篡改会给区块链解决方案带来威胁。

    • 服务中断同样也可能成为一种威胁。

    • 恶意交易/抵赖会额外带来更多威胁。

    3 传统威胁的管理

    • 渗透测试是所有解决方案的关键,它同样适用于区块链解决方案。

    • 对整个解决方案进行漏洞扫描可以缓解大量已知威胁。

    • 必须适当制定相应的威胁洞察、检测和补救流程。

    • 应妥善制定事件响应与恢复计划。

    • 应妥善设置身份管理最佳实践机制。

    • 业务连续性规划/灾难恢复是所有区块链解决方案的关键。

    由于基于区块链的不同应用程序之间存在显著差异,构建通用威胁模型因此行不通。但这些应用程序通常会与多个相似的参与者、资产和用例存在关联。在本文中,我们推荐了一种适用于这些常见元素的威胁模型,它可用作模板,充当特定项目中更详尽安全分析的起点。

    安全的区块链解决方案需要具备哪些要素?

    对于安全的区块链解决方案,首先应开发一个可以应对所有业务、监管、技术和流程风险的风险模型。

    接下来,评估区块链解决方案面临的威胁并开发威胁模型,如图 1 中所示。

    定义安全控制措施,根据以下三个类别来缓解风险和威胁:

    • 强制实施区块链特有的安全控制措施。

    • 应用传统安全控制措施。

    • 为区块链强制实施业务控制措施。

    区块链特有的安全控制措施

    1. 将区块链解决方案的底层基础架构作为关键基础架构来处理。

      • 这样可以确保所有必要的安全实践都各就各位。采用并强制实施行业标准认证。

    2. 适当分区并采用命名空间最佳实践来规范访问。

      • 解决方案应通过通道和命名空间进行划分,以便它可以托管所有平台成员的数字资产。划分命名空间使其能够规范对平台上托管的数字资产的访问。提前完成此操作同样有助于节省成本,因为后续再更改可能会需要返工重做。利用在网络内部、网络外部和组织内部进行分区的最佳实践。

    3. 根据商业合约定义并强制实施相应的背书策略。

      • 区块链解决方案使用背书策略来定义必须满足的条件,以便确认已提交的交易是有效的。示例包括所需签名数量以及提供签名的组织。这些策略应与智能合约绑定,以便将业务网络以及与合约关联的所有数字资产和数据的安全性一并纳入考量范围。最佳做法是限定这些策略的范围,并在名称空间级别(对于整个智能合约)以及账本密钥级别(对于全局数据库中的单个条目)指定这些策略。

    4. 强制实施用于访问区块链解决方案和数据的身份与访问控制措施。

      • 定义策略,确保出于适当用途为适当人员设置正确的访问级别。新成员应通过相应的身份和访问机制加入区块链平台。同时还应定义退出流程,以防任何信息外泄(通过各种不同方法执行的恶意活动)。需设置相应的审计日志和访问流程,用于向运营团队发送所有恶意活动的警报,以便有效规避此类活动。

      • 如果组织使用内部 IAM 系统并且担任身份提供商 (IDP) 角色,那么应使用相应的令牌(如 OAUTH、OIDC 和              SAML2)来执行身份验证、认证和授权。这同样也适用于其他联盟成员。围绕联盟成员是 IDP 还是服务提供商 (SP),应提前制定相关决策。

    5. 强制实施硬件安全模块 (HSM)。

      • 使用 HSM 保护区块链身份密钥至关重要。同样重要的是,确保每个组织在 HSM 中都有各自的分区用于存储密钥。使用 HSM 存储区块链身份密钥可确保密钥的安全性。HSM              分区流程可确保每个组织都有独立分区,并具有独立管理权限和角色(加密主管、加密用户、超级管理员等),用于对每个不同分区执行分区操作。

    6. 对已上报的操作使用特权访问管理 (PAM) 解决方案。

      • 使用 PAM              解决方案可确保具备相应特权的相应用户能够访问组件,执行管理或变更管理操作。由于平台可能具有保密信息(包括用户和成员的支付交易数据),这显得尤为重要。

      • PAM               解决方案应配合密码轮换和有效职责分离一起实施。配置端到端的日志记录以捕获从入口到出口的整个流程同样至关重要。对密钥的访问应链接到通知单系统,并且每次发布密钥时都应有相应的复审者。每个管理访问实例都应加以跟踪,直至通知单或变更获得核准为止。

    7. 使用 API 安全性最佳实践来保护基于 API 的交易。

      • API 是区块链解决方案不同部分之间主要的通信形式。API 需要保护,以免遭到任何不当使用,并且仅限在交易范围内使用。虽然 API 安全性由多种因素构成,但所有 API              都应实施三大控制措施:标识、身份验证和授权。利用 OAUTH 之类的行业标准来实现交互标准化并为 API 提供保护至关重要。

    8. 对于应用程序和特权访问,充分利用密钥库。

      • 区块链解决方案具有多个组件,开展基于用户和基于 API  的交易时,这些组件会彼此进行交互。其中部分交易基于静态密钥,例如,密码、令牌或证书。这些密钥必须存储在密钥库(在此对密钥进行加密)中,并在运行时需要根据用途来限制访问权。密钥库需支持详细审查,以便保障合规和控制威胁。

    9. 采用数据分类方法来保护数据和信息。

      • 对业务、法律和技术问题相关数据进行识别并分类,以便应用相应的信息安全控制措施来保护数据和隐私。对于区块链解决方案的所有成员,必须持续性地强制实施数据分类。

    10. 对敏感信息使用隐私保护技术。

      • 充分利用以隐私为设计主体的许可账本技术,并提供相关控制措施来保护成员的隐私信息。此外,强制实施隐私保护安全控制措施来隐藏交易信息,例如,交易创建者的身份和交易详情。

    11. 避免应用程序出现漏洞并保护数据。

      • 在开发生命周期内,利用 DevOps 自动执行应用程序漏洞扫描。根据数据分类分析结果在各个级别(例如,应用程序级别和数据库级别)实现数据安全性,同样也十分关键。

    12. 在智能合约中强制实施访问控制。

      • 智能合约是区块链解决方案的关键组成部分,用于实施符合业务目标的策略,因此,应全面保护智能合约的方方面面。应重点关注对于智能合约生命周期管理、智能合约内的细化访问以及与智能合约协同工作的流程或应用程序的访问控制。

    13. 利用可信平台模块 (TPM) 执行敏感代码。

      • 某些解决方案组件比其他组件更为重要,这些关键组件应使用可信平台模块。这有助于存储 HSM   启用的加密材料。这些模块还支持执行隐私保护链码,这样节点管理员就无法暗中操纵执行情况。

    14. 从内部和外部全方位保护通信安全。

      • 确保在内部和外部交互的组件之间,通过高度安全的通道在平台上进行所有通信。这可使用共同的或标准的传输层安全性 (TLS)  解决方案来实现。此外,还可利用更高级别的安全措施,包括 IP 白名单和频繁的密钥轮换。

    传统安全控制措施

    展开阅读全文

    本文系作者在时代Java发表,未经许可,不得转载。

    如有侵权,请联系nowjava@qq.com删除。

    编辑于

    关注时代Java

    关注时代Java