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.

Criptografia traditionala - înainte de calculator

      Sa definim mai întâi niste termeni specifici pe care îi vom utiliza mai des.

  • text clar - mesajul ce trebuie criptat,
  • text cifrat - iesirea procesului de criptare si care va fi trimis destinatarului,
  • cheie - o functie care aplicata textului clar are ca rezultat textul cifrat,
  • criptografie - procesul de a concepe cifruri noi,
  • criptanaliza - procesul de a sparge cifruri,
Vom face urmatoarele notatii:
  • P - textul clar,
  • C - textul cifrat,
  • K - cheia folosita,
  • E - procesul de criptare,
  • D - procesul de decriptare
Cu aceste notatii putem spune ca: C = EK(P) si P = DK(C) sau P = DK(EK(P))       Elementele esentiale ale criptarii unui mesaj sunt cheia K si algoritmul de criptare E. În general, algoritmul de criptare nu este considerat secret, ci este de domeniu public. Aceasta strategie, de a face cunoscuta metoda de criptare, nu este întâmplatoare si nu trebuie sa fie privita ca o scapare a criptologilor. Prin publicarea algoritmului se urmareste "incitarea" unor persoane pasionate de spargeri de sisteme, sa descopere o bresa în algoritmul respectiv. Daca anii trec si metodei nu I se gasesc puncte slabe, înseamna ca ea reprezinta un algoritm destul de sigur.
      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:
  • cifruri cu substitutie,
  • cifruri cu transpozitie.

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: a b c d e f g h ……….. Q W E R T Y U I ………..       Aceasta metoda, la prima vedere, poate fi considerata destul de sigura. Alfabetul (daca îl consideram compus din 26 litere) ofera 26! (adica 4*1026) chei posibile. Totusi, daca ne folosim de proprietatile statistice ale limbajelor naturale, acest sistem este foarte nesigur si nu vor fi necesare generatii întregi pentru a sparge un cifru. Sa vedem cum "se ataca" o spargere a unui cifru: având la dispozitie un text cifrat, vom începe prin a face o corespondenta între fiecare litera si frecventa de aparitie a ei în cadrul textului. Se stie ca, în cazul limbii engleze, cea mai frecventa litera este "e", urmata de "t", "o", "a", "n", "i" etc. Cele mai frecvente "diagrama" sunt: "th", "in", "er", "re" etc. De aici pâna la descoperirea cheii este doar rabdare si perseverenta. Odata "e" si "t" pus la locul lor este foarte usor sa depistam combinatiile "tXe" si sa concluzionam ca "X" este "h" etc.

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. C L A D I R E 2 6 1 3 5 7 4 M I I N E S E A R A L A O R A S A P T E I N F A T A L A U N I V E R S I T A T E A B       Pe primul rând de sub cheie, am numerotat literele functie de ordinea lor de aparitie în alfabet. Nu am tinut cont de diacritice, iar la finalul textului am adaugat literele A si B astfel încât sa fie complete toate coloanele.
      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: I M N E E I S A A L R A R O A A P I T S E A N T A A F L I U V S E N R A I T B E T A       Scriem cheia si numerotam literele componente în ordinea aparitiei lor în alfabet: C L A D I R E 2 6 1 3 5 7 4       si, apoi, punem fiecare coloana rezultata mai sus, sub numarul corespunzator.

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.
  1. D(E(P)) = P,
  2. Este mai mult decât dificil sa se deduca D din E,
  3. D nu poate fi spart printr-un atac cu text clar ales.
în care:
  1. P - textul clar,
  2. E - algoritmul, respectiv, cheia de criptare,
  3. D - algoritmul, respectiv cheia de decriptare

      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:
  1. Destinatarul poate verifica identitatea pe care pretinde a o avea expeditorul,
  2. Expeditorul nu poate sa renege mai târziu continutul mesajului.
          Destinatarul nu poate "sa-si trimita" lui însusi mesaje semnate ca fiind de la altcineva. Cu alte cuvinte nu poate falsifica o semnatura.
      Pornind de la aceste trei cerinte putem vorbi de doua categorii de semnaturi digitale:
  1. Semnaturi cu cheie secreta
          Acest sistem presupune existenta unei autoritati centrale care "stie totul" si în care trebuie sa avem încredere deplina. Pentru usurinta, convenim sa denumim aceasta autoritate: "Supremul". Oricine doreste sa utilizeze sistemul de semnatura secreta, va alege o cheie si o va duce personal la "Supremul". În acest mod, doar utilizatorul respectiv si "Supremul", cunosc cheia utilizatorului.
          Atunci când un utilizator A, doreste sa trimita altui utilizator, B, un mesaj semnat, va trimite textul lui "Supremul", care va autentifica faptul ca expeditorul acestuia este chiar A. În continuare "Supremul" va compune un alt mesaj si-l va trimite lui B. Astfel B trebuie sa fie convins ca mesajul provine de la A (doar a fost verificat de "Supremul"…).
          Acest sistem presupune existenta, în corpul fiecarui mesaj, a unei "amprente de timp". Pe baza ei se poate stabili "un termen de valabilitate" pentru fiecare mesaj.
          O problema a semnaturii cu cheie secreta o constituie personalitatea lui "Supremul", având în vedere ca trebuie sa avem încredere deplina în el. Cine credeti ca poate juca acest rol: guvernul, bancile, oamenii legii, armata, etc?
  2. Semnaturi cu cheie publica

      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
  1. A va aplica cheia sa privata asupra textului clar P,
  2. Tot A, va cripta textul obtinut cu cheia publica a lui B,
  3. A va trimite mesajul, astfel criptat, spre calculatorul lui B,
  4. B va aplica cheia sa privata si va obtine mesajul DA(P),
  5. B salveaza mai întâi rezultatul de la transformarea 4 si apoi va aplica cheia publica a lui A, rezultând în final, textul clar P.
      Sa vedem de ce este nevoie de salvarea textului rezultat la punctul 4. Sa presupunem ca la un moment dat A nu recunoaste ca ar fi trimis lui B un anumit mesaj. Utilizatorul B va aduce, ca proba, textul de la punctul 4: DA(P), text care poate fi foarte usor verificat ca a fost criptat cu cheia privata a lui A. Dar cine stie cheia privata a lui A? Doar A. Aici este si slabiciunea acestui algoritm de semnatura digitala. Totul este valabil atâta timp cât secretul lui A este pastrat. Daca altcineva "poate face rost" de cheia privata a lui A, el va putea trimite mesaje cu semnatura lui A. De aici apar doua necesitati:
  1. Schimbarea periodica a cheilor private,
  2. Mesajul sa contina o amprenta de timp, astfel încât sa se poata sti ce cheie privata folosea A atunci când a fost emis mesajul.
      Dupa cum se vede nu exista o solutie "perfecta", motiv pentru care "cursa continua", competitorii fiind împartiti în doua tabere. O tabara a celor care cauta metode din ce în ce mai performante si cealalta a "railor" care cauta "antidotul".