消息認證 HMAC MAC:DAA CMAC
消息認證:用來驗證消息完整性的一種機制或者服務。消息仍正確保收到
的數據確實和發送時的一樣,且發送方聲稱的身份是有效的。
對稱密碼在那些互相共享密鑰的用戶間提供認證
消息認證碼:一種需要使用密鑰的算法,以可變程度的消息和密鑰作爲輸入,產生一個認證碼。擁有密鑰的接收方能夠計算驗證碼驗證消息的完整性。
消息認證函數:
1.Hash函數
2.消息加密:加密後發送,公鑰認證、簽名
3.消息認證碼:用密鑰生成一個固定長度短數據塊(與明/密文捆綁加密)
消息認證碼:
MAC:HMAC:以hash函數爲初始值的消息驗證碼
MAC:DAA:數據認證算法,僅能處理固定長度爲mn的消息
數據認證算法(DAA) Data Authentication Algorithm
DAA建立在DES之上,該算法比較陳舊,人們已經發現了這個算法的安全弱點,目前已經被廢止。
DAA採用DES運算的CBC工作模式,其初始向量爲0,需要認證的數據分成連續的64位分組D1,D2,…,DN,若最後分組不足64位,則在其後填充0補足。
DAA的安全隱患
給定一個消息分組X的CBC MAC碼,如T = MAC(K , X),則攻擊者馬上就知道對於兩個消息分組 X || (T⊕X) 的CBC MAC碼還是T。顯然,對於短消息,攻擊者可以很容易就找到符合條件的M’使得MAC(K , M’) = MAC(K , M)。
基於密碼的消息認證嗎(CMAC) Cipher-based Message Authentication Code
CMAC的加密對於AES和3DES都適用。
爲消除DAA存在的安全隱患,CMAC在DAA基礎上做了一個改進,在最後一步加密的前後均作了數學處理
Cn = E(K , [Mn⊕Cn-1⊕K1])
T = MSBTlen(Cn)
Tlen是T的長度,MSBs(X)是取位串X最左邊的s位
兩位n位的密鑰K1和K2由K按照如下方式導出:
L = E(K , 0n) //將分組密碼應用到一個全0分組上
K1 = L • x
K2 = L • x2 = (L • x) • x
乘法(•)在域GF(2n)內進行,x和x2是域GF(2n)的一次和二次多項式