Offentlig kryptering

Relevanta dokument
Primtal, faktorisering och RSA

RSA-kryptering och primalitetstest

Några satser ur talteorin

NÅGOT OM KRYPTERING. Kapitel 1

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

Resträkning och ekvationer

Kryptering och primtalsfaktorisering

MA2047 Algebra och diskret matematik

Den mest väsentliga skillnaden mellan

Gaussiska primtal. Christer Kiselman. Institut Mittag-Leffler & Uppsala universitet

Givet två naturliga tal a och b, som inte båda två är 0, hur räknar man ut största gemensamma delaren av a och b?

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

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

Hela tal LCB 1999/2000

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

Kapitel 2: De hela talen

Lösningar till utvalda uppgifter i kapitel 5

RSA-kryptering. Torbjörn Tambour

Föreläsning 9: Talteori

Föreläsning 9: Talteori

Grupper och RSA-kryptering

Kinesiska restsatsen

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

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.

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

Talteori (OBS en del frågor gäller diofantiska ekvationer och de tas inte upp från och med hösten 2012)

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

Övningshäfte 3: Polynom och polynomekvationer

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)

SJÄLVSTÄNDIGA ARBETEN I MATEMATIK

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

Hemligheternas Matematik

Introduktion till krypteringsmetoderna RSA och Merkle-Hellman

Algebra och kryptografi Facit till udda uppgifter

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.

Grundläggande krypto och kryptering

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

DEL I. Matematiska Institutionen KTH

Teori :: Diofantiska ekvationer v1.2

Övning 6 - Tillämpad datalogi 2012

Krypteringens historia och användningsområden

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

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

Delbarhet och primtal

Kryptering. Krypteringsmetoder

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

Geometri, talteori och kombinatorik

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

Matematik 5 Kap 2 Diskret matematik II

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

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)

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

INDUKTION OCH DEDUKTION

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

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

Matematik med lite logik

POLYNOM OCH POLYNOMEKVATIONER

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

Övningshäfte 6: 2. Alla formler är inte oberoende av varandra. Försök att härleda ett par av de formler du fann ur några av de övriga.

Gaussiska heltal. Maja Wallén. U.U.D.M. Project Report 2014:38. Department of Mathematics Uppsala University

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

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.

(A B) C = A C B C och (A B) C = A C B C. Bevis: (A B) C = A C B C : (A B) C = A C B C : B C (A B) C A C B C

Högstadiets matematiktävling 2016/17 Finaltävling 21 januari 2017 Lösningsförslag

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

ARITMETIK 3. Stockholms universitet Matematiska institutionen Avd matematik Torbjörn Tambour

Att dela en hemlighet

Explorativ övning 5 MATEMATISK INDUKTION

LABBA MED PRIMTAL OCH DELBARHET. Andreas Wannebo

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

KTHs Matematiska Cirkel. Talteori. Andreas Enblom Alan Sola

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

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

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

Pythagoreiska trianglar

Krypteringteknologier. Sidorna ( ) i boken

Faktoriseringsalgoritmer och Kryptografi

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

Tentamen består av 26 uppgifter fördelade på fem olika ämnesområden. Del 2 5 ger maximalt 11 poäng/del.

INDUKTION OCH DEDUKTION

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

DEL I. Matematiska Institutionen KTH

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

MA2047 Algebra och diskret matematik

TALTEORI FÖR ALLA 1 Juliusz Brzezinski

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

Relationer. 1. Relationer. UPPSALA UNIVERSITET Matematiska institutionen Erik Melin. Specialkursen HT07 23 oktober 2007

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

Matematisk kommunikation för Π Problemsamling

Explorativ övning 5 MATEMATISK INDUKTION

Algebra I, 1MA004. Lektionsplanering

DEL I. Matematiska Institutionen KTH

Diofantiska ekvationer

Mer om faktorisering

PRIMTALEN, MULTIPLIKATION OCH DIOFANTISKA EKVATIONER

SJÄLVSTÄNDIGA ARBETEN I MATEMATIK

Övning 6. Komprimering, kryptering, dokumentering & testning

Kryptografi - När är det säkert? Föreläsningens innehåll. Kryptografi - Kryptoanalys. Kryptering - Huvudsyfte. Kryptografi - Viktiga roller

29 Det enda heltalet n som satisfierar båda dessa villkor är n = 55. För detta värde på n får vi x = 5, y = 5.

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

Transkript:

127 Offentlig kryptering Johan Håstad KTH 1. Inledning. Denna uppgift går ut på att studera ett offentligt kryptosystem. Med detta menas ett kryptosystem där det är offentligt hur man krypterar, men trots detta kan bara någon som besitter en hemlighet dekryptera. Metoden vi kommer att beskriva kallas RSA systemet efter Ron Rivest, Adi Shamir och Len Adleman som föreslog systemet. Huvuddelen av uppgiften går ut på att implementera systemet. RSA systemet bygger på talteori och för att beskriva och sedermera förstå det behövs litet bakgrund. 2. Litet elementär talteori. Låt m vara ett heltal. Vi kommer att räkna med talen 0, 1, 2... m 1 modulo m. Detta innebär att vi har de vanliga räknesätten +, och, men vi är bara intresserade av vilken rest svaret ger vid divison med m. Vi skriver +, och som vanligt medan vi använder likhetstecken med 3 streck samt lägger till (mod m) för att markera att vi bara är intresserade av vilken rest talen ger vid division med m. Vi bör här observera att för att veta vilken rest svaret ger vid division med m är det tillräckligt att veta vilken rest operanderna ger vid division med m och inte behöver deras exakta värde. Visa detta. Till exempel har vi 4 6 6 (mod 9) 13 + 1 14 (mod 18) 2 8 11 (mod 17)

128 Johan Håstad Vi kommer också att behöva division med tal modulo m och här får man tänka till litet eftersom kvoten av två heltal inte vanligtvis är ett heltal. Vi diskuterar inte detta problem närmare utan definierar för tillfället a/b (mod m) som det tal c (mod m), så att b c a (mod m). De problem som kan uppstå (inget sådant c (t.ex. 7/4 (mod 14)), flera sådana c (t.ex. 10/4 (mod 14))) kommer inte att spela någon större roll för oss, men du kan fundera på vad som bör göras. Hur man effektivt beräknar c beskrivs i slutet under Bra att veta. En av hörnstenarna i RSA systemet är följande klassiska sats. Fermats lilla sats. Om p är ett primtal och 1 a < p så är a p 1 1 (mod p). Exempel. Låt p = 17 och a = 3. 3 16 9 8 81 4 13 4 169 2 ( 1) 2 1 (mod 17). Som vi gjorde här är det ofta bekvämt att använda t.ex. ( 1) i stället för 16 vid handräkning. Detta ger inget problem ty ( 1) och 16 ger samma rest vid division med 17. Om du vill kan du försöka visa Fermats lilla sats. Enklast är kanske att visa a p a (mod p) med induktion över a. Använd binomialsatsen och att ( p i) är delbart med p då 1 i p 1. Låt oss fortsätta med litet fler bakgrundsfakta. Låt N vara produkten av två olika primtal, N = p q. Lemma 1. Anta att vi vet vilken rest ett tal ger vid division med p och vid division med q. Då vet vi också vilken rest det ger vid division med N = p q förutsatt att p q och p och q är primtal. För att verifiera detta behöver vi bara visa att om a och b ger samma rest vid division med p och vid division med q, så ger de

Offentlig kryptering 129 samma rest vid division med N. Men detta är ganska uppenbart då a b är delbart med både p och q och således med p q. Skriv ut beviset med alla detaljer. Lemmat är ett specialfall av en sats som kallas den kinesiska restsatsen. Du kan hitta mer information om elementär talteori i boken av Hardy och Wright som nämns i litteraturlistan. 3. RSA systemet. Låt N vara produkten av två primtal N = p q. Det är viktigt att det bara är mottagaren som vet p och q, det enda som kommer att offentliggöras är N. Låt M vara minsta gemensamma multipel av p 1 och q 1. Eftersom båda talen är jämna vet vi t.ex. att M (p 1)(q 1) 2. Låt nu k och k vara två heltal så att k k 1 (mod M). Talen M och k kommer att hållas hemliga medan k publiceras. Innan vi fortsätter, låt oss ge ett exempel. Låt N = 323 = 17 19, M = 144, k = 5, k = 29. Anta att 210 symboliserar det hemliga meddelandet. Det krypteras som 201 k = 201 5 201 (201 2 ) 2 201 26 2 201 30 216 (mod 323). Observera att detta kan göras av någon som känner N och k. Detta dekrypteras genom 216 k 216 29 216 16 216 8 216 4 216 273 220 64 216 305 258 201 (mod 323), och vi återfår meddelandet. Observera att mottagaren bara behöver k och således kan glömma p, q och M. Låt oss nu beskriva systemet formellt och förklara varför man återfår ursprungsvärdet. Låt m vara det hemliga meddelandet som kan skrivas som ett tal (a blir 01, b blir 02 o.s.v.). Anta att 1 m < N. (Om meddelandet

130 Johan Håstad är långt blir talet större, men då tänker vi oss det som flera tal som alla är mindre än N.) Offentlig krypterings algoritm. I offentlig kryptering beräknas c (chiffertexten) genom c m k (mod N). N och k är offentliga som tidigare nämnts. Hemlig dekrypterings algoritm. Meddelandet återfås genom m c k (mod N). Låt oss visa att dekrypteringen är korrekt. Vi har att c k (mod N) och därmed behöver vi bara följande. m k k Lemma 2. För alla m, 0 m < N är det sant att m k k (mod N). m Genom att använda Lemma 1 behöver vi bara visa att m k k m (mod p) och m k k m (mod q). Bevisen är identiska och därmed visar vi bara den första likheten. Genom valet av M, k och k vet vi att k k = a M + 1 = a b (p 1) + 1 för heltal a och b. Således är om m 0 (mod p) m k k (m p 1 ) a b m 1 a b m m (mod p), där vi har använt Fermats lilla sats. Om m 0 (mod p) är identiteten självklar. Därmed har vi visat Lemma 2 och dekrypteringsalgoritmen är således korrekt. 4. Diskussion. Varför fungerar RSA som ett kryptosystem? Skälet är att det verkar som om det är svårt att finna k givet N och k. Den bästa kända algoritmen för att göra detta är att faktorisera N och räkna fram M och sedan k. Faktorisering tar dock lång

Offentlig kryptering 131 tid och även de bästa algoritmer på specialbyggda maskiner klarar av högst ungefär 80 siffriga tal på en månad. Det är möjligt att det finns bättre algoritmer för faktorisering eller att det finns ett sätt att dekryptera RSA utan att faktorisera N. Det pågår mycket forskning inom detta område, men ännu finns inga sådana resultat. Om det nu är svårt att räkna ut k, hur går det då till att konstruera systemet? Skälet är förstås att konstruktören känner till p och q och kan räkna ut M och sedan k och k. Enda svårigheten är att konstruera stora primtal p och q. Detta görs genom att välja ett slumpvis stort tal och testa om det är primtal. Mycket forskning har ägnats åt att testa om stora primtal, men vi kommer här bara att välja ett simpelt test som fungerar för det mesta. Idé. Om a p 1 1 (mod p) för ett slumpvist valt a, 1 a < p så är p antagligen primtal. Denna idé kan göras mer precis, men för det mesta räcker den. Således blir det vårt primtalstest Prova om a p 1 1 (mod p) för ett antal slumpvist valda a. För en utförligare diskussion om primtalstest kan du läsa artiklarna av Pomerance och Wagon som nämns i litteraturförteckningen. 5. Förslag till uppgifter. Nu har du all information som krävs för att implementera RSA systemet. Gör det med så stora p och q (och därmed N) du kan. Det kan vara viktigt att komma ihåg att datorers heltal är av begränsad storlek. Några tips finns i avdelningen Bra att veta. RSA kan användas till annat än bara enkel kryptering. Till exempel kan man signera meddelanden. Signaturen av ett meddelande m är m k (mod N). Kalla signaturen s. Det är lätt att verifiera signaturen då s k m (mod N) och k och N ju är offentliga. Att prestera en korrekt sig-

132 Johan Håstad natur av ett meddelande är lika svårt som att dekryptera ett meddelande. Försök göra något praktiskt med hjälp av RSA systemet. I dagens hemlighetsfulla värld finns det mycket digital information som skall skyddas eller verifieras som autentisk. Om du lyckas riktigt bra och börjar tjäna pengar på någon produkt, så bör du veta att RSA är patenterat i USA. 6. Slutord. RSA system ställer många frågor som är obesvarade. Hur mycket tid måste en algoritm som faktoriserar heltal ta? Varför är det lättare att visa att tal är primtal än att faktorisera dem? Finns det andra bra system för offentlig kryptering? Forskning pågår för att svara på dessa frågor (se referenslistan). Över huvud taget finns det många obesvarade frågor om existens av effektiva algoritmer. Detta område av matematiken brukar kallas komplexitetsteori. Bra att veta. För att beräkna a k (mod N) för stora tal a, k och N kan det vara bra att organisera räkningarna med litet eftertanke. Vi tar exemplet N = 1013, a = 514 och k = 411. Börja med att skriva k binärt, d.v.s. som en summa av två potenser k = 256 + 128 + 16 + 8 + 2 + 1. Beräkna sedan a 2i (mod N) för i = 0, 1... 8. Detta görs lätt genom

Offentlig kryptering 133 att kvadrera föregående tal. Det följer att a 514 a 2 514 2 816 (mod 1013) a 4 816 2 315 (mod 1013) a 8 315 2 964 (mod 1013) a 16 964 2 375 (mod 1013) a 32 375 2 831 (mod 1013) a 64 831 2 708 (mod 1013) a 128 708 2 842 (mod 1013) a 256 842 2 877 (mod 1013). 514 411 514 256 514 128 514 16 514 8 514 2 514 877 842 375 964 816 514 970 872 42 220 872 383 (mod 1013). Man kan använda liknande trick men huvudidén är den samma. Det är också bra att kunna beräkna största gemensamma delare av två tal och att givet y 1, y 2 och m beräkna y 1 /y 2 (mod N). Båda görs med Euklides algoritm. Låt oss börja med största gemensamma delare. Största gemensamma delare av två tal a och b betecknas med (a, b) och är det största tal som delar både a och b. Idén bakom algoritmen är att om ett tal delar a och b så delar det också a k b för alla heltal k. Algoritmen beskrivs nu kanske enklast med ett exempel.

134 Johan Håstad Låt oss ta talen 534 och 114. Anta att d delar dessa två tal, då delar det också 534 4 114 = 78 och också och också 114 78 = 36 78 2 36 = 6 36 6 6 = 0. Nu slutar algoritmen eftersom vi fick talet 0. Det sista talet 6 kontrolleras lätt vara svaret. Låt oss beskriva hur man beräknar y 1 /y 2 (mod N). Först måste vi definiera vad detta betyder. Låt oss säga att är det tal c så att c y 2 y 1 (mod N). Om det finns flera c, så välj ett godtyckligt, finns det inget sådant tal är y 1 /y 2 odefinierat. Beräkna nu y 1 /y 2 på följande sätt. Beräkna först (y 1, y 2 ). Om detta är d, använd att y 1 /y 2 = (y 1 /d)/(y 2 /d). Vi kan således anta att (y 1, y 2 ) = 1. Om nu (y 2, N) > 1 är y 1 /y 2 odefinierat. (Visa detta.) Om (y 2, N) = 1 beräkna e 1/y 2 (mod N) med Euklides algoritm. Sedan är svaret y 1 e (mod m). Vi ger ett exempel på hur man beräknar 1/53 (mod 91). Utför Euklides algoritm på 53 och 91. 91 53 = 38 53 38 = 15 38 2 15 = 8 15 8 = 7 8 7 = 1.

Offentlig kryptering 135 Låt oss nu använda ekvationerna baklänges. 1 = 8 7 = 8 (15 8) = 2 8 15 = 2 (38 2 15) 15 = 2 38 5 15 = 2 38 5 (53 38) = 7 38 5 53 = 7 91 12 53. Ur detta följer att 12 53 1 (mod 91) och och således d.v.s. ( 12) 53 1 (mod 91) 79 53 1 (mod 91) 1 53 79 (mod 91). Litteratur En referens för elementär talteori är Hardy, G.H., & Wright, E.M., An introduction to the theory of numbers. Fifth edition, Oxford Univ. Press, Oxford 1979. Där finns bl.a. Fermats lilla och kinesiska restsatsen. RSA systemet presenterades först i Rivest, R., Shamir, A., Adleman, L., A method for obtaining digital signatures and public key cryptosystems. Communications of ACM 21 (1979), s 120 126.

136 Johan Håstad Om du vill läsa mer om primtalstest finns följande artiklar Wagon, S., Primality testing. Mathematical intelligenser, 8:3 (1986), s 58 61. Pommerance, C., Recent developments in primality testing. Mathematical intelligenser, 3 (1981), s 97 105. För andra förslag på offentliga krypteringssystem, se Merkle, R., Hellman, M., Hiding information and signatures in trapdoor knapsacks. IEEE Transactions on Information Theory, IT 24 (1978), s 525 553. McEliece, R.J., A public key cryptosystem based on algebraic coding theory. DSN Progress Report 42 44, Jan. and Feb. 1978. De första av dessa har forcerats, se t.ex. Shamir, A., A polynomial time algorithm for breaking the basic Merkle Hellman cryptosystem. Proceedings of 23rd IEEE Symposium on Foundations of Computer Sience, 1982, s 145 152.