ASP.NET 2.0 RijndaelManaged алгоритм шифрования по сравнению с FIPS

У меня проблема с приложением ASP.NET 2.0. Наши сетевые специалисты только что повысили нашу безопасность, и теперь я получаю сообщение об ошибке floowing всякий раз, когда пытаюсь получить доступ к приложению:

«Эта реализация не является частью проверенных FIPS алгоритмов шифрования платформы Windows».

Я провел небольшое исследование, и похоже, что ASP.NET использует алгоритм шифрования RijndaelManaged AES для шифрования ViewState страниц ... и RijndaelManaged входит в список алгоритмов, не совместимых с FIPS. Мы определенно не вызываем явно какой-либо алгоритм шифрования ... тем более что-либо из списка несовместимых.

Думаю, этот бизнес с ViewState имеет для меня смысл. Однако я не могу понять, что с этим делать. Я нашел статью базы знаний, в которой предлагается использовать параметр web.config для указания другого алгоритма. ... но либо это не прижилось, либо алгоритм тоже не работает.

So:

1) Действительно ли проблема в RijndaelManaged / ViewState? Или я лаю не на то дерево?

2) Как указать, какой алгоритм использовать вместо RijndaelManaged? У меня есть список алгоритмов, которые соответствуют и не соответствуют требованиям; Я просто не уверен, куда вставить эту информацию.

Спасибо!

Ричард


person R Rush    schedule 16.12.2008    source источник


Ответы (8)


Дважды проверьте, что у вас нет <compilation debug="true" /> в вашем Web.config. Когда установлена ​​отладочная компиляция, .NET использует хеш MD5 для некоторой внутренней бухгалтерии. MD5 не совместим с FIPS, поэтому вы получите эту ошибку.

person Paul Alexander    schedule 24.10.2009

Что касается вашего второго вопроса: может быть, поможет эта статья MSDN.

Согласно документации, вы можете настроить алгоритм шифрования следующим образом:

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>

Для проверки можно использовать одно из следующего: [SHA1 | MD5 | 3DES | AES]

Для расшифровки можно использовать одно из следующих: [Авто | DES | 3DES | AES]

Итак, чтобы соответствовать требованиям FIPS, вы можете использовать 3DES (хотя AFAIK теоретически менее безопасен).

person kay.herzam    schedule 19.12.2008

Источник: http://blogs.msdn.com/b/shawnfa/archive/2008/03/14/disables-the-fips-algorithm-check.aspx

Вы можете добавить следующее в свой web.config или конфигурацию компьютера, чтобы ваши приложения ASP.Net перестали давать сбой из-за проверок соответствия FIP.

<configuration>   

  <runtime>
        <enforceFIPSPolicy enabled="false"/>
    </runtime>

Your machine.config can be found here: \Microsoft.NET\Framework\\config\machine.config

Если вы измените свой machine.config, может потребоваться iisreset, чтобы настройки вступили в силу. Примечание: изменение файла maching.config повлияет на все приложения .NET в системе.


Чтобы ваше приложение было совместимо с FIP, не отключая FIP, вы можете попробовать следующее:

1) Настройте ключ компьютера для использования 3DES для дешифрования и SHA1 для проверки.

РЕДАКТИРОВАТЬ (2018-04-05): новый IIS8.5 STIG говорит, что вы должны установить для параметра Machine Key значение Validation: HMACSHA256, Encryption: Auto.

<configuration>
<system.web>
    <authentication mode="Windows" />
    <machineKey decryption="3DES" decryptionKey="AutoGenerate,IsolateApps" validation="SHA1" validationKey="AutoGenerate,IsolateApps" />
</system.web>
</configuration>

ПРИМЕЧАНИЕ: если вы используете среду веб-фермы, вы можете использовать графический интерфейс IIS и перейти в раздел конфигурации машинных ключей, чтобы сгенерировать набор ключей и использовать те же ключи во всей веб-ферме.

2) Убедитесь, что ваша компиляция debug = "false" и все директивы страницы имеют debug = "false". Установка значения true для отладки также запускает проверку соответствия требованиям FIP.

person WWC    schedule 26.05.2010

вам также нужно будет сделать это на коробке

Применение сертифицированной криптографии FIPS

person Community    schedule 22.12.2008
comment
Хотя это не очень актуально, вряд ли достойно -1, кем бы вы ни были - так что балансируйте, поддерживая голосование (если -1er вернется и объяснит, я буду рад убрать свой голос за). (Ссылка объясняет, как заинтересованные участники сети включили бы эту политику в первую очередь) - person Ruben Bartelink; 04.12.2009

Мы попробовали предложенный вами machineKey. Это помогло с некоторыми веб-приложениями (в сочетании с ними), и это хорошо, но не всеми из них, что разочаровывает.

Я чего-то упускаю, но, черт возьми, могу сказать что.

person R Rush    schedule 22.12.2008

Некоторые сайты, такие как сайты SharePoint, имеют машинный ключ SHA1 уже в веб-конфигурации, поэтому проверьте, есть ли там алгоритм, если он есть, удалите его и добавьте выше.

person ross    schedule 04.02.2010

Из того, что я видел, наиболее частыми причинами этой проблемы являются машинный ключ viewstate и проблемы с конфигурацией compilation = "debug". Насколько мне известно, в .NET 2.0 алгоритм 3DES для проверки / шифрования состояния просмотра - ЕДИНСТВЕННЫЙ алгоритм, совместимый с FIPS. Так что параметры SHA1, MD5 и AES там работать не будут.

Также важно понимать, что если в коде есть ссылка на ЛЮБОЙ алгоритм, не совместимый с FIPS, даже если он фактически никогда не использовался / не был доступен, вызовет ошибку соответствия FIPS. Например, простое объявление переменной MD5CryptoServiceProvider без ее создания вызовет ошибку. Сюда входят и другие сборки .NET, на которые есть ссылки, поэтому убедитесь, что никакие библиотеки DLL, на которые есть ссылки, возможно, также не используют алгоритмы, несовместимые с FIP.

Вот удобный сайт, на котором перечислены все алгоритмы FIPS и не-FIPS в .NET http://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html

person Dan    schedule 29.06.2010

Согласно this answer ни одна управляемая реализация не сертифицирована FIPS для алгоритмов в пространство имен Cryptography.

Использование неуправляемой реализации должно решить вашу проблему: Rijnaed является предшественником AES - возможно, попробуйте AesCng?

Недостатком неуправляемых реализаций является то, что они могут быть несовместимыми со старыми версиями Windows < / а>.

person Ioanna    schedule 29.08.2018