Transcript Kerberos

TSSD
Cursul 7
Kerberos
Protocolul Kerberos
• Protocolul Kerberos a fost proiectat la Universitatea MIT
(Massachusetts Institute of Techonology) în cadrul
proiectului Athena, în jurul anului 1984.
• Autentificare bidirectionala intre client si server
• Protocolul în sine constă dintr-un schimb de mesaje între un
client şi o serie de servere, fiecare cu o altă misiune.
Implementările curente folosesc un algoritm standard de
criptare DES (Data Encryption Standard).
Principii
• Premiza iniţială este că există un server central, numit
serverul de autentificare (AS), care cunoaşte identităţile
tuturor clienţilor posibili.
• Fiecare client a stabilit o parolă secretă pe care şi acest
server o ştie.
• Parola ajunge la server printr-o cale sigură, de exemplu prin
poştă sau printr-un mesager uman (mă rog, sigură cel puţin
din punct de vedere software).
Implementarea Kerberos
• Unde este stocată parola fiecărui client KC, KS, etc.).
• Dacă parola unui client este stocată pe disc atunci
este mai la indemîna atacurilor asupra clientului.
• Ca atare Kerberos nu memorează parola nicăieri!
• Utilizatorul este obligat să o tasteze de fiecare dată
cînd vrea să fie autentificat.
• Deci procedura este următoarea: programul
clientului va lua legătura cu AS, iar cînd răspunsul
soseşte utilizatorul trebuie să tasteze parola KC.
• Parola este imediat folosită pentru a decripta mesajul
de la AS după care este complet ştearsă din
memorie.
• În acest fel fereastra de vulnerabilitate este redusă la
maximum.
Figura 1: Protocolul Kerberos complet.
Tabel 1: Schimbul complet de mesaje în protocolul Kerberos.
Nr
Între
.
Conţinutul mesajului
1
C ---> AS
C, TGS, ora de expirare, N
2
AS ---> C
KC, TGS, ora de expirare, N}K_C, {TC,TGS}KTGS
3
C ---> TGS
{ora locala}KC,TGS, {TC,TGS}KTGS, S, ora de expirare, N1
4
TGS ---> C
{KC,S, S, ora de expirare, N1}KC, TGS, {TC,S}KS
5
C ---> S
{ora locala, suma de control,Ksubsesiune}KC,S, {TC,S}KS
6
S ---> C
{ora locala}KC,S
Autentificarea SSL/TLS
• Secures Sockets Layer (SSL), tehnologia care permite utilizarea
certificatelor digitale, este un protocol din nivel transport care
oferă o securitate deosebită de tip end-to-end, prin securizarea
sesiunii din punctul de origine până în punctul destinaţie.
• SSL se referă în general la securitatea comunicării între două
părţi. Acest lucru poate însemna comunicarea dintre un browser
Web şi un server Web, o aplicaţie email şi un server e-mail sau
chiar canalele de comunicaţie dintre două servere.
• SSL poate de asemenea să autentifice un server şi, în mod
opţional, un client. SSL a devenit astfel, metoda de facto pentru
securizarea comerţului electronic prin Internet.
• SSL este un protocol orientat pe conexiuni care necesită ca atât
aplicaţia client cât şi serverul să cunoască acest protocol.
• În cazul în care este necesar SSL la nivelul
unui server, aplicaţiile care nu pot să utilizeze acest protocol nu
vor putea comunica cu acesta.
Performanţa SSL
• Dacă SSL oferă o asemenea securitate, de ce nu se
criptează întregul trafic?
• Deşi este o idee bună, în procesul de criptare şi stabilire a
unei conexiuni SSL este implicat şi foarte mult trafic
adiţional, din cauza naturii protocolului HTTP care creează o
nouă sesiune pentru fiecare obiect cerut dintr-o pagină
Web.
• De exemplu, într-o simplă tranzacţie în care browser-ul cere
o singură pagină de text cu patru imagini, generează cinci
cereri GET (una pentru pagină şi patru pentru imagini).
• Prin utilizarea SSL, pentru fiecare din aceste sesiuni trebuie
negociate chei separate de criptare.
• Pentru a înrăutăţii şi mai mult lucrurile, utilizatorii frustraţi de
timpul de răspuns reîncarcă pagina în browser-ul Web
(refresh), generând şi mai multe conexiuni SSL.
SSH
• Unix este un sistem de operare sofisticat şi matur care a
fost dezvoltat de Bell Labs la începutul anilor 1970.
• Pe măsura trecerii anilor, Unix a avut partea sa de probleme
de securitate, multe dintre ele fiind rezolvate.
• În general, Unix este considerat a fi un sistem de operare
sigur şi stabil când este configurat în mod corect.
• Cu toate acestea, există o serie de protocoale care continuă
să scada securitatea sistemelor Unix, printre acestea
numărându-se Telnet, FTP precum şi faimoasele comenzi
de la Berkley de tip „r*” (rcp, rsh, rlogin).
• Programe şi protocoale nesigure continuă să ofere acces
uşor la sistem atât pentru administratori cât şi pentru
utilizatori răuvoitori.
• Aceste protocoale rămân vulnerabile în mare parte datorită
faptului că datele de autentificare sunt trimise prin reţea sub
formă de text clar, acesta semnificând că oricine poate să
obţină numele de utilizator şi parola, exploatând apoi un
serviciu prin impersonarea utilizatorului legitim.
Autentificarea prin SSH
• SSH oferă câteva mecanisme pentru autentificarea utilizatorilor
în funcţie de versiunea SSH utilizată.
• Cea mai slabă formă de autentificare este realizată prin
intermediului fişierelor .rhosts, această metodă nefiind
recomandată a fi selectată deoarece este foarte puţin sigură.
• Altă metodă de autentificare este oferită de criptarea prin RSA.
• Utilizând această metodă, utilizatorul creează o pereche
publică/privată de chei prin utilizarea programului ssh-keygen,
cheia publică fiind stocată în directorul părinte al utilizatorului.
• În momentul în care clientul se autentifică în faţa serverului,
trimite numele de utilizator şi cheia publică spre gazda de la
distanţă.
• Serverul returnează cheia de sesiune criptată cu cheia publică
a utilizatorului.
• Această cheie de sesiune va fi decriptată cu cheia privată a
utilizatorului.
SSH 1
SSH 2
Triple - DES
Triple - DES - algoritm implicit
128 bit RC4
128 bit RC4
Blowfish
Blowfish
IDEA - algoritm implicit
Twofish
DES
Arcfour
RSA
CAST 128
-
DSA
-
Transferul cheilor prin Diffie Hellman