HTTPS (inglise keeles Hypertext Transfer Protocol Secure ehk turvaline hüperteksti edastusprotokoll) on turvaline protokoll autenditud ja krüpteeritud informatsiooni edastamiseks arvutivõrkudes. HTTPS protokolli muudab HTTP-ga võrreldes turvalisemaks liikluse edastamine üle transpordikihi turbeprotokolli (TLS) või vanema turvasoklite kihi (SSL). Tegemist on HTTP protokolli laiendusega, mille avaldas Netscape Communications aastal 1995 oma veebibrauseri Netscape Navigator jaoks.[1]

Näide HTTP veebilehest, mille Google Chrome tähistab kui "ebaturvaline".

HTTPS-i puhul toimub andmevahetus kasutaja ja veebiserveri vahel kolmanda osapoole jaoks loetamatul kujul ning ühendus on kaitstud vahendajarünnete eest. HTTPS-ühendusi kasutatakse sageli veebis maksete tegemisel (pankade veebisaitidel) ning tundliku informatsiooni edastamiseks suurfirmade infosüsteemides.

Eelnevalt mainitud protokollidega puutub kasutaja kokku URL-i aadressireale sisestades. Kui HTTP-aadressid algavad "http://" ja kasutavad vaikimisi porti 80, siis HTTPS-aadressid algavad "https://" ja kasutavad vaikimisi porti 443 [2].

HTTPS protokolli kasutamisest olenemata on siiski oluline kontrollida URL-i usaldusväärsust ning veenduda, et veebiaadress ühtib otsitava sisuga.

Alates 2018. aasta juulist märgistab Google Chrome kõiki veebilehti, mis endiselt kasutavad HTTP protokolli, "not secure" sildiga, et julgustada veebiarendajaid HTTPS protokollile üle minema.[3]

Turvalise URL algus kasutades HTTPS protokolli.

Ülevaade muuda

Erinevalt HTTP protokollist, krüpteerib HTTPS informatsiooni, mis brauseri ja veebiserveri vahel toimub. Turvalise andmevahetuse jaoks kasutatakse asümmetrilist krüpteerimist, mille käigus kasutavad server ja brauser oma avalikku ja privaatset võtit, et jagada sessioonivõtit, mida saab kasutada andmete dekrüpteerimiseks.[4] Sellise algoritmiga kasutatakse paralleelselt ka digitaalsertifikaate, et serverit autentida ning vältida vahendajaründeid.

TLS/SSL muuda

 
Näide usaldusväärsest veebilehest, millel on digisertifikaat

TLS (Transport Layer Security), varasemalt SSL (Secure Sockets Layer), on suhtlusprotokoll, mille abil luuakse kahe seadme või rakenduse vahel turvaline ühendus läbi võrgu.[2] Tänu nendele suhtlusprotokollidele on HTTPS märkimisväärselt turvalisem kui HTTP. Turvalise andmevahetuse jaoks peab informatsiooni saatval veebiserveril olema TLS või SSL digitaalsertifikaat, mille on loonud usaldusväärne sertifitseerimisasutus (Certificate Authority, CA). Saadud sertifikaat kinnitab, et veebiserveri taga on autentitud ettevõte või isik, mistõttu erinevad brauserid (nt Chrome, Firefox või Safari) saavad seda usaldada ja pidada turvaliseks ning seda vastavalt oma brauseris kuvada.[5] Järgnevalt on toodud TLS andmevahetuse kulgemine TLS 1.2 näitel.

 
TCP kätlus (vasakul kujutatud klient, paremal server).

TCP kätlus muuda

Pakettide ohutuks saatmiseks üle TCP peavad klient (kasutajaarvuti) ja server läbi viima TCP kätluse (TCP Handshake). Selleks saadab klient serverile paketi, milles SYN (Synchronize) biti väärtus on 1. Server saadab tagasi paketi, milles ACK (Acknowledge) biti väärtus on 1 koos varasemalt saadetud SYN samuti väärtusega 1. Viimaks saadab klient tagasi paketi ACK bitiga. Eduka kätluse korral on serveri ja kliendi vahel loodud ühendus. TCP kätluse kogu eesmärk on luua privaatne ühendus ning selle käigus andmeid veel ei vahetata.[6]


TLS kätlus

 
TLS kätlus

TLS protokolli alustamiseks toimub TLS kätlus. Selleks annab esmalt klient serverile sõnumi kaudu teada (inglise k. "Client Hello message"), milliseid TLS protokolli parameetreid (sh TLS versioon ning kasutatavate šiffrite detailid) viimane toetab. Klient genereerib suvalistest bittidest koosneva rea "ClientRandom", mida kasutatakse hiljem sessioonivõtme loomiseks. Server saadab vastu TLS digisertifikaadi, et autentida end kui turvalist osapoolt, annab teada, millist TCP versiooni ning šiffreid soovib kasutada ning genereerib samuti suvalistest bittidest koosneva rea nimetusega "ServerRandom". Seejärel kontrollib klient, kas serveri esitatud TLS digisertifikaat on ametlikult kinnitatud sertifitseerimsiasutuse poolt, et kaitsta võimaliku vahendajaründe eest.[7]

Jagatud võtme genereerimine muuda

Klient saab TLS digisertifikaadiga ka serveri avaliku võtme, mida klient kasutab pre-master võtit sisaldava sõnumi krüpteerimiseks. Seda sõnumit saab server dekrüpteerida ainult oma isikliku võtmega. Klient loob seejärel pre-master võtme abil jagatud võtme (shared key) ning hoiustab selle lokaalselt.[6][7]

Sessioonivõtmete genereerimine muuda

Seejärel saavad server ja klient luua iseseisvalt sessioonivõtmed kasutades ClientRandom, ServerRandom ning pre-master võtmeid. Eduka genereerimise korral loovad nii klient kui ka server identsed võtmed ning saadavad üksteisele sõnumi "Finished".[7] Kuna sessioonivõtmed on ainult serveril ja kliendil, kasutatakse sessiooni lõpuni neid võtmeid turvaliseks andmevahetuseks.

TLS versioonid muuda

Andmed põhinevad 2024 aasta aprillist[8][9]. Aegunud TLS protokollide turvaauke on võimalik rünnete jaoks ära kasutada, mistõttu nende kasutus on rangelt mittesoovituslik.

TLS versioon Kirjeldus Kasutus
TLS 1.0 - Avaldatud 1999, põhineb SSL 3.0 peal.

- Toetab 33% veebilehtedest.

- Kasutab autentimiseks üsna vanu ja aegunud algoritme ning haavatav erinevate vahendajarünnete vastu (nt POODLE ja BEAST)[10].

Aegunud, ei soovitata kasutada
TLS 1.1 - Avaldatud aastal 2006.

- Kasutab autentitud krüpteerimise šiffrit (authenticated encryption). - Kasutab tänaseks aegunud MDA ja SHA-1 algoritme

- Toetavad 35,9% veebilehtedest.

- Eelnevalt mainitud vahendajarünnetele siiski üsna haavatav.

Aegunud, ei soovitata kasutada
TLS 1.2 - Avaldatud aastal 2008.

- Kõige laialdasemalt kasutuses olev TLS protokoll (99% veebilehtedeset toetab). - Valib krüpteerimisalgoritmi, mida toetab nii server kui ka klient.

- TLS kätlemised ja sertifikaadid.

- Vähem vastuvõtlikum TLS 1.0 ja 1.2 rünnete vastu.

Kasutuses
TLS 1.3 - Avaldatud 2018.

- Toetab 59,8% veebilehtedest. - Kasutab lihtsaid, kuid väga turvalisi šiffreid. Rünnata on märkimisväärselt keerulisem, kui varasemate versioonide puhul.

- Autentimine ja krüpteerimine toimuvad palju kiiremini.

- Eemaldati ligipääs aegunud šiffritele, et vältida võimalust, et protokoll nende peale lülituks.

Kasutuses

Pordid muuda

Veebilehed kasutavad porte, et eristada erinevat liiki võrguliiklust. Portide numbrid annavad serverile informatsiooni protokollide parameetrite kohta. Näiteks port 80 vihjab serverile, et kasutuses on HTTP protokoll, samas port 443 vastab HTTPS-le [5].

Erinevaid kasutusel olevaid HTTPS porte[11]:

  • Port 443
  • Port 631 (Internet Printing Protocol Secure (IPPS) jaoks)
  • Port 664
  • Port 832
  • Port 1129
  • Port 1184

HSTS muuda

HSTS (inglise k. HTTP Strict Transport Security) on poliitika (inglise k. policy), mida veebiserverid saavad rakendada ühenduse loomisel brauseriga (kliendiga), mis ei luba ühendust luua ühegi teise protokolliga peale HTTPS-i. Veebiserverid annavad brauserile HSTS poliitikast teada kasutades HTTP päisesõnumit (inglise k. HTTP header), mis sisaldab endas ühenduse loomiseks vajalikke spetsifikatsioone ning parameetreid, sh kui pikalt brauser peaks poliitikat meeles hoidma (max-age) ning kas seda rakendatakse ka alamdomeenidele[12][13]. Näide saadetavast päisesõnumist:

Strict-Transport-Security: max-age=31536000;

Puudujäägid muuda

HTTPS protokoll on haavatav netiliikluse analüüsimise rünnakute suhtes (inglise k. traffic analysis attack). Sellise rünnaku käigus analüüsitakse veebiliiklust ning proovitakse nii kliendi kui ka veebilehe kommunikatsioonis leida mustreid, mille abil saaks dekrüpteerida liikuvat informatsiooni. Mustrite leidmise muudab võimalikuks asjaolu, et SSL/TLS muudab saadetava info sisu, kuid selle edastamise ajastust ega andmete suurust ei muudeta[14].

Vahendajarünnete abil on võimalik kliendi ja serveri kommunikatsiooni vahelist SSL/TLS versiooni alandada (inglise k. downgrade attack või SSL stripping). Rünnaku käigus kasutatakse ära kätluse käigus saadetavat "Client Hello Message", kliendi poolt toetatud SSL/TLS protokolli versiooni deklaratsiooni, milles vahetatakse soovitud versioon aegunud variandi vastu ning selle käigus alandatakse HTTPS protokoll HTTP peale [3].

Kasutus muuda

Krüpteeritud ja turvalise andmeedastuse tõttu puutub HTTPS protokolliga kõige enam kokku erinevatesse veebikeskkondadesse sisselogimisel. Oluliste isikuandmete kaitsmiseks on HTTPS eriti vajalik panga- või terviseandmete sisestamisel, et vältida pealtkuulamist ja andmete potentsiaalset varastamist.[15] Ilma turvalise ühenduseta on igasuguste andmete sisestamine veebilehele väga suur turvarisk.

  • 2024 aasta andmetel möödub 93,2% Chrome'i kasutajate veebi sirvimise ajast HTTPS lehekülgedel
  • 2020 aasta andmetel 79% Alexa top 100000 populaarseima veebilehe seast kasutavad vaikeseadena HTTPS protokolli.[16]
  • 2024 aasta andmetel on kasutab 85,6% kõikidest veebilehtedest HTTPS protokolli vaikeseadena [4].

Vaata ka muuda

Viited muuda

  1. Matthews, Tim (6. veebruar 2019). "The Origins of Web Security and the Birth of SSL". Exabeam (Ameerika inglise). Vaadatud 14. aprillil 2024.
  2. 2,0 2,1 "SSL vs TLS - Difference Between Communication Protocols - AWS". Amazon Web Services, Inc. (Ameerika inglise). Vaadatud 14. aprillil 2024.
  3. 3,0 3,1 "A secure web is here to stay". Chromium Blog (inglise). Vaadatud 21. aprillil 2024.
  4. 4,0 4,1 "HTTP to HTTPS | What is a HTTPS Certificate". web.archive.org. 12. veebruar 2015. Originaali arhiivikoopia seisuga 12. veebruar 2015. Vaadatud 14. aprillil 2024.{{netiviide}}: CS1 hooldus: robot: algse URL-i olek teadmata (link)
  5. 5,0 5,1 "What is a CA? Certificate Authorities Explained". www.digicert.com (Ameerika inglise). Vaadatud 14. aprillil 2024.
  6. 6,0 6,1 "Transmission Control Protocol (TCP) (article)". Khan Academy (inglise). Vaadatud 21. aprillil 2024.
  7. 7,0 7,1 7,2 "What happens in a TLS handshake? | SSL handshake". cloudflare.com. Vaadatud 21. aprill 2024.
  8. "TLS Versions: What They Are and Which Ones Are Still Supported?". cheapsslsecurity.com. 30. jaanuar 2023. Vaadatud 24. aprill 2024.
  9. "SSL vs TLS - Difference Between Communication Protocols - AWS". Amazon Web Services, Inc. (Ameerika inglise). Vaadatud 24. aprillil 2024.
  10. Inc, GlobalSign, GMO Internet Group (2. juuli 2020). "POODLE Vulnerability Affects TLS 1.0, TLS 1.1 :". GlobalSign Support (inglise). Vaadatud 29. aprillil 2024.
  11. G, Noviantika (8. september 2022). "HTTPS Port: Understanding What It Is and How to Use It". Hostinger Tutorials (Ameerika inglise). Vaadatud 29. aprillil 2024.
  12. "The HTTPS-Only Standard - HTTP Strict Transport Security". https.cio.gov (Ameerika inglise). Vaadatud 30. aprillil 2024.
  13. "Strict-Transport-Security - HTTP | MDN". developer.mozilla.org (Ameerika inglise). 10. mai 2023. Vaadatud 30. aprillil 2024.
  14. Chen, Shuo; Wang, Rui; Wang, XiaoFeng; Zhang, Kehuan (1. mai 2010). "Side-Channel Leaks in Web Applications: a Reality Today, a Challenge Tomorrow" (Ameerika inglise). {{ajakirjaviide}}: viitemall journal nõuab parameetrit |journal= (juhend)
  15. "HTTP to HTTPS | What is a HTTPS Certificate". web.archive.org. 12. veebruar 2015. Originaali arhiivikoopia seisuga 12. veebruar 2015. Vaadatud 14. aprillil 2024.{{netiviide}}: CS1 hooldus: robot: algse URL-i olek teadmata (link)
  16. "21 SSL Statistics that Show Why Security Matters so Much". WebTribunal (inglise). Vaadatud 21. aprillil 2024.