在本文中,我们所提到的MACs(MessageAuthenticationCodes,消息认证码)与MAC地址(MediaAccessControlAddress,媒体访问控制地址)不同,不可混淆一谈。消息认证码与非对称加密有着紧密的联系。
消息认证码是一种允许对接收到的消息进行身份验证的信息,确保消息来自声称的发送者,而不是伪装成他们的第三方,同时确保消息没有以某种方式修改,以提供数据完整性。
这听上去很像使用公钥密码的数字签名,不是吗?虽然非常相似,但它略有不同,因为用于生成消息认证码的密钥与用于验证消息认证码的密钥相同。从这个意义上讲,它类似于对称加密系统,并且密钥必须由所有通信方事先商定或以某种安全方式共享。
一种受欢迎且安全的消息认证码类型是HMAC(Keyed-HashMessageAuthenticationCode,密钥散列消息认证码),使用加密哈希函数和密钥来生成消息认证码。任何加密哈希函数,如SHA-1或MD5,都可用于HMAC,并且消息认证码的强度或安全性取决于所使用的加密哈希函数的底层安全性。消息认证码与被检查的消息一起发送,接收机通过对接收到的消息执行相同的操作来验证消息认证码,然后将计算出的消息认证码与接收到的消息认证码进行比较。如果相同,则消息被认证。
CMAC(Cipher-BasedMessageAuthenticationCode),基于对称加密密码(无论是密码块还是密码流,如DES或AES)的消息认证码,其生成过程类似于HMAC,但不是使用哈希函数来生成摘要,而是使用带有共享密钥的对称密码来加密消息,并将生成的输出用作消息认证码。CMAC的一个具体且受欢迎的用例是CBC-MAC(CipherBlockChainingMessageAuthenticationCode,密码块链消息认证码)。
CBC-MAC是一种使用分组密码构建消息认证码的机制,通过获取消息并使用CBC模式下的分组密码对其进行加密来实现。CBC模式是块密码的一种操作模式,它将先前加密的块密码文本合并到下一个块的纯文本中。因此,它构建了一个加密块链,需要完整的、未修改的链才能解密。这种相互依赖的加密块链意味着对纯文本的任何修改都将在链的末端产生不同的最终输出,从而确保消息的完整性。
#网络安全#