數(shù)據(jù)庫關鍵敏感字段如何分級別加密

將數(shù)據(jù)庫中關鍵敏感字段根據(jù)其安全需求分為不同級別,用對稱加密算法對關鍵敏感字段分級別加密,其數(shù)據(jù)密鑰采用橢圓曲線加密算法保護。該方案將對稱加密算法、橢圓曲線公鑰加密算法和單向函數(shù)有機結合,實現(xiàn)了用戶使用權限和關鍵敏感字段的安全級別的關聯(lián)。用該方案建立的加密數(shù)據(jù)庫,不僅可以保證敏感數(shù)據(jù)的機密性和完整性,而且節(jié)省大量存儲空間和支持分級別權限訪問,保證了數(shù)據(jù)庫的高效可用性。

一、數(shù)據(jù)庫加密方案

新方案由系統(tǒng)初始化,數(shù)據(jù)庫中數(shù)據(jù)關鍵字段加密、數(shù)據(jù)加密密鑰的安全存儲、數(shù)據(jù)加密字段的解密4個階段組成。

1、系統(tǒng)初始化

令E是Ep上的橢圓曲線,P是E(Fp)上的點,設P的階是素數(shù)n,則集合(P)=(00P,2P,3P,…,(n-l)P)是由P生成的橢圓曲線循環(huán)子群。素數(shù)P,橢圓曲線方程E,點P和階n構成公開參數(shù)組。用戶ui私鑰是在區(qū)間[l,n-l]內隨機選擇的正整數(shù)d,相應的公鑰是Qi=dP。并將橢圓曲線參數(shù)組(p,E,P,n)保存在數(shù)據(jù)庫里。

2、數(shù)據(jù)庫中數(shù)據(jù)關鍵字段的加密

令Data-term-z代表數(shù)據(jù)Data中每個記錄的第l個字段屬于敏感信息,需以密文保存在數(shù)據(jù)庫,使數(shù)據(jù)Data中每個記錄的第l個字段一般用戶是不可見的(即不能訪問的),只有達到級別的用戶才能訪問它?,F(xiàn)假設有一數(shù)據(jù)Data中的記錄有α個字段Data-term-lλ(λ=1,2,…,d)屬于敏感信息,其安全級別需求從高到低的次序分別為Data-term-l1,Data-term-l2,…,Data-term-lα。數(shù)據(jù)庫按如下方式保存數(shù)據(jù)Data:

(1)隨機選取ko∈{0,1k},計算

 

為字段Data-term-lλ的加密密鑰;

(2)用密鑰kλ加密,得到Data-term-lλ的密文CData-term-lλ=Ekλ(Data -term-lλ);

(3)將數(shù)據(jù)Data的敏感信息字段Data-term-lλ(λ=1,2,…,α)以密文CData-term-lλ保存在數(shù)據(jù)庫中,其余字段信息仍以明文保存。

3、數(shù)據(jù)庫數(shù)據(jù)加密密鑰的安全存儲

假若授權用戶uj,能訪問數(shù)據(jù)Data的加密字段的最高級別是Data-term-lη,即只能訪問加密字段Data-term-lη,…,Data-term-lα,其中1<η≤α。服務器端Ui按如下操作存儲data數(shù)據(jù)的字段加密密鑰kλ

(1)從系統(tǒng)公用文件中讀取Uj的身份標識IDj所對應的公鑰Qj和系統(tǒng)公共參數(shù)params;

(2)隨機均勻地選取r∈[l,n-l],利用私鑰Sj計算c1=rp和C2=kη+rQj;

(3)將密文c=(CI,G)與Data保存在同一數(shù)據(jù)庫中。

4、數(shù)據(jù)加密字段的解密

當Uj想訪問數(shù)據(jù)Data的保密字段時,首先從加密數(shù)據(jù)庫中獲取(C1,Q),然后進行如下處理:

(1)利用用戶Uj的私鑰d,(C1,C2)和公共參數(shù)組,計算出解密密鑰k= C2-dC1;

(2)用k分別計算加密字段CData-term-lη,…,CData-term-lα的解密密鑰

 

其中η≤τ≤α;

(3)用密鑰kτ,分別解密數(shù)據(jù)Data的加密字段CData-term-lτ,得到該字段的明文Data-term-lτ,=Dkτ(CData - term -lτ),其中η≤τ≤α。

在上述方案中,授權用戶Uj的合法訪問區(qū)域是加密字段CData-term-lτ,其中η≤τ≤α。Uj不能訪問只有高安全級別授權用戶訪問的加密字段CData-term-lτ,l≤τ≤η-1。H2(.)是安全單向的Hash函數(shù),因此,uj根據(jù)kη從kη=H2(kη-1)求解kη-1是一個難問題。

二、數(shù)據(jù)庫關鍵敏感字段分級別加密方案的分析

本方案是基于橢圓曲線的離散對數(shù)問題和Hash函數(shù)的安全性假設的,其安全性和效率分析如下:

(1)可以確保多個授權用戶對同一個加密字段進行共享訪問,并且是分級別的訪問,只有高一層的用戶級別才可以對下一層的訪問。uj根據(jù)kη從kη=H2(kη-1)求解kη-1,是一個難問題。只有達到級別的用戶才能訪問它,并且可以訪問其級別以下的加密字段。采用對稱加密算法對關鍵字段加密,這樣授權用戶可以對加密字段進行快速的解密,不影響系統(tǒng)運行速度。因此只要通過自己的私鑰對密鑰的密文解密得到加密字段的密鑰,用心分別計算加密字段CData-term-lη,…,CData-term-lα的解密密鑰

 

其中η≤τ≤α,從而最終可以高效訪問明文數(shù)據(jù),達到對關鍵字段分級別訪問的目的,并防止越級訪問。

(2)密鑰的存儲安全。因為密碼系統(tǒng)的安全依賴于密鑰的安全,所以最好確保訪問密鑰的實體數(shù)量保持最少。通過限制密鑰在使用范圍為單一目的,可以減少需要訪問密鑰的實體數(shù)量,在數(shù)據(jù)庫加密系統(tǒng)中,這個要求的具體體現(xiàn)是密鑰只能用于單一的數(shù)據(jù)庫。本文通過kη得到同一級別中其他敏感字段的密鑰,保證了一字一密,同時kη用橢圓曲線加密算法加密,攻擊者面臨橢圓曲線對數(shù)問題,從而可以防止非法用戶去隨便加解密數(shù)據(jù)庫的數(shù)據(jù),保證了數(shù)據(jù)的完整性。

(3)可以抵抗已知密文攻擊。已知密文攻擊是以大量使用同一密鑰的數(shù)據(jù)作為基礎來進行的,如果使用多個不同的密鑰對數(shù)據(jù)進行加密,每個密鑰加密的數(shù)據(jù)量就會比較少,從而限制了這種攻擊的有效性。

(4)節(jié)省存儲空間。與當前通用的密鑰長度1024比特的RSA加密方案相比,本文方案使用橢圓曲線加密算法達到與其同等的安全性,密鑰長度只需160比特。每個用戶的密鑰長度僅約為RSA方案的15.7%。此外,本文通過kη得到同一級別中其他敏感字段的密鑰,保證了一字一密,同時數(shù)據(jù)庫只要保存用戶的一個密鑰,極大地節(jié)省了存儲空間;且在系統(tǒng)加載密鑰時,可以減少處理負荷,使得加解密速度快。

在奔騰處理器740(1.73 GHz)、內存256 MB的SONY計算機上,使用數(shù)據(jù)庫Oracle9i,對數(shù)據(jù)設置6個密級I={1,2,3,4,5,6},筆者在局域網(wǎng)內進行了實驗。與根據(jù)需要在各級為用戶設置不同密鑰相比,本文方案為每個用戶只保存一個密鑰的設計方式,在500個用戶使用的環(huán)境下,密鑰存儲空間節(jié)約了大約52.85%,但最高權限為i∈I級的用戶獲取第2級的解密數(shù)據(jù)是他獲取第(l一1)級的解密數(shù)據(jù)所需時間的
1.27倍左右,其中i∈I滿足1≤I≤i。這是因為大多數(shù)普通用戶只需1個或2個級別的數(shù)據(jù)訪問權限,具有各個級別數(shù)據(jù)訪問權限的用戶十分少。在實驗中,設置最高訪問級別為1—6級的用戶分別占總用戶數(shù)的60%,20%,10%,6%,3%和1%。而具有最高級別為i∈I的用戶在獲取第f級加密數(shù)據(jù)的解密密鑰時,比獲取第(l-1)級加密數(shù)據(jù)的解密密鑰要多計算1次Hash函數(shù),這需要耗費更多的時間。隨著高級別權限的用戶數(shù)目的增多,本文方案在節(jié)約密鑰存儲空間方面更有優(yōu)勢;而使用更高性能CPU的計算機作數(shù)據(jù)庫的服務器,將加快Hash函數(shù)的計算,提高系統(tǒng)的效率。

小知識之Hash函數(shù)

Hash,一般翻譯做"散列",也有直接音譯為"哈希"的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù)。