一種云數(shù)據(jù)庫加密方法、系統(tǒng)及裝置制造方法
【專利摘要】本發(fā)明提出一種云數(shù)據(jù)庫加密方法、系統(tǒng)及裝置,其中方法包括:數(shù)據(jù)上傳客戶端接收來自數(shù)據(jù)申請客戶端的一個以上密鑰對中的公鑰,所述密鑰對由數(shù)據(jù)申請客戶端生成,且對應(yīng)不同的計算種類;數(shù)據(jù)上傳客戶端對數(shù)據(jù)明文進行預(yù)處理,并根據(jù)可能進行的計算種類,采用對應(yīng)的密鑰對中的公鑰對預(yù)處理后的數(shù)據(jù)明文進行加密,得到數(shù)據(jù)密文,將所述數(shù)據(jù)密文及其對應(yīng)的數(shù)據(jù)明文的預(yù)處理方式發(fā)送至云數(shù)據(jù)庫。本發(fā)明能夠提高云數(shù)據(jù)庫的安全性,并且支持?jǐn)?shù)值型加密數(shù)據(jù)的多種運算。
【專利說明】一種云數(shù)據(jù)庫加密方法、系統(tǒng)及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及云數(shù)據(jù)庫【技術(shù)領(lǐng)域】,尤其涉及一種云數(shù)據(jù)庫加密方法、系統(tǒng)及裝置。
【背景技術(shù)】
[0002] 數(shù)據(jù)庫系統(tǒng)是企業(yè)信息系統(tǒng)的核心之一,隨著云計算技術(shù)的發(fā)展,傳統(tǒng)上部署在 本地網(wǎng)絡(luò)環(huán)境中的單機數(shù)據(jù)庫和分布式數(shù)據(jù)庫正逐漸向部署在數(shù)據(jù)中心的云數(shù)據(jù)庫遷移。 相對于傳統(tǒng)的數(shù)據(jù)庫系統(tǒng),云數(shù)據(jù)庫具有高可擴展性和高可用性的特點,能夠滿足電信、金 融等需要大規(guī)模存儲和大規(guī)模數(shù)據(jù)處理的領(lǐng)域的應(yīng)用,并降低客戶的成本。由于數(shù)據(jù)庫系 統(tǒng)中存儲的大量結(jié)構(gòu)化數(shù)據(jù)(即數(shù)據(jù)表),如企業(yè)的財務(wù)數(shù)據(jù)、企業(yè)客戶關(guān)系數(shù)據(jù)、醫(yī)療機構(gòu) 的病例檔案等,具有高價值和高敏感性,為了保證企業(yè)數(shù)據(jù)安全,在遷移至第三方的云數(shù)據(jù) 庫時需要對敏感數(shù)據(jù)進行加密以抵御可能來自數(shù)據(jù)中心內(nèi)部和外部的各種安全威脅。
[0003] 云數(shù)據(jù)庫是一種新的云計算服務(wù),與對象存儲等云存儲服務(wù)模式不同。首先,傳 統(tǒng)的對象云存儲服務(wù)中存儲的數(shù)據(jù)為非結(jié)構(gòu)化數(shù)據(jù),例如二進制數(shù)據(jù)文件;而云數(shù)據(jù)庫主 要存儲結(jié)構(gòu)化數(shù)據(jù),特別是包括大量的數(shù)值型數(shù)據(jù)。更重要的區(qū)別是,云數(shù)據(jù)庫要為客戶 同時提供對結(jié)構(gòu)化數(shù)據(jù)的存儲服務(wù)以及對結(jié)構(gòu)化數(shù)據(jù)的處理服務(wù),而對象云存儲服務(wù)則 不涉及對加密數(shù)據(jù)的計算需求。傳統(tǒng)的數(shù)據(jù)加密方案,如高級加密標(biāo)準(zhǔn)(AES,Advanced EncryptionStandard)分組加密算法不適用于云數(shù)據(jù)庫,因為經(jīng)過加密后的密文數(shù)據(jù)不支 持任何計算,客戶必須將數(shù)據(jù)下載到本地解密后才能夠進行計算。
[0004] 通過對國內(nèi)外發(fā)明專利和相關(guān)技術(shù)進行檢索,我們將已存在且與本發(fā)明相關(guān)性 較高的技術(shù)總結(jié)為三類,分別是:本地數(shù)據(jù)庫加密方案,麻省理工大學(xué)的CryptDB方案和 CipherCloud公司的云數(shù)據(jù)庫加密網(wǎng)關(guān):
[0005] 本地數(shù)據(jù)庫加密方案主要是對存儲在磁盤上的數(shù)據(jù)進行加密,加密的數(shù)據(jù)在讀入 內(nèi)存后解密,并對解密后的數(shù)據(jù)進行操作和計算。通過本地數(shù)據(jù)庫加密,所有存儲在磁盤上 的數(shù)據(jù)都是加密的。本地數(shù)據(jù)庫加密方案不能用于保護云數(shù)據(jù)庫安全,這是因為即使將本 地數(shù)據(jù)加密方案應(yīng)用于云數(shù)據(jù)庫,數(shù)據(jù)也會在云數(shù)據(jù)庫中的內(nèi)存中解密,而云數(shù)據(jù)庫的內(nèi) 存中也是不安全的,容易遭受來自于云服務(wù)內(nèi)部的攻擊。
[0006] 麻省理工大學(xué)的CryptDB云數(shù)據(jù)庫加密方案主要采用對稱加密,不區(qū)分?jǐn)?shù)據(jù)上傳 者和數(shù)據(jù)申請者,兩者合為一體,都擁有能夠解密數(shù)據(jù)的密鑰,只要有一個數(shù)據(jù)上傳者的終 端系統(tǒng)被攻破,整個系統(tǒng)的安全性就遭到破壞,因此該方案的安全性較低。并且,該方案只 能夠進行密文的加法操作。
[0007] CipherCloud公司的云數(shù)據(jù)加密網(wǎng)關(guān)技術(shù)中包括一種對云數(shù)據(jù)庫進行加密的技術(shù) 方案,其方案主要特征為對稱加密方案和數(shù)據(jù)標(biāo)記技術(shù),并且沒有信息表明該方案支持對 數(shù)值型加密數(shù)據(jù)的計算。
[0008] 可見,現(xiàn)有的云數(shù)據(jù)庫加密技術(shù)的安全性較低,并且不能支持?jǐn)?shù)值型加密數(shù)據(jù)的 多種運算。
【發(fā)明內(nèi)容】
[0009] 本發(fā)明提供了一種云數(shù)據(jù)庫加密方法,能夠提高云數(shù)據(jù)庫的安全性,并且支持?jǐn)?shù) 值型加密數(shù)據(jù)的多種運算。
[0010] 本發(fā)明還提供了一種云數(shù)據(jù)庫加密系統(tǒng)及用于云數(shù)據(jù)庫加密的裝置,能夠提高云 數(shù)據(jù)庫的安全性,并且支持?jǐn)?shù)值型加密數(shù)據(jù)的多種運算。
[0011] 本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
[0012] 一種云數(shù)據(jù)庫加密方法,包括:
[0013] 數(shù)據(jù)上傳客戶端接收來自數(shù)據(jù)申請客戶端的一個以上密鑰對中的公鑰,所述密鑰 對由數(shù)據(jù)申請客戶端生成,且對應(yīng)不同的計算種類;
[0014] 數(shù)據(jù)上傳客戶端對數(shù)據(jù)明文進行預(yù)處理,并根據(jù)可能進行的計算種類,采用對應(yīng) 的密鑰對中的公鑰對預(yù)處理后的數(shù)據(jù)明文進行加密,得到數(shù)據(jù)密文,將所述數(shù)據(jù)密文及其 對應(yīng)的數(shù)據(jù)明文的預(yù)處理方式發(fā)送至云數(shù)據(jù)庫。
[0015] 一種云數(shù)據(jù)庫加密系統(tǒng),包括:
[0016] 數(shù)據(jù)申請客戶端,用于生成一個以上密鑰對,將密鑰對中的公鑰發(fā)送至數(shù)據(jù)上傳 客戶端;所述密鑰對對應(yīng)不同的計算種類;
[0017] 數(shù)據(jù)上傳客戶端,用于對數(shù)據(jù)明文進行預(yù)處理,并根據(jù)可能進行的計算種類,采用 對應(yīng)的密鑰對中的公鑰對預(yù)處理后的數(shù)據(jù)明文進行加密,得到數(shù)據(jù)密文,將所述數(shù)據(jù)密文 及其對應(yīng)的數(shù)據(jù)明文的預(yù)處理方式發(fā)送至云數(shù)據(jù)庫;
[0018] 云數(shù)據(jù)庫,用于保存所述數(shù)據(jù)密文及其對應(yīng)的數(shù)據(jù)明文的預(yù)處理方式。
[0019] 一種用于云數(shù)據(jù)庫加密的數(shù)據(jù)申請客戶端,包括:
[0020] 密碼生成模塊,用于生成一個以上密鑰對,將密鑰對中的公鑰發(fā)送至數(shù)據(jù)上傳客 戶端,并將所述密鑰對發(fā)送至重加密代理;所述密鑰對對應(yīng)不同的計算種類;
[0021] 密文計算請求模塊,用于向云數(shù)據(jù)庫發(fā)送密文計算請求,所述密文計算請求包含 計算數(shù)據(jù)和針對數(shù)據(jù)明文的計算公式;所述計算數(shù)據(jù)為數(shù)據(jù)密文及預(yù)處理方式在云數(shù)據(jù)庫 中的位置信息,或者,所述計算數(shù)據(jù)為數(shù)據(jù)密文以及預(yù)處理方式;
[0022] 結(jié)果處理模塊,用于接收云數(shù)據(jù)庫反饋的最終結(jié)果的密文或包含中間結(jié)果的密文 的表達式,采用對應(yīng)密鑰對中的私鑰對所述最終結(jié)果的密文進行解密,得到最終結(jié)果的明 文;或者,采用對應(yīng)密鑰對中的私鑰對所述中間結(jié)果的密文進行解密,得到中間結(jié)果的明 文,并采用中間結(jié)果的明文及所述表達式計算出最終結(jié)果的明文。
[0023] -種用于云數(shù)據(jù)庫加密的數(shù)據(jù)上傳客戶端,包括:
[0024] 公鑰保存模塊,用于接收并保存對應(yīng)不同計算種類的密鑰對中的公鑰;
[0025] 預(yù)處理及加密模塊,用于對數(shù)據(jù)明文進行預(yù)處理;并根據(jù)可能進行的計算種類,采 用對應(yīng)的密鑰對中的公鑰對預(yù)處理后的數(shù)據(jù)明文進行加密,得到數(shù)據(jù)密文;
[0026] 密文上傳模塊,用于將所述數(shù)據(jù)密文及其對應(yīng)的數(shù)據(jù)明文的預(yù)處理方式發(fā)送至云 數(shù)據(jù)庫。
[0027] -種用于云數(shù)據(jù)庫加密的云數(shù)據(jù)庫,包括:
[0028] 存儲模塊,用于接收并保存數(shù)據(jù)上傳客戶端發(fā)送的數(shù)據(jù)密文及其對應(yīng)的數(shù)據(jù)明文 的預(yù)處理方式;
[0029] 總控模塊,用于接收數(shù)據(jù)申請客戶端發(fā)送的密文計算請求,所述密文計算請求包 含計算數(shù)據(jù)和針對數(shù)據(jù)明文的計算公式;當(dāng)所述計算數(shù)據(jù)為數(shù)據(jù)密文及預(yù)處理方式在存 儲模塊中的位置信息時,根據(jù)所述位置信息及計算公式中的計算種類從存儲模塊中提取對 應(yīng)的數(shù)據(jù)密文及預(yù)處理方式,根據(jù)所述預(yù)處理方式及計算公式生成針對數(shù)據(jù)密文的計算公 式,將所述數(shù)據(jù)密文及針對數(shù)據(jù)密文的計算公式發(fā)送至計算引擎;當(dāng)所述計算數(shù)據(jù)為數(shù)據(jù) 密文以及預(yù)處理方式時,根據(jù)所述預(yù)處理方式及計算公式生成針對數(shù)據(jù)密文的計算公式, 將所述數(shù)據(jù)密文及針對數(shù)據(jù)密文的計算公式發(fā)送至計算引擎;
[0030] 計算引擎,用于采用所述針對數(shù)據(jù)密文的計算公式對數(shù)據(jù)密文進行計算,當(dāng)無法 對數(shù)據(jù)密文繼續(xù)進行計算時,將計算中間結(jié)果及針對計算中間結(jié)果的計算公式發(fā)送至重加 密代理,采用重加密代理返回的數(shù)據(jù)密文繼續(xù)計算,直至計算出最終結(jié)果的密文或包含中 間結(jié)果的密文的表達式,并反饋至數(shù)據(jù)申請客戶端。
[0031] 一種用于云數(shù)據(jù)庫加密的重加密代理,包括:
[0032] 密鑰對保存模塊,用于保存數(shù)據(jù)申請客戶端發(fā)送的一個以上密鑰對,所述密鑰對 對應(yīng)不同的計算種類;
[0033] 計算模塊,用于接收來自云數(shù)據(jù)庫的計算中間結(jié)果及針對計算中間結(jié)果的計算公 式,采用對應(yīng)密鑰對中的私鑰對計算中間結(jié)果進行解密,采用所述針對計算中間結(jié)果的計 算公式對解密后的數(shù)據(jù)進行計算,并采用對應(yīng)密鑰對中的公鑰對計算結(jié)果進行加密,將加 密后的數(shù)據(jù)密文返回至云數(shù)據(jù)庫。
[0034] 可見,本發(fā)明提出的云數(shù)據(jù)庫加密方法、系統(tǒng)及裝置,由數(shù)據(jù)申請客戶端生成對應(yīng) 不同計算種類的密鑰對,將其中的公鑰發(fā)送至數(shù)據(jù)上傳客戶端;數(shù)據(jù)上傳客戶端對數(shù)據(jù)明 文進行預(yù)處理之后,采用可能進行的計算種類所對應(yīng)的密鑰對中的公鑰進行加密,將數(shù)據(jù) 密文及對應(yīng)明文的預(yù)處理方式上傳至云數(shù)據(jù)庫,從而使云數(shù)據(jù)庫可以直接采用數(shù)據(jù)密文進 行多種運算。由于用于解密的私鑰由數(shù)據(jù)申請方擁有,而數(shù)據(jù)申請方通常位于企業(yè)內(nèi)部網(wǎng) 絡(luò)中,因此能夠提高云數(shù)據(jù)庫的安全性。
【專利附圖】
【附圖說明】
[0035] 圖1為本發(fā)明提出的云數(shù)據(jù)庫加密方法實現(xiàn)流程圖;
[0036] 圖2為本發(fā)明中密鑰及數(shù)據(jù)的交互示意圖;
[0037] 圖3為本發(fā)明提出的云數(shù)據(jù)庫加密系統(tǒng)的結(jié)構(gòu)示意圖;
[0038] 圖4為本發(fā)明提出的數(shù)據(jù)申請客戶端的結(jié)構(gòu)示意圖;
[0039] 圖5為本發(fā)明提出的數(shù)據(jù)上傳客戶端的結(jié)構(gòu)示意圖;
[0040] 圖6為本發(fā)明提出的云數(shù)據(jù)庫的結(jié)構(gòu)示意圖;
[0041] 圖7為本發(fā)明提出的重加密代理的結(jié)構(gòu)示意圖。
【具體實施方式】
[0042] 本發(fā)明提出一種云數(shù)據(jù)庫加密方法,其應(yīng)用的系統(tǒng)由三方構(gòu)成,分別為云數(shù)據(jù)庫、 數(shù)據(jù)上傳方和數(shù)據(jù)請求方。云數(shù)據(jù)庫是云計算供應(yīng)商提供給客戶的服務(wù),其中包括對結(jié)構(gòu) 化數(shù)據(jù)(也就是數(shù)據(jù)表)的存儲和計算,云數(shù)據(jù)庫對數(shù)據(jù)的存儲和計算都是位于客戶的網(wǎng)絡(luò) 邊界之外的,不受客戶的控制。數(shù)據(jù)上傳方和數(shù)據(jù)請求方可以視為云數(shù)據(jù)庫客戶的兩種不 同角色,其中數(shù)據(jù)上傳方是云數(shù)據(jù)庫中數(shù)據(jù)的生產(chǎn)者,數(shù)據(jù)上傳方將客戶的數(shù)據(jù)由本地網(wǎng) 絡(luò)環(huán)境上傳到云數(shù)據(jù)庫中。數(shù)據(jù)請求方是云數(shù)據(jù)庫中數(shù)據(jù)的消費者,數(shù)據(jù)請求方可以要求 從云數(shù)據(jù)庫中下載指定的數(shù)據(jù)到本地網(wǎng)絡(luò)環(huán)境,也可以向云數(shù)據(jù)庫發(fā)送對云數(shù)據(jù)庫中數(shù)據(jù) 的計算請求,并將計算結(jié)果下載到本地網(wǎng)絡(luò)環(huán)境。數(shù)據(jù)上傳方和數(shù)據(jù)請求方可以是同一個 實體,如相同的用戶或計算設(shè)備,也可以是不同的實體。
[0043] 以一個大型的家電零售企業(yè)為例,該企業(yè)在全國范圍內(nèi)擁有多家連鎖家電賣場, 其中每個賣場均配置有多臺POS機,這些POS機通過專網(wǎng)或虛擬專用網(wǎng)(VPN,Virtual Private Network)連入企業(yè)總部的網(wǎng)絡(luò),每天的銷售數(shù)據(jù)由POS機產(chǎn)生并傳輸?shù)娇偛康牟?署在小型機上的關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)分析人員通過在數(shù)據(jù)庫中的數(shù)據(jù)上執(zhí)行一定的分析函 數(shù),從而對企業(yè)的銷售情況、資金狀況做出統(tǒng)計和分析結(jié)果。隨著該企業(yè)的業(yè)務(wù)擴展和數(shù)據(jù) 量的增大,用于存儲和分析數(shù)據(jù)的小型機和商業(yè)關(guān)系數(shù)據(jù)系統(tǒng)無法支持業(yè)務(wù)的需要,該企 業(yè)決定將本地的數(shù)據(jù)庫及分析系統(tǒng)遷移至云數(shù)據(jù)庫系統(tǒng)中。遷移后的系統(tǒng)中,POS機生成 的數(shù)據(jù)會通過網(wǎng)絡(luò)傳輸上云數(shù)據(jù)庫中,而總部的數(shù)據(jù)分析人員通過終端向云數(shù)據(jù)庫發(fā)出數(shù) 據(jù)分析的計算指令,并得到計算結(jié)果。在遷移后的場景中,位于賣場的POS機等終端系統(tǒng)構(gòu) 成本發(fā)明系統(tǒng)中的數(shù)據(jù)上傳方,位于總部的數(shù)據(jù)分析人員及其終端構(gòu)成數(shù)據(jù)請求方,而場 景中的云數(shù)據(jù)庫則構(gòu)成系統(tǒng)的云數(shù)據(jù)庫方。
[0044] 應(yīng)用與上述場景,本發(fā)明提出一種云數(shù)據(jù)庫加密系統(tǒng),包括:
[0045] 云數(shù)據(jù)庫:云數(shù)據(jù)庫包括云數(shù)據(jù)庫總控模塊、云數(shù)據(jù)庫存儲模塊,和云數(shù)據(jù)庫密文 計算引擎。本發(fā)明的云數(shù)據(jù)庫加密方法可以用于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫向非關(guān)系型的云數(shù)據(jù) 庫進行安全遷移,保證用戶數(shù)據(jù)安全和隱私,保證對本地數(shù)據(jù)的計算可以遷移到云數(shù)據(jù)庫 上對密文的計算。本發(fā)明的方法可以適用于現(xiàn)有的多種云數(shù)據(jù)庫,我們建議以NoSQL (Not only SQL),即具有良好擴展性和高并發(fā)處理能力的非關(guān)系型云數(shù)據(jù)庫作為本發(fā)明中云數(shù) 據(jù)庫的實例。
[0046] 數(shù)據(jù)上傳客戶端:數(shù)據(jù)上傳客戶端部署于數(shù)據(jù)上傳方,為數(shù)據(jù)上傳方提供用戶界 面和應(yīng)用程序開發(fā)界面。數(shù)據(jù)上傳客戶端從用戶或用戶代理程序那里獲得待上傳到云服務(wù) 器的明文數(shù)據(jù),對數(shù)據(jù)進行預(yù)處理和加密,并完成密文的上傳。數(shù)據(jù)上傳客戶端根據(jù)可能進 行計算的種類對經(jīng)過預(yù)處理后的明文采用不同的加密算法進行加密。
[0047]數(shù)據(jù)申請客戶端:數(shù)據(jù)申請客戶端部署于數(shù)據(jù)申請方,為數(shù)據(jù)申請方提供用戶界 面和應(yīng)用程序開發(fā)界面。數(shù)據(jù)申請方客戶端從用戶或用戶代理程序那里獲得計算請求,將 計算請求以及參與計算的數(shù)據(jù)發(fā)送給云數(shù)據(jù)庫,并從云數(shù)據(jù)庫那里獲得返回的計算結(jié)果, 將結(jié)果的密文解密并進行數(shù)據(jù)處理,將處理后的最終明文結(jié)果返回給用戶或用戶代理程 序。
[0048] 重加密代理:重加密代理可以是一個在線的服務(wù)器也可以是一個獨立的插件,部 署于數(shù)據(jù)申請方可信的環(huán)境中,并可以和云數(shù)據(jù)庫通信。重加密代理是屬于數(shù)據(jù)申請方的, 并被數(shù)據(jù)申請方信任。重加密代理主要用于為云數(shù)據(jù)庫提供服務(wù),云數(shù)據(jù)庫將無法計算的 表達式和密文數(shù)據(jù)發(fā)送給重加密代理,重加密代理對密文解密后,采用明文進行計算,并將 計算結(jié)果重新加密,將結(jié)果密文返回給云數(shù)據(jù)庫。
[0049] 應(yīng)用上述系統(tǒng),本發(fā)明提出一種云數(shù)據(jù)庫加密方法,如圖1為該方法實現(xiàn)流程圖, 包括:
[0050] 步驟101:數(shù)據(jù)上傳客戶端接收來自數(shù)據(jù)申請客戶端的一個以上密鑰對中的公 鑰,所述密鑰對由數(shù)據(jù)申請客戶端生成,且對應(yīng)不同的計算種類;
[0051] 步驟102 :數(shù)據(jù)上傳客戶端對數(shù)據(jù)明文進行預(yù)處理,并根據(jù)可能進行的計算種類, 采用對應(yīng)的密鑰對中的公鑰對預(yù)處理后的數(shù)據(jù)明文進行加密,得到數(shù)據(jù)密文,將所述數(shù)據(jù) 密文及其對應(yīng)的數(shù)據(jù)明文的預(yù)處理方式發(fā)送至云數(shù)據(jù)庫。
[0052] 由于云數(shù)據(jù)庫是對數(shù)碼密文進行計算的,并且必須保證從數(shù)據(jù)密文的計算結(jié)果能 夠得到等于數(shù)據(jù)明文的計算結(jié)果,為達到這一要求,步驟101中數(shù)據(jù)申請客戶端生成的密 鑰對需要滿足特定的加密方案,可以為加法同態(tài)加密密鑰對、乘法同態(tài)加密密鑰對或者一 定程度的全同態(tài)加密密鑰對。具體如下:
[0053] 加法同態(tài)加密方案:加密同態(tài)加密方案屬于公鑰加密,此類方案支持密文之間的 加法操作,密文之和解密后等于對應(yīng)的明文之和。通常加法同態(tài)加密方案的明文值域為非 負整數(shù),方案支持任意多次的密文間加法運算,但不支持密文之間的乘法運算和其他運算。 目前已經(jīng)有多種加法同態(tài)方案,在實際部署中本發(fā)明建議采用Paillier加法同態(tài)加密方 案。
[0054] 乘法同態(tài)加密方案:乘法同態(tài)加密屬于公鑰加密,此類方案支持密文之間的乘法 操作,密文的乘積解密后等于對應(yīng)文明的乘積。通常乘法同態(tài)加密方案的明文值域為非負 整數(shù),方案支持任意多次的密文間乘法運算,但不支持密文之間的加法運算或其他運算。目 前已經(jīng)有多種乘法同態(tài)方案,在實際部署中本發(fā)明建議采用ElGamal乘法同態(tài)加密方案。
[0055] 一定程度的全同態(tài)加密方案(SomewhatFullyHomomorphicEncryption):-些同 態(tài)加密方案支持任意數(shù)量的密文加法運算和少量密文乘法運算,這些同態(tài)加密方案又稱為 一定程度的全同態(tài)加密方案。通常一定程度的全同態(tài)加密方案的明文值域為非負整數(shù)。在 實際部署中本發(fā)明建議采用BGN方案和BV方案,其中BGN同態(tài)加密支持無限次數(shù)的密文加 法運算和一次密文乘法運算,BV加密方案可以支持少量的乘法。另外,全同態(tài)加密是可以 同時支持無限次數(shù)密文加法運算和乘法運算的加密方案,目前已經(jīng)出現(xiàn)多個全同態(tài)加密方 案,但是效率較低。
[0056] 上述加密方案都屬于公鑰加密方案。公鑰加密方案的使用需要在加密之前進行密 鑰的生成和分發(fā)。公鑰加密方案的密鑰對由公鑰和私鑰構(gòu)成,其中公鑰用于數(shù)據(jù)加密,并需 要以可信的方式分發(fā)到所有進行加密的終端,在本發(fā)明中為數(shù)據(jù)上傳客戶端;私鑰用于數(shù) 據(jù)解密,需要安全地保存在本地,在本發(fā)明中為數(shù)據(jù)申請客戶端。
[0057] 在本發(fā)明中,由數(shù)據(jù)申請客戶端安全地生成公鑰和私鑰密鑰對。在實際部署中本 發(fā)明建議在離線的安全密碼機或密碼卡中生成密鑰對。
[0058] 數(shù)據(jù)申請客戶端在本地系統(tǒng)中安全地存儲密鑰對。在實際部署中本發(fā)明建議通過 HSM(HardwareSecurityModule,硬件安全模塊)來存儲密鑰對,對于個人用戶終端可以采 用USBKey形式的HSM,對于企業(yè)應(yīng)用可以采用PCI卡或者主機形式的HSM。
[0059] 數(shù)據(jù)申請客戶端將密鑰對通過上述安全方式部署在重加密代理中。
[0060] 數(shù)據(jù)申請客戶端通過可信的方式將公鑰集合分發(fā)給數(shù)據(jù)上傳客戶端。在實際部署 中本發(fā)明建議通過PKI(公鑰基礎(chǔ)設(shè)施)體制分發(fā)密鑰,也就是通過向CA權(quán)威中心申請公 鑰證書,并且將公鑰證書分發(fā)給數(shù)據(jù)上傳客戶端。
[0061] 由上述對加密方案的介紹可見,加法同態(tài)加密、乘法同態(tài)加密和一定程度的全同 態(tài)加密都要求數(shù)據(jù)明文的值域為非負整數(shù),并且只能支持加法和乘法計算;而在實際情況 中,數(shù)據(jù)上傳客戶端上傳的數(shù)據(jù)明文還包括其他類型,并且數(shù)據(jù)申請客戶端請求的計算還 包括加法和乘法以外的運算。為了解決這一矛盾,本發(fā)明可以采用如下兩種措施:
[0062] 第一,數(shù)據(jù)上傳客戶端在對數(shù)據(jù)明文進行加密之前對數(shù)據(jù)明文進行預(yù)處理,使數(shù) 據(jù)滿足計算要求并支持更多種類的計算;
[0063] 第二,設(shè)置重加密代理,重加密代理從數(shù)據(jù)申請客戶端處獲取密鑰對。當(dāng)云數(shù)據(jù)庫 無法繼續(xù)計算時,將計算中間結(jié)果及計算公式發(fā)送至重加密代理;重加密代理采用密鑰對 中的私鑰進行解密,采用解密后的數(shù)據(jù)進行計算,并對計算結(jié)果采用密鑰對中的公鑰進行 加密,將加密后的結(jié)果反饋至云數(shù)據(jù)庫;云數(shù)據(jù)庫采用重加密代理返回的數(shù)據(jù)密文繼續(xù)計 算,當(dāng)無法繼續(xù)計算時重復(fù)前述過程,直至計算出最終結(jié)果的密文或包含中間結(jié)果的密文 的表達式。
[0064] 如圖2為本發(fā)明中密鑰及數(shù)據(jù)的交互示意圖。數(shù)據(jù)申請客戶端生成密鑰對,將密 鑰對中的公鑰發(fā)送至數(shù)據(jù)上傳客戶端,并將密鑰對發(fā)送至重加密代理;數(shù)據(jù)上傳客戶端對 數(shù)據(jù)明文進行預(yù)處理后,對預(yù)處理的結(jié)果采用公鑰進行加密,將數(shù)據(jù)密文及預(yù)處理方式上 傳至云數(shù)據(jù)庫。數(shù)據(jù)申請客戶端向云數(shù)據(jù)庫發(fā)送密文計算請求;云數(shù)據(jù)庫采用數(shù)據(jù)密文進 行計算,當(dāng)無法計算時,將計算中間結(jié)果及計算公式發(fā)送至重加密代理;重加密代理將計算 中間結(jié)果解密,采用解密后的數(shù)據(jù)進行計算,得到計算結(jié)果,再將計算結(jié)果加密,將加密后 的數(shù)據(jù)密文返回至云數(shù)據(jù)庫;云數(shù)據(jù)庫與重加密代理的交互可能重復(fù)多次。最終,云數(shù)據(jù)庫 將結(jié)果密文發(fā)送至數(shù)據(jù)申請客戶端,數(shù)據(jù)申請客戶端對結(jié)果密文解密,得到結(jié)果明文。
[0065] 以下舉具體的實施例詳細介紹。
[0066] 實施例一:
[0067] 本實施例介紹對數(shù)據(jù)明文的預(yù)處理方式。預(yù)處理方式可以為:根據(jù)可能進行的計 算種類,對數(shù)據(jù)明文進行擴展;之后,將數(shù)據(jù)明文及擴展后的數(shù)據(jù)映射為非負整數(shù)。
[0068] 以下詳細介紹。
[0069] 一個待遷移的本地數(shù)據(jù)庫系統(tǒng)包含如下內(nèi)容:
[0070] 對數(shù)據(jù)表結(jié)構(gòu)的定義,數(shù)據(jù)表中的每列都需要制定一個數(shù)據(jù)類型,數(shù)據(jù)表支持的 數(shù)據(jù)類型分為三類:分別是數(shù)值型、字符串型和二進制數(shù)據(jù),其中數(shù)值型又可以細分為整數(shù) 和實數(shù),整數(shù)可以再分為有符號整數(shù)和無符號整數(shù)。數(shù)值型數(shù)據(jù)類型還可以指定不同的精 度,即采用多少二進制位來表示一個整數(shù)。
[0071] 數(shù)據(jù)庫中的數(shù)據(jù)可以視為一個二維表,其中每行可以看做一個記錄,一個記錄包 含多個字段,每個字段的值域由表結(jié)構(gòu)定義中的列數(shù)據(jù)類型規(guī)定。
[0072] 對數(shù)據(jù)庫數(shù)據(jù)的統(tǒng)計和分析算法,例如,針對下表所示的數(shù)據(jù)表,數(shù)據(jù)申請方可以 要求在月收入一列做平均值的計算。
[0073]
【權(quán)利要求】
1. 一種云數(shù)據(jù)庫加密方法,其特征在于,所述方法包括: 數(shù)據(jù)上傳客戶端接收來自數(shù)據(jù)申請客戶端的一個以上密鑰對中的公鑰,所述密鑰對由 數(shù)據(jù)申請客戶端生成,且對應(yīng)不同的計算種類; 數(shù)據(jù)上傳客戶端對數(shù)據(jù)明文進行預(yù)處理,并根據(jù)可能進行的計算種類,采用對應(yīng)的密 鑰對中的公鑰對預(yù)處理后的數(shù)據(jù)明文進行加密,得到數(shù)據(jù)密文,將所述數(shù)據(jù)密文及其對應(yīng) 的數(shù)據(jù)明文的預(yù)處理方式發(fā)送至云數(shù)據(jù)庫。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述密鑰對為加法同態(tài)加密密鑰對、乘法 同態(tài)加密密鑰對或者一定程度的全同態(tài)加密密鑰對。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)上傳客戶端對數(shù)據(jù)明文進行預(yù) 處理的方式為: 根據(jù)可能進行的計算種類,對數(shù)據(jù)明文進行擴展; 將數(shù)據(jù)明文及擴展后的數(shù)據(jù)映射為非負整數(shù)。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述對數(shù)據(jù)明文進行擴展的方式為: 計算數(shù)據(jù)明文的負數(shù)、倒數(shù)或冪。
5. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將數(shù)據(jù)明文及擴展后的數(shù)據(jù)映射為 非負整數(shù)的方式為: 當(dāng)數(shù)據(jù)明文或擴展后的數(shù)據(jù)為有符號整數(shù)時,將該數(shù)據(jù)明文或擴展后的數(shù)據(jù)與一個正 整數(shù)相加,得到映射后的非負整數(shù); 當(dāng)數(shù)據(jù)明文或擴展后的數(shù)據(jù)為非負浮點數(shù)時,將該數(shù)據(jù)明文或擴展后的數(shù)據(jù)與一個正 整數(shù)相乘,得到映射后的非負整數(shù); 當(dāng)數(shù)據(jù)明文或擴展后的數(shù)據(jù)為負浮點數(shù)時,將該數(shù)據(jù)明文或擴展后的數(shù)據(jù)與一個正整 數(shù)相乘,并將相乘后的結(jié)果與一個正整數(shù)相加,得到映射后的非負整數(shù); 當(dāng)數(shù)據(jù)明文為枚舉類型數(shù)據(jù)時,將該數(shù)據(jù)明文直接映射為非負整數(shù)。
6. 根據(jù)權(quán)利要求1至5任意一項所述的方法,其特征在于,所述方法進一步包括:數(shù)據(jù) 申請客戶端將生成的密鑰對發(fā)送至重加密代理; 數(shù)據(jù)申請客戶端向云數(shù)據(jù)庫發(fā)送密文計算請求,所述密文計算請求包含計算數(shù)據(jù)和針 對數(shù)據(jù)明文的計算公式;所述計算數(shù)據(jù)為數(shù)據(jù)密文及預(yù)處理方式在云數(shù)據(jù)庫中的位置信 息,或者,所述計算數(shù)據(jù)為數(shù)據(jù)密文以及預(yù)處理方式; 云數(shù)據(jù)庫根據(jù)所述位置信息及計算公式中的計算種類從云數(shù)據(jù)庫中提取對應(yīng)的數(shù)據(jù) 密文及預(yù)處理方式,根據(jù)所述預(yù)處理方式及計算公式生成針對數(shù)據(jù)密文的計算公式,對提 取的數(shù)據(jù)密文進行計算;或者,云數(shù)據(jù)庫根據(jù)接收的預(yù)處理方式及計算公式生成針對數(shù)據(jù) 密文的計算公式,對接收的數(shù)據(jù)密文進行計算; 當(dāng)云數(shù)據(jù)庫無法對數(shù)據(jù)密文繼續(xù)進行計算時,將計算中間結(jié)果及針對計算中間結(jié)果的 計算公式發(fā)送至重加密代理,重加密代理采用對應(yīng)密鑰對中的私鑰對計算中間結(jié)果進行解 密,采用所述針對計算中間結(jié)果的計算公式對解密后的數(shù)據(jù)進行計算,并采用對應(yīng)密鑰對 中的公鑰對計算結(jié)果進行加密,將加密后的數(shù)據(jù)密文返回至云數(shù)據(jù)庫; 云數(shù)據(jù)庫采用所述重加密代理返回的數(shù)據(jù)密文繼續(xù)計算,直至計算出最終結(jié)果的密文 或包含中間結(jié)果的密文的表達式,并反饋至數(shù)據(jù)申請客戶端; 數(shù)據(jù)申請客戶端采用對應(yīng)密鑰對中的私鑰對所述最終結(jié)果的密文進行解密,得到最終 結(jié)果的明文;或者,數(shù)據(jù)申請客戶端采用對應(yīng)密鑰對中的私鑰對所述中間結(jié)果的密文進行 解密,得到中間結(jié)果的明文,并采用中間結(jié)果的明文及所述表達式計算出最終結(jié)果的明文。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述云數(shù)據(jù)庫判定無法對數(shù)據(jù)密文繼續(xù) 進行計算的方式為:云數(shù)據(jù)庫為計算中間結(jié)果設(shè)置累加標(biāo)記,所述累加標(biāo)記記錄該計算中 間結(jié)果已經(jīng)進行的計算種類及次數(shù),當(dāng)所述次數(shù)達到對應(yīng)密鑰對所支持的計算次數(shù)上限 時,判定無法對數(shù)據(jù)密文繼續(xù)進行計算; 當(dāng)云數(shù)據(jù)庫收到重加密代理返回的數(shù)據(jù)密文時,將所述累加標(biāo)記中的計算次數(shù)初始化 為〇。
8. -種云數(shù)據(jù)庫加密系統(tǒng),其特征在于,所述系統(tǒng)包括: 數(shù)據(jù)申請客戶端,用于生成一個以上密鑰對,將密鑰對中的公鑰發(fā)送至數(shù)據(jù)上傳客戶 端;所述密鑰對對應(yīng)不同的計算種類; 數(shù)據(jù)上傳客戶端,用于對數(shù)據(jù)明文進行預(yù)處理,并根據(jù)可能進行的計算種類,采用對應(yīng) 的密鑰對中的公鑰對預(yù)處理后的數(shù)據(jù)明文進行加密,得到數(shù)據(jù)密文,將所述數(shù)據(jù)密文及其 對應(yīng)的數(shù)據(jù)明文的預(yù)處理方式發(fā)送至云數(shù)據(jù)庫; 云數(shù)據(jù)庫,用于保存所述數(shù)據(jù)密文及其對應(yīng)的數(shù)據(jù)明文的預(yù)處理方式。
9. 根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述數(shù)據(jù)申請客戶端生成的密鑰對為加 法同態(tài)加密密鑰對、乘法同態(tài)加密密鑰對或者一定程度的全同態(tài)加密密鑰對。
10. 根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述數(shù)據(jù)上傳客戶端對數(shù)據(jù)明文進行預(yù) 處理的方式為: 根據(jù)可能進行的計算種類,對數(shù)據(jù)明文進行擴展; 將數(shù)據(jù)明文及擴展后的數(shù)據(jù)映射為非負整數(shù)。
11. 根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述數(shù)據(jù)上傳客戶端對數(shù)據(jù)明文進行 擴展的方式為: 計算數(shù)據(jù)明文的負數(shù)、倒數(shù)或冪。
12. 根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述數(shù)據(jù)上傳客戶端將數(shù)據(jù)明文及擴 展后的數(shù)據(jù)映射為非負整數(shù)的方式為: 當(dāng)數(shù)據(jù)明文或擴展后的數(shù)據(jù)為有符號整數(shù)時,將該數(shù)據(jù)明文或擴展后的數(shù)據(jù)與一個正 整數(shù)相加,得到映射后的非負整數(shù); 當(dāng)數(shù)據(jù)明文或擴展后的數(shù)據(jù)為非負浮點數(shù)時,將該數(shù)據(jù)明文或擴展后的數(shù)據(jù)與一個正 整數(shù)相乘,得到映射后的非負整數(shù); 當(dāng)數(shù)據(jù)明文或擴展后的數(shù)據(jù)為負浮點數(shù)時,將該數(shù)據(jù)明文或擴展后的數(shù)據(jù)與一個正整 數(shù)相乘,并將相乘后的結(jié)果與一個正整數(shù)相加,得到映射后的非負整數(shù); 當(dāng)數(shù)據(jù)明文為枚舉類型數(shù)據(jù)時,將該數(shù)據(jù)明文直接映射為非負整數(shù)。
13. 根據(jù)權(quán)利要求8至12任意一項所述的系統(tǒng),其特征在于,所述系統(tǒng)進一步包括重加 密代理; 所述數(shù)據(jù)申請客戶端還將所述密鑰對發(fā)送至重加密代理; 數(shù)據(jù)申請客戶端還用于,向云數(shù)據(jù)庫發(fā)送密文計算請求,所述密文計算請求包含計算 數(shù)據(jù)和針對數(shù)據(jù)明文的計算公式;所述計算數(shù)據(jù)為數(shù)據(jù)密文及預(yù)處理方式在云數(shù)據(jù)庫中的 位置信息,或者,所述計算數(shù)據(jù)為數(shù)據(jù)密文以及預(yù)處理方式;還用于采用對應(yīng)密鑰對中的私 鑰對云數(shù)據(jù)庫反饋的最終結(jié)果的密文進行解密,得到最終結(jié)果的明文;或者,采用對應(yīng)密鑰 對中的私鑰對云數(shù)據(jù)庫反饋的中間結(jié)果的密文進行解密,得到中間結(jié)果的明文,并采用中 間結(jié)果的明文及云數(shù)據(jù)庫反饋的表達式計算出最終結(jié)果的明文; 云數(shù)據(jù)庫還用于,根據(jù)所述位置信息及計算公式中的計算種類提取對應(yīng)的數(shù)據(jù)密文及 預(yù)處理方式,根據(jù)所述預(yù)處理方式及計算公式生成針對數(shù)據(jù)密文的計算公式,對提取的數(shù) 據(jù)密文進行計算;或者,根據(jù)接收的預(yù)處理方式及計算公式生成針對數(shù)據(jù)密文的計算公式, 對接收的數(shù)據(jù)密文進行計算;還用于當(dāng)無法對數(shù)據(jù)密文繼續(xù)進行計算時,將計算中間結(jié)果 及針對計算中間結(jié)果的計算公式發(fā)送至重加密代理;并接收重加密代理返回的數(shù)據(jù)密文, 采用所述數(shù)據(jù)密文繼續(xù)計算,直至計算出最終結(jié)果的密文或包含中間結(jié)果的密文的表達 式,并反饋至數(shù)據(jù)申請客戶端; 所述重加密代理用于,采用對應(yīng)密鑰對中的私鑰對所述計算中間結(jié)果進行解密,采用 所述針對計算中間結(jié)果的計算公式對解密后的數(shù)據(jù)進行計算,并采用對應(yīng)密鑰對中的公鑰 對計算結(jié)果進行加密,將加密后的數(shù)據(jù)密文返回至云數(shù)據(jù)庫。
14. 根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,所述云數(shù)據(jù)庫判定無法對數(shù)據(jù)密文繼 續(xù)進行計算的方式為:云數(shù)據(jù)庫為計算中間結(jié)果設(shè)置累加標(biāo)記,所述累加標(biāo)記記錄該計算 中間結(jié)果已經(jīng)進行的計算種類及次數(shù),當(dāng)所述次數(shù)達到對應(yīng)密鑰對所支持的計算次數(shù)上限 時,判定無法對數(shù)據(jù)密文繼續(xù)進行計算; 當(dāng)云數(shù)據(jù)庫收到重加密代理返回的數(shù)據(jù)密文時,將所述累加標(biāo)記中的計算次數(shù)初始化 為〇。
15. -種用于云數(shù)據(jù)庫加密的數(shù)據(jù)申請客戶端,其特征在于,所述數(shù)據(jù)申請客戶端包 括: 密碼生成模塊,用于生成一個以上密鑰對,將密鑰對中的公鑰發(fā)送至數(shù)據(jù)上傳客戶端, 并將所述密鑰對發(fā)送至重加密代理;所述密鑰對對應(yīng)不同的計算種類; 密文計算請求模塊,用于向云數(shù)據(jù)庫發(fā)送密文計算請求,所述密文計算請求包含計算 數(shù)據(jù)和針對數(shù)據(jù)明文的計算公式;所述計算數(shù)據(jù)為數(shù)據(jù)密文及預(yù)處理方式在云數(shù)據(jù)庫中的 位置信息,或者,所述計算數(shù)據(jù)為數(shù)據(jù)密文以及預(yù)處理方式; 結(jié)果處理模塊,用于接收云數(shù)據(jù)庫反饋的最終結(jié)果的密文或包含中間結(jié)果的密文的表 達式,采用對應(yīng)密鑰對中的私鑰對所述最終結(jié)果的密文進行解密,得到最終結(jié)果的明文;或 者,采用對應(yīng)密鑰對中的私鑰對所述中間結(jié)果的密文進行解密,得到中間結(jié)果的明文,并采 用中間結(jié)果的明文及所述表達式計算出最終結(jié)果的明文。
16. 根據(jù)權(quán)利要求15所述的數(shù)據(jù)申請客戶端,其特征在于,所述密鑰對為加法同態(tài)加 密密鑰對、乘法同態(tài)加密密鑰對或者一定程度的全同態(tài)加密密鑰對。
17. -種用于云數(shù)據(jù)庫加密的數(shù)據(jù)上傳客戶端,其特征在于,所述數(shù)據(jù)上傳客戶端包 括: 公鑰保存模塊,用于接收并保存對應(yīng)不同計算種類的密鑰對中的公鑰; 預(yù)處理及加密模塊,用于對數(shù)據(jù)明文進行預(yù)處理;并根據(jù)可能進行的計算種類,采用對 應(yīng)的密鑰對中的公鑰對預(yù)處理后的數(shù)據(jù)明文進行加密,得到數(shù)據(jù)密文; 密文上傳模塊,用于將所述數(shù)據(jù)密文及其對應(yīng)的數(shù)據(jù)明文的預(yù)處理方式發(fā)送至云數(shù)據(jù) 庫。
18. 根據(jù)權(quán)利要求17所述的數(shù)據(jù)上傳客戶端,其特征在于,所述預(yù)處理及加密模塊對 數(shù)據(jù)明文進行預(yù)處理的方式為: 根據(jù)可能進行的計算種類,對數(shù)據(jù)明文進行擴展; 將數(shù)據(jù)明文及擴展后的數(shù)據(jù)映射為非負整數(shù)。
19. 根據(jù)權(quán)利要求18所述的數(shù)據(jù)上傳客戶端,其特征在于,所述預(yù)處理及加密模塊對 數(shù)據(jù)明文進行擴展的方式為: 計算數(shù)據(jù)明文的負數(shù)、倒數(shù)或冪。
20. 根據(jù)權(quán)利要求18所述的數(shù)據(jù)上傳客戶端,其特征在于,所述預(yù)處理及加密模塊將 數(shù)據(jù)明文及擴展后的數(shù)據(jù)映射為非負整數(shù)的方式為: 當(dāng)數(shù)據(jù)明文或擴展后的數(shù)據(jù)為有符號整數(shù)時,將該數(shù)據(jù)明文或擴展后的數(shù)據(jù)與一個正 整數(shù)相加,得到映射后的非負整數(shù); 當(dāng)數(shù)據(jù)明文或擴展后的數(shù)據(jù)為非負浮點數(shù)時,將該數(shù)據(jù)明文或擴展后的數(shù)據(jù)與一個正 整數(shù)相乘,得到映射后的非負整數(shù); 當(dāng)數(shù)據(jù)明文或擴展后的數(shù)據(jù)為負浮點數(shù)時,將該數(shù)據(jù)明文或擴展后的數(shù)據(jù)與一個正整 數(shù)相乘,并將相乘后的結(jié)果與一個正整數(shù)相加,得到映射后的非負整數(shù); 當(dāng)數(shù)據(jù)明文為枚舉類型數(shù)據(jù)時,將該數(shù)據(jù)明文直接映射為非負整數(shù)。
21. -種用于云數(shù)據(jù)庫加密的云數(shù)據(jù)庫,其特征在于,所述云數(shù)據(jù)庫包括: 存儲模塊,用于接收并保存數(shù)據(jù)上傳客戶端發(fā)送的數(shù)據(jù)密文及其對應(yīng)的數(shù)據(jù)明文的預(yù) 處理方式; 總控模塊,用于接收數(shù)據(jù)申請客戶端發(fā)送的密文計算請求,所述密文計算請求包含計 算數(shù)據(jù)和針對數(shù)據(jù)明文的計算公式;當(dāng)所述計算數(shù)據(jù)為數(shù)據(jù)密文及預(yù)處理方式在存儲模塊 中的位置信息時,根據(jù)所述位置信息及計算公式中的計算種類從存儲模塊中提取對應(yīng)的數(shù) 據(jù)密文及預(yù)處理方式,根據(jù)所述預(yù)處理方式及計算公式生成針對數(shù)據(jù)密文的計算公式,將 所述數(shù)據(jù)密文及針對數(shù)據(jù)密文的計算公式發(fā)送至計算引擎;當(dāng)所述計算數(shù)據(jù)為數(shù)據(jù)密文以 及預(yù)處理方式時,根據(jù)所述預(yù)處理方式及計算公式生成針對數(shù)據(jù)密文的計算公式,將所述 數(shù)據(jù)密文及針對數(shù)據(jù)密文的計算公式發(fā)送至計算引擎; 計算引擎,用于采用所述針對數(shù)據(jù)密文的計算公式對數(shù)據(jù)密文進行計算,當(dāng)無法對數(shù) 據(jù)密文繼續(xù)進行計算時,將計算中間結(jié)果及針對計算中間結(jié)果的計算公式發(fā)送至重加密代 理,采用重加密代理返回的數(shù)據(jù)密文繼續(xù)計算,直至計算出最終結(jié)果的密文或包含中間結(jié) 果的密文的表達式,并反饋至數(shù)據(jù)申請客戶端。
22. 根據(jù)權(quán)利要21所述的云數(shù)據(jù)庫,其特征在于,所述計算引擎判定無法對數(shù)據(jù)密文 繼續(xù)進行計算的方式為:為計算中間結(jié)果設(shè)置累加標(biāo)記,所述累加標(biāo)記記錄該計算中間結(jié) 果已經(jīng)進行的計算種類及次數(shù),當(dāng)所述次數(shù)達到對應(yīng)密鑰對所支持的計算次數(shù)上限時,判 定無法對數(shù)據(jù)密文繼續(xù)進行計算; 當(dāng)計算引擎收到重加密代理返回的數(shù)據(jù)密文時,將所述累加標(biāo)記中的計算次數(shù)初始化 為〇。
23. -種用于云數(shù)據(jù)庫加密的重加密代理,其特征在于,所述重加密代理包括: 密鑰對保存模塊,用于保存數(shù)據(jù)申請客戶端發(fā)送的一個以上密鑰對,所述密鑰對對應(yīng) 不同的計算種類; 計算模塊,用于接收來自云數(shù)據(jù)庫的計算中間結(jié)果及針對計算中間結(jié)果的計算公式, 采用對應(yīng)密鑰對中的私鑰對計算中間結(jié)果進行解密,采用所述針對計算中間結(jié)果的計算公 式對解密后的數(shù)據(jù)進行計算,并采用對應(yīng)密鑰對中的公鑰對計算結(jié)果進行加密,將加密后 的數(shù)據(jù)密文返回至云數(shù)據(jù)庫。
【文檔編號】H04L9/32GK104426973SQ201310393464
【公開日】2015年3月18日 申請日期:2013年9月3日 優(yōu)先權(quán)日:2013年9月3日
【發(fā)明者】侯長江, 劉斐, 柏洪濤, 任蘭芳, 王靜, 左敏, 劉芳 申請人:中國移動通信集團公司