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).

