远程签名器后端 (GCP 云 KMS): 将操作员私钥保存在明文密钥库之外
作者: ndr-ds创建于 2026年7月14日更新于 2026年7月23日
标签securityneeds discussion
□动机
操作员私人钥匙——最重要的是用于委员会业务的admin链所有者钥匙( " linera viator read/remove/update " )、 " 资源控制政策 " 变化和 " revoke-epocts " ——目前作为 " keystore.json " 文件存在。 今天,它们被装入一台操作机,并通过秘密存储器(GCP 秘密管理器)分发。 任何可以读取密钥的人都持有密钥,平正文字存在于薄荷时间和每个标志的过程内.
目标:私钥是在不可出口的密钥服务(Cloud KMS)内所生成,在任何地方都不存在简写——不在操作机上,在秘密存储中,不在CI中. 签名通过API呼叫键服务实现;只有公用键永远离开它.
□ 当前建筑(接合处)
抽象已经存在并且是正确的形状 :
激光-碱基/弧/催化/签字人'-海峡签字人',具体采用两种方法:- `async fn sign( &self, 所有人: & AccountOwner, 值: & [u8]) - > results<AccountSignature, self: Error %>
- “ async fn 包含 key( &self, 所有人: & AccountOwner) ” - > result<bool, Self: Error- ”
linera-wallet-json/src/keystore.rs'-Keystore(持久性:File)',文件支持的执行(`Keystore的简易签字人')。linera-service/src/cli/common options.rs'-CommonCli options'显示- keystore <path>';` keystore ()'读取文件。- " linera-service/src/cli/main.rs " -- -- 装入的密钥传递给每个命令站点的
创建 客户 context(存储、钱包、密钥)'。ClientContext'通过lanna-core'Environment ' 特性,通用于签字人。
`wallet.json'不受影响:它具有链式跟踪状态,而不是关键材料。 只有键盘被替换。
□ 建议的修改
- 由GCP Cloud KMS支持的 " 标志 " 实施
新的模块/天平(建议:linera-signer-kms'或linera-wallet-json'中的特写模块),通过将 " signer " 称为 " Cloud KMS " [`不对称Sign'](https://cloud.google.com/kms/docs/Rest/v1/projects.locts.keyRings.cryptoKeys.cryptoKeyVersions/asymotrimeSign) API。
- 关键算法:
EC SIGN ED25519' (原始输入的PureEdDSA——见所支持的算法)。 这与默认的“账户保密Key:Ed25519”(linera-base/src/crypto/mod.rs'、generate from'——不带`revm'功能的便条发布二进制功能,所以Ed25519是今天钱包生成的)。 - 配置:一套KMS键版资源名称(`项目/P/位置/L/keyRings/R/cryptoKeys/K/cryptoKeyVersions/V')。 在启动时,签字人通过“Get PublicKey”获取每把钥匙的公用钥匙,生成“AccountOwner: from(AccountPublicKey:Ed25519(.))”,并绘制出支持“Contains key”/“ign”的“所有者-钥匙转换地图”。
- Auth: 应用程序默认证书(在CI/Cluster和 " gcloud auth " 当地进行工作量识别的工作)。 没有新的证书格式 。
- 设计模块如此 . . . . . . .
内容来源: linera-io/linera-protocol