如何检查符合 FIPS 的 CNG Windows API returns 算法实现

How to check that CNG Windows API returns algorithm implementation which is FIPS compliant

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

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

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

KB 811833 says

This policy is only advisory to applications. Therefore, if you enable the policy, it does not make sure that all applications will comply. The following of areas in the operating system will be affected by this setting:

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

调用 BCryptOpenAlgorithmProvider 时,您可以通过指定 MS_PRIMITIVE_PROVIDER.

来强制提供程序