使用LPC1700的代碼讀保護
概述
代碼讀保護是一種機制,使用戶能夠在不同層次的系統(tǒng)安全性保護他們的軟件代碼和硬件
LPC1700器件有三種不同的安全級別:CRP1,CRP2和CRP3。每個模式增加了安全級別,并限制任何設(shè)備訪問CRP3。在這個應(yīng)用筆記我們研究所有這些安全級別,以及如何使用它們。我們也提供一個例子來檢驗這些模式的。
會用到Keil的MCB1700評估板的Keil?uVision3和?Flash?Magic
注意:雖然本應(yīng)用筆記的例子經(jīng)過詳細的測試,但是仍然強烈建議初步配置器件的安全級別低于CRP3。一旦代碼被成功地保護于CRP3,將不能更改。
Flash?存取方法
一般來說,LPC1700閃存有兩種不同的方式訪問:
- 使用JTAG編程接口:這種方法可以用Debug工具下載代碼到器件并可以停止運行器件。
- 使用在系統(tǒng)編程(ISP):這種方法是通過引導(dǎo)加載器實現(xiàn),使用UART0串行端口。
理解?CRP安全級別
顧名思義,代碼讀保護(CRP)為用戶提供一個方法保護自己的代碼不被從Flash被讀取。這樣,設(shè)計人員阻止未經(jīng)授權(quán)的用戶獲得目標(biāo)代碼下載到另一個硬件平臺。這種情況可以使用CRP1(代碼閱讀保護?-?等級1),如果使用CRP2和CRP3,JTAG訪問將被阻止,所以JTAG沒有辦法讀/擦除/寫入閃存,ISP也無法讀取Flash內(nèi)容,只有Flash的更新可以執(zhí)行。
為進一步的提高安全等級,防止未經(jīng)授權(quán)的用戶更改代碼,例如使用ISP,或者部分更新Flash或者破解。可以使用CRP2,這種情況允許通過ISP?更新部分Flash,但是這種方式不允許通過未經(jīng)授權(quán)的用該修改現(xiàn)有代碼,因為沒有辦法修改Flash,除非首先刪除所有Flash的內(nèi)容,這樣現(xiàn)有代碼也將被丟失。
更高的安全級別是,在你的硬件上下載他自己的代碼,這就是硬件保護,能阻止其他人重復(fù)使用硬件,在這種情況下,可以防止用戶拉低P2.1腳進入ISP模式,這樣未授權(quán)的用戶不用通過ISP訪問Flash,這種方式提供了最高層的保護。需要注意的是一旦使用了CRP3就沒有辦法更新Flash了,但是內(nèi)部的用戶代碼可以調(diào)用ISP命令(即IAP),調(diào)用引導(dǎo)加載程序進入ISP模式。當(dāng)我們在調(diào)用ISP命令,這時候會打開CRP3的保護,這意味著會降級我們的保護到CRP2,在這個保護級別我們依然無法讀取Flash的內(nèi)容,但是可以下載新的代碼。所以當(dāng)你使用CRP3的保護時,建議用戶代碼應(yīng)該留一些這樣的“后門”,為了打破CRP3的保護。
聲明:本站部分內(nèi)容根據(jù)互聯(lián)網(wǎng)資料整理而成,若侵犯您的權(quán)益,請聯(lián)系我們,我們會盡快處理。