拿走磁碟也甭想讀資料——透明加密保安全

hzcya發表於2020-11-11

透明加密是什麼?

透明加密(Transparent Data Encrytion,TDE)是用來加密資料庫檔案的技術。TDE在資料庫檔案級別提供加密,在磁碟和備份介質上加密資料庫,解決了靜態資料保護問題。TDE不會保護傳輸階段的資料(比如客戶端與服務端傳輸的資料)和使用中的資料(在非持久化介質中的資料,比如在記憶體、CPU cache,CPU暫存器中的資料)。

為什麼需要透明加密?

當檔案系統訪問控制受到威脅時,TDE可以防止資料洩露:

惡意使用者會竊取儲存裝置並直接讀取資料庫檔案。

惡意備份操作員進行備份。

解決合規性問題,比如PCI DSS(支付卡行業資料標準)。

透明加密的粒度分析

加密物件的粒度

資料庫叢集

資料庫

表空間

表的集合比如schema

叢集範圍加密

好處

架構簡單

金鑰管理簡單

適用於所有加密需求(使用者表、系統表、索引等物件)

不足

加密所有資料庫物件帶來的效能開銷

單個金鑰加密整個叢集,單個金鑰加密的數量大。

金鑰更新需要重建整個叢集

細粒度加密

好處

減少效能開銷

減少單個金鑰加密的資料量(使密碼分析更困難,即使幸運拿到了金鑰,較少的資料風險)

重新加密或者金鑰更新不需要重建整個資料庫叢集

不足

金鑰管理比較複雜

透過查詢加密表的金鑰引入了新的效能開銷

GaussDB(DWS)的實現

三層金鑰結構,叢集級加密。在建立叢集時啟用加密。當選擇KMS(金鑰管理服務)對DWS進行金鑰管理時,加密金鑰層次結構有三層。按層次結構順序排列,這些金鑰為主金鑰(CMK)、叢集加密金鑰 (CEK)、資料庫加密金鑰 (DEK)。

主金鑰用於給CEK加密,儲存在KMS中。

CEK用於加密DEK,CEK明文儲存在DWS叢集記憶體中,密文儲存在DWS服務中。

DEK用於加密資料庫中的資料,DEK明文儲存在DWS叢集記憶體中,密文儲存在DWS服務中。

金鑰更新透過更新CEK來實現,不更新資料加密金鑰DEK,避免重建資料庫的效能開銷。

其他系統中的TDE

PG社群的實現(預計在2021年的PG14)

叢集範圍的加密

內部金鑰管理系統(KMS),將金鑰儲存在資料庫中

加密所有持久化資料,不加密記憶體中的共享緩衝區資料

MySQL(InnoDB)

支援表空間級TDE。在MySQL中,表空間是指可以保持一個或多個表以及與表關聯的索引的資料的檔案。

支援兩層金鑰結構,為每個表空間使用一個金鑰,該金鑰位於表空間檔案的頭部。

主金鑰用於保護表空間金鑰,透過外掛從外部系統獲取。

支援redo和undo日誌加密和系統表加密。使用專有金鑰而不是表空間金鑰對每一頁的redo和undo日誌加密。日誌加密金鑰以加密狀態儲存在第一個redo/undo日誌檔案的頭部。

Oracle

Oracle支援列級和表空間級TDE。

使用兩層秘鑰結構。

主加密秘鑰(MEK)儲存在外部金鑰儲存中,用於保護列級和表空間級金鑰。

列級TDE為每個表使用一個金鑰,表空間級為每個表空間使用一個金鑰。

支援3DES和AES(128,192、256)加密演算法。列級別TDE預設為AES192,表空間級別TDE預設為AES128。

SQL Server

支援三層金鑰結構的資料庫級TDE。

服務主金鑰(SMK)在安裝過程中自動生成的(如postgres中的initdb)。

資料庫主金鑰(DMK)是在master資料庫(如postgres預設資料庫)中建立,並由SMK加密。

DMK用於生成實際用於資料加密金鑰(DEK)的證書。DEK是每個資料庫的秘鑰,使用者加密資料和日誌檔案。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978904/viewspace-2733648/,如需轉載,請註明出處,否則將追究法律責任。

相關文章