虽然一些大型的数据库管理系统都提供了用户身份标识和认证、使用权限控制、视图、审计等安全管理措施,但是一些重要部门或敏感领域的数据库应用系统仅靠这些措施还难以完全保证文件的安全性。因此,有必要对数据库中存储的重要文件进行加密处理,以实现数据存储的安全保护。那么我们今天就介绍几个适用于数据库加密的加密算法。

数据库加密算法选择标准

数据库中文件加密的粒度一般有表级、记录级、字段级和数据级4种,加密粒度越小,则适用范围越广,但实现难度就越大。就目前研究现状,以记录或字段为加密粒度居多。因此,适于数据库加密的加密算法必须符合以下标准:

1、 由于数据库数据保存的时限相对较长,数据库加密对加密算法强度的要求是第一位的。

2、 由于数据库中数据量大,数据最大量的使用方式是随机访问,因此对加密算法的加密和解密效率要求较高,不能引起数据库系统的性能大幅度下降。

3、加密后数据库组织结构对于数据库管理系统而言不能有大的变动,应尽可能做到明文和密文长度相等或至少相当。

4、由于时限较长和密钥的复杂,密钥管理机制应更加灵活和坚固。

通过以上分析,我们可以得知,数据库加密算法宜采用分组加密算法。由于数据库字段的长度一般较小,如果加密算法的分组规模大,会在数据库内产生过多的填充信息,致使数据长度发生太大变化,涉及数据库表结构变化,这样会增加实现的难度并降低系统运行效率,因此数据库加密算法适合采用小分组加密算法。

由于DES加密算法的密钥长度固定,无法扩展,并且已被攻破,安全性不太高;AES加密算法至少需要128位分组,都不太适合给数据库加密。RSA公司提供的RC5和RC6加密算法,是目前最成熟的分组加密算法,并且尚未被攻破,具有较好的安全性,并且由于其分组长度和密钥长度都可变。

数据库加密算法分类:

一、RC5 加密算法

RC5加密算法是RSA公司提出的一个新的迭代分组密码。

1、RC5加密算法的特点

分组长度2w,密钥长度b和轮数r都是可变的。简记为RC5-w/r/b。该密码既适合于硬件实现又适合于软件实现,具有运行速度快、强度高、易于实现的优点。

2、RC5加密算法的实现

它主要通过基于数据而变化的循环移位运算来实现数据的扩散和混淆。每次循环移位的位数都依赖于输入的明文,事先不可预测。RC5加密算法中没有非线性的置换表,循环移位是唯一的非线性运算,RC5的强度主要依靠与明文有关的数据循环移位。另外算法中的异或操作提供了加密时的雪崩效应,即一个明文输入块中一位的改变会引起后续轮中数据的多位改变。

二、RC6加密算法

RC6加密算法是AES第二轮测评评选出的5个候选加密算法之一,它是对RC5加密算法的改进,除了继承RC5加密算法的基于数据的循环移位外,它还增加了乘法运算,增加了每轮的扩散速度,使得用更少的轮数就能实现更高的安全性和抵御更强的攻击。

为抵抗RC5加密算法由于轮之间相对较慢的雪崩效应而面对的一些攻击,RC6加密算法使用二次F函数实现字内的更快的混淆,以便实现循环移位位数的快速改变。

RC6加密算法中循环移位位数除一部分是不确定数外,还有一部分是固定数,固定位数的循环移位使得对此算法的线性攻击和微分攻击变得复杂。

三、R加密算法

R加密算法是由RC5加密算法、RC6算法修改而成,它继承了RC5加密算法的密钥扩展算法,但对RC5的加密算法作了修改,将RC5加密算法的循环移位改为RC6加密算法的循环移位。除了继承RC5加密算法的基于数据的循环移位外,增加了乘法运算,加快了每轮的扩散速度,使得用更少的轮数就能实现更高的安全性和抵御更强的攻击。

为抵抗RC5加密算法由于轮之间相对较慢的雪崩效应而面对的一些攻击,使用RC6加密算法的二次F函数实现字内的更快的混淆,以便实现循环移位位数的快速改变。另外由于采用RC6加密的循环移位,移位位数除一部分是不确定数外,还有一部分是固定数,固定位数的循环移位使得对此算法的线性攻击和微分攻击变得复杂。

R加密算法综合了RC5加密算法、RC6加密算法优点并保持小的分组,使之更适合用于对数据库加密。安全性比RC5加密算法、DES加密算法高,密钥长度可变,能抵抗密钥穷举攻击。加密和解密速度快,可满足数据库加密的要求。

小知识之雪崩效应

雪崩效应就是一种不稳定的平衡状态也是加密算法的一种特征,它指明文或密钥的少量变化会引起密文的很大变化,就像雪崩前,山上看上去很平静,但是只要有一点问题,就会造成一片大崩溃。