劉城霞
1 北京信息科技大學計算機學院 北京 100101
2 北京郵電大學計算機學院 北京 100876
隨著通信的飛速發展,信息安全也越來越顯得重要。計算機密碼體制的基本思想就是將要保護的信息變成偽裝信息,只有合法的接收者才能從中得到真實的信息。密碼體制有對稱密鑰體制和非對稱密鑰體制之分,RC5加密算法為對稱密鑰體制,對RC5的應用研究也非常廣泛,比如在通信中、在無線傳感器中等都有相關的應用和研究。本文所重點研究的是在.NET環境下使用RC5加密算法對某標準XML格式文檔進行文檔級、段落級、句級的加解密操作,并保證加、解密后文檔仍保持原格式及內容。
(1) 創建密鑰組,RC5算法加密時使用了2r+2個密鑰相關的32位字。這里r表示加密的輪數。首先將密鑰字節拷貝到32位字的數組L中,然后利用線性同余發生器模2初始化數組S,最后將L與S混合。
(2)加密處理,創建完密鑰組后對明文的加密,加密時首先將明文分組劃分為兩個32位字:A和B,其中操作符<<<表示循環左移,加運算是模2w的加法。加密偽代碼如下:


其中初始的A、B分別為要加密的兩個比特數為w的數據,最終的A、B分別為加密好的兩個比特數為w的數據。輸出的密文是在寄存器A和B中的內容。
(3) 解密處理,把密文分組劃分為兩個字:A和B,這里符合>>>是循環右移,減運算也是模2w的減法。

其中初始A、B中的數據就是已經加密了的比特數為w的數據,最終的A、B中的數據為解密后的比特數為w的數據。
對于加解密算法來說,安全性是它最重要的一個性能之一,本文中使用的RC5算法的安全性依賴于旋轉操作和多種運算的混合使用。要想攻擊RC5,可以去攻擊原始的密鑰也可以攻擊其擴展的密鑰組S。以差分分析為例,當輪數r很小時,差分分析可以恢復擴展密鑰表的每一個比特。但當r=9時,攻擊RC5-32所需的選擇明文對是245(與16輪DES相同),而當r=12時,需要262個明文對。因此,當輪數很大時,差分分析所需要的明文個數就不大現實了。在論文“對RC5加密算法的差分分析”中,對RC5加密算法進行了差分分析,并得出了結論, 12輪加密足以抗擊對RC5的差分分析。當然人們也在RC5的基礎上不斷改進,比如RC6,R3C等,對它們的性能也有新的分析。
按照RC5算法的理論,在設計系統加解密功能時,將分成四個模塊進行:密鑰成生,加密,解密和密鑰擴展。密鑰生成模塊生成符合要求長度(從128-512不等)的一個初始密鑰,此密鑰可由隨機函數生成。加密模塊由兩部分組成,一部分用于32位分組長度的加密,另一部分用于64位分組的長度的加密。解密模塊類似與加密模塊,也對應32位分組長度的解密和64位分組的長度的解密兩個部分。密鑰擴展模塊是將初始密鑰通過一系列的混合以及運算轉換成能直接用于加解密的子密鑰數組,是算法安全性保證的重要元素(如圖1)。

圖1 系統功能模塊圖
系統中是針對XML格式文檔進行的加解密,因此除了加解密外還要完成XML文檔的解析和組織。節點解析模塊使用DOM技術,對給定的節點進行解析,提取出相關的信息,并將這些信息交與加解密模塊進行相應的處理。節點組織模塊將密文和密鑰信息按照W3C中關于XML文檔節點加密標準進行格式化的組織,產生一個可識別的,規范化的XML加密節點。
另外,由于加解密模塊和解析模塊的輸入輸出的數據類型不一致,需要一個數據轉換的模塊來完成數據轉換功能,保證模塊之間數據傳輸正常。
下面介紹RC5加解密算法的具體實現,其中密鑰生成比較簡單,主要介紹密鑰擴展模塊,加密模塊。
(1) 密鑰擴展
以生成一個作用于32位加密解密過程需要的子密鑰組為例,該密鑰擴展函數可供不同加密輪數的32位加解密過程使用,其中的輸入參數r為需要加密的輪數。

密鑰擴展函數的作用在于將初始的密鑰進行轉換,將其變成適用于RC5加密或者解密過程中所需要的類型的大小,即產生RC5算法加解密時使用了2r+2個密鑰相關的32位字。
(2) 加密過程
以32位分組加密的過程為例,按照RC5算法理論來進行實現的偽代碼。其中A,B為兩個明文分組,各兩個字符,S為擴展的子密鑰數組,r為操作的輪數。


解密過程是加密過程的逆過程,這里不再贅述。
關于XML節點的操作,采用DOM技術來完成。創建節點的偽代碼如下:

由于XML中對于密鑰和密文的顯示,需要采取base64格式,因此需要再次把字符串轉換成base64格式,上述方法中關于此的代碼為:

最終一個可供其他系統的調用的完成RC5加解密功能的系統完成了。為了測試其功能,用C#實現了其演示系統。在明文輸入框的下方有兩個區域,左邊為演示程序的功能選擇部分,右邊的區域顯示的是加密過程所選擇的各種參數的數值。在輸入明文后可以轉換為Unicode,然后進行參數的選擇。選擇完參數以后,將用戶所選擇的參數顯示在參數選擇區域。如圖2所示。

圖2 主界面參數選擇后的顯示
點擊加密后,密文顯示在密文內容處。如需要驗證解密功能,則點擊解密,解密后結果顯示在解密內容處。如圖3所示。

圖3 加解密結果圖
通過對系統的測試,系統能夠正確對標準格式的XML文檔進行RC5的加解密操作。
通過對RC5算法的研究和XML文檔加解密標準的研究,系統完成了將XML格式文檔進行RC5加解密的基本工作。系統將加解密過程生成了DLL文件格式,這增加了它的可移植性,方便了其他系統直接調用。此外,對XML文檔的加密標準遵循W3C國際標準,這增強了系統的通用性和國際性。
[1] 楊波.現代密碼學[M].北京:清華大學出版社.2003.
[2] 陳飛,徐榮聰.RC5 循環覆蓋鏈算法及其在通信保密中的應用[J].福州大學學報(自然科學版).2004.
[3] 關學忠,孫勝勇,郭小勇,劉傳家,楊靜.RC5 加密算法在智能無線傳感器中的應用[J].現代電子技術.2008.
[4] 劉勝利,王育民.對rc5加密算法的差分分析[J].信息安全與通信保密.1998.
[5] 姜浩.從RC5到RC6[J].信息安全與通信保密.2006.
[6] 何文才,牛曉蕾,劉培鶴,杜鵬,張媛媛.密碼算法RC5 和RC6的分析和比較.網絡安全技術與應用.2007.
[7] 張婭莉,黃德成.RC5到RC6的演化設計[J].荊門職業技術學院學報.2007.
[8] World Wide Web Consortium (W3C). XML 文檔國際加解密標準.http://www.w3.org/Ecryption/.