定義
訊息認證是指通過對訊息或者訊息有關的信息進行加密或簽名變換進行的認證,目的是為了防止傳輸和存儲的訊息被有意無意的篡改,包括訊息內容認證(即訊息完整性認證)、訊息的源和宿認證(即身份認證0)、及訊息的序號和操作時間認證等。它在票據防偽中具有重要套用(如稅務的金稅系統和銀行的支付密碼器)。
訊息認證所用的摘要算法與一般的對稱或非對稱加密算法不同,它並不用於防止信息被竊取,而是用於證明原文的完整性和準確性,也就是說,訊息認證主要用於防止信息被篡改。
訊息認證
訊息內容認證
訊息內容認證常用的方法:訊息傳送者在訊息中加入一個鑑別碼(MAC、MDC等)並經加密後傳送給接受者(有時只需加密鑑別碼即可)。接受者利用約定的算法對解密後的訊息進行鑑別運算,將得到的鑑別碼與收到的鑑別碼進行比較,若二者相等,則接收,否則拒絕接收。
訊息認證系統的模型
訊息認證系統的一般模型如圖1所示。相對於密碼系統,認證系統更強調的是完整性。訊息由傳送者發出後,經由密鑰控制或無密鑰控制的認證編碼器變換,加入認證碼,將訊息連同認證碼一起在公開的無擾信道進行傳輸,有密鑰控制時還需要將密鑰通過一個安全信道傳輸至接收方。接收方在收到所有數據後,經由密鑰控制或無密鑰控制的認證解碼器進行認證,判定訊息是否完整。訊息在整個過程中以明文形式或某種變形方式進行傳輸,但並不一定要求加密,也不一定要求內容對第三方保密。攻擊者能夠截獲和分析信道中傳送的訊息內容,而且可能偽造訊息送給接收者進行欺詐。攻擊者不再像保密系統中的密碼分析者那樣始終處於消極被動地位,而是主動攻擊者。
圖1所示的認證編碼器和認證解碼器可以抽象為認證方法。一個安全的訊息認證系統,必須選擇合適的認證函式,該函式產生一個鑑別標誌,然後在此基礎上建立合理的認證協定,使接收者完成訊息的認證。
源和宿的認證
在訊息認證中,訊息源和宿的常用認證方法有兩種。
一種是通信雙方事先約定傳送訊息的數據加密密匙,接收者只需要證實傳送來的訊息是否能用該密匙還原成明文就能鑑別傳送者。如果雙方使用同一個數據加密密匙,那么只需在訊息中嵌入傳送者識別符即可。
另一種是通信雙方實現約定各自傳送訊息所使用的通行字,傳送訊息中含有此通行字並進行加密,接收者只需判別訊息中解密的通行字是否等於約定的通行字就能鑑別傳送者。為了安全起見,通行字應該是可變的。
訊息序號和操作時間的認證
訊息的序號和時間性的認證主要是阻止訊息的重放攻擊。常用的方法有訊息的流水作業、連結認證符隨機樹認證和時間戳等。
訊息認證中常見的攻擊和對策
①重放攻擊:截獲以前協定執行時傳輸的信息,然後在某個時候再次使用。對付這種攻擊的一種措施是在認證訊息中包含一個非重複值,如序列號、時戳、隨機數或嵌入目標身份的標誌符等。
②冒充攻擊:攻擊者冒充合法用戶發布虛假訊息。為避免這種攻擊可採用身份認證技術。
③重組攻擊:把以前協定執行時一次或多次傳輸的信息重新組合進行攻擊。為了避免這類攻擊,把協定運行中的所有訊息都連線在一起。
④篡改攻擊:修改、刪除、 添加或替換真實的訊息。為避免這種攻擊可採用訊息認證碼MAC或hash函式等技術。