maanantai 28. elokuuta 2017

Millainen on vahva salasana?

Erilaisia salasanamittareita murtoaika-arvioineen.

(Erilaisia mittareita verkosta hakemalla opimme, että 5alasana! on hyvä salasana, joka murtuu tunneissa, eikun minuuteissa, eikun kahdessa sekunnissa...)

Salasanat ovat vaikeita. Niitä pitää olla paljon, niiden pitää olla vahvoja, jostain syystä niitä pitää vaihtaakin (miksi?) ja joka sivustolla on vähän omat sääntönsä. Aika moni sivu myös tarjoaa mittaria, joka arvioi salasanan vahvuuden. Ikävä kyllä ne ovat ihan päin peetä. Miten tällainen mittari toimii... tai pikemminkin, miksi ne eivät toimi?

Mittarit yrittävät arvioida salasanan entropiaa. Entropia kuvaa salasanan sisällön määrää eli satunnaisuutta. Jos entropiaa on vaikkapa 20 bittiä, erilaisia vaihtoehtoja on $2^{20}$ eli reipas miljoona. Jokainen bitti kaksinkertaistaa kokeiltavien vaihtoehtojen määrän, joten tässä tapauksessa isompi on parempi.

Entropia kuvaa vain välillisesti sitä, kuinka kauan pahiksilla menisi murtaa salasana. Onnella on oma osansa: voihan pahis vain sattua kokeilemaan salasanaasi ensimmäisten joukossa, eli kaikki arviot ovat keskiarvoja. Isoin vaikutus on tavalla, jolla sivusto tallentaa salasanan: vanhanaikaisia menetelmiä voi kokeilla monta miljardia sekunnissa ja salauksen puuttuminen kokonaan tiputtaa ajan nollaan. Salasananmurtoon on kovia työkaluja niin ohjelmien kuin laitteiston puolella, eivätkä erilaisten mittarien aika-arviot luultavasti ota huomioon tätä kaveria:

Miten siis arvioitaisiin entropian määrä? Naiivi menetelmä vain korottaa kirjainvaihtoehtojen määrän salasanan pituuden potenssiin. Neljällä numerolla voi kirjoittaa vain $10^4$ erilaista lukua, neljällä suomen aakkosella $29^4$ merkkijonoa.

Tästä havaitaan kaksi asiaa: ensinnäkin isoja kirjaimia, numeroita ja erikoismerkkejä suositellaan syystä. Kymmenmerkkisiä salasanoja, joissa on vain pieniä kirjaimia, on $29^{10}$ kappaletta eli 49 bittiä. Jos isot kirjaimet ja numerot otetaan mukaan, vaihtoehtoja on $68^{10}$ eli 61 bitin edestä — yli viisituhatkertaisesti.

Paljon isompi hyöty kuitenkin tulee salasanan pituudesta. Pienillä kirjaimilla kahdeksan merkkiä johtaa 39 bittiin ja kuusitoista jo 78 bittiin entropiaa. Edellisen isojen kirjainten esimerkin vahvuuteen päästään siten jo kolmellatoista pienellä kirjaimella.

Merkkivalikoiman voi siis korvata pituudella. Jotkut palvelut vaativat silti kivenkovaan yhtä numeroa, vaikka salasanassa olisi valmiiksi jo 30 merkkiä. (Eikä edes aleta puhua niistä, joilla on vielä tarkemmat säännöt...) Kaikkein parasta tietenkin olisi yhdistää pituus ja erikoismerkit, jolloin kumpikin tuo lisää bittejä.

Miksi naiivi menetelmä ei toimi

Käytännössä kukaan ei muista kymmentä satunnaista kirjainta, mutta useimmat pystyvät muistamaan kymmenkirjaimisen sanan. Koska sanoja on vähemmän kuin merkkiyhdistelmiä, entropia rajautuu niihin. Jos sanan valitsee sadantuhannen joukosta, entropiaa on vain 17 bitin verran — melkoinen pudotus!

Lisäksi jotkut salasanat ovat salaisempia kuin toiset. Analysoimalla tietovuodoissa paljastuneita salasanoja on selvää, että suosituimpia salasanoja käytetään paljon. salasana on kelvoton, kuten on aika monta miljoonaa muutakin. Oma tai palvelun nimi ovat myrkkyä. Tietoturva-asiantuntija Troy Hunt julkaisi hiljattain palvelun, jossa voi etsiä salasanaa 320 miljoonan tunnetun joukosta. Sivu on osa isompaa palvelua, jolla voi tarkistaa, onko oma käyttäjätunnus tunnetuissa vuodoissa.

Muunnokset eivät varsinaisesti pelasta tilannetta. Jos salasana on kaikkien tiedossa, niin voiko s@la5ana harhauttaa alkuunkaan pahista, joka tuntee salasanojen psykologian tasan tarkkaan? Yleisimmät muutokset tuovat muutaman, eivät erikoismerkkien yli kymmentä bittiä, entropiaa.

Kaiken lisäksi ihmiset noudattavat tietynlaisia kuvioita. Jos salasanassa pitää olla iso kirjain ja numero, Salasana1 on todennäköisempi kuin saLasa1na. Pääsääntöisesti kuviot siis lisäävät hyvin vähän, korkeintaan pari bittiä, entropiaa. Naiivi menetelmä pitäisi edellisiä yhtä hyvinä, mutta jälkimmäinen on edellistä satunnaisempi.

Näiden ongelmien takia salasanan arviointi on hyvin vaikeaa. Esimerkiksi Dropbox esitteli muutama vuosi sitten algoritmin (kuvattu heidän teknologiablogissaan), joka yrittää ottaa huomioon sanojen, kuvioiden ja muunnosten vaikutuksen. Sekin on silti vain heikko arvio eikä esimerkiksi tunne eri kielten sanalistoja.

Mitä voit tehdä

Lisää pituutta. Entropia kasvaa pituuden mukana nopeammin kuin merkkivalikoimaa laajentamalla. Erikoismerkkejä ja numeroita on hyvä käyttää, muttei ilmeisillä tavoilla. Tavanomaisten a=@ -korvausten sijasta kannattaa lisätä erikoismerkkejä ja numeroita sanojen keskelle... tai miksei väliin tai perään, kunhan tekee edes jotain.

Salasanan sijasta salalause on helpommin muistettava ja yleensä turvallisempi. Valitse ainakin neljä, mieluusti vaikka kuusi, satunnaista ja toisiinsa liittymätöntä sanaa. Luultavasti pystyt keksimään niistä jonkin muistikuvan, ja entropiaa kertyy hyvän salasanan verran. Suomenkielisten sanojen käyttö voi tuoda ratkaisevan satunnaisuuden globaalissa maailmassa. Ikävä kyllä tämä ei toimi palveluissa, jotka tuntemattomista (ja vaarallisen huonoon salasanojen tallennukseen viittaavista) syistä rajoittavat salasanan pituuden hyvin lyhyeksi — mutta silloinkin voi vaikka hyödyntää sanojen alkukirjaimia.

Sitä tukeviin palveluihin kannattaa ottaa lisäksi kaksivaiheinen tunnistautuminen. Tällöin kirjautumiseen vaaditaan säännöllisesti vaihtuva koodi esimerkiksi puhelimessa olevasta sovelluksesta. Koska sisäänpääsyyn tarvitsee sekä salasanan että fyysisen esineen, tyypillisimmät hyökkäykset pysähtyvät jälkimmäisen puutteeseen.

Ajan mukaan vaihtuvia koodeja esittävä sovellus.

Yksi ratkaisu salasanojen muistamiseen löytyy tutkimalla vähän riskien rakennetta. Anteeksi vain, mutta verkkorikollisten silmissä et luultavasti ole alkuunkaan kiinnostava. Juuri kukaan meistä ei ole, eivätkä matikkabloggarin niksit riittäisi alkuunkaan niille, jotka ovat.

Tavallisista käyttäjätunnuksista tulee arvokasta kauppatavaraa vasta tukussa, ja siksi hyökkäykset kohdistuvat sivustoihin. Ja jos samaa tunnusta käyttää monessa palvelussa, yhden murtuminen murtaa loput. Tämän takia joka sivulle suositellaan omaa arvaamatonta salasanaa. Satojen salasanojen muistaminen taas on lähes mahdotonta ihmiselle.

Poistetaankin ihminen siis pelistä.

Markkinoilla on useita sovelluksia, jotka huolehtivat salasanoista. Sellaisen käyttäminen vaatii erittäin lujaa luottoa valmistajaan — enkä tässä vertaile yhtäkään, vaikka olen oman valintani tehnyt — mutta hyödyt ovat suuret: jokaiselle sivustolle voi luoda oman pitkän ja täysin satunnaisen salasanansa, eikä itse tarvitse muistaa kuin pari tärkeintä tunnusta. Samalla muodostuu lista kaikista palveluista, joita käyttää, ja sovelluksesta riippuen sen voi jakaa kaikille laitteilleen. Salasananhallintaohjelma on siis voitto niin tietoturvalle kuin laiskuudellekin!

Salasanakenttä, jossa kolmekymmentä satunnaista merkkiä.

Jatkolukemisena (ja tämän tekstin inspiraationa) suosittelen mm. seuraavia Troy Huntin tekstejä:

Ei kommentteja:

Lähetä kommentti

Kommentit ovat moderoituja — yritän hyväksyä kommenttisi mahdollisimman pian. Voit kirjoittaa kommenttiin LaTeX-koodia tai yksinkertaista HTML-merkintää: lue lisää Kommentointi-sivulta.