门限密码(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\)(用于公开校验份额合法性)和多个私钥份额

正确性要求

一个好的门限加密方案必须同时满足以下两条性质:

  1. 份额有效性
    任意诚实的解密服务器生成的份额,必须能通过公开验证。即对于任意密文 \(c\),若有 \((i, \mu_i) \leftarrow \text{ShareDecrypt}(pk, i, sk_i, c)\),则:

    \[\text{ShareVerify}(pk, vk, c, \mu_i) = 1 \]

  2. 门限恢复性
    如果 \(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'\) 则获胜。

优势定义

\[\text{Adv}^{\text{IND-CCA}} = \left|\Pr[b' = b] - \frac{1}{2}\right| \]

若任意 PPT 敌手的优势可忽略,则方案满足 IND-CCA 安全。

2. 解密一致性(Consistency)

这是门限加密特有的安全要求。它的目标是防止解密分歧——即防止恶意服务器生成看似有效但导向不同明文的份额,导致诚实用户得到错误的解密结果。

游戏流程

  • 阶段一至阶段三:与 IND-CCA 游戏的前三阶段完全相同(敌手可选定腐败服务器并进行自适应份额询问)。
  • 阶段四(挑战输出):询问阶段结束后,敌手输出一个密文 \(c\),以及两组 \(t\) 个解密份额集合 \(\mu\)\(\mu'\)
  • 获胜条件:若以下三个条件同时满足,敌手获胜:
    1. 两组份额中的所有份额都通过 \(\text{ShareVerify}\) 校验(即都是有效的);
    2. 两组份额各自来自 \(t\) 个不同的服务器;
    3. 两组份额组合后得到的明文不同:

      \[\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\) 人,仍无法区分挑战密文(禁止询问挑战密文份额)。
解密一致性 敌手无法构造两组不同的有效份额,导致组合出两个不同的明文(防恶意篡改/分歧)。
posted @ 2026-06-24 16:17  lumiere_nebula  阅读(32)  评论(0)    收藏  举报