方 軼,叢林虎,鄧建球
(海軍航空大學,山東 煙臺 264001)
在信息化作戰(zhàn)以及大數(shù)據(jù)、機器學習等信息技術的背景下,可以通過武器裝備的數(shù)據(jù)進行分析、處理,在武器裝備的全壽命周期中會產(chǎn)生大量的數(shù)據(jù),經(jīng)過加工、整理和分析后,這些數(shù)據(jù)可以用來判斷武器裝備的狀態(tài)、性能,反映武器裝備的履歷,通過多組同一類裝備的數(shù)據(jù)可以對該型武器裝備的性能進行較為全面的評估。在部隊信息化建設中,數(shù)據(jù)加密是一個至關重要的建設環(huán)節(jié)。如何保證數(shù)據(jù)在存儲、傳輸時的安全性與可靠性是信息化建設中的一項基本內容,也是保證信息化戰(zhàn)爭中數(shù)據(jù)安全的重要方法。
密碼學與數(shù)據(jù)加密技術發(fā)展至今,已經(jīng)發(fā)展出分組密碼[1]、Hash函數(shù)[2]、公鑰密碼[3]、數(shù)字簽名[4]、PKI[5]等數(shù)據(jù)加密技術,以及高級加密標準AES[6]、SHA-256算法[7]、RSA密碼體制[8]、ElGamal算法[9]等安全性高且實用的加密技術,能夠較好地保證數(shù)據(jù)存儲與傳輸?shù)陌踩浴?shù)據(jù)的完整性與可驗證性。然而各種加密算法有著自身的特點,而且算法的安全性與算法的復雜度是互相制約的,因此對于應用的實際情況,可以選擇安全性優(yōu)先或效率優(yōu)先,由此便產(chǎn)生了混合加密技術。
混合加密技術是結合了多種加密體制、加密算法的一種新型加密技術[10-11],可以根據(jù)需要選擇主要的加密體制,并在安全性或復雜性中采用另一種加密體制或加密算法進行改進。
針對信息化建設中對信息安全提出的較高標準與要求,以及部隊武器裝備數(shù)據(jù)的涉密性質,提出了一種基于國密SM2與SM4算法的混合加密方案,相比單一加密方式提高了數(shù)據(jù)加密的安全性。
SM2橢圓曲線公鑰密碼算法是我國自主研發(fā)的具有自主知識產(chǎn)權的公鑰密碼算法標準,主要包括3部分:數(shù)字簽名算法、密鑰交換協(xié)議和公鑰加密算法[12]。已有學者對SM2算法的安全性進行了分析,證明了其安全性和復雜度相當于或略優(yōu)于國際上同類的橢圓曲線公鑰密碼算法[13]。
1) 系統(tǒng)參數(shù)
SM2算法的系統(tǒng)參數(shù)是有限域上的橢圓曲線,包括:有限域Fq的規(guī)模q;定義橢圓曲線E(Fq)方程的兩個元素a,b∈Fq;E(Fq)上的基點G=(xG,yG)(G≠0),其中xG和yG是Fq上的2個元素;G的階n及其他可選項。
2) 密鑰派生函數(shù)
密鑰派生函數(shù)設為KDF(Z,klen),其中Z為需要加密的數(shù)據(jù),klen表示需要獲得密鑰的長度。
第一步ct=0x00000001
Hai=Hv(Z‖ct)
ct++
end for
3) 加密與解密算法
SM2加密過程如圖1所示,解密過程如圖2所示。
圖1 SM2加密算法流程圖Fig.1 SM2 encryption algorithm flow
圖2 SM2解密算法流程圖Fig.2 SM2 decryption algorithm flow
分組密碼是現(xiàn)代密碼學的一個重要分支,其設計理念來源于Shannon在1949年發(fā)表的論文[14]。2000年美國國家標準技術研究院將Rijindael算法推選為高級加密標準,歐洲也于2003年將Camellia算法、MISTY算法、SHACAL-2算法以及AES共同作為歐洲分組密碼標準。
SM4分組密碼算法是由我國自主研發(fā)的分組密碼,于2016年成為國家標準[15]。已有研究證明,SM4算法相比于AES、MISTY等算法具有更高的安全冗余度[16]。SM4算法由加解密算法和密鑰擴展算法組成,均采用32輪非線性迭代結構。
1) 密鑰及密鑰參量
SM4算法的密鑰長度為128 b,表示為MK=(MK0,MK1,MK2,MK3),其中每一組MKi的長度為32 b。
輪密鑰用于加解密過程,表示為(rk0,rk1,…,rk31),其中每一組rki的長度為32 b。輪密鑰由加密密鑰根據(jù)密鑰擴展算法組成。
系統(tǒng)參數(shù)FK=(FK0,FK1,FK2,FK3)和固定參數(shù)CK=(CK0,CK1,CK2,CK3)用于密鑰擴展算法,其中每一組FKi和CKi的長度都為32 b。
2) 加解密算法
3) 密鑰擴展算法
圖3 輪函數(shù)示意圖Fig.3 Schematic diagram of wheel function
圖4 SM4加密算法流程圖Fig.4 SM4 decryption algorithm flow
輪密鑰根據(jù)以下規(guī)則生成:
rki=Ki+4=Ki⊕T′(Ki+1⊕Ki+2⊕Ki+3⊕CKi)
(1)
式(1)中,K0=MK0⊕FK0,K1=MK1⊕FK1,K2=MK2⊕FK2,K3=MK3⊕FK3。
系統(tǒng)參數(shù)FK和固定參數(shù)CK的取值在具體標準中已經(jīng)給出了推薦值或規(guī)定值。
對武器裝備數(shù)據(jù)而言,安全性是首要的考慮因素。若發(fā)生武器裝備在戰(zhàn)場上由于未能正常工作而被敵軍回收,為防止敵軍對我軍武器裝備數(shù)據(jù)進行處理以及分析,對數(shù)據(jù)進行高安全強度格外重要。在以安全性為首的原則下,設計混合加密方案時,會較少地考慮效率因素。
在加密技術中,一般密鑰長度更長、加密重數(shù)越多,安全性就越高,同時加密方案的時間復雜度也會大大增加。因此在設計混合加密方案時,雖然主要原則是提高安全性,但同時也需要兼顧方案的時間復雜度。
在進行加密時,通常都會涉及到密鑰傳輸?shù)倪^程,而在傳輸時一般認為環(huán)境是不安全的。因此盡可能地減少密鑰傳輸,并且采用密鑰數(shù)據(jù)完整性驗證機制,能夠進一步提高加密方案的安全性。
最理想混合加密方案的時間復雜度應該與這兩種加密算法各自的時間復雜度相差不多,應在一個合理的區(qū)間,同時安全性必須比單一加密算法高。
SM2算法是公鑰加密算法,加密時使用公開的公鑰加密,解密時解密者使用計算得到的私鑰解密,還原得到密文;SM4算法是分組加密算法,其加解密速度比SM2算法快,但其加解密使用的密鑰是同一個,而且解密過程僅僅是加密過程的逆序,但SM4算法的好處是不需要進行密鑰傳輸。
根據(jù)SM2算法與SM4算法各自的特點,SM2算法更安全,因此對數(shù)據(jù)的加密采用SM2算法,同時SM2算法在密鑰傳輸過程中存在著密鑰被截獲的可能性,因此在密鑰傳輸時,對密鑰使用SM4算法進行加密。假設數(shù)據(jù)發(fā)送方為A,接收方為B,進行加密的消息是M,具體過程如下:
方案做出如下假設:發(fā)送方A與接收方B之間的數(shù)據(jù)傳輸是不安全的,A和B在進行加密前已經(jīng)約定好采用何種Hash函數(shù)(建議采用國密SM3密碼雜湊算法),已經(jīng)約定好SM4算法的加密密鑰MK。
1) 首先接收方B使用SM2算法生成公鑰和私鑰,雙方再使用SM4算法根據(jù)MK生成輪密鑰。
2) 接收方B使用約定好的一種Hash函數(shù)計算公鑰和輪密鑰的Hash值,然后將公鑰、輪密鑰和各自計算出的Hash值一同發(fā)送給發(fā)送方A。
3) 發(fā)送方A接收到數(shù)據(jù)后,使用約定好的Hash函數(shù)計算公鑰和輪密鑰的Hash值,然后與接收到的Hash值進行比對,若結果一致,說明公鑰正確,可以進行下一步操作,否則結束此次加密。
4) 發(fā)送方A驗證公鑰成功之后,首先使用SM4算法對消息進行加密,然后對SM4算法得到的密文使用SM2算法進行加密,最后進行Hash值計算,將Hash值和密文一起發(fā)送給B。
5) 接收方B接收到數(shù)據(jù)后,先對密文Hash值進行驗證,驗證成功后,使用計算得到的私鑰進行第一層解密,然后使用輪密鑰進行第二層解密,得到明文。
在本文提出的混合加密方案中,主要采用了以下方法提高加密方案的安全性。
采用Hash函數(shù)驗證公鑰和輪密鑰的數(shù)據(jù)完整性,保證如果解密失敗時能夠排除密鑰錯誤的問題;且方案首先進行密鑰驗證,如果密鑰錯誤直接中止加密,提高了密鑰傳輸?shù)陌踩?,減少了無用的操作。
使用SM4算法和SM2算法雙重加密,先用SM4算法對明文消息進行加密,再使用SM2算法對加密消息進行二次加密。因為SM2算法生成的密文長度比SM4算法生成的密文長度要長,因此最終傳輸?shù)臄?shù)據(jù)是由SM2算法得到的。
采用Hash函數(shù)驗證發(fā)送密文數(shù)據(jù)的完整性,如果密文在傳輸過程中被篡改,其Hash值會發(fā)生改變。因此接收方接收到數(shù)據(jù)后先進行Hash值驗證,如果相同再繼續(xù)進行解密,減少了密鑰使用的次數(shù),提高了安全性,也減少了不必要的無用操作。
實驗的加密對象是一串128 b的無規(guī)則數(shù)據(jù)。實驗內容共有兩項:一項是對消息進行加密;另一項是對方案的擴散性進行測試,擴散性即明文改變一位時,密文改變位數(shù)占總密文位數(shù)的占比。
首先對同一明文進行5次實驗,采用本文設計的混合加密方案的實驗過程中各個階段采集的數(shù)據(jù)如表1所示。
表1 實驗過程數(shù)據(jù)Tab.1 Data of experimental process
最終將SM2算法、SM4算法和本文提出的方案進行5次測試的結果匯總,如表2所示。
表2 加密耗時測試結果Tab.2 Encryption time consuming test results
然后隨機改變1位明文,共進行5次實驗,每次改變的位置都不同,采用本文方案在第一次試驗過程中采集的數(shù)據(jù)如表3所示。
表3 改變一位明文實驗過程數(shù)據(jù)Tab.3 The experimental process data when changing a plaintext
最后將SM2算法、SM4算法和本文提出的方案進行的5次實驗結果如表4所示。
表4 擴散性測試結果Tab.4 Diffusivity test results
3.2.1安全性實驗結果對比與分析
安全性主要從本文方案與單一加密方案以及本文方案與不同混合加密方案兩方面進行比較,各種算法或方案的安全性相關數(shù)據(jù)對比如表5所示。
表5 安全性相關數(shù)據(jù)對比Tab.5 Data comparisons related to security
在混合加密方案算法選擇方面,文獻[10]和文獻[11]都提出了基于分組密碼與橢圓曲線公鑰密碼的混合加密方案。文獻[10]提出的方案是SM4算法與ECC算法的混合加密方案,ECC與SM2算法都是一種基于橢圓曲線的公鑰密碼算法,而ECC算法是美國的公鑰加密標準,因此從國家安全角度來講,使用SM2算法更為安全。文獻[11]提出的方案與本方案一樣,都是基于SM4與SM2算法的混合加密方案。由于本方案更注重安全性,所以在方案中使用多次Hash函數(shù),用來提高加密時的擴散性以及密鑰傳輸時的安全性,因此本文方案的安全性于其他兩種方案相比更高。
在加密效果方面,最后生成的密文長度比文獻[10]的方案減少了27%,比文獻[11]方案減少了6%,這兩種方案都是采用了對SM4密鑰進行加密的方法,本文未對SM4密鑰進行加密,而是采用了Hash值計算驗證數(shù)據(jù)完整性的方法來保證密鑰的正確性,一旦驗證完整性失敗,表明密鑰被篡改,同樣能達到保證加密過程正確進行,說明本文方案在縮短了密文長度的同時能達到以上兩種方案的加密安全性能。同時由于本文方案采用了Hash函數(shù)驗證數(shù)據(jù)完整性機制,因此發(fā)生驗證錯誤時,可以通過Hash值比對,將發(fā)生Hash驗證錯誤的部分進行定位,進行進一步數(shù)據(jù)安全的相關工作。
3.2.2時間復雜度實驗結果對比與分析
根據(jù)表2的結果可知,相比于一次加密,混合加密方案時間復雜度較高,由于加密方案的安全性和復雜度是相互制約的關系,提高加密方案的安全性勢必會增加時間復雜度,使加密過程耗時更長。而對于武器裝備數(shù)據(jù)這類機密性較高的數(shù)據(jù),安全性需求大于時間復雜度的需求,因此本文方案更適合高機密性數(shù)據(jù)的加密。
在不同混合加密方案時間復雜度橫向對比上,本文方案耗時最多,然而相比耗時最短的文獻[10]方案,本方案所用的平均時長324.4 ms比文獻[10]方案耗時增加19%。耗時增加的原因是本文方案進行了多次的Hash運算。通過安全性分析證明,使用Hash運算能夠在保證安全性的同時減少生成密文的長度,可以提高傳輸速度,而且還能實現(xiàn)文獻[10]和文獻[11]中未實現(xiàn)的加密錯誤源定位功能。同時,大部分數(shù)據(jù)可以通過預加密的方式,在武器裝備使用前進行大部分的數(shù)據(jù)加密,從而減少時間復雜度對武器裝備使用過程中的影響。
通過上述分析,可以證明本文提出的方案雖然在時間復雜度上不具優(yōu)勢,但對于機密數(shù)據(jù)而言,安全性是首要考慮因素,高時間復雜度問題可以通過預處理以及下一步開展的加密算法效率優(yōu)化等方面來解決。
本文提出了一種基于國密SM2與SM4算法的武器裝備數(shù)據(jù)混合加密方案,與傳統(tǒng)單一加密方式對比,混合加密方案具有更高的安全性。通過實驗以及分析證明,本文提出的混合加密方案在安全性和時間復雜度上均取得了不錯的效果,尤其是本文方案的擴散性最高達到了87.2%,平均擴散性也達到82.3%。本文方案的時間復雜度最高,可以通過數(shù)據(jù)預處理減小時間復雜度對加密方案的影響。下一步將從算法的優(yōu)化改進方面進行研究,并采用FPGA方式實現(xiàn),進一步降低方案的時間復雜度,使方案更適用于武器裝備的嵌入式芯片或系統(tǒng)中。