2015 cryptografie
F. Vonk versie 4 10-8-2015
inhoudsopgave 1. inleiding ............................................................................................ - 2 2. geschiedenis ...................................................................................... - 3 3. belang ............................................................................................ - 10 4. toepassingen ................................................................................... - 12 5. moderne cryptografie ....................................................................... - 17 6. symmetrisch versus asymmetrisch ..................................................... - 25 7. Diffie-Hellman .................................................................................. - 28 8. RSA ................................................................................................ - 30 9. wat heb je geleerd ........................................................................... - 38 -
Dit werk is gelicenseerd onder een Creative Commons Naamsvermelding – NietCommercieel – GelijkDelen 3.0 Unported licentie De afbeelding op het voorblad is verkregen via INFOwrs. Copyright © 2010 INFOwrs Serviços em informatica. -1-
1. inleiding Welkom bij de module over cryptografie. Cryptografie is ongemerkt een belangrijk onderdeel van ons dagelijks leven. Als we bijvoorbeeld betalingen via internet doen, dan zorgt onder andere cryptografie ervoor, dat we dit veilig kunnen doen. En zo zijn er nog veel meer voorbeelden zoals de beveiliging van onze draadloze netwerken en het verzenden van e-mail berichten via internet. In deze module gaan we kijken wat cryptografie is, waarom en hoe het is ontstaan en waar en hoe het toegepast wordt. In deze module kom je opgaves tegen, die je moet maken om de lesstof te verwerken. De antwoorden kunnen in de les besproken worden.
opgave Opgaves in blauw moet je maken.
Let op, links in dit document hebben een rode kleur. Veel plezier en succes.
-2-
2. geschiedenis Het woord cryptografie betekent letterlijk geheimschrift en is afgeleid uit het Grieks. Onder cryptografie verstaan we echter niet alleen het schrift zelf maar ook de wetenschap eromheen. Cryptografie bestaat al heel lang. In het oude Egypte werd het al toegepast en men vermoedt dat dit ook het geval was in oude oosterse beschavingen. Ook de Maya's schijnen al gebruik te hebben gemaakt van cryptografie.
scytale Gelukkig gaan we met onze historie niet zo ver terug. We beginnen tussen 400 en 300 voor Christus in Sparta en Macedonië, waar de scytale werd toegepast om militaire boodschappen te versleutelen. De scytale is afgebeeld in Figuur 1 en maakt gebruik van transpositionele cryptografie.
Figuur 1: de scytale1
Transpositionele cryptografie maakt gebruik van het verschuiven of verplaatsen (transpose) van tekens in een boodschap. Bijvoorbeeld "hello world" wordt omgezet in "dlrow olleh". Bij de scytale gebeurde dit op een zeer bijzondere manier, namelijk door een lint van perkament of papyrus om een staf te wikkelen. In de oudheid droegen veel militairen een wapenstok (staf), die gebruikt kon worden om de berichten te ontcijferen. De scytale wordt dan ook wel stafversleuteling genoemd.
opgave 2.1 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) Cryptografie betekent letterlijk "geheimschrift". b) Cryptografie is geen wetenschap. c) De scytale is een vorm van transpositionele cryptografie. d) De scytale maakt gebruik van een stok waar een boodschap op geschreven wordt.
1
www.recursive.nl/papers/telematica.html -3-
opgave 2.2 De scytale is een primitieve vorm van cryptografie. a) Welke belangrijk eis, die voor deze vorm van cryptografie geldt, wordt in het bovenstaande verhaal niet vermeld? b) Bedenk een manier om de versleuteling te kraken.
rotaties De volgende belangrijke cryptografiemethode ontstond ten tijde van Julius Caesar (100-44 voor Christus) en wordt het Caesar cipher genoemd. Ook deze methode werd vooral gebruikt om militaire boodschappen te versleutelen. Bij deze methode worden de letters van het alfabet 3 plaatsen verschoven. Bij het versleutelen wordt een A een D, een B een E enzovoorts. Bij het ontcijferen doe je het omgekeerde. De methode wordt daarom ook wel Caesarrotatie genoemd. Caesarrotatie wordt op de Nederlandstalige Wikipedia aangeduid als een vorm van substitutie cryptografie, zie Wikipedia Cryptografie.
opgave 2.3 Bij de scytale spraken we van transpositionele cryptografie. Bij Caesarrotatie spreekt men op Wikipedia van substitutie cryptografie. Leg uit of je het met Wikipedia eens bent, of dat Caesarrotatie eigenlijk transpositionele cryptografie is.
Gelukkig hebben we niet alleen de Nederlandstalige maar ook de Engelstalige Wikipedia.
opgave 2.4 Bekijk de uitleg van substitutie en transpositionele cryptografie op de Engelstalige Wikipedia, Wikipedia Cryptography. Beschrijf het verschil tussen de Nederlandstalige en Engelse versies. Leg uit welke van de twee het volledigst is.
Maar genoeg gekeken naar terminologie. Het is natuurlijk leuk om zelf aan de slag te gaan met cryptografie. -4-
opgave 2.5 De onderstaande boodschappen zijn versleuteld via Caesarrotatie. Wat staat er? a) VXLNHU b) SLQGDNDDV c) ORUHQWCFDVLPLUOBFHXP Versleutel de onderstaande boodschappen via Caesarrotatie. d) VEELVRAAT e) KENNEDYLAAN
De Caesarrotatie is de inspiratie geweest voor andere vormen van rotatiecryptografie zoals ROT13. Hierbij worden alle letters 13 plaatsen opgeschoven, zodat de ene helft van de letters in de andere helft wordt omgezet en omgekeerd. Maar feitelijk kun je elke rotatie gebruiken. Om versleutelen en ontcijferen makkelijker te maken, werden zogenaamde cipher disks of cipher wheels gebruikt, zoals afgebeeld in Figuur 2.
Figuur 2: rotation cipher disk2
2
www.secretcodebreaker.com/history2.html -5-
opgave 2.6 a) De boodschap "QVGVFZNXXRYVWX" is versleuteld via ROT13. Wat staat er? b) De boodschap "BKKRBUAJ" is versleuteld via ROT6. Wat staat er? c) De boodschap "MXZXEBCD" is versleuteld via ROT19. Wat staat er? d) Versleutel de boodschap "OMELFUURBIJDEJUMBO" via ROT8. e) Versleutel de boodschap "DOODDEKEIZER" via ROT15.
opgave 2.7 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) Caesarrotatie is een vorm van transpositionele cryptografie. b) Bij transpositionele cryptografie zitten alle letters van de originele boodschap ook in de versleutelde boodschap. c) ROT3 is een andere naam voor Caesarrotatie. d) Een rotation cipher disk was vroeger een handig hulpmiddel bij het ontcijferen van rotatieversleutelingen.
substitutie Je zult begrijpen dat het kraken van een rotatieversleuteling niet heel moeilijk is. Zeker niet met de huidige technologie. De volgende stap in cryptografie was dan ook dat men letters door willekeurige andere letters ging vervangen. Dus A wordt X, B wordt G, C wordt Q enzovoorts. Dit noemde men alfabetische substitutie. Alfabetische substitutieversleuteling kan gekraakt worden door het gebruiken van frequentieanalyse. Frequentieanalyse maakt gebruikt van de kennis over hoe vaak letters, gemiddeld genomen, gebruikt worden in een tekst voor een bepaalde taal. We noemen dit de letterdistributie van een taal. In Figuur 3 zie je bijvoorbeeld de letterdistributie voor het Engels. Met behulp van de letterdistributie en een voldoende hoeveelheid versleutelde tekst, is het mogelijk om de versleuteling te kraken.
-6-
Figuur 3: letterdistributie in Engelse tekst3
Door de uitvinding van frequentieanalyse, werd men gedwongen een nieuwe stap te maken in cryptografieversleuteling. Men ging over op poly-alfabetische substitutie. Hierbij wordt één tekst versleuteld met behulp van een aantal verschillende alfabetische substituties. Aanvankelijk gaf een speciale aanduiding in de versleutelde tekst dan aan wanneer en hoe er van alfabet gewisseld werd. Latere methoden deden dit niet meer omdat het minder veilig is. Leon Battista Alberti (1467) wordt als grondlegger gezien van de poly-alfabetische substitutie, al zijn er aanwijzingen dat deze vorm van cryptografie al in de 9e eeuw bekend was. Om het versleutelen en ontcijferen te faciliteren, maakte men gebruik van zogenaamde cipher disks. Een uitvoering van de cipher disk van Leon Battista Alberti is afgebeeld in Figuur 4.
Figuur 4: een Alberti cipher disk (Leon Battista Alberti)4
3 4
en.wikipedia.org/wiki/Frequency_analysis en.wikipedia.org/wiki/Alberti_cipher_disk -7-
De meest bekende poly-alfabetische substitutie is het Vigenère cipher. Deze methode is gebaseerd op de Tabula Recta en het gebruik van een vooraf afgesproken sleutelwoord, dat voor zowel versleuteling als ontcijfering gebruikt wordt. De Tabula Recta, zie Figuur 5, is een tabel met daarin alle mogelijke rotaties voor de letters van ons alfabet. Hoe het Vigenère cipher werkt, staat uitgelegd op Wikipedia Vigenère
Figuur 5: Tabula Recta5
opgave 2.8 De onderstaande boodschappen zijn versleuteld via het Vigenère cipher. Wat staat er? a) Boodschap KTBHR; codewoord PINDA. b) Boodschap EMTO; codewoord TEGELS. c) Boodschap MIYHMYXRSYSV; codewoord KRAST. Versleutel de onderstaande boodschappen via het Vigenère cipher: d) Boodschap PARIJS; codewoord VAKANTIE. e) Boodschap ONDERDEBRUG; codewoord INKT.
5
en.wikipedia.org/wiki/Vigen%C3%A8re_cipher -8-
opgave 2.9 Maak een versleutelde boodschap voor een medeleerling via het Vigenère cipher. Geef je boodschap en het sleutelwoord door en laat hem of haar je boodschap ontcijferen.
Lange tijd dacht men dat het Vigenère cipher niet te kraken was. In de 19e eeuw toonden Charles Babbage en Friedrich Kasiski aan dat dit wel degelijk mogelijk is. De zogenaamde Kasiski test kan gebruikt worden om poly-alfabetische substitutie te kraken. Cryptografie is door de jaren heen vooral gebruikt voor militaire doeleinden. De gewone man kwam er niet mee in aanraking en had er waarschijnlijk ook nooit van gehoord. Pas vanaf de 19e eeuw werd cryptografie beschreven in fictie. Het eerste korte verhaal waarin cryptografie voorkomt is "The Gold-Bug" van Edgar Allan Poe. Met de komst van oorlogsfilms kreeg het begrip cryptografie een steeds grotere bekendheid. Sinds de komst van de computer, is de ontwikkeling op het gebied van cryptografie in een stroomversnelling geraakt. Omdat computers goed inzetbaar zijn om codes te kraken, kwam er steeds meer behoefte aan complexere cryptografiemethodes. Hierop gaan we later in.
opgave 2.10 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) Rotatie cryptografie is een vorm van substitutie cryptografie. b) Rotatie cryptografie is een vorm van alfabetische substitutie cryptografie. c) Alle vormen van substitutie cryptografie zijn makkelijk te kraken door het gebruik van frequentieanalyse. d) Een rotation cipher disk was vroeger een handig hulpmiddel bij het ontcijferen van substitutieversleutelingen. e) Een Alberti cipher disk is hetzelfde als een rotation cipher disk. f) Een Tabula Recta wordt gebruikt bij het ontcijferen van versleutelingen met het Vigenère cipher. g) Het Vigenère cipher is niet te kraken.
-9-
3. belang Zoals in het vorige hoofdstuk aangegeven is, werd cryptografie in het verleden voornamelijk voor militaire doeleinden gebruikt. Tegenwoordig is dat heel anders. In ons dagelijks leven maken we, vaak zonder het te beseffen of zelfs te weten, veelvuldig gebruik van cryptografie. Om cryptografie goed en effectief te laten werken, moet aan drie eisen (aspecten) worden voldaan:
geheimhouding
6
integriteit
7
authenticiteit
8
Deze drie aspecten zijn essentieel! Als er aan één aspect niet wordt voldaan, dan kan er vaak op eenvoudige manier om het cryptografiesysteem heen gewerkt worden. Als gebruiker van zo'n systeem moeten we ons daarom bewust zijn van deze aspecten. Je kent misschien de slogan "Je mag alles van me weten, behalve mijn pincode." Dit is een typisch voorbeeld van geheimhouding.
6 7 8
www.motormorph.com/wp-content/uploads/2010/05/new-top-secret.jpg epicvoyage.wordpress.com/tag/decryption/
www03.ibm.com/ibm/history/ibm100/images/icp/V088628L88880O50/us__en_us__ibm100__cr yptography__video_cryptography_research__620x348.jpg - 10 -
Maar ook integriteit is belangrijk. Hieronder verstaan we, dat berichten die we ontvangen onderweg niet veranderd zijn. Als je je bijvoorbeeld aanmeldt voor een online spel, dan krijg je soms een e-mail waarin je de aanmelding moet bevestigen. Als een crimineel dat bericht onderschept en de oorspronkelijke link ter bevestiging vervangt door een eigen link, dan kan deze crimineel misbruik maken van alles wat je via de gegeven link doet. Tot slot willen we ook zeker weten, dat de verzender van een bericht ook daadwerkelijk de persoon of instantie is waarvan we het bericht verwachten. Dit noemen we authenticiteit. Stel een crimineel stuurt jou een bericht, met daarin een link naar een inlogpagina die lijkt op die van je bank. Als je daar je gebruikersnaam en wachtwoord invult, dan heeft die crimineel vervolgens toegang tot jouw account.
opgave 3.1 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) Geheimhouding betekent dat je de sleutels van je cryptografiemethode geheimhoudt. b) Integriteit betekent dat je zeker weet dat de verzender ook daadwerkelijk degene is van wie je de boodschap verwacht. c) Authenticiteit betekent dat het verzonden bericht niet veranderd is tijdens het transport
opgave 3.2 Bedenk voor elk aspect nog een voorbeeld.
- 11 -
4. toepassingen In de inleiding hebben we al een aantal voorbeelden van cryptografie in ons dagelijks leven gezien, zoals betalen via internet, beveiliging van draadloze netwerken en gewoon e-mailen.
opgave 4.1 Zoek zelf nog drie toepassingen van cryptografie in je dagelijks leven.
Cryptografie heeft als doel het beschermen van gevoelige informatie. Daar heeft het digitale tijdperk niets aan veranderd. Alleen is de hoeveelheid gevoelige informatie sterk toegenomen. De meest voorkomende vormen van dit soort informatie zijn:
gebruikersnamen
wachtwoorden
PIN codes
cryptografiesleutels
persoonlijke informatie
strategische informatie
opgave 4.2 Bedenk vijf concrete dingen die voor jezelf als gevoelige informatie gelden.
We hebben het al gehad over computers die gebruikt worden om versleutelde boodschappen te kraken. Computers zijn echter ook handig om boodschappen te versleutelen en te ontcijferen. Bovendien zijn ze uitermate geschikt om veilige cryptografiemethodes te ontwikkelen. De software die gebruikt wordt voor het versleutelen en ontcijferen zie je als gebruiker meestal niet direct. Veel mensen hebben bijvoorbeeld niet door dat, wanneer ze naar de inlogpagina van hun bank gaan, er in de URL niet http://... maar https://... staat. En zelfs als ze het doorhebben snappen ze niet wat het verschil precies is.
- 12 -
Figuur 6: een veilige verbinding met een bank
informatie opslag Tot nu toe hebben we het voornamelijk gehad over het versturen en ontvangen van berichten en de beveiliging daarvan. Maar hoe zit het daarna? Stel we hebben een belangrijk bericht ontvangen en we gaan dat opslaan. Bijvoorbeeld op onze telefoon, laptop of op een USB stick. Is de informatie dan nog steeds goed beveiligd? Op een USB stick zit vaak geen wachtwoord maar zelfs als dat erop zit dan is dit door experts vaak relatief makkelijk te omzeilen. Hetzelfde geldt voor een telefoon en laptop waar meestal wel standaard een code of wachtwoord op zit.
9
Het bovenstaande is met name belangrijk voor mensen die een beroep hebben waarbij ze veel in aanraking komen met gevoelige informatie, zoals advocaten, artsen, hooggeplaatste ambtenaren enzovoorts. We zien bijvoorbeeld wel eens berichten in het nieuws over mensen, met zo'n beroep, die hun laptop of USB stick "verloren" zijn. Met als gevolg dat de gevoelige informatie die erop staat ineens openbaar is. Een voorbeeld is het volgende artikel: Volkskrant - USB stick ministerie op straat Maar niet alleen bij draagbare apparaten speelt dit een rol. Ook voor vaste systemen in ministeries, politiebureaus, ziekenhuizen enzovoorts is de beveiliging van opgeslagen informatie belangrijk. Er kan immers ingebroken worden of er kunnen hackers van buitenaf toegang krijgen tot zulke systemen.
9
www.gsmstunts.nl/images/toestellen/mobiel_internet_laptop/hp620/hp620-nokia6300stick.jpg - 13 -
10
11
Een mogelijke oplossing hiervoor zijn de zogenaamde cryptographic file systems. Een lijst van zulke systemen is te vinden op Wikipedia cryptographic file systems. Het idee is dat bestanden niet als gewone tekst maar als versleutelde tekst worden opgeslagen. Hierbij kunnen dezelfde vormen van cryptografie worden gebruikt als bij het verzenden en ontvangen van berichten. Het nadeel hiervan is dat het lezen en schrijven van zulke bestanden trager is. Maar bij gevoelige informatie weegt de gewonnen veiligheid ruimschoots op tegen dit nadeel. Versleutelde informatie opslaan kan natuurlijk niet alleen op een vaste computer of laptop, maar ook op USB sticks, externe harde schijven, enzovoorts. Als we nog een stap verder willen gaan, dan kunnen we zelfs gaan denken over het versleutelen van de data in het RAM van onze computers. De CPU werkt immers vanuit het RAM, dus alle gevoelige informatie, zoals wachtwoorden, cryptografiesleutels enzovoorts, komt daar in te staan. In de volgende twee artikelen worden methodes beschreven om hier mogelijk misbruik van te maken:
cryogenically frozen RAM bypasses all disk encryption methods
cold boot attack
Deze methodes klinken redelijk ver gezocht maar als criminelen bepaalde informatie echt willen hebben behoren de beschreven methodes tot de mogelijkheden.
Figuur 7: RAM12
Voor het versleutelen van de inhoud van het RAM lijkt vooralsnog geen oplossing te zijn, omdat de cryptografiesleutels voor het versleutelen en ontcijferen dan toch onversleuteld in het RAM moeten staan.
digitale handtekening Cryptografie wordt ook toegepast bij digitale handtekeningen. Een digitale handtekening is een unieke persoonlijke code, die ter vervanging van de traditionele handtekening kan dienen. Hiervoor is het wel belangrijk dat een betrouwbare methode gebruikt wordt. Als dat het geval is, dan kun je een digitale handtekening
10 11 12
www.jijenjewijk.nl/files/Politiebureau_0.jpg www.taxicentralelichtstad.nl/ziekenhuizen/mmceindhoven
www.easy-computer-tech.com/images/ddr2-ram.jpg - 14 -
bijna niet vervalsen. Dit heeft nog een ander voordeel. Als iemand namelijk een contract heeft ondertekent, dan kan hij veel moeilijker ontkennen dat de handtekening onder het contract van hem is. Dat kan namelijk alleen als hij zijn sleutel om te ondertekenen niet geheim heeft gehouden. We noemen dit onweerlegbaarheid (non-repudiation).
13
14
Figuur 8: digitale handtekening
In Europa is de digitale handtekening al geruime tijd juridisch gelijkgesteld aan de traditionele handtekening. We gaan in het volgende hoofdstuk nog wat dieper in op digitale handtekeningen.
fysieke beveiliging Tot slot bestaan er nog beveiligingen op basis van fysieke eigenschappen van een mens. Deze kunnen traditionele methodes, zoals gebruikersnamen, PIN codes en wachtwoorden, vervangen. Denk hierbij aan de digitale vingerafdruk en irisscan. Het controleren van een vingerafdruk of irisscan gebeurt uiteraard weer door computersystemen.
15
16
Figuur 9: digitale vingerafdruk en irisscan
13 14 15 16
www.ezpress.eu/ez_image.php?id=3115&f=0
alexion.nl/wp-content/uploads/2011/01/digitale_handtekening.png zaplog.nl/zaplog/article/bank_eist_vingerafdruk_van_man_zonder_armen nl.wikipedia.org/wiki/Irisscanner - 15 -
opgave 4.3 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) Gevoelige informatie is altijd persoonlijke informatie. b) Computers worden alleen gebruikt om codes te kraken en boodschappen te versleutelen. c) Als er HTTP:// in de adresbalk van je browser staat heb je een veilige verbinding. d) Je kunt ook cryptografie toepassen op opgeslagen data. e) Cryptographic file systems worden alleen toegepast op draagbare apparaten. f) Een cryptographic file system gebruiken om je RAM te beveiligen is verstandig. g) Digitale handtekeningen zijn onder andere handig om onweerlegbaarheid aan te tonen. h) In Europa is de digitale handtekening gelijk gesteld aan de traditionele.
- 16 -
5. moderne cryptografie Zoals gezegd worden tegenwoordig bijna altijd computers ingezet wanneer het gaat om cryptografie. Veel mensen geloven dat, welke vorm van beveiliging iemand ook bedenkt, er altijd iemand anders is die deze beveiliging na verloop van tijd kan kraken of omzeilen. Tot nu toe lijkt dit waar te zijn. Computers worden steeds sneller en kunnen met een zogenaamde brute force methode in bepaalde gevallen cryptografiesleutels kraken. Brute force wil zeggen dat een computer simpelweg alle mogelijkheden uitprobeert tot dit succesvol is. Het nadeel van brute force methodes is dat ze tijd kosten. Misschien is "nadeel" niet het goede woord hier, tenzij je een hacker bent. Het tijdsaspect is tegenwoordig echter wel een belangrijke factor in de cryptografie. Omdat we met computers relatief makkelijk boodschappen kunnen versleutelen en ontcijferen, is het minder vervelend om de cryptografiesleutel vaak te veranderen. Als we een sleutel niet langer gebruiken dan de minimale tijd, die naar schatting nodig is om hem te kraken, dan zijn we veilig. We koppelen dus vaak een geldigheidsduur aan cryptografiesleutels. Bij bijvoorbeeld internetbankieren, wordt het tijdsaspect door banken gebruikt. De Rabobank had bijvoorbeeld de Random Reader (die intussen vervangen is door de Rabo Scanner, maar het idee daarachter is hetzelfde). Als je wilt inloggen stop je je bankpas in de reader, voert je bankrekeningnummer in en je PIN code. De Random Reader genereert dan een random inlogcode die een beperkte tijd geldig is, bijvoorbeeld één minuut. Bij een overschrijving doe je hetzelfde. De ING heeft iets soortgelijks bij het doen van overschrijvingen. Hierbij wordt door een computer bij de ING een random code gegenereerd die vervolgens naar de gebruiker opgestuurd wordt via SMS.
Figuur 10: de Random Reader van de Rabobank17
Zelfs als zulke codes onderschept worden zijn ze zo kort bruikbaar dat het onmogelijk is ze op tijd uit het bericht te halen en te misbruiken. Immers de codes worden via een beveiligde HTTP verbinding (HTTPS) over het internet verstuurd.
17
www.winmagpro.nl/content/rabobank-zet-streep-door-random-reader - 17 -
Voor het versturen en ontvangen van berichten werken de bovenstaande methodes prima. Voor opgeslagen informatie is het niet zinvol om sleutels te hebben die maar één minuut geldig zijn. Je zou dan iedere minuut alle opgeslagen informatie moeten ontcijferen en daarna weer met een nieuwe sleutel moeten versleutelen en opslaan. Dit is bij significante hoeveelheden informatie niet iedere minuut mogelijk. Maar zelfs sleutels die één dag geldig zijn, zijn onhandig. Daarom is men continu bezig met het ontwikkelen van nieuwe cryptografiemethodes, die nog langzamer te kraken zijn dan de bestaande.
opgave 5.1 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) Met een brute force methode kun je iedere cryptografie sleutel kraken als je maar genoeg tijd hebt. b) Als je sleutel korter geldig is dan de tijd die een brute force methode gemiddeld nodig heeft om de sleutel te kraken dan is het veilig. c) Banken maken gebruik van de beperkte geldigheid van codes om zo de veiligheid te verhogen. d) Ook al hebben we computers om ons te helpen, het is vervelend om telkens de cryptografie sleutels te veranderen. e) Voor opgeslagen data is het ook handig om cryptografie sleutels een beperkte geldigheidsduur te geven.
secure protocols Bij informatica hebben we het al gehad over datacommunicatie protocollen. Hier ben je, als het goed is, de term secure protocol tegengekomen. Er zijn veel van deze protocollen. HTTPS is er één van. Dit protocol zorgt onder andere voor authenticatie tussen de website in je webbrowser en de webserver. Dit voorkomt zogenaamde man-in-the-middle aanvallen. Bij dit soort aanvallen wordt er een malafide (kwaadwillende) webserver tussen de website in je browser en de echte webserver geplaatst. Deze webserver vangt alle communicatie af en slaat deze op. De beheerder van de malafide webserver kan op die manier gevoelige informatie aftappen. De malafide webserver gedraagt zich precies hetzelfde als de echte webserver, zodat je als gebruiker niet doorhebt dat je niet direct met de echt webserver communiceert, zie Wikipedia.
- 18 -
opgave 5.2 Maak een schematisch overzicht (met uitleg) van hoe een man-inthe-middle aanval opgezet kan worden.
HTTPS maakt gebruik van TLS (Transport Layer Security), of diens voorganger SSL (Secure Socket Layer). TLS zorgt voor de versleuteling, ontcijfering en integriteit van boodschappen. TLS maakt onder andere gebruik van MD5 en SHA, dit zijn zogenaamde cryptographic hash functions.
opgave 5.3 Bestudeer de pagina Cryptographic hash function tot aan het "contents" blok. Leg in je eigen woorden uit wat een cryptographic hash function is.
opgave 5.4 Ga naar de MD5 generator. Typ een zin in, kijk naar de hash, verander de zin een klein beetje (bijvoorbeeld vervang de eerste hoofdletter door een kleine letter) en kijk wat er gebeurt. Kijk ook eens wat er gebeurt als je één letter invult of als er niks in het invulveld staat.
opgave 5.5 Bekijk de pagina Hash function en bedenk zelf een hash function.
Zoals je hopelijk ontdekt hebt wordt MD5 niet gebruikt voor versleuteling. Daar gebruiken TLS en SSL een cryptografiemethode genaamd AES (Advanced Encryption Standard) voor. AES is een tamelijk complex algoritme waarvan je de werking niet hoeft te kennen. Als je geïnteresseerd bent in het algoritme kun je kijken op Wikipedia AES.
- 19 -
opgave 5.6 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) Een man-in-the-middle aanval kan worden voorkomen door de integriteit van de berichten te waarborgen. b) MD5 is een cryptographic hash function waarmee we de integriteit van de berichten kunnen waarborgen. c) SHA is uitermate geschikt om berichten te versleutelen. d) AES heeft feitelijk dezelfde functie als SHA of MD5.
digitale handtekening De zaken, die een rol spelen bij HTTPS en TLS, zijn ook belangrijk bij digitale handtekeningen. Cryptographic hash functions zijn bijvoorbeeld essentieel om het vervalsen van handtekeningen te detecteren. Ze zorgen er immers voor dat de kleinste wijzigingen gedetecteerd worden. Vervolgens wordt ook hier een cryptografiemethode toegepast op de verkregen hash. De kwaliteit van de gebruikte cryptographic hash function en de cryptografiemethode bepalen hoe moeilijk een digitale handtekening te vervalsen is. De cryptografiemethode voor digitale handtekeningen is RSA (genoemd naar de uitvinders). RSA op zichzelf is echter niet betrouwbaar gebleken. Om RSA heen heeft men daarom nog een zogenaamd scheme gebouwd, dat vervalsing van de handtekening tegengaat. Op het moment zijn er schemes die men als niet te vervalsen beschouwt, zoals het GMR signature scheme (ook weer vernoemd naar de uitvinders). De gebruikte cryptographic hash function en de cryptografiemethode zijn onderdeel van het scheme. Verderop ga je zelf aan de slag met RSA.
opgave 5.7 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) Bij digitale handtekeningen zijn zaken als cryptographic hash functions overbodig. b) RSA is een veilige methode en kan op zich staan. c) Een "scheme" is noodzakelijk om het vervalsen van digitale handtekeningen tegen te gaan.
- 20 -
certificaten Digitale handtekeningen worden vaak opgenomen in zogenaamde certificaten. Als je bijvoorbeeld software installeert, dan zie je bij betrouwbare leveranciers dat ze een link naar hun certificaat bijvoegen. In Figuur 11 zie je bij Uitgever een link staan naar een certificaat.
Figuur 11: GameMaker 8.1 installatie
Als je op de link klikt, dan krijg je de digitale handtekening te zien. In Figuur 12 zie je dat deze uitgever zijn handtekening heeft gezet op 18 januari 2012. Als we vervolgens het certificaat weergeven, dan kunnen we de geldigheidsduur ervan zien en bepalen of de handtekening daarbinnen gezet is. In Figuur 13 kun je zien, dat de handtekening gezet is toen het certificaat nog geldig was.
Figuur 12: digitale handtekening
- 21 -
Figuur 13: de certificaat informatie
opgave 5.8 Leg uit waarom certificaten een beperkte geldigheidsduur hebben?
Digitale handtekeningen en certificaten moeten uiteraard geregistreerd worden. Dit moet bij een geautoriseerde instantie gebeuren. Als we iedereen digitale handtekeningen en certificaten laten uitdelen, dan verliezen ze immers hun waarde. VeriSign is een grote speler op dit gebied. Er zijn echter meerdere bedrijven die namens VeriSign handtekeningen en certificaten mogen uitgeven. In Nederland zijn er ook een aantal van zulke bedrijven. KPN Telecom is er één van.
- 22 -
opgave 5.9 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) Een digitale handtekening bij software zit typisch in een certificaat. b) Certificaten mogen door ieder bedrijf uitgegeven worden.
opgave 5.10 Haal de GameMaker 8.1 installer uit de ELO en zet hem in C:\temp. Run vervolgens het programma en klik op de link naar het certificaat zoals je zag in Figuur 11. Klik op de tabs en knoppen en probeer te achterhalen welke cryptografiemethodes er gebruikt worden.
draadloze communicatie Tot nu toe hebben we het nog niet gehad over de beveiliging van draadloze communicatie. Gebeurt dit met dezelfde cryptografiemethodes als bij een vaste verbinding? Het antwoord hierop is ja. De beveiliging van het internetverkeer, bij bijvoorbeeld internetbankieren, wordt op hoog niveau geregeld en onafhankelijk van het fysieke transmissiemedium, zijnde een draad of de lucht. We zien dus als gebruiker geen verschil tussen draadloos en niet draadloos internetbankieren. We gebruiken in beide gevallen HTTPS voor versleutelen, ontcijferen, integriteit en authenticiteit.
Figuur 14: draadloze communicatie18
18
www.dtsonline.nl/images/draadloos_internet.jpg - 23 -
In een netwerk met draadloze componenten zit echter een apparaat dat er niet is bij een netwerk met alleen draden. Dit apparaat is de WAP (Wireless Access Point); oftewel de draadloze toegang tot je netwerk. Toegang krijgen tot een netwerk in iemands huis, waarin alleen draden gebruikt worden, is niet makkelijk. Dit netwerk is alleen toegankelijk via de fysieke draad naar de router. Als er echter een WAP in je netwerk zit, dan is dit anders. Het bereik van een WAP ligt vaak een heel stuk buiten je huis. Zoals je in de module software hebt gezien, bestaan er bijvoorbeeld wardrivers die hier misbruik van proberen te maken. Daarom moet een WAP goed beveiligd worden, zodat mensen buiten je huis niet zomaar op je netwerk kunnen komen. Eén van de eerste protocollen die gebruikt werd voor het beveiligen van een WAP was WEP (Wired Equivalent Privacy, vaak foutief Wireless Encryption Protocol genoemd). Hoewel de naam suggereert dat je netwerk door dit protocol net zo veilig wordt als een netwerk met alleen bedrade verbindingen, bleek dit niet het geval te zijn. WEP werd daarom opgevolgd door WPA (Wi-Fi Protected Access) en al heel snel daarna door versie 2 van dat protocol, genaamd WPA2. Door WPA2 aan te zetten op je WAP, worden pakketten van en naar je WAP versleuteld met behulp van AES. Informatie over deze protocollen kun je vinden via Wikipedia WPA. Een interessante link, die aangeeft waarom je altijd het default (standaard) wachtwoord/sleutel van je wireless router moet veranderen, is WebWereld Wi-Fi routers lekken WPA2 wachtwoord.
opgave 5.11 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) Als gebruiker merk je niet of je draadloos internetbankiert of dat je dit via een vaste verbinding doet. b) WEP staat voor Wireless Encryption Protocol. c) WPA is geïntroduceerd omdat WEP niet veilig genoeg was. d) Het standaard wachtwoord op een draadloze router is in principe veilig genoeg.
- 24 -
6. symmetrisch versus asymmetrisch Voor we met twee moderne concrete methoden beginnen, is het belangrijk het verschil tussen symmetrische en asymmetrische cryptografie te snappen. Bij symmetrische cryptografie hebben alle partijen dezelfde sleutel om te versleutelen en te ontcijferen. Het is dan ook belangrijk dat alle partijen de sleutel geheimhouden en dat deze tijdens transport niet onderschept kan worden. Wanneer er twee partijen moeten communiceren, is het uitwisselen van sleutels relatief makkelijk. De Diffie-Hellman methode die we verderop gaan bekijken is hier een voorbeeld van. Echter, wanneer er veel partijen met elkaar moeten communiceren wordt het uitwisselen van sleutels steeds minder praktisch. Daarom kreeg men al snel behoefte aan een praktischere methode, dan symmetrische cryptografie, voor het uitwisselen van informatie. Toch wordt symmetrische cryptografie ook nu nog toegepast binnen de communicatietechnologie. De eerste gepubliceerde standaard voor symmetrische cryptografie is DES (Data Encryption Standard). Om veiligheidsredenen werd DES opgevolgd door AES (Advanced Encryption Standard). AES wordt onder andere ook gebruikt bij het beveiligen van informatie in RAR en ZIP bestanden. Verder maken de meeste versies van Microsoft Windows gebruik van AES in hun Encrypting File System.
opgave 6.1 Stel twee mensen willen via geheimschrift communiceren. Ze willen gebruik maken van symmetrische cryptografie. Het probleem is echter dat ze elkaar niet fysiek kunnen ontmoeten om de cryptografiesleutel uit te wisselen. Bedenk een zo veilig mogelijke manier om de sleutel van de ene naar de andere partij te krijgen. Bedenk vervolgens ook een manier om als buitenstaander de communicatie tussen deze twee personen af te luisteren.
Zoals gezegd, is symmetrische cryptografie minder handig voor het uitwisselen van informatie. Daarom is in 1976 asymmetrische cryptografie bedacht. Hierbij heb je twee cryptografiesleutels in plaats van één. De ene sleutel heet de publieke sleutel (public key of encryption key) en de andere heet de privé sleutel (private key of decryption key). Deze vorm van cryptografie wordt daarom ook wel public-key cryptography genoemd. De RSA methode die we verderop gaan bekijken is hier een voorbeeld van.
- 25 -
In Figuur 15 kun je zien hoe asymmetrische cryptografie werkt. Feitelijk kan iedereen, die de publieke sleutel heeft, jou nu een versleuteld bericht sturen dat alleen jij kunt ontcijferen. Omdat er een publieke sleutel is, die je vrijelijk kunt verspreiden, maakt het niet uit hoeveel mensen met je willen communiceren.
Figuur 15: asymmetrische cryptografie19
opgave 6.2 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) RSA wordt tegenwoordig nog in de praktijk gebruikt. b) Symmetrische cryptografie is veiliger dan asymmetrische cryptografie. c) DES is een vorm van symmetrische cryptografie. d) Bij asymmetrische cryptografie heb je twee sleutels. e) Iedereen die jou een bericht wil sturen krijgt jouw public key en versleutelt daarmee zijn of haar berichten.
19
www.sociosite.org/cryptografie.php - 26 -
opgave 6.3 Bedenk een manier om een systeem dat van asymmetrische cryptografie gebruik maakt te omzeilen.
- 27 -
7. Diffie-Hellman Je hebt intussen al een heleboel gelezen, en hopelijk ook geleerd, over cryptografie. Je hebt ook geoefend met eenvoudige cryptografiemethodes, zoals rotaties en substituties. In de rest van deze module ga je kijken naar en werken met een tweetal moderne methodes. De eerste methode die we gaan bekijken is DiffieHellman, genoemd naar de uitvinders. De Diffie-Hellman methode is bedoeld om een symmetrische sleutel op een veilige manier uit te wisselen met iemand anders. Daarna kan deze sleutel gebruikt worden om boodschappen te versleutelen. Om Diffie-Hellman betrouwbaar te kunnen gebruiken, is het belangrijk dat er een authenticatiemethode omheen wordt gebruikt. Het heeft immers geen zin om sleutels uit te wisselen, als je er niet 100 procent zeker van bent dat de andere partij de juiste is. Het authenticatie stuk zullen we echter niet bekijken en gebruiken in deze methode. In Figuur 16 is uitgebeeld hoe de Diffie-Hellman methode globaal werkt. Het proces dat je afgebeeld ziet ga je straks zelf naspelen met behulp van het programma van dr. Benne de Weger, Universitair Docent Cryptologie aan de TU/e. In de handleiding van dit tool, op de website van dr. De Weger, krijg je meer informatie over hoe je het speciale getal g kiest en de geheime getallen x en x' genereert. Deze getallen moeten namelijk aan complexe voorwaarden voldoen, waar we hier niet te diep op in willen gaan.
Figuur 16: Het afleiden van een sleutel met Diffie-Hellman. - 28 -
De methode moet ervoor zorgen dat beide partijen uiteindelijk dezelfde geheime sleutel hebben. Dat betekent dus, dat moet gelden dat s = s'. Laten we eens kijken of dat zo is.
𝑠 = 𝑦′𝑥 𝑚𝑜𝑑 𝑝 = (𝑔 𝑥′ 𝑚𝑜𝑑 𝑝) 𝑥 𝑚𝑜𝑑 𝑝 = (𝑔 𝑥′ )𝑥 𝑚𝑜𝑑 𝑝 = 𝑔 𝑥′∙𝑥 𝑚𝑜𝑑 𝑝 𝑠′ = 𝑦 𝑥′ 𝑚𝑜𝑑 𝑝 = (𝑔 𝑥 𝑚𝑜𝑑 𝑝)𝑥′ 𝑚𝑜𝑑 𝑝 = (𝑔 𝑥 )𝑥′ 𝑚𝑜𝑑 𝑝 = 𝑔 𝑥∙𝑥′ 𝑚𝑜𝑑 𝑝 En inderdaad zien we dat geldt: s = s'. Zowel partij A als partij B hebben nu dus dezelfde sleutel en deze is niet bekend bij andere, bijvoorbeeld kwaadwillende, partijen. Het afleiden van deze sleutel is bovendien moeilijk, wanneer we de juiste waardes kiezen voor p, g, x en x'. Op de Wikipedia Diffie-Hellman pagina vind je de uitleg van de methode met iets andere letters en een voorbeeld. Genoeg theorie, je gaat nu zelf aan de slag.
opgave 7.1 Download het MCR programma (een Java applet) van de website van dr. Benne de Weger, zet het in C:\temp op de harde schijf van je computer en start het op. Klik hiervoor in de website op de afbeelding van de laptop met daaronder "Start MCR" (links bovenin). De handleiding vind je ook op de webpagina, daarvoor ga je naar "6. Diffie-Hellman: gedeeld geheim" onder "Gebruiksvoorbeelden" (rechts bovenin). Speel eerst zelfstandig, uit de handleiding, het niet helemaal realistische scenario (het bovenste) na. Hiermee ga je oefenen met het genereren van sleutels en het versleutelen en ontcijferen van getallen, die een boodschap voorstellen. Zoek iemand om mee samen te werken en doe samen het tweede scenario "Een realistischer variant van Diffie-Hellman".
- 29 -
8. RSA Nu je de Diffie-Hellman methode hebt bestudeerd en toegepast, kunnen we de stap naar een complexere methode maken: de RSA cryptografiemethode. Deze methode wordt in de praktijk gebruikt bij bijvoorbeeld digitale handtekeningen, zoals je hebt kunnen zien. RSA is een asymmetrische cryptografiemethode. Het RSA algoritme om de privé en publieke sleutels te bepalen zie je in Figuur 17. Dit algoritme wordt op een iets andere manier uitgelegd op Wikipedia RSA of de veel uitgebreidere en completere Engelstalige Wikipedia RSA.
Figuur 17: sleutels bepalen met RSA20
De m (van modulo) bepaalt hoeveel tekens we kunnen versleutelen; oftewel hoe groot ons alfabet is. In het bovenstaande geval kunnen we dus maximaal 10 tekens in ons alfabet hebben. Het moge duidelijk zijn, dat 10 tekens niet praktisch is. Een realistisch voorbeeld is echter lastig te doorzien, vandaar dat we hier een speelgoed voorbeeld gebruiken. De letter E (van encryption key) duidt, samen met m, de publieke sleutel aan. Deze sleutel mag iedereen hebben, vandaar de naam. De letter D (van decryption key) duidt, samen met m, de privé sleutel aan. Deze sleutel moet je geheimhouden zoals de naam al impliceert.
20
F. Tapson; Public Key Cryptography; 1998 (www.cimt.plymouth.ac.uk/resources/topics/art003.pdf) - 30 -
opgave 8.1 Bekijk het algoritme in Figuur 17 goed (voor het algoritme kun je ook op Wikipedia RSA kijken). Het algoritme op zich klopt maar het is niet helemaal volledig. Kun je een zinvolle voorwaarde bedenken die nu ontbreekt? Hint: ?D roov nedrow nak nezokeg eid edraaw egine ed 7 = D sI
Als we de publieke en privé sleutels hebben bepaald, dan kunnen we berichten gaan versleutelen en ontcijferen. In ons voorbeeld zullen we een boodschap teken voor teken versleutelen en ontcijferen. In de praktijk gebeurt dat echter niet. Daar wordt een heel blok tekens in één keer versleuteld of ontcijferd. We kunnen echter niet rekenen met tekens, zoals letters en leestekens. Daarom moeten we de tekens afbeelden op getallen, zodat we met die getallen kunnen rekenen. De berekende getallen kunnen we dan, met dezelfde afbeelding, weer vertalen naar tekens. In het voorbeeld uit Figuur 17 kunnen we dus 10 tekens gebruiken. Dit is niet voldoende om het hele Nederlandse alfabet te vertegenwoordigen. We kunnen echter wel een deelverzameling pakken. Bijvoorbeeld: A = 0, D = 1, E = 2, K = 3, L = 4, N = 5, O = 6, R = 7, S = 8 en T = 9. Voor het versleutelen van een teken, vertegenwoordigd door het geval n, gebruiken we de formule21: c = nE modulo m c vertegenwoordigd het teken in de versleutelde boodschap, dat overeenkomst met het teken dat n vertegenwoordigd in de niet versleutelde boodschap. De niet versleutelde boodschap wordt overigens vaak de klare tekst genoemd. Om uit c het teken af te leiden is dezelfde afbeelding nodig als die gebruikt is om n te bepalen uit het teken in de klare tekst. Voor het ontcijferen gebruiken we de formule: n = cD modulo m
21
In de formules wordt m gebruikt voor het product van de priemgetallen p en q zoals aangegeven in Figuur 17. Dit in tegenstelling tot Wikipedia waar N wordt gebruikt. - 31 -
Versleutelen en ontcijferen op deze manier is mogelijk, omdat we D, E en m zo gekozen hebben dat geldt: ((XE)D) modulo m = X modulo m en ((XD)E) modulo m = X modulo m Het bewijs hiervoor kun je vinden op de Engelstalige Wikipedia RSA pagina. Je ziet dat modulo rekenen hier belangrijk is. Als je niet (meer) weet hoe dat werkt, kijk dan eens op modulo rekenen. Bij grote getallen heeft je rekenmachine een tekortkoming. Het grootste getal, dat je rekenmachine aankan, is mogelijk kleiner dan wat er uit een machtsverheffing komt. In dat geval, moet je zelf slim gaan rekenen met de formules. De belangrijkste formule hierbij is:
((𝑎 𝑚𝑜𝑑𝑢𝑙𝑜 𝑚) × (𝑏 𝑚𝑜𝑑𝑢𝑙𝑜 𝑚)) 𝑚𝑜𝑑𝑢𝑙𝑜 𝑚 = (𝑎 × 𝑏) 𝑚𝑜𝑑𝑢𝑙𝑜 𝑚 Zorg dus dat je deze kent en ermee oefent. Op het SE heb je dit nodig. Laten we eens naar een voorbeeld kijken waarbij we de sleutels uit Figuur 17 gebruiken. Stel we willen het woord BAD versleutelen. Omdat de waarde van m gelijk is aan 10, kunnen we maximaal 10 tekens in ons alfabet hebben. Laten we als alfabet A t/m J nemen, waarbij A gelijk is aan het getal 0, B aan het getal 1 enzovoorts. Ons te versleutelen woord BAD is dan in getallen 1 0 3. Met de formules die we hiervoor hebben gezien kunnen deze getallen dan versleutelen. Dit gaat als volgt: B = 1 13 modulo 10 = 1 = B A = 0 03 modulo 10 = 0 = A D = 3 33 modulo 10 = 7 = H Voor het versleutelen gebruiken we E (de encryption key) en m. De ontvanger kan de boodschap dan weer ontcijferen met D (de decryption key) en m. Dit gaat als volgt: B = 1 17 modulo 10 = 1 = B A = 0 07 modulo 10 = 0 = A 7
H = 7 7 modulo 10 = 3 = D
- 32 -
opgave 8.2 Stel we nemen weer D = 7, E = 3 en m = 10, zoals aangegeven in het voorbeeld in Figuur 17. We kunnen dan, zoals eerder gezegd, 10 tekens versleutelen. Stel we gebruiken de onderstaande afbeelding van letters of cijfers. A B D E H I N K O P 0 1 2 3 4 5 6 7 8 9 Versleutel nu de boodschap: IKBEN
opgave 8.3 Laat zien dat het ontcijferen van het versleutelde bericht, uit de vorige opgave, inderdaad werkt.
Natuurlijk doen we het versleutelen en ontcijferen van dit soort berichten, normaal gesproken, niet met de hand maar met een computer. Ook het bepalen van de privé en publieke sleutel doen we met een computer. Met kleine getallen voor p en q is het met de hand namelijk nog wel te doen, maar zodra de getallen groter worden kan het niet zonder computer. We hebben zojuist gezien dat we de tekens (in ons geval letters) uit ons alfabet niet direct versleutelen. We beelden een teken eerst af op een getal dat past binnen het aantal tekens dat we kunnen versleutelen (m). In de praktijk beelden we echter geen tekens uit het alfabet op getallen af. Er wordt dan met blokken van tekens gewerkt. Bovendien wordt een boodschap niet direct versleuteld maar eerst door een cryptographic hash function gehaald om ervoor te zorgen dat we de integriteit van de boodschap kunnen waarborgen. De resulterende hash wordt vervolgens ook opgedeeld in stukken en aan de boodschap toegevoegd. Pas daarna wordt het geheel versleuteld.
- 33 -
opgave 8.4 Neem zelf een p en q die groter zijn dan in het voorbeeld van Figuur 17. Bepaal op basis daarvan zelf D, E, en m. Het is daarbij handig om een m groter dan 25 te nemen, zodat je bijvoorbeeld alle letters uit het alfabet kunt gebruiken. Versleutel en ontcijfer nu eens een boodschap van bijvoorbeeld 4 of 5 letters.
Grote getallen voor p en q zijn essentieel bij RSA om het algoritme veilig te maken. In de opgaves zag je al, dat veel cijfers onveranderd blijven door de versleutelingsformule en dat wil je in de praktijk natuurlijk niet. Bovendien zijn de waarde van p en q makkelijk te raden als je weet dat m gelijk is aan 10.
opgave 8.5 Bepaal p, q en D als we weten dat E = 83 en m = 115.
Maar zelfs als we hele grote getallen voor p en q gebruiken, dan kan het zijn dat ze toch nog te achterhalen zijn door computers in te zetten. Daarom moeten p en q in de praktijk aan een heleboel voorwaarden voldoen, zodat ze niet, of in ieder geval heel moeilijk, te achterhalen zijn. Als je geïnteresseerd bent in hoe dit werkt, kijk dan eens op Wikipedia RSA bij "Veiligheid" en "Praktische bedenkingen".
opgave 8.6 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) Je moet kunnen modulo rekenen als je zelf met RSA encryptie wilt spelen. b) De basis van de uiteindelijke RSA sleutels zijn twee priemgetallen. c) De functies die we bij RSA gebruiken om te versleutelen en ontcijferen zijn elkaars inverse. d) Als m het resultaat is van de vermenigvuldiging van onze RSA basisgetallen, dan kunnen we een alfabet met 2m tekens versleutelen.
- 34 -
e) RSA versleuteling en ontcijfering gebeurt nog steeds met de hand op sommige plekken. f) In de praktijk versleutelen we een boodschap direct met onze publieke RSA sleutel.
opgave 8.7 Zoek een medeleerling en ga samen aan de slag met RSA. Neem zelf een p en q die groter zijn dan in het voorbeeld van Figuur 17 en anders dan in opgave 8.4. Bepaal op basis daarvan zelf D, E, en m. Het is daarbij handig om weer een m groter dan 25 te nemen, zodat je bijvoorbeeld alle letters uit het alfabet kunt gebruiken. Stuur elkaar nu een korte boodschap.
snelheid RSA versleuteling en ontcijfering zijn relatief langzame computeralgoritmes. Zeker als je dit vergelijkt met symmetrische algoritmes zoals AES. Als je grote boodschappen moet versleutelen, dan is RSA daarom niet de meest geschikte manier. Voor digitale handtekeningen werkt het prima omdat die klein zijn. In het algemeen geldt dat asymmetrische cryptografie langzamer is dan symmetrische, omdat de sleutels complexer zijn en dat beïnvloedt de snelheid van versleutelen en ontcijferen negatief. Het beïnvloedt de veiligheid natuurlijk positief. De snelheid van RSA (of beter gezegd het gebrek daaraan) is dan ook de reden dat het niet gebruikt wordt door bijvoorbeeld TLS en cryptographic file systems. Daar worden toch symmetrische cryptografie methodes gebruikt, zoals AES. Dat symmetrische cryptografie wordt gebruikt bij cryptographic file systems is op zicht niet vreemd. Daar hoeven geen sleutels uitgewisseld te worden. Maar hoe zit dat dan bij TLS? In het geval van TLS, zijn de nadelen van symmetrische cryptografie, die we eerder hebben genoemd, wel relevant. Hoe kiezen we tussen veiligheid en snelheid. Dat doen we niet, want een aantal slimme mensen hebben bedacht dat je symmetrische cryptografie kunt combineren met asymmetrische. Dit werkt als volgt. We willen de grote boodschap, bijvoorbeeld een e-mail, beveiligen met symmetrische encryptie, bijvoorbeeld AES, vanwege de snelheid. De uitdaging daarbij is om de symmetrische sleutel R, die we daarvoor gebruiken, veilig - 35 -
te delen met de ontvanger(s) van de boodschap. De oplossing hiervoor is om de sleutel R te versleutelen met asymmetrische encryptie. Daarna kunnen we de versleutelde symmetrische sleutel meesturen met de versleutelde boodschap. Een sleutel is namelijk meestal niet heel groot en daarmee geschikt om asymmetrisch te versleutelen. Een bijkomend voordeel is, dat we nu voor elke boodschap een andere symmetrische sleutel kunnen gebruiken. Dit alles staat nog eens afgebeeld in Figuur 18. We zien in dit figuur hoe, in dit geval, PGP (Pretty Good Privacy) symmetrische en asymmetrische cryptografie combineert. Voor meer informatie over PGP kun je kijken op Wikipedia PGP.
Figuur 18: symmetrische cryptografie gecombineerd met asymmetrische22
Op deze manier krijgen we "best of both worlds". We hebben de snelheid van symmetrische cryptografie voor de grote hoeveelheid informatie en de betrouw-
22
en.wikipedia.org/wiki/Pretty_Good_Privacy - 36 -
baarheid van asymmetrische voor de kleine sleutel. Bovendien is de geldigheid van de symmetrische sleutel kort, want deze wordt steeds opnieuw gegenereerd.
opgave 8.8 Zijn de volgende beweringen waar of niet waar? Als je een bewering niet waar vindt moet je uitleggen waarom je dat vindt. a) RSA is uitermate geschikt voor zeer grote boodschappen. b) RSA wordt gebruikt bij cryptographic file systems. c) De nadelen van symmetrische cryptografie kunnen we opvangen door asymmetrische cryptografie op de symmetrische sleutel toe te passen. d) Omdat computers snel sleutels kunnen genereren en snel kunnen versleutelen en ontcijferen, is het regelmatig veranderen van de sleutels haalbaar en aan te raden.
- 37 -
9. wat heb je geleerd In de voorgaande hoofdstukken zijn veel dingen aan de orde gekomen. Van deze dingen ken je nu de algemene eigenschappen die genoemd zijn in de tekst. Bovendien kun je ze in een historische en maatschappelijke context plaatsen. Daarnaast heb je leren versleutelen en ontcijferen met een aantal cryptografiemethodes.
cryptografie
scytale
transpositionele cryptografie
Caesar cipher (Caesarrotatie)
substitutie cryptografie
rotatie cryptografie
alfabetische substitutie
frequentieanalyse
poly-alfabetische substitutie
Vigenère cipher
Tabula Recta
Kasiski test
geheimhouding
integriteit
authenticiteit
gevoelige informatie
gebruik van computers in cryptografie
cryptographic file systems
de rol van RAM
digitale handtekening
brute force
geldigheidsduur van cryptografiesleutels
secure protocol
HTTPS
man-in-the-middle aanval
TLS en SSL
cryptographic hash functions
AES
digitale handtekening
RSA
certificaat
fysieke transmissiemedium
WEP
WPA
WPA2
RSA
symmetrische cryptografie - 38 -
DES
asymmetrische cryptografie
publieke sleutel (public key)
privé sleutel (private key)
public-key cryptography
Diffie-Hellman versleuteling en ontcijfering
RSA versleuteling en ontcijfering
modulo rekenen
snelheid van cryptografiemethodes
PGP
- 39 -