Elemento machineKey (Esquema de configuración de ASP.NET)

[Esta documentación se proporciona solo para fines preliminares y está sujeta a cambios en versiones posteriores. Se incluye temas en blanco como marcadores].

Configura los algoritmos y las claves que se utilizan en el cifrado, descifrado y validación de los datos de autenticación de formularios y de los datos de estado de vista, así como para la identificación del estado de sesión fuera de proceso.

<machineKey 
  validationKey="AutoGenerate,IsolateApps" [String]
  decryptionKey="AutoGenerate,IsolateApps" [String]
  validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | 
    HMACSHA384 | HMACSHA512 | alg:algorithm_name]
  decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name]
/>

Atributos y elementos

En las próximas secciones se describen los atributos, los elementos secundarios y los elementos primarios.

Atributos

Atributo

Descripción

decryption

Atributo String opcional.

Especifica el algoritmo que se usa para cifrar y descifrar los datos de autenticación de formularios.

Este atributo puede tener uno de los valores siguientes:

  • Auto  Especifica que ASP.NET determina automáticamente qué algoritmo de descifrado se va a utilizar. Es el valor predeterminado de este atributo.

  • AES  Especifica que ASP.NET utiliza el algoritmo AES (Rijndael) para cifrar y descifrar datos. AES es el algoritmo predeterminado que se utiliza cuando el valor de este atributo es Auto. Este algoritmo cumple los estándares FIPS (Estándar federal de procesamiento de información de los Estados Unidos).

  • DES  Especifica que ASP.NET utiliza el algoritmo Estándar de cifrado de datos (DES) para cifrar y descifrar datos. Este algoritmo se incluye solamente por cuestiones de compatibilidad y únicamente se debe usar si se requiere compatibilidad con versiones anteriores de ASP.NET.

  • 3DES  Especifica que ASP.NET utiliza el algoritmo TripleDES (3DES) para cifrar y descifrar datos. Este algoritmo se incluye solamente por cuestiones de compatibilidad y únicamente se debe usar si se requiere compatibilidad con versiones anteriores de ASP.NET.

  • alg:nombre_algoritmo  Especifica que ASP.NET utiliza un algoritmo personalizado para cifrar y descifrar los datos. El algoritmo de cifrado debe definirse en una clase que se derive de SymmetricAlgorithm. ASP.NET llama al método SymmetricAlgorithm.Create y le pasa el nombre del algoritmo especificado aquí.

decryptionKey

El atributo String es obligatorio.

Especifica la clave que se utiliza para cifrar y descifrar los datos o el proceso que genera la clave. El atributo se utiliza para el cifrado y descifrado de autenticación de formularios y para el cifrado y descifrado del estado de vista cuando se cifra el estado de vista.

Este atributo puede tener uno de los valores siguientes:

  • AutoGenerate, IsolateApps  Especifica que la clave se genera automáticamente. Este es el valor predeterminado. El modificador AutoGenerate especifica que ASP.NET genera una clave aleatoria y la almacena en la Autoridad de seguridad local (LSA). El modificador IsolateApps especifica que ASP.NET genera una clave cifrada única para cada aplicación utilizando el Id. de aplicación de cada aplicación.

  • valor de clave Especifica una clave asignada manualmente. El valor decryptionKey debe establecerse manualmente en una cadena de caracteres hexadecimales para asegurar una configuración coherente en toda la granja de servidores web. La clave debe tener una longitud de 64 bits (16 caracteres hexadecimales) para el cifrado DES o de 192 bits (48 caracteres hexadecimales) para 3DES. Para AES, la clave puede tener una longitud de 128 bits (32 caracteres), 192 bits (48 caracteres) o 256 bits (64 caracteres). La clave más larga proporciona mayor seguridad. Las claves aleatorias se pueden generar manualmente mediante la clase RNGCryptoServiceProvider. Para obtener más información, vea How To: Configure MachineKey in ASP.NET 2.0.

Para obtener más información, vea DecryptionKey.

validation

El atributo MachineKeyValidation es obligatorio.

Especifica que ASP.NET utiliza el algoritmo hash que se usa para validar los datos.

De forma predeterminada, el estado de vista se transmite como una cadena codificada en base64. Aunque a primera vista los datos codificados son ininteligibles, la codificación en base64 no proporciona seguridad alguna porque se puede descodificar fácilmente. Si se almacena información confidencial en el estado de vista, puede especificar que ASP.NET cifre los datos de dicho estado además de validarlos. Puede especificar el cifrado del estado de vista para todas las páginas de la aplicación web o para las páginas seleccionadas. Para obtener más información sobre esta opción, vea ViewStateEncryptionMode y RegisterRequiresViewStateEncryption().

Si desea usar el cifrado del estado de vista, establezca este atributo en AES. En ese caso, el valor de decryptionKey se usará para cifrar los datos de estado de vista y ASP.NET utilizará el algoritmo hash HMACSHA1 para la validación de datos.

Este atributo puede tener uno de los valores siguientes.

  • AES  Especifica que ASP.NET utiliza el algoritmo de cifrado AES (Rijndael) para cifrar y descifrar datos cuando se cifra el estado de vista. Si se especifica esta opción para el atributo validation, el algoritmo HMACSHA1 se usa para la validación.

  • MD5 Especifica que ASP.NET utiliza el algoritmo hash Message Digest 5 (MD5) para validar los datos. Este algoritmo se incluye solamente por cuestiones de compatibilidad y únicamente se debe usar si se requiere compatibilidad con versiones anteriores de ASP.NET.

  • SHA1  Especifica que ASP.NET utiliza el algoritmo hash HMACSHA1 para validar datos. Este algoritmo sólo se puede usar si debe establecer este atributo en AES para admitir el cifrado del estado de vista. De lo contrario, use HMACSHA256, HMACSHA384 o HMACSHA512.

  • 3DES  Especifica que ASP.NET utiliza el algoritmo TripleDES (3DES) para cifrar y descifrar datos cuando se cifra el estado de vista. Si se especifica esta opción para el atributo validation, el algoritmo HMACSHA1 se usa para la validación. Este algoritmo se incluye solamente por cuestiones de compatibilidad y únicamente se debe usar si se requiere compatibilidad con versiones anteriores de ASP.NET.

  • HMACSHA256  Especifica que ASP.NET utiliza el algoritmo hash HMACSHA256 para validar datos. Este es el valor predeterminado. Este algoritmo cumple los estándares FIPS (Estándar federal de procesamiento de información de los Estados Unidos).

  • HMACSHA384  Especifica que ASP.NET utiliza el algoritmo hash HMACSHA384 para validar datos. Esta opción está disponible para las aplicaciones que requieren más seguridad que la proporcionada por el algoritmo HMACSHA256. Este algoritmo cumple los estándares FIPS (Estándar federal de procesamiento de información de los Estados Unidos).

  • HMACSHA512  Especifica que ASP.NET utiliza el algoritmo hash HMACSHA512 para validar datos. Esta opción está disponible para las aplicaciones que requieren más seguridad que la proporcionada por el algoritmo HMACSHA384. Este algoritmo cumple los estándares FIPS (Estándar federal de procesamiento de información de los Estados Unidos).

  • alg:nombre_algoritmo  Especifica que ASP.NET utiliza un algoritmo personalizado. El prefijo "alg:" va seguido del nombre de una clase que se deriva de KeyedHashAlgorithm. ASP.NET llama al método Create() y le pasa el nombre del algoritmo especificado aquí.

validationKey

El atributo String es obligatorio.

Especifica la clave que se usa para validar los datos o el proceso por el que esta se genera. El valor de validationKey también se usa para generar identificadores de sesión fuera de proceso y específicos de la aplicación que garanticen que las variables de estado de sesión están aisladas entre las sesiones.

Este atributo puede tener uno de los valores siguientes:

  • AutoGenerate, IsolateApps  Especifica que la clave se genera automáticamente. Este es el valor predeterminado. El modificador AutoGenerate especifica que ASP.NET genera una clave aleatoria y la almacena en la Autoridad de seguridad local (LSA). El modificador IsolateApps especifica que ASP.NET genera una clave cifrada única para cada aplicación utilizando el Id. de aplicación de cada aplicación.

  • valor de clave Especifica una clave asignada manualmente. El valor validationKey debe establecerse manualmente en una cadena de caracteres hexadecimales para asegurar una configuración coherente en toda la granja de servidores web. La longitud de la clave depende del algoritmo hash utilizado:

    • AES requiere una clave de 256 bits (64 caracteres hexadecimales).

    • MD5 requiere una clave de 128 bits (32 caracteres hexadecimales).

    • SHA1 requiere una clave de 160 bits (40 caracteres hexadecimales).

    • 3DES requiere una clave de 192 bits (48 caracteres hexadecimales).

    • HMACSHA256 requiere una clave de 256 bits (64 caracteres hexadecimales).

    • HMACSHA384 requiere una clave de 384 bits (96 caracteres hexadecimales).

    • HMACSHA512 requiere una clave de 512 bits (128 caracteres hexadecimales).

    Las claves aleatorias se pueden generar manualmente mediante la clase RNGCryptoServiceProvider. Para obtener más información, vea How To: Configure MachineKey in ASP.NET 2.0. Este tema no incluye los algoritmos HMACSHA256, HMACSHA384 o HMACSHA512. Sin embargo, el proceso funciona para los algoritmos también, siempre que se especifique la longitud de clave adecuada.

Para obtener más información, vea ValidationKey.

Elementos secundarios

Ninguno.

Elementos primarios

Elemento

Descripción

configuration

Especifica el elemento raíz requerido en cada archivo de configuración usado por Common Language Runtime y en las aplicaciones de .NET Framework.

system.web

Especifica el elemento raíz de los valores de configuración de ASP.NET de un archivo de configuración y contiene elementos de configuración que configuran las aplicaciones Web ASP.NET y controlan el comportamiento de las aplicaciones.

Comentarios

En el ejemplo de código siguiente se muestra cómo establecer los atributos validationKey y decryptionKey en AutoGenerate. Con el fin de generar claves únicas para cada aplicación en el servidor se especifica el valor isolateApps.

<machineKey 
    validationKey="AutoGenerate,IsolateApps" 
    decryptionKey="AutoGenerate,IsolateApps" 
/>

En el ejemplo de código siguiente se muestra cómo establecer los atributos validationKey y decryptionKey en valores aleatorios generados manualmente. El atributo validationKey se establece en una clave de longitud de 256 bits para el algoritmo hash HMACSHA256, y el atributo decryptionKey también se establece en una clave de longitud de 256 bits, la más larga posible para el algoritmo de cifrado AES. Estos son solo ejemplos y no se deben usar en la aplicación.

<machineKey 
    validationKey="32E35872597989D14CC1D5D9F5B1E94238D0EE32CF10AA2D2059533DF6035F4F" 
    decryptionKey="B179091DBB2389B996A526DE8BCD7ACFDBCAB04EF1D085481C61496F693DF5F4" 
/>

Vea también

Tareas

Walkthrough: Encrypting Configuration Information Using Protected Configuration

How to: Configure Specific Folders Using Location Settings

How to: Lock ASP.NET Configuration Settings

Referencia

Elemento system.web (Esquema de configuración de ASP.NET)

Elemento configuration (Esquema de configuración general)

System.Configuration

System.Web.Configuration

MachineKeySection

MachineKey

Conceptos

Forms Authentication Across Applications

Securing Roles

Securing Membership

Securing Profile Properties

Securing SessionState

ASP.NET Configuration File Hierarchy

Securing Configuration

Configuration Inheritance

Otros recursos

Opciones de configuración generales (ASP.NET)

Opciones de configuración de ASP.NET

Configuring ASP.NET Applications

ASP.NET Configuration API