Page 467 - 《软件学报》2025年第8期
P. 467
3890 软件学报 2025 年第 36 卷第 8 期
( )
′
′
′
r ,r = [s ]G +[t]vk = [s ]G +[tu]G = [s ]G +[(r + s )u]G = [(1+u) s +ur ]G
′
′
′
′
′
′
x y
{ [ ] }
−1 ′ ′ ′ ′ ′ ′
= (1+ sk −1) sk ·(k +r )−r +(sk −1)r G = [(k +r )− sk ·r +(sk −1)r ]G = k ×G .
( )
r x ,r y = k ×G
R = r 是否成立, 来判断签名验证是否通过.
′
因此可以通过检验
3.2 加权门限 SM2 签名 (方案 2)
本节给出第 2 种加权门限 SM2 签名具体构造, 相较于方案 1, 此方案在最开始的密钥生成阶段求得 sk 的逆
[ ] [ ]
0
1
元, 计算得到签名公钥, 从而在预签名阶段只需要调用一次乘法函数即可得到 θ, 并且计算部分签名 s 和 s 不
i i
需要再计算 θ 的逆, 这种方法更加高效, 通信开销减少. 方案具体构造如下.
( λ )
3.2.1 密钥生成 F Gen 1 ,T,t
生成签名的公私钥. 这里对 SM2 签名算法私钥进行调整为 v = sk −1, 获得相应的签名公钥, 方便后续预签
−1
名阶段中对 SM2 密钥求逆的这一操作. 密钥生成具体如下.
λ
F Gen 以安全参数 1 以及 WRSS 的重构阈值 T 和隐私阈值 t 作为输入. 然后, 它将执行以下操作.
−1 −1 vk =
(1) 随机选择一个部分密钥 sk ← F q . 然后计算 sk , 令签名私钥 v = sk −1, 将对应的验证公钥设置为
( )
−1
v×G = sk −1 ×G.
(2) 根据 WRSS 的访问结构, 生成部分密钥 sk 的份额: {[sk] i } ← Share(P,T,t, sk). 然后发送 (vk,{[sk] i }) 给各个
参与方 i.
3.2.2 签名生成 F Sign ([sk] i ,vk, M)
)
秘密输入 [sk] i , 公开输入对应的公钥 vk 和消息 M. 采用以下协议进行签名: ( R Random ,F Mult ,F Open .
● 预签名阶段
利用本文介绍的函数, 得到通过预签名获得的签名相关值. 直接让每个参与方利用乘法函数得到本地份额乘
法的结果, 从而使预签名阶段只进行两轮, 有效降低通信开销. 具体过程如下.
( ∑ )
{[ ] }
(1) 每个参与方 i 利用随机份额生成函数 F Random 产生 γ 的份额: γ ← F Random γ = γ i 和 k 的份额:
i i∈S i∈S
( ∑ )
{[k] i } i∈S ← F Random k = k i . 每个参与方得到 , 计算并广播 k i ×G.
k i
i∈S
( )
{[ ] }
(2) 各方利用乘法函数计算出 {[θ] i } i∈S = F Mult γ ,{[sk] i } i∈S .
i i∈S
( ) ∑
{[ ] }
(3) 各方利用打开函数计算 γ = F Open γ . 利用通过广播本地保存的 k i ×G 计算出 R = k ×G = k i ×G,
i i∈S
i∈S
( )
并设置曲线点 R = r x ,r y .
(4) 计算 e = H v (M), 得到 r = (e+r x ) mod p.
[ ] [ ] [ ] [ ]
−1
−1
(5) 各方计算 s 0 = γ ·θ ·k 和 s 1 = γ ·θ ·r. 这里的 s 0 是 sk ·k 的一个份额, s 1 是 sk ·r 的一个份额.
i i i i
(6) 每个参与方 ( [ ] [ ] ) .
0
1
r, s , s
i 都保存这些值
i i
● 签名阶段
每个参与者将保存的值通过加法计算, 得到部分签名份额并广播, 然后通过打开函数得到消息 M 的签名. 具
体如下.
(1) 每个参与方 i 本地计算 [s] i = s + s 1 i −r.
[ ] [ ]
0
i
( )
(2) 各方计算 s = F Open {[s] i } i∈S , 消息 M 的签名是 σ = (r, s).
3.2.3 签名验证 F Verify (r, s, M,vk)
此签名方案的验证过程与第 3.1.3 节中的方案 1 验证过程类似. 但值得注意的是, 两者验证阶段的第 (2) 步有
)
所不同, 本节方案 2 签名的密钥为 v = sk −1, 故而在计算椭圆曲线点 ( r x ,r y = [s ]G +[t]vk 时, 其中的签名公钥
−1
′
′
′
( )
−1
应为: vk = v×G = sk −1 ×G.
3.2.4 正确性分析
′ ′ ′ ′ ′
对收到的消息 M 及其数字签名 (r , s ) 进行正确性分析. 由已知的 t = (r + s ) mod p, 可得:

