Curs 5 - Protocoale securizate; ssh
1. Protocolul SSH
SSH = Secure SHell
SSH este un protocol care permite crearea unei sesiuni de lucru la distanta,
transferul de fisiere si crearea unor canale de comunicatie pentru alte
aplicatii, toata transmisia fiind sigura impotriva atacurilor intrusilor.
Confidentialitatea transmisiei este asigurata prin criptare. Integritatea
este asigurata prin trimiterea unor sume de control criptografice.
Autentificarea serverului se face prin criptografie asimetrica, serverul
avand o cheie secreta si clientii dispunand de cheia publica
corespunzatoare. Autentificarea clientului se face fie prin criptografie
asimetrica, ca si in cazul autentificarii serverului (dar bineinteles
folosind alta pereche de chei), fie cu parola clasica, data de client dupa
autentificarea serverului.
1.1. Stabilirea conexiunii
Stabilirea unei conexiuni SSH decurge in urmatoarele etape:
- Clientul si serverul se inteleg asupra unei chei de sesiune, folosind
in acest scop protocolul Diffie-Helman. In continuare, intreaga comunicatie
este criptata cu cheia de sesiune.
- Clientul autentifica serverul. In acest scop, serverul trimite
rezultatul semnarii cheii de sesiune cu cheia sa secreta. Clientul verifica
semnatura folosind in acest scop cheia publica a serverului.
Pentru usurarea utilizarii sistemului, serverul isi trimite si cheia
publica. Daca clientul nu are cheia publica a serverului, o poate folosi pe cea
trimisa de server - evident optiunea este nesigura, deoarece serverul inca
nu a fost autentificat si deci s-ar putea sa fie un intrus. Utilizatorul
este avertizat asupra acestui risc, si cheia publica a serverului este
inregistrata in baza de date a clientului, la urmatoarea conectare la
acelasi server cheia publica urmand sa fie luata din baza de date.
- Serverul autentifica clientul. In functie de configuratia serverului,
poate accepta autentificare cu criptografie asimetrica, folosind acelasi
protocol (dar bineinteles fara posibilitatea trimiterii de catre client a
cheii sale publice), sau poate cere clientului o parola.
Dupa stabilirea conexiunii, toate datele care circula pe conexiune sunt
impartite in pachete, transmise in modul urmator:
- mai intai, se construieste o suma de control, prin aplicarea unei
functii de dispersie criptografica asupra rezultatului juxtapunetrii
pachetului de date cu numarul sau de ordine si cu cheia de sesiune.
- se formeaza un pachet din lungimea datelor, datele propriu-zise,
suma de control calculata la pasul anterior, si o completare cu biti
aleatori pana la un multiplu al lungimii blocului acceptat de algoritmul de
criptare
- pachetul format anterior se cripteaza cu cheia de sesiune, folosind un
algoritm simetric pe bloc in modul CBC
1.2. Servicii SSH
SSH nu permite numai sesiuni de lucru prin retea, ci si alte aplicatii.
Astfel, o data deschis un canal securizat, pachetele vehiculate pot fi
destinate mai multor aplicatii, lista celor mai importante fiind:
- sesiune de lucru (in mod text)
- transfer de fisiere (cunoscut si ca sftp sau scp; exista
totusi o mica diferenta intre cele doua)
- forwardarea unor porturi TCP
- forwardarea unui server X (clientul SSH actioneaza ca server X pe
masina locala, dar cererile de la clientii X le forwardeaza serverului X de
pe masina server SSH)
- forwardarea unui agent de autentificare (vezi mai jos)
1.3. Autentificarea clientului SSH
Autentificarea clientrului se poate face prin parola sau prin criptografie
asimetrica. In cazul criptografiei asimetrice, cheia secreta trebuie
memorata pe discul masinii client (o cheie pentru criptografie asimetrica nu
poate fi memorata rezonabil de om). Stocarea cheii secrete pe disc fiind un
risc de securitate, SSH ofera posibilitatea stocarii cheii secrete criptate
folosind ca si cheie o fraza (memorabila de om). Pentru ca clientul SSH sa
nu ceara fraza-cheie pentru decriptarea cheii secrete, SSH ofera urmatorul
mecanism:
- Se lanseaza o aplicatie numita agent de autentificare. Aceasta
citeste cheia secreta criptata, cere fraza-cheie de decriptare si
decripteaza cheia secreta, pe care o tine in memoria RAM
- La lansarea unui client SSH, acesta incearca sa contacteze agentul de
autentificare - daca agentul ruleaza in acel moment. Comunicatia se face
local prin primitive sigure oferite de sistemul de operare al masinii client
- de exemplu, prin FIFO UNIX. Clientul SSH trimite agentului cheia de
sesiune, iar agentul ii returneaza semnatura.
- Optional, la deschiderea unei sesiuni SSH, se poate forwarda
conexiunea catre agentul de autentificare
Retele de calculatoare
5 Ian 2004
Radu-Lucian LUPSA