SlideShare une entreprise Scribd logo
1  sur  96
..
..
..
..
..
..
..
..
..
.
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

.

.

.
Berichten in code en
geheimschrift.
Uit: Hoe werkt dat? The Readers’s
Digest NV, Amsterdam, ISBN 90
6407 225 6
Aan de vooravond van de Japanse
aanval op Pearl Harbor in december
1941 waarschuwde een schijnbaar
onschuldig weerbericht,
‘Oostenwind regen, noordenwind
bewolkt, westenwind helder’, de
Japanse diplomaten overal ter
wereld voor de naderende oorlog.

van de Duitse
oorlogsvloot konden
begrijpen. Zelfs toen de
Duitse Admiraliteit het
verlies opmerkte, duurde
het nog weken voordat
zij elk Duits schip van
een nieuw codeboek had
weten te voorziet.

Het verzenden van
geheime informatie met
gebruikmaking van
geheimschrift neemt
eveneens een belangrijke
Deze boodschap was een van de
plaats in. Bij
eenvoudigste soorten van codering - geheimschrift zijn de
een vooraf opgesteld bericht dat een echte letters van het
speciale betekenis heeft voor de
alfabet vervangen door
ontvangers.
andere letters of getallen of
symbolen. Morse is eigenlijk ook
Soortgelijke boodschappen werden
een geheimschrift waarbij elke letter
tijdens de Tweede Wereldoorlog
in de vorm van combinaties van
door de BBC verzonden naar het
korte en lange signalen via de radio
Franse verzet. Een zin als ‘Romeo
(met piepsignalen), de telegraaf of
omhelst Julia’ of ‘Benedictine is
met seinlampen wordt verstuurd. Bij
een zoete likeur’ kan van tevoren
een andere vorm van geheimschrift
afgesproken informatie bevatten
wordt een zogenaamd ‘coderooster’
over het droppen van agenten of
gebruikt. Het bericht ‘Vijandelijke
voorraden. De eerste regel van een
troepen landen 1 december’ kan in
gedicht van de Franse schrijver Paul een rooster van pakweg zes
Verlaine (‘De lange snikken van de kolommen worden weergegeven,
herfstviolen’) bracht het verzet op de waarbij afwisselend van links naar
hoogte van de naderende landingen
rechts en van rechts naar links is
op D-Day.
geschreven. De letters worden dan
weer in groepjes van zes
Bij ingewikkelder codes zijn
uitgeschreven, waarbij een diagonale
woorden of hele zinnen vervangen
lijn door het rooster wordt
door andere woorden of zinnen.
aangehouden:
Verder kunnen onsamenhangende
lettergroepen worden gebruikt om
een heel woordenboek van woorden
en zinnen te creëren. In de letters
GYPHC kan bijvoorbeeld de
opdracht ‘Zorg voor rugdekking’
schuilgaan. Met zulke groepjes van
Het bericht dat wordt verzonden
vijf letters, die slechts begrijpelijk
zijn voor degene die ze in het juiste luidt dus: DNEELA JIPNEL
EJIVKO ADCENN RETDEM
codeboek kan opzoeken, kunnen
BEENER.
lange militaire berichten worden
verzonden.
Degene die het bericht ontvangt
gebruikt eenzelfde rooster bij het
Als een codeboek echter in handen
van de vijand komt, kan belangrijke ontcijferen.
informatie worden onderschept
Het nadeel bij dit systeem is dat de
zonder dat de verstuurder dat in de
frequentie van letters en
gaten heeft. In de Eerste
lettercombinaties hetzelfde blijft als
Wereldoorlog werd het codeboek
in de gewone taal. De E is de meest
van de Duitse Marine uit het wrak
voorkomende letter in het
van de lichte kruiser Magdeburg
Nederlands, de Q komt zeer weinig
gevist, waardoor de Engelsen een
groot deel van de geheimste bevelen voor. Wie de code wil ontcijferen,
2

(of ‘BREKEN’), kan er dus van
uitgaan dat de meest voorkomende
letter voor de E staat.
Tijdens de Tweede Wereldoorlog
maakte de Duitse regering gebruik
van een cryptografisch toestel dat
Enigma heette. Telkens wanneer een
bepaalde letter werd overgeseind,
werd een andere sleutel gebruikt.
Elke dag werd een nieuwe instelling
gebruikt. Een ploeg Engelse wis- en
taalkundigen van de universiteit wist
echter in 1940 de code van Enigma
te breken.
Met de opkomst van de computer
zijn de codes veel ingewikkelder
geworden, veel moeilijker te breken.
Bij complexe programma's worden
duizenden berekeningen gebruikt, en
zonder kennis van de volgorde van
de sleutelopdrachten kost het
duizenden jaren om ze te ontcijferen.
Tekst bij de afbeelding
rechtsbovenin: 'Eenmalig
codeblok'
Spionnen maken gebruik van kleine
codeblokken om geheime
boodschappen van hun
opdrachtgevers te ontcijferen. Via
de radio verzonden, gecodeerde
instructies hebben betrekking op
getallen van vijf cijfers op een
bepaalde bladzijde van het blok. Als
het bericht eenmaal ontvangen en
ontcijferd is, scheuren ontvanger en
verzenden de betreffende bladzijde
uit hun blok.
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
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
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
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
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
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
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
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
•

Probeer te spoofen
Veel machines zijn zo ingesteld dat ze voor bepaalde zaken enkel machines met een
bepaald netwerkadres of IP-adres toelaten. Dit is namelijk eenvoudig in te stellen.
Met spoofen neem je dat adres over. Je moet hiervoor wel fysiek vlak bij de machine
zitten die je nadoet.

•

Login spoofing
Bij deze methode zorgt de hacker voor een programma wat lijkt op het loginprogramma wat de gebruiker gebruikt. Na het invoeren van de loginnaam en
wachtwoord krijgt de gebruiker een foutmelding. De gebruiker denkt een typefout te
hebben gemaakt. Het programma slaat de loginnaam en het corresponderende
wachtwoord op en schakelt over naar het échte login programma (zie
[10], 'Passwords -- Strengths and Weaknesses').

•

Trojan horses
Stuur de gebruiker van een systeem een programma toe wat een server bevat waar jij
toegang toe hebt, zoals Back Orifice. Als de gebruiker het programma start kun jij
alles met de PC doen wat je wilt.

•

Replay-attack
Vang een gecodeerd packet (deel van een bericht) op en stuur dit vervolgens
opnieuw. De PC van de ontvanger van het packet kan vervolgens vastlopen of andere
ongewenste reacties geven (zie [11], paragraaf 13.3 boek 'Authenticatie-header').

•

Vraag de gebruiker om het wachtwoord
Een van de meest eenvoudige methoden om achter het wachtwoord te komen is het
gewoon te vragen aan de gebruiker. Door zich voor te doen als systeembeheerder is
dit een succesvolle methode. Een variant op deze methode is het sturen van een emailbericht naar een gebruiker met het verzoek het wachtwoord te wijzigen naar een
voor de hacker bekend wachtwoord. Uiteraard moeten gebruikers op de hoogte zijn
van het feit dat systeembeheerders e.d. nooit om hun wachtwoord vragen en dat zij
hun wachtwoord altijd voor zichzelf dienen te houden (zie [10], 'Passwords -Strengths and Weaknesses').

Verder nog enkele manieren die een hacker gebruikt om een encryptie te kraken:
•

Brute-force search
Een hacker kan domweg alle mogelijke sleutels gaan proberen. Rond 1990 werd
gedacht dat dit onmogelijk was voor bijvoorbeeld DES, daar er 1017 mogelijkheden
waren. Tegenwoordig zijn computers sneller en worden ze parallel ingezet voor
dergelijke pogingen. Toch blijft brute-force de traagste methode om sleutels te
achterhalen.

•

Dictionary search
Vaak gebruikt een gebruiker als wachtwoord een naam van een familielid, bekend
persoon of huisdier. Als wachtzin wordt gekozen voor bekende zinnen zoals
bijvoorbeeld spreekwoorden of Murphy's Law. Door deze allemaal in een groot
bestand te zetten samen met een woordenboek kan de tijd om een sleutel te vinden
drastisch worden verminderd.

•

Ciphertext-only attack
Als de hacker beschikt over ciphertext en hij weet wat de originele tekst was, dan kan
hij de tekst net zo lang coderen tot hij de ciphertext weer heeft. De sleutel is dan
gevonden.

•

Known-plaintext attack
Zie 'Ciphertext-only attack', maar dan andersom.

11
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
•

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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie
Syllabus encryptie

Contenu connexe

En vedette

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

En vedette (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Syllabus encryptie

  • 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 . . .
  • 2. Berichten in code en geheimschrift. Uit: Hoe werkt dat? The Readers’s Digest NV, Amsterdam, ISBN 90 6407 225 6 Aan de vooravond van de Japanse aanval op Pearl Harbor in december 1941 waarschuwde een schijnbaar onschuldig weerbericht, ‘Oostenwind regen, noordenwind bewolkt, westenwind helder’, de Japanse diplomaten overal ter wereld voor de naderende oorlog. van de Duitse oorlogsvloot konden begrijpen. Zelfs toen de Duitse Admiraliteit het verlies opmerkte, duurde het nog weken voordat zij elk Duits schip van een nieuw codeboek had weten te voorziet. Het verzenden van geheime informatie met gebruikmaking van geheimschrift neemt eveneens een belangrijke Deze boodschap was een van de plaats in. Bij eenvoudigste soorten van codering - geheimschrift zijn de een vooraf opgesteld bericht dat een echte letters van het speciale betekenis heeft voor de alfabet vervangen door ontvangers. andere letters of getallen of symbolen. Morse is eigenlijk ook Soortgelijke boodschappen werden een geheimschrift waarbij elke letter tijdens de Tweede Wereldoorlog in de vorm van combinaties van door de BBC verzonden naar het korte en lange signalen via de radio Franse verzet. Een zin als ‘Romeo (met piepsignalen), de telegraaf of omhelst Julia’ of ‘Benedictine is met seinlampen wordt verstuurd. Bij een zoete likeur’ kan van tevoren een andere vorm van geheimschrift afgesproken informatie bevatten wordt een zogenaamd ‘coderooster’ over het droppen van agenten of gebruikt. Het bericht ‘Vijandelijke voorraden. De eerste regel van een troepen landen 1 december’ kan in gedicht van de Franse schrijver Paul een rooster van pakweg zes Verlaine (‘De lange snikken van de kolommen worden weergegeven, herfstviolen’) bracht het verzet op de waarbij afwisselend van links naar hoogte van de naderende landingen rechts en van rechts naar links is op D-Day. geschreven. De letters worden dan weer in groepjes van zes Bij ingewikkelder codes zijn uitgeschreven, waarbij een diagonale woorden of hele zinnen vervangen lijn door het rooster wordt door andere woorden of zinnen. aangehouden: Verder kunnen onsamenhangende lettergroepen worden gebruikt om een heel woordenboek van woorden en zinnen te creëren. In de letters GYPHC kan bijvoorbeeld de opdracht ‘Zorg voor rugdekking’ schuilgaan. Met zulke groepjes van Het bericht dat wordt verzonden vijf letters, die slechts begrijpelijk zijn voor degene die ze in het juiste luidt dus: DNEELA JIPNEL EJIVKO ADCENN RETDEM codeboek kan opzoeken, kunnen BEENER. lange militaire berichten worden verzonden. Degene die het bericht ontvangt gebruikt eenzelfde rooster bij het Als een codeboek echter in handen van de vijand komt, kan belangrijke ontcijferen. informatie worden onderschept Het nadeel bij dit systeem is dat de zonder dat de verstuurder dat in de frequentie van letters en gaten heeft. In de Eerste lettercombinaties hetzelfde blijft als Wereldoorlog werd het codeboek in de gewone taal. De E is de meest van de Duitse Marine uit het wrak voorkomende letter in het van de lichte kruiser Magdeburg Nederlands, de Q komt zeer weinig gevist, waardoor de Engelsen een groot deel van de geheimste bevelen voor. Wie de code wil ontcijferen, 2 (of ‘BREKEN’), kan er dus van uitgaan dat de meest voorkomende letter voor de E staat. Tijdens de Tweede Wereldoorlog maakte de Duitse regering gebruik van een cryptografisch toestel dat Enigma heette. Telkens wanneer een bepaalde letter werd overgeseind, werd een andere sleutel gebruikt. Elke dag werd een nieuwe instelling gebruikt. Een ploeg Engelse wis- en taalkundigen van de universiteit wist echter in 1940 de code van Enigma te breken. Met de opkomst van de computer zijn de codes veel ingewikkelder geworden, veel moeilijker te breken. Bij complexe programma's worden duizenden berekeningen gebruikt, en zonder kennis van de volgorde van de sleutelopdrachten kost het duizenden jaren om ze te ontcijferen. Tekst bij de afbeelding rechtsbovenin: 'Eenmalig codeblok' Spionnen maken gebruik van kleine codeblokken om geheime boodschappen van hun opdrachtgevers te ontcijferen. Via de radio verzonden, gecodeerde instructies hebben betrekking op getallen van vijf cijfers op een bepaalde bladzijde van het blok. Als het bericht eenmaal ontvangen en ontcijferd is, scheuren ontvanger en verzenden de betreffende bladzijde uit hun blok.
  • 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. 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. 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. 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. 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. 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. 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. 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
  • 11. • Probeer te spoofen Veel machines zijn zo ingesteld dat ze voor bepaalde zaken enkel machines met een bepaald netwerkadres of IP-adres toelaten. Dit is namelijk eenvoudig in te stellen. Met spoofen neem je dat adres over. Je moet hiervoor wel fysiek vlak bij de machine zitten die je nadoet. • Login spoofing Bij deze methode zorgt de hacker voor een programma wat lijkt op het loginprogramma wat de gebruiker gebruikt. Na het invoeren van de loginnaam en wachtwoord krijgt de gebruiker een foutmelding. De gebruiker denkt een typefout te hebben gemaakt. Het programma slaat de loginnaam en het corresponderende wachtwoord op en schakelt over naar het échte login programma (zie [10], 'Passwords -- Strengths and Weaknesses'). • Trojan horses Stuur de gebruiker van een systeem een programma toe wat een server bevat waar jij toegang toe hebt, zoals Back Orifice. Als de gebruiker het programma start kun jij alles met de PC doen wat je wilt. • Replay-attack Vang een gecodeerd packet (deel van een bericht) op en stuur dit vervolgens opnieuw. De PC van de ontvanger van het packet kan vervolgens vastlopen of andere ongewenste reacties geven (zie [11], paragraaf 13.3 boek 'Authenticatie-header'). • Vraag de gebruiker om het wachtwoord Een van de meest eenvoudige methoden om achter het wachtwoord te komen is het gewoon te vragen aan de gebruiker. Door zich voor te doen als systeembeheerder is dit een succesvolle methode. Een variant op deze methode is het sturen van een emailbericht naar een gebruiker met het verzoek het wachtwoord te wijzigen naar een voor de hacker bekend wachtwoord. Uiteraard moeten gebruikers op de hoogte zijn van het feit dat systeembeheerders e.d. nooit om hun wachtwoord vragen en dat zij hun wachtwoord altijd voor zichzelf dienen te houden (zie [10], 'Passwords -Strengths and Weaknesses'). Verder nog enkele manieren die een hacker gebruikt om een encryptie te kraken: • Brute-force search Een hacker kan domweg alle mogelijke sleutels gaan proberen. Rond 1990 werd gedacht dat dit onmogelijk was voor bijvoorbeeld DES, daar er 1017 mogelijkheden waren. Tegenwoordig zijn computers sneller en worden ze parallel ingezet voor dergelijke pogingen. Toch blijft brute-force de traagste methode om sleutels te achterhalen. • Dictionary search Vaak gebruikt een gebruiker als wachtwoord een naam van een familielid, bekend persoon of huisdier. Als wachtzin wordt gekozen voor bekende zinnen zoals bijvoorbeeld spreekwoorden of Murphy's Law. Door deze allemaal in een groot bestand te zetten samen met een woordenboek kan de tijd om een sleutel te vinden drastisch worden verminderd. • Ciphertext-only attack Als de hacker beschikt over ciphertext en hij weet wat de originele tekst was, dan kan hij de tekst net zo lang coderen tot hij de ciphertext weer heeft. De sleutel is dan gevonden. • Known-plaintext attack Zie 'Ciphertext-only attack', maar dan andersom. 11
  • 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. • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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