Подтвердить что ты не робот

Когда алгоритм С# AES будет соответствовать FIPS?

Прямо сейчас я могу получить алгоритм RijndaelManaged для работы на компьютере с включенной настройкой локальной безопасности для FIPS, это отключить его. Это правительственный компьютер, поэтому я не уверен, как это будет летать. Я видел сообщения на сайтах msdn, в которых говорится, что они работают над версией, совместимой с AES FIPS, но я не могу найти ничего более, Кто-нибудь знает, когда это может произойти?

4b9b3361

Ответ 1

Я никогда не понимал этого до этого вопроса, но ты прав. Конструктор имеет следующее:

public RijndaelManaged()
{
    if (Utils.FipsAlgorithmPolicy == 1)
    {
        throw new InvalidOperationException(Environment.GetResourceString("Cryptography_NonCompliantFIPSAlgorithm"));
    }
}

System.Security.Cryptography.AesManaged имеет нечто похожее:

public AesManaged()
{
    if (CoreCryptoConfig.EnforceFipsAlgorithms)
    {
        throw new InvalidOperationException(SR.GetString("Cryptography_NonCompliantFIPSAlgorithm"));
    }
    this.m_rijndael = new RijndaelManaged();
    this.m_rijndael.BlockSize = this.BlockSize;
    this.m_rijndael.KeySize = this.KeySize;
}

Вы пробовали System.Security.Cryptography.AesCryptoServiceProvider? Он должен работать, поскольку он использует CAPI, основанную на FIPS AES, встроенную в Windows.

Этот вопрос на форуме библиотеки Microsoft.NET Base Class обсуждает, какие алгоритмы являются совместимыми с FIPS и имеет хорошие ссылки.

Похоже, что Microsoft делает последовательную попытку подчиниться настройке HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy на предварительных настройках, Vista и использование API BCryptGetFipsAlgorithmMode для Post-Vista.

Я предполагаю, что нетривиальные усилия, связанные с сертификацией реализации как совместимыми с FIPS, поэтому Microsoft, вероятно, не хочет повторять этот процесс и предлагает только AesCryptoServiceProvider для клиентов, которые абсолютно нуждаются в этом требовании.

Этот пост в блоге MSDN содержит комментарий, который делает его более ясным:

Простой способ выяснить, алгоритм является совместимым или нет. посмотрите на суффикс. Ни один из * Управляемые типы сертифицированы FIPS. * CryptoServiceProvider и * Cng типы, однако, вполне могут быть FIPS проверенный. Если они алгоритм, который разрешает FIPS, и используя поставщиков Microsoft по умолчанию, то они будут.

Например, SHA256Managed не (потому что он управляется). SHA256CryptoServiceProvider и SHA256Cng.
MD5CryptoServiceProvider не (поскольку MD5 не является алгоритмом FIPS).

Ответ 2

Неуправляемый AesCryptoServiceProvider сертифицирован, если сама ОС сертифицирована по мере вызова ОС. И это будет штопать сайт быстрее, а также, за счет совместимости между платформами.

Ответ 3

Мой сайт должен был получить колебание для соответствия FIPS в .net.