Jokainen kerta kun luot uuden tilin verkkopalveluun, luotat siihen, että salasanaasi säilytetään turvallisesti. Harva kuitenkaan tietää, mitä tapahtuu sen jälkeen, kun painat “rekisteröidy” – ja osaaminen voi säästää sinut vakavalta tietoturvariskiltä. Suolaus on yksi niistä tekniikoista, jotka erottavat huolellisesti suojatut tietokannat helpoista kohteista. Tämä artikkeli selittää, miten satunnainen bittijono muuttaa tavallisen salasanan hash-arvoksi, jota kukaan ei voi purkaa takaisin alkuperäiseen muotoonsa.

Määritelmä: Satunnainen data hajautusfunktiossa · Käyttö: Salasanojen suojaaminen tietokannoissa · Hyöty: Estää sateenkaaris-taulukot · Pituus: Tyypillisesti 16-32 tavua · Ero hajautukseen: Lisää satunnaisuutta ennen hajautusta

Pikakatsaus

1Vahvistetut faktat
  • Suola on satunnainen merkkijono, joka lisätään salasanaan ennen hajautusta (Logto-blogi)
  • bcryptillä suola on rajoitettu 16 tavuun ja hash-arvo 184 bittiin (Logto-blogi)
2Mikä on epäselvää
  • Tulevaisuuden kvanttitietokoneiden vaikutus suolauksen tehokkuuteen ei ole täysin selvää
  • Suolauksen optimaalinen pituus vaihtelee eri käyttötapauksissa
3Aikajanasignaali
  • Suolaustekniikka kehitettiin 1980-luvulla vastauksena sateenkaaritaulukkohyökkäyksiin (EITCA-akatemia)
4Mitä seuraavaksi
  • Argon2 korvaa bcryptiä uusissa järjestelmissä paremman muistinkäytön ansiosta (EITCA-akatemia)
Tieto Arvo
Keksimisajankohta 1980-luvun kryptografia
Tyypillinen suola 16-32 tavua satunnaista dataa
Pääasiallinen käyttö Salasanojen hashing
Turvallisuusvaikutus Estää precomputed-hyökkäykset

Mikä on suolaus tietoturvassa?

Suolaus tarkoittaa satunnaisen merkkijonon lisäämistä salasanaan ennen sen hajauttamista. Tämä ylimääräinen data kerrotaan suolaksi, koska se muuttaa jokaisen salasanan uniikiksi, vaikka alkuperäinen salasana olisi sama kuin toisella käyttäjällä. Tekniikka kehitettiin vastauksena sateenkaaritaulukkohyökkäyksiin, joissa hyökkääjä vertaa ennalta laskettuja hajautusarvoja tietokantaan (EITCA-akatemia).

Hajautus on peruuttamaton prosessi – kun salasana on hajautettu, sitä ei voida purkaa takaisin alkuperäiseen muotoonsa. [Logto-blogi]

Mikä suolaus tarkoittaa kyberturvallisuudessa?

Kryptografiassa suola on satunnainen data, joka syötetään yhtisuuntaiselle funktiolle hajauttaakseen salasanan. Kun käyttäjä luo tilin, järjestelmä generoi uniikin suolan ja yhdistää sen salasanaan. Tämä yhdistelmä syötetään hajautusfunktiolle, joka tuottaa hash-arvon. Hajautus on peruuttamaton prosessi – kun salasana on hajautettu, sitä ei voida purkaa takaisin alkuperäiseen muotoonsa (Logto-blogi).

Mikä on salasanan suola?

Salasanan suola on käyttäjäkohtainen satunnainen merkkijono, joka lisätään ennen tiivisteen muodostamista. Tyypillisesti jokaiselle käyttäjälle annetaan satunnainen suola rekisteröinnin yhteydessä, ja se tallennetaan tietokantaan hash-arvon rinnalle (Logto-blogi). Eri käyttäjät, jotka antavat identtisen salasanan, saavat erilaisen salasanatiivisteen suolan ansiosta (Theseus – Salasanahallintaohjelmat).

Käytännön merkitys

Vaikka miljoonat käyttäjät käyttäisivät samaa salasanaa “123456”, jokainen tietokantaan tallennettu hash-arvo on erilainen. Hyökkääjä ei voi löytää yhtäsuuruuksia ennalta lasketuista taulukoista.

Onko suolaus salausmuoto?

Suolaus ei ole salausmuoto – se on lisäinput hajautusfunktiolle. Salaus on kaksisuuntainen prosessi, jossa data voidaan salata ja purkaa samalla avaimella. Suolaus sen sijaan on yhteen suuntaan tapahtuva prosessi, jossa alkuperäistä salasanaa ei voi palauttaa hash-arvosta. Hajautus on peruuttamaton, kun taas salaus voidaan purkaa takaisin alkuperäiseen muotoonsa (Logto-blogi).

Pelkän yhdensuuntaisen salauksen ongelmana on, että yhden salasanan salakielistä versiota voidaan verrata koko salasanatietokannan kaikkiin salasanoihin. [Gelo Oy]

Ero suolauksen ja salauksen välillä

Ennen kuin hajautus saavutti suosiota, salausta käytettiin tallentamaan salasanoja, kuten AES:llä. Tämä lähestymistapa osoittautui ongelmalliseksi, koska salausavainta tarvittiin salasanojen palauttamiseen. Suolaus ratkaisee tämän ongelman tekemällä jokaisesta salasanasta uniikin ilman, että alkuperäistä salasanaa voi koskaan palauttaa (Logto-blogi).

Suolaus vs hajautus

Hajautus on perusprosessi, joka muuntaa salasanan kiinteän mittaiseksi hash-arvoksi. Suolaus tehostaa hajautusta lisäämällä satunnaista dataa ennen hajautusta. Pelkän yhdensuuntaisen salauksen ongelmana on, että yhden salasanan salakielistä versiota voidaan verrata koko salasanatietokannan kaikkiin salasanoihin (Gelo Oy).

Tekninen yksityiskohta

Suola ei tarvitse olla salainen. Se voidaan tallentaa tietokantaan hajautetun salasanan rinnalle, koska suolan arvo ilman tietokantaa ei yksinään paljasta alkuperäistä salasanaa.

Kuinka suolaan salasanan?

Salasanan suolaus tapahtuu lisäämällä uniikki satunnainen merkkijono ennen hajautusta. Tämä prosessi on standardikäytäntö tietoturvassa ja voidaan toteuttaa useilla ohjelmointikielillä. Tärkeintä on käyttää cryptographically secure random -generaattoria, joka tuottaa todellisen satunnaisen suolan (EITCA-akatemia).

Salasanan suolauksen esimerkki

Käytännössä prosessi toimii näin: käyttäjä syöttää salasanan “tunnus123”. Järjestelmä generoi suolan “a7x9Km2p”, yhdistää ne muotoon “tunnus123a7x9Km2p” ja syöttää yhdistelmän hajautusfunktiolle. Lopputulos on uniikki hash-arvo, joka tallennetaan yhdessä suolan kanssa tietokantaan. Kirjautumisprosessissa suolaa käytetään syötetyn salasanan hash-arvon laskemiseen, joka sitten verrataan tallennettuun hash-arvoon (Logto-blogi).

Suolan generointi

Suolan generointiin suositellaan vähintään 16 tavun pituista satunnaista merkkijonoa. Bcryptillä suola on rajoitettu 16 tavuun, kun taas Argon2 mahdollistaa jopa 2^32-1 tavun pituiset suolat (Logto-blogi). Modernit kirjastot, kuten Pythonin secrets tai Node.js:n crypto-moduuli, tarjoavat turvallisia satunnaislukugeneraattoreita.

Käytännön neuvo

Tyypillisesti suola tallennetaan osaksi salakielistä salasanaa. Esimerkiksi bcrypt-tuloste sisältää suolan automaattisesti, joten erillistä suolakenttää ei aina tarvita.

Onko suolaus turvallisempaa kuin hajautus?

Suolaus ei korvaa hajautusta – se täydentää sitä. Pelkkä hajautus ilman suolausta jättää järjestelmän alttiiksi sateenkaaritaulukkohyökkäyksille, joissa hyökkääjä vertaa ennalta laskettuja hash-arvoja tietokantaan. Suolaus tekee jokaisesta salasanasta uniikin ja estää brute-force-hyökkäykset identtisten salasanojen kohdalla (EITCA-akatemia).

Hajautus suolalla vs pelkkä hajautus

Pelkällä hajautuksella kaksi käyttäjää, joilla on sama salasana “tunnus123”, tuottavat saman hash-arvon. Tämä mahdollistaa tehokkaat joukkohyökkäykset, joissa hyökkääjä löytää kerralla kaikki “tunnus123”-salasanan käyttäjät. Suolauksella jokainen käyttäjä saa uniikin hash-arvon, vaikka salasanat olisivat identtiset (Gelo Oy).

Suolaus vs pippuri

Pippuri (pepper) on toinen satunnainen arvo, joka eroaa suolasta siinä, että sitä EI tallenneta tietokantaan vaan säilytetään erillisessä paikassa, kuten sovelluksen konfiguraatiossa. Tämä tuo ylimääräisen suojakerroksen: vaikka tietokanta vuotaisi, hyökkääjä tarvitsee myös pippurin arvon salasanojen murtamiseen. Pippuria käytetään harvemmin kuin suolausta, koska se lisää monimutkaisuutta salasanojen vahvistusprosessiin.

Vahvemmat hajautustoiminnot parantavat salasanasuojausta tekemällä hyökkääjille laskennallisesti kallista ja aikaa vievää alkuperäisten salasanojen uudelleenmuokkailua hajautetuista arvoista (EITCA-akatemia).

Miksi suolaus on tärkeää salasanoissa?

Suolaus on kriittinen osa salasanojen suojausta, koska se estää tehokkaasti sateenkaaritaulukkohyökkäykset. Tekniikka on erityisen tärkeä, koska käyttäjät usein valitsevat samoja salasanoja eri palveluihin. Salaamalla jokainen salasana yksilöllisesti suolan avulla, kahden samankin salasanan salakieliset versiot ovat eri (Gelo Oy). Tietokantavuodon sattuessa hyökkääjä ei voi hyödyntää valmiita hakutaulukoita, vaan joutuu murtamaan jokaisen salasanan erikseen. Jos haluat syventyä tarkemmin salasanojen suojaamiseen, löydät lisää tietoa Kanaa ja riisiä reseptit.

Suolaustekniikka kehitettiin vastauksena sateenkaaritaulukkohyökkäyksiin, joissa hyökkääjä luo taulukon ennalta lasketuista hajautusarvoista yleisesti käytetyille salasanoille. [EITCA-akatemia]

Suolaus hakkeroiduissa tietokannoissa

Salasanoja ei kannata tallentaa suoraan mihinkään, sillä tietovuodon tapahtuessa kaikki käyttäjätilit voitaisiin suoraan kaapata (Trepo – Tampereen yliopisto). Salasanoja ei murreta tekemällä kirjautumisyrityksiä palveluun vaan lähes aina krakkerilla on lista käyttäjätunnuksista ja salasanatiivisteistä. Tämä tekee suolauksesta välttämättömän suojan.

Yleiset salasanaongelmat

Suolaus tekee jokaisesta salasanasta uniikin edes silloin, kun miljoonat käyttäjät jakavat saman salasanan. Tämä on erityisen tärkeää, koska yleisimmät salasanat kuten “123456” ja “salasana” ovat edelleen hälyttävän yleisiä. Esimerkkejä vahvemmista hajautusfunktioista, joita käytetään yleisesti verkkosovelluksissa, ovat bcrypt, scrypt ja Argon2 (EITCA-akatemia).

Yhteenveto: Suolaus on standardi salasanasuojauksessa, joka lisää satunnaisuutta hajautukseen. Se ei korvaa hajautusta vaan täydentää sitä. Suola ei tarvitse olla salainen – tärkeintä on käyttää uniikkia satunnaista suolaa jokaiselle käyttäjälle.

Salasanasuojauksen vertailu

Kolme eri tekniikkaa palvelevat eri tarkoituksia salasanojen käsittelyssä: suolaus, hajautus ja salaus. Jokaisella on omat vahvuutensa ja heikkoutensa tietoturvan näkökulmasta.

Ominaisuus Suolaus Hajautus Salaus
Prosessin tyyppi Lisäinput ennen hajautusta Yhteen suuntaan Kaksisuuntainen
Alkuperäinen arvo palautettavissa Ei koskaan Ei koskaan Kyllä, avaimella
Pääasiallinen tarkoitus Estää sateenkaaritaulukot Turvallinen tallennus Datansuojaus siirrossa
Suojaa identtisiä salasanoja Kyllä Ei Kyllä
Tarvitsee avaimen Ei Ei Kyllä
Käyttö salasanoissa Aina suositeltu Aina pakollinen Ei suositella

Salausta ei suositella salasanojen tallennukseen, koska se vaatii avaimen säilyttämistä turvallisesti. Jos hyökkääjä saa selville avaimen, kaikki salasanat paljastuvat. Hajautus sen sijaan on suunniteltu nimenomaan salaisten arvojen tallennukseen, ja suolaus lisää siihen ylimääräisen suojakerroksen.

Salasanan suolauksen vaiheet

Salasanan suolaus voidaan toteuttaa seuraavien vaiheiden mukaan. Prosessi on sama perusperiaatteiltaan riippumatta käytetystä ohjelmointikielestä tai hajautusfunktiosta.

  1. Suolan generointi: Generoi cryptographically secure random -generaattorilla vähintään 16 tavun pituinen satunnainen merkkijono jokaiselle käyttäjälle erikseen.
  2. Yhdistäminen: Liitä suola alkuperäiseen salasanaan joko sen eteen tai perään. Esimerkiksi: salasana + suola tai suola + salasana.
  3. Hajautus: Syötä yhdistelmä valittuun hajautusfunktioon, kuten bcrypt, Argon2 tai SHA-256. Bcryptillä suola on rajoitettu 16 tavuun ja Argon2 mahdollistaa jopa 2^32-1 tavun pituiset suolat.
  4. Tallennus: Tallenna sekä suola että hash-arvo tietokantaan. Tyypillisesti suola tallennetaan osaksi hash-arvoa tai erilliseen sarakkeeseen.
  5. Vahvistus: Kirjautumisprosessissa haetaan suola tietokannasta, yhdistetään se syötettyyn salasanaan, lasketaan hash-arvo ja verrataan sitä tallennettuun arvoon.
Tärkeä muistettava

Älä koskaan generoi suolaa uudelleen tai käytä samaa suolaa kaikille käyttäjille. Jokaisen käyttäjän täytyy saada uniikki suola rekisteröinnin yhteydessä.

Nämä viisi vaihetta muodostavat standardin suolauksen toteutuksen, joka tarjoaa tehokkaan suojan sateenkaaritaulukkohyökkäyksiä vastaan ilman merkittävää lisäkustannusta laskentaresursseihin.

Upsides

  • Estää sateenkaaritaulukkohyökkäykset tehokkaasti
  • Suojaa identtisiä salasanoja jakavia käyttäjiä
  • Jokainen hash-arvo on uniikki
  • Standardikäytäntö nykyaikaisessa tietoturvassa
  • Ei vaadi suolan pitämistä salassa

Downsides

  • Ei suojaa heikkoja salasanoja brute-force-hyökkäyksiltä
  • Lisää tallennustilaa tietokannassa
  • Ei korvaa vahvaa hajautusfunktiota
  • Voi hidastaa kirjautumisprosessia merkittävästi
  • Vaatii huolellisen toteutuksen

Usein kysytyt kysymykset

Miksi suolaus estää rainbow table -hyökkäyksiä?

Sateenkaaritaulukkohyökkäyksessä hyökkääjä luo taulukon ennalta lasketuista hajautusarvoista yleisesti käytetyille salasanoille. Suolaus tekee jokaisesta salasanasta uniikin, joten ennalta lasketut taulukot eivät enää päde. Hyökkääjän täytyisi laskea jokainen hash-arvo erikseen jokaiselle käyttäjälle, mikä tekee hyökkäyksestä laskennallisesti mahdottoman.

Tarvitseeko suola olla salainen?

Ei, suola ei tarvitse olla salainen. Se voidaan tallentaa tietokantaan hajautetun salasanan rinnalle. Suolan tehtävä on tehdä jokaisesta salasanasta uniikki, ei piilottaa mitään. Tärkeämpää on, että suola on uniikki jokaiselle käyttäjälle.

Mikä on pepper tietoturvassa?

Pippuri (pepper) on satunnainen arvo, jota EI tallenneta tietokantaan vaan säilytetään erillisessä paikassa, kuten sovelluksen konfiguraatiossa. Toisin kuin suola, pippuria tarvitaan salasanojen vahvistamisessa. Jos tietokanta vuotaa, hyökkääjä ei voi murtaa salasanoja ilman pippuria.

Voiko samaa suolaa käyttää kaikille salasanoille?

Ei, samaa suolaa ei saa käyttää kaikille salasanoille. Tämä mitätöi suolauksen hyödyn: jos kahdella käyttäjällä on sama salasana, heidän hash-arvonsa ovat identtiset. Jokaiselle käyttäjälle täytyy generoida uniikki suola.

Miten tarkistan suolatut salasanat?

Kirjautumisprosessissa haet ensin suolan tietokannasta käyttäjänimen perusteella. Yhdistä syötetty salasana suolaan, laske hash-arvo ja vertaa sitä tietokantaan tallennettuun hash-arvoon. Jos arvot vastaavat, salasana on oikea.

Onko suolaus tarpeen moderneissa kirjastoissa?

Modernit hajautuskirjastot, kuten bcrypt ja Argon2, sisältävät suolauksen automaattisesti. Nämä kirjastot generoivat ja tallentavat suolan osana hash-arvoa, joten erillistä suolausta ei tarvitse toteuttaa manuaalisesti. Argon2 on suositeltavin uusiin projekteihin paremman muistinkäytön ansiosta.

Mitä tapahtuu jos suola vuotaa?

Jos suola vuotaa, se ei yksinään vaaranna salasanoja. Hyökkääjä tarvitsee silti hajautusfunktion ja tietokannan hash-arvot salasanojen murtamiseen. Suola estää ainoastaan sateenkaaritaulukkohyökkäykset, ei suoraa murtamista brute-forceilla tai sanakirjahyökkäyksillä.

Mikä on bcrypt vs Argon2 -ero?

Bcrypt rajoittaa suolan 16 tavuun ja hash-arvon 184 bittiin, kun taas Argon2 mahdollistaa jopa 2^32-1 tavun pituiset arvot. Argon2 on suunniteltu vastustamaan GPU- ja ASIC-hyökkäyksiä paremmin, ja se voitti Password Hashing Competition -kilpailun vuonna 2015.

Yhteenveto

Suolaus on välttämätön osa modernia salasanojen suojausta. Tekniikka estää tehokkaasti sateenkaaritaulukkohyökkäykset ja suojaa käyttäjiä, jotka jakavat saman salasanan useissa palveluissa. Suolaus ei korvaa hajautusta, vaan täydentää sitä – ilman vahvaa hajautusfunktiota suolauksen hyödyt jäävät vähäisiksi. Argon2 ja bcrypt ovat suositeltavia hajautusfunktioita, jotka sisältävät automaattisen suolauksen. Tietovuotojen aikakaudella suolaus ei ole enää valinnainen lisäominaisuus vaan vähimmäisvaatimus mille tahansa järjestelmälle, joka käsittelee käyttäjien salasanoja. Kehittäjien kannattaa käyttää moderneja kirjastoja, jotka hoitavat suolauksen automaattisesti, ja välttää vanhentuneita käytäntöjä kuten MD5 tai SHA-1 ilman suolausta.