??? 摘 要: Flash存儲(chǔ)器有著功耗低,、數(shù)據(jù)容量大,、可整片擦除和分扇區(qū)擦除等優(yōu)點(diǎn),在嵌入式系統(tǒng)" title="嵌入式系統(tǒng)">嵌入式系統(tǒng)中得到了廣泛的應(yīng)用,,但其中所存儲(chǔ)程序代碼容易被讀取出來(lái),,易被非法拷貝,是其致命弱點(diǎn),。提出了一種加密技術(shù),,由PC機(jī)上運(yùn)行的預(yù)加密軟件" title="加密軟件">加密軟件和安全芯片" title="安全芯片">安全芯片兩部分組成,,可以有效地防范當(dāng)前各種針對(duì)嵌入式計(jì)算機(jī)的軟件程序的惡意竊取,牢牢鎖住Flash存儲(chǔ)器中的嵌入式軟件" title="嵌入式軟件">嵌入式軟件和數(shù)據(jù),,使得知識(shí)竊賊無(wú)法得逞,。
??? 關(guān)鍵詞: Flash? 嵌入式系統(tǒng)? 加密? Verilog
?
??? Flash作為當(dāng)今嵌入式設(shè)備中的主流存儲(chǔ)器件,有著極其廣泛的應(yīng)用前景,,但它所存儲(chǔ)的數(shù)據(jù)可以被輕易讀取出來(lái),,很少有加密保護(hù)功能,成為制約其應(yīng)用的致命缺點(diǎn),。當(dāng)前針對(duì)Flash中數(shù)據(jù)進(jìn)行加密的方法主要有兩種,,一種是對(duì)Flash中所存儲(chǔ)的數(shù)據(jù)進(jìn)行混亂加密,另一種是對(duì)Flash提供的器件唯一識(shí)別號(hào)進(jìn)行加密,。這兩種加密方式都有著致命的缺陷,,使用硬件總線偵聽(tīng)法和靜態(tài)反匯編跟蹤方法可以成功破解。針對(duì)這種現(xiàn)狀,,根據(jù)Flash技術(shù)的特點(diǎn),,本文設(shè)計(jì)一套完善的加密機(jī)制,提出一個(gè)系統(tǒng)化的解決方案,,以此來(lái)有效地對(duì)抗現(xiàn)有的破解手段,,從而大大增強(qiáng)嵌入式系統(tǒng)的安全性。
??? 本文提出的Flash加密存儲(chǔ)方案,,獨(dú)立于需要進(jìn)行加密的嵌入式" title="的嵌入式">的嵌入式系統(tǒng),,它不改變嵌入式軟件的功能和結(jié)構(gòu),不改變?cè)绦蚝蛿?shù)據(jù)的組織方式,,密文與明文數(shù)據(jù)量相同,,無(wú)需增減原存儲(chǔ)空間,無(wú)需功能性更改硬件電路,。
1 加密存儲(chǔ)方案構(gòu)成
??? Flash加密存儲(chǔ)方案由兩部分構(gòu)成:PC機(jī)上運(yùn)行的預(yù)加密軟件和硬件電路中隔離CPU與Flash存儲(chǔ)器的安全芯片,。預(yù)加密軟件運(yùn)行在PC機(jī)的Windows操作系統(tǒng)上,對(duì)嵌入式軟件進(jìn)行加密,,生成密文形式的數(shù)據(jù),,并燒錄寫(xiě)入Flash,供嵌入式系統(tǒng)使用,。預(yù)加密軟件完全獨(dú)立于嵌入式軟件,,不改變嵌入式軟件的任何功能和結(jié)構(gòu)框架,僅使用密鑰對(duì)其進(jìn)行加密操作,,生成密文形式的數(shù)據(jù),。安全芯片內(nèi)嵌于嵌入式系統(tǒng)的硬件電路中,它跨接在CPU與Flash之間,隔離兩端的數(shù)據(jù)總線,、地址總線,、控制總線,任何針對(duì)Flash的數(shù)據(jù)操作都要經(jīng)過(guò)安全芯片的攔截過(guò)濾,。Flash中的數(shù)據(jù)是以密文的方式存在的,,在送給CPU執(zhí)行之前,需由安全芯片解密,;當(dāng)CPU有數(shù)據(jù)需要存儲(chǔ)于Flash時(shí),,安全芯片先對(duì)其進(jìn)行加密,再送給Flash存儲(chǔ),。整個(gè)加密體系如圖1所示。
?????????????????????????????????
2 預(yù)加密軟件設(shè)計(jì)
??? 預(yù)加密軟件運(yùn)行在PC機(jī)的Windows操作系統(tǒng)上,,它使用密鑰,,將明文形式的嵌入式軟件加密成密文形式的數(shù)據(jù),以二進(jìn)制可燒錄文件的形式寫(xiě)入Flash存儲(chǔ)器,。該軟件在嵌入式軟件燒錄寫(xiě)入Flash芯片之前對(duì)其進(jìn)行加密處理,,所以稱之為預(yù)加密軟件。預(yù)加密軟件不改變嵌入式軟件的功能和結(jié)構(gòu)框架,,獨(dú)立于嵌入式軟件的開(kāi)發(fā),,作為第三方軟件加密解決方案提供給嵌入式微計(jì)算機(jī)的設(shè)計(jì)者使用。
??? 預(yù)加密軟件和安全芯片在時(shí)間使用順序上和空間使用場(chǎng)合上都沒(méi)有直接聯(lián)系,,密鑰是它們之間唯一的邏輯紐帶,,使得預(yù)加密軟件處理過(guò)的嵌入式軟件和數(shù)據(jù)能夠被安全芯片所識(shí)別,使得安全芯片動(dòng)態(tài)加密寫(xiě)入Flash存儲(chǔ)器中的數(shù)據(jù)和預(yù)加密軟件處理過(guò)的已經(jīng)存在于Flash存儲(chǔ)器中的數(shù)據(jù)在格式與加密方式上保持一致,。密鑰以硬件電路的形式固化在安全芯片中,,使得安全芯片與密鑰一一對(duì)應(yīng)。同樣的安全芯片,,因?yàn)槊荑€不同,,不能相互替換,即便破譯了安全芯片,,但每一片安全芯片均采用不同的密鑰,,只能與預(yù)加密軟件處理過(guò)的密鑰一致的嵌入式軟件配合使用,使得這種破譯沒(méi)有任何意義,,從而保護(hù)Flash存儲(chǔ)器中的嵌入式軟件和數(shù)據(jù)不被竊取,。
3 安全芯片設(shè)計(jì)
??? 安全芯片處于CPU和Flash之間,如圖2所示,。它隔離CPU總線與Flash 的接入總線,,控制Flash存儲(chǔ)器的數(shù)據(jù)出入,任何對(duì)Flash存儲(chǔ)器的數(shù)據(jù)讀取和寫(xiě)入都要經(jīng)過(guò)安全芯片的甄別和處理,,確保Flash中的數(shù)據(jù)始終以密文形式存在,。安全芯片同時(shí)加密地址總線和數(shù)據(jù)總線,。數(shù)據(jù)操作滿足可讀可寫(xiě),數(shù)據(jù)可在CPU與Flash間雙向傳輸,,CPU可在運(yùn)行中寫(xiě)入,、修改、刪除Flash中密文數(shù)據(jù),,對(duì)特定密文數(shù)據(jù)的操作不影響其他密文數(shù)據(jù)的完整性,。
?????????????????????????????????
3.1 安全芯片內(nèi)部結(jié)構(gòu)設(shè)計(jì)
??? 安全芯片內(nèi)部由六個(gè)模塊組成:地址計(jì)數(shù)模塊、 命令甄別模塊,、密碼機(jī)模塊,、地址置換模塊、加密/解密模塊,、內(nèi)部控制模塊,,如圖3所示。
??????????????????????????????????
??? 命令甄別模塊負(fù)責(zé)區(qū)分Flash存儲(chǔ)器的訪問(wèn)操作模式,,若是數(shù)據(jù)訪問(wèn),,則通知加密/解密模塊和地址置換模塊進(jìn)行加密操作。
??? 密碼機(jī)模塊負(fù)責(zé)生成本文中的偽隨機(jī)密鑰,,供加密/解密模塊使用,,以便有效抗擊唯密文攻擊方法和頻率分析攻擊。
??? 當(dāng)CPU讀取Flash中的數(shù)據(jù)時(shí),,加密/解密模塊使用密鑰將密文數(shù)據(jù)解密成可執(zhí)行的指令和運(yùn)行所需的數(shù)據(jù),;當(dāng)CPU寫(xiě)入數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí),加密/解密使用密鑰對(duì)數(shù)據(jù)進(jìn)行加密,。
??? 地址置換模塊對(duì)數(shù)據(jù)的地址進(jìn)行置換加密,,使得原始的指令與數(shù)據(jù)所存儲(chǔ)的地址變換為另一個(gè)地址。
??? 地址計(jì)數(shù)模塊用于抵抗來(lái)自CPU端的讀取轉(zhuǎn)存破解方法,。
??? 內(nèi)部控制模塊主要為其他各個(gè)模塊提供控制信號(hào),。
??? 當(dāng)CPU讀取Flash中的指令與數(shù)據(jù)時(shí),安全芯片根據(jù)CPU的控制信號(hào),,讀取Flash中的密文,,使用與加密軟件相同的密鑰進(jìn)行解密操作,生成明文后送給CPU,;當(dāng)需要寫(xiě)入Flash時(shí),,安全芯片使用密鑰對(duì)該數(shù)據(jù)加密,再寫(xiě)入Flash,。在沒(méi)有安全芯片配合使用的情況下,,讀出Flash中的密文形式的嵌入式軟件沒(méi)有任何實(shí)際意義,既無(wú)法正確執(zhí)行,也無(wú)法進(jìn)行軟件功能分析,。當(dāng)嵌入式系統(tǒng)有數(shù)據(jù)需要寫(xiě)入Flash存儲(chǔ)器保存時(shí),,安全芯片在總線上截取這些數(shù)據(jù),使用與預(yù)加密軟件相同的密鑰加密,,送Flash存儲(chǔ)器存儲(chǔ),。
3.2 安全芯片設(shè)計(jì)實(shí)現(xiàn)
??? 本文中設(shè)計(jì)的安全芯片使用Verilog語(yǔ)言進(jìn)行功能仿真和功能驗(yàn)證,使用FPGA芯片進(jìn)行硬件在板功能測(cè)試,。安全芯片的硬件實(shí)現(xiàn)直接使用FPGA芯片作為硬件載體,,由Verilog語(yǔ)言完成安全芯片的功能實(shí)現(xiàn)、仿真與驗(yàn)證,。
??? Am29F160D是本文數(shù)據(jù)加密存儲(chǔ)系統(tǒng)的Flash存儲(chǔ)器設(shè)計(jì)藍(lán)本,, Am29F160D支持的最快總線讀寫(xiě)速度為70ns,而其他的主流Flash存儲(chǔ)器,,如Intel公司的28F320J5,,其總線讀速度為120ns,寫(xiě)速度為150ns,。考慮到當(dāng)今嵌入式系統(tǒng)中,,典型總線讀寫(xiě)時(shí)鐘頻率為5MHz,,兼容其他較為低速Flash存儲(chǔ)器的總線速度,所以安全芯片的總線讀寫(xiě)時(shí)鐘頻率取為5MHz,,足以滿足嵌入式微型計(jì)算機(jī)的數(shù)據(jù)讀寫(xiě)速度,。
??? 本文所設(shè)計(jì)的嵌入式加密機(jī)制,已經(jīng)成功地使用在某款車載GPS的設(shè)計(jì)中,,取得了令人滿意的效果,。雖然加密和解密的過(guò)程降低嵌入式系統(tǒng)的運(yùn)行速度,但隨著硬件技術(shù)和軟件設(shè)計(jì)技術(shù)的進(jìn)步,,以少量降低性能換取更高的安全性與穩(wěn)定性是完全可以接受的,,它在軍事、通信,、航天航空等高附加值的高科技嵌入式產(chǎn)品中,,有著極為廣闊的前景。
參考文獻(xiàn)
[1] ?SUTTER E.嵌入式系統(tǒng)固件解密[M]. 張曉琳譯. 北京:電子工業(yè)出版社,,2003.
[2] ?章照止.現(xiàn)代密碼學(xué)基礎(chǔ)[M].北京:北京郵電大學(xué)出版社.2004.
[3] ?FERGUSON N, SCHNEIER B. 密碼學(xué)實(shí)踐[M].北京:電子工業(yè)出版社,2005.
[4] ?GEE S. Basic methods of Cryptography[M]. Cambridge?University Press,1998.
[5] ?MOLLIN R A. An introduction to cryptography [M].?Chapman&Hall/CRC Press, 2001.
[6] ?KOBLITZ N. A course in number theory and cryptography[M]. World Publishing Corp,1994.
[7] ?LUBY M. Pseudorandomness and cryptography applications[M]. Princeton University Press,1996.
[8] ?郭春霞,,裘雪紅. 嵌入式系統(tǒng)安全的研究與設(shè)計(jì)[J].?電子科技,2005,(8).