Page 290 - 《软件学报》2025年第5期
P. 290
2190 软件学报 2025 年第 36 卷第 5 期
计算; 同年, 尚铭等人 [12] 基于 Shamir 秘密分享的思想, 分别针对存在可信中心和不存在可信中心的情况, 设计了门
限的 SM2 签名算法, 但是效率较低; 张永强等人 [13] 在 2017 年提出了一个具有盲签名特性的 SM2 两方协作签名方
案. 多方安全计算等技术也可以用于设计 SM2 签名算法门限方案. 2015 年, Jie 等人 [14] 基于秘密分享和多方安全
计算技术, 提出了一种无可信中心的 SM2 门限签名方案, 该方案相较于使用相同秘密分享技术的 ECDSA 门限签
名方案拥有更高的效率.
2 基础知识
本文所提方法主要基于 SM2 签名算法 [5] , MtA 协议 [15] 也略有涉及, 下面就相关概念和基本知识予以介绍.
2.1 SM2 签名算法
SM2 签名算法是基于椭圆曲线密码的数字签名算法, 椭圆曲线 E 参数包括 a 、 b 、 p 、 q 和 G E 是定义在
:
2 3
,
有限域 F p 上的椭圆曲线, 曲线上的点 (x,y) 满足 y ≡ (x +ax+b) mod p G = (x G ,y G ) 是曲线上 q 阶的基点.
(r, s) , 签名者 Signer 应执行以下运算步骤.
设待签名的消息为 m , 为了获取消息 m 的数字签名
● 密钥生成:
(1) 随机生成 d ∈ [1,q−1] .
(2) 计算 P = [d]G , 将 P 作为公钥公开, d 作为私钥保存.
● 签名生成:
m = m||z z 由用户 Signer 标识和 SM2 椭圆曲线的部分参数共同组成.
′
(1) 置 ,
′
(2) 计算消息摘 e = Hash(m ) .
(3) 随机生成 k ∈ [1,q−1] .
(4) 计算椭圆曲线点 (x 1 ,y 1 ) = [k]G .
(5) 计算 r = (e+ x 1 ) mod q , 若 r = 0 或 r +k = q 则返回步骤 (3).
−1 s = 0 则返回步骤
(6) 计算 s = (1+d) (k −rd) mod q , 若 (3), 否则签名结果即为 (r, s) .
验证者 Verifier 收到签名 (r, s) 后, 通过如下步骤验证签名.
● 签名验证:
′
′
(1) 检查 r 和 s 是否满足 r, s ∈ [1,q−1] ; 计算 (x ,y ) = [s]G +(r + s)P .
1 1
r
′
′ ′ ′ r 和 是否相等, 若二者相等则签名验证通过, 否则验证失败.
(2) 计算 r = (Hash(m )+ x ) mod q ; 判断
1
签名过程中, s 的计算可以等效为如下形式:
−1
−1
−1
s = (1+d) (k −rd) = (1+d) (k −rd +r −r) = (1+d) (k −(1+d)r +r) = (1+d) (k +r)−r,
−1
由上式可知, 签名私钥 d 的表达式 (1+d) −1 在签名计算中可被整体视为一个变量. 因此, 本文对 (1+d) −1 进行拆分,
避免求逆运算, 并记椭圆曲线点 [k]G 为 Q .
2.2 MtA 协议
MtA 协议 [15] 能够将两方乘法份额分享转变成加法份额分享: Alice 和 Bob 分别持有乘法份额 z A 和 z B , 满足
z = z A z B . Alice 和 Bob 将 z A 和 z B 作为 MtA 协议的输入, 分别得到输出 z 和 z , 满足 z = z A z B = z +z . 该协议可以
′
′
′
′
B
A
B
A
使用加法同态加密或不经意传输协议来实现.
2.2.1 基于加法同态密码算法的 MtA 协议
加法同态密码算法定义了 2 个空间, 3 个算法和 2 个运算. 2 个空间包括明文空间 M 和密文空间 E ; 3 个算法
包括密钥生成算法 KGen 、加密算法 Enc pk 和解密算法 Dec sk : 密钥生成算法 KGen 用于生成一对公私钥 (pk, sk) , 加
密算法 Enc pk 是 M → E 的概率性算法, 解密算法 Dec sk 是 E → M 的确定性算法; 2 个运算分别是 ⊕ : E×E → E 运
算和 ⊙ : Z×E → E 运算, 定义如下:
{
m 1 +m 2 = Dec sk (Enc pk (m 1 )⊕ Enc pk (m 2 ))
.
k ·m = Dec sk (k ⊙ Enc pk (m))