本發(fā)明屬于信息安全領(lǐng)域,涉及一種敏感數(shù)據(jù)連續(xù)查詢時的動態(tài)脫敏技術(shù),具體地說是一種可連續(xù)查詢的數(shù)據(jù)脫敏方法和系統(tǒng)。
背景技術(shù):
隨著計算機技術(shù)的發(fā)展,各行各業(yè)都開始采用計算機及相應(yīng)的信息技術(shù)進行管理和運營,這使得企業(yè)生成、收集、存儲和處理數(shù)據(jù)的能力大大提高,數(shù)據(jù)量與日劇增,如何保證隱私數(shù)據(jù)的安全性與數(shù)據(jù)的高可用性逐漸成為企業(yè)的主要關(guān)注點。
為了防止在數(shù)據(jù)發(fā)布和數(shù)據(jù)共享過程中泄露隱私信息,目前為止已經(jīng)提出了許多對數(shù)據(jù)庫中記錄的數(shù)據(jù)進行加密的方法。據(jù)不完全統(tǒng)計,目前關(guān)于數(shù)據(jù)庫保護的發(fā)明文獻有以下幾個:
1.數(shù)據(jù)庫加密系統(tǒng)、方法和程序:此發(fā)明根據(jù)提出的數(shù)據(jù)庫加密系統(tǒng)對數(shù)據(jù)庫進行加密保護;
2.一種應(yīng)用層透明的數(shù)據(jù)庫加密方法:此發(fā)明涉及一種數(shù)據(jù)庫驅(qū)動的代理解析sql語句,同時記錄需要加密的表名和別名,并根據(jù)加密的表名和別名的記錄對請求的數(shù)據(jù)進行解密;
3.一種字段級數(shù)據(jù)庫加密裝置:此發(fā)明涉及一種數(shù)據(jù)庫加密裝置,能使用戶根據(jù)不同加密強度的需要選擇數(shù)據(jù)庫系統(tǒng)支持的不同的對稱加密算法;
4.一種嵌入式數(shù)據(jù)庫加密存儲方式:此發(fā)明使用戶可以指定數(shù)據(jù)庫的加密存儲模式,分為不加密模式、自定義加密模式和默認加密模式。
以上發(fā)明,用戶向數(shù)據(jù)庫提出查詢請求,數(shù)據(jù)庫根據(jù)用戶的查詢請求返回查詢結(jié)果,其中采用了加密的方法對數(shù)據(jù)進行處理,需要對密鑰進行特殊存儲,同時在不解密的情況下,數(shù)據(jù)無法正常使用,其次,雖然數(shù)據(jù)在保存時被加密保護,但是在使用時是解密后的敏感數(shù)據(jù),不能滿足脫敏后給其他人使用的要求。同時使用加密的方式存在密鑰被竊取的威脅。
技術(shù)實現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對上述現(xiàn)有技術(shù)的不足,為了實現(xiàn)向客戶端提供脫敏后的查詢結(jié)果數(shù)據(jù)集,同時使用戶可以根據(jù)已獲取的脫敏后數(shù)據(jù)進行連續(xù)查詢,提供了一種可連續(xù)查詢的數(shù)據(jù)脫敏方法和系統(tǒng)。
為了實現(xiàn)上述目標,本發(fā)明采取如下技術(shù)方案:
1、可連續(xù)查詢的數(shù)據(jù)脫敏系統(tǒng),其特征在于:包含客戶端管理器(1),脫敏規(guī)則設(shè)置單元(2),查詢語句修改模塊(3),結(jié)果集修改模塊(4),敏感信息處理單元(5)。
客戶端管理器(1):用于接收客戶端查詢請求,將查詢結(jié)果返回給客戶端,監(jiān)聽會話的銷毀;同時用于將客戶端查詢請求時的會話id提交給查詢語句修改模塊(3)和結(jié)果集修改模塊(4)。
脫敏規(guī)則設(shè)置單元(2):用于系統(tǒng)管理員設(shè)置數(shù)據(jù)表中需要保護數(shù)據(jù)的(數(shù)據(jù)長度,數(shù)據(jù)內(nèi)容,數(shù)據(jù)起始位置,脫敏函數(shù)名),其中(數(shù)據(jù)長度,數(shù)據(jù)內(nèi)容,數(shù)據(jù)起始位置,脫敏函數(shù)名)稱為一條脫敏規(guī)則,并將脫敏規(guī)則保存在脫敏規(guī)則記錄中,同時用于根據(jù)會話id刪除脫敏數(shù)據(jù)記錄中的會話數(shù)據(jù)。
查詢語句修改模塊(3):用于驗證脫敏規(guī)則記錄完整性,并根據(jù)會話id、脫敏規(guī)則記錄中的脫敏規(guī)則和脫敏數(shù)據(jù)記錄中的數(shù)據(jù)將查詢請求語句中所有在脫敏數(shù)據(jù)記錄中找到匹配值的謂詞值替換為相應(yīng)的真實數(shù)據(jù)。
結(jié)果集修改模塊(4):用于根據(jù)會話id、脫敏規(guī)則記錄中的脫敏規(guī)則和脫敏數(shù)據(jù)記錄中的數(shù)據(jù)對結(jié)果集數(shù)據(jù)進行脫敏處理;
敏感信息處理單元(5):用于存儲脫敏函數(shù);
2、所述客戶端管理器用于監(jiān)聽會話的銷毀,客戶端管理器定期向客戶端(注:客戶端為應(yīng)用服務(wù)器)輪詢每個會話的當前狀態(tài),如果客戶端返回某會話已經(jīng)銷毀,則通知脫敏規(guī)則設(shè)置單元,脫敏規(guī)則設(shè)置單元將脫敏數(shù)據(jù)記錄中此會話id對應(yīng)的數(shù)據(jù)刪除。
3、所述脫敏規(guī)則設(shè)置單元在系統(tǒng)管理員設(shè)置脫敏規(guī)則后,將設(shè)置的脫敏規(guī)則保存在脫敏規(guī)則記錄中,同時將脫敏規(guī)則記錄中內(nèi)容序列化為字符串后按照設(shè)定的散列算法進行計算得到散列值,并將該數(shù)據(jù)表名和散列值保存在數(shù)據(jù)庫中的散列值表中。
4、所述查詢語句修改模塊根據(jù)會話id、脫敏規(guī)則記錄中的脫敏規(guī)則和脫敏數(shù)據(jù)記錄中的數(shù)據(jù)修改查詢語句,其中的脫敏規(guī)則記錄和脫敏數(shù)據(jù)記錄,也可以是脫敏規(guī)則表和脫敏數(shù)據(jù)表。
5、所述查詢語句修改模塊根據(jù)會話id、脫敏規(guī)則記錄中的脫敏規(guī)則和脫敏數(shù)據(jù)記錄中的數(shù)據(jù)修改查詢語句,其中脫敏規(guī)則記錄格式是(數(shù)據(jù)長度,數(shù)據(jù)內(nèi)容,數(shù)據(jù)起始位置,脫敏函數(shù)名),其中脫敏函數(shù)是預(yù)定義的,存儲在敏感信息處理單元中。
6、所述查詢語句修改模塊根據(jù)會話id、脫敏規(guī)則記錄中的脫敏規(guī)則和脫敏數(shù)據(jù)記錄中的數(shù)據(jù)修改查詢語句,其中脫敏數(shù)據(jù)記錄的格式為(會話id,真實數(shù)據(jù),脫敏后數(shù)據(jù))。
7、所述查詢語句修改模塊和結(jié)果集修改模塊判斷脫敏規(guī)則記錄中是否有脫敏規(guī)則與數(shù)據(jù)相匹配,本發(fā)明中脫敏規(guī)則為(數(shù)據(jù)長度,數(shù)據(jù)內(nèi)容,數(shù)據(jù)起始位置,脫敏函數(shù)名),數(shù)據(jù)與脫敏規(guī)則匹配的定義是:設(shè)數(shù)據(jù)為t,t的長度=數(shù)據(jù)長度,并且t中從“數(shù)據(jù)起始位置”包含有“數(shù)據(jù)內(nèi)容”。也可以在脫敏規(guī)則中增加其他對數(shù)據(jù)的要求。
8、可連續(xù)查詢的數(shù)據(jù)脫敏系統(tǒng),包括客戶端管理器(1)、脫敏規(guī)則設(shè)置單元(2)、查詢語句修改模塊(3)、結(jié)果集修改模塊(4)、敏感信息處理單元(5);(1)與(2)相連,(1)與(3)相連,(1)與(4)相連,(2)與(5)相連,(3)與(5)相連,(4)與(5)相連,(1)可與客戶端通信,(2)、(3)、(4)可與數(shù)據(jù)庫通信。
9、可連續(xù)查詢的數(shù)據(jù)脫敏方法,其特征在于方法包括三個階段:
(1)初始化設(shè)置階段:
第一步:系統(tǒng)管理員通過脫敏規(guī)則設(shè)置單元設(shè)置數(shù)據(jù)庫中每個數(shù)據(jù)表中需保護的數(shù)據(jù)的(數(shù)據(jù)長度,數(shù)據(jù)內(nèi)容,數(shù)據(jù)起始位置,脫敏函數(shù)名),其中(數(shù)據(jù)長度,數(shù)據(jù)內(nèi)容,數(shù)據(jù)起始位置,脫敏函數(shù)名)稱為一條脫敏規(guī)則;
第二步:脫敏規(guī)則設(shè)置單元將此脫敏規(guī)則保存在脫敏規(guī)則記錄中;
第三步:脫敏規(guī)則設(shè)置單元將此脫敏規(guī)則記錄中的內(nèi)容序列化為字符串后,將字符串按設(shè)定散列算法進行散列計算得到散列值,并將該數(shù)據(jù)表名和散列值保存在數(shù)據(jù)庫中的散列值表中;
(2)查詢語句處理階段
第一步:客戶端程序向可連續(xù)查詢的數(shù)據(jù)脫敏系統(tǒng)發(fā)起查詢請求,并提交會話id。
第二步:客戶端管理器接收客戶端的查詢請求,并獲取當前會話id,并將此會話id提交給查詢語句修改模塊和結(jié)果集修改模塊,同時將查詢請求語句轉(zhuǎn)交給查詢語句修改模塊。查詢語句修改模塊做出以下操作:
步驟2-1:查詢語句修改模塊獲得查詢請求語句中的數(shù)據(jù)表名,并按照該數(shù)據(jù)表名查找并讀取對應(yīng)的脫敏規(guī)則記錄,并將此脫敏規(guī)則記錄中的內(nèi)容序列化為字符串,將字符串按設(shè)定散列算法進行散列計算,計算結(jié)果為a;
步驟2-2:查詢語句修改模塊讀取數(shù)據(jù)庫散列值表中該數(shù)據(jù)表名對應(yīng)的內(nèi)容,設(shè)為b,將a和b進行比較,驗證完整性,如果二者不相同則驗證不通過,提示錯誤;如果二者相同則驗證通過。
步驟2-3:查詢語句修改模塊解析查詢請求語句,獲得查詢請求語句中的所有謂詞;
步驟2-4:判斷是否存在未處理的謂詞,如果存在,設(shè)為w并轉(zhuǎn)至步驟2-5繼續(xù)執(zhí)行;否則,將處理后的查詢請求語句提交給數(shù)據(jù)庫;
步驟2-5:判斷該謂詞w是否存在未處理的謂詞值,如果存在未處理的謂詞值,設(shè)該值為x,并轉(zhuǎn)至步驟2-6繼續(xù)執(zhí)行;否則轉(zhuǎn)至步驟2-4繼續(xù)執(zhí)行;
步驟2-6:查看脫敏數(shù)據(jù)記錄中,此會話id對應(yīng)行中的脫敏后數(shù)據(jù)列中是否存在謂詞值x,如果存在x,則表明本查詢語句中的謂詞值x是之前查詢請求的脫敏后數(shù)據(jù),即本次查詢?yōu)檫B續(xù)查詢,獲得此謂詞值x對應(yīng)的真實數(shù)據(jù)值,設(shè)為y,并使用數(shù)據(jù)值y替換查詢請求語句中的謂詞值x,轉(zhuǎn)至步驟2-5繼續(xù)執(zhí)行;如果不存在,轉(zhuǎn)至步驟2-7繼續(xù)執(zhí)行;
步驟2-7:查詢語句修改模塊將此謂詞值x與脫敏規(guī)則記錄中的脫敏規(guī)則進行匹配,如果存在脫敏規(guī)則的前三列與此謂詞值x相匹配,設(shè)該脫敏規(guī)則為r,轉(zhuǎn)至步驟2-8繼續(xù)執(zhí)行;否則轉(zhuǎn)至步驟2-5繼續(xù)執(zhí)行;
步驟2-8:獲取脫敏規(guī)則r對應(yīng)的脫敏函數(shù)名,設(shè)為f。使用脫敏函數(shù)f對謂詞值x進行運算,得到脫敏后數(shù)據(jù)y,即y=f(x),將(會話id,x,y)保存在脫敏數(shù)據(jù)記錄中,并轉(zhuǎn)至步驟2-5繼續(xù)執(zhí)行。
(3)結(jié)果集數(shù)據(jù)處理階段
第一步:結(jié)果集修改模塊讀取脫敏規(guī)則記錄。結(jié)果集修改模塊對查詢結(jié)果做出以下操作:
步驟3-1:設(shè)查詢結(jié)果集為data[][],同時初始化i=0,j=0,len為查詢結(jié)果集的記錄數(shù);
步驟3-2:判斷i<len,如果i小于len,則轉(zhuǎn)至步驟3-3繼續(xù)執(zhí)行;否則,將修改后的結(jié)果集返回給客戶端;
步驟3-3:判斷j是否小于data[i]的字段數(shù),如果判斷結(jié)果為false,則i++并轉(zhuǎn)至步驟3-2繼續(xù)執(zhí)行;否則,獲取數(shù)據(jù)data[i][j],設(shè)為m,將數(shù)據(jù)m與脫敏規(guī)則記錄中存儲的脫敏規(guī)則相匹配,即檢查是否存在脫敏規(guī)則使數(shù)據(jù)m與脫敏規(guī)則中的前三列相匹配,如果存在,設(shè)該脫敏規(guī)則為dr,轉(zhuǎn)至步驟3-4繼續(xù)執(zhí)行;否則,j++并轉(zhuǎn)至步驟3-3繼續(xù)執(zhí)行;
步驟3-4:獲取脫敏規(guī)則dr對應(yīng)的脫敏函數(shù)名,設(shè)為f2;
步驟3-5:結(jié)果集修改模塊查看脫敏數(shù)據(jù)記錄中此會話id對應(yīng)行中的真實數(shù)據(jù)列中是否有數(shù)據(jù)m,如果存在,則得到對應(yīng)的脫敏數(shù)據(jù)列中數(shù)據(jù),定義為n,并使用數(shù)據(jù)n替換結(jié)果集中的數(shù)據(jù)m,j++并轉(zhuǎn)至步驟3-3繼續(xù)執(zhí)行;如果不存在數(shù)據(jù)m,則使用脫敏函數(shù)f2對數(shù)據(jù)m進行運算,得到脫敏后數(shù)據(jù)n,即n=f2(m),將(會話id,m,n)存入脫敏數(shù)據(jù)記錄中,并使用數(shù)據(jù)n替換結(jié)果集中的數(shù)據(jù)m,j++轉(zhuǎn)至步驟3-3繼續(xù)執(zhí)行。
(4)會話狀態(tài)監(jiān)聽:
客戶端管理器定期向客戶端輪詢每個會話的當前狀態(tài),如果客戶端反饋某會話已經(jīng)銷毀,客戶端管理器通知脫敏規(guī)則設(shè)置單元刪除此會話id的數(shù)據(jù),脫敏規(guī)則設(shè)置單元將脫敏數(shù)據(jù)記錄中此會話id對應(yīng)的數(shù)據(jù)刪除。
本發(fā)明是一種可連續(xù)查詢的數(shù)據(jù)脫敏方法和系統(tǒng)。與現(xiàn)有技術(shù)相比具有以下突出的優(yōu)點:
1.實現(xiàn)了結(jié)果集的安全傳輸,同時保證了將查詢結(jié)果集共享給第三方進行數(shù)據(jù)分析時不泄露隱私數(shù)據(jù);
2.用戶查詢數(shù)據(jù)時,如果查詢的返回結(jié)果包含敏感數(shù)據(jù),則對敏感數(shù)據(jù)進行動態(tài)脫敏。同時當用戶根據(jù)脫敏后的數(shù)據(jù)繼續(xù)查詢其它字段信息時,則根據(jù)會話把脫敏數(shù)據(jù)還原為原始數(shù)據(jù)后根據(jù)原始數(shù)據(jù)進行查詢。
3.基于會話的機制,當客戶端向客戶端管理器反饋某會話已經(jīng)銷毀,則通知脫敏規(guī)則設(shè)置單元將脫敏數(shù)據(jù)記錄中存儲的該會話對應(yīng)的數(shù)據(jù)刪除,不僅節(jié)省了空間,同時提高了查找效率。
4.對于用戶和開發(fā)人員,對業(yè)務(wù)數(shù)據(jù)操作時,不需要考慮對敏感數(shù)據(jù)的處理,所有的敏感數(shù)據(jù)處理操作對應(yīng)用層開發(fā)人員和用戶是透明的。
附圖說明
圖1是本發(fā)明可連續(xù)查詢的數(shù)據(jù)脫敏方法和系統(tǒng)的結(jié)構(gòu)圖;
圖2是本發(fā)明查詢語句修改模塊接收數(shù)據(jù)庫查詢請求的流程圖;
圖3是本發(fā)明結(jié)果集修改模塊接收到查詢結(jié)果集的流程圖;
圖4是本發(fā)明中脫敏規(guī)則記錄的示例圖;
圖5是本發(fā)明中脫敏數(shù)據(jù)記錄的示例圖。