安全数据存储系统的设计与实现_第1页
安全数据存储系统的设计与实现_第2页
安全数据存储系统的设计与实现_第3页
安全数据存储系统的设计与实现_第4页
安全数据存储系统的设计与实现_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安全数据存储系统的设计与实现安全数据存储系统的设计与实现/安全数据存储系统的设计与实现毕业论文(设计)论文(设计)题目:安全数据存储系统的设计与实现姓名学号学院软件学院专业软件工程年级2010级指导教师2011年5月22日山东大学毕业设计(论文)成绩评定表学院:软件学院专业:软件工程年级:2010级学号姓名设计(论文)成绩设计(论文)题目安全数据存储系统的设计与实现指导教师评语评定成绩:签名:年月日评阅人评语评定成绩:签名:年月日答辩小组评语答辩成绩:组长签名:年月日注:设计(论文)成绩=指导教师评定成绩(30%)+评阅人评定成绩(30%)+答辩成绩(40%)目录TOC\o"1-3"\h\u摘要 4第一章绪论 61.1研究背景 61.2数据安全保护现状 61.3数据安全和信息安全发展趋势 71.4目的和意义 8第二章数据安全保护的主要应用技术 102.1加密算法 102.1.1对称加密 102.1.2非对称加密 112.2带关键词搜索的公钥加密算法(PEKS) 132.3基于双线性对的PEKS方案 132.4PBC库 14第三章数据安全存储系统设计 153.1系统设计总体要求 153.2系统设计总体目标 153.2.1数据存储功能 153.2.2数据的关键词 153.2.3系统初始化 163.2.4基于PEKS的加密设计 163.2.5数据的检索 173.3系统整体设计模块 18第四章数据安全存储系统设计 194.1系统初始化 194.1.1结构体定义 194.1.2PEKS系统初始化 194.1.3RSA加密系统初始化 214.2数据存储的实现 224.2.1数据存储界面 224.2.2数据检索流程实现 224.2.3PEKS系统实现 234.3数据检索的实现 254.3.1数据检索界面 254.3.2数据检索流程实现 254.3.3数据检索中的PEKS实现 26第四章系统测试 28第五章结束语 29致谢 30参考文献 31附录1英文文献 32附录2中文译文 36摘要科学技术的发展和时代进步,从蒸汽机的发明开始,近代工业的突飞猛进,新兴产业的遍地开花都展现出蓬勃的生机,尤其是近三十年间,电子信息技术产业的发展更是展现了其实力和前景。纵观当今社会,信息的存储逐渐取代了传统的纸质形式,转而大多是以电子形式进行的。因为s电子存储介质容量大体积小,快速便捷,不易受损的性质成为了存储界的宠儿,然而衍生出的安全问题也同样值得关注。电子存储介质一旦受损,那么信息的安全何以保障,在信息化的当今时代,一旦信息泄露引发的问题可能足以致命。在这种形式下,基于数据的安全存储系统的设计与研究就显得极其必要。随着互联网的高速发展,众多企业和个人己经把大量数据交给第三方服务器存储,如何保证私有数据的机密性和隐私成为急需解决的问题。加密技术是保护数据机密性和隐私的一种较为有效的手段,然而对加密后的数据进行检索却是一项非常困难的工作。特别是在非可信环境的情况下,如何对加密数据进行高效地查询引起了人们普遍的关注。因此,可搜索加密成为了近几年的研究热点之一。可搜索加密分为带关键词检索的对称加密和带关键词检索的公钥加密。带关键词检索的对称加密有着简单、高效的优点,但无法实现对第三方数据的秘密检索。现有的带关键词检索公钥加密虽然可以实现对第三方数据的秘密检索,但效率不高。本文主要研究可搜索加密技术,针对现有的带关键词检索公钥加密方案中大量对运算需要消耗较多时间、效率不高等问题,提出了一种高效的带关键词检索的公钥加密方案。该方案既具备带关键词检索的对称加密简单、高效的优点关键词:可搜索加密;公钥加密;带关键词检索的公钥加密ABSTRACTWiththerapiddevelopmentofComputerScience,electronicdataStorageisbecomingmorepopular.MostofdatawasstoredasElectronicdocuments.ItarouseswideconcernofhowtoprovedataSecurity.Intheinformationsystems,ifstorageswereoutofcontrol,allthesensitiveinformationandimportantdatawillbestolen,whichResultinheavylosses.Therefore,toefficientlysecurethedata,it’sNecessarytoresearchdatasecuritysystembasedonencryption.Withtherapiddevelopmentofinternet,anumberofcompaniesandindividualshavestoreddataonathirdPartyserver.HowtoensuretheconfidentialityandPrivacyofPrivatedatahasbecomeanurgentProblem.EncryptionisaneffectivemeansofProtectingtheconfidentialityandPrivacyofdata,butretrievalontheencrypteddataisaverydifficulttask.Particularlyduetonon-trustedenvironment,howtosearchonencrypteddataefficientlycausedwidespreadconcern.Thus,searchableencryptionhasbecomeahottopicinrecentyears.SearchableencryptioncanbedividedintosymmetricencryptionwithkeywordsearchandPublickeyEncryptionwithKeywordSearch(PEKS).Symmetricencryptionwithkeywordsearchissimpleandhashighefficiency,butcannotrealizethePrivatesearchforthird-Partydata.ThePublickeyEncryptionwithKeywordSearchcanrealizethePrivatesearchforthird-Partydata,butisinefficient.ThisPaperMainlystudiessearchableencryption.SincegreatcomputationofpairingsinPEKSschemesarestilltimeconsumingandinefficient,thisPaperproposesamoreefficientPEKSscheme.ThenewPEKSschemenotonlyretainstheadvantagesofsymmetricencryptionwithkeywordsearchsuchassimplexesandhighefficiency,butalsocanrealizetheprivatesearchforthird一Partydata.Keywords:Searchableencryption,Publickeyencryption;PublickeyEncryptionwithKeywordSearch(PEKS)第一章绪论1.1研究背景随着时代的进步,我们已经进入了信息化社会,所以在这个时代信息是一切的基础,掌握信息才能掌握这个时代的脉搏,才能在这个信息时代取得自己的一片天。正是因为信息时代的到来,所以信息安全尤其显得重要。数据安全是信息安全中尤为重要的一环,也是具有决定意义的一环,对于信息安全的研究也是为了我们自身生活环境,国家发展的一项贡献。作为老百姓来说,信息安全也不可小视。举个例子来说,当购买了一套住房后,你的个人信息有可能会被无良商人泄露,从而一些建筑公司会主动打电话来询问户主是否需要装修等。这就是一种信息未得到安全保证的结果。现实生活中,计算机信息安全,网络信息安全都与我们自身息息相关。对于公司业务来说,如何保障大规模的数据安全更是一件刻不容缓的事。存储介质随着办公自动化的发展变得越来越大,如果不伴以安全辅助,那么一旦发生泄漏,损失难以估计即使在有防火墙,隔离装置等网络安全设备在阻止着基于网络的安全攻击,但是数据在存储中存在的漏洞和安全隐患却有可能在不经意间导致大规模的信息安全危害事故。从网上的调查数据可知,现如今大部分的信息泄露主要是内部人员所为,也就是说外来黑客的攻击只占小部分,大部分的信息泄露都是由于数据存储的管理制度不完善,内部人员随意窃取导致。在问题如此严重的当下,对于研发一个数据加密存储系统显得十分有必要。必须要保证在各种存储介质上的数据安全,以与在介质出现失控情况下的数据安全问题在大多数重要业务部门的敏感数据的应用热点下,数据安全系统应当构建在现有的计算机,软件网络设施之上,并融合在各个应用中,形成高效便利的方式和系统。作为必要的基础环节,使得信息系统的运作更为安全和完善。1.2数据安全保护现状1.明文存储即使在强调信息安全的当今社会,也依然有单位或者个人对信息安全意识的缺乏,又或者对信息安全的不重视,他们将重要信息直接以明文的形式存储在介质中,包括移动硬盘或者计算机。然而一旦这些介质受到攻击,,明文形式保存的信息就会遭到泄露,那么所带来的后果将是十分严重的,轻则需要重新录入,重则面临巨大损失。2.适用面狭窄在我完成这篇论文之前,我对加密这一领域也不甚了解,第一可能是我学艺不精,第二加密系统对个人用户似乎也没有很多的优化,一些优良的加密系统在大型设备上用的很广泛,而对个人用户来说操作不便,成本太高可能也是造成这个方面的主要原因。3.网络防护和加密隐藏现有的加密系统的调查和分析可知,一些加密系统似乎对网络这一块做得工作甚少,而且似乎也不愿意在自动隐藏上下工夫。这导致了一个重要问题,就是在一些网络系统中,用户信息很可能被直接在网络中获取明文信息,导致信息泄露。而自动隐藏功能更是应该被广泛应用,当计算机失控时,经过加密自动隐藏的数据不能显现时,这样才会为数据不被泄露提供有力的保障4.加密等级过低加密技术的发展必然导致反加密技术的进步,一些加密系统的加密强度已经不能满足现如今对加密系统的强度要求,效率和有效性应当逐步提升以满足用户的需求1.3数据安全和信息安全发展趋势安全这个词不存在绝对性,任何一个系统都无法保证绝对的安全性。我们反复制定数据安全的需求和标准,正是由于这个原因,信息技术的提升,网络的日益完善与发达,都使得安全这个词的标准一再拔高,一再需要重新界定,一劳永逸解决这个问题显得多么的不切实际。所以要实现对数据的持续安全,就必须在这个信息高速发展的时代持续的关注和不断的解决。从整体来看,数据安全的趋势形成了如下四个方面数据安全的重要性日渐增强。数据安全作为信息安全的核心组成部分,在信息安全中起着至关重要的作用。在当今这个时代,信息安全所涉与的领域包括国防,国民经济建设,企业发展,个人事业,这些大都与我们的生活发展息息相关,因此,信息安全显得尤为重要数据安全概念的发展,安全手段的不断强化。安全这个词从诞生起就在不断的发展和深化。信息安全的特性如下,保密性,完整性,可用性,可控性,不可否认性。信息化时代进步的日益加快,信息在这几个特性下的发展也在逐步进行,并且在基于这几个方面上研究和发展。数据安全系统的复杂性。现代信息系统发展带来了生活的便利,同时也带来了数据安全这一重大课题。可以看出,这个问题的解决必然会基于现代高新技术的支持,传统的方法是无法满足要求的。由此,各种新技术便应运而生。数据安全涉与的面增广。从传统的实体化安全例如上锁,到现在的网络安全,存储安全等,同时一些加密技术如指纹识别,虹膜识别等1.4目的和意义1.为信息安全增添一道防护措施现在数据安全的概念已得到了广泛的普与,征服部门和企业都开始逐步增加了对信息安全的重视,虽说在很大一部分上是通过行政手段来提供的保障,但是在系统失效的情况下如何保护重要敏感的数据可谓重中之重。应运而生的数据安全系统可以对存储介质提供加密保护,即使系统出现失控或别的一些故障,数据安全系统依旧为数据安全提供者保障。由此可见,数据安全存储系统和行政管理的相互补充,有效的保护了数据安全2.增加普适性,为用户提供简单便捷的操作以与全面的数据保护在计算机技术与信息技术高速发展的今天,电子文档已经在大规模上取代了传统纸质介质,而且存储介质的容量的不断扩增,导致了现在用户会将大部分的资料存储在一个介质中,一旦该介质出现故障等问题足以致命。3.机密性网络中的一些数据是存在极高的机密性的,例如账号密码等一系列数据。这些数据让工作本身就成为了一种秘密性的行为。所以要实时确保该类信息的保密,确保信息即使在不被授权的情况下不会被第三方获得4.完整性数据安全中的重要一环就是要保障数据传输中的完整性,以防止数据的错序,丢失,重复等行为。保证信息的完整性是保障数据安全的基础,也是前提5.对于机密数据的访问必须经过身份验证数据的存储时运行在一个大的并且是实时开放的网络中的,所以对于机密数据的访问是必须要经过身份验证,以确保信息是来自真实身份的发送方。以防止在一方进行越权操作时,保证机密数据的完整6.不可抵赖性信息一旦存储,其不可抵赖性是毋容置疑的。很多信息安全的项目涉与到责任权利等问题,所以信息的不可抵赖性的作用体现的极为明显。信息既已操作,其操作行为会随之记录,这是基于公平公正性进行考虑的,所以必须要满足这一点第二章数据安全保护的主要应用技术2.1加密算法本文主要涉与的是数据安全,所以各种加密算法是重中之重。根据加密算法中秘钥类型的不同,可以将加密算法分为两类,对称加密和非对称加密。2.1.1对称加密采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密与解密过程的指令。算法是一组规则,规定如何进行加密和解密。因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。常用对称加密算法DES:使用一个56位的密钥以与附加的8位奇偶校验位(每组的第8位作为奇偶校验位),产生最大64位的分组大小。这是一个迭代的分组密码,使用称为Feistel的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES使用16轮循环,使用异或,置换,代换,移位操作四种基本运算。3DES:3DES(即TripleDES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密文,这样:3DES加密过程为:C=Ek3(Dk2(Ek1(P))),3DES解密过程为:P=Dk1(EK2(Dk3(C)))AES:密码学中的高级加密标准(AdvancedEncryptionStandard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。2.1.2非对称加密非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。常用非对称加密算法1.RSA:RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。RSA的算法涉与三个参数,n、e1、e2。其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。[1]RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2modn;B=A^e1modn;(公钥加密体制中,一般用公钥加密,私钥解密)e1和e2可以互换使用,即:A=B^e1modn;B=A^e2modn;RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。Diffie-Hellman密钥交换一种确保共享KEY安全穿越不安全网络的方法,它是OAKLEY的一个组成部分。Whitefield与MartinHellman在1976年提出了一个奇妙的密钥交换协议,称为Diffie-Hellman密钥交换协议/算法(Diffie-HellmanKeyExchange/AgreementAlgorithm).这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。基于原根的定义与性质,可以定义Diffie-Hellman密钥交换算法.该算法描述如下:1.有两个全局公开的参数,一个素数q和一个整数a,a是q的一个原根.2.假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数XA(XA<q),并计算公开密钥YA=a^XAmodq。A对XA的值保密存放而使YA能被B公开获得。类似地,用户B选择一个私有的随机数XB<q,并计算公开密钥YB=a^XBmodq。B对XB的值保密存放而使YB能被A公开获得.3.用户A产生共享秘密密钥的计算方式是K=(YB)^XAmodq.同样,用户B产生共享秘密密钥的计算是K=(YA)^XBmodq.这两个计算产生相同的结果:K=(YB)^XAmodq=(a^XBmodq)^XAmodq=(a^XB)^XAmodq(根据取模运算规则得到)=a^(XBXA)modq=(a^XA)^XBmodq=(a^XAmodq)^XBmodq=(YA)^XBmodq因此相当于双方已经交换了一个相同的秘密密钥.4.因为XA和XB是保密的,一个敌对方可以利用的参数只有q,a,YA和YB.因而敌对方被迫取离散对数来确定密钥.例如,要获取用户B的秘密密钥,敌对方必须先计算XB=inda,q(YB)然后再使用用户B采用的同样方法计算其秘密密钥K.Diffie-Hellman密钥交换算法的安全性依赖于这样一个事实:虽然计算以一个素数为模的指数相对容易,但计算离散对数却很困难.对于大的素数,计算出离散对数几乎是不可能的.下面给出例子.密钥交换基于素数q=97和97的一个原根a=5.A和B分别选择私有密钥XA=36和XB=58.每人计算其公开密钥YA=5^36=50mod97YB=5^58=44mod97在他们相互获取了公开密钥之后,各自通过计算得到双方共享的秘密密钥如下:K=(YB)^XAmod97=44^36=75mod97K=(YA)^XBmod97=50^58=75mod97从|50,44|出发,攻击者要计算出75很不容易2.2带关键词搜索的公钥加密算法(PEKS)带关键词的公钥加密(Publickeyencryptionwithkeywordsearch)是一种新型的密码体制,允许我们在经过加密的数据上进行关键词搜索,不仅保证数据接收方的隐私,同时提供了一种方法,使得我们无须对数据进行解密就能快速有效地进行搜索操作。一个非交互的带关键词检索的公钥加密体制包含如下四个概率多项式时间算法:(l)初始化:输入安全参数k,输出密钥对(私钥以与公钥);(2)PEKS算法:以接收者的公钥以与关键词w作为输入,通过PEKS算法计算出可用于搜索关键词w的密文s,(3)限门产生算法:以接收者的私钥和关键词w作为输入,生成关键词w的限门,;(4)关键词检索算法:输入关键词w的限门以与一个PEKS密文如果w=w’,该算法返回”Yes”,否则返回”No”;2.3基于双线性对的PEKS方案带关键词检索的公钥加密(PEKS)有多种构造,大部分都是使用椭圆曲线上的双线性对进行构造。总体上,是使用了两个阶为素数p的群,以与一个在这两个群上的双线性对,该双线性对满足以下属性:可计算性:给定g,,有一个多项式时间算法能够计算;双线性:对于任何整数,有非退化性:如果g为的生成元,则为的生成元:BONEH等人基于以上的双线性对性质构造了如下带关键词检索的公钥加密方案,同时使用两个哈希函数和,方案由如下四个算法构成:(1)初始化:输入安全参数p决定群,的大小,算法随机选择一个整数,以与群G,的一个生成元g。输出(2):首先计算,随机数,输出(3):输出(4)(:令S=[A,B],如果,输出“yes”,否则输出“no,”。2.4PBC库PBC库是一种c语言开发的开源高精度数值运算库,在GMP库之上开发,主要提供了椭圆曲线上的配对运算。本文在PEKS的运算中使用到了PBC库中的一些数据类型和函数调用:(1)数据类型:Element_t:elementsofanalgebraicstructurePairing_t:pairingswhereelementsbelong;caninitializefromsamplefromsamplepairingparametersbundledwithPBCintheparamsubdirectoryPbc_param_t:usedtogeneratepairingparameters(2)函数:Voidelement_init_G1(element_te,pairing_tpairing)Voidelement_init_G2(element_te,pairing_tpairing)第三章数据安全存储系统设计随着计算机网络技术、信息技术飞速发展,诸如电子商务等数字化产业正在世界范围内迅速崛起。从政府机关、企事业单位、科研院所、高校,甚至是普通人都越来越习惯于使用计算机存储信息和数据,同时利用局域网和互联网实现互联互通和信息共享。因此确保数据信息的安全存储成为实现信息安全的首要条件。3.1系统设计总体要求数据安全存储系统提供给用户加密重要涉密文档,既要安全可靠,又要方便快捷,因此应能满足以下要求:1.实用性:尽量满足数据安全保护的各种需求,操作方便简单。2.稳定性:研发过程中,尽量考虑各种可能出现的意外情况,保证系统能稳定运行,并建立健全的数据恢复机制,避免给用户带来不必要的损失。3.先进性:采用目前先进的技术与实现方法,保证系统各项功能性能良好。安全性:保证保护的数据不被有效窃取。3.2系统设计总体目标本系统设计以安全存储数据为最终目标,主要完成以下功能:3.2.1数据存储功能数据的存储是本系统的基础,也是必须满足的功能之一。该系统是将数据以密文的形式存入硬盘,所以数据存储系统需要保证以明文形式输入的数据可以输送至加密系统。当加密完成后,以密文形式传出的数据可以传送回数据存储系统,并将其安全的存储在硬盘上。所以当用户需要存储数据时,首先应选择数据的存储路径,然后进入数据输入界面输入数据,当数据输入完成后,系统将执行上述操作3.2.2数据的关键词由于本系统是基于PEKS的数据存储,PEKS即带有关键词搜索的公钥加密。所以在公钥加密的基础上,关键词的提取也是本系统的一个基础要点。关键词在提取完成后也会被输入加密系统。而在数据检索时,关键词的作用不言而喻。所以在系统的设计中加入了关键词输入的部分,以用来记录数据的关键词3.2.3系统初始化系统在初始化时,会自动取安全大素数p,g是p的本原根,p和g作为公开的参数。存储模块选择一个保密的随机整数作为自己的私钥,而存储模块的公钥为,数据检索系统选择保密随机整数作为自己的私钥,相应的公钥则为。在用户模块中包含公钥加密算法E,伪随机序列生成器G,加密关键词所需的带密钥的和秘密参数UN的安全哈希函数H,带密钥c的伪随机函数。3.2.4基于PEKS的加密设计用户模块向存储模块发送包括关键词(,...)的消息msg,用户模块采用如下方式对消息和关键词进行加密输入公钥,然后对整个消息进行加密得到;计算,计算;其中为用带密钥的安全哈希函数H求x的值用伪随机序列生成器G生成n-m为的,计算,加在Si后面,得到n位的,其中为带密钥的伪随机函数计算关键词密文将密文发送给存储模块输入关键词w和公钥PKa输入关键词w和公钥PKa生成带密钥的随机函数生成带密钥的随机函数生成安全哈希函数生成安全哈希函数伪随机数列生成器伪随机数列生成器3.2.5数据的检索本文主要论述的是基于PEKS的数据存储,所以数据的检索是本文的重点。当用户提出获取关键词w的数据时,用户首先通过用户模块生成搜索陷门,然后将搜索陷门传送给存储模块进行检索。具体步骤如下;首先在用户模块上输入自己的私钥和关键词kw用户模块根据输入的私钥,自动计算用户模块根据得到的TK计算,为关键词kw生成陷门,其中:向存储模块发送,请求检索带有关键词kw的消息3.3系统整体设计模块加密数据存储数据关键词检测加密数据存储数据关键词检测密文存储关键词加密密文存储关键词加密存储模块存储模块生成陷门检索数据生成陷门检索数据用户界面用户界面PEKS系统PEKS系统用户模块用户模块数据安全系统按照功能和操作划分,主要分为两大模块:用户模块和存储模块用户模块:主要实现用户界面,包括数据存储界面和数据检索界面。数据加密系统以与陷门生成系统(1)数据加密系统:对即将存储的数据进行加密,采用公钥加密的方式进行加密,以确保其安全强度(2)关键词加密系统:用于对传来的关键词w进行加密,并将密文与(1)中系统加密形成的密文共同传输给存储模块(3)陷门生成系统:在数据检索时用于生成陷门,并实现和存储模块的连接,以便数据的检索存储模块:主要用来实现对用户模块传来的密文的存储功能以与在数据检测时对关键词检测并选择消息的功能关键词检索系统:其中含有关键词检索函数test,对于传递来的陷门函数,进行关键词检索密文存储:对于传递来的密文,存储模块将会将他写入到硬盘里第四章数据安全存储系统设计4.1系统初始化4.1.1结构体定义双线性对结构体typedefstructsysparam{ pairing_tpairing;}sysparams;公钥对结构体typedefstructpubkey{ element_tg,h;}pubkey;私钥结构体typedefstructprivatekey{element_talpha;}privatekey;PEKS密文结构体typedefstructPEKSCipher{ element_tc1,c2;}PEKSCipher;陷门结构体typedefstructTrapdoor{ element_tt;}Trapdoor;4.1.2PEKS系统初始化首先调用PCB库中的函数,形成双线性初始化函数,其中pbc_pairing_init_demo为pbc库中的函数,具体实现代码如下:intpbc_pairing_init_demo(pairing_tpairing){ char*PairingInitString="typea\n""q87812522437781984754116475637862517942266222142323174592777324925129998224791\n""h1211468935978026776\n""r732455776559617\n""exp2159\n""exp1107\n""sign11\n""sign01\n";chars[1000];intrv;pbc_param_tparam;FILE*fp=stdin; fp=fopen("a.param","r");if(!fp)printf("erroropening%s","a.param");size_tcount=fread(s,1,1000,fp);if(!count)printf("inputerror");fclose(fp);rv=pairing_init_set_buf(pairing,PairingInitString,strlen(PairingInitString));if(rv){ returnrv;}rv=pairing_is_symmetric(pairing);if(!rv){ return-2;}return0;}当系统进行存储操作时,首先系统会生成密钥,调用keygen函数生成密钥,其中pk为公钥,sk为私钥。其中调用了PCB库中的函数,代码实现如下intkeygen(sysparams*param,pubkey*pk,privatekey*sk){ element_init_G1(pk->g,param->pairing); element_init_G1(pk->h,param->pairing); element_init_Zr(sk->alpha,param->pairing); element_random(pk->g); element_random(sk->alpha); element_pow_zn(pk->h,pk->g,sk->alpha); return0;}4.1.3RSA加密系统初始化publicclassRSA{

//创建密钥对生成器,指定加密和解密算法为RSA

publicString[]Skey_RSA(intkeylen){//输入密钥长度

String[]output=newString[5];//用来存储密钥的endpq

try{

KeyPairGeneratorkpg=KeyPairGenerator.getInstance("RSA");

kpg.initialize(keylen);//指定密钥的长度,初始化密钥对生成器

KeyPairkp=kpg.generateKeyPair();//生成密钥对

RSAPublicKeypuk=(RSAPublicKey)kp.getPublic();

RSAPrivateCrtKeyprk=(RSAPrivateCrtKey)kp.getPrivate();

BigIntegere=puk.getPublicExponent();

BigIntegern=puk.getModulus();

BigIntegerd=prk.getPrivateExponent();

BigIntegerp=prk.getPrimeP();

BigIntegerq=prk.getPrimeQ();

output[0]=e.toString();

output[1]=n.toString();

output[2]=d.toString();

output[3]=p.toString();

output[4]=q.toString();

}catch(NoSuchAlgorithmExceptionex){

Logger.getLogger(RSA.class.getName()).log(Level.SEVERE,null,ex);

}

returnoutput;

}4.2数据存储的实现4.2.1数据存储界面4.2.2数据检索流程实现在主界面点击储存按钮后,程序会跳转至数据存储界面,在关键字一栏输入关键字,在数据栏输入数据完成后,点击保存按钮后,会实现事件响应,系统会将数据content和关键字keyword发送至PEKS系统中进行后续的操作,PEKS系统在接受关键词和数据后会在系统内进行加密操作,并返回密文cipher,系统会将cipher发送至存储系统SaveImpl,调用.save函数进行存储,具体代码实现如下save1.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){Stringkeyword1=keyword.getText(); Stringcontent1=content.getText(); PEKSSystempeksSys=newPEKSSystem(); Stringcipher=peksSys.save(keyword1,content1); SaveImplsi=newSaveImpl(cipher); si.save(); } }4.2.3PEKS系统实现(1)生成密钥后,对即将进行加密存储的数据的关键进行PEKS加密,其中pk为公钥,keyword为关键词,keywordlen为关键词长度,cipher为密文,具体实现代码如下:intPEKS(sysparams*param,pubkey*pk,unsignedchar*keyword,intkeywordLen,PEKSCipher*cipher)//PEKS密文生成函数{ element_tr,tmp1,tmp2; element_init_G1(cipher->c1,param->pairing); element_init_GT(cipher->c2,param->pairing); element_init_Zr(r,param->pairing); element_random(r); element_pow_zn(cipher->c1,pk->g,r); element_init_G1(tmp1,param->pairing); element_from_hash(tmp1,keyword,keywordLen); element_init_G1(tmp2,param->pairing); element_pow_zn(tmp2,pk->h,r); element_pairing(cipher->c2,tmp1,tmp2); return0;}使用RSA加密算法对数据进行加密,具体代码实现如下,content为输入PEKS系统中的明文publicStringEnc_RSA(Stringcontent,StringeStr,StringnStr){Stringcipher=newString();try{BigIntegere=newBigInteger(eStr);BigIntegern=newBigInteger(nStr);byte[]ptext=mingwen.getBytes("UTF8");BigIntegerm=newBigInteger(ptext);BigIntegerc=m.modPow(e,n);cipher=c.toString();}catch(UnsupportedEncodingExceptionex){Logger.getLogger(RSA.class.getName()).log(Level.SEVERE,null,ex);}returncipher;}PEKS系统在加密完数据和关键词后会将两个密文一起发送给存储模块进行存储,存储模块调用IO输出流,将密文写入文件中实现存储,具体代码实现如下fos=new(current); char[]chardata=content.toCharArray(); for(inta=0;a<chardata.length;a++){ fos.write(chardata[a]); }4.3数据检索的实现4.3.1数据检索界面4.3.2数据检索流程实现当用户点击了检索按钮后,系统会跳转至检索界面,在用户输入完成关键字后,系统会将关键字keyword发送至PEKS系统进行陷门函数操作,同时将输出的关键词密文keyWord_cipher送至存储系统SaveImpl中的search方法,其中包含TEST(关键词检索算法),该算法会将发送来的keyWord_cipher与系统中的每个密文进行比对,若test返回true,则SaveImpl中的search返回输出该数据,具体代码实现如下save1.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ StringkeyWord1=keyword.getText(); PEKSSystempeksSys=newPEKSSystem(); StringkeyWord_cipher=peksSys.trapdoor(keyWord1); SaveImplsi=newSaveImpl(); Stringcontent_result=""; try{ content_result=si.search(keyWord_cipher); }catch(IOExceptione1){ e1.printStackTrace(); } result_show.setText(content_result); } });4.3.3数据检索中的PEKS实现当用户输入关键词keyword结束后,系统会将keyword发送给PEKS系统,调用其中的陷门函数,生成加密后的关键词密文,具体实现代码如下,其中sk为私钥,keyword为关键词,keywordLen为关键词长度inttrapdoor(sysparams*param,privatekey*sk,unsignedchar*keyword,intkeywordLen,Trapdoor*tw){ element_ttmp; element_init_G1(tmp,param->pairing); element_from_hash(tmp,keyword,keywordLen); element_init_G1(tw->t,param->pairing); element_pow_zn(tw->t,tmp,sk->alpha); return0;}在PEKS系统中生成陷门函数后,系统会将陷门函数生成的加密后的关键词密文发送至存储系统中的关键词检索算法中,当该算法返回TRUE时,即找到该数据,具体的实现代码如下,其中tw为陷门函数中生成的加密后的关键词密文,cipher为存储在系统中的密文inttest(sysparams*param,Trapdoor*tw,PEKSCipher*cipher){ element_ttmp; element_init_GT(tmp,param->pairing); element_pairing(tmp,cipher->c1,tw->t); if(element_cmp(tmp,cipher->c2)==0) return0; else return-1;}使用RSA解密密文,具体代码实现如下,其中cipher为存储系统输出的密文,content为解密后输出的明文publicStringDec_RSA(Stringcipher,StringdStr,StringnStr){StringBuffercontent=newStringBuffer();BigIntegerd=newBigInteger(dStr);//获取私钥的参数d,nBigIntegern=newBigInteger(nStr);BigIntegerc=newBigInteger(miwen);BigIntegerm=c.modPow(d,n);//解密明文byte[]mt=m.toByteArray();//计算明文对应的字符串并输出for(inti=0;i<mt.length;i++){content.append((char)mt[i]);}returncontent.toString();}}第四章系统测试测试内容测试方法测试结果备注数据存储启动系统,进行操作测试通过10台计算机,每台不少于50次数据加密强度对数据加密强度进行破解通过对两组数据进行破解,失败数据检索启动系统,进行操作测试通过稳定些兼容性通过第五章结束语数据安全与信息系统的稳定可靠息息相关,因此,数据安全问题得到了越来越广泛的关注。本文设计和实现了数据安全存储系统,使用密码技术和手段对信息系统内部的数据进行透明加密保护,成功达到了信息系统等级保护中有关数据安全保护的基本要求和目标。本系统是基于PEKS,即带关键词的公钥加密系统。该系统可在不用对数据解密的情况下对数据进行关键词查找,保证了效率的同时也保证了其安全性和稳定性。在我查阅资料的时候,学习到了对pbc库的学习使用,由于pbc库是基于C语言的,然而我又不是很掌握c语言的编程,所以本系统的主界面是在JAVA下做成的,而PEKS中的核心代码是通过在JAVA中对C的调用来实现的,总的来说是在C语言代码段的开头加上JAVA语言文件编译成头文件加在C语言代码段的开头进行调用。在数据加密的过程中,使用RSA和DES等加密技术,在很大程度上对数据安全进行了加强,保证了数据加密强度的同时也增加了数据安全存储的效率。数字签名也在一定程度上加强了数据的安全存储,信息的不可抵赖性在这里得到了体现,在公钥加密中中间人攻击是一种常见的形式,采用了数字签名后极大的避免了这种攻击形式。但与此同时,本系统中还有很多缺陷,比如在密文存入硬盘的过程只是简单的调用了IO文件的输入输出,没有在存储进硬盘这一模块下工夫,我今后的工作中一定会多多研究这一方面。在比如在数据传入PEKS系统时也未做保密处理,可能会存在漏洞,但由于我的知识匮乏,这一方面我也仍在努力。总而言之,信息安全的形式日益严峻,信息安全形式的多样性必然会导致破解信息安全的方法日渐增多,时代在改变,技术也在发展,我希望能在今后的工作中习得更加先进的信息安全技术,获得更加先进的信息安全理念新技术、新理念融合进系统,使系统功能得到不断完善,使之在信息系统安全中发挥更大作用。致谢大学生活一晃而过,回首走过的岁月,心中倍感充实,当我写完这篇毕业论文的时候,有一种如释重负的感觉,感慨良多。首先诚挚的感谢我的论文指导老师胡程瑜老师。他在忙碌的教学工作中挤出时间来审查、修改我的论文。还有教过我的所有老师们,你们严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他们循循善诱的教导和不拘一格的思路给予我无尽的启迪。感谢四年中陪伴在我身边的同学、朋友,感谢他们为我提出的有益的建议和意见,有了他们的支持、鼓励和帮助,我才能充实的度过了四年的学习生活。感谢所有的任课老师,是你们让我能够静静地坐下来,在知识的海洋里吸取更多的营养,从而能够为自己进一步地加油充电。通过论文的撰写,使我能够更系统、全面地学习计算机相关的前沿理论知识,并得以借鉴众多专家学者的宝贵经验,这对于我今后的工作和我为之服务的企业,无疑是不可多得的宝贵财富。由于本理论水平比较有限,论文中的有些观点以与对企业示例的归纳和阐述难免有疏漏和不足的地方,欢迎老师和专家们指正。参考文献[1]卢开澄,计算机密码学一计算机网络中的数据保密与安全[M〕,北京:清华大学出版社,2003.[2]RiehterJeffrey,Windows核心编程[M」,北京:机械工业出版社,2003.[3]谷大武等,高级加密标准(AES)算法一Rijndael的设计[M孔北京:清华大学出版社,2003.[4]程庭,张明慧,一种基于DES和RSA的数据加密方案与实现「J」,河南教育学报,自然科学出版社,2003,12.[5]徐桂祥.《数据库系统原理和应用技术》.清华大学业出版社,2010[6]杨学全.《SQLServer实例教程》.电子工业出版社,2007[7]Y.DanielLiang.《IntroductiontoJavaProgramming.PearsonEducation》,2008[8]刘伟,张利国.《JavaWeb开发与实战:Eclipse+Tomcat+Servlet+JSP整合应用》.科学出版社,2008[9]郝玉龙.《JavaEE编程技术》.清华大学出版社,2008[10]耿祥义.《JSP基础教程》.清华大学出版社,2004[11]程伟,汪孝宜.《开发者突击:JSP网络开发经典模块实现全集》.电子工业出版社,2008[12]张新曼.《精通JSP:Web开发技术与典型应用》.人民邮电出版社,2007[13]赵斌.《SQLServer2008应用程序开发案例解析》.科学出版社,2009[14]郭郑州,陈军红.《SQLServer2008完全学习手册》.清华大学出版社,2011[15]ItzikBen-Gan.《MicrosoftSQLServer2008技术内幕:T-SQL查询:T-SQLquerying》.电子工业出版社,2010[16]崔群法,祝红涛,赵喜来.《SQLServer2008中文版从入门到精通》.电子工业出版社,2009附录1英文文献SENTINEL:SecuringDatabasefromLogicFlawsinWebApplicationsXiaoweiLiDepartmentofElectricalEngineeringandComputerScienceVanderbiltUniversityNashville,TNUSA37203xiaowei.WeiYanDepartmentofElectricalEngineeringandComputerScienceVanderbiltUniversityNashville,TNUSA37203wei.YuanXueDepartmentofElectricalEngineeringandComputerScienceVanderbiltUniversityNashville,TNUSA37203yuan.ABSTRACTLogicflawswithinwebapplicationsallowtheattackerstodiscloseortampersensitiveinformationstoredinback-enddatabases,sincethewebapplicationusuallyactsasthesingletrusteduserthatinteractswiththedatabase.Inthispaper,wemodelthewebapplicationasanextendedfinitestatemachineandpresentablack-boxapproachforderivingtheapplicationspecificationanddetectingmaliciousSQLqueriesthatviolatethespecification.Severalchallengesarise,suchashowtoextractpersistentstateinformationinthedatabaseandinferdataconstraints.WesystematicallyextractasetofinvariantsfromobservedSQLqueriesandresponses,aswellassessionvariables,astheapplicationspecification.AnysuspiciousSQLqueriesthatviolatecorrespondinginvariantsareidentifiedaspotentialattacks.WeimplementaprototypedetectionsystemSENTINEL(SEcuriNgdaTabasefromlogIcflawsiNwEbappLication)andevaluateitusingasetofreal-worldwebapplications.Theexperimentresultsdemonstratetheeffectivenessofourapproachandacceptableperformanceoverheadisincurredbyourimplementation.CategoriesandSubjectDescriptorsH.2.7[DatabaseManagement]:DatabaseAdministration—Security,integrity,andprotection;K.6.5[ManagementofComputingandInformationSystems]:SecurityandProtection—UnauthorizedaccessGeneralTermsDesign,Experimentation,SecurityKeywordsLogicFlaw,WebApplicationSecurity,ExtendedFiniteStateMachine,SQLSignature,InvariantPermissiontomakedigitalorhardcopiesofallorpartofthisworkforpersonalorclassroomuseisgrantedwithoutfeeprovidedthatcopiesarenotmadeordistributedforprofitorcommercialadvantageandthatcopiesbearthisnoticeandthefullcitationonthefirstpage.Tocopyotherwise,torepublish,topostonserversortoredistributetolists,requirespriorspecificpermissionand/orafee.CODASPY’12,February7–9,2012,SanAntonio,Texas,USA.Copyright2012ACM978-1-4503-1091-8/12/02...$10.00.Database-backedwebapplicationshavebecomeaprevalentvenuefordisseminatinginformationandservices.AnenormousamountofinformationismadeaccessibleonInternetthroughwebapplications,whichinteractwiththebackenddatabaseonbehalfofusers.Whileprovidinggreatconveniencetousers,thosewebapplicationsalsoattractalargenumberofsecurityexploits.Accordingtoarecentsurvey[29],theattacksthatsuccessfullydiscloseortampersensitiveinformationbycompromisingvulnerablewebapplicationsaccountformorethan30%ofallthecyberattacks.Forinstance,onJune2010,itwasreportedthatavulnerabilityofAT&TwebsiteallowedanattackertoharvesttheAppleiPADsubscribers’emailsbyenumeratingICC-IDnumbers,whichaffectedover100,000Applecustomers[1].IntheWebscenario,thefront-endwebapplicationactsasthesingleuserthatinteractswiththedatabase.Thus,thedatabasefullytruststhewebapplication,acceptsandexecutesallthequeriessubmittedbytheapplication.Assuch,thevulnerabilitieswithinwebapplicationsmayintroducesecurityconcernsfortheinformationstoredinthedatabase.Oneclassofattacksexploittheapplication’sinputvalidationmechanismstotampertheintendedstructureofSQLqueriesissuedbytheapplication,whichiswellknownasSQLinjection.Anotherclassofattacksexploitlogicflawswithintheapplication,referredtoasstateviolationattacks[9],totricktheapplicationintosendingSQLqueriesatincorrectapplicationstates.Forexample,anattackermayretrieveotherusers’accountinformationwithoutprovidingtheadministrator’scredentialtotheapplication.Whilealargebodyofliteraturesfocusonfortifyingtheapplication’sinputvalidationmechanisms,onlyafewworkshaveattemptedtoaddresslogicflawswithinthewebapplications.Logicflawsarespecifictothefunctionalitiesofwebapplications,thusmoredifficulttohandle.Thekeytothisproblemistoderivetheapplication’sintendedlogic(i.e.,specification)inageneralandautomatedway.Oneapproachtoinferringtheapplicationspecificationisbyleveragingprogramsourcecode.Swaddler[9]establishesstatisticalmodelsoftheapplicationstateforeachprogramblockusingsessionvariables,whileWaler[13]characterizestheapplicationlogicbyassociatingvalue-basedinvariantsonfunctionparametersandsessionvariableswitheachprogramfunction.Thisapproachislimitedinthattheyrelyonprogramsourcecodetoextractthespecification.Theinferredspecificationishighlydependentonhowtheapplicationisstructuredandimplemented(e.g.,thedefinitionofaprogramfunctionorblock).Thus,implementationflawsmayresultinaninaccuratespecification.Anotherapproachinferstheapplicationspecificationbyobservingandcharacterizingtheapplication’sexternalbehavior.BLOCK[18]observesthewebrequests/responsesbetweenthewebapplicationanditsusersandextractsinvariantsass

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论