Turvallinen tietoliikenneyhteys

Videolla kerrotaan, miten laitteiden ja sovellusten välistä tiedonsiirtoa halutaan suojata nyt ja tulevaisuudessa. Esineiden internetin (IoT) aika on vasta aluillaan ja villeimmissä suunnitelmissa jokainen kodin laite on yhdistetty tietoliikenneverkkoon. Tämän lisäksi esimerkiksi talotekniikan monitorointi ja ohjaaminen voivat siirtyä ulkoisiksi palveluiksi. Tällöin esimerkiksi palveluntarjoaja voi viilentää huoneistoa, kun sähkön tai energian hinta on kalleimmillaan. Tämä tuottaisi kuluttajalle pienemmän laskun silloin, kun sähkön tai energian hinnassa on suurta vaihtelua.

Olisi kuitenkin erittäin haitallista tai jopa vaarallista, jos yhteys palveluntarjoajan ja kotien välillä murrettaisiin. Tällöin jokin ulkopuolinen taho voisi tulkita tai jopa väärentää ohjausviestejä. Tällöin voisi käydä niin, että asuntoja lämmitetään ja autoja ladataan juuri silloin, kun sähkön hinta on korkeimmillaan. Jos talotekniikka on viety erittäin pitkälle, pahantahtoinen taho voisi myös esimerkiksi sammuttaa valot illalla ja sytyttää ne keskellä yötä.

Digitalisaatio edistyy ja yhä kasvava määrä laitteita ja palveluita on digitaalisessa muodossa. Usein ne ovat myös tietoliikenneverkossa. Katsotaan nyt yhtä tapaa suojata tietoliikenneyhteyksiä TLS-protokollalla (engl. Transport Layer Security protocol). Voit lukea protokollan kuvauksen täältä.


Transport Layer Security (TLS)

Olemme kurssin aikana oppineet:

  • Mitä ovat salainen avain ja julkinen avain

  • Miten luodaan yhteinen salaisuus

  • Miten luodaan vahva digitaalinen allekirjoitus

  • Mitä ovat varmenteet ja varmenneketjut

Kaikkia näitä kryptografian ominaisuuksia käytetään TLS-protokollassa. TLS-protokollan voi jakaa kahteen osaan, kättelyprotokollaan ja varsinaiseen hyötykuorman siirron suojaamiseen. Kryptografian näkökulmasta TLS-kättely on kiinnostava aihe, kun taas hyötykuorman suojaaminen on käytännössä vain jo sovittujen salaimien ja avaimien käyttöä.


TLS-kättely

../_images/l9_tls_handshake.png

Kun kaksi osapuolta muodostavat yhteyden toisiinsa, he aloittavat TLS-kättelyprosessin heti yhteyden muodostamisen alussa. Tämän aikana osapuolet mm. sopivat käytettävät kryptografiset algoritmit, vaihtavat avaimia Diffie–Hellman-avaintenvaihtoprotokollan avulla ja varmentavat molemman osapuolen autenttisuuden. Tämä osa on meille kryptografian näkökulmasta kiinnostava.

Seuraava yksinkertaistettu kaavakuva havainnollistaa TLS 1.3 -kättelyn eri vaiheet. Kaaviossa on paljon tuttuja elementtejä kurssin edellisistä opetusmoduuleista.

../_images/L9_TLS.png

Jokaisella yhteyskerralla suoritetaan seuraavat asiat. Huomaa, että tämä on valtavasti yksinkertaistettu selitys:

  1. Asiakasohjelma (engl. client) luo yheyskohtaisen avainparin tai avainpareja. Asiakasohjelma voi olla esimerkiksi tietokoneesi nettiselain.

    • Avaimia tarvitaan yhteisen salaisuuden muodostamiseen ja digitaaliseen allekirjoittamiseen.

    • Jaettu salaisuus luodaan Diffie–Hellman-protokollalla. Usein käytetään elliptisten käyrien DH:ta eli ECDH-menetelmiä.

  2. Asiakasohjelma lähettää niin sanotun ClientHello-viestin palvelimelle. Viesti sisältää:

    • Kertakäyttönumeron N, joka on yleensä näennäissatunnaisluku.

    • Listan salaimista, joille avainparit on luotu. Yhden salaimen sijasta lähetetään yleensä useampia, koska palvelimeen ei välttämättä ole asennettu kaikkia salaimia.

    • Listan juuri lasketuista julkisista avaimista.

    • Listan tuetuista TLS-protokollan versioista. Yleensä emme halua tukea kuin TLS 1.3 -versiota, mutta poikkeuksiakin valitettavasti on.

  3. Palvelin vastaanottaa ”ClientHello” -viestin ja reagoi sen sisältöön:

    • Palvelin tarkistaa, pystyykö se tukemaan vaadittua TLS-protokollaa ja valitsee turvallisimman protokollan.

    • Palvelin tarkistaa, pystyykö se tukemaan jotain asiakasohjelman ehdottamaa salainta.

    • Palvelin valitsee parhaimman saatavilla olevan salaimen.

  4. Palvelin laskee jaetun salaisuuden.

    • Palvelin laskee DH-menetelmällä (eli omalla salaisella avaimella ja vastaanottamallaan julkisella avaimella) jaetun salaisuuden.

    • Lisäksi palvelin laskee osana varmistusta tiivisteen saamastaan julkisesta avaimesta ja omasta julkisesta avaimestaan.

    • Palvelin salaa osan seuraavaksi asiakasohjelmalle lähetettävästä datasta.

  5. Palvelin lähettäää asiakasohjelmalle ServerHello -viestin, jonka sisältö on seuraava:

    • Palvelin kertoo, minkä protokollan ja salausmenetelmän se on valinnut.

    • Palvelin lähettää oman julkisen avaimensa varmenteessa, jonka jokin varmentaja on allekirjoittanut.

    • Palvelin lähettää laskemansa tiivisteen allekirjoitettuna.

    • Tämän jälkeen viestintä on salattua.

    • Palvelin lähettää salattuna oman sertifikaattinsa.

    • Palvelin lähettää käyttämänsä kertakäyttöluvun \(N\).

  6. Asiakasohjelma vastaanottaa ”ServerHello”-viestin ja tarkistaa, että palvelimen lähettämä varmenne on kunnossa.

  7. Tämän jälkeen asiakasohjelma tarkistaa allekirjoituksen.

  8. Asiakasohjelma laskee jaetun salaisuuden ja alkaa käsitellä ”ServerHello”-viestin loppuosaa.

  9. Asiakas suorittaa muitakin tarkistuksia, mutta ne jätetty pois tästä yksinkertaistetusta selityksestä.

On huomionarvoista, että asiakasohjelmalta ei vaadita varmennetta eli sertifikaattia. Lisäksi yhteyden muodostaminen vaatii vain yhden edestakaisen neuvottelun. Jälkimmäinen on suuri etu vanhoihin TLS:n versioihin nähden, sillä niissä edestakaisia neuvotteluja oli enemmän.


Koska TLS on erittäin laajasti käytössä, protokollan sunnittelussa joudutaan ottamaan huomioon vanhat järjestelmät, joissa on käytössä protokollan aikaisempi versio. Tietokoneiden väliseen kättelyyn käytetyn ajan lyhentäminen on myös tärkeä tavoite protokollan kehittämisessä. Turvallisuudesta ei kuitenkaan saa tinkiä heppoisin perustein, minkä takia TLS-protokolla on erinomainen esimerkki siitä, miten kryptografiaa soveltaessa alan osaajien täytyy punnita eri näkokulmia kehitystyössään.


Mitkä seuraavista väittämistä pitävät paikkansa?


Mitkä seuraavista väittämistä pitävät paikkansa?



Yhteenveto

Nyt näit vilauksen yhdestä kryptografian käyttökohteesta tosielämässä. Jos et tiedä mitä TLS:n versiota selaimesi käyttää, voit napsauttaa lukkosymbolia selaimesi osoitepalkissa ja tarkistaa, onko yhteyttäsi suojaamassa TLS 1.3 vai TLS 1.2 -protokolla.

Seuraavaksi käsittelemme sitä, kuinka kvanttilaskenta aiheuttaa harmaita hiuksia kryptologeille.

Palautusta lähetetään...