Peter de Wit

Wij breken ons al maanden het hoofd over een versimpelde uitleg hoe het ontvangen (IMAP/POP3) en versturen (SMTP) van veilige e-mailtjes (via SSL/TLS) werkt. Tot we een blog zagen van Andrea Zanin: student en zelf aangeleerd programmeur. Wat blijkt: alles wat we nodig hebben is een postduif en natuurlijk Aaltje, Klaas, Ans en Martijn.

Maar hoe werkt dat nou precies, en waarom is het zó belangrijk?

Vergelijk het versturen van een e-mailtje eens met het schrijven van een liefdesbrief. Daarvan wil jij natuurlijk dat de inhoud alleen leesbaar is voor degene aan wie je deze brief stuurt. En dus kan je de brief verzegelen zodat de postbode de brief niet stiekem opent. Dat geldt ook voor het versturen van een mail met persoonlijke informatie. Maar hoe verzegel je een e-mail die via verschillende servers van en naar mailprogramma’s gaat?

Een postduif als voorbeeld

Voor het gemak gebruiken we even geen computer voor het versturen en ontvangen van deze berichten maar een postduif. Een ouderwetse postduif. En we hebben het niet over servers, klanten en hackers, maar gebruiken Aaltje en Klaas (het verliefde stelletje) en Ans (de kwade genius).

Stel: Aaltje wil een liefdesbrief sturen aan Klaas, en ze bevestigt dit aan de poot van een postduif. De postduif vliegt naar Klaas, die de tekst vervolgens leest. Klaar is Kees… euh Klaas.

Maar wat nou als Ans de postduif onderschept, het bericht van Aaltje leest en de liefdesverklaring verandert in ‘Ik-wil-je-nooit-meer-zien’? Klaas kan in dit geval nooit weten dat het bericht dat Aaltje stuurde onderweg door Ans is aangepast. Hij weet niet beter dan dat de boodschap die hij ontvangen heeft juist is en dat Aaltje hem niet mag.

Dit is de manier waarop http werkt. Best wel eng, toch? Je kunt er niet op vertrouwen dat de boodschap die jij verstuurd onderweg niet door anderen wordt bekeken en veranderd. Je bent dus gek als je je bankgegevens verstuurt via een onveilige mail.

Een geheime code

Uiteraard zijn Aaltje en Klaas niet dom. Ze zijn zelfs slim. Ze spreken namelijk een geheime code af. Elke geschreven letter staat voor de derde letter later in het alfabet. De D is een G, de E een H, de F een i en elke * is een spatie. Zo wordt de tekst die Aaltje in “geheime code” verstuurt dus “ln*krx*ydq*mrx”.

Als Ans de postduif nu onderschept heeft ze geen idee wat er staat en kan ze er dus ook geen andere logische tekst van maken. Uiteraard kan Klaas deze tekst wel decoderen. De eerste slag is gewonnen. Deze manier van coderen heet symmetric key cryptography, want als je de geheime code kent, kun je elk bericht decoderen.

Natuurlijk zit er ook een addertje onder het gras. Want de bovenstaande methode werkt alleen als zowel de zender als ontvanger de geheime code kent. Maar wat als Aaltje en Klaas elkaar alleen maar hebben gezien maar nog niet hebben gesproken en dus nog geen geheime code hebben kunnen afspreken? Ze kunnen die code niet in hetzelfde bericht versturen, want als Ans de boodschap dan onderschept heeft ze ook meteen de geheime code. In dat geval kan Ans de teksten in de toekomst simpel veranderen. Met alle gevolgen van dien.

In dit geval spreken we van een “man-in- het-middenaanval”. De enige manier om dit te voorkomen is door het gehele geheime code-systeem in één keer goed sluitend te maken.

Daar komt de postduif in beeld.

De postduif en het kluisje. Aaltje en Klaas bedenken een nóg beter systeem. Als Klaas aan Aaltje een bericht stuurt, gaan ze als volgt te werk.

  • Klaas stuurt Aaltje een postduif zonder boodschap
  • Aaltje stuurt de postduif terug met een geopend kluisje en houdt zelf de sleutel
  • Klaas stopt de boodschap in het kluisje, sluit deze af en stuurt de postduif terug naar Aaltje
  • Aaltje ontvangt het kluisje, opent het met haar sleutel en leest het bericht

Ans kan de postduif wel onderscheppen, maar nooit bij het bericht komen, want zij heeft geen sleutel. De boodschap komt dus veilig aan. Hetzelfde proces doorlopen de twee wanneer Aaltje een boodschap heeft voor Klaas.

De vraag is nu… kan ik het kluisje wel vertrouwen?

Natuurlijk zie jij meteen in dat deze methode evenmin waterdicht is. Want hoe kan Klaas nou 100 procent zeker weten dat het open kluisje van Aaltje afkomstig is. Voor hetzelfde geldt heeft Ans een ander kluisje aan hem gestuurd, nadat zij eerst het door Aaltje gestuurde geopende kluisje heeft onderschept?

Aaltje besluit haar kluisje van haar handtekening te voorzien. Als Klaas het kluisje ontvangt, checkt hij de handtekening en weet dat deze door Aaltje is verzonden.

Maar…

… hoe weet Klaas dat het Aaltjes handtekening is als hij haar nog nooit heeft gesproken?

Aaltje en Klaas zagen dit probleem ook. Dus in plaats van Aaltjes handtekening gebruiken ze die van Martijn. Martijn? Ja Martijn. Martijn is een heel bekend en uiterst betrouwbaar persoon.

Martijn is een Certification Authority. Hij zet alleen maar zijn handtekening op een kluisje van Aaltje als hij zeker weet dat degene die daarom vraagt ook daadwerkelijk Aaltje is. Het is voor Ans nu dus onmogelijk om een door Martijn gesigneerd kluisje van Aaltje naar Klaas te sturen, want Martijn zet alleen zijn handtekening nadat hij de identiteit van de afzender (Aaltje) heeft gecontroleerd.

Aaltje en Klaas hebben dankzij Martijn een betrouwbaar systeem om met elkaar te communiceren.

Peter de Wit Marketing en Communicatie

Goochelt met woorden, speelt met zinnen. Is medeverantwoordelijk voor alle teksten (online offline) bij Vevida en regelt sprekers voor de betaalbare trainingen van de Vevida Academy.