王紅珍 , 李竹林
(1.延安大學 計算機學院,陜西 延安 716000;2.延安大學 軟件研究與開發中心,陜西 延安 716000)
由于對稱加密算法運行速度快,加密強度高,但是密鑰管理困難;而公鑰加密算法密鑰管理簡單方便,加密強度高,但是算法運算量大導致運行速度慢,因此文中采用對稱加密算法AES加(解)密文件級別的大批量數據,而用公鑰加密算法ECC來加密AES密鑰和其它數據量少但安全要求高的數據,兩種加密方法的結合,有效地提高了加密效率,更重要的是它可以大大提高AES密鑰管理上的安全性。
AES算法的結構緊湊、規整,每輪變換也基本一致所以易于用軟件或是硬件實現,因此具有良好的實現性[1]。AES具體的加(解)密過程如下:
1)加密過程
AES加密由以下步驟組成:
①初始輪加密;
②Nr-1輪加密;
③第Nr輪加密;
用類C語言描述為:
void Cipher( ) //加密算法

2)解密過程
解密過程和加密過程具有同樣的變換結構,用到的算法都是加密過程中用到的算法的逆算法。
AES加(解)密實現的思路:將需要加(解)密的文件讀入內存,每次依次順序截取其中的128 bit分組進行處理稱為一個狀態(State),一個狀態是一個字節矩陣,矩陣中的每個元素都是一個字節,這個狀態陣列在每一層加密或解密時都進行修改,每次分組加(解)密的結果依次順序寫入保存處理結果的文件緩沖區,直到整個文件處理完為止,當文件處理完畢后將文件緩沖區結果保存到磁盤或發送出去[2]。
在橢圓曲線密碼系統中,曲線的選取是影響系統安全性的決定因素。在系統中我們采用了NIST推薦的曲線,采用素數p192作為有限域的階,p192是安全性和效率折中后的選擇,并且由于參數已知而省去了曲線建立的代價[1,3]。NIST給出的定義在上的橢圓曲線的域參數如下:

實現有限域上的ECC,需要用到有限域上的加法、減法、乘法(包括平方)、求逆和取模這幾種算術。根據研究和分析我們發現:模加(加后取模)和模減(減后取模)的運算速度是模乘運算(乘后取模)的10倍以上;求逆運算時間與大約70個模乘運算時間相當;ECC運算70%左右的時間消耗在模乘運算上??紤]到上述因素,我們在制定方案時,只需考慮使ECC運算盡量少涉及有限域上的求逆運算[3]。
1)用戶 A 選定一條橢圓曲線Ep(a,b),并取橢圓曲線上一點,作為基點G(x,y);
2)用戶A選擇一個私鑰k,并生成公鑰K=kG;
3)用戶 A 將Ep(a,b)和點K,G傳給用戶 B;
4)用戶B收到信息后,將待傳輸的明文編碼到Ep(a,b)上一點M,并產生一個隨機整數r(r<n);
5)用戶 B計算點C1=M+rK;C2=rG;
6)用戶 B將C1,C2傳給用戶 A;
7)用戶A收到信息后,計算C1-kC2,結果就是點M。因為C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M。
再對點M進行解碼就可以得到明文。
對稱加密算法具有速度快、強度高、便于實現等優點,尤其適合加密大塊數據,但密鑰分配與管理比較困難,而公鑰加密算法具有密鑰分發與管理簡單、速度慢等特點,一般用于加密少量數據。所以在本方案中我們采用AES算法加密大數據塊,而用ECC算法管理(保護)AES密鑰,這樣我們就集成了兩類加密算法的優點,既實現了加密速度快的優點,又實現了安全方便管理密鑰的優點[4]。
在橢圓曲線上Ep(a,b)上選一點G(x,y),G的階數為n(n為一個大素數),G公開。在[1,n-1]之間隨機地確定一個整數Ks,計算Kp=KsG,且Kp為橢圓曲線Ep(a,b)上的一點,由此就確定了密鑰對(Ks,Kp)。Ks為私鑰,Kp為公鑰[3]。
加密 AES密鑰:設KA為 AES算法密鑰,取隨機數r,r∈{1,2,…,n-1},計算u=rKBP(KBP為公鑰),R1=rG=(x1,y1),v=x1KA,由此產生二元組(u,v)。
解密 AES 密鑰:用KBS(KBS為私鑰)計算(x1,y1)=,從而得KA=x-11v。
加密流程如圖1所示,步驟如下:
1)用AES算法對明文m進行加密,得到密文塊c,加密密鑰為KA;
2)用ECC對KA進行加密,得到AES密鑰塊;3)最后所得密文就是密文塊c、AES密鑰塊。

圖1 加密流程Fig.1 Encryption process
解密流程如圖2所示,步驟如下:
1)用ECC算法解密AES密鑰塊,得到KA;
2)用KA對密文塊c進行解密,得到明文m。

圖2 解密流程Fig.2 Decryption process
對于本方案的威脅手段,從技術上來講可能的情況有2種:
1)破解AES對稱加密算法;
2)破解ECC公鑰加密算法。
本方案選擇的AES算法具有著堅固的抗密碼分析能力,安全性能極高,到目前為止,仍沒有找到有效的算法本身的攻擊漏洞,因此最有效的破解途徑依然是窮盡搜索全部可能的密鑰,但是 Rijndael的密鑰空間支持 128 bit,192 bit和256 bit,據NIST計算,如果有人能夠制造一種1 s內即能破解DES密碼的設備,那么用這種計算機來破解128 bit算法的密碼仍需要149萬億年。
而ECC加密算法的安全性依賴于橢圓曲線離散對數的安全性,安全橢圓曲線的選取是建立橢圓曲線密碼體制的基石,所以曲線的安全是保證密碼體系安全的重要因素。在過去的十多年里,橢圓曲線離散對數問題受到了數學界的極大關注。目前,還沒有發現橢圓曲線離散對數(ECDLP)有什么特別大的弱點。
該方案由密鑰生成模塊、文件加(解)密模塊、密鑰加密模塊、密鑰解密模塊等4部分組成[4-5]。
1)密鑰生成模塊
該模塊的功能是由系統調用ECC算法,計算并產生私鑰和公鑰,私鑰和公鑰是對應的,即一個私鑰只能解開其對應公鑰加密的數據。
2)文件加(解)密模塊
該模塊的功能是由系統調用AES算法,對欲加密的文件文件夾進行加密處理或者對已經用該算法加密后的文件或文件夾進行解密處理。
如圖3所示為文件加(解)密的界面。

圖3 文件加(解密)Fig.3 File encryption/decryption
3)密鑰加密模塊
該模塊的功能是用ECC加密算法加密AES密鑰,保密AES密鑰。
4)密鑰解密模塊
該模塊的功能是用ECC加密算法解密AES密鑰,使得AES密鑰不能夠非法使用。
對稱加密算法具有速度快、強度高、便于實現等優點,尤其適合加密大塊數據,但密鑰分配與管理比較困難,而公鑰加密算法具有密鑰分發與管理簡單、速度慢等特點,一般用于加密少量數據[6]。所以在本方案中我們采用AES算法加密大數據塊,而用ECC算法管理(保護)AES密鑰,這樣我們就集成了兩類加密算法的優點,既實現了加密速度快的優點,又實現了安全方便管理密鑰的優點,有效地解決了密碼體制中速度和安全性不能兼顧的問題。
[1]楊普,揭金良.橢圓曲線密碼和AES算法的分析與設計[J].網絡安全技術與應用,2009(1):94-95.
YANG Pu,JIAN Jin-Liang.Elliptic curve cryptography and AES analysis and design[J].Network Security Technology&Application,2009(1):94-95.
[2]景為平,徐晨,陳海進.AES密碼算法的結構優化與實現[J].微電子學與計算機,2007(2):36-38.
JING Wei-ping,XU Chen,CHEN Hai-jin.Architecture optimization and implementation of AES algorithm[J].Microelectronics&Computer,2007(2):36-38.
[3]侯愛琴,辛小龍,楊世勇.GF(p)上安全橢圓曲線產生算法[J].計算機工程,2009(23):138-140.
HOU Ai-qin,XIN Xiao-long,YANG Shi-yong.Secure elliptic curve generating algorithm over GF(p)[J].Computer Engineering,2009(23):138-140.
[4]董尼.基于AES與ECC的混合密碼體制的研究與實現[D].合肥:合肥工業大學,2006.
[5]許金玲.基于RSA與AES混合加密系統的算法研究[D].燕山:燕山大學,2005.
[6]張秀愛.橢圓曲線密碼體制的研究[J].通信技術,2009(5):208-209.
ZHANG Xiu-ai.Study of elliptic curve cryptography[J].Communications Technology,2009(5):208-209.