可随机化密文签名:原理、构造与应用
1. 背景与基础概念
在密码学中,为了确保签名的不可伪造性,当直接处理 $F(M)$ 时,需要添加关于消息 $M$ 的知识证明 $\Pi_M$。为了构建可随机化的签名和加密方案,我们使用 Groth - Sahai 证明对 $M$ 的承诺 $C_M$ 进行处理,并且证明 $F$ 确实是对承诺的 $M$ 进行 $F$ 函数计算的结果。
线性加密是一种重要的加密方式。其私钥 $dk$ 是一对随机标量 $(x_1, x_2)$,公钥 $pk = (X_1 = g^{x_1}, X_2 = g^{x_2})$。对于消息 $M \in G$,加密过程为:选择随机标量 $r_1, r_2 \stackrel{\$}{\leftarrow} \mathbb{Z}_p$,计算 $c = [c_1 = X_1^{r_1}, c_2 = X_2^{r_2}, c_3 = g^{r_1 + r_2} \cdot M]$。解密时,计算 $M = c_3 / (c_1^{1/x_1} c_2^{1/x_2})$。在 DLin 假设下,该方案对选择明文攻击具有语义安全性(IND - CPA)。
2. 线性密文上的 Waters 签名
我们使用 Waters 签名对 $F = F(M)$ 的线性加密进行签名。从“密文”中使用解密密钥只能提取出 $F(M)$,对于小消息空间可以进一步得到 $M$。为了保证签名在 $F$ 上的不可伪造性,需要给出关于 $M$ 的知识证明 $\Pi_M$,使得 $F = F(M)$。这里使用独立的 Waters 签名密钥 $(vk = Y = g^y$ 和 $sk = Z = h^y)$ 以及线性加密密钥 $(dk = (x_1, x_2), pk = (X_1 = g^{x_1}, X_2 = g^{x_2}))$。
最初的想法是将加密消息 $c = [c_1 = X_1^{r_1}, c_2 = X_2^{r_2}, c_3 = g^{r_1 + r_2} \cdot F(M)]$ 的签名定义为 $\sigma = (c_1^s, c_2^s, Z \cdot c_3^s)$,但存在两个问题:
- 签名随机数 $s$ 随机化为 $s + s’$ 相对容易,但加密随机数 $r$ 随机化为 $r + r’$ 需要知道 $X_1^s, X_2^s$ 和 $g^s$ 的值,因此将它们包含在签名中。
- 为了将不可伪造性的概念归约到 Waters 方案的安全性,需要模拟一个返回密文签名的预言机。可以从知识证明 $\Pi_M$ 中提取 $M$ 并提交给预言机,从回复 $(Z \cdot F(M)^s, g^{-s})$ 生成 $\sigma = (c_1^s, c_2^s, Z \cdot c_3^s; X_1^s, X_2^s, g^s)$,这需要知道 $c_1, c_2$ 和 $c_3$ 的随机数 $(r_1, r_2)$,因此在扩展密文中添加另一个证明 $\Pi_r$,证明对 $r_1$ 和 $r_2$ 的知识。
全局证明 $\Pi = (\Pi_M, \Pi_r)$ 可以使用 Groth - Sahai 方法进行随机化承诺和证明,由 $9k + 18\ell + 6$ 个群元素组成($k$ 和 $\ell$ 分别是消息和群阶的比特长度)。经过证明 $\Pi$ 的有效性测试后,扩展密文 $(c, \Pi)$ 可以被签名。解密和验证直接遵循 Waters 签名和线性加密的相应算法。
这种可随机化密文上的签名是可提取的。对于有效的签名,如果知道解密密钥 $dk = (x_1, x_2)$,可以计算 $\Sigma = (\Sigma_1 = \sigma_3 / (\sigma_1^{1/x_1} \sigma_2^{1/x_2}), \Sigma_2 = \sigma_6^{-1})$,这是对 $M$ 的有效签名。同样,在不知道解密密钥的情况下,也可以从加密使用的随机数 $(r_1, r_2)$ 得到相同结果。从基本方案的随机化公式可以得到该 Waters 签名在线性密文上的随机化性质。在 $G$ 中的 CDH 假设下,该签名在 UF 意义下具有不可伪造性。
3. 高效实例化
之前的构造是一种具体可行的可随机化密文签名,并且具有很强的可提取性。但从效率角度来看,存在一个主要缺点,即 $M, r_1$ 和 $r_2$ 的逐位承诺 $C_M, C_1$ 和 $C_2$。消息 $M$ 可能很短,但 $r_1$ 和 $r_2$ 必然很大。对于 $k$ 比特长的消息 $M$,$\Pi_M$ 由 $9k + 2$ 个群元素组成;随机数 $r_1$ 和 $r_2$ 为 $\ell$ 比特长,$\Pi_r$ 需要 $18\ell + 4$ 个群元素。
为了改进,我们重新审视 Waters 签名方案,构建一种在相同假设下对更强类型的选择消息攻击具有不可伪造性的方案。对手可以提交“扩展消息” $(M, R_1 := g^{r_1}, R_2 := g^{r_2}, T := vk^{r_1 + r_2})$,预言机回复元组 $(sk \cdot (F(M)R_1R_2)^s, g^{-s}, R_1^{-s}, R_2^{-s})$,我们将这种攻击称为选择扩展消息攻击,该安全概念包含了经典的选择消息攻击。
3.1 改进的 Waters 签名
改进的 Waters 签名由四个算法定义:
-
Setup(1^k)
:方案定义在双线性群 $(p, G, G_T, e, g)$ 上,其中 $e: G \times G \to G_T$ 是一个可接受的双线性映射,$G$ 和 $G_T$ 是素数阶 $p$ 的群,分别由 $g$ 和 $e(g, g)$ 生成。选择随机生成元 $h \stackrel{\$}{\leftarrow} G$ 和向量 $u = (u_0, \ldots, u_k) \stackrel{\$}{\leftarrow} G^{k + 1}$,定义 Waters 哈希函数 $F(M) = u_0 \prod_{i = 1}^{k} u_i^{M_i}$,设置参数 $param := (p, G, G_T, e, g, h, u)$。
-
SKeyGen(param)
:选择随机标量 $y \stackrel{\$}{\leftarrow} \mathbb{Z}_p$,定义公钥 $vk = Y = g^y$,私钥 $sk = Z = h^y$。
-
Sign(sk = Z, M, R_1, R_2, T; s)
:首先检查 $(R_1, R_2, T)$ 的一致性,如果 $e(R_1R_2, Y) = e(g, T)$,则保证存在 $(r_1, r_2)$ 使得 $R_1 = g^{r_1}, R_2 = g^{r_2}, T = Y^{r_1 + r_2}$。选择随机 $s \stackrel{\$}{\leftarrow} \mathbb{Z}_p$,定义签名 $\sigma = [\sigma_1 = Z \cdot (F(M)R_1R_2)^s, \sigma_2 = g^{-s}, \sigma_3 = R_1^{-s}, \sigma_4 = R_2^{-s}]$。也可以将输入消息 $M$ 替换为对 $(F(M), \Pi_M)$。
-
Verif(vk = Y, M, R_1, R_2, T, \sigma)
:检查 $e(g, \sigma_1) \cdot e(F(M)R_1R_2, \sigma_2) = e(Y, h)$,$e(g, \sigma_3) = e(\sigma_2, R_1)$ 和 $e(g, \sigma_4) = e(\sigma_2, R_2)$,以及 $(R_1, R_2, T)$ 的一致性,即 $e(R_1R_2, Y) = e(g, T)$。
为了随机化签名,定义 $Random(vk, (F, \Pi_M), R_1, R_2, T, \sigma = (\sigma_1, \sigma_2, \sigma_3, \sigma_4); s’)$ 输出 $\sigma’ = (\sigma_1 \cdot (FR_1R_2)^{s’}, \sigma_2 \cdot g^{-s’}, \sigma_3 \cdot R_1^{-s’}, \sigma_4 \cdot R_2^{-s’})$。在 CDH 假设下,该改进的 Waters 签名方案是可随机化的,并且在选择扩展消息攻击下具有存在不可伪造性。
3.2 加密消息上的签名
在新方案中,使用改进的 Waters 签名对 $F = F(M)$ 的线性加密进行签名:
-
Setup(1^k)
:基于双线性群 $(p, G, G_T, e, g)$ 作为加密参数 $parame$。签名部分还需要向量 $u = (u_0, \ldots, u_k) \stackrel{\$}{\leftarrow} G^{k + 1}$ 和生成元 $h \stackrel{\$}{\leftarrow} G$,定义参数 $params := (p, G, G_T, e, g, h, u)$。
-
EKeyGen(parame)
:选择两个随机标量 $x_1, x_2 \stackrel{\$}{\leftarrow} \mathbb{Z}_p$,定义私钥 $dk = (x_1, x_2)$,公钥 $pk = (X_1 = g^{x_1}, X_2 = g^{x_2})$。
-
SKeyGen(params)
:选择随机标量 $y \stackrel{\$}{\leftarrow} \mathbb{Z}_p$,定义公钥 $vk = Y = g^y$,私钥 $sk = Z = h^y$。
-
Encrypt[pk = (X_1, X_2), vk = Y, M; (r_1, r_2)]
:对于消息 $M \in {0, 1}^k$ 和随机标量 $r_1, r_2 \in \mathbb{Z}_p$,定义密文 $c = [c_1 = X_1^{r_1}, c_2 = X_2^{r_2}, c_3 = g^{r_1 + r_2} \cdot F(M)]$。为了保证密文签名的不可伪造性,添加关于 $M$ 和 $r_1, r_2$ 映像的知识证明:
-
Proof $\Pi_r$
:包含承诺 $C_r = (C_1 = C’(r_1), C_2 = C’(r_2), C_3 = C(Y^{r_1 + r_2}))$,模拟器可以从中提取 $R_1, R_2$ 和 $T$。还包含一致性证明,$C_3$ 是对 $Y$ 提升到 $C_1$ 和 $C_2$ 中承诺的 $r_1$ 和 $r_2$ 值的承诺,这些值是加密的随机数。该证明需要 9 个群元素用于承诺,13 个用于证明,共 22 个群元素,相比之前的构造有所减少。
-
Proof $\Pi_M$
:证明 $F(M)$ 在 $c$ 中被加密的 $M$ 的知识。由逐位承诺 $C_M = (C’(M_1), \ldots, C’(M_k))$ 和每个承诺值是比特的证明(6k 个群元素),以及 $c_3$ 格式正确的证明(2 个额外群元素)组成,共 $9k + 2$ 个群元素。
全局证明(包含承诺)$\Pi$ 由 $9k + 24$ 个群元素组成(使用原始 Waters 方案时为 $9k + 18\ell + 6$ 个)。
-
Sign[sk = Z, pk = (X_1, X_2), (c = (c_1, c_2, c_3), \Pi); s]
:对密文 $c = (c_1, c_2, c_3)$ 签名时,首先检查 $\Pi$ 的有效性,如果有效则输出 $\sigma = (c_1^s, c_2^s, Z \cdot c_3^s; X_1^s, X_2^s, g^s)$。
-
Decrypt[dk = (x_1, x_2), vk = Y, (c = (c_1, c_2, c_3), \Pi)]
:对于有效的密文(可通过 $\Pi$ 验证),知道解密密钥 $dk = (x_1, x_2)$ 时,可以计算 $F = F(M) = c_3 / (c_1^{1/x_1} c_2^{1/x_2})$。
-
Verif[vk = Y, pk = (X_1, X_2), (c = (c_1, c_2, c_3), \Pi), \sigma = (σ_1, σ_2, σ_3; σ_4, σ_5, σ_6)]
:验证签名时,验证 $\Pi$ 并检查以下配对方程是否成立:
- $e(\sigma_3, g) = e(h, Y) \cdot e(c_3, \sigma_6)$
- $e(\sigma_1, X_1) = e(c_1, \sigma_4)$
- $e(\sigma_2, X_2) = e(c_2, \sigma_5)$
- $e(\sigma_1, g) = e(c_1, \sigma_6)$
- $e(\sigma_2, g) = e(c_2, \sigma_6)$
-
Random[vk = Y, pk = (X_1, X_2), (c = (c_1, c_2, c_3), \Pi), \sigma; r_1’, r_2’, s’]
:为了随机化签名和密文,算法输出:
- $c’ = [c_1 \cdot X_1^{r_1’}, c_2 \cdot X_2^{r_2’}, c_3 \cdot g^{r_1’ + r_2’}]$
- $\sigma’ = [\sigma_1 \cdot c_1^{s’} \cdot \sigma_4^{r_1’} \cdot X_1^{r_1’s’}, \sigma_2 \cdot c_2^{s’} \cdot \sigma_5^{r_2’} \cdot X_2^{r_2’s’}, \sigma_3 \cdot c_3^{s’} \cdot \sigma_6^{r_1’ + r_2’} \cdot g^{(r_1’ + r_2’)s’}, \sigma_4 \cdot X_1^{s’}, \sigma_5 \cdot X_2^{s’}, \sigma_6 \cdot g^{s’}]$
- 以及 $\Pi$ 的随机化 $\Pi’$。
-
SigExt[dk = (x_1, x_2), vk, (c = (c_1, c_2, c_3), \Pi), \sigma]
:返回 $\Sigma = [\Sigma_1 = \sigma_3 / (\sigma_1^{1/x_1} \sigma_2^{1/x_2}), \Sigma_2 = \sigma_6^{-1}]$,这是对 $M$ 的有效签名。
在 $G$ 中的 CDH 假设下,该方案是可随机化的,并且在 UF 意义下具有不可伪造性。
下面是加密消息签名流程的 mermaid 流程图:
graph TD;
A[Setup] --> B[EKeyGen];
A --> C[SKeyGen];
B --> D[Encrypt];
C --> D;
D --> E[Sign];
E --> F[Decrypt];
E --> G[Verif];
E --> H[Random];
E --> I[SigExt];
4. 应用
可提取的可随机化密文签名(ESRC)是一种新的原语,在匿名性方面有许多应用。
4.1 非交互式无收据电子投票
在投票方案中,匿名性是关键属性,加密方案可以实现这一点。但加密方案无法解决投票出售问题,投票者可能出售投票并向买家透露加密投票的内容。
传统的防止投票出售的方法使用基于可随机化加密方案和指定验证者零知识证明的大量交互技术。而可随机化密文上的签名可以完全避免交互。投票者只需将投票 $v$ 加密为 $c$ 并签名 $\sigma$,投票中心可以将 $c$ 和 $\sigma$ 一致随机化为 $c’$ 和 $\sigma’$,使得投票者不知道 $c’$ 的随机数,但由于 ESRC 的不可伪造性,保证投票未被修改,从而构建了非交互式无收据电子投票方案。
由于 ESRC 候选方案使用了可随机化和同态加密方案,经典的同态加密和阈值解密投票方案技术可以使用。如果投票只包含一个待选框,使用线性加密时选票大小仅为 42 个群元素,使用 ElGamal 加密时更小。如果投票包含多个待选框,选票大小随待选框数量 $k$ 缓慢增长。
4.2 盲签名及其变体
盲签名是电子现金的重要工具,它允许用户在不透露消息的情况下让银行对消息进行签名,并且用户获得的消息 - 签名对与银行的协议执行视图无关,从而实现匿名提款。
使用 ESRC 可以构建计算盲签名方案:用户使用自己的密钥将消息 $m$ 加密为密文 $c$ 并请求签名,得到密文 $c$ 的签名后提取出对 $m$ 的有效签名 $\sigma$。由于签名者知道计算签名的随机数,该签名还不是盲签名,但用户可以利用签名的可随机化性质将 $\sigma$ 随机化为安全的盲签名 $\sigma’$。该盲签名的盲性依赖于加密方案的语义安全性和随机化的信息理论性质,一次多不可伪造性依赖于签名方案的不可伪造性。
此外,使用强可提取的可随机化密文签名可以实现一轮公平盲签名和一轮三方盲签名:
-
一轮公平盲签名
:用户无需使用自己的密钥加密 $m$,可以使用追踪机构的密钥加密,机构可以在必要时提取消息并撤销匿名性。
-
一轮三方盲签名
:一方 $A$ 让签名者 $C$ 为 $B$ 对消息 $m$ 进行签名,使得 $A$ 和 $C$ 都无法将最终的消息 - 签名对关联起来。$A$ 使用 $B$ 的密钥加密消息 $m$ 并发送给 $C$,$C$ 对密文签名并随机化,然后将加密签名发送给 $B$,$B$ 也进行随机化。
下面是盲签名构建步骤的表格:
|步骤|操作|
|----|----|
|1|用户使用自己的密钥将消息 $m$ 加密为密文 $c$|
|2|用户请求对密文 $c$ 进行签名|
|3|获得密文 $c$ 的签名后提取对 $m$ 的有效签名 $\sigma$|
|4|用户利用签名的可随机化性质将 $\sigma$ 随机化为安全的盲签名 $\sigma’$|
综上所述,可提取的可随机化密文签名在密码学领域具有重要的应用价值,为匿名性相关的应用提供了高效且安全的解决方案。
可随机化密文签名:原理、构造与应用(下半部分)
5. 技术优势与挑战分析
5.1 技术优势
可随机化密文签名方案具有多方面的显著优势。首先,其可提取性是一大亮点。在有效的签名场景下,无论是知晓解密密钥还是加密所用的随机数,都能够计算出对原始消息 $M$ 的有效签名,这为后续的验证和解密操作提供了极大的便利。例如在电子投票和盲签名应用中,可提取性保证了在必要时能够获取原始消息的签名,同时又不损害签名的安全性和匿名性。
其次,随机化性质增强了方案的安全性和灵活性。通过随机化签名和密文,能够有效抵御各种攻击,如选择消息攻击等。在电子投票中,投票中心可以对加密的投票和签名进行随机化处理,使得投票者无法再打开随机化后的密文,从而防止投票者向他人证明自己的投票内容,保障了投票的匿名性。
再者,该方案在效率上有一定的提升。改进后的方案通过重新审视 Waters 签名方案,减少了逐位承诺所需的群元素数量,降低了计算和存储成本。例如,全局证明 $\Pi$ 从原来的 $9k + 18\ell + 6$ 个群元素减少到 $9k + 24$ 个群元素,在处理长随机数时优势更为明显。
5.2 面临的挑战
尽管可随机化密文签名方案具有诸多优势,但也面临一些挑战。其中一个主要挑战是对假设的依赖。方案的安全性建立在 CDH(Computational Diffie - Hellman)假设和 DLin(Decisional Linear)假设之上。如果这些假设在未来被破解,那么整个方案的安全性将受到威胁。
另外,方案的实现复杂度相对较高。涉及到双线性群、Groth - Sahai 证明等复杂的数学概念和技术,对实现者的专业知识要求较高。在实际应用中,可能会因为实现过程中的错误而引入安全漏洞。
6. 未来发展方向
6.1 安全性增强
未来可以探索在更弱的假设下实现可随机化密文签名方案,降低对现有假设的依赖,提高方案的安全性。例如,研究基于量子抗性假设的方案,以应对未来量子计算可能带来的威胁。
6.2 效率优化
进一步优化方案的效率,减少计算和存储开销。可以研究新的承诺和证明技术,替代现有的逐位承诺方法,从而减少群元素的使用数量。同时,优化算法的执行流程,提高签名、加密、解密和验证等操作的速度。
6.3 应用拓展
除了现有的电子投票和盲签名应用,还可以探索可随机化密文签名在其他领域的应用,如匿名认证、隐私保护的数据共享等。在匿名认证中,可以利用可随机化密文签名实现用户身份的匿名验证,保护用户的隐私。
下面是未来发展方向的列表:
- 安全性增强:探索更弱假设下的方案,应对量子计算威胁。
- 效率优化:研究新的承诺和证明技术,优化算法执行流程。
- 应用拓展:将方案应用于匿名认证、隐私保护的数据共享等领域。
7. 总结
可随机化密文签名作为一种新兴的密码学原语,在匿名性保护方面具有重要意义。它结合了线性加密和 Waters 签名的特点,通过改进和优化,实现了可随机化和可提取的特性。在电子投票和盲签名等应用中,展现出了良好的性能和安全性。
然而,该方案也面临着一些挑战,如对假设的依赖和实现复杂度较高等问题。未来,需要在安全性增强、效率优化和应用拓展等方面进行深入研究,以推动可随机化密文签名技术的进一步发展,为更多领域的隐私保护和匿名性需求提供更可靠的解决方案。
下面是整个可随机化密文签名方案的总结 mermaid 流程图:
graph LR;
A[背景与基础概念] --> B[线性密文上的 Waters 签名];
B --> C[高效实例化];
C --> D[应用];
D --> E[技术优势与挑战分析];
E --> F[未来发展方向];
F --> G[总结];
总之,可随机化密文签名技术为密码学领域带来了新的思路和方法,有望在未来的信息安全领域发挥重要作用。
可随机化密文签名原理与应用
超级会员免费看
9

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



