首页 > 解决方案 > 如何检查 CNG Windows API 返回符合 FIPS 的算法实现

问题描述

我在启用 FIPS 模式的主机上调用 Windows CNG API (bcrypt.dll)。启用 FIPS 的事实由 BCryptGetFipsAlgorithmMode 函数的结果确认。

如何确保 API 返回的算法实现符合 FIPS?

看起来仅在主机上启用 FIPS 模式并不能保证 API 防止不符合 FIPS 的算法实例化,因为我可以成功获得 MD5 哈希算法(已知不符合 FIPS)。

标签: c++windowswinapifips

解决方案


知识库 811833 说

本政策仅对应用程序提供建议。因此,如果您启用该策略,它并不能确保所有应用程序都会遵守。操作系统中的以下区域将受此设置影响:

并继续列出受政策影响的事物。这包括 SChannel 和 .NET,但不包括 CNG API 本身。此博客文章确认了 .NET 行为,但可以enforceFIPSPolicy在应用程序配置文件中覆盖它。

调用时BCryptOpenAlgorithmProvider,您可以通过指定来强制提供程序MS_PRIMITIVE_PROVIDER


推荐阅读