本發(fā)明是關(guān)于云存儲(chǔ)檢索技術(shù),特別是關(guān)于一種基于云存儲(chǔ)的數(shù)值型數(shù)據(jù)的密文檢索方法及裝置。
背景技術(shù):
:在當(dāng)前的主要企業(yè)應(yīng)用中,項(xiàng)目檔案通常采取云存儲(chǔ)的網(wǎng)絡(luò)應(yīng)用模式,這種模式既節(jié)省了成本,也將企業(yè)從軟硬件維護(hù)和安全防護(hù)的繁瑣管理事務(wù)中解脫出來(lái)。云存儲(chǔ)帶來(lái)的主要問(wèn)題是安全問(wèn)題,數(shù)據(jù)加密是在云存儲(chǔ)中保障數(shù)據(jù)安全性的有效手段,通常,對(duì)一個(gè)足夠安全的加密算法而言,數(shù)據(jù)在加密后,密文不再具有任何原始明文特征。因此,密文檢索就成為解決云端安全存儲(chǔ)的關(guān)鍵技術(shù)問(wèn)題。數(shù)據(jù)檢索中用的檢索方式包括字符數(shù)據(jù)的模糊檢索及數(shù)值型數(shù)據(jù)檢索,數(shù)值型數(shù)據(jù)檢索中,等值檢索在使用對(duì)稱加密的密文數(shù)據(jù)中是較為簡(jiǎn)單的,在不更換密鑰的前提下,只需再次加密數(shù)值型數(shù)據(jù),即可從數(shù)庫(kù)中快速檢索到用戶所需的數(shù)據(jù);而數(shù)值型數(shù)據(jù)的范圍檢索,需要比較密文對(duì)應(yīng)明文的數(shù)據(jù)大小,逐個(gè)解密會(huì)耗費(fèi)大量成本,在企業(yè)應(yīng)用中是不現(xiàn)實(shí)的。XQuery是一種通用的XML查詢語(yǔ)言,相當(dāng)于關(guān)系型數(shù)據(jù)庫(kù)的SQL語(yǔ)句,在項(xiàng)目檔案管理中,無(wú)論采用哪種數(shù)據(jù)庫(kù),密文檢索的關(guān)鍵都在于XQuery查詢語(yǔ)句的處理。明文的XQuery查詢語(yǔ)句在傳遞至云端后,由于數(shù)據(jù)的敏感性,企業(yè)往往不希望云端看到查詢條件參數(shù),因此,通常情況下,都需要對(duì)XQuery明文查詢進(jìn)行語(yǔ)句密文翻譯,翻譯后的XQuery語(yǔ)句仍然具有原有語(yǔ)法結(jié)構(gòu),能夠在任何XQuery引擎上直接運(yùn)行,云端在“全盲”的環(huán)境中,完成數(shù)據(jù)的密文檢索,再將密文數(shù)據(jù)傳輸至客戶端,在客戶端完成密文的解密和明文查詢過(guò)程。XQuery檢索類似于SQL檢索語(yǔ)句,因?yàn)殛P(guān)系型數(shù)據(jù)的密文檢索方法幾乎都可以應(yīng)用于XQuery檢索中,所以XQuery查詢會(huì)遇到關(guān)系型數(shù)據(jù)的SQL語(yǔ)言查詢的同樣問(wèn)題。密文檢索性能和加密安全性會(huì)成為一對(duì)矛盾,在一定程度上,如果需要提高密文檢索性能,就需要犧牲一定的安全性;而如果需要保障安全性,通常就無(wú)法獲得較高的密文檢索性能。如圖1所示,項(xiàng)目檔案數(shù)據(jù)如果直接交給云端存儲(chǔ),其檢索速度等同于明文檢索,云計(jì)算提供了超強(qiáng)的計(jì)算能力和存儲(chǔ)能力,因此,其檢索速度甚至是強(qiáng)于企業(yè)的本地檢索的,但這樣的存儲(chǔ)也是最不安全的。相反,如果明文數(shù)據(jù)在加密后,交給云端存儲(chǔ),云端的項(xiàng)目檔案完全以密文形式存儲(chǔ),加密粒度越粗,其安全性越高,在對(duì)安全性要求較為極端的情況下,對(duì)整個(gè)明文數(shù)據(jù)進(jìn)行加密,將會(huì)獲得很高的安全性,但在這種情況下,由于所有數(shù)據(jù)特征都被加密到密文中,密文檢索幾乎是完全不可行的。數(shù)值型數(shù)據(jù)在加密后,固有屬性會(huì)被加密分散和擾亂,數(shù)據(jù)的大小、相似、有序等特征就完全不存在,反之,如果這些特征還存在,就證明此種加密算法是不安全的。在采用可以用數(shù)學(xué)邏輯證明安全的加密算法基礎(chǔ)上,數(shù)值型數(shù)據(jù)不再具有原始明文的任何特征,范圍檢索也就成為了云存儲(chǔ)密文檢索的難點(diǎn)。如圖2所示,在密文數(shù)據(jù)庫(kù)檢索中,等值檢索問(wèn)題可以得到較好的解決。當(dāng)用戶檢索Y>p時(shí),如果將相應(yīng)的范圍檢索條件轉(zhuǎn)換為等值檢索條件Y=p,通過(guò)設(shè)計(jì)XQuery查詢語(yǔ)言翻譯器,可以將明文條件轉(zhuǎn)換為密文檢索條件,而等值檢索可以快速在密文數(shù)據(jù)庫(kù)中找到相應(yīng)的數(shù)據(jù)記錄,只需將此記錄傳至客戶端,用戶再使用自己的密鑰解密此密文數(shù)據(jù),就可以得到對(duì)應(yīng)明文。在實(shí)施時(shí),可以根據(jù)數(shù)據(jù)敏感度,將數(shù)據(jù)選擇性的加密,有些數(shù)據(jù)可以直接明文存儲(chǔ),就可以獲得更好的密文檢索效率。圖2所示的工作流程中,范圍檢索幾乎是不可行的,因?yàn)閅>p在經(jīng)過(guò)XQuery語(yǔ)言翻譯后,得到的檢索條件假設(shè)將變?yōu)閅1>p1,加密改變了原始明文的大小特征,Y1>p1檢索出的密文,只能符合大于p1的條件,解密后,這些明文卻不符合大于p,這樣的范圍檢索,在云存儲(chǔ)結(jié)構(gòu)中是完全無(wú)效的。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供一種基于云存儲(chǔ)的數(shù)值型數(shù)據(jù)的密文檢索方法及裝置,以在保障數(shù)據(jù)安全的基礎(chǔ)上提高密文檢索效率。為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供一種基于云存儲(chǔ)的數(shù)值型數(shù)據(jù)的密文檢索方法,包括:根據(jù)待檢索OAIS數(shù)據(jù)包的密鑰生成密鑰序列,并將所述密鑰序列拆分為設(shè)定長(zhǎng)度的多個(gè)序列數(shù)值;將待檢索OAIS數(shù)據(jù)包的明文查詢語(yǔ)句翻譯為對(duì)應(yīng)的密文查詢語(yǔ)句;所述明文查詢語(yǔ)句中包含用戶輸入的明文檢索條件,所述密文查詢語(yǔ)句中包括由明文檢索條件得到的密文檢索條件;向云端服務(wù)器提交所述密文檢索條件對(duì)應(yīng)的等值檢索條件進(jìn)行檢索,得到檢索結(jié)果;根據(jù)所述檢索結(jié)果在數(shù)據(jù)庫(kù)中的標(biāo)識(shí),映射得到對(duì)應(yīng)的序列數(shù)值的標(biāo)識(shí);從多個(gè)序列數(shù)值中提取大于或小于映射得到的序列數(shù)值的所有序列數(shù)值的對(duì)應(yīng)標(biāo)識(shí),得到標(biāo)識(shí)集合;根據(jù)所述標(biāo)識(shí)集合從所述云端服務(wù)器獲取對(duì)應(yīng)的數(shù)據(jù)。一實(shí)施例中,該密文檢索方法還包括:獲取用戶輸入所述待檢索OAIS數(shù)據(jù)包的密鑰。一實(shí)施例中,該密文檢索方法還包括:獲取用戶輸入的所述明文檢索條件。一實(shí)施例中,該密文檢索方法還包括:根據(jù)所述多個(gè)序列數(shù)值大小順序及所述數(shù)據(jù)庫(kù)中數(shù)據(jù)的大小順序建立所述多個(gè)序列數(shù)值與所述數(shù)據(jù)庫(kù)中數(shù)據(jù)的映射關(guān)系。一實(shí)施例中,根據(jù)待檢索OAIS數(shù)據(jù)包的密鑰生成密鑰序列,包括:利用哈希算法,對(duì)所述密鑰進(jìn)行多次哈希和/或異或處理,生成密鑰序列。一實(shí)施例中,如果根據(jù)等值檢索條件進(jìn)行檢索時(shí)得不到檢索結(jié)果,在不改變密文檢索結(jié)果的條件下改變所述等值檢索條件的邊界值重新進(jìn)行檢索。一實(shí)施例中,該密文檢索方法還包括:對(duì)獲取的所述密文數(shù)據(jù)進(jìn)行解密,得到明文數(shù)據(jù)。為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例還提供一種基于云存儲(chǔ)的數(shù)值型數(shù)據(jù)的密文檢索裝置,包括:序列生成單元,用于根據(jù)待檢索OAIS數(shù)據(jù)包的密鑰生成密鑰序列,并將所述密鑰序列拆分為設(shè)定長(zhǎng)度的多個(gè)序列數(shù)值;語(yǔ)句翻譯單元,用于將待檢索OAIS數(shù)據(jù)包的明文查詢語(yǔ)句翻譯為對(duì)應(yīng)的密文查詢語(yǔ)句;所述明文查詢語(yǔ)句中包含用戶輸入的明文檢索條件,所述密文查詢語(yǔ)句中包括由明文檢索條件得到的密文檢索條件;檢索單元,用于向云端服務(wù)器提交所述密文檢索條件對(duì)應(yīng)的等值檢索條件進(jìn)行檢索,得到檢索結(jié)果;標(biāo)識(shí)映射單元,用于根據(jù)所述檢索結(jié)果在數(shù)據(jù)庫(kù)中的標(biāo)識(shí),映射得到對(duì)應(yīng)的序列數(shù)值的標(biāo)識(shí);標(biāo)識(shí)集合生成單元,用于從多個(gè)序列數(shù)值中提取大于或小于映射得到的序列數(shù)值的所有序列數(shù)值的對(duì)應(yīng)標(biāo)識(shí),得到標(biāo)識(shí)集合;數(shù)據(jù)獲取單元,用于根據(jù)所述標(biāo)識(shí)集合從所述云端服務(wù)器獲取對(duì)應(yīng)的數(shù)據(jù)。一實(shí)施例中,該密文檢索裝置還包括:密鑰獲取單元,用于獲取用戶輸入所述待檢索OAIS數(shù)據(jù)包的密鑰。一實(shí)施例中,該密文檢索裝置還包括:檢索條件獲取單元,用于獲取用戶輸入的所述明文檢索條件。一實(shí)施例中,該密文檢索裝置還包括:映射建立單元,用于根據(jù)所述多個(gè)序列數(shù)值大小順序及所述數(shù)據(jù)庫(kù)中數(shù)據(jù)的大小順序建立所述多個(gè)序列數(shù)值與所述數(shù)據(jù)庫(kù)中數(shù)據(jù)的映射關(guān)系。一實(shí)施例中,所述序列生成單元具體用于:利用哈希算法,對(duì)所述密鑰進(jìn)行多次哈希和/或異或處理,生成密鑰序列。一實(shí)施例中,如果根據(jù)等值檢索條件進(jìn)行檢索時(shí)得不到檢索結(jié)果,所述檢索單元在不改變密文檢索結(jié)果的條件下改變所述等值檢索條件的邊界值重新進(jìn)行檢索。一實(shí)施例中,該密文檢索裝置還包括:解密單元,用于對(duì)獲取的所述密文數(shù)據(jù)進(jìn)行解密,得到明文數(shù)據(jù)。本發(fā)明可以在保障數(shù)據(jù)安全的基礎(chǔ)上提高密文檢索效率。附圖說(shuō)明為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為現(xiàn)有技術(shù)中云存儲(chǔ)中密文檢索的基本結(jié)構(gòu)示意圖;圖2為現(xiàn)有技術(shù)中數(shù)值型數(shù)據(jù)檢索的流程圖;圖3為本發(fā)明實(shí)施例基于云存儲(chǔ)的數(shù)值型數(shù)據(jù)的密文檢索方法流程圖;圖4為本發(fā)明另一實(shí)施例數(shù)值型數(shù)據(jù)的密文檢索流程圖;圖5為本發(fā)明實(shí)施例的密鑰序列產(chǎn)生流程圖;圖6為本發(fā)明實(shí)施例的S序列的產(chǎn)生流程圖;圖7為本發(fā)明實(shí)施例基于云存儲(chǔ)的數(shù)值型數(shù)據(jù)的密文檢索裝置的結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。對(duì)于數(shù)值型數(shù)據(jù)密文檢索,保持明文的大小特征,會(huì)破壞密文的安全性,但如果祛除原始明文的大小,又會(huì)使密文檢索難以實(shí)施。因此,在密文檢索中,不能簡(jiǎn)單地僅從明文數(shù)據(jù)特征入手。在數(shù)據(jù)加密中,已被數(shù)學(xué)證明安全的加密算法的安全性取決于密鑰的安全性。所以,在云存儲(chǔ)中,如果能通過(guò)密鑰控制明文特征的保護(hù),就可以在密文檢索時(shí)通過(guò)密鑰解密原始明文特征,再通過(guò)特征篩選數(shù)據(jù)庫(kù)記錄,在數(shù)據(jù)存儲(chǔ)時(shí),由于沒(méi)有啟用密鑰進(jìn)行解密,這些特征仍然處于密文狀態(tài),云端是無(wú)法獲取到的,就可以在安全性和密文檢索效率間取得較好的權(quán)衡。基于此,本發(fā)明提供了一種基于云存儲(chǔ)的數(shù)值型數(shù)據(jù)的密文檢索方法及裝置。圖3為本發(fā)明實(shí)施例基于云存儲(chǔ)的數(shù)值型數(shù)據(jù)的密文檢索方法流程圖,如圖1所示,該密文檢索方法包括:S301:根據(jù)待檢索OAIS數(shù)據(jù)包的密鑰生成密鑰序列,并將所述密鑰序列拆分為設(shè)定長(zhǎng)度的多個(gè)序列數(shù)值;S302:將待檢索OAIS數(shù)據(jù)包的明文查詢語(yǔ)句翻譯為對(duì)應(yīng)的密文查詢語(yǔ)句;所述明文查詢語(yǔ)句中包含用戶輸入的明文檢索條件,所述密文查詢語(yǔ)句中包括由明文檢索條件得到的密文檢索條件;S303:向云端服務(wù)器提交所述密文檢索條件對(duì)應(yīng)的等值檢索條件進(jìn)行檢索,得到檢索結(jié)果;S304:根據(jù)所述檢索結(jié)果在數(shù)據(jù)庫(kù)中的標(biāo)識(shí),映射得到對(duì)應(yīng)的序列數(shù)值的標(biāo)識(shí);S305:從多個(gè)序列數(shù)值中提取大于或小于序列數(shù)值的所有序列數(shù)值的對(duì)應(yīng)標(biāo)識(shí),得到標(biāo)識(shí)集合;S306:根據(jù)所述標(biāo)識(shí)集合從所述云端服務(wù)器獲取對(duì)應(yīng)的數(shù)據(jù)。由圖1所示的流程可知,本發(fā)明首先根據(jù)待檢索OAIS數(shù)據(jù)包的密鑰得到多個(gè)序列數(shù)值,然后根據(jù)翻譯得到的密文查詢語(yǔ)句中的密文檢索條件進(jìn)行等值檢索,通過(guò)檢索結(jié)果在數(shù)據(jù)庫(kù)中的標(biāo)識(shí)映射得到對(duì)應(yīng)的序列數(shù)值的標(biāo)識(shí),進(jìn)而得到標(biāo)識(shí)集合,最后根據(jù)標(biāo)識(shí)集合從云端服務(wù)器獲取對(duì)應(yīng)的數(shù)據(jù)。通過(guò)該方法,可以在保障數(shù)據(jù)安全的基礎(chǔ)上提高密文檢索效率。圖3所示的密文檢索方法的主體可以為PC客戶端,也可以為移動(dòng)客戶端,例如手機(jī),PDA等,本發(fā)明僅以PC客戶端為例進(jìn)行說(shuō)明。本申請(qǐng)中,在生成密鑰序列之前,需要獲取用戶輸入的待檢索OAIS數(shù)據(jù)包的密鑰,用戶輸入密鑰的方法有很多。一實(shí)施例中,用戶可以通過(guò)PC客戶端的USB接口連接密鑰KEY,向PC客戶端提供密鑰。根據(jù)待檢索OAIS數(shù)據(jù)包的密鑰生成密鑰序列時(shí),可以選擇任意一種哈希算法,對(duì)密鑰進(jìn)行多次哈希和/或異或處理,生成密鑰序列。密鑰序列的長(zhǎng)度可以根據(jù)云端服務(wù)器存儲(chǔ)的數(shù)據(jù)量的大小確定。得到密鑰序列后,可以將該密鑰序列拆分為設(shè)定長(zhǎng)度的多個(gè)序列數(shù)值,該設(shè)定長(zhǎng)度取決于數(shù)據(jù)庫(kù)中的數(shù)據(jù)量大小。得到多個(gè)序列數(shù)值之后,需要這些序列數(shù)值大小的順序與云端服務(wù)器中的數(shù)據(jù)庫(kù)中數(shù)值大小順序一致,根據(jù)多個(gè)序列數(shù)值大小順序及數(shù)據(jù)庫(kù)中數(shù)據(jù)的大小順序建立多個(gè)序列數(shù)值與數(shù)據(jù)庫(kù)中數(shù)據(jù)的映射關(guān)系,以此支持范圍檢索。S302具體實(shí)施時(shí),可以通過(guò)XQuery語(yǔ)句翻譯器將待檢索OAIS數(shù)據(jù)包的明文查詢語(yǔ)句翻譯為對(duì)應(yīng)的密文查詢語(yǔ)句。明文查詢語(yǔ)句中包含用戶輸入的明文檢索條件,密文查詢語(yǔ)句中包括由明文查詢語(yǔ)句中的明文檢索條件翻譯得到的密文檢索條件。一實(shí)施例中,在S302之前,PC客戶端需要先獲取用戶輸入的明文檢索條件。假設(shè)檢索范圍(明文)為Y>p,進(jìn)行等值檢索的等值檢索條件為Y=p,PC客戶端可以向云端服務(wù)器等值檢索條件Y=p進(jìn)行等值檢索以得到檢索結(jié)果。如果得到檢索結(jié)果,可以根據(jù)該檢索結(jié)果在數(shù)據(jù)庫(kù)中找到對(duì)應(yīng)數(shù)據(jù)的標(biāo)識(shí)?;谏鲜龆鄠€(gè)序列數(shù)值與數(shù)據(jù)庫(kù)中數(shù)據(jù)的映射關(guān)系,可以在多個(gè)序列數(shù)值中找到對(duì)應(yīng)的序列數(shù)值的標(biāo)識(shí)ID0。從多個(gè)序列數(shù)值中提取大于或小于找到的序列數(shù)值的所有序列數(shù)值的對(duì)應(yīng)的標(biāo)識(shí)ID,得到標(biāo)識(shí)集合{ID|ID>ID1}。根據(jù)該標(biāo)識(shí)集合,PC客戶端可以從云端服務(wù)器獲取對(duì)應(yīng)的數(shù)據(jù),完成檢索。PC客戶端可以從云端服務(wù)器檢索獲取的數(shù)據(jù)可以為明文數(shù)據(jù)或者密文數(shù)據(jù)。如果檢索獲取的數(shù)據(jù)為密文數(shù)據(jù),還需要對(duì)獲取的密文數(shù)據(jù)進(jìn)行解密,得到明文數(shù)據(jù)。如果根據(jù)等值檢索條件進(jìn)行等值檢索時(shí)得不到檢索結(jié)果,S305中就會(huì)返回空的標(biāo)識(shí)集合,無(wú)法完成檢索。因?yàn)榈戎禉z索是通過(guò)直接加密的方式在云端服務(wù)器的數(shù)據(jù)庫(kù)中尋找對(duì)應(yīng)的記錄,但范圍檢索條件的數(shù)值未必會(huì)在數(shù)據(jù)庫(kù)中出現(xiàn)過(guò),比如在學(xué)生表student中查詢所有大于18歲的學(xué)生,那么檢索條件可以描述為age>18,如果在學(xué)生表中,沒(méi)有任何一個(gè)學(xué)生的年齡等于18歲,那么進(jìn)行等值檢索時(shí)得不到檢索結(jié)果,S305中就會(huì)返回空的標(biāo)識(shí)集合。為了解決上述問(wèn)題,可以在不改變密文檢索結(jié)果的條件下通過(guò)迭代的方式改變所述等值檢索條件的邊界值重新進(jìn)行等值檢索,可以采用逼近算法改變所述等值檢索條件的邊界值重新。具體地,可以找尋檢索結(jié)果相同的數(shù)據(jù)庫(kù)記錄代替作為等值檢索的邊界值,例如學(xué)生表student中雖然沒(méi)有任何一個(gè)學(xué)生年齡是18歲的,但是有的學(xué)生年齡是19歲,那么age>18就和age≥19的檢索結(jié)果相同(向上取整數(shù)),或者向下取整數(shù),age>18就和age>17的檢索結(jié)果相同,用這個(gè)最相近的數(shù)值取代原等值檢索。本發(fā)明中,通過(guò)基于序列數(shù)值大小的順序進(jìn)行劃分方式,不需要在客戶端存儲(chǔ)大量數(shù)據(jù),也不需要在明文和云端密文數(shù)據(jù)之間建立對(duì)照關(guān)系,而是通過(guò)密鑰臨時(shí)產(chǎn)生大量序列數(shù)值,從而和密文數(shù)據(jù)之間建立大小順序映射關(guān)系。在數(shù)據(jù)庫(kù)中數(shù)據(jù)量巨大時(shí),密鑰序列的數(shù)量會(huì)隨之增大,那么隨著數(shù)據(jù)量的增多,密鑰序列的產(chǎn)生時(shí)間開銷會(huì)越來(lái)越大。此時(shí),通過(guò)客戶端的本地存儲(chǔ)可以預(yù)先存儲(chǔ)這些密鑰序列,按照密鑰序列的產(chǎn)生算法,通常這些密鑰序列的數(shù)據(jù)量非常小,并不會(huì)占據(jù)很大的存儲(chǔ)空間,普通的個(gè)人計(jì)算機(jī)存儲(chǔ)已完全足夠。一實(shí)施例中,S301、S303至S305可以通過(guò)基于數(shù)值順序置換策略的數(shù)據(jù)庫(kù)密文數(shù)值范圍劃分器(DatabaseCiphertextNumericalRangeClassifier,DCNRC)來(lái)實(shí)現(xiàn)。在DCNRC中,密鑰可以散列為多個(gè)序列數(shù)值,根據(jù)這一系列的序列數(shù)值分布,重新排列數(shù)據(jù)庫(kù)中對(duì)應(yīng)的密文數(shù)據(jù),在密文檢索執(zhí)行時(shí),首先執(zhí)行范圍檢索對(duì)應(yīng)的等值檢索,通過(guò)順序置換策略確定臨界值在密鑰散列中的對(duì)應(yīng)數(shù)值,進(jìn)而由DCNRC確定要從數(shù)據(jù)庫(kù)中取回記錄的范圍區(qū)域,進(jìn)一步判斷所需提取的密文數(shù)據(jù)項(xiàng),這種方式避免了不必要的數(shù)據(jù)傳輸和加密/解密冗余,也大大縮短了數(shù)據(jù)傳輸數(shù)量和數(shù)據(jù)加密/解密的時(shí)間。下面結(jié)合圖4詳細(xì)說(shuō)明如何采用DCNRC進(jìn)行數(shù)據(jù)庫(kù)的密文檢索,如圖4所示,包括如下步驟:1:客戶端提交檢索請(qǐng)求,設(shè)檢索條件為Y>p;2:由DCNRC判斷SQL檢索條件為范圍檢索,則先執(zhí)行對(duì)應(yīng)條件的等值檢索;3:SQL語(yǔ)句翻譯器負(fù)責(zé)將明文SQL語(yǔ)句轉(zhuǎn)化為對(duì)應(yīng)的密文SQL語(yǔ)句,在密文數(shù)據(jù)庫(kù)中直接執(zhí)行SQL語(yǔ)句進(jìn)行檢索:SELECTIDFROMPaperWhereY’=c;4:將檢索結(jié)果返回到DCNRC;5:DCNRC根據(jù)檢索結(jié)果的ID,判斷明文數(shù)據(jù)p在密鑰散列中的對(duì)應(yīng)值,進(jìn)而在密文數(shù)據(jù)庫(kù)中,劃定屬于{Records|Y>p}的記錄范圍;6:根據(jù)所劃定的數(shù)據(jù)庫(kù)范圍,返回?cái)?shù)據(jù)庫(kù)密文結(jié)果;7:若檢索結(jié)果中包含敏感字段,則將密文解密;若檢索結(jié)果中不包含敏感字段,則直接返回檢索結(jié)果。上述密鑰序列可以稱為基于密鑰散列的序列(SequenceBasedKeyHash,SBKH),其負(fù)責(zé)為DCNRC的順序置換提供數(shù)值參照。SBKH的產(chǎn)生過(guò)程在PC客戶端插入密鑰時(shí)完成,通過(guò)序列產(chǎn)生算法可產(chǎn)生任意長(zhǎng)度的密鑰序列,根據(jù)實(shí)際需求,密鑰序列的長(zhǎng)度由數(shù)據(jù)庫(kù)中的密文數(shù)量決定,序列產(chǎn)生后,將序列拆分為多個(gè)數(shù)值,通過(guò)保持這些拆分的數(shù)值與數(shù)據(jù)庫(kù)明文大小順序同分布,能夠方便地支持范圍檢索,且在檢索過(guò)程中不需解密任何數(shù)據(jù),可有效提高密文檢索效率。設(shè)密鑰為K,產(chǎn)生密鑰序列的算法如下:H1=SHA256(K)H2=SHA256(H1)H3=SHA256(H2)......Hn=SHA256(Hn-1)H1⊕H2=S12H2⊕H3=S23H3⊕H4=S34......Hn-1⊕Hn=Sn-1,n]]>由密鑰散列產(chǎn)生密鑰序列的過(guò)程如圖5所示。設(shè)密鑰為Key=CE74C74E4B912351801297EED0B240A3,則密鑰SHA256哈希值為:H1=6587C9AF66CC49A2B8B3D567F1B41E1941153746E599F798EEC3FF91383F5ECF;又有Hi+1=SHA256(Hi),所以:H2=87A2B81DA90129854622C2CE21ECE615D37ED86B421DA957E69F2E0140A454AB;H3=677C976CB061021B76669DFB23FC43D956D88B192E5F4601DAB7A28CB6C2FCA4;……而又有Hi⊕Hj=Sij,因此:S12=H1⊕H2=E22571B2CFCD6027FE9117A9D058F80C926BEF2DA7845ECF085CD190789B0A64;S23=H2⊕H3=E0DE2F7119602B9E30445F350210A5CC85A653726C42EF563C288C8DF666A80F;……設(shè)數(shù)據(jù)表中包含100萬(wàn)條記錄,而219<106<220,則每條記錄的敏感字段可由20個(gè)二進(jìn)制位標(biāo)識(shí),SBKH中每個(gè)S序列包含256個(gè)二進(jìn)制位,因此,需產(chǎn)生(20×106)/256≈7.81×104個(gè)S序列。在實(shí)際應(yīng)用中,如果數(shù)據(jù)記錄的數(shù)量突然增加,可能會(huì)造成當(dāng)前序列數(shù)量不夠用,就必須重新產(chǎn)生序列,并更新數(shù)據(jù)庫(kù)索引,如果不希望數(shù)據(jù)庫(kù)的索引頻繁地更新,則可將SBKH中序列的數(shù)量盡量設(shè)的偏大一些。對(duì)于序列{S12,S23,S34,……,Sn-1,n},所產(chǎn)生的每個(gè)數(shù)值由20個(gè)二進(jìn)制位組成,產(chǎn)生數(shù)值的過(guò)程如圖6所示。基于與上述密文檢索方法相同的發(fā)明構(gòu)思,本申請(qǐng)?zhí)峁┮环N密文檢索裝置,如下面實(shí)施例所述。由于該密文檢索裝置解決問(wèn)題的原理與密文檢索方法相似,因此該密文檢索裝置的實(shí)施可以參見密文檢索方法的實(shí)施,重復(fù)之處不再贅述。圖7為本發(fā)明實(shí)施例中基于云存儲(chǔ)的數(shù)值型數(shù)據(jù)的密文檢索裝置的結(jié)構(gòu)示意圖,如圖7所示,該密文檢索裝置包括:序列生成單元701,用于根據(jù)待檢索OAIS數(shù)據(jù)包的密鑰生成密鑰序列,并將所述密鑰序列拆分為設(shè)定長(zhǎng)度的多個(gè)序列數(shù)值;語(yǔ)句翻譯單元702,用于將待檢索OAIS數(shù)據(jù)包的明文查詢語(yǔ)句翻譯為對(duì)應(yīng)的密文查詢語(yǔ)句;所述明文查詢語(yǔ)句中包含用戶輸入的明文檢索條件,所述密文查詢語(yǔ)句中包括由明文檢索條件得到的密文檢索條件;檢索單元703,用于向云端服務(wù)器提交所述密文檢索條件對(duì)應(yīng)的等值檢索條件進(jìn)行檢索,得到檢索結(jié)果;標(biāo)識(shí)映射單元704,用于根據(jù)所述檢索結(jié)果在數(shù)據(jù)庫(kù)中的標(biāo)識(shí),映射得到對(duì)應(yīng)的序列數(shù)值的標(biāo)識(shí);標(biāo)識(shí)集合生成單元705,用于從所述多個(gè)序列數(shù)值中提取大于或小于映射得到的所述序列數(shù)值的所有序列數(shù)值的對(duì)應(yīng)的標(biāo)識(shí),得到標(biāo)識(shí)集合;數(shù)據(jù)獲取單元706,用于根據(jù)所述標(biāo)識(shí)集合從所述云端服務(wù)器獲取對(duì)應(yīng)的數(shù)據(jù)。一實(shí)施例中,該密文檢索裝置還包括:密鑰獲取單元,用于獲取用戶輸入所述待檢索OAIS數(shù)據(jù)包的密鑰。一實(shí)施例中,該密文檢索裝置還包括:檢索條件獲取單元,用于獲取用戶輸入的所述明文檢索條件。一實(shí)施例中,該密文檢索裝置還包括:映射建立單元,用于根據(jù)所述多個(gè)序列數(shù)值大小順序及所述數(shù)據(jù)庫(kù)中數(shù)據(jù)的大小順序建立所述多個(gè)序列數(shù)值與所述數(shù)據(jù)庫(kù)中數(shù)據(jù)的映射關(guān)系。一實(shí)施例中,所述序列生成單元具體用于:利用哈希算法,對(duì)所述密鑰進(jìn)行多次哈希和/或異或處理,生成密鑰序列。一實(shí)施例中,如果根據(jù)等值檢索條件進(jìn)行檢索時(shí)得不到檢索結(jié)果,所述檢索單元在不改變密文檢索結(jié)果的條件下改變所述等值檢索條件的邊界值重新進(jìn)行檢索。一實(shí)施例中,該密文檢索裝置還包括:解密單元,用于對(duì)獲取的所述密文數(shù)據(jù)進(jìn)行解密,得到明文數(shù)據(jù)。通過(guò)本發(fā)明,可以在保障數(shù)據(jù)安全的基礎(chǔ)上提高密文檢索效率。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。本發(fā)明中應(yīng)用了具體實(shí)施例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。當(dāng)前第1頁(yè)1 2 3