數據庫透明加密是指對庫內數據的加密和解密,對數據庫的訪問程序是完全無感知的。特別是應用系統,不需要做任何修改和編譯,就能夠直接應用到加密庫上。與透明加密相對應的,是在應用系統中對數據進行加密,然后再存儲到數據庫中。需要真實數據的時候,從數據庫中讀取密文,再解密出明文。嚴格的說,這種方式并不是數據庫加密,而是數據加密。
數據庫加密實現方式有:
全盤加密:采用全盤加密系統或者存儲加密網關系統,將數據庫文件所在的磁盤扇區進行加密。當數據庫訪問磁盤扇區的時候,對加密扇區再進行解密。這種方式對于數據庫自身來說是透明的,數據庫管理系統也感覺不到加密解密過程的存在。這種加密方式工作在存儲層,僅能防止磁盤丟失時敏感數據遭受泄漏。所有對磁盤具有訪問權限的用戶都可以訪問到真實的數據庫文件。因而,對于控制了操作系統的攻擊者來說,并沒有防護能力。
文件加密:在操作系統文件驅動層將數據庫的存儲文件經過加密后存儲到磁盤上。當數據庫訪問存儲文件的時候,再進行解密。這種方式對于數據庫自身來說也是透明的,數據庫管理系統也感覺不到加密解密過程的存在。這種加密方式能防止磁盤丟失和文件被復制導致的敏感數據泄漏。但是,對于控制了數據庫系統的攻擊者來說,文件還是開放的,因而也沒有真正的防護能力。
數據庫自帶加密:某些數據庫自身提供了加密機制,在數據庫內核實現了存儲的加密。這種加密方式能防止磁盤丟失和文件被復制導致的敏感數據泄漏。但是,對于控制了數據庫系統的攻擊者來說卻是開放的,并沒有防護能力。而且其密鑰管理通常不會對數據庫用戶開放,安全性得不到保證,也得不到國內相關評測機構的認可。
庫內擴展加密:通過使用視圖、觸發器、擴展索引等機制,實現透明加密。由于引入了獨立于數據庫的第三方程序,通過控制加密解密的權限,增加了額外的訪問控制。對于數據庫內不同的用戶,也可以控制其對加密數據的訪問。但是這種加密方式不能越過應用系統,實現應用系統用戶對敏感數據的訪問控制。而且這種加密方式依賴于數據庫系統的擴展索引機制,并不能在所有數據庫上實現。
數據庫加密網關或加密驅動:通過對數據庫前端部署數據庫加密網關,或者通過擴展數據庫訪問驅動(如JDBC驅動)實現數據庫加密。這種方式理論上能夠支持所有的數據庫,是一種通用的解決方案,且安全性更高。但是對于所有訪問語句和訪問機制卻難以全部支持,例如對于網關之后的存儲過程和觸發器都無法支持。
應用加密網關:在應用系統之前放置加密網關,進一步將數據加密的位置提前,在數據進入應用系統之前進行加密。這種加密方式可以控制應用系統的用戶對數據的訪問權限,并且真實數據對所有數據庫用戶都是不可見的,是最安全的一種加密方式。事實上,這種加密方式與具體的數據庫無關,是對立與數據庫的。但是由于應用系統的復雜性,實現的難度也較大。
回答所涉及的環境:聯想天逸510S、Windows 10。
數據庫透明加密是指對庫內數據的加密和解密,對數據庫的訪問程序是完全無感知的。特別是應用系統,不需要做任何修改和編譯,就能夠直接應用到加密庫上。與透明加密相對應的,是在應用系統中對數據進行加密,然后再存儲到數據庫中。需要真實數據的時候,從數據庫中讀取密文,再解密出明文。嚴格的說,這種方式并不是數據庫加密,而是數據加密。
數據庫加密實現方式有:
全盤加密:采用全盤加密系統或者存儲加密網關系統,將數據庫文件所在的磁盤扇區進行加密。當數據庫訪問磁盤扇區的時候,對加密扇區再進行解密。這種方式對于數據庫自身來說是透明的,數據庫管理系統也感覺不到加密解密過程的存在。這種加密方式工作在存儲層,僅能防止磁盤丟失時敏感數據遭受泄漏。所有對磁盤具有訪問權限的用戶都可以訪問到真實的數據庫文件。因而,對于控制了操作系統的攻擊者來說,并沒有防護能力。
文件加密:在操作系統文件驅動層將數據庫的存儲文件經過加密后存儲到磁盤上。當數據庫訪問存儲文件的時候,再進行解密。這種方式對于數據庫自身來說也是透明的,數據庫管理系統也感覺不到加密解密過程的存在。這種加密方式能防止磁盤丟失和文件被復制導致的敏感數據泄漏。但是,對于控制了數據庫系統的攻擊者來說,文件還是開放的,因而也沒有真正的防護能力。
數據庫自帶加密:某些數據庫自身提供了加密機制,在數據庫內核實現了存儲的加密。這種加密方式能防止磁盤丟失和文件被復制導致的敏感數據泄漏。但是,對于控制了數據庫系統的攻擊者來說卻是開放的,并沒有防護能力。而且其密鑰管理通常不會對數據庫用戶開放,安全性得不到保證,也得不到國內相關評測機構的認可。
庫內擴展加密:通過使用視圖、觸發器、擴展索引等機制,實現透明加密。由于引入了獨立于數據庫的第三方程序,通過控制加密解密的權限,增加了額外的訪問控制。對于數據庫內不同的用戶,也可以控制其對加密數據的訪問。但是這種加密方式不能越過應用系統,實現應用系統用戶對敏感數據的訪問控制。而且這種加密方式依賴于數據庫系統的擴展索引機制,并不能在所有數據庫上實現。
數據庫加密網關或加密驅動:通過對數據庫前端部署數據庫加密網關,或者通過擴展數據庫訪問驅動(如JDBC驅動)實現數據庫加密。這種方式理論上能夠支持所有的數據庫,是一種通用的解決方案,且安全性更高。但是對于所有訪問語句和訪問機制卻難以全部支持,例如對于網關之后的存儲過程和觸發器都無法支持。
應用加密網關:在應用系統之前放置加密網關,進一步將數據加密的位置提前,在數據進入應用系統之前進行加密。這種加密方式可以控制應用系統的用戶對數據的訪問權限,并且真實數據對所有數據庫用戶都是不可見的,是最安全的一種加密方式。事實上,這種加密方式與具體的數據庫無關,是對立與數據庫的。但是由于應用系統的復雜性,實現的難度也較大。
回答所涉及的環境:聯想天逸510S、Windows 10。