一種C55x DSP的串行引導與程序加密方法
2 自舉和加解密實(shí)現
2.1 硬件設計
SST25LF080A是SST公司生產(chǎn)的SPI串口8 MbitFlash,支持SPI的Mode0和Mode1方式,其可靠性高,最大時(shí)鐘頻率為33 MHz,供電電壓為3.3 V,可重復寫(xiě)10萬(wàn)次以上。采用8腳SOIC封裝形式,與TMS320VC5509A的硬件連接如圖1所示。本文引用地址:http://dyxdggzs.com/article/148594.htm
2.2 二次引導技術(shù)
DSP本身所帶的Bootloader不能實(shí)現加密功能,因此對于Flash里的程序無(wú)法起到保護作用。所以在Bootloader的基礎上,還需要進(jìn)行二次引導,即通過(guò)DSP內部ROM同化Bootloader,首先引導另一個(gè)引導程序,該程序是由用戶(hù)自行編寫(xiě),功能與ROM固化的Bootloader類(lèi)似,但增加了對程序代碼加解密和校驗等功能,并在加載結束后,把PC值置于實(shí)際程序的入口地址,使程序轉至實(shí)際程序。
2.3 程序加密與解密
對程序的初始保護,即把最終運行的程序代碼寫(xiě)入Flash芯片之前,對代碼進(jìn)行加密處理。過(guò)程如下,DSP的一次引導過(guò)程只加載儲存在SST25LF080A中的加解密程序,需要向Flash寫(xiě)入時(shí),讀取DSP自身的ID號作為密鑰,通過(guò)一定的加密算法將二次引導的程序進(jìn)行加密處理后再寫(xiě)入,這樣,SST25LF080A中就不存在明文形式的代碼。
DSP的一次引導過(guò)程只加載儲存在SST25LF080A中的加解密程序,二次引導則加載SST25LF080A中已經(jīng)加密的代碼,然后讀取DSP自身的ID號作為密鑰進(jìn)行解密,加載結束和完成解密后再繼續運行。
為防止破譯者直接修改讀取ID部分的引導代碼,改為使用固定ID,還必須基于數據驅動(dòng)進(jìn)行連續二次保護。它的處理對象是一些重要參數或變量,通過(guò)讀取引導程序的校驗值和DSP本身ID,完成對這些參數或變量“加鎖”,讓它們以密文形式存在于程序中。這樣即使完成了對引導程序的簡(jiǎn)單破譯,也無(wú)法使程序正常運行。
經(jīng)過(guò)處理,可以有效地避免通過(guò)讀取Flash內容直接破譯,或者直接讀取Flash內容后在不同產(chǎn)品中反復利用的做法,對保護知識產(chǎn)權有著(zhù)重要的意義。對于DSP代碼加密,可以根據需要的加密復雜程度進(jìn)行算法選擇,實(shí)現框圖如圖2所示。
3 結束語(yǔ)
針對TMS320VC5509A和SST25LF080A,使用串行方式實(shí)現程序自舉引導的二次引導加載,提出基于該方式的程序加密方法。該方法不僅可用于TMS320VC5509ADSP中,其他類(lèi)似高速微處理器系統的引導加載方案中也可得到應用,實(shí)現了靈活的程序加載。
評論