《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > Kinetis系列MCU的保密和保護特性剖析
Kinetis系列MCU的保密和保護特性剖析
2017年微型機與應用第3期
王玉麗
蘇州工業園區職業技術學院,江蘇 蘇州 215123
摘要: 為應對安全攻擊,Kinetis系列MCU提供了保密和Flash保護特性、UID特性等很多機制,但這些機制較為復雜且必須深度掌握,才能滿足應用的安全設計要求。針對這一問題,文章對其保密和保護特性進行了深入研究,從工作機理、應用場合、配置方法、注意事項等多方面進行了分析和比對,為靈活應用這些機制奠定了基礎。
關鍵詞: kinetis MCU Flash UID
Abstract:
Key words :

  王玉麗

  (蘇州工業園區職業技術學院,江蘇 蘇州 215123)

       摘要:為應對安全攻擊,Kinetis系列MCU提供了保密和Flash保護特性、UID特性等很多機制,但這些機制較為復雜且必須深度掌握,才能滿足應用的安全設計要求。針對這一問題,文章對其保密和保護特性進行了深入研究,從工作機理、應用場合、配置方法、注意事項等多方面進行了分析和比對,為靈活應用這些機制奠定了基礎。

  關鍵詞:Kinetis;MCU;Flash;UID

  中圖分類號:TP3文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.03.008

  引用格式:王玉麗.Kinetis系列MCU的保密和保護特性剖析[J].微型機與應用,2017,36(3):26-28,32.

0引言

  在嵌入式產品領域,有效地應對各種安全攻擊至關重要。安全攻擊主要是指:人為地試圖獲取或者破壞芯片內容而獲取利益,例如復制軟件進而克隆系統、竊取關鍵信息(如數據庫等)、惡意篡改或者重新編程制作“流氓”軟件等。

  目前嵌入式應用中Freescale公司基于ARM CortexM內核的32位Kinetis系列MCU應用非常廣泛,它提供了一系列應對安全攻擊的機制,包括保密特性、Flash保護特性、芯片唯一標識符UID特性等,由于這些機制比較復雜,設置視具體應用而異,靈活多變,并涉及大量寄存器,加上Kinetis產品面世時間短,安全機制方面的中文資料稀缺(尚未有相關論文發表,只在部分書籍/網絡資料中有簡述),給開發者帶來了困擾。因此本文針對Kinetis的保密和保護特性進行了研究,深入剖析了保密特性(包括工作原理、保密等級、整體擦除、后門機制、對外部接口的影響、保密設置方法等),分析了保護特性(原理、保護與解除保護策略等),綜合比對了二者的異同與關聯,為基于Kinetis應用的安全設計奠定了技術基礎。

1Kinetis的保密特性

  1.1保密特性概述

  Kinetis的保密特性使得它可以工作在保密Secure和非保密Unsecure兩種模式下,區別在于是否允許通過外部接口訪問芯片內部存儲器[1]。保密模式下,不能通過外部接口(如JTAG/SWD調試接口、EzPort、FlexBus)對芯片內部存儲器進行任何操作(整體擦除Mass Erase指令除外) [23]。非保密模式則無此限制。

  1.2保密特性工作原理

  Kinetis的保密特性基于Flash保密寄存器FTFL_FSEC和Flash配置區域(Flash Configuration Field,FCF)共同實現。FTFL_FSEC控制著所有與保密相關的位。FCF是位于0x400~0x40F地址區間的一個獨立的16 B配置區域,用來存儲保密/保護及MCU啟動的一些配置信息。FCF結構如圖1所示。

  

001.jpg

  在芯片復位完成前,位于FCF中的保密字節FSEC(地址0x40C)會被自動加載到FTFL_FSEC寄存器中,通過寄存器中的保密狀態位SEC位來設定芯片的保密狀態。這種機制會引發兩個問題:

  (1)在芯片運行過程中,即使修改了FCF中的保密字節FSEC,如果未復位則不會生效。

  (2)在芯片運行過程中,即使通過特定方式臨時解除了保密狀態,如果FCF中的保密字節FSEC未修改,則芯片復位后,Flash依然處于保密狀態。

  1.3保密等級

  FTFL_FSEC寄存器內容將影響保密程度,寄存器結構如表1所示。

003.jpg

  保密狀態下,根據寄存器中KEYEN、MEEN、FSLACC的不同,對應多種保密方案,通常保密等級可分為4級:等級0,禁止KEYEN;等級1,全部啟用;等級2,禁止FSLACC;等級3,禁止FSLACC和MEEN。由于等級3禁用了整體擦除和工廠訪問功能,只能通過后門機制解密,而如果程序中沒有加入后門解密功能,會導致芯片代碼再也無法重新編程或修改,所以使用時務必先確認后門功能完好再啟用保密。

  1.4后門訪問機制原理與注意事項

  后門訪問為開發者提供了一種便利的訪問途徑,使得保密后,使用后門訪問密碼(Backdoor Cccess Key)經驗證后門指令(Verify Backdoor Command)驗證成功,即可通過調試接口再次訪問Flash。其無需整體擦除Flash,常用于固件升級。

  后門機制需要開發者預先將一個8 B的后門密碼燒寫到Flash配置區域FCF中的后門密碼字節處(地址0x400~0x407),并編寫好驗證代碼。在芯片進入保密模式后,用戶通過外部串行口將密碼輸入MCU,然后通過驗證指令進行驗證,驗證一致則MCU解密。使用后門訪問時需要注意以下事項:

  (1)在保密狀態且KEYEN使能情況下,可通過后門密碼暫時解除保密狀態,后門密碼必須在FCF中配置,且不能全0或全1,否則驗證命令會報錯。

  (2)沒有預設機制用于獲取后門密碼并運行驗證,需要自行編碼,接收用戶輸入的密碼來進行驗證。

  (3)驗證失敗,再次驗證需要上電復位。

  (4)通過后門只能暫時解除保密狀態,復位后會重回保密狀態,除非更改了FCF中的保密設置。

  1.5保密模式對外部接口及FlexBus的影響

  保密模式下,調試接口JTAG/SWD被禁止調試,是否允許整體擦除通過MEEN位控制,除JTAG掃描和調試寄存器MDMAP外,其他寄存器無法訪問;同樣,Ezport是否允許整體擦除指令通過MEEN位控制,除EzPort狀態寄存器外,其他寄存器無法訪問;保密模式下默認阻塞所有外部訪問FlexBus的操作,但可通過SIM_SOPT2[FBSL]編程控制保密時允許進行哪些操作,可以選擇只允許數據存取,或者同時允許數據和操作碼的訪問,如果都允許,則不管是否保密,FlexBus控制器將同樣運作。

  1.6保密設置方法

  保密模式需要通過修改FCF中的保密字節實現,IAR環境下FCF信息存放在”/工程目錄/src/cpu/”文件夾下的vectors.c和vectors.h文件中。vectors.h文件的末尾部分存放著CONFIG_1~CONFIG_4字段(共計16 B),如下圖2所示。vectors.c中有對應的中斷向量地址信息,修改圖2中fe信息即可完成保密模式的修改,修改完成后可通過查看生成的s19文件確認保密字節是否修改成功。需要特別注意的是IAR6.6之后,其自帶的flashloader默認對0x40C~0x40F段進行了保護,所以會導致修改失效,因此在燒寫前需要首先對flashloader進行配置:打開Flash Loader Configuration在extra parameters部分輸入-enable_config_write,保存設置然后再燒寫即可。 

002.jpg

2Kinetis的Flash保護機制

  2.1保護概述

  Kinetis提供的保護機制主要用于防止CPU對Flash的誤操作,例如燒寫bootloader、防止誤操作Flash中的配置參數等,用戶可以選定Flash區域進行保護,受保護的區域CPU擁有只讀權限。

  2.2保護原理

  Kinetis提供了3個寄存器分別針對3種類型的存儲空間進行保護:程序Flash(PFlash)、數據Flash(DFlash)和EEPROM[1]。3種類型的Flash保護機制類似,本文以PFlash為例進行闡述。PFlash的保護基于PFlash保護寄存器FTFL_FPROTn和FCF共同實現。在芯片復位完成前會把FCF中的PFlash保護字節(地址0x408~0x40B)加載到Kinetis的4個保護寄存器FTFL_FPROT0~FTFL_FPROT3中,根據位設置進行保護。4個保護寄存器中的32個位將PFlash等分成32個區域進行保護配置,每個位控制1/32區域寫保護,對應位為1則不保護,為0則保護。這種機制使得Flash最小可配置保護單元大小取決于芯片的Flash容量,比如容量512 KB其最小保護單元為512/32=16 KB,32 KB則為32/32=1 KB。系統所支持的最小保護單元為1 KB,容量小于32 KB的,以24 KB為例,32位中的后8位就被忽略掉了,其他情況依次類推。

  2.3保護設置與解除

  保護與保密設置方法類似,可通過修改FCF的保護字節完成,不再贅述。Flash配置區域一旦被保護,就不能通過常規Flash擦寫指令修改,只能通過EzPort執行塊擦除指令(bulk erase)或運用Segger JLink的命令行工具運行“unlock Kinetis”指令來擦除。

3保密與保護特性對比

  保密與保護雖然都是安全機制,但二者差異顯著,綜合比對如下:

  (1)配置字節:二者均駐留在Flash配置域FCF中,分別對應保密和保護字節。

  (2)作用范圍:保密特性針對整個芯片,對Flash本身影響很小;保護特性則只影響選定的部分/全部Flash區域,對處理器的其余部分沒有影響。

  (3)目的與用途:保密旨在防止惡意者通過外部接口非法讀出Flash內容,不影響CPU讀寫Flash。為防止芯片內容被非法讀出后被“暴力”寫入到同類芯片運行,Kinetis還提供了芯片唯一標識符UID可進行唯一性驗證,可配合保密機制阻止非法程序運行[4]。保護旨在防止CPU對內部Flash意外擦除和寫入。

  (4)方向性:保密針對外部接口,保護針對CPU。

  (5)寄存器與讀寫性:保密特性基于FTFL_FSEC,保護特性基于FTFL_FPROTn。FTFL_FSEC寄存器是只讀的,FPROTn寄存器是可讀可寫的,在運行過程中可以更改其內部配置,具體方法與工作模式有關。

4結論

  本文深入分析了Kinetis系列MCU的保密和保護特性,闡述了保密和保護的工作原理、應用場合、配置方法與注意事項等。保密特性禁用外部端口,使得軟件固件被鎖定,免受外部攻擊,保護特性可防止對特定Flash區域進行擦除,免受內部CPU誤操作的影響,二者結合可以應對多種安全問題,保密和保護機制的靈活應用可為基于Kinetis的應用在安全設計方面提供良好的技術基礎。

參考文獻

  [1] 王宜懷,吳瑾,蔣銀珍.嵌入式系統原理與實踐ARMCortexM4Kinetis微控制器[M].北京:電子工業出版社,2012.

  [2] Freescale Semiconductor,Inc..K60 Subfamily reference manual Rev 6[DB/OL]. (2011-11-06)[2016-06-20].http://www.freescale.com.

  [3] Freescale Semiconductor,Inc..Using the Kinetis security and Flash protection features (AN4507)[DB/OL].(2012-01-06)[2016-06-20].http://www.freescale.com. 2012/2016.6.

  [4] NXP Semiconductors.How to address the challenge of security/privacy with Kinetis (REV 0) [DB/OL].[2016-06-10].http://www.nxp.com/.2014.


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产高清精品自在久久 | 欧美日韩在线播一区二区三区 | 一区二区三区精品牛牛 | 成人国内精品久久久久影 | 亚洲第一激情 | 亚洲free| 日韩视频免费 | 天天做天天爱天天做天天吃中 | 欧美人与日本人xx在线视频 | 欧美日韩一本大道香蕉欧美 | 亚洲精品成人久久 | 看一级毛片免费观看视频 | 日本不卡一区二区三区在线观看 | 人人人干 | 亚洲国产天堂久久综合网站 | 一级国产特黄aa大片 | 亚洲一区中文字幕 | 九九九视频 | 大香网伊人久久综合网2021 | 亚洲精品视 | 一二三四社区在线视频社区 | 亚洲第一页综合 | 日韩中文网 | 亚洲波多野结衣日韩在线 | 日本视频一区二区 | 成年美女黄网站色大免费视频 | 日日操日日操 | 91精品啪在线观看国产线免费 | 欧美日韩不卡视频一区二区三区 | 欧美日韩一区二区三区四区 | 国产视频福利在线 | 狠狠做五月深爱婷婷天天综合 | 精品国产成人系列 | 日日操影院| 亚洲国产成人久久综合区 | 日本免费v片一二三区 | www伊人| 曰本三级黄色片 | 一级特黄特色的免费大片视频 | 久久99久久精品97久久综合 | 国产欧美在线观看视频 |