Sobes.tech
Junior

Was ist TLS?

sobes.tech KI

Antwort von AI

TLS (Transport Layer Security) ist ein kryptografisches Protokoll, das sichere Kommunikation im Netzwerk gewährleistet, z.B. zwischen einem Webbrowser und einem Server.

Wichtige Funktionen:

  • Authentifizierung: Überprüfung der Identität der Parteien (meist mittels X.509-Zertifikaten).
  • Vertraulichkeit: Verschlüsselung der übertragenen Daten, um unbefugten Zugriff zu verhindern.
  • Integrität: Überprüfung, dass die Daten während der Übertragung nicht verändert wurden.

Das TLS-Protokoll arbeitet auf der Transportschicht des OSI-Modells (oder höher, abhängig von der Implementierung und dem Kontext). Es hat SSL (Secure Sockets Layer) abgelöst. Die aktuellen Versionen sind TLS 1.2 und TLS 1.3.

Im Kontext von Go wird TLS in der Standardbibliothek net/http verwendet, um HTTPS zu unterstützen.

package main

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

func main() {
	// Beispiel für die Konfiguration eines HTTP-Servers mit TLS-Unterstützung
	// Es werden Zertifikat- und Schlüsseldateien benötigt
	certFile := "server.crt"
	keyFile := "server.key"

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("Hallo, sichere Welt!"))
	})

	// HTTPS-Server starten
	log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}

Die Interaktion erfolgt in mehreren Schritten (Handshake):

  1. ClientHello: Der Client sendet eine Liste unterstützter TLS-Versionen, Cipher Suites und anderer Parameter.
  2. ServerHello: Der Server wählt die optimalen Parameter aus den vom Client vorgeschlagenen.
  3. Certificate: Der Server sendet sein Zertifikat.
  4. ServerKeyExchange (optional): Austausch der Verschlüsselungsschlüssel.
  5. CertificateRequest (optional): Der Server kann ein Client-Zertifikat für die gegenseitige Authentifizierung anfordern.
  6. ServerHelloDone: Der Server teilt mit, dass er seinen Teil des Handshakes abgeschlossen hat.
  7. Certificate (optional): Der Client sendet sein Zertifikat.
  8. ClientKeyExchange: Der Client sendet ein verschlüsseltes Pre-Master-Geheimnis mit dem öffentlichen Schlüssel des Servers, das zur Generierung der Sitzungsschlüssel verwendet wird.
  9. CertificateVerify (optional): Der Client überprüft die Signatur des Servers.
  10. ChangeCipherSpec: Der Client und der Server signalisieren, dass sie auf die vereinbarten Sitzungsschlüssel umstellen.
  11. Finished: Abschluss des Handshakes durch den Austausch verschlüsselter Nachrichten mit den neuen Schlüsseln, um den Erfolg des Verfahrens zu überprüfen.

TLS bietet eine zuverlässige Sicherheitsstufe für Netzwerkkommunikationen und ist Standard für HTTPS und andere Protokolle, die den Schutz der Daten erfordern.