李自清
(青海民族大學(xué)物理與電子信息工程學(xué)院, 青海 西寧 810007)
基于網(wǎng)絡(luò)的數(shù)據(jù)庫(kù)敏感數(shù)據(jù)加密模型研究
李自清
(青海民族大學(xué)物理與電子信息工程學(xué)院, 青海 西寧 810007)
在互聯(lián)網(wǎng)飛速發(fā)展的今天,Web 技術(shù)與數(shù)據(jù)庫(kù)技術(shù)的結(jié)合越來越緊密,所以保護(hù)數(shù)據(jù)庫(kù)的安全成為了信息安全十分重要的一環(huán)。在網(wǎng)絡(luò)環(huán)境下,應(yīng)采用什么樣的機(jī)制來為用戶提供對(duì)數(shù)據(jù)的產(chǎn)生、存儲(chǔ)和訪問,以及如何有效地保證其中的數(shù)據(jù)安全性,就成為迫切需要研究的課題。加密技術(shù)對(duì)數(shù)據(jù)庫(kù)中存儲(chǔ)的高度敏感機(jī)密性數(shù)據(jù),起著越來越重要的作用,是防止數(shù)據(jù)庫(kù)中的數(shù)據(jù)在存儲(chǔ)和傳輸中失密的有效手段,所以完全可以用于模型。為了保護(hù)互聯(lián)網(wǎng)中的敏感數(shù)據(jù),提出了數(shù)據(jù)庫(kù)中敏感數(shù)據(jù)的加密模型,基于對(duì)數(shù)據(jù)庫(kù)敏感數(shù)據(jù)的分析、數(shù)據(jù)分類,通過加密引擎、密鑰管理、失效密鑰處理,將用戶敏感數(shù)據(jù)形成密文存儲(chǔ)在數(shù)據(jù)庫(kù)之中。這樣即使是數(shù)據(jù)庫(kù)管理員也無法輕易獲取用戶敏感信息,在因?yàn)楣舻葐栴}造成的數(shù)據(jù)泄露之后也可以減少系統(tǒng)損失,最大限度保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的安全性。實(shí)驗(yàn)結(jié)果表明該模型可以有效保護(hù)數(shù)據(jù)庫(kù)中敏感數(shù)據(jù)安全。
信息安全;信息過濾;數(shù)據(jù)分類;密鑰管理
隨著互聯(lián)網(wǎng)的不斷發(fā)展,它帶來的便利深入到我們生活的方方面面,極大地便利了我們的生活。
但是這種便利的背后,也帶來了很大的風(fēng)險(xiǎn):我們的個(gè)人信息時(shí)時(shí)遭受著泄露威脅?,F(xiàn)在許多 Web 應(yīng)用經(jīng)常使用數(shù)據(jù)庫(kù)來對(duì)信息進(jìn)行管理與存儲(chǔ),所以為了保護(hù)用戶的個(gè)人信息,數(shù)據(jù)庫(kù)安全就成了當(dāng)今信息安全十分重要的一環(huán)。數(shù)據(jù)庫(kù)通常使用身份認(rèn)證、訪問控制、審計(jì)跟蹤和加密等手段來保證數(shù)據(jù)安全[1]。其中加密是對(duì)數(shù)據(jù)庫(kù)中敏感數(shù)據(jù)的一種特殊處理,即使用一定算法將原來數(shù)據(jù)庫(kù)中的敏感數(shù)據(jù)進(jìn)行各種代替和變換,使其變?yōu)椴豢勺R(shí)別的格式,這樣不知解密方法的人便無法正確識(shí)別數(shù)據(jù)的內(nèi)容,從而保護(hù)了數(shù)據(jù)庫(kù)中的敏感數(shù)據(jù)。
加密算法可分為對(duì)稱加密算法和非對(duì)稱加密算法兩種,其中較廣泛使用的對(duì)稱加密算法有 1977年由當(dāng)時(shí)的美國(guó)國(guó)家標(biāo)準(zhǔn)局,即現(xiàn)在的國(guó)家標(biāo)準(zhǔn)與技術(shù)協(xié)會(huì)提出的數(shù)據(jù)加密標(biāo)準(zhǔn)(DES),和旨在取代 DES,由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院發(fā)布的高級(jí)加密標(biāo)準(zhǔn)(AES)[2]。加密算法需要使用密鑰,密鑰作為加密算法的輸入是獨(dú)立于明文與算法的,因?yàn)槭褂妹荑€的不同而導(dǎo)致產(chǎn)生的輸出密文也會(huì)不盡相同,所以我們不需要對(duì)加密算法進(jìn)行保密操作,僅需要對(duì)密鑰進(jìn)行保護(hù),就可以達(dá)到保護(hù)敏感數(shù)據(jù)的目的。
本文基于以上情況,提出了一種較為安全的數(shù)據(jù)庫(kù)敏感數(shù)據(jù)加密模型,以求最大限度保護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)的安全。
1.1 安全風(fēng)險(xiǎn)分析
數(shù)據(jù)庫(kù)安全主要指數(shù)據(jù)庫(kù)中的信息不會(huì)被非法修改或刪除,指數(shù)據(jù)庫(kù)中的數(shù)據(jù)保持了完整性、一致性、可用性與保密性等。數(shù)據(jù)庫(kù)遭受的威脅主要有:物理威脅,例如水災(zāi)、火災(zāi)、地震等因素對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)硬件的破壞而造成的數(shù)據(jù)的破壞與丟失[3];邏輯威脅,例如信息泄露、非法修改等對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的人為破壞。
其中邏輯威脅經(jīng)常帶來巨大損失。為了獲取數(shù)據(jù)庫(kù)中信息,黑客經(jīng)常利用 web 程序漏洞對(duì)數(shù)據(jù)庫(kù)進(jìn)行攻擊[4];而且數(shù)據(jù)泄露也常常發(fā)生在內(nèi)部人員之中,大量相關(guān)人員接觸敏感數(shù)據(jù),導(dǎo)致人員管理問題變得十分困難,因此敏感數(shù)據(jù)面臨的泄露風(fēng)險(xiǎn)也十分巨大。目前對(duì)數(shù)據(jù)庫(kù)的防護(hù)措施主要由防火墻、白名單、協(xié)議加密、身份認(rèn)證、授權(quán)管理與審計(jì)追蹤等方法來保證數(shù)據(jù)庫(kù)的安全[5],但是由于系統(tǒng)中的漏洞、編程人員的疏忽或者內(nèi)部人員的竊取等問題導(dǎo)致數(shù)據(jù)庫(kù)中敏感數(shù)據(jù)還是時(shí)時(shí)處在威脅之中。
1.2 安全需求說明
Web 應(yīng)用面對(duì)著各種各樣的威脅,大量的用戶每天對(duì)應(yīng)用進(jìn)行大量的訪問,大量的數(shù)據(jù)請(qǐng)求也在不停地發(fā)送到相應(yīng)數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)中存儲(chǔ)了許多用戶與應(yīng)用的敏感數(shù)據(jù),這些數(shù)據(jù)是不可以被第三方獲取的珍貴資料。面對(duì)這樣的多用戶 Web 應(yīng)用系統(tǒng),本文提出了一種較為安全的數(shù)據(jù)庫(kù)敏感數(shù)據(jù)加密模型。
(1)因?yàn)楣艋蛘哂脩舻牟划?dāng)操作等原因,數(shù)據(jù)庫(kù)經(jīng)常接收許多非法申請(qǐng)與數(shù)據(jù)[6],而且若讓應(yīng)用直接操作數(shù)據(jù)庫(kù),則會(huì)有其權(quán)限過大的問題,所以為了保護(hù)數(shù)據(jù)庫(kù),需要對(duì)應(yīng)用提供接口,用來對(duì)用戶身份與輸入數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行一定過濾與驗(yàn)證,這樣既可以保護(hù)數(shù)據(jù)庫(kù)安全,又可以減少不當(dāng)操作,提高效率。
(2)為了保護(hù)數(shù)據(jù)庫(kù)中的敏感數(shù)據(jù),數(shù)據(jù)加密是一種十分有力地手段。這種方法可以有效地解決內(nèi)部人員竊取和泄露的數(shù)據(jù)安全問題。本系統(tǒng)將數(shù)據(jù)分為三類:公有數(shù)據(jù)、敏感數(shù)據(jù)與私人數(shù)據(jù),對(duì)不同種類的數(shù)據(jù)進(jìn)行不同處理,以提高加密效率。
(3)因?yàn)椴恍鑼?duì)加密算法進(jìn)行保密處理,密鑰的管理變得十分的關(guān)鍵,一旦密鑰泄露,其他人就可以根據(jù)泄露的密鑰解密出加密數(shù)據(jù),所以安全地保管密鑰對(duì)于加密是十分重要的。同時(shí)因?yàn)槊荑€也有生命周期[7],它的更新、存儲(chǔ)與銷毀都需要進(jìn)行合理管理,有效的密鑰管理可以進(jìn)一步加強(qiáng)數(shù)據(jù)庫(kù)的安全性,保護(hù)數(shù)據(jù)安全。
根據(jù)以上需求,本模型通過使用用戶數(shù)據(jù)傳輸接口對(duì)用戶的身份與輸入的數(shù)據(jù)進(jìn)行驗(yàn)證與過濾,設(shè)計(jì)了一種安全有效的數(shù)據(jù)庫(kù)加密引擎,合理的密鑰管理模塊,保護(hù)了數(shù)據(jù)庫(kù)中的敏感數(shù)據(jù)的安全性,增加了數(shù)據(jù)庫(kù)的風(fēng)險(xiǎn)抵抗能力。
本文提出了一種針對(duì)數(shù)據(jù)庫(kù)敏感數(shù)據(jù)進(jìn)行加密的加密模型,模型由用戶數(shù)據(jù)傳輸接口模塊、加密引擎模塊與密鑰管理模塊組成,將輸入的數(shù)據(jù)分為三類:公有數(shù)據(jù)、敏感數(shù)據(jù)與私人數(shù)據(jù),編寫數(shù)據(jù)字典與用戶權(quán)限表,用以區(qū)分?jǐn)?shù)據(jù)與密鑰的對(duì)應(yīng)關(guān)系。
2.1 用戶數(shù)據(jù)傳輸接口模塊
用戶或系統(tǒng)提交的數(shù)據(jù)首先經(jīng)過用戶數(shù)據(jù)傳輸模塊,此模塊提供接口供用戶輸入數(shù)據(jù)。本模塊首先根據(jù)用戶權(quán)限表對(duì)用戶的身份與權(quán)限進(jìn)行驗(yàn)證,對(duì)合法的用戶輸入的數(shù)據(jù)進(jìn)行正則對(duì)比與過濾,保證用戶輸入的數(shù)據(jù)有效且正確,例如驗(yàn)證身份證或手機(jī)號(hào)碼的格式、過濾敏感關(guān)鍵字,防止sql注入等。將合法的輸入交給下一模塊——加密引擎模塊,若發(fā)現(xiàn)用戶權(quán)限不足或者不合法輸入,則返回統(tǒng)一提示,隱藏錯(cuò)誤信息,不給出具體描述,防止攻擊者利用錯(cuò)誤信息猜測(cè)數(shù)據(jù)庫(kù)結(jié)構(gòu)從而對(duì)數(shù)據(jù)庫(kù)進(jìn)行攻擊。
圖1 數(shù)據(jù)庫(kù)敏感數(shù)據(jù)加密模型
2.2 加密引擎模塊
根據(jù)數(shù)據(jù)字典與用戶權(quán)限表中指定的不同類型進(jìn)行分別處理:公有數(shù)據(jù)即不需要加密的數(shù)據(jù),可以直接存儲(chǔ)到數(shù)據(jù)庫(kù)中,從而減少加密操作與密鑰數(shù)量,加快系統(tǒng)處理速度;敏感數(shù)據(jù)則需要經(jīng)過加密算法進(jìn)行加密,保證其不可以被第三方獲取;私人數(shù)據(jù)則使用用戶的私人密鑰進(jìn)行加密,保證不同用戶間的數(shù)據(jù)不可以相互查看,保護(hù)數(shù)據(jù)的隱私性。針對(duì)三種數(shù)據(jù)的不同操作既可以保護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)安全,同時(shí)又可增加系統(tǒng)運(yùn)行效率。
2.3 密鑰管理模塊
因?yàn)閿?shù)據(jù)分為三類,其中需要加密的兩類數(shù)據(jù)會(huì)產(chǎn)生許多密鑰,本模塊根據(jù)數(shù)據(jù)字典與用戶權(quán)限表來確定與管理每個(gè)加密數(shù)據(jù)所使用的加密密鑰,使用二級(jí)密鑰管理的方式來管理每個(gè)密鑰。因?yàn)槊荑€也存在生命周期,對(duì)它的生成、更新、存儲(chǔ)與銷毀的不同生命周期需要進(jìn)行有效的管理,以確保密鑰的安全性和有效性。敏感數(shù)據(jù)根據(jù)數(shù)據(jù)字典與用戶權(quán)限表來查找密鑰進(jìn)行加密,這些密鑰稱為數(shù)據(jù)密鑰,而數(shù)據(jù)密鑰則使用根密鑰進(jìn)行加密后存儲(chǔ);私人密鑰則分成兩部分,一部分由用戶保存,另一部分同樣使用根密鑰加密后存儲(chǔ)在數(shù)據(jù)庫(kù)中,從而達(dá)到保護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)安全的目的。
3.1 用戶數(shù)據(jù)傳輸接口模塊
本模塊針對(duì)用戶輸入提供統(tǒng)一接口,首先驗(yàn)證用戶身份與權(quán)限,再對(duì)輸入數(shù)據(jù)進(jìn)行過濾,返回統(tǒng)一提示信息。在本模塊中首先根據(jù)用戶權(quán)限表對(duì)用戶身份與權(quán)限進(jìn)行驗(yàn)證,驗(yàn)證合法后再根據(jù)業(yè)務(wù)流程對(duì)輸入進(jìn)行統(tǒng)一驗(yàn)證,查看是否符合系統(tǒng)要求,之后再對(duì)符合要求的輸入進(jìn)行關(guān)鍵字比對(duì),例如包含update、delete 等關(guān)鍵字[8]的輸入不被允許通過,防止sql注入的發(fā)生。只有通過過濾的數(shù)據(jù)才會(huì)提交給下一模塊進(jìn)行處理,如果用戶身份不合法或者輸入數(shù)據(jù)沒有通過驗(yàn)證,則對(duì)用戶進(jìn)行統(tǒng)一信息反饋,防止數(shù)據(jù)庫(kù)錯(cuò)誤提示的泄露,從而保護(hù)數(shù)據(jù)庫(kù)中信息的安全。
3.2 加密引擎模塊
通過檢驗(yàn)的數(shù)據(jù)將被交給加密引擎模塊分類進(jìn)行加密,之后再將密文數(shù)據(jù)存入數(shù)據(jù)庫(kù)中。下面首先介紹本模型使用的算法:
圖2 用戶數(shù)據(jù)過濾工作流程
3.2.1 AES 加密算法
AES 加密算法屬于對(duì)稱加密算法,對(duì)稱加密算法根據(jù)對(duì)明文的加密方式不同可分為分組密碼與流密碼[9],AES 加密算法就屬于分組密碼,它的輸入輸出都按 128 比特來進(jìn)行分組,在使用循環(huán)結(jié)構(gòu)迭代加密,使用字節(jié)替換、行移位、列混合和輪密鑰加來達(dá)到加密的效果。加密輸入的密鑰會(huì)經(jīng)過密鑰擴(kuò)展模塊被擴(kuò)展成為128 比特、192 比特或者 256 比特再進(jìn)行加密運(yùn)算。
若用X代表加密前輸入的明文,Y代表加密后輸出的密文,加密操作可表示為:Y=Akr+2?R?S?(Akj?C?R?S)r?Akj1(X)。
其中:A為輪密碼加運(yùn)算,k為此輪的子密碼,因?yàn)榭偣策M(jìn)行r+2 輪,所以子密碼有K1、K2、……、K(r+2) 共r+2 個(gè)。S、R、C分別指字節(jié)替換、行移位與列混合運(yùn)算,中間共重復(fù)r次,最后再進(jìn)行一次字節(jié)替換、行移位與第r+2 個(gè)子密碼進(jìn)行輪密碼加運(yùn)算即可產(chǎn)生加密后的密文。
3.2.2 加密引擎模型
數(shù)據(jù)庫(kù)數(shù)據(jù)可表示為集合D={d1、d2、……、dn}[10],本文將數(shù)據(jù)分為三類:公有數(shù)據(jù)、敏感數(shù)據(jù)和私人數(shù)據(jù),他們經(jīng)過用戶數(shù)據(jù)傳輸接口模塊過濾后傳到加密引擎模塊進(jìn)行不同加密處理,敏感數(shù)據(jù)使用數(shù)據(jù)密鑰K={k1、k2、……、kn},私人數(shù)據(jù)使用私人密鑰,私人密鑰是每個(gè)用戶私有的,可表示為集合U={u1、u2、……、un}。
(1)公有數(shù)據(jù)。
可以被所有人獲取的數(shù)據(jù),即不需要加密的數(shù)據(jù),它在此模塊直接交給數(shù)據(jù)庫(kù)進(jìn)行儲(chǔ)存。
圖3 加密引擎模型
(2)敏感數(shù)據(jù)。
即針對(duì)系統(tǒng)內(nèi)部用戶可以共享,但對(duì)非系統(tǒng)用戶需要保密的數(shù)據(jù),它不需要針對(duì)不同用戶進(jìn)行分別加密,只需要防御系統(tǒng)外部人員,所以本系統(tǒng)根據(jù)數(shù)據(jù)字典的設(shè)定,使用數(shù)據(jù)密鑰來對(duì)數(shù)據(jù)進(jìn)行加密。加密的粒度選擇直接決定了數(shù)據(jù)庫(kù)的安全性與密鑰的數(shù)量,加密粒度越細(xì)安全性則越高,同時(shí)密鑰數(shù)量也會(huì)越多[11],雖然一次一密可以保證理論上加密不可破解,但會(huì)產(chǎn)生數(shù)量龐大的密鑰,增加管理難度,所以合適的粒度選擇也是個(gè)十分關(guān)鍵的問題。本系統(tǒng)不設(shè)定統(tǒng)一的加密粒度,具體情況根據(jù)數(shù)據(jù)字典的預(yù)先設(shè)定動(dòng)態(tài)加密,這樣可以根據(jù)不同數(shù)據(jù)的使用頻率與危險(xiǎn)等級(jí)等標(biāo)準(zhǔn)來設(shè)定不同加密粒度,在加強(qiáng)保護(hù)數(shù)據(jù)安全的情況下,盡量減少密鑰數(shù)量,減少密鑰管理難度。
操作敏感數(shù)據(jù)時(shí)首先根據(jù)申請(qǐng)加密的字段名稱去密鑰管理模塊查詢此敏感數(shù)據(jù)所對(duì)應(yīng)密鑰,然后使用AES加密算法進(jìn)行加密,即將明文X加密處理后產(chǎn)生密文Y,表示為Y=AES(D,K),之后再將密文Y儲(chǔ)存在數(shù)據(jù)庫(kù)中。
(3)私人數(shù)據(jù)。
這類數(shù)據(jù)是用戶自己的私人信息,除了自己不想被其他人獲取的信息,即只有用戶自己可以查看自己的信息,其他用戶的信息對(duì)其是保密的。私人數(shù)據(jù)同樣使用 AES 加密算法與私人密鑰進(jìn)行加密處理,產(chǎn)生密文 Y 并存儲(chǔ)起來。加密時(shí)首先根據(jù)數(shù)據(jù)字典與用戶權(quán)限表查詢用戶的私人密鑰,它是由用戶口令與系統(tǒng)隨機(jī)生成的字符串拼接而成,用戶口令由用戶自己設(shè)置與保管,隨機(jī)生成的字符串則由根密鑰加密后儲(chǔ)存在數(shù)據(jù)庫(kù)中。使用時(shí)用戶輸入口令,與數(shù)據(jù)庫(kù)中保存的隨機(jī)字符串解密后拼接成私人密鑰。過程可以描述為:Y=AES(D,U),其中:U=用戶口令+隨機(jī)字符串。
3.3 密鑰管理模塊
本模型采用二級(jí)密鑰管理的方式,使用數(shù)據(jù)字典與用戶權(quán)限表管理數(shù)據(jù)與密鑰關(guān)系,儲(chǔ)存在數(shù)據(jù)庫(kù)中的密鑰會(huì)使用根密鑰進(jìn)行相應(yīng)加密后儲(chǔ)存,保證管理員也無法獲取密鑰,從而保護(hù)了數(shù)據(jù)的安全。
3.3.1 密鑰的查找與生成
在加密引擎模塊,每當(dāng)需要對(duì)敏感數(shù)據(jù)進(jìn)行加密時(shí),首先都需要查詢加密所需使用的密鑰。 在操作敏感數(shù)據(jù)時(shí),根據(jù)提交申請(qǐng)的數(shù)據(jù)名稱,首先去數(shù)據(jù)字典查找相應(yīng)數(shù)據(jù)密鑰,使用根密鑰解密數(shù)據(jù)密鑰后再對(duì)敏感數(shù)據(jù)進(jìn)行加解密操作。
私人密鑰是在用戶注冊(cè)時(shí),由用戶自己設(shè)定的口令與系統(tǒng)隨機(jī)生成的字符串拼接而成的,用戶口令由用戶自己保存,而隨機(jī)字符串則由系統(tǒng)自動(dòng)生成后用根密鑰加密后存儲(chǔ)在用戶權(quán)限表中。操作私人數(shù)據(jù)時(shí)根據(jù)數(shù)據(jù)字典與用戶權(quán)限表查找用戶自己的私人密鑰,用根密鑰解密后再對(duì)數(shù)據(jù)進(jìn)行加解密操作。
3.3.2 密鑰的更新與銷毀
密鑰也有生命周期,其存在的時(shí)間越長(zhǎng),所遭受的泄露風(fēng)險(xiǎn)也就越大,而且 Web 應(yīng)用每時(shí)每刻都有許多用戶進(jìn)行訪問與操作,數(shù)據(jù)量通常十分龐大。針對(duì)這個(gè)特性,本系統(tǒng)對(duì)不同密鑰設(shè)定不同有效期,通過數(shù)據(jù)字典設(shè)定的密鑰有效期定時(shí)對(duì)已有的密鑰進(jìn)行掃描更新,從而確保密鑰的安全性。因?yàn)楸灸P褪菍⒚荑€分為數(shù)據(jù)密鑰、根密鑰與私人密鑰的二級(jí)密鑰管理方式,根據(jù)密鑰的種類不同,更新分為以下幾種情況:
(1)數(shù)據(jù)密鑰。
敏感數(shù)據(jù)使用數(shù)據(jù)密鑰進(jìn)行加密,根據(jù)數(shù)據(jù)字典的設(shè)置,其中會(huì)存在多個(gè)密鑰,這些密鑰使用根密鑰加密后存儲(chǔ)在數(shù)據(jù)庫(kù)中,使用時(shí)再解密取出。所以根據(jù)數(shù)據(jù)字典中設(shè)定的不同有效期,定期對(duì)不同等級(jí)的密鑰進(jìn)行掃描更新,更新時(shí)將此密鑰相關(guān)的數(shù)據(jù)一次性取出解密,再使用新密鑰進(jìn)行加密存儲(chǔ),新密鑰使用根密鑰加密后,替換舊密鑰存儲(chǔ)在數(shù)據(jù)庫(kù)中,以供下次使用。
(2)私人密鑰。
為了保護(hù)私人數(shù)據(jù)的安全性,需要使用私人密鑰對(duì)其進(jìn)行加密,為了保證加密的安全性,需要密鑰保證一定長(zhǎng)度,但是用戶一般無法記住一個(gè)太長(zhǎng)的口令,所以本系統(tǒng)將用戶自己設(shè)定的一個(gè)口令與系統(tǒng)自動(dòng)生成的隨機(jī)字符串拼接形成私人密鑰,這樣既保證了密鑰的長(zhǎng)度,同時(shí)也沒有增加用戶的使用難度。隨機(jī)生成的字符串也由根密鑰進(jìn)行加密后存儲(chǔ)在用戶權(quán)限表中,在用戶更新自己的口令的時(shí)候,系統(tǒng)也會(huì)自動(dòng)更新隨機(jī)字符串,然后根據(jù)數(shù)據(jù)字典與用戶權(quán)限表對(duì)此用戶的私人數(shù)據(jù)進(jìn)行一次性更新,儲(chǔ)存根密鑰加密后的隨機(jī)字符串,替換私人密鑰存儲(chǔ)在數(shù)據(jù)庫(kù)中的部分,即一次性更換用戶私人密鑰。
(3)根密鑰。
因?yàn)閿?shù)據(jù)密鑰與私人密鑰的一部分都是由根密鑰進(jìn)行加密后存儲(chǔ)的,這樣即使管理員也無法獲得真正的密鑰,從而保護(hù)的數(shù)據(jù)的安全。但是這樣根密鑰的儲(chǔ)存就變得十分關(guān)鍵了,一旦根密鑰泄露,則其他密鑰的加密也就失去了作用,數(shù)據(jù)就會(huì)暴露在危險(xiǎn)之中。所以根密鑰需要定時(shí)進(jìn)行更新,因?yàn)楦荑€加密的對(duì)象也是密鑰,數(shù)據(jù)量相對(duì)于數(shù)據(jù)庫(kù)庫(kù)中的數(shù)據(jù)少很多,所以根密鑰更新時(shí)可使用一次性更新的方式,即同時(shí)取出所有密鑰進(jìn)行解密,使用新根密鑰加密更新的操作。
3.3.3 密鑰的存儲(chǔ)
密鑰生成與更新后,都需要存儲(chǔ)起來以供之后使用。但一旦處理不好使密鑰泄露則可造成災(zāi)難性的后果,這相當(dāng)于數(shù)據(jù)庫(kù)中的數(shù)據(jù)加密失去了意義,得到密鑰的黑客只要得到敏感數(shù)據(jù),就可以對(duì)其進(jìn)行解密操作,得到具體信息,用戶重要的信息就會(huì)泄露。為了防止這種事情的發(fā)生,我們需要對(duì)密鑰進(jìn)行嚴(yán)密的管理,防止密鑰泄露。
本系統(tǒng)使用的數(shù)據(jù)密鑰與私人密鑰存儲(chǔ)的部分都使用根密鑰進(jìn)行過加密,可以直接儲(chǔ)存在數(shù)據(jù)庫(kù)中而保證不泄露,所以根密鑰的保存就至關(guān)重要了,為了防止攻擊者獲得根密鑰,它可以儲(chǔ)存在物理令牌中,由專人保管,防止泄露。
4.1 可行性分析
本系統(tǒng)為了保護(hù)數(shù)據(jù)庫(kù)安全設(shè)計(jì)了一個(gè)針對(duì)敏感數(shù)據(jù)的加密模型,通過用戶數(shù)據(jù)接口模塊、加密引擎模塊與密鑰管理模塊共同作用保護(hù)了數(shù)據(jù)庫(kù)中的數(shù)據(jù)安全。
首先用戶數(shù)據(jù)接口模塊針對(duì)用戶身份合法性與輸入的數(shù)據(jù)進(jìn)行了過濾,即保證了業(yè)務(wù)上的數(shù)據(jù)完整性與可用性,又減少了 sql注入的風(fēng)險(xiǎn),保護(hù)了數(shù)據(jù)庫(kù)中的數(shù)據(jù)安全。
加密引擎模塊首先將數(shù)據(jù)分為三類,公有數(shù)據(jù)不需加密,極大減少了系統(tǒng)開銷,增加了系統(tǒng)運(yùn)行速度;敏感數(shù)據(jù)需要根據(jù)數(shù)據(jù)字典進(jìn)行加密,從而在龐大的系統(tǒng)數(shù)據(jù)中減少使用的密鑰數(shù)量,減少系統(tǒng)開銷,同時(shí)避免黑客攻擊或內(nèi)部人員對(duì)數(shù)據(jù)的竊取;私人數(shù)據(jù)需要使用用戶口令與系統(tǒng)生成的隨機(jī)字符串拼接的私人密鑰進(jìn)行加密,使用數(shù)據(jù)字典與用戶權(quán)限表來對(duì)應(yīng)密鑰與數(shù)據(jù)的關(guān)系,從而保證僅用戶本人才可以看見數(shù)據(jù)內(nèi)容。
密鑰管理模塊使用二級(jí)密鑰管理的方式,提供對(duì)密鑰的查詢與生成、更新與銷魂和存儲(chǔ)操作,根據(jù)數(shù)據(jù)字典中設(shè)置的不同有效期定時(shí)掃描,對(duì)密鑰進(jìn)行一次性更新,替換失效舊密鑰。這些密鑰管理方式共同保護(hù)了密鑰的安全,使得加密更加安全可靠。
所以本系統(tǒng)可以有效保護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)的機(jī)密性、完整性與可用性,同時(shí)兼顧系統(tǒng)開銷,減少密鑰數(shù)量,從而減少密鑰管理難度,是種安全的數(shù)據(jù)庫(kù)敏感數(shù)據(jù)加密模型。
4.2 實(shí)驗(yàn)
4.2.1 實(shí)驗(yàn)環(huán)境
本文涉及的加密模型主要使用了 AES 加密算法,將數(shù)據(jù)分為三類分別進(jìn)行了處理,使用二級(jí)密鑰管理的方式,既保證了敏感數(shù)據(jù)的安全性,同時(shí)也兼顧了系統(tǒng)的開銷。
因?yàn)?Web 應(yīng)用經(jīng)常會(huì)一次性取出幾條數(shù)據(jù)進(jìn)行各種處理,其中可能包含多個(gè)字段數(shù)據(jù)。而且要是單純使用 AES 加密算法對(duì) Web 應(yīng)用進(jìn)行加密,要保證加密的安全性,使數(shù)據(jù)內(nèi)容不會(huì)輕易泄露,一次一密是非常保險(xiǎn)的方式。本模型根據(jù)數(shù)據(jù)庫(kù)特性,使用 java 語言及相應(yīng)方法庫(kù)模擬了單純使用 AES 加密算法一次一密的加密數(shù)據(jù)方式與使用本模型加密數(shù)據(jù)的方式,用以對(duì)比對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行加密所用時(shí)間與模型效率。具體環(huán)境參數(shù)如下。
表2 數(shù)據(jù)庫(kù)敏感數(shù)據(jù)加密模型實(shí)驗(yàn)環(huán)境
分別取出數(shù)據(jù)庫(kù)中某張表的 30 條與 60 條數(shù)據(jù),每條數(shù)據(jù) 3 個(gè)字段,即總共 90 個(gè)與 180個(gè)數(shù)據(jù)項(xiàng),設(shè)定每個(gè)數(shù)據(jù)項(xiàng)都需要進(jìn)行加密。同時(shí)設(shè)定有 2 個(gè)用戶,數(shù)據(jù)字典預(yù)先設(shè)定的信息如下。
表3 實(shí)驗(yàn)數(shù)據(jù)字典設(shè)定
4.2.2 實(shí)驗(yàn)結(jié)果
使用 AES 加密算法采用一次一密的方式加密所有數(shù)據(jù)項(xiàng),再使用本模型根據(jù)以上數(shù)據(jù)字典對(duì)數(shù)據(jù)分類進(jìn)行加密,記錄每次的加密運(yùn)行時(shí)間,多次運(yùn)行匯總出了如表4所示。
表4 運(yùn)行時(shí)耗對(duì)比
針對(duì)以上表格,可以看出AES加密算法與本模型的數(shù)據(jù)加密總時(shí)耗接近,雖然AES加密算法需要在加密每個(gè)數(shù)據(jù)項(xiàng)時(shí)產(chǎn)生新的密鑰并存儲(chǔ),但是本模型則需要查找相應(yīng)密鑰并返回,所以在加密時(shí)間本模型總加密時(shí)間會(huì)多一點(diǎn)。其中敏感數(shù)據(jù)只需要查詢數(shù)據(jù)字典來確定密鑰,所以所需時(shí)間相對(duì)短一點(diǎn);而私人數(shù)據(jù)則需要同時(shí)查詢數(shù)據(jù)字典與用戶權(quán)限表兩張表,所以會(huì)更耗時(shí)一些,但是因?yàn)榭傮w加密時(shí)間不會(huì)增加太多,所以系統(tǒng)效率的降低在可接受范圍內(nèi)。
單純使用AES加密算法一次一密的加密方式產(chǎn)生了 90 個(gè)與 180 個(gè)密鑰,而本系統(tǒng)不受數(shù)據(jù)量的影響只有 4 個(gè)密鑰,遠(yuǎn)遠(yuǎn)小于單純使用AES加密算法一次一密加密的密鑰數(shù)量,在密鑰管理方面節(jié)省了大量空間與時(shí)間。
本模型中敏感數(shù)據(jù)根據(jù)數(shù)據(jù)字典動(dòng)態(tài)選用加密粒度,不僅可以減少密鑰數(shù)量,減輕密鑰管理的負(fù)擔(dān),因?yàn)槊荑€的讀取的時(shí)耗也是常數(shù)級(jí)的,也不會(huì)大量增加系統(tǒng)運(yùn)行時(shí)間。私人數(shù)據(jù)部分由用戶自己保管,減少了密鑰泄露的可能性,從而保證私人數(shù)據(jù)不會(huì)被第三者獲知,保護(hù)其隱私性。三類數(shù)據(jù)與二級(jí)密鑰管理的方式大大提高了數(shù)據(jù)庫(kù)的安全性,在系統(tǒng)耗時(shí)增加可以接受的情況下,節(jié)省了查詢時(shí)間與存儲(chǔ)空間。
4.3 模型評(píng)測(cè)
本系統(tǒng)開銷較小,相對(duì)于單純使用AES加密算法一次一密加密的方式時(shí)耗增加不多,密鑰管理更加方便,可以更好地對(duì)數(shù)據(jù)庫(kù)中敏感數(shù)據(jù)進(jìn)行保護(hù)。用戶數(shù)據(jù)接口模塊也降低了應(yīng)用的所承受的壓力,將一部分?jǐn)?shù)據(jù)過濾交由后臺(tái)處理,對(duì)sql注入進(jìn)行了一定過濾。數(shù)據(jù)分類方式大大減少系統(tǒng)開銷,對(duì)私人密鑰分割的方式也增加了私人數(shù)據(jù)的安全性,而根據(jù)數(shù)據(jù)字典動(dòng)態(tài)選取加密粒度的方式不僅增加了安全性,也減輕了密鑰管理的復(fù)雜度,在保證數(shù)據(jù)安全性的前提下,減輕了系統(tǒng)負(fù)擔(dān),增加了可行性。密鑰管理模塊的的二級(jí)密鑰管理方式,對(duì)儲(chǔ)存在數(shù)據(jù)庫(kù)中的密鑰進(jìn)行加密,同時(shí)將根密鑰儲(chǔ)存在物理令牌中,保護(hù)了密鑰的安全,從而保證數(shù)據(jù)庫(kù)敏感數(shù)據(jù)的安全性。
但是為了保證加密效果,數(shù)據(jù)字典的預(yù)先設(shè)定十分重要,所以需要事先設(shè)定一個(gè)考慮全面的數(shù)據(jù)字典,這是對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)者的一個(gè)挑戰(zhàn)。
本文提出了針對(duì)敏感數(shù)據(jù)的數(shù)據(jù)加密模型,該模型使用了用戶數(shù)據(jù)接口、加密引擎與密鑰管理模塊來對(duì)數(shù)據(jù)進(jìn)行分類處理,根據(jù)數(shù)據(jù)字典與用戶權(quán)限表確定數(shù)據(jù)與密鑰的對(duì)應(yīng)關(guān)系,采取根據(jù)數(shù)據(jù)字典動(dòng)態(tài)選擇加密粒度加密的方式,使用二級(jí)密鑰管理的方式,對(duì)密鑰采用定時(shí)掃描,一次性更新的方式,解決了敏感數(shù)據(jù)的加密與密鑰管理問題,實(shí)驗(yàn)數(shù)據(jù)表明本模型的時(shí)耗增加是可接受的,密鑰管理則便利許多,節(jié)省許多存儲(chǔ)密鑰的空間,數(shù)據(jù)庫(kù)的安全性也得到了保證,保護(hù)了數(shù)據(jù)庫(kù)中的敏感數(shù)據(jù)的安全。
[1] 胡 敏.Web系統(tǒng)下提高M(jìn)ySQL數(shù)據(jù)庫(kù)安全性的研究與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué),2015.
[2] 張金輝.AES加密算法分析及其在信息安全中的應(yīng)用[J].信息網(wǎng)絡(luò)安全,2011,05(5):31-33.
[3] 李衛(wèi)平,張?zhí)煳?數(shù)據(jù)庫(kù)加密模型設(shè)計(jì)探討[J].煤炭技術(shù),2012,31(6):217-218.
[4] 吳翰清.白帽子講Web安全[M].北京:電子工業(yè)出版社,2014.
[5] 成曉利.Web應(yīng)用SQL注入漏洞測(cè)試系統(tǒng)的研究與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2013.
[6] 李紹武.試析計(jì)算機(jī)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)存在的安全威脅和應(yīng)對(duì)措施[J].通訊世界,2014,18(09):32-33.
[7] 吳開均.數(shù)據(jù)庫(kù)加密系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 成都:電子科技大學(xué),2014.
[8] 常紅梅.基于存儲(chǔ)過程的數(shù)據(jù)庫(kù)安全性實(shí)踐初論[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015,4(4):112-112.
[9] 蓋玉蓮.加密技術(shù)在數(shù)據(jù)庫(kù)安全中應(yīng)用研究[J].計(jì)算機(jī)科學(xué)研究,2009,12(51):81-84.
[10]FonsecaJ,SeixasN,VieiraM,etal.AnalysisofFieldDataonWebSecurityVulnerabilities[J].IEEETransactionsonDependable&SecureComputing,2014,11(2):89-100.
[11]FonsecaJ,VieiraM,MadeiraH.EvaluationofWebSecurityMechanismsusingVulnerabilityandAttackInjection[J].IEEETransactionsonDependable&SecureComputing, 2014,11(5):440-453.
Research of Database Sensitive Data Encryption Model Based on Web
Li Ziqing
(School of physics and electronic information engineering, Qinghai University for Nationalities, Xining 810007,China)
With the rapid development of Internet, the combination of Web technology and database technology is more and more closely, so the security of database security has become a very important part of information security. In the network environment, what kind of mechanism should be used to provide users with the generation, storage and access to data, and how to effectively ensure the safety of data, it becomes an urgent need to study the issue. High sensitive and confidential data encryption technology in the database storage, plays an increasingly important role, is the effective means to protect confidential data in the database in the storage and transmission, so can be used to model. In order to protect sensitive data in the Internet, put forward the model of encryption of sensitive data in the database, the database analysis, sensitive data classification based on the encryption engine, key management, key processing failure, the user sensitive data stored in the data base in the form of ciphertext. So even the database administrator can not easily obtain sensitive information from the user. After the attack caused the leakage of data it can also reduce the loss of system, ensure the security of data in the database to maximize. The experimental results show that the proposed model can effectively protect the security of sensitive data in database.
information security; information filtering; data classification; key management
2016-11-28;
2017-01-05。
教育部“春暉計(jì)劃”合作科研項(xiàng)目(S2015037)。
李自清(1975-),男,碩士,講師,主要從事計(jì)算機(jī)應(yīng)用技術(shù)方向的研究。
1671-4598(2017)05-0184-04
10.16526/j.cnki.11-4762/tp.2017.05.051
TP309.2
A