STM32MP1U产品线有哪些文档、wiki.st.com文章和应用程序说明?

在STMP32MP15x STMP32MP 13x的背景下提供ST安全功能概述?

 

STMP32MP1解决方案提供了一些砖块来带来安全功能,客户可以从中构建自己的自适应解决方案。

 

在下面查找客户可用的安全块。


用于STM32MP15x系列
 

1/STM32MP1提供的主要安全功能是安全引导称为“可信引导链”。

 

安全引导确保第一阶段(TF-A固件)和第二阶段引导加载程序(Uboot固件)的二进制文件的完整性。 

STM32MP1 ROM代码执行 二进制身份验证检查TF-A固件。这是通过存储在STM32MP1 OneTimeProgramming(OTP)外围设备中的非对称密钥和带有签名的二进制标头来完成的。一旦TF-A通过身份验证,ROMCode将启动TF-A。TF-A将依次用ROMCode验证服务验证第二阶段引导加载程序固件,并在验证成功时启动它。
这样可以确保STM32MP1在Flash中受到TF-A或SSLL二进制完整性攻击时不会启动。

 

Linux的身份验证内核和应用程序以及Cortex-M4协处理器固件都不受OpenSTLinux发布。

 

 

2/STM32MP1生态系统中的工具可用于激活引导链的身份验证检查。

签名工具为了对二进制文件进行签名,KeyGen键生成非对称密钥的工具。

密钥供应系统在STMP32MP1中以下为:这些密钥可以在硬件安全模块卡(HSM)中受到保护,以便与制造厂共享私钥)。通过HSM,可以使用ST安全秘密供应(SSP)工具将密钥供应到STM32MP1 OTP中。

 

3/STM32MP15x提供硬件隔离。Cortex-A代码、Cortex-M、DMA可控制对STM32MP1外围设备的访问,并可根据硬件执行上下文访问内存。

受信任的引导链将每个外围设备和存储器的硬件防火墙配置为一个硬件执行上下文硬件隔离允许保护系统的一部分免受不希望的Cpu或DMA访问(错误或恶意)。

 

硬件隔离也可以用于安全上下文中,以保护和使用机密。
ROM代码、TF-A、OPTEE应用程序在Cortex-A中执行保护硬件执行上下文。当TF-A启动SSLL(Uboot)时,SSLL(后来的Linux)在Cortex-A中执行不安全的硬件执行上下文。

可以通过将机密定位在只有Cortex-A才能在安全硬件执行上下文中访问的RAM中来保护机密。秘密复制和内存防火墙锁定激活可以在TF-A中实现安全监视器可以在TF-A安全监视器或OPTEE应用程序中实现诸如加密/解密或来自受A7安全上下文保护的机密的身份验证之类的安全服务。然后可以从运行在Cortex-A7非安全上下文中的应用程序调用这些服务。这在OpenSTLinux版本中不可用。

 

4/OPTEE(开放可信执行环境)操作系统,用于在Cortex-A安全硬件执行上下文中运行OPTEE应用程序。OPTEE可以在执行之前由TF-A进行身份验证。OTPEE应用程序也经过身份验证。

 

 

5/Cortex-M4固件的认证和解密可以使用专用的OTPEE应用程序或使用TF-a安全监视器的内核应用程序来实现。这并没有在OpenSTLinux中实现。身份验证计划在即将到来的交付中进行。

 

6/外部存储器中的二进制加密。

STM32MP1Soc闪存和DDR接口不支持即时解密无论是闪存内容还是DDR DRAM内容。因此,加密存储器的自动即时解密是不可能的。

然而 位于外部存储器中的二进制文件的解密始终可以通过软件或STM32MP1加密外围设备“手动”进行。

 

安全启动链不支持对其二进制文件进行解密。 

STM32PM1 ROM代码无法执行TF-A固件解密。 TF-A不实现SSBL(Uboot)固件的解密。

 

 

7/ST33TPM12(外部可信平台模块芯片-TPM)服务(密钥存储、身份验证检查、加密)可以使用标准Linux框架。

 

对于在安全执行环境中运行这些高级功能或更高级的服务,如安全固件更新(在安全环境中更新)、可信应用程序、SVN、虚拟化,ST强烈建议与第三方公司联系。Proven&Run公司就是其中之一。

https://www.st.com/content/st_com/en/partner/partner-program/partnerpage.html?key=MPU&country=countr...

 

STM32MP1安全方面的主要文档是wiki.st.com上的文章。

 

请查找wiki文章概述:

 

1-硬件隔离的硬件执行上下文和外围设备分配

https://wiki.st.com/stm32mpu/wiki/Getting_started_with_STM32_MPU_devices

解释执行上下文

https://wiki.st.com/stm32mpu/wiki/STM32MPU_Embedded_Software_architecture_overview

显示体系结构概述

https://wiki.st.com/stm32mpu/wiki/STM32MP15_peripherals_overview

提供可能的外围分配

https://wiki.st.com/stm32mpu/wiki/How_to_assign_an_internal_peripheral_to_a_runtime_context

解释如何将外围设备分配给上下文

 

2-安全的行李箱和安全的行李箱链条

https://wiki.st.com/stm32mpu/wiki/Boot_chains_overview

显示了引导链中的不同阶段

https://wiki.st.com/stm32mpu/wiki/How_to_secure_STM32_MPU
https://wiki.st.com/stm32mpu/wiki/STM32_MPU_ROM_code_overview
显示了ROM代码中所做操作的概述

https://wiki.st.com/stm32mpu/wiki/STM32_MPU_ROM_code_secure_boot

显示

如何在OTP中生成和存储密钥,

如何对要进行身份验证的二进制文件(TF-A、u-boot二进制文件)进行签名

如何关闭设备以强制始终进行身份验证

https://wiki.st.com/stm32mpu/index.php/KeyGen_tool

生成密钥的工具:使用STM32CubeProgram将公钥哈希存储在OTP中,用于二进制签名的私钥

https://wiki.st.com/stm32mpu/index.php/Signing_tool

用于对二进制文件进行签名的工具

 

3-安全概述

https://wiki.st.com/stm32mpu/wiki/Security_overview

安全概述

https://wiki.st.com/stm32mpu/wiki/ETZPC_internal_peripheral

从Cortex-A7上下文(安全或正常)和Cortex-M4上下文向MPU外围设备分配访问权限。

从Cortex-A7和Cortex-M4分配对内部ROM/RAM的访问权限。

https://wiki.st.com/stm32mpu/wiki/TZC_internal_peripheral

为DDR区域分配访问权限

 

4-TPM(外部可信平台模块芯片),带有遵循TPM V2.0规范实现的OpenSTLinux

https://wiki.st.com/stm32mpu/wiki/TPM_hardware_components

https://wiki.st.com/stm32mpu/wiki/STPM4RasPI_expansion_board 
 

5-Cortex-M4固件认证原理

https://wiki.st.com/stm32mpu/wiki/How_to_protect_the_coprocessor_firmware

 

6-OPTEE和可信应用程序(TA)

https://wiki.st.com/stm32mpu/wiki/OP-TEE_overview

https://optee.readthedocs.io/en/latest/architecture/secure_storage.html
 

ST目前没有提供任何TA,但可以运行演示示例。

https://optee.readthedocs.io/en/latest/building/trusted_applications.html

https://optee.readthedocs.io/en/latest/building/gits/optee_examples/optee_examples.html


 

 

用于STM32MP13x系列
新的安全功能
-更多防撬销(12个防撬销,5个活动)

-硬件唯一密钥(HUK)
-使用SAES的SCA(侧信道攻击)
-OTF DRAM加密/解密(允许在加密的DDR中执行Optee)
为了安全启动,新功能包括

-防回滚
-fsbl认证
-密钥撤销
-基于X509 PKI基础设施的加密fsbl和ssbl
-没有适用于MP3x产品的M4协处理器

其他有用的链接
https://wiki.st.com/stm32mpu/wiki/STM32MP13_peripherals_overview
https://wiki.st.com/stm32mpu/wiki/STM32_MPU_Flash_mapping
https://wiki.st.com/stm32mpu/wiki/TF-A_BL2_Trusted_Board_Boot
https://wiki.st.com/stm32mpu/wiki/How_to_configure_TF-A_FIP
https://wiki.st.com/stm32mpu/wiki/How_to_perform_Secure_Boot_from_Distribution_package
https://wiki.st.com/stm32mpu/wiki/STM32MP13_Tamper_configuration
https://wiki.st.com/stm32mpu/wiki/STM32MP13_Tamper_configuration#Software_configuration
https://wiki.st.com/stm32mpu/wiki/STM32CubeProgrammer_OTP_management
https://wiki.st.com/stm32mpu/wiki/Secure_Secret_Provisioning_(SSP)
https://wiki.st.com/stm32mpu/wiki/How_to_deploy_SSP:_a_step_by_step_approach
https://wiki.st.com/stm32mpu/wiki/Secure_Firmware_Update