当前位置: 首页 > 工具软件 > IND > 使用案例 >

“IND-”安全概念的简单解释(IND-CPA,IND-CCA等)

石苏燕
2023-12-01

IND-CPA,IND-CCA

翻译自:
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 选择明文攻击下的不可区分性。

    总的来说:对手生成两个相同长度的明文信息,挑战者随机地决定加密其中一个,对手尝试去猜测哪个信息被加密了。

    算法:

    1. 挑战者: K E , K D = K G K_E,K_D=KG KE,KD=KG(安全参数)
    2. 对手: m 0 , m 1 m_0,m_1 m0,m1= 选择两个相同长度的明文。发送 m 0 , m 1 m_0,m_1 m0,m1给挑战者。在多项式时间内执行 额外的操作包括调用加密oracle
    3. 挑战者: b b b=随机选择0或者1
    4. 挑战者: C : = E ( K E , m b ) C:=E(K_E,m_b) C:=E(KE,mb) 发送C给对手
    5. 对手:在多项式时间内执行额外的操作,包括对加密oracle的调用。输出猜测 g u e s s guess guess
    6. 如果 g u e s s = b guess=b guess=b 对手赢

    在这个场景中,主要引入的概念是多项式界。现在,我们对密码的期望被减弱:从“赢得概率是可忽略不计的”,到“在一个合理的时间片中赢得概率是可忽略不计的”。对相同长度明文的限制是为了防止对手只是对比密文长度就能赢。然而,这种要求太弱,特别是因为它假设在对手和挑战者之间只有单一的交互。

  • IND-CCA1: INDistinguishability under Chosen Ciphertext Attack

    总的来说:游戏的目标和IND-CPA是一样的。对手有额外的能力:调用一个加密或者解密oracle。这意味着,对手可以在得到挑战密文之前加密或者解密任意信息。

    算法:

    1. 挑战者: K E , K D = K G K_E,K_D=KG KE,KD=KG(安全参数)
    2. 对手(多项式有界的次数):对任意明文或者密文分别调用加密或者解密oracle
    3. 对手: m 0 , m 1 m_0,m_1 m0,m1= 选择两个相同长度的明文。发送 m 0 , m 1 m_0,m_1 m0,m1给挑战者。在多项式时间内执行 额外的操作包括调用加密oracle
    4. 挑战者: b b b=随机选择0或者1
    5. 挑战者: C : = E ( K E , m b ) C:=E(K_E,m_b) C:=E(KE,mb) 发送C给对手
    6. 对手:在多项式时间内执行额外的操作。输出猜测 g u e s s guess guess
    7. 如果 g u e s s = b guess=b guess=b 对手赢

    IND-CCA1考虑了重复交互的可能性,这意味着安全不会随着时间的推移而减弱。

  • IND-CCA2: INDistinguishability under adaptive Chosen Ciphertext Attack

    总的来说:除了IND-CCA1的能力以外,对手在收到 C C C后可以访问oracle,但是不可以发送 C C C给解密oracle。

    算法:

    1. 挑战者: K E , K D = K G K_E,K_D=KG KE,KD=KG(安全参数)
    2. 对手(多项式有界的次数):对任意明文或者密文分别调用加密或者解密oracle
    3. 对手: m 0 , m 1 m_0,m_1 m0,m1= 选择两个相同长度的明文。发送 m 0 , m 1 m_0,m_1 m0,m1给挑战者。在多项式时间内执行 额外的操作包括调用加密oracle
    4. 挑战者: b b b=随机选择0或者1
    5. 挑战者: C : = E ( K E , m b ) C:=E(K_E,m_b) C:=E(KE,mb) 发送C给对手
    6. 对手:在多项式时间内执行额外的操作,包括对不同于 C C C的密文的oracle的调用。输出猜测 g u e s s guess guess
    7. 如果 g u e s s = b guess=b guess=b 对手赢

    IND-CCA2建议,在了解密文之后使用解密oracle在某些方案中具有合理的优势,因为可以根据特定的密文定制对oracle的请求。

 类似资料: