• No results found

Talteori och kryptering

N/A
N/A
Protected

Academic year: 2022

Share "Talteori och kryptering"

Copied!
17
0
0

Loading.... (view fulltext now)

Full text

(1)

Examensarbete i matematik, 15 hp Handledare: Martin Herschend

Examinator: Veronica Crispin Quinonez Augusti 2019

Department of Mathematics Uppsala University

Talteori och kryptering

Mohamed Hazem Hameshulansari

(2)
(3)

Sammanfattning. Detta arbete är en kort beskrivning av två al- goritmer i kryptogra, RSA och Die-Hellman Key Exchange. I det preliminära avsnittet presenteras nödvändig bakgrund i talte- ori. Vi har fokuserat speciellt på de elementära kunskaper inom talteori som krävs för att kunna förstå algoritmerna ordentligt, medan de senare avsnitten ger en bild som illustrerar hur algorit- merna fungerar matematiskt och hur hemligheter säkert kan delas mellan två olika personer med hjälp av krypteringsalgoritmer. Det

nns era olika sätt att kryptera, och två av de mest vanliga och användbara är RSA-algoritmen och Die- Hellman algoritmen som används för att skapa nyckelöverenskommelse. Implementaion av dessa algoritmer tas upp i det sista avsnittet.

Innehåll

1. Inledning 2

2. Elementär talteori 2

2.1. Grundläggande principer för heltalen 2

2.2. Kongruensräkning 3

2.3. Restsystem, reducerat restsystem och primitiva rötter 5

3. Kryptering 8

3.1. Die-Hellman-algoritmen 9

3.2. RSA-algoritmen 9

4. implementation av algoritmer 11

4.1. Die-Hellman-algoritmen 11

4.2. RSA-algoritmen 11

5. Praktiska tillämpningar 12

5.1. Exempel 12

5.2. Exempel 13

6. Bilaga 13

7. Slutsats 15

Referenser 15

1

(4)

1. Inledning

Talteori är en del av matematiken som inriktar sig på att studera heltal och primtal och deras egenskaper. Mängden primatal har stor be- tydelse inom kryptogra. Den tyska matematiken Carl Friedrich Gauss (1777-1855) sade, "Matematik är vetenskapens drottning och talteori är matematikens drottning." [1]. Inom den moderna matematiken har talteori fått ett större intresse bland annat på grund av att det nns många talteoriproblem som kan kopplas till verkligheten det vill säga att de är tillämpbara på era områden, bland annat kryptering. Där- för går vi igenom några begrepp inom talteori här i början innan vi behandlar kryptering.

2. Elementär talteori

I denna introduktion presenteras elementär talteori, vidare presente- ras några denitioner och satser som behandlar bland annat delbarhet, Euklides algoritm och divisionsalgoritimen. För bakgrund har [1] (sid.

11-40) använts.

2.1. Grundläggande principer för heltalen. I det här avsnittet introduceras en kort bakgrund som handlar om heltalen och primtalen och deras egenskaper.

Denition. Om vi har två givna heltal a, b där a > 0 så nns det två bestämda heltal q, r sådana att b = aq + r där 0 ≤ r < a , talet q kallas kvoten och r kallas resten. Vi skriver q = ab

och r = b − a · q.

När r = 0 så säger vi att b är delbart med a eller a delar b och vi skriver a | b. Metoden för att hitta q, r kallas divisionsalgoritimen. Den största gemensamma delaren till två tal a, b betecknas sgd (a, b). Om sgd (a, b) = 1så säger vi att talen a, b är relativt prima. Om b = 0 så är sgd (a, b) = a annars är sgd (a, b) = sgd(b − aq, a) = sgd(r, a) där r är resten när b divideras med a. Denna princip kallas Euklides algoritm.

Om c | a och c | b så gäller att c | sgd(a, b) samt c | (a + b). Med minsta gemensamma multipeln av a och b menar vi ett positivt heltal m som är delbart med a och b och som delar varje gemensam multipel av a och b. Vi betecknar m med mgm(a, b).

Teorem 1. Låt a, b vara två heltal som är relativt prima. Då nns det två heltal x, y sådana att ax + by = 1.

Bevis. Om vi antar att b > 0 så kan vi dividera om och om igen tills resten blir noll. Med andra ord ska vi utgå från divisionalgoritmen och Euklids algoritm. Då får vi att:

(5)

a = bq1+ r1; 0 < r1 < b b = r1q2+ r2; 0 < r2 < r1 r1 = r2q3+ r3; 0 < r3 < r2 r2 = r3q4+ r4; 0 < r4 < r3 ..

rn−2 = rn−1qn+ rn; 0 < rn < rn−1 rn−1 = rnqn+1+ rn+1; 0 = rn+1

Och på grund av att a, b är relativt prima och enligt Euklides algo- ritm kan vi skriva att

1 = sgd (a, b) = sgd (b, r1) = sgd(r1, r2) = sgd(r2, r3) = ... = sgd(rn−1, rn) = sgd(rn, rn+1) = sgd(rn, 0) = rn

Nu ska vi skriva uträkningarna baklänges:1 = rn = rn−2− qnrn−1 = rn−2− qn(rn−3− rn−2qn−1) = ... = xa + yb.  Teorem 2. Om sgd(a, b) = 1 och sgd(a, c) = 1 då gäller att sgd(a, bc) = 1.

Bevis. På grund av att sgd(a, b) = 1 och sgd(a, c) = 1 så nns det m, n, r och s för vilka am + bn = 1 och ar + cs = 1 enligt föregående Teorem och det medför att (am) + bn(ar + cs) = 1 . Det innebär att a(m + bnr) + bc(ns) = 1, det vill säga att sgd(a, bc) = 1.  Teorem 3. Om c | ab och sgd(b, c) = 1 då gäller att c | a.

Bevis. Vi känner till att sgd(b, c) = 1 så det medför att bm + cn = 1 enligt Teorem 1. Vi kan skriva att abm + acn = a men vi vet att c | ab och uppenbarligen stämmer det att c | ac så det medför att c | (abm + acn)det vill säga c | a(bm + cn) vilket innebär att c | a. 

2.2. Kongruensräkning. Kongruensräkning har visat sig vara ett av de mest användbara begreppen när det gäller kryptering och datasä- kerhet. Kryptering som hjälper till att skydda data såsom i kreditkorts- nummer när vi handlar online är beroende av kongruensräkning. Här ges en kort introduktionen till kongruensräkning som är ett område in- om elementär algebra. För bakgrund om kongruensräkning har [1] (sid.

68-124) använts.

Denition. Låt m vara ett positivt heltal. Vi säger att talet a är kongruent med talet b modulo n om n | (a − b). Att två heltal a och b är kongruenta modulo n skriver vi a ≡ b mod n. Vi tolkar det som att a och b har samma rest vid division med n.

(6)

Teorem 4. Låt a, b, c och d vara heltal då gäller

(1) om a ≡ b mod n och c ≡ d mod n då gäller att a + c ≡ b + d mod n,

(2) om a ≡ b mod n och c ≡ d mod n då gäller att ac ≡ bd mod n,

(3) om a ≡ b mod n så är ak≡ bk mod n, för alla heltal k ≥ 1.

Bevis. Vi känner till att a ≡ b mod n och c ≡ d mod n och det innebär att n | a − b och n | c − d och det leder till att a − b = nq och c − d = nr alltså a = b + nq och c = d + nr och det på sin tur leder till att a + c = b + d + n(r + q) vilket visar att a + c ≡ b + d mod n.

På liknande sätt kan vi komma fram till att ac ≡ bd mod n. Nu ska vi bevisa det allmäna fallet med hjälp av induktionbevis. Påståendet stämmer uppenbarligen för k = 1. Vi antar att påståendet gäller för k = m och visar att påståendet gäller för m + 1.  am+1 = aam ≡ bbm mod n ≡ bm+1 mod n. Det leder till att ak ≡ bk mod n, för alla heltal k ≥ 1.

Teorem 5. Låt c vara ett nollskilt heltal och a, b två heltal och låt d vara sgd(c, n) då gäller

(1) ac ≡ bc mod n om och endast om a ≡ b mod nd,

(2) om ca ≡ cb mod n och d = sgd(c, n) = 1 så är a ≡ b mod n.

Bevis. Vi har att ca ≡ cb mod n och det innebär att n | (ca − cb) det vill säga n | c (a − b) alltså (a − b)c = nr genom att dividera både sidorna med d får vi att (a − b)cd = ndr men vi känner till att sgd(c, n) = d och det kan skrivas sgd(dc,nd) = 1. Enligt Teorem 3 kommer vi fram till a − b = ndr det vill säga att a ≡ b mod nd.  Teorem 6. Låt m1, m2, ..., mr vara positiva heltal och sätt

m = mgm (m1, m2, ..., mr) då är följande påståenden ekvivalenta:

• a ≡ b mod mi; i = 1, 2, ..., r

• a ≡ b mod m.

Bevis. Om vi antar att a ≡ b mod mi så mi | (a − b). Det betyder att (a − b)är delbart med alla tal mi och det på sin tur betyder att (a − b) är delbart med den minsta gemmensamma multipeln m, det vill säga a ≡ b mod m. Om det omvänt och med tanke på att mi | m så från

a ≡ b mod mföljer att a ≡ b mod mi. 

Teorem 7. Låt n ≥ 1 vara ett heltal. För varje heltal a som är relativt primt med n gäller att det nns ett heltal x som löser ekvationer

ax ≡ 1 mod n.

(7)

Bevis. På grund av att a, n är relativt prima så nns det x, y för vilket 1 = xa+ynoch det betyder att 1−xa = yn det vill säga att n | (1 − xa)

och därmed gäller att 1 ≡ xa mod n. 

2.3. Restsystem, reducerat restsystem och primitiva rötter.

Innan behandlingen går vidare ska några begrepp klargöras, bland an- nat restsystem och reducerat restsystem som är väldigt viktiga för att deniera Eulers phi funktion som i sin tur kan användas i RSA- algoritmen. För bakgrund om detta har [1] (sid. 69-70) använts.

Denition. Låt a vara ett heltal. Mängden ¯a = {x ≡ a mod m} av alla heltal som är kongruenta modulo m med a kallas en restklass mo- dulo m. Vi säger att att en restklass ¯a är relativt prim med sin modul m om sgd(a, m) = 1.

Teorem 8. Om x och y tillhör samma restklass modulo m så är sgd(x, m) = sgd(y, m).

Bevis. Från x ≡ y mod m följer att m | (x − a) och m | (y − a) för något 0 ≤ a < m alltså är x = qm + a och y = pm + a vilket leder till

att sgd(x, m) = sgd(a, m) = sgd(y, m). 

Denition. Med ett fullständigt restsystem modulo m menar vi m stycken heltal som tillhör olika restklasser modulo m.

Mängden{0, 1, 2, ..., m − 1} är ett exempel på ett fullständigt rest- system modulo m. Antalet restklasser som är relativt prima med sin modul m betecknas φ (m) det vill säga att φ (m) är lika med antalet tal i intervallet [0, m − 1] som är relativt prima med talet m.

Teorem 9. Om p är ett primtal så gäller:

• φ (p) = p − 1,

• φ pk = pk− pk−1.

Bevis. Det är tydlig att talen {1, 2, ...., p − 1} är relativt prima med p om p är ett primtal och det innebär att φ (p) = p − 1. Å andra sidan kan vi bevisa att φ pk = pk − pk−1 genom att konstatera att det nns pk−1 heltal i intervallet mellan 1 och pk som är delbara med p nämligen p, 2p, 3p, ...., pk−1p

så det är därför mängden 1, 2, 3, ...., pk innehåller exakt pk− pk−1 heltal som är relativt prima med pk och det

leder till att φ(pk) = pk− pk−1. 

För mer illustration kan vi skissa en liten graf för Eulers phi-funktion.

(8)

Denition. En mängd R = {r1, r2, ...., rφ(m)} som består av ett tal från varje restklass som är relativt prim med sin modul m kallas ett reducerat restsystem modulo m, det vill säga att den föregående mäng- den kallas ett reducerat restsystem om den uppfyller följande villkor:

• sgd(a, n) = 1; ∀a ∈ R,

• a 6≡ b mod m;∀a, b ∈ R,

• R består av φ(m) tal.

Teorem 10. Om vi antar att sgd(a, m) = 1 och att {r1, r2, ..., rm} är ett fullständigt restsystem så är också {ar1, ar2, ..., arm}ett fullständigt restsystem.

Bevis. För att visa att mängden {ar1, ar2, ..., arm} är ett fullständigt restsystem behöver vi bara kontrollera att talen är valda från olika restklaser , det vill säga att de inte är kongruenta modulo m. så för att komma fram till detta låt oss anta att ari ≡ arj mod m. Det leder till att ri ≡ rj mod m vilket medför att i = j, det vill säga att talen inte

är kongruenta. 

Teorem 11. Om vi antar att sgd(a, m) = 1 och att {s1, s2, ..., sφ(m)} är ett reducerat restsystem modulo m så är {as1, as2, ..., asφ(m)} ett reducerat restsystem modulo m.

Bevis. Eftersom sgd(si, m) = 1och sgd(a, m) = 1 så är sgd(asi, m) = 1 där i = 1, 2, ..., φ(m). Talen as1, as2, ..., asφ(m) tillhör olika restklasser modulo m. Det beror på att talen s1, s2, ..., sφ(m) tillhör olika restkla- ser modulo m, vilket leder till att den mängden bildar ett reducerat

restsystem. 

(9)

Teorem 12. Om sgd(a, m) = 1, så stämmer det att aφ(m)≡ 1 mod m. Bevis. Låt {s1, s2, ...., sφ(m)} vara ett reducerat restsystem modulo m.

Mängden {as1, as2, ..., asφ(m)} är ett reducerat restsystem enligt Teo- rem 10 och det leder till att varje tal si ( där i går från 1 till φ(m) ) i det första systemet motsvarar exakt ett tal asj i det andra systemet där j går från 1 till φ(m), det vill säga si ≡ asj mod m. Nu genom att multiplacera ihop talen och utnyttja Teorem 4 så kommer vi fram till att as1· as2 · · · asφ(m) ≡ s1 · s2· · · sφ(m) mod m. Det medför att aφ(m)(s1 · s2 · · · sφ(m)) ≡ (s1 · s2 · · · sφ(m)) mod m. Om vi använder oss av Teorem 5 upprepade gånger kan vi dra slutsatsen aφ(m) ≡ 1

mod m. 

Anmärkning. En viktig tillämpning av den föregående satsen som he- ter Eulers sats är RSA-algoritmen samt Eulers sats kan vara väldigt användbar när man vill ta reda på om något tal är ett primtal eller ej.

Det görs genom att konstatera att om villkoret inte är uppfyllt då kan vi observera direkt att p inte är ett primtal och därmed slipper vi slösa bort våra krafter på att dela p med alla tal från 2 till roten ur p. Om villkoret däremot är uppfyllt får vi det bara bekräftat att p möjligtvis är ett primtal.

Teorem 13. Om sgd(a, m) = 1 så stämmer det att aφ(m)−1är den multiplikativa inversen till a modulo m.

Bevis. Om vi tar hänsyn till att sgd(a, m) = 1 och enligt den före- gående Teorem så kommer vi fram till att aφ(m) ≡ 1 mod m alltså aφ(m)−1 ≡ a mod m och det innebär att aφ(m)−1 är den multiplikativa

inversen till a modulo m. 

Teorem 14. Om sgd(a, m) = 1 så är x ≡ aφ(m)−1b mod m den enda lösning till ekvationen ax ≡ b mod m.

Bevis. Eftersom sgd(a, m) = 1 så den enda lösning till ekvationen ax ≡ b mod m är x = a−1b mod m, men enligt föregående teorem så är a−1 = aφ(m)−1. Det leder till att x ≡ aφ(m)−1b mod m är den enda

lösning till ekvationen ax ≡ b mod m. 

Teorem 15. Om p, q är relativt prima så gäller att φ(pq) = φ(p)φ(q).

Bevis. Först ska vi ta reda på antalet av heltal mellan 1 och pq som är relativt prima med pq. Enligt ovan är alltså φ(pq) = (pq − 1) − (p + q − 2) = pq − 1 − p − q + 2 = pq − p − q + 1 = p(q − 1) − (q − 1) =

(p − 1)(q − 1) = φ(p)φ(q). 

Anmärkning. Det föregående Teoremet spelar en stor roll inom RSA- algoritmen.

(10)

Här kommer en liten bakgrund om primitiva rötter som är grun- den för Die-Hellman-algoritmen, vi har använt oss av [3] i det här avsnittet.

Denition. Ordningen av ett nollskilt heltal a är det minsta naturliga tal e för vilket ae ≡ 1 mod m. Vi betecknar den em(a). Ett nollskilt heltal a kallas en primitiv rot om em(a) = φ(m). Det nns φ (φ (m)) primitiva rötter modulo m.

Exempel. Låt oss bestämma ordningen e7(3). Enligt den föregående denitionen är det de minsta naturliga talet för vilket 3e ≡ 1 mod 7. Vi kan konstatera att 36 = 729 ≡ 1 mod 7 och det medför att e7(3) = 6 men å andra sedan känner vi dock till att antalet tal som är rela- tivt prima med talet 7 är lika med sex och de är {1, 2, 3, 4, 5, 6},det innebär at φ(7) = 7 − 1 = 6 och genom detta har vi således bevi- sat att e7(3) = φ(7) så 3 är en primitiv rot. Antalet primitiva rötter modulo 7 är lika med två eftersom enligt de föregående denitioner φ (φ (7)) = φ (7 − 1) = φ (6) = φ (2.3) = φ (2) φ (3) = 1.2 = 2 . Uppen- barligen kan man konstatera att talen som är relitivt prima med φ (7) är {1, 5}. Vi känner dock till den första primitiva roten 3 så för att ta reda på den andra roten beräknar vi 56 ≡ 1 mod 7 och på samma sätt kan vi se att e7(5) = φ (7) = 6. Den följande tabeln illustrerar att {3, 5} är de primitiva rötterna.

x x2 mod 7 x3 mod 7 x4 mod 7 x5 mod 7 x6 mod 7

1 1

2 4 1

3 2 6 4 5 1

4 2 1

5 4 6 2 3 1

6 1

3. Kryptering

Kryptogra handlar om att skydda information och kommunikation genom att använda koder så att endast de som har nycklar kan läsa den delade informationen. I datavetenskap hänvisar kryptogra till säkra informations- och kommunikationstekniker härledda från matematiska begrepp och en uppsättning beräkningar som kallas algoritmer för att dölja innehållet på något sätt och göra det så svårt som möjligt att dekryptera.

(11)

Vi börjar med att diskutera skillnaden mellan symmetriska och asym- metriska kryptosystem. Ett problem med symmetrisk kryptering är hur sändare och mottagare kan komma överens om vilken nyckel de ska an- vända. En lösning är asymmetrisk kryptering, vars grundprincip bygger på att man använder två helt olika nycklar för kryptering och dekrypte- ring. Man krypterar med den öppna nyckeln som är känd för publiken och man dekrypterar med den privata nyckeln som bara sändare och mottagare känner till. Vi introducerar nu några asymmetriska krypte- ringsmetoder bland annat Die-Hellman och RSA. För bakgrund om dem har [2] (sid. 109-130) och (sid. 133-151) använts.

3.1. Die-Hellman-algoritmen. Die-Hellman algoritmen används för att skapa en gemensam nyckel som kan användas i kommunikation där vi utbyter data över ett oentligt nätverk.Vi kan sammanfatta al- goritmen på fölljande sättet:

• Alice och Bob bestämmer två tal som inte är hemliga: p som ska vara ett stort primtal och g som är en primitiv rot modulo p.

• Alice och Bob väljer sen ett stort heltal a respiktiv b som ska hållas hemliga.

• Baserat på a och b genereras Y för Alice och Bob: YA = ga mod p respektive YB = gb mod p. Efter det delar Alice och Bob deras YA, YB publikt.

• Nu kan Alice och Bob båda beräkna den hemliga nycklen så här:

Alice beräknar K = YBa mod p eftersom endast hon känner till aoch Bob beräknar ¯K = YAb mod peftersom endast han känner till b.

På grund av K = ¯K = ga·b mod p så är algoritmen klar eftersom Alice och Bob har en gemensam hemlig nyckel för att överföra hemlig information.

3.2. RSA-algoritmen. Ron Rivest, Adi Shamir och Leonard Adle- man vid Massachusetts Institute of Technology gjorde era försök un- der ett år för att skapa en enkelriktad funktion som var svår att inverte- ra. RSA är en krypteringsalgoritm, uppkallad efter upphovsmakarnas initialer, som används för att säkert överföra meddelanden via nätet och det bygger på principen att det är lätt att multiplicera stora tal med varandra, men att faktorisera stora tal är mycket svårare.

• Vi väljer två stora primtal p, q och beräknar sen n = pq (vi måste vara uppmärksamma att p och q måste hållas hemliga) och sen bestämmer vi φ(n) = φ(p)φ(q) = (p − 1)(q − 1).

(12)

• Vi väljer ett heltal e, sådant att 1 < e < (p − 1)(q − 1) och (p − 1)(q − 1) inte är delbart med e.Vi låter e och n vara de publika nycklarna.

• Vi beräknar d så att de ≡ 1 mod φ(n). Där d är vår privata nyckel som är hemlig.

• Om någon vill skicka något hemligt till oss så krypterar de sitt meddelande med hjälp av: c = me mod n.

• Vi är de enda som kan dekryptera detta meddelande med hjälp av: m = cd mod n.

Teorem 16. me·d ≡ m mod n.

Bevis. Med tanke på att e · d ≡ 1 mod φ(n) så kan vi skriva att e · d − 1 ≡ 0 mod φ(n) vilket betyder att e · d − 1 = kφ(n). Det innebär att φ(p) | e · d − 1samt φ(q) | (e · d − 1) vilket medför att e·d−1 = K1φ(p) och e · d − 1 = K1(p − 1). Vi har me·d = me·d−1+1 = mK1(p−1)+1 vilket leder till att me·d = mK1(p−1)m. Nu kommer vi att urskilja två olika fall:

Det första fallet är då m och p är relativt prima. Då är mp−1 ≡ 1 mod p. Vi kommer fram till att me·d= mK1(p−1)m = 1K1m ≡ m mod p det vill säga att me·d≡ m mod p.

Det andra fallet är då m är en multipel av p så att m ≡ 0 mod p.

Om vi upphöjder båda leden till K då kommer vi fram till mK ≡ 0 ≡ m mod p vilken leder till att me·d ≡ m mod p (1).

På liknande sätt kan vi komma fram till att me·d ≡ m mod q (2).

Nu om vi betraktar (1) och (2) kan vi dra slutsatsen me·d ≡ m mod pq eftersom sgd(p, q) = 1 och det innebär att me·d ≡ m mod n.



(13)

4. implementation av algoritmer

Vi har valt att implementera våra algoritmer med hjälp av wolform mathematica eftersom det har många fördelar bland annat nns mat- hematic ett antal paket funktioner som är färdiga att använda och med vars hjälp kan man implementera era algoritmer direkt samt kan man denera sin egen funktion genom en procedur som är en följd av uttryck separerade av semikoln.

4.1. Die-Hellman-algoritmen.

p = NextPrime[Random[Integer, {1, 1000}]];

g = PrimitiveRoot[p];

a = RandomInteger[{1, 1000}]; b = RandomInteger[{1, 1000}];

Y = PowerMod[g, a, p]; Z = PowerMod[g, b, p];

K1 = PowerMod[Y, b, p]

K2 = PowerMod[Z, a, p]

4.2. RSA-algoritmen.

4.2.1. Krypteringsalgoritm : InputString[];

a = ToCharacterCode[%];

p = NextPrime[Random[Integer, {10^100, 510^100}]];

q = NextPrime[Random[Integer, {10^100, 510^100}]];

p != q;

PrimeQ[p]

PrimeQ[q]

n = p*q;

m = (p - 1)*(q - 1)

e = RandomInteger[{10^100, 510^100}]

While[CoprimeQ[e, m] == False, e = RandomInteger[{10^100, 510^100}]]

f[x : _] := PowerMod[x, e, n] /;

CoprimeQ[e, m] == True;

b = f[a]

4.2.2. Dekrypteringsalgoritm.

b = InputString[];

e = Input[e];

m = Input[m];

d = PowerMod[e, -1, m];

g[y_] := PowerMod[y, d, n];

c = g[b];

FromCharacterCode[c]

(14)

5. Praktiska tillämpningar

5.1. Exempel. Här beskrivs några praktiska tillämpningar som illu- strerar hur de föregående algoritmerna fungerar. Om vi tar till exempel p = 17 och q = 67, så kan vi beräkna produkten n = pq av dessa två primtal som blir 17 · 67 = 1139. Efteråt beräknas värdet av produkten φ(n) = (p − 1)(q − 1) = 16 · 66 = 1056.

Nyckeln e måste nu vara relativt prim med talet 1056. Säg att vi väljer e = 25. Till slut beräknas motsvarande värde på d, så att d ≡ e−1 mod (p−1)(q −1), det vill säga d = 25−1 mod 1056. Värdet på d utgör den privata nyckeln som man får fram med hjälp av Euklides algoritm:

• 1056 = 42 · 25 + 6

• 25 = 4 · 6 + 1

• 6 = 1 · 6 + 0

Om man nu går baklänges i uträkningen så får man följande:

1 = 25 − 4 · 6

= 25 − 4 · (1056 − 42 · 25)

= 25 − 4 · 1056 + 4 · 42 · 25

= 25 − 4 · 1056 + 168 · 25 alltså 1 = 169 · 25 − 4 · 1056

och det innebär att d = 169 och det är den privata nyckeln, som vi kommer att använda när vi ska dekryptera texten. Talen e och n är de öppna nycklarna, medan d utgör den privata nyckeln. Talen p och q behövs inte längre, men de ska inte avslöjas.

Nu ska vi kryptera den meningen "Logic will get you from A to B but imagination will get you everywhere" med hjälp av den krypteringsfor- meln c = me mod noch med tanke på att sirorna som motsvara den föregående mening enligt UNICODE characters table är:

76 111 103 105 99 32 119 105 108 108 32 103 101 116 32 121 111 117 32 102 114 111 109 32

65 32 116 111 32 66 32 98

117 116 32 105 109 97 103 105 110 97 116 105 111 110 32 119 105 108 108 32 103 101 116 32 121 111 117 32 101 118 101 114 121 119 104 101 114 101

Om vi sätter in dem föregående tal i den formeln c = me mod ndå kommer vi fram till

(15)

59 128 562 507 547 882 578 507 300 300 882 562 883 224 882 920 128 593 882 391 1093 128 656 882 173 882 224 128 882 66 882 778 593 224 882 507 656 566 562 507 246 566 224 507 128 246 882 578 507 300 300 882 562 883 224 882 920 128 593 882 883 203 883 1093 920 578 104 883 1093 883

5.2. Exempel. Låt oss skapa en gemensam nyckel med hjälp av Die- Hellman-algoritm, som vi har redan nämnt tidigare, först ska vi välja ett tal till exempel p = 54751 och sen primtiv rot för p är g = 6. Nu väljer vi två slumpmässiga tal till exempel a = 52341 och b = 59365 och med hjälp av den föregående algoritmen kan vi komma fram till att: YA = ga mod p = 49509 respektive YB = gb mod p = 54026. Då kommer vi fram till K = YBa mod p = YAb mod p = 54449.

6. Bilaga

Inom talteorin kallas ett heltal q för kvadratisk rest modulo p, om det nns ett heltal x sådant att x2 ≡ q mod psamt q och p måste vara relativt prima. Till exempel om vi kvadrerar talen från och med 1 till och med 6 och sen bestämmer resten modulo 7 så får vi:

12 mod 7 ≡ 1, 22 mod 7 ≡ 4, 32 mod 7 ≡ 2, 42 mod 7 ≡ 2, 52 mod 7 ≡ 4, 62 mod 7 ≡ 1.

Från detta kan vi se att de kvadratiska resterna är 1, 2, 4 det vill säga 1 ≡ 12 mod 7, 2 ≡ 32 mod 7, 4 ≡ 22 mod 7.

Om vi sätter de sirorna modulo p på ett hörn i en graf och förenar två hörn a och b med en kant om a − b är en kvadratisk rest modulo p så får vi en graf som kallas Paleygraf av ordning p. Vi betecknar V (p) respektiv E(p) mängden av hörn och kanter. För bakgrund om Paleygrafer har [4] använts.

Exempel. I Paleygrafen av ordning p = 5 har vi V (p) = {0, 1, 2, 3, 4}

och E (p) = {{0, 1} , {1, 2} , {2, 3} , {3, 4} , {4, 0}}, grafen ser ut så här

(16)

I Paleygrafen av ordning p = 13 har vi V (p) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

och E (p) = {{x, y} ∈ V (p) , a2 ≡ x − y mod 13}. Vi kan komma fram till mängden av kanter genom att kvadrera alla nollskilda tal som representerar hörn och sen ta resten modulo 13. Då får vi den mängden R = {1, 3, 4, 9, 10, 12}. Vi har {x, y} ∈ R för x − y ∈ R det vill säga

E(p) = {{x, x + r} ; x ∈ V (p), r ∈ R}

= {{x, x + 1} , {x, x + 3} , {x, x + 4} , {x, x + 9} , {x, x + 10} , {x, x + 12}}. Då ser grafen ut så här:

(17)

7. Slutsats

RSA anses vara en mycket säker krypteringsalgoritm, men frågan som vi bör fundera på är vad det är som gör algoritmen väldigt svår att knäcka trots att metoden för krypteringen är oentlig (that is the question!) och svaret på den här frågan hittar vi i några matematiska egenskaper i algoritmen. Oavsett om principen för dekrypteringen är känd av alla, är dekrypteringen beroende av vissa tal som hålls hemliga och då är det väldigt svårt att räkna ut dekrypteringsnyckelen och det beror på att faktoriseringen av stora tal fortfarande tillhör de svåras- te matematiska problemen. Die-Hellman-algoritmen har behandlats ur ett matematiskt perspektiv med tanke på primitiva rötter och det diskreta logaritmproblemet.

Tacksägelse. Jag vill passa på att tacka min handledare Dr.Martin Her- schend för värdefulla råd, nyttig feedback och givande diskussioner.

Referenser

[1] Nagel, Trygve. 1951. Introduction to number theory. (S.11-40) (S.68-124) Upp- sala: Uppsala university press.

[2] Mummert, Carl, Mullen, Gary L. 2007. Finite Fields and Application. (S.109- 130) (S.133-151) United States: The American Mathematical Society.

[3] Bengmark, Samuel. 2008. Algebra och talteori, Föreläsning 9 VT.

[4] Noubi Elsawy, Ahmed. 2009. Paley Graphs and Their Generalizations. Heinrich Heine University Düsseldorf, Germany.

References

Related documents

Inom alternativmedicinen får man inte använda sådana begrepp för att hänvisa till effekt av behandlingen vilket ger en väldigt stor skillnad inom ex marknadsföring... Sida 2

Lista och fundera tillsammans över vilka värderingar, vad som är viktigt och värdefullt, ni vill ska ligga till grund för verksamheten för att ni ska få höra detta sägas om

Här kan du se vilka användare ni har i er förening samt skapa och bjuda in flera användare... Klicka på pilen och välj bidraget ni vill söka, klicka sedan

Det är hög tid att bestämma sig för hur det ska vara med dagfjärilarnas namn efter- som deras del av nationalnyckeln ska publiceras nästa höst. Resultatet av denna debatl lär bli

Riksföreningen Enskilda Vägar, vilket innebär att även parter utanför den egentliga järnvägsbranschen alltid kan komma till tals och bidra i säkerhetsarbetet. • BTO

FöR MåNgA LANTARBETARE är drömmen att ta över den gård de arbetar på, men landreformsarbetet går långsamt i Syd- afrika och bygger på att det inte bara finns en

Det är viktigt att du och din handledare går igenom frågorna tillsammans, då dina svar kommer att ligga till grund för att göra. feriepraktiken ännu bättre

Multiplikativ ordning, Cykliska Gruper, Fermats och Eulers satser.. Jan