Securitatea retelei Problemele de securitate a retelelor pot fi împartite în patru domenii: Confidentialitate - pastrarea informatiei departe de utilizatorii neautorizati; Autentificare - determinarea identitatii persoanei cu care vorbesti înainte de a dezvalui informatiile pe care le detii; Ne-repudiere - implica semnaturi. Un scenariu posibil: o firma care face vânzari pe Internet si un client care cumpara "maruntisuri" ieftine, dar de o valoare totala mare (sa zicem 1.000 $). El sustine ca a cumparat de 100 $. Cum îi putem dovedi ca a cumparat marfuri în valoare de 1.000 $?; Controlul integritatii - cum poti fi sigur ca mesajul primit este cel trimis cu adevarat, ci nu unul înlocuit pe traseu sau chiar trimis în numele expeditorului de o alta persoana cu intentii ne-ortodoxe.
Ceea ce trebuie, cu adevarat, tinut secret, este cheia. Aceasta cheie reprezinta un sir de caractere iar lungimea sa este de o mare importanta. Putem împarti metodele de criptare în doua categorii:
A) Cifruri cu substitutie Fiecare litera sau grup de litere este înlocuit cu o alta litera sau grup, proces numit deghizare. Unul dintre cele mai vechi cifruri de acest fel este atribuit lui Julius Caesar si se facea prin deplasarea fiecarei litere cu trei "locatii" mai la dreapta, în sirul alfabetic. Astfel: a devine D, b devine E, c devine F ….., z devine C. De exemplu cuvântul epress devine HSUHVV (facând abstractie de Ş, Ţ etc.). O îmbunatatire a acestui algoritm ar fi înlocuirea literei cu una întâmplatoare. Ex: B) Cifruri cu transpozitie Daca cifrurile cu substitutie, deghizeaza doar literele, pastrând ordinea lor din textul clar, cele cu transpozitie fac invers: literele se re-ordoneaza dar nu se deghizeaza. Vom descrie mai jos un cifru cu transpozitie (transpozitia pe coloane). Cuvântul care se foloseste drept cheie nu trebuie sa contina litere care se repeta. De exemplu: CLADIRE, BLOC, OXIGEN sunt chei valide, pe când, REPORT, PROGRAM nu sunt chei valide. Sa alegem cheia CLADIRE si textul clar: MIINE SEARA LA ORA SAPTE IN FATA LA UNIVERSITATE. Scriem textul pe coloane, numarul lor fiind egal cu numarul de litere ce compun cheia. Textul cifrat se genereaza dupa cum urmeaza: se scriu literele din coloana 1 (litera A a cheii): IAAAIA, apoi literele din coloan2 (litera C a cheii): MAANUI, urmeaza coloana 3: NLPTVT, si asa mai departe. Rezulta urmatorul text: IAAAIAMAANUINLPTVTERIASBEATAEEIRSFNTSOELRA Sa vedem care este "drumul invers", din textul cifrat sa obtinem textul clar. Ştiind cheia, implicit din câte litere se compune si numarul total de caractere al textului cifrat putem determina câte litere are o coloana. În cazul nostru cheia are 7 litere iar textul 42 de caractere. Deci vor fi 6 litere pe coloana. Împartim textul cifrat in grupuri de câte 6 litere pe care le vom scrie pe verticala. Vor rezulta urmatoarele: Conceptul de cheie publica Se poate lesne observa ca secretul unui mesaj este pastrat atâta timp cât nu se stie cheia. În momentul în care o "persoana inamica" a aflat cheia, poate descifra usor mesajele. Au fost cazuri în care un mesaj cifrat trebuia distribuit la mai multi utilizatori. În mod automat, toti acestia, trebuie sa stie cheia. Dar, este lucru de mult stiut, ca un secret "cu multe urechi" este foarte greu de pastrat. Pornind de la acest neajuns, doi cercetatori de la universitatea din Stanford (1976) au propus un cripto-sistem bazat pe niste concepte radical schimbate fata de conceptele existente pâna la acea data în criptografie. În acest sistem cheile de criptare si decriptare sunt diferite, iar cheia de decriptare nu poate fi dedusa din cheia de criptare . În principiu, un astfel de sistem, trebuie sa îndeplineasca trei conditii.
Conditia trei-a ne arata "esenta" unui sistem de criptare cu cheie publica. Deoarece atât algoritmul de criptare cât si cheia de criptare sunt publice, oricine "se poate juca" cu ele: ia un text clar, îl cripteaza cu algoritmul si cheia unei persoane "tinta" si obtine textul cifrat. Pe baza mai multor astfel de texte cifrate si a unui text cifrat al persoanei respective, "intrusul" ar putea ajunge in cele din urma la textul clar "capturat". Conditia se refera tocmai la o astfel de imposibilitate, de a determina textul clar dintr-o multime de texte cifrate carora li se stie si textul initial. Sa vedem, mai amanuntit, cum se face schimbul de mesaje între doi utilizatori, prin metoda cheilor publice. Sa presupunem ca utilizatorul A doreste sa primeasca mesajele cifrat. În acest scop, el va alege mai întâi cei doi algoritmi EA si DA ce satisfac conditiile de mai sus, dupa care, va face public algoritmul si cheia de criptare EA. Acest proces poate fi realizat prin publicare lui într-un fisier pe care îl poate accesa oricine. Algoritmul si cheia de decriptare vor fi tinute secret de catre A. Sa presupunem acum, ca un utilizator B vrea sa-I trimita lui A un mesaj cifrat. În acest scop, primul pas, care trebuie facut de catre B, este sa obtina fisierul în care A a publicat algoritmul si cheia publica EA. Dupa care, având textul clar P, va determina EA(P) si va trimite acest rezultat lui A. Utilizatorul A primeste mesajul, îi aplica algoritmul si cheia secreta DA(P) si va obtine textul clar trimis de B. Acest procedeu, cu cheie publica, se mai numeste criptografie cu cheie publica sau criptografie cu cheie asimetrica, în contrast cu procedeul cu cheie secreta care se mai numeste criptografie cu cheie simetrica. Conceptul de semnatura digitala Rolul si importanta unei semnaturi de mâna pe un document scris este foarte bine stiut de toata lumea, aceasta semnatura având si caracteristica de proba într-un proces juridic. Dar ce ne facem în cazul unor documente în format electronic? Cum putem dovedi ca ele au fost emise de o anumita persoana? Pornind de la aceasta necesitate s-a creat conceptul de semnatura digitala. În principiu, o astfel de semnatura trebuie sa îndeplineasca 3 conditii:
O alta solutie, care nu necesita "un arbitru absolut" se bazeaza pe conceptul criptografiei cu cheie publica. În acest caz, algoritmii E si D, pe lânga proprietatea de baza D(E(P)) = P trebuie sa îndeplineasca si conditia E(D(P)) = P. Sa presupunem ca utilizatorul A doreste sa trimita un mesaj semnat utilizatorului B. Mesajul P va urma transformarile indicate mai jos. P -> DA(P) -> EB(DA(P)) -------------- > DB(EB(DA(P))) = DA(P) -> EA(DA(P)) = P
| ||