TLS (Transport Layer Security) is een versleutelingsprotocol dat zorgt voor veilige gegevensoverdracht op het internet. Het is de opvolger van het verouderde SSL en wordt nu bijna uitsluitend gebruikt in de TLS 1.3-versie.

Wat is TLS?

In de begintijd van het internet was gegevensbeveiliging nog niet zo belangrijk als vandaag. Alle communicatie werd openlijk en onversleuteld van de ene computer naar de andere verzonden. Je kunt het vergelijken met een briefkaart: elke postbode kon die lezen.

Het TLS-protocol, ook bekend als SSL/TLS, introduceerde versleuteling van verzonden inhoud. Om de analogie voort te zetten: deze versleuteling is als een verzegelde envelop die alleen de rechtmatige ontvanger kan openen.

De afkorting TLS staat voor Transport Layer Security. Deze term verwijst naar de transportlaag van het TCP/IP-model. TLS is een methode waarmee internetdatastromen worden versleuteld, zodat alleen geautoriseerde ontvangers ze kunnen lezen.

Opmerking

De vroegere naam van het encryptieprotocol was SSL (Secure Socket Layer). Aangezien deze afkorting nog steeds bekender is dan TLS, wordt TLS vaak aangeduid met de dubbele naam ‘SSL/TLS’.

Hoe werkt TLS?

TLS versleutelt gegevens die via het internet worden verzonden en wordt normaal gesproken bovenop TCP geïmplementeerd met behulp van symmetrische cryptografie.

Wat in de praktijk eenvoudig klinkt, is in werkelijkheid ingewikkelder. Het fundamentele probleem is dat de server de sleutel aan de client moet doorgeven –voordat de communicatie met TLS beveiligd is. Iedereen die versleutelde e-mailbijlagen verstuurt, kent dit probleem: je versleutelt een bestand en moet het geheime wachtwoord met de ontvanger delen, bijvoorbeeld via de telefoon.

Het TLS-protocol, waarvan de huidige standaard sinds 2018 versie 1.3 is, gebruikt de volgende procedure om dit probleem op te lossen:

  1. ClientHello: De client (bijvoorbeeld een browser) stuurt een eerste bericht naar de server met informatie over de ondersteunde versleutelingen. Dit omvat cipher suites, protocolversies, een willekeurige waarde en zijn eigen Elliptic-Curve-Diffie-Hellman-sleuteluitwisselingswaarde (ECDHE-waarde). Optioneel kan het eerste versleutelde gegevensblok al worden verzonden.
  2. ServerHello: De server selecteert de juiste parameters en stuurt zijn antwoord, inclusief zijn ECDHE-waarde en zijn digitale certificaat. Dit SSL-certificaat bewijst dat de server authentiek is en zich niet voordoet als iemand anders. Tegelijkertijd begint de berekening van de sessiesleutel.
  3. Sleutelberekening: Beide partijen berekenen nu onafhankelijk van elkaar dezelfde sessiesleutel op basis van de gezamenlijk overeengekomen sleutel.
  4. De server voltooit de handshake en begint met versleutelde communicatie. De client doet hetzelfde; de verbinding is nu volledig beveiligd.
Opmerking

In vergelijking met eerdere versies is de TLS-handshake in TLS 1.3 aanzienlijk slanker en veiliger. Het hele proces dat hier wordt beschreven, vereist nu slechts één round-trip (1 RTT), waardoor de verbinding aanzienlijk sneller verloopt.

De reden waarom asymmetrische encryptie met Diffie-Hellman alleen wordt gebruikt voor het verzenden van de sessiesleutel (maar niet voor het versleutelen van de datastromen zelf) is het snelheidsvoordeel; asymmetrische encryptie is relatief traag en zou de datacommunicatie vertragen.

De voor- en nadelen van TLS

TLS is een elegante oplossing om webverkeer veiliger te maken. Het vereist niet dat beide partijen de inhoud zelf versleutelen, zoals formuliergegevens. In plaats daarvan is het voldoende als het verkeer via het TLS-protocol wordt gerouteerd, ongeacht de besturingssystemen en softwaretoepassingen van de deelnemers. Alle datastromen worden dan automatisch versleuteld tijdens de overdracht.

De prijs van beveiliging is een iets tragere verbindingsopbouw, omdat de bovengenoemde processtappen – certificaat, willekeurig getal, sleuteluitwisseling – rekenintensief zijn.

Toepassingen van TLS

Zoals gezegd kan TLS universeel worden gebruikt omdat het onafhankelijk is van applicaties en besturingssystemen. Daarom is er voor verschillende applicatieprotocollen een TLS-beveiligde versie beschikbaar. De naamgeving is in de meeste gevallen vrij eenvoudig: de letter ‘S’ wordt aan de naam van het protocol toegevoegd wanneer het protocol via TLS communiceert.

Het belangrijkste toepassingsgebied van TLS is het World Wide Web, met name het HTTP-protocol. De versleutelde versie hiervan heet HTTPS.

Daarnaast moeten de volgende veelvoorkomende gebruikssituaties worden genoemd:

  • POP3S: E-mails ophalen van de server met behulp van het POP3-protocol
  • IMAPS: Synchroniseer de inbox met de server met behulp van het IMAP-protocol
  • SMTPS: E-mails verzenden
  • FTPS: Bestanden overbrengen via het FTP-protocol
  • SIPS: Voice-over-IP-telefonie via het SIP-protocol
  • IRCS: Versleutelde chats
  • QUIC: Google’s transportprotocol dat TLS 1.3 rechtstreeks integreert; een alternatief voor TCP voor snellere en veiligere webverbindingen (bijv. met HTTP/3)

OpenVPN, een gratis softwareprogramma voor het opzetten van een Virtual Private Network (VPN), maakt ook gebruik van het TLS-protocol.

Belangrijkste TLS-implementaties

Enkele van de meest gebruikte implementaties van TLS zijn:

  • OpenSSL – veruit de meest gebruikte implementatie door de meeste HTTPS-websites
  • GnuTLS (Free Software Foundation)
  • LibreSSL (OpenBSD)
  • NSS (Network Security Services)
  • BoringSSL (Google)
  • Rustls (Joe Birr-Pixton, Dirkjan Ochtman, Daniel McCarney, Josh Aas en Open-Source Community)
  • Botan (BSD-licentie, Jack Lloyd)
  • JSSE (Java Secure Socket Extension, Oracle)
  • S2n (Amazon)

Deze lijst is niet volledig. Gedetailleerde informatie over TLS-implementaties is te vinden op Wikipedia.

Bekende TLS-aanvallen

Hoewel TLS is ontworpen voor veilige communicatie, heeft het nog steeds bekende zwakke punten. Deze omvatten:

  • Programmeerfouten: De Heartbleed Bug werd bekend als een kritieke programmeerfout in eerdere versies van OpenSSL. Deze fout werd in 2014 verholpen.
  • Zwakke versleuteling: Als gevolg van Amerikaanse exportbeperkingen op cryptografie werden ‘exportversies’ ontwikkeld die gemakkelijker te kraken waren dan de originelen.
  • Compressieaanvallen: Wanneer HTTP-compressie wordt gebruikt in plaats van TLS-compressie, kunnen hackers met bepaalde methoden TLS-gecodeerde inhoud raden.
  • De BEAST-aanval had invloed op TLS-versie 1.0 en werd al in 2014 beschreven. De huidige TLS-versies zijn hiertegen beveiligd.
  • De Padding Oracle-aanval werd ontdekt in 2002 en was mogelijk tot SSL-versie 3.0. De huidige TLS-versie 1.3 wordt hierdoor niet getroffen.
  • De ALPACA-aanval uit 2021 laat zien hoe TLS-certificaten op verkeerd geconfigureerde servers kunnen worden misbruikt om gebruikers om te leiden naar andere diensten, waarbij gegevens worden onderschept of gemanipuleerd.

Er zijn ook pogingen gedaan om volledig veilige TLS-encryptie te verhinderen, zodat autoriteiten toegang kunnen krijgen tot versleutelde communicatie, bijvoorbeeld in verband met financiële transacties en criminele activiteiten. Een van de organisaties die pleitte voor een dergelijke ‘opzettelijke kwetsbaarheid’ in TLS was ETSI (het Europees Instituut voor Telecommunicatienormen).

Ga naar hoofdmenu