訊息認證碼的應用和實現
一 訊息認證碼的應用
1 SWIFT
SWIFT是於1973年成立的一個組織,其目的是為了國際銀行間的交易保駕護航。該組織成立時候有15個成員國,2008年時已經發展到208個成員國。
銀行和銀行之間是通過SWIFT來傳遞交易訊息的。而為了確保訊息的完整性以及對訊息進行驗證,SWIFT中使用了訊息認證碼。
在使用公鑰金鑰進行金鑰交換之前,訊息認證碼所使用的共享金鑰都是由人來進行配送的。
2 IPsec
IPsec是對網際網路基本通訊協議IP協議增加安全性的一種方式。在IPsec中,對通訊內容的認證和完整性校驗都是採用訊息認證碼來完成。
3 SSL/TLS
SSL/TLS是我們在網上購物等場景中所使用的通訊協議。SSL/TLS中對通訊內容的認證和完整性校驗也使用了訊息認證碼。
二 訊息認證碼的實現方法
1 使用單向雜湊函式實現
使用SHA-2之類的單向雜湊函式可以實現訊息認證碼,其中一種實現方法稱為HMAC。
2 使用分組密碼實現
使用AES之類的分組密碼可以實現訊息認證碼。
將分組密碼的金鑰作為訊息認證碼的共享金鑰來使用,並用CBC模式將訊息全部加密。此時,初始化向量是固定的。由於訊息認證碼不需要解密,因此將除最後一份分組意外的密文全部丟棄,而將最後一個分組用作MAC值。由於CBC模式額最後一個分組會受到整個訊息以及金鑰的雙重影響,因此可以將它用作訊息認證碼。例如,AES-CMAC就是一種基於AES來實現的訊息認證碼。
3 其他實現方法
使用流密碼和公鑰密碼也可以實現訊息認證碼。
三 認證加密
2000年以後,關於認證加密的研究逐步展開。認證加密是一種將對稱密碼和訊息認證碼相結合,同時滿足機密性、完整性和認證三大功能的機制。
Encryt-then-MAC:先用對稱密碼將明文加密,然後計算密文的MAC值。
Encrpt-and-MAC:將明文用對稱密碼加密,並對明文計算MAC值。
MAC-then-Encrpt:計算明文的MAC值,然後將明文和MAC值同時用對稱密碼加密。