本發(fā)明涉及數(shù)據(jù)加密,尤其涉及一種應(yīng)用無感知的數(shù)據(jù)加密存儲系統(tǒng)、方法。
背景技術(shù):
1、近些年,數(shù)據(jù)安全問題頻發(fā),當(dāng)數(shù)據(jù)庫被攻擊泄露時,企業(yè)的關(guān)鍵內(nèi)部數(shù)據(jù)會被一覽無遺,企業(yè)數(shù)據(jù)安全十分重要,所以存儲層在存儲數(shù)據(jù)時實施加密很有必要。
2、為了解決這些問題,當(dāng)前主要的方法是通過在應(yīng)用層,每個業(yè)務(wù)模塊代碼中,對需要加密存儲的數(shù)據(jù)進(jìn)行手動硬編碼的方式實現(xiàn)加解密,這樣就會將加解密代碼侵入到業(yè)務(wù)邏輯代碼中,這種方式存在的問題為:一個是開發(fā)效率低下,第二個是后期維護(hù)成本較高,三是加解密代碼侵入到業(yè)務(wù)邏輯代碼中,會影響業(yè)務(wù)邏輯代碼的可維護(hù)性,提高開發(fā)人員的開發(fā)效率,而通常在業(yè)務(wù)邏輯代碼中對一張表的操作邏輯代碼會分散到不同的代碼文件,使得加解密邏輯會存在集成遺漏的風(fēng)險。
3、另一類方法是通過加密設(shè)備,對整個數(shù)據(jù)庫的所有操作都加解密,這種方式成本極高,且會影響整體數(shù)據(jù)庫運(yùn)行性能。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的是提供一種應(yīng)用無感知的數(shù)據(jù)加密存儲系統(tǒng)、方法,本發(fā)明主要是利用在應(yīng)用層實現(xiàn)加密引擎,通過配置化,攔截執(zhí)行的sql語句,再動態(tài)改造sql語句,以加解密sql語句中的敏感數(shù)據(jù),可減少開發(fā)人員的關(guān)注點,提高加解密的集成效率。
2、為實現(xiàn)上述目的,采用以下技術(shù)方案:
3、一種應(yīng)用無感知的數(shù)據(jù)加密存儲系統(tǒng),包括客戶端插件,所述客戶端插件用于實現(xiàn)加解密引擎,所述加解密引擎包括
4、解析模塊,所述解析模塊用于解析sql語句中的表、字段,確定sql語句的類型;
5、配置模塊,所述配置模塊用于配置需要進(jìn)行加解密處理的表、字段;
6、改寫模塊,所述改寫模塊用于依據(jù)配置模塊的配置,對sql語句進(jìn)行改寫,以對數(shù)據(jù)進(jìn)行加解密處理。
7、進(jìn)一步的,所述解析模塊是將sql語句通過詞法解析器、語法解析器,分解出sql語句的類型、表和字段,并將解析的結(jié)果放入解析上下文中,其中,sql語句的類型包括update、insert、delete、select。
8、進(jìn)一步的,所述改寫模塊基于解析模塊解析得到的解析上下文,對sql語句進(jìn)行改寫。
9、進(jìn)一步的,所述配置模塊采用多階段配置的方式,包括以下四個階段:
10、雙寫階段:所述改寫模塊會將update、insert、delete類型的sql語句改寫為同時寫明文字段和密文字段;
11、讀密文階段:所述改寫模塊會將select類型的sql語句改寫為查密文字段;
12、單寫密文階段:如果上述二個階段驗證過一段時間沒有出現(xiàn)問題,就會通過配置切換到單寫密文階段,所述改寫模塊會將update、insert、delete類型的sql語句改寫為只寫密文字段;
13、明文字段刪除階段:若單寫密文階段執(zhí)行驗證沒問題,所述改寫模塊把mysql表中的明文字段刪除,留下密文字段。
14、進(jìn)一步的,所述配置模塊包括
15、加解密引擎總開關(guān),所述加解密引擎總開關(guān)用于控制項目集成加解密引擎時的風(fēng)險;
16、表級別加解密配置,所述表級別加解密配置為需要加解密的表級別的配置;
17、查詢使用密文字段配置,所述查詢使用密文字段配置用于控制表的查詢操作是否切換為使用密文字段;
18、雙寫加解密配置,所述雙寫加解密配置用于控制加解密改寫sql引擎的執(zhí)行規(guī)則;
19、字段級別加解密配置,所述字段級別加解密配置用于針對表中特定字段進(jìn)行加解密設(shè)置;
20、明文字段與密文字段映射配置,所述明文字段與密文字段映射配置用于配置明文字段所對應(yīng)的密文字段。
21、一種應(yīng)用無感知的數(shù)據(jù)加密存儲方法,包括上述的系統(tǒng),具體包括如下步驟:
22、攔截執(zhí)行中的sql語句;
23、通過解析模塊解析sql語句中的表、字段、sql語句的類型;
24、依據(jù)配置模塊的配置及解析模塊解析的結(jié)果,通過改寫模塊對sql語句進(jìn)行改寫,以進(jìn)行數(shù)據(jù)的加解密處理。
25、采用上述方案,本發(fā)明的有益效果是:
26、本發(fā)明主要是利用在應(yīng)用層實現(xiàn)加密引擎,通過配置化,攔截執(zhí)行的sql語句,再動態(tài)改造sql語句,以加解密sql語句中的敏感數(shù)據(jù),可減少開發(fā)人員的關(guān)注點,提高加解密的集成效率。
1.一種應(yīng)用無感知的數(shù)據(jù)加密存儲系統(tǒng),包括客戶端插件,所述客戶端插件用于實現(xiàn)加解密引擎,其特征在于,所述加解密引擎包括
2.根據(jù)權(quán)利要求1所述的應(yīng)用無感知的數(shù)據(jù)加密存儲系統(tǒng),其特征在于,所述解析模塊是將sql語句通過詞法解析器、語法解析器,分解出sql語句的類型、表和字段,并將解析的結(jié)果放入解析上下文中,其中,sql語句的類型包括update、insert、delete、select。
3.根據(jù)權(quán)利要求2所述的應(yīng)用無感知的數(shù)據(jù)加密存儲系統(tǒng),其特征在于,所述改寫模塊基于解析模塊解析得到的解析上下文,對sql語句進(jìn)行改寫。
4.根據(jù)權(quán)利要求1所述的應(yīng)用無感知的數(shù)據(jù)加密存儲系統(tǒng),其特征在于,所述配置模塊采用多階段配置的方式,包括以下四個階段:
5.根據(jù)權(quán)利要求4所述的應(yīng)用無感知的數(shù)據(jù)加密存儲系統(tǒng),其特征在于,所述配置模塊包括
6.一種應(yīng)用無感知的數(shù)據(jù)加密存儲方法,包括權(quán)利要求1至5任意一項所述的系統(tǒng),其特征在于,包括如下步驟: