selitetty.com

Salasanat ja salalauseet

Mikä tekee salasanasta vahvan? Pituus ratkaisee, ei merkit

Salasanan vahvuus on arvattavuutta, ei monimutkaisuutta. Näin entropia lasketaan, miksi pituus voittaa erikoismerkit ja miksi vaihtoväli poistettiin ohjeista.

Lyhyt vastaus

Salasana on vahva silloin, kun sitä ei voi arvata eikä johtaa mistään sinuun liittyvästä. Käytännössä se tarkoittaa riittävää pituutta ja satunnaisuutta: vähintään 15 merkkiä tai neljästä viiteen satunnaisesti valittua sanaa. Erikoismerkit lisäävät vahvuutta paljon vähemmän kuin pituus, ja saman salasanan uudelleenkäyttö romuttaa hyödyn kokonaan.

Sisällys
  1. Entropia: mitä salasanassa oikeasti mitataan
  2. Entropiataulukko: montako arvausta salasana vaatii
  3. Kolme hyökkäystapaa vaativat kolme eri suojausta
  4. Miksi ”Salasana1!” täyttää säännöt mutta on heikko
  5. Miksi pakollinen salasanan vaihto on poistettu ohjeista
  6. Salalause ja miten muodostat sen
  7. Uudelleenkäyttö on suurin yksittäinen virhe
  8. Turvakysymykset, vihjeet ja paikat joihin salasanaa ei tallenneta
  9. Usein kysytyt kysymykset
  10. Lähteet ja lisälukemista

Salasanaohjeet ovat vuosikymmenen ajan mitanneet väärää asiaa. Sääntö ”vähintään kahdeksan merkkiä, iso kirjain, numero ja erikoismerkki” tuottaa salasanoja, jotka näyttävät monimutkaisilta mutta joita murtotyökalut kokeilevat ensimmäisten joukossa. Ihminen tekee samat muunnokset kuin kaikki muutkin: a:sta tulee @, loppuun tulee 1 ja huutomerkki.

Tässä artikkelissa lasketaan auki, mistä vahvuus oikeasti muodostuu, mitä eri hyökkäystavat vaativat puolustukselta ja miksi yksi tavallinen virhe kumoaa kaiken muun. Lopussa on numeroitu ohje salalauseen muodostamiseen ja tarkistuslista siitä, mihin salasanaa ei koskaan tallenneta.

Entropia: mitä salasanassa oikeasti mitataan

Salasanan vahvuutta kuvataan entropialla, jonka yksikkö on bitti. Entropia kertoo, kuinka monta vaihtoehtoa hyökkääjän pitää käydä läpi, jos hän tietää täsmälleen miten salasana on muodostettu mutta ei tiedä lopputulosta.

Laskenta on suoraviivainen. Jos merkistön koko on N ja pituus on L, vaihtoehtoja on N potenssiin L. Entropia bitteinä on tämän kaksikantainen logaritmi, eli L kertaa log2(N). Yksi lisäbitti tarkoittaa vaihtoehtojen määrän kaksinkertaistumista.

Tästä seuraa se, mikä yleensä ymmärretään väärin. Merkistön kasvattaminen 26 merkistä 94 merkkiin nostaa yhden merkin arvon 4,7 bitistä 6,6 bittiin, eli noin 40 prosenttia. Yhden merkin lisääminen pituuteen kasvattaa entropiaa aina saman verran kuin yksi merkki on arvoltaan. Pituus kertautuu, merkistö ei.

Entropia kuvaa vain sitä, miten salasana on arvottu. Jos valitsit sen itse, entropia on paljon pienempi kuin merkkien lukumäärä antaa ymmärtää.

Entropiataulukko: montako arvausta salasana vaatii

Tämä taulukko on Selitetty.comin oma laskelma. Luvut on laskettu kaavalla N potenssiin L ja pyöristetty. ”Arvausmäärä” on koko vaihtoehtoavaruus. Keskimäärin osuma löytyy noin puolessa välissä, joten todellinen odotusarvo on puolet luvusta.

Salasanatyyppi Kaava Entropia Arvausmäärä
8 satunnaista pientä kirjainta 26^8 38 bittiä 2 x 10^11
8 satunnaista merkkiä koko näppäimistöltä 94^8 52 bittiä 6 x 10^15
12 satunnaista pientä kirjainta 26^12 56 bittiä 1 x 10^17
Salalause, 4 satunnaista sanaa 7776 sanan listalta 7776^4 52 bittiä 4 x 10^15
Salalause, 5 satunnaista sanaa 7776^5 65 bittiä 3 x 10^19
12 satunnaista merkkiä (isot, pienet, numerot) 62^12 72 bittiä 3 x 10^21
Salalause, 6 satunnaista sanaa 7776^6 78 bittiä 2 x 10^23
16 satunnaista merkkiä koko näppäimistöltä 94^16 105 bittiä 4 x 10^31

Vertaa taulukon riviä kaksi ja riviä kolme. Kaksitoista pelkkää pientä kirjainta antaa 56 bittiä, kahdeksan merkkiä koko näppäimistöltä antaa 52 bittiä. Näppäimistön kaikki merkit käyttävä salasana näyttää vaikeammalta mutta on heikompi, ja lisäksi sitä on vaikeampi muistaa ja kirjoittaa.

Aika on eri asia kuin arvausmäärä. Kuinka kauan arvausmäärän läpikäynti kestää, ei riipu salasanasta lainkaan vaan siitä, miten palvelu tallensi sen. Jos palvelu käytti nopeaa tiivistefunktiota (esimerkiksi yksinkertaista SHA-256:ta), hyvin varustettu hyökkääjä pystyy suuruusluokaltaan noin 10^11 arvaukseen sekunnissa yhdellä koneella. Jos palvelu käytti hidasta avaimenjohdatusta (bcrypt korkealla kustannuskertoimella tai Argon2id), sama kone yltää suuruusluokkaan 10^4 arvausta sekunnissa. Ero on kymmenen miljoonaa kertaa.

Karkeana havainnollistuksena: 52 bitin salasana kaatuu nopealla tiivisteellä alle vuorokaudessa, mutta hitaalla avaimenjohdatuksella sama salasana kestäisi kymmeniätuhansia vuosia. Nämä luvut ovat suuruusluokkia, eivät ennusteita, ja laitteisto muuttuu. Se osa, johon sinä voit vaikuttaa, on arvausmäärä. Voit arvioida oman salasanasi entropiaa salasanan vahvuuden työkalulla.

Kolme hyökkäystapaa vaativat kolme eri suojausta

Salasanaan kohdistuu kolme selvästi erilaista hyökkäystä. Ne vaativat eri puolustuksen, ja siksi yksi neuvo ei riitä.

Tunnusten uudelleenkäyttöhyökkäys (credential stuffing). Hyökkääjä ottaa toisesta palvelusta vuotaneen sähköpostin ja salasanan ja kokeilee paria automaattisesti satoihin muihin palveluihin. Hän ei arvaa mitään. Salasanan pituus ei auta lainkaan, koska salasana on jo tiedossa. Ainoa suoja on se, ettei sama pari toimi missään muualla, ja kaksivaiheinen tunnistautuminen.

Verkossa tehty arvailu. Hyökkääjä kokeilee salasanoja palvelun kirjautumislomakkeella. Tahti on hidas, koska palvelu rajoittaa yrityksiä ja lukitsee tilin. Käytännössä vain kaikkein yleisimmät salasanat murtuvat näin. Suoja: älä käytä listojen kärkisalasanoja, ja luota siihen että palvelu rajoittaa yrityksiä.

Offline-murto vuodetusta tiivistetiedostosta. Palvelun tietokanta on vuotanut, ja hyökkääjällä on salasanojen tiivisteet omalla koneellaan. Nyt hän voi kokeilla niin nopeasti kuin laitteisto sallii, eikä palvelu voi estää sitä. Vasta tässä pituus ja satunnaisuus ratkaisevat. Jos tilillesi on tapahtunut vuoto, tietovuoto ja mitä tehdä kertoo toimintajärjestyksen.

Huomaa jako: pituus auttaa vain kolmanteen. Kahteen ensimmäiseen auttaa ainutkertaisuus ja toinen tunnistustekijä.

Miksi ”Salasana1!” täyttää säännöt mutta on heikko

Merkkijono ”Salasana1!” on kymmenen merkkiä, sisältää ison kirjaimen, pienen kirjaimen, numeron ja erikoismerkin. Se läpäisee lähes minkä tahansa palvelun vaatimukset. Jos se olisi satunnainen, sen entropia olisi noin 66 bittiä.

Se ei ole satunnainen. Se on suomen kielen tavallinen sana, jonka ensimmäinen kirjain on isolla ja jonka perään on liitetty numero ja huutomerkki. Murtotyökalut eivät kokeile merkkiyhdistelmiä umpimähkään: ne ajavat sanalistan ja soveltavat siihen sääntöjä, jotka kuvaavat juuri näitä ihmisen tekemiä muunnoksia. Sanaston koko ja sääntöjen määrä huomioiden todellinen arvausmäärä on luokkaa muutama miljoona, ei 10^19.

Sama koskee muunnoksia kuten ”P@ssw0rd”, ”Kevat2026” tai lasten nimiä syntymävuosineen. Kaikki nämä ovat sääntöpohjaisen hyökkäyksen ytimessä. Ratkaiseva kysymys ei ole ”näyttääkö tämä vaikealta” vaan ”kuinka moni muu ihminen olisi voinut päätyä samaan”.

Miksi pakollinen salasanan vaihto on poistettu ohjeista

Yhdysvaltain standardointi-instituutin NIST:n ohje SP 800-63B kielsi jo vuoden 2017 versiossaan sen, että palvelu pakottaisi käyttäjän vaihtamaan salasanan säännöllisin väliajoin ilman syytä. Sama linja jatkuu vuoden 2024 versiossa SP 800-63B-4.

Perustelu on käyttäytymisessä. Kun ihminen joutuu vaihtamaan salasanan 90 päivän välein, hän ei keksi uutta satunnaista salasanaa vaan tekee pienen muunnoksen vanhasta: Kevat2026 vaihtuu Kesa2026:ksi. Hyökkääjä, joka tuntee vanhan salasanan, arvaa uuden muutamalla yrityksellä. Pakkovaihto siis pienentää entropiaa sen sijaan että kasvattaisi sitä, ja kuluttaa käyttäjien halua noudattaa ohjeita ylipäätään.

Sama ohje karsi myös pakolliset merkkityyppisäännöt, koska ne ohjaavat samalla tavalla ennustettaviin ratkaisuihin. Tilalle tuli kaksi vaatimusta: salli pitkät salasanat ja tarkista syötetty salasana tunnettujen vuotaneiden salasanojen listaa vastaan.

Salasana vaihdetaan, kun on syy: palvelusta on tullut tieto vuodosta, epäilet että joku on nähnyt sen, tai olet käyttänyt sitä useassa paikassa.

Salalause ja miten muodostat sen

Salalause (passphrase) on useasta sanasta koostuva salasana. Se on pitkä, joten entropia on korkea, ja se on kielenmukainen, joten se on muistettava. Ehto on, että sanat valitaan satunnaisesti, ei itse keksimällä. Itse keksitty lause seuraa kielioppia ja kirjoittajan aihepiiriä, mikä leikkaa vaihtoehtoja rajusti.

  1. Ota noppa tai satunnaisluvun tuottaja. Salasanaohjelmat osaavat tuottaa salalauseita suoraan.
  2. Valitse sanalista. Tunnetuin on 7776 sanan lista, jossa jokainen sana vastaa viiden nopanheiton tulosta. Yksi sana antaa 12,9 bittiä.
  3. Arvo vähintään viisi sanaa. Viisi sanaa antaa 65 bittiä, kuusi sanaa 78 bittiä. Neljä sanaa riittää vain, jos tilillä on lisäksi toinen tunnistustekijä.
  4. Älä muokkaa tulosta. Jos hylkäät ”tyhmältä kuulostavat” arvonnat ja arvot uudelleen, kavennat avaruutta etkä enää tiedä paljonko.
  5. Erottele sanat välilyönnillä tai väliviivalla, jos palvelu sallii. Se ei lisää entropiaa mutta helpottaa kirjoittamista.

Salalauseita kannattaa opetella ulkoa vain muutama: laitteen avaus, salasanaohjelman pääsalasana ja sähköposti. Kaikki muut salasanat saa olla satunnaisia merkkijonoja, jotka salasanojen hallintaohjelma muistaa puolestasi.

Uudelleenkäyttö on suurin yksittäinen virhe

Jos joudut valitsemaan yhden asian, jonka teet oikein, valitse tämä: jokaisella palvelulla on oma salasana. Syy on suoraan hyökkäystapojen logiikassa. Vuotoja tapahtuu palveluissa, joihin sinä et voi vaikuttaa. Kun vuoto tapahtuu, kysymys on vain siitä, kuinka moneen muuhun tiliin vuotanut pari kelpaa.

Sadan bitin salasana, jota käytetään kahdessa palvelussa, on tarkalleen yhtä turvassa kuin heikommin suojattu näistä kahdesta. Vahvuus ei siirry mukana, mutta vuoto siirtyy.

Käytännössä tämä on mahdotonta ilman apuvälinettä, koska kukaan ei muista sataa satunnaista merkkijonoa. Siksi salasanaohjelma ei ole ylimääräinen mukavuus vaan se, mikä tekee ainutkertaisuudesta toteutettavan. Pitkällä aikavälillä ongelma poistuu toisella tavalla: pääsyavaimet korvaavat salasanan kokonaan avainparilla, jota ei voi vuotaa uudelleenkäytettävässä muodossa.

Turvakysymykset, vihjeet ja paikat joihin salasanaa ei tallenneta

Salasanavihje näkyy kenelle tahansa, joka syöttää käyttäjätunnuksesi. Vihje ”koiran nimi ja syntymävuosi” kertoo hyökkääjälle salasanan rakenteen. Jos palvelu vaatii vihjeen, kirjoita siihen merkityksetöntä tekstiä.

Turvakysymykset ovat käytännössä toinen, heikompi salasana. ”Äidin tyttönimi” tai ”ensimmäinen koulu” löytyvät usein sosiaalisesta mediasta tai julkisista rekistereistä, ja niitä käytetään usein juuri salasanan palautukseen, eli ne ohittavat vahvan salasanan kokonaan. Vastaa niihin satunnaisella merkkijonolla ja tallenna vastaus salasanaohjelmaan. Sama kysymysten arvattavuus on myös se, mitä tietojenkalastelussa tyypillisesti urkitaan.

Salasanaa ei tallenneta näihin paikkoihin:

  • Selaimeen kirjoitettuun muistiinpanoon, sähköpostiluonnokseen tai itselle lähetettyyn viestiin. Sähköpostitili on ensimmäinen kohde tilin kaappauksessa.
  • Jaettuun pilvidokumenttiin tai taulukkoon, jonka jakolinkki elää omaa elämäänsä.
  • Työpaikan yhteiseen tiedostoon tai chat-kanavalle, jossa historia säilyy ja jäsenistö vaihtuu.
  • Näytön reunaan liimattuun lappuun julkisessa tilassa. Kotona lukitussa laatikossa oleva paperilappu on sen sijaan täysin kelvollinen varmuuskopio pääsalasanalle.

Jos termit menevät sekaisin, digisanasto selittää tiivistefunktion, suolauksen ja entropian lyhyesti.

Usein kysytyt kysymykset

Kuinka pitkä salasanan pitää olla?

Satunnaisesti tuotettuna 15 merkkiä on hyvä yleisohje tavallisiin tileihin ja 20 merkkiä tai viiden sanan salalause tärkeimpiin. Jos salasana ei ole satunnainen vaan itse keksitty, pituus ei kerro juuri mitään, koska arvattavuus tulee rakenteesta eikä merkkien määrästä.

Tarvitseeko salasanassa olla erikoismerkkejä?

Ei tarvitse, jos salasana on riittävän pitkä ja satunnainen. Erikoismerkit kasvattavat yhden merkin arvoa noin 40 prosenttia verrattuna pelkkiin pieniin kirjaimiin, kun taas pituuden lisääminen kasvattaa vahvuutta rajattomasti. Monet palvelut vaativat niitä silti, joten salasanaohjelman generaattori on helpoin tapa täyttää vaatimus.

Onko turvallista antaa selaimen muistaa salasanat?

Selaimen salasanamuisti on selvästi parempi kuin sama salasana kaikkialla, ja nykyselaimissa se on salattu käyttöjärjestelmän lukituksen taakse. Erillinen salasanaohjelma on silti vahvempi ratkaisu, koska se toimii selaimesta riippumatta, tukee jaettuja tilejä ja varmuuskopiointia paremmin ja sisältää yleensä vuototarkistuksen.

Miten tiedän, onko salasanani vuotanut?

Vuotopalvelut vertaavat sähköpostiosoitettasi tunnettuihin vuotoaineistoihin. Monet salasanaohjelmat tekevät saman tarkistuksen automaattisesti tallennetuille tunnuksille. Jos osuma löytyy, vaihda kyseisen palvelun salasana ja kaikki paikat, joissa käytit samaa salasanaa.

Kannattaako salasana vaihtaa säännöllisesti?

Ei ilman syytä. NIST:n ohje suosittelee, ettei palvelu pakota määräaikaista vaihtoa, koska se tuottaa ennustettavia muunnelmia vanhasta salasanasta. Vaihda heti, jos palvelu ilmoittaa vuodosta, jos epäilet salasanan paljastuneen tai jos huomaat käyttäneesi samaa salasanaa muualla.

Miksi sama salasana kestää eri palveluissa eri ajan?

Koska palvelut tallentavat salasanat eri tavoin. Nopealla tiivistefunktiolla suojattu salasana voidaan kokeilla läpi miljardeja kertoja sekunnissa, kun taas bcryptillä tai Argon2:lla suojattu vaatii saman laitteiston käyttämään tuhansia kertoja enemmän aikaa jokaista arvausta kohti. Käyttäjä ei näe eroa, joten oma salasana kannattaa mitoittaa huonoimman tapauksen mukaan.

Takaisin ylös