Page 293 - 《软件学报》2025年第5期
P. 293

刘振亚 等: SM2  数字签名算法的两方门限计算方案框架                                                   2193


                                                  s 1  和   给 r  Alice.
                    Bob.3 计算   s 1 = d 2 (r +w 2 ) mod q , 发送
                    Alice.3 计算   s = (d 1 (s 1 +w 1 )−r) mod q , 签名即为  (r, s) .


                                           Alice                      Bob
                                           m'=m||z; 计算 e=Hash(m')


                                          随机生成或计算 w 1 ∈[1,q−1];
                                              计算 Q 1 =[w 1 ]G
                                                          Q 1 、e

                                                           随机生成或计算 w 2 ∈[l,q−1];
                                                                          −1
                                                           计算 Q=(x 1 ,y 1 )=[w 2 ]G+[d 2 ]Q 1

                                                                  计算 r=(x 1 +e) mod q

                                                                 计算 s 1 =d 2 (r+w 2 ) mod q
                                                         s 1 、r
                                           计算 s=(d 1 (s 1 +w 1 )−r) mod q

                                     图 1 基于乘法密钥拆分的两随机数两方门限计算方案框架

                    在协作计算     SM2  数字签名的过程中, Alice 和    Bob  能够通过不同的方式构造各自的随机数, 对上述门限计算
                 方案框架完成实例化, 得到不同的两方门限计算方案. 随机数的构造应满足如下安全要求.
                    (1) 随机数  w 1  至少包含  1  个独立随机生成的随机数      k 1  , 且  w 1  与  k 1  的取值分布都是  [1,q−1] 均匀分布, 使得方
                   s = d 1 d 2 (w 2 +d w 1 +r)−r  对于  Bob             w 1  , 从而无法解出
                              −1
                 程            2               来说至少包含两个未知数         d 1  和            Alice 的部分私钥   d 1  .
                             w 2  至少包含  1                                           [1,q−1] 均匀分布, 使得方
                    (2) 随机数             个独立随机生成的随机数         k 2  , 且  w 2  与  k 2  的取值分布都是
                   s 1 = d 2 (r +w 2 ) 对于                     w 2  , 从而无法解出  Bob
                 程                Alice 来说至少包含两个未知数       d 2  和                的部分私钥    d 2  .
                    本文基于随机数      k 1  和  k 2  , 结合签名私钥  d  , Alice 和  Bob  的部分私钥   d 1  、  d 2  以及它们的逆  d −1   、  d −1  , 进行加
                                                                                           1    2
                 或乘的组合, 实现签名随机数的不同构造. 例如,            w i (i = 1,2) 可以是   k i  , 这是一个独立随机生成的随机数; 可以是  d i k i  ,
                                                           −1
                 这是部分私钥与独立随机生成随机数的乘积; 可以是                 d k i  , 这是部分私钥的逆与独立随机生成随机数的乘积; 也
                                                           i
                                 −1
                                           −1
                 可以是  1+d i k i 1+d k i d i +k i d +k i  等.
                                    ,
                                          ,
                             ,
                                           i
                                 i
                    在具体的实例化方案中,         s 按照上文相应的步骤计算即可.
                    进一步,   w i  还可以使用签名私钥     d 进行构造. 虽然   Alice 和  Bob  无法获取签名私钥   d , 但是可以通过一定的形
                 式转换, 使得   Alice 和  Bob  在不知道  d  的情况下, 基于  P 和  G  完成签名随机数构造. 即随机数   可进一步变化为如
                                                                                         k
                 下等价形式:

                                               −1 −1
                                         −1
                                                                  −1 −1
                                  k = w 2 +d w 1 = d d (d 1 d 2 w 2 +d 1 w 1 ) = ((d d −1)+1)(d 1 d 2 w 2 +d 1 w 1 )
                                         2     1  2               1  2
                                   = (1+d)(d 1 d 2 w 2 +d 1 w 1 ) = (1+d)d 1 d 2 w 2 +(1+d)d 1 w 1 .
                                  ′            ′                   ′   ′
                    令  (1+d)d 2 w 2 = w  ,   (1+d)d 1 w 1 = w  , 使得签名随机数  k = d 1 w +w  .
                                  2            1                   2   1
                    此时, Alice 和  Bob  能够通过如下步骤协作计算椭圆曲线点           Q = [k]G .
                    Alice.1 随机生成或计算    w 1 ∈ [1,q−1] , 计算   Q 1 = [d 1 ](P+G) Q 2 = [d 1 w 1 ](P+G) , 发送   Q 1  和  Q 2  给  Bob.
                                                                   ,
                    Bob.1 随机生成或计算     w 2 ∈ [1,q−1] , 计算  Q = [d 2 w 2 ]Q 1 + Q 2  .
                    虽然上述椭圆曲线点        Q 的协作计算过程相较于不使用公钥             P 的计算过程有所不同, 但签名随机数的构造相
                               −1
                                        s
                 同, 都是  k = w 2 +d w 1  . 因此,    仍然按照上文相应的步骤计算即可.
                               2
                          ′                        ′                             2                   2
                    由于  w = (1+d)d i w i  , 根据  w i  的取值,   w  可以相应取值为:   (1+d)d i k i  ,   (1+d)d k i  ,   (1+d)k i  ,   (1+d)(d i +d k i )  ,
                          i                        i                             i                   i
   288   289   290   291   292   293   294   295   296   297   298