可随机化密文签名技术解析
在当今的信息安全领域,对数据的加密和签名技术提出了越来越高的要求。可随机化密文签名作为一种新兴的技术,为数据的安全性和隐私性提供了新的解决方案。本文将深入探讨可随机化密文签名的相关概念、技术细节和应用场景。
1. 密文 - 签名对的大小
不同的配对方式下,密文 - 签名对的大小有所不同。以下是具体的表格展示,其中参数 k 表示消息的比特长度:
| 配对类型 | 具体方案 | 密文 - 签名对大小 |
| ---- | ---- | ---- |
| 对称配对 | Waters + Linear | 9k + 33 |
| 非对称配对 | Waters + ElGamal(G1) | 6k + 15 |
| 非对称配对 | Waters + ElGamal(G2) | 6k + 7 |
2. 应用场景
利用这一新技术,我们可以基于标准假设获得一个相当高效的轮次最优盲签名方案。此外,由于加密具有同态性,我们还可以构建一个非交互式、无收据且可普遍验证的电子投票方案,具体步骤如下:
1. 用户加密自己的投票信息,证明其有效性。
2. 将加密信息、签名和证明发送到投票中心。
3. 投票中心对密文进行随机化处理,调整证明和用户签名,并公布结果。
4. 结果公布后,用户可以验证自己的签名,确认随机化后的密文仍然包含其原始投票,但无法向他人证明自己的投票内容。
3. 相关工作对比
之前 Fuchsbauer 提出了交换签名和可验证加密的概念,给定一个密文,签名者可以对明文生成一个可验证加密的签名。而我们的方案避免了签名的(可随机化)可验证加密,使用了本身可随机化的签名。在我们的轮次最优盲签名实例中,盲签名是实际的签名,而非其可验证加密。并且,我们的构造基于标准假设,而 Fuchsbauer 的方案依赖于“q 类型”假设。在签署短消息时,两种方法的效率相当,因为电子投票中的投票通常只包含几位。
4. 基本定义
在深入了解可随机化密文签名之前,我们需要先明确一些基本的概念和定义。
4.1 加密方案
加密方案 E 由以下几个部分组成:
-
Setup(1k)
:k 为安全参数,生成方案的全局参数 param。
-
EKeyGen(param)
:生成公钥(加密密钥)pk 和私钥(解密密钥)dk。
-
Encrypt(pk, m; r)
:使用随机数 r 对输入消息 m 进行加密,生成密文 c。
-
Decrypt(dk, c)
:使用私钥 dk 对密文 c 进行解密,输出明文或 ⊥(如果密文无效)。
4.2 签名方案
签名方案 S 由以下几个部分组成:
-
Setup(1k)
:k 为安全参数,生成方案的全局参数 param。
-
SKeyGen(param)
:生成公钥(验证密钥)vk 和私钥(签名密钥)sk。
-
Sign(sk, m; s)
:使用随机数 s 对输入消息 m 进行签名,生成签名 σ。
-
Verif(vk, m, σ)
:验证签名 σ 是否有效,有效则输出 1,否则输出 0。
在 Waters 签名方案中,签名算法首先将消息转换为 F = F(M),其中 F 是一个哈希函数。给定 F,在签名和验证过程中不需要知道 M 的具体值,但为了保证安全性,我们可以用 (F, ΠM) 替换 M,其中 ΠM 是 F 在函数 F 下的原像的知识证明。
4.3 密文签名方案
密文签名方案 SC 定义如下:
-
Setup(1k)
:生成关联加密和签名方案的全局参数 parame 和 params。
-
EKeyGen(parame)
:生成加密密钥 pk 和关联的解密密钥 dk。
-
SKeyGen(params)
:生成验证密钥 vk 和签名密钥 sk。
-
Encrypt(pk, vk, m, r)
:使用随机数 r 对输入消息 m 进行加密,生成密文 c,该密文后续将使用与验证密钥 vk 关联的签名密钥进行签名。
-
Sign(sk, pk, c; s)
:使用随机数 s 对密文 c 进行签名,生成签名 σ,如果密文无效则输出 ⊥。
-
Decrypt(dk, vk, c)
:使用私钥 dk 对密文 c 进行解密,输出明文或 ⊥(如果密文无效)。
-
Verif(vk, pk, c, σ)
:验证签名 σ 是否有效,有效则输出 1,否则输出 0。
为了适应不同的应用场景,我们还需要考虑密文和签名的可随机化性。下面是可随机化加密方案和可随机化签名方案的定义:
4.4 可随机化加密方案
一个加密方案如果满足以下条件,则被称为可随机化加密方案:
- 存在一个额外的算法 Random(pk, c; r′),使用额外的随机数 r′ 生成一个与输入密文 c 等价的新密文 c′。
- 对于任何通过 Setup(1k) 生成的参数 param,通过 EKeyGen(param) 生成的密钥对 (pk, dk),消息 m,随机数 r 以及密文 c = Encrypt(pk, m; r),以下两个分布在统计上是不可区分的:
- D0 = {r′ $← Re : Encrypt(pk, m; r′)}
- D1 = {r′ $← Re : Random(pk, c; r′)}
4.5 可随机化签名方案
一个签名方案如果满足以下条件,则被称为可随机化签名方案:
- 存在一个额外的算法 Random(vk, (F, ΠM), σ; s′),使用额外的随机数 s′ 从签名 σ 生成一个在 vk 下有效的新签名 σ′。
- 对于任何通过 Setup(1k) 生成的参数 param,通过 SKeyGen(param) 生成的密钥对 (vk, sk),消息 M,M 的原像知识证明 ΠM,随机数 s 以及签名 σ = Sign(sk, (F, ΠM); s),以下两个分布在统计上是不可区分的:
- D0 = {s′ $← Rs : Sign(sk, (F, ΠM); s′)}
- D1 = {s′ $← Rs : Random(vk, (F, ΠM), σ; s′)}
下面是可随机化密文签名的整体流程 mermaid 图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(用户):::process -->|加密投票信息| B(投票中心):::process
B -->|随机化密文、调整证明和签名| C(公布结果):::process
C -->|验证签名| A
通过这些定义和流程,我们可以更好地理解可随机化密文签名的工作原理和安全性保障。在后续的部分,我们将进一步探讨可随机化密文签名的其他特性和应用。
可随机化密文签名技术解析
5. 可随机化密文签名
我们将可随机化的概念扩展到密文签名上,定义了可随机化的密文签名方案。
5.1 可随机化密文签名方案
可随机化密文签名方案在密文签名方案的基础上,增加了随机化算法:
-
Random(vk, pk, c, σ; r′, s′)
:输入签名 σ、密文 c、验证密钥 vk、加密密钥 pk 以及随机数 r′ 和 s′,输出一个加密相同消息的新密文 c′ 和对 c′ 的新签名 σ′。
一个密文签名方案如果满足以下条件,则被称为可随机化密文签名方案:对于任何通过 Setup(1k) 生成的全局参数 (parame, params),通过 EKeyGen(parame) 生成的密钥对 (pk, dk),通过 SKeyGen(params) 生成的密钥对 (vk, sk),消息 m,随机数 r 和 s,对于密文 c = Encrypt(pk, vk, m; r) 和签名 σ = Sign(sk, pk, c; s),以下两个分布在统计上是不可区分的:
- D0 = {r′ $← Re; s′ $← Rs : (c′ = Encrypt(pk, vk, m; r′), σ′ = Sign(sk, pk, c′; s′))}
- D1 = {r′ $← Re; s′ $← Rs : (c′, σ′) = Random(vk, pk, c, σ; r′, s′)}
我们用 1e 和 1s 表示 Re 和 Rs 中的中性元素,它们在随机化后能保持密文和/或签名不变。如果 Re 和 Rs 是群(在我们的所有方案中都是如此,群运算为加法),并且可以对随机性进行加法更新,那么就证明了这些方案是可随机化的。该方案的不可伪造性与之前定义的密文签名方案的不可伪造性相同。
5.2 可提取的可随机化密文签名
对于可随机化密文签名方案 SC,我们定义了一个额外的提取算法:
-
SigExtSC(dk, vk, σ)
:输入解密密钥 dk、验证密钥 vk 和签名 σ,输出一个签名 σ′。
假设存在一个签名方案 S,其中 SetupS 是 SetupSC 在签名组件上的投影,且 SKeyGenS = SKeyGen。如果对于任何通过 SetupSC(1k) 生成的 (parame, params),通过 EKeyGen(parame) 生成的 (pk, dk),通过 SKeyGen(params) = SKeyGenS(params) 生成的 (vk, sk),消息 m,随机数 r 和 s,对于密文 c = EncryptSC(pk, vk, m; r) 和签名 σ = SignSC(sk, pk, c; s),输出的 σ′ = SigExtSC(dk, vk, σ) 是在 vk 下对 m 的有效签名,即 VerifS(vk, m, σ′) 为真,则称方案 SC 是可提取的。
可提取的可随机化密文签名方案允许用户加密消息 m 并获得密文 c 的签名 σ。持有解密密钥的人不仅可以从 (c, σ) 中恢复出加密消息 m,还可以使用 SigExtSC 功能获得消息 m 的签名 σ′。因此,对于可提取的密文签名,加密和签名可以看作是可交换的。
5.3 强可提取性
在某些情况下,我们还可以有更强的提取性质。在加密消息 m 为密文 c 时,用户知道用于加密的随机数 r。在我们的所有实例中,签名 σ 是使用与加密消息相同的随机数 r 对 σ′ 进行加密得到的。因此,加密 m 的用户不仅可以是持有解密密钥的人,还可以自己提取出 σ′。具有这种性质的系统 (SC, S) 被称为强可提取的(可随机化)密文签名系统。
6. 首次实例化
我们首次将线性加密和 Waters 签名结合起来,构建可随机化密文签名方案。
6.1 假设条件
我们的构造基于以下经典假设:
-
计算 Diffie - Hellman 假设 (CDH)
:设 G 是一个素数阶 p 的循环群,对于 G 的生成元 g 和随机的 a, b ∈ Zp,给定 (g, ga, gb),很难计算出 gab。
-
决策线性假设 (DLin)
:设 G 是一个素数阶 p 的循环群,对于随机的标量 a, b, x, y, c ∈ Zp,给定 (g, gx, gy, gxa, gyb, gc),很难判断 c 是否等于 a + b。
当 (g, u = gx, v = gy) 固定时,元组 (ua, vb, ga + b) 称为关于 (u, v, g) 的线性元组,而对于随机且独立的 c,元组 (ua, vb, gc) 称为随机元组。
6.2 基本原语
我们使用的基本原语包括 Groth - Sahai 承诺、线性加密和 Waters 签名,这些原语都需要一个配对友好的环境 (p, G, GT, e, g),其中 e: G×G → GT 是一个可允许的双线性映射,G 和 GT 是素数阶 p 的群,分别由 g 和 gt = e(g, g) 生成。以下是这些原语的简要介绍:
| 原语名称 | 描述 |
|---|---|
| Groth - Sahai 承诺 | 用于对值(群元素或标量)进行承诺,并进行满足某些关系的证明。在 DLin 假设下是安全的,根据 u3 是否为线性元组,承诺可以是完美绑定或完美隐藏的。 |
| Waters 签名 | 公钥参数包括生成元 h 和向量 u,定义了消息的 Waters 哈希 F(M)。签名过程基于随机数 s,验证通过双线性映射进行。 |
-
Groth - Sahai 承诺
- 承诺群元素 X ∈ G:选择随机数 s1, s2, s3 $← Zp,设置 C(X) := (1, 1, X) ⊙ us11 ⊙ us22 ⊙ us33 = (us11,1 · us33,1, us22,2 · us33,2, X · gs1 + s2 · us33,3)。
- 承诺标量 x ∈ Zp:选择随机数 γ1, γ2 ∈ Zp,设置 C′(x) := (ux3,1, ux3,2, (u3,3g)x) ⊙ uγ11 ⊙ uγ23 = (ux + γ23,1 · uγ11,1, ux + γ23,2, ux + γ23,3 · gx + γ1)。
-
Waters 签名
- 公共参数:生成元 h $← G 和向量 u = (u0, …, uk) $← Gk + 1,消息 M = (M1, …, Mk) ∈ {0, 1}k 的 Waters 哈希为 F(M) = u0 ∏ki = 1 uMii。
- 公钥:vk = Y = gy,私钥:sk = Z = hy,其中 y $← Zp。
- 签名:对于随机数 s $← Zp,签名 σ = (σ1 = Z · F(M)s, σ2 = g - s)。
- 验证:通过检查 e(g, σ1) · e(F(M), σ2) = e(Y, h) 来验证签名。
下面是可随机化密文签名首次实例化的流程 mermaid 图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(输入消息):::process -->|线性加密| B(密文):::process
B -->|Waters 签名| C(签名密文):::process
C -->|随机化| D(随机化签名密文):::process
通过将线性加密和 Waters 签名结合,并利用随机化算法,我们实现了可随机化密文签名的首次实例化,为信息安全领域提供了一种新的解决方案。这种方案在电子投票等场景中具有重要的应用价值,能够有效保护用户的隐私和数据的安全性。
超级会员免费看
915

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



