在信息安全領域中,常見的信息保護方法分為加密和認證兩大類。認證技術又分為對用戶的認證和對消息的認證兩種方式。用戶認證用于鑒別用戶的身份是否是合法用戶;消息認證就是驗證所收到的消息確實是來自真實的發送方且未被修改的消息,可以驗證消息的準確性。 消息認證實際上是對消息本身產生的一個冗余的信息,即消息驗證碼(MAC)。消息認證碼(Message authentication code)是一種確認完整性并進行認證的一種技術,簡稱MAC。密碼學中,消息認證碼指的是通信實體雙方使用的一種驗證機制,保證消息數據完整性的一種工具。消息認證碼是一種帶密鑰的哈希函數,它本質上是一個哈希函數,那為什么要帶密鑰呢?是因為消息在傳輸過程中是可以被篡改,哈希值也可以被篡改,因此為了保證這個哈希值的有效性,通過加密的方式將哈希值保護起來,這樣在接收方接收到消息后就可以通過這個哈希值來判斷整條消息的完整性,從而達到信息傳遞的目的。 消息認證碼步驟如下圖所示:
1)發送者與接收者事先共享密鑰K(上圖中的KEY1與KEY2值保持一致)。 2)發送者根據消息計算MAC值(使用密鑰KEY1對原始消息計算MAC1)。 3)發送者將原始消息和MAC1發送給接收者。 4)接收者根據收到的原始消息計算MAC2(使用密鑰KEY2)。 5)接收者將自己計算出的MAC2與從發送者收到的MAC1比對。 6)如果MAC一致,接收者可以判定消息的確來自接收者(認證成功)且沒有被篡改或者出現傳輸出錯的情況;如果不一致,可判斷消息不是來自發送方(認證失敗)。 注意:建議發送方和接收方將密鑰KEY存放于硬件安全模塊中,計算MAC值的過程最好也放到硬件安全模塊中完成,這樣可以保證密鑰的安全,例如放到加密芯片中。
|