7.Authenticated Encryption
1.Active attacks on CPA-secure encryption
2.definitions
3.Chosen ciphertext attacks
4.Constructions from ciphers and MACs
5.Case study: TLS
6.CBC paddings attacks
7.Attacking non-atomic decryption
1.Active attacks on CPA-secure encryption
私密性,对抗CPA
完整性
本节,设计加密机制,结合完整性和私密性,对抗更强大的攻击者
举例TCP/IP协议,stack根据数据包的dest转发数据包给目标
Ipsec加密数据包,stack会解密数据包再查看端口
没有完整性的话,我们不能获得任何的私密性
bob在密文里修改数据包的dest
怎么根据密文篡改信息呢?
攻击者捕获到的是一个CBC加密的数据,攻击者知道了目标端口的80,但不知道数据是什么。他的目标是构建一个新的加密的数据包,其目标端口是25.
攻击者修改IV,重定向数据包。
这个例子说明没有完整性,一个CPA安全的加密不可能提供私密性。
另一个篡改攻击的例子。只需要能接收到网络流量即可。
每个TCP/IP包,T=checksum校验和,检测传输错误。D=键盘输入
如果服务器收到一个含错误校验和的数据包会扔掉这个包。
这个包都是用计数器模式加密的。
攻击者截获此包,不篡改,记录这个包,发给服务器。
然后把修改后的数据包发给服务器。
把加密的校验和和一个值t异或。把加密的数据和一个值s异或
如果修改的校验和对于这个修改的数据包来说是争取的,服务器会发送一个ACK应答包。否则扔掉。
攻击者多次尝试t和s,可以解出值D。这是一个很好的选择密文攻击的例子。
本节我们要学习很多这种主动攻击。
CPA安全对抗主动攻击者时不能保证安全。
神谕Oracle:可以回答特定的询问,大量节省询问者的计算。
神谕负责解密数据的特定部分。
本章主题,认证加密模式,保证完整性和私密性
我们之前讨论过的CPA安全模式,不应当被使用在加密数据上。
2.definitions
上节两个攻击,破坏CPA安全加密的安全性。
本节定义,认证加密。即存在主动攻击者也能保持安全。
那个符号,叫做bottom,底。
当解密算法输出符号底时,意味着密文是无效的,应当被忽略。
安全的两个性质。
密文完整性。
CPA安全的密码并不提供认证加密。
认真加密的两个影响,1.认证
攻击者无法欺骗接受方Bob,让bob认为Alice发送了一条实际上她没有发过的信息。
攻击者提供信息让Alice加密。攻击者产生某些不是由Alice创造的密文,因为攻击者不能赢下这个密文完整性游戏,他不能做到。意味着当bob接收能被解密算法正确解密的密文时,他知道信息一定来自某知道密钥K的人。
唯一剩下的警告是,认证加密无法抵抗重放攻击。
影响2,可以抵抗选择密文攻击。
3.Chosen cipher text attacks
认证加密是一种很自然的安全观点。
证明,认证加密可以抵抗选择密文攻击。
选择密文安全
攻击者无法区分这两个实验,则是CCA安全的。
左上和左下,最后输出一个特定的猜测b',我们的目标是证明这个b'在两种情况下都是不可区分的。 就是说,两个b'=1的概率是一样的。
由于这个机制有密文完整性,所以左右两个游戏不可区分。
右上和右下,除去无效的询问。
就是由CPA安全的定义得来的。所以右上右下等价。攻击者无法区分。
我们证明力这四个游戏都是等价的。
先证明左上和右上不可区分,左下和右下不可区分,再证明右上和右下不可区分,左最后证明左上和左下不可取分。
两个重要的局限性,
4.Constructions from ciphers and MACs
构建认证加密系统
以前开发者需要自己发明组合加密和mac的方法,来提供某种认证加密。直到2000年才有了认证加密的定义。
三个CPA安全加密和MAC组合的例子。
两个独立的密钥
IPsec中,标签是根据密文计算的。
SSH中,标签是根据明文计算的。
这三个哪个是安全的?
SSH这种,因为MAC前面算法的输出会泄露明文中的一些位,不建议使用。
IPsec更为推荐。计算密文的标签时,我们用这个标签给密文上锁,确保没有人可以产生一个不同的密文,可以确保任何对密文的修改都会被解密者检测出来,因为MAC无法验证。
SSL, mac-then-enc
IPsec, enc-then-mac
SSH, enc-and-mac
实际上,IPsec(enc-then-mac)的方法在任何环境都可以保证认证加密。SSH的方法在一部分环境下更为有效,也可以保证认证加密。但是在抵御一些CCA攻击时候是脆弱的。当使用随机CTR或者CBC时加密机制时,SSH(enc-and-mac)的方法也是安全的。
Galois counter mode(GCM)使用Carter-Wegman MAC的随机计数器模式,非常快。它是待求MAC的信息的一个哈希函数,然后用一个PRF加密哈希的结果。GCM已经很快,运行时间受制于计数器模式。
CBC counter mode(CCM),基于AES,CCM被wifi采用
EAX一会讲
这些模式都是基于新鲜值的。
这些模式被称为带相关数据的认证加密AEAD,这是认证加密的扩展
只有部分数据是加密的,但是所有信息是被认证的。例如IP包
举例一个GCM的API,先加密后MAC
为什么要确保MAC的安全性。
由一个PRP直接构建一个认证加密机制。
OCB机制,比上面的加密和MAC组合机制更快。
OCB是可以并行的。
OCB这么好,为什么不是标准呢?因为各种各样的专利……
总结:左边的推荐使用,右边的不要用。
GCM开销最小,CCM和EAX使用了分组密码所以慢一点,OCB最快
GCM受限于硬件条件,因特尔给它设计了专门的指令。
5.Case study: TLS
认证加密在生活中的使用,举例TLS
双方各有两个密钥,是由TLS密钥交换协议生成的。
TLS记录协议使用了基于状态的加密,每个数据包的加密是基于浏览器和服务器内部维护的特定状态来完成的
计数是为了阻止重放攻击。
一共四个独立的密钥,两个是MAC密钥,两个是加密密钥。
与先加密后MAC唯一的不同是,这里有一个状态即这个计数器被包含在MAC值里面,为了阻止重放攻击。
解密过程
针对解密时有信息泄露的情况,针对TLS的攻击
揭秘者暴露了拒绝的事实,是因为坏的补齐还是因为坏的MAC
下节讲
不要解释为什么出错。
再举个例子,WEP就是个垃圾
攻击者利用CRC校验和的一个性质,CRC基本上是线性的。攻击者篡改了端口,再利用CRC线性的特征修改CRC。
CRC永远不能用于完整性机制。
6.CBC paddings attacks
两个针对认证加密系统的攻击
现在讲针对TLS记录协议的攻击
计时攻击
攻击者想知道第二个分组,先扔掉第三个
如果猜测m[1]分组的最后一个字节是正确的,我们获得了一个格式正确的补齐,这两项会抵消,我们会得到明文的最后一个字节是01.
最后一个字节被猜中,接下来破解倒数第二个,不是用一个字节,而是用两个字节的补齐
针对IMAP协议底层的TLS的攻击
在TLS中,补齐神谕攻击仅对于CBC加密有效,CTR模式无效,不需要补齐
7.Attacking non-atomic decryption
再讲一个攻击方式
SSH使用二元数据包协议
Enc-and-mac
问题出在了,数据包长度被发现了,SSH在验证MAC之前就使用了数据包长度
攻击者在数他发给服务器多少个字节,这就告诉攻击者密文C的前32位的解密结果正好等于已经发送的字节数
教训,解密算法不是原子操作,而是解密一部分数据
在认证长度域之前就使用长度域
第一篇是关于加密和认证的先后顺序。
第二篇讨论了OCB模式
第三篇是描述了上节讨论的补齐神谕攻击
第四篇描述了这节讨论的长度攻击
第五篇描述了很多对加密机制的攻击