AJAX.NET и FIPS - PullRequest
       12

AJAX.NET и FIPS

3 голосов
/ 03 августа 2010

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

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

Стек вызовов:

at System.Security.Cryptography.MD5CryptoServiceProvider..ctor()     
at MS.Utilities.MD5Helper.GetHash(Byte[] data)     
at Ajax.AjaxRequestProcessor.Run()     
at Ajax.AjaxHandler.ProcessRequest(HttpContext context)     
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()     
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Новые версии библиотек AJAX.NET совместимы с FIPS?

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Самый быстрый способ сделать это - просто изменить исходный код AJAX.Net pro напрямую, чтобы удалить вызывающий вызов вызов, использующий алгоритм MD5. Получите исходный код версии AJax.NET, которую вы используете, от Codeplex. В AjaxPro / Утилиты / MD5Helper.cs:

Заменить строку ...

MD5 md5 = new MD5CryptoServiceProvider();

с линией ...

SHA1 md5 = new SHA1CryptoServiceProvider();

Это должно исправить это. SHA1 соответствует FIPS для этой страницы

В этом случае ... единственным используемым API является метод ComputeHash (), который оба провайдера реализуют так ...

Просто переключив провайдеров шифрования, вы сможете скомпилировать и использовать код без каких-либо других изменений и без раздражающих флагов нарушения политики FIPS.

1 голос
/ 20 августа 2010

Использование ЛЮБОГО алгоритма хеширования MD5 в .NET считается не-FIPS-совместимым, поэтому это всегда будет приводить к этой ошибке.Я не уверен, что AjaxRequestProcessor может работать с MD5, это может быть какая-то операция просмотра состояния.Может помочь изменение алгоритма шифрования вашего состояния представления для использования 3DES вместо MD5.

Попробуйте добавить этот ключ в раздел system.web файла web.config:

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

Полная статья об обходном пути ТУТ .

Кроме того, просто наличие debug = "true" в вашем webconfig может вызвать появление этой ошибки, так как .NET использует MD5 для некоторых операций отладки.Является ли debug = "false" в вашем файле web.config?

<system.web>
    <compilation debug="false">
</system.web>
...