Page 334 - 《软件学报》2026年第6期
P. 334

高睿 等: 基于国密    SM9  的密钥隔离签名                                                      2653


                                               w = e(V i ,P t ID,i  ·ψ(S ID,i ))·e(S ID,i ,P 2 ) h
                                                ′
                                                2
                                                       2
                                                          ρ
                                                    l
                                                = e(J ,P t ID,i  · P )·e(S ID,i ,P 2 ) h
                                                    i  2  2
                                                        ρ
                                                    (r−h)· t ID,i +ρ  ρ
                                                = e(P     ,P t ID,i  · P )·e(S ID,i ,P 2 ) h
                                                    1       2   2
                                                            ρ            h·ρ
                                                        (r−h)· t ID,i +ρ ·(t ID,i +ρ)
                                                = e(P 1 ,P 2 )    ·e(P 1 ,P 2 )
                                                = e(P 1 ,P 2 ) (r−h)·ρ  ·e(P 1 ,P 2 ) h·ρ
                                                = e(P 1 ,P 2 ) r·ρ
                                                    ρ
                                                = e(P ,P 2 ) r
                                                    1
                                                = e(S ID,i ,P 2 ) r
                                                = w 2 ,
                 因此合法生成的签名均可通过验签算法. 证毕.
                  5   安全性证明
                    定理  2. 设密钥隔离的     SM9  签名算法中的哈希函数        H 1 、H 2 、H 3  是随机预言机, 如果  q-SDH  假设和  KEA  假
                 设成立, 则密钥隔离的      SM9  签名算法是安全的.
                    证明: 假设在    ID-KI-UF  安全模型中, 存在   PPT                            H i (i = 1,2,3) q E  次固定私
                                                                                              ,
                                                        攻击者
                                                              A, 在询问
                                                                      q H i   次随机预言机
                                                                                      ϵ
                 钥生成预言机,     q T  次临时私钥生成预言机和      q S  次签名预言机之后, 能以不可忽略的优势   伪造签名, 则可构造一
                                                                             a 2
                                                                                   a q
                 个  PPT  模拟器  B  以不可忽略的优势攻破      q-SDH  问题.  q+2 个元素  (P,Q,Q ,Q ,...,Q ) ∈ G 1 ×G q+1  是一个  q-SDH
                                                                           a
                                                                                           2
                                               1
                 问题实例.   B  需要找到一个二元组      (c,P c+a ), 其中  c ∈ Z q .
                    ● 系统建立阶段:     B 首先执行以下操作, 隐式地将系统主私钥            α 设置为  a.
                               ∗                                     ∗
                    (1) 随机选择   j ∈ [1,q], 从   c ∈ Z q  中随机选取   q 个两两不同的数   x , x 1 , x 2 ,..., x j ∗ −1 , x j ∗ +1 ,..., x q  并定义多项式   f(z) =
                   q        q−1
                  ∏         ∑
                                 j
                     (z+ x j ) =  c j z mod q, 其中   c i  为多项式   f(z) 的系数.
                 j=1,j,j ∗  j=0                    q−1 c j z j
                                                   ∑
                    (2) 计算群   G 2  的生成元  P 2 = Q  f(a)  = Q a j  j=0  , 计算群   G 1  的生成元  P 1 = ψ(P 2 ) = P  f(a)  , 计算群   G 2  的元素  P Pub =

                          q−1
                          ∑  c j z j
                 Q a f(a)  = Q a j+1  j=0   作为主公钥.
                                                         q−2
                                                   f(z)  ∑                a
                                        ∗    f j (z) =  =    j          P  a+x j  = P a f j (a)  j ∈ [1,q]\ j ,
                                                                                                       ∗
                    (3) 对于任意的   j ∈ [1,q]\ j , 定义          d j z mod p, 计算       . 因此, 对于任意的
                                                                         1
                                                   z+ x j
                               a                         i=0
                 二元组  (x j ,V j = P  a+x j  ) 是可以被计算的.
                              1
                    (4) 运行初始化设置的其余算法, 输出公开参数             pp = {bp,H 1 ,H 2 ,H 3 ,P Pub ,B}.
                    ● 哈希询问阶段:     A 询问预言机    H 1 、  H 2  和  H 3 .
                                                                                       list
                    (1) H 1 询问: 在任何时间   A 都能询问预言机     H 1 , 为了回复询问,   B  维护一个元组列表     H , 列表中存储二元组
                                                                                       1
                 (ID, x). 当  A 选择标识  ID j  问询预言机  H 1  时,  B  按以下流程回复: 如果被问询的标识    ID j  已经存在于列表   H list  中,
                                                                                                    1
                                                                      ∗
                                                                                       ∗
                                                                                  ∗
                                                j
                 那么   B  回复相应的  . 否则, 记  ID j  为第   个新标识的问询. 如果    j = j , 令  H 1 (ID j ) = x , 将  x  发送给  A 并在  H  list  中
                                x j
                                                                                                     1
                               ∗        ∗                              list
                 添加二元组    (ID j , x ). 如果   j , j , 令   H 1 (ID j ) = x j , 将   x j  发送给   A 并在  H   中添加二元组  (ID j , x j ).
                                                                       2
                                                                                       list
                    (2) H 2 询问: 在任何时间   A 都能询问预言机     H 2 , 为了回复询问,   B  维护一个元组列表     H , 列表中存储三元组
                                                                                       2
                 (ID,i,y). 当  A 选择标识和问询时间段    (ID j ,i j ) 问询预言机  H 2  时,   B  按以下流程回复: 如果被问询的  (ID j ,i j ) 已经存
                                                              $                                      list
                          list
                 在于列表   H   中, 那么  B  回复相应的  . 否则, 随机选取     y j ←Z p , 令  H 2 (ID j ||i j ) = y j , 并且将  y j  发送给  A 并在  H   中
                                             y j
                          2                                                                          2
                 添加三元组    (ID j ,i j ,y j ).
                                                                                       list
                    (3) H 3 询问: 在任何时间   A 都能询问预言机     H 3 , 为了回复询问,   B  维护一个元组列表     H , 列表中存储六元组
                                                                                       3
                 (ID, M,i,w 1 ,w 2 ,z). 当  A 选择  (ID j , M j ,i j ,w 1,j ,w 2,j ) 问询预言机  H 3  时,  B  按以下流程回复: 如果被问询的  (ID j , M j ,i j ,
                                                                           $
                 w 1,j ,w 2,j ) 已经存在于列表  H list   中, 那么  B  回复相应的  . 否则, 随机选取  z j ←Z p , 令   H 3 (ID j ||i j ) = y j , 并且将  z j  发送
                                                          z j
                                      3
   329   330   331   332   333   334   335   336   337   338   339