Hash-based Message Authentication Code算法
HMAC是IP安全裏必須實現的MAC方案,而且其餘Internet協議中(如SSL)也使用了HMAC。HMAC已做爲NIST標準發佈。安全
HMAC的設計目標函數
一、能夠直接使用現成的Hash函數性能
二、很容易用更好地Hash函數替代原來嵌入的Hash函數優化
三、可以保持Hash函數的原有性能,不能過度下降其性能spa
四、對密鑰的使用和處理應較簡單設計
五、若是已知嵌入的Hash函數的強度,徹底能夠知道認證機制抗密碼分析的強度blog
正是HMAC的這些設計目標保證了HMAC的靈活性、可用性和擴展性,從而獲得了普遍的支持。ip
HMAC算法io
HMAC描述以下:
HMAC(K , M) = H[(K+⊕opad) || H[(K+⊕ipad) || M]]
這種結構對於長消息,其執行時間與嵌入的Hash函數差很少,但不適合消息大多較短的狀況。這種狀況下則會使用以下結構進行優化。
其中f(IV,S)是Hash函數的壓縮函數,其輸入是n位的初始變量和b位的分組,輸出是n位的連接變量。
HMAC的安全性
已證實,對Hash函數有效的生日攻擊並不一樣樣對HMAC有效,緣由在於Hash函數的輸入(IP和M)都徹底已知,而HMAC的輸入受K的影響並不徹底可知,所以能夠抵抗生日攻擊。
HMAC對於窮舉攻擊等其餘攻擊也保持了Hash函數的安全強度。