RFC 2014給出了HMAC的設計目標:
HMAC的總體結構如圖所示
更為有效的HMAC實現方式如圖所示
任何建立在嵌入Hash函數基礎上的MAC,其安全性在某種程度上依賴於該Hash函數的強度。HMAC的好處在於,設計者可以證明嵌入Hash函數的強度與HMAC的強度之間的聯絡。能夠成功攻擊HMAC的概率等價於對嵌入Hash函數的攻擊之一:
DAA是建立在DES上,使用廣泛的MAC演演算法之一。但是發現這個演演算法存在安全弱點。
DAA採用DES運算的CBC模式,初始向量為0,需要認證的資料分組。DAC可以是整個塊,也可以是最左邊m位,
DDA演演算法在政府和工業界應用廣泛,但是這種演演算法在合理的安全準則下使用的時候有一個限制:僅能處理固定長度為mn的訊息,其中n是密文分組的長度,m是一個固定的正整數。Black和Rogaway證明了這種限制可以使用三個金鑰來克服:一個金鑰長度為K,用在密文分組連結的每一步,兩個長度為n的金鑰,其中k是金鑰的長度,n是密文分組長度。後又優化了這個結構,使得兩個n位的金鑰可以從加密金鑰匯出,而不是單獨提供,這種優化被NIST採用作為CMAC的運算模式。
計算過程為
如果訊息不是密文分組長度的整數倍,最後分組的右邊填充一個1和若干0使得最後的分組長度為b。
認證加密(AE)是指在通訊中同時提供保密性和認證的加密系統。四種同時提供認證和加密的通用方案:
CCM是E&M方案的改進,可提供認證和加密。組成CCM的關鍵演演算法是AES加密演演算法,CTR工作模式和CMAC認證演演算法,在加密和MAC演演算法中共用一個金鑰K。CCM加密過程的輸入包括三部分:
CCM是一個相對複雜的演演算法,對明文需要兩次完整的處理:一次用於生成MAC,一次用於加密。臨時量和MAC的長度進行這種選擇,加密金鑰在CTR模式下使用了兩次。
Galois/計數器模式基於並行設計,可以提供高效的吞吐率和低成本、低延遲。本質是訊息在變型的CTR模式下加密,密文結果與金鑰以及訊息長度資訊在域上相乘。
GCM模式使用兩個函數:帶金鑰的Hash函數GHASH,以及計數器每次真增加1的CTR模式的GCTR。
GHASH將Hash金鑰H和位串X作為輸入,其中位,m是正整數,輸出128位元的MAC值。
GCTR將金鑰K和任意長度的位串X作為輸入,輸出是長度與X相同的密文Y。
計數器值可以被快速生成,加密操作可以並行執行。整個認證加密函數如圖所示