摘要:
数据库加密是当下数据安全的重点和难点,本文对比分析了11种数据安全的实现方式,供相关人士参考。
1. 导言
数据库加密(指应用数据加密或者数据存储加密)是当下等级保护评估、数据安全风险评估、商密评估等合规评估的重点,同时也是合规落实最差的方面:当下重要数据已经实现加密保护的比例可以忽略不计。造成该现状的主要原因是数据加密的实现非常困难,需要兼顾性能不降低、与现有业务系统兼容等多项硬性指标。
经过一线研发人员二十余年的攻坚克难,迄今为止共发布了三代数据库加密系统,逐步变得越来越“完美”。抛去具体产品不说,理论上可以实现数据加密的位置一共有十一处,本文对该11种实现方式的特点进行对比分析。
2. 评价指标
为使得各种实现方式的特点更加直观,本文对每个实现方式,分别对比透明性、兼容性、性能、安全性、合规性五个指标,且每个指标均采用5分制。
1)透明性
透明性就是免改造性,指不对现有应用进行修改重构,与现有业务的兼容性。对于透明性的评分标准如下:
透明性 | 得分条件 |
5 | 业务系统完全不修改。 |
4 | 业务系统只需要做细微修改,并可以兼容全部数据库自身机制,包括存储过程、函数、触发器、视图等。细微修改包括修改IP、端口等数据库连接信息、替换JDBC等数据库连接驱动,以及切面编程。 |
3 | 业务系统只需要做细微修改,但不兼容全部数据库自身机制。 |
2 | 需要修改应用系统,硬编码实现数据加密和密文检索。 |
1 | 修改应用系统也无法完全兼容现有系统。 |
2)兼容性
兼容性是指不考虑透明性的条件下,兼容多种类型的数据库的能力。根据所能兼容的数据库情况,给予打分如下。
兼容性 | 得分条件 |
5 | 在4基础上,兼容Hadoop家族的大数据存储组件,包括HBASE,HIVE等。 |
4 | 在3基础上,兼容MongoDB等NoSQL数据库。 |
3 | 在2基础上,兼容所有关系型数据库,包括进口和国产数据库。 |
2 | 在1基础上,兼容Mysql等开源数据库,或依赖少数数据库自身的TDE实现。 |
1 | 兼容Oracle等扩展性好的数据库。 |
3)性能
性能是指保持数据被加密后性能不能明显下降的能力。此处指加密后执行查询、插入等命令的时间延迟情况。查询只考虑多表连接、多字段联合条件查询、模糊条件查询等最复杂的情形。
性能 | 得分条件 |
5 | 轻微影响,延迟小于10%,甚至小于5%。 |
4 | 影响较小,延迟小于50%。 |
3 | 有一定影响,延迟小于100%。 |
2 | 较大影响,延迟小于300%。 |
1 | 严重降低,基本不可用。 |
4)安全性
安全性是指数据加密后,对数据库安全性的提升。考虑对数据库特权账号管控能力、对OS特权账号管控能力,对应用特权账号管控能力,以及对勒索病毒的防控能力。
安全性 | 得分条件 |
5 | 应用不可见明文。 |
4 | 在3基础上,数据库不可见明文,可管控应用特权账号。 |
3 | 在2基础上,可管控数据库特权账号。 |
2 | 在1基础上,可管控OS特权账号复制文件泄密。 |
1 | 防止直接读取硬盘泄密。 |
对于可以防控勒索病毒的加密方式,则上表基础上单独加1分,但满分仍然是5分。
5)合规性
在当前,等保三级、数安评估中对数据加密的要求与商密评估中的数据加密评估方式基本一致。根据具体评估办法和打分方法,将合规性得分设置为如下:
合规性 | 得分条件 |
5 | 数据库非授权账号访问查看显示密文 |
4 | 直接打开数据库文件查看显示密文 |
3 | 磁盘介质查看显示密文 |
2 | 无定义 |
1 | 无加密措施 |
3. 数据库加密的11种实现方式
从数据库源头开始,一直到应用终端,理论上共有11个位置可以实现数据的加密存储,如下图所示。
1)硬盘加密:采用硬件加密磁盘,或者磁盘加密软件,将数据库文件所在的磁盘进行加密。当数据库访问磁盘时,磁盘自动对加密数据解密。这种方式对于数据库自身来说是透明的,数据库管理系统感觉不到加密解密过程的存在。安全性方面,仅能防止磁盘丢失时敏感数据遭受泄漏。所有对磁盘具有访问权限的用户都可以访问到真实的数据库文件。
2)存储加密网关:只适用于网络存储场景,通过截获存储通讯协议,在文件读写时候进行加密和解密。安全性与硬盘加密相当。
3)文件加密:采用文件加密软件,对数据库的数据文件和索引文件进行加密。这种方式对于数据库自身来说是透明的,数据库管理系统感觉不到加密解密过程的存在。这种加密方式在能防止磁盘丢失时敏感数据遭受泄漏的同时,还能控制OS用户和进程对数据库文件的访问,可以抵御勒索病毒,但是对数据库账号没有控制能力。
4)OS扩展加密:在操作系统中使用驱动或者HOOK机制,截获数据库的权限控制和文件读写操作,将数据加密后存储到磁盘上,并根据数据库用户的权限决定是否将解密后的数据输出给用户。该方式对数据库账号具有控制能力,同时也可以实现勒索攻击的抵御,但是对应用层的用户没有控制能力。
5)数据库自带加密:某些数据库自身提供了加密机制,在数据库源码级实现了存储的加密。该方式对数据库账号具有控制能力,但是不能阻止勒索攻击。
6)库内扩展字段加密:通过使用视图、触发器、存储过程、扩展索引等机制,实现透明加密。可以控制数据库用户对加密数据的访问。但是这种加密方式的密文检索依赖于数据库系统的扩展索引机制,不能在所有数据库上实现密文索引,支持较好的是Oracle数据库。同时,这种方式对性能影响比较大。
7)数据库加密网关:通过在数据库前端部署数据库加密网关程序,截获数据库访问命令,实现数据库的透明加密和解密。这种方式可以控制数据库账号的权限,但是无法对库内的视图、触发器、存储过程、扩展索引等机制实现透明支持,性能也较低。
8)数据库连接驱动加密:通过扩展数据库访问驱动(如JDBC驱动或切面编程)实现数据库加密。这种方式的特性与数据库加密网关类似。
9)应用加密:在业务应用系统中,直接调用加密函数实现对数据的加密,以及实现密文检索和密钥管理。这种方式可以实现对应用账户的权限控制,但是改造量巨大。
10)应用代理加密:在应用系统之前放置代理程序,在数据进入应用系统之前进行加密。这种加密方式可以控制应用系统的用户对数据的访问权限,并且真实数据对应用和数据库都是不可见的,是非常安全的一种加密方式。但是由于应用系统的复杂性,通常需要复杂的适配;且无法支持加密数据的检索,所以实现的难度大,透明性低,受限较多。
11)终端加密:通过使用终端安全控件,在接受用户输入的时候,就将数据加密后传输到应用和数据库;显示时再通过终端安全控件对加密数据解密显示。这种模式具有理论的最高安全性,同时也是最不透明的,实现难度也最大。
4. 数据加密方式的评估
对上述11种实现方式,对其5个指标逐一评分,结果如下表。
将上表中各实现方式的5个特性得分数据绘制成曲线图,如下图所示。
从上图中可知如下趋势:
1)在性能方面,离硬盘越近,性能越高,离硬盘越远,性能则越低。另一个趋势是加密的粒度越细,性能越低。在接近磁盘的位置,采用文件或者磁盘加密的方式,性能最高,而在应用以后的方式中,采用了字段加密的方式,性能最低。
2)透明性方面,同样是离硬盘越近,透明性越高,离硬盘越远,透明性则越低。在库内扩展字段加密方式之前,透明性都是5分,都可以在不对应用修改的情况下兼容所有语句以及数据库的所有特性。在数据库加密网关以后,透明性急剧下降。
3)合规性方面,在OS扩展加密及以后的各种方式,都可以良好的满足合规性;而在采用硬盘、文件、存储网关加密方式时,在合规性方面则会存在一定的问题。
4)在数据的兼容性方面,除了库内扩展字段加密和数据库自带加密方式以外,其他都是满分,不依赖于数据库自身的特性就可以实现。
5)安全性方面,整体趋势则是离硬盘越远,离终端越近,安全性越高。安全性最低的是硬盘加密和存储网关加密方式,仅能防止拔硬盘攻击。而文件加密和OS扩展加密则可以实现对勒索病毒的防御,在当下具有重要意义。
在总比分方面,OS扩展方案得分是23分,位居第一,说明其在5个方面都取得了良好的成绩。排名第二、第三的分别是文件加密方式和数据库加密网关以及数据库连接驱动加密。
5. 总结
以上是对各个实现方式的原理和评估分析。需要指出的是,并不是上述的每个实现方式都适合产品化。同时,市场上的某些产品是基于一个或者多个技术实现的,并且可能在某些指标上进行了特殊优化,所以上述技术实现方式的评估并不直接代表对具体某个产品的评估。比如,数达安全第三代数据加密产品采用的动态加密技术,是基于OS扩展加密方式来实现的,在其基础上还进一步的实现了异步存储加密,性能得分进一步到5分的水平,产品总体得分可达到24分,优势进一步得到扩大。