基于混合密码算法的数据库加密技术研究

2010-08-27 08:18吴兴惠周玉萍明秀君
关键词:加解密数据类型密文

吴兴惠,周玉萍,明秀君

(海南师范大学 信息科学技术学院,海南 海口 571158)

基于混合密码算法的数据库加密技术研究

吴兴惠,周玉萍,明秀君

(海南师范大学 信息科学技术学院,海南 海口 571158)

为了解决密钥管理和加解密引擎在数据库加密系统实现过程中的技术问题,讨论了密钥管理和加解密引擎在实现过程中的一些技术问题,提出了基于IDEA&RSA相结合的混合密码数据库系统加密方案,设计与实现了加密系统,并将其应用于高校科研管理系统,取得了较好的效果.

混合密码;加密算法;数据库加密

随着计算机技术和网络技术的发展,越来越多的业务系统将数据集中起来,利用功能强大的数据库系统来存储和管理业务数据、客户资料等重要的商业机密信息.目前对数据库保护的最有效方法是对敏感数据进行加密处理,将明文数据以密文方式保存,访问时再进行解密操作.这样即使能够通过非法途径得到数据库内的数据,没有相应的密钥也得不到明文形式.数据库加密之后的密文数据由用户用自己的用户密钥来进行访问,不同的用户只能访问自己权限以内的数据,这样就大大提高了数据库的安全性[1].

数据库加密的关键在于加密算法的选取以及加密系统的两大核心模块,即加解密引擎和密钥管理的研究.本文对以上关键技术进行了研究和设计,并将其方案应用于科研管理系统的加密,并对实现过程中遇到的难题提出了对应的处理方法.

1 加密算法

加密算法是数据加密的核心.本文通过分析比较对称密钥加密和非对称密钥加密算法的优缺点,选用了对称分组密码系统算法中的IDEA算法与非对称公钥密码算法中的RSA算法,主要是考虑到IDEA算法在加/解密过程中的高效性及易实现性与RSA算法在密钥管理方面的方便性.

1.1 IDEA算法原理

IDEA算法[2]在DES算法的基础上发展而来,是一个分组长度为64比特的分组密码算法,密钥长度为128比特,由8轮迭代操作实现.每个迭代都由3种函数:mod(216)加法、mod(216)乘法和逐位异或算法组成.整个算法包括子密钥产生、数据加密过程、解密过程3部分.该算法规定明文和密文块均为64比特,密钥长度为128比特,加解密相同,只是密钥各异.

1.2 RSA算法原理

RSA算法[3]是一种公开密钥的加密算法,它包含一个公钥和一个私钥,二者成对出现,加、解密必须要用对应的密钥才能完成.

1)选取两个保密且在同一数量级上并且都要有100到200位或更长的大素数p和q.

2)计算n=p×q,φ(n)=(p-1)(q-1),其中φ(n)是n的欧拉函数值.

3)选择一个整数e,满足1<e<φ(n)且φ(n)与e互素.

4)创建解密密钥d如下:

(e×d)modφ(n)=1

加密 c=memod n

解密 m=cdmod n

其中:e和n是加密密钥;m是要加密的密文;c为得到的密文;(e,n)为公钥;(d,n)构成私钥;素数p和q应该丢弃.

本文设计了基于IDEA&RSA相结合的数据库系统加密方案:利用IDEA算法来实现数据通信过程中的加、解密处理.而IDEA算法中的密钥则通过公开密钥密码体制RSA算法加密,然后再通过信道传送给对方.

2 密钥管理模块的设计与实现

密钥管理模块负责加密密钥的生成、分配、更新和存储,是数据库加密系统的核心部件,它的主要目的是增强密钥自身的安全性[4-5].

2.1 密钥转换表

密钥转换[6]是指合法用户在访问数据库中的某些数据时,将自己的用户密钥作为一个参数送入密钥管理系统,系统利用转换函数得到数据密钥,从而实现数据的加解密.

密文数据库的简化形式模型可描述如下:

数据库D={d1,d2,…,dn},d代表安全性要求相同且可用同一数据密钥加密的一类数据,其安全级别记为Ii,因为本文的加密粒度是字段级的,相应的数据密钥集KD={kd1,kd2,…,kdn},每类数据还对应一参数,称为多向锁,用集合 ML={ml1,ml2,…,mln}表示.加、解密算法为(E,D);这样密文数据库可表示为C={ci|ci=E(kdi,di),i=1,2,…,n}.用户集U={u1,u2,…,um}有m个用户,相应地用户密钥集KU={ku1,ku2,…,kum},ui可访问的数据是数据库D的一个子集Di.

每个用户ui有唯一的用户标志I,访问数据库时提供(kui,i).对矩阵表 T=t[1,2,…,m;1,2,…,n],并有一传统的加、解密算法为(E,D),T中的元素是

式中,1≤i≤m,1≤j≤m,T由数据库管理员实现:r是由本地数据库访问代理存储的一个秘密参数.当且仅当用户i能够访问数据类di时,T中对应的元素就是数据加密密钥kdi异或r之后用kui加密的结果.用户i提供(kui,i)和数据库请求q,系统根据q得到相应的密文(cj,ij).然后系统根据(i,j)查得表T得t[i,j],根据t[i,j]的定义可以判定该用户是否能够访问dj.如果能够访问,系统根据t[i,j]变换出数据加密密钥kd,解密密文(cj,ij)得到明文结果,把结果返回给用户.

2.2 密钥的生成及存储

二级密钥管理体制[7]是整个系统设置一个主密钥,它由系统随机产生,用它对二级密钥信息加密生成二级密钥(也称为工作密钥),再用工作密钥对数据加密.本文用密钥转换表的思想进行设计,同时采用二级密钥的密钥管理体制.数据库加密系统的密钥可以分成用户密钥和数据密钥.数据密钥分为主密钥和工作密钥两种.主密钥用来生成加解密要用到的工作密钥,而工作密钥才作为字段值的加密密钥.对于本方案来说,工作密钥是由主密钥动态生成的,不需要存储,对于用户密钥的存储,考虑用基于用户口令的加密算法(PBE)对密钥进行加密,然后以密文的形式存在于数据库中.主密钥采用RSA公/私钥算法,保证主密钥高度的安全性,加/解密速度并不需要很高;工作密钥采用IDEA算法,加密的信息量大,可满足响应时间短的要求.

2.3 密钥的更新

由于数据库中存储的是海量的数据,如果经常性的更换数据密钥将是一项繁重的任务.在本系统中,由于采用了二级密钥加密方法,数据密钥是被用户公钥加密存放,减少了根据密文分析出密钥的可能性.并且用户私钥是用用户口令加密的,如果用户更换了自己的口令,那么就要用户旧口令解密出用户密钥,再用新口令进行加密.用户口令的更换在一定程度上保证了用户密钥的抗破解强度,所以对于数据密钥的更换,可以数年进行一次,在应用上是可行的.

3 加/解密引擎的设计与实现

数据库加/解密引擎也是数据库加密系统的核心部分,主要由数据库连接模块和加解密处理模块构成.其结构图见图1.

数据库连接模块是加密系统与数据库通信的桥梁,采用JDBC技术实现Web服务器与后台数据库的连接.通过将用户请求转换为SQL语句与数据库交互,完成查询、添加、删除和修改等基本数据库操作.其代码片段如下所示:

//加载数据库的JDBC驱动程序

//定义JDBC的URL对象

//提供用户名和密码,获得数据库连接

加解密处理模块主要负责数据的加解密,它工作在后台,负责数据的加密和解密,加解密过程对于用户是透明的.采用的是IDEA对称加密算法,加解密模块除了对数据进行加解密外,还要负责数据的拆分和组装,以保持数据的完整性和一致性.

依据以上方案,对本作者之前开发的科研管理系统教师信息表中的家庭住址和电话进行加/解密处理,效果图见图2.

在实现过程中,要考虑加密后数据的存储问题.加密后的数据类型和待加密表中的数据类型很可能不一致,本文使用加/解密引擎在加密时动态生成与待加密表对应的密文表,用来保存加密后的密文数据.数据类型是设计加解密引擎时要考虑的一个关键问题.不同的数据库其包含的数据类型也是不一样的.MS SQL Server包含的数据类型有 21种,而Oracle的数据类型有16种之多[7].这么多的数据类型单独进行处理显然不太现实.但通过实验发现,几乎所有数据类型的数据都可以转化成字符串类型数据,这就意味着在加密之前都可先转换成字符串类型的数据,然后再进行加密.

确定了密文表的数据类型之后,就是确定密文表的字段长度了.在一定范围内的明文生成的密文长度是一定的,且加密后的密文长度比对应的明文长度要长很多,因此在有的数据库中预先设置的密文表字段类型很可能满足不了要求.如MS SQL ServerServer 2000中支持Varchar的上限为8 000个字符;Oracle9i中支持Varchar的上限为2 000个字符等等.建立密文表时,对于超过上限的字段,必须使用更长的数据类型,否则就会造成数据的溢出,导致加密的失败.因此在加密前,这些数据都要作为参数保存在管理数据库中,在建立密文表的过程中动态的读取这些参数以便建立能够正常使用的密文表.

4 结语

本文提出了基于IDEA&RSA混合算法的数据库系统加密方案,对加密系统中的密钥管理和加解密引擎模块进行了研究和实现,对在具体实现过程中遇到的一些关键难点问题,通过实践提出了对应的一些解决方案,并把该方案应用于本作者之前开发的科研管理系统中.经过实践,这些方案能够解决遇到的问题,使整个加密数据库系统能正常、高效地工作.

[1]李新.密文数据库系统的设计 [J].计算机工程与应用,2005,41(32):169-171

[2]陈睿,袁丁.密文数据库加脱密引擎关键技术研究[J].计算机工程与设计,2007,28(14):182-184.

[3]房国志,刘焕武.一种混合密码体制的数据库加密技术研究[J].哈尔滨理工大学学报,2008,13(5):33-35.

[4]冯朝胜,袁丁.数据库加密系统密钥管理模块的设计[J].电子科技大学学报,2007,36(5):830-833.

[5]王元珍,冯超.数据库加密系统的研究与实现[J].计算机工程与应用,2005,45(8):171-172.

[6]冯朝胜,袁丁.密钥管理在数据库加密系统中的应用研究[J].四川大学学报:自然科学版,2007,42(6):1118-1122.

[7]Stallings W.密码编码学与网络安全[M].北京:电子工业出版社,2005.

责任编辑:黄 澜

Research on the Database Encryption Technique Based on Bybrid Crypography

WU Xinghui,ZHOU Yuping,MING Xiujun(School of Information Science and Technology,Hainnan Normal University,Haikou 571158,China)

To overcome the technique probleMof key management and database encryption in the implementation process of database encryption system,some difficult technology of encrypt/decrypt engine in the implementation process is discussed,the hybrid cryptography encryption prograMis presented based on IDEA combined with RSA,and the encryption systeMis designed and realized.Satisfactory effect is obtained while the prograMis used in the university management systeMfor science research and development.

hybrid cryptography;encryption algorithm;Database encryption

TP 309

A

1674-4942(2010)02-0161-04

2010-03-20

海南省自然科学基金项目(808115);海南省教育厅项目(H j2009-96)

猜你喜欢
加解密数据类型密文
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
详谈Java中的基本数据类型与引用数据类型
如何理解数据结构中的抽象数据类型
PDF中隐私数据的保护方法
基于SeisBase模型的地震勘探成果数据管理系统设计
一种基于密文分析的密码识别技术*
电子取证中常见数据加解密理论与方法研究
基于FPGA的LFSR异步加解密系统
云存储中支持词频和用户喜好的密文模糊检索