安全數據存儲系統的設計與實現_第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

提交評論