HTTPS uitgelegd via een postduif metafoor



TL;DR: Je hebt het vast en zeker al opgemerkt... De slotjes naast de url in je browser. De zogenaamde SSL certificaten. SSL staat voor Secure Socket Layer, en voegt een S toe voor secure na de gekende http. Sinds de invoering van de GDPR is het hebben van zo een certificaat in feite verplicht.

HTTP een internet protocol
Voor alle activiteiten die je online uitvoert op het internet (zoals het lezen van dit artikel, iets kopen op Bol, of katfoto's op facebook zetten) wordt er informatie verzonden en ontvangen vanaf een server. Alleen dit stuk al kan abstract klinken. Dus laten we het ons voorstellen met een postduif metafoor, een duif die informatie en berichten rondlevert. In plaats dat we het hier hebben over servers, clients en hackers, verwijzen we naar Alice, Bob en Mallory. Namen die gebruikt worden in cryptografische concepten om uiteenzettingen vlot te begrijpen.
Fladderen door de lucht
- Wanneer Alice informatie wilt versturen naar Bob, dan hangt ze het bericht aan een postduif zijn poot en verstuurt het.
- Bob zal het bericht ontvangen, lezen en voilà.
Maar wat als er een derde speler is, Mallory, die het bericht onderschept en de duif uit de lucht plukt. Ze verandert het bericht en zwiert de duif weer de lucht in. Bob zal nooit weten dat het bericht dat verstuurd is door Alice tijdens de vlucht werd gewijzigd... Dat is nu hoe de HTTP-protocol werkt, duiven die fladderen door de lucht en die kunnen onderschept worden in transit. Zo zou je natuurlijk geen bankgegevens willen versturen.

Een geheime code gebruiken
Omdat Alice en Bob geen vreemden zijn, komt al snel uit dat het bericht werd gewijzigd. Snugger als ze zijn spreken ze af om hun berichten te versturen in een geheime code. Ze zullen elke letter 3 posities opschuiven in het alfabet. Dus: D→A, E→B, F→C, een simpel bericht als hallo wordt dan 'exiil'. Wanneer Mallory de duif gaat onderscheppen, zal ze het bericht niet begrijpen en dus niet kunnen aanpassen, want ze kent de code niet. Deze methode noemt symmetrische sleutel cryptografie, heb je de sleutel dan weet je hoe je het bericht kan ontcijferen. In het vorig voorbeeld is de sleutel gekend als Caesarcijfer of Caesarrotatie/Rot (3 letters links in het alfabet). In echte https protocollen worden veel complexere codes gebruikt, maar het idee blijft hetzelfde.

Hoe wordt er beslist over de sleutel?
De symmetrische sleutel cryptografie is zeer veilig wanneer enkel de zender en ontvanger weten welke sleutel moet worden gebruikt. Met Caesarcijfer is de sleutel 'het aantal posities de letter opschuift in het alfabet'. In het voorbeeld hierboven werden er 3 gebruikt, maar 4 of 12 kan ook. Maar wat als Alice en Bob elkaar niet kennen, en geen sleutel konden afspreken. Versturen ze die sleutel in een bericht, dan zou Mallory het kunnen onderscheppen. Zo een onderschepping wordt ook naar verwezen als een 'Man in the middle' aanval. Om dit tegen te gaan moest het encryptie systeem op zich worden herdacht... Hoe kan je de sleutel bezorgen zonder dat deze wordt onderschept?
Postduiven met pakketjes
Alice en Bob bedenken een nog beter systeem. Wanneer Bob nu een bericht wil versturen naar Alice, dan volgt hij de volgende procedure:
- Bob stuurt Alice een duif zonder een bericht
- Alice stuurt de duif terug met een pakketje met een slot rond dat nog niet dicht is (ze houd de sleutel bij van het slot)
- Bob steekt het bericht in het pakketje dat de duif bij zich heeft, en sluit het slot
- De duif wordt verstuurd naar Alice die het kan openen met de sleutel die ze had bewaard
Op deze manier kan Mallory niet het bericht onderscheppen, want ze heeft niet de sleutel in haar bezit. Alice en Bob gebruikten hier een techniek die bekend staat als de asymmetrische sleutel cryptografie. Asymmetrisch omdat zelfs als je het bericht encrypteert (het pakketje afsluit met een slot), je het daarom nog niet openen kan (deëncrypteren kan enkel de persoon met de sleutel van dat specifieke slot). In technische termen is het pakketje met het slot hier de publieke sleutel, de sleutel om het slot te openen is de private sleutel.

Kan ik dat pakketje vertrouwen?
Snelle denkers hebben het misschien al door, er schuilt nog een addertje onder het gras. Want wanneer Bob zijn pakketje ontvangt (de public key), hoe kan hij dan zeker zijn dat dit werd verstuurd door Alice? En dat Mallory niet mid-vlucht het slot heeft veranderd rond het pakje, zodat ze wel een sleutel heeft (haar public key)? Alice besluit dat ze haar pakketje zal tekenen, zodat Bob de handtekening kan controleren en zeker is dat Alice deze stuurde. Misschien denk je nu al... Maar als Bob en Alice elkaar echt niet kennen, hoe weet hij dan wat de correcte handtekening is? Daarom spreken ze af dat een gedeelde kennis Ted, het signeren zal doen.
Wie is Ted?
Ted is een zeer gekende, sociale en betrouwbare jongen. Iedereen is fan van Ted en wilt zijn handtekening. Ze vertrouwen er allemaal op dat Ted enkel tekent voor betrouwbare mensen. Ted is zo betrouwbaar omdat hij de identiteit nagaat van iedereen voor wie hij tekent. Ted zal enkel een doos teken voor Alice, als hij zeker is dat Alice om deze handtekening vroeg. Zodat Mallory niet kan tussenkomen. Ted is in technische termen de Certificatie Autoriteit, de internet browser waarin je nu dit artikel leest bevat standaard tal van handtekeningen van deze Certificatie Autoriteiten. Wanneer je voor het eerst naar een website gaat, dan vertrouw je de website en diens pakketjes vol informatie omdat Ted je vertelt dat deze website 'echt' is en te vertrouwen.

Te zware pakketjes voor een duif
Alice en Bob hebben eindelijk een betrouwbaar systeem gevonden om te communiceren. Maar al snel realiseren ze zich dat duiven die meerdere pakketjes vervoeren trager vliegen dan deze met enkel een bericht aan hun poot. Daarom besluiten ze dat ze de pakketjes methode (asymmetrische cryptografie) enkel zullen gebruiken om een sleutel te overleggen voor het encrypteren van de berichten (bijv. de simpelere Caesarcijfer methode). Zo hebben ze het beste van twee werelden. De betrouwbaarheid van asymmetrische cryptografie, met de snelheid en efficiëntie van symmetrische cryptografie. Ook in de echte wereld worden beide methodes naast elkaar gebruikt.
Tot slot
Nu weet je hoe informatie via HTTPS wordt verstuurd. De S verwijst naar het veilig uitwisselen van informatie door deze dus te encrypteren (met een cryptografie methode). SSL certificaten, waardoor websites de S na de HTTP kunnen verkrijgen worden dus gekeurd door een Certificatie Autoriteit. Daarom kosten goede certificaten geld, omdat er echte mensen achter de schermen de identiteit controleren van personen achter een website. Hoe duurder de certificaten, hoe strenger de controle en hoe veiliger de verbinding, dit is vooral belangrijk bij het versturen van financiële informatie. Websites die over geen SSL certificaat beschikken, en dus een onveilige verbinding hebben, worden door Google en andere sites afgestraft. In browsers krijgen bezoekers van dergelijke onveilige sites dan een melding zoals deze hieronder. Heb jij dus zelf een website? Beveilig deze dan zeker met een SSL certificaat en voeg een S toe aan je http!

HEVEN kan je helpen met het beveiligen van je website. Wij zorgen voor de installatie van het SSL certificaat en doen een controle om de belangrijkste risico's te elimineren. Meer info op heven.be.