Supporto di criteri a livello di computer di protezione dei dati in ASP.NET CoreData Protection machine-wide policy support in ASP.NET Core

Di Rick AndersonBy Rick Anderson

Quando si esegue Windows, il sistema di protezione dei dati ha supporto limitato per impostazione di criteri a livello di computer predefiniti per tutte le app che usano la protezione dei dati di ASP.NET Core.When running on Windows, the Data Protection system has limited support for setting a default machine-wide policy for all apps that consume ASP.NET Core Data Protection. L'idea generale è che un amministratore potrebbe essere opportuno modificare un'impostazione predefinita, ad esempio gli algoritmi utilizzati o la durata delle chiavi, senza la necessità di aggiornare manualmente ogni app nel computer.The general idea is that an administrator might wish to change a default setting, such as the algorithms used or key lifetime, without the need to manually update every app on the machine.

Avviso

L'amministratore di sistema può impostare criteri predefiniti, ma non potranno applicarla.The system administrator can set default policy, but they can't enforce it. Lo sviluppatore dell'app può sempre eseguire l'override di qualsiasi valore con uno di propria scelta.The app developer can always override any value with one of their own choosing. Il criterio predefinito influisce solo sulle App in cui lo sviluppatore non ha specificato un valore esplicito per un'impostazione.The default policy only affects apps where the developer hasn't specified an explicit value for a setting.

Impostazione dei criteri predefinitiSetting default policy

Per impostare i criteri predefiniti, un amministratore può impostare i valori noti nel Registro di sistema nella chiave del Registro di sistema seguente:To set default policy, an administrator can set known values in the system registry under the following registry key:

HKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtectionHKLM\SOFTWARE\Microsoft\DotNetPackages\Microsoft.AspNetCore.DataProtection

Se si ha in un sistema operativo a 64 bit e si vuole modificare il comportamento delle App a 32 bit, ricordarsi di configurare l'equivalente Wow6432Node della chiave precedente.If you're on a 64-bit operating system and want to affect the behavior of 32-bit apps, remember to configure the Wow6432Node equivalent of the above key.

I valori supportati sono illustrati di seguito.The supported values are shown below.

ValueValue TipoType DescrizioneDescription
EncryptionTypeEncryptionType stringstring Specifica gli algoritmi devono essere utilizzati per la protezione dati.Specifies which algorithms should be used for data protection. Il valore deve essere CNG-CBC, CNG-GCM o gestito e viene descritto in dettaglio più avanti.The value must be CNG-CBC, CNG-GCM, or Managed and is described in more detail below.
DefaultKeyLifetimeDefaultKeyLifetime DWORDDWORD Specifica la durata per le chiavi appena generato.Specifies the lifetime for newly-generated keys. Il valore è specificato in giorni e deve essere > = 7.The value is specified in days and must be >= 7.
KeyEscrowSinksKeyEscrowSinks stringstring Specifica i tipi usati per deposito delle chiave.Specifies the types that are used for key escrow. Il valore è un elenco delimitato da punto e virgola di sink di deposito delle chiavi, dove ogni elemento nell'elenco è il nome qualificato dall'assembly di un tipo che implementa IKeyEscrowSink.The value is a semicolon-delimited list of key escrow sinks, where each element in the list is the assembly-qualified name of a type that implements IKeyEscrowSink.

Tipi di crittografiaEncryption types

Se EncryptionType è CNG-CBC, il sistema è configurato per usare una crittografia a blocchi simmetriche modalità CBC per la riservatezza e HMAC per autenticità con servizi forniti da CNG di Windows (vedere che specifica gli algoritmi CNG di Windows personalizzati per altri dettagli).If EncryptionType is CNG-CBC, the system is configured to use a CBC-mode symmetric block cipher for confidentiality and HMAC for authenticity with services provided by Windows CNG (see Specifying custom Windows CNG algorithms for more details). Sono supportati i seguenti valori aggiuntivi, ognuno dei quali corrisponde a una proprietà sul tipo CngCbcAuthenticatedEncryptionSettings.The following additional values are supported, each of which corresponds to a property on the CngCbcAuthenticatedEncryptionSettings type.

ValueValue TipoType DescrizioneDescription
EncryptionAlgorithmEncryptionAlgorithm stringstring Il nome di un algoritmo di crittografia a blocchi simmetriche riconosciuto da CNG.The name of a symmetric block cipher algorithm understood by CNG. Questo algoritmo viene aperto in modalità CBC.This algorithm is opened in CBC mode.
EncryptionAlgorithmProviderEncryptionAlgorithmProvider stringstring Il nome dell'implementazione del provider CNG in grado di produrre l'algoritmo EncryptionAlgorithm.The name of the CNG provider implementation that can produce the algorithm EncryptionAlgorithm.
EncryptionAlgorithmKeySizeEncryptionAlgorithmKeySize DWORDDWORD La lunghezza (in bit) della chiave da derivare per l'algoritmo di crittografia a blocchi simmetriche.The length (in bits) of the key to derive for the symmetric block cipher algorithm.
HashAlgorithmHashAlgorithm stringstring Il nome di un algoritmo di hash riconosciuto da CNG.The name of a hash algorithm understood by CNG. Questo algoritmo viene aperto in modalità HMAC.This algorithm is opened in HMAC mode.
HashAlgorithmProviderHashAlgorithmProvider stringstring Il nome dell'implementazione del provider CNG in grado di produrre l'algoritmo HashAlgorithm.The name of the CNG provider implementation that can produce the algorithm HashAlgorithm.

Se EncryptionType è CNG-GCM, il sistema è configurato per usare una crittografia a blocchi simmetriche/contatore Galois modalità per la riservatezza e l'autenticità con i servizi forniti da CNG di Windows (vedere che specifica gli algoritmi CNG di Windows personalizzati per altri dettagli).If EncryptionType is CNG-GCM, the system is configured to use a Galois/Counter Mode symmetric block cipher for confidentiality and authenticity with services provided by Windows CNG (see Specifying custom Windows CNG algorithms for more details). Sono supportati i seguenti valori aggiuntivi, ognuno dei quali corrisponde a una proprietà sul tipo CngGcmAuthenticatedEncryptionSettings.The following additional values are supported, each of which corresponds to a property on the CngGcmAuthenticatedEncryptionSettings type.

ValueValue TipoType DescrizioneDescription
EncryptionAlgorithmEncryptionAlgorithm stringstring Il nome di un algoritmo di crittografia a blocchi simmetriche riconosciuto da CNG.The name of a symmetric block cipher algorithm understood by CNG. Questo algoritmo viene aperto in modalità/contatore Galois.This algorithm is opened in Galois/Counter Mode.
EncryptionAlgorithmProviderEncryptionAlgorithmProvider stringstring Il nome dell'implementazione del provider CNG in grado di produrre l'algoritmo EncryptionAlgorithm.The name of the CNG provider implementation that can produce the algorithm EncryptionAlgorithm.
EncryptionAlgorithmKeySizeEncryptionAlgorithmKeySize DWORDDWORD La lunghezza (in bit) della chiave da derivare per l'algoritmo di crittografia a blocchi simmetriche.The length (in bits) of the key to derive for the symmetric block cipher algorithm.

Se EncryptionType è gestito, il sistema è configurato per usare un SymmetricAlgorithm gestito per la riservatezza e KeyedHashAlgorithm per autenticità (vedere se si specifica personalizzata gestita algoritmi per altri dettagli).If EncryptionType is Managed, the system is configured to use a managed SymmetricAlgorithm for confidentiality and KeyedHashAlgorithm for authenticity (see Specifying custom managed algorithms for more details). Sono supportati i seguenti valori aggiuntivi, ognuno dei quali corrisponde a una proprietà sul tipo ManagedAuthenticatedEncryptionSettings.The following additional values are supported, each of which corresponds to a property on the ManagedAuthenticatedEncryptionSettings type.

ValueValue TipoType DescrizioneDescription
EncryptionAlgorithmTypeEncryptionAlgorithmType stringstring Il nome qualificato dall'assembly di un tipo che implementa SymmetricAlgorithm.The assembly-qualified name of a type that implements SymmetricAlgorithm.
EncryptionAlgorithmKeySizeEncryptionAlgorithmKeySize DWORDDWORD La lunghezza (in bit) della chiave da derivare l'algoritmo di crittografia simmetrica.The length (in bits) of the key to derive for the symmetric encryption algorithm.
ValidationAlgorithmTypeValidationAlgorithmType stringstring Il nome qualificato dall'assembly di un tipo che implementa KeyedHashAlgorithm.The assembly-qualified name of a type that implements KeyedHashAlgorithm.

Se EncryptionType dispone di qualsiasi altro valore diverso da null o vuoto, il sistema di protezione dei dati genera un'eccezione all'avvio.If EncryptionType has any other value other than null or empty, the Data Protection system throws an exception at startup.

Avviso

Quando si configura un'impostazione di criteri predefinita che prevede i nomi dei tipi (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), i tipi devono essere disponibili per l'app.When configuring a default policy setting that involves type names (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), the types must be available to the app. Ciò significa che per le App in esecuzione in CLR Desktop, gli assembly che contengono tali tipi devono essere presenti nella Global Assembly Cache (GAC).This means that for apps running on Desktop CLR, the assemblies that contain these types should be present in the Global Assembly Cache (GAC). Per le app ASP.NET Core in esecuzione in .NET Core, i pacchetti che contengono questi tipi devono essere installati.For ASP.NET Core apps running on .NET Core, the packages that contain these types should be installed.