安全框架
该框架的目标是提供对 Quorum 和去中心化应用程序 (dApps) 安全最佳实践的深入参考。
以下概述了该框架的范围:
参考
https://ws680.nist.gov/publication/get_pdf.cfm?pub_id=925957
https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE1TH5G
https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.04162018.pdf
https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt2r1.pdf
联盟
在创建联盟时,应考虑以下要素:
治理
所选择的结构不仅必须适合于允许联盟高效和有效的运作,而 且还必须平等地满足构成联盟的人的关注。
所有权
区块链技术的性质也增加了意外数据暴露的风险。为了管理知识产权 (IP) 的所有权和资产的风险,应记录并商定。
责任
大多数网络运营活动都是良 性的,但并非在所有情况下都是如此,即使在其他低风险的财团中,根据反垄断法,成员构成 “ 市场力量 ” ,特定产品或服务中的很大一部分竞争对手空间可能是成员。
无意中出错的可能性和政府监管机构的潜在审查水平更高。
在这种情况下,个人成员可能希望对组织可以对其成员在适当的事先共识保持更严格的控制,以降低风险和责任(更重要的是了解什么能和不能)。
活动
互连多个独立网络带有风险因素。
为了建立控制以最小化风险,必须记录预期在网络中执行的活动。
安全检查表
如果节点由不受信任的参与者管理,请使用拜占庭容错共识协议
联盟成员应提供合理的网络服务水平协议 (SLA) 。
确保私有 / 公共有效载荷数据存储在适当的地理立法区域。
记录联盟治理结构、所有权、责任、成员资格、活动。
记录加入联盟的组织和技术要求。
确保网络中的每个参与者都知道联盟成员。
确保私有/公共负载数据符合隐私政策。
GoQuorum 节点
GoQuorum 节点,也称为 GoQuorum 客户端,是一个胖客户端,其私有交易功能操作依赖于对私有交易有效负载进行加密和解密的交易管理器客户端。 Quorum 客户端及其依赖项(即交易管理器、 Peers 和 Enclave )都使用传统的 TCP/UDP 传输层进行通信。
作为网络中的任何资产,其安全性取决于多种元素(例如主机、数据和帐户的安全性)。在 GoQuorum 中,它将是客户端和交易管理器主机 / 主机运行时、加密密钥、共识运行时和网络访问控制的安全性。
主机安全
GoQuorum 网络中的任何资产(客户端主机、交易管理器主机、私有交易存储主机等)都必须按照行业最佳实践进行加固。
应使用主机 IDS 来检测主机上的任何恶意活动。不应允许直接访问主机,而应使用跳转服务器并将访问限制为少数管理员。
操作系统、软件和服务将存在漏洞。 GoQuorum 网络主机必须实施强大的修补管理程序。
客户端安全
GoQuorum 客户端实例通过 HTTP 、 Web Socket 或进程间通信技术公开 JSON 远程过程调用 (RPC) 接口。
JSON-RPC 接口允许与分类帐功能和智能合约进行远程交互。必须保护 JSON-RPC 接口以保持分类帐运行时的完整性。
网络中的每个客户端都必须唯一标识。
在 GoQuorum 中,这是通过使用节点标识来完成的。节点身份通过公钥 / 私钥表示,其中公钥标识网络中的节点。
GoQuorum 智能合约许可模型依赖于节点身份来授权节点之间的 TCP 级别通信,因此保护节点的私钥是防止未经授权的节点加入网络所需的首要活动。
用户安全
区块链技术使用公钥密码术来保护交易和区块的完整性。
用户私钥的安全性取决于为防止私钥泄露而实施的安全操作元素。
在以太坊帐户中,私钥使用用户指定的种子(密码)进行加密。
用户密码永远不应该在整个生态系统中保存或以任何形式存储在分类账主机中。
安全检查表
主持人
强化 GoQuorum 主机操作系统(例如删除不相关的服务、 root 访问权限等)。
在生产中禁用对 GoQuorum 主机管理界面的直接远程网络访问。
使用基于主机的入侵检测系统 (HIDS) 来监控 GoQuorum 节点主机。
启用基于主机的防火墙规则,强制对 JSON-RPC 接口的网络访问仅限于预先识别的、受信任的和必需的系统。
实施强大的修补管理程序,并始终将主机更新到最新的稳定版本。
确保主机级别 GoQuorum 客户端及其依赖项之间的责任隔离(例如,不要在同一主机中运行交易管理器及其数据库)
确保 GoQuorum 网络主机以适当的服务级别协议 (SLA) 运行,以确保防御基于非漏洞的拒绝服务。
客户
启用安全传输安全 (TLS) 以加密所有来自 / 到 JSON-RPC 接口的通信,以防止数据泄漏和中间人攻击 (MITM) 。
启用 GoQuorum Enterprise JSON-RPC 授权模型,以对账本模块功能(例如 personal.OpenWallet )实施原子访问控制。
实施强大的修补管理程序,并始终将客户端更新到最新的稳定版本。
确保 GoQuorum 客户端运行配置未使用解锁帐户选项启动。
确保正确配置 JSON-RPC 接口的跨域访问。
确保根据联盟要求适当设置对等发现。
在基于 Raft 的共识中,不能保证领导者不会恶意行事,因此 Raft 不应该在网络账本由第三方机构管理的环境中使用。
GoQuorum 客户端必须使用指标收集功能运行,以保持操作安全。
用户
账户私钥加密密码绝不应以任何形式存储在账本主机中。
架构中,帐户私钥不会卸载到账本节点客户端,应定期备份加密的私钥以保护环境。
交易经理
Tessera
Tessera 是 GoQuorum 的交易管理器。
GoQuorum 隐私功能依赖于 Tessera 来加密 / 解密,并广播私有交易有效负载的编排。
Tessera 使用 enclave 执行私有交易有效负载的加密 / 解密。加密密钥应存储在高度安全的环境中,例如硬件安全模块 (HSM) 。
Tessera 与其依赖项( Enclave 、 GoQuorum 节点、有效负载存储数据库、秘密存储服务)的通信必须受到保护。
为确保 Tessera 之间通信的隐私和身份验证,网络必须配置为基于证书的相互身份验证 (MTLS) 。
加密密钥
加密密钥是隐私模型中最关键的元素,如果加密密钥被泄露,网络就会失去隐私。
Tessera 支持与可信平台模块 (TPM) 和硬件安全模块 (HSM) 的集成,以减少表面攻击并提供高度安全的环境。
安全检查表
Tessera 应该在生产中的独立网段中运行
Tessera 必须利用基于证书的相互身份验证及其依赖项
秘密存储服务必须支持密钥轮换。
根据部署模型,加密密钥必须备份在离线安全位置。
秘密存储服务必须与外部网络完全隔离。
Tessera 连接字符串不得以明文形式存储在配置文件中。
云部署中的秘密存储应在单一租户模型下运行。
应启用主机防火墙,入站和出站流量应仅限于保管库服务并仅限于这些服务的消费者。这包括基本的主机服务,如 DNS 和 NTP。
将对 Secret Storage 实例的远程访问限制为列入白名单的 IP 地址并启用 MFA。
禁用对 Tessera/Secret 存储主机的远程根访问。
为 tessera 及其依赖项启用远程集中日志记录。
在 tessera 主机中禁用核心转储。
Tessera 升级应该使用不可变的策略并且频繁。
网络运营
监控
监控网络的安全事件从日志收集活动开始。 GoQuorum 网络与任何其他网络一样应该生成日志,必须对其进行异常分析。以下参数值得收集和分析:
主持人访问和活动
网络上的以太坊账户
活动分类帐,网络中的交易管理器节点
网络中每个账户的公共和私有交易费率。
网络中公共智能合约的数量。
到账本节点和元数据的网络连接。
共识协议元数据(区块创建率和来源 …… )
安全检查表
确保 GoQuorum 主机的所有活动都被记录到集中日志系统
集中式日志系统必须能够提供对以下参数的查询能力
网络上的以太坊账户
活动分类帐,网络中的交易管理器节点
网络中每个账户的公共和私有交易费率。
网络中公共智能合约的数量。
到账本节点和元数据的网络连接。
共识协议元数据(例如区块创建率和来源 …… )
必须备份日志并验证完整性。
应建立警报系统以监控共识协议异常
前端
与任何传统应用程序一样, dApps 客户端 / 服务器组件必须遵循应用程序安全最佳实践。 建议使用安全软件开发生命周期 (SSDLC) 来实现任何应用程序。 一般来说,安全开发生命周期包括以下阶段:
风险评估阶段。
威胁建模和安全设计审查阶段。
静态源代码分析阶段。
安全测试和手动安全源审查阶段。
部署管道阶段配置的安全评估。