Trustonic是一家在可信执行环境(Trusted Execution Environment, TEE)技术领域具有领先地位的公司,专注于为智能连接设备市场提供高级安全解决方案。本文来自其官网Blog。
什么是可信执行环境(TEE)?
可信执行环境(TEE)是一个执行代码的环境,在该环境中,执行代码的人可以高度信任周围环境,因为它可以忽略来自设备其他部分的威胁。
我的手机有什么问题吗?
从某种程度上说,没问题。它是一个出色的设备,可以执行数百项任务,这些任务过去需要多个设备才能完成……但这也正是问题所在。
随着执行多任务的能力而来的是大量的软件。软件越多,可能存在安全问题的地方就越多(即“攻击面”越大),发现漏洞的可能性也就越高。为了解决这个问题,由网络运营商、制造商和操作系统供应商等相关方组成的联盟开发了可信执行环境(TEE)。
软件环境的攻击面是指不同点(即“攻击向量”)的总和,在这些点上,未经授权的用户(“攻击者”)可以尝试向环境中输入数据、提取数据、控制设备或关键软件。尽可能减小攻击面是一项基本的安全措施。
什么是可信执行环境(TEE)?
可信执行环境(TEE)是一个执行代码的环境,在该环境中,执行代码的人可以高度信任周围环境的资产管理,因为它可以忽略来自设备“未知”部分的威胁。
因此,TEE代表可信执行环境,为了将其与REE中应用程序的不确定性质区分开来,TEE中的应用程序被称为可信应用程序(TA)。
通常,设备的其余部分托管一个功能丰富的操作系统,如Android™,因此在这个上下文中通常被称为REE(Rich Operating System Execution Environment)。
可信执行环境(TEE)中的信任
“信任”一词有多种解释。在TEE中,它意味着与更通用的软件环境相比,您可能对存储在此空间中的项目(资产)的有效性、隔离性和访问控制有更高程度的信任。
这进而推导出一种断言,即在该空间内执行的可信操作系统(Trusted OS)和可信应用程序(Trusted Applications)更加值得信赖。
为什么可信执行环境更加值得信赖?
安全启动
在TEE中,这种信任要求所有与TEE相关的资产、代码、底层的可信操作系统(Trusted OS)及其支持代码都必须通过一种方法安装和启动,该方法要求其初始状态符合设计者的预期(即所有内容都经过签名验证、不可变或处于隔离状态)。
TEE仅接受经过以下步骤的代码执行:
- 已被适当授权
- 且该授权已由其他授权代码检查
- 这包括从ROM启动后的所有内容 (你可以认为ROM代码为其授权)。
TA只能直接访问它们自己的数据(包括密钥)资产:
- 没有方法可以让TA直接访问其他TA或TEE其他组件的资产。
在理想情况下:
- 一个示例TEE由一些你可以信任的实验室进行测试(可能是因为该实验室本身已经通过了其他实验室和政府的认证)
- TEE能够以某种方式证明其当前的可信状态
- 你信任设备制造商在生产设备中复制了测试样本TEE,从而使证明有效。
但在现实世界中,很少有用户愿意为这种理想状态支付足够的费用,所以我们得到的是:
- 如果TEE启动或服务签名检查失败,TEE必须不提供该服务或依赖服务。
- TEE通过其提供的服务来证明其处于可信状态。
你信任设备制造商已正确构建了TEE,从而使TEE或服务证明有效。
请注意,这与最初的可信计算模型大不相同,在最初的模型中,任何代码都可以执行,但这些代码在启动后可能由远程实体进行验证。在没有外部实体参考的情况下,该模型在需要本地用户信任的设备中并不那么有效。
运行时隔离
在安装、启动和加载材料时进行签名检查是很好的,但……1秒钟后发生了什么?
为了保持信任,我们必须在运行时阻止对执行代码及其资产的干扰。为此,硬件TEE与设备的其余部分隔离,并且TEE在可信应用程序和TEE内的其他资产之间提供隔离。
- 在TEE中,给定的可信应用程序(TA)只需信任可信操作系统(Trusted OS),而无需关心TEE中存在哪些其他TA。
- 这也意味着TA的资产与设备中的所有其他环境隔离开来。
- 使用基于TEE的软件的用户知道,他们可以确信自己的资产不会在没有授权的情况下被暴露、修改或删除(在特定TEE的隔离配置文件内)。
隔离示例:一个TA没有方法打开另一个TA拥有的文件:
- 如果TA1创建了一个名为“Secrets”的文件,TA2也可以创建一个名为“Secrets”的文件,但可信操作系统将它们视为两个不同的文件。TA2可以对其文件进行任何操作,但不能对TA1的文件进行任何更改。
- REE中的任何内容都无法访问任何TA的文件内容。
值得注意的是,攻击者甚至无法手动在设备之间复制TA的资产以尝试破坏TEE安全性,因为TEE存储都与设备绑定。
一些可信执行环境比其他环境更好
Trustonic的Kinibi OS为TEE设计的微内核架构提供了更多的隔离性,因此如果可信操作系统的某部分出现问题,则可以降低风险。
此外,
- Kinibi的加密部分能够抵御执行单元利用率、分支预测器、基于时序和缓存的侧信道攻击。
- Kinibi还利用地址空间布局随机化(ASLR)和堆栈保护来降低通过缓冲区溢出和类似攻击进行未授权执行的风险。
而且(可预测的是)……Kinibi的代码已经过Spectre漏洞的审查,并采用了防范Meltdown漏洞的方法。
远程管理
一些TEE被设计为仅用于有限的用例,以满足特定制造商的需求。然而,由于内部隔离的高质量,我们这里关注的TEE被设计为允许开发者在初始生产线安装人员之外,利用设备的最佳安全性。
为了在生产后安全地安装代码和资产,需要一个可信的远程管理基础设施,其中的操作通过安全通道或加密令牌进行控制。密钥管理为除直接所有者之外的所有用户提供资产隔离和资产控制。
遵循TEE隔离原则,TEE远程管理被设计为允许特定的远程管理器控制应用程序的子集,但无法干扰TEE中其他应用程序。例如,原始设备制造商(OEM)可以管理其TA,银行也可以管理其TA,但两者都不能干扰对方的TA。
是什么让执行环境成为“TEE”?
并非所有设备都托管对非OEM应用程序开放的受信执行环境(TEE),也并非所有设备都托管相同的TEE。尽管Arm® TrustZone®技术的隔离环境是构建TEE的理想之地,但并非在该环境中运行的所有代码都符合上述TEE的理想标准。
如果您对使用多种型号的设备感兴趣,那么符合标准将扩大能够安全运行您软件的潜在目标列表。GlobalPlatform(以其在UICC、银行卡和电子护照背后的安全元件标准方面的工作而著称)也为TEE的隔离性、可管理性和功能定义了标准。具体而言,他们描述了TEE的预期总体架构,并在诸如以下文档中定义了一致性合规性要求(以及相关的基于实验室的测试):
- GPD TEE Internal Core API (Originally published in 2011)
- GPD TEE Client API (Still as published in 2010)
此外,还定义了一个国际公认的通用标准保护框架(Common Criteria Protection Profile),以针对以下方面对TEE的安全属性进行认证:
- GPD TEE Protection Profile (Originally published in 2013)
如果您希望远程管理TEE及其可信应用程序,那么还有一个标准可以帮助您实现这一目标:
- GPD TEE Management Framework (Originally published in 2018)
可以认为,如果TEE不符合这些标准,那么它就不是TEE,但更准确的说法是,它不是GlobalPlatform可认证的TEE,因此您是在信赖特定制造商的想法,而不是以下三者的结合:
- 制造商
- 它们对由安全专家联盟定义标准的合规性
- (如已指出,这是可选的)测试机构对该标准的认证能力
幸运的是,Android领域的大多数制造商(即2018年按销量排名前10的所有制造商)都在其TEE中支持GlobalPlatform功能,这使得服务提供商软件的安全关键组件能够在整个通用智能手机领域中得到推广。
TEE的应用场景?
以上内容大致描述了智能手机和平板电脑中TEE的使用模式。
TEE也出现在智能手表、机顶盒,甚至(请做好心理准备)功能受限的物联网(IoT)设备中。
在简单的IoT设备中,REE和TEE可能不是完整的操作系统,而是软件库套件。虽然这些简单的设备通常没有用户安装的软件,但它们会经历一系列制造过程,其中每个实体可能并不完全信任下一个实体。一个管理良好的TEE可以使这些实体在没有信任的情况下协同工作。
结论
受信执行环境(TEE)技术使现代设备能够提供广泛的功能,同时满足关心隐私、证明、身份验证、验证、可管理性和所有其他安全方面的软件开发人员和服务提供商的要求。
References
- http://globalplatform.org/specs-library/tee-management-framework-v1/
- http://globalplatform.org/specs-library/tee-client-api-specification/
- http://globalplatform.org/specs-library/tee-protection-profile-v1-2-1/
- http://globalplatform.org/specs-library/globalplatform-technology-tee-trusted-user-interface-low-level-api-v1-0-1/
- http://globalplatform.org/specs-library/tee-internal-core-api-specification-v1-2/
- http://globalplatform.org/specs-library/tee-system-architecture-v1-2/
术语与缩写——可信执行环境(Trusted Execution Environment, TEE)与TrustZone
2FA
双重身份验证(Two-Factor Authentication)——一种额外的安全层,要求您在尝试访问资产时提供至少两种身份证明;例如,密码和特定帐户的移动电话访问权限。
ASLR
地址空间布局随机化(Address Space Layout Randomisation)——一种常用的混淆技术,用于防止攻击者在代码内部进行未经授权的函数调用。
封闭TEE
由ODM(原始设计制造商)或OEM(原始设备制造商)控制的TEE,其他方无法安装可信应用程序(Trusted Applications, TAs)。封闭TEE仅提供有限的服务集,类似于HSM(硬件安全模块)。
设备
一个或多个平台(以及可能的一个或多个设备)组合在一个离散物理对象中。例如,移动SIM卡是设备中的安全元件(Secure Element, SE)平台,该设备被插入到可能还包含TEE平台和REE平台(S)的移动电话设备中。
DFA
差分故障分析(Differential Fault Analysis)——一种“侧信道”方法,通过监测设备内部电子信号中由诱导故障引起的变化来发现秘密。例如,故障导致秘密被写入屏幕内存而不是其正常位置。
DPA
差分功耗分析(Differential Power Analysis)——一种“侧信道”方法,通过监测设备功耗的变化来发现秘密。
DRAM
动态随机存取存储器(Dynamic Random Access Memory)——一种可以高速读写的存储器形式。它需要定期更新以保持内容有效。
FLASH
基于硅的非易失性存储器(Non-Volatile Memory, NVM),没有移动部件。该技术通常比用于制造处理器核心和SoC的技术落后3代或4代,因此Flash无法与处理核心直接集成在同一硅片上。
KISS
保持简单愚蠢(Keep It Simple Stupid)——一种设计哲学,认识到随着复杂性的增加,出现漏洞和安全漏洞的可能性也会增加。从安全角度来看,这导致将安全关键代码放在单独的隔离区域中,以降低这种风险。
MMU
内存管理单元(Memory Management Unit)——一种硅组件,用于限制和映射进程的内存访问。
NFC
近场通信(Near Field Communications)——一种有限范围的无线技术,可用作指示近距离存在以及建立数据通信的方法。
NVM
非易失性存储器(Non-Volatile Memory)——一种在断电后仍能保留其内容的存储器。
ODM
原始设计制造商(Original Design Manufacturer)——通常指不生产消费产品,但生产其他制造商用作产品组件的制造商。这可能包括白盒制造商,其产品随后由零售商“贴牌”。
OEM
原始设备制造商(Original Equipment Manufacturer)——通常指生产最终消费产品的制造商。
开放TEE
开放TEE是指对第三方服务提供商的可信应用程序(Trusted Applications, TAs)安装开放的受信执行环境(Trusted Execution Environment, TEE)。
操作员卡组
操作员卡组是一组包含带有HSM封装秘密和潜在密钥的芯片(安全元件,Secure Element, SE)的卡片,这些卡片允许HSM将特定卡片与HSM可能提供的特定操作或操作集相关联。使用SE使得生成未经授权的副本变得更加困难。
OTP
一次性可编程(One-Time Programmable)——一种只能写入一次的存储器形式,通常用于包括密钥和哈希在内的小型数据资产。请注意,某些形式的OTP应按位视为OTP。这些OTP从值0xFF开始,可以写入以变为0xF0。之后,它们不能再次更改为0xFF,但可以更改为0x00。为防止这种情况,必须使用第二块OTP存储器来“锁定值”并防止进一步更改。
平台
一个单一的执行环境,可以视为一个与任何其他域隔离的信任域。在手机中,平台的示例可能包括:• 运行丰富操作系统(Rich OS)如Android或iOS的富执行环境(Rich Execution Environment, REE)• 运行JavaCard应用程序的通用集成电路卡(UICC)• 运行符合全球平台(GlobalPlatform)标准的可信应用程序(Trusted Applications, TAs)的受信执行环境(Trusted Execution Environment, TEE)• 运行专用电话相关服务的基带操作系统(Base Band OS)。请注意,这是GlobalPlatform中的定义,但还有其他定义存在。
REE
富操作系统执行环境(Rich Operating System Execution Environment)——最初被认为是承载丰富操作系统(Rich OS)的环境。现在,由于物联网(IoT)环境中部署了TEE技术,其中“其他操作系统”可能不被视为功能丰富,因此REE也可以被描述为承载设备操作系统(Device OS)。从某种意义上说,它应该被视为设备内部不属于当前TEE的所有内容,因此能够攻击TEE。在安全方面,如果REE中存在安全元件(Secure Elements)和其他TEE,则应该包括这些组件,但为简单起见,这些组件被单独列出。
丰富操作系统(Rich OS)
设备内部的“主”操作系统。这种操作系统旨在为用户提供访问设备一般软件功能的能力,并被认为“功能丰富”。典型示例包括Linux、Android、iOS、Windows。在支持TEE的设备中,此Rich OS在REE中运行,与TEE并行,并可能利用TA提供的一些服务。在物联网设备中,这可能不是一个操作系统,而是一组通用服务,如互联网访问堆栈。
信任根
信任根(Root of Trust, RoT)——GlobalPlatform有一份详细文档定义了信任根(RoT),这是我们此处使用的基础。信任根是软件、硬件和数据的组合,提供一项服务,没有其他任何软件、硬件和数据的组合能够证明其初始状态。
SE
安全元件(Secure Element,SE)——安全元件是一种微处理器芯片,能够存储敏感数据并运行安全应用程序,如支付应用。它是UICC、microSD卡、HSM操作卡组和银行卡等位置中的安全计算设备。
ServiceProvider
服务提供商——在TEE和SE领域中,这是一个通用术语,指的是应用开发者或利用应用来提供服务的实体。尽管通常关注于TA开发者,但在TEE案例中,服务提供商可能会链接云服务、Rich OS应用和/或可信应用。
SiP
芯片供应商(Silicon Provider)——负责制造和封装硅片的组织。它也可以被定义为负责芯片安全硬件方面的组织,以及(在某些情况下)在芯片上运行的第一层ROM RoT软件的组织。如果需要,SiP产品通常由原始设计制造商(ODM)采用和使用,并最终由原始设备制造商(OEM)制成最终产品。
SoC
系统级芯片(System On Chip)——一种技术,将传统PC中发现的所有离散组件集成到单个硅片上。这样做具有优势,因为组件之间的连接可以运行得更快和/或功耗更低。此外,从安全角度来看,探测这些集成组件之间的通信变得更加困难。
SRAM
静态随机存取存储器(Static Random Access Memory)——一种可以高速读写的存储器形式。它不需要定期更新以保持内容有效,但与DRAM相比,它占用的硅片空间更大。
SRW
短距离无线(Short Range Wireless)——对低功耗无线通信定义的通用术语,如蓝牙、ZigBee或NFC。这是一种表示近距离存在以及建立通信的方法。
TEE
可信执行环境(Trusted Execution Environment,TEE)——一个与其他环境隔离的环境,已经通过了一个启动过程,该过程对其启动和运行时环境的所有可加载组件进行了签名检查,并且只有经过签名检查的应用程序软件才能被加载到该环境中。从技术上讲,TEE可以在类似安全元件(Secure Element)的东西中实例化,但通常使用如ARM TrustZone技术[ARM\_TZ]等技术来实现。
TPM
可信平台模块(Trusted Platform Module,TPM)——一种硬件安全模块,专门用于在一系列称为平台配置寄存器(Platform Configuration Registers,PCRs)的寄存器中记录单个平台的上电启动状态,并向外部方提供对该状态的签名证明。
Trusted OS
可信操作系统(Trusted OS)——TEE由软件和硬件组件组成。可信操作系统是其中的一个组件,它提供运行时功能来启用和管理可信应用程序。在物联网(IoT)设备中,这可能不是一个完整的操作系统,而是一组通用服务,如TLS堆栈,用于实现与设备外部实体的安全通信。
作者:TrustZone
文章来源:TrustZone
推荐阅读
更多物联网安全,PSA等技术干货请关注平台安全架构(PSA)专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入PSA技术交流群,请备注研究方向。