在符合 FIPS 140-2 的模式下使用 SQL Server 2016 及更高版本

本文介绍 FIPS 140-2 说明,以及如何在符合 FIPS 140-2 的模式下使用 SQL Server 2016。

原始产品版本: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 验证的算法实例和哈希函数,这些实例会将加密或哈希数据导入到 2016 及更高版本或从 SQL Server 2016 及更高版本导出。 此外,这意味着SQL Server 2016 及更高版本的 verson 将以安全的方式管理密钥,这是 FIPS 140-2 验证的加密模块的要求。 密钥管理过程还包括密钥生成和密钥存储。

  • 此处使用“认证”表示算法的实例经过 FIPS 140-2 验证,或者操作系统包含FIPS140 2 验证的算法实例。

什么是 FIPS?

联邦信息处理标准 (FIPS) 是由以下两个政府机构制定的标准:

  • 国家标准与技术研究院 (NIST) 美国
  • 加拿大 CSE) (通信安全机构

美国和加拿大的联邦政府运营的 IT 系统中,建议或强制使用 FIPS 标准。

什么是 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 系统管理要求

必须在启动 SQL Server 2016 或更高版本之前设置 FIPS 模式。 SQL Server在启动时读取设置。 若要设置 FIPS 模式,请执行以下步骤:

  1. 以 Windows 系统管理员身份登录到 Windows。
  2. 选择“开始”
  3. 选择“控制面板”
  4. 选择 “管理工具”。 (可能需要切换到大图标才能执行下一步。)
  5. 选择“ 本地安全策略”。 此时会显示 “本地安全设置” 窗口。
  6. 在导航窗格中,选择“ 本地策略>安全选项”。
  7. 在右侧窗格中,双击“ 系统加密:使用符合 FIPS 的算法进行加密、哈希和签名”。
  8. 在出现的对话框中,选择 “启用>应用”。
  9. 选择“确定”。
  10. 关闭“ 本地安全设置” 窗口。

SQL Server管理员要求

当为 Service Broker 或数据库镜像配置终结点时 (SQL Server) 服务检测到在启动时已启用 FIPS 模式时,SQL Server SQL Server错误日志中记录以下消息:

Service Broker 传输在 FIPS 符合性模式下运行。

此外,你可能会发现 Windows 事件日志中记录了以下消息:

数据库镜像传输在 FIPS 符合性模式下运行。

可以通过查找这些消息来验证服务器是否在 FIPS 模式下运行。

注意

  • 对于服务) 之间的对话安全 (,如果启用了 FIPS 模式,加密过程将使用经过 FIPS 认证的 AES 实例。 如果禁用 FIPS 模式,则加密过程仍使用 AES。
  • 在 FIPS 模式下配置服务代理终结点时,管理员必须为服务代理指定“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 不保证此第三方联系信息的准确性。