Junior
Wat is TLS?
sobes.tech AI
Antwoord van AI
TLS (Transport Layer Security) is een cryptografisch protocol dat veilige communicatie in het netwerk mogelijk maakt, bijvoorbeeld tussen een webbrowser en een server.
Belangrijke functies:
- Authenticatie: Verificatie van de identiteit van de partijen (meestal met behulp van X.509-certificaten).
- Vertrouwelijkheid: Versleuteling van de verzonden gegevens om ongeautoriseerde toegang te voorkomen.
- Integriteit: Controle of de gegevens niet zijn gewijzigd tijdens de overdracht.
Het TLS-protocol werkt op de transportlaag van het OSI-model (of hoger, afhankelijk van de implementatie en context). Het heeft SSL (Secure Sockets Layer) vervangen. De huidige versies zijn TLS 1.2 en TLS 1.3.
In de context van Go wordt TLS gebruikt in de standaardbibliotheek net/http om HTTPS te ondersteunen.
package main
import (
"crypto/tls"
"net/http"
"log"
)
func main() {
// Voorbeeld van het instellen van een HTTP-server met TLS-ondersteuning
// Certificaat- en sleutelbestanden zijn vereist
certFile := "server.crt"
keyFile := "server.key"
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hallo, veilige wereld!"))
})
// HTTPS-server starten
log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}
De interactie vindt plaats in meerdere fasen (Handshake):
- ClientHello: De client stuurt een lijst van ondersteunde TLS-versies, cipher suites en andere parameters.
- ServerHello: De server kiest de optimale parameters uit de door de client voorgestelde.
- Certificate: De server stuurt zijn certificaat.
- ServerKeyExchange (optioneel): Uitwisseling van encryptiesleutels.
- CertificateRequest (optioneel): De server kan een certificaat van de client vragen voor wederzijdse authenticatie.
- ServerHelloDone: De server geeft aan dat hij zijn deel van de Handshake heeft voltooid.
- Certificate (optioneel): De client stuurt zijn certificaat.
- ClientKeyExchange: De client stuurt een versleuteld pre-master geheim met de publieke sleutel van de server, dat wordt gebruikt om de sessiesleutels te genereren.
- CertificateVerify (optioneel): De client verifieert de handtekening van de server.
- ChangeCipherSpec: De client en server geven aan dat ze zullen overschakelen op de afgesproken sessiesleutels.
- Finished: Finalisatie van de Handshake met de uitwisseling van versleutelde berichten met de nieuwe sleutels, om het succes van de procedure te verifiëren.
TLS biedt een betrouwbaar beveiligingsniveau voor netwerkcommunicatie, en is de standaard voor HTTPS en andere protocollen die gegevensbescherming vereisen.