Passa al contenuto principale

4. JOSE Header (Intestazione JOSE)

Per un JWE, i membri dell'oggetto JSON che rappresenta l'intestazione JOSE descrivono la crittografia applicata al testo in chiaro e opzionalmente proprietà aggiuntive del JWE. I nomi dei parametri di intestazione all'interno dell'intestazione JOSE devono (MUST) essere univoci, come specificato nella sezione 4 di [JWS]. Le regole sulla gestione dei parametri di intestazione che non sono compresi dall'implementazione sono anch'esse le stesse. Le classi di nomi di parametri di intestazione sono ugualmente le stesse.

4.1 Registered Header Parameter Names (Nomi di parametri di intestazione registrati)

I seguenti nomi di parametri di intestazione per l'uso nei JWE sono registrati nel registro IANA "JSON Web Signature and Encryption Header Parameters" stabilito da [JWS], con significati definiti di seguito.

Come indicato dal registro comune, JWS e JWE condividono uno spazio comune di parametri di intestazione. Quando un parametro è utilizzato da entrambe le specifiche, il suo utilizzo deve essere compatibile tra le specifiche.

4.1.1 "alg" (Algorithm) Header Parameter (Parametro di intestazione algoritmo)

Il significato, la sintassi e le regole di elaborazione per il parametro di intestazione "alg" sono gli stessi definiti nella sezione 4.1.1 di [JWS], con l'eccezione che il parametro di intestazione identifica l'algoritmo crittografico utilizzato per crittografare o determinare il valore della CEK. Se il valore "alg" non rappresenta un algoritmo supportato, o se non c'è una chiave disponibile per l'uso con quell'algoritmo per il destinatario, allora il contenuto crittografato non può essere decrittografato.

Un elenco dei valori "alg" definiti per questo uso può essere trovato nel registro IANA "JSON Web Signature and Encryption Algorithms" stabilito da [JWA]; il contenuto iniziale di questo registro sono i valori definiti nella sezione 4.1 di [JWA].

4.1.2 "enc" (Encryption Algorithm) Header Parameter (Parametro di intestazione algoritmo di crittografia)

Il parametro di intestazione "enc" (encryption algorithm, algoritmo di crittografia) identifica l'algoritmo di crittografia del contenuto utilizzato per eseguire la crittografia autenticata sul testo in chiaro per produrre il testo cifrato e il tag di autenticazione. Questo algoritmo deve (MUST) essere un algoritmo AEAD con una lunghezza di chiave specificata. Se il valore "enc" non rappresenta un algoritmo supportato, allora il contenuto crittografato non può essere decrittografato. Il valore "enc" dovrebbe essere registrato nel registro IANA "JSON Web Signature and Encryption Algorithms" stabilito da [JWA] o essere un valore che contiene un nome resistente alle collisioni. Il valore "enc" è una stringa ASCII sensibile alle maiuscole contenente un valore StringOrURI. Questo parametro di intestazione deve (MUST) essere presente e deve (MUST) essere compreso ed elaborato dalle implementazioni.

Un elenco dei valori "enc" definiti per questo uso può essere trovato nel registro IANA "JSON Web Signature and Encryption Algorithms" stabilito da [JWA]; il contenuto iniziale di questo registro sono i valori definiti nella sezione 5.1 di [JWA].

4.1.3 "zip" (Compression Algorithm) Header Parameter (Parametro di intestazione algoritmo di compressione)

Il "zip" (compression algorithm, algoritmo di compressione) applicato al testo in chiaro prima della crittografia, se presente. Il valore "zip" definito da questa specifica è:

  • "DEF" - Compressione con l'algoritmo DEFLATE [RFC1951]

Altri valori possono (MAY) essere utilizzati. I valori dell'algoritmo di compressione possono essere registrati nel registro IANA "JSON Web Encryption Compression Algorithms" stabilito da [JWA]. Il valore "zip" è una stringa sensibile alle maiuscole. Se non è presente alcun parametro "zip", non viene applicata alcuna compressione al testo in chiaro prima della crittografia. Quando utilizzato, questo parametro di intestazione deve (MUST) essere protetto dall'integrità; pertanto, deve (MUST) apparire solo all'interno dell'intestazione protetta JWE. L'uso di questo parametro di intestazione è opzionale (OPTIONAL). Questo parametro di intestazione deve (MUST) essere compreso ed elaborato dalle implementazioni.

4.1.4 "jku" (JWK Set URL) Header Parameter

Il significato, la sintassi e le regole di elaborazione per il parametro di intestazione "jku" sono gli stessi definiti nella sezione 4.1.2 di [JWS], con l'eccezione che la risorsa JWK Set contiene la chiave pubblica verso cui il JWE è stato crittografato; questo può essere utilizzato per determinare la chiave privata necessaria per decrittografare il JWE.

4.1.5 "jwk" (JSON Web Key) Header Parameter

Il significato, la sintassi e le regole di elaborazione per il parametro di intestazione "jwk" sono gli stessi definiti nella sezione 4.1.3 di [JWS], con l'eccezione che la chiave è la chiave pubblica verso cui il JWE è stato crittografato; questo può essere utilizzato per determinare la chiave privata necessaria per decrittografare il JWE.

4.1.6 "kid" (Key ID) Header Parameter

Il significato, la sintassi e le regole di elaborazione per il parametro di intestazione "kid" sono gli stessi definiti nella sezione 4.1.4 di [JWS], con l'eccezione che l'indicazione della chiave fa riferimento alla chiave pubblica verso cui il JWE è stato crittografato; questo può essere utilizzato per determinare la chiave privata necessaria per decrittografare il JWE. Questo parametro consente agli originatori di segnalare esplicitamente un cambio di chiave ai destinatari JWE.

4.1.7 "x5u" (X.509 URL) Header Parameter

Il significato, la sintassi e le regole di elaborazione per il parametro di intestazione "x5u" sono gli stessi definiti nella sezione 4.1.5 di [JWS], con l'eccezione che il certificato di chiave pubblica X.509 o la catena di certificati [RFC5280] contiene la chiave pubblica verso cui il JWE è stato crittografato; questo può essere utilizzato per determinare la chiave privata necessaria per decrittografare il JWE.

4.1.8 "x5c" (X.509 Certificate Chain) Header Parameter

Il significato, la sintassi e le regole di elaborazione per il parametro di intestazione "x5c" sono gli stessi definiti nella sezione 4.1.6 di [JWS], con l'eccezione che il certificato di chiave pubblica X.509 o la catena di certificati [RFC5280] contiene la chiave pubblica verso cui il JWE è stato crittografato; questo può essere utilizzato per determinare la chiave privata necessaria per decrittografare il JWE.

Vedere l'appendice B di [JWS] per un esempio di valore "x5c".

4.1.9 "x5t" (X.509 Certificate SHA-1 Thumbprint) Header Parameter

Il significato, la sintassi e le regole di elaborazione per il parametro di intestazione "x5t" sono gli stessi definiti nella sezione 4.1.7 di [JWS], con l'eccezione che il certificato riferito dall'impronta contiene la chiave pubblica verso cui il JWE è stato crittografato; questo può essere utilizzato per determinare la chiave privata necessaria per decrittografare il JWE. Si noti che le impronte dei certificati sono talvolta anche note come impronte digitali dei certificati.

4.1.10 "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) Header Parameter

Il significato, la sintassi e le regole di elaborazione per il parametro di intestazione "x5t#S256" sono gli stessi definiti nella sezione 4.1.8 di [JWS], con l'eccezione che il certificato riferito dall'impronta contiene la chiave pubblica verso cui il JWE è stato crittografato; questo può essere utilizzato per determinare la chiave privata necessaria per decrittografare il JWE. Si noti che le impronte dei certificati sono talvolta anche note come impronte digitali dei certificati.

4.1.11 "typ" (Type) Header Parameter

Il significato, la sintassi e le regole di elaborazione per il parametro di intestazione "typ" sono gli stessi definiti nella sezione 4.1.9 di [JWS], con l'eccezione che il tipo è di questo JWE completo.

4.1.12 "cty" (Content Type) Header Parameter

Il significato, la sintassi e le regole di elaborazione per il parametro di intestazione "cty" sono gli stessi definiti nella sezione 4.1.10 di [JWS], con l'eccezione che il tipo è del contenuto protetto (il testo in chiaro).

4.1.13 "crit" (Critical) Header Parameter

Il significato, la sintassi e le regole di elaborazione per il parametro di intestazione "crit" sono gli stessi definiti nella sezione 4.1.11 di [JWS], con l'eccezione che si fa riferimento ai parametri di intestazione per un JWE, piuttosto che ai parametri di intestazione per un JWS.

4.2 Public Header Parameter Names (Nomi di parametri di intestazione pubblici)

Ulteriori nomi di parametri di intestazione possono essere definiti da coloro che utilizzano i JWE. Tuttavia, al fine di prevenire collisioni, qualsiasi nuovo nome di parametro di intestazione dovrebbe essere registrato nel registro IANA "JSON Web Signature and Encryption Header Parameters" stabilito da [JWS] o essere un nome pubblico: un valore che contiene un nome resistente alle collisioni. In ciascun caso, il definitori del nome o valore deve prendere precauzioni ragionevoli per assicurarsi di essere in controllo della parte dello spazio dei nomi che utilizza per definire il nome del parametro di intestazione.

I nuovi parametri di intestazione dovrebbero essere introdotti con parsimonia, poiché possono risultare in JWE non interoperabili.

4.3 Private Header Parameter Names (Nomi di parametri di intestazione privati)

Un produttore e un consumatore di un JWE possono concordare di utilizzare nomi di parametri di intestazione che sono nomi privati: nomi che non sono nomi di parametri di intestazione registrati (sezione 4.1) o nomi di parametri di intestazione pubblici (sezione 4.2). A differenza dei nomi di parametri di intestazione pubblici, i nomi di parametri di intestazione privati sono soggetti a collisione e dovrebbero essere utilizzati con cautela.