在符合 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 2 2014 SQL Server导入或导出加密或哈希数据的所有实例中,014 仅使用 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 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. 单击“ 管理工具”。 (可能需要切换到“大图标”才能执行下一步。)
  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 模式,则加密将使用 RC4。

  • 在 FIPS 模式下配置服务代理终结点时,管理员必须为 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 允许的算法。 有关官方国家标准与技术研究院 (NIST) FIPS 140-2 批准的加密算法列表,请转到 加密模块验证计划中的附录 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 不对这些产品的性能或可靠性提供任何明示或暗示性担保。