本發(fā)明涉及一種數(shù)據(jù)安全領(lǐng)域,尤其涉及對(duì)數(shù)據(jù)庫(kù)的加密系統(tǒng)和方法。
背景技術(shù):
數(shù)據(jù)即資產(chǎn),政府機(jī)關(guān),企事業(yè)單位核心數(shù)據(jù)的80%是以結(jié)構(gòu)化形式存儲(chǔ)在數(shù)據(jù)庫(kù)中。而在2014年到2015年之間,國(guó)內(nèi)外就發(fā)生數(shù)據(jù)泄密事件數(shù)千件。如十大酒店泄露大量房客開(kāi)房信息,12306網(wǎng)站大量用戶身份證等信息遭泄露,超30省市的數(shù)千萬(wàn)社保用戶敏感信息遭泄露,網(wǎng)易郵箱過(guò)億用戶敏感信息泄露等重大泄露事件。數(shù)據(jù)庫(kù)作為核心資產(chǎn)的載體,一旦發(fā)生泄密將會(huì)造成給企事業(yè)單位和用戶造成慘重的損失,因此數(shù)據(jù)庫(kù)安全性越來(lái)越受到重視。
在近幾年的發(fā)展中,網(wǎng)絡(luò)安全,主機(jī)安全等產(chǎn)品線不斷豐富,已非常成熟。但市場(chǎng)上專業(yè)的數(shù)據(jù)庫(kù)安全防護(hù)產(chǎn)品卻很缺乏。數(shù)據(jù)庫(kù)的安全性直接影響到數(shù)據(jù)的機(jī)密性,完整性和可用性。其中,解決機(jī)密性的最有效的方法就是對(duì)存儲(chǔ)于數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行加密。針對(duì)以上問(wèn)題,北京明朝萬(wàn)達(dá)科技股份有限公司提出采用數(shù)據(jù)庫(kù)加密中間件來(lái)實(shí)現(xiàn)數(shù)據(jù)的透明加解密,且加解密密鑰由單獨(dú)密鑰管理服務(wù)器生成和存儲(chǔ),任何組織和個(gè)人通過(guò)非常規(guī)的手段獲取到的敏感數(shù)據(jù)均為密文。
目前市場(chǎng)上針對(duì)數(shù)據(jù)庫(kù)安全最常用的是通過(guò)dbms(databasemanagementsystem數(shù)據(jù)庫(kù)管理系統(tǒng))對(duì)數(shù)據(jù)進(jìn)行加密。主要是通過(guò)擴(kuò)展sql(structuredquerylanguage結(jié)構(gòu)化查詢語(yǔ)言)語(yǔ)句加解密函數(shù)實(shí)現(xiàn)對(duì)元組和屬性的加密。
然而現(xiàn)有技術(shù)存在以下缺點(diǎn):
(1)由于擴(kuò)展sql函數(shù)實(shí)現(xiàn)的加解密,會(huì)導(dǎo)致更換數(shù)據(jù)庫(kù)管理系統(tǒng)的成本過(guò)高。
(2)密鑰和密文保存在同一服務(wù)器中,一旦泄密,攻擊者可先找到密鑰,再對(duì)密文進(jìn)行解密。
(3)需要對(duì)應(yīng)用層進(jìn)行改造來(lái)適應(yīng)加解密數(shù)據(jù)的需求。
(4)加解密過(guò)程對(duì)數(shù)據(jù)庫(kù)性能有影響。
為了克服上述缺點(diǎn),本發(fā)明需要達(dá)到以下目的:
1)本申請(qǐng)?zhí)岢龅臄?shù)據(jù)庫(kù)加密中間件為用戶提供透明的數(shù)據(jù)加密保護(hù)功能,并且無(wú)需對(duì)應(yīng)用層進(jìn)行修改。
2)通過(guò)將密鑰管理與數(shù)據(jù)庫(kù)服務(wù)器管理分離保證攻擊者即使拿到敏感數(shù)據(jù),由于沒(méi)有對(duì)應(yīng)的解密密鑰,也無(wú)法獲取到明文數(shù)據(jù)。
3)由于加解密操作是在中間層完成,因此加解密操作不影響數(shù)據(jù)庫(kù)本身的性能。
4)即使更換數(shù)據(jù)庫(kù)管理系統(tǒng)也不會(huì)對(duì)原始密文數(shù)據(jù)的使用造成影響。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問(wèn)題,本發(fā)明提出了一種數(shù)據(jù)庫(kù)加密系統(tǒng),該系統(tǒng)包括:應(yīng)用服務(wù)器,數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms),其特征在于,該系統(tǒng)還包括:數(shù)據(jù)庫(kù)擴(kuò)展模塊,數(shù)據(jù)加密模塊,密鑰管理模塊;
所述數(shù)據(jù)庫(kù)擴(kuò)展模塊分別與所述應(yīng)用服務(wù)器,所述數(shù)據(jù)庫(kù)管理系統(tǒng),以及所述數(shù)據(jù)加密模塊連接,所述數(shù)據(jù)加密模塊與所述密鑰管理模塊連接;
其中,所述應(yīng)用服務(wù)器接收用戶的數(shù)據(jù)庫(kù)操作請(qǐng)求,并將該數(shù)據(jù)庫(kù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)庫(kù)擴(kuò)展模塊;
所述數(shù)據(jù)庫(kù)擴(kuò)展模塊根據(jù)所述數(shù)據(jù)庫(kù)操作請(qǐng)求是否涉及敏感數(shù)據(jù)而對(duì)所述數(shù)據(jù)庫(kù)操作請(qǐng)求涉及的相關(guān)數(shù)據(jù)進(jìn)行相應(yīng)的處理,并將所述數(shù)據(jù)庫(kù)操作請(qǐng)求及相關(guān)數(shù)據(jù)發(fā)送給所述數(shù)據(jù)庫(kù)管理系統(tǒng);
所述密鑰管理模塊根據(jù)所述數(shù)據(jù)庫(kù)擴(kuò)展模塊的請(qǐng)求向所述數(shù)據(jù)庫(kù)擴(kuò)展模塊返回加密密鑰;
所述數(shù)據(jù)庫(kù)管理系統(tǒng)根據(jù)所述數(shù)據(jù)庫(kù)操作請(qǐng)求對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。
在一個(gè)實(shí)施例中,所述數(shù)據(jù)庫(kù)擴(kuò)展模塊判斷所述相關(guān)數(shù)據(jù)是否涉及敏感數(shù)據(jù),如果涉及敏感數(shù)據(jù),則向所述密鑰管理模塊請(qǐng)求加密密鑰,并利用該加密密鑰加密所述敏感數(shù)據(jù),然后將所述數(shù)據(jù)庫(kù)操作請(qǐng)求及經(jīng)加密的敏感數(shù)據(jù)發(fā)送給所述數(shù)據(jù)庫(kù)管理系統(tǒng),如果所述數(shù)據(jù)庫(kù)操作請(qǐng)求不涉及敏感數(shù)據(jù),直接將所述數(shù)據(jù)庫(kù)操作請(qǐng)求及相關(guān)數(shù)據(jù)發(fā)送給所述數(shù)據(jù)庫(kù)管理系統(tǒng)。
在又一實(shí)施例中,該系統(tǒng)還包括一個(gè)與所述應(yīng)用服務(wù)器配套的業(yè)務(wù)客戶端。
在又一實(shí)施例中,當(dāng)所述應(yīng)用服務(wù)器判斷發(fā)送所述數(shù)據(jù)庫(kù)操作請(qǐng)求的用戶為合法用戶時(shí),才將所述數(shù)據(jù)庫(kù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)庫(kù)擴(kuò)展模塊。
在又一實(shí)施例中,所述數(shù)據(jù)庫(kù)操作請(qǐng)求包括數(shù)據(jù)庫(kù)插入操作,數(shù)據(jù)庫(kù)更新操作,或者數(shù)據(jù)庫(kù)查詢操作。
為解決上述技術(shù)問(wèn)題,本發(fā)明提出了一種數(shù)據(jù)庫(kù)加密方法,該方法包括以下步驟:
接收用戶的數(shù)據(jù)庫(kù)操作請(qǐng)求,并將該數(shù)據(jù)庫(kù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)庫(kù)擴(kuò)展模塊;
所述數(shù)據(jù)庫(kù)擴(kuò)展模塊根據(jù)所述數(shù)據(jù)庫(kù)操作請(qǐng)求是否涉及敏感數(shù)據(jù)而對(duì)所述數(shù)據(jù)庫(kù)操作請(qǐng)求涉及的相關(guān)數(shù)據(jù)進(jìn)行相應(yīng)的處理,并將所述數(shù)據(jù)庫(kù)操作請(qǐng)求及相關(guān)數(shù)據(jù)發(fā)送給所述數(shù)據(jù)庫(kù)管理系統(tǒng);
所述密鑰管理模塊根據(jù)所述數(shù)據(jù)庫(kù)擴(kuò)展模塊的請(qǐng)求向所述數(shù)據(jù)庫(kù)擴(kuò)展模塊返回加密密鑰;
所述數(shù)據(jù)庫(kù)管理系統(tǒng)根據(jù)所述數(shù)據(jù)庫(kù)操作請(qǐng)求對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。
在一個(gè)實(shí)施例中,所述數(shù)據(jù)庫(kù)擴(kuò)展模塊判斷所述相關(guān)數(shù)據(jù)是否涉及敏感數(shù)據(jù),如果涉及敏感數(shù)據(jù),則向所述密鑰管理模塊請(qǐng)求加密密鑰,并利用該加密密鑰加密所述敏感數(shù)據(jù),然后將所述數(shù)據(jù)庫(kù)操作請(qǐng)求及經(jīng)加密的敏感數(shù)據(jù)發(fā)送給所述數(shù)據(jù)庫(kù)管理系統(tǒng),如果所述數(shù)據(jù)庫(kù)操作請(qǐng)求不涉及敏感數(shù)據(jù),直接將所述數(shù)據(jù)庫(kù)操作請(qǐng)求及相關(guān)數(shù)據(jù)發(fā)送給所述數(shù)據(jù)庫(kù)管理系統(tǒng)。
在又一實(shí)施例中,一個(gè)用戶可以對(duì)應(yīng)一個(gè)加密密鑰或多個(gè)加密密鑰。
在又一實(shí)施例中,當(dāng)判斷發(fā)送所述數(shù)據(jù)庫(kù)操作請(qǐng)求的用戶為合法用戶時(shí),才將所述數(shù)據(jù)庫(kù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)庫(kù)擴(kuò)展模塊。
在又一實(shí)施例中,所述數(shù)據(jù)庫(kù)操作請(qǐng)求包括數(shù)據(jù)庫(kù)插入操作,數(shù)據(jù)庫(kù)更新操作,或者數(shù)
據(jù)庫(kù)查詢操作。
通過(guò)本發(fā)明提出的方案,取得了以下技術(shù)效果:
1)進(jìn)一步增強(qiáng)了數(shù)據(jù)和數(shù)據(jù)庫(kù)的安全性
2)節(jié)約了數(shù)據(jù)庫(kù)管理系統(tǒng)的更換成本
3)降低了應(yīng)用層業(yè)務(wù)類型變更的開(kāi)發(fā)成本。
附圖說(shuō)明
圖1是本發(fā)明的整體系統(tǒng)架構(gòu)圖。
圖2是本發(fā)明的數(shù)據(jù)加密流程圖。
圖3是本發(fā)明一種具體實(shí)施例的數(shù)據(jù)加密流程圖。
圖4是本發(fā)明又一種具體實(shí)施例的數(shù)據(jù)加密流程圖。
具體實(shí)施方式
圖1是本發(fā)明的系統(tǒng)總體架構(gòu)圖。
圖1中的數(shù)據(jù)庫(kù)加密中間件包含兩部分:數(shù)據(jù)庫(kù)擴(kuò)展模塊與數(shù)據(jù)加密模塊,其中數(shù)據(jù)庫(kù)擴(kuò)展模塊主要用于與數(shù)據(jù)庫(kù)管理系統(tǒng)交互,數(shù)據(jù)加密模塊則負(fù)責(zé)數(shù)據(jù)的加密。密鑰管理模塊負(fù)責(zé)密鑰的生成與存儲(chǔ)。該系統(tǒng)還包括一個(gè)與所述應(yīng)用服務(wù)器配套的業(yè)務(wù)客戶端(圖中未示出)。
所述數(shù)據(jù)庫(kù)擴(kuò)展模塊分別與所述應(yīng)用服務(wù)器,所述數(shù)據(jù)庫(kù)管理系統(tǒng),以及所述數(shù)據(jù)加密模塊連接,所述數(shù)據(jù)加密模塊與所述密鑰管理模塊連接。
所述應(yīng)用服務(wù)器接收用戶的數(shù)據(jù)庫(kù)操作請(qǐng)求,當(dāng)所述應(yīng)用服務(wù)器判斷發(fā)送所述數(shù)據(jù)庫(kù)操 作請(qǐng)求的用戶為合法用戶時(shí),將該數(shù)據(jù)庫(kù)操作請(qǐng)求發(fā)送給所述數(shù)據(jù)庫(kù)擴(kuò)展模塊,否則不發(fā)送該數(shù)據(jù)庫(kù)操作請(qǐng)求。用戶在客戶端進(jìn)行業(yè)務(wù)操作,涉及到查詢或者插入操作時(shí)(敏感數(shù)據(jù)一般不涉及到更新和刪除,但在特殊情況可能需要),向應(yīng)用服務(wù)器發(fā)送請(qǐng)求。
所述數(shù)據(jù)庫(kù)擴(kuò)展模塊判斷所述相關(guān)數(shù)據(jù)是否涉及敏感數(shù)據(jù),如果涉及敏感數(shù)據(jù),則向所述密鑰管理模塊請(qǐng)求加密密鑰,并利用該加密密鑰加密所述敏感數(shù)據(jù),然后將所述數(shù)據(jù)庫(kù)操作請(qǐng)求及經(jīng)加密的敏感數(shù)據(jù)發(fā)送給所述數(shù)據(jù)庫(kù)管理系統(tǒng),如果所述數(shù)據(jù)庫(kù)操作請(qǐng)求不涉及敏感數(shù)據(jù),直接將所述數(shù)據(jù)庫(kù)操作請(qǐng)求及相關(guān)數(shù)據(jù)發(fā)送給所述數(shù)據(jù)庫(kù)管理系統(tǒng)。
所述密鑰管理模塊根據(jù)所述數(shù)據(jù)庫(kù)擴(kuò)展模塊的請(qǐng)求向所述數(shù)據(jù)庫(kù)擴(kuò)展模塊返回加密密鑰。
所述數(shù)據(jù)庫(kù)管理系統(tǒng)根據(jù)所述數(shù)據(jù)庫(kù)操作請(qǐng)求對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,一般包括新數(shù)據(jù)插入數(shù)據(jù)庫(kù)的操作以及數(shù)據(jù)庫(kù)查詢操作。
圖2展示了數(shù)據(jù)庫(kù)的數(shù)據(jù)加密流程,具體來(lái)說(shuō),包括下列步驟:
1)安裝應(yīng)用服務(wù)器(數(shù)據(jù)庫(kù)加密中間件作為應(yīng)用服務(wù)器的一部分),密鑰管理服務(wù)器,數(shù)據(jù)庫(kù):配置敏感業(yè)務(wù)字段等信息。
2)安裝與應(yīng)用服務(wù)器配套的業(yè)務(wù)客戶端。
3)用戶在客戶端進(jìn)行業(yè)務(wù)操作,涉及到查詢或者插入操作時(shí)(敏感數(shù)據(jù)一般不涉及到更新和刪除,但在特殊情況可能需要),向服務(wù)器發(fā)送請(qǐng)求。
4)服務(wù)器驗(yàn)證為合法用戶后,將請(qǐng)求發(fā)送給數(shù)據(jù)庫(kù)加密中間件,中間件判斷請(qǐng)求是否涉及到敏感數(shù)據(jù),如果沒(méi)有,則直接訪問(wèn)數(shù)據(jù)庫(kù)進(jìn)行操作;如果涉及到敏感數(shù)據(jù),則向密鑰管理服務(wù)器請(qǐng)求一個(gè)密鑰(根據(jù)不同的業(yè)務(wù)類型,可設(shè)置一人一密或者多人一密)。
5)密鑰管理服務(wù)器根據(jù)請(qǐng)求類型返回一個(gè)密鑰,如果是插入操作,則數(shù)據(jù)庫(kù)加密中間件使用密鑰將敏感數(shù)據(jù)進(jìn)行加密并寫(xiě)入數(shù)據(jù)庫(kù),如果是查詢操作,則使用密鑰將查詢到敏感數(shù)據(jù)進(jìn)行解密,返回給應(yīng)用層。
圖3展示了一個(gè)具體的實(shí)施例。
某業(yè)務(wù)需要綁定用戶身份證號(hào)碼,執(zhí)行以下步驟:
1)業(yè)務(wù)員進(jìn)行綁定身份證號(hào)碼的請(qǐng)求操作。
2)應(yīng)用服務(wù)器收到請(qǐng)求后將身份證號(hào)碼和操作類型傳遞給數(shù)據(jù)庫(kù)擴(kuò)展模塊。
3)數(shù)據(jù)庫(kù)擴(kuò)展模塊根據(jù)預(yù)設(shè)的敏感字段判斷身份證號(hào)碼所屬字段是否屬于敏感字段,如果是則向數(shù)據(jù)加密模塊請(qǐng)求加密。
4)數(shù)據(jù)加密模塊收到加密請(qǐng)求,則向密鑰管理服務(wù)器請(qǐng)求密鑰。
5)密鑰管理服務(wù)器監(jiān)聽(tīng)來(lái)自數(shù)據(jù)加密模塊的請(qǐng)求,根據(jù)請(qǐng)求類型生成或查找對(duì)應(yīng)的密鑰 并返回給數(shù)據(jù)加密模塊。如果是新生成的密鑰則根據(jù)請(qǐng)求類型將新密鑰進(jìn)行存儲(chǔ)。
6)數(shù)據(jù)加密模塊收到密鑰后將身份證信息進(jìn)行加密,然后將加密后的信息返回給數(shù)據(jù)庫(kù)擴(kuò)展模塊。
7)數(shù)據(jù)庫(kù)中間件將加密后的數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)并向應(yīng)用層返回操作結(jié)果。
圖4展示了又一個(gè)具體的實(shí)施例。
1)某業(yè)務(wù)需要查詢用戶的身份信息,用戶身份信息為顯示敏感數(shù)據(jù),為防止被有心人利用,查詢出來(lái)的數(shù)據(jù)采用部分顯示部分隱藏的方式顯示,包括如下步驟:
如:532************069(此處隱藏整條數(shù)據(jù)的中間2/3部分)。
1)終端業(yè)務(wù)員輸入查詢條件查詢身份證信息
2)應(yīng)用服務(wù)器收到查詢請(qǐng)求將操作類型與查詢條件發(fā)給數(shù)據(jù)庫(kù)中間件
3)數(shù)據(jù)庫(kù)中間件從數(shù)據(jù)庫(kù)中查詢出對(duì)應(yīng)的數(shù)據(jù)
4)數(shù)據(jù)庫(kù)中間件根據(jù)查詢結(jié)果查詢預(yù)設(shè)的存儲(chǔ)敏感字段,判斷該數(shù)據(jù)是否是密文存儲(chǔ),如果是,則將密文傳遞給數(shù)據(jù)加密模塊請(qǐng)求解密
5)數(shù)據(jù)加密模塊收到解密請(qǐng)求,向密鑰管理服務(wù)器請(qǐng)求解密密鑰,密鑰管理服務(wù)器收到請(qǐng)求后從密鑰數(shù)據(jù)庫(kù)中查詢出解密密鑰返回給數(shù)據(jù)加密模塊
6)數(shù)據(jù)加密模塊將數(shù)據(jù)解密成明文返回給數(shù)據(jù)庫(kù)中間件
7)數(shù)據(jù)庫(kù)中間件拿到明文數(shù)據(jù)后,查詢預(yù)設(shè)的顯示敏感字段,如果身份證信息不是顯示敏感數(shù)據(jù),則將明文返回給應(yīng)用層;如果是顯示敏感數(shù)據(jù),則根據(jù)規(guī)則將數(shù)據(jù)進(jìn)行隱藏后返回給引用層。
通過(guò)本發(fā)明的實(shí)施例,進(jìn)一步增強(qiáng)了數(shù)據(jù)和數(shù)據(jù)庫(kù)的安全性,節(jié)約了數(shù)據(jù)庫(kù)管理系統(tǒng)的更換成本,降低了應(yīng)用層業(yè)務(wù)類型變更的開(kāi)發(fā)成本,可配置使得業(yè)務(wù)系統(tǒng)的使用更加靈活。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等,均應(yīng)保護(hù)在本發(fā)明的保護(hù)范圍之內(nèi)。