È sicuro generare JWT usando la chiave privata?

0

Attualmente sto creando un'API Rails utilizzando ruby-jwt come generatore di token di accesso. Scelgo RS256 (RSA + SHA256) come mio algoritmo.

ruby-jwt utilizza la chiave privata per codificare i payload e utilizza la chiave pubblica per decodificare i token.

La mia domanda è, questo approccio è abbastanza sicuro? C'è qualche possibilità che un utente malintenzionato possa sfruttare la chiave privata da una grande quantità di token? Perché non usa la chiave pubblica per codificare e la chiave privata per decodificare?

    
posta Aetherus 12.06.2016 - 10:04
fonte

1 risposta

2

Quando parli di fare "reclami", questo è esattamente come è fatto. Una chiave privata non è pensata per essere distribuita. Il custode della chiave è l'utente autentico della chiave. Permette loro di emettere crediti autentici. Se quella chiave fosse mai stata compromessa, allora si potevano fare altre affermazioni che sarebbero state accettate come autentiche. In altre parole, chiunque abbia la chiave privata può impersonare un oracolo autorizzato.

La chiave pubblica, d'altra parte, è pensata per essere distribuita a tutti i server che dovrebbero fidarsi del proprietario della chiave privata. Questa chiave non consente a nessuno di avanzare pretese, ma consente a tutti di riconoscere che il reclamo è effettivamente vero. Altre tecnologie, come SAML, utilizzano una tecnica simile: il server di emissione detiene un certificato privato e le parti relying utilizzano il certificato pubblico di quel server per verificare l'asserzione.

Per quello che vale, non c'è niente di speciale nelle chiavi pubbliche e private. Potresti scambiarli dopo che sono stati generati ma prima che la chiave pubblica venisse distribuita, e funzionerebbe allo stesso modo. E tecnicamente sì, dal momento che JWT ha un formato documentato, sai come dovrebbe essere il payload, il che indebolirebbe un po 'la sicurezza della chiave, ma non ti aiuta davvero, dato che ogni bit in una chiave influenza più bit. Sarebbe molto difficile usare un attacco di solo testo scelto contro un numero elevato di token, semplicemente a causa dell'elevato numero di bit utilizzati. Ricorda, l'obiettivo del ripristino della chiave privata non è quello di ottenere i dati decrittografati (perché la chiave pubblica è già disponibile), è come impersonare un determinato server.

    
risposta data 12.06.2016 - 12:03
fonte

Leggi altre domande sui tag