Julkisen avaimen salaus

**Julkisen avaimen salaus** on epäsymmetristä salausta, jossa viestin salaukseen käytetyt avaimet ovat viestin lähettäjällä ja vastaanottajalla keskenään erilaiset. Niissä molemmissa on kaksi osaa, julkinen ja yksityinen. Niinpä vain toinen, yksityinen osa tarvitsee pitää visusti salaisena, kun taas toinen, julkinen osa voidaan julkaista. Lähettäjän tarvitsee tietää (oman yksityisen avaimensa lisäksi) vain vastaanottajan julkinen avain ja vastaanottajan vain lähettäjän julkinen avain. Julkisen avaimen salausalgoritmit — esimerkiksi RSA ja ECC — ovat laajalti käytetty epäsymmetrisen salauksen muoto, minkä seurauksena "epäsymmetristä" ja "julkisen avaimen salausta" käsitteinä käytetään pitkälti synonyymien tavoin. Julkisen avaimen salaukseen sopivien algoritmien keksiminen mullisti kryptografian 1970-luvun puolivälissä. Monet Internetissä laajalti käytetyt salausmenetelmät, kuten TLS ja PGP perustuvat julkisen avaimen salaukseen. 

Symmetrinen ja epäsymmetrinen (julkisen avaimen) salaus eroavat paitsi suorituskyvyn kannalta myös sopivien käyttökohteiden mukaan. Kun symmetrinen salaus soveltuu esimerkiksi tiedon salaamiseen julkisen avaimen salausta käytetään esimerkiksi erilaisissa protokollissa.

## Historia
Whitfield Diffie työskenteli Martin Hellmanin kanssa Diffie-Hellman avaintenvaihtoprotokollan parissa kun Diffie sai ajatuksen epäsymmetrisen avaimen käytöstä. Tätä ennen salaukseen käytettiin vain symmetrisiä avaimia, jossa salaaminen ja purkaminen olivat toistensa vastakohtia samalla avaimella. Epäsymmetrisessä salauksessa avaimet eivät ole identtisiä. Diffie julkaisi kuvauksen ajatuksestaan kesällä 1975, mutta vuoden loppuun mennessä ei ollut vielä löytynyt sopivaa yksisuuntaista matemaattista funktiota sitä varten. Avaintenvaihtoprotokolla esiteltiin vuonna 1976, mutta epäsymmetrisen salauksen ratkaisi toinen ryhmä. Ron Rivest kiinnostui Diffien ja Hellmanin artikkelista ja suostutteli Leonard Adlemanin sekä Adi Shamirin mukaan etsimään yksisuuntaista funktiota epäsymmetriseen salaukseen. Heinäkuussa 1977 Rivest sai läpimurron kolmikon työssä ja kirjoitti artikkelin, jossa esiteltiin RSA. Artikkeli julkaistiin vuonna 1978 *[[Communications of the ACM]]* -julkaisussa.

Englantilainen matemaatikko Clifford Cocks kuvasi julkisen avaimen salausta vastaavan algoritmin jo vuonna 1973 brittiläisen tiedusteluviraston GCHQ:n sisäisessä muistiossa. Työ julistettiin kuitenkin salaiseksi, eikä sitä paljastettu ennen vuotta 1997. Koska julkisen avaimen salaus vaatii enemmän suoritustehoa tietokoneelta sitä ei voinut hyödyntää tehokkaasti keksimisen aikana.

## Toiminta
### Epäsymmetrinen salaus
Epäsymmetrinen salaus on salausmenetelmä, jossa salaukseen käytetään eri avainta kuin salauksen purkamiseen. Sekä viestin lähettäjällä, että vastaanottajalla on oma julkinen avain ja oma yksityinen avain. Lähettäjä käyttää viestin salaamiseen vastaanottajan julkista avainta, jolloin viesti voidaan purkaa vain vastaanottajan yksityisellä avaimella. Purkuavainta ei voi päätellä salausavaimesta. Sen sijaan symmetrisessä salauksessa, viestin salaukseen ja sen purkamiseen käytetään samaa avainta, jonka säilyttäminen ja jakaminen käyttäjien kesken on ongelmallista. Julkisen avaimen salauksessa ei ole tätä vaikeutta ja julkiset avaimen voidaan ilmoittaa julkiseen hakemistoon.

Digitaalinen allekirjoitus on myös mahdollista epäsymmetrisen salauksen keinoin. Sen tarkoitus on varmistaa, että viestin lähettäjä on se, joka sanoo olevansa. Tällöin viestin lähettäjä salaa sen omalla yksityisellä avaimellaan ja vastaanottaja, tai kuka tahansa, joka on saanut haltuunsa lähettäjän julkisen avaimen, avaa viestin sillä. Jos viesti tällöin avautuu selväkieliseen muotoonsa voidaan olla varmoja, että lähettäjä on oikea. 

Jos lähettäjä haluaa sekä allekirjoittaa viestin, että salata sen, hän allekirjoittaa sen ensin omalla salaisella avaimellaan salaa vasta sitten vastaanottajan julkisella avaimella, juuri tässä järjestyksessä. Vastaanottaja sitten purkaa viestin ensin omalla salaisella avaimellaan ja sitten vielä lähettäjän julkisella avaimella. Koska vain lähettäjä voi tietää avainparinsa molemmat puoliskot, vain hän on voinut olla viestin allekirjoittaja. 

Kryptografinen tiiviste on keino nopeuttaa epäsymmetrisen salauksen tietokonekäsittelyä. Epäsymmetrisen salauksen salausfunktioita laskettaessa käytetään moduloaritmetiikkaa, joka vaatii tietokoneelta aikaa. Viestin käsittelyn nopeuttamiseksi käytetään apuna algoritmia, jolla lasketaan viestistä vakiomittainen tiiviste, joka allekirjoitetaan. Koska symmetrinen menetelmä salatessa ja purkaessa on paljon nopeampaa voidaan myös käyttää sitä satunnaisesti valitulla kertakäyttöisellä salausavaimella, ja salata se avain julkisen avaimen menetelmällä ja liittää viestiin. Tällaisella hybridijärjestelmällä toimivat esimerkiksi PGP ja TLS.

Yleisesti käytettyjä tiivistefunktioita ovat mm: SHA-1 (Secure Hash Algorithm 1), joka tuottaa 160 bittisen tiivisteen. SHA on käytössä muun muassa PGP:n ja SSH:n toteutuksissa. Siitä parannettu SHA-256 tuottaa 256 bittisen ja SHA-512 512 bittisen tiivisteen. MD5 (Message-Digest algorithm 5) tuottaa 128 bittisen tiivisteen. 

### Avainlukujen valinta julkisen avaimen salauksessa
Julkisen avaimen salausalgoritmeissa epäsymmetrinen lukupari valitaan vaikeasti ratkaistavan matemaattisen yhteyden (esimerkiksi tekijöihinjaon, kuten RSA:ssa tai diskreettien logaritmien, kuten ECC:ssä) perusteella. Avainten turvallisuuden ajatellaan perustuvan siihen, että hyvin suurten lukujen tekijöihin jako on erittäin työlästä. Ei voida kuitenkaan olla varmoja, etteikö tulevaisuudessa laskentamenetelmien kehittyessä löytyisi siihenkin ratkaisu. Kun lukupari on valittu, toinen luvuista voidaan julkaista, eikä se siis nykytiedon mukaan vaaranna salassa pidettävää lukua. 

## Julkisen avaimen salauksen turvallisuus
#### Julkisen avaimen luotettavuus
Vaikka julkisen avaimen salaus ei edellytä luotettua yhteyttä salaisen avaimen välittämiseen, ongelmana on julkisen avaimen luotettavuus: avaimen käyttäjän luottamus nojaa siihen, että avain todella kuuluu viestintäkumppanille, ja ettei avaimeen ole kajottu. Aina on olemassa mahdollisuus, että luotettu julkinen avain onkin kolmannen osapuolen tiedossa ja se osapuoli "man in the middle" käyttää sitä valheellisesti toisen nimissä. Täydellistä keinoa julkisen avaimen luotettavuuden varmistamiseen ei tunneta. Ongelmaa lievitetään useimmiten käyttämällä julkisten avainten hallintajärjestelmää (, lyh. PKI), jossa jokin tunnettu kolmas osapuoli (*varmentaja*) vastaa hallussaan olevien julkisten avainten ja niiden tunnistetietojen (*varmenne*) autenttisuudesta omalla digitaalisella allekirjoituksellaan. Varmenteet ovat tyypillisesti voimassa useita vuosia kerrallaan, ja kaikki varmennettuihin julkisiin avaimiin liittyvät salaiset avaimet on pidettävä salassa koko sen ajan.  Toisten julkisia avaimia voi myös varmentaa avainten allekirjoitustilaisuudessa kasvokkain. Menetelmä on kuitenkin hidas ja vaivalloinen koska osallistujat joutuvat matkustamaan tapaamista varten.

Suomessa Luottamusverkosto on keskitettyihin varmentajiin perustuva PKI menetelmä, jota hallinnoi Kyberturvallisuuskeskus. Luottamusverkostoon kuuluvat ne toimijat, jotka noudattavat siihen säädettyä lakia ja ovat tehneet toiminnasta lain mukaisen ilmoituksen. Laki määrittelee yksityiskohtaisesti palvelun laadun ja jopa hinnan. Lain noudattamista myös valvotaan. 

PGP:ssä on varmennejärjestelmän lisäksi käytössä ns. luottamusverkko (), joka keskitetyn varmentajan sijaan perustuu hajautettuun varmentajien joukkoon. Kuka tahansa käyttäjä voi kuulua tähän verkkoon, tai useampaankin. Käyttäjä valitsee itse luotettavina pitämänsä avaimenhaltijat, joiden avulla varmistaa muiden julkisten avainten autenttisuus. 

#### Kansalaisvarmenne Suomessa
Poliisin myöntämässä suomalaisessa henkilökortissa on valmiina kansalaisvarmenne, jota ylläpitää Digi- ja väestötietovirasto. Sillä voidaan hoitaa sähköiseen asiointiin liittyviä sähköisiä allekirjoituksia, jotka ovat juridisesti täysin kelvollisia ja kiistämättömiä. Kansalaisvarmenteen käyttöön tarvitaan henkilökortin lisäksi tietokone, kortinlukijalaite ja -ohjelmisto. Kortin kansalaisvarmenne on aktivoitava itse sen mukana saaduilla tunnuksilla, jotta se alkaa uudessa kortissa toimia. Kansalaisvarmenne on lähes mahdoton murtaa, koska sen pituus on 2048 bittiä. Suomen lain mukaan kortteja valmistava tehdaskaan ei saa säilyttää korttien tietoja niiden valmistumisen jälkeen. Jos kortti katoaa tai joutuu vääriin käsiin se on peruutettava aina saatavilla olevassa palvelussa.

#### Mobiilivarmenne
Matkapuhelimet ja monet muut mobiililaitteet sisältävät SIM-kortin, johon voidaan tallentaa mobiilivarmenne. Se on valtion takaama laatuvarmenne kuten sähköisellä henkilökortilla. varmenteen voi saada puhelinoperaattorilta, joka tunnistaa hakijan luotettavalla menetelmällä. Mobiilivarmenteessa on kaksi avainparia: toinen tunnistautumiseen ja toinen allekirjoitukseen. Avainparien käyttö on suojattu käyttäjän omalla PIN-koodilla, jota on käytettävä joka kerta avaimia käytettäessä. Asiakas on vastuusa mobiilivarmenteensa käytöstä, huolellisesta säilytyksestä ja myös peruuttamisesta tarvittaessa aivan samoin kuin sähköisestä henkilökortista. 

#### Numeronmurskaus
Kaikki julkisen avaimen salausalgoritmit ovat määritelmällisesti alttiita raakaan laskentatehoon nojaaville salauksenmurtomenetelmille, joissa kokeillaan kaikkia mahdollisia avaimia järjestelmällisesti. Vuonna 1999 käytettiin tuhansien PC-tietokoneiden verkkoa ja muutamassa kuukaudessa jaettiin tekijöihin 512 bittinen RSA-avain. Vuonna 2003 on esitelty luonnos laitteesta, joka maksaisi n. 10 000 dollaria ja tekisi sen 10 minuutissa. 1024 bittisen RSA-avaimen murtaisi 10 miljoonaa maksava, saman konseptin laite vuodessa. Jos kokeiltavien avaimien joukkoa voidaan kohdentaa sopivalla hyökkäysmenetelmällä, tarvitaan paljon vähemmän laskenta-aikaa. Joillekin julkisen avaimen salausalgoritmeille (esimerkiksi RSA:lle ja ElGamalille) on jo olemassa tunnettuja hyökkäystapoja, jotka ovat paljon järjestelmällistä kokeilua nopeampia. Salakielisanoma voidaan siepata ja valita joukko selväkielisanomia ja salata ne kaikki RSA:lla vastaanottajan julkisella avaimella ja verrata näin saatuja salakielisanomia murrettavaan salaikielisanomaan. Tätä sanotaan valittujen sanomien hyökkäykseksi. Sitä vaikeutetaan lisäämällä selväkieliseen sanomaan satunnaista tekstiä ennen salausta. Sähköposti kannattaa aina allekirjoittaa ennen salausta. Jos se salataan ensin ja allekirjoitetaan sitten voidaan sanoma siepata ja vaihtaa allekirjoitus ja lähettää edelleen. Matematiikassa tapahtuvien keksintöjen myötä laskenta-ajat voivat entisestään lyhentyä. 

#### Käyttäjän uhkakuvat
Perinteinen sähköposti on täysin salaamatonta. Viestinnän luottamuksellisuus voidaan varmistaa allekirjoittamalla ja salaamalla se ennen lähettämistä. Allekirjoittamiseen tulee käyttää varmenteisiin perustuvaa allekirjoitusmenetelmää. Jos tietokone jätetään auki ja valvomatta kuka tahansa voi tietenkin lukea sen viestit. Tietokone voidaan myös varastaa ja se on sitä varten suojattava. Tietokoneeseen voidaan tunkeutua verkon kautta ja saastuttaa se vakoiluohjelmalla, jolloin koko sen sisältö on helposti tutkittavissa. Lähettäjä ja vastaanottaja ovat tavallisesti organisaationsa lähiverkossa, jonka liikenne on kaikkien siinä verkossa olevien nähtävissä ja sopivalla analysointiohjelmalla siitä voidaan poimia sähköposteilta näyttävät viestit. Organisaation palomuuri voi, lokiasetuksista riippuen, kirjata sähköpostiliikenteen tiedot, jopa sisältöineen, ja sen voi ylläpitohenkilöstö saada näkyviinsä. Lähettäjän ja vastaanottajan operaattorit näkevät kaiken asiakkaiden liikenteen, jota on teknisesti mahdollista seurata. 

## Lähteet