在符合 FIPS 140-2 的模式下使用 SQL Server 2014 的说明

本文讨论联邦信息处理标准发布 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 仅使用 FIPS 140-2 验证的算法实例以及从 SQL Server 2014 导入或导出加密或哈希处理函数的所有实例。 此外,这意味着 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 认证的区别是什么?

可以按照符合 FIPS 140-2 的方式配置和运行 SQL Server 2014。 若要以这种方式配置 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 Server 2012
  • Windows Server 2012 R2
  • Windows 8
  • Windows 8.1
  • Windows 10

Windows 系统管理要求

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

  1. 以 Windows 系统管理员身份登录到 Windows。
  2. 单击“启动”。
  3. 单击“控制面板”
  4. 单击“管理工具”。 (可能需要切换到下一步的Large 图标。
  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 模式,加密将使用 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 不对这些产品的性能或可靠性提供任何明示或暗示性担保。