HS256 e RS256: JWT simmetrici e asimmetrici
Scelga l'algoritmo di firma adatto al Suo sistema di autenticazione.
HS256 e RS256: JWT simmetrici e asimmetrici è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.
Famiglie di algoritmi
La firma dei JWT utilizza algoritmi simmetrici (HMAC) oppure asimmetrici (RSA, ECDSA). HS256 = HMAC-SHA256. RS256 = RSA-PKCS1v1.5-SHA256. ES256 = ECDSA-P256-SHA256. La scelta influisce sulla distribuzione delle chiavi e sul modello di attendibilità.
HS256: HMAC simmetrico
HS256 utilizza un'unica chiave segreta condivisa per la firma e la verifica. Sia l'emittente sia ogni verificatore devono possedere lo stesso segreto. È semplice da implementare, ma richiede una distribuzione sicura della chiave a tutti i verificatori.
Casi d'uso di HS256
HS256 è appropriato quando l'emittente e il verificatore sono lo stesso servizio, ad esempio un'API monolitica che firma e verifica i propri token. Non utilizzi mai HS256 se più servizi indipendenti devono verificare i token: tutti avrebbero bisogno del segreto.
RS256: RSA asimmetrico
RS256 utilizza una chiave privata per firmare e una chiave pubblica per verificare. Solo il server di autenticazione possiede la chiave privata. Tutti i resource server recuperano la chiave pubblica dall'endpoint JWKS e verificano localmente, senza bisogno di condividere segreti.
Casi d'uso di RS256
RS256 è ideale per le architetture a microservizi: l'identity provider firma i token e ogni servizio downstream li verifica con la chiave pubblica senza contattare l'IDP a ogni richiesta. È possibile scalare orizzontalmente senza il rischio associato alla distribuzione delle chiavi.
ES256: alternativa ECDSA
ES256 utilizza ECDSA su P-256. La firma è di 64 byte, contro i 256 byte di RS256 con una chiave da 2048 bit. La verifica è circa 10 volte più veloce di quella di RS256. È preferibile quando la larghezza di banda o la velocità di verifica sono critiche, ad esempio nelle API mobili e nell'IoT.
Rotazione delle chiavi
Per RS256/ES256: ruotare le chiavi pubblicando la nuova chiave (nuovo kid) in JWKS, firmando i nuovi token con la nuova chiave, lasciando trascorrere un periodo di tolleranza affinché i vecchi token scadano e poi rimuovendo la vecchia chiave. La rotazione HMAC richiede di ridistribuire il nuovo segreto.
Confronto delle prestazioni
Verifica HS256: ~1 µs. Verifica RS256: ~100 µs (2048 bit). Verifica ES256: ~50 µs (P-256). HS256 è il più veloce, ma richiede la condivisione del segreto. ES256 offre il miglior equilibrio tra sicurezza e prestazioni per i sistemi distribuiti.
Anteprima dell'attacco all'header alg
Una vulnerabilità critica: se il verificatore si fida ciecamente dell'header alg, un attaccante può modificare alg da RS256 a HS256 e firmare il token con la chiave pubblica del server (che è pubblica), usandola come segreto HMAC. Correzione: non fidarsi mai dell'header alg.
Selezione dell'algoritmo
Decisione: singolo servizio → HS256. Più servizi/microservizi → RS256 o ES256. Applicazioni mobili ad alto volume → ES256. In caso di dubbio, usare ES256 (P-256) o RS256 con chiavi da almeno 2048 bit. Non usare mai RS512 nei percorsi sensibili alle prestazioni.
Librerie e standard
Usare PyJWT (Python), jose (Node.js) o auth0/java-jwt. Fissare sempre l'algoritmo previsto nella chiamata di verifica: jwt.decode(token, secret, algorithms=["HS256"]). Non passare mai algorithms=None e non omettere il parametro.
Verifica rapida
Perché RS256 è preferibile a HS256 nelle architetture a microservizi?
Riepilogo
HS256 è simmetrico (segreto condiviso); RS256/ES256 sono asimmetrici (firma privata, verifica pubblica). Usare algoritmi asimmetrici nei sistemi con più parti. Prossimo argomento: sfruttamento delle vulnerabilità JWT.
Domande Frequenti
La lezione «HS256 e RS256: JWT simmetrici e asimmetrici» è gratuita?
Sì — il testo completo di «HS256 e RS256: JWT simmetrici e asimmetrici» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.
Cosa imparerò in «HS256 e RS256: JWT simmetrici e asimmetrici»?
Scelga l'algoritmo di firma adatto al Suo sistema di autenticazione. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cryptology Academy?
Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «HS256 e RS256: JWT simmetrici e asimmetrici»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?
Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Anatomia di JWT: header, payload e firma
- HS256 e RS256: JWT simmetrici e asimmetrici
- Vulnerabilità di JWT: alg=none e confusione delle chiavi
- Best practice per un'implementazione sicura di JWT