翻译自:
https://crypto.stackexchange.com/questions/26689/easy-explanation-of-ind-security-notions
理想的加密方案 E E E 是这样的,对每一个密文 C = E ( K , M ) C=E(K,M) C=E(K,M).如果对于对手来说,密钥是不可见的,那么区分 M M M 的概率是可忽略不计的。由于这在实践中是不可能的,第二个最合理的方式是定义足够强的限制来满足一些安全的定义。IND-notation 根据一些攻击游戏提供了这样的定义,在游戏中,挑战者保持它的密钥,对手有一定的能力并且对手的目标是破坏整个加密系统。
通常来说,一个加密系统将会有密钥生成算法 K G KG KG,这将会生成一个密钥对 K E , K D K_E,K_D KE,KD,(用来加密的密钥和用来解密的密钥),还有一个加密算法和一个解密算法。
IND-CPA INDistinguishability under Chosen Plaintext Attack 选择明文攻击下的不可区分性。
总的来说:对手生成两个相同长度的明文信息,挑战者随机地决定加密其中一个,对手尝试去猜测哪个信息被加密了。
算法:
在这个场景中,主要引入的概念是多项式界。现在,我们对密码的期望被减弱:从“赢得概率是可忽略不计的”,到“在一个合理的时间片中赢得概率是可忽略不计的”。对相同长度明文的限制是为了防止对手只是对比密文长度就能赢。然而,这种要求太弱,特别是因为它假设在对手和挑战者之间只有单一的交互。
IND-CCA1: INDistinguishability under Chosen Ciphertext Attack
总的来说:游戏的目标和IND-CPA是一样的。对手有额外的能力:调用一个加密或者解密oracle。这意味着,对手可以在得到挑战密文之前加密或者解密任意信息。
算法:
IND-CCA1考虑了重复交互的可能性,这意味着安全不会随着时间的推移而减弱。
IND-CCA2: INDistinguishability under adaptive Chosen Ciphertext Attack
总的来说:除了IND-CCA1的能力以外,对手在收到 C C C后可以访问oracle,但是不可以发送 C C C给解密oracle。
算法:
IND-CCA2建议,在了解密文之后使用解密oracle在某些方案中具有合理的优势,因为可以根据特定的密文定制对oracle的请求。