第4章:PSA Crypto API 实战
摘要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/256CBC/CTR/GCM✅哈希SHA-1/256/384/512✅HMACHMAC-SHA256/384✅非对称RSA-2048/3072、ECDSA P-256/P-384✅密钥派生HKDF、PBKDF2软件随机数TRNG DRBGNIST 800-90A✅PSA Crypto API 代码示例#includepsa/crypto.h// 1. 初始化psa_crypto_init();// 2. 生成 ECDSA P-256 密钥对私钥留在安全世界应用拿不到psa_key_id_tkey_id;psa_key_attributes_tattrsPSA_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用途高价值小数据——设备私钥、证书、计数器安全机制加密 完整性校验 访问控制#includepsa/protected_storage.h// 写入设备证书只有安全世界可读psa_ps_set(uid0x0001,data_len1024,p_datacert,create_flagsPSA_STORAGE_FLAG_NO_ROLLBACK);// 安全世界内读取psa_ps_get(uid0x0001,offset0,data_len1024,p_datacert,p_data_len);三、PS 分区外部加密存储存储位置外部 Flash非安全区域容量典型 64 KB - 1 MB用途较大数据——配置文件、日志、OTA 备份安全机制加密 完整性校验 反回滚密钥存在安全世界数据加密后存外部对比ITSPS存储位置片上 Secure Flash外部 Flash容量小KB 级大MB 级性能快直接访问慢加解密开销抗物理攻击强中密钥不在外存选型建议高价值小数据私钥、证书用 ITS大文件配置、日志、OTA 备份用 PS。四、Initial Attestation 分区设备证明设备证明服务——向第三方证明我是这台设备运行这个固件版本。#includepsa/initial_attestation.h;// 生成设备证明 tokenCOSE/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 中的设备密钥派生固件版本 哈希生命周期状态LCSPSA-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_TFMy-DCONFIG_TFM_PROFILE_TYPEm# 关键配置CONFIG_TFMy# 启用 TF-MCONFIG_TFM_PROFILE_TYPEm# Medium profileCrypto ITS PS AttestationCONFIG_TFM_BL2y# 启用 MCUBoot BL2CONFIG_TFM_PARTITION_CRYPTOy# Crypto 分区CONFIG_TFM_PARTITION_INITIAL_ATTESTATIONy# Attestation 分区Zephyr 应用通过 PSA API 调用 TF-M 服务无需额外封装。FreeRTOS TF-M 集成FreeRTOS 集成 TF-M 需要更多手工配置TF-M 构建为静态库链接到安全世界镜像FreeRTOS 跑在非安全世界通过 NSC 接口调用 TF-M 服务双核架构nRF5340nRF5340 采用双核设计——核 0应用核跑 Zephyr/FreeRTOS BLE 协议栈核 1网络核跑 TF-M 无线协议。两核通过 RPMsg共享内存 中断通信。对比单核 TZ-M双核隔离隔离强度硬件属性TZ-M物理隔离独立核通信开销SG 指令μs 级RPMsg10-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 的不够灵活远比自研的从零证明便宜。何时考虑自研仅在以下场景考虑自研非 Arm 架构RISC-V 需要用 PMP OpenSBI 等效方案极端资源约束Flash 64KBTF-M 最小配置也要 ~40KB已有成熟方案公司已有通过认证的隔离框架特殊安全需求需要 TF-M 不支持的自定义隔离策略配图提示自研 vs TF-M 决策树七、CRA/PSA 钩子速查本章技术要点对应的 CRA 条款与 PSA Level 要求技术要点CRA Article 13 对应PSA Level 要求TrustZone-M 硬件隔离Art. 13(2) 安全隔离L2NSC SG 指令受控入口Art. 13(2) 攻击面最小化L2DEN0063 分区化框架Art. 13(2) 安全架构L1Level 3 分区间 MPU 隔离Art. 13(2) 故障隔离L3PSA Crypto API 密钥不离开安全世界Art. 13(3) 密钥保护L2ITS 片上安全存储Art. 13(3) 加密存储L2PS 外部加密存储 反回滚Art. 13(3)(5) 加密存储 防降级L2Initial Attestation 设备证明Art. 13(4) 设备身份L2合规映射提示撰写PSA → EN 18031 映射文档时本章内容直接对应 EN 18031-2 的要求 4.2安全隔离、4.3密钥管理、4.6设备身份。八、Checklist硬件选型Cortex-M23/M33/M55/M85带 TZ-MTF-M 集成选用 TF-M 而非自研隔离级别L2 用世界隔离L3 用分区间隔离NSC 接口SG 函数 ≤20 个参数白名单校验PSA Crypto API密钥不可导出PSA_KEY_USAGE_EXPORT不设ITS/PS 分区高价值数据用 ITS大文件用 PSAttestation云平台首接入验证 tokenIPC 优化用一次性 API 替代多步 APIRTOS 适配TF-M IPC 期间禁任务切换SAU/MPU 配置安全区域最小化九、给芯片厂商的行动建议P02026-09-11 前选型 Cortex-M33 TZ-M——PSA Level 2 的硬件基础集成 TF-M——从 trustedfirmware.org 获取按官方 quickstart 集成P12027-Q1 前完成 TF-M Zephyr/FreeRTOS 双系统验证PSA Crypto API 替换应用层加密调用——密钥移入安全世界配置 Attestation 服务——对接云平台设备认证P22027-Q3 前隔离级别升 Level 3——分区间 MPU 隔离冲刺 PSA Level 3App-RoT 分区开发——厂商自定义安全服务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 适配。本期小结PSA Crypto API 核心价值密钥不离开安全世界应用只拿到 key_idTF-M 四大服务Crypto ITS片上 PS外部 Attestation设备证明Zephyr TF-M 集成最简单原生支持CONFIG_TFMy 即可自研 vs TF-M11 个月 vs 1 个月除非非 Arm 架构否则用 TF-MP0 项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安全#芯片安全#密钥保护

相关新闻

【Bug已解决】[BUG] FP8 model cannot inference on B200 (SM>=100) 解决方案

【Bug已解决】[BUG] FP8 model cannot inference on B200 (SM>=100) 解决方案

【Bug已解决】[BUG] FP8 model cannot inference on B200 (SM>100) 解决方案 一、现象长什么样 把一个 FP8 量化的模型(或开启 FP8 推理的 transformers 模型)放到 NVIDIA B200(Blackwell 架构,compute capability SM>100&a…

2026/10/8 19:37:33 阅读更多 →
第3章:TF-M 架构 + SPM 调度

第3章:TF-M 架构 + SPM 调度

摘要 CRA Article 13(2) 要求"安全隔离",PSA Certified Level 2 强制硬件隔离。本文用 TrustZone-M 两个世界 三类硬件单元 DEN0063 三级隔离 SPM 调度与 IPC 全链路,讲清楚 TF-M 如何满足 CRA 与 PSA 双重要求。 开篇:一个 400…

2026/10/7 23:06:49 阅读更多 →
【Bug已解决】Different results for PPDocLayoutV3 on CPU and CUDA 解决方案

【Bug已解决】Different results for PPDocLayoutV3 on CPU and CUDA 解决方案

【Bug已解决】Different results for PPDocLayoutV3 on CPU and CUDA 解决方案 一、现象长什么样 用 PPDocLayoutV3(PaddlePaddle 文档版面分析模型,常经 transformers 桥接或在 GPU 机器上推理)做文档版面检测,发现同一张图&…

2026/10/11 19:47:32 阅读更多 →

最新新闻

lightweight-charts Brushable Area Series 插件实战:brushRanges 选区样式、交互原语与 Canvas 渲染原理

lightweight-charts Brushable Area Series 插件实战:brushRanges 选区样式、交互原语与 Canvas 渲染原理

前端图表库金融科技数据可视化 【免费下载链接】lightweight-charts Performant financial charts built with HTML5 canvas 项目地址: https://gitcode.com/gh_mirrors/li/lightweight-charts 点击查看 免费下载 本文围绕 lightweight-charts 官方发布的 tradingv…

2026/10/11 20:42:28 阅读更多 →
MySQL时间时区修改详解:从time_zone到default-time-zone的完整排查指南

MySQL时间时区修改详解:从time_zone到default-time-zone的完整排查指南

接手过数据库的人,应该都体会过“时间差8小时”的焦虑。某次凌晨线上告警,业务方截图发过来:对账报表里所有订单时间都比实际晚了8个小时,排查了一圈,最后定位到 MySQL 的时区设置上。这种事几乎每个用 MySQL 做业务的…

2026/10/11 20:42:28 阅读更多 →
空天通信网络关键技术:链路预算、星间路由与协议栈裁剪实战

空天通信网络关键技术:链路预算、星间路由与协议栈裁剪实战

简介:这份文档资料面向通信工程、卫星互联网与空天信息网络方向的研究人员、研究生及技术从业者,系统梳理空天通信网络的关键技术体系,帮助读者快速建立从架构到物理层的整体认知。资源为单个docx文档,压缩包约209KB,内…

2026/10/11 20:42:28 阅读更多 →
新增数据字典完整落地:表结构、缓存策略与编码规范

新增数据字典完整落地:表结构、缓存策略与编码规范

1. 这次改动到底在改什么在后台管理系统里,“新增数据字典”可能是出现频率最高的需求之一。很多刚入行的开发看到这个需求,觉得不就是建一张表、加几条记录吗?实际上数据字典承担着整个系统的基础数据标准化工作,它的设计质量直接…

2026/10/11 20:42:28 阅读更多 →
热度榜第 30、增速每小时 1-2:Swift-Qwen3.8-27B 为什么没“爆“?

热度榜第 30、增速每小时 1-2:Swift-Qwen3.8-27B 为什么没“爆“?

热度榜第 30、增速每小时 1-2:Swift-Qwen3.8-27B 为什么没"爆"? 【免费下载链接】Swift-Qwen3.8-27b 项目地址: https://ai.gitcode.com/hf_mirrors/ukisai/Swift-Qwen3.8-27b 一个有点拧巴的场面正在上演:模型卡上写着「思…

2026/10/11 20:42:28 阅读更多 →
OpenClaw 2026.3.1 Ubuntu 部署指南:Teams 与 Obsidian 接入及锁报错排查

OpenClaw 2026.3.1 Ubuntu 部署指南:Teams 与 Obsidian 接入及锁报错排查

如果你最近刷 GitHub 趋势榜单、逛 AI 技术社区,大概率已经瞄到过 OpenClaw 这个名字。作为一个从早期版本一路折腾到 2026.3.1 的老用户,我可以直接说:这个版本是现阶段最值得入坑的一个,但前提是你得把部署和接入的坑提前摸清。…

2026/10/11 20:41:28 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →