-
hmac
鎖定
- 中文名
- 哈希消息認證碼
- 外文名
- Hash-based Message Authentication Code
- 縮 寫
- HMAC
- 功 能
- 提供消息認證
- 應 用
- IPSec協議等
- 所屬學科
- 密碼學
hmac產生背景
隨着Internet的不斷髮展,網絡安全問題日益突出。為了確保接收方所接收到的報文數據的完整性,人們採用消息認證來驗證上述性質。用來對消息進行認證的主要方式有以下3種:消息認證碼、散列函數和消息加密。
消息認證碼:它是一個需要密鑰的算法,可以對可變長度的消息進行認證,把輸出的結果作為認證符。
散列函數:它是將任意長度的消息映射成為定長的散列值的函數,以該散列值消息摘要)作為認證符。
消息加密:它將整個消息的密文作為認證符。
①一般的散列函數的軟件執行速度比分組密碼的要快。
②密碼散列函數的庫代碼來源廣泛。
①消息完整性認證:能夠證明消息內容在傳送過程沒有被修改。
②信源身份認證:因為通信雙方共享了認證的密鑰,接收方能夠認證發送該數據的信源與所宣稱的一致,即能夠可靠地確認接收的消息與發送的一致。
hmac設計目標
在HMAC規劃之初,就有以下設計目標:
1·不必修改而直接套用已知的散列函數,並且很容易得到軟件上執行速度較快的散列函數及其代碼。
2·若找到或需要更快或更安全的散列函數,能夠容易地代替原來嵌入的散列函數。
3·應保持散列函數的原來性能,不能因為嵌入在HMAC中而過分降低其性能。
4·對密鑰的使用和處理比較簡單。
hmac算法描述
在HMAC的定義中用到一個密碼散列函數H和一個密鑰K。假設H是一個能夠對明文進行分組循環壓縮的散列函數,B為散列函數的明文分組長度(byte),在上述的散列函數中B=64,L為散列函數的輸出長度(byte),MD5中L=16,SHA-1中L=20。認證密鑰K可以為任意長度,一般密鑰長度應大於明文分組的長度,將密鑰的第一次散列值作為HMAC真正使用的密鑰,密鑰的最小推薦長度為Lbytes。
再定義兩個不同的固定字符串ipad和opad如下(“i”和“o”表示內部和外部):
ipad=一個字節(byte)的0x36重複B次;
opad=一個字節(byte)的0x5C重複B次。
若以“text”作為要計算HMAC的明文,則作如下操作:
H(K XOR opad,H(K XOR ipad,text))
也就是説,操作步驟如下:
(1)在密鑰K後面填充0,使其成為長度為Bbyte的字符串;如:K是20bytes的字符串,B=64,則要填充44個字節的0x00。
(2)用第一步得到的Bbyte的字符串與ipad作XOR(按位異或);
(3)將數據流text附加到第(2)步產生的Bbyte字符串後面;
(4)對第(3)產生的數據流用散列函數H計算消息摘要;
(5)用第一步得到的Bbyte的字符串與opad作XOR(按位異或);
(6)將第(4)生成的消息摘要附加到第(5)步的Bbyte字符串之後;
hmac算法密鑰
HMAC運算利用hash算法,以一個消息M和一個密鑰K作為輸入,生成一個定長的消息摘要作為輸出。HMAC算法利用已有的Hash函數,關鍵問題是如何使用密鑰。
HMAC的密鑰長度可以是任意大小,如果小於n(hash輸出值的大小),那麼將會消弱算法安全的強度。建議使用長度大於n的密鑰,但是採用長度大的密鑰並不意味着增強了函數的安全性。密鑰應該是隨機選取的,可以採用一種強偽隨機發生器,並且密鑰需要週期性更新,這樣可以減少散列函數弱密鑰的危險性以及已經暴露密鑰所帶來的破壞
[1]
。
hmac安全性
HMAC算法更象是一種加密算法,它引入了密鑰,其安全性已經不完全依賴於所使用的Hash算法,安全性主要有以下幾點保證。
(1)使用的密鑰是雙方事先約定的,第三方不可能知道。作為非法截獲信息的第三方,能夠得到的信息只有作為“挑戰”的隨機數和作為“響應”的HMAC 結果,無法根據這兩個數據推算出密鑰。由於不知道密鑰,所以無法仿造出一致的響應。
(2)HMAC與一般的加密重要的區別在於它具有“瞬時"性,即認證只在當時有效,而加密算法被破解後,以前的加密結果就可能被解密。
hmac典型應用
HMAC的一個典型應用是用在“挑戰/響應”(Challenge/Response)身份認證中,認證流程如下:
(1)先由客户端向服務器發出一個驗證請求。
(2)服務器接到此請求後生成一個隨機數並通過網絡傳輸給客户端(此為挑戰)。
(3)客户端將收到的隨機數提供給ePass,由ePass使用該隨機數與存儲在ePass中的密鑰進行HMAC-MD5運算並得到一個結果作為認證證據傳給服務器(此為響應)。
- 參考資料
-
- 1. 張誠, 範恆英, 劉維嘉. HMAC在IPSec和SSL中的應用[J]. 中國新通信, 2008, (11):22-25 .超星[引用日期2019-08-28]
- 2. 楊曉元,魏立線主編.計算機密碼學[M].西安:西安交通大學出版社,2007.03
- 3. 於華章. HMAC算法安全性分析[J]. 計算機安全, 2005, (7):53-54 .超星[引用日期2019-09-01]
- 4. 李海峯.現代密碼學原理及應用[M].北京:國防工業出版社,2013.06