CPA 不可区分性实验(Chosen Plaintext Attack Indistinguishability Experiment, 简称 IND-CPA 实验)用于评估加密方案在 选择明文攻击 下是否具有不可区分性。这个实验通过形式化方法描述攻击者与系统之间的交互过程,测试攻击者能否通过观察密文来分辨加密的是哪个明文。


实验流程

  1. 初始化阶段 攻击者 知道加密方案 和消息空间 。(对于公钥语境下还知道公钥)
  2. 选择明文阶段
    • 攻击者 提供一对消息 ,并将它们发送给挑战者。
    • 这些消息可以是攻击者任意选择的,但它们必须是有效的明文。
  3. 密文生成阶段
    • 系统通过密钥生成算法 Gen 生成一个随机密钥 k。
    • 挑战者从均匀分布中随机选择一个比特
    • 使用加密算法 加密消息 生成密文 c,然后将 c 发送给攻击者
  4. 猜测阶段
    • 攻击者 根据密文 和自己对系统的了解,输出一个比特 来猜测密文是由 还是 加密得到的。
  5. 判定阶段
    • 如果 ,攻击成功。
    • 如果 ,攻击失败。

安全性定义

  1. 理想情况下的攻击者能力 如果加密方案是不可区分的(满足 IND-CPA),攻击者 A 无法通过观察密文 c 判断它是由 还是 加密得到的,其猜测 b’ 的成功概率应该接近

  2. 形式化定义 加密方案 被称为 IND-CPA 安全,当对任意多项式时间的攻击者 A:

    是一个关于安全参数 可忽略函数

Adv 表示优势 Advantage


实验关键点

  1. 攻击者的能力 攻击者可以选择任意的明文对 来测试加密方案的安全性,但无法访问解密服务(否则属于 CCA 模型)。

  2. 随机性的重要性 加密方案中必须有足够的随机性,例如在加密过程中引入随机向量(IV),否则攻击者可以通过密文模式轻易区分明文。

  3. 安全性目标 实验的目标是验证加密方案是否在 CPA 模型下满足不可区分性(Indistinguishability),即攻击者无法从密文中获取有效信息。


对于适应性选择明文: