RISC-V生态全景解析(四):玄铁VirtualZone基于RISC-V架构的安全扩展

简介: 芯片开放社区(OCC)面向开发者推出RISC-V系列内容,通过多角度、全方位解读RISC-V,系统性梳理总结相关理论知识,构建RISC-V知识图谱,促进开发者对RISC-V生态全貌的了解。

编辑语:

芯片开放社区(OCC)面向开发者推出RISC-V系列内容,通过多角度、全方位解读RISC-V,系统性梳理总结相关理论知识,构建RISC-V知识图谱,促进开发者对RISC-V生态全貌的了解。


前几期【技术解码】,我们借鉴知识图谱理念梳理了RISC-V架构的起源、发展与未来趋势,解读了RISC-V代码密度的现状,让开发者了解了RISC-V生态全貌。为了帮助大家更快融入RISC-V生态,我们将从今天起侧重于RISC-V实战技术,为大家提供更多更具参考价值的专业知识和经验。


本文是RISC-V系列中“安全拓展”主题的内容,将带大家认知RISC-V架构的安全拓展能力,并展示玄铁C系列处理器基于RISC-V架构实现的安全拓展。


01 导语

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


为了解决智能设备、物联网设备所面临的安全威胁,终端芯片通常需要提供可信执行环境(Trusted Execution Environment,简称TEE),确保芯片内的系统程序、终端参数、安全数据和用户数据不被篡改或非法获取。


可信执行环境目前在移动、支付、DRM、汽车、无人机、物联网等应用领域已基本经成为标配。目前较为成熟的处理器可信执行环境技术主要有ARM的TrustZone、Intel的SGX以及AMD的SEV等。


玄铁C系列处理器基于RISC-V架构实现的安全扩展,主要是基于RISC-V架构提供的PMP(Physical Memory Protection)保护机制和多层特权模型,虚拟出多个相互隔离的可执行域(Zone),从而实现了RISC-V架构上的可信执行环境(TEE),并保护Zone内的软硬件信息,包括软件、内存、外设、I/O等免受其他Zone的非法访问。


处理器资源包括Cache、中断、内存、代码执行等经过隔离之后,处理器将分时地运行在不同的Zone内,配合SoC其他的保护机制如IOPMP,共同构建一个基于软硬件协同工作的安全系统。


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

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


image.png


但实际上,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模式环境可以通过更高层的特权来管理。


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

虽然RISC-V架构的处理器具备物理内存保护、多层权限模型、内存管理单元等技术来支持可信执行环境功能的实现,但处理器仍然需要支持其他安全规范才能创建完全可用的安全执行环境。


为了满足TEE的隔离要求,玄铁C系列处理器在RISC-V架构基础上进行了安全扩展。 该系列处理器在软件的协调下可以虚拟出多个执行域(Zone),每个Zone增加了域标识,也就是Zone ID,整体架构如Figure 2所示。每个Zone可以独立地运行各自的操作系统以及基于该操作系统的应用程序。


操作系统运行在超级用户特权模式,应用程序运行在普通用户特权模式。处理器根据需要在不同的Zone里切换运行。当处理器切换到某一Zone运行时,他将实时占用整个物理核,并且处理器的域标识也将同时被更新成相应执行域的标识。Zone的切换由运行在最高模式(机器模式)下的可信固件(TF)来完成。


image.gif


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


04 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),从而增加对关键信息的保护。


image.gif


05 IOPMP

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


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


① 请求端连接IOPMP

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


image.gif


② 目标端连接IOPMP

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


image.gif


③ 请求端和目标端级联IOPMP

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


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


image.gif


06 总结

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


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





相关文章
|
2天前
|
机器学习/深度学习 安全 大数据
揭秘!企业级大模型如何安全高效私有化部署?全面解析最佳实践,助你打造智能业务新引擎!
【10月更文挑战第24天】本文详细探讨了企业级大模型私有化部署的最佳实践,涵盖数据隐私与安全、定制化配置、部署流程、性能优化及安全措施。通过私有化部署,企业能够完全控制数据,确保敏感信息的安全,同时根据自身需求进行优化,提升计算性能和处理效率。示例代码展示了如何利用Python和TensorFlow进行文本分类任务的模型训练。
19 6
|
22天前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
42 8
|
25天前
|
安全 Java 编译器
Java 泛型深入解析:类型安全与灵活性的平衡
Java 泛型通过参数化类型实现了代码重用和类型安全,提升了代码的可读性和灵活性。本文深入探讨了泛型的基本原理、常见用法及局限性,包括泛型类、方法和接口的使用,以及上界和下界通配符等高级特性。通过理解和运用这些技巧,开发者可以编写更健壮和通用的代码。
|
24天前
|
安全 网络安全 Android开发
深度解析:利用Universal Links与Android App Links实现无缝网页至应用跳转的安全考量
【10月更文挑战第2天】在移动互联网时代,用户经常需要从网页无缝跳转到移动应用中。这种跳转不仅需要提供流畅的用户体验,还要确保安全性。本文将深入探讨如何利用Universal Links(仅限于iOS)和Android App Links技术实现这一目标,并分析其安全性。
135 0
|
3月前
|
机器学习/深度学习 网络协议 安全
安全DNS服务
【8月更文挑战第18天】
85 16
|
3月前
|
存储 监控 安全
大数据架构设计原则:构建高效、可扩展与安全的数据生态系统
【8月更文挑战第23天】大数据架构设计是一个复杂而系统的工程,需要综合考虑业务需求、技术选型、安全合规等多个方面。遵循上述设计原则,可以帮助企业构建出既高效又安全的大数据生态系统,为业务创新和决策支持提供强有力的支撑。随着技术的不断发展和业务需求的不断变化,持续优化和调整大数据架构也将成为一项持续的工作。
|
3月前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
在5G电信领域,Kubernetes集群中部署微服务至关重要,但也带来了重大的安全挑战。Istio作为一个强大的开源服务网格,能有效地管理这些微服务间的通信,通过其控制平面自动将Sidecar代理注入到各微服务Pod中,确保了安全且高效的通信。Istio的架构由数据平面和控制平面组成,其中Sidecar代理作为Envoy代理运行在每个Pod中,拦截并管理网络流量。此外,Istio支持多种Kubernetes发行版和服务,如EKS等,不仅增强了安全性,还提高了应用性能和可观测性。
71 0
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
|
3月前
|
机器学习/深度学习 传感器 安全
|
3月前
|
区块链 C# 存储
链动未来:WPF与区块链的创新融合——从智能合约到去中心化应用,全方位解析开发安全可靠DApp的最佳路径
【8月更文挑战第31天】本文以问答形式详细介绍了区块链技术的特点及其在Windows Presentation Foundation(WPF)中的集成方法。通过示例代码展示了如何选择合适的区块链平台、创建智能合约,并在WPF应用中与其交互,实现安全可靠的消息存储和检索功能。希望这能为WPF开发者提供区块链技术应用的参考与灵感。
58 0
|
3月前
|
安全 开发者 数据安全/隐私保护
Xamarin 的安全性考虑与最佳实践:从数据加密到网络防护,全面解析构建安全移动应用的六大核心技术要点与实战代码示例
【8月更文挑战第31天】Xamarin 的安全性考虑与最佳实践对于构建安全可靠的跨平台移动应用至关重要。本文探讨了 Xamarin 开发中的关键安全因素,如数据加密、网络通信安全、权限管理等,并提供了 AES 加密算法的代码示例。
52 0

热门文章

最新文章

推荐镜像

更多