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