Ich bin kein Kryptographiespezialist und hoffe daher, dass meine Antwort auch jemandem helfen kann, der keiner ist.
Es gibt zwei mögliche Arten, Kryptographie in der Programmierung zu nutzen:
- Signieren / Überprüfen
- Verschlüsselung / Entschlüsselung
Wir verwenden das Signieren, wenn wir sicherstellen wollen, dass die Daten von einer vertrauenswürdigen Quelle stammen. Verschlüsselung wird verwendet, um die Daten zu schützen.
Das Signieren / Überprüfen verwendet asymmetrische Algorithmen, d.h. wir signieren mit einem Schlüssel (privat) und der Datenempfänger verwendet den anderen (öffentlichen) Schlüssel zur Überprüfung.
Ein symmetrischer Algorithmus verwendet denselben Schlüssel zum Verschlüsseln und Entschlüsseln von Daten.
Die Verschlüsselung kann sowohl mit symmetrischen als auch mit asymmetrischen Algorithmen durchgeführt werden. vergleichsweise einfacher Artikel zum Thema
Das oben Genannte ist allgemein bekannt, hier nun meine Meinung.
Wenn JWT zur einfachen Identifizierung von Client zu Server verwendet wird, ist keine Signierung oder asymmetrische Verschlüsselung erforderlich. JWT kann mit AES verschlüsselt werden, was schnell und überaus sicher ist. Wenn der Server es entschlüsseln kann, bedeutet das, dass der Server derjenige ist, der es verschlüsselt hat.
Zusammenfassung: Nicht verschlüsselte JWT sind nicht sicher. Symmetrische Verschlüsselung kann anstelle von Signierung verwendet werden, wenn keine dritte Partei beteiligt ist.