selitetty.com

Miten netti toimii

HTTPS ja varmenteet: mitä lukko osoiterivillä tarkoittaa

Lukko osoiterivillä kertoo salatusta yhteydestä, ei sivuston rehellisyydestä. Näin toimivat TLS-kättely, varmentaja, luottamusketju ja varmennevirheet.

Lyhyt vastaus

Lukko tarkoittaa, että selain sai palvelimelta kelvollisen varmenteen ja muodosti sen avulla salatun yhteyden juuri siihen verkkotunnukseen, joka osoiterivillä lukee. Se ei kerro mitään siitä, kuka verkkotunnuksen omistaa tai onko sivusto rehellinen. Huijaussivustolla on nykyään käytännössä aina lukko, koska varmenteen saa maksutta muutamassa minuutissa. Lukko on siis vähimmäisvaatimus, ei laatuleima.

Sisällys
  1. Kolme asiaa, jotka HTTPS todistaa
  2. Mitä HTTPS ei piilota
  3. TLS-kättely yksinkertaistettuna
  4. Varmentaja ja luottamusketju
  5. Mitä varmenne oikeasti todistaa
  6. Varmennevirheet ja mitä niistä pitäisi päätellä
  7. HSTS: kun selain kieltäytyy jatkamasta
  8. Julkinen wifi: mitä HTTPS ratkaisi ja mitä jäi
  9. Mitä tästä seuraa arjessa
  10. Usein kysytyt kysymykset
  11. Lähteet ja lisälukemista

Lukko osoiterivillä tarkoittaa yhtä asiaa: selain sai palvelimelta varmenteen, joka kelpaa juuri sille verkkotunnukselle joka osoiterivillä lukee, ja yhteys sen palvelimen kanssa on salattu. Se ei tarkoita, että sivusto olisi rehellinen, että sen takana olisi oikea yritys tai että sinne kirjoittamasi tiedot olisivat turvassa sen jälkeen kun ne ovat perillä.

Ero on olennainen, koska lukon merkitys on kääntynyt päinvastaiseksi kuin 2010-luvun alussa. Silloin salattu yhteys oli harvinainen ja siksi erottava merkki. Nykyään varmenteen saa maksutta ja automaattisesti muutamassa minuutissa, joten se on myös rikollisilla. Selaimet ovat reagoineet poistamalla vihreät korostukset ja siirtymällä siihen, että varoitus näytetään vain silloin kun salausta ei ole.

Kolme asiaa, jotka HTTPS todistaa

HTTPS on tavallinen HTTP-protokolla ajettuna TLS-salauksen sisällä. TLS antaa kolme takuuta, jotka kannattaa pitää erillään toisistaan.

Luottamuksellisuus
Liikenteen sisältöä ei voi lukea matkalta. Reitittimet, operaattori ja julkisen wifin ylläpitäjä näkevät vain salattua tavaraa.
Eheys
Sisältöä ei voi muuttaa matkalla huomaamatta. Jokainen viesti on varustettu tarkisteella, ja muutettu viesti hylätään.
Palvelimen tunnistus
Selain varmistuu siitä, että toisessa päässä on osoiterivin verkkotunnuksen haltija eikä joku muu.

Kolmas kohta on se, joka useimmiten ymmärretään väärin. Tunnistus koskee verkkotunnusta, ei yritystä, sivuston sisältöä eikä sen aikeita. Jos avaat osoitteen esimerkkipankki-tunnistus.example, HTTPS todistaa uskollisesti, että olet yhteydessä juuri siihen huijaussivustoon johon aioitkin.

Mitä HTTPS ei piilota

Salaus ei koske kaikkea, mitä yhteydestä syntyy. Ulkopuolinen tarkkailija näkee edelleen kohdepalvelimen IP-osoitteen, yhteyden ajankohdan ja keston sekä siirretyn datan määrän. Useimmissa yhteyksissä hän näkee myös verkkotunnuksen, koska selain kertoo sen kättelyn alussa selkokielisenä, jotta sama palvelin osaa valita oikean varmenteen useiden sivustojen joukosta.

Lisäksi nimen selvitys tapahtuu ennen salausta. Jos nimipalvelukyselyt kulkevat salaamattomina, ne paljastavat vierailemasi sivustot riippumatta siitä, että itse yhteys on HTTPS. Tämä on yksi harvoista kohdista, joissa VPN-yhteydestä on mitattavaa hyötyä: se siirtää sekä nimikyselyt että kohdeosoitteet paikallisverkon näkyvistä. Se ei kuitenkaan poista niitä, vaan siirtää tiedon VPN-palvelun nähtäväksi.

TLS-kättely yksinkertaistettuna

Kättely on se hetki, jossa kaksi tuntematonta osapuolta sopivat yhteisestä salaisuudesta julkisen verkon yli. TLS 1.3:ssa se etenee karkeasti näin.

  1. Selain avaa keskustelun. Se kertoo, mitä TLS-versioita ja salausmenetelmiä se tukee, mihin verkkotunnukseen se on menossa, ja lähettää mukana oman osuutensa avaintenvaihdosta.
  2. Palvelin vastaa ja lähettää varmenteen. Varmenne sisältää palvelimen julkisen avaimen, sen verkkotunnukset joille varmenne kelpaa, voimassaoloajan ja myöntäjän allekirjoituksen.
  3. Palvelin allekirjoittaa kättelyn. Se tekee yksityisellä avaimellaan allekirjoituksen siihenastisesta keskustelusta. Vain varmenteessa olevan julkisen avaimen pari kykenee tähän, joten allekirjoitus todistaa, että palvelin todella hallitsee varmennetta eikä vain kopioinut sitä.
  4. Selain tarkistaa varmenteen. Se seuraa allekirjoitusketjua ylöspäin luotettuun juureen, tarkistaa voimassaoloajan, verkkotunnuksen ja peruutustiedot.
  5. Molemmat laskevat saman istuntoavaimen. Avaintenvaihdon matematiikka tuottaa yhteisen salaisuuden, jota kumpikaan ei lähettänyt verkkoon. Tämän jälkeen kaikki liikenne on salattu.

Vaiheiden järjestys on tärkeä yhdestä syystä: tarkistus tapahtuu ennen kuin mitään sisältöä lähetetään. Jos varmenne ei kelpaa, selain katkaisee ennen kuin selain on ehtinyt lähettää edes pyytämänsä sivun osoitetta pidemmälle.

Varmentaja ja luottamusketju

Selain ei tunne maailman sivustoja. Se tuntee muutamasta kymmenestä sadasta juurivarmentajasta koostuvan listan, joka on asennettu käyttöjärjestelmän tai selaimen mukana. Kaikki muu luottamus johdetaan tästä listasta.

Ketju on tyypillisesti kolmiportainen. Juurivarmentajan avain on hyvin suojattu ja käytössä harvoin, joten se allekirjoittaa vain välivarmenteita. Välivarmenne allekirjoittaa varsinaiset palvelinvarmenteet. Selain tarkistaa allekirjoitukset ketjussa alhaalta ylöspäin ja hyväksyy yhteyden vasta, kun ketjun yläpää osuu sen omaan juurivarastoon.

Tästä seuraa järjestelmän tunnetuin heikkous. Luottamus on niin vahva kuin sen heikoin varmentaja, koska mikä tahansa luotetuista varmentajista voi teknisesti myöntää varmenteen mille tahansa verkkotunnukselle. Selainvalmistajat valvovat varmentajia tarkastuksin ja poistavat luottamuksen, jos sääntöjä rikotaan. Näin on myös käytännössä tapahtunut useille varmentajille.

Toinen vastalääke on varmenteiden läpinäkyvyys (Certificate Transparency). Jokainen julkisesti luotettu varmenne kirjataan avoimiin, muuttumattomiin lokeihin, joita kuka tahansa voi lukea. Verkkotunnuksen omistaja voi siis huomata, jos jollekin on myönnetty varmenne hänen nimelleen ilman lupaa. Järjestelmä ei estä väärinkäyttöä etukäteen, mutta tekee siitä havaittavaa jälkikäteen.

Mitä varmenne oikeasti todistaa

Varmenteita on kolmea tarkistustasoa. Ero on siinä, mitä varmentaja tarkisti ennen myöntämistä, ei salauksen vahvuudessa.

Taso Mitä varmentaja tarkistaa Näkyy käyttäjälle
DV, verkkotunnuksen hallinta Hakija pystyy tekemään verkkotunnukselle pyydetyn muutoksen tai vastaamaan sen sähköpostiin. Koneellinen, minuuteissa. Ei mitenkään
OV, organisaation tarkistus Lisäksi hakijaorganisaation olemassaolo ja osoite rekisteritiedoista Vain varmenteen tiedoista
EV, laajennettu tarkistus Lisäksi laajempi oikeushenkilön ja allekirjoitusoikeuden selvitys Vain varmenteen tiedoista

Käytännön johtopäätös on suoraviivainen. Valtaosa verkon varmenteista on DV-tasoisia, ja selaimet lopettivat EV-varmenteiden erillisen korostamisen osoiterivillä noin vuonna 2019, koska tutkimukset eivät osoittaneet käyttäjien tekevän niiden perusteella parempia päätöksiä. Varmenteen taso ei siis ole enää käyttäjän työkalu. Se, mitä käyttäjä voi lukea, on verkkotunnus itse. Osoitteen lukemista harjoitellaan artikkelissa tietojenkalastelusta, ja käytännön esimerkkejä on kalastelutestissä.

Varmenteiden voimassaoloaika on myös lyhenemässä. CA/Browser Forumin hyväksymän aikataulun mukaan enimmäisvoimassaolo laskee portaittain 47 päivään vuoteen 2029 mennessä. Aikataulu on päätetty, mutta luvut ja päivämäärät ovat sellaisia, joita voidaan vielä tarkentaa, joten ne kannattaa tarkistaa lähteestä. Käyttäjälle muutos ei näy muuten kuin siten, että huonosti ylläpidetyillä sivustoilla varmenne ehtii vanhentua useammin.

Varmennevirheet ja mitä niistä pitäisi päätellä

Selain ei näytä yhtä yleistä virhettä vaan erittelee syyn. Erittely kannattaa lukea, koska syyt tarkoittavat eri asioita.

Virhe Todennäköisin syy Mitä teet
Varmenne on vanhentunut Ylläpitäjä unohti uusia Älä jatka pankissa tai kirjautumissivulla. Tarkista laitteen kellonaika.
Varmenne on myönnetty toiselle nimelle Palvelimen asetusvirhe tai vanha osoite Tarkista, kirjoititko osoitteen oikein. Älä syötä tunnuksia.
Myöntäjä ei ole luotettu Itse tehty varmenne, yrityksen sisäinen palvelu tai liikenteen välissä oleva laite Sisäverkossa mahdollisesti odotettua. Julkisessa verkossa lopeta.
Varmenne on peruutettu Avain on vuotanut tai varmenne myönnetty virheellisesti Älä jatka.

Yksi tapaus ansaitsee erillisen huomion. Jos saat tuntemattoman myöntäjän virheen julkisessa wifissä, tavallisin selitys on verkon kirjautumissivu, joka yrittää siepata ensimmäisen yhteyden. Toinen mahdollinen selitys on liikenteen tarkoituksellinen välissä lukeminen. Kumpaakaan ei erota toisistaan käyttäjän näkymästä, joten oikea toimintatapa on sama: älä ohita varoitusta, vaan kirjaudu verkkoon sen omalla sivulla tai käytä puhelimen mobiilidataa.

HSTS: kun selain kieltäytyy jatkamasta

Varmennevaroituksen ohittaminen on ollut historiallisesti liian helppoa. HSTS (HTTP Strict Transport Security) on sivuston keino sulkea tämä ovi. Sivusto lähettää vastauksessaan otsikkokentän, joka kertoo selaimelle kaksi asiaa: käytä tähän verkkotunnukseen vain salattua yhteyttä, ja muista tämä ohje annettu aika eteenpäin.

Sen jälkeen selain muuttaa http://-alkuiset osoitteet itse salatuiksi ennen kuin lähettää mitään, eikä anna käyttäjän ohittaa varmennevirhettä lainkaan. Tämä katkaisee hyökkäyksen, jossa käyttäjä kirjoittaa osoitteen ilman etuliitettä ja hyökkääjä sieppaa ensimmäisen salaamattoman pyynnön.

Ensimmäinen käynti on silti kattamaton, koska ohje saapuu vasta ensimmäisen onnistuneen yhteyden mukana. Siksi selaimissa on lisäksi sisäänrakennettu esilatauslista verkkotunnuksista, joihin ei saa ottaa salaamatonta yhteyttä koskaan. Suomalaisista palveluista listalla ovat useimmat pankit ja julkishallinnon tunnistuspalvelut. Nykyselaimet ovat myös alkaneet kokeilla HTTPS-yhteyttä oletuksena ilman erillistä ohjetta.

Julkinen wifi: mitä HTTPS ratkaisi ja mitä jäi

Ohje "älä käytä pankkia julkisessa wifissä" on peräisin ajalta, jolloin suuri osa liikenteestä kulki salaamattomana ja kuka tahansa samassa verkossa saattoi lukea istuntoevästeet suoraan ilmasta. Se aika on ohi. Kun sivusto käyttää HTTPS-yhteyttä, samassa kahvilan verkossa istuva ei näe sisältöä eikä pysty muuttamaan sitä.

Kolme riskiä jäi silti jäljelle, eikä yksikään niistä ole salakuuntelua.

Metatiedot. Verkon ylläpitäjä näkee, mihin palvelimiin otat yhteyttä ja milloin. Pelkkä lista vierailluista verkkotunnuksista on usein paljastavampi kuin yksittäisen sivun sisältö.

Väärennetty tukiasema. Kuka tahansa voi pystyttää tukiaseman, jonka nimi on sama kuin luotetun verkon. Laite liittyy siihen automaattisesti, jos verkko on tallennettu. Hyökkääjä ei tämänkään jälkeen pysty purkamaan HTTPS-liikennettä, mutta hän hallitsee nimipalvelua ja voi ohjata selaimen omalle sivulleen, joka näyttää oikealta ja jolla on oma kelvollinen varmenne omalle, hieman erinäköiselle verkkotunnukselleen.

Kirjautumissivut. Avoimen verkon kirjautumissivu totuttaa käyttäjän siihen, että selain valittaa varmenteesta ja että varoitus ohitetaan. Juuri tämä tottumus on hyökkääjälle arvokas.

Käytännön ohje on siis muuttunut. Pankki toimii julkisessa verkossa hyvin, kunhan avaat sen kirjanmerkistä tai kirjoittamalla osoitteen itse, et hakutuloksesta tai viestin linkistä, etkä ohita varmennevaroitusta. Puhelimen mobiilidata on silti yksinkertaisin ratkaisu, koska se poistaa koko tuntemattoman verkon muuttujana.

Mitä tästä seuraa arjessa

Kolme sääntöä kattaa käytännössä kaiken. Lue verkkotunnus, älä lukkoa. Ratkaiseva osa on viimeinen piste ja sitä edeltävä sana ennen ensimmäistä kauttaviivaa, ja tämän lukemisen harjoitteluun kannattaa käyttää hetki, koska huijaukset rakentuvat juuri sen varaan. Älä ohita varmennevaroitusta julkisella sivustolla. Jos varoitus toistuu kaikilla sivustoilla, vika on todennäköisesti laitteen kellonajassa tai verkossa, ei sivustoissa. Ja käsittele julkista wifiä kuin tuntematonta reitittimen omistajaa, jonka kanssa HTTPS toimii mutta joka näkee silti minne menet.

Loput ovat ylläpitäjän vastuulla. Käyttäjä ei voi asetuksillaan korjata sitä, jos palvelu tallentaa salasanat huonosti tai vuotaa tietoja, ja siinä tapauksessa merkitystä on sillä miten tietovuotoon reagoidaan. Termit on koottu myös digisanastoon.

Usein kysytyt kysymykset

Onko sivusto turvallinen, jos osoiterivillä on lukko?

Ei sillä perusteella. Lukko kertoo vain, että yhteys on salattu ja että palvelin esitti kelvollisen varmenteen sille verkkotunnukselle, joka osoiterivillä on. Varmenteen saa kuka tahansa, joka hallitsee verkkotunnusta, myös huijari. Turvallisuuden arviointi alkaa verkkotunnuksen lukemisesta, ei lukosta.

Mitä tarkoittaa varmenteen nimivirhe eli NET::ERR_CERT_COMMON_NAME_INVALID?

Palvelin esitti varmenteen, joka on myönnetty jollekin toiselle verkkotunnukselle kuin sille, jota selain pyysi. Yleisin syy on palvelimen väärä asetus tai vanha linkki, mutta sama virhe syntyy myös silloin, kun liikenne on ohjattu väärään paikkaan. Julkisella sivustolla varoitusta ei pidä ohittaa.

Voiko HTTPS-liikennettä salakuunnella julkisessa wifissä?

Itse sisältöä ei käytännössä voi lukea, jos yhteys on HTTPS ja varmenne kelpaa. Verkon ylläpitäjä näkee silti kohdepalvelimen IP-osoitteen ja yleensä myös verkkotunnuksen, siirretyn datan määrän ja ajoituksen. Julkisen verkon suurin riski ei nykyään ole salakuuntelu vaan väärennetty tukiasema ja sivut, jotka ohjaavat kirjautumaan.

Mitä ero on maksuttomalla ja maksullisella varmenteella?

Salauksen vahvuudessa ei ole eroa, koska salaus ei riipu varmenteen hinnasta vaan käytetystä TLS-versiosta ja avaimista. Ero on tarkistuksen laajuudessa: maksuttomat varmenteet ovat käytännössä aina verkkotunnuksen hallintaan perustuvia, kun taas kalliimmissa varmentaja tarkistaa myös hakijaorganisaation olemassaolon. Selain ei nykyään näytä tätä eroa käyttäjälle.

Miksi jotkin sivustot eivät suostu avautumaan lainkaan HTTP-yhteydellä?

Kyse on yleensä HSTS-käytännöstä. Sivusto on kertonut selaimelle otsikkokentässä, että sitä saa käyttää vain salatulla yhteydellä, ja selain muistaa asian annetun ajan. Sen jälkeen selain vaihtaa osoitteen HTTPS-muotoon itse eikä anna ohittaa varmennevirhettä lainkaan.

Mistä näen, kuka varmenteen on myöntänyt?

Napauta osoiterivin lukkoa tai sivustotietojen kuvaketta ja avaa yhteyden tai varmenteen tiedot. Sieltä näkyy myönnetty verkkotunnus, myöntäjä ja voimassaoloaika. Tiedot ovat hyödyllisiä vianetsinnässä, mutta ne eivät kerro sivuston luotettavuudesta, koska kuka tahansa verkkotunnuksen haltija saa varmenteen.

Takaisin ylös