解析數(shù)據(jù)庫加密技術(shù)的主要方法
數(shù)據(jù)庫加密的主要方法:
1、秘密同態(tài)技術(shù)
尋找一種既保證數(shù)據(jù)庫安全性,又保證使用(如:查詢,插入,刪除) 的方便性的加密方法一直是數(shù)據(jù)庫加密的主要研究方向。為了提高密文數(shù)據(jù)庫的查詢效率,Rivest 等人提出秘密同態(tài)的概念。
定義1 (秘密同態(tài)) 假設(shè)Ek1 和Dk2 分別代表加密、解密函數(shù), 明文數(shù)據(jù)空間中的元素是有限集合{ M1 , ?, Mn} ,α 和β 代表運算, 若α( Ek1 ( M1), ?,Ek1 ( Mn) ) = Ek1 (β( M1 , ?, Mn) ) 成立, 則稱函數(shù)族( Ek1 ,Dk2 ,α,β) 為一個秘密同態(tài)。
秘密同態(tài)技術(shù)能夠?qū)?shù)據(jù)直接在密文的狀況下進行操作,從而有效提高對密文數(shù)據(jù)庫的查詢速度。但是該方法對已知明文攻擊存在一定安全隱患,所以Domingo 等人對其進行了改進。此后國內(nèi)外也有很多基于秘密同態(tài)技術(shù)的研究。秘密同態(tài)技術(shù)能夠?qū)ξ唇?jīng)解密的密文數(shù)據(jù)進行查詢,大大提高了密文數(shù)據(jù)庫的查詢效率。但是,因為該方法對加密算法提出了一定的約束條件,使得滿足密文同態(tài)的加密算法的應(yīng)用不具有普遍性。
2、密文索引技術(shù)
提高密文數(shù)據(jù)庫查詢效率的另一種主要方法是密文索引技術(shù)。假設(shè)屬性A 是用戶的查詢屬性,為A 建立索引A’,A 是對用戶保密的,用戶只能看到其索引A’,這樣既保證了用戶查詢的方便性又保證了敏感數(shù)據(jù)的安全性。對于加密粒度為字段級和記錄級的加密方法比較適合于建立索引,而對于加密粒度為屬性列的加密算法,因為算法是以屬性列為最小加密單元的,即使為屬性列建立索引在檢索時也需要對整個屬性列進行解密,所以并不適合于建立密文索引機制。
目前有許多關(guān)于密文索引的方法。
一種基于哈希算法的分散密文索引技術(shù),假設(shè)敵手只擁有密文數(shù)據(jù)及其對應(yīng)的索引,由于索引中的數(shù)據(jù)地址是以密文形式存放的,找不出密文與索引的對應(yīng)關(guān)系,該方法能對抗敵手的靜態(tài)分析,但是對于動態(tài)跟蹤技術(shù)存在一定的安全隱患。
一種可以防范內(nèi)部攻擊的基于元組的索引方法,但是對每一個索引的查詢都會返回所有相匹配的元組,降低了查詢效率。另外還有順序索引技術(shù)、數(shù)組索引技術(shù)和矩陣索引技術(shù)等也都針對不同問題被先后提出。對于大型數(shù)據(jù)庫建立索引,由于數(shù)據(jù)量較大,建立的索引不能完全存放于主存之中,目前大多采用B + 樹的方法將索引存于外存之中,當應(yīng)用時再將部分索引調(diào)入主存。采用B + 樹存儲存在一定缺陷,因為數(shù)據(jù)庫需要進行大量的存儲和刪除操作,隨著節(jié)點的增刪,勢必會引起B(yǎng) + 樹的不平衡,從而影響查詢效率。所以,對于小型數(shù)據(jù)庫有研究提出以矩陣的形式存放索引表,并將索引表一次性存入主存之中,以提高查詢效率。
目前,大多數(shù)的密文索引技術(shù)都是針對于外部攻擊的,雖然也有一些針對于內(nèi)部攻擊的密文索引技術(shù),但是在安全性和易用性上還存在一定問題。
3、子密鑰加密方法
傳統(tǒng)的基于記錄的數(shù)據(jù)庫加密的方法存在一個問題,因為數(shù)據(jù)是以記錄為單位進行加密的,所以在查詢時需要對整個字段進行解密(或?qū)π璨樵兊拿魑倪M行加密) 以后再進行查詢,這就必然增加了查詢開銷。為了解決基于記錄的數(shù)據(jù)庫加密技術(shù)存在的問題, G. I.David 等人提出了子密鑰數(shù)據(jù)庫加密技術(shù)。
Hwang M - S 等人提出采用多級子密鑰的安全模型以提高子密鑰系統(tǒng)的靈活性和安全性。子密鑰加密算法的核心思想是根據(jù)數(shù)據(jù)(特別是關(guān)系型數(shù)據(jù)庫) 中數(shù)據(jù)組織的特點,在加密時以記錄為單位進行加密操作。而在解密時以字段為單位進行解密操作,系統(tǒng)中存在兩種密鑰,一 種是對記錄加密的加密密鑰,另一種是對字段進行解密的解密密鑰。子密鑰加密方法,從一定程度上解決了針對記錄加密方法的缺陷。但是,因為系統(tǒng)要保存兩種密鑰,這就增加了密鑰管理的復(fù)雜性。這一點也是子密鑰加密所急需解決的問題。

一個好的數(shù)據(jù)庫加密系統(tǒng)應(yīng)該在保護數(shù)據(jù)安全的基礎(chǔ)上,盡可能提高工作效率,在工作效率和安全性之間取得一個平衡??傮w來說應(yīng)該滿足以下要求:
1. 加解密速度要求足夠快,這樣減少影響數(shù)據(jù)操作響應(yīng)時間。
2. 加密強度足夠大,保證大部分數(shù)據(jù)長時間不被破譯。但是在實際應(yīng)用中加密算法不一定在理論上無法破解,但在實際應(yīng)用中應(yīng)能保證破解密文的代價大于獲得其中數(shù)據(jù)的意義。
3. 對數(shù)據(jù)庫的合法用戶來說加解密操作是透明的,它不會影響用戶的合理操作。換句話說,若某用戶在明文數(shù)據(jù)庫系統(tǒng)中能夠進行更新、增加、刪除數(shù)據(jù)、那么在密文數(shù)據(jù)庫中也可以用相同的方法增加、更新和刪除數(shù)據(jù),用戶不用關(guān)心數(shù)據(jù)如何完成加解密。
4. 加密后的數(shù)據(jù)庫,存儲量不能有較大程度增加。
5. 密鑰管理方案靈活、高效,密鑰安全存儲,使用方便可靠。眾所周知,加密算法本身并不保密,所以要確保加密數(shù)據(jù)的安全性通常取決于密鑰的安全性。










