当前位置:首页 >资讯 >深度解析数据库透明加密(一)


数据库是根据数据结构组织、存储和管理数据的仓库。数据是信息系统的核心财产。数据库就像人脑一样,是所有信息系统的核心。一旦大脑被破坏,它必然会影响整个人的身体功能。同样,如果数据库中的数据丢失、损坏或泄漏,必然会给企业带来不可估量的损失。因此,数据库中数据的加密保护已成为数据库安全的重要组成部分。

1、什么是数据库加密?

数据库加密是指以加密的方式存储存储在数据库中的数据,特别是敏感数据。本文提到的数据库加密是指数据库的透明加密。

2、什么是数据库透明加密?

透明加密是指对数据库中的数据进行加密和解密,对数据库的访问程序完全没有感知。特别是,应用程序系统可以直接应用于加密库,而无需任何修改和编译。

与透明加密相对应的是在应用程序系统中加密数据,然后存储到数据库中。当需要真实数据时,从数据库中读取密文,然后解密明文。严格地说,这不是数据库加密,而是数据加密。

3、为什么要加密数据库?

文章开头介绍了数据库和数据的重要性,因此加密数据库是数据安全保护的核心手段之一。

数据有两种类型,一种是非结构化数据,如文档和图片,另一种是结构化数据,如数据库中的数据。这两种形式的数据都非常重要,都需要加密保护。结构化数据通常携带非常集中和有价值的信息,因此加密保护尤为重要。

面对敏感数据频繁泄漏的严峻现实,虽然加解密过程会损害数据库的使用效率,但加密数据库仍然是必要的保护措施。数据库加密可以显著提高数据库的安全性。加密后,数据以密文的形式存储,防止数据直接暴露,加强对加密数据的访问控制,大大降低了数据泄露和恶意破坏的风险。

深度分析数据库透明加密(1)

4、实现数据库加密的方法是什么,特点是什么?

深度分析数据库透明加密(1)

实现数据库加密的方法有六种,具体介绍如下:

全盘加密:使用全加密系统或存储加密网关系统来加密数据库文件所在的磁盘风扇区域。当数据库访问磁盘风扇区域时,再次解密加密风扇区域。这种方法对数据库本身是透明的,数据库管理系统感觉不到加密解密过程的存在。这种加密方法在存储层工作,只能防止磁盘丢失时敏感数据泄漏。所有有权访问磁盘的用户都可以访问真实的数据库文件。因此,对于控制操作系统的攻击者,并没有防护能力。

文件加密:在操作系统文件驱动层将数据库的存储文件经过加密后存储到磁盘上。当数据库访问存储文件的时候,再进行解密。这种方式对于数据库自身来说也是透明的,数据库管理系统也感觉不到加密解密过程的存在。这种加密方式能防止磁盘丢失和文件被复制导致的敏感数据泄漏。但是,对于控制了数据库系统的攻击者来说,文件还是开放的,因而也没有真正的防护能力。

数据库自带加密:某些数据库自身提供了加密机制,在数据库内核实现了存储的加密。这种加密方式能防止磁盘丢失和文件被复制导致的敏感数据泄漏。但是,对于控制了数据库系统的攻击者来说却是开放的,并没有防护能力。而且其密钥管理通常不会对数据库用户开放,安全性得不到保证,也得不到国内相关评测机构的认可。

库内扩展加密:通过使用视图、触发器、扩展索引等机制,实现透明加密。由于引入了独立于数据库的第三方程序,通过控制加密解密的权限,增加了额外的访问控制。对于数据库内不同的用户,也可以控制其对加密数据的访问。但是这种加密方式不能越过应用系统,实现应用系统用户对敏感数据的访问控制。而且这种加密方式依赖于数据库系统的扩展索引机制,并不能在所有数据库上实现。

数据库加密网关或加密驱动:通过对数据库前端部署数据库加密网关,或者通过扩展数据库访问驱动(如JDBC驱动)实现数据库加密。这种方式理论上能够支持所有的数据库,是一种通用的解决方案,且安全性更高。但是对于所有访问语句和访问机制却难以全部支持,例如对于网关之后的存储过程和触发器都无法支持。

应用加密网关:在应用系统之前放置加密网关,进一步将数据加密的位置提前,在数据进入应用系统之前进行加密。这种加密方式可以控制应用系统的用户对数据的访问权限,并且真实数据对所有数据库用户都是不可见的,是最安全的一种加密方式。事实上,这种加密方式与具体的数据库无关,是对立与数据库的。但是由于应用系统的复杂性,实现的难度也较大。

总之,数据被加密的位置离用户越近,安全性越高,同时实现的难度也越大。以上所述的几种加密方式,数据加密的位置离用户是逐步靠近的,防护能力也是逐步提升的。

目前国内数据库安全市场主流的数据库加密方式是库内扩展加密,本文中,如果没有特别指出,都特指这种加密方式。

有关数据库透明加密的其他相关问题,会在后续文章中一一介绍,敬请关注。