說在前面:站長在恩智浦技術(shù)社區(qū)看到了這篇文章,特分享給大家,但有些話還是要說在前面,本文介紹的方法也許適合在LPC55系列不帶S的產(chǎn)品中,但對于型號中具有S的產(chǎn)品,強烈建議使用debug authentication功能實現(xiàn)調(diào)試接口的禁用保護。
本文介紹的方法,不能防止通過其他手段(例如通信接口注入)借助代碼從內(nèi)部再次打開調(diào)試接口,只有debug authentication功能才能阻止這種情況。
在LPC早期發(fā)布的一些產(chǎn)品中,如LPC11xx、LPC17xx、LPC18xx、LPC40xx、LPC43xx、LPC8xx等,使用 CRP 實現(xiàn)代碼保護,CRP有三種不同的安全級別:CRP1、CRP2和CRP3,各自的安全級別大體如圖1所示。
圖1
LPC55系列 (LPC55(S)0x, 1x,2x,6x) 不再使用CRP機制進行安全保護,而是用Secure boot,配置PFR(Protected Flash Region)等方式實現(xiàn)。其中,所有帶S (LPC55S) 的芯片支持Secure boot,如LPC55S28,LPC55S06等等。而非S系列產(chǎn)品,如LPC5506,LPC5528等等,只能通過配置FPR相關(guān)字段來實現(xiàn)代碼保護。
在CRP的三個安全等級中,CRP2最為常用。在使用CRP2時,SWD的訪問將被阻止,所以SWD沒有辦法對Flash進行讀寫或者擦除操作,ISP也無法對Flash內(nèi)容進行讀取。此外,未經(jīng)授權(quán)的用戶并不能通過擦除部分Flash方式修改現(xiàn)有代碼,一旦設(shè)置為CRP2, 只有Mass Erase Flash后才能繼續(xù)正常使用,這樣便有效地阻止了他人讀取和修改代碼。
遺憾的是LPC55系列(LPC55(S)0x, 1x,2x,6x) 沒有和CRP2完全一樣的功能機制,這也是很多初識LPC55的用戶感到不適應(yīng)的地方。不過,若想實現(xiàn)與CRP2相似的功能我們可以通過配置CMPA實現(xiàn),即禁用ISP和關(guān)閉SWD調(diào)試口。
1.禁用ISP
客戶制造編程區(qū)域 (CMPA) 屬于PFR的一部分,通過配置BOOT_CFG來選擇ISP模式的啟用情況。 表1為CMPA中9E40字地址開始的字段表,ISP控制域已用紅色標識(如表1),表2為ISP域的模式選擇,111為ISP禁用。若禁用ISP模式,設(shè)置BOOT_CFG=0b1110000。 表1 表2 ?
2. 關(guān)閉SWD調(diào)試接口
搭配使用 CC_SOCU_PIN 以及 CC_SOCU_DFLT 寄存器,用于定義模塊的SWD調(diào)試訪問權(quán)限。其中,CC_SOCU_PIN寄存器將調(diào)試域細分,不同位代表不同的調(diào)試域,對該位置1表示可操作。CC_SOCU_DFLT 寄存器設(shè)置可操作調(diào)試域的最終訪問級別,置1表示禁用。也就是說,將CC_SOCU_PIN及CC_SOCU_DFLT寄存器相對應(yīng)的位同時置1,便能禁用該模塊。如圖2。
圖2
兩寄存器低8位的每一位都代表某一子域,將兩寄存器的低8位全部置1,即可關(guān)閉全部子域的SWD訪問權(quán)限。
3.代碼中實現(xiàn)關(guān)閉/開啟ISP和SWD
以LPC5506為例,配置CMPA字段:
關(guān)閉ISP和SWD:
除上圖被標紅的三處外,其余皆保持CMPA默認值。
設(shè)置BOOT_CFG為0x70,禁用通過ISP 引腳進入ISP 模式功能。
其余兩處0xFF分別為寄存器CC_SOCU_PIN和CC_SOCU_DFLT所在地址,即將調(diào)試訪問的子域全部關(guān)閉。
開啟ISP及SWD: 除上圖被標紅的三處外,其余皆保持CMPA默認值。
設(shè)置BOOT_CFG為0x00,開啟自動ISP模式。
其余兩處0x00分別為寄存器CC_SOCU_PIN和CC_SOCU_DFLT所在地址,對調(diào)試訪問的子域不做修改。
通過串口命令(1或0)開啟或關(guān)閉SWD及ISP功能:
注意
1. CMPA的設(shè)置在Reset或重啟生效,一旦在CMPA里關(guān)閉了ISP和SWD, 在斷電前不要擦除或下載其他程序!否則開發(fā)板的ISP和SWD口將永遠鎖死無法使用。
2. 從系統(tǒng)安全的角度考慮,客戶必須了解NXP不承諾可以防范所有的攻擊,客戶需對產(chǎn)品的安全性在系統(tǒng)級別進行詳細評估并采取相應(yīng)安全措施。
-
接口
+關(guān)注
關(guān)注
33文章
8496瀏覽量
150834 -
代碼
+關(guān)注
關(guān)注
30文章
4744瀏覽量
68345 -
CMPA
+關(guān)注
關(guān)注
0文章
1瀏覽量
1285
原文標題:禁用ISP和SWD實現(xiàn)代碼保護
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論