上海交大IPADS利文浩的TEE研究论文作为封面文章在ACM SIGMOBILE杂志发表
2019-01-23

以ARM TrustZone为代表的TEE技术一直以来都是学术界的研究热点,TEE系统近年来在终端设备、车载设备、物联网设备、服务器等不同平台也得到了越来越广泛的应用。上海交通大学IPADS实验室一直以来致力于产学研一体化,以研究推动产业,以产业促进研究。实验室利文浩博士在连续发表多篇TEE相关研究论文的同时,于2015年1月创建上海瓶钵信息科技有限公司,在四年内将自主研发的TEE操作系统T6成功实现商用化,并部署在上亿台手机、车载等设备。近日,受ACM SIGMOBILE邀请,以利文浩同学为一作的研究论文“Research on ARM TrustZone”于2018年12月正式发表在《ACM GetMobile》杂志第22卷第3期,并成为该杂志封面推荐文章。



 

为了方便与国内产业人员分享,瓶钵信息科技的同学们将论文翻译成了中文。有兴趣阅读原文的同学也可直接访问ACM链接:ACM GetMobile (https://dl.acm.org/citation.cfm?id=3308755)或者瓶钵网站:瓶钵论文与研究报告(https://trustkernel.com/downloads/)。

ARM TrustZone的研究

ARM TrustZone是一种基于硬件的安全隔离功能,它为软件提供高权限和独立的执行环境。

硬件隔离通常被认为比纯软件隔离更值得信赖,因此基于芯片隔离的执行环境也被称为可信执行环境(TEE,Trusted Execution Environment)。 TrustZone技术是在2002年被提出,但直到2013年苹果发布iPhone 5s才得到广泛应用。其中,苹果公司利用TrustZone来保护其Touch ID的数据:就算iOS系统受到损害,用户的指纹数据仍然处于安全状态。2017年,谷歌使TEE成为Android设备的强制性要求。如今几乎所有的手机和平板电脑都部署了TEE。同时ARM将TrustZone集成到ARM64和ARMv8-M中,以支持更广泛的平台包括服务器和物联网设备。

TrustZone 提供的架构特征对研究人员非常具有吸引力。 许多研究人员试图回答一个问题:“使用TrustZone的正确方式是什么?”,并提出了许多探索不同用法的系统。不同的系统用法要解决许多挑战:第一,系统应该易于使用。为了解决这问题, 一些研究人员建议将TrustZone整合到现有的系统中,并尽可能减少对用户的干扰。 第二,添加到安全区的代码应尽可能少。TEE提供的功能应该是通用的,以保持尽可能小的可信计算基(TCB,Trusted Computing Base)。 第三,该系统应该是可部署的,新设计的安全方案不应该对现有系统软件或应用进行重大修改。除了以上三点,还有其他一些挑战,如可扩展性、攻击面、性能等等,这部分内容本文将在稍后讨论。

ARM TrustZone 介绍

硬件和软件:自从ARMv6架构提出ARM TrustZone [1]后,该架构覆盖了处理器、内存和外设的ARM片上系统(SoC)的安全扩展。对于处理器部分,TrustZone将其分成两个执行环境,一个正常的执行环境和一个安全的执行环境(如下图所示)。 两个执行环境都有彼此的用户空间和内核空间,以及缓存、内存和其他资源。



 

正常的执行环境不能访问安全的执行环境,而后者可以访问所有的资源。基于这种有限制的权限,正常的执行环境可以运行操作系统(如Android、、Ubuntu、RTOS等),提供一个丰富的执行环境(REE,Rich Execution Environment)。 同时,安全的执行环境使用安全的内核(TEE-kernel)。在监控模式下运行的安全监控器主要用于 两个执行环境之间的相互切换,通常使用被称为“安全监控呼叫”(smc)的特殊指令用于执行环境的切换。

内存分区:TrustZone将内存分为两部分:正常内存和安全内存,它们分布在正常的执行环境和相应的安全执行环境中。同样,TrustZone确保正常的执行环境不能访问内存被标记为安全的部分,而安全的执行环境可以访问整个物理内存。有了这个功能,两个世界可以通过使用一段共享内存来相互通信。此外,内存分区可以由安全的执行环境动态控制,这使安全执行环境的安全服务能够动态保护内存的某些部分内容。

外设分区:对于I / O设备和中断,TrustZone也将它们分成两个执行环境。 一个I / O设备可以分配给一个特定的执行环境。 TrustZone确保正常的执行环境不能访问安全环境的I / O设备,而安全的环境可以控制整个系统的设备。对于每个中断,TrustZone都可以指定由哪一个执行环境来处理它。 当安全中断到达时,TrustZone会将处理器切换到安全的环境来处理它。 与内存类似,I / O设备和中断的分区可以由安全领域动态配置。

安全启动:TEE内核利用安全启动来强制自己的完整性。 一旦设备启动,处理器将首先进入安全环境并将TEE图像加载到内存。然后检查加载的图像的签名,以确保TEE图像已经由合法机构(通常是设备提供商)正确签名。如果检查失败,硬件将停止并挂起。 该检查在启动过程的最初阶段完成,无法绕过。 初始化启动后,后续安全性由TEE软件执行。

体系架构特点

TrustZone提供了非常有趣的体系结构功能,使其成为系统安全的理想选择。

首先,TEE与REE是隔离的。用户不需要信赖Android等这样的复杂REE操作系统,机密数据可以在TEE中存储和访问,即使恶意软件完全控制了REE,也可以保护机密数据。典型的REE攻击有iOS上的越狱软件或Android上的ROOT。

其次,TEE比REE具有更高的执行权限,使其能够监视和检查REE的运行状态,如扫描所有REE内存以进行入侵检测、完整性保护等。一个挑战是TEE和REE之间的语义鸿沟,因为TEE只能访问原始内存数据,而没有任何数据语义,这个问题与经典的VMI(VM Introspection)类似,解决办法可以通过TEE和REE之间的软件协作。

第三,TEE可以控制所有的外围设备。与其他硬件平台(如Intel SGX)上的TEE不同,TrustZone是一个全系统功能,可以承载用户和系统逻辑,并且可以动态控制外围分区。通过将输入和输出设备划分到安全执行环境,它成为保护从设备到用户的I / O路径(可信路径,Trusted Path)的一种非常好的方式。

TrustZone研究

TrustZone的功能为增强基于ARM平台系统的安全性提供了新的机遇,包括手机、云服务器、物联网设备等。目前大部分相关研究都在手机平台上,而针对服务器和物联网平台的研究尚不多。

应用层:数据保护

TrustZone的典型用法是在安全环境中承载一些固定功能,如生物识别认证、一次性密码,加密功能、安全存储等,这些功能作为系统的通用安全服务提供。 普通执行环境中的应用程序可以通过API调用这些功能,但不能将自定义逻辑安装到安全的世界中。

TLR(可信语言运行时)[2] 使开发人员能够将应用程序的安全敏感逻辑与其他安全敏感逻辑分开,以便在安全执行环境中将其隔离开来。 它将.NET运行时的逻辑分为两部分,一部分在正常的执行环境中,另一部分在安全的环境,并为开发人员提供四个用于存储和访问机密数据的新原语。 TLR的TCB比开源的.NET运行时Mono小78倍。 该框架也可以应用于Java运行时。

Rubinov和其他研究人员 [3] 进一步提出了一种自动分区关键Android应用程序的方法。 具体而言,应用程序分为正常运行的客户端代码和TEE命令部分,其中包含处理在安全领域运行的机密数据的部分。 它要求开发人员识别机密数据,并利用静态分析来提取其访问数据的所有代码路径,通过这些路径进一步转换为TEE本地代码。

划分应用程序的挑战是如何在TEE和REE之间定义清晰和安全的边界。 首先,运行在安全领域的代码不应该依赖于正常世界中代码的正确性。 但是,这种依赖关系的分析方法目前可能是只特定于某些应用程序的,并且目前没有用于分析这种依赖关系的系统方法。 其次,不适当的边界可能会增加旁道攻击的机会。 例如考虑维护一个计数器的函数A: 每次调用它都会增加计数器。 假设计数器是保密的,功能A应该在安全的执行环境中进行分区和运行。 然而,攻击者只需通过从正常的世界中计算函数A的调用时间就可以轻松获得计数器。 应该指出的是,数据驱动的代码分区机制可能将更多的内部状态暴露给正常的世界,从而增加了攻击面。

TrustShadow[4] 允许未经修改的用户应用程序在安全领域运行,以将应用程序与不受信任的REE内核隔离。 TEE内核不处理来自受保护应用程序的系统调用。 相反,它会将所有系统调用重定向到REE内核来处理。 TrustShadow不需要考虑应用程序逻辑的分区和现在攻击将在属于系统调用层面上。

框架层:UI保护

由于输入和显示设备都可以划分到安全的执行环境,因此可以使用TrustZone来保护用户输入和UI显示的过程,以保护隐私和完整性,这也被称为TrustUI[5]。 TrustUI具有独立的UI框架,并允许TA在没有REE参与的情况下直接与用户联接。

VeriUI [6] 提出了一种基于TrustZone的登录机制来保护密码输入和传输的过程。在登录过程中,用户只能与在安全环境运行的浏览器进行交互,浏览器安全地获得用户的输入并将密码发送到服务器。登录后,CA可以从安全环境检索OAuth令牌并使用该令牌进行进一步处理。该系统专注于保护密码,以抵御网络钓鱼、恶意软件甚至恶意REE OS等攻击。与TrustUI、VeriUI相同地,TruZ-Droidz [7]技术拆分了HTTP和SSL协议,并在安全领域只部署了这两种协议的一半,以便进一步减少TCB的大小。

相反地,SchrodinText [8] 被设计用于保护文本的输出过程,并且将保护范围扩展到更多类型的文本字段,包括消息、验证码等。通过将文本的呈现和显示分离的技术,该系统利用REE OS来显示一些文本而不能访问文本数据(只访问渲染的字符数量),并使用TEE重新排序预渲染的文本字形进行显示。 因此,不受信任的操作系统将永远不会有机会访问到文本数据。

除了保护文本小部件外,研究人员还使用TrustZone保护其他UI小部件,特别是互联网行业通用的业务场景,如广告和按钮。AdAttester[9] 的目标是通过TrustZone提供两种基本功能:不可伪造的点击和可验证的显示,以此来抵御目前非常严重的广告欺诈问题。它使设备能够生成安全的广告展示证明以及广告点击信息,并由广告服务器进一步检查以确保广告显示和用户操作行为的真实性和完整性。更进一步地, VButton[10]通过将预览与按钮小工具组合在一起,扩展了AdAttester的想法,以进一步支持任何用户按下操作的证明。通过安全预览的方式让用户意识到用户所操作的内容的语义,TEE负责安全地显示和点击预览并生成证明,并将证明交由服务器最终检查验证。通过证明“用户真正地看到了服务商所展现的内容”和“用户真的进行做某一项操作(不可抵赖)”,AdAttester和VButton能够为应用业务带来更可靠的身份与业务认证。

对于安全UI的一个重要问题是“用户如何判断是否正在与安全UI或伪造UI进行交互”。一种简单而有效的方法是引入由TEE操作系统独占控制的LED指示灯,该LED指示灯仅在安全UI正在工作时才开启。另一种仅使用软件的方法是使用用户选择的私密图片作为指示器,这更容易部署,但图片的初始化需要特别注意。同时,系统还需要考虑REE OS覆盖显示器的情况,这可以通过让TEE专门控制帧缓冲器来避免。

OS层:内核保护

SPROBES [11] 使用TrustZone来检查REE内核的代码完整性。通过修改REE内核,该系统可以通知在安全环境运行的监视器在关键路径上执行安全检查。 TZ-RKP [12] 通过移除REE内核中所有特权指令、剥夺REE内核特权系统功能(例如操作MMU)的能力,并将这些功能放在安全环境中,迫使REE内核主动调用安全环境提供的服务,由安全环境验证并最终完成特权操作。

类似地,PrivateZone [13] 利用TrustZone专门控制MMU的方法创建一个运行在普通世界但与REE和TEE均隔离的内存地址空间PrEE,PrEE同时支持在用户态或内核态下运行应用逻辑。开发人员可以创建自己的独立执行环境而无需在安全环境中运行特定于应用程序的逻辑,从而使TCB保持较小。

硬件层:外围设备保护

由于TrustZone可以对外设进行独占控制,因此一些研究人员利用它来以最小的TCB控制这些硬件设备或应用强制访问控制[14]。例如,在私人会议或战场等场景中,确保禁用智能设备的某些外围麦克风或收音机至关重要,但又不需要关闭整个移动设备。使用TrustZone来打开/关闭外围设备这一思路提供了更加灵活和安全的方法。有两种方法可以对此进行控制,一种是通过受保护的UI设置本地用户的策略;另一种方式是通过远程服务器分发策略,由远程服务器通过安全通道直接与安全环境的应用程序连接。

使用TrustZone的另一种方法是将其与GPS等移动平台上的传感器结合使用,以保护从硬件传感器读取的值。基于TrustZone,Liu等人 [15] 提出了两种软件抽象,称为传感器证明和传感器封装,用于将可信传感器的数据安全地暴露给移动应用程序和云服务。这种可信传感器数据认证在众包等场景下非常有用,在这些场景中,应用程序将传感器读数上传到云由云进行进一步地分析。在这里,读数的完整性非常重要,否则攻击者可能会向云上传错误甚至恶意数据。

TrustZone也可以用来实现一些硬件功能。例如,fTPM [16] 使用TrustZone实现TPM 2.0接口。 TPM(可信平台模块)是PC和笔记本电脑中广泛部署的芯片,可作为数字版权管理等应用的关键推动力。 fTPM使设备能够通过纯软件来支持TPM,这是向后兼容的,并且比硬件TPM芯片具有更好的性能。

其他平台:物联网,无人机,云

除了手机之外,还有许多智能设备类型,例如智能家居助理、IP摄像头、可穿戴设备等。这些设备通常具有大量传感器,特别是摄像头和麦克风,收集着敏感信息,因此需要得到很好的保护。

Ditio [17] 试图通过使用TrustZone和虚拟化技术来记录传感器活动日志来提高物联网设备的安全性。所有对传感器寄存器的访问都可以在不修改REE OS的情况下进行记录,这些活动日志可以由审核员随后进行检查其是否符合给定策略。 Ditio还提供了一个工具来简化日志分析过程。

PROTC [18]利用Drone平台上的TrustZone来保护外围设备。它在安全环境部署监控器,对无人机的某些外设实施安全访问控制策略,以确保只有经过授权的应用才能访问某些外围设备。

ARM服务器在云计算中越来越受欢迎,它也支持虚拟化。目前,TrustZone只能提供一个安全的世界,这意味着一台服务器上的多个虚拟机必须共享唯一的安全世界。 vTZ [19] 试图通过虚拟化TrustZone来为每个虚拟机提供一个独立的安全世界来解决这个问题。 VM可以使用SMC指令在REE和虚拟TEE之间切换,就像非虚拟化环境一样,并且TrustZone的所有功能都是在虚拟化之后保留的。该实施需要REE管理程序,但不需要信任它。

TrustZone面临的挑战

TEE漏洞

基于TrustZone的安全系统依赖于一个重要假设:TEE本身是可信的系统。 这个假设来自一个事实,即更少的代码具有更少的错误。 不幸的是,像大多数软件一样,TEE操作系统和应用程序也可能存在漏洞。 早在2013年,就发现某些摩托罗拉手机的引导程序可以解锁以加载任何系统(CVE-2013-3051)。 CVE-2016-0825揭示了Widevine TA(可信应用程序)的漏洞,该漏洞可能利用TEE内核来获取和泄漏存储在TEE安全存储中的数据。 攻击者甚至可能使用TEE攻击REE。 例如Boomerang攻击 [20] 利用特权TEE应用程序的缺陷破坏REE内核。

如何提高TEE的安全性?业界正在寻找各种方法,包括用更强的隔离、缺陷发现、形式验证等等方式来隔离、发现甚至消除TEE的缺陷。对于更强的隔离,要解决的一个重要问题是通过验证REE的请求来最小化TEE的攻击面。例如,通过强制执行只有CA-X可以与TA-X通信的策略,即使TA-X有一些错误,也很难触发,因为它只接受来自一个合法CA的请求。

TEE安全的另一个考虑因素是更新过程。攻击者可能会插入恶意逻辑来更新TEE镜像,因此在应用之前必须检查镜像的完整性。降级攻击是为了将TEE回滚到某个早期版本,该早期版本可能包含某些已知的漏洞以供进一步利用。因此,更新过程也应该确保版本是递增的。

除了TEE漏洞之外,旁道攻击和物理攻击也可能是安全环境的秘密数据的严重威胁,如ARMageddon [21] 和冷启动攻击(例如Frozen)[22]。目前大多数研究都没有考虑到这种攻击。 Sentry [23] 和CaSE [24] 建议使用SoC存储,例如内部SRAM或L2高速缓存,而不是DRAM来存储秘密数据(如私人密钥)以抵御物理攻击。为了托管比SoC存储容量更大的数据,这些系统需使用内存加密换出机制将加密数据交换到不可信DRAM的内存中。

生态系统:开放 VS. 安全

目前,TEE的生态系统还没有开放,这意味着所有的TA(Trusted Application,可信应用)都由供应商控制,并且在出售前预先安装在设备上。为了使REE应用程序更好地利用TrustZone,应该允许动态安装TA。一些TEE产品已经提供TA远程动态管理云服务,例如瓶钵TrustKernel TEE产品,它使应用程序能够请求空中远程下载定制的TA并将其部署在TEE中。TA安装前,设备将验证下载的TA的签名。但是由此一来TEE的攻击面就变得更大,因此它也为TEE带来了新的安全挑战。

远程认证也是TEE的一个重要特征。远程认证可以远程证明设备是否部署了有效的TEE。设备制造商将在销售设备之前在每个TEE设备中嵌入一个私钥,公钥通常由供应商管理,基于这种轻量级的PKI体系进行TEE远程认证。最近,ARM建立了开放信任协议(OTrP)联盟 [26],该联盟正在建立一个基于认证机构的信任体系结构,以进一步简化可信应用程序的认证过程。

此外,对于每个配备TEE的设备,设备将生成每台设备唯一的密钥对和设备ID,并将其安全地保存在设备的安全存储中。在投放市场之前,设备密钥对和设备ID在受控环境中(例如在设备工厂的生产线上)存储在具有RPMB(重放保护存储器块)的eMMC分区中。设备的公钥和设备ID将被上传到生产线的后端服务器以供将来的设备认证。通常eMMC中的RPMB分区包含数兆字节,提供了具有身份验证和重放保护的数据安全存储方式。

研究平台

目前,几乎所有的ARM应用处理器都支持ARMTrustZone,市场上超过10亿部手机部署了TEE。 但是,由于缺乏文档和固件支持,或者由于安全启动,其中大多数无法用于开放性的研究。研究者如果需要在TrustZone环境中进行相关研究,目前有三种方案。第一种方案是与现有的TEE厂商合作,获得由TEE厂商所提供的相关访问接口和文档,例如通过瓶钵信息科技(TrustKernel)的TEE开发平台进行申请:TEE开放平台[25]。第二种方案是与某家设备厂商合作,通过设备厂商获取相关资源。第三种方案是采用现有开放平台与硬件进行研究。目前市面上仍然有几种硬件和软件平台可用于研究。 研究人员可以使用的硬件平台包括三星Exynos 4412、飞思卡尔i.MX6 / i.MX53、HiKey 960、ARM Juno开发板、ARM Versatile Express开发板和Raspberry Pi 2。仍在积极维护的开源TEE包括 Linaro OP-TEE和Google Trusty。虽然TrustZone架构是由ARM提出的,但许多SoC在内存和外设上都提供了定制的保护机制,一般的开源系统都不支持平台的安全驱动,因为不是为了商用,对于大部分研究而言已经足够了。三星Exynos 4412、飞思卡尔i.MX6 / i.MX53和Raspberry Pi 2适用于物联网和低端移动设备, ARM推荐ARM Juno Versatile Express开发板(针对ARMv8软件原型设计,并采用灵活的硬件扩展)。 HiKey 960和ARM Juno Versatile Express开发板都是TrustZone和硬件虚拟化研究的理想选择。



 

结论

随着ARM的生态系统从移动设备向物联网、车辆和服务器不断扩展,安全性在越来越多的场景中变得不可或缺。 TrustZone和TEE为保护、监控和隔离不同上层应用程序提供了一项关键技术。安全环境运行的代码不断增加是一种趋势。 TEE内的细粒度隔离是非常关键。强化TEE设计的正确性以及通过形式化验证等技术实施也是至关重要的。同时,安全应用的管理和部署也应该更加严格。

关于作者

利文浩 上海交通大学博士生、瓶钵信息科技创始人。主要研究领域是系统安全和移动安全。曾获第七届“上海市科技创新市长奖”、“微软学者”(PhD Fellowship)、入选上海市青年科技英才扬帆计划、上海交通大学学术之星等。

夏虞斌 上海交通大学副教授、瓶钵信息科技创始人兼首席科学家。CCF高级会员、IEEE会员、ACM会员。主要研究对象是操作系统、系统虚拟化与系统结构,研究方向是移动安全和云计算安全,研究成果发表在ISCA、HPCA、EuroSys、USENIX ATC、MobiSys、FAST、CCS、USENIX Security、NDSS等高水平学术会议。目前主要研究基于硬件扩展的可信执行环境(TEE:Trusted Execution Environment),研究成果已应用到数十家企业,包括设备厂商和应用厂商等。

陈海波 上海交通大学教授,CCF杰出会员、ACM/IEEE高级会员,主要研究方向为系统软件与系统结构。多次担任SOSP、ISCA、Oakland、EuroSys、Usenix ATC等国际著名学术会议PC members,APSys 2014、2014年全国体系结构学术年会等PC Co-Chairs,以及ACM APSys的Steering Committee Co-Chair,在SOSP、OSDI、EuroSys、Usenix ATC、ISCA、MICRO、HPCA等发表多篇学术论文,获得EuroSys 2015、APSys 2013与ICPP 2007的最佳论文奖、HPCA 2014的最佳论文提名奖,以及2009年CCF优秀博士学位论文奖、2011年全国优秀博士学位论文奖与CCF青年科学家奖,入选教育部新世纪人才计划与国家万人计划“青年拔尖人才计划”。

参考

[1] Tiago Alves and Don Felton. 2004. TrustZone: Integrated hardware andsoftware security. ARM white paper 3, 4 (2004), 18–24.

[2] Nuno Santos, Himanshu Raj, Stefan Saroiu, and Alec Wolman. 2014. UsingARM TrustZone to build a trusted language runtime for mobile applications. InASPLOS. ACM, 67–80.

[3] Konstantin Rubinov, Lucia Rosculete, Tulika Mitra, and AbhikRoychoudhury. Automated Partitioning of Android Applications for TrustedExecution Environments. In ICSE. 2016.

[4] Guan, Le, et al. TrustShadow: Secure execution of unmodified applicationswith ARM trustzone. Proceedings of the 15th Annual International Conference onMobile Systems, Applications, and Services. ACM, 2017.

[5] Li, Wenhao, et al. Building trusted path on untrusted device driversfor mobile devices. Proceedings of 5th Asia-Pacific Workshop on Systems. ACM,2014.

[6] D. Liu and L. P. Cox, “Veriui: Attested login for mobile devices,” inProceedings of the 15th Workshop on Mobile Computing Systems and Applications.ACM, 2014.

[7] Kailiang Ying, et at. TruZ-Droid: Integrating TrustZone with MobileOperating System. MobiSys, 2018.

[8] A. Amiri Sani, “Schrodintext: Strong protection of sensitive textualcontent of mobile applications,” in Proceedings of the 15th AnnualInternational Conference on Mobile Systems, Applications, and Services. ACM,2017, pp. 197–210.

[9] W. Li, H. Li, H. Chen, and Y. Xia, “Adattester: Secure onlinemobileadvertisement attestation using trustzone,” in MobiSys, 2015.

[10] Wenhao Li, Shiyu Luo, Zhichuang Sun, Yubin Xia, Long Lu, Haibo Chen,Binyu Zang, Haibing Guan. VButton: Practical Attestation of User-drivenOperations in Mobile Apps. MobiSys, 2018.

[11] Xinyang Ge, Hayawardh Vijayakumar, and Trent Jaeger. Sprobes: Enforcingkernel code integrity on the trustzone architecture. MOST, 2014.

[12] Ahmed M Azab, Peng Ning, Jitesh Shah, Quan Chen, Rohan Bhutkar,Guruprasad Ganesh, Jia Ma, and Wenbo Shen. Hypervision Across Worlds: Real-timeKernel Protection from the ARM TrustZone Secure World. CCS, 2012.

[13] Jang, Jinsoo, et al. PrivateZone: Providing a Private ExecutionEnvironment using ARM TrustZone. IEEE Transactions on Dependable and SecureComputing, 2016.

[14] Brasser, Ferdinand, et al. Regulating arm trustzone devices inrestricted spaces. Proceedings of the 14th Annual International Conference onMobile Systems, Applications, and Services. ACM, 2016.

[15] Liu, He, et al. Software abstractions for trustedsensors. Proceedings of the 10th international conference on Mobilesystems, applications, and services. ACM, 2012.

[16] Raj, Himanshu, et al. fTPM: A Software-Only Implementation of a TPMChip. USENIX Security Symposium. 2016.

[17] S. Mirzamohammadi, J. A. Chen, A. A. Sani, S. Mehrotra, and G. Tsudik,Ditio: Trustworthy auditing of sensor activities in mobile & iot devices.in Proceedings of the 15th ACM Conference on Embedded Network Sensor Systems.ACM, 2017.

[18] Liu, Renju, and Mani Srivastava. PROTC: PROTeCting Drone's Peripheralsthrough ARM TrustZone. Proceedings of the 3rd Workshop on Micro Aerial VehicleNetworks, Systems, and Applications. ACM, 2017.

[19] Zhichao Hua, Jinyu Gu, Yubin Xia, Haibo Chen, Binyu Zang and HaibingGuan. vTZ: Virtualizing ARM TrustZone. Usenix Security Symposium, 2017.

[20] Aravind Machiry, Eric Gustafson, Chad Spensky, Chris Salls, NickStephens, Ruoyu Wang, Antonio Bianchi, Yung Ryn Choe, Christopher Kruegel, andGiovanni Vigna. BOOMERANG: Exploiting the Semantic Gap in Trusted ExecutionEnvironments. NDSS, 2017.

[21] Lipp, Moritz, et al. ARMageddon: Cache Attacks on Mobile Devices.USENIX Security Symposium, 2016.

[22] Halderman, J. Alex, et al. Lest we remember: cold-boot attacks onencryption keys. Communications of the ACM, 2009.

[23] Colp, Patrick, et al. Protecting data on smartphones and tablets frommemory attacks. ASPLOS, 2015.

[24] Zhang, Ning, et al. Case: Cache-assisted secure execution on armprocessors. Security and Privacy (SP), 2016.

[25] TrustKernel TEE Ready, https://dev.trustkernel.com/ready.

[26] ARM Inc. OTrP, https://www.electronicsweekly.com/news/arm-aims-to-build-trust-in-iot-security-2016-07.