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

 

6-4 MAC-DES 演算法

內容:

  • 6-4 MAC-DES 演算法

  • 6-5 HMAC 演算法

本書到目前為止,已介紹了加密演算法(秘密鑰匙系統與公開鑰匙系統)、雜湊演算法,接下來,就必須將這些技術整合在一起,建構一個完整的 MAC 系統。雖然 MAC 包含了加密演算法與雜湊演算法,但它們之間是混合在一起;至於如何混合這兩種演算法,也是值得研究的課題。

首先介紹一種最常用的 MAC 系統,它是以 DES 加密系統為基礎而建立,一般稱為『MAC-DES』演算法。這種演算法已被 FIPS 發表為標準(FIPS PUB 113),同時也成為 ANSI 的標準(X9.17);標準規範內稱之為『資料確認演算法』(Data Authentication Algorithm, DAA,所產生的確認碼稱為『資料確認碼』(Data Authentication Code, DAC

MAC-DES使用 DES CBC 模式(請參考第 2 章),並將起始向量設定為零,如圖 6-3 所示。MAC-DES 的運作如下:首先將欲確認的資料(訊息、紀錄、檔案、或程式)以 64 個位元為單位,分割成若干個區塊(D1, D2, …, DN),其中如有不足的部分全部補上 0。接下來,以區塊為單位,連續送給 DES 演算法運算,計算時會輸入 56 位元的加密鑰匙(或稱秘密鑰匙),輸出的密文仍為 64 個位元。前一區塊所產生的密文,與本次的區塊明文之間執行 XOR 運算,再進入 DES 演算法編碼;依此類推,直到最後區塊的密文輸出(64 bits)。由最後輸出的密文(QN)中取最高位元的若干位元(16 ~ 64 bits),作為 MAC 值(或稱 DAC)的輸出。

由此可見,MAC-DES 的特點是,將加密演算法的操作當作雜湊演算法來使用,而且也順利的將鑰匙嵌入其中。許多應用系統都是採用 DES 標準,因為較容易實現 MAC-DES 演算法。但 MAC-DES MAC 長度只有 64 個位元,防禦暴力攻擊的能力有所不足;通常採用此演算法的鑰匙大多只使用一次(或是一個運作程序),以策安全。

6-3 MAC-DES 運作程序

雖然 MAC-DES 是採用 56 位元鑰匙的 DES 演算法,但許多地方為了提高安全性,也漸漸採用 128 位元的 AES 演算法(如第三章介紹)。

6-5 HMAC 演算法

基本上,『訊息確認碼』(MAC『數位簽章』(DS皆是利用加密演算法與雜湊演算法共同組合而成。在許多情況下,我們發現並非得利用加密演算法來建構 MAC 系統不可。若能將秘密鑰匙與訊息混合起來,再經過雜湊演算法處理,可以同時達到加密與訊息確認的功能,此種技術稱之為『雜湊訊息確認碼』(Hash Massage Authentication Code, HMAC)系統(RFC 2104)。圖 6-4 HMAC 的處理程序,假設通訊雙方都擁有秘密鑰匙 K;發送端將秘密鑰匙崁入訊息之中,一起計算出 MAC 碼,再附加於訊息之後傳送給接收端;接收端以同樣的方法計算出 MAC’;再比較兩者是否相同,如果相同,表示訊息與鑰匙都是正常的(當然也表示發送端並非冒充的)。

6-4 HMAC 的運作程序

早期開發的雜湊演算法並非針對 MAC 而設計(在資訊安全上有許多地方會用到雜湊演算法),它也不會使用到鑰匙。因此,一昧的利用加密演算法與雜湊演算法來製造 MAC,並不是十分恰當。目前有許多研究發現,將鑰匙與訊息混合(排列方式)經過雜湊演算法計算的 HMAC 方法,反而比較受歡迎。目前 IP security SSL 規範都已採用 HMAC 的訊息確認方法。

然而,HMAC 到底具備哪些優點?我們可從 RFC 2104 中所列出的 HMAC 設計目標看出,歸納如下:

  • 能在不修改現有的雜湊演算法之下,將它嵌入 HMAC 演算法之內。尤其可將那些執行速度快,又可以免費取得的軟體雜湊演算法,植入 HMAC 系統內,不但執行效率高,而且根本不用付費。

  • 當需要更快速的雜湊演算法時、或是新的雜湊演算法被發展出來的時候,我們希望能容易地更新內嵌的雜湊演算法。

  • 當雜湊演算法被嵌入 HMAC 演算法之內後,期望能維持它原來的執行速度,以免造成執行效能大幅滑落。

  • 可以簡單的使用鑰匙

  • 希望所嵌入的雜湊演算法能滿足一些合理的條件,並且可以根據這些條件分析該 HMAC 的安全強度。

前面兩項條件是 HMAC 被廣泛使用的主要原因,可將雜湊演算法視為一個『黑盒子』,如此有下列兩種優點:

  • (1) 實作 HMAC 時,可將雜湊演算法當成一個模組來實現,並且有許多現成的程式碼可以直接使用;

  • (2) 當需要更換雜湊演算法時,只要更新模組即可,不會影響到其他程式的架構。

在實務應用上,目前已有許多 HMAC 規範使用 MD5SHA-1 ROPEMD-160 等雜湊演算法,並且可由通訊雙方協議出採用何種演算法(如 IPSec 規範)。

 

主講人:粘添壽博士

 

資訊與網路安全技術