Upcoming SlideShare
×

# Syllabus encryptie

1,113 views

Published on

Syllabus cursus encryptie.

Projectopdracht voor de Hogeschool van Utrecht. Blijkbaar bedoeld naast het boek "Netwerkbeveiliging en cryptografie".

Published in: Self Improvement
0 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

Views
Total views
1,113
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
9
0
Likes
0
Embeds 0
No embeds

No notes for slide

### Syllabus encryptie

1. 1. .. .. .. .. .. .. .. .. .. . Patrick Mackaaij, 1057782 Rick van Soest, 1059464 Freerk van Dijk, 1019472 Pieter de Boer, 1024975 Project 11, semester 6 . . Syllabus Encryptie . . . . . Aanvullende informatie bij het boek 1 . . .
3. 3. Inhoudsopgave INHOUDSOPGAVE................................................................................................................................3 VOORWOORD........................................................................................................................................6 OVERIG CURSUSMATERIAAL...................................................................................................................6 1. INTRODUCTIE...................................................................................................................................7 1.1 WAT IS ENCRYPTIE?.........................................................................................................................7 1.2 WAAROM ENCRYPTIE?......................................................................................................................7 1.2.1 Integriteit, authenticatie...........................................................................................................8 1.3 HOE WERKT ENCRYPTIE?..................................................................................................................8 1.4 ASYMMETRISCH, SYMMETRISCH.......................................................................................................8 1.5 RANDOM GETALLEN.......................................................................................................................10 1.6 HOE WERKT EEN HACKER?.............................................................................................................10 1.7 WAT MAAKT EEN STERK ALGORITME?...........................................................................................12 1.8 HOE VEILIG IS ENCRYPTIE?.............................................................................................................12 1.9 ENCRYPTIE EN NETWERKEN............................................................................................................13 1.20 LITERATUUR.................................................................................................................................14 2. DES......................................................................................................................................................16 2.1 GLOBALE BESCHRIJVING VAN DE LESSTOF.....................................................................................16 2.2 GEDETAILLEERDE BESCHRIJVING VAN DE LESSTOF........................................................................16 3. AES......................................................................................................................................................17 3.1 WAT IS AES?..................................................................................................................................17 3.2 AAN WELKE EISEN MOET AES VOLDOEN?.....................................................................................17 3.3 WELKE ALGORITMEN BEHOREN TOT DE MOGELIJKHEDEN?...........................................................18 3.3.1 MARS......................................................................................................................................19 3.3.2 RC6.........................................................................................................................................19 3.3.3 Rijndael...................................................................................................................................19 3.3.4 SERPENT................................................................................................................................20 3.3.5 Twofish....................................................................................................................................20 3.4 VAN DES NAAR AES.....................................................................................................................20 3.5 LITERATUUR...................................................................................................................................21 4. IDEA....................................................................................................................................................23 4.1 BESCHRIJVING VAN DE LESSTOF.....................................................................................................23 4.2 AFKORTINGEN EN TERMEN UIT HET BOEK......................................................................................23 5. RSA......................................................................................................................................................24 5.1 BESCHRIJVING VAN DE LESSTOF.....................................................................................................24 5.2 AFKORTINGEN EN TERMEN UIT HET BOEK......................................................................................24 6. PGP......................................................................................................................................................26 6.1 BESCHRIJVING VAN DE LESSTOF.....................................................................................................26 6.2 AFKORTINGEN EN TERMEN UIT HET BOEK......................................................................................27 6.3 OPDRACHT PGP PERSONAL INSTALLATIE......................................................................................28 6.4 PGP VIRTUELE HARDDISK..............................................................................................................30 6.4.1 Virtuele harddisk (PGPdisk)...................................................................................................30 6.4.2 Installatie / gebruik van PGP disk..........................................................................................30 6.5 WAT MAAKT EEN GOEDE WACHTZIN?............................................................................................33 6.5.1 Formule Passphrase Security.................................................................................................34 6.6 TIPS UIT DE PGP FAQ....................................................................................................................36 6.6.1 Gebruik de omgevingsvariabele niet......................................................................................36 6.6.2 Randseed.bin is niet geïnfecteerd door een virus...................................................................36 3
4. 4. 6.6.3 Verlies je sleutel en vergeet je wachtzin niet..........................................................................36 6.6.4 De PGP Developer Kit...........................................................................................................36 6.7 LITERATUUR...................................................................................................................................37 7. ENCRYPTIE IN JAVA MET JCA EN JCE...................................................................................39 7.1 BESCHRIJVING VAN DE LESSTOF.....................................................................................................39 7.2 INLEIDING OP JAVA.........................................................................................................................40 7.2.1 De gebruikte Java security API’s...........................................................................................40 7.2.2 JDK 1.3 ten opzicht van JDK 1.2.x.........................................................................................41 7.2.3 Practicumopdrachten.............................................................................................................41 7.2.4 Maak gebruik van een package..............................................................................................41 7.2.5 Standaard methoden...............................................................................................................41 7.2.6 Javacode in het Engels...........................................................................................................41 7.3 RANDOM GETALLEN.......................................................................................................................42 7.3.1 Random getallen met JDK......................................................................................................42 7.3.2 SecureRandom........................................................................................................................42 7.3.3 Self-seeding.............................................................................................................................42 7.3.4 Random data uit keyboard timing...........................................................................................43 7.3.4.1 Implementatie keyboard timer........................................................................................................43 7.3.4.2 Risico’s van de klasse seeder..........................................................................................................45 7.3.5 Implementatie van een progressbar........................................................................................46 7.3.6 Opdracht klasse seeder...........................................................................................................47 7.4 SLEUTELBEHEER.............................................................................................................................47 7.4.1 Werken met sleutels................................................................................................................47 7.4.2 Sleutels aanmaken: sleutelgeneratoren..................................................................................49 7.4.2.1 De sleutelpaargenerator..................................................................................................................49 7.4.2.2 De sleutelgenerator.........................................................................................................................50 7.4.2.3 Algoritmespecifieke instellingen....................................................................................................50 7.4.3 Sleutels overzetten..................................................................................................................51 7.4.3.1 SecretKeySpec................................................................................................................................51 7.4.3.2 SecretKeyFactory...........................................................................................................................52 7.4.3.3 SleutelFabriek.................................................................................................................................54 7.4.4 Sleuteluitwisseling..................................................................................................................54 7.4.5 Identity Sleutelbeheer.............................................................................................................56 7.4.5.1 Sleutelbezitters...............................................................................................................................57 7.4.5.2 De scope van een Identity...............................................................................................................59 7.4.5.3 De system scope beheren: Javakey.................................................................................................59 7.4.6 Keystore Sleutelbeheer...........................................................................................................60 7.4.6.1 KeyStore.........................................................................................................................................61 7.4.6.2 Keytool...........................................................................................................................................63 7.4.7 Opdracht Sleutelbeheer..........................................................................................................64 7.5 AUTHENTICATIE..............................................................................................................................64 7.5.1 Message Digest.......................................................................................................................64 7.5.1.1 Aanmaken van een message digest.................................................................................................65 7.5.1.2 Data invoer voor een message digest..............................................................................................65 7.5.1.3 Digesting........................................................................................................................................65 7.5.1.4 Digest Streams................................................................................................................................66 7.5.1.5 Beveiligde wachtwoord login.........................................................................................................66 7.5.1.6 Dubbele sterkte wachtwoord login..................................................................................................69 7.5.2 Opdracht dubbele sterkte wachtwoord login..........................................................................69 7.5.3 Message Authentication Codes: MACs..................................................................................69 7.5.3.1 MAC aanmaken..............................................................................................................................70 7.5.3.2 MAC datainvoer.............................................................................................................................70 7.5.3.3 Berekenen van de Code..................................................................................................................71 7.5.3.4 Voorbeeld van een MAC................................................................................................................71 7.5.4 Signatures...............................................................................................................................71 7.5.4.1 Aanmaken van een Signature..........................................................................................................73 7.5.4.2 Verifiëren van een Signature..........................................................................................................74 7.5.4.3 De klasse SignedObject..................................................................................................................74 7.5.5 Werken met certificaten..........................................................................................................75 7.5.5.1 Java.security.cert.Certificate...........................................................................................................75 7.5.5.2 Aanmaken van een Certificaat........................................................................................................75 7.5.5.3 Verifiëren van een Certificaat.........................................................................................................76 4
5. 5. 7.5.5.4 X.509 certificaten...........................................................................................................................76 7.5.5.5 Certificate Revocation Lists............................................................................................................78 7.6 ENCRYPTIE......................................................................................................................................79 7.6.1 Stroom- en blokvercijfering...................................................................................................79 7.6.2 Padding...................................................................................................................................79 7.6.3 PKCS#5...................................................................................................................................79 7.6.4 Blokvercijfering modes...........................................................................................................80 7.6.5 Algoritmen..............................................................................................................................80 7.6.6 Cipher.....................................................................................................................................80 7.6.6.1 Verkrijgen van een Cipher..............................................................................................................81 7.6.6.2 Basis informatie..............................................................................................................................82 7.6.6.3 Instellen van een Cipher.................................................................................................................82 7.6.6.4 Een Cipher vullen met gegevens.....................................................................................................84 7.6.7 Familie van Cipher.................................................................................................................87 7.6.7.1 Stroom Cipher................................................................................................................................87 7.6.7.2 javax.crypto.SealedObject..............................................................................................................88 7.6.8 Wachtzin Encryptie.................................................................................................................89 7.6.8.1 Zout maakt zuur..............................................................................................................................89 7.6.9 Opdracht.................................................................................................................................90 7.7 PROVIDER.......................................................................................................................................91 7.7.1 Inleiding Provider...................................................................................................................91 7.7.2 Een simpel voorbeeld van een provider..................................................................................91 7.8 SIGNED APPLETS............................................................................................................................92 7.8.1 Applets....................................................................................................................................92 7.8.2 Werking van een signed applet...............................................................................................93 7.8.3 Ondersteuning.........................................................................................................................93 7.9 EINDOPDRACHT .............................................................................................................................93 7.10 LITERATUURLIJST ........................................................................................................................94 5
6. 6. Voorwoord Voor je ligt de syllabus die je nodig hebt voor het volgen van het van Encryptie. Technische woorden die nog niet eerder zijn voorgekomen in de tekst worden cursief afgedrukt. Engelse termen worden zo min mogelijk gebruikt, maar de Engelse vertaling voor enkele kernbegrippen moeten worden geïntroduceerd daar deze in de literatuur veelvuldig gebruikt worden. De syllabus is gemaakt in het kader van een 6e semester project in het cursusjaar 19992000 aan de Hogeschool van Utrecht door: • Rick van Soest; • Patrick Mackaaij; • Freerk van Dijk; • Pieter de Boer. Wij hopen dat jullie veel aan het interessante materiaal zullen hebben. Wij hebben het leuk gevonden om het bij elkaar te zoeken en te rangschikken. Overig cursusmateriaal Voor deze cursus maak je gebruik van het boek 'Netwerkbeveiliging en cryptografie' van William Stallings, Academic Service 1999 (ISBN 90-395-1105-5). Indien in deze syllabus wordt gesproken over 'het boek', dan duidt dat op het genoemde boek. Let op: De appendices waar naar verwezen wordt in het boek zijn direct achter het hoofdstuk opgenomen. Niet geheel achterin. Deze appendices zijn optioneel, maar worden wel aanbevolen. Achter in het boek vind je overigens een begrippenlijst waar veel termen die te maken hebben met encryptie kort worden uitgelegd. De URL van het boek is http://williamstallings.com/Security2e.html. Op de site zijn correcties op het boek te vinden. Tevens is voor de cursus een CD samengesteld waarop benodigde programmatuur staat. Op de CD vind je ook belangrijke Internetpagina's terug voor het geval ze van Internet afgehaald worden. De URL's van deze Internetpagina's vind je terug in de literatuuropgave. Daarbij staat ook expliciet aangegeven wanneer een URL niet op de CD te vinden is. De site wordt dan te regelmatig van nieuwe informatie voorzien of de tekst is reeds compleet terug te vinden in de syllabus. 6
7. 7. 1. Introductie In dit hoofdstuk worden de grondbeginselen van encryptie uitgelegd. Er wordt bijvoorbeeld antwoord gegeven op de vragen hoe encryptie werkt, waarom encryptie noodzakelijk is wat encryptie precies is. Verschillende soorten encryptie worden genoemd. Voorkennis is voor dit hoofdstuk niet vereist. We leggen de grondbeginselen uit aan de hand van het verhaal van Robin Hood en Marian. Robin wil Marian geheime berichten kunnen sturen, zonder dat de corrupte Sherif van Nottingham deze kan lezen. Robin Hood heeft met Marian een gemeenschappelijke vriend (vertrouwenspersoon), genaamd Little John. Mocht het verhaal je niet bekend voorkomen, dan kun je meer informatie over de legende Robin Hood vinden op Internet. De URL vind je in de literatuuropgave ([1], 'Welcome to the World Wide Robin Hood Society Sherwood'). In het dagelijkse leven ben jij zelf Robin Hood en is de sherif de vijand, de systeembeheerder, een huisgenoot of een hacker. 1.1 Wat is encryptie? Als Robin Hood zijn berichten aan Marian verstuurt via een boodschapper en deze boodschapper geeft de berichten aan de sherif of de sherif pakt de berichten af, dan zijn ze niet meer geheim. Robin en Marian moeten dus een manier verzinnen om berichten zo te versturen dat ze voor derden onleesbaar zijn. Het voor derden onleesbaar maken van het bericht heet encryptie. Bij de ontvangst van het bericht wordt het bericht weer leesbaar gemaakt. Dit heet decryptie. Andere woorden voor encryptie die je verder tegen zult komen in de tekst zijn versleutelen, vercijferen en coderen. Voor decryptie gebruiken we soms ontsleutelen, ontcijferen en decoderen. In de Engelse literatuur wordt het originele bericht plaintext genoemd. De term voor versleutelde tekst is ciphertext. 1.2 Waarom encryptie? Waarschijnlijk ben je in het dagelijkse leven niet zo gevaarlijk bezig als Robin Hood en vraag jij je misschien af waarom je iets met encryptie zou moeten doen. In het begin van dit hoofdstuk werd gewezen op het feit dat de systeembeheerder, een huisgenoot of een hacker je berichten op de computer kan lezen. Ze kunnen deze berichten ook wijzigen of onder jouw naam berichten versturen. En ze hebben geen fysieke toegang nodig tot jouw PC om dat allemaal te doen! We nemen aan dat dit je wat uitmaakt, je post je brief tenslotte ook in een enveloppe en schrijft een bericht niet op een briefkaart. E-mail versturen via Internet daarentegen, komt qua privacy wel op hetzelfde neer. Als extra nadeel valt E-mail niet onder het briefgeheim (artikel 13 van de Grondwet) en is het voor systeembeheerders anno april 2000 dus niet illegaal om andermans E-mail te lezen. Daar komt bij dat E-mail tijdens het transport van zender naar ontvanger langs een aantal computer komt (kijk hiervoor maar eens naar de header van een E-mailbericht) en dus door al deze tussenpersonen kan worden gelezen en gewijzigd. 7
8. 8. Verder is het goed mogelijk dat je een typefout maakt bij het adresseren van een Emailbericht. Dan bestaat er een grote kans dat het bericht bij een algemene beheerder aan de kant van de ontvanger terechtkomt. Het lezen van andermans E-mail kan onder computervredebreuk vallen, als daarbij een wachtwoord geraden of gekraakt wordt. 1.2.1 Integriteit, authenticatie Buiten het feit dat berichten niet zonder meer door derden te lezen zijn, kan encryptie er voor zorg dragen dat het bericht de ontvanger onveranderd bereikt. Dit wordt integriteit (integrity) genoemd. Ook is het mogelijk om met zekerheid vast te stellen dat een bericht van een bepaalde persoon afkomstig is. Dit gegeven wordt authenticatie (authentication) genoemd. 1.3 Hoe werkt encryptie? Robin en Marian spreken samen af alle letters van het alfabet één positie naar rechts door te draaien bij de verzending van een bericht. De 'a' wordt dus een 'b' een het woord 'aap' wordt 'bbq'. Het bericht wordt nu dus onleesbaar verzonden. Aan de ontvangstzijde worden de letters allemaal weer één positie teruggedraaid. De afspraak die Robin en Marian maken wordt het algoritme of, in het Engels, de cipher genoemd. Het aantal posities opschuiven van de letters van het alfabet de sleutel of cipherkey. Cipherkey korten we soms af tot key. Berichten versleuteld met dit algoritme zijn voor een hacker niet erg moeilijk om te achterhalen, te kraken. Als het algoritme bekend is, kan de hacker zien dat er maar 25 mogelijke sleutels zijn en deze allemaal proberen. Toch werd deze methode in de praktijk door bijvoorbeeld Julius Caesar toegepast en kom je hem tegen in nieuwsgroepen op Internet onder de naam ROT-13 (rotation van 13, 13 posities doordraaien dus). In de cursus encryptie maak je kennis met geavanceerdere algoritmen. Uit de vorige alinea zou je kunnen halen dat het algoritme geheim gehouden moet worden om een goed programma voor encryptie te schrijven. Dit lijkt ook een logische gedachte, zij het niet dat programma's gedeassembleerd kunnen worden. Na het schrijven van een programma in een hogere programmeertaal wordt de programmacode gegenereerd voor een bepaalde processor. Mensen die zich verdiepen in deze machine-code kunnen het programma deassembleren. Dit proces staat bekend als reverse-enginering. Kenmerken die wel bijdragen aan een sterk algoritme zijn te vinden in paragraaf 1.7 'Wat maakt een sterk algoritme?'. 1.4 Asymmetrisch, symmetrisch Als Robin en Marian het rotation-algoritme willen gebruiken om geheime berichten te versturen moeten zij dus samen een sleutel afspreken. Anders zou de ontvanger van het bericht alle mogelijke sleutels moeten proberen! Het is natuurlijk mogelijk om deze sleutel tijdens een ontmoeting af te spreken, maar wat nu als zij elkaar nooit kunnen ontmoeten? Ook het continue werken met dezelfde sleutel is niet veilig, daar de sherif wellicht druk doende is een bericht te ontcijferen en de sleutel op een gegeven moment achterhaalt. Een oplossing hiervoor is om de boodschapper, die je beide vertrouwt, een andere sleutel over te laten brengen. Je beschikt dan over een zogenaamd secure channel. Maar als je over een secure channel beschikt, waarom moet je dan nog versleutelen? 8
9. 9. Algoritmen waarbij men aan zowel de zend- als ontvangstkant moet beschikken over dezelfde sleutel staan bekend als symmetrische algoritmen. Voorbeelden van symmetrische algoritmen die tijdens de cursus behandeld worden zijn DES, AES en IDEA. Symmetrische algoritmen worden in de literatuur ook wel conventionele algoritmen genoemd. Er bestaan ook asymmetrische algoritmen. De zender en de ontvanger maken op een bepaalde manier tegelijkertijd m.b.v. één algoritme twee sleutels aan, een publieke (public key) en een geheime (private key). De publieke sleutel wordt door de verzender gebruikt om een bericht te versleutelen. Daarna kan alleen de ontvanger het nog ontcijferen met zijn geheime sleutel. Algoritmen die deze manier van encryptie gebruiken staan het versleutelen met meerdere publieke sleutels tegelijk toe. Een asymmetrisch algoritme wat in de cursus behandeld wordt is RSA. Door de eigen publieke sleutel iedere keer mee te coderen kan de verzender van het bericht dit later zelf nog ontcijferen. De publieke sleutel mag men zonder meer bekend maken aan vriend en vijand. Voor iemand die een versleuteld bericht aan je wil sturen is het zelfs vereist dat deze over de sleutel beschikt. Ook asymmetrische algoritmen hebben hun nadelen: Het aantal mogelijke sleutels moet veel groter zijn dan bij symmetrisch om niet eenvoudig achterhaald te kunnen worden. De sleutellengte wordt bij computers aangegeven in bits. Zie tabel 1 voor een vergelijking van veiligheid tussen symmetrisch en asymmetrisch. Symmetrische sleutellengte Asymmetrische sleutellengte 56 bits 384 bits 64 bits 512 bits 80 bits 768 bits 112 bits 1792 bits 128 bits 2304 bits Tabel 1: vergelijking vereiste sleutellengte tegen brute-force attacks Door de grotere sleutels wordt een asymmetrisch algoritme veel trager dan een symmetrische. De oplossing hiervoor wordt gezocht in het symmetrisch coderen van een bericht waarbij de sleutel bij ieder bericht weer anders is. Deze sleutel wordt vervolgens asymmetrisch gecodeerd en zo wordt het geheel verzonden. Dit wordt een hybride systeem genoemd. In de cursus wordt PGP behandeld, een programma wat gebruik maakt van onder andere IDEA en RSA en wereldwijd gebruikt wordt om E-mail over het Internet te verzenden (PGP kan overigens ook voor versleuteling van bestanden worden gebruikt, zoals je in het hoofdstuk PGP zult lezen). Het is moeilijk vast te stellen of de publieke sleutel die je via-via van iemand krijgt of van het Internet afhaalt, daadwerkelijk van de persoon is van wie je denkt dat hij is. Dit probleem lost men op door sleutels te laten 'tekenen' (digitale handtekening, digital signature) door tussenpersonen en door speciale ontmoetingen tussen allerlei personen te organiseren. Daar Robin Hood en Marian beide Little John vertrouwen, kan deze naar Marian toegaan en haar publieke sleutel persoonlijk ontvangen. Little John tekent ervoor dat deze sleutel echt van Marian is en Robin Hood vertrouwt hem. 9
10. 10. Ook is het mogelijk om de publieke sleutel bijvoorbeeld via de telefoon te verifiëren, maar dan moet men de stem van de verzender kunnen herkennen. 1.5 Random getallen Een belangrijk technisch gegeven is nog niet ter sprake gekomen. Om een bericht te versleutelen kan een sleutel gebruikt worden. Als sleutel kan van alles worden gekozen. Je kunt zelf een sleutel kiezen, bijvoorbeeld een woord of een reeks getallen. Maar om een versleuteling echt veilig te maken is een sleutel nodig die bij niemand bekend is en die ook niet te onthouden is. Het is dus handig om bijvoorbeeld de computer een willekeurige sleutel te laten kiezen. Maar hoe kiest een computer een willekeurige sleutel? Dit zal de computer doen aan de hand van een willekeurig (random) getal. Helaas produceert de computer zulke getallen niet zo willekeurig. Een computer maakt namelijk gebruik van een zogenaamde Pseudo Random Number Generator voor het genereren van willekeurige getallen. Een PRNG leidt zijn willekeurige getallen namelijk af van bijvoorbeeld de interne klok (tijd) van de computer. Al gaat het hier om milliseconden of korter, als een hacker ongeveer op de hoogte is van de datum/tijd waarop jij je sleutel hebt gegenereerd, hoeft de hacker aanzienlijk minder sleutels te proberen tot hij de juiste heeft. Een oplossing voor dit probleem is specifieke, dure, hardware aan te schaffen om willekeurige getallen aan te maken. In de praktijk is dit voor particulier gebruik en kleine bedrijven niet betaalbaar. PGP, het programma wat in de cursus wordt behandeld, laat de gebruiker voor het genereren van het sleutelpaar (publiek en geheim) op het toetsenbord typen (de gebruiker moet niet steeds dezelfde letter intypen met regelmaat). Daar de gebruiker niet regelmatig zal typen (dit wordt in zeer kleine tijdseenheden gemeten), kan dit gebruikt worden als invoer voor de random-getallen. De volgende random-getallen die PGP nodig heeft haalt het programma onder andere uit tussentijden tussen het gebruik van de harddisk. Er staat een bestand op de harde schijf wat continu veranderd wordt. 1.6 Hoe werkt een hacker? In deze paragraaf worden enkele manieren opgesomd waarvan een hacker gebruik kan maken om een systeem illegaal binnen te dringen. Het is natuurlijk niet de bedoeling dat je ze zelf gaat toepassen, maar het geeft je inzicht in de manier waarop je 'aangevallen' kunt worden. Misschien kan je je er met deze aanwijzingen tegen verdedigen. • Leer het systeem kennen Probeer verbinding met het systeem te maken via utilities als Telnet en FTP. Meestal slaagt deze poging niet, maar je weet in ieder geval welke software er draait. • Controleer bekende veiligheidsgaten Wanneer je weet welke software er draait kun je op Internet kijken of er bekende fouten in deze software aanwezig zijn. Deze zogenaamde 'exploits' kun je vervolgens uitbuiten, tenzij de systeembeheerder updates netjes heeft uitgevoerd. • Probeer wachtwoorden te sniffen Sniffen houdt in dat je al het netwerkverkeer wat over de kabel gaat analyseert. Hier zijn programma's voor. Als loginnamen en wachtwoorden zonder encryptie het netwerk over gaan, kun je ze op deze manier achterhalen. Dit gebeurt niet (meer) met netwerkbesturingssystemen zoals Windows NT en Novell Netware, maar veel applicatieprogrammeurs gaan dezelfde fout in (bijvoorbeeld Bomas 3.0 van Roccare). 10
12. 12. 1.7 Wat maakt een sterk algoritme? Een sterk, modern algoritme moet: • niet geheim gehouden worden, maar moet openbaar zijn en te controleren zijn door experts Makers van encryptiesoftware geven soms aan dat het algoritme geheim moet blijven omdat deze anders eenvoudig gekraakt zou kunnen worden. Maar hackers kunnen een programma eenvoudig de-assembleren en het algoritme ontdekken. • een grote sleutellengte (in bits) gebruiken Een grotere sleutellengte geeft meer mogelijke sleutels en dus duurt het langer om de juiste te vinden. • ciphertext produceren die willekeurig aandoet voor alle statistische testmethoden Dit heeft te maken met aanvallen op een bepaalde taal. Bepaalde letters komen statistisch gezien binnen een bepaalde taal meer voor dan andere letters. Door dit te vergelijken met statistische uitkomsten van ciphertext kan op deze manier eenvoudiger gekraakt worden. Dit moet dus voorkomen worden. • resistent zijn tegen alle bekende aanvallen Als van een algoritme op een bepaalde manier sneller alle sleutels kunnen worden getest, moet het algoritme daarop worden aangepast. 1.8 Hoe veilig is encryptie? Mocht je na dit inleidende hoofdstuk een veilig gevoel gekregen hebben en denken dat je met een goede encryptie veilig bent, dan moeten we je teleurstellen. Er zijn nog zaken waar je rekening mee moet houden, zoals: • slordigheid van jezelf Een sleutel uit je hoofd leren is niet aan te raden, derhalve worden sleutels bij een programma als PGP zelf ook gecodeerd en dan opgeslagen op de harde schijf. Het wachtwoord (bij PGP zelfs een wachtzin) waarmee je de sleutel codeert moet je dan niet op je monitor plakken of kenbaar maken aan anderen! • een sterk wachtwoord of sterke wachtzin Om je tegen dictionary-search attacks te beschermen zorg je voor een veilige wachtzin bij PGP. Meer informatie hierover in 'The passphrase FAQ' van Randall T. Williams of bij 'Reinholds Diceware website'. 'The passphrase FAQ' wordt ook nog behandeld in het hoofdstuk PGP. • slordigheid van de ontvanger De ontvanger moet er zorg voor dragen dat het door jou gecodeerde bericht niet gedecodeerd beschikbaar is op zijn computer of uitgeprint op papier. • diefstal van je geheime sleutel Als je geheime sleutel van bijvoorbeeld PGP gestolen wordt (kan door een hacker die op je harddisk bestanden kan lezen), heb je ook een probleem. Het hoeft geen probleem te zijn als je een sterk wachtwoord had, maar meestal hebben mensen dit niet en kan een hacker een dictionary-attack uitvoeren. De geheime sleutel van PGP kan bijvoorbeeld op een harddisk opgeslagen worden, waarna de PC gestolen wordt… Aan justitie hoef je overigens je geheime sleutel niet te overhandigen, dit wordt afgeschermd door de regel dat je niet tegen jezelf hoeft te getuigen. 12
13. 13. • het Amerikaanse exportverbod De Amerikaanse regering beschouwt encryptie-algoritmen en programmatuur als munitie en stelt uit dat oogpunt zware eisen aan de export daarvan. Als de Amerikaans regering export van een bepaald algoritme met een bepaalde sleutellengte toestaat, wordt dit door cryptoanalysten opgevat als teken dat dit door hen snel te ontcijferen is. Overigens is de auteur van PGP, Philip Zimmermann bij het Amerikaanse congres bezig om te proberen het exportverbod te versoepelen (zie 'The comp.security.pgp FAQ, Appendix III - Testimony of Philip Zimmermann to Congress'). • swappen van Operating Systems Na het intypen van je wachtwoord kan een Operating System als Windows '95 of Unix besluiten het geheugen te swappen. Het wachtwoord komt dan niet-gecodeerd in de swapfile te staan. Als je je hier zorgen over maakt moet je op zoek naar programmatuur die je wachtwoord uit de swapfile van het OS haalt (zie 'The comp.security.pgp FAQ, question 3.19'). • vooruitgang in de wiskunde, cryptoanalyse en rekenkracht van computers Een algoritme als RSA leunt sterk op de moeilijkheid van het ontbinden in factoren (zie het hoofdstuk over RSA). Mocht dit wiskundig eenvoudiger worden, dan is het algoritme van RSA niet meer veilig. Ook cryptoanalysten en hackers worden steeds slimmer in het zoeken van oplossingen voor dit soort problemen. Men bundelt bijvoorbeeld computers samen om 'het probleem' parallel op te lossen. Tot slot is de toenemende rekenkracht van computers interessant daar snellere computers sneller alle opties kunnen proberen. • Tempest monitoring Het is mogelijk om met geavanceerde apparatuur op ruime afstand (zeker tot 100 meter) buiten de ruimte waar elektronische apparatuur staat opgesteld de elektromagnetische straling van deze apparatuur op te vangen. Deze straling kan vervolgens worden opgeslagen en later worden omgezet naar het originele beeld. De meting kan niet worden waargenomen. TEMPEST staat overigens voor Transient ElectroMagnetic PulsE STandard en is al in 1985 ontdekt door de Nederlander Wim van Eck (zie 'TEMPEST monitoring in the real world'). • Echelon Echelon is een netwerk wat is opgezet door de NSA (National Security Agency in Amerika). Er wordt samengewerkt met geheime diensten in andere landen, zoals de GCSB (Government Communications Security Bureau in Nieuw Zeeland). Wereldwijd wordt e-mail, telefoon-, telex- en faxverkeer met computers 'afgeluisterd'. Er wordt gezocht naar trefwoorden die de aangesloten geheime diensten aanleveren. Als een trefwoord gevonden wordt, krijgt de geheime dienst die dat trefwoord ingaf een kopie van het bericht inclusief data als tijdstip, zender en ontvanger. Echelon is geen fictie, bewijst het rapport wat is opgesteld in opdracht van het Europese Parlement (zie 'Codenaam Echelon: An Appraisal of Technologies of Political Control'). 1.9 Encryptie en netwerken Vertrouwelijkheid, integriteit en authenticatie zijn ook van belang op een netwerk: Vertrouwelijkheid Hackers zouden de verbinding af kunnen luisteren (door te sniffen). Gecodeerde gegevens moeten eerst nog gedecodeerd worden en vormen dus een belangrijke drempel. 13
14. 14. Integriteit Het is altijd belangrijk dat gegevens die tussen computers onderling worden uitgewisseld niet gewijzigd worden. Authenticatie Tussen server en werkstation kan met authenticatie voorkomen worden dat een hacker een werkstation spooft. 1.20 Literatuur 1. Welcome to the World Wide Robin Hood Society Sherwood http://www.robinhood.ltd.uk/ Engelstalige site over de legende Robin Hood. In de syllabus wordt de legende gebruikt als verhaal bij de voorbeelden. Deze URL staat niet op de CD. 2. Snake Oil Warning Signs: Encryption Software to Avoid http://www.interhack.net/people/cmcurtin/snake-oil-faq.html Engelstalig document wat enkele zaken beschrijft waar men op moet letten om geen slechte encryptie-software aan te schaffen. Een goede vertaling voor Snake Oil is kwakzalverij. 3. The comp.security.pgp FAQ http://www.cam.ac.uk.pgp.net/pgpnet/pgp-faq/ Engelstalige FAQ waarin veel met betrekking tot het programma PGP uit de doeken wordt gedaan. 4. TEMPEST monitoring in the real world http://www.thecodex.com/c_tempest.html Engelstalig document waarin wordt uitgelegd wat TEMPEST is, hoe het werkt en wie het gebruikt of gebruiken kan. 5. Computer Security Basics http://www.auburn.edu/~youngd2/topics/security1.html Engelstalig document waarin beschreven wordt hoe een hacker een systeem kan binnendringen en wat een systeembeheerder kan doen om dat te voorkomen. Dit document is tijdens het project van Internet verwijderd, maar staat wel op CD. 6. Cryptography FAQ http://www.faqs.org/faqs/cryptography-faq/part01/ Engelstalige FAQ over cryptografie in het algemeen. 7. The passphrase FAQ, version 1.04 http://www.stack.nl/~galactus/remailers/passphrase-faq.html Engelstalige FAQ over het maken van een goede wachtzin voor PGP. 8. The Diceware Passphrase Home Page http://www.diceware.com/ Engelstalige site met verwijzingen naar een aantal sites die te maken hebben met het maken van goede wachtzinnen voor PGP, waaronder ' The passphrase FAQ'. Tevens een voorstel voor het maken van een wachtzin door dobbelstenen te gooien. 9. Codenaam Echelon: An Appraisal of Technologies of Political Control http://www.nrc.nl/W2/Lab/Echelon/stoa1jan1998.html Site van NRC Handelsblad waar een dossier van artikelen wordt opgebouwd die betrekking hebben op Echelon. De link zelf bevat een rapport van zo'n 140 bladzijden wat in opdracht van het Europees Parlement is opgesteld waarin onder andere het bestaan van Echelon bevestigd wordt. 14
15. 15. 10. Passwords -- Strengths and Weaknesses http://www.vtac.org/Tutorials/password.html Engelstalig document waarin het belang van de goede keuze van een wachtwoord wordt benadrukt. Tevens worden enkele suggesties gedaan om een beter wachtwoord te kiezen en wordt verteld hoe hackers achter wachtwoorden kunnen komen. 11. Boek 'Netwerkbeveiliging en cryptografie' van William Stallings, Academic Service 1999 (ISBN 90-395-1105-5) Paragraaf 13.3, 'Authenticatie-header' In deze paragraaf wordt de opbouw van een IP-packet beschreven. De replay-attack en de bescherming daartegen is te vinden onder het kopje 'Anti-replay service'. 15
16. 16. 2. DES 2.1 Globale beschrijving van de lesstof DES wordt in het boek behandeld in hoofdstuk 3 (Conventionele encryptie: moderne technieken). In eerste instantie wordt het principe uitgelegd aan de hand van Simplified DES (S-DES). Vervolgens gaan we in op de vercijfering van data. Hierbij worden onderwerpen als blok-, stroom- en Feistel-vercijfering besproken. Na deze grondbeginselen gaan we verder in op DES en de kracht van DES. Een sterkere variant van DES, Triple DES, komt aan bod in paragraaf 4.1. 2.2 Gedetailleerde beschrijving van de lesstof Hieronder wordt in hoofdlijnen verteld wat aan bod komt in de bovengenoemde hoofdstukken. Paragraaf 3.1 (Simplified DES (S-DES)) Deze paragraaf beschrijft het vereenvoudigde DES-encryptie algoritme. Dit algoritme is niet zozeer veilig maar wel uitermate geschikt voor educatieve doeleinden. Het is DES met veel minder parameters. In deze paragraaf wordt ook S-DES sleutelgeneratie en SDES encryptie behandeld. Hierna wordt de relatie met DES bekeken. Paragraaf 3.2 (De principes van blokvercijfering) Deze paragraaf behandelt drie vormen van vercijfering. Deze drie vormen zijn stroomvercijfering, blokvercijfering en feistel-vercijfering. Van de eerste twee wordt enkel het principe weergegeven. Van de laatste, feistel-vercijfering wordt ook de vercijferingsstructuur en het decryptie-algoritme behandelt. Paragraaf 3.3 (De Data Encryption Standaard (DES)) Deze paragraaf behandelt DES tot in het kleinste details. Ten behoeve van de cursus is het niet nodig alle detail van DES uit het hoofd te weten. Het is echter wel vereist dat het in deze paragraaf behandelde principe duidelijk is. Paragraaf 3.4 (De kracht van DES) Deze paragraaf geeft kort aan hoe DES groot is geworden en hoe de toekomst van DES eruit ziet. Over de toekomst van DES wordt geschreven dat het tijd is om naar alternatieven voor conventionele encryptie te zoeken. Hiermee is men reeds bezig. De vervanger zal Advanced Encryption Standard (AES) gaan heten. Het algoritme achter AES is echter nog niet bepaald en wordt in het boek ook niet behandeld. In het volgende hoofdstuk, AES, gaan we hier verder op in. Paragraaf 3.6 (De principes van het ontwerpen van blokvercijferingen) Deze paragraaf verschaft informatie over het ontwerpen van blokvercijferingen. Verder wordt hier de term S-box geïntroduceerd en toegelicht. Paragraaf 3.7 (Werkmodes voor blokvercijfering) Deze paragraaf beschrijft vier manieren (modes) van blokvercijfering en hun karakteristieke toepassigen. Onder deze vier modes bevinden zich de Electronic Codebook-mode (ECB), de Cipher Block Chaining-mode (CBC), de Cipher Feedbackmode en de Output Feedback-mode. Paragraaf 4.1 (Triple DES) In deze paragraaf worden varianten van DES besproken. Hieronder verstaan we Double DES en Triple DES. Dus dubbele en driedubbele DES-encryptie. Deze varianten komen voor met een variabel aantal sleutels ook dit wordt behandeld. 16
17. 17. 3. AES AES staat voor Advanced Encryption Standard. Het is de opvolger van DES. DES is al meer dan 20 jaar in gebruik (zie [1], 'Request for Candidate Algorithm Nominations for the AES') en wordt gezien de huidige stand van de techniek niet meer als veilig beschouwd. Daarbij speelt met name het beperkte aantal mogelijke sleutels een rol. AES staat helaas óók voor Automated Export System, een systeem om douaneafhandelingen te automatiseren. Let hierop als je meer informatie over AES probeert te vinden op Internet. In dit hoofdstuk vertellen we kort wat AES is en hoe het algoritme tot stand is gekomen. Een aantal algoritmen die tot AES verheven kunnen worden, worden kort besproken. 3.1 Wat is AES? De National Institute of Standards and Technology (NIST) heeft in 1997 een wereldwijde oproep gedaan naar een algoritme wat DES kan opvolgen (zie [1], 'Request for Candidate Algorithm Nominations for the AES'). Iedere particulier en ieder bedrijf over de hele wereld mocht reageren op de oproep om een nieuwe standaard te introduceren om gevoelige 'unclassified' informatie van de regering te beschermen. De kandidaat-algoritmen worden, indien mogelijk met de Amerikaanse export-restricties, gepubliceerd. Voor de meest recente informatie m.b.t. het Amerikaanse export-verbod voor encryptie-algoritmen, zie [10], 'The Homepage for the Bureau of Export Administration'. 3.2 Aan welke eisen moet AES voldoen? Mogelijke algoritmen moesten aan een aantal specifieke eisen voldoen, te weten: • het algoritme moet symmetrisch zijn; • het algoritme moet als block cipher te implementeren zijn; • het algoritme moet key-block combinaties aan kunnen van 128-128, 192-128 en 256128 bits. Ook houdt NIST rekening met aspecten als: • Veiligheid (security) Het algoritme moet wiskundig onderbouwd kunnen worden en uiteraard moeilijk te kraken zijn. • Kosten (costs) Het algoritme moet vrij beschikbaar worden gesteld, zodat het ook door de publieke sector kan worden gebruikt èn het moet efficiënt met bronnen van de computer omgaan. • Implementatie (algorithm and implementation characteristics) Het algoritme moet eenvoudig te implementeren en bij voorkeur flexibel zijn (met parameters in te stellen), zodat het voor een breed scala aan toepassingen te gebruiken is. De exacte eisen zijn te vinden in [1], 'Request for Candidate Algorithm Nominations for the AES'. 17
18. 18. 3.3 Welke algoritmen behoren tot de mogelijkheden? In 1998 maakte NIST bekend dat 15 algoritmen geaccepteerd waren voor de eerste selectieronde. Cryptografen over de hele wereld werden uitgedaagd om het algoritme te beoordelen op kenmerken als veiligheid en efficiëntie. NIST heeft op basis van deze beoordelingen een keuze gemaakt voor de volgende vijf algoritmen: 1. MARS - IBM (zie [2], 'The MARS cipher'); 2. RC6 - RSA Laboratories (zie [3], 'RSA Laboratories | Advanced Encryption Standard'; 3. Rijndael - Joan Daemen en Vincent Rijmen uit België (zie [4], 'The Rijndael Page'; 4. Serpent - Ross Anderson, Eli Biham en Lars Knudsen uit Noorwegen (zie [5], 'Serpent home page'; 5. Twofish - Counterpane Internet Security Inc (zie [6], 'Twofish: A New Block Cipher'. De naam van het algoritme wordt in bovenstaande opsomming gevolgd door de inzender(s). De site waarnaar verwezen wordt bevat tevens de door NIST vereiste informatie en documentatie, zoals gevraagd in [1], 'Request for Candidate Algorithm Nominations for the AES'. Na een tweede selectieronde worden (we spreken anno 2000) in de zomer van 2001 één of meerdere van deze algoritmen tot AES verheven (de einddatum voor AES ligt niet vast, zie [1], 'Request for Candidate Algorithm Nominations for the AES'). Over het aantal AES-algoritmen wordt nog gediscussieerd, zoals te lezen in [7], 'Round 2 Discussion Issues for the AES Development Effort'. De inzenders van de vijf overgebleven algoritmen geven allen aan de voorkeur te hebben voor één standaard, zoals zij aangeven in hun statements (zie PDF-bestanden [11, 12, 13, 14 en 15], resp. 'IBM Comments', 'RC6 as the AES', 'Rijndael for AES', 'The Case for Serpent' en 'Comments on Twofish as an AES Candidate'). Het AES-algoritme is tijdens het schrijven van deze syllabus nog niet bekend. De huidige status is dat de auteurs van de vijf algoritmen, samen met het publiek, de algoritmen beoordelen (zie wederom [11, 12, 13, 14 en 15]). Vervolgens heeft NIST het laatste woord. Voor de meest recente informatie m.b.t. de status van AES kun je terecht bij [8], 'Advanced Encryption Standard (AES) Development Effort'. NIST geeft overigens duidelijk aan dat algoritmen die wel meegedaan hebben aan de AES-competitie, maar niet tot AES verheven werden, niet per definitie slecht zijn. Ze voldoen niet aan enkele door NIST gestelde eisen of één van de andere algoritmen voorziet beter in een bepaalde eis. Zie [9], 'NIST's AES Round 1 Report' voor de beredenering achter het niet promoveren van een bepaald algoritme naar de tweede ronde. Hieronder bespreken we kort de voor- en nadelen van de verschillende algoritmen [9], 'NIST's AES Round 1 Report'. De voor- en nadelen m.b.t. smart cards worden buiten beschouwing gelaten. 18
19. 19. 3.3.1 MARS Voordelen: • grote veiligheidsmarge; • werkt snel op 32-bits platformen die 32-bits rotatie- en vermenigvuldiging ondersteunen; • ondersteunt grote sleutels, tot zo'n 1248 bits. Nadelen: • de snelheid wordt beduidend minder op platformen die de 32-bits ondersteuning niet verlenen; • het algoritme zit ingewikkeld in elkaar. 3.3.2 RC6 Voordelen: • werkt snel op 32-bits platformen die 32-bits rotatie- en vermenigvuldiging ondersteunen; • eenvoudig algoritme; • opvolger van een bekend algoritme, RC5 [16], paragraaf 4.4 boek 'RC5'; • ondersteunt grote sleutels, tot zo'n 1248 bits; • compleet in te stellen (parameters). Nadelen: • kleine veiligheidsmarge; • de snelheid wordt beduidend minder op platformen die de 32-bits ondersteuning niet verlenen. 3.3.3 Rijndael Voordelen: • presteert goed (snel) op verschillende platformen; • goede veiligheidsmarge; • kan met parallel-werkende hardware gebruikt worden; • werkt met andere blok-formaten in stappen van 32-bits. Nadelen van dit algoritme zijn op het moment van schrijven nog niet gevonden. Uit de diverse stukken m.b.t. de selectie van AES maken wij op dat Rijndael een zeer goede kans maakt tot AES verheven te worden. 19
20. 20. 3.3.4 SERPENT Voordelen: • grote veiligheidsmarge; • kan met parallel-werkende hardware gebruikt worden; • goed beschermd tegen bekende aanvallen. Nadelen: • traag op andere platformen. 3.3.5 Twofish Voordelen: • grote veiligheidsmarge; • presteert goed (snel) op verschillende platformen; • kan met parallel-werkende hardware gebruikt worden; • gedeeltelijk in te stellen (parametiseerbaar); • sleutelformaten tot 256-bits worden ondersteund. Nadelen: • ingewikkeld te analyseren; • het ingewikkelde ontwerp heeft vraagtekens opgeworpen. 3.4 Van DES naar AES DES is een afgeslankte versie van het door IBM ontworpen algoritme 'LUCIFER'. Het werd in 1977 tot standaard verheven. Reeds in die tijd werden er opmerkingen gemaakt over de beperkte sleutellengte (56 bits). DES zou aan te vallen zijn m.b.v. brute-force attacks. Delen van de interne structuur van DES werden als militair geheim bestempeld, wat door het publiek werd opgevat als een teken dat DES door de NSA snel te kraken zou zijn [17], paragraaf 3.3 boek 'De Data Encryption Standard (DES)'. De tijd is nu daar dat DES met relatief weinig moeite gekraakt kan worden. NIST is op zoek naar een vervanger voor DES die qua beveiliging minimaal overeen moet komen met Triple DES [1], 'Request for Candidate Algorithm Nominations for the AES'. Het nieuwe algoritme moet efficiënter werken dan het Triple DES algoritme (zie [18], paragraaf 4.1 boek 'Triple DES'). Tevens wordt er rekening gehouden met de mogelijkheid om het algoritme op 8-bits machines te gebruiken. Welk algoritme tot AES zal worden gekozen is op het moment van schrijven nog niet bekend. NIST verwacht medio 2001 de selectie rond te hebben, maar de einddatum staat niet vast. 20
21. 21. 3.5 Literatuur 1. Request for Candidate Algorithm Nominations for the AES http://csrc.nist.gov/encryption/aes/pre-round1/aes_9709.htm De originele, Engelstalige, uitnodiging van NIST voor kandidaten voor AES. 2. The MARS cipher http://www.research.ibm.com/security/mars.html Officiële IBM-homepage (Engelstalig) m.b.t. het MARS-algoritme en AES. Deze URL staat niet op de CD. 3. RSA Laboratories | Advanced Encryption Standard http://www.rsasecurity.com/rsalabs/aes/ Officiële RSA-homepage (Engelstalig) m.b.t. het RC6-algoritme en AES. Deze URL staat niet op de CD. 4. The Rijndael Page http://www.esat.kuleuven.ac.be/~rijmen/rijndael Officiële homepage van Vincent Rijmen (Engelstalig) m.b.t. het Rijndael-algoritme en AES. Deze URL staat niet op de CD. 5. Serpent home page http://www.cl.cam.ac.uk/~rja14/serpent.html Officiële homepage van Ross Anderson (Engelstalig) m.b.t. het SERPENT-algoritme en AES. Deze URL staat niet op de CD. 6. Twofish: A New Block Cipher http://www.counterpane.com/twofish.html Officiële Counterpane-homepage (Engelstalig) m.b.t. het Twofish-algoritme en AES. Deze URL staat niet op de CD. 7. Round 2 Discussion Issues for the AES Development Effort http://csrc.nist.gov/encryption/aes/round2/Round2WhitePaper.htm Engelstalig document waarin verschillende aspecten m.b.t. de keuze van het AESalgoritme aan de orde worden gesteld (o.a. het aantal algoritmen en de afweging tussen snelheid en veiligheid). 8. Advanced Encryption Standard (AES) Development Effort http://csrc.nist.gov/encryption/aes/ Officiële, Engelstalige, site van NIST met up-to-date informatie m.b.t. de voorgang van AES. 9. NIST's AES Round 1 Report http://csrc.nist.gov/encryption/aes/round1/r1report.htm Engelstalig verslag van de eerste selectieronde voor AES. In het verslag wordt o.a. uitgelegd welke algoritmen om welke reden gepromoveerd werden naar de tweede ronde. 10. The Homepage for the Bureau of Export Administration http://www.bxa.doc.gov/ Engelstalige homepage van de Amerikaanse BXA, verantwoordelijk voor het exportverbod op encryptie. 11. IBM Comments http://csrc.nist.gov/encryption/aes/round2/conf3/papers/mars-statement.pdf Engelstalig statement waarin IBM beredeneert waarom MARS tot AES verheven moet worden. 21
22. 22. 12. RC6 as the AES http://csrc.nist.gov/encryption/aes/round2/conf3/papers/rc6-statement.pdf Engelstalig statement waarin RSA Laboratories beredeneert waarom RC6 tot AES verheven moet worden. 13. Rijndael for AES http://csrc.nist.gov/encryption/aes/round2/conf3/papers/rijndael-statement.pdf Engelstalig statement waarin Joan Daemen en Vincent Rijmen beredeneren waarom Rijndael tot AES verheven moet worden. 14. The Case for Serpent http://csrc.nist.gov/encryption/aes/round2/conf3/papers/serpent-statement.pdf Engelstalig statement waarin Ross Anderson, Eli Biham en Lars Knudsen beredeneren waarom SERPENT tot AES verheven moet worden. 15. Comments on Twofish as an AES Candidate http://csrc.nist.gov/encryption/aes/round2/conf3/papers/twofish-statement.pdf Engelstalig statement waarin Counterpane beredeneert waarom Twofish tot AES verheven moet worden. 16. Boek 'Netwerkbeveiliging en cryptografie' van William Stallings, Academic Service 1999 (ISBN 90-395-1105-5) Paragraaf 4.4, 'RC5' Technische beschrijving van de werking van het RC5 algoritme, de voorloper van de RC6-kandidaat voor AES. 17. Boek 'Netwerkbeveiliging en cryptografie' van William Stallings, Academic Service 1999 (ISBN 90-395-1105-5) Paragraaf 3.3, 'De Data Encryption Standard (DES)', tot DES-encryptie Historische informatie m.b.t. het DES-algoritme, de voorloper van AES. 18. Boek 'Netwerkbeveiliging en cryptografie' van William Stallings, Academic Service 1999 (ISBN 90-395-1105-5) Paragraaf 4.1, 'Triple DES' In deze paragraaf worden varianten van DES besproken (Double- en Triple DES). Deze varianten komen voor met een variabel aantal sleutels. 22
23. 23. 4. IDEA 4.1 Beschrijving van de lesstof IDEA wordt in het boek behandeld in paragraaf 4.2 (International Data Encryption Algorithm). Deze paragraaf beschrijft het principe van IDEA in detail. Dit gebeurt, door achtereenvolgens de ontwerpideeën en de sterke punten aan te stippen. Vervolgens gaat men dieper in op de gebruikte wiskundige operaties. Na deze inleiding volgt het encryptie-algoritme met subkey generatie en het decryptiealgoritme met de bijbehorende subkey generatie. Voor dit hoofdstuk is wiskundige voorkennis van belang. Je moet bekend zijn met: • het berekenen van de vermenigvuldigde inverse modulo. Mocht deze kennis zijn weggezakt, dan kun je je geheugen opfrissen door hoofdstuk 7 (Introductie in de getal theorie) te lezen. Het bepalen van de grootste gemene deler van twee getallen vind je in paragraaf 7.5 (De algoritme van Euclides). Daarnaast geeft deze paragraaf ook uitleg hoe men de vermenigvuldigde inverse kan berekenen. Om de vermenigvuldigde inverse modulo (M) van een getal (G) te berekenen gaat men als volgt te werk: G ^ (M-1) modulo M Let op: bij grote getallen (zoals bij IDEA het geval is) gaat dit erg lang duren! 4.2 Afkortingen en termen uit het boek Er wordt in het boek bij paragraaf 4.2 gesproken over PGP. PGP is een programma wat het mogelijk maakt om gecodeerde berichten te versturen. PGP maakt daarvoor gebruikt van o.a. het IDEA algoritme. PGP komt later in de syllabus aan bod in hoofdstuk 6 en is op dit moment nog niet relevant. DES paragraaf 4.1 (Triple DES) In deze paragraaf worden een aantal varianten van DES besproken, waaronder Double DES en Tripple DES. Dus dubbele en driedubbele encryptie. Verder worden er ook varianten besproken met twee en drie sleutels. 23
24. 24. 5. RSA 5.1 Beschrijving van de lesstof RSA wordt in het boek behandeld in hoofdstuk 6 (Public-key cryptografie). RSA is in tegenstelling tot DES, AES en IDEA een asymmetrisch algoritme. Dit verschil wordt in de inleiding van hoofdstuk 6 uitgelegd. Vervolgens lees je paragraaf 6.1 (Principes van public-key cryptosystemen). Deze paragraaf bespreekt de argumenten waarom symmetrische encryptie algoritmen niet afdoende zijn. In het kort worden de algemene eigenschappen van asymmetrische algoritmen toegelicht en de gebruiksmogelijkheden van public-key cryptografie systemen. Paragraaf 6.2 (De RSA-algoritme) legt de werking van het RSA algoritme uit. Er wordt beschreven hoe met RSA encryptie en decryptie te implementeren is. Tevens wordt besproken op welke manier sleutels voor RSA worden gegenereerd. Ook gaat men dieper in op de zwakke kanten van RSA. Voor deze paragraaf is enige wiskundige voorkennis van belang. Je moet bekend zijn met: • het bepalen van de grootste gemene deler; • het berekenen van de vermenigvuldigde inverse modulo. Mocht deze kennis zijn weggezakt, dan kun je je geheugen opfrissen door hoofdstuk 7 (Introductie in de getal theorie) te lezen. Het bepalen van de grootste gemene deler van twee getallen vind je in paragraaf 7.5 (De algoritme van Euclides). Daarnaast geeft deze paragraaf ook uitleg over hoe men de vermenigvuldigde inverse kan berekenen. Kort: Om de vermenigvuldigde inverse modulo (M) van een getal (G) te berekenen gaat men als volgt te werk: G ^ (M-1) modulo M Let op: bij grote getallen (zoals bij b.v. IDEA het geval is) gaat dit erg lang duren! Sleutelbeheer is een aan asymmetrische algoritmen (zoals RSA) gerelateerd probleem. Het werken met publieke sleutels is namelijk niet zo makkelijk als het lijkt. Meer hierover in paragraaf 6.3 (Sleutelbeheer) van boek. Deze paragraaf gaat in op het beheer en de uitwisseling van de sleutels bij asymmetrische algoritmen. Welke methoden hiervoor bruikbaar zijn en hoe deze werken. 5.2 Afkortingen en termen uit het boek Er worden in het boek bij paragraaf 6.1 afkortingen en termen gebruikt die je nog niet eerder tegen bent gekomen of die je graag nog even wilt nalezen. Deze afkortingen en termen zijn: DES paragraaf 4.1 (Triple DES) In deze paragraaf worden een aantal varianten van DES besproken, waaronder Double DES en Tripple DES. Dus dubbele en driedubbele encryptie. Verder worden er ook varianten besproken met twee en drie sleutels. Diffie Hellman paragraaf 6.3 (Diffie Hellman Sleuteluitwisseling) Deze paragraaf beschrijft het eerste gepubliceerde public-key algoritme. Hoe dit algoritme in detail werkt, wordt in deze paragraaf beschreven. Dit algoritme stelt gebruikers in staat op een veilige manier sleutels uit te wisselen. 24
25. 25. Digitale handtekening paragraaf 10.1 (Digitale handtekening) In deze paragraaf wordt een korte inleiding gegeven op digitale handtekeningen , gevolgd door 2 mogelijke manieren waarop men een digitale handtekening uitwisseling kan organiseren. DSS paragraaf 10.3 (Digital Signature Standard) In deze paragraaf wordt het begrip Digital Signature Standard (DSS) uitgelegd. Verder wordt het achterliggende algoritme Digital Signature Algoritme (DSA) toegelicht. Blokvercijfering paragraaf 3.2 (De principes van blokvercijfering) In deze paragraaf wordt in het begin kort uitgelegd wat onder andere een blokvercijfering is, daarnaast behandelt het kort een stroomvercijfering en de Feistel vercijfering structuur. PGP paragraaf 12.1 (Pretty Good Privacy) Deze paragraaf geeft kort een uitleg wat PGP is, hoe het werkt en nog veel meer. Later in deze cursus (hoofstuk 6) komen we hier uitgebreid op terug. 25
26. 26. 6. PGP 6.1 Beschrijving van de lesstof PGP wordt in het boek behandeld in [10] paragraaf 12.1 boek 'Pretty Good Privacy (PGP)'. Deze paragraaf beschrijft het principe van het computerprogramma PGP tot in detail. Onderwerpen die hierbij aan de orde komen zijn onder andere: • de werking van PGP; • cryptografische sleutels en sleutelringen; • het beheer van public-keys met PGP. Aansluitend hierop lees je uit het boek [11] paragraaf 12.2 boek 'S/MIME'. Deze paragraaf behandelt een andere techniek die naar alle waarschijnlijkheid veel in het bedrijfsleven gebruikt gaat worden. Dit omdat er een aantal essentiële verschillen zijn ten opzicht van PGP. Deze verschillen worden in paragraaf 12.2 naar voren gebracht. Vervolgens lees je in de syllabus verder over het gebruik van: • een virtual harddisk versleuteld m.b.v. PGP; • PGP als plug-in bij Microsoft Outlook en Pegasus (de opdracht van paragraaf 6.3 van deze syllabus); • een wachtzin (passphrase). Tot slot is er in de syllabus een aanvulling op de stof uit het boek opgenomen uit o.a. de FAQ van PGP. 26
27. 27. 6.2 Afkortingen en termen uit het boek Er worden in het boek bij paragraaf 12.1 afkortingen en termen gebruikt die je nog niet eerder bent tegengekomen of die je misschien graag nog even wilt nalezen. In het volgende overzicht kun je zien waar ze in het boek behandeld worden. Deze afkortingen en termen zijn: RSA paragraaf 6.2 (De RSA-algoritme) In deze paragraaf worden de grondbeginselen van RSA uitgelegd. DSS paragraaf 10.3 (Digital Signature Standard) In deze paragraaf wordt het begrip Digital Signature Standard (DSS) uitgelegd. Verder wordt het achterliggende algoritme Digital Signature Algoritme (DSA) toegelicht. Diffie Hellman paragraaf 6.3 (Diffie Hellman Sleuteluitwisseling) Deze paragraaf beschrijft het eerste gepubliceerde public-key algoritme. Hoe dit algoritme in detail werkt, wordt in deze paragraaf beschreven. Dit algoritme stelt gebruikers in staat op een veilige manier sleutels uit te wisselen. CAST-128 paragraaf 4.5 (CAST-128) Deze paragraaf beschrijft een ontwerpprocedure voor symmetrische encryptie algoritme en richt zich verder op de werking van het CAST-128 algoritme. Dit inclusief gebruikte functionaliteiten als substitutieboxen (S-boxen) en deelsleutelgeneratie. IDEA paragraaf 4.2 (International Data Encryption Algorithm) In deze paragraaf worden de grondbeginselen van IDEA uitgelegd. 3DES paragraaf 4.1 (Triple DES) In deze paragraaf worden een aantal varianten van DES besproken, waaronder Double DES en Triple DES. Dus dubbele en driedubbele encryptie. Verder worden er ook varianten besproken met twee en drie sleutels. SHA-1 paragraaf 9.2 (Secure Hash Algoritm) In deze paragraaf wordt de werking van SHA bescheven. Dit houdt in dat de logica achter SHA-1 word behandeld en de compressiefunctie van SHA-1. Verder wordt er in deze paragraaf een vergelijking gemaakt tussen SHA-1 en MD5. Dit omdat beide van MD4 zijn afgeleid. CFB-mode paragraaf 3.7 (De cipher feedback-mode) Deze paragraaf beschrijft een techniek die het mogelijk maakt om blokvercijfering om te zetten in stroomvercijfering. Een vergelijkbare techniek is Output Feedback-mode (OFB). 27
28. 28. 6.3 Opdracht PGP Personal installatie De doelstelling van deze opdracht is je bekend te maken met het programma PGP Personal. We laten je experimenteren met de e-mail plug-in van PGP Personal. Na de installatie van PGP stuur je een gecodeerd bericht naar de docent. 1. Zorg dat je het programma PGP Personal ter beschikking hebt. Dit kan via Internet maar het is sneller om het programma van de studenten-CD te halen. Ter informatie: Hoewel overal vermeld wordt dat PGP gratis is (freeware), gaat deze vlieger niet op voor bedrijven. PGP is enkel gratis als het niet voor commerciële doeleinden wordt gebruikt (zie [5], 'The comp.security.pgp FAQ - Part 1/11'). Meer informatie over de kosten die PGP voor een bedrijf met zich meebrengt is te vinden op de homepage van PGP, http://www.pgp.com/. Houdt er bij het maken van een keuze rekening mee dat er vanaf versie 2.3 een andere manier van versleutelen wordt gebruikt. Dit houdt in dat versies lager dan 2.3 de door de hogere versies gecodeerde berichten niet kunnen decoderen. Oudere versies van PGP zijn compatible met de nieuwe versies. Het verschil met versie 2.3 heeft te maken met het feit dat de versies voor 2.3 gebruik maken van RSA encryptie zonder daarvoor een licentie aangevraagd te hebben. Door berichten op deze manier onleesbaar te maken probeerde men de massa verplicht over te laten schakelen naar de nieuwe versie (zie [5], 'The comp.security.pgp FAQ - Part 2/11'). Ten behoeve van de uitwisseling van berichten tussen verschillende versies van PGP is het raadzaam enkel de algoritmen MD5, RSA en IDEA te gebruiken. 2. Installeer het programma PGP Personal. Indien je hierbij problemen ondervindt bij de installatie of het genereren van een sleutel raden we je aan eerst de website ([6] 'Cog / PGP & Outlook') te bekijken. Deze site kan je door de installatie heen helpen. Bruikbare tips die van de site komen zijn: • zorg voor een sterke wachtzin; • het bestand secring.skr bevat de geheime sleutel en mag derhalve niet in verkeerde handen vallen; • laat berichten die je gedecodeerd hebt niet zomaar ergens liggen; dit was niet de intentie van de afzender van het bericht! Tips voor het gebruik van PGP Personal in combinatie met Microsoft Outlook ([7] 'Outlook 98 and PGP'): • gebruik geen HTML-mail in combinatie met PGP (het HTML-deel wordt niet gecodeerd!); • teken geen mailtjes met attachment als de ontvanger geen PGP gebruikt (attachments worden dan onleesbaar!); • zet geen vinkje bij 'Use PGP/MIME' bij de voorkeuren, dit wordt niet ondersteund in combinatie met Outlook '98; • let erop dat de optie 'Word wrap clear-signed messages at column' een waarde bevat die kleiner dan of gelijk aan de 'word wrap' optie in Outlook '98 is (anders klopt de signature niet). PGP Personal werkt overigens ook met andere programma’s, zoals Microsoft Oulook Express, Eudrora en Pegasus (bij [8] 'QDPGP' kun je een plugin voor de 32-bits versie van Pegasus Mail voor Windows downloaden). 28
29. 29. Ter informatie: Het is tevens mogelijk om een versie voor Linux te downloaden. Houdt er dan wel rekening mee dat in versie 5.0 bij het programmeren een fout is gemaakt. Deze fout zorgt ervoor dat de keyspace aanzienlijk kleiner is. Dit heeft tot gevolg dat jouw sleutel een makkelijkere prooi is voor hackers. 3. Zorg nu dat je over de publieke sleutel van een medestudent en van de docent beschikt (vraag de sleutel van de docent aan de docent). Stuur een gecodeerd bericht naar je medestudent en controleer of hij/zij het bericht heeft ontvangen. Vraag in dit e-mailtje of hij/zij een gecodeerd bericht terugstuurt. 4. Stuur nu een gecodeerd e-mailbericht naar de docent met hierin jouw publieke sleutel (vraag de docent om het e-mail adres waarop de opdacht ingeleverd moet worden). 5. Stuur nu een bericht naar de docent met het antwoord op de volgende vraag: Hoe weet je of een publieke sleutel is van de persoon van wie hij lijkt te zijn? Geef in je antwoord op zijn minst twee methoden om de identiteit van de zender van een bericht vast te stellen. 29
30. 30. 6.4 PGP Virtuele harddisk PGP is al jaren een autoriteit op het gebied van encryptie. We kennen het vooral als email encryptie programma. Van de algoritmen waarvan PGP gebruik maakt zijn nog geen zwakke plekken gevonden. Het programma PGP bestaat echter uit meerdere onderdelen (kijk maar naar de PGP tray). Op één van deze onderdelen gaan we nu verder in. We hebben in de inleiding reeds gesproken over gevaren die onze data bedreigen. Eén van deze gevaren bestond uit het feit dat collegae, huisgenoten en hackers achter je computer gaan zitten en informatie van je systeem halen. De virtuele harddisk van PGP biedt hier een oplossing voor. 6.4.1 Virtuele harddisk (PGPdisk) De PGPdisk. Hiermee kun je virtuele partities creëren die zijn versleuteld. Je kunt deze partitie alleen aanspreken met behulp van de bijbehorende wachtzin (de term wachtzin is verzonnen om gebruikers aan te moedigen om meer dan één woord te gebruiken voor het beschermen van de geheime sleutel. Hier komen we in paragraaf 6.5 “Wat maakt een goede wachtzin?” uitgebreid op terug). Zo’n virtuele partitie is niets anders dan een bestand op de harde schijf die de schijn wekt een echte partitie te zijn. Je kunt met PGPdisk een partitie aanmaken van bijvoorbeeld 100 MB die dan bijvoorbeeld als schijf H: benaderd kan worden. In feite is het een bestand van 100 MB die op schijf C: staat. En dat is dan ook direct de zwakke schakel. Hoe goed PGP zijn werk ook doet, aan de zwakheden van Windows ontkomt het niet. Het versleutelde bestand kan nog steeds worden verwijderd. Het is dan ook aan te raden om het bestand na gebruik op “alleen lezen” te zetten, zo verklein je de kans dat de virtuele partitie per ongeluk in de prullenbak verdwijnt. Windows vraagt dan namelijk om een extra bevestiging. Tijdens gebruik kan het bestand niet op deze manier beschermd worden, daar er dan geen wijzigingen in kunnen plaatsvinden. Het is in ieder geval zeker dat niemand anders bij de data kan die op die virtuele partitie staat. En dat is veilig en bovendien reuze handig. Je kunt namelijk ook gewoon programma’s installeren op de PGP partitie, bijvoorbeeld een e-mailclient of een telebankierprogramma. Of je kunt er vertrouwelijke zakelijke documenten op zetten. In het ergste geval ben je alles kwijt (al erg genoeg), maar je hebt de zekerheid dat niemand anders de vertrouwelijke informatie kan bekijken. Een virtuele partitie aanmaken is gemakkelijk. Na installatie van PGP Personal nestelt PGP tray zich in de systeembalk van Windows. Na het kiezen van de optie PGPdisk krijg je vier opties new, mount, unmount en prefs, voor meer informatie hierover, zie paragraaf 6.4.2 Installatie / Gebruik PGPdisk. Tip: plaats de partitie-file op een andere partitie dan je boot-partitie. De achterliggende gedachte hierbij is dat virussen en hackers altijd de standaard onderdelen aanvallen. Hieronder valt ook het formatteren van de boot-partitie. 6.4.2 Installatie / gebruik van PGP disk Wanneer we vanuit de PGP-tray op de syteembalk de optie “PGPdisk” selecteren krijgen we het volgende scherm te zien, zie figuur 6.1. figuur 6.1 30
31. 31. De vier opties, die we in figuur 1 terug zien, zijn de hoofdfuncties van PGPdisk. Allereerst de optie “New”. Met behulp van deze optie zijn we in staat een virtuele partitie aan te maken. Dit gebeurt door middel van de “New PGPdisk Wizard”. Allereerst moet je opgeven waar je de partitie-file wilt opslaan. Vervolgens gaan we verder met de wizard, zie figuur 6.2. Standaard is de virtuele partitie 100 MB. Pas het formaat aan naar gelang de informatie die je wilt opslaan. Houdt hierbij rekening met het feit dat het formaat van de virtuele partitie achteraf niet te veranderen is. Ook moet je de partitie een driveletter toekennen. In dit geval is dat H:. De volgende stap is de sleutel. Je moet tenminste een wachtzin van acht karakters invoeren, maar hoe langer de wachtzin is, hoe beter. Meer informatie over wachtzinnen kun je vinden in de syllabus paragraaf 6.5 “Wat maakt een goede wachtzin?”. Vervolgens moet je de muis bewegen. PGP gebruikt deze muisbewegingen voor de versleuteling. Hier over hebben we het aan het begin van de syllabus reeds gehad, zie paragraaf 1.5 “random getallen”. figuur 6.2 Nu we de wizard hebben afgerond is er een virtuele partitie gecreëerd. Deze partitie heeft alle eigenschappen van een extra harddisk. Dit houdt in dat de partitie nog wel geformatteerd moet worden. Wanneer dit gebeurd is, is de virtuele partitie klaar voor gebruik. Indien je de machine herstart is de partitie niet meer met behulp van de verkenner te vinden, je hebt immers geen wachtzin ingevoerd. Nu komen de overige opties aan bod. De opties “mount” en “unmount” zijn Unix termen en kunnen worden vertaald als “koppel de partitie” en “ontkoppel de partitie”. Bij het koppelen selecteert je de betreffende partitie-file. Hierna word je om de reeds eerder opgegeven wachtzin gevraagd, zie figuur 6.3. Het ontkoppelen gebeurt met behulp van de toegewezen driveletter in “unmount”. figuur 6.3 31
32. 32. Tot slot hebben we de optie “Prefs”. Met behulp van deze optie kun je je voorkeuren aangeven met betrekking tot unmounten. Zo kun je bijvoorbeeld een disk na 15 minuten automatisch laten unmounten. Zie figuur 6.4. figuur 6.4 32
33. 33. 6.5 Wat maakt een goede wachtzin? Deze paragraaf is samengesteld uit 'The passphrase FAQ, version 1.04' [1]. PGP codeert een wachtzin met behulp van het MD5-algoritme naar een IDEA-sleutel (MD5 wordt behandeld in het boek, zie [12], 'De MD5 Message Digest-algoritme', maar is voor het begrijpen van deze paragraaf niet relevant). De sleutellengte van IDEA is 128 bits. Dit levert 2128 mogelijke combinaties op. Met speciale hardware waarmee één miljard sleutels per seconde geprobeerd kunnen worden, brandt de zon nog eerder op dan dat de sleutel gevonden wordt. Het mag duidelijk zijn dat IDEA niet de zwakke schakel in dit principe is, maar de mens die een wachtzin moet bedenken. Een goede wachtzin bedenken is dus relevant. Volgens de CERT (Computer Emergency Response Team) is zo'n 80% van de incidenten m.b.t. beveiliging terug te leiden naar de keuze van zwakke wachtwoorden (zie [3], 'Passwords -- Strengths and Weaknesses'). De FAQ noemt een wachtzin goed als het voor een hacker niet loont om een andere methode dan brute-force toe te passen om de wachtzin te kraken. Enkele vragen waar de FAQ antwoord op geeft zijn: • Hoe lang moet een wachtzin zijn? Per bit zou je één karakter moeten gebruiken. Dit zou dus betekenen dat je wachtzin zou moeten bestaan uit 128 karakters. Deze moet je wel iedere keer intypen als je PGP gebruikt, waardoor velen hier niet voor kiezen. • Wat als ik een andere taal gebruik? Een hacker kan gebruik maken van een dictonary-attack. Deze is uiteraard ook beschikbaar in een andere taal. Een andere taal gebruiken helpt dus niet. • Wat als ik citeer? Er zijn speciale boeken beschikbaar waarin citaten verzameld zijn. Star Trek fans zouden de zin 'Beam me up Scottie' dus niet moeten gebruiken. Met behulp van de standaard DOS-versie van PGP kunnen 40.000 citaten in 2½ dag geprobeerd worden. • Wat als ik citaten en onzin-zinnen door elkaar heen gebruik? Dit is beter dan de normale citaten, maar de woorden kunnen nog met een dictonaryattack gevonden worden. • Helpt het om hoofd- en kleine letters door elkaar heen te gebruiken? Door gebruik te maken van hoofd- en kleine letters en door cijfers te gebruiken in plaats van letters (b.v. '3' i.p.v. 'E') wordt de zoektijd van een brute-force attack zeker langer. • Wat als ik willekeurige woorden gebruik? Door 8 willekeurige woorden te gebruiken uit een woordenboek met 74.000 woorden heb je een goede wachtzin. Hij is meestal wel moeilijk te onthouden. • Wat als ik allemaal willekeurige letters gebruik? Hoewel dit moeilijk te onthouden is, is het wel mogelijk. Met 28 willekeurige letters heb je een sterke wachtzin. • Wat als ik allemaal willekeurige tekens gebruik? Er zijn 95 afdrukbare tekens. Meer dan de 26 letters uit het alfabet dus. Met 20 willekeurige tekens onthouden heb je een sterke wachtzin. 33
34. 34. De berekeningen kun je terug vinden in de FAQ. De FAQ geeft ook aan dat je de wachtzin nergens moet opschrijven, maar mocht je het nodig hebben, dan raadt de FAQ je aan om de wachtzin in drie delen op te splitsen die aan zes vrienden te geven (je hebt dus ook een backup). Een methode om willekeurig samengestelde wachtzinnen te maken waar de FAQ vaak naar verwijst is ' The Diceware Passphrase Home Page' [2]. Richtlijnen voor het opzetten van een afdoende beveiliging met wachtwoorden kun je vinden in RFC 1244 (Requestfor-comment 1244, zie [4], 'Site Security Handbook'). Er is een document waarin wordt bekeken op welke manier PGP te kraken is. De diverse algoritmen die PGP gebruikt komen daar aan bod ([9] 'PGP Attacks'). 6.5.1 Formule Passphrase Security Tot slot nog een formule om te berekenen of je wachtzin sterk is. Als de uitkomst van de formule groter dan één is, dan is brute-force aanval op de sleutel eenvoudiger dan een andere methode en heb je dus een goede wachtzin. Als de uitkomst kleiner dan één is, is je wachtzin niet per definitie slecht. Een uitkomst lager dan 0,35 kan echter naar verwachting binnen een jaar gekraakt worden. De formule wordt toegelicht in de FAQ [1], 'The passphrase FAQ, version 1.04' in paragraaf 4.0 ('How strong is my passphrase?'). De afkortingen van de onderstaande variabelen worden daar verklaard. De formule om de Passphrase Security te berekenen luidt: PS = RW/8 + RC/20 + RL/28 + LC/107*FF. De variabele FF is zelf weer een formule: FF = 1 + F1 + F2 + F3. De betekenis van de verschillende variabelen zijn terug te vinden in de FAQ. Ook de fudge factor komt in de FAQ aan bod. Spaties tellen in het hele verhaal niet mee, tenzij alle karakters random zijn. Verder is het van belang om in te zien dat niet alle variabelen voor iedere wachtzin ingevuld moeten worden. De voorbeelden hieronder lichten het gebruik van de formule toe en verschaffen je inzicht in de manier waarop een sterke wachtzin opgebouwd kan worden. Voorbeeld 1 "There is a sucker born every minute." met PS=0,280. Dit is een gemiddelde zin. Derhalve telt enkel de lengte (LC = 30) van de zin mee, welke wordt gedeeld door 107. Voorbeeld 2 "paper factors difference votes behind chain treaties never group" met PS = 1,125. Een duidelijk voorbeeld van negen willekeurige woorden (RW = 9), dit wordt gedeeld door 8. Voorbeeld 3 "A6:o@6 Ls+` uGX%3y[k" met PS = 1,05. Deze wachtzin bestaat enkel uit willekeurige karakters (RC = 21). Dit wordt gedeeld door 20. Let op: de spaties tellen hier wel mee daar de complete wachtzin uit willekeurige karakters is opgebouwd. Voorbeeld 4 "betty was smoking tires in her peace of pipe organs and playing tuna fish." met PS = 0,855. De zin telt 61 karakters (LC = 61). Verder wordt de FF met 0,5 opgehoogd daar de zin nergens op slaat (zie F1 in de FAQ). Derhalve wordt de PS = (61/107)*1,5. 34
35. 35. Voorbeeld 5 "Web oF thE Trust is BrokEn cAn You Glue it Back ToGether? and give it xRays." met PS = 1,34. De fudge factor van deze wachtzin die bestaat uit 61 karakters komt door de onzin al 0,5 hoger uit (F1). Vervolgens zorgen de afwijkende karakters (de 13 hoofdletters) ervoor dat F2 van toepassing is. F2 komt op (4*13)/61. De uiteindelijke PS = (61/107)*FF. 35
36. 36. 6.6 Tips uit de PGP FAQ In deze paragraaf behandelen we enkele punten van `The comp.security.pgp FAQ`. We hebben hier een aantal belangrijke/opmerkelijke punten uitgehaald en vertaald. Per alinea behandelen we één onderwerp. Dit met het doel je te informeren over het onderwerp en het type informatie wat je op de site kunt vinden. Mocht je je meer in PGP willen verdiepen, dan adviseren we je de FAQ zelf ook te lezen. 6.6.1 Gebruik de omgevingsvariabele niet PGP biedt de mogelijkheid om je wachtzin op te slaan als omgevingsvariable (met SET) (zie [5], 'The comp.security.pgp FAQ - Part 2/11'). Wij raden aan deze optie niet te gebruiken, daar je wachtzin dan voor mensen die fysieke toegang tot jouw PC hebben te zien is. Bij gebruik van Unix-achtige omgevingen en het opslaan van de wachtzin in het autoexec.bat bestand is fysieke toegang niet eens vereist. Andere gebruikers kunnen opvragen welke processen je hebt draaien en welke parameters daaraan meegegeven zijn. 6.6.2 Randseed.bin is niet geïnfecteerd door een virus PGP maakt gebruik van een bestand 'randseed.rnd'/'randseed.bin' om voor iedere bewerking een willekeurige sleutel te kiezen (zie [5], 'The comp.security.pgp FAQ - Part 2/11'). Dit bestand wordt constant bijgewerkt door PGP, ook als PGP niet in gebruik is. Het bestand wordt gevuld met random-data die afkomstig is van o.a. schijftoegang, toetsaanslagen en muisbewegingen. De extensie (indien .bin) kan heuristische virusscanners in de war brengen. Dit is op te lossen door PGP zo te configureren dat het voor de random-data een andere bestandsnaam gebruikt. 6.6.3 Verlies je sleutel en vergeet je wachtzin niet Vervelende zaken die je moet voorkomen bij het gebruik van PGP zijn het verliezen van je geheime sleutel (denk ook aan diefstal) en het vergeten van je wachtzin. Als je bang bent dat je je wachtzin vergeet, stelt de FAQ voor dat je een kopie maakt van je geheime sleutel met een eenvoudige wachtzin (zie [5], 'The comp.security.pgp FAQ - Part 3/11'). Deze kopie berg je vervolgens goed op. Als je je geheime sleutel verliest, kun je de sleutel intrekken met een zogenaamd revocation certificate (zie [5], 'The comp.security.pgp FAQ - Part 7/11'). Om dit certificaat te maken heb je wel een kopie van je geheime sleutel nodig. Derhalve wordt geadviseerd altijd preventief een kopie van je geheime sleutel op een veilige lokatie te hebben. Als je je wachtzin vergeten bent en je wilt je sleutel intrekken is dit niet mogelijk (je kunt immers niet bij je geheime sleutel). Om dit probleem te omzeilen stelt de FAQ voor om na het aanmaken van het sleutelpaar direct een revocation certificate aan te maken. Dit certificaat stel je samen met je geheime sleutel veilig. 6.6.4 De PGP Developer Kit Mocht je zelf met PGP aan de slag willen, dan is er een developer kit voor PGP te vinden op http://www.pgp.com/sdk/. Met de developer kit kun je PGP integreren in je eigen applicatie. 36
37. 37. 6.7 Literatuur 1. The passphrase FAQ, version 1.04 http://www.stack.nl/~galactus/remailers/passphrase-faq.html Engelstalige FAQ over het maken van een goede wachtzin voor PGP. 2. The Diceware Passphrase Home Page http://www.diceware.com/ Engelstalige site met verwijzingen naar een aantal sites die te maken hebben met het maken van goede wachtzinnen voor PGP, waaronder ' The passphrase FAQ'. Tevens een voorstel voor het maken van een wachtzin door dobbelstenen te gooien. 3. Passwords -- Strengths and Weaknesses http://www.vtac.org/Tutorials/password.html Engelstalig document waarin het belang van de goede keuze van een wachtwoord wordt benadrukt. Tevens worden enkele suggesties gedaan om een beter wachtwoord te kiezen en wordt verteld hoe hackers achter wachtwoorden kunnen komen. 4. Site Security Handbook http://www.ietf.org/rfc/rfc1244.txt?number=1244 Engelstalige RFC waarin richtlijnen worden voorgesteld m.b.t. beveiliging die door systeembeheerders zouden moeten worden overgenomen. 5. The comp.security.pgp FAQ http://www.cam.ac.uk.pgp.net/pgpnet/pgp-faq/ Engelstalige FAQ waarin veel met betrekking tot het programma PGP uit de doeken wordt gedaan. 6. Cog / PGP & Outlook http://www.cog.clara.net/pgpinstall/ Op deze Engelstalige site kun je informatie vinden betreffende de installatie van PGP Personal in combinatie met Microsoft Outlook. Jouw versie van PGP en de versie op de website kunnen enigszins verschillen maar deze verschillen zijn te verwaarlozen. 7. Outlook 98 and PGP http://www.tombeck.com/privacy/outlook98pgp.html Deze Engelstalige site geeft enkele bruikbare tips voor het gebruik van PGP in combinatie met Outlook '98. Deze URL staat niet op CD. 8. QDPGP http://www.download32.com/proghtml/59/5938.htm Deze Engelstalige site bevat een PGP plugin voor de 32-bits versie van Pegasus Mail voor Windows. 9. PGP Attacks http://axion.physics.ubc.ca/pgp-attack.html Engelstalig document waarin de door PGP gebruikte algoritmen worden bekeken op veiligheid. In het document worden ook enkele praktisch haalbare aanvallen op PGP beschreven. 10. Boek 'Netwerkbeveiliging en cryptografie' van William Stallings, Academic Service 1999 (ISBN 90-395-1105-5) Paragraaf 12.1, 'Pretty Good Privacy (PGP)' Beschrijving van de werking van het programma PGP. 37
38. 38. 11. Boek 'Netwerkbeveiliging en cryptografie' van William Stallings, Academic Service 1999 (ISBN 90-395-1105-5) Paragraaf 12.2, 'S/MIME' S/MIME is een veiligheidsverbetering van de Internet e-mailformaatstandaard die waarschijnlijk in het bedrijfsleven gebruikt gaat worden. S/MIME staat voor Secure/Multipurpose Internet Mail Extension. 12. Boek 'Netwerkbeveiliging en cryptografie' van William Stallings, Academic Service 1999 (ISBN 90-395-1105-5) Paragraaf 9.1, 'De MD5 Message Digest-algoritme' MD5 is het hash-algoritme wat door PGP gebruikt wordt om van een passphrase een IDEA-sleutel te maken. In deze paragraaf worden MD4 en MD5 gedetailleerd besproken. 38
39. 39. 7. Encryptie in Java met JCA en JCE 7.1 Beschrijving van de lesstof Java cryptografie, JCA en JCE worden behandeld in dit hoofdstuk van de syllabus. Het hoofdstuk is opgedeeld in de paragrafen: 7.2 Inleiding op Java In deze paragraaf van de syllabus wordt een korte inleiding gegeven op de JCA en JCE klassen. 7.3 Random getallen In deze paragraaf wordt kort het gebruik van random getallen in Java besproken. Zo komen onder werpen als secure random en random getallengeneratoren aan bod. Aan het einde van deze paragraaf moet je een opdracht doen. Het is de bedoeling om een eigen seeder te schrijven voor het voeden van een random getallengenerator. 7.4 Sleutelbeheer Deze paragraaf gaat over sleutels, het aanmaken van sleutels en het beheren van sleutels, met gebruik van Java. Verder komen nog het converteren en uitwisselen van sleutels, zoals bij Diffie Hellman, aan bod. Aan het einde van deze paragraaf moet je zelf een klein sleutelbeheer programmaatje in Java schrijven. 7.5 Authenticatie Deze paragraaf gaat voornamelijk over de vier begrippen message digests, MACs, signatures en certificaten. Er wordt beschreven hoe je met deze begrippen moet werken in Java. Bij de paragraaf over message digests zit een opdracht: het veranderen van een beveiligde wachtwoord login in een dubbele sterkte login. 7.6 Encryptie Bij deze paragraaf kijken we naar blok- en stroomvercijfering in Java. Hierbij wordt ook gekeken naar hoe padding in Java werkt en hoe je een cipher in Java moet aanmaken. Verder wordt wachtzin encryptie behandeld. De opdracht hierbij is het maken van een programma wat gebruik maakt van wachtzin encryptie. 7.7 Providers Deze paragraaf geeft uitleg over de implementatie van providers in Java. 7.8 Signed Applets In deze paragraaf worden signed applets besproken. 7.9 Eindopdracht Als eindopdracht voor het Java gedeelte moet er een programma geschreven worden wat beveiliging nodig heeft. Je bent vrij in de keuze van de toepassing. 39
40. 40. 7.2 Inleiding op Java Dit hoofdstuk van de syllabus heeft betrekking op encryptie en Java. Bij dit hoofdstuk zitten een aantal practica die door de student uitgevoerd moeten worden. De tekst in deze syllabus dient ter ondersteuning voor het maken van deze opdrachten. In deze paragrafen worden verschillende methoden besproken die aansluiten bij de eerder behandelde stof in deze syllabus. Veel onderwerpen komen terug en er wordt nu gekeken hoe deze met de JCA (Java Cryptography Architecture) en JCE (Java Crypto Extensions) klassen geimplementeerd kunnen worden. Deze syllabus is gericht op JDK 1.3 en JCE 1.2 van Sun. In JDK 1.3 zit de JCA package inbegrepen. JCE is een uitbreiding op JCA. JDK 1.3 is te vinden op de website van Sun [1]. Voor een uitleg over de API’s en klassen verwijs ik naar de volgende pagina van Sun [2]. Hier kun je een complete API handleiding voor JDK 1.3 downloaden. Als je wilt kun je ook nog JDK 1.2 [3] gebruiken. JCE mag helaas, nog steeds niet anno juni 2000, geëxporteerd worden vanuit de Verenigde Staten. Gelukkig zijn er ook organisaties buiten de Verenigde Staten die JCE hebben geïmplementeerd. Bijvoorbeeld Cryptix en IAIK-JCE. Bij Cryptix is gratis een versie te downloaden [4]. JCE 1.2 is wel aanwezig op de website van Sun [5] het is alleen niet mogelijk om de package te downloaden. Er is ook een API en klassen uitleg voor JCE 1.2 op de site van Sun aanwezig. [6]. Andere JCE providers vind je in het volgende overzicht: Naam Volledige naam Website SunJCE Sun JCE Security [5] Cryptix Cryptix for Java [4] IAIK IAIK Security [8] JSAFE RSA’s Java Crypto Toolkit [9] 7.2.1 De gebruikte Java security API’s Bij security gaat het voornamelijk om de klassen java.security en javax.crypto. Je hoeft dus niet de gehele API uitleg te bekijken om er mee te kunnen werken. Voor beveiliging zijn vooral de volgende packages van toepassing: java.security JCA java.security.cert JCA java.security.interfaces JCA java.security.specs JCA javax.crypto JCA javax.crypto.interfaces JCE javax.crypto.spec JCE Omdat de JCA en JCE packages elk zo’n 20 megabyte groot zijn, is er ook een CD voor dit vak met daarop de benodigde versies van JDK en JCE van cryptix. 40