☰
FISCO BCOS v3.13 共识密钥加密三大方案:CLOUDKMS、HSM、BCOSKMS 详解
2026/10/17 12:05:20 网站建设 项目流程

在联盟链生产环境中,节点私钥的安全性是整个信任体系的根基。一旦共识密钥泄露,攻击者可以伪造节点签名、篡改共识结果,甚至接管整个链的控制权。

FISCO BCOS v3.13 将原有的落盘加密和 HSM 加密中“密钥加密”和“数据加密”拆分为两个独立维度,密钥加密负责保护共识密钥本身,数据加密负责保护节点落盘数据,两者可单独开启。共识密钥解密支持CLOUDKMS、HSM、BCOSKMS三种方式,本文将结合完整配置案例逐一详解。

一、为什么要分离“密钥加密”和“数据加密”

在 v3.13 之前,落盘加密同时承担两个职责:加密节点私钥和加密硬盘上的数据(合约数据、RocksDB 内容)。但这两种加密的威胁模型和生命周期完全不同。

落盘加密解决的威胁是“硬盘被物理带离内网”。加密数据的解密密钥由机构内网的 Key Manager 服务管理,节点启动时向 Key Manager 请求 dataKey,dataKey 只在内存中存在,节点关闭后自动丢弃。

共识密钥加密解决的威胁是“节点私钥以明文形式存在于磁盘上”。即使硬盘没有被盗,能访问服务器文件系统的人也可以直接读取node.pem。

分离之后,两者的配置可以独立控制。你可以在内网环境只开启 CLOUDKMS 保护共识密钥而不加密全部落盘数据,也可以在高安全场景下同时开启两种特性。

二、CLOUDKMS:云端密钥托管方案

CLOUDKMS 是利用公有云厂商的密钥管理服务(如 AWS KMS、腾讯云 KMS)来加密节点共识密钥的方案。私钥以密文形式存储在本地,解密过程在云 KMS 的 HSM 安全环境中完成。

原理

节点启动时,从config.ini读取加密后的node.pem,通过云 KMS 的 API 发起解密请求。KMS 在云端 HSM 中完成解密,将明文私钥返回给节点进程。原始密钥材料永不离开 KMS 的安全环境。

实现步骤

第一步:在云 KMS 中创建密钥

以 AWS KMS 为例,在控制台创建对称密钥,密钥用途选择“加密和解密”,创建别名并记录 region 和 key id。如果是腾讯云 KMS,需要创建非对称签名密钥,密钥用途选择ASYMMETRIC_SIGN_VERIFY_SM2(国密)或ASYMMETRIC_SIGN_VERIFY_ECC(国际)。

第二步:生成访问凭证

在 IAM 页面创建访问密钥,下载 CSV 文件妥善保存。该文件包含 access key 和 secret key,用于后续的加密工具和节点配置。

第三步:编译 kmstools 并加密节点密钥

CLOUDKMS 的加密工具需要自行编译,编译时开启 tools 选项。使用命令格式如下:

./kms_tool <kms_type> <access_key> <secret_key> <region> <key_id> <inputFilePath> <outputFilePath>

其中kms_type填写CLOUDKMS,inputFilePath是原始node.pem,outputFilePath是加密后的输出文件。

第四步:配置节点

在节点config.ini的[security]段中配置:

[security] private_key_path=conf/node.pem kms_type=CLOUDKMS kms_connection_str=region:id:token cloud_kms_type=AWS

kms_connection_str的格式为region:id:token,其中 region 是 KMS 密钥所在的区域,id 是密钥 ID,token 是访问凭证。

关键注意点:AWS KMS 只加密node.pem,不会对节点落盘数据进行加密。如果需要同时保护落盘数据,需要额外配置落盘加密。

三、HSM:硬件密码机方案

HSM(硬件安全模块)是一种通过扩展卡或外部设备形式连接到服务器的专用硬件设备,用于安全地生成、存储和管理数字密钥,并提供密码学运算能力。

原理

FISCO BCOS 的共识和交易模块在签名时调用bcos-crypto,bcos-crypto再调用hsm-crypto模块,最终通过密码机的 API 接口完成签名。涉及到的参数包括密码机内置密钥索引keyIndex,最终调用密码机签名接口SDF_InternalSign_ECC。验签时同理调用SDF_ExternalVerify_ECC。

所有密钥对存储在密码机中,内存中无密钥对存留。节点进程只持有密钥索引,实际的签名运算在密码机硬件内部完成。

实现步骤

第一步:安装密码机

需要安装符合《GMT0018-2012 密码设备应用接口规范》的密码卡或密码机。安装密码机厂商提供的动态库文件(如libgmt0018.so),放置在系统默认库搜索路径下,并确保用户具有读和执行权限。

第二步:初始化并生成密钥对

根据密码机厂商的指引初始化设备,并在密码机内部生成两对 SM2 密钥:一对是签名密钥(假设索引为 31),另一对是加密密钥(假设索引为 32)。

第三步:准备动态二进制

加载密码卡动态库需要 FISCO BCOS 的动态二进制版本。编译时不指定-DBUILD_STATIC=ON即可生成动态链接版本。

第四步:配置节点

在config.ini中添加以下配置:

[security] enable_hsm=true hsm_lib_path=/usr/local/lib/libgmt0018.so key_index=31 password=your_hsm_password

enable_hsm开启 HSM 签名验签,hsm_lib_path指向密码机动态库路径,key_index指定密码机内部的签名密钥索引,password是密钥访问密码(无密码则留空)。

四、BCOSKMS:基于 Key Manager 的密钥加密方案

BCOSKMS 是 FISCO BCOS 内置的密钥管理方案,基于 Key Manager 服务实现。它与落盘加密共享同一套 Key Manager 基础设施,但专注于共识密钥的保护。

原理

BCOSKMS 的核心是superKey 和 dataKey 的两层密钥体系。Key Manager 持有全局的 superKey,负责对所有节点的授权请求进行响应。节点自身持有 dataKey,用 dataKey 对自身管理的数据进行加解密。

节点本身不会在本地磁盘中存储 dataKey,而是存储 dataKey 被 superKey 加密后的cipherDataKey。节点启动时,拿着cipherDataKey向 Key Manager 请求,Key Manager 用 superKey 解密后返回 dataKey。dataKey 只在节点内存中存在,节点关闭后自动丢弃。

实现步骤

第一步:部署 Key Manager 服务

每个机构独立部署一个 Key Manager,部署在机构内网,外网无法访问。Key Manager 必须实时在线,响应节点的启动请求。

第二步:生成加密密钥

执行 Key Manager 提供的脚本生成cipherDataKey:

cd key-manager/scripts bash gen_data_secure_key.sh

生成的cipherDataKey会写入节点的配置文件。

第三步:配置节点

在config.ini中配置落盘加密和密钥加密参数:

[storage_security] enable=true key_manager_ip=127.0.0.1 key_manager_port=31443 cipher_data_key=ed157f4588b86d61a2e1745efe71e6ea

enable=true开启落盘加密,key_manager_ip和key_manager_port指向 Key Manager 服务,cipher_data_key是加密后的数据密钥。

关键注意点:节点在生成后、启动前,必须决定好是否采用落盘加密。一旦节点配置成功并正常启动,将无法切换状态。

五、三种方案对比与选型建议

维度CLOUDKMSHSMBCOSKMS
密钥存储位置云端 KMS 的 HSM 中本地密码机硬件中Key Manager 的 superKey 加密保护
依赖条件公有云 KMS 服务 + 网络连通密码机硬件 + 动态库Key Manager 服务(内网)
部署复杂度低(云服务即开即用)高(需要硬件采购和安装)中(需要部署 Key Manager)
密钥安全等级高(云 HSM)极高(专用硬件)中(依赖 Key Manager 的安全性)
是否支持国密腾讯云 KMS 支持 SM2完整支持 SM2/SM3/SM4取决于底层加密库
适用场景云上部署、多机构协作金融机构、高安全要求内网环境、已有落盘加密

选型建议:

  • 云上部署、追求便捷:优先选择 CLOUDKMS。腾讯云 KMS 支持 SM2 国密密钥,与 FISCO BCOS 的 Go/Java SDK 集成成熟。

  • 金融机构、最高安全等级:选择 HSM。密钥永不出硬件,签名在密码机内部完成,满足金融级安全合规要求。

  • 内网环境、已有落盘加密:选择 BCOSKMS。可以复用已有的 Key Manager 服务,无需额外引入云服务或硬件。

  • 混合场景:CLOUDKMS 可与落盘加密融合使用,同时开启两种特性,实现“共识密钥云端保护 + 落盘数据本地加密”的双重防护。

总结

FISCO BCOS v3.13 的密钥加密与数据加密分离,让用户可以根据实际威胁模型灵活组合安全方案。CLOUDKMS 降低了云上部署的密钥管理门槛,HSM 提供了最高等级的硬件保护,BCOSKMS 则在已有落盘加密基础设施上提供了轻量级的密钥保护。三种方案没有绝对的优劣,关键在于匹配你的部署环境、安全合规要求和运维能力。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询