第4章:PSA Crypto API 实战
2026/8/4 14:00:02 网站建设 项目流程

摘要

TF-M 提供四大核心服务:Crypto(密钥不离开安全世界)、ITS/PS(安全存储)、Attestation(设备证明)。本文用代码示例 + Zephyr/FreeRTOS 集成 + 自研 vs TF-M 成本对比,给出芯片厂商可执行的选型决策。



开篇:密钥不离开安全世界

上一期我们讲了 TF-M 的架构——TrustZone-M 两个世界、DEN0063 三级隔离、SPM 调度与 IPC。

这一期进入工程实战——TF-M 的四大核心服务怎么用?代码怎么写?

PSA Crypto API 的核心价值是一句话:

密钥不离开安全世界。

应用调用psa_generate_key()生成密钥,拿到的是key_id(一个整数句柄),而非密钥本身。所有加密操作在安全世界执行,应用只拿到结果。即使应用被完全攻破,攻击者也拿不到私钥。


一、Crypto 分区:密钥不离开安全世界

支持的算法
算法类支持硬件加速
对称加密AES-128/256(CBC/CTR/GCM)
哈希SHA-1/256/384/512
HMACHMAC-SHA256/384
非对称RSA-2048/3072、ECDSA P-256/P-384
密钥派生HKDF、PBKDF2软件
随机数TRNG + DRBG(NIST 800-90A)
PSA Crypto API 代码示例
#include"psa/crypto.h"// 1. 初始化psa_crypto_init();// 2. 生成 ECDSA P-256 密钥对(私钥留在安全世界,应用拿不到)psa_key_id_tkey_id;psa_key_attributes_tattrs=PSA_KEY_ATTRIBUTES_INIT;psa_set_key_type(&attrs,PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1));psa_set_key_bits(&attrs,256);psa_set_key_usage_flags(&attrs,PSA_KEY_USAGE_SIGN_HASH|PSA_KEY_USAGE_VERIFY_HASH);psa_set_key_algorithm(&attrs,PSA_ALG_ECDSA(PSA_ALG_SHA_256));psa_generate_key(&attrs,&key_id);// 3. 签名(私钥操作在安全世界执行,返回签名给应用)uint8_thash[32],sig[64];size_tsig_len;psa_sign_hash(key_id,PSA_ALG_ECDSA(PSA_ALG_SHA_256),hash,sizeof(hash),sig,sizeof(sig),&sig_len);// 4. 应用永远无法导出私钥——psa_export_key() 对不可导出密钥返回错误

💡工程视角:PSA Crypto API 的核心价值是密钥不离开安全世界。应用调用psa_generate_key()生成密钥,拿到的是key_id(一个整数句柄),而非密钥本身。所有加密操作在安全世界执行,应用只拿到结果。即使应用被完全攻破,攻击者也拿不到私钥。

📌配图提示:PSA Crypto API 密钥流示意图(应用 → key_id → 安全世界 → 结果返回)


二、ITS 分区:片上安全存储

  • 存储位置:片上 Secure Flash
  • 容量:典型 4-32 KB
  • 用途:高价值小数据——设备私钥、证书、计数器
  • 安全机制:加密 + 完整性校验 + 访问控制
#include"psa/protected_storage.h"// 写入设备证书(只有安全世界可读)psa_ps_set(uid=0x0001,data_len=1024,p_data=cert,create_flags=PSA_STORAGE_FLAG_NO_ROLLBACK);// 安全世界内读取psa_ps_get(uid=0x0001,offset=0,data_len=1024,p_data=cert,&p_data_len);

三、PS 分区:外部加密存储

  • 存储位置:外部 Flash(非安全区域)
  • 容量:典型 64 KB - 1 MB
  • 用途:较大数据——配置文件、日志、OTA 备份
  • 安全机制加密 + 完整性校验 + 反回滚,密钥存在安全世界,数据加密后存外部
对比ITSPS
存储位置片上 Secure Flash外部 Flash
容量小(KB 级)大(MB 级)
性能快(直接访问)慢(加解密开销)
抗物理攻击中(密钥不在外存)

💡选型建议:高价值小数据(私钥、证书)用 ITS;大文件(配置、日志、OTA 备份)用 PS。


四、Initial Attestation 分区:设备证明

设备证明服务——向第三方证明"我是这台设备,运行这个固件版本"。

#include"psa/initial_attestation.h";// 生成设备证明 token(COSE/CWT 格式)uint8_tchallenge[32]={...};// 验证方下发的随机挑战uint8_ttoken[512];size_ttoken_len;psa_initial_attest_get_token(challenge,sizeof(challenge),token,sizeof(token),&token_len);
Token 包含
  • 设备唯一 ID(由 OTP 中的设备密钥派生)
  • 固件版本 + 哈希
  • 生命周期状态(LCS)
  • PSA-RoT 测量值
  • 对 challenge 的签名

💡工程视角:设备证明是CRA Article 13(4)“设备身份”的关键实现。云平台通过验证 token 签名,确认设备身份 + 固件完整性,决定是否允许接入。某厂商的云平台要求所有设备首次接入时提交 attestation token,未通过验证的设备直接拒绝——这把"伪造设备"攻击的成本从"复制一台设备"提高到"破解 ECDSA P-256"


五、TF-M + Zephyr/FreeRTOS 集成

双系统架构

TF-M 是安全世界的固件,非安全世界需要一个 RTOS 跑应用。主流组合:

组合安全世界非安全世界适用场景
TF-M + ZephyrTF-MZephyr RTOSMatter/Thread 设备
TF-M + FreeRTOSTF-MFreeRTOS工业/消费电子
TF-M + 裸机TF-M裸机 main 循环极简设备
Zephyr + TF-M 集成(最简单)

Zephyr 原生支持 TF-M,配置最简单:

# West 构建命令(nRF5340 示例)west build-bnrf5340dk_nrf5340_cpuapp --\-DCONFIG_TFM=y-DCONFIG_TFM_PROFILE_TYPE=m# 关键配置CONFIG_TFM=y# 启用 TF-MCONFIG_TFM_PROFILE_TYPE=m# Medium profile(Crypto + ITS + PS + Attestation)CONFIG_TFM_BL2=y# 启用 MCUBoot BL2CONFIG_TFM_PARTITION_CRYPTO=y# Crypto 分区CONFIG_TFM_PARTITION_INITIAL_ATTESTATION=y# Attestation 分区

Zephyr 应用通过 PSA API 调用 TF-M 服务,无需额外封装

FreeRTOS + TF-M 集成

FreeRTOS 集成 TF-M 需要更多手工配置:

  1. TF-M 构建为静态库,链接到安全世界镜像
  2. FreeRTOS 跑在非安全世界
  3. 通过 NSC 接口调用 TF-M 服务
双核架构(nRF5340)

nRF5340 采用双核设计——核 0(应用核)跑 Zephyr/FreeRTOS + BLE 协议栈,核 1(网络核)跑 TF-M + 无线协议。两核通过 RPMsg(共享内存 + 中断)通信。

对比单核 TZ-M双核隔离
隔离强度硬件属性(TZ-M)物理隔离(独立核)
通信开销SG 指令(μs 级)RPMsg(10-100μs)
成本低(单核)高(双核)
PSA LevelL2L2-L3

📌配图提示:单核 TZ-M vs 双核隔离对比图


六、自研隔离 vs TF-M 成本对比

成本对比表
维度TF-M(开源)自研隔离
初始开发0(直接用)6-12 个月,3-5 人
PSA 认证适配低(已预适配)高(需证明符合 DEN0063)
长期维护社区维护自维护
漏洞响应社区快速响应自行排查
定制灵活性中(需遵循 TF-M 架构)高(自由设计)
生态支持Nordic/ST/NXP/Zephyr

💡工程视角除非有极强定制需求,否则用 TF-M。某厂商自研隔离方案花了 8 个月、4 人,PSA Level 2 评估时被要求额外提供 DEN0063 符合性证明,又花了 3 个月。总成本 11 个月,而用 TF-M 的厂商 1 个月就集成了

TF-M 的"不够灵活"远比自研的"从零证明"便宜。

何时考虑自研

仅在以下场景考虑自研:

  1. 非 Arm 架构:RISC-V 需要用 PMP + OpenSBI 等效方案
  2. 极端资源约束:Flash < 64KB,TF-M 最小配置也要 ~40KB
  3. 已有成熟方案:公司已有通过认证的隔离框架
  4. 特殊安全需求:需要 TF-M 不支持的自定义隔离策略

📌配图提示:自研 vs TF-M 决策树


七、CRA/PSA 钩子速查

本章技术要点对应的 CRA 条款与 PSA Level 要求:

技术要点CRA Article 13 对应PSA Level 要求
TrustZone-M 硬件隔离Art. 13(2) 安全隔离L2+
NSC + SG 指令受控入口Art. 13(2) 攻击面最小化L2+
DEN0063 分区化框架Art. 13(2) 安全架构L1+
Level 3 分区间 MPU 隔离Art. 13(2) 故障隔离L3+
PSA Crypto API 密钥不离开安全世界Art. 13(3) 密钥保护L2+
ITS 片上安全存储Art. 13(3) 加密存储L2+
PS 外部加密存储 + 反回滚Art. 13(3)(5) 加密存储 + 防降级L2+
Initial Attestation 设备证明Art. 13(4) 设备身份L2+

📌合规映射提示:撰写"PSA → EN 18031 映射文档"时,本章内容直接对应 EN 18031-2 的要求 4.2(安全隔离)、4.3(密钥管理)、4.6(设备身份)。


八、Checklist

  • 硬件选型:Cortex-M23/M33/M55/M85(带 TZ-M)
  • TF-M 集成:选用 TF-M 而非自研
  • 隔离级别:L2 用世界隔离,L3 用分区间隔离
  • NSC 接口:SG 函数 ≤20 个,参数白名单校验
  • PSA Crypto API:密钥不可导出(PSA_KEY_USAGE_EXPORT不设)
  • ITS/PS 分区:高价值数据用 ITS,大文件用 PS
  • Attestation:云平台首接入验证 token
  • IPC 优化:用一次性 API 替代多步 API
  • RTOS 适配:TF-M IPC 期间禁任务切换
  • SAU/MPU 配置:安全区域最小化

九、给芯片厂商的行动建议

P0(2026-09-11 前)
  1. 选型 Cortex-M33 + TZ-M——PSA Level 2 的硬件基础
  2. 集成 TF-M——从 trustedfirmware.org 获取,按官方 quickstart 集成
P1(2027-Q1 前)
  1. 完成 TF-M + Zephyr/FreeRTOS 双系统验证
  2. PSA Crypto API 替换应用层加密调用——密钥移入安全世界
  3. 配置 Attestation 服务——对接云平台设备认证
P2(2027-Q3 前)
  1. 隔离级别升 Level 3——分区间 MPU 隔离,冲刺 PSA Level 3
  2. App-RoT 分区开发——厂商自定义安全服务
  3. IPC 性能优化——减少 IPC 次数,一次性 API
给管理者的一句话

TF-M 是 PSA Certified Level 2+ 的事实标准——Nordic/ST/NXP/Silicon Labs 全在用。自研隔离方案在 PSA 评估中要额外证明符合 DEN0063,成本远高于直接用 TF-M。对国产芯片厂商,2027-Q1 前必须完成 TF-M 集成与 PSA Crypto API 适配。


本期小结

  1. PSA Crypto API 核心价值:密钥不离开安全世界,应用只拿到 key_id
  2. TF-M 四大服务:Crypto + ITS(片上)+ PS(外部)+ Attestation(设备证明)
  3. Zephyr + TF-M 集成最简单:原生支持,CONFIG_TFM=y 即可
  4. 自研 vs TF-M:11 个月 vs 1 个月,除非非 Arm 架构否则用 TF-M
  5. P0 项:2026-09-11 前选型 Cortex-M33 + TZ-M 并集成 TF-M

下期预告

第 5 期:PSA Level 1-4 申请材料

从工程实现进入认证流程。PSA Certified 四级认证需要什么材料?加密算法选型有哪些坑?EN 18031 符合性评估怎么做?

下一期我们将讲清楚:

  • PSA Certified Level 1-4 申请材料清单
  • CRA 与 PSA 对加密算法的强制要求
  • 推荐算法清单与禁用清单
  • PSA → EN 18031-2 映射文档

关注本系列,从代码走向认证。


📣互动话题
你的项目用 TF-M 还是自研?PSA Crypto API 替换过程中遇到什么坑?

  • 留言区分享你的集成经验
  • 转发给固件团队,对照 Checklist 检查
  • 收藏本文,随时查阅 PSA Crypto API 示例

关注本账号,每周更新 CRA × PSA 合规实战内容。


话题标签

#PSA#CryptoAPI#TF-M#Zephyr#FreeRTOS#IoT安全#芯片安全#密钥保护


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询