Page 351 - 《软件学报》2026年第4期
P. 351

1792                                                       软件学报  2026  年第  37  卷第  4  期



                               sk π
                    2) 计算  I = pk .
                               a
                              *         k        k
                    3) 选取  k ∈ Z , 计算   L π = g  和  R π = pk , 计算  c π+1 = H (M ∥ pk 1 ||pk 2 ||...||pk n ∥ pk a ∥ I ∥ L π ∥ R π ).
                              q                  a
                                                              *          q i  c i  q i c i
                    4) 对于  i ∈ {π+1,...,n,1,...,π−1}, 依次随机选取  q i ∈ Z , 计算  L i = g pk ,  R i = pk a I ,  c i+1 = H(M ∥ pk 1 ||pk 2 ||...
                                                              q            i
                 ||pk n ∥ pk a ∥ I ∥ L i ∥ R i ), 令  c 1 = c n+1 .
                    5) 计算  q π = k −c π sk π mod q.
                    6) 生成环签名    σ = (S,I,c 1 ,q 1 ,...,q n ).
                    (4) 环签名验证算法     TRS.Ver
                    验证者获取环签名       σ, 消息   M  和追踪者公钥   pk a  后, 对  σ 进行验证, 验证过程如下.
                                     ∗
                    1) 检查  c 1 ,q 1 ,...,q n ∈ Z  是否成立.
                                     q
                                                                   (                             )
                                                                                                 ′
                                                                                             ′
                                                     ′
                                            ′
                                                  c i
                                                          q i c i
                                                q i
                    2) 对于  i ∈ {1,...,n}, 依次计算  L = g pk , R = pk a I , c ′  = H M ∥ pk 1 ∥ pk 2 ∥ ... ∥ pk n ∥ pk a ∥ I ∥ L ∥ R .
                                            i     i  i        i+1                            i   i
                    3) 检查  c 1 = c ′   是否成立, 若成立, 则验证通过, 算法输出    1; 否则, 验证失败, 算法输出     0.
                              n+1
                    (5) 可链接性判断算法      TRS.Link
                                         I
                                             I
                    验证者获取环签名       σ 中的  , 若   在历史密钥镜像列表       L 中出现过, 则算法输出      1, 拒绝此签名; 否则, 算法输
                 出  0, 并将   I  加入  L 中.
                    (6) 签名者身份追踪算法      TRS.Trace
                                                                                         sk a  I = pk , 则输
                                                                                                  sk a
                    追踪者获取环签名       σ, 对于环签名成员公钥        pk i ∈ S , 追踪者使用追踪者私钥    sk a , 计算   pk , 若   i
                                                                                         i
                            pk i .
                 出签名者公钥
                  5.1.2    安全性证明
                    (1) 不可伪造性证明
                    定理  4. 在随机预言机模型下, 若      G 中的离散对数问题是困难的, 则方案满足不可伪造性.
                    证明: 假设   A 为可有效伪造环签名的概率多项式时间敌手, 则仿真器                  S  可利用  A 的能力, 构造解决离散对数
                                                     x
                 问题的算法  .                      (g,Q = g ) 交给算法   B. 敌手  A 与算法  B  之间的实验定义如下.
                          B S  将离散对数问题实例
                                                       ( )
                                                        λ
                    初始化:   B  运行初始化算法     pp ← TRS.SetUp 1 , 并将公开参数   pp = {G,q,g, pk a }  交给敌手  A. 算法  B  随机选
                                      *   *  *    *             *            P = Q (i ∈ {1,2,...,n}) 作为每个环
                                                                              *
                                                                                  x i
                 取  n 个不同的环签名成员      A = {A ,A ,...,A }, 随机生成   x i ∈ Z (1 ⩽ i ⩽ n), 计算
                                          1  2    n            q              i
                                       *   *  *    *             *                       *
                 签名成员对应的公钥, 记为        S = {P ,P ,...,P }, 仿真器S  设置  S   为   A 的目标公钥集合, 并将  S   发送给  A.
                                           1  2    n
                    查询:   B  控制随机预言机    H, O R , O C  和  O S , A 查询上述预言机. 查询与应答过程如下.
                    1)  H 查询:   B 维护一个初始为空的列表     LIST H . 对于查询  δ, B 查询其之前是否被查询过, 若之前被查询过, 则在
                                                                              *
                 LIST H  中找到对应的  τ = H(δ), 并返回  τ, 若之前未被查询过, 则   B 随机选取    τ ∈ Z , 在  LIST H  中添加  {δ,τ}, 并返回  τ.
                                                                              q
                                                                                                   *
                    2)  O R  查询:  B  维护一个初始为空的列表    LIST R . A查询预言机O R , 注册新用户   A i . B  查询  A i  是否属于  A , 若是,
                 则不响应查询; 否则,     B  查询   A i  是否被查询过, 若被查询过, 在   LIST R  中找到对应的公钥    pk i  并返回  pk i ; 否则,  B  选
                        *               sk i
                 取   sk i ∈ Z , 计算公钥为   pk i = g , 在  LIST R  中添加  {A i , sk i , pk i }, 并返回  pk i .
                        q
                    3)  O S  查询:  B  维护一个初始为空的列表    LIST S . A 将环签名成员公钥集合     S = {pk 1 , pk 2 ,..., pk n }、签名者公钥
                                                                ,
                                                              ′
                             ′                         (S, pk π , M ) B  按照下述步骤模拟生成环签名.
                 pk π  以及消息  M  提交给  O S  查询环签名. 对于查询
                               sk a
                    a) 计算  I = pk .
                               π
                          i ∈ {1,2,...,n−1}, 依次执行下述操作.
                    b) 对于
                                    *         q i  c i   q i c i
                    i) 随机选取  q i , c i ∈ Z , 计算  L i = g pk   和  R i = pk a I .
                                    q           i
                                                                          LIST H  中, 若在, 则重新执行  i); 否则, 将
                    ii) 令   δ i+1 = (M ∥ pk 1 ||pk 2 ||...||pk n ∥ pk a ∥ I ∥ L i ∥ R i ), 检查  δ i+1  是否在列表
                 (δ i ,c i ) 添加到  LIST H  中.
                                     *          q n  c n    q n c n  δ n+1 = (M ∥ pk 1 ||pk 2 ||...||pk n ∥ pk a ∥ I ∥ L n ∥ R n ),  检查
                    c) 随机选取   q n , c n ∈ Z , 计算  L n = g pk n   和  R n = pk a I , 令
                                     q
                 δ n+1  是否在列表  LIST H  中, 若在, 则重新执行  c); 否则, 将  (δ n+1 ,c 1 )  添加到  LIST H  中.
                             ′
                    d)   B 返回  σ = (I,c 1 ,q 1 ,...,q n ) 作为应答.
   346   347   348   349   350   351   352   353   354   355   356