欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種支持密文數(shù)據(jù)操作的關(guān)系型數(shù)據(jù)庫(kù)安全外包數(shù)據(jù)處理方法與流程

文檔序號(hào):12825473閱讀:281來(lái)源:國(guó)知局
本發(fā)明涉及一種支持密文數(shù)據(jù)操作的關(guān)系型數(shù)據(jù)庫(kù)安全外包數(shù)據(jù)處理方法,屬云計(jì)算安全和數(shù)據(jù)庫(kù)安全領(lǐng)域。
背景技術(shù)
::目前,將私有的關(guān)系型數(shù)據(jù)庫(kù)外包至云服務(wù)供應(yīng)商,可以為商業(yè)團(tuán)體以及個(gè)人用戶(hù)帶來(lái)巨大的便捷和收益,然而與此同時(shí),外包數(shù)據(jù)庫(kù)的安全和隱私問(wèn)題日益嚴(yán)峻。云計(jì)算用戶(hù)的敏感信息(例如金融交易記錄、個(gè)人醫(yī)療檔案等)正面臨著不同程度的濫用和泄露。公有云環(huán)境通常使用云端驅(qū)動(dòng)的數(shù)據(jù)庫(kù)加密技術(shù)抵御外部攻擊者的惡意入侵,但是依然難以阻止不可信云服務(wù)供應(yīng)商的內(nèi)部攻擊。因此,為避免云端加密可能會(huì)帶來(lái)的隱私泄露的問(wèn)題,云數(shù)據(jù)庫(kù)加密應(yīng)完全由數(shù)據(jù)庫(kù)擁有者實(shí)施,從而真正地實(shí)現(xiàn)“加密后外包與查詢(xún)后解密”的服務(wù)模式。客戶(hù)端加密主要面臨兩項(xiàng)難題:其一,選用何種加密算法對(duì)關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行加密;其二,如何對(duì)加密后的密文關(guān)系型數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)操作。相關(guān)的研究已經(jīng)取得了一系列重要的成果,包括全同態(tài)加密技術(shù)、部分同態(tài)加密技術(shù)等。更多的工作則圍繞密文域等值查詢(xún)、范圍查詢(xún)、聚合查詢(xún)以及模糊查詢(xún)中的一種或者多種而展開(kāi),然而其所支持的數(shù)據(jù)操作種類(lèi)十分有限。某些綜合的密文數(shù)據(jù)庫(kù)查詢(xún)方案能夠支持部分基于sql的查詢(xún)操作,但是存在以下四點(diǎn)不足:(1)不同類(lèi)型的sql語(yǔ)句需調(diào)用不同的加密技術(shù)以完成解釋?zhuān)瑢?dǎo)致數(shù)據(jù)庫(kù)服務(wù)性能降低;(2)云服務(wù)供應(yīng)商無(wú)法直接執(zhí)行sql語(yǔ)句,云服務(wù)模式難以徹底擺脫對(duì)可信代理的依賴(lài);(3)云服務(wù)供應(yīng)商執(zhí)行數(shù)據(jù)操作前需獲知解密密鑰,尚未完全克服云端加密的安全風(fēng)險(xiǎn);(4)終端用戶(hù)的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)模式以及云數(shù)據(jù)庫(kù)的關(guān)系結(jié)構(gòu)被迫發(fā)生變化。技術(shù)實(shí)現(xiàn)要素:針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明的目的在于提供一種支持密文數(shù)據(jù)操作的關(guān)系型數(shù)據(jù)庫(kù)安全外包數(shù)據(jù)處理方法。這種方法保護(hù)了關(guān)系型數(shù)據(jù)庫(kù)在外包過(guò)程中的數(shù)據(jù)機(jī)密性及有效數(shù)據(jù)利用。所采用的客戶(hù)端加密技術(shù)從根本上解決了云端加密的安全問(wèn)題。圖1是本發(fā)明的模塊設(shè)計(jì)與總體架構(gòu)。本發(fā)明解決其技術(shù)問(wèn)題所用的技術(shù)方案是:一種支持密文數(shù)據(jù)操作的關(guān)系型數(shù)據(jù)庫(kù)安全外包數(shù)據(jù)處理方法(包括查詢(xún)請(qǐng)求、插入請(qǐng)求、更新請(qǐng)求和刪除請(qǐng)求)。該方法作用于終端用戶(hù)、數(shù)據(jù)庫(kù)擁有者和云服務(wù)供應(yīng)商三者之間。關(guān)系型數(shù)據(jù)庫(kù)在外包前由數(shù)據(jù)庫(kù)擁有者負(fù)責(zé)加密,然后由云服務(wù)供應(yīng)商在外包密文數(shù)據(jù)庫(kù)上直接執(zhí)行基于sql的全類(lèi)型數(shù)據(jù)操作,返回的查詢(xún)結(jié)果則由數(shù)據(jù)庫(kù)擁有者代替終端用戶(hù)進(jìn)行解密。具體地,本發(fā)明的方法流程為:1.數(shù)據(jù)庫(kù)擁有者將關(guān)系型數(shù)據(jù)庫(kù)安全外包至云服務(wù)供應(yīng)商:(1)數(shù)據(jù)庫(kù)擁有者生成私有密鑰;(2)數(shù)據(jù)庫(kù)擁有者經(jīng)密碼模塊對(duì)待外包數(shù)據(jù)庫(kù)進(jìn)行加密后生成外包密文數(shù)據(jù)庫(kù),并發(fā)送至云服務(wù)供應(yīng)商;(3)云服務(wù)供應(yīng)商接收并原地存儲(chǔ)該外包密文數(shù)據(jù)庫(kù);(4)數(shù)據(jù)庫(kù)擁有者在云服務(wù)供應(yīng)商處創(chuàng)建用戶(hù)自定義函數(shù)。2.終端用戶(hù)請(qǐng)求對(duì)關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行隱私保護(hù)的數(shù)據(jù)操作:(1)終端用戶(hù)登錄數(shù)據(jù)庫(kù)系統(tǒng),并向數(shù)據(jù)庫(kù)擁有者提交明文sql語(yǔ)句;(2)數(shù)據(jù)庫(kù)擁有者依據(jù)訪(fǎng)問(wèn)控制策略,判斷查詢(xún)請(qǐng)求是否已得到授權(quán),如若非法訪(fǎng)問(wèn),則拒絕操作;(3)數(shù)據(jù)庫(kù)擁有者經(jīng)轉(zhuǎn)換模塊將明文sql語(yǔ)句轉(zhuǎn)換為密文sql語(yǔ)句集合,發(fā)送至云服務(wù)供應(yīng)商;(4)云服務(wù)供應(yīng)商調(diào)用用戶(hù)自定義函數(shù),在密文數(shù)據(jù)庫(kù)中執(zhí)行密文sql語(yǔ)句,并將密文查詢(xún)結(jié)果返回至數(shù)據(jù)庫(kù)擁有者;(5)數(shù)據(jù)庫(kù)擁有者接收并解密查詢(xún)結(jié)果集,向終端用戶(hù)返回明文記錄。本發(fā)明的安全外包數(shù)據(jù)處理方法包括以下的五大模塊:(1)密碼模塊(opea算法),用于加密或解密外包數(shù)據(jù)庫(kù)。opea算法的加密函數(shù)具有保序性和可加性,能夠最大限度地保留數(shù)據(jù)的可操作性。將opea算法密文域劃分為多個(gè)按照先后順序排列的密文分區(qū),圖2是該密碼模塊的映射結(jié)構(gòu),第i個(gè)密文分區(qū)的上下邊界被分別定義為ui和li。具體來(lái)看,圖中所采用的一對(duì)多的映射結(jié)構(gòu)將單一的明文值映射為某個(gè)密文分區(qū)內(nèi)的多個(gè)密文值,用于構(gòu)造opea算法的加密函數(shù),從而改善密碼模塊的安全性以抵御惟密文攻擊、統(tǒng)計(jì)攻擊以及弱選擇明文攻擊。(2)轉(zhuǎn)換模塊(sql-translator解釋器),用于轉(zhuǎn)換待請(qǐng)求的明文sql語(yǔ)句,同時(shí)確保經(jīng)轉(zhuǎn)換后得到的密文sql語(yǔ)句可以在密文數(shù)據(jù)庫(kù)中正常執(zhí)行。圖3是該轉(zhuǎn)換模塊的處理流程。(3)用戶(hù)自定義函數(shù),部署在云服務(wù)供應(yīng)商,主要用于云端的等值比較、聚合比較、和值計(jì)算和字符串分割等操作。(4)加密規(guī)則,整型數(shù)據(jù)直接使用opea算法進(jìn)行加密;加密浮點(diǎn)型數(shù)據(jù)時(shí),按明文空間的最小精度來(lái)劃分密文空間;字符型數(shù)據(jù)按終端用戶(hù)選定的最小匹配單元轉(zhuǎn)為整型后依次加密、填充并拼接。具體到外包關(guān)系型數(shù)據(jù)庫(kù)而言,明文空間就是數(shù)據(jù)庫(kù)中全部數(shù)據(jù)組成的有限集合。(5)訪(fǎng)問(wèn)控制,選用不同的密鑰加密具有不同保密級(jí)別的數(shù)據(jù)表或數(shù)據(jù)字段;已取得合法訪(fǎng)問(wèn)授權(quán)的終端用戶(hù)可以通過(guò)共享用戶(hù)口令登錄數(shù)據(jù)庫(kù)系統(tǒng);數(shù)據(jù)庫(kù)擁有者依據(jù)目前已登錄用戶(hù)的數(shù)據(jù)訪(fǎng)問(wèn)權(quán)限獲取相應(yīng)的加解密密鑰。本發(fā)明的有益效果是:(1)本發(fā)明解決了客戶(hù)端加密的兩項(xiàng)主要難題,保障了外包關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)機(jī)密性和有效利用。(2)本發(fā)明的總體架構(gòu)適用于microsoftwindowsazuresqldatabase等未經(jīng)修改的商業(yè)化云數(shù)據(jù)庫(kù)平臺(tái)。(3)本發(fā)明僅需單次加密數(shù)據(jù)庫(kù),故存儲(chǔ)開(kāi)銷(xiāo)更低,且數(shù)據(jù)訪(fǎng)問(wèn)模式與云數(shù)據(jù)庫(kù)關(guān)系結(jié)構(gòu)得以保留。(4)本發(fā)明密碼模塊的opea算法能夠抵御惟密文攻擊、統(tǒng)計(jì)攻擊以及弱選擇明文攻擊。其簡(jiǎn)化邊界生成子算法、加密子算法和解密子算法的平均時(shí)間復(fù)雜度分別達(dá)到o(t),o(1)和o(logt),t是明文域的最大值,基本優(yōu)于主流的對(duì)稱(chēng)密碼算法。此外,opea算法的比較操作用時(shí)和網(wǎng)絡(luò)通信開(kāi)銷(xiāo)忽略不計(jì)。密文域的噪聲增長(zhǎng)問(wèn)題可通過(guò)調(diào)整密鑰在常量級(jí)時(shí)間內(nèi)得到有效控制。(5)本發(fā)明轉(zhuǎn)換模塊支持目前最多種類(lèi)的sql數(shù)據(jù)操作,涵蓋等值查詢(xún)、范圍查詢(xún)、聚合查詢(xún)、模糊查詢(xún)、插入、更新、刪除等數(shù)據(jù)操作語(yǔ)句。sql-translator解釋器的轉(zhuǎn)換用時(shí)在微秒量級(jí)以?xún)?nèi),并滿(mǎn)足任意類(lèi)型和長(zhǎng)度的數(shù)據(jù)轉(zhuǎn)換需求。(6)本發(fā)明直接執(zhí)行密文查詢(xún)而無(wú)需解密外包數(shù)據(jù),查詢(xún)結(jié)果準(zhǔn)確,無(wú)誤判,無(wú)漏判。相同查詢(xún)精度下,客戶(hù)端后處理開(kāi)銷(xiāo)較低,總體查詢(xún)效率較高。附圖說(shuō)明圖1為系統(tǒng)總體架構(gòu)圖。給出了本發(fā)明的模塊設(shè)計(jì)、數(shù)據(jù)流向和參與者的作用范圍。圖2為密碼模塊映射結(jié)構(gòu)圖。給出了opea算法的分區(qū)、間隔的劃分方法以及明文域至密文域的映射關(guān)系。圖3為轉(zhuǎn)換模塊處理流程圖。給出了sql-translator解釋器的工作流程,包含核心轉(zhuǎn)換模塊和子轉(zhuǎn)換模塊。圖4為待外包數(shù)據(jù)庫(kù)示例;圖5為外包密文數(shù)據(jù)庫(kù)示例;圖6為密文查詢(xún)結(jié)果示例;圖7為解密后的明文查詢(xún)結(jié)果示例。具體實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說(shuō)明。圖1是系統(tǒng)總體架構(gòu)圖,主要涉及密碼模塊、轉(zhuǎn)換模塊和用戶(hù)自定義函數(shù)三大核心服務(wù)模塊。具體方法包括下列步驟:1.圖2是密碼模塊映射結(jié)構(gòu)圖。密碼模塊的實(shí)現(xiàn)方法包括:(1)設(shè)計(jì)并實(shí)現(xiàn)具有可加性的保序加密算法opea,離散密文域由順序密文分區(qū)構(gòu)成,其加密函數(shù)e:x→y滿(mǎn)足下述兩個(gè)條件(x和y分別是opea的明文與密文空間;具體到外包數(shù)據(jù)庫(kù)應(yīng)用,明文空間是指明文數(shù)據(jù)庫(kù)中全部數(shù)據(jù)組成的集合,密文空間是指密文數(shù)據(jù)庫(kù)中全部數(shù)據(jù)組成的集合):a)b∈x,a<b當(dāng)且僅當(dāng)e(a)<e(b);b)b,c∈x,若a+b<c,則有e(a)+e(b)<e(c)。該算法由三個(gè)子算法構(gòu)成:a)邊界生成子算法boundarygen,輸入隨機(jī)的非負(fù)整數(shù)集合r={ri}以及隨機(jī)正整數(shù)σ>max1≤i≤t{ri}-r1作為密鑰,根據(jù)密鑰計(jì)算并輸出密文域的密文分區(qū)下邊界集l={li}={l[i]}(1≤i≤t)和上邊界集u={ui}={u[i]}(1≤i≤t)。其中,ri是隨機(jī)數(shù)集合中第i個(gè)元素,li和l[i]是第i個(gè)密文分區(qū)的下邊界,ui和u[i]則是第i個(gè)密文分區(qū)的上邊界。子算法首先設(shè)定首個(gè)密文分區(qū)[l1,u1],有l(wèi)[1]=σ且u[1]=l[1]+r1,隨后迭代地劃定后續(xù)密文分區(qū)的上下邊界值,要求滿(mǎn)足l[t]=max1≤i<t{u[i]+u[t-i]}且u[t]=l[t]+rt(2≤t≤t)。這里t是明文域的最大值,即明文數(shù)據(jù)庫(kù)中全部數(shù)據(jù)的最大可能取值。b)加密子算法enc,輸入邊界集和正整數(shù)明文m,輸出集合{l[m],l[m]+1,…,u[m]}內(nèi)的隨機(jī)整數(shù)作為密文c=e(m)。加密子算法在加密明文值m時(shí),根據(jù)密文分區(qū)的邊界集l和u,加密函數(shù)e(·)將會(huì)從集合{l[m],l[m]+1,…,u[m]}中選擇并返回一個(gè)隨機(jī)數(shù)作為密文值c。c)解密子算法dec,輸入邊界集和密文c,借助折半查找算法輸出密文c所屬密文分區(qū)的編號(hào)作為明文值。(2)簡(jiǎn)化opea算法的邊界生成子算法,令密鑰ri(1≤i≤t)以非降序排列,得到線(xiàn)性邊界函數(shù):(3)擴(kuò)展opea算法以判定密文關(guān)系e’(a)+e’(b)>e’(c),其中e’:x→y’是擴(kuò)展算法的加密函數(shù)。a)擴(kuò)展的邊界生成子算法boundarygen’,要求密鑰σ>3·max1≤i≤t{ri},根據(jù)密鑰計(jì)算并輸出密文分區(qū)的擴(kuò)展上邊界集u’={u’[i]}(1≤i≤t)以及擴(kuò)展下邊界集l’={l’[i]}(1≤i≤t)。擴(kuò)展子算法劃定首個(gè)密文分區(qū)u’[1]=σ且l’[1]=u’[1]-r1,后續(xù)密文分區(qū)應(yīng)滿(mǎn)足上邊界u’[t]=min1≤i<t{l’[i]+l’[t-i]}且下邊界l’[t]=u’[t]-rt(rt<u’[t]-u’[t-1],2≤t≤t),其線(xiàn)性邊界函數(shù)為:b)擴(kuò)展的加密子算法和擴(kuò)展的解密子算法與enc和dec類(lèi)似。(4)數(shù)據(jù)庫(kù)擁有者使用opea算法對(duì)全部數(shù)據(jù)項(xiàng)進(jìn)行加密,使用抗碰撞哈希函數(shù)或者對(duì)稱(chēng)密碼技術(shù)對(duì)數(shù)據(jù)表名、列名等進(jìn)行加密。2.用戶(hù)自定義函數(shù)的實(shí)現(xiàn)方法包括:(1)數(shù)據(jù)庫(kù)擁有者依據(jù)密鑰以及查詢(xún)請(qǐng)求中的待比較明文選取隨機(jī)整數(shù)x∈[max{r1,r2},σ+r1),并發(fā)送至云服務(wù)供應(yīng)商,其中r1=u[value1]-l[value1]和r2=u[value2]-l[value2]分別是待比較明文值value1和value2所對(duì)應(yīng)的密文分區(qū)長(zhǎng)度。(2)設(shè)計(jì)并實(shí)現(xiàn)等值比較函數(shù)equalitycom(x,e(value1),e(value2)),判定步驟為:a)若e(value1)和e(value2)的距離不大于x,則明文值相等,函數(shù)輸出0,否則繼續(xù)執(zhí)行步驟b);b)若e(value1)大于e(value2),則value1大于value2,函數(shù)輸出1;而若e(value1)小于e(value2),則value2大于value1,函數(shù)輸出-1。(3)設(shè)計(jì)出聚合比較函數(shù)sumequalitycoml[value],u’[value]),是某數(shù)據(jù)庫(kù)字段的數(shù)據(jù)項(xiàng)集合,sum是求和函數(shù),明文value與查詢(xún)條件中的某個(gè)常量數(shù)值相對(duì)應(yīng),l[value]和u’[value]分別是value對(duì)應(yīng)的密文分區(qū)下邊界和擴(kuò)展上邊界。這里要求且r以非降序排列,判定步驟為:a)若不大于l[value]且不小于u’[value],則與value相等,函數(shù)輸出0,否則繼續(xù)執(zhí)行步驟b);b)若大于u’[value],則大于value,函數(shù)輸出1;而若小于l[value],則value大于函數(shù)輸出-1。(4)借助用戶(hù)自定義函數(shù)sumequalitycom,在數(shù)據(jù)庫(kù)擁有者與云服務(wù)供應(yīng)商之間部署安全和值計(jì)算協(xié)議。假設(shè)att是某數(shù)據(jù)庫(kù)字段的數(shù)據(jù)項(xiàng)集合,協(xié)議步驟為:a)云服務(wù)供應(yīng)商計(jì)算sum(e(att))和sum(e’(att)),并將密文累加結(jié)果發(fā)送至數(shù)據(jù)庫(kù)擁有者;b)數(shù)據(jù)庫(kù)擁有者解密得到d=dec(sum(e(att)),l)和d’=dec(sum(e’(att)),u’);c)若d與d’相等,則數(shù)據(jù)庫(kù)擁有者獲知sum(att)=d,并將e(sum(att))=sum(e(att))返回云服務(wù)供應(yīng)商。協(xié)議結(jié)束。d)否則,數(shù)據(jù)庫(kù)擁有者將會(huì)繼續(xù)嘗試尋找能夠使得sumequalitycom(sum(e(att)),sum(e’(att)),l[d+i],u’[d+i])=0成立的整數(shù)i(0≤i≤d’-d),從而獲知sum(att)=d+i,并將e(d+i)返回云服務(wù)供應(yīng)商。協(xié)議結(jié)束。(5)設(shè)計(jì)并實(shí)現(xiàn)字符串分割函數(shù)split(str,delimiter),str是待分割的like運(yùn)算符的密文搜索模式串,delimiter是分隔符,分割后的結(jié)果采用table類(lèi)型存儲(chǔ)并返回。3.圖3是轉(zhuǎn)換模塊處理流程圖。轉(zhuǎn)換模塊的實(shí)現(xiàn)方法包括:(1)針對(duì)經(jīng)opea算法加密的外包數(shù)據(jù)庫(kù),設(shè)計(jì)并實(shí)現(xiàn)sql-translator解釋器,采用標(biāo)準(zhǔn)transact-sql數(shù)據(jù)操作語(yǔ)句作為輸入。這里假設(shè)tbl是明文庫(kù)某數(shù)據(jù)表名,att、att1、att2是明文庫(kù)某字段的數(shù)據(jù)項(xiàng)集合,val、val1、val2是常量數(shù)值,*c是密文域?qū)?yīng)的數(shù)據(jù)庫(kù)對(duì)象。(2)轉(zhuǎn)換明文數(shù)據(jù)操作語(yǔ)句中的數(shù)據(jù)庫(kù)實(shí)體,轉(zhuǎn)換規(guī)則為:a)數(shù)據(jù)表名、列名使用抗碰撞哈希函數(shù)或?qū)ΨQ(chēng)加密技術(shù)進(jìn)行匿名化轉(zhuǎn)換;b)常量值使用opea算法進(jìn)行轉(zhuǎn)換。(3)劃分轉(zhuǎn)換后的數(shù)據(jù)操作語(yǔ)句為最小轉(zhuǎn)換單元,其中包含完整謂詞表達(dá)式或子句結(jié)構(gòu)。(4)依次為最小轉(zhuǎn)換單元調(diào)用相應(yīng)的子轉(zhuǎn)換模塊。其中,子轉(zhuǎn)換模塊i與最小轉(zhuǎn)換單元i對(duì)應(yīng),設(shè)有該最小轉(zhuǎn)換單元i的轉(zhuǎn)換規(guī)則,將其轉(zhuǎn)換為對(duì)應(yīng)的密文sql子句。針對(duì)查詢(xún)、插入、更新、刪除四類(lèi)數(shù)據(jù)操作語(yǔ)句,表1詳述了其最小轉(zhuǎn)換單元的轉(zhuǎn)換規(guī)則。表1為最小轉(zhuǎn)換單元的轉(zhuǎn)換規(guī)則表1中各轉(zhuǎn)換規(guī)則具體描述如下:■對(duì)于查詢(xún)操作語(yǔ)句:形如select<att1,att2,…>from<tbl>的查詢(xún)操作語(yǔ)句直接轉(zhuǎn)換為select<att1c,att2c,…>from<tblc>其余子句的轉(zhuǎn)換規(guī)則如下,其中規(guī)定整數(shù)x∈[max1≤i≤t{ri},σ+r1):where子句形如att1=att2的比較運(yùn)算符表達(dá)式直接轉(zhuǎn)換為equalitycom(x,att1c,att2c)=0。形如att1>att2的比較運(yùn)算符表達(dá)式直接轉(zhuǎn)換為equalitycom(x,att1c,att2c)>0。形如att1<att2的比較運(yùn)算符表達(dá)式直接轉(zhuǎn)換為equalitycom(x,att1c,att2c)<0。同理,比較運(yùn)算符<>,?。剑?!>,<=,!<,>=的轉(zhuǎn)換規(guī)則可通過(guò)組合上述規(guī)則而得到。形如attbetweenatt1andatt2的between運(yùn)算符表達(dá)式直接轉(zhuǎn)換為equalitycom(x,attc,att1c)>=0∧equalitycom(x,attc,att2c)<=0形如attnotbetweenatt1andatt2的notbetween運(yùn)算符表達(dá)式直接轉(zhuǎn)換為equalitycom(x,attc,att1c)<0∨equalitycom(x,attc,att2c)>0形如attin(att1,att2,…)的in運(yùn)算符表達(dá)式直接轉(zhuǎn)換為equalitycom(x,attc,att1c)=0∨equalitycom(x,attc,att2c)=0∨…形如attnotin(att1,att2,…)的notin運(yùn)算符表達(dá)式直接轉(zhuǎn)換為equalitycom(x,attc,att1c)!=0∧equalitycom(x,attc,att2c)?。?∧…形如attisnull的is運(yùn)算符表達(dá)式直接轉(zhuǎn)換為equalitycom(x,attc,nullc)=0形如attisnotnull的isnot運(yùn)算符表達(dá)式直接轉(zhuǎn)換為equalitycom(x,attc,nullc)?。?對(duì)于形如att[not]likepat[escapeesch]的like運(yùn)算符,逐步采用如下的轉(zhuǎn)換方式:為att增加臨時(shí)列att_match;根據(jù)轉(zhuǎn)義符esch轉(zhuǎn)義通配符并以opea算法加密普通字符;聲明外層游標(biāo)匹配數(shù)據(jù)項(xiàng)長(zhǎng)度;以split函數(shù)將搜索模式串pat分割為3部分,并分別生成起始、中間和結(jié)束部分的匹配條件,使用and或or拼接各個(gè)匹配條件;聲明內(nèi)層游標(biāo)匹配當(dāng)前數(shù)據(jù)項(xiàng)的密文字符串;更新att_match列以及查詢(xún)條件。like運(yùn)算符的轉(zhuǎn)換結(jié)果由上述轉(zhuǎn)換步驟所需的全部sql語(yǔ)句構(gòu)成。對(duì)于形如s1whereexists(s2)的子查詢(xún)語(yǔ)句,其中s1和s2是select語(yǔ)句,逐步采用如下的轉(zhuǎn)換方式:轉(zhuǎn)換內(nèi)層查詢(xún)s2,其查詢(xún)結(jié)果存入臨時(shí)表#inter_table2;將外層查詢(xún)轉(zhuǎn)換為s1whereexists(select*from#inter_table2)。子查詢(xún)語(yǔ)句的轉(zhuǎn)換結(jié)果由上述轉(zhuǎn)換步驟所需的全部sql語(yǔ)句構(gòu)成。同理,notexists型子查詢(xún)與運(yùn)算符型子查詢(xún)的轉(zhuǎn)換規(guī)則與此相同。對(duì)于查詢(xún)條件con1和con2而言,有以下轉(zhuǎn)換規(guī)則:形如con1andcon2的組合查詢(xún)條件直接轉(zhuǎn)換為con1c∧con2c。形如con1orcon2的組合查詢(xún)條件直接轉(zhuǎn)換為con1c∨con2c。orderby子句形如orderbyatt1,att2,…[asc|desc]的orderby子句直接轉(zhuǎn)換為orderbyatt1c,att2c,…[asc|desc]在密文sql語(yǔ)句執(zhí)行過(guò)程中,云服務(wù)供應(yīng)商首先以equalitycom函數(shù)判定出att1c中屬性值相同的記錄,然后再按照att2c進(jìn)行排序。groupby子句對(duì)于形如groupbyatt的groupby子句,逐步采用如下的方式轉(zhuǎn)換:對(duì)att列進(jìn)行自連接查詢(xún),滿(mǎn)足查詢(xún)條件的結(jié)果存入臨時(shí)表#tem;轉(zhuǎn)換為臨時(shí)表內(nèi)查詢(xún)groupbyattc。groupby子句的轉(zhuǎn)換結(jié)果由上述轉(zhuǎn)換步驟所需的全部sql語(yǔ)句構(gòu)成。having子句形如min(att)的聚合函數(shù)直接轉(zhuǎn)換為min(attc)。形如max(att)的聚合函數(shù)直接轉(zhuǎn)換為max(attc)。形如count(att)的聚合函數(shù)直接轉(zhuǎn)換為count(attc)。對(duì)于形如sum(att)的聚合函數(shù),則轉(zhuǎn)換為云服務(wù)供應(yīng)商與數(shù)據(jù)庫(kù)擁有者之間的安全和值計(jì)算協(xié)議,借助該協(xié)議最終計(jì)算得到e(sum(att))。形如avg(att)的聚合函數(shù)直接轉(zhuǎn)換為e(sum(att))/count(attc)?!鰧?duì)于插入操作語(yǔ)句:形如insertinto<tbl>(<att1,att2,…>)values(val1,val2,…)的插入操作語(yǔ)句直接轉(zhuǎn)換為insertinto<tblc>(<att1c,att2c,…>)values(e(val1),e(val2),…)同理,對(duì)于插入操作語(yǔ)句中包含的子查詢(xún)語(yǔ)句,其轉(zhuǎn)換規(guī)則與查詢(xún)操作語(yǔ)句相同?!鰧?duì)于更新操作語(yǔ)句:形如update<tbl>set<att>=val的更新操作語(yǔ)句直接轉(zhuǎn)換為update<tblc>set<attc>=e(val)同理,對(duì)于更新操作語(yǔ)句中由from子句和where子句指定的更新條件,其轉(zhuǎn)換規(guī)則與查詢(xún)操作語(yǔ)句的查詢(xún)條件相同?!鰧?duì)于刪除操作語(yǔ)句:形如deletefrom<tbl>的刪除操作語(yǔ)句直接轉(zhuǎn)換為deletefrom<tblc>同理,對(duì)于刪除操作語(yǔ)句中由where子句指定的刪除條件,其轉(zhuǎn)換規(guī)則與查詢(xún)操作語(yǔ)句中的查詢(xún)條件相同。(5)對(duì)轉(zhuǎn)換得到的密文sql子句進(jìn)行拼接和排列,得到完整的密文sql語(yǔ)句,并使其保留相同語(yǔ)義。例如對(duì)于下述明文查詢(xún)語(yǔ)句:selectatt1fromtblwhereatt1=att2orderbyatt1groupbyatt1havingsum(att2)>val經(jīng)sql-translator轉(zhuǎn)換后拼接排列得到下述密文查詢(xún)語(yǔ)句:selectatt1cfromtblcwhereequalitycom(x,att1c,att2c)=0orderbyatt1cgroupbyatt1chavingsumequalitycom(sum(e(att2)),sum(e’(att2)),l[val],u’[val])>0(6)輸出可以直接在外包密文數(shù)據(jù)庫(kù)上執(zhí)行的密文sql語(yǔ)句。下面給出本發(fā)明的一個(gè)具體實(shí)施例。1.假設(shè)數(shù)據(jù)庫(kù)擁有者的明文數(shù)據(jù)庫(kù)由一個(gè)名為example的數(shù)據(jù)表組成。表中包含兩個(gè)明文字段(或稱(chēng)明文屬性列),列名分別為c_custkey和c_nationkey。表中共有5條明文記錄(即5行數(shù)據(jù)),如圖4所示。2.數(shù)據(jù)庫(kù)擁有者借助密碼模塊對(duì)該明文數(shù)據(jù)庫(kù)進(jìn)行加密處理,并將加密后得到的密文數(shù)據(jù)庫(kù)發(fā)送至云服務(wù)供應(yīng)商。明文數(shù)據(jù)庫(kù)中名為example的明文數(shù)據(jù)表對(duì)應(yīng)密文數(shù)據(jù)庫(kù)中名為[8e3b72508e05135569ace4ed9b96d137]的密文數(shù)據(jù)表,表中共5條密文記錄,如圖5所示;其中,d0d0a493e28066e951fa7a980e81cb05和4eed023b3ef2a4fd3b3fae34f828ba5e分別是使用抗碰撞哈希函數(shù)對(duì)明文列名c_custkey和c_nationkey進(jìn)行加密處理后得到的密文列名。第一行的密文數(shù)據(jù)項(xiàng)121和4423則分別是使用opea算法對(duì)明文數(shù)據(jù)庫(kù)第一行的明文數(shù)據(jù)項(xiàng)1和15逐一加密后得到的密文值。3.假設(shè)終端用戶(hù)提出下述查詢(xún)操作請(qǐng)求(即明文sql語(yǔ)句):select*fromexamplewherec_nationkey>10終端用戶(hù)請(qǐng)求從example表中查詢(xún)出c_nationkey值大于10的數(shù)據(jù)記錄。其中c_nationkey>10是查詢(xún)條件,查詢(xún)結(jié)果應(yīng)返回兩條明文記錄(1,15)和(2,13)。4.數(shù)據(jù)庫(kù)擁有者借助轉(zhuǎn)換模塊對(duì)該明文sql語(yǔ)句進(jìn)行轉(zhuǎn)換處理,得到密文sql語(yǔ)句:select*from[8e3b72508e05135569ace4ed9b96d137]whereequalitycom(100,[4eed023b3ef2a4fd3b3fae34f828ba5e],2891)>0其中equalitycom(100,[4eed023b3ef2a4fd3b3fae34f828ba5e],2891)是用戶(hù)自定義函數(shù)。examplec=[8e3b72508e05135569ace4ed9b96d137],x=100,c_nationkeyc=[4eed023b3ef2a4fd3b3fae34f828ba5e],e(10)=2891。5.數(shù)據(jù)庫(kù)擁有者將密文sql語(yǔ)句發(fā)送至云服務(wù)供應(yīng)商。由云服務(wù)供應(yīng)商負(fù)責(zé)在密文數(shù)據(jù)庫(kù)中執(zhí)行查詢(xún),執(zhí)行過(guò)程中需要調(diào)用用戶(hù)自定義函數(shù)equalitycom。查詢(xún)結(jié)束后得到符合查詢(xún)條件的密文查詢(xún)結(jié)果,如圖6所示。6.云服務(wù)供應(yīng)商將該密文查詢(xún)結(jié)果返回給數(shù)據(jù)庫(kù)擁有者。數(shù)據(jù)庫(kù)擁有者借助密碼模塊對(duì)其進(jìn)行解密處理,最終得到明文查詢(xún)結(jié)果,如圖7所示:7.數(shù)據(jù)庫(kù)擁有者將該明文查詢(xún)結(jié)果返回給終端用戶(hù)。外包數(shù)據(jù)庫(kù)查詢(xún)過(guò)程結(jié)束。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
习水县| 南丹县| 邢台县| 柯坪县| 井研县| 长兴县| 庆阳市| 东乡县| 陆丰市| 靖边县| 景德镇市| 东辽县| 涪陵区| 那曲县| 宜川县| 临澧县| 兴海县| 凯里市| 鄂州市| 汪清县| 彝良县| 南召县| 乌鲁木齐市| 岑巩县| 湟中县| 虹口区| 襄樊市| 崇义县| 清新县| 临海市| 永定县| 巨野县| 福泉市| 山东省| 林口县| 满洲里市| 南岸区| 二手房| 三明市| 林芝县| 长岭县|