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.