Как ОС 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 в системе с этим набором настроек.

Другие вопросы по тегам