Elemento machineKey (schema delle impostazioni ASP.NET)
Articolo
Configura gli algoritmi e le chiavi da utilizzare per la crittografia, la decrittografia e la convalida dei dati di autenticazione basata su form e dei dati dello stato di visualizzazione e per l'identificazione dello stato delle sessioni out-of-process.
Specifica l'algoritmo utilizzato per crittografare e decrittografare i dati dell'autenticazione basata su form.
Questo attributo può avere uno dei seguenti valori:
Auto Specifica che ASP.NET determina automaticamente quale algoritmo di decrittografia utilizzare. Questo è il valore predefinito di questo attributo.
AES Specifica che in ASP.NET viene utilizzato l'algoritmo AES (Rijndael) per crittografare e decrittografare i dati. AES è l'algoritmo predefinito ed è quello utilizzato quando il valore di questo attributo è Auto. Questo algoritmo è conforme alle normative FIPS (Federal Information Processing Standards) in vigore negli Stati Uniti.
DES Specifica che in ASP.NET viene utilizzato l'algoritmo Data Encryption Standard (DES) per crittografare e decrittografare i dati. Questo algoritmo viene fornito solo per garantire la compatibilità con le versioni legacy e deve essere utilizzato solo se la compatibilità con le versioni precedenti di ASP.NET è obbligatoria.
3DES Specifica che in ASP.NET viene utilizzato l'algoritmo TripleDES (3DES) per crittografare e decrittografare i dati. Questo algoritmo viene fornito solo per garantire la compatibilità con le versioni legacy e deve essere utilizzato solo se la compatibilità con le versioni precedenti di ASP.NET è obbligatoria.
alg:nome_algoritmo Specifica che in ASP.NET viene utilizzato un algoritmo personalizzato per crittografare e decrittografare i dati. L'algoritmo di crittografia deve essere definito in una classe che deriva da SymmetricAlgorithm. ASP.NET chiama il metodo SymmetricAlgorithm.Create e passa nel nome dell'algoritmo specificato qui.
Specifica la chiave utilizzata per crittografare e decrittografare i dati o il processo dal quale viene generata la chiave. L'attributo viene utilizzato per la crittografia e la decrittografia dell'autenticazione basata su form e per la crittografia e la decrittografia dello stato di visualizzazione quando lo stato di visualizzazione è crittografato.
Questo attributo può avere uno dei seguenti valori:
AutoGenerate, IsolateApps Specifica che la chiave viene generata automaticamente. Rappresenta il valore predefinito. Il modificatore AutoGenerate specifica che in ASP.NET viene generata una chiave casuale, quindi memorizzata nell'Autorità di sicurezza locale. Il modificatore IsolateApps specifica che in ASP.NET viene generata una chiave crittografata univoca per ogni applicazione utilizzando l'ID dell'applicazione.
valore di chiave Specifica una chiave assegnata manualmente. Il valore decryptionKey deve essere impostato manualmente su una stringa di caratteri esadecimali per garantire una configurazione coerente in tutti i server in una Web farm. La chiave deve essere lunga 64 bit (16 caratteri esadecimali) per la crittografia DES o 192 bit (48 caratteri esadecimali) per la crittografia 3DES. Per AES, la lunghezza della chiave può essere 128 bit (32 caratteri), 192 bit (48 caratteri) o 256 bit (64 caratteri). La chiave più lunga fornisce la sicurezza maggiore. Le chiavi casuali possono essere generate manualmente utilizzando la classe RNGCryptoServiceProvider. Per ulteriori informazioni, vedere How To: Configure MachineKey in ASP.NET 2.0 .
Specifica l'algoritmo di hash utilizzato per convalidare i dati.
Per impostazione predefinita, lo stato di visualizzazione viene trasmesso come stringa con codifica Base 64. Sebbene a prima vista i dati codificati siano incomprensibili, la codifica in base 64 non fornisce sicurezza perché può essere decodificata facilmente. Se è necessario memorizzare dati riservati nello stato di visualizzazione, è possibile specificare che i dati nello stato di visualizzazione vengano crittografati da ASP.NET, oltre ad essere convalidati. È possibile specificare la crittografia dello stato di visualizzazione per tutte le pagine dell'applicazione Web o per le pagine selezionate. Per informazioni su questa opzione, vedere ViewStateEncryptionMode e RegisterRequiresViewStateEncryption().
Se si desidera utilizzare la crittografia dello stato di visualizzazione, impostare questo attributo su AES. In tal caso, il valore decryptionKey verrà utilizzato per crittografare i dati dello stato di visualizzazione, ASP.NET utilizzerà l'algoritmo hash HMACSHA1 per la convalida dei dati.
Questo attributo può avere uno dei seguenti valori.
AES Specifica che in ASP.NET viene utilizzato l'algoritmo AES (Rijndael) per crittografare e decrittografare i dati quando lo stato di visualizzazione è crittografato. Se viene specificata l'opzione per l'attributo validation, verrà usato l'algoritmo HMACSHA1 per la convalida.
MD5 Specifica che in ASP.NET viene utilizzato l'algoritmo di hash Message Digest 5 (MD5) per convalidare i dati. Questo algoritmo viene fornito solo per garantire la compatibilità con le versioni legacy e deve essere utilizzato solo se la compatibilità con le versioni precedenti di ASP.NET è obbligatoria.
SHA1 Specifica che in ASP.NET viene utilizzato l'algoritmo di hash HMACSHA1 per convalidare i dati. Questo algoritmo deve essere utilizzato solo se è necessario impostare questo attributo su AES per supportare la crittografia dello stato di visualizzazione. In caso contrario, utilizzare HMACSHA256, HMACSHA384, o HMACSHA512.
3DES Specifica che in ASP.NET viene utilizzato l'algoritmo TripleDES (3DES) per crittografare e decrittografare i dati quando lo stato di visualizzazione è crittografato. Se viene specificata l'opzione per l'attributo validation, verrà usato l'algoritmo HMACSHA1 per la convalida. Questo algoritmo viene fornito solo per garantire la compatibilità con le versioni legacy e deve essere utilizzato solo se la compatibilità con le versioni precedenti di ASP.NET è obbligatoria.
HMACSHA256 Specifica che in ASP.NET viene utilizzato l'algoritmo di hash HMACSHA256 per convalidare i dati. Rappresenta il valore predefinito. Questo algoritmo è conforme alle normative FIPS (Federal Information Processing Standards) in vigore negli Stati Uniti.
HMACSHA384 Specifica che in ASP.NET viene utilizzato l'algoritmo di hash HMACSHA384 per convalidare i dati. Questa opzione è disponibile per le applicazioni che richiedono una maggiore sicurezza rispetto a quella fornita dall'algoritmo HMACSHA256. Questo algoritmo è conforme alle normative FIPS (Federal Information Processing Standards) in vigore negli Stati Uniti.
HMACSHA512 Specifica che in ASP.NET viene utilizzato l'algoritmo di hash HMACSHA512 per convalidare i dati. Questa opzione è disponibile per le applicazioni che richiedono una maggiore sicurezza rispetto a quella fornita dall'algoritmo HMACSHA384. Questo algoritmo è conforme alle normative FIPS (Federal Information Processing Standards) in vigore negli Stati Uniti.
alg:nome_algoritmo Specifica che in ASP.NET viene utilizzato un algoritmo personalizzato. Il prefisso "alg:" è seguito dal nome di una classe che deriva da KeyedHashAlgorithm. ASP.NET chiama il metodo Create() e passa nel nome dell'algoritmo specificato qui.
Specifica la chiave utilizzata per convalidare i dati o il processo in base al quale la chiave viene generata. Il valore validationKey viene inoltre utilizzato per generare ID di sessione out-of-process specifici dell'applicazione per assicurare che le variabili di stato di sessione siano isolate da una sessione all'altra.
Questo attributo può avere uno dei seguenti valori:
AutoGenerate, IsolateApps Specifica che la chiave viene generata automaticamente. Rappresenta il valore predefinito. Il modificatore AutoGenerate specifica che in ASP.NET viene generata una chiave casuale, quindi memorizzata nell'Autorità di sicurezza locale. Il modificatore IsolateApps specifica che in ASP.NET viene generata una chiave crittografata univoca per ogni applicazione utilizzando l'ID dell'applicazione.
valore di chiave Specifica una chiave assegnata manualmente. Il valore validationKey deve essere impostato manualmente su una stringa di caratteri esadecimali per garantire una configurazione coerente in tutti i server in una Web farm. La lunghezza della chiave dipende dall'algoritmo hash utilizzato:
AES richiede una chiave a 256 bit (64 caratteri esadecimali).
MD5 richiede una chiave a 128 bit (32 caratteri esadecimali).
SHA1 richiede una chiave a 160 bit (40 caratteri esadecimali).
3DES richiede una chiave a 192 bit (48 caratteri esadecimali).
HMACSHA256 richiede una chiave a 256 bit (64 caratteri esadecimali).
HMACSHA384 richiede una chiave a 384 bit (96 caratteri esadecimali).
HMACSHA512 richiede una chiave a 512 bit (128 caratteri esadecimali).
Le chiavi casuali possono essere emesse manualmente tramite la classe RNGCryptoServiceProvider. Per ulteriori informazioni, vedere How To: Configure MachineKey in ASP.NET 2.0 . In questo argomento non vengono elencati gli algoritmi di HMACSHA256, HMACSHA384 o HMACSHA512. Tuttavia, il processo funziona anche per quegli algoritmi, purché si specifichi la lunghezza di chiave corretta.
Specifica l'elemento di primo livello necessario in ciascun file di configurazione utilizzato in Common Language Runtime e nelle applicazioni .NET Framework.
system.web
Specifica l'elemento di primo livello per le impostazioni di configurazione ASP.NET in un file di configurazione e contiene gli elementi per la configurazione di applicazioni Web ASP.NET e il controllo del comportamento delle stesse.
Note
Nell'esempio di codice che segue viene illustrato come impostare gli attributi validationKey e decryptionKey su AutoGenerate. Il valore isolateApps viene specificato per generare chiavi univoche per ogni applicazione sul server.
Nell'esempio di codice riportato di seguito viene illustrato come impostare l'attributo validationKey e l'attributo decryptionKey in modo da generare manualmente valori casuali. L'attributo validationKey è impostato su una chiave di 256 bit per l'algoritmo hash HMACSHA256. Anche l'attributo decryptionKey è impostato sulla chiave di 256 bit, la maggiore lunghezza consentita per l'algoritmo di crittografia AES. Questi sono solo esempi e non devono essere utilizzati nell'applicazione.