呂海翠,郭 玲
(1.陜西科技大學鎬京學院,陜西 西安 712046;2.陜西理工大學,陜西 漢中 723000)
數據信息在生產和生活中表現出越來越重要的地位,無論是企業還是個人,產生的數據信息越來越多,這些數據通常被保存在本地數據庫或者云端數據庫。由于數據能夠體現用戶的基本信息和服務偏好,所以對敏感信息的保護很重要[1]。為降低數據被攻擊篡改的風險,現在的通用做法是對數據進行認證、審計或者加密處理。帶來的好處就是提高了數據信息安全性,同時,不計代價的安全處理也可能會造成數據訪問的效率降低[2]。于是,如何能夠在有效保護數據信息安全的同時,獲得良好的數據訪問速度[3],是數據庫信息加密算法研究的難點問題。
何文才[4]等人在CAS框架基礎上,提出了Logistic-Henon混沌加密。仿真結果表明,該方法能夠防止內部威脅,但是存在一定程度的初值敏感。朱沙沙[5]在對一些獨立算法優缺點分析的基礎上,提出了融合3DES-RSA加密算法。仿真主要針對數據庫存儲和查詢進行分析,沒有對安全性進行具體說明。何文才[6]等人針對Andriod的SQLite提出了AES-128加密算法。該算法通過二輪密鑰提升了AES的加密性能,且加解密效率也得到優化,但是只適用于Andriod移動設備本地。周藝華[7]等人為提高加密算法的查詢效率,設計了優化mOPE算法。該算法過于注重數據庫查詢開銷的優化,同樣缺乏對算法安全性的考慮。周福才[8]等人設計了多層嵌套加密,可以實現多種SQL查詢。該算法對用戶的隱私性較好,但是多層嵌套導致了效率的下降。上述研究成果存在各自的優缺點,考慮到加密算法在敏感信息保護方面的優勢,本文在保序加密基礎上設計了可變保序加密,應用于明文域加密。消除了明文順序相同對加密性能的影響,同時隨機函數的非均勻特性和明文域等分有利于增強加密。隨后針對敏感信息采取量子加密,并對加密過程進行了設計優化。整個加密算法充分考慮了數據庫操作效率和數據信息安全性。
傳統保序加密算法是把密文和保序編碼同時持久化到數據庫中,為了確保安全,普遍遵循IND-OCPA規定。根據IND-OCPA標準要求,編碼為明文的序列映射,也就是對編碼的攻擊過程中,僅可以獲取明文順序信息。但是如果存在排序一致的編碼,明密文映射情況將會被破解。因此,還是具有很大的風險。于是,本文在保序加密的框架下,對明文數據進行加密設計,再持久化到數據庫。
根據加密系統的元素,可以將加密模型描述為{P,M,K,A}。其中元素P={p1,p2,…,pn}為等差數列,用于表示明文域;M={m1,m2,…,mn}表示密文域,mi是Pi的映射;K表示密鑰,利用K可以完成密文域的構造;A表示算法,通過A算法完成Pi至mi的映射,即加密過程,可以描述如下:

(1)
A算法映射過程中會形成結果集,需要在集合內選擇出最終的加密結果。
為防止因明文順序相同而影響加密性能,本文采取隨機發生函數構建密鑰,進而使明密文域形成統計差異。將隨機函數表示為R(),通過R()可以獲得l個任意數,并保證這l個任意數符合非均勻散布。在函數計算時,為加強非均勻特性,R()設計為如下非線性函數:

(2)
式中Pmax表示明文域最大值;Pmin表示明文域最小值;P表示明文域公差;0<ω<1表示權重系數;0 (3) 由于R()結果的非均勻分布,導致序列r呈現非等差。將r內的任意相鄰元素ri和ri+1進行組合,得到區間為[ri,ri+1)。利用構造密鑰ki,于是K的公式表示為 (4) mi=map(K,p),i∈[1,n] (5) 對于任意d∈P,需要確定d在等分后域中的位置,且對應區間內元素數量。當d對應區間內僅包含一個元素,輸出密文map(Ki,pi)。整個保序加密處理流程描述如圖1所示。 圖1 可變保序加密 為了給數據庫敏感信息提供更高級別的保護,對敏感信息采取二次加密。設定明文域中一共包含m條敏感信息,在構造其密鑰的時候,引入量子計算。得到對應的量子糾纏態,表示如下 (6) (7) 將明文域中敏感信息對應的編碼表示為U={u1,u2,…,ui}。結合密鑰生成函數,得到其加密稀疏程度為OU=-U/G,密鑰生成時的振蕩函數表示為 V=R(x)+λb (8) 式中R(x)表示非線性隨機函數;λ表示振蕩因子;b表示編碼因子。設定原始加密矩陣為E,采取加密處理后有 (9) Jij=E(β+Di/Ki) (10) 這里的β表示解密系數;Di表示敏感信息數量;ki表示解密密鑰數量。依據式(10)可以獲得解密密鑰的特征,結合加密過程中的模糊狀態,可以計算出加密傳函如下 (11) 式中i∈[1,m];T表示檢測周期。如果模糊狀態ai大于零,即有傳函結果大于等于所有模糊狀態之和,說明對應的密鑰有效,此時可得傳遞密鑰表示為 (12) 式中f′表示敏感函數;χ表示融合特征;ωχ表示χ的權重系數。至此,便完成了敏感信息的整個加密過程。對應的流程描述如圖2所示。 圖2 敏感信息加密 在實際使用中,很多時候采用多條數據同時管理,這種情況下一般存在若干個字段。要想獲得最好的數據安全性,應該采取一次一密的方式存取。于是,基于提出的數據庫敏感信息可變保序加密算法,通過JaVa編程來實現。同時還實現了mOPE算法模型,與本文算法進行比較。關于構建安全算法模型的環境及參數如表1所示。 表1 實現環境及參數 實驗過程中,在Mysql中通過批量操作商品信息產生包含1萬條數據的測試表,每條數據包含12個字段。為模擬敏感信息,設定“商品ID”、“分類ID”、“創建人”和“修改人”字段為敏感信息。數據表信息的具體描述如表2所示。 表2 測試數據表 對加密安全算法的效率進行實驗分析,分別從加密時間、數據插入時間以及查詢時間三個方面考慮。利用mOPE算法對測試數據進行加密,同時利用本文算法對測試數據進行可變保序加密和對敏感信息加密。實驗過程中,分別得到1000條數據與5000條數據兩種情況下,不同算法的加密時間。每組情況的最終結果為多次實驗的平均值,每次從數據庫中隨機抽取測試數據。加密時間結果如表3所示。 本文加密安全算法一共由兩部分組成:可變保序加密和敏感信息加密。經過表3中的時間對比可以發現,可變保序加密階段完成的任務量與mOPE加密的任務量基本是一致的,mOPE算法采用二叉樹完成明文序列,本文采用等差數列完成明文序列,加之明文域的等分處理提高了加密效率,使得可變保序加密過程比mOPE加密用時有所降低。雖然本文方法增加了對敏感信息的加密處理,但是敏感信息計算復雜度不高,使得對總加密時間的影響不是很大。在1000條數據和5000條數據情況下,僅比mOPE加密模型用時多了2.2ms和13ms。 表3 加密時間比較 向測試數據表中插入數據,插入數據量從1000至10000,得到兩種算法的插入時間,如圖3所示。經過曲線對比可以發現,本文算法的插入時間較mOPE明顯縮短,這是因為本文算法無需遍歷二叉樹,也無需對所有數據形成新密鑰。 圖3 插入時間比較 對測試數據表進行查詢操作,查詢數據量從1000至10000,得到兩種算法的查詢時間曲線,如圖4所示。對比可以發現,本文算法在查詢數量增加時,查詢時間較mOPE也有明顯降低,說明加密安全算法具有更高的查詢效率,更適合批量處理。 圖4 查詢時間比較 為描述加密算法的安全性,通過抗攻擊度進行衡量。該指標描述了加密處理時數據的抗擾程度。抗攻擊度越高,代表加密算法的安全性越高。通過模擬得到10次攻擊對應的抗攻擊度結果,如圖5所示。經過比較可知,mOPE算法的抗攻擊度平均為82.66%,本文算法的抗攻擊度平均為93.23%,較mOPE有顯著提升。這是由于本文在可變保序加密算法基礎上,對數據庫敏感信息采用了量子加密,提高了加密的穩定性。 圖5 抗攻擊比較 為表述對數據庫敏感信息的保護程度,通過對敏感信息披露率衡量加密算法性能。披露率越低,代表對敏感信息的保護效果越好。模擬得到10次攻擊對應的敏感信息披露結果,如圖6所示。比較可以發現,mOPE算法的披露率大部分處于10%以上,經過本文算法加密后,披露率大幅縮減,整體不超過5%,敏感信息能夠得到有效保護。 圖6 敏感信息安全比較 為了增強數據庫信息的操作性和安全性,本文將數據庫信息采用兩次加密。第一次對整個明文域進行可變保序加密,第二次對敏感信息進行量子加密。基于批量操作產生包含1萬條數據的數據庫測試表,分別從效率和安全性兩方面對加密算法進行性能驗證。通過Mysql數據庫的實驗,得到如下結果: 1)本文方法的加密時間基本與mOPE相差無幾,插入時間和查詢時間則明顯優于mOPE,當操作數據量為10000時,插入時間為420ms,查詢時間為37ms。 2)本文方法的抗攻擊度可達93.23%,敏感信息披露率僅為4.14%。 實驗結果充分表明本文方法能夠獲得更好的加密效果,對數據庫敏感信息具有更好的保護性能;并且獲得了良好的數據插入和查詢速度,操作效率得到顯著提升。



4 敏感信息加密








5 實驗與結果分析
5.1 實驗環境設置


5.2 效率分析



5.3 安全分析


6 結束語