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

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


                                        ( )
                                          λ
                    (1) 初始化算法   ElG.SetUp 1 → pp
                    输入安全参数     λ. 设为素数, 选取   q 阶循环群   G, 选取生成元   g ∈ G, 设置公开参数   pp = (G,q,g), 输出公开参数  pp.
                                  ElG.KeyGen(pp) → (sk, pk)
                    (2) 密钥生成算法
                                                *                        sk
                    输入公开参数      pp. 选取随机数   d ∈ Z , 令私钥   sk = d, 计算公钥   pk = g . 输出公私钥对  (sk, pk).
                                                q
                    (3) 公钥加密算法    ElG.Enc(pk,m) → C
                                                                                            r
                                                                                               r
                                                                       *        C = (C 0 ,C 1 ) = (g , pk m). 输出消
                    输入消息接收者的加密公钥           pk 和待加密消息    m. 选取随机数   r ∈ Z , 计算密文
                                                                       q
                 息密文  C.
                    (4) 公钥解密算法    ElG.Dec(sk,C) → m
                                                            sk
                    输入消息接收者的私钥         sk 和密文   C. 计算   m = C 1 /C . 输出解密结果  m.
                                                            0
                  2.2   一次性地址
                    一次性地址     (OTA) 方案  [34] 由  OTA.SetUp、OTA.Gen、OTA.Verif、OTA.OtskGen 这  4  个多项式时间算法组成.
                                        ( )
                                          λ
                                OTA.SetUp 1 → pp
                    (1) 初始化算法
                                                                                          H : (0,1) → Z , 设
                                                                                                 *
                                                                                                     *
                    输入安全参数      λ. 设  q 为素数, 选取  q 阶循环群  G, 选取生成元   g ∈ G, 选取密码学哈希函数
                                                                                                     q
                 置公开参数    pp = (G,q,g,H). 算法输出为  (pp), 其中  pp 为公开参数.
                    (2) 一次性地址生成算法      OTA.Gen(pp, pk) → (P,R)
                                                                       *        r     r t = H (pk ), 计算一次性
                                                                                             r
                    输入公开参数      pp, 待生成一次性地址的公钥        pk. 选取随机数   r ∈ Z , 计算  R = g , 计算
                                                                       q
                         r t
                 地址   P = g pk, 即一次性公钥  otpk = P. 输出一次性地址   P 以及生成一次性地址使用的随机数            R.
                    (3) 一次性地址验证算法      OTA.Verif (pp,P,R, pk, sk) → 0/1
                    输入   (pp,P,R, pk, sk), 其中  pp 为公开参数,  P 为一次性地址,  R 为生成一次性地址使用的随机数,         pk  为  P 对应
                 的长期公钥,    sk 为  P 对应的长期私钥. 计算    P = g H( R sk )  pk, 若  P = P, 则验证成功并输出  1, 否则验证失败并输出  0.
                                                                ′
                                                   ′
                    (4) 一次性私钥计算算法      OTA.OtskGen(pp,P,R, sk) → otsk
                    输入  (pp,P,R, sk), 其中  pp 为公开参数,  P 为一次性地址,  R 为生成一次性地址使用的随机数,           sk 为  P 对应的长
                                           (  sk  )
                 期私钥. 计算一次性私钥       otsk = H R  + sk. 输出一次性私钥  otsk.
                  2.3   零知识证明
                    若  A 是概率多项式时间敌手, 并且下述条件成立, 则           (P,V) 是对于语言   L 及其上定义的证据关系       R 的零知识证明.
                    (1) 完备性
                                         [
                                                                              ]
                                       :
                    对于所有    x ∈ L, w ∈ R(x) Pr π ← ProofGen(pp, x,w) : ProofVerif (pp, x,π) = 1 = 1.
                    (2) 可靠性
                                                         [                      ]
                    存在一个可忽略的函数         negl, 对于所有  x < L, Pr ∃π,s.t. ProofVerif (pp, x,π) = 1 ⩽ negl(x).
                    (3) 零知识
                                                                                            [         ]
                                                                              [         ]       S
                    对于所有多项式时间敌手         A = (A 1 ,A 2 ), 存在一个可忽略的函数   negl, 使得    Pr Expt A 1  (k) = 1 −Pr Expt (k) = 1
                                                                                                 A 2
                                                                 S
                                                            ;
                 ⩽ negl(|x|). 其中,   (pp, x,w) : π ← ProofGen(pp, x,w) Expt (pp, x) : π ← S (pp, x).
                              Expt A 1
                                                                 A 2
                  2.4   可追踪环签名及安全模型
                    可追踪环签名      (traceable ring signature, TRS) 方案由  TRS.SetUp、 TRS.KeyGen、 TRS.Sig、 TRS.Ver、 TRS.Link、
                 TRS.Trace 这  6  个多项式时间算法组成    [34] .
                  2.4.1    可追踪环签名方案定义
                                     ( )
                                      λ
                    (1) 初始化  TRS.SetUp 1 → pp
                    算法输入为安全参数        λ, 输出为公开参数     pp.
                    (2) 密钥生成算法    TRS.KeyGen(pp) → (sk, pk)
                    算法输入为公开参数        pp, 输出为公私钥对     (sk, pk).
   335   336   337   338   339   340   341   342   343   344   345