Cómo configurar el modo de cifrado heredado en ASP.NET

Resumen

La actualización de seguridad que se describe en el boletín de seguridad de Microsoft MS10-070 modifica el mecanismo de cifrado predeterminado en ASP.NET realizar la validación (firma) además del cifrado. En este artículo se describen las opciones de configuración para revertir al comportamiento heredado para el cifrado en ASP.NET.

Para obtener más información acerca de esta actualización de seguridad, visite el siguiente sitio web:

http://www.microsoft.com/technet/security/bulletin/ms10-070.mspx

Más información

ASP.NET permite a los usuarios cifrar o validar datos de manera opcional a través de la configuración en la sección MachineKey. La actualización de seguridad que aborda la actualización de seguridad MS10-070 cambia el comportamiento predeterminado del cifrado en ASP.NET para realizar la validación además del cifrado, incluso si solo se solicita cifrado.

Después de instalar la actualización de seguridad que se describe en el boletín de seguridad MS10-070, se realizan las siguientes operaciones cuando el cifrado está configurado para ASP.NET:

  • Durante el cifrado de datos, se genera una firma HMAC para los datos cifrados y se anexa a ellos.
  • Durante el descifrado de datos, se valida la firma HMAC antes de descifrar los datos.

Las siguientes claves de la configuración de ASP.NET aplicación (appSettings) controlan el comportamiento de la firma además del cifrado.

Tecla Tipo Valor predeterminado Versiones on.NET compatibles
aspnet:UseLegacyEncryption Boolean Falsa Microsoft .NET Framework 2.0 Service Pack 1
Microsoft .NET Framework 2.0 Service Pack 2
Microsoft .NET Framework 3.5
Microsoft .NET Framework 3.5 Service Pack 1
Microsoft .NET Framework 4.0
aspnet:UseLegacyMachineKeyEncryption Boolean Falsa Microsoft .NET Framework 4.0
aspnet:ScriptResourceAllowNonJsFiles Boolean Falsa Microsoft .NET Framework 3.5 Service Pack 1
Microsoft .NET Framework 4.0

Descripción de aspnet:UseLegacyEncryption appSetting

Esta configuración de aplicación especifica si el cifrado realizará además la validación con una clave HMAC incluso cuando la sección de validación de la sección machineKey de ASP.NET configuración no esté configurada para la validación de firmas HMAC.

aspnet:UseLegacyEncryption Descripción
Falso (predeterminado) Esta configuración configura ASP.NET para realizar además la validación de firmas HMAC cuando ASP.NET está configurado para usar cifrado. Esto ocurrirá incluso si la validación en machineKey no está configurada para firmar mediante una clave HMAC.
Verdadera Esta configuración configura ASP.NET no realizar la validación de firmas HMAC cuando está configurado para usar cifrado y no la firma HMAC a través de la validación en machineKey.

Nota Esta configuración podría permitir que un cliente malintencionado descifre, falsifique o manipule datos cifrados.

Para configurar esta opción, agregue la siguiente configuración en el equipo o la aplicación web.config archivo:

<configuration>
...
 <appSettings>
 ...
 <add key="aspnet:UseLegacyEncryption" value="false" />
 </appSettings>
</configuration> 

Descripción de aspnet:UseLegacyMachineKeyEncryption appSetting

Esta configuración de aplicación especifica si el cifrado a través de la clase System.Web.Security.MachineKey realizará además la validación con una clave HMAC incluso cuando el argumento MachineKeyProtection proporcionado no especifique que se realice la validación.

aspnet:UseLegacyMachineKeyEncryption Descripción
Falso (predeterminado) Esta configuración configura ASP.NET para realizar adicionalmente la validación de firmas HMAC a través de la clase MachineKey cuando ASP.NET está configurado para usar cifrado. Esto ocurrirá incluso si el argumento MachineKeyProtection proporcionado no especifica que se realice la validación.
Verdadera Esta configuración configura ASP.NET no realizar la validación de firmas HMAC a través de la clase MachineKey cuando está configurado para usar cifrado y no la firma HMAC a través del argumento MachineKeyProtection proporcionado.

Nota Esta configuración podría permitir que un cliente malintencionado descifre, falsifique o manipule datos cifrados.

Para configurar esta opción, agregue la siguiente configuración en el equipo o la aplicación web.config archivo:

<configuration>
...
 <appSettings>
 ...
 <add key="aspnet:UseLegacyMachineKeyEncryption" value="false" />
 </appSettings>
</configuration> 

Descripción de aspnet:ScriptResourceAllowNonJsFiles appSetting

Esta configuración de la aplicación especifica si el controlador ScriptResource.axd de ASP.NET servirá archivos que no son JavaScript (extensión .js). ScriptResource.axd es un controlador de ASP.NET que devuelve archivos de origen de JavaScript a los componentes AJAX en una página web ASP.NET.

aspnet:ScriptResourceAllowNonJsFiles Descripción
Falso (predeterminado) Esta configuración configura ASP.NET para servir solo archivos estáticos que tienen la extensión de .js (JavaScript) a través del controlador ScriptResource.axd.
Verdadera Esta configuración configura ASP.NET para servir cualquier archivo estático al que la aplicación ASP.NET tenga acceso a través del controlador ScriptResource.axd.

Nota: Esta configuración permite que cualquier archivo dentro de la aplicación ASP.NET se entregue a través del controlador. Si alguno de estos archivos contiene datos confidenciales o confidenciales, esta configuración puede filtrar información confidencial a un cliente.

Para configurar esta opción, agregue la siguiente configuración en el equipo o la aplicación web.config archivo:

<configuration>
...
 <appSettings>
 ...
 <add key="aspnet:ScriptResourceAllowNonJsFiles" value="false" />
 </appSettings>
</configuration> 

Referencias

Para obtener más información acerca de la sección MachineKey, visite el siguiente sitio web de Microsoft:

http://msdn.microsoft.com/en-us/library/w8h3skw9.aspx
Para obtener más información acerca de la clase System.Web.Security.MachineKey, visite el siguiente sitio web de Microsoft:

http://msdn.microsoft.com/en-us/library/system.web.security.machinekey.aspx Para obtener más información acerca de cómo utilizar la configuración de aplicaciones (appSettings), haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:

815786 Cómo almacenar y recuperar información personalizada de un archivo de configuración de aplicaciones mediante Visual C#
313405 Cómo almacenar y recuperar información personalizada de un archivo de configuración de aplicaciones mediante Visual Basic .NET o Visual Basic 2005

Para obtener más información acerca de ASP.Net configuración, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

307626 INFORMACIÓN: Información general sobre la configuración de ASP.NET