HMAC(2)哈希运算消息认证码HMAC
1. 定義
HMAC(Hash-based Message Authentication Code)是一種基于加密Hash函數來實現的MAC算法。
eg. HMAC-MD5(使用MD5作為Hash函數)、HMAC-SHA256(使用SHA256作為Hash函數)
H: Hash函數
m: 消息原文
K:密鑰
K’ :由k通過某種算法得到
在密鑰K后面添加0或者對密鑰K用H進行處理來創建一個字長為B的字符串。
eg.
如果K的字長是20字節,B=64字節,則K后會加入44個零字節0x00;
如果K的字長是120字節,B=64字節,則會用H作用于K后產生64字節的字符串
‖ : 字符拼接
⊕ : XOR位異或運算
假設塊長度為B,
ipad: 一個字節(內容為0x36)重復B次;
opad: 一個字節(內容為0x5C)重復B次;
2. 算法過程
以 HMAC-SHA1為例
通常的過程為:
IV: 哈希函數輸入的初始值
n:哈希函數生成出來的碼長
L:M的分組數
3. 使用場景舉例
ePass USB Key,主要是用作基于公鑰體系(PKI)的數字證書和私鑰的安全載體,RSA 密鑰對是在USB Key內生成的,私鑰永遠不能導出,確保證書持有人的信息安全。
eg. “挑戰/響應”(Challenge/Response)身份認證中,認證流程如下:
1)先由客戶端向服務器發出一個驗證請求。
2)服務器接到此請求后生成一個隨機數并通過網絡傳輸給客戶端(此為挑戰)。
3)客戶端將收到的隨機數提供給ePass,由ePass使用該隨機數與存儲在ePass中的密鑰進行HMAC-MD5運算并得到一個結果作為認證證據傳給服務器(此為響應)。
4)與此同時,服務器也使用該隨機數與存儲在服務器數據庫中的該客戶密鑰進行HMAC-MD5運算,如果服務器的運算結果與客戶端傳回的響應結果相同,則認為客戶端是一個合法用戶 。
【參考】
[1] csdn 【密碼學原理】消息驗證碼MAC的構造方法:HMAC,DAA,CMAC
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的HMAC(2)哈希运算消息认证码HMAC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HMAC(1)消息认证码MAC算法
- 下一篇: 比特币钱包(1) 钱包协议总览