??? 摘 要: Flash存儲(chǔ)器有著功耗低、數(shù)據(jù)容量大,、可整片擦除和分扇區(qū)擦除等優(yōu)點(diǎn),,在嵌入式系統(tǒng)" title="嵌入式系統(tǒng)">嵌入式系統(tǒng)中得到了廣泛的應(yīng)用,,但其中所存儲(chǔ)程序代碼容易被讀取出來,易被非法拷貝,,是其致命弱點(diǎn),。提出了一種加密技術(shù),由PC機(jī)上運(yùn)行的預(yù)加密軟件" title="加密軟件">加密軟件和安全芯片" title="安全芯片">安全芯片兩部分組成,,可以有效地防范當(dāng)前各種針對(duì)嵌入式計(jì)算機(jī)的軟件程序的惡意竊取,,牢牢鎖住Flash存儲(chǔ)器中的嵌入式軟件" title="嵌入式軟件">嵌入式軟件和數(shù)據(jù),使得知識(shí)竊賊無法得逞,。
??? 關(guān)鍵詞: Flash? 嵌入式系統(tǒng)? 加密? Verilog
?
??? Flash作為當(dāng)今嵌入式設(shè)備中的主流存儲(chǔ)器件,,有著極其廣泛的應(yīng)用前景,但它所存儲(chǔ)的數(shù)據(jù)可以被輕易讀取出來,,很少有加密保護(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ài)反匯編跟蹤方法可以成功破解,。針對(duì)這種現(xiàn)狀,根據(jù)Flash技術(shù)的特點(diǎn),,本文設(shè)計(jì)一套完善的加密機(jī)制,,提出一個(gè)系統(tǒng)化的解決方案,以此來有效地對(duì)抗現(xiàn)有的破解手段,,從而大大增強(qiáng)嵌入式系統(tǒng)的安全性,。
??? 本文提出的Flash加密存儲(chǔ)方案,獨(dú)立于需要進(jìn)行加密的嵌入式" title="的嵌入式">的嵌入式系統(tǒng),,它不改變嵌入式軟件的功能和結(jié)構(gòu),,不改變?cè)绦蚝蛿?shù)據(jù)的組織方式,密文與明文數(shù)據(jù)量相同,,無需增減原存儲(chǔ)空間,,無需功能性更改硬件電路,。
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ù),并燒錄寫入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)過安全芯片的攔截過濾,。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)制可燒錄文件的形式寫入Flash存儲(chǔ)器。該軟件在嵌入式軟件燒錄寫入Flash芯片之前對(duì)其進(jìn)行加密處理,,所以稱之為預(yù)加密軟件,。預(yù)加密軟件不改變嵌入式軟件的功能和結(jié)構(gòu)框架,獨(dú)立于嵌入式軟件的開發(fā),,作為第三方軟件加密解決方案提供給嵌入式微計(jì)算機(jī)的設(shè)計(jì)者使用,。
??? 預(yù)加密軟件和安全芯片在時(shí)間使用順序上和空間使用場(chǎng)合上都沒有直接聯(lián)系,密鑰是它們之間唯一的邏輯紐帶,,使得預(yù)加密軟件處理過的嵌入式軟件和數(shù)據(jù)能夠被安全芯片所識(shí)別,,使得安全芯片動(dòng)態(tài)加密寫入Flash存儲(chǔ)器中的數(shù)據(jù)和預(yù)加密軟件處理過的已經(jīng)存在于Flash存儲(chǔ)器中的數(shù)據(jù)在格式與加密方式上保持一致。密鑰以硬件電路的形式固化在安全芯片中,,使得安全芯片與密鑰一一對(duì)應(yīng),。同樣的安全芯片,,因?yàn)槊荑€不同,不能相互替換,,即便破譯了安全芯片,,但每一片安全芯片均采用不同的密鑰,只能與預(yù)加密軟件處理過的密鑰一致的嵌入式軟件配合使用,,使得這種破譯沒有任何意義,,從而保護(hù)Flash存儲(chǔ)器中的嵌入式軟件和數(shù)據(jù)不被竊取。
3 安全芯片設(shè)計(jì)
??? 安全芯片處于CPU和Flash之間,,如圖2所示,。它隔離CPU總線與Flash 的接入總線,控制Flash存儲(chǔ)器的數(shù)據(jù)出入,,任何對(duì)Flash存儲(chǔ)器的數(shù)據(jù)讀取和寫入都要經(jīng)過安全芯片的甄別和處理,,確保Flash中的數(shù)據(jù)始終以密文形式存在。安全芯片同時(shí)加密地址總線和數(shù)據(jù)總線,。數(shù)據(jù)操作滿足可讀可寫,,數(shù)據(jù)可在CPU與Flash間雙向傳輸,CPU可在運(yùn)行中寫入,、修改,、刪除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ǔ)器的訪問操作模式,若是數(shù)據(jù)訪問,,則通知加密/解密模塊和地址置換模塊進(jìn)行加密操作,。
??? 密碼機(jī)模塊負(fù)責(zé)生成本文中的偽隨機(jī)密鑰,供加密/解密模塊使用,,以便有效抗擊唯密文攻擊方法和頻率分析攻擊,。
??? 當(dāng)CPU讀取Flash中的數(shù)據(jù)時(shí),加密/解密模塊使用密鑰將密文數(shù)據(jù)解密成可執(zhí)行的指令和運(yùn)行所需的數(shù)據(jù),;當(dāng)CPU寫入數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí),,加密/解密使用密鑰對(duì)數(shù)據(jù)進(jìn)行加密。
??? 地址置換模塊對(duì)數(shù)據(jù)的地址進(jìn)行置換加密,,使得原始的指令與數(shù)據(jù)所存儲(chǔ)的地址變換為另一個(gè)地址,。
??? 地址計(jì)數(shù)模塊用于抵抗來自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)需要寫入Flash時(shí),安全芯片使用密鑰對(duì)該數(shù)據(jù)加密,,再寫入Flash,。在沒有安全芯片配合使用的情況下,讀出Flash中的密文形式的嵌入式軟件沒有任何實(shí)際意義,,既無法正確執(zhí)行,,也無法進(jìn)行軟件功能分析。當(dāng)嵌入式系統(tǒng)有數(shù)據(jù)需要寫入Flash存儲(chǔ)器保存時(shí),,安全芯片在總線上截取這些數(shù)據(jù),,使用與預(yù)加密軟件相同的密鑰加密,,送Flash存儲(chǔ)器存儲(chǔ),。
3.2 安全芯片設(shè)計(jì)實(shí)現(xiàn)
??? 本文中設(shè)計(jì)的安全芯片使用Verilog語言進(jìn)行功能仿真和功能驗(yàn)證,使用FPGA芯片進(jìn)行硬件在板功能測(cè)試,。安全芯片的硬件實(shí)現(xiàn)直接使用FPGA芯片作為硬件載體,,由Verilog語言完成安全芯片的功能實(shí)現(xiàn)、仿真與驗(yàn)證,。
??? Am29F160D是本文數(shù)據(jù)加密存儲(chǔ)系統(tǒng)的Flash存儲(chǔ)器設(shè)計(jì)藍(lán)本,, Am29F160D支持的最快總線讀寫速度為70ns,而其他的主流Flash存儲(chǔ)器,,如Intel公司的28F320J5,,其總線讀速度為120ns,寫速度為150ns,??紤]到當(dāng)今嵌入式系統(tǒng)中,典型總線讀寫時(shí)鐘頻率為5MHz,,兼容其他較為低速Flash存儲(chǔ)器的總線速度,,所以安全芯片的總線讀寫時(shí)鐘頻率取為5MHz,足以滿足嵌入式微型計(jì)算機(jī)的數(shù)據(jù)讀寫速度,。
??? 本文所設(shè)計(jì)的嵌入式加密機(jī)制,,已經(jīng)成功地使用在某款車載GPS的設(shè)計(jì)中,取得了令人滿意的效果,。雖然加密和解密的過程降低嵌入式系統(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).