当Windows设置为强制使用FIPS兼容算法时,如果有一个应用程序使用在该计算机上运行的非FIPS兼容算法,并且在该应用程序中抛出异常,说它不是Windows FIPS的一部分实现... 我看到有人通过在应用程序代码中注释掉这个检查来绕过FIPS检查。如果可以做到这一点,这真的符合FIPS吗?
Windows如何检测应用程序是否使用FIPS兼容算法?
答案 0 :(得分:1)
算法由Windows内置的库或Microsoft提供的产品提供,它们包含投诉和非投诉算法。
当您的代码调用那些内置库时,这些库包含对windows设置的检查,如果设置了这些库,则会抛出异常。
内部检查的示例 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投诉算法。