《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 嵌入式系統(tǒng)加密技術(shù)在數(shù)字電視中的應(yīng)用

嵌入式系統(tǒng)加密技術(shù)在數(shù)字電視中的應(yīng)用

2009-03-16
作者:洪家平

??? 摘? 要: 為了使更多的嵌入式系統(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.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。