Junior
Šta je TLS?
sobes.tech АИ
Одговор од АИ
TLS (Transport Layer Security) — to je kriptografski protokol koji obezbeđuje sigurnu komunikaciju u mreži, na primer, između veb pregledača i servera.
Ključne funkcije:
- Autentifikacija: Provera autentičnosti strana (obično korišćenjem X.509 sertifikata).
- Poverljivost: Šifrovanje prenesenih podataka radi sprečavanja neovlašćenog pristupa.
- Integritet: Provera da podaci nisu izmenjeni tokom prenosa.
Protokol TLS radi na transportnom sloju OSI modela (ili višem, u zavisnosti od konkretne implementacije i konteksta). Zamenio je SSL (Secure Sockets Layer). Trenutne verzije su TLS 1.2 i TLS 1.3.
U kontekstu Go, TLS se koristi u standardnoj biblioteci net/http za podršku HTTPS.
package main
import (
"crypto/tls"
"net/http"
"log"
)
func main() {
// Primer podešavanja HTTP servera sa TLS podrškom
// Potrebni su fajlovi sertifikata i privatnog ključa
certFile := "server.crt"
keyFile := "server.key"
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, secure world!"))
})
// Pokretanje HTTPS servera
log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}
Interakcija se odvija u nekoliko faza (Handshake):
- ClientHello: Klijent šalje listu podržanih TLS verzija, skupova šifri i drugih parametara.
- ServerHello: Server bira optimalne parametre iz ponuđenih od strane klijenta.
- Certificate: Server šalje svoj sertifikat.
- ServerKeyExchange (opciono): Razmena šifri.
- CertificateRequest (opciono): Server može zatražiti sertifikat klijenta za obostranu autentifikaciju.
- ServerHelloDone: Server obaveštava o završetku svoje strane Handshake-a.
- Certificate (opciono): Klijent šalje svoj sertifikat.
- ClientKeyExchange: Klijent šalje pre-šifrovani tajni ključ, šifrovan javnim ključem servera, koji se koristi za generisanje sesijskih ključeva.
- CertificateVerify (opciono): Klijent proverava potpis servera.
- ChangeCipherSpec: Klijent i server obaveštavaju o prelasku na korišćenje usaglašenih sesijskih ključeva.
- Finished: Finalizacija Handshake-a sa razmenom poruka, šifrovana novim ključevima, za proveru uspešnosti procedure.
TLS obezbeđuje pouzdan nivo sigurnosti za mrežne komunikacije, kao standard za HTTPS i druge protokole koji zahtevaju zaštitu podataka.