MODULOREKENEN EN CRYPTOGRAFIE

Vergelijkbare documenten
OPLOSSINGEN VAN DE OEFENINGEN

RSA. F.A. Grootjen. 8 maart 2002

v.l.n.r. RSA: Ron Rivest (1947), Adi Shamir (1952), Leonard Adleman (1945)

3 Modulorekenen. 3.1 De eulerfunctie en de kleine stelling van Fermat. Oefening 3.1. Bepaal Φ(1992), Φ(2011) en Φ(2048) (83 en 2011 zijn priem).

7.1 Het aantal inverteerbare restklassen

Opgeloste en onopgeloste mysteries in de getaltheorie

Oefening 4.3. Zoek een positief natuurlijk getal zodanig dat de helft een kwadraat is, een derde is een derdemacht en een vijfde is een vijfdemacht.

Oefening 4.3. Zoek een positief natuurlijk getal zodanig dat de helft een kwadraat is, een derde is een derdemacht en een vijfde is een vijfdemacht.

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s.

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte

Getaltheorie I. c = c 1 = 1 c (1)

Hoofdstuk 6. Congruentierekening. 6.1 Congruenties

Getaltheorie II. ax + by = c, a, b, c Z (1)

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

De Chinese reststelling

Diophantische vergelijkingen

Eigenschap (Principe van welordening) Elke niet-lege deelverzameling V N bevat een kleinste element.

Projectieve Vlakken en Codes

Opgaven Eigenschappen van Getallen Security, 2018, Werkgroep.

Opgaven Getaltheorie en Cryptografie (deel 4) Inleverdatum: 13 mei 2002

7 Deelbaarheid. 7.1 Deelbaarheid WIS7 1

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.

We beginnen met de eigenschappen van de gehele getallen.

Bijzondere kettingbreuken

FACTORISATIE EN CRYPTOGRAFIE

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

Het RSA Algoritme. Erik Aarts - 1 -

Dossier 3 PRIEMGETALLEN

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

Getaltheorie groep 3: Primitieve wortels

Priemontbinding en ggd s

Spreekbeurt Nederlands Cryptologie

1. REGELS VAN DEELBAARHEID.

Je hebt twee uur de tijd voor het oplossen van de vraagstukken. µkw uitwerkingen. 12 juni 2015

Groepen, ringen en velden

2. Ga voor volgende relaties na of het al dan niet functies, afbeeldingen, bijecties, injecties, surjecties zijn :

Public Key Cryptography. Wieb Bosma

Cryptografie met krommen. Reinier Bröker. Universiteit Leiden

Opgeloste en onopgeloste mysteries in de getaltheorie

priemrecords? Jaap Top

Enkele valkuilen om te vermijden

Geldwisselprobleem van Frobenius

Getallen, 2e druk, extra opgaven

Worteltrekken modulo een priemgetal: van klok tot cutting edge. Roland van der Veen

FACTORISATIE EN CRYPTOGRAFIE

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

Inleiding tot de Problem Solving - deel 1: Combinatoriek en getaltheorie

1.5.1 Natuurlijke, gehele en rationale getallen

Bewijs door inductie

Definitie 5.1. Cyclische groepen zijn groepen voortgebracht door 1 element.

Universiteit Gent. Academiejaar Discrete Wiskunde. 1ste kandidatuur Informatica. Collegenota s. Prof. Dr.

II.3 Equivalentierelaties en quotiënten

Cryptografie: de wetenschap van geheimen

Veeltermen. Module Definitie en voorbeelden. Een veelterm met reële coëfficiënten in één veranderlijke x is een uitdrukking van de vorm

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

PG blok 4 werkboek bijeenkomst 4 en 5

Zomercursus Wiskunde. Module 1 Algebraïsch rekenen (versie 22 augustus 2011)

Uitwerkingen Rekenen met cijfers en letters

Lesbrief knapzak-cryptografiesysteem

Hoofdstuk 1. Inleiding. Lichamen

Hoofdstuk 3. Equivalentierelaties. 3.1 Modulo Rekenen

Cover Page. The handle holds various files of this Leiden University dissertation.

III.2 De ordening op R en ongelijkheden

Zomercursus Wiskunde. Katholieke Universiteit Leuven Groep Wetenschap & Technologie. September 2008

Gehelen van Gauss. Hector Mommaerts

Ruimtemeetkunde deel 1

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

Rekenen met cijfers en letters

2.1 Bewerkingen [1] Video Geschiedenis van het rekenen ( 15 x 3 = 45

Zwakke sleutels voor RSA

Tentamen algebra 1. 8 juni 2005, , zaal A.404

Hoofdstuk 4. Delers. 4.1 Delers (op)tellen

Definitie 1.1. Een partitie van een natuurlijk getal n is een niet stijgende rij positieve natuurlijke getallen met som n

Algebra, Les 18 Nadruk verboden 35

Spookgetallen. Jan van de Craats en Janina Müttel

Pijlenklokken. 1 Inleiding

1 Kettingbreuken van rationale getallen

Opmerking. TI1300 Redeneren en Logica. Met voorbeelden kun je niks bewijzen. Directe en indirecte bewijzen

Lights Out. 1 Inleiding

Les C-01: Algoritmen David Lans

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

1 Complexe getallen in de vorm a + bi

Aanvullingen bij Hoofdstuk 8

IMO-selectietoets I donderdag 1 juni 2017

Oplossing van opgave 6 en van de kerstbonusopgave.

Discrete Structuren voor Informatici

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

De pariteitstestmatrix van de (6,4) Hamming-code over GF(5) is de volgende: [ H =

1 Rekenen met gehele getallen

Probabilistische aspecten bij public-key crypto (i.h.b. RSA)

Restsystemen 183 Oplossen van lineaire vergelijkingen 190 Structuren met één bewerking 192 Structuren met twee bewerkingen

handleiding ontbinden

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

Uitwerking Puzzel 93-1, Doelloos

1 Rekenen in eindige precisie

Priemgetallen en het RSA cryptosysteem

Lessenserie Cryptografie

Definitie 1.1. Een groep is een verzameling G, uitgerust met een bewerking waarvoor geldt dat:

Algoritmes en Priemgetallen. Hoe maak je een sleutelpaar voor RSA?

Wanneer zijn veelvouden van proniks proniks?

Transcriptie:

MODULOREKENEN EN CRYPTOGRAFIE 1. Inleiding 1.1. Oorsprong. Het woord cryptografie stamt uit het Grieks en betekent geheimschrift (κρυπτ óς = kryptós = verborgen; γράφω = gráfo = schrijven). Het behoeft geen betoog dat geheimhouding van berichten van alle tijden en alle werelden is, de ingebakken kleine trekjes van de mens indachtig. De wedijver tussen codemakers en codebrekers is al eeuwen aan de gang, en heeft in verscheidene situaties de loop van de geschiedenis bepaald. Aanvankelijk waren de gebruikte methoden niet meer dan spitsvondigheden, die te doorzichtig of te weinig praktisch waren om een lang leven beschoren te zijn. Zo maakte de Griekse geschiedschrijver Herodotos melding van een slaaf die een boodschap op het kaal geschoren hoofd getatoeëerd kreeg, om vervolgens met een vers aangegroeid kapsel vijandig gebied te doorkruisen. Later ontwikkelden de Grieken meer systematische manieren om berichten in geheimschrift te zetten. De bekendste daarvan maakt gebruik van een scytale. Dat is een cilindrische stok waarrond een strook perkament kan worden gewikkeld. Door horizontaal op het gewikkelde perkament te schrijven en het perkament daarna Figuur 1. Een scytale. terug af te wikkelen, verkrijgt men de tekst in geheimschrift. De ontvanger hoeft dan enkel op zijn beurt de perkamentstrook rond een scytale van dezelfde diameter te wikkelen om het originele bericht te kunnen lezen. Dit is het startpunt van een beklijvende geschiedenis, doorspekt met veel smeuïge details en intriges, maar ook met veel boeiende wiskunde. We gebruiken de volgende terminologie. 1.2. Terminologie. Een systematische manier om berichten in geheime code te zetten noemen we een cryptosysteem of een cijfer. Het omzetten van een bericht naar geheimschrift noemen we vercijferen. Het omzetten van geheime code naar een leesbaar bericht noemen we ontcijferen. 1.3. Het substitutiecijfer. Historisch gezien is het substitutiecijfer het eerste cryptosysteem dat belangrijk bleek voor de ontwikkeling van de moderne cryptografie. In wezen is het van de hand van Julius Caesar: om met zijn generaals 1

2 MODULOREKENEN EN CRYPTOGRAFIE te communiceren verving hij elke letter door de derde daaropvolgende letter van het alfabet, Dus A D, B E, C F,..., W Z, X A, Y B, Z C. ALEA JACTA EST wordt DOHD MDFWD HVW. Meer algemeen kan men de letters van het alfabet in eender welke volgorde zetten, bijvoorbeeld (1.1) RBDKOMQNAYUEHXZCJLPVSITFWG. Een bericht wordt dan in code gezet door systematisch A door de eerste letter uit die volgorde te vervangen, B door de tweede letter, C door de derde letter, enzovoort. Op basis van volgorde (1.1) wordt ALEA JACTA EST nu REOR YRDVR OPV. Door de omgekeerde substitutie toe te passen kan de ontvanger het bericht terug leesbaar maken. Het moderne aan het substitutiecijfer is dat er een duidelijk onderscheid wordt gemaakt tussen het systeem zelf (substitutie) en een geheim extra ingrediënt (de volgorde van de letters van het alfabet). Een naïeve vijand die een vercijferd bericht onderschept moet, indien hij al weet dat het bericht met behulp van substitutie werd vercijferd, alle mogelijke lettervolgordes uitproberen. Dat zijn er 26! = 403291461126605635584000000 4 10 26. Stel dat het uitproberen van één lettervolgorde een halve minuut duurt, dan zou dit hem ongeveer 38 10 19 jaar kosten. Ter vergelijking: de leeftijd van het heelal is ongeveer 14 10 9 jaar. Dat is een belangrijk verschil met de Griekse scytale. Indien de vijand weet dat het onderschepte bericht met een scytale werd vercijferd, hoeft hij maar een heel beperkt aantal mogelijkheden af te gaan. Oefening 1.3.1. De zin THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG telt alle letters van het alfabet minstens één keer en heeft dus 26! 4 10 26 mogelijke vercijferingen onder het substitutiecijfer. Wat is het aantal mogelijke vercijferingen met behulp van een scytale? Hierbij beschouwen we de spaties ook als karakters. 1.4. Sleutels. In wat volgt zullen we er altijd van uitgaan dat het gebruikte cryptosysteem door vriend en vijand gekend is: dit heet het principe van Kerckhoffs, genoemd naar de 19de-eeuwse Nederlandse cryptograaf Auguste Kerckhoffs. Een geheime sleutel is een kort ingrediënt dat als extra input wordt gebruikt en dat enkel door de zender en de ontvanger gekend is. De sleutelruimte is de verzameling van alle bruikbare geheime sleutels. 1.5. Veiligheid. Een cryptosysteem wordt veilig beschouwd als er voor een aanvaller niet veel beter op zit dan alle sleutels uit de sleutelruimte één voor één uitproberen. De sleutelruimte van het substitutiecijfer is de verzameling permutaties van het alfabet. Bij hedendaagse cryptosystemen worden sleutelruimtes van om en bij de 2 80 sleutels aangeraden (ter vergelijking: 26! 2 88 ). Meer en meer wordt 2 128 de nieuwe standaard, al zit daar heel veel veiligheidsmarge op.

MODULOREKENEN EN CRYPTOGRAFIE 3 1.6. Het substitutiecijfer gekraakt. Hierboven hadden we het over een naïeve vijand, die miljarden keer de leeftijd van het heelal zou nodig hebben om het substitutiecijfer te kraken. Een iets slimmere vijand kan het echter veel handiger aanpakken, waardoor het substitutiecijfer vandaag de dag als flagrant onveilig wordt beschouwd. Dat heeft te maken met de ongelijke frequenties waarmee de letters van het alfabet in de Nederlandse taal (of in eender welke populaire taal) voorkomen. Bijna 20 % van alle letters in een voldoende lange doorsnee Nederlandse tekst zijn E. Met een aandeel van zo n 10 % komt de letter N op de tweede plaats, gevolgd door ongeveer 8 % A s. Dat betekent dat, wanneer we een stuk geheimschrift in handen hebben, de letter die het vaakst voorkomt veel kans heeft om de vercijfering van de letter E te zijn, de letter die het op één na vaakst voorkomt is met een redelijke kans een vercijferde N, en zo verder. Op die manier herleidt het ontcijferwerk zich essentieel tot een spelletje Rad van Fortuin. We noemen deze methode frequentieanalyse. Ze werd reeds in de 9de eeuw na Christus beschreven door de Arabische wetenschapper Al-Kindi. Hoe langer de te ontcijferen tekst is, hoe beter de statistiek zijn werk doet en hoe eenvoudiger het ontcijferwerk wordt. Figuur 2. Letterfrequenties in het Nederlands (gebaseerd op een steekproef van 60696 letters uit de krant De Standaard van 26 april 2011). We geven een voorbeeld. Veronderstel dat onze geheime diensten het volgende bericht onderschepten. PDJFRPPX QTREGK TQ CPLD KGEGK PPK CGM XPJMGGL BX NPL HABNGKH WRTKNGK QAKMJMAXXGK WBZ QG CGWWGK We zien dat de letter G twaalf keer voorkomt, de letter K tien keer en de letter P acht keer (en dat deze letters daarmee de kroon spannen). We gokken daarom dat dit de vercijferingen zijn van respectievelijk E, N en A en krijgen de volgende gedeeltelijke kandidaat-ontcijfering. A...AA....EN...A.. NE.EN AAN.E..A..EE....A....EN....N.EN..N...EN....E.E..EN

4 MODULOREKENEN EN CRYPTOGRAFIE Een logische gok voor het woord na AAN is HET (waarom kan EEN niet?), wat zou betekenen dat de letters C en M de respectievelijke vercijferingen zijn van de letters H en T. Invullen geeft: A...AA....EN.. HA.. NE.EN AAN HET.A.TEE....A....EN....N.EN..NT.T...EN....E HE..EN We laten het resterende puzzelwerk aan de lezer over. Ondanks het feit dat een gokje af en toe verkeerd kan uitdraaien, zou het duidelijk moeten zijn dat het ontcijferen van de tekst ons absoluut geen 38 10 19 jaar zal kosten. 1.7. Inhoud van de studiebundel. In het vervolg van deze tekst zullen we enkele meer recente en meer geavanceerde cryptosystemen onder de loep nemen. Deze systemen maken vaak gebruik van fundamentele resultaten uit de wiskunde, meer bepaald uit de getaltheorie. Een belangrijk ingrediënt is het zogeheten modulorekenen; Paragraaf 2 van de bundel is daaraan gewijd. In de daaropvolgende paragrafen bespreken we verschillende cryptografische methoden die op het modulorekenen zijn gebaseerd. 1.8. Over de bewijzen in de studiebundel. Voor verschillende resultaten uit de getaltheorie wordt in deze bundel ook een bewijs gegeven. Dit bewijs kan extra inzicht verschaffen in de theorie, maar het is niet strikt noodzakelijk om de rest van de bundel te begrijpen of de opgaven op te lossen. De bewijzen zijn vooral bestemd voor de leerlingen die dieper op de theorie willen ingaan. De bewijzen van Stelling 2.4.2 en Propositie 2.7.1 zijn wel belangrijk omdat ze praktische methoden bevatten om bepaalde getallen te gaan berekenen. Deze methoden worden geïllustreerd in Voorbeelden 2.4.3 en 2.7.2. 1.9. Enkele basisbegrippen. Zij x en y gehele getallen. Een deler van x is een geheel getal d zodat er een geheel getal q bestaat met x = dq. Als d een deler is van x, dan zal d ook een deler zijn van van ax, voor alle gehele getallen a. Als d een deler is van x en y, dan is d ook een deler van ax + by, voor alle gehele getallen a en b. Als e een deler is van d en d een deler van x, dan is e ook een deler van x. Veronderstel nu dat x en y niet beide nul zijn. De grootste gemene deler ggd(x, y) is het grootste natuurlijk getal dat zowel x als y deelt. We noemen x en y relatief priem wanneer hun grootste gemene deler gelijk is aan 1. Dat betekent dat 1 en 1 de enige gehele getallen zijn die zowel x als y delen. Een priemgetal is een natuurlijk getal p > 1 zodat 1 en p de enige natuurlijke delers zijn van p. 2. Modulorekenen 2.1. De wijzers van de klok. Modulorekenen doen we elke dag zonder er bij stil te staan, in het bijzonder wanneer we rekenen met tijd. Stel dat het momenteel vijf uur in de namiddag is. In Sydney is het acht uur later. Hoe laat is het daar op dit moment? Een kleine rekensom leert dat het in Sydney één uur in de ochtend is. Hoe zijn we precies tot dit resultaat gekomen? We hebben bij vijf uur het tijdsverschil van acht uur opgeteld; dat geeft dus 5 + 8 = 13. Omdat ons horloge de tijd opdeelt in blokken van twaalf uur, trekken we 12 af van de waarde 13 zodat we een uitkomst tussen 0 en 12 verkrijgen. Zo vinden we 13 12 = 1. We zeggen dat 5+8 congruent

MODULOREKENEN EN CRYPTOGRAFIE 5 is aan 1 modulo 12. We noteren dit door 5 + 8 1 mod 12. Zo n uitdrukking heet een congruentie, en 12 noemen we de modulus van de congruentie. In Boston is het zes uur vroeger dan in Leuven. Op dit moment is het daar dus elf uur in de voormiddag, want 5 6 = 1 en door bij 1 de waarde 12 op te tellen vinden we 11. We zeggen daarom dat 5 6 congruent is aan 11 modulo 12. Vaak werken we met congruenties met een andere modulus dan 12. Wanneer je een digitaal horloge gebruikt met 24-uursnotatie, dan reken je met uren modulo 24. Als het vandaag vrijdag is en je wil weten welke weekdag het over vier dagen zal zijn, dan rekenen je modulo 7. Enzovoort... 2.2. Congruenties. We gieten deze observaties nu in een algemene definitie. In het vervolg van deze tekst noteren we met M steeds een strikt positief geheel getal. Definitie 2.2.1. Zij x en y gehele getallen. We zeggen dat x congruent is aan y modulo M wanneer M het geheel getal x y deelt. We noteren dit met x y mod M. We noemen M de modulus van de congruentie. De congruentierelatie heeft enkele interessante eigenschappen: (1) elk geheel getal x is congruent aan zichzelf modulo M. (2) als x y modulo M, dan zal ook y x modulo M, want als M het verschil x y deelt, dan deelt M ook y x = (x y). (3) als x y en y z modulo M, dan zal ook x z modulo M. Dit kan je zelf bewijzen als oefening. Voor elk geheel getal x noteren we met x de verzameling van alle gehele getallen die congruent zijn aan x modulo M. Dat is dus de verzameling x = {x, x M, x + M, x 2M, x + 2M,...}. We noemen x de congruentieklasse van x modulo M. Elk element van de congruentieklasse x heet een representant van x. Bovenstaande eigenschappen van de congruentierelatie hebben de volgende consequenties: alle elementen van x zijn congruent aan elkaar modulo M. Als y een tweede geheel getal is, dan is x = y als en slechts als x en y congruent zijn modulo M. In het andere geval zijn x en y disjunct (dat wil zeggen dat deze verzamelingen een lege doorsnede hebben). Een geheel getal a is een representant van x als en slechts als a = x. Elke congruentieklasse x heeft precies één representant c in {0,..., M 1}; als x positief is, dan is c de rest van x bij deling door M. Wanneer we een congruentieklasse opschrijven, dan kiezen we als representant vaak dit element c. Bijvoorbeeld: als M = 7, dan schrijven we meestal 2 in plaats van 16, en 5 in plaats van 9. De verzameling Z van gehele getallen is dus de unie van de congruentieklassen 0, 1,..., M 1. De verzameling van al deze congruentieklassen noteren we met Z M = {0, 1,..., M 1}.

6 MODULOREKENEN EN CRYPTOGRAFIE Deze definitie lijkt nogal ingewikkeld: Z M is een verzameling waarvan de elementen zelf verzamelingen zijn. Het is vaak handiger om Z M eenvoudigweg te beschouwen als de verzameling die bestaat uit de getallen 0, 1,..., M 1. De streep boven deze getallen in de notatie voor de elementen van Z M duidt dan aan dat we op een bijzondere manier met deze elementen moeten rekenen; dit wordt uitgelegd in de volgende paragraaf. Voorbeeld 2.2.2 (Congruenties op je bankkaart). Een geldig Belgisch bankrekeningnummer bestaat uit een getal G van tien cijfers (met een streepje na de eerste drie), plus een controlegetal van twee cijfers, bijvoorbeeld: 091 0122401 16. Het controlegetal is het unieke element in {1,..., 97} dat congruent is aan G modulo 97. Het controlegetal is dus precies de rest van G bij deling door 97, tenzij deze rest 0 is: in dat geval is het controlegetal 97. In bovenstaand voorbeeld is 16 de rest van 910122401 bij deling door 97. Het controlegetal wordt toegevoegd om na te gaan of een rekeningnummer correct ingevoerd wordt, bijvoorbeeld als je een overschrijving wil uitvoeren. Als je exact één cijfer verkeerd ingeeft, dan zal het controlegetal niet meer correct zijn, zodat het systeem kan signaleren dat je een fout hebt gemaakt. Als je meer dan één fout maakt, dan kan het wel toevallig gebeuren dat je opnieuw een geldig rekeningnummer krijgt. 2.3. Rekenen met congruentieklassen. Propositie 2.3.1. Beschouw gehele getallen x, x, y en y. Veronderstel dat x x en y y modulo M. Dan gelden de volgende eigenschappen: (1) x + y x + y modulo M, (2) x y x y modulo M, (3) x y x y modulo M. Bewijs. We bewijzen enkel eigenschap (3), de andere kan je zelf aantonen als oefening. We weten dat x x en y y deelbaar zijn door M. Dat betekent dat er gehele getallen a en b bestaan zodat x = x + am en y = y + bm. Door deze gelijkheden te vermenigvuldigen vinden we dat x y = (x + am)(y + bm) = xy + (bx + ay + abm)m. Dus x y xy is deelbaar door M, en dat betekent precies dat x y x y mod M. Propositie 2.3.1 is erg belangrijk, omdat hij toelaat bewerkingen te definiëren op congruentieklassen in plaats van op gehele getallen. Definitie 2.3.2. We definiëren we bewerkingen +, en op de verzameling Z M door voor alle gehele getallen x en y. x + y = x + y, x y = x y, x y = x y,

MODULOREKENEN EN CRYPTOGRAFIE 7 Merk op dat deze definitie ondubbelzinnig is: als x en y gehele getallen zijn zodat x = x en y = y, dan garandeert Propositie 2.3.1 dat x + y = x + y, x y = x y, x y = x y. Het resultaat van de bewerkingen in Definitie 2.3.2 hangt dus niet af van de keuze van de representanten x en y. Meer concreet betekent dit dat we rekenen met elementen van Z M = {0, 1,..., M 1} op de volgende manier: om de som, het verschil of het product van twee elementen x en y van Z M te berekenen, voeren we de overeenkomstige bewerking uit op de gehele getallen x en y; vervolgens tellen we bij het resultaat een geheel veelvoud op van M zodat we een element z van {0,..., M 1} bekomen. Het resultaat van onze bewerking is dan het element z van Z M. Voorbeeld 2.3.3. Veronderstel dat de modulus M gelijk is aan 6. Dan geldt 2 9 = 7 = 5. Het product 2 3 bereken je als volgt: 2 3 = 6 = 0. Als we 122 6001 willen uitrekenen, dan hoeven we daarvoor niet eerst het product 122 6001 te bepalen. Het volstaat op te merken dat 122 = 2 en 6001 = 1 omdat 120 en 6000 deelbaar zijn door 6, zodat 122 6001 = 2 1 = 2. Oefening 2.3.4. Bereken de volgende uitdrukkingen modulo 5: 2 + 3, 3 4, 2309 2011. Onze bewerkingen op congruentieklassen hebben de volgende eigenschappen. Propositie 2.3.5. (1) Het element 0 is een neutraal element voor de optelling, en 1 is een neutraal element voor de vermenigvuldiging: voor alle gehele getallen x geldt dat x + 0 = 0 + x = x en x 1 = 1 x = x. (2) Voor elk geheel getal x bestaat er een unieke congruentieklasse w zodat x + w = w + x = 0, namelijk w = x. We noteren deze congruentieklasse ook met x, de tegengestelde van x. (3) De optelling van congruentieklassen is associatief en commutatief, dat wil zeggen: x + (y + z) = (x + y) + z en x + y = y + x voor alle gehele getallen x, y en z. De analoge eigenschappen gelden voor de vermenigvuldiging. (4) De vermenigvuldiging van congruentieklassen is distributief te opzichte van de optelling, dat wil zeggen: x (y + z) = x y + x z voor alle gehele getallen x, y en z. Al deze eigenschappen volgen onmiddellijk uit de overeenkomstige eigenschappen voor de optelling en vermenigvuldiging van gehele getallen. Je zal bij berekeningen met congruentieklassen deze eigenschappen waarschijnlijk spontaan toepassen zonder er bij stil te staan. Oefening 2.3.6. Toon aan dat een natuurlijk getal x deelbaar is door 9 als en slechts als de som van de cijfers van x deelbaar is door 9. Hint: schrijf x als x = c 0 + c 1 10 +... + c m 10 m met c 1,..., c m in {0,..., 9}, en bereken de congruentieklasse van x modulo 9.

8 MODULOREKENEN EN CRYPTOGRAFIE Oefening 2.3.7. Bij een perfect shuffle meng je twee helften van een spel kaarten ritsgewijs door elkaar. Als je de kaarten bij aanvang nummert met 0, 1,..., 51, dan liggen ze na zo n perfect shuffle in de volgorde 0, 26, 1, 27, 2, 28,..., 25, 51. Hoeveel perfect shuffles moet je minimaal uitvoeren opdat de kaarten weer op dezelfde volgorde zouden liggen als in het begin? Hint: reken modulo 51. 2.4. Het algoritme van Euclides en de stelling van Bézout-Bachet. Omstreeks 300 voor Christus schreef de beroemde Alexandrijnse wiskundige Euclides in één van zijn Elementen een algoritme neer om de grootste gemene deler van twee natuurlijke getallen te bepalen. We illustreren dit algoritme aan de hand van een voorbeeld. Voorbeeld 2.4.1. We gaan de grootste gemene deler bepalen van 34 en 14. We voeren eerst de Euclidische deling (= gehele deling met rest) uit van 34 door 14: 34 = 2 14 + 6. Hierbij is 2 het quotiënt van de deling en 6 de rest. We herhalen deze bewerking met 14 en 6: 14 = 2 6 + 2. Vervolgens delen we 6 door de nieuwe rest 2: 6 = 3 2. Nu is de rest gelijk aan 0, met andere woorden: 2 is een deler van 6. Hieruit kan je besluiten dat 2 (de laatste rest die we vonden verschillend van nul) de grootste gemene deler is van 34 en 14; we zullen dit hieronder op een precieze manier aantonen. Merk op dat het algoritme altijd eindigt na een eindig aantal stappen: in elke stap wordt de rest strikt kleiner, zodat we uiteindelijk op 0 moeten uitkomen. Door het algoritme van Euclides nauwkeuriger te bestuderen, kunnen we een nieuw resultaat bewijzen: de stelling van Bézout-Bachet. Deze stelling is van groot belang voor de getaltheorie. Stelling 2.4.2 (Bézout-Bachet). Als x en y twee natuurlijke getallen zijn, niet beide nul, en als d de grootste gemene deler is van x en y, dan bestaan er gehele getallen a en b zodat ax + by = d. Bewijs. We mogen veronderstellen dat x y (anders wisselen we x en y gewoon om) en dat y verschillend is van 0 (anders is ggd(x, y) = x en valt er niets te bewijzen). We stellen r 0 = x en r 1 = y. Nu voeren we het algoritme van Euclides uit. Het resultaat is een lijst van Euclidische delingen r 0 = q 1 r 1 + r 2 r 1 = q 2 r 2 + r 3. r n = q n+1 r n+1 + r n+2 waarbij de laatste rest r n+2 gelijk is aan 0.

MODULOREKENEN EN CRYPTOGRAFIE 9 Omdat r n = q n+1 r n+1 is r n+1 een deler van r n. Omdat r n 1 = q n r n + r n+1 zal r n+1 bovendien ook een deler zijn van r n 1. Door zo verder op te klimmen in onze lijst, zien we uiteindelijk dat r n+1 ook r 0 = x en r 1 = y zal delen. Door onze Euclidische delingen een beetje te herschrijven, vinden we de volgende gelijkheden: r 2 = r 0 q 1 r 1 r 3 = r 1 q 2 r 2 = q 2 r 0 + (q 1 q 2 + 1)r 1 r 4 = r 2 q 3 r 3 = (q 2 q 3 + 1)r 0 (q 1 + q 1 q 2 q 3 + q 3 )r 1. r n+1 = r n 1 q n r n = ar 0 + br 1 met a en b gehele getallen. Uit de laatste gelijkheid volgt dat elke gemene deler van r 0 = x en r 1 = y ook een deler moet zijn van r n+1. We hebben hierboven al gezien dat r n+1 zelf een deler is van x en y. Daarom kunnen we besluiten dat r n+1 gelijk is aan de grootste gemene deler d van x en y. We vinden zo dat d = ax + by, en dit is precies wat we wilden bewijzen. Het bewijs van de stelling geeft een methode om de grootste gemene deler d en de coëfficiënten a en b expliciet te bepalen. We noemen deze methode het uitgebreide algoritme van Euclides. In Voorbeeld 2.4.3 zie je het algoritme aan het werk in een concrete situatie. De coëfficiënten a en b zijn niet uniek: alle gehele getallen a = a + ky/d en b = b kx/d, met k Z, voldoen aan de vergelijking a x + b y = d. Voorbeeld 2.4.3. We passen het uigebreide algoritme van Euclides toe op x = 31 en y = 22. We voeren eerst het klassieke algoritme van Euclides uit: 31 = 22 + 9, 22 = 2 9 + 4, 9 = 2 4 + 1, 4 = 4 1 + 0. De grootste gemene deler van 31 en 22 is dus gelijk aan 1. Nu herschrijven we deze lijst gelijkheden zoals in het bewijs van Stelling 2.4.2: 9 = 31 22, 4 = 22 2 9 = 2 31 + 3 22, 1 = 9 2 4 = 5 31 7 22. We vinden zo dat ggd(31, 22) = 1 = 5 31 7 22. Het is handig om deze berekeningen op te schrijven in een tabel:

10 MODULOREKENEN EN CRYPTOGRAFIE 31 22 31 = 1 31 + 0 22 1 0 22 = 0 31 + 1 22 0 1 9 = 31 22 1-1 4 = 22 2 9-2 3 1 = 9 2 4 5-7 Oefening 2.4.4. Vind de grootste gemene deler van 202 en 142 en schrijf hem als met a en b gehele getallen. a 202 + b 142 We bespreken nu enkele belangrijke gevolgen van de stelling van Bézout-Bachet. 2.5. Priemontbinding. Lemma 2.5.1 (Lemma van Euclides). Zij x en y gehele getallen, en zij p een priemgetal. Als p het product xy deelt, dan moet p ook x of y delen. Bewijs. Stel dat p het getal x niet deelt. Dan zijn x en p relatief priem, want de enige natuurlijke delers van p zijn 1 en p. Volgens de stelling van Bézout-Bachet bestaan er gehele getallen a en b zodat 1 = ax + bp. Omdat p een deler is van xy, zal p ook een deler zijn van y = (ax + bp) y = axy + bpy. Het volgende resultaat is één van de belangrijkste eigenschappen van de natuurlijke getallen. Een groot deel van de getaltheorie is op deze stelling gebaseerd. Daarom wordt hij de fundamentaalstelling van de getaltheorie genoemd. Dit resultaat staat in essentie al vermeld in Euclides Elementen, hoewel Euclides een andere formulering gebruikte. Stelling 2.5.2 (Fundamentaalstelling van de getaltheorie). Elk natuurlijk getal x > 1 kan geschreven worden als een product van machten van priemgetallen: (2.1) x = p α 1 1... pαr r, met p 1,..., p r priem en α 1,..., α r natuurlijke getallen. We zullen in deze schrijfwijze steeds veronderstellen dat p 1 < p 2 <... < p r en dat de exponenten α i verschillend zijn van 0. Onder die veronderstelling is de schrijfwijze uniek. We noemen hem de priemontbinding van x. Bewijs. Het is niet moeilijk in te zien dat we elk natuurlijk getal x > 1 kunnen schrijven als een product van priemgetallen. We geven een bewijs via inductie op x. Als x = 2 dan is x al priem en valt er niets te bewijzen. Veronderstel dus dat x > 2 en dat we elk natuurlijk getal x in het interval [2, x 1] kunnen schrijven als een product van priemgetallen. Als x priem is, dan valt er niets te bewijzen. Zoniet kunnen we x schrijven als y z met y en z natuurlijke getallen die strikt kleiner zijn dan x. Volgens onze inductiehypothese kunnen we y en z schrijven als producten van priemgetallen. Als we deze uitdrukkingen met elkaar vermenigvuldigen, dan hebben we x geschreven als een product van priemgetallen.

MODULOREKENEN EN CRYPTOGRAFIE 11 Nu bewijzen we dat de schrijfwijze (2.1) uniek is. Zij p een priemgetal en α het grootste natuurlijke getal zodat p α een deler is van x. Als α = 0 dan is p α = 1 en is p geen deler van x; het priemgetal p kan dan ook niet voorkomen in de ontbinding (2.1). Als α > 0 dan moet p volgens het lemma van Euclides een deler zijn van één van de priemgetallen p 1,..., p r, en dus gelijk zijn aan p i met i {1,..., r}. Omdat p α i i een deler is van x en we α zo groot mogelijk gekozen hebben, moet α i α. Omdat p α een deler is van x, zal p α αi een deler zijn van x/p αi i. Maar x/p αi i is een product van priemgetallen die verschillend zijn van p, en dus volgt uit het lemma van Euclides dat p geen deler kan zijn van x/p αi i, zodat α = α i. Dit toont aan dat de ontbinding (2.1) uniek is: de priemgetallen p 1,..., p r zijn precies al de priemgetallen die x delen, en voor elke i is α i het grootste natuurlijk getal zodat p α i i een deler is van x. Gevolg 2.5.3. Twee gehele getallen zijn relatief priem als en slechts als ze geen gemeenschappelijke priemdelers hebben. Oefening 2.5.4. Stel dat x, y en z gehele getallen zijn zodat x en y relatief priem zijn. Toon de volgende eigenschappen aan. (1) Als x en z relatief priem zijn, dan zijn ook x en yz relatief priem. (2) Het product xy is een deler van z als en slechts als x en y delers zijn van z. (3) Het getal x is een deler van z als en slechts als x een deler is van yz. Oefening 2.5.5. Zij p en q verschillende priemgetallen. natuurlijke delers van x = p 8 q 13. Bepaal het aantal Oefening 2.5.6. Zij n een natuurlijk getal zodat n + 1 geen priemgetal is en ook niet het kwadraat van een priemgetal. Toon aan dat n + 1 een deler is van n!. 2.6. De Chinese reststelling. Stelling 2.6.1 (Chinese reststelling 1 ). Zij M 1,..., M r strikt positieve gehele getallen. We veronderstellen dat deze getallen paarsgewijs relatief priem zijn, dat wil zeggen: ggd(m i, M j ) = 1 voor alle elementen i en j in {1,..., r} waarvoor i j. Voor alle gehele getallen x 1,..., x r bestaat er een geheel getal x zodat (2.2) x x i mod M i voor elke i in {1,..., r}. De gehele getallen y die ook aan al deze congruenties voldoen zijn precies de elementen van de congruentieklasse van x modulo M = M 1... M r. Bewijs. Stel M = M 1... M r. Voor elke i in {1,..., r} zijn de gehele getallen M i en M/M i relatief priem, aangezien elke priemdeler van M/M i een deler moet zijn van één van de factoren M j met j i, en M i en M j geen gemeenschappelijke priemdelers hebben. Volgens de stelling van Bézout-Bachet kunnen we gehele getallen a i en b i vinden zodat a i M i + b i M/M i = 1. 1 Dit resultaat werd al in de 4de eeuw na Christus opgetekend in Het rekenkundig handboek van Meester Sun van de Chinese wiskundige Sunzi.

12 MODULOREKENEN EN CRYPTOGRAFIE We stellen x = x 1 b 1 M/M 1 + + x r b r M/M r. Voor elke i in {1,..., r} zal M i een deler zijn van x x i = x 1 b 1 M/M 1 + + x i (b i M/M i 1) + + x r b r M/M r omdat M i een deler is van M/M j voor alle j i en ook een deler van b i M/M i 1 = a i M i. Dus het getal x voldoet aan de congruentie (2.2), voor alle i in {1,..., r}. Het is duidelijk dat elk getal y in de congruentieklasse van x modulo M ook aan al deze congruenties voldoet, aangezien y x dan deelbaar is door M en dus door al de moduli M i. We moeten enkel nog aantonen dat we zo alle oplossingen gevonden hebben. Veronderstel dus dat y een geheel getal is zodat y x i mod M i voor alle i. Dan zal y ook congruent zijn aan x modulo M i, voor alle i. Aangezien de moduli M i paarsgewijs relatief priem zijn, vinden we door Oefening 2.5.4 herhaaldelijk toe te passen dat M een deler moet zijn van y x. Dus y behoort tot de congruentieklasse van x modulo M. De Chinese reststelling is een sterk resultaat: om de congruentieklasse van een geheel x modulo M 1... M r te bepalen, volstaat het de congruentieklassen van x te kennen modulo de getallen M 1,..., M r. Voorbeeld 2.6.2. De gehele getallen x die voldoen aan de congruenties { x 2 mod 13 x 0 mod 7 zijn precies de elementen van de congruentieklasse modulo 13 7 = 91. 28 = {28, 119, 63, 210, 154,...} 2.7. Eenheden in Z M. Zij M een strikt positief geheel getal. Propositie 2.7.1. Zij x een geheel getal. De getallen x en M zijn relatief priem als en slechts als er een geheel getal y bestaat zodat x y = 1 in Z M. In dat geval is de congruentieklasse y uniek. We noemen deze congruentieklasse het inverse element van x, en we noteren hem met x 1. Als x een inverse heeft, dan noemen we x een eenheid in Z M, en noemen we x een eenheid modulo M. De verzameling van eenheden in Z M duiden we aan met Z M. Bewijs. Veronderstel eerst dat x en y gehele getallen zijn zodat x y = 1. Dat betekent dat M een deler is van xy 1. Elke gemene deler d van x en M deelt dus zowel x als xy 1. Dan moet d ook een deler zijn van xy, en dus van xy (xy 1) = 1. Daaruit volgt dat d enkel 1 of 1 kan zijn, en dat ggd(x, M) = 1.

MODULOREKENEN EN CRYPTOGRAFIE 13 Nu tonen we de omgekeerde implicatie aan. Veronderstel dat x een geheel getal is zodat ggd(x, M) = 1. Volgens de stelling van Bézout-Bachet bestaan er dan gehele getallen a en b zodat ax + bm = 1. De modulus M moet dan een deler zijn van Dus ax 1 = bm. ax 1 mod M, met andere woorden: x a = 1. Als c een geheel getal is zodat eveneens x c = 1, dan geldt omwille van de commutativiteit en de associativiteit van de vermenigvuldiging dat c = (x a) c = (x c) a = a. Dus het inverse element a van x is uniek (als het bestaat). Dit bewijs laat ook zien hoe je het inverse element van x kan vinden: het is de congruentieklasse van de coëfficiënt a van x die je kan bepalen via het uitgebreide algoritme van Euclides. Voorbeeld 2.7.2. We lezen af uit Voorbeeld 2.4.3 dat 7 = 24 het inverse element is van 22 in Z 31, omdat 7 22 = 1 5 31 1 mod 31. Oefening 2.7.3. Zijn de volgende getallen eenheden in Z 35? Zo ja, bereken hun invers. 5, 6, 8, 34. Oefening 2.7.4. Toon de volgende eigenschappen aan: (1) Als r en s eenheden zijn in Z M, dan is r s een eenheid in Z M. (2) Als r een eenheid is in Z M en u en v elementen in Z M zodat r u = r v, dan moet u = v. Merk op dat de tweede eigenschap niet geldt als r geen eenheid is: zo is 2 3 = 0 = 2 0 in Z 6, terwijl 3 0. Oefening 2.7.5. Stel dat x en y natuurlijke getallen zijn zodat x eindigt op de cijfers 13 en zodat x y eindigt op 52. Toon aan dat het getal y moet eindigen op 04. We stellen ons nu de volgende vraag: hoeveel elementen bevat Z M? Met andere woorden: hoeveel elementen in {0,..., M 1} zijn een eenheid modulo M? Omwille van Propositie 2.7.1 weten we dat dit precies de elementen zijn van de verzameling E M = {x {0,..., M 1} ggd(x, M) = 1}. Het aantal elementen van E M noteren we met φ(m). Dit getal wordt het Eulergetal van M genoemd.

14 MODULOREKENEN EN CRYPTOGRAFIE Voorbeeld 2.7.6. Het Eulergetal φ(1) is gelijk aan 1, want de grootste gemene deler van 0 en 1 is gelijk aan 1, zodat E 1 = {0}. Het Eulergetal φ(6) is gelijk aan 2, want E 6 = {1, 5}. Als p een priemgetal is, dan is en dus φ(p) = p 1. E p = {1,..., p 1} We gaan nu een handige formule opstellen die ons toelaat om φ(m) expliciet te berekenen. Lemma 2.7.7. Zij M en N strikt positieve gehele getallen, en veronderstel dat M en N relatief priem zijn. Dan geldt φ(mn) = φ(m) φ(n). Bewijs. Zij x een element van {0,..., MN 1}. Uit de Chinese reststelling volgt dat x volledig bepaald wordt door zijn congruentieklassen modulo M en N: voor elke a in {0,..., M 1} en elke b in {0,..., N 1} is er precies één element x in {0,..., MN 1} zodat x a mod M en x b mod N. Bovendien is x relatief priem met MN als en slechts als a relatief priem is met M en b relatief priem is met N. Dit kan je inzien als volgt: de gemeenschappelijke priemdelers van x en MN zijn precies de priemgetallen p die x delen en ook M of N, omwille van het lemma van Euclides. Maar als p een deler is van M, dan deelt p ook x als en slechts als p een deler is van a, vermits we a kunnen schrijven als a = x + km met k Z. De gemeenschappelijke priemdelers van x en M zijn dus precies de gemeenschappelijke priemdelers van a en M. De analoge eigenschap geldt voor x, b en N. Dus φ(mn) is gelijk aan het aantal elementen in de productverzameling {a {0,..., M 1} ggd(a, M) = 1} {b {0,..., N 1} ggd(b, N) = 1}. De eerste factor in dit product heeft precies φ(m) elementen, en de tweede φ(n). We kunnen daarom besluiten dat φ(mn) = φ(m) φ(n). Propositie 2.7.8. Zij M > 1 een geheel getal met priemontbinding Dan geldt M = p α 1 1... pα r r. φ(m) = (p 1 1)p α1 1 1... (p r 1)p α r 1 r. Bewijs. Veronderstel eerst dat r = 1; dan is M gelijk aan p α, met p een priemgetal en α een strikt positief geheel getal. De elementen in {0,..., M 1} die niet relatief priem zijn met M zijn dan precies de veelvouden van p, namelijk V = {0, p, 2p,..., (p α 1 1)p}.

MODULOREKENEN EN CRYPTOGRAFIE 15 Merk op dat (p α 1 1)p inderdaad het grootste veelvoud van p is dat strikt kleiner is dan M = p α. De verzameling V bevat p α 1 elementen, dus de verzameling bevat elementen. We vinden zo dat E M = {0,..., M 1} \ V M p α 1 = (p 1)p α 1 φ(p α ) = (p 1)p α 1. De algemene formule voor φ(m) volgt nu onmiddellijk uit Lemma 2.7.7. Oefening 2.7.9. Bewijs Propositie 2.7.8 als M een product is van twee verschillende priemgetallen p en q, zonder gebruik te maken van de Chinese reststelling: tel de elementen van {0,..., M 1} die niet relatief priem zijn met M. 2.8. De congruentie van Euler en de kleine stelling van Fermat. Stelling 2.8.1 (Congruentie van Euler). Zij M een strikt positief geheel getal, en a een geheel getal dat relatief priem is ten opzichte van M. Dan geldt a φ(m) 1 mod M. Bewijs. Zij r 1,..., r φ(m) de eenheden in Z M. Uit Oefening 2.7.4 volgt dat {r 1,..., r φ(m) } = {a r 1,..., a r φ(m) }. Als we de elementen in elk van deze verzameligen vermenigvuldigen, dan vinden we dat r 1... r φ(m) = a φ(m) r 1... r φ(m). Oefening 2.7.4 zegt dan dat anders gezegd: a φ(m) = 1, a φ(m) 1 mod M. Gevolg 2.8.2 (Kleine stelling van Fermat 2 ). Als p een priemgetal is en a een geheel getal dat niet deelbaar is door p, dan geldt Voor alle gehele getallen b geldt dus dat a p 1 1 mod p. b p b mod p. 2 We noemen Gevolg 2.8.2 de kleine stelling van Fermat om het onderscheid te maken met de beroemde grote stelling van Fermat. Die zegt het volgende: als x, y, z en n natuurlijke getallen zijn zodat x n + y n = z n en n > 2, dan moet x of y gelijk zijn aan 0. Dit resultaat, door Fermat geformuleerd in 1637, werd pas in 1994 bewezen door de Britse wiskundige Andrew Wiles. Het bewijs maakt gebruik van erg diepe resultaten uit de getaltheorie en de meetkunde.

16 MODULOREKENEN EN CRYPTOGRAFIE Bewijs. De eerste bewering is een bijzonder geval van de congruentie van Euler, omdat φ(p) = p 1. Als we beide leden van deze congruentie vermenigvuldigen met a, dan vinden we a p a mod p. De tweede bewering hoeven we dan enkel nog te bewijzen als p een deler is van b. In dat geval geldt b p b 0 mod p. Gevolg 2.8.3. Zij M een strikt positief geheel getal, en a een geheel getal dat relatief priem is ten opzichte van M. Als x en y natuurlijke getallen zijn zodat dan zal x y mod φ(m), a x a y mod M. Bewijs. We mogen veronderstellen dat x > y, anders wisselen we x en y gewoon om. Dan zal y = x + φ(m)q met q een natuurlijk getal. Uit de congruentie van Euler volgt nu dat a y = a x (a φ(m) ) q a x mod M. Voorbeeld 2.8.4. Stel dat we de rest van 3 50 bij deling door 35 willen berekenen, Uit Propositie 2.7.8 volgt dat φ(35) = 4 6 = 24. Bovendien zijn 3 en 35 relatief priem. We kunnen Gevolg 2.8.3 daarom toepassen op de volgende manier: zodat 50 2 mod 24, 3 50 3 2 mod 35. De rest van 3 50 bij deling door 35 is dus gelijk aan 9. Oefening 2.8.5. Beschouw een geheel getal n > 1. Bewijs dat 7 (2n) eindigt op het cijfer 1, en 2 (2n) + 1 op het cijfer 7. Wat zijn de laatste twee cijfers van 39 (412011)? 2.9. Generatoren in Z p. Propositie 2.9.1. Zij p een priemgetal. Dan bestaat er een element g in Z p zodat Z p = {g, g 2,..., g p 1 = 1}. Zo n element g noemen we een generator van Z p. Merk op dat g p 1 = 1 voor elk element g van Z p omwille van de kleine stelling van Fermat (Gevolg 2.8.2). Als g een generator is van Z p, dan moeten de machten g i en g j verschillend zijn voor alle elementen i j in {1,..., p 1}, omdat we weten dat Z p precies φ(p) = p 1 elementen bevat. Het bewijs van deze eigenschap valt helaas buiten het bestek van deze bundel. We kunnen hem wel illustreren aan de hand van een voorbeeld.

MODULOREKENEN EN CRYPTOGRAFIE 17 Voorbeeld 2.9.2. Het element 2 is een generator van Z 5. machten van 2 zijn Het element 4 is geen generator van Z 5. 2 1 = 2, 2 2 = 4, 2 3 = 8 = 3, 2 4 = 16 = 1. De opeenvolgende In de volgende secties bespreken we verschillende cryptosystemen die zijn gebaseerd op getaltheorie, en in het bijzonder op modulorekenen. 3. Van Vigenère tot AES 3.1. Het Vigenèrecijfer. We zagen in Paragraaf 1.6 dat het substitutiecijfer relatief eenvoudig gekraakt kan worden door middel van frequentieanalyse. In 1553 stelde Giovanni Belaso een alternatief cryptosysteem voor dat de problemen van het substitutiecijfer leek op te lossen. Het werd opgepikt door de Franse diplomaat Blaise de Vigenère naar wie het cryptosysteem sindsdien wordt genoemd: het Vigenèrecijfer. Het Vigenèrecijfer maakt gebruik van een codewoord. Dat woord kan bijvoorbeeld zijn. Om een zin, bijvoorbeeld TOERNOOI ALEA JACTA EST, te vercijferen vullen we een regel eronder met kopieën van het codewoord. Eventueel dient de laatste kopie te worden afgebroken: ALEA JACTA EST TOER NOOIT OER. Een letter op de tweede regel bepaalt nu hoeveel plaatsen in het alfabet de letter erboven wordt opgeschoven. We identificeren daarvoor de letters van het alfabet met de congruentieklassen in Z 26. Hierbij staat de A voor 0, de B voor 1, de C voor 2,..., de Z voor 25. We vervangen nu de letters van de boodschap en van het codewoord door de overeenkomstige congruentieklassen in Z 26. Vervolgens tellen we beide regels bij elkaar op. Het resultaat is een rij elementen van Z 26, die we opnieuw omzetten in een rij van letters. Deze rij letters is de vercijferde boodschap. In ons voorbeeld vervangen we dus door ALEA JACTA EST TOER NOOIT OER. 0 11 4 0 9 0 2 19 0 4 18 19 19 14 4 17 13 14 14 8 19 14 4 17. Als we nu beide regels optellen, dan vinden we 19 25 8 17 22 14 16 1 19 18 22 10. Door deze reeks congruentieklassen weer om te zetten in letters, vinden we tenslotte de Vigenère-vercijfering horend bij het codewoord TOERNOOI: TZIR WOQBT SWK.

18 MODULOREKENEN EN CRYPTOGRAFIE Het ontcijferen gebeurt dan door de rij kopieën van het codewoord weer van de vercijferde tekst af te trekken. Zoals je ziet wordt de letter A in bovenstaande tekst zowel als een T, een R en een O vercijferd. Dat maakt een statistische aanval zoals in Paragraaf 1.6 op het eerste zicht waardeloos. Oefening 3.1.1. Het Caesarcijfer is een speciaal geval van het Vigenèrecijfer. Wat is het bijhorende codewoord? Oefening 3.1.2. De tekst GVZZG BY SE! is vercijferd volgens de Vigenèremethode, met codewoord Wat is de oorspronkelijke boodschap? FERMAT. Lange tijd werd het Vigenèrecijfer als onbreekbaar beschouwd. Het kreeg zelfs de bijnaam le chiffre indéchiffrable (het onontcijferbare cijfer). Halfweg de 19 de was het sprookje echter uit. Toen publiceerde Friedrich Kasiski een methode om het cijfer te kraken, op voorwaarde dat de ontvangen tekst voldoende lang is. (a) Wanneer we de lengte van het codewoord kennen, dan is het Vigenèrecijfer eenvoudig te kraken. Stel bijvoorbeeld dat we weten dat het codewoord acht letters telt. Dan kunnen we de 1 ste, de 9 de, de 17 de, de 25 ste,... letter van de vercijferde tekst samen bekijken. Omdat deze letters allemaal over dezelfde afstand zijn verschoven, zullen we de eerste letter van het codewoord kunnen gokken met behulp van een frequentieanalyse zoals in Paragraaf 1.6. Analoog vinden we de tweede letter door de 2 de, de 10 de, de 18 de, de 26 ste,... vercijferde letters samen te bekijken, enzoverder. (b) De meest ambachtelijke aanval is dan om de procedure uit (a) uit te voeren voor lengte 1, lengte 2, lengte 3,... tot we een betekenisvolle ontcijfering vinden. Vaak kan de lengte op voorhand gegokt worden door te kijken naar opvallende letteropeenvolgingen die terugkeren. De afstand tussen twee dergelijke opeenvolgingen is met grote kans een veelvoud van de lengte van het codewoord. Als we een paar dergelijke veelvouden kunnen opspeuren, dan is de lengte van het codewoord heel waarschijnlijk de grootste gemene deler van deze veelvouden. Deze methode wordt geïllustreerd op de leuke website http://www.simonsingh.net/the_black_chamber/contents.html De daaropvolgende 100 jaar worden gekenmerkt door veel cryptografische bedrijvigheid. De twee wereldoorlogen zijn daar natuurlijk niet vreemd aan. Zo stuurde Arthur Zimmermann, de Duitse minister van buitenlandse zaken, in 1917 een vercijferd bericht naar zijn ambassadeur in Washington, D.C. Daarin werd die laatste aangemaand om de Verenigde Staten en Mexico tegen elkaar op te stoken. Op die manier hoopte Zimmermann dat de Amerikanen het te druk zouden hebben met hun eigen conflict om zich actief met WO I te bemoeien. Het bericht werd echter onderschept en gekraakt, en had een averechts effect: de Verenigde Staten verklaarden Duitsland de oorlog en WO I, die op dat moment muurvast zat, kwam in een stroomversnelling. Een jaar later was de oorlog beslecht. Waar het Zimmermanntelegram eerder een amateuristische blunder was die geen veiligheidsdienst die naam waardig had kunnen verschalken, was cryptografie tijdens de tweede wereldoorlog echt big business. Door het toenemende gebruik

MODULOREKENEN EN CRYPTOGRAFIE 19 van vliegtuigen en onderzeeërs bulkte de ether van de geheime berichten. In het geval van de Duitsers waren die berichten meestal vercijferd met behulp van een Enigma. Dat was een typmachine die in de jaren 10 was ontwikkeld en de ingetypte tekst automatisch in geheimschrift zette. Vóór gebruik moesten bij de Enigma een aantal zaken fysiek worden ingesteld (koppelingen van elektrische bedradingen, beginstanden van rotoren). Die instellingen dienden als geheime sleutel en veranderden dagelijks. De Enigma leek niet te kraken, maar de Britse geheime diensten bleven hardnekkig proberen. Hardnekkig is een understatement. Op het hoogtepunt was een team van maar liefst 10000 mannen en vrouwen full-time bezig met het onderscheppen, opschrijven en bestuderen van de Duitse berichten. Het bestuderen gebeurde door een team wiskundigen, met aan het hoofd de briljante Alan Turing. Uiteindelijk slaagden ze in hun opzet, voortbouwend op eerdere doorbraken van de Poolse wiskundige Marian Rejewski in opdracht van de Poolse geheime dienst. De Enigma was een wijd verspreid toestel en de Duitsers waren zich ervan bewust dat de Britten over fysieke exemplaren beschikten. Ook al betekende dat niet dat de Britten de bijhorende geheime instellingen kenden, toch gebruikten de Duitsers uit voorzorg een complexere variant van het toestel voor informatie die echt top secret was: de Lorenz-Geheimschreiber. Ook die werd uiteindelijk door de Britten gekraakt. Ze wisten zelfs een Geheimschreiber na te bootsen zonder er zelf ooit één te hebben gezien! Dit alles speelde ongetwijfeld een sleutelrol in WO II. Zo waren de geallieerde troepen er bij de cruciale landing op Normandië vrij zeker van dat de Duitsers in de bijhorende valstrik waren getrapt. 3.2. Om de Lorenz-Geheimschreiber te kraken ontwikkelden de Britten de allereerste digitale computers: Colossus I en Colossus II. Na afloop van WO II werden de Colossus-computers vernietigd. 3.3. Bij deze fantastische geschiedenis horen een aantal minder fraaie kanttekeningen. Na afloop van de oorlog hielden de Britten hun verwezenlijkingen geheim (tot de jaren 70). Hiervan misbruik makend bleef het Verenigd Koninkrijk het gebruik van Enigma-toestellen stimuleren, onder andere bij hun eigen kolonies. Ook jegens Alan Turing legden ze niet veel menselijkheid aan de dag. De homoseksuele Turing werd na de oorlog verplicht zich chemisch te laten castreren en zou uiteindelijk in 1954 zelfmoord plegen. In 2009 bood de Britse regering hiervoor haar excuses aan. 3.4. De jaren 70: een sleutelperiode. De jaren 70 zijn een absoluut keerpunt voor de cryptografie. Eén van de redenen is de publieke bekendmaking van het ganse Enigma-verhaal. De technieken die Turing en co hadden ontwikkeld vonden op die manier hun weg naar het wetenschappelijke circuit en veranderden het aanschijn van de cryptografie definitief. Een tweede reden is de invoering door de Amerikaanse overheid van een nationale standaard om berichten in geheimschrift te zetten: de Data Encryption Standard (DES). Veel wetenschappers vertrouwden DES niet. De sleutelruimte was immers nogal klein (2 56 mogelijke sleutels) en men vreesde dat de beleidsmakers er een achterpoortje in hadden verwerkt, waardoor ze het systeem zelf zouden kunnen kraken. Die achterdocht bleek uiteindelijk onterecht, maar de intensieve analyse van DES is van enorme waarde gebleken voor de cryptografie. Vandaag de dag kan DES in minder dan een dag worden gekraakt. Varianten van het cijfer worden echter nog

20 MODULOREKENEN EN CRYPTOGRAFIE altijd gebruikt. Zo beroepen de meeste bankautomaten zich op 3DES (essentieel drie kopieën van DES, met een sleutelruimte van grootte 2 56 2 56 2 56 = 2 168 ). De lessen die uit DES werden getrokken leidden uiteindelijk naar een nieuw cryptosysteem dat in 2002 gelanceerd werd: de Advanced Encryption Standard (AES). Het is gebaseerd op het Rijndael-algoritme van de Leuvense ingenieurs Joan Daemen en Vincent Rijmen. Vandaag de dag geldt AES als de internationale standaard. Ze heeft een sleutelruimte van grootte 2 128. Een derde en misschien wel belangrijkste reden is de ontdekking van methodes om op een publieke manier geheime sleutels of zelfs ganse geheime boodschappen uit te wisselen. Deze vormen het einddoel van deze bundel en bespreken we in de volgende secties. 4. Veilige sleuteluitwisseling 4.1. Een fundamenteel probleem bij alle hierboven besproken cryptosystemen, inclusief DES en AES, is het uitwisselen van de geheime sleutel tussen zender en ontvanger. Indien beide partijen elkaar niet fysiek kunnen ontmoeten is dit een heel delicaat aspect. Zo kregen de Duitse klerken tijdens WO II maandelijks een agenda opgestuurd waarin de geheime Enigma-instellingen voor de volgende maand per dag stonden opgelijst. Bij minstens één gelegenheid is zo n boekje door de Britse geheime diensten onderschept. Een ander cryptosysteem gebruiken om de geheime sleutel met elkaar uit te wisselen verlegt het probleem natuurlijk alleen maar. Het is a priori zelfs helemaal niet duidelijk dat er een oplossing voor dit probleem bestaat. Het kwam dan ook als een absolute verrassing toen Whitfield Diffie en Martin Hellman in 1976 een methode publiceerden die geheime sleuteluitwisseling mogelijk maakt. Hun methode maakt gebruik van modulorekenen. 4.2. Van sleutel tot congruentieklas modulo p. Een geheime sleutel is in de praktijk altijd te identificeren met een natuurlijk getal x waarvoor 0 x < S waarbij S de grootte van de sleutelruimte is. Bij het substitutiecijfer kan een lettervolgorde zoals in (1.1) worden bekeken als een getal tussen 0 en 26! 1 door alle mogelijke lettervolgordes alfabetisch te ordenen. Omgekeerd geeft elk natuurlijk getal tussen 0 en 26! 1 aanleiding tot zo n lettervolgorde. Bij AES is de geheime sleutel een opeenvolging van 128 nulletjes en eentjes: 10100111010101011010101010111101000001101001... 011001. Dit kan men bekijken als de binaire schrijfwijze van een natuurlijk getal tussen 0 en 2 128 1. Omgekeerd zal elk natuurlijk getal tussen 0 en 2 128 1 aanleiding geven tot een AES-sleutel. Anders gezegd kunnen we een sleutel dus bekijken als een rest modulo S. Het veilig uitwisselen van zo n rest is precies wat het hieronder beschreven Diffie- Hellmanprotocol doet. In praktijk werken Diffie en Hellman echter modulo een priemgetal p dat groter is dan S (vaak een priemgetal van tenminste 1024 binaire cijfers). Het resultaat van het Diffie-Hellmanprotocol is dan een congruentieklas x modulo p, die enkel gekend is door de twee partijen die een sleutel willen afspreken. Uit deze congruentieklas x, die voorgesteld kan worden door een rest 0 x < p, kan dan eenvoudig een sleutel worden afgeleid door x modulo S te berekenen. In

MODULOREKENEN EN CRYPTOGRAFIE 21 praktijk wordt deze laatste stap vervangen door het hashen van de congruentieklas x. Het zou ons te ver leiden om in deze nota s op dit hashen in te gaan; het principe blijft sowieso hetzelfde. 4.3. Het vinden van een groot priemgetal p. Zoals hierboven vermeld wil men gebruik maken van een priemgetal p van ongeveer duizend binaire cijfers. Met de huidige stand van de informatica en de wiskunde vormt het geen praktisch probleem om binnen een fractie van een seconde zo n priemgetal te vinden. Ruw gesteld kiest men herhaaldelijk een lukraak getal van de juiste grootte-orde, tot het een priemgetal betreft. Daarvoor moeten (1) we over een snelle test beschikken om na te gaan of een gegeven getal al dan niet priem is; zo n test bestaat inderdaad, maar een beschrijving ervan valt buiten het bestek van deze nota s; (2) de priemgetallen dik genoeg gezaaid liggen; vanuit praktisch oogpunt mogen we hier vertrouwen in hebben, al is dat vertrouwen vooral gebaseerd op onbewezen heuristieken en experimentele ervaring; op theoretisch vlak baart de verdeling van de priemgetallen ons nog veel kopzorgen (o.a. het Riemannvermoeden, door velen beschouwd als het belangrijkste onopgeloste probleem uit de hele wiskunde, doet hier een uitspraak over wie het oplost krijgt een miljoen dollar van het Clay Mathematics Institute). Merk op dat (1) in opmerkelijk contrast staat met het volgende al even beroemde onopgeloste probleem. Open probleem 4.3.1. Vind een efficiënte methode om van eender welk gegeven geheel getal n de priemontbinding te vinden. Nagaan of een gegeven getal van enkele honderden cijfers priem is lukt vandaag in een fractie van een seconde, maar de best gekende methodes om de priemontbinding van een gelijkaardig getal te vinden doen er in het slechtste geval miljarden jaren over. 4.4. Het Diffie-Hellmanprotocol. Het Diffie-Hellmanprotocol (DHP) is een manier om op een veilige en efficiënte manier een geheime congruentieklas x modulo een gegeven priemgetal p af te spreken tussen twee partijen die over een onveilig kanaal met elkaar communiceren. Veronderstel dat de twee partijen Agnetha en Benny heten. Ze spreken eerst een generator g van (Z p, ) af. Daarna kiest Agnetha een getal a met 0 a < p 1, dat ze angstvallig geheim houdt. Analoog kiest Benny een geheim getal b met 0 b < p 1. Agnetha berekent g a en stuurt dit door naar Benny. Op zijn beurt berekent Benny g b en laat de uitkomst weten aan Agnetha. Zowel Agnetha als Benny kunnen nu g ab berekenen: Agnetha kent g b (omdat Benny haar die waarde heeft meegedeeld) en a (haar geheim getal) en kan dus (g b ) a uitrekenen. Analoog kan Benny (g a ) b bepalen. Zowel Agnetha als Benny hebben dus g ab = (g b ) a = (g a ) b in hun bezit. Dat is precies onze geheime congruentieklas x. We vatten samen: