密碼學家工具箱中的6個重要的工具:
- 對稱密碼
- 公鑰密碼
- 單向散列函數
- 消息認證碼
- 數字簽名
- 偽隨機數生成器
MAC能識別出篡改和偽裝,也就是既可以確認消息的完整性,也可以進行認證。
消息認證碼的輸入包括任意長度的消息和一個發送者與接受者之間共享的密鑰,它可以輸出固定長度的數據,這個數據就是MAC。
消息認證碼是一種與密鑰相關聯的單向散列函數。
消息認證碼的應用實例
- SWIFT(Society for Wordwide Interbank Financial Telecommunication,環球銀行金融電信協會)
銀行和銀行之間是通過SWIFT來傳遞交易消息的。而為了確認消息的完整性以及對消息進行驗證,SWIFT中使用了消息認證碼。
- IPsec
IPsec是對互聯網基本通信協議-IP協議(Internet Protocol)增加安全性的一種方式。
- SSL/TLS
我們在網上購物等場景中所使用的通信協議。
消息認證碼的實現方法
- 使用單向散列函數實現
使用SHA-1、MD5之類的單向散列函數可以實現消息認證碼,其中一種實現方法稱為HMAC。
- 使用分組密碼實現
使用DES、AES之類的分組密碼可以實現消息認證碼。
- 其他實現方法
使用流密碼和公鑰密碼等也可以實現消息認證碼。
HMAC
HMAC是一種使用單向散列函數來構造消息認證碼的方法,其中H為Hash的意思。
使用SHA-1、MD5、RIPEMD-160所構造的HMAC,分別稱為HMAC-SHA-1、HMAC-MD5和HMAC-RIPEMD。
對消息認證碼的攻擊
- 重放攻擊
- 防御重放攻擊的方式
- 序號
- 時間戳
- nonce
- 密鑰推測攻擊