Hvordan fungerer HTTPS?

Kategori: Webfunn


Flere og flere nettsider går over til å kommunisere eksklusivt over HTTPS – en kommunikasjonsprotokoll for kryptert utveksling mellom sender og mottaker. Men hvordan fungerer det, egentlig?

I etterkant av Edward Snowdens avsløringer om den amerikanske statlige overvåkningen har mange nettsteder begynt å bruke HTTPS med SSL/TLS som standardprotokoll på sine nettsider. Både Facebook og Twitter har gjort dette i lengre tid, men også hele Google-universet lever nå eksklusivt på HTTPS-protokollen. Det betyr at alle søk du måtte gjøre på Google, er i teorien kryptert og hemmelig fra din nettleser og til det treffer Googles servere.

httpsport

Men gjennom Snowdens avsløringer vet vi at flere organisasjoner jobber hardt for å svekke populære krypteringsstandarder og deres implementasjoner, noe som også er faktum for HTTPS gjennom NSAs Bullrun-program.

Foreløpig ser det ikke ut til at NSA har klart å knekke nyere versjoner av Transport Layer Security (TLS), som er i bruk av de fleste nettlesere når kommunikasjonen går over HTTPS.

Folk flest vet ikke hvorfor HTTPS er (relativt) trygt. Heldigvis har Jeff Moser laget en illustrerende artikkel som viser hvordan nettleseren kommuniserer over HTTPS-protokollen:

Les saken: The First Few Milliseconds of an HTTPS Connection

Moser har brukt Wireshark til å inspisere hvordan en forbindelse går fra HTTP (som vanligvis er på port 80) til HTTPS (som vanligvis er på port 443), og hva som skjer underveis.

Artikkelen er svært teknisk, så om du kjenner til noen andre artikler som forklarer mekanismene til kryptering og/eller HTTPS på en god og forståelig måte: Skrik ut i kommentarfeltet!

3 kommentarer

  1. Wikipedia har eigentleg ganske gode artiklar på ein del av dette, f.eks. https://en.wikipedia.org/wiki/Public_key

    Det viktigaste konseptet bak https er vel asymmetrisk kryptering, eller offentleg nøkkelkryptering (det same som blir brukt i GPG/PGPG), samt diffie-hellman key exchange.

    Alle https-servere har eit nøkkelpar, som består av ein offentleg nøkkel og ein privat nøkkel. Viss eg har din offentlege nøkkel, så kan eg kryptere tekst sånn at berre du kan lese det (med din private nøkkel). Du kan i tillegg signere tekst med din private nøkkel, og eg kan sjekke at den signaturen faktisk kom fra deg vha. din offentlege nøkkel.

    Det heile høyres litt magisk ut, at det skal vere trygt å publisere ein offentleg nøkkel på den måten (fins det ikkje ein måte å finne den private nøkkelen når du har den offentlege?) men matematikken bak det er velstudert. Det som gjer det mogleg å lage eit sånt nøkkelpar er «einvegsfunksjonar», matematiske problem som er veldig enkle i ei retning og vanskelege i den andre. Tenk på kor mykje lettare det er å multiplisere 324*324 (med penn og papir), versus å finne kvadratroten av 104976. Det er sånne asymmetriske problempar som gjer at det er lett å generere nøkkelpar og bruke dei for kryptering/dekryptering, men praktisk umogleg å finne den private nøkkelen frå den offentlege (forskjellen i tidsbruk kan f.eks. vere eit sekund vs millionar av år).

    Så når du koplar til ei nettside, så presenterer nettsida ein offentleg nøkkel og signerer tekst som du har funne på med denne. Då veit du at sida har den private nøkkelen som svarer til den offentlege. Dette blir brukt for å starte den krypterte «samtalen», men etter dette byttar partane over til symmetrisk kryptering, sidan det er komputasjonelt raskare.

    Men: at nettsida har den private nøkkelen som svarer til den offentlege, det seier jo ingenting om at nettsida faktisk er kontrollert av f.eks. banken din. I ein nettbanksikker verden burde du fått utdelt den offentlege nøkkelen på ein minnepinne når du var innom den fysiske banken og installert den i nettlesaren din heime.

    Men det blir for mykje styr. Det me i staden gjer er dette: banken din får ein heilt annan tilfeldig bedrift (ein «CA», Certificat Authority) til å signera sin offentlege nøkkel med CA-en sin nøkkel. No kan banken presentera ikkje berre den offentlege nøkkelen sin, men i tillegg ein signatur (eit «sertifikat») frå CA-en. Viss du har den offentlege nøkkelen til CA-en, så kan du sjekka at signaturen faktisk kjem frå CA-en. No veit du at CA-en har signert den offentlege nøkkelen. Og viss det er ein stor og kjend CA, så bør nettlesaren din allereie komme med den offentlege nøkkelen til CA-en ferdiginstallert. Men kva seier det deg? Vel, berre at ein bedrift som nettlesaren din går god for, går god for nøkkelen til banken.

    Heile CA-systemet er ein hack. Det finst ein masse CA’s som har hatt innbrot og fått dei private nøklane sine stolne, eller dei har vore teknisk udugelege og hatt dei private nøklane sine på offentlege ftp-serverer, eller dei har gitt nøklar til NSA, eller dei har utstedt sertifikat til «Microsoft, Some Tiny Village, India», osv osv osv. https://www.youtube.com/watch?v=pDmj_xe7EIQ er ein video full av sånne skremmande eksempel.

    Kryptering fungerer. Autentisering er ennå eit uløst problem.

    Svar på denne kommentaren

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *. Les vår personvernserklæring for informasjon om hvilke data vi lagrer om deg som kommenterer.