数据库加密工具/浅谈数据库透明加密(TDE)_0基础白帽子技巧
【摘要】本文对数据加密技术、尤其是数据库透明加密(TDE)的技术原理和优缺点进行了解析,并收集了时下主流数据库产品的TDE能力供大家参考。
【作者】韩锋,CCIA(中国计算机协会)常务理事,前 ACE,腾讯TVP,阿里云MVP,等多家社群创始人或专家团成员。有着丰富的一线数据库架构、软件研发、产品设计、团队管理经验。曾担任多家公司首席DBA、数据库架构师等职。在云、电商、金融、互联网等行业均有涉猎,精通多种关系型数据库,对NoSQL及大数据相关技术也有涉足,实践经验丰富。曾著有数据库相关著作《SQL优化最佳实践》、《数据库高效优化》。
1. 数据加密技术概述
数据库加密技术从诞生至今,已经历多个阶段,采用过多种实现方式,并一直处于持续发展之中。对于数据库加密技术,我们可以从应用层、数据库中间件、数据库系统自身、数据库系统所依赖的文件系统以及存储硬件等方面考虑其具体实现。
这种加密方式,是通过磁盘加密系统或存储加密网关进行加密。其对数据库文件所在的磁盘扇区进行加密,并在数据库访问这些扇区时进行解密。这种加密方式对数据库自身是透明的,数据库管理系统不会感知到加密或解密过程的存在。这种加密方式在存储层工作,只能防止在磁盘丢失时敏感数据的泄漏。所有具有访问磁盘权限的用户都可以访问到真实的数据库文件,因此对于控制了操作系统的攻击者来说,这种加密方式并没有提供防护能力。
在操作系统文件驱动层,将数据库的存储文件经过加密后存储到磁盘上,并在数据库访问这些文件时进行解密。这种加密方式对数据库自身来说也是透明的,数据库管理系统不会感知到加密或解密过程的存在。这种加密方式可以防止因磁盘丢失和文件被复制而导致敏感数据泄漏。然而,对于控制了数据库系统的攻击者来说,文件仍然是开放的,因此没有真正的防护能力。
有些数据库自身提供了加密机制,在数据库内核实现了存储的加密。这种加密方式可以有效防止因磁盘丢失和文件被复制而导致敏感数据泄漏。然而,对于控制了数据库系统的攻击者来说,这种加密方式并不可靠,没有提供防护能力。此外,其密钥管理通常不会对数据库用户开放,因此安全性得不到保证,也无法得到国内相关评测机构的认可。
这种技术是通过数据库的内置能力,如通过使用视图、触发器和扩展索引等机制,可以实现透明加密。由于引入了独立的第三方程序,通过控制加密和解密的权限,增加了额外的访问控制。对于数据库内的不同用户,也可以控制其对加密数据的访问。然而,这种加密方式无法越过应用系统,实现应用系统用户对敏感数据的访问控制。此外,这种加密方式依赖于数据库系统的扩展索引机制,并不能在所有数据库上实现。
这一技术是通过对数据库前端部署数据库加密网关,或者通过扩展数据库访问驱动(如JDBC驱动)实现数据库加密。这种方式理论上能够支持所有的数据库,是一种通用的解决方案,且安全性更高。但需要这一层能实现对所有访问语句和访问机制的支持,例如对存储过程和触发器等都需要提供支持。
这一方式是通过应用系统自身完成数据加密或者通过应用前置一个加密网关来实现。针对前者需要较大的研发投入实现所需加密能力,后者则通过将数据加密的位置提前,在数据进入应用系统之前进行加密。后者这种加密方式可以控制应用系统的用户对数据的访问权限,并且真实数据对所有数据库用户都是不可见的,是最安全的一种加密方式。事实上,无论是这两种方式的哪一种,都会由于应用系统的复杂性,实现的难度也较大。
总之,数据被加密的位置离用户越近,安全性越高,同时实现的难度也越大。以上所述的几种加密方式,数据加密的位置离用户是逐步靠近的,防护能力也是逐步提升的。
2. 数据库透明加密(TDE)1).何为TDE
透明数据加密(TDE)是一种数据库端存储加密技术,全称为 Data 。这种技术对应用系统完全透明,通常由数据库厂商在数据库引擎中实现。在数据库引擎的存储管理层中增加一个数据处理过程,当数据由数据库共享内存写入到数据文件时对其进行加密,而当数据由数据文件读取到数据库共享内存时则对其进行解密。因此,数据在数据库共享内存中以明文形态存在,而在数据文件中则以密文形态存在。由于该技术的透明性,任何合法且有权限的数据库用户都可以访问和处理加密表中的数据。
2).TDE 优点
可以确保对敏感数据进行加密,并简化加密活动,不依赖数据库系统之外的能力。
不同于后置代理方式,无需补充表、触发器或视图来解密授权用户或应用程序的数据。对于数据库用户和应用程序,表中的数据是透明解密的。
对于访问此数据的数据库用户和程序,TDE可用于为处理敏感数据的应用程序提供稳健的数据加密,而对应用程序的更改最少或没有更改。
不影响数据库自身能力,通常管理动作,如利用在线表重新定义,是可以在生产系统上加密数据而不停机。
性能损耗极小,通常可以忽略。
3).TDE 缺点
不能完全阻止SQL注入攻击。SQL注入攻击者如果使用应用系统访问数据库的授权用户对数据库发起攻击,则能够获得加密系统对该用户的相应授权,能够访问到该授权项下的敏感数据。
不能完全阻止攻击者伪造身份对数据库的攻击。当攻击者通过社交工程,完全窃取并伪造了具有对敏感数据合法访问权限的用户的帐号、密码、以及应用系统、IP信息时,数据库加密将不能对其访问进行限制。
不能完全阻止授权应用系统后门程序对数据库的违规访问。当应用系统被授权访问敏感数据,但是被开发者留有后门时,数据库加密系统并不能识别这种后门并加以阻止。
对合规性的满足上有一定缺陷,原因是其密钥管理方式共存于数据库中(部分可依赖外部),难以满足严格监管要求。
加密粒度较粗,无法实现精细粒度控制,通常只能对库、文件级别,个别可做到表级加密。无法实现针对列或行级的加密能力
4).主流产品TDE能力
目前主流的数据库产品大多已支持数据库透明加密,但各产品的加密能力差异较大。这里收集了部分产品的加密能力,供参考。
原题:浅谈数据库透明加密(TDE)
~
网络安全学习,我们一起交流
~