消息认证就是认证消息的完整性,当接收方收到发送方的消息时,接收方能够验证收到的消息是真实的和未被篡改的。它包含两层含义:一是验证信息的发送者是真正的而不是冒充的,即数据起源认证;二是验证信息在传送过程中未被篡改、重放或延迟等。
消息认证的内容应包括:证实消息的信源和信宿,消息内容是否遭到偶然或有意地篡改,消息的序号是否正确,消息的到达时间是否在指定的期限内。总之,消息认证使接收方能识别消息的源、内容的真伪、时间有效性等。这种认证只在相互通信的双方之间进行,而不允许第三者进行上述认证。
一个消息认证方案是一个三元组(K,T,V)。
(1)密钥生成算法K:K是一个生成密钥k的随机函数。
(2)标签算法T:由密钥k及消息M生成标签δ=Tk(M)。
(3)验证算法V:由密钥k、消息M、标签δ验证是否保持了数据完整性,输出1位d,d=Vk(M,δ)。我们要求对于明文空间中的所有消息M满足:当δ=Tk(M)时,Vk(M,δ)=1,否则Vk(M,δ)=0。(www.daowen.com)
消息认证码(Message Authentication Code,MAC)采用共享密钥,是一种广泛使用的消息认证技术。发送方A要发送消息M时,使用一个双方共享的密钥k产生一个短小的定长数据块,即消息认证码MAC=Tk(M),发送给接收方B时,将它附加在消息中。这个过程可以表示为A→B:M‖Tk(M)。接收方对收到的消息使用相同的密钥k执行相同的计算,得到新的MAC。接收方将收到的MAC与计算得到的MAC进行比较,如果相匹配,那么可以保证消息的传输过程中保持了完整性。
(1)接收方确信消息未被更改过。攻击者如果修改了消息,而不修改MAC,接收方重新计算得到的MAC将不同于接收到的MAC。由于MAC的生成使用了双方共享的秘密密钥,攻击者无法更改MAC以对应修改过的消息。
(2)接收方确信消息来自真实的发送方。因为没有其他人知道密钥,所以没有人能够伪造出消息及其对应的MAC。
常用的构造MAC的方法包括:利用已有的分组密码构造,如利用DES构造的CBCMAC;利用已有的Hash函数构造,因为Hash函数并不依赖一个密钥,所以不能直接用于MAC,已有许多将一个密钥与一个现有的Hash函数结合起来的提议,HMAC就是获得众多支持的一种。HMAC见RFC2194,并被许多Internet协议使用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。