c7c10cy
Avand in vedere faptul ca transmisia de date in Internet este 
neprotejata, a aparut necesitatea dezvoltarii tehnicilor de criptare in 
directia automatizarii acestora si a implementarii lor in retele de calculatoare. 
Astfel, utilizarea unor algoritmi pentru criptarea informatiilor transmise va 
deveni principalul mijloc de rezolvare a problemelor de interceptare in 
retele.
In descrierea unei transmisii de date prin retea se obisnuieste sa se numeasca 
generic "mesaj" un ansamblu de date trimis de un "emitator" 
unui "receptor". Printr-o metoda de criptare, mesajele vor fi transformate, 
pe baza unei chei de criptare, astfel incat sa poata fi intelese 
doar de destinatar.
Unul din principiile mai recent aparute in criptanaliza consta in 
utilizarea unei alte chei pentru decodificarea mesajului decat cea folosita 
la codificare; aceasta tehnica este mai eficienta dar complica putin procedeul 
general si de aceea se prefera cand criptarea / decriptarea se realizeaza 
automat. Evident, dimensiunea unei chei de criptare (exprimate in general 
in biti) este o masura a nivelului de securitate dat de acea cheie, ea indicand 
rezistenta mesajului cifrat la incercarile de descifrare de catre cineva 
care nu detine cheia de descifrare potrivita.
Principiile de criptare din algoritmii cu cheie secreta au evoluat odata cu aparitia 
calculatoarelor; ele continua insa sa se bazeze pe metodele traditionale, 
cum ar fi transpozitia si substitutia. Algoritmii cu cheie secreta sunt caracterizati 
de faptul ca folosesc aceeasi cheie atat in procesul de criptare, 
cat si in cel de decriptare (vezi figura de mai jos). Din acest motiv, 
acesti algoritmi mai sunt cunoscuti sub numele de algoritmi simetrici; pentru 
aplicarea lor este necesar ca inaintea codificarii / decodificarii, atat 
emitatorul cat si receptorul sa posede deja cheia respectiva. In mod 
evident, cheia care caracterizeaza acesti algoritmi trebuie sa fie secreta.
Principalul dezavantaj al algoritmilor simetrici consta in faptul ca impun 
un schimb de chei private inainte de a se incepe transmisia de date. 
Altfel spus, pentru a putea fi utilizati, este necesar un canal cu transmisie 
protejata pentru a putea fi transmise cheile de criptare / decriptare.
Schema de aplicare a unui algoritm simetric
 
Ulterior, vor aparea si algoritmi cu cheie publica, caracterizati prin faptul 
  ca criptarea si decriptarea folosesc chei diferite (vezi figura de mai jos). 
  Aceasta caracteristica a dat algoritmilor cu cheie publica si numele de algoritmi 
  asimetrici. In acest caz, una dintre chei poate fi publica (general cunoscuta 
  - poate fi distribuita oricui) iar cealalta va trebui sa privata / secreta (cunoscuta 
  doar de cel care o foloseste). Fiecare dintre aceste chei poate cripta mesajul, 
  dar un mesaj criptat cu o anumita cheie nu poate fi decriptat decat cu 
  cheia sa pereche.
  Astfel, in cazul utilizarii unui algoritm asimetric in comunicarea 
  dintre un emitator si un receptor, fiecare dintre acestia va detine cate 
  o pereche de chei - publica si privata. Emitatorul poate cripta mesajul cu cheia 
  publica a receptorului, astfel incat doar acesta sa poata decripta 
  mesajul cu cheia sa privata. In cazul unui raspuns, receptorul va utiliza 
  cheia publica a emitatorului astfel incat decriptarea sa se poata 
  face exclusiv de catre emitator (cu cheia sa pereche, privata).
  Cheile algoritmilor asimetrici sunt obtinute pe baza unei formule matematice 
  din algebra numerelor mari, pentru numere prime intre ele, iar din valoarea 
  unei chei nu poate fi dedusa valoarea cheii asociate. Remarcam faptul ca aplicarea 
  in informatica a calculelor modulo numere prime s-a dovedit extrem de 
  benefica pentru multi algoritmi moderni.
  Schema de aplicare a unui algoritm asimetric
Traditional, criptografii foloseau algoritmi simpli asociati cu chei de securitate 
  foarte lungi. Azi se urmareste crearea unor algoritmi de criptare atat 
  de complecsi incat sa fie practic ireversibili, chiar daca un criptanalist 
  achizitioneaza cantitati foarte mari de text cifrat.
  O alta caracteristica a criptografiei moderne consta in automatizarea 
  tehnicilor clasice, prin folosirea unor dispozitive special concepute. Transpozitiile 
  si substitutiile vor fi implementate cu circuite simple, de viteza mare, care 
  vor fi conectate in cascada astfel incat dependenta iesirii 
  de intrare devine extrem de complicata si dificil de descoperit.
  In 1977, guvernul SUA a adoptat ca standard oficial pentru informatiile 
  nesecrete un cifru produs si dezvoltat de IBM, numit DES (Data Encryption System), 
  care a fost larg adoptat in industrie. DES este cel mai popular algoritm 
  cu cheie secreta; el continua sa stea la baza unor sisteme folosite in 
  mod curent. DES foloseste (uzual) o cheie de 56 de biti; aceasta a fost in 
  cele din urma adoptata in locul uneia de 128 de biti, neagreata de NSA 
  (National Security Agency), agentia "spargatoare de coduri a guvernului", 
  care dorea suprematia in domeniul criptografic.
  Din 1977, cercetatorii in criptografie au incercat sa proiecteze 
  masini pentru a sparge DES. Prima asemenea masina (1977) a fost conceputa de 
  Diffie si Hellman, avea nevoie de mai putin de o zi iar costul ei a fost estimat 
  la 20 de milioane de dolari. Dupa aproape 2 decenii, costul unei astfel de masini 
  a ajuns la 1 milion de dolari iar timpul necesar spargerii codului a scazut 
  la 4 ore. Ulterior, s-au dezvoltat si alte metode, cum ar fi folosirea unui 
  cip DES incorporat (loteria chinezeasca).
  In scopul decriptarii s-ar mai putea folosi mecanisme soft specifice (cum 
  ar fi algoritmul asimetric Diffie-Hellman) si resursele libere ale unor calculatoare 
  cu destinatie universala. Astfel, s-a demonstrat ca rularea pe mai multe calculatoare 
  a unor programe distribuite de criptare (uzual, pe un numar mare de masini, 
  de ordinul miilor sau chiar zecilor de mii) creste considerabil eficienta procesului 
  de decriptare.
  Un alt cifru renumit este IDEA (International Data Encryption Algorithm), realizat 
  de doi cercetatori la Politehnica Federala din Zürich (ETHZ). Acest algoritm 
  foloseste o cheie de 128 de biti si este inspirat din metodele anterioare - 
  DES si cele imaginate pentru spargerea DES.
  Un alt algoritm performant a fost descoperit de un grup de cercetatori de la 
  MIT - Ronald Rivest, Adi Shamir, Leonard Adelman - si s-a numit cu initialele 
  creatorilor lui: RSA. Algoritmul de criptare RSA foloseste o cheie publica.
  Se observa ca utilizarea unor astfel de algoritmi de criptare a datelor asigura 
  transmisii confidentiale de date in retele neprotejate, rezolvand 
  problema interceptarii. De fapt, riscul de interceptare / modificare nu dispare 
  cu totul, din cauza ca orice mesaj criptat poate fi in general decriptat 
  fara a detine cheia corespunzatoare, daca se dispune de suficiente resurse materiale 
  si de timp.
  Evident, dimensiuni variate ale cheii asigura diferite grade de confidentialitate 
  iar perioada de timp necesara pentru decriptare poate fi prevazuta in 
  functie de marimea cheii utilizate. Totusi, daca procesul de decriptare este 
  lent, este posibil ca in momentul in care s-ar obtine datele dorite, 
  acestea sa nu mai fie actuale sau utile.
  Timpul de decriptare depinde in mod natural si de puterea procesoarelor 
  utilizate in acest scop, astfel incat utilizarea distribuita 
  a unui foarte mare numar de procesoare poate duce la o micsorare considerabila 
  a timpului necesar. Din acest motiv, pentru transmisii de date in care 
  este necesara o confidentialitate strica se utilizeaza chei de dimensiuni mult 
  mai mari, chiar pentru algoritmul DES (de 256, 512, 1024 si chiar 2048 sau 4096 
  de biti), stiut fiind ca timpul necesar decriptarii creste exponential cu dimensiunea 
  cheii de criptare / decriptare.
  Pentru utilizatorii obisnuiti ai Internet-ului, cei mai convenabili algoritmi 
  de criptare sunt cei cu cheie publica fiindca folosirea lor nu implica schimbul 
  preliminar de chei pe canale de transmisie protejate, ca in cazul algoritmilor 
  cu cheie secreta. Cheia publica poate fi distribuita fara restrictii pe intranet 
  (reteaua locala) sau Internet, iar mesajele criptate cu aceasta cheie de un 
  emitator vor putea fi decriptate numai utilizand cheia privata, care este 
  detinuta exclusiv de catre destinatar. Astfel, nici macar expeditorul nu ar 
  putea realiza decriptarea mesajului trimis.
Problema autentificarii
Un alt domeniu in care a evoluat criptografia moderna este cel al crearii 
  unor protocoale de autentificare - tehnica prin care un proces verifica daca 
  partenerul de comunicatie este cel presupus si nu un impostor. Verificarea identitatii 
  unui proces de la distanta este dificila si necesita utilizarea unor protocoale 
  complexe, bazate pe tehnici criptografice.
  Problema poate fi imaginata intuitiv sub forma a doi parteneri care comunica 
  si a altuia care doreste sa se introduca fraudulos in comunicatie, simuland 
  pe oricare din partenerii de discutie. Ca o metoda de protectie, cei doi utilizatori 
  pot stabili, de exemplu, o cheie secreta de sesiune, dar aceasta metoda presupune 
  transmiterea cheii printr-un canal sigur; de aceea, se prefera, ca si in 
  cazul impiedicarii interceptarilor, utilizarea criptarilor cu chei publice.
  Unul din protocoalele de autentificare folosit in sistemele in timp 
  real se numeste Kerberos (omonimul cainelui-paznic al lui Hades, care 
  ii tinea pe cei nedoriti afara). Conectia securizata la un server aflat 
  la distanta cu ssh foloseste pentru autentificare un alt protocol, bazat pe 
  algoritmul cu cheie publica RSA.
  Problema autentificarii impune gasirea unui corespondent electronic pentru semnaturile 
  autorizate de pe documentele legale. Un asemenea corepondent se numeste semnatura 
  digitala (vezi figura de mai jos) si presupune existenta unui sistem prin care 
  una din parti sa poata transmite mesaje "semnate" celeilalte parti, 
  astfel incat: 
  1. receptorul sa poata verifica identitatea pe care pretinde ca o are emitatorul. 
  Aceasta cerinta este necesara, de exemplu, in sistemele financiare: calculatorul 
  trebuie sa se asigure ca un ordin de cumparare sau de plata apartine companiei 
  cu al carei cont bancar se va opera. 
  2. transmitatorul sa nu poata renega ulterior continutul mesajului. Aceasta 
  necesitate asigura protejarea bancilor impotriva fraudelor: un client 
  necinstit ar putea acuza banca implicata in tranzactie, pretinzand, 
  de exemplu, ca nu a emis un anumit ordin (de plata). 
  3. receptorul sa nu poata pregati el insusi mesajul. In cazul unei 
  tranzactii financiare cu o banca, aceasta cerinta protejeaza clientul daca banca 
  incearca sa-i falsifice mesajul. 
  Ca semnaturi digitale, se pot folosi semnaturi cu cheie secreta sau publica 
  dar, asa cum s-a explicat anterior, de obicei se prefera cheile publice.
  In cazul mesajelor transmise prin posta electronica, riscul legat de impersonificarea 
  expeditorului este destul de mare fiindca standardele utilizate pentru transmiterea 
  postei electronice sunt simple si in plus au fost facute publice (ceea 
  ce inseamna ca oricine are acces la ele si poate sa le studieze). Standardul 
  de e-mail (vezi 6) nu are la baza nici un sistem pentru verificarea identitatii 
  celui care trimite un mesaj de posta electronica, bazandu-se pe o incredere 
  reciproca intre utilizatori. Acest neajuns ar putea fi fructificat de 
  catre persoane rauvoitoare pentru a trimite mesaje de posta electronica de pe 
  adrese false, sau chiar de pe adrese existente, pretinzand ca sunt utilizatorii 
  care detin acele adrese de posta electronica. Practic, este (aproape) imposibila 
  identificarea unei persoane care a emis astfel de mesaje fiindca in Internet 
  exista servere care asigura transmiterea anonima a mesajelor ("anonymous 
  remailers"), trimitandu-le de la un server la altul de mai multe 
  ori inainte de a le directiona catre adevarata destinatie.
  Pentru autentificarea expeditorului unui mesaj (de posta electronica sau un 
  ansamblu de date transmis prin Internet in alte scopuri) se foloseste 
  cel mai adesea un sistem cu cheie publica. Astfel, daca expeditorul cripteaza 
  mesajul cu cheia privata proprie, datele pot fi decriptate doar utilizand 
  cheia publica pereche (vezi figura de mai jos), deci oricine poate verifica 
  faptul ca mesajul a fost transmis intr-adevar de expeditor, si nu de o 
  persoana ce pretinde a fi expeditorul (dupa cum s-a explicat deja, mesajul criptat 
  cu o cheie poate fi decriptat doar utilizand cheia pereche acesteia si 
  se presupune ca expeditorul este singurul care are acces la cheia sa privata).
  Evident ca este posibil sa se realizeze o criptare a mesajelor in paralel 
  cu autentificarea, astfel incat inclusiv datele transmise sa fie 
  codificate. In acest caz, se vor utiliza perechile de chei privata, publica 
  nu numai pentru autentificare, ci si pentru criptarea, respectiv decriptarea 
  mesajelor transmise. Practic, pentru codificarea si semnarea digitala a unui 
  mesaj emis, se va realiza o criptare cu cheia privata a emitatorului si apoi 
  o criptare cu cheia publica a destinatarului. Astfel, destinatarul va putea 
  decripta mesajul si autentifica provenienta sa in conditii de securitate.
  Avand in vedere faptul ca algoritmii de criptare cu cheie publica 
  consuma foarte mult timp, in general se implementeaza o tehnica putin 
  diferita: se utilizeaza o criptare cu cheie publica pentru transmiterea unei 
  chei secrete generate aleator (deci cheia secreta este criptata si eventual 
  se poate utiliza si autentificarea expeditorului), dupa care datele propriu-zise 
  vor fi transmise criptate cu un algoritm simetric utilizand cheia secreta 
  schimbata anterior. Aceasta metoda imbunatateste considerabil viteza de 
  transmisie si de criptare / decriptare. 
  Semnarea digitala a mesajelor necriptate
Practic, pentru o identificare cat mai riguroasa a expeditorului se utilizeaza 
  un sistem complex, bazat pe certificare, in care fiecare utilizator detine 
  un certificat (ce are atasata o cheie publica si o cheie privata, secreta). 
  Acesta este emis de o autoritate de certificare recunoscuta, in urma examinarii, 
  pe baza de acte, a identitatii reale a persoanei. In momentul in 
  care se doreste identificarea unei persoane, o cautare in baza de date 
  a organizatiei respective va indica indentitatea expeditorului (pe baza cheii 
  publice a acestuia, care este unica in lume).
  Acest sistem este implementat sub forma unei structuri in care fiecare 
  autoritate de certificare poate imputernici la randul ei alte organizatii 
  sa emita certificate de autentificare, astfel incat originea unui 
  certificat poate fi verificata in mod complet testand validitatea 
  certificatului, apoi validitatea certificatului detinut de organizatia care 
  a emis certificatului respectiv, si asa mai departe.
  Sistemul de certificate digitale este utilizat nu numai pentru protejarea comunicatiilor, 
  ci si pentru certificarea originii programelor. Astfel, prin folosirea unei 
  criptari a programului de instalare cu cheia publica a firmei producatoare, 
  utilizatorul poate verifica relativ usor ca acel program a fost creat intr-adevar 
  de o anumita firma si pentru a decide daca sa instaleze sau nu programul. Aceasta 
  este practic cea mai buna solutie de rezolvare a problemei rularii de programe 
  / coduri daunatoare, enuntata la inceputul acestui capitol.
Problema modificarii mesajelor
Pentru a preveni modificarea unui mesaj, se utilizeaza o tehnica specifica, 
  denumita tehnica hash (sau a rezumatului), care permite construirea unui cod 
  de identificare a datelor transmise, numit "rezumatul datelor". Principiile 
  de baza ale tehnicii hash se aplica in numeroase domenii ale informaticii. 
  Rezumatul unui mesaj se construieste prin aplicarea, in sens unic ("unisens"), 
  a unei functii de transformare (functie "hash") intr-o secventa 
  de biti - de lungime mare, pentru a fi dificil "spart". Sensul unic 
  de transformare asigura faptul ca nu se pot deduce datele de intrare pe baza 
  datelor de iesire.
  Datele ce trebuie transmise sunt utilizate ca si date de intrare, obtinandu-se 
  astfel o valoarea de transformare ("hash value"). Daca datele in 
  tranzit sunt modificate, la destinatie se va obtine o alta valoarea de transformare, 
  ceea ce va indica falsificarea datelor.
  Valoarea de transformare este in general criptata ulterior prin utilizarea 
  aceleiasi chei secrete ca si pentru criptarea datelor transmise. Astfel, se 
  formeaza o "semnatura digitala" a datelor, care nu mai pot fi modificate 
  fara ca acest lucru sa fie depistat.