2008-12-16 5 views
7

Tengo un problema con una aplicación ASP.NET 2.0. Nuestros amigos de la red simplemente subieron nuestra seguridad, y ahora me sale el error floowing cada vez que intento acceder a la aplicación:ASP.NET 2.0 RijndaelArreglo de cifrado administrado vs. FIPS

"Esta implementación no es parte de los Windows Platform FIPS validado algoritmos criptográficos."

que he hecho un poco de investigación, y suena como ASP.NET utiliza el algoritmo de cifrado AES RijndaelManaged para cifrar el ViewState de páginas ... y RijndaelManaged está en la lista de algoritmos que no son compatibles con FIPS . Ciertamente no estamos llamando explícitamente al ningún algoritmo de cifrado ... mucho menos a cualquier cosa en la lista que no cumpla.

Este negocio de ViewState tiene sentido para mí, supongo. Sin embargo, lo que no puedo resolver es qué hacer al respecto. He encontrado un KB article que sugiere usar una configuración web.config para especificar un algoritmo diferente ... pero o bien no se pegó, o ese algoritmo no está preparado para el rapé, tampoco.

Así:

1) es lo RijndaelManaged/ViewState en realidad el problema? ¿O estoy ladrando el árbol equivocado?

2) ¿Cómo especifico qué algoritmo usar en lugar de RijndaelManaged? Tengo una lista de algoritmos que son y no son compatibles; No estoy seguro de dónde insertar esa información.

¡Gracias!

Richard

Respuesta

2

En cuanto a su segunda pregunta: ¿Tal vez esto MSDN Article ayuda.

De acuerdo con los documentos se puede configurar el algoritmo de cifrado de la siguiente manera:

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

Para la validación, puede utilizar uno de los siguientes: [SHA1 | MD5 | 3DES | AES]

Para el descifrado, puede usar uno de los siguientes: [Auto | DES | 3DES | AES]

Para cumplir con FIPS, puede usar 3DES (aunque AFAIK teóricamente es menos seguro).

0

Hemos probado la máquina que usted sugiere. Se ayuda con algunas aplicaciones web (cuando se combina con), lo cual es genial, pero no todo de ellos, lo cual es frustrante.

Me falta algo, pero me daña si puedo decir qué.

0

que también tendrá que hacer esto en el cuadro de

Enforcing FIPS Certified Cryptography

+0

Aunque no muy relevante, apenas digno de un -1, las personas que esté - así equilibrar por Upvoting (si el -1er vuelve y explica, estoy feliz de eliminar mi voto popular). (El enlace explica cómo la gente de la red en cuestión habría cambiado esta política en primer lugar) –

5

a comprobar que usted no tiene <compilation debug="true" /> en su Web.config. Cuando se establece la compilación de depuración, .NET usa un hash MD5 para algunos registros internos. MD5 no cumple con FIPS, así que obtienes este error.

0

Algunos sitios como los sitios de SharePoint tienen la clave del equipo SHA1 ya en la configuración web, así que verifique si ya hay un algoritmo allí si hay eliminarlo y agregar lo anterior.

2

Fuente: http://blogs.msdn.com/b/shawnfa/archive/2008/03/14/disabling-the-fips-algorithm-check.aspx

Se podría añadir lo siguiente a su web.config o Ajuste de la máquina por lo que sus aplicaciones ASP.NET no se detendrá debido a los controles de cumplimiento FIP.

<configuration> 

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

Su machine.config se puede encontrar aquí: \ Microsoft.NET \ Framework \\ config \ machine.config

Si cambia de machine.config, un iisreset puede ser requerido para que la configuración surta efecto. Nota: cambiar su maching.config afectará todas las aplicaciones .NET en el sistema.


para obtener su aplicación sea compatible con FIPS sin tener que desactivar la FIP, puede intentar lo siguiente:

1) Configure su clave máquina para utilizar 3DES para el descifrado y SHA1 para su validación.

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

NOTA: si está utilizando un entorno de granja de servidores web, puede utilizar la GUI de IIS y vaya a la sección de configuración de claves del equipo para generar un juego de llaves y utilizar las mismas claves en toda la granja de servidores web.

2) Asegúrese de que su depuración de compilación = "falso", y todas las directivas de página tienen depuración = "falso". Establecer la depuración en verdadero también iniciará la verificación de cumplimiento de FIP.

0

La clave de la máquina viewstate y compilación = problemas de configuración de "depuración" son las causas más comunes de este problema por lo que he visto. Por lo que sé, en .NET 2.0, el algoritmo 3DES para la validación/encriptación de viewstate es el ÚNICO que cumple con FIPS. Entonces, las opciones SHA1, MD5 y AES no funcionarán allí.

También es importante tener en cuenta que si hay una referencia a CUALQUIER algoritmo que no sea compatible con FIPS en el código, incluso si nunca se usa/se alcanza, provocará el error de cumplimiento FIPS. Por ejemplo, solo declarar una variable MD5CryptoServiceProvider sin siquiera instanciarla causará el error. Esto incluye otros ensamblados .NET referenciados, así que asegúrese de que los dlls de referencia posiblemente no estén usando algoritmos que no sean fips.

Aquí es un sitio práctico que enumera todos los algoritmos FIPS y no FIPS en .NET http://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html