Intelegerea functionarii protocolului SSL (si TLS) este destul de importanta in multe roluri sau joburi si de ce nu interview-uri pe la joburi :)). Dar in acelasi timp si bine de stiut pentru noi, ca utilizatori, mai ales daca suntem fascinati de partea mai tehnica. Si daca nu de altceva, din cauza ca interactionam probabil zilnic cu el.
In acest articol voi incerca sa explic cum functioneaza un certificat SSL si cum functioneaza SSL si TLS. Ideea e sa fie cat mai usor de inteles si nu nenecesar de tehnic, deci probabil voi lasa niste lucruri neexplicate sau efectiv omise. (si unii termeni nu vor fi tradusi in romana pentru ca suna anapoda)
SSL vine de la Secure Sockets Layer si desi a fost inlocuit de un protocol mai modern numit TLS (Transport Layer Security), majoritatea fac referire la tehnologia asta ca si la „SSL”.
SSL tine datele utilizatorilor in siguranta prin criptare – SSL/TLS fiind protocoale criptografice, autentifica identitatea unui website si opreste atacatorii din a manipula comunicarile in internet.
Principalul uz pentru SSL/TLS este securizarea comunicatiilor dintre un client si un server. Dar poate fi folosit si pentru a securiza servicii de email, voIP si alte sisteme de comunicatii.
Cum functioneaza SSL/TLS?
Niste lucruri de stiut, ca sa putem intelege mai bine cum functioneaza SSL/TLS:
- Comunicarea securizata incepe cu un handshake (TLS handshake). In cadrul acestui proces de handshake, cele 2 parti implicate in comunicare deschid o conexiune sigura si fac schimb de chei publice.
- In timpul handshake-ului de mai sus, cele 2 parti genereaza chei de sesiune. Aceste chei de sesiune cripteaza si decriptreaza toate comunicarile de dupa TLS handshake.
- E bine de stiut ca fiecare sesiune noua are chei de sesiune diferite fata de o sesiune anterioara.
- TLS se asigura ca cealalta parte implicata, de partea serverului sau a site-ului cu care utilizatorul interactioneaza, este cine zice ca este.
- Un alt aspect foarte important este ca TLS se asigura ca datele nu au fost alterate, caci impreuna cu transmisiile de date este inclus si un ‘message authentication code’ (MAC).
Atunci cand un utilizator trimite date unui website (dai un click, completezi un formular, etc.) dar si cand website-ul iti trimite date, TLS se asigura ca aceste date sunt criptate. Iar aceste date criptate trebuiesc decriptate de una dintre parti folosind o cheie.
Ce este o sesiune? O sesiune este o relatie de comunicare in curs dintre doua entitati. Fiecare conexiune SSL/TLS implica o sesiune pe rand, dar acea sesiune poate fi folosita pentru mai multe conexiuni intre cele 2 entitati – simultan sau secvential. Sesiunea folosita in cadrul unei conexiuni poate fi inlocuita de o alta sesiune.
Deci SSL/TLS ma ascunde de providerul de net?
Nu confunda termenii astia care suna bine, criptare, siguranta, bla bla, cu ascunsul sau navigarea anonima pe internet.
Da, intr-o oarecare masura, providerul de net nu va putea vedea ce faci pe acel website. Dar stie ca te-ai conectat la el. De exemplu pot vedea ca te-ai conectat la YouTube sau un anumit domeniu. Dar nu pot vedea exact la ce video te-ai uitat (URL-ul exact si complet), ce anume ai cautat in bara de cautare, etc.
Din nou, asta nu inseamna mai nimic. Este ok ca si masura de siguranta, dar fii sigur ca prezenta unei conexiuni SSL/TLS intre tine si website-ul pe care il navighezi nu este nici pe departe suficienta ca masura de protectie/ascundere de providerul de net. In discutie ar mai intra si DNS si in mod ideal un VPN, si alte lucruri… o discutie ce merita propriul articol.
Handshake-ul TLS
Dupa cum am zis mai sus, o sesiune comunicare incepe cu un handshake TLS.
Important: handshake-ul TLS foloseste criptare asimetrica. Asta inseamna ca sunt folosite doua chei diferite in cele 2 capete ale conversatiei client-server. Iar asta este posibil din cauza tehnicii public key cryptography.
In timpul acestui handshake, clientul si serverul folosesc cheile publice si private (de obicei, depinde) ca sa schimbe date generate aleatoriu. Aceste date sunt apoi folosite pentru a crea chei noi pentru criptare, denumite chei de sesiune.
Important: cheile de sesiune sunt folosite pentru criptare simetrica. Spre deosebire de criptarea asimetrica, in criptarea simetrica cele 2 parti implicate intr-o conversatie folosesc aceleasi chei de sesiune. Deci, dupa handshake-ul TLS, ambele parti folosesc aceleasi chei de sesiune pentru criptarea datelor transmise.
O data ce cheile de sesiune sunt in uz, cheile publice si private nu sunt mai folosite. Totusi, cheile de sesiune sunt chei temporare, ce nu vor mai fi folosite dupa ce sesiunea inceputa este terminata. Fiecare sesiune are propriile ei chei de sesiune unice si sunt mereu re-create alte chei la inceputul fiecarei sesiuni.
Ce ese un certificat SSL?
Un certificat SSL este un fisier instalat pe serverul unui website. Efectiv este un fisier ce contine cheia publica si identitatea detinatorului website-ului, precum si alte informatii. Fara un certificat SSL, traficul unui website nu poate fi criptat cu TLS.
Certificatele SSL pot fi si self-signed, adica create de oricine (sa zicem detinatorul website-ului). Totusi, browserele nu recunosc acest tip de certificate ca fiind la fel de… de incredere ca un certificat emis de o autoritate certificata.
Cum poate obtine un website sau un magazin online un certificat SSL?
De la o autoritate certificata. Exista si provideri ce nu cer o taxa dar necesita niste cunostinte tehnice precum Let’s Encrypt, dar si provideri ale caror certificate vin cu o taxa anuala.
Autoritatea certificata este importanta in toata treaba asta, caci ea confirma faptul ca detinatorul website-ului este cine zice ca este. De asemenea, ea pastreaza o copie a certificatelor emise.
Care-i diferenta dintre HTTP si HTTPS?
Prezenta unui certificat SSL legitim, emis de o autoritate certificata. S-ul din HTTPS vine de la cuvantul ‘secure’. Iar prezenta unei conexiuni HTTPS (in bara de browser sa zicem, cu lacat inchis si netaiat sau cu verde in functie de browser), ne confirma ca site-ul pe care ne aflam este cine pretinde ca este si traficul este criptat prin TLS.
Pentru a incuraja un internet mai sigur, majoritatea browserelor vor afisa un avertisment pentru site-urile sau magazinele care nu au un certificat SSL (deci folosesc HTTP in loc de HTTPS), denotand ca este posibil ca ceva sa nu fie in regula. De asemenea, prezenta unui certificat SSL este un semnal ok si pentru Google si cred ca devine tot mai imposibil sa obtii pozitii bune in SEO fara un certificat SSL.
Dar asta-i pentru alta discutie… oricum ideal ar fi sa vizitam si interactionam doar cu site-uri ce folosesc HTTPS cu un certificat valid. Lipsa HTTPS impreuna cu alti identificatori ne pot arata daca suntem unde credem sau avem de-a face cu o incercare de phishing.
Concluzii
Ar trebui sa fie suficient pentru intelegerea la suprafata a SSL/TLS. In articole viitoare, daca I se pare cuiva interesant astfel de continut in Romana, putem explora mai in detaliu ce se intampla in timpul unui TLS handshake, de cate tipuri este TLS, ce algoritmi de criptare sunt sau pot fi folositi si altele.
Poate te intereseaza sa aflii mai multe si despre DNS, adresa IP sau ce este un nume de domeniu.
Daca te-a ajutat acest articol sau ti s-a parut util, pe peTech.ro l-ar ajuta un share!