Sunteți pe pagina 1din 8

Măsuri de securizare a datelor transmise.

Protocoale de securizare: SSH, SSL, TLS


Protocoale de securitate SSL/TLS și SSH
1. Introducere
1.1 Definirea temei
Acest proiect dorește să ofere răspunsuri pertinente asupra nivelului de
securitate din internet precum și prezentarea celor mai folosite și răspândite
protocoale de securitate: SSL/TLS și SSH.

1.2 Contextul problemei


Internetul a deschis o mulțime de oportunități odată cu expansiunea rapidă la
nivel global. Aproape orice lucru ne leagă de internet în zilele noastre. Oamenii
pot face achiziții și tranzacții on-line. Putem reporni orice sistem informatic sau
program de pe un alt calculator direct de la computerul personal.
Deoarece există multe vulnerabilități, hackeri pot obține ilegal informații
personale (date bancare, CNP, parole, fișe medicale, etc.) și accesul la
programele și documentele personale. Prin urmare, nevoia de securitate web
este mai importantă ca niciodată în acest moment.
1.3 Definirea protocoalelor
1.3.1 SSL (Secure Sockets Layer) este un acronim care reprezintă un protocol
web dezvoltat de compania Netscape pentru a transmite fără risc documente
private prin Internet. Pentru a cripta datele, SSL utilizează un sistem criptografic
cu două chei: una publică, cunoscută de oricine, și una privată, secretă,
cunoscută numai de destinatarul mesajului. Au fost oferite mai multe actualizări
ale prezentului protocol, astăzi versiunea cea mai nouă fiind SSL 3.0, devenită
standard. Versiunea 3.0 este suportată de majoritatea serverelor Web, fiind
folosită în continuare de foarte multe persoane .
1.3.2 TLS (Transport Layer Security) – este succesorul protocolului SSL. Chiar
dacă există anumite diferențe între TLS și SSL, protocoalele sunt foarte
asemănătoare. Obiectivul protocolului TLS este de a opri interceptarea
“mesajului fals”, acesta oferind un pachet complect de securitate criptografică
între informațiile confidențiale transmise între servere. Două mari avantajele ale
protocolului TLS sunt independența și transparența.
1.3.3 Secure Shell (SSH) este un protocol de rețea criptografic care permite ca
datele să fie transferate folosind un canal securizat între dispozitive dintr-o
anumită rețea. Cele două mari versiuni ale protocolului sunt SSH1 și SSH2 .
Protocolul SSH este folosit cu precădere în sistemele de operare linux, unix și
windows. SSH a fost dezvoltat din dorința de a înlocui vechiul protocol Telnet și
al altor protocoale nesigure de acces de la distanță, care trimit informația, în
special parola, în clartext, făcând posibilă descoperirea ei prin analiza traficului.
Criptarea folosita de SSH intenționează să asigure confidențialitatea și
integritatea datelor transmise printr-o rețea nesigură cum este Internetul
2. Analiza detaliată
2.1 Protocolul SSL/TLS
Scopul principal al protocolului SSL/TLS este de a oferi intimitate și fiabilitate
între două aplicații care comunică între ele. SSL/TLS criptează datele cu caracter
sensibil ale utilizatorului atunci când sunt trimise spre un server web de-a
lungul unei rețele nesigure.
Protocolul SSL/TLS este compus din două straturi. Primul strat denumit
Handshake protocol ( strângere de mână) conține la rândul său alte trei
subprotocoale: Handshake, Change Cipher Spec și Alert. Al doilea strat este
definit de protocolul Record .
A) Handshake protocol
a.1) Handshake – Acest subprotocol este folosit pentru schimbul de informații
inițiale dintre client și server. Informațiile schimbate între client și server constă
în ID-ul de sesiune, certificarea peer, specificațiile cifrului, algoritmul de
compresie utilizat și informația confidențială care este folosită pentru a genera o
cheie
a.2) Change Cipher Spec – Este folosit pentru a partaja informațiile criptate
între client și server. Acesta transmite informații în cealaltă parte a sesiunii
SSL/TLS referitoare la modul de trimitere a unui nou set de chei criptografice.
a.3) Alert – Sunt mesaje de alertă care indică o schimbare a statutului sesiunii
sau o stare de eroare. Există o mare varietate de alerte care notifică clientul sau
serverul web implicat în sesiunea SSL/TLS despre modul și condițiile de
funcționare. Alertele sunt trimise de obicei atunci când conexiunea este închisă,
nu este primit un anumit mesaj, sau nu poate fi decriptat un alt mesaj.
Stratul Handshake
Protocolul Handshake folosește certificatul x509 pentru procesul de
autentificare, certificat care oferă „dovezi” despre identitatea părții care deține
certificatul precum și despre cheia privată corespunzătoare. Astfel de certificate
digitale sunt eliberate de o autoritate de sine stătătoare. Certificatele conțin
perioada de valabilitate, cheia publică, semnătura digitală și serial number-ul
distinct.
Autoritatea CA confirmă identitatea solicitantului, iar mai apoi îi emite acestuia
certificatul digital solicitat. De asemena autoritatea poate reînnoi sau revoca un
anumit certificat digital.
Criptarea
Protocolul SSL/TLS folosește două tipuri distincte de chei criptografice:
a) Cheia simetrică – aceeași cheie este folosită atât pentru criptarea cât și
pentru decriptarea mesajului. Dacă cele două părți doresc să facă schimb de
mesaje criptate în siguranță, trebuie să dețină o copie a aceeași cheie simetrice.
Acest timp de cheie se folosește în cazul criptării unor cantități mari de date,
deoarece calculul de criptare și decriptare este mult mai rapid față de cheia
asimetrică.
b) Cheia asimetrică (sau cheia publică) – această cheie este obținută printr-un
proces matematic mai complex. Una dintre chei este făcută publică de
autoritatea CA în certificatul digital atribuit titularului, iar cealaltă cheie este
privată nefiind dezvăluită nimănui. Aceste chei funcționează împreună formând
o cheie principală, iar dacă o cheie ( publică) este folosită pentru criptarea
datelor, cealaltă cheie ( privată) este folosită pentru decriptarea acestora și vice-
versa .
B) Stratul Record
La acest nivel, protocolul record (înregistrare) primește și criptează toate datele
provenite din stratul aplicației și îl pregătește pentru expedierea în următorul
strat. (stratul transport). Datele sunt prelucrate, iar mai apoi fragmentate în
dimensiuni apropiate algoritmului de criptare, li se atribuie adresa unică MAC,
iar mai apoi sunt criptate (sau decriptate) folosind informațiile care au fost
negociate în timpul protocolului Handshake .
În imaginea de mai jos se poate observa organizarea interna a protocolului
TLS/SSL și modul de funcționare al acestuia

Figura 1 Organizarea protocolului SSL/TLS


2.2 Protocolul SSH
Scopul principal al protocolului SSH este de a îmbunătăți securitatea, pe de
Internet. Acesta încearcă să facă acest lucru prin securizarea canalului prin care
sunt transmise informațiile între participanți. Pentru a asigura confidențialitatea
și integritatea informațiilor interschimbate, SSH se folosește de criptarea cu chei
asimetrice. Utilizatorul deține o pereche de chei: una publică și una privată. În
timp ce cheia publică se trimite stației de la distanță (eng. remote) cu care se
dorește comunicarea, cea privată rămâne tot timpul pe stația locală și trebuie
protejată de public. De ce cheia publică trebuie trimisă stației de la distanță?
Pentru ca aceasta să o poată folosi la decriptarea datelor primite în format
securizat .
Protocolul SSH este format din trei componente majore: Transport Layer –
protocol care prevede autentificarea serverului, confidențialitatea și integritatea
perfectă a secretului. La nivelul acestui strat, dacă utilizatorul are o cheie care a
fost compromisă din varii motive aceasta nu afectează securizarea sesiunilor
anterioare. User Authentication– protocol care autentifică clientul care dorește
să folosească tunelul în conexiunea cu serverul. Connection Protocol – acest
protocol multiplexează tunelul criptat în mai multe canale logice. Aceste canale
sunt deasupra conexiunii SSH.
În imaginea de mai jos se poate observa organizarea internă a protocolului SSH:

Figura 2 Organizarea protocolului SSH


2.3 Exemple de sistem
2.3.1 Comunicarea dintre client și server folosind protocolul SSL/TLS
Protocolul SSL permite schimbul de înregistrări; fiecare înregistrare poate fi, în
mod opțional, compresată, criptată și asignată cu un cod de autentificare al
mesajului (MAC). Fiecare înregistrare are un câmp numit content_type care
specifică care protocol este folosit.
Când conexiunea demarează, nivelul înregistrare încapsulează un alt protocol,
de tip handshake protocol, pentru care câmpul content_type are valoarea 22.
Clientul trimite și primește mai multe structuri de handshake:
▪ Trimite un mesaj ClientHello în care specifică lista de metode de criptare
care sunt suportate, metodele de compresie și cea mai actuală versiune a
protocolului cunoscută. De asemenea transmite o secvență aleatoare de biți
care va fi folosită ulterior.
▪ Primește mai apoi un ServerHello, în care serverul alege parametrii
conexiunii din mulțimea de opțiuni oferită de client mai devreme.
▪ Când parametrii conexiunii sunt cunoscuți, clientul și serverul schimbă
certificatele (în funcție de algoritmul de codare pentru chei publice ales).
Aceste certificate sunt în prezent de tip X.509, dar exista de asemenea un
document care specifică utilizarea certificatelor bazate pe OpenPGP.
▪ Serverul poate solicita un certificat clientului, astfel încât conexiunea să fie
mutual autentificată.
▪ Clientul și serverul negociază un secret comun numit “master secret”,
existând aici opțiunea folosirii rezultatului schimbului Diffie-Hellman, sau
mai simplu prin criptarea secretului cu cheia privată și decriptarea acesteia
cu cheia privata a partenerului. Toate datele legate de chei sunt derivate din
acest “master secret” (și de valori generate aleator de către client sau de
către server), care sunt schimbate atent prin funcția atent proiectată de
“Funcții pseudoaleatore” .
TLS/SSL au o varietate de măsuri de securitate:
▪ Numerotarea tuturor înregistrărilor cu numere de secvență în MAC-uri.
▪ Folosirea unui mecanism de sumarizare a mesajului extins prin folosirea
unei chei (ca numai dacă se cunoaște cheia să poți verifica MAC. Acest lucru
este specificat în RFC 2104).
▪ Protecție împotriva unor tipuri cunoscute de atacuri (incluzând atacuri de
tip “man in the middle”), precum cele de tip forțare la folosirea a unor
versiuni mai vechi (și mai puțin sigure) ale protocolului, sau versiuni mai
puțin sigure ale algoritmilor de codare.
▪ Mesajul care încheie handshake (“Finished”) care trimite un hash all tuturor
datelor schimbate între cele două părți.
▪ Funcțiile pseudoaleatore împart datele în două jumătăți și le procesează cu
doi algoritmi diferiți de hash (MD5 și SHA), și apoi face un XOR între ele. În
acest fel se protejează și în cazul în care pentru unul dintre aceste două
algoritme se găsește o vulnerabilitate.
În imaginea de mai jos se poate urmări modul de comunicare dintre un Client și
un Server folosind protocolul SSL/TLS:

Figura 3 Comunicarea dintre client și server cu ajutorul protocolului SSL/TLS


2.3.2 Comunicarea dintre client și server folosind protocolul SSH
Primul pas constă în autentificarea clientului spre server. Întotdeauna clientul
este cel care inițiază conexiunea. După ce serverul este autentificat, iar clientul
este sigur de identitatea serverului, se formează un canal securizat simetric între
client și server.
Acest canal securizat va fi utilizat pentru schimbul de chei, parole și alte lucruri.
▪ Se realizează conexiunea TCP spre portul 22 ( port oficial asignat
protocolului SSH). În acest pas clientul obține informații referitoare la
versiunea protocolului suportată de server și versiunea protocolului SSH. În
cazul în care clientul nu suportă versiunea SSH a serverului conexiunea va
înceta.
▪ După decizia clientului de a continua conexiunea se trece la Protocolul
Binary Pacher, protocol care conține un pachet cu o lungime de 32 biți.
▪ În pasul următorul serverul preia inițiativa și trimite clientului identitatea sa,
sub forma unei chei publice. Această cheie este creată în timpul instalară
serverului openssh.
▪ În cazul în care clientul realizează pentru prima dată conexiunea cu serverul
respectiv, acesta va fi informat printr-un mesaj de avertizare despre
identitatea serverului. (unele programe permit înregistrarea acestei
identității în memoria chase)
▪ Clientul mai primește o informație referitoare la cheia serverului. Această
cheie este regenerată la fiecare oră. Dimensiunea standard a cheii este de
789 biți.
▪ Clientul trimite un răspuns serverului prin procedeul denumit checkbytes 8
biți, iar la final serverul furnizează clientului informațiile despre metoda de
criptare și informațiile despre autentificare.
▪ În funcție de lista cu algoritmi de criptate suportată de server, clientul va
crea o cheie simetrică pe care o va trimite serverului. Aceasta cheie simetrică
va fi folosită pentru procesul de criptare și decriptare a datelor trimise prin
canal în timpul sesiunii. Tot în acest pas clientul va executa o dublă criptare.
Prima criptare este realizată de serverul gazdă iar a doua criptare este
executată de cheia serverului. Prin acest procedeul se asigură nivelul de
securitate optim, deoarece în cazul în care cheia de la serverul host este
compromisă mesajul tot nu va putea fi descifrat fiind păstrat în siguranță de
a doua criptare.
▪ După dezvăluirea identității a serverului către client, a venit momentul ca
clientul să se autentifice pe server. După ce clientul trimite cheia dublă
criptată va așteaptă mesajul de confirmare venit din partea serverului. Mesaj
care confirmă faptul că serverul este capabil să decripteze informațiile
primite de la client.
▪ Autentificarea clientului este realizată într-un canal criptat. Există mai multe
metode care pot fi utilizate de client în vederea autentificării:
▪ Cheia publică – aceasta este considerată de protocolul SSH cea mai
puternică metodă de autentificare. Se crează o cheie publică și se trimite
spre server. Informațiile criptate de cheia publică pot fi decriptate cu ajutorul
cheii private. După recepționarea serverului a cheii publice generate de către
client va genera un șir de 256 de biți pe care îl va trimite clientului. Clientul
se va folosi de cheia privată pentru a decripta șirul trimis de server iar apoi
va genera o valoare hash md5 pe care o va trimite serverului. Dacă server-ul
va decripta valoarea trimisă de client autentificarea este realizată cu succes.
▪ Parola – Este cea mai folosită metodă de autentificare în protocolul SSH.
Clientul trimite serverului o parola (care este criptată cu ajutorul cheii
simetrice) iar dacă mecanismul de autentificare al serverului recunoaște
parola, clientului îi este aprobat accesul conexiunii.
▪ Rhosts – Această metodă este recomandată dacă se dorește „trecerea cu
vederea” verificarea parolei. Se utilizează fișierul /.ssh/hnown_hosts pentru
autentificarea serverului și fișierul /.rhosts pentru autentificarea clientului. În
cazul setării prealabile a acestor fișiere se elimină în bună măsură furnizarea
parolei în mod interactiv.
2.4 Concluzii
Aceste două protocoale sunt cele mai răspândite în acest moment la nivel
global, fiind considerate foarte bune pentru securizarea informațiilor cu caracter
sensibil. Fiecare protocol se axează pe un anumit segment, astfel SSL/TLS se
folosește cu precădere în cazul autentificări pe o platformă online web-server (e-
commerce) iar protocolul SSH se folosește în cazul unei inițierii unei sesiuni de
lucru între un client și un server.
Chiar dacă sunt considerate protocoale sigure, atât SSL/TLS cât și SSH prezintă
anumite vulnerabilități. În cazul protocolului SSL/TLS cele mai multe
vulnerabilități au fost descoperite nu în „interiorul” protocolului ci mai degrabă
datorită factorilor externi. Astfel, de cele mai multe ori în cazul lacunelor de
securitate s-a descoperit că nu protocolul în sine a falimentat ci certificatele
digitale contrafăcute de persoane rău intenționate, combinate cu slaba
informare a utilizatorului privitoare la acest procedeu de autentificare. Practic
utilizatorul era momit să își introducă credințialele într-o pagină fantomă care
din punct de vedere al design-ului era asemănătoare cu pagina legitimă.
Un alt caz de vulnerabilitate este evidențiat de folosirea unei rețele publice sau
slab securizate de Wi-Fi. Datele transmise prin protocoalele mai sus amintite pot
fi interceptate într-o rețea slab securizată de către o persoană rău intenționată
cu ajutorul anumitor programe.
Folosirea acestor protocoale de securitate oferă un nivel ridicat de protecție al
datelor cu caracter sensibil, dar nu elimină total riscurile de interceptare a
acestor date către terțe dispozitive (web server, server, etc.). Informarea și
conștientizarea riscurilor la care se expune un utilizator atunci când dorește să
„iasă” în internet, reduc dramatic numărul cazurilor de compromitere a datelor.

2.5 Bibliografie
1. Transport Layer
Securiry, http://en.wikipedia.org/wiki/Transport_Layer_Security
2. T. Dierks, Ianuarie 1999, Protocolul TLS, pag
4, https://www.ietf.org/rfc/rfc2246.txt
3. Holly Lynne Mckinlei, Ghidul începătorului, protocolul
SSL/TLS, http://www.sans.org/reading-room/whitepapers/protocols/ssl-tls-
beginners-guide-1029
4. SSL/TLS protocolul
Handshake, http://msdn.microsoft.com/en-us/library/windows/desktop/
aa380513(v=vs.85).aspx
5. Criptarea în protocolul SSL/TLS, https://www.digicert.com/ssl-
cryptography.htm
6. Stratul Record în protocolul SSL/TSL, http://www.slashroot.in/record-protocol-
ssl-and-tls
7. Organizarea protocolului
SSL/TLS, http://blogs.msdn.com/b/kaushal/archive/2013/08/03/ssl-handshake-
and-https-bindings-on-iis.aspx
8. Introducere în protocolul
SSH, https://www.eldos.com/security/articles/1945.php?page=all
9. Bazele protocolului SSH, William Stallings, Internet jurnal protocol,
vol.12, http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_12-
4/124_ssh.html
10. Mecanismul de funcționare a protocolului
SSL/TLL, http://ro.wikipedia.org/wiki/Transport_Layer_Security#Mecanismul_de
_functionare
11. Modul de funcționare a protocolului SSH, Sarath Pillai, blog post,
2013, http://www.slashroot.in/secure-shell-how-does-ssh-work
12. Concluzii despre protocolul SSL/TLS, John Couzin, blog post,
2011, https://johncouzins.wordpress.com/2011/08/17/conclusion-on-ssltls/

S-ar putea să vă placă și