器件型号: LP-AM261
您好、
我想实现安全启动功能(器件应仅使用有效已签名的应用程序固件映像进行启动)。
为此 、我生成了公钥/私钥对、如下所示:
#生成 RSA-2048 签名密钥(存储在安全位置)
openssl genrsa -out /secure/keys/prod_signing_key.pem 2048
#生成 AES-256 加密密钥(可选)
OpenSSL rand -hex 32 >/secure/keys/prod_encryption_key.pem
#从私钥中提取公钥
OpenSSL RSA -in prod_signing_key.pem -pubout publickey.pem
在 makefile_ccs_bootimage_gen 文件中添加了私钥路径和安全启动相关配置、如下所示:
#默认安全引导/签名设置(可通过命令行覆盖)
device_type ?= HS
Enc_enabled ?=否
RSASSAXS_enabled ?=否
app_signing_key?=$(abspath keys/private_key.pem)
app_signing_key_keyring_ID ?= 0
app_signing_hash_algo?= SHA256
app_encryption_key ?=$(abspath keys/private_encryption_key.pem)
app_encryption_key_keyring_ID ?= 0
KD_SALT?= 0x12345678
并使用以下命令构建固件
make -f makefile_ccs_bootimage_gen OUTNAME=GPIO_INPUT_INTERRUPT PROFILE=Release MCU_PLUS_SDK_PATH=C:/ti/mcu_plus_sdk_am261x_26_00_00_01 CG_TOOL_ROOT=C:/ti/ccs2050/ccs/tools/compiler/ti-cgt-armllvm_4.0.4.LTS CCS_INSTALL_DIR=C:\ti\ccs2050\ccs\ CCS_IDE_mode=desktop device=am261x device_type=HS
这些步骤生成了安全.mcelf.hs 映像。
上述要点对于安全的应用程序映像生成是否正确? 如果没有、请提供正确的方法。 如果是、 我要在设备上刷写该固件。 但我的问题是器件将如何知道用于验证固件的公钥?
我是否需要在 SBL 中提供公钥? 如果是、请说明如何操作? 如果没有、请提供正确的方法。
因为我对文档的理解是、
在 AM261x 上、 SBL 不存储公钥、不会对应用程序映像执行签名验证。
2.由 HSM ROM 进行验证。 它会验证 SBL 本身、而不是验证应用程序。 ROM 将验证:
X.509 证书
RSA‑4096 签名
SHA‑512 完整性哈希
可选 AES‑256 加密
3.公钥存储在 X.509 证书中。 但是、“如何将公钥存储在 X.509 证书中?“
4.只有在 SBL 验证后、执行才会继续
启动后、SBL 可以选择性地验证应用程序、但这不是 TI 安全启动 ROM 流程的一部分。
6.如果我想进行应用程序级身份验证,我必须这样做
1.将您自己的公钥嵌入到 SBL 中
2.对应用程序映像签名(类似于 SBL)
3.在加载应用之前让 SBL 验证签名
我的理解是否正确? 如果没有、请纠正我。 如果是、请澄清我下面列出的疑问。
1.对于应用程序级身份验证、如何将公钥嵌入到 SBL 中?
2.在加载前,我需要通过 SBL 验证安全应用程序映像,做什么更改?