簡述MAC算法

在前面的文章中,我們介紹了哈希算法,今天我們來聊一個帶密鑰的Hash函數(shù)——MAC算法。

什么是MAC算法?

MAC(Message Authentication Codes),是一種消息摘要算法,也叫消息認證碼算法。這種算法的核心是基于秘鑰的散列函數(shù)。可以簡單這樣理解,MAC算法是MD5算法和SHA算法的升級版,是在這兩種算法的基礎(chǔ)上,又加入了秘鑰的概念,所以會更加安全。

為什么需要MAC算法?

Hash算法只可以驗證數(shù)據(jù)的完整性,但是無法保證數(shù)據(jù)防篡改。

Hash算法

乍一看,好像上述的示例是成立的,但是一旦遇到“中間人攻擊”。

中間人攻擊

你會發(fā)現(xiàn)攻擊者對消息進行篡改了,但是通過Hash算法計算摘要值,你是無法知道消息被改動過的。因此這個時候就需要MAC算法了。

MAC算法的特點

跟Hash算法一樣,可以驗證數(shù)據(jù)的完整性,可以驗證數(shù)據(jù)確實是由原始發(fā)送方發(fā)出的。

MAC算法

發(fā)送端根據(jù)消息和一個mac算法,生成mac秘鑰,將mac秘鑰和消息同時發(fā)送,接收端收到消息,用同樣的mac算法,得到mac秘鑰,判斷自己生成mac秘鑰和接收到的mac秘鑰是否一致,從而判斷消息是否一致。

MAC算法的種類

MAC算法是含有密鑰的散列算法,兼容MD和SHA算法,在此基礎(chǔ)上添加了密鑰支持,因此也被稱為Hmac算法,定義在RFC 2014中,分為兩大分支MD和SHA分支:

MD分支:Hmac-MD2、Hmac-MD4、Hmac-MD5。

SHA分支:Hmac-SHA1、Hmac-SHA256、Hmac-SHA384、Hmac-SHA512、Hmac-SHA224等。

MAC算法應(yīng)用于很多場景,如linux客戶端的SecureCRT,Google身份驗證器、銀聯(lián)pos機終端等,都可以看到MAC算法的影子。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪稿。