隨着計算機科學技術的發展與普及,
特別是計算機在國民經濟各重要部門的普遍應用
計算機安全已經是當前信息社會很是關注的突出問題
而數據庫系統
擔負着存儲和管理上述數據信息的任務。於是
如何保證和增強其安全性和保密性
已成爲目前迫切須要解決的熱門課題。
1、 數據庫安全與保密概述
數據庫系統
通常能夠理解成兩部分一部分是數據庫
按必定的方式存取數據另外一部分是數據庫管理系統(DBMS)
爲用戶及應用程序提供數據訪問
並具備對數據庫進行管理、維護等多種功能。
數據庫系統安全
包含兩層含義
第一層是指系統運行安全
它包括
法律、政策的保護
如用戶是否有合法權利
政策是否容許等
物理控制安全
如機房加鎖等
硬件運行安全
操做系統安全
如數據文件是否保護等
災害、故障恢復
死鎖的避免和解除
電磁信息泄漏防止。html
第二層是指系統信息安全
它包括
用戶口令字鑑別
用戶存取權限控制
數據存取權限、方式控制
審計跟蹤
數據加密。算法
2、 數據庫基本安全架構
數據庫系統信息安全性依賴於兩個層次一層是數據庫管理系統自己提供的用戶名/口令字識別、視圖、使用權限控制、審計等管理措施
大型數據庫管理系統Oracle、Sybase、Ingress等均有此功能另外一層就是靠應用程序設置的控制管理
如使用較廣泛的Foxbase、Forpro等。做爲數據庫用戶
最關心自身數據資料的安全
特別是用戶的查詢權限問題。對此
目前一些大型數據庫管理系統(如Oracle、Sybase等產品)提供瞭如下幾種主要手段。
⒈ 用戶分類
不一樣類型的用戶授予不一樣的數據管理權限。通常將權限分爲三類數據庫登陸權限類、資源管理權限類和數據庫管理員權限類。
有了數據庫登陸權限的用戶才能進入數據庫管理系統
才能使用數據庫管理系統所提供的各種工具和實用程序。同時
數據庫客體的主人能夠授予這類用戶以數據查詢、創建視圖等權限。這類用戶只能查閱部分數據庫信息
不能改動數據庫中的任何數據。
具備資源管理權限的用戶
除了擁有上一類的用戶權限外
還有建立數據庫表、索引等數據庫客體的權限
能夠在權限容許的範圍內修改、查詢數據庫
還能將本身擁有的權限授予其餘用戶
能夠申請審計。
具備數據庫管理員權限的用戶將具備數據庫管理的一切權限
包括訪問任何用戶的任何數據
授予(或回收)用戶的各類權限
建立各類數據庫客體
完成數據庫的整庫備份、裝入重組以及進行全系統的審計等工做。這類用戶的工做是謹慎而帶全局性的工做
只有極少數用戶屬於這種類型。
⒉ 數據分類
同一類權限的用戶
對數據庫中數據管理和使用的範圍又多是不一樣的。爲此
DBMS提供了將數據分類的功能
即創建視圖。管理員把某用戶可查詢的數據邏輯上歸併起來
簡稱一個或多個視圖
並賦予名稱
在把該視圖的查詢權限授予該用戶(也能夠授予多個用戶)。這種數據分類能夠進行得很細
其最小粒度是數據庫二維表中一個交叉的元素。
⒊ 審計功能
大型DBMS提供的審計功能是一個十分重要的安全措施
它用來監視各用戶對數據庫施加的動做。有兩種方式的審計
即用戶審計和系統審計。用戶審計時
DBMS的審計系統記下全部對本身表或視圖進行訪問的企圖(包括成功的和不成功的)及每次操做的用戶名、時間、操做代碼等信息。這些信息通常都被記錄在數據字典(系統表)之中
利用這些信息用戶能夠進行審計分析。系統審計由系統管理員進行
其審計內容主要是系統一級命令以及數據庫客體的使用狀況。
3、 數據庫加密
通常而言
數據庫系統提供的上述基本安全技術可以知足通常的數據庫應用
但對於一些重要部門或敏感領域的應用
僅靠上述這些措施是難以徹底保證數據的安全性
某些用戶尤爲是一些內部用戶仍可能非法獲取用戶名、口令字
或利用其餘方法越權使用數據庫
甚至能夠直接打開數據庫文件來竊取或篡改信息。所以
有必要對數據庫中存儲的重要數據進行加密處理
以實現數據存儲的安全保護。
⒈ 數據庫密碼系統的基本流程
數據加密
就是將明文數據通過必定的交換(通常爲變序和代昀)變成密文數據。
數據脫密是加密的逆過程
即將密文數據轉變成可見的明文數據。
一個密碼系統包含明文集合、密文集合、密鑰集合和算法
其中密鑰和算法構成了密碼系統的基本單元。算法是一些公式、法則或程序
規定明文與密文之間的變換方法
密鑰能夠看做算法中的參數。
數據庫密碼系統要求將明文數據加密成密文數據
數據庫中存儲密文數據
查詢時將密文數據取出脫密獲得明文信息。
⒉ 數據庫加密的特色
較之傳統的數據加密技術
數據庫密碼系統有其自身的要求和特色。傳統的加密以報文爲單位
加脫密都是從頭到尾順序進行。數據庫數據的使用方法決定了它不可能以整個數據庫文件爲單位進行加密。當符合檢索條件的記錄被檢索出來後
就必須對該記錄迅速脫密。然而該記錄是數據庫文件中隨機的一段
沒法從中間開始脫密
除非從頭至尾進行一次脫密
而後再去查找相應的這個記錄
顯然這是不合適的。必須解決隨機地從數據庫文件中某一段數據開始脫密的問題。
⑴ 數據庫密碼系統應採用公開密鑰
傳統的密碼系統中
密鑰是祕密的
知道的人越少越好。一旦獲取了密鑰和密碼體制就能攻破密碼
解開密文。而數據庫數據是共享的
有權限的用戶隨時須要知道密鑰來查詢數據。所以
數據庫密碼系統宜採用公開密鑰的加密方法。設想數據庫密碼系統的加密算法是保密的
並且具備至關的強度
那麼利用密鑰
採用OS和DBMS層的工具
也沒法獲得數據明文。
⑵ 多級密鑰結構
數據庫關係運算中參與運算的最小單位是字段
查詢路徑依次是庫名、表名、記錄名和字段名。所以
字段是最小的加密單位。也就是說當查得一個數據後
該數據所在的庫名、表名、記錄名、字段名都應是知道的。對應的庫名、表名、記錄名、字段名都應該具備本身的子密鑰
這些子密鑰組成了一個可以隨時加/脫密的公開密鑰。
能夠設計一個數據庫
其中存放有關數據庫名、表名、字段名的子密鑰
系統啓動後將這些子密鑰讀入內存供數據庫用戶使用。與記錄相對應的子密鑰
通常的方法應是在該記錄中增長一條子密鑰數據字段。
⑶ 加密機制
有些公開密鑰體制的密碼
如RSA密碼
其加密密鑰是公開的
算法也是公開的
可是其算法是我的一套
而做爲數據庫密碼的加密算法不可能因人而異
由於尋找這種算法有其自身的困難和侷限性
機器中也不可能存放不少種算法
所以這類典型的公開密鑰的加密體制也不適合於數據庫加密。數據庫加/脫密密鑰應該是相同、公開的
而加密算法應該是絕對保密的。
數據庫公開密鑰加密機制應是一個二元函數
密文=F(密鑰
明文)
當加密算法F肯定以後
只要給出密鑰和待加密的明文
便可獲得相應的密文。脫密過程便是加密過程的逆過程
明文=F-1(密鑰
密文)
由此可知
數據庫密碼的加密機制應是既可加密又可脫密的可逆過程。
⑷ 加密算法
加密算法是數據加密的核心
一個好的加密算法產生的密文應該頻率平衡
隨機無重碼規律
週期很長而又不可能產生重複現象。竊密者很難經過對密文頻率、重碼等特徵的分析得到成功。同時
算法必須適應數據庫系統的特性
加/脫密響應迅速。
著名的MH揹包算法就是一種適合數據庫加密的算法。它的基本思想是有一個函數F
使X=F(K,Y)
在這裏X至關於公開密鑰向量
Y至關於明文。在算法F不公開的狀況下
若已知K和X
要還原出Y來
窮盡次數爲2n次。若是向量的份量n較大時
用窮盡的方法來還原將是十分困難的。
⒊ 數據庫加密的範圍
數據加密經過對明文進行復雜的加密操做
以達到沒法發現明文和密文之間、密文和密鑰之間的內在關係
也就是說通過加密的數據經得起來自OS和DBMS的攻擊。另外一方面
DBMS要完成對數據庫文件的管理和使用
必須具備可以識別部分數據的條件。據此
只能對數據庫中數據進行部分加密。
⑴ 索引字段不能加密
爲了達到迅速查詢的目的
數據庫文件須要創建一些索引。不管是字典式的單詞索引、B樹索引或HASH函數索引等
它們的創建和應用必須是明文狀態
不然將失去索引的做用。有的DBMS中能夠創建簌聚索引
這類索引也須要在明文狀態下創建和維護使用。
⑵ 關係運算的比較字段不能加密
DBMS要組織和完成關係運算
參加並、差、積、商、投影、選擇和鏈接等操做的數據通常都要通過條件篩選
這種"條件"選擇項必須是明文
不然DBMS將沒法進行比較篩選。例如
要求檢索工資在1000元以上的職工人員名單
"工資"字段中的數據若加密
SQL語句就沒法辨認比較。
⑶ 表間的鏈接碼字段不能加密
數據模型規範化之後
數據庫表之間存在着密切的聯繫
這種相關性每每是經過"外部編碼"聯繫的
這些編碼若加密就沒法進行表與表之間的鏈接運算。
⒋ 數據庫加密對數據庫管理系統原有功能的影響
目前DBMS的功能比較完備
特別象Oracle、Sybase這些採用Client/Server結構的數據庫管理系統
具備數據庫管理和應用開發等工具。然而
數據庫數據加密之後
DBMS的一些功能將沒法使用。
⑴ 沒法實現對數據制約因素的定義
Sybase數據庫系統的規則定義了數據之間的制約因素。數據一旦加密
DBMS將沒法實現這一功能
並且
值域的定義也沒法進行。
值得注意的是
數據庫中的每一個字段的類型、長度都有具體的限定。數據加密時
數值類型的數據只能在數值範圍內加密
日期和字符類型的數據也都只能在各自的類型範圍內加密
密文長度也不能超過字段限定的長度
不然DBMS將沒法接受這些加密過的數據。
⑵ 密文數據的排序、分組和分類
Select語句中的Group by、Order by、Having子句分別完成分組、排序、分類等操做。這些子句的操做對象若是是加密數據
那麼脫密後的明文數據將失去原語句的分組、排序、分類做用
顯然這不是用戶所須要的。
⑶ SQL語言中的內部函數將對加密數據失去做用
DBMS對各類類型數據均提供了一些內部函數
這些函數不能直接做用於加密數據。
⑷ DBMS的一些應用開發工具的使用受到限制
DBMS的一些應用開發工具不能直接對加密數據進行操做
於是它們的使用會受到限制。
在數據庫安全和加密技術的研究方面
咱們只是做了一些嘗試性的工做
許多細節有待於進一步深刻。經過研究
咱們認識到數據庫安全與保密這一領域研究的重要性和迫切性。目前的DBMS對數據庫的加密問題基本都沒有通過仔細考慮
若是在DBMS層考慮這一問題
那麼數據庫加密將會出現新的格局。數據庫