王 亮,王偉欣,張 林
(江西理工大學信息工程學院,江西贛州 341000)
伴隨社會科技的進步,傳感器在人們的日常生活中越來越普遍,能耗問題和安全問題成為無線傳感器關注的焦點,而耗電量與密鑰的實現(xiàn)方法息息相關。私鑰加密體系因為其加密的效率高、速度快被廣泛地關注,是如今最常用的數(shù)據(jù)加密標準[1]。但是,它有不適合用于無線傳感器網(wǎng)絡的缺點。因為在傳感器網(wǎng)絡上的節(jié)點并不是限制為一對,而是大量的節(jié)點。例如:在有n個節(jié)點的網(wǎng)絡,則需要產(chǎn)生的私有密鑰個數(shù)為n(n-1)/2。如果n變得很大時,密鑰的管理就很復雜,而且這些私有密鑰都是在傳感器網(wǎng)絡上生成,因此,生成密鑰并找到安全通道分發(fā)密鑰就成了傳感器網(wǎng)絡的負擔。
公鑰加密體系使用2個密鑰,每個節(jié)點在網(wǎng)絡上發(fā)布了一個公共密鑰,任何節(jié)點都可以用公共密鑰來給它們發(fā)送消息,同時保持私有密鑰進行解密。n個節(jié)點通信時,只需要n個私有密鑰和n個公有密鑰。時間復雜度從O(n2)減少為O(n)。然而,公鑰密碼系統(tǒng)也有其缺點,它要比私鑰加密慢幾個數(shù)量級別。比如:RSA需要1024位的密鑰,橢圓曲線加密(ECC)算法要達到同樣的安全級別只需要160位[2]。ECC算法因為存儲空間小、處理速度快、計算量小等優(yōu)點,非常適用無線傳感器網(wǎng)絡的加密解密。
在密碼學中,RSA(Rivest-Shamir-Adleman)密碼體制是一種公鑰加密算法。這是目前應用最廣的適合簽名和加密的算法,普遍認為是最優(yōu)秀的公鑰方案之一[3],主要用于不安全的通信介質、電子商務協(xié)議和服務供應商的身份認證。RSA算法包括3個步驟:密鑰生成、加密和解密。RSA使用大小可變的加密塊和一個可變大小的密鑰,密鑰對來自一個大的數(shù)n(即根據(jù)特殊規(guī)則選擇的2個素數(shù)的乘積),根據(jù)會話各方和施加的約束所需要的安全目標實現(xiàn)安全協(xié)議。
ECC密鑰對的生成是根據(jù)橢圓曲線的參數(shù)組T=(m,p,q,G,n,h)。橢圓曲線加密算法以曲線y2=x3+ax+b為基礎,其中,a b∈Fq且4a3+27b2≠0。每改變參數(shù)p,q就能找到不同的橢圓曲線。密鑰對產(chǎn)生后,還需要判斷密鑰對的合法性。在公鑰合法性的判斷中,需要判斷公有密鑰Q是否符合參數(shù)組T=(m,p,q,G,n,h)確定的橢圓曲線[4~6]。如果條件不滿足就需要重新生成密鑰。
ECC加密中最關鍵、最耗時的運算就是標量乘,其逆運算為ECC密碼體制的離散對數(shù)難問題[7],主要的運算包括ECC加法運算和ECC倍乘運算。
1)加點
令P=(x1,y1)∈E(K),Q=(x2,y2)∈E(K),P≠ ±Q,則P+Q=(x3,y3)。其中
圖1 ECC加點運算Fig 1 ECC add operation
2)倍點
當P=Q時,令P=(x1,y1)∈E(K),P≠ -P,則 2P=(x3,y3)。P點的切線和曲線交于R',此點在x坐標軸的對稱點即為點R。其中
2.1.1 生成密鑰
1)選取2個足夠大的素數(shù)p和q,且p不等于q,同時計算n=pq;
2)計算e'=(p-1)(q-1);
3)選擇e與(p-1)(q-1)互質,e=gcd(e',e)=1;
圖2 ECC倍點運算Fig 2 ECC point multiplication
4)公式計算d:d=e-1mode'。
2.1.2 加密
加密公式:c=Me modn,計算c并不復雜,節(jié)點A算出c后就可以將它傳遞給節(jié)點B。
2.1.3 解密
節(jié)點B獲得服務器的消息后,利用自己的密鑰d來解碼。解密公式:M=Cd modn。
RSA算法的缺點主要有2點:
1)產(chǎn)生密鑰耗時太久,受到素數(shù)產(chǎn)生技術的限制,因而難以做到一次一密;
2)為保證安全性,n至少也要600 bits以上,使運算代價提高,尤其是速度減慢,較對稱密碼算法慢幾個數(shù)量級。
2.2.1 初始化環(huán)境,并生成密鑰
選取基于F2橢圓曲線T=(m,p,q,G,n,h)上一個素數(shù)階n的點G(xp,yp),私鑰d∈[1,n-1],并計算公鑰PK=dG;
2.2.2 加密過程
節(jié)點A發(fā)送信息m給節(jié)點B時,節(jié)點A執(zhí)行下列步驟:
1)查找節(jié)點B的公鑰PKB;
2)將信息m表示成橢圓曲線F2域元素m∈F2;
3)在選取一個隨機整數(shù)k∈[1,n-1]:
4)計算點(x1,y1)=kG;
5)計算點(x2,y2)=kPKB;
6)計算c=mx2;
7)傳送加密數(shù)據(jù)(x1,y1,c)給B。
2.2.3 解密過程
當節(jié)點B解密收到的密文時,執(zhí)行下列步驟:
1)使用公鑰和它自身的私鑰dB,計算點(x2,y2)=dB(x1,y1);
2)通過公式m=cx2,對數(shù)據(jù)m進行恢復。
為了提高性能,減少計算量,對傳統(tǒng)ECC算法做了改進。
MAC-F-ECC算法和原傳統(tǒng)算法相比,增加了Mac地址校驗來提高安全性,本文按事先約定好的映射關系從信息m中截取一段作為Mac地址,并使用Frobenius算法代替二進制算法計算kG,減少了運算次數(shù),提高效率。公式(5)為MAC-F-ECC算法倍乘的實現(xiàn)
MAC-F-ECC算法流程圖如圖3。
圖3 MAC-F-ECC流程圖Fig 3 MAC-F-ECC flow chart
2)在加密的過程中,將MAC地址身份信息連同消息一同發(fā)出進行校驗,增加算法安全性。
由于傳感器的計算能力和存儲空間有限,所以,受到密鑰長度的限制,ECC體制能通過生成較短的密鑰達到較好的安全級別。當然所需帶寬顯然也減少,并降低了傳感器的存儲要求和計算負擔。最著名的ECC加密技術公司Certieom曾做過實驗比較[4],結果表明:ECC算法所需破譯時間要比RSA算法多得多,如圖4所示。
圖4 安全級別Fig 4 Safety level
橢圓曲線的點乘操作是加密過程中最耗時的步驟,減少點乘算法的時間復雜度就在最大程度上節(jié)約了能耗。改進的MAC-F-ECC算法降低加點的數(shù)量,加快加密算法的計算,如圖5所示。
圖5 算法能耗對比圖Fig 5 Contrast diagram of algorithm energy consumption
圖6從三加密算法的3個階段(密鑰生成、加密,解密)所需的時間(ms)。仿真效果表明:RSA算法除了在解密驗證時速度稍微低于MAC-F-ECC算法,其他階段MACF-ECC算法都明顯其他2種算法,且總耗時要優(yōu)于傳統(tǒng)ECC算法。
圖6 各階段時間對比圖Fig 6 Contrast times diagram of each stage
在無線傳感器上采用公鑰加密體制體質代替原有的私鑰加密體制,有著極其重要的意義,文中提出的MAC-FECC算法,通過對其安全性、能耗以及效率的分析可知,該算法能夠滿足通信節(jié)點進行相互身份認證和密鑰協(xié)商的要求,而且具有安全性高、計算量小、信息量少的特點。正因為MAC-F-ECC算法的這些優(yōu)勢,才能適用于無線傳感器網(wǎng)絡。
[1] 丁 宏,郭艷華.一種安全有效的小公鑰加密協(xié)議及其應用[J].小型微型計算機系統(tǒng),2003,24(5):819 -821.
[2] 彭長艷等.基于IBC的TLS握手協(xié)議設計與分析[J].計算機應用,2009(3):633-638.
[3] 王紅珍,李竹林.基于AES和ECC的混合加密系統(tǒng)的設計與實現(xiàn)[J].電子設計工程,2012,20(4):9 -11.
[4] 彭 冰,付 才,付 雄.一種基于橢圓曲線的高效移動支付系統(tǒng)[J].計算機應用研究,2008,25(9):2819 -2821.
[5] 胡 磊,馮登國,文鐵華.一類 Koblitz橢圓曲線的快速點乘[J].軟件學報,2003,14(1):1907 -1910.
[6] 田 野,盛 敏,李建東.一種新的傳感器網(wǎng)絡MAC地址分配算法[J].西安電子科技大學學報,2006,33(5):716 -720.
[7] 魏東梅.基于FPGA的F2m域橢圓曲線點乘的快速實現(xiàn)[J].計算機應用,2011,31(2):540 -542.