Svenska
  • säkerhet
  • kryptering
  • jwt
  • asymmetrisk
  • ec
  • rsa
  • offentlig nyckel
  • privat nyckel
  • token
  • signatur

Introduktion till EC- och RSA-signeringsalgoritmer i JWT

Lär dig det väsentliga om asymmetrisk kryptering och förstå för- och nackdelarna med de två populära JWT-signeringsalgoritmerna - EC och RSA.

Charles
Charles
Developer

Bakgrund

I den digitala världen har strävan efter ökad datasäkerhet vid överföring förblivit konstant och ständigt utvecklande. Idag har JSON Web Tokens (JWT) blivit allmänt antagna och spelar en avgörande roll i OAuth 2.0 och OIDC. Men hur verifierar och litar en auktorisationsserver på en JWT-token skickad från en klient? Hur utfärdas och signeras tokenen av utfärdaren? I detta blogginlägg kommer vi att prata om asymmetrisk kryptering och fördjupa oss i för- och nackdelar med olika signeringsalgoritmer som Logto använder i sina JWT-token.

Förstå asymmetrisk kryptering

Asymmetrisk kryptering, även känd som offentlig nyckel-kryptografi, är ett grundläggande koncept inom datorsäkerhet och kryptografi som involverar användningen av ett unikt par relaterade nycklar: en offentlig nyckel och en privat nyckel. Rollerna för dessa nycklar kan verka motstridiga till en början, men de är ovärderliga för datasäkerhet.

  • Offentlig nyckel: Offentliga nyckeln, som namnet antyder, är utformad för öppen delning. I sammanhanget av JWT och liknande system används den offentliga nyckeln för signaturverifiering, inte kryptering. När data signeras med den privata nyckeln och mottagaren har den motsvarande offentliga nyckeln, kan de bekräfta att data verkligen signerades av den privata nyckelinnehavaren och inte har blivit ändrad under överföringen. Dock används den offentliga nyckeln för kryptering i traditionell asymmetrisk kryptering, som HTTPS, och den krypterade datan kan endast dekrypteras av den målservern som innehar den parerade privata nyckeln.
  • Privat nyckel: Däremot är den privata nyckeln en välbevakad hemlighet som bara bör vara känd av 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 som har tillgång till den motsvarande offentliga nyckeln. Dessutom används den privata nyckeln i mer traditionell asymmetrisk kryptering för dekryptering, vilket ger tillgång till data som har säkrats krypterat med den offentliga nyckeln.

Denna unika arrangemang av nycklar, där den offentliga nyckeln verifierar eller krypterar datan och den privata nyckeln signerar eller dekrypterar den, utgör grunden för säker datatransmission och användarautentisering i den digitala världen. Läs detta blogginlägg för mer detaljer.

Asymmetriska krypteringsalgoritmer: RSA vs EC

RSA (Rivest-Shamir-Adelman) och EC (Elliptic Curve) algoritmerna är de två mest använda “matematiska funktionerna” i asymmetrisk kryptering. Som utvecklare ställs vi ofta inför valet mellan dessa algoritmer när vi arbetar med ett autensystem och dess JWT. Men vilket skulle vara ditt val? Låt oss dyka in i för- och nackdelarna med varje.

RSA signeringsalgoritm

  • Fördelar:
    1. Utbrett stöd: RSA stöds allmänt över olika plattformar och bibliotek och säkerställer kompatibilitet i ett brett spektrum av miljöer.
    2. Lång meritlista: RSA har en lång historia av pålitlig säkerhet, och dess algoritmer är väl förstådda av kryptografiska samfundet.
  • Nackdelar:
    1. Nyckelstorlekar: RSA-nycklar är längre för att uppnå samma säkerhetsnivå som EC, vilket resulterar i större tokenstorlekar och ökat beräkningsöverhuvud.
    2. Prestanda: RSA-operationer tenderar att vara långsammare än EC, vilket kan vara en nackdel i högtrafikapplikationer.

EC signeringsalgoritm

  • 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 trafik.
    2. Kompakta nyckelstorlekar: EC-nycklar är mycket kortare än sina RSA-motsvarigheter medan de erbjuder likvärdiga säkerhetsnivåer. Detta leder till minskade lagrings- och nätverkskrav och påskyndade kryptografiska operationer.
    3. Säkerhet: EC är högt värderat för sin robusta säkerhet, stärkt av den invecklade matematiken 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 EC-stöd, vilket potentiellt orsakar kompatibilitetsproblem. T.ex. stöder Cloudflare Zero Trust inte EC-signerade token.
    2. Komplexitet: Implementeringen av EC kan vara mer invecklad på grund av de matematiska detaljerna som är inblandade.

Logtos val av JWT-signeringsalgoritmer

Logto har alltid varit engagerad i de högsta standarderna av säkerhet och flexibilitet och tenderar att använda de mest moderna och prestandaeffektiva lösningarna vid sin kärna. EC erbjuder en vinnande kombination av robust säkerhet och beräkningsmässig effektivitet, vilket gör det till en idealisk lösning för moderna autentiserings- och auktoriseringsbehov. Därför har EC varit vår standardalgoritm för signeringsnycklar från den tidiga fasen av vår produkt.

Men vi har också fått många återkopplingar från våra användare att EC-signerade token inte är kompatibla med vissa tredjepartssystem och ramverk, speciellt de äldre. Därför har vi arbetat med att tillhandahålla stöd för RSA-algoritmen också, vilket säkerställer att Logto förblir anpassningsbart och mångsidigt för alla dina autentiseringsbehov.

I den kommande utgåvan kommer Logto Cloud att presentera en “Privat nyckelrotation”-funktion, som gör att du kan skapa en ny OIDC privat nyckel och kak-nyckel i din hyresgäst. (Den privata nyckeln används för att signera dina JWT-token och kak-nyckeln för att signera dina kakor.)

Konsol-UI-skärmdump för rotation av OIDC-nycklar

Denna funktion hjälper till att minska riskerna förknippade med långsiktig nyckelutlämning eller intrång. Att regelbundet rotera privata nycklar bör vara en grundläggande praxis i alla organisationers säkerhetsstrategi och rekommenderas starkt av Logto.

Dessutom, när du roterar din JWT-signeringsnyckel, kommer vi också att tillhandahålla ett alternativ för att välja signeringsnyckelalgoritmen från EC och RSA. 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, är det nu dags att rotera och välja RSA-algoritmen för din nya privata nyckel.

Eftersom denna inställning ligger i hyresgästens inställningssida, kommer UI:n inte att vara tillgänglig för OSS-användare. Men oroa dig inte, du kan fortfarande uppnå detta genom att uppgradera till den senaste versionen och köra följande CLI-kommandon i Logtos rotkatalog.

I ett nötskal

Asymmetrisk kryptering hjälper till att säkra dina JWT-token i ditt autentiseringssystem. Både EC- och RSA-algoritmerna är väsentliga och populära algoritmer inom kryptografi. Att förstå för- och nackdelarna samt de matematiska principerna bakom dessa algoritmer hjälper till att fatta bättre beslut för din applikation när du arbetar med ett autentiserings- och auktoriseringssystem.

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