AES算法在数据库加密中的应用*

2013-10-24 10:17
关键词:明文字节解密

舒 涛

(四川省民族学院)

0 引言

对于数据库系统来说,数据存储的安全性是必须解决的问题,以防止数据的泄露、更改和破坏.当前主流的大型数据库系统如SQL Server、Oracle、DB2、Sybase、MySQL 等数据库都提供了如身份识别、存取控制、隔离控制、数据库审计等多种基于DBMS(Database Management System,数据库管理系统)的安全措施,但这些安全措施仍然难以有效阻止非法用户通过窃取数据库登录密码或利用操作系统和数据库系统漏洞来绕过这些安全措施直接读取或篡改数据库中的内容.为了防止用户非法访问数据库内容,必须对数据库中存储的重要数据进行加密保护.

对于数据库的加密主要有以下几个层次[1]:

(1)在操作系统层加密.由于DBMS是在操作系统之上,操作系统是将数据库文件作为普通文件进行处理的,操作系统无法识别数据库文件的数据结构,也就无法合理地利用自身的加密功能对数据库库文件进行加密.因此,目前在操作系统层对数据库文件进行加密还很难实现.

(2)在DBMS内核中进行加密.该方法在对数据库文件进行物理存取之前来完成加密工作.这种加密方式的优点是功能强并且不会影响DBMS的功能,可以实现DBMS和加密功能之间的整合.其缺点:一是加密和解密运算均在服务器端进行,加重了数据库服务器的负担,二是由于加密是在DBMS内核中实现,必须数据库厂商提供技术支持并取得DBMS内核的相关资料,但实际上要做到这些并不容易.

(3)在DBMS外层实现加密.该方法是将在DBMS外层加上一个数据库加密系统,所有对数据库的访问先由这个系统进行处理.该方法的优点是不涉及DBMS内核,并且在数据传输时是以密文进行传输的.缺点是会影响数据库系统的功能和运行效率.

针对以上在各个层次对数据库进行加密的优缺点,笔者采用不涉及数据库系统本身,而只对记录内容进行加密的方法.

1 加密算法的选择

在当前信息安全领域用于数据加密的实用算法,按加密和解密是否使用同一密钥或解密密钥可由加密密钥计算得出,可分为至对称密钥算法(Symmetric Algorithm)和非对称密钥算法(Asymmetric Algorithm)或称公钥算法(Public-Key Algorithm).

1.1 对称密钥算法

对称密钥算法的特点是加密和解密使用同一密钥或者解密密钥可由加密密钥经过计算得到.对称密钥算法根据加密方式不同分为序列算法和分组算法两类.序列算法单独加密每个位,它是通过将密钥序列中每个位与每个明文位相加实现的,而分组算法则是每次使用相同的密钥加密整个明文位分组来实现.现在典型的对称密钥算法均是采用分组算法,如IDEA、DES、3DES、AES、RC5、RC6 等.

1.2 非对称密钥算法

非对称密钥算法也称公钥算法,其特点是用作加密的密钥与用作解密的密钥不同,而且解密密钥也不能通过加密密钥计算得到.在典型的公开密钥算法RSA中,数据即可以用公钥加密用私钥进行解密,也可以用私钥加密用公钥进行解密.

考虑到数据库中数据量较大,数据访问也很频繁,综合考虑各种加密方法的安全性、加解密效率等多种因素,数据库内容加密宜采用对称密钥算法进行加密,在本文中采用AES算法.

2 AES算法及实现

AES[2](Advanced Encryption Standard,高级加密标准)是由美国国家标准和技术研究院(NIST)从1997年1月开始向全世界公开征集的用于代替DES(Data Encryption Standard,数据加密标准)的数据加密标准,并在2002年5月正式成为新的数据加密标准.它选择了由比利时科学家Joan Daemen和Vincent Rijmen提出的Rijndael算法作为加密算法.该算法是一种数据块长度和密钥长度均可进行迭代分组的分组加密算法,密钥长度和数据分组长度可分别为128、192、256位,而标准的AES密钥长度为128位.AES相对于DES有很强的加密强度,采用128位密钥的AES是采用56位密钥的DES的1021倍,且当前尚未出现针对AES的有效破解方法.

2.1 AES的加解密过程

AES的加密流程主要由轮密钥加(Addroundkey)、字 节 置 换 (ByteSub)、行 移 动(ShiftRow)、列混合(MixColumn)这四个基本的操作完成,其步骤是:首先将明文映射到一个4×4字节的状态矩阵(State),并进行初始密钥加运算;然后进行 Nr次轮运算,各轮都将进行ByteSub、ShiftRow、MixColumn、Addroundkey 这 4个基本操作,但在第Nr轮不做MixColumn;最后将State中的明文映射为密文 .解密过程与加密过程类似,主要区别有:使用密钥序列的顺序不同、置换盒不同、行移动方向不同、列混合系数不同,以及每轮变换中函数的使用顺序不同.加密与解密流程如图1所示.

2.2 AES算法的基本操作

AES算法主要由轮密钥加(Addroundkey)、字节置换(ByteSub)、行移动(ShiftRow)、列混合(MixColumn)四个基本的操作组成.

(1)字节置换(ByteSub).字节置换是一种非线形变换,该置换包含一个作用在状态字节上的S-盒.S-盒置换是一个双向映射,即256个可能的输入元素都与一个输出元素一一对应.这个属性允许我们唯一地逆转S-盒,这也是解密操作所需要的.在软件实现中,S-盒通常使用一个拥有固定项的、256位乘8位的查找表来实现.

(2)行移动(ShiftRow).行移变换循环往复地将状态矩阵的每一行的字节按如下方式循环移动:第二行向右移动三个字节,将第三行向右移动两个字节,将第四行向右移动一个字节.在行移变换中,状态矩阵的第一行保持不变.行移动和列混合相互影响,经过多轮变换后密码信息将非常的混乱,增加了AES的扩散性.

(3)列混合(MixColumn).该操作是一个线性变换,它混淆了状态矩阵的第一列.由于每个输入字节都影响了四个输出字节,列混合操作是AES中的主要扩散元素,它与行移动操作组合使得三轮以后,状态矩阵的每个字节都依赖于所有16个明文字节成为可能.

(4)轮密钥加(Addroundkey).该操作是通过输入16字节的当前状态矩阵和长度为128位的子密钥,生成一个密钥调度表.通过密钥调度表中的前4行对状态矩阵进行按字节的XOR(异或)操作.

2.3 加解密实现算法

根据上述的加解密流程,下面采用伪Object Pascal语言对算法进行描述.

3 加密后对数据访问的影响

数据库管理系统要完成对数据库文件的管理和使用,必须要能够正确识别部分数据,因此,在对数据库加密内容进行加密时,不能对所有数据进行加密.不能进行加密的字段主要是以下三类:(1)索引字段;(2)表与表之间用于进行关联的字段;(3)具有主键约束和外键约束的字段.

数据库中的数据进行加密以后,数据库管理系统的一些功能会受到限制甚至根本无法使用.受影响的功能主要有:(1)不能实现数据约束.(2)Select语句中的排序、统计类语句将不起作用.(3)数据库管理系统中提供的系统函数无法对数据进行加密处理.(4)一些数据库管理工具中的开发功能将受到限制.

为了尽量减小数据加密后对数据管理的影响,针对上述受影响的功能,可采用一些措施进行处理:

(1)解决不能实现数据约束的方法.增加一张数据表将已加密的字段的数据类型存放在该表中,再将这些已经加密字段的类型都改成变长的字符类型,在给查询时再进行恢复.

(2)解决SQL语句、系统函数、开发功能受限的方法.在数据操作前先建立一张局部临时表,然后将加密后的数据进行解密后存储到该临时表中.以后对数据的操作都在这张临时表中进行,操作完成后应将临时表及时删除,以免造成数据泄密.

4 结束语

数据库安全、操作系统安全、网络安全共同组成了当今信息安全的核心.数据库内容加密能够有效地保证数据的安全,即使非法用户窃取了数据,也难以得到所需的信息.另外,数据库内容加密后数据库管理员也无法看到明文,从而大大提高了数据的安全性.本文在分析数据库加密的层次、加密算法的基础上提出了采用AES对数据库内容进行加密的方法来提高数据库的安全,并对数据库内容加密后对数据库管理的影响进行了分析并给出了解决方法.

[1] 赵晓峰.几种数据库加密方法的研究与比较[J].计算机技术与发展,2007(2):219-222.

[2] Christof Paar,Jan Pelzl.深入浅出密码学:常用加密技术原理与应用[M].北京:清华大学出版社,2012.

[3] 魏嘉银.多功能AES加密与解密软件的设计与实现[J].计算机与数字工程,2011(6):93-97.

[4] 陈铁英,陈华,刘瑜.基于三层次的数据库加密应用系统[J].华中科技大学学报(自然科学版),2005(7):41-43,46.

[5] 弟宇鸣,陈荣桦,左广霞.基于AES算法的加密模块设计[J]. 电子设计工程,2013(2):53-55.

猜你喜欢
明文字节解密
No.8 字节跳动将推出独立出口电商APP
炫词解密
解密“一包三改”
炫词解密
No.10 “字节跳动手机”要来了?
奇怪的处罚
简谈MC7字节码
奇怪的处罚
四部委明文反对垃圾焚烧低价竞争
解密“大调解”