AJAX.NET和FIPS

时间:2010-08-02 21:07:09

标签: ajax.net fips

我们的应用程序的一些部分正在使用AJAX.NET 5.7.25.1。我们的服务器管理员已启用FIPS,我们遇到以下错误:

此实现不是Windows平台FIPS验证的加密算法的一部分。

调用堆栈:

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 个答案:

答案 0 :(得分:1)

在.NET中使用任何MD5哈希算法都被认为是非符合FIPS的,因此这将始终给出该错误。我不确定AjaxRequestProcessor是否可以使用MD5,它可能是某种viewstate操作。更改viewstate加密算法以使用3DES而不是MD5可能会有所帮助。

尝试在web.config文件的system.web部分添加此密钥:

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

有关解决方法的完整文章HERE

另外,只是在webconfig中使用debug =“true”会导致出现此错误,因为.NET使用MD5进行某些调试操作。你的web.config中是debug =“false”吗?

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

答案 1 :(得分:1)

这里最快的方法可能是直接修改AJAX.Net专业版来删除使用MD5算法的违规通话。去获取您从Codeplex使用的AJax.NET专业版的源代码。在AjaxPro / Utilities / MD5Helper.cs中:

替换线......

MD5 md5 = new MD5CryptoServiceProvider();

用线......

SHA1 md5 = new SHA1CryptoServiceProvider();

那应该解决它。 SHA1 is FIPS compliant per this page

在这种情况下......正在使用的唯一API是ComputeHash()方法,两个提供程序都是这样实现的......

只需切换加密提供程序,您就可以编译并使用代码而无需任何其他更改,也不会出现任何烦人的FIPS策略违规标记。