Как ОС Windows может определить, соответствует ли алгоритм FIPS?
Когда в Windows задано принудительное использование алгоритмов, соответствующих FIPS, и если на этом компьютере работает приложение, использующее алгоритм, не совместимый с FIPS, и в этом приложении создается исключение, говорящее о том, что оно не является частью реализации Windows FIPS. Я видел, как кто-то обходил проверку FIPS, комментируя эту проверку в коде приложения. Если кто-то может это сделать, действительно ли это соответствует FIPS?
Как Windows определяет, использует ли приложение алгоритм, совместимый с FIPS, или нет?
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();
}
Если вы используете стороннюю реализацию или напишите свою собственную реализацию алгоритма, окна не обнаружат, что вы используете алгоритмы жалоб не FIPS в системе с этим набором настроек.