JSON Web Token - Warum ist die Nutzlast öffentlich?

30

Ich kann die Gründe nicht verstehen, warum die Claims / Payload eines JWT nach der Base64-Dekodierung öffentlich sichtbar gemacht werden.

Warum?

Es scheint viel nützlicher zu sein, es mit dem Geheimnis verschlüsseln zu lassen.

Kann jemand erklären, warum oder in welcher Situation es sinnvoll ist, diese Daten öffentlich zu halten?

Ich brauche Hilfe
quelle
Wenn Sie JWT schreiben, meinen Sie wahrscheinlich JWS. Weil JWE (das auch "Unterklasse" von JWT ist) tatsächlich den Inhalt verschlüsselt.
Alexey

Antworten:

28

Sie entscheiden sich aus den gleichen Gründen dafür, die Nutzdaten nicht zu verschlüsseln, wie Sie sich dafür entscheiden, nichts anderes zu verschlüsseln: Die Kosten (wie gering sie auch sein mögen) übersteigen den Nutzen, und viele Daten müssen einfach nicht auf diese Weise gesichert werden.

Was Sie am meisten schützen müssen, ist, dass Menschen die Daten manipulieren, damit der falsche Datensatz aktualisiert wird, oder dass jemandes Girokonto Geld einbringt, das es eigentlich nicht haben sollte. Dies wird durch die Signatur des JSON-Web-Tokens erreicht, da das Paket ungültig wird, wenn ein Teil der Kombination aus Header, Nutzlast und Signatur geändert wird.

Beachten Sie, dass Sie die Pakete auf der Transportebene weiterhin mit SSL sichern können.

Robert Harvey
quelle
Ah, ich verstehe, also ist JWT im Wesentlichen ein neues CSRF-Token. Vielen Dank für Ihre Erklärung, es hat die Verwirrung beseitigt.
Ineedhelp
6
Nein, JWT ist kein neues CSRF-Token. Das sind 2 verschiedene Dinge.
Ash
@ash Wenn die Details einer Operation in der JWT gespeichert und auf dem Server validiert sind, spielt die JWT in diesem Szenario dann nicht im Wesentlichen die Rolle der CSRF-Prävention? Ich verstehe, dass der Hauptzweck eines Vanille-JWT die Authentifizierung ist, was aus dieser Antwort sehr deutlich wird. Ich habe mir vorgestellt, mehr Daten hinzuzufügen und zwei Dinge gleichzeitig zu erledigen.
Ineedhelp
@RobertHarvey, Sie verwenden JWT falsch. JST ist ein Überbegriff für JWS und JWE. JWS soll sich authentifizieren, JWE soll verschlüsseln. "Der Zweck eines JSON-Web-Tokens ist die Authentifizierung" sollte also "JWS ist die Authentifizierung" lauten.
Alexey
@Alexey: Ich habe eine kleine Änderung in meiner Antwort vorgenommen, um zu passen.
Robert Harvey
4

Die Verwendung des Begriffs Signatur im RFC entspricht einer digitalen Signatur in der asymmetrischen Kryptographie. Wenn der Absender in der asymmetrischen Kryptografie eine Nachricht mit seinem privaten Schlüssel verschlüsselt, kann jeder, der über die Nachricht verfügt, sie mit dem öffentlichen Schlüssel des Absenders entschlüsseln. Das Ziel mit dem Begriff Signatur besteht also nicht darin, eine Nachricht geheim zu halten, sondern die Integrität / den Absender der Nachricht zu überprüfen, die nicht geändert wurde.

Bei JWTs ist das sendende System sowohl Ersteller als auch Verbraucher der Nachricht (siehe Abbildung unten). Ziel ist es sicherzustellen, dass das an den Benutzer weitergegebene Token nicht manipuliert wird (z. B. wenn ihm erhöhte Berechtigungen erteilt wurden).

Und wie @Robert bereits erwähnte, können / sollten die JWTs weiterhin mit TLS verschlüsselt werden.

Hier finden Sie eine gute Erklärung der JWTs und Signaturen, aus denen das folgende Bild stammt. 5 einfache Schritte zum Verständnis von JSON-Web-Token (JWT)

asdfasdf

Micah B.
quelle
2

Um die Antwort von Robert Harveys zu ergänzen, ist die Verschlüsselung der Nutzdaten mit einem erheblichen Nachteil verbunden. Dies bedeutet, dass der Empfänger des Dienstes ein Geheimnis mit dem Authentifizierungsserver (dem Verschlüsselungsschlüssel) teilen muss, um zu verstehen, ob der Inhaber des Tokens berechtigt ist oder nicht oder nicht. Im Gegensatz dazu kann jeder eine JWT nur mit dem vom Authentifizierungsserver veröffentlichten öffentlichen Schlüssel validieren.

Dies ist ein wichtiger Bestandteil der openid connect-Spezifikation, da Clientanwendungen vom Authentifizierungsserver ausgegebene Identitätstoken validieren können und die Bereitstellung von Ressourcenservern vereinfacht wird (da sie nicht mit Zugriff auf die geheime Verschlüsselung bereitgestellt werden müssen) Schlüssel) und hilft auch bei der Diagnose von Problemen mit einem ausgegebenen JWT.

Justin
quelle
Sie versuchen, asymmetrische und symmetrische Verschlüsselungsmechanismen zu vergleichen. JWT ist eine Implementierung der RSA-Verschlüsselung.
TheAnimatrix