Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le chiamate a IDataProtector.Protect sono operazioni di crittografia autenticate. Il metodo Protect offre riservatezza e autenticità ed è associato alla catena di scopi usata per derivare questa particolare istanza di IDataProtector dalla radice IDataProtectionProvider.
IDataProtector.Protect accetta un parametro di testo non crittografato byte[] e produce un payload protetto byte[] il cui formato è descritto di seguito. Esiste anche un overload del metodo di estensione che accetta un parametro di testo non crittografato stringa e restituisce un payload protetto da stringhe. Se questa API viene usata nel formato payload protetto avrà comunque la struttura seguente, ma sarà con codifica base64url.
Formato payload protetto
Il formato del payload protetto è costituito da tre componenti principali:
Intestazione magic a 32 bit che identifica la versione del sistema di protezione dei dati.
ID chiave a 128 bit che identifica la chiave usata per proteggere questo particolare payload.
Il resto del payload protetto è specifico del crittografatore incapsulato da questa chiave. Nell'esempio seguente la chiave rappresenta un encryptor AES-256-CBC + HMACSHA256 e il payload è ulteriormente suddiviso come segue:
- Modificatore di tasti a 128 bit.
- Vettore di inizializzazione a 128 bit.
- 48 byte di output AES-256-CBC.
- Tag di autenticazione HMACSHA256.
Di seguito è illustrato un payload protetto di esempio.
09 F0 C9 F0 80 9C 81 0C 19 66 19 40 95 36 53 F8
AA FF EE 57 57 2F 40 4C 3F 7F CC 9D CC D9 32 3E
84 17 99 16 EC BA 1F 4A A1 18 45 1F 2D 13 7A 28
79 6B 86 9C F8 B7 84 F9 26 31 FC B1 86 0A F1 56
61 CF 14 58 D3 51 6F CF 36 50 85 82 08 2D 3F 73
5F B0 AD 9E 1A B2 AE 13 57 90 C8 F5 7C 95 4E 6A
8A AA 06 EF 43 CA 19 62 84 7C 11 B2 C8 71 9D AA
52 19 2E 5B 4C 1E 54 F0 55 BE 88 92 12 C1 4B 5E
52 C9 74 A0
Dal formato di payload sopra i primi 32 bit o 4 byte sono l'intestazione magic che identifica la versione (09 F0 C9 F0)
I 128 bit successivi o 16 byte sono l'identificatore di chiave (80 9C 81 0C 19 66 19 40 95 36 53 F8 AA FF EE 57)
Il resto contiene il payload ed è specifico del formato usato.
Avviso
Tutti i payload protetti in una determinata chiave inizieranno con la stessa intestazione di 20 byte (valore magic, ID chiave). Gli amministratori possono usare questo fatto per scopi diagnostici per approssimare quando è stato generato un payload. Ad esempio, il payload precedente corrisponde alla chiave {aaaaa-0b0b-1c1c-2d2d-3333333333}. Se dopo aver controllato il repository delle chiavi si scopre che la data di attivazione di questa chiave specifica è 2015-01-01 e la data di scadenza è 2015-03-01, è ragionevole presupporre che il payload (se non manomesso) sia stato generato all'interno di tale finestra, dare o prendere un piccolo fattore di fudge su entrambi i lati.