醫(yī)院的醫(yī)生開單記錄如果被隨意讀取進(jìn)行統(tǒng)計分析,容易導(dǎo)致藥品銷售過程中的不合法行為。因此,對于敏感數(shù)據(jù)應(yīng)當(dāng)進(jìn)行加密處理后再存儲。本文采用基于AES的一種加密算法對醫(yī)院的門診、住院、處方等數(shù)據(jù)表的敏感字段進(jìn)行加密和解密,從系統(tǒng)的存儲層上保證數(shù)據(jù)的安全性,很大程度上解決了敏感數(shù)據(jù)的防泄露、防篡改和防破壞問題,從技術(shù)層面加強(qiáng)對醫(yī)院藥品的管理控制。
【摘要】為了使敏感數(shù)據(jù)在存儲期間的機(jī)密性得到有效保障,在分析數(shù)據(jù)庫加密粒度的基礎(chǔ)上,提出一種基于AES的加密算法對敏感字段進(jìn)行加密存儲,并針對密鑰的隱蔽性提出建議,從系統(tǒng)存儲層上保證數(shù)據(jù)的安全性。
【關(guān)鍵詞】敏感字段,加密粒度,AES算法
1引言
數(shù)據(jù)庫通常以明文存儲,現(xiàn)有的數(shù)據(jù)庫管理系統(tǒng)基本上采用用戶認(rèn)證、授權(quán)管理、安全審計等技術(shù)進(jìn)行安全管理。但是,諸如數(shù)據(jù)庫管理員或侵入數(shù)據(jù)庫服務(wù)器的黑客,都可以毫無阻礙地訪問數(shù)據(jù)庫的重要數(shù)據(jù),一些敏感數(shù)據(jù)在存儲期間的機(jī)密性并不能得到有效保障。
2數(shù)據(jù)庫加密粒度
按照數(shù)據(jù)庫的結(jié)構(gòu)層次,數(shù)據(jù)庫加密粒度可分為數(shù)據(jù)庫級、表級、記錄級、字段級以及數(shù)據(jù)項級。應(yīng)根據(jù)不同的應(yīng)用需求,選擇適合的加密粒度。
數(shù)據(jù)庫級加密粒度的加密對象是整個數(shù)據(jù)庫,對所有的用戶數(shù)據(jù)表、系統(tǒng)數(shù)據(jù)表、索引、視圖、存儲過程、函數(shù)等都進(jìn)行加密處理?梢圆捎脦靸(nèi)和庫外兩種加密方式。庫內(nèi)加密是在DAMS內(nèi)部實現(xiàn)加密,在對數(shù)據(jù)庫進(jìn)行物理存取之前由DBMS完成加密/解密工作,加密密鑰通常保存在系統(tǒng)表(或稱數(shù)據(jù)字典)中。這種方法對用戶是完全透明的,但加密/解密運(yùn)算需要在服務(wù)器端進(jìn)行,當(dāng)用戶訪問數(shù)據(jù)庫時,即使只需檢索符合條件的很少一部分記錄,也要對整個數(shù)據(jù)庫進(jìn)行解密,因此加重了數(shù)據(jù)庫系統(tǒng)的負(fù)擔(dān)。另外由于加密密鑰通常與數(shù)據(jù)庫保存在一起,因此,加密密鑰的安全保護(hù)依賴于DBMS中的訪問控制機(jī)制,密鑰管理安全風(fēng)險大。庫外加密是將數(shù)據(jù)庫加密系統(tǒng)做成DBMS的一個外層工具。先將數(shù)據(jù)在內(nèi)存中進(jìn)行加密,然后文件系統(tǒng)把每次加密的內(nèi)存數(shù)據(jù)寫入數(shù)據(jù)庫文件中,讀出數(shù)據(jù)時再逆向進(jìn)行解密。這種方法的缺點是對數(shù)據(jù)庫的讀寫比較麻煩,每次都要進(jìn)行加密/解密的工作,影響數(shù)據(jù)庫的讀寫速度。
表級加密粒度的加密對象是數(shù)據(jù)庫中的表。一般來說,只需對數(shù)據(jù)庫中包含敏感信息的部分表進(jìn)行加密即可。采用表級加密粒度,訪問時只需要對特定的表進(jìn)行解密,與采用數(shù)據(jù)庫級加密粒度相比,系統(tǒng)性能有一定的改善。
記錄級、字段級、數(shù)據(jù)項級加密粒度的加密對象分別是數(shù)據(jù)表中的記錄、字段或某些記錄中某字段的值,這幾種加密粒度更細(xì),靈活性更好,但密鑰管理更加復(fù)雜,F(xiàn)實中一些重要和敏感的信息往往是某些記錄的某些字段,只需對這些重要內(nèi)容進(jìn)行加密即可,普通數(shù)據(jù)則沒有必要加密,以免增加不必要的性能開銷。例如醫(yī)生開單記錄具有特定的時效性,因此只需對某個時段的醫(yī)生姓名字段進(jìn)行加密即可。
3加密算法
3.1AES算法介紹
高級加密標(biāo)準(zhǔn)算法(AdvancedEncryptionStandard,AES)是一種分組對稱加密,使用相同的密鑰對數(shù)據(jù)進(jìn)行加密和解密,支持128bit分組加密,并可選擇使用128、192和256bit密鑰。AES算法的原型是采用寬軌跡策略的Square算法。寬軌跡策略是針對線性分析和差分分析提出的,最大優(yōu)點是可以給出算法的最佳線性逼近偏差的界,以及最佳差分特征的概率,可以提高算法抗擊線性密碼分析及差分密碼分析的能力。
AES算法使用循環(huán)結(jié)構(gòu)迭代加密,加密和解密分別經(jīng)過十輪的運(yùn)算處理,每一輪操作包括四個基本步驟:字節(jié)替換SubBytes()、行移位ShiftRows()、列混合MixColumns()和輪密鑰加AddRoundKey()。加密的具體流程如圖1所示。
圖中每輪變換所需要的密鑰,通過密鑰擴(kuò)展算法得到。解密算法與加密算法的主要區(qū)別有:使用密鑰序列的順序不同、置換盒不同、行移方向不同、列混系數(shù)不同,以及每輪變換中函數(shù)的使用順序不同。
具體實現(xiàn)時,AES算法主要分為三大模塊:密鑰注入INITKAES()、數(shù)據(jù)加密Cipher()和數(shù)據(jù)解密InvCipher()。
AES將加密密鑰的位數(shù)提高到128bit以上,極大地增加了破解密文的難度。AES算法具有靈活、高效、易實現(xiàn)、抗擊多種密碼分析的優(yōu)點,廣泛運(yùn)用于商業(yè)、政治和軍事的數(shù)據(jù)加密。3.2算法改進(jìn)
盡管如此,直接使用AES算法對數(shù)據(jù)庫字段進(jìn)行加密存儲也是不可取的。AES算法工具和源碼都很容易得到,對于數(shù)據(jù)庫管理員或黑客來說,由于AES算法是對稱加密,只要找到相應(yīng)的密鑰存放表,就可以對加密字段自行解密。因此,本文在實際加密處理時,并不是直接使用AES算法,而是將其作為算法核心,輔以一些變換運(yùn)算,構(gòu)成最終的加密算法。
改進(jìn)的加密算法如下:
、偕蓛蓚隨機(jī)數(shù)R1(32字節(jié),即256bit)、R2(16字節(jié)),其中,R1作為密鑰;
、趯⒚荑R1與一條記錄主鍵的某字段(如ID)異或得到該記錄的加密密鑰UR1;
UR1=R1?茌ID(1)
、壅{(diào)用密鑰注入函數(shù)注入加密密鑰,aes.INITKAES(32,UR1);
、苁褂迷摷用苊荑對隨機(jī)數(shù)R2進(jìn)行加密,得到密文SC(16字節(jié)),aes.Cipher(R2,SC);
、萦肧C異或需要加密的字段YW,得到加密結(jié)果MI。
MI=SC?茌YW(2)
⑥將該記錄的所有主鍵和R1、R2及加密結(jié)果MI等信息作為一條記錄,保存到數(shù)據(jù)庫,用于日后解密使用。
解密時,先查詢密鑰R1、R2和加密結(jié)果MI,然后重復(fù)上述②~④步驟,得到SC,再用SC異或MI,得到明文YW。
YW=SC?茌MI(3)
4實現(xiàn)與分析
4.1加密實現(xiàn)
首先讀取數(shù)據(jù)表中敏感字段所在記錄,采取一次一密的方式,按改進(jìn)的算法逐條對敏感字段數(shù)據(jù)進(jìn)行加密處理,用得到的密文修改數(shù)據(jù)庫原明文字段,同時將該該錄的所有主鍵與密鑰(R1、R2)、密文及加密時間等信息保存到相應(yīng)的密鑰表。
解密時,根據(jù)主鍵的一致性檢索待解密記錄的密鑰,當(dāng)確定數(shù)據(jù)表中的密文與密鑰表中的密文一致時,使用該密鑰進(jìn)行解密,還原數(shù)據(jù)表中的敏感字段值。對敏感字段加密和解密流程如圖2所示。
4.2密鑰管理
由于數(shù)據(jù)表的主鍵各不相同,因此每一個有需要加密字段的數(shù)據(jù)表對應(yīng)一個密鑰表。密鑰表既可以與原數(shù)據(jù)表放在同一個數(shù)據(jù)庫內(nèi),也可以放在其他數(shù)據(jù)庫內(nèi),或單獨建立一個密鑰表數(shù)據(jù)庫。數(shù)據(jù)與密鑰不僅可以做到邏輯分離,還可以實現(xiàn)物理分離,即兩者可以不存放在同一臺服務(wù)器上,這樣隱蔽性更強(qiáng),能更好地保證數(shù)據(jù)庫中敏感數(shù)據(jù)的安全。
本文需要加密的敏感字段在Oracle數(shù)據(jù)庫中,而密鑰表保存在SQLServer2008數(shù)據(jù)庫,并且兩者異地存儲。
4.3加解密速率分析
盡管加密效率并不是我們所追求的,但考慮到醫(yī)院每天的門診和住院信息量很大,處方記錄數(shù)量非常多,因此,在加解密速率方面,也適當(dāng)予以關(guān)注。本文采用C++語言編程,在CPU為3.0GHz,內(nèi)存為1G,window操作系統(tǒng)的筆記本電腦上測試,加密速率達(dá)到每秒1000條以上記錄。改進(jìn)后的加密算法,僅僅是在AES算法的基礎(chǔ)上進(jìn)行適當(dāng)?shù)漠惢蜻\(yùn)算,對加解密速率的影響幾乎可以忽略不計。
5結(jié)束語
本文針對數(shù)據(jù)庫敏感字段的安全性問題,提出一種基于AES算法的加密方法,對敏感字段進(jìn)行加密存儲,從系統(tǒng)存儲層上保證數(shù)據(jù)的安全性。在此基礎(chǔ)上,還對密鑰的管理提出合理建議,加強(qiáng)密鑰的隱蔽性,從而更好地保證數(shù)據(jù)庫中敏感數(shù)據(jù)的安全。
參考文獻(xiàn)
[1]黃吳健,帥仁俊.電子健康檔案的加密研究.計算機(jī)工程與設(shè)計,Oct.2012Vol.33No.10:3833-3837.
[2]朱繼鋒等.支持密文索引的數(shù)據(jù)庫透明加密方法.信息安全與技術(shù),2011.09:50-55.
[3]李維勇.一種字符型數(shù)據(jù)加密算法研究.計算機(jī)安全,2009.11:56-58.
[4]張金輝等.AES加密算法分析及其在信息安全中的應(yīng)用.信息網(wǎng)絡(luò)安全,2011年第05期:31-33.
《計算機(jī)科學(xué)與探索》雜志是由中華人民共和國工業(yè)和信息化部主管、華北計算技術(shù)研究所主辦的國內(nèi)外公開發(fā)行的計算機(jī)學(xué)報級高級學(xué)術(shù)期刊,中國計算機(jī)學(xué)會會刊,2010年開始由雙月刊更改為月刊,大16開。歡迎踴躍投稿(中文,英文稿件均可)。報導(dǎo)范圍:堅持刊登計算機(jī)(硬件、軟件)各學(xué)科具有創(chuàng)新性、前沿性、導(dǎo)向性、開拓性及探索性的科研成果。
《計算機(jī)科學(xué)與探索》辦刊宗旨
堅持“雙百”方針,傳播計算機(jī)信息,把握行業(yè)動態(tài),探索計算機(jī)發(fā)展規(guī)律,開拓計算機(jī)科學(xué)技術(shù)發(fā)展新思路,促進(jìn)科技交流。
《計算機(jī)科學(xué)與探索》欄目設(shè)置
本刊刊登內(nèi)容提要:高性能計算機(jī),體系結(jié)構(gòu)、并行處理,計算機(jī)科學(xué)新理論、算法設(shè)計與分析、人工智能與模式識別、系統(tǒng)軟件,軟件工程、數(shù)據(jù)庫、計算機(jī)網(wǎng)絡(luò)、信息安全、計算機(jī)圖形學(xué)與計算機(jī)輔助設(shè)計、虛擬現(xiàn)實、多媒體技術(shù)及交叉學(xué)科的相互滲透和新理論的衍生等(如:認(rèn)知科學(xué)、神經(jīng)信息學(xué)、量子信息學(xué)、生物信息學(xué)等)。
《計算機(jī)科學(xué)與探索》期刊數(shù)據(jù)庫收錄情況/影響因子
《計算機(jī)科學(xué)與探索》雜志被列為“中國科學(xué)引文數(shù)據(jù)庫來源期刊”,并被“萬方數(shù)據(jù)——數(shù)字化期刊群”、“中國學(xué)術(shù)期刊網(wǎng)絡(luò)出版總庫”、“美國《劍橋科學(xué)文摘(CSA)》”、“波蘭《哥白尼索引》”收錄。
復(fù)合影響因子:0.943綜合影響因子:0.350
轉(zhuǎn)載請注明來自:http://www.jinnzone.com/xinxianqlw/31375.html