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