任華新
摘要:隨著關系型數據庫在計算機應用領域越來越多的應用,數據的安全問題越來越受到重視。如果對數據庫中的數據進行加密處理,那么數據庫的安全性就能有所提高。所以,數據庫加密是解決數據庫安全問題最為有效的一種方法。關系型數據庫的加密技術有很多,關鍵是應該使用那種方法,所以關系型數據庫中加密技術的研究是非常必要的。
關鍵詞:關系型數據庫;加密;加密算法;粒度
中圖分類號:F062.5文獻標志碼:A文章編號:1673-291X(2009)32-0258-02
數據庫技術是信息系統的核心和基礎,它的出現極大地促進了計算機應用向各行各業的滲透。數據庫的建設規模、數據庫信息量的大小和使用頻度已逐漸成為衡量一個國家信息化程度的重要標志。在眾多數據庫模型中關系型數據庫是現今使用最廣泛、最容易理解和使用的數據庫模型。大多數的企業級系統數據庫都采用關系型數據庫。下面本文就將對關系型數據庫加密進行一些探討性的研究。
1關系型數據庫加密的必要性
關系型數據庫系統的安全不僅依賴自身內部的安全機制,還與外部網絡環境、應用環境、從業人員素質等因素息息相關。因此,從廣義上講,數據庫系統的安全框架可以劃分為三個層次,即網絡系統層次、宿主操作系統層次、數據庫管理系統層次。
這三個層次構筑成數據庫系統的安全體系,與數據安全的關系是逐步緊密的,防范的重要性也逐層加強,從外到內、由表及里保證數據的安全。但是,值得注意的是OS和DBMS對數據庫文件本身仍然缺乏有效的保護措施,無法阻擋對數據文件本身的攻擊。最簡單的,如有人偷走了存放數據文件的硬盤,則文件中的信息將被泄露。
據有關資料報道,80%的計算機犯罪來自系統內部。在傳統的關系型數據庫系統中,數據庫管理員的權力是至高無上,他既負責各項系統管理工作,又可以查詢數據庫中的一切信息。為此,不少系統以種種手段來削弱系統管理員的權力。實現關系型數據庫加密以后,各用戶(或用戶組)的數據由用戶用自己的密鑰加密,數據庫管理員獲得的信息無法進行正常解密,從而保證了用戶信息的安全。
2關系型數據庫加密的要求與限制
2.1關系型數據庫加密的要求
由于關系型數據庫本身的特點和實際應用需求,對關系型數據庫加密一般應實現以下功能:
(1)由于關系型數據庫數據信息的生命周期一般比較長,所以加強加密的力度,難以破譯;
(2)數據信息在加密后,不能明顯地擴大存儲空間;
(3)不能影響數據庫的使用速度,即加/解密速度都應足夠快;
(4)加密系統應同時提供一套安全的、靈活的密鑰管理機構,提供靈活的加密要求滿足;
(5)加密后的關系型數據庫仍能滿足用戶在不同類別程度上的訪問。
2.2關系型數據庫加密的限制
數據加密通過對明文進行復雜的加密操作,以達到無法發現明文和密文之間、密文和密鑰之間的內在關系,復雜性已經破譯的難度要求足夠高,也就是說經過加密的數據經得起來自DS和DBMS的攻擊。另一方面,DBMS要完成對數據庫文件的管理和使用,必須具有能夠識別部分數據的條件。因此,只能對數據庫中數據進行部分加密。以下幾點是我們在給關系型數據庫加密時應該注意的問題。
(1)索引字段不能加密
為了達到快速查詢的目的,關系型數據庫文件需要建立一些索引,它們的建立和應用必須是明文狀態,否則將失去索引的作用。
(2)關系運算的比較字段不能加密
DBMS要組織和完成關系運算,運算的數據一般都要經過條件篩選,這種“條件”選擇項必須是明文,否則DBMS將無法進行比較篩選。
(3)表間的連接碼字段不能加密
關系型數據庫中表之間存在著密切的聯系,這種相關性往往是“外部編碼”聯系的,這些編碼若加密就無法進行表與表之間的連接運算。
3關系型數據庫加密方式
關系型數據庫加密方式數據庫加密,主要分為兩種方式:DBMS外部加密和DBMS內部加密。
3.1 DBMS外部加密
DBMS外部加密的優點是,不需要修改DBMS,只需要在應用程序或者操作系統中增加相應的加/解密模塊即可。但是,這種方法也有一些缺點,首先它不能支持各種加密粒度。其次,它僅僅對用戶數據進行加密,而不能對元數據、索引數據、日志等進行加密。因此,安全性受到影響。再者,數據的完整性檢查需要應用程序來完成,不能盡量發揮DBMS的作用,因為數據加密后,沒有辦法在DBMS完整性檢查,而需要在應用程序中增加這項功能,實現起來非常麻煩。
3.2 DBMS內部加密
一般選擇在數據物理存取之前進行加/解密操作。這種方法的優點是,由于DBMS能夠區分各種粒度的數據,所以,可以支持各種粒度的加密,加密粒度可以靈活地選擇。另外,在DBMS內部實現加密,可以更有效地利用DBMS內部的訪問控制機制、授權機制等各種功能。更重要的是,關系型數據庫一個重要特點是被多個應用共享,這種方法的加解密都是在DBMS內部完成,對應用程序是透明的,不需要在多個應用中進行修改,使用起來比較方便,且容易保持數據的一致性,缺點是需要修改DBMS的內核。關系型數據庫的關鍵術語有:數據庫、表、字段、行和數據元素。基本上可以針對這幾方面形成一種加密的方法。
(1)數據庫級
加密的對象是整個數據庫,對數據庫中所有的對象進行加密處理。這種加密方法只需要對存儲在磁盤中的相應數據庫文件進行加密處理即可,密鑰的數量少,便于管理。但是,采用此加密粒度,對性能會帶來很大的影響。即使只需要查詢一條記錄,也需要對整個數據庫進行解密。這樣,訪問的速度不可避免的要降低。
(2)表級
加密的對象是數據庫中的基本元素表。關系型數據庫包含多個表,并不是所有的表都有很高的安全需要,因而只需要對其中一些包含敏感信息的表進行加密。與數據庫級加密相比,采用表級加密粒度,系統的查詢性能會有所改善,因為對于未加密表的查詢,系統性能不會受到影響,對于加密表的查詢,只需要解密對應的加密表,而不要解密整個數據庫。但是,這種方法與DBMS集成時,需要對DBMS內部一些核心模塊進行修改,這些工作是很困難完成的。
(3)記錄級
加密的對象是數據表中的記錄,即對整條記錄一起進行加密處理。在實現記錄級加密時,通過調用專門的加密函數,對記錄進行加密。與數據庫和表級加密相比,這種加密的粒度更細,可選擇的靈活性更好。但是,它和表級加密一樣,這種方法也需要對DBMS內核進行修改。
(4)字段級
加密的對象是關系中的某個字段,即表中的列。一張表包含多個字段,在某些時候,并不是所有的字段都需要加密。因為在實際生活中,一些重要和敏感的信息往往出現在關系中的某些列,只需要對這些重要數據進行加密保護,而不用對所有字段。在實現字段級加密時,可以采取多種方式,既可以在DBMS外部完成,也可以在DBMS內部完成。
(5)數據項級
加密的對象是記錄中的某個字段值,它是數據庫加密的最小粒度。數據項級加密的方法更為靈活,它的實現方式與字段級加密相似,但其密鑰管理將會更加復雜。
4加密算法比較
加密算法是一些公式和法則,它規定了明文和密文之間的變換方法。密鑰是控制加密算法和解密算法的關鍵信息,它的產生、傳輸、存儲等工作是十分重要的。
DES算法,DES(Data Encryption Standard)是把64位的明文輸入塊變為64位的密文輸出塊,它所使用的密鑰也是64位,但只用到其中56位。Des的密碼學缺點是密鑰長度相對比較短,因此,人們又想出了一個解決其長度的方法,即采用三重DES,三重DES是DES的一種變形。
RSA算法,它是第一個既能用于數據加密也能用于數字簽名的算法。RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學界多數人士傾向于因子分解不是NPC問題,RSA算法是第一個能同時用于加密和數字簽名的算法,也易于理解和操作。
AES算法,將在未來幾十年里代替DES在各個領域中得到廣泛應用,總體來說,AES作為新一代的數據加密標準匯聚了強安全性、高性能、高效率、易用和靈活等優點。AES設計有三個密鑰長度:128、192、256位,相對而言,AES的128密鑰比DES的56密鑰強1 021倍。AES算法主要包括三個方面:輪變化、圈數和密鑰擴展。
5結束語
上面介紹的只是關系型數據庫加密方法的一些探討性研究,這些論述還遠遠沒達到關系型數據庫安全需要,比如現在的關系型數據庫基本都給與網絡架構,網際的安全傳輸等,也是要重點考慮的方面,等等。一個好的安全系統必須綜合考慮如何運用這些技術,以保證數據的安全。
參考文獻:
[1]胡志奇.數據庫安全與加密技術研究[J].計算機與現代化,2003,(11):24-3.
[2]王曉峰,王尚平,秦波.數據庫加密方法研究[J].西安理工大學學報,2002,(6):68-73.
[3]陳衛.數據庫加密密鑰的分配與管理技術[J].清華大學學報,1994,(1):54,60.
[4]411N .G albreath.C ryptographyfo rIn tenretan dd atabasea ppilcaitons.W ileyP ublishing,In c,2002.
責任編輯 馮勝利