为什么不应该在 Windows 上启用“符合 FIPS 的”加密
Windows 有一个隐藏设置,将只启用政府认证的“FIPS 兼容”加密。这听起来像是一种提高 PC 安全性的方法,但事实并非如此。除非您在政府部门工作或需要测试软件在政府 PC 上的表现,否则不应启用此设置。
此调整与其他无用的 Windows 调整神话相吻合。如果您在 Windows 中偶然发现此设置或在其他地方看到它,请不要启用它。如果您已经在没有充分理由的情况下启用它,请使用以下步骤禁用“FIPS 模式”。
什么是符合 FIPS 的加密?
FIPS 代表“联邦信息处理标准”。它是一组政府标准,定义了政府如何使用某些东西——例如,加密算法。 FIPS 定义了某些可以使用的特定加密方法,以及生成加密密钥的方法。它由美国国家标准与技术研究院 (NIST) 发布。
Windows 中的设置符合美国政府的 FIPS 140 标准。启用后,它会强制 Windows 仅使用 FIPS 验证的加密方案,并建议应用程序也这样做。
“FIPS 模式”不会让 Windows 更安全。它只是阻止访问尚未经过 FIPS 验证的较新的加密方案。这意味着它将无法使用新的加密方案,或使用相同加密方案的更快方式。换句话说,它会使您的计算机速度变慢、功能变差,并且可以说 安全性降低。
如果启用此设置,Windows 的行为有何不同
微软在题为“为什么我们不再推荐“FIPS 模式””的博文中解释了此设置的实际作用。 Microsoft 仅在必要时建议您使用 FIPS 模式。例如,如果您使用的是美国政府计算机,则根据政府自己的规定,该计算机应该启用“FIPS 模式”。没有实际情况我想在您自己的个人计算机上启用此功能——除非您在启用此设置的情况下测试您的软件在美国政府计算机上的行为。
此设置对 Windows 本身做了两件事。它强制 Windows 和 Windows 服务仅使用 FIPS 验证的加密。例如,Windows 中内置的 Schannel 服务将无法与较旧的 SSL 2.0 和 3.0 协议一起使用,而是至少需要 TLS 1.0。
Microsoft 的 .NET 框架还将阻止访问未经 FIPS 验证的算法。 .NET 框架为大多数加密算法提供了几种不同的算法,甚至还没有提交所有算法进行验证。例如,Microsoft 指出 .NET 框架中存在三种不同版本的 SHA256 哈希算法。最快的尚未提交验证,但应该同样安全。因此,启用 FIPS 模式要么破坏使用更高效算法的 .NET 应用程序,要么迫使它们使用效率较低的算法并变得更慢。
除了这两件事之外,启用 FIPS 模式会向应用程序推荐它们也仅使用 FIPS 验证的加密。但它不会强迫任何其他东西。传统的 Windows 桌面应用程序可以选择实施他们想要的任何加密代码——甚至是极其脆弱的加密——或者根本不加密。 FIPS 模式不会对其他应用程序执行任何操作,除非它们遵守此设置。
如何禁用 FIPS 模式(或启用它,如果需要)
除非您使用政府计算机并且被迫这样做,否则您不应该启用此设置。如果您确实启用了此设置,某些消费者应用程序实际上可能会要求您禁用 FIPS 模式,以便它们可以正常运行。
如果您需要启用或禁用 FIPS 模式——可能您在启用它后看到了一条错误消息,您需要测试您的软件在启用 FIPS 模式的计算机上的行为方式,或者您使用的是政府计算机并且有要启用它——您可以通过多种方式实现。 FIPS 模式只能在连接到特定网络时启用,或者通过始终适用的系统范围设置启用。
要仅在连接到特定网络时启用 FIPS 模式,请执行以下步骤:
- 打开“控制面板”窗口。
- 点击网络和互联网下的“查看网络状态和任务”。
- 点击“更改适配器设置”。
- 右键点击要为其启用 FIPS 的网络,然后选择“状态”。
- 点击 Wi-Fi 状态窗口中的“无线属性”按钮。
- 单击网络属性窗口中的“安全”选项卡。
- 点击“高级设置”按钮。
- 在 802.11 设置下切换“为此网络启用联邦信息处理标准 (FIPS) 合规性”选项。
此设置也可以在组策略编辑器中在系统范围内更改。此工具仅适用于 Windows 的专业版、企业版和教育版,不适用于家庭版。如果您使用的计算机未加入为您管理计算机组策略设置的域,则只能使用本地组策略编辑器来更改此工具。如果您的计算机加入域并且组策略设置由您的组织集中管理,您将无法自行更改。要在组策略中更改此设置:
- 按 Windows 键 + R 打开“运行”对话框。
- 在“运行”对话框中键入“gpedit.msc”(不带引号),然后按 Enter。
- 在组策略编辑器中导航到“计算机配置\Windows 设置\安全设置\本地策略\安全选项”。
- 在右侧窗格中找到“系统加密:使用符合 FIPS 的算法进行加密、散列和签名”设置,然后双击它。
- 将设置设为“已禁用”,然后点击“确定”。
- 重新启动计算机。
在家庭版 Windows 上,您仍然可以通过注册表设置启用或禁用 FIPS 设置。要检查 FIPS 在注册表中是启用还是禁用,请按照以下步骤操作:
- 按 Windows 键 + R 打开“运行”对话框。
- 在“运行”对话框中键入“regedit”(不带引号),然后按 Enter。
- 导航到“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy\”。
- 查看右侧窗格中的“已启用”值。如果设置为“0”,FIPS 模式将被禁用。如果设置为“1”,则启用 FIPS 模式。要更改设置,请双击“已启用”值并将其设置为“0”或“1”。
- 重新启动计算机。
感谢 Twitter 上的@SwiftOnSecurity 启发了这篇文章!