本申請涉及頻率隱藏保序加密。
背景技術(shù):
::加密的數(shù)據(jù)庫在云平臺和/或數(shù)據(jù)庫即服務(wù)(database-as-a-service,daas)設(shè)置中提供了數(shù)據(jù)保護(安全性)。在加密的數(shù)據(jù)庫中,數(shù)據(jù)(明文)可在客戶端處被加密以提供加密的數(shù)據(jù)(密文),該密文可被提供給數(shù)據(jù)庫以便存儲。在一些示例中,第三方提供并維護數(shù)據(jù)庫。也就是說,數(shù)據(jù)庫被外包給第三方。例如,客戶端利用一個或多個加密密鑰對數(shù)據(jù)加密以提供加密數(shù)據(jù),客戶端將該加密數(shù)據(jù)發(fā)送到第三方以便存儲在數(shù)據(jù)庫中。外包數(shù)據(jù)庫為客戶端提供了高效的資源管理和低維護成本,但將外包的數(shù)據(jù)(客戶端數(shù)據(jù))暴露給了服務(wù)提供者(提供數(shù)據(jù)庫的第三方及其代理)。例如,要在加密數(shù)據(jù)上執(zhí)行的不同查詢操作要求不同級別的加密,其中一些沒有其他那么安全。另外,在加密數(shù)據(jù)上執(zhí)行的查詢可將信息泄露給第三方(例如,訪問模式)服務(wù)提供者,這可被用在密碼分析中。技術(shù)實現(xiàn)要素:本公開的實現(xiàn)方式包括用于要在服務(wù)器上的數(shù)據(jù)庫中存儲的數(shù)據(jù)的頻率隱藏保序加密(order-preservingencryption,ope)的由計算機實現(xiàn)的方法。實現(xiàn)方式包括以下動作:在客戶端側(cè)計算設(shè)備處接收輸入集合,該輸入集合包括要被加密以提供加密值的明文值,確定該明文值是否被存儲在由客戶端側(cè)計算設(shè)備存儲的搜索樹中,如果明文值未被存儲在搜索樹中,則利用明文值的確定性加密提供加密值,而如果明文值被存儲在搜索樹中,則利用明文值的隨機化加密提供加密值,更新搜索樹以包括節(jié)點,該節(jié)點包括該明文值和該加密值,并且將加密值發(fā)送到服務(wù)器側(cè)計算設(shè)備以便將加密值存儲在數(shù)據(jù)庫中。此方面的其他實現(xiàn)方式包括相應(yīng)系統(tǒng)、裝置和編碼在計算機存儲設(shè)備上的被配置為執(zhí)行這些方法的動作的計算機程序。這些和其他實現(xiàn)方式可各自可選地包括以下特征中的一個或多個:確定明文值是否被存儲在搜索樹中包括將明文值與搜索樹的各個節(jié)點中的一個或多個明文值相比較,并且基于明文值是否等于各個節(jié)點的明文值來執(zhí)行搜索樹的二元遍歷;搜索樹的二元遍歷是基于要求第一方向上的遍歷的第一硬幣值和要求第二方向上的遍歷的第二硬幣值執(zhí)行的,硬幣值是隨機選擇的;動作還包括確定在搜索樹中已實現(xiàn)了閾值深度,并且作為響應(yīng),重平衡搜索樹;動作還包括壓縮搜索樹以便存儲在客戶端側(cè)計算設(shè)備中;明文值是利用保序加密來加密的;并且動作還包括由客戶端側(cè)計算設(shè)備從服務(wù)器側(cè)計算設(shè)備接收加密值,遍歷搜索樹以基于加密值從搜索樹中的多個節(jié)點中選擇節(jié)點,并且從該節(jié)點取回明文值。本公開還提供了一種計算機可讀存儲介質(zhì),其耦合到一個或多個處理器并且其上存儲有指令,這些指令當被該一個或多個處理器執(zhí)行時使得該一個或多個處理器根據(jù)本文提供的方法的實現(xiàn)方式執(zhí)行操作。本公開還提供了一種用于實現(xiàn)本文提供的方法的系統(tǒng)。該系統(tǒng)包括一個或多個處理器,和耦合到該一個或多個處理器的計算機可讀存儲介質(zhì),其上存儲有指令,這些指令當被該一個或多個處理器執(zhí)行時使得該一個或多個處理器根據(jù)本文提供的方法的實現(xiàn)方式執(zhí)行操作。要明白,根據(jù)本公開的方法可包括本文描述的方面和特征的任何組合。也就是說,根據(jù)本公開的方法不限于本文具體描述的方面和特征的組合,而是也包括提供的方面和特征的任何組合。本公開的一個或多個實現(xiàn)方式的細節(jié)在附圖和下面的描述中記載。本公開的其他特征和優(yōu)點將從描述和附圖以及從權(quán)利要求中清楚顯現(xiàn)。附圖說明圖1描繪了根據(jù)本公開的實現(xiàn)方式的示例高級別體系結(jié)構(gòu)。圖2a-2d描繪了根據(jù)本公開的實現(xiàn)方式的用于提供搜索樹的示例進展。圖3描繪了根據(jù)本公開的實現(xiàn)方式的用于示例序列的示例搜索樹。圖4描繪了根據(jù)本公開的實現(xiàn)方式可執(zhí)行的示例過程。圖5是可用于執(zhí)行本公開的實現(xiàn)方式的示例計算機系統(tǒng)的示意圖示。各幅圖中的相似附圖標記指示相似的元素。具體實施方式本公開的實現(xiàn)方式概括而言針對的是用于對要在服務(wù)器上的數(shù)據(jù)庫中存儲的數(shù)據(jù)加密的頻率隱藏保序加密(frequency-hidingorderpreservingencryption,fh-ope)。更具體而言,本公開的實現(xiàn)方式包括以下動作:接收輸入集合,該輸入集合包括要被加密以提供加密值的明文值;確定該明文值是否被存儲在由客戶端側(cè)計算設(shè)備存儲的搜索樹中,如果明文值未被存儲在搜索樹中,則利用明文值的確定性加密提供加密值,而如果明文值被存儲在搜索樹中,則利用明文值的隨機化加密提供加密值,并且更新搜索樹以包括一節(jié)點,該節(jié)點包括該明文值和該加密值。這樣,明文值在搜索樹中的第一次出現(xiàn)導(dǎo)致對明文值的確定性保序加密,并且明文值的后續(xù)出現(xiàn)導(dǎo)致對明文值的隨機化保序加密。ope使得數(shù)據(jù)能夠被加密,同時也使能了加密數(shù)據(jù)上的高效范圍查詢。ope的性能和功能使得ope例如適合于云計算場景中的數(shù)據(jù)外包。然而,關(guān)于ope的安全性,仍存在一些問題。如本文更詳細論述的,本公開的fh-ope相對于傳統(tǒng)ope提供了增強的安全性。根據(jù)本公開的實現(xiàn)方式,如本文更詳細描述的,密文(加密數(shù)據(jù))被隨機化以隱藏明文(未加密數(shù)據(jù))的頻率。本公開的實現(xiàn)方式包括相對較小的客戶端側(cè)數(shù)據(jù)存儲大小(例如,明文大小的1/15)。因此,本公開的實現(xiàn)方式使能了大型加密數(shù)據(jù)集合的安全外包。在一些示例中,本公開的實現(xiàn)方式以更大的數(shù)據(jù)集合提供了更高的安全性。圖1描繪了根據(jù)本公開的實現(xiàn)方式的示例高級別體系結(jié)構(gòu)100。高級別體系結(jié)構(gòu)100包括計算設(shè)備102(例如,客戶端側(cè))、服務(wù)器系統(tǒng)104和網(wǎng)絡(luò)106。在一些示例中,計算設(shè)備102和服務(wù)器系統(tǒng)104通過網(wǎng)絡(luò)106通信。在一些示例中,計算設(shè)備102可通過一個或多個網(wǎng)絡(luò)(例如,包括網(wǎng)絡(luò)106)與服務(wù)器系統(tǒng)104通信。在一些示例中,計算設(shè)備102可包括任何適當類型的計算設(shè)備,例如桌面型計算機、膝上型計算機、手持式計算機、平板計算機、個人數(shù)字助理(personaldigitalassistant,pda)、蜂窩電話、網(wǎng)絡(luò)家電、相機、智能電話、增強型通用封包無線服務(wù)(enhancedgeneralpacketradioservice,egprs)移動電話、媒體播放器、導(dǎo)航設(shè)備、電子郵件設(shè)備、游戲機或者這些設(shè)備或其他數(shù)據(jù)處理設(shè)備中的任何兩者或更多者的適當組合。在一些實現(xiàn)方式中,服務(wù)器系統(tǒng)104包括至少一個服務(wù)器設(shè)備108和至少一個數(shù)據(jù)存儲庫110。在圖1的示例中,服務(wù)器系統(tǒng)104意圖表示各種形式的服務(wù)器,包括但不限于web服務(wù)器、應(yīng)用服務(wù)器、代理服務(wù)器、網(wǎng)絡(luò)服務(wù)器和/或服務(wù)器池。一般地,服務(wù)器系統(tǒng)接受對應(yīng)用服務(wù)的請求并且通過網(wǎng)絡(luò)106向任何數(shù)目的客戶端設(shè)備(例如,計算設(shè)備102)提供這種服務(wù)。在一些實現(xiàn)方式中,網(wǎng)絡(luò)106可包括連接任何數(shù)目的通信設(shè)備、移動計算設(shè)備、固定計算設(shè)備和服務(wù)器系統(tǒng)的大型計算機網(wǎng)絡(luò),例如局域網(wǎng)(localareanetwork,lan)、廣域網(wǎng)(wideareanetwork,wan)、因特網(wǎng)、蜂窩網(wǎng)絡(luò)、電話網(wǎng)絡(luò)(例如,pstn)或者其適當組合。根據(jù)本公開的實現(xiàn)方式,服務(wù)器系統(tǒng)104維護存儲加密數(shù)據(jù)的數(shù)據(jù)庫(例如,加密數(shù)據(jù)庫)。在一些示例中,數(shù)據(jù)(明文)在計算設(shè)備102(客戶端側(cè))被加密,并且加密的數(shù)據(jù)(密文)通過網(wǎng)絡(luò)106被發(fā)送到服務(wù)器系統(tǒng)104以便存儲。在一些實現(xiàn)方式中,如本文所述,服務(wù)器系統(tǒng)104可由第三方服務(wù)提供者提供,該第三方服務(wù)提供者存儲加密數(shù)據(jù)并提供對加密數(shù)據(jù)的訪問。在一些實現(xiàn)方式中,數(shù)據(jù)庫是也包括查詢執(zhí)行引擎的數(shù)據(jù)庫系統(tǒng)的一部分。在一些示例中,查詢執(zhí)行引擎接收查詢(例如,來自客戶端的搜索令牌),基于該查詢提供查詢計劃,執(zhí)行該查詢計劃以提供響應(yīng)(例如,響應(yīng)該查詢的來自數(shù)據(jù)庫的加密數(shù)據(jù)),并且將該響應(yīng)發(fā)送到客戶端(例如,從其接收查詢的那個客戶端)。在一些示例中,查詢計劃包括要在加密數(shù)據(jù)上執(zhí)行的一個或多個操作。如上文介紹的,ope可用于在將數(shù)據(jù)外包以便存儲之前對數(shù)據(jù)加密(例如,將加密數(shù)據(jù)存儲在由第三方服務(wù)提供者提供的數(shù)據(jù)庫中)。例如,ope使得范圍查詢能夠在加密數(shù)據(jù)上高效執(zhí)行,這使得ope對于在云計算中實現(xiàn)安全性和隱私性是有吸引力的。然而,傳統(tǒng)ope的安全性是有爭議的。例如,當僅對一個明文加密時,ope相對于僅限密文的攻擊可以是完全安全的。然而,當更多明文被加密時,確定性加密漸漸變得不那么安全。更具體而言,利用確定性加密,密文對于所有不同明文的可用性可遭受相對簡單的攻擊。例如,排序的密文可被一對一映射到排序的明文。這類攻擊可能是難以防止的,因為它是由加密的類型中暗含的排序信息使能的。另外,排序信息被用于在加密數(shù)據(jù)上的高效搜索。這可造成一個問題,因為經(jīng)常難以預(yù)測數(shù)據(jù)集合的最終大小和不同明文的數(shù)目。因此,在加密的安全性上沒有下界。在其他示例中,已知域中的所有明文將被加密并且因此(確定性)ope是無意義的。鑒于此情境,本公開的實現(xiàn)方式支持增大ope的安全性。更具體而言,如本文更詳細描述的,本公開的實現(xiàn)方式提供了密文的隨機化。在一些示例中,本公開的實現(xiàn)方式增大了安全性,同時保留了依賴于排序信息的查詢的功能。根據(jù)本公開的實現(xiàn)方式,ope的安全性的定義可作為頻率分析有序選擇明文攻擊下的不可分辨性(indistinguishabilityunderfrequency-analyzingorderedchosenplaintextattack,ind-faocpa)提供。如本文更詳細論述的,此定義中捕捉的安全性隨著數(shù)據(jù)集合的大小增大而增大。本公開的安全性概念比有序選擇明文攻擊下的不可分辨性(indistinguishabilityunderorderedchosenplaintextattack,ind-ocpa)更強。如本文更詳細描述的,本公開的實現(xiàn)方式隨機化了密文,使得沒有頻率信息從重復(fù)的密文中泄露。在一些示例中,隨機化ope保留了明文的順序。也如本文更詳細論述的,本公開的實現(xiàn)方式通過逼近該安全性概念而減小了客戶端側(cè)存儲的大小。在一些示例中,本公開的實現(xiàn)方式提供了不完美的頻率隱藏,這相對于傳統(tǒng)方案具有增強的安全性,但對于客戶端側(cè)存儲要求也是可接受的。在一些示例中,密文近似均勻分布,并且針對頻率分析攻擊提供了增強的安全性。本公開的實現(xiàn)方式在有序選擇明文攻擊下也是不可分辨的。為了為本文描述的實現(xiàn)方式提供額外的情境,本文更詳細論述ope的發(fā)展(包括示例傳統(tǒng)ope方案),以及ope的應(yīng)用,和其他加密方案。初始ope方案(“agrawalope方案”)是基于明文的分布已知的假設(shè)在數(shù)據(jù)庫社區(qū)中開發(fā)的。agrawalope方案是基于修改此分布以匹配固定或隨機選擇的分布的。然而,agrawalope方案沒有提供正式的安全性保證。ope的第一個正式安全性保證是由密碼術(shù)社區(qū)提供的,并且是基于ind-ocpa的概念在ope方案中提供的(“boldyrevaope方案”)。已表明,無狀態(tài)方案不能實現(xiàn)此概念,并且不得不勉強接受具有隨機ope的較弱安全性的加密方案。boldyrevaope方案只要求將密鑰存儲在客戶端上。隨后表明,隨機保序功能也實現(xiàn)了窗口單向性的安全性屬性。另外,boldyrevaope方案實現(xiàn)了ind-ocpa安全性,但要求所有明文都是預(yù)先已知的。當然,如果所有明文都是預(yù)先已知的,則其順序可被確定。開發(fā)了另一個ope方案(“teranishiope方案”),其是無狀態(tài)的(例如,只要求在客戶端上存儲密鑰)。在teranishiope方案中,在密文中引入了隨機的相對大的間隙以實現(xiàn)比部分明文不可分辨性的隨機保序功能更強的安全性概率。然而,因為teranishiope方案是無狀態(tài)的,所以其不實現(xiàn)ind-ocpa安全性。隨后引入了ind-ocpa安全ope方案(“popaope方案”)。popaope方案是有狀態(tài)的并且要求在ope服務(wù)器上存儲信息。在popaope方案中,執(zhí)行多輪協(xié)議,這導(dǎo)致由網(wǎng)絡(luò)延遲引起的效率低下。存儲的信息的大小是不同明文的數(shù)目的線性函數(shù)。另外,popaope方案是易變的,由此在幾乎任何加密操作上都必須更新順序(因此必須更新密文的一半)。這對于(例如,在云中操作的)數(shù)據(jù)庫服務(wù)器的性能有不利暗示。第一個高效ind-ocpa安全保序加密方案(“kerschbaumope方案”)去除了對單獨服務(wù)器的需要,但也按不同明文的數(shù)目的線性函數(shù)存儲信息。另外,kerschbaumope方案去除了對單獨服務(wù)器的需要。kerschbaumope方案也將變化的概率降低到可忽略并且將客戶端和服務(wù)器之間的協(xié)議中的輪數(shù)減少到是恒定的而不是不同明文的數(shù)目的對數(shù)函數(shù)。kerschbaumope方案在平均情況下具有恒定的加密成本。以上介紹的示例ope方案的每一者是確定性的。另一個示例ope方案引入了一些隨機化(“hildenbrandope方案”)。在hildenbrandope方案中,明文域被劃分成互斥的集合并且每個集合被保序加密,但是利用各個不同密鑰加密的。然而,因為hildenbrandope方案是無狀態(tài)的,所以其無法是ind-ocpa安全的。hildenbrandope方案對于加密數(shù)據(jù)上的范圍查詢的必要改寫有強烈暗示。另一個示例ope方案(“wozniakope方案”)添加了更多隨機化,但不提供超過隨機保序功能以外的安全性保證?,F(xiàn)在論述ope的示例應(yīng)用以為本公開的實現(xiàn)方式提供更多情境??偟膩碚f,ope具有許多應(yīng)用。一個示例應(yīng)用是用于數(shù)據(jù)庫即服務(wù)(daas)。在daas中,數(shù)據(jù)庫被外包給云(例如,由第三方服務(wù)提供者容宿),并且存儲的值在被發(fā)送到云之前被加密。數(shù)據(jù)庫在加密數(shù)據(jù)上執(zhí)行接收到的查詢(例如,來自提供了加密數(shù)據(jù)的數(shù)據(jù)擁有者的查詢)。ope使得能夠在不對數(shù)據(jù)庫管理系統(tǒng)作出任何改變的情況下在加密數(shù)據(jù)上執(zhí)行范圍查詢。引入了對數(shù)據(jù)庫的可調(diào)整加密,其包裹著ope。除了數(shù)據(jù)庫以外,ope在一般云軟件即服務(wù)(software-as-a-service,saas)和web應(yīng)用(例如,商業(yè)軟件、電子郵件)中具有許多應(yīng)用?,F(xiàn)在論述其他示例加密方案以為本公開的實現(xiàn)方式提供更多情境。ope是屬性保留加密的一種特殊情況。由于其在排序和搜索中的應(yīng)用,值的順序是一種值得保留的尤其有用的屬性。加密數(shù)據(jù)上的搜索也可利用采用經(jīng)修改的、通常是依加密方案而定的搜索算法的其他加密方案來執(zhí)行。這種加密方案例如包括可搜索加密、函數(shù)加密和同態(tài)加密。在一些示例中,可搜索加密實現(xiàn)比ope更強的安全性概念。也引入了用于范圍查詢的可搜索加密,其使用由秘密密鑰生成的范圍邊界的令牌來匹配密文,這些密文在此令牌的范圍內(nèi)。沒有該令牌,密文在選擇明文攻擊下是不可分辨的。然而,可搜索加密方案要求對數(shù)據(jù)的線性掃描,除非提供額外的索引信息。引入了具有對數(shù)時間復(fù)雜度的用于范圍的可搜索加密方案,但它的索引信息使得它與傳統(tǒng)ope一樣脆弱,因為提出的排序樹揭示了所有元素的順序。在一些示例中,可搜索加密是函數(shù)加密的一種特殊情況。函數(shù)加密允許了在密文的集合上評估任何函數(shù),使得該函數(shù)的結(jié)果被揭示。近來,已為一般函數(shù)設(shè)計了函數(shù)加密。以前已提出了特定函數(shù),例如內(nèi)積。函數(shù)加密也可只揭示順序,同時其他的保持語義上安全。搜索也可利用同態(tài)加密來實現(xiàn),利用同態(tài)加密,搜索結(jié)果對于第三方服務(wù)提供者保持未知。這意味著如果結(jié)果大小是無界的,則對于任何查詢需要傳送整個數(shù)據(jù)庫。另外,同態(tài)加密使能使用任意搜索函數(shù)。鑒于此情境,并且如上文介紹的,本公開的實現(xiàn)方式提供了fn-ope來用于例如外包的屬性保留加密數(shù)據(jù)庫。作為一個當前的示例,并且為了為本公開的實現(xiàn)方式提供更多情境,擁有者具有要被存儲在第三方服務(wù)提供者的數(shù)據(jù)庫(例如,daas范例)中的數(shù)據(jù)(例如,人口數(shù)據(jù))。擁有者在將加密數(shù)據(jù)外包給云之前利用ope對數(shù)據(jù)加密。在此示例中,數(shù)據(jù)庫可具有示例字段“名”、“姓”、“生日”和“性別”,等等。如果擁有者希望在外包的加密數(shù)據(jù)上執(zhí)行范圍查詢,則擁有者向云服務(wù)提供者發(fā)送搜索項的加密邊界。服務(wù)提供者利用加密邊界執(zhí)行常規(guī)范圍查詢,就好像會在明文數(shù)據(jù)上執(zhí)行的那樣,因為明文的順序在加密數(shù)據(jù)(密文)中被保留。結(jié)果是查詢的范圍中的加密數(shù)據(jù)值的集合,該集合被返回給擁有者。ope的性能和實現(xiàn)靈活性優(yōu)點是清楚明確的。為了使服務(wù)器(例如,第三方服務(wù)提供者的(一個或多個)服務(wù)器)在密文的集合上執(zhí)行范圍查詢,客戶端為該范圍的上界和下界發(fā)送密文(加密數(shù)據(jù)值)。加密界限的范圍中包括的所有密文對應(yīng)于該范圍中的明文。另外,服務(wù)器可利用用于明文范圍查詢的所有數(shù)據(jù)結(jié)構(gòu)來優(yōu)化該查詢。因此,這種查詢例如可被輕松地集成到現(xiàn)有的數(shù)據(jù)庫管理系統(tǒng)中。agrawalope方案是為上述場景設(shè)計的,但其安全性以及其安全性定義不像期望的那么強。ope不可能像標準加密那么強,因為按照定義,揭示了關(guān)于順序的信息(“排序信息”)。一些安全性研究者已表明,此排序信息也必然意味著關(guān)于兩個明文的距離的部分信息。其他安全性研究者辯稱,至少一半比特泄露了。對排序信息的密碼分析暗示的完全表征仍然是缺乏的。ope的另一個安全性問題在數(shù)據(jù)庫表格的每一列被單獨加密的數(shù)據(jù)庫中是明顯的。例如,在關(guān)于人的典型數(shù)據(jù)庫表格中,每個字段(例如,名、姓、生日、性別)被用各自的密鑰加密。這允許了每個個體字段上的查詢(例如,出生于7月4日的所有男人)。然而,在這些字段的大多數(shù)中,輸入不是均勻分布的。例如,姓smith在美國比姓huxtable更常見。關(guān)于輸入的頻率的這個信息可用在利用ope加密的任何數(shù)據(jù)庫表格的密碼分析中。例如,已表明,就像可搜索加密中也是如此一樣,即使是部分頻率信息也可用于對具有高概率的條目解密。對于典型數(shù)據(jù)庫中的許多字段,關(guān)于頻率分布的信息是容易獲得的(例如,公共網(wǎng)站列出每個區(qū)域最常見的名和姓)。這個問題甚至可能更加嚴重。在許多字段中,例如,可能有比明文域中的值多得多的數(shù)據(jù)庫行(例如,很可能所有明文都被加密至少一次)。在此情況下,ope的安全性崩潰。例如,有序的密文可簡單地被匹配到有序的明文。例如,考慮字段“性別”。不太可能關(guān)于人的許多數(shù)據(jù)庫表格只包含男人或女人。傳統(tǒng)的ope方案將揭示性別,因為按照字典序,“女性”(female)<“男性”(male)。鑒于上述情境,以及傳統(tǒng)ope的缺陷,本公開的實現(xiàn)方式提供了fh-ope,這是一種隨機化的ope方案,使得數(shù)據(jù)值的頻率被模糊。如本文更詳細描述的,根據(jù)本公開的fh-ope方案,重復(fù)的明文將(或者可)變成不同的密文。本公開的fh-ope方案提供了更強的安全性概念(例如,通過隱藏任何明文的頻率)。這個更強的安全性是與明文數(shù)據(jù)上的范圍查詢的高效執(zhí)行一起提供的。為了突出本公開的實現(xiàn)方式,可考慮以下示例,當對由兩個女人和兩個男人構(gòu)成的數(shù)據(jù)加密時,性別屬性將被加密為1、2、3、4。前兩個(1、2)各自是女性的密文,并且后兩個(3、4)各自是男性的密文。搜索仍可由服務(wù)器在加密數(shù)據(jù)上執(zhí)行。當搜索所有女人時,例如,搜索范圍[1,2](例如,從搜索項的最小密文到搜索項的最大密文)。當搜索所有男人時,例如,搜索范圍[3,4](例如,從搜索項的最小密文到搜索項的最大密文)。當搜索范圍[female,male]時,搜索范圍[1,4](例如,從下界的最小密文到上界的最大密文)。另外,本公開的fh-ope方案相對于有序選擇明文攻擊是安全的,并且是有狀態(tài)的。因為隨機化密文的熵比確定性密文的高得多,所以本公開的fh-ope方案比傳統(tǒng)ope方案(在客戶端上)存儲更多狀態(tài)信息。然而,如本文更詳細描述的,本公開的實現(xiàn)方式采用了減少在客戶端上存儲的信息的量的若干個數(shù)據(jù)壓縮技術(shù)。在一些示例中,提供了例如對現(xiàn)實數(shù)據(jù)集合的比率為15的數(shù)據(jù)壓縮。這些類型的壓縮技術(shù)使能了本公開的fh-ope方案的實際應(yīng)用,同時提高了密文的安全性。在一些示例中,(有狀態(tài))保序加密方案πfhope包括以下示例算法:s←keygen(λ):根據(jù)安全性參數(shù)λ生成秘密狀態(tài)s。s',y←encrypt(s,x):為明文x計算密文y并且將狀態(tài)從s更新到s'。x←decrypt(s,y):基于狀態(tài)s為密文y計算明文x。如果對于任何有效狀態(tài)s和x,decrypt(encrypt(s,x))=x,則加密方案是“正確”的。如果保留了順序(即,對于任何i和j,yi≥yj=>xi≥xj),則加密方案是“保序”的?,F(xiàn)在論述本公開的fh-ope的安全性保證(例如,為何fh-ope是頻率隱藏的)。安全性保證開始于ind-ocpa的定義,其(迄今為止)是ope的安全性的最強定義。在一些示例中,ind-ocpa安全性是由挑戰(zhàn)者和對手之間的游戲定義的。對手準備明文的兩個序列,其中兩個序列具有相同的順序并且每個明文在其序列內(nèi)是不同的。對手將兩個序列發(fā)送給挑戰(zhàn)者。挑戰(zhàn)者對一個序列加密并且將密文發(fā)送給對手,對手猜測它是兩個序列中的哪一個。在一些示例中,將ind-ocpa的定義擴展到隨機化密文的一個簡單想法將是提升明文的不同性的限制。然而,如以下示例表明的,這是不充分的。在兩個不同明文(例如,男性和女性)的情況下,需要不可分辨的具有不同頻率的序列只有僅由一個明文構(gòu)成的那些。相同順序的所有其他序列都具有相同的明文頻率。因此,此頻率信息可從密文泄露,因為它在兩個明文序列中都存在。然而,加密算法的隨機選擇無法完全獨立于明文的序列(就像非保序加密的選擇明文攻擊下的不可分辨性那樣),因為明文序列的順序需要被保留。鑒于此,本公開的實現(xiàn)方式提供了隨機化順序。在一些示例中,隨機化順序是數(shù)字1,2,…,n的置換,其是根據(jù)x排序的并且平局被隨機打破。提供以下示例定義:定義1:令n為序列中的不一定不同的明文的數(shù)目。序列x的隨機化順序則以下成立和可考慮以下示例。令明文序列為x=1,2,2,3。可能的隨機化順序是г1=1,3,2,4和г2=1,2,3,4。有許多具有隨機化順序г1的明文序列,它們并不全都具有相同的明文頻率。具有任何為1的頻率的示例是x'1=2,2,2,3,x'2=1,2,1,3,x'3=1,1,1,3或x'4=1,1,1,1,以及許多其他的,在一些示例中,本公開的安全性定義的目標是密文只泄露明文的隨機化順序。也就是說,具有相同的隨機化順序但具有不同的明文頻率的兩個序列應(yīng)當是不可分辨的??勺⒁獾?,隨機化順序不包含任何頻率信息,因為每個值始終出現(xiàn)恰好一次。提供以下示例安全性游戲gamefaocpa(λ):■對手選擇n個不一定不同的明文的兩個序列x0和x1,使得它們具有至少一個共同的隨機化順序г。對手將兩個序列發(fā)送給挑戰(zhàn)者?!鎏魬?zhàn)者扔一個無偏向硬幣c∈{0,1},執(zhí)行密鑰生成keygen(λ),并且將xc加密為y(即,si,yi←encrypt(si-1,xi))。挑戰(zhàn)者將密文y發(fā)送給對手?!κ州敵鯿的猜測c*(即,它是兩個序列中的哪一個)。現(xiàn)在定義相對于頻率分析有序選擇明文攻擊(faocpa)的安全性。提供以下示例定義:定義2:(有狀態(tài))ope方案πfhope相對于頻率分析有序選擇明文攻擊是ind-faocpa安全的,如果對手a在gamefaocpa(λ)中輸出c的優(yōu)勢在λ中是可忽略的話,這以如下形式提供:在一些示例中,ind-faocpa安全性比ind-ocpa安全性更強,因為不同明文的隨機化順序等于其順序。因此,ind-faocpa暗示ind-ocpa,但ind-ocpa不暗示ind-faocpa。例如,如上所述,重復(fù)明文的頻率在ind-ocpa下可泄露,這可用于密碼分析?,F(xiàn)在詳細描述實現(xiàn)本公開的fh-ope的示例算法。示例算法包括樹結(jié)構(gòu)算法tree(算法1),加密算法encrypt(算法2),解密算法decrypt(算法3),樹重平衡算法rebalance(算法4),非完美頻率隱藏算法imp–fh(算法5),隨機化順序選擇算法ro–select(算法6),和用于randomcoin算法的編程隨機預(yù)言randomoracle(算法7)。本公開的實現(xiàn)方式將明文按其被加密的順序插入到排序二叉樹中。根據(jù)本公開的實現(xiàn)方式,提供具有動態(tài)分配的葉子和指針的二叉搜索樹。如本文更詳細論述的,與將所有明文存儲在客戶端上相比,該搜索樹被壓縮以節(jié)省空間??勺⒁獾?,雖然搜索樹是動態(tài)的,但存在一閾值深度,超過該閾值深度后搜索樹被重平衡。在一些示例中,閾值深度是基于密文長度確定的。在一些示例中,可超過閾值深度(例如,在對明文排序以加密的情況下)。在一些示例中,超過此密文長度的概率在均勻分布的輸入的情況下是可忽略的。在一些實現(xiàn)方式中,每個明文被加密為剛好更小和更大的下一明文的密文的均值。明文、密文對被插入到搜索樹中。在一些示例中,已經(jīng)被加密的所有明文被不同地處理。在此情況下,(即,當插入的明文和要加密的明文相等時),搜索樹被以隨機選擇的方式遍歷,并且新的明文被插入為葉子。這里參考下面的算法1更詳細描述搜索樹的基本數(shù)據(jù)結(jié)構(gòu):算法1:樹結(jié)構(gòu)在一些實現(xiàn)方式中,對于每個算法固定以下示例參數(shù):n是要插入的不一定不同的明文的數(shù)目,并且n是不同明文的數(shù)目。因此,比特長度在算法1中是k=[log2n]。λ是安全性參數(shù)和密文的擴張因子。因此,在算法1中l(wèi)=λk。在一些示例中,安全性參數(shù)也可用于確定偽隨機性的種子的長度。在一些示例中,這個種子比擴張因子長得多。在一些示例中,二叉搜索樹(狀態(tài))被表示為節(jié)點{t}的集合t。在一些示例中,對于當前節(jié)點添加輸入t并且對于下限和上限添加min和max以使能遞歸。根據(jù)算法2執(zhí)行明文的加密:輸入:x,t,min,max輸出:y狀態(tài):節(jié)點{t}的排序二叉樹t初始化:t是空的1.如果x=t.plain,則coin=randomcoin()∈{0,1},否則coin=⊥2.如果x>t.plain或coin=1,則3a.如果t.right≠空,則4.返回encrypt(x,t.right,t.cipher,max)3b.否則5.如果max–t.cipher<2,則返回rebalance(x,-1,n)6.插入并且返回t.right.cipher。3c.結(jié)束如果7.如果x<t.plain或coin=0,則8a.如果t.left≠空,則9.返回encrypt(x,t.left,min,t.cipher)8b.否則10.如果t.cipher–min<2,則返回11.插入并且返回t.left.cipher。8c.結(jié)束如果算法2:加密在一些實現(xiàn)方式中,最初利用要加密的明文x、樹t的根、min=-1和來調(diào)用該函數(shù)。在一些示例中,如果不存在根,則創(chuàng)建新的根。在一些示例中,如果n是未知的,則估計它。這個初始調(diào)用可被表示為encrypt(x),省去來自頻率隱藏保序加密方案πfhope的狀態(tài)s。在一些示例中,如果λ>6.4,則對于均勻輸入,重平衡的概率在n上是可忽略的。加密的示例是明文序列x=1,2,1,3,其中min=-1并且max=128。在此示例中,前兩個明文例如分別確定性地是y1=64和y2=96。第三個明文x3=1的密文被隨機化,因為其是重復(fù)的明文。該密文可例如是y3=32或y3=80(例如,取決于隨機硬幣)。第四個密文也例如是確定性的y4=112。在一些實現(xiàn)方式中,函數(shù)randomcoin擲來自有鍵偽隨機函數(shù)的均勻分布隨機硬幣。在一些實現(xiàn)方式中,通過遍歷搜索樹以找到匹配密文來執(zhí)行解密。在一些示例中,解密調(diào)用decrypt(x)推進到decrypt(x,root(t))。根據(jù)算法3執(zhí)行密文的解密:輸入:y,t輸出:x狀態(tài):節(jié)點{t}的排序二叉樹t1.如果y>t.cipher,則返回decrypt(y,t.right)2.如果y<t.cipher,則返回decrypt(y,t.left)3.返回t.plain算法3:解密如上所述,在某些情況下可重平衡搜索樹。在一些示例中,搜索樹的重平衡是根據(jù)算法4執(zhí)行的:輸入:x,min,max輸出:y狀態(tài):節(jié)點{t}的排序二叉樹t1.令x={t.plain}∪{x}2.按升序?qū)排序3.令4.令y=t.plain5.令x'={xj|xj<y}6.令x”={xj|xj>y}7.令8.令9.分別以y'和y”兩者作為y并且以x'和x”作為x在第5行上遞歸迭代。10.在t中找到x并且返回tx.cipher算法4:重平衡參考圖2a-2d,在描述空間節(jié)省測量(壓縮)之前,將論述當插入隨機明文時可出現(xiàn)的樹的示例。該論述基于以上介紹的二元明文域(例如,男性和女性)的示例。在此示例中,提供四個明文xi∈{0,1}。提供以下示例序列x=0,1,0,1。隨機硬幣被設(shè)置到序列1,0,并且所得到的樹序列在圖2a-2d中描繪。圖2a-2d的每一者描繪了在插入序列的又一個元素之后的搜索樹200,其中新的節(jié)點以幻影(虛線)指示。在圖2a中,搜索樹被初始化。因此,對于要加密的第一個明文值(例如,0)添加新的節(jié)點(根)。在圖2b中,當?shù)谝淮尾迦?時,添加新的節(jié)點(葉子)。在圖2c中,明文重復(fù)(例如,0),但被插入在具有不同明文(例如,1)的父親下方。這可如下來追溯:當?shù)诙尾迦?時,在根處遇到0;基于隨機硬幣,遍歷是向右,在這里遇到1;確定性選擇產(chǎn)生新節(jié)點(葉子)。在圖2d中,插入下一個1并且明文節(jié)點交錯。在更大的明文域中,即使是中間元素也可被放置在較低節(jié)點處。在一些示例中,重復(fù)的明文可被放置在具有相同明文的父親下。例如,如果以隨機硬幣0,1插入又兩個元素0,1,則搜索樹200將如圖3中所示。在一些實現(xiàn)方式中,當在搜索樹中存儲明文時,比只存儲明文時相比需要更多存儲空間(即,計算機可讀存儲器)。例如,根據(jù)本公開,在搜索樹中還容納了密文和指針。鑒于此,提供搜索樹的壓縮。在一些示例中,密文不需要被存儲,而是可隨著遍歷搜索樹而動態(tài)計算。在一些實現(xiàn)方式中,可利用字典壓縮來壓縮明文,并且可將重復(fù)的值作為索引存儲到字典中。這在例如為列存儲數(shù)據(jù)庫節(jié)省空間方面可以是非常有效的。在一些示例中,重復(fù)值的子樹可被壓縮。如上所述,重復(fù)的明文可具有相同或不同明文的父節(jié)點。在一些示例中,相同明文的子樹可被稱為簇(cluster)。在簇內(nèi),不需要存儲每個節(jié)點的明文。相反,在該簇的根節(jié)點中存儲該明文一次。在一些實現(xiàn)方式中,雖然在使用繼承的多態(tài)面向?qū)ο笳Z言中支持抑制結(jié)構(gòu)中的字段,然而可進一步壓縮搜索樹。在一些示例中,不是存儲樹結(jié)構(gòu),而是只存儲其遍歷,從而壓縮指針的大小。例如,可以以m的形式提供簇的大小,按后序遍歷順序遍歷搜索樹,并且按升序向節(jié)點賦予從1到m的數(shù)字(即,后序遍歷現(xiàn)在是1,2,3,…)。按中序遍歷順序遍歷搜索樹,并且記錄后序遍歷數(shù)字。作為示例,具有一個根和兩個葉子的簡單二叉樹變成1,3,2。在一些示例中,只存儲遍歷序列。每次遇到一個簇時,在遍歷中前進之前將該簇擴展到整個搜索樹。在一些示例中,這可在線性時間和空間中完成。在前進到具有不同明文的下一節(jié)點之后,臨時擴展的搜索樹可被刪除。這樣,對于搜索樹中的明文和指針信息都提供了節(jié)省。例如,只需要存儲不同明文的節(jié)點之間的(長)指針。本公開的fh-ope的實現(xiàn)方式實現(xiàn)了ind-faocpa安全性。ind-faocpa安全性具有安全性優(yōu)點,但在客戶端處也具有相對高的存儲空間要求。在一些應(yīng)用場景中,可優(yōu)選更低的安全性和(顯著)更低的存儲空間要求。例如,如果密文的分布未被完美隱藏,而是近似已知分布(例如,均勻分布),通常就夠了。根據(jù)本公開的實現(xiàn)方式,重復(fù)密文的均勻分布可利用fh-ope方案和試探式預(yù)過濾器來近似。在一些實現(xiàn)方式中,對于每個不同的明文x∈x,確定出現(xiàn)次數(shù)cx和(每個明文的)不同密文的數(shù)目dx。在一些示例中,c={cx|x∈x}和d={dx|x∈x}是所有各個計數(shù)器的集合。在一些示例中,由r>1和0≤p≤1將預(yù)過濾器參數(shù)化。按大于r倍檢測到從均勻分布的預(yù)期偏離,并且即使沒有偏離,也可以概率p創(chuàng)建新的隨機密文。在一些示例中,根據(jù)算法5提供預(yù)過濾器:輸入:c,d,r,p,x輸出:y狀態(tài):在排序二叉樹中t={tj}1.令cx為明文x的出現(xiàn)次數(shù)。令dx為x的不同密文的數(shù)目。2.如果則遞增cx,dx并且返回y=encrypt(x)。3.以pr[c=1]=p選擇隨機硬幣c∈{0,1}。4.如果c=1,則遞增cx,dx并且返回y=encrypt(x)。5.構(gòu)建集合y={tj.cipher|tj.plain=x}。在y之中均勻選擇y,遞增cx并且返回y。算法5:對于非完美頻率隱藏的過濾在一些示例中,參數(shù)r限制從均勻分布的偏離,并且參數(shù)p平衡存儲成本和安全性。對于p=1,過濾方案的結(jié)果與完全頻率隱藏保序加密方案相同。對于p=0和明文的均勻分布,過濾方案漸漸變得接近kerschbaumope方案的確定性加密。然而,對于偏斜的明文分布(和有限的r),本公開的實現(xiàn)方式近似均勻分布并且因此更安全。可注意到,上述的過濾fh-ope方案在最壞情況下仍是ind-ocpa安全的。因此,其比許多其他ope方案更安全。圖4描繪了根據(jù)本公開的實現(xiàn)方式可執(zhí)行的示例過程400。在一些示例中,示例過程400可作為利用一個或多個計算設(shè)備執(zhí)行的一個或多個計算機可執(zhí)行程序來提供。在一些實現(xiàn)方式中,執(zhí)行示例過程400以根據(jù)本公開的fh-ope的實現(xiàn)方式提供明文值的加密。在一些實現(xiàn)方式中,對于明文值的集合x中的每個明文值x執(zhí)行圖4的過程400。在一些示例中,明文值的集合x在被發(fā)送來存儲在由第三方服務(wù)提供者提供的數(shù)據(jù)庫中之前要被加密。例如,明文值的集合x可包括一實體(例如,企業(yè)、醫(yī)院)的機密數(shù)據(jù)。在一些示例中,明文值的集合x中的明文值是以數(shù)值(例如,整數(shù)、小數(shù))的形式提供的,它們可被相互比較和/或與其他數(shù)值比較(例如,大于、小于、等于)。在一些示例中,明文值的集合x中的明文值最初是以串值(例如,文本)的形式提供的。在一些示例中,串值被轉(zhuǎn)換成數(shù)值,以使得明文值的集合x中的明文值可與彼此比較和/或與其他數(shù)值比較(例如,大于、小于、等于)。在一些示例中,圖4的過程400開始于其中已經(jīng)有根節(jié)點的搜索樹。也就是說,例如,明文值的集合x中的至少一個明文值x已被加密并且至少一個節(jié)點(例如,根節(jié)點)被包括在該搜索樹中。在一些示例中,如果搜索樹是空的,則創(chuàng)建根節(jié)點,對明文值x加密,并且將明文值x和加密值y存儲在根節(jié)點中。接收包括明文值x、當前考慮的節(jié)點t、min值和max值的輸入集合(402)。例如,明文值x是明文值的集合x中的下一明文值。示例min值是-1,并且示例max值是(例如,128)。確定明文值x是否等于當前考慮的節(jié)點t中的明文值(t.plain)(404)。在一些示例中,當前考慮的節(jié)點t最初被設(shè)置為根節(jié)點。如果明文值x等于t.plain,則基于randomcoin確定硬幣值(coin)(406)。例如,執(zhí)行randomcoin以設(shè)置coin等于0或1。因此,如果明文值x等于t.plain,則明文值x不是唯一的(例如,在明文值的集合x中已經(jīng)遇到過),并且基于coin來進行隨機化加密,如本文詳細所述。如果明文值x不等于t.plain,則coin被設(shè)置為等于假(408)。因此,如果明文值x不等于t.plain,則明文值x是唯一的(例如,至少相對于當前考慮的節(jié)點t而言),并且進行確定性加密,如本文詳細描述的。確定明文值x是否大于t.plain,或者coin是否等于1(410)。如果明文值x大于t.plain,或者coin等于1,則向右遍歷經(jīng)過搜索樹,并且確定在當前考慮的節(jié)點t的右側(cè)是否已經(jīng)存在子節(jié)點(例如,是否t.right=空)(412)。如果t.right不等于空(即,右側(cè)已經(jīng)存在子節(jié)點),則更新該輸入集合以包括明文值x、下一節(jié)點t.right作為當前考慮節(jié)點t、節(jié)點t.right的t.cipher作為min值、和max值(414),并且示例過程400環(huán)回。如果t.right等于空(即,右側(cè)沒有已經(jīng)存在子節(jié)點),則確定是否實現(xiàn)了搜索樹的閾值深度(例如,max值和當前考慮的節(jié)點t的t.cipher之間的差異是否小于2)(416)。如果實現(xiàn)了閾值深度,則重平衡搜索樹(例如,基于本文描述的算法4)(418)以提供更新的搜索樹,并且明文值x及其密文t.right.cipher作為新節(jié)點t.right被插入到更新的搜索樹中(420)。如果沒有實現(xiàn)閾值深度,則明文值x及其密文t.right.cipher作為新節(jié)點t.right被插入到搜索樹中(420)。如上所述,確定明文值x是否大于t.plain,或者coin是否等于1(410)。如果明文值x不大于t.plain,和/或coin等于0,則向左遍歷經(jīng)過搜索樹,并且確定在當前考慮的節(jié)點t的左側(cè)是否已經(jīng)存在子節(jié)點(例如,是否t.left=空)(422)。如果t.left不等于空(即,左側(cè)已經(jīng)存在子節(jié)點),則更新該輸入集合以包括明文值x、下一節(jié)點t.left作為當前考慮節(jié)點t、min值、和節(jié)點t.left的t.cipher作為max值(424),并且示例過程400環(huán)回。如果t.left等于空(即,左側(cè)沒有已經(jīng)存在子節(jié)點),則確定是否實現(xiàn)了搜索樹的閾值深度(例如,當前考慮的節(jié)點t的t.cipher和min值之間的差異是否小于2)(426)。如果實現(xiàn)了閾值深度,則重平衡搜索樹(例如,基于本文描述的算法4)(428)以提供更新的搜索樹,并且明文值x及其密文t.left.cipher作為新節(jié)點t.left被插入到更新的搜索樹中(430)。如果沒有實現(xiàn)閾值深度,則明文值x及其密文t.left.cipher作為新節(jié)點t.left被插入到搜索樹中(430)。如果要對額外的數(shù)據(jù)加密,則可對明文值的集合x中的下一明文值x重復(fù)過程400。本公開的fh-ope方案的實現(xiàn)方式在java1.7中評估,并且在具有1.9-2.5ghz和16gbram的intelcorei5-4300cpu上的64位hotspotservervm中運行。執(zhí)行了一系列示例分析,并且總結(jié)如下。本公開的fh-ope相對于faocpa的安全性的證明在上文論述。這個證明可通過構(gòu)造對于該證明的兩個挑戰(zhàn)序列的每一者產(chǎn)生相同輸出的fh-ope方案的模擬器來評估。因此,計算上的不可分辨性來源于將隨機源實現(xiàn)為偽隨機函數(shù),而不是任何其他硬度假設(shè)。下面概述一系列定理和相應(yīng)的證明。定理1:本公開的fh-ope方案相對于faocpa是安全的。證明:示例模擬器如下進行–對手發(fā)送長度n的兩個明文序列x0和x1;模擬器從所有共同隨機化順序的集合中隨機選擇x0和x1共同的隨機化順序。這可利用以下示例算法來完成:輸入:x0,x1,s.t.|x0|=|x1|=n輸出:г1.按升序?qū)0和x1分別排序成z0和z1。2.構(gòu)建三元組<z0,i,z1,i,i>的列表w。3a.對于1≤j≤n,對于每對x0,j,x1,j,進行:4.構(gòu)建集合u={i|<z0,i,z1,i,i>∈w∧z0,i=x0,j∧z1,i=x1,j}。5.在u中均勻選擇γj。6.從w中去除<x0,j,x1,j,γj>。3b.對于每一者結(jié)束算法6:選擇隨機化順序定理2:算法6在時間o(n2)中運行。證明:循環(huán)(從3a行到3b行)迭代n次。每個操作(第4、5、6行)在集合w或u上分別最多花n個操作。因此,總時間受o(n2)操作所限。在一些示例中,定理2意味著示例模擬器是多項式時間,并且計算上的不可分辨性是可行的,即使利用偽隨機函數(shù)實現(xiàn)隨機選擇也是如此。在一些示例中,一旦選擇了隨機化順序г,模擬器就需要計算密文。模擬器利用隨機源的模擬器模擬算法5中的randomcoin函數(shù)(例如,該隨機源可被散列函數(shù)(隨機預(yù)言)所替換)。在一些示例中,模擬器均勻地隨機選擇明文序列x∈{x0,x1}。在加密期間,隨著其在加密函數(shù)的狀態(tài)s—二叉搜索樹t—中存儲明文,其保持跟蹤隨機化順序值γi。隨著其對xi加密并最終將xi存儲在t中,其也存儲γi,即,對于樹t中的每個值v,我們也知道γv。在一些示例中,γi表示當前輸入明文xi的隨機化順序值,并且γv表示樹遍歷中的當前節(jié)點的隨機化順序值。如果在xi的加密期間,模擬器遇到對randomcoin的調(diào)用,則其改為利用γi和γv調(diào)用算法7(見下):輸入:γi,γv輸出:0或11.如果γi>γv,則返回1。2.返回0。算法7:randomcoin的編程隨機oracle定理3:模擬器中的算法7的輸出與均勻隨機硬幣是不可分辨的。證明:雖然算法7的輸出是確定性的,但γi和γv的選擇由算法6確定。算法6在所有可能的隨機化順序之中均勻地選擇隨機化順序。因為每個隨機化順序?qū)е虏煌亩嫠阉鳂洌⑶襯andomcoin函數(shù)的每個輸出也產(chǎn)生不同的二叉搜索樹,所以算法7的輸出與均勻隨機硬幣是不可分辨的。在一些示例中,示例模擬器對于兩個序列產(chǎn)生相同輸出,在多項式時間中運行,并且其隨機輸出與均勻隨機硬幣是不可分辨的。因此,對手相對于本公開的fh-ope贏得gamefaocpa(λ)的概率在大于的λ中是可忽略的。在一些實現(xiàn)方式中,通過估計不可分辨的明文序列的集合的大小,可估計兩個不同安全性模型—ind-ocpa和ind-faocpa——的有效性。兩個不可分辨的序列可作為安全性游戲中的挑戰(zhàn)給出,并且導(dǎo)致不可分辨的密文挑戰(zhàn)。很明顯,與給定序列不可分辨的序列的集合越大,加密就越安全。在標準ind-cpa安全性下,明文的任何兩個序列都是不可分辨的。ind-ocpa安全的ope方案可泄露明文序列的順序。注意,ind-ocpa安全性也是更弱的ope方案的上界。下面在定理4中提供不可分辨的序列的數(shù)目。定理4:令d為明文域中的不同明文的數(shù)目。對于n個不同明文的任何序列,在ind-ocpa下有個不可分辨的序列。證明:n個不同明文的序列的順序是該域的子集。有個可能的子集,因此也有這么多個不可分辨的序列。在一些示例中,ind-faocpa安全方案泄露明文序列的隨機化順序。因此,不可分辨的序列必須具有至少一個共同的隨機化順序。不同的序列可具有不同數(shù)目的不可分辨序列??紤]對兩個不同的明文0和1(“女性”和“男性”)加密。序列x0=0,0具有4個不可分辨序列(包括其自身),但序列x1=0,1只有3個。因此,只能估計不可分辨序列的期望數(shù)目。下面在定理5中提供不可分辨序列的期望數(shù)目的下界:定理7:令d為明文域中的不同明文的數(shù)目。對于具有n個不同明文的大小為n的均勻選擇的明文序列,期望有至少個不可分辨的序列。證明,對于唯一明文x的任何集合子序列xi<x可被扁平化為1,并且子序列xj>x可被扁平化為d。在此情況下,對于任何元素(不計雙重的)和個這種元素的期望數(shù)目,有d-1個額外選擇。其重復(fù)內(nèi)的選擇的順序是獨立的,因為全都是來自相同明文的,并且有n個這樣的集合因此,有至少個期望的不可分辨序列。可強調(diào),不同明文的期望數(shù)目是這個數(shù)目隨著n增長而逼近d。因此,ind-ocpa下的不可分辨序列的數(shù)目隨著n增長而逼近1。相反,或n(n≤n)隨著n增長而逼近無窮。因此,ind-faocpa下的不可分辨序列的數(shù)目也隨著n增長而逼近無窮。在一些實現(xiàn)方式中,相對于ind-faocpa安全的加密對于長序列保持安全(甚至提高了安全性),而(僅)相對于ind-ocpa安全的加密的安全性惡化。因此,明文的長(且增長的)序列的加密在ind-faocpa安全方案下比在僅ind-ocpa安全的方案下更安全。在一些示例中,每個ope方案—確定性的或隨機化的—可被描述為單調(diào)遞增函數(shù)。因此,簡單的統(tǒng)計密碼分析技術(shù)將把加密建模為線性函數(shù)。給定兩個明文、密文對,可估計此函數(shù)的參數(shù)。在一些示例中,此攻擊的有效性可通過測量密文和明文之間的相關(guān)性來估計。對于明文、密文對的集合,可確定皮爾遜相關(guān)系數(shù)r。皮爾遜相關(guān)系數(shù)測量隨機變量的兩個集合之間的線性關(guān)系。在一示例中,n=16384個(可能重復(fù)的)明文被獨立加密并且是從n∈{64,256,1024,4096,16384,65536}不同明文的集合中均勻選擇的。在此示例中,將密文空間設(shè)置為60比特,執(zhí)行100次實驗運行,并且確定相關(guān)系數(shù)r'。也確定90%置信區(qū)間。為了分析,可將本公開的fh-ope與上文論述的確定性kerschbaumope方案相比較。kerschbaumope方案是ind-ocpa安全的。在此示例分析中,對于n和n使用相同參數(shù),但是對于密文長度考慮兩個不同的選項。在一個情況中,擴張因子λ=5被固定到相同值(即,密文長度是5log2n-10比特)。在另一情況中,密文長度被固定到60比特。此示例分析的結(jié)果包括不同數(shù)據(jù)系列的置信區(qū)間中的重疊。因此,可得出結(jié)論,本公開的fh-ope方案在ind-ocpa下不比kerschbaumope方案更弱。如上文介紹的,客戶端側(cè)存儲空間是fh-ope的限制資源。為了分析這一點,對實驗數(shù)據(jù)集合加密并且測量客戶端數(shù)據(jù)結(jié)構(gòu)的存儲消耗。在此示例分析中,具有德國的所有人的數(shù)據(jù)庫表格被加密。德國人口大約是n=8×107。字段“名”、“姓”、“生日”和“性別”被加密。利用公共信息(例如,http://de.wikipedia.org/wiki/familienname,http://www.beliebte-vornamen.de/lexikon)估計這些字段的分布。在此示例分析中,執(zhí)行20次測試運行,并且確定平均存儲大小。在一些示例中,90%置信的范圍始終低于測得值的0.05%。在任何的實驗運行中,搜索樹都沒有被重平衡。此實驗分析的結(jié)果在以下的表1中總結(jié):表1:德國人的數(shù)據(jù)庫表格上的壓縮效果總體上,實現(xiàn)了幾乎15的壓縮比率。這對于具有最多客戶端的小型到中型數(shù)據(jù)庫可能是足夠的了。還看到,對于更大的字段大小(例如,名、姓)壓縮性能更好。與對于小字段相比,字典壓縮對于這些字段性能更好。實際上,對于小字段大小—就像性別屬性中那樣—壓縮技術(shù)甚至可能增大存儲空間。另外,測量了搜索樹壓縮本身的有效性。在示例分析中,考慮已經(jīng)被字典壓縮的值(例如,字段大小等于[log2n]字節(jié),并且測量搜索樹的大小,如本文所述)。在此示例分析中,n∈{105,106,107}個明文被均勻加密并且是從n∈{16,256,4096,65536,1048576}個不同明文之中選擇的,并且執(zhí)行20次測試運行,并且確定平均存儲大小。90%置信區(qū)間的范圍始終低于測得大小的0.1%。在任何的實驗運行中,搜索樹都沒有被重平衡。結(jié)果表明,在不同明文的中心數(shù)目附近,搜索樹壓縮具有直到大約2的壓縮比率的性能??傻贸鼋Y(jié)論,對于適當?shù)拿魑挠颍搲嚎s技術(shù)性能良好,但對于其他的,不同的技術(shù)可提供更好的性能。鑒于此,也評估了上文描述的非完美fh-ope。在此示例分析中,使用了n=2的明文域,因為整體壓縮性能在此參數(shù)下最差。在此示例分析中,以概率pr[x=1]∈{0.5,0.6,0.7,0.8,0.9}對n=106個明文加密,并且考慮偏斜分布。參數(shù)r=1.025被固定(即,從期望重復(fù)數(shù)目的偏離被限制到2.5%),并且參數(shù)p的范圍在{0,0.025%,0.05%,0.075%,0.1%}上。在此示例分析中,執(zhí)行20次測試運行,并且確定不同明文的平均數(shù)目e??勺⒁獾剑跊]有上文論述的先前實驗中的預(yù)過濾的情況下,不同明文的平均數(shù)目是n。因此,利用預(yù)過濾實現(xiàn)了n/e的額外壓縮。90%置信區(qū)間的范圍始終低于測得數(shù)目的9.5%。結(jié)果表明,不同密文的數(shù)目大致隨著參數(shù)p而線性增長,并且明文分布(即,x=1的概率)對于不同密文的數(shù)目具有次要影響。另外,壓縮是非常有效的。在此示例分析中,對于p=0實現(xiàn)了超過17000的壓縮比率,并且對于p=0.1%仍然超過900。執(zhí)行了另一個示例分析來評估參數(shù)r的影響。在此示例分析中,n=106并且pr[x=1]∈{0.5,0.6,0.7,0.8,0.9}。參數(shù)p=0.05%(即,在不均衡化分布的情況下選擇新密文的概率是0.05%)。因此,期望至少500個不同的密文。在此示例分析中,執(zhí)行20次測試運行,并且確定不同明文的平均數(shù)目e。90%置信區(qū)間的范圍始終低于測得數(shù)目的16.6%。結(jié)果表明,不同密文的數(shù)目由于輸入分布的方差而略微高于500。然而,該數(shù)目隨著參數(shù)r增大而逼近500,因為容忍了更大的方差。同樣,壓縮是非常有效的,實現(xiàn)了大致在1700(r=1.025)和1900(r=1.1)之間的壓縮比率。鑒于這些示例分析,可得出結(jié)論,對于不服從標準壓縮技術(shù)的明文,和/或?qū)τ诰哂匈Y源約束客戶端的非常大的數(shù)據(jù)庫,本公開的非完美fh-ope可用于提供適當?shù)男阅?例如,實際的客戶端側(cè)存儲)?,F(xiàn)在參考圖5,提供了示例計算系統(tǒng)500的示意圖。系統(tǒng)500可用于聯(lián)系本文描述的實現(xiàn)方式描述的操作。例如,系統(tǒng)500可被包括在本文論述的任何或所有服務(wù)器組件中。系統(tǒng)500包括處理器510、存儲器520、存儲設(shè)備530和輸入/輸出設(shè)備540。組件510、520、530、540利用系統(tǒng)總線550互連。處理器510能夠處理指令以用于在系統(tǒng)500內(nèi)執(zhí)行。在一個實現(xiàn)方式中,處理器510是單線程處理器。在另一實現(xiàn)方式中,處理器510是多線程處理器。處理器510能夠處理存儲器520或存儲設(shè)備530中存儲的指令以在輸入/輸出設(shè)備540上顯示用于用戶界面的圖形信息。存儲器520存儲系統(tǒng)500內(nèi)的信息。在一個實現(xiàn)方式中,存儲器520是計算機可讀介質(zhì)。在一個實現(xiàn)方式中,存儲器520是易失性存儲器單元。在另一實現(xiàn)方式中,存儲器520是非易失性存儲器單元。存儲設(shè)備530能夠為系統(tǒng)500提供大容量存儲。在一個實現(xiàn)方式中,存儲設(shè)備530是計算機可讀介質(zhì)。在各種不同的實現(xiàn)方式中,存儲設(shè)備530可以是軟盤設(shè)備、硬盤設(shè)備、光盤設(shè)備或磁帶設(shè)備。輸入/輸出設(shè)備540為系統(tǒng)500提供輸入/輸出操作。在一個實現(xiàn)方式中,輸入/輸出設(shè)備540包括鍵盤和/或指點設(shè)備。在另一實現(xiàn)方式中,輸入/輸出設(shè)備540包括用于顯示圖形用戶界面的顯示單元。描述的特征可在數(shù)字電子電路中實現(xiàn),或者在計算機硬件、固件、軟件或者它們的組合中實現(xiàn)。裝置可在計算機程序產(chǎn)品中實現(xiàn),該計算機程序產(chǎn)品被有形地體現(xiàn)在信息載體中,例如機器可讀存儲設(shè)備中,以供可編程處理器執(zhí)行;并且方法步驟可由可編程處理器執(zhí)行,該可編程處理器執(zhí)行指令的程序以通過在輸入數(shù)據(jù)上操作并生成輸出來執(zhí)行描述的實現(xiàn)方式的功能。描述的特征可有利地在一個或多個計算機程序中實現(xiàn),該一個或多個計算機程序可在可編程系統(tǒng)上執(zhí)行,該可編程系統(tǒng)包括至少一個可編程處理器,該可編程處理器被耦合來從數(shù)據(jù)存儲系統(tǒng)、至少一個輸入設(shè)備和至少一個輸出設(shè)備接收數(shù)據(jù)和指令并且向其發(fā)送數(shù)據(jù)和指令。計算機程序是可在計算機中直接或間接用于執(zhí)行一定活動或帶來一定結(jié)果的指令的集合。計算機程序可以用任何形式的編程語言來編寫,所述語言包括經(jīng)編譯或解釋的語言,并且計算機程序可按任何形式來部署,包括被部署為獨立程序或被部署為模塊、組件、子例程或者適合用在計算環(huán)境中的其他單元。用于指令的程序的執(zhí)行的適當處理器例如包括通用和專用微處理器兩者,以及任何種類的計算機的唯一處理器或多個處理器之一。一般地,處理器將從只讀存儲器或隨機訪問存儲器或者這兩者接收指令和數(shù)據(jù)。計算機的元素可包括用于執(zhí)行指令的處理器和用于存儲指令和數(shù)據(jù)的一個或多個存儲器。一般地,計算機也可包括用于存儲數(shù)據(jù)文件的一個或多個大容量存儲設(shè)備或者被操作性地耦合以與這種存儲設(shè)備通信;這種設(shè)備包括磁盤,例如內(nèi)部硬盤和可移除盤;磁光盤;以及光盤。適用于有形地體現(xiàn)計算機程序指令和數(shù)據(jù)的存儲設(shè)備包括所有形式的非易失性存儲器,例如包括半導(dǎo)體存儲器設(shè)備,比如eprom、eeprom和快閃存儲器設(shè)備;磁盤,比如內(nèi)部硬盤和可移除盤;磁光盤;以及cd-rom和dvd-rom盤。處理器和存儲器可被asic(專用集成電路)所補充,或者被包含在asic中。為了支持與用戶的交互,特征可實現(xiàn)在計算機上,該計算機具有用于向用戶顯示信息的顯示設(shè)備,例如crt(cathoderaytube,陰極射線管)或lcd(liquidcrystaldisplay,液晶顯示器)監(jiān)視器,以及用戶可用來向計算機提供輸入的鍵盤和指點設(shè)備,例如鼠標或跟蹤球。特征可在計算機系統(tǒng)中實現(xiàn),該計算機系統(tǒng)包括后端組件,例如數(shù)據(jù)服務(wù)器,或者包括中間件組件,例如應(yīng)用服務(wù)器或因特網(wǎng)服務(wù)器,或者包括前端組件,例如具有圖形用戶界面或因特網(wǎng)瀏覽器的客戶端計算機,或者它們的任何組合。系統(tǒng)的組件可由任何形式或介質(zhì)的數(shù)字數(shù)據(jù)通信(例如通信網(wǎng)絡(luò))連接。通信網(wǎng)絡(luò)的示例包括(例如,lan、wan),以及形成因特網(wǎng)的計算機和網(wǎng)絡(luò)。計算機系統(tǒng)可包括客戶端和服務(wù)器??蛻舳撕头?wù)器一般彼此遠離并且通常通過例如所描述的那種之類的網(wǎng)絡(luò)來交互??蛻舳撕头?wù)器的關(guān)系是由于計算機程序在各計算機上運行且相互之間具有客戶端-服務(wù)器關(guān)系而發(fā)生的。此外,附圖中描繪的邏輯流程要實現(xiàn)期望的結(jié)果并不要求所示出的特定順序或者先后次序。此外,可以向描述的流程提供其他步驟,或者可以從描述的流程中消除步驟,并且可以向描述的系統(tǒng)添加其他組件,或者可以從描述的系統(tǒng)中去除組件。因此,其他實現(xiàn)方式在所附權(quán)利要求的范圍內(nèi)。已描述了本公開的若干個實現(xiàn)方式。然而,將會理解,在不脫離本公開的精神和范圍的情況下可做出各種修改。因此,其他實現(xiàn)方式在所附權(quán)利要求的范圍內(nèi)。當前第1頁12當前第1頁12