在前面的文章中,我们介绍了哈希算法,今天我们来聊一个带密钥的Hash函数——MAC算法。
什么是MAC算法?
MAC(Message Authentication Codes),是一种消息摘要算法,也叫消息认证码算法。这种算法的核心是基于秘钥的散列函数。可以简单这样理解,MAC算法是MD5算法和SHA算法的升级版,是在这两种算法的基础上,又加入了秘钥的概念,所以会更加安全。
为什么需要MAC算法?
Hash算法只可以验证数据的完整性,但是无法保证数据防篡改。
乍一看,好像上述的示例是成立的,但是一旦遇到“中间人攻击”。
你会发现攻击者对消息进行篡改了,但是通过Hash算法计算摘要值,你是无法知道消息被改动过的。因此这个时候就需要MAC算法了。
MAC算法的特点
跟Hash算法一样,可以验证数据的完整性,可以验证数据确实是由原始发送方发出的。
发送端根据消息和一个mac算法,生成mac秘钥,将mac秘钥和消息同时发送,接收端收到消息,用同样的mac算法,得到mac秘钥,判断自己生成mac秘钥和接收到的mac秘钥是否一致,从而判断消息是否一致。
MAC算法的种类
MAC算法是含有密钥的散列算法,兼容MD和SHA算法,在此基础上添加了密钥支持,因此也被称为Hmac算法,定义在RFC 2014中,分为两大分支MD和SHA分支:
MD分支:Hmac-MD2、Hmac-MD4、Hmac-MD5。
SHA分支:Hmac-SHA1、Hmac-SHA256、Hmac-SHA384、Hmac-SHA512、Hmac-SHA224等。
MAC算法应用于很多场景,如linux客户端的SecureCRT,Google身份验证器、银联pos机终端等,都可以看到MAC算法的影子。
免责声明:素材源于网络,如有侵权,请联系删稿。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。