《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 數(shù)據(jù)加密技術(shù)在嵌入式系統(tǒng)中的應(yīng)用
數(shù)據(jù)加密技術(shù)在嵌入式系統(tǒng)中的應(yīng)用
任獻(xiàn)彬,,張樹森
摘要: 在裝備的試用狀態(tài)管理和敏感數(shù)據(jù)保護(hù)等方面,,數(shù)據(jù)加密技術(shù)的應(yīng)用越來越廣泛。針對(duì)嵌入式系統(tǒng)的特點(diǎn)和數(shù)據(jù)加密需求,,給出了一種可應(yīng)用到嵌入式系統(tǒng)的數(shù)據(jù)加密算法。該方法在隨機(jī)數(shù)序列的基礎(chǔ)上實(shí)現(xiàn)數(shù)據(jù)加密,并綜合應(yīng)用了數(shù)據(jù)二次尋址,、置換表、數(shù)據(jù)字節(jié)運(yùn)算,、改進(jìn)的循環(huán)冗余校驗(yàn)等技術(shù),,相同明文每次加密后形成的密文數(shù)據(jù)各不相同,具有加密強(qiáng)度高,、算法容易實(shí)現(xiàn),、密文數(shù)據(jù)防篡改等特點(diǎn)。該技術(shù)已成功應(yīng)用于C8051F020和MSP430F135單
Abstract:
Key words :

0 引言
當(dāng)前嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用在武器裝備和民用產(chǎn)品的各個(gè)領(lǐng)域,,在其越來越智能化的同時(shí),,與之運(yùn)行有關(guān)的各種工作參數(shù)等設(shè)置數(shù)據(jù)也越來越成為需要保護(hù)的對(duì)象。
某些系統(tǒng)中,,系統(tǒng)工作狀態(tài)設(shè)置參數(shù),、測(cè)量結(jié)果等敏感數(shù)據(jù)必須經(jīng)過授權(quán)才能被設(shè)置或查看。在沒有授權(quán)的情況下,,即使得到敏感數(shù)據(jù),,也無(wú)法破解數(shù)據(jù)的真正含義。在具有“試用風(fēng)險(xiǎn)管理”功能的民用產(chǎn)品中,,產(chǎn)品交付用戶的日期,、試用期限及試用狀態(tài)(類似于軟件產(chǎn)品的“試用版本”)、試用狀態(tài)到交付狀態(tài)的設(shè)置,、產(chǎn)品序列號(hào),、產(chǎn)品工作狀態(tài)設(shè)置口令等數(shù)據(jù)直接關(guān)系到產(chǎn)品生產(chǎn)廠商的經(jīng)濟(jì)利益。產(chǎn)品試用期結(jié)束后,,產(chǎn)品工作狀態(tài)升級(jí)等設(shè)置數(shù)據(jù)需要通過用戶傳遞給設(shè)備,,因此,在客觀上就需要一種強(qiáng)有力的安全措施來保護(hù)這些敏感數(shù)據(jù)不被篡改或非法應(yīng)用到其他同型產(chǎn)品,。

1 數(shù)據(jù)加密的應(yīng)用實(shí)例
數(shù)據(jù)加密在嵌入式系統(tǒng)中的應(yīng)用實(shí)例如圖1所示,。在該應(yīng)用中,包括“遠(yuǎn)程控制端”和“用戶端”兩個(gè)子系統(tǒng),,其中“遠(yuǎn)程控制端”可以是上級(jí)機(jī)關(guān),,也可以是民用產(chǎn)品的生產(chǎn)、銷售單位。在“遠(yuǎn)程控制端”,,根據(jù)密鑰文件,,敏感數(shù)據(jù)被加密處理后形成密文數(shù)據(jù),就可以通過互聯(lián)網(wǎng)或非涉密人員進(jìn)行傳遞,。密文數(shù)據(jù)傳送到設(shè)備的使用單位后,,再由非涉密的使用人員(或民用產(chǎn)品用戶)把這些數(shù)據(jù)輸入嵌入式設(shè)備。設(shè)備根據(jù)其存儲(chǔ)的密鑰數(shù)據(jù)把密文還原成內(nèi)部可識(shí)別的敏感數(shù)據(jù),,再進(jìn)行相應(yīng)操作,,從而最終實(shí)現(xiàn)遠(yuǎn)程控制端對(duì)設(shè)備的控制;把嵌入式設(shè)備中的數(shù)據(jù)傳輸?shù)竭h(yuǎn)程控制端的過程與之相反,,首先敏感數(shù)據(jù)由嵌入式設(shè)備進(jìn)行加密處理,,再通過互聯(lián)網(wǎng)或其他非涉密渠道傳送到遠(yuǎn)程控制端,密文數(shù)據(jù)解密后即可還原成原始數(shù)據(jù),。

a.JPG


在設(shè)備試用狀態(tài)管理的應(yīng)用實(shí)例中,,“遠(yuǎn)程控制端”密文數(shù)據(jù)的產(chǎn)生由“遠(yuǎn)程控制端”密文數(shù)據(jù)產(chǎn)生程序?qū)崿F(xiàn),密文數(shù)據(jù)的具體功能由數(shù)據(jù)“任務(wù)類型”定義,,包括升級(jí)到交裝狀態(tài),、延長(zhǎng)試用期限、交裝狀態(tài)和試用狀態(tài)出廠參數(shù)設(shè)置等4種任務(wù),,用戶界面如圖2所示,。只要操作人員在用戶界面上輸入設(shè)備序列號(hào)、用戶密碼,、任務(wù)類型等數(shù)據(jù),,再點(diǎn)擊“創(chuàng)建文件”,密文數(shù)據(jù)即可生成,,然后即可把該密文數(shù)據(jù)文件通過互聯(lián)網(wǎng)等傳遞給用戶,。當(dāng)用戶把該密文數(shù)據(jù)注入設(shè)備時(shí),設(shè)備按規(guī)定的算法把數(shù)據(jù)解密后,,再判斷設(shè)備序列號(hào)和用戶密碼是否與設(shè)備定義一致,,如果一致則執(zhí)行密文數(shù)據(jù)定義的任務(wù)。通過這樣的方法,,設(shè)備生產(chǎn)廠商即可實(shí)現(xiàn)對(duì)設(shè)備試用狀態(tài)的遠(yuǎn)程控制,。

2 嵌入式系統(tǒng)數(shù)據(jù)加密技術(shù)的特點(diǎn)
所謂數(shù)據(jù)加密技術(shù)是指將信息(或稱明文)經(jīng)過加密鑰匙及加密函數(shù)轉(zhuǎn)換,變成無(wú)意義的密文,,而接收方將此密文經(jīng)過解密函數(shù),、解密鑰匙還原成明文的技術(shù)。
數(shù)據(jù)加密技術(shù)要求只有在指定的用戶或網(wǎng)絡(luò)下,,才能解除密碼而獲得原來的數(shù)據(jù),,因此數(shù)據(jù)發(fā)送方和接收方都需要一些特殊的信息用于加解密,,這就是所謂的密鑰(或加密算法)。密鑰分為專用密鑰和公開密鑰兩種,。嵌入式系統(tǒng)中用戶端的密鑰存儲(chǔ)在硬件設(shè)備中,,因數(shù)據(jù)存儲(chǔ)芯片在硬件上設(shè)置有加密機(jī)制,無(wú)法被讀取或破譯,,因此采用專用密鑰這種簡(jiǎn)單的形式即可滿足要求,。
在嵌入式系統(tǒng)中,,“遠(yuǎn)程控制端”的密鑰由遠(yuǎn)程控制人員掌握,,“用戶端”的密鑰存儲(chǔ)在嵌入式系統(tǒng)中,用戶無(wú)法得到密鑰數(shù)據(jù),,就無(wú)法破解密文數(shù)據(jù),,從而無(wú)法擅自設(shè)置嵌入式設(shè)備中需要保護(hù)的工作參數(shù)和工作狀態(tài)。
根據(jù)嵌入式系統(tǒng)的特點(diǎn)及加密技術(shù)的應(yīng)用環(huán)境,,應(yīng)用到嵌入式系統(tǒng)時(shí),,數(shù)據(jù)加密具有以下幾個(gè)特點(diǎn):
(1)加密算法要簡(jiǎn)單且容易在MCU上實(shí)現(xiàn),占用的字節(jié)數(shù)要盡可能少,;
(2)應(yīng)具有較高的加密強(qiáng)度,。如果用戶有多臺(tái)設(shè)備,就有機(jī)會(huì)獲得多套密文數(shù)據(jù),。由于設(shè)備和密文數(shù)據(jù)都處于用戶掌控之下,,如果加密強(qiáng)度不夠,密文數(shù)據(jù)將很容易被破解,,并被非法應(yīng)用到其他設(shè)備,;
(3)加密技術(shù)應(yīng)能識(shí)別密文數(shù)據(jù)是否被非法篡改,以防止用戶更改數(shù)據(jù)后再在設(shè)備上試驗(yàn),,進(jìn)而逐步掌握密文數(shù)據(jù)的加密規(guī)則,;
(4)密文數(shù)據(jù)中應(yīng)包含設(shè)備序列號(hào)信息,以防止數(shù)據(jù)被非法應(yīng)用到其他設(shè)備,。

3 數(shù)據(jù)加密的實(shí)現(xiàn)方法
下面介紹的數(shù)據(jù)加密方法已成功應(yīng)用薊某嵌入式設(shè)備中,。其基本過程是,先把被加密數(shù)據(jù)通過“置換表”法,、數(shù)據(jù)字節(jié)運(yùn)算等加密算法進(jìn)行加密處理,,再把加密后的數(shù)據(jù)根據(jù)一定的規(guī)則隨機(jī)地插入到一隨機(jī)數(shù)序列中,同時(shí)把該數(shù)據(jù)在數(shù)列中的存儲(chǔ)地址插入該數(shù)列的某規(guī)定位置,。操作完成后再對(duì)該數(shù)列采用“置換表”法進(jìn)行數(shù)據(jù)置換,,并采用循環(huán)冗余校驗(yàn)技術(shù)分段計(jì)算數(shù)列的校驗(yàn)和,并把校驗(yàn)和插入數(shù)列的規(guī)定位置,。該方法加密強(qiáng)度高,,代碼量少,,運(yùn)算量小,隨機(jī)存儲(chǔ)器需求量小,,適合應(yīng)用到嵌入式系統(tǒng)中,。
3.1 數(shù)據(jù)加密方法
在加密數(shù)據(jù)前,首先產(chǎn)生一隨機(jī)數(shù)序列X[i],,其中i在加密過程中,,原始數(shù)據(jù)通過二次尋址的方式插入隨機(jī)數(shù)列,,這樣數(shù)據(jù)在數(shù)列中的存儲(chǔ)位置可以是隨機(jī)的,被加密數(shù)據(jù)的存儲(chǔ)地址是相對(duì)固定的,。數(shù)據(jù)二次尋址方式原理示意圖如圖3所示,。圖中,每次加密操作時(shí)原始數(shù)據(jù)0x7E的存儲(chǔ)位置是隨機(jī)的,,本次加密操作時(shí)其存儲(chǔ)地址0x01C2存儲(chǔ)在0x00D9和0x01D8兩個(gè)字節(jié)中,。

b.JPG


假設(shè)某數(shù)據(jù)d在隨機(jī)數(shù)列中的存儲(chǔ)位置為md(雙字節(jié)),,地址md為小于N的隨機(jī)數(shù),md在隨機(jī)數(shù)列中的存儲(chǔ)位置為nd'(高字節(jié))和kd'(低字節(jié)),,則原始數(shù)據(jù)d可表述為:
c.JPG
為提高加密強(qiáng)度,,數(shù)據(jù)d的存儲(chǔ)地址的存儲(chǔ)地址nd'和kd'是偽隨機(jī)的,每次加密操作時(shí),,其值將分別在地址空間Jnd±F,,Jkd±F的范圍內(nèi)變化,其中,,Jnd,,Jkd分別為數(shù)據(jù)d存儲(chǔ)地址的高、低字節(jié)的存儲(chǔ)基地址,,F(xiàn)為存儲(chǔ)地址最大偏移量,。這3個(gè)量都是事先定義好的。為簡(jiǎn)化算法的復(fù)雜程度,,降低算法對(duì)隨機(jī)存儲(chǔ)器的需求,,所有原始數(shù)據(jù)基地址的最大偏移量可以設(shè)置成相等,。
加密操作時(shí)基地址偏移量的具體值,f隨機(jī),,由隨機(jī)數(shù)列中某些元素通過規(guī)定的算法運(yùn)算得到:
f隨機(jī)=F1(X[xa],,…,X[xb])(2)
式中:xa,,…,,xb分別為小于N的固定值;F1表示運(yùn)算規(guī)則,。運(yùn)算規(guī)則可以采用求和再取低幾位,、取反求和等各種規(guī)則,但要保證運(yùn)算結(jié)果f隨機(jī)考慮到f隨機(jī),,則式(1)變?yōu)椋?br /> e.JPG
式中:Jnd,Jkd分別是數(shù)據(jù)nd'和kd'在隨機(jī)數(shù)列X[i]中的基地址,;f隨機(jī)是本次加密操作的地址偏移量,。

另外在把數(shù)據(jù)寫入隨機(jī)數(shù)序列X[i]時(shí)被寫數(shù)據(jù)也經(jīng)過了變換,變換規(guī)則可以采用高4位與低4位交換,、取非,、字/字節(jié)循環(huán)移位、XOR等各種方法,,只要變換后不破壞數(shù)據(jù)的惟一性即可,。設(shè)把數(shù)據(jù)寫入隨機(jī)數(shù)序列時(shí)的變換規(guī)則為F2,對(duì)應(yīng)的反變換表示為,,則式(3)變?yōu)椋?br /> f.JPG
由于f隨機(jī)具有隨機(jī)特性,,則每次加密數(shù)據(jù)時(shí),數(shù)據(jù)d寫入隨機(jī)數(shù)列的位置md具有隨機(jī)性,、存儲(chǔ)md尋址地址的字節(jié)位置也具有隨機(jī)性,;這樣就保證了系統(tǒng)每次在加密數(shù)據(jù)時(shí)數(shù)據(jù)地址及數(shù)據(jù)地址的存儲(chǔ)地址都是不相同的,大大增加了破譯難度,。
綜上所述,,把數(shù)據(jù)d插入隨機(jī)數(shù)列的過程是:第1步,產(chǎn)生一隨機(jī)數(shù)序列X[i],,其中i根據(jù)隨機(jī)數(shù)列得到數(shù)據(jù)d的過程是:第1步,根據(jù)規(guī)則F1得到基地址偏移量f隨機(jī),,第2步,,把X[Jnd+f隨機(jī)]經(jīng)i.jpg規(guī)則變換后賦值給nd';第3步,,把X[Jkd+f隨機(jī)]經(jīng)i.jpg規(guī)則變換后賦值給kd',;第4步,X[nd'<<8+kd']經(jīng)i.jpg規(guī)則變換后即得到原始數(shù)據(jù)d,。
3.2 密文數(shù)據(jù)防篡改的方法
為防止密文數(shù)據(jù)被非法更改,,采用了經(jīng)過改進(jìn)的循環(huán)冗余校驗(yàn)技術(shù)。即數(shù)列X[i]的字節(jié)x[M]存儲(chǔ)[0,,M-1]地址段中所有數(shù)據(jù)的校驗(yàn)和,,x[2M]字節(jié)存儲(chǔ)[M,2M-1]地址段中所有數(shù)據(jù)的校驗(yàn)和,,…,,在解密時(shí)首先檢查各地址段數(shù)據(jù)的校驗(yàn)和與“校驗(yàn)和存儲(chǔ)字節(jié)”的存儲(chǔ)值是否相等,即可判斷數(shù)據(jù)是否被非法更改,。假設(shè)M是被計(jì)算的數(shù)據(jù)段長(zhǎng)度,,則:
g.JPG
式中:F2代表數(shù)據(jù)寫入隨機(jī)數(shù)列時(shí)的變換規(guī)則;k=1,,2,,…,,N/M。
通過這種方法,,密文數(shù)據(jù)中的任何字節(jié)被非法更改,,都可以被檢測(cè)到。另外被求和的字段長(zhǎng)度也可以設(shè)置成不相等,,數(shù)據(jù)就更難被破解,。
3.3 數(shù)列置換
為進(jìn)一步提高加密強(qiáng)度,埋入數(shù)據(jù)后的隨機(jī)數(shù)列X[i]還可經(jīng)過“置換表”技術(shù)進(jìn)行加密,。在該方法中,,置換表Z[i]是關(guān)鍵,,它是數(shù)列[0,,1,…,,255]中的元素再經(jīng)過隨機(jī)排列而得到的,。設(shè)Z[i]中的數(shù)據(jù)為x[i],則z[i]具有如下特征:
h.JPG
使用兩個(gè)或更多的“置換表”,,在置換操作時(shí)按偽隨機(jī)的方式使用每個(gè)襲,,可以進(jìn)一步提高加密強(qiáng)度,。但每增加一個(gè)置換襲,,嵌入式系統(tǒng)程序中就需要增加一個(gè)長(zhǎng)度為255 B的數(shù)組,因此置換表的數(shù)量還要根據(jù)加密強(qiáng)度需求,、嵌入式系統(tǒng)的存儲(chǔ)和數(shù)據(jù)處理能力等因素確定,。

4 結(jié)語(yǔ)
接本文所述方法加密后的數(shù)據(jù)是一組沒有任何規(guī)律的偽隨機(jī)數(shù),且完全相同的密文數(shù)據(jù)每次加密后都不相同,,具有很高的加密強(qiáng)度和防破解能力,。另外該加密方法還具有微處理器資源需求小,算法容易實(shí)現(xiàn),,加,、解密運(yùn)行時(shí)間短等優(yōu)點(diǎn)。該加密方法還可應(yīng)用于軟件用戶口令存儲(chǔ)加密,、數(shù)字簽名等方面,。該技術(shù)現(xiàn)已成功應(yīng)用在某型工業(yè)控制設(shè)備試用狀態(tài)管理和某型機(jī)載電子設(shè)備自動(dòng)測(cè)試系統(tǒng)使用權(quán)限管理等數(shù)據(jù)加密領(lǐng)域,取得了很好的應(yīng)用效果,。在工業(yè)設(shè)備的試用狀態(tài)管理應(yīng)用中,,當(dāng)需要對(duì)已經(jīng)交付用戶試用的設(shè)備進(jìn)行工作狀態(tài)設(shè)置時(shí)(如試用狀態(tài)升級(jí)到正式交付狀態(tài)等),生產(chǎn)廠商只需把密文文件通過互聯(lián)網(wǎng)發(fā)送給用戶,,用戶把數(shù)據(jù)拷貝到U盤后再插入設(shè)備的USB口,,重新啟動(dòng)設(shè)備即
可完成,,使用起來十分方便。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。