04Moduulit
JWT Key Confusion Hyökkäykset
Keskitaso30MIN
JWT ja Asymmetrinen Salaus
JWT on mahdollista allekirjoittaa myös asymmetrisellä, eli julkisen avaimen salauksella. Tällöin meillä on käytössä yhden salausavaimen sijasta kaksi avainta, julkinen ja yksityinen avain.
Julkisen avaimen voi nimensä mukaisesti jakaa vapaasti maailmalle. Julkista avainta voidaan käyttää yksityisellä avaimella allekirjoitetun JWT:n tarkistamiseen.
Otetaan esimerkki. Sanotaan, että meillä on HTTP-rajapinta api.example.com johon kirjaudutaan JWT-tokenilla jonka myöntää kirjautumispalvelu auth.example.com.
Kirjautuminen ja HTTP-rajapinnan käyttö voisi toimia näin:
- Käyttäjä lähettää käyttäjätunnuksensa ja salasanansa tunnistuspalvelulle (auth.example.com). Käyttäjätunnus: "Maija", salasana: "kissa123".
- Tunnistuspalvelulla on yksityinen avain, kenelläkään muulla ei ole sitä. Tunnistuspalvelu käyttää yksityistä avaintaan, ja allekirjoitaa sillä JWT:n jossa on claimeissa käyttäjänimi "Maija".
- Maija lähettää seuraavaksi HTTP-rajapinnalle (api.example.com) viestin, jossa on JWT mukana (tyypillisesti Authorization-otsakkessa).
- HTTP-rajapinnalla on tunnistuspalvelun julkinen avain, jonka se on tyypillisesti hakenut tunnistuspalvelun **/.well-known/jwks.json -**polusta. HTTP-rajapinta validoi JWT-tokenin julkisella avaimella, ja jos se on allekirjoitettu oikealla yksityisellä avaimella, tarkistus onnistuu, ja tiedetään että Maija on tosiaan Maija. Ainakin jos tunnistuspalveluun on luottaminen.
1 / 4
Hakatemia Pro
Hakkeroinnin oppiminen alkaa tästä
Sadat interaktiiviset kurssit, virtuaalilabrat ja CTF-haasteet selaimessasi. Aloita ilmainen kokeilu ilman korttitietoja.