可撤销的可委托匿名凭证技术解析
在密码学和安全领域,可委托匿名凭证的撤销机制是一个重要的研究方向。本文将深入探讨相关的技术细节,包括同态证明、累加器以及非成员证明等关键概念。
1. 同态证明集合与运算
首先,我们定义了一些基础的维度和集合。设 $m$ 是 $b_0$、$x_0$ 和 $c_0$ 的维度,存在子集 $M \subseteq {1, \ldots, m}$,使得对于所有 $i \in M$,$b_0[i] = 0$;对于所有 $j \in \overline{M}$(其中 $\overline{M} := {1, \ldots, m} \setminus M$),$x_0[j] = 0$ 且 $c_0[j] = \iota_1(0)$。设 $n$ 是 $a_0$、$y_0$ 和 $d_0$ 的维度,存在子集 $N \subseteq {1, \ldots, n}$,使得对于所有 $i \in N$,$a_0[i] = 0$;对于所有 $j \in \overline{N}$(其中 $\overline{N} := {1, \ldots, n} \setminus N$),$y_0[j] = 0$ 且 $d_0[j] = \iota_2(0)$。同时,对于 $(\forall i \in \overline{M}, \forall j \in \overline{N})$ 和 $(\forall i \in M, \forall j \in N)$,都有 $\Gamma_0[i, j] = 0$,并且 $t_0 = 0$,$\pi_0 = 0$,$\psi_0 = 0$。
基于这些定义,我们构建了一个元组集合 $\Pi_{GS}$,它由 $(Sta, Wit, Proof)$ 组成。其中,$Sta$ 包含 $L$ 个 GS 方程 $(a, b, \Gamma, t)$(对应于 $Sta_0$ 的 $(a_0, b_0, \Gamma_0, t_0)$,并与 $m$、$n$、$M$、$N$ 相关);$Wit$ 包含 $L$ 个对应的 GS 变量 $(x, y)$;$Proof$ 包含 $L$ 个对应的 GS 证明 $(c, d, \pi, \psi)$,并满足特定的条件。
接下来,我们定义了运算 $+
{GS} : \Pi
{GS} \times \Pi_{GS} \to \Pi_{GS}$。对于 $i \in {1, 2}$ 且 $(Sta_i, Wit_i, Proof_i) \in \Pi_{GS}$,我们按照以下规则计算 $(Sta, Wit, Proof) \leftarrow (Sta_1, Wit_1, Proof_1) +_{GS} (Sta_2, Wit_2, Proof_2)$:
- 对于 $i \in M$:$x[i] := x_1[i]$;$c[i] := c_1[i]$;$b[i] := b_1[i] + b_2[i]$。对于 $j \in \overline{M}$:$b[j] := b_1[j]$;$x[j] := x_1[j] + x_2[j]$;$c[j] := c_1[j] + c_2[j]$。
- 对于 $i \in N$:$y[i] := y_1[i]$;$d[i] := d_1[i]$;$a[i] := a_1[i] + a_2[i]$。对于 $j \in \overline{N}$:$a[j] := a_1[j]$;$y[j] := y_1[j] + y_2[j]$;$d[j] := d_1[j] + d_2[j]$。
- 如果 $(i \in \overline{M}) \vee (j \in \overline{N})$,则 $\Gamma[i, j] := \Gamma_1[i, j]$。否则,$\Gamma[i, j] := \Gamma_1[i, j] + \Gamma_2[i, j]$。
- $t = t_1 + t_2$,$\pi = \pi_1 + \pi_2$,$\psi = \psi_1 + \psi_2$。
通过这些定义和运算,我们证明了 $\Pi_{GS}$ 是一个具有 $+ {GS}$ 运算和单位元 $I {GS}$ 的强同态证明集合。
2. 与 DHLW 同态 NIZK 的比较
我们将本文提出的同态证明方法与独立提出的 DHLW 同态 NIZK 进行了比较。直观上,DHLW 定义一个 NIZK 证明系统是同态的,如果对于任意的 $(Para, Sta_1, Wit_1)$,$(Para, Sta_2, Wit_2) \in R$,满足 $Prove(Para, Sta_1, Wit_1) {Rand_1} + Prove(Para, Sta_2, Wit_2) {Rand_2} = Prove(Para, Sta_1 + Sta_2, Wit_1 + Wit_2) {Rand_1 + Rand_2}$,其中 $Prove(\ldots) {Rand}$ 是带有随机性 $Rand$ 的 $Prove()$ 的输出。而本文的新定义只要求对 $Prove$ 生成的部分证明具有同态性,与 DHLW 对所有此类证明的同态性要求不同,从而涵盖了更多的证明系统。
DHLW 的同态 NIZK 构造是本文构造的一个特殊情况。它适用于 “单边” GS 方程 ${x_k \cdot b_k = t_k} {k = 1}^L$,而本文的构造则推广到了 “完整” GS 方程 ${a_k \cdot y_k + x_k \cdot b_k + x_k \cdot \Gamma y_k = t_k} {k = 1}^L$。
3. 可委托非成员证明的累加器 - ADNMP
我们引入了一个通用累加器 $(Setup, ProveNM, VerifyNM, CompNMWit, Accu)$,它仅包含用于设置、生成、验证和计算非成员证明的见证以及累加的算法。委托证明陈述的能力允许另一个用户代表自己证明陈述,而无需透露见证,即使陈述的条件随时间变化。为了保护隐私,对手不应能够区分不同用户的不同委托。被委托者可以验证委托,并将证明能力无关联地重新委托给其他用户。
因此,委托累加器的非成员证明应满足以下四个条件:
-
可委托性
:元素 $Ele$ 的所有者可以委托其证明 $Ele$ 未被累加的能力,而无需轻易透露 $Ele$。即使累加元素集随时间变化,被委托者也无需再次联系委托者来生成证明。所有者给被委托者一个由 $Ele$ 生成的密钥 $De$,由 $CompNMProof$ 从 $De$ 生成的证明与由 $ProveNM$ 生成的证明是不可区分的。
-
不可链接性
:被委托者不应能够区分两个委托密钥是否来自同一个元素。这意味着从委托密钥计算找出元素在计算上是困难的。
-
可再委托性
:被委托者可以将 $De$ 重新委托为 $De’$ 给其他用户,并且仍然保持 $De$ 和 $De’$ 的不可区分性。
-
可验证性
:能够验证委托密钥 $De$ 是否正确构建。
4. ADNMP 方案
我们提出了一个动态通用的 ADNMP 方案,其 $Setup$、$Accu$ 和 $UpdateVal$ 算法是从相关文献中推广而来的。
-
Setup
:我们需要 GS 实例化,使得该累加器的 GS 证明是可组合的零知识证明。我们可以使用 SXDH 或 SDLIN 实例化,这里以 SXDH 为例。生成参数 $(p, G_1, G_2, G_T, e, P_1, P_2)$ 和具有完美绑定密钥的 CRS $\sigma$,以及辅助信息 $Aux = \delta \leftarrow \mathbb{Z}
p^
$。为了证明,生成 $A \leftarrow G_1$ 和 $\tau := \iota_2’(\delta)$。为了在没有 $Aux$ 的情况下高效累加,需要一个元组 $\varsigma = (P_1, \delta P_1, \ldots, \delta^{q + 1} P_1)$,其中 $q \in \mathbb{Z}_p^
$。要累加的元素的域是 $D = \mathbb{Z}_p^
\setminus {-\delta}$,我们有 $Para = (p, G_1, G_2, G_T, e, P_1, P_2, A, \sigma, \varsigma, \tau)$。
-
Accu
:输入 $AcSet = {a_1, \ldots, a_Q} \subset D$,计算 $m = \lceil Q / q \rceil$。如果 $Aux = \delta$ 可用,输出 $AcVal$ 是一组 $m$ 个组件累加器值 ${V_j}
{j = 1}^m$,计算为 $V_j = \prod
{i = (j - 1)q + 1; i < Q}^{jq} (\delta + a_i) \delta P_1$。如果 $Aux$ 不可用,$AcVal$ 可以从 $\varsigma$ 和 $AcSet$ 高效计算。
-
UpdateVal
*:如果 $a’ \in D$ 被累加,从 1 到 $m$ 找到第一个尚未累加 $q$ 个元素的 $V_j$,并更新 $V_j’ = (\delta + a’) V_j$;如果没有找到这样的 $V_j$,则添加 $V
{m + 1} = (\delta + a’) \delta P_1$。如果 $a’$ 从 $AcVal$ 中移除,找到包含 $a’$ 的 $V_j$ 并更新 $V_j’ = \frac{1}{\delta + a’} V_j$。
5. NM 证明
我们需要证明一个元素 $y_2 \in D$ 不在 $AcVal$ 的任何组件累加器值 $V_j$ 中。假设 $V_j$ 累加了 ${a_1, \ldots, a_k}$(其中 $k \leq q$),记 $Poly(\delta) := \prod_{i = 1}^k (\delta + a_i) \delta$,则 $V_j = Poly(\delta) P_1$。设 $y_{j3}$ 是多项式除法 $Poly(\delta) \bmod (\delta + y_2)$ 在 $\mathbb{Z} p$ 中的余数,$X {j1}$ 是商与 $P_1$ 的标量积。构造非成员证明的思想是,$y_2$ 不是 ${a_1, \ldots, a_k}$ 的成员当且仅当 $y_{j3} \neq 0$。我们有方程 $(\delta + y_2) X_{j1} + y_{j3} P_1 = V_j$。证明这个方程本身并不能保证 $y_{j3}$ 是上述多项式除法的余数,还需要证明对 $(y_{j3} P_2, y_{j3} A)$ 的知识以及满足扩展强 DH(ESDH)假设。
以下是 NM 证明的具体算法:
-
CompNMWit
:对于 $AcVal$ 的每个组件累加器值 $V_j$,计算 $Poly(\delta) \bmod (\delta + y_2)$ 在 $\mathbb{Z}
p$ 中的余数 $y
{j3}$,并计算 $X_{j1} = \frac{Poly(\delta) - y_{j3}}{\delta + y_2} P_1$。见证包括 $y_2$ 和 ${(X_{j1}, X_{j3} = y_{j3} A, y_{j3})}
{j = 1}^m$。
-
ProveNM
:生成 $X
{j2} \leftarrow G_1^
$,并为每个 $V_j$ 输出 $T_j = y_{j3} X_{j2}$ 以及一个 GS 证明,证明变量 $y_1 = \delta$,$y_2$,${(X_{j1}, X_{j3}, X_{j2}, y_{j3})}
{j = 1}^m$ 满足的方程 $\bigwedge
{j = 1}^m ((y_1 + y_2) X_{j1} + y_{j3} P_1 = V_j \land X_{j3} - y_{j3} A = 0 \land y_{j3} X_{j2} = T_j)$。
-
VerifyNM
*:验证由 $ProveNM$ 生成的证明,并检查 $T_j \neq 0$,对于所有 $j \in {1, \ldots, m}$。如果两者都通过则接受,否则拒绝。
这个证明系统的健全性依赖于 ESDH 假设,其可组合零知识性质依赖于 GS 实例化(SXDH 或 SDLIN)的底层假设。
6. NM 证明的强同态性
对于相同的常数 $A$、相同的变量 $\delta$、$y_2$ 和 $X_{j2}$ 以及相同的承诺,非成员证明集合具有第 3 节中构造的强同态 GS 证明的形式。为了构造可委托的非成员证明,我们只需要它们是同态的。具体来说,“添加” 两组方程(对于 $\delta$、$y_2$ 和 $X_{j2}$ 具有相同的承诺)的两个证明会形成一个新的证明。
7. 委托 NM 证明
我们提供了委托非成员证明的算法:
-
Dele(Para, Ele)
:对于每个 $i \in {1, \ldots, q + 1}$,计算 $\delta^i \bmod (\delta + y_2)$ 在 $\mathbb{Z}
p$ 中的余数 $y
{3}^{(i)}$,以及 $X_{1}^{(i)} = \frac{\delta^i - y_{3}^{(i)}}{\delta + y_2} P_1$。生成 $X_2 \leftarrow G_1^
$,委托密钥 $De$ 包括 ${T^{(i)} = y_{3}^{(i)} X_2}
{i = 1}^{q + 1}$ 和方程 $\bigwedge
{i = 1}^{q + 1} ((\delta + y_2) X_{1}^{(i)} + y_{3}^{(i)} P_1 = \delta^i P_1 \land X_{3}^{(i)} - y_{3}^{(i)} A = 0 \land y_{3}^{(i)} X_2 = T^{(i)})$ 的 GS 证明。
-
Rede(Para, De)
:对于每个 $i \in {1, \ldots, q + 1}$,提取 $De$ 中 $y_{3}^{(i)} X_2 = T^{(i)}$ 的证明 $Proof_i$。生成 $r \leftarrow \mathbb{Z}_p^
$ 并计算 $Proof_i’ = r Proof_i$,它是 $y_{3}^{(i)} X_2’ = T’^{(i)}$ 的证明,其中 $X_2’ = r X_2$ 且 $T’^{(i)} = r T^{(i)}$。替换 $De$ 中的 $T^{(i)}$ 和 $Proof_i$ 以得到新的 GS 证明,然后进行随机化得到输出 $De’$。
-
Vali(Para, De)
:一种简单的选择是验证 GS 证明 $De$。另一种方法是使用批量验证:将 $De$ 划分为 $(\delta + y_2) X_{1}^{(i)} + y_{3}^{(i)} P_1 = \delta^i P_1 \land X_{3}^{(i)} - y_{3}^{(i)} A = 0 \land y_{3}^{(i)} X_2 = T^{(i)}$ 的证明 $NMProof_i$(对于 $i \in {1, \ldots, q + 1}$)。生成 $q + 1$ 个随机数来线性组合 $NMProof_i$ 及其陈述,并验证组合后的证明和陈述。
-
CompNMProof(Para, De, AcSet, AcVal)
:将 $De$ 划分为 $NMProof_i$。对于 ${a_1, \ldots, a_k}$ 的每个组件累加器值 $V$,计算 $b_i$。计算 $NMProof = \sum_{i = 0}^k b_i NMProof_{k + 1 - i}$,它是 $(\delta + y_2) X_1 + y_3 P_1 = V \land X_3 - y_3 A = 0 \land y_3 X_2 = T$ 的证明。提取 $NMProof$ 中 $y_3 X_2 = T$ 的证明 $SubProof$,生成 $r \leftarrow \mathbb{Z}_p^
$ 并计算 $SubProof’ = r SubProof$,它是 $y_3 X_2’ = T’$ 的证明。替换 $NMProof$ 中的 $T$ 和 $SubProof$ 以得到新的证明 $NMProof’$。连接所有 $V$ 的 $NMProof’$ 并输出随机化后的连接结果。
-
UpdateProof(Para, De, AcSet, AcVal, Proof, Opens)
*:如果组件值 $V$ 的累加元素发生变化,我们只需计算新的 $NMProof’$。
综上所述,本文提出的可撤销的可委托匿名凭证技术在同态证明、累加器和非成员证明等方面具有创新性和实用性,为相关领域的安全应用提供了有力的支持。
以下是相关流程的 mermaid 流程图:
graph TD;
A[开始] --> B[Setup];
B --> C[Accu];
C --> D[UpdateVal];
D --> E[NM 证明];
E --> F[委托 NM 证明];
F --> G[结束];
通过以上的技术解析,我们可以更好地理解可撤销的可委托匿名凭证技术的原理和实现方法,为实际应用提供了重要的参考。
可撤销的可委托匿名凭证技术解析
8. 委托 NM 证明的安全性分析
委托非成员证明的安全性是整个 ADNMP 方案的核心。我们需要从可委托性、不可链接性、可再委托性和可验证性这四个方面进行详细分析。
8.1 可委托性
可委托性确保了元素所有者能够安全地将证明元素未被累加的能力委托给他人。具体来说,对于任意的概率多项式时间(PPT)算法 $(A_1, A_2)$,我们需要保证以下概率差值是可忽略的:
[
\left| \Pr\left[
\begin{array}{l}
(Para, Aux) \leftarrow Setup(1^k); \
(Ele, AcSet, state) \leftarrow A_1(Para); \
AcVal \leftarrow Accu(Para, AcSet); \
Wit \leftarrow CompNMWit(Para, Ele, AcSet, AcVal); \
Proof_0 \leftarrow ProveNM(Para, AcVal, Wit); \
De \leftarrow Dele(Para, Ele); \
Proof_1 \leftarrow CompNMProof(Para, De, AcSet, AcVal); \
b \leftarrow {0, 1}; \
b’ \leftarrow A_2(state, AcVal, Wit, De, Proof_b): \
(Ele \notin AcSet) \land b = b’
\end{array}
\right] - \frac{1}{2} \right|
]
这个概率差值的可忽略性意味着攻击者很难区分由 $ProveNM$ 生成的证明 $Proof_0$ 和由 $CompNMProof$ 从委托密钥 $De$ 生成的证明 $Proof_1$。这保证了被委托者可以在不暴露元素 $Ele$ 的情况下代表所有者进行证明。
8.2 不可链接性
不可链接性要求攻击者无法区分两个委托密钥是否来自同一个元素。对于任意的 PPT 算法 $A$,以下概率差值是可忽略的:
[
\left| \Pr\left[
\begin{array}{l}
(Para, Aux) \leftarrow Setup(1^k); \
(Ele_0, Ele_1) \leftarrow Dom_{Para}; \
De \leftarrow Dele(Para, Ele_0); \
b \leftarrow {0, 1}; \
De_b \leftarrow Dele(Para, Ele_b); \
b’ \leftarrow A(Para, De, De_b): b = b’
\end{array}
\right] - \frac{1}{2} \right|
]
这意味着攻击者很难通过观察委托密钥来推断出它们对应的元素是否相同,从而保护了元素的隐私。
8.3 可再委托性
可再委托性允许被委托者将委托密钥重新委托给其他用户,同时保持委托密钥的不可区分性。对于任意的 PPT 算法 $(A_1, A_2)$,以下概率差值是可忽略的:
[
\left| \Pr\left[
\begin{array}{l}
(Para, Aux) \leftarrow Setup(1^k); \
(Ele, state) \leftarrow A_1(Para); \
De \leftarrow Dele(Para, Ele); \
De_0 \leftarrow Dele(Para, Ele); \
De_1 \leftarrow Rede(Para, De); \
b \leftarrow {0, 1}; \
b’ \leftarrow A_2(state, De, De_b): b = b’
\end{array}
\right] - \frac{1}{2} \right|
]
这保证了在多次委托过程中,委托密钥的安全性和隐私性不会受到影响。
8.4 可验证性
可验证性确保了委托密钥的正确性。对于任意的 PPT 算法 $A$,以下两个概率差值是可忽略的:
[
\left| \Pr\left[
\begin{array}{l}
(Para, Aux) \leftarrow Setup(1^k); \
Ele \leftarrow A(Para); \
De \leftarrow Dele(Para, Ele): \
Vali(Para, De) = 1 \text{ if } Ele \in Dom_{Para}
\end{array}
\right] - 1 \right|
]
和
[
\left| \Pr\left[
\begin{array}{l}
(Para, Aux) \leftarrow Setup(1^k); \
De’ \leftarrow A(Para): \
Vali(Para, De’) = 0 \text{ if } De’ \notin {De | De \leftarrow Dele(Para, Ele’); Ele’ \in Dom_{Para}}
\end{array}
\right] - 1 \right|
]
这两个概率差值的可忽略性意味着验证算法 $Vali$ 能够准确地判断委托密钥是否有效。
9. 与其他方案的对比优势
与其他相关方案相比,本文提出的 ADNMP 方案具有以下显著优势:
| 对比项 | 本文 ADNMP 方案 | 其他方案 |
|---|---|---|
| 证明系统通用性 | 适用于 “完整” GS 方程,涵盖更多证明系统 | 可能仅适用于特定类型的方程,如 “单边” GS 方程 |
| 累加器灵活性 | 累加器值可以是一组值,放松了对元素数量的限制 | 累加器值通常为单个值,对元素数量有严格限制 |
| 委托安全性 | 满足可委托性、不可链接性、可再委托性和可验证性四个条件,保护隐私 | 可能只满足部分安全条件,隐私保护不足 |
10. 实际应用场景
可撤销的可委托匿名凭证技术在多个领域具有广泛的应用前景:
10.1 隐私保护的身份认证
在需要保护用户隐私的身份认证系统中,用户可以委托他人代表自己进行身份验证,而无需透露自己的真实身份信息。例如,在电子投票系统中,选民可以将投票权委托给代理人,代理人可以在不泄露选民身份的情况下进行投票。
10.2 数据共享与访问控制
在数据共享场景中,数据所有者可以委托他人代表自己共享数据,同时确保数据的隐私和安全性。例如,在医疗数据共享中,患者可以委托医生代表自己共享医疗数据,医生可以在不泄露患者隐私的情况下进行数据共享和分析。
10.3 区块链应用
在区块链网络中,可撤销的可委托匿名凭证技术可以用于实现匿名交易和智能合约的隐私保护。例如,在加密货币交易中,用户可以委托他人代表自己进行交易,同时保护交易的匿名性。
11. 未来研究方向
尽管本文提出的 ADNMP 方案在可撤销的可委托匿名凭证技术方面取得了重要进展,但仍有一些问题值得进一步研究:
11.1 性能优化
目前的方案在计算和通信复杂度方面可能存在一定的挑战,未来可以研究如何优化算法,提高方案的性能。例如,探索更高效的 GS 证明实例化方法,减少证明生成和验证的时间。
11.2 与其他密码学技术的结合
可以考虑将 ADNMP 方案与其他密码学技术,如零知识证明、同态加密等相结合,进一步增强方案的安全性和功能。例如,结合零知识证明可以实现更高级的隐私保护。
11.3 安全模型的扩展
可以扩展现有的安全模型,考虑更多的攻击场景和安全需求。例如,研究在量子计算环境下的安全性,确保方案在未来的计算环境中仍然安全可靠。
以下是未来研究方向的 mermaid 流程图:
graph TD;
A[当前方案] --> B[性能优化];
A --> C[与其他密码学技术结合];
A --> D[安全模型扩展];
B --> E[更高效的算法];
C --> F[增强安全性和功能];
D --> G[适应更多攻击场景];
综上所述,可撤销的可委托匿名凭证技术在密码学和安全领域具有重要的研究价值和应用前景。本文提出的 ADNMP 方案为该领域的发展提供了一个新的思路和方法,未来的研究可以进一步完善和扩展该方案,推动相关技术的发展和应用。
超级会员免费看
109

被折叠的 条评论
为什么被折叠?



