Agent Bokito wordt FSOMXS
Voor onderhoudende experimenten heb je niet per se een groot laboratorium nodig. Deze keer een proef waarbij je - heel simpel - een onbreekbare code maakt. Hadden de Duitsers dat geweten...
Een paar jaar terug besloot de Britse regering tot eerherstel voor wiskundige en codekraker Alan Turing (1912 – 1954). Turing speelde tijdens de Tweede Wereldoorlog een doorslaggevende rol bij het ontcijferen van Enigma, het codesysteem van de Duitse marine, maar werd in 1952 vanwege zijn homoseksualiteit veroordeeld tot een gedwongen hormoonbehandeling. Twee jaar later pleegde hij zelfmoord door een met cyanide vergiftigde appel te eten.
De Duitsers gebruikten Enigma om te communiceren met U-boten op volle zee en het kraken van de code was essentieel voor de veiligheid van Engelse konvooien en (dus) voor de geallieerde overwinning. Het systeem had in theorie 403 miljoen triljoen tot de vierde macht manieren om een bericht te versleutelen en de Duitsers hielden Enigma voor onbreekbaar. Niet dus. Turing en zijn collega’s (vooral de Poolse wiskundige Marian Rejewski) slaagden erin om uit de Duitse letterbrij leesbare teksten te maken.
Uiteindelijk is het niet eens heel moeilijk om een onbreekbare code te maken. Je hebt drie dingen nodig: pen, papier en een reeks willekeurig gekozen letters. Om te begrijpen hoe het systeem werkt, moet je eerst twee andere coderingssystemen doorgronden. Het eerste is het zogeheten Caesar cipher, genoemd naar – inderdaad… Het is waarschijnlijk de makkelijkste manier om een bericht te coderen en hoewel het kinderlijk eenvoudig te kraken valt, werd het nog tot in de Eerste Wereldoorlog gebruikt door het Russische leger.
De methode is simpel: schrijf het alfabet op een stuk papier en schrijf daaronder het alfabet nog een keer, maar dan een paar posities opgeschoven. Als je het cipheralfabet vier posities naar links schuift, wordt de A de E, de B wordt F en de C wordt G, enzovoorts. De naam van geheim agent Bokito wordt zo gecodeerd als FSOMXS.
Iedere letter in de ciphertekst vertegenwoordigt een vaste letter in de originele tekst en daardoor is de code snel te kraken. Tel in een (lange) gecodeerde tekst de frequentie van de verschillende letters en kijk wat de meest voorkomende letters zijn. In het Nederlands komt de E met 18,91 procent met afstand het meeste voor. Zoek de meestgebruikte letter in de code, schuif het alfabet op z’n plek en de rest is een invuloefening.
Je kunt het een stapje moeilijker maken met een zogeheten Vigenère cipher. Maak daarvoor een tabel van 26 x 26. Schrijf op de bovenste regel het alfabet en schuif daarna op iedere volgende regel één positie op. Verzin een sleutelwoord (“ELGAR”) en gebruik dat om voor iedere letter in je tekst te bepalen welke regel van je tabel je gebruikt. Voor het coderen van de eerste letter (B van Bokito) ga je naar de regel die begint met de E van ELGAR. Op de plek van de B staat daar de F. Voor het coderen van de tweede letter (O) ga je naar de regel die begint met de L (O wordt Z), voor de derde letter ga je naar de G (K wordt Q), enzovoorts. Bokito wordt op die manier FZQIKS.
De lengte van het sleutelwoord is de achilleshiel van het systeem. Om een lange tekst te coderen, moet je het sleutelwoord telkens herhalen en een slimme lezer kan vervolgens de lengte van het sleutelwoord afleiden door in de code te zoeken naar terugkerende lettercombinaties. Zodra je de weet dat het sleutelwoord vijf letters lang is, dan bestaat de code feitelijk uit vijf in elkaar geweven Caesar ciphers die je met frequentieanalyse te lijf kunt.
De oplossing ligt voor de hand: gebruik als sleutel een lange reeks willekeurig gekozen letters die net zo lang is als je bericht. Daarbij is het essentieel dat je die sleutel maximaal één keer gebruikt. Zodra je een volgende tekst codeert met dezelfde sleutel, herhaal je feitelijk het codewoord en geef je cryptoanalisten een mogelijke ingang om je berichten te ontcijferen. Vandaar ook de naam van het systeem: one time pad.
Auteur: Ernst Arbouw
Laatst gewijzigd: | 12 april 2021 13:15 |