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

  王玉麗

  (蘇州工業(yè)園區(qū)職業(yè)技術學院,江蘇 蘇州 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引言

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

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

1Kinetis的保密特性

  1.1保密特性概述

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

  1.2保密特性工作原理

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

  

001.jpg

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

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

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

  1.3保密等級

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

003.jpg

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

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

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

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

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

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

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

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

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

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

  1.6保密設置方法

  保密模式需要通過修改FCF中的保密字節(jié)實現(xiàn),,IAR環(huán)境下FCF信息存放在”/工程目錄/src/cpu/”文件夾下的vectors.c和vectors.h文件中,。vectors.h文件的末尾部分存放著CONFIG_1~CONFIG_4字段(共計16 B),如下圖2所示,。vectors.c中有對應的中斷向量地址信息,,修改圖2中fe信息即可完成保密模式的修改,修改完成后可通過查看生成的s19文件確認保密字節(jié)是否修改成功。需要特別注意的是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中的配置參數(shù)等,用戶可以選定Flash區(qū)域進行保護,,受保護的區(qū)域CPU擁有只讀權限,。

  2.2保護原理

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

  2.3保護設置與解除

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

3保密與保護特性對比

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

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

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

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

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

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

4結論

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

參考文獻

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

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

 ?。?] 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.

 ?。?] 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網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載。