Elemento machineKey (Esquema de configuración de ASP.NET)
Artículo
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.
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 sólo 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 sólo 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í.
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.
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 sólo 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 sólo 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í.
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.
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.
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.