基於雲存儲的數據庫安全備份系統
來源:信息網絡安全雜志 更新時間:2014-03-19
 
文章針對采用第三方雲存儲服務進行數據庫遠程實時備份時對數據機密性、完整性和可用性的需求,設計了一種數據庫安全備份系統,采用用戶自主密鑰管理方法,實現雲備份數據庫的記錄級數據加密,並能保證每條備份記錄的完整性。
    1.背景介紹
  隨著移動寬帶、雲計算等信息技術的發展,電子商務、電子政務等信息化應用已深入社會生活的各個方面,業務系統持續可靠運行成為信息系統運維與建設的一個重要指標,保持業務數據的可用性是必須考慮的重要方面。業界對數據庫和數據備份技術進行了廣泛研究,已有大量軟件廠商針對數據庫的備份恢復需求開發了專門的軟件產品。以oracle數據庫為例,存在各種備份恢復軟件,如Veritas公司的VeritasNetBackup、Legato公司的LegatoNetworkerModuleforOracle等。數據備份之後為實現容災備份需要建設同城或異地的容災備份中心,但許多小規模企業、初創公司或基層單位在信息化建設方面投入有限,對於短期內無法看見成效的災難恢復系統基本沒有預算,其信息系統不具備容災備份能力。雲計算技術具有資源虛擬化、彈性分配和多租戶共享的特點,計算、存儲、網絡和軟件等資源可以作為服務對第三方提供,因而還具有門檻低、接入方便、能夠有效減少客戶投入的特點。采用以雲計算為支撐的雲存儲服務為第三方提供災難備份成為數據容災領域的一個熱點。雲存儲服務需要將數據上傳到雲中,物理存儲位置已脫離用戶網絡範圍,用戶無法再對數據的物理存儲層進行全面控制和管理,使得雲用戶對數據的安全可控存在質疑。多項研究顯示,雲存儲服務的安全性和雲計算服務的安全性已成為制約雲計算發展的關鍵要素之一,已經影響到用戶是否采用這項技術。2008年AmazonS3雲存儲系統停機8小時,導致雲服務失效並丟失部分客戶的資料;2011年4月SONY公司系統因安全問題導致用戶數據外漏。這些事件敲響了雲計算與雲存儲環境的安全性問題的警鐘,限制了雲服務模式的推廣和應用。以第三方提供災備服務是一種新的運營模式,在處理災備數據時產生了新的安全要求。
  雲環境下數據存儲於用戶不完全可控的環境,采用數據加密是確保數據安全的有效方法。由於雲存儲服務商的不可信,數據加/解密過程不應在雲端完成而應在用戶端完成,這樣即便雲端數據不幸泄露或丟失,也難以被人破解。采用雲存儲服務實現數據庫實時備份需要設計一套加密備份和恢復模塊,實現數據在雲端的加密存儲,實現備份數據可用性的高效檢測。
  2.總體技術方案
  用雲存儲的數據庫實時備份系統的網絡結構如圖1所示,用戶數據庫數據通過網絡備份到雲存儲服務中心,由雲存儲服務中心提供的數據庫服務提供備份數據的管理。雲存儲服務提供彈性的用戶存儲空間、網絡、計算等性能管理,利用雲計算自身的分布式和多機冗余方式提供數據存儲的可靠性。采用雲備份提高了系統資源的使用效率,降低了容災備份的建設和運維成本。
 圖1 數據庫雲備份的網絡結構 放大圖片
圖1 數據庫雲備份的網絡結構
  為解決雲存儲帶來的數據安全問題,本文設計了如圖2所示的數據明文和密文環境加密方案。用戶的源數據庫為明文,雲端備份數據庫為密文,通過加密備份和恢復模塊實現數據庫記錄的加密和解密,加解密密鑰由該模塊自動管理。
 圖2 數據庫明密文環境 放大圖片
圖2 數據庫明密文環境
  數據庫是典型的結構化數據,需結合數據特點,對加密算法、粒度以及模式進行合理選擇。對數據庫進行加密一般要求做到如下幾個方面:
  1)加密有足夠的強度,確保數據庫加密後密文數據在盡量長的時間內不可破譯;
  2)密文數據的存儲空間與明文數據的存儲空間相比不應明顯增大;
  3)數據加解密性能要高,尤其是數據解密速度,應不能顯著影響原有應用系統性能,降低用戶體驗;
  4)數據庫系統對密文數據具有靈活的用戶授權管理機制;
  5)密鑰管理機制既能提供密鑰生成、存儲、分配和銷毀的安全管理,又能保證用戶能夠方便使用。
  基於數據文件、基於表記錄和基於列字段的加密方式是常見的數據庫加密技術,各具特點。基於文件的數據庫加密技術采用整個數據庫文件作為加解密操作單元,用戶就算只是需要查看某一條記錄,他也必須將整個數據庫文件解密,這與數據庫權限分配管理相衝突,實際中使用較少。基於記錄的數據庫加密技術以數據庫的記錄作為加解密操作單元,可以對一個完整記錄項進行加密和解密,但無法實現對一個記錄中單個字段進行加解密。基於字段的數據庫加密技術以字段作為加解密操作單元,具有最小的加密粒度,數據加密的靈活性和適應性非常好。數據庫對每個字段可以采用不同密鑰的加密方式,這樣需要的密鑰數為字段個數和記錄個數的乘積,由於密鑰量龐大,實際中難以實現有效管理。
  本文針對數據庫實時備份的需求即源端和雲端的數據在記錄級必須保持實時同步,選擇采用記錄級數據加密。由於雲存儲方式下又適合采用數據庫系統外部加密的方式,因此,本文采用系統外部加密的數據庫記錄級加密方案。
  2.1 加密備份和恢復模塊總體結構
  加密備份和恢復模塊分為以下幾個部分:1)密鑰管理部分。負責產生、存儲和定期更新密鑰。2)加解密部分。負責使用密鑰對數據記錄進行加密、完整性計算與驗證。3)備份部分。對數據庫的增量數據進行檢測或按照全量備份的策略進行所需數據的備份操作,調用加解密部分進行加密。4)恢復部分。對雲備份數據庫按照恢復策略進行數據恢復,調用加解密部分進行解密。5)可用性檢驗部分。對雲備份數據庫進行隨機數據記錄檢索,解密後與源端記錄進行比較,檢查備份數據的可用性。
  2.2 密鑰管理功能
  源數據庫管理員對數據庫記錄加密後實時備份到雲端的備份加密數據庫,每個源庫使用一個數據加密密鑰(k)和初始向量(IV)。k和IV定期進行更換,更換周期與備份策略同步。為了保證k和IV的安全,在智能密碼鑰匙USB-Key中生成和存儲k和IV。USB-Key是一種經過國家密碼管理機構安全認定的專用密碼硬件,具備加密計算、隨機數生成、密鑰安全存儲、數字簽名等多種功能。每個USB-Key自主生成一對RSA密鑰為主密鑰,主密鑰用於加密k和IV。利用USBKey的隨機數生成功能,截取兩端256位隨機數為密鑰k和初始向量IV。當前有效的k和IV存放於USB-Key的安全存儲區內,其他歷史k和IV經過RSA加密後以文件方式存放。
  2.3 加密功能
  加密算法是數據加密的核心,加密算法產生的密文應具備頻率平衡、隨機無重碼的特征,攻擊者難以通過對密文頻率、重碼等特征進行分析破譯密文。加密算法通常分為對稱算法和非對稱算法兩種,在對數據庫數據進行加密時,其性能要求使得對稱加密算法應用更為廣泛。序列密碼和分組密碼是兩類主要對稱算法,序列密碼在運算速度上較快,但密鑰序列不能重復,密鑰的生成和管理限制了它在實際中的使用。分組密碼是在明文分組和密文分組上進行運算,常見的加密算法有DES、3DES和AES等。分組密碼算法主要有4種模式,分別是電子密碼本(ECB)、密碼分組鏈接模式(CBC)、加密反饋(CFM)和輸出反饋模式(OFM)。數據庫中的記錄具有相同結構,就有可能存在大量相同內容。例如,人口屬性中有性別和籍貫,大量記錄就會導致相同的性別、相同的籍貫。
  加密後的數據記錄應該為不同密文,否則相同密文信息容易泄露明文信息,會有助於針對密鑰的攻擊,因此算法設計時應該避免記錄內字段特性的信息隱藏。此外還要選擇合適的加密數據封裝方式和合適的數據加密方法。本方案以數據記錄為加密單元,采用AES-OFM加密模式。
  完整性校驗主要分為帶認證和不帶認證兩種。雲端數據庫插入數據記錄時需要對數據記錄的完整性進行檢驗,本方案采用哈希算法實現。常見的哈希算法有MD5和SHA-1等。數據加密後的完整性需要通過檢驗字段來校驗,並選擇性能高的算法來實現,本方案采用MD5算法。加密數據記錄的封裝方式為記錄主鍵不加密,後續數據全部加密。加密後的數據記錄由3部分構成:記錄主鍵、加密數據記錄和完整性校驗數據。加密算法采用AES-OFM,加密的範圍是主鍵之外的數據記錄的所有值。完整性校驗采用MD5,完整性校驗範圍為主鍵和加密數據記錄。
  2.4 備份和恢復功能
  數據備份有全量備份和增量兩種方式。全量備份方式是某時刻下通過導出工具對全庫進行備份快照,備份工具對數據庫備份快照進行全庫、表和記錄級的掃描,加密並傳輸到雲端,檢驗數據的完整性後增加到雲端數據庫中。
  增量備份過程與全量備份過程相似,只是增量備份的數據記錄的處理觸發是通過監視數據庫的數據變動日志來實現。當數據庫對記錄進行增、刪、改等操作時,每個操作的命令和參數被記錄,並觸發一次備份模塊的增量備份操作,操作命令和參數通過加密處理轉變為對雲端備份數據庫的一次遠端操作,保持了源端和雲端數據操作的一致性。
  數據的恢復過程是備份的逆過程即數據從雲端經過解密後恢復到源端。
  2.5 可用性檢驗功能
  備份數據的可用性是指備份在雲端的數據是否與源端數據保持一致,若保持一致,則認為備份數據是可用的。在數據備份過程中,數據加密後存儲在雲端,由於對雲端服務的可靠性缺少相關評價標准,因而需要設計一種方案能夠檢驗數據的有效性。對雲端數據記錄進行遍歷,並逐一和源端數據對比檢查的方案代價高昂,需要占用源端資源、網絡資源和雲端資源。可以通過定期隨機抽取數據記錄的方式代替全檢,若出現不一致的數據記錄,則縮短定期檢查的時間間隔;若長期抽檢記錄都能保持一致,則可以擴大定期檢查的時間間隔。一個具體的記錄可以通過三元素(數據文件位置、表位置、記錄位置)來明確。方案具體描述如下:
  1)確認抽檢時間間隔為T,並記錄累計相符記錄數為n,當時間間隔達到T時,開始一次新的抽查。
  2)隨機生成抽檢記錄的位置。假設雲中備份庫文件總數為sum1,指定庫文件的數據表總數為sum2,指定表的記錄總數為sum3。生成3個隨機數r1,r2,r3,r1對sum1求模得f_no,r2對sum2求模得t_no,r3對sum3求模得r_no。得到的(f_no,t_no,r_no)標記了一條隨機產生的抽檢記錄的位置。
  3)在雲端獲得(f_no,t_no,r_no)位置的記錄值,返回記錄主鍵和加密數據記錄。通過解密模塊解密得到記錄主鍵和數據記錄(key_cloud,rec_cloud)。
  4)在源端獲得(f_no,t_no,r_no)位置的記錄值(key,rec)。
  5)比對雲端(key_cloud,rec_cloud)和源端(key,rec)。若兩者一致,則n增加1,且判斷n是否大過一個門限,若大過門限,則將T增大一倍。若兩者不一致,則n清0,並且將T縮小一半。完成一次抽檢。
  3.結束語
  中小企業存在對信息系統容災備份的迫切需求,但苦於成本效益因素的影響,此需求無法得到廣泛的滿足。雲存儲的出現降低了容災中心的成本,但安全性是首先需要解決的問題。本文提出的數據庫記錄級加密實時備份方案能夠將數據庫記錄加密後存儲到雲端,並且由於密鑰由源端用戶自主管理,雲端無法知曉和破解,確保了數據的安全性。同時對雲端備份數據的可用性提供了一種低成本的隨機數據可用性檢驗方法,為雲端備份數據的可用性提供了保障。本文提出的是一種節約成本的雲容災備份實現方案,可廣泛在中小企業中推廣使用。