RING- EN GROEPSHANDTEKENINGEN

Vergelijkbare documenten
De cryptografie achter Bitcoin

Tweede Huiswerk Security 26 of 28 oktober, 11.00, Nabespreken op Werkcollege.

RSA. F.A. Grootjen. 8 maart 2002

Elliptische krommen en digitale handtekeningen in Bitcoin

Hoe je het cryptosysteem RSA soms kunt kraken. Benne de Weger

slides10.pdf December 5,

Cryptografie: de wetenschap van geheimen

OPLOSSINGEN VAN DE OEFENINGEN

De wiskunde achter de Bitcoin

Hoofdstuk 1. Inleiding. Lichamen

Probabilistische aspecten bij public-key crypto (i.h.b. RSA)

Algoritmes en Priemgetallen. Hoe maak je een sleutelpaar voor RSA?

Opgeloste en onopgeloste mysteries in de getaltheorie

Definitie 5.1. Cyclische groepen zijn groepen voortgebracht door 1 element.

Universiteit Gent. Academiejaar Discrete Wiskunde. 1ste kandidatuur Informatica. Collegenota s. Prof. Dr.

Tweede Toets Security 9 november 2016, , Educ-α.

Algoritmes in ons dagelijks leven. Leve de Wiskunde! 7 April 2017 Jacobien Carstens

Public Key Cryptography. Wieb Bosma

Opgaven Getaltheorie en Cryptografie (deel 4) Inleverdatum: 13 mei 2002

We beginnen met de eigenschappen van de gehele getallen.

Code signing. Door: Tom Tervoort

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s.

Oefening 4.3. Zoek een positief natuurlijk getal zodanig dat de helft een kwadraat is, een derde is een derdemacht en een vijfde is een vijfdemacht.

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte

Getaltheorie II. ax + by = c, a, b, c Z (1)

Getaltheorie I. c = c 1 = 1 c (1)

Oefening 4.3. Zoek een positief natuurlijk getal zodanig dat de helft een kwadraat is, een derde is een derdemacht en een vijfde is een vijfdemacht.

7.1 Het aantal inverteerbare restklassen

Zwakke sleutels voor RSA

FACTORISATIE EN CRYPTOGRAFIE

Definitie 1.1. Een groep is een verzameling G, uitgerust met een bewerking waarvoor geldt dat:

Groepen, ringen en velden

??? Peter Stevenhagen. 7 augustus 2008 Vierkant voor wiskunde

7 Deelbaarheid. 7.1 Deelbaarheid WIS7 1

Tweede Toets Security 2 november 2015, , Educ-α.

Profielwerkstuk Informatica en Wiskunde Is RSA-cryptografie nu veilig genoeg en wat betekent dit voor de toekomst van digitale beveiliging?

Cryptografie met behulp van elliptische krommen

Cryptografische beveiliging op het Internet

4Passief: n Afluisteren. n Geen gegevens gewijzigd of vernietigd. n Via de routers van WAN. n Via draadloze verbindingen. 4Fysieke afsluiting

De digitale handtekening

Opgaven Eigenschappen van Getallen Security, 2018, Werkgroep.

5 Inleiding tot de groepentheorie

Agenda SSN Week 3. Gastcollege Stemcomputers Gastcollege PKI Secret key Public Key Hashes DES AES Praktikum: Cryptool en RSAFAQ

informatica. cryptografie. overzicht. hoe & wat methodes belang & toepassingen moderne cryptografie

Hoofdstuk 3. Equivalentierelaties. 3.1 Modulo Rekenen

Zomercursus Wiskunde. Katholieke Universiteit Leuven Groep Wetenschap & Technologie. September 2008

STUDIEWIJZER CRYPTOGRAPHY BACHELOR IN DE TOEGEPASTE INFORM ATICA SEMESTER 5 ACADEMIEJAAR LECTOR JOHAN GALLE

Het programma ELGAMAL

I.3 Functies. I.3.2 Voorbeeld. De afbeeldingen f: R R, x x 2 en g: R R, x x 2 zijn dus gelijk, ook al zijn ze gegeven door verschillende formules.

Hoofdstuk 6. Congruentierekening. 6.1 Congruenties

Datacommunicatie Cryptografie en netwerkbeveiliging

Digitale geldtransacties. Stefanie Romme Wiskunde, Bachelor Begeleider: Wieb Bosma

Gehelen van Gauss. Hector Mommaerts

Zomercursus Wiskunde. Module 1 Algebraïsch rekenen (versie 22 augustus 2011)

De partitieformule van Euler

Wireshark. Open Source Vroeger Ethereal Wireless kan lastig zijn

Security. Eerste tentamen

Algebra. Oefeningen op hoofdstuk Groepentheorie Cayleytabellen van groepen van orde Cyclische groepen

De rol van de digitale handtekening bij de archivering van elektronische documenten

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

Elfde college complexiteit. 23 april NP-volledigheid III

Getallen, 2e druk, extra opgaven

Netwerken. Beveiliging Cryptografie

Memoriseren: Een getal is deelbaar door 10 als het laatste cijfer een 0 is. Of: Een getal is deelbaar door 10 als het eindigt op 0.

Opgaven RSA Security, 15 okt 2018, Werkgroep.

Getaltheorie groep 3: Primitieve wortels

Opgeloste en onopgeloste mysteries in de getaltheorie

Restsystemen 183 Oplossen van lineaire vergelijkingen 190 Structuren met één bewerking 192 Structuren met twee bewerkingen

WEP, chopchop en WPA

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

Crypto, Certificaten, SSL, PKI What can possibly go wrong? ISC2 cryptonight 10 juni 2014

Opgaven Discrete Logaritme en Cryptografie Security, 22 okt 2018, Werkgroep.

Geldwisselprobleem van Frobenius

Toetsbundel 2 Security 13 juli 2017, Gerard Tel, WerkCollege.

Concept. Inleiding. Advies. Agendapunt: 04 Bijlagen: - College Standaardisatie

De geheimen van het Web. Motivatie

Vermogen- en tijdsanalyse van cryptosystemen gebaseerd op elliptische krommen

FACTORISATIE EN CRYPTOGRAFIE

aé=êçä=î~å=çé=åêóéíçäçöáé=éå=çé=çáöáí~äé=ü~åçíéâéåáåö= áåò~âé=çé=îéáäáöüéáç=î~å=éäéâíêçåáëåüé=áåñçêã~íáéj ìáíïáëëéäáåö

1. REGELS VAN DEELBAARHEID.

Inleiding tot de Problem Solving - deel 1: Combinatoriek en getaltheorie

in alle mogelijke mediaformaten, - bestaande en in de toekomst te ontwikkelen -, aan de Universiteit Hasselt.

Aanvullingen bij Hoofdstuk 6

Bijzondere kettingbreuken

6 Ringen, lichamen, velden

Cryptografie met krommen. Reinier Bröker. Universiteit Leiden

Tweede Deeltoets Security 3 juli 2015, , Educatorium-Γ.

Tweede Toets Security Woensdag 8 november 2017, , Educ-α.

Verzamelingen deel 3. Derde college

Diophantische vergelijkingen

Priemfactoren. Grote getallen. Geavanceerde methoden. Hoe ontbind je een getal N in priemfactoren?

ICT en de digitale handtekening. Door Peter Stolk

Het RSA Algoritme. Erik Aarts - 1 -

1.5.1 Natuurlijke, gehele en rationale getallen

Eigenschap (Principe van welordening) Elke niet-lege deelverzameling V N bevat een kleinste element.

Technische beschrijving pseudonimisatie gegevensverzameling NIVEL Zorgregistraties eerste lijn

Veilig en. Waarom en via een beveiligde verbinding? U vertrouwt de verbinding met de server van InterNLnet niet

Vakgroep CW KAHO Sint-Lieven

Uitwerking tentamen Analyse van Algoritmen, 29 januari

1 Rekenen in eindige precisie

Transcriptie:

RING- EN GROEPSHANDTEKENINGEN Kristof VERSLYPE Eindverhandeling aangeboden tot het behalen van de graad van licentiaat in de informatica 2003 2004 Promotor : Prof. Dr. ir. B. DE DECKER

Faculteiten Wetenschappen K.U. Leuven en Toegepaste Wetenschappen Academiejaar 2003 2004 Naam en voornaam student : Verslype Kristof Titel : Engelse vertaling : ACM Classificatie: E.3 AMS Classificatie: 94A60 Korte inhoud : Ring- en Groepshandtekeningen Group and Ring Signatures Deze thesis behandelt twee types groepsgeöriënteerde digitale handtekeningen: De ringhandtekening en de groepshandtekening. Een ringhandtekening wordt in naam van een groep entiteiten geplaatst. Een groep wordt op het moment van ondertekenen door de ondertekenaar zelf samengesteld, zonder coördinatie met of medeweten van de andere groepsleden. De identiteit van de echte ondertekenaar kan niet achterhaald worden. De ondertekenaar heeft naast zijn eigen sleutelpaar enkel de standaard publieke sleutels van de andere groepsleden nodig. In een Groepshandtekening zijn er een hele groep gebruikers waarbij elk lid handtekeningen kan plaatsen in naam van de gehele groep. De verifieerder kan niet nagaan welk groepslid precies getekend heeft, tenzij in geval van betwisting of misbruik, dan kan de handtekening geopend worden door een vertrouwde derde partij. Om een groep te construeren is de medewerking van elk groepslid vereist. Daarnaast is voor deze types handtekening een interface en implementatie voorzien in de JCA/JCE, de cryptografische bibliotheek van Java. Eindverhandeling aangeboden tot het behalen van de graad van licentiaat in de informatica Promotor : Prof. Dr. ir. B. De Decker Departement Computerwetenschappen Assessoren : Begeleiders : Dr. ir. J. Ramon ir. P. Rigole Dr. ir. G. Neven L. Demuynck

Dankwoord Om te beginnen zou ik mijn twee begeleiders willen bedanken. Gregory Neven, die vanaf de eerste bladzijden thesis nuttige suggesties gaf, de teksten doornam en op bijna alle vragen een antwoord wist, en Liesje Demuynck, die eveneens ruim de tijd nam om de teksten door te nemen en ook nuttige tips naar voren bracht. Daarnaast wil ik ook familie en vrienden bedanken. Vooral dan zij die soms geconfronteerd werden met de gevolgen van mijn vele werk. i

Inhoudsopgave 1 Inleiding 1 1.1 Situering................................ 1 1.2 Doelstellingen............................. 1 1.3 Historische schets........................... 2 1.4 Structuur van de tekst........................ 2 2 Enkele notaties 3 2.1 Verzamelingen en algoritmes..................... 3 2.2 Bits en bit-operaties......................... 3 2.3 Reguliere expressies......................... 4 3 Wiskundige achtergrond 5 3.1 Het factorisatieprobleem....................... 5 3.2 Basis groepentheorie......................... 5 3.3 Het Discrete Logaritme Probleem.................. 6 3.4 Het vinden van een generator.................... 7 3.5 Restklassen en de indicator van Euler............... 7 3.6 Eénwegsfuncties............................ 8 4 Cryptografische bouwblokken 10 4.1 Pseudo-random generator...................... 10 4.2 Encryptie............................... 11 4.2.1 Symmetrische encryptie................... 11 4.2.2 Asymmetrische encryptie.................. 13 4.2.3 ElGamal............................ 15 4.3 Cryptografische hash functie..................... 15 4.4 Message Authentication Code (MAC)............... 16 4.5 Zero-knowledge bewijzen....................... 16 4.5.1 Schets............................. 16 4.5.2 Discrete logaritme...................... 17 4.6 Anonimizeerder............................ 19 4.7 Digitale handtekeningen....................... 19 4.7.1 Concept............................ 19 4.7.2 PKI s en certificaten..................... 20 4.7.3 RSA handtekeningen..................... 21 4.7.4 DSA handtekeningen..................... 22 4.7.5 Groepsgeöriënteerde digitale handtekeningen....... 23 ii

INHOUDSOPGAVE iii 5 Ringhandtekeningen 25 5.1 Enkele mogelijke toepassingen.................... 25 5.1.1 Een geheim lekken...................... 25 5.1.2 Designated verifier handtekeningen............. 26 5.2 Literatuur............................... 26 5.3 Definities en eigenschappen..................... 27 5.4 Het algemene schema......................... 28 5.5 Ringhandtekening met enkel RSA sleutels............. 29 5.6 ringhandtekeningen met enkel Schnorr sleutels.......... 30 5.7 Voorbeeld gemengd schema..................... 31 5.8 Gerandomizeerde handtekeningen.................. 34 5.9 Veiligheid............................... 34 5.10 Vinden van de publieke sleutels................... 35 5.11 Reductie sleutellengte........................ 35 5.12 Vergelijking met andere schema s.................. 36 5.13 Drempel ringhandtekeningen.................... 37 5.14 Een ringhandtekening openen, inkrimpen of uitbreiden...... 37 5.15 Evolutie................................ 38 6 Groepshandtekeningen 39 6.1 Enkele mogelijke toepassingen.................... 39 6.2 Literatuur............................... 40 6.3 Variant op ElGamal......................... 40 6.4 Kennisbewijzen............................ 41 6.4.1 Gelijke discrete logaritmes.................. 41 6.4.2 Gelijke discrete logaritmes voor 1 uit n y i s........ 42 6.4.3 Representatie t.o.v. dubbele basis.............. 44 6.5 Statische en dynamische groepen.................. 45 6.6 Een abstract schema voor statische groepen............ 45 6.7 Veiligheidsvereisten.......................... 46 6.8 Het Camenisch schema........................ 47 6.8.1 Inleiding............................ 47 6.8.2 Algoritmes.......................... 48 6.8.3 Veiligheid en efficiëntie.................... 49 6.9 Het Petersen schema......................... 50 6.9.1 Inleiding............................ 50 6.9.2 De algoritmes......................... 50 6.9.3 Veiligheid en efficiëntie.................... 51 6.9.4 Vergelijking met het Camenisch schema.......... 52 6.10 Converteerbare groepshandtekeningen............... 53 6.11 Drempel groepshandtekeningen................... 54 6.12 Binding met fysieke entiteit..................... 54 6.13 Een abstract schema voor dynamische groepen.......... 54 7 Implementatie 57 7.1 Cryptografische bibliotheken..................... 57 7.1.1 Software interfaces voor cryptografische primitieven... 57 7.1.2 Structuur van de cryptografische bibliotheek....... 58 7.2 Java Cryptography Architecture and Extension.......... 61 7.2.1 Engineklassen en Service Provider Interface klassen.... 62

INHOUDSOPGAVE iv 7.2.2 Algemene structuur van het raamwerk........... 63 7.2.3 Voorbeeldcode........................ 64 7.3 Algemene aanpak........................... 65 7.4 Ringhandtekeningen......................... 66 7.4.1 Gebruik............................ 66 7.4.2 De verschillende algoritmes................. 68 7.4.3 De implementatie in de provider.............. 68 7.4.4 Structuur ringhandtekening................. 70 7.5 Groepshandtekeningen........................ 71 7.5.1 Uitbreidingen JCE...................... 71 7.5.2 Een generisch interactief protocol.............. 72 7.5.3 Gebruik............................ 73 7.5.4 De implementatie in de provider.............. 80 7.5.5 De algoritmes......................... 81 7.5.6 Structuur groepshandtekening en openbewijs....... 81 7.6 Hulpklassen.............................. 82 7.6.1 Hashen naar een variabel domein.............. 82 7.6.2 Berichtafhankelijke niet-interactieve zero-knowledge bewijzen............................. 83 7.6.3 Encryptie met de ElGamal variant............. 84 8 Conclusie 85 A Veralgemeende AOS-ringhandtekeningschema 87 A.1 Veralgemeende handtekeningschema s............... 87 A.1.1 Hash-En-Eénwegs Type (Type-H)............. 87 A.1.2 Drie-Fasen Type (Type-D)................. 88 A.1.3 Compatibiliteit van sleutels................. 88 A.2 Veralgemeend ringhandtekeningschema............... 89 B Hashen naar een gekozen domein 91

Hoofdstuk 1 Inleiding 1.1 Situering Sinds honderden jaren is er de klassieke handtekening. Vaak zijn het kleine kunstwerkjes. Sinds het einde van de vorige eeuw worden die kunstwerkjes meer en meer vervangen door een reeks van ééntjes en nulletjes: de digitale handtekening. Hoewel deze nieuwsoortige handtekeningen misschien iets minder sierlijk ogen, bieden ze een enorm spectrum aan nieuwe mogelijkheden. Eén deelaspect hiervan zijn de groepsgeöriënteerde digitale handtekeningen. Dit zijn handtekeningen waar bij het plaatsen meerdere personen actief of passief betrokken zijn. In deze thesis focussen we op twee types digitale handtekeningen, die door één persoon geplaats worden in naam van een hele groep waartoe hij zelf behoort. 1.2 Doelstellingen Het doel van deze thesis is vooral het bestuderen van een tweetal groepsgeöriënteerde digitale handtekeningschema s, namelijk ringhandtekeningen en groepshandtekeningen. Een ringhandtekening is een digitale handtekening geplaatst door één ondertekenaar in naam van een hele groep. Een verifeerder kan enkel weten dat het door iemand uit die groep geplaatst is, zonder te kunnen achterhalen wie precies. Buiten de ondertekenaar van de ringhandtekening hoeven de andere groepsleden niet te weten dat ze tot een groep behoren. De groepen worden bovendien op het moment van het ondertekenen zelf samengesteld. Een ringhandtekening is eigenlijk een speciaal geval van een groepshandtekening. Zo n handtekening wordt eveneens door één persoon in naam van een groep geplaatst en een verifeerder kan evenmin achterhalen door wie precies uit de groep de handtekening geplaatst is. Bij dit type is het in geval van betwisting wel mogelijk om de groepshandtekening te laten openen door een vertrouwde derde partij en zo de identiteit van de ondertekenaar vrij te geven. Bovendien is om de groep samen te stellen de medewerking van de verschillende groepsleden wel vereist. In de tweede fase wordt voor beide types een algemene interface geschreven die geïntegreerd is in de JCA/JCE, de cryptografische bibliotheek van Java. Op die manier wordt het mogelijk om schema s van zowel ring- als groepshandtekeningen te implementeren en in de JCA/JCE in te pluggen. Naast een interface 1

HOOFDSTUK 1. INLEIDING 2 wordt er voor zowel de ring- als de groepshandtekening een implementatie geschreven die gebruik maakt van die interface. 1.3 Historische schets Het concept groepshandtekening werd in 1991 voor het eerst geïntroduceerd. De studie naar deze types handtekeningen is zeker nog niet ten einde. Nu en dan verschijnen er nieuwe publicaties hierover. Het concept ringhandtekening is pas in 2001 geïntroduceerd en is dus nog zeer jong. Ondanks zijn jeugdige leeftijd is de studie van ringhandtekeningen toch al meer voltooid dan die van groepshandtekeningen. Dit komt enerzijds omdat de cryptografie in die tien jaar niet is blijven stilstaan en er intussen nieuwe bouwstenen, inzichten en methodes gebruikt en gehanteerd worden, die een snellere ontwikkeling mogelijk maken. Bovendien blijkt de extra functionaliteit in groepshandtekeningen, zoals het kunnen openen van de handtekening, een zware factor aan complexiteit toe te voegen. 1.4 Structuur van de tekst De tekst bestaat uit acht hoofdstukken. U bent al bijna klaar met het eerste, de inleiding dus. Hierna worden in het tweede hoofdstuk heel kort enkele vaak gebruikte notaties uitgelegd. Uiteraard is er geen cryptografie zonder wiskunde. In het derde hoofdstuk wordt een theoretische basis gelegd die noodzakelijk is om de algoritmes die in de verdere hoofdstukken aan bod komen te kunnen begrijpen. In het vierde hoofdstuk worden enkele cryptografische basisbegrippen uit de doeken gedaan. Dit zijn de in de cryptografie algemeen gekende bouwstenen die als bouwsteen gebruikt worden door de schema s die in de volgende hoofdstukken aan bod komen. In het vijfde hoofdstuk leggen we uit wat ringhandtekeningen zijn, en wordt uitgebreid een algemeen schema beschreven om daarna onder meer in dieper in te gaan op de veiligheid van het schema. Daarna wordt in hoofdstuk zes de groepshandtekening besproken. Na het concept en enkele meer specifieke bouwstenen uitgelegd te hebben, bespreken en vergelijken we twee zeer gelijkaardige schema s. Op het einde van het hoofdstuk wordt een abstract schema gegeven voor groepshandtekeningen die toelaten dat een groep op een willekeurig moment kan uitgebreid worden. Eens het theoretische deel erop zit, gaan we over naar de meer praktische kant: de implementatie. Eerst bespreken we de algemene structuur van moderne cryptografische bibliotheken, om daarna in te zoomen op de JCA/JCE, een cryptografische bibliotheek in Java. Daarna wordt de algemene aanpak geschets, gevolgd door een uitgebreide bespreking van de interface en een implementatie voor ringhandtekeningen. Ongeveer hetzelfde doen we in de volgende sectie voor groepshandtekeningen. In de laatste sectie wordt kort iets verteld over enkele hulpklassen die nodig waren voor de implementaties van de eerder besproken schema s. Tot slot is er nog het besluit van deze thesis.

Hoofdstuk 2 Enkele notaties In de tekst komen sommige notaties regelmatig terug. In plaats van ze telkens opnieuw te definiëren, sommen we ze hieronder kort even op. 2.1 Verzamelingen en algoritmes x r V Indien V en niet-ledige verzameling is, wordt uit V een willekeurige waarde x gekozen. Als er n elementen zijn in V, is de kans dat een welbepaald element gekozen wordt exact 1/n. Alg(invoer) resultaat Het deterministische algoritme Alg dat invoer als invoer meekrijgt, geeft de waarde resultaat als resultaat terug. Alg(invoer) r resultaat Het niet-deterministische algoritme Alg dat invoer als invoer meekrijgt, geeft de waarde resultaat als resultaat terug. Aangezien dit algoritme niet-deterministisch is, zal het bij verschillende uitvoeringen met dezelfde invoer toch hoogstwaarschijnlijk een ander resultaat teruggeven. 2.2 Bits en bit-operaties {0, 1} l Dit duidt op een bitstring die uit l N bits bestaat. {0, 1} Dit duidt op een bitstring die uit een willekeurig aantal bits bestaat. a b Deze notatie wordt vaak gebruikt om de exclusieve of of XOR-operatie mee aan te duiden. Toegepast op bits wordt de operatie gedefinieerd als: 0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 0 Toegepast op bitstrings a 0 a 1... a n 1 en b 0 b 1... b n 1 krijgen we een nieuwe bitstring c 0 c 1... c n 1 waarbij c i = a i b i voor elke i {0,..., n 1}. Bovendien heeft deze operatie de eigenschap dat b a a = b. 3

HOOFDSTUK 2. ENKELE NOTATIES 4 a b Met deze notatie duiden we aan dat de strings a en b geconcateneerd worden. Ze worden als het ware aan elkaar gekleefd. Indien a = a 0 a 1... a n 1 en b = b 0 b 1... b n 1 is a b = a 0 a 1... a n 1 b 0 b 1... b n 1. 2.3 Reguliere expressies Tenslotte vermelden we nog even dat en ook gebruikt kunnen worden als reguliere expressies. Met worden dan 0, 1 of meer elementen aangeduidt en met. exact één element. Er geldt bijvoorbeeld dat (., b, ) matcht met zowel (a, b, c, d) als (c, b), maar niet met (b, d) of (x, y, b, a). Wat die elementen precies zijn zal uit context blijken.

Hoofdstuk 3 Wiskundige achtergrond Om de verschillende algoritmes die in deze thesis behandeld worden te kunnen begrijpen, is wat wiskundige voorkennis nodig. Dit hoofdstuk heeft tot doel deze voorkennis beknopt uiteen te zetten. 3.1 Het factorisatieprobleem Definitie 1 (Priemgetal) Een priemgetal is een natuurlijk getal p N\{0, 1} zodat p enkel deelpaar is daar ±1 en ±p. Er zijn oneindig veel priemgetallen en ze hebben speciale eigenschappen, waardoor ze een bijzondere rol in de cryptografie spelen. Definitie 2 (Factorisatie in priemfactoren) Gegeven willekeurig strikt positief natuurlijk getal x N 0. De factorisatie of ontbinding van x in priemfactoren is het product p e1 1 pe2 2... pe k k = x waarbij de p i onderling verschillende priemgetallen zijn en de e i N. Deze factorisatie in priemfactoren is voor elke x N 0 uniek. Een belangrijke veronderstelling is dat er geen algoritmes kunnen bestaan die deze ontbinding in een polynomiale tijd kunnen vinden. Het is m.a.w. computationeel onhaalbaar om grote getallen te ontbinden. Dit is één veronderstelling waar een belangrijk deel van de cryptografie op steunt en wordt het factorisatieprobleem genoemd. Ter illustratie: zeer recent (27 April 2004) zijn onderzoekers er in geslaagd om RSA-576 te factoriseren. Dit is een bepaald getal dat 576 bits lang is, wat overeenkomt met 174 decimale cijfers, en is het product van twee ongeveer even lange priemgetallen die geheim gehouden werden. Hiervoor hebben 100 computers gedurende drie maanden al hun rekencapaciteit ingezet... 3.2 Basis groepentheorie Definitie 3 (Groep) Een groep G =< G, > is een niet-ledige verzameling G met een afbeelding ( bewerking of groepsoperatie genoemd) : G 2 G : (x, y) x y die aan de volgende eigenschapppen voldoet: 5

HOOFDSTUK 3. WISKUNDIGE ACHTERGROND 6 1. Associativiteit: a, b, c G : a (b c) = (a b) c. 2. Identiteit: e G : a G, e a = a e = a. 3. Inverse: a G, a 1 G : a 1 a = a a 1 = e. Definitie 4 (Abelse groep) Een groep G =< G, > is Abels of commutatief als voldaan is aan de volgende voorwaarde: a, b G : a b = b a Voorbeeld: < Z, + > is een Abelse groep. Wanneer een bewerking in een groep + (optelling) is, spreken we van een additieve groep. De identiteit wordt dan genoteerd als 0 en wordt soms ook het nulelement genoemd. De inverse van een element a in een aditieve groep G wordt meestal genoteerd als a. Wanneer de bewerking in een groep (vermenigvuldiging) is, spreken we van een multiplicatieve groep. De identiteit wordt dan genoteerd als 1 en wordt soms ook het eenheidselement genoemd. De inverse van een element a G wordt meestal genoteerd als 1 a of a 1. Het product a b wordt soms verkort genoteerd als ab. Indien de groepsoperatie uit de context duidelijk is duidt men de groep < G, > ook wel aan met G. De cardinaliteit van een groep is het aantal elementen in de vezameling G = G. a a... a wordt genoteerd als a k met k het aantal maal dat a voorkomt. Merk op dat k ook negatief kan zijn: a 2 = a 1 a 1. De cardinaliteit van een groep wordt ook wel de orde van een groep genoemd. Een groep is cyclisch als er een element g G bestaat zo dat elk element a G kan geschreven worden in de vorm g i, met i Z. In dit geval wordt g een generator van G genoemd en kan de groep als < g, > genoteerd worden. Elke cyclische groep is Abels. Een element a van een groep G heeft een eindige orde als er een positief geheel getal r bestaat zodat a r = e. Het kleinste van dergelijke getallen groter dan 0 wordt de orde van a genoemd. Als er zo geen element gevonden kan worden zegt men dat a een oneindige orde heeft. De orde van de identiteit is altijd 1. Een element van een groep en zijn inverse hebben dezelfde orde. In een eindige groep (dit is een groep met een eindig aantal elementen) heeft elk element een eindige orde die een deler is van G. 3.3 Het Discrete Logaritme Probleem Definitie 5 (Discrete logaritme) Gegeven twee elementen a en b G waarbij < G, > een groep is. De discrete logaritme van a ten opzichte van b is x Z zodat a x = b mod n. Voorbeeld: in < Z 7, > geldt dat 4 2 2. In oneindige groep zoals < Z, + > is het heel eenvoudig om de discrete logaritme van een getal a t.o.v. b te vinden, als die al bestaat. Aangezien dit een additieve groep is, hoeven we enkel een x Z te vinden zodat ax = b. In een eindige groep zoals < Z p, > met p priem, is dit niet zo eenvoudig. Op dit

HOOFDSTUK 3. WISKUNDIGE ACHTERGROND 7 moment bestaan er geen algoritmes die dit in polynomiale tijd kunnen. Volgens veel wiskundigen is de kans dat zo n algoritme gevonden wordt zeer miniem. Voor grote a, b en p is het dus computationeel onhaalbaar om de discrete logaritme van a t.o.v. b te vinden. Dit wiskundig probleem noemen we het Discrete Logaritme Probleem, of kortweg DLP. Een groot deel van de cryptografie steunt op (de onoplosbaarheid van) dit probleem, dat ongeveer even moeilijk lijkt te zijn als het factorisatieprobleem. 3.4 Het vinden van een generator In sommige cryptografische primitieven is het van belang dat in een cyclische groep G van orde n op een efficiënte wijze een generator g gevonden kan worden. Indien de factorisatie van n gekend is zodat n = p e1 1 pe2 2... pe k k, kan dit aan de hand van een gerandomiseerd algoritme: 1. Kies een willekeurige g r G. 2. Doe voor i lopend van 1 tot k: (a) b g n/pi. (b) Indien b = 1, ga naar 1. 3. return g. Soms wensen we geen generator van G zelf, maar van een deelgroep van orde d met d n. Eens we een generator van de volledige groep hebben, kan dit eenvoudig door h = g n/d te berekenen. h is nu een generator van een deelgroep van G die orde d heeft. Indien we een deelgroep wensen van orde q, waarbij q een priemdeler is van p, kan het nog eenvoudiger: Kies een willekeurige g r G en bereken b = g n/q. Herhaal dit tot b 1. De generator is g. 3.5 Restklassen en de indicator van Euler Definitie 6 (Congruentie modulo n) Zij n N 0 en x, y Z. We zeggen dat x congruent is aan y modulo n, notatie x y mod n, als n een deler is van x y, dus als n x y. Een getal x Z is congruent met juist één getal y {0,..., n 1}, dit getal noteren we als x mod n. Er geldt dat x y mod n als en slechts als x mod n = y mod n. Wanneer x positief is, is x mod n gelijk aan de rest van x bij deling door n. Voorbeeld: 20 8 mod 12. Definitie 7 (Restklasse van x modulo n) Zij n N 0 en x Z. De restklasse van x modulo n, notatie Z n, is de verzameling [x] n def = {y Z y x mod n}.

HOOFDSTUK 3. WISKUNDIGE ACHTERGROND 8 Als het uit de contex duidelijk is dat de modulus n is, dan schrijven we ook x. Een andere naam voor een restklasse is een congruentieklasse. De vermenigvuldiging en optelling + worden in Z n op triviale wijze gedefinieerd: i, j {0,..., n 1} : i + j = i + j i, j {0,..., n 1} : i j = i j Voorbeeld: in Z 12 geldt dat 5 = {..., 19, 7, 5, 17, 29, 41,...}. Definitie 8 (De verzameling Z n ) Gegeven een natuurlijk getal n N 0. De verzameling Z n is de verzameling van alle elementen uit Z n die relatief priem zijn met n. Z n = {x x Z, ggd(x, n) = 1} Voorbeeld: ϕ(20) = {1, 3, 7, 9, 11, 13, 17, 19}. < Z n, > is een multiplicatieve groep. Een belangrijke eigenschap is dat elke x Z n een unieke inverse y Z n in Z n heeft, zodat dus xy = 1 mod n. Definitie 9 (Indicator van Euler) De indicator van Euler ϕ(n) van een n N 0 voor n 2 is een functie die n afbeeldt op het aantal elementen in Z n die relatief priem zijn met n. ϕ(n) = Z n Voorbeeld: ϕ(20) = 8. Stelling 1 (Formule voor ϕ(n)) Zij n N 0 met n 2 en zij n = p e1 1 pe2... p e k k die factorisatie in priemfactoren van n. Dan hebben we ϕ(n) = (p 1 1)p e1 1 1 (p 2 1)p e2 1 2... (p k 1)p e k 1 k Voorbeeld: ϕ(1680) = ϕ(2 4 3 5 7) = 2 3 2 4 6 = 384. Stelling 2 (Congruentie van Euler) Zij n N 0, en a Z met ggd(n, a) = 1, dan hebben we a ϕ(n) 1 mod n. Gevolg 1 (Congruentie van Fermat) Zij p een priemgetal en a Z met p a., dan hebben we a p 1 1 mod p. 3.6 Eénwegsfuncties Een éénwegsfunctie f(x) is een functie die voor een willekeurige x uit het domein van f efficiënt te berekenen is, terwijl het vinden van de inverse f 1 (y) computationeel onhaalbaar is: Voor een willekeurige y is het quasi onmogelijk om een x te berekenen zodat f(x) = y. Een speciaal type éénwegsfunctie is de valdeur éénwegsfunctie. Indien we beschikken over de valdeur informatie t, is het wel mogelijk de inverse functie op een efficiënte manier te berekenen. Beide types functies zijn, zoals we verder meermaals zullen zien, bijzonder handig binnen de cryptografie. 2

HOOFDSTUK 3. WISKUNDIGE ACHTERGROND 9 het factorisatieprobleem en het Discrete Logaritme Probleem. Het factorisatieprobleem kunnen we gebruiken om valdeur éénwegsfuncties te construeren, het Discrete Logaritme Probleem om gewone éénwegsfuncties te bouwen. De dag dat één van deze problemen opgelost wordt, krijgt de hedendaagse cryptografie een ongeloofelijke mokerslag, die ook serieuze consequenties op de economie zal hebben. Maar de meeste wiskundigen zijn het er gelukkig over eens dat er geen echt efficiënt (polynomiaal) algoritme voor deze problemen gevonden kan worden. Een ander dreigend zwaard van Damocles boven de cryptografisch wereld zijn de DNA- en kwantumcomputers, waar recent onderzoek naar gedaan wordt. Deze computers hebben een andere tijdscomplexiteit dan klassieke computers. Voorlopig bevindt dit onderzoek zich nog in een (pre-)embryonaal stadium en is er nog bijzonder veel werk aan de winkel. De cryptografische Apocalyps zal dus nog niet voor morgen zijn.

Hoofdstuk 4 Cryptografische bouwblokken In dit inleidende hoofdstuk worden enkele basisconcepten, die verder in de thesis nodig zullen zijn, uit de doeken gedaan: In 4.1 bespreken we pseudo-random generators, in 4.2 zowel symmetrische als asymmetrische encryptie. Daarna wordt iets verteld over De cryptografische hashfunctie 4.3 en MAC s 4.4. In 4.5 wordt uitgelegd wat zero-knowledge bewijzen zijn. Heel kort vertellen we iets over de anonimizeerder in 4.6 om daarna uitgebreid in te gaan op digitale handtekeningen in 4.7. We beginnen met uit te leggen wat dit precies is, we geven enkel algoritmes die verder in de thesis van belang zullen zijn, en tenslotte wordt een opsomming gegeven van de belangrijkste groepsgeöriënteerde digitale handtekeningen. 4.1 Pseudo-random generator Op een deterministische machine zoals een computer is het bijzonder moeilijk om echt willekeurige getallen te genereren. Gebruikte technieken zijn o.a. het meten van de tijdstippen waarop de gebruiker of het systeem bepaalde acties (events) uitvoert, of het meten van variabelen zoals de belasting van het systeem. Deze technieken zijn traag Het is bovendien moeilijk te achterhalen hoe willekeurig de gegenereerde getallen wel eigenlijk zijn. Een pseudo-random generator is een cryptografisch primitief dat een groot aantal bits genereert uit een kleine hoeveelheid invoer (het zaadje). Deze invoer kan bijvoorbeeld gegenereerd worden d.m.v. de net beschreven technieken. De pseudo-random generator expandeert deze invoer vervolgens naar een willekeurig lange uitvoerstring. Een pseudo-random generator voldoet aan volgende eigenschappen: 1. De uitvoer doorstaat alle statistische testen om te bepalen of een string al dan niet willekeurig is. Er bestaat dus geen enkel algoritme dat met kans groter dan 50% de gegenereerde uitvoer kan onderscheiden van echte random bits. Dit is equivalent met volgende eigenschap: 10

HOOFDSTUK 4. CRYPTOGRAFISCHE BOUWBLOKKEN 11 2. Indien het zaadje onbekend is, is het onmogelijk te voorspellen welke de volgende bits zijn die gegenereerd zullen worden, onafhankelijk van de reeds gegenereerde uitvoer. Pseudo-random generatie wordt onder meer gebruikt bij het genereren van cryptografische sleutels. Twee voorbeelden van veilige willekeurige generators zijn ANSI X9.17 en Blum-Blum-Shub. De laatste is bewijsbaar veilig, maar helaas hopelaas inefficiënt. 4.2 Encryptie Encyptie is het proces waarbij een leesbare tekst, ook wel klaartekst genoemd, met behulp van een unieke sleutel omgezet wordt naar alternatieve representatie die we de cijfertekst noemen. Deze cijfertekst bevat nog steeds dezelfde informatie als de klaartekst, maar kan er niet zomaar uitgehaald worden. Het omgekeerde proces, waarbij de cijfertekst met een unieke sleutel omgezet wordt in de oorspronkelijke klaartekst, noemen we decryptie. Zonder deze unieke sleutel mag het geëncrypteerde bericht niet ontcijferd kunnen worden. Indien de sleutel die bij de decryptie gebruikt wordt gelijk is aan die bij de encryptie, spreken we over symmetrische encryptie. Als het een andere sleutel betreft, hebben we het over asymmetrische encryptie. Eerst behandelen we symmetrische encryptie, en daarna hebben we het over asymmetrische encryptie 4.2.1 Symmetrische encryptie In een symmetrisch encryptieschema gebeurt de decryptie met dezelfde sleutel als bij de encryptie en wordt gedefinieerd aan de hand van drie algoritmes: genereersleutel(κ) r K genereert een willekeurige sleutel met veiligheidsparameter κ (typisch de sleutellengte). Encrypteer(m, K) Enc encrypteert het bericht m met de sleutel K naar de cijfertekst Enc. Decrypteer(Enc, K) m decrypteert Enc met behulp van de sleutel K en noem het resultaat m. Indien dit gebeurt met de sleutel waarmee de encryptie gebeurde, krijgen we het oorspronkelijke bericht, zoniet is het resultaat schijnbaar willekeurige data. Een symmetrisch encryptiesysteem probeert de confidentialiteit of vertrouwelijkheid van het geëncrypteerde bericht, de cijfertekst dus, te waarborgen, zodat enkel diegene met de sleutel de cijfertekst kan ontcijferen. Op die manier wordt het probleem van de confidentialiteit gereduceerd tot een probleem van sleutelbeheer waarbij enkel bepaalde partijen over de sleutel mogen beschikken. De confidentialiteit van moderne symmetrische encryptiesystemen wordt gewaarborgd door het resistent te maken tegen een aantal types aanvallen: Enkel-cijfertekst aanval: Bereken uit een willekeurig aantal met eenzelfde sleutel gegenereede cijferteksten, opnieuw één of meerdere bijhorende

HOOFDSTUK 4. CRYPTOGRAFISCHE BOUWBLOKKEN 12 klaarteksten, of, beter nog, reconstrueer de geheime sleutel uit de cijferteksten. Gekende-klaartekst aanval Gegeven een willekeurig aantal klaartekstcijfertekst combinaties gegenerereerd met eenzelfde sleutel, vind de originele sleutel of een algoritme om nieuwe cijferteksten gegenereerd met die sleutel te ontcijferen. Gekozen-klaartekst aanval De aanvaller heeft toegang tot een orakel waaraan hij een onbeperkt aantal keer kan vragen om een zelf gekozen klaartekst te encrypteren tot de bijhorende cijfertekst. De aanvaller kan de klaarteksten dus kiezen in functie van wat hij al weet of wil weten, en probeert op die manier de sleutel te weten te komen of een algoritme dat berichten decrypteert alsof het de sleutel zou hebben. Gekozen-cijfertekst aanval De aanvaller heeft toegang tot een orakel waaraan hij een onbeperkt aantal keer kan vragen om een zelf gekozen cijfertekst te decrypteren tot de bijhorende klaartekst. De aanvaller kan de cijferteksten dus kiezen in functie van wat hij al weet of wil weten, en probeert op die manier de geheime sleutel te weten te komen of een algoritme dat berichten decrypteert alsof het de sleutel zou hebben. Het is belangrijk op te merken dat, hoewel de confidentialiteit afhangt van het geheim houden van de sleutels, de algoritmes publiek gekend mogen zijn. Er bestaan twee basistypes van symmetrische encryptiealgoritmes; blokcijfers en stroomcijfers genoemd. Stroomcijfers manipuleren een datastroom bit per bit of byte per byte, terwijl blokcijfers blok per blok encrypteren. Aangezien voor de thesis enkel blok cijfers van belang zijn, gaan we niet dieper in op de stroom cijfers. Cipher Block Chaining mode (CBC) Een blokcijfer is een symmetrisch encryptiesysteem dat blokken van vaste lengte encrypteert. Om een bericht te encrypteren, wordt het eerst in zulke blokken ven gelijke grootte verdeeld, die daarna sequentieel behandeld worden. Dit kan gebeuren op verschillende manieren die we modi noemen. We bespreken de twee voornaamste: De Elektronisch Codeboek (ECB) modus encrypteert elk blok afzonderlijk. Dit is de meest eenvoudige werkwijze en heeft als voordeel dat ze nog steeds random access toelaat: een willekeurig blok kan gedecrypteerd worden, zonder andere blokken te moeten manipuleren. Een nadeel is dat twee identieke blokken met dezelfde sleutel naar dezelfde cijfertekst geëncrypteerd zullen worden. Een tegenstander die over veel klaartekst-cijfertekst combinaties beschikt kan een codeboek met frequente blokken aanleggen en op die manier toch informatie te weten komen. De tweede is de Cipher block Chaining (CBC) modus. Hier wordt het te encrypteren blok gecombineerd met het resultaat van de encryptie van het vorige blok door middel van de -operatie (exclusieve of). Dit heeft als voordeel dat twee identieke blokken toch anders geëncrypteerd zullen worden. De structuren in de tekst en tussen teksten worden zo goed als helemaal onzichtbaar in de cijfertekst. Bij decryptie wordt de -operatie na de decryptie van het blok toegepast, en wordt het resultaat gebruikt om het volgende blok te decrypteren.

HOOFDSTUK 4. CRYPTOGRAFISCHE BOUWBLOKKEN 13 Het eerste blok bij zowel encryptie als decryptie kan niet gecombineerd worden met een vorig blok. Dit blok combineren we dan met een zogenaamde initialisatievector (IV). Dit is een willekeurige bitstring die even lang is als de bloklengte. Daardoor zullen verschillende encrypties van eenzelfde klaartekst met eenzelfde sleutel hoogstwaarschijnlijk resulteren in verschillende cijferteksten. De werking van CBC is samengevat in figuur 4.1. Samengevat is C i = E k (P i C i 1 ) bij encryptie en P i = C i 1 D k (C i ) bij decryptie. Figuur 4.1: CBC mode: encryptie en decryptie Uiteraard zijn niet alle berichten veelvouden van de bloklengte. in dat geval wordt het laatste blok volgens één of ander schema opgevuld. Dit heet padding, maar daar gaan we niet dieper op in. De meest bekende praktische voorbeelden van schema s voor symmetrische encryptie zijn: Data Encryption Standard (DES) Een blokcijfer algoritme met 64-bit blokken en 56-bit sleutels, in de jaren 70 ontwikkeld door IBM en de NSA. In de jaren 80 en 90 werd het vaak gebruikt, maar is vandaag de dag onvoldoende vanwege zijn beperkte sleutel- en bloklengte. Triple DES In feite gewoon drie keer DES na elkaar met twee verschillende sleutels (Encryptie met een k 1 - Decryptie met een k 2 - Encryptie met de k 1 ) The Advanced Encryption Standard (AES) Het winnende algoritme van een internationale wedstrijd uitgeschreven door U.S. National Institute of Standards and Technology. AES werd ontwikkeld aan de KULeuven (ESAT) door Vincent Rijmen and Joan Daemen, die AES oorspronkelijk Rijndael doopten. Het is de opvolger van DES en heeft standaard een sleutel- en bloklengte van 128 bits, maar laat ook enkele andere waarden toe. 4.2.2 Asymmetrische encryptie Bij asymmetrische encryptie wordt een publieke sleutel gebruikt om een bericht te encrypteren, en een geheime sleutel voor de decryptie. Een asymmetrisch encryptieschema wordt gedefinieerd aan de hand van drie algoritmes:

HOOFDSTUK 4. CRYPTOGRAFISCHE BOUWBLOKKEN 14 genereersleutelp aar(κ) r (pk, sk) dat willekeurige een private en bijhorende publieke sleutel genereert die voldoen aan de veiligheidsparameter κ. Dit is typisch de sleutellengte. Een publieke en een private sleutel noemen we samen het sleutelpaar. Wanneer het algoritme tweemaal uitgevoerd wordt met eenzelfde κ, worden zo goed als zeker andere sleutels gegenereerd. encrypteer(m, pk) Enc dat met behulp van de publieke sleutel pk een bericht M encrypteert in de cijfertekst Enc. decrypteer(enc, sk) m dat met behulp van de private sleutel sk de cijfertekst Enc terug decrypteert naar m. Indien de decryptie gebeurt met de geheime sleutel die overeenkomt met de publieke sleutel waarmee het bericht geëncrypteerd is, is m = m. Indien een andere geheime sleutel gebruikt wordt, is het resultaat schijnbaar willekeurige data. Asymmetrische encryptie wil, net zoals symmetrische encryptie, de confidentialiteit of geheimhouding van berichten waarborgen. Ook hier hangt de geheimhouding enkel af van de geheime sleutel, en mogen de algoritmes publiek gekend zijn. Indien Alice vertrouwelijke informatie wil ontvangen, kan ze een sleutelpaar genereren, en de publieke sleutel verspreiden. Bob die een geheim bericht m wil zenden, encrypteert dit bericht met de publieke sleutel, en enkel Alice kan het bericht decrypteren, aangezien ze als enige de geheime sleutel bezit, Een goed asymmetrisch encyptiesysteem is zowieso veilig tegen veilig tegen zowel enkel-cijfertekst, gekende-klaartekst, gekozen-klaartekst en gekozen cijfertekst aanval. Aangezien iedereen berichten kan encrypteren is resistentie tegen de gekozen-klaartekst aanval zeer belangrijk. Asymmetrische encryptie zet het probleem van geheimhouding eigenlijk om in een probleem van sleutelbeheer en -distributie. De publieke sleutel hoeft, in tegenstelling tot symmetrische sleutels, niet meer via een veilig kanaal doorgezonden te worden. Wel is het zo dat de integriteit van de sleutel gegarandeerd moet blijven. De publieke sleutel mag dus niet gewijzigd zijn tijdens de transit. In de praktijk is asymmetrische encryptie een pak trager dan symmetrische encryptie, waardoor het eigenlijk bijna uitsluitend gebruikt wordt om een symmetrische sleutel te encrypteren en naar de ander kant te zenden. Deze symmetrische sleutel wordt dan gebruikt om het bericht zelf mee te encrypteren. Daarom wordt er niet echt met blok-modes gewerkt. De te encrypteren symmetrishe sleutel wordt gewoon in één groot blok gestopt (eventueel met padding). Enkele voorbeelden van schema s voor asymmetrische encryptie zijn: RSA Dit is het meest gebruikte, meest gekende, en waarschijnlijk ook het meest eenvoudige algoritme. Rabin Bewijsbaar veilig, maar wordt zelden gebruikt. ElGamal Dit algoritme is gerelateerd met de moeilijkheid om discrete logaritmen in een eindige groep te vinden. Dit schema wordt dadelijk besproken.

HOOFDSTUK 4. CRYPTOGRAFISCHE BOUWBLOKKEN 15 4.2.3 ElGamal Het ElGamal schema is oorspronkelijk ontwikkeld als handtekeningschema door Taher Elgamal (met kleine g ), maar mits aanpassing kan het ook gebruikt worden voor asymmetrische encryptie. Hier bespreken we enkel het encryptieschema. De veiligheid ervan is gerelateerd aan het discrete logaritme probleem 3.3. Het schema ziet er als volgt uit: genereersleutelp aar(κ) (pk, sk) Genereer een priemgetal p van lengte κ 1, en een q van lengte κ 2 die een priemfactor is van p 1. Bepaal een g van orde q (zie 3.4). Selecteer een willekeurige x r Z q en bereken y = g x mod p. De publieke sleutel pk is (y, g, p, q), de private sleutel sk is (x, g, p, q). encrypteer(m, pk) Enc Kies een willekeurige α r Z q en bereken A = g α mod p en B = (y α m) mod p. Het koppel (A, B) vormt de cijfertekst. decrypteer(enc, sk) m Het decrypteren zelf is eenvoudigweg het delen van B door A: m = B/A x mod p. In plaats van een q met lengte κ 2 te kiezen, kan men q = ϕ(p) = p 1 nemen. Dit maakt het schema wat eenvoudiger waardoor de q uit de sleutels weggelaten kan worden. Dit schema is gerandomizeerd: Eenzelfde bericht twee keer encrypteren resulteert in twee verschillende cijfers. Een nadeel is wel dat cijfers ongeveer dubbel zo groot zijn als de oorspronkelijke klaartekst. Dit schema wordt dan ook zelden of nooit voor grote berichten gebruikt. 4.3 Cryptografische hash functie Een hash functie beeldt een invoer van willekeurige lengte af op uitvoer van vaste lengte. De invoer en uitvoer kunnen tot verschillende domeinen behoren. Het resultaat wordt de hashwaarde genoemd. Een cryptografische hash van x noteren we in deze tekst als H(x) en is een hashfunctie die aan de volgende extra voorwaarden voldoet: Eenwegs Het is eenvoudig de hashwaarde uit een bitstring te berekenen, maar het is bijzonder moeilijk (m.a.w. praktisch onhaalbaar) om uit een hashwaarde een bitstring te vinden die daarnaar hasht. Of symbolisch: x : x H(x) is eenvoudig, y x zodat H(x) = y is zeer moeilijk. Botsbestendig Het is computationeel onhaalbaar om voor een gegeven bitstring x 1 een andere bitstring x 2 te vinden zodat de hashwaarden van beide gelijk zijn, dus zodat H(x 1 ) = H(x 2 ). Twee vaak gebruikte hash algoritmes zijn SHA, dat voorgesteld is door U.S. National Institute of Standards and Technology en 160 bit uitvoer genereert, en MD5 dat ontwikkeld is door Ron Rivest en 128 bit resultaten terugeeft.

HOOFDSTUK 4. CRYPTOGRAFISCHE BOUWBLOKKEN 16 Dit cryptografisch primitief wordt ook wel een vingerafdruk of message digest genoemd en wordt frequent gebruikt in cryptografische protocols, zelden of nooit stand alone. Dit cryptografisch primitief zal ettelijke malen in de thesis terugkeren. 4.4 Message Authentication Code (MAC) Een Message Authentication Code (MAC) is een algoritme dat uit een bericht van willekeurige lengte en een sleutel van vaste lengte een hash waarde berekent van vaste lengte. Net zoals cryptografische hash functies zijn MAC s éénwegs en botsbestendig. Als bijkomende veiligheidseigenschap kan enkel iemand die over de sleutel beschikt de hashwaarde berekenen. MAC s worden typisch gebruikt voor integriteitsbescherming. Vooraleer iemand een bericht naar een andere partij wil zenden, kan eerst een gemeenschappelijke geheime sleutel afgesproken worden. Daarna wordt het bericht samen met de MAC verzonden. De ontvanger herberekent de MAC en vergelijkt deze met de verzonden MAC. Indien de twee MAC s overeenkomen mag de ontvanger er zeker van zijn dat de het verzonden bericht niet gewijzigd is: Indien een aanvaller het bericht wijzigt tijdens de verzending, kan hij de MAC niet herberekenen, want hij beschikt niet over de geheime sleutel. Enkele voorbeelden zijn: 1. Encrypteren van een cryptografische hash met een symmetrische sleutel. 2. H-MAC is een constructie dat elke cryptografische hash functie verandert in een MAC. 3. DES-CBC-MAC encrypteert het bericht met DES in CBC modus waarbij het laatse blok als MAC genomen wordt. 4.5 Zero-knowledge bewijzen 4.5.1 Schets Veronderstel dat Peggy weet hoe de originele Coca Cola r geproduceerd wordt. Peggy wil Victor daarvan overtuigen. De communicatie tussen Victor en Peggy zou er als volgt kunnen uitzien:

HOOFDSTUK 4. CRYPTOGRAFISCHE BOUWBLOKKEN 17 Peggy: Victor: Peggy: Victor: Peggy: Victor: Peggy: Victor: Peggy: Victor: Victor: Peggy: Ik weet hoe Coca Cola geproduceerd wordt. Maar nee, Alice. Dat weet jij niet. Ik weet het echt! Maar nee! Jawel! echt! Awel, zeg het dan. Jamaar, dan ken jij het geheim ook. Ik beloof je dat ik het aan niemand zal vertellen en dat ik er niets mee zal doen. Ok, ik zal het in je oor fluisteren. <fluister fluister fluister> Aha! Schitterend, nu weet ik het ook! <Bob gaat weg, en komt even later terug...> Voila, ik heb de bereidingswijze laten patenteren en ik doe de Coca Cola Company een proces aan. Oeps... Het is duidelijk wat er foutgelopen is. De gebruikelijke manier voor Peggy om Victor te overtuigen is door het geheim aan hem te vertellen. Peggy kan niet verhinderen dat Victor dit geheim aan anderen doorvertelt of het geheim zelf gaat misbruiken. Door gebruik te maken van éénwegsfuncties kan Peggy Victor overtuigen dat ze een stuk informatie heeft, zonder dat Victor ook maar iets van dit geheim te weten komt (buiten het feit dan dat Peggy er kennis over heeft). Zulke bewijzen noemen we zero-knowledge bewijzen. Het standaardschema voor zo n bewijs is interactief en bestaat uit een reeks van vragen die Victor aan Peggy stelt. Aan de hand van de antwoorden krijgt Victor er een zeker vertrouwen in dat Peggy effectief over het geheim beschikt. Toch is het niet zo dat de antwoorden ook maar iets aan informatie over het geheim zelf lekken. Veel van die interactieve bewijzen kunnen niet-interactief gemaakt worden door gebruikt te maken van cryptografische hash functies. In wat volgt tonen we hoe Peggy kan bewijzen dat ze een discrete logaritme van een y in een groep G kent. 4.5.2 Discrete logaritme Neem G een eindige cyclische groep van orde q met g als generator. Veronderstel dat Peggy aan Victor wil bewijzen dat ze van een bepaalde y G de discrete logaritme t.o.v. g in G kent. Ze wil m.a.w. bewijzen dat ze een x kent zodat g x = y. Een mogelijk schema gaat ziet er als volgt uit: 1. Peggy kiest een willekeurige α r Z q waarbij q de orde is van g in G. Ze zendt daarna g α naar Victor. 2. Victor genereert een c Z q en stuurt dit naar Peggy. 3. Peggy kent x en kan dus s = (α cx) mod q berekenen en naar Peggy zenden. 4. Victor controleert of g α = g s y c. De waarden g α, c en s worden vaak de verbintenis, de uitdaging en het antwoord genoemd. Gelijknamige termen vinden we ook terug bij andere types

HOOFDSTUK 4. CRYPTOGRAFISCHE BOUWBLOKKEN 18 zero-knowledge bewijzen. Victor is nu overtuigd dat Peggy de x kent, aangezien enkel met deze kennis s correct kan berekend worden. Indien q voldoende groot is de kans dat Peggy s toevallig juist geraden heeft verwaarloosbaar. Er wordt geen informatie over x gelekt. Wegens het Discrete Logaritme Probleem (zie 3.3) is het voor Victor immers onmogelijk om α uit g α te extraheren. De waarde α was door Peggy willekeurig gekozen en dus kan Victor uit s = (α cx) mod q geen informatie over x halen. Dit schema kan met behulp van een cryptografische hashfunctie H omgezet worden naar een niet-interactief zero-knowledge (NIZK) bewijs. Na de constructie van de verbintenis kan Peggy er de hashwaarde van berekenen, De uitkomst van die hashwaarde is volledig onvoorspelbaar. waardoor het beschouwd kan worden als een willekeurig gekozen getal waar Peggy zelf geen vat op heeft. De hashfunctie neemt dus de taak van Victor in stap 2 over. Het schema wordt dan: 1. Peggy kiest een willekeurige α r Z q waarbij q de orde is van g in G. Ze zendt daarna g α naar Victor. 2. Peggy berekent c = H(g y g α ) 3. Peggy kent x en kan dus s = (α cx) mod q berekenen en zendt (c, s) naar Victor. De waarde s kan dus enkel berekend worden indien x gekend is. Er geldt bovendien dat g α = g s y c. 4. Victor controleert of c = H(g y g s y c ). In de praktijk wordt als hashfunctie meestal H : {0, 1} {0, 1} h met h = 128 gebruikt, maar ook andere keuzes zijn mogelijk. Nu willen we dit NIZK-bewijs afhankelijk maken van een bericht m. Dit kan zeer eenvoudig door dit bericht mee te hashen, waardoor het schema lichtjes wijzigt tot: 1. Peggy kiest een willekeurige α r Z q waarbij q de orde is van g in G. Ze zendt daarna g α naar Victor. 2. Peggy berekent c = H(g y g α m) 3. Peggy berekent s = (α cx) mod q en zendt (c, s) naar Victor. De waarde s kan dus enkel berekend worden indien x gekend is. Er geldt bovendien dat g α = g s y c. 4. Victor controleert of c = H(g y g s y c m). Een bericht-afhankelijk NIZK-bewijs noemen we ook wel een kennishandtekening. Het net besproken type noemen we een kennishandtekening van een discrete logaritme en wordt als volgt gedefinieerd: Definitie 10 Een paar (c,s) dat voldoet aan c = H(g y g s y c m) is een kennishandtekening van de discrete logaritme van een groep element y met generator g voor het bericht m en wordt genoteerd als SKDL(g, y, m).

HOOFDSTUK 4. CRYPTOGRAFISCHE BOUWBLOKKEN 19 Dit is een bericht-afhankelijk NIZK-bewijs waarmee Peggy Victor overtuigt dat ze een x kent zodat g x = y. In essentie is dit een Schnorr-handtekening 4.7.4 met een wat andere invoerparameter in de hashfunctie. Indien de context duidelijk is kan het hashen van de g en y weggelaten worden. In een interactief zero-knowledge bewijs wordt enkel Victor overtuigd dat Peggy over bepaalde kennis beschikt. Als Peggy ook een derde persoon Charlie wil laten zien dat ze over die kennis beschik, moet ze het interactieve ook met Charlie afzonderlijk uitvoeren. Zelfs indien Victor alle stappen in het protocol zou registreren, zal Charlie dit bewijs hooggstwaarschijnlijk niet als geldig aanvaarden. Zo n registratie kan immers makkelijk vervalst worden. Dit is anders voor niet-interactieve zero-knowledge protocols, die net door het wegvallen van die interactiviteit in prinicipe door om het even wie geverifieerd kunnen worden. 4.6 Anonimizeerder Met de privacy op netwerken in het algemeen, en het internet in het bijzonder is het soms droevig gesteld. Daarom werd en wordt onderzocht hoe de anonimiteit en privacy toch aan een groep gebruikers gewaarborgd kunnen worden. Dit leidde tot systemen die we anonimizeerders noemen en die de anonimiteit en privacy kunnen garanderen voor verschillende toepassingen zoals E-mail, electronische publicatie van documenten, webbrowsing, elektronische betalingen, elektronisch stemmen en elektronische veilingen. Een voorbeeld is het APES 1 project dat aan de KULeuven op Esat ontwikkeld wordt in samenwerking met Computerwetenschappen. Een anonimizeerder is een derde partij waarlangs alle netwerkverkeer van een groep entiteiten passeert. De anonimizeerder wijzigt of verwijdert bepaalde identificatie- en authenticatiegegevens in de data die via haar naar de buitenwereld verstuurd worden. 4.7 Digitale handtekeningen 4.7.1 Concept Wat een geschreven handtekening honderden jarenlang was (en is) voor handgeschreven documenten, is de digitale handtekening voor elektronische documenten. Hierbij beschikt de ondertekenaar als enige over een stukje geheime informatie, die we de geheime sleutel noemen. Om een handtekening te verifiëren wordt publiek beschikbare informatie gebruikt die we de publieke sleutel noemen. Net zoals bij de klassieke handtekening, zijn bij een digitale handtekening een aantal eigenschappen vereist om geldig te zijn. We vermelden er hier enkele: Integriteit: Een bericht dat ondertekend werd kan tijdens de verzending niet onopgemerkt gewijzigd worden. De integriteit van een bericht zorgt dus voor de bescherming van de inhoud. 1 https://www.cosic.esat.kuleuven.ac.be/apes/

HOOFDSTUK 4. CRYPTOGRAFISCHE BOUWBLOKKEN 20 Onweerlegbaarheid: De ondertekenaar van het bericht kan achteraf niet ontkennen dat hij de handtekening geplaatst heeft. Dit volgt uit de integriteit. Authenticiteit: De digitale handtekening is onlosmakelijk verbonden met de publieke sleutel van de ondertekenaar en niemand buiten de eigenaar van de private sleutel kan de handtekening geplaatst hebben. De PKI 4.7.2 waar we het later nog over zullen hebben, zorgt voor een binding van een fysieke identiteit met zijn publieke sleutel. De ontvanger is zo dus zeker van de identiteit van de ondertekenaar. Onvervalsbaarheid: Voor iemand die geen toegang heeft tot de private sleutel, moet het onmogelijk zijn om een bericht te ondertekenen, alsof ze met die geheime sleutel geplaatst zou zijn. Dit is logisch en houdt verband met de authenticiteit van de ondertekenaar. Enkel de rechtmatige ondertekenaar mag een geldige handtekening kunnen creëren. Onherbruikbaarheid: Een handtekening hoort bij exact één bericht, en mag niet herbruikt kunnen worden om een ander bericht te tekenen. Een digitale handtekening wordt gedefinieerd aan de hand van drie algoritmes: genereersleutelp aar(κ), onderteken(m, sk) en verif ieer(m, σ, pk): genereersleutelp aar(κ) (pk, sk) geneert een publiek-privaat sleutelpaar (pk, sk), gegeven een veiligheidsparameter κ, die typisch de lengte van de sleutel zal zijn. onderteken(m, sk) σ genereert een handtekening σ die hoort bij het bericht m, door gebruik te maken van de private sleutel sk. verifieer(m, σ, pk) T rue/f alse verifieert of een handtekening σ hoort bij het bericht m en de persoon waarmee de publieke sleutel pk gelinkt is. De meeste handtekeningschema s kunnen in twee klassen onderverdeeld worden: de valdeur schema s en de discrete-log schema s. Tot de eerste klasse behoren o.a. Rabin en RSA, tot de tweede o.a. Schnorr, DSA en ElGamal. De RSA-, Schnorr- en DSA-schema s worden verder in dit hoofdstuk besproken. De veiligheid van de meest gekende valdeurschema s is gerelateerd met het factorisatieprobleem (zie 3.1) Het tweede met het Discrete Logaritme probleem (zie 3.3). Sommige handtekeningschema s zijn gerandomizeerd. Daarmee wordt bedoeld dat een bericht dat tweemaal met dezelfde private sleutel ondertekend wordt, toch hoogstwaarschijnlijk twee verschillende handtekeningen zal genereren. 4.7.2 PKI s en certificaten Een private en een publieke sleutel alleen zijn niet voldoende om geldige handtekeningen te kunnen plaatsen. Veronderstel bijvoorbeeld dat Alice eerst een publiek-privaat sleutelpaar (pk Alice, sk Alice ) genereert, vervolgens de publieke sleutel pk Alice naar Bob zendt, gevolgd door een bericht m ondertekent met sk Alice. Helaas zat Max met sleutelpaar (pk Max, sk Max ) op het communicatiekanaal tussen Alice en Bob en heeft hij pk Alice tijdens de verzending vervangen door