Hva er RSA kryptering og hvordan fungerer det?

RSA-kryptering er et system som løser det som en gang var et av de største problemene i kryptografi: Hvordan kan du sende noen en kodet melding uten å ha en mulighet til tidligere deler av koden med dem?

Denne artikkelen vil lære deg alt du trenger å vite om hvordan RSA-kryptering er utviklet, hvordan det fungerer, matematikk bak den, hva den brukes til, samt noen av de største sikkerhetsproblemene som den står overfor., Lære om RSA vil gi deg noen grunnleggende kunnskap som hjelper deg til å forstå hvordan mange deler av vårt online livet er sikret.

Hva er RSA kryptering?

La oss si at du ønsker å fortelle din venn en hemmelighet. Hvis du er rett ved siden av dem, du kan bare hviske. Hvis du er på motsatt side av landet, som åpenbart ikke fungerer. Du kan skrive det ned og send det til dem, eller bruke telefonen, men hver av disse kommunikasjonskanalene er usikre og alle med en sterk nok motivasjon lett kunne fange opp meldingen.,

Om hemmeligheten var viktig nok, ville du ikke risikerer å skrive det ned som normalt–spioner eller et falskt postal ansatt kan være å søke gjennom e-post. På samme måte, noen kan være å peke på mobilen din uten din viten og logger hver enkelt anrop du foretar.

En løsning for å hindre tyvlyttere borte fra å få tilgang til meldingen innholdet er til å kryptere det. Dette betyr å legge til en kode i meldingen som endrer den til en jumbled rot. Hvis koden din er så komplekst, så er det bare folk som vil være i stand til å få tilgang til den originale meldingen er de som har tilgang til koden.,

Hvis du hadde en sjanse til å dele koden med din venn på forhånd, så enten kan du sende en kryptert melding til enhver tid, vel vitende om at dere to er de eneste med evnen til å lese meldingen innholdet. Men hva hvis du ikke har en sjanse til å dele koden på forhånd?

Dette er en av de fundamentale problemene i kryptografi, som har vært adressert av offentlig-nøkkel kryptering ordninger (også kjent som asymmetrisk kryptering) som RSA.

Under RSA-kryptering, meldinger som er kryptert med en kode som kalles en offentlig nøkkel, som kan deles åpent., På grunn av noen forskjellige matematiske egenskapene til RSA-algoritmen, når en melding er kryptert med den offentlige nøkkelen, det kan bare dekrypteres av en annen tast, kjent som den private nøkkelen. Hver RSA bruker har et nøkkelpar som består av offentlige og private nøkler. Som navnet antyder, den private nøkkelen holdes hemmelig.

Offentlig nøkkel kryptering ordninger som er forskjellige fra symmetrisk nøkkel kryptering, der både kryptering og dekryptering prosessen bruker den samme nøkkelen., Disse forskjellene gjør offentlig nøkkel kryptering som RSA nyttig for å kommunisere i situasjoner hvor det har ikke vært anledning til å trygt distribuere nøkler på forhånd.

Symmetrisk-nøkkel algoritmer har sine egne applikasjoner, som for eksempel kryptering av data for personlig bruk, eller når det er sikre kanaler som de private nøklene kan være felles over.

Se også: Public key cryptography

Hvor er RSA kryptering?

RSA-kryptering er ofte brukt i kombinasjon med andre kryptering planer, eller for digitale signaturer som kan bekrefte ektheten og integriteten av en melding., Det er ikke generelt brukes til å kryptere hele meldinger eller filer, fordi det er mindre effektiv og mer ressurs-tunge enn symmetrisk nøkkel kryptering.

for Å gjøre ting mer effektivt, en fil vil generelt være krypteres med en symmetrisk nøkkel algoritme, og deretter den symmetriske nøkkelen kryptert med RSA-kryptering. Under denne prosessen, bare en enhet som har tilgang til RSA private nøkkelen vil være i stand til å dekryptere den symmetriske nøkkelen.

Uten å være i stand til å få tilgang til symmetrisk nøkkel, den originale filen kan ikke dekrypteres., Denne metoden kan brukes til å holde meldinger og filer sikker, uten å ta for lang tid, eller tidkrevende for mange computational ressurser.

RSA kryptering kan brukes i en rekke forskjellige systemer. Det kan bli tatt i bruk i OpenSSL, wolfCrypt, cryptlib og en rekke andre kryptografiske biblioteker.

Som en av de første som brukte offentlig-nøkkel kryptering ordninger, RSA la grunnlaget for mye av vår sikre kommunikasjonen. Det var tradisjonelt brukes i TLS og var også den opprinnelige algoritmen som brukes i PGP-kryptering., RSA er fortsatt sett i en rekke nettlesere, e-post, Vpn, chat og andre kommunikasjonskanaler.

RSA er også ofte brukt til å lage sikre tilkoblinger mellom VPN-klienter og VPN-servere. Under protokoller som OpenVPN, TLS håndtrykk kan bruke RSA algoritmen for å utveksle nøkler og etablere en sikker kanal.

bakgrunn av RSA-kryptering

Som vi nevnte i starten av denne artikkelen, før offentlig-nøkkel kryptering, det var en utfordring å kommunisere på en sikker måte hvis det ikke hadde vært en sjanse til å trygt exchange tastene på forhånd., Hvis det ikke var en mulighet til å dele koden forut for sin tid, eller en sikker kanal som tastene kan være distribuert, det var ingen måte å kommunisere uten trusselen om fiender være i stand til å fange opp og få tilgang til meldingen innholdet.

Det var ikke før på 1970-tallet at ting virkelig begynte å forandre seg. Den første store utviklingen mot det vi nå kaller offentlig-nøkkel kryptografi ble utgitt på begynnelsen av tiåret av James H. Ellis., Ellis ikke kunne finne en måte å gjennomføre sitt arbeid, men det ble utvidet på av sin kollega Clifford Kuker å bli det vi nå kjenner som RSA-kryptering.

Den siste biten i puslespillet er hva vi nå kaller Diffie-Hellman key exchange. Malcolm J. Williamson, en annen kollega, funnet ut en ordning som tillot to parter å dele en krypteringsnøkkel, selv om kanalen ble overvåket av motstandere.

Alle av dette arbeidet ble gjennomført i STORBRITANNIA intelligence agency, Government Communications Headquarters (GCHQ), som holdt funnet klassifisert., Delvis på grunn av teknologiske begrensninger, GCHQ kunne ikke se en bruk for offentlig-nøkkel kryptografi på den tiden, så utviklingen sittet passivt og se på sokkelen og samler støv. Det var ikke før i 1997 at arbeidet ble nedgradert og de opprinnelige oppfinnerne av RSA ble anerkjent.

Flere år senere, lignende konsepter begynte å utvikle seg i den offentlige sfære. Ralph Merkle opprettet en tidlig form for offentlig-nøkkel kryptografi, noe som påvirket Whitfield Diffie og Martin Hellman i utformingen av Diffie-Hellman key exchange.,

Diffie og Hellman ‘ s ideer var mangler ett viktig aspekt som ville gjøre deres arbeid et fundament av offentlig nøkkel kryptografi. Dette var en enveis funksjon det ville være vanskelig å snu. I 1977, Ron Rivest, Adi Shamir og Leonard Adleman, hvis etternavn form RSA akronym, kom opp med en løsning etter et år av arbeidet på problemet.

MIT-basert akademikere gjorde sitt gjennombrudd etter en Påske fest i 1977., Etter en natt med drikking, Rivest gikk hjem, men i stedet for å sove, han tilbrakte kvelden febrilsk å skrive et papir som formalisert hans ide om nødvendig en-veis-funksjonen.

ideen ble patentert i 1983 ved MIT, men det var ikke før i de tidlige dagene av internett som RSA-algoritmen begynte å se utbredt adopsjon som et viktig sikkerhetsverktøy.

Hvordan gjør RSA-kryptering arbeid?

følgende kommer til å bli litt av en forenkling, fordi for mange lesere har sikkert vært skjemmet av sin high school matematikk lærer., For å holde matematikk fra å bli for ut-av-side, vi vil være forenkle noen begreper og bruker mye mindre tall. I virkeligheten, RSA-kryptering bruker primtall som er mye større i omfang, og det er et par andre kompleksiteten.

Det er flere ulike konsepter som du er nødt til å få hodet rundt før vi kan forklare hvordan alt passer sammen. Disse inkluderer trapdoor funksjoner, generere primtall, Carmichael er totient funksjon og separate prosesser involvert i beregning av offentlige og private nøkler som brukes i kryptering og dekryptering prosesser.,

luke funksjoner

RSA-kryptering fungerer under forutsetning at algoritmen er lett å regne ut i én retning, men nesten umulig i revers. Som et eksempel, hvis du ble fortalt at 701,111 er et produkt av to primtall, vil du være i stand til å finne ut hva disse to tallene er?

Selv med en kalkulator eller en datamaskin, for de fleste av oss ville ikke ha noen ide om hvor du skal begynne, la alene være i stand til å finne ut svaret. Men hvis vi kaster ting rundt, blir det mye enklere., Hva er resultatet av:

907 x 773

Hvis du var lei nok, ville du ha vært i stand til å ta frem telefonen eller kanskje regne det i hodet for å oppdage at svaret er til de nevnte 701,111. Dette 907 og 773 er primtall som svar på vår første spørsmålet, som viser oss at enkelte ligninger kan være lett å finne ut en måte, men tilsynelatende umulig i revers.

en Annen interessant side av denne ligningen er at den er enkel å finne ut en av de viktigste tall hvis du allerede har den andre, så vel som produkt., Hvis du blir fortalt at 701,111 er resultatet av 907 multiplisert med en annen primtall, kan du finne det ut på andre prime med følgende ligning:

701,111 ÷ 907 = 773

Siden forholdet mellom disse tallene er enkle å beregne i én retning, men utrolig hardt i omvendt, ligningen er kjent som en felle dør funksjon. Vær oppmerksom på at selv om eksempelet ovenfor er vanskelig for folk å finne ut, datamaskiner kan gjøre operasjonen i en triviell mengde tid.

på Grunn av dette, RSA bruker mye større tall., Størrelsen av primtall i en ekte RSA implementering varierer, men i 2048-bit RSA, ville de komme sammen for å lage nøkler som er 617 sifre. For å hjelpe deg med å visualisere det, er et avgjørende ville være en rekke av denne størrelse:

Generere primtall

felle dør funksjoner som er nevnt over, danner grunnlaget for hvordan offentlige og private-nøkkel kryptering ordninger arbeid. Deres egenskaper tillate offentlige nøkler til å bli delt, uten fare for meldingen, eller oppgi den private nøkkelen. De gjør også at data blir kryptert med en nøkkel på en måte som kun kan dekrypteres med den andre nøkkelen fra paret.,

Det første trinnet i å kryptere en melding med RSA er å generere nøkler. For å gjøre dette, trenger vi to primtall p og q) som er merket med en primality test. En primality test er en algoritme som effektivt finner primtall, slik som Rabin-Miller primality test.

primtall i RSA må være veldig store, og også relativt langt fra hverandre. Tallene som er små eller tettere sammen er mye lettere å knekke. Til tross for dette, vårt eksempel vil bruke mindre tall for å gjøre ting enklere å følge med og regne.,

La oss si at primality test gir oss primtall som vi brukte ovenfor, 907 og 773. Neste trinn er å oppdage modulus (n), ved hjelp av følgende formel:

n = p x q

Hvor p = 907 og q = 773

Derfor:

n = 907 x 773

n = 701,111

Carmichael er totient funksjon

Når vi har n, vi bruker Carmichael er totient funksjon:

λ(n) = lcm (s − 1, q − 1)

Hvis det er en stund siden du har truffet matematikk lærebøker, ovenfor kan se litt skremmende., Du kan hoppe over denne delen og bare stole på at den matematiske verk, ellers stick med oss for et par flere beregninger. Alt vil bli forklart i så mye detaljer som mulig for å hjelpe deg med å få hodet rundt det grunnleggende.

For de som ikke er klar over, λ(n) representerer Carmichael er totient for n, mens lcm betyr den laveste felles multiplum, som er det laveste antallet som både p og q kan dele inn. Det er noen forskjellige måter å finne ut av dette, men det enkleste er å stole på en online kalkulator til å gjøre ligningen for deg., Så la oss sette vår tallene inn i ligningen:

λ(701,111) = mfm (907 − 1, 773 − 1)

λ(701,111) = lcm (906, 772)

ved Hjelp av kalkulator knyttet ovenfor, dette gir oss:

λ(701,111) = 349,716

Generere den offentlige nøkkelen

Nå som vi har Carmichael er totient av våre primtall, er det på tide å finne ut av våre offentlige nøkkel. Under RSA, offentlige nøkler består av en førsteklasses antall e, samt n. Antall e kan være alt mellom 1 og verdi for λ(n), som i vårt eksempel er 349,716.,

Fordi den offentlige nøkkelen som er felles åpent, det er ikke så viktig for e til å være et tilfeldig tall. I praksis, e er generelt på 65,537, fordi da mye større tallene er valgt tilfeldig, det gjør kryptering mye mindre effektiv. For dagens eksempel, vil vi holde tallene for små til å gjøre beregninger effektiv. La oss si:

e = 11

Vår siste kryptert data er kalt ciphertext (c). Vi utlede den fra vår ren tekst melding (m), ved å bruke den offentlige nøkkelen med følgende formel:

c = meg mod n

Vi har allerede kommet opp med e og vi vet n også., Det eneste vi trenger for å forklare er mod. Det er en liten bit ut av dybden i denne artikkelen, men det refererer til en modulus drift, som i hovedsak betyr at resten igjen når du deler en side ved den andre. For eksempel:

10 mod 3 = 1

Dette er fordi 3 går i 10 tre ganger, med en rest på 1.

Tilbake til våre ligningen. For å holde ting enkelt, la oss si at meldingen (m) som vi ønsker å kryptere og holde hemmelig, er bare et enkelt tall, 4., La oss plugge alt i:

c = meg mod n

c = 411 mod 701,111

c = 4,194,304 mod 701,111

Igjen, for å gjøre modulus drift lett, vi vil bruke en online kalkulator, men du er velkommen til å finne det ut for deg selv. Ved å skrive inn 4,194,304 inn online kalkulator, det gir oss:

c = 688,749

Derfor, når vi bruker RSA å kryptere meldingen, 4, med den offentlige nøkkelen, det gir oss ciphertext av 688,749., De forrige trinnene kan ha virket litt for matematikk-tung, men det er viktig å gjenta hva som faktisk har skjedd.

– Vi fikk en melding av 4, som vi ønsket å holde hemmelig. Vi brukte en offentlig nøkkel til det, som ga oss den krypterte resultat av 688,749. Nå som det er kryptert, vi kan sikkert sende det antall 688,749 til eieren av nøkkelpar. De er den eneste personen som vil være i stand til å dekryptere det med sin private nøkkel. Når de dekryptere det, vil de se den meldingen som vi var veldig sending, 4.,

Generere den private nøkkelen

I RSA-kryptering når data eller en melding har blitt omgjort til ciphertext med en offentlig nøkkel, det kan bare dekrypteres av den private nøkkelen fra den samme nøkkelpar. Private nøkler består av l og n. Vi vet allerede n, og den følgende ligningen brukes til å finne d:

d =1/e mod λ(n)

I den Genererer den offentlige nøkkelen ovenfor, vi har allerede besluttet at i vårt eksempel, e ville lik 11. På samme måte vet vi at λ(n) er lik 349,716 fra vårt tidligere arbeid under Carmichael er totient funksjon., Ting blir litt mer komplisert når vi kommer over denne delen av formelen:

1/e mod

Denne ligningen kan se ut som det er som ber deg om å dele 1 av 11, men det er ikke tilfelle. I stedet, dette bare symboliserer at vi trenger for å beregne modulær invers av e (som i dette tilfellet er 11) og λ(n) (som i dette tilfellet er 349,716).

Dette betyr i hovedsak at i stedet for å utføre en standard modulus drift, vil vi ved hjelp av den inverse i stedet., Dette er normalt funnet med Utvidet Euclidean Algoritme, men det er litt utenfor omfanget av denne artikkelen, så vil vi bare jukse og bruke en online kalkulator i stedet., Nå som vi forstår alt som skjer, la oss plugg vår informasjon inn i formelen:

d =1/11 mod 349,716

for Å utføre denne operasjonen, bare input 11 (eller en hvilken som helst verdi du kan ha for e hvis du prøver dette med din egen eksempel), der det står Heltall og 349,716 (eller en hvilken som helst verdi du kan ha for λ(n) hvis du prøver dette med din egen eksempel) der det står Modulus i online kalkulator som var knyttet ovenfor., Hvis du har gjort det riktig, skal du få et resultat hvor:

d = 254, 339

Nå som vi har verdi for d, vi kan dekryptere meldinger som er kryptert med den offentlige nøkkelen, og bruke følgende formel:

m = cd-mod n

Vi kan nå gå tilbake til ciphertext at vi kryptert under Generering av den private nøkkelen delen. Når vi krypterte meldingen med den offentlige nøkkelen, det ga oss en verdi for c av 688,749. Fra oven, og vi vet at d er lik 254,339. Vi vet også at n er lik 701,111. Dette gir oss:

m = 688,749254,339 mod 701,111.,

Som du kanskje har lagt merke til, prøver å ta et nummer til 254,339 th makt kan være litt mye for de fleste vanlige kalkulatorer. I stedet, vi vil bruke en online RSA dekryptering kalkulator. Hvis du ønsket å gjøre bruk av en annen metode du vil bruke krefter som du normalt ville og utføre modulus drift på samme måte som vi gjorde i den Genererer den offentlige nøkkelen delen.,

I kalkulatoren knyttet ovenfor, skriver du inn 701,111 der det står Tilførsel Modulus: N, 254,399 der det står dekrypteringsnøkkelen: D, og 688,749 der det står Ciphertext Melding i numerisk form, som vist nedenfor:

Når du har skrevet inn data, traff Dekryptere, som vil sette tallene gjennom arkivene formel som ble nevnt ovenfor. Dette vil gi deg den opprinnelige meldingen i tekstboksen nedenfor. Hvis du har gjort alt riktig, skal du få et svar på 4, som var den opprinnelige meldingen som vi kryptert med den offentlige nøkkelen.,

Hvordan RSA-kryptering fungerer i praksis

avsnittene ovenfor bør gi deg en rimelig forståelse av hvordan matematikken bak offentlig nøkkel kryptering fungerer. Det kan være litt forvirrende, men selv de som ikke kunne forstå de vanskelighetene av ligninger kan forhåpentligvis ta bort noen viktig informasjon om prosessen.

I trinnene ovenfor har vi vist hvordan to enheter kan kommunisere sikkert uten å ha tidligere delte en kode på forhånd. Først, de hver trenger for å sette opp sitt eget nøkkelpar og dele den offentlige nøkkelen med en annen., De to enhetene trenger for å holde sine private nøkler hemmelig for sin kommunikasjon for å forbli sikker.

Når avsender har den offentlige nøkkelen til sin mottaker, kan du bruke den til å kryptere data som de ønsker å holde sikre. Når det har vært kryptert med den offentlige nøkkelen, det kan bare dekrypteres av den private nøkkelen fra den samme nøkkelpar. Selv de samme offentlige nøkkelen kan ikke brukes til å dekryptere data. Dette er på grunn av egenskapene til felle dør funksjoner, som vi nevnte ovenfor.

Når mottakeren mottar en kryptert melding, de bruker sin private nøkkel til å få tilgang til dataene., Dersom mottaker ønsker å returnere kommunikasjon på en sikker måte, kan de deretter kryptere meldingen med den offentlige nøkkelen til den parten som de kommuniserer med. Igjen, når det har vært kryptert med den offentlige nøkkelen, den eneste måte at informasjonen kan nås på, er gjennom den tilhørende private nøkkelen.

På denne måten, RSA kryptering kan brukes av tidligere ukjente parter sikkert sende data mellom seg. Betydelige deler av kommunikasjonskanaler som vi bruker i vår online liv ble bygd opp fra dette grunnlaget.,

Hvordan er mer komplisert meldinger som er kryptert med RSA?

I vårt eksempel har vi forenklet ting mye for å gjøre det enklere å forstå, noe som er grunnen til at vi bare en kryptert melding av «4». Å være i stand til å kryptere nummer 4 synes ikke spesielt nyttig, så kan du kanskje lurer på hvordan du kan kryptere en mer komplisert sett av data, for eksempel en symmetrisk nøkkel (som er den mest vanlige bruken av RSA), eller enda en melding.,

Noen mennesker kan være i villrede på hvordan en nøkkel som «n38cb29fkbjh138g7fqijnf3kaj84f8b9f…» eller en melding som «kjøpe meg en sandwich» kan bli kryptert med en algoritme som RSA, som handler om tall og ikke bokstaver. Realiteten er at all informasjon som er våre datamaskiner prosessen er lagret i binær (1s og 0s) og vi bruker koding standarder som ASCII eller Unicode til å representere dem på måter som mennesker kan forstå (bokstaver).,

Dette betyr at tastene som «n38cb29fkbjh138g7fqijnf3kaj84f8b9f…» og meldinger som «kjøpe meg en sandwich» allerede eksisterer som tall, som kan lett bli beregnet i RSA algoritmen. Tallene som de er representert ved er mye større og vanskeligere for oss å administrere, noe som er grunnen til at vi foretrekker å avtale med alfanumeriske tegn snarere enn et virvar av binære.

Hvis du ønsket å kryptere en lengre session-nøkkel eller et mer komplekst budskap med RSA, det ville rett og slett innebære en mye større antall.,

Fyll

Når RSA er implementert, det bruker noe som kalles polstring for å bidra til å forebygge en rekke angrep. For å forklare hvordan dette fungerer, skal vi starte med et eksempel. La oss si at du var å sende en kodet melding til en venn:

Kjære Karen,

jeg håper du er godt. Er vi fortsatt å ha middag i morgen?

med vennlig Hilsen,

James

La oss si at du kodede meldingen på en enkel måte, ved å endre hver brev til en som følger den i alfabetet. Dette vil endre meldingen til:

Efbs Lbsfo,

J ipqf zpv bsf xfmm., Bsf xf tujmm ibwjoh ejoofs upnpsspx?

Zpvst tjodfsfmz,

Kbnft

Hvis dine fiender fanget opp dette brevet, det er et triks som de kunne bruke til å prøve å knekke koden. De kunne se på formatet for brevet ditt og prøve å gjette hva meldingen kan si. De vet at folk vanligvis begynner sitt brev med «Hei», «Hallo», «Kjære» eller en rekke andre konvensjoner.

Hvis de forsøkte å bruke «hei» eller «Hallo» som første ord, ville de se at det ikke ville passe antall tegn. De kan da prøve med «Kjære»., Den passer, men det betyr ikke nødvendigvis betyr noe. Angriperne ville bare prøve det og se hvor det førte dem. Så de ville endre bokstavene «e», «f», «b», og «s» med «d», «e», «a», og «r» henholdsvis. Dette ville gi dem:

Kjære Laseo,

J ipqe zpv er xemm. Er xe tujmm iawjoh djooes upnpsspx?

Zpvrt tjoderemz,

Kanet

Det ser fortsatt ganske forvirrende, slik at angriperne kan prøve å se på noen andre konvensjoner, som for eksempel hvordan vi konkludere med våre bokstaver. Folk ofte legge «Fra» eller «Vennlig hilsen» på slutten, men ingen av disse passer format., I stedet angriperne kan du prøve med «med vennlig Hilsen» og erstatte den andre bokstaver for å se hvor det blir av dem. Ved å endre «z», «s», «v», «t», «j» «o», «d» og «m» med «y», «o», «u», «s», «jeg», «n», «c» og «l» for henholdsvis de ville få:

Kjære Lasen,

jeg ioqe du er xell. Er xe tuill iawinh dinnes uonossox?

med vennlig Hilsen,

Kanet

Etter at modifisering, det ser ut som angriperne er i ferd med å få et sted. De har funnet ordene «jeg», «du» og «er», i tillegg til ord som gjorde opp sine første gjetninger.,

Se ordene i riktig grammatiske for angriperne kan være ganske trygg på at de er på vei i riktig retning. Nå, de har nok også innsett at den koden som er involvert hver bokstav blir endret til den som følger av det i alfabetet. Når de innser dette, det gjør det enkelt å oversette resten og lese den opprinnelige meldingen.

eksempelet ovenfor var bare en enkel kode, men som du ser er strukturen i en melding kan gi angripere ledetråder om dens innhold., Jada, det var vanskelig å finne ut meldingen fra kun dens struktur, og det tok en utdannet gjetting, men du må huske på at datamaskiner er mye bedre til å gjøre dette enn vi er. Dette betyr at de kan brukes til å finne ut langt mer komplekse koder i en mye kortere tid, basert på ledetråder som kommer fra struktur og andre elementer.

Hvis strukturen kan føre til en kode som sprakk og vise innholdet av en melding, så vi trenger noen måte å skjule struktur for å beholde meldingen sikker. Dette bringer oss til polstring.,

Når en melding er polstret, randomisert data er lagt til for å skjule den opprinnelige formateringen ledetråder som kan føre til en kryptert melding, blir brutt. Med RSA, ting er litt mer komplisert, fordi en kryptert nøkkel ikke har den åpenbare formatering av et brev som bidro til å gi oss ledetråder i vår eksemplet ovenfor.

til Tross for dette, motstandere kan bruke en rekke angrep for å utnytte de matematiske egenskapene til en kode og bryte kryptert data. På grunn av denne trusselen, implementering av RSA bruke padding ordninger som OAEP å legge inn ekstra data i meldingen., Legge denne polstring før meldingen er kryptert gjør RSA mye mer sikker.

Signering av meldinger

RSA kan brukes til mer enn bare å kryptere data. Dens egenskaper også gjør det til et nyttig system for å bekrefte at meldingen er sendt fra enheten som hevder å ha sendt det, så vel som beviser at meldingen ikke har blitt endret eller tuklet med.,

Når noen ønsker å bevise ektheten av sitt budskap, de kan beregne hash (en funksjon som tar data fra en vilkårlig størrelse og gjør den om til en fast lengde verdi) i ren tekst, og logg deretter den med sin private nøkkel. De registrerer hash ved å bruke den samme formuleringen som er brukt i dekryptering (m = cd-mod n). Når meldingen er signert, kan de sende denne digitale signaturen til mottakeren sammen med meldingen.,

Hvis en mottaker mottar en melding med en digital signatur, kan de bruke signaturen for å sjekke om meldingen ble autentisk signert med den private nøkkelen fra den personen som hevder å ha sendt det. De kan også se om meldingen har blitt endret av angripere etter den ble sendt.

for Å kontrollere den digitale signaturen, mottakeren første bruker de samme hash-funksjon for å finne hash-verdi av meldingen de fikk., Mottakeren så gjelder avsenders offentlige nøkkel til den digitale signaturen, ved hjelp av kryptering formelen (p = meg mod n), for å gi dem nummeret for den digitale signaturen.

Ved å sammenligne hash av meldingen som ble mottatt ved siden av hash fra den krypterte digital signatur, mottakeren kan fortelle om meldingen er ekte. Hvis de to verdiene er de samme, meldingen ikke har blitt endret siden den ble signert av den opprinnelige avsenderen. Hvis meldingen hadde blitt endret av en enkelt karakter, hash-verdien ville være helt annerledes.,

RSA security & angrep

Som de fleste cryptosystems, sikkerheten i RSA, avhenger av hvordan den er implementert og brukt. En viktig faktor er størrelsen på nøkkelen. Jo større antall bits i en nøkkel (egentlig hvor lenge tasten er), jo vanskeligere det er å knekke gjennom angrep, for eksempel brute-tvang og factoring.

Siden asymmetrisk-nøkkel algoritmer som RSA kan bli brutt ved heltall primtallsfaktorisering, mens symmetrisk-nøkkel algoritmer som AES ikke, RSA-nøkler må være mye lenger for å oppnå samme grad av sikkerhet.,

i Dag, den største nøkkelen størrelse som har vært priset er 768 bits lang. Dette ble gjort av et team av forskere over en to års periode, med hundrevis av maskiner.

Siden factoring ble fullført ved utgangen av 2009 og datakraft har vokst betydelig siden den gang, kan det antas at et forsøk av lignende intensitet kan nå faktor en mye større RSA-nøkkel.

til Tross for dette, tiden og ressursene som kreves for denne type angrep setter den ut av rekkevidde for de fleste hackere og inn i riket av nasjonalstatene., Den beste nøkkellengde å bruke, vil avhenge av din individuelle trussel modell. The National Institute of Standards and Technology anbefaler en minimum-tasten størrelse på 2048-bit, men 4096-biters nøkler er også brukt i noen situasjoner der trusselbildet er høyere.

Factoring er bare en måte som RSA kan bli brutt. En rekke andre angrep har potensial til å bryte kryptering med en mindre mengde ressurser, men disse avhenger av implementering og andre faktorer, ikke nødvendigvis RSA seg selv. Noen av disse inkluderer:

Er primtall virkelig tilfeldig?,

Noen implementasjoner av RSA bruk svak tilfeldig tall generatorer for å komme opp med primtall. Hvis disse tallene er ikke tilstrekkelig tilfeldig, det gjør det mye enklere for angripere å faktoren dem og bryte krypteringen. Dette problemet kan unngås ved hjelp av en kryptografisk sikker pseudo-random number generator.

Dårlig nøkkelgenerering

RSA-nøkler må falle innenfor visse parametere i orden for dem å være sikker. Hvis primtall p og q er for tett sammen, nøkkelen kan lett bli oppdaget. Likeledes, antall d som utgjør en del av den private nøkkelen kan ikke være for små., En lav verdi gjør det enkelt å løse. Det er viktig at disse tallene er av tilstrekkelig lengde for å holde nøkkelen trygt.

Side-channel attacks

Dette er en type angrep som ikke bryte RSA direkte, men i stedet bruke informasjon fra gjennomføring til å gi angripere hint om kryptering prosessen. Disse angrepene kan inkludere ting som å analysere mengden strøm som blir brukt, eller gren prediktiv analyse, som bruker gjennomføring gang målinger for å oppdage den private nøkkelen.

en Annen type side kanalen angrep er kjent som en timing angrep., Hvis en angriper har evnen til å måle dekryptering tid på sine mål datamaskin for en rekke ulike krypterte meldinger, er dette informasjon som kan gjøre det mulig for en angriper å fastslå målet er privat nøkkel.

de Fleste implementeringer av RSA unngå dette angrepet ved å legge til en en-off-verdi under krypteringsprosessen, som fjerner denne sammenheng. Denne prosessen kalles kryptografiske blinding.

Er RSA kryptering trygg for fremtiden?

Den gode nyheten er at RSA er ansett som trygt å bruke, til tross for disse mulige angrep., Det forbeholdet er at det er behov for å bli implementert på riktig måte og bruke en nøkkel som faller innenfor den riktige parametere. Som vi nettopp har diskutert, implementeringer som ikke bruker polstring, bruk ikke store primtall eller har andre sårbarheter kan ikke anses som trygt.

Hvis du ønsker å bruke RSA-kryptering, må du kontrollere at du bruker en nøkkel på minst 1024 bits. De med høyere trussel modeller bør holde seg til tastene på 2048 eller 4096 bits hvis de ønsker å bruke RSA med selvtillit., Så lenge du er bevisst på de svakhetene som RSA har og bruk det riktig, skal du føle deg trygg å bruke for RSA-nøkkel deling og andre lignende oppgaver som krever offentlig nøkkel kryptering.

Se også: Vanlige typer kryptering forklart

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *