資料庫安全與保密

資料庫安全專家發表於2019-04-03

隨著電腦科學技術的發展與普及,
特別是計算機在國民經濟各重要部門的廣泛應用
電腦保安已是當前資訊社會非常關注的突出問題
而資料庫系統
擔負著儲存和管理上述資料資訊的任務。因而
如何保證和加強其安全性和保密性
已成為目前迫切需要解決的熱門課題。

一、 資料庫安全與保密概述
資料庫系統
一般可以理解成兩部分一部分是資料庫
按一定的方式存取資料另一部分是資料庫管理系統(DBMS)
為使用者及應用程式提供資料訪問
並具有對資料庫進行管理、維護等多種功能。
資料庫系統安全
包含兩層含義

第一層是指系統執行安全
它包括
法律、政策的保護
如使用者是否有合法權利
政策是否允許等 
物理控制安全
如機房加鎖等 
硬體執行安全 
作業系統安全
如資料檔案是否保護等 
災害、故障恢復 
死鎖的避免和解除 
電磁資訊洩漏防止。

   
第二層是指系統資訊保安
它包括
使用者口令字鑑別 
使用者存取許可權控制 
資料存取許可權、方式控制 
審計跟蹤 
資料加密。

  
二、 資料庫基本安全架構
資料庫系統資訊保安性依賴於兩個層次一層是資料庫管理系統本身提供的使用者名稱/口令字識別、檢視、使用許可權控制、審計等管理措施
大型資料庫管理系統Oracle、Sybase、Ingress等均有此功能另一層就是靠應用程式設定的控制管理
如使用較普遍的Foxbase、Forpro等。作為資料庫使用者
最關心自身資料資料的安全
特別是使用者的查詢許可權問題。對此
目前一些大型資料庫管理系統(如Oracle、Sybase等產品)提供了以下幾種主要手段。
⒈ 使用者分類
不同型別的使用者授予不同的資料管理許可權。一般將許可權分為三類資料庫登入許可權類、資源管理許可權類和資料庫管理員許可權類。
有了資料庫登入許可權的使用者才能進入資料庫管理系統
才能使用資料庫管理系統所提供的各類工具和實用程式。同時
資料庫客體的主人可以授予這類使用者以資料查詢、建立檢視等許可權。這類使用者只能查閱部分資料庫資訊
不能改動資料庫中的任何資料。
具有資源管理許可權的使用者
除了擁有上一類的使用者許可權外
還有建立資料庫表、索引等資料庫客體的許可權
可以在許可權允許的範圍內修改、查詢資料庫
還能將自己擁有的許可權授予其他使用者
可以申請審計。
具有資料庫管理員許可權的使用者將具有資料庫管理的一切許可權
包括訪問任何使用者的任何資料
授予(或回收)使用者的各種許可權
建立各種資料庫客體
完成資料庫的整庫備份、裝入重組以及進行全系統的審計等工作。這類使用者的工作是謹慎而帶全域性性的工作
只有極少數使用者屬於這種型別。
⒉ 資料分類
同一類許可權的使用者
對資料庫中資料管理和使用的範圍又可能是不同的。為此
DBMS提供了將資料分類的功能
即建立檢視。管理員把某使用者可查詢的資料邏輯上歸併起來
簡稱一個或多個檢視
並賦予名稱
在把該檢視的查詢許可權授予該使用者(也可以授予多個使用者)。這種資料分類可以進行得很細
其最小粒度是資料庫二維表中一個交叉的元素。

⒊ 審計功能
大型DBMS提供的審計功能是一個十分重要的安全措施
它用來監視各使用者對資料庫施加的動作。有兩種方式的審計
即使用者審計和系統審計。使用者審計時
DBMS的審計系統記下所有對自己表或檢視進行訪問的企圖(包括成功的和不成功的)及每次操作的使用者名稱、時間、操作程式碼等資訊。這些資訊一般都被記錄在資料字典(系統表)之中
利用這些資訊使用者可以進行審計分析。系統審計由系統管理員進行
其審計內容主要是系統一級命令以及資料庫客體的使用情況。

三、 資料庫加密
一般而言
資料庫系統提供的上述基本安全技術能夠滿足一般的資料庫應用
但對於一些重要部門或敏感領域的應用
僅靠上述這些措施是難以完全保證資料的安全性
某些使用者尤其是一些內部使用者仍可能非法獲取使用者名稱、口令字
或利用其他方法越權使用資料庫
甚至可以直接開啟資料庫檔案來竊取或篡改資訊。因此
有必要對資料庫中儲存的重要資料進行加密處理
以實現資料儲存的安全保護。
⒈ 資料庫密碼系統的基本流程
資料加密
就是將明文資料經過一定的交換(一般為變序和代昀)變成密文資料。
資料脫密是加密的逆過程
即將密文資料轉變成可見的明文資料。
一個密碼系統包含明文集合、密文集合、金鑰集合和演算法
其中金鑰和演算法構成了密碼系統的基本單元。演算法是一些公式、法則或程式
規定明文與密文之間的變換方法
金鑰可以看作演算法中的引數。
資料庫密碼系統要求將明文資料加密成密文資料
資料庫中儲存密文資料
查詢時將密文資料取出脫密得到明文資訊。
⒉ 資料庫加密的特點
較之傳統的資料加密技術
資料庫密碼系統有其自身的要求和特點。傳統的加密以報文為單位
加脫密都是從頭至尾順序進行。資料庫資料的使用方法決定了它不可能以整個資料庫檔案為單位進行加密。當符合檢索條件的記錄被檢索出來後
就必須對該記錄迅速脫密。然而該記錄是資料庫檔案中隨機的一段
無法從中間開始脫密
除非從頭到尾進行一次脫密
然後再去查詢相應的這個記錄
顯然這是不合適的。必須解決隨機地從資料庫檔案中某一段資料開始脫密的問題。
⑴ 資料庫密碼系統應採用公開金鑰
傳統的密碼系統中
金鑰是秘密的
知道的人越少越好。一旦獲取了金鑰和密碼體制就能攻破密碼
解開密文。而資料庫資料是共享的
有許可權的使用者隨時需要知道金鑰來查詢資料。因此
資料庫密碼系統宜採用公開金鑰的加密方法。設想資料庫密碼系統的加密演算法是保密的
而且具有相當的強度
那麼利用金鑰
採用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層考慮這一問題
那麼資料庫加密將會出現新的格局。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69914889/viewspace-2640279/,如需轉載,請註明出處,否則將追究法律責任。

相關文章