6-4 MAC-DES 演算法
本書到目前為止,已介紹了加密演算法(秘密鑰匙系統與公開鑰匙系統)、雜湊演算法,接下來,就必須將這些技術整合在一起,建構一個完整的 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 規範使用 MD5、SHA-1 或 ROPEMD-160 等雜湊演算法,並且可由通訊雙方協議出採用何種演算法(如 IPSec 規範)。 |
翻轉工作室:粘添壽
資訊與網路安全技術
翻轉電子書系列:
|