Curs 6 - Autentificarea centralizata in retele de calculatoare

Controlul accesului la fisiere si alte resurse, in sensul acordarii drepturilor de acces doar utilizatorilor autorizati, presupune in general doua etape:

  1. autenificarea - operatia prin care se verifica faptul ca o entitate este cine pretinde ca este
  2. autorizarea - operatia prin care se verifica daca o anumita entitate, deja autentificata, are dreptul sa faca operatia pe care o solicita

Intr-o retea de calculatoare apare frecvent necesitatea ca un utilizator sa trebuiasca sa se autentifice fata de o statie de lucru din retea. Este de dorit ca:

1. Autentificarea si autorizarea pe un calculator independent

Pe un calculator independent, autentificarea si autorizarea decurg de regula in modul urmator:

Fiecare utilizator este identificat printr-un identificator de utilizator, unic in cadrul sistemului. Sistemul de operare dispune de o baza de date ce asociaza fiecarui identificator de utilizator: numele de login (de asemenea unic) (daca nu cumva numele de login se foloseste chiar ca identificator), numele real, parola, si alte informatii.

Fiecare fisier sau alta resursa are asociata o lista de control al accesului, care cuprinde - sub o forma sau alta - identificatorii utilizatorilor care au drept de acces.

Autentificarea are loc o singura data, la inceperea sesiunii, cand utilizatorul isi introduce numele si parola. Identitatea utilizatorului este pastrata de sistem intr-o zona de memorie inaccesibila utilizatorului. Identitatea utilizatorului este asociata proceselor lansate de utilizator, intrucat de fapt cererile de acces la fisiere sunt facute intotdeauna de catre un proces ruland din contul unui utilizator.

La apelul unei functii de acces la un fisier, sistemul verifica daca utilizatorul asociat procesului ce face cererea este autorizat sa obtina accesul la fisier.

2. NIS - Network Information System

Este un sistem elaborat de firma SUN. Numele initial era Yellow Pages, dar a fost schimbat deoarece "Yellow Pages" este marca inregistrata.

Sistemul permite calculatoarelor dintr-o multime de calculatoare - numita domeniu NIS - accesul in citire la baza de date a utilizatorilor. Sistemul presupune urmatoarele:

In aceste conditii:

3. Retele Windows NT

Intr-un domeniu Windows NT trebuie sa exista exact un calculator configurat ca PDC (Primary Domain Controller); acesta detine baza de date a utilizatorilor. Pentru marirea vitezei si fiabilitatii, pot fi configurate alte calculatoare ca BDC (Backup Domain Controller): un BDC tine o copie a bazei de date, copie pe care nu o poate modifica. Astfel, pentru autentificare se poate folosi fie PDC-ul, fie oricare dintre BDC-uri.

La inceperea unei sesiuni, statia de lucru cere utilizatorului numele si parola. Apoi, verifica numele si parola printr-un schimb de mesaje cu PDC-ul sau un BDC al domeniului. Verificarea este bazata pe un protocol challenge-response, pentru a evita transmiterea parolei in clar prin retea.

Statia de lucru retine parola utilizatorului in memorie pe durata sesiunii de lucru, si foloseste parola pentru a se autentifica fata de alte masini, daca utilizatorul solicita fisiere sau alte servicii de la acestea.

In derularea protocoalelor de autentificare, sistemele de operare de pa calculatoarele implicate trebuie si ele sa se autentifice, motiv pentru care fiecare statie are pe PDC un cont al statiei. Acest cont se creaza prin procedura de introducere a statiei in domeniu - operatie care necesita o parola de administrator de domeniu.

Avantajele fata de NIS sunt:

Pentru organizatii mai complexe, un singur domeniu poate fi insuficient. Windows permite ca intre domenii sa se stabileasca relatii de "trusting": utilizatorii dintr-unul din domenii pot primi drept de acces la fisierele si celelalte resurse de pe calculatoarele din celalalt domeniu implicat in relatia de trusting. De remarcat ca, in lipsa relatiei de trusting nu se pot acorda nici un fel de drepturi. Relatia de trusting presupune ca un domeniu are incredere in autentificarea facuta de PDC-ul celuilalt domeniu.

4. Kerberos

Este un sistem dezvoltat la MIT prin 1985.

Kerberos permite autentificarea si securizarea comunicatiei intre un client si un server. In general, clientii sunt utilizatorii si serverele sunt serviciile rulate de calculatoarele din domeniu.

Fiecare entitate (client sau server) din domeniu trebuie sa aiba un nume Kerberos. Numele Kerberos este de forma nume@DOMENIU, unde DOMENIU identifica domeniul Kerberos si este numele DNS scris cu litere mari al domeniului, iar nume identifica entitatea in cadrul domeniului Kerberos.

Pentru un domeniu Kerberos trebuie sa existe un server Kerberos, pe care il vom desemna SK. Toata lumea (clienti si servere) se presupune ca are incredere in SK. Fiecare entitate are o cheie (parola) pe care o stie doar ea si SK.

Daca un client C doreste sa comunice cu un server S, va proceda in modul urmator:

  1. C trimite lui SK o cerere (in clar) in care spune ca doreste sa discute cu S
  2. SK genereaza (aleator) o cheie de sesiune, ce va fi folosita de comunicatia intre C si S.
  3. SK creaza un pachet format din cheia de sesiune, data curenta, numele lui C si numele lui S
  4. SK trimite lui C doua copii ale pachetului de mai sus, una criptata folosind cheia lui C si cealalta criptata cu cheia lui S
  5. C primeste cele doua pachete, il decripteaza pe primul, verifica faptul ca este raspunsul la cererea de comunicatie cu S (si nu o replica mai veche a lui SK, memorata si retrimisa ulterior de un intrus) si extrage cheia de sesiune
  6. C deschide o conexiune catre S si-i trimite cel de-al doilea pachet (cel criptat de SK cu cheia lui S).
  7. S decripteaza pachetul trimis de C, verifica faptul ca este recent si nu o replica, si extrage numele lui C si cheia de sesiune
  8. in continuare, discutia dintre C si S este criptata si cu sume de control alcatuite cu ajutorul cheii de sesiune. Deoarece nimeni in afara de C, S si SK nu poate obtine cheia de sesiune, comunicatia este sigura. Nici un intrus nu poate impersona pe C sau pe S deoarece, in lipsa cheii de sesiune, nu poate genera mesaje valide.

Cele de mai sus reprezinta doar ideea de baza. Sistemul Kerberos foloseste de fapt doua servere Kerberos, cu roluri distincte, dar in general ruland impreuna pe aceeasi masina:

  1. AS (Authentication Server) - aplica protocolul descris mai sus
  2. TGS (Ticket Granting Server) - La deschiderea unei sesiuni, utilizatorul va contacta AS pentru a obtine un tichet (un pachet continand cheia de sesiune) pentru TGS. TGS este tratat aici ca un server oarecare. Ulterior, pentru fiecare server de contactat, clientul C se conecteaza intai la TGS (folosind cheia de sesiune pentru TGS) si obtine, printr-un protocol similar cu cel folosit de AS, un tichet pentru serverul S cu care doreste sa comunice. Avantajul este acela ca masina client va stoca pe durata sesiunii tichetul pentru TGS si nu parola utilizatorului. Tichetul pentru TGS are durata de valabilitate limitata (de obicei la cateva ore).

Kerberos permite autentificarea intre domenii in modul urmator: presupunem ca C este in domeniul D1, controlat de AS1 si TGS1, iar S este in domeniul D2, controlat de AS2 si TGS2.

Administratorul lui D1 va crea in D1 un cont pentru TGS2.

In aceasta situatie, clientul C (cu numele C@D1) va proceda dupa cum urmeaza:

  1. C are un tichet pentru TGS1 (obtinut contactand AS1)
  2. C cere lui TGS1 un tichet pentru TGS2 (C@D1 catre TGS2@D1).
  3. C cere lui TGS2 un tichet pentru S (C@D1 catre S@D2). Tichetul trimis de TGS2 va arata ca a fost eliberat pe baza autentificarii lui C de catre TGS1
  4. C contacteaza S folosind tichetul furnizat de TGS2.
  5. S poate refuza pe C (C@D1) daca in lista de domenii Kerberos (doua in cazul de fata) care au participat la autentificare este vreun server in care nu are suficienta incredere.


Retele de calculatoare
5 Ian 2004
Radu-Lucian LUPSA