数据库的安全威胁是信息系统安全的核心障碍之一,因此给数据库加密是非常必要的。但是传统的数据库加密方法总是存在着这样或那样的缺陷,为了解决这一缺陷,我们提出了一种密钥由动态密钥生成策略生成的基于三重DES加密算法的数据库系统加密方法。该方法大大降低了数据密钥的存储量,改善了对数据密钥的管理。

一、基于3DES的动态密钥生成方案

1、使用双密钥的三重DES加密算法

三重DES加密是一种将DES加密算法多次使用的技术。

在第一次使用中,明文通过加密算法转化为密文。然后将该密文作为输入重新执行加镪算法,该过程重复三次。在加密的三个阶段。共享两组不同的密钥:具体运算过程是加密——解密——加密(EDE)。

给定明文P及密钥K1,K2,解密时仍按同样顺序使用这两个密钥。

2、三级密钥关系及密钥转换

为了减少单个密钥的使用周期,增加整体安全性,在密钥管理中,采用层次密钥结构,将密钥层次分为了三层:

设用户集U={u1,u2...un)u代表n个用户。U对应的用户密钥集KU={ku1,ku2...kuj}一个密文表对应一个密钥加密密钥Kk;而一个密钥加密密钥K。又对应一个用户密钥集KU。可知:KU={ku1,ku2...kuj}与Kk是多对一的映射关系。

采用下面的密钥转换方案实现{ku1,kU2---kun}与Kk的映射。

设T为转换参数生成器。对应每一个用户ui有一个解密参数Pi,pi由T生成。T构造如下:

系统中有一个安全的传统加解密算法(E,D),用户ui要访问KL时,ui提供kui,系统找到对应的p“计算E(ku*,pj=E(kui.D(ku1.KJ)=KL'这样实现了{ku1,kU2---kun}与Kr的映射。对于一个非法用户ui,系统中没有与之对应的n,因此无法得到Kk。

3、动态密钥生成策略及数据解密流程

在数据库中每一个数据表对应一个密钥加密密钥Kk。我们为每一个数据表添加一个字段ID,该字段的数据类型为int。并且被定义为从1开始,步长为1。每新加入一个记录,都用一个连续的自然数来表示该记录。定义该字段的目的,主要是为了确定表中每行数据的所在行的序号。这样,通过字段ID和表中的数据所在列的序号可以唯一确定表中的每一个数据。

设明文表中某一待加密的明文数据为P,P所对应的字段ID值为X。对应列所在的序号为Y。

设数据密钥K1=kk+X,K2=KI+Y(+为异或运算)。将KI和Kk作为3DES加密算法的两组密钥。设C为加密结果,具体的运算过程按照加密一解密一加密模式。

数据库解密与加密流程类似,本文以数据库解密流程为例进行简单分析。如图3所示的数据库解密流程,当用户ui需要查看密文表中的某项密文C所对应的明文P’时。首先输入用户密钥kuj,通过密钥转换方案获取密钥加密密钥Kc遍历密文表中每一项密文,分别读取每一项密文所对应的X,Y。然后通过动态密钥生成算法,生成该项密文对应的密钥K1,K2;采用三重DES解密算法对密文进行解密,得到明文P;最后将得到的明文p与用户输入的P’进行比较。如果P=P’,则解密完成,否则说明用户ui要查找的明文P不在该密文表中。

二、基于3DES动态密钥的数据库加密方法理论分析与实验结果

1、安全性分析

(1)在加密过程中由于使用了两组不同的密钥,这种方法的密钥长度为56x2=112位,密码强度增加了。

(2)对于三重DES的穷举攻击的代价是2ll2≈(5xl033)数据级的。且用差分密码分析的代价是按指数级增长的,与单DES算法比较超出1052倍。

(3)使用双密钥的三重DES算法。密钥对K1和K2轮流使用可以很好地抵抗中间相遇攻击。

(4)密钥对K1和K2无需存储,存储在密钥库中的只是Kk的密文。用户密钥集KU={ku1,ku2...kuj}存储于客户端。由用户持有,入侵者想找到密钥对K1和K2很困难。

2、效率分析

在传统的基于宇段的数据库加密方法中密钥是静态生成的,数据密钥个数=记录个数×字段个数。这需要我们去管理和维护一张十分庞大的密钥表。而将动态生成密钥的策略应用于数据库加密系统中,数据密钥在加密和解密的时候才会动态生成,无需存储。需要存储的只是转换参数生成器T生成的加密钥的存储最大大降低。

对于数据密钥是静态生成的传统的数据库加密方法和动态生成数据密钥的数据库加密方法,我们做了如下实验:

实验环境:VC++6.O+SQL Server2000,操作系统Wiridows XP。

分别用基于动态密钥生成算法的数据库加密系统和传统的密钥是静态生成的数据库加密系统对兰个不同大小的明文表中的明文数据进行加密,加密粒度为字段级。通过实验得到加密单位明文数据所需的平均时间(单位:毫秒)对比如表2所示:

由实验结果可知.基于动态密钥生成算法的数据库加密系统和密钥是静态生成的数据库加密系统相比,当明文表规模较小时,在时间效率上,差异性体现不明显,效率基本保持一致。但是,随着明文表规模不断增大。本文加密方法的优越性逐渐体现出来。

通过理论分析和实验结果证明了该数据库加密系统兼顾了加密的效率和数据库的安全性。

小知识之3DES

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。