专栏底层软件J6X OP-TEE之TA开发

J6X OP-TEE之TA开发

费小财2026-02-11
59
0

TA开发

OP-TEE OS支持动态加载和运行可信应用程序(TA),TA是运行在安全世界的应用程序,可以访问安全世界的资源。

为了TA的安全运行,通常需要对TA进行签名和加密,签名保证TA完整性,加密保证TA的机密性。其中,TA签名为强制开启,TA加密用户可根据自身需求选择是否开启。

为了开发方便,当前SDK中内置了一组密钥,在实际开发中,用户需要将签名密钥替换为自己的密钥。

密钥

TA签名和加密功能需要配合keyimage使用。在keyimage中,预留了两个slot,用于存放TA签名和加密的密钥。secureboot启动过程中,HSM会解析keyimage并将密钥导入到HSM中保存,OP-TEE加载TA时,通过IPC从HSM中获取TA加密和签名密钥,对TA进行解析。

alt text

签名

OP-TEE编译TA时默认对TA进行签名,OP-TEE在加载TA时会对TA进行验签,保证TA完整性。签名算法默认为RSA,密钥长度支持2048、3072、4096,单位为bits。

替换密钥

利用openssl生成一组密钥对,并保存在\ default_ta.pem\ 中。

openssl genrsa -out default_ta.pem 2048

  • 替换OP-TEE签名TA的密钥:将生成的\ default_ta.pem\ 拷贝到\ {sdk_dir}/device/horizon/${HR_CHIP_DIR}/secure_keys_files/optee/\ 覆盖原文件。
  • 替换keyimage中TA验签密钥:将\ default_ta.pem\ 重命名为\ RSA_2048_priv_for_ta_verify.pem\ ,并拷贝到keyimage密钥目录下面,路径为:\ {sdk_dir}/device/horizon/${HR_CHIP_DIR}/secure_keys_files/keyimage/rsa/\ 。
  • 重新生成\ keyimage.bin\ ,打包生成\ keyimage.img\ 。

加密

OP-TEE编译TA时可以配置是否对TA进行加密,OP-TEE在加载TA时能够自动识别TA是否加密,如果是加密TA会先对TA验签再解密。加密算法默认为AES-GCM,密钥默认长度为256bits。

加密配置

OP-TEE已默认打开TA加密选项,如不加密,需要关闭此功能,修改\ {sdk_dir}/optee/core/arch/arm/plat-hobot/conf.mk\ 文件,删除\ CFG_ENCRYPT_TA ?= y\ 。

替换密钥

如果需要TA加密,按照下面的步骤替换密钥:

  • 生成32字节密钥,hex格式表示,例如:

    1b481a093c12bd74d1dfc99d62026706f8e5d4c2bf59273e000ad4823ed207bd

  • 替换OP-TEE加密TA的密钥:打开\ {sdk_dir}/optee/ta/arch/arm/link.mk\ ,将CFG_USE_MINI_HSM不为'y'情况下的TA_ENC_KEY后面的密钥替换。
alt text
  • 替换keyimage中TA验签密钥:打开\ {sdk_dir}/device/horizon/${HR_CHIP_DIR}/secure_keys_files/keyimage/sym/AES_256_for_loadta_in_keyimage.txt\ ,将里面的内容替换为自己密钥。
  • 重新生成\ keyimage.bin\ ,打包生成\ keyimage.img\ 。
底层软件
社区征文杂谈征程6
评论0
0/1000