TLS (Transport Layer Security) is een ver­sleu­te­lings­pro­to­col dat zorgt voor veilige ge­ge­vens­over­dracht op het internet. Het is de opvolger van het ver­ou­der­de SSL en wordt nu bijna uit­slui­tend gebruikt in de TLS 1.3-versie.

Wat is TLS?

In de begintijd van het internet was ge­ge­vens­be­vei­li­ging nog niet zo be­lang­rijk als vandaag. Alle com­mu­ni­ca­tie werd openlijk en on­ver­sleu­teld van de ene computer naar de andere verzonden. Je kunt het ver­ge­lij­ken met een brief­kaart: elke postbode kon die lezen.

Het TLS-protocol, ook bekend als SSL/TLS, in­tro­du­ceer­de ver­sleu­te­ling van verzonden inhoud. Om de analogie voort te zetten: deze ver­sleu­te­ling is als een ver­ze­gel­de envelop die alleen de recht­ma­ti­ge ontvanger kan openen.

De afkorting TLS staat voor Transport Layer Security. Deze term verwijst naar de trans­port­laag van het TCP/IP-model. TLS is een methode waarmee in­ter­net­da­ta­stro­men worden ver­sleu­teld, zodat alleen ge­au­to­ri­seer­de ont­van­gers ze kunnen lezen.

Opmerking

De vroegere naam van het en­cryp­tie­pro­to­col 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 ver­sleu­telt gegevens die via het internet worden verzonden en wordt normaal gesproken bovenop TCP ge­ïm­ple­men­teerd met behulp van sym­me­tri­sche cryp­to­gra­fie.

Wat in de praktijk eenvoudig klinkt, is in wer­ke­lijk­heid in­ge­wik­kel­der. Het fun­da­men­te­le probleem is dat de server de sleutel aan de client moet doorgeven –voordat de com­mu­ni­ca­tie met TLS beveiligd is. Iedereen die ver­sleu­tel­de e-mail­bij­la­gen verstuurt, kent dit probleem: je ver­sleu­telt een bestand en moet het geheime wacht­woord met de ontvanger delen, bij­voor­beeld 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. Client­Hel­lo: De client (bij­voor­beeld een browser) stuurt een eerste bericht naar de server met in­for­ma­tie over de on­der­steun­de ver­sleu­te­lin­gen. Dit omvat cipher suites, pro­to­col­ver­sies, een wil­le­keu­ri­ge waarde en zijn eigen Elliptic-Curve-Diffie-Hellman-sleu­tel­uit­wis­se­lings­waar­de (ECDHE-waarde). Optioneel kan het eerste ver­sleu­tel­de ge­ge­vens­blok al worden verzonden.
  2. Ser­ver­Hel­lo: De server se­lec­teert de juiste pa­ra­me­ters en stuurt zijn antwoord, inclusief zijn ECDHE-waarde en zijn digitale cer­ti­fi­caat. Dit SSL-cer­ti­fi­caat bewijst dat de server au­then­tiek is en zich niet voordoet als iemand anders. Te­ge­lij­ker­tijd begint de be­re­ke­ning van de ses­sie­sleu­tel.
  3. Sleu­tel­be­re­ke­ning: Beide partijen berekenen nu on­af­han­ke­lijk van elkaar dezelfde ses­sie­sleu­tel op basis van de ge­za­men­lijk over­een­ge­ko­men sleutel.
  4. De server voltooit de handshake en begint met ver­sleu­tel­de com­mu­ni­ca­tie. De client doet hetzelfde; de ver­bin­ding is nu volledig beveiligd.
Opmerking

In ver­ge­lij­king met eerdere versies is de TLS-handshake in TLS 1.3 aan­zien­lijk slanker en veiliger. Het hele proces dat hier wordt be­schre­ven, vereist nu slechts één round-trip (1 RTT), waardoor de ver­bin­ding aan­zien­lijk sneller verloopt.

De reden waarom asym­me­tri­sche encryptie met Diffie-Hellman alleen wordt gebruikt voor het verzenden van de ses­sie­sleu­tel (maar niet voor het ver­sleu­te­len van de da­ta­stro­men zelf) is het snel­heids­voor­deel; asym­me­tri­sche encryptie is relatief traag en zou de da­ta­com­mu­ni­ca­tie vertragen.

De voor- en nadelen van TLS

TLS is een elegante oplossing om web­ver­keer veiliger te maken. Het vereist niet dat beide partijen de inhoud zelf ver­sleu­te­len, zoals for­mu­lier­ge­ge­vens. In plaats daarvan is het voldoende als het verkeer via het TLS-protocol wordt ge­rou­teerd, ongeacht de be­stu­rings­sys­te­men en soft­wa­re­toe­pas­sin­gen van de deel­ne­mers. Alle da­ta­stro­men worden dan au­to­ma­tisch ver­sleu­teld tijdens de over­dracht.

De prijs van be­vei­li­ging is een iets tragere ver­bin­dings­op­bouw, omdat de bo­ven­ge­noem­de pro­ces­stap­pen – cer­ti­fi­caat, wil­le­keu­rig getal, sleu­tel­uit­wis­se­ling – re­ken­in­ten­sief zijn.

Toe­pas­sin­gen van TLS

Zoals gezegd kan TLS uni­ver­seel worden gebruikt omdat het on­af­han­ke­lijk is van ap­pli­ca­ties en be­stu­rings­sys­te­men. Daarom is er voor ver­schil­len­de ap­pli­ca­tie­pro­to­col­len een TLS-be­vei­lig­de versie be­schik­baar. De naam­ge­ving is in de meeste gevallen vrij eenvoudig: de letter ‘S’ wordt aan de naam van het protocol toe­ge­voegd wanneer het protocol via TLS com­mu­ni­ceert.

Het be­lang­rijk­ste toe­pas­sings­ge­bied van TLS is het World Wide Web, met name het HTTP-protocol. De ver­sleu­tel­de versie hiervan heet HTTPS.

Daarnaast moeten de volgende veel­voor­ko­men­de ge­bruiks­si­tu­a­ties worden genoemd:

  • POP3S: E-mails ophalen van de server met behulp van het POP3-protocol
  • IMAPS: Syn­chro­ni­seer de inbox met de server met behulp van het IMAP-protocol
  • SMTPS: E-mails verzenden
  • FTPS: Bestanden over­bren­gen via het FTP-protocol
  • SIPS: Voice-over-IP-telefonie via het SIP-protocol
  • IRCS: Ver­sleu­tel­de chats
  • QUIC: Google’s trans­port­pro­to­col dat TLS 1.3 recht­streeks in­te­greert; een al­ter­na­tief voor TCP voor snellere en veiligere web­ver­bin­din­gen (bijv. met HTTP/3)

OpenVPN, een gratis soft­wa­re­pro­gram­ma voor het opzetten van een Virtual Private Network (VPN), maakt ook gebruik van het TLS-protocol.

Be­lang­rijk­ste TLS-im­ple­men­ta­ties

Enkele van de meest gebruikte im­ple­men­ta­ties van TLS zijn:

  • OpenSSL – veruit de meest gebruikte im­ple­men­ta­tie door de meeste HTTPS-websites
  • GnuTLS (Free Software Foun­da­ti­on)
  • 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. Ge­de­tail­leer­de in­for­ma­tie over TLS-im­ple­men­ta­ties is te vinden op Wikipedia.

Bekende TLS-aanvallen

Hoewel TLS is ontworpen voor veilige com­mu­ni­ca­tie, heeft het nog steeds bekende zwakke punten. Deze omvatten:

  • Pro­gram­meer­fou­ten: De Heart­bleed Bug werd bekend als een kritieke pro­gram­meer­fout in eerdere versies van OpenSSL. Deze fout werd in 2014 verholpen.
  • Zwakke ver­sleu­te­ling: Als gevolg van Ame­ri­kaan­se ex­port­be­per­kin­gen op cryp­to­gra­fie werden ‘ex­port­ver­sies’ ont­wik­keld die ge­mak­ke­lij­ker te kraken waren dan de ori­gi­ne­len.
  • Com­pres­sie­aan­val­len: Wanneer HTTP-com­pres­sie wordt gebruikt in plaats van TLS-com­pres­sie, kunnen hackers met bepaalde methoden TLS-ge­co­deer­de inhoud raden.
  • De BEAST-aanval had invloed op TLS-versie 1.0 en werd al in 2014 be­schre­ven. 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-cer­ti­fi­ca­ten op verkeerd ge­con­fi­gu­reer­de servers kunnen worden misbruikt om ge­brui­kers om te leiden naar andere diensten, waarbij gegevens worden on­der­schept of ge­ma­ni­pu­leerd.

Er zijn ook pogingen gedaan om volledig veilige TLS-encryptie te ver­hin­de­ren, zodat au­to­ri­tei­ten toegang kunnen krijgen tot ver­sleu­tel­de com­mu­ni­ca­tie, bij­voor­beeld in verband met fi­nan­ci­ë­le trans­ac­ties en criminele ac­ti­vi­tei­ten. Een van de or­ga­ni­sa­ties die pleitte voor een der­ge­lij­ke ‘op­zet­te­lij­ke kwets­baar­heid’ in TLS was ETSI (het Europees Instituut voor Te­le­com­mu­ni­ca­tie­nor­men).

Ga naar hoofdmenu