RSA encryption este un sistem care rezolvă ceea ce a fost odată una dintre cele mai mari probleme în criptografie: cum poți trimite cuiva un mesaj codat fără a avea posibilitatea de a partaja anterior codul cu ei?acest articol vă va învăța tot ce trebuie să știți despre cum a fost dezvoltată criptarea RSA, cum funcționează, matematica din spatele acesteia, pentru ce este folosită, precum și unele dintre cele mai mari probleme de securitate cu care se confruntă., Învățarea despre RSA vă va oferi câteva cunoștințe fundamentale care vă ajută să înțelegeți câte părți ale vieții noastre online sunt păstrate în siguranță.
ce este criptarea RSA?să presupunem că vrei să-i spui prietenului tău un secret. Dacă ești chiar lângă ei, poți să-l șoptești. Dacă sunteți pe părți opuse ale țării, care, evident, nu va funcționa. Puteți să-l scrieți și să-l trimiteți prin poștă sau să folosiți telefonul, dar fiecare dintre aceste canale de comunicare este nesigur și oricine are o motivație suficient de puternică ar putea intercepta cu ușurință mesajul.,
dacă secretul ar fi suficient de important, nu ați risca să îl scrieți în mod normal–spionii sau un angajat poștal necinstit ar putea căuta prin e-mail. De asemenea, cineva ar putea fi atingând telefonul fără știrea dvs. și logare fiecare apel pe care îl face.
o soluție pentru a împiedica interceptoarele să acceseze conținutul mesajului este criptarea acestuia. Acest lucru înseamnă, practic, pentru a adăuga un cod la mesajul care se schimbă într-o mizerie amestecate. Dacă codul dvs. este suficient de complex, atunci singurele persoane care vor putea accesa mesajul original sunt cele care au acces la cod.,dacă ați avut șansa de a partaja codul cu prietenul dvs. în prealabil, atunci oricare dintre voi poate trimite un mesaj criptat în orice moment, știind că voi doi sunteți singurii care au capacitatea de a citi conținutul mesajului. Dar dacă nu ați avea șansa de a partaja codul în prealabil?aceasta este una dintre problemele fundamentale ale criptografiei, care a fost abordată de schemele de criptare cu cheie publică (cunoscută și sub numele de criptare asimetrică) precum RSA.sub criptarea RSA, mesajele sunt criptate cu un cod numit cheie publică, care poate fi partajat în mod deschis., Datorită unor proprietăți matematice distincte ale algoritmului RSA, odată ce un mesaj a fost criptat cu cheia publică, acesta poate fi decriptat doar de o altă cheie, cunoscută sub numele de cheia privată. Fiecare utilizator RSA are o pereche de chei constând din cheile lor publice și private. După cum sugerează și numele, cheia privată trebuie păstrată secretă.schemele de criptare a cheilor publice diferă de criptarea simetrică a cheilor, unde atât procesul de criptare, cât și procesul de decriptare utilizează aceeași cheie privată., Aceste diferențe fac criptarea cheilor publice precum RSA utilă pentru comunicarea în situațiile în care nu a existat nicio oportunitate de a distribui în siguranță cheile în prealabil.algoritmii cu cheie simetrică au propriile aplicații, cum ar fi criptarea datelor pentru uz personal sau atunci când există canale securizate pe care cheile private pot fi partajate.
vezi și: criptografia cheilor publice
unde se utilizează criptarea RSA?criptarea RSA este adesea folosită în combinație cu alte scheme de criptare sau pentru semnături digitale care pot dovedi autenticitatea și integritatea unui mesaj., În general, nu este folosit pentru a cripta mesaje sau fișiere întregi, deoarece este mai puțin eficient și mai greu de resurse decât criptarea simetrică.
pentru a face lucrurile mai eficiente, un fișier va fi în general criptat cu un algoritm simetric-cheie, iar apoi cheia simetrică va fi criptat cu criptare RSA. În cadrul acestui proces, numai o entitate care are acces la cheia privată RSA va putea decripta cheia simetrică.
fără a putea accesa cheia simetrică, fișierul original nu poate fi decriptat., Această metodă poate fi utilizată pentru a păstra mesajele și fișierele în siguranță, fără a dura prea mult sau a consuma prea multe resurse de calcul.criptarea RSA poate fi utilizată într-un număr de sisteme diferite. Acesta poate fi implementat în OpenSSL, wolfCrypt, cryptlib și o serie de alte biblioteci criptografice.ca unul dintre primele scheme de criptare a cheilor publice utilizate pe scară largă, RSA a pus bazele unei mari părți din comunicațiile noastre securizate. Acesta a fost folosit în mod tradițional în TLS și a fost, de asemenea, algoritmul original utilizat în criptarea PGP., RSA este încă văzut într-o serie de browsere web, e-mail, VPN-uri, chat și alte canale de comunicare.RSA este, de asemenea, adesea folosit pentru a face conexiuni sigure între clienții VPN și serverele VPN. În conformitate cu protocoale precum OpenVPN, strângerile de mână TLS pot utiliza algoritmul RSA pentru a schimba chei și a stabili un canal securizat.după cum am menționat la începutul acestui articol, înainte de criptarea cheilor publice, a fost o provocare să comunicăm în siguranță dacă nu ar fi existat șansa de a schimba în siguranță cheile în prealabil., Dacă nu a existat o oportunitate de a partaja codul înainte de timp sau un canal securizat prin care cheile ar putea fi distribuite, nu a existat nicio modalitate de a comunica fără amenințarea inamicilor de a putea intercepta și accesa conținutul mesajului.
abia în anii 1970 lucrurile au început să se schimbe. Prima dezvoltare majoră față de ceea ce numim acum criptografie cu cheie publică a fost publicată la începutul deceniului de James H. Ellis., Ellis nu a putut găsi o modalitate de a-și implementa munca, dar a fost extinsă de colegul său Clifford Cocks pentru a deveni ceea ce știm acum ca criptare RSA.piesa finală a puzzle-ului este ceea ce numim acum schimbul de chei Diffie-Hellman. Malcolm J. Williamson, un alt coleg, a dat seama de o schemă care a permis două părți să împartă o cheie de criptare, chiar dacă canalul era monitorizat de adversari.
toate aceste lucrări au fost întreprinse la Agenția de informații din Marea Britanie, sediul Comunicațiilor guvernamentale (GCHQ), care a păstrat descoperirea clasificată., Parțial din cauza limitărilor tehnologice, GCHQ nu a putut vedea o utilizare pentru criptografia cu cheie publică la acea vreme, astfel încât dezvoltarea sa așezat în picioare pe raft adunând praf. Abia în 1997 lucrarea a fost declasificată și inventatorii originali ai RSA au fost recunoscuți.câțiva ani mai târziu, concepte similare au început să se dezvolte în sfera publică. Ralph Merkle a creat o formă timpurie de criptografie cu cheie publică, care a influențat Whitfield Diffie și Martin Hellman în proiectarea schimbului de chei Diffie-Hellman.,ideile lui Diffie și Hellman lipseau dintr-un aspect important care să facă din munca lor o fundație a criptografiei cheilor publice. Aceasta a fost o funcție unidirecțională care ar fi dificil de inversat. În 1977, Ron Rivest, Adi Shamir și Leonard Adleman, ale căror nume formează acronimul RSA, au venit cu o soluție după un an de muncă asupra problemei.
academicienii cu sediul la MIT și-au făcut descoperirea după o petrecere de Paște în 1977., După o noapte de băut, Rivest s-a dus acasă, dar în loc să doarmă, a petrecut seara scriind febril o lucrare care și-a formalizat ideea pentru funcția unidirecțională necesară.ideea a fost brevetată în 1983 de MIT, dar abia în primele zile ale Internetului algoritmul RSA a început să vadă adoptarea pe scară largă ca un instrument important de securitate.
cum funcționează criptarea RSA?
următorul lucru va fi un pic de simplificare, deoarece prea mulți cititori au fost probabil afectați de profesorul lor de Matematică din liceu., Pentru a păstra matematica de la obtinerea prea out-of-mână, vom fi simplificarea unor concepte și folosind numere mult mai mici. În realitate, criptarea RSA folosește numere prime care sunt mult mai mari în mărime și există și alte câteva complexități.
există mai multe concepte diferite, va trebui să obțineți capul în jurul valorii de înainte de a putea explica cum totul se potrivește împreună. Acestea includ funcțiile trapdoor, generarea primes, funcția Totient Carmichael și procesele separate implicate în calcularea cheilor publice și private utilizate în procesele de criptare și decriptare.,RSA criptare funcționează sub premisa că algoritmul este ușor de calculat într-o singură direcție, dar aproape imposibil în sens invers. Ca exemplu, dacă vi s-ar spune că 701,111 este un produs al două numere prime, ați putea să vă dați seama care sunt aceste două numere?chiar și cu un calculator sau un computer, majoritatea dintre noi nu ar avea nicio idee de unde să înceapă, cu atât mai puțin să ne dăm seama de răspuns. Dar dacă răsturnăm lucrurile, devine mult mai ușor., Care e rezultatul:
907 x 773
Dacă te-ai plictisit destul, ai fi putut să scoți telefonul sau poate calcula în capul tău, să descoperi că răspunsul este menționat anterior 701,111. Aceste 907 și 773 sunt numerele prime care răspund la prima noastră întrebare, ceea ce ne arată că anumite ecuații pot fi ușor de înțeles într-un fel, dar aparent imposibil în sens invers.un alt aspect interesant al acestei ecuații este că este simplu să descoperiți unul dintre numerele prime dacă aveți deja celălalt, precum și produsul., Dacă vi se spune că 701,111 este rezultatul 907 înmulțită cu un număr prim, puteți să vă dați seama la alte prime cu următoarea ecuație:
701,111 ÷ 907 = 773
având în vedere că relația dintre aceste numere este simplu de a calcula într-o singură direcție, dar incredibil de greu în sens invers, ecuația este cunoscut ca o trapă funcție. Fiți conștienți de faptul că, în timp ce exemplul de mai sus este greu pentru oameni să dau seama, computerele pot face operațiunea într-o cantitate trivială de timp.din acest motiv, RSA folosește numere mult mai mari., Dimensiunea primelor într-o implementare reală RSA variază, dar în RSA pe 2048 de biți, s-ar reuni pentru a face chei care au o lungime de 617 cifre. Pentru a vă ajuta să o vizualizați, o cheie ar fi un număr de această dimensiune:
generatoare de numere prime
funcțiile ușii trapei menționate mai sus formează baza pentru modul în care funcționează schemele de criptare a cheilor publice și private. Proprietățile lor permit partajarea cheilor publice fără a pune în pericol mesajul sau a dezvălui cheia privată. De asemenea, permit criptarea datelor cu o singură cheie într-un mod care poate fi decriptat numai de cealaltă cheie din pereche.,
primul pas de criptare a unui mesaj cu RSA este de a genera cheile. Pentru a face acest lucru, avem nevoie de două numere prime (p și q) care sunt selectate cu un test de primalitate. Un test de primalitate este un algoritm care găsește în mod eficient numere prime, cum ar fi testul de Primalitate Rabin-Miller.numerele prime din RSA trebuie să fie foarte mari și, de asemenea, relativ îndepărtate. Numerele care sunt mici sau mai apropiate sunt mult mai ușor de spart. În ciuda acestui fapt, exemplul nostru va folosi numere mai mici pentru a face lucrurile mai ușor de urmărit și de calculat.,să spunem că testul primalității ne oferă numerele prime pe care le-am folosit mai sus, 907 și 773. Următorul pas este de a descoperi modul (n), utilizând următoarea formulă:
n = p x q
Unde p = 907 și q = 773
prin Urmare,
n = 907 x 773
n = 701,111
Carmichael funcția totient
după ce ne-am n, vom folosi Carmichael funcția totient:
λ(n) = cmmmc (p − 1, q − 1)
Dacă a trecut ceva timp de când te-ai lovit de matematica, manuale, cele de mai sus ar putea arata un pic înfricoșător., Puteți sări peste această parte și doar încredere că lucrările de matematică, în caz contrar stick cu noi pentru câteva calcule. Totul va fi explicat în cât mai multe detalii posibil pentru a vă ajuta să vă gândiți la elementele de bază.
Pentru cei care nu sunt conștienți, λ(n) reprezintă Carmichael totient pentru n, în timp ce lcm înseamnă cel mai mic multiplu comun, care este cel mai mic număr care ambele p și q pot împărți în. Există câteva moduri diferite de a descoperi acest lucru, dar cel mai simplu este să ai încredere într-un calculator online pentru a face ecuația pentru tine., Așa că hai să punem numere în ecuație:
λ(701,111) = cmmmc (907 − 1, 773 − 1)
λ(701,111) = cmmmc (906, 772)
Utilizarea calculatorului legate de mai sus, acest lucru ne dă:
λ(701,111) = 349,716
Generarea cheii publice
Acum, că ne-au Carmichael totient a noastră numere prime, este timpul să-și dea seama de cheie publică. Sub RSA, cheile publice sunt alcătuite dintr-un număr prim e, precum și n. numărul e poate fi orice între 1 și valoarea pentru λ(n), care în exemplul nostru este 349,716.,deoarece cheia publică este partajată în mod deschis, nu este atât de important ca e să fie un număr aleatoriu. În practică, E este în general setat la 65,537, deoarece atunci când numerele mult mai mari sunt alese aleatoriu, face criptarea mult mai puțin eficientă. Pentru exemplul de astăzi, vom păstra numerele mici pentru a face calculele eficiente. Să spunem:
e = 11
datele noastre finale criptate se numesc textul cifrat (c). Îl derivăm din mesajul nostru plaintext (m), aplicând cheia publică cu următoarea formulă:
c = me mod n
am venit deja cu e și știm și n., Singurul lucru pe care trebuie să-l explicăm este mod. Este un pic din profunzimea acestui articol, dar se referă la o operație modulo, ceea ce înseamnă, în esență, restul rămas atunci când împărțiți o parte cu cealaltă. De exemplu:
10 mod 3 = 1
Acest lucru se datorează faptului că 3 merge în 10 de trei ori, cu un rest de 1.
înapoi la ecuația noastră. Pentru a păstra lucrurile simple, să spunem că mesajul (m) pe care dorim să-l criptăm și să-l păstrăm secret este doar un singur număr, 4., Hai să conectați totul în:
c = me mod n
c = 411 mod 701,111
c = 4,194,304 mod 701,111
din Nou, pentru a face operație modulo ușor, vom fi folosind un calculator on-line, dar sunteți bineveniți să-l dau afară pentru tine. Prin introducerea 4,194,304 în calculator on-line, ne dă:
c = 688,749
prin Urmare, atunci când vom folosi RSA pentru a cripta mesajul nostru, 4, cu cheie publică, ea ne oferă cifrat de 688,749., Pașii anteriori pot părea un pic prea greu de matematică, dar este important să reiterăm ceea ce sa întâmplat de fapt.
am avut un mesaj de 4, pe care am vrut să-l păstrăm secret. I-am aplicat o cheie publică, care ne-a dat rezultatul criptat de 688.749. Acum că este criptat, putem trimite în siguranță numărul 688,749 proprietarului perechii de chei. Sunt singura persoană care o va putea decripta cu cheia privată. Când o decriptează, vor vedea mesajul pe care l-am trimis cu adevărat, 4.,
generarea cheii private
în criptarea RSA, odată ce datele sau un mesaj au fost transformate în text cifrat cu o cheie publică, acesta poate fi decriptat numai de cheia privată din aceeași pereche de chei. Cheile Private sunt compuse din d și n. știm deja n, iar următoarea ecuație este folosită pentru a găsi d:
d =1/e Mod λ(n)
în generarea secțiunii cheii publice de mai sus, am decis deja că în exemplul nostru, e ar fi egal cu 11. În mod similar, știm că λ(n) este egal cu 349,716 din lucrarea noastră anterioară sub funcția lui Carmichael., Lucrurile devin puțin mai complicate atunci când întâlnim această secțiune a formulei:
1/E mod
această ecuație poate părea că vă cere să împărțiți 1 la 11, dar nu este cazul. În schimb, acest lucru simbolizează doar că trebuie să calculăm inversul modular al lui e(care în acest caz este 11) și λ (n) (care în acest caz este 349.716).acest lucru înseamnă în esență că, în loc să efectuăm o operație modulo standard, Vom folosi inversul., Acest lucru se găsește în mod normal cu algoritmul euclidian extins, dar este puțin în afara domeniului de aplicare al acestui articol, așa că vom înșela și vom folosi în schimb un calculator online., Acum, că am înțeles tot ce se întâmplă, să conectați informațiile noastre în formula:
d =1/11 mod 349,716
Pentru a efectua această operație, pur și simplu de intrare de 11 (sau orice valoare poate avea pentru e dacă încercați acest lucru cu propriile exemplu) unde se spune Întreg și 349,716 (sau alte valori pentru λ(n) dacă se încearcă acest lucru cu propriile exemplu) unde scrie Modulo în calculator online care a fost legat de mai sus., Dacă ați făcut totul corect, ar trebui să obțineți un rezultat în cazul în care:
d = 254, 339
Acum că avem valoarea pentru d, putem decripta mesajele care au fost criptate cu cheia publică folosind următoarea formulă:
m = cd mod n
putem acum du-te înapoi la text cifrat care am criptat sub Generează cheia privată secțiune. Când am criptat mesajul cu cheia publică, ne-a dat o valoare pentru c de 688,749. De sus, știm că d este egal cu 254,339. De asemenea, știm că n este egal cu 701,111. Acest lucru ne dă:
m = 688,749254,339 mod 701,111.,după cum probabil ați observat, încercarea de a lua un număr la puterea 254,339 ar putea fi un pic cam mult pentru majoritatea calculatoarelor normale. În schimb, vom folosi un calculator online de decriptare RSA. Dacă doriți să utilizați o altă metodă, ați aplica puterile așa cum ați proceda în mod normal și ați efectua operația modulului în același mod ca și în secțiunea Generare cheie publică.,
În calculator legate de mai sus, introduceți 701,111 unde scrie Alimentare Modulul: N, 254,399 unde scrie Cheie de Decriptare: D, si 688,749 unde scrie Cifrat Mesajul în forma numerica, așa cum se arată mai jos:
după ce ați introdus datele, a lovit Decripta, care va pune numerele prin decriptare formula, care a fost enumerate mai sus. Acest lucru vă va oferi mesajul original în caseta de mai jos. Dacă ați făcut totul corect, ar trebui să obțineți un răspuns de 4, care a fost mesajul original pe care l-am criptat cu cheia noastră publică.,
cum funcționează criptarea RSA în practică
secțiunile de mai sus ar trebui să vă ofere o înțelegere rezonabilă a modului în care funcționează matematica din spatele criptării cheilor publice. Poate fi puțin confuz, dar chiar și cei care nu au înțeles complexitatea ecuațiilor pot, sperăm, să ia câteva informații importante despre proces.
în pașii enumerați mai sus, am arătat cum două entități pot comunica în siguranță fără a fi partajat anterior un cod în prealabil. În primul rând, fiecare trebuie să-și înființeze propriile perechi de chei și să împartă cheia publică unul cu celălalt., Cele două entități trebuie să-și păstreze secretul cheilor private pentru ca comunicațiile lor să rămână sigure.odată ce expeditorul are cheia publică a destinatarului, îl poate folosi pentru a cripta datele pe care doresc să le păstreze în siguranță. Odată ce a fost criptat cu o cheie publică, acesta poate fi decriptat numai de cheia privată din aceeași pereche de chei. Chiar și aceeași cheie publică nu poate fi utilizată pentru a decripta datele. Acest lucru se datorează proprietăților funcțiilor trapei pe care le-am menționat mai sus.când destinatarul primește mesajul criptat, acesta utilizează cheia privată pentru a accesa datele., Dacă destinatarul dorește să returneze comunicațiile într-un mod sigur, atunci își poate cripta mesajul cu cheia publică a părții cu care comunică. Din nou, odată ce a fost criptat cu cheia publică, singura modalitate prin care informațiile pot fi accesate este prin cheia privată de potrivire.în acest fel, criptarea RSA poate fi utilizată de părți necunoscute anterior pentru a trimite în siguranță date între ele. Părți semnificative ale canalelor de comunicare pe care le folosim în viața noastră online au fost construite din această fundație.,
cum sunt criptate mesajele mai complicate cu RSA?
în exemplul nostru, am simplificat foarte mult lucrurile pentru a fi mai ușor de înțeles, motiv pentru care am criptat doar un mesaj de „4”. Posibilitatea de a cripta numărul 4 nu pare deosebit de utilă, așa că s-ar putea să vă întrebați cum puteți cripta un set mai complicat de date, cum ar fi o cheie simetrică (care este cea mai comună utilizare a RSA) sau chiar un mesaj.,unii oameni pot fi nedumeriți de modul în care o cheie precum „n38cb29fkbjh138g7fqijnf3kaj84f8b9f…” sau un mesaj precum „cumpără-mi un sandwich” poate fi criptat printr-un algoritm precum RSA, care se ocupă de numere și nu de Litere. Realitatea este că toate informațiile pe care computerele noastre le procesează sunt stocate în binare (1s și 0s) și folosim standarde de codificare precum ASCII sau Unicode pentru a le reprezenta în moduri pe care oamenii le pot înțelege (litere).,aceasta înseamnă că chei precum „n38cb29fkbjh138g7fqijnf3kaj84f8b9f…” și mesaje precum „cumpără-mi un sandwich” există deja ca numere, care pot fi ușor calculate în algoritmul RSA. Numerele pe care le reprezintă sunt mult mai mari și mai greu de gestionat, motiv pentru care preferăm să ne ocupăm de caractere alfanumerice decât de un amestec de binare.dacă doriți să criptați o cheie de sesiune mai lungă sau un mesaj mai complex cu RSA, ar implica pur și simplu un număr mult mai mare.,
Padding
când RSA este implementat, se folosește ceva numit padding pentru a ajuta la prevenirea unui număr de atacuri. Pentru a explica cum funcționează acest lucru, vom începe cu un exemplu. Să presupunem că ați trimis un mesaj codat unui prieten:
dragă Karen,
sper că sunteți bine. Mai luăm cina mâine?să spunem că ați codificat mesajul într-un mod simplu, schimbând fiecare literă cu cea care o urmează în alfabet. Acest lucru ar schimba mesaj:
Efbs Lbsfo,
J ipqf zpv bsf xfmm., Bsf xf tujmm ibwjoh ejoofs upnpsspx?dacă dușmanii tăi au interceptat această scrisoare, există un truc pe care l-ar putea folosi pentru a încerca să spargă codul. S-ar putea uita la formatul scrisorii dvs. și să încerce să ghicească ce ar putea spune mesajul. Ei știu că oamenii își încep în mod normal scrisorile cu „bună”, „Bună ziua”, „dragă” sau o serie de alte convenții.
dacă ar încerca să aplice „Hi” sau „Hello” ca primul cuvânt, ar vedea că nu s-ar potrivi cu numărul de caractere. Ar putea încerca apoi „dragă”., Se potrivește, dar asta nu înseamnă neapărat nimic. Atacatorii ar încerca doar și să vadă unde le-a condus. Deci, ei ar schimba literele „e”, „f”, „b” și „s” cu „d”, „e”, „a” și, respectiv, „r”. Acest lucru le-ar oferi:
Dragi Laseo,
J ipqe zpv sunt xemm. Sunt xe tujmm iawjoh djooes upnpsspx?
Zpvrt tjoderemz,
Kanet
încă arată destul de confuz, astfel încât atacatorii putea incerca sa te uiti la alte convenții, cum ar fi modul în care putem concluziona scrisorile noastre. Oamenii adaugă adesea” de la „sau” salutări amabile ” la sfârșit, dar niciuna dintre acestea nu se potrivește formatului., În schimb, atacatorii ar putea încerca „cu sinceritate” și să înlocuiască celelalte scrisori pentru a vedea unde le primește. Prin schimbarea „z”, „p”, „v”, „ț”, „j” „o”, „d” și „m” cu „y”, „o”, „u”, „s”, „m”, „n”, „c” și „l”, respectiv, s-ar obține:
Dragi Lasen,
am ioqe sunt xell. Sunt xe tuill iawinh dinnes uonossox?
Cu stimă,
Kanet
după această modificare, se pare că atacatorii încep să ajungă undeva. Ei au găsit cuvintele „Eu”, „Tu” și „sunt”, în plus față de cuvintele care au alcătuit presupunerile lor inițiale.,având în vedere că cuvintele sunt în ordine gramaticală corectă, atacatorii pot fi destul de încrezători că se îndreaptă în direcția corectă. Până acum, probabil că și-au dat seama că codul implica schimbarea fiecărei litere în cea care o urmează în alfabet. Odată ce își dau seama de acest lucru, este ușor să traducă restul și să citească mesajul original.exemplul de mai sus a fost doar un cod simplu, dar după cum puteți vedea, structura unui mesaj poate oferi atacatorilor indicii despre conținutul său., Sigur, a fost dificil să ne dăm seama de mesajul doar din structura sa și a fost nevoie de niște presupuneri educate, dar trebuie să rețineți că computerele sunt mult mai bune în a face acest lucru decât noi. Aceasta înseamnă că pot fi folosite pentru a descoperi coduri mult mai complexe într-un timp mult mai scurt, pe baza indiciilor care provin din structură și alte elemente.dacă structura poate duce la fisurarea unui cod și la dezvăluirea conținutului unui mesaj, atunci avem nevoie de o modalitate de a ascunde structura pentru a menține mesajul în siguranță. Acest lucru ne aduce la umplutură.,
când un mesaj este căptușit, se adaugă date randomizate pentru a ascunde indiciile de formatare originale care ar putea duce la ruperea unui mesaj criptat. Cu RSA, lucrurile sunt puțin mai complicate, deoarece o cheie criptată nu are formatarea evidentă a unei scrisori care ne-a ajutat să ne oferim indicii în exemplul nostru de mai sus.în ciuda acestui fapt, adversarii pot folosi o serie de atacuri pentru a exploata proprietățile matematice ale unui cod și pentru a rupe datele criptate. Datorită acestei amenințări, implementările RSA folosesc scheme de umplutură precum OAEP pentru a încorpora date suplimentare în mesaj., Adăugarea acestei căptușeli înainte ca mesajul să fie criptat face ca RSA să fie mult mai sigură.
Mesaje de semnare
RSA poate fi folosit pentru mai mult decât criptarea datelor. Proprietățile sale îl fac, de asemenea, un sistem util pentru confirmarea faptului că un mesaj a fost trimis de entitatea care pretinde că l-a trimis, precum și pentru a dovedi că un mesaj nu a fost modificat sau modificat.,când cineva dorește să dovedească autenticitatea mesajului său, poate calcula un hash (o funcție care ia date de o dimensiune arbitrară și o transformă într-o valoare cu lungime fixă) a textului, apoi o semnează cu cheia privată. Ei semnează hash-ul aplicând aceeași formulă care este utilizată în decriptare (m = cd mod n). Odată ce mesajul a fost semnat, aceștia trimit această semnătură digitală destinatarului alături de mesaj.,dacă un destinatar primește un mesaj cu o semnătură digitală, acesta poate utiliza semnătura pentru a verifica dacă mesajul a fost semnat autentic de cheia privată a persoanei care pretinde că l-a trimis. De asemenea, pot vedea dacă mesajul a fost modificat de atacatori după ce a fost trimis.pentru a verifica semnătura digitală, destinatarul folosește mai întâi aceeași funcție hash pentru a găsi valoarea hash a mesajului primit., Destinatarul aplică apoi cheia publică a expeditorului la semnătura digitală, folosind formula de criptare (c = me mod n), pentru a le oferi hash-ul semnăturii digitale.prin compararea hash-ului mesajului care a fost primit alături de hash-ul de la semnătura digitală criptată, destinatarul poate spune dacă mesajul este autentic. Dacă cele două valori sunt aceleași, mesajul nu a fost modificat de când a fost semnat de expeditorul original. Dacă mesajul ar fi fost modificat chiar de un singur caracter, valoarea hash ar fi complet diferită.,
RSA security & atacuri
la fel ca majoritatea criptosistemelor, securitatea RSA depinde de modul în care este implementată și utilizată. Un factor important este dimensiunea cheii. Cu cât este mai mare numărul de biți dintr-o cheie (în esență cât timp este cheia), cu atât este mai dificil să crape prin atacuri precum forțarea brută și factoring.deoarece algoritmii cu cheie asimetrică, cum ar fi RSA, pot fi rupți prin factorizare întreagă, în timp ce algoritmii cu cheie simetrică, cum ar fi AES, nu pot, cheile RSA trebuie să fie mult mai lungi pentru a atinge același nivel de securitate.,în prezent, cea mai mare dimensiune a cheii care a fost luată în considerare este de 768 de biți. Acest lucru a fost realizat de o echipă de academicieni pe o perioadă de doi ani, folosind sute de mașini.deoarece factoring-ul a fost finalizat până la sfârșitul anului 2009 și puterea de calcul a crescut semnificativ de atunci, se poate presupune că o încercare de intensitate similară ar putea acum să ia în considerare o cheie RSA mult mai mare.în ciuda acestui fapt, timpul și resursele necesare pentru acest tip de atac îl pun la îndemâna majorității hackerilor și în domeniul statelor naționale., Cea mai bună lungime a cheii de utilizat va depinde de modelul dvs. de amenințare individuală. Institutul Național de standarde și Tehnologie recomandă o dimensiune minimă a cheii de 2048 biți, dar tastele de 4096 biți sunt de asemenea utilizate în unele situații în care nivelul de amenințare este mai mare.
Factoring este doar o modalitate prin care RSA poate fi rupt. O serie de alte atacuri au potențialul de a sparge criptarea cu o cantitate mai mică de resurse, dar acestea depind de implementare și de alți factori, nu neapărat RSA în sine. Unele dintre acestea includ:
sunt primele într-adevăr aleatoare?,
unele implementări ale RSA folosesc generatoare slabe de numere aleatorii pentru a veni cu primele. Dacă aceste numere nu sunt suficient de Aleatorii, este mult mai ușor pentru atacatori să le factor și să rupă criptarea. Această problemă poate fi evitată prin utilizarea unui generator de numere pseudo-aleatoare securizat criptografic.
generație cheie slabă
cheile RSA trebuie să se încadreze în anumiți parametri pentru ca acestea să fie sigure. Dacă primele p și q sunt prea apropiate, cheia poate fi ușor descoperită. De asemenea, numărul d care face parte din cheia privată nu poate fi prea mic., O valoare scăzută face ușor de rezolvat. Este important ca aceste numere să aibă o lungime adecvată pentru a vă păstra cheia în siguranță.acestea sunt un tip de atac care nu rupe RSA direct, ci utilizează în schimb informații din implementarea sa pentru a oferi atacatorilor indicii despre procesul de criptare. Aceste atacuri pot include lucruri cum ar fi analiza cantității de putere care este utilizată sau analiza predicției ramurilor, care utilizează măsurători ale timpului de execuție pentru a descoperi cheia privată.
Un alt tip de atac canal lateral este cunoscut ca un atac de sincronizare., Dacă un atacator are capacitatea de a măsura timpul de decriptare pe computerul țintei sale pentru un număr de mesaje criptate diferite, aceste informații pot face posibil ca atacatorul să verifice cheia privată a țintei.majoritatea implementărilor RSA evită acest atac prin adăugarea unei valori unice în timpul procesului de criptare, ceea ce elimină această corelație. Acest proces se numește orbire criptografică.
criptarea RSA este sigură pentru viitor?vestea bună este că RSA este considerat sigur de utilizat, în ciuda acestor posibile atacuri., Avertismentul este că trebuie să fie implementat corect și să utilizeze o cheie care se încadrează în parametrii corecți. Așa cum tocmai am discutat, implementările care nu folosesc umplutură, folosesc prime de dimensiuni inadecvate sau au alte vulnerabilități nu pot fi considerate sigure.dacă doriți să utilizați criptarea RSA, asigurați-vă că utilizați o cheie de cel puțin 1024 biți. Cei cu modele de amenințare mai mari ar trebui să rămână la cheile de 2048 sau 4096 biți dacă doresc să utilizeze RSA cu încredere., Atâta timp cât sunteți conștient de punctele slabe pe care RSA le are și îl utilizați corect, ar trebui să vă simțiți în siguranță să utilizați RSA pentru partajarea cheilor și alte sarcini similare care necesită criptarea cheilor publice.
A se vedea, de asemenea: tipuri comune de criptare a explicat