【问题标题】:AJAX.NET and FIPSAJAX.NET 和 FIPS
【发布时间】:2011-03-24 10:26:19
【问题描述】:

我们的应用程序有几个部分使用 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 标准?

【问题讨论】:

    标签: ajax.net fips


    【解决方案1】:

    这里完成的最快方法可能是直接修改 AJAX.Net pro 源以删除使用 MD5 算法的违规调用。从 Codeplex 获取您正在使用的 AJax.NET pro 版本的源代码。在 AjaxPro/Utilities/MD5Helper.cs 中:

    换行...

    MD5 md5 = new MD5CryptoServiceProvider();
    

    用线...

    SHA1 md5 = new SHA1CryptoServiceProvider();
    

    这应该可以解决它。 SHA1 is FIPS compliant per this page

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

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

    【讨论】:

      【解决方案2】:

      在 .NET 中使用任何 MD5 哈希算法都被认为是 NON-FIPS 兼容的,因此这总是会出现该错误。我不确定 AjaxRequestProcessor 是否可能使用 MD5,它可能是某种视图状态操作。更改视图状态加密算法以使用 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        • 2023-03-16
        相关资源
        最近更新 更多