Tehnici de autentificare

Autentificarea bazată pe parole
În cele mai multe sisteme distribuite şi reţele de calculatoare, protecţia resurselor se realizează prin login direct folosind parole, cu transmiterea în clar a acestora. Această autentificare are mai multe inconveniente, din care amintim doar câteva:
Utilizatorii tind să selecteze parole neuniform distribuite. Această problemă este binecunoscută şi nu este neapărat legată de reţele de calculatoare şi sisteme distribuite.
Nu este convenabil pentru un utilizator care are mai multe conturi pe hosturi diferite să îşi amintească parola pentru fiecare, şi de asemenea să o introducă la fiecare schimbare a host-ului. În schimb, utilizatorul va allege să fie recunoscut de reţea ca întreg şi nu de host-urile individuale.
Transmisia parolei este expusă la captură pasivă.
În principal datorită acestui ultim punct, autentificarea bazată pe parolă nu este potrivită în reţele de calculatoare şi sisteme distribuite. Parolele trimise prin reţea sunt foarte uşor compromise şi folosite ulterior pentru impersonarea utilizatorului.
În unele situaţii este chiar supărător că se foloseşte autentificarea prin parolă. Spre exemplu, în Statele Unite ale Americii telefoanele mobile folosesc ca parolă internă la efectuarea unui apel chiar numărul telefonului respectiv pentru ca centrala să poată factura fiecare apel în mod corect. Este evidentă că un atacator poate impersona uşor apelul şi poate efectua convorbiri în contul altei persoane.
Autentificarea bazată pe adresă
O alternativă – nu neapărat mai sigură – la autentificarea prin parolă este autentificarea prin adresă. Aceasta presupune că identitatea unei surse se poate deduce din adresa acesteia conţinută în pachete. Ideea de bază este că fiecare host memorează identitatea celorlalte host-uri care au acces la resursele sale. În UNIX, fiecare host are un fişier numit /etc/hosts.equiv. Utilizatorii cu acelaşi cont pe ambele sisteme pot folosi utilitarele „r” fără a specifica vreo parolă. Ideea de host-uri credibile nu este o soluţie la problema autentificării în reţele de calculatoare. De fapt, acest tip de autentificare chiar pune probleme mai mari din punct de vedere al securităţii. Dacă un atacator reuşeşte să intre pe contul unui utilizator dintr-un sistem, securitatea este compromisă pe toate sistemele care au încredere în acel sistem. În plus, administratorul de sistem nu poate da drepturi preferenţiale unor utilizatori. În funcţie de mediul concret, autentificarea prin adresă este chiar mai puţin sigură decât cea bazată pe parolă. Avantajul îl constituie însă comoditatea în folosire şi de aceea multe sisteme au ales să o implementeze.
Autentificarea criptografică
Ideea din spatele autentificării criptografice este că un A îşi dovedeşte identitatea către B prin efectuarea unei operaţii criptografice asupra unei entităţi cunoscute de ambii participanţi sau oferită de B. Operaţia criptografică efectuată de A se bazează pe o cheie criptografică. Aceasta poate fi fie o cheie secretă sau o cheie privată dintr-un sistem cu chei asimetrice. În general, autentificarea criptografică este mai sigură decât autentificarea bazată pe parolă sau pe adresă. În schimb, noile tehnici bazate pe dovezi zero-knowledge pot oferi mecanisme de autentificare chiar mai puternice. Aceste tehnici necesită calcule matematice destul de complexe dar prezintă mai multe facilităţi attractive pentru autentificare. În primul rând, permit părţii ce se autentifică să dovedească că ştie secretul fără a transfera efectiv informaţia către verificator. În al doilea rând, multe dintre schemele propuse până acum folosesc aceleaşi informaţii publice, evitându-se astfel
problema distribuţiei cheilor care apare în cazul mecanismelor ce folosesc DES şi RSA. În ciuda aparentei simplităţi, proiectarea sistemelor reale este foarte dificilă. O serie de protocoale publicate au prezentat erori de securitate substanţiale sau subtile. În timpul ultimei decade, eforturile de cercetare s-au concentrat în crearea de utilitare pentru dezvoltarea protocoalelor de autentificare şi distribuţie a cheilor cu o anumită asigurare formală a securităţii. Realizările cele mai notabile sunt logica BAN şi logica GNY. În loc de a produce protocoale specifice, aceste metodologii se utilizează pentru a verifica un set de afirmaţii presupus adevărate.

RSA (Rivest-Shamir-Adelman)

RSA provine de la numele de familie ale inventatorilor săi, Rivest, Shamir şi Adleman.
Pe vremea când Diffie şi Hellman au inventat metoda distribuţiei prin chei publice, aceştia au gândit şi la un alt concept mult mai performant, dar n-au găsit soluţia implementării lui – criptografia prin chei publice. Prin aceasta, fiecare persoană are o pereche de chei publică-privată, unică, pe termen lung. Componenta publică, ransmisibilă prin Internet şi partajată cu toată lumea, este folosită pentru criptarea datelor, în timp ce componenta privată, greu de calculat pe baza cheii publice, este folosită pentru decriptare. Criptografia prin chei publice este numită şi „criptografie prin două chei” şi „criptografie asimetrică”. Metodele convenţionale, descrise anterior, care apelează la o singură cheie, sunt referite ca şi „criptografie printr-o singură cheie”, „criptografie prin cheie privată”, „criptografie prin cheie secretă”, „criptografie simetrică” şi „criptografie convenţională”.
La scurt timp după ce Diffie şi Hellman au lansat ideea revoluţionară a criptografierii prin chei publice, trei profesori de la MIT (Massachusetts Institute of Technology), Ronald Rivest, Adi Shamir şi Leonard Adleman, au venit cu soluţia implementării ei. Varianta propusă se numea RSA. Concomitent, Hellman şi Merkle au inventat o altă metodă, numită „trapdoor knapsacks”, bazată pe alt model matematic. Oricum, modelul lor a fost spart la începutul anilor 1980.
Pentru a transmite un mesaj cu text clar către Bob, folosind sistemul cheilor publice, gen RSA, Alice generează cheia K a mesajului şi o foloseşte prin intermediul criptosistemului convenţional, cum ar fi DES, pentru criptarea mesajului. Utilizând criptografia prin chei publice, ea, de asemenea, criptează K, sub cheia publică a lui B, denumită KBobpub. Apoi, ea transmite atât cheia criptată, cât şi mesajul criptat către Bob. Bob, la rândul său, apelează la propria lui cheie privată, denumită KBobpriv, pentru a decripta cheia K a mesajului, apoi el foloseşte cheia K pentru decriptarea mesajului.
Teoretic, Alice poate să transmită textul către Bob folosind doar criptarea prin cheia publică a lui Bob, apelând doar la criptografia prin cheie publică. În practică, însă, nu se întâmplă aşa datorită încetinirii procesului de transmitere prin mulţimea calculelor de efectuat. E mult mai rapid să foloseşti o metodă convenţională de mare viteză pentru criptarea mesajului, rezervând metoda cheii publice doar pentru distribuţia cheii. În plus, nu se consideră o practică prea inspirată să foloseşti aceeaşi cheie pentru criptarea mesajelor de-a lungul unei mari perioade de timp, din cauza sporirii şanselor de a fi atacată. Perechea de chei publică-privată este uneori numită „cheia cheii de criptare”, pentru a o deosebi de cheia mesajului (cheia datelor criptate). Ca şi Diffie-Hellman, sistemul RSA calculează exponenţierile în aritmetica modulară folosind numere cu lungimea de câteva sute de cifre. În RSA, totuşi, fiecare persoană are un modulo N personal, care este produsul a două numere prime secrete. Cheia K a mesajului este criptată prin ridicarea ei la puterea exponentului public a lui Bob (eb), modulo Nb, iar decriptarea se efectuează prin ridicarea ei la puterea exponentului privat al lui Bob (db), modulo Nb. Presupunând că C va prelua valoarea cheii textului criptat, aceasta se va exprima mathematic astfel:
C = Keb mod Nb (criptarea lui K)
K = Cdb mod Nb (decriptarea)
Pentru ca exponentul folosit la decriptare (db) să poată reface exponenţierea cu eb la criptare, formula eb * db = 1 mod (pb-1)(qb-1) trebuie să fie realizată; în care Nb = pb * qb pentru numerele prime pb şi qb.
În aceste condiţii, oricine ştie eb, pb şi qb poate să folosească formula pentru a deduce db. Din acest motiv, pb şi qb nu se divulgă, chiar dacă eb şi Nb sunt făcut publice. Calcularea factorilor primi ai lui Nb se consideră a fi, din punct de vedere matematic, nerezolvabilă pentru numere foarte mari.
Vom folosi valori mici ale numerelor din exemplul următor pentru a uşura înţelegerea mecansimului. Să presupunem că Bob a ales numerele prime secrete pb = 5 şi qb = 3, de unde rezultă că Nb = pb * qb = 5 * 3 = 15.

Apoi alege exponentul secret db = 29 şi îl calculează pe eb după formula eb * db = 1 mod (pb-1)(qb-1), ceea ce va conduce la eb * 29 = 1 mod (4 * 2), 29 * eb = 1 mod 8.

Prin încercări succesive rezultă eb = 5.
Dacă Alice doreşte să transmită cheia K = 2 către Bob, ea o va cripta cu exponenţierea din cheia publică a lui Bob, efectuând calculele:
C = Keb mod Nb = 25 mod 15 = 32 mod 15 = 2
Când Bob obţine cheia criptată o va decripta folosindu-şi cheia secretă drept exponent, prin calculul:
K = Cdb mod Nb = 229 mod 15 = 2 (Se aplică mod (2 ** 29, 15)).
Se observă că s-a obţinut valoarea K = 2 a cheii transmisă de Alice.

Schimbul de chei Diffie-Hellman

Metoda schimbului de chei Diffie-Hellman, cunoscută şi ca metoda de distribuţie a cheilor publice, poartă numele a doi specialişti de la Standford University, Whitfield Diffie şi Martin Hellman. În anul 1976, ei au inventat o metodă prin care două părţi pot cădea de comun acord să comunice prin mesaje secrete fără să fie nevoie de o terţă parte, de un schimb off-line sau de transmiterea vreunei valori secrete între ele.
Independent, Ralph Merkle a venit cu o soluţie de distribuţie a cheilor publice, numai că metoda propusă implica substanţiale cheltuieli pentru efectuarea calculelor şi a transmisiei. Varianta realizată de Diffie şi Hellman a fost numită sistemul distribuţiei cheilor publice sau al schimburilor de chei publice.
Metoda Diffie-Hellman se bazează pe conceptul perechii de chei publică privată.
Protocolul începe cu fiecare parte care generează independent câte o cheie privată. În pasul următor, fiecare calculează câte o cheie publică, aceasta fiind o funcţie matematică a cheilor private respective. Urmează schimbul de chei publice.
În final, fiecare dintre cele două persoane calculează o funcţie a propriei chei private şi a cheii publice a celeilalte persoane. Matematica este cea care va face să se ajungă la aceeaşi valoare, care este derivată din cheile lor private. Ele vor folosi valoarea ca pe cheie a mesajului.
Diffie şi Hellman folosesc exponenţierea în aritmetica modulară pentru a calcula cheile publice şi cheia mesajului. Aritmetica modulară este ca şi aritmetica standard, cu excepţia faptului că foloseşte numere numai în intervalul 0 la N, numit modulo. Atunci când o operaţie produce un rezultat care este mai mare sau egal cu N, N este scăzut repetat din rezultat până când valoarea se încadrează în intervalul 0 la N-1 (ca şi cum s-ar împărţi la N şi se ia în seamă restul). De exemplu, 3+4 mod 5 = 2. Dacă rezultatul este negativ, N se adaugă acestuia până când se va încadra în intervalul 0 la N-1. De exemplu, 3-8 mod 7 = -5 mod 7 = 2.
În aritmetica modulară, exponenţierea este o funcţie într-un singur sens.
Aceasta înseamnă că este uşor de calculat un număr y = gx mod N pentru o valoare secretă x, însă este mult mai dificil să se calculeze x din y, dacă numerele sunt suficient de mari, ca de exemplu o lungime de câteva sute de cifre (noi presupunem că g şi N sunt cunoscute). Aceasta este referită ca şi problema logaritmului discret pentru că x este logaritm din y în baza g (mod N), iar numerele sunt finite şi întregi.
Cu metoda Diffie-Hellman a schimbului de chei publice, Alice şi Bob stabilesc cheia mesajului secret după cum urmează. Alice generează o cheie secretă xa şi Bob o cheie secretă xb. După aceasta, Alice calculează o cheie publică ya, care este g ridicat la puterea xa modulo p, unde p este un număr prim (adică nu poate fi descompus în produsul a două numere), g fiind mai mic decât p. Identic, Bob calculează o cheie publică yb, prin ridicarea lui g la puterea xb modulo p. Ei vor schimba valorile publice ale acestora. Apoi, Alice ridică cheia publică a lui Bob la puterea exponentului său, xa modulo p, în timp ce Bob ridică cheia publică a lui Alice la exponentul său, xb modulo p. Amândoi vor obţine acelaşi rezultat, g ridicat la puterea xa şi xb, iar rezultatul obţinut va fi folosit de amândoi drept cheia K a mesajului. Matematic, totul se va exprima astfel:
ya = gxa mod p
yb = gxb mod p
K = yaxb mod p = ybxa mod p = gxa*xb mod p
Deşi în practică se folosesc numere foarte lungi, de câteva sute de cifre, pentru a ajuta la înţelegerea modului de funcţionare, vom folosi numere mici.
Exemplul 1
Să presupunem că p = 7, g = 3, cheia lui Alice xa = 1 şi a lui Bob xb = 2
Vom avea:
• Alice calculează cheia sa publică: ya = gxa mod p = 31 mod 7 = 3
• Bob calculează cheia sa publică: yb = gxb mod p = 32 mod 7 = 2
• Alice calculează K = ybxa mod p = 21 mod 7 = 2
• Bob calculează K = yaxb mod p = 32 mod 7 = 2
sau
K = gxa*xb mod p = 32×1 mod 7 = 9 mod 7 = 2.
Exemplul 2
Să presupunem că p = 5, g = 4, cheia lui Alice xa = 3 şi a lui Bob xb = 2
• Alice calculează cheia sa publică: ya = gxa mod p = 43 mod 5 = 4
• Bob calculează cheia sa publică: yb = gxb mod p = 42 mod 5 = 1
• Alice calculează K = ybxa mod p = 13 mod 5 = 1
• Bob calculează K = yaxb mod p = 42 mod 5 = 1
sau
K = gxa*xb mod p = 43×2 mod 5 = 4096 mod 5 = 1.
Se observă că în ambele cazuri K ia valori identice, 2, respectiv 1.
Metoda Diffie-Hellamn, precum şi variantele ei sunt utilizate în câteva protocoale de securitate a reţelelor şi în produse comerciale, inclusiv la AT&T 3600 Telephone Security Device, la Fortezza card – o variantă de carduri criptate, şi la Pretty Good Privacy pentru criptarea e-mail-urilor şi a unor fişiere.