2010-08-02 5 views
3

Nous avons quelques sections de notre application qui utilisent AJAX.NET 5.7.25.1. Nos administrateurs de serveur ont activé FIPS et nous sommes confrontés à l'erreur suivante:AJAX.NET et FIPS

Cette implémentation ne fait pas partie des algorithmes cryptographiques validés Windows Platform FIPS.

pile d'appel:

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) 

sont les versions plus récentes des bibliothèques AJAX.NET FIPS conforme?

Répondre

1

Le meilleur moyen de faire ici peut-être modifier simplement la source pro AJAX.Net directement pour supprimer l'appel incriminé qui utilise l'algorithme MD5. Allez chercher la source de la version de AJax.NET pro que vous utilisez de Codeplex. Dans AjaxPro/Utilitaires/MD5Helper.cs:

Remplacer la ligne ...

MD5 md5 = new MD5CryptoServiceProvider(); 

avec la ligne ...

SHA1 md5 = new SHA1CryptoServiceProvider(); 

Cela devrait corriger. SHA1 is FIPS compliant per this page

Dans ce cas ... la seule API qui est utilisée est la méthode ComputeHash(), que les deux fournisseurs à mettre en œuvre si ...

simplement en changeant les fournisseurs de crypto, vous devriez être en mesure de compiler et utilisez le code sans aucune autre modification et sans aucun indicateur de violation de politique FIPS ennuyeux.

1

L'utilisation de tout algorithme de hachage MD5 dans .NET est considérée comme non conforme à la norme FIPS, ce qui donne toujours cette erreur. Je ne suis pas sûr si le AjaxRequestProcessor pourrait faire avec MD5, il pourrait être une sorte d'opération viewstate. Modifier votre algorithme de cryptage viewstate pour utiliser 3DES au lieu de MD5 peut aider.

Essayez d'ajouter cette clé dans votre section system.web du fichier web.config:

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

Article complet à propos de la solution de contournement HERE. De plus, le simple fait d'avoir debug = "true" dans votre webconfig peut provoquer l'apparition de cette erreur car .NET utilise MD5 pour certaines opérations de débogage. Est-ce que debug = "false" dans votre web.config?

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