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