Windows操作系统如何检测算法是否符合FIPS标准?

3
当Windows设置为强制使用FIPS兼容算法时,如果有一个正在运行非FIPS兼容算法的应用程序,该应用程序会抛出异常,说它不是Windows FIPS实现的一部分...我曾经看到有人通过在应用程序代码中注释掉这个检查来绕过FIPS检查。如果一个人可以做到这一点,那么这是否真正符合FIPS标准呢?
Windows如何检测应用程序是否正在使用FIPS兼容算法?

3
这是一篇微软的阅读材料,或许你会感兴趣:"为什么我们不再推荐使用“FIPS模式”"。 - Scott Chamberlain
1个回答

1

算法由Windows内置的库或Microsoft发布的产品提供,它们包含符合和不符合规范的算法。

当您的代码调用这些内置库时,这些库会包含对Windows设置的检查,并在设置了这些库时抛出异常。

以下是Sha256Managed中检查的示例。

    public SHA256Managed()
    {
#if FEATURE_CRYPTO
        if (CryptoConfig.AllowOnlyFipsAlgorithms)
            throw new InvalidOperationException(Environment.GetResourceString("Cryptography_NonCompliantFIPSAlgorithm"));
        Contract.EndContractBlock();
#endif // FEATURE_CRYPTO

        _stateSHA256 = new UInt32[8];
        _buffer = new byte[64];
        _W = new UInt32[64];

        InitializeState();
    }

如果您使用第三方实现或编写自己的算法实现,Windows 将无法检测到您在具有该设置的系统上使用非 FIPS 兼容算法。

谢谢Scott。所以我们有责任确保它们符合要求,而不是操作系统总是可以强制执行。感谢您的教育。 - sethu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接