何文才 李斯佳 劉培鶴 馬英杰 楊亞濤
1(西安電子科技大學通信工程學院 陜西 西安 710071)
2(北京電子科技學院通信工程系 北京 100070)
網絡信息化時代的到來,給人類社會生產生活帶來了重要的促進作用。人類生產生活中產生的信息量激增,大量的數據信息需要安全地存儲到網絡數據庫當中。為了保證網絡數據庫安全有效的使用,就需要從理論聯系實際出發,提出相關安全模型并進行多方面的分析,從而對網絡數據庫安全技術的研究與發展提供有效的支持。
近年來許多學者對網絡數據信息加密展開研究。李愛寧等[1]提出了一種分段雙重加密方法,效率及傳輸吞吐量較高,但是面對已知部分明密文對的敵手,被破譯的可能性較高。閆璽璽等[2]提出了一種基于訪問控制和中國剩余定理的密鑰數據庫管理方案,將需要加密的各個數據項的密鑰通過中國剩余定理計算合成主密鑰,從而進行管理。但實際上由于對數據庫添加或刪除數據項時會影響數據項和子密鑰的個數,需要重新計算主密鑰,計算量較大,對于需要頻繁添加數據項的數據表不易進行主密鑰生成操作。易成岐等[3]提出了一種基于社會網絡特性的雙混沌互反饋加密算法,在實際進行計算中由于數據精度有限,低維混沌系統部分會產生較明顯的短周期效應,若用于網絡數據庫存儲的大量數據加密,則會產生一定的周期效應。
近年來國內外專家學者對于混沌系統在加密方面的應用有著大量的研究及分析成果。Baykasoglu等[4]將Logistic映射的參數和初始條件作為部分密鑰,用映射產生的浮點數序列加密明文。Habutsu等[5]使用Tent混沌映射的逆映射對明文初值進行N次迭代,解密時用Tent混沌映射進行N次正向迭代,設計了一種混沌加密系統。然而在網絡數據庫加密方面,迄今為止并未有一種成熟的使用混沌系統進行加密的方案。本文主要針對管理員內部違規風險,提出一種基于Logistic映射與Henon映射相結合的混沌系統加密算法,從而對網絡數據庫進行加密的方案,在保證安全性的前提下,有著更為良好的靈活性。
用戶在訪問和使用網絡庫時,通常是通過若干種網絡數據庫已有的安全技術來保證網絡數據庫數據安全的。
1) 用戶識別技術。用戶識別技術主要應用于用戶登錄驗證過程中,通過使用基于口令的身份識別技術、基于生物學信息的身份識別技術、基于軟硬件安全設備的識別技術等來驗證確認用戶身份信息,這樣就能確保用戶的合法性。
2) 訪問限制和監視追蹤技術。訪問限制技術主要通過給予相同權限用戶同一種角色身份信息,使得對于不同角色身份的用戶訪問操作權限不同,對合法用戶非法獲取自身權限外數據進行了限制。監視追蹤技術是基于訪問限制技術設定的不同角色身份信息,對用戶角色的操作進行監視追蹤,對限制非法操作、降低非法操作的影響做了更為有效的補充與完善。
3) 數據庫審計技術。數據庫審計技術是網絡數據庫安全技術中的一項重要內容,能夠有效降低數據庫相關安全事故的嚴重性和發生率。數據庫審計技術會記錄用戶各種操作的時間、內容以及行為方式,對正常有效的操作予以記錄和統計,對非法操作、惡意操作等及時記錄下來,避免影響嚴重化,同時給予相關數據庫權限人追責依據。
4) 數據庫加密技術。數據庫加密技術是保障數據庫數據安全的一項重要技術。針對數據庫中保存的數據量較大、保存時間長、訪問數據較為頻繁,數據庫加密的粒度、層級、運算速度也有所不同。常用的數據庫加密方案有AES、RSA、同態加密等加密算法,此外,MD5、SHA1等散列算法也常用于數據庫密碼混淆方案中。
網絡數據庫的安全主要從以下兩個方面來定義[6]。一是指網絡數據庫運行系統的安全,二是指網絡數據庫中數據的安全,后者是網絡數據庫安全技術針對的核心之處。對于網絡數據庫運行系統的安全,主要包括攻擊者對運行環境進行攻擊、數據庫服務器硬件損耗、數據庫運行時崩潰或其他非正常運行狀況等。對網絡數據庫中數據安全的威脅,主要來自以下三個方面。
1) 網絡黑客入侵數據庫造成數據泄露或損壞。部分網絡黑客會挖掘系統漏洞來針對數據庫進行數據的竊取與損毀,例如口令入侵、SQL注入攻擊、XSS攻擊等。這些網絡黑客主要通過獲取合法用戶口令信息、獲取特權、竊取數據備份、直接獲取敏感數據等手段來對數據庫數據安全造成威脅。
2) 合法用戶非法獲取自身權限外的數據資源。這種威脅一方面來自普通用戶誤操作導致獲取到自身權限外的數據資源,從而使數據泄露或者損壞。另一方面來自惡意用戶非法利用系統中的漏洞從而獲取敏感信息,對數據庫數據安全造成威脅。
3) 內部人員可以直接接觸敏感數據導致數據泄露。網絡數據庫系統內部工作管理人員往往可以直接接觸到數據庫內部敏感數據,而敏感數據在網絡數據庫系統內部加密的密鑰和加密方案等信息對于內部人員來說也可以較為容易地獲取到。內部人員為了保障網絡數據庫安全有著不可替代的作用和意義,但也會對網絡數據庫的安全又造成了一定程度上的威脅。
結合常用的網絡數據庫安全技術,為解決內部人員可直接接觸敏感數據的問題,本文提出了一種基于混沌系統和CAS系統的網絡數據庫安全模型。
在新型的網絡數據安全模型中,用戶端單獨保存數據庫根密鑰,在加解密操作的過程中,根據根密鑰、用戶身份信息在相應的混沌模型計算出加解密所需的所有相關密鑰,并進行加解密操作。該網絡數據安全模型的構造如圖1所示。

圖1 網絡數據庫安全模型
(1) 用戶登錄Web服務器。用戶根據自身實際的需求,在網絡數據庫系統的Web前端頁面中需要進行登錄操作。這時用戶首先在Web服務器發出登錄請求,若用戶曾經注冊過且Service Ticket(ST)有效期未過,則請求的請求頭中包含了ST參數。若用戶還未注冊過或ST的有效時間已過,請求的請求頭中不攜帶ST參數。Web服務器檢查用戶請求頭,判斷該請求是否攜帶ST,若未攜帶則將請求重定向到LKM服務器并進行步驟(2),若攜帶則直接進行步驟(5)來進行相關驗證。
(2) 請求重定向。Web服務器將該請求重定向到LKM服務器,LKM服務器會檢查用戶LKM服務器站點的Cookie中是否攜帶TGC(Ticket Grant Cookie)。若未攜帶則需要用戶進行步驟(3)來進行注冊或登錄操作。若攜帶則LKM服務器驗證該TGC是否正確,正確則跳轉到步驟(4)。
(3) 注冊或登錄。LKM服務器對用戶進行相應的身份認證,常見的認證方式有基于口令的身份識別技術、基于生物學信息的身份識別技術、基于軟硬件安全設備的識別技術。本文在實現中使用基于口令的身份識別技術,將用戶的密碼進行MD5混淆后保存在LKM服務器的用戶信息管理數據庫中。用戶在認證成功后進行步驟(4)。
(4) 下發TGC及參數。若用戶是在注冊或登錄后進入步驟(4),LKM服務器會向用戶瀏覽器下發TGC并生成下發混沌系統使用的各項參數,同時在LKM服務器的用戶信息管理數據庫中保存用戶的TGC和這些參數,下發的TGC作為會話Cookie保存。會話Cookie不存在過期時間或者有效期,但在用戶關閉瀏覽器的同時會被刪除。若用戶是在TGC驗證成功后進入步驟(4),則僅下發混沌系統使用的各項參數。混沌系統使用的各項參數在下發時會使用公鑰密碼算法進行加密,保證參數在網絡傳輸過程中的安全性。
(5) 重新登錄Web服務器。用戶端瀏覽器首先根據上次請求使用的ST(若沒有則使用TGC)以及LKM服務器下發的相關參數在Logistic-Henon加密方案中計算出本次請求需要攜帶的ST,結合用戶所需加密粒度對相關數據進行加密。隨后將請求發送至Web服務器。
(6) ST驗證。Web服務器向LKM服務器發送請求來驗證該用戶本次ST是否合法,該請求中包含ST信息、用戶請求頭中獲取的用戶名以及用戶該請求發送時刻的時間戳。
(7) LKM服務器根據請求中發送過來的用戶名信息,在用戶信息管理數據庫中獲取此用戶的TGC、用戶成功請求次數N以及混沌系統參數信息。通過在Logistic-Henon混沌加密方案中Ticket生成部分代入到的傳輸過來的混沌系統參數,將TGC作為初始狀態并迭代N次,計算出本次請求正確的ST并進行核對。若核對正確則會將用戶相關權限信息反饋到Web服務器,同時保存N+1為該用戶成功請求次數。
(8) 請求審計。Web服務器將用戶端進行Logistic-Henon混沌加密后的庫文件信息或SQL語句、用戶權限信息傳遞給數據庫安全中間件。數據庫安全中間件首先根據用戶的身份權限信息決定是否通過用戶的請求,隨后對SQL語句進行敏感詞匯檢查審計,并將相應的記錄保存到審計日志中。
(9) 備份與示警。數據庫安全中間件周期性對審計記錄進行審查、保存數據庫備份和數據庫更新備份。在審查中若判斷某數據庫在一定時間段內遭受攻擊頻次較高或遭受嚴重攻擊,則會向LKM服務器發送示警消息與數據庫創建人信息,LKM服務器會向相應的用戶發送示警郵件提示相關權限用戶。
此外,若用戶需要讀取數據信息并且身份驗證通過,LAKM服務器會根據審計記錄中該數據保存時的用戶成功請求次數在混沌系統中計算出當時所使用的ST,并與數據密文信息一同傳遞給用戶,用于解密數據信息。
對數據庫安全造成威脅的原因大體上來自于自然因素和人為因素兩個方向,其中自然因素造成的威脅對數據庫安全性能影響較小,網絡數據庫中發生的安全問題主要來自于人為因素。人為因素造成的威脅包括了三個主要方面:網絡黑客入侵數據庫造成數據泄露或損壞,內部人員直接接觸敏感數據造成數據泄露以及合法用戶非法獲取自身權限外的數據資源。
根據本文所提網絡數據庫安全方案以及方案中所使用到的Logistic-Henon混沌加密算法的特征,網絡黑客若要獲取到用戶的敏感數據信息,在已知安全方案中全部流程以及加密算法結構的同時,仍需要得到用戶密文數據信息、根密鑰、Service Ticket相關信息以及混沌加密參數。其中Service Ticket相關信息需要知道用戶在創建、保存敏感數據時使用的Service Ticket,即使網絡黑客已經得到了方案中混沌加密算法結構以及用戶在混沌算法中使用的相關參數,也至少需要知道用戶的TGC信息。用戶在每次請求進行身份認證的過程中,使用的Service Ticket不同,由于產生Service Ticket的混沌系統具有偽隨機特性,網絡黑客難以使用重放攻擊來獲取合法用戶身份。此外,根密鑰信息保存在用戶本地計算機中,并不會在用戶請求中傳遞或由第三方下發分配,網絡黑客一般無法竊聽相關信息。因此,本文方案可以抵御網絡黑客入侵造成的安全威脅。
網絡數據庫的內部管理人員往往具有非常大的用戶權限,能夠直接接觸到用戶敏感數據信息,若內部管理人員作為敵手,對用戶敏感數據造成的安全威脅較其他兩類攻擊方式更大。本文提出的網路數據庫安全模型將敏感數據加密流程放到用戶端來進行,一方面防止了網絡傳輸中黑客對敏感數據的竊聽,另一方面防止用戶敏感數據明文信息夾雜在用戶請求正文中。在用戶發送敏感數據加密請求之后,從服務器接收到用戶請求到服務器內部對敏感數據加密完成的過程中,網絡數據庫管理員及服務器后端管理員均可以解除到敏感數據明文信息。本文模型中,敏感數據加解密使用的密鑰信息在用戶端保存,管理員無法通過自身權限優勢獲取用戶根密鑰,從而防止了網絡數據庫中的內部違規行為。因此,本文方案可以抵御網絡數據庫內部管理人員直接接觸敏感數據造成的安全威脅。
網絡數據庫中還存在著合法用戶非法獲取自身權限外數據資源的威脅。本文方案中敏感數據庫及數據表訪問權限由RBAC訪問控制模型建立,通過用戶、權限、角色表共同保存用戶與資源之間的權限關系,合法用戶無法獲取自身權限外數據資源信息。因此,本文方案可以抵御合法用戶通過非法手段獲取自身權限外的數據資源。
對于網絡數據庫來說,一般有以下幾種常見的攻擊手段[9]。
(1) SQL注入攻擊手段。這種方式不需要采用任何外部工具,敵手通過將敏感字符添加到數據庫查詢請求參數中,從而竊取數據庫中的敏感信息。本文數據庫安全模型中,數據庫安全中間件對用戶提交的SQL語句敏感詞匯進行分析,能夠防止惡意用戶通過SQL注入攻擊竊取用戶敏感信息。
(2) 數據庫下載漏洞。這種方式通過計算機系統中互聯網信息服務存在的漏洞或網站設計缺陷,暴露網絡數據庫路徑,從而下載整個網絡數據庫信息。對于本文數據庫模型,網絡黑客若通過網絡漏洞或網站缺陷,從網絡服務器內部或網絡數據庫獲取到用戶敏感信息,由于用戶數據在瀏覽器端已完成加密操作,并且在服務端和網絡數據庫存儲過程中不會對用戶數據進行解密操作,網絡黑客只能夠獲取到密文信息,從而無法直接獲得用戶敏感數據明文信息。
(3) 竊取備份。這種攻擊手段常發生在內部管理人員利用自身權限將數據庫備份銷售給攻擊者,而數據庫中數據未加密,從而導致敏感信息泄露。與第2點相同,本文方案數據庫備份同樣為加密后的密文信息,因此內部人員或黑客無法通過竊取備份信息得到用戶敏感數據明文信息。
(4) 特權提升。這種攻擊手段針對于數據庫中訪問控制產生的漏洞,網絡數據庫內部管理員利用自身較高的訪問權限或外部攻擊人員通過破壞數據庫操作系統獲取更高等級的權限來對數據庫敏感信息進行攻擊。本文方案中對用戶以及管理員訪問控制權限做了較為詳細的限制,用戶或網絡黑客無法訪問自身沒有訪問權限的數據信息,數據庫管理員也無法提升自身的操作權限,權限管理員無法接觸到敏感數據信息,從而最大程度上防止這種攻擊手段。
表1展示了在安全性方面,本文方案與其他若干種方案對于常見網絡數據庫攻擊方式的對比。可以看出,本文方案較其他幾種方案更能抵御常見網絡數據庫攻擊,同時還可以避免網絡數據庫內部管理人員利用自身權限直接接觸敏感數據。文獻[17]所提出的B/S架構網絡數據庫方案中,用戶敏感數據在服務端進行加解密操作,以密文的形式存儲,因此可以抵御竊取備份方式的攻擊。但是該方案未對數據庫模型中訪問控制模型做詳細限制,因此對于數據庫下載漏洞以及特權提升的攻擊方式防御效果不佳。此外,該方案中并未對SQL語句進行詳細分析,且數據庫DAO層操作僅通過JDBC完成,因此對SQL注入攻擊防御效果不佳。文獻[18]提出的Web平臺數據庫系統中,系統對SQL注入攻擊進行了防御,但是由于該系統訪問控制模型中數據庫管理員權限極高且數量較多,因此對于特權提升方式的攻擊抵御效果不佳。該方案中用戶先將明文數據保存到網絡數據庫中,再根據需求加密相關數據,因此數據庫備份文件中可能存有敏感數據明文備份,因此對于數據庫下載漏洞以及竊取備份方式的攻擊防御效果不佳。文獻[19]重點研究數據庫加密密鑰管理技術,提出了一種二級密鑰管理方案,并對SQL語法進行了分析,因此能夠防御SQL注入、數據庫下載漏洞、竊取備份等攻擊方式的攻擊。但是該方案中用戶管理員能夠直接接觸到用戶密文數據信息及加密字典,從而對特權提升等來自內部人員的攻擊防御效果不佳。

表1 網絡數據庫模型安全性能比較表
本文系統使用Logistic-Henon混沌系統和CAS單點登錄系統共同完成身份確認和子密鑰生成過程,大體上可以分為ST生成和子密鑰生成兩部分,具體流程圖如圖2所示。

圖2 身份確認及子密鑰生成流程圖
對于LAKM服務器端來說,每次驗證ST合法性需要將用戶初始TGC代入Logistic映射中迭代,判斷生成的ST與用戶請求攜帶的ST是否相同,并保存記錄用戶成功請求的次數。
對于用戶端來說,首先需要將上次成功使用的ST代入Logistic映射中迭代生成本次需要使用的ST,若驗證成功則將本次使用的ST取代上次使用的ST保存。與此同時將此ST和根密鑰帶入Henon映射中生成加密使用的子密鑰,再進行加密操作。
用戶端對上次,即第p次成功身份驗證所使用的ST進行處理f(x),得到滿足Logistic映射的初態合理區間的初態f(st)=xp。其中x0表示TGC,μ則由LAKM服務器計算生成并在用戶第一次注冊時與TGC同時發放給用戶,保證服務器和用戶端有相同的μ。用戶發送請求時將xi代入式(1)進行hp次迭代,得到本次請求需要的ST=f-1(xk)。
xn+1=μxn(1-xn)
(1)

Devaney R.L定義[6]混沌的連續映射f在度量空間V上具有如下性質:1) 初值敏感性;2) 拓撲傳遞性;3)f的周期點集在V中稠密。
系統對于數據庫庫文件的明文信息m進行分段加密,將m分段為m1、m2、…、mn進行加密,需要的密鑰k1、k2、…、kn由Henon映射生成。Henon映射是高維情形下最簡單的非線性映射,相比于普通映射來說,初值敏感性更強、動力學系統特性更好[8]。
(2)

解密是加密過程的逆過程,其中計算k1所使用的初態x0使用提交保存加密數據庫文件時所使用的ST。服務器調取審計日志記錄信息獲得用戶該次的身份驗證成功次數p,用于式(1)中的迭代次數以獲取正確的ST,再傳遞給客戶端。客戶端將ST和根密鑰帶入相同的Henon混沌系統生成全部子密鑰k1、k2、…、kn,分別對密文c1、c2、…、cn進行解密生成明文段m1、m2、…、mn,將所有明文段組合成明文文件m,即得到了明文數據庫庫文件。
在驗證算法的安全性過程中,CPU選用Intel(R) Core(TM) i7-7700HQ CPU @ 2.80 GHz 2.81 GHz,內存8.00 GB,測試代碼使用Java編寫,jdk版本為10.0.1。代碼中數據全部選用double型數據類型,子密鑰生成后采用AES進行加密,與傳統AES單一密鑰加密進行對比。
3.3.1復雜度分析
首先計算本次請求使用的ST,這一步主要是固定次數的Logistic映射的迭代,復雜度與明文長度無關,為O(1)。這一步耗時主要與迭代次數相關,在實驗仿真中迭代10 000次平均耗時1.92毫秒,在實際使用中基本可以忽略不計。下一步需要計算出子密鑰并進行加密,其時間復雜度主要和加密時選用的算法復雜度相同。實驗仿真中選用AES加密,其復雜為O(n),因此系統的時間復雜度為O(n)。
3.3.2密鑰空間分析
本文算法共有兩個初始值和三個參數,其中Logistic映射在參數3.569 945 6<μ≤4,初始狀態x0∈[0,1]時進入混沌狀態,參數空間為4.3×1015,初始狀態空間為1×1016。Henon映射在參數α∈[0,1.4]、b=0.3時系統進入混沌狀態,參數空間為1.4×1016,初始狀態空間與根密鑰生成初始狀態的函數值域范圍相關,仿真實驗中使用字符串的哈希值生成初始狀態,值域空間大小為232≈4×109。因此算法的總密鑰空間為232×4.3×1015×1016×1.4×1016≈2.4×1057,完全可以滿足加密時密鑰空間大小的需求。
3.3.3初值敏感性分析
實驗選取Logistic映射中參數μ=3.769 467 668 85,Henon映射中參數a=1.4,b=0.3,ST為0.215 146 685 55,根密鑰為字符串password,對數據庫文件進行加密。密文文件在選取相同ST和根密鑰的條件下,可以解密得到正確的數據庫文件。仿真實驗代碼中使用流的方式來讀取寫入庫文件,每128個比特分為一組進行加密,解密時則是144個比特一組,不足的部分單獨分為一組。實驗表明,對于Logistic映射,在μ相同,ST即初態x0相差10-12的條件下,迭代次數在55次之后序列產生較大差異,如圖3所示。在ST相同,μ相差10-12的條件下,迭代次數在65之后產生較大差異,如圖4所示。

圖3 μ相同ST不同時序列差值

圖4 ST相同μ不同時序列差值
如圖5-圖8所示,在相同密文文件和相同參數的μ、a、b、ST,Logistic映射迭代次數為10 000的條件下,對一個有若干數據項的數據庫先進行加密,然后用相同ST和根密鑰進行解密,解密后的數據庫與加密前數據庫數據項完全相同,而加密后的庫文件與加密前完全不同。在根密鑰最后一位變動一個比特,即變為passwore進行解密,在解密過程中就會報錯,無法正常解密。由此可證明本文算法對初值敏感性較高,安全性能好。

圖6 加密前的庫文件(json格式文件使用記事本打開)

圖8 正常解密后的數據庫
本文針對以內部人員造成的網絡威脅為主,兼顧其他種類的網絡威脅,以CAS單點登錄系統為基礎設計了一種Logistic-Henon混沌加密系統并進行了分析和實驗。本文提出的加密系統用Logistic映射迭代,保證了CAS單點登錄系統ST的安全性,基本做到了一次一密,并在此基礎上以根密鑰和該次傳輸的ST作為初態帶入了Henon映射,依次計算出子密鑰進行加密。由于混沌系統的初值敏感性和不穩定性,保證了計算出的子密鑰無序性,從而取得了更好的加密效果。本文又提出了一種安全網絡數據庫模型以適配加密方案,更加注重用戶對數據權限的私有化,以保障網絡數據的安全性。