楊永群++黃勤龍++劉越毅
摘 要:論文針對大數(shù)據(jù)環(huán)境下的數(shù)據(jù)安全問題,研究透明加解密技術(shù)、數(shù)據(jù)庫中間件技術(shù),設(shè)計實現(xiàn)了基于分類的應(yīng)用數(shù)據(jù)安全管控平臺。同時,針對結(jié)構(gòu)化數(shù)據(jù),基于主客體分級訪問控制規(guī)則設(shè)計數(shù)據(jù)庫中間件模塊,該中間件實現(xiàn)了對敏感表、字段的訪問控制、安全審計等功能,使用戶必須通過中間件模塊認(rèn)證后才能訪問數(shù)據(jù)庫;針對非結(jié)構(gòu)化數(shù)據(jù),采用服務(wù)器端透明加解密方案實現(xiàn)對數(shù)據(jù)的集中存儲和管控,在保障用戶原有操作習(xí)慣的同時,解決了數(shù)據(jù)所有權(quán)和管理權(quán)分離帶來的安全隱患。
關(guān)鍵詞:安全管控;數(shù)據(jù)庫中間件;透明加解密;數(shù)據(jù)安全
1 引言
目前,越來越多的企業(yè)將非結(jié)構(gòu)化數(shù)據(jù)傳輸?shù)降谌狡脚_以獲得存儲服務(wù)[1]。半可信的存儲平臺中集中了大量企業(yè)級用戶的隱私數(shù)據(jù),這些數(shù)據(jù)可能包括企業(yè)的知識產(chǎn)權(quán)、關(guān)鍵業(yè)務(wù)信息,甚至對于某些企業(yè)來說,這些數(shù)據(jù)還涉及到國家機密。因此,這些數(shù)據(jù)必須對外界保密,如果數(shù)據(jù)泄露給了競爭企業(yè)或者敵對勢力,將對企業(yè)的生存發(fā)展以及國家安全帶來災(zāi)難性的影響。但是,面對目前復(fù)雜的第三方存儲環(huán)境,這些數(shù)據(jù)面臨著比傳統(tǒng)計算系統(tǒng)更為復(fù)雜的安全威脅[2]:(1)在存儲的模式中,數(shù)據(jù)所有權(quán)和管理權(quán)分離,作為數(shù)據(jù)所有者的企業(yè)不再擁有數(shù)據(jù)的管理權(quán),服務(wù)提供商可以完全控制企業(yè)用戶的數(shù)據(jù);(2)外部攻擊者通過系統(tǒng)漏洞在未授權(quán)的情況下訪問數(shù)據(jù);(3)惡意數(shù)據(jù)庫管理員隨意訪問存儲的數(shù)據(jù),竊取用戶隱私;(4)通過直接對磁盤進(jìn)行物理攻擊,獲得其中存儲的用戶數(shù)據(jù)。
另外,存儲在數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)同樣也常常被當(dāng)做攻擊目標(biāo),鑒于數(shù)據(jù)庫面臨的各式各樣的安全威脅,其自身的安全性將成為保障數(shù)據(jù)安全的關(guān)鍵,因此數(shù)據(jù)庫的安全性變得越來越重要。數(shù)據(jù)庫安全包括數(shù)據(jù)安全性、數(shù)據(jù)完整性、故障恢復(fù)等方面,其包含兩層含義[3]:第一層是指數(shù)據(jù)庫系統(tǒng)運行安全,數(shù)據(jù)庫系統(tǒng)在工作時可能受到網(wǎng)絡(luò)不法分子的攻擊,造成系統(tǒng)無法正常啟動或超負(fù)荷運行大量索引、查詢等操作而引起硬件燒壞等物理性破壞;第二層是指數(shù)據(jù)庫系統(tǒng)信息安全,數(shù)據(jù)庫系統(tǒng)面臨來自內(nèi)部人員和外部非法用戶的威脅,這些惡意用戶可能利用各種漏洞入侵?jǐn)?shù)據(jù)庫以獲得其中的有價值數(shù)據(jù)。因此,應(yīng)該盡可能對數(shù)據(jù)庫系統(tǒng)建立保護措施和安全方案以保障其中存儲的數(shù)據(jù)安全。安全防護軟件提供的安全保護級別已不能滿足大部分企業(yè)的需求,數(shù)據(jù)庫中間件憑借其靈活性和可擴展的優(yōu)勢已經(jīng)成為一種被廣泛認(rèn)可的數(shù)據(jù)庫系統(tǒng)防護方案。
2 相關(guān)工作
目前,國內(nèi)外很多企業(yè)諸如亞馬遜、Google、百度等都推出了各自的數(shù)據(jù)存儲平臺,很多國內(nèi)外學(xué)者也致力于數(shù)據(jù)安全存儲的研究。傳統(tǒng)的方式是客戶端軟件映射用戶在數(shù)據(jù)庫服務(wù)器端存儲的文件結(jié)構(gòu)[4],用戶在客戶端對文件的操作會同步到數(shù)據(jù)庫服務(wù)器。然而這種方式中數(shù)據(jù)一直以明文形式存在,數(shù)據(jù)安全性無法保證。因此,數(shù)據(jù)本地加密方案被提出,即用戶先在客戶端完成數(shù)據(jù)加密再同步到遠(yuǎn)程數(shù)據(jù)庫服務(wù)器,例如Secure Dropbox和CryptSync方案。雖然客戶端工具與服務(wù)端結(jié)合可有效解決存儲服務(wù)提供商不完全可信和數(shù)據(jù)明文存儲在服務(wù)端帶來的安全問題,但由于該方案需要用戶參與數(shù)據(jù)加解密的過程,所以給用戶新增了操作負(fù)擔(dān)。郝斐等人基于亞馬遜S3云存儲服務(wù)[5],設(shè)計并實現(xiàn)了一款云存儲安全增強系統(tǒng),客戶端能夠自動加密上傳數(shù)據(jù),因此不會增加用戶操作負(fù)擔(dān)。
為了保護數(shù)據(jù)庫中存儲的結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)加密和訪問控制是熱門的解決辦法。Arasu提出了Cipherbase系統(tǒng)[6],該系統(tǒng)在數(shù)據(jù)庫服務(wù)器集成了一個安全數(shù)據(jù)庫處理單元,該單元是加密數(shù)據(jù)的核心模塊,負(fù)責(zé)管理密鑰以及為數(shù)據(jù)庫服務(wù)器解密、處理和重加密SQL語句。然而,這種方案需要對數(shù)據(jù)庫服務(wù)器進(jìn)行改造,通用性較差。另外,它們都沒有考慮用戶訪問權(quán)限控制的問題。Ferretti提出了一種新的加密方案實現(xiàn)標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫的訪問控制機制[7],在該方案中訪問策略由三元組組成,包括用戶實體、數(shù)據(jù)實體、用戶與數(shù)據(jù)對應(yīng)的訪問矩陣,每個用戶訪問數(shù)據(jù)的權(quán)限由訪問策略決定,每個用戶具有獨特的憑證,該憑證使他僅能夠獲得權(quán)限范圍內(nèi)的相關(guān)加解密密鑰,以便對SQL語句進(jìn)行加密處理和解密獲得的查詢結(jié)果。但是在該模型中,需要維持一個龐大的訪問控制矩陣,當(dāng)增加一個用戶需要為每個數(shù)據(jù)添加一個是否能夠訪問的標(biāo)識,不符合海量數(shù)據(jù)的環(huán)境,并且該方案中加解密操作在客戶端執(zhí)行,不適用于資源受限的客戶端。
3 關(guān)鍵技術(shù)
3.1 透明加解密技術(shù)
透明加解密技術(shù)即為一種相對用戶終端為透明的、不改變用戶習(xí)慣的一種文檔加密技術(shù)。透明加密技術(shù)可分為加密文件系統(tǒng)、過濾驅(qū)動層透明加解密和API Hook透明加解密[8]。加API Hook透明加解密技術(shù)的實現(xiàn)利用了Windows系統(tǒng)提供的一種叫鉤子的消息處理機制,允許應(yīng)用程序安裝一個子程序到其它程序中,以監(jiān)視指定窗口某種類型的消息,當(dāng)消息到達(dá)后,先執(zhí)行完成子程序后再進(jìn)行原程序的執(zhí)行。API Hook透明加解密技術(shù)具有開發(fā)難度低、兼容性高的優(yōu)點,并且有較成熟的實現(xiàn)方案。因此,本方案中采用API Hook透明加解密方法保護非結(jié)構(gòu)化數(shù)據(jù)的安全。
3.2 中間件技術(shù)
目前,實現(xiàn)數(shù)據(jù)庫訪問控制的方法按照實現(xiàn)的執(zhí)行層級劃分有幾種:操作系統(tǒng)層、內(nèi)核層和外層[9]。在數(shù)據(jù)庫管理系統(tǒng)(Database Management System,DBMS)操作系統(tǒng)層實現(xiàn)訪問控制需要對存儲在操作系統(tǒng)中的數(shù)據(jù)庫文件進(jìn)行權(quán)限設(shè)置,然而由于在操作系統(tǒng)層無法識別數(shù)據(jù)之間的邏輯關(guān)系,因此加密需要針對整個數(shù)據(jù)庫,開銷太大。在DBMS內(nèi)核層完成訪問控制需要修改DBMS的內(nèi)核,要求數(shù)據(jù)庫廠商根據(jù)自身產(chǎn)品的需要對內(nèi)核進(jìn)行改造,使之具備訪問控制功能,通用性差。DBMS外層加密是在數(shù)據(jù)庫管理系統(tǒng)和應(yīng)用程序中間加入一個訪問控制中間件,客戶端對數(shù)據(jù)庫的每一次操作都由中間件轉(zhuǎn)化后再交給數(shù)據(jù)庫處理,然后再將數(shù)據(jù)庫返回的結(jié)果交給客戶端。DBMS外層訪問控制方案保護了敏感數(shù)據(jù),不需要對DBMS 服務(wù)器做任何修改,通用性強[10]。因此,考慮數(shù)據(jù)庫中間件的優(yōu)勢,在方案中采用數(shù)據(jù)庫中間件的方法實現(xiàn)訪問控制,保護結(jié)構(gòu)化數(shù)據(jù)的安全。
4 系統(tǒng)設(shè)計與實現(xiàn)
4.1 系統(tǒng)設(shè)計目標(biāo)
數(shù)據(jù)分類管控平臺設(shè)計目標(biāo)是保障企業(yè)結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)的安全。系統(tǒng)設(shè)計目標(biāo)包括四個方面。
(1)數(shù)據(jù)的機密性。透明加解密技術(shù)使得數(shù)據(jù)以密文的形式保存在服務(wù)器端,防止因數(shù)據(jù)竊取造成重要信息泄露。
(2)數(shù)據(jù)的可用性。合法用戶能夠根據(jù)需要查詢、訪問、修改、刪除存儲在平臺的數(shù)據(jù)。
(3)面向存儲平臺、數(shù)據(jù)庫系統(tǒng)和終端用戶的透明性。系統(tǒng)的部署不要求存儲平臺、數(shù)據(jù)庫系統(tǒng)進(jìn)行架構(gòu)更改,也不需要終端用戶改變操作習(xí)慣,這樣在企業(yè)級數(shù)據(jù)庫應(yīng)用中,能夠降低企業(yè)的開發(fā)成本,并且保證用戶操作體驗不變。
(4)存儲平臺的可擴展性。能夠面向第三方存儲平臺,向其提供可選的底層存儲資源。
4.2 總體架構(gòu)設(shè)計
數(shù)據(jù)分類安全管控平臺的總體架構(gòu)設(shè)計如圖1所示,針對結(jié)構(gòu)化數(shù)據(jù)采用字段級的訪問控制,針對非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行集中存儲和透明加密,實現(xiàn)數(shù)據(jù)的統(tǒng)一安全管控。
4.2.1 訪問控制規(guī)則設(shè)計
數(shù)據(jù)分類管控平臺涉及兩種實體,其中用戶為主體,數(shù)據(jù)庫中被訪問的資源(如表、記錄、視圖等)為客體。這兩類實體中的每一個成員按照訪問控制的需要被系統(tǒng)分為多個密級,密級程度逐級增加。系統(tǒng)的訪問控制原則:(1)如果主體向客體發(fā)出讀請求,當(dāng)且僅當(dāng)客體的密級低于主體密級時,該請求才被允許;(2)如果主體向客體發(fā)出寫請求,當(dāng)且僅當(dāng)客體的密級等于主體密級時,該請求才被允許。
按照系統(tǒng)訪問控制原則,具體的訪問控制流程如圖2所示。系統(tǒng)在成功認(rèn)證用戶身份后,首先需要查詢該用戶的安全密級,然后針對非結(jié)構(gòu)化數(shù)據(jù),系統(tǒng)根據(jù)用戶的訪問請求查找客體的安全密級,并根據(jù)強制訪問控制原則允許或者禁止用戶的訪問行為。
針對結(jié)構(gòu)化數(shù)據(jù),系統(tǒng)需要先調(diào)用語句分析模塊對用戶提交的SQL語句內(nèi)容進(jìn)行分析,獲取到其中的關(guān)鍵字后查詢客體的安全密級,并調(diào)用訪問控制模塊對用戶的訪問行為進(jìn)行權(quán)限驗證,最后語句分析模塊將重新整合封裝SQL語句提交到數(shù)據(jù)庫,應(yīng)用數(shù)據(jù)庫根據(jù)SQL語句執(zhí)行數(shù)據(jù)庫查詢并返回結(jié)果。另外,在密級要求很高的系統(tǒng)中,可擴展加解密子模塊,即調(diào)用加密算法對相應(yīng)的字段進(jìn)行加解密。
4.2.2 數(shù)據(jù)庫中間件模塊
(1)語句分析模塊。該模塊基于構(gòu)建的語法樹對用戶的SQL請求進(jìn)行詞法分析,詞法分析的目的是識別SQL語句中的有意義的邏輯單元,如關(guān)鍵字(Select、Insert等)、數(shù)字、函數(shù)名等,然后獲得客體對象,包括表、字段、視圖等,最后將分析結(jié)果交由訪問控制模塊進(jìn)行處理。另外,該模塊還負(fù)責(zé)對SQL語句進(jìn)行重新封裝。
(2)訪問控制模塊。該模塊依據(jù)分析模塊傳遞的數(shù)據(jù)包內(nèi)容查詢客體的安全屬性,并結(jié)合主體安全屬性進(jìn)行訪問控制規(guī)則檢測,如果允許訪問,就將數(shù)據(jù)訪問語句遞交給語句分析模塊對SQL語句進(jìn)行重新封裝,提交給數(shù)據(jù)庫進(jìn)行語句執(zhí)行;如果不允許訪問,就調(diào)用審計模塊進(jìn)行安全審計。
(3)加解密模塊。在密級要求很高的系統(tǒng)中,數(shù)據(jù)庫中的部分字段希望以密文形式存儲,防止內(nèi)部人員的竊取。所以設(shè)計了加解密模塊,其作為一個可拓展模塊,可實現(xiàn)字段級加密,即針對數(shù)據(jù)庫表中部分關(guān)鍵性字段可進(jìn)行選擇性加密保護。
(4)安全審計。在安全審計中包括日志收集、存儲、審計告警。該模塊收集用戶在訪問數(shù)據(jù)庫時產(chǎn)生的日志,覆蓋數(shù)據(jù)全生命周期的各個階段。該模塊還可以對各類日志進(jìn)行歸一化處理,統(tǒng)一日志字段,每一條日志中必須包含訪問主體、主體密級、訪問數(shù)據(jù)對象的表名和字段名、數(shù)據(jù)密級。發(fā)生告警事件后,數(shù)據(jù)管控平臺能快速檢索到與該數(shù)據(jù)相關(guān)的所有日志信息,以縱向時間軸的形式形成證據(jù)鏈呈現(xiàn)給管理員,管理員能夠快速找到告警事件發(fā)生時及發(fā)生之前,對該數(shù)據(jù)操作過的所有人,進(jìn)而追究原因。
4.2.3 透明加解密模塊
(1)對接模塊。實現(xiàn)統(tǒng)一的數(shù)據(jù)訪問接口,該接口對接第三方數(shù)據(jù)存儲平臺,能夠?qū)τ脩羝帘尾煌鎯ζ脚_間文件訪問模式的差異,并支持存儲平臺的擴展。
(2)加解密模塊。該模塊采用Windows系統(tǒng)提供的一種名為鉤子(Hook)的消息處理機制,實時監(jiān)控到達(dá)存儲平臺中的請求,當(dāng)請求到達(dá)指定窗口,鉤子消息處理機制捕獲該請求并取得其控制權(quán),此時鉤子程序使用加密算法對用戶上傳的數(shù)據(jù)進(jìn)行加密,加密完成后繼續(xù)提交。綜合考慮文件加解密速度和數(shù)據(jù)安全級別問題,加解密模塊采用對稱加密算法。然而,對稱加密算法的安全性依賴密鑰的保密性,所以密鑰的安全性至關(guān)重要。系統(tǒng)使用二級密鑰方案保護密鑰安全。其中二級密鑰為數(shù)據(jù)加密密鑰,由系統(tǒng)產(chǎn)生,負(fù)責(zé)加密明文數(shù)據(jù);一級密鑰為用戶密鑰,負(fù)責(zé)加密二級密鑰以保障數(shù)據(jù)加密密鑰的安全。該密鑰管理機制能夠防止惡意用戶直接獲取到數(shù)據(jù)加密密鑰,盡可能的保護數(shù)據(jù)安全。
(3)用戶管理模塊。實現(xiàn)用戶注冊、登錄、用戶信息設(shè)置、記錄用戶操作日志等功能。
4.2.4 其他關(guān)鍵模塊
(1)身份認(rèn)證??蛻舳送ㄟ^用戶提供的賬號和密碼或者證書信息和數(shù)據(jù)庫中間件系統(tǒng)建立連接,身份認(rèn)證模塊接收到待驗證信息后對用戶身份進(jìn)行核查,并將身份認(rèn)證結(jié)果反饋給客戶端,客戶端根據(jù)認(rèn)證結(jié)果同意或者拒絕用戶的訪問請求。
(2)密鑰及規(guī)則管理。該模塊實現(xiàn)了獨立的密鑰管理和訪問規(guī)則管理機制,將密鑰存放于完全可信的密鑰服務(wù)器中,并且將對密鑰和訪問規(guī)則等系統(tǒng)敏感信息的操作和DBMS系統(tǒng)獨立,以實現(xiàn)系統(tǒng)敏感信息與數(shù)據(jù)庫管理系統(tǒng)的分離,保護重要數(shù)據(jù)的安全。
5 系統(tǒng)測試
在數(shù)據(jù)庫中預(yù)置測試表格Notice(Title、Detail、 Author、Dept、Status、Time),該表格安全密級為Level2,模擬用戶Chen對該表執(zhí)行查詢記錄和寫記錄的操作,該用戶的安全密級為Level3,結(jié)果如圖3所示,可以看見由于用戶的密級大于表格的密級,該用戶能夠成功執(zhí)行查詢操作;同時,由于用戶的密級不等于表格的密級,所以在執(zhí)行插入數(shù)據(jù)操作時失敗。模擬用戶上傳100M非結(jié)構(gòu)化數(shù)據(jù)到存儲平臺,透明加解密模塊的加密算法采用3DES算法。實驗結(jié)果表明,系統(tǒng)成功加密上傳的數(shù)據(jù),數(shù)據(jù)以密文形式存放在存儲平臺中,結(jié)果如圖4所示。
6 結(jié)束語
本文針對目前企業(yè)中的數(shù)據(jù)安全防護問題,設(shè)計并實現(xiàn)了一套應(yīng)用數(shù)據(jù)分類管控平臺。該平臺通過在數(shù)據(jù)庫和用戶間引入分級訪問控制中間層以及在文件存儲平臺和用戶間引入透明加解密模塊,實現(xiàn)了對企業(yè)結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的保護。方案的優(yōu)點在于解決了數(shù)據(jù)庫權(quán)限濫用的隱患,保障了數(shù)據(jù)的存儲安全,并具有對用戶透明,部署便捷的優(yōu)勢。本文為企業(yè)數(shù)據(jù)安全保障提供了一種新的實現(xiàn)思路,在工程應(yīng)用中具有重要意義。
基金項目:
1.北京市科技計劃(D161100003316002);
2.國家重點研發(fā)計劃(2016YFB0800605)。
參考文獻(xiàn)
[1] 馮朝勝,秦志光,袁丁.云數(shù)據(jù)安全存儲技術(shù)[J].計算機學(xué)報, 2015, 38(1):150-163.
[2] 王會波. 存儲與云存儲安全[J].信息安全與通信保密, 2010(12):18-19.
[3] 張敏.數(shù)據(jù)庫安全研究現(xiàn)狀與展望[J].中國科學(xué)院院刊, 2011, 26(3): 303-309.
[4] 陳釗.基于云災(zāi)備的數(shù)據(jù)安全存儲關(guān)鍵技術(shù)研究[D].北京郵電大學(xué), 2012.
[5] 郝斐,王雷,荊繼武.云存儲安全增強系統(tǒng)的設(shè)計與實現(xiàn)[J].信息網(wǎng)絡(luò)安全, 2012, (3):38-41.
[6] Arasu A, Eguro K, Joglekar M. Transaction processing on confidential data using cipherbase[J]. IEEE International Conference on Data Engineering, 2015: 435-446.
[7] Ferretti L, Pierazzi F, Colajanni M. Security and confidentiality solutions for public cloud database services[C]. Proc. 7th Conf. Emerging Security Information, Systems and Technologies, Barcellona, Spain, August 2013.
[8] 李丹,薛銳,陳馳.基于透明加解密的密文云存儲系統(tǒng)設(shè)計與實現(xiàn)[J].網(wǎng)絡(luò)新媒體技術(shù), 2015(5): 26-32.
[9] 安然,陳馳,徐震.數(shù)據(jù)庫加密中間件的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計, 2009, 30(14) : 3261-3265.
[10] 楊飛.分布式數(shù)據(jù)庫中間件DBScale的設(shè)計與實現(xiàn)[D]. 哈爾濱工業(yè)大學(xué), 2015.