RSA

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 8 maj 2021; verifiering kräver 31 redigeringar .
RSA
Datum för stiftelse/skapande/förekomst 1977 [1]
Döpt efter Rivest, Ronald Lynn , Adi Shamir och Leonard Max Adleman
Formel som beskriver en lag eller teorem [2]

RSA (en akronym för Rivest, Shamir och Adleman) är en kryptografisk algoritm med offentlig nyckel baserad på beräkningskomplexiteten hos problemet med faktorisering av stora heltal .

RSA-krypteringssystemet var det första systemet som lämpade sig för både kryptering och digital signatur . Algoritmen används i ett stort antal kryptografiska applikationer, inklusive PGP , S/MIME , TLS / SSL , IPSEC / IKE och andra [3] .

Historik

Idén om ett asymmetriskt kryptosystem för offentlig/privat nyckel tillskrivs Whitfield Diffie och Martin Hellman , som publicerade konceptet 1976. De introducerade även digitala signaturer och försökte tillämpa talteori. Deras formulering använde en delad hemlig nyckel skapad genom att exponentialisera något tal modulo ett primtal. Men de lämnade problemet med att implementera en enkelriktad funktion öppet, kanske för att komplexiteten i faktorisering inte var väl förstått vid den tiden.

Ron Rivest, Adi Shamir och Leonard Adleman vid MIT gjorde flera försök under loppet av ett år för att skapa en enkelriktad funktion som skulle vara svår att invertera. Rivest och Shamir, som datavetare, föreslog många potentiella funktioner, och Adleman, som matematiker, var ansvarig för att hitta deras svagheter. De försökte många tillvägagångssätt, inklusive "knapsäck" och "permutationspolynom". Ett tag trodde de att det de ville uppnå var omöjligt på grund av motstridiga krav. I april 1977 tillbringade de pesach hemma hos en student och drack mycket Manishevitz-vin innan de återvände till sitt hem runt midnatt. Rivest, oförmögen att sova, lade sig på soffan med sin mattebok och började fundera på sin ensidiga funktion. Han tillbringade resten av natten med att formalisera sin idé, och i gryningen var det mesta av artikeln klar. Algoritmen är nu känd som RSA - initialerna till deras efternamn, i samma ordning som i deras papper.

Clifford Cox, en engelsk matematiker som arbetar för den brittiska underrättelsetjänsten Government Communications Headquarters (GCHQ), beskrev motsvarande system i ett internt dokument 1973. Men med tanke på de relativt dyra datorer som krävdes för att implementera det vid den tiden, ansågs det mestadels vara en nyfikenhet och, så vitt bekant, har den inte tillämpats. Men hans upptäckt avslöjades först 1997 på grund av dess topphemliga klassificering.

I augusti 1977 dök den första beskrivningen av RSA-kryptosystemet [5] upp i Martin Gardners kolumn "Mathematical Games" i Scientific American med tillstånd av Ronald Rivest [4 ] . Läsarna ombads också att dechiffrera en engelsk fras krypterad med den beskrivna algoritmen:

9686 1477 8829 7431 0816 3569 8962 1829 9613 1409 0575 9874 2982 3147 8013 9451 7546 2225 9991 6951 2514 6622 3919 5781 2206 4355 1245 2093 5708 8839 9055 5154

Siffrorna n= 1143816...6879541 (129 decimaler, 425 bitar , även känd som RSA-129 ) och e=9007 användes som parametrar för öppna system. En belöning på 100 $ erbjöds för dekryptering. Enligt Rivest skulle det ta mer än 40 kvadrilljoner år att faktorisera ett tal [6] [3] . Men lite mer än 15 år senare, den 3 september 1993, tillkännagavs lanseringen av ett distribuerat datorprojekt med samordning via e-post för att hitta faktorerna för RSA-129-numret och lösa pusslet. Under loppet av sex månader donerade mer än 600 frivilliga från 20 länder CPU-tid till 1 600 maskiner (varav tre var faxar). ). Som ett resultat hittades primära faktorer och det ursprungliga meddelandet dechiffrerades, vilket är frasen " DE MAGISKA ORDEN ÄR SQUEAMISH OSSIFRAGE " ("Magiska ord är ett bråkigt lamm ") [7] [8] . Vinnarna donerade priset de fick till Free Software Foundation .

Efter publiceringen av Martin Gardner kunde vem som helst få en fullständig beskrivning av det nya kryptosystemet genom att skicka en förfrågan per post till Ronald Rivest med ett bifogat kuvert med en returadress och frimärken för 35 cent. [5] En fullständig beskrivning av det nya kryptosystemet publicerades i Communications of the ACM i februari 1978 [9] .

Patentansökan lämnades in den 14 december 1977, med MIT listad som ägare. Patent 4405829 utfärdades den 20 september 1983 och upphörde att gälla den 21 september 2000 [10] . Men utanför USA hade uppfinnarna inget patent på algoritmen, eftersom det i de flesta länder var nödvändigt att skaffa det innan den första publiceringen [11] .

1982 grundade Rivest, Shamir och Adleman RSA Data Security division av EMC . 1989 nämns RSA, tillsammans med det symmetriska chiffret DES , i RFC 1115 , och startar därmed användningen av algoritmen i det begynnande Internet [12] , och 1990 börjar det amerikanska försvarsdepartementet använda algoritmen [13] .

I november 1993 publiceras öppet version 1.5 av PKCS1- , som beskriver användningen av RSA för kryptering och skapande av en elektronisk signatur. De senaste versionerna av standarden finns också tillgängliga som RFC ( RFC 2313  - 1.5, 1993; RFC 2437  - 2.0, 1998; RFC 3447  - 2.1, 2002).

I december 1997 offentliggjordes information enligt vilken den brittiske matematikern Clifford Cocks, som arbetade vid UK Government Communications Centre ( GCHQ ) , beskrev ett kryptosystem liknande RSA 1973 [14] .

Beskrivning av algoritmen

Introduktion

Kryptografiska system med offentlig nyckel använder så kallade envägsfunktioner , som har följande egenskap:

Ensidighet förstås inte som en matematiskt bevisad enkelriktighet, utan den praktiska omöjligheten att beräkna det ömsesidiga värdet med hjälp av moderna beräkningsverktyg inom ett överskådligt tidsintervall.

RSA-krypteringssystemet för publik nyckel är baserat på komplexiteten i problemet med faktorisering av produkten av två stora primtal. För kryptering används driften av exponentieringsmodulo ett stort antal. För att dekryptera (omvänd operation) inom rimlig tid måste du kunna beräkna Euler-funktionen för ett givet stort tal, för vilket du behöver veta sönderdelningen av talet till primtalsfaktorer.

I ett kryptografiskt system med offentlig nyckel har varje deltagare både en offentlig nyckel ( engelsk  offentlig nyckel ) och en privat nyckel ( engelsk  privat nyckel ). I det kryptografiska systemet RSA består varje nyckel av ett par heltal. Varje deltagare skapar sin egen offentliga och privata nyckel på egen hand. Var och en av dem håller den privata nyckeln hemlig, och offentliga nycklar kan delas med vem som helst eller till och med publiceras. De offentliga och privata nycklarna för varje meddelandedeltagare i RSA-krypteringssystemet bildar ett "matchat par" i den meningen att de är ömsesidigt inversa , dvs.

giltiga offentliga och privata nyckelpar motsvarande kryptering och dekrypteringsfunktioner så att meddelanden , var  är uppsättningen av tillåtna meddelanden,

Algoritm för att generera offentliga och privata nycklar

RSA-nycklar genereras enligt följande [15] :

1) två olika slumpmässiga primtal och en given storlek väljs (till exempel 1024 bitar vardera); 2) deras produkt beräknas , vilket kallas modulen ; 3) värdet på Euler-funktionen beräknas från talet : ; 4) ett heltal ( ) väljs som är coprime med värdet på funktionen ; numret kallas en offentlig exponent ; _  vanligtvis tar de som primtal som innehåller ett litet antal enstaka bitar i binär notation , till exempel primtal från Fermat-talen : 17, 257 eller 65537, eftersom i detta fall den tid som krävs för kryptering med snabb exponentiering kommer att vara kortare;

värden som är för små , såsom 3, kan potentiellt försvaga säkerheten för RSA-systemet. [16] ; 5) ett tal beräknas som är multiplikativt inverst till talet modulo , det vill säga ett tal som uppfyller jämförelsen : (talet kallas den hemliga exponenten ; det beräknas vanligtvis med den utökade euklidiska algoritmen ); 6) paret publiceras som en offentlig RSA - nyckel ( publik RSA-nyckel );  7) paret spelar rollen som en privat RSA -nyckel och hålls hemligt . 

Kryptering och dekryptering

Anta att Bob vill skicka ett meddelande till Alice .

Meddelanden är heltal i intervallet från till , coprime till n, dvs. .

Krypteringsalgoritm [15] :

  • Få Alices publika nyckel
  • Ta klartext
  • Kryptera ett meddelande med Alices publika nyckel:

Dekrypteringsalgoritm :

  • Ta emot krypterade meddelanden
  • Ta din privata nyckel
  • Använd den privata nyckeln för att dekryptera meddelandet:

Detta schema används inte i praktiken på grund av att det inte är praktiskt tillförlitligt (semantiskt säkrat). Faktum är att envägsfunktionen E(m) är deterministisk  - med samma värden på ingångsparametrarna (nyckel och meddelande) ger den samma resultat. Detta innebär att det nödvändiga villkoret för chifferets praktiska (semantiska) tillförlitlighet inte är uppfyllt.

Sessionsnyckelkrypteringsalgoritm

Mest använda just nu[ när? ] är en blandad krypteringsalgoritm där sessionsnyckeln först krypteras, och sedan använder deltagarna den för att kryptera sina meddelanden med symmetriska system. När sessionen avslutas förstörs vanligtvis sessionsnyckeln.

Sessionsnyckelns krypteringsalgoritm är som följer [17] :

Algoritm :

  • Få Alices publika nyckel
  • Skapa en slumpmässig sessionsnyckel
  • Kryptera sessionsnyckeln med Alices publika nyckel:
  • Kryptera meddelandet med sessionsnyckeln med en symmetrisk algoritm:

Algoritm :

  • Acceptera Bobs krypterade sessionsnyckel
  • Ta din privata nyckel
  • Använd den privata nyckeln för att dekryptera sessionsnyckeln:
  • Dekryptera meddelandet med sessionsnyckeln med en symmetrisk algoritm:


I fallet när sessionsnyckeln är större än modulen delas sessionsnyckeln in i block med den erforderliga längden (om nödvändigt, utfylld med nollor) och varje block krypteras.

RSA-schemats korrekthet

Ekvationerna och , på vilka RSA-schemat är baserat, definierar ömsesidigt inversa transformationer av mängden Bevis [15] [18]

Ja, för

Låt oss visa att:

.

Två fall är möjliga:

Eftersom talen och är ömsesidigt inversa med avseende på multiplikation modulo , dvs

för något heltal ,

sedan:

där den andra identiteten följer av Fermats sats .

,

sedan

Alltså, för alla , jämlikheten

På samma sätt kan man visa att:

.

Sedan, från den kinesiska restsatsen

Exempel

Skede Operationsbeskrivning Operationsresultat
Nyckelgenerering _ Välj två olika primtal ,
Beräkna produkt
Beräkna Euler-funktionen
Välj en öppen utställare
Beräkna hemlig exponent
Publicera offentlig nyckel
Spara privat nyckel
Kryptering Välj text att kryptera
Beräkna chiffertext
Dekryptering Beräkna originalmeddelandet

Digital signatur

RSA-systemet kan användas inte bara för kryptering utan även för digital signatur .

Anta att Alice (sida ) behöver skicka ett meddelande till Bob (sida) som bekräftas av en elektronisk digital signatur .

Algoritm :

  • Ta klartext
  • Skapa en digital signatur med din privata nyckel :
  • Skicka ett par bestående av ett meddelande och en signatur.

Algoritm :

  • Acceptera ett par
  • Få Alices publika nyckel
  • Beräkna meddelandeförbild från signatur:
  • Verifiera signaturens äkthet (och meddelandets oföränderlighet) genom att jämföra och

Eftersom en digital signatur ger både autentisering av författaren till ett meddelande och bevis på integriteten hos innehållet i det signerade meddelandet, är det analogt med en handskriven signatur i slutet av ett handskrivet dokument.

En viktig egenskap hos en digital signatur är att den kan verifieras av alla som har tillgång till författarens publika nyckel. En av deltagarna i meddelandeutbytet kan, efter att ha verifierat den digitala signaturens äkthet, överföra det signerade meddelandet till någon annan som också kan verifiera denna signatur. En part kan till exempel skicka en elektronisk check till parten. Efter att parten kontrollerat partens underskrift på checken kan den överföra den till sin bank, vars anställda också har möjlighet att kontrollera signaturen och utföra motsvarande monetära transaktion.

Observera att det signerade meddelandet inte är krypterat . Den skickas i sin ursprungliga form och dess innehåll är inte skyddat från integritetskränkningar. Genom att kombinera ovanstående kryptering och digitala signaturscheman kan RSA skapa meddelanden som är både krypterade och digitalt signerade. För att göra detta måste författaren först lägga till sin digitala signatur i meddelandet och sedan kryptera det resulterande paret (bestående av själva meddelandet och signaturen till det) med hjälp av den publika nyckeln som tillhör mottagaren. Mottagaren dekrypterar det mottagna meddelandet med sin privata nyckel [17] . Om vi ​​drar en analogi med att skicka vanliga pappersdokument, så liknar denna process hur om författaren till dokumentet satte sitt sigill under det och sedan lade det i ett papperskuvert och förseglade det så att kuvertet endast öppnades av person som meddelandet var adresserat till.

Hastigheten för RSA-algoritmen

Eftersom nyckelgenerering sker mycket mer sällan än operationer som implementerar kryptering, dekryptering, samt skapande och verifiering av en digital signatur, representerar beräkningsuppgiften den huvudsakliga beräkningskomplexiteten. Detta problem kan lösas med den snabba exponentieringsalgoritmen . Med denna algoritm kräver beräkningen modulo multiplikationsoperationer [ 19] .

Mer , var

Eftersom varje beräkning i steg 2 inte kräver mer än tre modulo-multiplikationer och detta steg utförs en gång, kan komplexiteten hos algoritmen uppskattas med värdet .

För att analysera exekveringstiden för operationer med publika och privata nycklar, anta att den publika nyckeln och den privata nyckeln uppfyller relationerna , . Sedan, i processerna för deras tillämpning, utförs också modulo-multiplikationer .

Sålunda växer exekveringstiden för operationer med en ökning av antalet bitar som inte är noll i den binära representationen av den öppna exponenten e . För att öka krypteringshastigheten väljs ofta värdet på e lika med 17 , 257 eller 65537 - primtal , vars binära representation endast innehåller två enheter :

Enligt heuristiska uppskattningar är längden på den hemliga exponenten , som beror på ett icke-trivialt sätt på den öppna exponenten och modulen , nära längden med hög sannolikhet . Därför är datadekryptering långsammare än kryptering, och signaturverifiering är snabbare än att den skapas.

RSA-algoritmen är mycket långsammare än AES och andra algoritmer som använder symmetriska blockchiffer .

Använder den kinesiska restsatsen för att påskynda dekryptering

Vid dekryptering eller signering av ett meddelande i RSA-algoritmen kommer den beräknade exponenten att vara ett ganska stort antal (i storleksordningen 1000 bitar). Därför krävs en algoritm som minskar antalet operationer. Eftersom siffrorna och i nedbrytningen är kända för ägaren av den privata nyckeln, kan vi beräkna:

Eftersom och  är nummer av ordning , kommer dessa operationer att kräva två som höjer numret till en 512-bitars effektmodulo ett 512-bitars nummer. Detta är betydligt (för 1024-bitars testning visade 3 gånger) snabbare än en höjning till en 1024-bitars effektmodulo ett 1024-bitars nummer. Därefter återstår att återställa genom och vad som kan göras med den kinesiska restsatsen [20] .

RSA-krypteringsanalys

Algoritmens styrka är baserad på komplexiteten i att beräkna den inversa funktionen till krypteringsfunktionen [21]

.

För att beräkna från kända måste du hitta sådana

det vill säga hitta det inversa elementet av k i den multiplikativa restgruppen modulo

Att beräkna den omvända modulo är inte svårt, men angriparen vet inte värdet på . För att beräkna Euler-funktionen för ett känt tal måste du känna till sönderdelningen av detta tal i primtalsfaktorer. Att hitta sådana faktorer är en svår uppgift, och att känna till dessa faktorer är en "hemlig dörr" ( engelska bakdörr ), som används för beräkning av nyckelns ägare. Det finns många algoritmer för att hitta primtalsfaktorer, den så kallade faktoriseringen , den snabbaste idag är den generella talfältssiktmetoden , vars hastighet för ett k-bitars heltal är  

för vissa .

Under 2010 beräknade en grupp forskare från Schweiz, Japan, Frankrike, Nederländerna, Tyskland och USA framgångsrikt data krypterad med en 768-bitars RSA-krypteringsnyckel. Att hitta primtalsfaktorer utfördes med den allmänna metoden för talfältssikten [22] . Enligt forskarna kan endast RSA-nycklar med en längd på 1024 bitar eller mer efter deras arbete betraktas som ett tillförlitligt krypteringssystem. Dessutom bör kryptering med en nyckel på 1024 bitar överges under de kommande tre till fyra åren [23] . Från och med den 31 december 2013 stöder Mozilla-webbläsare inte längre CA-certifikat med RSA-nycklar mindre än 2048 bitar [24] .

Dessutom, när algoritmen är felaktigt eller suboptimalt implementerad eller används, är speciella kryptografiska attacker möjliga, såsom attacker på scheman med en liten hemlig exponent eller scheman med ett gemensamt valt modulvärde.

Attacker på RSA-algoritmen

Wieners attack mot RSA

Vissa applikationer behöver påskynda dekrypteringsprocessen i RSA-algoritmen. Därför väljs en liten dekrypteringsexponent. I fallet där dechiffreringsexponenten kan bestämmas i polynomtid med hjälp av Wiener-attacken [20] , baserat på fortsatta bråktal .

Mer Givet ett reellt tal definierar vi sekvenser:





Heltal kallas fortsatta bråk , som representerar  rationella tal som konvergenter. Var och en av de lämpliga fraktionerna är irreducerbara och tillväxthastigheten för deras nämnare är jämförbar med den exponentiella. Ett av de viktiga resultaten av teorin om fortsatta bråk :

Om den irreducerbara bråkdelen uppfyller ojämlikheten:

sedan en av konvergenterna i den fortsatta fraktionsexpansionen .

Anta att vi har en modul och   Låt angriparen veta krypteringsexponenten E, som har egenskapen

där   Vi kommer också att anta att eftersom detta är sant i de flesta applikationer. Av antagandena följer det

Följaktligen,



Detta visar att en ganska bra uppskattning för  Indeed,

Eftersom det är uppenbart , eftersom det antogs att betyder,


Eftersom gcd är en konvergent i expansionen av en fraktion till en kontinuerlig . Således kan du ta reda på avkodningsexponenten genom att omväxlande ersätta nämnare för lämpliga bråk i uttrycket:


för något slumptal Efter att ha erhållit likhet finner vi att det totala antalet lämpliga bråk, som måste kontrolleras, uppskattas som

Generaliserad Wiener-attack

Wienerattacken som beskrivs ovan är endast möjlig om angriparen är medveten om ojämlikheten

där  är den hemliga exponenten och  är RSA-modulen. Bonnet och Derfey, med hjälp av en tvådimensionell analog av Coppersmith's Theorem , kunde generalisera Wieners attack [20] till fallet när

Tillämpningar av RSA

RSA-systemet används för programvaruskydd och i digitala signatursystem .

Det används också i PGP öppna krypteringssystem och andra krypteringssystem (till exempel DarkCryptTC ​​och xdc-formatet) i kombination med symmetriska algoritmer .

På grund av den låga krypteringshastigheten krypteras meddelanden vanligtvis med mer effektiva symmetriska algoritmer med en slumpmässig sessionsnyckel (till exempel AES , IDEA , Serpent , Twofish ), och endast denna nyckel krypteras med RSA, så ett hybridkryptosystem implementeras . En sådan mekanism har potentiella sårbarheter på grund av behovet av att använda en kryptografiskt stark pseudoslumptalsgenerator för att generera en slumpmässig symmetrisk krypteringssessionsnyckel.

Anteckningar

  1. ↑ Bevakar fortfarande hemligheter efter år av attacker, RSA tjänar utmärkelser för sina grundare - Society for Industrial and Applied Mathematics .
  2. Introduktion till modern kryptografi  (engelska) - 2 - CRC Press , 2015. - P. 411. - 583 s. — ISBN 978-1-4665-7026-9
  3. 1 2 Bakhtiari, Maarof, 2012 , sid. 175.
  4. A Quarter Century of Recreational Mathematics, av Martin Gardner  (engelska)  (länk ej tillgänglig) . Scientific American. — "Ronald L. Rivest vid Massachusetts Institute of Technology tillät mig att vara den första att avslöja - i kolumnen i augusti 1977 - det "publickey" chiffersystem som han var med och uppfann." Hämtad 3 mars 2012. Arkiverad från originalet 23 juni 2012.
  5. 12 Gardner , 1977 .
  6. Bruce Schneier. Factoring - State of the Art och prognoser  (engelska)  (inte tillgänglig länk) (12 februari 1995). Hämtad 3 mars 2012. Arkiverad från originalet 23 juni 2012.
  7. Donald T. Davis. En diskussion om RSA-129-aktivitet  (engelska)  (länk ej tillgänglig) (25 november 2003). Hämtad 3 mars 2012. Arkiverad från originalet 23 juni 2012.
  8. Chmora A. L. 4.6.4. Kraftattack baserad på distribuerad beräkning // Modern tillämpad kryptografi. - 2002. - 2000 exemplar.  — ISBN 5-85438-046-3 .
  9. Rivest, Shamir, Adleman, 1978 .
  10. Ronald L. Rivest et al. Kryptografiskt kommunikationssystem och metod
  11. Adam Back. PGP-tidslinje  (engelska)  (nedlänk) . Hämtad 3 mars 2012. Arkiverad från originalet 23 juni 2012.
  12. J. Linn. Sekretessförbättring för e-post via Internet: Del III - Algoritmer, lägen och identifierare  (engelska)  (länk ej tillgänglig) (augusti 1989). Hämtad 18 mars 2012. Arkiverad från originalet 23 juni 2012.
  13. RSA Security Inc. Företagshistorik  (engelska)  (länk ej tillgänglig) . Finansieringsuniversum. Hämtad 18 mars 2012. Arkiverad från originalet 23 juni 2012.
  14. CC Cocks En anteckning om "icke-hemlig kryptering" Arkiverad från originalet den 4 augusti 2009.  (engelska) 20 november 1973
  15. 1 2 3 Menezes, Oorschot, Vanstone, 1996 , 8.2. RSA-kryptering med offentlig nyckel.
  16. Boneh, 1999 .
  17. 1 2 Bruce Schneier. Tillämpad kryptografi 2nd edition C++-protokoll, algoritmer och källor
  18. Rivest, Shamir, Adleman, 1978 , s. 7-8.
  19. Rivest, Shamir, Adleman, 1978 , sid. åtta.
  20. 1 2 3 H. SMART Programmeringsvärlden Kryptografi - ed. Technosphere, Moskva 2006
  21. Yang S. Y. Cryptanalysis of RSA. - M.-Izhevsk: Forskningscentrum "Regular and Chaotic Dynamics", Izhevsk Institute of Computer Research, 2011. - 312 sid.
  22. RSA-768 faktoriseringsmeddelande Arkiverad 13 april 2014 på Wayback Machine 
  23. RSA-768 Factorization Arkiverad 13 december 2012 på Wayback Machine 
  24. Datum för utfasning av MD5-baserade signaturer och 1024-bitars moduler . Hämtad 2 mars 2013. Arkiverad från originalet 20 november 2012.

Litteratur