什么是可信执行环境(TEE)?
什么是可信执行环境(TEE)?
可信执行环境(TEE)是一种在现代智能设备中广泛采用的安全技术,它通过提供一个隔离的执行环境,确保敏感数据和关键操作的安全性。本文将深入探讨TEE的核心概念、工作原理及其在不同场景中的应用。
什么是可信执行环境(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)技术使现代设备能够提供广泛的功能,同时满足关心隐私、证明、身份验证、验证、可管理性和所有其他安全方面的软件开发人员和服务提供商的要求。