code ecdsa 签名算法特点结合Paillier
好的,我们可以通过详细推导来解释为什么 P1 和 P2 能够在不暴露各自私钥份额的情况下完成 ECDSA 签名。
ECDSA 签名算法回顾
-
密钥生成:
-
签名生成(这里,与下文 Paillier 推论一致):
- 选择随机数 k
- 计算 R=kG,其中 R=(Rx,Ry)
- 计算 r=Rxmodq
- 计算消息哈希 h=H(m)
- 计算 s=k−1(h+xr)modq
- 签名为 (r,s)
多方计算 ECDSA 签名推导
私钥分割
假设私钥 x 被分割成两部分,分别由 P1 和 P2 持有:
- P1 持有 x1
- P2 持有 x2
- 满足 x=x1+x2
随机数生成
P1 和 P2 各自生成一个随机数:
- P1 生成 k1
- P2 生成 k2
计算相应的公钥点:
- P1 计算 R1=k1G
- P2 计算 R2=k2G