数据库加密系统中关键技术的实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:mahw9866
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:数据库系统的信息安全性已成为目前迫切需要解决的课题。针对此问题,建立密文数据库是实现数据安全的有效方法。文章对数据库加密的原理,算法和密钥等关键技术进行了研究和设计,探讨了数据密钥的动态生成技术和密钥的管理的实现方法。
  关键词:数据库加密;密钥管理;MD5算法
  中图分类号:TP309文献标识码:A 文章编号:1009-3044(2007)03-10594-02
  随着计算机网络的发展,数据的安全保密工作越来越重要。数据库管理系统本身的安全措施已经相当完备,但是仍然无法完全解决数据安全的需求。数据安全不仅要抵抗来自网络黑客的安全威胁,还要防止来自数据库管理员的安全威胁,若要满足业务数据的安全需要,必须在现有数据库管理系统之外,建立一套符合业务数据安全需要的新的安全体系,在新的安全体系中对数据库中的敏感数据进行加密处理,以阻断对数据库中敏感数据的安全威胁。
  
  1 数据库加密系统概述
  
  1.1 数据库加密模型
  基于传统的数据库安全模型,加密数据库安全模型采用将加密系统做成DBMS的一个外层工具的形式,它是由基于角色的存取控制模型发展而来。它利用角色实现传统数据库安全模型中的存取控制及用户与数据的分类功能,应用数据加密方式堵塞隐蔽通道。参照加密数据库安全模型,比较实际的做法是将数据库加密系统做成的一个外层工具,根据加密要求自动完成对数据库数据的加/解密处理。
  1.2 数据库加密技术
  数据库数据的存储方式与传统文件不同,而对于数据的使用也不同,不可能以整个数据库文件为单位进行加密,对数据库数据进行操作时,不可能从头到尾的一一进行加/解密,这就要求有完整的数据库字段加密解密机制。
  一个加密系统包含明文集合、密文集合、密钥集合和算法,其中密钥和算法构成了密码系统的基本单元。算法是一些公式、法则或程序,规定明文与密文之间的变换方法,密钥可以看作算法中的参数。数据库加密系统要求将明文数据加密成密文数据,数据库中存储密文数据,查询时将密文数据取出解密得到明文信息。
  同时由于数据库中的数据是共享的,有权限的用户随时需要知道密钥来查询、修改、删除和插入数据,这样就要随时对数据库中数据进行加解密处理。因此,数据库加密系统宜采用公开密钥的加密方法。密钥设计的基本思想是伪装信息,只能由持有密钥的人才能明白其原来含义,而其它人员理解不了信息含义。密钥设计的核心是所采用的密钥体制,基本出发点是要有足够的保密强度,能够承受各种级别的攻击;其次是运行效率,方便密钥管理,适应性好等。
  
  2 数据密钥的字段加密技术
  
  2.1 加密粒度选择
  传统的数据加密以报文为单位,加/解密都是从头至尾顺序进行。而在數据库加密有系统中,由于数据库具有的文件,记录,字段多层次的概念,如果以文件为单位顺序进行加密,将会导致加密和解密时间过长,而且对加密数据进行操作时极为不便;从记录级别加密时,每个记录的特征信息相同,从而不易保证每个记录加密的密钥不相同,密钥的重复使用会降低加密系统的可靠性;只有以记录的字段数据为单位进行加/解密,才能适应数据库操作,同时进行有效的密钥管理并完成“一次一密”的密码操作。
  然而对记录的所有字段进行加密存储是不现实的,造成加密后的数据文件过大,而且对不必要的信息进行加密,对数据库的查询等操作带来极大的不便,会极大的影响数据库操作的效率。而选择只对关键信息所在的字段加密,才能适应数据加密后的变化,而且将对数据库性能的影响降到最低,从而建立起安全、有效的加密机制。
  2.2 加密算法的选择
  加密算法是数据加密的核心,数据库加密系统的加密算法要满足如下要求:一是数据库加密以后,数据量不应明显增加;二是某一数据加密后,其数据长度不变;三是加解密速度要足够快,数据操作响应时间应该让用户能够接受。数据库数据加密粒度选择基于字段的加密方式,各个字段不同记录的数据长度基本上是一致的,而分组加密算法的加密方式是对明文按固定长度进行分组,对各组数据用不同的密钥加/解密,结合加密算法的特点分析,由此数据库加密算法适合采用分组加密算法。
  R算法是一种在RC5、 RC6的基础上实现一种适合数据库加密的新算法,RC5 和RC6 算法由RSA公司提供,是目前最成熟的分组加密算法之一,他们的特点是相比DES算法分组长度和密钥长度都是可变的。
  R 算法继承了 RC5基本的密钥扩展算法,主要通过基于数据而变化的循环移位运算来实现数据的扩散和混淆,并吸取了RC6的循环移位的精髓,即RC6的循环移位位数除一部分是不确定数外,还有一部分是固定数,固定位数的循环移位使得对此算法的线性攻击和微分攻击变得复杂。增加了乘法运算,加快了每轮的扩散速度,使得用更少的轮数就能实现更高的安全性和抵御更强的攻击。为抵抗RC5由于轮之间相对较慢的雪崩效应而面对的一些攻击,使用 RC6的二次 F函数实现字内更快的混淆,以便实现循环移位位数的快速改变。由于R算法综合了 RC5 、RC6优点并保持小的分组,使之更适合用于对数据库加密。安全性比RC5 、DES高,密钥长度可变,能抵抗密钥穷举攻击。加解密速度快,可满足数据加密的要求。
  2.3 生成数据密钥
  对不同记录的相同字段采用不同的密钥加密,密钥的数量将是非常庞大的。密钥出于安全和效率上的考虑是不能全部存储在介质上的,只能在需要的时候动态生成。数据库中的数据需长期存放,要保证加/解密的一致性,对数据项加解密所用的密钥应完全一样,因此,密钥不可能随机产生,而只能根据某种固定的函数关系生成。而且,生成密钥的函数应该能区分要加密和解密的字段,从而正确的产生密钥。在存储时,自动地根据字段特征为字段生成加密密钥,用它将字段明文加密后存入数据库中,检索时,又能自动地生成解密密钥进行解密运算,使用户能得到明文。
  在关系型数据库系统中,标识字段的特征主要有:它所在的表,所在的记录和字段属性。那么数据项的密钥可如公式(1)产生:
  Kij=f (TK,Ri,Cj)(1)
  在(1)式中,f是数据项密钥生成函数,TK为表密钥,Ri为加密字段行标志,Cj为加密字段列标志。
  对于数据项密钥生成函数f,一种有效 的实现方式是运用前面所介绍的R算法,以表密钥TK为密钥对Ri和Cj进行加密处理,得到密钥Ki和Kj,然后将Ki和Kj再进行逻辑运算从而得到数据项的密钥。
  
  3 密钥管理机制
  
  密钥的管理是数据库加密系统实现的关键问题,直接关系着数据库加密系统的性能和安全。为保证密钥的安全,可以采取密钥分级管理的方法。数据库里的密钥分三级:主密钥、表密钥、数据密钥,其中主密钥是数据库中最高级的密钥,每个加密数据库有一个主密钥,用来加密表密钥,表密钥是每个加密表的密钥,它可以由用户设置或在表创建时随机生成,表密钥是用来生成子密钥的,表密钥经过主密钥加密后放在加密字典中;数据密钥由表密钥通过密钥算法生成,它是用来加密数据的真实密钥,数据密钥不用物理存储。
  3.1 中间单向加密算法——MD5算法
  MD5算法是一种信息-摘要算法,MD5是采用单向加密的加密算法,对于MD5而言,有两个特性是很重要的,第一是任意两段明文数据,加密以后的密文不能是相同的;第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。前者的意思是不可能有任意两段明文加密以后得到相同的密文,后者的意思是如果我们加密特定的数据,得到的密文一定是相同的。MD5的作用是对一段信息生成信息摘要,用于验证文件的有效性(是否有丢失或损坏的数据),对用户密码的加密,在哈希函数中计算散列值。MD5将任意长度的"字节串"变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,在软件的加密保护中,很多软件采用MD5保护,但是由于MD5算法为不可逆算法,所以所有的软件都是使用MD5算法作为一个加密的中间步骤。
  3.2 主密钥的存取保护
  主密钥是打开加密数据库的最关键的钥匙,主密钥的存放是影响加密数据安全性最重要的问题,同时主密钥的更换也是一个棘手的问题,因为要更换主密钥就必须先对所有的密文数据进行解密处理,然后再对所有解密的数据进行加密处理,由于加密或解密的代价相当大,加密解密的工作量很大,用的时间也就相当长,对用户来说是不可以接受的。鉴于这两个原因,对于主密钥实行的是进行有效的保护而不是随时的更换的策略。
  注意到每个数据库用户都可以有一个个人密钥,所以可以考虑用数据库用户的用户个人密钥来保护授权的主密钥,授权用户的主密钥在用自己的用户个人密钥加密后以密文形式存在数据库中。主密钥加密存储时,在确认数据库用户登录成功后,把数据库用户成功登录的个人密钥采用一种简单不需要密钥的MD5加密算法加密得到加密后的MD5加密值,再用这个MD5加密值作为密钥调用AES算法对主密钥进行再次加密并存储在数据库中。主密钥解密时,同样确认登录成功后,并取得登录个人密钥的加密MD5值,不同的是对存储在数据库表中的主密钥采用AES算法解密。
  在这里采用加密的MD5值对个人密钥进行加密,主要是考虑到一般用户的个人登录口令比较简单,直接用其作为密钥对主密钥进行加密,这样对于主密钥的保护强度就不够,而通过MD5加密后的加密值是一个32位的十六进制数,就可以提供足够的强度。这样就解决了主密钥保存和更换的难题,而我们只需要考虑个人密钥的保护。
  3.3 用户个人密钥存储与更换
  采用个人密钥来保护主密钥,这样对于个人密钥的保护也是很重要的,为了防止字典攻击,用户个人密钥应有较长的长度,我们将用户个人密钥分成两部分,前面的大多数位和用户标识存放到智能卡中,后面的几位则作为口令需要用户记住,访问数据库时,用户通过口令来获取数据库的登录权限,并将智能卡插入读卡机中,系统将卡中的密钥信息读出,并将其和口令串联在一起形成用户个人密钥。这样对于个人密钥的保护不仅仅依靠个人口令,还取决于智能卡,而且个人口令的修改是很方便的,在更换个人口令时,只需要对存储在数据字典中的主密钥的加密值进行解密,然后用新的口令合成新的个人密钥加密主密钥并存储。
  提供了个人密钥可靠的存储和保护的方法后,加密数据库的密钥的安全性就得到了保障,到此就得到了一个完整的密钥的管理机制。
  
  4 结语
  
  本文讨论了数据库加密的基本關键技术,着眼于加密技术的方法实现,选择只对关键字段加密极大的提高了数据库常规操作的速度,运用性能可靠的分组加密算法R算法实现了数据密钥的动态生成机制,在注重建立安全高效的密钥管理机制的基础上,通过引用一种中间加密算法MD5算法实行主密钥的多级保护,以达到更好的安全效果。但由于数据库的特殊性,在如何协调数据加密和数据库操作方面还存在着问题,数据加密机制是值得继续深入研究的。
  参考文献:
  [1]朱鲁华,陈荣良.数据库加密系统的设计与实现[J].计算机工程,2002:(8):61-63.
  [2]张敏, 徐震, 冯登国. 数据库安全[M]. 北京:科学出版社,2005.
  [3]冯朝胜,袁丁.密钥管理在数据库加密系统中的应用研究[J].四川大学学报(自然科学版),2005 :42(6):1118-1122.
  [4]糜玉林,朱爱红,李连.一个用于数据库加密分组加密算法的研究与实现[J].计算机工程 2005:(8):131-133.
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
20世纪80年代以来,西方发达国家的商业银行普遍认识到防范和控制风险的重要性,在此背景下,诞生了《统一资本计量与资本标准的国际协议》即《巴塞尔资本协议》。随后,巴塞尔委
针对维吾尔语事件类时间短语没有明显时间词特征词而引起的识别困难和边界定位不准确等问题,提出了一种统计结合词干提取的针对黏着性语言的事件类时间短语的识别方法.根据维
2009年3月31日,中国证监会发布了《首次公开发行股票并在创业板上市管理暂行办法》,2009年10月23日,创业板市场正式开板,首批上市公司于2009年10月30日挂牌上市交易,这标志着
目的了解农村饮用水卫生状况,为相关部门制定经济发展策略提供科学依据。方法由调查人员到目标村屯农户抽取水样,并对农户进行访谈,填写统一的农村饮用水调查表,对采集的水样
东风不来,三月的柳絮不飞,而妇人的小店早已热闹.rn跫音不绝,天微亮.妇人的店里坐满了人,有的夹着公文包,头发梳得一丝不苟;有的拿着安全帽,满脸褶子.他们都挤在这间只有三张
中共十八届三中全会通过的《中共共中央关于全面深化改革若干重大问题的决定》标志着我国的改革进入了深水区和关键阶段。金融体制改革作为经济改革非常重要的一部分,对于经济
股指期货,全称为“股票指数期货”,其标的物为股价指数,是买卖双方遵照事先的约定,约定在未来某一个特定的时间依据双方事先约定的股价对股票指数进行交易的一种标准化协议。
期刊
期刊