Sunteți pe pagina 1din 2

Eratpirc ed icinhet (4)

serial

Tehnici de CRIPTARE
Claudiu Soroiu
n acest ultim episod al serialului dedicat tehnicilor de criptare vom prezenta cel mai cunoscut sistem de codificare cu cheie public a mesajelor, i anume RSA; acesta este utilizat cu succes de foarte muli ani. Algoritmii de criptare a mesajelor utiliznd chei publice se folosesc atunci cnd un numr mare n de utilizatori trebuie s comunice ntre ei (fiecare cu fiecare). n cazul n care acetia ar folosi tehnici tradiionale de criptare, atunci ar avea nevoie de n (n - 1) / 2 chei, spre deosebire de algoritmii de criptare cu chei publice care folosesc doar n chei. n sistemele de criptare cu cheie public, dac un utilizator dorete s comunice cu alii, trebuie s i construiasc dou chei: o cheie public pe care o va transmite oricrui alt utilizator care dorete s-i trimit un mesaj criptat; o cheie privat care este secret i pe care o va folosi la decriptarea unui mesaj criptat cu cheia public. Cele dou chei se presupun a fi unice pentru fiecare utilizator. Secretul sistemelelor de criptare cu cheie public este acela c dac un utilizator deine cheia public a unui alt utilizator ale crui mesaje dorete s le intercepteze i decripteze, de obicei, este imposibil s construiasc cheia privat i s o foloseasc pentru decriptarea mesajelor. n cazul n care cheia privat se poate calcula pe baza cheii publice, atunci timpul necesar unui sistem de calcul este suficient de mare i, dup decriptarea mesajului acesta nu ar mai fi de actualitate. Dac avem doi utilizatori A i B, i utilizatorul A dorete s-i trimit utilizatorului B un mesaj criptat, procesul de comunicare are loc aa cum indic figura urmtoare.

Introducere

Presupunnd c avem un grup de n utilizatori care au nevoie s comunice ntre ei n siguran i toi folosesc o aceeai tehnic de criptare cu cheie public, atunci, pentru comunicare, fiecare utilizator i din cei n are nevoie de: cheile publice ale celorlali n - 1 utilizatori; o cheie public a unui utilizator j este folosit n procesul de criptare a unui mesaj de ctre utilizatorul i, urmnd ca acesta s fie trimis utilizatorului j; o cheie privat care este folosit de ctre utilizatorul i pentru a decripta orice mesaj care sosete de la unul dintre ceilali i a fost criptat folosindu-se cheia public a utilizatorului i.

RSA

RSA este un sistem de criptare cu cheie public dezvoltat n anul 1977 de ctre profesorii de la MIT (Massachusetts Institute of Technology) Ronald L. Rivest, Adi Shamir i Leonard M. Adleman, cu scopul de a asigura securitatea datelor pe Internet. Generarea cheilor Algoritmul RSA are la baz elemente de teoria numerelor i teoria grupurilor. Primul pas n folosirea algoritmilor de criptare i decriptare pentru tehnica RSA const n construirea celor dou chei. Pe baza unei parole (ir de caractere) introdus de utilizator i care trebuie s aib o lungime suficient de mare, se genereaz dou numere prime mari (cu o lungime mai mare de 64 de bii) p i q. Dup ce s-au generat cele dou numere prime se construiete un numr n ca fiind produsul dintre p i q. Fie = (p - 1) (q - 1). La pasul urmtor se caut un numr e care trebuie s fie relativ prim cu , adic cel mai mare divizor comun al numerelor e i este 1. n continuare se construiete numrul d ca fiind inversul numrului e modulo : d = rest([e-1/])

Ginfo nr. 5 - mai 2002

46

Pentru a cripta mesajul, utilizatorul A are nevoie de cheia public a utilizatorului B. Dup criptare, mesajul este transmis utilizatorului B i acesta, pentru a-l putea accesa, l decripteaz folosind propria cheie privat.

Numerele n i e formeaz cheia privat, n timp ce cheia public este dat de numerele n i d. Pentru ca generarea cheilor s fie optim n timp, la calcularea numrului d se folosete forma extins a algoritmului lui Euclid. Algoritmul extins al lui Euclid Dup cum se cunoate, algorimul lui Euclid calculeaz cel mai mare divizor comun a dou numere naturale astfel:
algoritm Euclid(a, b) dac b = 0 atunci returneaz a altfel returneaz Euclid(b, rest([a/b]))

algoritmi, scris de Thomas H. Cormen, Charles E. Leiserson i Ronald R. Rivest, a crei traducere n limba romn a aprut la editura Computer Libris Agora din ClujNapoca. Securitatea RSA Securitatea sistemului este asigurat de faptul c este foarte dificil factorizarea numerelor ntregi mari. n cazul n care cineva reuete s factorizeze numrul n, atunci poate obine cheia privat din cheia public. n cazul n care factorizarea numerelor mari ar fi o operaie simpl, un sistem de securitate bazat pe algoritmul RSA ar fi foarte uor de evitat. Pentru a asigura o securitate ridicat a datelor utiliznd RSA, este indicat s se foloseasc numere care au suficient de multe cifre ct s ngreuneze foarte mult factorizarea dar criptarea mesajelor s fie optim n timp. n unele cazuri, pentru o securitate mai mare, se folosete o criptare hibrid a mesajelor cu ajutorul algoritmului RSA i a unui alt algoritm rapid cu cheie nepublic, iar n alte cazuri se folosete o criptare dubl RSA i, n consecin, fiecare dintre cele dou chei este format din patru elemente: (n1, n2, e1, e2) i (n1, n2, d1, d2). Cu toate c prerile multora sunt contrare, semntura public (digital) reprezint cea mai important utilizare a sistemului RSA. O semntur cu cheie public i permite destinatarului s verifice autenticitatea unui mesaj. O astfel de semntur trebuie s aib urmtoarele proprieti: semntura nu trebuie s poat fi falsificat; semntura nu trebuie s fie reutilizabil; semntura reprezint o funcie a documentului i nu poate fi transferat la un alt document. Sistemul RSA de semnare digital a mesajelor are aceste proprieti. Algoritmul RSA de semnare digital a mesajelor este aprope identic cu cel folosit pentru criptarea cu cheie public, singura diferen fiind aceea c rolul cheilor se schimb, adic perechea de numere n i d constituie cheia privat, iar perechea de numere n i e constituie cheia public. Fie m un mesaj care urmeaz s fie autentificat. Dac un utilizator A dorete s trimit mesajul m autentificat unui utilizator B, atunci A pstreaz cheia privat (n, d) i trimite cheia public (n, e) i mesajul autentificat c, unde: c = rest([md/n]) Pentru a valida semntura, utilizatorul B verific dac: m = rest([ce/n]) n continuare, mesajul original poate fi preluat doar dac expeditorul deine cheia privat. n consecin, semntura este autentic.
Claudiu Soroiu este redactor al GInfo. Poate fi contactat prin e-mail la adresa csoroiu@yahoo.com.

serial

Forma extins a algoritmului lui Euclid, pe lng cel mai mare divizor comun d a dou numere a i b, determin dou numere ntregi x i y cu proprietatea d = a x + b y. Se poate demonstra matematic c perechea de numere x i y este unic. Forma extins a algoritmului lui Euclid este urmtoarea:
algoritm EuclidExtins(a, b) dac b = 0 atunci returneaz (a, 1, 0) altfel (d, x, y) EuclidExtins(b, rest([a/b])) returneaz (d, y, x - [a/b] y)

Semnturi digitale

Revenind la determinarea inversului numrului e, se poate demonstra c pentru orice numr pozitiv relativ prim cu e, ecuaia rest([(ex)/]) = 1 are soluie unic i nu are soluie n cazul n care nu sunt respectate condiiile. n acest caz avem: EuclidExtins(e, ) = (1, x, y) n cadrul clasei de resturi modulo , avem y = 0, de unde rezult c x este inversul numrului e. Criptarea i decriptarea Fie m mesajul (un numr) care trebuie s fie criptat cu lungimea mai mic dect n. Relaia prin care se obine mesajul criptat c, din mesajul m este: c = rest([me/n]) Dup cum am afirmat anterior, la decriptarea mesajului c se vor folosi numerele d i n astfel: m = rest([cd/n]) Folosind aceste relaii se poate demonstra matematic corectitudinea algoritmului RSA. Pentru ca procesele de criptare i decriptare s fie optime n timp, se folosesc diveri algoritmi performani pentru calcularea restului. Unul dintre cei mai utilizai astfel de algoritmi se bazeaz pe teorema chinez a restului. Mai multe detalii despre aceast teorem putei gsi n cartea Introducere n

47

Ginfo nr. 5 - mai 2002

S-ar putea să vă placă și