Prise en charge de la stratégie au niveau de l’ordinateur de protection des données dans ASP.NET Core
Par Rick Anderson
Lors de l’exécution sur Windows, le système de protection des données offre une prise en charge limitée de la définition d’une stratégie par défaut à l’échelle de l’ordinateur pour toutes les applications qui consomment ASP.NET Core protection des données. L’idée générale est qu’un administrateur peut souhaiter modifier un paramètre par défaut, tel que les algorithmes utilisés ou la durée de vie des clés, sans avoir à mettre à jour manuellement chaque application sur l’ordinateur.
Avertissement
L’administrateur système peut définir une stratégie par défaut, mais il ne peut pas l’appliquer. Le développeur d’application peut toujours remplacer n’importe quelle valeur avec l’une de ses propres choix. La stratégie par défaut affecte uniquement les applications pour lesquelles le développeur n’a pas spécifié de valeur explicite pour un paramètre.
Définition de la stratégie par défaut
Pour définir la stratégie par défaut, un administrateur peut définir des valeurs connues dans le Registre système sous la clé de Registre suivante :
HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtection
Si vous utilisez un système d’exploitation 64 bits et que vous souhaitez affecter le comportement des applications 32 bits, n’oubliez pas de configurer l’équivalent Wow6432Node de la clé ci-dessus.
Les valeurs prises en charge sont indiquées ci-dessous.
Valeur | Type | Description |
---|---|---|
EncryptionType | string | Spécifie les algorithmes à utiliser pour la protection des données. La valeur doit être CNG-CBC, CNG-GCM ou Gérée et est décrite plus en détail ci-dessous. |
DefaultKeyLifetime | DWORD | Spécifie la durée de vie des clés nouvellement générées. La valeur est spécifiée en jours et doit être >= 7. |
KeyEscrowSinks | string | Spécifie les types utilisés pour l’entiercement de clé. La valeur est une liste délimitée par des points-virgules de récepteurs d’entiercement de clé, où chaque élément de la liste est le nom qualifié d’assembly d’un type qui implémente IKeyEscrowSink. |
Types de chiffrement
Si EncryptionType est CNG-CBC, le système est configuré pour utiliser un chiffrement de blocs symétriques en mode CBC pour la confidentialité et HMAC pour l’authenticité avec les services fournis par Windows CNG (pour plus d’informations, consultez Spécification d’algorithmes de GNC Windows personnalisés ). Les valeurs supplémentaires suivantes sont prises en charge, chacune correspondant à une propriété sur le type CngCbcAuthenticatedEncryptionSettings.
Valeur | Type | Description |
---|---|---|
EncryptionAlgorithm | string | Nom d’un algorithme de chiffrement de blocs symétriques compris par CNG. Cet algorithme est ouvert en mode CBC. |
EncryptionAlgorithmProvider | string | Nom de l’implémentation du fournisseur CNG qui peut produire l’algorithme EncryptionAlgorithm. |
EncryptionAlgorithmKeySize | DWORD | Longueur (en bits) de la clé à dériver pour l’algorithme de chiffrement de blocs symétriques. |
HashAlgorithm | string | Nom d’un algorithme de hachage compris par CNG. Cet algorithme est ouvert en mode HMAC. |
Classe HashAlgorithmProvider | string | Nom de l’implémentation du fournisseur CNG qui peut produire l’algorithme HashAlgorithm. |
Si EncryptionType est CNG-GCM, le système est configuré pour utiliser un chiffrement de blocs symétriques Galois/Counter Mode pour la confidentialité et l’authenticité avec les services fournis par Windows CNG (pour plus d’informations, consultez Spécification d’algorithmes de GNC Windows personnalisés ). Les valeurs supplémentaires suivantes sont prises en charge, chacune correspondant à une propriété sur le type CngGcmAuthenticatedEncryptionSettings.
Valeur | Type | Description |
---|---|---|
EncryptionAlgorithm | string | Nom d’un algorithme de chiffrement de blocs symétriques compris par CNG. Cet algorithme est ouvert en mode Galois/Compteur. |
EncryptionAlgorithmProvider | string | Nom de l’implémentation du fournisseur CNG qui peut produire l’algorithme EncryptionAlgorithm. |
EncryptionAlgorithmKeySize | DWORD | Longueur (en bits) de la clé à dériver pour l’algorithme de chiffrement de blocs symétriques. |
Si EncryptionType est géré, le système est configuré pour utiliser un SymmetricAlgorithm managé pour la confidentialité et KeyedHashAlgorithm pour l’authenticité (voir Spécification d’algorithmes managés personnalisés pour plus d’informations). Les valeurs supplémentaires suivantes sont prises en charge, chacune correspondant à une propriété sur le type ManagedAuthenticatedEncryptionSettings.
Valeur | Type | Description |
---|---|---|
EncryptionAlgorithmType | string | Nom qualifié d’assembly d’un type qui implémente SymmetricAlgorithm. |
EncryptionAlgorithmKeySize | DWORD | Longueur (en bits) de la clé à dériver pour l’algorithme de chiffrement symétrique. |
ValidationAlgorithmType | string | Nom qualifié d’assembly d’un type qui implémente KeyedHashAlgorithm. |
Si EncryptionType a une autre valeur que null ou vide, le système de protection des données lève une exception au démarrage.
Avertissement
Lors de la configuration d’un paramètre de stratégie par défaut qui implique des noms de types (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), les types doivent être disponibles pour l’application. Cela signifie que pour les applications s’exécutant sur le CLR de bureau, les assemblys qui contiennent ces types doivent être présents dans le Global Assembly Cache (GAC). Pour ASP.NET Core applications s’exécutant sur .NET Core, les packages qui contiennent ces types doivent être installés.