在 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 仅在加密或哈希数据导入到 SQL Server 2016 或从 SQL Server 2016 导出的所有实例中仅使用经过 FIPS 140-2 验证的算法和哈希函数实例。 此外,这意味着 SQL Server 2016 将按 FIPS 140-2 验证的加密模块的要求以安全方式管理密钥。 密钥管理过程还包括密钥生成和密钥存储。

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

什么是 FIPS?

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

  • 美国国家标准和技术协会 (NIST) 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 配置 2016,必须在经过 FIPS 140-2 认证或提供经过认证的加密模块的操作系统上运行。 合规性和认证的区别并不细微。 可以认证算法。 使用算法是不够的,因为它在 FIPS 140-2 的已批准列表中列出。 相反,您必须使用经过认证的此类算法的实例。 这意味着该实例经政府验证。 认证需要美国进行测试和验证。 或加拿大政府批准的评估实验室。 Windows Server 2012及更高版本,Windows 8及更高版本包含每个允许的算法的认证实例。 最重要的是,调用其中每一个算法仅提供经过认证的实例。

哪些应用程序可以兼容 FIPS 140-2?

执行加密或哈希操作且在 Windows 的认证版本上运行的所有应用程序都可以通过仅使用批准的算法的认证实例并遵循密钥生成和密钥管理要求来合规。 这需要将 Windows 功能用于密钥生成和密钥管理,或符合应用程序中的密钥生成和密钥管理要求。 如果启用了不兼容的算法或进程,则符合 FIPS 的应用程序中可能存在区域。 例如,允许某些内部进程留在系统中,一些外部数据计划由认证算法实例进一步加密。

2016 SQL Server FIPS 140-2 是否始终兼容?

不需要。 SQL Server 2016 符合 FIPS 140-2,因为它可以配置和运行,以便它仅使用经过 FIPS 140-2 认证的算法实例。 此外,通过使用 CryptoAPI 或 CGN 进行加密或在需要 FIPS 140-2compliance 的每个实例中进行哈希处理来调用这些实例。

如何将 SQL Server 2016 配置为符合 FIPS 140-2?

操作系统要求

您必须在SQL Server操作系统之一的主机上安装 2016 版本:

  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows 8
  • Windows 8.1
  • Windows 10

Windows系统管理要求

在启动 2016 之前,必须SQL Server FIPS 模式。 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 错误日志中记录以下消息:

服务代理传输在 FIPS 合规性模式下运行。

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

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

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

备注

  • 对于服务 (安全) ,如果启用了 FIPS 模式,加密过程将使用经过 FIPS 认证的 AES 实例。 如果 FIPS 模式被禁用,加密过程仍使用 AES。
  • 在 FIPS 模式下配置服务代理终结点时,管理员必须为服务代理指定"AES"。 如果终结点配置为 RC4,SQL Server将生成错误。 因此,传输层不会启动。

2016 SQL Server 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 兼容方式运行时,对允许进行不太可靠的加密的进程的性能可能会产生较小的影响。

  • 选择使用 UseEncryption=) True (SSIS 加密将生成一个错误,指出可用加密与 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 不保证此第三方联系人信息的准确性。