跳到主要内容

私钥生成




Transaction signature


上图所示是我们 2-3 默认方案的私钥生成时序图,需要 3 个参与方,分别为:User、Hot Server、Cold Server。整个 Keygen 生命周期携带唯一的 Session ID 标识单轮次信息。消息传递通过消息队列,采用了端到端加密,且通过 Token 鉴权确保了各方只能获取自己 Channel 的消息。Hot Server、Cold Server 是常驻服务,通过消息订阅可以随时接收信息。



Keygen 具体步骤如下:

  1. 用户向服务端用户中心发起 Keygen 请求,获取 Session ID。

  2. 服务端响应请求,生成 Keygen Session ID 并返回给用户。

  3. 用户端向消息队列发送 Keygen 启动的广播消息,并携带 Session ID。同时,本地异步启动 Keygen 流程。

  4. 消息队列收到发送消息请求,解析用户 Token,并到用户中心鉴权是否合法。

  5. 如果鉴权通过,说明是正常用户请求,反之是直接拒绝返回。

  6. 消息队列将 Keygen 启动的消息广播到 Hot Server、Cold Server 订阅的 Channel,它们收到消息的同时,也相继异步启动 Keygen 流程。

  7. 消息队列返回广播成功的响应,用户端启动 MPC 协议交互流程。反之,Keygen 异常。

  8. 通过消息队列,User、Hot Server、Cold Server 进行多次 MPC 信息交换。最后 Hot Server 将生成的私钥碎片 TEE 加密之后存入 DB。Cold Server 则 TEE 加密之后转交可信第三方冷库存储。Hot Server、Cold Server 分别广播 Keygen 结束信号。

  9. 用户端需要确保收到 Hot Server、Cold Server 的结束信号,并且本地私钥也创建完毕。

  10. 用户端采用 AES-256 将私钥碎片加密存储在本地。

  11. 用户端将私钥创建结果以及私钥版本信息告诉服务端用户中心。

  12. 服务端记录用户相应设备的私钥版本号,将账户设置为生效状态,返回成功响应,整个 Keygen 流程结束。