本發(fā)明涉及信息安全領域,具體地說,涉及一種云存儲環(huán)境下的用戶數據加密存儲和密文檢索的方法和系統(tǒng)。
背景技術:
:隨著互聯網和計算技術的發(fā)展,人們的生活已經進入了“云時代”。置身于“云”中,人們想要的各類信息觸手可及,人們可以像使用自來水一樣按需使用幾乎是無限的軟硬件資源。云存儲將存儲資源作為服務通過互聯網提供給用戶使用,是云計算中基礎設施即服務(InfrastructureasaService,IaaS)的一種重要形式。借助于虛擬化和分布式計算與存儲技術,云存儲可以將眾多廉價的存儲介質整合為一個存儲資源池,向用戶屏蔽了存儲硬件配置、分布式處理、容災與備份等細節(jié)。用戶可以按自己對存儲資源的實際需求量向云服務提供商租用池內資源,省去了本地的存儲硬件及人員投入。同時,將存儲的基礎設施交由專業(yè)的云服務提供商來維護可以保證更好的系統(tǒng)穩(wěn)定性。因此很多企業(yè)或者個人傾向于將數據交由第三方云服務商保存。云存儲的最大特點是存儲及服務,用戶可以通過公有API將自己的數據上傳到云端保存,由于云模式的特點,數據所有者不再維護存儲數據的載體,用戶不管選擇哪家云服務提供商都必須對其完全信任,但在現實中,用戶的數據,尤其是使用智能終端采集的數據(例如:個人照片、通信記錄等)往往與隱私相關,用戶并不希望將其完全的托付給存儲服務商,雖然云服務提供商在數據保護、容災、備份、數據中心的維護等方面有著用戶們無法比擬的經驗和水平,但很多用戶仍然認為受自己控制的才是安全的。據調查,我國至少95%的政府用戶和企業(yè)用戶將數據安全作為考慮云計算時最為關心的問題;由于大部分云存儲服務提供商存儲在云端的文件是明文狀態(tài)而且用戶喪失了對數據的絕對控制權,因此針對云服務提供商的所有安全隱患都將直接關系到用戶數據的安全性,具體的安全隱患包括:1.數據在網絡傳輸過程中容易泄露:目前很多云服務提供商在同步用戶數據的時候采用不安全的傳輸方式,數據在同步到云端的時候很容易遭到網絡竊聽或者劫持,造成隱私數據泄露。2.云服務提供商濫用權限的風險:由于數據是以明文狀態(tài)存在于第三方云服務提供商的,而某些云服務提供商的管理員擁有較高權限,管理員可能會因為一些商業(yè)利益對用戶數據造成泄漏;又或者云服務提供商基于商業(yè)目的對用戶數據進行窺探和分析。例如:Google和Baidu等公司普遍采用的分析引擎,可能涉及用戶的使用習慣等隱私信息。3.云服務商被攻擊:把數據存儲在云端給數據訪問和存儲帶來方便的同時,也面臨著互聯網上很多黑客攻擊的威脅,如果用戶數據以明文的方式存儲在云端的話,一旦云服務商被攻擊,極有可能造成用戶數據的大量泄漏。因此,一些企業(yè)或者個人并不愿意將自己的私有數據直接交給云服務提供商保管,他們更希望將數據進行加密處理后再保存到云端,這就需要用戶自己編寫一套加密組件和密鑰管理系統(tǒng)集成到項目中,雖然可能解決了一些安全問題,但是又同時帶來了新的問題,用戶自己編寫的加密組件和密鑰管理系統(tǒng)具有如下缺陷:1.沒有統(tǒng)一的規(guī)范和標準:用戶在編寫加密組件時,數據如何加密、加密流程、密鑰管理方式以及項目集成方法等全部納入用戶考慮范圍,目前市場上缺乏統(tǒng)一的規(guī)范技術和標準,使得自定義的加解密組件只能適用于一個項目,不利于推廣使用。2.用戶需要維護一套復雜的密鑰管理系統(tǒng):用戶在自定義加解密組件的同時,勢必要新建一套密鑰管理系統(tǒng)為加解密組件提供服務,用戶需要自己開發(fā)和維護這一套密鑰管理系統(tǒng),增加了用戶的開發(fā)和維護費用。3.無法滿足密文檢索要求:使用自定義的加解密組件,數據被加密保存到第三方云服務提供商后,密文文件的內容對用戶不可見,用戶無法對密文文件的內容進行密文檢索。雖然現在有很多關于保護云端數據安全的方法和系統(tǒng),但是到目前為止,還沒有人提出一種可以為企業(yè)或者個人提供密文存儲和密文檢索云服務的方法和系統(tǒng)。已公開的專利申請CN102428686用于安全保護云中的數據的系統(tǒng)和方法,提供了一種安全可集成的數據存儲到云計算資源中并與云計算資源傳送數據的任意合適系統(tǒng)中的安全數據解析器。為了增加安全性,可利用原始數據、數據的部分或者這二者的加密。該方法主要提供安全的存儲和傳輸安全。并沒有提到將密文存儲服務開放給用戶,而且該方法不能對密文內容進行檢索,沒有提供客戶端的文件操作流程。不能有效解決與第三方云存儲服務器的對接。已公開的專利申請CN201010595149.0一種面向密文云存儲的文檔檢索方法與系統(tǒng),該方法以云計算為背景,使用客戶端生成的對稱密鑰分別加密索引文件的索引詞、原文件生成密文索引文件和密文,使用用戶主密鑰加密對稱密鑰,存儲在云端。其中,服務器端保存一個索引表,用于存儲用戶用其索引密鑰加密所上傳文檔的屬性元信息所得到的密文;在檢索時,客戶端先從服務器端得到用戶索引密鑰的密文,然后利用用戶的主密鑰進行解密,然后用得到的索引密鑰對屬性元信息加密并將屬性元信息密文發(fā)送到服務器端,服務器端利用該屬性元信息密文對索引表進行檢索,從而得到滿足條件的文檔記錄并返回給客戶端。該方法不提供開放服務接口;不提供對第三方云提供商的對接功能,成本高;密鑰管理功能薄弱,不能更新用戶的密鑰,且不提供客戶端的密鑰存儲、獲取、更新、備份等一系列解決方案。針對上述問題,本發(fā)明提出一種密文存儲與密文檢索開放云服務方法和系統(tǒng),專門為企業(yè)和用戶提供文件加解密和密文檢索服務,而且企業(yè)和用戶可以很方便地把該方法和系統(tǒng)集成到項目中,免去用戶自己開發(fā)加解密組件和密鑰管理系統(tǒng)的步驟,使用戶可專注于研究和開發(fā)項目的業(yè)務流。技術實現要素:針對現有技術方案的技術挑戰(zhàn),本發(fā)明公開了一種密文存儲與密文檢索開放云服務方法。本發(fā)明的密文存儲與密文檢索開放云服務系統(tǒng)只保留文件加解密密鑰和密文索引,而不保留密文文件,外部云存儲只保存加密文件,而不保存加解密密鑰,達到了密文和密鑰分離的目的,可有效地提升用戶的數據安全防護和隱私保護能力,另外用戶可以使用該方法和系統(tǒng)對密文文件內容進行密文檢索??梢源蛳脩暨x用云方案的顧慮,對于促進云計算的發(fā)展、增加信息系統(tǒng)的使用效率、促進節(jié)能減排都具有十分重要的意義。一種密文存儲和密文檢索開放云服務方法,其特征在于,所述方法包括:a)密文存儲和密文檢索以服務的方式提供給用戶,用戶可以很容易地使用密文存儲和密文檢索服務。開放服務包括對接客戶端的安全組件和為安全組件提供對接服務的服務器端;所述客戶端可能是各種智能計算設備,包括移動智能終端(例如:智能手機、PAD、PDA或其他移動智能設備)和傳統(tǒng)互聯網接入設備(例如:筆記本電腦、PC或服務器等);所述安全組件可能是一些擁有開放接口可供調用的庫文件(例如jar包、程序動態(tài)庫、靜態(tài)庫等);所述服務器端是對安全組件提供對接服務的服務器等,具體服務包括:用戶管理、密鑰管理、密文檢索、信息同步等;b)用戶通過和服務器協商一致的身份信息進行登錄驗證,采用與個人身份綁定的主密鑰和為每個上傳文件生成一個加解密密鑰兩級密鑰管理方法,提供:身份認證,密鑰產生,密鑰更新,密鑰存儲,密鑰備份功能。c)安全組件為用戶提供文件透明加解密和文件存儲功能,用戶通過調用安全組件提供的存儲接口對文件進行加解密和存儲,調用方式簡單,加密算法多樣,算法可以根據用戶需求進行選擇。加密文件可以方便地存儲于第三方云平臺。d)安全組件為用戶提供文件內容密文檢索功能,文件的密文索引信息會在文件加密的時候上傳到服務器端,用戶通過調用安全組件的密文檢索接口,可以對密文文件的內容進行檢索。e)安全組件支持主流的云平臺對接(例如阿里云、亞馬遜S3等),通過安全組件加密的密文文件全部同步到第三方云平臺,密文存儲和密文檢索開放云服務的服務器端只保留加密文件的密鑰和密文索引,不保留密文文件,而第三方云平臺只保留加密文件,而不保留加解密密鑰,達到了密文和密鑰分離的目的,有效地確保了文件的安全性。所述方法還包括:a)用戶調用安全組件的接口將文件上傳到第三方云平臺,安全組件依據用戶選定的加密方法和生成的加密密鑰,按照如下步驟操作:根據文件是否為可讀的文檔來創(chuàng)建密文索引,加密文件,上傳加密文件到第三方云平臺,上傳密文索引以及文件元信息到密文存儲和密文檢索開放云服務器端,刪除文件緩存信息。b)用戶調用安全組件的接口對文件進行解密查看,安全組件提供文件信息獲取接口,安全組件的調用者可以查看存儲于第三方云存儲平臺的密文文件的文件元信息(例如文件名字,文件大小,上傳日期等),依據安全組件的調用規(guī)則,用戶選定一個文件對其進行下載打開,安全組件將密文文件從第三方云平臺下載到本地,從密文存儲和密文檢索開放云服務器端獲取文件元信息、加密方法、加密密鑰等信息,根據獲取的加密方法和密鑰等信息對密文文件進行解密、打開,文件關閉后,刪除文件緩存信息。c)用戶調用安全組件的密文檢索接口對文件的內容進行密文檢索,用戶的安全組件會與密文存儲和密文檢索開放云服務器端進行身份認證,服務器根據安全組件的檢索請求中的關鍵字,在服務器中的密文索引中進行檢索,檢索得到文件ID等唯一標示,根據唯一標示進一步查詢文件元信息,向用戶返回文件元信息。所述的安全組件,是以專門為上層用戶提供服務的形式開放給用戶的,安全組件主要提供兩大功能接口,一是密文存儲功能,另外一個是密文檢索功能,密文存儲包括密文加解密以及對接第三方云服務平臺,密文檢索功能可以實現對密文文件內容進行檢索。安全組件以jar包或者dll動態(tài)庫或者靜態(tài)庫等插件形式提供給用戶,可以很容易地集成到各種平臺(例如PC,智能終端,WEB應用等)。進一步的,密文存儲和密文檢索開放云服務安全組件可對接異構云平臺,安全組件的對接功能用于連接一個或多個云存儲設備,實現掛載控制功能和數據控制功能;其中云存儲設備可以是本地的存儲服務器,也可以是云存儲提供商的存儲服務接口(例如:阿里云,亞馬遜S3等)。所述掛載控制功能,包括增加、刪除掛載點、獲取掛載點信息等;所述數據控制功能,包括上傳、下載、刪除外部存儲中的文件。所述的透明加解密由安全組件的文件加解密提供統(tǒng)一接口實現,所述透明加解密根據用戶傳遞的參數或者讀取用戶設備配置,獲取加解密算法,并由密鑰管理模塊獲得加解密密鑰,驅動密碼設備單元實施加解密操作。所述密碼設備單元由抽象密碼組件管理,可以是使用硬件加密設備或軟件加密設備實現,可動態(tài)擴展密碼算法。進一步的,通過下述方法實現加解密過程對用戶的透明:I.用戶上傳文件調用安全組件時,選擇所需加密上傳的文件,此時文件被安全組件做上傳預處理。II.由抽象密碼組件從密文存儲和密文檢索開放云服務系統(tǒng)的服務器端獲取加解密密鑰和加密算法,對文件生成密文索引,對所選文件進行加密、根據用戶提供的第三方云平臺的身份認證信息將密文文件上傳到第三方云平臺,將生成的密文索引和文件元信息上傳到本系統(tǒng)的服務器端。所述所選文件的原明文文件在上傳成功后被刪除。III.用戶對密文請求讀取或修改操作時,調用抽象密碼組件進行解密操作,生成明文臨時文件,并保存明文臨時文件屬性信息元數據到臨時文件表。并將明文臨時文件交給上層客戶端程序。IV.用戶使用應用程序對文件的操作均針對于明文臨時文件。在進行下一個文件操作或同步刷新時進行臨時文件屬性與所存儲原文件屬性元數據進行對比。V.若文件沒有進行修改,則刪除臨時文件,文件不進行同步。若文件經過修改,則調用密碼設備單元對所述臨時明文文件進行生成密文索引操作、加密操作,首先刪除密文存儲和密文檢索開放云服務器的文件元信息以及密文索引,刪除第三方云平臺的密文文件,并將生成的密文索引和元信息重新上傳到密文存儲和密文檢索開放云服務器,將加密的密文文件重新上傳到第三方云平臺中。在上傳成功后刪除所述臨時明文文件。所述身份認證以及所述的密鑰管理機制中的密鑰產生過程,包括主密鑰產生、加解密密鑰產生和密鑰獲取。通過下述方法實現:I.用戶首次使用安全組件時,需要去密文存儲和密文檢索開放云服務平臺注冊賬戶,用戶經過和平臺協商一致,根據用戶認證參數,平臺會給用戶提供用戶唯一認證方法,用戶通過這個唯一身份認證方法即可使用密文存儲和密文檢索開放云服務提供的服務,所述認證參數包括但不僅限于用戶名口令或者用戶指紋、聲音等生物特征。II.服務器會依據用戶提供的相應認證參數調用服務器端密鑰產生模塊生成用戶主密鑰,產生后調用密鑰備份模塊進行備份。III.安全組件通過認證參數和密文存儲和密文檢索開放云服務平臺進行身份認證,通過身份認證后,安全組件即可從服務器端獲取文件加解密密鑰。IV.當透明加解密模塊請求加解密密鑰時,依據用戶加密方案查找存儲的加解密密鑰,并將加解密密鑰提供給加解密模塊;V.若未查找到所述存儲的加解密密鑰,說明文件加解密密鑰丟失,則查詢密鑰備份模塊,查找文件加解密密鑰,提供給加解密模塊。認證過程按如下步驟執(zhí)行:安全組件獲取用戶提供的身份認證信息,通過安全的網絡傳輸方式將其傳送到服務器端,服務器端從存儲數據庫中讀取存儲的用戶個人認證信息的單項散列值,與用戶提供的身份認證參數利用相同算法生成的固定長度的單項散列值進行對比,若相同,則通過認證;否則,認證不通過。認證通過后,服務器直接通過安全的傳輸方式將主密鑰返回給安全組件,安全組件接收到主密鑰后,對其進行加密保存。密鑰更新過程按照如下步驟執(zhí)行:當用戶發(fā)出更新請求,并通過所述身份認證后,利用新的認證參數,重新調用所述服務器端的密鑰產生模塊生成新的主密鑰,并通過所述密鑰備份模塊進行備份。密鑰備份過程按照如下步驟執(zhí)行:將主密鑰的固定長度的單項散列值,及經主密鑰加密后的加解密密鑰備份到密文存儲和密文檢索開放云服務端;同時將加密后的加解密密鑰和文件元數據信息也備份到密文存儲和密文檢索開放云服務端。密鑰恢復過程按如下步驟執(zhí)行:根據以上提到的用戶認證參數,服務器認證用戶合法后,安全組件就可以將文件的加解密密鑰以及加密密鑰和文件映射關系表從密文存儲和密文檢索開放云服務端恢復。所述的云平臺對接方法為:I.安全組件通過客戶端提供的第三方掛載信息對第三方云平臺進行對接,提供的方式可以是動態(tài)傳參也可以是寫入配置文件,所述掛載信息包括用戶名、存儲類型等;II.當用戶發(fā)起掛載請求時,所述安全組件獲取第三方云平臺掛載信息,按照客戶端提供的身份認證信息進行第三方云平臺的掛載;III.該所述抽象操作接口模塊對上層提供數據訪問接口,對下層針對各個云服務商交互,實現不同存儲類型對應的抽象操作。所述云服務商存儲類型包括阿里云、AmazonS3、Dropbox、HDFS等,所述抽象操作包括fopen等文件操作接口、mkdir等目錄操作接口,并可以根據需求動態(tài)的擴展。進一步的,根據用戶設定,采用優(yōu)先級控制策略,對于優(yōu)先級高的文件,在得到用戶請求后立即得到響應,進行建立索引、加密文件、同步更新的操作;對于優(yōu)先級低的文件,則在客戶端接入電源或靜止狀態(tài)時,自動進行索引建立、加密文件、同步更新的操作。一種密文存儲和密文檢索開放云服務系統(tǒng),其特征在于,包括:一個或多個安全組件和云服務器。所述安全組件包括文件加解密模塊、密鑰管理模塊、密文檢索模塊、身份認證模塊、元信息對接模塊和對接外部云存儲模塊;所述文件加解密模塊,用來進行加解密操作;所述密文索引模塊用來密文索引生成;所述身份認證模塊完成安全組件身份認證,所述密鑰管理模塊,用于完成與個人身份綁定的主密鑰管理和對每個文件進行加解密的密鑰管理;所述密文檢索模塊用以實現明密文的檢索,對于密文檢索生成相應查詢語句的分詞和單向散列,并與密文存儲和密文檢索開放云服務端交互。所述元信息對接模塊與文件加解密模塊和密文檢索模塊連接用于調用和接收生成的密文和密文索引,完成密文及密文索引上傳的功能;所述密鑰管理模塊與文件加解密模塊連接為用戶提供操作接口,以設定密文安全策略,包括獲取所述認證參數和加解密算法;所述對接外部云存儲模塊為安全組件提供對接第三方云平臺功能;所述云服務器端包括用戶管理模塊、密鑰管理模塊、密文索引模塊、信息同步模塊、斷點續(xù)傳模塊、并發(fā)處理模塊;所述用戶管理模塊與安全組件端身份認證模塊連接,實現身份認證功能,包括帳號的管理和訪問控制,包括注冊用戶、普通用戶等;所述云服務器端的密鑰管理模塊與安全組件端的密鑰管理模塊連接,實現密鑰管理功能,用于存儲備份用戶的主密鑰單項散列值、使用主密鑰加密的加解密密鑰,用戶文件屬性的元信息值,采用數據庫實現;提供接口接受用戶請求,進行密鑰恢復。所述密文索引模塊與安全組件端密文檢索模塊連接,實現密文索引創(chuàng)建、上傳、保存和密文檢索功能;所述同步模塊與安全組件端元信息對接模塊連接,用以實現對文件元信息的同步傳輸;所述斷點續(xù)傳模塊與安全組件端的文件加解密模塊和元信息對接模塊連接,實現文件信息傳輸的斷點續(xù)傳功能;所述并發(fā)處理模塊與安全組件的密文檢索模塊、身份認證模塊和元信息對接模塊連接,用以支持數據的高并發(fā)處理功能。與現有技術相比,本發(fā)明的積極效果為:1.確保數據在網絡傳輸過程中的安全:安全組件和服務器以及第三方云服務提供商的通信全部采用加密的數據傳輸方式,而且傳輸的信息是密文狀態(tài),確保了網絡中傳輸數據內容的安全。2.云服務提供商看不到明文文件:通過安全組件上傳到第三方云服務提供商的文件全部是密文狀態(tài),加解密密鑰保存在密文存儲與密文檢索開放云服務器,第三方云服務提供商無法獲得加解密密鑰,因此無法濫用用戶數據。3.防護不當僅損失文件的密文形式:即使第三方云服務商被黑客攻陷,黑客只能得到文件的密文形式,攻擊者獲取明文的難度與攻擊密碼算法的難度相同。4.密文存儲與密文檢索開放云服務為用戶提供標準的規(guī)范和統(tǒng)一的接口:密文存儲與密文檢索開放云服務按照一定的規(guī)范和標準開放接口和服務,確保了不同用戶按照相同的調用方式來使用開放云服務,有利于用戶項目的移植與標準化。5.密文存儲與密文檢索開放云服務為用戶管理復雜的密鑰管理系統(tǒng):用戶自己不必維護復雜的密鑰管理系統(tǒng),將密鑰管理交給密文存儲與密文檢索開放云服務來維護,可以節(jié)省用戶的密鑰管理的維護費用。6.密文存儲與密文檢索開放云服務對用戶提供密文檢索服務:用戶可以利用密文檢索服務對加密的密文文件內容進行檢索。7.密文存儲與密文檢索開放云服務的安全組件可對接多個第三方云服務提供商,用戶可以將數據分布在不同的云服務提供商提供的存儲上,其中一家云服務提供商倒閉也不會影響其他副本的存活。附圖說明圖1是本發(fā)明密文存儲與密文檢索開放云服務的方法和系統(tǒng)的結構圖;圖2是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的用戶操作圖;圖3是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的用戶注冊圖;圖4是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的用戶激活圖;圖5是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的用戶修改密碼圖;圖6是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的密鑰管理模塊關系圖;圖7是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的密鑰管理模塊獲取密鑰過程圖;圖8是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的文件操作圖;圖9是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的文件加解密框架圖;圖10是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的文件加密流程圖;圖11是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的文件解密流程圖;圖12是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的密文索引框架圖;圖13是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的生成密文索引流程圖;圖14是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的密文索引查詢流程圖;圖15是本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的查詢模塊的密文索引刪除流程圖。具體實施方式下面結合附圖和具體實施例對本發(fā)明做進一步詳細的說明,但不以任何方式限制本發(fā)明的范圍。本實施例采用如圖1所示的密文存儲與密文檢索開放云服務方法和系統(tǒng)結構,包括安全組件、與安全組件對接的服務器、安全組件通過網絡與服務器建立連接、安全組件通過網絡與第三方云存儲服務器建立連接。安全組件包括文件加解密模塊、密鑰管理模塊、密文檢索模塊、對接外部云模塊、身份認證模塊和元信息對接模塊;文件加解密模塊和密文索引模塊分別用來進行加解密操作和密文索引生成;身份認證模塊用來完成用戶身份認證和主密鑰管理,密鑰管理模塊用來完成對文件加解密密鑰的管理;密文檢索模塊用以實現對密文文件內容的檢索,對于密文檢索生成相應查詢語句的分詞和單向散列,并與云服務器端交互。元信息對接模塊主要完成文件元信息與服務器端對接的功能,主要就是把文件元信息上傳到服務器端;完成密文索引同步的功能,主要是將密文索引上傳到服務器端。服務器端會定時對文件元信息和密文索引進行備份,防止數據丟失和損壞。對接外部云模塊用于對接多種第三方云服務平臺。身份認證模塊與文件加解密模塊、密鑰管理模塊為用戶提供操作接口,以設定密文安全策略,包括獲取所述認證參數和加解密算法;在本具體實施實例中客戶端為安裝有上述模塊的應用的Android手機和Windows平臺的軟件。服務器端包括用戶管理模塊、密鑰管理模塊、密文檢索模塊、信息同步模塊、斷點續(xù)傳模塊、并發(fā)處理模塊、元信息和索引存儲模塊;服務器端的用戶管理模塊與安全組件的身份認證模塊進行對接,主要完成對用戶帳號的管理和訪問控制,包括注冊用戶、維護超級管理員用戶和普通用戶等。服務器端的密鑰管理模塊與安全組件的密鑰管理模塊對接,完成對用戶主密鑰和文件的次級密鑰的管理,存儲備份用戶的主密鑰單項散列值、使用主密鑰加密的加解密密鑰。提供接口接受用戶請求,進行密鑰恢復。服務器端的密文檢索模塊完成與安全組件的密文檢索模塊的對接,完成對明文文件的密文索引的生成以及密文索引文件的同步與檢索。服務器端的信息同步模塊與安全組件的元信息對接模塊和密文檢索模塊對接,完成文件元信息的同步功能以及密文索引的上傳下載和查詢。服務器端的斷點續(xù)傳模塊和安全組件的元信息對接模塊和密文檢索模塊對接,完成文件信息在上傳下載過程中因為網絡問題或者其他問題而導致的傳輸中斷而導致的重傳問題。服務器端的并發(fā)處理模塊針對多用戶安全組件對服務器產生的并發(fā)量而造成服務中斷的問題,處理巨量用戶請求的并發(fā)問題。服務器端的元信息和索引存儲模塊為用戶提供了巨量數據存儲的數據倉庫的存儲方法,存儲和計算支持可擴展伸縮,為服務器端數據存儲提供底層大數據支撐。在本具體實施實例中服務器為上述模塊搭建Hadoop和HBase的Linux平臺。在本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)中文件加密模塊、密鑰管理模塊、對接外部云模塊、密文檢索模塊、元信息和索引存儲模塊是其重要實現核心。如圖2所示,本發(fā)明密文存儲與密文檢索開放云服務實現了用戶操作。主要分為用戶注冊、用戶激活和修改密碼。如圖3所示,用戶注冊具體實施實例如下:1.用戶上傳用戶參數(口令+用戶名,指紋等生物特征)和密保問題和答案到服務器端。2.服務器端檢查用戶名是否存在,如果存在,返回“用戶存在”返回碼,如果不存在,則嘗試向用戶發(fā)送激活郵件,如果郵件發(fā)送失敗,則循環(huán)發(fā)送,總共發(fā)送n次,如果繼續(xù)失敗,則返回發(fā)送郵件失敗返回碼,如果發(fā)送成功,則進行下一步操作。3.郵件發(fā)送成功后,服務器新建用戶,將用戶名、密碼的單向散列(密碼經過加鹽處理)、用戶密保問題以及用戶主密鑰KEYMaster存入數據庫,等待用戶激活。如圖4,用戶激活具體實施實例如下:1.用戶收到激活郵件后,點擊郵件提供的鏈接進行用戶激活,郵件鏈接通過HTTP請求的方法向服務器發(fā)用戶激活請求,請求參數包含用戶名和用戶名的激活代碼。2.服務器接受用戶發(fā)來的參數,對其進行驗證,如果驗證通過,則修改數據庫標示為用戶為已激活,如果驗證不通過,則返回激活失敗代碼。如圖5所示,用戶修改密碼具體實施實例如下:1.用戶向服務器發(fā)送修改密碼請求,向服務器發(fā)送密保問題和答案以及新密碼。2.服務器對用戶發(fā)送的密保問題進行驗證,如果驗證失敗,則返回修改密碼失敗返回碼,如果驗證成功,將新密碼加鹽存入數據庫,返回修改密碼成功返回碼。如圖6所示,在本發(fā)明密文存儲與密文檢索開放云服務方法和系統(tǒng)的密鑰管理實現了與個人身份綁定的主密鑰和與文件綁定的加解密密鑰兩級密鑰管理方法。在本具體實施實例中密鑰管理模塊不同部分之間協同工作的關系:密鑰生成:包括主密鑰生成、加密密鑰生成、密鑰獲取。主要完成主密鑰、加密密鑰的產生和主密鑰對加密密鑰的加解密。①用戶在第一次使用該應用時注冊用戶名和密碼,由該模塊依據相應的認證參數(口令+用戶名,指紋等生物特征)生成主密鑰KEYMaster。(產生之后即調用密鑰備份模塊保存)②當文件加解密模塊請求加密密鑰KEYEncryption時,依據文件加密屬性和用戶加密方案查找相應加密密鑰KEYEncryption并用主密鑰KEYMaster解密提供給加解密模塊,如未找到則生成相應加密密鑰KEYEncryption,提供給加解密模塊并用主密鑰KEYMaster加密fencrypt(KEYEncryption,KEYMaster)(即調用密鑰備份模塊進行備份)。另外作為這個模塊的主線程,要隨機啟動,運行期間主密鑰從內存讀取,加密密鑰可以從內存緩存中讀取,或者讀取數據庫。③文件加解密模塊從服務器獲取加密后的文件加密密鑰后,利用主密鑰進行解密得到文件加解密密鑰fdecrypt(KEYEncryption,KEYMaster)。密鑰更新模塊:主要完成的是根據用戶安全組件的命令來完成密鑰的更新操作。當用戶發(fā)出更新命令時,需要輸入舊的認證參數,如口令或生物特征,以及新的認證參數,調用認證模塊,當舊的認證參數認證通過時,就用舊的主密鑰解密所有加解密密鑰,并使用新的認證參數生成新的主密鑰,并對加解密密鑰加密存儲。(調用密鑰備份模塊進行客戶端和云端的雙備份)。密鑰認證模塊:主要完成對用戶身份的認證。根據用戶的認證參數生成的主密鑰單向散列值存儲到數據庫中,并在需要驗證時計算用戶輸入的認證參數生成主密鑰單向散列值和數據庫中的單向散列值比對。密鑰備份模塊:主要完成將主密鑰單向散列值,加密密鑰備份到數據庫;并且把和加密密鑰有關的其他數據庫文件(比如加密密鑰和文件的對應關系表,用戶表等)也備份到云端。①當主密鑰產生時即刻備份到數據庫;②同樣,當加密密鑰產生后,將加密密鑰的密文做同樣的備份,同時把和加密密鑰關聯的加密密鑰和被加密文件的對應表也備份到數據庫。如圖7所示,密鑰管理模塊的獲取密鑰過程的具體實施實例如下:步驟1.判斷加解密密鑰存儲數據庫是否存在。步驟2.若存在,使用KEYMaster解密數據庫中存儲的加解密密鑰,并返回。步驟3.若不存在,則調用密鑰生成模塊,生成文件加解密密鑰,存儲在內存緩沖中。步驟4.使用主密鑰KEYMaster加密加解密密鑰,存儲在數據庫中。并調用密鑰備份模塊,將加密后的加解密密鑰返回給安全組件。如圖8所示,在本發(fā)明密文存儲與密文檢索開放云服務方法與系統(tǒng)中,安全組件向用戶開放基本文件操作接口:包括文件新增、文件刪除、文件按名字搜索、文件位置變動,文件分享。安全組件以jar包或者操作系統(tǒng)動態(tài)庫或者靜態(tài)庫等形式提供給用戶,用戶可方便地將安全組件集成到自己項目中。如圖9所示,文件加解密的框架:安全組件從服務器端獲取加解密密鑰,安全組件利用獲取的密鑰和用戶選擇的加密方法對明文進行加解密,成功后,將加解密方法、文件加解密密鑰和文件元信息存儲在服務器,將加密后的文件存儲在第三方云平臺。如圖10所示,在本具體實例中文件加密的具體流程如下:步驟1.安全組件通過用戶應用程序得到需要加密的明文及相關信息步驟2.通過抽象加解密模塊向加解密配置模塊請求查詢用戶保存的加解密算法。步驟3.加解密配置模塊訪問緩存的配置文件,如Android下的sharedpreference或者Windows應用程序的配置文件等,將查詢到的加解密算法返回給抽象加解密模塊。步驟4.通過抽象加解密模塊向密鑰管理模塊請求獲取加解密密鑰。步驟5.密鑰管理模塊訪問內存緩存中存放的加解密密鑰,使用主密鑰解密返回給抽象加解密模塊。步驟6.調用抽象加解密的具體實現接口,將明文、算法類型、加解密密鑰作為參數傳入。步驟7.具體加解密的實現可以是開源算法庫,如openssl等,或者用戶自定義的函數,對分塊的明文加密并返回。步驟8.抽象加解密模塊向上層返回加密后的密文。步驟9.將加密后的文件上傳到第三方云平臺步驟10.把文件元信息上傳到密文存儲與密文檢索開放云服務的服務器。如圖11所示,在本具體實施實例中文件解密具體解密流程如下:步驟1.安全組件接受上層用戶調用,進行文件解密,安全組件從第三方云端下載密文文件。步驟2.安全組件得到需要解密的密文,傳入抽象解密模塊。步驟3.通過抽象解密模塊請求查詢用戶保存的加解密算法。步驟4.訪問緩存的配置文件,如Android下的sharedpreference或者Windows應用程序的配置文件等,將查詢到的加解密算法返回給抽象加解密模塊。步驟5.通過抽象加解密模塊向密鑰管理模塊請求獲取解密密鑰。步驟6.訪問內存緩存中存放的解密密鑰,使用主密鑰解密后將密鑰返回。步驟7.調用抽象解密的具體實現接口,將密文、算法類型、加解密密鑰作為參數傳入。步驟8.具體解密的實現可以是開源算法庫,如openssl等,或者用戶自定義的函數,對密文解密并返回。步驟9.通過抽象解密模塊將解密的明文傳入安全組件。步驟10.安全組件從密文存儲與密文檢索開放云服務端下載文件元信息,返回給上層用戶。如圖12所示,在本發(fā)明密文存儲與密文檢索開放云服務方法實施實例中的密文索引框架,由于存儲在第三方云端的數據是以密文的方式存儲,如果想對密文文件的內容進行內容檢索,而且還不能泄露檢索的內容,需要在安全組件端建立密文索引內容,可以建立索引的文本文件的類型包括txt、pdf、word等非結構化數據。索引創(chuàng)建由lucene實現,對索引中的關鍵字加密和對索引中的實體加密采用兩種不同的加密算法,關鍵字采用SHA-1哈希算法進行單向散列加密。然后將加密的索引上傳到服務器端,存儲到指定的目錄下。安全組件的邏輯是核心模塊,它將調用加解密模塊和密鑰管理模塊的外部接口進行索引的加密,也將調用網絡對接模塊實現密文索引文件的上傳。如圖13所示,密文索引創(chuàng)建的過程具體實施實例如下:步驟1.對明文文件進行預處理,包括去除冗余字段、停用詞、標點符號等。步驟2.采用分詞系統(tǒng)進行分詞處理,得到關鍵字。步驟3.對每個關鍵字進行評分。步驟4.索引寫入磁盤前,在索引緩存區(qū)調用加解密模塊SHA-1算法加密索引中的關鍵字部分。步驟5.在內存中生成密文索引樹,創(chuàng)建索引。該索引索引元數據結構如下:字段名類型描述Index_nameText密文關鍵詞的名字file_idText文件id如圖14所示,安全組件密文索引查詢的過程具體實施實例如下:步驟1.安全組件接受用戶密文檢索所的關鍵字,然后選擇密文查詢。步驟2.根據用戶選擇,對查詢關鍵字進行加密處理即調用加解密模塊的SHA-1算法對關鍵字求哈希。步驟3.服務器接受安全組件發(fā)送的密文檢索關鍵字哈希值,根據關鍵字的哈希值,在服務器端的密文索引檢索文件id。步驟4.根據從密文索引檢索出來的文件id,從服務器端的文件元信息檢索文件元數據。步驟5.對查詢結果進行合并處理,得到文件列表。步驟6.密文存儲與密文檢索開放云服務器將查詢到的文件列表返回給安全組件。如圖15所示,安全組件密文索引刪除的過程具體實施實例如下:步驟1.安全組件接受密文索引刪除請求,發(fā)送到密文存儲與密文檢索開放云服務器端。步驟2.服務器端接受刪除索引請求,解析刪除請求。步驟3.服務器端刪除密文索引。步驟4.服務器端刪除文件元數據,刪除索引和刪除元數據是一個事務。通過本發(fā)明公開的方法和系統(tǒng),完善的解決了
背景技術:
中提到的現有技術方案的缺陷和風險,密文存儲與密文檢索開放云服務為用戶規(guī)定了統(tǒng)一調用方式,通過使用密文存儲與密文檢索開放云服務保存到第三方云端的數據全部是密文形式的,云服務提供商不能惡意的窺探用戶的數據,文件上傳過程中不易被竊聽,云服務提供商被攻陷僅損失文件密文,密文存儲與密文檢索開放云服務保存文件加密密鑰和文件密文索引,達到密文存儲與密文檢索開放云服務器端只保留文件加解密密鑰和密文索引,而不保留密文文件,第三方外部云存儲只保存加密文件,而不保存加解密密鑰,達到了密文和密鑰分離的目的,有效地提升用戶的數據安全防護和隱私保護能力,另外密文存儲與密文檢索開放云服務提供的密文檢索服務可很好的滿足了用戶對密文文件內容的內容檢索的需求。當前第1頁1 2 3