Lindell 2017 论文中的 2/2 签名方案,并确保正确地描述数据签名过程。
2/2 签名方案的步骤
1. 密钥生成
两个参与者 P1 和 P2 共同生成一个公私钥对 (PK,SK),并将私钥 SK 分为两部分 sk1 和 sk2。具体步骤如下:
1. 每个参与者生成自己的私钥部分:
- P1 生成 sk1
- P2 生成 sk2
2. 公钥 PK 计算为:
PK=(sk1+sk2)⋅G
其中 G 是椭圆曲线上的基点。
2. 签名生成
两个参与者 P1 和 P2 共同生成签名 (R,s)。具体步骤如下:
1. 生成随机数 k 并计算 R:
R=k⋅G
2. 计算哈希值:
e=H(m∥R)
其中 m 是待签名的消息,H 是哈希函数。
3. 每个参与者计算部分签名:
- P1 计算部分签名 s1:
s1=k+e⋅sk1
- P2 计算部分签名 s2:
s2=k+e⋅sk2
4. 合并部分签名生成最终签名 s:
s=s1+s2
由于 s1 和 s2 分别由 P1 和 P2 计算,最终签名 s 为:
s=(k+e⋅sk1)+(k+e⋅sk2)
s=2k+e⋅(sk1+sk2)
3. 签名验证
使用公钥 PK 验证签名 (R,s)。具体步骤如下:
1. 计算哈希值:
e=H(m∥R)
2. 验证等式是否成立:
s⋅G=R+e⋅PK
验证推导
我们知道签名 (R,s) 满足:
s=2k+e⋅(sk1+sk2)
因此:
s⋅G=(2k+e⋅(sk1+sk2))⋅G
s⋅G=2k⋅G+e⋅(sk1+sk2)⋅G
由于 R=k⋅G,所以 2R=2k⋅G,并且 PK=(sk1+sk2)⋅G,因此:
s⋅G=2R+e⋅PK
这确保了签名的正确性和完整性。签名验证过程中的等式成立,表明签名 (R,s) 是有效的。
Lindell 2017 论文中的 2/2 签名方案通过分布式密钥生成和签名生成,确保签名的生成需要两个参与者的共同合作。其安全性证明基于离散对数假设和随机预言模型,确保抗篡改性和隐私性。具体的证明推导展示了签名生成和验证的正确性,确保了方案的安全性和实用性。