Sobes.tech
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):

  1. ClientHello: Klijent šalje listu podržanih TLS verzija, skupova šifri i drugih parametara.
  2. ServerHello: Server bira optimalne parametre iz ponuđenih od strane klijenta.
  3. Certificate: Server šalje svoj sertifikat.
  4. ServerKeyExchange (opciono): Razmena šifri.
  5. CertificateRequest (opciono): Server može zatražiti sertifikat klijenta za obostranu autentifikaciju.
  6. ServerHelloDone: Server obaveštava o završetku svoje strane Handshake-a.
  7. Certificate (opciono): Klijent šalje svoj sertifikat.
  8. ClientKeyExchange: Klijent šalje pre-šifrovani tajni ključ, šifrovan javnim ključem servera, koji se koristi za generisanje sesijskih ključeva.
  9. CertificateVerify (opciono): Klijent proverava potpis servera.
  10. ChangeCipherSpec: Klijent i server obaveštavaju o prelasku na korišćenje usaglašenih sesijskih ključeva.
  11. 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.