馬擎宇 張 東
(92941部隊 葫蘆島 125000)
?
基于AES和ECC的遙測數(shù)據(jù)加密技術(shù)研究與實現(xiàn)*
馬擎宇 張 東
(92941部隊 葫蘆島 125000)
在實際工程中,遙測數(shù)據(jù)經(jīng)常需要通過無線電波或者有線網(wǎng)絡進行遠距離傳輸,具有數(shù)據(jù)傳輸量大、保密性要求高等特點。如何確保安全地傳輸遙測數(shù)據(jù)已經(jīng)成為日益重要的問題。為了解決遙測數(shù)據(jù)傳輸?shù)陌踩珕栴},論文采用了AES和ECC相結(jié)合的混合加密算法,使用AES對要傳輸?shù)倪b測數(shù)據(jù)進行加密,同時使用ECC加密AES密鑰,這樣既能快速地對遙測數(shù)據(jù)進行加密,又能很好地解決密鑰分配的問題。結(jié)果分析表明,該混合加密算法充分利用了AES和ECC各自的優(yōu)點,具有很強的抗攻擊能力,提高了遙測數(shù)據(jù)傳輸過程中的安全性和高效性。
遙測數(shù)據(jù); AES; ECC
Class Number V217
在導彈飛行試驗中,彈上傳感器、變換器對反映導彈各分系統(tǒng)工作情況以及工作環(huán)境的多個參數(shù)進行實時監(jiān)測,并通過彈上遙測系統(tǒng)將各種電量、非電量信號都轉(zhuǎn)換成按規(guī)定范圍內(nèi)變化的電信號,經(jīng)過采集、編碼、調(diào)制后,通過無線電波發(fā)往地面各個遙測測量站[1]。每個測量站將接收到的遙測數(shù)據(jù)通過內(nèi)部網(wǎng)絡實時傳輸?shù)街缚刂行倪M行相應的遙測參數(shù)挑點處理,或者在試驗結(jié)束后傳輸?shù)綌?shù)據(jù)處理中心進行事后數(shù)據(jù)處理。
在這一過程中,攻擊方可以通過截獲導彈發(fā)射的遙測無線電波,或者切入我方內(nèi)部網(wǎng)絡的方式,進行如下的攻擊:
1) 截取傳輸中的遙測數(shù)據(jù),通過截取的遙測數(shù)據(jù)分析出導彈的某些性能,進而掌握導彈的一些重要數(shù)據(jù);
2) 冒充測量站向指控中心或數(shù)據(jù)處理中心發(fā)送偽造或者篡改的遙測數(shù)據(jù),干擾導彈飛行試驗的正常進行。
為了保證試驗的安全,很有必要在遙測數(shù)據(jù)傳輸過程中對數(shù)據(jù)進行加密處理,防止遙測數(shù)據(jù)被竊取、偽造或篡改。
在常用的對稱加密算法中,AES具有速度快、強度高、安全性好、便于實現(xiàn)等優(yōu)點,尤其適合加密數(shù)據(jù)量比較大的情形,但密鑰分配與管理比較困難。相比較而言,公鑰加密算法(如ECC)具有密鑰分發(fā)與管理簡單、加解密速度慢等特點,一般用于加密少量數(shù)據(jù)。所以本文采用了AES和ECC的混合密碼體制:使用AES加密遙測數(shù)據(jù),以保證數(shù)據(jù)的安全性;使用ECC加密AES密鑰,進行密鑰管理,可以避免通信雙方事先交換密鑰。通過這種方式可以有效地提高遙測數(shù)據(jù)傳輸?shù)陌踩院透咝浴?/p>
AES使用的是一種名為Rijndael的分組迭代加密算法。根據(jù)AES的要求,分組長度指定為128比特,密鑰長度可以為128、192、256比特,相應的迭代輪數(shù)分別為10、12和14。在AES中,數(shù)據(jù)塊要經(jīng)過多次數(shù)據(jù)轉(zhuǎn)換操作,每一次轉(zhuǎn)換操作產(chǎn)生一個中間結(jié)果,這個中間結(jié)果叫做狀態(tài)(state)。狀態(tài)可表示為二維字節(jié)數(shù)組即狀態(tài)矩陣,矩陣的大小是4×4。同樣,密鑰也用字節(jié)的矩陣來表示,矩陣的行數(shù)定為4,列數(shù)等于密鑰長度除以32。
AES的每一輪由四個階段組成,分別是:
1) 字節(jié)替換:用一個S盒完成分組的按字節(jié)替換。
2) 行移位:一個簡單的行移位置換。
3) 列混淆:利用域GF(28)上的算術(shù)特性的一個代替。
4) 輪密鑰加:輪密鑰與當前的中間狀態(tài)進行按位異或運算。
圖1是以密鑰長度為128比特為例的AES加解密過程,對于密鑰長度為192和256比特的AES與此相類似,只是迭代輪數(shù)分別變?yōu)?2輪和14輪[2]。
橢圓曲線密碼算法(ECC)最早是由Neal Koblitz和Victor Miller在1985年分別獨立提出的,它是基于橢圓曲線群上的離散對數(shù)難題。ECC算法具有很高的加密強度,密鑰長度為160位的橢圓曲線密碼系統(tǒng)可以具有與密鑰長度為1024位的ElGamal或RSA密碼系統(tǒng)相當?shù)陌踩?。它是目前已知的所有公鑰密碼體制中,能夠提供最高比特強度的一種公鑰密碼體制。
圖1 AES加解密過程
3.1 有限域上的橢圓曲線的定義
設p是大于3的素數(shù),有限域GF(p)上的橢圓曲線Ep(a,b)是指由方程y2=x3+ax+bmodp在GF(p)上的所有解及無窮點O構(gòu)成的集合,其中4a3+27b2≠0modp。
橢圓曲線Ep(a,b)上的加法運算[3]:設P=(x1,y1),Q=(x2,y2),若x2=x1,y2=-y1,令P+Q=0(此時記-P=Q),否則P+Q=(x3,y3),其中
對于上述定義的加法,(Ep(a,b),+)構(gòu)成Abel群。設m是正整數(shù),P是橢圓曲線Ep(a,b)上一點,定義乘法mP=P+P+…+P(m個P相加),-mP=-(mP)。
3.2 橢圓曲線群上的離散對數(shù)難題
ECC是基于橢圓曲線離散對數(shù)難題(ECDLP)的密碼體制。對于定義在有限域GF(P)上的橢圓曲線,P是一個階為素數(shù)n的點,令Q=kP,其中Q,P屬于E(a,b),0 3.3 基于ECDLP的加解密 基于ECDLP的加解密方法有多種,本文采用了一種較簡單的基于ECDLP的加解密方法。首先選擇一橢圓曲線,其次,選擇元素G,使得G的階n是一個大素數(shù),G的階是指滿足nG=0的最小n值。用戶A和B之間的加解密過程如下[4]: 1) 密鑰計算:用戶A秘密選擇整數(shù)nA,計算KUA=nAG,然后公開(p,a,b,G,KUA),KUA為公鑰,nA為私鑰。 2) 加密:用戶B要把消息M發(fā)給A,先把消息M變換成為中的一個點Pm,然后選擇隨機數(shù)r,計算密文Cm={rG,Pm+rKUA},如果r使得rG或者rKUA為O,則要重新選擇r。 3) 解密:用戶A對密文Cm解密,(Pm+rKUA)-nA(rG)=Pm+rnAG-nArG=Pm。 AES和ECC相結(jié)合的混合密碼體制,具備更安全、更高效、更靈活應用的優(yōu)點。具體的實現(xiàn)流程如下[5~7]: 遙測數(shù)據(jù)發(fā)送方A(如圖2所示): 1) 生成AES密鑰KA; 2) 用AES算法對遙測數(shù)據(jù)TD進行加密,得到密文C1; 3) 獲取數(shù)據(jù)接收方B的ECC公鑰Kpub; 4) 使用Kpub對KA進行加密,得到AES密鑰塊C2; 5) 將密文C1、AES密鑰塊C2一同傳送給遙測數(shù)據(jù)接收方B。 圖2 遙測數(shù)據(jù)發(fā)送過程 遙測數(shù)據(jù)接收方B(如圖3所示): 1) 生成ECC公鑰Kpub和私鑰Kpri; 2) 將ECC公鑰Kpub發(fā)送給數(shù)據(jù)發(fā)送方A; 3) 接收數(shù)據(jù)發(fā)送方A發(fā)送的數(shù)據(jù)C1+C2; 4) 用ECC私鑰Kpri解密AES密鑰塊C2,得到KA; 5) 用KA對密文C1進行解密,得到相應的明文遙測數(shù)據(jù)TD; 6) 進行后續(xù)的遙測數(shù)據(jù)處理工作。 圖3 遙測數(shù)據(jù)接收過程 AES算法每次以16字節(jié)(128比特)數(shù)據(jù)塊為對象,通過將數(shù)據(jù)與密鑰進行異或運算、使用非線性良好的S盒進行字節(jié)替換,以及行移位、列混淆等變換操作,最大限度地模糊輸出對輸入的依賴,并通過大量輪數(shù)來增加加密數(shù)據(jù)的復雜性,從而有效地抵抗了差分密碼分析和線性密碼分析。AES所采用的Rijndael算法中最短的密鑰長度是128比特,如果用窮舉法進行強力攻擊,則需要處理2128種可能密鑰,計算量是非常大的,因此使用目前技術(shù)的窮舉法對AES是無效的[8]。 ECC比RSA、DSA等其他公鑰密碼體制吸引人的最主要原因是解決其數(shù)學問題(即ECDLP)的已知最好算法也要用完全指數(shù)時間。RSA和DSA所基于的數(shù)學問題(即因數(shù)分解IFP和離散對數(shù)DLP問題)都有亞指數(shù)時間算法。這意味著隨著長度的增加,求解ECDLP的難度比求解IFP和DLP的難度增加得快得多。因此ECC僅需要更小的密鑰長度就可以提供跟RSA和DSA相當?shù)陌踩訹9~10]。目前,ECC已經(jīng)成為最流行的公鑰密碼算法之一[11]。 Java安全技術(shù)包含了大量的API、工具,以及各種廣泛使用的安全算法、機制和協(xié)議的實現(xiàn)。隨著加解密算法的發(fā)展,Java的加解密技術(shù)也在不斷演進,不斷提高著用戶數(shù)據(jù)的安全性。Java在java.security和javax.crypto兩個包中包含了Java加密和解密的核心部分。Java API支持多種加解密算法。如java.security包中的MessageDigest類可以構(gòu)建MD5、SHA等加密算法;javax.crypto包中的Cipher類可以構(gòu)建多種加密算法,如DES、AES對稱加密算法,以及RSA、DSA等非對稱加密算法。目前Java雖然提供了多種加密算法支持,但并不完善,許多加密強度較高的算法,Java未能提供??梢栽诶^續(xù)沿用Java API前提下,通過配置開源組件包Bouncy Castle,加入對應的提供者Provider,從而獲得相應的算法支持[12]。 6.1 AES算法實現(xiàn)簡述 1) 實例化密鑰生成器并初始化(密鑰長度為256比特):KeyGenerator kg=KeyGenerator .getInstance("AES"),kg.init(256); 2) 生成密鑰:SecretKey secretKey=kg.generateKey(); 3) 實例化Cipher類:Cipher cipher=Cipher. getInstance ("AES/CBC/PKCS5Padding"),其中AES表示AES加密,CBC表示工作模式為密碼分組鏈接模式,PKCS5Padding是填充方式; 4) 初始Cipher類,并設置為加密模式:cipher.init(Cipher.ENCRYPT_MODE,secretKey); 5) 執(zhí)行加密操作:cipher.doFinal(data),其中data表示要被加密的數(shù)據(jù)。 6.2 ECC算法實現(xiàn)簡述 1) 初始化密鑰:ECPublicKey publicKey = new ECPublicKeyImpl(ecPoint, ecParameterSpec),ECPrivateKey privateKey = new ECPrivateKeyImpl(bigInteger, ecParameterSpec),其中publicKey為ECC的公鑰,privateKey為ECC的私鑰; 2) 實例化Cipher類,并進行初始化:Cipher cipher = new NullCipher(),cipher.init(Cipher.ENCRYPT_MODE, pubKey, ecPublicKeySpec.getParams()); 3) 執(zhí)行加密操作:cipher.doFinal(data),其中data表示要被加密的數(shù)據(jù)。 本文針對遙測數(shù)據(jù)傳輸?shù)默F(xiàn)狀,提出了AES和ECC混合加密算法,將兩種加密技術(shù)有效地結(jié)合,充分發(fā)揮了AES和ECC各自的優(yōu)點。對AES和ECC各自的安全性進行了分析。最后使用Java實現(xiàn)了該混合加密算法,解決了遙測數(shù)據(jù)傳輸?shù)陌踩珕栴},從而保障了試驗信息的安全。 [1] 陳以恩.遙測數(shù)據(jù)處理[M].北京:國防工業(yè)出版社,2002:1-13. [2] STALLINGS W.密碼編碼學與網(wǎng)絡安全—原理與實踐[M].王張宜,楊敏,杜瑞穎,等譯.第五版.北京:電子工業(yè)出版社,2012:105-127. [3] 鄭東,李翔學,黃征.密碼學—密碼算法與協(xié)議[M].北京:電子工業(yè)出版社,2009:73-105. [4] 王昭,袁春.信息安全原理與應用[M].北京:電子工業(yè)出版社,2010:91-113. [5] 張丞.基于AES和ECC的混合密碼體制研究及應用[D].成都:成都理工大學,2007:32-33. [6] 張勇.AES與ECC相結(jié)合的混合密碼體制的研究及應用[D].阜新:遼寧工程技術(shù)大學,2008:31-38. [7] 王常林,吳斌.基于AES算法和改進ECC算法的混合加密方案[J].科學技術(shù)與工程,2009,9(18):5379-5382. [8] 王紅珍,張根耀,李竹林.AES算法及安全性研究[J].信息技術(shù),2011(9):20-26. [9] 王張宜,楊寒濤,張煥國.橢圓曲線密碼的安全性分析[J].計算機工程,2002,28(5):161-163. [10] 李殿偉,王正義,趙俊閣.橢圓曲線密碼體制安全性分析[J].計算機技術(shù)與發(fā)展,2012,22(4):227-230. [11] 王紅珍,李竹林.ECC算法在軟件保護中的應用及安全性分析[J].計算機技術(shù)與發(fā)展,2012,22(8):155-158. [12] 梁棟.Java加密與解密的藝術(shù)[M].第二版.北京:機械工業(yè)出版社,2014:238-242. Research and Realization of Telemetry Data Encryption Based on AES and ECC MA Qingyu ZHANG Dong (No. 92941 Troops of PLA, Huludao 125000) In the real engineering, the telemetry data usually is transmitted by radio wave or wired network over great distances, which has the feature of large amount of data transmission and high confidentiality requirements. How to transmit the telemetry data securely has become an important problem. To solve the secure transmission problem of telemetry data, a hybrid encryption algorithm of AES and ECC is adopted, which encrypts the telemetry data by AES and encrypts the key of AES by ECC. So the hybrid encryption algorithm can encrypt the telemetry data quickly and solve the problem of key distribution. The results show that the algorithm utilizes the respective advantages of AES and ECC, and has a strong anti-attack capability. So it greatly improves the security and efficiency of telemetry data transmission. telemetry data, AES, ECC 2014年10月20日, 2014年11月30日 馬擎宇,男,碩士研究生,工程師,研究方向:遙測數(shù)據(jù)處理及相關(guān)軟件開發(fā)。張東,男,碩士研究生,高級工程師,研究方向:遙測數(shù)據(jù)處理總體。 V217 10.3969/j.issn1672-9730.2015.04.0214 AES和ECC混合密碼體制
5 安全性分析
6 算法的Java實現(xiàn)
7 結(jié)語