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] .
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] .
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,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;Anta att Bob vill skicka ett meddelande till Alice .
Meddelanden är heltal i intervallet från till , coprime till n, dvs. .
Krypteringsalgoritm [15] :
|
Dekrypteringsalgoritm :
|
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.
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 :
|
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.
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
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 |
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 :
|
Algoritm :
|
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.
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] .
MerEftersom 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 .
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] .
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.
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:
på
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 :
sedan en av konvergenterna i den fortsatta fraktionsexpansionen .
Anta att vi har en modul och Låt angriparen veta krypteringsexponenten E, som har egenskapen
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
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
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.
Public key kryptosystem | |||||||||
---|---|---|---|---|---|---|---|---|---|
Algoritmer |
| ||||||||
Teori |
| ||||||||
Standarder |
| ||||||||
Ämnen |
|