1. PSA Cryptography API 1.1.0 深度解析
作为Arm平台安全架构(PSA)的核心组件,PSA Cryptography API在2022年2月发布的1.1.0版本标志着该接口的又一次重要演进。我在嵌入式安全领域工作多年,见证了从最初的1.0 Beta到如今1.1.0 Final的完整发展历程。这个版本不仅新增了对EdDSA、密码哈希等现代加密算法的支持,更重要的是对文档进行了全面梳理,解决了开发者在实际使用中的诸多困惑。
1.1 版本演进与关键更新
让我们先回顾PSA Cryptography API的发展轨迹:
| 版本号 | 发布时间 | 主要变更 |
|---|---|---|
| 1.0 Beta 1 | 2019年1月 | 首个公开测试版发布 |
| 1.0 Beta 2 | 2019年2月 | 与其他PSA Dev API规范同步更新 |
| 1.0 Final | 2020年2月 | API正式定稿 |
| 1.0.1 Final | 2020年8月 | 错误修复和说明澄清 |
| 1.1.0 Final | 2022年2月 | 新增EdDSA、密码哈希和密钥拉伸API |
1.1.0版本的主要技术增强包括:
- EdDSA支持:新增了基于Edwards曲线的数字签名算法,特别适合IoT设备等资源受限环境
- 密码哈希强化:引入了专门的API用于安全密码存储场景
- 密钥拉伸功能:为密钥派生操作提供了标准化接口
- 文档改进:对原有规范进行了数百处澄清和优化
提示:在实际项目中升级到1.1.0时,建议先测试EdDSA等新功能在目标硬件上的性能表现,因为不同芯片对这些新算法的硬件加速支持程度可能差异较大。
1.2 架构设计与核心特性
PSA Cryptography API的设计体现了Arm对嵌入式安全需求的深刻理解。其架构具有以下显著特点:
1.2.1 分层安全模型
API支持三种隔离级别,适应不同安全需求:
- 无隔离:适用于低成本MCU,加密操作与应用运行在同一安全域
- 加密处理器隔离:硬件级隔离,如安全元件(SE)或TrustZone
- 调用者隔离:支持多应用场景,每个应用有独立的安全边界
c复制// 典型初始化示例
psa_status_t status = psa_crypto_init();
if (status != PSA_SUCCESS) {
// 错误处理
}
1.2.2 密钥管理体系
密钥管理是PSA Crypto API的核心优势:
- 密钥生命周期管理:从生成、存储到销毁的全流程控制
- 策略绑定:每个密钥关联使用策略(算法、用途等)
- 硬件保护:支持不可提取密钥(non-extractable keys)
c复制// 创建AES密钥示例
psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
psa_set_key_type(&attributes, PSA_KEY_TYPE_AES);
psa_set_key_bits(&attributes, 256); // AES-256
psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT);
psa_set_key_
