Page 466 - 《软件学报》2025年第8期
P. 466
唐长虹 等: 加权门限 SM2 签名方案 3889
3.1 加权门限 SM2 签名 (方案 1)
本节提出第 1 种加权门限 SM2 签名方案, 在密钥生成时, 首先选取部分密钥 sk, 根据定义计算得到完整公私
钥对. 将部分密钥 sk 进行 WRSS 秘密共享, 参与者们得到部分密钥和完整公钥. 在签名时, 只需要部分密钥就可以
得到部分签名 s. 具体运算过程如下.
( λ )
3.1.1 密钥生成 F Gen 1 ,T,t
生成签名的公私钥. 这里对 SM2 签名算法私钥进行调整为 u = sk −1, 获得相应的签名公钥, 方便后续预签名
阶段中对 SM2 密钥求逆的这一操作. 密钥生成具体如下.
λ
1
F Gen 以安全参数 , 以及 WRSS 的重构阈值 T 和隐私阈值 t 作为输入. 将执行以下操作.
(1) 随机选择一个部分签名密钥 sk ← F q . 令签名密钥 u = sk −1, 将验证公钥设置为 vk = u×G = (sk −1)×G.
(2) 根据 WRSS 的访问结构, 生成部分密钥 sk 的份额: {[sk] i } ← Share(P,T,t, sk). 然后发送 (vk,{[sk] i }) 给各个
参与方 i.
F Sign ([sk] i ,vk, M)
3.1.2 签名生成
[sk] i , 公开输入对应的公钥 vk 和消息 M. 采用以下协议进行签名: ( R Random ,F Mult ,F Open .
)
秘密输入
● 预签名阶段
( [ ] [ ] )
1
0
利用本文介绍的函数, 得到通过预签名获得的签名相关值 r, s , s , 直接让每个参与方利用乘法函数得到
i i
本地份额乘法的结果, 从而使预签名阶段只进行两轮, 有效降低通信开销. 具体过程如下.
( ∑ )
(1) 每个参与方 i 利用随机份额生成函数 F Random 产生 γ 的份额: γ ← F Random γ = 和 k 的份额
{[ ] }
i i∈S γ i
i∈S
( ∑ )
{[k] i } i∈S ← F Random k = k i . 每个参与方得到 , 计算并广播 k i ×G.
k i
i∈S
( ) ( )
{[ ] } {[ ] }
(2) 各方利用乘法函数计算 {[δ] i } i∈S = F Mult γ ,{[k] i } i∈S 和 {[θ] i } i∈S = F Mult γ ,{[sk] i } i∈S , 方便计算签名
i i∈S i i∈S
s = sk ·k + sk ·r −r.
−1
−1
∑
( )
(3) 各方利用打开函数计算 θ = F Open {[θ] i } i∈S . 利用通过广播本地保存的 k i ×G 计算出 R = k ×G = k i ×G,
i∈S
( )
并设置曲线点 R = r x ,r y .
(4) 各方计算 e = H v (M), 得到 r = (e+r x ) mod p.
[ ] −1 [ ] −1 [ ] [ ] −1 [ ] −1
0
1
1
0
(5) 各方计算 s i = θ ·δ 和 s i = r ·θ · γ . 这里 s i 是 sk ·k 的一个份额, s i 是 sk ·r 的一个份额.
i
(6) 每个参与方 i 都保存这些值 ( [ ] [ ] ) .
0
1
r, s , s
i
i
● 签名阶段
参与者将其保存的值进行加法计算得到签名份额并广播, 之后通过打开函数得到消息 M 的签名. 每个参与者
广播最终签名, 这是一个非交互的签名阶段. 具体如下.
[ ]
[ ]
(1) 每个参与方 i 利用本地保存的值计算并广播 [s] i = s 0 + s 1 −r.
i i
( )
(2) 各方计算 , 得到 M 的签名是 σ = (r, s).
s = F Open {[s] i } i∈S
3.1.3 签名验证 F Verify (r, s, M,vk)
验证者利用公钥对生成的签名进行验证, 计算相关值后代入验证等式, 判断等式是否成立即可验证签名是否
有效. 此验证过程与 SM2 数字签名算法验证方法一致, 具体如下.
[ ] [ ]
′ ′ ′ ′ s ∈ 1, p−1 是否成立, 若不成立则
′
(1) 验证者收到消息 M 及其数字签名 (r , s ) 后, 首先检验 r ∈ 1, p−1 和
验证不通过, 否则进行下一步.
( )
′ ′ ′ ′ r ,r = [s ]G +[t]vk, 其中
′
′
′
(2) 计算 e = H v (M ) 和 t = (r + s ) mod p, 如果 t = 0, 即为验证失败; 否则, 计算
x y
vk = u×G = (sk −1)×G.
( ) ′
′
′
(3) 计算 R = e +r mod p, 判断等式 R = r 是否成立, 若等式成立则签名验证通过; 否则验证失败.
x
3.1.4 正确性分析
′ ′ ′ ′ ′
对收到的消息 M 及其数字签名 (r , s ) 进行正确性分析. 由已知的 t = (r + s ) mod p, 可得:

