Sistemul de autentificare KERBEROS

Kerberos este un software destinat securitătii, dezvoltat la Massachusetts Institute of Technology ca parte a proiectului Athena. Sistemul furnizează o autentificare în timp real a cererilor de resurse într-o retea folosind sistemul cu cheie secretă DES. Nu este însă proiectat pentru a autentifica documente.

Cristian Petculescu

Dezvoltarea tehnologiei a cunoscut trei etape dominante. Prima dintre ele îsi are rădăcinile în preistorie si este legată de descoperirea si producerea de noi materiale. A doua constă în găsirea de noi surse de energie. A treia este reprezentată de inventarea unor metode noi pentru manipularea informatiei. Toate aceste trei teme se regăsesc în tehnologia modernă, în prezent cea de a treia dintre ele - tehnologia informatiei - cunoscând o dezvoltare rapidă.

Manipularea informatiei se bazează pe calculator, care, în „a doua revolutie industrială", are un rol similar cu cel al masinii cu aburi. Calculatoarele reprezintă nu numai „motoarele principale" ale prelucrării informatiei, ci si motoarele auxiliare în activitătile legate de aceasta, ca de exemplu comunicatiile. Dezvoltarea explozivă a tehnologiei calculatoarelor, care a început în 1945, se află în plin avânt. Datorită reducerii costului si imbunătătirii performantelor, prezenta calculatorului a devenit un lucru obisnuit în orice aplicatie ce implică functii logice.

Cazurile în care calculatorul este amplasat exact în locul de obtinere a datelor sau de folosire a rezultatelor prelucrării acestora sunt extrem de rare. Astfel, datele sunt transferate printr-o retea de calculatoare, care actionează ca un „bit mover" (transportor de biti).

Fiind, în general, o structură deschisă, la care se pot conecta mai multe echipamente într-un mod (cvasi)neîngrădit, cercul utilizatorilor ce au acces la retea are o dinamica practic necontrolabilă. Accesul acestora la fisiere, aplicatii si baze de date va fi partajat. Si atunci când este vorba de acces partajat, problema principală care se pune este securitatea.

Pentru a limita accesul la resurse numai pentru utilizatorii autorizati, server-ele trebuie să fie capabile de a confirma identitatile celor ce fac cereri la serviciile oferite - fiecare server trebuind să facă acest lucru pentru fiecare interactiune client-server. Într-o retea deschisă, această activitate crează un overhead care suprasolicită server-ul. O solutie la această problemă o constituie sistemul de autentificare Kerberos.

Kerberos, un software destinat securitatii, dezvoltat la Massachusetts Institute of Technology (Cambridge, Mass.) ca parte a proiectului Athena a fost proiectat pentru retele distribuite. Acum, disponibil atît în variantă publică, cât si comercială, Kerberos a fost declarat un standard INTERNET si a devenit standardul „de facto" pentru autentificare la distantă într-un mediu deschis de retea.

Spre deosebire de multe dintre solutiile curente în ceea ce priveste securitatea - cum ar fi generatoarele de parole sau dispozitivele biometrice care citesc amprentele digitale sau ale irisului - Kerberos rezolvă problema securitătii în retea fără hardware suplimentar, ci bazându-se pe mecanismele de criptare.

Kerberos furnizează o modalitate de a verifica identitătile conducătorilor unei tranzactii într-o retea deschisă (i.e. neprotejată). Aceasta se realizează fără a ne baza pe verificarea făcută de sistemul de operare local, fără a ne baza pe validitatea adreselor de retea, fără a cere securitate fizică la toate host-urile din retea si sub prezumtia că pachetele care circulă în retea pot fi citite, modificate si inserate după dorintă. (Notăm totusi că multe aplicatii folosesc functii Kerberos prin initierea unei comunicatii prin socketi stream si presupune absenta unor „hacker-i" ce ar putea submina o astfel de comunicatie. Aceasta presupune implicit si încrederea în adresele de retea vehiculate prin aceste mijloace.) În aceste conditii, Kerberos este un tert (o parte) de încredere care realizează autentificarea părtilor prin servicii criptografice conventionale (i.e. servicii ce folosesc cheie secretă partajabilă - aceeasi cheie este folosită si la criptare si la decriptare.), în spetă fiind folosit Data Encryption System (DES).

Procesul de autentificare se desfăsoară după cum urmează: un client trimite o cerere unui server de autentificare (AS) cerând credite pentru un anumit server. AS răspunde cu aceste credite incriptate cu cheia secretă a clientului. Creditele constau dintr-un tichet si o cheie temporară de criptare (cheie de sesiune). Clientul transmite server-ului tichetul (care constă din identitatea clientului si dintr-o copie a cheii de sesiune ambele încriptate cu cheia secretă a server-ului). Cheia de sesiune (acum partajată de către client si server) foloseste la autentificarea clientului si poate fi optional folosită pentru a autentifica server-ul. Poate fi de asemenea folosită pentru a furniza infrastructura de incriptare în comunicatia ulterioară dintre cele două părti.

Există două abordări asupra cererii de credite: prima presupune că cererile de credite se adresează în clar către AS, care le trimite incriptate cu cheia secretă a clientului; a doua stabileste că spre AS va veni doar prima cerere de autentificare (a clientului) în urma căreia se obtine o cheie de sesiune si un tichet de acces la un server de acordare a tichetelor (TGS), server care face parte din sistemul Kerberos, cererile de acordare ale tichtelor adresându-se în continuare către TGS.

Siguranta (din punct de vedere al securitătii) comunicatiei este asigurată de către folosirea cheii de sesiune. Această abordare furnizează posibilitatea detectiei atacului de răspuns (shadow server-ele). Împreună cu aceasta se realizează si semnătura digitală a pachetelor încriptate (ceea ce permite detectarea unui atac de tip crash).

Mecanismul de autentificare descris mai sus necesită acces read-only la baza de date Kerberos. Uneori, totusi, este necesar ca baza de date să fie modificată. Aceasta se poate realiza printr-un dialog între client si un modul de protocol de administrare (KADM).

O sesiune de lucru Kerberos

Desfăsurarea operatiilor în sistemul Kerberos se desfăsoară în următoarele faze (este vorba în continuare de varianta a doua de obtinere a tichetelor - de la TGS - vezi schema de operare a sistemului) :

1. Utilizatorul deschide o sesiune de lucru Kerberos (se lansează în executie klogin). Utilizatorul îsi trimite numele (ca răspuns la klogin).

2. Statia (procesul klogin) contactează AS transmitându-i în clar un mesaj ce contine numele de login si numele unui TGS :

mesaj = (nume_login, nume_TGS) 

3. AS caută în baza de date Kerberos si obtine:

- o cheie de criptare pentru utilizator

- o cheie de criptare pentru TGS

Înăuntrul tichetului de acces la TGS se introduc:

tichet_de_acces_la_TGS = encrypt//TGS_key (nume_TGS, nume_client, adresa_client, time_stamp, timp_viată, cheie_sesiune) 

4. AS trimite statiei clientului un răspuns, care este criptat cu cheia clientului si care are următoarea structură:

răspuns = encrypt//client_key (tichet_de_acces_la_TGS, cheie_sesiune) 

5. Programul klogin primeste mesajul si cere parola utilizatorului. Parola este criptată printr-o functie greu inversabilă standard Unix, rezultatul fiind o cheie de cifrare a utilizatorului. Aceasta este folosită la criptarea mesajului, parola clară fiind stearsă din statie. Statia rămâne cu :

- un tichet sigilat;

- o cheie de sesiune TGS

pe care le memorează.

6. Statia trimite TGS-ului un mesaj de forma :

mesaj = (nume_serviciu, tichet_de_acces_la_TGS, autentificator) 

unde,

autentificator = encrypt//session_key (nume_client, adresa_client, time_stamp) 

7. TGS primeste mesajul, decriptează tichetul, de unde obtine cheia de sesiune cu care decriptează autentificatorul, face verificările necesare si, dacă totul este în regulă, obtine din baza de date Kerberos cheia serviciului indicat prin nume_serviciu.

8. Se formează un tichet de acces la serviciu si o nouă cheie de sesiune.

Înăuntrul tichetului de acces la serviciu se introduc:

tichet_de_acces_la_serviciu = encrypt//serv_key (nume_TGS, nume_client, adresa_client, time_stamp, timp_viată, cheie_sesiune) 

TGS trimite statiei clientului un răspuns care este criptat cu cheia de sesiune client - TGS si care are următoarea structură:

răspuns = encrypt//session_key (tichet_de_acces_la_serviciu, cheie_sesiune) 

9. Statia trimite serviciului un mesaj de forma :

mesaj = (nume_serviciu, tichet_de_acces_la_serviciu, autentificator) 

unde,

autentificator = encrypt//new_session_key (nume_client, adresa_client, time_stamp) 

10. Serviciul primeste mesajul, decriptează tichetul sigilat folosind cheia sa de decriptare (pe care doar Kerberos o mai cunoaste). Află prin decriptare cheia de sesiune client - serviciu si poate, astfel, decripta autentificatorul, după care procedează la verificările necesare. Dacă aceste verificări se desfăsoară cu succes, se oferă serviciul solicitat.

11. Serviciul se autentifică la rândul său transmitând clientului un mesaj de forma (optional)

mesaj = encrypt//new_session_key (time_stamp+1) 

Consideratii asupra protocolului

Tichetele si autentificatorii sunt puncte cheie pentru întelegerea implementării schemei Kerberos.

Consideratii asupra mediului

Kerberos impune câteva consideratii asupra mediului, stabilind unele conditii pentru a putea functiona în mod corect :


(C) Copyright Computer Press Agora