Salausavain

**Salausavain** on parametri, tiedonpalanen, joka määrittää salausalgoritmin toiminnan. Salausalgoritmin salausavain määrittää selkotekstin muuntamisen salakirjoitukseksi, ja salauksenpurkualgoritmin avain määrittää salakirjoituksen muuntamisen selkotekstiksi. Salausavaimilla määritetään myös muiden salausalgoritmien muunnoksia, kuten sähköisten allekirjoitusten kaavoja ja viestien varmenteita. 

## Salassapidon tarve
Turvajärjestelmiä suunnitellessa on viisasta olettaa, että salausalgoritmien yksityiskohdat ovat jo hyökkääjien saatavilla. Tämä tunnetaan Kerckhoffin periaatteena: ”vain salausavaimen salassapito tarjoaa turvallisuutta”, tai, Shannonin uudelleenmuotoilemana ”vihollinen tuntee järjestelmän”. Historia on todistanut, että laajasti käytettyjen salausalgoritmien yksityiskohdat on hankala pitää salassa, mutta avain on usein helpompi suojata (se on pieni tiedonpalanen) kuin salausalgoritmi, ja helpompi vaihtaa tietomurron sattuessa. Salausjärjestelmän turvallisuus perustuukin yleensä salausavainten salassapitoon.  

Käytännöllisen salauksen suurimpia ongelmia on yrittää pitää salausavaimet salassa. Hyökkääjä, jolla on hallussaan salausavain (esimerkiksi varkauden, kiristyksen, dyykkauksen, hyökkäyksen, kidutuksen tai käyttäjän manipuloinnin seurauksena) voi palauttaa salatusta tiedosta alkuperäisen viestin ja allekirjoittaa sen.

## Salausavainten käyttöala
Salausavaimet luodaan käytettäväksi tiettyjen algoritmien, salausjärjestelmän, kanssa. Salausalgoritmejä, joissa käytetään samaa avainta sekä salaamiseen että salauksen purkamiseen, kutsutaan symmetrisiksi salausalgoritmeiksi. Uudempi julkisen avaimen salauksen algoritmien luokka keksittiin 1970-luvulla. Näissä epäsymmetrisissä salausalgoritmeissa käytetään salausavainparia: julkista ja yksityistä avainta. Julkisia salausavaimia käytetään salaukseen tai allekirjoituksen todentamiseen ja yksityisiä salauksen purkuun ja allekirjoittamiseen. Salaus on suunniteltu siten, että yksityisen avaimen löytäminen on äärimmäisen hankalaa, vaikka sitä vastaava julkinen avain olisi tiedossa. Koska järjestelmä sisältää pitkäkestoisia laskutoimituksia, avainparia käytetään usein vain vaihtamaan lennossa oleva symmetrinen salausavain, jota käytetään ainoastaan nykyiseen istuntoon. Esimerkiksi RSA on yleisesti käytetty julkisen avaimen salausjärjestelmä.

## Omistus ja kumoaminen
Osa salauksen tuottamasta turvallisuudesta liittyy luottamukseen siitä, kuka allekirjoitti annetun asiakirjan, ja kuka vastaanotti sen yhteyden toisessa päässä. Olettaen, että salausavaimia ei ole murrettu, tämä tarkoittaa asiaankuuluvan julkisen salausavaimen omistajan määrittämistä. Jotta avaimen omistajan kertominen olisi mahdollista, julkisiin avaimiin lisätään usein määritteitä kuten nimiä, osoitteita tai muita vastaavia. Julkisen salausavaimen pakattu kokoelma määritteineen voi olla yhden tai useamman tukijan sähköisesti allekirjoittama. PKI-mallissa tuloksena olevaa kohdetta kutsutaan varmenteeksi ja se on varmentajan allekirjoittama. PGP-mallissa sitä kutsutaan avaimeksi, ja se on useiden henkilöiden allekirjoittama. He varmistavat henkilökohtaisesti, että määrite ja kohde täsmäävät keskenään. 

Murretut salausavaimet voidaan kumota sekä PKI- että PGP-mallissa. Kumoamisen sivuvaikutuksena avaimen määritteiden ja kohteen suhde katkeaa, mutta kohde saattaa olla yhä kelvollinen. Allekirjoittajat käyttävät usein eri salausavaimia päivittäisiin tehtäviin voidakseen toipua tällaisesta häiriöstä: kirjautuminen välivarmenteella (PKI:ssa) tai aliavaimella (PGP:ssä) helpottaa pääasiallisen yksityisen salausavaimen pitämistä verkkoyhteydettömässä tallessa. 

Salausavaimen poistamista, jonka tarkoituksena on estää tiedostoihin pääsy, kutsutaan salausavaimen silppuamiseksi. 

## Salausavainten koot
OTP-salausjärjestelmässä salausavaimen tulee olla vähintään viestin pituinen. Salakirjoitusalgoritmia käyttävissä salausjärjestelmissä viestit voivat olla paljon avainta pidempiä. Salausavaimen on oltava kuitenkin niin pitkä, ettei hyökkääjä voi kokeilla kaikkia mahdollisia yhdistelmiä. 

Salausavaimen 80 bitin pituutta pidetään vahvan salauksen vähimmäisvaateena käytettäessä symmetristä salausalgoritmia. 128-bittisiä avaimia käytetään yleisesti, ja niitä pidetään todella vahvoina. 

Julkisen avaimen salauksessa käytettävillä salausavaimilla on tietty matemaattinen rakenne. Esimerkiksi RSA-järjestelmässä käytettävät avaimet ovat kahden alkuluvun tuloja. Tämän vuoksi julkisen avaimen salauksessa tarvitaan pidempiä avaimia kuin symmetrisissä salausjärjestelmissä, jotta tietoturvan taso olisi sama. Faktorointiin ja kokonaislukujen diskreetteihin logaritmeihin perustuvien järjestelmien salausavainten suositeltu pituus on 3072 bittiä, jolloin niiden tietoturva vastaa 128 bittistä symmetristä salausavainta. Elliptisten käyrien salausmenetelmillä voidaan saavuttaa yhtä hyvä tietoturva pienempikokoisilla avaimilla, mutta nämä algoritmit ovat olleet olemassa vasta suhteellisen vähän aikaa eivätkä nykyiset arviot niiden avainten etsimisen vaikeudesta välttämättä päde. Esimerkiksi 109-bittistä salausavainta ja elliptisten käyrien salausta käyttänyt algoritmi murrettiin raa'alla voimalla jo vuonna 2004. Nykyinen suositus on käyttää kaksi kertaa niin pitkää elliptisten käyrien salausavainta kuin symmetristä avainta. Satunnaista OTP-salausta lukuun ottamatta näiden järjestelmien tietoturvaa ei ole todistettu matemaattisesti (vuonna 2018), joten teoreettinen läpimurto voisi tehdä mitä tahansa avoimelle salaukselle. Tämä on toinen syy erehtymiselle pidempiä salausavaimia valitessa. 

## Salausavaimen valinta
Jotta salausavainten arvaamista voidaan ehkäistä, avaimet on luotava aidosti satunnaisesti ja niiden hajeen (eli entropian) on oltava riittävä. Aidosti satunnaisten avainten turvallinen luominen on vaativa tehtävä, mikä on osoitettu monin tavoin eri salausjärjestelmissä. Satunnaisuuden luomisesta on olemassa RFC-standardi (, "tietoturvan satunnaisuusvaateet"). Joissakin käyttöjärjestelmissä on työkaluja hajeen "keräämiseen" ennakoimattomien toimintojen, kuten kiintolevyn pään liikkeiden ajoituksesta. Tavalliset nopat tarjoavat hyvän korkealaatuisen satunnaisuuden lähteen, jos salausavaimia on tarpeen tuottaa vain pienehkö määrä.

## Salausavaimen ja salasanan vertailu
Useimmissa tietokoneen tietoturvatapauksissa ja useimmilla käyttäjillä salausavain ei tarkoita samaa kuin salasana (tai salalause), vaikka salasanaa voikin käyttää avaimena. Salausavainten ja salasanojen suurin käytännön ero on se, että jälkimmäisten on tarkoitus olla ihmiskäyttäjien luomia, lukemia, muistamia ja kirjoittamia (tosin käyttäjä voi antaa nämä tehtävät salasananhallintaohjelmalle). Salausavain on sen sijaan tarkoitettu salausohjelmiston käyttöön, joten sen ei tarvitse olla ihmiselle lukukelpoinen yms. Monet käyttäjät eivät ole itse asiassa edes tietoisia salausavainten olemassaolosta, koska niitä käyttävät heidän puolestaan ohjelmiston tietoturvasta vastaavat osat ja algoritmit. 

Mikäli salasanaa käytetään salausavaimena, sitä ei käytetä tällöin yksinään hyvässä salausjärjestelmässä, koska salasanojen on tapana olla ihmisille lukukelpoisia eikä täten erityisen vahvoja. Hyvät salausjärjestelmät hyvittävät tämän heikkouden olemalla käyttämättä salasanoja avaimina varsinaisessa salauksessa, vaan sen sijaan salausavaimen derivointifunktiolle syötettävinä koodeina. Funktio käyttää salasanaa lähtöpisteenä, josta se luo varsinaisen turvallisen salausavaimen. Luonnissa voidaan käyttää erilaisia menetelmiä kuten suolaamista ja avaimen venyttämistä.

## Katso myös

* Salaus
* Julkisen avaimen salaus
* Elliptisten käyrien salausmenetelmät
* Symmetrinen salaus
* Sähköinen allekirjoitus

## Lähteet