Hi!早啊!
之前我们学习的安全机制都是基于ARM的,但是最近RISCV的势头也是非常的强劲,所以今天介绍一个RISCV的TEE,下面简单做了一个介绍,感兴趣的可以在文末的Resources去获取到更加详细的资料。下面一起来看看吧~
RISC-V的多区域安全
RISC-V处理器的第一个可信执行环境(TEE)
对于需要强大硬件安全性的RISC-V应用程序,MultiZone®security为多个同等安全的域提供硬件强制软件定义的分离,并完全控制数据、程序和外围设备。
与传统解决方案相反,MultiZone®Security不需要额外的IP块或对现有固件进行更改。开源库、第三方二进制文件和遗留代码可以在几分钟内进行配置,以实现前所未有的安全性和安全性。
MultiZone®Security基于免费开放的标准,在GitHub上开源,并免费获得评估许可,商业使用免版税。
MultiZone Security是RISC-V的第一个可信执行环境,它为RISC-V开发了一个重量轻、基于策略的安全环境,可从小型单核物联网设备扩展到多核SMP Linux应用程序。
MultiZone®Security由以下组件组成:
- MultiZone®nanoKernel –轻量级、可正式验证的裸内核,提供ram、rom、i/o和中断的策略驱动硬件强制分离。
- MultiZone®Messenger–在无共享内存的基础上跨区域交换安全消息的通信基础设施。
- MultiZone®Configurator–将完全链接的区域可执行文件与策略和内核相结合,生成安全的引导固件映像。
- MultiZone®Secure Boot –两阶段安全引导加载程序,用于验证固件映像的完整性和真实性(sha-256/sha-512/ECC)
(感觉这个算法差点意思)
MultiZone Security是如何工作的?
MultiZone Security可以无缝集成到现有的IDE中,例如Eclipse或基于命令行的工具集。
- 应用程序块分别为每个区域编写、编译和链接,生成一组elf或hex文件。
- 设置多区域策略是为了实现每个区域所需的ram、rom、i/o和中断隔离——RWX,粒度低至4字节。
- 最后,调用MultiZone Configurator将区域elf/hex文件与MultiZone运行时合并为签名的固件映像。
- 整个系统可以使用现有的GNU或Eclipse工具集进行编写、编译和调试。
功能
- 抢占式实时调度器:循环/协作,可配置时间刻度,cpu开销<1%
- 可正式验证,完全以程序集形式编写,自包含-无第三方库依赖关系
- 无限制数量的隔离受信任执行环境(区域)—硬件强制执行,策略定义
- 每个区域最多32个内存映射资源,即闪存、ram、i/o、uart、gpio、定时器等。
- 顶级配置和自然对齐配置的任意组合—最小粒度为4字节
- 读、写、执行策略的任何组合—允许资源重叠,但不建议使用
- 内置支持按区域配置的围栏,即缓存/管道/指令/加载/存储
- 完全支持PLIC和CLIC中断–完全可配置的区域/中断映射
- 完全支持安全的用户模式中断处理程序,即使没有“N”扩展
- 完全支持低延迟矢量中断、可抢占中断和等待中断-挂起模式
- 针对大多数受保护指令的内置陷阱和模拟,即CSR只读
- 基于消息传递的安全区域间通信基础架构—无共享内存/缓冲区
- 用于保护模式执行的C库包装——通过ECALL异常处理机制
- 签名引导适用于两阶段引导室和/或公钥/信任根/PUF–SHA-256/ECC
- 与任何能够运行Java 1.8的操作系统兼容的命令行配置工具
开发环境
- Eclipse IDE,包括MCU和GNU工具链插件以及OpenOCD/JTAG/GDB实时调试
- AndeSight™ 带ICE或OpenOCD的IDE
- SiFive FreedomStudio IDE,包括MCU和GNU工具链插件以及OpenOCD/JTAG/GDB实时调试
- Linux和Windows命令行工具(make、gcc、gdb等)–本机Linux、Windows所需的Java 1.8
- X300(Rocket)、Andes N(X)25、SiFive E31和S51的内置板支持包
系统要求
- 带“S”或“U”扩展的32位或64位RISC-V ISA
- 符合1.10版的物理内存保护
- 4KB闪存和1KB RAM
Resources
以下是相关的资料