RSA-kryptering är ett system som löser vad som en gång var ett av de största problemen i kryptografi: Hur kan du skicka någon ett kodat meddelande utan att ha möjlighet att tidigare dela koden med dem?
den här artikeln lär dig allt du behöver veta om hur RSA-kryptering utvecklades, hur det fungerar, matematiken bakom den, vad den används för samt några av de största säkerhetsproblemen som den står inför., Att lära sig om RSA ger dig några grundläggande kunskaper som hjälper dig att förstå hur många delar av vårt online-liv hålls säkra.
Vad är RSA-kryptering?
låt oss säga att du vill berätta för din vän en hemlighet. Om du är bredvid dem, kan du bara viska det. Om du är på motsatta sidor av landet, som uppenbarligen inte kommer att fungera. Du kan skriva ner det och skicka det till dem, eller använda telefonen, men var och en av dessa kommunikationskanaler är osäker och alla med en tillräckligt stark motivation kan enkelt fånga upp meddelandet.,
om hemligheten var viktig nog, skulle du inte riskera att skriva ner det normalt–spioner eller en skurk postanställd kunde Titta igenom din post. På samma sätt kan någon knacka på din telefon utan din vetskap och logga varje enskilt samtal du gör.
en lösning för att förhindra att avlyssnare kommer åt meddelandeinnehåll är att kryptera det. Detta innebär i princip att lägga till en kod i meddelandet som ändrar det till en förvirrad röra. Om din kod är tillräckligt komplex är de enda personer som kommer att kunna komma åt det ursprungliga meddelandet de som har tillgång till koden.,
om du hade en chans att dela koden med din vän i förväg, kan någon av er skicka ett krypterat meddelande när som helst och veta att ni två är de enda som har möjlighet att läsa meddelandets innehåll. Men vad händer om du inte hade en chans att dela koden i förväg?
detta är ett av de grundläggande problemen med kryptografi, som har åtgärdats av krypteringssystem med öppen nyckel (även känd som asymmetrisk kryptering) som RSA.
under RSA-kryptering krypteras meddelanden med en kod som kallas en offentlig nyckel, som kan delas öppet., På grund av vissa distinkta matematiska egenskaper hos RSA-algoritmen, när ett meddelande har krypterats med den offentliga nyckeln, kan det bara dekrypteras av en annan nyckel, känd som den privata nyckeln. Varje RSA-användare har ett nyckelpar bestående av sina offentliga och privata nycklar. Som namnet antyder måste den privata nyckeln hållas hemlig.
Krypteringsscheman för offentlig nyckel skiljer sig från symmetrisk nyckelkryptering, där både krypterings-och dekrypteringsprocessen använder samma privata nyckel., Dessa skillnader gör Offentlig nyckelkryptering som RSA användbar för att kommunicera i situationer där det inte har varit möjligt att på ett säkert sätt distribuera nycklar i förväg.
symmetriska nyckelalgoritmer har sina egna program, såsom kryptering av data för personligt bruk, eller för när det finns säkra kanaler som de privata nycklarna kan delas över.
Se även: kryptering med öppen nyckel
var används RSA-kryptering?
RSA-kryptering används ofta i kombination med andra krypteringssystem, eller för digitala signaturer som kan bevisa äktheten och integriteten hos ett meddelande., Det används inte i allmänhet för att kryptera hela meddelanden eller filer, eftersom det är mindre effektivt och mer resurskrävande än symmetrisk nyckelkryptering.
för att göra saker effektivare kommer en fil i allmänhet att krypteras med en symmetrisk nyckelalgoritm, och sedan kommer den symmetriska nyckeln att krypteras med RSA-kryptering. Under denna process kommer endast en enhet som har tillgång till RSA private key att kunna dekryptera den symmetriska nyckeln.
utan att kunna komma åt den symmetriska nyckeln kan den ursprungliga filen inte dekrypteras., Denna metod kan användas för att hålla meddelanden och filer säkra, utan att ta för lång tid eller förbrukar för många beräkningsresurser.
RSA-kryptering kan användas i ett antal olika system. Den kan implementeras i OpenSSL, wolfCrypt, cryptlib och ett antal andra kryptografiska bibliotek.
som ett av de första allmänt använda krypteringssystemen med öppen nyckel lade RSA grunden för en stor del av vår säkra kommunikation. Det användes traditionellt i TLS och var också den ursprungliga algoritmen som användes i PGP-kryptering., RSA ses fortfarande i en rad webbläsare, e-post, VPN, chatt och andra kommunikationskanaler.
RSA används också ofta för att göra säkra anslutningar mellan VPN-klienter och VPN-servrar. Under protokoll som OpenVPN kan TLS handskakningar använda RSA-algoritmen för att utbyta nycklar och skapa en säker kanal.
bakgrunden till RSA-kryptering
som vi nämnde i början av den här artikeln, före kryptering med öppen nyckel, var det en utmaning att kommunicera säkert om det inte hade varit en chans att säkert byta nycklar i förväg., Om det inte fanns möjlighet att dela koden före tid, eller en säker kanal genom vilken nycklarna kunde distribueras, fanns det inget sätt att kommunicera utan hotet om att fiender kunde avlyssna och komma åt meddelandeinnehållet.
det var inte förrän på 1970-talet som saker verkligen började förändras. Den första stora utvecklingen mot vad vi nu kallar kryptering med offentlig nyckel publicerades i början av decenniet av James H. Ellis., Ellis kunde inte hitta ett sätt att genomföra sitt arbete, men det utvidgades av hans kollega Clifford Cocks för att bli vad vi nu vet som RSA-kryptering.
den sista delen av pusslet är vad vi nu kallar Diffie-Hellman key exchange. Malcolm J. Williamson, en annan medarbetare, räknade ut ett system som gjorde det möjligt för två parter att dela en krypteringsnyckel, även om kanalen övervakades av motståndare.
allt detta arbete utfördes vid den brittiska underrättelsetjänsten, Government Communications Headquarters (GCHQ), som höll upptäckten klassificerad., Delvis på grund av tekniska begränsningar kunde GCHQ inte se en användning för kryptering med offentlig nyckel vid den tiden, så utvecklingen satt idly på hyllan som samlade damm. Det var inte förrän 1997 som arbetet avklassificerades och RSA: s ursprungliga uppfinnare erkändes.
flera år senare började liknande begrepp utvecklas på det offentliga området. Ralph Merkle skapat en tidig form av kryptering med offentliga nycklar, som påverkas Whitfield Diffie och Martin Hellman i utformningen av Diffie-Hellman nyckelutbyte.,
Diffie och Hellmans idéer saknade en viktig aspekt som skulle göra sitt arbete till en grund för kryptering av offentlig nyckel. Detta var en enkelriktad funktion som skulle vara svår att invertera. 1977 kom Ron Rivest, Adi Shamir och Leonard Adleman, vars efternamn bildar RSA-akronymen, fram till en lösning efter ett år av arbete på problemet.
mit-baserade akademiker gjorde sitt genombrott efter en påskfest 1977., Efter en natt av att dricka gick Nitest hem, men istället för att sova tillbringade han kvällen febrilt med att skriva ett papper som formaliserade sin idé för den nödvändiga envägsfunktionen.
idén patenterades 1983 av MIT, men det var inte förrän de tidiga dagarna av internet som RSA-algoritmen började se utbredd adoption som ett viktigt säkerhetsverktyg.
hur fungerar RSA-kryptering?
Följande kommer att bli lite av en förenkling, eftersom för många läsare förmodligen har blivit Ärrade av sin gymnasielärare., För att hålla matten från att bli för out-of-hand, kommer vi att förenkla vissa begrepp och använda mycket mindre tal. I verkligheten använder RSA-kryptering primtal som är mycket större i storlek och det finns några andra komplexiteter.
det finns flera olika begrepp som du måste få huvudet runt innan vi kan förklara hur allt passar ihop. Dessa inkluderar trapdoor-funktioner, genererar primtal, Carmichaels totient-funktion och de separata processerna som är involverade i att beräkna de offentliga och privata nycklarna som används i krypterings-och dekrypteringsprocesserna.,
Trap door funktioner
RSA-kryptering fungerar under förutsättningen att algoritmen är lätt att beräkna i en riktning, men nästan omöjligt i omvänd. Som ett exempel, om du fick veta att 701,111 är en produkt av två primtal, skulle du kunna räkna ut vad dessa två siffror är?
även med en miniräknare eller en dator skulle de flesta av oss inte ha någon aning om var vi ska börja, än mindre kunna räkna ut svaret. Men om vi vänder saker runt, blir det mycket lättare., Vad är resultatet av:
907 x 773
om du var uttråkad nog skulle du ha kunnat piska ut din telefon eller kanske beräkna den i ditt huvud för att upptäcka att svaret är den tidigare nämnda 701,111. Detta 907 och 773 är de primtal som svarar på vår första fråga, vilket visar oss att vissa ekvationer kan vara lätt att räkna ut ett sätt, men till synes omöjligt i omvänd ordning.
en annan intressant aspekt av denna ekvation är att det är enkelt att räkna ut ett av primtal om du redan har den andra, såväl som produkten., Om du får veta att 701,111 är resultatet av 907 multiplicerat med ett annat primtal, kan du räkna ut det andra prime med följande ekvation:
701,111 907 = 773
eftersom förhållandet mellan dessa siffror är enkelt att beräkna i en riktning, men otroligt svårt i omvänd, är ekvationen känd som en fälla dörrfunktion. Var medveten om att medan ovanstående exempel är svårt för människor att räkna ut, kan datorer göra operationen i en trivial tid.
på grund av detta använder RSA mycket större tal., Storleken på primerna i en riktig RSA-implementering varierar, men i 2048-bitars RSA skulle de komma ihop för att göra nycklar som är 617 siffror långa. För att hjälpa dig att visualisera det, skulle en nyckel vara ett antal av denna storlek:
generera primtal
de trap door-funktioner som nämns ovan utgör grunden för hur offentliga och privata nyckelkrypteringssystem fungerar. Deras egenskaper tillåter att offentliga nycklar delas utan att äventyra meddelandet eller avslöja den privata nyckeln. De tillåter också att data krypteras med en nyckel på ett sätt som bara kan dekrypteras av den andra nyckeln från paret.,
det första steget att kryptera ett meddelande med RSA är att generera nycklarna. För att göra detta behöver vi två primtal (p och q) som väljs med ett primalitetstest. Ett primalitetstest är en algoritm som effektivt hittar primtal, såsom Rabin-Miller primality test.
primtal i RSA måste vara mycket stora, och även relativt långt ifrån varandra. Siffror som är små eller närmare varandra är mycket lättare att knäcka. Trots detta kommer vårt exempel att använda mindre tal för att göra det lättare att följa och beräkna.,
låt oss säga att primalitetstestet ger oss de primtal som vi använde ovan, 907 och 773. Nästa steg är att upptäcka modulen (n) med följande formel:
n = p x q
där p = 907 och q = 773
därför:
n = 907 x 773
n = 701,111
Carmichaels totientfunktion
När vi har n använder vi Carmichaels totientfunktion:
λ(n) = LCM (p − 1, Q − 1)
om det har varit ett tag sedan du har träffat matte läroböcker, kan ovanstående ser lite skrämmande., Du kan hoppa över den här delen och bara lita på att matematiken fungerar, annars hålla fast vid oss för några fler beräkningar. Allt kommer att förklaras i så mycket detalj som möjligt för att hjälpa dig att få huvudet runt grunderna.
för dem som inte är medvetna representerar λ(n) Carmichaels totient för n, medan lcm betyder den lägsta gemensamma multiplen, vilket är det lägsta numret som både p och q kan dela in i. Det finns några olika sätt att räkna ut detta, men det enklaste är att lita på en online-kalkylator för att göra ekvationen för dig., Så låt oss sätta våra siffror i ekvationen:
λ (701,111) = lcm (907 − 1, 773 − 1)
λ(701,111) = lcm (906, 772)
med hjälp av kalkylatorn länkad ovan ger detta oss:
λ(701,111) = 349,716
genererar den offentliga nyckeln
Nu när vi har Carmichaels totient av våra primtal är det dags att räkna ut vår offentliga nyckel. – herr talman! Under RSA består offentliga nycklar av ett primtal e, liksom n. numret e kan vara allt mellan 1 och värdet för λ(n), vilket i vårt exempel är 349,716.,
eftersom den offentliga nyckeln delas öppet är det inte så viktigt för e att vara ett slumptal. I praktiken är e i allmänhet inställd på 65.537, för när mycket större antal väljs slumpmässigt gör det kryptering mycket mindre effektiv. För dagens exempel kommer vi att hålla siffrorna små för att göra beräkningarna effektiva. Låt oss säga:
e = 11
vår slutliga krypterade data kallas ciphertext (C). Vi härleder det från vårt plaintext-meddelande (m), genom att tillämpa den offentliga nyckeln med följande formel:
c = me mod n
Vi har redan kommit med e och vi vet n också., Det enda vi behöver förklara är mod. Det är lite ur djupet av den här artikeln, men det hänvisar till en modulo operation, vilket i huvudsak betyder resten kvar när du delar den ena sidan av den andra. Till exempel:
10 mod 3 = 1
detta beror på att 3 går in i 10 tre gånger, med en återstod av 1.
tillbaka till vår ekvation. För att hålla det enkelt, låt oss säga att meddelandet (m) som vi vill kryptera och hålla hemligt är bara ett enda nummer, 4., Låt oss koppla in allt:
c = me mod n
c = 411 mod 701,111
c = 4,194,304 mod 701,111
igen, för att göra modulo-operationen lätt, kommer vi att använda en online-kalkylator, men du är välkommen att räkna ut det själv. Genom att ange 4,194,304 i online-kalkylatorn ger det oss:
c = 688,749
därför när vi använder RSA för att kryptera vårt meddelande, 4, med vår offentliga nyckel, ger det oss ciphertext av 688,749., De tidigare stegen kan ha verkade lite för matematiska tunga, men det är viktigt att upprepa vad som faktiskt har hänt.
vi hade ett meddelande om 4, som vi ville hålla hemligt. Vi tillämpade en offentlig nyckel till det, vilket gav oss det krypterade resultatet av 688.749. Nu när den är krypterad kan vi säkert skicka numret 688.749 till ägaren av nyckelparet. De är den enda personen som kommer att kunna dekryptera den med sin privata nyckel. När de dekrypterar det kommer de att se meddelandet som vi verkligen skickade, 4.,
generera den privata nyckeln
i RSA-kryptering, när data eller ett meddelande har förvandlats till ciphertext med en offentlig nyckel, kan den endast dekrypteras av den privata nyckeln från samma nyckelpar. Privata nycklar består av d och n. vi vet redan n, och följande ekvation används för att hitta d:
d =1/e mod λ(n)
i genereringen av den offentliga nyckelsektionen ovan bestämde vi oss redan för att i vårt exempel skulle e motsvara 11. På samma sätt vet vi att λ (n) motsvarar 349,716 från vårt tidigare arbete under Carmichaels totientfunktion., Saker blir lite mer komplicerade när vi stöter på den här delen av formeln:
1/e mod
den här ekvationen kan se ut som om den ber dig att dela 1 med 11, men det är inte fallet. I stället symboliserar detta bara att vi måste beräkna den modulära inversen av e(som i detta fall är 11) Och λ (n) (vilket i detta fall är 349,716).
detta innebär i huvudsak att vi istället för att utföra en standard modulo-operation använder invers istället., Detta finns normalt med den utökade euklidiska algoritmen, men det är lite utanför ramen för den här artikeln, Så vi kommer bara att fuska och använda en online-kalkylator istället., Nu som vi förstår allt som händer, låt oss kontakt med vår information i formeln:
d =1/11 mod 349,716
för Att göra detta, helt enkelt in 11 (eller något annat värde som du kan ha för e om du försöker det här med dina egna exempel) där det står Heltal och 349,716 (eller något annat värde som du kan ha för att λ(n) om du försöker det här med dina egna exempel) där det står Modulo i online-kalkylator som var länkade ovan., Om du har gjort det korrekt bör du få ett resultat där:
D = 254, 339
Nu när vi har värdet för d kan vi dekryptera meddelanden som krypterades med vår offentliga nyckel med följande formel:
m = cd mod n
Vi kan nu gå tillbaka till ciphertext som vi krypterade under generera den privata nyckelsektionen. När vi krypterade meddelandet med den offentliga nyckeln gav det oss ett värde för c på 688.749. Från ovan vet vi att d är lika med 254,339. Vi vet också att n är lika med 701,111. Detta ger oss:
m = 688,749254,339 mod 701,111.,
som du kanske har märkt kan försök att ta ett nummer till 254,339: e strömmen vara lite mycket för de flesta normala räknare. Istället kommer vi att använda en online RSA dekryptering kalkylator. Om du ville använda en annan metod skulle du tillämpa befogenheterna som du normalt skulle och utföra modulusoperationen på samma sätt som vi gjorde i genereringen av den offentliga nyckelsektionen.,
i kalkylatorn länkad ovan anger du 701,111 där det står Leveransmodulen: n, 254,399 där det står dekrypteringsnyckel: D och 688,749 där det står Ciphertext-meddelande i numerisk form, som visas nedan:
När du har angett data, tryck dekryptera, vilket kommer att sätta siffrorna genom dekrypteringsformeln som listades ovan. Detta ger dig det ursprungliga meddelandet i rutan nedan. Om du har gjort allt korrekt bör du få ett svar på 4, vilket var det ursprungliga meddelandet som vi krypterade med vår offentliga nyckel.,
hur RSA-kryptering fungerar i praktiken
ovanstående avsnitt bör ge dig en rimlig uppfattning om hur matematiken bakom kryptering med offentlig nyckel fungerar. Det kan vara lite förvirrande, men även de som inte förstod ekvationernas invecklingar kan förhoppningsvis ta bort viktig information om processen.
i stegen ovan har vi visat hur två enheter säkert kan kommunicera utan att tidigare ha delat en kod på förhand. Först måste de alla ställa in sina egna nyckelpar och dela den offentliga nyckeln med varandra., De två enheterna måste hålla sina privata nycklar hemliga för att deras kommunikation ska förbli säker.
när avsändaren har den offentliga nyckeln för sin mottagare kan de använda den för att kryptera de data som de vill hålla sig säkra. När den har krypterats med en offentlig nyckel kan den endast dekrypteras av den privata nyckeln från samma nyckelpar. Även samma offentliga nyckel kan inte användas för att dekryptera data. Detta beror på egenskaperna hos fälldörr funktioner som vi nämnde ovan.
när mottagaren tar emot det krypterade meddelandet använder de sin privata nyckel för att komma åt data., Om mottagaren vill returnera kommunikation på ett säkert sätt kan de sedan kryptera sitt meddelande med den offentliga nyckeln till den part de kommunicerar med. Återigen, när den har krypterats med den offentliga nyckeln, är det enda sättet att informationen kan nås via den matchande privata nyckeln.
På detta sätt kan RSA-kryptering användas av tidigare okända parter för att säkert skicka data mellan sig. Betydande delar av de kommunikationskanaler som vi använder i våra online-liv byggdes upp från denna stiftelse.,
hur krypteras mer komplicerade meddelanden med RSA?
i vårt exempel förenklade vi saker mycket för att göra det lättare att förstå, varför vi bara krypterade ett meddelande med ”4”. Att kunna kryptera numret 4 verkar inte särskilt användbart, så du kanske undrar hur du kan kryptera en mer komplicerad uppsättning data, till exempel en symmetrisk nyckel (vilket är den vanligaste användningen av RSA) eller till och med ett meddelande.,
vissa människor kan vara förbryllade över hur en nyckel som ”n38cb29fkbjh138g7fqijnf3kaj84f8b9f…” eller ett meddelande som ”köp mig en smörgås” kan krypteras av en algoritm som RSA, som behandlar siffror och inte bokstäver. Verkligheten är att all information som våra datorer processen lagras i binär (1s och 0s) och vi använder kodningsstandarder som ASCII eller Unicode för att representera dem på ett sätt som människor kan förstå (bokstäver).,
det betyder att nycklar som ”n38cb29fkbjh138g7fqijnf3kaj84f8b9f…” och meddelanden som” köp mig en smörgås ” redan finns som siffror, som lätt kan beräknas i RSA-algoritmen. De siffror som de representeras av är mycket större och svårare för oss att hantera, varför vi föredrar att hantera alfanumeriska tecken snarare än ett virrvarr av binär.
om du vill kryptera en längre sessionsnyckel eller ett mer komplext meddelande med RSA, skulle det helt enkelt innebära ett mycket större antal.,
stoppning
När RSA implementeras använder den något som kallas stoppning för att förhindra ett antal attacker. För att förklara hur det fungerar börjar vi med ett exempel. Låt oss säga att du skickade ett kodat meddelande till en vän:
kära Karen,
Jag hoppas att du mår bra. Ska vi fortfarande äta middag i morgon?
din vänliga hälsningar,
James
låt oss säga att du kodade meddelandet på ett enkelt sätt genom att ändra varje bokstav till den som följer det i alfabetet. Detta skulle ändra meddelandet till:
Efbs Lbsfo,
j ipqf zpv BSF xfmm., Bsf xf tujmm ibwjoh ejoofs upnpsspx?
Zpvst tjodfsfmz,
Kbnft
om dina fiender avlyssnade detta brev finns det ett knep som de kan använda för att försöka knäcka koden. De kan titta på formatet på ditt brev och försöka gissa vad meddelandet kan säga. De vet att människor normalt börjar sina brev med ”Hej”, ”Hej”, ”kära” eller ett antal andra konventioner.
om de försökte tillämpa ”hej” eller ”Hej” som det första ordet, skulle de se att det inte skulle passa antalet tecken. De kunde sedan försöka ”kära”., Det passar, men det betyder inte nödvändigtvis någonting. Angriparna skulle bara prova det och se var det ledde dem. Så de skulle ändra bokstäverna ”E”, ”f”, ”b” och ”s” med ”D”, ”E”, ”A” respektive ”r”. Detta skulle ge dem:
kära Laseo,
j ipqe zpv är xemm. Är xe tujmm iawjoh djooes upnpsspx?
Zpvrt tjoderemz,
Kanet
det ser fortfarande ganska förvirrande ut, så angriparna kan försöka titta på några andra konventioner, som hur vi avslutar våra brev. Människor lägger ofta till” från ”eller” vänliga hälsningar ” i slutet, men ingen av dessa passar formatet., Istället kan angriparna försöka ”din uppriktigt” och ersätta de andra bokstäverna för att se var det får dem. Genom att ändra ”z”,” p”,” v”,” t”,” j ”” o”,” d ”och” m ”med” y”,” o”,” u”,” S”,” I”,” N”,” C ”respektive” l ” skulle de få:
kära Lasen,
jag ioqe du är xell. Är xe tuill iawinh dinnes uonossox?
din vänliga hälsningar,
Kanet
Efter den modifieringen ser det ut som angriparna börjar komma någonstans. De har hittat orden” jag”,” du ”och” är”, förutom de ord som utgjorde deras första gissningar.,
eftersom orden är i rätt grammatisk ordning kan angriparna vara ganska övertygade om att de är på väg i rätt riktning. Vid det här laget har de förmodligen också insett att koden involverade varje bokstav som ändras till den som följer den i alfabetet. När de inser detta, det gör det enkelt att översätta resten och läsa det ursprungliga meddelandet.
ovanstående exempel var bara en enkel kod, men som du kan se kan strukturen i ett meddelande ge angripare ledtrådar om innehållet., Visst, det var svårt att räkna ut meddelandet från bara dess struktur och det tog några utbildade gissningar, men du måste komma ihåg att datorer är mycket bättre på att göra detta än vi är. Detta innebär att de kan användas för att räkna ut mycket mer komplexa koder i en mycket kortare tid, baserat på ledtrådar som kommer från strukturen och andra element.
om strukturen kan leda till att en kod knäcks och avslöjar innehållet i ett meddelande, behöver vi något sätt att dölja strukturen för att hålla meddelandet säkert. Detta leder oss till stoppning.,
När ett meddelande är stoppat läggs randomiserade data till för att dölja de ursprungliga formateringstyckena som kan leda till att ett krypterat meddelande bryts. Med RSA är sakerna lite mer komplicerade, eftersom en krypterad Nyckel inte har den uppenbara formateringen av ett brev som bidrog till att ge oss ledtrådar i vårt ovanstående exempel.
trots detta kan motståndare använda ett antal attacker för att utnyttja de matematiska egenskaperna hos en kod och bryta krypterade data. På grund av detta hot använder implementeringar av RSA padding-system som oaep för att bädda in extra data i meddelandet., Att lägga till denna stoppning innan meddelandet är krypterat gör RSA mycket säkrare.
Signeringsmeddelanden
RSA kan användas för mer än att bara kryptera data. Dess egenskaper gör det också ett användbart system för att bekräfta att ett meddelande har skickats av den enhet som påstår sig ha skickat det, samt att bevisa att ett meddelande inte har ändrats eller manipulerats.,
När någon vill bevisa äktheten i sitt meddelande kan de beräkna en hash (en funktion som tar data av godtycklig storlek och gör den till ett fast längdvärde) av plaintext och sedan underteckna den med sin privata nyckel. De signerar hashen genom att tillämpa samma formel som används vid dekryptering (m = cd mod n). När meddelandet har undertecknats skickar de Denna digitala signatur till mottagaren tillsammans med meddelandet.,
om en mottagare tar emot ett meddelande med en digital signatur kan de använda signaturen för att kontrollera om meddelandet signerades autentiskt av den privata nyckeln till den person som påstår sig ha skickat det. De kan också se om meddelandet har ändrats av angripare efter att det skickades.
för att kontrollera den digitala signaturen använder mottagaren först samma hashfunktion för att hitta hashvärdet för meddelandet de mottog., Mottagaren tillämpar sedan avsändarens offentliga nyckel till den digitala signaturen, med hjälp av krypteringsformeln (c = me mod n), för att ge dem hashen för den digitala signaturen.
genom att jämföra hashen för meddelandet som mottogs tillsammans med hashen från den krypterade digitala signaturen kan mottagaren avgöra om meddelandet är autentiskt. Om de två värdena är desamma har meddelandet inte ändrats sedan det undertecknades av den ursprungliga avsändaren. Om meddelandet hade ändrats av ens ett enda tecken skulle hashvärdet vara helt annorlunda.,
RSA security& attacker
liksom de flesta cryptosystems beror säkerheten för RSA på hur den implementeras och används. En viktig faktor är storleken på nyckeln. Ju större antal bitar i en nyckel (i huvudsak hur länge nyckeln är) desto svårare är det att spricka genom attacker som brute-forcing och factoring.
eftersom asymmetriska nyckelalgoritmer som RSA kan brytas av heltalsfaktorisering, medan symmetriska nyckelalgoritmer som AES inte kan, måste RSA-nycklar vara mycket längre för att uppnå samma säkerhetsnivå.,
för närvarande är den största nyckelstorleken som har räknats 768 bitar lång. Detta gjordes av ett team av akademiker under en tvåårsperiod, med hundratals maskiner.
eftersom factoring slutfördes i slutet av 2009 och datorkraften har ökat betydligt sedan den tiden, kan det antas att ett försök med liknande intensitet nu kan faktor en mycket större RSA-nyckel.
trots detta, den tid och resurser som behövs för denna typ av attack sätter det utom räckhåll för de flesta hackare och i sfären av nationalstater., Den bästa nyckellängden att använda beror på din individuella hotmodell. National Institute of Standards and Technology rekommenderar en minsta nyckelstorlek på 2048-bit, men 4096-bitnycklar används också i vissa situationer där hotnivån är högre.
Factoring är bara ett sätt att RSA kan brytas. Ett antal andra attacker har potential att bryta krypteringen med en mindre mängd resurser, men dessa beror på genomförandet och andra faktorer, inte nödvändigtvis RSA själv. Några av dessa inkluderar:
är primerna verkligen slumpmässiga?,
vissa implementeringar av RSA använder svaga slumptalsgeneratorer för att komma fram till primerna. Om dessa siffror inte är tillräckligt slumpmässiga, det gör det mycket lättare för angripare att faktor dem och bryta krypteringen. Detta problem kan undvikas genom att använda en kryptografiskt säker pseudo-slumptalsgenerator.
Dålig nyckelgenerering
RSA-nycklar måste falla inom vissa parametrar för att de ska vara säkra. Om primes p och q är för nära varandra kan nyckeln lätt upptäckas. På samma sätt kan numret d som utgör en del av den privata nyckeln inte vara för litet., Ett lågt värde gör det enkelt att lösa. Det är viktigt att dessa siffror är tillräckligt långa för att hålla din nyckel säker.
sidokanalattacker
det här är en typ av attack som inte bryter RSA direkt, utan istället använder information från implementeringen för att ge angripare tips om krypteringsprocessen. Dessa attacker kan inkludera saker som att analysera den mängd kraft som används, eller gren förutsägelse analys, som använder exekveringstid mätningar för att upptäcka den privata nyckeln.
en annan typ av sidokanal attack är känd som en timing attack., Om en angripare har möjlighet att mäta dekrypteringstiden på sin måldator för ett antal olika krypterade meddelanden, kan denna information göra det möjligt för angriparen att fastställa målets privata nyckel.
de flesta implementeringar av RSA undviker denna attack genom att lägga till ett engångsvärde under krypteringsprocessen, vilket tar bort denna korrelation. Denna process kallas kryptografisk bländande.
är RSA-kryptering säker för framtiden?
den goda nyheten är att RSA anses säkert att använda, trots dessa möjliga attacker., Förbehållet är att det måste genomföras korrekt och använda en nyckel som faller inom de korrekta parametrarna. Som vi just har diskuterat kan implementeringar som inte använder stoppning, använder otillräckligt stora primtal eller har andra sårbarheter inte anses vara säkra.
om du vill använda RSA-kryptering, se till att du använder en nyckel på minst 1024 bitar. De med högre hot modeller bör hålla sig till nycklar 2048 eller 4096 bitar om de vill använda RSA med tillförsikt., Så länge du är medveten om de svagheter som RSA har och använder den korrekt, bör du känna dig säker att använda RSA för nyckeldelning och andra liknande uppgifter som kräver kryptering med öppen nyckel.
Se även: vanliga krypteringstyper förklaras