Web3的私钥托管
最后更新于
最后更新于
场景描述:
以太坊是流行的 Web3 核心基础设施,以太坊账户包括一个公私钥对,从公钥可以派生出以太坊地址,随意分发,而私钥则需要安全的存储和管理起来,主要挑战是如何安全地管理私钥。客户可以选择自己生成公私钥,或选择托管服务,Amazon KMS 托管服务可以用于托管以太坊私钥。
实现方案:
基于 Amazon KMS 的以太坊账号示例,参考 Github-AWS-Samples-kms-ethereum-accounts 。该示例代码说明了如何在 KMS 上托管以太坊账户(私钥/公钥)以及如何使用 KMS 在以太坊交易上创建有效的签名。架构图如下所示:
以太坊使用 ECDSA(椭圆曲线数字签名算法)标准 secp256k1 算法,由 Amazon KMS 密钥规格 ECC_SECG_P256K1 提供支持。使用 Amazon KMS 创建非对称密钥,选择 “登录并验证”,密钥规格选择 “ECC_SECG_P256K1”。
创建完成后,通过 Public key 可以转换得出以太坊地址,通过 KMS 可以进行以太坊交易签名,包括 EIP-1559 ,具体细节和代码实现可参考系列博客 Use Key Management Service (AWS KMS) to securely manage Ethereum accounts 。
Public key 转换以太坊地址代码示例:
加密资产的私钥签名交易时通过调用 KMS 的 sign 接口来实现,代码示例: