對於 NDB
透明資料加密 (TDE),資料節點會加密靜態的使用者資料,並透過密碼 (檔案系統密碼) 來提供安全性,該密碼用於加密和解密每個資料節點上的密碼檔案。密碼檔案包含節點主金鑰 (NMK),該金鑰稍後用於加密用於持久性的不同檔案類型。NDB
TDE 加密使用者資料檔案,包括 LCP 檔案、重做日誌檔案、表格空間檔案和還原日誌檔案。
您可以使用 ndbxfrm 公用程式來查看檔案是否已加密,如下所示
> ndbxfrm -i ndb_5_fs/LCP/0/T2F0.Data
File=ndb_5_fs/LCP/0/T2F0.Data, compression=no, encryption=yes
> ndbxfrm -i ndb_6_fs/LCP/0/T2F0.Data
File=ndb_6_fs/LCP/0/T2F0.Data, compression=no, encryption=no
可以使用 ndb_secretsfile_reader 程式,從密碼檔案中取得金鑰,如下所示
> ndb_secretsfile_reader --filesystem-password=54kl14 ndb_5_fs/D1/NDBCNTR/S0.sysfile
ndb_secretsfile_reader: [Warning] Using a password on the command line interface can be insecure.
cac256e18b2ddf6b5ef82d99a72f18e864b78453cc7fa40bfaf0c40b91122d18
每個節點的金鑰階層可以表示如下
使用者提供的密碼 (P) 由使用隨機 Salt 的金鑰衍生函式處理,以產生唯一密碼金鑰 (PK)。
PK (每個節點都是唯一的) 會加密每個節點上其自身密碼檔案中的資料。
密碼檔案中的資料包括唯一的隨機產生節點主金鑰 (NMK)。
NMK 會加密 (使用包裝) 每個加密檔案的標頭中的一個或多個隨機產生的資料加密金鑰 (DEK) 值 (包括 LCP 和 TS 檔案,以及重做和還原日誌)。
資料加密金鑰值 (DEK0, ..., DEKn) 用於加密每個檔案中 [子集] 資料。
密碼間接加密包含隨機 NMK 的密碼檔案,該密碼檔案加密節點上每個加密檔案的標頭的一部分。加密的檔案標頭包含用於該檔案中資料的隨機資料金鑰。
加密由資料節點內的 NDBFS
層透明地實作。NDBFS
內部用戶端區塊以正常方式運作其檔案;NDBFS
使用支援加密的額外標頭和頁尾資訊來包裝實體檔案,並在從檔案讀取和寫入檔案時加密和解密資料。包裝的檔案格式稱為 ndbxfrm1
。
節點密碼會使用 PBKDF2 和隨機 Salt 進行處理,以加密密碼檔案,該密碼檔案包含隨機產生的 NMK,該 NMK 用於加密每個加密檔案中隨機產生的資料加密金鑰。
加密和解密的工作會在 NDBFS I/O 執行緒中執行 (而不是在訊號執行執行緒中,例如 main、tc、ldm 或 rep)。這與壓縮的 LCP 和壓縮的備份類似,通常會導致 I/O 執行緒 CPU 使用率增加;您可能需要調整關於 I/O 執行緒的 ThreadConfig
(如果正在使用)。