最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

信息安全專題 | 代碼保護(1)使用STM32H7新特性保護片上代碼的機密性

2021-03-03 09:55 作者:電堂科技  | 我要投稿

談到STM32的高性能家族產(chǎn)品,大家已經(jīng)對STM32F2/F4/F7耳熟能詳。之后的STM32H7系列繼承和發(fā)展了高性能產(chǎn)品家族的特性。然鵝,如何使用STM32H7進行安全存儲、代碼保護?你造嗎?


使用STM32H7 安全用戶存儲區(qū)控制調(diào)試端口訪問、保護片上代碼安全

使用STM32H7新特性保護片上代碼的機密性包括:

  • 調(diào)試端口連接可控:在RDP0條件下也可實現(xiàn)對調(diào)試端口的保護,上電調(diào)試接口即不可連接(具有類似RDP2的效果);比RDP2更靈活,可以由用戶代碼控制調(diào)試端口訪問權(quán)限,實現(xiàn)安全調(diào)試,并保留修改選項字節(jié)的 可能性

  • 用戶片上Flash進一步隔離-保護敏感代碼不被木馬程序攻擊

  • 安全STM32H7可以實現(xiàn)以下功能:安全啟動、安全用戶存儲區(qū)、安全調(diào)試

STM32H7 硬件安全特性與機制主要包括:

  • 安全STM32H7的啟動路徑

  • 安全STM32H7的 “安全用戶存儲區(qū)”

  • 安全STM32H7的安全調(diào)試


安全STM32H7 啟動流程

  • 安全STM32H7新增選項字節(jié):SECURITY、SEC_AREA

  • 系統(tǒng)復(fù)位,裝載選項字節(jié)的過程中,如果SECURITY置位,則無論BOOT引腳電平以及 BOOTADDR選項字節(jié)的內(nèi)容,一定從位于片上系統(tǒng)Flash的RSS啟動

  • RSS會檢查SEC_AREA的內(nèi)容,是否已經(jīng)有指定的有效區(qū)域(有效區(qū)域是指起始地址小于 結(jié)束地址)。如果區(qū)域有效,則跳轉(zhuǎn)到它所指向的用戶Flash上的“安全用戶存儲區(qū)”執(zhí)行。如果區(qū)域無效,則按照常規(guī)啟動流程,根據(jù)BOOT引腳電平,選擇從BOOTADDR0或 BOOTADDR1指向的地址啟動

  • BOOTADDR0和BOOTADDR1可以填寫[0x0,0x3FFF 0000]范圍內(nèi)的任意地址。RDP2情況 下,系統(tǒng)只能從片上用戶Flash啟動。如果BOOTADDR0或者BOOTADDR1指向的不是片上 用戶Flash,系統(tǒng)會強制從0x0800 0000啟動

  • SECURITY=1時,系統(tǒng)復(fù)位時調(diào)試端口關(guān)閉

  • 運行在RSS和安全用戶存儲區(qū)時,調(diào)試端口關(guān)閉


安全用戶閃存區(qū)

上電復(fù)位狀態(tài):

  • 只要使能Security并設(shè)置了安全用戶閃存區(qū)的有效范圍,則總是跳轉(zhuǎn)到該區(qū)域的首地址運行

  • 在這個區(qū)域(region A)內(nèi)執(zhí)行的時候,無法通過Debug連接芯片(即使RDP0狀態(tài)下)

  • 復(fù)位和運行在region A的時候,芯片處于“安全訪問模式”

從安全用戶閃存區(qū),不使能對它的保護,直接跳轉(zhuǎn)到普通UserFlash區(qū)(region B)

  • 處于region B的PC依舊可以訪問安全用戶閃存區(qū)(region A)內(nèi)容

  • 在region B內(nèi)執(zhí)行的時候,仍然無法通過Debug連接芯片(即使RDP0狀態(tài)下)

  • 運行在region B的時候,雖然不在安全用戶閃存區(qū)范圍內(nèi),仍然處于“安全訪問模式”

從安全用戶閃存區(qū),開啟對它保護后,再跳轉(zhuǎn)到普通UserFlash區(qū)(region B)

  • 處于region B的PC無法訪問安全用戶閃存區(qū)(region A)內(nèi)容,直到下一次復(fù)位后PC在region A執(zhí)行

  • 在region B內(nèi)執(zhí)行時,調(diào)試連接是可能的 (取決于跳轉(zhuǎn)之前應(yīng)用代碼是否人為關(guān)閉了調(diào)試端口)

  • 運行在region B的時候,不再處于“安全訪問模式”


安全用戶閃存區(qū)的設(shè)置和撤銷

  • 芯片出廠時選項字節(jié)的缺省設(shè)置:SECURITY=0,“安全用戶閃存區(qū)”是無效區(qū)域

  • 設(shè)置 “安全用戶閃存區(qū)”必須在SECURITY置位之后;否則設(shè)置無效

  • “安全用戶閃存區(qū)”有效的情況下,或者PCROP區(qū)域有效的情況下, SECURITY的清 零無法成功;需要先把這兩種區(qū)域都設(shè)置成無效,再對SECRUITY清零

  • “安全用戶閃存區(qū)”的撤銷,只需要運行在RSS或“安全用戶閃存區(qū)” 的代碼,把選項字節(jié)在Flash接口中對應(yīng)的寄存器,其起始地址設(shè)置成大于結(jié)束地址,并讓選項字節(jié)生效即可

  • PCROP區(qū)域的撤銷,需要通過RDP降級和PCROP區(qū)域無效,同時進行才能完成

安全STM32H7 代碼保護示例

安全調(diào)試?yán)毯喗?/strong>

  • 解壓縮軟件包,使用熟悉的IDE分別打開Boot和App兩個工程,編譯后下載

  • 打開串口調(diào)試助手:115200波特率,8bit數(shù)據(jù)位,1bit停止位;無校驗位,無流控

  • STM32H753-Nucleo板:按下復(fù)位鍵,松開,程序運行;松開復(fù)位鍵時保持用戶按鍵按下;根據(jù)屏幕菜單顯示操作

  • 使用STM32CubeProgramer 的”hotplug”和”under reset”方式嘗試連接目標(biāo)芯片,以驗證調(diào)試端口的保護效果;以及對隔離區(qū)內(nèi)容的保護


▲ Boot工程 菜單


▲ App工程


▲ 帶身份認證的調(diào)試使能控制


▲ 安全調(diào)試?yán)蹋喊踩脩糸W存區(qū)的設(shè)置和撤銷

注意事項

  • SEC_AREA 沒有安全區(qū)時,只能由RSS來初始化;有了安全區(qū)后,運行在其中的代碼可以修改 SEC_AREA ;STM32CubeProgrammer 是無法操作SEC_AREA 成功的

  • SECURITY=1,IDE下載可能會失敗;要么從STM32CubeProgramer連接后,清零SECURITY;要么修改工程的復(fù)位連接方式

小結(jié)

STM32H7通過以下兩方面對片上代碼施加保護:

  • 保護Bootloader里的敏感操作和數(shù)據(jù):Bootloader運行時,調(diào)試不可連接;執(zhí)行普通代碼時,打開調(diào)試端口;普通代碼 無法訪問Bootloader區(qū)域內(nèi)容

  • 保護片上代碼不被普通用戶調(diào)試,僅開放給持有密鑰的特定用戶:安全用戶區(qū)里內(nèi)容可以被其他區(qū)域代碼訪問;打開調(diào)試后,安全區(qū)代碼無法被調(diào)試訪問


信息安全專題 | 代碼保護(1)使用STM32H7新特性保護片上代碼的機密性的評論 (共 條)

分享到微博請遵守國家法律
新干县| 深圳市| 元阳县| 安国市| 甘德县| 灵丘县| 耒阳市| 怀来县| 电白县| 尼勒克县| 宁乡县| 长治县| 凤庆县| 灌云县| 洮南市| 阳春市| 都安| 枞阳县| 彰化市| 高密市| 扶余县| 盘锦市| 阳山县| 伊宁市| 通化县| 祁阳县| 蚌埠市| 英超| 海门市| 马公市| 香格里拉县| 黄石市| 柳林县| 晋中市| 札达县| 巴彦县| 云安县| 昌乐县| 拜城县| 纳雍县| 电白县|