一种基于保留格式的数据库透明加密方法与流程

文档序号:11250916阅读:503来源:国知局
本发明涉及数据库安全加密领域,具体涉及保留格式的数据库透明加密方法。
背景技术
::随着互联网的发展,信息安全问题日趋严峻,数据库作为信息的主要存储方式也已成为需要重点保护的对象。然而传统的防火墙以及部分安全保护软件已经不足以对抗数据库入侵窃取问题。目前经常出现各种黑客入侵网络事件,并毫不费力地盗取服务器中数据库,极大地威胁着用户信息的安全性。因此需要利用加密技术来对数据库进行保护,使其以密文的形式进行存储。入侵者即使数据库中数据被盗取,也能够保证数据信息不会存在泄漏问题,从而确保了数据的安全性,极大地避免了因机密、隐私数据的公开对其所有者造成的损失[李刚彪.数据库加密技术的研究与实现[d].太原理工大学,2010.]。20世纪八十年代初,美国开始对数据库加密进行研究,ibm公司的c.wood,e.b.ferriandea,r.c.summers发表《databasesecurity:requirement,policies,andmodels》,以及georgei,davidalw,johnbk在1981年发表《adatabaseencryptionsystemwithsubkey》[david.gi,wells.dl,kam.jb.adatabaseeneryptionsystemwithsubkeys[j].acmtransactiondatabasesystem,1981,6(2):31-37],从此开始有学者对数据库加密技术进行研究。与此同时d.e.denning在1982年发表了《cyrptographyanddatasecurity》一文,并提出了一些对数据库加密的见解。此后,一些主流数据库管理软件,如oracle,开始添加加密功能来对数据进行保护。对数据库加密的研究中,起初采用了变密钥字段的方法来实现[davidagi,wellsdl,kamjb.adatabaseencryptionsystemwithsubkeys[j].acmtransactionsondatabasesystems(tods),1981,6(2):312-328.],随后有人提出耳机密钥管理方案,并提出了一些密钥管理协议,并用子密钥来对数据库进行加密[davidagi,wellsdl,kamjb.databaseencryptionanddecryptioncircuitandmethodusingsubkeys:u.s.patent4,375,579[p].1983-3-1.],然而这些方法对数据库进行加密极大地影响软件的运行速度。随后有人提出了采用同余定理对数据库加密的思路[],直接对其中的密文进行四则运算,从而来提高其计算速度。[郝立柱,李安平.财务软件中的数据安全策略[j].黑龙江大学学报(自然科学版),2007,9(3):55-58]。随后有学者引入了秘密同态理论,直接对密文做加密运算,并被domingo等人做出了适当的改进[songd.x.wagnerd.perringa.practical.techniquesforsearchesonencrypteddata[j].proc.ofieeesecurityandprivacysymposium,2000,7(6):22-26]。2013年deshmukh等人针对数据库的安全性,突出一种数据透明加密的方法,保证在磁盘等硬件中的数据以密文的形式进行存储,并使其在使用时以明文的形式展现出来[deshmukhd,pashaa,qureshid.transparentdataencryption--solutionforsecurityofdatabasecontents[j].arxivpreprintarxiv:1303.0418,2013.]。随后shmueli等人对当前的数据库加密方法进行评估,并支持某些高安全性的加密方法具有运行性能差的缺点[shmuelie,vaisenbergr,gudese,etal.implementingadatabaseencryptionsolution,designandimplementationissues[j].computers&security,2014,44:33-50.]。商业软件中有safenetprotectdb、oracle、sqlserver分别在在sql语句、存储层、系统层来实现对数据的加密[safenetinc.databaseencryption;2009.;microsoftcorporation.databaseencryptioninsqlserver2008enterpriseedition;2008.]。elovici等人提出一种保留格式的数据库加密方法[eloviciy,waisenbergr,shmuelie.structurepreservingdatabaseencryptionmethodandsystem:u.s.patent8,639,947[p].2014-1-28.],freeman等人则提出一种在数据库字段层面上来对其进行加密的方法[freemanwc,homrv.fieldleveldatabaseencryptionusingatransientkey:u.s.patent9,251,355[p].2016-2-2.],但是该方法实现过于复杂,使用不利于存储以及移植性差的缺点。同样的,目前部分大型数据库管理系统(dbms)软件,虽然已经提供了一些简单的数据加密功能,但其加密性能很有限,且均采用dbms各自的加密方法来对数据进行加密保护,使得这些数据在不同的dbms之间难以相互移植。技术实现要素:本发明采用的方法是在dbms外部设计一个加密系统,承担这对数据进行加密以及解密的操作,并以相同数据类型的密文对数据进行存储,从而在保证了数据的安全性的同时还使得数据库具有良好的移植性。同时,还设计一套完整的自动加解密方案,使得在使用过程具有良好的用户体验,避免用户对数据加解密流程的参与,使其拥有与明文数据库相同的使用方法。因此该方法具有良好的移植性、运算速度块、对用户使用的透明性等特点。本发明的目的通过以下的技术方案实现:一种基于保留格式的数据库透明加密方法,该项方案需实现的主要技术包括:不同类型数据的保留格式加解密方法以及自动加解密实现流程的实现避免用户的参与。具体实现方案分别如下:1、对数据库中各种类型数据实现保留格式加密,并将数据转化为相同数据类型的密文存储在数据库中,即:c=preencrypt(k,m]c=prednciypt(k,m)其中,preencrypt()表示保留格式加密函数,predncrypt()表示保留格式解密函数,k为密钥,m为明文,c为密文,且c与m为相同数据类型。在数据库中需要实现的数据加密类型包括如下:a.单字符类型,即byte。b.整数类型,即int。c.短整型类型,即short。d.长整型类型,即long。e.浮点类型,即float。f.双浮点型,即double。g.字符串类型,即string。h.时间类型,即time。i.时间戳类型,即timestemp。j.日期类型,即date。利用这种保留格式加密方式,对原始数据库中明文进行加密,包括所有表名、字段名称以及每一数据项,再利用产生的密文数据来生成一个新的密文数据库。2、实现对用户使用的透明性,即保证拥有加密密钥的用户以与明文数据库相同的操作来访问数据库,自动实现对数据的加解密,避免用户参与。在实际应用中用户对数据库的访问包括,增删改查,下面分别对这四种访问操作实现透明加解密:(1)添加操作:利用保留格式加密的方式对用户需要添加的各字段数据进行加密,再将加密后的数据添加到数据库中。以insert语句为例:用户输入:insertintotablevalues(item1,item2,item3fromtable);实际执行:insertintopreencrypt(k,table)values(preencrypt(k,item1),preencrypt(k,item2),preencrypt(k,item3)).(2)删除操作:利用保留格式加密的方式对用户需要删除的各个字段数据进行加密,再从密文数据库中删除对应的数据项。以delete语句为例:用户输入:deletefromtablewhereitem=value;实际执行:deletefrompreencrypt(k,table)wherepreencrypt(k,item)=preencrypt(k,value);(3)修改操作:利用保留格式加密的方式对用户需要修改的各个字段、数据项及表名进行加密,再将加密后的数据写入密文数据库。以update语句为例用户输入:updatetablesetitem=value_newwhereitem=value_old;实际执行:updatepreencrypt(k,table)setpreencrypt(k,item)=preencrypt(k,value_new)wherepreencrypt(k,item)=preencrypt(k,value_old);(4)查询操作:将要查询的字段进行加密,并对密文来对数据库进行查询获取其密文数据,再对密文数据进行解密,并把解密后的数据反馈给用户。以select语句为例:用户输入:selectitem1,item2fromtable;实际执行:selectpreencrypt(k,item1),preencrypt(k,item2)frompreencrypt(k,table);对查询到的数据使用predecrypt()进行解密,并将明文信息反馈给用户。附图说明图1是本发明专利的基于保留格式的数据库透明加密方法流程图;图2是本发明专利中保留格式加密的框架流程图。具体实施方式下面对本
发明内容中的加密解密过程作进一步详细的介绍,但本发明的实施方式不限于此。数据库中所使用的基本数据类型为:单字符类型(char)、整数类型(int)、短整型类型(short)、长整型类型(long)、浮点类型(float)、双浮点型(double)、字符串类型(string)、时间类型(time)、时间戳类型(timestamp)、日期类型(date)。其总体框架如图2所示。这十种基本的数据类型中,根据其数据的特点,可以将部分数据类型合为一组使用相同的加解密方法,如下:1.“整数类型”、“短整型类型”、“长整型类型”使用相同的加解密方法,分别记为:integerencrypt/integerdecrypt;2.“浮点类型”、“双浮点类型”使用相同的加解密方法,分别记为:floatencrypt/floatdecrypt;3.“单字符类型”,加解密方法记为:characterencrypt/characterdecrypt;4.“字符串类型”,加解密方法记为:stringrencrypt/stringdecrypt;5.“时间类型”,加解密方法记为:timeencrypt/timedecrypt;6.“时间戳类型”,加解密方法记为:timestampencrypt/timestampdecrypt;7.“日期类型”,加解密方法记为:dateencrypt/datedecrypt;下面分别对上面这七组加解密方法做详细介绍。1.integerencrypt(k,num)/integerdecrypt(k,num)本方法中直接使用des或aes等对称加密算法来实现加密与解密,并将加解密后的数据转化为常用的十进制数据进行存储。2.floatencrypt/floatdecrypt(1)以整数的形式来读取浮点数据,由于在计算机中数据均以0和1的形式进行存储,因此可以直接将浮点数据转化为十进制的整型数据。(2)在整数域中利用1中方法实现加密,进而生成密文整型数据。(3)根据浮点数的表示方法,整型的密文数据转换为浮点数据。3.characterencrypt/characterdecrypt(1)将字符数据转化为整型数据,转化流程如下:a.记字符数据charn长度为n,确定每个字符的取值空间记为l。b.为字符空间l指定一种全序<,设ci,为charn中第i个字符,并随机选取字符空间ln,中一个元素作为基准值ref。c.根据全序关系来建立字符空间内元素与整数之间的双射,并进行编码,再将编码转化为十进制整型数据。(2)在整数域中利用1中方法实现加密,进而生成密文整型数据。(3)利用(1)中逆运算,即可产生相同数据类型的密文。4.stringrencrypt/stringdecrypt由于字符串这一数据类型在数据库中任意编码均可进行存储,因此可以直接使用传统的des或aes等对称加密方法来实现,并直接将生成的密文以字符串的形式存储进数据库。5.timeencrypt/timedecrypt(1)在数据库中time数据类型表示形式为:hh:mm:ss,可直接将时间转化为十进制数据的形式,计算公式如下:int=h×60×60+m×60+s(2)在整数域中利用1中方法实现加密,进而生成密文整型数据。(3)将整型密文数据转化为时间的形式,转化公式如下:s=int%60、m=(int-s)%60、h=(int-m×60-s)%(60×60)6.timestampencrypt/timestampdecrypt(1)在数据库中时间戳timestamp数据类型表示形式为:yyy-mm-ddhh:mm:ss,这个值是从1970开始直到目前为止,所经过的秒数,通过计算转化得来的,因此可以直接将其转化为整数型,以秒数来表示。(2)在整数域中利用1中方法实现加密,进而生成密文整型数据。(3)利用(1)中逆运算,即可产生相同表示形式的时间戳密文。7.dateencrypt/datedecrypt(1)在数据库中日期date数据类型表示形式为:yyy-mm-dd,将该值转化为整型数据,计算公式如下int=y×12×31+m×12+d×31(2)在整数域中利用1中方法实现加密,进而生成密文整型数据。(3)将整型密文数据转化为日期的形式,转化公式如下:d=int%31、m=(int-d)%12、y=(int-m×12-d)%(12×31)以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1