数据库加密应该考虑的问题

随着科技发发展,数据安全越来越重要,其中数据库安全是重中之重,那么对于数据库加密方式也有很多,那么对于数据库加密应该考虑哪些问题呢?今年亿赛通加密软件小编为大家介绍下,希望对大家有所帮助。

数据库加密应该考虑的问题:

1、加密不能代替访问控制

(1)加密技术往往是以牺牲系统性能为代价的,如果对数据库中的数据采用加密的方法来完成访问控制的功能,那么拥有密钥的用户在访问加密数据时,需要解密,这个操作代价往往比较大,极大地影响系统的性能。

(2)加密技术并不一定比访问控制更安全。加密技术和访问控制是保护数据库安全的两种不同方法,并不存在哪一种方法更安全的问题。一般来说,加密技术的安全程度取决于加密算法的强度。密钥的长度和密钥管理方案的好坏。加密算法越强,密钥位数越长!密钥管理方案好,这样的加密技术就越安全,抗攻击能力就越强。就我们所知,目前不存在一种绝对安全的加密技术。访问控制技术是一种非常有效的安全措施,它有一些成熟的安全理论模型作为其理论基础,但是,这并不意味有了访问控制技术,安全问题就得到解决。非法的攻击者可以通过绕过访问控制机制入侵到DBMs,对数据库中的数据进行破坏。

(3)加密技术不能提供灵活的安全控制策略。访问控制可以灵活地实现对数据库中各种粒度的对象(包括表,记录,字段值等)进行授权(包括select,insert,update,delete等)。如果采用加密方法,则不可能实现。例如,对某一字段进行加密后,一旦用户拥有解密密钥,那么他可以对该字段进行任何操作。

2、区分数据库中动态数据加密和静态数据加密

动态数据加密:当数据经过各种网络,从数据库服务器流入客户端,或者从客户端流入数据库服务器,对传输过程的数据加密称为动态数据加密,这种方法己经被广泛地研究,在实际应用中也相当成熟。

静态数据加密:对存储在数据库服务器中的数据进行加密,也称为存储数据加密,研究相对较少。

3、加密算法的选择

通常来说,加密算法有对称算法和非对称算法。

4、加密层次的选择

(1)操作系统层。

数据库系统包括数据库和与之相关的应用程序,它运行在计算机操作系统之上,集硬件、软件于一体的系统。从操作系统层看来,数据库是存储在操作系统上的文件,所以对数据库的加密可以通过对操作系统中的数据库文件加密来实现。操作系统中的数据库文件是不能分割的,所以对从操作系统层加密容易实现。但是在操作系统层加密,数据库文件无法识别,密钥无法根据需求合理产生和管理,或者整个数据库文件使用一个密钥,这样密钥丢失数据库的安全威胁就会很大。在操作系统层加密还有一个严重问题就是系统效率非常低下,每次数据库查询、插入、删除记录都需要对整个数据库文件加解密,代价大,效率低下。频繁的采用同一或少数密钥对数据库加解密,还会使密钥暴露的可能性大大增大。这种方法不可取,对于大型数据库的应用来说,很少在操作系统层加密。

(2)DBMS内核层

在DBMS内核层实现加密,通常指的是通过修改DBMS内核,在数据库内部创建加解密的命令语句,数据在经过操作系统的存取之前完成加解密。这种加密方式对用户来说是透明的,用户不必去了解数据库管理系统是如何完成加解密操作,用户就像操作正常的SQL命令语句一样,而且集成加密功能为数据库管理系统的功能,实现加解密功能和数据库管理功能的结合。DBMS内核层加密的缺点也很多:

1) 在内核层实现加密,需要创建一些DMBS内核加解密原语,还有对应的数据

库加解密的数据库定义语句、带有加解密实现的数据库操纵语句。

2) 数据库管理系统经过长时间的应用及发展,已经形成了较为完备的结构体系,对数据库管理系统的修改是一项浩大的工程,其内部模块之间的分配关系很复杂,需要得到数据库厂商的大力支持,但是厂商考虑数据库管理系统现有的大量用户,修改结构往往会影响系统的稳定性,对于引起风险的可能性,往往不希望修改其原有的结构。

3) 应用用户只能局限于由数据库管理系统提供的加密算法,缺乏灵活性。

4) 在DBMS内核层实现加密的操作系统,其密钥库通常也存在于DBMS系统文件中,密钥的安全和数据库的安全都依托于数据库的身份识别和鉴别机制,系统的安全性差,加密系统的优势降低。

(3)DBMS外层加密

DBMS外层加密只是在数据库系统外层做一个加密应用软件,在数据库存入数据库之前对数据加密,取出数据库之前进行解密,DBMS直接管理的是密文数据。所示,通过加密要求定义工具对数据库中已经建好的数据表定义加密粒度、加密算法等要求。数据库加密系统根据加密定义获取数据与加密参数,然后调用加解密引擎模块自动完成加解密,加密结果交给DBMS,解密结果返回给数据库应用系统。采取DBMS外层加密时,加解密过程由数据库加密系统完成,DBMS直接管理的是密文或者包含明文密文的数据表。这样数裾库加密系统的加解密功能模块就可以灵活布置,可以部署在客户端,也可以部署在服务器上或者服务器局域网的其他主机上。密钥管理也灵活方便,密钥可以和加密数据分开保存,如服务器端其他主机上,增强安全性。

值得注意的是如果将加解密功能在客户端实现,可以有效降低数据库服务器端的任务,但是这要涉及到密文在网络上的传输,明文数据经过加密以后的密文所占空间往往较大,又会面临网络传输困难,增加网络负担。加密以后密文数据库的功能会受到一些限制,数据库的完整性和一致性遭到破坏,对于密文数据库无法像明文一样比较,所以无法建立索引。本文的数据库加密系统采用DBMS外层加密,并在库外构造一个数值类型的密文索引,实现加密系统与数据库的有机结合。


2020年5月26日 11:03