Salasanat eivät lähde koneeltasi
Salasanat arvotaan selaimessasi crypto.getRandomValues()-funktiolla, joka
hakee satunnaisuuden käyttöjärjestelmän salausvahvasta satunnaislukulähteestä. Palvelin
lähettää vain sivun ja sanalistan – se ei koskaan näe, mitä koneellasi syntyy. Sivulla ei
ole seurantaa, evästeitä eikä ulkopuolisia skriptejä.
Voit myös katkaista verkkoyhteyden ennen arpomista tai tallentaa sivun koneellesi: se toimii yhtä hyvin ilman verkkoa, kunhan sanalista on kerran ladattu.
Miksi salasana kannattaa arpoa
Ihminen on huono keksimään satunnaista. Kun salasana pitää itse kehittää, siihen päätyy lähes aina jotain omaa: lapsen nimi, syntymävuosi, lempijoukkue, työpaikan nimi ja perään huutomerkki. Se tuntuu omalta ja siksi turvalliselta – mutta juuri sitä hyökkääjä arvaa ensimmäisenä.
Salasanoja ei nykyään murreta kokeilemalla kirjautumista uudestaan ja uudestaan. Hyökkääjä saa käsiinsä jonkin palvelun vuotaneen tunnustietokannan ja kokeilee sitä omalla koneellaan, miljoonia arvauksia sekunnissa. Ensin käydään läpi kaikki aiemmin vuotaneet salasanat, sitten sanakirjat, sitten tutut kikat: a vaihtuu nelosiksi, o nollaksi, loppuun ! tai 123. Ne on kaikki nähty. Kissa2019! ei ole vahva salasana, vaikka siinä on iso kirjain, numero ja erikoismerkki.
Kone taas ei osaa arvata satunnaista sen paremmin kuin sinäkään. Kun salasana on arvottu oikeasti satunnaisesti, ainoa keino murtaa se on kokeilla kaikkia vaihtoehtoja järjestyksessä – ja kun vaihtoehtoja on tarpeeksi, aikaa kuluu enemmän kuin maailmankaikkeus on ollut olemassa. Siksi tämä sivu arpoo puolestasi.
Yhtä tärkeää on, ettei samaa salasanaa käytä kahdessa paikassa. Yksi vuoto riittää avaamaan kaikki ne palvelut, joissa sama salasana on käytössä – tätä kokeillaan automaattisesti heti, kun uusi vuoto ilmestyy. Jokaiseen palveluun oma salasana on tärkeämpää kuin yhdenkään salasanan pituus.
Miksi sanat ovat parempia kuin sekamerkit
rakenne-Ovela-tuuli-mätäs on helpompi lukea, sanella puhelimessa ja naputella kuin x7Qp!2vZ – ja silti moninkertaisesti vahvempi. Tässä on kaksi eri asiaa, jotka menevät usein sekaisin.
Muistamisen kannalta pituus on ilmaista, kun se koostuu sanoista. Aivot muistavat merkityksiä, eivät merkkijonoja. Neljä sanaa on neljä asiaa muistettavaksi, vaikka merkkejä on parikymmentä; x7Qp!2vZ on kahdeksan toisiinsa liittymätöntä merkkiä, eli kahdeksan erillistä asiaa – ja silti lyhyempi. Sanoista koostuvan salasanan voi myös lukea ääneen puhelimessa tai kopioida virheettömästi paperilta, mikä sekamerkkijonolla on tuskaa.
Vahvuuden kannalta ratkaisee se, kuinka monesta vaihtoehdosta kukin palanen on arvottu. Yksi merkki sekamerkkijonossa on arvottu noin 60 vaihtoehdosta. Yksi sana tämän sivun listasta on arvottu 22 852 vaihtoehdosta, eli yksi sana vastaa noin kahta ja puolta satunnaista merkkiä – ja on silti yksi muistettava asia. Kahdeksan sanan salasanalle vaihtoehtoja on noin 19 000 000 000 000 000 000 000 000 000 000 000 kappaletta. Vaikka murtokone kokeilisi tuhat miljardia arvausta sekunnissa, kaikkien läpikäymiseen menisi kymmeniä miljoonia kertoja kauemmin kuin maailmankaikkeus on ollut olemassa.
Tärkeä ehto: sanojen pitää olla arvottuja, ei itse valittuja. Itse keksitty lause omista kirjoistasi ja harrastuksistasi ei ole satunnainen, ja tunnetut sitaatit ja sanonnat ovat hyökkääjän sanakirjoissa siinä missä yksittäiset sanatkin. Vahvuus on siinä, että kone arpoi – ei siinä, että sanoja on monta.
Sanalista on suomen kielen yleissanastoa, joten mukana on ä- ja ö-kirjaimia. Ne ovat osa suomea, mutta jotkin vanhat järjestelmät eivät hyväksy niitä salasanakentässä. Sellaisia varten valitse englanti tai merkkijono.
Kuinka vahva salasana on?
| Asetus | Entropia |
|---|---|
| 8 suomenkielistä sanaa, isoja ja pieniä kirjaimia | ~124 bittiä |
| 8 suomenkielistä sanaa, pelkkiä pieniä | ~116 bittiä |
| 8 englanninkielistä sanaa, isoja ja pieniä | ~129 bittiä |
| 32 merkkiä, isoja ja pieniä kirjaimia | ~191 bittiä |
| 32 merkkiä, mukana erikoismerkit | ~208 bittiä |
| 32 merkkiä, pelkkiä pieniä ja numeroita | ~165 bittiä |
Vertailun vuoksi: yli 80 bittiä riittää käytännössä kaikkeen, ja 128 bittiä vastaa vahvaa salausavainta. Alle 60 bitin salasanoja ei kannata käyttää mihinkään tärkeään.
Kannattaako salasanojen hallintaohjelma?
Kyllä. Tämä on asia, josta tietoturva-alalla vallitsee poikkeuksellisen laaja yksimielisyys: hallintaohjelman käyttöönotto on useimmille ihmisille se yksittäinen muutos, joka parantaa turvallisuutta eniten.
Syy on yksinkertainen. Kukaan ei muista sataa eri satunnaista salasanaa, joten ilman apuvälinettä salasanoja väistämättä kierrätetään tai keksitään saman kaavan mukaan – ja juuri se on se ongelma, joka oikeasti kaataa tilejä. Hallintaohjelma arpoo jokaiseen palveluun oman salasanansa ja muistaa ne puolestasi. Sinun tarvitsee muistaa vain yksi: pääsalasana, jolla holvi avataan.
Juuri siihen pääsalasanaan tämä sivu on omimmillaan. Sen pitää olla vahva, sitä ei voi tallentaa mihinkään, ja se pitää muistaa ulkoa vuosia – eli täsmälleen se tilanne, jossa arvotut sanat päihittävät sekamerkit selvästi. Sama koskee laitteen avauskoodia ja sähköpostitilin salasanaa: nämä kolme kannattaa opetella, loput kuuluvat ohjelmalle.
Entä jos hallintaohjelmaan murtaudutaan? Näin on käynyt, ja salasanaholveja on päätynyt vääriin käsiin. Opetus ei kuitenkaan ole se, että holvit olisivat huono ajatus, vaan se, mikä ratkaisee varastetun holvin kohtalon: holvi on salattu pääsalasanallasi. Jos pääsalasana on arvottu ja pitkä, varastettu holvi on hyökkääjälle pelkkää kohinaa. Jos se on Kissa2019!, holvi aukeaa. Riski, että käytät samaa salasanaa kahdessa paikassa, on käytännössä paljon suurempi kuin riski, että hallintaohjelmasi vuotaa.
Minkä ohjelman valitsisin? Selaimeen ja puhelimeen sisäänrakennettu salasanojen tallennus (Applen, Googlen tai Mozillan) on ilmainen, riittävä useimmille ja joka tapauksessa parempi kuin salasanojen kierrättäminen. Erillinen ohjelma – esimerkiksi avoimen lähdekoodin Bitwarden tai täysin paikallinen KeePassXC – antaa enemmän hallintaa ja toimii kaikissa selaimissa. Tärkeintä on, että otat jonkin niistä käyttöön; paras on se, jota oikeasti käytät.
Kaksi asiaa vielä. Ota käyttöön kaksivaiheinen tunnistautuminen kaikkialla, missä se on tarjolla – se suojaa silloinkin, kun salasana on jo vuotanut. Ja jos palvelu tarjoaa passkey-avainta, käytä sitä: silloin salasanaa ei ole olemassa, joten sitä ei voi vuotaa eikä kalastella.
Salasanoja ei kannata säilyttää salaamattomassa muistiinpanosovelluksessa, sähköpostin luonnoksissa eikä tekstitiedostona pilvilevyllä. Sen sijaan lapulle kirjoitettu ja kotona laatikossa säilytettävä pääsalasana ei ole tyhmä ratkaisu: se suojaa juuri siltä hyökkääjältä, joka on realistinen – verkon toiselta puolelta tulevalta. Älä vain pidä lappua lompakossa.
Sama työkalu komentoriville
Sivun takana on generate-passwd, pieni Python-komentorivityökalu, joka
tekee saman asian päätteessä eikä tarvitse verkkoa lainkaan:
git clone https://github.com/adrenalin/generate-passwd.git
cd generate-passwd
sudo make install
generate-passwd # 5 salasanaa, 8 suomenkielistä sanaa
generate-passwd --language en -c 4 # 4 englanninkielistä sanaa
generate-passwd --string --length 16 # 16 merkin merkkijono
Sanalistat
Suomenkielinen lista on Kotimaisten
kielten keskuksen Nykysuomen sanalista (GNU LGPL) rajattuna 4–8 kirjaimen
sanoihin: 22 852 sanaa. Englanninkielinen lista tulee
Debianin wamerican-sanakirjasta: 34 790
sanaa. Molemmista on karsittu haukkumasanat ja karkeudet.
Voit ladata listat sellaisenaan:
Ilmainen ja yhteiseksi hyväksi
Tämä palvelu on maksuton ja tarkoitettu kaikkien käyttöön. Ei tunnusta, ei tilausta, ei mainoksia, ei maksumuuria eikä myöhemmin yllättävää maksullista versiota. Vahva salasana on nykyään perustaito, ja sen apuvälineen kuuluu olla kaikkien ulottuvilla.
Sivun ja komentorivityökalun lähdekoodi on avointa (GNU LGPL), joten kuka tahansa voi lukea mitä se tekee, tarkistaa väitteet itse, kopioida sen ja pystyttää oman versionsa. Turvallisuustyökalua ei kannata uskoa pelkän lupauksen varassa – sitä pitää voida tarkistaa. Palvelun ylläpidosta vastaa Vapaaradikaali. Mitä sivu kerää ja mitä ei, on kerrottu tietosuojaselosteessa.