將資料庫中關鍵敏感字段根據其安全需求分為不同級別,用對稱加密演算法對關鍵敏感欄位分級別加密,其資料金鑰採用橢圓曲線加密演算法保護。該方案將對稱加密演算法、橢圓曲線公鑰加密演算法和單向函式有機結合,實現了使用者使用許可權和關鍵敏感欄位的安全級別的關聯。用該方案建立的加密資料庫,不僅可以保證敏感資料的機密性和完整性,而且節省大量儲存空間和支援分級別許可權訪問,保證了資料庫的高效可用性。
一、資料庫加密方案
新方案由系統初始化,資料庫中資料關鍵字段加密、資料加密金鑰的安全儲存、資料加密欄位的解密4個階段組成。
1、系統初始化
令e是ep上的橢圓曲線,p是e(fp)上的點,設p的階是素數n,則集合(p)=(00p,2p,3p,…,(n-l)p)是由p生成的橢圓曲線迴圈子群。素數p,橢圓曲線方程e,點p和階n構成公開引數組。使用者ui私鑰是在區間[l,n-l]內隨機選擇的正整數d,相應的公鑰是qi=dp。並將橢圓曲線引數組(p,e,p,n)儲存在資料庫裡。
2、資料庫中資料關鍵字段的加密
令data-term-z代表資料data中每個記錄的第l個字段屬於敏感資訊,需以密文儲存在資料庫,使資料data中每個記錄的第l個字段一般使用者是不可見的(即不能訪問的),只有達到級別的使用者才能訪問它。現假設有一資料data中的記錄有α個字段data-term-lλ(λ=1,2,…,d)屬於敏感資訊,其安全級別需求從高到低的次序分別為data-term-l1,data-term-l2,…,data-term-lα。資料庫按如下方式儲存資料data:
(1)隨機選取ko∈,計算
為字段data-term-lλ的加密金鑰;
(2)用金鑰kλ加密,得到data-term-lλ的密文cdata-term-lλ=ekλ(data -term-lλ);
(3)將資料data的敏感資訊欄位data-term-lλ(λ=1,2,…,α)以密文cdata-term-lλ儲存在資料庫中,其餘字段資訊仍以明文儲存。
3、資料庫資料加密金鑰的安全儲存
假若授權使用者uj,能訪問資料data的加密欄位的最高端別是data-term-lη,即只能訪問加密欄位data-term-lη,…,data-term-lα,其中1
(1)從系統公用檔案中讀取uj的身份標識idj所對應的公鑰**和系統公共引數params;
(2)隨機均勻地選取r∈[l,n-l],利用私鑰sj計算c1=rp和c2=kη+r**;
(3)將密文c=(ci,g)與data儲存在同一資料庫中。
4、資料加密欄位的解密
當uj想訪問資料data的保密欄位時,首先從加密資料庫中獲取(c1,q),然後進行如下處理:
(1)利用使用者uj的私鑰d,(c1,c2)和公共引數組,計算出解密金鑰k= c2-dc1;
(2)用k分別計算加密欄位cdata-term-lη,…,cdata-term-lα的解密金鑰
其中η≤τ≤α;
(3)用金鑰kτ,分別解密資料data的加密欄位cdata-term-lτ,得到該字段的明文data-term-lτ,=dkτ(cdata – term -lτ),其中η≤τ≤α。
在上述方案中,授權使用者uj的合法訪問區域是加密欄位cdata-term-lτ,其中η≤τ≤α。uj不能訪問只有高安全級別授權使用者訪問的加密欄位cdata-term-lτ,l≤τ≤η-1。h2(.)是安全單向的hash函式,因此,uj根據kη從kη=h2(kη-1)求解kη-1是乙個難問題。
二、資料庫關鍵敏感欄位分級別加密方案的分析
本方案是基於橢圓曲線的離散對數問題和hash函式的安全性假設的,其安全性和效率分析如下:
(1)可以確保多個授權使用者對同乙個加密字段進行共享訪問,並且是分級別的訪問,只有高一層的使用者級別才可以對下一層的訪問。uj根據kη從kη=h2(kη-1)求解kη-1,是乙個難問題。只有達到級別的使用者才能訪問它,並且可以訪問其級別以下的加密字段。採用對稱加密演算法對關鍵字段加密,這樣授權使用者可以對加密字段進行快速的解密,不影響系統執行速度。因此只要通過自己的私鑰對金鑰的密文解密得到加密欄位的金鑰,用心分別計算加密欄位cdata-term-lη,…,cdata-term-lα的解密金鑰
其中η≤τ≤α,從而最終可以高效訪問明文資料,達到對關鍵字段分級別訪問的目的,並防止越級訪問。
(2)金鑰的儲存安全。因為密碼系統的安全依賴於金鑰的安全,所以最好確保訪問金鑰的實體數量保持最少。通過限制金鑰在使用範圍為單一目的,可以減少需要訪問金鑰的實體數量,在資料庫加密系統中,這個要求的具體體現是金鑰只能用於單一的資料庫。本文通過kη得到同一級別中其他敏感欄位的金鑰,保證了一字一密,同時kη用橢圓曲線加密演算法加密,攻擊者面臨橢圓曲線對數問題,從而可以防止非法使用者去隨便加解密資料庫的資料,保證了資料的完整性。
(3)可以抵抗已知密文攻擊。已知密文攻擊是以大量使用同一金鑰的資料作為基礎來進行的,如果使用多個不同的金鑰對資料進行加密,每個金鑰加密的資料量就會比較少,從而限制了這種攻擊的有效性。
(4)節省儲存空間。與當前通用的金鑰長度1024位元的rsa加密方案相比,本文方案使用橢圓曲線加密演算法達到與其同等的安全性,金鑰長度只需160位元。每個使用者的金鑰長度僅約為rsa方案的15.7%。此外,本文通過kη得到同一級別中其他敏感欄位的金鑰,保證了一字一密,同時資料庫只要儲存使用者的乙個金鑰,極大地節省了儲存空間;且在系統載入金鑰時,可以減少處理負荷,使得加解密速度快。
在奔騰處理器740(1.73 ghz)、記憶體256 mb的sony計算機上,使用資料庫oracle9i,對資料設定6個密級i=,筆者在區域網內進行了實驗。與根據需要在各級為使用者設定不同金鑰相比,本文方案為每個使用者只儲存乙個金鑰的設計方式,在500個使用者使用的環境下,金鑰儲存空間節約了大約52.85%,但最高許可權為i∈i級的使用者獲取第2級的解密資料是他獲取第(l一1)級的解密資料所需時間的
1.27倍左右,其中i∈i滿足1≤i≤i。這是因為大多數普通使用者只需1個或2個級別的資料訪問許可權,具有各個級別資料訪問許可權的使用者十分少。在實驗中,設定最高訪問級別為1—6級的使用者分別佔總使用者數的60%,20%,10%,6%,3%和1%。而具有最高端別為i∈i的使用者在獲取第f級加密資料的解密金鑰時,比獲取第(l-1)級加密資料的解密金鑰要多計算1次hash函式,這需要耗費更多的時間。隨著高階別許可權的使用者數目的增多,本文方案在節約金鑰儲存空間方面更有優勢;而使用更高效能cpu的計算機作資料庫的伺服器,將加快hash函式的計算,提高系統的效率。
資料庫分頁關鍵字
mysql分頁採用limt關鍵字 select from t order limit 5,10 返回第6 15行資料 select from t order limit 5 返回前5行 select from t order limit 0,5 返回前5行 mssql 2000分頁採用top關鍵字 ...
資料庫敏感字段快速方便地加密解密
業務背景 使用者插入資料時,敏感欄位要加密入庫 展示在前端時是解密後的。但是加密後欄位只能精確篩選了。使用的是sm4國密演算法 匯入依賴 org.bouncycastlegroupid bcprov ext jdk15onartifactid 1.58version compilescope dep...
資料庫關鍵字Union和Union All的區別
sql 的union操作符合併兩個或者多個select語句的結果.請注意 union內部的每個select語句必須擁有相同數量的列,且列必須有相似的資料型別,同時select語句中列的順序必須相同.建表語句 建表語句 create table table2 id int 2 auto increme...