楊 楓
摘要數(shù)據(jù)庫安全保護是指保護數(shù)據(jù)庫中的數(shù)據(jù),防止無關(guān)人員或非授權(quán)人員對數(shù)據(jù)庫中數(shù)據(jù)的竊取、篡改和破壞。數(shù)據(jù)庫的突出特點是數(shù)據(jù)的集中存放和共享。隨著計算機技術(shù)的發(fā)展和應(yīng)用的深入,數(shù)據(jù)庫的應(yīng)用已觸及社會的各個角落。研究數(shù)據(jù)庫加密系統(tǒng)的相關(guān)理論,密文索引、密鑰管理等數(shù)據(jù)加密系統(tǒng)中的關(guān)鍵技術(shù),保護數(shù)據(jù)庫中的數(shù)據(jù)不被竊取、破壞是非常重要的。
關(guān)鍵詞數(shù)據(jù)庫加密;加密粒度;加密算法
作者簡介楊楓,唐山學院圖書館助理館員,研究方向:數(shù)據(jù)庫安全,河北唐山,063000
中圖分類號TP309文獻標識碼A文章編號1007-7723(2009)03-0016-0003
一、引言
隨著信息技術(shù)的發(fā)展,數(shù)據(jù)的安全問題被提到前所未有的高度。傳統(tǒng)的數(shù)據(jù)庫保護方式是通過設(shè)定口令字和訪問權(quán)限等方法實現(xiàn)的,數(shù)據(jù)庫管理員可以不加限制地訪問數(shù)據(jù)庫中的所有數(shù)據(jù)。解決這一重大安全隱患的關(guān)鍵是要對數(shù)據(jù)本身加密,即使數(shù)據(jù)不幸泄露或丟失,也難以被人破譯。
二、數(shù)據(jù)庫加密
數(shù)據(jù)庫加密,大致可以分為兩種方式:DBMS外部加密和DBMS內(nèi)部加密。
DBMS外部加密一般選擇在應(yīng)用程序和操作系統(tǒng),通過調(diào)用加/解密函數(shù)來完成加密數(shù)據(jù)的存儲和訪問。DBMS外部加密的優(yōu)點是,不需要修改DBMS,只需要在應(yīng)用程序或者操作系統(tǒng)中增加相應(yīng)的加,解密模塊即可。但是,這種方法也有一些缺點,首先它不能支持各種加密粒度。在操作系統(tǒng)中加密時,加密的粒度是基于文件,對應(yīng)到數(shù)據(jù)庫中則是相應(yīng)的表或者整個數(shù)據(jù)庫,這種加密粒度非常粗糙,最直接的影響是,加/解密的工作相當大,極大地降低系統(tǒng)性能。
在DBMS內(nèi)部加密,一般選擇在數(shù)據(jù)物理存取之前進行加,解密操作。DBMS在將內(nèi)存中的數(shù)據(jù)寫到磁盤時,進行加密操作,而從磁盤讀取數(shù)據(jù)到內(nèi)存中時,進行相應(yīng)的解密操作。這種方法的優(yōu)點是,由于DBMS能夠區(qū)分各種粒度的數(shù)據(jù),所以可以支持各種粒度的加密,加密的靈活性較好。另外,在DBMS內(nèi)部實現(xiàn)加密,可以更有效地和DBMS內(nèi)部的訪問控制機制、授權(quán)機制等各種功能結(jié)合起來。更重要的是,數(shù)據(jù)庫一個重要特點是被多個應(yīng)用共享,這種方法的加,解密都是在DBMS內(nèi)部完成,對應(yīng)用程序是透明的,不需要在多個應(yīng)用中進行修改,容易保持數(shù)據(jù)的一致性。缺點是需要修改DBMS的內(nèi)核,DBMS是一個非常復雜的軟件,對它進行修改是一件非常艱巨的任務(wù)。
三、數(shù)據(jù)庫加密系統(tǒng)的基本概念
(1)訪問控制:在開放的系統(tǒng)中,對一個主體訪問一個客體功能、服務(wù)和能力的限制。
(2)自主訪問控制:一種基于對主體或客體所屬主體組的識別來限制對客體的訪問。自主是指對其他主體具有授予某種訪問權(quán)限的主體能夠自主地(直接或間接地)將訪問權(quán)或訪問權(quán)的某個子集授予給其他的主體。
(3)強制訪問控制:一種基于客體所包含信息的敏感度和主體對該敏感度的客體是否有正式的存取授權(quán)來限制對客體訪問的機制。
(4)敏感數(shù)據(jù):敏感數(shù)據(jù)就是不應(yīng)公開的數(shù)據(jù)。敏感數(shù)據(jù)取決于具體的數(shù)據(jù)庫和數(shù)據(jù)的含義。
(5)多級安全:是軍事安全模型的一種數(shù)學描述,它用計算機可實現(xiàn)的方式定義。多級安全模型有兩個重要性質(zhì):簡單安全特性和一般特性。
(6)多級安全的粒度:是指一個多級安全所控制的最小單位。它的含義與并發(fā)控制的粒度相似。多級安全的粒度通??梢苑譃椋罕砑墶⒘屑?、元組級、元素級。其中表級最大,元素級最小。
(7)加密粒度:采用同一密鑰和加密算法進行加密的數(shù)據(jù)粒度。
四、加密粒度
按照數(shù)據(jù)庫的結(jié)構(gòu)層次,數(shù)據(jù)庫的加密粒度可以分為數(shù)據(jù)庫級、表級、記錄級、字段級和數(shù)據(jù)項級。根據(jù)不同的直用需要,選擇合適的加密粒度。
(一)數(shù)據(jù)庫級
加密的對象是整個數(shù)據(jù)庫,這意味著對所有的用戶數(shù)據(jù)表、系統(tǒng)數(shù)據(jù)表、索引、視圖和存儲過程等都進行加密處理。這種加密方法簡單,只需要對存儲在磁盤中的相應(yīng)數(shù)據(jù)庫文件進行加密處理,密鑰的數(shù)量少,一個數(shù)據(jù)庫只對應(yīng)一個密鑰,管理方便。但是,數(shù)據(jù)庫的數(shù)據(jù)共享性高,被多個用戶和應(yīng)用共享使用,需要接受大量的隨機訪問。一般來說,用戶訪問數(shù)據(jù)庫時,是為了將符合條件的記錄檢索出來。如果采用數(shù)據(jù)庫級加密方式,即使只需要查詢少量的記錄,也需要對整個數(shù)據(jù)庫進行解密,對系統(tǒng)性能會產(chǎn)生極大的影響。
(二)表級
加密的對象是數(shù)據(jù)庫中的表。一般數(shù)據(jù)庫包含多個表,只需對其中一些包含敏感信息的表進行加密,以保護它們的安全性。與數(shù)據(jù)庫級加密比較,采用表級加密粒度,系統(tǒng)的查詢性能會有所改善。因為對于未加密表的查詢,與傳統(tǒng)查詢方法一樣,系統(tǒng)性能不會受到影響。對于加密表的查詢,只需要解密對應(yīng)的加密表,而不要解密整個數(shù)據(jù)庫。在實行表級加密時,可以采用對存儲數(shù)據(jù)的磁盤塊(頁面)進行加密。
(三)記錄級
加密的對象是數(shù)據(jù)表中的記錄,記錄中各字段值一起進行加密處理,加密后輸出一列字符串。在實現(xiàn)記錄級加密時,通過調(diào)用專門的加密函數(shù),對頁面中的記錄進行加密。與數(shù)據(jù)庫和表級加密相比,這種加密的粒度更細,可選擇的靈活性更好。
(四)引字段級
加密的對象是關(guān)系中的某個字段。字段級加密是一個很好的選擇,因為在實際生活中,一些重要和敏感的信息往往出現(xiàn)在關(guān)系中的某些列,如信用卡號、身份證號、銀行賬號等,只需要對這些重要數(shù)據(jù)進行加密保護,而沒有必要對普通數(shù)據(jù)也進行加密。
(五)數(shù)據(jù)項級
加密的對象是記錄中的某個字段值,它是數(shù)據(jù)庫加密的最小粒度。數(shù)據(jù)項級加密的方法更為靈活,它的實現(xiàn)方式與字段級加密相似,但其密鑰管理將會更加復雜。
五、加密算法
加密算法是數(shù)據(jù)加密的核心,加密算法本身的好壞直接影響數(shù)據(jù)庫加密的安全和性能。
在對數(shù)據(jù)庫存儲數(shù)據(jù)進行加密時,由于對稱加密算法速度快,對系統(tǒng)的性能影響較小,對稱加密算法使用最為廣泛。對稱算法又可分為兩類:序列密碼和分組密碼。分組密碼是在明文分組和密文分組上進行運算,分組長度通常為64位,但有時更長。根據(jù)分組的模式,分組密碼算法又可分成電子密碼本和密碼分組鏈接。電子密碼本模式把一個明文組加密成一個密文組,每個明文分組可被獨立地進行加密。如果一個數(shù)據(jù)庫用電子密碼本模式進行記錄級加密,那么任意一個記錄可以獨立于其他記錄被添加、刪除或者解密。密碼分組鏈接模式將一種反饋機制加進分組密碼中,即前一分組的加密結(jié)果被反饋到當前分組的加密中,這樣使得每個密文分組不僅依賴于產(chǎn)生它的明文分組,而且依賴于所有前面的明文分組。
序列密碼算法采用異或的運算方法,將明文逐位轉(zhuǎn)換為密文。序列密碼算法速度較快,但是,序列密碼算法中的密鑰序列不能重復。因為它的安全性依賴于簡單的異或運算,如果每次產(chǎn)生同樣
的密鑰序列,對攻擊者來說,破譯該算法就非常容易。所以在實際應(yīng)用中,數(shù)據(jù)庫中存儲數(shù)據(jù)的加密一般采用分組密碼算法。目前數(shù)據(jù)庫加密常用的算法有AES、DES、3DES、RC5。
(一)密鑰管理
密鑰管理是密文數(shù)據(jù)庫的重要組成部分。安全地管理密鑰,在數(shù)據(jù)解密時快速地獲得密鑰是十分必要的。在密文數(shù)據(jù)庫系統(tǒng)中,通常采用三級密鑰管理方案。用戶必須首先通過“用戶表”進行用戶身份的認證?!坝脩舯怼辈捎靡患壝荑€即主密鑰加密。通過身份認證后,用戶方可以訪問“數(shù)據(jù)表”。“數(shù)據(jù)表”經(jīng)三級密鑰即工作密鑰加密。在查詢中,通過三級密鑰解密返回給用戶。
在密鑰管理中,除了多級密鑰的方式,還應(yīng)注意密鑰管理過程中的幾個方面:密鑰的生成、使用、存儲、備份、恢復以及銷毀等。
(二)加密字典
支持數(shù)據(jù)字典功能的數(shù)據(jù)庫管理系統(tǒng)能夠自動建立和更新數(shù)據(jù)字典。加密字典用于保存和管理系統(tǒng)中的加密信息。其主要任務(wù)是描述(或定義)密文數(shù)據(jù)庫系統(tǒng)中各類對象所采用的加密算法、加密粒度等。一個密文數(shù)據(jù)庫系統(tǒng)所涉及的對象大致包括數(shù)據(jù)表、視圖、索引、密鑰;與完整、安全控制有關(guān)的對象,包括用戶、角色、用戶標識、訪問授權(quán)、密鑰及完整約束條件等。
(三)密文索引
密文索引是一種無序文件的索引,在形成數(shù)據(jù)文件時,其記錄并不一定按主關(guān)鍵字的順序排列。為加快查找速度,可以把它組織成索引文件。在構(gòu)建密文數(shù)據(jù)庫索引時,除了要保存數(shù)據(jù)記錄在數(shù)據(jù)庫中的相對位置信息外,還應(yīng)記錄數(shù)據(jù)庫中相應(yīng)字段的安全類別信息,以便查詢時確認用戶是否可以瀏覽記錄的密文內(nèi)容。在建立索引文件結(jié)構(gòu)和設(shè)計查詢算法時,總體上應(yīng)堅持下述原則:
(1)查詢算法的選擇。查詢時要盡量減少對密文數(shù)據(jù)解密的次數(shù),從而減少解密數(shù)據(jù)在查詢時占用的時間。這需要在實現(xiàn)算法時盡可能減少與密文的比較次數(shù)。
(2)建立索引的“分治原則”,即應(yīng)盡量減少集中建立密文索引文件所花費的時間。
(四)完整性約束
網(wǎng)絡(luò)密文數(shù)據(jù)庫在實現(xiàn)數(shù)據(jù)的密文存放時,破壞了原有數(shù)據(jù)庫系統(tǒng)的完整性約束,必須重新構(gòu)建完整性約束,保證數(shù)據(jù)一致完整地存放在數(shù)據(jù)庫中。重建的約束功能有加密字典保證。
(五)強制訪問控制
網(wǎng)絡(luò)密文數(shù)據(jù)庫系統(tǒng)中強制訪問控制依賴于系統(tǒng)的安全等級標志和主體的授權(quán)許可訪問級別來進行控制。這種強制訪問控制機制必須嚴格控制信息非授權(quán)地從高安全級流向低安全級,系統(tǒng)必須對數(shù)據(jù)的讀和寫進行嚴格的控制。
六、結(jié)語
數(shù)據(jù)庫加密系統(tǒng),其實現(xiàn)的主要功能是:對存儲在數(shù)據(jù)庫中的數(shù)據(jù)進行不同級的存儲加密。這樣就有效地保護了存儲在數(shù)據(jù)庫中的重要數(shù)據(jù),即使某一用戶非法入侵到系統(tǒng)中或盜得了數(shù)據(jù)庫文件,沒有解密密鑰,他也不能得到所需數(shù)據(jù)。所以,數(shù)據(jù)庫的加密處理對保護數(shù)據(jù)的安全性具有非常重要的意義。