Windows OS 如何检测算法是否符合 FIPS?
How can Windows OS detect if an algorithm is FIPS compliant?
当 Windows 设置强制使用符合 FIPS 的算法时,如果该机器上有一个应用程序使用不符合 FIPS 的算法 运行,并且该应用程序会抛出异常说类似的话不是 windows FIPS 实施的一部分...
我看到有人通过在应用程序代码中注释掉此检查来绕过 FIPS 检查。如果能做到这一点,这是否真正符合 FIPS 标准?
windows 如何检测应用程序是否使用符合 FIPS 的算法?
这些算法由 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();
}
如果您使用第 3 方实现或自己编写算法实现,windows 将不会检测到您在具有该设置集的系统上使用非 FIPS 兼容算法。
当 Windows 设置强制使用符合 FIPS 的算法时,如果该机器上有一个应用程序使用不符合 FIPS 的算法 运行,并且该应用程序会抛出异常说类似的话不是 windows FIPS 实施的一部分... 我看到有人通过在应用程序代码中注释掉此检查来绕过 FIPS 检查。如果能做到这一点,这是否真正符合 FIPS 标准?
windows 如何检测应用程序是否使用符合 FIPS 的算法?
这些算法由 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();
}
如果您使用第 3 方实现或自己编写算法实现,windows 将不会检测到您在具有该设置集的系统上使用非 FIPS 兼容算法。