WSN鏈路層加密算法

WSN是一種節(jié)點(diǎn)資源受限的無線網(wǎng)絡(luò),其鏈路層安全策略的輕量化研究適合于各種應(yīng)用環(huán)境的WSN系統(tǒng),且效果顯著。結(jié)合序列密碼和分組密碼各自的優(yōu)勢,提出了一種新型輕量的WSN鏈路層加密算法——TinySBSec。

WSN鏈路層加密算法設(shè)計(jì)

1、TinySec協(xié)議分析

TinyOS是一個(gè)基于組件(component-based)的開源操作系統(tǒng),由UC Berkeley(加州大學(xué)伯克利分校)開發(fā),專為存儲器受限制的WSN設(shè)計(jì)。TinySec則同樣是UC Berkeley為WSN開發(fā)設(shè)計(jì)的一款可運(yùn)行于TinyOS的WSN鏈路加密協(xié)議。

該協(xié)議采用的是對稱分組密碼,加密算法可以是RC5或是Skipjack算法。其加密算法的工作模式為CBC模式,是一種擁有反饋機(jī)制的工作模式。每組密文不僅依賴于其明文,也依賴于上一密文分組(第1組密文依賴于初始向量IV)。

CBC模式的數(shù)學(xué)語言表示如下:

WSN鏈路層加密算法

CBC模式能增加攻擊者篡改消息的難度,以盡可能簡單的運(yùn)算,達(dá)到一定的安全性能,而且并不會增加太多額外的能量損耗。正是基于這一優(yōu)點(diǎn),其他的一些WSN鏈路層加密協(xié)議,如WSNSec和Con-tikiSec也使用CBC工作模式。

TinyOS的鏈路層協(xié)議有3種數(shù)據(jù)包結(jié)構(gòu):Tiny.OS packet format、TinySec-Auth packet format和Ti-nySec.AE packet formato其中TinyOS packet format是TinyOS默認(rèn)的數(shù)據(jù)包結(jié)構(gòu),沒有加密和MAC(消息認(rèn)證碼),只有CRC檢驗(yàn)數(shù)據(jù)的完整性;TinySec-Auth是只帶MAC認(rèn)證的數(shù)據(jù)包結(jié)構(gòu),Data是未加密的明文;TinySec-AE則是既有MAC認(rèn)證,同時(shí)Data也被加密保護(hù)的數(shù)據(jù)包結(jié)構(gòu)。3種數(shù)據(jù)包結(jié)構(gòu)如圖l所示。

WSN鏈路層加密算法

TinySec采用的RC5和Skipjack加密算法、CBG-MAC以及CBC密碼工作模式都沒有明顯的漏洞,且對資源的占用也控制的較好,似乎就是專為WSN量身定做的最合適的鏈路層加密協(xié)議。事實(shí)上,TinySec同樣具有一些缺點(diǎn),例如無密鑰更新機(jī)制,需要人工進(jìn)行密鑰的更新。當(dāng)然,這可以通過密鑰管理協(xié)議進(jìn)行完善,但對于WSN這種短報(bào)文且明文重復(fù)率較高的數(shù)據(jù)特點(diǎn),需要經(jīng)常更換密鑰以保障數(shù)據(jù)的安全性,這便對系統(tǒng)的整體能耗增加了額外的負(fù)擔(dān)。而本文提出的TinySBSec鏈路加密算法,則擁有一種子密鑰的自動更新機(jī)制,來解決這一問題。

2、TinySBSec框架設(shè)計(jì)

TinySBSec采用序列密碼與分組密碼相結(jié)合的方式,從而簡化節(jié)點(diǎn)進(jìn)行加密/解密時(shí)的計(jì)算復(fù)雜度和計(jì)算量。從形式上講,finySBSec依然是一種分組密碼算法,采用的是CBC工作模式,所以,TinySBSec的數(shù)據(jù)包結(jié)構(gòu),依然沿用TinySec-AE packet format如圖1(c)所示,這樣的設(shè)計(jì)盡可能的減小了對原TinyOS的其他協(xié)議算法的影響,具有更高的通用性。

雖然使用序列密碼的加密方式能夠極大的減少節(jié)點(diǎn)加密/解密的計(jì)算量,但卻會導(dǎo)致嚴(yán)重的安全缺陷。為了解決序列密碼在WSN鏈路層加密應(yīng)用中的致命缺陷,本協(xié)議采用分組密碼的形式,結(jié)合序列密碼在產(chǎn)生子密鑰和加密方面的優(yōu)勢,針對一些可能的安全漏洞進(jìn)行了優(yōu)化和設(shè)計(jì)。協(xié)議的加密/解密流程圖如圖2所示。

WSN鏈路層加密算法

從圖2中可以得知,TinySBSec的加密和解密流程,相較標(biāo)準(zhǔn)的分組密碼體制,增加了“交織/解交織”部分。需要說明的是,算法中引入交織并非是為了提供安全性上的增益,而是為了解決新算法在WSN應(yīng)用中可能遇到的安全缺陷??紤]到WSN的消息內(nèi)容有很強(qiáng)的“規(guī)范性”及“重復(fù)性”,若僅采用異或加密與分組密碼的結(jié)合加密算法,將很容易遭到暴力破解。引入交織,結(jié)合CBC模式的特性,可以較有效的規(guī)避這一問題。

而且,每個(gè)分組進(jìn)行加密時(shí),所使用的密鑰也是不同于標(biāo)準(zhǔn)分組密碼那樣的單一密鑰,并且在不同的2個(gè)報(bào)文加密時(shí),子密鑰也會相應(yīng)進(jìn)行更新(非密鑰管理方案形式的密鑰更新)。

在進(jìn)行TinySBSec協(xié)議的設(shè)計(jì)過程中,WSN的報(bào)文一般具有很強(qiáng)的“規(guī)范性”和“重復(fù)性”,而且種子密鑰的長度一般不會很長。若單純采用異或加密,會增加被暴力破解的風(fēng)險(xiǎn)。所以,TinySBSec采用明文交織和“偽一組一密”這2種技術(shù),與分組密碼CBC模式相結(jié)合,保證密碼系統(tǒng)的安全性。

在加密前,明文先進(jìn)行交織處理。交織這一概念源于通信原理,為了確保數(shù)據(jù)流在信道中某一塊的丟失不會導(dǎo)致整個(gè)信息的無法還原,采用交織方法將原數(shù)據(jù)的塊分散到傳輸信號的各個(gè)部分,在接收端再通過解交織以及糾錯碼進(jìn)行信號還原。在這里,利用交織可以將數(shù)據(jù)位分散分布的特點(diǎn),使得分析者在分析時(shí),除非能猜測出完整的明文(或至少是明文的大部分位),否則,無法通過簡單的異或破解出加密密鑰。而且,即使破譯出了加密密鑰,由于TinySBSec的子密鑰自更新機(jī)制,破譯者依然無法獲得種子密鑰T。

此外,TinySBSec的子密鑰還具有自動更新機(jī)制,這進(jìn)一步提高了密碼的安全性,因?yàn)椤耙淮我幻芗用芟到y(tǒng)”是最安全的一種加密方式,雖然本算法并非嚴(yán)格意義上的“一次一密”,但卻能提供相當(dāng)?shù)墓δ?,且不需要為此?fù)擔(dān)額外的密鑰更新能耗,而這正適合WSN的鏈路層加密。以往的WSN鏈路加密協(xié)議不采用一次一密,是因?yàn)轭l繁的密鑰更新,會給系統(tǒng)的計(jì)算和功耗帶來極大的影響,不適合WSN這種輕量級的網(wǎng)絡(luò)應(yīng)用a而TinySBSec的子密鑰自動更新,不需要通過WSN的密鑰管理協(xié)議實(shí)現(xiàn),恰好彌補(bǔ)了一次一密體制在WSN應(yīng)用中的先天缺點(diǎn)。

TinySBSec采用CBC分組加密模式,加密/解密部分采用的是序列密碼加密,因此加密及解密計(jì)算用異或表示,每組明文加密都采用獨(dú)立的密鑰Ki。加密及解密計(jì)算的數(shù)學(xué)表達(dá)式可以表述為:

WSN鏈路層加密算法

其中,Co =IV,i=l,2,…,290 TinySBSec采用8 bit(即lbyte)的分組長度,每個(gè)分組加密時(shí)都有對應(yīng)的獨(dú)立密鑰,報(bào)文格式與TinyOS一樣,默認(rèn)支持最多為29 byte長的數(shù)據(jù)。

3、子密鑰生成算法

TinySBSec是一種序列密碼加密,分組密碼鏈接形式的加密協(xié)議,其子密鑰生成算法采用RC4框架的改進(jìn)型序列密碼算法。RC4算法原型具有易實(shí)現(xiàn)、速度快(大約是DES的10倍左右)、安全性好等優(yōu)點(diǎn),適合移植到WSN的應(yīng)用中。通過結(jié)合在本文12節(jié)中提出的“偽一組一密”的CBC分組加密模式,作為序列密碼的RC4也能在WSN中進(jìn)行工作,并保證一定的安全性。而為了進(jìn)一步保證。rinySB-Sec的安全性能,本文對RC4算法進(jìn)行進(jìn)一步的修改,提高其序列輸出的隨機(jī)性,并且防止一些針對RC4算法特征的破解。

這種改進(jìn)型的密鑰序列生成算法采用128 byte長的種子密鑰r,在RC4原型的偽隨機(jī)子密碼生成算法( PRGA)中,加入了Logistic混沌映射算法,以此增強(qiáng)子密鑰序列的隨機(jī)性。LogisLic混沌映射模型如下:

WSN鏈路層加密算法

改進(jìn)算法中的Logistic初始值Xo采用的是7位的無符號二進(jìn)制數(shù),其精度為1/128,即可精確到小數(shù)點(diǎn)后2位。在對算法進(jìn)行改進(jìn)的過程中,發(fā)現(xiàn)Lo-gistic混沌映射在初始值Xo變化很小時(shí),其初始幾輪迭代值差異很小,如圖3所示。

WSN鏈路層加密算法

從圖3可見,在小數(shù)點(diǎn)后2位精度的情況下,初始值五的微小變化導(dǎo)致的前4輪迭代值相差很小。所以,在算法中使用Logistic時(shí),先進(jìn)行4輪預(yù)迭代,以保證加人Logistic混沌映射的有效性。

改進(jìn)后的子密鑰序列生成算法如下:

u=4;x=[tIV mod 16]/128;

for Z=1:4

x=u*x*(1-x)

end

i =j = dx = O ;

forround = 1: (Len/8)

i= ( i+ I ) mod256 ;

j= (j+S[ i] ) mod256 ;

dx =x * 256 ;

swap ( S[ i], S[jJ ) ;

t = ( S[ i] +S[j ] +dx ) mod256;

K[ round]=S[t];

end

其中,u=4即Logistic映射的控制參數(shù)p,Len/8表示分組數(shù)量。

從算法中可以看到,PRGA中插入的Log18tic映射的初始值XO,是由種子密鑰r的第IV個(gè)元素的模16值確定的(因?yàn)榉N子密鑰長為16 byte)。由于IV中包含計(jì)數(shù)器Ctr,所以IV的更新會帶動初始值Xo的更新,達(dá)到子密鑰序列自動更新的效果。在最后產(chǎn)生子密鑰時(shí),加入Logistic迭代值,可以在增加輸出子密鑰序列隨機(jī)性的情況下,避免破壞RC4原算法的結(jié)構(gòu),防止弱密鑰情況的發(fā)生。

新算法充分利用了Tiny'OS數(shù)據(jù)報(bào)文的元素,實(shí)現(xiàn)了混沌映射在密鑰生成算法中,保持加密/解密過程的同步o正如算法所描述的,PRGA中插入的Logistic映射的初始值XO,與初始向量IV(8 bit)有關(guān)。初始向量IV是消息頭(IV= Dest ll AM ll Len llSrc ll Ctr)的8bit摘要。憑此,在解密時(shí),節(jié)點(diǎn)能夠有效地進(jìn)行同步解密。

該算法的安全優(yōu)勢在于,克服了序列密碼原本的周期性重復(fù)問題,且破譯者進(jìn)行破譯時(shí),無法獲得必需的Logistic映射初始值Xo,因?yàn)閄o需要通過種子密鑰r獲得。從理論上講,子密鑰自更新機(jī)制對于暴力破解也有很強(qiáng)的防御能力,新的子密鑰序列生成算法具有足夠的安全性,并且比原RC4的PRGA算法更安全。

小知識之WSN

無線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks, WSN)是一種分布式傳感網(wǎng)絡(luò),它的末梢是可以感知和檢查外部世界的傳感器。WSN中的傳感器通過無線方式通信,因此網(wǎng)絡(luò)設(shè)置靈活,設(shè)備位置可以隨時(shí)更改,還可以跟互聯(lián)網(wǎng)進(jìn)行有線或無線方式的連接。通過無線通信方式形成的一個(gè)多跳自組織網(wǎng)絡(luò)。