Codificatore di JWT (generazione e firma)

Strumento per sviluppatori che, a partire dall'intestazione e dal contenuto in JSON, genera all'istante un gettone JWT firmato con HMAC secondo gli algoritmi HS256, HS384 o HS512. Nulla di quanto inserite, chiave segreta compresa, viene trasmesso a un servente: tutto avviene nel navigatore.

Gli algoritmi di firma HMAC previsti

Algoritmo Funzione di sintesi Lunghezza della firma Descrizione
HS256 SHA-256 256 bit (32 byte) La firma HMAC predefinita e più diffusa. È adottata di serie in moltissime realizzazioni, compresi i gettoni di identità di OAuth 2.0 e OpenID Connect.
HS384 SHA-384 384 bit (48 byte) Scelta intermedia per chi desidera un margine di sicurezza maggiore con una firma più lunga di quella di HS256.
HS512 SHA-512 512 bit (64 byte) La firma più lunga, che si usa di norma insieme a una chiave segreta casuale sufficientemente estesa.

Consigli

  • Il gettone è firmato soltanto dall'interfaccia crittografica del navigatore e nulla di quanto inserite, chiave segreta compresa, giunge ai serventi di toolbase.cc.
  • Cambiando algoritmo di firma, il campo alg dell'intestazione JSON si riscrive da sé. Per aggiungere altre dichiarazioni, come kid, modificate direttamente l'intestazione.
  • Lo strumento prevede soltanto il metodo HMAC, cioè a chiave condivisa. Se vi occorre una firma a chiave pubblica come RS256 o ES256, usate una libreria dal lato del servente.
  • Dopo aver modificato intestazione o contenuto, premete di nuovo il pulsante di generazione: fino ad allora resterà visibile il gettone prodotto con il contenuto precedente.
  • Per esaminare subito il gettone generato, incollatelo nello strumento affine, il decodificatore di JWT, che ne mostrerà intestazione e contenuto.

Domande frequenti

No, è sconsigliato. La firma in sé avviene in sicurezza nel navigatore, ma è l'atto stesso di inserirvi una chiave segreta a non essere una buona pratica di sicurezza per l'esercizio. Lo strumento è pensato per le prove durante lo sviluppo e per lo studio.

HS256 è un metodo a chiave condivisa, cioè simmetrico, in cui mittente e destinatario possiedono la stessa chiave; RS256 è un metodo a chiave pubblica, cioè asimmetrico, in cui si firma con la chiave privata e si verifica con quella pubblica. Questo strumento prevede soltanto i metodi HMAC — HS256, HS384 e HS512 — e non quelli a chiave pubblica.

Sì, l'intestazione JSON è liberamente modificabile. Se però l'algoritmo scelto, cioè quello realmente usato nel calcolo della firma, non coincide con il valore del campo alg, la verifica del gettone in un'altra realizzazione può fallire: fate sempre in modo che i due coincidano.

Incollando la stringa nello strumento affine, il decodificatore di JWT, potete esaminarne subito intestazione e contenuto. La validità della firma in sé, però, si accerta in modo definitivo soltanto con la logica di verifica del servente che possiede quella chiave segreta.
Tool-kun

A proposito — perché la firma di un JWT può avvenire soltanto nel navigatore

Gli algoritmi di firma dei JWT si dividono grosso modo in quelli a chiave condivisa, cioè HMAC nelle varianti HS256, HS384 e HS512, e in quelli a chiave pubblica, come RS256 ed ES256, in cui si firma con la chiave privata e si verifica con quella pubblica. I primi si calcolano interamente nel navigatore, senza alcuna libreria esterna, servendosi dell'interfaccia crittografica standardizzata dal consorzio del web: per questo lo strumento si limita di proposito al metodo HMAC.

La sicurezza di una firma HMAC dipende interamente dalla difficoltà di indovinare la chiave segreta, non dal contenuto dell'intestazione o del corpo. La norma sugli algoritmi dei gettoni web raccomanda per HS256 una chiave di almeno 256 bit, cioè 32 byte: usare una parola breve o una stringa presente nei dizionari espone al rischio che la firma venga contraffatta con un attacco esaustivo. In esercizio si deve usare una stringa casuale sufficientemente lunga, prodotta da un generatore di numeri casuali.

Questo strumento è un'utilità per sviluppatori, pensata per le prove durante lo sviluppo di un'interfaccia e per collaudare la logica di verifica delle firme dei richiami web. La chiave inserita resta nella memoria del navigatore e non viene trasmessa all'esterno, ma il rischio che un dispositivo condiviso o un'estensione del navigatore raccolgano gli appunti o quanto digitate non è mai nullo: si raccomanda vivamente di non inserire in strumenti di questo genere, nemmeno per prova, la chiave usata realmente in produzione.