呂 煒 李永忠
(江蘇科技大學(xué)計算機學(xué)院 鎮(zhèn)江 212003)
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)中的數(shù)據(jù)在傳輸時面臨了諸多安全威脅。若未對信道中傳輸?shù)碾[私數(shù)據(jù)未進行任何加密保護,則數(shù)據(jù)很可能面臨被篡改的風(fēng)險或?qū)е聰?shù)據(jù)泄露等問題[1~2]。在實際應(yīng)用時,采用單一密碼體制存在密鑰管理困難或加解密效果不理想等問題,因此混合加密方案兼顧了安全性與效率而受到業(yè)內(nèi)廣泛關(guān)注[3~4]。劉見龍[5]采用SM2 結(jié)合SM4 的混合加密方案,實現(xiàn)了一個WIFI 熱點管理系統(tǒng),提高了WIFI 熱點的安全性。王紅珍[6]采用ECC 結(jié)合AES的混合加密方案,設(shè)計了一個加密系統(tǒng)。肖振久[7]改進了AES 和RSA算法,將兩者結(jié)合設(shè)計了一個基于混合加密的數(shù)字簽名系統(tǒng)。
本文提一種改進的AES 算法結(jié)合國密SM2 算法對網(wǎng)絡(luò)中的數(shù)據(jù)進行加密傳輸。利用改進AES算法加密速率快和國密SM2 算法便于管理密鑰的優(yōu)勢,對需要傳輸?shù)臄?shù)據(jù)進行安全高效的加密。同時加入SM3算法,用于數(shù)據(jù)完整性檢驗。
美國于2001 年提出了AES 對稱加密加法,該算法的密鑰有128 位、192 位和256 位可選,其具有加密靈活、適應(yīng)能力強和加解密效率高等特點[8~9]。
AES算法的加密流程如圖1所示。
圖1 AES加密流程
我國國密SM系列算法中的SM2算法是基于國外的ECC 橢圓曲線密碼體制研發(fā)的,但是SM2 算法的各方面性能要優(yōu)于ECC算法,其加解密步驟如下[10~11]。
1)接收方選擇一條橢圓曲線Ep(a,b),并在曲線上選擇一個基點G,生成密鑰對(dB,PB),將公鑰發(fā)送給消息發(fā)送方;
2)發(fā)送方根據(jù)接收到的公鑰PB將明文M 編碼到Ep(a,b)上,將密文傳輸給接收方;
3)接收方收到密文數(shù)據(jù)包后使用私鑰dB解密得明文M'。
SM3算法是國密系列算法中唯一的雜湊算法,要求輸入的明文信息長度l<264bit,然后將消息經(jīng)過信息填充、迭代過程、消息擴展和壓縮函數(shù)等處理,最終輸出一個固定長度為256bit的雜湊值[12]。
1)AES密鑰擴展改進
傳統(tǒng)AES 加密算法10 輪密鑰擴展過程為,將輸入的初始128bit 放到一個4*4 的狀態(tài)矩陣中,然后判斷,若i 的值不為整除4,則W[i]=W[i-4]⊕W[i-1];若i 的值能整除4,則W[i]=W[i-4]⊕T(W[i-1]),最后擴展成44列的擴展密鑰數(shù)組。由此可知W[i]的結(jié)果都由W[i-1]和W[i-4]運算得到,雖然這種密鑰擴展方式高效但是存在一個缺陷,若是攻擊者獲取到其中一輪的密鑰,就能根據(jù)逆變換倒推出前面的密鑰以及推導(dǎo)出后面的密鑰,從而獲取到剩余的所有密鑰[13]。
文獻[7]中提供了一種密鑰擴展的改進方法,原理如圖2所示。
圖2 改進的AES密鑰擴展
初始密鑰不變,依舊按照原來的密鑰擴展算法進行輪密鑰擴展。但在接下來的十輪密鑰擴展中,第一輪密鑰擴展時使用一個與初始密鑰無關(guān)的新密鑰填入其中,后面的密鑰擴展過程依據(jù)AES固有的擴展算法在新密鑰的基礎(chǔ)上進行擴展,這樣能大大提高密鑰的安全性。
2)AES列混合操作改進
在傳統(tǒng)AES算法中,列混合變換是通過固定矩陣M 相乘來實現(xiàn)的,分為解密時的正向列混合變換,如式(1)所示,以及解密時的逆向列混合變換,如式(2)所示。
文獻[7]中提供了一種列混合操作的改進方法,使固定矩陣M的逆矩陣與原矩陣相等,如式(3)所示,則解密時的列混合變換就跟加密一樣只需要進行2 次乘法運算和4 次異或運算,能大大提高解密速度。
1)加密過程[14]
輸入:長度為klen的明文M,公鑰PB;
(1)產(chǎn)生隨機整數(shù)k,k∈[1,n-1] ;
(2)求C1=[k]G=(x1,y1),將C1轉(zhuǎn)化為比特串;
(3)求S=[h]PB,判斷若S 為無窮遠點,則報錯;
(4)求(x2,y2)=[k]PB;
(5)求t=KDF(x2||y2,klen),若t 全為0,則返回(1);
(6)求C2=M⊕t;
(7)求C3=Hash(x2||M||y2);
輸出密文C=C1||C2||C3。
2)解密過程[15]
輸入:密文比特串C,私鑰dB;
(1)提取出C1,將C1轉(zhuǎn)化成橢圓曲線上一點;
(2)求S=[h]C1,判斷若S為無窮遠點,則報錯;
(3)求(x2,y2)=[dB]C1;
(4)求t=KDF(x2||y2,klen),若t 全為0,則返回(1);
(5)提取C2,求M'=C2⊕t;
(6)求u=Hash(x2||M'||y2),若u=C3進入下一步,否則報錯;
輸出明文M'。
對消息M計算其哈希值過程如下:
其中V(0)表示長度為256bit 的初始值IV。CF表示壓縮函數(shù)。B(i)表示消息M填充后的分組。V(n)表示最后計算出的哈希值。
本文提出的基于改進的AES 與SM2 混合加密算法整體流程如圖3所示。
圖3 算法整體流程
使用改進的AES算法對隱私數(shù)據(jù)進行加密,對于加解密過程中使用的對稱密鑰,使用國密SM2算法進行加密保護。此外,利用國密SM3哈希算法對需要傳輸數(shù)據(jù)進行哈希值的計算,在接收端對數(shù)據(jù)進行完整性驗證,驗證通過則接受此消息,否則拒絕接收。本文的混合加密算法步驟如下:
1)消息接收端產(chǎn)生非對稱密鑰對,將公鑰publicKey發(fā)送給消息發(fā)送端;
2)發(fā)送端產(chǎn)生對稱密鑰Key,對明文M 進行哈希值計算得Z,用Key 對拼合的消息M//Z 加密,用公鑰publicKey 對密鑰Key 加密,將密文數(shù)據(jù)包發(fā)送給接收端;
3)接收端用私鑰praviteKey 解密密鑰密文得Key,使用密鑰解密得M'//Z,對M'進行哈希值計算得Z'。
4)判斷Z是否等于Z',若Z=Z',則輸出明文M',否則拒接接受此消息。
實現(xiàn)環(huán)境為Windows7 系統(tǒng),處理器CPU 為Interl Core i5-2450m,2.50HG,運行內(nèi)存6G,編程語言為Java語言,工具為ecplice。
圖4 是數(shù)據(jù)集,利用程序生成的模擬身份隱私信息其中包含姓名、電話、地址和身份證號等。
圖4 隱私數(shù)據(jù)
圖5 是對文本隱私數(shù)據(jù)進行對稱加密后輸出的密文,由圖可知加密成功。
圖5 密文
圖6是導(dǎo)出的雙對稱密鑰明文。
圖6 雙對稱密鑰
圖7 是經(jīng)過SM2 加密的對稱密鑰密文,由圖可知加密成功。
圖7 密鑰密文
測試運行環(huán)境為Windows7 系統(tǒng),處理器CPU為Interl Core i5-2450m,2.50HG,編程語言為JAVA語言,工具為ecplice。
本文混合加密算法使用兩個128bit 長度的對稱密鑰對60MB 以內(nèi)的文本隱私數(shù)據(jù)進行加解密時間測試,另外對SM2+AES 和RSA+AES 兩種混合加密算法也進行了測試,測試結(jié)果如表1所示。
表1 加解密耗時對比
圖8和圖9分別是三種混合加密算法加密和解密耗時的折線對比圖。
圖8 加密耗時對比
圖9 解密耗時對比
由圖可知三種混合加密算法中,加密時,RSA+AES算法加密速度相對快一點,考慮到RSA密鑰對生成時間慢,所以優(yōu)勢不明顯。SM2+AES 和SM2+改進的AES算法加密速度幾乎相等,且SM2密鑰對生成時間快。解密時,SM2+改進的AES 算法的解密速度最快,其次是RSA+AES 算法,最后是SM2+AES 算法,因此本文提出的混合加密算法性能較好。
此外改進的AES算法,使用的兩個不相關(guān)的對稱密鑰,攻擊者需要平均進行2255次嘗試才能破解密鑰,以當(dāng)前的計算能力想破解密鑰起碼需要數(shù)億年的時間。且使用SM2 非對稱密碼算法對AES 算法的密鑰進行加密傳輸,能夠很好地保證對稱密鑰的分配安全。
綜上,本文的混合加密算法在提高密鑰安全性的同時提升了解密速度。
本文提出了一個基于改進的AES 算法和SM2算法的混合加密算法,用以保障數(shù)據(jù)的傳輸安全。通過實驗分析對比了三種混合加密算法的加解密性能,得出本文提出的混合加密算法性能更好,安全性更高。但在網(wǎng)絡(luò)中的隱私數(shù)據(jù)安全所要面對的挑戰(zhàn)遠不止于此,形勢依然很嚴(yán)峻。而該混合加密算法從研究到應(yīng)用還有很長的一段路要走,因此今后會繼續(xù)深入的研究,確保改進的混合加密算法能更好地保證隱私數(shù)據(jù)的傳輸安全。