数据库加密作为近年来最为热门的数据库安全防护技术之一,逐渐被业界所重视和应用。这种基于存储层加密的安全防护模式,不仅可以有效解决数据库明文存储的泄密风险,也可以防止来自组织机构内部、外部的入侵及越权访问。
今天,安全牛有幸邀请到了专注数据库安全治理的安华金和的张道山、李潇来给大家讲解,目前市场上在不同场景下仍在使用的六大数据库加密技术的各自的优势和劣势,希望对有数据库治理方面需求的朋友有所借鉴。
数据库加密技术从诞生至今,已经历多个阶段,采用过多种实现方式,并一直处于持续发展之中。对于数据库加密技术,我们可以从应用层、数据库中间件、数据库系统自身、数据库系统所依赖的文件系统以及存储硬件等方面考虑其具体实现。
图1:数据库加密层次
目前,不同场景下仍在使用的数据库加密技术主要有:应用系统加密、前置代理加密、后置代理加密、表空间加密、文件系统加密和磁盘加密。本文将针对以上“六大”数据库加密技术的优势和劣势,逐一进行介绍:
应用系统加密技术被认为是最早的数据库加密形式。但严格来讲,应用系统加密实际上是针对数据而非数据库进行的加密。
图2:应用系统加密技术原理
(一)优势
应用系统加密的优势就在于其灵活性,这种灵活性主要体现在两个方面。一方面,应用系统加密可以与业务逻辑紧密结合,可以在应用系统的开发过程中,灵活地对相关业务中的敏感数据进行加密处理,且使用的加密函数、加密密钥等均可以根据业务逻辑的需要灵活选择。另一方面,应用系统的开发商可以自行解决数据的加密和解密的所有问题,对数据库系统本身或第三方的数据安全厂商基本上没有依赖性。
(二)劣势
相对于灵活性这种优势,应用系统加密本身也具有明显的劣势:
1、应用系统的开发无法透明化
任何与数据加密解密相关的处理逻辑和加密规则的变化都会导致应用系统进行代码级的修改和在生产环境中重新部署。同时,任何使用加密数据的应用系统都必须在源码级处理数据的加密和解密操作,应用系统的开发商在考虑业务逻辑的同时,还必须兼顾相关数据的加密和解密处理。
2、数据库系统的自身优势严重受损
数据库系统是专用于数据存储、管理和使用的基础软件系统,其很多设计原则都是为了更快地处理数据。应用系统加密使得写入到数据库中的数据为密文数据,这会导致数据库系统自身具备的对数据进行高效组织和检索的能力因密文而严重受损。应用系统必须自行处理数据库索引、查询分析、执行优化、事务处理、并发控制等工作,不但增加了应用系统的复杂度和工作量,还几乎损失了数据库系统自身的全部性能优势,同时也无法通过存储过程、自定义函数等数据库执行对象进行数据库内的高效数据运算和处理,无法利用触发器等机制保证数据库内数据间的复杂完整性,损失数据库系统性能的同时,也对数据库自身的完整性和健壮性造成负面影响。
3、巨大的研发工作量和极高的技术复杂度
基于以上两点,应用系统加密的实现需要应用系统开发投入巨大的研发工作量,同时也需要很高的技术复杂度来部分保证数据库系统功能和性能,使得原本应该集中于应用系统业务逻辑的资源被无形地浪费。
4、无法支持独立于数据库系统的增强权控
应用系统加密无法实现对数据库用户的数据访问权限的增强控制。对于存储于数据库中的密文数据的访问,完全依赖于数据库自身的访问控制设置(包括自主访问控制和强制访问控制),数据库内置的管理员用户对密文数据具有完全的权限,虽然无法获取密文形式的敏感数据的具体内容,但可以对这些数据进行修改和删除。
前置代理加密技术是在应用系统加密技术基础上发展起来的,其表现形式通常是由专业的数据安全厂商推出的数据库加密产品。
图3:前置代理加密技术原理
(一)优势
相比较于应用系统加密技术,前置代理加密技术使得最终用户从高度复杂且繁重的加密、解密处理逻辑的开发工作中解放出来,可以让用户有更多的时间和精力来处理业务逻辑。具备数据库加密、解密等技术优势的第三方独立厂商能够以产品的形式提供专用的前置代理加密网关系统。因此,使用前置代理加密技术时,应用系统可以独立于加密和解密功能进行演进。
(二)劣势
在前置代理加密技术中,数据在写入数据库时也已经是密文,因此,和应用系统加密技术相同,前置代理加密技术也有开发过程无法透明化、数据库自身特性优势丧失的显著缺点,同时,前置代理加密网关封装了加密、解密的处理逻辑和管理规则,代替数据库服务进行大量复杂的数据管理和处理操作,因此其本身的实现也有很高的技术复杂度且需要投入巨大的工作量,即便是对于具备数据库加密、解密等技术优势的第三方独立厂商,这些问题也是一个困难的挑战。
为了避免数据加密给数据访问和处理带来性能上的严重损失,部分数据库厂商在数据库引擎层提供了一些扩展接口和扩展机制。通过这些扩展的接口和机制,数据库系统用户可以通过外部接口调用的方式实现对数据的加解密处理,同时也能够在一定程度上降低对数据库系统性能的影响。
图4:后置代理加密技术原理
(一)优势
相比于之前的两种加密技术,后置代理加密技术有明显的优势,其中最突出的是应用完全透明性和提供独立权控体系:
1、应用透明
根据上面的技术原理,后置代理加密是在数据库层面对敏感数据进行处理,应用系统对数据本身及处理过程完全无感知。因此,启用数据库加密对应用系统不会产生影响,应用系统不用做任何改造即可获得数据加密存储的收益。应用系统包括但不限于传统SQL、数据库内的存储过程和自定义函数、执行数据库操作与管理的脚本、数据库管理工具和用户的业务系统。
2、独立权控体系
使用后置代理加密技术,可以在外置的安全服务中提供独立于数据库自有权控体系之外的权限控制体系,可以有效防止特权用户(如DBA)对敏感数据的越权访问。
3、细粒度加密
后置代理加密技术可以实现精确到列级的细粒度加密,这一优势是由后置代理加密技术的具体实现决定的。
(二)劣势
1、开放性较差
后置代理加密技术对数据库开放性有较强的依赖,需要数据库产品具备外部接口调用能力,但遗憾的是,并非所有商业数据库都具备这种能力。
2、部分场景下性能表现不够好
后置代理加密技术是通过多级视图及创建于其上的触发器进行外部接口调用来实现加密解密和独立权控能力的,触发器的运行机制要求对加密表中每一条数据中的每个加密列的读或写都会进行一次外部接口调用 ,因此,当查询中涉及的加密列较多时,或查询涉及的加密列不多但查询结果集中返回大量数据时,后置代理加密技术对数据库的整体性能会有一定的影响,甚至在极端情况下无法满足业务要求。
后置代理加密过于依赖数据库自身所具备的扩展机制,且数据在数据库共享内存中也是密文,导致在部分场景下的数据库性能表现不佳。因此,基于后置代理加密技术又发展出了透明数据加密技术,目的是在保持后置代理加密优势的同时,降低对数据库自身扩展机制的依赖性,从而让数据库系统性能保持在相对合理的水平之上。
图5:透明数据加密技术原理
(一)优势
和后置代理加密技术一样,透明数据加密技术具备应用完全透明性,此外,插件形式的透明数据加密技术也可以提供独立权控体系,同时可以不依赖于数据库自身的一些特殊功能,具有较强的开放性:
1、应用透明
透明数据加密也是在数据库层面对敏感数据进行处理,应用系统对数据本身及处理过程完全无感知。因此,透明数据加密技术在应用时也不会对现有的应用系统产生影响,应用系统不用做任何改造即可获得数据加密存储的收益。
2、独立权控体系
使用插件形式的透明数据加密技术,同样可以在外置的安全服务中提供独立于数据库自有权控体系之外的权限控制体系,可以有效防止特权用户(如DBA)对敏感数据的无限制访问,进一步保证敏感数据不会被不正当地访问和泄露。
3、更强的开放性
相对于后置代理加密技术依赖于数据库的外部索引接口、外部接口调用等特殊功能,透明数据加密技术对数据库自身的依赖性小,因此可以在更多类型的数据库上使用透明数据加密技术。
4、性能优势
透明数据加密加密技术本身只是对数据库引擎的存储管理层进行了功能增强,并不影响数据库引擎的语句解析和优化等处理过程,数据库自身在数据存储、管理和使用等方面的所有优势都依然可以保留,因此,透明数据加密技术相对于前面几种数据库加密技术具备性能上明显优势。
(二)劣势
透明数据加密是当前主流商业数据库产品所有具有的数据安全增强特性,但由数据库厂商提供的透明数据加密功能完全依赖于他们自己的设计,尤其是在密钥管理的开放性方面,通常不能集成使用第三方密钥系统,而且,这些数据库内置的透明数据加密无法屏蔽数据库超级用户对加密数据的无限制访问。
插件形式的透明数据加密可以解决密钥系统开放性和实现独立于数据库自身权控体系的增强权限控制,但由于使用插件技术,对于数据库的版本有较强的依赖,即使专业的数据安全厂商,也仅能对有限的几种类型的数据库实现透明数据加密插件,在数据库类型适用性上有一定的限制。
在数据库加密技术中,除了从前端应用及数据库自身角度实现数据库加密外,基于数据库底层依赖的文件系统或存储硬件,也可以实现数据库加密。
图6:文件系统加密技术原理
(一)优势
文件系统加密技术的主要优势在于其应用完全透明性和数据库类型的开放性:
1、应用透明
在数据库加密技术体系中,文件系统加密技术只关心数据库系统的数据文件的加密存储,对应用系统具备完全的透明性,使用文件系统加密技术对数据库进行加密时,完全不需要应用系统做任何修改。
2、强大的开放性
文件系统加密技术是操作系统内核层面的技术,与数据库类型无关,任何一种数据库系统,只要其存储数据的方式是文件系统而非裸设备,则文件系统加密技术都可以用于对数据库进行存储加密。因此,文件系统加密技术对数据库系统具备非常强大的开放性。
3、相对更好的性能
在加密数据的处理性能方面,文件系统加密技术表现得相对较好。一方面,因为文件系统加密技术的数据库无关性,该技术不会对数据库引擎存储和处理数据的逻辑有任何影响,数据库系统的功能特性和性能优势可以充分发。另一方面,文件系统加密技术是在操作系统的文件管理子系统上部署加密插件来实现数据加密,增加了数据库系统与磁盘存储进行交互时的工作量,因此会对数据库系统整体性能造成部分损失,损失的程度与文件系统加密技术本身的实现及磁盘系统自身的I/O能力有关。
(二)劣势
1、无法对数据库内部用户进行独立权控
由于文件系统加密技术的数据库无关性,因此,该加密技术不具备对于数据库用户的增强的权限控制能力,无法防止数据库超级用户对加密数据的访问,这是文件系统加密技术在数据库加密领域中相对于前面四种加密技术的最大劣势。
2、技术复杂度
由于是对操作系统内核进行功能增强,因此,文件系统加密技术在实现上有一定的技术复杂度,同时,文件系统加密技术的具体实现可能会对操作系统的稳定性造成一定的负面影响。
(一)优势
磁盘加密技术应用在数据库加密领域中,除具备应用完全透明和数据库类型无关的优势外,其最大的优势就是具有非常良好的加解密性能。磁盘加密技术通过存储设备自身的物理结构实现,能够最大化地发挥存储设备本身的硬件能力,能够对上层数据库系统提供无损的性能服务。
(二)劣势
与文件系统加密技术相同,由于数据库无关性,磁盘加密技术也不具备对于数据库用户的增强的权限控制能力。此外,由于是基于硬件系统的加密技术,国内虽然对其有所研究,但受制于磁盘等存储设备的生产制造等原因,磁盘加密技术在国内仍然停留在技术研究层面,完全没有产业化和实用化,在国内的数据库加密领域甚至是存储加密领域,都基本上没有应用。