Salasanojen tiivistäminen on keskeinen osa salasanojen suojaamista; se on muuttanut salasanojen tallennuksen maailmaa siirtämällä tiedot selväkielisistä salasanoista salattuihin tiivisteisiin. Tässä artikkelissa käsitellään salasanojen tiivistämisen kehitystä aina varhaisista algoritmeista, kuten MD5 ja SHA-1, nykyaikaisempiin ja turvallisempiin menetelmiin. Lopuksi korostetaan satunnaisten salasanojen tärkeyttä jokaiselle verkkosivustolle.
Ennen kuin sukellamme syvemmälle salasanojen tiivistämisen historiaan ja kehitykseen, on tärkeää ymmärtää, mitä tiivistäminen on. Tiivistefunktiot, eli menetelmät jotka suorittavat tiivistämisen, on suunniteltu ottamaan mikä tahansa tietojono eli "syöte" ja tuottamaan kiinteän kokoisen bittijonon, jota kutsutaan "tiivisteeksi". Tällä prosessilla on useita tärkeitä ominaisuuksia, jotka tekevät siitä erityisen hyödyllisen tietoturvassa.
Eräs kriittinen ominaisuus tiivistefunktioissa on niiden herkkyys syötteen muutoksille. Tätä kutsutaan nimellä "avalanche effect" eli vyöryvaikutus. Jopa pieni muutos syötteessä – kuten yhden merkin vaihtaminen salasanassa – tuottaa täysin erilaisen tiivisteen. Esimerkiksi merkkijonojen "password1" ja "password2" tiivisteet näyttävät täysin erilaisilta, vaikka syöte eroaa vain viimeisen merkin osalta. Tämä ominaisuus on elintärkeä tiedon eheyden ylläpidossa, sillä se tekee alkuperäisen syötteen päättelemisestä pelkän tiivisteen perusteella käytännössä mahdotonta.
Lisäksi tiivistefunktiot ovat yksisuuntaisia funktioita. Tämä tarkoittaa, että ne on suunniteltu niin, ettei tiivisteen palauttaminen alkuperäiseen syötteeseen ole käytännössä mahdollista ilman valtavaa laskentatehoa. Tiiviste (hash) ei säilytä yksityiskohtaista tietoa syötteestä, jonka avulla alkuperäinen tieto voitaisiin palauttaa. Ainoa mahdollinen tapa "purkaa" tiiviste on niin sanottu brutaalivoimatekniikka (brute-forcing), jossa kaikki mahdolliset yhdistelmät tiivistetään uudelleen, kunnes löytyvä tiiviste vastaa etsittyä.
Digitaalisen tietoturvan alkuvuosina MD5 (Message-Digest Algorithm 5) ja SHA-1 (Secure Hash Algorithm 1) olivat laajasti käytettyjä salasanojen tiivistykseen. Nämä algoritmit kehitettiin 1990-luvun alussa ja ne muuttivat selväkieliset salasanat kiinteän kokoisiksi tiivistearvoiksi. Alkuperäisestä turvallisuudesta huolimatta, haavoittuvuudet – kuten alttius törmäyshyökkäyksille – tekivät niistä nopeasti vanhentuneita turvallisessa käytössä.
Vaikka tiivistefunktiot on suunniteltu nopeiksi ja tehokkaiksi, tämä ominaisuus voi olla haitta salasanojen suojaamisessa, koska se helpottaa brutaalivoimahyökkäyksiä. Salasanoihin perustuvat avainjohdantafunktiot, kuten PBKDF2, bcrypt ja scrypt, on suunniteltu torjumaan näitä hyökkäyksiä lisäämällä suola (salt) satunnaisen arvon muodossa (suojana "rainbow table" -hyökkäyksiä vastaan) ja käyttämällä "key stretching" -tekniikkaa. Key stretching hidastaa tahallaan tiivistysprosessia, mikä tekee luvattomista käyttöyrityksistä huomattavasti vaikeampia.
Kyberturvallisuuden kehittyessä varhaisten tiivistealgoritmien, kuten MD5:n ja SHA-1:n, puutteet kävivät ilmeisiksi. Tämä johti erityisesti salasanojen suojaamiseen tarkoitettujen algoritmien, kuten bcrypt, scrypt ja Argon2 eli niin kutsuttujen salasanoihin perustuvien avainjohdantafunktioiden (PBKDFs), kehittämiseen.
OWASP:n mukaan suositellut algoritmit salasanojen tiivistämiseen ovat bcrypt, scrypt ja Argon2. Näitä suositaan niiden tehokkaan brutaalivoimahyökkäyksiltä suojaavan rakenteen ja sisäänrakennettujen suola- sekä avainvenytystoimintojen ansiosta.
bcrypt on Blowfish-salauksesta johdettu salasanojen tiivistysfunktio. Se lisää suolan suojatakseen rainbow table -hyökkäyksiä vastaan ja käyttää kustannusparametria, jolla lisätään laskennan vaativuutta (ja siten itse tiivistysprosessin vaikeutta). Tämä kustannuskerroin on säädettävissä, minkä ansiosta algoritmia voidaan mukauttaa laitteistojen kehittymiseen.
Keskeiset parametrit:
OWASP suosittelee käyttämään työkerrointa (work factor) 10 tai enemmän sekä 72 tavun salasanarajaa.
scrypt on suunniteltu sekä muisti- että prosessoriaikaa kuluttavaksi torjuakseen laajamittaiset räätälöidyt laitehyökkäykset. Sitä voidaan säätää vaatimaan tietty määrä muistia, ja se sisältää myös suolan sekä toistomäärän (iteration count), kuten PBKDF2.
Keskeiset parametrit:
OWASP suosittelee käyttämään vähintään CPU/muistiparametria (2^17), vähintään lohkon kokoa 8 (1024 tavua) ja rinnakkaistamisparametria 1.
Argon2, Salasanatiivistyskilpailun (Password Hashing Competition) voittaja vuodelta 2015, on saatavilla kahdessa päämuodossa: Argon2d ja Argon2i. Argon2d on optimoitu ympäristöihin, joissa sivukanava-hyökkäysten (side-channel attacks) riski on pieni, kun taas Argon2i on kehitetty vastustamaan näitä hyökkäyksiä. Se sisältää myös keskeisiä ominaisuuksia sekä bcryptistä että scryptistä.
Keskeiset parametrit:
OWASP suosittelee käyttämään Argon2id:tä vähintään seuraavilla asetuksilla: 19 MiB muistia, 2 iteraatiokertaa ja 1 rinnakkaisuuden aste.
Koska turvallisuusuhat ja vastatoimet kehittyvät jatkuvasti, on erittäin tärkeää pysyä ajan tasalla salasanojen turvallisuuden uusimmista käytännöistä. Tuoreimmat ja kattavimmat suositukset löydät OWASP Password Storage Cheat Sheet -sivulta. Tarkista ohjeistukset säännöllisesti varmistaaksesi, että toimintasi noudattaa parhaita kyberturvallisuuskäytäntöjä.
Vaikka nykyaikaisten tiivistealgoritmien käyttö on välttämätöntä, myös tapasi luoda ja hallita salasanoja on kriittisessä roolissa turvallisuuden kannalta. Satunnaiset salasanat jokaiselle sivustolle ovat tärkeitä monesta syystä:
MD5:stä ja SHA-1:stä aina nykyaikaisiin algoritmeihin, kuten bcrypt ja Argon2, salasanojen tiivistäminen on kokenut merkittäviä muutoksia. Koska kyberuhat kehittyvät jatkuvasti, nykyaikaisten tiivistealgoritmien käyttöönotto ja satunnaisten, uniikkien salasanojen käyttö jokaisella sivustolla ovat avainasemassa oman verkkoturvallisuutesi suojaamisessa. Nämä strategiat eivät ainoastaan estä yksittäisten tilien vaarantumista, vaan myös vahvistavat koko turvallisuusympäristöä yhä kehittyneempiä hyökkäyksiä vastaan.