Page 300 - 《软件学报》2025年第5期
P. 300
2200 软件学报 2025 年第 36 卷第 5 期
[ −1 −1 ]
(6) 签名验证公钥 P = d d −1 G .
1 2
由于 ECDLP 和哈希函数的安全性, Adv 无法从 Q 1 ,...,Q γ+1 、 P 和 中获取任何信息. Adv 试图从方程组 1:
e
s 1 −rd 2 −w γ+1 d 2 = 0
s 2 −d 2 w γ+2 = 0 中解出 d 2 和 w γ+1 ,...,w 2γ+1 , 并从方程 2: s− s 1 d 1 −···− s γ+1 w γ d 1 +r = 0 中解出 d 1 和 w 1 ,w 2 ,...,w γ .
.
.
.
根据上述安全性分析可知, Alice 和 Bob 无法分别求解方程组 1 和方程 2, 且 Adv 所掌握的信息少于 Alice 和 Bob.
因此, Adv 无法从方程组 1 和方程 2 中解出 d 1 、 d 2 、 w 1 ,...,w 2γ+1 . 进一步, 根据签名随机数构造的安全要求, w 1 ,...,
w 2γ+1 总是包含至少 1 个独立随机生成的随机数, 因此在具体的两方门限计算方案中, 敌手 Adv 也无法求解所得的
方程 (组). 综上, Adv 无法从协作签名的交互过程中获取任何 Alice 和 Bob 的私密信息, 从而无法获取完整的签名
私钥或任一参与方的部分私钥.
3.2 基于加法密钥拆分的门限计算框架
3.2.1 密钥生成
根据第 2.1 节的分析, 本文签名私钥 d 的表达式对 (1+d) −1 进行加法拆分, 使得 Alice 和 Bob 分别持有部分私
,
钥 d 1 和 d 2 d 、 d 1 、 d 2 满足如下关系:
−1
(1+d) = d 1 +d 2 ,
[ ]
−1 −1
由上式可知 d = (d 1 +d 2 ) −1 , 即公钥 P = [d]G = (d 1 +d 2 ) G −G .
为了实现上述加法密钥拆分, Alice 和 Bob 使用 MtA 协议将乘法份额分享转变成加法份额分享, 并通过如下
步骤实现密钥生成.
(1) Alice 和 Bob 实现第 3.1.1 节中基于乘法密钥拆分的密钥生成, 分别得到乘法分享份额 d 和 d .
′
′
1 2
(2) Alice 和 Bob 共同运行 MtA 协议, 分别以 d 和 d 作为 MtA 的输入, Alice 得到输出 d 1 , Bob 得到输出 d 2 ,
′
′
1
2
′
′
满足 d d = d 1 +d 2 . 完成加法密钥拆分.
1 2
上述密钥生成过程应满足如下安全要求: 任一参与方无法获得完整签名私钥.
安全性说明如下. 上述密钥生成过程由乘法密钥拆分和 MtA 协议组成, 由于第 3.1.3 节中已说明了乘法密钥
拆分的安全性, 且 MtA 协议是安全的, 因此上述密钥生成过程也是安全.
3.2.2 签名生成
如第 3.1.2 节所描述, Alice 和 Bob 需要共同构造签名随机数 k, 使得任意参与方无法获取完整的签名随机数.
已知:
−1
s = (1+d) (k +r)−r = (d 1 +d 2 )(k +r)−r = (d 1 +d 2 )k +d 1 r +d 2 r −r.
为了实现 s 的协作计算, Bob 应发送 d 2 r 给 Alice. 由于 r 是公开信息, 为了防止 Alice 计算得到 Bob 的私钥 d 2 ,
Bob 应构造一个随机数 w 2 来保护自己的部分私钥, 于是 Bob 计算 s 1 = d 2 (r +w 2 ) 并发送给 Alice. Alice 接收到 s 1
w 1 来保护自己的部分私钥, 于是 Alice 计算:
后也应构造一个随机数
s = d 1 (r +w 1 )+ s 1 −r = d 1 r +d 1 w 1 +d 2 r +d 2 w 2 −r
−1
= (d 1 +d 2 )((d 1 +d 2 ) (d 1 w 1 +d 2 w 2 )+r)−r,
−1
这是一个有效的 SM2 签名, 签名随机数 k = (d 1 +d 2 ) (d 1 w 1 +d 2 w 2 ) .
综上, Alice 和 Bob 协作计算 SM2 签名的过程如下, 如图 3 所示.
Alice.1 置 m = m||z , 计算 e = Hash(m ) .
′
′
[ ]
Alice.2 随机生成或计算 w 1 ∈ 1,q−1 , 计算 Q 1 = [d 1 w 1 ](P+G) , 发送 Q 1 和 e 给 Bob.
[ ]
Bob.1 随机生成或计算 w 2 ∈ 1,q−1 , 计算 Q = (x 1 ,y 1 ) = [d 2 w 2 ](P+G)+ Q 1 .
Bob.2 计算 r = (x 1 +e) mod q .
Bob.3 计算 s 1 = d 2 (r +w 2 ) mod q , 发送 s 1 和 给 r Alice.
Alice.3 计算 s = (d 1 (r +w 1 )+ s 1 −r) mod q , 签名对即为 (r, s) .