Salasana

**Salasana** on keino todentaa käyttäjiä salaisen tiedon avulla.  Salasana pidetään salassa niiltä, joille salattavan kohteen käyttö ei ole sallittua. Esimerkiksi sodissa on käytetty salasanoja sallimaan pääsy vartiopaikalle vain tietyille henkilöille. Tässä käytössä Suomen puolustusvoimissa puhutaan **tunnussanasta**.

Nykyään salasanoja käytetään suojaamaan esimerkiksi tietokonejärjestelmiä, matkapuhelimia, TV-vastaanottimen asetuksia, pankkiautomaatteja ja muita henkilökohtaisia asioita. Nimestään huolimatta salasanan ei tarvitse aina olla sana, vaan se voi myös olla kokonainen lause tai pelkistä numeroista koostuva PIN-koodi. 

Salasana  vaihtaa jos tiedetään tai epäillään salasanan joutuneen vääriin käsiin. Lisäksi jos samaa salasanaa on käytetty eri paikoissa myös niissä salasana on vaihdettava.

## Salasanat tietokoneissa
Ensimmäinen tietokoneen salasana otettiin käyttöön todennäköisesti vuonna 1961 MIT:n osituskäyttöjärjestelmässä CTSS (*Compatible Time-Sharing System*), jossa käyttäjä sai varata suuren keskustietokoneen omaan käyttöönsä tietyksi ajaksi, esimerkiksi neljäksi tunniksi viikossa. CTSS pyöri IBM:n 7090-sarjan tietokoneella, jota komennettiin kirjoituskonetta muistuttavilla päätteillä, joissa oli näppäimistö, mutta ei näyttöä vaan paperitela kuten kaukokirjoittimessa. Jokaisella käyttäjällä oli järjestelmään tallennettuna omat yksityiset tiedostonsa, jotka Fernando J. Corbatón työryhmä suojasi käyttäjätunnuksella ja salasanalla. Lista salasanoista tallennettiin järjestelmän muistiin täysin selkokielisenä. Siten maailman ensimmäinen tietomurto tapahtui pian ensimmäisen salasanan käyttöönoton jälkeen vuonna 1962, kun tutkija Allan Scherr keksi keinon tulostaa kaikkien käyttäjien salasanat. Niiden avulla hän pystyi käyttämään toisten käyttäjien laskenta-aikaa omaksi hyödykseen. Ensimmäiset salasanatiivisteet ja kryptaus otettiin käyttöön vasta 1970-luvulla.

Nykyiset järjestelmät eivät tyypillisesti tallenna salasanoja selväkielisinä, vaan syötetyistä salasanoista tallennetaan tiiviste. Käyttäjän kirjautuessa uudelleen sisään salasanasta lasketaan tiiviste, jota verrataan tallennettuun.
Tiiviste on kryptografisesti muodostettu määrämittainen merkkijono, joka on laskettu alkuperäisestä merkkijonosta. Näin järjestelmä tai sen ylläpitäjä ei tiedä alkuperäistä salasanaa eikä voi myöskään kertoa sitä.

Varhaisin tiivisteisiin perustuva menetelmä on kuvattu Maurice V. Wilkesin teoksessa *Time-Sharing Computer Systems* (1968). Varhainen salausmenetelmä simuloi M-209 -konetta.

Unixin standardi `crypt()`-salausfunktio on käyttänyt 56-bittistä avainta DES-algoritmilla, jolloin käytössä on ollut 13 ASCII-merkkiä pitkä tiiviste. Linux-järjestelmissä (glibc:n kautta) voidaan käyttää eri menetelmiä kuten MD5-, Blowfish-, SHA-256- ja SHA-512-tiivisteitä. Verkkosivujen suojauksessa käytettävä .htpasswd käyttää samoja algoritmeja.

Salasanoihin lisättävä salainen osuus *suola* () tekee avainten etsimisestä hyökkääjälle vaikeampaa. Suola on satunnainen merkkijono, joka lisätään sanasanaan ennen tiivisteen muodostamista. Tämä suolaus tallennetaan selväkielisenä ja lisätään käyttäjän syöttämään salasanaan ennen tiivisteen muodostamista. Lyhytkin suola (12-bittiä) lisää merkittävästi hyökkäyksen vaikeusastetta.

## Parhaat käytännöt salasanoille
Jotta salasanoista saa hyvän suojan olisi noudatettava muutamia käytäntöjä. Yksinkertainen salasana, joka on helposti arvattavissa, ei ole hyvä tapa suojata tärkeätä tietoa. Helposti arvattavia salasanoja ovat esimerkiksi 12345, syntymäpäivät, lemmikkien nimet tai muut tunnistamiseen käytetyt tiedot. Eri tunnuksille olisi käytettävä eri salasanoja.

Kolme tapaa tehdä salasanoista turvallisempia:
* tee niistä pitkiä, esimerkiksi 16 merkkiä pitkiä
* tee niistä satunnaisia, lisää joukkoon isoja ja pieniä kirjaimia sekä numeroita ja symboleita
* tee niistä yksilöllisiä, älä käytä eri tunnuksissa samaa salasanaa

Salasanojen kanssa on suositeltavaa käyttää kaksivaiheista tunnistautumista, jolloin pelkkä salasana ja käyttäjätunnus ei riitä hyökkääjälle. Kaksivaiheisessa tunnistautumisessa varmistat toisella menetelmällä että olet todella kirjautumassa sisään.

Salasanaa ei koskaan pidä kertoa kenellekään muulle. Kenenkään muun ei tarvitse niitä tietää.

Salasanoja ei kannata tallettaa tiedostoon, vaan tarkoitukseen tehtyyn salasananhallintaohjelmaan (*password manager*).

Järjestelmien ylläpitoon on tietoturvan ylläpitämiseksi joukko parhaita käytäntöjä. Salasanoja ei nykyään vaadita muutettavaksi tietyin väliajoin, koska se kuormittaa käyttäjiä ja käyttäjät usein vain tekevät pieniä muutoksia salasanaan jos sitä pitää vaihtaa usein. Tietyt usein käytetyt sanat voidaan kieltää salasanoista.
Salasanoja ei pidä lähettää sähköpostissa, edes väliaikaista salasanaa. Yhden kerran käytettävä linkki on suositeltavampi tapa.

## Salasanojen tallentaminen
Salasanojen tallentamiseen olisi käytettävä vain yksisuuntaista tiivistealgoritmia eikä kaksisuuntaista salausta, koska salaus voidaan myös purkaa. Eräistä tiivistealgoritmeista kuten MD5 on löydetty heikkouksia eikä niitä enää voida pitää turvallisena salasanojen tallentamisessa. Salasanoja varten on kehitetty niille tarkoitettuja menetelmiä kuten bcrypt, scrypt ja PBKDF2, joita voi käyttää sopivanpituisen suolauksen kanssa. Suolauksen lisäksi palvelimet voivat käyttää pippurointia, jota ei saa tallentaa suolan kanssa vaan pidetään erillään. Salasanat tallennetaan suolauksen, pippuroinnin ja tiivisteen laskennan jälkeen. Yksinkertainenkin suolaus lisää tarvittavan hyökkäysmenetelmän vaikeutta: kahdeksan bittisen suolauksen kanssa hyökkääjä tarvitsee 256 sateenkaaritaulua yhden sijaan ja 12 bittisellä suolauksella hyökkääjä tarvitsee 4 096 taulua.

Käyttäjät voivat käyttää salasananhallintaohjelmaa käyttämiensä salasanojen hallintaan.

## Salasanan murtaminen

Yksinkertaisimmat salasanat voidaan pystyä arvaamaan sanastohyökkäyksellä. Menetelmä on heikkotehoinen, mutta onnistuu usein, koska käyttäjät valitsevat helposti arvattavia salasanoja.
Monet järjestelmät rajoittavat virheellisen salasanan syöttämisen määrää tai tiheyttä, jolloin salasanaa voi olla vaikea murtaa suoraan salasanaa pyytävän liittymän kautta.

Murtautuja saattaa kuitenkin saada haltuunsa järjestelmän käyttämän salasanasta lasketun kryptografisen tiivisteen, jolloin hän saattaa pystyä murtamaan salasanan ilman liittymää laskemalla automaattisesti tiivisteitä eri merkkiyhdistelmille ja vertaamalla niitä alkuperäiseen tiivisteeseen. Riittävän pitkien salasanojen murtaminen ei kuitenkaan onnistu tietokoneellakaan, koska kokeiltavien merkkiyhdistelmien määrä kasvaa liian suureksi. Tästä syystä hyökkääjät käyttävät algoritmien heikkouksia salasanan arvaamiseen. Salasanan suojaamiseen käytettävää algoritmia on vaihdettava mikäli se onnistutaan murtamaan.

Hyökkääjällä voi olla valmiiksi muodostetut tiivisteet yleisimmistä salasanoista, joten salasanoja voidaan murtaa pelkästään tunnettuja tiivisteitä hakemalla eli sateenkaaritaulujen avulla (). Tätä vastaan käytetään salasanojen suolausta ja pippurointia, jolloin hyökkääjän on laskettava tiivisteet uudestaan.

## Huonot salasanat
Helposti arvattavat salasanat ovat huonoja. Kymmenen huonoimman salasanan joukossa ovat lemmikkien nimet, merkkipäivät, sukulaisten tai läheisten nimet, syntymäpaikka ja urheilujoukkueisiin liittyvät asiat. Salasanoja ei myöskään pidä jakaa toisten kanssa. NordPass ja SplashData pitävät luetteloa helpoimmin arvatuista salasanoista. Samat virheet toistuvat usein vuodesta toiseen ja yleisimmät arvataan alta sekunnissa. Yleisin salasana on ”123456”. Toiseksi yleisin on ”password”.

”Salasana” on yleinen salasana. Se on myös yksi huonoimmista.

## Katso myös
* Salasanageneraattori
* Avainfraasi

## Lähteet
*
*

### Viitteet

## Aiheesta muualla
* NIST Special Publication 800-63B Digital Identity Guidelines