密碼編碼學初探——消息認證碼

消息認證 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)的一次和二次多項式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章