ASP.NET 2.0 RijndaelManaged алгоритм шифрования против FIPS - PullRequest
7 голосов
/ 16 декабря 2008

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

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

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

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

Итак:

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

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

Спасибо!

Richard

Ответы [ 8 ]

5 голосов
/ 24 октября 2009

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

2 голосов
/ 26 мая 2010

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

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

<configuration>   

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

Ваш machine.config можно найти здесь: \ Microsoft.NET \ Framework \\ Config \ machine.config

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


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

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

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

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

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

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

2 голосов
/ 19 декабря 2008

Относительно вашего второго вопроса: Может быть, это Статья MSDN помогает.

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

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

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

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

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

1 голос
/ 22 декабря 2008

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

Принудительная криптография, сертифицированная FIPS

0 голосов
/ 29 августа 2018

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

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

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

0 голосов
/ 29 июня 2010

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

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

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

0 голосов
/ 04 февраля 2010

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

0 голосов
/ 22 декабря 2008

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

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

...