隐私计算之TEE技术和应用实践分析
大数据时代,数据流通、安全等问题接踵而至。
据IDC预测,全球数据总量预计2020年达到44ZB,我国数据量将达到8060EB,占全球数据总量的18%。2025年全球大数据规模将增长至163ZB,但据统计98%的企业数据都存在数据孤岛问题,各自存储难以流通,使得数据价值无法得到充分利用。随着数据量量级迅速增长,以及数据自身的特殊性质,数据流通安全问题显得尤为重要。除企业和个人对数据隐私愈发重视外,国家在数据流通安全方面的法律法规也逐渐完善,并且推出了一系列法律法规。
(内容来源于网上公开资料)
在数据安全问题频出的时代,隐私计算中的TEE技术作为一种可以在保证数据“可用而不可见”的前提下进行数据运算的技术,逐渐被大家所关注。
一、隐私计算TEE技术介绍
TEE全名为可信执行环境(Trusted Execution Environment)是计算平台上由软硬件方法构建的一个安全区域,可保证在安全区域内部加载的代码和数据在机密性和完整性方面得到保护。其目标是确保一个任务按照预期执行,保证初始状态的机密性、完整性,以及运行时状态的机密性、完整性。
1.1 发展历史
TEE相关标准组织的成立:1999年,康柏、HP、IBM、Intel、微软等企业发起成立了可信计算平台联盟TCPA(Trusted Computing Platform Alliance)该组织于2003年改组为可信计算组织TCG,并制定了关于可信计算平台、可信存储和可信网络链接等一些列技术规范。
TEE的实现:2009年OMTP (Open Mobile Terminal Platform,开放移动终端平台)率先提出了一种双系统解决方案:即在同一个智能终端下,除了多媒体操作系统外再提供一个隔离的安全操作系统,这一运行在隔离的硬件之上的隔离安全操作系统用来专门处理敏感信息以保证信息的安全。
TEE相关标准的规范:2011年GlobalPlatform(全球最主要的智能卡多应用管理规范的组织,简称为GP)从2011年起开始起草制定相关的TEE规范标准,并联合一些公司共同开发基于GP TEE标准的可信操作系统。因此,如今大多数基于TEE技术的Trust OS都遵循了GP的标准规范。
TEE相关的芯片厂商:在国外 ARM公司、Intel和AMD公司分别于2006、2015和2016年各自提出了硬件虚拟化技术TrustZone、 Intel SGX和AMD SEV技术及其相关实现方案,在国内由中关村可信计算产业联盟2016年发布TPCM可信平台控制模块,为国产化可信执行环境TEE技术的发展起到了指导作用,国内芯片厂商兆芯、海光分别在2017年和2020年推出了支持可信执行环境技术ZX-TCT、海光CSV(China Security Virtualization)。
(内容来源于网上公开资料)
二、TEE分类和系统架构
TEE技术是隐私计算的核心技术之一,目前较为成熟的技术主要有:Intel SGX、ARM TrustZone、AMD SEV和Intel TXT。
2.1 Intel SGX
Intel® Software Guard Extensions(英特尔® SGX)是一组用于增强应用程序代码和数据安全性的指令,开发者使用SGX技术可以把应用程序的安全操作封装在一个被称之为Enclave的容器内,保障用户关键代码和数据的机密性和完整性。
(图片来自:Intel Sgx Product Brief 2019 )
Intel SGX最关键的优势在于将应用程序以外的软件栈如OS和BIOS都排除在了Trusted Computing Base(简称TCB)以外,一旦软件和数据位于Encalve中,即便是操作系统和VMM(Hypervisor)也无法影响Enclave里面的代码和数据,Enclave的安全边界只包含CPU和它本身。
(图片来自:Intel Sgx Product Brief 2019 )
SGX Enclave运行时主要由三个部分组成,分别是运行在Ring0的系统模块即SGX驱动,和运行在Ring3中的非可信运行时系统即uRTS,以及运行在EPC内存区的可信运行时系统(tRTS),其中Enclave代码和数据放置在被称为Enclave Page Cache。
(图片来自:Caslab官网)
SGX驱动主要完成如下工作:
Enclave加载。
内存空间分配与销毁。
换页和缺页中断处理。
uRTS主要完成如下工作:
Enclave加载和卸载。
调用管理,处理所有ECall和OCall请求。其中ECall指调用Enclave内的请求,OCall指从Enclave内调用外部的请求。
异常处理,判断具体异常反向调用Enclave。
tRTS主要完成如下工作:
Enclave加载。
调用管理,处理ECall和OCall。
Enclave代码和数据放置在被称为Enclave Page Cache(EPC)的特殊内存区域中,该内存区域使用内存加密引擎(MEE)进行加密,下图展示的是SGX对Enclave内存的保护过程:
(图片来自:Overview of Intel SGX - Part 1, SGX Internals)
值得关注的是,Intel SGX已经先后发布了SGX1与SGX2两代次。其中在服务端芯片中SGX2已在2021正式开始大规模商用。
(图片来自:Caslab官网)
(图片来自:Caslab官网)
SGX2相较于SGX1增加了Enclave动态内存管理(Enclave Dynamic Memory Management,简称为EDMM)能力。在SGX1的指令集中,创建Enclave时需要提前确认Enclave需要用到的内存大小。并且在运行过程中代码模块不能动态加载到Enclave中。这种设计一是增加了Enclave的启动时间,因为需要确认所有内存地址。二是限制了EPC的空间大小,因为需要预分配,考虑到合理性,SGX1 EPC内存上限被设置为256M。这就导致了在运行过程中超过256M的堆栈,会被以换页的形式加密换出到系统内存中,类似换页就会带来较大的性能开销。