形式陈述
选择密文安全在统一安全实验 公理库 安全实验、对手与优势函数 Security experiment · Security game · Adversarial advantage 以参数化交互实验和输出概率差精确定义攻击目标与对手能力的证明框架。 框架内,把通用加密方案 公理库 加密方案 Encryption scheme · Encryption syntax · 加密语法 由密钥生成、加密和解密算法及其消息、密文与失败接口组成的通用密码方案语法。 的 IND-CPA 对手接口扩展为带解密反馈的实验。记 d k 为解密密钥:私钥方案中 d k = k ,公钥方案中 d k = s k 。对无显式 nonce、关联数据且无状态的核心接口,解密算法应规定
Dec d k ( c ) ∈ M ∪ { ⊥ } , 其中 ⊥ 表示无效密文。对公钥方案,挑战者生成
( p k , s k ) ← Gen ( 1 λ ) 并把 p k 交给 PPT 对手 A ;对手在挑战前可查询 Dec s k ( ⋅ ) ,再提交两条合法等长消息 ( m 0 , m 1 ) 。挑战者均匀选择 b ← { 0 , 1 } ,返回
c ∗ ← Enc p k ( m b ) . 在 IND-CCA2 中,对手在挑战后仍可查询解密 oracle,唯一标准禁止项是直接提交 c ∗ ;最后输出猜测 b ′ 。优势为
Adv Π , A ind - cca 2 ( λ ) = | Pr [ b ′ = b ] − 1 2 | , 并要求它对所有 PPT 对手都可忽略。IND-CCA1 只在挑战前开放解密 oracle。
私钥 IND-CCA 使用同一挑战结构,但攻击者还需要加密 oracle,因为它不知道密钥;解密 oracle 的挑战后限制仍是不得直接查询 c ∗ 。对 nonce 或关联数据接口,oracle 查询与禁止比较的对象应是包含这些字段的完整元组,而不只是裸密文;状态化解密还要把旧状态作为输入、把新状态连同明文或 ⊥ 一起输出。游戏必须固定这些合法调用方式,不能继续沿用上面的无状态函数类型。
若攻击者构造 c ′ ≠ c ∗ ,即使 c ′ 是挑战密文的相关修改或等价重编码,标准游戏通常仍允许查询它。方案若因此泄露挑战明文,正说明它不满足 CCA 安全;定义不会自动把所有“等价”密文也列为禁止项。只有另行规定的标签化、等价类或状态化模型才应增加限制,而且必须明确给出等价关系和 oracle 行为。
直觉
CCA 安全考虑主动攻击者:它不仅观察密文,还会自适应提交精心修改、拼接或重编码的密文,并利用明文、失败符号、错误类型或时间差作为反馈。禁止直接查询挑战密文只是避免让 oracle 原样回答挑战;真正的安全要求恰恰是其他相关查询也不能帮助判断挑战 bit。CCA2 允许挑战后继续试探,比挑战后关闭 oracle 的 CCA1 更强,也更贴近网络协议暴露解密接口的环境。
例子与边界
Textbook RSA 公理库 RSA 函数与 RSA 假设 RSA function · RSA inversion assumption 以模幂置换定义带陷门的 RSA 函数族,并假设随机像对高效对手难以求逆。 具有乘法可塑性,不满足 CCA 安全:由 c = m e 可构造 c ′ = c ⋅ r e ,解密得到 m r ,解密预言机因而可帮助恢复信息。Textbook ElGamal 公理库 ElGamal 加密 ElGamal encryption 在循环群中用临时 Diffie–Hellman 共享值随机掩蔽群元素消息的公钥加密方案。 也可把 ( c 1 , c 2 ) 改成 ( c 1 , c 2 t ) ,使明文乘上公开 t ;它在 DDH 下的 IND-CPA 结论不覆盖这类查询。
RSAES-OAEP 说明“使用了安全填充”仍不是完整安全陈述。OAEP 是一套确定的编码、掩码生成与解码检查流程;相关证明位于随机预言机模型,并依赖明确的 RSA 困难假设、哈希角色和消息—种子—模数长度条件。RFC 8017 规定互操作格式,却不把任意哈希、任意参数或任意冠以 OAEP 的实现自动提升为标准模型下的 CCA 证明。结论必须绑定到具体方案和归约,不能概括成“textbook RSA 加哈希即可”。
抽象游戏把所有无效密文统一映到 ⊥ ,实现也要尽量维持这项观察边界。若不同填充错误产生不同响应、长度或时间,攻击者即使拿不到明文也可能获得 padding oracle。CCA 安全同样不保证签名不可伪造,也通常不隐藏密文长度和访问模式;这些目标需要各自的接口与实验。
推论与应用
CCA 安全强化 CPA 安全 公理库 选择明文安全 Chosen-plaintext attack security · CPA security 对手可自适应查询所选明文加密时仍不能区分挑战消息的安全定义。 ,同时适用于公钥与私钥加密,只是两类方案向攻击者开放加密能力的方式不同。KEM 的 CCA 游戏 公理库 密钥封装机制(KEM) Key encapsulation mechanism · KEM 用公钥产生共享会话密钥及其封装密文,并让私钥持有者恢复或拒绝该密钥的机制。 把挑战改为真实封装密钥与独立随机密钥,并禁止直接解封装挑战 c ∗ ;它不是把 PKE 消息游戏逐字换名。对称场景通常由 认证加密 公理库 认证加密 Authenticated encryption · AE 同时提供机密性与密文完整性的对称加密接口和安全目标。 提供机密性与密文完整性;KEM–DEM 组合 公理库 KEM–DEM 混合加密 KEM–DEM hybrid encryption · Hybrid public-key encryption 以公钥 KEM 封装一次性会话密钥,再由认证 DEM 保护正文,并在匹配安全模型下组合成选择密文安全加密。 还要求认证封装、nonce 与上下文,并匹配 KEM/DEM 的查询模型。安全证明约束抽象 oracle,协议实现还必须统一错误、验证全部关联字段并处理时间侧信道。
参考资料
Eiichiro Fujisaki, Tatsuaki Okamoto, David Pointcheval, and Jacques Stern, “RSA-OAEP Is Secure under the RSA Assumption,” Journal of Cryptology 17, 2004,RSA-OAEP 的具体 ROM 归约及长度条件。
RFC 8017, PKCS #1: RSA Cryptography Specifications Version 2.2 , 2016,RSAES-OAEP 编码、MGF、参数与解码检查。
Oded Goldreich, Foundations of Cryptography, Vol. 2, Cambridge University Press, 2004,Chs. 4–7。
Dan Boneh and Victor Shoup, A Graduate Course in Applied Cryptography, version 0.6, 2023,Parts I–III。