全安全门限去签密:现状与新方案
1. 现有门限去签密方案的安全性问题
在传统公钥基础设施(PKI)环境下,仅有两篇论文提出了显式的门限去签密方案;在基于身份的环境下,有三篇相关论文。然而,这些方案均未达到完全的安全水平,其安全弱点主要与不可区分性相关。
-
PKI 环境方案
:这两个方案没有正式的安全定义和分析,在不假设多用户或内部攻击者的情况下,就可以发起简单的 IND - CCA 攻击。
-
基于身份的方案
:虽然这些方案经过了更正式的分析,但仍然存在 IND - CCA 攻击。例如,[22] 中的方案与 PKI 环境下的方案有相同的安全问题,验证步骤在所有接收者广播其部分解密份额后才进行,攻击者可以修改挑战密文的“签名”部分,从而获取部分解密值以破解有效挑战密文。[11] 和 [12] 中的方案则无法抵抗内部攻击。
2. 通用构造方案的安全性分析
人们可能会考虑像“先加密后签名”和“先签名后加密”的门限版本这样的通用构造方案。在普通签密场景中,若底层签名和加密方案具有完全安全性,这两种通用构造方案可以实现完全安全。但在门限去签密场景中,情况并非如此。
-
门限先加密后签名方案
:
-
签密过程
:发送者 A 先对消息 m 进行加密,得到 c ← Π.Enc(pkB, m||pkA),然后对 c||pkB 进行签名,得到 ω ← Ω.Sign(skA, c||pkB),最终密文为 C = (c, ω)。
-
去签密过程
:接收者 B 先验证签名 ω 的正确性,若正确,则部分成员运行 Π.ThrDec 恢复消息 m||pkA。
-
攻击方式
:内部攻击者 AIND - CCA 可以生成新的密钥对,为挑战密文的一部分生成有效签名,并发送去签密查询,从而获取足够信息破解挑战密文。
-
先签名后门限加密方案
:攻击更为简单,攻击者只需对挑战密文进行去签密查询,即可获取部分信息直接得到明文。
3. 新的全安全门限去签密方案
由于现有方案存在安全问题,我们提出了一种新的 (t, n) - 门限去签密方案,该方案通过对具有门限解密功能的安全公钥加密方案进行修改,以适应认证过程。
-
方案原理
:借鉴 Shoup 和 Gennaro 的 TDH1 方案,发送者在加密消息时,不仅计算哈希 ElGamal 加密,还添加零知识证明,证明 DiscLogg(R) = DiscLog¯g( ¯R) 且知道 skA 使得 pkA = gskA。
-
协议流程
:
-
设置阶段(Σ.St(1λ))
:选择一个素数阶循环群 G = ⟨g⟩,定义消息长度 ℓ,选择三个哈希函数 H0、H1 和 H2,输出参数 params = (q, G, g, H0, ℓ, H1, H2)。
-
密钥生成阶段
:
-
单个用户 A
:秘密密钥 skA 是 Z∗q 中的随机元素,公钥 pkA = gskA。
-
集体用户 B
:共同公钥 pkB = gskB,每个用户 Bj 接收 skB 的 (t, n) - 门限份额 skB,j。
-
签密阶段(Σ.Sign(params, m, pkB, skA))
:
1. 随机选择 r ∈ Z∗q,计算 R = gr。
2. 计算 k = H0(R, pkB, (pkB)r, pkA) 和 c = m ⊕ k。
3. 随机选择 α1, α2 ∈ Z∗q,计算 Y1 = gα1 和 Y2 = gα2。
4. 计算 ¯g = H1(c, R, Y1, Y2, pkA, pkB),然后计算 ¯R = ¯gr 和 ¯Y1 = ¯gα1。
5. 计算 h = H2(c, R, ¯g, ¯R, Y1, Y2, ¯Y1, pkA, pkB)。
6. 计算 s1 = α1 − h · r mod q。
7. 计算 s2 = α2 − h · skA mod q。
8. 返回签密结果 C = (c, R, ¯R, h, s1, s2)。
-
门限去签密阶段(Σ.Uns(params, C, pkA, B′, {skB,j}Bj∈B′))
:
1. 每个 Bj ∈ B′ 计算 ¯g = H1(c, R, gs1 · Rh, gs2 · (pkA)h, pkA, pkB),并检查等式 h = H2(c, R, ¯g, ¯R, gs1 · Rh, gs2 · (pkA)h, ¯gs1 · ¯Rh, pkA, pkB) 是否成立。
2. 若等式不成立,Bj 广播 (j, ⊥)。
3. 否则,Bj 广播值 Tj = RskB,j。
4. 从 t 个有效 Tj 值中,通过指数插值恢复 RskB。
5. 计算 k = H0(R, pkB, RskB, pkA)。
6. 返回消息 m = c ⊕ k。
以下是新方案签密过程的 mermaid 流程图:
graph TD;
A[开始] --> B[选择随机 r ∈ Z∗q];
B --> C[计算 R = gr];
C --> D[计算 k = H0(R, pkB, (pkB)r, pkA)];
D --> E[计算 c = m ⊕ k];
E --> F[选择随机 α1, α2 ∈ Z∗q];
F --> G[计算 Y1 = gα1];
F --> H[计算 Y2 = gα2];
G --> I[计算 ¯g = H1(c, R, Y1, Y2, pkA, pkB)];
I --> J[计算 ¯R = ¯gr];
I --> K[计算 ¯Y1 = ¯gα1];
J --> L[计算 h = H2(c, R, ¯g, ¯R, Y1, Y2, ¯Y1, pkA, pkB)];
L --> M[计算 s1 = α1 − h · r mod q];
L --> N[计算 s2 = α2 − h · skA mod q];
M --> O[返回 C = (c, R, ¯R, h, s1, s2)];
N --> O;
4. 新方案的安全分析
新方案的安全性基于两个计算假设:Diffie - Hellman(DH)问题和离散对数(DL)问题。
-
不可伪造性
:在随机预言模型下,若离散对数问题难解,则该方案具有不可伪造性。具体来说,对于任何多项式时间攻击者 AUNF,存在一个离散对数问题的求解器 ADL,使得 AdvADL(λ) ≥ O(AdvAUNF(λ)2)。
-
证明思路
:假设存在攻击者 AUNF 能以一定优势打破方案的不可伪造性,构造算法 ADL 来求解离散对数问题。ADL 初始化攻击者 AUNF,处理其哈希查询、签密查询,当 AUNF 输出有效伪造时,ADL 重复执行攻击者过程,得到两个不同的有效伪造,从而求解离散对数问题。
-
不可区分性
:在随机预言模型下,将方案的 IND - CCA 安全性归约到 DH 问题的难解性。对于任何多项式时间攻击者 AIND - CCA,存在一个 DH 问题的求解器 ADH,使得 AdvADH(λ) ≥ AdvAIND - CCA(λ)/2。
-
证明思路
:假设存在攻击者 AIND - CCA 能以一定优势打破方案的 IND - CCA 安全性,构造算法 ADH 来求解 DH 问题。ADH 初始化攻击者 AIND - CCA,处理其哈希查询、去签密查询,当 AIND - CCA 输出挑战消息时,ADH 生成挑战密文,最终根据攻击者的猜测结果,以非零概率得到 DH 问题的解。
以下是新方案安全分析的总结表格:
| 安全性属性 | 基于的问题 | 证明模型 | 结论 |
| ---- | ---- | ---- | ---- |
| 不可伪造性 | 离散对数问题 | 随机预言模型 | AdvADL(λ) ≥ O(AdvAUNF(λ)2) |
| 不可区分性 | Diffie - Hellman 问题 | 随机预言模型 | AdvADH(λ) ≥ AdvAIND - CCA(λ)/2 |
全安全门限去签密:现状与新方案
5. 新方案安全分析的详细步骤
5.1 不可伪造性证明的详细步骤
-
初始化阶段
:
- 算法 ADL 接收离散对数问题实例 (G, y),目标是找到 x 使得 y = gx。
- 初始化攻击者 AUNF,给予 params = (q, G, g, H0, ℓ, H1, H2),其中 H0 和 H1 由 ADL 任意选择,H2 建模为随机预言机,ADL 维护表格 TAB2 来回答 H2 的查询。
- 当 AUNF 选择目标发送者 A⋆并请求生成密钥时,ADL 将 A⋆的公钥 pkA⋆定义为 y 并发送给 AUNF,此时对应的私钥 skA⋆就是离散对数问题的解。
-
哈希查询处理
:
- 当 AUNF 对 H2 进行查询 (c, R, ¯g, ¯R, Y1, Y2, ¯Y1, pkA, pkB) 时,ADL 检查 TAB2 中是否已有该输入。
- 若有,则返回匹配的输出 h;若没有,则随机选择一个值 h ∈ Zq 作为输出返回给 AUNF,并将 H2(c, R, ¯g, ¯R, Y1, Y2, ¯Y1, pkA, pkB) = h 加入 TAB2。
-
签密查询处理
:
- 当 AUNF 对发送者 A⋆进行签密查询 (m, pkB) 时,ADL 随机选择 r ∈ Z∗q,计算 R = gr,k = H0(R, pkB, (pkB)r, pkA⋆) 和 c = m⊕k。
-
模拟有效知识证明来完成密文的其余部分:
- 随机选择 h, s1, s2 ∈ Zq,计算 Y1 = gs1 · Rh 和 Y2 = gs2 · (pkA⋆)h。
- 计算 ¯g = H1(c, R, Y1, Y2, pkA⋆, pkB),然后计算 ¯R = ¯gr 和 ¯Y1 = ¯gs1 · ¯Rh。
- 若输入 (c, R, ¯g, ¯R, Y1, Y2, ¯Y1, pkA⋆, pkB) 已在 TAB2 中(概率可忽略),则回到步骤 1。
- 否则,将 h = H2(c, R, ¯g, ¯R, Y1, Y2, ¯Y1, pkA⋆, pkB) 错误地添加到 TAB2 中。
- 最终将签密结果 C = (c, R, ¯R, h, s1, s2) 发送给 AUNF。
-
伪造与求解
:
- 当 AUNF 输出成功的伪造 (pkB⋆, C⋆) 时,由于伪造有效,有 h⋆ = H2(c⋆, R⋆, ¯g⋆, ¯R⋆, Y ⋆1, Y ⋆2, ¯Y ⋆1, pkA⋆, pkB⋆),且该输入未被 ADL 错误添加到 TAB2 中。
- ADL 重复执行攻击者 AUNF,保持相同随机性但改变随机预言机 H2 从查询 query⋆ 开始的输出。
- 以非零概率(与第一次成功伪造的概率 AdvAUNF(λ) 成二次关系)得到两个不同的成功伪造 C⋆和 C′⋆,满足 gs⋆2 · (pkA⋆)h⋆ = gs′⋆2 · (pkA⋆)h′⋆,从而得到 y = pkA⋆ = (gs⋆2−s′⋆2)1/(h′⋆−h⋆),ADL 输出 x = (s⋆2−s′⋆2)/(h′⋆−h⋆) mod q 作为离散对数问题的解。
以下是不可伪造性证明步骤的 mermaid 流程图:
graph TD;
A[接收离散对数问题实例 (G, y)] --> B[初始化攻击者 AUNF];
B --> C[处理 AUNF 密钥生成请求,设置 pkA⋆ = y];
C --> D[处理 AUNF 哈希查询];
D --> E[处理 AUNF 签密查询];
E --> F[等待 AUNF 输出伪造];
F --> G[重复执行 AUNF,改变 H2 输出];
G --> H[得到两个不同伪造,求解离散对数问题];
5.2 不可区分性证明的详细步骤
-
初始化阶段
:
- ADH 接收输入 G, ga, gb,目标是计算 gab。
- 初始化攻击者 AIND - CCA,给予 params = (q, G, g, H0, ℓ, H1, H2),H0、H1 和 H2 建模为随机预言机,ADH 维护三个表格 TAB0、TAB1 和 TAB2 来回答哈希查询。
- 定义目标集体 B⋆的公钥 pkB⋆ = gb,隐式定义 skB⋆ = b。对于 B⋆的受损成员,随机独立选择份额 {skB⋆,j}Bj∈B,通过指数插值计算所有成员的 DB⋆,j = gskB⋆,j。
-
哈希查询处理
:
- 对于所有哈希查询,ADH 检查对应表格中是否已有该输入。
- 若有,则返回已有输出;若没有,则随机选择新输出返回给 AIND - CCA,并将输入 - 输出关系添加到对应表格中。
- 对于 H1 查询,输出 ¯g 选择为 gb 的随机幂,即随机选择 β ∈ Z∗q,计算 ¯g = (gb)β,并将 β 作为额外值存储在 TAB1 中。
- 当 ADH 收到 H0 查询且前两个元素为 ga 和 gb 时,将查询的第三个元素添加到 TAB⋆中。
-
去签密查询处理
:
- 对于目标集体 B⋆的去签密查询 (pkA, C),首先检查零知识证明 (h, s1, s2) 的有效性,即检查 h = H2(c, R, ¯g, ¯R, gs1·Rh, gs2·(pkA)h, ¯gs1· ¯Rh, pkA, pkB⋆),其中 ¯g = H1(c, R, gs1·Rh, gs2 · (pkA)h, pkA, pkB⋆) = (gb)β。
- 若等式不成立,查询答案为 ⊥;若成立,ADH 计算 RskB⋆ = ¯R1/β,对于受损成员,已知 skB⋆,j 可计算 RskB⋆,j,通过指数插值计算其余成员的 RskB⋆,j,完成去签密过程并将消息 m 等信息发送给 AIND - CCA。
-
挑战阶段
:
- 当 AIND - CCA 输出两个等长消息 m0, m1 和发送者 A⋆的密钥对 (skA⋆, pkA⋆) 时,ADH 定义 R⋆ = ga,随机选择 c⋆∈{0, 1}ℓ, h⋆, s⋆1, s⋆2 ∈ Zq 和 β⋆∈ Z∗q。
- 计算 ¯g⋆ = gβ⋆, ¯R⋆ = (ga)β⋆, Y ⋆1 = gs⋆1 · (R⋆)h⋆, Y ⋆2 = gs⋆2 · (pkA⋆)h⋆ 和 ¯Y ⋆1 = ¯gs⋆1 · ( ¯R⋆)h⋆。
- 若输入 (c⋆, R⋆, Y ⋆1, Y ⋆2, pkA⋆, pkB⋆) 已在 TAB1 中或 (c⋆, R⋆, ¯g⋆, ¯R⋆, Y ⋆1, Y ⋆2, ¯Y ⋆1, pkA⋆, pkB⋆) 已在 TAB2 中,则重新随机选择值。
- 将 ¯g⋆ = H1(c⋆, R⋆, Y ⋆1, Y ⋆2, pkA⋆, pkB⋆) 添加到 TAB1,h⋆ = H2(c⋆, R⋆, ¯g⋆, ¯R⋆, Y ⋆1, Y ⋆2, ¯Y ⋆1, pkA⋆, pkB⋆) 添加到 TAB2,将挑战密文 C⋆ = (c⋆, R⋆, ¯R⋆, h⋆, s⋆1, s⋆2) 发送给 AIND - CCA。
-
更多去签密查询处理
:
- AIND - CCA 可以进行更多哈希和去签密查询,处理方式与挑战前相同。
- 若查询的 ¯g = H1(c, R, gs1 · Rh, gs2 · (pkA)h, pkA, pkB⋆) = ¯g⋆,则该查询为挑战密文,禁止 AIND - CCA 进行该查询。
-
最终分析
:
- 当 AIND - CCA 输出猜测位 b′,假设其成功概率显著大于 1/2(随机猜测)。
- 由于 H0 建模为随机函数,只有当 AIND - CCA 向随机预言机 H0 查询挑战 C⋆对应的输入 (ga, gb, gab, pkA⋆) 时才会出现这种情况,因此以非零概率 AdvAIND - CCA(λ)/2,gab 在 TAB⋆中。
以下是不可区分性证明步骤的总结表格:
| 阶段 | 操作内容 |
| ---- | ---- |
| 初始化 | 接收输入,初始化攻击者,设置集体公钥,处理受损成员份额 |
| 哈希查询 | 检查表格,处理输入 - 输出关系 |
| 去签密查询 | 验证证明,计算份额,完成去签密过程 |
| 挑战 | 生成挑战密文 |
| 更多去签密查询 | 按相同方式处理,禁止挑战密文查询 |
| 最终分析 | 根据攻击者猜测,判断 gab 是否在 TAB⋆中 |
6. 总结
新的全安全门限去签密方案通过对具有门限解密功能的安全公钥加密方案进行修改,实现了不可伪造性和不可区分性。其安全性基于离散对数问题和 Diffie - Hellman 问题的难解性,在随机预言模型下进行了严格证明。与现有方案相比,该方案解决了现有方案存在的安全弱点,为门限去签密领域提供了更可靠的解决方案。
在实际应用中,可根据具体场景选择合适的签名和加密参数,同时注意随机预言模型在实际实现中的近似问题。未来可以进一步研究该方案在不同网络环境和攻击模型下的性能和安全性,以及如何将其与其他安全机制相结合,提供更全面的安全保障。
超级会员免费看
764

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



