close

摘要



對稱密碼體系和非對稱密碼體系各有優缺點。探索一種兩者結合的,既保留各自優點,又能最大限度地消除各自缺點的混合密碼體系,對現代網絡通信的高效性和安全性有着重要意義。使用非對稱密碼保護對稱密碼密鑰是一種可行的方案。在此方案下,攻擊者無法繞過對非對稱密碼密鑰的破解而直接攻擊對稱密碼的密文。這一方案的提出和論證,表明各種密碼體系可以混合使用,取長補短,互為加固。

內容目錄:

1 DES 算法

2 DES 算法的改進方案

2.1 改進方案的總體設計

2.2 改進算法詳述

2.2.1 密文包的整體結構

2.2.2 對原始明文的預處理

2.2.3 密文包的頭部結構

2.2.4 加密和解密流程

3 改進 DES 算法的抗攻擊能力分析

4 結 語

數據加密算法是由 IBM 公司於 20 世紀 70年代早期開發的一種分組加密法,由於其具有數學上可證明的安全強度(以擴散模糊和擾亂模糊為特徵),易於硬件實現的特點 ,已逐漸由理論走向實踐應用,被廣泛應用於通信行業和金融行業,並在 1977 年成為美國政府正式認可的數據加密標準(Data Encryption Standard,DES)。然而,DES 算法仍未解決所有對稱加密算法共有的缺陷:對稱密鑰的分發要占用額外的安全信道。同時,隨着計算機計算速度的提升,DES 算法對於窮舉法攻擊的抵抗能力被逐漸削弱。到了互聯網加密流量爆發式增長的20 世紀 90 年代,網絡通信中的主流數據加密算法是以 RSA 為代表的非對稱加密體系。這種非對稱加密算法具有密鑰易於分配(不占用額外信道)的特點以及強大的抵抗窮舉法攻擊的能力。非對稱加密體系的廣泛應用,是技術進步和對信息安全需求提高所帶來的必然結果。

如今,對稱加密算法仍然應用於通信、經濟等眾多領域,並沒有因為科技的發展而被淘汰。究其原因,是對稱加密和非對稱加密並不是兩種互相對立、互相排斥的密碼體系,它們各有優點和缺點,清晰地認識到它們的互補性,是構造相對完善的密碼體系的關鍵。公鑰密碼體系雖具有易於分配密鑰和難於被暴力攻擊的優點,但這些優點是以犧牲效率為代價的。與對稱算法相比,非對稱算法在加密和解密時需要花費更多的時間。這使得非對稱算法在一些需要即時響應的應用場景中,如邊緣計算,變得不再適用。這說明,要獲得更高的安全強度,同時使算法效率不至於大幅降低,必須把兩種密碼體系有機結合。

本文選取了在現代密碼算法中具有里程碑意義的對稱加密算法 DES 作為研究對象,引入非對稱密碼體系的思想對其進行改進。本文提出的改進算法,除了保留 DES 算法原有優點,還具備非對稱算法的所有優點,是一種適應現代網絡通信的數據安全保護的密碼算法。


DES 算法

DES 算法是一種分組密碼,明文每 64 比特為一組,密鑰為 64 比特,除去 8 比特奇偶校驗位,實際密鑰為 56 比特,因此密鑰組合數量為 256 個。加密時,用同一密鑰依次對每組明文進行加密,得到的每組密文也是 64 比特,因此最後得到的密文長度和明文長度一致。對每組等長明文加密時,密鑰不變,算法也不變,因此 DES 十分適合以嵌入式硬件實現 。DES 加密前先把明文用一個置換函數 IP 映射為初始密文。DES 加密算法由 16 輪迭代加密構成,每次迭代加密所用密鑰由原始密鑰循環左移得到,稱為子密鑰 K 。每輪迭代前,把上一輪迭代得到的密文(如果是第一輪迭代,加密對象是初始密文)分為左半 L(第 1~32 位)和右半 R(第33~64 位)。R 被當前子密鑰加密為 f (R, K) ,f 為加密函數。f (R, K) 和 L 異或運算後得到下一輪迭代的右半 R' 。下一輪迭代的左半 L' 由R 賦值,和 R 完全一致。16 輪迭代完成後得到的密文,經過一個置換函數映射後得到最終密文。解密算法和加密算法一致,密鑰也一致,但每輪迭代所使用的子密鑰的順序和加密時相反。

經過 16 輪迭代的 DES 算法已被證明具有充分的對抗統計分析和線性分析的能力。因此,破解 16 輪迭代的 DES 密文的唯一途徑是暴力破解,即用窮舉法嘗試所有的 256 個可能的密鑰 [7],這在 DES 算法剛提出時被認為是不可能完成的任務。但隨着計算機運算速度的提高和並行計算技術的成熟,DES 的安全度被大大弱化。

2


DES 算法的改進方案

對 DES 算法的改進原則是使用 RSA 保護DES 密鑰,同時在加密前,對明文增加亂序和干擾處理。

2.1 改進方案的總體設計

DES 算法的密鑰是對稱密鑰,必須通過秘密信道傳送。為了使其也能通過互聯網等公開信道傳送,必須使用公鑰密碼體系對其進行保護。最常用的公鑰密碼算法是 RSA,因此,我們可以把 DES 密鑰「封裝」在一個 RSA 加密的「頭部」(Header)里,然後把這個頭部附加在DES 密文前,成為一個密文包(Encrypted Data Packet),再把這個密文包發送給接收方。「封裝」主要是指用接收方的公鑰加密 DES 密鑰。接收方收到密文包後,先以自己的私鑰解密包頭,取出 DES 密鑰後,再用其解密密文包的數據部分(即 DES 密文),得到明文。

如果頭部封裝的信息僅僅是 DES 密鑰,抗攻擊意義並不大,僅解決了密鑰通過公共信道分發的問題,攻擊者仍然可以用窮舉法對密文包的數據部分實施暴力破解。為了增加暴力破解的難度,密文包頭部字段中必須包含一些有助於提高暴力破解難度的信息,並且不能顯著影響密文包頭的 RSA 解密效率。主要可以採取以下兩個策略:(1)對明文預先進行亂序處理,擾亂(Confuse)明文的原來順序;(2)在 DES加密前插入無效信息,攻擊者只有在剔除這些無效信息後,才能得到有效的密文分組,並對此分組嘗試暴力破解。

2.2 改進算法詳述

改進算法包括密文包的結構、明文的預處理和加密流程,以及密文包的頭部結構。

2.2.1 密文包的整體結構

密文包由頭部和密文兩個部分組成。由於頭部是用 RSA 加密的密文,因此本文以「RSA 頭」這一名稱指代頭部。明文通過 RSA 頭中的密鑰集加密後,生成密文部分。由於無效信息的插入,使密文部分和明文部分的長度不相等,大大增加了破解的難度。「密鑰集」不僅是 DES 密鑰,還包含了加密或解密流程中各階段所使用的密鑰,而 DES 加密或解密僅僅是其中一個階段。為方便接收方把頭部分離出來,RSA 頭的長度是固定的,只能用接收方的私鑰解密。

2.2.2 對原始明文的預處理

加密前需要對原始明文 P 進行預處理,詳細流程如下文所述。

(1)分組。分組長度和 DES 加密的分組長度一致(64 位),最後一組不足 64 位的以 0 補足。(2)分段。段是比組更高一級的單位,每段包含64個分組,最後一段不足64組的以0補足。

對預處理後的明文用 P0 表示,得出,其中為 P0 的 第 i 個 分 段,段的第 j 個分組),分組中的第 k 位)。

整個加密過程需經過 3 次加密,分別以 U,J,D 表示,每次加密後的密文分別以 A ,B ,C 表示。圖 1 說明了 3 次加密之間的輸入 / 輸出關係。

圖 1 加密流程

2.2.3 密文包的頭部結構

RSA 頭包括 3 個關鍵字段和一些輔助字段(如圖 2 所示)。關鍵字段分別存放 3 個密鑰,對應加密流程的 U,J,C 這 3 個階段。輔助字段主要存放控制和校驗信息。這些字段的名稱、長度和作用如下文所述。

圖 2 RSA 頭的布局結構

(1)亂序密鑰(Confusing Key,CK)。亂序密鑰的作用是對每段明文進行重排(Reshuffle)。其長度為 64 個字節,每個字節最高位恆為 0,最低位為校驗位,中間 6 位轉化為 10 進制數後表示一個加密參數,i 為字節的序號。亂序加密算法為,表明第i 組的密文由明文各組的第比特排列而成。其中,是第 m 組的第 n 位,滿足

(2)干擾密鑰(Jamming Key,JK)。干擾密鑰的作用是在密文 A 的每個分組中插入無效信息,以增加破解難度。其長度為 8 位,前6 位表示在分組中插值的位置,後兩位是需要插入的值。如干擾密鑰是,可以看出,干擾密鑰前 6 位的 10 進制數值為 19,故J =19,二進制 10 會被插入到目標分組的第 19個比特前。干擾密鑰只應用在密文 A 的第 1 個分組中,此後,它會發生動態變化。應用在密文 A 的第 2 個分組的干擾密鑰將從第 1 個分組的明文中產生。方法是把一個 8 位的空字節(窗口)放置在明文第 1 個分組的起始位置(即 0號位),窗口的最高位對應分組的 0 號位,窗口顯示的字節即為第 2 個分組的干擾密鑰。同樣地,把 8 位窗口放置在第 2 個分組的 1 號位,得到第 3 個分組的干擾密鑰。以此類推,每次把窗口右移一位,即可得到下一分組的干擾密鑰。如果窗口越過分組的右邊界,則把越過的比特循環對應分組開始時的幾個比特。這種插值法有一個缺陷,密文分組的長度固定是 66 位(因為插值固定是 2 位),使攻擊者可以輕鬆地從密文中分離出有效分組,再對有效分組實施破解。為了使插值後的分組長度不固定,需要改變插值的長度,具體操作是從第 2 個分組開始,使算法中干擾密鑰末兩位的含義發生變化,由原來的「插值的內容」變化為「插值的位數」。插值的內容從窗口後截取,截取的長度就是末兩位所指出的插值的位數。同樣地,截取插值時把背景分組看成首尾相接的環。這樣一來,插值長度可能是 0,1,2,3 其中之一。

(3)DES 密 鑰(DES Key,DK)。DES 密鑰的作用、形式、應用方法和經典 DES 加密密鑰一致,在 RSA 頭占 64 位,它作用於干擾加密的結果 B ,產生密文C 。

(4)標誌位(Flags)。標誌位占 2 位,分別指出在加密過程中是否使用了干擾加密和亂序加密。

(5)摘要算法(Hash Algorithm,HA)。摘要算法占 6 位,對 RSA 頭中特定部分應用本算法,得出摘要(Hash)字段的值。特定部分是指 RSA頭中從起始到標誌位(包括標誌位)的部分,本文稱為「上段」。這一字段最多可表示種摘要算法,包括常用的 MD5 信息摘要算法(MD5 Message-Digest Algorithm,MD5)、安全散列算法(Secure Hash Algorithm,SHA)等算法。

(6)保留位(Reserved Bits)。未使用位,留待優化算法時使用。

(7)摘要(Hash)。摘要是對 RSA 頭上段應用「摘要算法」字段指定的散列算法而得到的哈希值,長 128 位。

(8)校驗值(Checksum)。校驗值是密文部分的校驗值,所用散列算法由「摘要算法」字段指定,長 128 位。

2.2.4 加密和解密流程

加密流程如下文所述。

(1)把原始明文 P 預處理為 P0 。(2)隨機產生 3 個密鑰,即 CK , JK ,DK 。(3)對 P0 應用CK ,得到 A 。(4)對 A 應用 JK ,得到 B 。(5)對 B 應用 DK ,得到C 。(6)填寫 RSA 頭各字段。(7) 計 算 並 填 寫 摘 要(Hash) 和 校 驗 值(Checksum)字段。(8)用接收方的公鑰加密 RSA 頭的明文,得到密文包的頭部。(9)把密文包頭部和密文 C 連接,整合成一個完整的密文包。

解密流程與加密流程各步驟的順序相反,要注意以下幾點。

(1)容易分離出密文包頭部,因為它的長度是固定的 896 位。(2)在解密密文包頭部時,須使用接收方的私鑰。(3)對 B 應用 JK 時(清除無效信息),是從第 1 個分組開始,而不是相反地從最後一個分組開始。即先用 JK 恢復第 1 個分組,再用8 位窗口循環右移的方法得到第 2 個分組的干擾密鑰,從而恢復第 2 個分組,以此類推。(4)對於加密前的預處理,沒有逆算法,因而解密時不需要執行逆算法。

3


改進 DES 算法的抗攻擊能力分析

本文提出的改進 DES 算法的密鑰不再是單一的對稱密鑰,而是由 3 個互相獨立的密鑰CK ,JK ,DK 組成的密鑰集,並受 RSA 密碼的保護。即使通過窮舉法暴力破解密鑰集CK ,JK ,DK ,其面臨的可能密鑰組合數量為:,這個組合數量已經具備足夠的強度來抵抗當前計算技術下可以實現的暴力破解攻擊。

對於統計分析攻擊的防禦,DES 加密所實現的擴散模糊有效地抵禦了基於統計的攻擊。這是經典 DES 算法的優點之一,本文的算法完整保留了這一優點。

對於差分分析、線性分析等數學分析方法的防禦,因為多重密鑰必然會帶來分析參數數量的暴增,使得數學分析難度加大,同時,分階段的加密流程使本算法難以使用單一的數學分析方法破解。表明對稱密碼和非對稱密碼體系在應用中可以混合使用,取長補短,互為加固。

4


結 語

本文在經典的 DES 加密算法的基礎上,提出了一種改進算法。其設計思想是用非對稱密碼算法保護 DES 密鑰,產生「密鑰外殼」,使加殼密鑰和密文組成了防禦破解的共同體;同時在 DES 加密的基礎上,增加了亂序加密和干擾加密,其密鑰同樣受到密鑰外殼的保護,使攻擊者無法在不攻破密鑰外殼的情況下,單獨對密文實施暴力破解。然而,這種算法的軟硬件實現方式和性能仍有待進一步評估和測試,這關係到它在何種範圍、何種場景中才能得到實際的應用。


引用格式:黃偉 .DES 加密算法的改進方案 [J]. 信息安全與通信保密 ,2022(7):100-105.

作者簡介 >>>

黃 偉,男,碩士,高級工程師,主要研究方向為應用密碼技術、區塊鏈技術。

選自《信息安全與通信保密》2022年第7期(為便於排版,已省去原文參考文獻)


商務合作 | 開白轉載 | 媒體交流 | 理事服務

請聯繫:15710013727(微信同號)

《信息安全與通信保密》雜誌投稿

聯繫電話:13391516229(微信同號)

郵箱:xxaqtgxt@163.com

《通信技術》雜誌投稿

聯繫電話:15198220331(微信同號)

郵箱:txjstgyx@163.com

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()