RSA-rytering Torbjörn Tambour RSA-metoden för rytering har den seciella och betydelsefulla egensaen att metoden för rytering är offentlig, medan metoden för derytering är hemlig. Detta an om man funderar lite vera märligt; om man vet hur man ryterar, så borde man v äl veta hur man går balänges, dvs deryterar, ocså, men så är det alltså inte. Den allmänna rincien för deryteringen är änd avalla, men den är beroende avvissa tal som hålls hemliga och som utomstående inte an räna ut eller åtminstone har synnerligen stora sv årigheter att räna ut. Metoden bygger å ett resultat i talteorin, nämligen Fermats lilla sats. Vi har således ett exemel å ett resultat i den mer abstrata delen avmatematien som oväntat får en onret och vitig tillämning. Aronymen RSA ommer avnamnen å ufinnarna, Ron Rivest, Adi Shamir och Len Adleman, och metoden ublicerades 979. Kongruenser Vi sall börja med att reetera ongruenser. Låt n vara ett fixt ositivt heltal. Tv åheltala och b säges vara ongruenta modulo n om a b är delbart med n. Man sriver detta a b mod n. Observera att a b är detsamma som att a = b+n för något heltal. Ett annat sätt att formulera detta är att tv å tal ongruenta modulo n om och endast om de ger samma rest vid division med n. Oma ger resten r, såär a r mod n och det följer att givet ett tal a så finns recis ett tal r sådant att 0 r n sådant att a r mod n, nämligen resten vid division med n (ty om r s <noch r s mod n, såmåste r = s). Sats Följande gäller för ongruenser: a) a a mod n för alla a b) om a b mod n, såär b a mod n c) om a b och b c mod n, såär a c mod n d) om a b och c d mod n, sågäller a±c b±d och ac bd mod n
e) om a b, såär a b mod n för alla heltal 0 f) om SGD(a, n) =,så finns ett heltal x sådant att ax mod n. Bevis. De tre första åståendena är mer eller mindre självlara. Om a b, c d, så an vi sriva a = b + n, c = d + ln för några heltal, l. Alltså är a ± c = b ± d +( ± l)n och första delen avd) följer. Multiliation ger istället ac = bd +(bl + d + ln)n, varav ac bd. Uread användning av d) ger e). Del f) är betydligt intressantare. Enligt Eulides algoritm finns heltal x, y sådana att ax + ny =. Modulo n betyder detta att ax. Talet x i e) bruar allas för inversen till a modulo n och en vanlig betecning är x = a (här måste det alltså vara underförstått vilet n som ligger i botten). Men definierar förstås a =(a ) när är ett ositivt heltal och det är lätt att visa att de vanliga otenslagarna gäller. Sats 2 (Fermats lilla sats) Om är ett rimtal och a ett heltal som inte är delbart med, sågäller att a mod. En evivalent formulering är att a a mod för alla a. I sista avsnittet finns inte mindre än tv åbevisför Fermats lilla sats. Vi ommer ocså att behöva Sats 3 Låt och q vara två olia rimtal och låt M vara ett tal som är delbart med både och q. Oma inte är delbart med q, sågäller att a M mod q. Bevis. Vi har a M =(a ) M/( ) M/( ) mod enligt Fermats lilla sats eftersom M är delbart med (lägg märe till att detta villor är väsentligt!). På samma sätt får vi a M mod q. Alltså är a M delbart med både och q. Men och q är olia rimtal och då måste q a M, dvs a M mod q. 2 RSA Vi an nu besriva RSA-metoden. Vi har alltså ett meddelande som vi vill rytera och först måste vi översätta det till ett tal. Exemelvis an vi låta A vara 0, B 02 osv. Antag att meddelandet är a översatt till ett tal. Vi låter och q vara två olia rimtal och antar till att börja med att a q. Låt M vara minsta gemensamma multieln till ochq. Tag ett tal sådant att SGD(, M) =ochlåt l vara sådant att l mod M. Vi har nu 2
Krytering: a a Derytering: b b l mod q mod q Här betyder a mod q resten av a vid division med q. Innan vi börjar reda ut varför detta fungerar sall vi ta ett enelt exemel. Låt =,q = 3. Då är M = MGM(0, 2) = 60. Tag t ex =7. Låt meddelandet vara a = 42. Det ryterade meddelandet får vi genom att reducera 42 7 modulo 43. En stunds ränande (med hjäl avreglerna i Sats ) ger att 42 7 8 mod 43. Det ryterade meddelandet är således b = 8. För att unna derytera detta måste vi finna ett tal l såatt7l mod 60. Vi sall alltså lösa den diofantisa evationen 7l + 60m = och som vanligt gör man det med hjäl aveulides algoritm. Man finner l = 43 som en möjlighet. Deryteringen innebär således att vi sall beräna 8 43 mod 43. Ytterligare en stunds ränande ger mycet ritigt att 8 43 42 mod 43. Låt oss såvisavarför metoden fungerar. Det ryterade meddelandet är alltså a mod q och deryteringen innebär att vi sall beräna (a ) l mod q. Menl =+cm för något heltal c eftersom l mod M, vilet ger (a ) l mod q a l a +cm a (a M ) c a c a mod q enligt Sats 3. Nu är både första och sista ledet q och då måste de vara lia. Men hur gör man om meddelandet a från början är >q? Jo, man delar u det i mindre bitar. Säerheten i RSA-metoden har att göra med sv årigheten att fatorisera stora tal. Detsomär offentligt änt i ryteringsalgoritmen är talen q och. För att derytera behöver man talet l. För att bestämma det behöver man lösa ongruensen l mod M och då behöver man förstås veta vad M = MGM(,q ) är. Den enda ända metoden att bestämma M är att ta reda å och q, dvs att fatorisera talet q. Att fatorisera stora tal är ett avde svåraste roblem man änner till och det är därför man betratar RSA som en mycet säer metod. I ratien måste naturligtvis och q vara stora rimtal, säg med minst 00 siffror. Det är lart att det an finnas snabba och effetiva fatoriseringsmetoder, eller att det finns en metod att bestämma M utan att fatorisera, men sådana änner man inte till idag. För att RSA sall fungera måste man alltså ha tillgång till stora rimtal. Sådana hittar man i ratien genom ett slags trial-and-error. Man tar ett slumvis utvalt tal med många siffror och testar om det är ett rimtal. Primtalstest är ett enlare roblem än fatorisering och ett sätt man ibland 3
använder bygger å Fermats lilla sats eller snarare å en omvändning till den: Låt a vara ett slumvis valt tal. Om a mod såär det stor sannolihet för att är ett rimtal (men det är inte alls säert!). Det ågår mycet forsning ring fatorisering avstora tal och rimtalstestning, både för att näca RSA och för att göra den särare. Den naivaste metoden att fatorisera ett tal N är väl att rova att dividera med alla tal N (om N är sammansatt, så har det minst en fator som är N; v arför?). Säg att N har 200 siffror, så att N har ungefär 00 siffror. Det finns då 0 00 tal att dividera med. Hur snabbt an en dator göra en räneoeration? Låt oss säga att den minsta möjliga tiden är den det tar för en ljusstråle att färdas sträcan 0 5 meter (räcvidden hos ärnrafterna). Detta blir 0 5 /3 0 9 0 25 seunder. Universum är ca 0 20 s gammalt och under denna tid hinner man alltså göra ungefär 0 45 oerationer, om man inte gör dem arallellt. Om alla väteatomer, ca 0 53 stycen, i solen vore involverade i ränandet, så sulle vi ha hunnit göra 0 98 oerationer sedan universum om till och vi måste vänta tills det blir 00 gånger så gammalt som nu för att vi sall bli lara... 3 Bevis för Fermats lilla sats Vi sall avslutningsvis ge inte mindre än tv å olia bevis för Fermats lilla sats, ett enelt och lättsmält med indution och ett lite mer rävande, men som bättre visar varför satsen är sann. Bevis. Vi ommer att behöva binomialsatsen n n (x + y) n = x n + x n y +...+ x n y +...+ y n då exonenten är v årt rimtal. Vi behöver ocså veta att binomialoefficenterna ( ) är delbara med om. Varför är det så? Jo, vi har ju ( )!! =!. Här är högerledet delbart med, så då måste vänsterledet vara det ocså. Alltså är någon avfatorerna till vänster delbar med, eftersom är ett rimtal. Men om! = 2... vore delbart med, såvorenågon av fatorerna till höger delbar med, vilet är omöjligt då de alla är <. På samma sätt ser man att ( )! inte an vara delbart med och det följer att ( ) är delbart med. 4
Vi sall nu använda indution över a för att visa att (a a). När a =såär a a =0ochåståendet är trivialt. Antag att det är sant för något visst a. Vi sall bevisa att det då är sant även för a +. Enligt binomialsatsen är (a +) = a + a + a 2 +...+ a +, 2 såatt (a +) (a +)=(a a)+ a + a 2 +...+ a. 2 Enligt indutionsantagandet är a a delbart med och enligt ovan är delbart med om. Alltså är hela högerledet delbart med och satsen följer med indution. Bevis 2. Låt a vara ett tal som inte är delbart med. Vi sall betrata de talen a,a 2,...,a ( ). Låt deras rester vid division med vara b,b 2,...,b.Noteraatt b i ochattai b i mod. Vi sall först visa att alla b i :na är olia. För antag att b i = b j.dåär ai aj mod och alltså harvi a(i j). Men delar inte a, så i j, varav följer i = j eftersom både i och j ligger mellan och. Dåtalenb i är stycen till antalet och är olia, så måste de utgöra alla tal, 2,..., fastförmodligen i en annan ordning. Hur som helst är b b 2... b = 2... ( ) = ( )!. Produten avalla ai är a ( )!, så avai b i mod följer a ( )! b... b ( )! mod. Alltsågäller att (a )( )!. Men an inte dela ( )!, för då sulle det dela någon avfatorerna, vila alla är <.Detföljer att a och med andra ord att a mod. Det andra beviset är möjligen lite mer abstrat än det första, men det har fördelen att ge information om varför Fermats lilla sats är sann och an dessutom generaliseras. 5