第 2 章 在 FIPS 模式中安装系统

要启用联邦信息处理标准(FIPS) 140-3 强制的加密模块,您必须在 FIPS 模式下操作 RHEL 9。如果您的目标是遵循FIPS,在 FIPS 模式下开始安装是推荐的方法。

注意

RHEL 9 的加密模块尚未获得 FIPS 140-3 要求的认证。

2.1. Federal Information Processing Standards 140 和 FIPS 模式

联邦信息处理标准(FIPS)公共 140 是国家标准与技术研究所开发的一系列计算机安全标准,以确保加密模块的质量。FIPS 140 标准可确保加密工具正确实现其算法。运行时加密算法和完整性自我测试是一些机制,用于确保系统使用符合标准要求的加密机制。

要确保 RHEL 系统生成并使用所有带有 FIPS 批准的算法的加密密钥,您必须将 RHEL 切换到 FIPS 模式。

您可以使用以下方法之一启用 FIPS 模式:

  • 在 FIPS 模式下开始安装
  • 安装后将系统切换到 FIPS 模式

如果您的目的是 FIPS 合规性,请在 FIPS 模式下开始安装。这可避免加密密钥材料重新生成和与转换已部署的系统相关的结果系统的合规性的重新评估。

要操作 FIPS 兼容系统,请在 FIPS 模式下创建所有加密密钥资料。另外,加密密钥材料不得离开 FIPS 环境,除非它被安全封装,且永远不会在非 FIPS 环境下解封。

使用 fips-mode-setup 工具将系统切换到 FIPS 模式不能保证符合 FIPS 140 标准。将系统设置为 FIPS 模式后,可能无法重新生成所有加密密钥。例如,在具有用户加密密钥的现有 IdM 域中,您无法重新生成所有密钥。如果您无法在 FIPS 模式下开始安装,在安装后,请始终启用 FIPS 模式作为第一步,然后再进行安装后配置步骤或安装任何工作负载。

fips-mode-setup 工具也在内部使用 FIPS 系统范围的加密策略。但是,在 update-crypto-policies --set FIPS 命令所执行的操作之上,fips-mode-setup 使用 fips-finish-install 工具来确保 FIPS dracut 模块的安装,它还在内核命令行中添加 fips=1 引导选项,并重新生成初始 RAM 磁盘。

另外,在 FIPS 模式下强制所需的限制取决于 /proc/sys/crypto/fips_enabled 文件的内容。如果文件包含 1,RHEL 核心加密组件切换到模式,在此模式中,它们只使用加密算法的 FIPS 批准的实现。如果 /proc/sys/crypto/fips_enabled 包含 0 ,则加密组件不会启用其 FIPS 模式。

FIPS 系统范围的加密策略有助于配置更高级别的限制。因此,支持加密灵活性的通信协议不会宣布系统在选择时拒绝的密码。例如,ChaCha20 算法不是 FIPS 批准的,并且 FIPS 加密策略确保 TLS 服务器和客户端不宣布 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 TLS 密码套件,因为任何尝试使用此类密码都会失败。

如果您在 FIPS 模式下操作 RHEL,并使用提供其自己的与 FIPS 模式相关的配置选项的应用程序,忽略这些选项和对应的应用程序指导。在 FIPS 模式下运行的系统,系统范围的加密策略只强制执行与 FIPS 兼容的加密。例如,如果系统在 FIPS 模式下运行,则忽略 Node.js 配置选项 --enable-fips。如果您在没有对在 FIPS 模式下运行的系统使用 --enable-fips 选项,则不符合 FIPS-140 合规性要求。

注意

RHEL 9 的加密模块尚未获得美国国家标准与技术研究院(NIST)加密模块验证计划(CMVP)的 FIPS 140-3 要求认证。您可以在 合规活动和政府标准 知识库文章的 FIPS 140-2 和 FIPS 140-3 部分中看到加密模块的验证状态。

警告

在 FIPS 模式下运行的 RHEL 9.2 及更新的版本强制任何 TLS 1.2 连接都必须使用Extended Master Secret (EMS)扩展(RFC 7627),因为 FIPS 140-3 标准需要。因此,不支持 EMS 或 TLS 1.3 的旧客户端无法连接到在 FIPS 模式下运行的 RHEL 9 服务器,FIPS 模式下的 RHEL 9 客户端无法连接到只支持没有 EMS 的 TLS 1.2 的服务器。请参阅 使用 Red Hat Enterprise Linux 9.2 强制执行的 TLS 扩展 "Extended Master Secret"