Cryptology Academy · Oppitunti

HS256 ja RS256: symmetriset ja epäsymmetriset JWT:t

Valitkaa todennusjärjestelmäänne sopiva allekirjoitusalgoritmi.

Oppitunti 2/413 vaihetta

HS256 ja RS256: symmetriset ja epäsymmetriset JWT:t on ilmainen Cryptology Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cryptology Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Algoritmiperheet

JWT:n allekirjoituksessa käytetään joko symmetrisiä (HMAC) tai epäsymmetrisiä (RSA, ECDSA) algoritmeja. HS256 = HMAC-SHA256. RS256 = RSA-PKCS1v1.5-SHA256. ES256 = ECDSA-P256-SHA256. Valinta vaikuttaa avainten jakeluun ja luottamusmalliin.

HS256: symmetrinen HMAC

HS256 käyttää samaa jaettua salausavainta sekä allekirjoittamiseen että todentamiseen. Sekä myöntäjällä että jokaisella verifioijalla on oltava sama salaisuus. Se on helppo toteuttaa, mutta edellyttää avaimen turvallista jakamista kaikille verifioijille.

HS256:n käyttötapaukset

HS256 sopii, kun myöntäjä ja verifioija ovat sama palvelu (esim. monoliittinen API, joka allekirjoittaa omat tokeninsa ja tarkistaa ne). Älkää koskaan käyttäkää HS256:ta, jos useiden toisistaan riippumattomien palvelujen täytyy tarkistaa tokeneita — kaikkien on saatava salaisuus.

RS256: epäsymmetrinen RSA

RS256 käyttää yksityistä avainta allekirjoittamiseen ja julkista avainta tarkistamiseen. Vain autentikointipalvelimella on yksityinen avain. Kaikki resurssipalvelimet noutavat julkisen avaimen JWKS-päätepisteestä ja tarkistavat allekirjoitukset paikallisesti — salaisuuden jakamista ei tarvita.

RS256:n käyttötapaukset

RS256 sopii erityisesti mikropalveluarkkitehtuureihin: identiteetintarjoaja allekirjoittaa tokenit; kukin downstream-palvelu tarkistaa ne julkisella avaimella ilman yhteydenottoa IDP:hen jokaisen pyynnön yhteydessä. Ratkaisu skaalautuu vaakasuunnassa ilman avainten jakeluun liittyvää riskiä.

ES256: ECDSA-vaihtoehto

ES256 käyttää ECDSA:ta P-256-käyrällä. Allekirjoituksen koko on 64 tavua, kun taas RS256:n 2048-bittisellä avaimella se on 256 tavua. Tarkistus on noin 10 kertaa nopeampi kuin RS256:llä. Sitä suositaan, kun kaistanleveys tai tarkistusnopeus on kriittinen (mobiili-API:t, IoT).

Avainten kierto

RS256/ES256: kiertäkää avaimet julkaisemalla uusi avain (uusi kid) JWKS:ään, allekirjoittamalla uudet tokenit uudella avaimella, antamalla vanhoille tokeneille armonaika vanhentua ja poistamalla sitten vanha avain. HMAC-avainten kierto edellyttää uuden salaisuuden jakamista uudelleen.

Suorituskyvyn vertailu

HS256:n tarkistus: ~1 µs. RS256:n tarkistus: ~100 µs (2048-bittinen). ES256:n tarkistus: ~50 µs (P-256). HS256 on nopein, mutta se edellyttää salaisuuden jakamista. ES256 tasapainottaa turvallisuuden ja suorituskyvyn parhaiten hajautetuissa järjestelmissä.

alg-otsakehyökkäyksen esikatselu

Kriittinen haavoittuvuus: jos tarkistaja luottaa alg-otsakkeeseen sokeasti, hyökkääjä voi vaihtaa alg-arvon RS256:sta HS256:een ja allekirjoittaa tokenin palvelimen julkisella avaimella (joka on julkinen) HMAC-salaisuutena. Korjaus: älkää koskaan luottako alg-otsakkeeseen.

Algoritmin valinta

Valinta: yksittäinen palvelu → HS256. Usean palvelun järjestelmä/mikropalvelut → RS256 tai ES256. Suuren volyymin mobiilisovellus → ES256. Epäselvissä tilanteissa käyttäkää ES256:ta (P-256) tai RS256:ta vähintään 2048-bittisillä avaimilla. Älkää koskaan käyttäkö RS512:ta suorituskykyherkillä poluilla.

Kirjastot ja standardit

Käyttäkää PyJWT:tä (Python), josea (Node.js) tai auth0/java-jwt:tä. Määrittäkää odotettu algoritmi aina kiinteästi verify-kutsussa: jwt.decode(token, secret, algorithms=["HS256"]). Älkää koskaan välittäkö algorithms=None tai jättäkö parametria pois.

Pikatarkistus

Miksi RS256:ta suositaan HS256:n sijaan mikropalveluarkkitehtuureissa?

Yhteenveto

HS256 on symmetrinen (jaettu salaisuus); RS256/ES256 ovat asymmetrisiä (allekirjoitus yksityisellä avaimella, tarkistus julkisella). Käyttäkää asymmetrisiä algoritmeja usean osapuolen järjestelmissä. Seuraavaksi: JWT-haavoittuvuuksien hyväksikäyttö.

Aloita maksutta

Opi Cryptology Academy tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
67
Oppitunnit
261

Usein kysytyt kysymykset

Onko oppitunti ”HS256 ja RS256: symmetriset ja epäsymmetriset JWT:t” ilmainen?

Kyllä – oppitunnin ”HS256 ja RS256: symmetriset ja epäsymmetriset JWT:t” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cryptology Academy-kurssin, päivitä CoddyKit PROhon. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”HS256 ja RS256: symmetriset ja epäsymmetriset JWT:t”?

Valitkaa todennusjärjestelmäänne sopiva allekirjoitusalgoritmi. Harjoittelet Cryptology Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cryptology Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cryptology Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”HS256 ja RS256: symmetriset ja epäsymmetriset JWT:t”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cryptology Academy-oppitunnilla?

Kyllä. Jokainen Cryptology Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. JWT:n rakenne: otsake, hyötykuorma ja allekirjoitus
  2. HS256 ja RS256: symmetriset ja epäsymmetriset JWT:t
  3. JWT-haavoittuvuudet: alg=none ja avainten sekoittuminen
  4. JWT:n turvallisen toteutuksen parhaat käytännöt
← Takaisin: Cryptology Academy