Opgeloste en onopgeloste mysteries in de getaltheorie

advertisement
Opgeloste en onopgeloste mysteries
in de getaltheorie
Jan De Beule, Tom De Medts en Jeroen Demeyer
Voorwoord
1
Voorwoord
Beste leerling,
Deze nota’s zijn bedoeld als begeleiding bij 6 lesuren “Opgeloste en onopgeloste mysteries
in de getaltheorie”, die gegeven kunnen worden in de lessen wiskunde in de derde graad
van het secundair onderwijs, al dan niet in de vrije ruimte voorzien in het leerplan van de
derde graad van het vrij secundair onderwijs.
Getaltheorie is een bloeiende tak van de wiskunde, met wortels in een ver verleden, met
vertakkingen naar andere gebieden in de wiskunde, en met zeer fundamentele open vragen waar vele wiskundigen vandaag een antwoord op trachten te vinden. Getaltheorie is
daarenboven ook een mooi voorbeeld van hoe wiskunde directe toepassingen heeft. Tenslotte is het een onderwerp waar niet veel voorkennis voor nodig is om de beginselen aan
te vatten en met elementaire technieken interessante resultaten bereikt kunnen worden.
Getaltheorie is dus een zeer dankbaar onderwerp om aan iedereen die het wil, duidelijk te
maken waar het in wiskunde om draait, en wat we allemaal met wiskunde kunnen doen.
Omdat we de onderwerpen toegankelijk willen maken, zijn vele voorbeelden en oefeningen opgenomen in deze nota’s. De lesgever of leerkracht zal een aantal oefeningen en voorbeelden behandelen in de lessen. De oefeningen en voorbeelden zijn dikwijls eenvoudige
probleempjes die, eens opgelost, de theorie op een aanschouwelijke wijze moeten illustreren. We hebben echter ook belang gehecht aan het bewijzen van een aantal stellingen.
Wiskunde is immers de wetenschap bij uitstek waarin uitspraken enkel na het geven van
een correct bewijs, als waar worden aanvaard. Om duidelijk te maken dat wiskunde niet
“af” is, hebben we op diverse plaatsen open vragen uit de getaltheorie vermeld. Deze open
vragen zijn allemaal gemakkelijk te begrijpen, maar zijn tot op vandaag nog steeds niet
opgelost.
De leerkracht of lesgever zal eventueel, afhankelijk van de beschikbare tijd, een selectie
maken uit de aangeboden leerstof. Deze nota’s zijn niet bedoeld als zelfstudiecursus, maar
zouden wel volledig begrijpbaar moeten zijn na de lessen.
Jan De Beule
Tom De Medts
Jeroen Demeyer
Inhoudsopgave
2
Inhoudsopgave
1 Priemgetallen en deelbaarheid
1.1 Enkele onopgeloste problemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
5
2 De grootste gemene deler
7
3 Modulorekenen
9
3.1 Inverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Eenvoudige toepassingen van modulorekenen
14
4.1 Voorwaarden voor deelbaarheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2 Een toernooi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5 De stelling van Wilson en de kleine stelling van Fermat
17
5.1 Een karakterisering van priemgetallen en tweelingpriemen . . . . . . . . . . . . . 18
6 De Chinese reststelling
19
7 Cryptografie
21
7.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.2 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
8 Factorisatie van getallen
23
8.1 De kwadratische zeef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1 Priemgetallen en deelbaarheid
1
3
Priemgetallen en deelbaarheid
In de getaltheorie draait alles om gehele getallen.
Definitie 1.1
Z is de verzameling van de gehele getallen:
Z = {. . . , −3, −2, −1, 0, 1, 2, 3, . . . } .
N is de verzameling van de natuurlijke getallen, 0 inbegrepen:
N = {0, 1, 2, 3, . . . } .
Als we twee gehele getallen met elkaar optellen, vermenigvuldigen, of aftrekken van elkaar,
is het resultaat steeds weer een geheel getal, maar dat geldt niet voor de deling. Vandaar de
volgende definitie.
Definitie 1.2
We zeggen dat een geheel getal a deelbaar is door een geheel getal b als er een geheel
getal q bestaat zodat
a = bq .
We zeggen dan ook dat b een deler van a is, en we noteren dit als b | a . Als b 6= 0, dan
is a deelbaar door b als en slechts als a /b een geheel getal is.
Ook als a niet deelbaar is door b is het zinvol om de deling uit te voeren, maar dan verkrijgen we een rest. Zo’n deling met rest wordt een Euclidische deling genoemd.
Definitie 1.3
Als a en b gehele getallen zijn met b ≥ 1, dan bestaan er unieke gehele getallen q en
r met 0 ≤ r < b zodat
a = bq + r .
Deze getallen worden respectievelijk het quotiënt en de rest genoemd van de deling
van a door b .
Van fundamenteel belang in de getaltheorie is de studie van priemgetallen.
Definitie 1.4
Een natuurlijk getal p wordt een priemgetal genoemd als het precies twee verschillende positieve delers heeft, namelijk 1 en zichzelf. We benadrukken dat 1 dus geen
priemgetal is.
1 Priemgetallen en deelbaarheid
4
Voorbeeld 1.5
De kleinste priemgetallen zijn 2, 3, 5, 7, 11, 13, 17, 19, . . . Het grootste gekende priemgetal is 243 112 609 − 1, een getal van maar liefst 12 978 189 cijfers lang. Dit record dateert
van 2008.
Misschien vraag je je wel af of er zoiets bestaat als een “grootste priemgetal”. Het is niet
moeilijk om in te zien dat er geen grootste priemgetal is; we zullen dit dadelijk nagaan.
Het is echter wel moeilijk om expliciet grote priemgetallen te “construeren”, of nog, om
na te gaan of een gegeven getal een priemgetal is of niet. En dat is wat we bedoelen met
het record dat we in Voorbeeld 1.5 aangehaald hebben: dit is het grootste getal waarvan
we weten dat het een priemgetal is, ook al weten we met zekerheid dat er (oneindig veel)
grotere priemgetallen bestaan.
Stelling 1.6
Er bestaan oneindig veel priemgetallen.
Bewijs. We bewijzen dit uit het ongerijmde. Veronderstel dus dat er wel een grootste priemgetal zou bestaan, en noem dat getal p . Beschouw nu alle priemgetallen kleiner dan of
gelijk aan p , en noem die p 1 , p 2 , . . . , p k = p . (Dus p 1 = 2, p 2 = 3, enzovoort; p is precies het
k -de priemgetal.) Wegens onze veronderstelling is elk priemgetal dus gelijk aan één van
deze getallen p i . Stel nu
N = p 1p 2 · · · p k + 1 ;
dan is N voor geen enkele i ∈ {1, . . . , k } deelbaar door p i . Wegens onze veronderstelling
is N dus door geen enkel priemgetal deelbaar. Dit kan uiteraard niet; bijgevolg is onze
veronderstelling verkeerd, en dus bestaan er oneindig veel priemgetallen.
Eén van de redenen waarom priemgetallen zo belangrijk zijn, is het feit dat het in zekere
zin de “bouwstenen” zijn voor alle getallen. We kunnen elk getal factoriseren of ontbinden
in priemfactoren, op een unieke manier. Op die wijze kunnen heel wat problemen in de
getaltheorie vaak herleid worden tot problemen over priemgetallen.
Stelling 1.7
Elk natuurlijk getal verschillend van 0 kan op unieke wijze geschreven worden als het
product van priemgetallen. Concreet bestaan er dus voor elk getal n ∈ N \ {0} unieke
priemgetallen p 1 < p 2 < · · · < p k en unieke natuurlijke getallen αi verschillend van 0
zodat
α
n = p 1α1 · p 2α2 · . . . · p k k .
We hebben daarnet vermeld dat het niet gemakkelijk is om na te gaan of een gegeven getal
een priemgetal is. Het is nóg moeilijker om een gegeven getal op efficiënte wijze te factoriseren. We gaan daar in Hoofdstuk 8 wat dieper op in.
1 Priemgetallen en deelbaarheid
1.1
5
Enkele onopgeloste problemen
Misschien vraag je je nu af of er een formule bestaat die je kan zeggen hoe groot het miljoenste priemgetal is. Een exacte formule daarvoor bestaat niet. (Natuurlijk bestaat er wel
een algoritme: je kan immers de eerste 1 miljoen priemgetallen berekenen. Efficiënt is dit
uiteraard niet.)
Maar merkwaardig is dat we wel goed kunnen inschatten hoe groot het miljoenste priemgetal bij benadering is. We weten dus ook bij benadering hoeveel priemgetallen er zijn die
kleiner zijn dan een gegeven getal.
Stelling 1.8 — Prime number theorem
Noteer het n-de priemgetal als p n , en stel π(x ) gelijk aan het aantal priemgetallen
kleiner dan of gelijk aan x . Dan is bij benadering
π(x ) ≈
x
,
ln(x )
p n ≈ n ln(n ) .
(ln(x ) is ongeveer 2, 3 maal het aantal cijfers van x , bijvoorbeeld ln(98716) ≈ 11, 5.)
We kunnen de waarde van π(x ) nog nauwkeuriger afschatten met behulp van een zogenaamde logaritmische integraal.
Definitie 1.9
Voor elke x ∈ R met x ≥ 2 stellen we
x
Z
Li(x ) =
2
1
dt .
ln(t )
Stelling 1.10
Stel π(x ) gelijk aan het aantal priemgetallen kleiner dan of gelijk aan x . Dan is bij
benadering
π(x ) ≈ Li(x ) .
Voorbeeld 1.11
Stel x = 1 000 000. Dan is
π(x ) = 78 498 ,
x / ln(x ) = 72 382, 41 . . . ,
Li(x ) = 78 626, 50 . . . .
1 Priemgetallen en deelbaarheid
6
Interessant is dat we wel weten dat dit niet zomaar een goede benadering is, maar een
bijzonder goede benadering, zoals blijkt uit het volgende vermoeden!
Vermoeden 1.12
Voor alle x ≥ 3 geldt
| π(x ) − Li(x ) | ≤
p
x ln(x ) .
Dit is niet zomaar een vermoeden: het is equivalent met de beroemde Riemannhypothese.
Dit is één van de Clay Math Institute Millenium problemen, waarmee je 1 miljoen dollar
kan winnen als je er één oplost.
Wellicht één van de redenen waarom priemgetallen zo tot de (wiskundige) verbeelding
spreken, is het feit dat er nog heel wat onopgeloste problemen zijn over priemgetallen, die
zeer eenvoudig te formuleren zijn. We vermelden er nog twee.
Vermoeden 1.13 — Vermoeden van Goldbach
Elk even getal groter dan 2 is te schrijven als de som van twee priemgetallen.
Voorbeeld 1.14
4=2+2
10 = 3 + 7 = 5 + 5
6=3+3
12 = 5 + 7
8=3+5
14 = 3 + 11 = 7 + 7
Men heeft dit met de computer gecontroleerd tot aan 1018 , dus het ziet er “zeer waarschijnlijk” uit dat dit vermoeden wel waar is. Maar over de reden tasten we nog steeds in het
duister. . .
Vermoeden 1.15 — Twin prime conjecture
Er bestaan oneindig veel tweelingpriemen: dit zijn paren natuurlijke getallen {p, p +
2} waarvoor zowel p als p + 2 priem zijn.
Voorbeeld 1.16
5=3+2
19 = 17 + 2
7=5+2
31 = 29 + 2
13 = 11 + 2
43 = 41 + 2
Ter informatie: er zijn 808 675 888 577 436 ≈ 8 · 1014 tweelingpriemen kleiner dan 1018 .
2 De grootste gemene deler
2
7
De grootste gemene deler
Gegeven twee gehele getallen a en b . Het is duidelijk dat zowel −1 als +1 een deler is van
a en b . De verzameling van alle gemeenschappelijke delers van a en b is dus nooit ledig.
We noemen het grootste element uit deze verzameling de grootste gemene deler van a en
b . Aangezien deze definitie niet werkt voor ggd(0, 0), definiëren we ggd(0, 0) = 0.
Voorbeeld 2.1
Stel a = 126 en b = 35. De verzameling van gemeenschappelijke delers is
{−7, −1, 1, 7}. De grootste gemene deler van 126 en 35 is dus 7.
Zoals je zelf merkt als je bovenstaand voorbeeld controleert, zie je dat het opstellen van
de verzameling van gemeenschappelijke delers om daaruit de grootste te halen, nogal omslachtig is om de grootste gemene deler te bepalen.
We hebben gezien dat voor twee gehele getallen a en b , we steeds elementen q en r kunnen
vinden zodat a = bq + r met 0 ≤ r < b .
Oefening 2.2
Toon aan dat ggd(a ,b ) = ggd(b, r ) als a = bq +r . Toon ook aan dat uit de definitie van
grootste gemene deler volgt dat ggd(a , 0) = a voor alle a ∈ Z.
We hernemen voorbeeld 2.1. Als we 126 door 35 delen, vinden we 126 = 3 · 35 + 21. Dus
ggd(126, 35) = ggd(35, 21). Het is inderdaad gemakkelijker om de ggd(35, 21) te bepalen
dan die van 126 en 35. Maar niets weerhoudt ons om de deling met rest te herhalen, tot de
rest 0 wordt.
126 = 3 · 35 + 21
35 = 1 · 21 + 14
21 = 1 · 14 + 7
14 = 2 · 7
Uit het tweede deel van oefening 2.2 volgt dat ggd(7, 0) = 7, en we besluiten dat ggd(126, 35) =
7. We merken nog op dat het herhaaldelijk toepassen van de deling met rest voor elke twee
gehelen getallen a en b wel degelijk na een eindig aantal stappen een rest gelijk aan 0 zal
opleveren. Daarmee hebben we in feite een algoritme beschreven. Dit algoritme, om de
grootste gemene deler van twee getallen te bepalen, wordt het algoritme van Euclides genoemd.
Oefening 2.3
Gebruik het algoritme van Euclides om ggd(204, 96) en ggd(351, 320) te bepalen.
2 De grootste gemene deler
8
We hernemen het voorbeeld waarin we ggd(126, 35) bepalen. Uit de opeenvolgende uitvoeringen van de deling met rest, halen we de volgende gelijkheden:
ggd(126, 35) = 7 = 21 − 1 · 14 = 21 − (35 − 1 · 21)
= 2 · 21 − 1 · 35 = 2 · (126 − 3 · 35) − 1 · 35
= 2 · 126 − 7 · 35
We besluiten dat ggd(126, 35) = 2 · 126 − 7 · 35. De grootste gemene deler is dus te schrijven
als een lineaire combinatie van 126 en 35. Dit principe geldt algemeen en leidt tot volgende
stelling:
Stelling 2.4 — Stelling van Bézout
Gegeven twee gehele getallen a en b , dan bestaan er gehele getallen x en y zodat
a x + b y = ggd(a ,b ).
Zulke getallen x en y waarvoor a x + b y = ggd(a ,b ) worden Bézoutcoëfficiënten van a en
b genoemd. Het algoritme hierboven om die coëfficiënten te bepalen heet het uitgebreid
algoritme van Euclides.
Oefening 2.5
Gebruik de resultaten uit de berekening van ggd(204, 96) opnieuw om de Bézoutcoëfficiënten van 204 en 96 te bepalen.
Doe hetzelfde voor 351 en 320.
Het algoritme van Euclides heeft nog een andere toepassing. Beschouw de vergelijking
15x + 21y = 3 .
(1)
Een dergelijke vergelijking wordt ook wel een lineaire diophantische vergelijking genoemd.
We willen onderzoeken onder welke voorwaarden er een oplossing bestaat voor deze vergelijking. Stel dus dat er twee gehele getallen x 0 en y 0 bestaan waarvoor 15x 0 + 21y 0 = 3.
Noem c = ggd(15, 21) = 3. Uit het bestaan van de oplossing (x 0 , y 0 ) volgt dat c een deler
moet zijn van het rechterlid van vergelijking (1). In dit geval zien we dat het rechterlid
juist gelijk is aan c . We kunnen dan met het algoritme van Euclides een oplossing bepalen.
Immers, met het algoritme van Euclides kunnen we een stel Bézoutcoëfficiënten van 15 en
21 bepalen, we vinden dat 3 · 15 − 2 · 21 = 3. De getallen (3, −2) zijn dus een oplossing van
de vergelijking. We beschouwen nu de vergelijking
15x + 21y = 6 .
(2)
Ook deze vergelijking kunnen we oplossen met behulp van het algoritme van Euclides. We
weten dat de Bézoutcoëfficiënten (3, −2) een oplossing zijn van vergelijking (1). Aangezien het rechterlid van vergelijking (2) een veelvoud is van ggd(15, 21), volstaat het om de
3 Modulorekenen
9
Bézoutcoëfficiënten (3, −2) met 2 te vermenigvuldigen om een oplossing te bekomen van
vergelijking (2).
In feite hebben we de volgende stelling bewezen.
Stelling 2.6
De vergelijking
ax +by = c
heeft een oplossing als en slechts als ggd(a ,b ) | c .
Oefening 2.7
Bepaal, indien mogelijk, een oplossing van
15x + 35y = 6.
Oefening 2.8
Bepaal, indien mogelijk, een oplossing van
12x + 77y = 10.
3
Modulorekenen
Beschouw twee oneven gehele getallen, bijvoorbeeld 5 en 7. Het is duidelijk dat het verschil
van 5 en 7 een even getal is, dus deelbaar door 2. Ook het verschil van twee even getallen is
een even getal. Het verschil van een oneven en een even getal daarentegen, is altijd oneven,
en dus niet deelbaar door twee. Deelbaarheid van het verschil van twee getallen door 2 is
dus een eigenschap die waar is voor elke twee even getallen, en elke twee oneven getallen,
maar niet voor een even en een oneven getal. We veralgemenen dit als volgt.
Definitie 3.1
Stel m 6= 0 een naturlijk getal en a en b twee gehele getallen, dan is a congruent aan
b modulo m als en slechts als m | (a − b ).
Als a congruent is aan b modulo m , dan noteren we a ≡ b (mod m ).
3 Modulorekenen
10
Oefening 3.2
Toon aan dat a ≡ b (mod m ) als en slechts als er een geheel getal k bestaat waarvoor
a = b +km.
Stelling 3.3
Stel m een positief geheel getal. “Congruent modulo m ” is een relatie met de volgende eigenschappen:
(i) Reflexiviteit: Voor alle a ∈ Z geldt a ≡ a (mod m ).
(ii) Symmetrie: Voor alle a ,b ∈ Z geldt: als a ≡ b (mod m ), dan b ≡ a (mod m ).
(iii) Transitiviteit: Voor ale a ,b, c ∈ Z geldt: als a ≡ b (mod m ) en b ≡ c (mod m ),
dan a ≡ c (mod m ).
Deze stelling toont eigenlijk aan dat de verzameling van de gehele getallen voor elke positieve m 6= 0 gepartitioneerd wordt in m verschillende congruentieklassen modulo m . Elke
klasse bevat juist die gehele getallen die congruent zijn met elkaar modulo m . Voor m = 2
bekomen we de vertrouwde indeling in even en oneven gehele getallen.
Voor bijvoorbeeld m = 3 krijgen we 3 congruentieklassen:
{. . . , −6, −3, 0, 3, 6, . . . },
{. . . , −5, −2, 1, 4, 7, . . . } en {. . . , −4, −1, 2, 5, 8, . . . }.
Neem nu een geheel getal a en m 6= 0 een natuurlijk getal. Deling met rest van a door m
levert altijd a = q m + r met 0 ≤ r < m . Hieruit volgt dat a ≡ r (mod m ). Er bestaat dus
altijd juist één r ∈ {0, 1, . . . , m − 1} waarvoor a ≡ r (mod m ).
Definitie 3.4
Z/m Z (lees: Z modulo m Z) staat voor de verzameling {0, 1, . . . , m − 1}.
Wat zijn we nu gebaat bij de indeling van de gehele getallen in congruentieklassen modulo m ? Deze vraag zullen we pas kunnen beantwoorden als we kunnen aantonen dat we
kunnen rekenen op een zinvolle wijze met congruentieklassen modulo m .
3 Modulorekenen
11
Voorbeeld 3.5
• Ga na dat 61+7 ≡ 1+7 (mod 12). Tijdens het berekenen van 61+7 mod 12 kunnen
we dus eerst 61 reduceren modulo 12 voor we de berekening uitvoeren. We kunnen
nog meer, ga na dat 61 + 31 ≡ 1 + 7 (mod 12). Ook nu kunnen we de berekening
modulo 12 uitvoeren door eerst de termen te reduceren modulo 12.
• Ga na dat 14 · 11 ≡ 2 · 11 (mod 12). De conclusie is analoog, we kunnen voor de
berekening 14 ≡ 2 (mod 12) gebruiken.
• Als we dus 11·(8+9) (mod 12) willen uitrekenen, moeten we niet 11·17 uitrekenen,
we mogen 11 · 5 uitrekenen aangezien 5 ≡ 17 (mod 12). Het resultaat is dus
11 · (8 + 9) ≡ 11 · 17 ≡ 11 · 5 ≡ 55 ≡ 7 (mod 12).
We mogen zelfs negatieve getallen gebruiken, dus de volgende berekening is ook
correct:
11 · (8 + 9) ≡ (−1) · 5 ≡ −5 ≡ 7 (mod 12).
Als we dus een berekening doen modulo een bepaald getal m 6= 0, dan mogen we de tussenresultaten ook al modulo m uitrekenen. Let wel op dat dit alleen maar geldt als we
enkel optellen, aftrekken en vermenigvuldigen. Verder zullen we zien wat er gebeurt met
delingen.
De observaties uit voorbeeld 3.5 beschrijven we formeel in de volgende stelling.
Stelling 3.6
Stel dat m 6= 0 een positief geheel getal is. Voor a ,b, c en d gehele getallen, met a ≡ b
(mod m ) en c ≡ d (mod m ) geldt
(i) a + c ≡ b + d (mod m );
(ii) a − c ≡ b − d (mod m );
(iii) a c ≡ b d (mod m ).
Bewijs. Omdat a ≡ b (mod m ), geldt m | (a −b ), er bestaat dus een geheel getal k waarvoor
(a − b ) = k · m .
(3)
Omdat c ≡ d (mod m ), geldt m | (c − d ), er bestaat dus een geheel getal l waarvoor
(c − d ) = l · m .
(4)
We bewijzen nu de stelling.
(i) Uit (3) en (4) volgt dat (a + c ) − (b + d ) = (k + l ) · m , dus m | (a + c ) − (b + d ), dus
a + c ≡ b + d (mod m ).
(ii) Uit (3) en (4) volgt dat (a − c ) − (b − d ) = (k − l ) · m , dus m | (a − c ) − (b − d ), dus
a − c ≡ b − d (mod m ).
(iii) We herschrijven a c − b d als a c − b c + b c − b d = (a − b ) · c + (c − d ) · b = (k c + l b )m .
Dus m | (a c − b d ), waaruit a c ≡ b d (mod m ).
3 Modulorekenen
3.1
12
Inverses
We hebben net gezien dat we gemakkelijk kunnen rekenen met +, − of · modulo m . Bij het
delen krijgen we echter moeilijkheden:
Voorbeeld 3.7
22 ≡ 4 (mod 6), 22/2 = 11 en 4/2 = 2. We stellen echter vast dat 11 6≡ 2 (mod 6).
Om dit probleem te onderzoeken, zullen we de vermenigvuldiging modulo m nader bekijken. We beginnen met een eenvoudig voorbeeld. Stel m = 6. Beschouw de afbeelding
f : {0, 1, 2, 3, 4, 5} → {0, 1, 2, 3, 4, 5}, x 7→ c · x (mod m ) voor de waarden c = 2 en c = 5.
c =5
c =2
0
0
0
0
1
1
1
1
2
2
2
2
3
3
3
3
4
4
4
4
5
5
5
5
Figuur 1: De afbeelding f voor c = 2 en c = 5
Het is duidelijk dat f een bijectie is voor c = 5. Meer bepaald kunnen we elk element
a ∈ Z/6Z delen door 5 modulo 6. Het volstaat namelijk om te kijken naar f −1 (a ).
Oefening 3.8
Onderzoek voor welke waarden van c in Z/6Z de afbeelding f een bijectie is. Kan je
een criterium geven waaraan c moet voldoen opdat f een bijectie is voor een gegeven
m ? Je kan deze oefening ook uitvoeren voor andere waarden van m , kies bijvoorbeeld
m = 5.
Als we niet modulo m werken, maar met de “gewone” reële of rationale getallen, dan is
delen door 5 hetzelfde als vermenigvuldigen met 1/5. We noemen 1/5 een inverse van 5 en
omgekeerd. We kunnen het concept van inverses ook veralgemenen naar de context van
modulorekenen.
3 Modulorekenen
13
Definitie 3.9
Een inverse van a (mod m ) is een getal x zodat a · x ≡ 1 (mod m ).
Voorbeeld 3.10
De inverse van 5 modulo 6 is 5, want 5 · 5 = 25 ≡ 1 (mod 6). Inverses bestaan niet
altijd, bijvoorbeeld 2 heeft geen inverse modulo 6.
Wanneer bestaan inverses nu en hoe kunnen we ze uitrekenen? Gegeven een natuurlijk
getal m en een element a ∈ Z/m Z. Een inverse x van a modulo m moet dan voldoen aan
a x ≡ 1 (mod m ). Deze vergelijking kunnen we ook schrijven als
a x + m y = 1.
(5)
Dit is een lineaire diophantische vergelijking. Dankzij stelling 2.6 weten we dat deze een
oplossing heeft als en slechts als ggd(a , m ) = 1. Met andere woorden:
Stelling 3.11
Een inverse van a modulo m bestaat als en slechts als ggd(a , m ) = 1.
Als m een priemgetal is, dan geldt voor alle niet-nul elementen a ∈ Z/m Z dat ggd(a , m ) =
1. Dus elk niet-nul element van Z/m Z heeft een inverse modulo m .
Oefening 3.12
Toon aan dat als a een inverse heeft modulo m , deze uniek is in Z/m Z.
Zoals we in Hoofdstuk 2 gezien hebben, kunnen we het algoritme van Euclides gebruiken
om de inverse (de oplossing x van de vergelijking (5)) van a modulo m uit te rekenen.
Voorbeeld 3.13
We bepalen de inverse van 7 modulo 12. Aangezien ggd(7, 12) = 1, bestaat deze. Het
Euclidisch algoritme geeft
12 = 7 · 1 + 5
7=5·1+2
5=2·2+1
5=1·2
Dus 1 = 5 − 2 · 2 = 3 · 5 − 2 · 7 = 3 · 12 − 5 · 7. Dus −5 ≡ 7 (mod 12) is de inverse van 7
modulo 12 in Z/12Z.
4 Eenvoudige toepassingen van modulorekenen
14
We kunnen nu ook lineaire vergelijkingen van de vorm a x ≡ b (mod m ) oplossen. Opnieuw volgt uit stelling 2.6 het volgende:
Gevolg 3.14
Een vergelijking a x ≡ b (mod m ) heeft een oplossing als en slechts als ggd(a , m ) | b .
In het bijzonder is er altijd een oplossing als ggd(a , m ) = 1.
Oefening∗ 3.15
Wanneer heeft de vergelijking a x ≡ b (mod m ) een unieke oplossing?
We eindigen dit hoofdstuk met een stelling die aangeeft welke gehele getallen hun eigen
inverse zijn modulo p , met p een priemgetal.
Stelling 3.16
Stel dat p een priemgetal is. Een positief geheel getal a is zijn eigen inverse modulo
p als en slechts als a ≡ 1 (mod p ) of a ≡ −1 (mod p ).
Bewijs. Stel dat a ≡ 1 (mod p ) of dat a ≡ −1 (mod p ). Uit stelling 3.6 (iii) volgt dat a 2 ≡ 1
(mod p ). Dus is a inderdaad zijn eigen inverse modulo p .
Stel omgekeerd dat a zijn eigen inverse is, dus a 2 ≡ 1 (mod p ). Hieruit volgt dat a 2 − 1 ≡ 0
(mod p ). Dus p | (a 2 − 1). Maar a 2 − 1 = (a − 1)(a + 1), dus omdat p een priemgetal is moet
ofwel p | (a − 1) ofwel p | (a + 1), dus ofwel a ≡ 1 (mod p ) ofwel a ≡ −1 (mod p ).
4
4.1
Eenvoudige toepassingen van modulorekenen
Voorwaarden voor deelbaarheid
Stel dat we voor een geheel getal n willen controleren of het deelbaar is door een getal
m . Het gebruik van modulorekenen laat ons toe om deelbaarheid na te gaan door enkele
controles te doen op één of meerdere cijfers van n .
We starten met een eenvoudig geval: deelbaarheid door machten van 2. We schrijven het
getal n in decimale expansie als
n = a k · 10k + a k −1 10k −1 + · · · + a 1 · 10 + a 0 .
De getallen a i zijn de cijfers van n en dus natuurlijke getallen uit de verzameling {0, 1, . . . , 9}.
Omdat 10 ≡ 0 (mod 2), geldt n ≡ a 0 (mod 2). Het getal n is dus deelbaar door 2 als en
slechts als het laatste cijfer deelbaar is door 2. Aangezien 2 | 10, geldt 2 j | 10 j en dus 10 j ≡ 0
(mod 2 j ). Dus n ≡ a 1 · 10 + a 0 (mod 22 ). Het getal n is dus deelbaar door 4 als en slechts als
4 Eenvoudige toepassingen van modulorekenen
15
het getal gevormd door de laatste twee cijfers van n deelbaar is door 4. Algemeen hebben
we de volgende stelling.
Stelling 4.1
Een getal n = a k · 10k + · · · + a 0 is deelbaar door 2 j (met j ≤ k ) als en slechts als
m = a j −1 · 10 j −1 + · · · + a 0 deelbaar is door 2 j .
Oefening 4.2
Ontwikkel een analoge deelbaarheidstest voor deelbaarheid door machten van 5.
Nu bekijken we deelbaarheid door 3 en door 9. Uit 10 ≡ 1 (mod 9) volgt 10 j ≡ 1 (mod 9) en
ook 10 j ≡ 1 (mod 3). Dus n ≡ a k +a k −1 +· · ·+a 0 (mod 9). Het getal n is dus deelbaar door 9
(en analoog door 3) als en slechts als de som van zijn cijfers deelbaar is door 9 (en analoog
door 3).
Oefening∗ 4.3
Ontwikkel zelf een deelbaarheidstest voor deelbaarheid door 11.
4.2
Een toernooi
Stel dat we een toernooi met N ploegen willen organiseren met een wedstrijdschema waarin elke ploeg juist eenmaal tegen elke andere ploeg moet spelen. We beschrijven een methode om het wedstrijdschema op te stellen, waarbij we gebruik maken van modulorekenen.
Vooreerst merken we op dat als N oneven is, er bij elke ronde van het toernooi juist 1
ploeg zal zijn die niet speelt. Bij het opstellen van het wedstrijdschema zullen we dan
een dummy-ploeg toevoegen, en indien een ploeg in een bepaalde ronde speelt tegen de
dummy-ploeg, betekent dit in de praktijk dat die ploeg in die ronde vrij is. We mogen dus
veronderstellen dat N even is, waarbij er eventueel een dummy-ploeg voorkomt.
Elke ploeg krijgt een nummer tussen 1 en N . Aangezien er N ploegen zijn en elke ploeg
juist eenmaal tegen een andere ploeg speelt, zijn er N − 1 rondes. Elke ronde krijgt dus een
nummer tussen 1 en N − 1. Voor een gegeven rondenummer k hanteren we de volgende
regels om het schema op te stellen:
Gegeven i ∈ {1, . . . , N − 1} en j ∈ {1, . . . , N } twee verschillende nummers van ploegen.
• Als j 6= N , dan speelt ploeg i tegen ploeg j in de k -de ronde als en slechts als i + j ≡ k
(mod N − 1);
• Als j = N , dan speelt ploeg i tegen ploeg N in de k -de ronde als en slechts als 2i ≡ k
(mod N − 1).
4 Eenvoudige toepassingen van modulorekenen
16
We tonen aan dat indien we deze regels gebruiken, we een toernooi bekomen waarin elke
ploeg juist eenmaal tegen elke ploeg moet spelen.
Omdat ggd(2, N − 1) = 1, heeft 2 een inverse 2−1 modulo N − 1, dus
2i ≡ k (mod N − 1) ⇐⇒ i ≡ 2−1 k (mod N − 1).
Voor een gegeven k ∈ {1, . . . , N − 1} is er dus juist één i ∈ {1, . . . , N − 1} waarvoor ploeg i
speelt tegen ploeg N . Merk op dat voor k = N − 1 (de laatste ronde van het toernooi), die
unieke oplossing i = 0 ≡ N −1 (mod N −1). Dus in de laatste ronde speelt ploeg N −1 tegen
ploeg N .
Het is niet mogelijk dat ploeg N in rondes k en k 0 6= k tegen dezelfde ploeg i speelt, want
dan zou 2i = k = k 0 (mod N − 1), een contradictie omdat k en k 0 verschillende elementen
zijn uit Z/(N − 1)Z. Dus ploeg N speelt in elke ronde tegen een andere ploeg, en zal dus
juist eenmaal tegen elke ploeg uit {1, . . . , N − 1} spelen. We beschouwen nu enkel de eerste
N − 1 ploegen.
Stel nu dat in twee verschillende rondes k en k 0 6= k , dezelfde ploegen i en j (i 6= j ) tegen
elkaar zouden spelen. Dit kan enkel als i + j ≡ k (mod N − 1) en i + j ≡ k 0 (mod N − 1),
waruit k ≡ k 0 (mod N − 1), een contradictie. Bijgevolg speelt elke ploeg i ∈ {1, . . . , N − 1}
nooit tweemaal tegen een ploeg j ∈ {1, . . . , N − 1} \ {i } en juist eenmaal tegen ploeg N .
Aangezien elke ploeg i ∈ {1, . . . , N − 1} wel juist N − 1 keer speelt, speelt zij dus tegen elke
andere ploeg juist eenmaal.
Voorbeeld 4.4
We stellen een toernooi op voor 5 ploegen, dus N = 6, en de zesde ploeg beschouwen
we als de dummy ploeg. We starten met k = 1. Regel (i) toepassen levert de volgende
paren van ploegen op die tegen elkaar spelen: (1, 5) en (2, 4). Merk op dat uiteraard
ook de paren (4, 2) en (5, 1) gevormd worden door toepassing van regel (i). Regel (ii)
levert voor k = 1 de vergelijking
2i ≡ 1 (mod 5) ,
met als unieke oplossing i = 3. In de eerste ronde speelt ploeg 3 dus tegen de dummy
ploeg 6. Zetten we deze werkwijze verder, dan bekomen we het volgende schema.
ploeg →
Ronde 1
Ronde 2
Ronde 3
Ronde 4
Ronde 5
1
5
vrij
2
3
4
Oefening 4.5
Stel een toernooi op voor 8 ploegen.
2
4
5
1
vrij
3
3
vrij
4
5
1
2
4
2
3
vrij
5
1
5
1
2
3
4
vrij
5 De stelling van Wilson en de kleine stelling van Fermat
5
17
De stelling van Wilson en de kleine stelling van Fermat
In het vorige hoofdstuk hebben we gezien dat we beschikken over heel wat aritmetische
mogelijkheden in de verzameling Z/m Z, zeker als m een priemgetal is. De kleine stelling
van Fermat stelt ons in staat om ook op een gepaste wijze met exponenten om te gaan
modulo een priemgetal p .
Oefening 5.1
Stel p = 5. Bepaal het product van alle elementen verschillend van 0 uit Z/p Z. Doe
hetzelfde voor p = 7. Wat is de observatie?
Deze oefening is een goede aanleiding om de volgende stelling te bewijzen.
Stelling 5.2 — Stelling van Wilson
Voor elk priemgetal p geldt (p − 1)! ≡ −1 (mod p ).
Bewijs. Voor p = 2 is de stelling triviaal. We veronderstellen nu dat p een oneven priemgetal is. Door stelling 3.11 weten we dat elk element uit {1, . . . , p − 1} een unieke inverse heeft
in Z/p Z. Uit stelling 3.16 weten we ook dat 1 en p − 1 de enige elementen in Z/p Z die hun
eigen inverse zijn. Dus blijven er p − 3 elementen verschillend van nul over, die we kunnen
p −3
indelen in 2 paren van elementen, waarbij elk paar telkens bestaat uit een element en
zijn inverse. Het product van de elementen uit elk paar is dus 1 modulo p . Het product van
alle elementen uit Z/p Z verschillend van nul is dus gelijk aan 1 · (p − 1) ≡ −1 (mod p ). Dus
(p − 1)! ≡ −1 (mod p ).
Zoals vermeld zijn we geïnteresseerd in exponenten van elementen in Z/p Z. We hebben
daarvoor volgende belangrijke stelling.
Stelling 5.3 — Kleine stelling van Fermat
Stel dat p een priemgetal is en a een geheel getal met a 6≡ 0 (mod p ). Dan geldt a p −1 ≡
1 (mod p ).
Bewijs. We beschouwen terug de functie f : Z/p Z → Z/p Z : x 7→ a · x uit paragraaf 3.1.
Aangezien p een priemgetal is en a 6≡ 0 (mod p ), geldt ggd(a , p ) = 1. We weten dus dat f
een bijectie is. Omdat f (0) = 0, is
f 0 : {1, . . . , p − 1} → {1, . . . , p − 1} : x 7→ a · x (mod p )
nog altijd een bijectie.
5 De stelling van Wilson en de kleine stelling van Fermat
18
Er volgt dus
a · 2a · 3a · . . . · (p − 1)a
≡ f 0 (1) · f 0 (2) · f 0 (3) · . . . · f 0 (p − 1)
≡1 · 2 · 3 · . . . · (p − 1) (mod p ).
Hieruit volgt dat a p −1 (p − 1)! ≡ (p − 1)! (mod p ). Omdat we mogen delen door (p − 1)! ≡ −1
(mod p ), krijgen we dus a p −1 ≡ 1 (mod p ).
De kleine stelling van Fermat laat ons toe om op efficiënte wijze machten modulo p te
bepalen.
Voorbeeld 5.4
We bepalen 3201 mod 11. Door de kleine stelling van Fermat weten we dat 310 ≡ 1
(mod 11). Bijgevolg is 3201 = (310 )20 · 3 ≡ 3 (mod 11).
5.1
Een karakterisering van priemgetallen en tweelingpriemen
Oefening 5.5
Stel n = 6. Ga na dat 5! 6≡ −1 (mod n )
Dit geldt voor alle samengestelde getallen, als n geen priemgetal is, dan is (n − 1)! 6≡ −1
(mod n ). Dit kunnen we aantonen, en wel met de volgende stelling.
Stelling 5.6
Als n > 1 een natuurlijk getal is waarvoor (n − 1)! ≡ −1 (mod n ), dan is n een priemgetal.
Bewijs. We bewijzen deze stelling uit het ongerijmde. Veronderstel dat (n −1)! ≡ −1 (mod n )
en dat n geen priemgetal is. Omdat n geen priemgetal is, bestaan er natuurlijke getallen a
en b , met 1 < a < n en 1 < b < n en waarvoor n = a · b . Uit a < n volgt dat a | (n − 1), want
dit laatste is het product van de eerste (n − 1) natuurlijke getallen groter dan 0, waaronder
dus a .
Uit de veronderstelling dat (n − 1)! ≡ −1 (mod n ), volgt dat n | ((n − 1)! + 1). Omdat a | n ,
geldt dus ook a | ((n −1)!+1). Maar a | (n −1)!, dus er geldt ook dat a | ((n −1)!+1)−(n −1)! = 1.
Dit is een contradictie omdat a > 1.
De contrapositie van deze stelling bewijst inderdaad dat (n − 1)! 6≡ −1 als n geen priemgetal is. De stelling zelf, samen met de stelling van Wilson, geeft ons een karakteriserende
eigenschap van priemgetallen.
6 De Chinese reststelling
19
Stelling 5.7
Een natuurlijk getal p is een priemgetal als en slechts als (p − 1)! ≡ −1 (mod p ).
De volgende stelling is een vergelijkbare karakterisering van tweelingpriemen, die we niet
gaan bewijzen.
Stelling 5.8 — Stelling van Clement
De natuurlijke getallen p en p + 2 zijn tweelingpriemen als en slechts als
4((p − 1)! + 1) ≡ −p (mod p (p + 2)) .
6
De Chinese reststelling
Tot nu toe hebben we eigenlijk altijd modulo m gerekend voor één vaste waarde van m .
Maar wat als we bijvoorbeeld tegelijk iets willen doen modulo 5 en modulo 8? Hoe zou je
het volgende vraagstuk aanpakken?
Oefening 6.1
An bezit een aantal muntjes van 1 cent, het zijn er minder dan 50. Als ze die muntjes
groepeert per 5, heeft ze er nog één over. Als ze ze groepeert per 8, zijn er nog 5 over.
Hoeveel 1-cent muntjes heeft An?
Dit soort vraagstukken kan met een algemeen principe worden opgelost, namelijk de Chinese reststelling. Maar eerst hebben we nog een voorbereidende stelling nodig:
Stelling 6.2
Stel dat s en t twee natuurlijke getallen zijn met ggd(s , t ) = 1. Als nu x ≡ y (mod s ) en
ook x ≡ y (mod t ), dan geldt x ≡ y (mod s t ).
Bewijs. We weten dat s | (x − y ) en t | (x − y ). Aangezien ggd(s , t ) = 1, volgt hieruit dat
s t | (x − y ) en dus x ≡ y (mod s t ).
6 De Chinese reststelling
20
Stelling 6.3 — Chinese reststelling
Stel dat m = s · t met ggd(s , t ) = 1. Dan heeft het stelsel
¨
x ≡ a (mod s )
x ≡ b (mod t )
een unieke oplossing in Z/m Z.
Bewijs. De eerste vergelijking kunnen we herschrijven als x = a + y s . We vullen deze x nu
in in de tweede vergelijking:
a + y s ≡ b (mod t ).
Aangezien ggd(s , t ) = 1, bestaat de inverse van s modulo t . Noteer deze met z . We krijgen
y ≡ z (b − a ) (mod t ).
Nu we y kennen, kunnen we x bepalen uit x = a + y s , dus
x = a + s z (b − a ).
Deze x voldoet inderdaad aan het gegeven stelsel. Het feit dat de oplossing uniek is volgt
uit de voorgaande stelling.
Oefening 6.4
Zoek twee verschillende gehele getallen x die voldoen aan:
¨
x ≡ 7 (mod 6)
x ≡ 6 (mod 7)
Oefening 6.5
Zoek de unieke oplossing in Z/60Z van het volgende stelsel:

x ≡ 1 (mod 3)

x ≡ 2 (mod 4)

x ≡ 3 (mod 5)
We bewijzen ten slotte een stelling die we in het volgende hoofdstuk nodig gaan hebben.
Het is in zekere zin een veralgemening van de kleine stelling van Fermat.
Stelling 6.6
Stel m = p · q , met p en q twee verschillende priemgetallen. Dan geldt voor alle
x ∈ Z/m Z en alle natuurlijke getallen k :
x k (p −1)(q −1)+1 ≡ x (mod m ).
7 Cryptograe
21
Bewijs. Dankzij stelling 6.2 weten we dat het volstaat om aan te tonen dat
x k (p −1)(q −1)+1 ≡ x (mod p )
en x k (p −1)(q −1)+1 ≡ x (mod q ).
Omdat deze twee congruenties volledig analoog zijn, bewijzen we hier enkel de eerste. Als
x ≡ 0 (mod p ), dan staat er 0 ≡ 0 (mod p ) en is de congruentie dus voldaan. We nemen nu
aan dat x 6≡ 0 (mod p ), dus ggd(x , p ) = 1. Door de kleine stelling van Fermat weten we dat
x p −1 ≡ 1 (mod p ).
Verhef nu beide leden tot de macht k (q − 1) en vermenigvuldig met x :
€
Šk (q −1)
x p −1
·x
≡ x (mod p )
k (p −1)(q −1)+1
≡ x (mod p )
x
7
7.1
Cryptografie
Inleiding
Een veel gebruikte toepassing van de aritmetische mogelijkheden in de verzameling Z/m Z
is een cryptografisch systeem dat we in dit hoofdstuk beschrijven.
De bedoeling is dat twee (of meer) mensen een geheime boodschap kunnen uitwisselen
zonder dat iemand die afluistert de boodschap kan achterhalen. We illustreren dit als volgt:
An en Bart komen elkaar op café tegen, ze hebben elkaar nog niet eerder gezien. Op een
bepaald ogenblik wil An iets vertellen aan Bart, maar ze wil niet dat iemand anders in het
drukke café het kan begrijpen. An en Bart moeten dus een cryptografisch systeem gebruiken dat zó is dat er op voorhand geen geheime sleutel moet afgesproken worden. Er wordt
namelijk verondersteld dat alle communicatie tussen An en Bart afgeluisterd kan worden.
Het verwonderlijke is dat het toch mogelijk is dat An iets vertelt aan Bart zodat enkel Bart
de boodschap kan ontcijferen.
De meeste klassieke cyptosystemen (zeg maar alles voor 1970) zijn symmetrisch. Dit betekent dat er één geheime sleutel is die zowel voor het encrypteren (versleutelen) als het decrypteren (ontcijferen) gebruikt wordt. Zo’n systeem kan hier niet gebruikt worden, want
als An de geheime sleutel vertelt aan Bart (of omgekeerd), kunnen anderen de sleutel afluisteren en zo de boodschap ontcijferen.
Het RSA-systeem dat we hier bespreken is asymmetrisch: er zijn twee sleutels nodig, één
voor het encrypteren en één voor het decrypteren. An en Bart gaan als volgt te werk: Bart
bepaalt een encryptie- en een decryptie-sleutel en vertelt An enkel de encryptie-sleutel.
Dan versleutelt An haar boodschap met Barts encryptie-sleutel en zo kan enkel Bart de
boodschap decrypteren. We gaan er dus van uit dat afluisteraars de encryptie-sleutel kennen en ook de geëncrypteerde boodschap van An. Maar aangezien enkel Bart de decryptiesleutel kent is de boodschap veilig. Een belangrijke voorwaarde opdat dit systeem veilig
zou zijn is uiteraard dat de decryptie-sleutel niet achterhaald kan worden uit de encryptiesleutel. De encryptiesleutel wordt ook wel de publieke sleutel genoemd en de decryptiesleutel de private sleutel.
7 Cryptograe
7.2
22
RSA
Het RSA cryptosysteem werd in de jaren zeventig van vorige eeuw ontwikkeld door Rivest,
Shamir en Adleman. Het is in wezen gebaseerd op het modulair exponentieel rekenen.
We starten met het opstellen van een encryptie- en decryptiesleutel. Dit is iets wat Bart
doet als hij wil dan An versleutelde boodschappen naar hem kan sturen. Bart kiest twee
verschillende priemgetallen p en q en berekent hun product n = p · q . Hij kiest een willekeurige exponent e , zodanig dat ggd(e , (p − 1)(q − 1)) = 1. De encryptiesleutel is dan het
paar (e , n ). Een boodschap bestaat uit verschillende blokken van letters. Elk blok vertalen
we naar een numerieke waarde. We moeten enkel n (en dus p en q ) groot genoeg kiezen.
Stel dan dat P de numerieke waarde is van een blok (bestaande uit 1 of meerdere letters)
dat we gaan encrypteren. De versleutelde boodschap C wordt als volgt gedefinieerd:
C = P e (mod n )
Noem d de inverse van e modulo (p −1)(q −1). We weten dat deze bestaat omdat ggd(e , (p −
1)(q − 1)) = 1. De decryptiesleutel is (d , n ). Met het uitgereide algoritme van Euclides kan
deze inverse berekend worden, maar hiervoor moet je dus de priemgetallen p en q kennen.
Aangezien e d ≡ 1 (mod (p − 1)(q − 1)) bestaat er een k waarvoor e d = k (p − 1)(q − 1) + 1.
Nu volgt uit stelling 6.6 onmiddellijk dat C d ≡ P (mod n ). Met andere woorden, d zorgt
inderdaad voor decryptie:
C d = (P e )d = P e d = P k (p −1)(q −1)+1 ≡ P (mod n ).
Bart, die de publieke sleutel (e , n ) opstelt, beschikt over de priemgetallen p en q , en kan
dus gemakkelijk de geheime decryptiesleutel (d , n ) bepalen. De modulus n is publiek, en
de veiligheid van dit systeem is gebaseerd op het feit dat het met de huidige gekende algoritmen, computationeel gezien nog steeds heel moeilijk is om grote getallen te factoriseren
in het product van priemgetallen. Er zijn echter wel zeer efficiënte algoritmen gekend om
een inverse modulo (p − 1)(q − 1) te bepalen en om exponentiele berekeningen modulo n
uit te voeren.
8 Factorisatie van getallen
23
Voorbeeld 7.1
Neem als priemgetallen p = 47 en q = 59. Dan wordt n = p ·q = 2773 en (p −1)(q −1) =
2668. Kiezen we e = 13, dan is duidelijk ggd(e , (p − 1)(q − 1)) = 1. De inverse van e
modulo 2668 is 821.
Stel dat de onversleutelde boodschap luidt: “wiskunde is plezant”. We zullen de letters in blokjes van twee vertalen naar een getal. Deze reeks getallen wordt dan
{2309, 1911, 2114, 0405, 0009, 1900, 1612, 0526, 0114, 2000}.
Elk blokje P wordt nu versleuteld als volgt:
C ≡ P 13 (mod 2773)
Dit geeft ons de reeks versleutelde blokjes:
{1867, 2239, 1550, 0139, 0920, 1848, 2653, 1860, 0391, 0933}.
Eva wil nu de versleutelde boodschap kraken. Zij kent de versleutelde boodschap en kent
ook n = 2773 en e = 13. De enige gekende manier om RSA te kraken is om n te factoriseren
als het product van twee priemgetallen p en q en dan d uit te rekenen. In het volgende
hoofdstuk gaan we dit factorisatieprobleem bespreken.
8
Factorisatie van getallen
Aangezien de getallen die voor RSA gebruikt worden geen speciale vorm hebben en enkel
grote factoren hebben, zijn het de moeilijkste getallen om te factoriseren. Het volgende
lijstje geeft een idee van hoe lang het duurt om zo’n getal te factoriseren:
• 50 cijfers: minder dan 1 seconde op een Core2.
• 75 cijfers: 2 minuten op een 2GHz Core2.
• 100 cijfers: 5 uur op een 2GHz Core2.
• 125 cijfers: 20 dagen op een 2.53GHz Pentium 4.
• 150 cijfers: 10 maanden op een 2.53GHz Pentium 4.
• 232 cijfers: twee jaar gebruik makend van honderden computers. Dit is het huidige
record voor factorisatie van getallen zonder speciale vorm. Dit werd gedaan door
een team van onderzoekers aan verschillende universiteiten. Deze factorisatie werd
gestart in augustus 2007 en duurde tot en met 12 december 2009.
Als vuistregel kan je stellen dat elke 4 à 5 cijfers extra een verdubbeling van de rekentijd
geeft.
8 Factorisatie van getallen
24
Het echte record voor factorisatie is het getal 21039 − 1. Dit getal heeft 313 cijfers, maar is
door zijn speciale vorm gemakkelijker te factoriseren (de moeilijkheid van factorisatie is
vergelijkbaar met een getal van 215 cijfers zonder speciale vorm).
In de praktijk worden voor RSA meestal getallen gebruikt van 1024 bits (309 cijfers), 2048
bits (617 cijfers) of 4096 bits (1233 cijfers). Het factorisatierecord van 232 cijfers is niet meer
zo ver verwijderd van 309 cijfers, het is dus goed mogelijk dat men over 10 jaar RSA-sleutels
van 1024 bits zal kunnen kraken. Vanaf 2048 bits zijn de getallen echter veel groter dan degene die men vandaag kan factoriseren. Het ziet er niet naar uit dat men zulke grote getallen zal kunnen factoriseren (afgezien van serieuze wiskundige of technische doorbraken).
Dit is maar goed ook, want RSA is één van de meest gebruikte cryptografische systemen,
met toepassingen zoals bankkaarten en beveiliging van websites.
Het meest naïeve algoritme om een getal n te factoriseren is gewoon n proberen te delen
p
door alle priemgetallen kleiner dan of gelijk aan n .
Voorbeeld 8.1
p
We willen 2047 factoriseren. Aangezien 2047 = 45, 244 . . ., moeten we voor alle
priemgetallen p tot en met 43 controleren of 2047 deelbaar is door p :
2047 ≡ 1 (mod 2)
2047 ≡ 6 (mod 13)
2047 ≡ 1 (mod 3)
2047 ≡ 7 (mod 17)
2047 ≡ 2 (mod 5)
2047 ≡ 14 (mod 19)
2047 ≡ 3 (mod 7)
2047 ≡ 0 (mod 23)
2047 ≡ 1 (mod 11)
We zien dat 23 een deler is van 2047 en we delen 2047/23 = 89. Aangezien 89 een
priemgetal is, hebben we de factorisatie gevonden: 2047 = 23 · 89.
Deze factorisatiemethode werkt goed voor kleine getallen, maar om grote getallen te factoriseren (laat ons zeggen meer dan 15 cijfers) zijn andere algoritmes aangewezen.
8.1
De kwadratische zeef
Een andere methode om getallen te factoriseren is de zogenaamde kwadratische zeef. Deze
is gebaseerd op volgende stelling:
Stelling 8.2
Stel dat n = p · q met p en q twee verschillende oneven priemgetallen. Dan heeft de
vergelijking x 2 ≡ 1 (mod n ) vier verschillende oplossingen {1, n −1, a ,b } in Z/n Z met
ggd(n , a − 1) = p en ggd(n ,b − 1) = q .
8 Factorisatie van getallen
25
Bewijs. Dankzij stelling 6.2 weten we dat x 2 ≡ 1 (mod n ) equivalent is met het stelsel
¨
x 2 ≡ 1 (mod p )
x 2 ≡ 1 (mod q )
.
Merk op dat x 2 ≡ 1 (mod p ) betekent dat x zijn eigen inverse is modulo p . Stelling 3.16 zegt
dat dit enkel kan als x ≡ 1 (mod p ) of x ≡ −1 (mod p ). Analoog heeft de tweede vergelijking
1 en −1 modulo q als oplossingen.
Met de Chinese reststelling hebben we nu in totaal vier oplossingen modulo n . De oplossingen van volgende 4 stelsels zijn juist de oplossingen van x 2 ≡ 1 (mod n ).
¨
x ≡ 1 (mod p )
x ≡ 1 (mod q )
¨
,
x ≡ −1 (mod p )
x ≡ −1 (mod q )
¨
,
x ≡ 1 (mod p )
x ≡ −1 (mod q )
¨
,
x ≡ −1 (mod p )
x ≡ 1 (mod q )
.
De eerste twee geven x ≡ 1 (mod n ) en x ≡ −1 (mod n ). Noem de derde oplossing a en de
vierde b , dan zal ggd(n , a − 1) = p en ggd(n ,b − 1) = q .
Hoe gaan we deze stelling nu toepassen? Als we op de één of andere manier een congruentie x 2 ≡ y 2 (mod n ) vinden met y inverteerbaar modulo n , dan hebben we ook (x /y )2 ≡ 1
(mod n ). Als deze x en y “willekeurig” zijn, dan hebben we dankzij de vorige stelling dus
50% kans dat ggd(n , (x /y ) − 1) = ggd(n , x − y ) een echte factor p of q van n geeft.
De kwadratische zeef is een methode om zo’n congruentie x 2 ≡ y 2 (mod n ) te vinden, en
dus hopelijk ook de factorisatie van n . We werken het algoritme uit aan de hand van het
p
voorbeeld n = 53953. We berekenen n = 232, 278 . . .. Hieruit volgt dat 2332 − n een vrij
klein getal zal zijn. Inderdaad, 2332 − 53953 = 336. We factoriseren 336 en vinden
2332 ≡ 24 · 3 · 7 (mod n ).
We doen hetzelfde voor alle gehele getallen in het interval [223, 242]. We schrijven de factorisatie enkel op als alle factoren kleiner zijn dan 50.
2232 ≡ −1 · 27 · 3 · 11
2322 ≡ −1 · 3 · 43
2252 ≡ −1 · 28 · 13
2332 ≡ 24 · 3 · 7
2292 ≡ −1 · 23 · 33 · 7
2382 ≡ 32 · 13 · 23
2302 ≡ −1 · 34 · 13
2392 ≡ 25 · 32 · 11
2312 ≡ −1 · 24 · 37
2412 ≡ 25 · 3 · 43
Merk op dat we hier −1 als een “priemgetal” beschouwen in deze factorisaties. Uit bovenstaande factorisaties halen we
2252 · 2302 ≡ (−1 · 28 · 13) · (−1 · 34 · 13) (mod n )
(225 · 230)2 ≡ (24 · 32 · 13)2 (mod n )
We hebben dus een congruentie van kwadraten gevonden. Nu berekenen we ggd(n , 225 ·
230 − 24 · 32 · 13) = ggd(53953, 49878) = 163. Zo vinden we de factorisatie 53953 = 163 · 331.
8 Factorisatie van getallen
26
We hadden ook pech kunnen hebben dat deze grootste gemene deler 1 of n uitkwam. Dan
zouden we een andere congruentie x 2 ≡ y 2 moeten zoeken en die proberen.
Oefening 8.3
Factoriseer zelf het getal 47851 met behulp van deze methode.
Het woord kwadratische zeef slaat op een algoritme (dat we hier niet gaan uitwerken) om
sneller te zien welke getallen k 2 −n er enkel kleine factoren hebben. Deze zeef kan heel snel
bepalen welk van deze getallen een factor 2 hebben, welke een factor 3 hebben, enzovoort.
De kwadratische zeef is in de praktijk het snelste algoritme om RSA-getallen te factoriseren
van pakweg 100 cijfers of minder. De factorisatie-resultaten tot en met 100 cijfers die in het
begin van dit hoofdstuk vermeld werden zijn bekomen met het programma msieve, een
implementatie van de kwadratische zeef.
Download