HTTP een internetprotocol

Voor alle activiteiten die je online uitvoert op het internet (zoals het lezen van dit artikel, iets kopen op Bol.com of kattenfoto's op Facebook zetten) wordt er informatie verzonden en ontvangen vanaf een server. Laten we ons dit voorstellen met behulp van een postduif metafoor. Een duif, die al vliegend informatie en berichten rondbrengt. We zullen het niet hebben over servers, clients en hackers. In plaats daarvan verwijzen we naar Alice, Bob en Mallory. (Geen namen die ik net verzonnen heb, het zijn namen die gebruikt worden in cryptografische uiteenzettingen).

Fladderen door de lucht

  • Wanneer Alice informatie wil versturen naar Bob, dan hangt ze het bericht aan de poot van een postduif 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? Mallory 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 het oudere HTTP-protocol werkt. Duiven die fladderen door de lucht en die kunnen onderschept worden in transit. Zo zou je natuurlijk geen persoonlijke gegevens willen versturen, laat staan financiële gegevens, toch?

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 zou 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 dit voorbeeld is de sleutel gekend als het 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 dat de letter opschuift in het alfabet'. In het voorbeeld hierboven werden er 3 gebruikt, maar 4 of 12 posities opschuiven kan natuurlijk 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 dat bericht kunnen onderscheppen en met de sleutel aan de slag gaan. Dit wordt ook wel een 'Man in the middle'-aanval genoemd. De afgesproken sleutel wordt uitgedokterd of onderschept, waardoor geen enkel bericht nog veilig is. Om dit soort aanvallen tegen te gaan, moest het encryptiesysteem worden herdacht: hoe kan je de sleutel bezorgen zonder de mogelijkheid dat deze wordt onderschept? 

Postduiven met pakketjes

Alice en Bob bedenken vervolgens een beter systeem. Wanneer Bob nu een bericht wil versturen naar Alice, volgt hij de volgende procedure:

  • Bob stuurt Alice een duif zonder een bericht.
  • Alice stuurt de duif terug naar Bob met een pakketje rond de poot. Daarond zit er een slot dat nog NIET dicht is (ze houdt zelf de sleutel van het slot bij zich).
  • Bob steekt het bericht in het pakketje dat de duif bij zich heeft, en sluit het pakketslot.
  • De duif wordt verstuurd naar Alice die het kan openen met de sleutel die ze had bewaard.

Op deze manier kan Mallory het bericht niet onderscheppen, want ze heeft de sleutel voor het pakketslot niet in haar bezit. Alice en Bob gebruikten hier een techniek die bekendstaat 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 (enkel de persoon met de sleutel van dat specifieke slot kan het deëncrypteren). 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)?

Wel, Alice besluit dat ze haar pakketje zal tekenen, zodat Bob de handtekening kan controleren en zeker is dat Alice de afzender was (en niet Mallory). 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 op zich zal nemen.

Wie is Ted?

Ted is een zeer bekende, sociale en betrouwbare jongen. Iedereen is fan van Ted en wil 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 tekenen voor Alice, als hij zeker is dat Alice om deze handtekening vroeg (hij controleert dus haar identiteit, zodat Mallory niet kan tussenkomen). Ted is in technische termen de Certificatie Autoriteit. De internetbrowser waarin jij 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' en te vertrouwen is

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 pakketjesmethode (asymmetrische cryptografie) enkel zullen gebruiken om een sleutel te overleggen voor het encrypteren en decrypteren van de berichten (bijvoorbeeld 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 'online' 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). De S verwijs naar het effectief combineren van de twee cryptografie-methodes (eerst een pakje met slot om een sleutel af te spreken, daarna steeds  versleutelde berichten sturen). Zo kan niemand gegevens die via een website worden verstuurd zomaar onderscheppen.

Hoe krijg je nu zo'n S achter je http? Wel, dat kan door SSL-certificaten in te stellen. Deze certificaten worden gecontroleerd en 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 "Uw verbinding is niet beveiligd". 

Heb jij dus zelf een website? Beveilig deze dan zeker met een SSL-certificaat en voeg een S toe aan je http! Verstuur jouw gegevens (postduif) veilig, en laat deze niet zomaar door hackers (Mallory) uit de lucht scheppen. 

HEVEN kan u helpen met het beveiligen van websites, webshops en servers. Wij zorgen voor de installatie van het SSL-certificaat en doen een controle om de belangrijkste risico's te elimineren. Meer info op https://heven.be.