消息认证
在上一章中,我们讨论了数据完整性威胁以及使用哈希技术来检测数据是否发生了任何修改攻击。
数据存在的另一种威胁是缺乏消息身份验证。 在此威胁中,用户不确定消息的发起者。 可以使用加密技术来提供消息身份验证,该技术使用密钥,就像加密时所做的那样。
消息验证码(MAC)
MAC 算法是一种提供消息认证的对称密钥加密技术。 为了建立MAC过程,发送方和接收方共享一个对称密钥K。
本质上,MAC 是在底层消息上生成的加密校验和,与消息一起发送以确保消息身份验证。
使用MAC进行身份验证的过程如下图所示−
现在让我们尝试详细了解整个过程 −
发送者使用一些众所周知的MAC算法,输入消息和密钥K并产生MAC值。
与哈希类似,MAC 函数也将任意长的输入压缩为固定长度的输出。 hash 和 MAC 的主要区别在于 MAC 在压缩过程中使用密钥。
发送方将消息与 MAC 一起转发。 在这里,我们假设消息是以明文形式发送的,因为我们关心的是提供消息源身份验证,而不是机密性。 如果需要机密性,则消息需要加密。
接收方收到消息和 MAC 后,将接收到的消息和共享密钥 K 输入到 MAC 算法中,并重新计算 MAC 值。
接收方现在检查新计算的 MAC 与从发送方收到的 MAC 是否相等。 如果它们匹配,则接收者接受该消息并确保该消息已由预期发送者发送。
如果计算出的 MAC 与发送方发送的 MAC 不匹配,则接收方无法确定消息是否已被更改,或者来源是否已被伪造。 作为底线,接收者可以安全地假设该消息不是真实的。
MAC 的局限性
MAC 有两个主要限制,都是由于其操作的对称性造成的 −
建立共享密钥。
它可以在预先确定的拥有共享密钥的合法用户之间提供消息认证。
这需要在使用 MAC 之前建立共享密钥。
无法提供不可否认性
不可否认性是指消息发起者不能否认任何先前发送的消息以及承诺或操作。
MAC技术不提供不可否认服务。 如果发送者和接收者卷入消息来源的争议,MAC 无法提供消息确实是由发送者发送的证据。
虽然没有第三方可以计算 MAC,但发送方仍然可以否认发送了消息并声称接收方伪造了该消息,因为无法确定两方中哪一方计算了 MAC。
这两个限制都可以通过使用下一节中讨论的基于公钥的数字签名来克服。