RSA-kryptering er et system, der løser det, der engang var et af de største problemer i kryptografi: Hvordan kan du sende en kodet besked uden at have en mulighed for tidligere at dele koden med dem?
Denne artikel lærer dig alt hvad du har brug for at vide om, hvordan RSA-kryptering blev udviklet, hvordan det fungerer, matematikken bag det, hvad det bruges til, samt nogle af de største sikkerhedsproblemer, den står overfor., At lære om RSA vil give dig nogle grundlæggende viden, der hjælper dig med at forstå, hvor mange dele af vores online liv holdes sikker.
Hvad er RSA-kryptering?
lad os sige, at du vil fortælle din ven en hemmelighed. Hvis du er lige ved siden af dem, kan du bare hviske det. Hvis du er på modsatte sider af landet, vil det naturligvis ikke fungere. Du kan skrive det ned og sende det til dem eller bruge telefonen, men hver af disse kommunikationskanaler er usikker, og enhver med en stærk nok motivation kunne let opfange beskeden.,
Hvis hemmeligheden var vigtig nok, ville du ikke risikere at skrive den ned normalt–spioner eller en useriøs postmedarbejder kunne kigge gennem din mail. Ligeledes kan nogen trykke på din telefon uden din viden og logge hvert eneste opkald, du foretager.
en løsning for at forhindre aflytninger i at få adgang til meddelelsesindhold er at kryptere det. Dette betyder dybest set at tilføje en kode til meddelelsen, der ændrer den til et rodet rod. Hvis din kode er tilstrækkelig kompleks, er de eneste, der kan få adgang til den originale meddelelse, dem, der har adgang til koden.,
Hvis du havde en chance for at dele koden med din ven på forhånd, kan en af jer til enhver tid sende en krypteret besked, vel vidende at i to er de eneste med evnen til at læse meddelelsens indhold. Men hvad nu hvis du ikke havde en chance for at dele koden på forhånd?
Dette er et af de grundlæggende problemer med kryptografi, som er blevet behandlet af offentlige nøglekrypteringsordninger (også kendt som asymmetrisk kryptering) som RSA.
under RSA-kryptering krypteres meddelelser med en kode kaldet en offentlig nøgle, som kan deles åbent., På grund af nogle forskellige matematiske egenskaber ved RSA-algoritmen, når en meddelelse er krypteret med den offentlige nøgle, kan den kun dekrypteres af en anden nøgle, kendt som den private nøgle. Hver RSA-bruger har et nøglepar bestående af deres offentlige og private nøgler. Som navnet antyder, skal den private nøgle holdes hemmelig.offentlige nøglekrypteringsordninger adskiller sig fra symmetrisk nøglekryptering, hvor både krypterings-og dekrypteringsprocessen bruger den samme private nøgle., Disse forskelle gør offentlig nøglekryptering som RSA nyttig til kommunikation i situationer, hvor der ikke har været mulighed for sikkert at distribuere nøgler på forhånd.
symmetriske nøglealgoritmer har deres egne applikationer, såsom kryptering af data til personlig brug, eller når der er sikre kanaler, som de private nøgler kan deles over.
Se også: offentlig nøglekryptografi
hvor bruges RSA-kryptering?
RSA-kryptering bruges ofte i kombination med andre krypteringsordninger eller til digitale signaturer, der kan bevise ægtheden og integriteten af en meddelelse., Det bruges generelt ikke til at kryptere hele meddelelser eller filer, fordi det er mindre effektivt og mere ressourcetung end symmetrisk nøglekryptering.
for at gøre tingene mere effektive, en fil vil generelt blive krypteret med en symmetrisk-key algoritme, og derefter den symmetriske nøgle vil blive krypteret med RSA-kryptering. Under denne proces vil kun en enhed, der har adgang til den private RSA-nøgle, være i stand til at dekryptere den symmetriske nøgle.
uden at kunne få adgang til den symmetriske nøgle, kan den originale fil ikke dekrypteres., Denne metode kan bruges til at holde meddelelser og filer sikre uden at tage for lang tid eller forbruge for mange beregningsressourcer.
RSA-kryptering kan bruges i en række forskellige systemer. Det kan implementeres i OpenSSL, wololfcrypt, cryptlib og en række andre kryptografiske biblioteker.
som et af de første udbredte krypteringsordninger med offentlig nøgle lagde RSA grundlaget for meget af vores sikre kommunikation. Det blev traditionelt brugt i TLS og var også den oprindelige algoritme, der anvendes i PGP-kryptering., RSA ses stadig i en række browebbro .sere, e-mail, VPN ‘ er, chat og andre kommunikationskanaler.
RSA bruges også ofte til at oprette sikre forbindelser mellem VPN-klienter og VPN-servere. Under protokoller som OpenVPN kan TLS-håndtryk bruge RSA-algoritmen til at udveksle nøgler og etablere en sikker kanal.
baggrund af RSA-kryptering
Som vi nævnte i starten af denne artikel, før public-key kryptering, var det en udfordring at kommunikere sikkert, hvis der ikke havde været en chance til sikkert at udveksle nøgler på forhånd., Hvis der ikke var en mulighed for at dele koden på forhånd, eller en sikker kanal, hvorigennem nøglerne kunne distribueres, der var ingen måde at kommunikere uden truslen om fjender at kunne opfange og få adgang til beskedens indhold.
det var først i 1970 ‘ erne, at tingene virkelig begyndte at ændre sig. Den første store udvikling mod det, vi nu kalder offentlig nøgle kryptografi blev offentliggjort i starten af årtiet af James H. Ellis., Ellis kunne ikke finde en måde at gennemføre sit arbejde på, men det blev udvidet af hans kollega Clifford Cocks for at blive det, vi nu kender som RSA-kryptering.
den sidste brik i puslespillet er, hvad vi nu kalder Diffie-Hellman nøgle udveksling. Malcolm J. .illiamson, en anden kollega, regnede ud med en ordning, der gjorde det muligt for to parter at dele en krypteringsnøgle, selvom kanalen blev overvåget af modstandere.
alt dette arbejde blev udført på det britiske efterretningsagentur, Government Communications Head .uarters (GCH.), som holdt opdagelsen klassificeret., Delvis på grund af teknologiske begrænsninger kunne GCH.ikke se en anvendelse til kryptografi med offentlig nøgle på det tidspunkt, så udviklingen sad tomgang på hylden og samlede støv. Det var først i 1997, at arbejdet blev afklassificeret, og de oprindelige opfindere af RSA blev anerkendt.
flere år senere begyndte lignende begreber at udvikle sig på det offentlige område. Ralph Merkle skabte en tidlig form for kryptografi med offentlig nøgle, der påvirkede Diffhitfield Diffie og Martin Hellman i designet af Diffie-Hellman-nøgleudvekslingen.,
Diffie og Hellmans ideer manglede et vigtigt aspekt, der ville gøre deres arbejde til et fundament for offentlig nøglekryptografi. Dette var en envejs-funktion, der ville være vanskeligt at invertere. I 1977 kom Ron Rivest, Adi Shamir og Leonard Adleman, hvis efternavne udgør RSA-forkortelsen, med en løsning efter et års arbejde på problemet.
de MIT-baserede akademikere gjorde deres gennembrud efter en påskefest i 1977., Efter en nat med at drikke gik Rivest hjem, men i stedet for at sove tilbragte han aftenen feberligt med at skrive et papir, der formaliserede hans Id.til den nødvendige envejsfunktion.
ideen blev patenteret i 1983 af MIT, men det var først i de tidlige dage af internettet, at RSA-algoritmen begyndte at se udbredt vedtagelse som et vigtigt sikkerhedsværktøj.
Hvordan fungerer RSA-kryptering?
følgende vil være lidt af en forenkling, fordi for mange læsere sandsynligvis er blevet arret af deres gymnasielærer., For at forhindre matematikken i at komme for ud af hånden, forenkler vi nogle koncepter og bruger meget mindre tal. I virkeligheden bruger RSA-kryptering primtal, der er meget større i størrelse, og der er et par andre kompleksiteter.
Der er flere forskellige begreber, du bliver nødt til at få dit hoved rundt, før vi kan forklare, hvordan det hele passer sammen. Disse inkluderer trapdoor-funktioner, generering af primes, Carmichaels totient-funktion og de separate processer, der er involveret i beregning af de offentlige og private nøgler, der bruges i krypterings-og dekrypteringsprocesserne.,
Fældedørfunktioner
RSA-kryptering fungerer under den forudsætning, at algoritmen er let at beregne i en retning, men næsten umulig omvendt. Som et eksempel, hvis du fik at vide, at 701,111 er et produkt af to primtal, ville du være i stand til at finde ud af, hvad disse to tal er?
selv med en lommeregner eller en computer, ville de fleste af os ikke have nogen ID.om, hvor de skal starte, endsige være i stand til at finde ud af svaret. Men hvis vi vender tingene rundt, bliver det meget lettere., Hvad er resultatet af:
907 90 773
Hvis du keder dig nok, ville du have været i stand til at piske din telefon eller måske beregne den i dit hoved for at opdage, at svaret er den tidligere nævnte 701,111. Dette 907 og 773 er de primære tal, der besvarer vores første spørgsmål, hvilket viser os, at visse ligninger kan være lette at finde ud af en måde, men tilsyneladende umulige omvendt.
et andet interessant aspekt af denne ligning er, at det er nemt at finde ud af et af primtalene, hvis du allerede har den anden såvel som produktet., Hvis du får at vide, at 701,111 er resultatet af 907 ganget med en anden primtal, kan du regne det ud i den anden prime med følgende ligning:
701,111 ÷ 907 = 773
Da forholdet mellem disse tal er enkel at beregne, i en retning, men det er utrolig hårdt i bakgear, er den ligning er kendt som en fælde for døren funktion. Vær opmærksom på, at mens ovenstående eksempel er svært for folk at regne ud, computere kan gøre operationen i en triviel mængde tid.
På grund af dette bruger RSA meget større tal., Størrelsen af primerne i en reel RSA-implementering varierer, men i 2048-bit RSA ville de mødes for at lave nøgler, der er 617 cifre lange. For at hjælpe dig med at visualisere det, ville en nøgle være et antal af denne størrelse:
generering af primater
de ovenfor nævnte fældedørfunktioner danner grundlaget for, hvordan offentlige og private nøglekrypteringsordninger fungerer. Deres egenskaber gør det muligt at dele offentlige nøgler uden at bringe meddelelsen i fare eller afsløre den private nøgle. De tillader også, at data krypteres med en nøgle på en måde, der kun kan dekrypteres af den anden nøgle fra parret.,
det første trin i kryptering af en meddelelse med RSA er at generere nøglerne. For at gøre dette har vi brug for to primtal (P og.), som er valgt med en primalitetstest. En primality test er en algoritme, der effektivt finder primtal, såsom Rabin-Miller primality test.de primære tal i RSA skal være meget store og også relativt langt fra hinanden. Tal, der er små eller tættere sammen, er meget lettere at knække. På trods af dette vil vores eksempel bruge mindre tal for at gøre tingene lettere at følge og beregne.,
lad os sige, at primalitetstesten giver os de primtal, vi brugte ovenfor, 907 og 773. Det næste skridt er at opdage, modulus (n), ved hjælp af følgende formel:
n = p x q
Hvor p = 907 og q = 773
Derfor:
n = 907 x 773
n = 701,111
Carmichael ‘ s totient funktion
Når vi har n, vi bruger Carmichael ‘ s totient funktion:
λ(n) = lcm (p − 1, q − 1)
Hvis det er et stykke tid siden du har ramt de matematiske lærebøger, ovenstående kan virke lidt skræmmende., Du kan springe over denne del og bare stole på, at matematikken fungerer, ellers hold dig til os for et par flere beregninger. Alt vil blive forklaret i så mange detaljer som muligt for at hjælpe dig med at få dit hoved omkring det grundlæggende.
for dem, der ikke er opmærksomme, repræsenterer λ(n) Carmichaels totient for n, mens lcm betyder det laveste fælles multiplum, som er det laveste tal, som både p og.kan opdele i. Der er et par forskellige måder at finde ud af, men det nemmeste er at stole på en online-regnemaskine til at gøre ligningen for dig., Så lad os sætte vores tal i ligningen:
λ(701,111) = lcm (907 − 1, 773 − 1)
λ(701,111) = lcm (906, 772)
ved Hjælp af lommeregner er linket til ovenfor, dette giver os:
λ(701,111) = 349,716
Generere den offentlige nøgle
Nu, at vi har Carmichael ‘ s totient af vores primtal, er det tid til at finde ud af vores offentlige nøgle. Under RSA består offentlige nøgler af et primtal e såvel som n. tallet e kan være alt mellem 1 og værdien for λ(n), som i vores eksempel er 349.716.,da den offentlige nøgle deles åbent, er det ikke så vigtigt for e at være et tilfældigt tal. I praksis er e generelt sat til 65,537, fordi når meget større tal vælges tilfældigt, gør det kryptering meget mindre effektiv. For dagens eksempel vil vi holde tallene små for at gøre beregningerne effektive. Lad os sige:
e = 11
vores endelige krypterede data kaldes cipherte .t (C). Vi henter det fra vores klartekstmeddelelse (m) ved at anvende den offentlige nøgle med følgende formel:
c = me mod n
Vi er allerede kommet med e, og vi kender også n., Det eneste, vi skal forklare, er mod. Det er lidt ud af dybden af denne artikel, men det refererer til en modulo-operation, hvilket i det væsentlige betyder resten tilovers, når du deler den ene side af den anden. For eksempel:
10 mod 3 = 1
dette skyldes, at 3 går ind i 10 tre gange, med en rest af 1.
Tilbage til vores ligning. For at holde tingene enkle, lad os sige, at meddelelsen (m), som vi vil kryptere og holde hemmeligt, kun er et enkelt nummer, 4., Lad os plug alt i:
c = me mod n
c = 411 mod 701,111
c = 4,194,304 mod 701,111
Igen, for at gøre modulo-operation let, vi vil bruge en online regnemaskine, men du er velkommen til at regne det ud for dig selv. Ved at indtaste 4,194,304 i online regnemaskine, det giver os:
c = 688,749
Derfor er det, når vi bruger RSA til at kryptere vores besked, 4, med vores offentlige nøgle, der giver os ciphertext af 688,749., De foregående trin kan have virket lidt for matematisk tunge, men det er vigtigt at gentage, hvad der faktisk er sket.
Vi havde en besked på 4, som vi ønskede at holde hemmeligt. Vi anvendte en offentlig nøgle til det, hvilket gav os det krypterede resultat af 688,749. Nu hvor det er krypteret, kan vi sikkert sende nummeret 688.749 til ejeren af nøgleparet. De er den eneste person, der vil være i stand til at dekryptere det med deres private nøgle. Når de dekryptere det, de vil se det budskab, som vi virkelig sender, 4.,
generering af den private nøgle
i RSA-kryptering, når data eller en meddelelse er blevet omdannet til chiffertekst med en offentlig nøgle, kan den kun dekrypteres af den private nøgle fra det samme nøglepar. Private nøgler består af d og n. vi kender allerede n, og følgende ligning bruges til at finde d:
d =1/e mod λ(n)
i afsnittet generering af den offentlige nøgle ovenfor besluttede vi allerede, at e i vores eksempel ville svare til 11. Tilsvarende ved vi, at λ(n) svarer til 349.716 fra vores tidligere arbejde under Carmichaels totientfunktion., Ting bliver lidt mere komplicerede, når vi støder på dette afsnit af formlen:
1/E mod
denne ligning kan se ud som om den beder dig om at dele 1 med 11, men det er ikke tilfældet. I stedet symboliserer dette bare, at vi skal beregne den modulære inverse af e (som i dette tilfælde er 11) Og λ(n) (som i dette tilfælde er 349.716).
dette betyder i det væsentlige, at vi i stedet for at udføre en standard modulo-operation bruger den inverse i stedet., Dette findes normalt med den udvidede euklidiske algoritme, men det er lidt uden for rammerne af denne artikel, så vi vil bare snyde og bruge en online regnemaskine i stedet., Nu, at vi forstår alt, hvad der foregår, lad os plug vores oplysninger i formlen:
d =1/11 mod 349,716
for At udføre denne handling, skal du blot indgang 11 (eller enhver værdi, du kan have for e, hvis du forsøger dette med dit eget eksempel), hvor der står, Heltal og 349,716 (eller enhver værdi, du måtte have for at λ(n), hvis du forsøger dette med dit eget eksempel) hvor der står Modulo i online regnemaskine, der var linket til ovenfor., Hvis du har gjort det korrekt, bør du få et resultat, hvis:
l = 254, 339
Nu, at vi har værdi for d, vi kan dekryptere meddelelser, der er krypteret med vores offentlige nøgle ved hjælp af følgende formel:
m = cd mod n
Vi kan nu gå tilbage til ciphertext, at vi krypteret under Generering af den private nøgle punkt. Da vi krypterede beskeden med den offentlige nøgle, gav den os en værdi for c på 688.749. Fra oven ved vi, at d er lig med 254,339. Vi ved også, at n er lig med 701,111. Dette giver os:
m = 688,749254,339 mod 701,111.,
som du måske har bemærket, kan det være lidt meget for de fleste normale regnemaskiner at prøve at tage et nummer til 254,339 TH-strømmen. I stedet, vi vil bruge en online RSA dekryptering Regnemaskine. Hvis du ville bruge en anden metode, ville du anvende kræfterne, som du normalt ville gøre, og udføre modulusoperationen på samme måde som vi gjorde i afsnittet generering af den offentlige nøgle.,
I regnemaskine, der er linket til ovenfor, skal du indtaste 701,111, hvor der står Levering Modul: N, 254,399, hvor der står dekrypteringsnøgle: D, og 688,749, hvor der står Ciphertext Besked i numerisk form, som vist nedenfor:
Når du har indtastet data, ramte Dekryptere, som vil sætte tal gennem dekryptering formel, som blev nævnt ovenfor. Dette giver dig den originale meddelelse i boksen nedenfor. Hvis du har gjort alt korrekt, skal du få et svar på 4, hvilket var den originale meddelelse, som vi krypterede med vores offentlige nøgle.,
Sådan fungerer RSA-kryptering i praksis
ovenstående afsnit skal give dig et rimeligt greb om, hvordan matematikken bag offentlig nøglekryptering fungerer. Det kan være lidt forvirrende, men selv dem, der ikke forstod ligningernes forviklinger, kan forhåbentlig fjerne nogle vigtige oplysninger om processen.
i ovenstående trin har vi vist, hvordan to enheder sikkert kan kommunikere uden Tidligere at have delt en kode på forhånd. Først skal de hver især oprette deres egne nøglepar og dele den offentlige nøgle med hinanden., De to enheder er nødt til at holde deres private nøgler hemmelige for at deres kommunikation skal forblive sikker.
når afsenderen har modtagerens offentlige nøgle, kan de bruge den til at kryptere de data, de ønsker at holde sikre. Når den er krypteret med en offentlig nøgle, kan den kun dekrypteres af den private nøgle fra det samme nøglepar. Selv den samme offentlige nøgle kan ikke bruges til at dekryptere dataene. Dette skyldes egenskaberne af fældedørfunktioner, som vi nævnte ovenfor.
når modtageren modtager den krypterede meddelelse, bruger de deres private nøgle til at få adgang til dataene., Hvis modtageren ønsker at returnere kommunikation på en sikker måde, kan de derefter kryptere deres meddelelse med den offentlige nøgle til den part, de kommunikerer med. Igen, når den først er krypteret med den offentlige nøgle, er den eneste måde, hvorpå informationen kan fås, gennem den matchende private nøgle.
På denne måde kan RSA-kryptering bruges af tidligere ukendte parter til sikkert at sende data indbyrdes. Væsentlige dele af de kommunikationskanaler, som vi bruger i vores online liv blev bygget op fra dette fundament.,
hvordan krypteres mere komplicerede meddelelser med RSA?
i vores eksempel forenklede vi tingene meget for at gøre det lettere at forstå, hvorfor vi kun krypterede en meddelelse om “4”. At være i stand til at kryptere nummer 4 virker ikke særlig nyttigt, så du spekulerer måske på, hvordan du kan kryptere et mere kompliceret datasæt, såsom en symmetrisk nøgle (som er den mest almindelige brug af RSA) eller endda en meddelelse.,nogle mennesker kan være forvirrede over, hvordan en nøgle som ” n38cb29fkbjh138g7f .ijnf3kaj84f8b9f…” eller en meddelelse som “Køb mig en sand .ich” kan krypteres med en algoritme som RSA, der beskæftiger sig med tal og ikke bogstaver. Virkeligheden er, at alle de oplysninger, som vores computere behandler, gemmes i binær (1s og 0s), og vi bruger kodningsstandarder som ASCII eller Unicode til at repræsentere dem på måder, som mennesker kan forstå (bogstaver).,
Dette betyder, at nøgler som “n38cb29fkbjh138g7fqijnf3kaj84f8b9f…” og beskeder som “købe mig en sandwich”, der allerede eksisterer som tal, som let kan beregnes i RSA-algoritmen. De tal, de er repræsenteret af, er meget større og sværere for os at styre, hvorfor vi foretrækker at beskæftige os med alfanumeriske tegn snarere end et virvar af binære.
Hvis du ønskede at kryptere en længere sessionsnøgle eller en mere kompleks besked med RSA, ville det simpelthen involvere et meget større antal.,
polstring
Når RSA implementeres, bruger den noget, der hedder polstring for at forhindre en række angreb. For at forklare, hvordan dette fungerer, starter vi med et eksempel. Lad os sige, at du sendte en kodet besked til en ven:
kære Karen,
Jeg håber du har det godt. Skal vi stadig spise middag i morgen?
Med venlig hilsen
James
lad os sige, at du kodede meddelelsen på en enkel måde ved at ændre hvert bogstav til det, der følger det i alfabetet. Dette ville ændre meddelelsen til:
Efbs Lbsfo,
J IP .f .pv bsf .fmm., Bsf TUF tujmm Ib ?joh ejoofs upnpssp??
vst tjodfsfm.,
Kbnft
Hvis dine fjender opfangede dette brev, er der et trick, som de kunne bruge til at prøve at knække koden. De kunne se på formatet af dit brev og forsøge at gætte, hvad meddelelsen kan sige. De ved, at folk normalt begynder deres breve med “Hej”, “Hej”, “kære” eller en række andre konventioner.
hvis de forsøgte at anvende “Hej” eller “Hej” som det første ord, ville de se, at det ikke ville passe til antallet af tegn. De kunne så prøve”kære”., Det passer, men det betyder ikke nødvendigvis noget. Angriberne ville bare prøve det og se, hvor det førte dem. Så de ville ændre bogstaverne” e”,” F”,” b “og” s “med henholdsvis” D”,” e”,” A “og” r”. Dette ville give dem:
kære Laseo,
J IP .e ippv erememm. Er tue tujmm ia ?joh djooes upnpssp??
vrt tjoderem.,
Kanet
det ser stadig temmelig forvirrende ud, så angriberne kan prøve at se på nogle andre konventioner, som hvordan vi afslutter vores breve. Folk tilføjer ofte” fra “eller” venlig hilsen ” i slutningen, men ingen af disse passer til formatet., I stedet kan angriberne prøve “med venlig hilsen” og erstatte de andre breve for at se, hvor det får dem. Ved at ændre “respectively”,” p”,” v”,” t”,” j “” o”,” d “og” m “med” Y”,” o”,” u”,” S”,” i”,” n”,” c “og” L ” henholdsvis, ville de få:
kære Lasen,
I IO .e du er .ell. Er xe tuill ia ?inh dinnes uonosso??
Med venlig hilsen
Kanet
efter denne ændring ser det ud til, at angriberne begynder at komme et sted. De har fundet ordene” Jeg”,” du “og” er ” ud over de ord, der udgjorde deres oprindelige gæt.,da ordene er i korrekt grammatisk rækkefølge, kan angriberne være temmelig sikre på, at de går i den rigtige retning. Nu har de sandsynligvis også indset, at koden involverede, at hvert bogstav blev ændret til det, der følger det i alfabetet. Når de indser dette, det gør det nemt at oversætte resten og læse den oprindelige meddelelse.ovenstående eksempel var bare en simpel kode, men som du kan se, kan strukturen af en meddelelse give angribere ledetråde om dens indhold., Jo da, det var svært at finde ud af meddelelsen fra bare dens struktur, og det tog nogle uddannede gætterier, men du skal huske på, at computere er meget bedre til at gøre dette, end vi er. Dette betyder, at de kan bruges til at finde ud af langt mere komplekse koder på meget kortere tid, baseret på spor, der kommer fra strukturen og andre elementer.
Hvis strukturen kan føre til, at en kode bliver revnet og afslører indholdet af en meddelelse, har vi brug for en måde at skjule strukturen for at holde meddelelsen sikker. Dette bringer os til polstring.,
når en meddelelse er polstret, tilføjes randomiserede data for at skjule de originale formateringsspor, der kan føre til, at en krypteret meddelelse bliver brudt. Med RSA er tingene lidt mere komplicerede, fordi en krypteret nøgle ikke har den åbenlyse formatering af et brev, der hjalp med at give os ledetråde i vores ovenstående eksempel.
På trods af dette kan Modstandere bruge et antal angreb til at udnytte de matematiske egenskaber ved en kode og bryde krypterede data. På grund af denne trussel, implementeringer af RSA brug polstring ordninger som OAEP at integrere ekstra data i meddelelsen., Tilføjelse af denne polstring, før meddelelsen er krypteret, gør RSA meget mere sikker.
signering af meddelelser
RSA kan bruges til mere end bare kryptering af data. Dens egenskaber gør det også til et nyttigt system til bekræftelse af, at en meddelelse er sendt af den enhed, der hævder at have sendt den, samt at bevise, at en meddelelse ikke er blevet ændret eller manipuleret.,
når nogen ønsker at bevise ægtheden af deres meddelelse, kan de beregne en hash (en funktion, der tager data af en vilkårlig størrelse og omdanner den til en fast længde værdi) af klarteksten og derefter underskrive den med deres private nøgle. De underskriver hash ved at anvende den samme formel, der bruges i dekryptering (m = cd mod n). Når meddelelsen er underskrevet, sender de denne digitale signatur til modtageren sammen med meddelelsen.,
Hvis en modtager modtager en besked med en digital signatur, kan de bruge signaturen til at kontrollere, om meddelelsen var autentisk underskrevet af den private nøgle fra den person, der påstår at have sendt den. De kan også se, om meddelelsen er blevet ændret af angribere, efter at den blev sendt.
for at kontrollere den digitale signatur bruger modtageren først den samme hash-funktion til at finde hashværdien af den meddelelse, de modtog., Modtageren anvender derefter afsenderens offentlige nøgle til den digitale signatur ved hjælp af krypteringsformlen (c = me mod n) for at give dem hash for den digitale signatur.
Ved at sammenligne hash for den meddelelse, der blev modtaget sammen med hash fra den krypterede digitale signatur, kan modtageren fortælle, om meddelelsen er autentisk. Hvis de to værdier er de samme, er meddelelsen ikke ændret, siden den blev underskrevet af den oprindelige afsender. Hvis meddelelsen var blevet ændret af endda et enkelt tegn, ville hashværdien være helt anderledes.,
RSA-sikkerhed & angreb
som de fleste kryptosystemer afhænger RSA ‘ s sikkerhed af, hvordan den implementeres og bruges. En vigtig faktor er størrelsen af nøglen. Jo større antallet af bits i en nøgle (i det væsentlige hvor lang nøglen er), jo vanskeligere er det at knække gennem angreb som brute-force og factoring.da asymmetriske nøglealgoritmer som RSA kan brydes af heltalfaktorisering, mens symmetriske nøglealgoritmer som AES ikke kan, skal RSA-nøgler være meget længere for at opnå det samme sikkerhedsniveau.,
i øjeblikket er den største nøglestørrelse, der er indregnet, 768 bits lang. Dette blev gjort af et team af akademikere over en toårig periode, ved hjælp af hundredvis af maskiner.
da factoring blev afsluttet ved udgangen af 2009, og computerkraften er vokset markant siden den tid, kan det antages, at et forsøg med lignende intensitet nu kunne faktor en meget større RSA-nøgle.
På trods af dette sætter den tid og ressourcer, der er nødvendige for denne form for angreb, det uden for rækkevidde for de fleste hackere og ind i nationalstaternes rige., Den bedste nøgle længde til at bruge, vil afhænge af din individuelle trussel model. National Institute of Standards and Technology anbefaler en mindste nøglestørrelse på 2048-bit, men 4096-bit nøgler bruges også i nogle situationer, hvor Trusselsniveauet er højere.Factoring er kun en måde, hvorpå RSA kan brydes. En række andre angreb har potentiale til at bryde kryptering med en mindre mængde ressourcer, men disse afhænger af gennemførelsen og andre faktorer, ikke nødvendigvis RSA selv. Nogle af disse omfatter:
er primerne virkelig tilfældige?,
nogle implementeringer af RSA bruger svage tilfældige talgeneratorer til at komme med primerne. Hvis disse tal ikke er tilstrækkeligt tilfældige, gør det det meget lettere for angribere at faktor dem og bryde krypteringen. Dette problem kan undgås ved hjælp af en kryptografisk sikker pseudo-random number generator.
dårlig nøglegenerering
RSA-nøgler skal falde inden for visse parametre for at de skal være sikre. Hvis primerne p og q er for tæt sammen, kan nøglen let opdages. Ligeledes kan tallet d, der udgør en del af den private nøgle, ikke være for lille., En lav værdi gør det nemt at løse. Det er vigtigt, at disse tal er af tilstrækkelig længde til at holde din nøgle sikker.
sidekanalangreb
Dette er en type angreb, der ikke bryder RSA direkte, men i stedet bruger oplysninger fra dens implementering til at give angribere tip om krypteringsprocessen. Disse angreb kan omfatte ting som at analysere mængden af strøm, der bruges, eller grenforudsigelsesanalyse, der bruger udførelsestidsmålinger til at opdage den private nøgle.
en anden type sidekanalangreb er kendt som et timingangreb., Hvis en angriber har evnen til at måle dekrypteringstiden på deres måls computer for et antal forskellige krypterede meddelelser, kan disse oplysninger gøre det muligt for angriberen at konstatere målets private nøgle.de fleste implementeringer af RSA undgår dette angreb ved at tilføje en engangsværdi under krypteringsprocessen, hvilket fjerner denne korrelation. Denne proces kaldes kryptografisk blændende.
er RSA-kryptering sikker i fremtiden?
den gode nyhed er, at RSA betragtes som sikkert at bruge, på trods af disse mulige angreb., Advarslen er, at den skal implementeres korrekt og bruge en nøgle, der falder inden for de korrekte parametre. Som vi netop har diskuteret, kan implementeringer, der ikke bruger polstring, bruger utilstrækkeligt store primere eller har andre sårbarheder, ikke betragtes som sikre.
Hvis du vil bruge RSA-kryptering, skal du sørge for, at du bruger en nøgle på mindst 1024 bit. Dem med højere trusselsmodeller skal holde sig til nøgler på 2048 eller 4096 bits, hvis de vil bruge RSA med tillid., Så længe du er bevidst om de svagheder, som RSA har, og bruger den korrekt, skal du føle dig sikker på at bruge RSA til nøgledeling og andre lignende opgaver, der kræver offentlig nøglekryptering.
Se også: almindelige krypteringstyper forklaret