Top Banner
RSA kryptering Sikkerhed ved datatransmission Gruppe E4-201: Anders Gulbæk Kenni Graversen Claus Djernes Nielsen Tommy Faldt Pedersen Michael Haabendal Larsen abegyndt 01-01-2004 afsluttet 23-01-2004 Vejleder Mikael Rune Jensen Department of Computer Science, Aalborg University Fredrik Bajers Vej 7E, 9220 Aalborg Ø, Denmark 23 Januar, 2004
71
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: rsa-kryptering

RSA kryptering

Sikkerhed ved datatransmission

Gruppe E4-201:

Anders GulbækKenni Graversen

Claus Djernes NielsenTommy Faldt Pedersen

Michael Haabendal Larsen

pabegyndt 01-01-2004afsluttet 23-01-2004

VejlederMikael Rune Jensen

Department of Computer Science, Aalborg UniversityFredrik Bajers Vej 7E, 9220 Aalborg Ø, Denmark

23 Januar, 2004

Page 2: rsa-kryptering

Indhold

1 Forord 1

2 Læsevejledning 2

3 Problemformulering 3

4 Introduktion 4

5 Kryptologiens historie 65.1 Kryptologiens udvikling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

5.1.1 Steganografi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65.1.2 Transposition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75.1.3 Substitution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

5.2 Kryptologi i dag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95.2.1 Public key kryptering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95.2.2 SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

6 Talteori 116.1 Bevisteknikker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

6.1.1 Direkte bevis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116.1.2 Indirekte bevis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116.1.3 Modstridsbevis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126.1.4 Modbevis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126.1.5 Induktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

6.2 Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.3 Division med rest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.4 Greatest Common Divisor - gcd. . . . . . . . . . . . . . . . . . . . . . . . . . . 176.5 Kongruens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226.6 Den kinesiske restsætning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276.7 Inverse elementer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296.8 Primtal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

6.8.1 Aritmetikkens fundamentalsætning. . . . . . . . . . . . . . . . . . . . . 326.8.2 Eratosthenes si. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336.8.3 Uendelig mange primtal. . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6.9 Primtalsgenerering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346.9.1 Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346.9.2 Mersenne tal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

6.10 Primtalstest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.10.1 Trivielle tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.10.2 Fermat test. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6.11 Faktorisering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386.11.1 Fermats metode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386.11.2 Pollardsp− 1 metode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

i

Page 3: rsa-kryptering

7 RSA krypteringsalgoritmen 427.1 Hvorledes fungerer RSA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427.2 Et eksempel pa et RSA kryptosystem. . . . . . . . . . . . . . . . . . . . . . . . . 437.3 Sikkerheden i RSA kryptering. . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

8 Tidskompleksitet 498.1 Beskrivelse af store O funktioner. . . . . . . . . . . . . . . . . . . . . . . . . . . 50

8.1.1 O(c). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508.1.2 O(log2n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508.1.3 O(n). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518.1.4 O(n log2n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518.1.5 O(nx) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528.1.6 O(2n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528.1.7 Sammenligning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

8.2 Beregningsmæssige sværer problemer. . . . . . . . . . . . . . . . . . . . . . . . 538.2.1 Knapsack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538.2.2 Faktorisering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558.2.3 Iterationsangreb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

9 NP 599.1 Turing maskinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599.2 Klasserne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

9.2.1 P klassen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629.2.2 NP klassen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639.2.3 NP -fuldstændige problemer. . . . . . . . . . . . . . . . . . . . . . . . . 639.2.4 NP -hard klassen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

9.3 Reduktion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659.4 Hvordan beviser manNP -fuldstændighed i praksis?. . . . . . . . . . . . . . . . 669.5 RSA ogNP -fuldstændighed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

10 RSA Konklusion 67

11 Gruppe Konklusion 67

ii

Page 4: rsa-kryptering

1 Forord

Denne rapport er udarbejdet som adgangsgivende projektrapport til uddannelsen Bachlor of Sciencepa Aalborg Universitet. Malgruppen for denne rapport er vejleder og censor pa uddannelsen. Aflev-eringsfristen er fredag den 23. januar 2004.

Anders Gulbæk Kenni Graversen

Tommy Faldt Pedersen Michael Haabendal Larsen

Claus Djernes Nielsen

1

Page 5: rsa-kryptering

2 Læsevejledning

Vi vedlægger en læsevejledning for at give læseren et indblik i, hvordan vi har opbygget vores rap-port, saledes læseren har en bedre chance for, at forsta sammenhængen i det skrevne.

Netop i et projekt som dette er det vigtigt, at kunne argumentere matematisk for de beslutninger somtræffes. For at kunne underbygge disse valg, er vi nødt til at have en matematisk baggrundsvidenindenfor emnet. Vi har forsøgt at opbygge vores rapport udfra den forudsætning, at det skal værelet for læseren, at følge og forsta vores tanker, samt de matematiske problemstillinger, vi har staetoverfor. I denne rapport vil læseren først blive introduceret for et afsnit om kryptologiens historiskeperspektiv, for at fa en generel forstaelse for begrebet, kryptologi. Den matematiske grundviden tilRSA introduceres i afsnittet om talteori. Vi vil løbene i rapporten benytte dette afsnit som argumen-tation i den resterene del. Herved er vi fri for, at gentage beviser og eksempler. Vi vil analysererRSA algoritmen, og vise hvordan den virker pa baggrund af den teoretiske del. Vi vil se pa sikker-hedsniveauet i RSA, samt undersøge metoder at bryde den pa. Ønsker man, at bryde en krypter-ingsalgoritme er det nødvendigt at kunne vurdere dens tidskompleksitet, dvs. det maksimale antaloperationer. Derved kan man opna et billede af hvor svær krypteringssytemet er at bryde. Vi haraf samme grund medtaget et afsnit, som omhandler forskellige kompleksitets funktioner. Ligeledesser vi pa hvor komplekst et problem, som brydning af RSA, vil være. Derved opnar vi en bedreforstaelse for RSAs sikkerhed. Endvidere har vi inddraget et afsnit vedr. beregningsmæssige sværeproblemer, de sakaldte NP-problemer. Læseren vil opleve, at der er en del eksempler, i rapporten,hvilket skal resultere i en bedre forstaelse for de enkelte sætninger og beviser.

Som det ses i indholdsfortegnelsen er alle afsnittene navngivet ud fra hovedafsnittet. Matematiskesætninger og eksempler er nummereret med forløbende numre udfra afsnittene.

God fornøjelse!

2

Page 6: rsa-kryptering

3 Problemformulering

Den første dag vi mødte pa studiet, fik vi udleveret nogle mulige projekt emner. Vi valgte emnetSikkerhed ved datatransmission. Hvilket udmunder sig i følgende problemformulering:

”Kan det lade sig gøre at sende oplysninger mellem to parter og have sikkerhed for, at oplysningerneikke kan ses af en tredje part? I har sikkert alle prøvet at handle pa internettet, hvor følsomme data,sasom Dankort-oplysninger, skal transmitteres gennem et netværk af computere. I den forbindelsebenyttes en krypteringsmetode, saledes at oplysningerne ikke kan læses af fremmede. I langt de flestetilfælde benyttes en metode kaldet SSL (Secure Socket Layer), der er en blanding af symmetrisk ogasymmetrisk kryptering. Det er helt klart den asymmetriske kryptering, der gør det muligt at benytteSSL sikkert pa Internettet. Projektet gar ud pa at undersøge, hvordan specielt RSA kryptering fun-gerer og beskrive den bagvedliggende talteori ved metoden. Endvidere kunne man undersøge, hvadder egentligt skal til for at knække RSA-kryptering (hvilket er et sakaldt NP-problem)”.

Efter at have gennemgaet problemformuleringen, har vi valgt primært, at lægge vægt pa denbagvedlæggende talteori, for derigennem bedre, at kunne forsta og forklare principperne bag RSA-kryptering. Samtidig vil vi se pa NP-problemer, hvad karakteriserer dem og hvorfor og efterfølgendekæde disse sammen med brydning af RSA.

3

Page 7: rsa-kryptering

4 Introduktion

Kryptologi er en made at skjule en tekst eller data pa, sa det ikke kan læses af andre end den ønskedemodtager. Krypteringen foregar ved hjælp af nogle algoritmer som manipulerer beskeden fra af-senderen, og derved gør den ulæselig. Man kalder denne besked for en kryptotekst. Modtageren afbeskeden benytter sig ligeledes af nogle algoritmer som ændrer kryptotektsen tilbage til denoprindelige besked.

Der findes forskellige mader man kan kryptere sin besked pa.

Symmetrisk kryptering:I symmetrisk kryptering benytter afsender og modtager sig af den samme nøgle. Symmetriskkryptering er hurtigere end asymmetrisk kryptering, men ogsa betydelig mere usikker, da nøglenbliver tilgængelig for mindst to parter. Der vil derfor være en større risiko for, at ikke ønskedepersoner far adgang til nøglen. Symmetrisk kryptering var den eneste form for kryptering mankendte til indtil 1977.

Asymmetrisk kryptering:I asymmetrisk kryptering benytter man sig af en nøgle til at kryptere beskeden med. For at kunnedekryptere beskeden kræves der en anden nøgle. Man offentliggører den ene nøgle, mens denanden holdes hemmelig af ejeren. Fordelen ved asymmetrisk kryptering er, at man kan hemme-ligholde dekrypteringsnøglen og derigennem sikre, at kun de korrekte modtagere kan dekryptereog læse beskeden. En af de mest kendte asymmetriske krypterings algoritmer er RSA.

For at lave et sikkert og palideligt kryptosystem, er der 3 punkter som skal opfyldes.Konfidentialitet, hvilket vil sige at det skal være muligt at udveksle data i krypteret form, saledesat en 3. part ikke forsta den krypterede besked. Den anden erautenticitet, og betyder at modtagerenskal kunne være sikker pa at beskeden er fra den rigtige afsender. Dette løses typisk ved brug af dig-ital signatur. Det sidste punkt erintegritet, hvilket betyder, at den oprindelige besked fremkommerefter dekryptering. Er det ikke tilfældet skal dette være tydelig for modtageren.

Figur 1:Strukturen i et klassisk kryptosystem

Figur1 beskriver et typisk hændelsesforløb i et klassisk kryptosystem. Afsender(A) ønsker at sendeen besked til modtager(B). (A) krypterer sin besked ved hjælp af den fælles nøgle(K), som afsenderog modtager pa forhand er enige om. Grunden til at (A) krypterer sin besked, er for at undga, at en3. mand (X), ikke kan læse beskeden. (B) benytter sig ligeledes af nøglen pa kryptoteksten. For atkunne reetablere den oprindelige besked.

4

Page 8: rsa-kryptering

Brugen af IT er i dag enorm, og benyttes som et af de primære værktøjer til at sende informationeri mellem to parter. Forsendelse af sarbart data mellem to virksomheder foregar i dag ofte via Inter-nettet, som ikke regnes for at være en sikker forbindelse. Industri spionage og hacking af forskelligart er blevet mere og mere udbredt, hvilket gør brugen af kryptering nødvendig. IT-sikkerhed ans-es derfor af mange virksomheder for at være en af de primære poster indenfor virksomhedernesIT-politik. Kryptologi har ligeledes været i højsædet hos de forskellige regeringer og sikkerheds t-jenester, efter terror bølgen brød ud. Af samme grund, er der blevet lagt stor vægt pa hemmelighold-else af fortrolige oplysninger og militære aktioner. Internettet er ogsa blevet manges nye favoritindkøbssted og en ny made at ga i banken pa. Denne øgede handel medfører samtidig en risiko forat en hacker skaffer sig adgang til ens dankort-oplysninger. Af sammearsag er det nødvendigt atsikre følsomme data vha. kryptering. De enkelte banker konkurrerer saledes om at have den sikrestenetbank, for pa den made at kunne profilere sig overfor potentielle kunder.

5

Page 9: rsa-kryptering

5 Kryptologiens historie

Man gar ud fra at kryptering har eksisteret lige sa længe som skrivekunsten, da man ikke kunneforestille sig andet. Eksempler og viden taget fra [PLK97].

5.1 Kryptologiens udvikling

Kryptologien har udviklet sig i nogle klassiske krypteringsmetoder, som hverisær har deresegen made at skjule budskabet pa. Her er der tale om steganografi, transposition og substitution, somalle gar under betegnelsen konventionel kryptering (symmetrisk kryptering), da man bruger sammenøgle til at lase ogabne med.

5.1.1 Steganografi

Steganografi anvendes nar man vil skjule at en besked bliver sendt, dvs. at en hemmelig meddelelsekan sendes til en indviet person uden at nogen som helst uvedkommen vil opdage det. En af de mestpopulære metoder er gittermetoden som den italienske matematiker Gerolamo Gardano (1501-1576)opfandt. Her har bade afsender og modtager en nøjagtig ens skabelon med tilfældige udskarne rek-tangulære huller. Afsenderen placerer skabelonen pa et brevpapir og skriver meddelelsen i hullerne,et bogstav i hvert hul. Bagefter udfyldes de resterende felter med tilfældige bogstaver, vist pa figur2. Modtager placerer sin identiske skabelon pa brevpapiret og kan aflæse beskeden. Dette er detsamme princip som bruges i dag til at gemme PIN-koder.

Figur 2:Steganografi med gittermetoden

En mere moderne metode er den sakaldte 1-bit steganografi, hvorved en meddelelse kan skjules iet grafisk billede uden at billedets kvalitet ændres nævneværdigt. Man benytter den mindst bety-dende bit i hver pixels farvekode til at skjule den hemmelige meddelelse. Afsender og modtagerbliver enige om et billede som skal være nøglen. Afsenderen ændrer den mindste betydende bitmed et program, sa grupper af fire pixel i billedet illustrerer et ASCII tegn. Billedet sendes fx overinternettet.

6

Page 10: rsa-kryptering

Modtageren sammenligner billedet med nøglebilledet i et program, og kan derved se beskeden. Ifigur 3 indeholder billedet til venstre den skjulte besked og billedet til højre er nøglebilledet. Dennemetode kan ogsa benyttes pa et videoklip.

Figur 3:Steganografi med grafisk billede

5.1.2 Transposition

Transposition er karakteriseret ved at den krypterede tekst indeholder de samme symboler(bogstaver) som klarteksten dog er rækkefølgen af symbolerne en anden. Maden det gøres pa, er vedat skrive meddelelsen horisontalt pa et stykke papir pa sa mange linjer man ønsker. Den krypteredetekst aflæses derefter vertikalt. Modtageren skal vide hvor lange rækkerne er for at kunne dekrypteremeddelelsen.

Eksempel 5.1.1Klartekst: VI ANGRIBER KLOKKEN OTTE I MORGEN

V I A N G R IB E R K L O KK E N O T T EI M O R G E NT I D L I G

Kryptotekst: VBKIT IEEMI ARNOD NKORL GLTGI ROTEG IKEN¤

5.1.3 Substitution

Substitution handler om at erstatte bogstaverne i den oprindelige tekst med andre bogstaver i alfa-betet. Dette var princippet som Julius Cæsar benyttede sig af. Han erstattede ethvert bogstav i denoprindelige tekst med det bogstav der stod 3 pladser længere fremme i alfabetet. Kom han til endenaf alfabetet begyndte han forfra med A, B osv. Cæsars kryptering er ikke ret svær at bryde hvis manprøver alle mulige løsninger.

Eksempel 5.1.2A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ ØAD E F G H I J K L M N O P Q R S T U V W X Y Z Æ ØA A B C

7

Page 11: rsa-kryptering

Klartekst: KRYPTOLOGIKryptotekst: NUØSWRORJL¤

Problemet med steganografi, transposition og substitution er nøgledistributionen. Nar nøglen sendesaf ubeskyttede kanaler kan den nemt ga hen og blive opfanget af en tredjemand, sa som fjenden hvisman er i krig. I dag har internettet faet en stor rolle i vores hverdag og mange af vores følsommeinformationer gar ad denne vej. Internettet er fyldt med ubeskyttede kanaler hvor man nemt kanopfange en nøgle, hvis man har lidt viden indenfor omradet. Derfor kan disse krypteringssystemerikke klare nutidens krav til kryptering.

8

Page 12: rsa-kryptering

5.2 Kryptologi i dag

Kryptologien i dag er præget af avanceret matematik, hvilket har gjort det muligt at ga fra konven-tionel kryptering til public key kryptering. Dette har hjulpet internettet mht. sikkerhed.

5.2.1 Public key kryptering

Amerikanerne Whitfield Diffie og Martin Hellman definerede et krypteringssystem som de kaldtepublic key (asymmetrisk kryptering). Til forskel fra konventionelt kryptering bruger public keykryptering to forskellige nøgler. Nøglen som afsenderen skal benytte er offentlig tilgængelig (Pk),men modtagerens nøgle er hemmelig (Sk). Herved har man opnaet at afsender og modtager ikkedeler nogen hemmelig nøgleinformation og al kommunikation involverer kun offentlige nøgler. Allekan kryptere, men det er kun den der har den hemmelige nøgle som kan lase op. Dette skyldes at(Pk) og (Sk) er hinandens inverse. Opfanger tredjemand beskeden skal den sa vidt man ved knækkesved brute force. Dvs. man skal være indstillet pa at prøve enhver mulig løsning før man finder denkorrekte.

Public key krypteringssystemet foregar pa følgende made:

• Alice og Bob enes om et public key krypteringssystem

• Bob sender sin offentlige nøgle, PB til Alice

• Alice krypterer sin meddelelse med Bobs offentlige nøgle og sender den til Bob

• Bob dekrypterer meddelelsen med sin hemmelige nøgle SB.

Public key er især effektiv nar en hel gruppe af personer skal kunne sende krypterede beskeder til enbestemt person eller virksomhed. Herved er man fri for at der skal laves ny nøgle for hver person.Et eksempel pa et public key krypteringssystem der benyttes pa Internettet, er SSL.

5.2.2 SSL

Secure Sockets Layer (SSL) er et eksempel der bade benytter asymmetrisk og symmetrisk krypter-ing. Selve krypteringen foregar med en symmetrisk nøgle ’masterkey’, men nøglen udveksles medet asymmetrisk system. Kilde [WWWSSL] og [CDK].

SSL bruges til at kryptere følsomme informationer, som fx. nar et kreditkortnummer skal sendes fraen internetside til en virksomhed. SSL virker ved at skabe en midlertidig fælles nøgle som brugestil kryptering og dekryptering af informationer. Herved er det kun computerne i hver sin ende aftransmissionen som kan forsta beskeden, de andre computere mellem afsender og modtager vilmodtage en besked som er uforstaelig.

Nar en browser (som understøtter SSL) far forbindelse med en internetside der bruger SSL, senderserveren et ’hello request’ til browseren. Browseren svarer med ’client hello’. Serveren svarer tilbagemed ’server hello’. Ved udveksling af disse ’hello’ beskeder finder browser og server ud af hvilkekrypterings standarder som de begge understøtter.

9

Page 13: rsa-kryptering

Efter de har hilst pa hinanden har browseren og serveren behov for en nøgleudveksling. For atvære sikker pa at det er den rette browser og server som deler denne nøgle, skal forsendelsen afdenne nøgle forega pa en sikker made. Her benyttes den asymmetriske kryptering ved at browserenspørger efter serverens ’digitale certifikat’. Browseren bruger information fra dette digitale certifikattil at kryptere en besked, herved er det kun serveren, som kan forsta indholdet af beskeden. Serverenspørger efter browserens ’digitale certifikat’ og browseren sender dens ’digitale certifikat’. Hervedkan serveren kryptere en besked, men det er kun browseren, som kan forsta indholdet af beskeden.Browseren og serveren er nu klar til nøgleudvekslingen.

Browseren og serveren skaber en ’masterkey’ som bruges pa begge sider til at kryptere og dekrypteretransmissionen. Denne kryptering er symmetrisk. Det er kun browseren og serveren der deler denne’masterkey’ og den virker kun for den pagældende session. Ved brug af en unik delt nøgle kanbrowseren og serveren udveksle følsomme informationer, sa som kreditkortnummer uden at en tred-jepart kan forsta beskeden.

Nar man surfer væk fra en SSL internetside bliver en ’masterkey’ ubrugelig. Surfer man tilbage tilSSL internetsiden vil browser og server ga igennem hele processen igen og skabe en ny ’masterkey’.SSL gør on-line handel ekstremt sikkert. Maden at bryde en SSL kryptering er ved brug af bruteforce.

Før i tiden handlede kryptolografi (steganografi, transposition og substitution) kun om at beskytteden information som blev udvekslet mellem to personer, sa tredjemand blev holdt undenfor. Dennehemmeligholdelse kaldes for konfidentialitet. Ved moderne kommunikation, sa som datatransmis-sion, er der opstaet to nye behov, nemlig autenticitet og integritet. Bade autenticitet og integritet eropfyldt ved public key systemer, hvilket vi senere vil komme ind pa.

10

Page 14: rsa-kryptering

6 Talteori

Vi vil først i dette afsnit beskæftige os med forskellige former for teknikker til at bevise proposi-tioner, dvs. udsagn der altid er enten sande eller falske. I efterfølgende afsnit vil mange sætningerog deres beviser blive fremført, og af samme grund finder vi det vigtigt, at uddybe teknikkerne ogmetoderne bag beviserne. I de efterfølgende afsnit vil vi komme ind pa division, division med rest,største fælles divisor, kongruens, inverse elementer, primtal mm. For hvert af disse emner vil vibringe et antal definitioner, sætninger og beviser. Desuden har vi indkluderet forskellige eksempleri hvert afsnit, der kan være behjælpelig med at lette forstaelsen. Endvidere har vi benyttet os afhenvisninger til allerede beviste sætninger, for pa denne made at gøre et bevis mindre kompleks. Tiludarbejdelse af dette afsnit, har vi hovedsageligt benyttet os af kilderne [PLK97] [RKNT] [KHR03].Yderligere kildehenvisninger vil være at finde i selve afsnittet.

6.1 Bevisteknikker

For at kunne konkludere, at en matematisk sætning er sand, kræves et udførligt bevis. Der findesmange forskellige mader at bevise et postulat. Vi vil her bringe et udsnit af de mest benyttede.

Mange matematiske sætninger er ofte beskrevet som ”hvisp, sa q”. Eksempelvis ”hvisa gar op ib,sa gar a op i b · c”. Disse sætninger kan betegnesimplikationerog skrives matematisk somp → q,hvilket kan læses somp medførerq.For at kunne bevise en implikation, skal vi først vide hvornar en implikation er sand og hvornar dener falsk. Vi bringer derfor en definition:

Definition 6.1.1Ladp ogq være propositioner, Implikationenp → q er da falsk narp er sand ogq er falsk, og ellerssand. ¤

Vi vil ikke komme ind pa, hvorfor denne definition er sand, men i stedet henvise til [KHR03].

6.1.1 Direkte bevis

Det direkte bevis, gar i sin enkelthed ud pa at bevise, at hvisp er sand, sa maq ogsa være sand. (jvf.ovennævnte definition).

Eksempel 6.1.1Lad os bruge eksemplet ”hvisa gar op ib, sa gara op i b · c”.Vi antager atp er sand, dvs.a gar op ib. Vi finder nu etd saledesb

a = d. Da mab kunne skrives somb = a · d. Ganger vi herefter medc pa begge sider, far vi bc = a · d · c = adc. Dabc = a(dc) og davi ved ata gar op ia(dc), maa gar op ibc. Vi har nu bevist atq er sandt. Dermed erp → q sand.¤

6.1.2 Indirekte bevis

Denne type bevis tager igen udgangspunkt i implikationerp → q. Men istedet for at bevisepmedførerq, beviser vi her at IKKEq medfører IKKEp, hvilket skrives somqq →qp. Som ek-sempel kan vi bruge ”hvisa ikke gar op ib · c, sa gara ikke op i b”. Dvs. vi skal bevise, at hvisq erfalsk, sa map ogsa være falsk, hvilket ifølgedefinition6.1.1betyder at implikationen er sand.

11

Page 15: rsa-kryptering

Eksempel 6.1.2Implikation: ”hvisa gar op ib, sa gara op i b · c”. Dvs. da vi bruger et indirekte bevis, vil vi vise at”hvis a ikke gar op ib · c, sa gar a ikke op i b”. Dvs. atqq = ”hvis a ikke gar op ib · c”og at qp =”a gar ikke op ib”. Vi kan se, at hvisa ikke gar op ibc, sa kana heller ikke ga op i hverkenb ellerc. Havdea gaet op i entenb eller c, trivielt set villea sa ogsa ga op i et produkt af disse. Af sammegrund kan vi sa konkludere, at implikationen er sand. ¤

6.1.3 Modstridsbevis

Vi opsætter her et bevis, hvor resultatet - hvis det er sandt - bliver modstridende eg.0 = 1. Hvisvi vil bevise ”hvisp, sa q”tager vi udgangspunkt i ”hvisp, sa ikkeq”. Matematisk skriver vi dettesomp →qq. Viser denne modstridende sætning sig, at være sand, ma implikaitonenp → q ifølgedefinition6.1.1være falsk. Viser den sig i modsat fald at være falsk, ma implikationen være sand, ogbeviset er dermed fuldført. Prøver vi at bevise ”Hvisa gar op ib, sa gara ikke op ib · c”, og kommervi frem til at sætningen er falsk, sa ma ”a ga op ib · c, hvisa gar op ib”.

Eksempel 6.1.3Implikation: Hvis3n + 2 er ulige, sa ern ulige. Da vi vil bruge modstridsbevis erp =”3n + 2 erulige”ogqq =”n er lige”. Dan er lige, sa man = 2k hvor k er et heltal [KHR03]. Af samme grundma 3n + 2 kunne skrives som3(2k) + 2 = 6k + 2 = 2(3k + 1). Da 3n + 2 kan skrives som etprodukt af2, ma3n + 2 være lige, hvilket strider i mod vores tidligere antagelse, at3n + 2 er ulige.Dap er falsk ogqq sand, ma implikationen være sand. ¤

6.1.4 Modbevis

Bevisteknikken handler om at modbevise en sætning, dvs. finde et eksempel saledes at sætningenbliver falsk. Modbevis bruges ofte nar en implikations omvendte, skal vurderes. Med omvendtemener vi det omvendte afp → q dvs.q → p. Vi benytter os igen af eksemplet ”hvisa gar op ib, sagar a op i b · c”, hvor det modsatte sa ma være ”hvisa op i b · c, sa gar a op i b”. Vi ser hurtigt atdenne sætning ikke holder, daa blot skal ga op i entenb eller c for at ga op ibc. Dermed er det ikkegivet, ata gar op ib hvisa gar op ibc.

Eksempel 6.1.4Eksempelvis, mener vi at ”hvisa op i b ·c, sa gara op i b”beskrevet ovenfor, ma være fyldestgørendefor forstaelsen af denne bevistype. ¤

6.1.5 Induktion

Denne bevismetode er en meget udbredt metode og bruges f.eks. ved beviser om algoritmers kom-pleksitet, korrektheden af programmer og sætninger vedr. grafer og træer. Induktion er et godt red-skab til at bevise sætninger der omhandler sandhedsværdien af funktioner med et givet input. Ek-sempelvis funktionenP (n) er sand for alle positive heltaln. Induktion gar ud pa at bevise, at hvisP (n) er sand, sa erp(n+1) ogsa sand, hvilket igen betyder at hvisp(n+1) er sand sa map(n+2)ogsa være sand osv. Dvs. ved at vise atP (n) og P (n + 1) er sand, sa ma P (n) være sand for alleheltal≥ n.

12

Page 16: rsa-kryptering

Induktion tager udgangspunkt i etbasis skridtog viser at dette skridt er sandt. Skridtet kan eksem-pelvis være vis atP (1) er sandt. Herefter følgerinduktions skridtethvor det antages, at hvisP (k)er sandt, sa erP (k + 1) ogsa sandt, hvilket kan skrives somP (k) → P (k + 1).

Eksempel 6.1.5I dette eksempel, vil vi ved hjælp af induktion bevise, at følgende sætning er sand:

Lad n være et heltal≥ 1, sa kan summen af alle heltal fra og med1 til og medn udtrykkes vedhjælp af formlenP (n) = n(n+1)

2 . Dvs.:

P (n) =n∑

j=1

j =n(n + 1)

2

Basisskridt:P (1) =∑n

j=1 j = 1(1+1)2 = 1 hvilket ma siges at være korrekt, hvorforP (1) er sand.

Induktionsskridt: Vi antager nu atP (k) er sand:P (k) =∑k

j=1 j = k(k+1)2 .

Vis atP (k + 1) er sand, dvs.P (k + 1) =∑k+1

j=1 j = (k+1)(k+2)2 :

P (k + 1) =k∑

j=1

j + (k + 1)

=k(k + 1)

2+ (k + 1)

=k(k + 1) + 2(k + 1)

2

=kk + k1 + 2k + 2

2

=(k + 1)(k + 2)

2

Det er hermed bevist, at hvisP (k) er sand, sa erP (k + 1) ogsa sand. ¤

Har man en sætning man gerne vil bevise, hvilken bevisteknik skal man sa benytte sig af? Svareter, at man kan prøve sig frem med de forskellige typer. Tager man eksempelvis udgangspunkt i dendirekte bevismetode, og ser det ikke rigtig ud som om, man kommer der hen, man gerne ville, dakan man prøve sig frem med nogle af de andre teknikker. Alt i alt ma vi sige, at der ikke findes nogetendegyldigt svar pa hvilken bevistype der fungerer bedst.

For at kunne forsta RSA algoritmen, hvorledes og hvorfor den fungerer, er vi nød til at have kendskabtil den bagvedliggende talteori. Derfor gennemgar vi her den nødvendige teori.

13

Page 17: rsa-kryptering

6.2 Division

Definition 6.2.1Hvis a og b er heltal hvora 6= 0, siger vi ata gar op i b hvis der findes et helttalc saledes atb =a · c. Vi bruger notationena | b nara gar op ib oga - b nara ikke gar op ib. ¤

Sætning 6.2.1

Lad a, b og c være heltal. Sa gælder

1. hvisa | b oga | c saa | (b + c)

2. hvisa | b saa | b · c for alle heltalc

3. hvisa | b og b | c, saa | c4. hvisa | b oga | c, saa | m · b + n · c hvor m og n er heltal

Bevis:

1. (Direkte bevis)Lad a | b og a | c. Ifølge divisiondefinition6.2.1ved vi at der findes 2 heltalm og n saledes atb = a ·m og c = a · n. Derfor ma b + c = am + an = a(m + n) og daagar op ia(m + n), gara op i (b + c).(Modbevis)Vi vil her bevise at det omvendte ikke er tilfældet, dvs. hvisa | (b+ c), saa | b oga | c. For at modbevise dette, vil vi blot bringe et eksempel.2 | (3 + 11), men2 - 3 og2 - 11.Dermed er sætningenq → p modbevist.

2. (Direkte bevis)Lada | b. Da findes et heltal m saledes atb = a ·m. Ganger vi medc pa beggesider, far vi atbc = amc. Daa gar op iamc, gara op i bc.

3. (Direkte bevis)Lada | b og b | c. Da findes 2 heltal m og n saledes atb = a ·m og c = b · n.Ved at erstatteb meda ·m, far vi c = a ·m · n. Da a gar op ia · b · c, gara op i c.

4. (Direkte bevis)lad a | b og a | c. Der findes 2 heltal p og q saledes atb = a · p og c = a · q.Derfor mamb + nc = m · a · p + n · a · q = a(mp + nq). Daa gar op ia(mp + nq) gara opi mb + nc.

¤

Eksempel 6.2.1

1. Da2 | 8 og2 | 6 vil 2 | (8 + 6), hvilket ma siges at være korrekt.

2. 3 gar op i6, gar3 ogsa op i(6 · 2)? Ja, da12 divideret med3 er4.

3. Vi ved at4 gar op i16, og at16 gar op i32. Da gar4 op i 32, 32 = 4 · 8.

14

Page 18: rsa-kryptering

4. Vi ved at5 | 15 og 5 | 10, vælger vi nu 2 tilfældige heltal eksempelvis7 og 8, sa gar 5 op i(15 · 7 + 10 · 8) = 185. Dette er korrekt, da185 = 5 · 37.

¤

6.3 Division med rest

Sætning 6.3.1

Lad a være et heltal ogd et positivt heltal. Sa findes der unikke heltalq og r hvor 0 ≤ r < dsaledes ata = dq + r

Definition 6.3.1Den rest der fremkommer ved et heltalm divideret med et heltaln hvor n > 0 defineres sommmod n ellerm( mod n). ¤

Eksempel 6.3.136 mod5 = 1 da36 = 5 · 7 + 1 ¤

Sætning 6.3.2

For vilkarlige heltalm ogn hvorn > 0 gælder følgende 4 sætninger:

1. Hvisn | m, sa erm mod n = 0

2. Hvis0 ≤ m < n, sa erm mod n = m

3. (m mod n) mod n = m mod n

4. (m + k · n) mod n = m mod n for alle heltalk

Bevis:

1. (Indirekte bevis)Ladm mod n = r, hvor0 < r < n. Ifølgedefinition6.2.1kan vi skrivensomn = md + r. Dvs resten ved at divideren op i m er r, hvorforn - m.

2. (Direkte bevis)Er m mindre endn og forskellig fra0, sa vil n divideret op im være0. Restenfra 0 op til m vil sa værem. Dvs.m = 0 · n + m.

3. (Direkte bevis)Frasætning6.3.2(2) lige bevist, følger det at da (m modn) er mindre endnman mod m = (m mod n) mod n.

4. (Direkte bevis)Da n | (k · n) vil resten være0. Dvs kn mod n = 0. Af samme grundma (m + kn) mod n kunne reduceres tilm mod n. Sætningen kan dog ogsa bevises pafølgende made: Ladr = m mod n. Sa vil m = qn+r. Hvis vi herefter addererkn pa beggesider af ligehedstegnet, far vi (m + kn) = qn + kn + r = (q + k)n + r. Hvilket betyder at(m + kn) modn = r = m mod n.

15

Page 19: rsa-kryptering

¤

Eksempel 6.3.2

1. Vi vælger heltallene7 og 42. Da7 | 42, er der ingen rest ved42 divideret med7, hvorfor42mod 7 = 0.

2. Her sætter vim = 9, ogn = 17. Hvis vi dividerer17 op i 9, far vi 0 og en rest pa9. Af sammegrund kanm defineres som9 = 17 · 0 + 9, hvilket betyder, at9 mod 17 = 9.

3. Ladm = 60 og n = 13, sa ma (60 mod 13) mod 13 = 60 mod 13. Vi udregner nu60mod 13 = 8, og far sa 8 mod 13 = 60 mod 13. Da 8 er mindre en13 ma resten ved8mod 13 blive 8, og60 mod 13 ved vi allerede er8. Sa resultatet bliver8 = 8.

4. Vi giverm værdien9 ogn værdien14, og vælger et tilfældigt heltalk = 23. Ovennævnte sæt-ning fortæller os sa, at(9+23 ·14) mod 14 = 9 mod 14. Før vi regner, kan vi umiddelbartse at14 | (23 ·14) hvorfor(9+23 ·14) divideret med14 ma give en rest pa de resterende9. Viregner videre:(9+23 · 14) mod 14 = 9 mod 14 ⇒ 331 mod 14 = 9 mod 14 ⇒ 9 = 9.

¤

Sætning 6.3.3

For vilkarlige heltala,b ogn hvorn > 0 gælder følgende 2 sætninger:

1. (a + b) mod n = ((a mod n) + (b mod n)) mod n.

2. (a · b) mod n = ((a mod n) · (b mod n)) mod n.

3. at mod n = (a1 mod n)t mod n = (a mod n)t mod n , hvor t er et positivt heltal.

Bevis:

1. (Direkte bevis)Vi ved fra sætning6.3.1ata kan udtrykkes somnq1 + r1 og b somnq2 + r2.Erstatter via og b med disse, far vi

(a+ b) mod n = ((nq1 + r1)+ (nq2 + r2)) mod n = ((r1 + r2)+ (q1 + q2)n) mod n

Medsætning6.3.2(4) i mente, hvor(r1+r2) erm og(q1+q2) erk, kan vi yderligere reducereligningnen til

= (r1 + r2) mod n

Da r1 = a mod n og r2 = b mod n far vi følgende

= ((a mod n) + (b mod n)) mod n

16

Page 20: rsa-kryptering

2. (Direkte bevis)Vi vil i dette bevis ligeledes benyttea = nq1 + r1 ogb = nq2 + r2 og indsættedisse ligninger i den formel vi skal bevise.

(a · b) mod n = ((nq1 + r1) · (nq2 + r2)) mod n

Ganger vi de to paranteser, far vi

(nq1nq2 + nq1r2 + r1nq2 + r1r2) mod n

Herefter kann sættes uden for parantes

(r1r2 + (q1q2n + q1r2 + r1q2)n) mod n

Som vi husker frasætning6.3.2(4) kan ovenstaende ligning nu reduceres til

r1r2 mod n

Da r1 = a mod n og r2 = b mod n far vi følgende

((a mod n) · (b mod n)) mod n

3. (Direkte bevis)Da at mod n er det samme som(a1 · a2 · . . . · at) mod n, hvilket igen erdet samme som((a1 mod n) · (a2 mod n) · . . . · (at mod n)) mod n (sætning6.3.3(2)),maat mod n = ((a1 mod n) · (a2 mod n) · . . . · (at mod n)) mod n = ((a mod n)t)mod n.

¤

Eksempel 6.3.3

1. Vi vælgera = 8, b = 12, n = 3. Herefter indsætter vi tallene i sætningen(8 + 12) mod 3 =((8 mod 3) + (12 mod 3)) mod 3 ⇒ (20) mod 3 = (2 + 0) mod 3 ⇒ 2 mod 3 = 2mod 3 ⇒ 2 = 2.

2. Vi regner her med de samme tal som i ovennævnte eksempel. Dvs.a = 8, b = 12, n = 3.Sætningen fortæller os at(8 · 12) mod 3 = ((8 mod 3) · (12 mod 3)) mod 3. Udregnervi dette far vi (96) mod 3 = ((2) · (0)) mod 3 ⇒ (96) mod 3 = (0) mod 3 ⇒ 0 = 0.

3. Vi sættera = 3, t = 4 og n = 2. Sætter vi disse ind i vores sætning, far vi følgende:34

mod 2 = (3 mod 2)4 mod 2 ⇒ 81 mod 2 = 1 mod 2 ⇒ 1 = 1.

¤

6.4 Greatest Common Divisor - gcd

Gcd(a,b) eller sfd(a,b) (Største Fælles Divisor) skal forstaes som det største heltal d, der gar op iheltallene a og b.

17

Page 21: rsa-kryptering

Eksempel 6.4.1gcd(25,10):a = 25 og b = 10.Divisorer i a: 1,5,25.Divisorer i b: 1,2,5,10.Fælles divisorer i a og b: 1, 5.Største fælles divisor: 5. ¤

Ovennævnte eksempel viser os hvorledes, man kan finde den største fælles divisor for to tal. Menmetoden bliver hurtig besværlig og kompliceret. En anden og mere effektiv metode er kendt somEuklids algoritmeefter den græske matematiker Euklid. Algoritmen benytter følgende sætning:

Sætning 6.4.1

Lada = bq + r, hvora, b, q og r er heltal. Sa ergcd(a, b) = gcd(b, r).

Bevis:(Direkte bevis)Lad a = bq + r hvor a ≤ r < b. Ved at trækkebq fra pa begge side af lighed-stegnet far vi r = a − bq. Dvs. vi skal vise atgcd(a, b) = gcd(b, a − bq). Sætd1 = gcd(a, b) ogd2 = gcd(b, a − bq). Da d1 | a og d1 | b kan vi ud frasætning6.2.1(4) se atd1 | (a − bq). Dvs.d1 | (a · (1) + b · (−q)). Hermed kan det konkluderes atd1 er en fælles divisor ib og a − bq og atd1 ≤ d2. Omvendt dad2 | b og d2 | (a − bq) følger det afsætning6.2.1(4) at d2 | bq + (a − bq)hvilket er det samme som atd2 | a. Dvs. atd2 er fælles devisor ia og b, og atd2 ≤ d1, hvilket kunkan betyde atd1 = d2. ¤

Ovenstaendegcd(a, b) = gcd(b, r) kan ogsa skrives somgcd(a, b) = gcd(b, a modb).

Vi vil nu prøve at finde den største fælles divisor for 2 heltal ved hjælp af ovenstaende sætning.

Eksempel 6.4.2Findgcd(856, 544).

gcd(856, 544) = gcd(312, 544) da 856 = 1 · 544 + 312= gcd(312, 232) da 544 = 1 · 312 + 232= gcd(80, 232) da 312 = 1 · 232 + 80= gcd(80, 72) da 232 = 2 · 80 + 72= gcd(8, 72) da 80 = 1 · 72 + 8= gcd(8, 0) da 72 = 8 · 9 + 0= 8

Den største fælles divisor er den sidste rest6= 0. Hermed ses det, atgcd(856, 544) = 8. ¤

Lad a og b være et heltal hvora ≥ b. Største fælles divisor fora og b kan da findes pa følgendemade:

18

Page 22: rsa-kryptering

a = bq1 + r1 0 ≤ r1 < bb = r1q2 + r2 0 ≤ r2 < r1

r1 = r2q3 + r3 0 ≤ r3 < r2

···

rn−2 = rn−1qn + rn 0 ≤ rn < rn−1

rn−1 = rnqn+1

Da vi bliver ved med at dividereb op i a, og derefter den fundene restr1 op i b, og dernæst dennerestr2 op i r1 osv. osv., vil vi tilsidst ende med atrn gar op irn−1 og at resten dermed er0. Darn

selvfølgelig gar op irn og darn ogsa gar op irn−1, ma rn være den største fælles divisor.

Generelt kangcd(a, b) udtrykkes pa følgende made:

gcd(a, b) = gcd(r0, r1) = gcd(r1, r2) = · · · = gcd(rn−2, rn−1) = gcd(rn−1, rn) = gcd(rn, 0) =rn.

Sætning 6.4.2

Hvis a og b er positive heltal, sa eksisterer der heltals og t saledes atgcd(a, b) = sa + tb.

Det vil med andre ord sige, atgcd(a, b) kan udtrykkes som linearkombination afa og b. Dennesætning kaldes ogsa Euklids udvidet algoritme. I et senere afsnit, vil vi se hvorledes denne algo-ritme kan bruges direkte i RSA-algoritmen. Først skal sætningen - med udgangspunkt i ovennævnterestligninger - bevises:

Bevis:(Direkte bevis)Som det fremgar af ligningen, kana udtrykkes som

a = bq1 + r1

og ved at trækker1 oga fra pa begge sider, samt gange med−1 ses det at

r1 = a− bq1

Hermed kanr1 udtrykkes som linearkombination afa og b

r1 = a− bq1 = 1 · a + (−q1) · b = s1a + t1b

Pa samme made kan restenr2 beskrives

r2 = b− r1q2 = b− q2(s1a + t1b)

= b− q2s1a− q2t1b = (b− q2s1)a + (−q2t1)b = s2a + t2b

Her err1 blevet erstattet afs1a + t1b og−q2 er blevet ganget ind i parantesen. Skal vi finde denlinearekombination afr3 far vi

r3 = r1 − r2q3 = s1a + t1b− q3(s2a + t2b)

= s1a + t1b− q3s2a− q3t2b

19

Page 23: rsa-kryptering

= (s1 − q3s2)a + (t1 − q3t2)b = s3a + t3b

Osv. Vi kan generelt udtrykke den k’te rest hvork > 2 pa følgende made:

rk = rk−2 − rk − 1qk = sk−2a + tk−2b− qk(sk−1a + tk−1b)

= sk−2a + tk−2b− qksk − 1a− qktk − 1b

= (sk−2 − qksk − 1)a + (tk−2 − qktk − 1)b = ska + tkb

¤

I det næste eksempel vil vi udtrykkegcd(856, 544) - fra et tidligere eksempel - som en linearkom-bination af856 og544

Eksempel 6.4.3Fra det tidligere eksempel ser vi at856 mod544 = 312. Den linearkombination til312 vil se ud pafølgende made:

312 = 856− 1 · 544 = 1 · 856 + (−1) · 544

hvors = 1 og t = −1. Pa samme made kan vi udtrykker2, r3, · · ·, rk−1, rk.Rest 232:

232 = 544− 312 = 544− 1 · (1 · 856 + (−1) · 544)

= 544− 1 · 856 + 1 · 544 = −1 · 856 + 2 · 544

Rest 80:80 = 312− 1 · 232 = (1 · 856 + (−1) · 544)− 1 · (−1 · 856 + 2 · 544)

= 1 · 856 + (−1) · 544 + 1 · 856− 2 · 544 = 2 · 856 + (−3) · 544

Rest 72:72 = 232− 2 · 80 = (−1 · 856 + 2 · 544)− 2 · (2 · 856 + (−3) · 544)

= −1 · 856 + 2 · 544− 4 · 856 + 6 · 544 = −5 · 856 + 8 · 544

Rest 8:8 = 80− 1 · 72 = 2 · 856 + (−3) · 544− 1(−5 · 856 + 8 · 544)

= 2 · 856 + (−3) · 544 + 5 · 856− 8 · 544 = 7 · 856 + (−11) · 544

Dvs.gcd(856, 544) = 7 · 856 + (−11) · 544 ¤

Sætning 6.4.3

Lad a, b og n være heltal, da gælder det, at hvisgcd(a, n) = 1 og gcd(b, n) = 1 sa ergcd(ab, n) = 1.

Bevis:(Direkte bevis)Ser vi tilbage pa sætning6.4.2ved vi at der findes ets og t saledes atgcd(a, n) =sa + tn. Vi kan derfor bestemme atgcd(a, n) = s1a + t1n = 1, og endvidere atgcd(b, n) =s2b + t2n = 1. Efterfølgende ses det at

1 = gcd(a, n) · gcd(b, n) = (s1a + t1n) · (s2b + t2n).

20

Page 24: rsa-kryptering

Ganger vi nu de 2 paranteser med hinanden, far vi følgende

s1as2b + s1at2n + t1ns2b + t1nt2n

= (s1s2)ab + (s1t2a + t1s2b + t1t2n)n

Sidstnævnte ligning kan betragtes som en linearkombination afab og n hvor (s1s2) er s3 og(s1t2a + t1s2b + t1t2n) er t3. Sa far vi at s3ab + t3n = 1 hvilket - jf. sætning6.4.2 - betyderatgcd(ab, n) = 1. ¤

Eksempel 6.4.4Vi lader a = 7, b = 9 og n = 20. Vi skal være sikre pa atgcd(7, 20) = 1 og atgcd(9, 20) = 1.Med det samme ser vi, at7 er et primtal og7 - 20, hvorfor gcd(7, 20) = 1 ma være sandt. Da deeneste heltal der gar op i9 er 1, 3, 9, og da hverken3 eller 9 gar op i20, ma gcd(9, 20) = 1 ogsavære sandt. Vi vil nu findegcd(7 · 9, 20) ⇒ gcd(63, 20). For at finde gcd(63,20) kan vi benytteos afsætning6.4.1. Vi vil ikke ga i detaljer med udregningen, men blot vise de enkelte resultater:gcd(63, 20) = gcd(20, 63 mod 20) = gcd(20, 3) = gcd(3, 20 mod 3) = gcd(3, 2) = gcd(2, 3mod 2) = gcd(2, 1) = 1. ¤

Sætning 6.4.4

Hvis d | a ogd | b sa gælder atd | gcd(a, b).

Bevis:(Direkte bevis)Frasætning6.2.1(4) ved vi at hvisd | a ogd | b sa vil d | (ax + by) hvorx og y ervilk arlige heltal. Dagcd(a, b) ifølge sætning6.4.2kan udtrykkes som en linearkombination afa ogb, dvsgcd(a, b) = ax + by hvorx ogy netop er vilkarlige heltal, mad | gcd(a, b). ¤

Eksempel 6.4.5Lada = 21, b = 42 ogd = 7. Da7 | 21 (21 = 7·3) og7 | 42 (42 = 7·6), sa vil 7 | gcd(21, 42). Detses trivielt at den største fælles divisor for42 og 21 er 21 da21 | 42. Da vi allerede har konstateretat7 | 21 ma7 | gcd(21, 42). ¤

Sætning 6.4.5

Hvis a, b er heltal ogh er et positivt heltal gældet det, atgcd(h · a, h · b) = h · gcd(a, b).

Bevis:(Direkte bevis)Vi sætter herd1 = gcd(a, b) ogd2 = gcd(h ·a, h · b). Hvis vi kan vise, atd2 = h ·d1

har vi bevist at sætningen er sand. Vi ved atd2 | h · a og atd2 | h · b dad2 jo netop er fælles divisor ibegge produkter. Af samme grund mad2 ogsa ga op i en hver linearkombination afha oghb (ifølgesætning6.2.1(4)). Dvs.d2 | ((ha)x + (hb)y) hvilket kan skrives somd2 | (ax + by)h. Antager vi atx ogy er valgt saledes, atd1 = ax + by far vi d2 | (d1)h.Endvidere ved vi, at nard1 | a sa findes der etq1 saledes ata = d1q1, og dad1 | b etq2 sab = d1q2.Hvis vi for begge ligninger gange medh pa begge sider af lighedstegnet, far vi atha = (hd1)q1 og

21

Page 25: rsa-kryptering

hb = (hd1)q2. Udfra dette ses nu athd1 | ha og hd1 | hb, dvs.hd1 er fælles divisor iha og hb.Ser vi tilbage pasætning6.4.4kan vi nu bestemme, athd1 | gcd(ha, hb), hvilket er det samme somhd1 | d2. Dad2 | (d1)h oghd1 | d2 mahd1 = d2. ¤

Eksempel 6.4.6Talleta er6, b er−3 ogh er8. Sa gælder det atgcd(8·6, 8·−3) = 8·gcd(6,−3) ⇒ gcd(48,−24) =8 · gcd(6,−3) ⇒ 24 = 8 · 3 = 24. ¤

Sætning 6.4.6

Hvis c | ab oggcd(c, b) = 1, sa vil c | a.

Bevis:(Direkte bevis)Vi ved at c | ac, og det antages i sætningen atc | ab dvs. atc er fælles divisor iac og ab. Frasætning6.4.5ved vi desuden, atgcd(ab, ac) = a · gcd(b, c). Da gcd(b, c) = 1 magcd(ab, ac) = a · 1 = a, hvilket betyder ata er største fælles divisor iab ogac. Vi ved nu, at forabog ac er c fælles divisor oga største fælles divisor. Frasætning6.4.4far vi sa, atc | ab ∧ c | ac ⇒c | gcd(ab, ac) ⇒ c | a. ¤

Eksempel 6.4.7Vi vælger etb og etc saledes atgcd(b, c) = 1, b = 5 ogc = 12. Herefter vælger vi eta sa12 | a · 5,vi sættea = 24. Dvs.12 | 24 · 5 ⇒ 12 | 120 (120 = 12 · 10), og gcd(5, 12) = 1, sa vil 12 | 24(24 = 12 · 2). ¤

6.5 Kongruens

Definition 6.5.1Hvis a og b er heltal ogm er et positivt heltal, sa siger vi ata er kongruent tilb modulom hvis mgar op ia− b. Vi bruger notationena ≡ b modm til indikere ata er kongruent tilb modulom. ¤

Eksempel 6.5.126 ≡ 1 mod 5 da5 | (26− 1)11 ≡ 2 mod 3 da3 | (11− 2) ¤

Sætning 6.5.1

Hvis a og b er heltal ogm er et positivt heltal, sa era ≡ b modm hvis - og kun hvis -a modm = b modm.

Bevis:(Direkte bevis)Hvis a mod n = b mod n = r, sa ved vi at der findes to hele talq1 og q2 saledesat a = q1n + r og b = q2n + r. For ata ≡ b mod n skal n | (a − b). Dvs. n skal kunne gaop i (q1n + r) − (q2n + r) = (q1 − q2)n. Da vi ved atn | n kan vi udfrasætning6.2.1(2) se at

22

Page 26: rsa-kryptering

n | (q1 − q2)n hvilket betyder ata ≡ b mod n. Gar vi den modsatte vej, ved vi at der ma findes etheltalq hvisa ≡ b mod n saledes, ata = nq + b. Har vi ligningena mod n og erstatter via mednq + b far vi nq + b mod n og som følge afsætning6.3.2(4) ma denne ligning blive det sammesomb mod n. ¤

Eksempel 6.5.2Vi vælger eta og etb der modulo etm har samme rest. Lada = 55, b = 7 og m = 3, da er55mod 3 = 7 mod 3 = 1. Da3 | (55 − 7) er 55 ≡ 7 mod 3. Vælger vi omvendt eta = 43, b = 1ogm = 7 sa43 ≡ 1 mod 7, sa er43 mod 7 = 1 mod 7 = 1. ¤

Sætning 6.5.2

Hvis ax ≡ ay mod n oggcd(a, n) = 1 sa erx ≡ y mod n.

Bevis:(Direkte bevis)For atax ≡ ay mod n er sand, ved vi atn | (ax − ay) hvilket er det samme somn | a(x − y). Frasætning6.4.6ser vi at hvisn | a(x − y) og gcd(a, n) = 1 sa vil n | (x − y),hvilket er det samme somx ≡ y mod n. ¤

Eksempel 6.5.3Vi vælger eta = 9 og etn = 14 saledesgcd(9, 14) = 1. Herefter vælger vi etx = 28 og ety = 84,sa 9 · 28 ≡ 9 · 84 mod 14. Ovennævnte sætning fortæller os sa, at hvis9 · 28 ≡ 9 · 84 mod 14og gcd(9, 14) = 1, sa er28 ≡ 84 mod 14. Vi udregner den første kongruens:9 · 28 ≡ 9 · 84mod 14 ⇒ 252 ≡ 756 mod 14. Da 252 − 756 = −504 og 14 | (504) er kongruensen sand. Vitester om28 ≡ 84 mod 14 er sand. Vi kan udregne at14 | (28−84) ⇒ 14 | −56, (−56 = 14·−4),hvorfor denne kongruens ogsa er sand. ¤

Det næste vi vil kigge pa kaldesEulersϕ-funktion. Funktionenϕ(n) betegner antallet af de ele-menterej < n hvorgcd(n, ej) = 1 dvs. hvor den største fælles divisor er1. n ogej siges sa at væreindbyrdes primiske.LadZn betegne mængden af alle de rester der kan opsta ved division medn

Zn = 0, 1, 2, ...n− 1

Sa kan vi definere følgende

Z∗n = a ∈ Zn|a 6= 0 ∧ gcd(a, n) = 1

Antallet af elementer iZ∗n kan vi sa betegne somϕ(n), altsa |Z∗n| = ϕ(n).

Eksempel 6.5.4Z∗10 = 1, 3, 7, 9 da erϕ(10) = 4Z∗17 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 da erϕ(17) = 16 ¤

23

Page 27: rsa-kryptering

Hvis n er et primtal, sa erϕ(n) = n− 1. Dette er givet dan kun har divisorene1 ogn, hvorforn oget tal fraZn altid vil være indbyrdes primiske dvs. hvor den største fælles divisor for de to tal er1.

Sætning 6.5.3

Ladp, q være 2 primtal, ogn = p · q. Sa erϕ(n) = (p− 1)(q − 1).

Bevis:(Direkte bevis)n er som nævnt et produkt af de to primtalp og q. Vi skal finde det antal af heltalstørre end0 og mindre endn der er indbyrdes primiske medn. Vi ved atp og q ikke kan indgai denne mængde da de begge gar op i n. Derudover ved vi at ethvert positivt helttal mindre endp faktoriseret medq, samt ethvert positivt helttal mindre endq faktoriseret medp heller ikke kanindga i mængden. Dette skyldes - forp’s vedkommende - atp altid vil kunne ga op i ethvert heltalhfaktoriseret medp og atgcd(h · p, n) = p og ikke1. Det samme er situationen forq. Dvs. de heltalder ikke er indbyrdes primiske medn erp, 2p, 3p, ...(q − 1)p samtq, 2q, 3q, ...(p− 1)q. Dettebetyder, at der forq findes(p− 1) heltal, og forp, (q− 1) heltal der ikke er indbyrdes primiske medn. Da vi har defineretϕ(n) som antallet af heltal i mængdenZ∗n, og daZn gar fra0 op til n − 1,kan vi bestemme følgende:ϕ(n) = n − 1 − (p − 1) − (q − 1) = pq − 1 − (p − 1) − (q − 1) =pq − 1− p + 1− q + 1 = pq − p− q + 1 = (p− 1)(q − 1) ¤

For yderligere at hjælpe til en forstaelse af ovennævnte bevis, bringer vi her et eksempel.

Eksempel 6.5.5p = 3 og q = 7, p · q = 3 · 7 = n = 21.Z21 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20Vi ved at3 og 7 ikke kan indga i mængdenZ∗21, dagcd(21, 3) = 3 og gcd(21, 7) = 7. Derudoverved vi at 2(3), 3(3), ..., (7 − 1)(3) ikke kan indga, dagcd(21, 2 · 3) = 3, gcd(21, 3 · 3) =3, ..., gcd(21, 6 · 3) = 3 hvilket vil sige seks heltal inkl.p, og det samme er gældende for(3 −1)(7) hvilket vil sige to tal inkl.q. Vi kan nu bestemme følgende:ϕ(21) = 20− 6− 2 = 12. Efterprøver vi nu med ovennævnte sætning, far vi ϕ(7 · 3) = (7− 1)(3−1) = 12. ¤

Den næste sætning betegnes somEulers sætning.

Sætning 6.5.4

Hvis a ogn er heltal saledes atgcd(a, n) = 1 sa eraϕ(n) ≡ 1 modn.

Bevis:(Direkte bevis)Vi antager atri er et element i mængdenZ∗n = r1, r2, r3, . . . , rϕ(n). Vi ved at alleelementer iZ∗n er indbyrdes primiske medn, hvorforgcd(ri, n) af selvfølge, ma være1. Da det ergivet, atgcd(a, n) = 1, er gcd(ri · a, n) = 1 (Ifølge sætning6.4.3). Da gcd(ri · a, n) = 1 ved vifra sætning6.4.1at resten tilri · a divideret medn er indbyrdes primisk med n, hvilket vil sige, atgcd((ri · a) mod n, n) = 1. Vi kan nu slutte, at da(ri · a) mod n bade er indbyrdes primisk medn, og< n, sa ma (ri · a) mod n tilhøre mængdenZ∗n.Vi antager nu, atri og rj begge er elementer fraZ∗n, og desuden at

ari mod n = arr mod n

24

Page 28: rsa-kryptering

Hvilket ma være det samme somari ≡ arj mod n

Dagcd(a, n) = 1 kan vi ved at brugesætning6.5.2komme til følgende

ri ≡ rj mod n

hvilket betyder atri mod n = rj mod n, hvilket er det samme somri = rj , idet r1 og r2 ermindre endn.Bruger vi denne nye viden, kan vi hurtigt sla fast at alle elementerne iZ∗n dvs.

r1, r2, r3, . . . , rϕ(n)

kan skrives som

ar1 mod n, ar2 mod n, ar3 mod n, . . . , arϕ(n) mod n

Af samme grund, ma følgende være sandt:

(r1 · r2 · r3 · . . . · rϕ(n)) mod n

= ((ar1 mod n) · (ar2 mod n) · (ar3 mod n) · . . . · (arϕ(n) mod n)) mod n

Benytter vi reglen frasætning6.3.3(2) kan ovenstaende ligning skrives som

(r1 · r2 · r3 · . . . · rϕ(n)) mod n

= (ar1 · ar2 · ar3 · . . . · arϕ(n)) mod n

= (aϕ(n) · r1 · r2 · r3 · . . . · rϕ(n)) mod n

Da (r1 · r2 · r3 · . . . · rϕ(n)) og (aϕ(n) · r1 · r2 · r3 · . . . · rϕ(n)) har samme rest nar der divideres medn ma følgende gælde:

(aϕ(n) · r1 · r2 · r3 · . . . · rϕ(n)) ≡ (r1 · r2 · r3 · . . . · rϕ(n)) mod n

Som ogsa kan skrives saledes

(r1 · r2 · r3 · . . . · rϕ(n))aϕ(n) ≡ (r1 · r2 · r3 · . . . · rϕ(n))1 mod n

Da alleri elementerne er indbyrdes primiske medn dvs.gcd(ri, n) = 1, kan vi vha.sætning6.4.3fastsla, atgcd(r1 · r2 · r3 · . . . · rϕ(n), n) = 1. Det følger nu afsætning6.5.2at

aϕ(n) ≡ 1 mod n

¤

Sætning 6.5.5

Lada, n ogs være et heltal hvorn ogs ≥ 0. Lad endvideregcd(a, n) = 1, da gælder følgende:

as mod n = as mod ϕ(n) mod n

25

Page 29: rsa-kryptering

Bevis:(Direkte bevis)Vi ved fra sætning6.3.1at et heltals kan skrives soms = dq + r, hvor d er ettilfældigt heltal. Bestemmer vi, atd = ϕ(n), mas kunne skrives soms = ϕ(n) · q + r. Defor maas

mod n, kunne skrives somaϕ(n)·q+r mod n

Rent trivielt ved vi, at et talat+u er det samme somat ·au. Af sammearsag ma følgende være sandt

aϕ(n)·q+r mod n = aϕ(n)·q · ar mod n

Vha.sætning6.3.3(2) kan vi nu skrive

= ((aϕ(n)·q mod n) · (ar mod n)) mod n

Frasætning6.3.3(3) far vi sa

= (((aϕ(n) mod n)q mod n) · (ar mod n)) mod n

Dagcd(a, n) = 1 ved vi frasætning6.5.4, ataϕ(n) mod n = 1. Derfor gælder følgende

= ((1q mod n) · (ar mod n)) mod n

Vi ser med det samme, at(1q mod n) = 1 hvilket betyder

= (1 · (ar mod n)) mod n = (ar mod n)) mod n

Daar mod n altid vil blive mindre endn, kan vi vha.sætning6.3.2(2) fastsla at

= (ar mod n) mod n = ar mod n

Vi husker pa, atr er den rest vi far, nars divideres medϕ(n), dvs.r = s mod ϕ(n). Derfor kanar

mod n skrives somas·ϕ(n) mod n

Hvilket betyder, at vores sætning er sand. ¤

Næste sætning bliver betegnet som Fermats lille sætning.

Sætning 6.5.6

Hvis p er et primtal oga er et heltal, hvorgcd(p, a) = 1 sa erap−1 ≡ 1 mod p. Endvidere erap ≡ a mod p for ethvert heltala.

Bevis:Vi har tidligere i dette afsnit erfaret, atϕ(p) hvorp er et primtal ma være lig medp−1. Dette skyldessom sagt at alle elementerne iZp er indbyrdes primiske medp. Ved at benytte os afsætning6.5.4far vi følgende:

aϕ(p) ≡ 1 mod p = ap−1 ≡ 1 mod p

hvilket betyder, at første del i vores bevis er sandt. Dagcd(a, p) er1, ma vi kunne skrive,ap−1 ≡ 1mod p soma · ap−1 ≡ a · 1 mod p, ved at gange meda pa begge sider (sætning6.5.2). Dette mavære det samme somap ≡ a mod p. Antager vi nu atgcd(a, p) 6= 1, ma p ga op ia, dap jo er etprimtal. Dap gar op ia ma p ogsa ga op iap. Endvidere ma a ogsa ga op iap − a, hvilket betyderatap−1 ≡ 1 mod p. ¤

26

Page 30: rsa-kryptering

6.6 Den kinesiske restsætning

Før vi viser den kinesiske restsætning, vil vi her bringe en ligning kaldetden diofantiske ligning af1. grad. Denne ligning vil vi senere drage nytte af i beviset af den kinesiske restsætning.

Sætning 6.6.1

Lada, b, c, x, y være heltal, hvorx ogy være ubekendte. Den diofantiske ligninga ·x+ b · y = char sa uendelige mange løsninger, hvisgcd(a, b) | c, og ingen løsning hvisgcd(a, b) - c. Demange løsninger til ligningen vil kunne findes vha. følgende ligninger:

x = x0 +b

gcd(a, b)· k

y = y0 − a

gcd(a, b)· k

Her erx0 ogy0 defineret som et vilkarligt løsningssæt, ogk et vilkarligt heltal.

Bevis:(Direkte bevis)Det kan trivielt ses, atgcd(a, b) | a og atgcd(a, b) | b. Frasætning6.2.1(2) ved visa, atgcd(a, b) | ax og atgcd(a, b) | by, hvilket - ifølgesætning6.2.1(1) - ma betyde atgcd(a, b) |(ax + by). Vi kan hermed fastsla, at hvisgcd(a, b) | (ax + by) sa ma gcd(a, b) | c hvis ligningena · x + b · y = c skal have en løsning. Dermed kangcd(a, b) - c kun betyde, at der ingen løsningerfindes for ligningen.

Hvis x0 og y0 er løsninger til ovennævnte ligning, kan vi ved at variererk, finde uendelige mangeløsninger. Vi ved at

x = x0 +b

gcd(a, b)· k

og at

y = y0 − a

gcd(a, b)· k

hvor k er det samme vilkarlige heltal i begge ligninger. Det ses tydeligt at nar k skifter værdi, vildette pavirke de fundnex og y værdier. Dvs fastsætter vik til 1 vil x og y haveen værdi, lader viistedetk være 2, vilx og y have en anden værdi. Ved at benytte den diofantiske ligning, og ved atsubstituerex ogy med ovennævnte ligninger, vil vi bevise atx ogy er holdbare løsninger.

a · x + b · y = a · (x0 +b

gcd(a, b)· k) + b · (y0 − a

gcd(a, b)· k) = c

Vi husker stadig pa, at værdien afx og y, i stor grad hænger sammen med værdien afk. Vi kan nubegynde at reducere ligningen yderligere.

= a · x0 +a · b

gcd(a, b)· k + b · y0 − b · a

gcd(a, b)· k

Vi har her ganget henholdsvisa og b ind i paranteserne, og ophævet disse.

= a · x0 + b · y0 +ab

gcd(a, b)· k − ab

gcd(a, b)· k

27

Page 31: rsa-kryptering

I dette led har vi blot flyttet rundt pa ledene, hvorefter det tydligt ses, atabgcd(a,b) · k − ab

gcd(a,b) · kophæver hinanden. Hvorefter følgende ligning fremkommer:

= a · x0 + b · y0

Da vi ved, atx0 ogy0 jo netop er valide løsninger, kan vi konkludere, atx ogy er valide løsninger,og dax ogy afhænger af værdienk, og dak er vilkarligt valgt, ma der findes lige sa mange løsningersom der er værdier fork. Da k kan antage uendelig stor størrelse, ma der findes uendelige mangeløsninger. ¤

Den næste sætning kaldesDen kinesiske restsætningog stammer helt tilbage fraar 300 e. Kr.[PLK97]

Sætning 6.6.2

Ladm1,m2,. . .,mr være parvise indbyrdes primiske. Sa har kongruenserne

x ≡ a1 mod m1

x ≡ a2 mod m2

...

x ≡ ar mod mr

en unik løsningx.

Den kinesiske restsætning vil ikke blive bevist, da vi i stedet - med henblik pa et senere RSA bevis- vil koncentrerer os om et specialtilfælde af den kinesiske restsætning. Det specialtilfælde vi vilbeskæftige os med, koncentrerer sig om 2 kongruencer, hvora1 oga2 har samme værdi. Sætningenlyder som følger:

Sætning 6.6.3

Lada, b, p, q være heltal, og lad desudenp og q være indbyrdes primiske, da gælder

a ≡ b mod p ∧ a ≡ b mod q ⇔ a ≡ b mod (p · q)

Bevis:(Direkte bevis)Vi ved fradefinition6.5.1ata ≡ b mod p ∧ a ≡ b mod q ma betyde at

p | (a− b) ∧ q | (a− b)

Da badep og q gar op i(a− b), ved vi at der ma findes to heltali og j, saledes at

p · i = (a− b) ∧ q · j = (a− b)

Substituerer vi(a− b) medq · j far vip · i = q · j

28

Page 32: rsa-kryptering

Herefter ma følgende udtryk være korrekt:

p · i− q · j = i · p + (−j · q) = 0

Som det ses, er vi nu endt op med en diofantisk ligning, og som det fremgar afsætning6.6.1ma iog j kunne udtrykkes pa følgende made:

i = x0 +q

gcd(p, q)· k

j = −y0 − (− p

gcd(p, q)· k)

Dagcd(p, q) = 1 ma ligningerne kunne reduceres til

i = x0 + q · kj = −y0 +

p

gcd(p, q)· k = −y0 + p · k

Gar vi et skridt tilbage i beviset, husker vi ati · p + (−j · q) = 0. Rent trivielt kan vi hermed se, aten løsning for ligningenx0 · p + (−y0 · q) = 0, kan værex0 = 0 ogy0 = 0. Med dette i mente, kanvi reducere vores ligninger yderligere

i = q · kj = p · k

Da vi ved ata− b = j · q, vil vi ved at indsætte værdien forj i denne ligning, fa

a− b = p · k · qVi kan her betragtek som værende det tal der ganget medpq er ligmeda− b. Derfor ma

a− b

pq= k ⇒ pq | (a− b)

hvilket ifølgedefinition6.5.1betyder at

a ≡ b mod (pq)

¤

6.7 Inverse elementer

Inversebetyder direkte oversat,modsat, og bruges i matematikken til at beskrive det modsatte ele-ment af et andet element. Eksempelvis er den additive invers til 5 lig med -5, og den multiplikativeinverse til 7 er 1/7.Det vi skal beskæftige os med i dette afsnit, er den inverse tila modulon.

Definition 6.7.1Lada tilhøre mængdenZn dvs. den mængde af rester som kan forekomme ved division medn. Dahara et inverstelement modulon, hvis der eksisterer etx der ligeledes tilhørerZn, saledes at

ax ≡ 1 mod n

Vi vil ofte se det inverse element tila modulon betegnet soma−1 mod n, hvilket dog ikke maforveksles meda opløftet i−1, dvs. 1

a . ¤

29

Page 33: rsa-kryptering

Eksempel 6.7.1

1. 2 · 6 ≡ 1 mod 11. Dvs. at det inverse element til2 modulo11 er 6 og kan skrives som2−1

mod 11 = 6.

2. 6 · 2 ≡ 1 mod 11. Det inverse element til6 modulo 11 er 2 og kan skrives som6−1

mod 11 = 2. Vi kan her konkludere at2 og6 er hinandens inverse module11.

¤

Kan vi finde det inverse element til4 module10? Svaret er nej. Der eksisterer ikke noget inverstelementx til 4 modulo10 saledes at4 · x ≡ 1 mod 10 ⇒ 10 | (4x− 1). Vi ved atx er mindre endn dvs.x < 10, hvorfor vi nu kan opstille alle tænkelige eksempler forx:

10 - (4 · 0− 1) 10 - (4 · 1− 1) 10 - (4 · 2− 1) 10 - (4 · 3− 1) 10 - (4 · 4− 1)10 - (4 · 5− 1) 10 - (4 · 6− 1) 10 - (4 · 7− 1) 10 - (4 · 8− 1) 10 - (4 · 9− 1)

Skulle vi igennem ovennævnte process, hver gang vi ville undersøge oma modulob havde et inverstelement, ville opgaven hurtig blive uoverskuelig og kompleks. Men grundet næste sætning er vihjulpet godt pa vej.

Sætning 6.7.1

Der eksisterer et entydigt inverst element tila modulon, hvis og kun hvisgcd(a, n) = 1.

Bevis:(Direkte bevis)Hvis a modulon har et inverst elementx, sa ma det gælde atax ≡ 1 mod n ⇒n | (ax − 1). Hvis n | (ax − 1) ma der eksisterer et heltalq saledes at(ax−1)

n = q, ellerskrevet pa en anden maden · q = (ax − 1). Vi kalder gcd(a, n) for d, og kan med det sammese atd | nq (ifølge sætning6.2.1(2)), hvilket betyder atd | (ax − 1). Vi ved nu atd | ax ogd | (ax − 1) ⇒ d | (ax + (−1)1). Ifølgesætning6.2.1(4), kan vi udlede, atd | (−1)1 ⇒ d | −1,hvilket ma betyde, atd = 1 = gcd(a, n).Tager vi omvendt udgangspunkt igcd(a, n) = 1, kan vi - ved at benytte os afsætning6.4.2- fastsla,at der ma eksisterer etx og etq saledes, atnq + ax = 1. Dette kan omskrives tilax = (−q)n + 1,hvilket betyder, atax mod n = 1 ⇒ n | (ax − 1) ⇒ ax ≡ 1 mod n. Ergo erx det inverseelement tila modulon nargcd(a, n) = 1.For at vise entydigheden af det inverse element, kan vi antage at badex ogy er inverse elementer tila modulon. Dette vil sige, atax ≡ 1 mod n og atay ≡ 1 mod n. Det ses nu, at1 er rest ved badeax mod n og ay mod n, derfor erax mod n = ay mod n = 1, hvilket betyder, atax ≡ aymod n (Ifølgesætning6.5.1). Dagcda, n = 1 kan vi frasætning6.5.2bestemme, atx ≡ y mod n,og dermedx mod n = y mod n. Vi ved, atx og y begge er< n da de jo stammer fra mængdenZ∗n. Af sammearsag max = y (sætning6.3.2(2)). ¤

30

Page 34: rsa-kryptering

6.8 Primtal

Inspirationen til sætninger og beviser er fundet i følgende kilder [PLK97] [KHR03] [WWWGIM][RKNT]

Definition 6.8.1Et positivt helt talp > 1 kaldes et primtal, hvisp kun er deleligt med 1 ogp selv. Et positivt helt talm > 1, som ikke er et primtal, kaldes et sammensat tal. ¤

Dvs. at de første primtal er

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103

Vi vil senere isætning6.8.3beviser, at der findes uendeligt mange primtal.

Eksempel 6.8.1Vi vil nu undersøge om 7 er et primtal.

7 mod 1 = 07 mod 2 = 17 mod 3 = 17 mod 4 = 37 mod 5 = 27 mod 6 = 17 mod 7 = 0

Vi kan her se at der et tale om et primtal, fordi 7 kun gar op med 1 og 7. ¤

Eksempel 6.8.2Vi vil her undersøge tallet 6

6 mod 1 = 06 mod 2 = 06 mod 3 = 06 mod 4 = 26 mod 5 = 16 mod 6 = 0

Som man kan se her gar tallene 1, 2, 3, og 6 op i 6, og der er dermed ikke tale om et primtal.¤

Sætning 6.8.1

Ladp være et primtal. Da gælderp | ab ⇒ p | a ∨ p | b

31

Page 35: rsa-kryptering

Bevis:Hvis p ikke gar op ia, ergcd(a, p) = 1, hvilket ma betyde atp | b.(sætning6.4.6). ¤

6.8.1 Aritmetikkens fundamentalsætning

Vi vil nu tage et kig pa aritmetikkens fundamentalsætning ogsa kaldet primfaktoropløsning.

Sætning 6.8.2

Ethvert positivt heltal større en 1 kan entydig skrives som et primtal eller et produkt af to ellerflere primtal, hvor primfaktoriseringen er skrevet i stigende orden. Dette kaldes ogsa for arit-metikkens fundamentalsætning.

Saledes er sammensatte tal resultatet af et produkt af primtal. Dette blev bevist af matematikerenCarl Friederich Gauss (1777 - 1855).

Bevis:(Direkte bevis)Vi lader n være et heltal> 1. Hvis n er et primtal behøver vi ikke at vise mere.Antager vi istedet atn er et sammensat tal, da ved vi atn er produktet at to andre heltal. Dvs.n = a · b hvor b og a begge er større end1 og mindre endn. Vi tjekker nu oma er et primtal. Erdette tilfældet, gør vi ikke mere veda, og kigger istedet pa talletb. Er a ikke et primtal, ved vi igenat a er sammensat og derfor er et produkt af to andre heltal,a = a1 · a2. Samme koncept gældersaledes fora1 og a2 osv. osv. Det vil sige, at vi blive ved med at faktorisere alle sammensatte tal,indtil vi ender med en række tal der ikke længere er sammensatte, og derfor ma være primtal. Vi kannetop være sikre pa, at faktoriseringen vil ende op med primtal, da vi jo opsplitter alle sammensattetal i mindre tal, der efterhanden som operationen kører, nødvendigvis vil blive sa sma at de ikke kanopslittes yderligere. Da disse tal ikke kan opslittes, ma de være primtal. Vi har saledes primtalsfak-toriseret heltalletn. For at bevise entydigheden af denne faktorisering, tager vi udgangspunkt i, atet heltaln har primtalsfaktorenep1 · p2 · . . . · pr men ogsa primtalsfaktoreneq1 · q2 · . . . · qr. Dap1 | (p1 · p2 · . . . · pr)ogp1 | (q1 · q2 · . . . · qr) ma der findes etqj fra mængdenq1 · q2 · . . . · qr

saledes, atp1 gar op i qj (sætning6.8.1) . Vi ved atqj og p1 begge er primtal, og at de ligeledeser større end1. Af sammearsag, ma qj = p1. Vi antog før, atp1 · p2 · . . . · pr = q1 · q2 · . . . · qr.Dividere vi nu begger sider medp1, ma vi kunne fjernep1 fra venstre side ogqj fra højre. Vi kanefterfølgende tage udganspunkt i atp2 | (p2 · p3 · . . . · pr)ogp2 | (q2 · q3 · . . . · qr) og igen ende udmed at fjerneq2 fra begge mængder. Forsætter vi med denne operation, vil vi til sidst ende ud med2 tomme mængde, hvorfor vi kan konkludere, at de to faktoriseringsmængder, indeholder præcis desamme primtal. Hermed er entydigheden bevist. ¤

32

Page 36: rsa-kryptering

Eksempel 6.8.3Primfaktoriseringen af 100, kan skrives pa følgende made.

100/2 = 5050/2 = 25

25/2 = 12, 5

25/3 = 813

25/4 = 6, 2525/5 = 55/5 = 1

Vi kan nu konkludere at 100 kan skrives pa følgende made.

100 = 2 ∗ 2 ∗ 5 ∗ 5 = 22 ∗ 52

7 kan primfaktoriseres pa følgende made.

7/2 = 3, 5

7/3 = 213

7/4 = 1, 757/5 = 1, 4

7/6 = 1, 123

7/7 = 1

7 kan derfor primtaktoriseres pa følgende made 7 = 7. Derved kan vi konkludere at 7 er et primtal,fordi det kun er tallet selv og et der gar op i det. ¤

6.8.2 Eratosthenes si

Vi har allerede fastslaet at det er en meget omfattende affære at undersøge om et tal er primtal ellerej, men hvad nu hvis man gerne vil finde alle primtal under en hvis grænseg, sa ma det jo være ermeget sværere problem. Men hvis vi udnyttersætning6.8.2sa kan vi undersøge det.

Eksempel 6.8.4Lad os antage at vi vil finde alle primtal op til en grænse pa 20.

2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20.

Da 2 ikke har nogen ægte divisor, ved vi at 2 er et primtal. Vi undersøger nu hvilke af de øvrige tal2 gar op i, og derved har 2 som divisor, hvilket vil sige der er tale om et sammensat tal. Vi fjernernu de tal fra listen.

2, 3, 5, 7, 9, 11, 13, 15, 17, 18, 19.

33

Page 37: rsa-kryptering

Vi fortsætter nu med 3 som heller ikke har nogen ægte divisor, dette ved vi fordi det sa allerede villevære blevet fjernet fra listen. Vi fjerner nu alle de tal der har 3 som divisor. Og listen ser nu ud somfølger.

2, 3, 5, 7, 11, 13, 17, 19.

Vi er nu naet til 5, pa nuværende tidspunkt har vi fjernet alle de sammensatte tal som kunne prim-faktoriseres med2 og 3, dermed ved vi at det næste sammensatte tal, vi kan finde er5 ∗ 5 = 25,hvilket er over vores grænse pa 20, der er derfor ingen grund til at fortsætte. Talrækken bestar nukun af primtal. ¤

6.8.3 Uendelig mange primtal

Man har altid været overbevist om at det findes uendelig mange primtal, vi vil nu ved hjælp af Euclidbevise at denne antagelse er korrekt.

Sætning 6.8.3

Der findes uendeligt mange primtal

Bevis:(Modstridsbevis)Vi antager at der findes endeligt mange primtal, dvs. vi kan skrive alle primtal oppa en liste.p1, p2, p3, . . . ,pn. Vi laver nu tallet

Q = p1p2p3 . . . pn + 1.

Nu har Q ingen ægte divisorer blandt de allerede kendte primtal, da der ved division med et af,p1, p2, p3, . . . , pn altid vil fremkomme en rest pa 1. Da Q ikke kan primtalsfaktoriseres, ma Q væreet primtal(sætning6.8.2). ¤

Eksempel 6.8.5Lad os antage at3 er det største primtal man kender, sa kan vi skriveQ pa følgende made.

Q = 2 ∗ 3 + 1 = 7

Da7 ikke kan primtalsfaktoriseres, ved vi frasætning6.8.2, at Q ma være et primtal. ¤

6.9 Primtalsgenerering

Vi vil her bringe 2 algoritmer til generering af primtal, hvor den første vi nævner, dog er blevetmodbevist. Begge sætninger vil blive fremført uden bevis.

6.9.1 Fermat

I 1640 kom Pierre Fermat (1601 - 1665) med følgende pastand, i et brev til Mersenne

34

Page 38: rsa-kryptering

Sætning 6.9.1

Fn = 22n+ 1, n = 1, 2, 3, . . .

er primtal. Dette kaldes ogsa for Fermat-tal. Senere undersøgelser har dog vist at formlen ikkeholder, bl.a. beviste Leonard Euler (1707 - 1783) at det 5. tal i rækken ikke er et primtal. Seneretids undersøgelser har ikke fundet yderligere Fermat-tal, som er primtal.

Eksempel 6.9.1Vi sættern = 2

F2 = 222+ 1

F2 = 24 + 1F2 = 16 + 1

F2 = 17

Hvis Fermat’s sætnings er korrekt sa skal 17 være et primtal, for at undersøge dette tagerudgangspunkt idefinition6.10.1 √

17 = 4

17 mod 1 = 017 mod 2 = 117 mod 3 = 217 mod 4 = 1

(1)

Vi kan nu konkludere at Fermat’s sætning holder i dette tilfælde, da 17 er et primtal. ¤

6.9.2 Mersenne tal

Den franske munk Martin Mersenne (1588 - 1648) kom frem til følgende formel [PLK97]

Definition 6.9.1Et Mersenne primtal,Mp , er et primtal, som kan skrives som.

Mp = 2p − 1

¤

her pastod Mersenne at følgende var primtal

p = 2, 3, 5, 7, 13, 17, 19, 31, 67, 127, 257

35

Page 39: rsa-kryptering

Dog var han i tvivl om, hvorvidt det var rigtigt at tallene fra 31 og opefter var rigtige. Der skulle ga100ar inden L. Euler(1707 - 1783) beviste atM31 rent faktisk var et primtal. 230ar senere viste E.Lucas(1842-1891) atM127 ogsa var et primtal. Endda pa hele 39 cifre, hvilket er det største primtalder er fundet ved handkraft. Det har dog vist sig at vedM67 ogM257 tog Mersenne fejl, da de ikkeer primtal. Han havde desuden glemt primtalleneM61 , M89 , M107.

Den 2 december 2003 lykkes det for Michael Shafer at finde det 40. Mersenne tal og hidtil største.220996011−1 Hvilket tog 25,000ar computer tid at beregne. mere info kan findes her [WWWUTM].

Eksempel 6.9.2Hvis vi sætterp = 3 giver det sa et primtal ?

M3 = 23 − 1M3 = 8− 1

M3 = 7

dvs. i følge mersenne skulle7 være et primtal, ieksempel6.8.1fastslog vi at 7 er et primtal og derforer Mersenne pastand korrekt. ¤

Eksempel 6.9.3Det har dog vist sig at Mersennes pastand ikke altid er rigtig. Hvis vi prøver medp = 11.

M11 = 211 − 1M11 = 2047− 1

M11 = 2047

I følge hans sætning skulle der jo sa være tale om et primtal, men dette er ikke tilfældet, fordi mankan skrive:

2047 = 23 ∗ 89

¤

6.10 Primtalstest

I dette afsnit, vil vi beskrive et antal af de metoder, hvormed man kan teste om et givet tal er etprimtal. Disse metode skal senere vise sig at være anvendelige, nar vi - under RSA afsnittet - skalbekræfte at heltalp og q er primtal.

6.10.1 Trivielle tests

Hvordan kan vi sa finde ud af om et givent taln er et primtal eller ej ? Hvis vi tager udgangspunkti definition6.8.1sa kan vi selvfølgelig gøre det, at vi dividerer med alle heltal< n og derved findeud af, hvorvidtn er primtal eller ej. Vi far dog problemer hvisn er et meget stort tal, idet det sa vilblive en tidskrævende process. Løsningen til dette problem kan vi dog optimere, vha.sætning6.8.2aritmetikkens fundamentalsætning, der fortæller os at ethvert positivt heltal større end 1 entydigkan skrives som et primtal eller et produkt af to eller flere primtal. Det er derfor kun nødvendigt at

36

Page 40: rsa-kryptering

divideren med alle primtal< n. Gar ingen af tallene op in har vi derved bevist atn er et primtal.Vi kan dog gøre det endnu bedre. Vi kan nemlig nøjes med kun at dividere med alle primtal≤ √

n.Dette kan vi fordi, hvis heltalletd | n ogd ≥ √

n, da findes heltalq, saledes atn = qd og q ≤ √n.

Dermed ved vi at et sammesat tal altid har en divisor≤ √n.

Det kan vi skrive pa følgende made.

Definition 6.10.1n = primtal⇔ for alle primtalp ≤ √

n gælder det, atp ikke gar op in ¤

Eksempel 6.10.1Vi vil undersøge om 101 er et primtal, dette kan vi gøre pa følgende made.b√101c = 10. Vi ved nu at det kun er nødvendigt at checke med alle primtal mindre end eller ligmed10. Dvs. 2, 3, 5, 7.

101 = 2 ∗ 50 + 1101 = 3 ∗ 33 + 2101 = 5 ∗ 20 + 1101 = 7 ∗ 14 + 3

Herved har vi vist at 101 er et primtal, fordi der var ingen af de testede primtal, som resulterede i enrest pa 0, men for lige at fa en bedre forstaelse vil vi lige lave endnu et eksempel. ¤

Eksempel 6.10.2Vi vil her teste om 99 er et primtal.b√99c = 9

99 = 2 ∗ 49 + 199 = 3 ∗ 33 + 099 = 5 ∗ 19 + 499 = 7 ∗ 14 + 1

Her ser vi at der ikke er tale om et primtal, fordi 3 * 33 ikke gav nogen rest. ¤

Selvom der her er tale om en klar forbedring, er det stadig et meget svært problem at bevise omn eret primtal, bl.a. fordi det kræver, at man kender alle primtal≤ √

n, hvilket ikke er tilfældet narn ermeget stor.

6.10.2 Fermat test

Denne test tager udgangspunkt isætning6.5.6Fermats lille sætning. Ser vi tilbage husker vi at givet2 heltala ogp, der er indbyrdes primiske, og hvorp er et primtal, gælder det at

ap−1 ≡ mod p

37

Page 41: rsa-kryptering

Vi kan umiddelbart formode at vi her kan gøre det omvendte nemlig finde eta og p saledes atsætningen holder, og dermed ga ud fra atp er et primtal. Dette er dog ikke korrekt da eksempelvis2340 ≡ mod 341 godt nok er sandt, men da341 = 11·31 er341 ikke et primtal. Man kan kalde341et pseudo-primtal mht. 2. Dvs. vi kan ikke udfra Fermats lille sætning konkludere atp er et primtal.Men vi kan dog komme et skridt i den rigtige retning. Et typisk test foløb ville kunne tilrettelæggespa følgende made:Vi har et talp som vi vil teste. Derudover vælger vi en mængde af heltal, som vi vil testep imod.For hvert testtalti tjekker vi omgcd(p, ti) = 1. Fejler en af disse tests, ved vi atp og ti har fællesdivisor, og dermed kanp ikke være primtal. Fejler de ikke (dvs.gcd(ti, p) = 1) tjekker vi igenalle testtal op modp i tp−1

i ≡ mod p. Igen kan vi konkludere at hvıs testene fejler, sa kanp ikkevære et primtal, men som tidligere nævnt kan en succes heller ikke sikre os, atp er et primtal. Derfindes endvidere tal, som ville besta Femats test uanset hvilken testmængde de blev testet op i mod.Sadanne tal kaldesCarmichael tal, hvilke vi dog ikke vil komme yderligere ind pa her.

Der findes flere metoder der er mere effektive til at teste primtal med, end de her nævnte. Bla. kan vikort nævneRabin - Miller testen, der anses for at være langt stærkere end Fermats lille sætning, samten nyudviklet metode der garanterer en primtalstest i polynomiel tid. Vi har dog valgt ikke at bringedisse metoder i dette projekt, og vil istedet henvise til [PLK97] og [WWWP] for mere information.

6.11 Faktorisering

Her vil vi komme ind pa et par af de klassiske faktoriserings algoritmer. Vi vil ga i dybden medFermats metode til faktorisering af store tal og kort komme ind pa nogle andre metoder. Beviser ogsætninger fundet i [PLK97].

6.11.1 Fermats metode

I 1643 lykkes det Fermat at finde en metode til faktorisering af store tal. Sætningen han kom fremtil var.

Sætning 6.11.1Ladn være et ulige helt tal. Da gælder, atn kan faktoriseres, hvis og kun hvis der findes heltalligeløsninger,x ogy, til ligningenn = x2 − y2.

Bevis:Antag først, at der findes heltallige løsninger tiln = x2 − y2. Ved brug af reglen om ”to tals sumgange de samme to tals differens”far vi en faktorisering i de to faktorer.x + y ogx− y:

n = x2 − y2 = (x + y)(x− y) (2)

Omvendt, hvisn kan faktoriseres fx somn = a ∗ b lad os antage, ata er størst - kan vi skriven paformen.

n = (a + b

2)2 − (

a− b

2)2 (3)

38

Page 42: rsa-kryptering

Vi vil ikke lave et matematisk bevis pa dette, men blot konstatere at dette er sandt, ved at skrive eteksempel. ¤

Eksempel 6.11.1Vha.(2) far vi følgende.

n = 32 − 02 = 9

Vi benytter nu (3) for at vise at de to linier er ens.

n = (3 + 3

2)2 − (

3− 32

)2

n = 32 − 02 = 9

¤

Dan er ulige, er badea og b ulige, og da endviderea ≥ b sa er 12(a + b) og 1

2(a− b) positive heletal.

Vi kan udnytte ovenstaende til en faktoriseringsalgoritme. Ladn være det tal der skal faktoriseres.Hvis vi kan finde heltallige løsninger til ligningenn = x2 − y2, giver (2) os en faktorisering. Viomskriver ligningen til.

x2 − n = y2

Ladk være det mindste hele tal, der opfylder, atk2 > n, og betragt følgende

k2 − n, (k + 1)2 − n, (k + 2)2 − n, (k + 3)2 − n, . . . , (k + j)2 − n, . . .

I denne følge vil et af tallene før eller siden være et kvadrattal, om ikke før, sa nark + j = 12(n+1),

idet den trivielle faktoriseringn = n ∗ 1 sammen med (3) givera = n, b = 1

n = [12(n + 1)]2 − n = [

12(n− 1)]2

Hvis kvadrattallet først dukker op, nark + j = 12(n + 1) sa ern et primtal.

Vha. denne metode lykkes det Fermat at faktorisere tallet2027651281 dette gjorde han pa 12 skridt,hvor imod det ville have krævet optil 4677 divisioner, hvis man brugte metoden, hvor man divideremed alle primtal mindre end kvadratroden.

Eksempel 6.11.2Vi vil nu undersøge om Fermats faktorisering holder. Først finder vik ved

√2027651281 =

45029, 44904 + 1 ≈ 45030

450302 − 2027651281 = 49619

450312 − 2027651281 = 139680

39

Page 43: rsa-kryptering

450322 − 2027651281 = 229743

450332 − 2027651281 = 139680...

450402 − 2027651281 = 950319

450412 − 2027651281 = 1040400 = 10202

Efter 12 skridt finder vi faktoriseringen, da der ingen rest er ved at tage kvadratroden af1040400.Ved hjælp af (2) finder vi nu faktoriseringen.

2027651281 = (45041 + 1020)(45041− 1020) = 46061 ∗ 44021

¤

Eksempel 6.11.3Vi ønsker af finde primfaktoriseringen af 15

n = 33

k =√

33 + 1 ≈ 6

62 − 33 = 3

72 − 33 = 16 = 42

33 = (7 + 4)(7− 4) = 11 ∗ 3

Vi har hermed vist at primfaktoriseringen af33 er11 ∗ 3. ¤

Vi har udført en række tests og udfra det har vi en formodning om at jo mindre spændevidden ermellema ogb jo færrere skridt behøver vi udfører, vi har desuden observeret at antallet af skridt ikkeoverstiger12a. Dette kan ses i de følgende eksempler. Vi har valgt at undlade mellemregningerne,grundet deres trivilalitet og store omfang.

Eksempel 6.11.4

n = 15 ⇒ a = 5, b = 3 efter1 skridt.n = 30021 ⇒ a = 10007, b = 3 efter5002 skridt.n = 59667 ⇒ a = 19889, b = 3 efter9702 skridt.

¤

I næste eksempel har vi taget udgangspunkt in, hvorn har nogenlunde samme værdi.

Eksempel 6.11.5

40

Page 44: rsa-kryptering

n = 10401 ⇒ a = 3467, b = 3 efter1634 skridt.n = 10403 ⇒ a = 103, b = 101 efter1 skridt.n = 10405 ⇒ a = 2081, b = 5 efter941 skridt.

¤

Umiddelbart ser det ud til at vores formodning om, at antal udregning stiger, jo større afstand der ermellema og b holder. Men hvor vidt dette nu ogsa er sandt, ville kræve en større analyse, hvilket vigrundet vores tidsmæssige begrænsninger , har valgt at afgrænse os fra.

6.11.2 Pollardsp− 1 metode

Vi vil kort komme ind pa Pollardsp− 1 metode, som ogsa betegnes som en af de klassiske metoder.Vi har valgt at fremfører denne uden bevis.

Sætning 6.11.2Ladn ∈ N, og antag, atp er en primfaktor in.Hvis 1 < a < n og gcd(a, p), sa gælderp | (ap−1 − 1, n).

Princippet bag, gar ud pa at man forsøger at findep− 1 saledes at det er et produkt af sma primtal isma potenser.

Eksempel 6.11.6Vi antager atn = 1675403659. Vi skal nu have fundet et tal, som er et produkt af sma primtal i smapotenser, dette kan vi gøre ved at regne det mindste fælles multiplum1 af de første naturlige tal.

k = [2, 3, 4, 5, 6] = 60 = 22 ∗ 3 ∗ 5

Vi vælgera = 2 herefter beregner vi gcd(260 − 1, 1675403659) = 1. Nar resultatet er1 harn ikkeen primfaktor p, saledes atp− 1 gar op i60. Vi laver et nyt gæt.

k = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11] = 27720 = 23 ∗ 32 ∗ 5 ∗ 7 ∗ 11

eftersom gcd(227720 − 1,1675403659) = 2521 har vi fundet en ikke triviel faktor in ogsa kaldetp.Vi kan nu findeq ved simpel division.

q =1675403659

2521= 664579

¤

De to ovenstaende metoder er ikke de eneste der findes til faktorisering, her iblandt er der fx ogsaPollardsρ metode samt H.W. Lenstra’s elliptic curve algoritme(ECM). Fælles for dem alle er dog atdet stadig er et svært problem at faktorisere.

1Vi har en række naturlige tal hvor vi finder det mindste tal de alle gar op i.

41

Page 45: rsa-kryptering

7 RSA krypteringsalgoritmen

I 1977 blev en krypteringsalgoritme udviklet af R. L. Rivest, A. Shamir og L. M. Adleman, og i 1978blev algoritmen publiceret og navngivet RSA. RSA er en offentlig-nøgle krypteringsalgoritme, ogsakaldet et asymmetrisk krypteringssystem. Den anses for at være en af de mest sikre krypteringsalgo-ritmer pa markedet i dag, og anvendes af en lang række virksomheder her i blandt Microsoft, Sun,Apple og Novell. Faktum er dog, at der ikke findes en krypteringsalgoritme, som er 100% sikker,det er blot et spørgsmal om hvor lang tid det vil tage at bryde den. Til dette afsnit har vi benyttet osaf litteratur fra [PLK97], [PLK92], [WWWWIKI ] og [WWWRSA].

7.1 Hvorledes fungerer RSA

Nøgleberegningen i RSA-systemet bestar af følgende skridt:

1. Vælg to store primtal, gerne over 100 cifre.p og q, hvor udfra vi beregnern = p · q2. Beregnϕ(n) = (p− 1)(q − 1)

3. Vælg et helt tale, saledes at0 < e < ϕ(n) oggcd(e, ϕ(n)) = 1.

4. Beregn talletd, saledes ated ≡ 1( mod ϕ(n)). Denne beregning kan udføres ved hjælp afEuclids udvidet algoritme.

Den offentlige nøgle bestar af(n, e) og den hemmelige nøgle bestar af(d).

Teksten som skal krypteres omkodes til tal og inddeles i lige store blokke af talletm, saledes at0 < m < n.

Hverm krypteres med den offentlige nøgle:

c = me mod n

Modtageren dekrypterer ligeledes hver blok med den hemmelige nøgle:

m = cd mod n

42

Page 46: rsa-kryptering

7.2 Et eksempel pa et RSA kryptosystem

Vi vil i dette afsnit opbygge et simpelt RSA-kryptosystem. Til dette benytter vi os af, de fire punktersom er beskrevet i det foregaende afsnit. Gennem dette eksempel ønsker vi at fa en bedre forstaelsefor, hvilke skridt der skal gennemgaes, for at opbygge et brugbart RSA-kryptosystem.

I det første punkt skal vi vælge to primtal. For at sikre at de to valgte tal er primtal, er vi nødsaget tilat teste dem. Til dette har vi valgt at benytte Fermats lille sætning (jf.6.10.2). Vi vil teste tallene(p)13 og 23. Og benytter testtallene(t)T = 2, 3, 5.

gcd(13, 2) = 1 213−1 ≡ 1 mod 13 ⇒ 212 mod 13 = 1gcd(13, 3) = 1 313−1 ≡ 1 mod 13 ⇒ 312 mod 13 = 1gcd(13, 5) = 1 513−1 ≡ 1 mod 13 ⇒ 512 mod 13 = 1

gcd(23, 2) = 1 223−1 ≡ 1 mod 23 ⇒ 222 mod 23 = 1gcd(23, 3) = 1 323−1 ≡ 1 mod 23 ⇒ 322 mod 23 = 1gcd(23, 5) = 1 523−1 ≡ 1 mod 23 ⇒ 522 mod 23 = 1

Vi kan konkludere, at de to valgte tal er primtal. Dog skal det nævnes at Fermats metode ikke er100% sikker. Vi kunne derfor i stedet have valgt6.10.1metoden.

1. Vi vælger de 2 primtalp = 13 og q = 23 hvilket givern = 13 · 23 = 299

2. ϕ(n) = (13− 1)(23− 1) = 264

3. Vi kan her vælge mellem flere forskellige tal blot de overholder reglerne om0 < e < 264 og gcd(e, 264) = 1. Hvilket vil sige at vi kan vælge mellem talleneZ∗264 =1, 5, 7, 13, ........, 263. Vi har valgte = 13

4. Vi ønsker at finde den inverse til 13 modulo 264. Dette gør vi blandt andet ved hjælp af Eu-clid’s udvidet algoritme, som er beskrevet isætning6.4.2.

Ved hjælp afdefinition6.7.1, kan vi skrive13 · d ≡ 1 mod 264. Dette udtryk omskriver vi tilEuclids udvidetsætning6.4.2

13 · d ≡ 1 mod 264⇒ 264 | 13 · d− 1⇒ 264k = 13 · d− 1⇒ 264k − 13d = −1⇒ d13 + (−k)264 = 1

Da vi nu ved atd13 + (−k)264 = 1 ved vi frasætning6.4.2at gcd(264, 13) = 1. Vi vil nulave mellemregningerne tilgcd(264, 13) = 1, som vi skal benytte nar vi vil omskriver denstørste fælles divisor til en linearkombination af264 og13.

gcd(264, 13) = 1264 = 20 · 13 + 4

13 = 3 · 4 + 14 = 4 · 1 + 0

43

Page 47: rsa-kryptering

Vi omskriver dette til en linearkombination. Den linearkombination reducerer vi igen, til vifar definition6.7.1. 4 = 264 − 20 · 13 = 1 · 264 + (−20) · 13· 1 = 13 − 3 · 4 = 1 · 13 +(−3)(1 · 264 + (−20) · 13) = 1 · 13 + (−3 · 264 + 60 · 13) = 61 · 13 + (−3) · 264Efter at have reduceret vores linearekombination far vi s = 61 og t = −3Vi ved at sa + tm = 1. Hvilket giver 61 · 13 + (−3) · 264 = 1, og eftersom13 · 61 ≡ 1mod 264. Kan vi definered = 61, dermed er 61 den inverse til 13 modulo 264.

Vi kan nu definere vores nøgler, som skal bruges til at kryptere og dekryptere de meddelelser, somvi ønsker at sende vha. vores kryptosystem.

Offentlig nøgle (299, 13)Hemmelig nøgle (61)

Vi vil nu teste vores RSA kryptering: Til dette vil vi benytte os af det danske alfabet. Bogstaverneændres til tal, sa det kommer til at se ud, som følger, vi benytter os af 2 cifre til alle bogstaver sade repræsenteres ens. Normalt havde man valgt at benytte sig af ASCII-tabelen til konverteringenfra bogstaver til tal. Eftersom vi vil gennemga et mindre eksempel, hvor vi ikke har behov for allede bogstaver, tegn osv. som ASCII-tabellen tilbyder, har vi ikke valgt denne løsning.A = 01, B =02, C = 03, ........, A = 29

Teksten vi vil kryptere ”kryptering”k = 11 r = 18 y = 25 p = 16 t = 20 e = 05 r = 18 i = 09 n = 14 g = 07 efter at have ændretteksten til tal ser den saledes ud:11 18 25 16 20 05 18 09 14 07

Vi krypterer hver blok med den offentlige nøgle. Udregning for den første blok ser saledes ud:1113 mod 299 = 63

Den krypterede tekst kan efterfølgende ses nedenfor.63 278 142 3 267 44 278 35 287 29

Vi kan nu dekrypterer kryptoteksten ved hjælp af vores hemmelige nøgle. Udregningen for denførste blok ser saledes ud.6361 mod 299 = 11

Efter at have gennemført denne udregning pa hver blok, ender vi tilbage til den oprindelige besked.11 18 25 16 20 05 18 09 14 07 = ”kryptering”

Vi vil nu bevise at RSA-kryptosystemet virker efter hensigten. Altsa at nøglerne er hinandens in-verse. Det vil sige at0 < m < n:

(me mod n)d mod n = med mod n = m

Vi skal altsa bevise at:

med mod n = m

Bevis:Vi antagergcd(m,n) = 1. Ifølgesætning6.5.5gælder det sa:

44

Page 48: rsa-kryptering

med mod n ≡ med( mod ϕ(n)) mod n = m1 mod m = n mod m

Dermed ved vi, at vores udsagn er korrekt.

Vi vil nu bevise at vores pastand er sand ogsa nar gcd(m,n) 6= 1. Dette kan vi gøre ved hjælp afsætning6.6.3som er et spicial tilfælde af den kinesiske rest sætning, hvilket jo fortæller os

x ≡ m mod p ∧ x ≡ m mod q ⇒ x ≡ m mod (p · q)

Vi finder voresn vedp · q som er to forskellige primtal. Sa hvis vi antager atgcd(m, n) 6= 1 vilentenq ellerp være en divisor im.

Hvis p | m sa erm mod p = 0, og dermedmed mod p = 0, fordi p | m og

med = m ·m ·m.......... ·m︸ ︷︷ ︸ed

.

Eftersomed ≡ 1 mod ϕ(n), som vi ved fra punkt 4. Findes der ogsa et heltalk sadan, ate · d ≡ 1mod ϕ ⇒ ed

ϕ(n) = k + 1 ⇒ ed = ϕ(n)k + 1. Hvilket giver følgende:

med = m1+kϕ(n) = m ·mk(q−1)(p−1) = m(mq−1)k(p−1)

Vi kan ved hjælp af Fermats sætning,mp−1 ≡ 1 mod p, sætning6.3.3(2) og sætning6.3.3(3)reducere vores udtryk.

med mod p

≡ [m mod p · [mp−1 mod p]k(q−1) mod p] mod p≡ [m mod p · 1] mod p≡ m mod p= m

¤Skulle vi lave et bevis forq, ville det være analog med det, vi lige har gennemgaet forp. Hermed erdet bevist, at nøglerne er hinandens inverse.

45

Page 49: rsa-kryptering

7.3 Sikkerheden i RSA kryptering

Sikkerheden i RSA-kryptering ligger i valget af de 2 store primtalp og q, som udgøren. Er deto primtal store nok, vil det være for svært og tidskrævende at finde primtalsfaktoriseringen afn.Finder man frem tilp og q, kan man let regne sig frem tild, som udgører den hemmelige nøgle ogdermed er systemet brudt. En af de metoder man benytter sig af for at finde primtalsfaktoriseringenaf n er udtømningsmetoden(brute force), dvs. at man prøver alle muligheder, indtil at man finderden rigtige. Der afholdes løbende en konkurrence pa RSA lab’s hjemmeside, hvor de hele tidenudloder præmier for at faktorisere store tal, det sidste tal som er blevet faktoriseret, er etn pa 576bits. Hvilket man ikke mente var muligt for fa ar siden. Udviklingen af computeren har overrasketmange matematikere, og hvad der før hen blev set som en umulig opgave, kan idag klares indenforen overskuelig tidsramme. CNN meddelte den 26. april 1994, at RSA var blevet brudt. Den enesteinformation var den offentlige nøgle og kryptoteksten. Det tog 1600 computere fordelt over heleverden 8 maneder, at finde frem til de to primtalp og q der udgjorden. Det, der blev brudt i 1994var RSA-129. Hvilket vil sige at, det som er blevet faktoriseret, til to primtal, er et taln pa 129 cifre.Den oprindelige tekst var:

THE MAGIC WORDS ARE SQUEAMISH OSSIFRAGE

RSA-129 blev brudt ved hjælp af en faktoriseringsalgoritme ved navn Quadratic Sieve(QS) somtillader flere computere at arbejde sammen om det samme problem, denne algoritme ønsker vi dogikke at uddybe nærmere. Den tid det tog at knække RSA-129 har man beregnet til ca. 5000 MY2. Imere moderne systemer benytter man sig af 1024 bits nøgler (308 cifre), som betragtes pa nuværendetidspunkt at være ubrydelig. Eftersom man ikke kan stoppe udviklingen af computeren er den enesteløsning, at udvide sine nøgler og derved benytte sig af 2048 bits nøgler, nar tiden nærmere sig hvor1024 bits nøgler ikke længere er sikre. Hvis man ikke ønsker at benytte sig af udtømningsmetoder,findes der ogsa andre metoder til at finde frem tiln´s primtalsfaktorer(jf.6.11). Vi ved atn bestar af2 primtal, dvs. at det ene ma være mindre eller lig

√n og det andet større(jf.6.10.1). Denne metode

er god til faktoriseringn. Skal vi eks. finde primtalsfaktoriseringen af 15.

√15 ≈ 3, 87

Dvs. at vi kun behøver at prøve tal op til og lig 3. Det første primtal er 2, men eftersom 2 ikke garop i 15 kan vi konkludere at 2 ikke er en af primtalsfaktorene. Det næste primtal er 3 og3 · 5 = 15.Vi har hermed fundet primtalsfaktoriseringen af 15.

Hvis vi ser pa et større eksempel, kan vi beregne faktoriseringens tidsforbrug, før vi gar igang medberegningerne. Hvisn er et tal pa 100 cifre, sa erm ≈ 10100. Vi antager, at det tager 1 million’te-delaf et sekund at udersøge om et tal er divisor in. Kvadratroden af10100 = 1050. Vi kan nu beregnetidsforbruget af alle tal mindre end1050, inkl. ikke primtal.

1050 · 10−6sek. = 1044sek. ≈ 3, 2 · 1036 ar

Ovenstaende beregning tager udgangspunkt i at alle kombinationer afprøves, samtidig undersøger viheller ikke om en faktor er et primtal. Som man kan se udfra beregningen, vil det tage utrolig lang

2Mips ar er forkortet (MY). Mips er en forkortelse af millioner-instruktioner-pr-sekund. 1 mipsar er hvad en computer,som kan udføre en million instruktioner pr sekund, kan beregne pa et heltar. Eks. kan en 100 MHz PC pa etar bestillehvad der svare til ca. 50 MY. [PLK97]

46

Page 50: rsa-kryptering

tid, at finde frem til de to primtal, som udgørern. Udover de nævnte metoder til faktorisering afn,har vi i primtalsafsnittet beskrevet andre metoder. Faktorisering kan dog generelt betegnes, som etberegningsmæssigt svært problem, hvilket vi vil uddybe i næste afsnit.

RSA-systemet er ogsa sarbart overfor etiterationsangreb. I et iterationsangreb benytter man et tali kryptotekstenc og den offentlige nøgle. Ved at krypterec om og om igen, vil man pa et tidspunktigen far resultatetc. Et eksempel pa talfølgenc1, c2........., cj hvor:

c1 = ce mod nc2 = ce

1 mod n......

cj = cej−1 mod n......

kan man vise, at der pa et tidspunkt vil komme etck, saledes atck = c. Dermed erm = ck−1, dettekaldes ogsa etcyclingattack, fordi man køre rundt i en cirkel, indtil man kommer til det samme tal,som man startede med. Denne pastand vil ikke blive bevist, men vi bringer istedet et eksempel.

Eksempel 7.3.1

Vi har n = 3293, e = 25 og det første tal i kryptoteksten 489. Rækkefølgen bliver i dette til-fælde:[PLK92]

48925 mod 3293 = 1969196925 mod 3293 = 2043204325 mod 3293 = 2339233925 mod 3293 = 1118111825 mod 3293 = 489

Vi kan nu bestemme den oprindelige klartekst til 1118.¤

For at gardere RSA systemet mod dette angreb, skal vi vælgep og q som sakaldte stærke primtal.Stærke primtal skal opfylde følgende betingelser:

1. p− 1 og q − 1 indeholder store primtalsfaktorerp′ og q′

2. p + 1 og q + 1 indeholder store primtalsfaktorer

3. p′ − 1 og q′ − 1 indeholder store primtalsfaktorer

Ved at vælgep og q som stærke primtal far, man et beregningsmæssigt svært problem at genskabeden oprindelige tekst udfra kryptoteksten og den offentlige nøgle. Dog skal det nævnes, at vælgesder to stærke primtalp og q, kan man ved at bruge udtømningsmetoden udelukke alle de primtal,som ikke opfylder kravende.

Til sidst vil vi se pa, hvordan RSA-krypteringssystemet opfylder de tre punkter (konfidentialitet, au-tenticitet og integritet), som vi nævnte i introduktionen. Konfidentialiteten sikres idet vi far krypteret

47

Page 51: rsa-kryptering

vore besked og da de to nøgler er hinandens inverse, kan den krypteret besked ikke dekrypteres afandre, end den person som har den hemmelige nøgle. Autenticitet sikres ved hjælp af digital sig-natur, som vi dog ikke har beskæfitigt os sa meget med i dette projekt. I digital signatur, kryptereafsenderen sin besked to gange. En gang med modtagerens offentlige nøgle og bagefter med sin pri-vate nøgle. Efterfølgende dekrypterer modtageren først med afsenders offentlige nøgle og dereftermed sin egen hemmelige. Dette skridt fungerer da den offentlige og private nøgle er hinandens in-verse. Integritet sikres, da nøglerne er hinanden inverse, dermed vil teksten være uforstaelig, i detilfælde hvor en ikke korrekt nøgle er benyttet. Eller teksten bliver ændret evt. pa grund af støj pavejen, mellem afsender og modtager.

48

Page 52: rsa-kryptering

8 Tidskompleksitet

Indenfor beregninger af problemer findes der nogle beregningsmæssige svære problemer - sasomprimtalfaktorisering af store tal - som kan løses, men som en computer ikke er i stand til at løseinden for en overskuelig tid. Beregningshastigheden afhænger bade af computerens regnehastighedog af den algoritme som der bruges. Dvs. at algoritmen skal være effektiv. Det er vigtigt at vide omalgoritmen giver et svar indenfor et mikrosekund, minut eller en milliardar. Samtidigt skal man tagehensyn til pladskompleksiteten, da hukommelsen skal være til radighed for at løse problemet. Kilde[KHR03].

Den tid det tager at løse et problem, er en funktion af det antal beregninger, der kræves for at findeløsning pa problemet. Væksten af en funktion kan beskrives med en speciel notation som kaldesstore O. Store O har været brugt af matematikere i over 100ar, det var den tyske matematiker PaulBachmann som først introducerede store O notation i 1892 i en bog om talteori.

Indenfor datalogien kan man bruge store O til at sammenligne algoritmer med hinanden mht. bereg-ningshastigheden.

Definition 8.0.1Ladf ogg være to funktioner bestaende af heltal. Vi siger atf(x) erO(g(x)) hvis der findes kon-stanternek ogC sa

|f(x) ≤ C|g(x)| for allex > k ¤

C ogk kaldes vidner og danner par sammen og der findes uendelige mange vidnepar. For at se detteskal man lægge mærke til, at hvisC ogk er et vidnepar, sa er enhvert parC ′ ogk′, hvorC < C ′ ogk < k′ ogsa et vidnepar da|f(x) ≤ C|g(x)| ≤ C ′|g(x)| narx > k′ > k.

Maden man kan finde et vidnepar pa er ved at vælge en værdi fork, sa størrelsen af|f(x)| nemt kanfindes narx > k.

Eksempel 8.0.2Vis atf(x) = x2 + 2x + 1 erO(x2)

Løsning: Vi observerer at vi hurtigt kan bestemme størrelsen aff(x) nar x > 1, fordi x < x2 og1 < x2 narx > 1. Det medfører

0 ≤ x2 + 2x + 1 ≤ x2 + 2x2 + x2 = 4x2

Narx > 1 kan vi tageC = 4 ogk = 1 som vores vidnepar til at vise atf(x) erO(x2). Dvs.

f(x) = x2 + 2x + 1 < 4x2 narx > 1. ¤

49

Page 53: rsa-kryptering

8.1 Beskrivelse af store O funktioner

Indenfor store O er der forskellige funktioner med hver sin kompleksitet. Eksemplet ovenover benyt-tede fxO(x2), men heldigvis findes der andre funktioner med mindre kompleksitet. Disse funktionerbeskrives og sammenlignes nedenunder for at bedre at kunne se forskellen. Beskrivelse og figurer ertaget fra [RP] og [WWWO]. Bogstavetn repræsenterer antallet af dataelementer i algoritmen.

8.1.1 O(c)

Da c repræsenterer en konstant vil algoritmen bruge samme tid til at blive færdig, uanset antallet afelementer. Funktioner af denne type er vurderet til de hurtigste. Figur4 viser en konstant vandretgraf.

Figur 4:Konstant kompleksitet

8.1.2 O(log2n)

En logaritme funktion er det modsatte af en eksponentiel funktion. Ved 2 tals logaritmen stiger denvertikale komponent med 1 nar dataelementerne fordobles. Dvs. log2(1) = 0, log2(2) = 1, log2(4) =2, log2(8) = 3, osv. Logaritmebaseret algoritmer er generelt vurderet til de næstbedste algoritmer derfindes, nar der er tale om mange dataelementer. Jo størren er jo mere effektiv er algoritmen. Figur5 viser grafen for denne funktion.

Figur 5:Logaritmisk kompleksitet

50

Page 54: rsa-kryptering

8.1.3 O(n)

O(n) kaldes en linear funktion, som vokser konstant med data elementerne. Kan ses pa figur6 Dvs.hvis det tager 10 sekunder med at søge 100 elementer igennem vil det tage 20 sekunder at søge 200elementer igennem.

Figur 6:Linear kompleksitet

8.1.4 O(n log2n)

Denne funktions effektivitet afhænger af størrelsen pa n. Grafens stigning er relativ rolig, hvilket gøralgoritmer med denne beregningshastighed nogenlunde effektive. Grafen for denne funktion kan sespa figur7. Sorteringsalgoritmen quicksort har denne kompleksitet.

Figur 7:n log2n kompleksitet

51

Page 55: rsa-kryptering

8.1.5 O(nx)

Nu begynder funktionerne at blive mere komplekse og arbejder i det man kalder polynomiel tid,hvor x er konstant. En n2 funktion er typisk vurderet til at være ineffektiv fordi funktionen voksermed høj hastighed som det kan ses pa figur 8. Dvs. hvis det tager 20 sekunder med at søge 100elementer igennem vil det tage 80 sekunder at søge 200 elementer igennem. Det betyder 4 gange salang tid. Et eksempel pa en O(n2) funktion er nar man laver en for-løkke inden i en anden for-løkke.

Figur 8:Polynomiel kompleksitet med n2

8.1.6 O(2n)

Denne funktion arbejder i det man kalder eksponentiel tid. For hver gangn stiger med 1, fordobleskøretiden for algoritmen. Algoritmer som har denne funktion er meget ineffektive algoritmer nardataelementerne n vokser, hvilket tydeligt kan ses pa figur9.

Figur 9:Eksponentiel kompleksitet

52

Page 56: rsa-kryptering

8.1.7 Sammenligning

Nedenstaende figur10 viser en sammenligning af de forskellige funktioner ved kørsel af en algo-ritme som bruger 1 sekund per element.

Figur 10:Sammenligning af funktionernes kompleksitet

Ud fra tallene er det tydeligt at se man helst skal undga at bruge de nederste funktioner sa som O(n2),da de beregningsmæssig kræver enorm meget tid i forhold til de øverste funktioner O(log2n).

8.2 Beregningsmæssige sværer problemer

Vi vil i dette underafsnit, komme med eksempler pa problemer der er beregningsmæssige svære atløse. Sadanne problemer vil dog nok kunne løses, men rent tidsmæssigt vil det være en uoverskueligopgave.

8.2.1 Knapsack

Knapsack problemet er et eksempel pa et problem der - som vi efterfølgende vil komme ind pa - erberegningsmæssigt svært. Til dette afsnit har vi benyttet litteratur fra Kilde [PLK97]:

Givet en mængde I =i1, i2,..., in af naturlige tal og et naturlig tal L.

Findes der en delmængde af I, saledes at summen af elementerne i denne delmængde er L.

Et lille eksempel med tal: I =1,3,2,7,5,10, L = 8. Der er tre løsninger til problemet, nemligdelmængderne1,7og1,2,5 og3,5.Algoritmer til løsning af dette problem genererer alle mulige delmængder af I, beregner summenaf elementerne i hver delmængde og sammenligner summen med L. Hvis summen passer med L,stopper algoritmen og svarer ”ja”. Hvis der ikke findes nogen delmængde med den ønskede sum,standser algoritmen, efter at alle delmængder er undersøgt, og svarer ”nej”.

Da der er 2n -1 delmængder i en mængde medn elementer, vil vi i værste tilfælde kunne risikere,at algoritmen skal undersøge alle 2n-1 delmængder, før algoritmen stopper. Hvis en computer kanundersøge en delmængde pr. mikrosekund, vil problemet for n = 10 tage 0,001 sekund at løse.

53

Page 57: rsa-kryptering

For n = 25 vil det tage 33 sekunder og for n = 50 vil det tage 35,7ar. Udførelsestiden voksereksponentielt med problemstørrelsen (n). Dvs. at algoritmen har eksponentiel kompleksitet.

-1 kommer af at vi ikke kan bruge den tomme mængde til noget. Fx hvis I kun indeholder et tal,I = 7, vil 2n = 21 = 2 delmængder =7 og Ø. Denne konstant har dog ikke nogen betydningmht. til kompleksiteten hvorfor denne ma væreO(2n).

At kompleksiteten er eksponentiel stigende, har betydet at knapsack har dannet grundlag for et kryp-tosystem, nemlig krypteringssystemetMerkel-Hellman. Vil vil dog ikke komme ind pa hvorledesdette system benytter knapsack, men istedet koncentrerer os om knapsacks kompleksitet.

Vi har i det ovenstaende beskrevet at knapsack problemet stiger eksponentielt dvs. nar mængden afelementer stiger med 1 element, fordobles problemet. Vi vil her beskæftige os med dette postulat,og endvidere bevise, at det ogsa forholder sig sadan.

Lad os først kigge pa en tom mængdeI = Ø. Givet et heltalL, skal vi bestemme hvor mangeoperationer/sammenligninger der maksimalt skal til for at løse problemet. Vi lader mængdenOindeholde det antal operationer der bruges. DaI er tom, bruger vi bloten operation for at konstatererdette. Denne operation, som vi kaldernuloperationtilføjer vi O = 1. Vi øger nu mængdenI medet tilfældigt tal sa I = i1. For at undersøge om summen af et eller flere af elementerne iI erlig medL, behøver vi kunen operation, nemlig sammenligningen medi1. Endvidere bruger vienoperation for at konstatere, at der ikke er flere elementer at sammenligne med(nuloperation). Sa alti alt 2 operationer. Vi øgerO = 1, 2. Igen forøger vi mængdenI saledes atI = i1, i2. Hersammenligner vi førstL medi1 og derefteri2 og til sidst summen af disse, hvilket betyder at vi harbrugt 3 operationer plus vores nuloperation. MængdenO er nu1, 2, 4. Endnu en gang lægger vi etekstra element iI = i1, i2, i3. Vi sammenligner nuL medi1, i2, i3, i1+i2, i1+i3, i2+i3, i1+i2+i3 hvilket vil sige7 sammenligninger samt nuloperation⇒ O = 1, 2, 4, 8. Som det fremgar afO,kan vi begynde at se en sammenhæng mellem antallet af elementer iI og det antal opretationer derudføres. For det første ser vi, at antallet af operationer fordobles hver gang der tilføjes et nyt elementtil I. For det andet ser vi at summen af elementerne iO + 1 er lig med det antal operationer der skaludføres, narI øges med et element. Vi kan dermed skriveO som1, 2, 2 ·2, 2 ·2 ·2 = 1, 2, 22, 23.Hvis vi indsatte et nyt element iL ville antallet af operationer kunne skrives som23 · 2 = 24 ellerved finde summen af elementer iO og lægge1 til. dvs. |O| + 1 = (1 + 2 + 22 + 23) + 1. Da vinu har 2 metoder, der begge finder antal operationer nar L øges med en, ma følgende være sandt:(1 + 2 + 22 + 23) + 1 = 24. Det er meget nærliggende at tro, at vi her har 2 metoder vi generelt kanbruge nar antal operationer skal findes. Vi fremfører derfor en sætninger:

Sætning 8.2.1Lad Mn være en mængde medn heltal, ogL være et heltal. Undersøg herefter om der udfraaddition af elementer iMn kan findes en sum= L. Det antal sammenligninger der maksimaltskal benyttes kan da findes vha.P (n):

P (n) = 2n

∨P (n) = (1 + 21 + 22 + . . . 2n−1) + 1

54

Page 58: rsa-kryptering

Bevis:(Induktionsbevis)

Basisskridt:P (1) = 21 = (1) + 1 = 2. Hvilket er korrekt daL skal sammenlignes med elementet iM1 samt udføre en nuloperation. Dvs.P (1) er sand for begge ovennævnte metoder.

Induktionsskridt: Vi antager nu atP (k) er sand:P (k) = ((1 + 22 + . . . + 2k−1) + 1) = 2k.

Vis atP (k + 1) = 2k+1.

P (k + 1) = (1 + 22 + . . . + 2k−1 + 2k) + 1

= (1 + 22 + . . . + 2k−1) + 2k + 1

= ((1 + 22 + . . . + 2k−1) + 1) + 2k

= (2k) + 2k

= 2 · 2k

= 2k+1

¤

Vi har nu bevist, at hvisP (k) er sand, sa erP (k + 1) det ogsa. Derfor kan vi nu konkludere, attidskompleksiteten ved knapsack-problemet erO(2n).

8.2.2 Faktorisering

Vi vil nu komme ind pa tidskompleksiteten, ved forskellige faktoriseringsmetoder. Ved alle denævnte metoder tage vi udgangspunkt i heltalletn som er et produkt af to primtalp og q.

Udtømningsmetode - brute forceSkal vi faktorisere heltalletn vha. af denne metode, ma vi dividere alle positive heltal> 1 og≤ nop i n. Dvs. i værste tilfælde vil antal divisioner op in væren − 1. Lader vi n fordoble, dvs.vi tilføjer en ekstra bit, ma antallet af divisioner ligeledes fordobles. Rent trivielt kan vi sa se, atantallet af divisioner kan betegnes som en eksponentiel funtion afn, nemlig2n−1. Af sammearsagma udtømningsmetoden have tidskompleksitetenO(2n).

Kvadratrod nSom nævnt under afsnittet7.3kan vi faktoriserern, ved at dividerer alle primtal≤ √

n op i n. Menda der ikke findes en fastdefinert afstand mellem 2 primtal, og da det kan være svært at finde detnæste primtal vi skal dividerer med, er det ligeledes svært at male kompleksiteten ved denne metode.Tager vi udgangspunkt i et mindren kender vi muligvis alle de primtal mindre en

√n vi skal dividere

op i√

n. Men fordobler vin, er det ikke givet at antal divisioner ligeledes dobles. Dette skyldes somsagt, at vi ikke kan vide hvormange primtal der er mellem

√n og

√2 · n. Samtidigt kann nu være

blevet sa stor, at vi slet ikke kender alle primtal op til√

2 · n. Dette betyder at vi ligeledes skal brugetid pa finde det næste primtal, hvilket naturligvis ogsa vil fa indflydelse pa tidskompleksiteten veddenne metode.

55

Page 59: rsa-kryptering

For at give en indikation af i hvilken retning kompleksiteten bevæger sig, nar en ekstra bit tilføjes tiln, har vi udarbejdet et eksempel.

Eksempel 8.2.1Vi har tilfældigt valgt et heltaln = 31 som i binær form kan skrives som11111. Herefter vil vilægge en bit til og se hvorledes at antallet af divisioner ændrer sig.

n binær n√

n Antal primtal<√

n

31 11111 5,56 362 111110 7,87 4124 1111100 11,14 5248 11111000 15,75 6496 111110000 22,27 8992 1111100000 31,50 111984 11111000000 44,54 143968 111110000000 62,99 187936 1111100000000 89,09 2415872 11111000000000 125,98 3031744 111110000000000 178,17 4063488 1111100000000000 251,97 54126976 11111000000000000 356,34 71253952 111110000000000000 503,94 96507905 1111100000000000000712,67 127

Vi kan udfra ovenstaende tabel konkludere, at nar en ekstra bit tilføjes, sa stiger√

n med(√

62√31−1) ·

100 ≈ 41, 42%. Men derimod er det svært at sige noget specifikt om udviklingen af antal primtal<√

n. Vi har skitseret denne udvikling i figur11, kan ses pa næste side.

56

Page 60: rsa-kryptering

Figur 11:Udviklingen i antal divisioner, narn tilføjes en bit

¤

Vi er naturligvis klar over, at vi ikke kan drage konklusioner pa baggrund af dette korte eksempel.En beregning af kompleksiteten, ville kræve en dybdegaende analyse af metoden der samtidig villeinddrage den ekstra faktor mht. problemet med at finde det næste primtal i rækken. Men eksempletkan dog indikere, at der er tale om en eksponentiel udvikling, hvilket vi rent logisk ogsa ma formode,da RSA kryptering ellers ville kunne brydes i polynomiel tid.

Fermats metodeVi har ikke foretaget en analyse af denne faktoriseringsmetode og kan derfor ikke konkludere nogetom tidskompleksiteten. Endvidere har vi ikke været i stand til at finde eksterne oplysninger derkunne afhjælpe dette problem. Men som vi nævnte underkvadratrod nmetoden, ma vi ligeledesformode at Fermats metode ikke er bedre end eksponentiel kompleksitet.

Pollard p-1 metodeVi har ligelede ikke foretaget dybdegaende analyse af denne metode, men har istedet læst os fremtil, at metoden har en kompleksitet pa O(p′) hvor p′ er den største primfaktor i faktoriseringen afn [WWWRSAP]. Forestiller vi os, atn fordobles, vil det skyldes at entenp eller q ligeledes erfordoblet, eller at de begge blevet forhøjet. Da vi beskæftiger os med ”worst case scenario”ma enfordobling afn betyde en fordobling af største primtalp hvorfor kompleksitetenO(p′) ma væreeksponentiel.

57

Page 61: rsa-kryptering

8.2.3 Iterationsangreb

Ud fra John Friedlaners artikel publiceret i ”Mathmatics of Computation”(jf). [WWWSIAM], bevis-er han, at iterationsangreb ikke er bedre end brute force. Derfor vil vi, uden at foretage egne analyserog beregninger, konkludere at tidskompleksiteten er eksponentiel.

58

Page 62: rsa-kryptering

9 NP

Vi vil nu tale om en speciel form for kompleksitet kaldet ”Nondeterministic Polynomial”, ogsaforkortet NP, først formaliseret af Ronald Fagin i 1970. Mere interessant er dog formaliseringenaf NP-Fuldstændige problemer af Stephen Cook i 1971, i en verdensberømt artikel ved navn ”TheComplexity of Theorem Proving Procedures”. Denne problemstilling, og hvorfor det er interessantog hvordan det forholder sig til RSA kryptering, vil vi beskrive i nærmere detalje i det følgendeafsnit.

9.1 Turing maskinen

For at kunne beregne visse problemer er det hensigtsmæssigt først at snakke om Turing maskiner.Turing maskinen blev udtænkt af Allan Turing i 1936. Vores beskrivelse af Turing er skrevet pabaggrund af [MS97].

Definition 9.1.1Man kan definere en Turing maskine som en teoretisk, abstrakt modellering af en maskine. En Turingmaskine er en meget præcis model af en computer, og kan gøre alt hvad en almindelig computer kangøre. Turing maskinen bestar først og fremmest af et uendeligt langt band, som er opdelt i celler.Hver celle kan indeholde præcis 1 symbol. Turing maskinen bestar endvidere af et skrive/læse hoved,som kan bevæges over cellerne 1 ad gangen. Desuden bestar Turing maskinen af en kontrol enhed,som bestemmer den næste handling, og samtidig holder styr pa hvilken tilstand den er i. ¤

Der er kun et bestemt antal tilstande maskinen kan være i. Den næste handling kan enten være:

• Skrive et symbol i den nuværende celle.

• Flytte hovedet til højre eller venstre.

• Stoppe

Maskinen vil fortsætte med at beregne indtil den beslutter sig for at producere et resultat. Vedat give maskinen specielle ”accepteret”eller ”afvist”tilstande, kan man herved fa maskinen til atstoppe og give et resultat af enten ”accepteret”eller ”afvist”. Hvis ikke maskinen nar til en ”ac-cepteret”/”afvist”tilstand, vil maskinen fortsætte forevigt, som ved ”Halting problemet”(jf.9.1.4).

For at give et bedre overblik over hvordan en Turing maskine ser ud, kan man illustrere den som visti figur 12. t illustrerer en tom celle.

1 0 1 0 t t. . .

½¼

Kontrol enhed&

Figur 12:Illustration af en Turing maskine

59

Page 63: rsa-kryptering

Der findes mange forskellige typer af Turing maskiner. De to vi koncentrerer os om her er determin-istiske og en Nondeterministiske Turing maskiner.

Definition 9.1.2At Turing maskinen er deterministisk betyder at dens næste skridt er bestemt af resultatet af detforegaende skridt, og samtidigt kun tillader et skridt ad gangen. En deterministisk Turing maskineanvendes til at løseP problemer i polynomiel tid (jf.definition9.2.2). ¤

Definition 9.1.3At Turing maskinen er nondeterministisk betyder at den har mere enden mulighed for at tage detnæste skridt, og dermed komme frem til mere endet resultat. Dvs. den gætter sig frem til en løsning.Den beregner det ved at bruge alle mulige kombinationer. En nondeterministisk Turing maskineanvender man til at løseNP problemer i polynomiel tid (jf.definition9.2.5). ¤

Eksempel 9.1.1Lad os nu tage en Turing maskine og kalde denM1. Vi vil prøve at teste om et givet input er en delaf:

B = w#w|w ∈ 0, 1∗Turing maskinens opgave er nu at sammenligne symbolerne pa hver sin side af# symbolet. Dettegøres ved at flytte hovedet frem og tilbage over bandet, læse og derefter sammenligne om sym-bolerne er ens. For at holde styr pa hvilke felter den allerede har undersøgt, kan man indsætte ettjeksymbolx, som fortæller maskinen at symbolet i denne celle er tjekket og accepteret. Hvis allefelterne er krydset af, betyder det at maskinen med succes har sammenlignet alle symboler og ergaet ind i en ”accepteret”tilstand og stopper. Hvis maskinen undervejs er løbet ind i to symboler,som ikke er sammenlignelige gar maskinen i en ”afvist”tilstand og maskinen stopper.Her er en beskrivelse af de trin Turing maskinen gar igennem nar den sammenligner symbolerne.

1. Tjek om inputtet har et# symbol. Hvis ikke, ved maskinen ikke hvad den skal sammenligneog maskinen gar i ”afvist”tilstand og stopper.

2. Kør frem og tilbage pa bandet og tjek om symbolerne pa hver side af# symbolet er ens. Hvisikke disse er ens, skal maskinen ga i en ”afvist”tilstand og stoppe.

3. Nar alle symbolerne pa venstre side er krydset af, tjek da om der er flere symboler pa højreside. Hvis dette er tilfældet skal maskinen ga i ”afvist”tilstand og stoppe. Hvis der derimoder en blank celle skal maskinen selvfølgelig ga i ”accepteret”tilstand da sammenligningen varsuccesfuld.

¤

60

Page 64: rsa-kryptering

For at give et bedre overblik pa forløbet kan man illustrere det som vist i figur13.

−→1 1 1 0 0 0 # 1 1 1 0 0 0 t . . .

x−→1 1 0 0 0 # 1 1 1 0 0 0 t . . .

x 1 1 0 0 0 # −→x 1 1 0 0 0 t . . .

−→x 1 1 0 0 0 # x 1 1 0 0 0 t . . .

x −→x 1 0 0 0 # x 1 1 0 0 0 t . . .

. . .x x x x x x # x x x x x −→x t . . . Accepteret

Figur 13:Gennemgang afM1

Halting Problemet

Dog er der visse problemer Turing maskinen ikke er i stand til at løse, sa om ”Halting problemet”.

Definition 9.1.4Kort kan man beskrive Halting problemet, som at man ikke kan skrive et program der kan beregne,om et andet program nogensinde vil stoppe. ¤

Eksempel 9.1.2Fx. kan man illustrere Halting problemet vha. en algoritme

public String Halt(String s=”nej”)String str = s;if(str == ”nej”)

str = Halt(str);return str;

Algorithm 1: En uendelig løkke som beskriver Halting problemet

1. En metode Halt far som argument en string s

2. str sættes lig s.

3. Hvis str er lig ”nej”sæt str lig returværdien af en ny instans af Halt.

Man kan hurtigt se at metoden her aldrig ville kunne stoppe. Eller rettere, vi ville aldrig kunne findeud af, om metoden pa et tidspunkt, ville returnere svaret ”ja”. ¤

61

Page 65: rsa-kryptering

9.2 Klasserne

9.2.1 P klassen

Definition 9.2.1Vi definerer en algoritme som en procedure, der kan løse et problem. ¤

Definition 9.2.2P -klassen er en klasse af problemer hvor der findes en algoritme, som kan løse problemet i poly-

nomiel tidO(nk), hvork er en konstant ogn er variablen. ¤

Disse problemer siges at være medgørlige problemer, og algoritmer til at løse problemer i klassenP siges at være effektive. Dvs. de realistisk set kan løses inden for en overskuelig tid, ogsa selvominputtet er forholdsvis stort. Endvidere kan man definereP som klassen af problemer, som kanaccepteres af en deterministisk Turing maskine.

Et eksempel pa etP problem, altsa et problem som kan løses i polynomiel tid, er Minimum SpanningTree problemet.

Definition 9.2.3Minimum Spanning Tree (MST ), er et træ, som er en delmænge af kanter i en vægtet graf, sombesøger alle punkter, og hvis totalvægt er minimal. ¤

Definition 9.2.4En cycle er en tur, gennem en graf, som starter og ender i det samme punkt, og inkluderer andrepunkter i grafen højsten gang. ¤

For at finde etMST kan man anvende Kruskals algoritme (jf. [WWWCS]). Maden den finder detpa er som følger: Først spørger vi os selv: Given en vægtet grafG1 og en parameterk > 0, harG1

et spanning tree med vægt5 k?

1. SætG1 = E, hvorE er mængden af alle kanter, ogG2 = ∅.2. vælg en kante i G1 med minimum vægt, og check ome laver en cycle iG2

3. Hvis ja, fjerne fra G1

4. Hvis nej, flyte fra G1 til G2

5. HvisG1 = ∅ stop, ellers ga til nr. 2.

Bevis:Vi kører Kruskals algoritme og finder enMST G2 ud fra G1 og beregner vægten afG2 w(G2).Hvis k 5 w(G2), sa kan vi konkludere atG2 ∈ P , da Kruskals algoritme har kompleksitetO((e +n) log n), og samtidig konkludere atMST kan løses i polynomiel tid. ¤

62

Page 66: rsa-kryptering

Figur 14:Tabel der viser gennemgangen af Kruskals algoritme

9.2.2 NP klassen

Definition 9.2.5KlassenNP , er problemer som kan tjekkes, af en algoritme, i polynomiel tid, men hvor det ikke

vides om en sadan algoritme eksisterer. Det vil altsa sige at man ikke kan finde en hurtig løsning,kun at enhver formodet løsning kan blive verificeret hurtigt givent et certifikat (jf.definition9.2.9).NP er klassen som en Nondeterministisk Turing maskine accepterer i polynomiel tid. ¤

Overordnet kan man beskrive det med en labyrint. For at komme ud af labyrinten, ma man undersøgealle mulige veje, og følge dem, for at finde ud af hvilken vej der er den rigtige. Men, hvis nu vi tegnerden rigtige vej ud af labyrinten, sa er det jo nemt at tjekke, om det sa ogsa er den rigtige. Et eksempelpa etNP -Fuldstændig problem kan være Traveling Salesman problemet.

Definition 9.2.6Traveling Salesman Problemet (TSP ), har en Hamiltonian cycle, og minimerer samtidig omkost-

ningerne af kanter, i en graf.(jf. [WWWNIST] ) ¤

Er P = NP

Spørgsmalet er nu omP = NP . Altsa omNP problemerne rent faktisk kan løses i polynomieltid, vha. af en metode der endnu ikke er kendt. For de fleste er det nærliggende, at tro, dette ikke ertilfældet. Men problemet her er, at det endnu ikke er bevist, at NP ikke kan løses i polynomiel tid.

9.2.3 NP -fuldstændige problemer

Der er en samling af vigtige problemer, hvor der ikke findes en effektiv algoritme som kan løse dem.Cook/Levin viste at disse svære problemer essentiel alle er ekvevilente, og er de sværeste problemeri kompleksitetsklassen NP. For at kunne forsta NP -fuldstændige problemer er der 2 begreber somer vigtige:

63

Page 67: rsa-kryptering

BeslutningsproblemEt beslutningsproblem er centralt nar det kommer tilNP .

Definition 9.2.7Et Beslutningsproblem defineres som et problem med et JA eller NEJ svar. Et beslutningsproblemspørger om der er en løsning med en bestemt karakteristik. Fx. Spørger man ”er der en Hamiltoniancycle (jf. definition9.2.8) med en pris mindre end et bestemt beløbk?”Dette betegnes ogsa som etJA/NEJ spørgsmal og er samtidigt etNP -Fuldstændig problem. ¤

Definition 9.2.8En Hamiltonian cycle er en cycle, i en graf, som besøger alle punkter præcisen gang. ¤

Certifikat

Definition 9.2.9Et certifikat er et slags løsningsforslag, sa korrektheden af et beslutningsproblem hurtigt kan bliveundersøgt. Fx. kan vi tage udgangspunkt i en Graf.

• For enhver grafG der har egenskabenP , vil grafenG′ være et certifikat (dvs. Der findes enløsningG′ hvisG kan løses i polynomiel tid).

• GrafenG har egenskabenP hvis, og kun hvis, grafenG′ har egenskabenP (dvs.G kan kunløses i polynomiel tid, hvisG′ kan løses i polynomiel tid).

¤

GrafenG ∈ NP og grafenG′ ∈ NP -fuldstændig. Lidt simplere kan man sige at: finder man enløsning forG′ i polynomiel tid, har man ogsa en løsning forG i polynomiel tid.

Definition 9.2.10Et beslutningsproblemA erNP -Fuldstændig hvis det er iNP og hvis alle andre problemer iNPkan reduceres til det. Et problemA ∈ NP -Fuldstændig hvis:

1. A ∈ NP

2. B 6 A, ∀B ∈ NP

¤

NP -fuldstændige problemer siges at være de sværest problemer iNP , forstaet pa den made, atdet er dem som sandsynligvis ikke tilhørerP . Grunden til dette er, at hvis man kunne finde enpolynomiel algoritme pa bareetNP -Fuldstændig problem, ja sa kan man bruge denne algoritme til,at løse alleNP problemer i polynomiel tid.

64

Page 68: rsa-kryptering

9.2.4 NP -hard klassen

Definition 9.2.11Et NP -hardt problem er klassen af problemer der indeholder alle problemerH, sadan at for allebeslutningsproblemerA ∈ NP kan blive reduceret tilH i polynomiel tid. Dvs. atNP -hard kunopfylder punkt 2 i definition9.2.10 ¤

Figur 15:Illustration af hvordanP, NP,NP -Fuldstændig ogNP -hard forholder sig til hinanden

9.3 Reduktion

Formelt erNP -fuldstændighed defineret som ”reduktion”, som egentlig bare er en kompliceretmade at sige, at et problem er nemmere end et andet. vi siger atA er ”nemmere”endB, skrevetsomA < B, hvis vi kan lave en algoritme som løserA, som bruger en lille del af kald til en subru-tine for B. Sa hvisA < B og B er i P , sa erA ogsa. Vi kan lave en polynomieltids algoritme forA ved at udvide subrutine kaldene, ved at bruge den hurtige algoritme forB. Sa ”nemmere”i dennesammenhæng betyder, at hvis et problem kan blive løst i polynomiel tid, sa kan det andet ogsa. Deter muligt for algoritmen forA at være langsommere end den forB, selv omA < B. Som et eksem-pel kan vi kigge pa Hamiltonian cycle problemet. Har en given grafG en cycle som besøger hverpunkt præcis een gang? Her er en løsning, ved at bruge den ”længste tur”som en subrutine:

for hver kant(u, v) ∈ Ghvis der er en simpel tur af længde n-1 frau til vreturn ja // tur + kant laver en cycle

return nej

Algorithm 2: Find ”længste tur”subrutine

Denne algoritme laverm kald til en ”længste tur”rutine, og gørO(m) arbejde uden for disse subru-tine kald, sa det viser at en Hamiltonian cycle< ”længste tur”. Den viser ikke at Hamiltonian cycleer i P , fordi vi ikke ved hvordan vi løser ”længste tur”subproblemer hurtigt.

65

Page 69: rsa-kryptering

9.4 Hvordan beviser manNP -fuldstændighed i praksis?

De fleste beviser afNP -fuldstændighed er baseret pa, at hvisA < B og B < C, sa erA < C.Husk at disse relationer er defineret som eksistensen af en algoritme som kalder subrutiner. Givenen algoritme der løserA med en subrutine forB, og en algoritme der løserB med en subrutine forC, kan vi bare bruge den anden algoritme til at udvide subrutine kaldene af den første algoritme, ogfa en algoritme som løserA med en subrutine forC.

Som en konsekvens af dette, hvisA erNP -Fuldstændig,B er i NP , ogA < B, sa erB ogsaNP -Fuldstændig. I praksis er det den made vi beviserNP -fuldstændighed. Vi starter medet specifiktproblem, som vi beviser erNP -Fuldstændig, og vi sa beviser, at det er nemmere end sa mange andreproblemer, som sa ogsa ma væreNP -Fuldstændig.

Sa fx. siden Hamiltonian cycle problemet er kendt som at væreNP -Fuldstændig, og at Hamiltoniancycle problemet< ”længste tur”, sa kan vi konkludere at ”længste tur”ogsa erNP -Fuldstændig.

9.5 RSA ogNP -fuldstændighed

Et centralt punkt i ”RSA”kryptering er (jf.7.3) multiplikation af to store primtal, der danner basisfor generering af nøgler. Ønsker man at bryde RSA er man nødsaget til at finde disse to primtal.Brydning af denne form for kryptografi, dvs. faktoriseringen afpq (jf. 6.11), kan ogsa tænkes somet NP problem, da denne faktorisering ikke kan ske i polynomiel tid. Givet et sammensat tal(pq),kan man prøve at faktorisere dette tal ned i mindre tal, dvs. ned tilp og q. Jf. 8.2.2, som fortæller atdenne faktoriseringen er eksponentiel, kan vi konkludere at problemet ligger iNP , herunder, bruteforce, iterationsangreb og

√n metoden. Samtidigt kan man hurtigt teste denne faktorisering, ved at

gange faktorerne sammen igen, og igen konkludere at dette problem ligger iNP . En mere detaljeretbeskrivelse for at bevise dette, kan være ved at bevise det vha. af en Turing maskine. Dette bevis ermeget omfattende, og vi vil ikke komme ind pa det her, men det vil bevise hvorfor Turing maskinerer et godt redskab til at bevise det. At finde en faktorisering synes at være meget svært, og vi trorikke at det ligger iP , men som sagt iNP . Og derfor er sandsynligvis umuligt at løse i polynomieltid.

66

Page 70: rsa-kryptering

10 RSA Konklusion

Vi har i dette projekt beskæftiget os med RSA algoritmen. RSA-kryptering er et public-key krypter-ings system, dvs. modtager og afsender benytter sig af forskellige nøgler, hvilke er hinandens in-verse. Vi har gennem projektet opnaet en god viden omkring det matematiske grundlag for RSA,samt hvilke problemstillinger der findes for kryptering generelt. Vi har bla. erfaret hvilke forudsæt-ninger som skal opfyldes, for at kunne lave et brugbart krypteringssystem. Gennem projekt periodenhar vi faet svar pa mange af de spørgsmal, vi pa forhand havde omkring RSA. Den oparbejdede v-iden gav os et godt grundlag, for at undersøge sikkerheds niveauet i RSA kryptering. Efter at havearbejdet med RSA, sikkerheden bag, faktoriseringsmetoder og kompleksitet ma vi konkludere atRSA er stort set ubrydelig, i de tilfælde hvor man benytter sig af to meget store primtal. Jo størreprimtal man bruger, jo mere sikkert er RSA systemet. Vi har set pa forskellige metoder til at brydeet RSA-krypteringssystem. Bla. har vi gennemgaet nogle forskellige faktoriseringsmetoder, samt it-erationsangreb. Disse har alle eksponentiel tidskompleksitet og er derfor placeret i NP, hvorfor deikke udgør effektive algoritmer, der kan bryde RSA.

Der er ingen tvivl om at computerne dag for dag bliver hurtigere og mere effektive, hvorfor vi ogsaser at kravene til primtallenes størrelse stiger i takt med denne udvikling. Hvis det en dag lykkes atudvikle en algoritme der kan faktorisere store tal i polynomieltid, vil det skabe en stor sikkerhedsbristi dagens informationssamfund. Sa spørgsmalet er om det er i nogens interesse, at finde en sadanalgoritme. Man kan formode at teknikken bag en sadan algoritme, vil kunne genbruges i andresituationer, saledes at andre beregningsmæssige svære problemer evt. ville kunne løses pa en mereeffektiv made. Menet er sikkert, den umiddelbarte reakion fra verdenssamfundet ville være panik.

11 Gruppe Konklusion

Det er første gang, vi arbejder sammen i denne gruppe. Vi mener derfor at det kunne være interes-sant, at lave en konklusion for forløbet, som vi kan drage nytte af i senere projekter. Vi havde frastarten ikke meget tid, til at sætte os ind i al det nye litteratur og samtidig fa lavet et færdigt projekt.Vi valgte derfor relativt tidligt i perioden, at uddelegere enkelte emner. Efterfølgende har vi holdtmøde minimum et par gange om ugen. Pa disse møder har vi præsenteret det vi hver især har arbejdetmed. Vi mener at denne løsning har fungeret udemærket. Det ville dog i nogle situationer være mereeffektivt, at arbejde flere om den samme opgave da vi alle gerne villle have haft en sparringspartnerat trække pa. Sidst i projektperioden, er vi løbet ind i sma tidsmæssigeproblemer. Vi vil i senere pro-jektforløb kunne sikre os i mod dette, ved at udarbejde tidsplaner, der hele tiden vil blive evalueret.Alt i alt har vi været godt tilfredse med den made hvor pa tingene har fungeret og det produkt derblev skabt. Vi føler at vi har faet stort udbytte af de diskussioner vi har haft med hinanden samt medvores vejleder. Vi kan derfor konkludere at projektforløbet og gruppe samarbejdet har fungeret efterforventning og at det bestemt ikke er sidste gang vi udarbejder projekt sammen.

67

Page 71: rsa-kryptering

Litteratur

[KHR03] Kenneth H. Rosen.Discrete Mathematics and Its Applications.McGraw-Hill, New York,femte udgave, 2003, ISBN 0-07-119881-4.

[PLK97] Peter Landrock & Knud Nissen.Kryptologi - fra viden til videnskab.ABACUS, førsteudgave, 1997, ISBN 87-89182-62-6.

[PLK92] Peter Landrock & Knud Nissen.Kryptologi ABACUS, første udgave, 1992, ISBN 87-89182-24-3.

[WWWP] Indian Institute of technology kanpur. Prof. Manindra Agarwal, m.fl.Primes in P. Beskrivelse af algoritmen og matematikken bag kan ses her:http://www.cse.iitk.ac.in/news/primality.html

[WWWLC] Larry W. Cusick, California State University, Fresno.How to write proofs.http://zimmer.csufresno.edu/ larryc/

[WWWDW] David Wagner, Assistant Professor, University of California, Berkely.Teaching notes.http://www.cs.berkeley.edu/ daw/teaching/cs70-f03/Notes/

[RP] Ron Penton.Data Structures for Game Programmers. Premier Press, 2003, ISBN 1-931841-94-2

[RKNT] Ramanujachary Kumanduri m.fl.Number Theory with computer applications.PrenticeHall, Upper Saddle River, New Jersey. ISBN 0-13-801812-X.

[CDK] George Coulouris, Jean Dollimore, Tim Kindberg.Distributed systems Concepts and De-sign. Addison Wesley, 2001, ISBN 0201-61918-0

[WWWSSL] http://www.viable-herbal.com/secure/ssl.htm

[WWWO] http://www.nist.gov/dads/HTML/bigOnotation.html

[WWWUTM] http://www.utm.edu/research/primes/notes/20996011/index.html

[WWWRSA] http://www.rsasecurity.com

[WWWRSAP] http://www.rsasecurity.com/rsalabs/faq/2-3-4.html

[WWWPTIF] http://web.comlab.ox.ac.uk/oucl/work/richard.brent/pd/rpb120.pdf

[WWWWIKI] http://en2.wikipedia.org

[WWWNIST] http://www.nist.gov

[MS97] Michael Sipser: Introduction to the theory of Computation (1997).

[WWWCS] http://www.cs.ust.hk/faculty/golin/COMP271Sp03/Notes/MyL11.pdf

[WWWSIAM] http://www.siam.org/siamnews/03-01/cycling.pdf

[WWWGIM] http://www.gimpster.com/danish/mersenne/

68