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.