Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

SQL Server 加密機制深度解析:從儲存格層級到透明資料加密

編輯:Windows Server 常見問題解答

加密在資料庫安全防禦中的定位

加密是資料被竊取或備份外洩後的「最後一道防線」。它無法取代存取控制、網路隔離、實體安全等前端防護,但能確保即便資料落入未授權者手中,無金鑰仍無法解讀。合規需求 (如 PCI-DSS、GDPR) 亦常強制要求敏感資料加密儲存。

SQL Server 加密演進史

  • SQL Server 2000 及之前:無原生加密,需在應用層自行實作,導致跨應用相容性極差。
  • SQL Server 2005:引入 資料行層級加密 (Cell-Level Encryption),提供 4 組內建加解密函數,可針對特定欄位加密。
  • SQL Server 2008:引入 透明資料加密 (TDE, Transparent Data Encryption),以資料庫為單位整體加密,應用層無感知,備份檔同樣受保護。

加密基礎知識速覽

對稱 vs 非對稱加密

特性對稱加密非對稱加密
金鑰加密/解密使用同一金鑰公鑰加密、私鑰解密
性能高速、適合大量資料較慢、計算複雜
金鑰分發需安全通道傳遞金鑰公鑰可公開傳遞
典型演算法DES、3DES、AES、RC4RSA、ECC

混合加密最佳實踐

資料用對稱金鑰加密 → 對稱金鑰用非對稱金鑰加密。兼顧性能與安全性,為 SQL Server 加密階層架構基礎。

SQL Server 支援演算法

  • 對稱:DES、TRIPLE DES、TRIPLE_DES_3KEY、RC2、RC4、RC4_128、DESX、AES_128、AES_192、AES_256
  • 非對稱:RSA_512、RSA_1024、RSA_2048、RSA_4096

選擇原則:大量資料用 AES_256;金鑰保護用 RSA_2048+;不可壓縮已加密資料,應先壓縮再加密。

加密階層架構

SQL Server 採用分層保護模型,上層金鑰保護下層金鑰:

  1. 服務主要金鑰 (SMK):實例級根金鑰,安裝時由 Windows DPAPI 自動產生保護,用於加密連結伺服器認證、認證資訊等實例級祕密。
  2. 資料庫主要金鑰 (DMK):資料庫級金鑰,由密碼 + SMK 雙重保護。建立語法:CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongP@ssw0rd'
  3. 憑證 / 非對稱金鑰 / 對稱金鑰:由 DMK 保護,用於實際資料加密操作。

建立加密物件範例

-- 建立憑證
CREATE CERTIFICATE CertTest WITH SUBJECT = 'Test Certificate';

-- 建立非對稱金鑰
CREATE ASYMMETRIC KEY TestAsymmetric
WITH ALGORITHM = RSA_2048
ENCRYPTION BY PASSWORD = 'StrongP@ssw0rd';

-- 建立對稱金鑰 (推薦用於資料加密)
CREATE SYMMETRIC KEY TestSymmetric
WITH ALGORITHM = AES_256
ENCRYPTION BY PASSWORD = 'StrongP@ssw0rd';

透明資料加密 (TDE) 實作要點

  • 保護範圍:整個資料庫檔案 (.mdf/.ldf) 及備份檔。
  • 運作模式:資料寫入磁碟前即時加密,讀入記憶體時解密,應用完全透明。
  • 遷移限制:啟用 TDE 的資料庫備份/卸離檔,僅能在擁有相同憑證的實例上還原/附加。
  • 效能影響:CPU 額外負擔約 3-5%,建議搭配 AES 指令集 (AES-NI) 硬體加速。

關鍵管理最佳實踐

  1. 定期備份 SMK、DMK、憑證、非對稱金鑰 (含私鑰),儲存於異地安全位置。
  2. 使用強密碼保護 DMK 與非對稱金鑰私鑰。
  3. 啟用 EKM (可延伸金鑰管理) 整合 HSM 硬體安全模組,滿足高等級合規需求。
  4. 監控 sys.key_encryptions、sys.certificates 追蹤金鑰用途與到期狀態。
Copyright © Windows教程網 All Rights Reserved