消息认证(message authentication)就是验证消息的完整性,当接收方收到发送方的报文时,接收方能够验证收到的报文是真实的和未被篡改的。它包含两层含义:一是验证信息的发送者是真正的而不是冒充的,即数据起源认证;二是验证信息在传送过程中未被篡改、重放或延迟等。
定义
消息认证是指通过对消息或者消息有关的信息进行加密或签名变换进行的认证,目的是为了防止传输和存储的消息被有意无意的篡改,包括消息内容认证(即消息完整性认证)、消息的源和宿认证(即身份认证0)、及消息的序号和操作时间认证等。它在票据防伪中具有重要应用(如税务的金税系统和银行的支付密码器)。
消息认证所用的摘要算法与一般的对称或
非对称加密算法不同,它并不用于防止信息被窃取,而是用于证明原文的完整性和准确性,也就是说,消息认证主要用于防止信息被篡改。
消息认证
消息内容认证
消息内容认证常用的方法:消息发送者在消息中加入一个鉴别码(MAC、MDC等)并经加密后发送给接受者(有时只需加密鉴别码即可)。接受者利用约定的算法对解密后的消息进行鉴别运算,将得到的鉴别码与收到的鉴别码进行比较,若二者相等,则接收,否则拒绝接收。
消息认证系统的模型
消息认证系统的一般模型如图1所示。相对于密码系统,认证系统更强调的是完整性。
消息由发送者发出后,经由密钥控制或无密钥控制的认证编码器变换,加入认证码,将消息连同认证码一起在公开的无扰信道进行传输,有密钥控制时还需要将密钥通过一个安全信道传输至接收方。接收方在收到所有数据后,经由密钥控制或无密钥控制的认证译码器进行认证,判定消息是否完整。消息在整个过程中以明文形式或某种变形方式进行传输,但并不一定要求加密,也不一定要求内容对第三方保密。攻击者能够截获和分析信道中传送的消息内容,而且可能伪造消息送给接收者进行欺诈。攻击者不再像保密系统中的密码分析者那样始终处于消极被动地位,而是主动攻击者。
图1所示的认证编码器和认证译码器可以抽象为认证方法。一个安全的消息认证系统,必须选择合适的认证函数,该函数产生一个鉴别标志,然后在此基础上建立合理的认证协议,使接收者完成消息的认证。
源和宿的认证
在消息认证中,消息源和宿的常用认证方法有两种。
一种是通信双方事先约定发送消息的数据加密密匙,接收者只需要证实发送来的消息是否能用该密匙还原成明文就能鉴别发送者。如果双方使用同一个数据加密密匙,那么只需在消息中嵌入发送者识别符即可。
另一种是通信双方实现约定各自发送消息所使用的通行字,发送消息中含有此通行字并进行加密,接收者只需判别消息中解密的通行字是否等于约定的通行字就能鉴别发送者。为了安全起见,通行字应该是可变的。
消息序号和操作时间的认证
消息的序号和时间性的认证主要是阻止消息的
重放攻击。常用的方法有消息的流水作业、链接认证符随机树认证和
时间戳等。
消息认证中常见的攻击和对策
①重放攻击:截获以前协议执行时传输的
信息,然后在某个时候再次使用。对付这种攻击的一种措施是在认证消息中包含一个非重复值,如序列号、时戳、随机数或嵌入目标身份的标志符等。
②冒充攻击:攻击者冒充合法用户发布虚假消息。为避免这种攻击可采用身份认证技术。
③重组攻击:把以前协议执行时一次或多次传输的信息重新组合进行攻击。为了避免这类攻击,把协议运行中的所有消息都连接在一起。
④篡改攻击:修改、删除、添加或替换真实的消息。为避免这种攻击可采用消息认证码MAC或hash函数等技术。