Wat is RSA encryptie en hoe werkt het?

RSA-versleuteling is een systeem dat een van de grootste problemen in de cryptografie oplost: hoe kun je iemand een gecodeerd bericht sturen zonder de mogelijkheid te hebben om de code eerder met hen te delen?

Dit artikel leert u alles wat u moet weten over hoe RSA-encryptie is ontwikkeld, hoe het werkt, de wiskunde erachter, waarvoor het wordt gebruikt en enkele van de grootste beveiligingsproblemen waarmee het te maken heeft., Leren over RSA zal u enige fundamentele kennis die u helpt om te begrijpen hoeveel delen van ons online leven worden veilig gehouden.

Wat is RSA-versleuteling?

stel dat je je vriend een geheim wilt vertellen. Als je naast ze staat, kun je het fluisteren. Als je aan weerszijden van het land bent, zal dat natuurlijk niet werken. Je kunt het opschrijven en naar hen mailen, of de telefoon gebruiken, maar elk van deze communicatiekanalen is onzeker en iedereen met een sterke motivatie kan het bericht gemakkelijk onderscheppen.,

als het geheim belangrijk genoeg was, zou u niet het risico lopen het normaal op te schrijven–spionnen of een malafide postmedewerker zouden uw post kunnen doorzoeken. Ook, iemand zou kunnen tikken op uw telefoon zonder uw medeweten en loggen elke oproep die u maakt.

een oplossing om te voorkomen dat luisteraars toegang krijgen tot de inhoud van het bericht is om het te versleutelen. Dit betekent in principe om een code toe te voegen aan het bericht dat het verandert in een warboel. Als uw code voldoende complex is, dan zijn de enige mensen die toegang hebben tot het oorspronkelijke bericht degenen die toegang hebben tot de code.,

Als u de kans had om de code vooraf met uw vriend te delen, dan kan een van u op elk gewenst moment een versleuteld bericht versturen, wetende dat u de enigen bent die de inhoud van het bericht kunnen lezen. Maar wat als je niet de kans had om de code van tevoren te delen?

Dit is een van de fundamentele problemen van cryptografie, die is aangepakt door publieke sleutelversleutelingsschema ‘ s (ook bekend als asymmetrische versleuteling) zoals RSA.

onder RSA-versleuteling worden berichten versleuteld met een code die een publieke sleutel wordt genoemd, die openlijk gedeeld kan worden., Als gevolg van een aantal verschillende wiskundige eigenschappen van het RSA-algoritme, kan een bericht eenmaal versleuteld met de publieke sleutel, alleen worden gedecodeerd door een andere sleutel, bekend als de private sleutel. Elke RSA gebruiker heeft een sleutelpaar bestaande uit hun publieke en private sleutels. Zoals de naam al doet vermoeden, moet de private sleutel geheim worden gehouden.

public key encryption schema ‘ s verschillen van symmetric-key encryptie, waarbij zowel de encryptie als decryptie proces dezelfde private sleutel gebruiken., Deze verschillen maken public key encryptie zoals RSA nuttig voor het communiceren in situaties waar er geen mogelijkheid is om sleutels veilig te distribueren van tevoren.

symmetrische sleutelalgoritmen hebben hun eigen toepassingen, zoals het versleutelen van gegevens voor persoonlijk gebruik, of voor wanneer er veilige kanalen zijn waar de privésleutels over gedeeld kunnen worden.

zie ook: public key cryptography

Waar wordt RSA-versleuteling gebruikt?

RSA-versleuteling wordt vaak gebruikt in combinatie met andere versleutelingsschema ‘ s, of voor digitale handtekeningen die de authenticiteit en integriteit van een bericht kunnen bewijzen., Het wordt over het algemeen niet gebruikt om volledige berichten of bestanden te versleutelen, omdat het minder efficiënt is en meer resource-heavy dan symmetrische-key encryptie.

om de zaken efficiënter te maken, zal een bestand over het algemeen versleuteld worden met een symmetrisch-sleutel algoritme, en dan zal de symmetrische sleutel versleuteld worden met RSA-versleuteling. Onder dit proces zal alleen een entiteit die toegang heeft tot de RSA private sleutel in staat zijn om de symmetrische sleutel te decoderen.

zonder toegang tot de symmetrische sleutel kan het originele bestand niet worden ontcijferd., Deze methode kan worden gebruikt om berichten en bestanden veilig te houden, zonder te lang of consumeren te veel computationele middelen.

RSA-versleuteling kan in een aantal verschillende systemen worden gebruikt. Het kan worden geïmplementeerd in OpenSSL, wolfCrypt, cryptlib en een aantal andere cryptografische bibliotheken.

als een van de eerste veelgebruikte public-key encryptie schema ‘ s, legde RSA de basis voor veel van onze beveiligde communicatie. Het werd traditioneel gebruikt in TLS en was ook het originele algoritme dat werd gebruikt in PGP-encryptie., RSA is nog steeds te zien in een reeks van webbrowsers, e-mail, VPN ‘ s, chat en andere communicatiekanalen.

RSA wordt ook vaak gebruikt om veilige verbindingen te maken tussen VPN-clients en VPN-servers. Onder protocollen zoals OpenVPN kan TLS handshakes het RSA-algoritme gebruiken om sleutels uit te wisselen en een veilig kanaal tot stand te brengen.

de achtergrond van RSA-encryptie

zoals we aan het begin van dit artikel vermeldden, was het een uitdaging om veilig te communiceren als er geen kans was geweest om sleutels op voorhand veilig uit te wisselen., Als er geen mogelijkheid was om de code van tevoren te delen, of een beveiligd kanaal waardoor de sleutels konden worden verspreid, was er geen manier om te communiceren zonder de dreiging van vijanden die in staat waren om de inhoud van het bericht te onderscheppen en te openen.

Het was pas in de jaren 1970 dat de dingen echt begonnen te veranderen. De eerste belangrijke ontwikkeling naar wat we nu publieke-sleutel cryptografie noemen werd aan het begin van het decennium gepubliceerd door James H. Ellis., Ellis kon geen manier vinden om zijn werk te implementeren, maar het werd uitgebreid door zijn collega Clifford Cocks om wat we nu kennen als RSA-encryptie te worden.

het laatste stukje van de puzzel is wat we nu de Diffie-Hellman sleutel uitwisseling noemen. Malcolm J. Williamson, een andere collega, bedacht een regeling waardoor twee partijen een encryptiesleutel konden delen, zelfs als het kanaal werd gevolgd door tegenstanders.

al dit werk werd uitgevoerd bij de Britse inlichtingendienst, het Government Communications Headquarters (GCHQ), die de ontdekking geheim hield., Mede door technologische beperkingen zag de GCHQ geen nut voor public-key cryptografie op dat moment, dus de ontwikkeling zat werkeloos op de plank stof te verzamelen. Pas in 1997 werd het werk vrijgegeven en werden de oorspronkelijke uitvinders van RSA erkend.enkele jaren later begonnen soortgelijke concepten zich in de publieke sfeer te ontwikkelen. Ralph Merkle creëerde een vroege vorm van public-key cryptografie, die Whitfield Diffie en Martin Hellman beïnvloedde in het ontwerp van de Diffie-Hellman key exchange.,

Diffie en Hellman ‘ s ideeën ontbraken een belangrijk aspect dat hun werk zou maken van een basis van publieke sleutel cryptografie. Dit was een eenrichtingsfunctie die moeilijk om te keren zou zijn. In 1977 kwamen Ron Rivest, Adi Shamir en Leonard Adleman, wiens achternamen het RSA acroniem vormen, met een oplossing na een jaar van werken aan het probleem.de MIT-based academici maakten hun doorbraak na een Paasfeest in 1977., Na een nacht drinken ging Rivest naar huis, maar in plaats van te slapen, bracht hij de avond koortsachtig door met het schrijven van een paper dat zijn idee formaliseerde voor de noodzakelijke eenrichtingsfunctie.

het idee werd in 1983 gepatenteerd door MIT, maar pas in de begindagen van het internet begon het RSA-algoritme wijdverspreide adoptie te zien als een belangrijk beveiligingshulpmiddel.

Hoe werkt RSA-versleuteling?

het volgende zal een beetje een vereenvoudiging zijn, omdat te veel lezers waarschijnlijk getekend zijn door hun wiskundeleraar op de middelbare school., Om te voorkomen dat de wiskunde te uit de hand loopt, zullen we enkele Concepten vereenvoudigen en veel kleinere getallen gebruiken. In werkelijkheid, RSA encryptie maakt gebruik van priemgetallen die veel groter zijn in omvang en er zijn een paar andere complexiteit.

er zijn verschillende concepten die je moet begrijpen voordat we kunnen uitleggen hoe het allemaal in elkaar past. Deze omvatten trapdoor functies, het genereren van priemgetallen, Carmichael ‘ s totient functie en de afzonderlijke processen die betrokken zijn bij het berekenen van de publieke en private sleutels gebruikt in de encryptie en decryptie processen.,

Trap deur functies

RSA encryptie werkt onder de aanname dat het algoritme gemakkelijk te berekenen is in één richting, maar bijna onmogelijk in omgekeerde richting. Als je bijvoorbeeld zou horen dat 701.111 een product is van twee priemgetallen, zou je dan kunnen achterhalen wat die twee getallen zijn?

zelfs met een rekenmachine of een computer zouden de meesten van ons geen idee hebben waar te beginnen, laat staan het antwoord kunnen achterhalen. Maar als we dingen omdraaien, wordt het veel makkelijker., Wat is het resultaat van:

907 x 773

als u zich genoeg verveelde, zou u in staat zijn geweest om uw telefoon eruit te halen of misschien berekenen in uw hoofd om te ontdekken dat het antwoord is de eerder genoemde 701.111. Deze 907 en 773 zijn de priemgetallen die onze eerste vraag beantwoorden, die ons laat zien dat bepaalde vergelijkingen gemakkelijk op één manier te achterhalen zijn, maar schijnbaar onmogelijk in omgekeerde richting.

een ander interessant aspect van deze vergelijking is dat het eenvoudig is om een van de priemgetallen te achterhalen als je de andere al hebt, evenals het product., Als je verteld wordt dat 701,111 het resultaat is van 907 vermenigvuldigd met een ander priemgetal, kun je het andere priemgetal berekenen met de volgende vergelijking:

701,111 ÷ 907 = 773

aangezien de relatie tussen deze getallen eenvoudig te berekenen is in één richting, maar ongelooflijk moeilijk in omgekeerde richting, staat de vergelijking bekend als een valdeur functie. Wees ervan bewust dat terwijl het bovenstaande voorbeeld is moeilijk voor mensen om erachter te komen, computers kunnen de operatie in een triviale hoeveelheid tijd doen.

hierdoor gebruikt RSA veel grotere getallen., De grootte van de priemgetallen in een echte RSA-implementatie varieert, maar in 2048-bit RSA, zouden ze samen komen om sleutels te maken die 617 cijfers lang zijn. Om u te helpen het te visualiseren, zou een sleutel een aantal van deze grootte zijn:

genererende priemgetallen

de trap deur functies die hierboven worden genoemd vormen de basis voor hoe publieke en private-sleutel encryptie schema ‘ s werken. Met hun eigenschappen kunnen openbare sleutels worden gedeeld zonder het bericht in gevaar te brengen of de persoonlijke sleutel te onthullen. Ze maken het ook mogelijk om gegevens te versleutelen met één sleutel op een manier die alleen kan worden gedecodeerd door de andere sleutel van het paar.,

de eerste stap van het versleutelen van een bericht met RSA is het genereren van de sleutels. Hiervoor hebben we twee priemgetallen nodig (p en q) die geselecteerd zijn met een priemgetal test. Een primaliteitstest is een algoritme dat efficiënt priemgetallen vindt, zoals de Rabin-Miller primaliteitstest.

de priemgetallen in RSA moeten zeer groot zijn en ook relatief ver uit elkaar liggen. Getallen die klein zijn of dichter bij elkaar zijn veel gemakkelijker te kraken. Ondanks dit, zal ons voorbeeld kleinere getallen gebruiken om dingen gemakkelijker te volgen en te berekenen.,

stel dat de primaliteitstest ons de priemgetallen geeft die we hierboven gebruikten, 907 en 773. De volgende stap is om de modulus (n) te ontdekken met behulp van de volgende formule:

N = P x q

waarbij p = 907 en q = 773

daarom:

N = 907 x 773

n = 701,111

zodra we n hebben, gebruiken we Carmichael ‘ s totient functie:

λ(n) = LCM (p − 1, q − 1)

als het al een tijdje geleden is dat je de wiskundeboeken hebt geraakt, kan het bovenstaande er een beetje angstaanjagend uitzien., Je kunt dit gedeelte overslaan en erop vertrouwen dat de wiskunde werkt, anders blijf je bij ons voor een paar berekeningen. Alles zal zo gedetailleerd mogelijk worden uitgelegd om u te helpen uw hoofd rond de basis te krijgen.

voor degenen die zich niet bewust zijn, λ(n) vertegenwoordigt Carmichael ‘ s totient voor n, terwijl lcm de laagste gemeenschappelijke veelvoud betekent, dat is het laagste getal dat zowel p als q Kunnen delen in. Er zijn een paar verschillende manieren om dit uit te zoeken, maar de makkelijkste is om een online rekenmachine te vertrouwen om de vergelijking voor u te doen., Dus laten we onze getallen in de vergelijking zetten:

λ (701.111) = lcm (907 − 1, 773 − 1)

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

met behulp van de bovenstaande calculator geeft dit ons:

λ(701,111) = 349,716

het genereren van de publieke sleutel

nu we Carmichael ‘ s totient van onze priemgetallen hebben, is het tijd om Zoek onze publieke sleutel uit. Onder RSA worden publieke sleutels samengesteld uit een priemgetal e, evenals n. het getal e kan om het even wat zijn tussen 1 en de waarde voor λ(n), die in ons voorbeeld 349,716 is.,

omdat de publieke sleutel open gedeeld wordt, is het niet zo belangrijk dat e een willekeurig getal is. In de praktijk is e over het algemeen ingesteld op 65.537, omdat wanneer veel grotere getallen willekeurig worden gekozen, het encryptie veel minder efficiënt maakt. Voor het voorbeeld van vandaag houden we de getallen klein om berekeningen efficiënt te maken. Laten we zeggen:

e = 11

onze definitieve versleutelde gegevens worden de versleutelde tekst (c) genoemd. We leiden het af van ons bericht in platte tekst( m), door de publieke sleutel toe te passen met de volgende formule:

c = Me mod n

we hebben al e bedacht en we kennen n ook., Het enige wat we moeten uitleggen is mod. Het is een beetje buiten de diepte van dit artikel, maar het verwijst naar een modulo operatie, wat in wezen betekent dat de rest overblijft als je de ene kant door de andere deelt. Bijvoorbeeld:

10 mod 3 = 1

Dit komt omdat 3 drie keer in 10 past, met een rest van 1.

terug naar onze vergelijking. Om het simpel te houden, laten we zeggen dat het bericht (m) dat we willen versleutelen en geheim houden slechts een enkel nummer is, 4., Laten we alles inpluggen:

c = me mod n

c = 411 mod 701,111

c = 4,194,304 mod 701,111

nogmaals, om de modulo-bediening eenvoudig te maken, gebruiken we een online rekenmachine, maar u bent van harte welkom om het zelf uit te zoeken. Door 4,194,304 in de online calculator in te voeren, geeft het ons:

c = 688,749

wanneer we RSA gebruiken om ons bericht te versleutelen, 4, met onze publieke sleutel, geeft het ons de cijfertekst van 688,749., De vorige stappen leken misschien een beetje te wiskundig-zwaar, maar het is belangrijk om te herhalen wat er eigenlijk is gebeurd.

We hadden een boodschap van 4, die we geheim wilden houden. We pasten er een publieke sleutel op toe, die ons het versleutelde resultaat gaf van 688.749. Nu het gecodeerd is, kunnen we het nummer 688.749 veilig naar de eigenaar van het sleutelpaar sturen. Zij zijn de enige persoon die in staat om het te decoderen met hun persoonlijke sleutel zal zijn. Wanneer ze decoderen, ze zullen het bericht dat we echt verzenden zien, 4.,

het genereren van de private sleutel

In RSA-versleuteling, zodra gegevens of een bericht is omgezet in versleuteling met een publieke sleutel, kan het alleen worden ontcijferd door de private sleutel van hetzelfde sleutelpaar. Private sleutels bestaan uit d en n. we kennen n al, en de volgende vergelijking wordt gebruikt om d te vinden:

d = 1 / e mod λ (n)

in het genereren van de publieke sleutel hierboven, hebben we al besloten dat in ons voorbeeld, e gelijk zou zijn aan 11. Evenzo weten we dat λ (n) gelijk is aan 349.716 uit ons eerdere werk onder Carmichael ‘ s totient functie., Het wordt een beetje ingewikkelder als we deze sectie van de formule tegenkomen:

1 / e mod

deze vergelijking kan eruit zien alsof het je vraagt om 1 door 11 te delen, maar dat is niet het geval. In plaats daarvan symboliseert dit dat we de modulaire inverse van e (die in dit geval 11 is) en λ(n) (die in dit geval 349.716 is) moeten berekenen.

Dit betekent in wezen dat in plaats van het uitvoeren van een standaard modulo operatie, we in plaats daarvan de inverse zullen gebruiken., Dit wordt normaal gesproken gevonden met de uitgebreide Euclidische algoritme, maar het is een beetje buiten het bereik van dit artikel, dus we zullen gewoon vals spelen en gebruik maken van een online rekenmachine in plaats daarvan., Nu we alles begrijpen wat er gaande is, stoppen we onze informatie in de formule:

d =1/11 mod 349,716

om deze operatie uit te voeren, voer je gewoon 11 in (of een waarde die je hebt voor e als je dit probeert met je eigen voorbeeld) waar het Integer en 349,716 (of een waarde die je hebt voor λ(n) als je dit probeert met je eigen voorbeeld) waar het Modulo zegt in de online calculator die hierboven is gekoppeld., Als je het goed hebt gedaan, zou je een resultaat moeten krijgen waarbij:

d = 254, 339

nu we de waarde voor d hebben, kunnen we berichten decoderen die versleuteld zijn met onze publieke sleutel met behulp van de volgende formule:

M = cd mod n

We kunnen nu teruggaan naar de versleutelde versleuteling onder de sectie De private sleutel genereren. Toen we het bericht versleutelden met de publieke sleutel, gaf het ons een waarde voor C van 688.749. Van boven weten we dat d gelijk is aan 254.339. We weten ook dat n gelijk is aan 701.111. Dit geeft ons:

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

zoals je misschien hebt gemerkt, is het proberen om een getal te nemen tot de 254.339 Ste macht misschien een beetje veel voor de meeste normale rekenmachines. In plaats daarvan, we zullen worden met behulp van een online RSA decryptie calculator. Als je een andere methode wilde gebruiken, zou je de bevoegdheden toepassen zoals je normaal zou doen en de modulus operatie uitvoeren op dezelfde manier als we deden in het genereren van de publieke sleutel sectie.,

in de calculator hierboven gekoppeld, voer 701,111 waar het zegt Supply Modulus: N, 254,399 waar het zegt decryptie sleutel: D, en 688,749 waar het zegt versleuteling bericht in numerieke vorm, zoals hieronder getoond:

zodra u de gegevens hebt ingevoerd, druk op Decrypt, die zal de getallen door de decryptie formule die werd vermeld boven. Dit geeft u het originele bericht in het onderstaande vak. Als je alles goed hebt gedaan, moet je een antwoord van 4 krijgen, dat was het oorspronkelijke bericht dat we versleuteld met onze publieke sleutel.,

hoe RSA-versleuteling in de praktijk werkt

de bovenstaande secties zouden u een redelijk inzicht moeten geven in hoe de wiskunde achter public key-versleuteling werkt. Het kan een beetje verwarrend zijn, maar zelfs degenen die de fijne kneepjes van de vergelijkingen niet begrijpen, kunnen hopelijk belangrijke informatie over het proces wegnemen.

in de bovenstaande stappen hebben we laten zien hoe twee entiteiten veilig kunnen communiceren zonder vooraf een code te hebben gedeeld. Ten eerste moeten ze elk hun eigen sleutelparen opzetten en de publieke sleutel met elkaar delen., De twee entiteiten moeten hun persoonlijke sleutels geheim houden om hun communicatie veilig te houden.

zodra de afzender de publieke sleutel van zijn ontvanger heeft, kunnen ze deze gebruiken om de gegevens te versleutelen die ze veilig willen houden. Zodra het is versleuteld met een publieke sleutel, kan het alleen worden gedecodeerd door de private sleutel van hetzelfde sleutelpaar. Zelfs dezelfde publieke sleutel kan niet worden gebruikt om de gegevens te decoderen. Dit komt door de eigenschappen van de valdeur functies die we hierboven vermeld.

wanneer de ontvanger het versleutelde bericht ontvangt, gebruikt hij zijn persoonlijke sleutel om toegang te krijgen tot de gegevens., Als de ontvanger de communicatie op een veilige manier wil retourneren, kan hij zijn bericht versleutelen met de publieke sleutel van de partij waarmee hij communiceert. Nogmaals, zodra het is versleuteld met de publieke sleutel, de enige manier waarop de informatie kan worden benaderd is door middel van de overeenkomende private sleutel.

op deze manier kan RSA-versleuteling worden gebruikt door voorheen onbekende partijen om veilig gegevens tussen elkaar te verzenden. Belangrijke delen van de communicatiekanalen die we gebruiken in ons online leven zijn opgebouwd uit deze stichting.,

Hoe worden meer gecompliceerde berichten versleuteld met RSA?

in ons voorbeeld hebben we dingen veel vereenvoudigd om het gemakkelijker te begrijpen, en daarom hebben we alleen een bericht van “4”versleuteld. In staat zijn om het nummer 4 te versleutelen lijkt niet bijzonder nuttig, dus je kunt je afvragen hoe je een meer gecompliceerde set van gegevens kunt versleutelen, zoals een symmetrische sleutel (dat is het meest voorkomende gebruik van RSA), of zelfs een bericht.,

sommige mensen kunnen verbaasd zijn over hoe een sleutel als ” n38cb29fkbjh138g7fqijnf3kaj84f8b9f… “of een bericht als” koop me een sandwich ” kan worden versleuteld door een algoritme als RSA, die zich bezighoudt met getallen en niet met letters. De realiteit is dat alle informatie die onze computers verwerken wordt opgeslagen in binaire (1s en 0s) en we gebruiken coderingsstandaarden zoals ASCII of Unicode om ze weer te geven op manieren die mensen kunnen begrijpen (letters).,

Dit betekent dat sleutels als ” n38cb29fkbjh138g7fqijnf3kaj84f8b9f… “en berichten als” koop me een sandwich ” al bestaan als getallen, die gemakkelijk kunnen worden berekend in het RSA-algoritme. De getallen die ze vertegenwoordigen zijn veel groter en moeilijker voor ons om te beheren, dat is waarom we liever omgaan met alfanumerieke tekens in plaats van een wirwar van binaire.

Als u een langere sessiesleutel of een complexer bericht met RSA wilt versleutelen, dan zou er simpelweg een veel groter getal bij betrokken zijn.,

Padding

wanneer RSA is geïmplementeerd, gebruikt het iets genaamd padding om een aantal aanvallen te voorkomen. Om uit te leggen hoe dit werkt, beginnen we met een voorbeeld. Laten we zeggen dat je een gecodeerd bericht stuurde naar een vriend:

Beste Karen,

Ik hoop dat het goed met je gaat. Gaan we morgen nog eten?

Hoogachtend,

James

stel dat u het bericht op een eenvoudige manier gecodeerd hebt, door elke letter te veranderen in de letter die erop volgt in het alfabet. Dit zou het bericht veranderen in:

Efbs Lbsfo,

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

Zpvst tjodfsfmz,

Kbnft

als uw vijanden deze brief hebben onderschept, is er een truc die ze kunnen gebruiken om de code te kraken. Ze kunnen kijken naar het formaat van uw brief en proberen te raden wat het bericht zou kunnen zeggen. Ze weten dat mensen normaal gesproken hun brieven beginnen met” Hallo”,” Hallo”,” lieve ” of een aantal andere conventies.

als ze “Hi” of “Hello” als het eerste woord zouden proberen toe te passen, zouden ze zien dat het niet zou passen bij het aantal tekens. Dan kunnen ze ‘Lieve’ proberen., Het past, maar dat hoeft niets te betekenen. De aanvallers probeerden het gewoon en zagen waar het hen heen leidde. Dus veranderden ze de letters “e”, “f”, “b”, en “s” met respectievelijk “d”, “e”, “a” en “r”. Dit geeft hen:

Beste Laseo,

J ipqe zpv zijn xemm. Zijn xe tujmm iawjoh djooes upnpsspx?

Zpvrt tjoderemz,

Kanet

het ziet er nog steeds vrij verwarrend uit, dus de aanvallers kunnen proberen naar een aantal andere conventies te kijken, zoals hoe we onze brieven afsluiten. Mensen voegen vaak “van” of “vriendelijke groeten” aan het einde toe, maar geen van deze passen in het formaat., In plaats daarvan, de aanvallers zou kunnen proberen “Hoogachtend” en vervang de andere letters om te zien waar het hen krijgt. Door respectievelijk “z”, “p”, “v”, “t”, “j” “o”, “d” en “m” te veranderen met “y”, “o”, “u”, “S”, “i”, “n”, “c” en “l”, krijgen ze:

Dear Lasen,

ioqe you are xell. Zijn xe tuill iawinh dinnes uonossox?

Hoogachtend,

Kanet

na die wijziging lijkt het erop dat de aanvallers ergens beginnen te komen. Ze hebben de woorden “Ik”, “Jij” en “zijn” gevonden, naast de woorden die hun eerste gissingen vormden.,

aangezien de woorden in de juiste grammaticale volgorde staan, kunnen de aanvallers er vrij zeker van zijn dat ze in de juiste richting gaan. Inmiddels hebben ze zich waarschijnlijk ook gerealiseerd dat de code elke letter die in het alfabet volgt, veranderde. Zodra ze zich dit realiseren, maakt het het gemakkelijk om de rest te vertalen en het oorspronkelijke bericht te lezen.

het bovenstaande voorbeeld was slechts een eenvoudige code, maar zoals je kunt zien, kan de structuur van een bericht aanvallers aanwijzingen geven over de inhoud ervan., Zeker, het was moeilijk om erachter te komen de boodschap van alleen de structuur en het duurde een aantal opgeleide giswerk, maar je moet in gedachten houden dat computers zijn veel beter in het doen van dit dan wij zijn. Dit betekent dat ze kunnen worden gebruikt om veel complexere codes te achterhalen in een veel kortere tijd, gebaseerd op aanwijzingen die afkomstig zijn van de structuur en andere elementen.

als de structuur kan leiden tot een code wordt gekraakt en onthullen de inhoud van een bericht, dan moeten we een manier om de structuur te verbergen om het bericht veilig te houden. Dit brengt ons bij opvulling.,

wanneer een bericht opgevuld is, worden gerandomiseerde gegevens toegevoegd om de originele opmaakaanwijzingen te verbergen die ertoe kunnen leiden dat een versleuteld bericht wordt verbroken. Met RSA, dingen zijn een beetje ingewikkelder, omdat een versleutelde sleutel niet de voor de hand liggende opmaak van een letter die hielp om ons aanwijzingen in ons bovenstaande voorbeeld.

ondanks dit, kunnen tegenstanders een aantal aanvallen gebruiken om de wiskundige eigenschappen van een code te exploiteren en versleutelde gegevens te breken. Als gevolg van deze dreiging, implementaties van RSA gebruik padding regelingen zoals OAEP om extra gegevens in het bericht insluiten., Het toevoegen van deze opvulling voordat het bericht wordt versleuteld maakt RSA veel veiliger.

berichten ondertekenen

RSA kan worden gebruikt voor meer dan alleen het versleutelen van gegevens. De eigenschappen maken het ook een nuttig systeem om te bevestigen dat een bericht is verzonden door de entiteit die beweert te hebben verzonden, evenals het bewijs dat een bericht niet is gewijzigd of geknoeid met.,

wanneer iemand de authenticiteit van zijn bericht wil bewijzen, kan hij een hash berekenen (een functie die gegevens van een willekeurige grootte neemt en deze verandert in een waarde met een vaste lengte) van de platte tekst, en deze vervolgens ondertekenen met zijn persoonlijke sleutel. Ze ondertekenen de hash door het toepassen van dezelfde formule die wordt gebruikt in decryptie (m = cd mod n). Zodra het bericht is ondertekend, sturen ze deze digitale handtekening samen met het bericht naar de ontvanger.,

als een ontvanger een bericht met een digitale handtekening ontvangt, kan hij deze gebruiken om te controleren of het bericht authentiek is ondertekend door de persoonlijke sleutel van de persoon die beweert het bericht te hebben verzonden. Ze kunnen ook zien of het bericht is gewijzigd door aanvallers nadat het werd verzonden.

om de digitale handtekening te controleren, gebruikt de ontvanger eerst dezelfde hash-functie om de hashwaarde van het ontvangen bericht te vinden., De ontvanger past vervolgens de publieke sleutel van de afzender toe op de digitale handtekening, met behulp van de encryptie formule (c = Me mod n), om hen de hash van de digitale handtekening te geven.

door de hash van het bericht dat werd ontvangen naast de hash van de versleutelde digitale handtekening te vergelijken, kan de ontvanger zien of het bericht authentiek is. Als de twee waarden hetzelfde zijn, is het bericht niet gewijzigd sinds het werd ondertekend door de oorspronkelijke afzender. Als het bericht was veranderd door zelfs maar een enkel teken, zou de hash-waarde compleet anders zijn.,

RSA beveiliging & aanvallen

zoals de meeste cryptosystemen, hangt de beveiliging van RSA af van hoe het wordt geïmplementeerd en gebruikt. Een belangrijke factor is de grootte van de sleutel. Hoe groter het aantal bits in een sleutel (in wezen hoe lang de sleutel is), hoe moeilijker het is om door aanvallen zoals brute-forcing en factoring te breken.

omdat asymmetrische sleutelalgoritmen zoals RSA kunnen worden verbroken door integer factorisatie, terwijl symmetrische sleutelalgoritmen zoals AES dat niet kunnen, moeten RSA-sleutels veel langer zijn om hetzelfde beveiligingsniveau te bereiken.,

momenteel is de grootste sleutelgrootte die is berekend 768 bits lang. Dit werd gedaan door een team van academici over een periode van twee jaar, met behulp van honderden machines.

aangezien de factoring eind 2009 voltooid was en de rekenkracht sinds die tijd aanzienlijk is toegenomen, kan worden aangenomen dat een poging van dezelfde intensiteit nu een veel grotere RSA-sleutel zou kunnen veroorzaken.

ondanks dit, de tijd en middelen die nodig zijn voor dit soort aanvallen brengt het buiten het bereik van de meeste hackers en in het rijk van de natiestaten., De beste sleutellengte te gebruiken zal afhangen van uw individuele bedreiging model. Het National Institute of Standards and Technology adviseert een minimale sleutelgrootte van 2048-bit, maar 4096-bit toetsen worden ook gebruikt in sommige situaties waar het dreigingsniveau hoger is.

Factoring is slechts een manier waarop RSA kan worden verbroken. Een aantal andere aanvallen hebben het potentieel om de encryptie te breken met een kleinere hoeveelheid middelen, maar deze zijn afhankelijk van de implementatie en andere factoren, niet noodzakelijkerwijs RSA zelf. Enkele hiervan zijn:

zijn de priemgetallen echt willekeurig?,

sommige implementaties van RSA gebruiken zwakke random number generators om de priemgetallen te bedenken. Als deze nummers zijn niet voldoende willekeurig, het maakt het veel gemakkelijker voor aanvallers om ze te factor en breken de encryptie. Dit probleem kan worden vermeden door gebruik te maken van een cryptografisch beveiligde pseudo-random number generator.

slechte sleutelgeneratie

RSA-sleutels moeten binnen bepaalde parameters vallen om veilig te zijn. Als de priemgetallen p en q te dicht bij elkaar liggen, kan de sleutel gemakkelijk worden ontdekt. Evenzo kan het getal d dat deel uitmaakt van de private sleutel niet te klein zijn., Een lage waarde maakt het gemakkelijk op te lossen. Het is belangrijk dat deze nummers voldoende lang zijn om uw sleutel veilig te houden.

Side channel attacks

Dit is een type aanval dat RSA niet direct breekt, maar in plaats daarvan informatie uit de implementatie ervan gebruikt om aanvallers hints te geven over het versleutelingsproces. Deze aanvallen kunnen dingen omvatten zoals het analyseren van de hoeveelheid stroom die wordt gebruikt, of branch voorspelling analyse, die gebruik maakt van uitvoering-tijd metingen om de private sleutel te ontdekken.

een ander type zijkanaalaanval staat bekend als een timing-aanval., Als een aanvaller de mogelijkheid heeft om de decryptie tijd op de computer van zijn doel te meten voor een aantal verschillende versleutelde berichten, kan deze informatie het mogelijk maken voor de aanvaller om de private sleutel van het doel vast te stellen.

De meeste implementaties van RSA vermijden deze aanval door een eenmalige waarde toe te voegen tijdens het coderingsproces, waardoor deze correlatie wordt verwijderd. Dit proces wordt cryptografisch verblinden genoemd.

Is RSA-versleuteling veilig voor de toekomst?

het goede nieuws is dat RSA veilig wordt geacht om te gebruiken, ondanks deze mogelijke aanvallen., Het voorbehoud is dat het correct moet worden geïmplementeerd en gebruik maken van een sleutel die binnen de juiste parameters valt. Zoals we zojuist hebben besproken, implementaties die geen padding gebruiken, onvoldoende grote priemgetallen gebruiken of andere kwetsbaarheden hebben, kunnen niet als veilig worden beschouwd.

als u RSA-versleuteling wilt gebruiken, moet u ervoor zorgen dat u een sleutel van ten minste 1024 bits gebruikt. Degenen met een hogere dreiging modellen moeten vasthouden aan toetsen van 2048 of 4096 bits als ze willen RSA gebruiken met vertrouwen., Zolang u zich bewust bent van de zwakke punten die RSA heeft en deze correct gebruikt, moet u zich veilig voelen om RSA te gebruiken voor het delen van sleutels en andere soortgelijke taken waarvoor versleuteling met openbare sleutels vereist is.

zie ook: veelgebruikte versleutelingstypen uitgelegd

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *