嚴(yán)疆 文添藝
【摘 要】Zigbee新作為一種新興的低成本,低功耗,近距離,雙向通信網(wǎng)絡(luò)技術(shù),在物聯(lián)網(wǎng)飛速發(fā)展的進(jìn)程中得到了廣泛的應(yīng)用。隨著應(yīng)用范圍越來越廣泛,ZigBee網(wǎng)絡(luò)的數(shù)據(jù)安全也變得原來越重要。目前,在ZigBee平臺上,尚未有非對稱加密算法的相關(guān)研究,本文給出了在cc2530平臺上,實(shí)現(xiàn)RSA算法的過程,并給出了收集的相關(guān)運(yùn)行數(shù)據(jù)。最后,本文給出了運(yùn)行的結(jié)果和分析數(shù)據(jù)。
【關(guān)鍵詞】通信安全 Zigbee 非對稱加密算法 性能分析
引言
基于IEEE 802.15.4無線技術(shù)的ZigBee,被廣泛應(yīng)用于工業(yè),家庭,醫(yī)療等對數(shù)據(jù)率和QoS要求不高,但覆蓋面積較大的無線通信場合之中。隨著基于ZigBee的應(yīng)用實(shí)例越來越多,其數(shù)據(jù)的安全性也變得越來越重要。作為ZigBee實(shí)現(xiàn)方式之一的ZStack雖然自帶了一套基于AES128加密解密算法,但在互聯(lián)網(wǎng)應(yīng)用之中,普遍認(rèn)為非對稱加密技術(shù)比對稱加密算法更為優(yōu)越。所以實(shí)現(xiàn)一套基于非對稱秘鑰的加密算法變得非常具有參考意義。
一、利用RSA算法的加密體系
在cc2530平臺上,我們實(shí)現(xiàn)了簡單的RSA加密解密算法,并根據(jù)對于該算法的統(tǒng)計(jì)信息,試探性地探討在ZigBee系列的小型嵌入式芯片上,在不使用協(xié)處理器的情況下,RSA算法的性能。整個算法的實(shí)現(xiàn)是基于ZStack平臺進(jìn)行的。算法在Windows平臺下開發(fā)后進(jìn)行結(jié)果驗(yàn)證。最后移植到ZStack平臺上進(jìn)行相關(guān)數(shù)據(jù)的收集。
二、實(shí)現(xiàn)過程
為方便對多種加密長度運(yùn)行結(jié)果進(jìn)行采樣,必須將算法實(shí)現(xiàn)在長度可變的整形數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)之上。所以在實(shí)現(xiàn)過程中,建立了一個長度可變的簡易整形數(shù)據(jù)結(jié)構(gòu)。
由于硬件資源有限,必須在設(shè)計(jì)和實(shí)現(xiàn)上,權(quán)衡安全性和性能開銷。開銷主要分為兩方面:占用的內(nèi)存空間大小及運(yùn)算時間。
三、內(nèi)存占用的統(tǒng)計(jì)過程及方法
為統(tǒng)計(jì)使用內(nèi)存,對內(nèi)存分配及釋放函數(shù)(ZStack上為osal_mem_alloc及osal_mem_free,在Windows下為malloc及free)進(jìn)行封裝。統(tǒng)計(jì)整個加密解密過程中,占用內(nèi)存空間的高峰值,所分配的最大內(nèi)存塊等信息。在PC端運(yùn)行算法時,由于統(tǒng)計(jì)結(jié)果小于ZStack預(yù)計(jì)的動態(tài)管理內(nèi)存的范圍32768Bytes[4],所以直接寫入,試運(yùn)行。但由于頻繁地申請和釋放用來保存臨時結(jié)果的內(nèi)存塊,導(dǎo)致內(nèi)存嚴(yán)重碎片化,致使ZStack無法分配出更大的內(nèi)存空間而導(dǎo)致算法無法正常進(jìn)行。所以更改方案為:將表示整數(shù)的內(nèi)存塊長度進(jìn)行統(tǒng)一,并利用對象池技術(shù)來復(fù)用所分配到的內(nèi)存塊。
在優(yōu)化的過程中,通過分析對象池所統(tǒng)計(jì)的信息,確定了算法分配的最多內(nèi)存塊數(shù)量。然后,通過將內(nèi)存塊聲明為全局靜態(tài)變量,來減少調(diào)用內(nèi)存管理功能的開銷,以此優(yōu)化整體性能。最后采用覆蓋方法,實(shí)現(xiàn)內(nèi)存塊的復(fù)用,減少內(nèi)存空間的占用。
在分配靜態(tài)內(nèi)存空間時,需要重新調(diào)整XDATA布局。因?yàn)閯討B(tài)管理的內(nèi)存空間是在編譯時設(shè)定好的,無法在運(yùn)行時改變 [4],所以在實(shí)現(xiàn)算法過程中,將ZStack代碼的OnBoard.h文件中的INT_HEAP_LEN從3027改為2048。以此減少動態(tài)管理內(nèi)存所占用的空間,以增加靜態(tài)變量所占用空間。
四、運(yùn)算時間統(tǒng)計(jì)過程及方法
運(yùn)算占用時間,通過在運(yùn)算前后獲得系統(tǒng)時鐘(在ZStack上為osal_getSystemClock),計(jì)算差值來獲得。值得注意的是osal_getSystemClock本身僅僅返回uint32_t類型的, osal_systemClock數(shù)值,并不會自動更新系統(tǒng)時鐘。所以在每次獲得系統(tǒng)時鐘之前,必須主動更新系統(tǒng)時鐘(即主動調(diào)用osalTimeUpdate)。
對于MUC,RSA加密位數(shù)不宜過長。初次測試采取很小的64位加密。在節(jié)點(diǎn)A對明文進(jìn)行加密,加密后,發(fā)送加密統(tǒng)計(jì)信息和密文到節(jié)點(diǎn)B。節(jié)點(diǎn)B進(jìn)行解密并對解密過程進(jìn)行統(tǒng)計(jì),在核對解密結(jié)果是否和明文一致后,將核對結(jié)果和所有統(tǒng)計(jì)信息通過串口發(fā)送到PC進(jìn)行數(shù)據(jù)處理。
五、算法偽代碼
由于被加密的數(shù)據(jù)長度是不確定的,所以應(yīng)先對被加密數(shù)據(jù)進(jìn)行分塊,不滿一塊的,填零補(bǔ)齊。然后對每塊依次進(jìn)行加密,返回加密數(shù)據(jù)。
六、生成秘鑰
八、解密算法的偽代碼
九、運(yùn)行結(jié)果
在實(shí)現(xiàn)中,大數(shù)的長度是在宏中定義的,為44字節(jié)。整個實(shí)現(xiàn)中,一共使用了34個大數(shù),總共占用的靜態(tài)內(nèi)存空間為34*sizeof(bn),即1496字節(jié)。
根據(jù)收集到的數(shù)據(jù),可以計(jì)算出:平均加密耗時為1819.96ms,平均解密耗時為8371.66ms。
十、結(jié)論
根據(jù)初步收集的數(shù)據(jù),在加密位數(shù)很低的情況下(相對于普遍使用的1024位加密解密而言),耗時過長。由于cc2530附帶AES協(xié)處理器,所以,對比于AES128的100ms以下的耗時[1],RSA算法在沒有協(xié)處理器的情況下,不宜在8051芯片上進(jìn)行大量數(shù)值計(jì)算的應(yīng)用意義并不是很大。雖然cc2530使用的是加強(qiáng)的8051微處理器,但在計(jì)算性能上仍有所欠缺。
在實(shí)際應(yīng)用中,應(yīng)對較短的數(shù)據(jù)(如秘鑰)進(jìn)行RSA加密解密操作?;蛟谟?jì)算能力更強(qiáng)的芯片上運(yùn)算,然后由cc2530進(jìn)行數(shù)據(jù)傳輸。
加強(qiáng)ZigBee對于非對稱加密算法支持程度,引入?yún)f(xié)處理器,將會稱為一種較為可取的解決方案。
參考文獻(xiàn):
[1]黃太波,趙華偉,潘金秋,聶培堯,楊澤軍.ZigBee協(xié)議棧的安全體系綜述[J].山東科學(xué),2012,25(2):59-66.
[2]謝琦,趙森,仇婷婷. ZigBee消息在應(yīng)用層的安全機(jī)制研究[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(8):311-313.
[3]楊斌.基于AES的ZigBee標(biāo)準(zhǔn)安全機(jī)制分析[J].計(jì)算機(jī)工程與科學(xué),2010,32(7):42-45.
[4]Texas Instruments, Inc.. Application Note: Heap Memory Management[Z]. San Diego, California USA:Texas Instruments, Inc.,2010.