STM32信息安全硬件特性
1.? STM32硬件安全特性概覽
STM32 MCU底層硬件具備的安全特性能夠覆蓋存儲訪問保護、代碼/系統(tǒng)隔離、啟動入口限定、防篡改檢測、密碼學算法加速、身份識別等多方面的安全需求,例如:
身份識別:UID, OTP
存儲訪問保護/軟件IP保護:RDP(讀保護),WRP(寫保護),PCROP(專有代碼保護),OTFDEC(On-The-Fly Decryption實時解密模塊)
代碼/系統(tǒng)隔離:MPU,F(xiàn)irewall(防火墻),TrustZone,Secure User Memory(安全用戶存儲區(qū))
啟動入口限定:RDP2,BOOTLOCK(啟動鎖定)
防篡改檢測:Anti-Tamper
密碼學算法硬件:AES,HASH,PKA,TRNG
芯片硬件安全功能結合軟件能夠實現(xiàn)更多應用層次的安全功能,例如安全啟動,安全更新,安全存儲,安全通信,可信執(zhí)行環(huán)境等等。

1.1?身份識別
Unique ID芯片唯一標識:STM32全系列產(chǎn)品都帶有UID,出廠時已經(jīng)燒寫在STM32芯片的系統(tǒng)Flash區(qū)域,UID的長度為96bit,作為芯片的唯一標識號。
UID的常見用途:
基于UID通過某種算法生成搭載該芯片的產(chǎn)品的唯一序列號
基于UID進行密鑰派生:芯片的參考手冊有專門章節(jié)描述,請參考Device electronic signature章節(jié)
OTP一次性寫入?yún)^(qū)域:STM32 MCU的多數(shù)系列都帶有OTP區(qū)域,例如F2,F(xiàn)4,L4,F(xiàn)7,H7,G0,G4,WB,L5等等(OTP區(qū)域的支持以及大小要看具體產(chǎn)品型號)。
OTP的常見用途:
一次性寫入產(chǎn)品標識信息,寫入后無法變更;
一次性寫入不可變更數(shù)據(jù),例如安全啟動用于驗證應用合法性的公鑰信息
OTP的操作方式請參考芯片的參考手冊 Embedded Flash memory (FLASH)章節(jié)的相關描述。
1.2? ?存儲保護/軟件IP保護
WRP 內(nèi)部Flash寫保護
WRP能夠保護片內(nèi)Flash指定區(qū)域的內(nèi)容不被意外地或者惡意地修改或擦除,STM32全系列產(chǎn)品都帶有寫保護功能。根據(jù)產(chǎn)品系列的不同,WRP的配置方式略有不同,L4、G0、G4、WB、L5系列可以設置受保護的起始和末尾Page,其它系列可以獨立設置需要保護的Page/Sector。WRP結合RDP2可以使得一段片上Flash成為相當于ROM的區(qū)域,該區(qū)域代碼或數(shù)據(jù)將具有不可改變特性。
RDP讀保護
RDP讀保護所保護的對象包括內(nèi)部Flash,選項字節(jié),內(nèi)部SRAM(如SRAM2),OTP區(qū)域,Backup后備域RAM及寄存器等。除F1外,其他所有STM32系列產(chǎn)品都具有RDP功能。RDP具有0、1、2三個級別,L5還增加了一個0.5級別,出廠時芯片的RDP級別缺省為0,即完全開放沒有保護;RDP設置為級別1時,調試端口雖然可以連接,但是對于受保護的各個區(qū)域(Flash,RAM,Backup RAM/register)等等,已經(jīng)無法通過調試端口訪問,即使從system bootloader啟動或者從RAM運行的代碼也無法訪問那些區(qū)域,RDP1狀態(tài)下選項字節(jié)仍舊可以修改,因而可以回退到RDP0,但是該操作會觸發(fā)全片F(xiàn)lash擦除;RDP2狀態(tài)則會完全關閉調試端口,并且無法回退到RDP1或者RDP0。L5是基于CM33內(nèi)核帶有TrustZone的產(chǎn)品系列,對應也增加了一個RDP0.5級別,RDP0.5狀態(tài)能夠鎖定Secure區(qū)域的訪問,但依舊允許Non-Secure區(qū)域的存儲訪問以及調試,給TrustZone環(huán)境下的開發(fā)帶來更多靈活性。
RDP1/2可以提供基本的代碼和IP保護功能,防止設備出廠后被非法從調試端口獲取。
PCROP私有代碼保護
PCROP提供了一個額外層次的代碼保護,PCROP可以設置內(nèi)部Flash的指定區(qū)域成為只能執(zhí)行的代碼區(qū)域,該區(qū)域無法被讀?。ㄗ鳛閿?shù)據(jù)),修改或擦除,也就是說無論是通過調試器還是芯片運行的代碼(包括運行在PCROP區(qū)域內(nèi)部的代碼本身)都無法讀取PCROP保護區(qū)域的指令,而且,即使在RDP0的狀態(tài)下,PCROP所保護的區(qū)域也無法通過調試器進行數(shù)據(jù)讀取。PCROP的常見用途是聯(lián)合開發(fā),對部分軟件IP進行保護,受保護部分的代碼不能被二次開發(fā)用戶讀出或修改,但是其中的函數(shù)API可以被調用。PCROP同時也可以成為對數(shù)據(jù)進行某種程度保護的手段,這時候,需要將被保護的數(shù)據(jù)轉換成一段指令,只有執(zhí)行該段指令之后,數(shù)據(jù)才會被恢復到寄存器或者RAM當中。
PCROP相關資源:
DB2641:STM32Cube的專有代碼讀保護(PCROP)軟件擴展
鏈接:https://www.st.com/content/ccc/resource/technical/document/data_brief/37/5c/25/9e/6e/7b/4f/c9/DM00216520.pdf/files/DM00216520.pdf/jcr:content/translations/en.DM00216520.pdf
AN4701:STM32F4系列微控制器的專有代碼讀取保護
鏈接:https://www.st.com/content/ccc/resource/technical/document/application_note/89/12/c5/e2/0d/0e/45/7f/DM00186528.pdf/files/DM00186528.pdf/jcr:content/translations/en.DM00186528.pdf
AN4758:STM32L4系列微控制器的專有代碼讀取保護
鏈接:https://www.st.com/content/ccc/resource/technical/document/application_note/group0/1f/99/ef/d6/24/8d/44/08/DM00226247/files/DM00226247.pdf/jcr:content/translations/en.DM00226247.pdf
AN4968:STM32F72xxx和STM32F73xxx微控制器的專有代碼讀出保護(PCROP)
鏈接:https://www.st.com/content/ccc/resource/technical/document/application_note/group0/3d/86/0f/38/1c/d4/4b/58/DM00346619/files/DM00346619.pdf/jcr:content/translations/en.DM00346619.pdf
AN4246:STM32L1?微控制器的專有代碼讀取保護
鏈接:https://www.st.com/content/ccc/resource/technical/document/application_note/b4/14/62/81/18/57/48/05/DM00075930.pdf/files/DM00075930.pdf/jcr:content/translations/en.DM00075930.pdf
專有代碼保護?(PCROP) ? STM32Cube軟件擴展包? ?X-CUBE-PCROP
WRP,RDP,PCROP的操作方式請參考芯片的參考手冊 FLASH memory protection 章節(jié)的相關描述。
WRP,RDP,PCROP能夠對代碼、數(shù)據(jù)等提供基本的保護,如果希望這種保護具有更多的靈活性,包括考慮芯片內(nèi)運行的軟件本身對敏感數(shù)據(jù)、代碼的訪問控制等,則可以進一步使用代碼和系統(tǒng)隔離機制,參見代碼/系統(tǒng)隔離部分的介紹
OTFDEC(On-The-Fly Decryption)實時解密
OTFDEC功能是STM32L5具有的新功能,用于保護放置于外部SPI Flash上的代碼和數(shù)據(jù),代碼和數(shù)據(jù)都可以首先經(jīng)過AES加密后以密文的形式存儲于外部SPI Flash,從而防止由于數(shù)據(jù)代碼明文存放于外部Flash而帶來的安全風險。系統(tǒng)運行時可以通過OTFDEC模塊對存儲于外部SPI FLASH上的代碼和數(shù)據(jù)進行實時解密,該解密過程對CPU透明。
詳細的使用方法詳見芯片參考手冊OTFDEC章節(jié)的相關描述。
?
1.3? 代碼/系統(tǒng)隔離
MPU存儲器保護單元
MPU是Cortex-M內(nèi)核具備的功能,可以通過定義不同的Region(區(qū)域)設置不同地址范圍的屬性和CPU訪問權限,例如某個地址范圍是否允許執(zhí)行,是否允許讀或寫,是否允許特權模式訪問以及用戶模式訪問。通過合理配置和使用MPU可以實現(xiàn)對系統(tǒng)資源和代碼的隔離,例如可以將Flash的某個區(qū)域的訪問權限設置為只允許特權模式讀訪問,但不能執(zhí)行,配合代碼的特權和用戶模式轉換,達到部分代碼能夠訪問該資源,其余代碼無直接法訪問該資源的目的。
除F0系列外,其它STM32系列都帶有MPU單元。更詳細的內(nèi)容可以參考 AN4838。
AN4838:STM32 MCU?的存儲器保護單元?(MPU)
鏈接:https://www.st.com/content/ccc/resource/technical/document/application_note/group0/bc/2d/f7/bd/fb/3f/48/47/DM00272912/files/DM00272912.pdf/jcr:content/translations/en.DM00272912.pdf
Firewall防火墻
使用Firewall防火墻硬件IP,可以在片上Flash和RAM中隔離出一塊隔離區(qū),該隔離區(qū)具有唯一的入口,只有從該入口進入后防火墻隔離區(qū)域內(nèi)的代碼和數(shù)據(jù)才能夠被執(zhí)行和訪問,從防火墻保護區(qū)域跳轉出去之前也必須進行關閉操作才能夠允許跳轉,也就是說函數(shù)只能從設計允許的出口退出,除此之外的任意的調用、訪問和跳轉都會引發(fā)系統(tǒng)復位。通過防火墻提供的隔離功能,部分關鍵的軟件功能和數(shù)據(jù)可以放置于防火墻隔離區(qū)內(nèi),防火墻外的應用程序只能夠通過防火墻提供的唯一入口函數(shù)調用防火墻內(nèi)部的功能,而無法直接看到其中的代碼或者數(shù)據(jù),起到將關鍵操作與系統(tǒng)其它部分的軟件隔離開的作用。
防火墻的功能是系統(tǒng)運行后動態(tài)開啟的,而不是來自OptionByte的靜態(tài)設置,但是防火墻一旦使能,則在當前的Power Cycle始終有效,且不能被禁止,直到下一次復位。具有防火墻功能的STM32系列包括STM32L0和STM32L4。
TrustZone
STM32L5是第一個基于CM33內(nèi)核帶有TrustZone的STM32MCU產(chǎn)品系列,V8-M TrustZone及其在STM32L5上的系統(tǒng)級的實現(xiàn)提供了更加完整和靈活隔離功能。CPU的運行區(qū)分安全和非安全狀態(tài),存放在Flash, RAM上的代碼和數(shù)據(jù)被分配到安全和非安全區(qū),允許CPU安全或者非安全狀態(tài)下的訪問,除此之外,系統(tǒng)的各個外設以及CPU之外的Bus Master也都能夠被分配到安全和非安全區(qū),這樣就意味著安全區(qū)所管理的不僅僅只有代碼和數(shù)據(jù),還可以包含關鍵外設及其對應的中斷等等?;赥rustZone提供的隔離功能,可以在MCU上實現(xiàn)可信執(zhí)行環(huán)境,關鍵代碼與操作置于可信執(zhí)行環(huán)境內(nèi),避免系統(tǒng)的關鍵資源因為應用軟件可能帶有的脆弱性而受到攻擊。關于V8M-TZ的具體細節(jié),可以參考ARM相關的文檔;STM32L5的TZ系統(tǒng)架構等可以參考STM32L5的參考手冊,以及相關應用筆記。
AN5421:STM32L5系列微控制器和TrustZone?開發(fā)入門
鏈接:https://www.st.com/resource/en/application_note/dm00666290-getting-started-with-stm32l5-series-microcontrollers-and-trustzone-development-stmicroelectronics.pdf
AN5347:STM32L5?系列?TrustZone??功能
鏈接:https://www.st.com/resource/en/application_note/dm00625692-stm32l5-series-trustzone-features-stmicroelectronics.pdf
Secure User Memory安全用戶存儲區(qū)
安全用戶存儲區(qū)是STM32 MCU內(nèi)部Flash上的一塊特殊存儲區(qū)域,該區(qū)域在上電復位后可以訪問,軟件可以通設置寄存器打開對該區(qū)域的保護功能,一旦保護打開,該區(qū)域則變得完全不可訪問,這種保護在整個Power Cycle都有效,直到下一次復位。受保護的安全存儲區(qū)的大小位置可以通過芯片的Option Byte進行設置,屬于靜態(tài)設置,上電自動生效,不需要軟件進行配置;保護的打開可以通過軟件動態(tài)使能。安全存儲區(qū)域的一個典型用法是將每次上電只運行一次的代碼和數(shù)據(jù)放在該區(qū)域,例如安全啟動的代碼,一但跳轉到應用程序區(qū)域,則安全啟動代碼以及該階段使用的Flash上的數(shù)據(jù)(例如密鑰)變得完全不可見,可以使得啟動代碼與應用程序完全隔離開,避免應用程序訪問任何啟動階段使用的敏感代碼與數(shù)據(jù)。這個功能可以用于實現(xiàn)DICE機制。目前支持安全存儲區(qū)功能的STM32產(chǎn)品系列包括G0,G4,H7,L5。安全用戶存儲區(qū)的使用請參考芯片參考手冊相關章節(jié)的描述
STM32G0、G4:Embedded Flash memory (FLASH)章節(jié)有關Securable memory area的描述
STM32L5: Embedded Flash memory (FLASH) 章節(jié)有關HDP(Hide Protect)的描述
STM32H7:? Embedded Flash memory (FLASH) 章節(jié)有關Secure access mode章節(jié)的描述。
1.4? 啟動入口限定
唯一啟動地址功能可以用于安全啟動的實現(xiàn),保證每次啟動時總是運行安全啟動代碼,安全啟動代碼對系統(tǒng)和后續(xù)代碼的校驗無法被繞過。唯一啟動入口的實現(xiàn)在不同的STM32系列上不盡相同。
STM32G0、G4系列具有Boot_Lock啟動入口鎖定功能,G0/G4設置Boot Lock+RDP1將使得芯片只能從用戶Flash地址啟動,且調試端口無法連接,類似于RDP2的效果;
STM32L5也帶有BootLock功能,一旦設置Boot Lock選項,則系統(tǒng)總是從SECBOOTADDR配置的安全區(qū)Flash地址啟動,且該設置無法被取消;
STM32H7帶有Security安全功能的系列,當Security功能被使能的時候,系統(tǒng)將總是從RSS(Root Security Service)啟動,配合安全用戶存儲區(qū)以及BOOTADDR配置,可以鎖定用戶代碼總是從安全用戶存儲區(qū)的代碼地址開始運行;
STM32 F系列及L0、L4、WB系列可以通過設置RDP2確保每次啟動總是從內(nèi)部Flash地址開始執(zhí)行
關于STM32的各個系列的啟動模式,詳見芯片參考手冊相關章節(jié)的描述。
1.5? Anti-Tamper防篡改檢測
Anti-Tamper的目的是檢測電路板級別的物理攻擊,并且在檢測到入侵事件時自動清除敏感數(shù)據(jù)。Anti-Tamper包括靜態(tài)檢測和動態(tài)檢測(STM32L5支持動態(tài)檢測),配合電路板上的布線和開關一起使用,用于檢查是否出現(xiàn)非法打開設備外殼的情況。靜態(tài)檢測針對防篡改引腳的電平或邊沿變化,動態(tài)檢測則使用成對的檢測管腳,輸出管腳會持續(xù)輸出隨機序列,輸入管腳將檢查收到的序列與輸出的序列是否匹配,相比靜態(tài)檢測更難被繞過。除了防篡改引腳,異常檢測的范圍還包括對時鐘頻率,溫度以及電壓的監(jiān)測,任何的異常都將自動引發(fā)(存儲于后備域寄存器或RAM的)敏感數(shù)據(jù)的擦除,并觸發(fā)相應的中斷,由應用程序作進一步處理,例如保存異常檢測事件,用作后續(xù)的審計等。
1.6? Crypto密碼學單元
密碼學相關的功能單元包括TRNG真隨機數(shù)發(fā)生器,AES、CRYP加解密引擎,HASH加速器,PKA公鑰算法加速器。
TRNG模塊在除F0,F(xiàn)1,F(xiàn)3,L1外的其他系列產(chǎn)品上都有支持,真隨機數(shù)發(fā)生器能夠產(chǎn)生符合隨機性要求的隨機數(shù),作為密碼學操作、加密通信等的基礎;
STM32 MCU中的對稱密鑰算法加速器硬件有兩種,AES或者CRYP引擎,CRYP引擎包含AES及DES/TDES算法,除F0,F(xiàn)1,F(xiàn)3以外,其它的系列均帶有AES或者CRPT引擎(具體請參見具體型號的相關文檔),支持加解密、各種Chaining Mode以及秘鑰派生等算法;
HASH處理模塊能夠進行SHA-1,SHA-224,SHA-256以及HMAC操作,帶有HASH硬件模塊的系列包括F2,F(xiàn)4,F(xiàn)7,L4,L5,H7;
PKA公鑰算法加速器主要提供公鑰算法(RSA,DH,ECC)相關的密碼學運算功能,無需其它軟硬件的參與額外的運算。PKA模塊能夠大幅度提高公鑰算法相關密碼學運算的速度,釋放CPU的運算資源,并降低運算所需要的功耗。目前帶有PKA公鑰算法加速器的系列包括WB和L5。
密碼學單元的具體使用方法,請參考芯片參考手冊AES,CRYP,HASH,TRNG,PKA相關章節(jié)的描述。
2、STM32信息安全相關培訓資源
線上課程培訓
STM32信息安全
課程鏈接:
https://c.51diantang.com/columndetail?id=e30ad69473af4364ad433b8c30a3a404
從智能鎖談STM32安全技術?
課程鏈接:
https://c.51diantang.com/columndetail?id=598771d69a384b7f93a95726ae695458
線下技術培訓資料
STM32軟硬件安全技術培訓
點擊鏈接,下載課件:
https://stmcu.com.cn/Designresource/design_resource_detail?file_name=STM32%E8%BD%AF%E7%A1%AC%E4%BB%B6%E5%AE%89%E5%85%A8%E6%8A%80%E6%9C%AF&lang=EN&ver=1.3
STM32加解密技術
點擊鏈接,下載課件:
https://stmcu.com.cn/Designresource/design_resource_detail?file_name=STM32%E5%8A%A0%E8%A7%A3%E5%AF%86%E6%8A%80%E6%9C%AF&lang=EN&ver=1.3
關注微信公眾號“STM32”了解最新信息
