選擇加密演算法

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

加密是全面防禦中的一環,可提供給想要維護 SQL Server 執行個體安全的管理員使用。

加密演算法會定義資料轉換,讓未經授權的使用者無法輕鬆地反轉資料轉換。 系統管理員和開發人員可以在 SQL Server 中選擇數種演算法,包括 DES、Triple DES、TRIPLE_DES_3KEY、RC2、RC4、128 位元 RC4、DESX、128 位元 AES、192 位元 AES 和 256 位元 AES。

從 SQL Server 2016 (13.x) 開始,已淘汰 AES_128AES_192AES_256 以外的所有演算法。 若要使用較舊的演算法 (不建議),您必須將資料庫相容性層級設定為 120 或更低。

如何選擇正確的演算法

同一種演算法不可能適用於所有情況,各種演算法優缺點的指南也超出本文的範疇。 不過,下列為一般適用的原則:

  • 強式加密通常比弱式加密耗用更多 CPU 資源。

  • 長金鑰通常會比短金鑰產生更強的加密。

  • 非對稱式加密比對稱式加密還要慢。

  • 複雜的長密碼比短密碼更強。

  • 當金鑰僅儲存在本機時,建議使用對稱式加密。 當需要透過網路共用金鑰時,建議使用非對稱式加密。

  • 如果您要加密很多資料,應該使用對稱金鑰來加密資料,並使用非對稱金鑰來加密對稱金鑰。

  • 加密的資料無法壓縮,但壓縮資料可以加密。 如果您使用壓縮,應該在加密之前先壓縮資料。

如需加密演算法和加密技術的詳細資訊,請參閱重要的安全性概念

已經淘汰的 RC4 演算法

只有 RC4 演算法支援回溯相容性。 只有在資料庫相容性層級為 90 或 100 時,才能使用 RC4RC4_128 加密新資料 (不建議)。 請改用較新的演算法,例如其中一個 AES 演算法。 在 SQL Server 2012 (11.x) 和更新版本中使用 RC4RC4_128 加密的資料,可以在任何相容性層級中解密。

在不同資料區塊上重複使用相同的 RC4RC4_128KEY_GUID,結果會是相同的 RC4 金鑰,因為 SQL Server 不會自動提供 Salt 處理。 重複使用相同的 RC4 金鑰是已知的錯誤,此錯誤會造成加密變弱。 因此,我們取代了 RC4RC4_128 關鍵字。 SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

釐清有關 DES 演算法的資訊

DESX 未正確命名。 以 ALGORITHM = DESX 建立的對稱金鑰實際上使用具有 192 位元金鑰的三重 DES 加密。 未提供 DESX 演算法。 SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

ALGORITHM = TRIPLE_DES_3KEY 建立的對稱金鑰使用具有 192 位元金鑰的三重 DES。

ALGORITHM = TRIPLE_DES 建立的對稱金鑰使用具有 128 位元金鑰的三重 DES。