HTTPS: kuidas turvaline veebiühendus töötab
HTTPS (inglise keeles Hypertext Transfer Protocol Secure ehk turvaline hüperteksti edastusprotokoll) on protokoll autenditud ja krüpteeritud info edastamiseks arvutivõrkudes. See on HTTP-protokolli laiendus, mille avaldas Netscape Communications 1995. aastal oma veebibrauseri Netscape Navigator jaoks. Tänapäeval kasutab HTTPS-i valdav osa veebisaite. Selles postituses selgitame, kuidas HTTPS töötab, mis on TLS-sertifikaat, millised on protokolli nõrkused ja miks iga veebisait peaks HTTPS-i kasutama.
HTTP ja HTTPS – mis vahe on?
HTTPS-i puhul liigub andmevahetus kasutaja ja veebiserveri vahel kolmandale osapoolele loetamatul kujul ning ühendus on kaitstud vahendajarünnete eest. Turvalisuse tagab andmete edastamine transpordikihi turbeprotokolli (TLS) või vanema turvasoklite kihi (SSL) kaudu.
Kasutaja näeb erinevust aadressiribal: HTTP-aadressid algavad „http://“ ja kasutavad vaikimisi porti 80, HTTPS-aadressid algavad „https://“ ja kasutavad vaikimisi porti 443. Alates 2018. aasta juulist märgistab Google Chrome kõik HTTP-d kasutavad lehed sildiga „not secure“, et julgustada arendajaid HTTPS-ile üle minema.
Kuidas krüpteerimine töötab?
HTTPS kasutab asümmeetrilist krüpteerimist: server ja brauser kasutavad oma avalikku ja privaatset võtit, et jagada sessioonivõtit, millega andmeid krüpteeritakse ja dekrüpteeritakse. Paralleelselt kasutatakse digitaalseid sertifikaate, et serverit autentida ja vältida vahendajarünnakuid.
TLS-sertifikaat
Turvaliseks andmevahetuseks peab veebiserveril olema TLS- või SSL-digisertifikaat, mille on väljastanud usaldusväärne sertimisasutus (Certificate Authority, CA). Sertifikaat kinnitab, et serveri taga on autenditud ettevõte või isik, nii et brauserid, näiteks Chrome, Firefox ja Safari, saavad seda usaldada.
Ühenduse loomine samm-sammult
- TCP kätlus: klient saadab SYN-paketi, server vastab SYN-ACK-paketiga ja klient kinnitab ACK-paketiga. Andmeid selles etapis veel ei vahetata.
- TLS kätlus: klient saadab „Client Hello“ sõnumi toetatud TLS-versiooni ja šifritega ning juhusliku bitirea „ClientRandom“. Server vastab oma sertifikaadi, valitud šifrite ja juhusliku bitirea „ServerRandom“ abil. Klient kontrollib, kas sertifikaat on sertimisasutuse kinnitatud.
- Jagatud võti: klient krüpteerib serveri avaliku võtmega pre-master võtme, mida saab dekrüpteerida ainult serveri privaatvõtmega.
- Sessioonivõtmed: mõlemad osapooled loovad ClientRandomi, ServerRandomi ja pre-master võtme põhjal identsed sessioonivõtmed ning saadavad sõnumi „Finished“.
HSTS
HSTS (HTTP Strict Transport Security) on poliitika, mille abil veebiserver keelab brauseril luua ühendust muu protokolliga peale HTTPS-i. Server teatab sellest HTTP päises, kus on kirjas, kui kaua brauser peab poliitikat meeles pidama (max-age) ja kas see kehtib ka alamdomeenidele.
Puudujäägid
HTTPS ei ole haavamatu. Liiklusanalüüsi rünnakute puhul otsitakse veebiliiklusest mustreid, sest SSL/TLS peidab küll sisu, kuid mitte edastamise ajastust ega andmete suurust. Versiooni alandamise rünnakute (downgrade attack, SSL stripping) puhul muudab ründaja „Client Hello“ sõnumis soovitud protokolli versiooni ja võib ühenduse alandada isegi HTTP-ni. Aegunud TLS-versioonide kasutamine on rangelt mittesoovitatav. Samuti tuleb meeles pidada, et HTTPS ei tee lehte usaldusväärseks – alati tasub kontrollida, kas veebiaadress vastab otsitavale saidile.
Kui levinud HTTPS on?
HTTPS on eriti oluline sisselogimisel ning panga- ja terviseandmete sisestamisel. 2024. aasta andmetel veedavad Chrome’i kasutajad 93,2% veebi sirvimise ajast HTTPS-lehtedel ja 85,6% kõigist veebilehtedest kasutab vaikimisi HTTPS-i. 2020. aastal kasutas HTTPS-i vaikimisi 79% Alexa 100 000 populaarseimast saidist.
Mida HTTPS kaitseb ja mida mitte?
Ingliskeelse Vikipeedia järgi on HTTPS-i peamised eesmärgid külastatava veebisaidi autentimine ning edastatavate andmete privaatsuse ja tervikluse kaitse. Kuna HTTP töötab täielikult TLS-i peal, krüpteeritakse kogu päring: URL, päringuparameetrid, päised ja küpsised, mis sisaldavad sageli kasutajat tuvastavat teavet. Veebiserveri IP-aadressi, pordi numbrit ja mõnikord ka domeeninime ei saa HTTPS aga peita. Pealtkuulaja võib näha ka edastatud andmete hulka ja suhtluse kestust, kuid mitte sisu.
Eriti oluline on HTTPS ebaturvalistes võrkudes, näiteks avalikes WiFi-punktides, kus kõik samas kohtvõrgus olijad võivad liiklust pealt kuulata. Mõned WLAN-võrgud on isegi süstinud veebilehtedele oma reklaame. Seda võtet saab kurjasti ära kasutada ka pahavara levitamiseks.
Kuidas HTTPS levima hakkas
Varem oli serverisertifikaadi allkirjastamine kallis, mistõttu kasutati HTTPS-i peamiselt maksetehingutes ja ettevõtete infosüsteemides. 2016. aastal aitas Electronic Frontier Foundationi kampaania koos brauseriarendajate toega protokolli laiemalt levitada. Alates 2018. aastast kasutatakse HTTPS-i sagedamini kui turvamata HTTP-d. HTTPS-i kasutuselevõtt võimaldab kasutada ka HTTP/2 ja HTTP/3 protokolle, mis vähendavad lehe laadimisaega ja viivitust. Vahendajarünnete, eriti SSL strippingu vastu soovitatakse HTTPS-iga koos kasutada HSTS-i.


