介紹
內(nèi)存密碼引擎(MCE)是一種加密外設(shè),它確保了對外部非易失性或易失性存儲器進(jìn)行實時加密和解密。MCE可以保護(hù)位于外部存儲器中的代碼或數(shù)據(jù)。本文檔涵蓋了MCE可以提供保護(hù)的三種用例。
? 原地執(zhí)行(XiP):代碼和數(shù)據(jù)存儲位于非易失性外部存儲器中,而代碼是從外部閃存執(zhí)行的。
? 在外部RAM中加載和運行(L&R_Ext):代碼和數(shù)據(jù)存儲位于外部閃存中,該閃存被復(fù)制到外部RAM中以供執(zhí)行。MCE允許保護(hù)外部RAM和閃存存儲器。
? 在內(nèi)部RAM中加載和運行(L&R_Int):代碼和數(shù)據(jù)存儲位于外部閃存中,該閃存被復(fù)制到內(nèi)部RAM中以供執(zhí)行。在這種情況下,MCE僅啟用對外部閃存存儲器的保護(hù)。
這三個用例基于STM32CubeH7RS固件中的示例作為參考。它們基于ST不可變和OEM可更新的根信任引導(dǎo)解決方案,分別稱為STiRoT和OEMuRoT。
用戶可以根據(jù)定制的OEM不可變和可更新根信任路徑(OEMiRoT + OEMuRoT)定義自己的根信任引導(dǎo)路徑。本文檔僅涵蓋STiRoT+OEMuRoT引導(dǎo)路徑,并不涵蓋自定義定義的OEMiRoT + OEMuRoT引導(dǎo)路徑。
本文檔適用于下表中的產(chǎn)品,這些產(chǎn)品在本文檔的其余部分被稱為STM32H7Sx。
MCE(內(nèi)存密碼引擎)概述
內(nèi)存密碼引擎(MCE)在給定的地址空間中定義了具有特定安全設(shè)置的多個區(qū)域。這些安全設(shè)置可以涉及加密、權(quán)限或?qū)懭?。所有通過加密區(qū)域的系統(tǒng)總線流量都由MCE實時管理,如果獲得授權(quán),將自動解密讀取和加密寫入。
每個MCE可以定義多達(dá)四個區(qū)域,粒度為4 K字節(jié)。MCE支持可以應(yīng)用于不同區(qū)域(特權(quán)、寫入)的訪問過濾功能。請參閱下圖。
下表列出了MCE支持的功能。當(dāng)選擇流密碼時,重要的是在加密整個區(qū)域后立即激活寫保護(hù)(只讀區(qū)域)。
STM32H7Sx的實現(xiàn)定義了三個連接到外部內(nèi)存接口的MCE實例。當(dāng)MCE與XSPI一起使用時,必須將閃存控制器設(shè)置為內(nèi)存映射模式。此外,使用DMA執(zhí)行以16字節(jié)突發(fā)方式寫入閃存也是必須的。表2詳細(xì)列出了三個MCE實例之間的主要實現(xiàn)差異。
STM32H7Sx中的MCE實現(xiàn)
STM32H7Sx的實現(xiàn)定義了三個連接到外部內(nèi)存接口的MCE實例。當(dāng)MCE與XSPI一起使用時,必須將閃存控制器設(shè)置為內(nèi)存映射模式。還必須使用DMA以16字節(jié)突發(fā)的方式執(zhí)行對閃存的寫操作。
在STM32H7Sx的實現(xiàn)中,MCE(Memory Cryptographic Engine)保護(hù)存儲在外部內(nèi)存中的代碼或數(shù)據(jù)的機密性(四個區(qū)域/內(nèi)存)。MCE外設(shè)實例與xSPI外設(shè)實例的連接方式如下:
? MCE1連接到xSPI1內(nèi)存接口,該接口可以連接到NOR閃存或PSRAM。
? MCE2連接到xSPI2內(nèi)存接口,該接口可以連接到NOR閃存或PSRAM。
? MCE3連接到FMC內(nèi)存接口,該接口可以連接到PSRAM、SDRAM或FRAM。
xSPI1和xSPI2連接到XSPIM(xSPI IO管理器),它允許外部內(nèi)存(NOR閃存或PSRAM)的復(fù)用連接??梢钥紤]以下幾種使用情況:
? XSPI1映射到端口1,XSPI2映射到端口2(直接模式)。
? XSPI1映射到端口2,XSPI2映射到端口1(交換模式)。
? 兩個XSPI驅(qū)動一個外部內(nèi)存。
– XSPI1和XSPI2都映射到端口1,帶仲裁(復(fù)用模式到端口1)。
– XSPI1和XSPI2都映射到端口2,帶仲裁(復(fù)用模式到端口2)。
? 一個XSPI驅(qū)動兩個外部內(nèi)存。
在安裝任何加密鏡像之前,MCE加密/解密必須考慮相應(yīng)的IO管理器使用案例/模式。STM32CubeH7RS固件根據(jù)XSPIM的前兩個使用案例提供了模板。