这篇文章上次修改于 226 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

对于 TSS 门限签名 CMP20 算法,每次签名都需要参与方同时在线进行 4 轮交互。对于冷钱包,可能签名的时候其它参与方不在线,这时就无法完成签名。为了避免这种情况,CMP20 作者将签名分成了两部分,分别是 pre-signing 和 signing,pre-signing 包括 3 轮交互,signing 只有 1 轮,所以 singing 不需要其它参与方在线也可完成,只需要算出自己的签名分片后发送到服务器,服务器会将所有的签名分片拼成完整的签名。

pre-signing 阶段不需要知道被签名消息是什么,signing 阶段才需要知道。这样 pre-signing 可以提前批量完成,signing 阶段拿到交易后,直接签名即可。

pre-signing 阶段包含了所有复杂的数学运算,比如 Paillier 同态加密、相关的零知识证明等。signing 阶段只有简单的签名运算,耗时较短,和普通的签名耗时几乎是一样的。

注意事项

  • 一次 pre-signing 结果只能被一次 signing 使用,否则会泄漏私钥分片。
  • pre-signing 结果不可被泄漏,否则会泄漏私钥分片。

pre-siging 细节:https://aping-dev.com/index.php/archives/520/#title-3