Veiliger internet met TLS 1.3 – voordelen en valkuilen

Noud van Kruysbergen
0

Inhoudsopgave

De nieuwe standaard voor Transport Layer Security is definitief, maar dat betekent nog niet meteen dat alles ook werkt.

Transport Layer Security (TLS) is de belangrijkste cryptografische standaard van het internet. Het beveiligt de communicatie tegen afluisteraars en manipulatie. Concreet beveiligt TLS het transport tussen clientprogramma’s zoals browsers en e-mailprogramma’s en de servers op internet die de betreffende dienst beschikbaar stellen. TLS wordt op alle pc’s met alle besturingssystemen gebruikt, maar ook op smartphones en slimme IoT-apparaten – dat hopen we in elk geval.

In augustus 2018 was het dan eindelijk zo ver: de hoeders van de inter­net­standaarden bij de IETF publiceerden de in het voorjaar al als definitief beschouwde TLS-versie 1.3 officieel als RFC 8446. Daarmee moet Transport Layer Security een nieuw beveiligingsniveau gaan bereiken.

veiliger internet TLS 1.3 browser server bibliotheek security PCI-DSS foutmelding test

Maar voordat dat in de praktijk te merken is, moet het protocol ook in de programma’s zitten die het gebruiken. Omdat daar tijdens het hele standaardiseringsproces al aardig wat voorwerk voor was verricht, ziet dat er al redelijk goed uit. Maar breed gebruikt wordt de nieuwe standaard in de dagelijkse praktijk nog niet helemaal.

Het is te hopen dat TLS 1.3 niet hetzelfde lot beschoren is als zijn voorganger: in 2008 werd TLS 1.2 al gedefinieerd als standaard, maar pas in 2014 werd het een beetje populair. Nu, ruim tien jaar verder, heeft het zich pas zo ver verspreid dat TLS 1.0 en TLS 1.1 uitgefaseerd lijken te kunnen worden. De browsers Chrome, Edge, Firefox, Internet Explorer 11 en Safari zullen die als verouderd en onveilig beschouwde TLS-versies vanaf 2020 niet meer ondersteunen.

Veel security-experts adviseren systeembeheerders nu al om TLS 1.0 op hun servers uit te schakelen. De voor dienstverleners op betaalgebied verplichte PCI-DSS standaard verbiedt het gebruik ervan zelfs al sinds juli 2018. Voorzichtige systeem­beheerders zonder een al te grote compliance-drang adviseren we om eens een blik op de eigen logbestanden te werpen. Bij ons bleek dat ongeveer acht procent van de bezoekers verbinding maakte via TLS 1.0.

Vanuit het oogpunt van het consequent versleutelen van je gehele website kan het uitschakelen van TLS 1.0 dan betekenen dat iedere tiende bezoeker je pagina’s niet meer kan oproepen, maar alleen nog een foutmelding te zien krijgt. Dat geldt dan vooral voor gebruikers van oudere smartphones met Android 4.3 of eerder en oudere Windows-installaties met Internet Explorer 10. Beide platforms ondersteunen TLS 1.2 niet. Windows-­gebruikers kunnen nog wel Internet Explorer 11 of een andere browser installeren, maar voor veel Android-gebruikers valt er weinig te upgraden.

Om een lang verhaal kort te maken: veel websites blijven TLS 1.0 nog gewoon ondersteunen. En dan gaat het niet alleen particuliere webservers, maar dat geldt ook voor veel commerciële en overheidssites.

Meer over wat in TLS 1.3 zit, lees je in c't mrt/2019

Voor ontwikkelaars

De basis voor de ondersteuning van TLS 1.3 is in elk geval al voorhanden: de huidige versies van de bibliotheken OpenSSL (versie 1.1.1), GnuTLS (3.6.3) en Google BoringSSL bieden al ondersteuning voor TLS 1.3. De door Oracle begin september 2018 uitgebrachte Java Development Kit 11 kan het ook. Daarmee kunnen software-ontwikkelaars de in hun programma’s en apps benodigde aanpassingen in elk geval doorvoeren. Online kun je de status van TLS 1.3 bij OpenSSL of in andere softwareversies checken.

Welke dat zijn, hangt af van de abstractielaag waarop de ontwikkelaar werkt. TLS 1.3 biedt bijvoorbeeld enkele nieuwe cryptografische methoden, waarvan je het gebruik onder bepaalde omstandigheden eerst expliciet moet toestaan. Daar moet je enige voorzichtigheid bij betrachten, omdat sommige versies alleen preview-versies van de standaard gebruiken, zoals Draft 28. Die zijn niet altijd compatibel met de definitieve versie.

Doorlezen is gratis, maar eerst even dit:

Dit artikel is met grote zorg samengesteld door de redactie van c’t magazine – het meest toonaangevende computertijdschrift van Nederland en België. Met zeer uitgebreide tests en praktische workshops biedt c’t de diepgang die je nergens online vindt.

Bekijk de abonnementen   Lees eerst verder

Voor gebruikers

Bij de browsers zijn – zoals gewoonlijk – Firefox en Chrome de eerste die ermee kunnen werken. Firefox 63 (security.tls.version.max = 4 bij about:config) en Chrome 70 (chrome://flags/#tls13-variant staat op ‘Enabled (Final)’) gebruiken de nieuwe standaard al – en zonder dat je daar wat voor hoeft te doen. Gebruikers van de browsers van Microsoft en Apple moeten er nog even op wachten. Internet Explorer 11, Edge 17 en Safari 12 kunnen niets beginnen met TLS 1.3. Op een smartphone kan in elk geval Chrome 69 voor Android overweg met TLS 1.3. In geval van twijfel kun je met een aanroep van https://tls13.crypto.mozilla.org achterhalen of je browser het protocol al ondersteunt. Zo niet, dan krijg je een foutmelding te zien.

veiliger internet TLS 1.3 Firefox controle verbinding pagina info

Het is nog een uitzondering, maar de eerste websites waarmee Firefox en Chrome verbindingen met TLS 1.3 kunnen maken zijn er al.

À propos foutmelding: zelfs als je eigen browser al het benodigde al aan boord heeft, kan het aanroepen van de testpagina van Mozilla tot een foutmelding leiden. Dat ligt dan aan een van de tussenstations op de weg naar de server. Al bij het testen met preview-versies van de standaard bleken er erg hoge foutrates te ontstaan door zogeheten middle boxes. Dat is bijvoorbeeld een Intrusion Detection System dat zegt: “Hier gebeurt wat, dat ik niet ken – dat moet een aanval zijn” en dat dan simpelweg probeert te verhinderen.

De IETF-experts hebben dan ook al het nodige ondernomen om TLS 1.3 zonder concessies aan de veiligheid zodanig om te bouwen dat het die rigide tests kan passeren. Dat helpt echter helemaal niets als er een proxy is geïnstalleerd of een antivirusprogramma op de pc dat zich actief in de verbinding nestelt, dat nog niet met TLS 1.3 werkt.

Een test op https://www.ssllabs.com/ssltest/viewMyClient.html laat zien wat er bij de internetserver daadwerkelijk aankomt.

Voor serverbeheerders

Aan de serverkant ziet het er daarentegen nog niet zo florissant uit. De eerste websites met TLS 1.3 komen al wel tevoorschijn, maar die komen normaal gesproken dan van Nginx vanaf versie 1.13. Daar kun je TLS 1.3 namelijk met een paar handelingen in het configuratiebestand activeren:

ssl_protocols TLSv1.2 TLSv1.3;

Daarnaast wil je dan waarschijnlijk nog de nieuwe cipher-suites aan het begin van de string ssl_ciphers instellen:

TLS-CHACHA20-POLY1305-SHA256
TLS-AES-256-GCM-SHA384
TLS-AES-128-GCM-SHA256

en de elliptische curven daarbij expliciet activeren:

ssl_ecdh_curve prime256v1:secp384r1;

Een paar webhosters bieden TLS 1.3 al als feature aan – waaronder Cloudflare, dat zich sterk gemaakt heeft voor de ontwikkeling van de standaard. Dat kun je eenvoudig in het webfront-end configureren. De nieuwe TLS-versie is voor nieuwe zones standaard al geactiveerd. Daarbij schakelt Cloudflare TLS 1.3 op hun Edge-servers in, die werken met Nginx als reverse-proxy en de TLS-verbinding afsluiten. Je eigen server hoeft daarom geen TLS 1.3 te ondersteunen – maar kan het in elk geval wel gebruiken.

Een grote sprong voorwaarts wat betreft de populariteit van TLS 1.3 komt waarschijnlijk met een betere ondersteuning in de Apache webserver. Tot Apache 2.4.35 was hooguit TLS 1.2 mogelijk, vanaf de recente versie 2.4.37 is TLS 1.3 mogelijk maar het werkt nog niet helemaal robuust.

veiliger internet TLS 1.3 versie weergave TLS 1.2 handshake

De officiële versieweergave staat vast op TLS 1.2 – ook als beide partijen al 1.3 gebruiken.

Een analyse of een TLS-verbinding al met versie 1.3 tot stand is gekomen is overigens niet triviaal. Het daarvoor voorziene versieveld bij de client- en server-hello is vanwege problemen met sniffer-apparaten vast ingesteld op de waarde voor TLS 1.2 (0x0303). De nieuw ingevoerde uitbreiding supported_version verraadt pas wat er werkelijk gebeurt. Daar meldt dan bijvoorbeeld de client dat hij de versies 1.0, 1.1, 1.2, 1.3 en een random gegenereerde, niet bestaande versie ondersteunt. Dat laatste gebeurt om de ‘wat de boer niet kent dat vreet hij niet’-mentaliteit uit te bannen van de fabrikanten van beveiligingssoftware. Als je wilt, kun je dat met Wireshark live bekijken. Wireshark kan sinds versie 2.6 namelijk met TLS 1.3 overweg.

(Jürgen Schmidt, c’t magazine)

Lees meer achtergronden en uitgebreide reviews in c't sep/2019

Deel dit artikel

Lees ook

Processor snelheid opvoeren: trucs van moederbord-fabrikanten

Moederbordfabrikanten gebruiken trucs voor de processor snelheid opvoeren op hun moederborden. Daardoor kan het verbruik onverwacht hoger zijn en het ...

Antivirus programma voor Windows: Defender vs. betaalde software

Heb je een antivirus programma voor Windows nodig in plaats van de standaard geïnstalleerde Windows Defender? We zijn op zoek gegaan naar een antwoord...

Interessant voor jou

0 Praat mee

avatar
  Abonneer  
Laat het mij weten wanneer er