Sunteți pe pagina 1din 3

Sunt mai multe metode de clasificare ale algoritmilor.

Aici, structurarea se bazeaza pe numarul de chei ce sunt folosite pentru criptare si decriptare, si sunt regrupati dupa modul lor de folosire si de aplicare. Cele trei tipuri de algoritmi ce vor fi discutati sunt: criptografia cu cheie secreta: foloseste o singura cheie atat pentru criptare cat si pentru decriptare; criptarea cu cheie publica: foloseste o cheie pentru criptare si alta pentru decriptare; functiile hash: folosesc o transformare matematica pentru "criptarea" ireversibila a informatiei.

Criptarea cu cheie secreta In criptografia cu cheie secreta (SKC - secret key criptogrphy) este folosita atat pentru criptare cat si pentru decriptare. Dupa cum se poate vedea in figura, expeditorul utilizeaza cheia pentru a cripta textul normal si trimite textul criptat destinatarului. Destinatarul aplica aceasi cheie pentru a decripta mesajul si a recupera textul normal. Din cauza ca este folosita o singur cheie, aceasta metoda mai este denumita si criptare simetrica. Cea mai mare dificultate cu acest tip de criptare este, evident, distributia cheii. Exista cateva metode SKC folosite in mod normal si sunt denumite ori cifruri stream ori cifruri block. Cifrurile stream opereaza pe un sigur bit, byte sau word si implementeaza un fel de mecanism recurent datorita caruia cheia se schimba continuu. Un cifru block este denumit asa pentru ca metoda cripteaza informatia in blocuri de date pe care de cripteaza folosind aceasi cheie. In general, criptarea aceluiasi text normal utilizand un cifru block va rezulta acelasi text criptat cand se foloseste aceasi cheie, in timp ce prin utilizare unui cifru stream textele criptate vor fi diferite. Cifrurile stream sunt la randul lor de mai multe tipuri, dar numai doua merita prezentate. Cifrurile auto-sincronizante (self-sincronizing) calculeaza fiecare bit din cheie ca o functie a celor n biti anteriori. Termenul de auto-sincronizant provine de la faptulca procesul de decriptare poate fi sincronizat cu procesulde criptare cunoscandu-se doar valoarea lui n. O problema este propagarea erorii, un bit modificat rezultand in modificarea urmatorilor n biti. Cifrurile "synchronous stream" genereaza cheia independent de mesaj dar utilizeaza aceasi functie de generare a cheii atat la expeditor cat si la destinatar. Cifrurile block pot ofera in mai mult moduri; dintre care urmatoarele patru cunt cele mai importante: Electronic Codebooc (ECB) - reprezinta modul cel mai simplu, in care cheia este utilizata pentru a transforma un bloc din textul normal intr-un bloc de text criptat. Deci, doua blocuri identice de text normal vor genera intotdeauna acelasi bloc de text criptat. Desi este cel mai utilizat cifru block, el nu este foarte rezistent in cazul unor atacuri brute-force; Cipher Block Chaining (CBC) - acest mod adauga un mecanism de recurenta metodei de criptare. In CBC, blocul de text normal inainte de criptare se va transforma in rezultatul unei functii sau exculsiv intre blocul de text normal si blocul de text criptat precedent. In acest mod, doua blocuri de text normal nu vor fi criptate dand acelasi rezultat; Cipher Feedback (CFB) - este o implementare a cifrurilor "self-synchronizing stream" in cifrurile block. Modul CFB permite datelor sa fie criptate in unitati mai mici decat marimea blocului de date, ce poate fi utila in unele aplicatii cum ar fi criptarea interactiva a datelor introduse de la un terminal. Daca se foloseste modul CFB pe 1 byte, de exemplu, fiecare caracter ce se

primeste este plasat intr-un registru de aceasi marime ca blocul, este criptat, iar blocul este trimis. Destinatarul textul criptat este decriptat si bitii recurenti din bloc (tot ce este in plus fata de acel byte) sunt eliminati; Output Feedback (OFB) - este o implementare in cifrurile block similara din anumite puncte de vedere cu un cifru "synchronous stream". OFB previne generarea aceluiasi text criptat din doua texte normale identice utilizand un mecanism de recurenta intern ce este independent atat de textul normal cat si de textul criptat. Cea mai folosita metoda de criptare SKC este Standardul de Criptare a Datelor (DES - Data Ecryption Standard) conceput de IBM in anii 1970 si adoptat de Institutul National pentru Standarde si Tehnologie, NIST (al SUA) in 1977 pentru aplicatiile comerciale sau guvernamentale. DES este un cifru block ce foloseste o cheie pe 26 de biti si opereaza pe blocuri de date de 64 de biti. IBM a mai propus si o cheie pe 112 biti pentru DES, dar a fost interzisa la vremea respectiva de guvern. Mai sunt si alti algoritmi de SKC care mai sunt in uz astazi: CAST-128 (descris in RFC 2144); denumirea sa nu reprezinta un acronim ci initialele creatorilor sai Carlisle Adams si Stafford Tavares de la Nortel. CAST-128 reprezinta un algoritm asemanator cu DES, baza pe un algoritm de substitutie si permutare, ce implica o cheie de 128 biti si lucreaza pe blocuri de date de 64 biti. CAST-256 (RFC 2612) este o extensie a algoritmului CAST-128 ce lucreaza pe blocuri de date de 128 biti, iar cheia are lungime variabila (128, 160, 192, 224 sau 256 biti). International Data Encryption Algorithm (IDEA) - Algoritm International de Criptare a Datelor este inca un cifru asemanator DES ce lucreaza pe blocuri de 64 biti si utilizeaza chei de 128 biti. Rivest Cipher 2 (RC2), denumit dupa inventatorul sau Ron Rivest, este denumit si Ron's Code, reprezinta un cifru block pe 64 biti ce utilizeaza chei cu lungime variabila ce a fost proiectat sa inlocuiasca DES. Codul sau nu a fost facut public chiar daca mult companii au cumparat licente pentru folosirea RC2 in aplicatiile lor. De asemenea a existat si RC1, dar acesta a fost proiectat teoretic dar nu a fost niciodata implementat; iar RC3 a fost abandonat dupa ce, in timpul dezvoltarii sale s-a descoperit ca poate fi spart. RC4, un cifru stream ce utilizeaza chei de lungime variabila este folosit mai ales in produse de criptare comerciale, chiar daca nu pot fi exportate din SUA decat versiuni ce folosesc cheii de cel mult 40 biti. RC5, este un cifru block ce suporta o varietate de marimi pentru blocurile de date si pentru chei si este mai sigur decat versiunile precedente. Blowfish, un cifru block simetric ce lucreaza cu blocuri de 64 de biti ce a fost inventat de Bruce Schneier, este optimizat pentru procesoare pe 32 de biti ce dispun de cache mare. Este mult mai rapid decat DES pe sisteme ce utilizeaza procesoare din clasa Pentium sau PowerPC. Lungimea cheii poate varia intre 32 si 448 biti in lungime. Blowfish este disponibil gratis pentru oricine si este folosit in mai mult de 80 de produse. Twofish, reprezinta un cifru block de utilieaza blocuri de 128 biti si foloseste chei de 128, 192 sau 256 biti si este de asemenea inventat de Schneier. Proiectat pentru a fi foarte sigur si flexibil este potrivit pentru microprocesoare mari, microprocesoare pentru smart cards pe 8 biti sau hardware cu aplicatii speciale.

In 1997, NIST a initiat un proiect ce urmarea dezvoltarea unui nou sistem de criptare sigur pentru aplicatiile guvernului american. Rezultatul este Standardul de Criptare Avansata (AES - Avanced Encryption Standard) a devenit succesorul oficial al lui DES in decembrie 2001. AES este bazat pe o metoda SKC denumita Rijndael. Criptarea cu cheie publica Criptarea cu Cheie Publica (PKC - Public-key Cryptography) este considerata a fi cel mai important pas in domeniul criptografiei in ultimii 300-400 de ani. Metodele moderne de PKC au fost prezentate public pentru prima data de catre profesorul Martin Hellman de la Universitatea Stanford si studentul Whitfield Diffie in 1976. Lucrarea lor descria un sistem criptografic in care doua persoane putea avea o comunicare sigura pe un canal de comunicare nesigur fara sa schimbe o cheie secreta. "Smecheria" matematica din PKC se bazeaza pe existenta unor asa zise functii one-way, sau functii matematice care sunt usor de calculat in timp ce inversa lor este foarte dificil de calculat. De exemplu, sa zicem ca folosesc doua numere: 9 si 16 si vreau sa calculez produsul. Aceasta operatie ia foarte putin timp, si gasesc imediat rezultatul, 144. Dar, sa zicem ca ma gandesc la 144 si trebuie sa gasesc perechea de numere care impartite dau 144. Sau, calculez 3 la puterea 6 si gasesc imediat 729. Dar daca am numarul 729 si vreau sa aflu cele doua numere intregi x si y care logx * y = 729, va lua mult timp sa gasesc toate solutiile posibile si sa aleg perechea initiala. Cele doua exemple de mai sus reprezinta doua din perechile functionale ce sunt folosite in PKC, usurinta multiplicari si exponentiala, fata de dificultatea calcularii factorizarii si logaritmarii. PKC normala foloseste doua chei ce se afla intr-o anume relatie matematica dar cunoasterea uneia dintre chei nu presupune aflarea usoara a celeilalte. O cheie este utilizata pentru criptarea textului normal, iar cealalta este folosite pentru decriptarea textului criptat. Important este faptul ca este nevoie de amandoua cheile pentru a functiona mecanismul. Pentru ca este nevoie de mai multe chei, acest tip de criptare se mai numeste si criptare asimetrica. In PKC, una din cheii este proiectata sa fie cheia publica si poate fi publicata oriunde. Cealalta cheie este proiectata sa fie cheia privata si nu trebuie facuta cunoscuta altor persoane. Aceasta metoda poate fi folosita si pentru a dovedi cine a trimis un mesaj. Sa zicem ca Alice cripteaza un mesaj folosind cheia sa privata, Bob primeste textul criptat pe care il decripteaza folosind cheia publica a Alice, astfel stie ca ea a criptat mesajul, iar ea nu poate nega aceasta. Prima, si cea mai importanta, implementare a PKC este RSA, numita dupa cai trei matematicieni de la MIT care au dezvoltat-o - Ronald Rivest, Adi Shamir si Leonard Adleman. RSA este folosita in sute de produse software si poate fi folosita pentru schimbul de chei, semnaturi digitale saau criptarea unor blocuri mici de date. RSA foloseste un bloc de criptare de dimensiune variabila, iar cheia este si ea de lungime variabila. Perechea de chei este derivata dintr-un numar foarte mare, n, care este produsul a doua numere prime alese dupa anumite reguli speciale, aceste numere pot avea fiecare mai mult de 100 de cifre, numarul n avand mult mai multe cifre. Cheia publica contine numarul n si un derivat al unuia dintre factorii folositi pentru determinarea lui n; astfel un atacator nu poate determina factorii primi ai lui n (deci nu poate afla cheia privata) numai din aceste informatii din acest motiv, algoritmul RSA este atat de sigur. Unele descrieri eronate ale PKC spun ca siguranta algoritmului RSA este determinata de faptul ca este dificila factorizarea unui numar prim foarte larg, ceea ce este eronat, din motiv ca orice numar prim, indiferent de marime, are numai doi factori. Totusi abilitatea computerelor de a factoriza numere foarte mari, astfel putand fi folosite pentru atacarea metodelor de tipul RSA, creste continuu si sistemele de data recenta pot gasi factorii primi ai numere cu aproape 140 de cifre. Protectia algoritmului RSA consta si in faptul ca utilizatorii pot creste marimea cheii anuland astfel cresterea performantei procesoarelor. O alternativa a algoritmului RSA este metoda Diffie-Hellman care este folosita doar pentru schimbul de chei. Este folosit in combinatie cu Standardul Semnaturii Digitale al NIST (DSS - Digital Signature Standard).

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