2013-03-19 6 views
6

Ho letto le specifiche JSON Web Encryption (JWE) con lo latest draft being 08, poiché stiamo cercando di supportare JSON Web Tokens (JWT) nel nostro server di autenticazione.Convalida l'emittente di un token di sicurezza crittografato con JSON Web Encryption (JWE)?

Utilizzando il metodo di crittografia asimmetrico che definisce, la chiave simmetrica (chiave principale del contenuto) viene crittografata utilizzando la chiave pubblica dei destinatari. Ciò ha senso in modo che solo il destinatario possa decrittografarlo e anche assicurarsi che il token sia stato progettato per loro.

Normalmente mi aspetto anche di vedere qualcosa che provi chi è il token da, ad es. una firma creata utilizzando la chiave privata dell'emittente che può essere verificata utilizzando la propria chiave pubblica. Tuttavia, anche le firme sembrano derivare dalla chiave principale del contenuto o dalla chiave pubblica del destinatario, senza menzionare la chiave privata dell'emittente.

Senza questo, mi sembra che, purché fosse noto il formato di token previsto, chiunque abbia la chiave pubblica del destinatario (ad esempio chiunque) possa generare un token valido; non solo un server di autenticazione affidabile.

Non sono un esperto di crittografia (tutt'altro) quindi sono sicuro che mi manca qualcosa qui. In che modo il destinatario verifica che un token crittografato asimmetricamente provenga da un emittente fidato?

Dato che il JSON Web Firme (JWS) specifica fa definiscono le firme che utilizzano la chiave privata dell'emittente e possono essere convalidati con la loro chiave pubblica, mi chiedo se l'idea è che il carico utile del token JWE dovrebbe essere un token JWS?

risposta

4

JWT consente certamente carichi utili nidificati. In effetti c'è uno specific reference a quello nella specifica, dove il parametro di intestazione cty (tipo di contenuto) può essere impostato su JWT per indicare che il carico utile è in realtà un altro JWT.

Quindi molto probabilmente creerai un JWE e lo sposerai in un JWS, firmato con la tua chiave privata. Anche questa sembra essere la conclusione (o almeno una soluzione) da this thread sulla mailing list di JOSE. C'è un altro related thread sulla riduzione della dimensione del carico utile. In generale, probabilmente è importante tenere d'occhio la mailing list perché è lì che si incontrano le persone dietro le specifiche.

+1

Cool, grazie per i riferimenti. Per una più attenta rilettura delle specifiche, la sezione 10 sembra coprire questo aspetto e ha alcune indicazioni aggiuntive: "Mentre sintatticamente, le operazioni di firma e crittografia per i JWT nidificati possono essere applicate in qualsiasi ordine, normalmente i mittenti devono firmare il messaggio e quindi crittografa il risultato (crittografando in tal modo la firma), evitando attacchi in cui la firma viene rimossa, lasciando solo un messaggio crittografato, oltre a fornire la privacy per il firmatario.Inoltre, le firme su testo crittografato non sono considerate valide in molte giurisdizioni. " –

+0

Sì, immagino che abbia senso, poiché il messaggio crittografato è esso stesso protetto dall'integrità tramite GCM o uno schema encrypt-then-HMAC. È anche l'opposto di ciò che Mike Jonessuggest ha scritto sulla mailing list. C'è sempre un sacco di possibilità per scivolare da qualche parte mentre si implementa questa roba :). –

+0

Ho bisogno di decifrare JWE ed estrarre il claimset in JAVA. C'è qualche libreria che lo fa? – user243655

Problemi correlati