Voorbereidingsmateriaal SUM OF US. Wiskundetoernooi 2006



Vergelijkbare documenten
De Hamming-code. de wiskunde van het fouten verbeteren in digitale gegevens. Benne de Weger Faculteit Wiskunde en Informatica, TU/e 1/21

Maak je eigen cd. WISACTUEEL opdracht december 2010

De Hamming-code. De wiskunde van het fouten verbeteren in digitale gegevens

Werkbladen. Module 3: Geheimtaal. Internet. De Baas Op. Module 3, Versie 1.0

Algoritmes in ons dagelijks leven. Leve de Wiskunde! 7 April 2017 Jacobien Carstens

Projectieve Vlakken en Codes

Public Key Cryptography. Wieb Bosma

??? Peter Stevenhagen. 7 augustus 2008 Vierkant voor wiskunde

EXAMEN INFORMATIETHEORIE I (5JJ40 / 5K020) 25 maart 2004, 9u00 12u00-1 -

Les D-04 Foutdetectie en correctie

Internationaal Wiskundetoernooi 2017

Lineaire algebra 1 najaar Lineaire codes

Het sorteren van post

MINIMODULES VOOR 3 HAVO

Toepassingen van de Wiskunde in de Digitale Wereld

Polybiusvierkant. Van bericht naar code: 1 A B C D E 2 F G H I J 3 K L M N O 4 P Q R S T 5 U V W X YZ

Spreekbeurt Nederlands Cryptologie

Uitdager van de maand. Rekenen Wiskunde, Groep 8. Algemeen

Activiteit 1. Tel de punten Binaire Getallen. Samenvatting. Kerndoelen. Vaardigheden. Leeftijd. Materiaal

CODES IN DE RUIMTEVAART

STROOMDIAGRAMMEN. Hoofdstuk 8. Hoe je Galgje moet spelen. Voorbeelduitvoer van Galgje. Hoofdstuk 8 Stroomdiagrammen 67

Hoofdstuk 1 - Drie manieren om een getal te schrijven

Getaltheorie. Wiskunde Leerjaar 2, Periode 1 Les: 12 oktober 2017

Bij de volgende vragen Bij een regelmatige veelhoek kun je het gemakkelijkst eerst de buitenhoeken berekenen en daarna pas de binnenhoeken.

PSSST! GEHEIMPJE! Anne zet het bericht eerst om. Dit noemt men versleutelen. Ze stuurt een briefje met het versleuteld bericht naar Brent:

Wiskunde D Online uitwerking oefenopgaven 4 VWO blok 1 les 1

Fout detecterende en verbeterende codes

Python. Informatica. Renske Smetsers

Rekenen: Getallen groep 5 en hoger. Rekenen en schattingen ontdekken. Algebra groep 5 en hoger. Patronen en relaties ontdekken.

Tweede Huiswerk Security 26 of 28 oktober, 11.00, Nabespreken op Werkcollege.

In Katern 2 hebben we de volgende rekenregel bewezen, als onderdeel van rekenregel 4:

Cryptografie met krommen. Reinier Bröker. Universiteit Leiden

Activiteit 18. Kid Krypto Publieke sleutel encryptie. Samenvatting. Vaardigheden. Leeftijd. Materialen

Veilig en. Waarom en via een beveiligde verbinding? U vertrouwt de verbinding met de server van InterNLnet niet

02. Les 2 Affiene versleuteling. CC Naamsvermelding-GelijkDelen 3.0 Nederland licentie.

Rekenen: Meten groep 4 en hoger. Het leren van simpele weegopdrachten.

Complex multiplication constructions in genus 1 and 2

Lessenserie Cryptografie

Memoriseren: Een getal is deelbaar door 10 als het laatste cijfer een 0 is. Of: Een getal is deelbaar door 10 als het eindigt op 0.

RSA. F.A. Grootjen. 8 maart 2002

Cryptografie. 6 juni Voorstellen, programma-overzicht 2. 2 Inleiding: wat is cryptografie? 2

Het RSA Algoritme. Erik Aarts - 1 -

Aanvullende tekst bij hoofdstuk 1

+ = Talstelsels. Maar wat is dan: -

VERSLEUTELEN VAN INFORMATIE IN DE COMMUNICATIE MET DE IBD

MINIMODULES VOOR 3 VWO

FACTORISATIE EN CRYPTOGRAFIE

Informatie coderen en kraken

MINIMODULES VOOR 3 VWO

College Cryptografie. Cursusjaar Informatietheorie. 29 januari 2003

Elementaire rekenvaardigheden

Cryptografie. Ralph Broenink

Opdrachten Toeval Opdrachten Toeval Opdracht 1.1 (Bestaat toeval) Opdracht 1.2(toeval in de natuur)

Uitleg. Welkom bij de Beverwedstrijd Je krijgt 15 vragen, die je in maximaal 45 minuten moet beantwoorden.

Lesbrief onderzoekend leren Hoe schrijf ik de geheimste brief?

Opmerking 2: laat de tussenstap aanvankelijk luidop doen, later (als het vlot gaat) in stilte.

Module 3: Geheimtaal

Cryptografische beveiliging op het Internet

Hoe schrijf ik de geheimste brief?

Module 5: Encryptie. Leerkrachtinstructie. debaasopinternet.nl

Blokjes stapelen. Opgave. Invoer. Uitvoer. Voorbeeld. Invoer. Uitvoer

Uitwerking vierde serie inleveropgaven

slides10.pdf December 5,

VOOR HET SECUNDAIR ONDERWIJS. Kansmodellen. 3. Populatie en steekproef. Werktekst voor de leerling. Prof. dr. Herman Callaert

Opgave 2. Meeluisteren.

REKENEN Hoe rekenen jouw hersenen? Proeven en spelletjes om te trainen

REKENEN OP EEN ABACUS

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

Combinatoriek groep 1 & 2: Recursie

Kennismaking met programmeren

Strategieën bedenken om ongestructureerde hoeveelheden te schatten. liniaal, potlood kopieerblad Olifanten 1970 en 1989

Wiskunde D Online uitwerking oefenopgaven 4 VWO blok 3 les 1

Uitwerkingen eerste serie inleveropgaven

Deel A. Breuken vergelijken

FLIPIT 5. (a i,j + a j,i )d i d j = d j + 0 = e d. i<j

Kansrekening en Statistiek

Betrouwbaarheid en levensduur

1 Rekenen in eindige precisie

Vragen stellen in de reken-wiskundeles

Cryptografie & geheimschrift: hoe computers en chips met elkaar praten

wwww.wijzeroverdebasisschool.nl

VERSLEUTELEN VAN INFORMATIE IN DE COMMUNICATIE MET DE IBD

SUM OF US 2011: CRYPTOGRAFIE

Afbeeldingen in binaire code

De Hill-cipher herzien

informatica. cryptografie. overzicht. hoe & wat methodes belang & toepassingen moderne cryptografie

Kleuren met getallen Afbeeldingen weergeven

Hoe je het cryptosysteem RSA soms kunt kraken. Benne de Weger

4,7. Praktische-opdracht door een scholier 1959 woorden 1 juni keer beoordeeld

Rekenoefening groep 5 Doel

Uitleg. Welkom bij de Beverwedstrijd Je krijgt 15 vragen, die je in maximaal 45 minuten moet beantwoorden.

Waarschijnlijk wel, want er zit niet veel informatie in de klinkers. Deze activiteit laat een manier zien om de hoeveelheid informatie te meten.

Tafels bloemlezing. Inhoud 1

De waarde van een plaats in een getal.

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

Lesbrief Code kraken / maken

Nu een leuk stukje wiskunde ter vermaak (hoop ik dan maar). Optellen van oneindig veel getallen

Uitwerking puzzel 91-7: Je kunt het schudden

Tellen. K. P. Hart. Delft, Faculty EEMCS TU Delft. K. P. Hart Tellen

Combinatoriek groep 1

Transcriptie:

Voorbereidingsmateriaal SUM OF US Wiskundetoernooi 2006 Tekst: Lay out: Dr.W. Bosma D. Coumans

Inhoudsopgave Voorwoord...3 1. Cryptografie...4 2. Geheime codes...5 3. Foutenverbeterende code...8 4. Oefenopgaven...12 2

Voorwoord Op het wiskundetoernooi 2006 spelen we voor de eerste keer Sum of Us, een nieuwe teamwedstrijd die een maatschappelijk relevante toepassing van de wiskunde als thema heeft. Dit jaar is dat cryptografie. Om Sum of Us goed te kunnen spelen is het noodzakelijk dat de teams zich voorbereiden. Daarvoor hebben wij dit materiaal samengesteld. Het is in principe geschikt voor zelfstudie, maar wij moedigen gezamenlijke bestudering, klassikaal of als project, van harte aan. Wij hebben bewust gekozen voor een uiterst beknopte inleiding in het onderwerp, toegesneden op de opgaven die de teams kunnen verwachten. Cryptografie is echter een deelgebied van de wiskunde waar boeken vol over geschreven zijn. Ook op internet is een schat aan informatie over het onderwerp te vinden. Op de website www.ru.nl/wiskundetoernooi vind je links voor verdere verdieping. Veel succes bij de voorbereiding en een prachtig toernooi gewenst! Ruben van den Brink Toernooidirecteur 3

1. Cryptografie Waar mensen met elkaar communiceren, willen ze geheimen met sommigen delen en met anderen niet. Je kunt daarvoor met iemand anders je eigen taaltje afspreken, een codetaal, die niemand anders (hopelijk) begrijpt. Natuurlijk kun je je afzonderen, maar je kunt er nooit helemaal zeker van zijn dat je niet afgeluisterd wordt. En van geschreven berichten (waar het hier verder om zal gaan) weet je maar nooit of ze niet in verkeerde handen vallen. Een zeer voor de hand liggende codetaal krijg je door het alfabet te verhaspelen; natuurlijk is het lastig met het verhaspelde alfabet een bericht te schrijven, en als je wilt dat de ontvanger het bericht kan ontcijferen moet je afspreken welke verhaspeling je hebt gebruikt. Cryptosysteem Dit verhaspelen van letters heeft precies de kenmerken van een cryptosysteem: je hebt een eindig stel verschillende symbolen (letters, leestekens) en elk symbool vervang je door een ander symbool (dat heet versleutelen). Hierbij hoort een omgekeerde bewerking (die ontcijferen heet) om versleutelde symbolen weer terug te veranderen in de oorspronkelijke symbolen. Dat laatste kan natuurlijk alleen maar wanneer altijd aan twee verschillende symbolen twee verschillende versleutelde symbolen worden toegevoegd! Een ander belangrijk kenmerk is dat er een geheime sleutel is, waarvan het bezit nodig is voor de ontcijfering: het vertelt je namelijk welke verhaspeling is gebruikt. Die sleutel spreek je af met degene met wie je brieven wilt uitwisselen, en je hoopt dat anderen die sleutel niet te pakken krijgen! Codes Het woord code heeft diverse betekenissen. In het gewone spraakgebruik betekent het vaak zoiets als geheimschrift, een eigen taaltje om informatie geheim te houden. In de wiskunde worden hiervoor meestal andere termen gebruikt (zoals cryptosysteem en cryptografie) en bedoel je met code meestal een foutenverbeterende code. De bedoeling daarvan is juist om informatie niet verloren te laten gaan. In het dagelijks leven gebruik je beide vormen van codes regelmatig, waarschijnlijk zonder dat je het weet. In mobiele telefoons wordt bijvoorbeeld foutenverbetering toegepast om er voor te zorgen dat een klein beetje ruis op de lijn onderdrukt kan worden. Ook wordt hier cryptografie toegepast om er voor te zorgen dat gesprekken niet eenvoudig afgeluisterd kunnen worden. Overigens wordt in telefonie nog een derde vorm van code gebruikt om informatie te comprimeren. Over de techniek daarvoor hebben we het hier niet. We zullen het wel kort over de beide andere vormen van codes hebben. 4

2. Geheime codes Één van de oudste cryptosystemen is de Caesarverschuiving: je spreekt een getal k af waarover je alle letters in je alfabet verschuift om ze te versleutelen. Als, bijvoorbeeld, k = 3 wordt afgesproken, vervang je elke a in je bericht door een d, elke b door een e, enzovoorts, waarbij je aan het eind van het alfabet natuurlijk de x door a vervangt, y door b, en z door c. Voor het ontcijferen moet je dan vanzelfsprekend 3 plaatsen terugschuiven. Caesar zou deze methode (met k = 3) daadwerkelijk gebruikt hebben. Natuurlijk biedt dit enige bescherming, want je kunt een versleuteld bericht niet zonder meer lezen, maar erg lang zal het niet duren voordat iemand dit systeem kraakt. Natuurlijk helpt het heel erg wanneer je vooraf al weet wat de gebruikte methode is, want dan hoef je alleen de sleutel k maar te vinden. Bovendien zijn er (als je k niet 0 neemt, want dat geeft helemaal geen bescherming) maar 25 mogelijkheden, die je snel kunt uitproberen. Voor een goed cryptosysteem moeten er juist heel veel mogelijke sleutels zijn. Mocht je je zorgen maken over ons gebruik van maar 26 symbolen: als je ook hoofdletters wilt, en leestekens (spaties, komma's, enz.) dan voeg je die gewoon aan je lijst toe; het principe blijft precies hetzelfde. Permutatie Natuurlijk hoef je de letters niet op te schuiven over een vaste afstand. Elke permutatie van de symbolen kun je gebruiken. De sleutel wordt dan misschien wat ingewikkelder (dat is nu de hele permutatie) maar het voordeel is wel dat er véél meer mogelijke sleutels zijn! Daarmee wordt de sleutel lastiger te vinden en wordt het systeem veiliger. Nadeel is dat het zowel lastiger wordt om met de hand te versleutelen, als om te ontcijferen, zelfs als je de sleutel weet: van elk symbool moet je opzoeken waar je het door moet vervangen. Om het systeem te kraken zou je gebruik kunnen maken van het feit dat in gewone taal niet alle symbolen even vaak gebruikt worden: de e komt in gewone Nederlandse teksten gemiddeld verreweg het meest voor, gevolgd door de n (afgezien van de leestekens!), en de q en de x het minst. Dit soort frequentieanalyse kan je een heel eind op weg helpen, want waarschijnlijk is het meest voorkomende symbool in de geheime tekst die je hebt onderschept de versleuteling van de e. Als je zo enkele letters hebt ontcijferd zie je al snel echte woorden ontstaan en wordt de hele ontcijfering mogelijk. 5

Vigenère Het Vigenère systeem werd eeuwen geleden ontwikkeld en ondervangt twee problemen met de permutaties: het maakt het onthouden van de sleutel makkelijker en het voorkomt de directe aanval met frequentieanalyse. Dat kan omdat in dit systeem een symbool niet steeds door hetzelfde symbool vervangen wordt. Daarom is het niet meer vanzelf zo dat het meest voorkomende symbool de versleuteling van de e zal zijn. Heel lang werd dan ook gedacht dat dit een onbreekbaar systeem zou zijn. Vigenère De sleutel van het Vigenère systeem is een (kort) codewoord, dat eenvoudig te onthouden is; dit woord bepaalt over welke afstand de letters uit het bericht worden opgeschoven. Is de sleutel bijvoorbeeld apen, dan wordt de eerste letter uit het bericht 1 opgeschoven (omdat de a letter nummer 1 uit het alfabet is), de tweede letter wordt 16 posities opgeschoven (want de p is nummer 16), de derde letter over afstand 5 (want e=5), en de vierde letter over afstand 14 (n=14). Daarna beginnen we weer van voor af aan: het vijfde symbool wordt 1 opgeschoven, het zesde symbool 16, enzovoorts. Als de letter e in het bericht dus op positie 1 of 5 of 9 of 13 of staat, dan wordt hij vervangen door een f, maar op positie 2, 6, 10, 14, door een u, op positie 3, 7, 11, 15, door een j en op posities 4, 8, 12, door een s. Onkraakbaar? Toch bleek het kraken van dit systeem minder moeilijk dan gedacht. Het belangrijkste idee is om te proberen eerst de lengte van de sleutel (het gebruikte codewoord) te achterhalen, en daarna pas dat woord zelf. Een manier om dat te doen is door twee kopieën van de versleutelde tekst te nemen en die onder elkaar te leggen, zodat de letters precies 1 voor 1 boven elkaar staan. Nu schuif je de onderste kopie 1 positie naar rechts, en telt op hoeveel plaatsen je hetzelfde symbool boven elkaar ziet staan. Dan schuif je deze kopie nog een letter naar rechts en telt opnieuw het aantal overeenkomstige symbolen. Als de tekst niet té kort is, zal het getelde aantal een opvallende piek vertonen bij verschuiving over de lengte van het codewoord (en over 2 keer die lengte enz.)! Als je zo hebt ontdekt dat de lengte wel 4 zal zijn, bijvoorbeeld, laat je de gewone frequentieanalyse los op vier verschillende teksten, namelijk de tekst bestaande uit alle symbolen op de posities 1,5, 9, 13, enz., de tekst van symbolen op posities 2, 6, 10, enz, die op posities 3, 7, 11,, en op alle posities die een 4 voud zijn. Immers, als het codewoord inderdaad lengte 4 had, is voor die symbolen steeds over dezelfde afstand verschoven. Of je probeert alle mogelijkheden. 6

Public key Een groot nadeel van alle systemen die we genoemd hebben is dat je eerst met elkaar moet afspreken welke sleutel je gebruikt. Maar hoe doe je dat als je nog geen veilige manier hebt om geheimen uit te wisselen? Pas enkele decennia geleden werd een oplossing gevonden voor dit probleem, en wel de zogenaamde public key cryptografie. Het briljante kernidee hiervan is dat iedereen best mag weten met welke sleutel boodschappen aan jou versleuteld zijn, als daaruit maar niet is af te leiden met welke sleutel die berichten weer ontcijferd kunnen worden! In deze systemen zijn er dus twee sleutels, en de ontcijfersleutel is heel moeilijk uit de versleutel sleutel af te leiden (behalve voor degene die hem verzonnen heeft: jijzelf). Je maakt de versleutel sleutel gewoon openbaar (public key!) en daarmee kan iedereen boodschappen naar jou versleutelen, maar alleen jij kunt ze daarna ontcijferen (zelfs de afzender kan dat niet)! 7

3. Foutenverbeterende code De bedoeling van foutenverbeterende codes is geheel anders: wanneer je een bericht stuurt over een kanaal met ruis kan het zijn dat sommige symbolen per ongeluk veranderen. Dat betekent dat in het bericht foutjes sluipen, die je graag weer wilt corrigeren. Zo'n bericht kan uit tekst bestaan (e mail of SMS over een telefoonlijn) of muziek of video (met schokken die voor de ruis op een mobiele speler zorgen) of foto of filmbeelden (over een satellietverbinding). Bits In alle gevallen worden de berichten eerst omgezet in rijen van nullen en enen, de bits. Letters of tonen of kleuren worden eerst in een getal omgezet (zoals we deden via a = 1, b = 2) en die getallen worden in het binaire systeem geschreven. Zo zou je de 26 letters uit ons alfabet ieder met een ander rijtje van 5 bits kunnen aangeven, maar er is een internationale afspraak om dat uniform met 7 of 8 bits te doen (zodat ook hoofdletters, leestekens, en letters met accent een rijtje bits kunnen krijgen). Dit heet de ASCII of extended ASCII code alweer een ander gebruik van het woord code! Het hele idee van foutenverbeterende codes is om aan een rijtje bits wat extra bits toe te voegen om fouten te kunnen herstellen. Ruis Veronderstel nu dus dat een verzender een eindig rijtje bits stuurt naar een ontvanger, via een kanaal waarop ruis kan voorkomen. We zullen voor het gemak aannemen dat ruis er alleen voor kan zorgen dat een 0 in een 1 verandert, of omgekeerd, maar dat het aantal bits niet verandert. Bovendien nemen we aan dat zo'n ongeluk maar heel af en toe gebeurt (bijvoorbeeld gemiddeld eens op de 25 bits of iets dergelijks) en tamelijk willekeurig. 8

Een voor de hand liggend idee is nu om het rijtje bits te herhalen als iemand je niet verstaat herhaal je immers ook wat je zei. Maar dat lost het probleem niet echt op: de ontvanger heeft nu twee even lange rijtjes bits die mogelijk op enkele plaatsen verschillen. Hij kan dus vaststellen op welke posities de ruis foutjes heeft veroorzaakt, maar kan die niet zomaar verbeteren: welk bit is juist en welk is fout? Soms kun je dat toch vaststellen (uit de context ), bijvoorbeeld wanneer het foute bit een geel pixel in een strakblauwe lucht geeft, of een q midden in een kort woord. Maar als die context ontbreekt, helpt simpele herhaling je niet. Repetitie Een eenvoudige remedie is om het bericht dan 3 keer te versturen: als de ontvanger op een positie dan niet 3 keer dezelfde bit ziet, concludeert hij niet alleen dat daar kennelijk ruis is opgetreden, maar ook dat het het meest waarschijnlijk is dat de bit die hij er tweemaal ziet het juiste is. Immers, de kans is maar heel klein dat er een fout optrad, en dus nog veel kleiner dat er twee keer een fout op die positie is opgetreden! Deze meerderheid van stemmen foutenverbetering werkt alleen maar goed als fouten random en met kleine kans optreden. Om nog zekerder te zijn kan de zender het bericht natuurlijk ook 5 keer sturen. Maar dan geldt nog sterker dan bij drievoudige repetitie dat het wel zonde van tijd (en dus geld) wordt je zou liever een ander bericht in dezelfde tijd willen sturen dan nogmaals hetzelfde. Efficiëntie De kernvraag bij het ontwerp van foutenverbeterende codes is dan ook: hoe kun je zoveel mogelijk fouten verbeteren door zo weinig mogelijk bits toe te voegen? Dat laatste meet je door naar de rate te kijken, de verhouding tussen het aantal informatiebits van het bericht en het aantal bits van het bericht met toegevoegde bits. Het 3 maal sturen van een bericht heeft dus rate 1/3, en hoe dichter de rate bij 1 ligt, des te beter is de code. Een andere manier om naar hetzelfde voorbeeld te kijken (berichten drie keer sturen) krijg je door elk bit afzonderlijk 3 keer te sturen; alleen de volgorde waarin je de bits stuurt is dan anders. Nu zie je dat je aan elk bit dat je stuurt als het ware 2 correctiebits toevoegt: het bericht 0 stuur je als codewoord 000, en het bericht 1 stuur je als codewoord 111. 9

Beter We laten nu zien hoe je met een code van rate 1/2 een enkele fout kunt verbeteren in elk rijtje van 3 bits. Dat doen we door bij elk rijtje van 3 informatiebits een woord van 6 bits te maken, op de volgende manier: de eerste 3 bits zijn de informatiebits, de volgende 3 de toegevoegde correctiebits. 000 000 100 011 010 101 001 110 110 110 101 101 011 011 111 000 Deze acht codewoorden van lengte 6 vormen een code. Het toevoegen van de correctiebits aan de informatiebits is dus het eigenlijke coderen van de informatie. De ontvanger zal ontvangen woorden moeten decoderen: uit elk 6 tal bits zal hij de drie informatiebits moeten halen. Meestal is dat niet moeilijk: als één van bovenstaande rijtjes van zes bits wordt ontvangen is er (hoogstwaarschijnlijk) geen ruis opgetreden, en zijn de eerste drie bits de informatiebits. Maar er kan ook ergens een foutje ontstaan zijn. Wat deze code goed maakt is dat als er op één positie een fout optreedt er een woord ontstaat dat niet in dit lijstje staat (dus niet in de code zit). Zo merkt de ontvanger op dat er een fout is opgetreden. Maar het is nog beter: zo'n woord met maar één foutje kan altijd maar op één manier zo aangepast worden door één bit te veranderen dat er een codewoord ontstaat. Met andere woorden: als er maar één fout is opgetreden is er maar één codewoord dat er maar op één plaats van verschilt. Dát is dan het codewoord dat de ontvanger kiest als meest waarschijnlijk verstuurde woord en de eerste drie bits daarvan vormen de informatie. Voorbeeld Met een klein beetje oefening kun je nu steeds zes bits die je ontvangt decoderen tot de drie informatiebits, zelfs als er onderweg één bit is veranderd! Ontvang je bijvoorbeeld 010111 dan zie je dat die niet in het lijstje staat; als de eerste drie correct waren zegt het lijstje dat er 010101 had moeten staan, en dat is ook de enige mogelijkheid waarop maar één fout kon optreden, want er is geen goed woord dat op 111 eindigt. Je decodeert 010101 dus tot 010. Ontvang je 010110 dan moeten er twee fouten zijn als de informatiebits correct waren; maar als de correctiebits correct waren, was de boodschap 110, en zou er 110110 verstuurd zijn. In dat geval is er één fout opgetreden in het hele woord. Dus decodeer je tot 110. Enzovoort. Weer blijkt dat altijd wanneer er één fout optreedt je die maar op één manier kunt herstellen. Als er twee fouten optreden zijn er soms twee manieren om die te herstellen deze code kan één fout corrigeren. 10

Hamming Het kan zuiniger: als je bijvoorbeeld aan elke vier informatiebits drie correctiebits toevoegt (dus met rate 4/7) kun je ook een code maken waarin je in elk woord een opgetreden fout kunt verbeteren. In plaats van de lijst van zestien rijtjes te geven, volgt hier een regel hoe je ze kunt maken: de eerste vier bits zijn de informatiebits, en daar heb je alle zestien mogelijkheden voor nodig. Aan die vier bits voeg je er drie toe door steeds drie van de informatiebits bij elkaar op te tellen. Voor de eerste correctiebit tel je de eerste, tweede en derde informatiebit op; als de uitkomst even is wordt de correctiebit 0, als de uitkomst oneven is wordt het een 1. Voor de tweede correctiebit tel je op de zelfde manier de eerste, derde en vierde bits op, en voor de derde de tweede, derde en vierde informatiebits. Zo worden bijvoorbeeld aan de informatiebits 1011 de correctiebits 010 toegevoegd. Richard Hamming Ook deze code (die Hammingcode heet en deel uit maakt van een hele familie van soortgelijke codes) heeft de mooie eigenschap dat als je van een codewoord van zeven bits één bit verandert, alleen het oorspronkelijke codewoord maar op precies één positie van het veranderde woord afwijkt. Het vergt wel een beetje oefening om snel te zien welk codewoord bij een woord met één fout erin hoort! 11

4. Oefenopgaven 1. Om te zien dat de ontcijfering van het Vigenère systeem werkelijk werkt zou je het volgende kunnen doen met twee groepjes deelnemers. Laat beide groepjes een bericht van enkele honderden letters uit een Nederlandse krant kiezen. De groepjes kiezen onafhankelijk een codewoord als sleutel en versleutelen daarmee hun boodschap met de Vigenère methode. Wissel nu de versleutelde teksten uit en probeer zo snel mogelijk elkaars tekst te ontcijferen door eerst de lengte van het codewoord te zoeken; probeer daarbij in je groepje taken te verdelen zodat je zo snel mogelijk succes hebt. Als je de lengte van de sleutel denkt te weten kun je vast snel het gebruikte codewoord vinden zoals beschreven. 2. Hier is de frequentieverdeling van de letters in een verzameling van Nederlandse teksten die in totaal uit 92137 letters bestond: E 19.06 % N 9.41 % T 6.74 % A 6.72 % R 6.45 % I 6.44 % D 5.91 % O 5.87 % S 4.00 % L 3.94 % G 3.14 % V 2.90 % M 2.41 % H 2.32 % K 2.28 % U 1.93 % B 1.80 % C 1.60 % P 1.59 % W 1.57 % J 1.49 % Z 1.18 % F 0.74 % Y 0.29 % Q 0.11 % X 0.11 % EN 5.12 % DE 3.79 % ER 3.39 % TE 2.34 % AN 2.20 % GE 1.90 % IN 1.76 % ET 1.70 % EL 1.58 % EE 1.56 % AA 1.50 % IJ 1.40 % VE 1.37 % OR 1.35 % IE 1.29 % HE 1.25 % 12

De volgende boodschap (van 316 letters) is onderschept: AOB GJUXYO VWBBOK RWOS GDP U S KWCLJPZ JN RJUPD DX AOB JN PWZ PJOB AOLOIDDL TOSOK IDDK CDDKNQAJUPLJUS LJZB AOB IOB SOKNBIJN JP YO CJPSOL JP AOB OPZOLN YDB COL OOKNB LOOS AOB OK WV YDB AOB RWOS VDN GWLZOPY GWWKUDDK TWH HJBSWIOP IDDK YO SKDPB BAO BJION IOLYYO GKJUYDZ YHN YDB AOB RWOS RJUPD DX JN OOP UWHKPDLJNB GDP YO SKDPB AOOXB U S KWCLJPZ ZOJPBOKGJOCY YHN YO SDPN JN ZKWWB YDB AOB OQAB TW JN De frequentieverdeling van letters in deze tekst is: O 14.78 % B 9.18 % D 8.23 % J 7.59 % P 6.65 % K 5.70 % W 5.38 % Y 5.06 % N 5.06 % S 4.43 % A 4.11 % L 4.11 % U 3.16 % Z 2.85 % I 2.53 % G 2.22 % C 1.90 % H 1.58 % R 1.58 % X 1.27 % V 0.95 % T 0.95 % Q 0.63 % M 0.00 % F 0.00 % E 0.00 % AO 4.62 % OB 4.20 % JN 2.92 % JU 2.52 % OK 2.52 % YO 2.52 % JP 2.52 % LJ 2.10 % DD 2.10 % YD 2.10 % OL 2.10 % OS 2.10 % DP 2.10 % OP 1.68 % DK 1.68 % DB 1.68 % Kun je de tekst ontcijferen? 13

3. Deze opdracht gaat over de code met rate 1/2 die in de tekst beschreven wordt. a) In de volgende vier woorden is steeds op één positie ruis opgetreden. Wat zijn in deze gevallen de codewoorden die hoogstwaarschijnlijk verstuurd werden? 100101 001010 110011 111110 (Probeer er een sport van te maken om de antwoorden zo snel mogelijk te vinden. Het helpt wanneer je een patroon ziet in het verband tussen het eerste drietal bits en het tweede drietal in elk codewoord!) b) Kies van de codewoorden uit de tekst er één willekeurig uit, en verander er twee bits in. Hoeveel codewoorden verschillen nu op precies één plaats van het verstoorde woord, en hoeveel verschillen er op twee posities? Zijn de antwoorden hetzelfde voor alle beginwoorden en elk tweetal bits dat je verstoort? 4. Deze opgave gaat over de methode van Hamming. a) Maak bij de volgende viertallen informatiebits de correctiebits volgens de methode van Hamming uit de tekst. 1010 0001 1111 b) Probeer weer een snelle methode te vinden om deze vraag te beantwoorden: De volgende woorden verschillen op precies één positie van een codewoord uit de Hammingcode; bepaal de eerste vier (informatie)bits in deze gevallen. 1100001 1000101 0001000 0110011 14