Svenska
  • säkerhet
  • kryptering
  • jws
  • asymmetrisk
  • ec
  • rsa
  • publik nyckel
  • privat nyckel
  • token
  • signering jwt

Översikt över JWT-signeringsalgoritmer

Utforska JSON Web Token (JWT) signeringsalgoritmer, som täcker två av de mest populära asymmetriska krypteringsmetoderna: RSA och EC. Lär dig om fördelarna och nackdelarna med varje algoritm och hur Logto använder dem för att säkra dina JWT-token.

Charles
Charles
Developer

Vad är en JWT?

JSON Web Token (JWT) är ett kompakt, URL-säkert sätt att representera anspråk säkert. Strukturen inkluderar en sidhuvud, nyttolast och signatur.

Nuförtiden har JWT:er blivit allmänt antagna och spelar en avgörande roll i OAuth 2.0 och OIDC. Men hur verifierar och litar en auktoriseringsserver på en JWT som skickats från en klient? Hur utfärdas och undertecknas token av utfärdaren? I denna bloggpost kommer vi att prata om asymmetrisk kryptering och gå in på för- och nackdelarna med olika signeringsalgoritmer som Logto använder i sina JWT-token.

JWT-struktur

Logto signerar alla JWT-token, inklusive både ID-token och åtkomsttoken. En signerad JWT är också känd som en JWS (JSON Web Signature). En signerad JWT-struktur består av tre delar: sidhuvud, nyttolast och signatur, separerade med punkter (.).

JOSE (JSON Object Signing and Encryption) sidhuvud

Sidhuvudet består vanligtvis av följande delar:

  • typ: Typen av token, vilket är JWT.
  • alg: Signeringsalgoritmen som används, såsom RS256 eller ES384.
  • kid: En indikation på vilken nyckel som användes för att säkra JWT.

Nyttolast

Nyttolasten innehåller anspråken, vilka är uttalanden om en entitet (vanligtvis användaren) och ytterligare data. Till exempel kan en ID-token innehålla följande anspråk:

Signatur

Signaturen används för att verifiera att avsändaren av JWT inte är en bedraga och att meddelandet inte har manipulerats. När du använder en signerad JWT måste du verifiera tokens signatur för att säkerställa tokenens integritet. Kontrollera denna guide om hur man validerar JWT-token för att skydda din API.

Vad är asymmetrisk kryptering?

Asymmetrisk kryptering, även känd som public key-kryptografi, ett grundläggande koncept inom datasäkerhet och kryptografi, involverar användningen av ett unikt par av relaterade nycklar: en publik nyckel och en privat nyckel.

Definitioner av publika och privata nycklar

  • Publik nyckel: Den publika nyckeln, som namnet antyder, är avsedd för öppen delning. I sammanhanget av JWT och liknande system används den publika nyckeln för signaturverifiering, inte kryptering. När data är signerad med den privata nyckeln och mottagaren besitter motsvarande publika nyckel, kan de bekräfta att datan verkligen var signerad av innehavaren av den privata nyckeln och inte har manipulerats under överföringen.
  • Privat nyckel: I kontrast är den privata nyckeln en välbevarad hemlighet som bara bör vara känd för dess rättmätiga ägare. I sammanhanget av JWT används den privata nyckeln för att skapa digitala signaturer som kan verifieras av alla med åtkomst till motsvarande publika nyckel.

Denna unika arrangemang av nycklar bildar grunden för säker dataöverföring och användarauktoriseringsmekanismer i den digitala världen. Kolla denna bloggpost för mer information.

Populära JWT-signeringsnyckelalgoritmer: RSA vs EC

De RSA (Rivest-Shamir-Adelman) och EC (Elliptisk kurva) algoritmerna är de två vanligaste använda “matematiska funktionerna” i asymmetrisk kryptering.

Som utvecklare ställs vi ofta inför ett val mellan dessa algoritmer när vi hanterar ett autentiseringsramverk och dess JWT. Men vilken skulle vara ditt val? Låt oss gå in på fördelarna och nackdelarna med varje.

RSA-signeringsalgoritm (Exempelvis RSASHA256)

  • Fördelar:
    1. Utbrett stöd: RSA är allmänt stödd över olika plattformar och bibliotek, vilket säkerställer kompatibilitet i en mängd olika miljöer.
    2. Lång meritlista: RSA har en lång historia av tillförlitlig säkerhet, och dess algoritmer är välförstådda av den kryptografiska gemenskapen.
  • Nackdelar:
    1. Nyckelstorlekar: RSA-nycklar är längre för att uppnå samma säkerhetsnivå som EC, vilket resulterar i större tokenstorlekar och ökad beräkningsbörda.
    2. Prestanda: RSA-operationer tenderar att vara långsammare än EC, vilket kan vara en nackdel i miljöer med hög trafik.

EC-signeringsalgoritm (Exempelvis ECDSASHA384)

  • Fördelar:
    1. Effektivitet: EC har överlägsen prestanda jämfört med RSA, vilket gör det idealiskt för applikationer med resursbegränsningar eller hög belastning.
    2. Kompakta nyckelstorlekar: EC-nycklar är avsevärt kortare än sina RSA-motsvarigheter men erbjuder motsvarande säkerhetsnivåer. Detta leder till minskade lagrings- och nätverkskrav och snabbare kryptografiska operationer.
    3. Säkerhet: EC är högt uppskattat för sin robusta säkerhet, förstärkt av den komplicerade matematik bakom elliptiska kurvor, vilket gör det motståndskraftigt mot brute-force attacker.
  • Nackdelar:
    1. Begränsat stöd: Vissa äldre system och bibliotek kan sakna omfattande stöd för EC, vilket kan leda till kompatibilitetsproblem. Exempelvis stöder inte Cloudflare Zero Trust EC-signerade token.
    2. Komplexitet: Implementering av EC kan vara mer intrikat på grund av de matematiska komplexitet det involverar.

Logtos val av JWT-signeringsalgoritmer

Logto har alltid strävat efter högsta säkerhets- och flexibilitetsstandarder och tenderar att använda de mest moderna och högpresterande lösningarna i sin kärna. EC erbjuder en vinnande kombination av robust säkerhet och beräkningsprestanda, vilket gör det till ett idealiskt val för moderna autentiserings- och auktoriseringsbehov. Därför har EC varit vår standard signeringsnyckelalgoritm sedan de tidiga stadierna av vår produkt.

Men vi har också erkänt att EC-signerade token inte är kompatibla med vissa tredjepartssystem och ramverk, särskilt de äldre. Därför har vi också introducerat en funktion för att ändra din JWT-signeringsnyckelalgoritm genom att rotera dina privata nycklar.

Logto Console UI-skärmdump för att rotera dina privata nycklar

Så om du står inför problemet med att inte kunna ansluta till en tredjepartsplattform på grund av den icke-stödda JWT-signeringsalgoritmen, nu är det dags att rotera och välja RSA-algoritmen för din nya privata nyckel.

Denna funktion hjälper också till att minska riskerna associerade med långtidsnyckelns exponering eller kompromiss. Att regelbundet rotera privata nycklar bör vara en grundläggande praxis i varje organisations säkerhetsstrategi och rekommenderas starkt av Logto.

Sammanfattning: De vanligt använda JWT-signeringsalgoritmerna: RSA och EC

Att signera JWT-token säkerställer integriteten och äktheten hos den data som överförs. Valet av signeringsalgoritm kan ha en betydande påverkan på säkerheten, prestandan och kompatibiliteten av din applikation.

Både RSA och EC-algoritmer är viktiga och populära algoritmer inom kryptografi. Att förstå fördelarna och nackdelarna och de matematiska principerna bakom dessa algoritmer hjälper till att fatta bättre beslut för din applikation att arbeta med ett autentiserings- och auktoriseringsramverk.

Logto kommer att fortsätta utforska och erbjuda dig en mer säker och robust användarupplevelse.