在目前网络安全技术下,任何网络都是有漏洞的,在数据不加密的情况下,任何系统数据库数据对内部和外部黑客都是公开的,黑客可以在几分钟内用移动硬盘等工具盗窃全部服务器的文件和数据库数据。因此,要想提高数据库数据及服务器文件的安全性,我们就需要对数据库进行加密,下面我就给大家讲一下Oracle数据库文件是如何加密的?

一、数据库加密的一般策略

近年来,数据库加密技术研究取得一定的研究成果,提出了多种数据库加密策略,但无论何种策略,都属于下面两种之一:(1)DBMS内核层加密;(2)DNMS外围层加密。这两种策略的特性及优缺点如表所示。

Oracle数据库加密技术

从表中可以看出,两种加密方法各有优缺点,在DBMS内核层实现数据加密,对应用程序的影响较小,可以适应更多的应用需求,但加密算法选择受所采用的数据库系统限制,并且会降低数据库操作性能。而在DBMS外围层加密,既可采用通用的加密算法,也可采用自己开发的加密算法,算法选择灵活多样,加密安全度高,并且加/解密过程与数据库服务器分离,不影响数据库系统的效率,但通讯负载大。在实际应用中采用何种加密策略,需要权衡利弊,根据需求来确定。

二、Oracle数据库加密策略分析

1、加密软件包及功能

与Sysbase、SqlServer等数据库管理系统一样,Oracle数据库管理系统的主要功能仍然是实现对数据的管理及操作,数据加密只是为了提高存储数据的安全性而附加的功能。Oracle数据库加密功能的实现由数据库平台提供的软件包来支持。DBMS-OBFII _ATKON_TOOLKIT(DOTK)是Oracle _9i以及更低版本的数据库中唯一可用的加密方法,而Oracle Database _10g中,用户可以通过一种更加完善的内置软件包DBMS-CRYPTO来执行数据加密,它对早期版的DBMS—OBFUSCATION_TOOTKIT在功能和函数上进行了加强。两个软件包加密功能比较见表。

Oracle数据库加密技术

2、加密算法 

从表中可以看出,在软件包DBMS—OBFUSCATION_TOOTKIT中,加密算法仅支持DES以及三重DES加密算法,而在软件包DBMS _CRYPTO中不仅支持上述加密算法,而且还支持256位的高级加密标准AES等,使用户有了更多的选择,也使加密数据可以达到更高的安全强度。

两个软件包中支持的算法,无论哪种算法都属于分组密码算法,其分组大小是固定的如果加密信息长度不在分组边界,就需要附加数据填充,使它充满整个分组。填充的方法有固定值填充、随机填充、PKCS填充。

固定值填充,最常用的填充值是0x00/0x80加0、1字符串,不常用的填充值是0xff;

随机填充采用随机位来填充;

PKCS填充使用信息长度编码,因此不需要预先知 道信息长度就可以去掉填充。

Oracle _10g中,可以根据需要用不同的参数来确定所选择的填充类型,而Oracle _9i并不支持数据填充。在运算模式上,Oracle _10g中支持ECB、CBC、CFB及OFB,而Oracle _9i中仅支持CBC。

3、密钥存储和管理

在数据加密中,密钥的存储和管理是非常重要的,它直接影响到数据加密的安全性。但是,在数据库管理系统内核层加密策略中,并没有提供密钥存储的方法,这也是在以Oracle提供的安全包为基础制定加密策略时最难懈决的部分。在制定密钥的存储和管理方案时,要确保以下两点:

(1)密钥存储,足够可靠,以确保能够保护数据;

(2)要保证合法用户且只有合法用户可以获取密钥。

在数据库文件加密中,密钥通常存在数据库中、文件系统中或用户自身的存储设备中。Oracle数据库文件加密中,密钥仍然是以数据表形式存放在数据库中。如果密钥以明文形式存放在数据库中,那么攻击者只要进入数据库系统中,他就很容易找到破解密文的密钥。如果密钥以密文形式存放在数据库中,那么加密密钥的密钥如何存放就成了需要解决的新问题。常用的解决方法是采用多级密钥存储管理,把用户密钥与数据密钥结合使用,提高数据库加密的安全性。

任何加密策略的安全性都依赖于密钥的安全,但是Oracle数据库系统提供的加密方案中,并没有给出密钥存储与管理的安全方法。要想提高数据库加密系统的安全性,仅依靠数据库系统自身提供的加密手段显然是不够的,还需要辅助其他的外部手段来实现密钥的安全存储与管理。

小知识之Oracle数据库

Oracle_数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。