|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
5 q7 E, Y4 C4 ~3 l) }
本文是RISC-V系列中“安全拓展”主题的内容,将带大家认知RISC-V架构的安全拓展能力,并展示玄铁C系列处理器基于RISC-V架构实现的安全拓展。# s+ F; M5 a3 n5 L
2 P* v8 y6 A/ B" ?随着互联网和物联网的快速发展,全球联网设备数量高速增长,“万物互联”成为全球网络未来发展的重要方向。但移动平台业务繁荣的同时也催生了多样化的安全问题,目前应用普遍存在被破解、数据被窃取篡改等安全风险,对金融数据安全、个人隐私数据保护、业务数据完整性等造成极大的威胁。; W. \7 k4 C0 {* K
为了解决智能设备、物联网设备所面临的安全威胁,终端芯片通常需要提供可信执行环境(Trusted Execution Environment,简称TEE),确保芯片内的系统程序、终端参数、安全数据和用户数据不被篡改或非法获取。7 w$ ~: `# ]' X$ m/ A( Q) g
可信执行环境目前在移动、支付、DRM、汽车、无人机、物联网等应用领域已基本经成为标配。目前较为成熟的处理器可信执行环境技术主要有ARM的TrustZone、Intel的SGX以及AMD的SEV等。 a- g5 x# O- m
玄铁C系列处理器基于RISC-V架构实现的安全扩展,主要是基于RISC-V架构提供的PMP(Physical memory Protection)保护机制和多层特权模型,虚拟出多个相互隔离的可执行域(Zone),从而实现了RISC-V架构上的可信执行环境(TEE),并保护Zone内的软硬件信息,包括软件、内存、外设、I/O等免受其他Zone的非法访问。7 Q7 ~6 o4 Y8 n* N6 E0 F2 W
处理器资源包括Cache、中断、内存、代码执行等经过隔离之后,处理器将分时地运行在不同的Zone内,配合SOC其他的保护机制如IOPMP,共同构建一个基于软硬件协同工作的安全系统。, x6 o5 }+ d5 M, T7 [
. l. V. v- y: L
RISC-V架构的安全拓展能力# w/ d5 S. X7 U! z
目前传统的RISC-V处理器并没有提供类似ARM TrustZone的隔离技术。RISC-V处理器整体运行在REE(Rich Execution Environment)环境,如Figure 1所示:7 T" b) F5 I, e# d
$ `, D ~& F& U, r! B: H; A
但实际上,RISC-V技术提供了有两种具备安全扩展能力的属性:物理内存保护(PMP)和机器特权模式(M-mode)。2 [, O1 U/ l" I! ]/ F
PMP物理地址保护技术可以把处理器的访问空间划分出任意大小的物理内存区域,不同的区域可以授予不同的访问权限,PMP功能可以将多个S模式的环境相互分离,我们将在下面的章节详细阐述。ARM也定义了仅支持Cortex-M体系结中的PMP(ARM称之为MPU)。' Z- G* d I: k' i+ c
第二种功能是机器模式,作为超级用户特权模式的安全监视层(类似ARM上的Monitor模式)。M模式可用于管理多个S模式环境的执行,并能拦截来自任何S/U模式环境的中断和异常。有了PMP和M-mode, 这就意味着:S-mode模式环境可以相互隔离以及S-Mode模式环境可以通过更高层的特权来管理。) F4 Z/ N/ j+ k: G, f2 y
" P7 r. x8 o8 g; E- C' j) T玄铁C系列处理器的安全拓展+ |# M* l$ p- _6 j) I
虽然RISC-V架构的处理器具备物理内存保护、多层权限模型、内存管理单元等技术来支持可信执行环境功能的实现,但处理器仍然需要支持其他安全规范才能创建完全可用的安全执行环境。; ~+ \+ f' S' C' X* s; J' i
为了满足TEE的隔离要求,玄铁C系列处理器在RISC-V架构基础上进行了安全扩展。 该系列处理器在软件的协调下可以虚拟出多个执行域(Zone),每个Zone增加了域标识,也就是Zone ID,整体架构如Figure 2所示。每个Zone可以独立地运行各自的操作系统以及基于该操作系统的应用程序。; T" Y8 ]# T# I# X$ [! g
操作系统运行在超级用户特权模式,应用程序运行在普通用户特权模式。处理器根据需要在不同的Zone里切换运行。当处理器切换到某一Zone运行时,他将实时占用整个物理核,并且处理器的域标识也将同时被更新成相应执行域的标识。Zone的切换由运行在最高模式(机器模式)下的可信固件(TF)来完成。
6 j6 F( i) u& L9 h P$ C- W. U$ R
# m8 \! }8 w/ z$ k( ?; c4 `Zone之间访问隔离通过PMP实时切换来实现,PMP是RISC-V特权ISA的一部分,用于隔离机器模式和超级用户模式/普通用户模式之间的物理地址访问,玄铁处理器的L1/L2 Cache同时也受PMP保护。
- T4 g0 h7 p0 |) U
: F$ Z+ d" w; QPMP: a! A' k5 y+ t% k( v
RISC-V架构提供了一种PMP物理内存保护机制,用于隔离M模式与S/U模式下的内存访问。只有M模式才有权限配置PMP。PMP包含几组(通常是8到16个)地址寄存器以及相应的配置寄存器,这些配置寄存器可以授予或拒绝S/U模式的读、写和执行权限。PMP同时也能保护内存映射I/O (MMIO),M模式可信固件可以通过配置PMP来约束处理器对外设I/O的访问。
2 f! k- {8 @8 [% e. F8 v, s当硬件线程从一个Zone切换到另一个Zone时,PMP配置同时也需要切换。M模式可信固件需要先保存当前Zone的PMP配置,然后载入下一个即将切换的Zone的PMP配置,完成对内存和内存映射I/O (MMIO)访问权限的切换。
; R0 |. s5 ~% A) q4 n/ _# [( }当多个Zone需要共享内存时,可以将需要共同访问的内存区域的访问权限同时授予给多个Zone,也就是将该块内存的允许访问权限写到每个Zone的PMP配置表里,PMP表会在Zone切换时由可信固件进行更新。Figure 3是一个典型的多个Zone的PMP配置图, SHM区域是Zone间允许共同访问的共享内存区域。 |
|