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) .
   295   296   297   298   299   300   301   302   303   304   305