介绍完密码学的最重要的功能,现在我们谈一谈政击。攻击有很多种类型,每一种都有其相应的严重性。
1.惟密文攻击
惟密文攻击就是大多数人谈到帔坏一个加密系统时所指的攻击。在这种情况下,因为对方对他们的数据进行了加密,攻击者得到的只是密文。在只知道密文的情形下试图解密一个消息就称为惟密文攻击。这是最为困难的一种攻击方式,因为你获得的信息最少。
2.已知明文攻击
已知明文攻击是一种既知道明文又知道密文的攻击。当然,这种攻击的目标是得到加密密钥。乍一看来这好像是难以置信的:如何知道明文呢?实际上,在很多情形中可以获得通信的明文。有时一些消息是容易预测的。部分可知明文,我们把这些归类为已知明文攻击。已知明文攻击比惟密文攻击更有效。作为一个攻击者,你可以得到比惟密文攻击更多的信息。这些额外的信息当然会对你很有帮助。
3.选择明文攻击
接下来的控制级别允许你选择明文。这是一类比已知明文攻击更强的攻击类型。现在你可以选择特殊的准备好的明文,这些明文的选取是为了更易于攻击该系统。你可以选择任意数量的明文,并得到相应的密文。需要再一次说明的是,在现实中这并不是不切实际的。在很多情形中,攻击者可以选择被加密的数据。对方从外界的消息源(比如,可能受到攻击者影响的得到信息,然后以加密的形式转发该信息给别人,这是经落发生的。
选择明文攻击并非不合理。好的加密算法在抵抗选择明文攻击时应该没有任何问题。如果有人曾经试图以选择明文攻击不实际来说服你,你可以同他打赌以证明他的全新加密算法是如此脆弱,甚至不能抵抗选择明文攻击。
这种攻击有两个变形。对于离线攻击,在得到密文之前,可以准备一列想要加密的消息对于在线攻击,可以根据已经得到的密文选择新的明文。大多数情况下可以忽略这种区别。我们通常讨论在线形式的攻击,这是两者中比较强的一个。
4.选择密文攻击
选择密文”这一术语不太恰当。实际上它应该称为“选择密文和明文攻击"。在选择明文攻击中,可以选择明文值。在选择密文攻击中,既可以选择明文值也可以选择密文值。对每一个选择的明文,你可以得到相应的密文,而且对每一个选择的密文也可以得到相应的明文。
显而易见,选择密文攻击比选择明文攻击更强,因为攻击者有更多的自由。其目标仍然是恢复密钥。需要再一次说明的是,任何合理的加密方案都应该经受得住选择密文攻击。
5区分攻击
上面描述的攻击是要恢复明文或者加密密钥。有一些攻击不需要恢复加密密钥,而是解密另外一个特定的消息。还有一些攻击不用恢复消息,而是泄露该消息的某些部分信息。现在已经有太多的攻击形式了,并且新的攻击形式还在不断被发明。那么我们究竞应该防御什么样的攻击呢?
最好的解决办法是定义区分攻击。区分攻击是一种非平凡的攻击方法,其目的是发现理想和实际密码之间的差异。这种攻击涵盖了迄今为止我们讨论的所有攻击,也包括了尚待发现的任何其他攻击。
6.生日攻击
什么是生日攻击呢?这种攻击依赖于这样一个事实;完全相同的值(也称为碰撞)的出现比你预料的要快得多。在一个保护金融交易的系统中,假设每一个交易使用新的64比特的认证密钥(为了简单起见,我们假定不使用加密),那么一共有2w(=18·108)个可能的密钥值,所以这应该是很难攻破的,对吗?不对!人们观察到大约2次交易之后,攻击者可以预期到两次交易使用了相同的密钥。假设第一个认证的消息总是相同的消息:“ Are you ready to receivea transaction?"如果两次交易使用了相同的认证密钥,那么它们的第一个消息的MAC值也是相同的,攻击者很容易察觉到这一点。但是,知道了两次密钥是相同的,攻击者就可以把以前交易中的消息插入到正在进行的新交易中。有了正确的密钥认证,这些伪造的消息就会被接受,因此显然攻破了金融交易系统。
7.其他类型的攻击
到目前为止,我们主要讨论了对于加密函数的攻击。此外还可以定义其他密码函数的攻击,如认证、数字签名等,我们将在适当的时候加以讨论。