Supporto dei criteri a livello di computer per la protezione dei dati in ASP.NET Core

Di Rick Anderson

Durante l'esecuzione in Windows, il sistema di protezione dei dati ha un supporto limitato per l'impostazione di criteri predefiniti a livello di computer per tutte le app che utilizzano ASP.NET Protezione dati di base. L'idea generale è che un amministratore potrebbe voler modificare un'impostazione predefinita, ad esempio gli algoritmi usati o la durata della chiave, senza dover aggiornare manualmente ogni app nel computer.

Avviso

L'amministratore di sistema può impostare i criteri predefiniti, ma non può applicarlo. Lo sviluppatore di app può sempre sostituire qualsiasi valore con una delle proprie opzioni di scelta. Il criterio predefinito influisce solo sulle app in cui lo sviluppatore non ha specificato un valore esplicito per un'impostazione.

Impostazione dei criteri predefiniti

Per impostare i criteri predefiniti, un amministratore può impostare valori noti nel Registro di sistema nella chiave del Registro di sistema seguente:

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

Se si usa un sistema operativo a 64 bit e si vuole influire sul comportamento delle app a 32 bit, ricordarsi di configurare l'equivalente Wow6432Node della chiave precedente.

Di seguito sono riportati i valori supportati.

Valore Type Descrizione
EncryptionType stringa Specifica gli algoritmi da usare per la protezione dei dati. Il valore deve essere CNG-CBC, CNG-GCM o Gestito ed è descritto in modo più dettagliato di seguito.
DefaultKeyLifetime DWORD Specifica la durata per le chiavi appena generate. Il valore viene specificato in giorni e deve essere >= 7.
KeyEscrowSinks stringa Specifica i tipi utilizzati per il deposito delle chiavi. Il valore è un elenco delimitato da punto e virgola di sink di deposito delle chiavi, in cui ogni elemento nell'elenco è il nome completo dell'assembly di un tipo che implementa IKeyEscrowSink.

Tipi di crittografia

Se EncryptionType è CNG-CBC, il sistema è configurato per l'uso di una crittografia a blocchi simmetrici in modalità CBC per la riservatezza e HMAC per l'autenticità con i servizi forniti da Windows CNG (vedere Specifica di algoritmi CNG Windows personalizzati per altri dettagli). Sono supportati i valori aggiuntivi seguenti, ognuno dei quali corrisponde a una proprietà nel tipo CngCbcAuthenticatedEncryption Impostazioni .

Valore Type Descrizione
EncryptionAlgorithm stringa Nome di un algoritmo di crittografia a blocchi simmetrici compreso da CNG. Questo algoritmo viene aperto in modalità CBC.
EncryptionAlgorithmProvider stringa Nome dell'implementazione del provider CNG che può produrre l'algoritmo EncryptionAlgorithm.
EncryptionAlgorithmKeySize DWORD Lunghezza (in bit) della chiave da derivare per l'algoritmo di crittografia a blocchi simmetrici.
Hashalgorithm stringa Nome di un algoritmo hash riconosciuto da CNG. Questo algoritmo viene aperto in modalità HMAC.
HashAlgorithmProvider stringa Nome dell'implementazione del provider CNG che può produrre l'algoritmo HashAlgorithm.

Se EncryptionType è CNG-GCM, il sistema è configurato per l'uso di una crittografia a blocchi simmetrici Galois/Counter Mode per la riservatezza e l'autenticità con i servizi forniti da Windows CNG (vedere Specifica di algoritmi CNG Windows personalizzati per altri dettagli). Sono supportati i valori aggiuntivi seguenti, ognuno dei quali corrisponde a una proprietà nel tipo CngGcmAuthenticatedEncryption Impostazioni.

Valore Type Descrizione
EncryptionAlgorithm stringa Nome di un algoritmo di crittografia a blocchi simmetrici compreso da CNG. Questo algoritmo viene aperto in modalità Galois/Counter.
EncryptionAlgorithmProvider stringa Nome dell'implementazione del provider CNG che può produrre l'algoritmo EncryptionAlgorithm.
EncryptionAlgorithmKeySize DWORD Lunghezza (in bit) della chiave da derivare per l'algoritmo di crittografia a blocchi simmetrici.

Se EncryptionType è gestito, il sistema è configurato per l'uso di un symmetricAlgorithm gestito per la riservatezza e KeyedHashAlgorithm per l'autenticità (vedere Specifica di algoritmi gestiti personalizzati per altri dettagli). Sono supportati i valori aggiuntivi seguenti, ognuno dei quali corrisponde a una proprietà nel tipo ManagedAuthenticatedEncryption Impostazioni.

Valore Type Descrizione
EncryptionAlgorithmType stringa Nome completo dell'assembly di un tipo che implementa SymmetricAlgorithm.
EncryptionAlgorithmKeySize DWORD Lunghezza (in bit) della chiave da derivare per l'algoritmo di crittografia simmetrica.
ValidationAlgorithmType stringa Nome completo dell'assembly di un tipo che implementa KeyedHashAlgorithm.

Se EncryptionType ha un valore diverso da null o vuoto, il sistema di protezione dati genera un'eccezione all'avvio.

Avviso

Quando si configura un'impostazione di criteri predefinita che include nomi di tipi (EncryptionAlgorithmType, ValidationAlgorithmType, KeyEscrowSinks), i tipi devono essere disponibili per l'app. Ciò significa che per le app in esecuzione in CLR desktop, gli assembly che contengono questi tipi devono essere presenti nella Global Assembly Cache (GAC). Per ASP.NET app Core in esecuzione in .NET Core, è necessario installare i pacchetti che contengono questi tipi.