據有關資料報導,80%的計算機犯罪來自系統內部。在傳統的資料庫系統中,資料庫管理員的權力至高無上,他既負責各項系統管理工作,例如資源分配、用戶授權、系統審計等,又可以查詢資料庫中的一切信息。為此,不少系統以種種手段來削弱系統管理員的權力。實現資料庫加密以後,各用戶(或用戶組)的數據由用戶用自己的密鑰加密,資料庫管理員獲得的信息無法進行正常脫密,從而保證了用戶信息的安全。另外,通過加密,資料庫的備份內容成為密文,從而能減少因備份介質失竊或丟失而造成的損失。由此可見,資料庫加密對於企業內部安全管理,也是不可或缺的。
也許有人認為,對資料庫加密以後會嚴重影響資料庫系統的效率,使系統不堪重負。事實並非如此。如果在資料庫客戶端進行數據加/脫密運算,對資料庫伺服器的負載及系統運行幾乎沒有影響。在普通PC機上,用純軟體實現DES加密算法的速度超過200kByte/s,如果對一篇一萬漢字的文章進行加密,其加/脫密時間僅需0.1s,這種時間延遲用戶幾乎無感覺。目前,加密卡的加/脫密速度一般為1Mbit/s,對中小型資料庫系統來說,這個速度即使在伺服器端進行數據的加/脫密運算也是可行的,因為一般的關係數據項都不會太長(多媒體數據另當別論)。例如,在同一時間裡有10個用戶並發查詢,每個用戶平均查找1000個漢字的數據,最先得到結果的用戶延遲時間小於0.02s,最後得到結果的用戶也僅需等待約0.16s。
大型資料庫管理系統的運行平台一般是Windows NT和 Unix,這些作業系統的安全級別通常為C1、C2級。它們具有用戶註冊、識別用戶、任意存取控制(DAC)、審計等安全功能。雖然DBMS在OS的基礎上增加了不少安全措施,例如基於許可權的訪問控制等,但OS和DBMS對資料庫檔案本身仍然缺乏有效的保護措施,有經驗的網上黑客會“繞道而行”,直接利用OS工具竊取或篡改資料庫檔案內容。這種隱患被稱為通向DBMS的“隱秘通道”,它所帶來的危害一般資料庫用戶難以覺察。分析和堵塞“隱秘通道”被認為是B2級的安全技術措施。對資料庫中的敏感數據進行加密處理,是堵塞這一“隱秘通道”的有效手段。
一個良好的資料庫加密系統應該滿足以下基本要求:
(1)欄位加密
在目前條件下,加/脫密的粒度是每個記錄的欄位數據。如果以檔案或列為單位進行加密,必然會形成密鑰的反覆使用,從而降低加密系統的可靠性或者因加脫密時間過長而無法使用。只有以記錄的欄位數據為單位進行加/脫密,才能適應資料庫操作,同時進行有效的密鑰管理並完成“一次一密”的密碼操作。
(2)密鑰動態管理
資料庫客體之間隱含著複雜的邏輯關係,一個邏輯結構可能對應著多個資料庫物理客體,所以資料庫加密不僅密鑰量大,而且組織和存儲工作比較複雜,需要對密鑰實現動態管理。
(3)合理處理數據
這包括幾方面的內容。首先要恰當地處理數據類型,否則 DBMS將會因加密後的數據不符合定義的數據類型而拒絕載入;其次,需要處理數據的存儲問題,實現資料庫加密後,應基本上不增加空間開銷。在目前條件下,資料庫關係運算中的匹配欄位,如表間連線碼、索引欄位等數據不宜加密。文獻欄位雖然是檢索欄位,但也應該允許加密,因為文獻欄位的檢索處理採用了有別於關係資料庫索引的正文索引技術。
(4)不影響合法用戶的操作
加密系統影響數據操作回響時間應儘量短,在現階段,平均延遲時間不應超過0.1s。此外,對資料庫的合法用戶來說,數據的錄入、修改和檢索操作應該是透明的,不需要考慮數據的加/脫密問題。
可以考慮在三個不同層次實現對資料庫數據的加密,這三個層次分別是OS、DBMS核心層和DBMS外層。
在OS層,無法辨認資料庫檔案中的數據關係,從而無法產生合理的密鑰,也無法進行合理的密鑰管理和使用。所以,在OS層對資料庫檔案進行加密,對於大型資料庫來說,目前還難以實現。
在DBMS核心層實現加密,是指數據在物理存取之前完成加/脫密工作。這種方式勢必造成DBMS和加密器(硬體或軟體)之間的接口需要DBMS 開發商的支持。這種加密方式的優點是加密功能強,並且加密功能幾乎不會影響DBMS 的功能。其缺點是在伺服器端進行加/脫密運算,加重了資料庫伺服器的負載。這種加密方式如圖所示。
比較實際的做法是將資料庫加密系統做成DBMS的一個外層工具,如圖所示。採用這種加密方式時,加/脫密運算可以放在客戶端進行,其優點是不會加重資料庫伺服器的負載並可實現網上傳輸加密,缺點是加密功能會受一些限制。圖中,“加密定義工具”模組的主要功能是定義如何對每個資料庫表數據進行加密。在創建了一個資料庫表後,通過這一工具對該表進行定義;“資料庫套用系統”的功能是完成資料庫定義和操作。資料庫加密系統將根據加密要求自動完成對資料庫數據的加/脫密。
資料庫加密系統首先要解決系統本身的安全性和可靠性問題,在這方面,可以採用以下幾項安全措施:
(1)在用戶進入系統時進行兩級安全控制
這種控制可以採用多種方式,包括設定資料庫用戶名和口令,或者利用IC卡讀寫器/指紋識別器進行用戶身份認證。
(2)防止非法拷貝
對於純軟體系統,可以採用軟指紋技術防止非法拷貝,當然,如果每台客戶機上都安裝加密卡等硬體,安全性會更好。此外,還應該保留資料庫原有的安全措施,如許可權控制、備份/恢復和審計控制等。
(3)安全的數據抽取方式
提供兩種卸出和裝入資料庫中加密數據的方式:其一是密文方式卸出,這種卸出方式不脫密,卸出的數據還是密文,在這種模式下,可直接使用 DBMS提供的卸出/裝入工具;其二是明文方式卸出,這種卸出方式需要脫密,卸出的數據是明文,在這種模式下,可利用系統專用工具先進行數據轉換,再使用DBMS提供的卸出/裝入工具完成。
資料庫加密系統主要分成兩個功能獨立的部件:一個是加密字典管理程式,另一個是資料庫加/脫密引擎,體系結構如圖所示。
資料庫加密系統體系結構
資料庫加密系統將用戶對資料庫信息具體的加密要求記載在加密字典中,加密字典是資料庫加密系統的基礎信息。
加密字典管理程式是管理加密字典的實用程式,是資料庫管理員變更加密要求的工具。
加密字典管理程式通過資料庫加/脫密引擎實現對資料庫表的加密、脫密及數據轉換等功能,此時,它作為一個特殊客戶來使用資料庫加/脫密引擎。
資料庫加/脫密引擎是資料庫加密系統的核心部件,負責在後台完成資料庫信息的加/脫密處理,對套用開發人員和操作人員是透明的。
按以上方式實現的資料庫加密系統具有很多優點。首先,系統對資料庫的最終用戶完全透明,數據管理員可以指定需要加密的數據並根據需要進行明文/密文的轉換工作;其次,系統完全獨立於資料庫套用系統,不需要改動資料庫套用系統就能實現加密功能,同時系統採用了分組加密法和二級密鑰管理,實現了“一次一密”;其三,系統在客戶端進行數據加/脫密運算,不會影響資料庫伺服器的系統效率,數據加/脫密運算基本無延遲感覺。
資料庫加密系統能夠有效地保證數據的安全,即使黑客竊取了關鍵數據,也仍然難以得到所需的信息,因為所有的數據都經過了加密。另外,資料庫加密以後,可以設定不需要了解數據內容的系統管理員不能見到明文,大大提高了關鍵數據的安全性。
從本質上講,無線連線的網路遠沒有固定網路安全,這是由於無論從何地都可以輕而易舉地偵聽和發射無線電波,且很難發覺。因此,數據的無線傳輸比固定線路傳輸更易受到盜用或欺騙,所帶來的問題是:一台計算機容易冒充另一台計算機的身份,怎樣才能防止這種非法數據訪問?其次,移動計算機攜帶方便,但也容易失竊,如何避免在移動計算機失竊後對接收或傳送數據的盜用?還有,移動計算環境使用戶可以連入任意網路,如何防止這些移動用戶的泛濫可能對被訪問網路環境造成的偶然甚至惡意的破壞?這些都是移動資料庫的安全技術要解決的問題。目前,安全技術的主要措施是:第一,對移動客戶機進行認證,防止非註冊移動客戶機的欺騙性接入;第二,對無線路徑加密,以防止第三方盜用;第三,對移動用戶提供身份保護,防止用戶位置泄密或被跟蹤。