KMS - 密钥管理系统

简介

Tendermint KMS是一个密钥管理服务,可将密钥管理与Tendermint节点分开。此外它还具有其他优势,例如:

  • 提高安全和风险管理策略
  • 统一的API和对各种HSM(硬件安全模块)的支持
  • 双签保护(基于软件或硬件)

构建

可以在这里找到详细的构建说明

提示

在编译KMS的时候,确保已启用yubihsm功能:

cargo install tmkms --features=yubihsm --version=0.10.0-beta2

初始化

为IRISHub初始化配置文件

tmkms init -n irishub /path/to/kms/home

配置

如果要启用KMS,首先需要在<iris-home>/config/config.toml文件中编辑priv_validator_laddr。例如:

# TCP or UNIX socket address for Tendermint to listen on for
# connections from an external PrivValidator process
priv_validator_laddr = "localhost:26658"

然后,你需要下载priv_validator_state.json示例并按照<iris-home>/data/priv_validator_state.json修改所有字段值。

接下来,你只要只需要按如下方式编辑配置文件/path/to/kms/home/tmkms.toml

  • 配置state_file为上一步完成的priv_validator_state.json
  • 将你的Yubihsm密码写入文件yubihsm-password.txt并将password_file设置为它。
  • 编辑addr指向你的iris实例(注意:无需指定连接ID,仅让它保持格式如:tcp://localhost:26658)。
  • 调整chain_id 以匹配你的<iris-home>/config/genesis.json中的设置。
  • 编辑auth以授权访问你的Yubihsm。
  • 编辑keys确定你将使用的pubkey。
  • 编辑protocol_version为v0.34。

然后启动 tmkms

tmkms start -c /path/to/kms/home/tmkms.toml

使用YubiHSM

有关如何使用YubiHSM2设置KMS的更多信息,请参阅这里

如果要导入已存在的IRIShub private_key,可以:

tmkms yubihsm keys import <iris_home>/config/priv_validator.json -i <id> -t json -c /path/to/kms/home/tmkms.toml