Junior
Čo je TLS?
sobes.tech AI
Odpoveď od AI
TLS (Transport Layer Security) — je kryptografický protokol, ktorý zabezpečuje bezpečnú komunikáciu v sieti, napríklad medzi webovým prehliadačom a serverom.
Kľúčové funkcie:
- Autentifikácia: Kontrola pravosti strán (zvyčajne pomocou X.509 certifikátov).
- Dôvernosť: Šifrovanie prenášaných dát na zabránenie neoprávneného prístupu.
- Integrita: Kontrola, že dáta neboli počas prenosu zmenené.
Protokol TLS pracuje na transportnej vrstve modelu OSI (alebo vyššej, v závislosti od konkrétnej implementácie a kontextu). Nahradil SSL (Secure Sockets Layer). Aktuálne verzie sú TLS 1.2 a TLS 1.3.
V kontexte jazyka Go sa TLS používa v štandardnej knižnici net/http na podporu HTTPS.
package main
import (
"crypto/tls"
"net/http"
"log"
)
func main() {
// Príklad nastavenia HTTP servera s podporou TLS
// Sú potrebné súbory certifikátu a súkromného kľúča
certFile := "server.crt"
keyFile := "server.key"
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, secure world!"))
})
// Spustenie HTTPS servera
log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}
Interakcia prebieha v niekoľkých etapách (Handshake):
- ClientHello: Klient odosiela zoznam podporovaných verzií TLS, súborov šifrovania a ďalších parametrov.
- ServerHello: Server vyberá optimálne parametre z navrhnutých klientom.
- Certificate: Server odosiela svoj certifikát.
- ServerKeyExchange (voliteľné): Výmena šifrovacích kľúčov.
- CertificateRequest (voliteľné): Server môže požiadať o certifikát klienta na obojstrannú autentifikáciu.
- ServerHelloDone: Server oznamuje ukončenie svojej časti Handshake.
- Certificate (voliteľné): Klient odosiela svoj certifikát.
- ClientKeyExchange: Klient odosiela predbežne zdieľaný tajný kľúč, šifrovaný verejným kľúčom servera, ktorý sa používa na generovanie relančných kľúčov.
- CertificateVerify (voliteľné): Klient overuje podpis servera.
- ChangeCipherSpec: Klient a server oznamujú prechod na používanie dohodnutých relančných kľúčov.
- Finished: Finalizácia Handshake s výmenou správ, šifrovaných novými kľúčmi, na overenie úspešnosti procedúry.
TLS zabezpečuje spoľahlivú úroveň bezpečnosti pre sieťové komunikácie, ako štandard pre HTTPS a ďalšie protokoly vyžadujúce ochranu dát.