ARMv8-M平台开发安全软件的建议

2017-01-10 20:39:00 来源:EEFOCUS
分享到:
标签:

ARM® TrustZone® 是针对片上系统(SoC)设计的系统级安全技术,它基于硬件,内置于CPU和系统内核,为半导体芯片设计师设计设备安全性能(如可信根)量身打造。TrustZone可用于任何基于ARM Cortex®-A的系统,随着全新Cortex-M23和Cortex-M33处理器的发布与升级,Cortex-M也已经支持该技术。从尺寸最小的微控制器(搭载针对Cortex-M处理器优化的TrustZone技术),到高性能处理器(搭载针对Cortex-A处理器优化的TrustZone技术),设计师们终于可以从设计初始就着手打造出色的安全性能了。

TrustZone安全技术将非可信资源和可信资源隔离

 

TrustZone技术的核心理念是将可信资源与非可信资源在硬件上实现隔离。在处理器内部,软件只能安装于安全或非安全域其中一处;在两个域间切换则必须经过Cortex-A处理器的软件(后文称安全监视器)和Cortex-M处理器的硬件(核心逻辑)处理才能执行。这种将安全(可信)域和非安全(非可信)域隔离理念的实现不仅涉及CPU,还涵盖存储、片上总线系统、中断、周边设备接口和SoC上的软件。

 

针对ARMv8-M处理器(Cortex-M)的TrustZone技术

ARMv8-M架构将TrustZone技术拓展至Cortex-M级系统,实现了对所有成本点的安全防护。为Cortex-M度身设计的TrustZone技术可以保护固件和周边设备,并为安全启动、可信更新以及可信根执行实现隔离。该架构具备嵌入式解决方案应有的确定性实时响应能力。同时,因为安全与非安全域间的上下文切换在硬件中完成,所以更快实现转换及更高的电源效率。该架构无需安装任何安全监视器软件,因为处理器本身就能完成切换任务,不仅可以减少存储足迹,还能降低代码执行的动态功率。

 

在继续讨论编程之前,我们先介绍以下几个概念:

1.地址定义安全

2.新增执行状态

3.跨域调用

 

概念1:地址定义安全

第一个需要了解的概念是:地址定义安全,即每一个地址都与一个特定的安全状态相关。Cortex-M处理器采用全新引入的安全属性单元来检查地址的安全状态。根据整体SoC设计,系统级接口可以重写该属性。选择此状态后,该地址还会通过一个存储保护单元(视系统配置而定)。

 

地址定义安全图解

 

概念2:新增执行状态

第二个概念是“新增执行状态”。ARMv7-M和ARMv6-M架构定义了两种执行模式:管理者模式(handler mode)和线程模式(thread mode)。管理者模式是特权模式,可以接入SoC的所有资源;而线程模式则可以设定为特权或非特权两种。凭借TrustZone安全拓展技术,我们可以对处理器模式进行镜像处理,构造安全和非安全两种状态,每种状态都各自包含管理者模式和线程模式。安全状态和处理器模式是正交的,因此可形成4种状态和模式的组合。在安全的存储器中运行软件时,处理器自动设定为安全状态;反之,在非安全存储器中运行软件时,处理器自动设定为非安全状态。这种设计消除了本来用于管理状态切换的安全监控软件的必要性,从而实现减少存储足迹和功耗的目的。

新增正交态

 

概念3:跨域调用

ARMv8-M为实现Cortex-M的性能专门设计,具备确定性实时运行功能。换言之,只要遵守以预先设定的安全状态接入点为基础的特定规则,任何状态下的任何功能都可以直接调用其他状态下的任何其他功能。此外,每个状态都有一个独特的堆栈集和对应的堆栈指示器,用来保护安全域资产。由于无需使用API层管理调度,成本大幅减少。基于预先设定的接入点,调度可以直接读取被调函数。

 

跨域调用

应用案例简述

如下图表介绍了一个使用案例简述。该环境下,用户应用和I/O驱动都处于非安全状态,而系统的启动代码和通讯堆栈则处于安全状态。用户应用调度并转入通讯堆栈以传输、接收数据,而该堆栈将使用非安全状态的I/O驱动来完成界面上的数据传输和接收。

   

所有相似系统环境下,示例软件配置都可以得益于TrustZone技术的安全状态功能:

  • 非安全应用不能接入安全资源,除非通过事先定义好的安全服务功能接入点
  • 安全固件既可以接入安全存储,也可以进入非安全存储
  • 安全和非安全代码可以用不同的定时器制定独立的时间进度

 

每根中断线都可以设置为安全或非安全。安全软件和非安全软件的中断向量表也可以分开。

 

尽管处理器硬件可以为安全软件提供核心保护,但安全软件依然需要谨慎的编写,才能确保整个系统的安全。以下是软件开发商在设计安全软件时必须牢记的三个内容:

使用最新的ARM C语言拓展(ACLE)技术

验证非可信指示

为异步非安全存储修改专门设计

 

建议1:使用最新的ARM C语言拓展技术

经过优化,ARMv8-M的TrustZone技术引入了全新指令,支持安全状态转换。软件开发商再也无需创建封装器来生成这些指令了,他们现在可以使用ARM C语言拓展功能(ACLE)中定义的全新编译器,让软件工具理解上述功能的安全使用,并生成所需的最佳代码。ACLE功能由多家编译器厂商实现并支持,代码非常便捷易用。

 

比如说,在创建可以从非安全状态调度的安全API时,应该使用一个名为“cmse_nonsecure_entry”的全新功能属性来做函数声明。安全状态调度功能使用结束时,处理器中的寄存器仍可能保留一些秘密信息。凭借正确的功能属性,编译器便可自动插入代码,清空R0-R3、R12和应用程序状态寄存器(APSR)中仍保留秘密信息的寄存器,但是寄存器将结果返还给非安全软件的情况除外。寄存器R4到R11有不同的处理方式,因为它们的内容在函数边界保持不变。如果它们的值在函数执行过程中改变,那么就必须在返还非安全调度功能之前改回原值。

 

建议2:验证非可信指标

有时候,非安全代码会提供错误的设计指示,试图接入安全存储。为了彻底杜绝这一可能,ARMv8-M引入了一个全新指令——测试目标(TT)指令。TT指令可以将一个地址的安全属性返还,安全软件即可由此判断该指示指向安全还是非安全地址。

 

为了提高指示检查效率,每个存储区都有一个安全配置定义的区域号。软件可以用区域号判断相邻的存储区是否具有类似的安全属性。

 

TT指令将来自地址值的安全属性和区域号(还有MPU的区域号)返还原软件。如果在存储段的起始和终止地址上使用TT指令,并确定两个地址都处于同一个区域号内时,软件便可迅速判断存储范围(如数据阵列或数据结构)是否完全位于非安全空间。

 

检查指示是否指向安全的区域边界

 

使用上述机制,凭借API调度进安全侧的安全代码即可判断,非安全软件区域发起的指示请求是否具备符合该API的安全属性。通过这种方法,我们可以阻止非安全软件在安全软件中使用API来读取或破坏安全信息。

 

建议3:为异步非安全存储修改专门设计

非安全中断服务程序可以修改正在被安全软件处理的非安全数据。因此,已经通过安全API验证的输入数据可以在经过验证之后被一个非安全的ISR更改。避免这种情况的一个方法就是在安全存储中为那份输入数据建立一个本地副本,并用安全副本进行处理(包括输入数据的验证)以避免非安全存储读取;无法创建该副本时(如在特定存储区域中处理大量数据),则可以选择另一种方法,即对安全属性单元进行编程,以确保该存储区域的安全。

 

总结

确保整个系统的安全性并阻止安全数据泄漏至非安全侧,是安全软件开发商的责任。为实现这一目标,我们向安全软件开发商介绍TrustZone 技术3大关键理念与3个重要使用建议——保护调度函数寄存器数据的ACLE技术、验证指示的TT指令;最后一点开发商也必须牢记,非安全侧可能会通过干扰安全侧来修改数据。欲知更多详情,请点此浏览,为协助您在ARMv8-M处理器上开发安全固件,我们精选了相关文件以供参考。

STM32 USB应用基本协议介绍
e络盟限时特惠,新客户首单85折优惠,再享免运费
意法半导体STM32 USB资源一览
ST MCU Finder电脑版选型工具下载
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
ARM DynamIQ:全新时代的计算技术
ARM DynamIQ:全新时代的计算技术

我们现在正处于智能互联时代,它正在彻底改变我们的生活方式。如今,科技常常帮助我们做出决策、预测我们的下一步行动。很多时候,我的设备甚至能够在我知道自己想要什么之前就已经清楚我想要什么。

ARM Cortex-M 处理器家族介绍和比较

ARM Cortex-M处理器家族现在有8款处理器成员。在本文中,我们会比较Cortex-M系列处理器之间的产品特性,重点讲述如何根据产品应用选择正确的Cortex-M处理器。本文中会详细的对照Cortex-M 系列处理器的指令集和高级中断处理能力,以及 SoC系统级特性,调试和追踪功能和性能的比较。

ARM构架要玩转物联网领域,操作系统问题能解决吗?

在工业、交通、零售等产业应用领域,采用ARM处理器与Linux或Android操作系统的嵌入式装置,虽然在软硬件成本上有其优势,但由于其生态系统太过自由发散,因此在应用开发的过程中,常常会因为欠缺标准化而遇到许多麻烦,导致其成本优势被抵消殆尽。

温度测量应用广,这个基于ARM的智能测温系统最近很火

测温测量和控制在当今社会生活中扮演着至关重要的 角色,国际国内市场现有的多种测温技术涵盖了安检、市 场、生活、消防、科研等诸多领域。

汽车ECU单元日益增多怎么破?供应商或面临新产业游戏

随着汽车制造商推进自动驾驶汽车,自动驾驶汽车的计算工作正在整合,但是这些变化会对行业造成巨大破坏,一个多世纪以来都是如此,供应链一直在调整。

更多资讯
谁是最佳发烧CPU?AMD Ryzen 5 1600处理器有啥能耐
谁是最佳发烧CPU?AMD Ryzen 5 1600处理器有啥能耐

2017年AMD杀回处理器市场了,这两个月来已经推出了Ryzen 7和Ryzen 5两大系列处理器,涵盖了4核到8核主流市场,而Intel这边有Kaby Lake处理器,虽然被调侃为挤牙膏,但是Kaby Lake这一代也有几款处理器值得注意,比如不锁频的Core i3-7350K、廉价的奔腾又给了HT超线程。

二维材料造出的微处理器有啥优势?据说是革命性的
二维材料造出的微处理器有啥优势?据说是革命性的

研究人员用类似于石墨烯的二维材料制造出微处理器,有些人认为,这种神奇的弹性导电材料可能会给电池、传感器、芯片设计带来革命性的变化。

芯片世界观 | 英特尔Optane SSD DC P4800X评测,一张表看出猫腻

英特尔Optane SSD DC P4800X是NVMe标准的PCIe SSD,3D XPoint内存取代NAND闪存可提供优于其他NVMe SSD的吞吐量与更低访问延迟。

芯片世界观︱潘多拉魔盒已打开,高通的大麻烦还在后面?
芯片世界观︱潘多拉魔盒已打开,高通的大麻烦还在后面?

高通的潘多拉魔盒已打开。高通和苹果、黑莓之间的官司还在可控范围之内,但是,它可能会带来一些辐射性的影响。如果高通在美国公平交易委员会(FTC)发起的诉讼中落败,后果将一发不可收拾,因为这可能会迫使高通转变其固有的业务模式。这意味着它的授权和许可营收将大受影响,在这种局面下收购恩智浦可能不是个好主意。

华为P10闪存门有苦衷?国产存储成阵痛
华为P10闪存门有苦衷?国产存储成阵痛

这两日在科技圈热议的除了“小米6”的发布以外,另一个应该就是华为的P10的“闪存门”了

微话题

你与哪款手机更投缘

手机缘分测试……
Moore8直播课堂
2017年STM32中国峰会在线直播

2017年STM32中国峰会在线直播

2017-04-25 09:30:00
2016年在深圳举行的首届STM32中国峰会取得了巨大的成功, 并极大的加强了STM32品牌在中国的影响力,巩固了意法半导体在全球半导体技术市场的领先地位,同时还得到嵌入式应用生态系统合作伙伴的大
EMC专家武晔卿系列5—EMC器件的选型(结构布局与材料篇)

EMC专家武晔卿系列5—EMC器件的选型(结构布局与材料篇)

2017-04-25 20:00:00
一个好的电子产品,除了产品自身的功能以外,电磁兼容设计的技术水平,对产品的质量和技术性能指标起到非常关键的作用。很多人从事电子线路设计的时候,都是从认识电子元器件开始,但对电磁兼容设计却无从下手。
如何应对射频嵌入式系统多域测试的挑战?

如何应对射频嵌入式系统多域测试的挑战?

2017-04-27 10:00:00
从物联网、智能终端到工业4.0,射频嵌入式系统正快速扩展到各个应用领域。但由于新技术的引入,传统测试测量仪器难以发现并定位干扰源。1,如何准确进行传感器小信号测试?2,怎样把控示波器触发灵敏度对测
智能车老司机chiusir解读电磁导航原理与k66核心算法

智能车老司机chiusir解读电磁导航原理与k66核心算法

2017-04-16 20:00:00
提及智能车竞赛,所有电子相关专业的大学生或多或少都参加此类比赛,也承载了数万学子青春奋斗的美好,无数次通宵达旦只为在赛场上那千分之一秒的激情。但对于很多初入比赛的鲜肉来说,无尽的资料手册、新的赛制
EMC专家武晔卿系列6-EMC与安规设计、热设计、可靠性、工艺的技术冲突

EMC专家武晔卿系列6-EMC与安规设计、热设计、可靠性、工艺的技术冲突

2017-05-02 20:00:00
一个好的电子产品,除了产品自身的功能以外,电磁兼容设计的技术水平,对产品的质量和技术性能指标起到非常关键的作用。很多人从事电子线路设计的时候,都是从认识电子元器件开始,但对电磁兼容设计却无从下手。