010100110110010101100100001000000111010101110100001000000111000001100101011100100111001 101110000011010010110001101101001011000010111010001101001011100110010110000100000011101 010110111001100100011001010010000001101111011011010110111001101001011100110010000001101 001011100110111010001100101001000000110111001100001011101000111010101110011001000000110 010101110010011100100110111101110010001000000111001101101001011101000010000001110110011 011110110110001110101011100000111010001100001011101000110010101101101001000000110000101 100011011000110111010101110011011000010110111001110100011010010111010101101101001000000 110010001101111011011000110111101110010011001010110110101110001011101010110010100100000 011011000110000101110101011001000110000101101110011101000110100101110101011011010010110 000100000011101000110111101110100011000010110110100100000011100100110010101101101001000 000110000101110000011001010111001001101001011000010110110100100000011001010110000101110 001011101010110010100100000011010010111000001110011011000010010110000100000011100010111 010101100001011001010010000001100001011000100010000001101001011011000110110001101111001 000000110100101101110011101100110010101101110011101000110111101110010011001010010000001 110110011001010111001001101001011101000110000101110100011010010111001100100000011001010 111010000100000011100010111010101100001011100110110100100100000011000010111001001100011 011010000110100101110100011001010110001101110100011011110010000001100010011001010110000 101110100011000010110010100100000011101100110100101110100011000010110010100100000011001 000110100101100011011101000110000100100000011100110111010101101110011101000010110000100 000011001010111100001110000011011000110100101100011011000010110001001101111001011100010 000001001110011001010110110101101111001000000110010101101110011010010110110100100000011 010010111000001110011011000010110110100100000011101100110111101101100011101010111000001 110100011000010111010001100101011011010010110000100000011100010111010101101001011000010 010000001110110011011110110110001110101011100000111010001100001011100110010000001110011 011010010111010000101100001000000110000101110011011100000110010101110010011011100110000 101110100011101010111001000100000011000010111010101110100001000000110111101100100011010 010111010000100000011000010111010101110100001000000110011001110101011001110110100101110 100001011000010000001110011011001010110010000100000011100010111010101101001011000010010 000001100011011011110110111001110011011001010111000101110101011101010110111001110100011 101010111001000100000011011010110000101100111011011100110100100100000011001000110111101 101100011011110111001001100101011100110010000001100101011011110111001100101100001000000 111000101110101011010010010000001110010011000010111010001101001011011110110111001100101 001000000111011001101111011011000111010101110000011101000110000101110100011001010110110 100100000011100110110010101110001011101010110100100100000011011100110010101110011011000 110110100101110101011011100111010000101100001000000110111001100101011100010111010101100 101001000000111000001101111011100100111001001101111001000000111000101110101011010010111 001101110001011101010110000101101101001000000110010101110011011101000010110000100000011 100010111010101101001001000000110010001101111011011000110111101110010011001010110110100 100000011010010111000001110011011101010110110100101100001000000111000101110101011010010 110000100100000011001000110111101101100011011110111001000100000011100110110100101110100 001000000110000101101101011001010111010000100000011000110110111101101110011100110110010 101100011011101000110010101110100011101010111001000100000011000010110010001101001011100 000110100101110011011000110110100101011011011011100110011101011101001000000111011001100 101011011000110100101110100001011000010000001110011011001010110010000100000011100010111 010101101001011000010010000001101110011011110110111000100000011011100111010101101101011 100010111010101100001011011010010000001011011011001000110111101011101001000000110010101 101001011101010111001100100000011011010110111101100100011010010010000001110100011001010 110110101110000011011110111001001100001001000000110100101101110011000110110100101011011 011001000110100101011101011001000111010101101110011101000010110000100000011101010111010 000100000011011000110000101100010011011110111001001100101001000000110010101110100001000 000110010001101111011011000110111101110010011001010010000001101101011000010110011101101 110011000010110110100100000011000010110110001101001011100010111010101100001011011010010 000001110001011101010110000101100101011100100110000101110100001000000111011001101111011 011000111010101110000011101000110000101110100011001010110110100101110001000000101010101 110100001000000110010101101110011010010110110100100000011000010110010000100000011011010 110100101101110011010010110110101100001001000000111011001100101011011100110100101100001 011011010010110000100000011100010111010101101001011100110010000001101110011011110111001 101110100011100100111010101101101001000000110010101111000011001010111001001100011011010 010111010001100001011101000110100101101111011011100110010101101101001000000111010101101 100011011000110000101101101001000000110001101101111011100100111000001101111011100100110 100101110011001000000111001101110101011100110110001101101001011100000110100101110100001 000000110110001100001011000100110111101110010011010010110111101110011011000010110110100 101100001000000110111001101001011100110110100100100000011101010111010000100000011000010
Onderzoekscompetentie Wiskunde
Cryptografie
DENNIS MAES - 6LWI 2013-2014
Woord vooraf Het lijkt een onmogelijke opgave om een onderwerp te vinden voor een onderzoekscompetentie wiskunde dat zowel diepgang biedt als de lezer weet te boeien. Het moet een mix zijn van luchtig leesvertier en wiskundige theorie. Toch hoop ik hierin geslaagd te zijn met het onderwerp cryptografie. Het onderwerp dat als eerste was in mij op kwam en mij al van kinds af aan boeit: geheimschrift, geheime codes, en dit in combinatie met moderne informaticasystemen, vormen de ideale combinatie voor een geslaagd eindwerk. Het laat mij zowel toe de technische kant toe te lichten voor de meer wiskundig geschoolde lezer als de verhalen rond de historische gebeurtenissen op een verhalende manier te brengen, zodat iedereen zich wel op zijn eigen manier kan vinden in dit werk. Cryptografie is een zeer algemeen en ruim onderwerp en vraagt dus ook een intensief en uitgebreide aanpak, een aanpak die heel wat tijd vraagt. Maar deze tijd besteed ik graag aan iets wat mij boeit, aan iets waar ik later op kan met trots op kan terugblikken. Tot slot mogen ook de steun en hulp van mijn mama en de begeleiding van mijn leerkracht Wiskunde, niet vergeten worden. Ook zij hebben bijgedragen tot wat deze onderzoekscompetentie nu is.
Inhoudsopgave Inleiding .............................................................................................................................................5 1
Klassieke cryptografie ............................................................................................................... 6 1.1 Scytale (σκυτάλη) .............................................................................................................. 6 1.2 Het Caesarcijfer / Rot-n ....................................................................................................... 7 1.2.1 Frequentieanalyse .................................................................................................... 8 1.2.2 Het Babingtoncomplot ............................................................................................ 10 1.3 Het Vigenèrecijfer ............................................................................................................. 11 1.3.1 Kasiski-examinatie................................................................................................... 13 1.4 Homofone substitutie ....................................................................................................... 13
2
De mechanisering van de cryptografie...................................................................................... 14 2.1 Het ADFGVX-cijfer ............................................................................................................ 14 2.1.1 Georges Painvin ....................................................................................................... 16 2.1.2 Het Zimmermantelegram ........................................................................................ 17 2.2 De Enigma ........................................................................................................................ 18 2.2.1 Werking ................................................................................................................... 19 2.2.2 Mathematische veiligheid ........................................................................................24 2.2.3 Marian Rejewski ......................................................................................................25 2.2.4 Alan Turing ............................................................................................................. 26 2.3 Het Vernam-cijfer .............................................................................................................28 2.3.1 Het Lorenzcijfer ...................................................................................................... 29
3
Moderne cryptografie ............................................................................................................... 30 3.1 Lucifer (DES) ..................................................................................................................... 30 3.1.1 Triple-DES (3DES).................................................................................................... 31 3.2 Rijndael (AES) ................................................................................................................... 31 3.2.1 Wiskundige achtergrond.......................................................................................... 32 3.2.2 Werking ................................................................................................................... 35
4
Asymmetrische cryptografie..................................................................................................... 39 4.1 Diffie-Hellman-sleuteluitwisseling .................................................................................... 39 4.1.1 Werking ...................................................................................................................40 4.2 RSA ...................................................................................................................................40 4.2.1 Wiskundige achtergrond..........................................................................................42 4.2.2 Werking ................................................................................................................... 45 4.2.3 Veiligheid................................................................................................................ 46 4.2.4 Digitale handtekening ............................................................................................. 47 3|c r y p t o g r a f i e
4.3 Elliptische kromme ........................................................................................................... 47 Slot.................................................................................................................................................. 48 Bibliografie ...................................................................................................................................... 49
4|c r y p t o g r a f i e
Inleiding Voor het bestuderen van de cryptografie moeten we ons eerst afvragen wat cryptografie juist is. Het woord cryptografie komt uit het Grieks en is een samenstelling van κρυπτει en γράφω wat letterlijk ‘verborgen schrijven’ betekent. Cryptografie is dus geheimschrift. In een zoektocht doorheen de geschiedenis maken we kennis met verscheidene cryptologische systemen; gaande van klassieke pen-en-papier methodes tot hightech computer algoritmen. Deze onderzoekscompetentie in onderverdeeld in vier grote delen, ieder voor een belangrijke fase uit de geschiedenis van de cryptografie die telkens werden voorafgegaan door een baanbrekende omwenteling in het cryptografisch landschap. De eerste fase is het ontstaan van de cryptografie in de klassieke oudheid. De nood naar een systeem om vertrouwelijk te corresponderen zorgde voor het ontstaan voor de eerste codes en cijfers, methodes om tekst te verbergen. Gelijktijdig was er ook het ontstaan van de cryptoanalyse die codes en cijfers bestudeert en probeert hun zwakheden te achterhalen. De strijd tussen cryptografen, die hun boodschap proberen geheim te houden, en cryptoanalysten, die deze boodschappen proberen te kraken en achterhalen, zet zich heel geschiedenis voort en creëert een vast continuüm. Ze houden elkaar in evenwicht en zijn als de yin en yang binnen de cryptografie. Telkens wanneer systemen gekraakt zijn wakkert de maatschappelijke belangstelling voor cryptografie weer aan, bij gebrek aan een veilig communicatie systeem, en zorgt dit voor nieuwe ontdekkingen. De tweede fase kan men de industriële revolutie van de cryptografie noemen. Communicatie verloopt niet langer via pen-en-papier, maar via telegraaf of radiogolven, dus ook de versleuteling van berichten moet volgen en gebeurt vanaf het interbellum op een gemechaniseerde manier, via rotormachines zoals bijvoorbeeld de Enigma. Kort na de Tweede Wereldoorlog komt de cryptografie opnieuw in een stroomversnelling, door de uitvinding van programmeerbare computers en de bijhorende rekenkracht. Vanaf deze derde fase gebeurt alle cryptografie via digitale algoritmes die een optimale beveiliging moeten garanderen. Door de snelle evoluties binnen de elektronica kent ook de cryptografie snellere veranderingen, toch probeert men internationaal zoveel mogelijk dezelfde standaard te gebruiken zodat het eenvoudig is om wereldwijd veilig te communiceren. De vierde, laatste, en ook zeer recente fase, komt na een ontdekking die waarschijnlijk de belangrijkste is sinds het ontstaan van de cryptografie. Waar het vroeger altijd noodzakelijk was om een geheim wachtwoord of encryptiesleutel op voorhand af te spreken, bijvoorbeeld via een persoonlijke ontmoeting, kan men nu, zonder elkaar ook maar één keer te zien, een wachtwoord of sleutel afspreken.
5|c r y p t o g r a f i e
1 Klassieke cryptografie De allereerste vormen van cryptografie dateren van voor het begin van onze tijdsrekening. Van zodra de mens in een georganiseerde maatschappij begon te leven ontstonden er verschillende stammen met al dan niet verschillende belangen. Om een boodschap te versturen die geheim moest blijven voor een rivaliserende stam bedacht men codetalen. Een code bestond meestal uit symbolen waarvan enkel de zender en de ontvanger de betekenis kenden. Een mooi en simpel voorbeeld hiervan zijn de Egyptische hiërogliefen, een codetaal die tot de vondst van de Steen van Rosetta in 1822 onbegrijpelijk was. Maar het eerste echte cijfer vinden we pas terug bij de Grieken. Het verschil tussen een code en een cijfer zit hem in het niveau waarop ze een boodschap versleutelen. Een code werkt op het woordniveau en zal de woorden veranderen door andere woorden of symbolen. Een cijfer werkt op een lager niveau: hierbij worden de bouwstenen van woorden, de letters, gemanipuleerd tot een onbegrijpelijke tekst. Vandaag de dag wordt de term code echter ook gebruikt voor een cijfer in niettechnische contexten.
1.1 Scytale (σκυτάλη) De Griekse scytale was een hulpmiddel voor het allereerste cijfer dat dateert uit de 7e eeuw v. C. Het principe is zeer eenvoudig: om een stuk tekst te versleutelen wikkelt men een lange strook perkament rond de scytale en schijft er dan zijn boodschap horizontaal op (Fig. 1). Afgerold staan alle letters door elkaar. Om te begrijpen wat er geschreven staat moet met een scytale hebben met exact dezelfde omtrek. Aangezien deze codering vooral werd gebruikt door militairen, gebruikten zij vaak een deel van hun wapen hiervoor.
Fig. 1 Replica van een Oudgriekse Scytale
Wiskundig kan dit mechanisme beschreven worden als het transponeren van een matrix met een vast aantal rijen (afhankelijk van de omtrek van de scytale), daarna wordt deze tekst terug uitgeschreven als platte tekst. Om deze te ontcijferen moet men weten hoeveel rijen de oorspronkelijke matrix had en dit gebruiken als aantal kolommen in de nieuwe matrix. Dit kan men doen door het aantal letters te tellen en daarna te ontbinden in factoren (ook wel factoriseren genoemd).
6|c r y p t o g r a f i e
Voorbeeld 1. We willen de zin ‘lorem ipsum dolor sit amet’ versleutelen. 2. Hiervoor maken we een matrix met een vast aantal rijen en kolommen, een 4x6 matrix in dit geval. De afmetingen van de matrix is tevens de sleutel voor dit cijfer. 3. We transponeren deze matrix en lezen de tekst horizontaal af ‘lplaosomrureemstmdiiot’
4. Men kan deze boodschap nu alleen nog lezen indien je de afmetingen van de eerste matrix hebt. đ?‘™ đ?‘? đ?‘™ đ?‘Ž đ?‘™ đ?‘œ đ?‘&#x; đ?‘’ đ?‘š đ?‘– đ?‘‡ đ?‘œ đ?‘ đ?‘œ đ?‘š đ?‘? đ?‘ đ?‘˘ đ?‘š đ?‘‘ đ?‘œ đ?‘&#x; đ?‘˘ đ?‘&#x; đ?‘’ [ ] = đ?‘’ đ?‘š đ?‘ đ?‘Ą đ?‘™ đ?‘œ đ?‘&#x; đ?‘ đ?‘– đ?‘Ą đ?‘š đ?‘‘ đ?‘– đ?‘Ž đ?‘š đ?‘’ đ?‘Ą [đ?‘– đ?‘œ đ?‘Ą ]
Transpositie Het scytale-cijfer is een typevoorbeeld van een transpositiecijfer. Dit is een versleutelingsmethode waarbij de letters verwisseld worden van plaats met andere letters binnen een tekst.
1.2 Het Caesarcijfer / Rot-n Ook in het Romeinse Rijk was er nood aan een eenvoudige manier om geheime berichten over te dragen. Daarom bedacht Julius Caesar een veilige manier om te communiceren met zijn veldheren. Het principe is wederom zeer eenvoudig: men vervangt iedere letter in de tekst door de letter die een vast aantal posities verder staat. Hiervoor gebruikte men in de oudheid vaak een verdraaibare schijf als hulpmiddel. (Fig. 2) Dit cijfer wordt dan ook wel de Caesarrotatie genoemd, en wordt vaak afgekort al Rot met daarachter een getal van 1 tot 25 voor het aantal stappen verder in het alfabet aan te duiden.
Fig. 2 Codeerschijf gebruikt door de geconfedereerden in de Amerikaanse burgeroorlog (1861-1865)
Wiskundig kan met dit ook weergeven door een modulaire formule. Men kent aan iedere letter een getal van 1 tot 26 toe en past dan volgende formule toe. đ??¸(đ?‘Ľ) ≥ đ?‘Ľ + đ?‘˜ (đ?‘šđ?‘œđ?‘‘ 26). Hierin komt x overeen met de te versleutelen letter en k met het aantal rotaties. Om de versleutelde tekst te ontcijferen is de formule đ??ˇ(đ?‘Ľ) ≥ đ?‘Ľ + đ?‘˜ (đ?‘šđ?‘œđ?‘‘ 26).
7|c r y p t o g r a f i e
Modulair rekenen Als n een natuurlijk getal is, verschillend van 0, dan geldt voor de twee gehele getallen a en b dat đ?‘Ž ≥ đ?‘? (đ?‘šđ?‘œđ?‘‘ đ?‘›) als het verschil đ?‘Ž − đ?‘? een geheel veelvoud is van n. Het getal n wordt de modulus genoemd. Men leest dat đ?‘Ž en đ?‘? congruent zijn modulo đ?‘›, daarom gebruikt men vaak geen =-teken om aan te geven dat het over de restklasse gaat. Modulorekenen wordt ook wel klokrekenen genoemd aangezien het lezen van de klok modulo 12 rekenen is. Zo zeggen we, wanneer het 20u is dat he 8u ’s avonds is. We rekenen 20 (mod 12) ≥ 8. Een andere praktische toepassing van modulorekenen is het controleren van (uiterst ongewenste) typefouten in rekeningnummers. Zo zijn de laatste twee cijfers slechts controlecijfers en het resultaat van het getal gevormd door de eerste tien cijfers modulo 97. Beschouw het rekeningnummer BE03 001-6263007-84. Dit rekeningnummer is correct want 0016263007 (mod 97) ≥ 84
Voorbeeld Een eenvoudig voorbeeld is Rot13, hierbij worden de laatste dertien letters van het alfabet onder de eerste 13 gezet. 1. We willen de zin ‘lorem ipsum dolor sit amet’ versleutelen. 2. We vervangen iedere letter met de bijhorende uit de tabel. A B C D N O P Q
E F G H I J K L M R S T U V W X Y Z
3. Onze tekst is nu versleuteld: ‘yberz vcfhz qbybe fvg nzrg’
Monoalfabetische substitutie Het Caesarcijfer is een monoalfabetische substitutie. Dit wil zeggen dat elke letter vervangen wordt met een vooraf vastgesteld substituut. Historisch gezien is het vervangen van tekens en woorden de meest voorkomende manier van versleuteling geweest.
1.2.1 Frequentieanalyse Het kraken van een monoalfabetische substitutie is redelijk eenvoudig. Als er enkel gebruik gemaakt wordt van een rotatie binnen het alfabet zijn er maar 26 mogelijkheden of sleutels te proberen. Haalt men alle letters door elkaar dan zijn er echter veel meer mogelijkheden, een permutatie van 26 meer bepaald (26! ≈ 4 ⋅ 1026). Lange tijd werd dit dan ook als veilig beschouwd, maar in de 7de eeuw na christus ontdekten Arabische cryptoanalisten1 een zwakke plek in het mechanisme. Men onderzocht de frequentie waarin letters voorkwamen in een tekst (die was voor iedere taal anders was). Daarna analyseerde men in een versleutelde tekst de frequentie van de letters. Vaak kon men hieruit af leiden welke letters met elkaar gesubstitueerd waren. Men beperkte zich niet alleen tot letterfrequentie in het algemeen, men keek ook naar veel voorkomende tweeklanken, beginletters, eindletters, etc.
1
Cryptoanalyse is een tak van de wiskunde waarin naar kwetsbaarheden in encryptiealgoritmes wordt gezocht.
8|c r y p t o g r a f i e
Voorbeeld 1. Men wilt een versleutelde tekst onderzoeken ‘Oruhp lsvxp groru vlw dphw, frqvhfwhwxu dglslvlflqj holw, vhg gr hlxvprg whpsru lqflglgxqw xw oderuh hw groruh pdjqd doltxd. Xw hqlp dg plqlp yhqldp, txlv qrvwuxg hahuflwdwlrq xoodpfr oderulv qlvl xw doltxls ha hd frpprgr frqvhtxdw. Gxlv dxwh luxuh groru lq uhsuhkhqghulw lq yroxswdwh yholw hvvh flooxp groruh hx ixjldw qxood sduldwxu. Hafhswhxu vlqw rffdhfdw fxslgdwdw qrq surlghqw, vxqw lq fxosd txl riilfld ghvhuxqw proolw dqlp lg hvw oderuxp.’
2. Men analyseert hierin de frequentie van de letters Referentietabel Latijn2 A 8% N 6%
B 1% O 6%
C 4% P 3%
D 3% Q 1%
E 11% R 6%
D 8% Q 6%
E 1% R 6%
F 1% S 5%
G 1% T 8%
H 0% U 8%
I 11% V 1%
J 0% W 0%
K 0% X 1%
L 4% Y 0%
M 5% Z 0%
L 11% Y 1%
M 0% Z 0%
Analyse fragment A 1% N 0%
B 0% O 6%
C 0% P 4%
F 4% S 3%
G 5% T 1%
H 10% U 6%
I 1% V 5%
J 1% W 8%
K 0% X 8%
3. Globaal gezien zijn meest voorkomende letters in het Latijn A, E, I, T en U. In ons fragment zijn dit echter D, H, L, W en X. Het is niet toevallig dat deze letter exact drie plaatsen verder in het alfabet staan. We kunnen dus concluderen dat de gebruikte versleuteling Rot3 is. 4. We kunnen nu de originele tekst terug vinden door Rot23 toe te passen. (We moeten terug 23 plaatsen doorschuiven om terug aan 26 te geraken.)
2
Character Frequency: Latin (Latina), internet, 2014 (http://www.sttmedia.com/characterfrequency-latin)
9|c r y p t o g r a f i e
1.2.2 Het Babingtoncomplot Het bekendste voorbeeld van de zwakheden van monoalfabetische substitutie is het Babingtoncomplot. In de 16de eeuw was Elizabeth de 1ste koningin van Engeland, maar velen Engelsen aanvaardden haar heerschappij niet. Dit kwam omdat haar vader, Hendrik de 8ste, gebroken had met de pauselijke stoel en het Protestantisme instelde in Engeland opdat hijzelf met Anna Boleyn, de moeder van Elisabeth de 1ste zou kunnen trouwen. Een groot deel van bevolking was echter katholiek gebleven en aanvaarde dit tweede huwelijk, en bijgevolg alle kinderen die hieruit voortkwamen, niet. De katholieken, die steun kregen van zowel de Paus, Spanje en Frankrijk, schoven Maria Stuart naar voren als rechtmatige erfgenaam van de troon. Zij was de nicht van Elisabeth de 1ste en als enige in de Tudor-familie trouw gebleven aan het katholieke geloof. Tevens was Maria koningin van Schotland geweest, maar die titel moest ze na binnenlandse opstanden opgeven en overdragen aan haar éénjarige zoon. Ze moest Schotland ontvluchten en zocht tevergeefs hulp bij Elisabeth, maar zij zag het gevaar van Maria’s aanhang in en sloot haar op in een afgelegen kasteel. Alle communicatie met medestanders werd haar ontnomen, maar dankzij sluwe bedienden kon ze uiteindelijk toch contact leggen met Anthony Babington. Sir Babington was één van de samenzweerders die mee in het complot zat om Elisabeth de 1ste om te brengen en Maria Stuart op de troon te zetten. Om zeker te zijn dat niemand hun plannen kon ontdekken gebruikten ze een geheimschrift, waarin er voor iedere letter een bijhorend teken bestond, een monoalfabetische substitutie met andere woorden. (Fig. 4) Ook werden sommige veelvoorkomende woorden vervangen door één enkel teken. Het was voor die tijd zeker geen zwakke beveiliging, maar ook de cryptoanalyse kende dan een sterk toenemende populariteit. En in 1587 was een dienaar van de koningin, die al maanden als dubbelspion voor Maria diende er in geslaagd hun boodschappen te ontcijferen, hij melde zijn bevindingen onmiddellijk aan Elisabeth. Zij beval stante pede de terechtstelling van Maria, Babington en alle andere samenzweerders. Door het vertrouwen van Maria en Babington op het cijfer namen ze de moeite niet meer hun boodschappen discreet te formuleren, noch om schuilnamen te gebruiken. Ook vertrouwde ze de authenticiteit van de boodschap omdat ze er van uit gingen dat niemand anders in staat was een gecodeerde boodschap te maken. Dankzij dit vertrouwen was de spion er ook in geslaagd alle namen van alle samenzweerders via een vervalst postscriptum te bemachtigen.
Fig. 4 Nomenclator voor het geheimschrift van Maria Stuart
10 | c r y p t o g r a f i e
1.3 Het Vigenèrecijfer Na een lange tijd bleek dat het vercijferen van boodschappen door middel van een monoalfabetisch substitutieschema niet meer volstond. De breekbaarheid was reeds eeuwen geleden bewezen door de Arabieren en de kwetsbaarheid werd zelfs in de praktijk duidelijk, denk maar aan de fatale afloop van het Babingtoncomplot. Het was tijd voor iets nieuw. Het idee om meer dan ÊÊn substitutieschema te gebruiken ontstond al in de 15de eeuw bij Alberti. Hij experimenteerde met twee verschillende cijferalfabetten die afwisselend toegepast werden. De polyalfabetische substitutie was geboren.
Polyalfabetische substitutie In tegenstelling tot monoalfabetische substitutie wordt er bij polyalfabetische substitutie gebruik gemaakt van meerder vercijferingsalfabetten. Dit maakt het cijfer vele malen sterker, maar moet hiervoor wel inboeten op gebruiksgemak. Het meest polyalfabetische substitutie cijfer komt echter van Blaise de Vigenère (Fig. 5). Hij werkte het concept van Alberti uit tot een samenhangend en krachtig nieuw cijfersysteem. Het systeem van Vigenère bestaat uit een tabel, ook wel tabula recta genoemd (Tabel 1), met alle 26 cijferalfabetten die mogelijk zijn volgens het Caesarcijfer. Om te bepalen welk van de 26 alfabetten er gebruikt moet worden voor de substitutie wordt er een sleutelwoord afgesproken. Om de eerste letter van de te vercijferen tekst te coderen kiest men de overeenkomstige letter uit het alfabet dat op de rij staat van de eerste letter van het codewoord, om de tweede letter van de tekst te versleutelen neemt met de rij die begint met de tweede letter van het sleutelwoord, enzovoort. Als alle letters van het sleutelwoord gebruikt zijn, begint men gewoon opnieuw bij de eerste letter. Fig. 5 Blaise de Vigenère
Als men dit wiskundig bekijkt kan met het opnieuw voorstellen door de algebraĂŻsche formule đ??¸(đ?‘Ľđ?‘– ) ≥ đ?‘Ľđ?‘– + đ?‘˜đ?‘› (đ?‘šđ?‘œđ?‘‘ 26). Hierin komt đ?‘Ľđ?‘– overeen met de te versleutelen letter en đ?‘˜đ?‘› met het aantal rotaties. đ?‘– is de plaats van de te versleutelen letter in de tekst en đ?‘› = đ?‘– đ?‘šđ?‘œđ?‘‘ đ?‘§ met đ?‘§ gelijk aan de lengte van het codewoord. Analoog is de decryptie: đ??ˇ(đ?‘Ľđ?‘– ) ≥ đ?‘Ľđ?‘– − đ?‘˜đ?‘› (đ?‘šđ?‘œđ?‘‘ 26). De polyalfabetische aard van het Vigenèrecijfer geeft het niet alleen zijn kracht, maar maakte het ook ingewikkelder en trager toe te passen. Voor privĂŠcommunicatie werd dus nog steeds gebruik gemaakt van de simpelere technieken, maar voor diplomatieke en militaire berichten werd dit cijfer de standaard. Het werd zelfs zo veilig geacht dat men het een lange tijd le chiffre indĂŠchiffrable, het onontcijferbare cijfer, noemde.
11 | c r y p t o g r a f i e
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
Tabel 1 De Vigenèretabel
Voorbeeld 1. We willen de zin ‘lorem ipsum dolor sit amet’ versleutelen. 2. Het sleutelwoord is ‘signum’ 3. We vervangen iedere letter met de bijhorende uit de tabel. (Zie tabel 1): a. l wordt vervangen door de letter die eronder staat op de rij beginnende met s: de d b. o wordt vervangen door de letter die eronder staat op de rij beginnende met i: de w c. we blijven dit principe herhalen 4. Onze versleutelde tekst is nu: ‘dwxrg uhaaz xadwx fcf sukg’
12 | c r y p t o g r a f i e
1.3.1 Kasiski-examinatie In het midden van de 19e eeuw ontdekte Charles Babbage een kwetsbaarheid in het principe van het Vigenèrecijfer. Maar het is Friedrich Kasiski, die deze kwetsbaarheid enkele jaren later ook ontdekte, wiens naam eraan is gegeven. De zwakte bestaat erin dat telkens hetzelfde sleutelwoord, met dezelfde sleutellengte gebruikt wordt. Eenmaal men deze lengte weet, kan men de versleutelde tekst opsplitsen in verschillende delen, die eenvoudig te kraken zijn via frequentieanalyse. Bij korte boodschappen is het vrijwel onhaalbaar de sleutellengte te achterhalen, maar bij langere boodschappen is de kans reĂŤel dat een er herhalend deel (een woord bijvoorbeeld) gevonden kan worden dat op dezelfde manier is gecodeerd. Uit de afstand tussen deze twee lettergroepen is de sleutellengte te achterhalen. Deze ontdekking maakte het cijfer een stuk zwakker. De originele sterkte van het Vigenèrecijfer hangt af van het sleutelwoord en is gelijk aan een herhalingsvariatie van n-elementen (met n gelijk aan het aantal letters van het sleutelwoord) uit de đ?‘› 26 letters van het alfabet: đ?‘‰26 = 26đ?‘› . Bij een sleutelwoord van 6 letters zijn er dan 266 ≈ 3 . 108 mogelijkheden. Maar bij een geslaagde Kasiski-examinatie valt deze sterkte echter helemaal weg aangezien er dan frequentieanalyse kan worden toegepast op 6 verschillende stukken tekst.
1.4 Homofone substitutie Een andere manier om letterfrequentie te onderdrukken, wat frequentieanalyse bemoeilijkt, is homofone substitutie. Hierbij worden 100 tekens verdeeld over de 26 letters van het alfabet, evenredig met hun frequentie in klare tekst3. Zo krijgt de letter e, die vaak voorkomt, bijvoorbeeld zes verschillende tekens toegekend en de letter q, die maar zelden voorkomt, ÊÊn enkel teken. Homofone substitutie heeft als voordeel tegenover het Vigenèrecijfer dat het minder complex is en dus eenvoudiger toepasbaar. Maar het is ook minder veilig, zo kan bijvoorbeeld de frequentie van tweeklanken wel nog worden geanalyseerd.
3
Dit is onvercijferde tekst
13 | c r y p t o g r a f i e
2 De mechanisering van de cryptografie In de 19de eeuw kende de cryptografie terug een sterke evolutie. Vanaf de uitvinding van de telegraaf in 1843 was ook de interesse van het grote publiek voor versleutelde boodschappen gewekt, zij wouden immers niet dat de telegrafist kon meelezen. En ook door de opkomst van de radio, uitgevonden in 1896 door Guglielmo Marconi, werd encryptie zeer belangrijk. De boodschap werd namelijk vrij in de ether verstuurd, door iedereen te onderscheppen, en niet langer via een dure privĂŠtelegraaflijn.
2.1 Het ADFGVX-cijfer Tijdens de Eerste Wereldoorlog gebruikte het Duitser leger het ADFGVX-cijfer aan het westelijke front, in Frankrijk. Het cijfer was uitgevonden door een Duitse kolonel omdat het Vigenèrecijfer niet langer als betrouwbaar werd beschouwd. Het ADFGVX-cijfer combineerde de encryptietechnieken van fractionering en een Polybiusvierkant. Dit Polybiusvierkant (Zie tabel 2), ontwikkeld door de Griek Polybius, was een versleutelingsgereedschap waarmee letters werden vervangen door twee cijfers. Zo werd een A bijvoorbeeld het getal 11 en de letter M het cijfer 33. 1 2 3 4 5
1 A F K P V
2 B G L Q W
3 C H M R X
4 D I N S Y
5 E J O T Z
Tabel 2 Het oorspronkelijke Polybiusvierkant
In de eerste versie van het ADFG(V)X-cijfer werd ook gebruik gemaakt van een 5x5 vierkant enkel voor de letters van het alfabet, waarbij een u gelijk was aan een v. Maar om ook cijfers te kunnen coderen werd er de letter v aan toegevoegd zodat er een 6x6 vierkant ontstond waarin zowel alle 26 letters van het alfabet als de 10 cijfers konden worden opgekomen. De letters ADFGVX zijn ook niet willekeurig gekozen, ze zijn zeer duidelijk te onderscheiden in morsecode (Fig. 6). Dit was de communicatiecode bij uitstek boodschappen via radiogolven of telegraaflijnen.
Fig. 6 De internationale morsecode
14 | c r y p t o g r a f i e
A D F G V X
A A D G J O U
D 1 4 7 0 P V
F B E H K Q W
G 2 5 8 L R X
V C F I M S Y
X 3 6 9 N T Z
Tabel 3 Een ADFGVX-tabel
Bij ADFGVX- versleuteling moeten we eerst onze tabel vullen met alle letters van het alfabet en de tien cijfers. Beide partijen moeten over dezelfde tabel beschikken. Daarom kan deze tabel gevuld worden a.d.h.v. een sleutelwoord: de unieke letters hiervan worden achtereenvolgens horizontaal in de tabel geplaatst en daarna wordt de rest alfabetisch opgevuld. De cijfers worden naast de overeenkomstige letters geplaatst (zo staat rechts van een C het cijfer 3). Op deze manier kunnen we onze tekst omzetten in bigrammen, bestaande uit de kopletters van de rij en de kolom. (zo wordt de letter c gecodeerd als het bigram av volgens tabel 3). Dit is de eerste stap in de codering, want momenteel is er enkel een (onveilige) monoalfabetische substitutie toegepast. In de tweede stap wordt er gebruik gemaakt van fractionering van de bigrammen. Dit gebeurt door een kolomtranspositie: de verkregen lettercode wordt horizontaal onder een sleutelwoord neergeschreven in rijen. Daarna wordt de verkregen tabel kolom per kolom uitgelezen, beginnende bij de kolom waarvan de letter van het sleutelwoord het eerst in het alfabet voorkomt. Zo wordt ieder letterpaar opgesplitst voor een veilige versleuteling.
Voorbeeld Om het ADFGVX-cijfer te verduidelijken 1. We willen de zin ‘lorem ipsum dolor sit amet’ versleutelen. 2. We vervangen iedere letter met het bijhorende bigram (volgens tabel 3). Het resultaat van stap 1 is: ‘gg va vg df gv fv vd vv xa gv da va gg va vg vv fv vx aa gv df vx’ 3. We vullen deze tussentijdse uitkomst rij per rij in onder ons (tweede) sleutelwoord: ‘signum’ S I G N U M 5 2 1 4 6 3 G G V A V G D F G V F V V D V V X A G V D A V A G G V A V G V V F V V X A A G V D F V X 4. We lezen de tekst nu kolom per kolom uit, beginnende bij de g, dan de i, enz. 5. Onze tekst is nu versleuteld: ‘vgvdvfg gfdvgvax gvaagxf avvaavv gdvggvav vfxvvvd’
15 | c r y p t o g r a f i e
Fractionering Bij fractionering worden betekenis-dragende letters opgesplitst in verschillende kleinere delen, die geen afzonderlijke betekenis meer dragen, die daarna afzonderlijk van plaats worden verwisseld. Bij ADFGVX-versleuteling worden tekens eerst verdubbeld door een ze in een Polybiusvierkant te halen en daarna een kolomtranspositie toe te passen.
2.1.1 Georges Painvin Encryptie is een eeuwig durende strijd tussen enerzijds de cryptografen en anderzijds de cryptoanalysten. Ook bij het AGFGVX-systeem werd er naarstig gezocht naar zwakheden. Het was de Fransman Georges Painvin die in juni 1918 het eerste bericht van de Duitsers wist te ontcijferen. Een hele reeks van ontcijferingen volgde waardoor de geallieerden de exacte locatie van het Duitse offensief op Parijs op voorhand wisten en zich zo op de aanval konden voorbereiden. Het kraken van het ADFGVX-cijfer was echter geen eenvoudige opgave. Het was zowel psychologisch als fysisch zwaar, Georges Painvin viel er zelfs 15 kg van af. De methode die uiteindelijk tot de ontrafeling heeft geleid berustte op het stereotype begin van elk berichten. Deze werden op dezelfde manier gefractioneerd en vormden dan gelijkaardige patronen die overeen kwamen met de hoofding van de kolommen in de transpositietabel. Hierna moest er nog een statistische analyse worden toegepast en dit kon enkel worden gedaan wanneer er veel berichten werden verstuurd. Painvin gebruikte ook nog andere methodes om de tekst te achterhalen, zo had hij een manier gevonden om de sleutellengte te zoeken en een manier om te bepalen waar de minder frequente letters in het Polybiusvierkant stonden.
Fig. 7 Georges Painvin
16 | c r y p t o g r a f i e
2.1.2 Het Zimmermantelegram Een ander mooi voorbeeld van gekraakte encryptie tijdens de Eerste Wereldoorlog is het Zimmermantelegram. Dit bewuste telegram werd op 16 januari 1917 verstuurd door de Duitse minister van buitenlandse zaken, Arthur Zimmerman, naar de ambassadeur in Mexico. In dit telegram werd Mexico verzocht deel te nemen aan de oorlog. Het was niet de bedoeling van Duitsland om de Verenigde Staten te betrekken, maar indien het ooit zo ver kwam, zou Mexico Duitse steun krijgen en na de overwinning grote delen grond toegekend krijgen. Duitsland verwachte immers dat de Verenigde Staten de geallieerden zouden steunen wanneer ze hun onbeperkte duikbotenoorlog inzetten (waar ook Amerikaanse schepen de dupe van zullen zijn). De Amerikanen kwamen echter vroeger achter de Duitse intenties. Room 40, de cryptografische dienst van de Engelsen, wist de boodschap gedeeltelijk te ontcijferen na het afluisteren van de telegraaflijn tussen Duitsland en Amerika (langs waar het bewuste telegram is gepasseerd). Via een stroman melde Engeland dit aan Amerika. Ze wilden namelijk niet dat de VS er achter kwam dat zij hun telegraaflijnen afluisterden. Doordat de Duitse ambassade oude codeboeken gebruikte om het bericht door te sturen kon later ook de volledige boodschap worden achterhaald, hierdoor kwam echter ook aan het licht dat Engeland de telegraaflijnen aftapte. Toch leidde deze onthulling er toe dat de Verenigde Staten zich aansloten bij de geallieerden. Een historische beslissing die misschien niet direct het gevolg was van het Zimmermantelegram, maar er ongetwijfeld heeft toe bijgedragen.
Fig. 8 Het Zimmermantelegram, zoals het verstuurd is van de Duitse ambassade in Washington naar de ambassade in Mexico
17 | c r y p t o g r a f i e
2.2 De Enigma Na de eerste wereldoorlog kwam de cryptografie opnieuw in een stroomversnelling. Het medium waarmee boodschappen werden verstuurd, zoals de telegraaf en de radio, was al lang gemechaniseerd. Maar voor het versleutelen van de berichten werd nog steeds gebruikt gemaakt van handcijfers, cijfers die manueel moesten worden uitgevoerd door een persoon, met pen en papier. Hierin kwam verandering met de uitvinding de rotormachine, een elektromechanisch apparaat dat het werk van een cryptograaf volledig automatiseerde. Hiermee kon er veel tijd bespaard worden. Het principe van de rotormachine werd al uitgevonden door twee Nederlandse wetenschappers van de zeemacht in 1915. Het eerste werkende apparaat kwam van Edward Hebern in 1917. Het was een eenvoudig apparaat met slechts één rotor en hij hoopte zijn uitvinding te kunnen verkopen aan het leger, om zo rijk te worden. Zijn succes was echter gelimiteerd. Ook andere wetenschappers, zoals Arvid Damm en Hugo Koch, patenteerde in 1919, onafhankelijk van elkaar een rotormachine. Maar het is de Duitser Arthur Scherbius die de rotormachine bekend heeft gemaakt. Hij vroeg in 1918 een patent aan op zijn codeermachine, de Enigma4.
Fig. 9 Patent voor de Enigma van Scherbius
De Enigma werd later vooral bekend als de codeermachine van de Wehrmacht vóór en tijdens de Tweede Wereldoorlog in nazi-Duitsland.
4
‘Enigma’ is Grieks voor ‘raadsel’
18 | c r y p t o g r a f i e
2.2.1 Werking Een Enigma-machine bestaat uit een toetsenbord, enkele rotors, een reflector, eventueel een stekkerbord en een paneel met lampjes. Als men een letter wilt versleutelen, hoeft men maar op het toetsenbord te drukken en de het lampje met de gecodeerde letter begint te branden. De taak voor het versleutelen is dus volledig voor de machine.
Fig. 10 Zwitserse Enigma K met 4 rotors
In een rotormachine vormen de rotors, ook wel scramblers genoemd, het hart van de machine. Het zijn schijven met een diameter van ongeveer 10 cm die gemaakt zijn van rubber of bakeliet. Op deze schijven zitten elektrische contacten aan weerskanten: 26 pinnen aan de ene kant die willekeurig overeenkomen met 26 plaatjes aan de andere kant, de 26 letters van het alfabet. Deze contacten waren intern verbonden volgens een bepaald schema, en dit schema vormt het feitelijke versleutelingsmechanisme van de rotor.
Fig. 11 Twee rotors
19 | c r y p t o g r a f i e
Eén rotor komt dus overeen met één monoalfabetisch susbstitutiealfabet. Het is het gebruik van meerdere rotors in serie, op verschillende plaatsen en in verschillende posities, die de codering dermate complex maakt. Want een stappenmechanisme, waarbij de stand van één (of meerdere) rotors verandert, zorgt ervoor dat ook het susbstitutiealfabet iedere keer verandert. De eerste rotor verdraait één stap per gecodeerde letter, de tweede rotor verdraait pas wanneer de eerste rotor een hele omwenteling heeft gemaakt en de derde rotor draait pas wanneer de tweede rotor volledig rond is. Deze omwenteling is dus vergelijkbaar met een teller voor het water of de elektriciteit en ontstaat wanneer men een toets indrukt. Maar bij de Enigma heeft iedere verschillende rotor (er bestonden er wel acht verschillende) een ander draaipunt. Sommige latere rotors draaiden zelfs twee keer per omwenteling van een rechter gelegen rotor. Andere rotors, zoals de bèta (β) en gamma (γ) rotors stonden altijd rechts en draaiden nooit. Rotor # I II III Rotor # I II III IV V VI VII VIII Beta Gamma Reflector A Reflector B Reflector C Reflector B Thin Reflector C Thin
ABCDEFGHIJKLMNOPQRSTUVWXYZ Introductiedatum Model DMTWSILRUYQNKFEJCAZBPGXOHV 1924 Commerciële Enigma HQZGPJTMOBLNCIFDYAWVEUSRKX 1924 Commerciële Enigma UQNTLSZFMREHDPXKIBVYGJCWOA 1924 Commerciële Enigma ABCDEFGHIJKLMNOPQRSTUVWXYZ Introductiedatum Model EKMFLGDQVZNTOWYHXUSPAIBRCJ 1930 Enigma I AJDKSIRUXBLHWTMCQGZNPYFVOE 1930 Enigma I BDFHJLCPRTXVZNYEIWGAKMUSQO 1930 Enigma I ESOVPZJAYQUIRHXLNFTGKDCMWB 1938 M3 Army VZBRGITYUPSDNHLXAWMJQOFECK 1938 M3 Army JPGVOUMFYQBENHZRDKASXLICTW 1939 M3 & M4 Naval NZJHGRCXMYSWBOUFAIVLPEKQDT 1939 M3 & M4 Naval FKQHTLXOCBJSPDZRAMEWNIUYGV 1939 M3 & M4 Naval LEYJVCNIXWPBQMDRTAKZGFUHOS 1941 M4 R2 FSOKANUERHMBTIYCWLQPZXVGJD 1942 M4 R2 EJMZALYXVBWFCRQUONTSPIKHGD YRUHQSLDPXNGOKMIEBFZCWVJAT FVPJIAOYEDRZXWGCTKUQSBNMHL ENKQAUYWJICOPBLMDXZVFTHRGS 1940 M4 R1 (M3 + Thin) RDOBJNTKVEHMLFCWZAXGYIPSUQ 1940
M4 R1 (M3 + Thin)
Tabel 4 De verschillende rotorbedradingen
Voor de eerste militaire Enigma-machines waren er drie rotors, verschillend van de drie rotors die bij de commerciële variant zaten uiteraard. In 1938 veranderde dit naar vijf rotors waaruit er drie werden gekozen. De Duitse zeemacht gebruikte altijd meer rotors dan andere divisies van het leger, zij hadden wel acht verschillende rotors met verschillende bedradingen. Ook had de zeemacht een Enigma-machine met vier rotors, dit werd verwezenlijkt door de reflector te vervangen door een dunner exemplaar en er een vierde, niet-draaibare en smalle, rotor bij te plaatsen. Voor deze vierde rotor koos men tussen de rotors bèta (β) en gamma (γ). Ook bestond er een smalle rotor die er voor zorgde dat de machine met vier rotors op dezelfde manier werkte als een machine met slechts drie rotors.
20 | c r y p t o g r a f i e
Rotor I II III IV V VI, VII, VIII
Inkeping Q E V J Z Z+M
Effect De volgende rotor draait als de vorige van Q naar R draait De volgende rotor draait als de vorige van E naar F draait De volgende rotor draait als de vorige van V naar W draait De volgende rotor draait als de vorige van J naar K draait De volgende rotor draait als de vorige van Z naar A draait De volgende rotor draait als de vorige van Z naar A draait Tabel 5 De verschillende draaiposities van rotors
In latere versies was er ook nog de zogenaamde ‘ring’-instelling, hierbij kon men het alfabet dat op de rotor geschreven staat verdraaien tegenover de onderliggende letters en dus tegenover de inkeping. Dit had enkel een effect voor de twee meest rechts gelegen rotors en resulteerde dus in 26² extra instelmogelijkheden. Nadat het signaal door de rotors is gegaan komt het in een reflector. Deze stuurt het signaal terug naar een andere letter op dezelfde rotor, waardoor het signaal op een andere manier terug door de rotors gaat en zo aankomt in het lampjespaneel. Zoals af te leiden uit de tabel 4 komt met bijvoorbeeld de a van reflector A de letter e overeen en komt op dezelfde reflector de e overeen met de letter a. Iets wat niet het geval is bij rotors. Dit was het grote verschil van de Enigma met andere rotormachines. Het is een functie die niks toevoegt aan de veiligheid, in tegendeel zelfs, deze functie zorgt ervoor dat letters nooit als zichzelf gecodeerd kunnen worden. Maar het heeft wel een zeer praktische toepassing: de methode om een bericht te ontcijferen is identiek aan de methode om een bericht te vercijferen. Men kon dus snel wisselen tussen de- en encryptie zonder de rotors te hoeven omdraaien. Een andere toevoeging bij de militaire versie van de Enigma is het stekkerbord. Zonder stekkers vloeit de stroom van de ingedrukte letter naar dezelfde letter bij de eerste rotor. Maar met stekkers wordt een letterpaar omgewisseld. Men gebruikte telkens een vast aantal kabeltjes: eerst 6, later 10. Het maximum aantal combinaties verkrijgt men echter pas bij 11 kabels, of bij een wisselend aantal kabels. Op het stekkerbord heeft iedere letter twee contactbussen, de ene stekker verbreekt de oorspronkelijke verbinding en de andere legt de nieuwe aan.
Fig. 12 Het stekkerbord met twee verbonden stekkerparen
21 | c r y p t o g r a f i e
Voorbeeld Ter verduidelijking van de Enigma-codering
Fig. 13 Het Enigma logo
1. We willen de zin ‘lorem ipsum dolor sit amet’ versleutelen 2. We gebruiken de meest voorkomende Enigma-machine, de M3 van de Duitse leger, met drie rotors en beschikkend over een stekkerbord. 3. Nu moet de machine op de daginstelling worden ingesteld, deze kiezen we volledig willekeurig. We gebruiken de rotors I, II en III, van rechts naar links geordend zodat de letter eerst in rotor I komt. Deze stellen we in op S (voor rotor III), I( voor rotor II) en G (voor rotor I). Verder gebruiken we de standaard reflector B. De ringinstellingen laten we ongewijzigd op A, A, A en op het stekkerbord steken we één kabeltje om dit principe ook aan te kunnen tonen: we verbinden de T met de L. 4. Als we nu de eerste letter, L, intypen op het toetsenbord gaat het elektrisch signaal naar het stekkerbord waar dit vervangen wordt door een T. De T gaat naar de eerste rotor, rotor I, die ingesteld staat op G, en dus binnenkomt (na een extra verdraaiing) met een verschuiving van 7 stappen als een A. In tabel 4 kunnen we opzoeken dat in rotor I de A verbonden is met een E, deze gaat naar rotor II, die op I staat ingesteld en dus met 7 stappen opschuift en binnenkomt bij F. Opzoeken in tabel 4 geeft de output I. Deze I gaat naar rotor III en komt binnen als een S door de instelling op S (18 plaatsen) en gaat buiten als G. De G staat tegenover de O van de reflector B waar deze letter verbonden staat me M. Nu moet het signaal weer door de drie rotors volgens dezelfde methode maar dan van links naar rechts en daarna door het stekkerbord. De output letter is een B. Onderstaand schema 5 verduidelijkt de werking. In-/output Stekkerbord Rotor I (G+1) Rotor II (I) Rotor III (S) Reflector B
▲ ▼ ABCDEFGHIJKLMNOPQRSTUVWXYZ ▲ ▼ ABCDEFGHIJKLMNOPQRSTUVWXYZ ▲ ▼ HIJKLMNOPQRSTUVWXYZABCDEFG ▲ ▼ IJKLMNOPQRSTUVWXYZABCDEFGH ▼ ▲ STUVWXYZABCDEFGHIJKLMNOPQR ▲ ▼ ABCDEFGHIJKLMNOPQRSTUVWXYZ
5
DANIEL PALLOKS, Universal Enigma Simulator, Humboldt-Universität zu Berlin, internet, 2007 (http://people.physik.hu-berlin.de/~palloks/js/enigma/enigma-u_v20_en.html)
22 | c r y p t o g r a f i e
5. Voor de tweede letter is het proces analoog, alleen is na de encryptie van de eerste letter rotor I nog één plaats verder gedraaid, dit resulteert in een ander encryptiealfabet. De o wordt versleuteld als een c. Onderstaand schema6 is vergelijkbaar met het schema uit stap 4, alleen is de 3de rij één plaats opgeschoven. Dit is het resultaat van rotor I die verdraaid is. In-/Output Stekkerbord Rotor I (G+2) Rotor II (I) Rotor III (S) Reflector B
▲ ▼ ABCDEFGHIJKLMNOPQRSTUVWXYZ ▲ ▼ ABCDEFGHIJKLMNOPQRSTUVWXYZ ▲ ▼ IJKLMNOPQRSTUVWXYZABCDEFGH ▲ ▼ IJKLMNOPQRSTUVWXYZABCDEFGH ▼ ▲ STUVWXYZABCDEFGHIJKLMNOPQR ▼ ▲ ABCDEFGHIJKLMNOPQRSTUVWXYZ
6. Als we verder blijven doen is de uiteindelijke cijfertekst (versleutelde tekst): ‘bcnfzndixbaxmxbwxqbxds’ 7. Om dit te ontcijferen moet men simpelweg de machine terug om de begininstellingen zetten en deze cijfertekst intypen.
6
Voor een andere visualisatie van de rotors en hun bedrading raadpleeg http://enigmaco.de/enigma/enigma.html
23 | c r y p t o g r a f i e
2.2.2 Mathematische veiligheid Wiskundig kunnen we het aantal mogelijkheden om de enigma te kraken voorstellen als een product van permutaties. Hiervoor moeten we kijken naar alle mogelijke instellingen van de machine: de keuze en volgorde van de rotors, hun startpositie, de reflector en de instellingen van het stekkerbord. We gaan uit van het standaardmodel van de Wehrmacht-enigma, met drie rotors gekozen uit 5 rotors, de standaard reflector en 10 kabeltjes in het stekkerbord. Het kiezen en plaatsen van 3 rotors uit 5 is een variatie van 3 uit 5. We gaan er wel van uit dat iedereen de verschillende rotors heeft of de bedrading kent, wat ook het geval was van bij onder andere de Britten. 5! đ?‘‰53 = = 60 2! De mogelijke beginstanden van de rotors is een herhalingvariatie van 3 uit 26. 3 đ?‘‰26 = 263 = 17 576 De mogelijke ringinstellingen van de rotors is een herhalingvariatie van 2 uit 26, aangezien de uiterst linkse ring geen verschil maakt. 2 đ?‘‰26 = 262 = 676 Als er đ?‘? kabeltjes gebruikt worden is het aantal te gebruikten aansluitingen gelijk aan een combinatie van 2đ?‘? uit 26. Ook de verschillende combinaties tussen aansluitingen moet worden bepaald. Voor het eerste kabeltje zijn er (2đ?‘? − 1) keuzes, voor het tweede kabeltje (2đ?‘? − 3), het derde (2đ?‘? − 5), ‌ en voor het laatste (p-de) kabeltje (2đ?‘? − (2đ?‘? − 1)) = 1 keuze. đ?‘? đ??ś26 â‹… (2đ?‘? − 1) â‹… (2đ?‘? − 3) â‹… (2đ?‘? − 5) â‹… ‌ â‹… 1 26! = â‹… (2đ?‘? − 1) â‹… (2đ?‘? − 3) â‹… ‌ â‹… 1 (26 − 2đ?‘?)! (2đ?‘?)! (2đ?‘? − 1) â‹… (2đ?‘? − 3) â‹… ‌ â‹… 1 26! = â‹… (26 − 2đ?‘?)! 2đ?‘? â‹… (2đ?‘? − 1) â‹… (2đ?‘? − 2) â‹… (2đ?‘? − 3) â‹… ‌ â‹… 1 26! 1 = â‹… (26 − 2đ?‘?)! 2đ?‘? â‹… (2đ?‘? − 2) â‹… (2đ?‘? − 4) â‹… ‌ â‹… 2 26! 1 = â‹… đ?‘? (26 − 2đ?‘?)! 2 â‹… đ?‘?! Stel nu đ?‘? = 10 26! 26! ⇔ đ?‘? = 10 2 (26 − 2đ?‘?)! đ?‘?! 2 â‹… 6! â‹… 10! = 150 738 274 937 250 ≈ 1,51 â‹… 1014 Als we nu al deze tussenstappen met elkaar vermenigvuldigen krijgen we het uiteindelijke resultaat. Dit zijn de mogelijke instellingen om de Enigma-machine in te stellen.
60 ⋅ 17 576 ⋅ 676 ⋅ 150 738 274 937 250 = 107 458 687 327 250 619 360 000 ≈ 1023 Dit komt ongeveer overeen met 277 wat gelijk staat voor een 77-bits encryptiesleutel in hedendaagse encryptie of met 2616 wat hetzelfde is al een wachtwoord van 16 tekens enkel bestaande uit kleine letters. Zelfs indien men iedere seconde 100 codes kon testen duurde het kraken nog meer dan een miljard jaar.
24 | c r y p t o g r a f i e
2.2.3 Marian Rejewski Tijdens het interbellum leek de Enigma voor de meeste Europese staten een onkraakbare encryptiemachine. Zowel Engeland, Frankrijk als de Verenigde Staten, allen nog in een overwinningsroes na de Eerste Wereldoorlog, hadden de cryptoanalyse ervan snel opgegeven. Het zijn de Polen die bleven volharden in het zoeken naar een zwakte van de Machine, gedreven door enerzijds het oprukkende Communisme van Rusland en anderzijds een dreigende invasie van Duitsland, dat de prille staat Polen terug wou annexeren. Doordat er ook een commerciële variant van de Enigma bestond waren alle partijen op de hoogte van de werking ervan. Maar de militaire Enigma had drie andere rotors, hier kwam een verbond met Frankrijk Polen erg van pas, de Franse geheime dienst wist namelijk via een Duitse spion, Hans-Thilo Schmidt, de bedrading van de militaire rotors. Ook de Duitsers wisten dat een tekst makkelijker te decoderen was als eenzelfde code gebruikt werd voor een grote hoeveelheid informatie. Daarom werd naast de daginstellingen, die maandelijks via codeboeken werden verspreid, voor ieder bericht een aparte berichtsleutel gekozen. De instellingen voor één enkel bericht verschilde van de daginstelling in de positie van de rotors. Om deze positie door te sturen werd deze eerst gecodeerd met de daginstelling. De Duitsers eisten ook dat de berichtsleutel dubbel verstuurd werd, om eventuele storingen op te vangen. Stel dat de berichtsleutel abc versleuteld wordt als bijvoorbeeld xyzsdk dan kan men hieruit afleiden dat een a eerst als x en dan als s, een b eerst als y en dan als d, en een c eerst als z en dan als k versleuteld worden. Het was uiteindelijk de jonge wiskundige Marian Rejewski die in dit vage verband een kwetsbaarheid vond. Als er op een dag genoeg berichten verstuurd werden kon Rejewski een alfabetreeks opstellen met het verband tussen de eerste en de vierde letter van de berichtsleutel, gecodeerd met de dagsleutel. Een patroon dat hierbij in het oog schoot waren ketenpatronen.
Fig. 14 Marian Rejewski
Voorbeeld Tabel met verbanden tussen de eerste en de vierde letter. (of tussen de 2de en 5de / de 3de en 6de) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z F Q H P L W O G B M V R X U Y C Z I T N J E A S D K In deze tabel vinden we 4 ketens terug: A → F → W → A B → Q → Z → K → V → E → L → R → I → B C → H → G → O → Y → D → P → C J → M → X → S → T → N → U → J
3 schakels 9 schakels 6 schakels 6 schakels
25 | c r y p t o g r a f i e
Rejewski realiseerde zich dat, ondanks dat deze ketens iedere dag veranderden van aantal en grootte, het stekkerbord hier geen enkele invloed op had. Het verwisselen van twee willekeurige letters gaf steeds hetzelfde resultaat met evenveel en even lange ketens. Dit verminderde het aantal mogelijkheden voor de rotorinstelling drastisch van ongeveer 1012 tot 105 456, het aantal mogelijke instellingen voor de rotors. Aanvankelijk liet Marian Rejewski een catalogus aanleggen met alle mogelijkheden, een opdracht die wel bijna een jaar in beslag nam. Hier kon men daarna relatief snel de juiste scramblerpositie in terug vinden. Maar wanneer de Duitsers hun procedure veranderden werd de catalogus waardeloos. Hij besloot toen zes gemechaniseerde machines, Bomba’s genaamd, te maken die alle scramblerposities afgingen, één voor iedere mogelijke volgorde van de scramblers. Deze machines waren gebaseerd op de manuele Zygalski-bladen, een manueel hulpmiddel ontwikkeld door zijn collega Henryk Zygalski. Het enige probleem dat nu overbleef waren de stekkers. Maar ook dit was apart op te lossen: men voerde de cijfertekst in op een Enigma zonder stekkers, maar met de juiste scramblerinstellingen. In de uitkomst waren de letters nog steeds verwisseld maar doordat deze verwisseling statisch was, en dus voor iedere letter van de tekst hetzelfde, en mede met het feit dat er toen nog maar 6 kabeltjes gebruikt werden, kon men a.d.h.v. de letters die wel al correct waren ontcijferd de stekkerposities op zicht afleiden.
2.2.4 Alan Turing Toen Duitslands in 1938 de beveiliging opvoerde door twee extra rotors, IV en V, in te voeren en daardoor het aantal mogelijke scramblerposities vertienvoudigde werd de informatiestroom gestuit. Het bijmaken van 54 extra Bomba’s lag niet binnen het budgettaire vermogen van de Polen. De meest vooraanstaande cryptoanalysten van Engeland en Frankrijk werden in Polen uitgenodigd en kregen een uitgebreide uiteenzetting te horen over het Poolse vernuft om de Enigma te kraken. Twee weken later viel Duitsland Polen binnen en verschoof de hoofdzetel voor het kraken van de Enigma naar de Government Code and Cipher School (GC&CS) die voornamelijk vanuit Bletchley Park in Zuid-Engeland opereerden. Zij hadden meer middelen en konden dankzij de Poolse methode al het Duitse berichtverkeer meelezen wat uiterst belangrijke informatie opleverde over Duitse offensieven. In Bletchley Park zocht men ook naar andere manieren om de rotorinstellingen af te leiden, in voorbereiding op het moment waarop de berichtsleutels niet meer dubbel werden doorgestuurd. De basis voor deze nieuwe technieken lag in cribs. Dit waren stukjes cijfertekst waarvan men de betekenis zo goed als zeker kon raden, later zou men zulke cryptologische aanvallen ook wel known-plaintext attack (KPA) noemen. Stereotype berichten, zoals weerberichten, waren dan ook van groot belang. Het was Alan Turing, een Britse wiskundige, die de Bombe ontwikkelde. Dit was de Britse tegenhanger van de Bomba, die in staat was veel algemenere cribs te gebruiken dan de vercijferde berichtsleutels. Net zoals Rejewski zocht Turing naar een methode om het probleem van de rotors het stekkerbord te scheiden. Deze methode berustte op het vinden van lussen, ook wel menus genoemd.
Fig. 15 Alan Turing
26 | c r y p t o g r a f i e
Voorbeeld 1. Stel we hebben een crib gevonden in een Duits weerbericht voor het woord wetter (weer) Enimga-instelling
S
S+1 S+2 S+3 S+4 S+5
Gegiste klare tekst
W
E
T
T
E
R
Cijfertekst
E
T
J
W
P
X
Op het eerste zicht lijkt men hier niet veel mee te bekomen, maar dankzij zulke lussen kan men het probleem van de scramblers scheiden van dat met het stekkerbord. Het in te geven (sterk vereenvoudigde) menu ziet er als volgt uit.
J
3
W
1
4
2
E
5
P
T
2. Als we een W vercijferen met een enigmatoestel gaat deze eerst door het stekkerbord en wordt daar (eventueel) vervangen om zo verder te gaan naar de scramblers. De output van deze scramblers moet ook weer door het stekkerbord. De output van de eerste ronde is een E. 3. De volgende letter die we willen vercijferen is dezelfde als het resultaat van de vorige, een E. Deze moet ook weer eerst door het stekkerbord alvorens door de scramblers te gaan. Het stekkerbord is een statische instelling, hieruit kunnen we afleiden dat de output van de scramblers in de eerste ronde gelijk is aan de input van de scramblers in de tweede ronde (die weliswaar één plaats zijn doorgedraaid). We kunnen dus de output van de eerste scramblerreeks rechtstreeks verbinden met de input van de tweede scramblerreeks. 4. Als we dit doen voor de hele lus hoeven we geen enkele keer meer door het stekkerbord. Het creëren van een elektrisch circuit met ook een gloeilamp gaf duidelijk aan wanneer de juiste rotorpositie gevonden was.
27 | c r y p t o g r a f i e
2.3 Het Vernam-cijfer Het Vernam-cijfer, of ook wel OTP (One-time path) genoemd, is het enige cijfer dat met zekerheid onbreekbaar is. In 1917 is het ontwikkeld door Gilbert Vernam om telexverkeer te versleutelen (een elektronische variant, en opvolger, van de telegraaf). Het principe is zeer eenvoudig, maar niet eenvoudig toe te passen. Analoog aan de Rot-n versleuteling wordt iedere letter gesubstitueerd, met het enige verschil dat er voor iedere te versleutelen letter ook een aparte willekeurige instelling en dus ‘sleutel’-letter nodig is. Op die manier kan een letter nooit op eenzelfde manier gecodeerd worden. Het probleem zit opnieuw, net zoals bij de verdelen van de Enigma-beginstanden, verscholen in de sleuteluitwisseling. Bij het Vernam-cijfer is dit probleem echter nog veel groter aangezien beide partijen moeten beschikken over gigantische sleutelboeken omdat de sleutel altijd even lang is als het bericht zelf. Ook bestaat er een risico dat de sleutelband niet volledig willekeurig is en hierin een patroon herkend kan worden.
Voorbeeld 1. 2. 3. 4.
We willen de zin ‘lorem ipsum dolor sit amet’ versleutelen. De even lange sleutel is ‘abcdefghijklmnopqrstuv’ ‘l’ wordt Rot1 gecodeerd tot ‘m’, ‘o’ Rot2 als ‘q’, enz. De cijfertekst is nu ‘mquirowadwoaycgizltgzp’.
Bits, Bytes and Charsets Aangezien de telex een elektronische machine was werkte deze niet met letters, noch met morsecodes zoals de telegraaf, maar met bits7. Bij de oorspronkelijke telexcode werd iedere letters voorgesteld door een 5-bits code. Er waren dus 25 of 32 mogelijke karakters 8 . Tegenwoordig werkt alle digitale apparatuur met reeksen van 8 bits, een byte. Dit zijn nu de kleinst mogelijke pakketjes met zinvolle informatie. Hier zijn er 28 of 256 mogelijke karakters. Er zijn verschillende tekensets (charsets) vastgelegd die elk karakter omzetten naar een byte. Enkele bekende voorbeelden zijn ASCII (American Standard Code for Information Interchange) en UTF-8 (8-bit Unicode Transformation Format) Als we de encryptie van het Vernam-cijfer nu binair beschouwen kunnen we de encryptie weergeven door een eenvoudige modulo 2-optelling. đ??¸(đ?‘Ľ) ≥ đ?‘Ľ + đ?‘˜(đ?‘šđ?‘œđ?‘‘ 2) Hierin is x een bit van de te versleutelen tekst en k de overeenkomstige bit van de sleutel. Door middel van ĂŠĂŠn logische operator ⊕ kan dit geschreven worden als cijfertekst = platte tekst ⊕ sleutel.
7
Bit is een samentrekking van de woorden binary en digit, een binair cijfer dus. Het is de kleinste eenheid van informatie en wordt voorgesteld door de waarden 0 of 1. 8 Dit zijn letters, cijfers, leestekens of andere symbolen.
28 | c r y p t o g r a f i e
⊕ of de XOR-poort In de algebra definieert men deze bewerking ook nog als de XOR-poort, ook wel Exclusieve-OR of EXOF-poort genoemd. Dit is een Booleaanse operator die vergelijkbaar is met en (∧), of (∨), of bijvoorbeeld niet (¬). De poort heeft twee ingangen en 1 uitgang. De logische toestand van de uitgang is 1 als één van de ingangen 1 is maar niet beide. Zo geeft de input van 0 en 1 een 1 als output en de input van twee keer 0 of 1 de output 0. Q = P1 ⊕ P2 = P1 ⋅ P2 + P1 ⋅ P2 De schematische schrijfwijze elektronische XOR-poort kan ook geschreven worden als een combinatie waarbij het ieder signaal eerst door een logische EN-poort wordt gestuurd samen met de inverse van de het andere signaal en het resultaat van deze twee EN-poorten door een OF-poort worden gestuurd.
=
2.3.1 Het Lorenzcijfer Tijdens de Tweede Wereldoorlog werd de Enigma enkel gebruikt om militaire boodschappen op het veld door te sturen. Voor gevoeligere informatie, zoals bijvoorbeeld de correspondentie tussen generaals over de militaire strategieën of politieke berichten tussen Hitler en zijn entourage, werd het Vernam-cijfer gebruikt. De Lorenz-machine was ook een rotormachine, en diende om de willekeurige sleutel te generen omdat het verdelen van zo’n sleutels onbegonnen werk was, zeker tijdens een oorlog. Natuurlijk moest de machine dezelfde sleutel zowel bij zender als ontvanger generen, de rij is dus niet volledig willekeurig maar pseudowillekeurig. Opnieuw ging men in Bletchley Park ijverig op zoek naar een kwetsbaarheid in het systeem. Dankzij eenzelfde onderschept bericht dat twee keer met dezelfde instellingen gedoceerd werd, maar de tweede keer 500 tekens korter was door het gebruik van afkortingen, wist men de werking van de Lorenz-machine te achterhalen. Het kraken van de beginstanden van de Lorenz-machine was nog steeds een zware taak en gebeurde niet langer handmatig of mechanisch. Om de code met brute kracht te kraken had men een veel efficiëntere machine nodig, een elektronische. In 1943 werd de Colossus, een machine met meer dan 1500 elektronenbuizen in gebruik genomen. Deze machine wordt beschouwd als de allereerste computer. Toch heeft hij deze roem pas verkregen eind jaren ’70, tot dan was zijn bestaan een goed bewaard geheim gebleven en werd de ENIAC (Electronic Numerical Integrator And Computer) uit 1946 van de Amerikanen als de eerste elektronische computer beschouwd. Ook wordt Charles Babbage, de persoon die veel vroeger het Vigenèrecijfer brak, genoemd als grondlegger voor de huidige computer. Hij had geen elektronische, maar een mechanisme machine, de Difference Engine, ontworpen die verschillende parallellen vertoont met de latere computers.
29 | c r y p t o g r a f i e
3 Moderne cryptografie Na de Tweede Wereldoorlog kwam de cryptografie in een stroomversnelling. Door de steeds toenemende rekenkracht van de computers werden bestaande cijfers alsmaar zwakker. Zo kon het principe van de enigma geëmuleerd worden op een computer die dan in een mum van tijd de juiste sleutel kon achterhalen. Er was dringend nood aan een totaal andere methode van coderen, een cijfer dat niet de letters codeerde maar de onderliggende bits versleutelde en hiervoor gebruikmaakte van de rekenkracht van de computers.
3.1 Lucifer (DES) In de jaren ‘60 ontstonden verschillende systemen die allemaal op een andere manier werkten. Deze elektronischte spraakverwarring werd in 1973 door het NBS (National Bureau of Standards) verholpen door het instellen van één officiële encryptiemethode. De meest geschikte kandidaat voor deze standaard was een IBM-product dat de naam Lucifer droeg. Lucifer was een cijfer ontworpen door Horst Feistel, die het revolutionaire idee had om de te versleutelen tekst op te delen in blokken, waarop verscheidene malen dezelfde bewerking werd gedaan. Elke herhaling wordt een ronde genoemd. De manier waarop deze rondes elkaar opvolgen is bij verschillende algoritmes gelijk gebleven en heten dan ook Feistel-cijfers (Feistel-ciphers). Lucifer kent een blokgrootte van 64-bits en doorgaat 16 ronden.
Blok- en Stroomcijfers Bij stroomcijfers, wordt klare tekst bit-per-bit in cijfertekst omgezet. Praktisch alle handcijfers, maar ook de Enigma en het Vernam-cijfer, zijn stroomcijfers. Een bekend hedendaags voorbeeld is RC4, dat echter steeds minder en minder gebruikt wordt door enkele zwakheden in het ontwerp. Bij blokcijfers wordt de klare tekst opgedeeld in blokken met een vaste bit-grootte. Deze worden dan ieder apart versleuteld. Het is niet veilig ieder blok met dezelfde sleutel te vercijferen, zoals bijvoorbeeld bij Electronic Code Book (ECB) gebeurt. Daarom wordt er meestal een andere modus operandi (mode of operation) gebruikt waarbij er een initialisatievector (IV) nodig is en hangt de encryptie van ieder nieuw blok af van het resultaat van het vorige. Er wordt als het ware één lange ketting gecreëerd. Van deze methode bestaan er verschillende varianten zoals Cipher Block Chaining (CBC), Cipher Feedback Mode (CFB) of Output Feedback Mode (OFB) De NSA, of National Security Agency, was echter niet te vinden voor een encryptiestandaard die ze zelf niet konden breken. Zij lobbyden voor een beperking van het aantal mogelijke sleutels. Ook in het verleden had de NSA het onderzoek van Feistel bij het ontwikkelen van Lucifer al meerdere malen laten stil leggen of verhinderd. Uiteindelijk werd besloten de limiet in te stellen op een maximum sleutellengte van 56 bits (256 ≈ 7 ⋅ 1016 sleutels). Lucifer werd officieel overgenomen en in 1977 gepubliceerd als DES, Data Encryption Standard, die vanaf dan als cryptografische standaard gold.
30 | c r y p t o g r a f i e
3.1.1 Triple-DES (3DES) Voor een zeer lange tijd bood DES meer dan voldoende veiligheid. Maar vanaf de jaren 90 werden er steeds meer vragen gesteld over de mogelijkheid om de sleutel met pure rekenkracht (Brute-force attack) te kraken. DES is in zijn structuur dan ook een zeer sterk algoritme maar werd in zijn sterkte beperkt door de geringe sleutellengte opgelegd door de NSA. Het duurde echter tot in 1998 vooraleer er een realistische, en succesvolle, aanval werd uitgevoerd. Men zocht heil in andere algoritmes, maar dit bleek geen eenvoudige zoektocht te worden, er waren namelijk niet veel alternatieven voor handen. IDEA (International Data Encryption Algorithm) werd populairder, maar kende geen bescherming tegen structurele cryptoanalyse zoals differentiaal of lineaire cryptoanalyse, waar DES deze wel bood. Uiteindelijk werd een variant van DES met een drievoudige sleutellengte bedacht: Triple-DES of 3DES. Deze houdt in dat het DES algoritme drie maal wordt herhaald, en dit drie keer met een andere sleutel. Als we deze sleutels dan optellen komen we op een totale sleutellengte van 168 bits (2168 ≈ 4 ⋅ 1050 sleutels). In de praktijk is 3DES slechts dubbel zo sterkt dan DES omdat een nieuw soort aanval die het aantal sleutels beduidend reduceert. Door deze meet-in-the-middle aanval is er dan ook niet gekozen voor 2DES maar meteen voor 3DES. Een 3DES-sleutel van 168 bits heeft dus maar een sterkte van 112 bits.
3.2 Rijndael (AES) De officiële standaard in de jaren ’90 was echter nog steeds DES en om te voorkomen dat er meerdere, concurrerende, algoritmes zouden opduiken organiseerde het NIST (National Institute of Standards and Technology) in 1997 een wedstrijd voor een nieuwe standaard. Er waren verschillende inzendingen, onder andere van grote en befaamde bedrijven zoals IBM en RSA Security. Toch was het de underdog die in 2000 won: het algoritme Rijndael van de Vlamingen Vincent Rijmen en Joan Daemen uit Leuven. Op vlak van veiligheid, snelheid, eenvoud en implementatiegemak scoorde Rijndael beter dan bijvoorbeeld Serpent of TwoFish. Zo was het algoritme zelfs 5x sneller dan het oude 3DES en kon het eenvoudig hardwarematig in computerchips worden verwerkt. En net zoals Lucifer kreeg ook Rijndael een nieuwe naam toegekend: AES of Advanced Encryption Standard.
Fig. 16 Vincent Rijmen en Joan Daemen
AES is eigenlijk een subset van het Rijndael-algoritme waarbij de blokgrootte 128-bits is en de sleutel 128, 192 of 256 bits groot is. Bij Rijndael zelf konden deze allebei waarden aannemen die een veelvoud van 32 zijn, met een maximum van 256. Het aantal te doorlopen ronden hangt af van deze twee waarden. In tegenstelling tot DES is AES geen Feistel-netwerk, waarbij het datablok in twee wordt gesplitst en per ronde de bewerkingen slecht op de helft wordt gedaan. Bij AES ondergaat het hele blok data iedere ronde een reeks bewerkingen. 128-bits 128-bits 10 192-bits 12 256-bits 14
192-bits 12 12 14
256-bits 14 14 14
Tabel 6 Aantal ronden in functie van de sleutel- en blokgrootte
31 | c r y p t o g r a f i e
3.2.1 Wiskundige achtergrond Om de werking van de S-box binnen AES te begrijpen is het noodzakelijk de wiskundige achtergrond te kennen. Alle berekeningen worden op het byte-niveau uitgevoerd en hierbij moet rekening worden gehouden met de maximale grootte van een byte: 28 = 256 . Rekenen in modulo 256 lijkt een logische keuze, maar is echter niet toepasbaar omdat deze bewerking niet inverteerbaar is. En dit is noodzakelijk om terug te kunnen ontcijferen. Daarom gebeuren alle bewerkingen binnen het eindig veld (of lichaam9), ook wel een Galois veld genoemd, GF (28 ). đ?”˝28 = {đ?‘Ž7 đ?‘Ľ 7 + đ?‘Ž6 đ?‘Ľ 6 + đ?‘Ž5 đ?‘Ľ 5 + đ?‘Ž4 đ?‘Ľ 4 + đ?‘Ž3 đ?‘Ľ 3 + đ?‘Ž2 đ?‘Ľ 2 + đ?‘Ž1 đ?‘Ľ + đ?‘Ž0 : đ?‘Žđ?‘– ∈ {0,1}}
Eindig veld Een commutatieve ring đ?‘…+,â‹… is een verzameling met twee gedefinieerde operatoren (de optelling en de vermenigvuldiging) met volgende eigenschappen: 1. đ?‘… is een commutatieve (of Abelse) groep voor de optelling a) Inwendig: ∀đ?‘Ž, đ?‘? ∈ đ?‘…: đ?‘Ž + đ?‘? ∈ đ?‘… b) Associatief: ∀đ?‘Ž, đ?‘?, đ?‘? ∈ đ?‘…: đ?‘Ž + (đ?‘? + đ?‘?) = (đ?‘Ž + đ?‘?) + đ?‘? c) 0 is het neutraal element: ∀đ?‘Ž ∈ đ?‘…: đ?‘Ž + 0 = đ?‘Ž = 0 + đ?‘Ž d) Het tegengestelde is het invers element: ∃! − đ?‘Ž, ∀đ?‘Ž ∈ đ?‘…: đ?‘Ž + (−đ?‘Ž) = 0 = đ?‘Ž + (−đ?‘Ž) e) Commutatief: ∀đ?‘Ž, đ?‘? ∈ đ?‘…: đ?‘Ž + đ?‘? = đ?‘? + đ?‘Ž 2. Volgende eigenschappen gelden voor de vermenigvuldiging a) Inwendig: ∀đ?‘Ž, đ?‘? ∈ đ?‘…: đ?‘Ž â‹… đ?‘? ∈ đ?‘… b) Associatief: ∀đ?‘Ž, đ?‘?, đ?‘? ∈ đ?‘…: đ?‘Ž â‹… (đ?‘? â‹… đ?‘?) = (đ?‘Ž â‹… đ?‘?) â‹… đ?‘? 3. Distributiviteit: ∀đ?‘Ž, đ?‘?, đ?‘? ∈ đ?‘…: a â‹… (b + c) = a â‹… b + a â‹… c en (a + b) â‹… c = a â‹… c + a â‹… b Deze commutatieve ring is nu ook een veld indien đ?‘…0 is een (volwaardige) commutatieve groep is voor de vermenigvuldiging en indien er geen nuldelers zijn. 4. đ?‘…0 is een commutatieve groep voor de vermenigvuldiging a) Inwendig: ∀đ?‘Ž, đ?‘? ∈ đ?‘…: đ?‘Ž â‹… đ?‘? ∈ đ?‘… b) Associatief: ∀đ?‘Ž, đ?‘?, đ?‘? ∈ đ?‘…: đ?‘Ž â‹… (đ?‘? â‹… đ?‘?) = (đ?‘Ž â‹… đ?‘?) â‹… đ?‘? c) 1 is het neutraal element: ∀đ?‘Ž ∈ đ?‘…: đ?‘Ž â‹… 1 = đ?‘Ž = 1 â‹… đ?‘Ž 1
1
d) Het omgekeerde is het invers element: ∀đ?‘Ž ∈ đ?‘…: đ?‘Ž â‹… đ?‘Ž = 1 = đ?‘Ž â‹… đ?‘Ž
e) Commutatief: ∀đ?‘Ž, đ?‘? ∈ đ?‘…: đ?‘Ž â‹… đ?‘? = đ?‘? â‹… đ?‘Ž 5. ∀đ?‘Ž, đ?‘? ∈ đ?‘…: đ?‘Ž â‹… đ?‘? = 0 ⇒ đ?‘Ž = 0 ∨ đ?‘? = 0
En indien dit veld op zijn beurt een eindig aantal elementen bevat spreekt men over een eindig veld. In dit veld GF (28 ) wordt een byte voorgesteld door een veelterm met binaire coĂŤfficiĂŤnten. En omdat een byte acht bits geeft zijn de veeltermen altijd van de 7de graad.
Voorbeeld 1010 1101 → x 7 + x 5 + x 3 + x 2 + 1
9
Dit is de term die men in Nederland gebruikt
32 | c r y p t o g r a f i e
Het optellen van twee termen is de som van de coÍfficiÍnten modulo 2. Dit komt dus overeen met de logische operator ⊕. Als later de bewerking + geschreven staat wordt er dus eigenlijk ⊕ bedoeld.
Voorbeeld 0110 1100 + 0010 1111 = 0100 0011 (đ?‘Ľ 6 + đ?‘Ľ 5 + đ?‘Ľ 3 + đ?‘Ľ 2 ) + (đ?‘Ľ 5 + đ?‘Ľ 3 + đ?‘Ľ 2 + đ?‘Ľ + 1) = đ?‘Ľ 6 + đ?‘Ľ + 1 Wilt men in dit eindig veld twee termen vermenigvuldigen met elkaar, dan moet men het product ervan modulo 10 đ?‘Ľ 8 + đ?‘Ľ 4 + đ?‘Ľ 3 + đ?‘Ľ 1 + 1 (100011011) nemen. Dit is een specifiek gekozen onontbindbare veelterm waardoor gedeeld moet worden en de rest het product geeft.
Voorbeeld 0110 1100 â‹… 0010 1111 = 1111 1110 0100 đ?‘šđ?‘œđ?‘‘ 1 0001 1011 (đ?‘Ľ 6 + đ?‘Ľ 5 + đ?‘Ľ 3 + đ?‘Ľ 2 ) â‹… (đ?‘Ľ 5 + đ?‘Ľ 3 + đ?‘Ľ 2 + đ?‘Ľ + 1) = (đ?‘Ľ 11 + đ?‘Ľ 10 + đ?‘Ľ 9 + đ?‘Ľ 8 + đ?‘Ľ 7 + đ?‘Ľ 6 + đ?‘Ľ 5 + đ?‘Ľ 2 ) đ?‘šđ?‘œđ?‘‘ (đ?‘Ľ 8 + đ?‘Ľ 4 + đ?‘Ľ 3 + đ?‘Ľ + 1) Deze modulaire bewerking is eenvoudiger met binaire getallen uit te rekenen 1111 1110 0100
1 0001 1011
⊕ 1000 1100 1 111 0011 0100 100 0110 11 11 0101 1000 ⊕ 10 0011 011 1 0110 1110 ⊕ 1 0001 1011 111 0101 Het antwoord is dus 0111 0101 of � 6 + � 5 + � 4 + � 2 + 1 De belangrijkste, en cryptografisch interessantste, eigenschap van deze verzameling, specifiek voor een veld is de inverse voor de vermenigvuldiging. Deze kan gevonden worden door te vermenigvuldigen met ieder mogelijke veelterm tot het resultaat 1 is. Het proces van vermenigvuldiging kunnen we versnellen met logaritmen. Er kan ook aangetoond worden dat iedere mogelijke veelterm geschreven kan worden als een macht van (� + 1). (� + 1) = � + 1 (� + 1)2 = � 2 + 1 (� + 1)3 = � 3 + � 2 + � + 1 (� + 1)� = ⋯ We maken gebruik van de hoofdeigenschap van logaritmen om een product om te zetten in een som, dit is (zoals hierboven aangetoond) veel eenvoudiger dan vermenigvuldigen.
10
Voor de eenvoud en duidelijkheid wordt er vanaf hier soms het =-teken gebruikt in plaats van het ≥-teken.
33 | c r y p t o g r a f i e
log đ?‘Ľ+1 (đ?‘Ľ + 1)đ?‘› = đ?‘› De inverse veelterm đ??´(đ?‘Ľ)−1 is nu simpelweg de negatieve đ?‘™đ?‘œđ?‘”−1 van de veelterm đ??´(đ?‘Ľ) (đ??´(đ?‘Ľ) â‹… đ??´(đ?‘Ľ)−1 ) = 1 â&#x;š log đ?‘Ľ+1 (đ??´(đ?‘Ľ) â‹… đ??´(đ?‘Ľ)−1 ) = log đ?‘Ľ+1 1 â&#x;š log đ?‘Ľ+1 đ??´(đ?‘Ľ) + log đ?‘Ľ+1 đ??´(đ?‘Ľ)−1 = 0 â&#x;š log đ?‘Ľ+1 đ??´(đ?‘Ľ)−1 = −log đ?‘Ľ+1 đ??´(đ?‘Ľ) Indien we een logaritmetabel aanleggen van alle 255 11 getallen in dit veld versnelt dit het proces aanzienlijk.
Voorbeeld 0101 0011 â‹… 1100 1010 = 11 1111 0111 1110 đ?‘šđ?‘œđ?‘‘ 1 0001 1011 (đ?‘Ľ
13
+đ?‘Ľ
12
11
+đ?‘Ľ +đ?‘Ľ + 1)
10
(đ?‘Ľ 6 + đ?‘Ľ 4 + đ?‘Ľ + 1) â‹… (đ?‘Ľ 7 + đ?‘Ľ 6 + đ?‘Ľ 3 + đ?‘Ľ) = + đ?‘Ľ 9 + đ?‘Ľ 8 + đ?‘Ľ 6 + đ?‘Ľ 5 + đ?‘Ľ 4 + đ?‘Ľ 3 + đ?‘Ľ 2 + đ?‘Ľ) đ?‘šđ?‘œđ?‘‘ (đ?‘Ľ 8 + đ?‘Ľ 4 + đ?‘Ľ 3 + đ?‘Ľ
Deze modulaire bewerking is eenvoudiger met binaire getallen uit te rekenen 11 1111 0111 1110
1 0001 1011
⊕ 10 0011 001 1 1100 0001 1110 1 0001 1011 1101 1010 1110 ⊕ 1000 1101 1 101 0111 0110 ⊕ 100 0110 11 1 0001 1010 ⊕ 100 0110 11 1 Het antwoord is dus 1 , dit betekent dat (� 6 + � 4 + � + 1) ⋅ (� 7 + � 6 + � 3 + �) elkaars inverse zijn. Een andere wiskundige bewerking die gebruikt wordt is een affiene transformatie. Dit is een coÜrdinaten transformatie waarbij de meetkundige structuur (collineariteit van punten, evenwijdigheid ‌) volledig behouden wordt. Een affiene transformatie van een punt met coÜrdinaten (�1 , �2 , ‌ , �� ) in een n-dimensionale ruimte wordt als volgt weergegeven. �11 �1 �21 �2 [ ⋎ ]→[ ⋎ �� ��1
11
đ?‘Ž12 đ?‘Ž22 â‹Ž đ?‘Žđ?‘›2
â‹Ż â‹Ż â‹Ż
đ?‘Ž1đ?‘› đ?‘Ľ1 đ?‘?1 đ?‘Ž2đ?‘› đ?‘Ľ2 đ?‘?2 â‹Ž ]â‹…[ â‹Ž ]+[ â‹Ž ] đ?‘Ľđ?‘› đ?‘Žđ?‘›đ?‘š đ?‘?đ?‘›
De logaritme van 0 bestaat niet. Voor de inverse van 0 neemt men ook gewoon 0
34 | c r y p t o g r a f i e
3.2.2 Werking Het versleutelen van de data berust op drie grote basis ideeĂŤn: verwarring, verspreiding en zorgen dat de veiligheid enkel in de sleutel zit. Dit wil zeggen dat iedereen mag weten hoe het algoritme werkt en de sterkte alleen afhangt van de sleutel. In tegenstelling tot bijvoorbeeld een geheimschrift waarbij voor iedere letter een symbool gekozen is en het geheimschrift onthuld is eenmaal iemand weet hoe de codering werkt. Voor we de eerste volwaardige ronde op een blok kunnen toepassen moeten we eerst een initiĂŤle ronde (initial round) toepassen. Hierin wordt het data block geXORt met de eerste ronde sleutel, die gelijk is aan de hoofdsleutel.
đ?‘Ž00 đ?‘Ž10 [đ?‘Ž 20 đ?‘Ž30
đ?‘Ž01 đ?‘Ž11 đ?‘Ž21 đ?‘Ž31
đ?‘Ž02 đ?‘Ž12 đ?‘Ž22 đ?‘Ž32
đ?‘Ž03 đ?‘˜00 đ?‘Ž13 đ?‘˜10 đ?‘Ž23 ] ⨠[đ?‘˜20 đ?‘Ž33 đ?‘˜30
đ?‘˜01 đ?‘˜11 đ?‘˜21 đ?‘˜31
đ?‘˜02 đ?‘˜12 đ?‘˜22 đ?‘˜32
đ?‘Žâ€˛00 đ?‘˜03 đ?‘˜13 đ?‘Žâ€˛ ] = 10 đ?‘˜23 đ?‘Žâ€˛20 đ?‘˜33 [đ?‘Žâ€˛30
�′01 �′11 �′21 �′31
�′02 �′12 �′22 �′32
�′03 �′13 �′23 �′33 ]
Om het eenvoudig te houden beschouwen we enkel de 128-bits sleutels en blokken. We zullen deze telkens voorstellen als een 4x4-matrix waar ieder element een byte is. Een rij of kolom wordt ook wel een woord genoemd.
Stap 1: Bytesubstitutie (SubBytes) In de eerste stap van een ronde wordt het idee van verwarring of diffusie toegepast. Net zoals bij oude handcijfers komt dit overeen met substitutie. Om de inhoud van de tekst te verbergen wordt dus iedere byte door een andere byte vervangen. De vervangwaarde van deze byte zoekt men op in de SBox (substitutie-box). (Zie tabel 7)
đ?‘Ž00 đ?‘Ž10 [đ?‘Ž 20 đ?‘Ž30
đ?‘Ž01 đ?‘Ž11 đ?‘Ž21 đ?‘Ž31
đ?‘Ž02 đ?‘Ž12 đ?‘Ž22 đ?‘Ž32
đ?‘Ž03 đ?‘?00 đ?‘Ž13 Substitutie ( S−box) đ?‘?10 [ đ?‘Ž23 ] → đ?‘?20 đ?‘Ž33 đ?‘?30
đ?‘?01 đ?‘?11 đ?‘?21 đ?‘?31
đ?‘?02 đ?‘?12 đ?‘?22 đ?‘?32
đ?‘?03 đ?‘?13 ] đ?‘?23 đ?‘?33
Bij oude algoritmes zoals DES was deze statisch en vooraf vastgelegd, bij AES is deze variabel en berekenbaar via een wiskundige formule. Iedere waarde is de multiplicatieve inverse voor de vermenigvuldiging in het veld GF(28 ). Vervolgens wordt er de volgende affiene transformatie op uitgevoerd. 1 1 1 1 1 0 0 [0
0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0
0 0 0 1 1 1 1 1
1 0 0 0 1 1 1 1
1 1 0 0 0 1 1 1
1 1 1 0 0 0 1 1
1 đ?‘Ľ0 1 1 đ?‘Ľ1 1 1 đ?‘Ľ2 0 1 đ?‘Ľ3 0 â‹… đ?‘Ľ + 0 0 4 0 đ?‘Ľ5 1 0 đ?‘Ľ6 1 1] [đ?‘Ľ7 ] [1]
Deze stap beschermt het cijfer tegen lineaire cryptoanalyse door de lineariteit weg te nemen.
35 | c r y p t o g r a f i e
0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
0 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76 1 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0 2 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15 3 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75 4 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84 5 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf 6 d0 ef aa fb 43 4d 33 85 45 f9 2 7f 50 3c 9f a8 7 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2 8 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73 9 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db a e0 32 3a 0a 49 6 24 5c c2 d3 ac 62 91 95 e4 79 b e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08 c ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a d 70 3e b5 66 48 3 f6 0e 61 35 57 b9 86 c1 1d 9e e e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df f 8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16 Tabel 7 AES S-box: elke multiplicatieve inverse in GF (28) in hexadecimale weergave. (Lees eerst de rij, dan pas de kolom: 9a-1 is bijvoorbeeld b8)
Hexadecimaal De term is nog niet gevallen maar alle bytes kunnen ook hexadecimaal worden voorgesteld. In plaats van acht binaire tekens (0 of 1) worden de bytes voorgesteld door 2 hexadecimale tekens (0-10, a-f). Zo ÊÊn groepje van 4 bits wordt ook wel een nibble genoemd. Voorbeeld: 0101 1010 → 5A
0 1 2 3 4 5 6 7
0000 0001 0010 0011 0100 0101 0110 0111
8 9 A B C D E F
1000 1001 1010 1011 1100 1101 1110 1111
Stap 2: Rijrotatie(ShiftRows) Het tweede grote idee is verspreiding (confusie). Om dit te bekomen worden de bytes door elkaar gehaald, net zoals ook de letters bij de oeroude scytale verwisseld werden van plaats. De eerste rij wordt niet geroteerd. De tweede rij wordt ĂŠĂŠn plaats naar links geroteerd, d.w.z. dat alle elementen ĂŠĂŠn plaats naar links verschuiven en het meest linkse element komt helemaal rechts te staan. De derde rij roteert twee plaatsen en de vierde rij drie plaatsen.
đ?‘?00 đ?‘? [ 10 đ?‘?20 đ?‘?30
đ?‘?01 đ?‘?11 đ?‘?21 đ?‘?31
đ?‘?02 đ?‘?12 đ?‘?22 đ?‘?32
đ?‘?03 đ?‘?00 đ?‘?13 đ?‘? ] ⇒ [ 11 đ?‘?23 đ?‘?22 đ?‘?33 đ?‘?33
đ?‘?01 đ?‘?12 đ?‘?23 đ?‘?30
đ?‘?02 đ?‘?13 đ?‘?20 đ?‘?31
đ?‘?03 đ?‘?10 ] đ?‘?21 đ?‘?32
36 | c r y p t o g r a f i e
đ?’ƒđ?&#x;Žđ?&#x;Ž đ?’ƒđ?&#x;Žđ?&#x;? đ?’ƒđ?&#x;Žđ?&#x;? đ?’ƒđ?&#x;Žđ?&#x;‘
đ?‘?00 đ?‘?01 đ?‘?02 đ?‘?03
đ?’ƒđ?&#x;?đ?&#x;Ž đ?‘?11 đ?‘?12 đ?‘?13
đ?’ƒđ?&#x;Žđ?&#x;Ž đ?’ƒđ?&#x;Žđ?&#x;? đ?’ƒđ?&#x;Žđ?&#x;? đ?’ƒđ?&#x;Žđ?&#x;‘
đ?‘?10 đ?‘?11 đ?‘?12 đ?‘?13
đ?’ƒđ?&#x;?đ?&#x;Ž đ?‘?21 đ?‘?22 đ?‘?23
đ?’ƒđ?&#x;?đ?&#x;? đ?‘?12 đ?‘?13 đ?‘?10
đ?‘?20 đ?‘?21 đ?‘?22 đ?‘?23
đ?’ƒđ?&#x;‘đ?&#x;Ž đ?‘?31 đ?‘?32 đ?‘?33
đ?’ƒđ?&#x;?đ?&#x;? đ?‘?23 đ?‘?20 đ?‘?21
đ?‘?30 đ?‘?31 đ?‘?32 đ?‘?33
đ?’ƒđ?&#x;‘đ?&#x;‘ đ?‘?30 đ?‘?31 đ?‘?32
Fig. 17 Visualisatie van de rijrotaties
Merk op dat de rijen geroteerd worden maar de matrix echter per kolom wordt uitgelezen. Op byteniveau is deze bewerking dan ook minder eenvoudig dan dat het hier wordt voorgesteld.
Stap 3: Kolomvermenigvuldiging (MixColumns) In de derde stap wordt er gezorgd voor nog eens extra verspreiding van gegevens (confusie). Deze keer kolom- in plaats van rijgewijs. Iedere kolom wordt apart vermenigvuldigd met een speciaal gekozen matrix. (Zie hieronder de vermenigvuldiging van de eerste kolom)
02 01 [ 01 03
03 02 01 01
01 03 02 01
đ?‘?00 đ?‘?00 01 đ?‘?10 đ?‘? 01 ] â‹… [ 10 ] = [đ?‘? ] đ?‘?20 03 20 đ?‘?30 đ?‘?30 02
Als we dit uitschrijven voor de eerste byte đ?‘?00 staat er
đ?‘?00 â‹… 02 + đ?‘?00 â‹… 03 + đ?‘?00 â‹… 01 + đ?‘?00 â‹… 01 = đ?‘?00 Deze operatie wordt gedaan op elke kolom van de matrix. Wederom gebeuren de vermenigvuldigingen en optellingen van deze hexadecimale bytes (na een binaire omzetting) volgens het principe van het product en de som binnen het veld GF(28 ).
Stap 4: Sleuteltoevoeging In de vierde en laatste stap wordt de sleutel toegevoegd. Een algoritme dat met sleutels werkt heeft immers als voordeel dat de encryptiemethode niet geheim moet worden gehouden. De rondesleutel wordt simpelweg door middel van optelling (XOR) toegevoegd aan het cijferblok.
đ?‘?00 đ?‘?10 [đ?‘? 20 đ?‘?30
đ?‘?01 đ?‘?11 đ?‘?21 đ?‘?31
đ?‘?02 đ?‘?12 đ?‘?22 đ?‘?32
đ?‘?03 đ?‘˜00 đ?‘?13 đ?‘˜10 đ?‘?23 ] ⨠[đ?‘˜20 đ?‘?33 đ?‘˜30
đ?‘˜01 đ?‘˜11 đ?‘˜21 đ?‘˜31
đ?‘˜02 đ?‘˜12 đ?‘˜22 đ?‘˜32
đ?‘˜03 đ?‘‘00 đ?‘˜13 đ?‘‘ ] = [ 10 đ?‘˜23 đ?‘‘20 đ?‘˜33 đ?‘‘30
đ?‘‘01 đ?‘‘11 đ?‘‘21 đ?‘‘31
đ?‘‘02 đ?‘‘12 đ?‘‘22 đ?‘‘32
đ?‘‘03 đ?‘‘13 ] đ?‘‘23 đ?‘‘33
37 | c r y p t o g r a f i e
Key Expansion Het zou niet veilig zijn om voor iedere ronde dezelfde sleutel te gebruiken, daarom generen we uit de 128-bits originele sleutel meerdere 128-bits ronde-sleutels. đ?‘˜0 đ?‘˜ [ 1 đ?‘˜2 đ?‘˜3
đ?‘˜4 đ?‘˜5 đ?‘˜6 đ?‘˜7
[�0
đ?‘˜8 đ?‘˜9 đ?‘˜10 đ?‘˜11 ⇓ đ?‘¤1 đ?‘¤2
đ?‘˜12 đ?‘˜13 ] đ?‘˜14 đ?‘˜15 đ?‘¤3 ]
In totaal worden er nog 40 extra sleutel-kolommen gecreĂŤerd, vier voor iedere ronde. Onderstaand schema toont aan hoe deze woorden ontstaan.
đ?’˜đ?&#x;Ž đ?’˜đ?&#x;? đ?’˜đ?&#x;? đ?’˜ đ?&#x;‘
g
đ?’˜đ?&#x;’ đ?’˜đ?&#x;“ đ?’˜đ?&#x;” đ?’˜đ?&#x;• đ?‘¤4 is de moeilijkste stap en wordt gevormd door de operatie XOR tussen đ?‘¤0 en đ?‘”(đ?‘¤3 ). De functie g bestaat uit drie stappen: 1. De vier bytes worden eerst links geroteerd, d.w.z. dat dat de bovenste byte de onderste wordt en de andere drie ĂŠĂŠn plaatsje naar boven opschuiven. đ?‘˜12 đ?‘˜13 đ?‘˜ đ?‘˜ [ 13 ] ⇒ [ 14 ] đ?‘˜14 đ?‘˜15 đ?‘˜15 đ?‘˜12 2. Iedere byte wordt nu gesubstitueerd met de waarde uit de S-box. 3. XOR iedere byte met de rondeconstante. đ?‘…đ?‘?đ?‘œđ?‘›(đ?‘–) = [đ?‘Ľ đ?‘–−1 , 0000 0000, 0000 0000, 0000 0000] Deze wordt op dezelfde manier uitgerekend in het veld GF(28 ). In de eerste ronde đ?‘– = 1 moeten we XOR toepassen met [01, 00, 00, 00] (hexadecimaal) of [0000 0001, 0000 0000, 0000 0000, 0000 0000] (binair). đ?‘¤5 , đ?‘¤6 en đ?‘¤7 ontstaan simpelweg uit de XOR tussen het woord vier plaatsen eerder en het voorgaande woord. De sleutel voor de eerste ronde is nu gemaakt. De sleutels voor verdere ronden ontstaan op een analoge manier. Dit soort ronde, bestaande uit vier stappen, wordt (voor deze blokgrootte) 10 keer herhaald, op deze manier is iedere bit van de te versleutelen tekst 100% afhankelijk van iedere bit van de sleutel. De laatste ronde wordt de kolomvermenigvuldiging (MixColumns) echter overgeslagen aangezien de veiligheid van deze bewerking toch pas in ene volgende ronde effect heeft.
38 | c r y p t o g r a f i e
4 Asymmetrische cryptografie Toen er in de jaren ’70 voor iedereen eindelijk een sterk cryptografisch systeem (DES) voor handen was bleef er echter een oeroud probleem over, de sleuteldistributie. Doorheen de hele geschiedenis zijn cryptografen geteisterd door dit probleem. Met hadnen in het haar vroeg men zich af ‘hoe krijg ik de geheime sleutel bij mijn correspondent?’ Het uitwisselen van de sleutel vormde het grootste risico voor een veilige communicatie en het was dus ook een kostelijke aangelegenheid voor bedrijven en overheden om geheime sleutels te verspreiden. De Amerikaanse overheid had zelfs een speciale eenheid binnen het ministerie van Defensie, COMSEC of Communications Security, dat de bevoegdheid droeg om fysieke dragers van geheime sleutels veilig over heel de wereld rond te brengen. Ook banken hadden een duur en sterk beveiligd koeriersnetwerk uitgebouwd. Toch is dit geen nieuw probleem, ook Nazi-Duitsland ondervond deze moeilijkheden bij het verspreiden van de boeken met dagsleutels voor de Enigmamachine en ook de distributie van oude Vigenèresleutelwoorden moest persoonlijk of door betrouwbare koerier gebeuren.
4.1 Diffie-Hellman-sleuteluitwisseling In de jaren ’70 was het axioma dat stelt dat een veilige versleutelde communicatie onmogelijk is zonder een uitwisseling van sleutels, algemeen aanvaard. Toch zochten Whithfield Diffie en Martin Hellman, en wat later ook Ralph Merkle, onverbiddelijk verder naar een oplossing voor de sleuteldistributie. De onderzoekers vergeleken het probleem met het versturen van een kist met hangsloten. Stel bijvoorbeeld Alice wilt een geheime boodschap naar Bob sturen zonder dat Eve 12 de inhoud hiervan te weten komt. Alice ‘versleutelt’ de boodschap door deze in een kist te doen met een hangslot en deze op te sturen naar Bob. Zo kan Eve de kist niet openen. Bob Fig. 18 Ralph Merkle, Martin Hellman and kan deze kist echter ook niet open zonder de sleutel van Whitfield Diffie (1977) Alice. Bob hangt op zijn beurt een tweede hangslot aan de kist en stuurt deze terug naar Alice, zij verwijdert haar eigen hangslot en stuurt de kist terug naar Bob. Eve kan de kist nog steeds niet openen aangezien hij de sleutel van Bob niet heeft. Als de kist eenmaal terug bij Bob is haalt hij zijn eigen slot er van af en heeft hij toegang tot de geheime boodschap. Met de bestaande encryptiealgoritmes is dit echter niet mogelijk, wanneer men een tekst twee maal versleutelt moet men ze in omgekeerde volgorde terug ontcijferen. Met andere woorden: de sleutel die eerst gebruikt is om te versleutelen moet men als laatste gebruiken om terug te ontsleutelen. In hun zoektocht naar een systeem voor sleuteluitwisseling focuste zich men vooral eenwegsfuncties, dit zijn bewerkingen die slechts in een richting uitgevoerd kunnen worden. We kunnen dit opnieuw vergelijken met een dagdagelijks voorbeeld: Alice, Bob en Eve hebben elk een pot van 3 liter met 1 liter gele verf. Alice maakt een mengeling van de liter gele verf en evenveel van haar geheime kleur blauw. Er zit nu 2 liter groene verf in de pot. Ook Bob doet zijn geheime kleur, rood, in de pot en heeft nu een pot met 2 liter oranje verf. Ze sturen hun pot naar elkaar op. Eve kan dus enkel de gemende
12
De namen Alice, Bob en Eve zijn stereotype namen die men terugvindt in ieder bron over cryptografie
39 | c r y p t o g r a f i e
kleuren groen en oranje onderscheppen. Zelf doen Alice en Bob een liter van hun geheime kleur in de ontvangen pot bij, beiden hebben ze nu een pot met dezelfde geheime kleur. Eve kan nooit dezelfde kleur maken aangezien zij niet weet welke geheime kleuren gebruikt zijn om de publieke gemengde kleuren te vormen.
4.1.1 Werking De eenrichtingsfunctie waar Hellman zich vooral op focuste was modulair rekenen. En deze obsessie wierp na vele maanden intensief denkwerk zijn vruchten af. 1. Eerst spreken Alice en Bob twee publieke getallen đ?’‘ en đ?’ˆ af. (đ?‘? en đ?‘” zijn priemgetallen) 2. Daarna kiezen ze ieder een geheim getal đ?’‚ en đ?’ƒ. 3. Op deze getallen passen ze de modulaire functie toe en sturen ze naar elkaar door. Alice: đ?‘¨ = đ?’ˆđ?’‚ đ?’Žđ?’?đ?’… đ?’‘ en Bob: đ?‘Š = đ?’ˆđ?’ƒ đ?’Žđ?’?đ?’… đ?’‘ 4. Alice en Bob nemen elkaars uitkomst (đ??´ en đ??ľ) en rekenen hiermee de sleutel đ??ž uit. Alice: đ?‘˛ = đ?‘Šđ?’‚ đ?’Žđ?’?đ?’… đ?’‘ en Bob: đ?‘˛ = đ?‘¨đ?’ƒ đ?’Žđ?’?đ?’… đ?’‘
Voorbeeld 1. Eerst spreken Alice en Bob twee publieke getallen 13 en 11 af. (beide priemgetallen) 2. Daarna kiezen ze ieder een geheim getal, respectievelijk 4 en 8. 3. Op deze getallen passen ze de modulaire functie toe en sturen ze naar elkaar door. Alice: đ??´ = 134 đ?‘šđ?‘œđ?‘‘ 11 = 5 en Bob: đ??ľ = 138 đ?‘šđ?‘œđ?‘‘ 11 = 3 4. Alice en Bob nemen elkaars uitkomst (đ??´ en đ??ľ) en rekenen hiermee de sleutel đ??ž uit. Alice: đ??ž = 34 đ?‘šđ?‘œđ?‘‘ 11 = 4 en Bob: đ??ž = 58 đ?‘šđ?‘œđ?‘‘ 11 = 4 5. Als bij wonder hebben Alice en Bob dezelfde geheime sleutel: đ??ž = 4 De enige getallen die Eve kent zijn p, g, A en B. Maar zonder đ?‘Ž en đ?‘? kan Eve nooit de geheime sleutel đ??ž afleiden. Bij deze kleine waarden zou Eve đ?‘Ž en đ?‘? nog kunnen raden, maar bij grotere getallen is dit onmogelijk. De wiskundige moeilijkheid is gebaseerd op het discrete-logaritme probleem. Een discreet logaritme heeft de vorm đ?‘Ś = đ?‘” đ?‘Ľ đ?‘šđ?‘œđ?‘‘ đ?‘?. Met p, g en y gegeven is het zeer moeilijk om x te berekenen. Het Diffie-Hellman-sleuteluitwisselingprotocol is zowaar de belangrijkste ontdekking in de geschiedenis van de cryptografie en ontkrachtte een van de leerstellingen van de cryptografie die eeuwen had bestaan. In 1976 publiceerde Diffie en Hellman een paper met dit uitwisselingsprotocol waar ze in 1977 ook een patent op kregen. Later opperde ze om het protocol te hernoemen naar DiffieHellman-Merkle-sleuteluitwisseling om ook de verdiensten van Merkle te erkennen.
4.2 RSA Het systeem van Diffie, Hellman en Merkle was een grote sprong vooruit in de ontwikkeling van sleuteluitwisseling maar echter niet volmaakt. Het protocol was inherent onhandig omdat wanneer Alice een bericht naar Bob wilt sturen, Bob ook beschikbaar moet zijn om samen een geheime sleutel te berekenen. In een wereld met internationale handen en berichtenverkeer, maar ook met verschillende tijdszones is dit alles behalve pragmatisch. Waar Hellman het systeem van zijn uitwisselingsprotocol verder uitwerkte, bekeek Diffie het probleem van de sleuteluitwisseling uit een andere invalshoek. Hij ging verder dan het uitwisselen van een geheime sleutel en bedacht een principe voor een nieuw soort cijfer, een cijfer waarin een zogenaamde asymmetrische sleutel was opgenomen. Dit in tegenstelling tot alle bestaande cijfers met symmetrische sleutels. 40 | c r y p t o g r a f i e
(A)symmetrische cryptografie Er bestaan twee soorten cryptografie: symmetrische en asymmetrische. Tot hier toe zijn er enkel nog maar symmetrische cijfers behandeld waarbij men eenzelfde sleutel gebruikt om een bericht zowel te versleutelen als te ontsleutelen. Bij asymmetrische cryptografie zijn er twee verschillende sleutels: een publieke sleutel om het bericht te versleutelen en een privé-sleutel om het bericht terug te ontsleutelen. Je correspondent kent alleen je publieke sleutel en de privé-sleutel blijft voor iedereen buiten jezelf geheim. Daarom noemt men asymmetrische cryptografie ook wel public-key encryptie Het grootste voordeel van een systeem met twee verschillende sleutels tegenover het Diffie-HellmanMerkle-sleuteluitwisselingprotocol is dat men niet eerst een geheime code overeen moet komen vooraleer men een bericht wilt versturen. Alice kan te allen tijde een bericht sturen naar Bob met zijn publieke sleutel en Bob kan dit op ieder moment lezen met zijn privé-sleutel, ze zijn niet langer van elkaar afhankelijk. Toch waren het niet Diffie, Hellman en Merkle die zulk asymmetrisch systeem ontdekt hebben maar wel Ron Rivest, Adi Shamir en Leonard Adleman in 1977 aan het MIT (Massachusetts Institute of Technology ). Het cijfer kreeg de naam RSA, naar de eerste letters van de achternamen van de drie wetenschappers. Het oorspronkelijke idee voor een naam was ARS, maar Adleman vond niet dat hij zoveel eer verdiende voor een ontdekking die hoofdzakelijk aan Ron Rivest toe te kennen was. Als compromis besloot men de R van Rivest als eerste letter in de afkorting te nemen.
Fig. 19 Ralph Ron Rivest, Adi Shamir en Leonard Adleman
Maar ook in Engeland stond, na het kraken van de Enigma, het cryptologisch onderzoek niet stil. Bij de GCHQ (Government Communications Headquarters) zocht men naar een oplossing voor het sleuteluitwisselingsprobleem. Het was de wetenschapper James H. Ellis die reed begin jaren ’70 bewijs vond voor het bestaan van wat hij noemde nonsecret-key encryptie, wat verwijst naar de publieke sleutel. Hiervoor had hij inspiratie opgedaan in een oud geheim project van Bell Telephone uit het einde van WOII. In dit project, Project C43, verzond men berichten openlijk over een telefoonlijn, maar zette de ontvanger ook ruis op deze lijn. Iedereen die deze lijn aftapte hoorde enkel de ruis, maar de ontvanger kon zijn eigen ruis wegfilteren en hield zo het bericht over. In tegenstelling tot zijn Amerikaanse tegenhangers had Ellis enkel aangetoond dat dergelijk systeem mogelijk was, maar had er geen uitgewerkt. Malcolm Williamson, een vriend en collega van Ellis, was geïntrigeerd door zijn ontdekking en ontwikkelde een protocol waarvan drie jaar later blijkt dat het identiek was aan dat van Diffie, Hellman en Merkle. Het was de wiskundige Clifford Cocks die in 1973, drie jaar voor Rivest, Shamir en Adleman, een systeem ontwikkelde gebaseerd op een eenwegsfuntie met grote priemgetallen. Zonder het te weten was het RSA algoritme dus ook al drie jaren eerder ontwikkeld, maar omdat deze informatie tot 1997 geheim gehouden werd door de GCHQ kregen Ellis, Williamson en Cocks nooit dezelfde naambekendheid als hun Amerikaanse tegenhangers.
41 | c r y p t o g r a f i e
4.2.1 Wiskundige achtergrond Om de werkingen van het RSA-algoritme te begrijpen moet men eerst de achterliggende wiskundige eigenschappen begrijpen. Deze zijn onder andere gebaseerd op het reeds besproken modulair rekenen, maar vooral op eigenschappen van priemgetallen binnen de getaltheorie.
Priemgetallen Een priemgetal is een natuurlijk getal groter dan 1 dat slechts deelbaar is door 1 en door zichzelf. Dit wil ook zeggen dat een priemgetal niet verder op te verdelen is in factoren. 2, 3, 5, 7, 11, 13, 17, 19, 23 en 29 zijn de eerste tien priemgetallen. Er zijn oneindig veel priemgetallen 13 en hun eigenschappen worden al sinds de oude Grieken bestudeerd. Er bestaat geen eenduidige manier of formule om priemgetallen te vinden. Wel bestaan er binnen de getaltheorie formules om (mogelijke) nieuwe priemgetallen te ontdekken (de Zeef van Eratosthenes, Mersennepriemgetallen ‌), modellen om het voorkomen te voorspellen (de priemgetalstelling en de Riemann-hypothese bijvoorbeeld) en priemgetaltests, die verifiĂŤren of een getal wel degelijk priem is. (Fermattest, Perfecte getallen‌) RSA maakt gebruik van de eigenschap dat het zeer moeilijk is om een semipriemgetal te ontbinden is. Een semipriemgetal is het product van twee priemgetallen. Grote semipriemgetallen worden ook wel RSA numbers genoemd. Een ander begrip uit de getaltheorie is de indicator of Euler’s totiĂŤntfunctie van een natuurlijk getal đ?‘›. Dit is een formule die het aantal natuurlijke getallen kleiner dan đ?‘› en copriem met đ?‘› weergeeft. Twee getallen đ?‘Ž en đ?‘? zijn copriem (relatief priem) als ze onderling ondeelbaar zijn, d.w.z. dat hun đ?‘”đ?‘”đ?‘‘(đ?‘Ž, đ?‘?)14 gelijk moet zijn aan 1.
TotiĂŤntfunctie đ?&#x153;&#x2018;(đ?&#x2018;&#x203A;) De indicator of het totiĂŤnt đ?&#x153;&#x2018;(đ?&#x2018;&#x203A;) = #{đ?&#x2018;Ľ â&#x2C6;&#x2C6; â&#x201E;&#x2022;0 |đ?&#x2018;Ľ < đ?&#x2018;&#x203A; đ?&#x2018;&#x2019;đ?&#x2018;&#x203A; đ?&#x2018;&#x201D;đ?&#x2018;&#x201D;đ?&#x2018;&#x2018;(đ?&#x2018;Ľ, đ?&#x2018;&#x203A;) = 1} ď&#x201A;§ Indien đ?&#x2018;&#x203A; een priemgetal is, dan is đ??&#x2039;(đ?&#x2019;&#x2018;) = (đ??Š â&#x2C6;&#x2019; đ?&#x;?) ď&#x201A;§ Indien đ?&#x2018;&#x203A; een priemgetal is, dan is đ??&#x2039;(đ?&#x2019;&#x2018;đ?&#x2019;&#x152; ) = đ?&#x2019;&#x2018;đ?&#x2019;&#x152;â&#x2C6;&#x2019;đ?&#x;? (đ??Š â&#x2C6;&#x2019; đ?&#x;?) ď&#x201A;§ Indien đ?&#x2018;&#x203A; geen priemgetal, dan is
đ?&#x2019;&#x201C;
đ??&#x2039;(đ?&#x2019;?) = đ?&#x2019;? â&#x2C6;? (đ?&#x;? â&#x2C6;&#x2019; đ?&#x2019;&#x160;=đ?&#x;?
đ?&#x;? ) đ?&#x2019;&#x2018;đ?&#x2019;&#x160;
Voorbeeld đ?&#x153;&#x2018;(101) = 100 đ?&#x153;&#x2018;(10201) = đ?&#x153;&#x2018;(1012 ) = 1011 (100) = 10100 đ?&#x153;&#x2018;(5252) = đ?&#x153;&#x2018;(22 ) â&#x2039;&#x2026; đ?&#x153;&#x2018;(13) â&#x2039;&#x2026; đ?&#x153;&#x2018;(101) = 2 â&#x2039;&#x2026; 12 â&#x2039;&#x2026; 100 = 2400
13 14
Bewezen door de Stelling van Euclides Grootste gemene deler
42 | c r y p t o g r a f i e
Bewijs 1. Dankzij de hoofdstelling van de rekenkunde kunnen we ieder natuurlijk getal schrijven als een product van priemgetallen (priemontbinding) đ?&#x2018;&#x;
n = đ?&#x2018;?1
đ?&#x2018;&#x2DC;1
â&#x2039;&#x2026; đ?&#x2018;?2
đ?&#x2018;&#x2DC;2
â&#x2039;&#x2026; â&#x20AC;Ś â&#x2039;&#x2026; đ?&#x2018;?đ?&#x2018;&#x;
đ?&#x2018;&#x2DC;đ?&#x2018;&#x;
= â&#x2C6;? đ?&#x2018;?đ?&#x2018;&#x2013; đ?&#x2018;&#x2DC;đ?&#x2018;&#x2013; đ?&#x2018;&#x2013;=1
2. Ook kunnen we uit de functies waar đ?&#x2018;&#x203A; wel een priemgetal is afleiden dat 1 đ?&#x153;&#x2018;(đ?&#x2018;?đ?&#x2018;&#x2DC; ) = pk â&#x20AC;&#x201C; pđ?&#x2018;&#x2DC;â&#x2C6;&#x2019;1 = p(kâ&#x2C6;&#x2019;1) (p â&#x2C6;&#x2019; 1) = pk (1 â&#x2C6;&#x2019; ) đ?&#x2018;? 3. En een derde eigenschap leert ons dat de totiĂŤntfuntie multiplicatief is. đ?&#x153;&#x2018;(đ?&#x2018;&#x161; â&#x2039;&#x2026; đ?&#x2018;&#x203A;) = đ?&#x153;&#x2018;(đ?&#x2018;&#x161;) â&#x2039;&#x2026; đ?&#x153;&#x2018;(đ?&#x2018;&#x203A;) met đ?&#x2018;&#x161; en đ?&#x2018;&#x203A; priemgtetallen. De combinatie van deze drie levert de bovenstaande, algemene totiĂŤntfunctie op đ?&#x153;&#x2018;(đ?&#x2018;&#x203A;) = đ?&#x153;&#x2018;(đ?&#x2018;?1 đ?&#x2018;&#x2DC;1 â&#x2039;&#x2026; đ?&#x2018;?2 đ?&#x2018;&#x2DC;2 â&#x2039;&#x2026; â&#x20AC;Ś â&#x2039;&#x2026; đ?&#x2018;?đ?&#x2018;&#x; đ?&#x2018;&#x2DC;đ?&#x2018;&#x; ) = đ?&#x153;&#x2018;(đ?&#x2018;?1 đ?&#x2018;&#x2DC;1 ) â&#x2039;&#x2026; đ?&#x153;&#x2018;(đ?&#x2018;?2 đ?&#x2018;&#x2DC;2 ) â&#x2039;&#x2026; â&#x20AC;Ś â&#x2039;&#x2026; đ?&#x153;&#x2018;(đ?&#x2018;?đ?&#x2018;&#x; đ?&#x2018;&#x2DC;đ?&#x2018;&#x; ) 1 1 1 đ?&#x2018;&#x2DC; đ?&#x2018;&#x2DC; đ?&#x2018;&#x2DC; = p1 1 (1 â&#x2C6;&#x2019; ) â&#x2039;&#x2026; p21 (1 â&#x2C6;&#x2019; ) â&#x2039;&#x2026; â&#x20AC;Ś â&#x2039;&#x2026; pđ?&#x2018;&#x; đ?&#x2018;&#x; (1 â&#x2C6;&#x2019; ) đ?&#x2018;?1 đ?&#x2018;?2 đ?&#x2018;?đ?&#x2018;&#x; 1 1 1 đ?&#x2018;&#x2DC; đ?&#x2018;&#x2DC; đ?&#x2018;&#x2DC; = p1 1 â&#x2039;&#x2026; p21 â&#x2039;&#x2026; â&#x20AC;Ś â&#x2039;&#x2026; pđ?&#x2018;&#x; đ?&#x2018;&#x; (1 â&#x2C6;&#x2019; ) â&#x2039;&#x2026; (1 â&#x2C6;&#x2019; ) â&#x2039;&#x2026; â&#x20AC;Ś â&#x2039;&#x2026; (1 â&#x2C6;&#x2019; ) đ?&#x2018;?1 đ?&#x2018;?2 đ?&#x2018;?đ?&#x2018;&#x; 1 1 1 = đ?&#x2018;&#x203A; â&#x2039;&#x2026; (1 â&#x2C6;&#x2019; ) â&#x2039;&#x2026; (1 â&#x2C6;&#x2019; ) â&#x2039;&#x2026; â&#x20AC;Ś â&#x2039;&#x2026; (1 â&#x2C6;&#x2019; ) đ?&#x2018;?1 đ?&#x2018;?2 đ?&#x2018;?đ?&#x2018;&#x; đ?&#x2018;&#x;
= đ?&#x2018;&#x203A; â&#x2C6;? (1 â&#x2C6;&#x2019; đ?&#x2018;&#x2013;=1
1 ) đ?&#x2018;?đ?&#x2018;&#x2013;
Het Algoritme van Euclides Een efficiĂŤnte manier om de grootste gemene deler (ggd) van twee getallen te vinden is het Algoritme van Euclides. Het algoritme berust erop dat de ggd van twee gehele getallen ook de ggd is van het kleinste getal en de rest van het grootste getal gedeeld door het kleinste. Wanneer de rest 0 is, is dit getal de grootste gemene deler. Het algoritme voor het berekenen van de đ?&#x2018;&#x201D;đ?&#x2018;&#x201D;đ?&#x2018;&#x2018;(đ?&#x2018;&#x17D;, đ?&#x2018;?): 1. Stel het grootste getal đ?&#x2018;&#x17D;, het kleinste đ?&#x2018;? 2. Bereken de rest đ?&#x2018;&#x; van de deling đ?&#x2018;&#x17D;â &#x201E;đ?&#x2018;?. Dit kan worden berekend door đ?&#x2018;&#x17D; đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; đ?&#x2018;? te nemen. 3. Wanneer đ?&#x2018;&#x; = 0, is đ?&#x2018;? de ggd van đ?&#x2018;&#x17D; en đ?&#x2018;? Indien niet, herhaal het algortime.
Voorbeeld đ?&#x2018;&#x201D;đ?&#x2018;&#x201D;đ?&#x2018;&#x2018; (752,372)= ? đ?&#x2018;&#x201D;đ?&#x2018;&#x201D;đ?&#x2018;&#x2018; (752,372) = 4
752 đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; 372 = 8 372 đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; 8 = 4 8 đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; 4 = 0
43 | c r y p t o g r a f i e
Uitgebreid algoritme van Euclides Een uitbreiding op dit algoritme stelt ons ook instaat de oplossing te vinden voor de zogeheten identiteit van BĂŠzout: đ?&#x2018;&#x17D;đ?&#x2018;Ľ + đ?&#x2018;?đ?&#x2018;Ś = đ?&#x2018;&#x201D;đ?&#x2018;&#x201D;đ?&#x2018;&#x2018;(đ?&#x2018;&#x17D;, đ?&#x2018;?) We kunnen dit best illustreren met een voorbeeld: we zoeken đ?&#x2018;&#x201D;đ?&#x2018;&#x201D;đ?&#x2018;&#x2018;(1140,900) door middel van het algoritme van Euclides: 1140 đ?&#x2018;&#x201D;đ?&#x2018;&#x201D;đ?&#x2018;&#x2018; (1140,900)= ?
đ?&#x2018;&#x201D;đ?&#x2018;&#x201D;đ?&#x2018;&#x2018; (1140,900) = 60
1140 â&#x2C6;&#x2019; 1 â&#x2039;&#x2026; 900 = 240 900 â&#x2C6;&#x2019; 3 â&#x2039;&#x2026; 240 = 180 240 â&#x2C6;&#x2019; 1 â&#x2039;&#x2026; 180 = 60 180 â&#x2C6;&#x2019; 3 â&#x2039;&#x2026; 60 = 0
Lezen we de stappen nu echter van onder naar boven dan kunnen we 60 schrijven als een lineaire combinatie van 1140 en 900. 0 = 180 â&#x2C6;&#x2019; 3 â&#x2039;&#x2026; 60 60 = 240 â&#x2C6;&#x2019; 1 â&#x2039;&#x2026; 180 { 180 = 900 â&#x2C6;&#x2019; 3 â&#x2039;&#x2026; 240 240 = 1140 â&#x2C6;&#x2019; 1 â&#x2039;&#x2026; 900 â&#x2021;&#x2019; 60 = (1140 â&#x2C6;&#x2019; 1 â&#x2039;&#x2026; 900) â&#x2C6;&#x2019; 1 â&#x2039;&#x2026; (900 â&#x2C6;&#x2019; 3 â&#x2039;&#x2026; 240) â&#x2021;&#x2019; 60 = (1140 â&#x2C6;&#x2019; 1 â&#x2039;&#x2026; 900) â&#x2C6;&#x2019; 1 â&#x2039;&#x2026; (900 â&#x2C6;&#x2019; 3 â&#x2039;&#x2026; (1140 â&#x2C6;&#x2019; 1 â&#x2039;&#x2026; 900)) â&#x2021;&#x2019; 60 = 4 â&#x2039;&#x2026; 1140 â&#x2C6;&#x2019; 5 â&#x2039;&#x2026; 900 De oplossing van de identiteit ven BĂŠzout is x =4 en y = -5 Voor het wiskundig bewijs van het RSA-algoritme gebruikt men de kleine stelling van Fermat. Deze valt niet te verwarren met de laatst stelling van Fermat, die ook wel de grote stelling van Fermat wordt genoemd en stelt dat het onmogelijk is een macht hoger dan de tweede op te delen in twee machten met diezelfde graad. đ?&#x2018;Ľ đ?&#x2018;&#x203A; + đ?&#x2018;Ś đ?&#x2018;&#x203A; = đ?&#x2018;§ đ?&#x2018;&#x203A; heeft dus alleen oplossingen voor đ?&#x2018;&#x203A; â&#x2030;¤ 2.
Kleine stelling van Fermat De kleine stelling van Fermat zegt dat als p een priemgetal is en đ?&#x2018;&#x17D; â&#x2C6;&#x2C6; â&#x201E;¤: đ?&#x2019;&#x201A;đ?&#x2019;&#x2018; â&#x2030;Ą đ?&#x2019;&#x201A; (đ?&#x2019;&#x17D;đ?&#x2019;?đ?&#x2019;&#x2026; đ?&#x2019;&#x2018;) Een handig vervolg luidt: đ?&#x2019;&#x201A;đ?&#x2019;&#x2018;â&#x2C6;&#x2019;đ?&#x;? â&#x2030;Ą đ?&#x;? (đ?&#x2019;&#x17D;đ?&#x2019;?đ?&#x2019;&#x2026; đ?&#x2019;&#x2018;) Deze stelling wordt veralgemeend voor alle gehele getallen p in de stelling van Euler, die ook gebruikt maakt van de Euler-totiĂŤntfunctie.
Stelling van Euler De stelling van Euler zegt dat als đ?&#x2018;?, đ?&#x2018;&#x17D; â&#x2C6;&#x2C6; â&#x201E;¤ en ze copriem zijn ( đ?&#x2018;&#x201D;đ?&#x2018;&#x201D;đ?&#x2018;&#x2018;(đ?&#x2018;?, đ?&#x2018;&#x17D;) = 0 ): đ?&#x2019;&#x201A;đ??&#x2039;(đ?&#x2019;&#x2018;) â&#x2030;Ą đ?&#x;? (đ?&#x2019;&#x17D;đ?&#x2019;?đ?&#x2019;&#x2026; đ?&#x2019;&#x2018;)
44 | c r y p t o g r a f i e
4.2.2 Werking Ook RSA baseert zich op een eenwegsfuntie die gebruikt maakt van modulorekenen.
Sleutelgeneratie Voor men berichten kan versleutelen, moet de ontvanger eerst zijn publieke en geheime sleutel genereren. Deze twee hangen immers van elkaar af. 1. Kies twee priemgetallen đ?&#x2018;? en đ?&#x2018;&#x17E; en bereken met deze getallen đ?&#x2018;ľ = đ?&#x2019;&#x2018; â&#x2039;&#x2026; đ?&#x2019;&#x2019;. N wordt gebruikt als modulus en de lengte geldt als sleutellengte. 2. Kies een geheel getal 1 < e < Ď&#x2020;(N), dat relatief priem is t.o.v. (p â&#x2C6;&#x2019; 1) â&#x2039;&#x2026; (q â&#x2C6;&#x2019; 1) (p â&#x2C6;&#x2019; 1) â&#x2039;&#x2026; (q â&#x2C6;&#x2019; 1) is de uitgewerkte waarde van Ď&#x2020;(N). De grootte van đ?&#x2018;&#x2019; is niet zo belangrijk als đ?&#x2018;? en đ?&#x2018;&#x17E; voor de veiligheid en is daarom meestal niet erg groot. 3. Bereken đ?&#x2018;&#x2018; zo dat đ?&#x2019;&#x2020; â&#x2039;&#x2026; đ?&#x2019;&#x2026; = đ?&#x;? đ??Śđ??¨đ??? đ?&#x203A;&#x2014;(đ?&#x2018;ľ). đ?&#x2018;&#x2018; is met andere woorden de modulaire inverse voor de vermenigvuldiging van đ?&#x2018;&#x2019;. Per definitie weten we dat đ?&#x2018;&#x2019; â&#x2039;&#x2026; đ?&#x2018;&#x2018; â&#x2C6;&#x2019; 1 = đ?&#x2018;&#x2DC; â&#x2039;&#x2026; Ď&#x2020;(đ?&#x2018; ). Als we de 1 nu over brengen staat er đ?&#x2018;&#x2019; â&#x2039;&#x2026; đ?&#x2018;&#x2018; â&#x2C6;&#x2019; đ?&#x2018;&#x2DC; â&#x2039;&#x2026; Ď&#x2020;(đ?&#x2018; ) = 1 en deze vergelijking kunnen we oplossen met het uitgebreid algoritme van Euclides. De getallen N en e zijn nu de publieke sleutel en het getallenpaar N en d de geheime sleutel
Encryptie Om een bericht te versleutelen moet men de boodschap eerst omzetten in een decimaal getal, de lengte is echter beperkt door de grootte van de modulus (đ?&#x2018;&#x203A; < đ?&#x2018;&#x20AC;) en dus ook de grootte van de boodschap is beperkt. De werking voor het versleutelen is nu als volgt: đ?&#x2018;Ş = đ?&#x2018;´đ?&#x2019;&#x2020; đ?&#x2019;&#x17D;đ?&#x2019;?đ?&#x2019;&#x2026; đ?&#x2018;ľ waarbij đ?&#x2018;&#x20AC; de boodschap is en đ??ś het versleutelde bericht.
Decimaal Net zoals we bits in een hexadecimale vorm kunnen schrijven, kunnen we deze ook op een decimale manier weergeven. De bit stellen van recht naar links de machten van 2 voor, zo is de uiterst rechtste bit 20 = 1, de tweede bit 21 = 2, de derde bit 22 = 4 enz. Ieder getal kan kan gevormd worden door een som van deze getallen. Is waarde van de bit een 1 dan neemt men deze op in de som, is de waarde 0 niet.
0 1 2 3 4 5 6 7 8
0000 0001 0010 0011 0100 0101 0110 0111 1000
9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 16 1 0000 17 1 0001
Decryptie Om het bericht te ontsleutelen voert men de omgekeerde bewerking uit: đ?&#x2018;´ = đ?&#x2018;Şđ?&#x2019;&#x2026; đ?&#x2019;&#x17D;đ?&#x2019;?đ?&#x2019;&#x2026; đ?&#x2018;ľ
Bewijs We kunnen dit bewijzen met de stelling van Euler. đ?&#x2018;&#x20AC; = đ??ś đ?&#x2018;&#x2018; đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; đ?&#x2018; = đ?&#x2018;&#x20AC;đ?&#x2018;&#x2019;â&#x2039;&#x2026;đ?&#x2018;&#x2018; đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; đ?&#x2018; = đ?&#x2018;&#x20AC;đ?&#x2018;&#x2DC;â&#x2039;&#x2026;đ?&#x153;&#x2018;(đ?&#x2018; )+1 đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; đ?&#x2018;
(đ??ś = đ?&#x2018;&#x20AC;đ?&#x2018;&#x2019; đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; đ?&#x2018; ) (đ?&#x2018;&#x2019; â&#x2039;&#x2026; đ?&#x2018;&#x2018; = 1 mod Ď&#x2020;(đ?&#x2018; ))
đ?&#x2018;&#x2DC;
= (đ?&#x2018;&#x20AC;đ?&#x153;&#x2018;(đ?&#x2018; ) ) â&#x2039;&#x2026; đ?&#x2018;&#x20AC; đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; đ?&#x2018; = 1đ?&#x2018;&#x2DC; â&#x2039;&#x2026; đ?&#x2018;&#x20AC; đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; đ?&#x2018; =đ?&#x2018;&#x20AC;
(stelling van Euler)
45 | c r y p t o g r a f i e
Voorbeeld Alice wilt een bericht naar Bob sturen en genereert eerst haar sleutels 1. Ze kiest voor p 41 en voor q 53, đ?&#x2018; = 41 â&#x2039;&#x2026; 53 = 2173 2. Het totiĂŤnt Ď&#x2020;(2173) = 40 â&#x2039;&#x2026; 52 = 2080 en ze kiest nu đ?&#x2018;&#x2019; = 57 Dit getal is copriem met N, want đ?&#x2018;&#x201D;đ?&#x2018;&#x201D;đ?&#x2018;&#x2018;(2173,57) = 1 (Te controleren met het algoritme van Euclides) 3. Als laatste stap moet Alice haar privĂŠsleutel đ?&#x2018;&#x2018; berekeken. Ze weet dat đ?&#x2018;&#x2019; â&#x2039;&#x2026; đ?&#x2018;&#x2018; = 1 mod Ď&#x2020;(đ?&#x2018; ) â&#x2021;&#x201D; 57 â&#x2039;&#x2026; đ?&#x2018;&#x2018; = 1 mod 2080 Ze kan nu đ?&#x2018;&#x2018; uitrekenen met het uitgebreide algoritme van Euclides. 57đ?&#x2018;&#x2018; + 2080đ?&#x2018;&#x2DC; = 1 2080 = 36 â&#x2039;&#x2026; 57 + 28 57 = 2 â&#x2039;&#x2026; 28 + 1 28 = 28 â&#x2039;&#x2026; 1 + 0 â&#x2021;&#x2019; 1 = 57 â&#x2C6;&#x2019; 2(2080 â&#x2C6;&#x2019; 36 â&#x2039;&#x2026; 57) â&#x2021;&#x2019; 73 â&#x2039;&#x2026; 57 â&#x2C6;&#x2019; 2 â&#x2039;&#x2026; 2080 = 1 â&#x2021;&#x2019; đ?&#x2018;&#x2018; = 73 Bob versleutelt zijn bericht đ?&#x2018;&#x20AC; = 1234 met de publieke sleutel N en e van Alice 4. đ??ś = đ?&#x2018;&#x20AC;đ?&#x2018;&#x2019; đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; đ?&#x2018; â&#x;ş đ??ś = 123457 đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; 2173 = 1952 Alice ontsleutelt het bericht van Bob met haar eigen geheime sleutel. 5. đ?&#x2018;&#x20AC; = đ??ś đ?&#x2018;&#x2018; đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; đ?&#x2018; â&#x;ş đ?&#x2018;&#x20AC; = 195273 đ?&#x2018;&#x161;đ?&#x2018;&#x153;đ?&#x2018;&#x2018; 2173 = 1234
4.2.3 Veiligheid In de voorbeelden wordt telkens gewerkt met kleine eenvoudige getallen, maar in de praktijk rekent RSA met sterke priemgetallen die wel meer dan duizend decimalen groot zijn. Tegenwoordig variĂŤren de sleutelgroottes van 1024 tot 4096-bits, deze sleutelgroottes zijn vele malen groter dan die van symmetrische cijfers zoals AES. Zo is een 1024-bit RSA sleutel slechts het equivalent van een 80-bit sleutel van een symmetrische cijfers. En om even sterk te zijn als de grootste AES-sleutel van 256-bit is een RSA modulus van 12360 bits vereist! Desalniettemin is men nog geen enkele keer in staat geweest een 1024-bits RSA-sleutel te kraken, of te ontbinden in priemgetallen. De grootste gekraakte sleutel is 768 bits (232 decimale cijfers) langs. De lengte van een sleutel is niet het enige criterium voor een sterke encryptie, zo mogen p en q niet te dicht bij elkaar liggen (opdat een Fermatfactorisatie niet mogelijk is) en mag d ook niet te klein zijn (anders is deze op een eenvoudigere manier te berekenen). Om enkele andere veel voorkomende problemen op te lossen past men padding (volgens een standard zoals PKCS#1) toe op het bericht. Bij symmetrische cijfers staat padding voor het toevoegen van een willekeurige blok data om het inhoud van bericht te versluieren, anders zou men op berichten die altijd met eenzelfde manier beginnen of eindigen een known-plaintext aanval kunnen uitvoeren om de sleutel te achterhalen. Vandaag de dag kan men stellen dat, indien de wet van Moore blijft op gaan, en er geen snelle manier ontdekt wordt om getallen te ontbinden in priemfactoren, het RSA-cijfer voor een zeer lange tijd veilig blijft voor brute-force aanvallen. Toch zijn er ontwikkelingen zoals kwantumcomputers die met het (voorlopig slechts theoretisch) algoritme van Shor, sneller voor veranderingen zouden kunnen zorgen dan verwacht
46 | c r y p t o g r a f i e
Wet van Moore Letterlijk stelt de Wet van Moore dat het aantal transistors in een geïntegreerde schakeling door de technologische vooruitgang elke 2 jaar verdubbelt. Tegenwoordig formuleert men de Wet van Moore losser en zegt men dan elke 2 jaar de rekenkracht verdubbelt. Voor het kraken van cryptografische sleutels betekent dit dus dat elke twee jaar de tijd nodig om een sleutel te kraken halveert.
4.2.4 Digitale handtekening Een andere toepassing van asymmetrische encryptie is het toevoegen van een digitale handtekening of het ondertekenen van een bericht. Eve kan dankzij asymmetrische encryptie wel niet langer de berichtsleutels onderscheppen, maar zij zou wel nog kunnen uitgeven voor Alice of Bob of berichten veranderen tijdens de transmissie. Als Alice een bericht voor Bob wilt ondertekenen, neemt ze eerst de hashwaarde van het bericht en vercijfert deze met haar geheime sleutel, dit voegt ze toe aan haar te versturen bericht aan Bob, wat op zijn beurt versleuteld wordt met zijn publieke sleutel. Als Bob dit bericht krijgt, en ontcijfert met zijn privésleutel, krijgt hij de versleutelde hashwaarde. Indien hij deze ontcijfert met de publieke sleutel van Alice en controleert met de hashwaarde van het bericht die hij zelf berekent, weet Bob met zekerheid dat het bericht niet veranderd is (integriteit) en dat Alice de verzender is (authenticatie), aangezien enkel zij de hashwaarde op zo’n manier kon versleutelen dat haar publieke sleutel deze ontcijfert.
Hashfunctie Een hashfunctie of in het Nederlands klutsfunctie is een eenwegsfuntie die een willekeurige hoeveelheid data omzet in een hash (een datareeks van een bepaalde lengte) die specifiek is voor de input. Het is onmogelijk om uit de hash de oorspronkelijke data terug te halen. Een hash wordt gebruikt om een ‘handtekening’ van een groot bericht of bestand te maken, wat eenvoudige verificatie toestaat. Een andere toepassing is het verhashen van wachtwoorden, op deze manier wordt het (meestal korte) wachtwoord omgezet in een datablok met een vaste grootte dat nu gebruikt kan worden als sleutel voor een cijfer. Een ander voordeel is dat wanneer websites de wachtwoorden van hun gebruikers enkel als hash opslaan ze wel in staat zijn de ingevoerde wachtwoorden te controleren, maar wanneer de database gestolen wordt de hackers niet in staat zijn de wachtwoorden terug te halen. Enkele bekende hashfuncties zijn MD5 (Message Digest Algorithm 5, ontworpen door Ronald Rivest), SHA-1 (Secure Hash Algorithm, ontworpen door de NSA en gepubliceerd door het NIST ), SHA-256 en SHA-512 (Worden samen SHA-2 genoemd, de opvolgers van SHA-1).
4.3 Elliptische kromme De meeste asymmetrische cijfers zijn gebaseerd op modulo eenwegsfuncties, er zijn echter ook andere benaderingen zoals die gebaseerd op elliptische krommen. Dit soort asymmetrische cryptografie wordt vaak in combinatie gebruikt met RSA. Een voordeel van sleutels gebaseerd op elliptische krommen is dat ze minder lang hoeven te zijn dan RSA-sleutels om eenzelfde sterkte te bieden.
47 | c r y p t o g r a f i e
Slot Aan het einde van deze onderzoekscompetentie kunnen we terugblikken op de vele facetten van de cryptografie, stuk voor stuk intrigerend op zijn eigen manier. Enerzijds is er de zuiver wiskundige kant die zorgt dat alles mooi uitkomt en anderzijds het gebruik van cryptografie. Bij vele historische gebeurtenissen speelde cryptografie dan ook een belangrijke rol, zo zouden bijvoorbeeld beide Wereldoorlogen ongetwijfeld een andere afloop hebben gehad zonder geheime communicatie. Maar ook vandaag de dag speelt cryptografie een belangrijke rol in ons leven. Het is alomtegenwoordig: iedere financiële transactie, ook die via internetbankieren, is versleuteld, iedere keer we een wachtwoord invoeren op een website, wordt er gebruik gemaakt van encryptie, ieder sms’je of telefoongesprek met je GSM gaat over een gecodeerde verbinding en ga zo maar door. Cryptografie is niet langer weggelegd voor hoge militairen of vorsten, maar is beschikbaar voor iedereen. Dit eindwerk over cryptografie is een verhaal dat niet af is. Het is immers onoverkomelijk dat de huidige systemen ooit achterhaald zullen zijn. AES en RSA zullen op een dag, net zoals de Enigma of DES, onvoldoende veiligheid bieden en in onbruik geraken. Ze zullen vervangen worden door nieuwe en veiligere systemen. Zo is er nu bijvoorbeeld onderzoek bezig naar kwantumcomputers, om enerzijds huidige systemen te kraken, maar anderzijds ook onderzoek naar kwantumcryptografie. Er bestaan reeds sleuteluitwisselingsprotocollen, zoals BB84 of E91, die gebruik maken van de kwantummechanische eigenschappen van qubits (bijvoorbeeld gepolariseerde fotonen). Deze kunnen slechts één keer bekeken worden en niet gekopieerd. Dit is echter niet de enige manier waarop dit cryptografisch werk niet af is. In een onderzoekscompetentie zoek je een antwoord op enkele grote onderzoeksvragen, maar voor iedere beantwoorde rijzen er drie nieuwe. Het is mogelijk om nog weken verder onderzoek te voeren naar cryptografische onderwerpen zoals de werking van het BB84-protocol, de wiskundige achtergrond van sleutels gebaseerd op elliptische curven, de verschillende soorten cryptografische aanvallen die bestaan op moderne cijfers, en nog veel meer boeiende onderwerpen. Helaas is het onmogelijk de gehele cryptografie in een onderzoekscompetentie te omvatten. Zoals Socrates en Tao Tse reeds zeiden: ‘Hoe meer ik weet, des te meer realiseer ik me hoe weinig ik weet.’
48 | c r y p t o g r a f i e
Bibliografie Announcing the Advanced Encryption Standard (AES), NIST, internet, 26 november 2001 (http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf) BERLOQUIN, Pierre, Geheime Codes & Getallen: Geheimschriften en enigma’s van de oudheid tot heden ontcijferd, Kerkdriel, Libero, 2011, 398 pp. COLLEMAN, Patrick, Galois velden en AE, KULeuven, internet, 13 april 2014 (http://home.scarlet.be/~pcoleman/upgrades/Galois velden en AES.pdf) COOLEMAN, Steve, Het verleden in de toekomst: Over de impact van nieuwe media op de geschiedenis: Bletchley Park Thesis, UGent, 1997 (http://www.ethesis.net/nieuwe_media/bletchley.htm) DAEMEN & RIJMEN, Joan & Vincent, AES Proposal: Rijndael, KULeuven, internet, 3 september 1999 (http://csrc.nist.gov/archive/aes/rijndael/Rijndael-ammended.pdf) DAMICO, Tony M., A Brief History of Cryptography, Student Pulte Journal, internet, 2009 (http://www.studentpulse.com/articles/41/a-brief-history-of-cryptography) DE WEGER, Benne, Elementaire Getaltheorie en Asymmetrische Cryptografie, Utrecht, Epsilon Uitgaven, 2009, 180 pp. EL AOUFI, Saïd, Cryptografie en ICT: theorie en praktijk, Schoonhoven, Academic Service, 2001, 206 pp. ELLSBURY, Graham, The Enigma Machine: Its Construction, Operation and Complexity, internet, 1998 (http://www.ellsbury.com/enigma2.htm) ELLSBURY, Graham, The Turing Bombe: What it was and how it worked, internet, 1998 (http://www.ellsbury.com/bombe1.htm) GOEBEL, Greg, Codes, Ciphers, & Codebreaking, internet, 1 november 2012 (http://www.vectorsite.net/ttcode.html) KAK, Avinash C., Lecture 8: AES: The Advanced Encryption Standard, Purdue University, internet, 6 maart 2014 (https://engineering.purdue.edu/kak/compsec/NewLectures/Lecture8.pdf) KLOECK, Gert, Ontwerp van een compacte en veilige hardware-implementatie van AES, Thesis, internet, 3 mei 2004 (http://www.cosic.esat.kuleuven.be/publications/thesis-102.pdf) KOZDRON, Michael, The Art of Secret Writing: The Theoretically Possible Number of Enigma Configurations, University of Regina, internet, 3 augustus 2006 (http://stat.math.uregina.ca/~kozdron/Teaching/Cornell/135Summer06/Handouts/enigma.pdf) LEVY, Steven, The Open Secret, internet, april 1999 (http://archive.wired.com/wired/archive/7.04/crypto_pr.html) Mathematics illuminated: The Primes: Encryption, internet, 13 april 2014 (http://www.learner.org/courses/mathilluminated/units/1/textbook/06.php)
49 | c r y p t o g r a f i e
Modulorekenen en Cryptografie, Studiebundel Internationaal Wiskundetoernooi, KULeuven, internet, 2011 (http://wis.kuleuven.be/events/IntWis2011/pdf/studiebundel2011.pdf) MOSER, Jeff, A Stick Figure Guide to the Advanced Encryption Standard, internet, 22 september 2009 (http://www.moserware.com/2009/09/stick-figure-guide-to-advanced.html) NOVER, Harris, Algebraic cryptanalysis of AES: an overview, University of Wisconsin, 2005 REUVERS & SIMONS, Paul & Marc, Working principle of the Enigma, internet, 08 February 2014 (http://www.cryptomuseum.com/crypto/enigma/working.htm) SINGH, Simon, Code: De wedloop tussen makers en brekers van geheime codes en cijferschrift, Amsterdam, Mea Flothuis/ Uitgeverij De Arbeiderspers, 1999, 481 pp. TEL, Gerard, Cryptografie: Beveiliging van de digitale maatschappij, Utrecht, Pearson Education, 2002, 353 pp. TRENHILME, Sam, The AES encryption algorithm: AES' Galois field, internet, 13 april 2014 (http://samiam.org/galois.html) VAN DE HOEF, Marries, Inleiding tot Advanced Encryption Standard, internet, internet, 10 januari 2010 (http://www.cs.uu.nl/docs/vakken/b3crp/Symp1001/AES.pdf) VAN DE WOESTYNE, Ignace, Geheimhouding op het internet, een geheim?, internet, 2000 (http://www.kubrussel.ac.be/wsetew/cryptotekst.html) VAN DEN BRANDHOF, Alex, Cryptografie, internet, 30 juni 2008 (http://www.kennislink.nl/publicaties/cryptografie) Wikipedia, internet, 13 april 2014 (http://en.wikipedia.org/) Wikipedia, internet, 13 april 2014 (http://nl.wikipedia.org/) ZABALA, Enrique, Rijndael Cipher Animation, internet, 2004 (http://www.cs.bc.edu/~straubin/cs381-05/blockciphers/rijndael_ingles2004.swf)
50 | c r y p t o g r a f i e