Kryptografia

SHA2 vs SHA3 vs PBKDF2 vs bcrypt vs SCrypt vs Argon2: Mikä valita salasanan tallentamiseen?

Helppo
15 min

Mikä näistä nyt sitten valita salasanan tallentamiseen?

Vanhanaikaiset hajautusfunktiot, kuten MD5 tai SHA1 ovat nykypäivänä soveltumattomia suurimpaan osaan käyttötarkoituksista.

Jäljelle jää kuitenkin liuta moderneja vaihtoehtoja, kuten SHA2, SHA3, PBKDF2, bcrypt, SCrypt ja Argon2. Mikä näistä valita sovelluksen salasanan tallentamiseen?

Voimme aloittaa tiputtamalla SHA2 ja SHA3 hajautusfunktiot pois. Ne on suunniteltu nopeaksi ja tehokkaaksi hajautusfunktioksi, ei erityisesti salasanojen suojaamiseen.

Funktiot, kuten PBKDF2, bcrypt, SCrypt ja Argon2 kuitenin tarjoavat ratkaisuja salasanojen turvalliseen tallennukseen, mutta niiden välillä on silti eroja suorituskyvyssä, turvallisuudessa ja soveltuvuudessa erilaisiin käyttöympäristöihin. Vertaillaan näitä neljää algoritmia.

PBKDF2 (Password-Based Key Derivation Function 2)

PBKDF2 on yksi vanhimmista ja eniten käytetyistä algoritmeista. Se suojaa salasanoja suorittamalla hajautusfunktion useita tuhansia tai jopa miljoonia kertoja, mikä lisää aikaa, joka tarvitaan salasanan murtamiseen. PBKDF2:n etuja ovat sen laaja hyväksyntä ja standardointi (RFC 2898), mikä tekee siitä yhteensopivan monenlaisten järjestelmien kanssa.

Käyttökohteet

  • Kryptografisten avainten laskenta
  • Standardisoituja ratkaisuja vaativat ympäristöt

Esimerkkitapaus

Finanssialan yrityksellä on vanhempi järjestelmä, joka on suunniteltu käyttämään vähemmän turvallisia hajautusfunktioita, kuten MD5 tai SHA-1, käyttäjien salasanojen tallennukseen. Yritys haluaa päivittää järjestelmänsä käyttämään turvallisempaa salasanojen hajautusmenetelmää ilman, että se joutuu uudistamaan koko järjestelmäänsä.

Valinta: PBKDF2 on hyvä valinta tähän tilanteeseen, sillä se on laajalti tuettu ja standardoitu, mikä tekee siitä yhteensopivan vanhempien järjestelmien kanssa. PBKDF2 mahdollistaa myös iteraatioiden määrän säätämisen, jolloin turvallisuustasoa voidaan parantaa ilman merkittäviä muutoksia järjestelmän arkkitehtuuriin.

bcrypt

bcrypt perustuu Blowfish-salausalgoritmiin ja on suunniteltu erityisesti salasanojen suojaamiseen. Sen pääominaisuus on kyky säätää laskennallisen vaativuuden tasoa, mikä mahdollistaa suojauksen vahvistamisen ajan myötä. bcrypt on suosittu web-sovelluksissa sen tehokkaan suolauksen (satunnaisuuden lisääminen salasanaan) ja kohtuullisen hyvän vastustuskyvyn brute-force hyökkäyksiä vastaan ansiosta.

Käyttökohteet:

  • Web-sovellusten salasanojen tallennus
  • Järjestelmät, jotka tarvitsevat vahvaa suolauksen tuomaa suojaa

Esimerkkitapaus

Startup-yritys kehittää uutta sosiaalisen median alustaa ja haluaa varmistaa, että käyttäjien salasanat ovat suojattu nykyaikaisilla turvallisuuskäytännöillä. Tärkeää on myös, että salasanojen käsittely on tehokasta, jotta käyttäjäkokemus pysyy sujuvana.

Valinta: bcrypt on ihanteellinen valinta tässä skenaariossa, koska se tarjoaa vahvan suojan brute-force hyökkäyksiä vastaan ja on suunniteltu erityisesti salasanojen suojaamiseen. Sen sisäänrakennettu suolaus ja säädettävä laskennallinen vaativuus tarjoavat hyvän tasapainon turvallisuuden ja suorituskyvyn välillä.

SCrypt

SCrypt on suunniteltu erityisesti vastustamaan laitteistopohjaisia hyökkäyksiä, kuten ASIC- ja FPGA-piirejä, jotka voivat murtaa salasanoja nopeasti. Se saavuttaa tämän vaatimalla merkittäviä määriä sekä prosessoritehoa että muistia, mikä tekee siitä tehokkaan suojausmekanismin sekä online- että offline-hyökkäyksiä vastaan.

Käyttökohteet:

  • Järjestelmät, jotka ovat erityisen alttiita brute-force hyökkäyksille
  • Sovellukset, joissa on saatavilla paljon muistiresursseja

Esimerkkitapaus

Kryptovaluuttaprojekti suunnittelee uutta digitaalista lompakkoa, joka tallentaa käyttäjien yksityisiä avaimia. Projektin tavoitteena on suojata nämä avaimet mahdollisimman hyvin sekä estää tehokkaasti offline-hyökkäykset.

Valinta: SCrypt on tässä tapauksessa suositeltava, koska sen muisti-intensiivinen lähestymistapa tekee siitä vaikeasti hyödynnettävän erikoistuneella laitteistolla, kuten ASIC-piireillä. Tämä lisää turvallisuutta erityisesti silloin, kun hyökkääjällä on pääsy fyysiseen laitteeseen.

Argon2

Argon2 on uusin ja edistynein algoritmi tässä vertailussa. Se tarjoaa kolme varianttia (Argon2d, Argon2i ja Argon2id), jotka on suunniteltu erilaisiin turvallisuusvaatimuksiin. Argon2 on suunniteltu olemaan sekä muisti-intensiivinen että aika-intensiivinen, mikä tarjoaa parhaan suojan nykyaikaisia hyökkäysmenetelmiä vastaan.

Käyttökohteet

  • Sovellukset, jotka vaativat korkeinta mahdollista turvallisuustasoa
  • Järjestelmät, jotka voivat hyödyntää muistin intensiivistä suojaa

Esimerkkitapaus

Pilvipalveluntarjoaja kehittää uutta turvallista tallennusalustaa, joka tarjoaa käyttäjille mahdollisuuden tallentaa arkaluonteisia tietoja, kuten henkilötietoja ja taloudellisia tietoja. Turvallisuus on palvelun keskeinen myyntivaltti.

Valinta: Argon2, erityisesti sen Argon2id-variantti, on paras vaihtoehto tässä tilanteessa. Se tarjoaa parhaan suojan nykyisiä hyökkäystyyppejä vastaan, mukaan lukien sivukanavahyökkäykset ja brute-force hyökkäykset. Argon2id yhdistää Argon2i:n ja Argon2d:n edut, tarjoten joustavan ja vahvan ratkaisun, joka soveltuu erityisen hyvin uusiin turvallisuuskriittisiin sovelluksiin.

Mikä valita?

PBKDF2, bcrypt, SCrypt ja Argon2 ovat kaikki melko lailla turvallisia vaihtoehtoja salasanan suojaamiseen. Ylhäällä on vähän pointtereita että milloin valita mikäkin, ihan tavalliseen web-sovellukseen bcrypt on oikein passeli vaihtoehto, esimerkiksi Hakatemia käyttää sitä.

SHA2 ja SHA3 soveltuvat taas sellaisiin konteksteihin joissa nopeudesta ei ole haittaa (jolloin siitä on yleensä hyötyä) kuten vaikkapa digitaalisiin allekirjoituksiin.

Nyrkkisääntö

PBKDF2, bcrypt, SCrypt ja Argon2 salasanoihin. SHA2 tai SHA3 kaikkeen muuhun. Bcrypt on hyvä ja laajalti käytetty valinta ihan "Perus sovellukseen", esimerkiksi Hakatemia käyttää sitä.

hakatemia pro

Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.

Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.