11. 硬件加密
硬件加密设计链接:
11.1. 功能介绍
CA服务根私钥硬件保护
共识签名私钥硬件保护
SDK用户签名私钥硬件保护
加密数据库对称密钥硬件保护
支持国际标准算法:RSA、AES和ECDSA
支持国密标准算法:SM2、SM4
11.2. 启用硬件加密
11.2.1. 配置项
pkcs11:
enabled: true # set true if enable pkcs11
library: /usr/local/lib64/libpkcs11.so # path to the so file of pkcs11 interface
label: HSM # label for the slot to be used
password: 11111111 # password to logon the HSM
session_cache_size: 10 # size of HSM session cache, default 10
hash: "SHA256" # hash algorithm used to compute SKI
11.3. 测试网络
11.3.1. 测试网络部署架构
首先在密码设备创建CA根私钥、sdk用户私钥以及节点共识私钥。
通过chainmaker-cryptogen工具(以下统称cryptogen)的generate命令一键生成测试网络证书。
使用密码机节点私钥和cryptogen生成的节点证书启动chainmaker区块链网络
sdk使用密码机用户私钥进行签名,并将交易发送给chainmaker网络
chainmaker网络节点使用用户证书对交易进行验签名,并执行交易
11.3.2. cryptogen启用硬件加密
修改配置文件chainmaker-cryptogen/config/crypto_config_template.yml,增加或修改pkcs11相关配置:
crypto_config:
- domain: chainmaker.org
host_name: wx-org
count: 4 # 如果为1,直接使用host_name,否则添加递增编号
pk_algo: ecc_p256
ski_hash: sha256
#pkcs11配置,
pkcs11:
enabled: true #启用硬件加密(此处设置为true)
library: /usr/local/lib64/libpkcs11.so #密码机pkcs11连接库
label: HSM #密码机slot对应label
password: 11111111 #密码机登陆密码
session_cache_size: 10
hash: "SHA256"
specs: &specs_ref
expire_year: 10
sans:
- chainmaker.org
- localhost
- 127.0.0.1
location: &location_ref
country: CN
locality: Beijing
province: Beijing
# CA证书配置
# 其他配置(略)
新增/修改配置文件chainmaker-cryptogen/config/pkcs11_keys.yml,配置测试网各组织CA根、用户以及节点私钥KeyID,配置如下(以4组织,每个组织1个共识节点为例):
pkcs11_keys:
- wx-org1.chainmaker.org: #组织1相关密钥KeyId
ca:
- SM2SignKey1
node:
consensus:
- SM2SignKey2
common:
- SM2SignKey3
user:
admin:
- SM2SignKey4
client:
- SM2SignKey5
light:
- SM2SignKey6
- wx-org2.chainmaker.org:
ca:
- SM2SignKey7
node:
consensus:
- SM2SignKey8
common:
- SM2SignKey9
user:
admin:
- SM2SignKey10
client:
- SM2SignKey11
light:
- SM2SignKey12
- wx-org3.chainmaker.org:
ca:
- SM2SignKey13
node:
consensus:
- SM2SignKey14
common:
- SM2SignKey15
user:
admin:
- SM2SignKey16
client:
- SM2SignKey17
light:
- SM2SignKey18
- wx-org4.chainmaker.org:
ca:
- SM2SignKey19
node:
consensus:
- SM2SignKey20
common:
- SM2SignKey21
user:
admin:
- SM2SignKey22
client:
- SM2SignKey23
light:
- SM2SignKey24
11.3.3. 节点启用硬件加密
修改chainmaker节点配置模版chainmaker-go/config/config_tql/chainmaker.tpl,新增/修改pkcs11相关配置:
node:
type: full
org_id: {org_id}
priv_key_file: ../config/{org_path}/certs/{node_cert_path}.key
cert_file: ../config/{org_path}/certs/{node_cert_path}.crt
signer_cache_size: 1000
cert_cache_size: 1000
#pkcs11配置(配置项说明参考cryptogen)
pkcs11:
enabled: true
library: /usr/local/lib64/libupkcs11.so
label: HSM
password: 11111111
session_cache_size: 10
hash: "SHA256"
11.3.4. 本地启动chainmaker网络
11.3.5. sdk启用硬件加密
修改sdk配置文件sdk_config.yaml, 新增/修改pkcs11相关配置如下:
nodes:
- # 节点地址,格式为:IP:端口:连接数
node_addr: "127.0.0.1:12301"
conn_cnt: 10
enable_tls: true
trust_root_paths:
- "./testdata/crypto-config/wx-org1.chainmaker.org/ca"
- "./testdata/crypto-config/wx-org2.chainmaker.org/ca"
# TLS hostname
tls_host_name: "chainmaker.org"
#pkcs11配置(配置说明参考cryptogen)
pkcs11:
enabled: true
library: /usr/local/lib64/libupkcs11.so
label: HSM
password: 11111111
session_cache_size: 10
hash: "SHA256"
11.4. 推荐部署架构
11.4.1. 部署架构图
说明:
CA使用单独密码设备
客户端SDK使用单独密码设备
节点使用一台或多台密码设别(根据组织结构和节点部署情况而定)
11.4.2. 密码设备部署
密码设备服务商提供(详情略)