Mitä salaus tarkoittaa ja miten se toimii?

Nykyään salausta käytetään kaikkein yksinkertaisimmissakin sovelluksissa. Koska tietojen hakkeroiminen verkossa on erittäin helppoa, salausmenetelmät ovat parhaita työkaluja tietojen suojaamiseen.

Useimmat sovellukset ja ohjelmistot käyttävät jonkinlaista salausta. Parhaat VPN:t käyttävät AES-salausta 256-bittisillä avaimilla, joka on yksi syy sille, miksi VPN:t ovat paras tapa suojata kaikkea toimintaa verkossa.

Muu suositut sovellukset, kuten WhatsApp ja Gmail käyttävät myös erilaisia salausmenetelmiä.

Vaikka salaustekniikat ovat vahvasti läsnä arjessa, useimmat eivät tiedä, miten ne toimivat.

Auttaaksemme ymmärtämään salauksia paremmin, esittelemme käytännön esimerkin.

Avoimien kanavoiden ongelma

Otetaan esimerkiksi tavallinen chatti netissä, jossa käyttäjät kommunikoivat toistensa kanssa tekstin välityksellä. Kuinka voimme rakentaa turvallisen chatin, jossa viestit salataan?

Ensimmäinen toteutustapa on yksinkertainen TCP-pohjainen yhteyskanava. Koska tästä puuttuu suojaus kokonaan, kaikki käyttäjien lähettämät viestit ovat haavoittuvaisia hyökkäyksille.

Näin ollen Alicen ja Bobin lähettäessä toisilleen viestejä, hyökkääjät voivat yksinkertaisesti tulla heidän väliinsä ja salakuunnella keskustelua. Tämä tunnetaan termillä “Mies välissä -hyökkäys” (Man-in-the-middle attack). Hakkerit voivat myös peukaloida viestejä ja reitittää niitä uudelleen.

Tämä on mahdollista siksi, että oletusyhteyskanava välittää viestit salaamattomassa muodossa, eli pelkkänä tekstinä. Sama pätee kaikkeen HTTP-liikenteeseen, joka tapahtuu avoimissa Wifi-verkoissa. Tarvitsemme siis selkeästi paremman järjestelmän.

Symmetrinen salaus

Symmetrinen salaus käyttää algoritmia, joka muuntaa alkuperäisen, salaamattoman tekstin salatuksi salatekstiksi käyttämällä salausavainta. Vastaanottaja käyttää samaa avainta muuntaakseen salatekstin takaisin salaamattomaan, tavalliseen tekstimuotoon. Käytetäänpä tätä nyt sovelluksessamme.

Kun Alice haluaa lähettää Bobille viestin, hän salaa sen symmetrisellä avaimella. Kun Bob vastaanottaa sen, hän käyttää samaa avainta viestin salauksen poistamiseen. Ilman tätä avainta hakkerit eivät voi päästä käsiksi näiden kahden käyttäjän väliseen salattuun viestintään, jolloin keskustelu säilyy luottamuksellisena.

Yleensä symmetrinen avain luodaan istuntokohtaisesti, eikä sitä voi käyttää myöhemmissä viestittelyissä. Kutsumme tätä istuntoavaimeksi.

Tällä lähestymistavalla on kuitenkin joitakin puutteita:

  1. Skaalattavuus: Ratkaisumme ei ole skaalattavissa. Jos 1000 käyttäjää haluaa keskustella toistensa kanssa, jokainen heistä tarvitsisi 999 erilaista avainta, jotta yhteyskanava olisi turvallinen.
  2. Avaintenjakelu: Oletimme, että symmetrinen avain on molempien osapuolien käytettävissä, mutta miten henkilöt ylipäätään saavat käsiinsä kyseisen avaimen? Jos Alice luo symmetrisen avaimen (istuntoavain) ja lähettää sen Bobille, hyökkääjä voi siepata sen ja poistaa salaukset tulevalta yhteydenpidolta.

Mikä on siis seuraava askel?

Epäsymmetrinen salaus

Epäsymmetrinen salaus käyttää kahta avainta – yksityistä ja julkista. Kun salaamaton teksti salataan julkisella avaimella, salauksen voi poistaa ainoastaan sitä vastaavalla yksityisellä avaimella. Vastaava pätee myös toisinpäin.

Tämä auttaa meitä kiertämään kahden symmetrisen avaimen ongelman. Epäsymmetrinen salaus symmetristä salausta hitaampi, joten yleensä niitä käytetään yhdessä. Katsotaanpa, miten se onnistuu:

Jokaisella käyttäjällä on avainpari, joka koostuu julkisesta ja yksityisestä avaimesta. Julkinen avain on kaikkien tiedossa, mutta yksityinen avain on luottamuksellinen, ja sen haltijan suojaama.

Kun Alice haluaa lähettää viestin Bobille, hän luo symmetrisen istuntoavaimen. Tämän jälkeen hän salaa sen Bobin julkisella avaimella. Koska Bob omistaa vastaavan yksityisen avaimen, vain hän voi purkaa viestin salauksen ja saada istuntoavaimen.

Tästä eteenpäin istuntoavainta voidaan käyttää sekä salaamaan viestit että purkamaan salaukset viesteiltä, joita nämä kaksi henkilöä lähettävät toisilleen. Tämä ratkaisee avaintenjakeluun liittyvän ongelman hidastamatta prosessia, sillä hitaampaa epäsymmetristä salausta käytetään vain alkuperäisessä kättelyssä.

Olemme ratkaisseet samalla myös skaalautuvuuteen liittyvän ongelman, koska kaikki tarvitsevat vain yhden julkisesta ja yksityisestä avaimesta muodostuvan avainparin viestiäkseen toisilleen.

Nyt järjestelmä on parantunut merkittävästi, mutta se ei ole vieläkään täysin suojattu. Meillä on edelleen seuraavat ongelmat:

  1. Todentaminen: Käytämme Bobin julkista avainta lähtökohtana, mutta miten me saimme tämän avaimen? Alun perin vastaanottamamme avain voi olla lähtöisin joko Bobilta tai hyökkääjältä, joka esiintyy Bobina. Näin ollen vaikka viestittelemme turvallisesti, saatamme kommunikoida väärän henkilön kanssa.
  2. Tietojen eheys: Viestiä voidaan muuntaa tiedonsiirron aikana. Haluamme varmistaa, että tietoja ei ole peukaloitu.

Sertifikaatit ja digitaaliset allekirjoitukset

Todentaminen vaatii luotettavan järjestelmän. Luotettu sertifikaatti auktoriteetti (CA, cerificate authority) varmistaa, että julkinen avain kuuluu tietylle henkilölle. Jokainen järjestelmän käyttäjä rekisteröi digitaalisen sertifikaatin kyseisen sertifikaatti auktoriteetin kanssa. Tämä sisältää julkisen avaimen sekä tiedot omistajan henkilöllisyydestä.

Kun Alice haluaa siis viestitellä Bobin kanssa, hän voi varmistaa CA:lta, että vastaanotettu julkinen avain todella kuuluu Bobille. HTTPS toimii vastaavalla periaatteella Internetissä. Yksi pääsertifikaatti liittyy useisiin alasertifikaatteihin digitaalisilla allekirjoituksilla (selitämme tämän tarkemmin alempana).

Miten voimme siis tietää, että saamamme sertifikaatti on lähtöisin alkuperäiseltä CA:lta, eikä hyökkääjältä? Yleensä luotetun CA:n pääsertifikaatit pysyväiskoodataan selaimessa, mikä antaa meille luotettavan pohjan.

Tietojen eheyteen liittyvä ongelma voidaan ratkaista käyttämällä digitaalisia allekirjoituksia (joita ei tule sekoittaa digitaalisiin sertifikaatteihin).

Kun Alice haluaa lähettää viestin Bobille, hän luo ensin istuntoavaimen ja salaa sen Bobin julkisella avaimella. Kutsutaan tätä datapakettia nimellä PART1. Seuraavaksi Alice luo hajautetun viestin käyttämällä jotakin saatavilla olevista hajautusalgoritmeista (MD5/SHA256). Viestin hajautuksessa sen pituus muunnetaan yksisuuntaisesti siten, että se on pituudeltaan kiinteä vaihtelevan pituisten tavujen sijaan.

Alkuperäistä viestiä ei voi saada hajautusarvosta, ja on tilastollisesti epätodennäköistä, että kahdella viestillä olisi sama hajautusarvo.

Luotuaan hajautuksen, Alice salaa sen yksityisellä avaimellaan. Tätä kutsutaan digitaaliseksi allekirjoitukseksi, koska sen avulla voidaan tarkistaa, että viesti on peräisin Alicelta eikä sitä ole peukaloitu.

Digitaalinen allekirjoitus ja alkuperäinen viesti salataan tämän jälkeen istuntoavaimella. Kutsutaan tätä nimellä PART2. Nyt meillä on nämä:

PART1 = BOBIN_JULKINEN_AVAIN -> (ISTUNTOAVAIN)

PART2 = ISTUNTOAVAIN -> (VIESTI + DIGITAALINEN_ALLEKIRJOITUS)

Alice lähettää PART1 ja PART2 Bobille. Koska Bob omistaa yksityisen avaimen, vain Bob voi purkaa PART1:n salauksen ja päästä käsiksi ISTUNTOAVAIMEEN.

Seuraavaksi Bob käyttää kyseistä istuntoavainta purkaakseen PART2:n salauksen, ja noutaakseen viestin sekä digitaalisen allekirjoituksen. Tämän jälkeen Bob käyttää Alicen julkista avainta purkaakseen salauksen digitaaliselta allekirjoitukselta ja noutaakseen hajautetun viestin. Bob laskee hajautetun VIESTIN ja vertaa sitä aiemman vaiheen vastaavaan.

Jos hajautukset täsmäävät, tietojen eheys on säilytetty eikä niitä ole peukaloitu.

Kuten voit nähdä, olemme nyt rakentaneet täysin turvallisen ekojärjestelmän.

Käyttämällä sertifikaatteja ja digitaalisia allekirjoituksia voimme luoda salatun todennusjärjestelmän, joka on nopea, suojattu, luottamuksellinen ja skaalattava.

Nyt kun tiedät, miten salaus toimii, katso suosittelemamme VPN:t, jotta voit nähdä sen itse toiminnassa.

Oliko tästä apua? Jaa se!
Jaa Facebookissa
Twiittaa tämä