Kryptografia

PBKDF2, BCrypt, SCrypt ja Argon2

Helppo
20 min

Mikä on PBKDF2?

Password-Based Key Derivation Function 2 (PBKDF2) on turvallisuusstandardi, joka on suunniteltu vahvistamaan salasanojen turvallisuutta muuntamalla ne pitkiksi ja monimutkaisiksi avaimiksi käyttäen hajautusfunktioita. PBKDF2 on laajalti hyväksytty menetelmä, jota käytetään salasanojen suojaamiseen ja kryptografisten avainten laskemisessa.

Se ei ole oikeastaan hajautusfunktio vaan avainjohtamisfunktio (key derivation function) jolla saadaan luotua kryptografisia avaimia salasanasta ja suolasta.

Sitä voidaan käyttää sekä salasanojen turvalliseen tallentamiseen että kryptografisten avainten johtamiseen.

PBKDF2:n Toimintaperiaate

PBKDF2 vahvistaa heikkoja salasanoja iteratiivisen prosessin kautta. Sen tavoitteena on tehdä avainten laskemisesta vaativaa, mikä hidastaa hyökkääjien yrityksiä murtaa salasanoja brute-force hyökkäyksillä tai käyttämällä sateenkaaritaulukoita.

Keskeiset Ominaisuudet:

  • Suola (Salt): PBKDF2 käyttää suolaa, joka on satunnainen merkkijono lisättynä salasanaan ennen sen käsittelyä. Tämä estää hyökkääjiä käyttämästä tehokkaasti ennalta laskettuja hasheja ja varmistaa, että kahdesta samasta salasanasta johdetaan eri avaimet.
  • Iteraatiot: Avainten laskennassa käytettävien iteraatioiden määrä on säädettävissä. Mitä suurempi iteraatioiden määrä, sitä turvallisempi prosessi on, mutta myös sen suorittaminen kestää kauemmin. Tämä tasapaino suojaa tehokkaasti salasanoja brute-force hyökkäyksiltä tarjoten samalla käytettävyyttä.
  • Hajautusfunktio: PBKDF2 voidaan yhdistää mihin tahansa hajautusfunktioon, kuten SHA-256 tai SHA-1. Valinta vaikuttaa lopullisen avaimen turvallisuuteen ja laskennalliseen vaativuuteen.

PBKDF2:n Käyttötarkoitukset

PBKDF2:n pääasiallinen käyttötarkoitus on suojata salasanoja tallennettaessa. Se muuntaa heikot salasanat laskennallisesti turvallisiksi avaimiksi, jotka voidaan turvallisesti tallentaa tietokantoihin. Lisäksi sitä käytetään laajalti seuraavissa sovelluksissa:

  • Kryptografisten avainten johdanta: Esimerkiksi salausavaimet, jotka ovat peräisin käyttäjän salasanasta.
  • Digitaalinen allekirjoitus: Vahvistamaan viestin eheyttä ja aitoutta.
  • VPN- ja muut verkkoautentikointiprotokollat: Parantamaan käyttäjän todennusta turvallisissa yhteyksissä.

Mikä on bcrypt?

BCrypt on hajautusfunktio, joka on erityisesti suunniteltu salasanojen suojaamiseen. Sen kehittivät Niels Provos ja David Mazières vuonna 1999, ja se perustuu Blowfish-salausalgoritmiin. BCryptin tärkein ominaisuus on sen kyky vastustaa brute-force hyökkäyksiä tarjoamalla skaalautuvan työmäärän, joka tekee sen laskennallisesti kalliiksi hyökkääjille.

bcryptin Toimintaperiaate

bcryptin suunnittelun ydinajatus on laskenta-ajan hidastaminen. Toisin kuin perinteiset hajautusfunktiot, jotka on optimoitu nopeuteen, bcrypt lisää tarkoituksella laskennallista kuormaa. Tämä saavutetaan käyttämällä "suolaa" ja työmääräkerrointa, joka määrittää, kuinka monta kertaa hajautusfunktio suoritetaan.

Työmääräkerroin (Work factor)

Työmääräkerroin on bcryptin keskeinen ominaisuus. Se mahdollistaa laskennan vaikeustason säätämisen, mikä tarkoittaa, että hajautusfunktion suorittamisen vaikeutta voidaan lisätä ajan myötä, kun laskentateho kasvaa. Tämä tekee bcryptistä pitkäaikaisesti kestävän ratkaisun salasanojen suojaamiseen.

bcryptin Käyttökohteet

bcrypt on tullut alan standardiksi web-sovellusten salasanojen suojaamisessa. Sen suosio perustuu sen kykyyn tarjota vahva suojaus yksinkertaisella ja tehokkaalla tavalla. Modernit web-kehysrakenteet ja ohjelmointikielet tarjoavat valmiita bcryptiin perustuvia työkaluja, mikä helpottaa sen integrointia sovelluksiin.

Mikä on SCrypt?

SCrypt on hajautusfunktio, joka on suunniteltu erityisesti salasanojen suojaamiseen tarjoamalla korkea laskennallinen vaativuus ja muistin intensiivinen prosessi. Kehittäjänä toimi Colin Percival vuonna 2009, ja sen päämääränä oli luoda hajautusmekanismi, joka olisi immuuni brute-force hyökkäyksille. SCrypt on nykyään laajalti hyväksytty ja käytetty menetelmä, joka on löytänyt paikkansa niin salasanojen suojaamisessa kuin kryptovaluuttojen louhinnassa.

SCryptin Tekninen Toiminta

SCrypt erottuu muista hajautusfunktioista, kuten SHA-256 ja bcrypt, sen ainutlaatuisen laskennallisen vaativuuden ja muistin käytön suhteen. Sen perusideana on vaatia merkittävä määrä muistia jokaisen hajautusoperaation aikana, mikä tekee sen suorittamisesta sekä aika- että resurssi-intensiivistä.

SCryptin Keskeiset Ominaisuudet:

  • Muisti-intensiivisyys: SCrypt vaatii suoritusaikanaan suuren määrän RAM-muistia, mikä tekee siitä vaikeasti toteutettavan laitteistolla, joka on optimoitu vain laskentatehon suhteen.
  • Säädettävä laskennallinen vaativuus: Kuten PBKDF2 ja bcrypt, SCrypt mahdollistaa laskennan vaikeustason säätämisen parametreilla, mutta lisää tähän vielä muistivaatimuksen, joka tekee siitä vieläkin turvallisemman.

SCryptin Käyttötarkoitukset

Alun perin SCrypt kehitettiin parantamaan web-palveluiden salasanojen turvallisuutta tarjoamalla mekanismi, joka suojaa tehokkaasti sekä online- että offline-hyökkäyksiltä. Myöhemmin sen käyttö laajeni kryptovaluuttojen maailmaan, erityisesti Litecoinin myötä, joka valitsi SCryptin louhintamekanismikseen juuri sen laskennallisen ja muistin intensiivisen vaativuuden vuoksi.

Scrypt ja Salasanojen Suojaaminen

SCryptin käyttö salasanojen suojaamisessa auttaa vähentämään riskiä, että salasanoja voitaisiin murtaa käyttäen massiivista laskentatehoa. Sen muisti-intensiivinen luonne tekee siitä erityisen vaikean kohteen hyökkäyksille, jotka yrittävät käyttää rinnakkaislaskentaa hyväkseen.

Scrypt ja Kryptovaluuttojen Louhinta

SCryptin käyttöönotto Litecoinissa ja muissa kryptovaluutoissa oli vastaus Bitcoinin louhinnassa havaittuihin ongelmiin, joissa ASIC-laitteet alkoivat dominoida louhintatehoa. SCryptin muisti-intensiivisyys teki ASIC-piirien kehittämisen louhintaan kalliimmaksi ja monimutkaisemmaksi, mikä auttoi pitämään louhinnan saatavilla laajemmalle yleisölle.

Mikä on Argon2?

Vuonna 2015 järjestetyn salasanahajautus-kilpailun voittaja, Argon2, on nykyään eturintamassa salasanojen suojaamisen alalla. Suunniteltu vastaamaan modernin digitaalisen maailman tarpeita, Argon2 tarjoaa parannellun turvallisuuden, tehokkuuden ja joustavuuden. Se on kehitetty voittamaan edeltäjiensä (bcryptin ja SCryptin) rajoitukset, tarjoten samalla vahvan suojan brute-force hyökkäyksiä ja muistin sivukanavahyökkäyksiä vastaan.

Argon2:n Ominaisuudet

Samalla tavalla kuin SCrypt, Argon2 on suunniteltu ottamaan huomioon sekä laskentateho että muistivaatimukset, tehden siitä sekä aika- että muistiintensiivisen. Tämä ominaisuus tekee siitä erittäin resistanttisen hyökkäyksiä vastaan, erityisesti kun hyökkääjällä on pääsy erikoistuneeseen laitteistoon.

Argon2 - Muistin Intensiivisyys ja Säädettävyys

Toisin kuin monet aiemmat hajautusfunktiot, Argon2 mahdollistaa muistin käytön säätämisen, mikä tekee siitä joustavan eri sovellusympäristöissä. Tämä muistin intensiivinen prosessi on suunniteltu estämään hyökkäykset, jotka käyttävät hyväkseen rinnakkaislaskentaa ja erikoistunutta laitteistoa, kuten ASIC-piirejä.

Argon2:n Versiot

Argon2 sisältää kolme varianttia: Argon2d, Argon2i ja Argon2id, joista jokainen on optimoitu erilaisiin tarkoituksiin.

  • Argon2d on suunniteltu tarjoamaan vahvinta mahdollista suojausta sivukanavahyökkäyksiä vastaan. Se on ihanteellinen sovelluksiin, joissa hyökkääjällä ei ole fyysistä pääsyä, kuten etäpalvelimilla sijaitseviin tietokantoihin. Argon2d:n muistin käyttö on data-riippuvaista, mikä tekee siitä vahvan suojan erityisesti offline-hyökkäyksiä, kuten sateenkaaritaulukkoja vastaan.
  • Argon2i on suunniteltu olemaan resistentti sivukanavahyökkäyksiä vastaan ja se soveltuu parhaiten sovelluksiin, joissa hyökkääjällä on mahdollisuus päästä fyysisesti käsiksi laitteistoon. Sen muistin käyttö on itsenäistä, mikä tarkoittaa, että se on suunniteltu minimoimaan hyökkäyspinta-alan sivukanavahyökkäyksille, kuten ajastus- ja virtaan perustuville hyökkäyksille.
  • Argon2id on hybridimalli, joka yhdistää Argon2d:n ja Argon2i:n ominaisuudet tarjoten sekä sivukanavahyökkäyssuojan että vahvan suojan offline-hyökkäyksiä vastaan. Se käyttää ensimmäisessä vaiheessa Argon2i:n data-riippumatonta muistin käyttöä ja siirtyy sitten Argon2d:n data-riippuvaan muistin käyttöön. Tämä tekee Argon2id:stä monipuolisen ratkaisun, joka tarjoaa tasapainoisen suojan useita hyökkäystyyppejä vastaan.

Tehtävä

Käytä CyberChefin PBKDF2 -moduulia ja generoi salasanalle "hakatemia" kryptografinen tiiviste seuraavilla asetuksilla:

  • Passphrase: hakatemia
  • Algoritmi: sha512
  • Suola: tonttu (valitse UTF8 CyberChefissä)
  • Iteraatioita: 1000

Huomaa että CyberChefin PBKDF2-moduulissa passphrase tulee "Passphrase" kentästä, emme siis tällä kertaa käytä "Input" arvoa ollenkaan.

Mikä on tiivisteen arvo?

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ä.