门限密码(Threshold Encryption, TE)
门限加密由 Desmedt 于 1994 年提出,其核心思想是将解密权限分散到多个服务器中,既防止单点权力滥用,又增强系统的容错性。
什么是门限加密
在传统公钥加密中,持有私钥者拥有至高无上的解密权。一旦私钥泄露或被恶意使用,后果不堪设想。
门限加密通过 \((t, n)\) 门限机制解决此问题:
- 将私钥分割为 \(n\) 个份额,分发给 \(n\) 个独立的解密服务器。
- 解密时:至少需要收集 \(t\) 个(门限值)服务器生成的有效解密份额,才能恢复出明文。
- 特点:
- 权力分散:最多 \(t-1\) 个腐败服务器无法解密,避免单点滥用。
- 容错性:只要不少于 \(t\) 个服务器在线且诚实,系统就能正常工作(即使部分服务器宕机)。
方案的形式化定义(5 个算法)
一个标准的 \((t, n)\) 门限加密方案由以下 5 个多项式时间算法组成:
| 算法 | 输入 | 输出 | 功能描述 |
|---|---|---|---|
| KeyGen | 安全参数 \(\lambda\),服务器总数 \(n\),门限值 \(t\) | 公钥 \(pk\),验证密钥 \(vk\),私钥份额向量 \(sk=(sk_1,\dots,sk_n)\) | 生成系统密钥。第 \(i\) 个服务器获得 \((i, sk_i)\)。 |
| Encrypt | 公钥 \(pk\),明文 \(m\) | 密文 \(c\) | 与普通加密无异,使用公钥加密。 |
| ShareDecrypt | 公钥 \(pk\),服务器索引 \(i\),私钥份额 \(sk_i\),密文 \(c\) | 解密份额 \((i, \mu_i)\) 或失败符号 \(\perp\) | 每个解密服务器利用自己的份额生成部分解密结果。 |
| ShareVerify | 公钥 \(pk\),验证密钥 \(vk\),密文 \(c\),解密份额 \(\mu_i\) | 1(有效)或 0(无效) | 验证某一解密份额是否由合法服务器生成且未被篡改。 |
| ShareCombine | 公钥 \(pk\),验证密钥 \(vk\),密文 \(c\),\(t\) 个解密份额集合 | 明文 \(m\) 或失败符号 \(\perp\) | 组合至少 \(t\) 个有效份额,恢复出原始明文。 |
KeyGen 的特殊性:与普通加密不同,KeyGen 输出中包含了验证密钥 \(vk\)(用于公开校验份额合法性)和多个私钥份额。
正确性要求
一个好的门限加密方案必须同时满足以下两条性质:
-
份额有效性
任意诚实的解密服务器生成的份额,必须能通过公开验证。即对于任意密文 \(c\),若有 \((i, \mu_i) \leftarrow \text{ShareDecrypt}(pk, i, sk_i, c)\),则:\[\text{ShareVerify}(pk, vk, c, \mu_i) = 1 \] -
门限恢复性
如果 \(c\) 是由 \(\text{Encrypt}(pk, m)\) 生成的合法密文,且收集到任意 \(t\) 个不同服务器生成的有效解密份额,则组合算法必须能恢复出明文:\[m \leftarrow \text{ShareCombine}(pk, vk, c, \{\mu_1, \dots, \mu_t\}) \]
安全模型
门限加密的安全模型比普通公钥加密更为复杂。它不仅需要抵抗外部的选择密文攻击(CCA),还必须抵抗内部恶意服务器的干扰。因此,标准安全模型包含两个并行的游戏。
1. 选择密文安全性(IND-CCA)
该游戏确保即使敌手能勾结 \(t-1\) 个服务器,并访问解密谕言机,也无法区分挑战密文对应的明文。这是语义安全的最高级别之一。
游戏流程(挑战者 vs 敌手 \(\mathcal{A}\)):
- 阶段一(腐败集合选定):敌手指定 \(t-1\) 个被其控制的服务器集合 \(\Gamma\)。
- 阶段二(系统建立):挑战者运行 KeyGen,将公钥 \(pk\)、验证密钥 \(vk\),以及 \(\Gamma\) 中服务器的私钥份额 \(sk_j\) 发送给敌手。
- 阶段三(询问阶段1):敌手自适应地发起解密询问 \((c, i)\)(即询问密文 \(c\) 在服务器 \(i\) 上的份额)。挑战者正常返回 \(\text{ShareDecrypt}\) 的结果。
- 阶段四(挑战):敌手提交两个等长消息 \(m_0, m_1\)。挑战者随机选 \(b \in \{0,1\}\),计算挑战密文 \(c^* = \text{Encrypt}(pk, m_b)\) 并返回。
- 阶段五(询问阶段2):敌手继续发起解密询问,但限制:任何询问都不能是 \((c^*, i)\)(即不能直接询问挑战密文的任何份额)。
- 阶段六(猜测):敌手输出 \(b'\)。若 \(b=b'\) 则获胜。
优势定义:
若任意 PPT 敌手的优势可忽略,则方案满足 IND-CCA 安全。
2. 解密一致性(Consistency)
这是门限加密特有的安全要求。它的目标是防止解密分歧——即防止恶意服务器生成看似有效但导向不同明文的份额,导致诚实用户得到错误的解密结果。
游戏流程:
- 阶段一至阶段三:与 IND-CCA 游戏的前三阶段完全相同(敌手可选定腐败服务器并进行自适应份额询问)。
- 阶段四(挑战输出):询问阶段结束后,敌手输出一个密文 \(c\),以及两组 \(t\) 个解密份额集合 \(\mu\) 和 \(\mu'\)。
- 获胜条件:若以下三个条件同时满足,敌手获胜:
- 两组份额中的所有份额都通过 \(\text{ShareVerify}\) 校验(即都是有效的);
- 两组份额各自来自 \(t\) 个不同的服务器;
- 两组份额组合后得到的明文不同:\[\text{ShareCombine}(pk, vk, c, \mu) \neq \text{ShareCombine}(pk, vk, c, \mu') \]
如果任意 PPT 敌手在上述游戏中获胜的优势可忽略,则称该方案满足解密一致性。
如果不满足一致性,恶意服务器可能在联合解密时给不同的请求者不同的结果(例如,给审计员返回真数据,给普通用户返回假数据),从而破坏系统的可信度。
总结
| 维度 | 核心要点 |
|---|---|
| 定义(5 算法) | KeyGen(产出 pk, vk, 多份 sk)、Encrypt、ShareDecrypt、ShareVerify、ShareCombine。 |
| 正确性 | 1. 诚实份额必通过验证;2. 任意 t 个有效份额必能恢复明文。 |
| IND-CCA 安全 | 敌手勾结 \(t-1\) 人,仍无法区分挑战密文(禁止询问挑战密文份额)。 |
| 解密一致性 | 敌手无法构造两组不同的有效份额,导致组合出两个不同的明文(防恶意篡改/分歧)。 |

浙公网安备 33010602011771号