背景
数据库技术发展到今天,尤其是云数据库的大范围普及,对数据库安全的重视被提到一个前所未有的高度。最近几年爆出多起数据泄露事件,例如2022年发生在上海的数十亿条数据泄露事件,虽未证实真假,但听来触目惊心。为了防止数据库的数据泄露,从应用系统到数据库内核提出了一系列安全技术手段。
- 针对网络传输,通过使用TLS/SSL等技术,采取密文形式传输数据,防止网络抓包、IP/DNS欺骗等手段造成的数据泄露。
- 针对数据库内核很早就提出了透明加密(TDE)技术,即在存储上存放密文,而在数据库访问存储的时候进行解密。这一技术手段对于应对拖库风险足够有效,目前已是数据库管理系统标配的基础安全能力。
数据加密传输和TDE技术解决了网络传输层和数据存储层数据泄露的安全问题,但是随着数据安全形式越来越严峻,以及随着数据越来越多的外包上云,仅仅从链路传输和存储层面防止数据泄露已经不够。安全风险仍然存在于:
- 数据库内核的数据泄露风险:例如内存、CPU寄存器里的数据被Dump
- 数据外包的安全风险:例如来自云数据库厂商本身运维人员的风险
2023年中国信通院云计算与大数据研究所依托中国通信标准化协会大数据技术标准推进委员会(CCSA TC601),联合十余家大学、研究院和知名企业的专家参与编制,充分参考国内外产品能力与知识体系,共同完成了《大数据 全密态数据库技术要求》。经过数十位专家多次讨论后形成标准体系,包含全周期数据库密态、密态数据处理、加密算法与密钥管理以及数据库基本能力四大能力域,共计30个测试项。为全密态数据库产品的研发、测试以及选型提供参考。本标准也是业内首个全密态数据库产品标准。随后国内数据库厂商陆续参与了这一评测,其中首批通过的三家数据库厂商阿里、华为、蚂蚁,各自采用了不同的技术路线。
硬件方案
国内最早进行全密态数据库技术研究的数据库企业是阿里达摩院,阿里是国内第一个在公有云上提供全密态数据库服务的云厂商,其提供了一个postgresql的全密态数据库版本。阿里采用的技术路线是基于可信硬件TEE,即依赖可信执行环境(trusted execution environment,TEE)进行密态计算。主流的TEE主要有Intel的SGX(Software Guard Extensions)和Arm的TrustZone,以及AMD SEV等,国内厂商阿里的Enclage也是基于Intel SGX实现。TEE开辟了一小块可信区域,被称为飞地(enclave)。飞地可以看作客户端的一部分,是可信的。敏感数据在飞地内部以明文形式存在并进行计算。TEE能够从客户端获取密钥,解密进入到飞地的密文数据,并在明文上进行各种操作,再将结果加密,返回给客户端。结合数据库,简单来说就是数据库的数据在存储、内存和CPU(REE,rich execution environment,传统的非可信富执行环境)中都是密文,而只在飞地是明文。
一开始TEE的问题在于支持的内存空间很小,在MB级别。现在已经可以到GB甚至TB级别,可以满足几乎所有应用的需求。但是TEE与REE之间通讯的上下文切换开开销仍旧很高。一开始将一个应用程序集成进TEE是一个工作量很大的事情,其主要挑战在于如何合理拆分应用程序的功能:把哪些部分放到TEE执行,哪些部分放到REE执行。同时还需要考虑如何与REE交互,如何尽可能的降低TEE和REE之间交互的开销。随着TEE支持内存足够大,以及生态的成熟,TEE OS甚至编译器的出现,移植一个大型程序进TEE已经不是什么难事。蚂蚁集团的一个项目组就把整个Mysql移植进了TEE里。同样阿里也基于TEE移植了Postgresql。这一技术方案的优点是由于数据在TEE内是明文状态,能够在明文上做任何的数据库运算而没有限制。因此功能性更加完备,理论上没有不支持的操作。目前工业界主流的几大全密态数据库大多都是采用或部分采用TEE这种硬件方案,如国内的阿里、华为,国外的如微软。
TEE方案在数据库功能支持方面更加完备,相对于软件方案性能也更好,但十分依赖于硬件厂商。在贸易战最紧张的几年里,SGX甚至订不到货导致国内的密态数据库研究无法继续下去。虽然近几年国内芯片厂商也推出了自主可控的TEE产品,但是龙头依然是国外的厂商。所以这里同时存在客户的安全疑虑:TEE硬件安全性谁来保证的问题?
软件方案
为了摆脱对TEE硬件的依赖,能够在普通的ECS上实现全密态数据库,同时通过软件可开源来消除客户的安全疑虑,一些厂商提出了通过软件方案实现全密态数据库的构想。不同于TEE技术方案的计算仍旧是在明文上进行,其基本思想是利用密码学技术使得数据库内核的计算全部在密文之上进行。基于软件技术实现密态数据库的鼻祖是CryptDB,Google的BigQuery、Microsoft的Sql Server、SAP的HANA一度都参考了其实现。软件方案的核心是密码学技术,尤其是FHE技术使这一构想变得可行。其通过一系列密码学算法对数据进行加密存储,这些密文保留了明文的部分原始特性,例如可比较、可搜索、甚至是可计算。密态数据库中常用的加密算法包括DET、OPE、SE、PHE、FHE等。这些加密算法解决的问题不同,性能不同,密文膨胀率不同,其安全性也不同。
- DET是确定性加密的统称,适合密态等值查询、等值连接、聚集等操作。其安全性较低,很容易受到推理攻击。通过密文推断出有效的数据信息,尤其是对于数据分布规律性很强的敏感数据,例如性别、年龄等。因此确定性加密算法仅适合安全性要求不高、统计信息不明显,有等值查询需求的敏感信息。工业界的全密态数据库早期普遍适用确定性加密算法(例如AES)实现等值查询,现在对于一些安全性要求不高的属性仍旧可以使用这一技术。
- OPE又称为保序加密(order preserving encryption),即密文保持了和明文相同的顺序属性。很显然,对于数据库来说这一特性可以用来进行范围比较、排序、构建基于密文B树索引等。但是很明显的OPE算法暴露了明文的顺序信息,而且大部分OPE算法都是确定性的,相比于DET甚至安全性更低。
- SE是可搜索加密技术(searchable encryption,包括SSE和ASE),直观理解就是密文可以进行搜索操作,例如字符串的通配,即数据库里的LIKE操作。
- PHE即半同态加密(partially homomorphic encryption),比如典型的帕耶算法(Paillier)。半同态加密从名字上可知它是同态加密算法的半成品,支持基于密文做一定的算数运算,例如加减,甚至一些乘法。所以数据库的sum、avg等都可以通过PHE实现。
- FHE即大名鼎鼎的全同态加密,这一技术直到2009年才由Gentry解决第一个理论可行的FHE方案,基于这一方案任何的数学运算都可以通过FHE在密文上进行。之后在此方案的启发下,又涌现了一些其他的方案,整体上都是在保障安全性的前提下,改进FHE的性能。对数据库系统来说,名为可行依旧只是理论可行,工业上仍然遥不可及,和其他加密算法相比,FHE的时间开销和密文膨胀率极高,数据库领域几乎不可用。为了在可用性和功能性之间取得平衡,数据库厂商在应用的时候限制了计算的范围和精度,并通过数据库内核的存储特性实现一定的压缩,从而一定程度上缓解性能和存储方面的开销。
国内的蚂蚁集团有区块链的深厚积累,在密态计算领域的研究比较领先,其密态数据库产品采取的是软件方案。国外的商业产品在初期一度采用这一技术方案,随着TEE的普及几乎没有商业数据库继续使用。MongoDB倒是使用软件技术实现了部分密态计算,不过并不是关系数据库。
软件方案的好处显而易见:不依赖硬件,实施成本低廉,具备很好的通用性。但是缺点很明显:功能和性能受限;而且算法的安全性参差不齐。
软硬结合方案
软硬结合方案是个奇思妙想,融合了以上两种方案的优点。即部分查询操作可以利用加密算法在REE富执行环境执行,部分操作则在可信硬件TEE执行。从而降低REE和TEE之间交互的开销,具有良好的性能,并且具备完备的功能支持。
同时,软硬结合方案也是个奇葩,融合了以上两种方案的缺点。既没有摆脱对TEE的依赖,部署需要特殊硬件的支持。又带来部分加密算法带来的性能、存储膨胀和安全性问题。
华为的GaussDB是软硬件结合方案的代表。据称其提供了基于REE软件和基于TEE可信硬件的两种执行模式,数据库系统会根据查询的功能划分和代价估计,自适应地选择执行模式。
结语
全密态数据库是数据库的一个细分领域,近年来随着云数据库的普及,研究越来越多。但是就目前国内的产品现状来看,无论是哪一种技术方案的产品,距离大规模商用都还有一定的距离。而且这里存在一个悖论:全密态数据库所要解决的问题正是通用明文数据库的安全弱点,如果云厂商承认了这一点并提供全密态数据库产品,那么其所同时提供的通用明文数据库是否还安全可用?那么是否未来云厂商的所有云数据库都将是全密态数据库?