消息认证(message authentication)
目录 |
消息认证就是验证消息的完整性,当接收方收到发送方的报文时,接收方能够验证收到的报文是真实的和未被篡改的。它包含两层含义:一是验证信息的发送者是真正的而不是冒充的,即数据起源认证;二是验证信息在传送过程中未被篡改、重放或延迟等。
数据完整性机制有两种类型:一种用来保护单个数据单元的完整性;另一种既保护单个数据单元的完整性,又保护整个连接上所有数据单元流序列的完整性。
消息认证的检验内容应包括:认证报文的信源和信宿、报文内容是否遭到偶然或有意篡改、报文的序号是否正确、报文的到达时间是否在指定的期限内。总之,消息认证使接收者能识别报文的源、内容的真伪、时间有效性等。这种认证只在相互通信的双方之间进行,而不允许第三者进行上述认证。
为了防止人工操作和传输过程中的偶然错误,可采用多次输入和多次传输比较法进行校验,也可采用冗余校验法进行检测。这些都是比较简单的保持完整性的方法。
在数据块中加入冗余信息的过程称为差错编码。只具有检错功能,但不能确定错误位置,也不能纠正错误,这种码称检错码。具有纠错功能,将无效码字恢复成距离它最近的有效码字,但不是100%正确,这种码称纠错码。检错码和纠错码都是检验数据完整性的简单易行的有效方法。
消息认证是防止主动攻击的重要技术,消息认证的目的主要有两个:
①验证信息的发送者是真实的,而不是冒充的,也称为信源认证;
②验证信息的完整性,即信息在传送和存储过程中未被篡改、重放和延迟等。
消息认证系统的一般模型如图1所示。相对于密码系统,认证系统更强调的是完整性。消息由发送者发出后,经由密钥控制或无密钥控制的认证编码器变换,加入认证码,将消息连同认证码一起在公开的无扰信道进行传输,有密钥控制时还需要将密钥通过一个安全信道传输至接收方。接收方在收到所有数据后,经由密钥控制或无密钥控制的认证译码器进行认证,判定消息是否完整。消息在整个过程中以明文形式或某种变形方式进行传输,但并不一定要求加密,也不一定要求内容对第三方保密。攻击者能够截获和分析信道中传送的消息内容,而且可能伪造消息送给接收者进行欺诈。攻击者不再像保密系统中的密码分析者那样始终处于消极被动地位,而是主动攻击者。
图1所示的认证编码器和认证译码器可以抽象为认证方法。一个安全的消息认证系统,必须选择合适的认证函数,该函数产生一个鉴别标志,然后在此基础上建立合理的认证协议,使接收者完成消息的认证。
①重放攻击:截获以前协议执行时传输的信息,然后在某个时候再次使用。对付这种攻击的一种措施是在认证消息中包含一个非重复值,如序列号、时戳、随机数或嵌入目标身份的标志符等。
②冒充攻击:攻击者冒充合法用户发布虚假消息。为避免这种攻击可采用身份认证技术。
③重组攻击:把以前协议执行时一次或多次传输的信息重新组合进行攻击。为了避免这类攻击,把协议运行中的所有消息都连接在一起。
④篡改攻击:修改、删除、添加或替换真实的消息。为避免这种攻击可采用消息认证码MAC或hash函数等技术。