KRYPTOLOGI ( Litt. Peter Landrock & Knud Nissen : Kryptologi) 1. Klassiske krypteringsmetoder 1.1 Terminologi klartekst kryptotekst kryptering dekryptering 1.2 Monoalfabetiske kryptosystemer 1.3 Additive kryptosystemer 1.4 Kryptoanalyse af monoalfabetiske kryptosystemer. Der er arbejdet med programmet Kryp2log på datamaskinerne. Ved hjælp af frekvensanalyse på bogstaver, bigrammer og trigrammer er der muligt bestemme dekrypteringsnøglen. 1.5 Polyalfabetiske kryptosystemer Forskellige alfabeter vælges ved hjælp af et nøgleord som repeteres under klarteksten ( Vigenère system Ved anvendelse af polyalfabetiske systemer bliver en kryptoanalyse baseret på frekvensanalyse stort set umulig. Hvis man imidlertid har kendskab til perioden ( nøgleordets længde), er man dog i stand til at bryde koden. Afsnit 1.6 om kryptoanalyse af et polyalfabetisk kryptosystem er oversprunget. I dette afsnit er omtalt to metoder til bestemmelse af perioden ( Kasiski-test og en metode udviklet af kryptologen W.Friedman ) 1.7 Enigma, Hagelin og Purple Historisk afsnit - læses selvstændigt. 2. Moderne krypteringsmetoder. 2.1 Konventionelle systemer. Et konventionelt system har vi, når krypterings- og dekrypteringsalgoritmen i princippet er den samme ( kender man den ene, kender man også den anden). Eksempler på sådanne er de tidligere nævnte alfabetiske systemer. Det mest udbredte krypteringssystem i dag - DES, som bl.a. anvendes i forbindelse med Dankort og Homebank.
2.2 Behov for datasikkerhed I dette afsnit er gennemgået de forskellige krav man må stille til moderne kryptosystemer. Konfidentialitet - det skal være svært eller umuligt at bryde koden. Autenticitet - modtager skal være sikker på, hvem afsenderen er. Meddelelsen skal have en digital signatur. Integritet - Hvis udenforstående forandrer meddelelsen, skal modtageren kunne se det. 2.3 Public Key kryptosystemer. I et Public Key system er der to forskellige nøgler. Det forudsættes at alle der deltager i kommunikation er i besiddelse af en offentlig nøgle og en hemmelig nøgle. På side 26 er kravene til et Public Key system anført. I afsnit 2.4 er beskrevet hvad man forstår ved et beregningsmæssigt svært problem. Afsnittet er oversprunget, men det kan kort beskrives som et problem, det vil tage en datamaskine et uoverskueligt antal år at løse. 3. Talteori 3.1 Divisibilitet Definition på divisibilitet Simple sætninger ang. divisibilitet ( sætning 3.2 ) Hovedsætningen om divisibilitet: ( sætning 3.3 ) Ethvert helt n tal kan skrives som n = qd + r, d > 0, 0 # r # d r kaldes den principale rest ved division med d Afsnittet de EDB - tekniske hjælpemidler springes over (fra nederst side 31 og afsnittet ud) 3.2 Fælles divisorer Største fælles divisor for hele tal a og b betegnes med (a,b) Simple sætninger om største fælles divisor.(sætning 3.5) Hovedsætningen om største fælles divisor: (sætning 3.6) (a,b) er den mindste positive linearkombination af tallene a og b. bevis: ( lidt anderledes end i bogen) Lad L være mængden af linearkombinationer L ={ sa + tb s,t ε Z } og sæt d = (a,b) Lad x være det mindste positive tal i L ( som klart indeholder både negative og positive tal samt nul).
Vi skal vise at d = x Da d a og d b har vi at d x ( sætning 3.2 (4)) Da både d og x er positive fås da at d #x For at vise at x # d benytter vi et indirekte bevis: Antag at x > d x kan ikke både gå op i a og i b, da det så vil være en fælles divisor i a og b der er større en største fælles divisor. Antag f.eks. at x ikke går op i a Det medfører at a kan skrives: a = qx + r hvor 0 < r < x så er r = a - qx = sa + tb for et sæt s,t ε Z Dette er en modstrid, da x jo er den mindste positive linearkombination af a og b. Dermed må x # d og da vi før viste at d #x er x = d Af denne sætning følger nu nogle vigtige sætninger: Q.E.D. Sætning 3.7 Hvis f a og f b gælder at f (a,b) Sætning 3.8 ( beviset overspringes) For ethvert helt tal m > 0 gælder, at (ma,mb) = m(a,b) Sætning 3.9 Hvis c ab og (c,b)=1 ( c og b er indbyrdes primiske) gælder, at c b. bevis: da c ab og c ac har vi ( sætning 3.7) at c (ab,ac) = a(b,c) = a Sætning 3.10 Euklids algoritme. Hvis a = bq + r hvor r er resten ved a divideret med b gælder, at (a,b) = (b,r) bevis: sæt d 1 = (a,b) og d 2 = (b,r) = (b,a-bq) Vi skal da vise at d 1 d 2 og d 2 d 1 Da d 1 b og d 1 a-bq (sætning 3.2 (4)) fås at d 1 d 2 Da d 2 b og d 2 a-bq +bq = a fås at d 2 d 1 Q.E.D. Euklids algoritme bruges til at finde største fælles divisor for to tal.
Hvis vi bruger algoritmen baglæns kan vi bestemme tal s og t således at (a,b) = sa + tb De to anvendelser er beskrevet på siderne 35 og 36. Det EDB-tekniske overspringes Begreberne er indøvet ved opgaverne 3.1,3.2,3.4,3.5 og 3.6 3.3 Primtal Definition af primtal Sætning 3.15 Hvis p er et primtal gælder, at p ab medfører at p a eller p b Hovedsætningen for primtal: (sætning 3.16) Ethvert helt tal større end en kan på entydig måde (på nær rækkefølgen) opløses i primfaktorer. Beviset er oversprunget. Historiske bemærkninger om primtal s. 38-40 3.4 Kongruenser og modulær aritmetik Definition 3.21 Lad a,b ε Z n ε N a siges at være kongruent med b modulo n hvis n a-b det skrives a b (mod n) Sætning 3.23 ( forkortningsreglen) Hvis ax ay (mod n) og (a,n) = 1 er x y (mod n) Definition Med a(mod n) betegnes den principale rest af a divideret med n. Simple regler for regning modulo n ( øverst side 41 ) bruges bl.a. til at udregne store potenser modulo n (bemærk at kan erstattes med =) Bevis for 3.24: sæt a = q 1 n + r 1 og b = q 2 n + r 2 hvor r erne er principale rester så er (a + b) (mod n) = (r 1 + r 2 )(mod n) = (a(mod n)+b(mod n) Q.E.D.
Definition Ved restklassen Z n forstås Z n = {0,1,2,...,n-1} Den delmængde af Z n der består af de elementer der er primiske med n betegnes med Z n * Z n * = {aε Zn \{0} (a,n)=1} Eulers φ-funktion φ(n) φ(n) = antallet af elementer i Z n * Hvis p er et primtal fås direkte at φ(p) = p-1 Sætning 3.28 ( om bestemmelse af φ(n) (uden bevis) Lad n ε Z og lad p 1,p 2,...,p r være de forskellige primfaktorer i n. Da er φ(n) = n(1-1/p 1 )(1-1/p 2 )...(1-1/p r ) Af sætningen får vi følgende vigtige resultat: Hvis p og q er primtal er φ(pq) = (p-1)(q-1) Bemærk at beregning af φ(n) v.h.a. formlen i 3.28 forudsætter kendskab til primtallene i n. Dette er et beregningsmæssigt svært problem hvis n er meget stor. Eulers sætning: (uden bevis) (sætning 3.33) Hvis (a,n) = 1 gælder, at a (n) 1 (mod n) Heraf fås Fermats lille sætning: ( sætning 3.34) Hvis p er et primtal og (a,p) =1 gælder, at a p-1 1 (mod p) Bevis: følger af Eulers sætning, idet φ(p) = p-1 når p er et primtal. 3.5 Inverse elementer Definition på inverse elementer i Z n : x ε Z n kaldes invers til a hvis ax 1 (mod n) Det inverse element til a betegnes med a -1 (mod n)
Sætning 3.39 Hvis (a,n) = 1 har a et inverst element i Z n Det inverse element er i så fald entydigt bestemt. Antag nemlig at ax 1 (mod n ) og ay 1 ( mod n). Så er er ax ay ( mod n ) og da (a,n) = 1 er x = y. Bemærk at der er 3 måder at bestemme a -1 ( mod n ) på. 1) at opskrive alle multiplikationer i Z n (normalt uoverkommelig) 2) at bruge Eulers sætning som giver a φ(n)-1 a 1 ( mod n ) ; dvs at a -1 = a φ(n)-1 (mod n ) ( denne metode er normalt beregningsmæssig svær ) 3) at bruge Euklids algoritme baglæns Teorien er blevet belyst ved opgaveregning: opg.3.7,3.13,3.16,3.18 ( ikke helt samme tal) 3.11 (2) er vist på tavlen. 3.6 Overspringes 4. RSA - Kryptosystemet 4.1 Konstruktion af RSA-systemet 1) Vælg to ( meget store primtal ) p og q. Sæt n = pq 2) Beregn φ(n) = (p-1)(q-1) 3) Vælg e så 0 < e < φ(n) og (e,φ(n)) = 1 4) Bestem d så ed 1 ( mod φ(n)) Parret (e,n) er den offentlige nøgle og (d,n) den hemmelige. Sætning ( Det virker!!) For alle m, hvor 0 < m < n gælder (m e ) d (mod n ) =(m d ) e ( mod n ) = m Beviset som følger senere i 4.3 når vi ikke. Eksempler på konstruktion kryptering og dekryptering
KRYPTERING - DEKRYPTERING: Kod først klarteksten som tal og inddel i blokke á n-1 cifre. Hvis m er et ciffer repræsenteret af en blok krypteres m som : c = m e ( mod n ) Dekrypteringen sker ved den hemmelige nøgle : m = c d ( mod n ) Selv med små primtal p og q kommer man ud for vanskelige beregninger i forbindelse med 1) bestemmelse af d 2) udregning af m e ( mod n ) Med en gemen lommeregner klares 1) bedst v.h.a Euklids algoritme. 2) kan gennemføres ved at omskrive e til en sum af potenser af 2 og bruge regnereglerne for potensopløftning modolu n. Det EDB-tekniske overspringes i 4.2. I stedet er der arbejdet med konstruktion, kryptering og dekryptering ved hjælp af et par små programmer lavet til lejligheden. 4.4 Sikkerheden i RSA - læses selvstændigt. 4.5 Hvordan bestemmer man store primtal - kort omtalt 5. Digital identifikation Kapitlet læses selvstændigt. Historien om Alice og Bob ( 5.3) forklarer på udmærket vis begreberne hemmeligholdelse, offentlig og hemmelig nøgle samt digital signatur.
Appendix til de interesserede: COMAL-program til kryptering ( m e mod n) 0010 PAGE 0020 CURSOR 5,10 0030 PRINT "Program til udregning af a^b (mod n)" 0040 PRINT 0050 INPUT " Indtast a:": a 0060 PRINT 0070 INPUT " Indtast b:": b 0080 PRINT 0090 INPUT " Indtast n:": n 0100 m:=a 0110 d:=b 0120 e:=1 0130 REPEAT 0140 c:=d/2 0150 d:=int(c) 0160 IF NOT c=d THEN 0170 e:=(e*m) MOD n 0180 ENDIF 0190 m:=(m*m) MOD n 0200 UNTIL c=0 0210 PRINT 0220 PRINT 0230 PRINT " ",a,"^",b," (mod ",n,")=";e