Junior
Ce este TLS?
sobes.tech AI
Răspuns de la AI
TLS (Transport Layer Security) este un protocol criptografic care asigură comunicarea sigură în rețea, de exemplu, între un browser web și un server.
Funcții cheie:
- Autentificare: Verificarea autenticității părților (de obicei cu ajutorul certificatelor X.509).
- Confidențialitate: Criptarea datelor transmise pentru a preveni accesul neautorizat.
- Integritate: Verificarea faptului că datele nu au fost modificate în timpul transmiterii.
Protocolul TLS funcționează la nivelul de transport al modelului OSI (sau mai sus, în funcție de implementare și context). A înlocuit SSL (Secure Sockets Layer). Versiunile actuale sunt TLS 1.2 și TLS 1.3.
În contextul Go, TLS este utilizat în biblioteca standard net/http pentru suport HTTPS.
package main
import (
"crypto/tls"
"net/http"
"log"
)
func main() {
// Exemplu de configurare a unui server HTTP cu suport TLS
// Sunt necesare fișierele de certificat și cheia privată
certFile := "server.crt"
keyFile := "server.key"
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Salut, lume sigură!"))
})
// Pornirea serverului HTTPS
log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}
Interacțiunea are loc în mai multe etape (Handshake):
- ClientHello: Clientul trimite o listă de versiuni TLS suportate, seturi de cifre și alți parametri.
- ServerHello: Serverul alege cei mai buni parametri dintre cei propuși de client.
- Certificate: Serverul trimite certificatul său.
- ServerKeyExchange (opțional): Schimb de chei de criptare.
- CertificateRequest (opțional): Serverul poate solicita un certificat de la client pentru autentificare reciprocă.
- ServerHelloDone: Serverul anunță că și-a încheiat partea de Handshake.
- Certificate (opțional): Clientul trimite certificatul său.
- ClientKeyExchange: Clientul trimite un secret pre-maestru criptat cu cheia publică a serverului, utilizat pentru generarea cheilor de sesiune.
- CertificateVerify (opțional): Clientul verifică semnătura serverului.
- ChangeCipherSpec: Clientul și serverul indică că vor trece la utilizarea cheilor de sesiune negociate.
- Finished: Finalizarea Handshake-ului cu schimbul de mesaje criptate cu noile chei, pentru verificarea succesului procedurii.
TLS asigură un nivel fiabil de securitate pentru comunicațiile de rețea, fiind standard pentru HTTPS și alte protocoale care necesită protecția datelor.