密码学理论06:CCA安全;认证加密

选择密文攻击 

选择密文 (CCA) 攻击的定义类似于选择明文攻击 (CPA),但攻击者不仅可以访问加密 oracle Enck(·),还可以访问解密 oracle Deck(·)。

密码学理论06:CCA安全;认证加密_第1张图片

 填充预言机攻击 Padding-oracle attacks

讨论攻击者发起一种非常弱(且现实)的选择密文攻击形式的攻击:他只需要知道所选择的密文是否有效(合法)。

——PKCS#5填充

CBC 只能加密长度是底层 PRP 块大小(通常为 16 字节)的倍数的消息。如果消息不具有此属性,则需要将其“填充”到正确的长度。

假设 m 的长度为 L 字节,令 b := 16 − L mod 16(所以 L + b 是 16 的倍数)。要填充 m,只需将 b 乘以值 b 附加到末尾(除非 b = 0 然后将其添加 16 次):

Hello → Hello||BBBBBBBBBBB
HelloWorld → HelloWorld||666666
abcdefghijklmnop → abcdefghijklmnop||0000000000000000

去除填充,(解密)读取最后一个字节0xb,然后检查最后b个字节是否全部为0xb,如果是,则去除最后b个字节并输出剩余的字符串,否则输出填充错误。

密码学理论06:CCA安全;认证加密_第2张图片

 解密检查明文是否有正确的填充。如果没有返回错误。如果可以访问解密 oracle 来判断密文是否有效,则可以恢复整个消息!

如果我们将 c1 更改为 a c ′ = c1 ⊕ △,最后一个块将被解码为 m ′ 2 = F −1 k (c2) ⊕ c ′ 1 = m2 ⊕ △。对手可以访问解密 oracle,它只告诉解密是否失败。

可以学习到 b:更改 c1 的第一个字节,如果解密失败则 b = 16,否则更改 c1 的第二个字节,如果解密失败 b = 15,等等:

Hello||BBBBBBBBBBB → Xello||BBBBBBBBBBB padding ok
Hello||BBBBBBBBBBB → XXXXX||XBBBBBBBBBB not ok

一旦 A 学习到了 b,他就知道 m2 以 M b · · · b(共b个b)结尾。定义 △i  = 0...0i(b + 1)...(b + 1)【b个b+1】⊕0...0 b...b【b个b】。用 c1 ⊕ △i 替换 c1 将返回填充错误,除非 m2 ⊕ △i 的最后 b + 1 个字节都是 (b + 1),当且仅当 M的最后一个字节 ⊕ i = (b + 1)。最多可以在 2^8 个查询中学习到M的最后一个字节:

Helloworld||666666 → Helloworl||7777777

CCA安全

【CCA安全的experiment】

密码学理论06:CCA安全;认证加密_第3张图片

 Π =(Gen,Enc,Dec) 在选择密文攻击下具有无法区分的加密,或者对于每个 PPT 对手来说都是 CCA安全的,若experient满足:

Pr[Privk_{A,\Pi }^{cca}(n)=1]\leq 1/2+negl(n)

CCA 安全意味着/需要不可展性。

不可展的加密方案具有这样的性质:对手修改给定的密文,结果解密为与原始明文无关的明文。

认证加密 Authenticated encryption

我们已经了解了如何使用(对称)加密实现机密性,以及使用 MAC 进行身份验证。

“认证加密”同时实现了这两者,其中机密性意味着 CCA 安全,但由于 MAC 在语义上与加密不同,我们需要定义加密方案的认证性的含义。——敌手无法伪造一个合法的密文

【experiment:敌手无法伪造合法的密文】

密码学理论06:CCA安全;认证加密_第4张图片

 Π 的不可伪造性定义:如果对于所有 PPT 对手 A,有一个可忽略的函数 negl 使得:

Pr[Enc-Forge_{A,\Pi }(n)=1]\leq negl(n)

(1)如果对称加密方案是 CCA 安全不可伪造的,则它是认证加密 (AE) 方案。

【experiment:类UC】

密码学理论06:CCA安全;认证加密_第5张图片

 (2)如果对于所有 PPT 对手 A 都有一个可忽略的函数 negl 使得下式满足,那么对称加密方案是认证加密 (AE) 方案:

Pr[Privk_{A,\Pi }^{ae}(n)=1]\leq 1/2+negl(n)

(1)、(2)两种定义等价

认证加密方案

多个独立的安全的密码工具组合 ≠ 安全的密码系统

  1. 加密-and-认证:t可能显示整个 m(例:t'=m||t)——不满足通用的机密性;(若是确定性MAC)对相同的m,t也相同——无法保证CPA安全。密码学理论06:CCA安全;认证加密_第6张图片
  2. 认证-then-加密:若Enc不是CCA安全的,则Enc'也不是CCA安全的(例:padding oracle attack)——SSL方案,但无法抵御计时攻击。密码学理论06:CCA安全;认证加密_第7张图片
  3. 加密-then-认证:如果 ΠM 是强 MAC 而 ΠE 是 CPA 安全的,则 ΠAE 是认证加密方案。密码学理论06:CCA安全;认证加密_第8张图片

 标准方案

GCM、CCM、ChaCha20-Poly1305

你可能感兴趣的:(密码学,安全)