远程签名器后端 (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'不受影响:它具有链式跟踪状态,而不是关键材料。 只有键盘被替换。

□ 建议的修改

  1. 由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