昨天文章《最近STM32CubeMX、IDE、Programmer都更新了些什么內(nèi)容》講述了ST最近在這些工具上的動(dòng)作。 今天講述的內(nèi)容是STM32生態(tài)中,STM32Trust下面的一部分內(nèi)容。 (本文參考應(yīng)用筆記文檔:AN5054) 一、回顧STM32Trust什么是STM32Trust? STM32Trust是一套STM32解決方案,提供完整的代碼保護(hù)和執(zhí)行保護(hù)工具套件,如下圖:
今天講述的就是代碼保護(hù)中,使用STM32TrustedPackageCreator生成SFI和SMI加密固件。 STM32Trust官方網(wǎng)址:
www.st.com/stm32trust
二、基礎(chǔ)介紹
SFI:Secure Firmware Installation,安全固件安裝解決方案。
SMI:Secure Module Install,安全模塊安裝。
OEM:Original Equipment Manufacturer,原始設(shè)備制造商(或原廠);
SFI格式是由ST公司創(chuàng)建的固件加密格式,它使用帶有128位密鑰的AES-GCM算法將固件(Elf、Hex、Bin或Srec格式)轉(zhuǎn)換為SFI格式的加密和認(rèn)證固件。
SMI格式是ST公司創(chuàng)建的一種格式,旨在保護(hù)合作伙伴的軟件(軟件模塊和庫)。
三、安裝STM32Trust生成器
STM32TrustedPackageCreator安全包生成器工具屬于STM32CubeProgrammer編程工具中的一部分(附加的工具)。
所以,在安裝STM32CubeProgrammer工具時(shí),集成有STM32TrustedPackageCreator這個(gè)工具,只是默認(rèn)不安裝,需要手動(dòng)勾選。
打開STM32TrustedPackageCreator工具,在主界面你就會(huì)看到一些我們之前說的SFI、SMI、HSM內(nèi)容。
四、SFI固件生成過程
主要過程如下框圖,由原廠固件、隨機(jī)數(shù)、密鑰,經(jīng)過STM32TrustedPackageCreator工具加密成SFI格式固件。
生成過程生產(chǎn)主要過程見下圖:
在執(zhí)行AES-GCM加密一個(gè)區(qū)域之前,我們計(jì)算初始化向量(IV)為:
IV = nonce + Area Index
該工具將固件映像劃分為幾個(gè)加密的部分,這些部分對(duì)應(yīng)于不同的內(nèi)存區(qū)域。
這些附加到相應(yīng)描述符(由工具生成的未加密的描述性頭部)的加密部分稱為區(qū)域。
這些領(lǐng)域分不同的類型:
F:固件區(qū)域(輸入固件中的常規(guī)段) M:模塊區(qū)域(用于SFI-SMI組合圖像生成,對(duì)應(yīng)于來自SMI模塊的輸入) C:配置區(qū)域(用于選擇字節(jié)配置) P:表示“暫停”區(qū)域 R:回復(fù)區(qū)域
區(qū)域“P”和“R”并不代表真正的固件區(qū)域,而是在SFI映像被分割成幾個(gè)部分時(shí)創(chuàng)建的,這是在SFI映像的全局大小超過用戶在創(chuàng)建SFI映像期間預(yù)定義的允許RAM大小時(shí)的情況。
下面RAM大小和CT地址輸入用于SFI:
P和R區(qū)域與常規(guī)SFI區(qū)域:
此生成過程的最終輸出是單個(gè)文件,該文件是經(jīng)過加密和驗(yàn)證的SMI格式固件。SFI格式布局如下:
當(dāng)SFI圖像在生成過程中被分割時(shí),“P”和“R”區(qū)域出現(xiàn)在SFI圖像布局中,如圖下圖所示:
五、SMI固件生成過程
SMI同樣是一種加密固件,只是這里面加密的是針對(duì)模塊和庫。
SMI加密過程和SFI有點(diǎn)類似,如下圖:
生成過程生產(chǎn)主要過程見下圖:
AES-GCM加密使用以下輸入:
?128位AES加密密鑰
?輸入nonce作為初始化向量(IV)
?作為附加身份驗(yàn)證數(shù)據(jù)的安全版本(AAD)
在創(chuàng)建SMI映像文件之前,對(duì)SMI映像有效性進(jìn)行PCROP檢查:
?PCROP部分必須在Flash字(256位)上對(duì)齊,否則將顯示警告
?該區(qū)域的大小必須至少為2個(gè)Flash單詞(512位),否則將顯示警告
?該部分必須在Flash單詞邊界(256位單詞)上結(jié)束,否則將顯示警告
?如果緊隨PCROP部分之后的部分的起始地址與PCROP部分的最后一個(gè)Flash單詞重疊(在執(zhí)行PCROP對(duì)齊約束之后),則生成失敗并出現(xiàn)錯(cuò)誤消息。
如果一切正常,在指定的路徑下創(chuàng)建兩個(gè)輸出:
?SMI圖像
?Lib數(shù)據(jù)
SMI格式布局如下:
-
生成器
+關(guān)注
關(guān)注
7文章
315瀏覽量
21003 -
SMIC
+關(guān)注
關(guān)注
0文章
21瀏覽量
19922 -
STM32Trust
+關(guān)注
關(guān)注
0文章
6瀏覽量
2222
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論