RSA-kryptering och primalitetstest

Relevanta dokument
NÅGOT OM KRYPTERING. Kapitel 1

Primtal, faktorisering och RSA

Några satser ur talteorin

MA2047 Algebra och diskret matematik

Offentlig kryptering

Kinesiska restsatsen

Sats 2.1 (Kinesiska restsatsen) Låt n och m vara relativt prima heltal samt a och b två godtyckliga heltal. Då har ekvationssystemet

Kryptering och primtalsfaktorisering

RSA-kryptografi för gymnasiet. Jonas Gustafsson & Isac Olofsson

DEL I. Matematiska Institutionen KTH

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

, S(6, 2). = = = =

Matematikens Element. Vad är matematik. Är detta matematik? Anders Fällström Institutionen för matematik och matematisk statistik Umeå universitet

Föreläsning 9: Talteori

Algebra och kryptografi Facit till udda uppgifter

Hemligheternas Matematik

MATEMATIK I SÄKERHETENS TJÄNST OM KODNING OCH KRYPTERING 1

Lösning till tentamensskrivning i Diskret Matematik för CINTE och CMETE, m fl, SF1610, tisdagen den 2 juni 2015, kl

Den mest väsentliga skillnaden mellan

1. (3p) Ett RSA-krypto har parametrarna n = 77 och e = 37. Dekryptera meddelandet 3, dvs bestäm D(3). 60 = = =

Lösning till tentamensskrivning i Diskret Matematik, SF1610 och 5B1118, torsdagen den 21 oktober 2010, kl

Material till kursen SF1679, Diskret matematik: Lite om kedjebråk. 0. Inledning

Utdrag från Verklighetens Kvadratrötter: Sida 1 en bok om matematikens användningsområden skriven av Marcus Näslund. Mer info:

DEL I. Matematiska Institutionen KTH

Grupper och RSA-kryptering

Kryptografi och primalitet. Anders Björner

Hjalpmedel: Inga hjalpmedel ar tillatna pa tentamensskrivningen. 1. (3p) Los ekvationen 13x + 18 = 13 i ringen Z 64.

Lösning av tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, tisdagen den 27 maj 2014, kl

18 juni 2007, 240 minuter Inga hjälpmedel, förutom skrivmateriel. Betygsgränser: 15p. för Godkänd, 24p. för Väl Godkänd (av maximalt 36p.

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

10! = =

Algebra II. Isac Hedén och Johan Björklund

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 22 augusti, 2001

Faktoriseringsalgoritmer och Kryptografi

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 14 augusti, 2002

DEL I. Matematiska Institutionen KTH

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 11 april, 2002

Övning 6. Komprimering, kryptering, dokumentering & testning

Hela tal LCB 1999/2000

RSA-kryptering. Torbjörn Tambour

Lösningar för tenta i TMV200 Diskret matematik kl. 14:00 18:00

2 (6) k 0 2 (7) n 1 F k F n. k F k F n F k F n F n 1 2 (8)

Kryptografi: en blandning av datavetenskap, matematik och tillämpningar

Lösningsförslag till tentamensskrivning i SF1610 Diskret Matematik för CINTE 30 maj 2018, kl

SJÄLVSTÄNDIGA ARBETEN I MATEMATIK

Lösningar för tenta i TMV200 Diskret matematik kl. 14:00 18: Svar: Ja, det gäller, vilket kan visas på flera sätt (se nedan).

a n = A2 n + B4 n. { 2 = A + B 6 = 2A + 4B, S(5, 2) = S(4, 1) + 2S(4, 2) = 1 + 2(S(3, 1) + 2S(3, 2)) = 3 + 4(S(2, 1) + 2S(2, 2)) = = 15.

Mer om faktorisering

Föreläsninsanteckningar till föreläsning 3: Entropi

Lösning till tentamensskrivning på kursen Diskret Matematik, moment B, för D2 och F, SF1631 och SF1630, den 1 juni 2011 kl

Lösningar till utvalda uppgifter i kapitel 5

Kravspecifikation Fredrik Berntsson Version 1.1

Grundfrågor för kryptosystem

Hur man skriver matematik

Grundläggande krypto och kryptering

Låt n vara ett heltal som är 2 eller större. Om a och b är två heltal så säger vi att. a b (mod n)

1. (3p) Ett RSA-krypto har de offentliga nycklarna n = 33 och e = 7. Dekryptera meddelandet 5. a b c d e. a a b c d e

Övningshäfte 3: Polynom och polynomekvationer

Läsanvisning till Discrete matematics av Norman Biggs - 5B1118 Diskret matematik

Krypteringteknologier. Sidorna ( ) i boken

Kapitel 2: De hela talen

1. (3p) Bestäm den minsta positiva resten vid division av talet med talet 31.

3. Bestäm med hjälpa av Euklides algoritm största gemensamma delaren till

Kryptering. Krypteringsmetoder

MATEMATISKA INSTITUTIONEN STOCKHOLMS UNIVERSITET Avd. Matematik Examinator: Daniel Bergh. Lösningsförslag Algebra och kombinatorik

Fermats lilla sats dess historia och några tillämpningar

Algebra och talteori MMGL31. Repetition. Idag. Föreläsning 9 VT FLS och primtalstestning. Carmichaeltal. Rabin-Miller test.

Övning 6 - Tillämpad datalogi 2012

Lösning till tentamensskrivning på kursen Diskret Matematik, moment A, för D2 och F, SF1631 och SF1630, den 10 januari 2011 kl

Primtal och kryptografi

x 23 + y 160 = 1, 2 23 = ,

KOMBINATORIK. Exempel 1. Motivera att det bland 11 naturliga tal finns minst två som slutar på samma

4. Bestäm alla trippler n 2, n, n + 2 av heltal som samtliga är primtal. 5. Skriv upp additions- och multiplikationstabellen för räkning modulo 4.

TATA42: Föreläsning 5 Serier ( generaliserade summor )

gränsvärde existerar, vilket förefaller vara en naturlig definition (jämför med de generaliserade integralerna). I exemplet ovan ser vi att 3 = 3 n n

KTHs Matematiska Cirkel. Talteori. Andreas Enblom Alan Sola

Föreläsning 9: Talteori

1. Inledning, som visar att man inte skall tro på allt man ser. Betrakta denna följd av tal, där varje tal är dubbelt så stort som närmast föregående

MA2047 Algebra och diskret matematik

σ 1 = (531)(64782), τ 1 = (18)(27)(36)(45), τ 1 σ 1 = (423871)(56).

Krypteringens historia och användningsområden

Matematisk kommunikation för Π Problemsamling

Lösningar till utvalda uppgifter i kapitel 2

Exempel. Komplexkonjugerade rotpar

Introduktion till krypteringsmetoderna RSA och Merkle-Hellman

Kryptografi: en blandning av datavetenskap, matematik och tillämpningar

Resträkning och ekvationer

TATM79: Föreläsning 4 Funktioner

MS-A0409 Grundkurs i diskret matematik Appendix, del II

Objektorienterad Programkonstruktion. Föreläsning 16 8 feb 2016

RESTARITMETIKER. Avsnitt 4. När man adderar eller multiplicerar två tal som t ex

SF2703 Algebra grundkurs Lösningsförslag med bedömningskriterier till tentamen Måndagen den 9 mars 2009

Kompletteringsmaterial. K2 Något om modeller, kompakthetssatsen

POLYNOM OCH POLYNOMEKVATIONER

A B A B A B S S S S S F F S F S F S F F F F

Algebra och Diskret Matematik A (svenska)

Efternamn förnamn pnr årskurs

MS-A0409 Grundkurs i diskret matematik Sammanfattning, del II

PRIMTALEN, MULTIPLIKATION OCH DIOFANTISKA EKVATIONER

Kryptoteknik. Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT)

Transkript:

Matematik, KTH Bengt Ek augusti 2016 Material till kurserna SF1630 och SF1679, Diskret matematik: RSA-kryptering och primalitetstest Hemliga koder (dvs koder som används för att göra meddelanden oläsbara för obehöriga) var länge främst av intresse för diplomater, spioner, militärer och kriminella, men numera har de blivit mycket viktiga i samband med datakommunikation. Med ett kryptosystem M E avser vi två ändliga mängder M (de möjliga meddelandena, klartexterna) och C (motsvarande möjliga chiffertexter) och två funktioner E : M C för kryptering och D : C M för avkryptering, sådana att D(E(m)) = m för alla m M. Vi antar att M = C = Z n = {0, 1, 2,..., n 1} för något (stort) n N. Om de meddelanden vi vill kryptera har någon annan form (t.ex. vanlig text) kan de omformas till stora tal, t.ex. med hjälp av ASCII-koderna för ingående symboler (och långa meddelanden kan brytas upp i mindre bitar för att rymmas i Z n). I ett klassiskt kryptosystem (som substitutionschiffer ( byt varje a mot ett k, varje b mot ett s, osv ) och många andra, mer sofistikerade krypton) innebär kunskap om E att man känner D. De måste alltså båda hållas hemliga. ( I princip gäller det för varje kryptosystem, ty om man känner E kan man pröva alla m M tills E(m) är den chiffertext man vill tolka, men i praktiken är det inte möjligt då M är mycket stort). 1976 föreslogs en annan typ av kryptosystem, nu kända som kryptosystem med offentlig nyckel (eng. public-key cryptosystems) av W. Diffie och M. Hellman. I ett sådant system har varje användare, A, sin egen krypteringsfunktion E A och sin egen avkrypteringsfunktion D A. De är så komplicerade att även om man känner E A är det mycket svårt att finna D A. Alla E A :n kan offentliggöras och varje deltagare håller sitt eget D A hemligt. Det betyder att vem som helst kan producera en chiffertext till A, men bara någon som 1 D C

2 har tillgång till D A (dvs förhoppningsvis bara A själv) kan läsa den. Ett av de första sådana systemen, och troligen det bäst kända, är RSA-systemet (uppkallat efter upphovsmännen Ron Rivest, Adi Shamir och Leonard Adleman). Eftersom det bygger på primtal och deras matematik, förtjänar det en plats i vår kurs. RSA-systemet Låt p och q vara olika (stora) primtal och n = p q, m = φ(n) (φ är Eulers funktion). Eftersom Z n Z p Z q (enligt Kinesiska restsatsen) och (a, b) Z p Z q är inverterbart omm a, b 0, finner vi att antalet inverterbara element i Z n är m = φ(n) = (p 1)(q 1). Låt nu x Z n. Enligt Eulers sats gäller x m = 1 (i Z n) om(m) sgd(x, n) = 1, dvs omm p, q x. Antag att x Z n motsvarar (a, b) Z p Z q (dvs f(x) = (a, b) med beteckningen i materialet om kinesiska restsatsen). Då gäller för varje k N att f(x km+1 ) = (a km+1, b km+1 ). Om a 0 är a km+1 = (a p 1 ) k(q 1) a = 1 k(q 1) a = a (i Z p) medan 0 km+1 = 0, så a km+1 = a för alla a Z p. På samma sätt är b km+1 = b (i Z q), så f(x km+1 ) = (a, b) = f(x) för alla x Z n. Eftersom f är injektiv ger det följande Sats: Låt p och q vara skilda primtal, n = p q, och m = (p 1)(q 1). Om x Z n och s N uppfyller s m 1, så x s = x i Z n, dvs för alla x Z, x s x (mod n). Det ger följande sätt att konstruera ett RSA-system: 1. Tag två olika primtal p, q. 2. Låt n = p q och m = (p 1)(q 1). 3. Finn e N med sgd(e, m) = 1, och d N med e d 1 (mod m). 4. Låt E, D : Z n Z n ges av E(x) = x e och D(x) = x d. så E(x) x e (mod n), D(x) x d (mod n) 5. Offentliggör n och e, håll d hemligt (och kasta bort m (så ingen får tag på det)). Observera att modulerna är olika. Vi beräknar E, D med modul n och finner d med modul m (innan vi kastade bort det). För att finna e i steg 3, pröva olika värden och kontrollera med Euklides algoritm villkoret sgd(e, m) = 1. Den ger då också motsvarande d. Eftersom D(E(x)) = (x e ) d = x ed = x de = (x d ) e = E(D(x)) = x enligt satsen ovan är D = E 1 i det här systemet. D är svår att finna (dvs d är svårt att finna om man bara känner n och e), ty det är (såvitt vi vet) svårt att faktorisera stora heltal (för att finna m) (på rimlig tid). I praktiken verkar kring 150 siffror (i bas 10) i p och q anses tillräckligt.

Exempel. Om vi tar (de inte så stora) primtalen p = 17, q = 23, finner vi n = 17 23 = 391 och m = (17 1)(23 1) = 352. Med (t.ex.) e = 15 (sgd(352, 15) = 1, ty 352 = 15 23 + 7, 15 = 7 2 + 1), får vi d = 47 (1 = 15 2 7 = 15 2(352 23 15) = 2 352 + 47 15, så 15 47 352 1). För att kryptera det ytterst hemliga meddelandet x = 147, beräknar vi E(147) = 147 15 = 167 (i Z 391 ). Så chiffertexten är 167. Om vi avkrypterar med D får vi D(167) = 167 47 = 147 (också i Z 391 ). I exemplet innehöll beräkningarna 147 15, som har 33 siffror i bas 10. I ett verkligt system skulle man ha x med hundratals siffror och e likaså, så x e skulle vara alldeles för stort för att beräkna, ens på en riktigt stor dator. I stället kan man beräkna successiva kvadrater, x, x 2, x 4, x 8,..., och i varje steg ta resultatet (mod n) (dvs räkna i Z n ). Då räcker det att handskas med tal som inte är större än n 2, vilket inte är svårt för en dator. Sedan multipliceras rätt x i :n ihop (fortfarande (mod n) i varje steg) för att få resultatet. Exemplet fortsatt. Vi kan beräkna D(167) = 167 47 så här i Z 391 : x = 167, x 2 = 27 889 = 128, x 4 = 128 2 = 16 384 = 353, x 8 = 353 2 = 124 609 = 271, x 16 = 271 2 = 73 441 = 324, x 32 = 324 2 = 104 976 = 188. Eftersom 47 = (101111) 2 får vi x 47 = x 32 x 8 x 4 x 2 x = 188 271 353 128 167 = = 50 948 353 128 167 = 118 353 128 167 = 41 654 128 167 = 208 128 167 = = 26 624 167 = 36 167 = 6 012 = 147 (i Z 391 ). 3 Elektronisk signatur Att vem som helst kan kryptera meddelanden till användaren A, med den offentliga nyckeln E A, ger ett nytt problem. Nämligen, då B skickar ett meddelande till A, hur kan A vara säker på att det verkligen kommer från B och inte från en bedragare? Det problemet löses med en så kallad elektronisk signatur, som använder att D(E(x)) = E(D(x)) = x. Antag att B vill försäkra sig om att A kommer att vara säker på att det var B som sände meddelandet x. Hon kan då sända D B (E A (x)) (eller E A(D B(x))) i stället för E A (x). Eftersom A (liksom alla inblandade) har E B, kan han använda den för att få E B (D B (E A (x))) = E A (x) och sedan med sin egen hemliga D A få x. Bara B kan använda D B, så bara B kunde vara avsändaren och bara A kunde läsa meddelandet, eftersom D A behövdes. På liknande sätt kan A, om han vill göra meddelandet y allmänt känt, sända D A (y) till alla. De kan läsa meddelandet med den offentliga E A och bara någon med den hemliga D A kan vara avsändaren.

4 Primalitetstest För att implementera ett RSA-system, måste varje användare ges två egna mycket stora primtal. Det finns tillräckligt många primtal. Enligt den berömda primtalssatsen, bevisad 1896, är tätheten av primtal nära N omkring 1 för stora N, så nära ln N N = 10 150 är ungefär ett tal av 350 ett primtal. Det betyder att en dator kan finna primtal ganska lätt genom att testa flera kandidater, förutsatt att den har en någotsånär effektiv metod för att avgöra om ett heltal med omkring 150 siffror (i bas 10) är ett primtal. Så vi behöver ett bra primalitetstest. Hur testar vi om ett litet heltal, till exempel 389, är ett primtal? Den mest direkta metoden skulle vara att söka faktorer, genom att pröva alla primtal upp till 19 (eftersom nästa primtal, 23, har 23 2 > 389) (prövningen behöver inte vara en fullständig division, t.ex. gäller 19 389 19 (389 19) = 370 19 37, (eftersom sgd(19, 10) = 1), så 19 389). 389 är ett primtal, men den metoden kan inte användas för riktigt stora tal (åtminstone inte med datorer av nuvarande typ). Även om vi redan känner alla primtal upp till 10 75 och kan avgöra delbarhet på 10 12 sekunder, kunde testet av ett tal nära 10 150 ta mer än 10 53 år. Att testa för alla tänkbara faktorer skulle nästan innebära att faktorisera ett stort heltal och om vi kunde det vore RSA hur som helst inte säkert. Men vi känner till ett test för att avgöra om N är ett primtal, utan att faktorisera: Fermattestet, bas b, 1 < b < N: Är b N 1 1 (mod N)? Enligt Fermats (lilla) sats är svaret ja för alla b om N är ett primtal, så om svaret är nej vet vi säkert att N inte är ett primtal. Men det finns heltal, så kallade (fermat-) pseudoprimtal för bas b, som klarar fermattestet för bas b utan att vara primtal. Exempel. Eftersom 2 10 = 1024 = 341 3 + 1 är 2 340 341 1 34 = 1, så 341 är ett fermatpseudoprimtal för bas 2. Men 3 340 341 56 1, så 341 är inte ett fermatpseudoprimtal för bas 3 (och inget primtal, 341 = 11 31). Som exemplet visar ger fermattestet att 341 inte är ett primtal, om vi prövar det med både bas 2 och bas 3. Ett probabilistiskt primalitetstest av N kunde då vara att ta ett antal slumpmässigt valda baser b 1, b 2,..., b k och utföra testet för dem alla. Om N är ett primtal skulle det klara alla testen, men det vore osannolikt att ett icke-primt tal skulle göra det (i meningen att bara en mycket liten andel av alla icke-prima N av liknande storlek, säg, skulle klara alla). Om vi ökar antalet baser, k, bör sannolikheten att ett icke-primtal slinker igenom bli praktiskt taget noll. Eller? I själva verket finns det icke-primtal N som klarar alla fermattest med baser b som uppfyller sgd(b, N) = 1. Sådana tal kallas carmichaeltal och de är precis de kvadratfria (dvs för inget primtal p gäller p 2 N) sammansatta heltal som uppfyller att för alla primtal p med p N gäller (p 1) (N 1). De har alla minst tre primfaktorer och det finns oändligt många sådana. De minsta carmichaeltalen är 561 = 3 11 17, 1105 = 5 13 17, 1729 = 7 13 19, 2465 = 5 17 29,

2821 = 7 13 31, 6601 = 7 23 41, 8911 = 7 19 67. Om primfaktorerna i ett carmichaeltal är mycket stora, är det mycket osannolikt att vi skulle upptäcka att det inte är ett primtal med det probabilistiska testet som beskrevs ovan. Miller-Rabins test med bas b (från 1980) är en modifikation av fermattestet som, när det utförs med flera olika baser, gör det mycket osannolikt att ett icke-primtal skulle bedömas vara primt. Om N är ett primtal och x Z N uppfyller x 2 = 1, så är x = ±1 (om N är primt gäller N (x 2 1) N (x 1) eller N (x + 1)). Det är observationen bakom Miller-Rabins test, bas b, 1 < b < N: Låt N 1 = u 2 r, u udda, r 1 (om N är udda). Är b u N 1 eller (b u ) 2i N 1 för något i, 0 i < r? Om N är primt blir svaret ja och man kan visa att om N är sammansatt klarar det Miller-Rabins test för högst N av baserna b med 1 < b < N. 4 Exempel. För N = 561 och b = 2 finner vi N 1 = 560 = 35 2 4 och 2 35 561 263, 2 70 561 263 2 = 69 169 561 166, 2 140 561 166 2 = 27 556 561 67, 2 280 561 67 2 = 4 489 561 1. Eftersom 67 561 1, visar Miller-Rabins test att 561 inte är ett primtal. Med isomorfin (från kinesiska restsatsen) f : Z 561 Z 3 Z 11 Z 17, kan vi se vad som händer här: f(2 35 ) = f(263) = (2, 10, 8) = ( 1, 1, 8), f(2 70 ) = f(166) = (1, 1, 13), f(2 140 ) = f(67) = (1, 1, 1), f(2 280 ) = f(1) = (1, 1, 1), f(2 560 ) = f(1 2 ) = (1, 1, 1). Att 2 560 n 1 for n = 3, 11, 17, innebär att 561 klarar fermattestet med bas 2, men eftersom 2 35 2i n 1 inte infaller för samma i för alla n = 3, 11, 13 är 2 35 2i 561 1 för alla i, så 561 klarar inte Miller-Rabins test med bas 2. 5

6 Övningsexempel 1. En användare i ett RSA-system har de offentliga parametrarna (n, e) = (143, 17). a. Kryptera meddelandet x = 71. b. Finn en möjlig hemlig avkrypteringsparameter d för denna användare. c. Kontrollera ditt d genom att avkryptera resultatet i a. med det. 2. Ett RSA-system använder n = 1147(= 31 37) och e 332. Vilket är det minsta möjliga värdet för e? Finn också ett motsvarande d. 3. En RSA-användare har parametern n = p q = 57 656 617. Vilka är primtalen p och q, om m = (p 1)(q 1) = 57 641 220? 4. Visa att om p, q är olika primtal så är p q 1 + q p 1 1 (mod pq). 5. Förklara varför det i alla relevanta fall räcker att välja d så att e d m 2 1 för att det skall kunna användas som avkrypteringsparameter.

7 Svar 1a. E(x) = 80, b. d = 113 (53 går också bra). 2. e = 337, d = 673 (eller t.ex. 133). 3. {p, q} = {6427, 8971}. 5. I satsen i texten räcker det att mgm(p 1, q 1) s, så om både p och q är udda (dvs ingen av dem är 2), fungerar m 2.