資訊與網路安全技術第 六章 訊息確認       下一頁

 

第六章  訊息確認

 簽收快遞包裹之後,如何來判斷它不是來自恐怖份子的炸彈包裹?或裡面的巧克力是否已被盜取了一大半?

6-1 訊息確認簡介

內容:

  • 6-1 訊息確認簡介

  • 6-2 萬整性檢查值 - ICV

  • 6-3 訊息確認碼 - MAC

春嬌由網路收到一份由志明傳來的訊息(或郵件)時,春嬌率先考慮到的問題是:

  • 該訊息(或郵件)在傳遞當中是否遭受他人竄改。

  • 該訊息果真是由志明所發送或是他人冒名發送的?

解決上述第一個問題,僅需仰賴『完整性檢查』(Integrity Check)即可。至於要完全解決第一與第二個問題,則需要良好的『訊息確認』(Message Authentication)機制不可。換言之,欲保障所收到的訊息無誤的話,可區分為完整性檢查與訊息確認等兩個層次,至於決定採用何種機制視通訊環境需求而定。基本上,『訊息確認』『數位簽章』(Digital Signature,都是被設計來解決上述兩大問題的技術。且兩者都需要使用鑰匙來表明身分,不過對鑰匙的來源,之間有很大的差異。一般來講,『訊息確認』是以雙方共享的秘密鑰匙(或會議鑰匙)來確認傳送者的身份;『數位簽章』大多是以傳送者的公開鑰匙來確定身份。至於兩者的應用範圍也有很大的區隔,一般『訊息確認』較著重於訊息傳輸方面;『數位簽章』則大多使用於身份識別方面(如 PKI 系統),但爾後的應用發展,實難預料。本章以訊息確認為主要介紹對象,至於數位簽章部分留於第七章再詳細介紹。

6-2 完整性檢查值 - ICV

所謂『完整性檢查值』(Integrity Check Value, ICV是利用雜湊函數(如 MD4MD5SHA-1)而得。通常傳送端發送訊息之前,會先將訊息經過某一個雜湊函數計算出雜湊碼,再將此雜湊值附加在訊息的後面,一併傳送給接收端;接收端收到訊息之後,也以相同的雜湊函數計算出雜湊碼,如果所計算出的結果與訊息後面的雜湊值相同的話,即表示訊息在傳輸當中未遭受它人竄改。由於此雜湊碼為檢查訊息是否遭受竄改的依據,因此稱為『完整性檢查值』。

基本上,完整性檢查不會使用到鑰匙,並沒有利用到加密/解密機制,其安全性完全仰賴雜湊函數的強度而定。但就安全性通訊而言,強度再強的雜湊演算法都不能保證其絕對可靠性,因此,完整性檢查值大多在有保護的安全連線下傳輸。為配合各種安全連線的傳輸,ICV 可分下列兩種製作方式。

6-2-1 明文計算 ICV

明文計算 ICV 機制(如圖 6-1 (a) 所示),表示利用某一種雜湊函數直接將明文計算出一個 ICV 值,再將 ICV 附加在訊息後面傳送給對方;接收端也將所收到的訊息(M’)經過同一種雜湊函數計算出另一個 ICV 值,如果兩個 ICV 值相同的話,則表示訊息是正確的。在此機制下,ICV 值與訊息都是以明文傳送,並沒有任何安全考量;攻擊者取得訊息之後,可試著竄改訊息內容以得到相同的 ICV 值,如此一來,便可達到破壞攻擊的目的。至於攻擊者是否可偽造新的訊息並產生相同的 ICV 值的困難度,這完全視雜湊演算法的強度如何(第五章介紹)。由此可見,明文計算 ICV 機制僅適合於有安全保護下的連線使用;不然就得將訊息與 ICV 值一起加密後,再傳送給對方。

6-1-1 完整性檢查製作方式

6-2-2 密文計算 ICV

密文計算 ICV 機制,表示訊息經過加密之後,再利用密文來計算 ICV 值,並將 ICV 值與密文一起傳送給接收端,如圖 6-1 (b) 所示。很明顯可看出,它的安全性會比明文計算高一點,攻擊者若想藉由修飾沒有規律的密文,產生相同的 ICV 值,似乎不是那麼容易,因此可以獨立作業,不一定非得在有安全保護的連線下傳輸。一般對比較不重要的訊息,利用此機制來傳輸即可(反正訊息已加密),不需要額外的安全連線。

6-1-2 完整性檢查製作方式

6-3 訊息確認碼 - MAC

『訊息確認』(Message Authentication必須包含兩層次的功能:一者為保證訊息的『完整性』;另一者為如何將秘密鑰匙加入訊息之內(如加密功能),以作為發送訊息者的身份確認,來達到『確認性』功能。就前者而言,傳送端一般都利用『雜湊函數』(Hash Function計算出一個固定長度的雜湊值,作為一個獨一無二的訊息認證;並且該值必須隨輸入訊息的改變而改變,因此無法冒充,故可稱之為『完整性檢查碼』(ICV)。後者係將秘密鑰匙加入雜湊值(或 ICV)之中,成為一個可確認身份的『訊息確認碼』(Message Authentication Code, MAC。當然,將鑰匙加入訊息之中,大多是採用加密演算法。但也不完全如此,因為將鑰匙加入雜湊值(或 ICV)的目的是要確定傳送者身份,並非要保護該雜湊值,因此,除了訊息確認碼較普遍的加密演算法(MAC-DES)之外,我們也會介紹其它相關的演算法(如 HMAC6-5 節介紹)。

一般情況,MAC 機制大多採用秘密鑰匙系統(有些系統會採用公開鑰匙系統)。通訊之前雙方必須透過其它機制,使能共享一把秘密鑰匙。接收端則依據對方所使用的鑰匙是否和自己的相同,來確認訊息是否來自可信任的一方;因此,將共享鑰匙植入雜湊碼內,同時完成『完整性』與『確認性』的功能。圖 6-2 為訊息確認的功能圖,運作程序如下:首先將訊息經由雜湊演算法計算出雜湊值(H),再利用鑰匙加密(或植入)之後,得到一個稱之為『訊息確認碼』(MAC);接著將它附加在訊息的後面,傳送給接收端;接收端收到訊息之後,利用相同的雜湊演算法將訊息(M’)計算出雜湊值(H’),再與解密(或植入)後的雜湊值(H)相比較,如果兩者相符,則表示訊息正確(或身份正確);否則表示訊息也許在傳送中發生錯誤(被竄改),或是鑰匙不對(偽造訊息或仿冒身份)。至於傳送端如何將鑰匙加入雜湊碼之中成為 MAC 碼,又接收端如何驗證 MAC 碼中所植入鑰匙的正確性,則延伸有種演算法,本書僅介紹 MAC-DES HMAC 等兩個 MAC 系統,以下分別介紹之。

6-2 訊息確認的運作程序

翻轉工作室:粘添壽

 

資訊與網路安全技術

 

 

翻轉電子書系列: