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