[英]How can Windows OS detect if an algorithm is FIPS compliant?
當Windows設置為強制使用FIPS兼容算法時,如果有一個應用程序使用在該機器上運行的非FIPS兼容算法,並且在該應用程序中拋出異常,說它不是Windows FIPS實現的一部分。我看到有人通過在應用程序代碼中注釋掉這個檢查來繞過FIPS檢查。 如果可以做到這一點,這真的符合FIPS嗎?
Windows如何檢測應用程序是否使用FIPS兼容算法?
這些算法由Windows內置的庫或Microsoft提供的產品提供,它們包含投訴和非投訴算法。
當您的代碼調用那些內置庫時,這些庫包含對windows設置的檢查,如果設置了這些庫,則會拋出異常。
以下是Sha256Managed
內部檢查的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投訴算法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.