10. kesäkuuta 2011

Salasanoista osa II

Edellisessä kirjoituksessa esitin, että datan kryptaamiseen käytettävän salasanan tulisi olla vähintään 19 merkkiä pitkä ja käyttää isoja ja pieniä kirjaimia, numeroita sekä erikoismerkkejä. Luulisin, että suurin osa käyttäjistä pitää moista ratkaisua käytännössä mahdottomana. Tietoturvaguru Steve Gibson on keksinyt tavan, jolla voi tehdä erittäin vaikeasti arvattavia salasanoja.


Tämä juttu tulee hyvin pitkälti olemaan referaatti podcastista, jossa Steve Gibson esitti niksinsä. Suosittelen kuuntelemaan sen, koska siinä asia on selitetty erittäin selkeästi.

Miten salasanoja murretaan?
Salasanojen koneelliseen murtamiseen on kaksi tapaa. Ensimmäinen ja nopein on sanakirjahyökkäys. Siinä käytetään nimen mukaisesti sanakirjaa ja kokeillaan kaikkia sieltä löytyviä sanoja. Mikäli sanakirjahyökkäys ei toimi hyökkääjä joutuu käymään läpi kaikki mahdolliset merkkiyhdistelmät. Sanakirjahyökkäyksessä arvattavia sanoja on vain kymmeniä tai satoja tuhansia, mikäli käyttäjän äidinkieli tunnetaan. Kun arvauksia voidaan tehdä jopa satoja miljardeja sekunnissa on helppo ymmärtää miten oikean sanan käyttäminen on katastrofaalista murtovarmuuden kannalta.

Sanakirjahyökkäystä voidaan kehittää helposti kokeilemalla muutamia variaatioita jokaisesta sanasta. Esimerkiksi l33t 5p34k ei pelasta, kun implementoidaan muutamien merkkien korvaaminen saman näköisillä numeroilla. Lisäksi on helppo kokeilla numeroiden lisäämistä sanan alkuun ja loppuun. "kissa12" ei oikeasti ole salasanojen eliittiä, vaikkakin legendaarinen.

Kun edellä mainitut keinot on käytetty, niin hyökkääjälle jää enää yksi keino. Se on järjestelmällisesti käydä kaikki merkkiyhdistelmät läpi. Tämä tapa tunnetaan nk. brute force eli raaka voima -menetelmänä. Raakaa voimaa vastaan suojautuminen tapahtuu edellisessä jutussa käsitellyin keinoin: kasvattamalla salasanan merkkiavaruutta ja pituutta.

Miten tehdään helposti muistettava turvallinen salasana?
Kun ymmärrämme murtajien keinot voimme keksiä vastalääkkeen. Tarvitsemme siis salasanan joka on pitkä ja joka käyttää kaikkia merkkiluokkia, eli 95 merkin avaruutta. Vastaus on salasanojen toppaaminen. Ota siis joku lyhyehkö salasana, joka käyttää isoja ja pieniä kirjaimia sekä numeroita. Sen jälkeen toppaa salasanaa erikoismerkkikuvioilla kunnes se on tarpeeksi pitkä. Esimerkiksi:
.....#*#*Kissa12*#*#.....
Esimerkki on 25 merkkiä pitkä ja sen murtamiseen menisi reilusti yli 100 vuotta, vaikka otetaan huomioon laskentatehon jatkuva kasvaminen. Kuitenkin on helppo nähdä sen säännönmukaisuus, mikä tekee siitä helpon muistaa. Tuota säännönmukaisuutta on koneen mahdoton arvata tai ennustaa, joten se on salasanana yhtä vaikea arvata kuin täysin satunnainen 25-merkkinen salasana 95 merkin avaruudesta, vaikka sen todellinen entropia on huomattavasti pienempi.

Jokaisen pitää keksiä oma tapansa topata salasanansa ja pitää se visusti salassa. Onneksi se on helppoa. Tällaisen salasanan huono puoli on sama mikä on sen etu: helppo muistettavuus. Jos joku sattuisi näkemään sen kirjoitettuna lapulle, niin se on helppo painaa muisiin sekunneissa, toisin kuin täysin satunnainen merkkijono.

Seuraavalla kerralla kerron, miten minä hallitsen salasanojani.

1 kommentti: