共用方式為


在 FIPS 140-2 相容模式中使用 SQL Server 2016 和更新版本

本文介紹 FIPS 140-2 指示,以及如何在 FIPS 140-2 相容模式中使用 SQL Server2016。

原始產品版本: SQL Server 2016 和更新版本 原始 KB 編號: 4014354

注意

  • 此處定義了「符合 FIPS 140-2 規範」、「FIPS 140-2 合規性」和「FIPS 140-2 相容模式」等詞彙,以供使用及清楚瞭解。 這些詞彙無法辨識或定義政府條款。 美國 和加拿大政府承認根據 FIPS 140-2 等標準驗證密碼編譯模組,而不是以指定或一致的方式使用密碼編譯模組。

    在本文中, 我們使用符合 FIPS 140-2 規範、FIPS 140-2 合規性,以及 FIPS 140-2 兼容模式,表示 SQL Server 2016 和更新版本只會使用 FIPS 140-2 驗證的演算法和哈希函式實例,以及加密或哈希數據匯入 SQL Server 2016 和更新版本中或從 SQL Server 2016 和更新版本導出的所有實例。 此外,這表示 SQL Server 2016 和更新版本的 versons 會以安全的方式管理密鑰,如 FIPS 140-2 驗證的密碼編譯模組所需。 金鑰管理程式也包含金鑰產生和金鑰記憶體。

  • 我們在這裡使用「認證」表示演算法的實例已驗證 FIPS 140-2,或操作系統包含FIPS140-2 驗證的演算法實例。

什麼是 FIPS?

聯邦資訊處理標準(FIPS)是由下列兩個政府機構開發的標準:

  • 國家標準與技術研究所(NIST)在 美國
  • 加拿大的通信安全機構(CSE)

FIPS 標準建議或授權用於 美國 和加拿大聯邦政府營運的 IT 系統。

什麼是 FIPS 140-2?

FIPS 140-2 是標題為「密碼編譯模組的安全性需求」的語句。它會指定可使用哪些加密演算法和哪些哈希演算法,以及如何產生和管理加密密鑰。 某些包含演算法的硬體、軟體和程式可視為經過 FIPS 140-2 認證,以及呼叫正確演算法的其他硬體、軟體和處理程式,可視為符合 FIPS 140-2 規範。

符合 FIPS 140-2 標準與 FIPS 140-2 認證有何差異?

SQL Server 2016 和更新版本可以設定及執行符合 FIPS 140-2 規範的方式。 若要以這種方式設定 SQL Server 2016 和更新版本,它必須在經過 FIPS 140-2 認證的作業系統上執行,或提供經認證的密碼編譯模組。 合規性與認證之間的差異並不微妙。 演算法可以認證。 它不足以使用演算法,因為它列在 FIPS 140-2 的已核准清單中。 相反地,您必須使用經認證的這類演算法實例。 這表示實例經過政府驗證。 認證需要美國或加拿大政府核准的評估實驗室進行測試和驗證。 Windows Server 2012 和更新版本,以及 Windows 8 和更新版本包含每個允許演算法的認證實例。 最重要的是,對每個演算法的呼叫只會提供經認證的實例。

哪些應用程式可以符合 FIPS 140-2 規範?

執行加密或哈希且在經過認證之 Windows 版本上執行的所有應用程式都只能使用已核准演算法的認證實例,以及符合密鑰產生和金鑰管理需求來符合規範。 這需要使用 Windows 函式進行金鑰產生和金鑰管理,或符合應用程式內的金鑰產生和金鑰管理需求。 FIPS 相容應用程式中的區域可能會存在啟用不符合規範的演算法或進程。 例如,允許保留在系統中的一些內部進程,以及一些由認證演算法實例額外加密的外部數據。

SQL Server 2016 和更新版本一律符合 FIPS 140-2 規範嗎?

否。 SQL Server 2016 和更新版本可以符合 FIPS 140-2 規範,因為它可以設定和執行,使其只使用 FIPS 140-2 認證的演演算法實例。 此外,這些實例是使用 CryptoAPI 或 CGN 進行加密呼叫,或在需要 FIPS 140-2 合規性的每個實例中進行哈希處理。

SQL Server 2016 和更新版本如何設定為符合 FIPS 140-2 規範?

作業系統需求

您必須在執行下列 其中一個 Windows 用戶端和伺服器的主機上安裝 SQL Server 2016 和更新版本。

Windows 系統管理需求

必須先設定 FIPS 模式,才能啟動 SQL Server 2016 或更新版本。 SQL Server 會在啟動時讀取設定。 若要設定 FIPS 模式,請遵循下列步驟:

  1. 以 Windows 系統管理員身分登入 Windows。
  2. 選取 [開始]
  3. 選取 [控制台]
  4. 選取 [ 系統管理工具]。 (您可能必須切換至大型圖示以進行下一個步驟。
  5. 選取 [本機安全性原則]。 [ 本機安全性設定] 視窗隨即出現。
  6. 在瀏覽窗格中,選取 [本機原則>安全性選項]。
  7. 在右側的窗格中,按兩下 [系統密碼編譯:使用FIPS相容演演算法進行加密、哈希和簽署]。
  8. 在出現的對話框中,選取 [已啟用套>用]。
  9. 選取 [確定]。
  10. 關閉 [ 本機安全性設定] 視窗。

SQL Server 系統管理員需求

當 SQL Server 服務 (當 Service Broker 或資料庫鏡像的端點設定時) 偵測到在啟動時已啟用 FIPS 模式時,SQL Server 會在 SQL Server 錯誤記錄檔中記錄下列訊息:

Service Broker 傳輸正在 FIPS 合規性模式中執行。

此外,您可能會發現 Windows 事件記錄檔中記錄的下列訊息:

資料庫鏡像傳輸正在 FIPS 合規性模式中執行。

您可以尋找這些訊息,確認伺服器正在 FIPS 模式中執行。

注意

  • 針對對話安全性(在服務之間),如果已啟用 FIPS 模式,加密程式會使用經過 FIPS 認證的 AES 實例。 如果停用 FIPS 模式,加密程式仍會使用 AES。
  • 當您以 FIPS 模式設定 Service Broker 端點時,系統管理員必須指定 Service Broker 的 “AES”。 如果端點設定為 RC4,SQL Server 會產生錯誤。 因此,傳輸層不會啟動。

SQL Server 2016 和更新版本如何以 FIPS 140-2 相容模式運作?

  • 在 Windows 中開啟 FIPS 模式時,在使用者無法選擇加密或哈希以及其完成方式的所有區域中,SQL Server 2016 和更新版本將會與 FIPS 140-2 相容。 (SQL Server 2016 和更新版本會在 Windows 中使用 CryptoAPI,且只會使用演算法的認證實例。

  • 在 Windows 中開啟 FIPS 模式時,在使用者選擇使用加密的所有區域中,SQL Server 2016 和更新版本只會啟用 FIPS 140-2 相容加密,或不會啟用任何加密。

  • 軟體開發人員的重要資訊:在開發人員或使用者撰寫自己的程式代碼進行加密或哈希的所有區域中,必須指示他們只使用 CryptoAPI(因此只有認證實例),並只指定 FIPS 140-2 允許的演算法。如需 FIPS 140-2 核准的密碼編譯演算法的官方 NIST 清單, 請參閱密碼編譯模組驗證程式中附錄 A、C 和 D。

在 FIPS 140-2 兼容模式中執行 SQL Server 2016 或更新版本的效果為何?

  • 當您使用更強式加密時,當進程未以 FIPS 140-2 規範運作時,可能會對較不強固加密的程式效能產生小影響。

  • SSIS (UseEncryption=True) 的加密選擇會產生錯誤,指出可用的加密與 FIPS 合規性不相容,且不允許。 換句話說,不會執行訊息程式的加密。

  • 當您搭配舊版 DTS 使用加密時,加密不符合 FIPS 140-2 規範。 針對 DTS,不會檢查 Windows 中的 FIPS 模式。 因此,用戶必須負責不選取任何加密,才能保持符合規範。

  • 由於大部分的 SQL Server 2016 和更新版本加密和哈希程式都已符合 FIPS 140-2 規範,因此在完全合規性上執行 (也就是 Windows 開啟的 FIPS 模式)對使用或應用程式的效能幾乎沒有影響。

我可以在哪裡深入瞭解 FIPS 140-2?

如需 FIPS 140-2 的詳細資訊,請參閱 CMVP FIPS 140-2 標準和檔

Microsoft 提供第三方連絡資訊,協助您尋找技術支援。 此連絡資訊可能會變更而不另行通知。 Microsoft不保證此第三方連絡信息的正確性。