共用方式為


加密階層

SQL Server 會使用階層式加密和金鑰管理基礎結構來加密數據。 每一層都會使用憑證、非對稱密鑰和對稱金鑰的組合來加密其下方的層。 非對稱金鑰和對稱金鑰可以儲存在 SQL Server 外部的可延伸金鑰管理 (EKM) 模組中。

下圖顯示加密階層的每個層都會加密其下層,並顯示最常見的加密組態。 階層開頭的存取通常會受到密碼的保護。

在堆疊中顯示一些加密組合。

請記住以下概念:

  • 為了獲得最佳效能,請使用對稱密鑰而非憑證或非對稱密鑰來加密數據。

  • 資料庫主要金鑰受到服務主要金鑰的保護。 服務主要密鑰是由 SQL Server 設定所建立,並使用 Windows 數據保護 API (DPAPI) 加密。

  • 其他加密階層可以堆疊額外的層次。

  • 可延伸金鑰管理 (EKM) 模組會保留 SQL Server 外部的對稱或非對稱密鑰。

  • 透明數據加密 (TDE) 必須使用稱為資料庫加密金鑰的對稱金鑰,該金鑰由 master 資料庫的資料庫主要金鑰所保護,或由儲存在 EKM 中的非對稱金鑰所保護。

  • 服務主要金鑰和所有資料庫主要金鑰都是對稱金鑰。

下圖以替代方式顯示相同的資訊。

在轉輪中顯示一些加密組合。

下圖說明下列其他概念:

  • 在此圖中,箭號表示常見的加密階層。

  • EKM 中的對稱和非對稱密鑰可以保護存取儲存在 SQL Server 中的對稱和非對稱密鑰。 與 EKM 相關聯的虛線表示 EKM 中的索引鍵可以取代儲存在 SQL Server 中的對稱和非對稱密鑰。

加密機制

SQL Server 提供下列加密機制:

  • Transact-SQL 方法

  • 非對稱金鑰

  • 對稱金鑰

  • 證書

  • 透明數據加密

Transact-SQL 函式

使用 Transact-SQL 函式插入或更新個別專案時,可以加密個別專案。 如需詳細資訊,請參閱 ENCRYPTBYPASSPHRASE (Transact-SQL)DECRYPTBYPASSPHRASE (Transact-SQL)。

證書

公鑰憑證通常稱為憑證,是數位簽署的語句,會將公鑰的值系結至保存對應私鑰的人員、裝置或服務的身分識別。 憑證是由證書頒發機構單位 (CA) 簽發並簽署。 從 CA 接收憑證的實體是該憑證的主體。 一般而言,憑證包含下列資訊。

  • 主體的公鑰。

  • 主體的標識碼資訊,例如名稱和電子郵件位址。

  • 有效期間。 這是憑證視為有效的時間長度。

    憑證只有在指定期間內有效;每個憑證都包含 [有效來源 ] 和 [有效至 ] 日期。 這些日期會設定有效期間界限。 憑證的有效期間通過時,現在過期憑證的主體必須要求新的憑證。

  • 簽發者標識碼資訊。

  • 簽發者的數字簽名。

    此簽章會證明公鑰與主體標識子資訊之間的系結有效性。 (數字簽署資訊的程式需要將資訊以及寄件者持有的一些秘密資訊轉換成稱為簽章的標記。

憑證的主要優點是可減輕主機維護個別主體一組密碼的需求。 相反地,主機只會在憑證簽發者中建立信任,然後可能會簽署無限數量的憑證。

當主機,例如安全的 Web 伺服器,將簽發者指定為受信任的根授權單位時,主機會隱含地信任簽發者用來建立所簽發之憑證系結的原則。 實際上,主機信任簽發者已驗證憑證主體的身分識別。 主機通過將包含簽發者公鑰的自我簽署憑證放入主機電腦的受信任根憑證授權機構憑證存放庫,將簽發者指定為受信任的根憑證授權機構。 只有當來自受信任的根證書授權機構的認證路徑有效時,中繼或次級證書授權機構才會受到信任。

簽發者可以在憑證到期之前撤銷憑證。 撤銷會取消公鑰與證書中宣告的身分識別的綁定關係。 每個簽發者都會維護憑證吊銷清單,這些清單可在程序檢查任何指定憑證的有效性時使用。

SQL Server 所建立的自我簽署憑證遵循 X.509 標準,並支援 X.509 v1 字段。

非對稱金鑰

非對稱金鑰是由私鑰和對應的公鑰所組成。 每個金鑰都可以解密由另一個金鑰加密的數據。 非對稱式加密和解密相對需要大量資源,但可提供比對稱加密更高的安全性層級。 非對稱金鑰可用來加密對稱金鑰,以便存儲在資料庫中。

對稱金鑰

對稱金鑰是用於加密和解密的一個金鑰。 使用對稱密鑰進行加密和解密是快速的,而且適合用於資料庫中敏感數據的例行使用。

透明數據加密

透明數據加密 (TDE) 是使用對稱金鑰進行加密的特殊案例。 TDE 會使用該稱為資料庫加密密鑰的對稱金鑰來加密整個資料庫。 資料庫加密金鑰受到其他金鑰或憑證的保護,這些金鑰或憑證是由資料庫主要金鑰或儲存在 EKM 模組中的非對稱金鑰所保護。 如需詳細資訊,請參閱透明資料加密 (TDE)

保護 SQL Server 的安全

安全性函數 (Transact-SQL)

另請參閱

權限階層 (Database Engine)
安全性實體