隐私计算知识库丨抽丝剥茧可信执行环境(TEE)
随着最近几年隐私计算的飞速发展,越来越多人想要了解隐私计算,为此OpenMPC社区推出了隐私计算知识库,带领大家从0到1认识隐私计算。
隐私计算现阶段主要有三个方向:可信执行环境、安全多方计算和联邦学习,知识库第一篇我们将从可行执行环境(Trusted execution environment,TEE)开始。通过技术简介、技术流程、发展历程、应用场景、技术对比、挑战展望六个部分,来带你全面了解可行执行环境。
技术简介
一、背景
目前,隐私保护技术主要基于密码算法及协议(例如安全多方计算、同态加密等)完成场景落地。但这些算法或协议的实现依赖于大量复杂计算(例如乘法循环群上的乘法、指数运算,Pairing 运算,格上的数学运算等),所以存在较大的性能瓶颈,难以在实际场景中大规模应用,于是更新方案TEE出现了。
二、原理
作为基于密码学的隐私保护技术的一种更新方案,可信执行环境基于硬件安全的 CPU 实现了基于内存隔离的安全计算,可在保证计算效率的前提下完成隐私保护的计算。本文主要以主流的TEE架构——ARM的Trust Zone为例进行介绍。
TEE是Global Platform(GP)提出的概念。它是指在计算平台上使用软硬件方法构建的一个安全隔离区域,进而保证在这个安全隔离的区域内拥有的数据和代码的生命周期在机密性和完整性方面得到保护。TEE的基本思想是在计算平台的硬件中,为敏感数据单独分配一块隔离的安全空间,进而为这些敏感数据的计算均在这块内存中进行。对于这些数据的访问,除了经过授权的接口外,哪怕是硬件中的其他部分都不能任意访问这块隔离的内存中的数据。进而实现敏感数据的隐私计算。
三、机制
TEE基于特殊硬件支持,作为与硬件设备上的 Rich OS(例如 Android,iOS 等)并存的运行环境,为 Rich OS 提供安全服务。TEE能够满足大多数应用的安全需求。从成本上看,TEE提供了安全和成本的平衡。
如前所述,TEE与 Rich OS 并存,详情见下图。
四、特点
五、TEE方案
“原理”和“机制”部分主要以ARM的Trust Zone为例,它是TEE规模化落地的功臣,除了它我们不得不提另外一个主流的TEE架构——Intel 的SGX(Software Guard Extension)。与ARM TrustZone的思想不同,SGX采取的方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个enclave(飞地,指在本国境内的隶属于另一国的一块领土。在许多关于SGX的文献中也把enclave翻译为围圈)中。一旦软件和数据位于enclave中,即便操作系统也无法影响enclave里面的代码和数据。Enclave的安全边界只包含CPU和它自身,这一设计避免了基于软件的TEE自身存在软件安全漏洞与威胁的缺陷, 极大地提升了系统安全保障。
此外,Google的Android Keystore 2.0,联想的ThinkShield,联发科的MediaTek Trusted Module,Qualcomm的QSEE,Samsung的Knox,华为的Kirin TEE,都是比较成熟的TEE方案,整个领域百花齐放各有侧重。
技术流程
在初步介绍TEE技术之后,我们来看看具体的技术流程,以GlobalPlatform组织定义的GP API接口实现为例。
客户端接口(CA)与可信端接口(TA)通信需要使用下列接口完成整个会话流程:
CA侧接口如下:
TEEC_InitializeContext:对变量Context进行初始化配置,用来建立CA和TEE的联系,向TEE申请共享内存地址用于存放数据。
TEEC_OpenSession:建立一个CA和TA间的session,用于CA和UUID指定的TA进行通信,是CA连接TA的起始点。
TEEC_InvokeCommand:依靠打开的session,将传送命令请求给TA,并将必要的指令执行参数一并发送给TA。
TEEC_CloseSession:关闭session,关闭CA和TA之间的通道。
TEEC_FinalizeContext:释放Context,结束CA与TEE的连接。
TA侧接口:
TA_CreateEntryPoint:为CA建立接入点,使得TA可以被CA调用。
TA_DestroyEntryPoint:移除CA的接入点,结束TA的功能。
TA_OpenSessionEntryPoint:建立CA与TA之间的通讯通道,作为CA连接TA的起点。
TA_CloseSessionEntryPoint:关闭CA与TA的通讯通道
TA_InvokeCommandEntryPoint:接收CA传送的指令和参数,并在这TEE侧执行。
在GP标准中,CA要与TA进行通信,需要建立如下所示的软件逻辑流程:
首先CA需要与Trusted OS之间建立一个Context,以后此CA与TEE环境的所有通信均基于此Context。
然后CA会向Trusted OS申请与请求的TA建立一个Session。
CA与TA之间的Session建立完成后,CA就可以向TA发送Command。
Command及其参数会通过共享内存的方式传递,TA从共享内存中获取到CA的请求以及请求参数。
TA在TEE环境下执行处理,得到的处理结果重新填充到共享内存中,CA通过共享内存就可以获取到处理结果。
获得处理结果后,如不需要进一步请求,则由CA发起关闭Session的请求,Trusted OS回收TA相关资源,最后CA发起销毁Context的请求,完成一次完整交互。
应用场景
TEE在实际应用场景中的“存在感”一点也不低,和我们手上的设备息息相关,接下来的应用场景有没有命中你呢?
1.移动支付:TEE可以保护移动设备中存储的支付凭证和用户身份信息,防止被恶意软件和攻击者窃取。例如,苹果的Apple Pay和三星的Samsung Pay都使用TEE来保护用户的支付数据。
技术对比
多方安全计算和联邦学习作为出镜率比较高的隐私计算技术,TEE和他们对比表现如何呢?废话不多说,直接看对比表格。
挑战展望
基于硬件的 TEE 技术具有很高的实现效率,但这也导致它较为依赖底层的硬件架构,总结其优劣势如下:
优势:
1.可信硬件部分可支持多层次、高复杂度的算法逻辑实现。
2.运算效率高,相较于明文计算仅有 3-4 倍损耗,而 MPC 等技术具有上百倍的计算损耗。
3.能够抵御恶意敌手。
劣势
1.方案实现依赖底层硬件架构。
2.更新升级需要同步进行软硬件升级。
3.不同厂商的 TEE 技术各异,需要形成统一的行业标准。
根据 TEE 技术的优势和劣势,可以总结出 TEE 技术适用于以下应用场景:
1.计算逻辑相对复杂的计算场景。
2.数据量大,数据传输和加解密的成本较高。
3.性能要求较高,要求在较短时间内完成运算并返回结果。
4.需要可信第三方参与的隐私计算场景,且数据(部分或间接)可被可信第三方获取或反推。
5.数据的传输与使用环境与互联网直接接触,需要防范来自外部的攻击。
6.数据协作的各方不完全互信,存在参与各方恶意攻击的可能。
其中已落地的最常见应用场景包括:隐私身份信息的认证比对、大规模数据的跨机构联合建模分析、数据资产所有权保护、链上数据机密计算、智能合约的隐私保护等。
通过本文对 TEE 技术简介、技术流程、发展历程、应用场景、技术对比、挑战展望的全面介绍,希望让大家对 TEE 有个完整的了解。知识库里需要涵盖的内容很多,欢迎大家来投稿,一起完善隐私计算知识库。
END热门文章:
隐私计算头条周刊(4.10-4.16)
招标 | 近期隐私计算项目招标中标34(上海农商银行、广州大学、富滇银行、山东大学)