深度解析數(shù)據(jù)庫透明加密(一)
數(shù)據(jù)庫(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫,數(shù)據(jù)是信息系統(tǒng)中最核心的財產(chǎn)。數(shù)據(jù)庫好比人的大腦,是所有信息系統(tǒng)的核心。一旦大腦受到破壞,勢必會影響到整個人的身體機能。同樣地,如果數(shù)據(jù)庫中的數(shù)據(jù)丟失、破壞或泄漏,勢必會給企業(yè)帶來難以估量的損失。因此對數(shù)據(jù)庫中數(shù)據(jù)的加密保護, 成為了數(shù)據(jù)庫安全的重要內(nèi)容。
一、什么是數(shù)據(jù)庫加密?
數(shù)據(jù)庫加密是指將存儲于數(shù)據(jù)庫中的數(shù)據(jù),尤其是敏感數(shù)據(jù),以加密的方式進行存儲。本文所說的數(shù)據(jù)庫加密都是指數(shù)據(jù)庫透明加密。
二、什么是數(shù)據(jù)庫透明加密?
數(shù)據(jù)庫透明加密是指對庫內(nèi)數(shù)據(jù)的加密和解密,對數(shù)據(jù)庫的訪問程序是完全無感知的。特別是應(yīng)用系統(tǒng),不需要做任何修改和編譯,就能夠直接應(yīng)用到加密庫上。
與透明加密相對應(yīng)的,是在應(yīng)用系統(tǒng)中對數(shù)據(jù)進行加密,然后再存儲到數(shù)據(jù)庫中。需要真實數(shù)據(jù)的時候,從數(shù)據(jù)庫中讀取密文,再解密出明文。嚴(yán)格的說,這種方式并不是數(shù)據(jù)庫加密,而是數(shù)據(jù)加密。
三、為什么要對數(shù)據(jù)庫進行加密?
文章開頭已經(jīng)介紹了數(shù)據(jù)庫和數(shù)據(jù)的重要性,所以對數(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ù),通常所承載的是非常集中且極有價值的信息,因而對其進行加密保護尤為重要。
面對敏感數(shù)據(jù)頻繁泄漏的嚴(yán)峻現(xiàn)實,雖然加解密過程將損害數(shù)據(jù)庫的使用效率,但對數(shù)據(jù)庫進行加密仍是不得不為的必要防護措施。數(shù)據(jù)庫加密能夠顯著提升數(shù)據(jù)庫的安全性。加密后,數(shù)據(jù)以密文的方式存儲,防止了數(shù)據(jù)直接暴露,同時增強對加密數(shù)據(jù)的訪問控制,大大降低了數(shù)據(jù)被泄漏和惡意破壞的風(fēng)險。

四、數(shù)據(jù)庫加密有哪些實現(xiàn)方式,特性如何?

數(shù)據(jù)庫加密的實現(xiàn)方式共有六種,具體介紹如下:
全盤加密:采用全盤加密系統(tǒng)或者存儲加密網(wǎng)關(guān)系統(tǒng),將數(shù)據(jù)庫文件所在的磁盤扇區(qū)進行加密。當(dāng)數(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)過加密后存儲到磁盤上。當(dāng)數(shù)據(jù)庫訪問存儲文件的時候,再進行解密。這種方式對于數(shù)據(jù)庫自身來說也是透明的,數(shù)據(jù)庫管理系統(tǒng)也感覺不到加密解密過程的存在。這種加密方式能防止磁盤丟失和文件被復(fù)制導(dǎo)致的敏感數(shù)據(jù)泄漏。但是,對于控制了數(shù)據(jù)庫系統(tǒng)的攻擊者來說,文件還是開放的,因而也沒有真正的防護能力。
數(shù)據(jù)庫自帶加密:某些數(shù)據(jù)庫自身提供了加密機制,在數(shù)據(jù)庫內(nèi)核實現(xiàn)了存儲的加密。這種加密方式能防止磁盤丟失和文件被復(fù)制導(dǎo)致的敏感數(shù)據(jù)泄漏。但是,對于控制了數(shù)據(jù)庫系統(tǒng)的攻擊者來說卻是開放的,并沒有防護能力。而且其密鑰管理通常不會對數(shù)據(jù)庫用戶開放,安全性得不到保證,也得不到國內(nèi)相關(guān)評測機構(gòu)的認(rèn)可。
庫內(nèi)擴展加密:通過使用視圖、觸發(fā)器、擴展索引等機制,實現(xiàn)透明加密。由于引入了獨立于數(shù)據(jù)庫的第三方程序,通過控制加密解密的權(quán)限,增加了額外的訪問控制。對于數(shù)據(jù)庫內(nèi)不同的用戶,也可以控制其對加密數(shù)據(jù)的訪問。但是這種加密方式不能越過應(yīng)用系統(tǒng),實現(xiàn)應(yīng)用系統(tǒng)用戶對敏感數(shù)據(jù)的訪問控制。而且這種加密方式依賴于數(shù)據(jù)庫系統(tǒng)的擴展索引機制,并不能在所有數(shù)據(jù)庫上實現(xiàn)。
數(shù)據(jù)庫加密網(wǎng)關(guān)或加密驅(qū)動:通過對數(shù)據(jù)庫前端部署數(shù)據(jù)庫加密網(wǎng)關(guān),或者通過擴展數(shù)據(jù)庫訪問驅(qū)動(如JDBC驅(qū)動)實現(xiàn)數(shù)據(jù)庫加密。這種方式理論上能夠支持所有的數(shù)據(jù)庫,是一種通用的解決方案,且安全性更高。但是對于所有訪問語句和訪問機制卻難以全部支持,例如對于網(wǎng)關(guān)之后的存儲過程和觸發(fā)器都無法支持。
應(yīng)用加密網(wǎng)關(guān):在應(yīng)用系統(tǒng)之前放置加密網(wǎng)關(guān),進一步將數(shù)據(jù)加密的位置提前,在數(shù)據(jù)進入應(yīng)用系統(tǒng)之前進行加密。這種加密方式可以控制應(yīng)用系統(tǒng)的用戶對數(shù)據(jù)的訪問權(quán)限,并且真實數(shù)據(jù)對所有數(shù)據(jù)庫用戶都是不可見的,是最安全的一種加密方式。事實上,這種加密方式與具體的數(shù)據(jù)庫無關(guān),是對立與數(shù)據(jù)庫的。但是由于應(yīng)用系統(tǒng)的復(fù)雜性,實現(xiàn)的難度也較大。
總之,數(shù)據(jù)被加密的位置離用戶越近,安全性越高,同時實現(xiàn)的難度也越大。以上所述的幾種加密方式,數(shù)據(jù)加密的位置離用戶是逐步靠近的,防護能力也是逐步提升的。
目前國內(nèi)數(shù)據(jù)庫安全市場主流的數(shù)據(jù)庫加密方式是庫內(nèi)擴展加密,本文中,如果沒有特別指出,都特指這種加密方式。
有關(guān)數(shù)據(jù)庫透明加密的其他相關(guān)問題,會在后續(xù)文章中一一介紹,敬請關(guān)注。








