本文討論聯邦資訊處理標準出版物 140-2 (FIPS 140-2) 的指示,以及如何在 FIPS 140-2 兼容模式中使用 Microsoft SQL Server 2014。
原始產品版本: SQL Server 2014
原始 KB 編號: 3141890
備註
此處定義了「FIPS 140-2 相容」、「FIPS 140-2 合規性」和「FIPS 140-2 相容模式」等字詞,以供使用及釐清。 這些術語不是公認的或定義的政府術語。 美國 和加拿大政府承認根據 FIPS 140-2 等標準驗證密碼編譯模組,而不是以指定或一致的方式使用密碼編譯模組。 在本文中,我們使用「符合 FIPS 140-2」、“FIPS 140-2 合規性”和“符合 FIPS 140-2 的模式”,因為 SQL Server 2014 在將加密或哈希數據導入 SQL Server 2014 或從 SQL Server 2014 導出的所有實例中僅使用經過 FIPS 140-2 驗證的演算法和哈希函數實例。 此外,這表示 SQL Server 2014 會按照 FIPS 140-2 驗證的密碼編譯模組的要求,以安全的方式管理密鑰。 金鑰管理程式也包含金鑰產生和金鑰記憶體。
我們在此處使用「已認證」表示演算法實例經過 FIPS 140-2 驗證,或者作系統包含經過 FIPS 140-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 2014 可以設定及執行符合 FIPS 140-2 規範的方式。 若要以這種方式設定 SQL Server 2014,SQL Server 2014 必須在經過 FIPS 140-2 認證的操作系統上執行,或是在提供經認證的密碼編譯模組的操作系統上執行。
合規性和認證之間的區別並不微妙。 演算法可以認證。 僅僅因為演算法列在 FIPS 140-2 的批准清單中,就使用演算法是不夠的。 相反地,您必須使用經認證的這類演算法實例。 這表示實例已經過政府驗證。 認證需要由 美國 或加拿大政府核准的評估實驗室進行測試和驗證。 Windows Server 2012 及更高版本以及 Windows 8 及更高版本包含每個允許的演算法的認證實例。 最重要的是,對每個演算法的呼叫只會提供經認證的實例。
哪些應用程式產品符合 FIPS 140-2 標準?
執行加密或哈希且在經過認證之 Windows 版本上執行的所有應用程式都只能使用已核准演算法的認證實例,以及符合密鑰產生和金鑰管理需求來符合規範。 您可以透過下列其中一種方法來執行這項操作:
- 使用 Windows 函式進行金鑰產生和金鑰管理
- 遵循應用程式內的金鑰產生和金鑰管理需求
請注意,符合 FIPS 規範的應用程式可能包含啟用不符合規範演算法或進程的區域。 例如,允許保留在系統內的一些內部進程,以及一些由認證演算法實例額外加密的外部數據。
SQL Server 2014 是否始終符合 FIPS 140-2 標準?
否。 SQL Server 2014 可以符合 FIPS 140-2 規範,因為它可以設定和執行,因為它只使用 FIPS 140-2 認證的演算法實例,這些實例會使用 CryptoAPI 進行加密,或在需要 FIPS 140-2 合規性的每個實例中哈希。
如何將 SQL Server 2014 配置為符合 FIPS 140-2 標準?
操作系統需求
在以下欄其中一個作業系統為基礎的伺服器上安裝 SQL Server 2014:
- Windows 伺服器 2012
- Windows Server 2012 R2
- Windows 8
- Windows 8.1
- Windows 10
Windows 系統管理需求
必須先設定 FIPS 模式,才能啟動 SQL Server 2014。 SQL Server 會在啟動時讀取設定。 若要設定 FIPS 模式,請遵循下列步驟:
- 以 Windows 系統管理員身分登入 Windows。
- 選擇 開始。
- 選取 [控制台]。
- 選擇 Administrative Tools(管理工具)。 (您可能必須切換至下一個步驟的Large 圖示。
- 選取 [本機安全性原則]。 [本機安全性設定] 視窗隨即出現。
- 在導航窗格中,選擇 Local Policies (本地策略),然後選擇 Security Options (安全選項)。
- 在右側窗格中,按兩下 系統加密:使用符合 FIPS 標準的算法進行加密、雜湊和簽名。
- 在出現的對話框中,選擇 Enabled,然後選擇 Apply。
- 請選擇 [確定]。
- 關閉 [本機安全性設定] 視窗。
SQL Server 系統管理員需求
當 SQL Server 服務 (當 Service Broker 或資料庫鏡像的端點設定時) 偵測到在啟動時已啟用 FIPS 模式時,SQL Server 會在 SQL Server 錯誤記錄檔中記錄下列訊息:
Service Broker 傳輸正在 FIPS 合規性模式中執行。
此外,您可能會發現 Windows 事件記錄檔中記錄的下列訊息:
資料庫鏡像傳輸在 FIPS 合規性模式下運行。
您可以尋找這些訊息,確認伺服器正在 FIPS 模式中執行。
針對對話安全性(在服務之間),如果已啟用 FIPS 模式,加密會使用 FIPS 認證的進階加密標準實例(AES)。 如果 FIPS 模式已停用,加密會使用 RC4。
當您在 FIPS 模式中設定 Service Broker 端點時,系統管理員必須指定 Service Broker 的 “AES”。 如果端點設定為 RC4,SQL Server 將會產生錯誤。 因此,傳輸層不會啟動。
SQL Server 2014 如何在符合 FIPS 140-2 的模式下運行?
在 Windows 中開啟 FIPS 模式時,在使用者無法選擇加密或哈希的所有區域,以及其完成方式時,SQL Server 2014 將會按照 FIPS 140-2 執行。 (SQL Server 2014 會在 Windows 中使用 CryptoAPI,且只會使用演算法的認證實例。
在 Windows 中打開 FIPS 模式後,在使用者可以選擇是否使用加密的所有區域中,SQL Server 2014 將僅啟用符合 FIPS 140-2 的加密,或者不啟用任何加密。
軟體開發人員的重要資訊:在開發人員或使用者撰寫自己的程式代碼進行加密或哈希的所有區域中,必須指示他們只使用 CryptoAPI(因此只有認證實例),並只指定 FIPS 140-2 允許的演算法。 如需 FIPS 140-2 核准的密碼編譯演算法官方國家標準與技術研究所(NIST)清單,請移至密碼編譯模組驗證計劃中附錄 A、C 和 D。
在符合 FIPS 140-2 的模式下運行 SQL Server 2014 會產生什麼影響?
對於當進程未按照 FIPS 140-2 標準運行時,使用更強加密可能會對允許較弱加密的進程的性能產生很小的影響。
為 SSIS 選擇加密 (UseEncryption=True) 將生成一條錯誤消息,指出可用加密與 FIPS 合規性不相容,因此不允許使用。 換句話說,不會執行訊息程式的加密。
搭配舊版 DTS 使用加密不符合 FIPS 140-2 規範。 對於 DTS,Windows 中不會驗證 FIPS 模式。 因此,用戶必須負責不選取任何加密,才能保持符合規範。
由於大多數 SQL Server 2014 加密和哈希進程已經符合 FIPS 140-2 標準,因此以完全合規方式運行(即,在 Windows 中打開 FIPS 模式的情況下)對產品的使用或性能影響很小或沒有影響。
我可以在哪裡深入瞭解 FIPS 140-2?
如需 FIPS 140-2 標準的詳細資訊,請參閱下列 NIST 發行集:
第三方資訊免責聲明
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft對這些產品的性能或可靠性不作明示或暗示的保證。