0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用debug authentication功能實(shí)現(xiàn)調(diào)試接口的禁用保護(hù)

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2022-09-29 08:59 ? 次閱讀

說在前面:站長在恩智浦技術(shù)社區(qū)看到了這篇文章,特分享給大家,但有些話還是要說在前面,本文介紹的方法也許適合在LPC55系列不帶S的產(chǎn)品中,但對于型號中具有S的產(chǎn)品,強(qiáng)烈建議使用debug authentication功能實(shí)現(xiàn)調(diào)試接口的禁用保護(hù)。
本文介紹的方法,不能防止通過其他手段(例如通信接口注入)借助代碼從內(nèi)部再次打開調(diào)試接口,只有debug authentication功能才能阻止這種情況。

在LPC早期發(fā)布的一些產(chǎn)品中,如LPC11xx、LPC17xx、LPC18xx、LPC40xx、LPC43xx、LPC8xx等,使用 CRP 實(shí)現(xiàn)代碼保護(hù),CRP有三種不同的安全級別:CRP1、CRP2和CRP3,各自的安全級別大體如圖1所示。

de4b24c2-3f8e-11ed-9e49-dac502259ad0.png 圖1

LPC55系列 (LPC55(S)0x, 1x,2x,6x) 不再使用CRP機(jī)制進(jìn)行安全保護(hù),而是用Secure boot,配置PFR(Protected Flash Region)等方式實(shí)現(xiàn)。其中,所有帶S (LPC55S) 的芯片支持Secure boot,如LPC55S28,LPC55S06等等。而非S系列產(chǎn)品,如LPC5506,LPC5528等等,只能通過配置FPR相關(guān)字段來實(shí)現(xiàn)代碼保護(hù)。

在CRP的三個(gè)安全等級中,CRP2最為常用。在使用CRP2時(shí),SWD的訪問將被阻止,所以SWD沒有辦法對Flash進(jìn)行讀寫或者擦除操作,ISP也無法對Flash內(nèi)容進(jìn)行讀取。此外,未經(jīng)授權(quán)的用戶并不能通過擦除部分Flash方式修改現(xiàn)有代碼,一旦設(shè)置為CRP2, 只有Mass Erase Flash后才能繼續(xù)正常使用,這樣便有效地阻止了他人讀取和修改代碼。

遺憾的是LPC55系列(LPC55(S)0x, 1x,2x,6x) 沒有和CRP2完全一樣的功能機(jī)制,這也是很多初識LPC55的用戶感到不適應(yīng)的地方。不過,若想實(shí)現(xiàn)與CRP2相似的功能我們可以通過配置CMPA實(shí)現(xiàn),即禁用ISP和關(guān)閉SWD調(diào)試口。

1.禁用ISP

客戶制造編程區(qū)域 (CMPA) 屬于PFR的一部分,通過配置BOOT_CFG來選擇ISP模式的啟用情況。 表1為CMPA中9E40字地址開始的字段表,ISP控制域已用紅色標(biāo)識(如表1),表2為ISP域的模式選擇,111為ISP禁用。若禁用ISP模式,設(shè)置BOOT_CFG=0b1110000。 de7756a0-3f8e-11ed-9e49-dac502259ad0.png 表1 df0343ae-3f8e-11ed-9e49-dac502259ad0.png 表2 ?

2. 關(guān)閉SWD調(diào)試接口

搭配使用 CC_SOCU_PIN 以及 CC_SOCU_DFLT 寄存器,用于定義模塊的SWD調(diào)試訪問權(quán)限。其中,CC_SOCU_PIN寄存器將調(diào)試域細(xì)分,不同位代表不同的調(diào)試域,對該位置1表示可操作。CC_SOCU_DFLT 寄存器設(shè)置可操作調(diào)試域的最終訪問級別,置1表示禁用。也就是說,將CC_SOCU_PIN及CC_SOCU_DFLT寄存器相對應(yīng)的位同時(shí)置1,便能禁用該模塊。如圖2。

df2a9f12-3f8e-11ed-9e49-dac502259ad0.png

圖2

兩寄存器低8位的每一位都代表某一子域,將兩寄存器的低8位全部置1,即可關(guān)閉全部子域的SWD訪問權(quán)限。

3.代碼中實(shí)現(xiàn)關(guān)閉/開啟ISP和SWD

以LPC5506為例,配置CMPA字段:

關(guān)閉ISP和SWD:

df7ea18e-3f8e-11ed-9e49-dac502259ad0.png

除上圖被標(biāo)紅的三處外,其余皆保持CMPA默認(rèn)值。

設(shè)置BOOT_CFG為0x70,禁用通過ISP 引腳進(jìn)入ISP 模式功能。

其余兩處0xFF分別為寄存器CC_SOCU_PIN和CC_SOCU_DFLT所在地址,即將調(diào)試訪問的子域全部關(guān)閉。

開啟ISP及SWD: dfbfc1f0-3f8e-11ed-9e49-dac502259ad0.png 除上圖被標(biāo)紅的三處外,其余皆保持CMPA默認(rèn)值。

設(shè)置BOOT_CFG為0x00,開啟自動(dòng)ISP模式。

其余兩處0x00分別為寄存器CC_SOCU_PIN和CC_SOCU_DFLT所在地址,對調(diào)試訪問的子域不做修改。

通過串口命令(1或0)開啟或關(guān)閉SWD及ISP功能:

e11591a6-3f8e-11ed-9e49-dac502259ad0.png

注意

1. CMPA的設(shè)置在Reset或重啟生效,一旦在CMPA里關(guān)閉了ISP和SWD, 在斷電前不要擦除或下載其他程序!否則開發(fā)板的ISP和SWD口將永遠(yuǎn)鎖死無法使用。
2. 從系統(tǒng)安全的角度考慮,客戶必須了解NXP不承諾可以防范所有的攻擊,客戶需對產(chǎn)品的安全性在系統(tǒng)級別進(jìn)行詳細(xì)評估并采取相應(yīng)安全措施。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8257

    瀏覽量

    149951
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67765
  • CMPA
    +關(guān)注

    關(guān)注

    0

    文章

    1

    瀏覽量

    1282

原文標(biāo)題:禁用ISP和SWD實(shí)現(xiàn)代碼保護(hù)

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    請問TC1782的調(diào)試接口可以禁用嗎?如果禁用了怎么開啟?

    如題,TC1782的調(diào)試接口可以禁用嗎?如果禁用了怎么開啟?
    發(fā)表于 02-20 06:20

    如何使用OPT_FLM文件實(shí)現(xiàn)解除讀保護(hù)功能?

    MDK工程里debug選項(xiàng)選擇燒錄的FLM文件就可以下載調(diào)試代碼,那OPT_FLM文件該怎么在工程里使用實(shí)現(xiàn)解除讀保護(hù)功能呢?直接在
    發(fā)表于 03-28 07:11

    請問ESP-prog是否可以和ESP32-s3適配,實(shí)現(xiàn)調(diào)試debug功能?

    請問ESP-prog 是否可以和ESP32-s3適配,實(shí)現(xiàn)調(diào)試debug功能?
    發(fā)表于 06-05 06:34

    調(diào)試選項(xiàng)已禁用

    我創(chuàng)建了一個(gè)基于CG3加密狗項(xiàng)目的項(xiàng)目,然后我不能開始調(diào)試。有人說我需要禁用BooTooLable,我試圖禁用它,然后我得到以下建筑錯(cuò)誤錯(cuò)誤:CDF.M005:CyDSFIT因錯(cuò)誤而中止,請?zhí)幚硭?/div>
    發(fā)表于 10-26 15:59

    如何解決STM32禁用SWD調(diào)試接口后不能下載程序的問題?

    如何解決STM32禁用SWD調(diào)試接口后不能下載程序的問題?
    發(fā)表于 01-27 07:53

    LPC55如何禁用ISP和SWD以利用代碼保護(hù)?

    功能機(jī)制,這受到許多用戶的質(zhì)疑。但是,如果我們需要實(shí)現(xiàn)與 CRP2 相同的功能,我們可以配置 CMPA 以禁用 ISP 和 SWD 調(diào)試
    發(fā)表于 05-22 08:02

    保護(hù)設(shè)備的調(diào)試接口介紹

    。如果TrustZone安全技術(shù)實(shí)現(xiàn),有時(shí),存儲在設(shè)備中的程序代碼。沒有適當(dāng)?shù)?b class='flag-5'>保護(hù)在調(diào)試接口的適當(dāng)位置,第三方可能會執(zhí)行各種攻擊,如: ?復(fù)制固件并竊取有價(jià)值的軟件評估,例如算法 ?訪
    發(fā)表于 08-02 08:21

    Vivado+FPGA:如何使用Debug Cores(ILA)在線調(diào)試

    在Vivado下在線調(diào)試是利用ILA進(jìn)行的,Xilinx官方給出了一個(gè)視頻,演示了如何使用Vivado的debug cores,下面我根據(jù)這個(gè)官方視頻的截圖的來演示一下: 官方的視頻使用的軟件版本為
    發(fā)表于 02-08 08:52 ?2316次閱讀

    STM32F1系列DEBUG調(diào)試功能需要配置嗎?

    STM32F1系列的DEBUG調(diào)試功能需要配置嗎?
    的頭像 發(fā)表于 03-01 13:57 ?3202次閱讀

    淺談STM32調(diào)試DEBUG相關(guān)知識

    說說STM32調(diào)試DEBUG相關(guān)知識
    的頭像 發(fā)表于 03-06 15:23 ?3963次閱讀

    配置VScode編譯、調(diào)試STM32(二)Cortex-Debug插件

    配置VScode編譯、調(diào)試STM32(二)Cortex-Debug插件
    發(fā)表于 12-01 12:21 ?17次下載
    配置VScode編譯、<b class='flag-5'>調(diào)試</b>STM32(二)Cortex-<b class='flag-5'>Debug</b>插件

    調(diào)試STM32時(shí)能下載程序但調(diào)試模式(debug)無法進(jìn)入main函數(shù)問題

    調(diào)試STM32時(shí)能下載程序但調(diào)試模式(debug)無法進(jìn)入main函數(shù)問題 今天調(diào)試程序時(shí),突然發(fā)現(xiàn)程序不正常,然后給板子插上JTAG調(diào)試
    發(fā)表于 12-01 13:36 ?17次下載
    <b class='flag-5'>調(diào)試</b>STM32時(shí)能下載程序但<b class='flag-5'>調(diào)試</b>模式(<b class='flag-5'>debug</b>)無法進(jìn)入main函數(shù)問題

    STM32(Cortex-M)內(nèi)核DEBUG調(diào)試接口知識

    學(xué)習(xí)STM32開發(fā),肯定少不了debug調(diào)試這一步驟。那么,本文帶你了解一下這個(gè)調(diào)試相關(guān)的知識。
    發(fā)表于 02-08 16:02 ?9次下載
    STM32(Cortex-M)內(nèi)核<b class='flag-5'>DEBUG</b><b class='flag-5'>調(diào)試</b><b class='flag-5'>接口</b>知識

    Fusion Debug調(diào)試系統(tǒng)的各項(xiàng)技術(shù)、指標(biāo)介紹

    昭曉Fusion Debug?是一款基于創(chuàng)新架構(gòu)的全面調(diào)試系統(tǒng),建立在芯華章全新的、自主開發(fā)的調(diào)試數(shù)據(jù)庫之上,并由創(chuàng)新的設(shè)計(jì)推理引擎和高性能分析引擎提供動(dòng)力,可輕松進(jìn)行信號連接跟蹤和根本原因分析
    的頭像 發(fā)表于 05-23 17:06 ?1140次閱讀

    這些Debug調(diào)試方法你知道多少?(上篇)

    在工作日里,如果你問驗(yàn)證工程師在干嘛,多半時(shí)間他/她會告訴你在Debug。換句話說,一般在驗(yàn)證周期內(nèi),工程師有超過一半的時(shí)間都消耗在了功能調(diào)試上,盡管這里面包含了驗(yàn)證工程師跟自己“作對”的時(shí)間,即驗(yàn)證環(huán)境或者測試用例本身存在bu
    的頭像 發(fā)表于 01-21 17:18 ?1427次閱讀
    這些<b class='flag-5'>Debug</b><b class='flag-5'>調(diào)試</b>方法你知道多少?(上篇)