Transport Layer Security ( TLS ) sau "siguranța transportului stratului" și predecesorul său Secure Sockets Layer ( SSL ) sau "Layer prize sigure" sunt protocoale de securitate comerciale pentru rețele de calculatoare , inclusiv pe Internet . Protocolul SSL a fost inițial dezvoltat de Netscape Communications Corporation pentru browserul său. Organismul de standardizare IETF a continuat să-l dezvolte, redenumindu-l Transport Layer Security (TLS) . Uneori vorbim de SSL / TLS pentru a desemna indiferent SSL sau TLS .
TLS (sau SSL ) funcționează pe un mod client-server . Acesta îndeplinește următoarele obiective de securitate:
Protocolul este utilizat pe scară largă, iar implementarea acestuia este facilitată de faptul că protocoalele de nivel de aplicație, cum ar fi HTTP , nu trebuie modificate drastic pentru a utiliza o conexiune sigură, ci doar implementate deasupra acestuia. SSL / TLS , care pentru HTTP a dat protocolului HTTPS .
Un grup special de lucru IETF a permis crearea TLS și a echivalentului său în modul neconectat UDP , DTLS . De când a fost preluat de IETF , protocolul TLS a trecut prin patru versiuni: TLS v1.0 în 1999, TLS v1.1 în 2006, TLS v1.2 în 2008 și TLS v1.3 în 2018.
Pe măsură ce internetul a crescut, tot mai multe companii comerciale au început să ofere cumpărături online pentru persoane fizice. Oferta a crescut constant, dar veniturile din comerțul electronic au rămas modeste până când clienții au avut suficientă încredere în plata cu cardul de credit. Una dintre modalitățile de securizare a acestei plăți a fost utilizarea protocoalelor de autentificare și criptare, cum ar fi SSL. Sesiunea criptată este utilizată pentru a împiedica o terță parte să intercepteze datele sensibile care trec prin rețea: numărul cardului la plata cu card bancar , parola atunci când utilizatorul se identifică pe un site etc.
Cu un sistem SSL, securitatea a fost îmbunătățită semnificativ și riscul pentru client a fost redus mult, în comparație cu zilele în care plata prin internet era încă o tehnologie emergentă. Deși, la fel ca orice sistem de criptare, SSL / TLS nu poate fi niciodată complet infailibil, numărul mare de bănci și site- uri de comerț electronic care îl utilizează pentru a proteja tranzacțiile clienților lor poate fi văzut ca o dovadă a rezistenței sale.
Începând din 2009, TLS este utilizat de majoritatea serverelor web . Utilizatorul de Internet poate recunoaște că o tranzacție este criptată cu mai multe semne:
Prima versiune a SSL lansată, SSL 2.0, avea o serie de defecte de securitate, inclusiv posibilitatea de a forța utilizarea algoritmilor de criptare mai slabi, sau lipsa de protecție pentru strângerea mâinii și comunicarea. posibilitate pentru un atacator de a efectua atacuri de trunchiere. Protocoalele PCT 1.0, apoi SSL 3.0, au fost dezvoltate pentru a rezolva cea mai mare parte a acestor probleme, al doilea devenind rapid cel mai popular protocol pentru securizarea schimburilor pe Internet.
TLS nu este diferit structural de versiunea 3 a SSL, dar schimbările în utilizarea funcțiilor hash înseamnă că cele două protocoale nu sunt direct interoperabile. Cu toate acestea, TLS, ca și SSLv3, încorporează un mecanism de compatibilitate cu versiunile anterioare, adică la începutul fazei de negociere, clientul și serverul negociază cea mai bună versiune a protocolului disponibilă tuturor. Din motive de securitate, detaliate în RFC 6176 publicat în 2011, compatibilitatea TLS cu versiunea 2 a SSL este abandonată.
Generarea de chei simetrice este puțin mai sigură în TLS decât în SSLv3, în măsura în care nici un pas al algoritmului nu se bazează exclusiv pe MD5 pentru care au apărut puncte slabe în criptanaliză .
Prima versiune profesională a TLS 1.3 este wolfSSL , lansată în mai 2017.
Rețelele industriale moderne care operează în TCP / IP utilizează din ce în ce mai mult securitatea TLS. Astfel, protocoalele pentru comanda de control a rețelelor electrice precum IEC-61850, IEC-60870 și DNP3 combină TLS pentru a proteja împotriva atacurilor cibernetice.
Majoritatea browserelor sunt, de asemenea, clienți TLS. Browserele web care acceptă cea mai recentă versiune TLS 1.2 în mod implicit sunt:
Marii dezvoltatori de browsere web au anunțat că își vor încheia asistența pentru TLS 1.1 și versiunile anterioare începând cu primăvara anului 2020.
HTTPS Everywhere este o extensie pentru browserul web care permite extinderea utilizării SSL / TLS pe anumite site-uri. Permite criptarea pe paginile în care este dezactivată în mod normal. Acest lucru poate funcționa în mod evident numai dacă site-ul în cauză acceptă deja TLS. Extinderea a fost întreținută în comun de proiectul Tor și EFF din 2010.
În majoritatea cazurilor, utilizatorul autentifică serverul TLS la care se conectează. Această autentificare se realizează prin utilizarea unui certificat digital X.509 emis de o autoritate de certificare (CA). Aplicațiile web pot utiliza autentificarea stației de lucru client folosind TLS. Apoi este posibil să se ofere autentificare reciprocă între client și server. Certificatul de client poate fi stocat în format software pe stația de lucru client sau furnizat de un dispozitiv hardware ( smart card , jeton USB). Această soluție face posibilă oferirea unor mecanisme puternice de autentificare .
Când un utilizator se conectează la un site web care folosește TLSv1.2 (sau mai mic), au loc următorii pași:
Opțional: dacă serverul solicită, de asemenea, clientului să se autentifice, acesta îi trimite propriul certificat împreună cu cheia de sesiune. Serverul continuă după cum se detaliază la punctul 3 pentru a verifica dacă certificatul clientului este valid.
De la TLSv1.3 , schimbul cheii de sesiune trebuie să se facă prin Diffie-Hellman cu curbe eliptice ( ECDHE ): RSA nu mai poate fi folosit pentru aceasta.
În 2001, Serge Vaudenay a descoperit un atac de canal auxiliar împotriva SSL. Ca urmare a actualizării standard, acest atac este acum învechit și nu mai poate fi folosit. Acest atac a profitat de o implementare slabă a căptușelii care a fost utilizată atunci când intrările erau de dimensiuni variabile. Modul de criptare CBC ( înlănțuirea blocurilor de cifrare ) este de a împărți datele în mai multe blocuri de aceeași dimensiune și criptarea modului concatenat (rezultatul anterior este utilizat în criptarea ulterioară). Atacul Vaudenay a folosit timpii de răspuns ai serverelor în caz de erori în timpul umplerii. Cu puțin noroc, a fost posibil să aflăm ultimele date care fuseseră trimise și să le recuperăm. Cu toate acestea, atacul a fost ineficient cu criptarea de tip RC4 și a fost valabil numai în anumite condiții. În ciuda tuturor, a fost utilizat cu succes împotriva anumitor „mesaje web” care au trimis aceleași date de mai multe ori .
În martie 2014, a fost descoperită o vulnerabilitate software în biblioteca OpenSSL: Heartbleed , introdusă din greșeală într-o actualizare a OpenSSL făcută cu doi ani mai devreme. Această defecțiune a fost larg mediatizată, inclusiv în mass-media generală, deoarece viermele Te iubesc fusese în special în 2000.
La 15 octombrie 2014, o echipă de cercetare de la Google a identificat o eroare în proiectarea SSLv3, permițând decriptarea conținutului. Acest atac a fost numit POODLE pentru Padding Oracle On Downgraded Legacy . Este prezent numai în SSLv3.
Pe 2 martie 2016, cercetătorii detaliază defectul numit DROWN . Acesta constă în utilizarea versiunii vechi SSL v2 pentru a decripta tehnologia TLS v1.2.
Obiectivul protocolului DANE este de a corecta anumite puncte slabe din TLS, în special pentru atacurile de tip MIMT .
7 - stratul de aplicare | HTTP , SMTP , FTP , SSH , IRC , SNMP , SIP ... |
6 - strat de prezentare | |
5 - strat sesiune | TLS, SSL, utilizator SSH , NetBIOS |
4 - strat de transport | TCP , UDP , SCTP , RTP , DCCP ... |
3 - strat de rețea | IPv4 , IPv6 , ARP , IPX ... |
2 - strat de legătură | Ethernet , WiFi 802.11 , Token ring , FDDI , ... |
1 - strat fizic | Cablu, fibră optică , unde radio ... |
În stiva de protocol TCP / IP , SSL se află între stratul aplicației (cum ar fi HTTP , FTP , SMTP etc.) și stratul de transport TCP .
Cea mai obișnuită utilizare a acestuia rămâne însă sub HTTP. SSL este implementat de stratul de sesiune al stivei, care are două consecințe:
Autentificarea serverului și clientului se poate face prin certificate electronice sau prin secrete pre-partajate (sau cheie pre-partajată) . Autentificarea este opțională.
Mesajele schimbate prin TLS se numesc înregistrări. De obicei, aceste mesaje sunt încapsulate în datagrame TCP. O variantă pe UDP există și se numește DTLS . Există patru tipuri de înregistrări:
Securitatea se realizează pe de o parte prin criptare asimetrică , cum ar fi criptarea RSA , care permite, după autentificarea cheii publice a serverului, constituirea unui secret partajat între client și server, pe de altă parte printr-o criptare simetrică (mult mai rapid decât cifrele asimetrice), cum ar fi AES , care este utilizat în faza de schimb de date, cheile de criptare simetrică fiind calculate din secretul partajat. O funcție hash , cum ar fi SHA-1 , este, de asemenea, utilizată, printre altele, pentru a asigura integritatea și autentificarea datelor (de exemplu, prin HMAC ).
Mai precis, mesajele de date ale aplicației sunt criptate folosind o cheie de criptare și un algoritm de criptare bloc simetric, cum ar fi AES 128 sau pe flux, cum ar fi CHACHA20 . Acestea sunt autentificate fie printr-o funcție HMAC , fie direct prin modul de operare al cifrului bloc simetric.
Cheile de criptare și cheile HMAC sunt generate dintr-un secret schimbat între cei doi colegi ( pre-master secret) , datele aleatorii schimbate în timpul fazei de strângere de mână și utilizarea unei funcții de derivare a cheilor bazată pe HMAC. Acest schimb secret poate fi autentificat (sau nu) prin utilizarea unui algoritm de semnătură digitală , cum ar fi DSA sau algoritmul RSA.
În total, există cinci tipuri de chei criptografice utilizate în timpul unei sesiuni TLS:
Suitele criptografice utilizate au următorul format:
unde KE indică un algoritm de schimb secret, CIPHER un algoritm de criptare simetric și HASH o funcție hash . Funcția HMAC este derivată din funcția hash.
De exemplu, suita criptografică TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 indică faptul că peer poate utiliza algoritmul de schimb efemer Diffie-Hellman pe curbe eliptice autentificate de ECDSA semnătură algoritmul, algoritmul AES 128 de criptare simetrică în GCM modul și funcția hash SHA256.
În versiunea 1.2, algoritmul de schimb secret poate fi RSA sau o variantă a algoritmului Diffie-Hellman (autentificat sau nu, efemer sau nu, pe curbe eliptice sau nu), în timp ce pentru versiunea 1.3 este permis doar algoritmul efemer Diffie-Hellman și funcția de semnătură digitală este specificată în extensiile la mesajele ClientHello, ServerHello și HelloRetryRequest din faza Handshake .