1. 程式人生 > >訊息認證碼的應用和實現

訊息認證碼的應用和實現

一 訊息認證碼的應用

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值同時用對稱密碼加密。