CPA 不可区分性实验(Chosen Plaintext Attack Indistinguishability Experiment, 简称 IND-CPA 实验)用于评估加密方案在 选择明文攻击 下是否具有不可区分性。这个实验通过形式化方法描述攻击者与系统之间的交互过程,测试攻击者能否通过观察密文来分辨加密的是哪个明文。
实验流程
- 初始化阶段 攻击者 知道加密方案 和消息空间 。(对于公钥语境下还知道公钥)
- 选择明文阶段
- 攻击者 提供一对消息 ,并将它们发送给挑战者。
- 这些消息可以是攻击者任意选择的,但它们必须是有效的明文。
- 密文生成阶段
- 系统通过密钥生成算法 Gen 生成一个随机密钥 k。
- 挑战者从均匀分布中随机选择一个比特 。
- 使用加密算法 加密消息 生成密文 c,然后将 c 发送给攻击者 。
- 猜测阶段
- 攻击者 根据密文 和自己对系统的了解,输出一个比特 来猜测密文是由 还是 加密得到的。
- 判定阶段
- 如果 ,攻击成功。
- 如果 ,攻击失败。
安全性定义
-
理想情况下的攻击者能力 如果加密方案是不可区分的(满足 IND-CPA),攻击者 A 无法通过观察密文 c 判断它是由 还是 加密得到的,其猜测 b’ 的成功概率应该接近 。
-
形式化定义 加密方案 被称为 IND-CPA 安全,当对任意多项式时间的攻击者 A:
是一个关于安全参数 的可忽略函数 。
Adv 表示优势 Advantage
实验关键点
-
攻击者的能力 攻击者可以选择任意的明文对 来测试加密方案的安全性,但无法访问解密服务(否则属于 CCA 模型)。
-
随机性的重要性 加密方案中必须有足够的随机性,例如在加密过程中引入随机向量(IV),否则攻击者可以通过密文模式轻易区分明文。
-
安全性目标 实验的目标是验证加密方案是否在 CPA 模型下满足不可区分性(Indistinguishability),即攻击者无法从密文中获取有效信息。
对于适应性选择明文: