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

苏航 等: 高效的区块链中可监管身份隐私保护方案                                                        1789



                 败标识  ⊥.
                  4.2.2    方案描述
                                          ( )
                                            λ
                    (1) 初始化算法   RRIPP.SetUp 1 → (pp, sk a )
                                                                                    *
                                                                                        *
                                           G
                    设   q 为素数, 选取  q 阶循环群  , 选取生成元     g ∈ G, 选取密码学哈希函数      H : {0,1} → Z . 监管者选取随机数
                                                                                        q
                     *                      r r
                 r r ∈ Z  作为监管私钥   sk a , 计算   pk a =g  作为监管公钥, 监管者秘密保存监管私钥   sk a . 设置公开参数  pp={G,q,g, pk a ,H}.
                     q
                 输出公开参数     pp.
                                  RRIPP.KeyGen(pp) → (sk, pk)
                    (2) 密钥生成算法
                                  *                          sk u
                    选取随机数     r u ∈ Z , 令私钥   sk u = r u , 计算公钥  pk u = g .
                                  q
                    输出公私钥对     (sk u , pk u ).
                                  RRIPP.TxGen(pp, pk r , pk a ) → (RRIPP.Tx)
                    (3) 交易生成算法
                    依次执行下述      3  个子算法.
                    1) 一次性地址生成算法       OTA.Gen
                                 *         t         (  t  )                r t
                    选取随机数     t ∈ Z , 计算  R = g , 计算  r t = H pk , 计算一次性地址  P = pk r g .
                                 q                     r
                    2) 接收者监管密文生成算法        ElG.Enc
                                                  (       )
                                  *                r e   r e
                    选取随机数     r e ∈ Z , 计算  C = (C 1 ,C 2 ) = g , pk r pk .
                                                         a
                                  q
                                                     ZK.ProofGen
                    3) 接收者身份一致性零知识证明生成算法
                                    *         s e    s t  s e
                                                                                     ,
                                                                                              ,
                    选取随机数     s t , s e ∈ Z , 计算  Q 1 = g , Q 2 = g pk ,  h = H (g ∥ pk a ∥ C 1 ∥ C 2 ∥ P ∥ Q 1 ∥ Q 2 ) w t = s t −hr t w e = s e +hr e ,
                                    q                   a
                 则身份一致性证明为       π = (w t ,w e ,h).
                    输出  RRIPP.Tx = (P,R,C,π).
                    (4) 合法性验证算法     RRIPP.Verif (pp, pk a ,RRIPP.Tx) → 0/1
                                                                         Q = g /C ,Q = pk g P /C ,  h = H(g ∥
                                                                                               h
                                                                                            h
                                                                                 h
                                                                                        w e
                                                                                          w t
                                                                                                  ′
                                                                                   ′
                                                                              w e
                                                                          ′
                    执行接收者身份一致性零知识证明生成算法                  ZK.ProofVerif , 计算   1  1  2   a      2
                                           ′
                               ′   ′   h = h , 则交易接收者身份一致性证明验证通过并输出              1, 否则验证不通过并输出       0.
                 pk a ∥ C 1 ∥ C 2 ∥ P ∥ Q ∥ Q ). 若
                               1   2
                    (5) 交易接收算法    RRIPP.Rev(pp, sk r ,RRIPP.Tx) → (otsk r /⊥)
                    依次执行下述两个子算法.
                    1) 一次性地址验证算法       OTA.Verif
                         ′
                                       ′
                    计算  P = pk r g  H( R sk r )  , 若  P = P, 则验证成功并继续执行, 否则输出  ⊥.
                    2) 一次性私钥计算算法       OTA.OtskGen
                                        (   )
                    计算一次性私钥      otsk r = H R sk r  + sk r , 输出  otsk r .
                    (6) 监管算法  RRIPP.Reg(pp, sk a ,RRIPP.Tx) → (pk r /⊥)
                                                                   sk a
                                                              =
                    执行接收者身份监管密文解密算法             ElG.Dec, 计算   pk r C 2 /C . 输出   pk r .
                                                                   1
                  4.3   RRIPP  方案安全模型及证明
                  4.3.1    安全模型
                    安全的   RRIPP  方案应该满足交易接收者身份匿名性和身份可监管性                 [34] .
                    上述安全属性的形式化定义可基于仿真器                S  和敌手  A 之间的实验给出, 下面给出敌手         A 在实验中可查询的
                 预言机.
                    (1) 查询预言机
                      O R : 注册预言机, 敌手   A 查询此预言机注册一个新用户  , 该预言机返回一个有效的用户公钥                pk i , 并将  (pk i , sk i ,I i )
                                                             I i
                 添加到集合    L 中.
                                                                                                  sk i , 并将
                      O C : 腐化成员预言机, 敌手   A 查询此预言机腐化公钥为          pk i  的用户  , 该预言机返回相对应的私钥
                                                                         I i
                 (pk i , sk i ,I i ) 添加到集合  L M  中.
                      O T : 生成交易预言机, 敌手  A 查询此预言机以获取接收者公钥为             pk i  的接收者身份隐私保护与监管相关的交
   343   344   345   346   347   348   349   350   351   352   353