2021 年是隐私计算商业应用的第一年,作为一项有望成为数据要素市场建设的关键核心技术,仍然任重道远。面对商业化规模应用的大量复杂需求,算力性能、计算成本、产品化、互联互通的标准化和兼容性等诸多工程化层面的问题依然制肘着隐私计算的商业突破。
在未来,面对规模化商用的焦虑与质疑,隐私计算行业的产品形态又将趋向哪里发展,本文将抽丝剥茧,一一解构。
可信执行环境(TEE)的定义
在具体说隐私计算技术路线之前,先引入另一个高度相关的技术: 可信执行环境(Trusted Execution Environment,TEE)最早由 OMTP 于 2009 年定义:“可以满足以下两个安全等级的一组支撑应用的软硬件组合”。第一个安全等级为可以避免软件层面上的攻击,第二个安全等级为可以同时避免软件及硬件层面上的攻击。可信执行环境和常规操作系统共享硬件设备并相互隔离,隔离是可信执行环境的本质属性。
根据“可信”的定义,可信执行环境指的是满足如下条件的程序执行平台:这个平台里的软硬件资源永远按照预期的方式工作,不会受平台控制者或者其它任何第三方的影响,这些资源包括了寄存器、内存、中断等等。因为这些基本资源永远按照设计者预期工作,从而就确保在里面运行的程序行为的可控。
可信执行环境(TEE)的分类
目前 TEE 环境总体分为私密性和非私密性:私密性的 TEE,比如 SGX,不仅能抗运行时攻击,也能抗物理攻击,任何离开寄存器的数据都会被自动、强制加密;非私密性的 TEE,比如 TrustZone,其依赖特权级的控制实现运行时保护(低优先级程序不能访问高优先级程序的资源),但是其内存不做任何加解密控 制,可以被多种物理方式攻击。
前面提及都是纯硬件实现的 TEE,其实也还有软硬结合的方案,比如用 FPGA 加速的同态算法,也能实现 TEE 环境。只不过这个方案会涉及到硬件编程、编译器、库环境、生态等诸多因素限制,链条比较长。但优势在于完全自主可控,并在一些特定且高度敏感的场景有优势,这个方案属于软硬结合的私密 TEE 形态。
基于隐私计算的场景诉求,非私密 TEE 是不可用的。目前可用的私密性 TEE 主要是 Intel 的 SGX 以及国产的海光 SEV 等产品,尤其以 Intel 的 SGX 为业界主流,其安全性和性能都得到了实践认证。
隐私计算的瓶颈与 TEE 的兴起
面对 5G 物联终端的迅猛发展,未来多方数据的交叉运算势必伴随着几何爆发式的数据量,就此产生了对隐私计算算力支撑的担忧。于是,业界各方就逐步掀起了以【软件来保障安全性,硬件来加速】的理念热潮。回归热潮的本质我们其实还需要先聚焦到隐私计算的主流实现方式来看这是必然还是炒作。目前,隐私计算的主流实现方式包含以下两个方向:
第一是多方安全计算(Secure Multi-party Computation,MPC)。主要分为基于分片原理的多方安全计算和基于同态加密的多方安全计算。基于分片原理的多方安全计算是一种纯算法层面的实现,优点在于自主可控,除了算法实现本身,不依赖任何第三方。缺点在于参与方之间通信量过大,一些复杂需求的通信量甚至超出通常的机房带宽能力;且参与方越多,算法实现越复杂,工程实现层面有很大困难。 基于同态加密的多方安全计算,依据的是数学上的同态性原理,即对加密数据所做的运算等价于对明文所做的运算。优点同样是自主可控,缺点在于目前已知的所有同态算法都有很高的计算复杂度,在现有计算机设备的计算能力范围内,其可用性困以解决。
第二是可信执行环境(Trusted Execution Environment,TEE),目前市场上应用成熟度相对较高的是 Intel 的 SGX 和 Arm 的 Trustzone。FPGA 加速的同态加密方案尚处于探索阶段。基于前文的说明,TrustZone 在隐私计算环境下是不可用的。TEE 的优势在于性能强大,能够解决复杂场景的业务诉求,同时开发成本低,能够迅速做出满足业务诉求。而缺点则在于硬件依赖导致某些场景无法适用,且芯片能力目前是我国的行业短板。
部分组织或者个人把联邦学习也作为隐私计算的一种实现方式。本文观点,联邦学习是综合应用了以上两个方案、同时结合 AI 实现的一种基于机器学习的大数据分析技术。联邦学习作为一项复合技术,在性质上与上面二者不同,故在此不并列列出。
综上,在隐私计算领域 TEE 的兴起是必然。目前来看,基于 TEE 实现的隐私计算会在未来很有成为一种主流方案,随之商业化产品也必然会顺势诞生。下面以 Intel SGX 为例,我们来看下在隐私计算场景下,分别有哪些优劣势:
图:Intel SGX 的主要工作流程
优势:
- 全加密,任何离开 cpu 寄存器的数据都会被自动、强制加密,CPU 缓存以及物理内存内的数据都不例外。
- 不同 Enclave 实例之间实现硬件隔离,不会相互影响;
- 多线程运行,可以充分发挥 CPU 的计算能力;
- 无需 TEE OS,避免对 OS 依赖;
- TEE 和 REE 相互之间可主动向对方发起接口调用,全双工工作;
- TEE 和 REE 相互之间的调用由 CPU 硬件指令实现,无需依赖第三方模块;
- TEE 资源隶属于 REE 进程资源的一部分,遵循操作系统的进线程调度逻辑,可避免 TEE 抢占 CPU 导致整体系统异常;
- 远程证明有 CPU 硬件支持,不依赖软件实现,安全性高;
劣势:
- 运行时会独占部分物理内存;
- 基于 SGX 架构,TEE 内无法提供任何硬件 IO 的能力;
- 远程证明依赖 Intel 的证明服务,会有一定局限;
- 任何 TEE 程序要加载运行起来,需要 Intel 颁发的数字证书;
虽然 TEE 是趋势,但并不表明其它实现方式会退出隐私计算历史。例如在部分环境中无法支持 TEE 硬件,如 WEB 环境,此时就需要依赖 MPC 等纯软件方案;在高敏感场景下,考虑到更高维度的安全因素,需海外授权的产品将无法被采纳;另外,目前 SGX 等 TEE 产品无法直接支持 IO 操作,在一些特殊场景暂不能满足业务诉求。所以 TEE 和 MPC 及其它隐私计算实现方式是相互协作的关系。
隐私计算的未来产品形态
硬件一体机与“一键”一体机
硬件一体机目前主流是基于 Intel SGX 做整合,在系统里预置 SGX 开发和运行环境,以及隐私计算常用的各种软件产品,宣传的优势是“开箱即用”。除此之外,还会基于可信启动的要求,增加可信启动的相关逻辑,确保服务器环境的可信度。硬件一体机最后交付的形态是服务器硬件,俗称“盒子”。 而“一键”一体机的做法是基于目前几乎所有服务器都具备的 SGX 能力这个事实,在已有服务器部署 SGX 开发和运行环境,用户无需额外购买和部署任何专用硬件。“一键”一体机最后交付的是形态是纯软件产品。
二者异同:
1、前者需要额外购买新的服务器设备,以及将这些设备部署到生产环境;后者只需要在现有服务器环境运行程序,无需额外适配生产环境。
2、安全性上二者没有本质差异:核心逻辑都是运行在 TEE 内部,外部环境无法干涉 TEE 内的逻辑和数据。
3、编程范式上:前者需要按照一体机提供的 SDK 环境的要求写代码;后者没有特殊编程要求,开发者可以选择任何自己熟悉的方式编写 TEE 程序。
值得注意的一点是,虽然部分硬件一体机额外增加了可信启动的逻辑,但是这并没有额外增加 TEE 的安全性:TEE 的安全性只依赖 CPU 本身以及 TEE 程序的编写,外部环境不能让它更安全或者更不安全。因此,不能因为是隐私计算一体机就降低对 TEE 程序的安全性要求。
TEE OS 与 TEE SDK
OS 的功能是管理软硬件资源。在 Arm 的 Trustzone 架构里,TEE 里面的内存、各种软硬件资源等都需要 TEE 内的软件自行调度和使用。且因为特权级的原因,TEE 若出了问题,会导致包括 REE 在内的整个操作系统出现故障。所以对于 Arm 下的 Trustzone 来说,Tee OS 是必须的。
但 SGX 不同之处在于其并不接管任何软硬件资源。这些资源本质上依然受操作系统管理,比如进线程切换、内存分页机制与缺页管理等等,且即使 TEE 程序出现问题,也对操作系统不产生任何负面影响。
现在行业里针对一体机所说的“TEE OS”多数时候就是对常用程序操作包装成了一个编程库,比如文件、网络、线程等等操作做了包装(类似于 libos),或者在使用形式上模拟了 linux 的方式(类似于 uml)。这种设计一是降低了 CPU 的性能,二是增加了 TCB,这可能会引入更多复杂的安全问题,比如各种依赖 REE 环境的 Ocall 引入更多不可信因素。且本质上,这种“便利性”的库,只是另一个版本的 SDK,与 OS 本身无关联。
回归到隐私计算产业的未来商业发展,未来的产品形态一定是顺应 To B 业务的核心诉求的,一个通用的产品固然能够一定程度突破规模化商业应用的难点,但终究无法真正全面实现一个行业迥然有异的堵点与难点。我们应该更多着眼数据用法、用途、各方对数据运营的诉求以及隐私诉求,从用户诉求出发制订可执行的落地方案。虽然求索之路漫长,但必可达。