Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11....

15
Geheimschrift op de TI-83+ Gerard Tel Universiteit Utrecht, Departement Informatica 11 november 2015 Wat kun je verwachten? Cryptografie is: het verzinnen en gebruiken van geheimschriften, oftewel “codes” waarmee je informatie onleesbaar kunt maken voor buitenstaanders. Handig als je iets geheims moet versturen over het Internet! Want je zorgt er natuurlijk voor dat jouw vriendjes de berichten wel weer leesbaar kunnen maken. In deze workshop wordt een geheimschrift uitgelegd; het is bedacht door Taher Elgamal in 1985. Het leuke ervan is, dat het helemaal met getallen werkt. En als je over een TI-83+ (of compatibele) rekenmachine beschikt, kun je een programmaatje downloaden en alles zelf narekenen. Ga hiervoor naar de website http://www.staff.science.uu.nl/ ~ tel00101/ Cryptografie/Elgamal. In de tekst staan opdrachten: dingen die je kunt uitzoeken of narekenen, experimenten die je kunt doen met een programma, of problemen die je zelf kunt uitprogrammeren op een computer of rekenmachine. De workshop is geschikt voor leerlingen die zelf met cryptografie en/of met hun programmeerbare rekenmachine aan de slag willen. Maar ook voor leraren, voor groepen, of andere ge¨ ınteresseerden in het Elgamal geheimschrift. Wil je precies weten hoe het programma werkt, lees dan het boekje Het programma ELGAMAL. 1 Wat moet je weten? Dit eerste hoofdstukje heeft het over een paar dingen die je van wiskunde, getallen en computers moet weten om het geheimschrift te kunnen begrijpen. 1.1 Computers en programmeren De berekeningen van geheimschriften zijn al gauw te groot om ze uit je hoofd of met pen en papier na te doen. Cryptografie is werk voor rekenmachines! Bij deze workshop is een programma ELGAMAL.8xp dat je TI-83+ (of compatibele) rekenmachine omtovert in een echte Elgamal-calculator! 1

Transcript of Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11....

Page 1: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

Geheimschrift op de TI-83+

Gerard TelUniversiteit Utrecht, Departement Informatica

11 november 2015

Wat kun je verwachten?

Cryptografie is: het verzinnen en gebruiken van geheimschriften, oftewel “codes” waarmeeje informatie onleesbaar kunt maken voor buitenstaanders. Handig als je iets geheimsmoet versturen over het Internet! Want je zorgt er natuurlijk voor dat jouw vriendjes deberichten wel weer leesbaar kunnen maken.

In deze workshop wordt een geheimschrift uitgelegd; het is bedacht door Taher Elgamalin 1985. Het leuke ervan is, dat het helemaal met getallen werkt. En als je over een TI-83+

(of compatibele) rekenmachine beschikt, kun je een programmaatje downloaden en alles zelfnarekenen. Ga hiervoor naar de website http://www.staff.science.uu.nl/~tel00101/Cryptografie/Elgamal.

In de tekst staan opdrachten: dingen die je kunt uitzoeken of narekenen, experimentendie je kunt doen met een programma, of problemen die je zelf kunt uitprogrammerenop een computer of rekenmachine. De workshop is geschikt voor leerlingen die zelf metcryptografie en/of met hun programmeerbare rekenmachine aan de slag willen. Maar ookvoor leraren, voor groepen, of andere geınteresseerden in het Elgamal geheimschrift. Wilje precies weten hoe het programma werkt, lees dan het boekje Het programma ELGAMAL.

1 Wat moet je weten?

Dit eerste hoofdstukje heeft het over een paar dingen die je van wiskunde, getallen encomputers moet weten om het geheimschrift te kunnen begrijpen.

1.1 Computers en programmeren

De berekeningen van geheimschriften zijn al gauw te groot om ze uit je hoofd of met penen papier na te doen. Cryptografie is werk voor rekenmachines! Bij deze workshop is eenprogramma ELGAMAL.8xp dat je TI-83+ (of compatibele) rekenmachine omtovert in eenechte Elgamal-calculator!

1

Page 2: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

Opdracht 1.1 Ga naar http: // www. staff. science. uu. nl/ ~ tel00101/ Cryptografie/Elgamal , download het programma, en laad het in je TI-83+. Start het op en kijk welkeversie je hebt (Hoofdmenu, Parameters, Over programma). Sluit het programmaaf (Hoofdmenu, Stop, Ja).

Opdracht 1.2 Heb je een tweede TI-83+, kopieer het programma dan van de ene naar deandere.

Heb je een heel ander soort rekenmachine, of een PC, dan kun je proberen zelf eenprogramma te maken.

1.2 Exponentieren

Exponentieren of machtsverheffen betekent: herhaald vermenigvuldigen. Met de notatie xa

bedoelen we het getal dat krijgt als je a factoren xmet elkaar vermenigvuldigt, bijvoorbeeld245 = 24 · 24 · 24 · 24 · 24.

Een heel belangrijke rekenregel, waar het geheimschrift van Elgamal op gebaseerd is,zegt dat als je tweemaal machtsverheft, de volgorde van de exponenten niet uitmaakt. Informule: (xa)b = (xb)a. Dat die formule geldt zul je wel snappen als je (x3)5 en (x5)3

uitschrijft:(x · x · x) · (x · x · x) · (x · x · x) · (x · x · x) · (x · x · x)

en(x · x · x · x · x) · (x · x · x · x · x) · (x · x · x · x · x)

Bij vermenigvuldigen doen de haakjes er niet toe, en in beide gevallen staat er: x15. Jeziet dat (xa)b en (xb)a allebei gewoon gelijk zijn aan x(a·b).

Opdracht 1.3 Als je x weet en x15 echt wilt uitrekenen, hoe vaak moet je dan vermenig-vuldigen? En x16?

1.3 Rekenen met resten

Geheimschriften rekenen niet met reele of complexe getallen, en zelfs niet met alle gehelegetallen. Men neemt een vast getal, dat de modulus heet, en rekent dan alleen met getallendie als rest kunnen overblijven bij een deling door die modulus. Bij modulus 7 (als inKader 1) zijn dat de getallen 0, 1, 2, 3, 4, 5 en 6 (7 kan zelf natuurlijk nooit een rest zijn):precies 7 getallen dus.

We gaan de vermenigvuldigtabel iets beter bekijken. De rij achter de 0 bevat alleenmaar nullen; logisch, want daar staan getallen 0 · x (x een van de getallen bovenaan) en0 · x is altijd 0. In de rij achter de 3 zie je elk van de zeven getallen staan; uiteraard de 0voorop want op die plaats staat 3 ·0, en verder staan de getallen door elkaar maar ze staaner wel allemaal. En dat geldt ook voor de andere rijen: elke rij (behalve die van 0) bevatelk getal precies een keer.

2

Page 3: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

Kader 1: Optellen en vermenigvuldigen met modulus 7

+ 0 1 2 3 4 5 60 0 1 2 3 4 5 61 1 2 3 4 5 6 02 2 3 4 5 6 0 13 3 4 5 6 0 1 24 4 5 6 0 1 2 35 5 6 0 1 2 3 46 6 0 1 2 3 4 5

· 0 1 2 3 4 5 60 0 0 0 0 0 0 01 0 1 2 3 4 5 62 0 2 4 6 1 3 53 0 3 6 2 5 1 44 0 4 1 5 2 6 35 0 5 3 1 6 4 26 0 6 5 4 3 2 1

Bij het optellen vantwee resten moet je,als het resultaat groterdan 6 is, er weer 7 vanaftrekken. Als je ver-menigvuldigt, bijvoor-beeld 4 maal 5, komje vaak boven de 6 uit,maar dan neem je weerde rest bij deling door 7, in dit geval 6.

Hoe dit handig is voor een geheimschrift bespreken we verder in sectie 2.1, maar hier vastdit. Als ik een getal x heb vermenigvuldigd met 3 en ik geef je de uitkomst (bijvoorbeeld5), dan kun je weten wat x was, omdat 5 maar eenmaal voorkomt in de rij van 3: x moet4 zijn geweest.

Maar als ik een getal x heb vermenigvuldigd met getal z en je wel de uitkomst vertel(bijvoorbeeld 5), maar niet wat z was, dan weet je x niet. Dat komt omdat 5 in elke rijvan de vermenigvuldigtabel voorkomt, en steeds op een verschillende plaats. Zoek zelf opwaar alle vijven staan!

Opdracht 1.4 Schrijf de optel- en vermenigvuldigtabellen eens uit voor modulus 6 en voormodulus 11. Welke tabellen hebben ook de eigenschap dat elk getal op elke rij vookomt?

Opdracht 1.5 Bedenk een TI-83+-opdracht (reductie modulo P) die van variabele V derest bij deling door P berekent.Schrijf een TI-83+-programma (tabel-analyse) dat, bij een gegeven modulus P, uitrekent ofde vermenigvuldig-tabel de eigenschap heeft dat elk getal op elke rij voorkomt.Schrijf een programma (modulaire deling) dat, bij gegeven Z en Y, een getal X uitrekentdat voldoet aan ZX=Y (in het restrekenen!).

1.4 Wat kunnen computers aan?

Het belangrijkste wat je moet weten om een geheimschrift te kunnen bedenken is: welkedingen een computer wel en niet kan uitrekenen. We schrijven getallen op als een rijtjecijfers en dat rijtje is heel kort in verhouding tot het getal dat het voorstelt: getallen toteen miljoen kunnen we schrijven met maar zes cijfers, en getallen tot een biljoen met maartwaalf cijfers! Je snapt vast wel, dat je voor het opschrijven van een grote hoeveelheid nmaar ongeveer log(n) cijfers gebruikt.

Omdat we kunnen optellen en vermenigvuldigen door die cijfers te manipuleren, kunnenwe snel rekenen, ook met (heel) grote getallen. Wij vinden het heel vanzelfsprekend dat we

3

Page 4: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

Kader 2: Rekenen met de holemens

Een (denkbeeldige) holemens noteert eengetal, bijvoorbeeld 3, met drie steentjes;we noemen dat een unaire notatie. Voorgrotere getallen heeft de holemens meerruimte nodig, en wel: evenredig met hetgetal zelf.Een holemens die 3 met 5 wilde verme-nigvuldigen, maakte drie rijen van vijfsteentjes, waarna hij de steentjes gingtellen. Dat is bij grote getallen veel werk,en wel: evenredig met de grootte van deuitkomst. De holemens zou met deze me-thode in principe 1000000 maal 1000000kunnen uitrekenen, maar zal niet langgenoeg leven om de uitkomst daadwer-kelijk te vinden.

grote getallen kunnen opschrijven, optellen en vermenigvuldigen, maar het systeem metcijfers (en de nul) is een vrij late uitvinding. De Holemensen uit Kader 2, Egyptenaren enRomeinen konden niet reken met hoeveelheden groter dan enige tienduizenden! Computersrekenen niet met een tientallig stelsel zoals wij, maar met een tweetallig stelsel; ook daarmeekun je heel snel optellen, aftrekken, vermenigvuldigen en delen met heel grote getallen.

Opdracht 1.6 Bedenk hoe je getallen in het Romeinse systeem kunt optellen en aftrekken.Bedenk hoe je Romeinse getallen kunt vermenigvuldigen.

Opdracht 1.7 Zoek op wanneer de decimale notatie is uitgevonden en door wie.

Maar hoe zit het nu met machtsverheffen? Gelukkig hoef je, om x21 uit te rekenen,niet 21 maal te vermenigvuldigen, en zelfs niet 20 maal. Kijk maar: door vier keer tekwadrateren kun je de machten x2, x4, x8 en x16 uitrekenen. En omdat 21 = 16 + 4 +1, is x21 = x16 · x4 · x, en met nog twee vermenigvuldigingen ben je klaar. Totaal 6vermenigvuldigingen voor x21.

Als de exponent een groot getal is van k cijfers, heb je op deze manier ongeveer 5kvermenigvuldigingen nodig. Een miljoenste macht kost 25 vermenigvuldigingen.

Opdracht 1.8 Schrijf 21 eens als binair getal en kijk, hoe de zes vermenigvuldigingenbij het getal passen. Probeer dan te begrijpen waarom je de miljoenste macht met 25vermenigvuldigingen kunt vinden.

Opdracht 1.9 Schrijf een programma (machtsverheffen) dat machten uitrekent met zoweinig mogelijk vermenigvuldigingen.

4

Page 5: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

Kader 3: De Caesar code op de TI-83+

Met de Caesar code kun je het TI-83+-programmaatjeELGAMAL leren kennen. Laad het programma in je re-kenmachine en start het op; in het Elgamal hoofd-menu kun je kiezen voor Caesar.Voordat je kunt versleutelen of ontsleutelen moet hetprogramma de sleutel weten (het getal z). De optieSleutel kiezen zal een random getal kiezen voorz (en die waarde laten zien), terwijl je met Sleu-tel instel zelf een waarde kunt ingeven. Als je meteen andere TI-83+ berichten wilt uitwisselen, moet inbeide rekenmachines dezelfde sleutel ingesteld zijn! Jekunt samen een getal bedenken en het op beide ma-chines instellen met Sleutel instel, of op de enemachine Sleutel kiezen gebruiken en het getoondegetal op de andere machine invoeren met Sleutelinstel. Met Sleutel tonen kun je de ingesteldesleutel en modulus bekijken.Met Versleutelen kun je een getal x invoeren,waarna je de versleutelde waarde z · x te zien krijgt.

Met Ontsleutelen kun je dat getal op een andere rekenmachine weer invoeren, enals dezelfde sleutel is ingesteld krijg je het oorspronkelijke getal weer terug.

2 Geheimschrift: Symmetrisch en Public-Key

Nu gaan we echt naar geheimschriften (soms codes genaamd) kijken. We doen daarbij net,alsof de boodschap die verstuurd wordt altijd een getal is. Je kunt vast zelf wel bedenken,hoe je tekst in getallen kunt omzetten en omgekeerd.

2.1 De Caesar code

De Caesar code is een geheimschrift dat gebaseerd is op vermenigvuldigen. Twee partijenspreken een getal z af als sleutel. In plaats van de geheime boodschap, het getal x, wordthet getal y = z · x verstuurd. De ontvanger kent z en kan x vinden door y te delen doorz. Als je een TI-83+ hebt, kun je hiermee experimenteren met het programma ELGAMAL

(waarschijnlijk ben je hier vrij snel op uitgekeken).De veiligheid van de Caesar code is erg goed zolang je maar 1 boodschap verstuurt

(en: je de sleutel goed geheim houdt!). Maar als je twee getallen, x1 en x2, verstuurtals y1 = z · x1 en y2 = z · x2, dan blijven je getallen niet helemaal geheim. Iemand diede codeboodschappen afluistert, kan het quotient x1/x2 berekenen, want dat is gelijk aany1/y2! Na een paar getallen is dat informatielekje al genoeg om de hele boodschap te

5

Page 6: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

kunnen ontrafelen. Je zou dus eigenlijk voor elke boodschap een nieuwe sleutel moetenafspreken!

2.2 Public-Key codes

Als de Caesar code wilt gebruiken, moet je eerst samen een sleutel afspreken, want bijversleutelen en ontsleutelen moet je hetzelfde getal z gebruiken. En dat afspreken vaneen sleutel is meteen de grootste moeilijkheid van de Caesar code: want voordat je metiemand in het geheim berichten kunt uitwisselen... moet je eerst in het geheim een sleuteluitwisselen! Alle codes waarbij je voor het versleutelen en het ontsleutelen dezelfde sleutelgebruikt, heten symmetrische codes.

Deze foto uit 1977 toont drie wiskundigen die door hetbedenken van geheimschriften beroemd zijn geworden: hetzijn Ralph Merkle, Martin Hellman en Whitfield Diffie. In1976 bedachten Diffie en Hellman dat je een geheimschriftkunt maken dat met twee verschillende sleutels werkt: eengetal b voor het versleutelen, en een getal a voor het ont-sleutelen.

Het handige hiervan is, dat je de eerste sleutel b he-lemaal niet geheim hoeft te houden. Je kunt iemand desleutel gewoon vertellen, zonder je zorgen te maken dat ie-mand je afluistert. Want als jouw vriend een bericht versleutelt met b, dan kan dat berichttoch niet met sleutel b weer ontsleuteld worden; daarvoor is de andere sleutel a nodig. Endie houd je natuurlijk wel goed geheim!

Sleutel b die iedereen mag weten heet de publieke sleutel (public key) en sleutel a heetde geheime sleutel (secret key). Geheimschriften die met twee sleutels werken heten publickey codes. Nu moeten die twee sleutels wel goed bij elkaar passen, want met sleutel a wileen bericht ontsleutelen dat met sleutel b versleuteld is. Maar als je die a kunt berekenenuit b.... dan moet je b alsnog geheim houden en werkt het hele idee natuurlijk niet. Er zijnverschillende geheimschriften uitgevonden die publieke sleutels gebruiken; het bekendste ishet systeem RSA, uitgevonden door Rivest, Shamir en Adleman.

2.3 De Discrete Logaritme

Als je met reele getallen rekent, kun je een logaritme bijna net zo snel uitrekenen als eenmacht. Wanneer a en b moeten voldoen aan de relatie b = ea, dan kun je als je a weet, buitrekenen (met de ex-knop), en als je b weet, a uitrekenen (met de ln-knop).

Als je rekent met resten is dat niet zo. In paragraaf 1.4 zagen we, dat je b = ga kuntuitrekenen door ongeveer 5 log a vermenigvuldigingen te doen. Maar als je b weet en wiltuitrekenen welke macht van g dat is, dan kun je de vermenigvuldigingen niet zo handigcombineren. Het aantal vermenigvuldigingen dat je nodig hebt om de logaritme van b uitte rekenen is ongeveer 3

√a.

6

Page 7: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

Kader 4: Uitrekenen van macht en logaritme

cijfers vermenigv. vermenigv. Tijd voorin a voor macht voor log logaritme

6 30 3000 3 ms12 60 3000000 3 sec18 90 3 miljard 50 min24 120 3 · 1012 5 weken50 250 3 · 1025 10 miljard eeuw60 300 3 · 1030 106 miljard eeuw100 500 3 · 1050300 1500 3 · 10150

Als je met grotere getal-len gaat rekenen, neemt detijd voor machtsverheffenen voor logaritme toe, maarniet in dezelfde verhouding.Deze tabel geeft, bij hetaantal cijfers van de expo-nent a (1) het aantal verme-nigvuldigingen om een a-demacht uit te rekenen; (2)het aantal vermenigvuldi-gingen om de logaritme uit te rekenen; (3) de tijd die dit kost bij een snelheid van eenmiljoen vermenigvuldigingen per seconde.Je ziet dan, dat met de zes-cijferige getallen waarmee de TI-83+ rekent, het uitrekenenvan de logaritme nog niet duur genoeg is om a echt geheim te houden. Daarom wordtbij echt gebruik van de Elgamal code met veel grotere getallen gerekend: 60 cijfers isheel gebruikelijk. De 300 vermenigvuldigingen nodig voor het machtsverheffen kunnendan nog steeds op een simpele rekenmachine in enkele seconden berekend worden, maarhet berekenen van een logaritme is niet mogelijk!

Opdracht 2.1 In deze experimenteeropdracht onderzoek je, waar de rekentijd voor eenlogaritme van afhangt.

q p g

199 797 96199 17911 1276199 199399 27715199 1995971 1514387

1999 19991 155721999 187907 33741999 1963019 1459733

19997 159977 2949419997 1959707 1642561

199967 1199767 1102244

Via Hoofdmenu, Log en macht krijg je toegang toteen envoudige logaritme-berekening (Holemens log) eneen snel algoritme (Pollard rho). Met Machtsverhefkun je een macht berekenen, waarna je uit dat getal de loga-ritme weer kunt berekenen a la Holemens, of met Pollard’smethode. Omdat Pollard’s methode met random getallen be-gint, moet je per invoer de berekening enige malen herhalenen een gemiddelde rekentijd nemen (per iteratie doet Pollarddrie vermenigvuldigingen).

Kijk eerst eens, hoe de rekentijd afhangt van de invoer-waarde. Is, bij eenzelfde invoer, de variatie erg groot? Hoe

is de verdeling van het aantal iteraties?Dan ga je experimenteren met andere waarden van q, p, en g. Die kun je instellen met

Logaritmen, Instellen, bijvoorbeeld op combinaties uit deze tabel. Met Hoofdmenu,Parameters, Maak p,q,g kun je andere geldige combinaties uitrekenen waarbij je degrootte van q en p ongeveer kunt kiezen.

Uit deze experimenten kun je concluderen, waar de rekentijd voor de logaritmefunctie

7

Page 8: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

door wordt beınvloed.

De grootste waarde die a kan hebben in het programma ELGAMAL is ongeveer 5 miljoen(zie Kader 6). Het uitrekenen van de logaritme vraagt dan zo’n 7000 vermenigvuldigingen,wat enkele tientallen seconden kost. Maar door met grotere getallen te rekenen, kun je ervoor zorgen dat een machtsverheffing wel, maar een logaritme niet uitgerekend kan worden.Hoeveel cijfers je daarvoor in je exponent moet stoppen kun je zien in Kader 4.

En dan zijn we klaar voor het geheimschrift van Elgamal....

3 ElGamal cryptografie

Je kunt nu lezen hoe het geheimschrift van Elgamal werkt en hoe je de berekeningen kuntdoen met het programma ELGAMAL op de TI-83+.

Net zoals bij ons De Hond of De Leeuw een heel normale naamis, zijn er in Egypte mensen die De Kameel heten: Elgamal. TaherElgamal bedacht zijn geheimschrift in 1985. Er wordt met restengerekend, daarom moet er eerst een modulus p worden afgesproken;in het TI-83+-programma ELGAMAL is p = 95917 ingesteld als mo-dulus. Ook moet er een getal g worden afgesproken als basis voorhet machtsverheffen; in het programma is dat g = 29609. (Let op:bij serieus gebruik moet je een p van 300 cijfers kiezen!!) Met deopties Hoofdmenu - Parameters - Maak p,q,g kun je anderewaarden van p en g berekenen.

3.1 Een sleutelpaar

Had je bij de Caesar code een sleutel (getal z) die je voor berichten in beide richtingenkon gebruiken, bij Elgamal heb je altijd een sleutelpaar nodig: een publieke sleutel b omberichten af te sluiten en een geheime sleutel a om ze weer te openen. Tussen a en b bestaatdeze heel simpele relatie:

b = ga

Als je paragraaf 2.3 goed hebt begrepen dan weet je, dat het wel mogelijk is om uit a, b teberekenen, maar niet om a weer terug te vinden als je alleen b weet.

Stel nu dat Bob gecodeerde berichten wil sturen aan Alice; er zijn dan twee sleutelsnodig, namelijk een geheime en een publieke sleutel van Alice. Het programma maakt altijdeerst de geheime sleutel a en berekent daarbij de publieke sleutel b door machtsverheffen.

Opdracht 3.1 Dit is een opdracht voor twee TI-83+ rekenmachines; noem ze Alice enBob.

1. Alice kiest Elgamal code en dan Sleutel maken.

2. Alice geeft voor a een getal op; zij moet dit getal onthouden en geheim houden!

8

Page 9: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

Kader 5: De TI-83+-familie

De Texas Instruments TI-83+ is een rekenmachine die veel op middelbare scholenwordt gebruikt omdat hij onderwijs in verschillende exacte vakken ondersteunt.

Er zijn verschillende, onderling compatibele uitvoe-ringen: TI-83 Plus, TI-84 Plus, TI-84 Plus Silver.De belangrijkste verschillen zijn de hoeveelheid geheu-gen, rekensnelheid, en aansluitmogelijkheden; in hetgebruik verschillen ze nauwelijks, en in het program-meren helemaal niet. Prijzen in Nederlandse winkels(eind 2005) varieren van 100 tot 150 euro.De belangrijkste mogelijkheden, naast het gebruikals “gewone” wetenschappelijke rekenmachine, zijn degrafische functies, het installeren van applicatiemodu-les en het programmeren. Met de grafische functieskun je grafieken of geparametriseerde processen teke-nen (foto: vergelijking van een in amplitude en een infrequentie gemoduleerde draaggolf). Applicaties zijnte verkrijgen over uiteenlopende onderwerpen: er isbijvoorbeeld een spreadsheet, een overzicht van hetperiodiek systeem van elementen, een spelletjespak-ket en ondersteuning van experimenten en metingen.Voor laboratorium-experimenten is het ook mogelijk,meetapparaten rechtstreeks op de rekenmachine aante sluiten.Berekeningen die niet zijn ingebouwd en niet als appli-

catie kunnen worden toegevoegd, kun je zelf programmeren in het ingebouwde Basic-achtige programmeertaaltje (zie Kader 6).Voor het maken van deze workshop werd door Texas Instruments Nederland een TI-84Plus Silver Edition ter beschikking gesteld, waarvoor hartelijk dank!

3. Het sleutelpaar (a, b) verschijnt in het scherm; Alice geeft de publieke b aan Bob.

4. Bob kiest in het menu Elgamal codering voor Invoer public en voert de pu-blieke sleutel van Alice in.

Bob laat zijn geheime sleutel door de rekenmachine kiezen.

Opdracht 3.2 Verwissel de rollen van Alice en Bob. Bij Sleutel maken geeft Bob aana de waarde 0. Er verschijnt een willekeurig getal met de bijbehorende publieke sleutel.Bob vertelt de publieke sleutel aan Alice, die hem invoert met Invoer public.

Nu zijn de sleutels ingesteld waarmee Bob en Alice berichten kunnen uitwisselen. Alice

9

Page 10: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

en Bob kennen nu elk hun eigen Public en Secret key, en van de ander alleen de Public key(zie Sleutels zien).

3.2 Versleutelen en ontsleutelen

Als Bob x wil sturen aan Alice heeft hij de publieke sleutel b nodig die hoort bij de geheimesleutel a van Alice. Voor ieder nieuw bericht van Bob wordt een nieuw getal z genomenen vermenigvuldigd met x. Samen met het product v, geeft Bob informatie u over z, maarzo, dat alleen Alice daaruit kan opmaken wat z is.

Opdracht 3.3 Je gaat de Elgamal code nu echt gebruiken.

1. Bob verzint een getal x en kiest voor Versleutelen.

2. Voer x in; de versleuteling bestaat uit u en v.

3. Alice kiest voor Ontsleutelen en voert u en v in.

Als jullie alles goed hebben gedaan verschijnt bij Alice de x waar Bob mee begon. Is datniet zo, kies dan Sleutels zien om te controleren of je elkaars publieke sleutel goed hebtingesteld.

In het programma gebeurt dit: Bob neemt een willekeurig getal k en kiest voor z hetgetal z = bk. Net als in de Caesar code is v het product z · x. Het getal u bevat informatieover k (en dus over z): u = gk. Het lijkt niet erg geheim om samen met een gecodeerdbericht mee te sturen hoe je de sleutel hebt gemaakt. Maar toch kan dat in dit geval geenkwaad, want om k uit u te berekenen moet je een logaritme berekenen en dat is onmogelijk.

Opdracht 3.4 Bob kiest weer Versleutelen en voert hetzelfde getal x in. Je krijgt eenander paar (u, v)! Geven al die paren bij Alice wel het goede antwoord?

Hoe komt Alice nu aan z? Ook zij kan k niet berekenen. Maar z is gelijk aan bk, ofwel(ga)k. En, zoals we in paragraaf 1.2 zagen, is dat gelijk aan (gk)a, oftewel ua. Alice vindtdus de waarde van x door v te delen door ua.

Samengevat komt het versleutelen en ontsleutelen hierop neer. Versleutelen van x doorBob: (1) kiest willekeurig k; (2) bereken v = gk en u = bk · x; (3) stuur op: u en v.Ontsleutelen van (u, v) door Alice: bereken x als v · u−a.

3.3 Hoe geheim is het?

De Elgamal code is heel veilig. Wel is natuurlijk nodig, dat de getallen zo groot zijn datje logaritmes echt niet kunt uitrekenen. In het TI-83+-programma is dat niet zo!

Denk hier eens over na. Carla weet dat Bob aan Alice gaat vertellen of hij haar in deeerste pauze (x = 1) of in de tweede pauze (x = 2) wil ontmoeten. Carla kan de gecodeerdeberichten van Bob niet zomaar lezen, maar komt op het idee om zelf x = 1 en x = 2 teversleutelen met de publieke sleutel van Alice. Ze wil dan haar berichten vergelijken metdie van Bob.

10

Page 11: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

Kader 6: Programmeren op de TI-83+

De programmeertaal van de TI-83+ lijkt erg op Basic, wat bv. ook voor de macro’s inMicroSoft Word en Excel wordt gebruikt. Je kunt het ELGAMAL programma bekijkenop de TI-83+ of met TI Connect op je computer.

Een programma bestaat uit een lijst van reken-instructies, waarvan de uitkomst wordt opgesla-gen in een geheugenplaats van de rekenmachine.Je kunt groepen instructies herhalen met de lus-conditie While, je kunt tussen groepen instructieskiezen met de conditionele If, en je kunt de re-kenmachine naar een bepaalde plaats in het pro-gramma sturen met een sprong Goto/Lbl. Net alselke rekenmachine heeft de TI-83+ ook instruc-ties om getallen in te lezen of te laten zien. Eenheel handige instructie van de TI-83+ is Menu,waarmee je de gebruiker snel kunt laten kiezenuit delen van het programma.Het verwerken van de instructies gaat, in vergelij-king met echte computers, niet zo snel, maar datis voor een demo-programma als ELGAMAL geenprobleem.Als je een wat groter programma schrijft, kom je erachter dat het invoeren niet heelprettig is, omdat je de instructies niet rechtstreeks kunt intypen op een PC, maarallemaal moet ingeven via menu’s. Wat ik zelf de lastigste beperking vond, was hetontbreken van een subroutine-mechanisme. Een GoSub instructie laat de rekenma-chine naar een plaats in het programma springen, maar onthoudt ook, van waar werdgesprongen. Een bijbehorende instructie End of Return laat de rekenmachine danterugkeren naar die plaats. Omdat dit mechanisme in de TI-83+ ontbreekt, word jegedwongen om berekeningen die op meerdere plaatsen in je programma voorkomen(zoals machtsverheffen in ELGAMAL), ook meerdere keren compleet uit te schrijven.

Opdracht 3.5 Laat een persoon kiezen uit 1 of 2 en dat getal versleutelen. Een tweedepersoon bekijkt de (u, v) en versleutelt zelf ook 1 en 2. Kan die erachter komen of het paar(u, v) een 1 of een 2 voorstelt?

4 Ontsleutelen met een team

Als je zomaar een willekeurig getal b als publieke sleutel instelt en een bericht versleutelt...kun je het wel vergeten dat je dat bericht ooit weer kunt ontsleutelen. Niemand kent de

11

Page 12: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

bijbehorende a of kan die uitrekenen.Je kunt de sleutel ook zo kiezen, dat het bericht wel kan worden ontsleuteld als twee of

meer mensen samenwerken.

4.1 Een gedwongen samenwerking

Wat gebeurt er als we van twee personen, Alice en Anton, de public key nemen en hetproduct instellen als public key?

Opdracht 4.1 Laat twee personen een Elgamal sleutelpaar maken (Elgamal code, Sleu-tel maken) en de publieke sleutels b1 en b2 vertellen.Ga nu naar Invoer public en geef b1× b2 als “haar B” op. Versleutel een bericht (Ver-sleutel).

Om het bericht weer te ontsleutelen moeten we de logaritme van b = b1 · b2 kennen.Maar het is niet mogelijk, die uit b te berekenen, en niemand kent dat getal!

Wel kent iedereen de geheime sleutel die bij zijn publieke hoort: Alice kent a1 waarvoorgeldt ga1 = b1, en Anton kent a2 waarvoor geldt ga2 = b2. Uit deze twee gegevens volgt:ga1+a2 = b, kortom, de sleutel die we voor het ontsleutelen nodig hebben is a = a1 + a2.Deze sleutel is niet te berekenen uit de publieke sleutel b, maar wel uit de geheime sleutelsvan Alice en Anton.

Opdracht 4.2 Laat Alice en Anton hun geheime sleutel vertellen, en voer (met Sleutelmaken) de som in als geheime sleutel. Controleer dat je nu het bericht, versleuteld methet product van de publieke sleutels, weer kunt ontsleutelen.

Je ziet dat de som van geheime sleutels past als geheime sleutel op het product vanpublieke sleutels. Ondertussen is het niet zo leuk voor Alice en Anton dat ze hun geheimesleutel hebben moeten vertellen. Want iedereen kan nu niet alleen dit speciale bericht, maaralle berichten lezen die ooit naar hun verstuurd zijn. Je kunt informatie niet “uitlenen” en“terugkrijgen”: eens verteld, blijft verteld!

Gelukkig is er een truc, waardoor Alice en Anton met hun geheime sleutels kunnensamenwerken en het bericht ontsleutelen, zonder dat ze hun geheim aan iemand moetenvertellen. Om te begrijpen hoe dat kan, kijken we nog eens naar de formule die voorhet ontsleutelen moet worden uitgerekend. Als a de geheime sleutel is, wordt het bericht(u, v) ontsleuteld door te berekenen: x = v · u−a. Maar, met a = a1 + a2 kunnen we dezeberekening herschrijven tot

x = v · u−a1 · u−a2 .

Alice en Anton kunnen deze berekening zo uitvoeren:

1. Alice krijgt u en berekent z1 = u−a1 .

2. Anton krijgt u en berekent z2 = u−a2 .

12

Page 13: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

3. Vermenigvuldig v, z1 en z2.In deze stap is geen geheim getal nodig.

In stap 1 gebruikt Alice haar geheim a1, maar toch kan ze z1 rustig vertellen, zonderdat iemand daaruit a1 kan berekenen. Immers, a1 is de logaritme van z1 (met grondtal u),en logaritmes zijn niet te berekenen. Je kunt deze berekeningen doen met het programmaELGAMAL via het menu Groeps Elgamal. Probeer het maar eens!

4.2 Ontsleutelen zonder geheime sleutel?

Je kunt de Elgamal code zo gebruiken, dat een bericht alleen ontsleuteld kan worden dooreen aantal personen samen. Versleutelen kan wel door een persoon alleen worden gedaan.Het is niet zo moeilijk te begrijpen hoe dit werkt, en als jullie over meerdere rekenmachinesbeschikken, kun je het gemakkelijk naspelen met het ELGAMAL programma.

Waarom mag niemand de sleutel weten? Je weet vast wel dat een bankkluis nooitdoor een persoon geopend kan worden. Er zijn bijvoorbeeld drie verschillende sleutels diealledrie nodig zijn, zodat alleen drie medewerkers samen de kluis kunnen openen. Zoietskun je met berichten ook doen. Stel je eens voor, dat een paar personen samen in eengeheime commissie moeten zitten. Ze kunnen dan afspreken, dat ze berichten voor decommissie alleen lezen als ze er allemaal bij zijn. Met Elgamal kunnen ze ervoor zorgen,dat een bericht alleen dan gelezen kan worden. We gaan nu kijken hoe dat precies werkt.

Sleutelkeuze en versleutelen Elk commissielid maakt een eigen sleutelpaar, en datgaat net zoals bij de gewone Elgamal code.

Opdracht 4.3 Laat twee tot vier deelnemers de rol van commissielid spelen; Kies in hetHoofdmenu voor Groeps Elgamal. Elk lid kiest Privesl maken om een eigen sleu-telpaar te maken. Net als bij de “gewone” Elgamal kun je zelf een geheime sleutel kiezen,of een 0 opgeven om een random getal als sleutel te kiezen. Het programma berekent debijpassende publieke sleutel en toont de waarden ai en bi als Mijn secr en Deel publ.Elk lid mag zijn publieke sleutel aan iedereen bekend maken.

De publieke sleutel van een lid kan worden gebruikt om op de gewone manier berichtennaar dit lid te sturen. Die kent de bijpassende geheime sleutel en kan zo’n bericht alleenontsleutelen. Het volgende wat we gaan doen is het berekenen en instellen van de publiekesleutel van de commissie als geheel.

Opdracht 4.4 Kies Inv groepkey voor het invoeren van de groepssleutel. Je moet hetaantal commissieleden opgeven, waarna je wordt gevraagd de individuele publieke sleutelsop te geven (Ind pub). Dan verschijnt de publieke sleutel van de commissie (groepssleutel). De berekende sleutel wordt meteen als publieke sleutel onthouden.

Als de publieke sleutel eenmaal is ingesteld, is er voor het versleutelen geen verschil meermet de gewone Elgamal.

13

Page 14: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

Kader 7: Voorbeeld van groeps-Elgamal

Stap Wie Invoer Resultaat1 Alice a1 = 2013 b1 = 28848

Anton a2 = 928 b2 = 4170Annet a3 = 3718 b3 = 80851

2 samen k = 3b1 = 28848

(of b2 = 4170Bob) b3 = 80851 b = 78212

3 Bob x = 888 u = 89164v = 77469

4 Alice u = 89164 z1 = 54325Anton u = 89164 z2 = 93749Annet u = 89164 z3 = 54325

5 v = 77469aantal 3z1 = 54325z2 = 93749z3 = 54325 x = 888

Als de opdrachten van paragraaf 4.2 nietlukken, kun je proberen de waarden hier-naast in te voeren. Het betreft een com-missie van drie personen, Alice, Anton enAnnet.In stap 1 maken ze ieder op hun rekenma-chine een sleutelpaar (met Privesl ma-ken), en stap 2 combineert de deelsleutelstot een publieke sleutel voor het commit-tee (met Inv groepkey).In stap 3 wordt een bericht versleuteld(Versleutel). Bedenk dat er bij ver-sleutelen een random getal wordt geko-zen!! Je krijgt daarom (bijna zeker) eenander resultaat dan Bob, ook al versleutelje hetzelfde getal x met dezelfde sleutel b.In stap 4 (met Ontsleutel lid) ge-bruikt elk commissielid zijn eigen geheimesleutel om de bijdgrage aan de gemeen-schappelijke ontsleuteling te bepalen. Ben je niet zeker of je stap 4 goed doet, rekendan verder met de getallen uit dit voorbeeld. Bedenk wel, als je dit op minder dandrie rekenmachines doet, dat je voor elke handeling van Alice, Anton of Annet debetreffende geheime sleutel weer moet instellen met Privesl maken! In deze stapworden geen random getallen gemaakt, dus als je de getallen uit het voorbeeld invoert,moet je ook dezelfde getallen eruit krijgen!Stap 5 (Ontsl leider) combineert de deelberekeningen van de leden. Als het jullielukt om er 888 uit te krijgen, kunnen jullie stappen 4 en 5 herhalen met je eigenresultaat van stap 3.

Opdracht 4.5 Versleutel een getal met de keuze Versleutel in het menu Groeps El-gamal.Versleutel hetzelfde getal vanuit het menu Elgamal code door eerst de commissiesleutelin te stellen als public key (met de keuze Invoer public) en dan voor Versleutel tekiezen.Hoe kun je erachter komen of de twee codeberichten wel echt het opgegeven getal coderen?

Ontsleutelen. De geheime sleutel die hoort bij b is een getal a waarvoor geldt ga = b.Omdat b = b1 · . . . · bk, en bi = gai , geldt

b = ga1+...+ak ,

14

Page 15: Geheimschrift op de TI-83+ - Universiteit Utrechttel00101/Cryptografie/Elgamal/... · 2015. 11. 11. · Opdracht 1.1 Ga naar tel00101/Cryptografie/ Elgamal, download het programma,

dus het getal a = a1 + . . .+ ak is de geheime sleutel die we nodig hebben. Maar dat getalkent niemand!

Opdracht 4.6 Als de hele commissie bijeen is, kunnen ze a uitrekenen. Maar als er eenlid ziek is, kunnen de andere leden dan a “ongeveer” uitrekenen?

We zullen nu gaan zien, hoe het bericht ontsleuteld gaat worden, waarbij het wel nodigis dat alle leden meedoen, maar niet dat ze a echt uitrekenen of iemand zijn geheime sleutelhoeft te laten zien. Wat we met het getal a willen uitrekenen is de waarde v · u−a; dit isde gebruikelijke Elgamal ontsleutelformule. Gebruikend dat a = a1 + . . .+ ak, volgt dat

x = v · u−a1 · . . . · u−ak .

Deze formule suggereert een mooie verdeling van de berekening over de commissieleden.Elk lid berekent alleen met u en de eigen geheime sleutel ai de waarde zi = u−ai uit. Deuiteindelijke vermenigvuldigingen worden door een willekeurig persoon uitgevoerd.

Opdracht 4.7 Laat elk commissielid (in het menu Groeps Elgamal) kiezen voor Ont-sleutel lid. Na het invoeren van u verschijnt als Deel z de waarde u−ai.Een persoon (dit mag een commissielid zijn) kiest Ontsl leider, voert v, de commissie-grootte, en de resultaten van de vorige stap in.

Tenslotte...

Je bent nu aan het eind van deze workshop. Misschienheb je nog wel ideeen die je zelf op een rekenmachine wiltuitproberen. Als je nog meer wilt lezen over cryptografie,kun je het boek hiernaast opzoeken. Het heet Cryptografie:Beveiliging van de digitale maatschappij en het is geschrevendoor Gerard Tel in 2002. De uitgever is Pearson Education.

15