machineKey, élément (Schéma des paramètres ASP.NET)

Configure des algorithmes et des clés à utiliser pour le chiffrement, le déchiffrement et la validation des données d'authentification par formulaire et des données d'état d'affichage, ainsi que l'identification d'état de session out-of-process.

<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]
/>

Attributs et éléments

Les sections suivantes décrivent des attributs, des éléments enfants et des éléments parents.

Attributs

Attribut

Description

decryption

Attribut String facultatif.

Spécifie l'algorithme utilisé pour chiffrer et déchiffrer les données d'authentification par formulaire.

Cet attribut peut posséder l'une des valeurs suivantes.

  • Auto  Spécifie qu'ASP.NET détermine automatiquement quel algorithme de déchiffrement utiliser. Ceci est la valeur par défaut de cet attribut.

  • AES  Spécifie qu'ASP.NET utilise l'algorithme AES (Rijndael) pour chiffrer et déchiffrer les données. AES est l'algorithme par défaut utilisé lorsque la valeur de cet attribut est Auto. Cet algorithme est conforme aux normes FIPS (Federal Information Processing Standards) des États-Unis.

  • DES  Spécifie qu'ASP.NET utilise l'algorithme DES (Data Encryption Standard, norme de chiffrement des données) pour chiffrer et déchiffrer les données. Cet algorithme est inclus uniquement pour des raisons d'héritage et doit être utilisé uniquement si la compatibilité avec les versions antérieures d'ASP.NET est requise.

  • 3DES  Spécifie qu'ASP.NET utilise l'algorithme TripleDES (3DES) pour chiffrer et déchiffrer des données. Cet algorithme est inclus uniquement pour des raisons d'héritage et doit être utilisé uniquement si la compatibilité avec les versions antérieures d'ASP.NET est requise.

  • alg:algorithm_name  Spécifie qu'ASP.NET utilise un algorithme personnalisé pour chiffrer et déchiffrer des données. L'algorithme de chiffrement doit être défini dans une classe qui dérive de SymmetricAlgorithm. ASP.NET appelle la méthode SymmetricAlgorithm.Create et passe le nom de l'algorithme spécifié ici.

decryptionKey

Attribut String requis.

Spécifie la clé qui permet de chiffrer et de déchiffrer des données, ou le processus par lequel la clé est générée. Cet attribut est utilisé pour le chiffrement et le déchiffrement de l'authentification par formulaire et pour le chiffrement et le déchiffrement de l'état d'affichage lorsque chiffré.

Cet attribut peut posséder l'une des valeurs suivantes.

  • AutoGenerate, IsolateApps  Spécifie que la clé est générée automatiquement. Valeur par défaut. Le modificateur AutoGenerate spécifie qu'ASP.NET génère une clé aléatoire et la stocke dans l'autorité de sécurité locale (LSA). Le modificateur IsolateApps spécifie qu'ASP.NET génère une clé chiffrée unique pour chaque application à l'aide de l'ID d'application de chaque application.

  • key value  Spécifie une clé assignée manuellement. La valeur decryptionKey doit être attribuée manuellement à une chaîne de caractères hexadécimaux pour permettre une configuration cohérente sur tous les serveurs d'une batterie de serveurs Web. La touche doit être longue de 64 bits (16 caractères hexadécimaux) pour le chiffrement DES, ou de 192 bits (48 caractères hexadécimaux) pour 3DES. Pour AES, la clé peut faire 128 bits (32 caractères), 192 bits (48 caractères) ou 256 bits (64 caractères). La plus longue clé fournit le plus de sécurité. Les clés aléatoires peuvent être générées manuellement à l'aide de la classe RNGCryptoServiceProvider. Pour plus d'informations, consultez Procédure : Configurer MachineKey en ASP.NET 2.0.

Pour plus d'informations, consultez DecryptionKey.

validation

Attribut MachineKeyValidation requis.

Spécifie qu'ASP.NET utilise l'algorithme de hachage utiliser pour valider des données.

Par défaut, l'état d'affichage est transmis en tant que chaîne encodée en base 64. Bien qu'à première vue l'élément encodé soit inintelligible, l'encodage en base 64 ne fournit aucune sécurité parce qu'il est facilement décodé. Si vous stockez des informations sensibles dans l'état d'affichage, vous pouvez spécifier qu'ASP.NET chiffre les données d'état d'affichage en plus de leur validation. Vous pouvez spécifier le chiffrement d'état d'affichage pour toutes les pages de votre application Web ou pour les pages sélectionnées. Pour plus d'informations sur cette option, consultez ViewStateEncryptionMode et RegisterRequiresViewStateEncryption().

Si vous souhaitez utiliser le chiffrement de l'état d'affichage, affectez à cet attribut la valeur AES. Dans ce cas, la valeur de decryptionKey est utilisée pour chiffrer des données d'état d'affichage et ASP.NET utilise l'algorithme de hachage HMACSHA1 pour la validation des données.

Cet attribut peut posséder l'une des valeurs suivantes.

  • AES  Spécifie qu'ASP.NET utilise l'algorithme de chiffrement AES (Rijndael) pour chiffrer et déchiffrer les données lorsque l'état d'affichage est chiffré. Si cette option est spécifiée pour l'attribut validation, l'algorithme HMACSHA1 est utilisé pour la validation.

  • MD5  Spécifie qu'ASP.NET utilise l'algorithme de hachage Message Digest 5 (MD5) pour valider des données. Cet algorithme est inclus uniquement pour des raisons d'héritage et doit être utilisé uniquement si la compatibilité avec les versions antérieures d'ASP.NET est requise.

  • SHA1  Spécifie qu'ASP.NET utilise l'algorithme de hachage HMACSHA1 pour valider des données. Cet algorithme doit être utilisé uniquement si vous devez affecter la valeur AES à cet attribut pour prendre en charge le chiffrement de l'état d'affichage. Sinon, utilisez HMACSHA256, HMACSHA384 ou HMACSHA512.

  • 3DES  Spécifie qu'ASP.NET utilise l'algorithme TripleDES (3DES) pour chiffrer et déchiffrer des données lorsque l'état d'affichage est chiffré. Si cette option est spécifiée pour l'attribut validation, l'algorithme HMACSHA1 est utilisé pour la validation. Cet algorithme est inclus uniquement pour des raisons d'héritage et doit être utilisé uniquement si la compatibilité avec les versions antérieures d'ASP.NET est requise.

  • HMACSHA256  Spécifie qu'ASP.NET utilise l'algorithme de hachage HMACSHA256 pour valider des données. Valeur par défaut. Cet algorithme est conforme aux normes FIPS (Federal Information Processing Standards) des États-Unis.

  • HMACSHA384  Spécifie qu'ASP.NET utilise l'algorithme de hachage HMACSHA384 pour valider des données. Cette option est disponible pour les applications qui requièrent une sécurité plus forte que celle fournie par l'algorithme HMACSHA256. Cet algorithme est conforme aux normes FIPS (Federal Information Processing Standards) des États-Unis.

  • HMACSHA512  Spécifie qu'ASP.NET utilise l'algorithme de hachage HMACSHA512 pour valider des données. Cette option est disponible pour les applications qui requièrent une sécurité plus forte que celle fournie par l'algorithme HMACSHA384. Cet algorithme est conforme aux normes FIPS (Federal Information Processing Standards) des États-Unis.

  • alg:algorithm_name  Spécifie qu'ASP.NET utilise un algorithme personnalisé. Le préfixe "alg:" est suivi du nom d'une classe qui dérive de KeyedHashAlgorithm. ASP.NET appelle la méthode Create() et passe le nom de l'algorithme spécifié ici.

validationKey

Attribut String requis.

Spécifie la clé qui est utilisée pour valider des données ou le processus par lequel la clé est générée. La valeur validationKey est également utilisée pour générer des ID de session out-of-process spécifiques à l'application afin de garantir que les variables de l'état de session sont isolées entre les sessions.

Cet attribut peut posséder l'une des valeurs suivantes.

  • AutoGenerate, IsolateApps  Spécifie que la clé est générée automatiquement. Valeur par défaut. Le modificateur AutoGenerate spécifie qu'ASP.NET génère une clé aléatoire et la stocke dans l'autorité de sécurité locale (LSA). Le modificateur IsolateApps spécifie qu'ASP.NET génère une clé chiffrée unique pour chaque application à l'aide de l'ID d'application de chaque application.

  • key value  Spécifie une clé assignée manuellement. La valeur validationKey doit être attribuée manuellement à une chaîne de caractères hexadécimaux pour permettre une configuration cohérente sur tous les serveurs d'une batterie de serveurs Web. La longueur de la clé dépend de l'algorithme de hachage utilisé :

    • AES requiert une clé de 256 bits (64 caractères hexadécimaux).

    • MD5 requiert une clé de 128 bits (32 caractères hexadécimaux).

    • SHA1 requiert une clé de 160 bits (40 caractères hexadécimaux).

    • 3DES requiert une clé de 192 bits (48 caractères hexadécimaux).

    • HMACSHA256 requiert une clé de 256 bits (64 caractères hexadécimaux).

    • HMACSHA384 requiert une clé de 384 bits (96 caractères hexadécimaux).

    • HMACSHA512 requiert une clé de 512 bits (128 caractères hexadécimaux).

    Les clés aléatoires peuvent être générées manuellement à l'aide de la classe RNGCryptoServiceProvider. Pour plus d'informations, consultez Procédure : Configurer MachineKey en ASP.NET 2.0. Cette rubrique ne répertorie pas les algorithmes de HMACSHA256, HMACSHA384 ou HMACSHA512. Toutefois, les processus fonctionnent pour ces algorithmes également, tant que vous spécifiez la longueur de clé correcte.

Pour plus d'informations, consultez ValidationKey.

Éléments enfants

Aucun

Éléments parents

Élément

Description

configuration

Spécifie l'élément racine requis dans chaque fichier de configuration utilisé par le Common Language Runtime et dans les applications .NET Framework.

system.web

Spécifie l'élément racine des paramètres de configuration ASP.NET dans un fichier de configuration et contient des éléments de configuration qui configurent des applications Web ASP.NET et contrôlent le comportement des applications.

Notes

L'exemple de code suivant montre comment affecter aux attributs validationKey et decryptionKey la valeur AutoGenerate. La valeur isolateApps est spécifiée pour générer des clés uniques pour chaque application sur le serveur.

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

L'exemple de code suivant montre comment définir l'attribut validationKey et l'attribut decryptionKey sur des valeurs aléatoires générées manuellement. L'attribut validationKey a pour valeur une clé de 256 bits pour l'algorithme de hachage HMACSHA256, et l'attribut decryptionKey a également pour valeur une clé de 256 bits, la plus longue possible pour l'algorithme de chiffrement AES. Ces attributs sont seulement des exemples et ils ne doivent pas être utilisés dans votre application.

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

Voir aussi

Tâches

Procédure pas à pas : chiffrement des informations de configuration à l'aide de la configuration protégée

Comment : configurer des répertoires spécifiques à l'aide des paramètres d'emplacement

Comment : verrouiller des paramètres de configuration ASP.NET

Référence

system.web, élément (Schéma des paramètres ASP.NET)

configuration, élément (Schéma des paramètres généraux)

System.Configuration

System.Web.Configuration

MachineKeySection

MachineKey

Concepts

Authentification par formulaire entre des applications

Sécurisation des rôles

Sécurisation de l'appartenance (membership)

Sécurisation des propriétés de profil

Sécurisation de l'état de session

Hiérarchie du fichier de configuration ASP.NET et héritage

Sécurisation de la configuration ASP.NET

Scénarios de configuration ASP.NET

Autres ressources

Paramètres généraux de configuration (ASP.NET)

Paramètres de configuration ASP.NET

Administration de site Web ASP.NET

API de configuration ASP.NET