在符合 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 认证的区别是什么?
可以按照符合 FIPS 140-2 的方式配置和运行 SQL Server 2016 及更高版本。 若要以这种方式配置 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 系统管理要求
必须在启动 SQL Server 2016 或更高版本之前设置 FIPS 模式。 SQL Server 在启动时读取设置。 若要设置 FIPS 模式,请执行以下步骤:
- 以 Windows 系统管理员身份登录到 Windows。
- 选择“开始”。
- 选择“控制面板”。
- 选择 “管理工具”。 (可能需要切换到下一步的大型图标。
- 选择“本地安全策略”。 此时会显示“本地安全设置”窗口。
- 在导航窗格中,选择“ 本地策略>安全选项”。
- 在右侧窗格中,双击 “系统加密:使用符合 FIPS 的算法进行加密、哈希和签名”。
- 在出现的对话框中,选择“已启用>应用”。
- 选择“确定”。
- 关闭“本地安全设置”窗口。
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不能保证此第三方联系信息的准确性。