Einführung in EC- und RSA-Signaturalgorithmen in JWT
Lerne die Grundlagen der asymmetrischen Verschlüsselung kennen und verstehe die Vor- und Nachteile der beiden beliebten JWT-Signaturschlüsselalgorithmen - EC und RSA.
Hintergrund
In der digitalen Welt ist das Streben nach verbesserter Datensicherheit bei der Übertragung konstant und immer im Wandel. Heutzutage sind JSON Web Tokens (JWT) weit verbreitet und spielen eine entscheidende Rolle in OAuth 2.0 und OIDC. Aber wie kann ein Autorisierungsserver ein JWT-Token, das von einem Client gesendet wird, überprüfen und vertrauen? Wie wird das Token vom Aussteller erstellt und signiert? In diesem Blogbeitrag sprechen wir über asymmetrische Verschlüsselung und tauchen in die Vor- und Nachteile verschiedener Signaturalgorithmen ein, die Logto in seinen JWT-Tokens verwendet.
Verständnis der asymmetrischen Verschlüsselung
Asymmetrische Verschlüsselung, auch bekannt als Public-Key-Kryptographie, ein grundlegendes Konzept in der Computersicherheit und Kryptographie, beinhaltet die Verwendung eines eindeutigen Paares zusammenhängender Schlüssel: eines öffentlichen Schlüssels und eines privaten Schlüssels. Die Rollen dieser Schlüssel mögen zunächst kontraintuitiv erscheinen, sind jedoch unerlässlich für die Datensicherheit.
- Öffentlicher Schlüssel: Der öffentliche Schlüssel ist, wie der Name schon sagt, zum offenen Teilen bestimmt. Im Kontext von JWT und ähnlichen Systemen wird der öffentliche Schlüssel für die Signaturvalidierung, nicht für die Verschlüsselung, verwendet. Wenn Daten mit dem privaten Schlüssel signiert werden und der Empfänger den entsprechenden öffentlichen Schlüssel besitzt, können sie validieren, dass die Daten tatsächlich vom Inhaber des privaten Schlüssels signiert wurden und während der Übertragung nicht manipuliert wurden. In traditioneller Verwendung der asymmetrischen Verschlüsselung, wie z. B. bei HTTPS, wird der öffentliche Schlüssel zur Verschlüsselung verwendet, und die verschlüsselten Daten können nur vom Zielserver entschlüsselt werden, der den gepaarten privaten Schlüssel besitzt.
- Privater Schlüssel: Im Gegensatz dazu ist der private Schlüssel ein streng gehütetes Geheimnis, das nur seinem rechtmäßigen Inhaber bekannt sein sollte. Im Kontext von JWT wird der private Schlüssel verwendet, um digitale Signaturen zu erstellen, die von jedem mit Zugriff auf den entsprechenden öffentlichen Schlüssel verifiziert werden können. Zusätzlich wird im Kontext einer traditionelleren asymmetrischen Verschlüsselung der private Schlüssel tatsächlich zur Entschlüsselung verwendet, um Zugang zu Daten zu erhalten, die sicher mit dem öffentlichen Schlüssel verschlüsselt wurden.
Diese einzigartige Schlüsselanordnung, bei der der öffentliche Schlüssel die Daten verifiziert oder verschlüsselt und der private Schlüssel sie signiert oder entschlüsselt, bildet die Grundlage für sichere Datenübertragung und Benutzerauthentifizierungsmechanismen in der digitalen Welt. Weitere Details findest du in diesem Blogbeitrag.
Asymmetrische Verschlüsselungsalgorithmen: RSA vs EC
Die Algorithmen RSA (Rivest-Shamir-Adelman) und EC (Elliptische Kurve) sind die beiden am häufigsten verwendeten “mathematischen Funktionen” in der asymmetrischen Verschlüsselung. Als Entwickler werden wir oft vor die Wahl zwischen diesen Algorithmen gestellt, wenn wir mit einem Auth-Framework und seinen JWTs umgehen. Aber welcher wäre deine Wahl? Lass uns die Vor- und Nachteile jedes Einzelnen untersuchen.
RSA-Signaturalgorithmus
- Vorteile:
- Weit verbreitete Unterst ützung: RSA wird auf verschiedenen Plattformen und in verschiedenen Bibliotheken weitgehend unterstützt, was die Kompatibilität in einer Vielzahl von Umgebungen gewährleistet.
- Lange Geschichte: RSA hat eine lange Geschichte zuverlässiger Sicherheit, und seine Algorithmen sind der kryptographischen Gemeinschaft gut bekannt.
- Nachteile:
- Schlüssellängen: RSA-Schlüssel sind länger, um das gleiche Sicherheitsniveau wie EC zu erreichen, was zu größeren Token-Größen und erhöhtem Rechenaufwand führt.
- Leistung: RSA-Operationen sind in der Regel langsamer als EC, was in hochfrequentierten Anwendungen ein Nachteil sein kann.
EC-Signaturalgorithmus
- Vorteile:
- Effizienz: EC bietet überlegene Leistung im Vergleich zu RSA und ist ideal für Anwendungen mit Ressourcenbeschränkungen oder hohem Verkehrsaufkommen.
- Kompakte Schlüssellängen: EC-Schlüssel sind wesentlich kürzer als ihre RSA-Pendants, bieten jedoch gleichwertige Sicherheitsniveaus. Dies führt zu reduzierten Speicher- und Netzwerk Anforderungen und beschleunigten kryptographischen Operationen.
- Sicherheit: EC wird wegen seiner robusten Sicherheit, die durch die komplexe Mathematik hinter elliptischen Kurven gestärkt wird, hoch geschätzt, was es widerstandsfähig gegen Brute-Force-Angriffe macht.
- Nachteile:
- Begrenzte Unterstützung: Einige ältere Systeme und Bibliotheken könnten keine umfassende EC-Unterstützung haben, was zu Kompatibilitätsproblemen führen könnte. Z. B. Cloudflare Zero Trust unterstützt keine EC-signierten Tokens.
- Komplexität: Die Implementierung von EC kann aufgrund der mathematischen Komplexitäten komplizierter sein.
Logtos Wahl der JWT-Signaturalgorithmen
Logto hat sich immer den höchsten Sicherheits- und Flexibilitätsstandards verpflichtet und neigt dazu, die modernsten und leistungsfähigsten Lösungen im Kern zu verwenden. EC bietet eine erfolgreiche Kombination aus robuster Sicherheit und Rechenleistung und macht es zu einer idealen Lösung für moderne Authentifizierungs- und Autorisierungsbedürfnisse. Daher ist EC seit den frühen Phasen unseres Produkts unser Standardsignaturschlüsselalgorithmus.
Wir haben jedoch auch zahlreiche Rückmeldungen von unseren Benutzern erhalten, dass die EC-signierten Tokens nicht mit einigen Drittsystemen und Frameworks kompatibel sind, insbesondere mit den älteren. Daher arbeiten wir daran, auch Unterstützung für den RSA-Algorithmus bereitzustellen, um sicherzustellen, dass Logto anpassungsfähig und vielseitig für alle deine Authentifizierungsbedürfnisse bleibt.
Im nächsten kommenden Release wird Logto Cloud eine Funktion zur “Rotation des privaten Schlüssels” einführen, die es dir ermöglicht, einen neuen OIDC-Privatschlüssel und Cookie-Schlüssel in deinem Mandanten zu erstellen. (Der private Schlüssel wird verwendet, um deine JWT-Tokens zu signieren, und der Cookie-Schlüssel, um deine Cookies zu signieren.)
Diese Funktion hilft, die mit einer langfristigen Schlüsseloffenlegung oder -kompromittierung verbundenen Risiken zu mindern. Regelmäßige Rotation der privaten Schlüssel sollte eine grundlegende Praxis in der Sicherheitsstrategie jeder Organisation sein und wird von Logto dringend empfohlen.
Außerdem, während du deinen JWT-Signaturschlüssel rotierst, bieten wir auch die Möglichkeit, den Signaturschlüsselalgorithmus zwischen EC und RSA auszuwählen. Wenn du also das Problem hast, dass du keine Verbindung zu einer Drittanbieterplattform herstellen kannst, weil der JWT-Signaturalgorithmus nicht unterstützt wird, ist jetzt der richtige Zeitpunkt zu rotieren und den RSA-Algorithmus für deinen neuen privaten Schlüssel auszuwählen.
Da sich diese Einstellung auf der Seite Mandanteneinstellungen befindet, wird die Benutzeroberfläche für OSS-Benutzer nicht verfügbar sein. Aber keine Sorge, du kannst dies immer noch erreichen, indem du auf die neueste Version aktualisierst und die folgenden CLI-Befehle im Logto-Stammverzeichnis ausführst.
Kurz gesagt
Asymmetrische Verschlüsselung hilft, deine JWT-Tokens in deinem Auth-System zu sichern. Sowohl EC als auch RSA sind wesentliche und beliebte Algorithmen in der Kryptographie. Das Verständnis der Vor- und Nachteile und der mathematischen Prinzipien hinter diesen Algorithmen hilft dabei, bessere Entscheidungen für deine Anwendung zu treffen, die in einem Authentifizierungs- und Autorisierungsframework arbeiten soll.
Logto wird weiterhin forschen und dir ein sichereres und robusteres Benutzererlebnis bieten.