嵌入式系统安全防护方案比较与应用案例分析*

2022-12-22 11:32陈祥国宋君强
计算机工程与科学 2022年3期
关键词:嵌入式处理器世界

陈祥国,尚 凡,宋君强

(国防科技大学气象海洋学院,湖南 长沙 410073)

1 引言

如果说上一个十年第二代互联网技术解决了人类全天候的移动互联问题,那么,下一个十年以5G技术为首的第三代互联网技术将大概率解决以人为核心的万物互联问题。据保守估计,至2030年,将有包含汽车、手表和台灯等在内的5 000亿个物联网IoT(Internet of Things)节点直接连接互联网,可期市场规模将超4万亿美元[1]。嵌入式计算机设备将分布于智能家居、智能穿戴服饰、无人驾驶汽车、工业生产线和植入式医疗设备等领域[2-4]。

截至目前,IoT领域仍有大量亟需解决的关键核心问题,包含多接入点大带宽的互联网接入技术、高能效比嵌入式计算芯片技术、规范完备的IoT协议栈、高可靠嵌入式操作系统和低功耗小尺寸传感器技术等。与此同时,存在巨大硬件差异的百亿级别嵌入式计算设备安全问题已然成为当前计算机系统研究、设计的热点话题[5]。经梳理总结,本文给出如下几种主要的嵌入式设备安全问题及挑战:(1)IoT节点数量几乎无限制增多导致的网络安全危机,如传统的分布式拒绝服务攻击已经可以借助大量的IoT节点实现前所未有的攻击规模[6];(2)嵌入式设备内置数据存在泄露风险,如存放至IoT节点中的用户指纹、面部特征等敏感信息;(3)嵌入式系统控制权限暴露引发被控制对象的安全风险,如心脏起搏器被攻击后,可获取起搏器电脉冲信号控制权限[7];(4)逆向工程嵌入式系统网络协议,使用其他设备模拟IoT节点,非法上传数据致使收集错误数据;(5)逆向工程嵌入式系统产品导致软件知识产权泄露等风险。

面向物联网时代,以IoT智能节点为代表的嵌入式系统安全防护问题已经成为当前亟需考虑并尝试解决的系统性难题。然而,由于嵌入式系统应用场景不同,其硬件体系结构品类繁多、硬件资源相对稀少、印制板面积及能源供给相对紧张,很难找到通用的安全防护方法。本文对现有嵌入式系统安全防护技术进行总结梳理与方案比较,并重点介绍TrustZone安全防护技术的实现原理及应用案例。

2 嵌入式系统相关安全防护技术

以应用为中心,硬件/软件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗严格要求的专用微型计算机系统均可称为嵌入式计算机系统[8]。按照其服务对象以及功能的不同,可粗略分为2大类:(1)智能终端设备;(2)微控制设备。

智能终端设备与人直接完成交互操作,强调系统图形、图像处理能力与功能可扩展特性。智能手机是这类嵌入式系统的主要代表。微控制设备一般指安装、嵌入至待测或待控制系统内部,完成原始信息采集、处理和控制的微型计算机系统,其一般需要满足响应延迟小、响应行为可控、功耗低、可靠性高和硬件尺寸小等特点,如植入式医疗设备、智能门锁和GPS接收机模块等均可视为微控制设备。2类嵌入式系统应用场景不同,可采取的安全防护手段也有一定差异。

2.1 嵌入式系统安全防护技术难点

相较于通用计算机系统,嵌入式系统安全防护需要面临诸多技术难点,简要总结如下:(1)设备单价低廉、总量极大且所处位置分散不易集中统一管理,面临物理攻击的风险极高;(2)嵌入式系统硬件尺寸受安装使用位置限制,可选取的物理级别安全防护方法较少;(3)能源供给能力不足,对嵌入式芯片功耗有严格限制,芯片处理能力远低于通用计算机的芯片处理能力;(4)应用场景迥异、硬件结构差异显著,无法提供通用的安全防护方案;(5)嵌入式节点产品数特别是IoT节点数量庞大,对于硬件成本具有较高的敏感性。

同时,智能终端设备与微控制设备的防护技术需求和技术难点也有所不同。智能终端设备一般使用较高性能嵌入式处理器(如ARM Cortex-A处理器),对音视频处理能力有较高要求,内置数据存储空间大,对系统实时性要求较低。其采用的安全防护技术应尽可能侧重考虑敏感数据访问、支付安全及数字信息版权管理等方面。微控制设备对系统响应速度、实时性有较高要求,数据存储空间有限,处理器性能较低(主频约8~400 MHz,如ARM Cortex-M微控制器)、内存空间较小(1 KB~2 MB)。其可采取的安全防护技术应能够在较小性能损失情况下,侧重于提供输入输出接口(或其他硬件资源)控制权限管理、远程或硬件身份认证、安全网络通信、小规模敏感数据保护等功能。

2.2 嵌入式安全防护技术梳理

目前,可用于嵌入式系统的安全防护策略可分为如下5类。图1所示为基于软件操作系统内核的安全防护技术,其主要应用于早期智能手机的安全防护管理中。高性能应用级嵌入式系统处理器设置多种处理器运行模式,如ARM Cortex-A处理器提供USER用户(USR)、IRQ中断和SYSTEM系统等9种工作模式[9]。不同工作模式下,运行不同类型的程序代码。例如,在系统模式下运行操作系统内核代码、用户模式下运行普通用户级程序。用户程序不能直接访问敏感硬件资源(例如存储在Flash存储器中的敏感数据)或敏感程序代码(如数据加密程序),只可以通过操作系统提供的API函数间接、受限地使用敏感资源。在这类安全防护技术中,操作系统内核被假定认为是安全可靠的。然而,随着操作系统代码复杂度不断增高,操作系统内核漏洞不断被披露,系统被攻破的可能性也在不断提高。应用程序可利用系统漏洞完成越权攻击[10],非法访问敏感资源。

Figure 1 Security protection technology based on software operating system kernel

随着嵌入式系统行业越来越重视安全防护,各半导体芯片供应商提出了一些简易安全防护技术,熔丝位技术[11]是其中比较典型的一类。图2为用于微控制芯片的熔丝位安全防护技术原理示意图。微控制芯片内CPU核可使用片内总线访问主存RAM及其他外设,但访问Flash存储器需经过熔丝位部件完成语义检查。设置的熔丝位只允许读、写语义正确的Flash访问通过。部分微控制采用一次可编程OTP(One Time Programmable)存储器替代熔丝位,完成数据保护功能。熔丝位部件只允许单次设置,设置后无法修改。常见的熔丝位设置有:禁止修改、写入Flash数据;禁止调试端口读取Flash数据;禁止从RAM中引导CPU启动等。该技术灵活性较低,一般仅用于小容量敏感数据保护、软件知识产权保护等场景。

Figure 2 Fuse bit security protection technology

由于简易防护技术灵活性、通用性较差,半导体供应商提出了多种灵活度较强的可编程硬件级安全防护技术。图3a为外部加密协处理器技术,该技术在片上系统SoC(System on Chip)外部的印制板上增设用于安全防护的加密协处理器,协处理器与SoC之间使用板上总线连接。加密协处理可实现可编程数据加/解密算法程序、保存敏感数据等功能。该技术SoC与协处理器互联总线暴露在芯片封装外部,留下了硬件攻击的隐患。如图3b所示的技术将加密协处理器移至SoC内部,作为安全IP模块供处理器访问。该技术克服了部分互联总线安全及性能缺陷,但增加了SoC硅片面积与生产设计成本。图3a和图3b 2种技术受协处理器性能及总线的制约,加/解密算法执行速度较低,且SoC内部外设访问权限、外部硬件资源访问权限依然暴露给了用户或系统程序,存在一定的软件攻击风险[12]。

如图3c所示的技术摒弃了加密协处理器组件,而是将包含CPU核、内部总线、RAM、Flash ROM及其他敏感外设在内的硬件资源划分为安全区域/非安全区域或增设安全/非安全模式。安全资源只有在CPU处于安全状态时才能被访问,安全状态与非安全状态下的程序、内存空间、存储空间完全隔离。使用硬件的方式(增设总线信号等措施)确保2状态相互间信息交互只能经由特殊的模式切换方式完成。由于安全/非安全模式分时共享同一CPU物理核心,因此该技术在几乎不增加硅片面积的条件下,使加/解密及敏感资源访问程序的执行性能不受协处理器性能的制约。正因如此,可认为该技术为典型的硬件虚拟化技术,即在单个物理CPU上虚拟出2个完全独立的逻辑CPU,分别用于运行安全程序和非安全程序。Intel公司的SGX(Software Guard Extensions)[13]技术及ARM公司的TrustZone技术[14]均采用该种虚拟化安全防护技术。早在2003年,ARM公司推出应用TrustZone技术的Cortex-A处理器,2016年ARM公司将TrustZone技术迁移至Cortex-M处理器[15,16],同年推出尺寸最小的支持TrustZone技术的微控制器内核Cortex-M22与Cortex-M23。

Figure 3 Three programmable hardware security protection technologies

2.3 安全防护技术的比较评估

从安全性、开发难易程度、计算效率、实现灵活性、通用性、硬件成本和能耗增加7个维度比较2.2节中的5种安全防护技术,具体如表1所示。表1中按照1~5级对各安全防护技术进行打分,5为最优,1为最差。由表1可知,以TrustZone为代表的基于硬件虚拟化技术的安全防护技术在多个方面都有着优异表现。其采用基于硬件完成安全防护,硬件防护电路分散在SoC内部各处,并经简易的IP修改就能够实现所有外设的安全防护检查,其安全性高于内置加密协处理技术。同时,采用TrustZone技术,所有敏感数据存取和计算操作均使用原有物理处理器核心,其计算性能不会受加密协处理器限制。

Table 1 Comparison of various security protection technologies

截止2020年,基于ARM授权的芯片出货量已达1 600亿颗,占据90%以上智能终端设备市场份额及50%以上微控制设备市场份额。因此,基于ARM内核的TrustZone安全防护技术有望成为首个事实上的嵌入式安全防护解决方案业界标准。

3 ARM TrustZone

TrustZone是ARM公司推出的一种专注于安全事务处理的硬件级别虚拟化技术。TrustZone技术在同一个物理CPU硬件内核上增设安全和非安全2种模式(又称为安全世界/非安全世界):安全世界运行高可信程序代码、可信执行环境TEE(Trusted Execution Environment)操作系统,存放敏感数据;非安全世界执行用户级应用程序,运行普通级别操作系统,存储一般类型数据。安全世界/非安全世界运行时保持物理级隔离,即同一时刻、同一硬件内核只处于安全世界或非安全世界。2种世界的相互切换通过专用指令完成。针对智能终端设备与微控制设备,ARM公司分别于2003年和2016年推出了TrustZone-A和TrustZone-M安全虚拟化技术。

3.1 TrustZone-A工作原理

Cortex-A处理器架构采用TrustZone-A技术,其主要瞄准智能终端设备(如智能手机)市场,调强更高的处理器性能、更好的图形处理能力及更灵活的软件安装扩展能力。该类设备一般采用复杂度较高的操作系统内核,如Linux、iOS,以实现较好的软件扩展能力。鉴于其安装软件的灵活性强、存储敏感数据种类多,TrustZone-A硬件隔离程度也相对较高。

TrustZone-A技术分别在内部总线、处理器核IP、中断控制器和地址空间控制器部件进行硬件级修改[17,18],并在敏感外设上增加安全访问识别电路或增设TrustZone保护控制器单元集中管理敏感硬件设备。图4为应用TrustZone-A技术后,处理器核安全世界/非安全世界切换原理框图。原有ARMv6处理器模式可分为特权和用户2大类:IRQ、SVC、SYS等属于特权模式[19],操作系统内核使用此类模式完成硬件资源管理与中断处理工作;USR为用户模式,用于应用程序执行普通操作。在引入TrustZone-A技术的ARMv7和ARMv8处理器中,处理器模式增加安全世界和非安全2个世界,2个世界下各有特权、用户2类模式。同时,安全世界下增设的监控模式,为安全世界与非安全世界唯一的信息调用通道。

Figure 4 TrustZone-A processor secure/non-secure world switching principle

TrustZone-A技术不仅需要对CPU核心进行相关的安全修改,还需要对相应的内部总线、地址空间控制器和外设总线转接桥等部件进行修改、完善。图5为ARM TrustZone-A技术白皮书中给出的安全SRAM储存空间访问原理示意图[19]。

Figure 5 Principle of TrustZone-A processor security protection implementation

支持TrustZone-A技术的ARM处理器核使用AXI总线与AXI-to-APB总线桥模块连接。图5中,APB总线上挂载了保护控制器TZPC(TrustZone Protection Controller)、实时时钟RTC(Real-Time Clock)、键盘鼠标接口KMI(Keyboard and Mouse Interface)、定时器Timer 4个外设。其中RTC和Timer为非安全设备,TZPC为全时安全设备(总是处于安全状态),KMI为分时安全设备(可设置部分时间处于安全状态)。同时,处理器核还通过AXI总线与内存适配器TZMA(TrustZone Memory Adapter)连接,TZMA管理内部SRAM、外部DRAM等存储器,其可根据CPU状态、访存地址和访存地址保护设置处理CPU访存事务。TZPC可在CPU处于安全世界时完成参数设置,TZPC被设置后,可向TZMA下达内存安全区域设置信息。TZMA根据配置信息检测CPU访存指令语义,若CPU处于非安全世界并尝试访问安全区域地址单元或资源,则拒绝访问。与此类似,当KMI被设置为安全状态时,仅有安全世界代码可以读取键盘数据,非安全世界应用无法获知键盘键入信息,以确保用户密码等信息不被监听或泄露。

非安全世界用户模式用于执行应用级软件,不能直接访问系统敏感信息及资源。非安全世界特权模式用于执行复杂操作系统。安全世界用户模式用于执行数据加解密、生物信息匹配和敏感信号处理等应用,该类应用统称为可信应用TA(Trusted Application)。安全世界特权模式用于运行高可信执行环境TEE,如OP-TEE[20]、Trusty[21]等。TEE系统完成可信应用的维护管理、调度与硬件资源分配等功能。与此同时,TEE系统还肩负着监控模式的管理任务,负责2个世界的切换操作。

致力于安全芯片基础设施统一标准的制定组织GlobalPlatform[22],在2010年发布了整套TEE系统实现接口标准,从接口、协议实现等层面对TEE系统进行规范定义。各区域软件布局如图6所示。尽管GlobalPlatform完成了部分软件接口的标准化,但基于安全方面的考虑,各嵌入式设备提供商均未开放各自可信执行环境设计实现细节,也不开放可信应用加载权限。智能设备提供商负责完成安全世界中,包含可信执行环境及可信应用的所有程序实现。非安全应用程序开发人员仅能通过设备提供商提供的非安全操作系统API函数完成敏感事务请求。对普通应用程序而言,TEE及可信应用为内存不可见的、功能独立的系统函数调用栈。在应用TrustZone-A技术的嵌入式系统中,非安全世界的普通操作系统确保设备的软件扩展能力,安全世界的可信操作系统保证了设备处理敏感事务的软件执行环境安全。

Figure 6 TrustZone-A platform software types and processing status distribution

3.2 TrustZone-A监控器设计

在TrustZone-A安全防护技术中,安全世界与非安全世界的切换必须经由监控处理器模式完成。运行在监控模式下的代码像投递员一样负责完成2个世界之间的消息交互。在系统实施攻击时,监控模式下的代码是重要的攻击端面[14],因此,监控模式代码(下称监控器)的设计是TrustZone-A安全防护技术的重点内容。

监控器一般需完成如下功能:(1)当在2个世界之间切换时,监控器程序必须在离开当前世界前,把该世界的所有上下文状态保存至当前世界堆栈空间,并恢复待进入世界的上下文环境;(2)在2个世界之间完成安全的信息交互,实现受限的消息传递,最大程度减少公用资源中可能残留的非法信息交互。

出于程序健壮性方面的考虑,监控器执行时,需禁止响应中断、禁止监控器代码可重进入,尽量减小监控器尺寸,以避免复杂情况导致的安全隐患。在ARMv7及以前的芯片中,监控器一般被集成在可信执行环境操作系统中(如OP-TEE),由可信操作系统负责实现。而自ARMv8推出后,ARM公司发布的开源可信固件ATF(ARM Trusted Firmware)[23]涵盖了监控器代码,进一步规范了监控器设计实现。

监控器是安全世界与非安全世界之间的唯一信息通道,因此,从原理上讲攻击程序检测及防护功能可以在监控器中实现。监控器在接收非安全世界应用程序的敏感事务请求时,统计请求成功、失败情况,分析请求失败原因,随即可推测其是否存在异常攻击行为。若应用试图使用暴力手段扫描可信程序攻击端面,导致多次敏感事务请求失败,则可通知普通操作系统内核守护进程,杀死攻击应用程序或主动清除敏感数据信息,其原理如图7所示。

Figure 7 Monitor-based attack detection and protection

3.3 可信启动链

计算机系统启动过程是安全系统生命周期中最容易遭受攻击的时段[14]。许多攻击者试图在设备断电期间或系统未完全加载之前,通过替换、篡改存储在SoC外部、Flash存储器中的系统镜像,完成系统攻击。

为防止此类攻击行为,在系统启动过程中需设计一条完整、安全的启动引导链路,验证系统镜像是否被恶意篡改。该启动过程起始验证信息被称为可信根RoT(Root of Trust),常常被存放至难以被篡改的SoC芯片内部。由可信根至所有操作系统可信加载完毕的启动链路,称为可信启动链。TrustZone-A和TrustZone-M均支持可信启动链。图8为基于TrustZone的可信启动流程图。

Figure 8 Trusted boot process in TrustZone

图8中灰色框为安全世界操作或只可在安全世界访问的敏感数据信息。操作系统镜像验证签名可采用基于公钥的签名算法协议,如RSA-PSS(RSA-Probabilistic Signature Scheme)协议。在此类协议中,受信任的供应商(设备硬件供应商、TEE开发方、普通系统开发方)使用其私钥生成需部署代码的签名,并将签名与二进制镜像文件一并推送至设备。嵌入式设备中包含供应商的公钥,可用于验证二进制文件是否由可信供应商发布,或判断其是否被恶意篡改。初级公钥不需要保密,但必须以某种安全的方式存储在设备中,该方式应满足不易被攻击者修改或替换的要求。

系统上电时,CPU首先运行在安全状态,执行SoC内部引导程序。引导程序可使用OTP存储器中的可信公钥(此为可信根),验证TEE系统引导程序镜像签名是否属于设备提供商、镜像是否被恶意篡改,若验证正确则可跳转至TEE系统引导程序引导TEE系统。依此方法可顺序引导运行TEE系统、普通系统引导程序和普通系统镜像。在验证普通系统签名后,退出安全状态,进入非安全状态,跳转至普通系统引导启动流程。

可信公钥应由设备供应商或设备TEE开发方提供并写入OTP存储器[17,18]。OTP封装至SoC内部,一般认为OTP是系统中唯一无法被轻易修改的存储组件,半导体制造商为了进一步保护OTP存储器遭受物理攻击,还会在芯片设计时做相应的混淆设计处理。

上述启动过程中,TEE系统验签通过后,应常驻SoC片内存储空间,并设置该地址空间区域为安全区域,以减小敏感代码、数据被动态窥探的风险。受限于SoC硅片面积,TEE系统及可信应用应尽可能小巧,才能实现完整片内存储的要求。

3.4 TrustZone-M基本原理

与智能终端设备相比,微控制设备在功耗、实时性、响应可确定性、鲁棒性和中断延迟等方面,有着更为苛刻的要求,如电动汽车电机调速系统需要在微秒级周期内采集传感器信息并实时输出控制响应信号。因此,ARM公司并没有将多年成功应用于Cortex-A处理器的TrustZone技术直接移植到Cortex-M处理器中,而是重新设计了针对低功耗、低延迟应用的TrustZone-M技术。

在较高的抽象层面上,2种TrustZone技术保持了一定的相似性,即在同一个物理处理器核心中增设安全和非安全2个世界,非安全世界的软件无法直接访问安全世界的敏感代码及数据。2种TrustZone的主要区别有:

(1)TrustZone-M支持设置多个安全世界进入点,可实现更灵活的安全世界/非安全世界切换。安全世界代码可任意调用非安全世界函数,非安全世界中代码可通过“多进入点”调用安全世界预留API函数。而在TrustZone-A中,监控模式是唯一的切换点。

(2)TrustZone-M中,CPU处于安全世界时,非安全世界的中断或者异常可以抢占CPU完成快速中断服务响应。中断延迟并不会由于TrustZone-M的引入而显著增大,以确保系统的低延迟中断特性。

(3)为了满足低功耗需求,TrustZone-M中2种世界共享绝大多数的寄存器组,但独立设置堆栈等寄存器。在切换世界时,除参数传递外,多余的共享寄存器必须安全压栈并清空,避免信息泄露。

(4)TrustZone-M具备多点的世界切换特性,切换开销远小于TrustZone-A,TrustZone-M中的软件编程也更加灵活。

为实现低切换开销,TrustZone-M主要采用地址映射方式完成安全世界/非安全世界切换功能。这种方式取消了TrustZone-A中的监控模式,通过增设SAU(Secure Attribution Unit)和IDAU(Implementation Defined Attribution Unit)[16]2个属性验证部件,实时判断数据或程序地址是否属于安全地址空间。若地址属于安全空间,则CPU处于安全世界;否则处于非安全世界。其原理如图9所示。

Figure 9 TrustZone-M address security verification principle with SAU and IDAU

SAU是一个可编程的安全状态控制器,其编程模型与内存保护单元MPU(Memory Protection Unit)类似。安全世界下,可以通过SAU完成4 GB地址空间的安全地址和非安全地址区域设置。在所有支持TrustZone-M的处理器中,SAU都是存在的,但其可定义区域的个数由芯片供货商确定。为了进一步增加芯片安全特性,并提升设置灵活性,TrustZone-M为芯片供应商预留了可选IDAU部件。芯片供应商可使用IDAU定义固定的地址区域的安全属性。最终,地址空间的安全属性由SAU和IDAU 2个单元共同决定。

3.5 TrustZone-M安全状态切换

通过SAU和IDAU部件,RAM、ROM及外设地址空间可被设置为3种安全属性:非安全NS(Non-Secure)区域、安全S(Secure)区域和非安全可调用NSC(Non-Secure Collable)区域。

NS区域存储非安全可执行代码,存储非敏感数据,分布非敏感外设访问寄存器。NS区域代码只能够访问非敏感地址,若需要使用敏感功能需经由非安全可调用区域NSC间接调用。S区域存储安全可执行代码,存储敏感数据,分布敏感外设访问寄存器。S区域代码可以访问安全世界资源,也可直接使用非安全区域函数或数据。NSC区域属于特殊的安全区域。NSC存储空间是非安全世界唯一可调用的安全地址区域。NSC区域中保存了安全世界提供的所有可访问API函数调用点,并通过SG(Secure Gateway)指令实现由非安全世界向安全世界的切换。SG指令仅在NSC区域中才被认为是有效指令,在其他区域的SG指令不会被认为是安全状态切换指令,以此确保非法的安全状态切换攻击不会被有效执行。

图10中①、②、③箭头展示了非安全世界代码调用安全世界API函数流程。非安全代码片段中使用BL指令调用NSC区域中安全世界Func_A函数对应调用点SG指令,CPU进入安全世界,而后分支转向安全世界代码Func_A入口;Func_A执行完毕后,调用BXNS指令退出并转入非安全世界。由于NSC的引入,安全世界Func_A函数的绝对地址被隐藏,确保了敏感函数的安全。

Figure 10 Code calling process of TrustZone-M secure/non-secure world

图10中④、⑤、⑥、⑦箭头展示了安全世界代码调用非安全世界函数流程。安全世界代码使用BLXNS指令,分支跳转至R0寄存器保存的地址,该地址指向非安全世界函数Func_C;硬件自动完成安全世界堆栈压栈操作,并将特殊值FNC_RETURN存入寄存器LR中;随后CPU切换至非安全世界,并跳转到Func_C函数运行,执行完毕后Func_C调用BX退出函数;硬件观察到LR中保存了FNC_RETURN,则将CPU切换至安全状态,并自动从安全堆栈中出栈,跳转到原有安全程序片段执行。

除函数调用外,中断和异常处理也有可能导致CPU安全状态切换。在支持TrustZone-M的Cortex-M处理器中,每个中断可以被配置为安全中断或非安全中断,修改中断安全配置需要在安全世界中完成。安全中断由安全世界中的中断服务程序处理,反之由非安全世界的中断服务程序处理。无论CPU所处何种世界,2种中断均可被响应。若发生的中断安全级别与当前CPU安全状态一致时,中断延迟与普通Cortex-M处理器的一致。但是,当CPU处于安全状态,且发生非安全中断时,CPU会将所有寄存器内容压入安全栈,并将所有寄存器清空后,才会进入非安全中断服务程序,避免了安全世界寄存器数据泄露至非安全世界。寄存器清空操作会导致约20个CPU周期的中断延迟。

在不同厂商提供的微控制器中,TrustZone-M往往会和芯片供应商提供的辅助安全防护措施配合使用。如意法半导体公司在STM32L5系列芯片中使用数据读出保护技术RDP(ReaDout Protection,类似熔丝位机制)[18]和TrustZone技术相结合,为程序开发者提供产品不同研制阶段的数据安全防护手段。通过提升RDP级别,可永久封闭微控制器调试通道,禁止一切外部手段直接获取、修改敏感数据。

3.6 TrustZone-M应用案例

图11为使用TrustZone-M技术实现敏感控制信号保护的应用案例原理框图。方案中采用非对称加密算法实现报文信息签名及加密功能。嵌入式微控制器只会接受合法远程上位机指令,完成敏感控制信号输出状态切换。非安全世界实现系统主进程循环、TCP协议栈和网卡硬件驱动代码。安全世界实现公钥存储、随机数生成算法、加密/验签算法、安全镜像管理和敏感I/O口控制驱动代码。远程上位机实现显控界面、网络协议栈和私钥存储。由于TrustZone-M技术的引入,非安全世界漏洞,如TCP协议栈的漏洞,并不能用于获取敏感I/O控制权限。系统安全通信流程如图12所示。

系统安全通信流程包含如下步骤:(1)远程上位机使用私钥生成“请求修改I/O权限”报文,发送至微控制器;(2)微控制器在非安全模式下收到该TCP报文后,将该报文转发至安全世界;(3)安全世界代码使用公钥验证报文签名,若远程上位机身份合法,则使用伪随机数生成算法生成随机数,而后使用公钥对随机数完成加密。该随机数密文将作为本次通信权限验证试题,经非安全世界转发至远程上位机;(4)远程上位机收到验证试题后,使用私钥完成解密,将测试结果及待修改I/O命令一起,经私钥签名后发送至微控制器;(5)微控制器安全区域收到测试结果后,若测试通过,则根据I/O修改命令完成I/O口输出状态设置,并将状态上报远程上位机。上述过程中,随机数测试题与对称加密技术中的单次有效密钥分发技术类似。该操作可避免非法上位机通过监听二进制控制报文,实施敏感I/O修改攻击。

Figure 11 Principle of the sensitive control signal protection scheme

Figure 12 A case of communication flow of secure communication protocol

4 结束语

本文在列举并比较多种嵌入式计算机系统安全防护手段后,深入剖析了基于硬件虚拟化的ARM TrustZone技术软/硬件系统组成、工作原理及设计实现要点。分析了TrustZone-A和TrustZone-M 2种技术方案的区别,并给出了2种技术适用场景与实现特点。给出了可信启动流程实现原理,并简要讨论了基于TrustZone-A监控模式代码的异常程序检测及防护实现可行性。针对典型应用场景,给出了基于TrustZone-M技术的安全防护方案及安全通信协议实现实例。

正如文献[14]所述,面对未来的嵌入式系统应用场景,“安全”已不再是可选项。作为当今世界最大的嵌入式处理器知识产权供应商的ARM公司,其提出的TrustZone技术无疑将成为首选的嵌入式系统安全防护方案之一。可以预期,基于TrustZone技术的理论研究、攻防技术升级将成为未来5~10年该领域的热点内容。

猜你喜欢
嵌入式处理器世界
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
TS系列红外传感器在嵌入式控制系统中的应用
嵌入式PLC的设计与研究
嵌入式单片机在电机控制系统中的应用探讨
我爱你和世界一样大
彩世界
奇妙有趣的数世界
世界上所有的幸福都是自找的
ADI推出新一代SigmaDSP处理器
火线热讯