Passa al contenuto principale

3. Cryptographic Algorithms for Digital Signatures and MACs (Algoritmi crittografici per firme digitali e MAC)

JWS utilizza algoritmi crittografici per firmare digitalmente o creare un MAC del contenuto del JWS Protected Header (Intestazione protetta JWS) e del JWS Payload (Carico utile JWS).

3.1 "alg" (Algorithm) Header Parameter Values for JWS (Valori del parametro di intestazione "alg" per JWS)

La tabella seguente definisce i valori del parametro di intestazione "alg" (algorithm) per JWS definiti da questa specifica:

Valore parametro "alg"Algoritmo di firma digitale o MACRequisiti di implementazione
HS256HMAC using SHA-256 (HMAC utilizzando SHA-256)Required (Richiesto)
HS384HMAC using SHA-384 (HMAC utilizzando SHA-384)Optional (Opzionale)
HS512HMAC using SHA-512 (HMAC utilizzando SHA-512)Optional (Opzionale)
RS256RSASSA-PKCS1-v1_5 using SHA-256 (RSASSA-PKCS1-v1_5 utilizzando SHA-256)Recommended (Raccomandato)
RS384RSASSA-PKCS1-v1_5 using SHA-384 (RSASSA-PKCS1-v1_5 utilizzando SHA-384)Optional (Opzionale)
RS512RSASSA-PKCS1-v1_5 using SHA-512 (RSASSA-PKCS1-v1_5 utilizzando SHA-512)Optional (Opzionale)
ES256ECDSA using P-256 and SHA-256 (ECDSA utilizzando P-256 e SHA-256)Recommended+ (Raccomandato+)
ES384ECDSA using P-384 and SHA-384 (ECDSA utilizzando P-384 e SHA-384)Optional (Opzionale)
ES512ECDSA using P-521 and SHA-512 (ECDSA utilizzando P-521 e SHA-512)Optional (Opzionale)
PS256RSASSA-PSS using SHA-256 and MGF1 with SHA-256 (RSASSA-PSS utilizzando SHA-256 e MGF1 con SHA-256)Optional (Opzionale)
PS384RSASSA-PSS using SHA-384 and MGF1 with SHA-384 (RSASSA-PSS utilizzando SHA-384 e MGF1 con SHA-384)Optional (Opzionale)
PS512RSASSA-PSS using SHA-512 and MGF1 with SHA-512 (RSASSA-PSS utilizzando SHA-512 e MGF1 con SHA-512)Optional (Opzionale)
noneNo digital signature or MAC performed (Nessuna firma digitale o MAC)Optional (Opzionale)

Nota: Il "+" nella colonna dei requisiti di implementazione indica che la forza del requisito può essere aumentata nelle future versioni della specifica.

3.2 HMAC with SHA-2 Functions (HMAC con funzioni SHA-2)

Gli Hash-based Message Authentication Codes (HMACs) (Codici di autenticazione dei messaggi basati su hash) consentono di utilizzare un segreto più una funzione hash crittografica per generare un MAC. Questo algoritmo è definito nella RFC 2104 [RFC2104].

Requisiti della chiave: Una chiave della stessa dimensione dell'output dell'hash (ad esempio, 256 bit per "HS256") o più grande deve (MUST) essere utilizzata con questo algoritmo.

Valori dell'algoritmo HMAC:

Valore parametro "alg"Algoritmo MAC
HS256HMAC using SHA-256 (HMAC utilizzando SHA-256)
HS384HMAC using SHA-384 (HMAC utilizzando SHA-384)
HS512HMAC using SHA-512 (HMAC utilizzando SHA-512)

Requisiti di validazione: Il confronto dei valori HMAC deve (MUST) essere eseguito in tempo costante per prevenire attacchi temporali.

3.3 Digital Signature with RSASSA-PKCS1-v1_5 (Firma digitale con RSASSA-PKCS1-v1_5)

Questa sezione definisce l'uso dell'algoritmo di firma digitale RSASSA-PKCS1-v1_5 come definito nella sezione 8.2 della RFC 3447 [RFC3447] con le funzioni hash SHA-2.

Requisiti della chiave: Una chiave di dimensione 2048 bit o maggiore deve (MUST) essere utilizzata con questo algoritmo.

Valori dell'algoritmo:

Valore parametro "alg"Algoritmo di firma digitale
RS256RSASSA-PKCS1-v1_5 using SHA-256 (RSASSA-PKCS1-v1_5 utilizzando SHA-256)
RS384RSASSA-PKCS1-v1_5 using SHA-384 (RSASSA-PKCS1-v1_5 utilizzando SHA-384)
RS512RSASSA-PKCS1-v1_5 using SHA-512 (RSASSA-PKCS1-v1_5 utilizzando SHA-512)

3.4 Digital Signature with ECDSA (Firma digitale con ECDSA)

L'Elliptic Curve Digital Signature Algorithm (ECDSA) (Algoritmo di firma digitale a curva ellittica) [DSS] utilizza la crittografia a curva ellittica, fornendo sicurezza equivalente a RSA con lunghezze di chiave più brevi e elaborazione più veloce.

Curve e funzioni hash supportate:

  • Curva P-256 con SHA-256
  • Curva P-384 con SHA-384
  • Curva P-521 con SHA-512

Passi di generazione della firma ECDSA P-256 SHA-256:

  1. Generare una firma digitale dell'input di firma JWS utilizzando ECDSA P-256 SHA-256 con la chiave privata, producendo una coppia (R, S), ciascuna un intero senza segno a 256 bit
  2. Convertire R e S in sequenze di ottetti in ordine big-endian, ciascuna lunga 32 ottetti
  3. Concatenare le due sequenze di ottetti nell'ordine R poi S
  4. La sequenza risultante di 64 ottetti è il valore della firma JWS

Valori dell'algoritmo:

Valore parametro "alg"Algoritmo di firma digitale
ES256ECDSA using P-256 and SHA-256 (ECDSA utilizzando P-256 e SHA-256)
ES384ECDSA using P-384 and SHA-384 (ECDSA utilizzando P-384 e SHA-384)
ES512ECDSA using P-521 and SHA-512 (ECDSA utilizzando P-521 e SHA-512)

Lunghezze della firma:

  • ES256: 64 ottetti (R e S sono ciascuno 32 ottetti)
  • ES384: 96 ottetti (R e S sono ciascuno 48 ottetti)
  • ES512: 132 ottetti (R e S sono ciascuno 66 ottetti)

3.5 Digital Signature with RSASSA-PSS (Firma digitale con RSASSA-PSS)

Questa sezione definisce l'uso dell'algoritmo di firma digitale RSASSA-PSS come definito nella sezione 8.1 della RFC 3447 [RFC3447], con la funzione di generazione della maschera MGF1 e le funzioni hash SHA-2.

Parametri chiave:

  • La funzione hash RSASSA-PSS e la funzione hash MGF1 utilizzano la stessa funzione hash
  • La dimensione del valore salt è uguale alla dimensione di output della funzione hash
  • Requisito di dimensione della chiave: 2048 bit o maggiore

Valori dell'algoritmo:

Valore parametro "alg"Algoritmo di firma digitale
PS256RSASSA-PSS using SHA-256 and MGF1 with SHA-256 (RSASSA-PSS utilizzando SHA-256 e MGF1 con SHA-256)
PS384RSASSA-PSS using SHA-384 and MGF1 with SHA-384 (RSASSA-PSS utilizzando SHA-384 e MGF1 con SHA-384)
PS512RSASSA-PSS using SHA-512 and MGF1 with SHA-512 (RSASSA-PSS utilizzando SHA-512 e MGF1 con SHA-512)

3.6 Using the Algorithm "none" (Utilizzo dell'algoritmo "none")

La specifica JWS [JWS] definisce il valore "alg" "none" per l'uso nella creazione di oggetti JWS non sicuri che non forniscono protezione dell'integrità.

Avviso di sicurezza: Le implementazioni devono (MUST) comprendere le implicazioni di sicurezza dell'utilizzo di questo algoritmo. Il valore "alg" "none" dovrebbe (SHOULD) essere utilizzato solo quando la protezione dell'integrità non è necessaria.