2401335_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2401335_zh-CN

2401335_zh-CN

S32K312 安全启动认证

当启用安全启动时,切换到不同的 FBL 时,通过 HMAC 密钥生成的 META 数据值会发生变化。由于 FBL 发生更改,HSE 需要使用 HMAC 密钥重新计算 META 数据;但是,由于新的 FBL 删除了 HMAC 密钥,因此无法重新计算 META 数据。因此,由于 FBL 验证失败,发生 RESET,导致应用程序无法启动。是否可以通过HMAC密钥重新验证已更改的FBL,从而使FBL和应用程序都能正常运行?

运行 HSE_SRV_ID_SMR_ENTRY_INSTALL 服务时,HseResponse 返回 0xA5AA5317。这对应于以下定义:

#define HSE_SRV_RSP_KEY_EMPTY ((hseSrvResponse_t)0xA5AA5317UL)

这表示钥匙为空。(正如我之前所问,我怀疑出现此回复是因为该区域已被擦除。)

我已经检查了 smrEntry 值。当我在 SecureBootState 为 0 的位置设置断点时,我确认 smrEntry 完全为 0。当我在 Fota_S32k3_SecureBootProcess 结束的返回点设置断点时,我确认这些值出现了。返回时,SecureBootState 值为 1。

如果您能指导我如何注入密钥或以其他方式解决此问题,我将不胜感激。


jeongwoo_0-1785741056004.png


1) 当在 if(SecureBootState == 0) 处设置断点时 / 结果:smrEntry = 0

jeongwoo_1-1785741316958.png


jeongwoo_2-1785741316650.png


2) 在返回 secureBootProcessResult 处设置断点,这是 Fota_S32k3_SecureBootProcess 函数的最后一部分。

jeongwoo_3-1785741316709.png


jeongwoo_4-1785741316900.png



Re: S32K312 Secureboot Authentication

除了 HSE_KEY_TYPE_SHE 密钥类型之外,NVM 和 RAM 密钥目录中声明的所有加密密钥都可以配置(即,由主机通过密钥导入服务初始化和更新,该服务由结构 hseImportKeySrv_t 定义。
SHE 密钥由主机通过 hseSheLoadKeySrv_t 或 hseSheLoadPlainKeySrv_t 服务进行配置。密钥可以以明文或加密文本的形式安装,如上图所示,在演示中,所有密钥均以明文形式安装。

db16122_0-1785825417364.png

您是否尝试过 \S32K3_HSE_DemoExamples\ 中的 S32K344_Update_NVM_keys_related_test 参考,引用代码?

# 更新 NVM 密钥。

1. 目标
本示例的主要目的是导入对称密钥和 AES GMAC 生成密钥。

2. 程序
实现这一目标的具体步骤如下:
1.格式化关键目录。
2.声明将更新初始版本的 HMAC 密钥信息。
3.声明一个密钥容器。
4.将密钥信息复制到密钥容器中。
5.复制容器中的密钥数据。
6. *您可以向容器中添加任何其他数据*
7.将 AES 配置密钥副本导入 RAM,以便使用 HSE 对容器进行签名。
8.对容器进行签名并生成 GMAC。

3. 硬件
本示例需要以下硬件才能正确运行:
- S32K344-EVB 或 S32K344-CVB。
-如果使用 S32K344-CVB,则还需要外部调试器(PEmicro Multilink rev. C)。
Re: S32K312 Secureboot Authentication

@jeongwoo


目前阻碍进一步进展的主要问题似乎是我们不知道 HMAC 密钥是否仍然可用。


首先,请您确认是否已按照我之前建议的方法进行检查,以及检查结果如何?


“要确认密钥是否已被擦除,您可以使用服务 HSE_SRV_ID_GET_KEY_INFO,结构 struct hseGetKeyInfoSrv_t。使用此服务,您将在 hseKeyInfo_t 中获取信息,以便您可以检查密钥的状态。


一旦我们确认了密钥的状态,就可以进行下一步操作了。如果密钥丢失或已被删除,我们可以尝试重新安装。或者,您也可以尝试使用与最初配置过程中相同的步骤直接安装密钥,看看操作是否成功。


此致,

Lukas

Re: S32K312 Secureboot Authentication

密钥可通过 HSE 服务 HSE_SRV_ID_IMPORT_KEY 导入或更新。


请查看 HSE 固件参考手册修订版中的这些表格。2.7:

表47. 在 NVM 密钥目录中将密钥导入到空槽位时,密钥配置的使用情况

表48。在 NVM 密钥目录中更新密钥(非空槽位)时,密钥配置的使用情况

这解释了何时可以以明文形式导入密钥,以及何时需要进行身份验证和加密。

如果密钥槽为空且您拥有 SU 权限,则可以无需身份验证即可直接导入密钥。如果密钥槽不为空(您正在更新密钥)并且您拥有 SU 权限,则身份验证是强制性的,加密是可选的。

仅使用用户权限时,无论插槽是否为空,身份验证和加密始终是强制性的。


S32K344_Update_NVM_keys_related_test 示例仅展示了如何准备和签署用于身份验证密钥导入的密钥容器。但是,在这个例子中,密钥并没有被导入。

例如,S32K344_AES_EncryptDecrypt 中显示了密钥的导入。本项目中使用的 AES 密钥 API 为 LoadAesKey。对于 HMAC,可以使用 LoadHmacKey API。这可用于以明文形式导入 HMAC 密钥,无需身份验证或加密。

Tags (1)
No ratings
Version history
Last update:
53m ago
Updated by: