产品的安全考量
安全有着各种不同的含义
可以是保护:
也可以是防止:
- 恶意程序和病毒程序
- 产品被超量生产和非法替换
- 产品被用于发动DDoS攻击
- 版权和知识产权(IP)被侵犯
产品安全需要一个坚实的基础
无法在产品开始设计后再添加可靠的安全功能,类似于建筑的地基
- 安全功能不是那种看上去很迷人的东西
- 相比其他应用功能,安全功能需要更长的时间去设计和实现
- 当安全功能正确实现后,您几乎不会感知到它的存在

硬件安全功能

Secure Crypto Engiane(SCE)
SCE是一个独立的子系统,由专用的控制逻辑提供保护
- 瑞萨提供软件驱动程序,实现正确的访问步骤
- 通过CPU或调试器进行不当访问操作时,SCE的访问管理电路会自动闭锁,直到芯片复位
物理隔离的加密运算
- SCE内部专用的RAM
- 明文密钥不会暴露在任何CPU可访问的总线上
高级密钥管理功能
- 基于每个MCU硬件唯一性的用户密钥封装,无法克隆使用
- 封装密钥可以提供简单而安全的密钥存储
- 安全的密钥安装机制


资源可分割为两个区域
-
安全环境(SPE):可信的固件和服务
-
非安全环境(NSPE):不可信的固件和服务
NSPE可调用SPE提供的服务

ARM定义的TrustZone用于Flash和RAM
瑞萨电子将TrustZone筛选器应用于其他总线
- 防止非安全代码通过DMA、DTC和其他类似的机制提取安全区的代码和数据
瑞萨电子将TrustZone筛选器应用于管脚和外设
-
保护外部接口
-
防止非安全代码窃听输信号
-
防止非安全代码进行覆盖输出
TrustZone是一个可选功能

程序代码及数据的分离和保护
将程序代码及数据进行分类,并分别放置到安全和非安全区域
应用笔记R11AN0416EU0120

将部分Flash设置成OTP存储器

Trustzone和Security MPU的对比
特定的访问点
TrustZone限制暴露的API


TrustZone防止代码误用


保护MCU的管脚和外设
RA MCU的TrustZone保护外部接口


软件和开发工具
自动配置Trustzone
RA项目配置器
- 建立系统架构,决定如何分发可信/安全项目
- 创建可信/安全项目
- 决定非可信/非安全项目可以访问哪些安全模块
- 创建非可信/非安全项目
- 开发非可信/非安全项目





直观的TrustZone开发流程
合并开发模式
- 非安全项目的开发者直接接收到完整的安全项目
- 对于受信任的开发者,这是最简单的方式
分离开发模式
- 非安全项目的开发者直接接收到预先烧写好程序(安全项目部分)的MCU和一个Secure Bundle
- 支持由不受信任的第三方进行非安全开发


3 决定非安全项目可以访问哪些安全项目里的功能模块
- 在配置器里选择功能模块
- 将模块设置成非安全可调用(Non-secure Callable)
- “Guard”功能会生成自动必要的代码,方便用户后续添加应用特定的安全功能,例如为安全区域的服务实现身份验证功能

- 选择Secure Project(合并开发模式)或Secure Bundle(分离开发模式)

- 安全项目的模块会自动添加到配置器中
- 在下载程序时,会自动配置和写入TrustZone分区寄存器(IDAU)
- 自动生成CMSIS区域设定文件(.rzone和.azone文件)


无需手动配置TrustZone!
密钥管理
加密和封装的区别

MCU硬件相关的安全密钥存储

每个MCU封装的密钥只能在同一个MCU中使用
- MCU的HUK参与了封装算法
- HUK是每个MCU唯一的,无法解密其他MCU封装的密钥

优点
- 封装密钥可以存储在非安全的存储空间
- 即使MCU Flash的全部内容被拷贝到其他MCU里,也无法使用已经封装好的密钥,也不会泄露密钥内容

安全密钥存储的各种用例
- 安全的密钥安装和升级(SCE9保护模式)
- 通过SCE创建封装的随机密钥
- 明文密钥封装(兼容模式)

先进的产品生命周期管理
创建用户工厂安装密钥(UFPK)
- 瑞萨提供HTTPS网页服务器进行UFPK封装
- 和瑞萨服务器之间的数据传输通过PGP加密

创建一个或多个DLM密钥
- 在本地PC上创建DLM密钥(用UFPK加密)
- 瑞萨提供PC(Win/Linux)上的密钥创建工具软件

在特定的DLM状态下安装DLM密钥
- 开发时该功能已经集成在e2 studio里
- 量产时可以使用专用工具(烧录编程工具)
- Renesas Flash Programmer(RFP)最新版可以支持DLM密钥安装
设备的身份认证 (应用案例)
- MCU生成非对称加密的密钥对,私钥封装后存储在MCU中
- 公钥发送给CA(示例中使用本地PC作为CA)
- CA创建X.509证书,发送给MCU保存

证书使用的演示程序
- MCU将证书发送给Host
- Host发送一个随机数挑战(challenge)给MCU
- MCU通过私钥将随机数加密后发回给Host
- Host使用MCU的证书进行验证,可以正确解密收到的数据,身份认证完成

明文密钥安装
安全地存储预先生成的密钥
- 明文密钥存储在MCU中
- SCE对明文密钥进行封装,将封装好的密钥存储在MCU中
- 删除明文密钥

适合特定的生产环境
- 外部设备可以快速生成密钥
- 特定的现场部署架构可能需要特定的密钥
- 可以和HSM系统集成使用

应用项目
安全密钥安装和密钥更新
安全地安装和更新预选生成的密钥
创建用户工厂安装密钥(UFPK)
- 瑞萨提供HTTPS网页服务器进行UFPK封装
- 和瑞萨服务器之间的数据传输通过PGP加密

创建一个或多个DLM密钥
- 在本地PC上创建用户密钥(用UFPK加密)
- 瑞萨提供PC(Win/Linux)上的密钥创建工具软件

安装用户密钥
- 通过烧录编程接口进行安全密钥安装,UFPK不会存储在MCU里
- FSP支持安全密钥更新
- 封装的用户密钥可以安全的存储在片内或外部Flash中
认证和评估
认证和应用的关系


NIST CAVP认证
National Institute of Standards and Technology, Cryptographic Algorithm Validation Program (United States)
- 认证加密算法的功能正确性,保证互操作性
- 大部分地区认可
- 多个行业领域希望或需要产品有CAVP认证

我们还计划为RA SCE7进行更多的认证
NIST CAVP 认证
全面的算法套件
- 多种模式的AES,哈希算法,RSA和ECC的认证机制,密钥交换,伪随机数发生器
- FSP Crypto APIs
- FSP会维护两个版本的Crypto APIs
- CAVP认证过的版本,可用于最终产品的认证需求
- 正常更新版本,会提供更多的算法和更新内容

Cryptographic Algorithm Validation Program:https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program/details?validation=34732
Arm® PSA认证
被高度监管的行业都有安全标准
多数消费类产品没有特定的安全需求或安全法规来监管
各国政府开始起草通用需求规范
- 美国-Core Cybersecurity Feature Baseline for Securable IoT Devices (Draft NISTIR 8259)
- 英国-Code of Practice for Consumer IoT Security
- ...

PSA认证
安全开发的坚实平台

瑞萨通过PSA认证的MCU


瑞萨通过PSA认证的产品:https://products.psacertified.org/?_company=renesas
Security Evaluation Standard for IoT Platforms

RA产品家族通过SESIP认证的MCU



加密的安全性依赖于不可预测性
- 攻击者使用可预测性来猜测敏感信息
- 如果可选择性变少,进行暴力攻击的可行性就增加了
NIST Special Publication 800-22 (SP800-22), Revision 1a
