www.st.com/stm32trust SFI:Secure Firmware Installation,安全固件安裝解決方案。 SMI:Secure Module Install,安全模塊安裝。 OEM:Original Equipment Manufacturer,原始設備制造商(或原廠); SFI格式是由ST公司創(chuàng)建的固件加密格式,它使用帶有128位密鑰的AES-GCM算法將固件(Elf、Hex、Bin或Srec格式)轉換為SFI格式的加密和認證固件。 SMI格式是ST公司創(chuàng)建的一種格式,旨在保護合作伙伴的軟件(軟件模塊和庫)。 三、安裝STM32Trust生成器 STM32TrustedPackageCreator安全包生成器工具屬于STM32CubeProgrammer編程工具中的一部分(附加的工具)。 所以,在安裝STM32CubeProgrammer工具時,集成有STM32TrustedPackageCreator這個工具,只是默認不安裝,需要手動勾選。 打開STM32TrustedPackageCreator工具,在主界面你就會看到一些我們之前說的SFI、SMI、HSM內容。 四、SFI固件生成過程 主要過程如下框圖,由原廠固件、隨機數(shù)、密鑰,經過STM32TrustedPackageCreator工具加密成SFI格式固件。 在執(zhí)行AES-GCM加密一個區(qū)域之前,我們計算初始化向量(IV)為: IV = nonce + Area Index 該工具將固件映像劃分為幾個加密的部分,這些部分對應于不同的內存區(qū)域。 這些附加到相應描述符(由工具生成的未加密的描述性頭部)的加密部分稱為區(qū)域。 這些領域分不同的類型: 區(qū)域“P”和“R”并不代表真正的固件區(qū)域,而是在SFI映像被分割成幾個部分時創(chuàng)建的,這是在SFI映像的全局大小超過用戶在創(chuàng)建SFI映像期間預定義的允許RAM大小時的情況。 下面RAM大小和CT地址輸入用于SFI: 五、SMI固件生成過程 SMI同樣是一種加密固件,只是這里面加密的是針對模塊和庫。 SMI加密過程和SFI有點類似,如下圖: AES-GCM加密使用以下輸入: ·128位AES加密密鑰 ·輸入nonce作為初始化向量(IV) ·作為附加身份驗證數(shù)據(jù)的安全版本(AAD) 在創(chuàng)建SMI映像文件之前,對SMI映像有效性進行PCROP檢查: ·PCROP部分必須在Flash字(256位)上對齊,否則將顯示警告 ·該區(qū)域的大小必須至少為2個Flash單詞(512位),否則將顯示警告 ·該部分必須在Flash單詞邊界(256位單詞)上結束,否則將顯示警告 ·如果緊隨PCROP部分之后的部分的起始地址與PCROP部分的最后一個Flash單詞重疊(在執(zhí)行PCROP對齊約束之后),則生成失敗并出現(xiàn)錯誤消息。 如果一切正常,在指定的路徑下創(chuàng)建兩個輸出: ·SMI圖像 ·Lib數(shù)據(jù) SMI格式布局如下: 六、總結 現(xiàn)在眾多處理器廠家都在推出“安全級別”芯片,其中,軟件加密也算一項,本文重點讓大家知道這個加密過程。 |
|
來自: 西北望msm66g9f > 《培訓》