目录
- 1. Common Criteria简介
- 1.1 CC评估要素
- 1.2 CC与TF-A的关系
- 2. TF-A的CC合规要求
- 2.1 安全功能需求
- 2.2 开发过程要求
- 3. TF-A的CC合规实现
- 3.1 关键安全机制
- 3.2 开发流程控制
- 4. CC认证实践指南
- 4.1 认证准备步骤
- 4.2 典型挑战与解决方案
- 4.3 已认证案例参考
- 5. 持续合规建议
1. Common Criteria简介
Common Criteria (CC, ISO/IEC 15408) 是信息技术安全评估的国际标准,用于评估和认证IT产品的安全性。TF-A作为安全关键固件,其CC合规性对高安全要求的应用场景(如政府、金融、军事等领域)至关重要。
1.1 CC评估要素
- 保护轮廓(PP):定义一类产品的安全需求模板
- 安全目标(ST):具体产品的安全规范
- 评估保证级别(EAL):分1-7级,TF-A通常目标为EAL4+
1.2 CC与TF-A的关系
- TF-A作为可信执行环境的基础组件
- 需满足以下CC安全功能类:
- 安全审计(FAU)
- 密码支持(FCS)
- 用户数据保护(FDP)
- 安全管理(FMT)
2. TF-A的CC合规要求
2.1 安全功能需求
功能类别 | 具体实现示例 |
---|---|
身份鉴别 | 镜像签名验证、安全启动链 |
访问控制 | 异常级别切换控制、内存保护机制 |
安全审计 | 启动日志、安全异常记录 |
数据保护 | 安全存储、加密服务 |
2.2 开发过程要求
3. TF-A的CC合规实现
3.1 关键安全机制
-
可信启动链(Chain of Trust)
- BL1/BL2/BL31的逐级验证
- 基于RSA/ECDSA的签名验证
- 防回滚计数器实现
-
运行时保护
// 示例:BL31中的访问控制检查 if (caller_el < TARGET_EL) {return SMCCC_DENIED; }
-
安全审计功能
- 通过
LOG_LEVEL
配置审计粒度 - 安全关键操作日志存储到受保护内存
- 通过
3.2 开发流程控制
- 配置管理:使用Gerrit代码审查+Signed-off-by机制
- 漏洞管理:遵循CVE披露流程(PSA漏洞奖励计划)
- 测试要求:
- 100% MC/DC覆盖率(针对安全关键代码)
- 模糊测试(特别是SMC处理接口)
4. CC认证实践指南
4.1 认证准备步骤
- 确定评估范围(通常为BL1/BL2/BL31)
- 选择认证实验室(如UL, atsec等)
- 准备安全目标文档(ST)
- 实施必要的增强措施
4.2 典型挑战与解决方案
挑战类型 | 解决方案建议 |
---|---|
形式化验证缺口 | 使用SPARK或Coq验证关键算法 |
多核同步问题 | 增加锁状态审计功能 |
时序侧信道风险 | 实现恒定时间密码算法 |
4.3 已认证案例参考
- STM32MP1:通过CC EAL+认证(基于TF-A v2.0)
- NXP i.MX8QM:达到EAL5级别
- 关键经验:最小化TCB(Trusted Computing Base)规模
5. 持续合规建议
- 变更影响分析:任何代码修改需评估CC影响
- 自动化合规检查:
# 示例:构建时检查安全配置 check_cc:@grep -r "AUDIT_CRITICAL" ./plat/ | wc -l
- 年度复审:应对CC维护期要求
注:最新CC版本(3.1 R5)对固件提出额外要求,建议参考《CC for IoT Devices Supplement》进行扩展评估。