1. 前言
隨著計算機技術的飛速發展,數據庫的應用十分廣泛,深入到各個領域,但隨之而來產生了數據的安全問題。各種應用系統的數據庫中大量數據的安全問題、敏感數據的防竊取和防篡改問題,越來越引起人們的高度重視。數據庫系統作為信息的聚集體,是計算機信息系統的核心部件,其安全性至關重要,關系到企業興衰、國家安全。因此,如何有效地保證數據庫系統的安全,實現數據的保密性、完整性和有效性,已經成為業界人士探索研究的重要課題之一,本文就安全防入侵技術做簡要的討論。
數據庫系統的安全除依賴自身內部的安全機制外,還與外部網絡環境、應用環境、從業人員素質等因素息息相關,因此,從廣義上講,數據庫系統的安全框架可以劃分為三個層次:
⑴ 網絡系統層次;
⑵ 宿主操作系統層次;
⑶ 數據庫管理系統層次。
這三個層次構築成數據庫系統的安全體系,與數據安全的關系是逐步緊密的,防范的重要性也逐層加強,從外到內、由表及裡保證數據的安全。下面就安全框架的三個層次展開論述。
2. 網絡系統層次安全技術
從廣義上講,數據庫的安全首先倚賴於網絡系統。隨著Internet的發展普及,越來越多的公司將其核心業務向互聯網轉移,各種基於網絡的數據庫應用系統如雨後春筍般湧現出來,面向網絡用戶提供各種信息服務。可以說網絡系統是數據庫應用的外部環境和基礎,數據庫系統要發揮其強大作用離不開網絡系統的支持,數據庫系統的用戶(如異地用戶、分布式用戶)也要通過網絡才能訪問數據庫的數據。網絡系統的安全是數據庫安全的第一道屏障,外部入侵首先就是從入侵網絡系統開始的。網絡入侵試圖破壞信息系統的完整性、機密性或可信任的任何網絡活動的集合,具有以下特點[1]:
a)沒有地域和時間的限制,跨越國界的攻擊就如同在現場一樣方便;
b)通過網絡的攻擊往往混雜在大量正常的網絡活動之中,隱蔽性強;
c)入侵手段更加隱蔽和復雜。
計算機網絡系統開放式環境面臨的威脅主要有以下幾種類型[2]:a)欺騙(Masquerade);b)重發(Replay);c)報文修改(Modification of message);d)拒絕服務(Deny of service);e)陷阱門(Trapdoor);f)特洛伊木馬(Trojan horse);g)攻擊如透納攻擊(Tunneling Attack)、應用軟件攻擊等。這些安全威脅是無時、無處不在的,因此必須采取有效的措施來保障系統的安全。
從技術角度講,網絡系統層次的安全防范技術有很多種,大致可以分為防火牆、入侵檢測、協作式入侵檢測技術等。
⑴防火牆。防火牆是應用最廣的一種防范技術。作為系統的第一道防線,其主要作用是監控可信任網絡和不可信任網絡之間的訪問通道,可在內部與外部網絡之間形成一道防護屏障,攔截來自外部的非法訪問並阻止內部信息的外洩,但它無法阻攔來自網絡內部的非法操作。它根據事先設定的規則來確定是否攔截信息流的進出,但無法動態識別或自適應地調整規則,因而其智能化程度很有限。防火牆技術主要有三種:數據包過濾器(packet filter)、代理(proxy)和狀態分析(stateful inspection)。現代防火牆產品通常混合使用這幾種技術。
⑵入侵檢測。入侵檢測(IDS-- Instrusion Detection System)是近年來發展起來的一種防范技術,綜合采用了統計技術、規則方法、網絡通信技術、人工智能、密碼學、推理等技術和方法,其作用是監控網絡和計算機系統是否出現被入侵或濫用的征兆。1987年,Derothy Denning首次提出了一種檢測入侵的思想,經過不斷發展和完善,作為監控和識別攻擊的標准解決方案,IDS系統已經成為安全防御系統的重要組成部分。
入侵檢測采用的分析技術可分為三大類:簽名、統計和數據完整性分析法。
①簽名分析法。主要用來監測對系統的已知弱點進行攻擊的行為。人們從攻擊模式中歸納出它的簽名,編寫到IDS系統的代碼裡。簽名分析實際上是一種模板匹配操作。
②統計分析法。以統計學為理論基礎,以系統正常使用情況下觀察到的動作模式為依據來判別某個動作是否偏離了正常軌道。
③數據完整性分析法。以密碼學為理論基礎,可以查證文件或者對象是否被別人修改過。
IDS的種類包括基於網絡和基於主機的入侵監測系統、基於特征的和基於非正常的入侵監測系統、實時和非實時的入侵監測系統等[1]。
⑶協作式入侵監測技術
獨立的入侵監測系統不能夠對廣泛發生的各種入侵活動都做出有效的監測和反應,為了彌補獨立運作的不足,人們提出了協作式入侵監測系統的想法。在協作式入侵監測系統中,IDS基於一種統一的規范,入侵監測組件之間自動地交換信息,並且通過信息的交換得到了對入侵的有效監測,可以應用於不同的網絡環境[3]。
3. 宿主操作系統層次安全技術
操作系統是大型數據庫系統的運行平台,為數據庫系統提供一定程度的安全保護。目前操作系統平台大多數集中在Windows NT 和Unix,安全級別通常為C1、C2級。主要安全技術有操作系統安全策略、安全管理策略、數據安全等方面。
操作系統安全策略用於配置本地計算機的安全設置,包括密碼策略、賬戶鎖定策略、審核策略、IP安全策略、用戶權利指派、加密數據的恢復代理以及其它安全選項[7]。具體可以體現在用戶賬戶、口令、訪問權限、審計等方面。
用戶賬戶:用戶訪問系統的"身份證",只有合法用戶才有賬戶。
口令:用戶的口令為用戶訪問系統提供一道驗證。
訪問權限:規定用戶的權限。
審計:對用戶的行為進行跟蹤和記錄,便於系統管理員分析系統的訪問情況以及事後的追查使用。
安全管理策略是指網絡管理員對系統實施安全管理所采取的方法及策略。針對不同的操作系統、網絡環境需要采取的安全管理策略一般也不盡相同,其核心是保證服務器的安全和分配好各類用戶的權限。
數據安全主要體現在以下幾個方面:數據加密技術、數據備份、數據存儲的安全性、數據傳輸的安全性等。可以采用的技術很多,主要有Kerberos認證、IPSec、SSL、TLS、VPN(PPTP、L2TP)等技術。
4. 數據庫管理系統層次安全技術
數據庫系統的安全性很大程度上依賴於數據庫管理系統。如果數據庫管理系統安全機制非常強大,則數據庫系統的安全性能就較好。目前市場上流行的是關系式數據庫管理系統,其安全性功能很弱,這就導致數據庫系統的安全性存在一定的威脅。
由於數據庫系統在操作系統下都是以文件形式進行管理的,因此入侵者可以直接利用操作系統的漏洞竊取數據庫文件,或者直接利用OS工具來非法偽造、篡改數據庫文件內容。這種隱患一般數據庫用戶難以察覺,分析和堵塞這種漏洞被認為是B2級的安全技術措施[4]。
數據庫管理系統層次安全技術主要是用來解決這一問題,即當前面兩個層次已經被突破的情況下仍能保障數據庫數據的安全,這就要求數據庫管理系統必須有一套強有力的安全機制。解決這一問題的有效方法之一是數據庫管理系統對數據庫文件進行加密處理,使得即使數據不幸洩露或者丟失,也難以被人破譯和閱讀。
我們可以考慮在三個不同層次實現對數據庫數據的加密,這三個層次分別是OS層、DBMS內核層和DBMS外層。
⑴在OS層加密。在OS層無法辨認數據庫文件中的數據關系,從而無法產生合理的密鑰,對密鑰合理的管理和使用也很難。所以,對大型數據庫來說,在OS層對數據庫文件進行加密很難實現。
⑵在DBMS內核層實現加密。這種加密是指數據在物理存取之前完成加/脫密工作。這種加密方式的優點是加密功能強,並且加密功能幾乎不會影響DBMS的功能,可以實現加密功能與數據庫管理系統之間的無縫耦合。其缺點是加密運算在服務器端進行,加重了服務器的負載,而且DBMS和加密器之間的接口需要DBMS開發商的支持。
定義加密要求工具
DBMS
數據庫應用系統
加密器
(軟件或硬件)
⑶在DBMS外層實現加密。比較實際的做法是將數據庫加密系統做成DBMS的一個外層工具,根據加密要求自動完成對數據庫數據的加/脫密處理:
定義加密要求工具加密器
(軟件或硬件)
DBMS
數據庫應用系統
采用這種加密方式進行加密,加/脫密運算可在客戶端進行,它的優點是不會加重數據庫服務器的負載並且可以實現網上傳輸的加密,缺點是加密功能會受到一些限制,與數據庫管理系統之間的耦合性稍差。
下面我們進一步解釋在DBMS外層實現加密功能的原理:
數據庫加密系統分成兩個功能獨立的主要部件:一個是加密字典管理程序,另一個是數據庫加/脫密引擎。數據庫加密系統將用戶對數據庫信息具體的加密要求以及基礎信息保存在加密字典中,通過調用數據加/脫密引擎實現對數據庫表的加密、脫密及數據轉換等功能。數據庫信息的加/脫密處理是在後台完成的,對數據庫服務器是透明的。
加密字典管理程序
加密系統
應用程序
數據庫加脫密引擎
數據庫服務器
加密字典
用戶數據
按以上方式實現的數據庫加密系統具有很多優點:首先,系統對數據庫的最終用戶是完全透明的,管理員可以根據需要進行明文和密文的轉換工作;其次,加密系統完全獨立於數據庫應用系統,無須改動數據庫應用系統就能實現數據加密功能;第三,加解密處理在客戶端進行,不會影響數據庫服務器的效率。
數據庫加/脫密引擎是數據庫加密系統的核心部件,它位於應用程序與數據庫服務器之間,負責在後台完成數據庫信息的加/脫密處理,對應用開發人員和操作人員來說是透明的。數據加/脫密引擎沒有操作界面,在需要時由操作系統自動加載並駐留在內存中,通過內部接口與加密字典管理程序和用戶應用程序通訊。數據庫加/脫密引擎由三大模塊組成:加/脫密處理模塊、用戶接口模塊和數據庫接口模塊,如圖4所示。其中,"數據庫接口模塊"的主要工作是接受用戶的操作請求,並傳遞給"加/脫密處理模塊",此外還要代替"加/脫密處理模塊"去訪問數據庫服務器,並完成外部接口參數與加/脫密引擎內部數據結構之間的轉換。"加/脫密處理模塊"完成數據庫加/脫密引擎的初始化、內部專用命令的處理、加密字典信息的檢索、加密字典緩沖區的管理、SQL命令的加密變換、查詢結果的脫密處理以及加脫密算法實現等功能,另外還包括一些公用的輔助函數。
數據加/脫密處理的主要流程如下:
1) 對SQL命令進行語法分析,如果語法正確,轉下一步;如不正確,則轉6),直接將SQL命令交數據庫服務器處理。
2) 是否為數據庫加/脫密引擎的內部控制命令?如果是,則處理內部控制命令,然後轉7);如果不是則轉下一步。
3) 檢查數據庫加/脫密引擎是否處於關閉狀態或SQL命令是否只需要編譯?如果是則轉6),否則轉下一步。
4) 檢索加密字典,根據加密定義對SQL命令進行加脫密語義分析。
5) SQL命令是否需要加密處理?如果是,則將SQL命令進行加密變換,替換原SQL命令,然後轉下一步;否則直接轉下一步。
6) 將SQL命令轉送數據庫服務器處理。
7) SQL命令執行完畢,清除SQL命令緩沖區。
以上以一個例子說明了在DBMS外層實現加密功能的原理。
5. 結束語
本文對數據庫系統安全防入侵技術進行綜述,提出了數據庫系統的安全體系三個層次框架,並對三個層次的技術手段展開描述。文中還以在DBMS外層實現加密功能的原理為例,詳細說明了如何應用數據庫管理系統層次的安全技術。
數據庫系統安全框架的三個層次是相輔相承的,各層次的防范重點和所采取的技術手段也不盡相同,一個好的安全系統必須綜合考慮核運用這些技術,以保證數據的安全。