李自清
(青海民族大學(xué)物理與電子信息工程學(xué)院, 青海 西寧 810007)
基于網(wǎng)絡(luò)的數(shù)據(jù)庫敏感數(shù)據(jù)加密模型研究
李自清
(青海民族大學(xué)物理與電子信息工程學(xué)院, 青海 西寧 810007)
在互聯(lián)網(wǎng)飛速發(fā)展的今天,Web 技術(shù)與數(shù)據(jù)庫技術(shù)的結(jié)合越來越緊密,所以保護數(shù)據(jù)庫的安全成為了信息安全十分重要的一環(huán)。在網(wǎng)絡(luò)環(huán)境下,應(yīng)采用什么樣的機制來為用戶提供對數(shù)據(jù)的產(chǎn)生、存儲和訪問,以及如何有效地保證其中的數(shù)據(jù)安全性,就成為迫切需要研究的課題。加密技術(shù)對數(shù)據(jù)庫中存儲的高度敏感機密性數(shù)據(jù),起著越來越重要的作用,是防止數(shù)據(jù)庫中的數(shù)據(jù)在存儲和傳輸中失密的有效手段,所以完全可以用于模型。為了保護互聯(lián)網(wǎng)中的敏感數(shù)據(jù),提出了數(shù)據(jù)庫中敏感數(shù)據(jù)的加密模型,基于對數(shù)據(jù)庫敏感數(shù)據(jù)的分析、數(shù)據(jù)分類,通過加密引擎、密鑰管理、失效密鑰處理,將用戶敏感數(shù)據(jù)形成密文存儲在數(shù)據(jù)庫之中。這樣即使是數(shù)據(jù)庫管理員也無法輕易獲取用戶敏感信息,在因為攻擊等問題造成的數(shù)據(jù)泄露之后也可以減少系統(tǒng)損失,最大限度保證數(shù)據(jù)庫中數(shù)據(jù)的安全性。實驗結(jié)果表明該模型可以有效保護數(shù)據(jù)庫中敏感數(shù)據(jù)安全。
信息安全;信息過濾;數(shù)據(jù)分類;密鑰管理
隨著互聯(lián)網(wǎng)的不斷發(fā)展,它帶來的便利深入到我們生活的方方面面,極大地便利了我們的生活。
但是這種便利的背后,也帶來了很大的風(fēng)險:我們的個人信息時時遭受著泄露威脅。現(xiàn)在許多 Web 應(yīng)用經(jīng)常使用數(shù)據(jù)庫來對信息進行管理與存儲,所以為了保護用戶的個人信息,數(shù)據(jù)庫安全就成了當(dāng)今信息安全十分重要的一環(huán)。數(shù)據(jù)庫通常使用身份認(rèn)證、訪問控制、審計跟蹤和加密等手段來保證數(shù)據(jù)安全[1]。其中加密是對數(shù)據(jù)庫中敏感數(shù)據(jù)的一種特殊處理,即使用一定算法將原來數(shù)據(jù)庫中的敏感數(shù)據(jù)進行各種代替和變換,使其變?yōu)椴豢勺R別的格式,這樣不知解密方法的人便無法正確識別數(shù)據(jù)的內(nèi)容,從而保護了數(shù)據(jù)庫中的敏感數(shù)據(jù)。
加密算法可分為對稱加密算法和非對稱加密算法兩種,其中較廣泛使用的對稱加密算法有 1977年由當(dāng)時的美國國家標(biāo)準(zhǔn)局,即現(xiàn)在的國家標(biāo)準(zhǔn)與技術(shù)協(xié)會提出的數(shù)據(jù)加密標(biāo)準(zhǔn)(DES),和旨在取代 DES,由美國國家標(biāo)準(zhǔn)與技術(shù)研究院發(fā)布的高級加密標(biāo)準(zhǔn)(AES)[2]。加密算法需要使用密鑰,密鑰作為加密算法的輸入是獨立于明文與算法的,因為使用密鑰的不同而導(dǎo)致產(chǎn)生的輸出密文也會不盡相同,所以我們不需要對加密算法進行保密操作,僅需要對密鑰進行保護,就可以達到保護敏感數(shù)據(jù)的目的。
本文基于以上情況,提出了一種較為安全的數(shù)據(jù)庫敏感數(shù)據(jù)加密模型,以求最大限度保護數(shù)據(jù)庫中數(shù)據(jù)的安全。
1.1 安全風(fēng)險分析
數(shù)據(jù)庫安全主要指數(shù)據(jù)庫中的信息不會被非法修改或刪除,指數(shù)據(jù)庫中的數(shù)據(jù)保持了完整性、一致性、可用性與保密性等。數(shù)據(jù)庫遭受的威脅主要有:物理威脅,例如水災(zāi)、火災(zāi)、地震等因素對數(shù)據(jù)庫存儲硬件的破壞而造成的數(shù)據(jù)的破壞與丟失[3];邏輯威脅,例如信息泄露、非法修改等對數(shù)據(jù)庫中數(shù)據(jù)的人為破壞。
其中邏輯威脅經(jīng)常帶來巨大損失。為了獲取數(shù)據(jù)庫中信息,黑客經(jīng)常利用 web 程序漏洞對數(shù)據(jù)庫進行攻擊[4];而且數(shù)據(jù)泄露也常常發(fā)生在內(nèi)部人員之中,大量相關(guān)人員接觸敏感數(shù)據(jù),導(dǎo)致人員管理問題變得十分困難,因此敏感數(shù)據(jù)面臨的泄露風(fēng)險也十分巨大。目前對數(shù)據(jù)庫的防護措施主要由防火墻、白名單、協(xié)議加密、身份認(rèn)證、授權(quán)管理與審計追蹤等方法來保證數(shù)據(jù)庫的安全[5],但是由于系統(tǒng)中的漏洞、編程人員的疏忽或者內(nèi)部人員的竊取等問題導(dǎo)致數(shù)據(jù)庫中敏感數(shù)據(jù)還是時時處在威脅之中。
1.2 安全需求說明
Web 應(yīng)用面對著各種各樣的威脅,大量的用戶每天對應(yīng)用進行大量的訪問,大量的數(shù)據(jù)請求也在不停地發(fā)送到相應(yīng)數(shù)據(jù)庫中,數(shù)據(jù)庫中存儲了許多用戶與應(yīng)用的敏感數(shù)據(jù),這些數(shù)據(jù)是不可以被第三方獲取的珍貴資料。面對這樣的多用戶 Web 應(yīng)用系統(tǒng),本文提出了一種較為安全的數(shù)據(jù)庫敏感數(shù)據(jù)加密模型。
(1)因為攻擊或者用戶的不當(dāng)操作等原因,數(shù)據(jù)庫經(jīng)常接收許多非法申請與數(shù)據(jù)[6],而且若讓應(yīng)用直接操作數(shù)據(jù)庫,則會有其權(quán)限過大的問題,所以為了保護數(shù)據(jù)庫,需要對應(yīng)用提供接口,用來對用戶身份與輸入數(shù)據(jù)庫的數(shù)據(jù)進行一定過濾與驗證,這樣既可以保護數(shù)據(jù)庫安全,又可以減少不當(dāng)操作,提高效率。
(2)為了保護數(shù)據(jù)庫中的敏感數(shù)據(jù),數(shù)據(jù)加密是一種十分有力地手段。這種方法可以有效地解決內(nèi)部人員竊取和泄露的數(shù)據(jù)安全問題。本系統(tǒng)將數(shù)據(jù)分為三類:公有數(shù)據(jù)、敏感數(shù)據(jù)與私人數(shù)據(jù),對不同種類的數(shù)據(jù)進行不同處理,以提高加密效率。
(3)因為不需對加密算法進行保密處理,密鑰的管理變得十分的關(guān)鍵,一旦密鑰泄露,其他人就可以根據(jù)泄露的密鑰解密出加密數(shù)據(jù),所以安全地保管密鑰對于加密是十分重要的。同時因為密鑰也有生命周期[7],它的更新、存儲與銷毀都需要進行合理管理,有效的密鑰管理可以進一步加強數(shù)據(jù)庫的安全性,保護數(shù)據(jù)安全。
根據(jù)以上需求,本模型通過使用用戶數(shù)據(jù)傳輸接口對用戶的身份與輸入的數(shù)據(jù)進行驗證與過濾,設(shè)計了一種安全有效的數(shù)據(jù)庫加密引擎,合理的密鑰管理模塊,保護了數(shù)據(jù)庫中的敏感數(shù)據(jù)的安全性,增加了數(shù)據(jù)庫的風(fēng)險抵抗能力。
本文提出了一種針對數(shù)據(jù)庫敏感數(shù)據(jù)進行加密的加密模型,模型由用戶數(shù)據(jù)傳輸接口模塊、加密引擎模塊與密鑰管理模塊組成,將輸入的數(shù)據(jù)分為三類:公有數(shù)據(jù)、敏感數(shù)據(jù)與私人數(shù)據(jù),編寫數(shù)據(jù)字典與用戶權(quán)限表,用以區(qū)分?jǐn)?shù)據(jù)與密鑰的對應(yīng)關(guān)系。
2.1 用戶數(shù)據(jù)傳輸接口模塊
用戶或系統(tǒng)提交的數(shù)據(jù)首先經(jīng)過用戶數(shù)據(jù)傳輸模塊,此模塊提供接口供用戶輸入數(shù)據(jù)。本模塊首先根據(jù)用戶權(quán)限表對用戶的身份與權(quán)限進行驗證,對合法的用戶輸入的數(shù)據(jù)進行正則對比與過濾,保證用戶輸入的數(shù)據(jù)有效且正確,例如驗證身份證或手機號碼的格式、過濾敏感關(guān)鍵字,防止sql注入等。將合法的輸入交給下一模塊——加密引擎模塊,若發(fā)現(xiàn)用戶權(quán)限不足或者不合法輸入,則返回統(tǒng)一提示,隱藏錯誤信息,不給出具體描述,防止攻擊者利用錯誤信息猜測數(shù)據(jù)庫結(jié)構(gòu)從而對數(shù)據(jù)庫進行攻擊。
圖1 數(shù)據(jù)庫敏感數(shù)據(jù)加密模型
2.2 加密引擎模塊
根據(jù)數(shù)據(jù)字典與用戶權(quán)限表中指定的不同類型進行分別處理:公有數(shù)據(jù)即不需要加密的數(shù)據(jù),可以直接存儲到數(shù)據(jù)庫中,從而減少加密操作與密鑰數(shù)量,加快系統(tǒng)處理速度;敏感數(shù)據(jù)則需要經(jīng)過加密算法進行加密,保證其不可以被第三方獲?。凰饺藬?shù)據(jù)則使用用戶的私人密鑰進行加密,保證不同用戶間的數(shù)據(jù)不可以相互查看,保護數(shù)據(jù)的隱私性。針對三種數(shù)據(jù)的不同操作既可以保護數(shù)據(jù)庫中數(shù)據(jù)安全,同時又可增加系統(tǒng)運行效率。
2.3 密鑰管理模塊
因為數(shù)據(jù)分為三類,其中需要加密的兩類數(shù)據(jù)會產(chǎn)生許多密鑰,本模塊根據(jù)數(shù)據(jù)字典與用戶權(quán)限表來確定與管理每個加密數(shù)據(jù)所使用的加密密鑰,使用二級密鑰管理的方式來管理每個密鑰。因為密鑰也存在生命周期,對它的生成、更新、存儲與銷毀的不同生命周期需要進行有效的管理,以確保密鑰的安全性和有效性。敏感數(shù)據(jù)根據(jù)數(shù)據(jù)字典與用戶權(quán)限表來查找密鑰進行加密,這些密鑰稱為數(shù)據(jù)密鑰,而數(shù)據(jù)密鑰則使用根密鑰進行加密后存儲;私人密鑰則分成兩部分,一部分由用戶保存,另一部分同樣使用根密鑰加密后存儲在數(shù)據(jù)庫中,從而達到保護數(shù)據(jù)庫中數(shù)據(jù)安全的目的。
3.1 用戶數(shù)據(jù)傳輸接口模塊
本模塊針對用戶輸入提供統(tǒng)一接口,首先驗證用戶身份與權(quán)限,再對輸入數(shù)據(jù)進行過濾,返回統(tǒng)一提示信息。在本模塊中首先根據(jù)用戶權(quán)限表對用戶身份與權(quán)限進行驗證,驗證合法后再根據(jù)業(yè)務(wù)流程對輸入進行統(tǒng)一驗證,查看是否符合系統(tǒng)要求,之后再對符合要求的輸入進行關(guān)鍵字比對,例如包含update、delete 等關(guān)鍵字[8]的輸入不被允許通過,防止sql注入的發(fā)生。只有通過過濾的數(shù)據(jù)才會提交給下一模塊進行處理,如果用戶身份不合法或者輸入數(shù)據(jù)沒有通過驗證,則對用戶進行統(tǒng)一信息反饋,防止數(shù)據(jù)庫錯誤提示的泄露,從而保護數(shù)據(jù)庫中信息的安全。
3.2 加密引擎模塊
通過檢驗的數(shù)據(jù)將被交給加密引擎模塊分類進行加密,之后再將密文數(shù)據(jù)存入數(shù)據(jù)庫中。下面首先介紹本模型使用的算法:
圖2 用戶數(shù)據(jù)過濾工作流程
3.2.1 AES 加密算法
AES 加密算法屬于對稱加密算法,對稱加密算法根據(jù)對明文的加密方式不同可分為分組密碼與流密碼[9],AES 加密算法就屬于分組密碼,它的輸入輸出都按 128 比特來進行分組,在使用循環(huán)結(jié)構(gòu)迭代加密,使用字節(jié)替換、行移位、列混合和輪密鑰加來達到加密的效果。加密輸入的密鑰會經(jīng)過密鑰擴展模塊被擴展成為128 比特、192 比特或者 256 比特再進行加密運算。
若用X代表加密前輸入的明文,Y代表加密后輸出的密文,加密操作可表示為:Y=Akr+2?R?S?(Akj?C?R?S)r?Akj1(X)。
其中:A為輪密碼加運算,k為此輪的子密碼,因為總共進行r+2 輪,所以子密碼有K1、K2、……、K(r+2) 共r+2 個。S、R、C分別指字節(jié)替換、行移位與列混合運算,中間共重復(fù)r次,最后再進行一次字節(jié)替換、行移位與第r+2 個子密碼進行輪密碼加運算即可產(chǎn)生加密后的密文。
3.2.2 加密引擎模型
數(shù)據(jù)庫數(shù)據(jù)可表示為集合D={d1、d2、……、dn}[10],本文將數(shù)據(jù)分為三類:公有數(shù)據(jù)、敏感數(shù)據(jù)和私人數(shù)據(jù),他們經(jīng)過用戶數(shù)據(jù)傳輸接口模塊過濾后傳到加密引擎模塊進行不同加密處理,敏感數(shù)據(jù)使用數(shù)據(jù)密鑰K={k1、k2、……、kn},私人數(shù)據(jù)使用私人密鑰,私人密鑰是每個用戶私有的,可表示為集合U={u1、u2、……、un}。
(1)公有數(shù)據(jù)。
可以被所有人獲取的數(shù)據(jù),即不需要加密的數(shù)據(jù),它在此模塊直接交給數(shù)據(jù)庫進行儲存。
圖3 加密引擎模型
(2)敏感數(shù)據(jù)。
即針對系統(tǒng)內(nèi)部用戶可以共享,但對非系統(tǒng)用戶需要保密的數(shù)據(jù),它不需要針對不同用戶進行分別加密,只需要防御系統(tǒng)外部人員,所以本系統(tǒng)根據(jù)數(shù)據(jù)字典的設(shè)定,使用數(shù)據(jù)密鑰來對數(shù)據(jù)進行加密。加密的粒度選擇直接決定了數(shù)據(jù)庫的安全性與密鑰的數(shù)量,加密粒度越細(xì)安全性則越高,同時密鑰數(shù)量也會越多[11],雖然一次一密可以保證理論上加密不可破解,但會產(chǎn)生數(shù)量龐大的密鑰,增加管理難度,所以合適的粒度選擇也是個十分關(guān)鍵的問題。本系統(tǒng)不設(shè)定統(tǒng)一的加密粒度,具體情況根據(jù)數(shù)據(jù)字典的預(yù)先設(shè)定動態(tài)加密,這樣可以根據(jù)不同數(shù)據(jù)的使用頻率與危險等級等標(biāo)準(zhǔn)來設(shè)定不同加密粒度,在加強保護數(shù)據(jù)安全的情況下,盡量減少密鑰數(shù)量,減少密鑰管理難度。
操作敏感數(shù)據(jù)時首先根據(jù)申請加密的字段名稱去密鑰管理模塊查詢此敏感數(shù)據(jù)所對應(yīng)密鑰,然后使用AES加密算法進行加密,即將明文X加密處理后產(chǎn)生密文Y,表示為Y=AES(D,K),之后再將密文Y儲存在數(shù)據(jù)庫中。
(3)私人數(shù)據(jù)。
這類數(shù)據(jù)是用戶自己的私人信息,除了自己不想被其他人獲取的信息,即只有用戶自己可以查看自己的信息,其他用戶的信息對其是保密的。私人數(shù)據(jù)同樣使用 AES 加密算法與私人密鑰進行加密處理,產(chǎn)生密文 Y 并存儲起來。加密時首先根據(jù)數(shù)據(jù)字典與用戶權(quán)限表查詢用戶的私人密鑰,它是由用戶口令與系統(tǒng)隨機生成的字符串拼接而成,用戶口令由用戶自己設(shè)置與保管,隨機生成的字符串則由根密鑰加密后儲存在數(shù)據(jù)庫中。使用時用戶輸入口令,與數(shù)據(jù)庫中保存的隨機字符串解密后拼接成私人密鑰。過程可以描述為:Y=AES(D,U),其中:U=用戶口令+隨機字符串。
3.3 密鑰管理模塊
本模型采用二級密鑰管理的方式,使用數(shù)據(jù)字典與用戶權(quán)限表管理數(shù)據(jù)與密鑰關(guān)系,儲存在數(shù)據(jù)庫中的密鑰會使用根密鑰進行相應(yīng)加密后儲存,保證管理員也無法獲取密鑰,從而保護了數(shù)據(jù)的安全。
3.3.1 密鑰的查找與生成
在加密引擎模塊,每當(dāng)需要對敏感數(shù)據(jù)進行加密時,首先都需要查詢加密所需使用的密鑰。 在操作敏感數(shù)據(jù)時,根據(jù)提交申請的數(shù)據(jù)名稱,首先去數(shù)據(jù)字典查找相應(yīng)數(shù)據(jù)密鑰,使用根密鑰解密數(shù)據(jù)密鑰后再對敏感數(shù)據(jù)進行加解密操作。
私人密鑰是在用戶注冊時,由用戶自己設(shè)定的口令與系統(tǒng)隨機生成的字符串拼接而成的,用戶口令由用戶自己保存,而隨機字符串則由系統(tǒng)自動生成后用根密鑰加密后存儲在用戶權(quán)限表中。操作私人數(shù)據(jù)時根據(jù)數(shù)據(jù)字典與用戶權(quán)限表查找用戶自己的私人密鑰,用根密鑰解密后再對數(shù)據(jù)進行加解密操作。
3.3.2 密鑰的更新與銷毀
密鑰也有生命周期,其存在的時間越長,所遭受的泄露風(fēng)險也就越大,而且 Web 應(yīng)用每時每刻都有許多用戶進行訪問與操作,數(shù)據(jù)量通常十分龐大。針對這個特性,本系統(tǒng)對不同密鑰設(shè)定不同有效期,通過數(shù)據(jù)字典設(shè)定的密鑰有效期定時對已有的密鑰進行掃描更新,從而確保密鑰的安全性。因為本模型是將密鑰分為數(shù)據(jù)密鑰、根密鑰與私人密鑰的二級密鑰管理方式,根據(jù)密鑰的種類不同,更新分為以下幾種情況:
(1)數(shù)據(jù)密鑰。
敏感數(shù)據(jù)使用數(shù)據(jù)密鑰進行加密,根據(jù)數(shù)據(jù)字典的設(shè)置,其中會存在多個密鑰,這些密鑰使用根密鑰加密后存儲在數(shù)據(jù)庫中,使用時再解密取出。所以根據(jù)數(shù)據(jù)字典中設(shè)定的不同有效期,定期對不同等級的密鑰進行掃描更新,更新時將此密鑰相關(guān)的數(shù)據(jù)一次性取出解密,再使用新密鑰進行加密存儲,新密鑰使用根密鑰加密后,替換舊密鑰存儲在數(shù)據(jù)庫中,以供下次使用。
(2)私人密鑰。
為了保護私人數(shù)據(jù)的安全性,需要使用私人密鑰對其進行加密,為了保證加密的安全性,需要密鑰保證一定長度,但是用戶一般無法記住一個太長的口令,所以本系統(tǒng)將用戶自己設(shè)定的一個口令與系統(tǒng)自動生成的隨機字符串拼接形成私人密鑰,這樣既保證了密鑰的長度,同時也沒有增加用戶的使用難度。隨機生成的字符串也由根密鑰進行加密后存儲在用戶權(quán)限表中,在用戶更新自己的口令的時候,系統(tǒng)也會自動更新隨機字符串,然后根據(jù)數(shù)據(jù)字典與用戶權(quán)限表對此用戶的私人數(shù)據(jù)進行一次性更新,儲存根密鑰加密后的隨機字符串,替換私人密鑰存儲在數(shù)據(jù)庫中的部分,即一次性更換用戶私人密鑰。
(3)根密鑰。
因為數(shù)據(jù)密鑰與私人密鑰的一部分都是由根密鑰進行加密后存儲的,這樣即使管理員也無法獲得真正的密鑰,從而保護的數(shù)據(jù)的安全。但是這樣根密鑰的儲存就變得十分關(guān)鍵了,一旦根密鑰泄露,則其他密鑰的加密也就失去了作用,數(shù)據(jù)就會暴露在危險之中。所以根密鑰需要定時進行更新,因為根密鑰加密的對象也是密鑰,數(shù)據(jù)量相對于數(shù)據(jù)庫庫中的數(shù)據(jù)少很多,所以根密鑰更新時可使用一次性更新的方式,即同時取出所有密鑰進行解密,使用新根密鑰加密更新的操作。
3.3.3 密鑰的存儲
密鑰生成與更新后,都需要存儲起來以供之后使用。但一旦處理不好使密鑰泄露則可造成災(zāi)難性的后果,這相當(dāng)于數(shù)據(jù)庫中的數(shù)據(jù)加密失去了意義,得到密鑰的黑客只要得到敏感數(shù)據(jù),就可以對其進行解密操作,得到具體信息,用戶重要的信息就會泄露。為了防止這種事情的發(fā)生,我們需要對密鑰進行嚴(yán)密的管理,防止密鑰泄露。
本系統(tǒng)使用的數(shù)據(jù)密鑰與私人密鑰存儲的部分都使用根密鑰進行過加密,可以直接儲存在數(shù)據(jù)庫中而保證不泄露,所以根密鑰的保存就至關(guān)重要了,為了防止攻擊者獲得根密鑰,它可以儲存在物理令牌中,由專人保管,防止泄露。
4.1 可行性分析
本系統(tǒng)為了保護數(shù)據(jù)庫安全設(shè)計了一個針對敏感數(shù)據(jù)的加密模型,通過用戶數(shù)據(jù)接口模塊、加密引擎模塊與密鑰管理模塊共同作用保護了數(shù)據(jù)庫中的數(shù)據(jù)安全。
首先用戶數(shù)據(jù)接口模塊針對用戶身份合法性與輸入的數(shù)據(jù)進行了過濾,即保證了業(yè)務(wù)上的數(shù)據(jù)完整性與可用性,又減少了 sql注入的風(fēng)險,保護了數(shù)據(jù)庫中的數(shù)據(jù)安全。
加密引擎模塊首先將數(shù)據(jù)分為三類,公有數(shù)據(jù)不需加密,極大減少了系統(tǒng)開銷,增加了系統(tǒng)運行速度;敏感數(shù)據(jù)需要根據(jù)數(shù)據(jù)字典進行加密,從而在龐大的系統(tǒng)數(shù)據(jù)中減少使用的密鑰數(shù)量,減少系統(tǒng)開銷,同時避免黑客攻擊或內(nèi)部人員對數(shù)據(jù)的竊取;私人數(shù)據(jù)需要使用用戶口令與系統(tǒng)生成的隨機字符串拼接的私人密鑰進行加密,使用數(shù)據(jù)字典與用戶權(quán)限表來對應(yīng)密鑰與數(shù)據(jù)的關(guān)系,從而保證僅用戶本人才可以看見數(shù)據(jù)內(nèi)容。
密鑰管理模塊使用二級密鑰管理的方式,提供對密鑰的查詢與生成、更新與銷魂和存儲操作,根據(jù)數(shù)據(jù)字典中設(shè)置的不同有效期定時掃描,對密鑰進行一次性更新,替換失效舊密鑰。這些密鑰管理方式共同保護了密鑰的安全,使得加密更加安全可靠。
所以本系統(tǒng)可以有效保護數(shù)據(jù)庫中數(shù)據(jù)的機密性、完整性與可用性,同時兼顧系統(tǒng)開銷,減少密鑰數(shù)量,從而減少密鑰管理難度,是種安全的數(shù)據(jù)庫敏感數(shù)據(jù)加密模型。
4.2 實驗
4.2.1 實驗環(huán)境
本文涉及的加密模型主要使用了 AES 加密算法,將數(shù)據(jù)分為三類分別進行了處理,使用二級密鑰管理的方式,既保證了敏感數(shù)據(jù)的安全性,同時也兼顧了系統(tǒng)的開銷。
因為 Web 應(yīng)用經(jīng)常會一次性取出幾條數(shù)據(jù)進行各種處理,其中可能包含多個字段數(shù)據(jù)。而且要是單純使用 AES 加密算法對 Web 應(yīng)用進行加密,要保證加密的安全性,使數(shù)據(jù)內(nèi)容不會輕易泄露,一次一密是非常保險的方式。本模型根據(jù)數(shù)據(jù)庫特性,使用 java 語言及相應(yīng)方法庫模擬了單純使用 AES 加密算法一次一密的加密數(shù)據(jù)方式與使用本模型加密數(shù)據(jù)的方式,用以對比對數(shù)據(jù)庫中數(shù)據(jù)進行加密所用時間與模型效率。具體環(huán)境參數(shù)如下。
表2 數(shù)據(jù)庫敏感數(shù)據(jù)加密模型實驗環(huán)境
分別取出數(shù)據(jù)庫中某張表的 30 條與 60 條數(shù)據(jù),每條數(shù)據(jù) 3 個字段,即總共 90 個與 180個數(shù)據(jù)項,設(shè)定每個數(shù)據(jù)項都需要進行加密。同時設(shè)定有 2 個用戶,數(shù)據(jù)字典預(yù)先設(shè)定的信息如下。
表3 實驗數(shù)據(jù)字典設(shè)定
4.2.2 實驗結(jié)果
使用 AES 加密算法采用一次一密的方式加密所有數(shù)據(jù)項,再使用本模型根據(jù)以上數(shù)據(jù)字典對數(shù)據(jù)分類進行加密,記錄每次的加密運行時間,多次運行匯總出了如表4所示。
表4 運行時耗對比
針對以上表格,可以看出AES加密算法與本模型的數(shù)據(jù)加密總時耗接近,雖然AES加密算法需要在加密每個數(shù)據(jù)項時產(chǎn)生新的密鑰并存儲,但是本模型則需要查找相應(yīng)密鑰并返回,所以在加密時間本模型總加密時間會多一點。其中敏感數(shù)據(jù)只需要查詢數(shù)據(jù)字典來確定密鑰,所以所需時間相對短一點;而私人數(shù)據(jù)則需要同時查詢數(shù)據(jù)字典與用戶權(quán)限表兩張表,所以會更耗時一些,但是因為總體加密時間不會增加太多,所以系統(tǒng)效率的降低在可接受范圍內(nèi)。
單純使用AES加密算法一次一密的加密方式產(chǎn)生了 90 個與 180 個密鑰,而本系統(tǒng)不受數(shù)據(jù)量的影響只有 4 個密鑰,遠遠小于單純使用AES加密算法一次一密加密的密鑰數(shù)量,在密鑰管理方面節(jié)省了大量空間與時間。
本模型中敏感數(shù)據(jù)根據(jù)數(shù)據(jù)字典動態(tài)選用加密粒度,不僅可以減少密鑰數(shù)量,減輕密鑰管理的負(fù)擔(dān),因為密鑰的讀取的時耗也是常數(shù)級的,也不會大量增加系統(tǒng)運行時間。私人數(shù)據(jù)部分由用戶自己保管,減少了密鑰泄露的可能性,從而保證私人數(shù)據(jù)不會被第三者獲知,保護其隱私性。三類數(shù)據(jù)與二級密鑰管理的方式大大提高了數(shù)據(jù)庫的安全性,在系統(tǒng)耗時增加可以接受的情況下,節(jié)省了查詢時間與存儲空間。
4.3 模型評測
本系統(tǒng)開銷較小,相對于單純使用AES加密算法一次一密加密的方式時耗增加不多,密鑰管理更加方便,可以更好地對數(shù)據(jù)庫中敏感數(shù)據(jù)進行保護。用戶數(shù)據(jù)接口模塊也降低了應(yīng)用的所承受的壓力,將一部分?jǐn)?shù)據(jù)過濾交由后臺處理,對sql注入進行了一定過濾。數(shù)據(jù)分類方式大大減少系統(tǒng)開銷,對私人密鑰分割的方式也增加了私人數(shù)據(jù)的安全性,而根據(jù)數(shù)據(jù)字典動態(tài)選取加密粒度的方式不僅增加了安全性,也減輕了密鑰管理的復(fù)雜度,在保證數(shù)據(jù)安全性的前提下,減輕了系統(tǒng)負(fù)擔(dān),增加了可行性。密鑰管理模塊的的二級密鑰管理方式,對儲存在數(shù)據(jù)庫中的密鑰進行加密,同時將根密鑰儲存在物理令牌中,保護了密鑰的安全,從而保證數(shù)據(jù)庫敏感數(shù)據(jù)的安全性。
但是為了保證加密效果,數(shù)據(jù)字典的預(yù)先設(shè)定十分重要,所以需要事先設(shè)定一個考慮全面的數(shù)據(jù)字典,這是對數(shù)據(jù)庫設(shè)計者的一個挑戰(zhàn)。
本文提出了針對敏感數(shù)據(jù)的數(shù)據(jù)加密模型,該模型使用了用戶數(shù)據(jù)接口、加密引擎與密鑰管理模塊來對數(shù)據(jù)進行分類處理,根據(jù)數(shù)據(jù)字典與用戶權(quán)限表確定數(shù)據(jù)與密鑰的對應(yīng)關(guān)系,采取根據(jù)數(shù)據(jù)字典動態(tài)選擇加密粒度加密的方式,使用二級密鑰管理的方式,對密鑰采用定時掃描,一次性更新的方式,解決了敏感數(shù)據(jù)的加密與密鑰管理問題,實驗數(shù)據(jù)表明本模型的時耗增加是可接受的,密鑰管理則便利許多,節(jié)省許多存儲密鑰的空間,數(shù)據(jù)庫的安全性也得到了保證,保護了數(shù)據(jù)庫中的敏感數(shù)據(jù)的安全。
[1] 胡 敏.Web系統(tǒng)下提高MySQL數(shù)據(jù)庫安全性的研究與實現(xiàn)[D]. 北京:北京郵電大學(xué),2015.
[2] 張金輝.AES加密算法分析及其在信息安全中的應(yīng)用[J].信息網(wǎng)絡(luò)安全,2011,05(5):31-33.
[3] 李衛(wèi)平,張?zhí)煳?數(shù)據(jù)庫加密模型設(shè)計探討[J].煤炭技術(shù),2012,31(6):217-218.
[4] 吳翰清.白帽子講Web安全[M].北京:電子工業(yè)出版社,2014.
[5] 成曉利.Web應(yīng)用SQL注入漏洞測試系統(tǒng)的研究與實現(xiàn)[D].成都:西南交通大學(xué),2013.
[6] 李紹武.試析計算機網(wǎng)絡(luò)數(shù)據(jù)庫存在的安全威脅和應(yīng)對措施[J].通訊世界,2014,18(09):32-33.
[7] 吳開均.數(shù)據(jù)庫加密系統(tǒng)的設(shè)計與實現(xiàn)[D]. 成都:電子科技大學(xué),2014.
[8] 常紅梅.基于存儲過程的數(shù)據(jù)庫安全性實踐初論[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015,4(4):112-112.
[9] 蓋玉蓮.加密技術(shù)在數(shù)據(jù)庫安全中應(yīng)用研究[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。
教育部“春暉計劃”合作科研項目(S2015037)。
李自清(1975-),男,碩士,講師,主要從事計算機應(yīng)用技術(shù)方向的研究。
1671-4598(2017)05-0184-04
10.16526/j.cnki.11-4762/tp.2017.05.051
TP309.2
A