亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種面向數(shù)據(jù)庫加密的密文索引方法和庫內(nèi)加密系統(tǒng)與流程

文檔序號:12825075閱讀:373來源:國知局
一種面向數(shù)據(jù)庫加密的密文索引方法和庫內(nèi)加密系統(tǒng)與流程
本發(fā)明涉及一種面向數(shù)據(jù)庫加密字段的密文索引方法和庫內(nèi)加密系統(tǒng),屬于信息安全以及數(shù)據(jù)庫加密
技術(shù)領域
。
背景技術(shù)
:數(shù)據(jù)庫安全日益重要,對數(shù)據(jù)庫中的敏感字段進行加密是有效的安全手段。但是對字段內(nèi)容進行加密后,會導致原來的索引失效,從而使得數(shù)據(jù)檢索的性能大幅降低,影響到數(shù)據(jù)庫的可用性。為解決加密字段的檢索問題,業(yè)界進行了一定的研究。專利cn101504668b實現(xiàn)的密文索引技術(shù)通過使用sql語句建立二叉樹、b樹等索引結(jié)構(gòu)實現(xiàn)密文索引,但是維護索引的代價較高,性能較低。而像cryptdb中,直接使用保序加密算法,在表中建立保序加密列,雖然可以保證較高的性能,但是會泄漏數(shù)據(jù)的偏序關(guān)系,從而安全性較低。且cryptdb為網(wǎng)關(guān)型加密系統(tǒng),不能支持所有類型的sql語句。本發(fā)明的目的是致力于解決上述密文索引不能均衡運行效率、安全性和通用性方面的技術(shù)缺陷,提出一種面向數(shù)據(jù)庫加密字段的密文索引方法,以及基于這種方法實現(xiàn)的庫內(nèi)數(shù)據(jù)庫加密系統(tǒng)。技術(shù)實現(xiàn)要素:本發(fā)明的目的是針對現(xiàn)有數(shù)據(jù)庫加密索引技術(shù)存在的安全性較低、運行效率低的技術(shù)缺陷,提出了一種面向數(shù)據(jù)庫加密字段的密文索引方法。本發(fā)明的原理是使用保序索引作為密文索引,同時密文與密文索引分開存放,在不泄漏明文信息及其偏序關(guān)系的前提下,降低加密對性能的影響。本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的:一種面向數(shù)據(jù)庫加密字段的密文索引方法,具體步驟如下:首先,基于加密字段p1建立密文索引表t2,記加密字段p1所在表為t1,t2表中包括但不限于密文索引字段p2以及密文索引表t2中記錄與t1中記錄一一對應關(guān)系的字段id2;然后,基于保序哈希函數(shù)將待加密字段內(nèi)容映射到哈希值,基于加密函數(shù)將待加密字段內(nèi)容所在記錄的標識id映射到加密id,并將二元組(加密id,哈希值)存入t2(id2,p2),此時,映射后的哈希值偏序關(guān)系體現(xiàn)了待加密字段內(nèi)容的偏序關(guān)系,加密id體現(xiàn)了索引值與被索引值的對應關(guān)系;最后,基于映射后的哈希值,實現(xiàn)對加密字段的等值查詢和范圍查詢,并根據(jù)查詢結(jié)果所在記錄的id2解密獲得t1表中記錄集合并返回。根據(jù)上述方法構(gòu)建的一種庫內(nèi)透明數(shù)據(jù)庫加密系統(tǒng),該系統(tǒng)基于被加密原表生成加密表et1,并且包含密文索引表index_t1、與被加密原表同名同字段的視圖t1、安全觸發(fā)器、索引調(diào)用接口、保密索引函數(shù)包以及加解密函數(shù)包;加密表et1用于保存被加密字段c的內(nèi)容;其中包含被加密原表中除c以外的所有字段以及加密字段ec,其中除c以外的所有字段用于存儲被加密原表中除字段c以外的所有字段內(nèi)容,ec用于存儲字段c的密文;與被加密原表同名同字段的視圖t1用于代替被加密原表,接管所有的對被加密原表的訪問,使得外部用戶和應用感覺不到數(shù)據(jù)被加密和解密的變化,從而實現(xiàn)透明加密;密文索引表index_t1用于保存被加密字段c的索引,以保證透明加密的同時不影響檢索效率;其中包含字段erowid和密文索引index_c,erowid字段用于存儲被加密記錄的rowid被加密后的內(nèi)容,以防止泄漏密文索引值和原記錄的對應關(guān)系,index_c字段用于存儲被加密字段c的索引值,此處的rowid為被加密原表中記錄的唯一性標識;保密索引函數(shù)包包括1個以上的保密索引函數(shù),用于使用保序哈希算法,將被加密字段內(nèi)容映射到索引值,此時索引值的偏序關(guān)系能夠反映被加密字段真實內(nèi)容的偏序關(guān)系,從而可以基于密文索引實現(xiàn)等值和范圍查詢;作為優(yōu)選,所述保密索引函數(shù)為帶隨機偏置的保序哈希算法,該算法使得同樣的明文對應不同的索引值,避免了原文的統(tǒng)計信息被泄漏。加解密函數(shù)包包括1個以上的加解密函數(shù),用于使用加密函數(shù),將被加密字段內(nèi)容映射到加密值,此時如果不知道解密算法和密鑰,從加密值不能夠反推出被加密字段的真實內(nèi)容,當需要解密時,對加密值使用對應的解密函數(shù)和密鑰解密出被加密內(nèi)容;索引調(diào)用接口用于將對t1的select、update、delete請求中的where條件中的與被加密字段c相關(guān)的查詢條件使用所述保密索引函數(shù)做同樣的保序哈希計算,得到哈希值,然后在密文索引表index_t1中使用該哈希值執(zhí)行與查詢條件對應的查找操作,得到命中的記錄集,再使用加解密函數(shù)包中對應于加密函數(shù)的解密函數(shù)解密這些命中記錄集中的erowid字段,得到et1中的rowid集合,此時該rowid集合就是et1中滿足查詢條件的rowid集合,即記錄集;視圖t1的填充函數(shù)對這些記錄集中有關(guān)字段c的內(nèi)容使用所述加解密函數(shù)包中的解密函數(shù)進行對應的解密計算得到所需字段c的明文,從而滿足select請求;或者通過t1上的安全觸發(fā)器對這些記錄集執(zhí)行對應的update、delete請求;安全觸發(fā)器用于將對t1增加、修改、刪除等請求進行不同的索引維護操作,具體為:其中,當增加insert請求、修改update請求、刪除delete請求中包括被加密字段c內(nèi)容時,分別進行下述處理:(1)對于insert請求,安全觸發(fā)器調(diào)用所述加密函數(shù),計算插入記錄中的被加密字段c的密文值,將其連同其它所有字段的值一同插入密文表et1中,并對該新記錄的rowid調(diào)用所述加密函數(shù)做加密計算,得到加密后的erowid,調(diào)用所述保密索引函數(shù),計算插入記錄中的被加密字段c的哈希值,得到密文索引值;從而得到新增的密文索引記錄,進而將該密文索引記錄插入到密文索引表index_t1中;(2)對于updatae請求,安全觸發(fā)器調(diào)用所述加密函數(shù),計算更新記錄中的被加密字段c的新值的密文值,以該密文值更新et1中對應記錄的加密字段ec;調(diào)用所述保密索引函數(shù),計算被更新記錄中的被加密字段c的新值的哈希值,得到新的密文索引值,并對更新記錄的rowid做加密計算,得到加密后的erowid,然后根據(jù)該erowid在密文索引表中更新對應記錄的密文索引值;(3)對于delete請求,安全觸發(fā)器刪除et1中對應記錄,并對被刪除記錄的rowid做加密計算,得到加密后的erowid,然后根據(jù)該erowid在密文索引表index_t1中刪除對應的密文索引記錄;連接關(guān)系:與被加密原表同名同字段的視圖t1分別與加密表et1、索引調(diào)用接口和安全觸發(fā)器相連;安全觸發(fā)器分別與密文索引表index_t1、保密索引函數(shù)包、加解密函數(shù)包相連;索引調(diào)用接口分別與保密索引函數(shù)包、密文索引表、加解密函數(shù)包相連。根據(jù)上述方法構(gòu)建的一種庫內(nèi)透明數(shù)據(jù)庫加密系統(tǒng),基于被加密原表生成加密表et1,與被加密原表同名同字段的視圖t1、安全觸發(fā)器、索引調(diào)用接口、保密索引函數(shù)包以及加解密函數(shù)包;t1用于代替被加密原表,接管所有的對被加密原表的訪問,使得外部用戶和應用感覺不到數(shù)據(jù)被加密和解密的變化,從而實現(xiàn)透明加密;et1用于保存被加密字段c的內(nèi)容及其索引,以保證透明加密的同時不影響檢索效率;其中包含被加密原表中除c以外的所有字段、加密字段ec以及加密索引字段index_c,其中除c以外的所有字段用于存儲被加密原表中除字段c以外的所有字段內(nèi)容,ec用于存儲字段c的密文,index_c用于存儲字段c的索引值;保密索引函數(shù)包包括1個以上的保密索引函數(shù),用于使用保序哈希算法,將字段c內(nèi)容映射到索引值,此時索引值的偏序關(guān)系能夠反映字段c真實內(nèi)容的偏序關(guān)系,從而可以基于索引值實現(xiàn)等值和范圍查詢;加解密函數(shù)包包括1個以上的加解密函數(shù),用于使用加密函數(shù),將字段c內(nèi)容映射到加密值,此時如果不知道解密算法和密鑰,從加密值不能夠反推出字段c的真實內(nèi)容,當需要解密時,對加密值使用對應的解密函數(shù)和密鑰解密出字段c的真實內(nèi)容;索引調(diào)用接口用于對t1的select、update、delete請求中的where條件中的與字段c相關(guān)的查詢條件使用所述保密索引函數(shù)做同樣的保序哈希計算,得到哈希值,然后在et1中使用該哈希值對字段index_c執(zhí)行與查詢條件對應的查找操作,得到命中的記錄集。視圖t1的填充函數(shù)對這些記錄集中有關(guān)字段c的內(nèi)容使用所述加解密函數(shù)包中的解密函數(shù)進行對應的解密計算得到所需字段c的明文,從而滿足select請求;或者通過t1上的安全觸發(fā)器對這些記錄集執(zhí)行對應的update、delete請求;安全觸發(fā)器用于將對t1增加、修改等請求進行不同的索引維護操作,具體為:其中,當增加insert請求、修改update、刪除delete請求中包括字段c內(nèi)容時,分別進行下述處理:(1)對于insert請求,安全觸發(fā)器調(diào)用所述保密索引函數(shù),計算插入記錄中的字段c的哈希值,得到密文索引值,并對字段c使用所述加密函數(shù)做加密計算,得到字段c的密文,從而得到新增的密文記錄,進而將該密文記錄插入到密文表et1中;(2)對于updatae請求,安全觸發(fā)器調(diào)用所述保密索引函數(shù),計算被更新記錄中有關(guān)字段c的新值的哈希值,得到新的密文索引值,并對字段c使用所述加密函數(shù)做加密計算,得到字段c的密文,然后根據(jù)該密文和密文索引值在et1中更新對應記錄的字段ec和index_c內(nèi)容;(3)對于刪除delete,安全觸發(fā)器刪除et1中對應的記錄;連接關(guān)系:t1分別與et1、索引調(diào)用接口和安全觸發(fā)器相連;安全觸發(fā)器分別與et1、保密索引函數(shù)包、加解密函數(shù)包相連;索引調(diào)用接口分別與保密索引函數(shù)包、et1、加解密函數(shù)包相連。有益效果一種面向數(shù)據(jù)庫加密字段的密文索引方法及庫內(nèi)加密系統(tǒng),與現(xiàn)有的密文索引方法和數(shù)據(jù)庫加密系統(tǒng)相比,具有如下增益效果:(1)基于數(shù)據(jù)庫本身的數(shù)據(jù)表、索引、以及觸發(fā)器、以及用戶自定義函數(shù)實現(xiàn)密文索引,具有很高的可靠性;(2)采用保序哈希函數(shù)作為密文索引,由于哈希函數(shù)非常高效,所以可以實現(xiàn)很高的檢索性能;(3)將密文索引和加密數(shù)據(jù)使用不同的表獨立保存,并通過加密二者之間的關(guān)聯(lián)字段以屏蔽他們之間的連接,可以避免通過索引還原原文的內(nèi)容和偏序關(guān)系,從而保證加密數(shù)據(jù)的安全性;(4)通過使用視圖替代原表,能夠?qū)崿F(xiàn)對sql語句類型的完全支持,使得系統(tǒng)具有通用性。附圖說明圖1是本發(fā)明一種面向數(shù)據(jù)庫加密字段的密文索引方法的流程示意圖;圖2是本發(fā)明一種數(shù)據(jù)庫庫內(nèi)透明加密系統(tǒng)密文索引與密文分開存放時的組成結(jié)構(gòu)示意圖;圖3是本發(fā)明一種數(shù)據(jù)庫庫內(nèi)透明加密系統(tǒng)密文索引與密文存放在同一表中時的組成結(jié)構(gòu)示意圖。具體實施方式下面結(jié)合附圖和實施例對本發(fā)明做進一步說明和詳細描述。實施例1如圖1所示,本實施例詳細闡述了本發(fā)明一種面向數(shù)據(jù)庫加密的密文索引方法在oracle數(shù)據(jù)庫中的實現(xiàn)。如表1所示是本實施例中原有加密前的數(shù)據(jù)表t1。其中包括兩個字段c1和c2。字段rowid為oracle系統(tǒng)提供的偽列,其值表示每個記錄的物理位置,也是被加密記錄的唯一性標識。c1為字符型字段,為非敏感字段,不需要對其進行加密。c2為數(shù)值型字段,為待加密字段。表1:t1rowidc1c21apple12bee23cat34dog4首先,基于加密字段c2建立密文索引表ind_t1,ind_t1表中包括密文索引字段index_c2以及與每個索引記錄原表t1中記錄的一一對應關(guān)系的字段erowid。表2:ind_t1erowidindex_c2aes(1)112aes(2)125aes(3)139aes(4)144然后,基于保序哈希函數(shù)將待加密字段內(nèi)容映射到哈希值。本實例中,使用保序哈希函數(shù),如y=ax+b+r,分別將1、2、3、4映射為索引值112、123、139、144。這種映射是單向的,不能根據(jù)索引值推算出原值。索引值體現(xiàn)被索引內(nèi)容的偏序關(guān)系,但是跟被索引值具有不同的統(tǒng)計特征,不能根據(jù)索引值推斷出被索引內(nèi)容的統(tǒng)計特征。從而增強索引系統(tǒng)的安全。接下來,基于加密函數(shù)將待加密字段內(nèi)容所在記錄的標識id,也就是rowid映射到加密索引表ind_t1中的erowid。本實施例中,采用加密算法,如aes算法,將rowid的值1、2、3、4加密成aes(1)、aes(2)、aes(3)、aes(4)。此時,erowid解密后能夠體現(xiàn)索引值與被索引值的對應關(guān)系,但是不能直接體現(xiàn)這種對應關(guān)系。從而防止從索引泄漏被加密內(nèi)容的偏序關(guān)系,從而保證了索引系統(tǒng)的安全。最后,基于映射后的哈希值,實現(xiàn)對加密字段的等值查詢和范圍查詢,并根據(jù)查詢結(jié)果所在記錄的id2解密獲得t1表中記錄集合并返回。比如,對于查詢:查找c2的值大于等于3的所有記錄。首先將3,通過上述同樣的保序哈希函數(shù)映射為130。然后在索引表ind_t1查找index_c2大于等于130的所有記錄。在本實施例中,命中的記錄的erowid集合為{aes(3),aes(4)}。將此集合的erowid采用與上述加密函數(shù)對應的解密函數(shù)進行解密,得到rowid的集合{3,4}。這就是表t1中滿足查詢條件的記錄的rowid。根據(jù)該rowid集合,就可以找到滿足查詢條件“c2的值大于等于3”的所有記錄。實施例2本實施例詳細闡述了本發(fā)明一種數(shù)據(jù)庫庫內(nèi)透明加密系統(tǒng)在oracle數(shù)據(jù)庫下具體實施時的具體實例。如圖2所示,針對實施例一中的表1,一種數(shù)據(jù)庫庫內(nèi)透明加密系統(tǒng),基于被加密原表生成加密表et1,包括密文索引表ind_t1、與被加密原表同名視圖t1、安全觸發(fā)器、索引調(diào)用接口、保密索引函數(shù)包以及加解密函數(shù)包;其中,t1分別與et1、索引調(diào)用接口和安全觸發(fā)器相連;安全觸發(fā)器分別與密文索引表ind_t1、保密索引函數(shù)包、加解密函數(shù)包相連;索引調(diào)用接口與保密索引函數(shù)包、密文索引表、加解密函數(shù)包相連。首先將原加密字段c2所在表t1(c1,c2)重命名為加密表et1,并且將字段c2重命名為ec2,ec2中保存原c2明文加密后的密文。然后建立如下表所示視圖t1,該視圖與被加密原表t1同名且具有相同的同字段c1和c2,其中c2為從表et1中的字段ec2解密而來。與被加密原表同名同字段的視圖t1:c1c2t1的定義為:createviewt1asselectc1,decypt(ec2)asc2fromet1;其中decrypt()為解密函數(shù)。當用戶使用sql語句訪問數(shù)據(jù)庫中原來的表t1時,實際作用于t1視圖。對于查詢操作,t1視圖通過從et1中讀取字段c1,以及解密字段ec2,填充視圖,從而反饋給用戶。而用戶根本感覺不到實際加密和解密的存在。并且,通過視圖替代原被加密原表,能夠?qū)崿F(xiàn)對sql語句類型的完全支持,使得系統(tǒng)具有很高的通用性。接下來建立如下表所示密文索引表ind_t1。密文索引表ind_t1:erowidindex_c2e(1)112e(2)125e(3)139e(4)144該索引表包括兩個字段,erowid和index_c2。其中erowid為加密后的rowid,index_c2為c2字段的密文索引值。rowid被加密成erowid后,不能直接和加密表et1進行連接。但是通過對erowid正確解密后,能夠還原出該索引值對應的et1的記錄。通過此手段,既能實現(xiàn)表間連接,又使得攻擊者即使獲得數(shù)據(jù)庫內(nèi)容也無法獲得相應的明文數(shù)據(jù)以及加密字段內(nèi)容的偏序關(guān)系,從而使得系統(tǒng)具有很高的安全性。接下來建立安全觸發(fā)器:對索引的維護包含對插入、刪除、更新操作時候?qū)λ饕木S護,下面分別描述如下:(1)insteadoftriggerforinsertont1,為建立在視圖t1上的,針對insert操作的insteadof類型的觸發(fā)器。當向視圖t1上插入數(shù)據(jù)時,該觸發(fā)器被觸發(fā)執(zhí)行。該觸發(fā)器將針對插入到t1上的每一行數(shù)據(jù),將字段c2加密,生成新的記錄c1和ec2,將該記錄插入到加密表et1中;然后使用c2的值作為參數(shù)調(diào)用保密索引函數(shù)包中的保密索引函數(shù)生成密文索引字段index_c2的值,使用剛插入到et1中記錄的rowid值作為參數(shù)調(diào)用加解密函數(shù)包中的加密函數(shù)生成密文字段erowid的值,從而生成密文索引表中的一個記錄erowid和index_c2,并將該記錄插入到密文索引表ind_t1中。(2)insteadoftriggerfordeleteont1,為建立在視圖t1上的,針對delete操作的insteadof類型的觸發(fā)器。當從視圖t1上刪除數(shù)據(jù)時,該觸發(fā)器被觸發(fā)執(zhí)行。該觸發(fā)器將針對從t1上刪除的每一行數(shù)據(jù),根據(jù)其rowid從密文索引表ind_t1以及加密表et1中刪除對應記錄;(3)insteadoftriggerforupdateont1,為建立在視圖t1上的,針對update操作的insteadof類型的觸發(fā)器。當向視圖t1上更新數(shù)據(jù)時,該觸發(fā)器被觸發(fā)執(zhí)行。該觸發(fā)器將針對在t1上更新的每一行數(shù)據(jù),如果被更新的數(shù)據(jù)涉及到c2,則使用c2字段的新值調(diào)用保密索引函數(shù),生成新密文索引值,根據(jù)其rowid從密文索引表中ind_t1更新對應記錄中的密文索引值,同時調(diào)用加密函數(shù)將字段c2加密得到其密文值,以該值更新et1表中的加密字段ec2。通過如上觸發(fā)器,實現(xiàn)對數(shù)據(jù)修改、插入、刪除的透明性,進一步增加了系統(tǒng)的通用性。而這些觸發(fā)器都是數(shù)據(jù)庫自身的機制,使得系統(tǒng)具有很高的可靠性。接下來實現(xiàn)索引調(diào)用接口,通過實現(xiàn)oracle數(shù)據(jù)庫系統(tǒng)提供的擴展索引接口實現(xiàn)。實現(xiàn)的索引調(diào)用接口包括如下:(1)odciindexstart()函數(shù)將對t1的select、update、delete請求中的where條件中的與被加密字段c2相關(guān)的查詢條件使用所述保密索引函數(shù)做同樣的保序哈希計算,得到哈希值,然后在密文索引表index_t1中對索引字段index_c2使用該哈希值執(zhí)行與查詢條件對應的查找操作,得到命中的記錄集,再使用加解密函數(shù)包中對應于加密函數(shù)的解密函數(shù)解密這些命中記錄集中的erowid字段,得到et1中的rowid集合,即et1中滿足查詢條件的記錄集;(2)odciindexfetch()函數(shù)返回指定行數(shù)的,在步驟(1)生成的滿足查詢條件的加密表中rowid的集合;(3)odciindexclose()結(jié)束索引調(diào)用。而這些接口,以及實現(xiàn)的語言plsql都是oracle數(shù)據(jù)庫自己的機制,使得系統(tǒng)具有很高的可靠性。接下來實現(xiàn)如下表所示的保密索引函數(shù)包:保密索引函數(shù)包:opi();實現(xiàn)保序哈希函數(shù)opi(),該函數(shù)接受被加密字段的原值,返回密文索引值。該函數(shù)使用oracle的系統(tǒng)開發(fā)語言pl/sql自定義函數(shù)機制實現(xiàn),使得系統(tǒng)具有很高的可靠性。最后,實現(xiàn)如下表所示的加密函數(shù)包:加解密函數(shù)包:該函數(shù)包提供加密和解密函數(shù),在本實施例中實現(xiàn)對rowid、加密字段的加密和解密。該函數(shù)包通過調(diào)用oracle自身提供的函數(shù)包實現(xiàn),使得系統(tǒng)具有很高的可靠性。通過對以上系統(tǒng)組成各部分的實現(xiàn),即可實現(xiàn)對oracle等數(shù)據(jù)庫系統(tǒng)的透明加密及索引,不但保證很高的增、刪、改、查效率,還對有關(guān)敏感數(shù)據(jù)進行了加密存儲。實施例3本實施例詳細闡述了本發(fā)明一種面向數(shù)據(jù)庫加密字段的庫內(nèi)透明加密系統(tǒng)在oracle數(shù)據(jù)庫下具體實施時的另一種具體實例。區(qū)別于實施例2,本實施例不使用單獨的密文索引表,可以得到比實施例2更高的效率,但是會部分泄漏記錄間的偏序關(guān)系。具體作法是:如圖3所示,針對于上述實施例1中的表t1,無需建立密文索引表ind_t1,直接將t1重命名為加密表et1,并且將字段c2重命名為ec2,ec2中保存原c2明文加密后的密文,在et1中增加密文索引字段index_c2,index_c2中保存原c2明文的密文索引值,如下表所示:加密表et1:rowidc1ec2index_c21applee(100)1122beee(200)1253cate(300)1394doge(400)144本實施方式中,加密表中由于索引字段和加密字段在同一個記錄中,自動實現(xiàn)了關(guān)聯(lián)。相比于實施例一中通過解密加密字段erowid后再進行關(guān)聯(lián)的方式,這種關(guān)聯(lián)方式更加高效。但是會泄漏索引值和被加密字段之間的關(guān)聯(lián)關(guān)系,從而部分的泄漏被加密字段內(nèi)容的偏序關(guān)系。與實施例2不同之處還在于,安全觸發(fā)器中包含的對插入、刪除、更新操作時候?qū)λ饕木S護的實現(xiàn),分別描述如下:(1)insteadoftriggerforinsertont1,為建立在視圖t1上的,針對insert操作的insteadof類型的觸發(fā)器。當向視圖t1上插入數(shù)據(jù)時,該觸發(fā)器被觸發(fā)執(zhí)行。該觸發(fā)器將針對插入到t1上的每一行數(shù)據(jù),使用c2字段的值調(diào)用保密索引函數(shù),生成密文索引值,使用c2字段的值調(diào)用加密函數(shù),生成密文值,和其它字段一起,插入到密文表中et1中。(2)insteadoftriggerfordeleteont1,為建立在視圖t1上的,針對delete操作的insteadof類型的觸發(fā)器。當從視圖t1上刪除數(shù)據(jù)時,該觸發(fā)器被觸發(fā)執(zhí)行。該觸發(fā)器直接從et1表中刪除對應記錄。(3)insteadoftriggerforupdateont1,為建立在視圖t1上的,針對update操作的insteadof類型的觸發(fā)器。當向視圖t1上更新數(shù)據(jù)時,該觸發(fā)器被觸發(fā)執(zhí)行。該觸發(fā)器將針對在t1上更新的每一行數(shù)據(jù),如果被更新的數(shù)據(jù)涉及到c2,則使用c2字段的新值調(diào)用保密索引函數(shù),生成新密文索引值,調(diào)用加密函數(shù)生成密文值,和其它被字段一起,更新到密文表中et1中。與實施例2不同之處還在于,索引調(diào)用接口中包含的對查詢相關(guān)接口的實現(xiàn),分別描述如下:(1)odciindexstart()函數(shù)將對t1的select、update、delete請求中的where條件中的與被加密字段c2相關(guān)的查詢條件使用所述保密索引函數(shù)做同樣的保序哈希計算,得到哈希值,然后在加密表et1中對索引字段index_c2使用該哈希值執(zhí)行與查詢條件對應的查找操作,得到et1中滿足查詢條件的記錄集;(2)odciindexfetch()函數(shù)返回指定行數(shù)的,在步驟(1)中生成的滿足查詢條件的表et1中rowid的集合;(3)odciindexclose()結(jié)束索引調(diào)用。如上觸發(fā)器的內(nèi)容,相比于實施例一中同時更新兩個表的方式,更加高效,將會具有更高的性能。實施例4本實施例闡述了本實施例中保密索引函數(shù)的實現(xiàn),本領域技術(shù)人員都知道,本
發(fā)明內(nèi)容所述的保密索引函數(shù)包中的保密索引函數(shù)可以使用任何滿足能夠反映新值與原值偏序關(guān)系的函數(shù)即可,本實施例采用帶隨機偏置的保序哈希方法,如下公式所示:y=ax+b+r;其中x為待索引的明文,y為索引值,a為縮放系數(shù),b為偏移。其中r為隨機偏置,用于調(diào)整y值。對于同樣的明文x,索引值y不同,從而防止泄漏統(tǒng)計信息。例如,設a=10,b=100,r∈[1,9],則對于被索引值1,2,3,3,4,分別被映射成索引值112,125,139,131,144。對于查詢,則對查詢條件做對應的映射。比如要查詢大于等于3的被索引值,在保密索引中,查詢條件變?yōu)椴樵兇笥诘扔?30的索引值。通過該保序哈希算法,將被加密字段內(nèi)容映射到索引值,此時索引值的偏序關(guān)系在已知映射函數(shù)的情況下能夠反映被加密字段真實內(nèi)容的偏序關(guān)系,從而可以基于密文索引實現(xiàn)等值和范圍查詢;同時,隨機偏置r使得同樣的明文對應不同的索引值,避免了原文的統(tǒng)計信息被泄漏。在未知映射函數(shù)的情況下,則無法推導出被索引的內(nèi)容以及被索引內(nèi)容的統(tǒng)計信息。使用的這種保序哈希函數(shù)計算公式非常簡單,相比于二叉樹和b樹等數(shù)據(jù)結(jié)構(gòu),具有很高的性能;并且隨機偏置的引入,更加增加了系統(tǒng)的安全性。本領域的專業(yè)人員,完全可以利用更加復雜更加安全的替換的保序索引方法,來實現(xiàn)保序索引函數(shù)。為了說明本發(fā)明的內(nèi)容及實施方式,本說明書給出了四個具體實施例。在實施例中引入細節(jié)的目的不是限制權(quán)利要求書的范圍,而是幫助理解本發(fā)明所述方法。本領域的技術(shù)人員應理解:在不脫離本發(fā)明及其所附權(quán)利要求的精神和范圍內(nèi),對最佳實施例步驟的各種修改、變化或替換都是可能的。因此,本發(fā)明不應局限于最佳實施例及附圖所公開的內(nèi)容。當前第1頁12
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1