利用对称算法的认证和数据完整性-密码术的奥秘

时间:2024-07-01 20:17:04

利用对称算法的认证和数据完整性

认证和数据完整性都能利用对称密码来达成。我们首先考虑认证问题,然后是数据完整性问题。认证的类型有两种。在单向认证时,需要一个用户认证另一个用户;在双向认证时,两个用户需要彼此认证。第九章讨论的磁条卡在ATM上的应用,就是一个单向认证的例子。通过输入PIN,磁卡由ATM在加密的情况下加以认证。但磁卡持有人必须使用非加密的手段——比如观察ATM的位置和结构样式——来确认所使用的ATM机并非是伪造的。登录一台计算机也是单向认证的例子。无论哪一种类型的认证都要用到事先商定的算法以及秘密信息或密钥。算法中密钥的正确使用是认证的关键。很明显,这个过程取决于密钥不被泄漏。更进一步,高级的认证技术常常要求使用双方商定的协议,其中包含质询与应答(即质询的加密版本)的交换。

利用对称算法的认证和数据完整性-密码术的奥秘

必须注意,认证协议仅限于在协议生效的瞬间确立双方的身份。如果要在刚被认证的整个联络过程中对信息加以保密,或是保证数据的完整性,则必须用其他加密机制来提供保护。保密过程所需要的密钥可以作为认证协议的一部分来交换。但如果还要防止冒名顶替者对(部分)认证协议进行重放,那么就需要使用诸如序列号或时间标记等额外的信息了。

为了保证信息的数据完整性,可以使用认证算法和密钥。认证算法以信息和商定的密钥为输入信息,然后计算出一个认证值作为输出信息。这个认证值只是一个(短的)比特串,它的值取决于认证算法、信息本身和商定的密钥。用第五章的术语来说,认证算法就是由密钥控制的散列作用。

当用户A想给用户B发一个信息时,他将认证值添加到信息上。B收到的是该信息及其认证值。然后B用从A处收到的信息和商定的密钥作为输入信息,经认证算法算出输出信息。如果这个输出值与A发来的认证值相符合,则B可以确信这个信息确实是A发出的,而且没有被改动过。(所以,这一认证功能同时保证了数据完整性及对A的认证。)善于观察的读者一定会注意到,这种类型的认证方式并不能阻止冒名者重放。我们已经说过,为了对抗这种重放攻击,用户还需要在信息上附加标识符,如序列号等。

这种认证过程的一个重要特征是发送方与接收方所作的计算是完全一样的。所以,当AB为到底发送了什么信息而发生争执时,将无法用密码学方面的办法来解决争端。这并不是该系统的缺点,只不过是使用了对称密码术的必然结果。在这里,AB必须彼此信任。他们共享一个密钥并依靠这个密钥的保密能力保护他们不受第三方的窜改性攻击。他们不会彼此防范,因为他们是互相信任的。一般而论,对称密码的大多数用户都是这样的。互相信任的团体使用对称密码来保护他们的信息不受他人的攻击。

使用对称算法的认证

使用最为广泛的、特别是财政部门喜欢使用的认证手段被称为信息认证码MAC)。如果信息是M1、M2、……、Mn,其中每个Mi由64个比特组成,那么就可以使用CBC模式的数据加密标准。但此时仅需用到Cn这个密文区组,所以MAC由Cn的32个比特组成。