✖

Salasanan turvallisuus

Hyökkääjällä, joka yrittää päästä salasanalla suojattuun sovellukseen (salasanalla suojattu RAR-tiedosto, sähköposti…), on useita keinoja päästä tulokseen ilman salasanan tuntemista. Jotkin niistä vaativat tietyn annoksen älykkyyttä, oveluutta ja tietoa, toiset taas vaativat hieman onnea ja fyysistä kuntoa. Kerrataan siis ensin, millaisia mahdollisuuksia hyökkääjällä on.

Miten murtaa jonkun salasana

  • Löytää se, joka salasanan tuntee (esimerkiksi sähköpostin omistaja), ja saada salasana häneltä – puhua hänet ympäri, lahjoa, painostaa. Tätä tapaa en kuvaile artikkelissa tämän enempää :-).
  • Yrittää urkkia salasana omistajalta huomaamattomasti, esimerkiksi väärennetyllä sähköpostilla, mitä kutsutaan asiantuntevammin tietojenkalasteluksi (englanniksi phishing). Menetelmä perustuu siihen, että lähetät tilin omistajalle sähköpostin, jossa pyydät häntä lähettämään sinulle takaisin käyttäjätunnuksen ja salasanan. Vain sinusta riippuu, kuinka uskottavalta viesti näyttää, pelkkä pyyntö ei todennäköisesti riittäisi, siihen on lisättävä jokin tarina. Usein näkee viestejä, joissa väitetään tietokannan rikkoutuneen ja kehotetaan kaikkia käyttäjiä antamaan tunnuksensa ja salasanansa uudelleen, muuten postilaatikko suljetaan tms. Jos viesti näyttää todella vakavasti otettavalta, onnistumisprosentti ei yleensä ole pieni.
  • Sanakirjahyökkäys – lataamme netistä paketteja yleisimmistä salasanoista ja kokeilemme niitä kaikkia. Jos meillä on onnea ja omistajalla on jokin yleisempi salasana, saamme sen todella helposti selville. Tästä seuraa se keskeinen opetus – älä valitse salasanoja, joilla on merkitys. Valitse vaikka salasanaksi jääkiekko ja takaan sinulle, että ensimmäinen amatöörihakkeri murtaa sen muutamassa sekunnissa. Tämä on luultavasti tehokkain menetelmä, jos sinulla on todella suuri salasanojen sanakirja, pystyt arvaamaan suuren osan käyttäjien salasanoista ilman suurta vaivaa.
  • Raaka voima (brute force) on tyhmin menetelmä. Se perustuu kaikkien mahdollisten salasanayhdistelmien kokeilemiseen, joita maailmassa ylipäätään on olemassa. Ohjelma kokoaa kirjaimia vähitellen tietyn algoritmin mukaan ja kokeilee, osuiko se haluttuun salasanaan. Kun se löytää sen, se tallentaa salasanan ja päättää. Tätä menetelmää käsittelemme seuraavaksi tarkemmin.

Raaka voima

Tätä menetelmää käyttävä ohjelma vain muodostaa erilaisia sanojen järjestettyjä otoksia ja kokeilee, osuiko se sattumalta salasanaan. Lasketaan, kuinka kauan tällainen kokeilu voi kestää.

Oletetaan, että meillä on viiden merkin salasana, joka koostuu vain englannin aakkosten pienistä kirjaimista (ilman ääkkösiä ä, ö ja å). Englannin aakkosissa on kaksikymmentäkuusi kirjainta. Nyt on helppo laskea, kuinka monta erilaista salasanaa voimme muodostaa viidestä tällaisesta kirjaimesta. Käytämme järjestettyjä otoksia, koska järjestyksellä on väliä (salasana kissa ei ole sama kuin sakis, vaikka koostuu samoista kirjaimista), ja lisäksi meidän on käytettävä järjestettyjä otoksia palauttaen, koska kirjaimet voivat toistua salasanoissa. Ja sitten itse laskuun. Kaava järjestetyille otoksille palauttaen on nk. Sijoitamme n:n paikalle kirjainten määrän, joista valitsemme – englannin aakkosten kirjainten määrän – ja k:n paikalle kirjainten määrän, joista salasana koostuu, meidän tapauksessamme viisi. Saamme 265, mikä on noin kaksitoista miljoonaa erilaista vaihtoehtoa. Onko se paljon vai vähän?

Se riippuu myös siitä, millainen kone on käytettävissä. Jokin vanhempi romu ehtii sekunnissa tehdä vain vähän vertailuja, supermodernit tietokoneet kymmenentuhatta kertaa enemmän. Minä työskentelen näissä esimerkeissä sillä oletuksella, että tietokone ehtii kymmenen miljoonaa vertailua ja arviointia sekunnissa. Jo kaikille varmaan alkaa valjeta, että viiden merkin salasanan tällainen tietokone paljastaisi alle kahdessa sekunnissa, mikä ei todellakaan ole myönteinen tulos. Mutta älä luovuta.

Vahvistamme salasanaa

Viiden merkin salasana ei todellakaan ole turvallinen ollenkaan, jotkin järkevämmät järjestelmät eivät edes salli valita näin lyhyttä salasanaa. Sanotaan, ettei salasanan pitäisi olla lyhyempi kuin kahdeksan merkkiä. Lasketaan nyt, kuinka monta vaihtoehtoa on kahdeksan merkin salasanalle. Kuten edellisessä tapauksessa, huomioimme vain englannin aakkosten pienet kirjaimet. Sijoitamme kaavaan ja saamme 268, mikä on noin kaksisataa miljardia vaihtoehtoa. Se on jo mukavampi luku. Tietokone arvioisi kaikki vaihtoehdot alle kuudessa tunnissa. Se on parempi kuin viime kerralla, mutta katsotaan, miten salasanan vahvuus kasvaisi, jos käyttäisit myös isoja kirjaimia, numeroita ja erikoismerkkejä, kuten alaviivoja, ajatusviivoja jne.

Pieniä kirjaimia on 26, isoja kirjaimia on myös 26, mikä tekee yhteensä 52 merkkiä. Siihen on vielä lisättävä 10 numeroa ja joitakin erikoismerkkejä. Kaikkia erikoismerkkejä ei sallita kaikkialla, joten yksinkertaisuuden vuoksi laskan vain kahdeksalla erikoismerkillä, jotta merkkien määrä pyöristyy mukavaan lukuun 70. Salasanan pituus on taas kahdeksan. Sijoittamisen jälkeen saamme luvun: 708, mikä on paremman käsityksen saamiseksi noin 5,8 · 1014, sanoin melkein kuusisataa biljoonaa vaihtoehtoa. Se on jo melko kunnioitettava luku. Tietokoneemme tarkistaisi kaikki vaihtoehdot kuudessatoista tuhannessa tunnissa! Se on vajaat kaksi vuotta. Hyökkääjällä pitäisi olla todella suuri onni, jotta hän löytäisi salasanan järkevässä ajassa. Lisäksi hänen pitäisi tietää salasanasi pituus, muuten, jos hän ei pituutta tietäisi, hänen pitäisi tarkistaa vielä vähemmän merkkejä sisältävät vaihtoehdot.

Jotkut pelkäävät tietojensa puolesta niin paljon, että käyttävät numerosalasanoja. Nämä salasanat kestävät erittäin hyvin sanakirjahyökkäystä, koska tuskin missään yleisten salasanojen sanakirjassa on juuri luku 41 274 390 553. Valitettavasti tällaiset salasanat kestävät kyllä sanakirjahyökkäystä, mutta raakaa voimaa ne kestävät huonommin. Numeroita on nimittäin vain kymmenen, mikä tarkoittaa, että vaihtoehtojen määrä on aina 10k. Salasanan vahvuus riippuu vain sen pituudesta. Edellisellä kahdeksan merkin salasanallamme, jossa oli kaikenlaisia merkkejä, oli noin 5,8 · 1014 vaihtoehtoa. Jotta numerosalasanalla saavuttaisi edes saman, sen pitäisi olla viisitoistanumeroinen, melkein kaksi kertaa niin monta merkkiä. On selvästi nähtävissä, että tehokkaampaa on valita lyhyempi salasana, jossa on useampia merkkilajeja.

Älä aliarvioi hyökkääjää

Hyökkääjä voi olla fiksu. Edellisten rivien luettuasi olet vaikkapa päättänyt, että muutat nykyisen salasanasi ”limonadi” ainakin muotoon ”Limonadi”, jolloin mahdollisten vaihtoehtojen määrä moninkertaistuu, koska hyökkääjän on sisällytettävä algoritmiin myös isot kirjaimet. Mutta hyökkääjä voi olettaa, että iso kirjain on vain ensimmäisellä paikalla, koska se on helpompi muistaa eikä ole tapana, että sanan keskellä on iso kirjain. Hän kirjoittaa siis algoritmin, joka tarkistaa kaikki pienillä kirjaimilla kirjoitetut sanat ja mahdollisesti yhden ison kirjaimen heti alussa.

Alkuperäisen salasanasi monimutkaisuus (tarkoitan nyt sitä, kuinka monta vaihtoehtoa yhteensä voisi olla, jos pitäisimme salasanan muodon samana – kahdeksan pientä kirjainta) oli 268. Jos hyökkääjä ei ajattelisi, uuden salasanan monimutkaisuus olisi 528, mutta jos hän käyttäisi edellä hahmoteltua algoritmia, salasanan monimutkaisuus olisi 52 · 267. Salasanan ensimmäisellä paikalla voivat vaihdella pienet ja isot kirjaimet, joita on yhteensä 52, ja seuraavilla seitsemällä paikalla vaihtelevat enää vain pienet kirjaimet, mikä on jo tavallinen järjestetty otos palauttaen.

Lisäksi hyökkääjä voi esimerkiksi tietää, että salasanasi koostuu neljästä kirjaimesta ja neljästä numerosta, sekoittamatta, aina numerot peräkkäin ja kirjaimet peräkkäin. Tällaisen salasanan monimutkaisuuden laskisimme näin: ensimmäisessä neljän kirjaimen ryhmässä on yhteensä 264 vaihtoehtoa, toisessa neljän numeron ryhmässä 104 vaihtoehtoa. Nämä kaksi tulosta kerromme sitten keskenään: 264 · 104. Jos hyökkääjä ei tietäisi, ovatko ensin numerot vai kirjaimet, meidän pitäisi vielä kertoa edellinen tulos kahdella.