ARM安全技术-使用TrustZone技术构建安全系统(翻译)

第一章 介绍

本章提供了一些与嵌入式系统安全相关的背景知识。
本章包括以下部分:
么是安全1-2页
1-4页的安全需求
胁是什么1-6页

1.1 什么是安全/h2>

在非常抽象的术语中,术语security可用于涵盖设计的许多非常不同的基本特性。但是,它本质上是系统的一个属性,确保有价值的资源不会被复制、损坏,或者让真正的用户无法使用。每个系统设计都需要一组不同的安全属性,这取决于它试图抵御恶意攻击的资产的类型和价值。
资产
值得保护的有价值的资源。资产可以是有形的对象,例如用户密码,也可以是无形的资产,例如网络可用性。
攻击
故意获取、损坏或破坏其无权访问的资产的行为。
攻击可能包括使用恶意软件、硬件监控和硬件篡改。
保护
设计一个系统行为,包括硬件或软件机制,提供对抗攻击的对策。

1.1.1 基本安全特性

几乎所有高级属性都可以其作为基础的基本安全属性是机密性和完整性。
保密性
机密资产不能被一组定义的攻击复制或窃取。此属性对于密码和加密密钥等资产是必需的。
完整性
保证其完整性的资产不受一组已定义的攻击的修改。此属性对于系统其余安全性所基于的某些设备上的根机密以及安全软件在运行后都是必需的。
真实性
在某些情况下,设计不能提供完整性,因此提供了真实性的属性。
在这种情况下,攻击者可以更改资产的值,但防御者将能够在使用资产之前检测到更改,从而在攻击导致安全错误之前检测到更改。
此属性对于安全软件至关重要。
如果攻击者可以在程序代码加载到安全执行位置之前对其进行篡改,而不被检测到,则可以绕过软件提供的安全性。

1.1.2 安全解决方案的局限性

所有的安全解决方案都是为了防御可能遭受的攻击的一个子集。防御所有可能的攻击是不可能的任务;总有人愿意花费大量的时间和金钱来使用非常复杂的攻击来破坏任何安全方案。因此,设计必须决定它要保护哪些资产,以及它要保护这些资产免受哪些可能的攻击。这也许是设计过程中最关键的部分;
保护错误资产免受错误或不完整攻击列表的设计很容易被破坏。
假设所有的安全性都可以用足够的时间和金钱来打破,那么设计的安全性要求不应该被描述为“无法绕过”,而应该用价值术语来描述:“对资产B的攻击A至少需要Y天和Z美元”。如果一组对策意味着一次成功的攻击将花费太长或太多的时间,那么防御就是成功的。大多数攻击者在这种情况下会转移到另一个目标。

1.2 安全需求

嵌入式设备正在处理越来越有价值的数据,例如消费者银行凭证。它们也在稳步成为具有高水平的设备外连接的开放软件平台,使消费者能够下载任意第三方应用程序。这使得这些设备处于高风险状态。在桌面环境中,开放式软件平台、任意应用程序下载和设备上的有价值资产的组合被证明显著增加了被利用的安全漏洞的风险。此外,如果通过这些系统的数据的价值在增加,攻击者更有可能投资于破坏它们。

ARM安全技术-使用TrustZone技术构建安全系统(翻译)

2.1.1 外部硬件安全模块

嵌入式应用的经典安全解决方案是在主SoC之外包含一个专用的硬件安全模块或可信元件。例如,手机中的SIM卡,或机顶盒中的条件访问智能卡。
优点
外部安全设备将资产封装在一个物理设备中,该物理设备是为可靠的安全性而设计的。完全独立的设计和制造流程,可以使用技术和硅工艺,从而提供高水平的抗篡改性和物理安全性。智能卡的制造和个性化过程经常通过批准的评估方案得到正式认证。这使得它们适合于需要高度安全保证的用例,例如信用卡和借记卡支付方案。
缺点
用于智能卡的硬件技术和过程对于标准SoC设计来说是不切实际的,因为它们会给设计过程增加很大的工作量,并损害设备的面积、功率效率和性能。提供物理安全性的制造方法也迫使处理器性能的下降(损耗大约为5-20MHz),以及设备内少量的RAM损耗。这些设计特征将可以部署在智能卡上的可能用例限制为可以从非易失性存储器运行的相对静态程序,这些程序不需要安全边界上连续的高带宽通信。智能卡的另一个问题是,它们只提供处理和安全存储功能;它们无法直接访问父设备的任何用户界面。智能卡依赖于在其安全边界之外运行的软件来提供这些设施,因此无法保护所有感兴趣的资产。例如,用户输入的个人识别码(PIN)必须由智能卡之外的不太安全的软件管理,从而使其容易受到攻击。智能卡的商业缺点可能比技术上的更为严重。在主SoC旁边提供一个智能卡是昂贵的,因此对大多数资产来说是不经济的,因为它们不够有价值。

2.1.2 内部硬件安全模块

位于SoC中的硬件安全模块牺牲了智能卡所提供的硬件防御,以降低成本并方便成为系统的一个集成部分。集成模块的精确形式各不相同,但有两种主要形式。第一个是管理加密操作和密钥存储的硬件模块。第二个是一个通用的处理引擎,放在主处理器旁边,它使用自定义硬件逻辑来防止对敏感资源的未经授权的访问。
优点
与智能卡选项相比,这些系统的主要优势是显著的成本降低和性能改进。
为安全子系统提供专用通用处理器的系统在安全性方面与TrustZone硬件解决方案相当。
缺点
加密模块实现与智能卡有一个类似的问题,即它们具有受限的边界,因此只能保护加密密钥材料。密码学本身是一种工具,而不是一个目标;由密码学方法保护的资源将不可避免地需要在密码学模块之外使用,它们不再受其保护并且可能受到攻击。与TrustZone系统相比,提供专用于安全子系统的辅助通用处理器的设计具有较小的缺点。一个问题是,该设计需要单独的物理安全处理器。这种处理器通常比主应用程序处理器的功能要弱,而且还消耗大量的硅晶面积。另外,两个处理器之间的通信需要将任何数据刷新到相关存储器中,而相关存储器通常是外部存储器。这个操作很费时,需要消耗大量的能量。另一个问题是,任何资源分离都需要在SoC内部的专用硬件扩展中实现。这需要大量的设计和测试工作,迁移或扩展系统变得更加困难。
这里介绍的密码模块和辅助处理器解决方案通常试图保护系统的功能方面。SoC中调试和测试机制所带来的系统安全风险往往被忽略,并提供了一个易受攻击的接口。为了避免这个问题,必须完全禁用调试,这使得在现场诊断软件问题变得困难。

2.1.3 软件虚拟化

虚拟化是一种软件安全机制,其中一个高度可信的管理层(称为hypervisor)以通用处理器的特权模式运行。
hypervisor使用内存管理单元(MMU)分离运行在其上的多个独立软件平台,将每个平台放在由hypervisor软件控制的虚拟机中。
一些虚拟机监控程序的紧凑性意味着,如果能够对它们进行彻底的测试,那么在其控制的一个虚拟机中运行的软件可以确信,它不会受到在另一个虚拟机中运行的软件的攻击。
注意
本节介绍半虚拟化,这是嵌入式市场中常见的虚拟化类型。也存在对于hypervisor有一种特殊的处理器模式的处理器体系结构。这些体系结构允许hypervisor托管一个完整的操作系统,然后可以使用MMU细分hypervisor提供的内存空间。
优点
任何带有MMU的处理器都可以用来实现虚拟化解决方案,一些常见的富操作系统已经被移植到它们上面运行,也不需要额外的硬件来实现hypervisor。安全敏感的应用程序可以被移植到运行在hypervisor上面的安全环境中运行,但不在富操作环境的视图范围内。hypervisor可以提供通信机制,用于允许软件虚拟机通信。
缺点
虚拟化技术提供的隔离仅限于实现hypervisor的处理器。系统中的任何其他总线主机,如DMA引擎和图形处理单元(GPU),都可以绕过hypervisor提供的保护,因此也必须由hypervisor管理,以强制执行所需的安全策略。
这在不损害系统性能的情况下很难实现;在不降低图形性能的情况下验证可编程GPU的复杂输入超出了大多数虚拟化解决方案的范围。虚拟化忽略与硬件攻击相关的安全问题,例如使用调试或测试基础结构的威胁。为了保护虚拟化系统免受此类攻击,您需要完全禁用调试和测试可见性,这使得软件开发和现场缺陷诊断非常困难。

2.2 TrustZone 硬件安全

与前一节讨论的安全系统相关的问题之所以存在,是因为设计只能保护系统中受限制部分的某些资产,或者是因为安全解决方案忽略了攻击问题空间的大部分。在许多情况下,安全设计的限制性意味着错误的资产受到保护。加密硬件模块主要设计用于保护密钥,这些密钥无疑是宝贵的资产,但如果攻击者在加密硬件之外的媒体播放器中使用解密内容时,能够反复窃取这些内容,那么密钥的保护对内容权限所有者来说就没有什么安慰作用。对今天部署的真实设备的攻击是广泛和多样的,但可以显示为涵盖了本章前面概述的所有攻击配置。任何只试图满足其中一个威胁区域的安全解决方案,都忽视了问题的一半以上,无法抵御现实世界中存在的许多攻击。这可能会使许多解决方案实现的安全级别低于它们打算提供的级别,从而意味着许多资产没有得到充分的保护。

2.2.1 系统范围安全

在嵌入式世界中实现可信计算的ARM方法是基于可信平台的概念;一种在整个系统设计中扩展安全基础设施的硬件架构。TrustZone体系结构并未对某个专用硬件模块中的资产进行保护,而是使系统的任何部分都变得安全,从而实现了包括功能单元和调试基础框架在内的端到端安全解决方案。适当使用建立在TrustZone架构之上的安全协议,例如安全启动和验证调试启用,许多可能的黑客和shack攻击威胁可以有某种形式的对策。如果这些防御措施可以与减轻实验室攻击相关风险的方法结合使用,例如,通过让每个设备使用统计上唯一的秘钥,那么将会呈现一个非常强大的解决方案。

第三章 TrustZone硬件架构

本章详细介绍了TrustZone硬件体系结构及其对系统结构、处理器和调试基础结构的影响。
本章包括以下部分:
3-2页概述
3-4页的系统架构
理器架构见第3-6页
试架构,第3-17页

3.1 概述

TrustZone硬件体系结构旨在提供一个安全框架,使设备能够应对其将遇到的许多特定威胁。TrustZone技术没有提供固定的一刀切的安全解决方案,而是提供了基础设施,允许SoC设计者从一系列可以在安全环境中实现特定功能的组件中进行选择。
该体系结构的主要安全目标实际上相当简单:能够构建一个可编程环境,使几乎任何资产的机密性和完整性都能免受特定攻击。一个具有这些特点的平台可以用来构建一系列广泛的安全解决方案,而这些解决方案在传统方法中并不具有成本效益。
系统的安全性是通过划分SoC的所有硬件和软件资源来实现的,这样它们就存在于两个世界中的一个:安全子系统的安全世界,以及其他一切的正常世界。启用了TrustZone的AMBA3 AXI总线结构中提供的硬件逻辑确保正常世界组件不能访问任何安全世界的资源,从而在两者之间建立一个强大的安全边界。将敏感资源放在安全世界实现了在安全处理器核心上运行的健壮软件,可以保护几乎任何资产免受许多可能的攻击,包括那些通常难以保护的攻击,例如使用键盘或触摸屏输入的密码。  
TrustZone硬件体系结构的第二个方面是在一些ARM处理器核心中实现的扩展。这些附加功能使单个物理处理器核心能够以时间切片的方式安全高效地执行来自正常世界和安全世界的代码。这消除了对专用安全处理器核心的需求,节省了硅晶面积和功耗,并允许高性能安全软件能够与正常世界操作环境同时运行。
TrustZone硬件体系结构的最后一个方面是一个具有安全意识的调试基础框架,它可以控制对安全世界调试的访问,而不影响正常世界的调试可见性。这三个方面的每一个都将在本章后续章节中详细讨论。注意《ARM架构参考手册》和许多硬件组件技术参考手册使用了“安全”和“非安全”这两个术语,它们相当于安全世界和正常世界。
仅提及硬件时,本文档将使用安全和非安全命名约定,以避免混淆。术语“安全世界”和“正常世界”将用于描述构成每个执行环境的硬件和软件的组合。

3.2 系统架构

系统IP的体系结构更改提供了将硬件资源分为两个世界的机制。本节介绍这些更改的影响以及已修改的组件。

3.2.1 The AMBA3 AXI system bus

扩展总线设计的最大特点是为主系统总线上的每个读写通道添加额外的控制信号。这些位称为非安全位或NS位,并在公共AMBA3高级扩展接口(AXI)总线协议规范中定义。
WPROT[1]:写事务-低是安全的,高是不安全的。
RPROT[1]:读事务-低是安全的,高是不安全的。
所有总线master设备在进行新事务时设置这些信号,总线或slave设备解码逻辑必须对它们进行解释,以确保不违反所需的安全分离。所有不安全的master设备必须在硬件中设置NS位为高,这使得它们无法访问安全的slave设备。访问的地址解码将与任何安全slave不匹配,事务将失败。
如果非安全master尝试访问安全的slave,则实现将定义该操作是以静默方式失败还是生成错误。根据硬件外围设备设计和总线配置,slave或总线可能引起错误,因此可能发生SLVERR(从机错误)或DECERR(解码错误)。

3.2.2 The AMBA3 APB peripheral bus

TrustZone体系结构最有用的特性之一是能够保护外围设备,如中断控制器、计时器和用户I/O设备。这使得安全环境得以扩展,从而可以解决一些更广泛的安全问题,这些问题不仅仅需要一个安全的数据处理环境。安全中断控制器和定时器允许不可中断的安全任务监视系统,安全时钟源支持健壮的DRM,安全键盘外围设备支持安全输入用户密码。AMBA3规范包括一个称为高级外围总线(APB)的低门计数、低带宽外围总线,它使用AXI-to-APB网桥连接到系统总线。APB总线不包含与NS bits相当的位。这确保了现有的AMBA2 APB外围设备与实现TrustZone技术的系统兼容。AXI-to-APB网桥硬件负责管理APB外围设备的安全性;网桥必须拒绝不适当安全设置的事务,并且不得将这些请求转发给外围设备。

3.2.3 Memory aliasing

将NS位添加到总线事务和系统中的任何缓存标记中,都可以被视为提供了第33个地址位。安全事务和非安全事物各有32位物理地址空间。
与任何地址空间一样,包括那些不使用TrustZone技术的地址空间,必须注意确保33位地址空间的使用方式使其存储的所有位置的数据保持一致,否则可能导致数据损坏。
考虑这样的情况:安全世界的master希望访问缓存的非安全slave。设计可以实现以下任一选择:
aster对slave进行非安全访问。
aster对slave进行安全访问,非安全的slave接受安全事务,但slave将这些访问视为不安全的。
在第二种设计中,硬件必须支持地址空间别名。在这个别名内存系统中,相同的内存位置在地址映射中显示为两个不同的位置,一个安全,一个不安全。因此,可以有多个值同时表示高速缓存中存在的相同数据。对于可修改的数据,此别名会导致一致性问题;如果一个数据副本被修改,而另一个存在于缓存中,则您将拥有两个不同版本的数据。系统设计者必须意识到潜在的数据一致性问题,并且必须采取措施避免这些问题。

3.3 Processor architecture

最重要的体系结构更改适用于实现体系结构安全扩展的ARM处理器。目前包括:
RM1176JZ(F)-S型处理器
otexA8处理器
ortex-A9处理器
ortex-A9MPcore处理器
这些设计中的每个物理处理器核心都提供了两个虚拟核心,一个被认为是不安全的,另一个是安全的,以及在它们之间可靠地进行上下文切换的机制,称为监视器模式。在主系统总线上发送的NS位的值是从执行指令或数据访问的虚拟核心的标识间接派生的。这使得虚拟处理器可以简单地集成到系统安全机制中;非安全的虚拟处理器只能访问非安全系统资源,但安全虚拟处理器可以看到所有资源。

ARM安全技术-使用TrustZone技术构建安全系统(翻译)
在将加密音频内容加载到普通世界媒体播放器中并在安全世界中解密的媒体应用中,安全世界软件可以在安全世界翻译表中映射包含属于媒体播放器的数据的非安全存储器。这允许安全世界直接访问包含需要解密的音频内容的非安全缓存线;这种类型的内存称为世界共享内存。因此,普通世界应用程序可以通过缓存层次结构中的任何级别将数据传递给安全世界中的伙伴任务。与要求将缓存数据从缓存中刷新并放入外部内存的解决方案相比,这使得高性能系统成为可能。
紧耦合存储器
ARM1176JZ(F)-S处理器支持紧耦合存储器(TCM),TCM是高性能的SRAM块,与L1缓存在内存层次结构中处于同一级别。根据合成时配置的TCM的总大小,每个指令和数据接口上最多有两个TCM块。软件可以将TCM的每个块配置为只进行安全访问,或只进行非安全访问,并独立控制每个块的基地址。
加速器一致端口
一些ARM处理器,如ARM Cortex-A9 MPCore处理器,包括一个可选的加速器一致端口(ACP)。ACP是处理器上的一个AXI从机接口,它允许连接到它的任何外围主机访问与处理器一致的物理内存映射。这允许外部外设访问位于ARM处理器缓存层次结构内的数据。这种技术减少了需要从ARM处理器的缓存中清除和/或失效数据的用例数量,提高了必须与外部外设(如DMA控制器)紧密共享数据的软件的性能。ARM处理器内存系统代表使用ACP的外部主机进行的内存访问的安全状态将与访问ACP的总线事务的安全状态相同。在ACP接口读取的ARPROT[1]信号的值将用于读取,而AWPROT[1]信号的值将用于写入。
AXI从机可以区分ARM处理器代表内部处理单元进行的事务和代表ACP事务进行的事务。这取决于处理器的微体系结构,且可能在所有实现中都不可用。Cortex-A9 MPcore处理器根据存储器访问的发起方设置以下AXI信号:
ARIDMx[2]: Read transaction – low if originator is the ARM processor, high if
it is the ACP.
AWIDMx[2]: Write transaction – low if originator is the ARM processor, high if
it is the ACP
该信号可由安全敏感从机的解码逻辑使用,以确定访问是否来自受信任的master。这项技术可以,例如,用于隐藏ARM处理器的物理内存映射的一部分,使其不被其他可以访问ACP的master看到。
注意
ACP只能像其他AXI从机一样进行安全访问。

3.3.3 安全中断

能够将IRQ和FIQ直接捕获到监视模式,而无需任何世界的代码干预的能力,允许为安全中断源创建灵活的中断模型。一旦执行到达监视器模式,受信任的软件可以相应地路由中断请求。当与具有安全意识的中断控制器结合时,这允许设计提供安全的中断源,而这些中断源不能被正常世界的软件操作。
ARM推荐的模型是使用IRQ作为正常世界的中断源,FIQ作为安全世界的中断源。IRQ是大多数操作环境中最常用的中断源,因此使用FIQ作为安全中断意味着对现有软件的修改最少。如果处理器在发生中断时运行的是正确的虚拟核心,则不会切换到监视器模式,中断将在当前世界中本地处理。如果核心在另一个世界,当一个中断发生时硬件陷入到监视器模式,监控软件会导致上下文切换并跳转到恢复的世界,此时中断会被接收。
注意
建议监视器始终在屏蔽中断的情况下执行。

ARM安全技术-使用TrustZone技术构建安全系统(翻译)
集群中任意数量的处理器可能在任何时间点处于安全世界中,并且处理器可以独立于集群中的其他处理器在世界之间进行转换。特定的软件实现可以选择限制安全世界软件的并发执行,以降低与复杂软件设计相关联的安全风险。
注意
在第5-13页的安全软件和多处理器系统中讨论了多处理对安全世界软件设计的潜在影响。
如第3-8页的Caches部分所述,集群中的每个缓存线都将其包含的数据的安全状态存储为其标记的一部分。这使得当集群中的处理器以SMP模式执行时,可以在L1处理器数据缓存中同时存储安全和非安全数据。一致性硬件在执行一致性操作时使用整个缓存标记,使其能够同时保持安全和非安全数据的一致性。
Snoop控制单元配置
SCU包括许多配置寄存器,它们决定SCU本身的配置,集群中每个ARM处理器的配置,以及处理器本地计时器对非安全内存事务的可访问性。
CU访问控制寄存器决定集群中哪些处理器可以重新编程SCU的配置寄存器。
CU安全访问控制寄存器确定非安全访问是否可以重新编程SCU配置寄存器或访问处理器本地计时器。
中断处理
Cortex A-profile多处理器系统包括一个集成的中断控制器,该控制器基于与PrimeCell通用中断控制器(PL390)相同的技术,如第4-6页所述。这个中断控制器提供了一个灵活的中断模型,它能够在多处理器集群中分配优先中断,打断在接收到高优先级中断时已经执行的低优先级中断处理程序。在同时实现安全扩展的多处理器系统中,此中断控制器可识别TrustZone。这允许它管理安全和非安全中断,并防止非安全的内存访问读取或修改安全中断的配置。
通过在中断安全寄存器中编程适当的位,可将由集成中断控制器管理的中断配置为安全中断。一旦中断安全,任何非安全访问都不能修改其配置。
由集成中断控制器管理的所有中断都被分配一个优先级,以确定是否允许它们打断已经由ARM处理器处理的异常。硬件确保低优先级中断将一直等到高优先级中断被清除后才发出给处理器。对优先级空间进行分区,以确保安全中断始终可以配置比非安全中断更高的优先级。为安全世界分配高优先级中断可用于防止非安全世界使用中断对安全世界执行拒绝服务攻击。
集成中断控制器可以支持本章前面描述的模型,导致它控制的安全中断生成FIQ异常,而它控制的非安全中断生成IRQ异常。在这种情况下,所有中断都由集成中断控制器管理,并且不可能从外部中断控制器直接生成中断。集成中断控制器还可以支持许多传统配置,这些配置使得FIQ和/或IRQ异常由外部中断触发器生成,完全绕过集成中断控制器。
可以独立地为FIQ和IRQ异常配置传统中断的生成:
果仅为FIQ异常启用传统模式,则集成控制器将其控制的安全和非安全中断路由到IRQ异常向量。
果仅为IRQ异常启用传统模式,则集成控制器将无法为非安全中断生成异常,安全中断将路由到FIQ异常向量。
果为FIQ和IRQ异常启用传统模式,则完全绕过集成中断控制器。
注意
如果在设计中使用它们,则到处理器集群的传统中断输入信号通常由一个或多个外部中断控制器生成。这些外部设备可以使用与TrustZone系统中的任何其他外部AXI或APB从属设备相同的方法进行安全保护。

3.4 调试架构

与安全扩展集成的系统基础设施的最后一部分是调试支持。ARM提供的调试解决方案分为两部分:处理器调试组件和系统调试组件。

3.4.1处理器调试控制

在引入安全扩展之前,ARM处理器包含一个调试控制信号,全局启用或禁用对处理器的调试器访问。在这些设计中,将安全敏感软件与富操作环境一起部署意味着必须全局禁用调试,否则您将面临来自简单硬件攻击的重大威胁。随着操作环境变得越来越大,越来越复杂,这开始成为一个远远不理想的情况,特别是当有大量的开发人员希望为富操作环境开发软件时。这些人通常需要在设备进入现场并启用安全软件之后调试他们的应用。TrustZone调试扩展将调试访问控制分成以下每个方面的独立可配置视图:
全特权入侵(JTAG)调试
全特权非侵入(跟踪)调试
全的用户侵入式调试
全的用户非侵入式调试
安全的特权调试访问由两个输入信号控制,分别是SPIDEN(入侵)和SPNIDEN(非入侵)。
安全用户模式调试访问由CP15寄存器中仅能通过安全特权进行访问的两个位SUIDEN(入侵)和SUNIDEN(非入侵)控制。这些设置使TrustZone处理器能够在设备部署后控制调试可见性。例如,可以提供完全正常世界的调试可见性,同时还可以阻止所有安全世界的调试。
注意
ARM处理器还包括全局调试启用输入信号:DBGEN和实现ARMv7体系结构的核心上的NIDEN。这些信号可用于禁用核心的所有调试可见性,包括正常世界的调试。
RMv6:DBGEN–全局侵入性和非侵入性调试启用。
RMv7:DBGEN–全局入侵调试启用。
RMv7:NIDEN–全局非侵入性调试启用。
多处理器调试控制
在实施多处理器扩展的ARM处理器中,如第3-13页带安全扩展部分的多处理器系统所述,集群中的每个处理器都提供独立的DBGEN、NIDEN、SPIDEN和SPNIDEN输入信号。这允许集群中的处理器子集以可能的方式进行调试。
注意
系统设计者必须知道,SMP数据一致性硬件可能允许启用侵入式调试的处理器修改禁用侵入式调试的处理器使用的数据。
性能分析
为了实现代码的低级基准测试,ARMV6和ARMV7应用级处理器在CP15中包含一个性能监视器。此硬件单元可用于定时代码执行和统计运行时可能发生的处理器事件,如缓存线回收。为了防止在针对安全世界软件的攻击中使用性能监视器,可以使用安全CP15配置选项来防止正常世界和用户模式访问这些计数器。
调试控制
ARM系统调试解决方案是ARM Coresight上调试和跟踪技术。它为整个SOC提供了调试和跟踪解决方案,支持对多个处理器和其他系统组件进行调试。可以从设备外工具和设备内组件访问Coresight调试基础结构。
Coresight可供SOC硬件和软件访问的基础设施部分以APB外设形式实现。为了减少所需组件的数量,Coresight外围设备的设计不使用由AXI到APB桥接器提供的标准每外围设备保护机制;Coresight组件应可供非安全内存事务访问。
作为AXI-to-APB桥接器提供保护的替代方案,Coresight组件包括许多用于启用或禁用安全调试的控制信号。这些信号被称为Coresight身份验证接口,包括SPIDEN、SPNIDEN和DBGEN信号,这些信号与为处理器核心描述的相同名称的信号具有类似的作用。
如果外部调试硬件或目标板上的正常世界软件试图在SPIDEN解除断言时在安全地址上设置系统断点,CoreSight硬件将无法创建断点。对于检测解决方案,如果未断言SPNIDEN,外围设备将简单地丢弃安全跟踪信息。
注意
调试安全体系框架的一个结果是,当SPIDEN或SPNIDEN被断言时,正常世界的软件可以直接影响或监视系统中的安全世界执行。因此,只有当设备位于受信任的环境中时,才应启用安全调试。

第四章 TrustZone硬件库

本章概述了ARM提供的启用TrustZone的IP。
本章包括以下部分:
4-2页上的系统IP
理器IP,第4-8页
4-11页AMBA2 AHB IP的再利用

4.1系统IP

本节概述了ARM提供的一些系统IP,ARM内置了对安全扩展的支持。
注意
如果使用适当的AXI-to-APB桥接器,则可以使用安全扩展来保护任何APB外围设备。

4.1.1 PrimeCellHigh-Performance Matrix – PL301

实现系统范围隔离的主要组件是AMBA3-AXI兼容总线矩阵,它将所有系统组件连接在一起。ARM在PrimeCell高性能矩阵产品PL301中提供了这一功能。
为了支持对现代SoC基础设施的需求,AXI总线生成器由一系列支持组件组成。用于定时隔离的寄存器片、用于将总线宽度减小到低带宽SoC区域的宽度缩放缩小器以及用于链接时钟域的同步或异步网桥都是可用的:
rimeCell Infrastructure AMB3 AXI寄存器片-BP130
rimeCell Infrastructure AMBA3 AXI降压器-BP131
rimeCell Infrastructure AMBA3 AXI到AXI桥-BP132-4
rimeCell Infrastructure AMBA3 AXI to APB Bridge – BP135
在典型的ARM系统中,大多数外围设备都连接到APB总线。APB是一种比主AXI总线更简单、功耗更低的总线。APB协议不携带与总线事务的TrustZone安全状态相关的位。这使得现有的外围设备设计可以在AMBA3 APB总线上使用,并将管理安全状态的责任放在AXI-to-APB桥上,该桥提供高速AXI域和低功耗APB域之间的接口。每个AXI-to-APB网桥提供一个AXI从机接口,并可在其本地APB总线上为多达16个外设进行中介访问。网桥包含基于传入的AXI事务生成APB外围选择的地址解码逻辑。桥接器包括总线上每个外围设备的单个TZPCDECPROT输入信号。此信号用于确定外设配置为安全还是非安全;网桥将拒绝非安全事务以保护外设地址范围。
这些桥输入信号可以在合成时持续绑定,也可以通过可信外围设备(如TrustZone保护控制器(TZPC))动态控制,以允许在运行时动态切换安全状态。

ARM安全技术-使用TrustZone技术构建安全系统(翻译)
图4-1显示了控制4个外围设备的AXI到APB桥。TZPC配置为始终安全,计时器和实时时钟(RTC)配置为始终不安全,键盘和鼠标接口(KMI)在软件控制下具有可编程安全状态。安全世界软件可以在运行时对TZPC进行编程,将输入到AXI到APB桥的信号更改为将KMI从Secure切换到Non Secure或反之。
注意
图中的阴影块表示安全外围设备,带阴影角的块表示可以从安全切换到非安全的外围设备。
这种设计允许外设在正常世界中存在大部分时间,但允许它们在短时间内暂时切换到安全世界。KMI外设就是一个很好的例子;它通常被用作通用的普通世界键盘,但可能会被切换成一个短时间的安全输入设备,以允许在安全的环境中输入用户密码。如图所示,TZPC的加入允许动态控制SoC上的其他信号,例如ARM核心的SPIDEN调试控制输入。
AXI到AHB和AHB到AXI桥允许实现了AMBA3和AMBA2规范的两个子系统连接在一起。每个通信方向都需要一个单独的网桥;AXI-to-AHB网桥允许AXI事务在AHB总线上主控,AHB-to-AXI网桥允许AHB事务在AXI总线上主控。
AHB总线不提供任何机制来承载通过它的内存事务的安全状态,因此所有的安全实现都必须在网桥本身中进行管理。
XI-to-AHB网桥允许将整个AHB从机域设置为安全或非安全。
HB-to-AXI网桥允许整个AHB主机域变得安全或不安全。
如果设计需要安全和非安全AHB主设备和从设备的混合,建议不要将安全组件和非安全组件放在同一个网桥后面。
注意
AHB域内的安全完全由AHB配置管理,不在安全扩展的范围内。

4.1.2 PrimeCell Level 2 Cache Controller – PL310

随着处理器时钟频率的增加,越来越希望在核心和外部存储系统之间包含一个2级缓存。这减少了由于外部内存的访问延迟而导致的处理器管道暂停次数,在某些应用程序中实现显著更快的性能,并通常降低功耗。TrustZone系统中的每个缓存都需要用它所包含的数据的安全状态来标记每个缓存线,从而能够同时存储来自两个世界的数据。ARM1176JZ(F)-S处理器和Cortex-A9处理器可以使用单独的二级缓存控制器,该控制器必须实现对安全状态的适当标记。ARM高性能PrimeCell 2级缓存控制器可用于此目的。
注意
Cortex-A8处理器包括一个集成的二级缓存控制器。

4.1.3 PrimeCell DMA Controller – PL330

使用处理器在系统中移动数据可能是对功耗和处理器执行时间的低效利用。由于这个原因,许多系统包括一个直接内存访问控制器(DMAC),它是一个专用的引擎,用于在物理内存系统周围移动数据。
PrimeCell DMA控制器是一个多通道AXI引擎,带有一个微编码的作业描述,以支持复杂结构的传输。DMAC可以支持并发安全和非安全通道,每个通道都有独立的中断事件,并由专用的APB接口控制。试图对安全内存发起DMA传输的非安全事务将导致DMA传输失败。

4.1.4 PrimeCell TrustZone地址空间控制器 – PL380

TrustZone地址空间控制器(TZASC)是一个AXI组件,它将从机地址范围划分为多个内存区域。TZASC可通过安全软件编程,将这些区域配置为安全或非安全,并将拒绝对配置为安全的内存区域的非安全事务。
在综合设计时,可以配置内存区域的数量和TZASC-AXI接口的总线宽度。
使用TZASC的主要原因是将单个AXI从机(如SoC片外DRAM)划分为多个安全域。SoC片外RAM是一个很好的例子,存储器设备由于额外的pin输出、印刷电路板面积和存储器本身的成本而具有显著的相关成本。因此,系统需要对单个外部存储器进行分区,以便它可以同时包含安全区域和非安全区域;这通常比放置两个较小的存储器设备要便宜。
ARM AXI动态内存控制器(DMC)系列是一组内部不支持创建安全分区和非安全分区的高性能控制器。为了创建安全分区,可以在DMC和需要访问它的SoC主机之间放置一个TZASC。TZASC设计用于动态内存,允许突发访问以最小的内存延迟影响通过它。
注意
TZASC只能用于对内存映射设备进行分区;特别是不能用于对基于块的设备如NAND flash进行分区。

4.1.5 PrimeCell Infrastructure AMBA3 AXI TrustZone内存适配器 – BP141

TrustZone存储器适配器(TZMA)使设计能够保护片上静态存储器(例如ROM或SRAM)中的区域。与为每个世界提供单独的专用存储器相比,放置单个大型存储器设备并将其划分为安全和非安全区域的成本通常更低。TZMA允许将一个高达2MB的静态存储器分成两个区域,其中下部是安全的,上部是不安全的。
安全区域和非安全区域之间的分区的位置始终是4KB的倍数,并通过TZMA的R0SIZE输入信号进行控制。这些信号可以通过将信号连接到从TZPC外围设备输出的TZPCR0SIZE来动态配置,或者可以在合成时被绑定以固定方式分割存储器。
TZMA不能用于划分动态存储器或需要多个安全区域的存储器;对于这些设计,必须使用TZASC。

4.1.6 PrimeCell通用中断控制器-PL390

为了支持安全和非安全中断的健壮管理,底层中断控制器必须防止正常世界修改安全世界中断源的配置。这意味着一个中断控制器必须支持使用内部分区的TrustZone技术,或者必须在系统中放置两个中断控制器。
通用中断控制器(GIC)是支持安全和非安全优先级中断源的单一硬件设备。正常世界软件修改已设置为安全的中断源配置的尝试将被GIC硬件阻止。此外,非安全软件只能在优先级范围的下半部分配置中断,以防止拒绝服务攻击。
注意
ARM Cortex-A9MPCore集成了自己的中断控制器,与GIC具有相同的程序员模型,因此不需要外部中断控制器。有关集成中断控制器的更多详细信息,请参阅第3-15页的“中断处理”部分。

4.1.7 PrimeCell Infrastructure AMBA3 TrustZone 保护控制器 – BP147

如AXI-to-APB桥接部分所述,TrustZone保护控制器(TZPC)是一个可配置的信号控制模块,可放置在APB总线上,以向SoC上的其他组件提供控制信号。TZPC包括三个通用寄存器TZPCDECPROT{2:0},每个寄存器可以控制SoC中的8个信号。它还包括一个寄存器TZPCR0SIZE,可以用来为TrustZone内存适配器提供分区位置控制信号。TZPC的通电状态是将所有TZPCDECROT寄存器位设置为0(安全),将TZPCR0SIZE寄存器设置为0x200(使TZMA支持的整个2MB内存范围安全)。启动代码可以放松安全设置,使组件在需要时不安全。

4.2 Processor IP

有许多处理器实现了AMBA3 AXI内存接口,但并非所有处理器都实现相同的功能集。本节概述这些处理器的主要功能,以及它们在TrustZone系统中的使用方式。本节还介绍了ARM SecurCore系列智能卡处理器,它可以与启用TrustZone的SoC一起使用,以提供更高级别的物理安全性。

4.2.1 ARM1176JZ(F)-S处理器

ARM1176JZ(F)-S处理器是第一个TrustZone处理器。它实现了ARMv6Z体系结构,并使用ARM Artisanetro标准单元库提供了一个8级单发整型管道,在90nm制程中能够达到320MHz。当用这种硅工艺实现时,它消耗1平方毫米的模具面积,不包括缓存。
与TrustZone系统设计相关的功能:
选的紧耦合存储器(TCMs)
选外部2级缓存控制器(PL310)

4.2.2 Cortex-A8处理器

Cortex-A8处理器是第一款ARMV7 A-profile处理器。它实现一个13级双发整型管道和一个额外的10级NEON媒体SIMD管道。它能够使用ARM Artisandvantage库在65nm LP工艺中达到650MHz,消耗的模具面积小于3平方毫米,不包括NEON和高速缓存RAM。
与TrustZone系统设计相关的功能:
有TCMs
成2级缓存控制器。

4.2.3 Cortex-A9处理器和Cortex-A9 MPCore处理器

Cortex-A9是一款ARMV7 A-profile处理器,可作为单核和1-4路多核实现。它使用可选的向量浮点(VFP)或NEON管道实现无序、多发的超标量管道。
与TrustZone系统设计相关的功能:
一个实现ARM安全扩展的多处理器平台,在四核设计中总共提供八个虚拟处理器
有TCMs
计用于PrimeCell 2级缓存控制器(PL310)
设计用于通用中断控制器(PL390)。这只是对Cortex-A9的单处理器变体的一个要求;多处理器MPCore版本包括一个内置的中断控制器。

4.2.4 ARM1156T2(F)-S处理器

ARM1156T2(F)-S处理器是一款ARMv6处理器,带有内存保护单元(MPU),专为嵌入式应用设计。该处理器本身并没有实现安全扩展,但它实现了一个AMBA3-AXI总线接口,使得它可以直接放置在一个支持TrustZone的SoC设计中,而无需额外的逻辑或桥。
在大多数设计中,ARM1156T2(F)-S将被静态绑定以生成安全内存事务或非安全内存事务,从而使ARM1156T2(F)-S作为非对称处理引擎与主应用处理器一起作为安全世界的一部分,或作为正常世界的一部分。

4.2.5 Cortex-R4处理器

Cortex-R4处理器是用于嵌入式应用的ARMV7 R配置处理器。与ARM1156T2(F)-S处理器类似,Cortex-R4处理器没有实现安全扩展,但它实现了一个AMBA3 AXI总线接口,使得它能够直接放置在一个支持TrustZone的SoC设计中,而无需额外的逻辑或桥。

4.2.6 SecurCore智能卡处理器

ARM SecurCore系列提供了一系列处理器IP,设计用于智能卡和防篡改集成电路部署。对于需要比TrustZone系统更高物理安全级别的安全应用,可以将基于SecurCore的智能卡与TrustZone系统一起使用。TrustZone系统可以提供智能卡无法提供的功能,例如安全的用户界面和能够处理高性能、不太敏感的安全任务的软件。
处理器功能摘要:
C100:支持ARM和Thumb令集
C200:支持ARM和Thumb指令集并集成Jazelle速JavaCard2.x应用技术
C300:基于Cortex-M3,SC300支持多种技术,包括Thumb2指令集,以减少内存需求和提高软件性能。
注:
Jazelle是ARM体系结构的一种相关技术,用于在处理器指令层次对JAVA加速

4.3 AMBA2 AHB IP的再利用

系统设计者可能需要在同时使用AMBA3和安全扩展的设计中重用传统AMBA2 AHB主设备和从设备。这些传统设备可以包括诸如DMA控制器的非处理器master设备和包括诸如ARM926EJ-S处理器这

来源:embeddedman

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月23日
下一篇 2020年3月23日

相关推荐