Cryptologie

Beoordeling 6.6
Foto van een scholier
  • Profielwerkstuk door een scholier
  • 6e klas vwo | 9641 woorden
  • 28 februari 2004
  • 149 keer beoordeeld
Cijfer 6.6
149 keer beoordeeld

ADVERTENTIE
Overweeg jij om Politicologie te gaan studeren? Meld je nu aan vóór 1 mei!

Misschien is de studie Politicologie wel wat voor jou! Tijdens deze bachelor ga je aan de slag met grote en kleine vraagstukken en bestudeer je politieke machtsverhoudingen. Wil jij erachter komen of deze studie bij je past? Stel al je vragen aan student Wouter. 

Meer informatie
Hoofdstuk 1. Algemeen

Aangezien wij het over cryptologie gaan houden, zullen we eerst even in het algemeen een paar zaken uitleggen die met het onderwerp te maken hebben.
Cryptologie bestaat uit twee Griekse woorden, namelijk “krypto” en “logos” of “logie”. “Krypto” betekent “bedekken of verbergen” en “logos” betekent “woord” en logie betekent “wetenschap”. Cryptologie betekent dus de wetenschap van het verbergen of het verbergen van het woord. Dit kan op de volgende 2 manieren:
-Steganografie: het verbergen van een bericht. In het volgende hoofdstuk zullen we 2 voorbeelden va steganografie geven.

-Substitutie: het coderen van een bericht door het vervangen van een letter door een vooraf afgesproken letter.
Wij zullen in ons werkstuk ons alleen bezighouden met substitutie. Stenografie heeft namelijk niets met wiskunde te maken.
De wetenschap cryptologie is onder te verdelen in twee hoofdvakken: cryptografie en cryptoanalyse. Cryptografie (encryptie) is het ontwerpen en gebruiken van geheimschriften, en cryptoanalyse (decryptie) is het analyseren en breken van geheimschriften. Beide gebeurt met behulp van sleutels, je hebt een tekst en met behulp van een afgesproken sleutel (een vertaalmiddel) zet je deze om in een gecodeerde tekst (en met behulp van deze sleutel of een andere sleutel kun je deze gecodeerde tekst weer omzetten naar de originele tekst). De sleutel kan vermenigvuldiging, optelling, verschuiving etcetera van letters inhouden. De verschillende manieren worden later in het werkstuk besproken. Overigens bij verder bespreking van het begrip cryptologie zullen wij ons vooral richten op encryptie. Aangezien decryptie hieruit voortkomt en dus niet echt belangrijk is voor ons.
Het woord cryptografie is ook afkomstig uit de Griekse taal en is afgeleid van de woorden ‘krypto’ en ‘graphe’. ‘Graphe’ betekent “het schrijven, het schrift” en zoals al eerder werd gezegd betekent ‘Krypto’ “verbergen, bedekken”. Cryptografie betekent dus het verbergen van het schrift.
Er zijn heel veel vormen van encryptie, bijvoorbeeld Diffie-Hellman, RSA en Vigenère. Vooralsnog kunnen we deze in twee hoofdgroepen verdelen, namelijk asymmetrische en symmetrische encryptie.
Het verschil tussen asymmetrische en symmetrische encryptie is dat bij symmetrische encryptie maar één sleutel wordt gebruikt voor zowel coderen als decoderen, en bij asymmetrische encryptie twee sleutels. Één om te coderen, deze is openbaar. En één om te decoderen, deze is geheim. Het voordeel van asymmetrische encryptie is dat het zeer moeilijk te kraken is. Symmetrische encryptie is echter veel sneller en eenvoudiger. Twee voorbeelden van asymmetrische encryptie zijn Diffie-Hellman en RSA, en Vigenère is een voorbeeld van symmetrische encryptie. Overigens moet gezegd worden dat tegenwoordig ook volgens het Hybride-encryptiesysteem wordt gewerkt; dit is een mengsel van asymmetrische en symmetrische encryptie. Om snelheid te garanderen wordt symmetrische encryptie gebruikt voor het coderen van de data. En om de veiligheid te garanderen gebruikt men asymmetrische encryptie om de symmetrische sleutels te decoderen.

Welk cryptosysteem je ook gebruikt, het moet altijd aan drie eisen voldoen:
1. Absolute geheimhouding. Als je een veilig cryptosyteem hebt moet iemand die het bericht onderschept geen flauw idee hebben van de boodschap.
2. Handtekeningeigenschap. De ontvanger van het gecodeerde bericht moet er absoluut zeker van kunnen zijn dat het bericht dat hij krijgt ook echt van de verzender afkomstig is. Dit moet zo duidelijk zijn dat het zelfs een rechter zou kunnen overtuigen.
3. Integriteit. De ontvanger van het gecodeerde bericht moet er zeker van kunnen zijn dat er niet met de inhoud van het bericht is geknoeid.
De bovenstaande drie eisen moeten een goed cryptosysteem garanderen, een vierde eis die niet zozeer met het systeem maar meer met de omgang met het systeem te maken heeft is het Need to Know- principe, je moet er bij een cryptosysteem voor zorgen dat zo min mogelijk mensen van je sleutel afweten, dan is het veel gemakkelijker een systeem geheim te houden.

Sommige geheimschriften zijn hier beter in geslaagd dan de andere. Veel oude cryptosystemen zijn door middel van moderne technieken makkelijker te ontcijferen, voor die tijd waren het wel perfecte systemen aangezien de techniek van ontcijfering toen nog niet zover gevorderd was. Helaas zijn de moderne ontcijferingtechnieken zelfs nu niet altijd in staat om oude geheimschriften te ontcijferen, een beroemd voorbeeld zijn de geheime runen op de Zweedse steen Rök. Deze zijn tot op de dag van vandaag nog niet gedecodeerd.

Hoofdstuk 2. Geschiedenis

Dit hoofdstuk gaat over de geschiedenis van de wetenschap cryptologie, en de eerste vraag die bij de meeste mensen dan waarschijnlijk opkomt is: ‘Wanneer is cryptologie ontstaan?’ Om die vraag te kunnen beantwoorden moeten we niet kijken naar het ontstaan van de verschillende encryptiesystemen, belangrijker is om te bedenken wat het nut van cryptologie is, waarom voelden de mensen de behoefte om een bericht te verbergen, waarom wilden mensen graag zorgen dat een ander niet kon begrijpen wat zij opgeschreven hadden? Dit kan om verschillende redenen zijn, bijvoorbeeld als je geheime informatie wil doorgeven die niet in de handen van een vijand (bijvoorbeeld in oorlogstijd) mag vallen. Verder kan je door middel van cryptologie de echtheid van een bericht controleren, je wil zeker weten dat je het juiste bericht hebt ontvangen (ook dit is vooral in oorlogstijd belangrijk). Zo zij er nog andere redenen te verzinnen, een ding is echter zeker, vanaf het moment dat er schriftelijke berichten zijn doorgegeven heeft men ook geprobeerd een aantal van deze berichten geheim te houden en heeft men dus berichten proberen te verbergen of te coderen. De oorsprong van de cryptologie ligt dus hoogstwaarschijnlijk bij de oorsprong van het schrift.
Overigens zal men voor de uitvinding van het schrift ook wel berichten geheim hebben proberen te houden, dit laten wij hier echter buiten beschouwing, omdat de wetenschap cryptologie zich bezig houdt met het verbergen van het schrift (zoals we in het vorige hoofdstuk al zeiden) en niet het verbergen van mondelinge boodschappen.
In dit hoofdstuk zullen we nu een aantal voorbeelden geven van de ontwikkeling van cryptologie in de loop van de tijd, een aantal verschillende encryptiesystemen zullen pas in het volgende hoofdstuk echt aan bod komen, hoewel we in dit hoofdstuk wel een aantal manieren van verbergen van schrift al wat zullen toelichten.
Eerst zullen we eens beginnen bij de Bijbel, want in de Bijbel wordt al gesproken over het coderen van vercijferde berichten in de vorm van geheimschrift. In Daniel 5:26-28 staat namelijk dat Koning Belsassar geconfronteerd wordt met een gecodeerde boodschap die zijn einde aankondigt.
Een stap vooruit in de geschiedenis brengt ons bij de Klassieke Tijd, bij de Grieken en de Romeinen. Er zijn bronnen gevonden waaruit blijkt dat zij methoden hebben verzonnen om berichten aan iemand te versturen waarbij een eventuele onderschepper van deze berichten ze niet kan begrijpen. Zoals in het vorige hoofdstuk al vermeld kan dit door middel van steganografie en substitutie, twee Griekse voorbeelden van steganografie zullen we hier eerst beschrijven en bij de Romeinen zal substitutie meer aan bod komen.
Steganografie is het verbergen van een bericht, dit kan op verschillende manieren, bijvoorbeeld door en bericht onder een laag was te verbergen.. Een voorbeeld hiervan is te vinden tijdens de oorlog tussen de Grieken en Perzië in de 5e eeuw v. Chr. In dit geval gaat het om de Griekse spion Demeratus die gehoord had dat de Perzen een geheime aanval op de Grieken aan het beramen waren. Hij wilde zijn landgenoten hiervan verwittigen en deed dit door middel van een tekst die hij stuurde naar de Grieken, deze tekst was verborgen onder een laag was.
Een andere manier van steganografie, en naar onze mening een iets intelligentere manier, is uitgevonden door de Spartanen in 450 v. Chr. Dit is tevens het eerste historische voorbeeld van geheimschrift dat ooit gevonden is. Zij wikkelden een scytale (een riem) om een stok heen en schreven hier een bericht van boven naar beneden op. Vervolgens haalden ze de scytale van de stok af en als je dat bericht dan weer wilde lezen dan moest je de scytale om dezelfde stok of een stok van dezelfde dikte wikkelen, met de ontvanger van het bericht moest dus wel de dikte van de stok worden afgesproken.

Overigens blijkt ook dat cryptologie niet perse nodig is om de vijand te misleiden, een goed voorbeeld is de Griek Philippus van Macedonië, hij verspreidde bewust valse berichten om zo de vijand op een vals spoor te brengen.
Dit waren twee voorbeelden van Griekse steganografie, de Romeinen waren echter ook goed in het verbergen van berichten, zij hebben zelfs een aantal goede codeertechnieken verzonnen. Deze technieken zijn nu wel achterhaald, maar door op de verschillende technieken die in de loop der tijd zijn ontwikkeld voort te werken hebben wij nu bijzonder moeilijk kraakbare systemen ontwikkeld.
De Romeinse keizer Julius Caesar, die leefde van 100 v. Chr. tot 44 v. Chr., maakte bijvoorbeeld veel gebruik van twee verschillende vercijfermethodes, namelijk de Griekse karakter methode en de verschuifmethode. Hij moest wel meerder methodes gebruiken , omdat hij in een nogal moeilijke tijd leefde, en als keizer een grote kans had om vermoord te worden, hij moest dus uiterst voorzichtig zijn. De twee substitutiemethoden zullen overigens in het volgende hoofdstuk uitgebreider worden behandeld.
Na de Romeinen ontwikkelt cryptologie zich een tijd niet meer zo sterk, wel ontwikkelen een aantal monniken een eigen geheimschrift, namelijk de abbreviatuur, deze methode was gebaseerd op de Tyroonse Noten (woorden worden vervangen door onbetekenende afkortingen).
Cryptologie komt pas echt weer tot bloei in de Renaissance, het Vigenère-systeem komt bijvoorbeeld uit deze tijd. De opbloei van cryptografie komt door verschillende redenen.
Ten eerste doordat in deze periode vele oorlogen werden gevoerd en de koningen van de vele staten hun informatie niet aan vijandige wilden bekendmaken, men maakte dus steeds meer gebruik van cryptografie.
Ten tweede doordat in de Renaissance men heel erg bezig was met de Klassieke tijd, de Renaissance was de hergeboorte van deze tijd. Vandaar dat ook de cryptosystemen en technieken herontdekt werden.
Ten derde de opkomst van de boekdrukkunst, hierdoor werd kennis veel gemakkelijker verspreid en dus ook cryptotechnieken werden gemakkelijker verspreid en voor meer mensen toegankelijk.

Overigens ging de cryptologie niet alleen vooruit door middel van nieuwe systemen, de Italiaan Alberti heeft in 1466 namelijk een zogenaamde chifreerschijf uitgevonden, hiermee kon het coderen en decoderen van de monoalfabetische substitutiemethode van Caesar (het Caesar-cijfer) veel sneller gebeuren. Deze methode maakte het mogelijk dat je de 26! (= 403291461126605635584000000) mogelijke permutaties veel sneller kan doorzien. In feite zijn er overigens niet zoveel mogelijke permutaties, bijvoorbeeld niet in alle gevallen veranderen alle letters bij een gecodeerd bericht.
In de 18e en de 19e eeuw ontwikkelt de cryptologie zich verder doordat er nieuwe transmissiemedia ontstaan waarbij uitlekken van informatie gemakkelijker wordt en het dus vaak van groot belang wordt moeilijk kraakbare berichten te versturen. In deze tijd worden echter geen nieuwe cryptosystemen uitgevonden, de bestaande systemen worden alleen meer gebruikt.

De twee wereldoorlogen in de 20e eeuw en het interbellum zorgen voor de enorme sprong voorwaarts in de cryptologie. De enigmamachine (zie afbeelding 2) werd bijvoorbeeld uitgevonden. Naar deze machine hebben de Duitsers vooral tijdens het interbellum veel onderzoek gedaan. Dit apparaat hebben ze tijdens de 2de Wereldoorlog vooral gebruikt om geheime berichten aan hun bondgenoten te versturen. Een enigma is een apparaat met 5 codeerschijven en een toetsenbord met een schakelsysteem aan de achterkant. Als ze dan een gecodeerd bericht wilden versturen, typten ze het oorspronkelijke bericht op het toetsenbord in. Het schakelsysteem zorgde dat je gemakkelijk de schijven met elkaar kon schakelen. Ze gebruikten elke dag 3 van de vijf schijven ( die de gecodeerde letter aangaf) die elk ook op 26! konden worden gebruikt. In afbeelding 3 wordt dit principe schematisch weergegeven. Hier wordt een van de zoveel mogelijkheden weergegeven, je kan dan wel bedenken dat er oneindig veel mogelijkheden moeten zijn. Het kraken van een gecodeerd bericht was dan ook absoluut niet makkelijk: die kans stond in het begin, toen er nog niet zoveel trucjes waren, ongeveer gelijk aan 1/(1,5*10²°). Het zwakke punt van coderen met de enigma was dat elke dag de sleutel naar hun bondgenoten moest worden verstuurd. Deze werd af en toe door de vijand Afbeelding 3: Schijven Enigma (de geallieerden) onderschept. Ook verzamelden de Britten de beste wiskundigen in de ‘Government Code Cypher School’. Hier moesten 7000 specialisten proberen de gecodeerde Duitse berichten te ontcijferen, door zelf ook zo’n enigma te bouwen. Verder hadden ze nog allerlei andere trucjes om achter de sleutelwoorden van de gecodeerde berichten te komen.
Ook in de Koude oorlog werden nog vele cryptosystemen ontwikkeld, bijvoorbeeld het Diffie-Hellman systeem in 1976.
Als we kijken naar de geschiedenis van de cryptologie blijkt dat vooral de oorlogen van groot belang zijn geweest voor de ontwikkeling van deze wetenschap. De oorlogen waren namelijk de voornaamste reden voor het ontstaan van vele verschillende cryptosystemen, want in een oorlog probeerde men berichten geheim te houden voor de vijand.

Hoofdstuk 3: Verschillende manieren van encryptie

§1: Inleiding
Zoals we in het vorige hoofdstuk al gezegd hebben, zullen we in dit hoofdstuk een aantal cryptosystemen bespreken. De verschillende cryptosystemen zijn onderverdeeld in paragrafen en we kijken eerst naar twee monoalfabetische substitutiemethoden (als je elke letter door één andere letter gaat vervangen) van Caesar en vervolgens naar een aantal polyalfabetische (Als je elke letter door meerdere letters kan vervangen) substitutiemethoden.
Overigens willen we in deze korte inleiding meteen even melding maken van een foefje waar bij alle cryptosystemen van gebruik wordt gemaakt. Men maakt namelijk expres spellingsfouten in berichten om krakers op het verkeerde spoor te zetten. En dit idee is bij alle systemen van toepassing, vandaar dat we het even nu melden en het niet bij ieder systeem weer opnoemen. Overigens hebben wij geen spelfouten gemaakt aangezien wij alleen het idee van de verschillende systemen wilden uitleggen
Bij ieder systeem hebben we het woord Cleopatra omgezet in een gecodeerde boodschap om simpel te laten zien hoe het systeem werkt.
Bij het kraken van een gecodeerde tekst is het overigens vooral handig als je de taal en het codeersysteem van het oorspronkelijke bericht weet.

§2: Enkelvoudige substitutie
Bij enkelvoudige substitutie vervang je elke letter van het alfabet door een vaste andere letter. Dit is dus een monoalfabetische substitutievorm.

Sleutel:


Latijnse letter a b c d e f g h i j k l m n o p q r s t u v w x y z
Substi-tutie letter q w e r t y u i o n p a s d f g h j k l z x m c v b

Codering Cleopatra:

c l e o p a t r a
e a t f g q l j q

Probleem hierbij is echter de frequentie van de letters die in elke taal voorkomt. Door middel van frequentieanalyse van een tekst is het voor krakers heel gemakkelijk een tekst die door middel van enkelvoudige substitutie gecodeerd is, te kraken.
Elke letter komt gemiddeld een bepaald aantal keer voor in een tekst, het heeft een vaste frequentie, de ‘e’ komt bijvoorbeeld het vaakste voor, zie onderstaande tabel. Hierbij moet je wel zeker weten in welke taal het bericht geschreven is, aangezien elke letter in elke taal met een andere frequentie voorkomt.

Als je dus naar een gecodeerde tekst kijkt en de letter ‘k’ komt het vaakst voort is dit waarschijnlijk de gecodeerde letter voor de ‘e ‘, op deze manier valt dan iedere letter uit de gecodeerde tekst om te zetten. Overigens moet wel gezegd worden, dat het voor die tijd natuurlijk wel een goed systeem was.Maar tegenwoordig zal je dus een systeem nodig hebben waarbij je niet een letter simpelweg door een andere vervangt, je moet zorgen dat een kraker niet door zoiets simpels als frequentieanalyse een bericht weet te kraken.

§3: Caesar
Caesar maakte gebruik van 2 monoalfabetische vormen van substitutie:


§3.1: Griekse karaktermethode
Hierin werden Latijnse letters omgezet in Griekse letters. De ontvanger van het gecodeerde bericht moest natuurlijk wel het Griekse alfabet kennen. Vaak werd deze methode ook toegepast in combinatie met de verschuifmethode, ook wel het Caesar-cijfer genoemd. Deze methode zal in het 2de deel van deze paragraaf uitgelegd worden.
Sleutel:
Latijnse letter a b c d e f g h i j k l m n o p q r s t u v w x y z
Griekse letter α β γ δ ε ζ η θ ι κ λ μ ν ο π ξ ρ ς τ υ φ χ ψ ω

Codering Cleopatra:
c l e o p a t r a
γ λ ε o π α τ ρ α

Als je deze methode wilde kraken moest je het Griekse alfabet kennen, je kon de code echter ook kraken door middel van frequentieanalyse. Deze methode werd in de vorige paragraaf al uitgelegd. Overigens valt ook op dat een aantal van de Griekse letters nogal lijken op de Latijnse, als je bijvoorbeeld kijkt naar de a, b, e, i, k, o etc. Zie je dat hiervan het Griekse symbool erg lijkt op het Latijnse en dat maakt het dus ook gemakkelijk deze berichten toch te kunnen begrijpen, ook al ken je het Griekse alfabet niet.
Voor die tijd was deze methode een erg betrouwbare manier om berichten te coderen, aangezien ze toen nog niet zo op de hoogte waren van de frequentieanalyse en het Griekse alfabet ook nog niet bekend was bij het normale volk.


§3.2: Caesar-cijfer
Hierbij verschuif je alle letters van het oorspronkelijke bericht met K naar rechts. Deze K is van tevoren afgesproken met de ontvanger.
Bijvoorbeeld: K=1, dan wordt A = B, B = C,..,.., Z = A
Sleutel: K=3
Codering Cleopatra:
c l e o p a t r a
K=1 d m f p q b u s b
K=2 e n g q r c v t c
K=3 f o h r s d w u d

Overigens willen we bij deze methode nog een kleine opmerking maken. Als je namelijk een sleutel hebt van bijvoorbeeld k= 205, dan is het erg ingewikkeld om op bovenstaande manier op het juiste codewoord te komen, dit zal je gemakkelijker moeten bekijken. Dit doe je door iedere letter een cijfer te geven (a=0, b=1, c=2 etc. Overigens kun je ook bij A=5 beginnen en zo doorgaan zolang je maar blijft optellen, maar het is logischer om bij 0 of 1 te beginnen). Vervolgens tel je K hierbij op. De letter A wordt dan 0 + 205 = letter 205. Je gaat echter maar tot 25 omdat we bij de 0 beginnen te tellen (als je a=1 zou nemen, en je dus bij de 1 begint, eindig je bij de 26), dus zul je er steeds 26 vanaf moeten trekken tot je een bepaalde rest overhoudt en dit is dan je gecodeerde letter, dit heet modulorekenen en zal in het volgende hoofdstuk beter worden uitgelegd.
We zullen het codewoord weer met k=3 omzetten, maar nu echter op deze gemakkelijkere manier. Wij hebben tevens een tabbel toegevoegd waarop makkelijk valt af te lezen welk getal bij welke letter past.


Letter a b c d e f g h i j k l m n o p q
Getal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Letter r s t u v w x y z
Getal 17 18 19 20 21 22 23 24 25

Letters c l e o p a t r a
Getallen 2 11 4 14 15 0 19 17 0
Sleutel 3 3 3 3 3 3 3 3 3
Codeergetallen 5 14 7 17 18 3 22 20 3
Codeerletters f o h r s d w u d

Het Caesar-cijfer is heel simpel te ontcijferen door alle mogelijke sleutels uit te proberen. Je neemt dus gewoon een stuk vercijferde tekst, trekt elke mogelijke sleutelwaarde ervan af en kijkt welke sleutel een stuk Nederlandse tekst oplevert.
Een gemakkelijkere methode om een Caesarvercijfering te kraken is door middel van de al eerder besproken frequentieanalyse.

§4: Vigenère
Een grote stap voorwaarts is de uitvinding van de Fransman Blaise de Vigenère. Hij verving ook letters uit de originele tekst door andere gecodeerde letters, maar nu met het verschil dat er meerdere mogelijkheden per letter waren. Je kreeg dus niet bijvoorbeeld voor de ‘A’ alleen een ‘U’, maar het kon nu ook een ‘Z’ of een ‘J’ worden. Dit werd mogelijk gemaakt door middel van een sleutelwoord en verschuiving. Dit wordt ook wel polyalfabetische substitutie genoemd.

Vigenère had voor het eerst een echt systeem ontwikkeld waarbij je de geheime tekst niet zomaar kunt ontcijferen aan de hand van de frequentie van de letters. Zoals al eerder werd gezegd komt normaal gesproken bij elke taal een bepaalde letter van het alfabet met een bepaalde frequentie voor in elke tekst. Als je de verschuifmethode zou gebruiken, dan krijg je in de gecodeerde tekst ook steeds 1 letter met dezelfde frequentie. Hieruit zou je dan de originele letter kunnen afleiden. Bij Vigenère’s polyalfabetische substitutiemethode is dit niet geval, aangezien je bij deze methode meerdere mogelijkheden per letter hebt door het gebruik van een sleutelwoord.
Een simpel uitleg van deze methode is dat je bij een oorspronkelijk bericht steeds een codewoord optelt, waarna je een gecodeerd bericht krijgt. Een betere uitleg van dit systeem volgt nu door middel van een voorbeeld.
Nu vertalen we Cleopatra aan de hand van de Vigenère-tabel. Als sleutelwoord gebruiken we MUS.
Sleutel: MUS en de tabel op de volgende pagina.

0 a b c d e f g h i j k l m n o p q r s t u v w x y z
1 b c d e f g h i j k l m n o p q r s t u v w x y z a
2 c d e f g h i j k l m n o p q r s t u v w x y z a b
3 d e f g h i j k l m n o p q r s t u v w x y z a b c
4 e f g h i j k l m n o p q r s t u v w x y z a b c d
5 f g h i j k l m n o p q r s t u v w x y z a b c d e
6 g h i j k l m n o p q r s t u v w x y z a b c d e f
7 h i j k l m n o p q r s t u v w x y z a b c d e f g
8 i j k l m n o p q r s t u v w x y z a b c d e f g h
9 j k l m n o p q r s t u v w x y z a b c d e f g h i
10 k l m n o p q r s t u v w x y z a b c d e f g h i j
11 l m n o p q r s t u v w x y z a b c d e f g h i j k

12 m n o p q r s t u v w x y z a b c d e f g h i j k l
13 n o p q r s t u v w x y z a b c d e f g h i j k l m
14 o p q r s t u v w x y z a b c d e f g h i j k l m n
15 p q r s t u v w x y z a b c d e f g h i j k l m n o
16 q r s t u v w x y z a b c d e f g h i j k l m n o p
17 r s t u v w x y z a b c d e f g h i j k l m n o p q
18 s t u v w x y z a b c d e f g h i j k l m n o p q r
19 t u v w x y z a b c d e f g h i j k l m n o p q r s
20 u v w x y z a b c d e f g h i j k l m n o p q r s t
21 v w x y z a b c d e f g h i j k l m n o p q r s t u
22 w x y z a b c d e f g h i j k l m n o p q r s t u v
23 x y z a b c d e f g h i j k l m n o p q r s t u v w
24 y z a b c d e f g h i j k l m n o p q r s t u v w x
25 z a b c d e f g h i j k l m n o p q r s t u v w x y
Tabel 1: De Vigenère tabel

Zoals je ziet hebben we de rijen waarin de ‘m’, de ‘u’ en de ‘s’ staan, gemarkeerd, in deze rijen moet je namelijk kijken om de gecodeerde letters te krijgen. Als we bijvoorbeeld de eerste letter van het woord Cleopatra nemen, de ‘c’dus, moeten we kijken waar deze rij de rij van het de eerste letter van het sleutelwoord mus, de ‘m’ dus, kruist. In tabel 2, waarbij we de Vigenère-tabel een klein beetje ingekort hebben, is duidelijk te zien hoe je het kruispunt tussen de ‘c’ en de ‘d’bepaalt. Als gecodeerde letter krijg je dan de letter ‘f’. Zowel de ‘d’ als de ‘c’ kunnen hier ene letter uit het sleutelwoord zijn. Als hier bijvoorbeeld de ‘d’ uit het sleutelwoord afkomstig is, dan is de ‘c’ afkomstig uit de originele tekst.

a b c d
b c d e
c d e f
d e f g
Tabel 2: Ingekorte Vigenère-tabel.
Toepassing op het woord Cleopatra:
c l e o p a t r a
m u s m u s m u s
o f w a j s f l s

Je kan nu ook beredeneren dat hoe langer en hoe gevarieerder een sleutelwoord is, hoe moeilijker de code te kraken is, het aantal toevallige overeenkomsten wordt dan namelijk kleiner.
Bij 3 letters heb je een kans om het gecodeerde bericht te raden van:
1/26 x 1/ 26 x 1/26 = (1/26)^3 = 5.69 x 10^-5
Bij 4 letters heb je een kans om het gecodeerde bericht te raden van:
1/26 x 1/26 x 1/ 26 x 1/26 = (1/26)^4 = 2.19 x 10^-6

De kans om te kraken is neemt dus af met 5.69 x 10^-5 26
2.19 x 10^-6 = 1
3-sleutelwoord : 4-sleutelwoord = 26 : 1 . Dat wil dus zeggen dat je bij een 3-sleutelwoord 26 keer groter is dan voor een 4-letter sleutelwoord.
Voor iedere extra letter in het sleutelwoord maakt de kans dat de code wordt gekraakt 26 keer zo klein. In formule:
‘kraakkans‘ voor een n-lettersleutelwoord = (1/26)^n
toename in ‘kraakkans’ voor een n-lettersleutelwoord in verhouding tot een 1-lettersleutelwoord = 26^(n-1).
Bijvoorbeeld bij n=6, dan is de kans om de code te kraken in verhouding tot die van een
1-lettersleutelwoord 26^(6-1)= 26^5=1,2x10^7 keer zo klein.
Controle: Bij 1 letter heb je een kans om het gecodeerde bericht te raden van:
1/26 = (1/26)^1 = 3.85 x 10^-2
Bij 6 letters heb je een kans om het gecodeerde bericht te raden van:
1/26 x 1/26 x 1/ 26 x 1/26 x 1/ 26 x 1/26 = (1/26)^6= 3,24 x 10^-9
de kans om te kraken is neemt dus af met 3,85x 10^-2 1,2 x10^7 26^5
3,24 x 10^-9 = 1 = 1
1-sleutelwoord : 6-sleutelwoord = 26^5 : 1 . Dat wil dus zeggen dat de kraakkans bij een 1-lettersleutelwoord 26^5 keer groter is dan voor een 6-lettersleutelwoord.

Tegenwoordig kan men met behulp van een computer ook de Vigenère-codering redelijk snel kraken, zelf hebben wij in het laatste hoofdstuk van ons werkstuk ook een Vigenère-codering proberen te kraken, echter wel handmatig zoals ze dat in de tijd van Vigenère ook moesten doen. Het is natuurlijk logisch dat hoe langer en hoe gevarieerder (dus met zo min mogelijk overeenstemmende letters) het sleutelwoord, hoe moeilijker het bericht te kraken, vandaar dat wij in hoofdstuk 4, waar wij zelf een stukje zullen kraken, een relatief kort sleutelwoord hebben gebruikt.

§5: Diffie-Hellman
Bij vele manieren van coderen komt altijd het probleem van het overbrengen van de sleutel. Dat is meestal het zwakste punt van de hele codering, want als je de sleutel aan de ontvanger vertelt, loop je altijd de kans dat er een ongewenst tussenpersoon achter komt; via de telefoon kan het afgeluisterd worden, en via de post kan het onderschept worden De enige veilige manier was het persoonlijk te vertellen, maar dan was de zin van het bericht opsturen ook weg. Dat probleem hadden Whitfield Diffie en Martin Hellman ook.. Ze wilden een manier verzinnen waarop het mogelijk was een bericht naar de ander te versturen, zonder dat ze van tevoren een sleutel hadden afgesproken.
Toen bedachten zij een manier waarbij de ontvanger en de verzender alleen zijn eigen letterlijke (een daadwerkelijke) sleutel nodig hadden om het bericht veilig naar de ander over te brengen: de verzender stopt het bericht in een metalen koffer en zet er een slot op. Hij houdt de sleutel zelf, en stuurt de koffer naar de persoon waarvoor het bericht is bestemd. Deze zet er een eigen slot bij, en stuurt het weer terug. Deze haalt zijn slot er weer vanaf, en stuurt de koffer vervolgens weer naar de ontvanger, waarna deze zijn slot eraf haalt, en vervolgens ook het bericht kan lezen. Dit was de concrete versie waarvan ze een wiskundige, abstracte versie wilden creëren. Alleen bleek dit niet zo gemakkelijk te gaan, aangezien bij wiskunde de regel geldt: wat er als laatste op gaat, moet er als eerste af. Met een voorbeeld zullen wij deze regel toelichten.
Persoon 1 geeft iedere letter van het alfabet een willekeurige andere letter. Persoon 2 doet hetzelfde, maar voegt zijn eigen willekeurige letters toe.
Sleutel van persoon 1:
Abc def ghi jkl mno pqr stu vwx yz
HFS UGT AKV DEO YJB PNX WCQ RIM ZL

Sleutel persoon 2:
Abc def ghi jkl mno pqr stu vwx yz
CPM GAT NOJ EFW IQB URY HXS DZK LV

Bericht cleopatra
Vercijferd met sleutel 1: sogbphcxh
Vercijferd met sleutel 2: hbrpuomko
Ontcijferd met sleutel 1: kfxpqbyeb
Ontcijferd met sleutel 2: ftkurplap (hier had dus cleopatra moeten staan)

Zoals je hierboven kunt zien klopt de beredenering van Diffie en Hellman niet op de wiskundige methode. Met bovenstaand voorbeeld hebben we laten zien dat je niet op de eenvoudige methode van Diffie en Hellman kon werken. Er zit dus nog een fout in het systeem.. Diffie en Hellman moesten nog iets extra’s toevoegen aan hun systeem.

Na intensief onderzoek vond Hellman een oplossing voor dit probleem. Het idee van het systeem was wel goed, maar er moest alleen een kleine wijziging aangebracht worden; de sleutels moesten aan bepaalde eisen voldoen.

Twee personen spreken onderling 2 getallen af: P en Y. P is een priemgetal (alleen zonder rest deelbaar door zichzelf en 1, bijvoorbeeld 3 en 11), en groter dan 1. Y moet tussen 1 en P in liggen, en hoeft geen priemgetal te zijn.
Beide personen nemen vervolgens een geheim getal (persoon 1 neemt getal A en persoon 2 neemt getal B waarbij geldt dat zowel getal A als B groter moet zijn dan 1 en kleiner dan P, 1


Persoon 1: Y^A mod P a
Persoon 2: Y^B mod P b
Daarna sturen ze elkaar de uitkomsten toe (persoon 1 stuurt dus a naar persoon 2, en persoon 2 stuurt b naar persoon 1) en vervolgens moeten ze onderstaande berekening uitvoeren:
Persoon 1: b^A mod P
Persoon 2: a^B mod P
De uitkomsten die ze hierbij krijgen zijn gelijk aan elkaar. Deze uitkomst is dan voor hen de sleutel. De uitkomsten moeten wel aan elkaar gelijk zijn, dit bewijzen we door bovenstaande berekeningen aan elkaar gelijk te stellen:
Persoon 1: Y^A mod P = a en b^A mod P = sleutel
Persoon 2: Y^B mod P = b en a^B mod P = sleutel
Als je deze 2 berekeningen samenvoegt krijg je eigenlijk de volgende berekening:
(Y^A)^B mod P= (Y^B)^A mod P Y^AB mod P= Y^BA mod P
Deze methode is op zich geen manier van coderen, dit is maar een gedeelte van het coderen. Je berekent eigenlijk alleen de sleutel die geheim is voor buitenstaanders en door middel van deze sleutel zou je weer een bericht kunnen (de)coderen.
Hieronder volgt bovenstaand gegeven, maar dan aan de hand van getallen, om het wat duidelijker te maken.
Persoon 1 en persoon 2 spreken af Y = 7 en P = 11.
1. Nu kiest persoon 1 een willekeurig getal, dat tussen de 1 en de P, dus 11 moet liggen, bijvoorbeeld 3 en houdt dat geheim. We noemen dat getal A.
Persoon 2 kiest ook een willekeurig getal dat ook tussen de 1 en 11 ligt, bijvoorbeeld 6 en houdt dat geheim, we noemen het getal B.
2. Persoon 1 rekent het volgende uit: Y^A mod P = 7^3 mod 11 = 2 we noemen dit a. En persoon 1 verstuurt dit getal naar persoon 2.
Persoon 2 doet precies hetzelfde: Y^B mod P = 7^6 mod11 = 4 noemen we b. Persoon 2 stuurt deze uitkomst naar persoon 1.
3. Persoon 1 berekent b^A mod 11 = 4^3 mod 11 = 9
Persoon 2 berekent a^B mod 11 = 2^6 mod 11 = 9
Zoals je ziet klopt het hele systeem ook met getallen, zoals we dat hierboven bewezen hebben. Een of andere afluisteraar kan deze waarde niet achterhalen. Stel hij/zij vangt alle waarden op die afgesproken en verteld zijn via de telefoon, dan nog weet die persoon niet welke waarde hij/zij in stap 2 moet nemen voor A of B.

Hoofdstuk 4: Coderen Modulo

§1: Inleiding
Zoals je al eerder zag bij bijvoorbeeld de monoalfabetische substitutie van Caesar kan je bij coderen gebruik maken van het wiskundig principe modulorekenen. In dit hoofdstuk zullen we uitleggen wat modulorekenen is. Allereerst zullen we uitleggen wat het woord ‘modulo’ betekent. ‘Modulo’ komt van het Latijnse woord ‘modulus’ dat betekent maatstaf. Modulo is de ablativus van het woord modulus en betekent dus ‘met maatstaf’. ‘Modulorekenen’ betekent dus rekenen met een maatstaf, je rekent een som uit en houdt daarbij rekening met een bepaalde maatstaf.
Om nu het concept modulorekenen goed duidelijk te maken zullen we eerst een voorbeeld geven waarbij je toch al onbewust gebruik maakt van modulorekenen en vervolgens een paar simpele rekensommen oplossen met behulp van modulorekenen.

§2: Klokrekenen
Kloklezen, met andere woorden op een klok de tijd kunnen aflezen heeft ieder mens als kind al geleerd. Je ziet wijzers, die wijzen een bepaalde tijd aan, bijvoorbeeld 9.00 uur. Als je 24 uur later weer op de klok kijkt zal het dus 9 + 24 = 33 uur zijn. Bij kloklezen benaderen wij de tijd echter anders, wij zeggen nu weer dat het gewoon 9 uur is. Blijkbaar ga je bij tijd maar tot 24 en begin je vervolgens weer vooraan bij tellen, het modulogetal is dan 24 en de rest die je overhoudt is de tijd. Als het dus 12 uur is, dan is het 366 uur later 378 uur, of ook wel 18.00 uur en er zijn dan 15 dagen verstreken, dit maakt echter niet uit voor de tijd op de klok je deelt dus eigenlijk de hele tijd door 24, en de rest die je dan overhoudt geeft de tijd weer.
Bovenstaand principe is het modulorekenen, het wordt bij tijd echter ook wel eens klokrekenen genoemd. Overigens wordt er bij klokrekenen ook wel eens uitgegaan van modulo 12, dan zeg je om 7 uur ’s avonds namelijk niet dat het 19 uur is, maar 7 uur, modulo 12 dus.

§3: Sommen modulorekenen
Nu is het idee achter modulorekenen waarschijnlijk wel duidelijk, toch zullen we nog een paar kleine rekensommetjes maken ter extra verduidelijk van het modulorekenen. Wij hebben steeds met modulo 4 gewerkt, dit is overigens volstrekt willekeurig gekozen.
7 + 4 = 7 ≡ 3 (mod 4)
4 ≡ 0 (mod 4)
11 ≡ 3 (mod 4) + 0 (mod 4) ≡ 3 (mod 4)
5 + 91 = 5 ≡ 1 (mod 4)
91 ≡ 3 (mod 4)
96 ≡ 3 (mod 4) + 1 (mod 4) ≡ 4 (mod 4) ≡ 0 (mod 4)
12 + 133 = 12 ≡ 0 (mod 4)
133 ≡ 1 (mod 4)
145 ≡ 0 (mod 4) + 1 (mod 4) ≡ 1 (mod 4)
497 – 33 = 497 ≡ 1 (mod 4)
33 ≡ 1 (mod 4)
464 ≡ 1 (mod 4) – 1 (mod 4) ≡ 0 (mod 4)
5 x 4 = 5 ≡ 1 (mod 4)
4 ≡ 0 (mod 4)
20 ≡ 1 (mod 4) x 0 (mod 4) ≡ 0 (mod 4)
12 x 6 = 12 ≡ 0 (mod 4)
6 ≡ 2 (mod 4)
72 ≡ 2 (mod 4) x 0 (mod 4) ≡ 0 (mod 4)
17 x 19 = 17 ≡ 1 (mod 4)
19 ≡ 3 (mod 4)
323 ≡ 1 (mod 4) x 3 (mod 4) ≡ 3 (mod 4)
366 x 405 = 366 ≡ 2 (mod 4)
405 ≡ 1 (mod 4)
148230 ≡ 2 (mod 4) x 1 (mod 4) ≡ 2 (mod 4)
20 / 10 40 ≡ 0 (mod 4)
10 ≡ 2 (mod 4)
4 ≡ 0 (mod 4) / 2 (mod 4) ≡ 0 (mod 4)
345 / 5 = 345 ≡ 1 (mod 4)
5 ≡ 1 (mod 4)
69 ≡ 1 (mod 4) / 1 (mod 4) ≡ 1 (mod 4)
480 / 12 = 480 ≡ 0 (mod 4)
12 ≡ 0 (mod 4)
40 ≡ 0 (mod 4) / 0 (mod 4) ≡ 0 (mod 4)

Mochten de rekensommen op de vorige pagina niet helemaal duidelijk zijn, dan zal de onderstaande uitleg hopelijk alles verduidelijken.
Modulo 4 wil zeggen dat je alleen werkt met restgetallen 0, 1, 2 en 3. Bij bijvoorbeeld modulo 6 zou je te maken hebben met de restgetallen 0, 1, 2, 3, 4, 5. Als we nu echter teruggaan naar onze sommen met modulo 4 en we tellen twee getallen op, dan zetten we eerst beide getallen om in modulogetallen, dit doe je door van een getal net zo lang het modulo getal (in dit geval 4) af te trekken totdat je een rest overhoudt. Als je vervolgens de twee modulogetallen optelt, en er eventueel weer het modulogetal van aftrekt, krijg je een uitkomst gegeven in modulo. Overigens kun je natuurlijk ook gewoon alleen de uitkomst omzetten in ene modulogetal, als alles goed is, is dit hetzelfde modulogetal.
Wij hebben 3 sommen opgeteld, 3 afgetrokken, 3 vermenigvuldigd en 3 gedeeld. Bij aftrekken, delen en vermenigvuldigen werkt het hetzelfde als bij optellen alleen zul je dan de modulogetallen respectievelijk moeten aftrekken, delen of vermenigvuldigen.
Overigens zie je dat er het ≡-teken is gebruikt in plaats van het =-teken, dit gebruik je als je modulo rekent. Het ≡-teken betekent ‘is congruent met ‘ (=is overeenstemmend met)
Bij de rekenvoorbeelden zijn we steeds uitgegaan van positieve resten, je kan echter ook met een negatief restgetal werken, je werkt een negatieve rest dan gewoon om naar een positief restgetal, kijk maar:
2 x 5 2 ≡ -2 (mod 4)
5 ≡ 1 (mod 4)
10 ≡ -2 (mod 4) x 1 (mod 4) ≡ -2 (mod 4) ≡ (-2 + 4) (mod 4) ≡ 2 (mod 4)
Bij delen hebben we er ook steeds voor gezorgd dat je op een geheel getal uitkomt, bijvoorbeeld 4/2 = 2 of 500/10 = 50. Als je echter op een breuk zou uitkomen moet je de uitkomst op een andere manier kunnen benaderen. Je kan dit op verschillende manieren doen. Stel we gaan uit van de som 3/6 ≡ b (mod 13). Dan maken we een tabel om de juiste uitkomst te kunnen vinden:

b 0 1 2 3 4 5 6 7 8 9 10 11 12
(6 x b) mod 13 0 6 12 5 11 4 10 3 9 2 8 1 7

Uit de tabel kun je dan afleiden dat 3/6 ≡ 7 (mod 13).
Op de bovenstaande manier kun je nog meer sommen oplossen, zolang ze maar uitgaan van modulo 13 en delen door 6, bijvoorbeeld 8/6 ≡ 10 (mod 13).
Als je echter meerdere sommen hebt waarbij je steeds een ander modulogetal en/of een andere delingsfactor hebt, dan is het wat overdreven steeds zo’n tabel te maken, het kan namelijk ook op een andere, helaas ook redelijk uitgebreide, manier.
In dit geval moet je de som omzetten 3/6 ≡ b (mod 13)  6b ≡ 3 (mod 13). En dan ga je gewoon uit van de mogelijkheden 13n + 3. eerst neem je n =1, vervolgens n = 2 enzovoorts tot je b als geheel getal krijgt.
6b = 13 x 1 + 3 = 16  b is geen geheel getal
6b = 13 x 2 + 3 = 29  b is geen geheel getal
6b = 13 x 3 + 3 = 42  b is een geheel getal = 7, dus 3/6 ≡ 7 (mod 13).
Uit bovenstaande valt af te leiden dat je een getal kunt omzetten volgens de formule:
a ≡ b (mod m), als a = b + k x m
m = het modulogetal
b = de rest van a en kleiner dan m
k = hoe vaak m in a past, k kan elk geheel (positief en negatief) getal zijn
k = . k is een element van
Bij het optellen, aftrekken, vermenigvuldigen en delen horen dan respectievelijk de formules:
a ≡ b (mod m)
c ≡ d (mod m)
a + c ≡ b (mod m) + d (mod m)
a – c ≡ b (mod m) – d (mod m)
a x c ≡ b (mod m) x d (mod m)
a / c ≡ b (mod m) / d (mod m)

§4: Modulo rekenen met letters
Zoals we hierboven hebben laten zien kun je ieder willekeurig (liefst geheel) getal omzetten in een modulogetal. Als nu bij iedere letter in het alfabet een willekeurig getal hoort, en je zet dit getal om in een modulogetal, dan tel je hier een sleutelwoord bij op, de uitkomst hiervan zet je om in een modulogetal en dan hoef je bij deze modulo-uitkomst alleen nog de bijbehorende letter te zoeken.
Om de bovenstaande beknopte uitleg iets tastbaarder te maken zullen we het toelichten met een voorbeeld. Stel wij hebben de zin:
“Modulorekenen is een goede manier om te coderen.”
Wij willen deze zin nu gaan coderen door middel van de modulocodering. Via de modulocodering kunnen we echter alleen getallen omzetten, dus zullen we de letters in het alfabet allemaal een nummer geven. Overigens zal dit wel van tevoren met de ontvanger moeten zijn afgesproken, anders kan deze de tekst niet decoderen.

Letter getal Letter getal
A 11 N 53
B 44 O 34
C 64 P 81
D 88 Q 28
E 92 R 12
F 65 S 68
G 2 T 96
H 36 U 54
I 78 V 6
J 234 W 67
K 65 X 23
L 4 Y 62
M 9 Z 90

Eerst hebben we de zin nog eens opgeschreven, vervolgens hebben we het juiste getallen bij de letters gezocht. Vervolgens hebben we het juiste modulogetal erbij gezocht. Om de uiteindelijke gecodeerde zin te krijgen hebben we in de Vigenère-tabel gekeken waar alle modulocijfers de letters van het sleutelwoord ‘mus’ kruisen.

Modulogetal = 26

m o d u l o r e k e n e n i s e e n g o e d e
getal 9 34 88 54 4 34 12 92 65 92 53 92 53 78 68 92 92 53 2 34 92 88 92
Modulo-restgetal 9 8 10 2 4 8 12 14 13 14 1 14 1 0 16 14 14 1 2 8 14 10 14
Sleutelwoord
‘mus' m u s m u s m u s m u s m u s m u s m u s m u
Nieuwe
letter v c c o y a y i f a v g n u i a i t o c g w i

m a n i e r o m t e c o d e r e n
Getal 9 11 53 78 92 12 37 9 96 92 64 34 88 92 12 92 53
Modulo-getal 9 11 1 0 14 12 11 9 18 14 12 8 10 14 12 14 1
Sleutelwoord ‘mus’ s m u s m u s m u s m u s m u s m
Nieuwe letter p x v s a g d v m g y c c a g g n

De gecodeerde zin is dus: vccoya yifavgn ui ait ocgwi bxvsag dv mg yccaggn

Hoofdstuk 5: Decoderen Vigenère-systeem

We weten nu wel wat de kans is om een gedecodeerd bericht te kraken, hoe je echter een Vigenère-codering kunt kraken weten we nog niet, aangezien je niet gemakkelijk het gecodeerde bericht kunt afleiden door middel van frequentieanalyse. Om een tekst die door middel van het Vigenère-systeem is gecodeerd te kraken, moet je verschillende stappen doorwerken (dit is de methode van de Franse cryptograaf Kerckhoff):
A. Bepaal eerst de lengte van de sleutel door de frequentiedichtheid van de samenvallende letters bij verschillende verschuivingen van de tekst op te stellen
B. Zoek vervolgens de sleutel door de frequentiedichtheid van de letters van delen van de tekst op te stellen
C. Leidt de oorspronkelijke tekst af uit de gecodeerde tekst.
Stap C is natuurlijk het gemakkelijkst, hier hoef je namelijk alleen met behulp van de informatie die je hebt gekregen door stap A en B te doorlopen, een tekst om te zetten. Stap C is wat de ontvanger van een gecodeerd bericht ook doet, met behulp van een sleutel een tekst om zetten. Een ontvanger hoeft dus alleen stap C uit te voeren.

Ad A: Bepaal de lengte van de sleutel:
Het bepalen van de lengte van het sleutelwoord kan op verschillende manieren, een hiervan zullen we nader toelichten.
Het bepalen van de lengte van het sleutelwoord doe je in een paar stappen:
1. Bereken de kans dat 2 willekeurige letters in een Nederlandse tekst gelijk zijn
2. Bereken de overeenkomsten tussen letters met verschillende lengte sleutelwoorden.
3. Afleiden wat de lengte van het sleutelwoord is.
Bij stap 3 zullen we meteen uitleggen waarom we de beide vorige stappen hebben doorlopen.

1. Bereken de kans dat 2 willekeurige letters in een Nederlandse tekst gelijk zijn

Hieronder staan in de tabel de relatieve frequenties van iedere letter in het alfabet. Door middel van deze tabel kunnen we de kans uitrekenen dat twee willekeurige letters in een Nederlandse tekst gelijk zijn. Hiertoe moet je de kans berekenen dat de beide letters a zijn, plus de kans dat ze beiden b zijn, plus de kans dat ze beiden c zijn etc.
De kans dat een letter beide a is, is de relatieve frequentie van a, maal de relatieve frequentie van a. Met andere woorden, de relatieve frequentie van a in het kwadraat.

Letter Relatieve
Frequentie Letter Relatieve
Frequentie Letter Relatieve Frequentie
A 0.0740 J 0.0010 S 0.0360
B 0.0140 K 0.0190 T 0.0680
C 0.0150 L 0.0400 U 0.0140
D 0.0610 M 0.0180 V 0.0340
E 0.1920 N 0.1110 W 0.0150
F 0.0080 O 0.0560 X 0.0010
G 0.0380 P 0.0160 Y 0.0170
H 0.0240 Q 0.0000 Z 0.0130
I 0.0550 R 0.0590

Relatieve frequentie noemen we p.
Als we de kans dat twee willekeurige letters hetzelfde zijn willen berekenen, is dat in formulevorm:
(p(a))² + (p(b))² + ... + (p(z))² = (0.0740)² + (0.0140)² + ... + (0.0130)² = 0.0810

2. Bereken de overeenkomsten tussen letters met verschillende lengte sleutelwoorden

We gebruiken de tekst ‘Er was eens lang geleden een prinses, zij vond haar prins en leefde nog lang en gelukkig’
Deze tekst zetten we om door middel van het 3letter-sleutelwoord ‘Mus’. Dan krijgen we een gecodeerde bericht, en als kraker krijg je dit gecodeerde bericht te zien. Wil ik nu de lengte van het sleutelwoord berekenen, dan moet ik verschillende lengte sleutelwoorden proberen. Wij gaan even ervan uit dat je weet dat het óf een drieletterig of een vierletterig-sleutelwoord is. Als je nu wilt uitvinden of je te maken hebt met een drieletterig-sleutelwoord, dan schuif je alle letters van het gecodeerde bericht 3 plaatsen op en bepaal je het aantal toevallige overeenkomsten. Hetzelfde doe je voor een vierletterigsleutelwoord, alleen schuif je de gecodeerde letters dan 4 plaatsen op.
Opbouw tabel:
Oorspronkelijke zin
sleutelwoord
Gecodeerd bericht
Kraken met 3letter-sleutelwoord
Kraken met 4letter-sleutelwoord

Tekst gecodeerd met 3letter-sleutelwoord Mus:

e r w a s e e n s l a n g g e l e d e n e e n p r i n s e s z i j
m u s m u s m u s m u s m u s m u s m u s m u s m u s m u s m u s
q l o m m w q h s x u f s a w x y v q h w q h h d c f e y s l c b
q l o m m w q h s x u f s a w x y v q h w q h h d c f e y s
q l o m m w q h s x u f s a w x y v q h w q h h d c f e y
v o n d h a a r p r i n s e n l e e f d e n o g l a n g e n
m u s m u s m u s m u s m u s m u s m u s m u s m u s m u s
h i f p b s m l h d c f e y f x y w r x w z i y x u f s y f
l c b h i f p b s m l h d c f e y f x y w r x w z i y x u f
s l c b h i f p b s m l h d c f e y f x y w r x w z i y x u
g e l u k k i g
m u s m u s m u
s y d g e c u a
s y f s y d g e
f s y f s y f s

3. Afleiden wat de lengte van het sleutelwoord is

Kortom overeenkomsten met 3lettersleutelwoord: 8/71 = 0.11268
overeenkomsten met 4lettersleutelwoord: 3/71 = 0.04225
Overigens valt op dat de drie overeenkomsten met het 4lettersleutelwoord, toevallig zijn, het zijn niet combinaties van dezelfde letters, het zijn echter 2 verschillende combinaties met dezelfde uitkomst. We hebben bijvoorbeeld bij het 3lettersleutelwoord als eerste de letter q aangestreept, die q is een optelling van de e en de m en als we dan 3 plaatsen terugkijken is de andere q ook een optelling van de letters e en m. Met andere woorden, de twee gecodeerde q’s staan voor dezelfde “oorspronkelijke”e. Als we echter bij het 4lettersleutelwoord kijken, blijkt dat anders et zijn. Als eerste hebben we de s aangestreept, deze s is een optelling van de g en de m, als we 4 plaatsen terugkijken is de andere s ene optelling de letters s en s. Met andere woorden het is puur toeval dat er twee s’en in de gecodeerde tekst staan, ze coderen niet dezelfde “oorspronkelijke” letter.
Het aantal overeenkomsten bij een 3lettersleutelwoord, 0.11268 (stap 2) is veel hoger dan het aantal toevallige overeenkomsten in een willekeurige tekst, namelijk .0810 (stap 1). Je weet dus dat je te maken hebt met een 3lettersleutelwoord (stap 3).

Om de stappen die we op de vorige pagina’s hebben doorlopen, te bewijzen, hebben we dezelfde tekst nogmaals omgezet ditmaal met behulp van het 4lettersleutelwoord ‘hond’. Zoals dadelijk zal blijken kun je nu ook met dezelfde methode bewijzen dat de lengte van het sleutelwoord 4 letters is. Stap 1 kunnen we hier dan natuurlijk achterwege laten, we hebben de uitkomst namelijk al eens uitgerekend.

2. Bereken de overeenkomsten tussen letters met verschillende lengte sleutelwoorden

We gebruiken weer de tekst ‘Er was eens lang geleden een prinses, zij vond haar prins en leefde nog lang en gelukkig’
Nu zetten we de tekst om door middel van het 3letter-sleutelwoord ‘Hond’. We doen weer hetzelfde; schuiven de gecodeerde letters weer 3 of 4 plaatsen op en tellen de overeenkomsten
Tekst gecodeerd met 4letter-sleutelwoord Hond:

e r w a s e e n s l a n g g e l e d e n e e n p r i n s e s z i j
h o n d h o n d h o n d h o n d h o n d h o n d h o n d h o n d h
l f j d z r a q z z n q n u r o l r r q l s a s y w a v l g m l q
l f j d z r a q z z n q n u r o l r r q l s a s y w a v l g
l f j d z r a q z z n q n u r o l r r q l s a s y w a v l
v o n d h a a r p r i n s e n l e e f d e n o g l a n g e n
o n d h o n d h o n d h o n d h o n d h o n d h o n d h o n
j b q k v n d y d e l u g r q s s r i k s a r n z n q n r a
m l q j b q k v n d y d e l u g r q s s r i k s a r n z n q
g m l q j b q k v n d y d e l u g r q s s r i k s a r n z n
g e l u k k i g
d h o n d h o n
j l z h n r w t
n r a j l z h n
q n r a j l z h

3. Afleiden wat de lengte van het sleutelwoord is

Kortom overeenkomsten met 3lettersleutelwoord: 3/71 = 0.04225
overeenkomsten met 4lettersleutelwoord: 8/71 = 0.11268
Ook hier valt weer op dat de drie overeenkomsten met het 3lettersleutelwoord, toevallig zijn, het zijn niet combinaties van dezelfde letters, het zijn echter 2 verschillende combinaties met dezelfde uitkomst. Dit zullen we hier niet verder toelichten, aangezien we dat op de vorige pagina al hebben uitgelegd.
In dit geval zijn het aantal overeenkomsten bij een 4lettersleutelwoord, 0.11268 veel hoger dan het aantal toevallige overeenkomsten in een willekeurige tekst, namelijk .0810. Je weet dus dat je hier te maken hebt met een 4lettersleutelwoord.

Ad B: Bepaal het sleutelwoord

Om het sleutelwoord te bepalen gaan we uit van frequentieanalyse, we verdelen de tekst in kolommen van 3, aangezien het een 3lettersleutelwoord betreft en dus bij iedere kolom eenzelfde sleutelletter gebruikt is, door middel van frequentieanalyse kunnen we dan zien welke gecodeerde letter de e moet voorstellen en vervolgens de ‘n’ enzovoorts. We hebben in de frequentietabel gekeken die ook staat op pagina 12, afbeelding 4.
Q L O
M M W
Q H S
X U F
S A W
X Y V
Q H W
Q H H
D C F
E Y S
L C B
H I F
P B S
M L H
D C F
E Y F
X Y W
R X W
Z I Y
X U F
S Y F
S Y D
G E C
U A
Aangezien onze tekst te klein was om door middel van frequentieanalyse de decoderen (de oorspronkelijke letters bij de gecodeerde letters te vinden), hebben we gewoon bepaald welke gecodeerde letters bij de oorspronkelijke letters horen. Wij weten namelijk de oorspronkelijke tekst al en dan is het alleen een kwestie van even opzoeken. Bij een normale, langere, gecodeerde tekst kun je wel met behulp van frequentieanalyse de originele letters ontdekken.
GROEN = E
BLAUW = N
ROOD = L
GEEL = I
Als kraker natuurlijk kun je bovenstaande bij elkaar passende kleuren en letters niet zo gemakkelijk bepalen. Wel kun je zien dat bijvoorbeeld in de laatste kolom de ‘W’ en de ‘F’ het vaakst voorkomen en volgens de frequentietabel moeten dat dus de n en de e zijn. Wij gaan er even van uit dat we wel het sleutelwoord ‘mus’ hebben gevonden.

Ad C: Leidt de oorspronkelijke tekst af

Nu we het sleutelwoord hebben gevonden, is het natuurlijk heel gemakkelijk om de gecodeerde tekst te decoderen. Het enige wat je nog moet doen is het codewoord nu bij het gecodeerde bericht aftrekken, en daarvoor heb je weer de Vigenère-tabel nodig om de oorspronkelijke boodschap te verkrijgen. We zullen dit even toelichten bij de eerste letter van de gecodeerde tekst, de informatie die we hebben is dat de sleutelletter een m is en de gecodeerde letter een q.

0 a b c d e f g h i j k l m n o p q r s t u v w x y z
1 b c d e f g h i j k l m n o p q r s t u v w x y z a
2 c d e f g h i j k l m n o p q r s t u v w x y z a b
3 d e f g h i j k l m n o p q r s t u v w x y z a b c
4 e f g h i j k l m n o p q r s t u v w x y z a b c d
5 f g h i j k l m n o p q r s t u v w x y z a b c d e
6 g h i j k l m n o p q r s t u v w x y z a b c d e f
7 h i j k l m n o p q r s t u v w x y z a b c d e f g
8 i j k l m n o p q r s t u v w x y z a b c d e f g h
9 j k l m n o p q r s t u v w x y z a b c d e f g h i
10 k l m n o p q r s t u v w x y z a b c d e f g h i j
11 l m n o p q r s t u v w x y z a b c d e f g h i j k
12 m n o p q r s t u v w x y z a b c d e f g h i j k l
Tabel 3: De Vigenère tabel

We hebben de hele rij bij de m gearceerd, bij iedere letter die een meervoud van 3 is zul je in deze rij moeten kijken, voor de eerste letter is dta bij de q, voor de vierde letter bij de m etcetera. Dan moet je alleen even de omhoog kijken in de tabel en dan kom je uit bij de originele letter, bij de q is dat dus de e.

q l o m m w q h s x u f s a w x y v q h w q h h d c f e y s l c b
m u s m u s m u s m u s m u s m u s m u s m u s m u s m u s m u s
e r w a s e e n s l a n g g e l e d e n e e n p r i n s e s z i j
h i f p b s m l h d c f e y f x y w r x w z i y x u f s y f
m u s m u s m u s m u s m u s m u s m u s m u s m u s m u s
v o n d h a a r p r i n s e n l e e f d e n o g l a n g e n
s y d g e c u a
m u s m u s m u
g e l u k k i g

“Er was eens lang geleden een prinses, zij vond haar prins en leefde nog lang en gelukkig.”

Conclusie

Nadat we dit profielwerkstuk met als hoofdvraag "Hoe kun je zelf een tekst coderen en decoderen?" hebben afgerond, zijn we tot de conclusie gekomen dat je een tekst op vele manieren zelf kunt coderen en decoderen. Wij hebben gekozen voor de modulo manier, aangezien bijvoorbeeld het Caesarcijfer en de Griekse karaktermethode veel te makkelijk zijn te coderen en ook veel te gemakkelijk te decoderen met de tegenwoordige kennis. Van de codeermethoden die wij hebben besproken bleek modulo te moeilijkste te zijn, en voor leken (mensen die totaal geen verstand van cryptologie hebben) is dit lastig te kraken. Natuurlijk zijn er lastigere methoden om te coderen, maar daar heb je meestal speciale programma's voor nodig.
We hebben veel geleerd van dit profielwerkstuk en vonden het erg leuk om te doen, we vonden het jammer dat we ons niet nog veel meer hebben kunnen verdiepen in dit onderwerp, aangezien dit nu al zoveel tijd kostte.

Literatuur

Instructies voor leerling over profielwerkstuk
KULeuven: Kun je die code kraken?
Members.chello.nl/ton.derouw/profielwerkstuk/website
members.home.nl/verhaagen
Werkstuk Judith van Vught en Devina Grommen
www.cwisdb.cc.kuleuven.ac.be/pisa/nl/encryption.htm
www.kubrussel.ac.be/WSetew/crypto.html
www.rug.nl/fwn/informatievoor/scholieren/betasteunpunt/jkp/encryptie
www.win.tue.nl/~aeb/ca/computers-3.html
www.win.tue.nl/~jessers/aansluiting/profielwerkstukkraken.htm
www.wiswijzer.nl/cryptosystemen

REACTIES

M.

M.

Bedankt, je hebt me geholpen vraag 6 van de AIVD kerstpuzzel op te lossen :-)

9 jaar geleden

Log in om een reactie te plaatsen of maak een profiel aan.