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

时间:2017-05-11 20:00:32

标签: c# windows algorithm fips

当Windows设置为强制使用FIPS兼容算法时,如果有一个应用程序使用在该计算机上运行的非FIPS兼容算法,并且在该应用程序中抛出异常,说它不是Windows FIPS的一部分实现... 我看到有人通过在应用程序代码中注释掉这个检查来绕过FIPS检查。如果可以做到这一点,这真的符合FIPS吗?

Windows如何检测应用程序是否使用FIPS兼容算法?

1 个答案:

答案 0 :(得分: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投诉算法。