??? 摘? 要: 為了使更多的嵌入式系統(tǒng)的原創(chuàng)者能有效地保護自己的開發(fā)成果和知識產(chǎn)權(quán),,介紹了嵌入式系統(tǒng)加密芯片DM2016的結(jié)構(gòu),、特點及其在數(shù)字電視加密領域的應用,,同時給出了BlowFish算法在嵌入式主系統(tǒng)中的加密方法及應用。?
??? 關(guān)鍵詞: 嵌入式系統(tǒng),; 加密技術(shù),; DM2016
?
??? 許多都經(jīng)歷過因盜版而帶來的損失,據(jù)統(tǒng)計,全球每三款軟件就有一款被拷貝或盜版。面對形形色色的解密公司,封裝和PCB布線的保護已經(jīng)顯得力不從心,而單純的軟件保護,,如E2PROM、MCU也無濟于事,。硬件保護軟件或由軟硬件相結(jié)合的保護技術(shù),在加大盜版難度的同時也加大了破解難度,。?
??? 針對MCU加密易破解的問題,嵌入式系統(tǒng)加密芯片DM2016內(nèi)嵌1 024位 E2PROM,采用了明文隨機數(shù)產(chǎn)生方式、特殊算法,、密鑰OTP寫入數(shù)據(jù)線自動熔斷不可讀等多種保護措施, 其廣泛適用于PMP,、GPS、DVD,、DVR,、DVB以及所有嵌入式應用系統(tǒng)中。?
1 DM2016的特點?
??? DM2016的內(nèi)部結(jié)構(gòu)如圖1所示,,其特性如下:(1)符合I2C總線標準,;(2)支持兩位I2C地址選擇;(3)內(nèi)置128位密鑰解密算法,,保密性能類似于3DES算法,,一次性燒錄;(4)內(nèi)置1 024位 E2PROM,;(5)隨機數(shù)通信算法,。?
?
?
2 DM2016的工作原理?
??? DM2016是一款嵌入式系統(tǒng)專業(yè)加密芯片,如圖2所示。DM2016通過I2C總線與主芯片CPU相連,在主程序中嵌入加密程序,。當加密程序調(diào)用運行時,即從RAM中隨機調(diào)用一組數(shù)據(jù)作為明文,與程序中的密鑰混合產(chǎn)生一組暗文,。暗文通過I2C總線傳送到加密芯片,按反算法與加密芯片中密鑰產(chǎn)生明文,再與RAM中的明文比較,兩者一致則程序繼續(xù)。兩者不一致則程序中斷退出,,從而起到保護用戶程序的目的,。?
?
?
3 DM2016在數(shù)字電視加密領域中的應用?
3.1 硬件結(jié)構(gòu)?
??? DM2016加密芯片在數(shù)字電視加密領域中的應用結(jié)構(gòu)示意圖如圖3所示。圖中DM1105是一款針對性很強的芯片,,它接收標準的TS流,,選擇進行解復用、解擾,,將處理好的TS流以DMA方式通過PCI總線送到計算機內(nèi)存,。該芯片可以通過與CI接口控制芯片DM1021搭配實現(xiàn)兩個CAM卡控制,,并可以接收外部紅外遙控信號實現(xiàn)遙控功能。DM1105只需外掛加密芯片DM2016,,通過I2C接口與DM2016連接還可以實現(xiàn)加密控制和部分內(nèi)部寄存器上電配置,。DM2016芯片內(nèi)部具有128位密鑰區(qū),廠商可以一次寫入,,通過加密算法保護自己的軟件,,同時DM2016還具有1 024位E2PROM區(qū)域,DM1105的部分需配置的寄存器可以保存在此,,上電時將其讀入,,完成DM1105部分寄存器的配置。?
?
?
3.2 軟件實現(xiàn)?
??? 圖4為DM2016加密芯片在數(shù)字電視加密領域中加,、解密的認證流程,。從圖4可以看出,主系統(tǒng)芯片DM1105根據(jù)DM2016的返回值A隨機產(chǎn)生64位的隨機數(shù)作為明文(如加密前的數(shù)字電視信號)。該明文與主系統(tǒng)芯片DM1105程序里的密鑰通過調(diào)用加密庫來參與加密運算,得到運算結(jié)果暗文A,。主系統(tǒng)芯片DM1105將暗文A通過I2C總線傳到加密芯片DM2016,,然后DM2016使用與主系統(tǒng)芯片DM1105程序里的密鑰相同的密鑰對暗文A進行解密運算,將得到的運算結(jié)果與原來加密前的64位的隨機數(shù)進行比較,,如果一致則表示認證通過,,此時被加密的數(shù)字電視信號就可以被解密還原成正常信號,合法用戶就可以收看到相關(guān)的數(shù)字信號電視節(jié)目,;否則就表示認證失敗,,被加密的數(shù)字電視信號不能被解密還原成正常信號,用戶就不能收看到相關(guān)的電視節(jié)目,。?
?
?
??? 下面以BlowFish算法為例介紹加密算法在嵌入式主系統(tǒng)中的應用,。?
??? 32 位微處理器誕生后,BlowFish 算法在加密速度上超越了DES ,引起了人們的關(guān)注。BlowFish 算法沒有注冊專利,不需要授權(quán),可以免費使用,。在這里,,BlowFish算法用來加密64位的字符串,BlowFish算法使用兩個“盒”——ungigned long pbox[18]和unsigned long sbox[4,256],。BlowFish算法中,,有一個核心加密函數(shù):BF_En。該函數(shù)輸入64位信息,,運算后以64位密文的形式輸出,。用BlowFish算法加密信息,需要密鑰預處理和信息加密兩個過程,。以密鑰預處理為例說明如下:?
??? 密鑰預處理時,,BlowFish算法的源密鑰——pbox和sbox是固定的。要加密一個信息,需要自己選擇一個key,,用這個key對pbox和sbox進行變換,,得到下一步信息加密所要用的key_pbox和key_sbox。變化算法具體如下:?
??? (1) 用sbox填充key_sbox,。?
??? (2) 用自己選擇的key,,8個一組地去異或pbox,用異或結(jié)果填充key_pbox,。key可以循環(huán)使用,。例如:選的key是'abcdefghijklmn',則異或過程為:?
??? key_pbox[0]=pbox[0]^abcdefgh?
??? key_pbox[1]=pbox[1]^ijklmnab?
??? ……?
??? 如此循環(huán),,直到key_box填充完畢,。?
??? (3) 用BF_En加密一個全0的64位信息,用輸出的結(jié)果替換key_pbox[0]和key_pbox[1],。i=0,。 ?
??? (4) 用BF_En加密替換后的key_pbox[i],key_pbox[i+1], 用輸出替代key_pbox[i+2]和key_pbox[i+3]。?
??? (5) i+2,,繼續(xù)第(4)步,直到key_pbox全部被替換,。?
??? (6) 用key_pbox[16]和key_pbox[17]做首次輸入(相當于上面的全0的輸入),,用類似的方法,替換key_sbox 信息加密,。信息加密就是用函數(shù)把待加密信息x分成32位的兩部分:xL和xR,,再用BF_En函數(shù)對輸入信息進行變換。系統(tǒng)中采用C語言實現(xiàn),首先,定義sbox 和pbox 并初始化,將它們放入code中,。?
??? unsigned long code sbox[18] = {?
??? 0x243F6A88L , …, 0x8979FB1BL?
} ;?
??? unsigned long code pbox[ 4 ] [256 ] = {?
??? 0xD1310BA6L , …?
??? } ;?
??? 其次,定義兩個全局變量key_pbox和key_sbox,存儲初始化后的子密鑰,。?
??? unsigned long key_pbox[18] ;?
??? unsigned long key_sbox[4] [256] ;?
??? 再完成幾個函數(shù):?
??? void Blowfish_Init (unsigned char 3 key, int keyLen) ;?
??? //初始化子密鑰?
??? void Blowfish_Encrypt (unsigned long 3 xl, unsigned long 3 xr) ;?
??? //加密函數(shù)?
??? ……?
??? 最后,初始化單片機,用TESTKEY 作為密鑰進行初始化, 對算法進行測試。?
??? 隨著單片機系統(tǒng)越來越廣泛的應用,,其安全保密問題也越來越受到重視,。密碼學為其提供了正確的理論基礎。同時,,性能優(yōu)良的硬件(例如DM2016)是實現(xiàn)其安全保密的基礎,。二者缺一不可。?
參考文獻?
[1] AXELSON J.嵌入式Ethernet和Internet通信設計技術(shù)[M].駱麗,張岳強,譯.北京:北京航空航天大學出版社,2006.?
[2] 洪家平,,董武世.基于嵌入式系統(tǒng)的時分多址通信協(xié)議的實現(xiàn)[J].微計算機信息,,2005(7):32-33.?
[3] 王建校,楊建國,寧改娣,等. 51系列單片機及C51程序設計[M].北京:科學出版社, 2002.?
[4] 林凌,李剛,丁茹,等. 新型單片機接口器件與技術(shù)[M].西安:西安電子科技大學出版社,2005.