📅  最后修改于: 2021-01-12 04:47:35             🧑  作者: Mango
在上一章中,我们讨论了数据完整性威胁以及使用哈希技术来检测是否对数据进行了任何修改攻击。
数据存在的另一种威胁是缺少消息身份验证。在这种威胁下,用户不确定消息的始发者。可以使用在加密情况下使用秘密密钥的加密技术来提供消息身份验证。
MAC算法是一种用于提供消息身份验证的对称密钥密码技术。为了建立MAC进程,发送方和接收方共享一个对称密钥K。
本质上,MAC是在基础消息上生成的加密校验和,并与消息一起发送以确保消息认证。
下图描述了使用MAC进行身份验证的过程-
现在让我们尝试详细了解整个过程-
发送者使用一些公知的MAC算法,输入消息和密钥K,并产生MAC值。
与哈希类似,MAC函数还将任意长输入压缩为固定长度的输出。哈希和MAC之间的主要区别在于MAC在压缩过程中使用了秘密密钥。
发送方将消息与MAC一起转发。在此,我们假设消息是明文发送的,因为我们担心提供消息来源身份验证,而不是机密性。如果需要保密,则消息需要加密。
接收到消息和MAC后,接收方将接收到的消息和共享密钥K输入到MAC算法中,并重新计算MAC值。
接收方现在检查刚计算出的MAC与从发送方接收到的MAC是否相等。如果它们匹配,则接收者接受该消息并向自己保证该消息已由预期的发送者发送。
如果计算出的MAC与发送方发送的MAC不匹配,则接收方无法确定是更改了消息还是伪造了原始消息。作为底线,接收者可以安全地认为该消息不是真实消息。
MAC有两个主要限制,均由于其操作的对称性-
建立共享秘密。
它可以在具有共享密钥的预定合法用户之间提供消息身份验证。
这要求在使用MAC之前建立共享密钥。
无法提供不可否认性
不可否认性是确保消息始发者不能拒绝任何先前发送的消息以及承诺或动作。
MAC技术不提供不可否认服务。如果发送方和接收方卷入了有关消息起源的争执中,则MAC无法提供证明消息确实由发送方发送的证据。
尽管没有第三方可以计算MAC,但是发送者仍然可以拒绝发送消息,并声称接收者伪造了该消息,因为无法确定两方中的哪一个计算了MAC。
通过使用下一节中讨论的基于公钥的数字签名,可以克服这两个限制。