写点什么

玄铁 VirtualZone:基于 RISC-V 架构的安全扩展

发布于: 1 小时前

关键词:平头哥玄铁、RISC-V 处理器、RISC-V 指令集,玄铁 CPU,IoT 芯片,TEE


导语

随着互联网和物联网的快速发展,全球联网设备数量高速增长,“万物互联”成为全球网络未来发展的重要方向。但移动平台业务繁荣的同时也催生了多样化的安全问题,目前应用普遍存在被破解、数据被窃取篡改等安全风险,对金融数据安全、个人隐私数据保护、业务数据完整性等造成极大的威胁。


为了解决智能设备、物联网设备所面临的安全威胁,终端芯片通常需要提供可信执行环境(Trusted Execution Environment,TEE),确保芯片内的系统程序、终端参数、安全数据和用户数据不被篡改或非法获取。可信执行环境目前在移动、支付、DRM、汽车、无人机、物联网等应用领域已基本经成为标配。目前较为成熟的处理器可信执行环境技术主要有 ARM 的 TrustZone、Intel 的 SGX 以及 AMD 的 SEV 等。


本文主要描述基于 RISC-V 架构的玄铁 C 系列处理器的安全扩展,该扩展主要基于 RISC-V 架构提供的 PMP 保护机制和多层特权模型,虚拟出多个相互隔离的可执行域(Zone),从而实现了 RISC-V 架构上的可信执行环境(TEE),并保护 Zone 内的软硬件信息,包括软件、内存、外设、I/O 等免受其他 Zone 的非法访问。处理器资源包括 Cache、中断、内存、代码执行等经过隔离之后,处理器将分时地运行在不同的 Zone 内,配合 SoC 其他的保护机制如 IOPMP,共同构建一个基于软硬件协同工作的安全系统。


RISC-V 架构的安全拓展能力 

目前传统的 RISC-V 处理器并没有提供类似 ARM TrustZone 的隔离技术。RISC-V 处理器整体运行在 REE(Rich Execution Environment)环境,如 Figure 1 所示。



但实际上,RISC-V 技术提供了有两种具备安全扩展能力的属性:物理内存保护(PMP)和机器特权模式(M-mode)。PMP 物理地址保护技术可以把处理器的访问空间划分出任意大小的物理内存区域,不同的区域可以授予不同的访问权限,PMP 功能可以将多个 S 模式的环境相互分离,我们将在下面的章节详细阐述。ARM 也定义了仅支持 Cortex-M 体系结中的 PMP(ARM 称之为 MPU)。第二种功能是机器模式,作为超级用户特权模式的安全监视层(类似 ARM 上的 Monitor 模式)。M 模式可用于管理多个 S 模式环境的执行,并能拦截来自任何 S/U 模式环境的中断和异常。有了 PMP 和 M-mode, 这就意味着:S-mode 模式环境可以相互隔离以及 S-Mode 模式环境可以通过更高层的特权来管理。


玄铁 C 系列处理器的安全拓展

虽然 RISC-V 架构的处理器具备物理内存保护、多层权限模型、内存管理单元等技术来支持可信执行环境功能的实现,但处理器仍然需要支持其他安全规范才能创建完全可用的安全执行环境。为了满足 TEE(Trusted Execution Environment)的隔离要求,玄铁 C 系列处理器在 RISC-V 架构基础上进行了安全扩展。 该系列处理器在软件的协调下可以虚拟出多个执行域(Zone),每个 Zone 增加了域标识,也就是 Zone ID,整体架构如 Figure 2 所示。每个 Zone 可以独立地运行各自的操作系统以及基于该操作系统的应用程序。操作系统运行在超级用户特权模式,应用程序运行在普通用户特权模式。处理器根据需要在不同的 Zone 里切换运行。当处理器切换到某一 Zone 运行时,他将实时占用整个物理核,并且处理器的域标识也将同时被更新成相应执行域的标识。Zone 的切换由运行在最高模式(机器模式)下的可信固件(TF)来完成。



Zone 之间访问隔离通过 PMP(Physical Memory Protection)实时切换来实现,PMP 是 RISC-V 特权 ISA 的一部分,用于隔离机器模式和超级用户模式/普通用户模式之间的物理地址访问,玄铁处理器的 L1/L2 Cache 同时也受 PMP 保护。


Physical Memory Protection (PMP)

RISC-V 架构提供了一种 PMP 物理内存保护机制,用于隔离 M 模式与 S/U 模式下的内存访问。只有 M 模式才有权限配置 PMP。PMP 包含几组(通常是 8 到 16 个)地址寄存器以及相应的配置寄存器,这些配置寄存器可以授予或拒绝 S/U 模式的读、写和执行权限。PMP 同时也能保护内存映射 I/O (MMIO),M 模式可信固件可以通过配置 PMP 来约束处理器对外设 I/O 的访问。


当硬件线程从一个 Zone 切换到另一个 Zone 时,PMP 配置同时也需要切换。M 模式可信固件需要先保存当前 Zone 的 PMP 配置,然后载入下一个即将切换的 Zone 的 PMP 配置,完成对内存和内存映射 I/O (MMIO)访问权限的切换。


当多个 Zone 需要共享内存时,可以将需要共同访问的内存区域的访问权限同时授予给多个 Zone,也就是将该块内存的允许访问权限写到每个 Zone 的 PMP 配置表里,PMP 表会在 Zone 切换时由可信固件进行更新。Figure 3 是一个典型的多个 Zone 的 PMP 配置图, SHM 区域是 Zone 间允许共同访问的共享内存区域。


机器模式可以通过 PMP 的锁定功能将机器模式的访问限制在有限的区域内,比如只允许机器模式访问、执行划分给可信固件的内存区域,以减少受到对机器模式攻击的影响,也就是 Supervisor Memory Access Prevention(SMAP)和 Supervisor Memory Execution Prevention(SMEP),从而增加对关键信息的保护。



IOPMP

RISC-V 架构提供了一种 PMP 物理内存保护机制,用于保护 RISC-V 处理器在不同特权模式下的对内存和 MMIO 的访问。


总线上的其他主设备同样需要对内存的访问进行保护,也就是外设需要增加 IOPMP。IOPMP 可以像 PMP 一样定义访问权限,他会检查从总线或者主设备过来的读、写传输是否符合权限访问规则,只有合法的读、写请求才能进一步传输到目标设备上。通常有 3 种方法来连接 IOPMP:


  • 请求端连接 IOPMP

在每个主设备和总线之间增加一个 IOPMP,类似 RISC-V 的 PMP。不同的主设备需要分别新增一个 IOPMP,IOPMP 之间互相独立。这种设计较为简单,也提供了灵活性,但 IOPMP 不能在主设备之间共享。如下图所示:



  • 目标端连接 IOPMP

目标端的 IOPMP 需要对不同主设备发来的传输进行区分,这就需要每个主设备的访问请求都要附带额外的 Master ID。如下图所示:



  • 请求端和目标端级联 IOPMP

在复杂的 SoC 系统中,往往存在 IOPMP 级联的使用情况。典型的场景就是 RISC-Cores 自身带有 PMP,处理器并不需要目标端的 IOPMP 再次对他的访问进行过滤。通用的处理方法是,在 IOPMP 的表项里取消对 CPU 访问的约束,但缺点是这会占用 IOPMP 表项,也会影响效率。为了提高 IOPMP 级联下的访问效率,IOPMP 需要提供一种机制来直通部分主设备的访问,比如提供可配置的以直通模式访问的主设备列表。


下图是玄铁处理器采用 PMP、IOPMP 来构建安全 SoC 的系统参考框图:



总结

本文详细介绍了 RISC-V 架构在实现 TEE 可信执行环境上所有具备的安全能力。平头哥玄铁处理器在 RISC-V 架构的物理内存保护、多层权限模型、内存管理单元等技术的基础上,对部分安全特性进行了扩展,实现了基于 Zone 管理的可信执行环境。该技术方案不需要虚拟化的支持,只需要在支持 U、S 和 M 三种特权模式的情况下,并在可信固件的管理下,实现了具备多个可信执行环境的能力。


当不同 Zone 之间需要切换时,运行在机器模式的可信固件需要对 Zone 的上下文进行保存和切换。虽然看起来这会带来开销,但像 ARM TrustZone 的虚拟化技术同样需要对世界进行切换,这部分切换的工作同样被隐藏在 Monitor 的可信固件中。不同的是,ARM TrustZone 只虚拟出了 2 个世界,而玄铁 RISC-V 处理器在安全扩展之后,最多允许同时支持 16 个 Zone,这为以后的软件安全方案提供了更多的可能。


本文转自平头哥芯片开放社区(occ),更多详情请点击https://occ.t-head.cn/space?channelName=1

用户头像

还未添加个人签名 2021.08.24 加入

还未添加个人简介

评论

发布
暂无评论
玄铁VirtualZone:基于RISC-V架构的安全扩展