關于數據庫加密,你不能不知道的秘密(一)
前言
數據庫是所有信息系統的核心,數據庫的安全通常是指其中所存數據的安全,是網絡安全、信息安全的重要組成部分。而對數據庫中數據的加密保護,是數據庫安全的重要內容。但是數據庫加密具有相對較高的技術門檻,對于廣大用戶、甚至是信息安全從業人員來說都比較神秘。本文希望通過幾個相關問題的分析,來幫助大家揭開數據庫加密的神秘面紗。
1. 什么是數據庫加密?
數據庫加密是指將存儲于數據庫中的數據,尤其是敏感數據,以加密的方式進行存儲。
2. 為什么要對數據庫加密?
數據是信息系統中最核心的資產,數據的丟失、破壞或泄漏,很可能會給企業帶來難以估量的損失。對敏感數據進行加密是數據安全防護中最核心的手段之一。數據類型分兩種,一種是非結構化數據,比如文檔和圖片,另一種是結構化數據,比如數據庫中的數據。這兩種形態的數據都非常重要,都需要進行加密保護。而結構化數據,通常所承載的是非常集中且極有價值的信息,因而對其進行加密保護尤為重要。而且,由于國內所使用的數據庫管理系統大都是國外產品,出于安全可控的考慮,在國產數據庫尚不能完全取代國外產品的現階段,尤其需要一款純國產的數據庫加密產品。面對敏感數據頻繁泄漏的嚴峻現實,雖然加解密過程將損害數據庫的使用效率,但對數據庫進行加密仍是不得不為的必要防護措施。數據庫加密能夠顯著提升數據庫的安全性。加密后,數據以密文的方式存儲,防止了數據直接暴露,同時增強對加密數據的訪問控制,大大降低了數據被泄漏和惡意破壞的風險。
3. 國內數據庫加密產品經歷了哪些階段?
國內數據庫加密產品的發展可以分為三個階段:
第一個階段是摸索階段。在2003年之前,國內的數據庫加密手段是通過反編譯國外安全數據庫系統完成的。國外安全版本的數據庫系統具有加密功能,有國內技術人員對其進行逆向工程,加入國產加密算法,即完成了“國產化”。該加密手段在國內某些敏感部門曾進行了小范圍的應用,達到了一定的效果。但隨著數據庫安全技術的進一步發展,目前已退出市場。
第二階段是國外產品導入國內市場以及國產數據庫加密產品萌芽階段。從2003年開始,幾家國外的數據庫加密產品廠商,為了進入中國市場,將產品界面進行“中國化”,經由香港進入國內市場。但由于國家保密政策的限制,這些被偽裝成國產的數據庫加密產品并沒有在國內數據庫安全市場大行其道,反而逐漸銷聲匿跡。據作者所知,國內大概還有一兩家“國產化”的外國數據庫加密產品在市場銷售,但也是局限在很小的一個范圍內,無法被國內用戶廣泛接受。但在這一階段,逐漸有國內科研人員開始進行數據庫加密技術的研究。2009年已有數據庫加密技術的專利發明出現。其中北京理工大學戴林副教授的“一種支持密文索引的數據庫透明加密方法”被學術界認為是國內數據庫加密技術研究中最早最重要的一個專利發明。隨后,國內陸續有研發團隊開始進行數據庫加密產品的開發,雖說與國外頂級技術有不小差距,但畢竟是邁出了非常重要的第一步。
第三個階段是國產數據庫加密技術逐步產品化并走向市場的階段。從2010年開始,隨著科研成果的產業化,國內市場開始出現純國產的數據庫加密產品。經過市場的磨練,產品越來越成熟,越來越為數據庫安全運維人員所接受。不難預見,假以時日,數據庫加密產品將成為數據庫安全市場的重要力量,甚至能取代數據庫審計產品和數據庫防火墻產品的市場地位,成為數據庫安全市場的寵兒。
4. 何為數據庫透明加密?
數據庫透明加密是指對庫內數據的加密和解密,對數據庫的訪問程序是完全無感知的。特別是應用系統,不需要做任何修改和編譯,就能夠直接應用到加密庫上。
與透明加密相對應的,是在應用系統中對數據進行加密,然后再存儲到數據庫中。需要真實數據的時候,從數據庫中讀取密文,再解密出明文。嚴格的說,這種方式并不是數據庫加密,而是數據加密。
本文所指的數據庫加密都是指透明加密。
5. 數據庫加密實現方式有哪些,特性如何?
全盤加密:采用全盤加密系統或者存儲加密網關系統,將數據庫文件所在的磁盤扇區進行加密。當數據庫訪問磁盤扇區的時候,對加密扇區再進行解密。這種方式對于數據庫自身來說是透明的,數據庫管理系統也感覺不到加密解密過程的存在。這種加密方式工作在存儲層,僅能防止磁盤丟失時敏感數據遭受泄漏。所有對磁盤具有訪問權限的用戶都可以訪問到真實的數據庫文件。因而,對于控制了操作系統的攻擊者來說,并沒有防護能力。
文件加密:在操作系統文件驅動層將數據庫的存儲文件經過加密后存儲到磁盤上。當數據庫訪問存儲文件的時候,再進行解密。這種方式對于數據庫自身來說也是透明的,數據庫管理系統也感覺不到加密解密過程的存在。這種加密方式能防止磁盤丟失和文件被復制導致的敏感數據泄漏。但是,對于控制了數據庫系統的攻擊者來說,文件還是開放的,因而也沒有真正的防護能力。
數據庫自帶加密:某些數據庫自身提供了加密機制,在數據庫內核實現了存儲的加密。這種加密方式能防止磁盤丟失和文件被復制導致的敏感數據泄漏。但是,對于控制了數據庫系統的攻擊者來說卻是開放的,并沒有防護能力。而且其密鑰管理通常不會對數據庫用戶開放,安全性得不到保證,也得不到國內相關評測機構的認可。
庫內擴展加密:通過使用視圖、觸發器、擴展索引等機制,實現透明加密。由于引入了獨立于數據庫的第三方程序,通過控制加密解密的權限,增加了額外的訪問控制。對于數據庫內不同的用戶,也可以控制其對加密數據的訪問。但是這種加密方式不能越過應用系統,實現應用系統用戶對敏感數據的訪問控制。而且這種加密方式依賴于數據庫系統的擴展索引機制,并不能在所有數據庫上實現。
數據庫加密網關或加密驅動:通過對數據庫前端部署數據庫加密網關,或者通過擴展數據庫訪問驅動(如JDBC驅動)實現數據庫加密。這種方式理論上能夠支持所有的數據庫,是一種通用的解決方案,且安全性更高。但是對于所有訪問語句和訪問機制卻難以全部支持,例如對于網關之后的存儲過程和觸發器都無法支持。
應用加密網關:在應用系統之前放置加密網關,進一步將數據加密的位置提前,在數據進入應用系統之前進行加密。這種加密方式可以控制應用系統的用戶對數據的訪問權限,并且真實數據對所有數據庫用戶都是不可見的,是最安全的一種加密方式。事實上,這種加密方式與具體的數據庫無關,是對立與數據庫的。但是由于應用系統的復雜性,實現的難度也較大。
總之,數據被加密的位置離用戶越近,安全性越高,同時實現的難度也越大。以上所述的幾種加密方式,數據加密的位置離用戶是逐步靠近的,防護能力也是逐步提升的。
目前國內數據庫安全市場主流的數據庫加密方式是庫內擴展加密,本文中,如果沒有特別指出,都特指這種加密方式。
6. 數據庫加密能解決哪些具體問題?
數據庫加密能夠通過有效的解決如下問題,來提升數據庫的安全性:
1) 防止數據庫文件被下載或者復制、以及直接分析數據文件導致的數據泄漏和破壞。由于敏感數據被加密,任何直接對數據庫文件進行分析的攻擊方式,都只能看到密文。
2) 防止DBA或高權限帳號密碼泄露導致的數據泄漏和破壞。DBA或者高權限賬號被攻擊者獲取后,雖然攻擊者能夠得到數據庫中的全部數據,但是由于敏感數據是被加密的,所以仍然不能獲得明文。或者攻擊者試圖修改授權用戶的訪問密碼進行身份偽造攻擊,但是加密系統額外的身份認證機制能夠對這種偽造身份進行識別,致使攻擊者仍然無法獲取真實數據。
3) 部分的防止SQL注入方式拖庫泄漏全庫數據和數據破壞。SQL注入攻擊者通過拖庫獲取全部數據庫內容,但是只能獲取到攻擊時所使用的用戶所對應的明文權限,對于該用戶不具有權限的敏感數據,攻擊者仍然不能訪問。
4) 實現多因子身份認證和授權,彌補僅由口令驗證方式安全性不足的缺陷。可以增加對應用系統、時間、IP地址、用戶名等多種因子的身份認證和授權管理。
7. 數據庫加密不能解決什么問題?
雖然數據庫透明加密能夠顯著的提升數據庫的安全性,但是并不能解決所有的數據庫安全問題:
1) 不能完全阻止SQL注入攻擊。SQL注入攻擊者如果使用應用系統訪問數據庫的授權用戶對數據庫發起攻擊,則能夠獲得加密系統對該用戶的相應授權,能夠訪問到該授權項下的敏感數據。
2) 不能完全阻止攻擊者偽造身份對數據庫的攻擊。當攻擊者通過社交工程,完全竊取并偽造了具有對敏感數據合法訪問權限的用戶的帳號、密碼、以及應用系統、IP信息時,數據庫加密將不能對其訪問進行限制。
3) 不能完全阻止授權應用系統后門程序對數據庫的違規訪問。當應用系統被授權訪問敏感數據,但是被開發者留有后門時,數據庫加密系統并不能識別這種后門并加以阻止。
其他相關問題,例如“如何彌補數據庫加密系統對數據庫保護的不足?”“數據庫加密的關鍵技術有哪些?”“數據庫加密系統的關鍵指標有哪些?”等等,我們將在后續文章中繼續闡述。敬請關注。