硬件化方案坚不可摧?揭秘可信硬件TEE的是非功过
作者:严强
来源:微众银行区块链
可信硬件何以可信?相比纯软件隐私保护解决方案,结合可信硬件的解决方案有何优势?可信硬件是否真的坚不可摧?可信硬件的使用又会引入哪些技术风险和商业顾虑?
可信硬件执行环境(TEE,Trusted Execution Environment)通过硬件隔离手段对涉及隐私数据的运算和操作进行保护。在不破解硬件的前提下,攻击者无法直接读取其中的隐私数据和系统密钥,由此保障了数据的机密性。同时,攻击者无法通过固化的硬件逻辑和硬件层面篡改检测,以此确保相关系统运行过程不被恶意篡改。
1. TEE安全模型
- 物理隔离的密钥存储空间。
- 物理隔离的代码运行环境,也常称之为飞地(Enclave)。飞地具有独立的内部数据通路和计算所需存储空间,确保代码在飞地中运行产生的内部数据不会被飞地之外的程序轻易读取。
- 硬件设备绑定的设备密钥,配合外部软件验证服务验证TEE硬件设备的真实性,以此鉴别由软件恶意模拟出来的虚假设备。
- 物理篡改检测自毁机制,当TEE存储数据的模块的传感器检测到外部硬件攻击时,会对其中的数据进行清零保护。
- 可信硬件中存储的数据,其明文形式仅存在于硬件内部,无法被外界读取或截获。
- 可信硬件中进行的运算过程,可以通过相关的远程代码认证协议进行验证,确保如果运算过程的功能逻辑和约定的不符,一定会被检测出,恶意篡改之后的运算过程无法通过检测。
- TEE承诺的硬件功能一定是完美无缺的吗?
- TEE配套的软件功能,如TEE硬件设备的真实性验证服务,是否也是完美无缺的?
- TEE承诺的硬件功能和配套的软件功能一旦出现问题,如何从用户的角度进行有效验证?
2. TEE应用模式
TEE硬件设备注册
- TEE硬件设备向远程硬件认证服务请求设备注册,这一服务通常由硬件厂商或者平台服务商自己提供。
- 远程硬件认证服务根据TEE硬件设备的内置绑定密钥,结合其他系统参数,判断该设备是否为真实物理设备,而不是软件模拟出来的虚拟设备。
- 远程硬件认证服务根据黑名单机制,判断该TEE硬件设备不是已知的被破解或遗失的设备。
- 如果以上验证都通过,则注册完成,远程硬件认证服务与TEE硬件设备进行密钥协商,各自生成未来进行远程设备认证所需的密钥,并在自身存储介质中保存对应的数据。
可信执行程序部署
- 应用提供方将可信执行程序作为输入,调用创建飞地的系统接口,进行可信执行程序的部署。
- 可信执行程序在部署过程中,一般情况下,至少会生成一对公私钥用于未来调用过程中的通信数据加解密,其中私钥的明文仅存在于飞地中,公钥作为返回值,返回给应用提供方。
- 部署完成之后,应用提供方通过TEE硬件设备提供的飞地测量接口,对已部署的可信执行程序做一个整体测量,生成的测量报告包含一系列部署后的软硬件属性和内存中代码的哈希值。
- 应用提供方将上一步产生的测量报告,发送给远程硬件认证服务,并请求对已经部署的可信执行程序进行认证,认证可信执行程序二进制数据确实是在未被破解的TEE物理硬件设备上部署成功,认证通过之后,会对测量报告进行签名。
可信执行程序调用
- 用户从应用提供方获得附带远程硬件认证服务签名的可信执行程序测量报告,验证其签名的有效性。
- 认证通过之后,用户使用可信执行程序在部署阶段生成的公钥,对调用的所需的参数进行加密,并可以选择性地附加一个返回值加密密钥,用以调用结果的密文返回。
- 用户将加密后的调用参数,发送给TEE硬件设备,在飞地的隔离运行环境中,可信执行程序用部署阶段生成的私钥,将密文参数解密成明文,并完成约定的计算,返回结果。
-
除了直接返回结果明文,可信执行程序也可以使用调用参数中附加的返回值加密密钥对结果进行加密,然后以密文的形式返回结果,确保结果只有用户才能解密。 - 用户可以酌情在实际调用的前后,请求TEE硬件设备对飞地已部署中的可信执行程序进行新一轮测量,并联系远程硬件认证服务获得最新的认证结果。
- 获得可信执行程序的公钥,对调用参数加密。
- 将加密后的密文参数,发送给可信执行程序。
- 等待可信执行程序在TEE创建的飞地中对参数解密、执行程序逻辑、返回结果。
3. TEE风险披露
安全性风险
这就带来了一个很有挑战的问题,用户如何才能知情?
解答这一问题的关键,在于理解认证过程为什么有效:
- 注册阶段认证了TEE硬件设备是真实物理硬件(在远程硬件认证服务的白名单中),且未被破解(不在远程硬件认证服务的黑名单中)。
- 部署阶段认证了可信执行程序确实在通过远程硬件认证服务认证的TEE硬件设备中完成了部署,且代码和部署的参数与约定的一致。
- 远程硬件认证服务不会由这些参与数据交换的平台服务商中的任意一个来提供,而是需要另寻一个没有商业利益冲突的可信第三方,如果找不到,业务就可能无法开展。
这些已知的硬件漏洞对基于TEE平台服务商的自我约束提出了更高的要求。
第三方面,TEE一旦曝光新的安全风险,可能难以及时修复。
其原因主要可能有以下三个因素:
- 无法升级的硬件模块:虽然可以通过升级固件的形式对绝大部分密码学算法进行升级,但对于其中的一些性能攸关的关键模块却可能无法通过软件升级,只能替换硬件。比较典型的例子有内存加密(MEE,Memory Encryption Engine) 硬件模块,目前主流的硬件实现是128位安全长度的密码学算法,相比目前软件算法实现中普遍的256位安全长度,其抗暴力破解的安全性弱了不少。
如果此类模块出现安全风险,短时间内没有新的硬件产品替换或者好的软件过渡修复方案,那原有的方案就只能暴露在对应的安全风险之下。面对可能面世的量子计算机,现有TEE硬件设备中固化的非抗量子硬件算法模块,可能会面临比较显著的安全风险。
- 硬件进出口限制:目前主要的TEE厂商都是海外芯片制造商,如果国际贸易关系发生恶化,即便最新的TEE硬件设备已经修复了安全性问题,也可能因为进出口限制,而无法得到及时的修复。
- 硬件替换操作成本高昂:如果需要大规模替换物理硬件设备,其综合成本将远高于大规模替换软件实现。
可用性风险
这种情况下,如果这一个TEE硬件设备发生损坏或断电,那对应的数据是不是都不可用了?
答案肯定是不可用,这对于需要高可用性的数据平台类业务往往是难以接受的。
对于这一可用性问题,可以通过使用门限密码学方案(参见上一论)进行一定程度上的缓解,但不能从根本上解决问题。所以在实际方案设计中,往往需要引入一个外部密钥管理服务,用于密钥的备份和再分发,这样就与TEE倡导的密钥从不离开硬件设备的理念产生了矛盾。
在这些不利条件下,即便使用了TEE硬件设备,其隐私保护效果与纯软件方案也没有太大差别,而且作为终端用户的客户也难以验证TEE是否真正发挥了应有的作用。
如果我们考虑可能出现的最差情况,信赖由外部平台服务商提供基于TEE的隐私保护方案,实际的信赖基础往往是该平台服务商的信誉,而不是TEE硬件设备和相关技术本身。
作为隐私保护方案设计开发者,充分了解以上技术风险和商业顾虑,是用好TEE的重要前提。
至此,密钥学原语和相关基础技术介绍已经过半,自下一论起,我们将对数字化业务系统中无处不在的数字签名进行分期解析,欲知详情,敬请关注下文分解。