Sobes.tech
Junior

Czym jest TLS?

sobes.tech AI

Odpowiedź od AI

TLS (Transport Layer Security) — to kryptograficzny protokół zapewniający bezpieczną komunikację w sieci, na przykład między przeglądarką internetową a serwerem.

Kluczowe funkcje:

  • Uwierzytelnianie: Weryfikacja tożsamości stron (zwykle za pomocą certyfikatów X.509).
  • Poufność: Szyfrowanie przesyłanych danych, aby zapobiec nieautoryzowanemu dostępowi.
  • Integralność: Sprawdzanie, czy dane nie zostały zmienione podczas transmisji.

Protokół TLS działa na poziomie transportu modelu OSI (lub wyżej, w zależności od implementacji i kontekstu). Zastąpił SSL (Secure Sockets Layer). Obecne wersje to TLS 1.2 i TLS 1.3.

W kontekście Go, TLS jest używany w standardowej bibliotece net/http do obsługi HTTPS.

package main

import (
	"crypto/tls"
	"net/http"
	"log"
)

func main() {
	// Przykład konfiguracji serwera HTTP z obsługą TLS
	// Wymagane pliki certyfikatu i klucza prywatnego
	certFile := "server.crt"
	keyFile := "server.key"

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("Witaj, bezpieczny świat!"))
	})

	// Uruchom serwer HTTPS
	log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}

Interakcja odbywa się w kilku etapach (Handshake):

  1. ClientHello: Klient wysyła listę obsługiwanych wersji TLS, zestawów szyfrów i innych parametrów.
  2. ServerHello: Serwer wybiera optymalne parametry spośród zaproponowanych przez klienta.
  3. Certificate: Serwer wysyła swój certyfikat.
  4. ServerKeyExchange (opcjonalnie): Wymiana kluczy szyfrowania.
  5. CertificateRequest (opcjonalnie): Serwer może zażądać certyfikatu od klienta do uwierzytelniania dwustronnego.
  6. ServerHelloDone: Serwer informuje, że zakończył swoją część Handshake.
  7. Certificate (opcjonalnie): Klient wysyła swój certyfikat.
  8. ClientKeyExchange: Klient wysyła zaszyfrowany sekret pre-mistrza z użyciem klucza publicznego serwera, który służy do generowania kluczy sesji.
  9. CertificateVerify (opcjonalnie): Klient weryfikuje podpis serwera.
  10. ChangeCipherSpec: Klient i serwer informują o przejściu na użycie uzgodnionych kluczy sesji.
  11. Finished: Finalizacja Handshake z wymianą wiadomości zaszyfrowanych nowymi kluczami, w celu potwierdzenia sukcesu procedury.

TLS zapewnia niezawodny poziom bezpieczeństwa dla komunikacji sieciowej, będąc standardem dla HTTPS i innych protokołów wymagających ochrony danych.