Varmenneviranomaiset ovat yksi Internetin turvallisuuden tärkeimmistä kulmakivistä. Varmentaja on joku, johon kaikki luottavat, alussa, kun kukaan ei luota kehenkään muuhun. Tämän varmenteen myöntäjän (a.k.a CA) tehtävänä on tällöin varmistaa, että palvelimien ja asiakkaiden välille syntyy luottamus, ennen kuin ne aloittavat yhteydenpidon Internetin välityksellä. varmenteen myöntäjä on tärkeä paitsi selainten ja verkkosovellusten käyttämässä HTTPS:ssä myös salatuissa sähköposteissa, allekirjoitetuissa ohjelmistopäivityksissä, VPN-verkoissa ja paljon, paljon muussa. Otamme prototyyppisen esimerkin HTTPS:stä ja tutustumme CA:han tässä erityisessä yhteydessä. Tosin voit ekstrapoloida tuloksen mihin tahansa muuhun ohjelmistokokonaisuuteen.
Internet on epäluotettava viestintäkanava. Kun lähetät tai vastaanotat tietoja vanhalta HTTP-sivustolta http://www.example.com selaimellasi, paketeille voi tapahtua paljon asioita kesken matkan.
- Pahantekijä voi siepata viestinnän, kopioida tiedot itselleen, ennen kuin lähettää ne uudelleen kanavalla kohti sinua tai palvelinta, jonka kanssa olit yhteydessä. Kummankin osapuolen tietämättä tieto on vaarantunut. Meidän on varmistettava, että viestintä on yksityistä.
- Pahantekijä voi muokata tietoja, kun niitä lähetetään kanavan kautta. Bob olisi voinut lähettää viestin ”x”, mutta Alice saisi Bobilta viestin ”y”, koska huono toimija sieppasi viestin ja muokkasi sitä. Toisin sanoen viestin eheys on vaarantunut.
- Viimeiseksi, ja mikä tärkeintä, meidän on varmistettava, että henkilö, jonka kanssa keskustelemme, on todellakin se, joka hän sanoo olevansa. Palataan takaisin example.com-verkkotunnukseen. Miten voimme varmistaa, että palvelin, joka vastasi meille, on todellakin www.example.com:n laillinen haltija? Verkon missä tahansa vaiheessa sinut voidaan ohjata harhaan toiselle palvelimelle. Jossain sijaitsevan DNS-palvelimen tehtävänä on muuntaa verkkotunnus, kuten www.example.com, IP-osoitteeksi julkisessa internetissä. Selaimellasi ei kuitenkaan ole mitään keinoa tarkistaa, että DNS on kääntänyt IP-osoitteen.
Kaksi ensimmäistä ongelmaa voidaan ratkaista salaamalla viesti ennen sen lähettämistä Internetin kautta palvelimelle. Toisin sanoen siirtymällä HTTPS:ään. Viimeinen ongelma, identiteettiongelma, on kuitenkin se, jossa varmentaja tulee kuvaan mukaan.
Salattujen HTTP-istuntojen aloittaminen
Pääongelma salaamattomalla kanavalla tapahtuvassa salatussa tiedonsiirrossa on: ”Miten aloitamme sen?”
Hyvin ensimmäiseksi kaksi osapuolta, selaimesi ja palvelimesi, vaihtaisivat keskenään salausavainten vaihdon, joita vaihdetaan turvattoman kanavan yli. Jos termi avaimet ei ole sinulle tuttu, ajattele niitä todella pitkänä satunnaisesti generoituna salasanana, jolla tietosi salataan ennen kuin ne lähetetään turvattoman kanavan yli.
Jos avaimet lähetetään turvattoman kanavan yli, kuka tahansa voi kuunnella sitä ja vaarantaa HTTPS-istuntosi turvallisuuden tulevaisuudessa. Lisäksi miten voimme luottaa siihen, että palvelimen, joka väittää olevansa www.example.com, lähettämä avain on todellakin kyseisen verkkotunnuksen todellinen omistaja? Voimme olla salatussa viestinnässä pahantahtoisen osapuolen kanssa, joka on naamioitunut lailliseksi sivustoksi, emmekä huomaa eroa.
Identiteetin varmistamisen ongelma on siis tärkeä, jos haluamme varmistaa turvallisen avaintenvaihdon.
Varmenteiden myöntäjät
Olet ehkä kuullut LetsEncryptistä, DigiCertistä, Comodosta ja muutamasta muusta palvelusta, jotka tarjoavat TLS-varmenteita toimialueen nimelle. Voit valita tarpeisiisi sopivan. Nyt verkkotunnuksen omistavan henkilön/organisaation on todistettava jollakin tavalla varmentajalleen, että heillä todellakin on määräysvalta verkkotunnukseen. Tämä voidaan tehdä joko luomalla DNS-tietue, jossa on varmentajan pyytämä yksilöllinen arvo, tai lisäämällä verkkopalvelimeesi tiedosto, jonka sisällön varmentaja määrittelee, jolloin varmentaja voi lukea tämän tiedoston ja vahvistaa, että olet verkkotunnuksen oikea omistaja.
Sitten neuvottelet varmentajan kanssa TLS-varmenteesta, jonka tuloksena verkkotunnuksellesi myönnetään yksityinen avain ja julkinen TLS-varmenne. Yksityisellä avaimellasi salatut viestit voidaan sitten purkaa julkisella sertifikaatilla ja päinvastoin. Tämä tunnetaan nimellä epäsymmetrinen salaus
Asiakasselaimilla, kuten Firefoxilla ja Chromella (joskus jopa käyttöjärjestelmällä), on tietoa varmenteiden myöntäjistä. Tämä tieto on leivottu selaimeen/laitteeseen alusta alkaen (eli kun ne asennetaan), joten ne tietävät, että ne voivat luottaa tiettyihin varmenteiden myöntäjiin. Kun käyttäjät yrittävät muodostaa HTTPS-yhteyden osoitteeseen www.example.com ja näkevät esimerkiksi DigiCertin myöntämän varmenteen, selain voi tarkistaa sen paikallisesti tallennettujen avainten avulla. Itse asiassa tähän liittyy vielä muutama välivaihe, mutta tämä on hyvä yksinkertaistettu yleiskuva siitä, mitä tapahtuu.
Nyt kun www.example.com tarjoamaan varmenteeseen voidaan luottaa, sen avulla neuvotellaan yksilöllinen symmetrinen salausavain, jota käytetään asiakkaan ja palvelimen välillä koko istunnon ajan. Symmetrisessä salauksessa yhtä avainta käytetään sekä salaukseen että salauksen purkamiseen, ja se on yleensä paljon nopeampi kuin sen epäsymmetrinen vastine.
Nuanssit
Jos ajatus TLS:stä ja Internetin tietoturvasta vetoaa sinuun, voit perehtyä aiheeseen syvällisemmin tutustumalla LetsEncryptiin ja heidän ilmaiseen TLS CA:nsa. Tässä koko touhussa on paljon enemmän minuuttitietoa kuin edellä on mainittu.