Encryptie staat nog steeds volop in de belangstelling, dankzij de ontwikkelingen in de zaak die begon toen de FBI via een rechterlijk bevel eiste dat Apple toegang zou geven tot een iPhone. Hierdoor ontstond een discussie rond de rol van bedrijven en overheden die draait om de vraag hoe ver commerciële ondernemingen mogen gaan in het beschermen van de gegevens van hun klanten.
Midden in deze discussie kondigde Facebook-dochter WhatsApp dinsdag aan dat alle conversaties via de dienst nu gebruikmaken van end-to-end-encryptie. Het was al langer duidelijk dat een dergelijke ontwikkeling binnen het bedrijf gaande was, maar desalniettemin is het een belangrijke stap. Gebruikers kregen een bericht in hun chats te zien, waarmee de versleuteling werd aangekondigd. Hoewel dit veel positieve reacties opleverde, wierp het bericht ook de nodige vragen op, met als belangrijkste: wat betekent deze verandering en hoe veilig is WhatsApp nu eigenlijk?
End-to-end-encryptie
Een van de termen die in de discussie rond encryptie steeds terugkomt is ‘end-to-end’-encryptie. Dit houdt in dat berichten op de telefoon zelf versleuteld worden. In het verzendingsproces van een bericht zijn telefoons dan ook aan te merken als endpoints; een bericht ontstaat op de telefoon van de ene gebruiker en eindigt op de telefoon van een andere gebruiker, met internet als tussenstap. In dat model zijn verschillende manieren van encryptie toe te passen. Zo is het mogelijk dat een bericht de telefoon van de verzender onversleuteld verlaat en via een server naar de ontvanger wordt gestuurd. Daarbij wordt het bericht versleuteld op de server, die het bericht dan doorstuurt naar de ontvanger. Dit is niet veilig, omdat een derde partij het bericht tussen de verzender en de server als gewone tekst kan onderscheppen.
End-to-end-encryptie lost dit probleem op door de versleuteling te laten plaatsvinden op de telefoon van de zender. Het voordeel daarvan is dat het bericht nooit in de vorm van gewone tekst via internet wordt verstuurd. De boodschap is op die manier immers gedurende het hele verzendproces versleuteld en wordt pas leesbaar op het moment dat de ontvanger de boodschap op zijn telefoon ontvangt. Dat betekent dat een tussenliggende server of een meeluisterende derde geen inzicht heeft in de inhoud.
Het Signal-protocol
De manier waarop WhatsApp deze vorm van encryptie heeft geïmplementeerd staat bekend als public key encryption, oftewel encryptie op een basis van een publieke sleutel. Dit houdt, eenvoudig weergegeven, in dat elke WhatsApp-gebruiker een openbare publieke sleutel krijgt toegewezen en daarnaast een geheime privésleutel heeft, die ook bij WhatsApp niet bekend is. Samen vormen deze twee sleutels een sleutelpaar en staan ze in een wiskundig verband.
Ook al wordt een versleutelde tekst onderschept, hij blijft geheim
Als twee partijen met elkaar willen communiceren, wordt er eerst een versleutelde chatsessie opgebouwd. Om dit te bereiken haalt degene die de chat begint de publieke sleutel van de gewenste gesprekspartner op bij de WhatsApp-server. Aan de hand daarvan genereert hij een master secret, die ervoor zorgt dat alleen zijn gesprekspartner de komende berichten kan ontsleutelen. Dit werkt doordat de publieke sleutel en de privésleutel van gebruikers met elkaar in verband staan. Een met een bepaalde publieke sleutel versleuteld bericht kan daardoor alleen met de daarbij horende privésleutel worden gelezen. In het geval van WhatsApp geldt dat niet alleen voor berichten, maar ook voor bijlagen, groepsgesprekken en spraakoproepen. Als er eenmaal een versleutelde chatsessie is opgebouwd, hoeft dit niet opnieuw te gebeuren, tenzij WhatsApp opnieuw wordt geïnstalleerd of de gebruiker van toestel verandert.
Voor de encryptie van berichten maakt WhatsApp gebruik van het bewezen encryptiealgoritme 256-bit-AES, dat bekendstaat als veilig. Deze standaard wordt ook aangeraden voor het beveiligen van bestanden die beschermd moeten zijn tegen kraakpogingen door kwantumcomputers. Voor het aanmaken van sleutels wordt gebruikgemaakt van de vrij jonge elliptische curve ‘curve25519’, die is ontwikkeld door Daniel J. Bernstein. Deze werkt snel en wordt veelvuldig geïmplementeerd in verschillende toepassingen.
De hiervoor weergegeven encryptie in WhatsApp vindt plaats aan de hand van het zogenaamde Signal-protocol. Dat stond eerst bekend als het TextSecure-protocol, dat vervolgens weer is afgeleid van OTR. Een van de voordelen van dit protocol is dat het forward secrecy implementeert. Dat houdt in dat er steeds een tijdelijke sleutel wordt gebruikt om berichten van encryptie te voorzien. Als een aanvaller in het bezit komt van een sleutel, voorkomt dit dat hij alle in het verleden liggende gesprekken kan inzien. Dus ook al wordt een versleutelde tekst onderschept, hij blijft geheim.
Ook WhatsApp kan de berichten, die via zijn eigen servers verzonden worden, niet inzien
Met de implementatie van het Signal-protocol heeft WhatsApp een belangrijke stap genomen. Het protocol staat bekend als zeer veilig en het feit dat het opensource is, draagt hier alleen maar aan bij. Veel bedrijven, zoals Apple met iMessage, maken de fout hun eigen cryptosysteem te ontwikkelen, dat daardoor vaak gebrekkig is.
Toegang door derden
Door de zojuist genoemde maatregelen is het ook voor WhatsApp niet mogelijk om de berichten, die via zijn eigen servers verzonden worden, in te zien. Daar staat tegenover dat het Signal-protocol weliswaaropensource is, maar dat niet te verifiëren is of WhatsApp de in zijn whitepaper beschreven technieken daadwerkelijk op die manier in de dienst heeft geïmplementeerd. De broncode van de rest van de software is namelijk niet publiekelijk beschikbaar en het is altijd goed om in het achterhoofd te houden dat het bedrijf in handen is van Facebook, dat een slecht imago heeft als het gaat om privacy.
De dienst heeft wel stappen ondernomen om het vertrouwen van gebruikers in de encryptie te vergroten. Zo is het mogelijk om de sleutels van andere gebruikers te verifiëren met een qr-beveiligingscode, waarmee vastgesteld kan worden of de sleutel van de gesprekspartner inderdaad overeenkomt met de sleutel op de server van WhatsApp. Daarmee kan de sceptische gebruiker controleren of er geen partij tussen hem en de gesprekspartner in zit, die met een man-in-the-middle-aanval berichten onderschept door partijen te voorzien van valse sleutels. De optie om een waarschuwing te ontvangen als de beveiligingscode van een contact is gewijzigd staat helaas standaard uit, maar is via de beveiligingsinstellingen handmatig in te schakelen.
Als toegang door WhatsApp onmogelijk is, geldt dit in principe ook voor andere partijen. Daar komt bij dat het bedrijf niet kan voldoen aan een informatieverzoek van een overheid, om diezelfde reden. Er is dan geen sprake van een harde weigering om toegang tot de gegevens te verschaffen, omdat het gewoonweg onmogelijk is om bij de onversleutelde communicatie te komen. In Nederland zijn aanbieders van openbare telecommunicatienetwerken en -diensten verplicht om ervoor te zorgen dat deze aftapbaar zijn. De wettelijke definitie van dergelijke aanbieders is echter beperkt, waardoor een dienst als WhatsApp daarbuiten valt en niet aan de verplichting hoeft te voldoen. Daar komt bij dat ook het aftappen van een isp niet de inhoud van WhatsApp-berichten oplevert, vanwege de end-to-end-encryptie.
Er zijn echter wel andere gegevens die WhatsApp aan derden kan verstrekken. Dat zijn zogenaamde metagegevens, waaruit bijvoorbeeld blijkt wanneer een bericht is verzonden en tussen welke partijen dat gebeurde. Uit de privacy policy van WhatsApp blijkt dat het bedrijf deze gegevens opslaat. Bijvoorbeeld partijen als de NSA hebben aangegeven dat ze vaak meer hebben aan de metagegevens dan aan de inhoud van een bericht. De context van deze uitspraak was dat gebruikers van encryptie, zoals PGP, door het gebruik juist meer opvallen bij de dienst. Het is dus maar de vraag hoe de NSA daar nu tegenaan kijkt, aangezien WhatsApp meer dan een miljard gebruikers telt.
Toegankelijke encryptie is hiermee voor een enorme groep mensen beschikbaar gekomen
Het verdient ook aandacht dat WhatsApp regelmatig vraagt om een back-up uit te voeren van gevoerde gesprekken naar bijvoorbeeld Google Drive of iCloud. Het is onduidelijk of deze back-ups ook versleuteld plaatsvinden. Volgens een beveiligingsonderzoeker zijn deze backups inderdaad niet versleuteld, wat een veiligheidsrisico kan vormen.
En nu?
Op basis van de zojuist genoemde voorbehouden zou men kunnen concluderen dat het door WhatsApp geïmplementeerde systeem minder veilig is dan het op het eerste gezicht lijkt. Die conclusie is echter iets te haastig getrokken. WhatsApp heeft veel juiste keuzes gemaakt in de implementatie. Zo heeft het bedrijf ervoor gekozen om een bewezen protocol te gebruiken en niet een eigen systeem te ontwikkelen, waardoor op een gegeven moment ongetwijfeld gebreken naar boven waren gekomen. Er is ook geen sprake van een haastige invoering, maar van een langlopend traject in samenwerking met een gerenommeerde naam in de cryptowereld, Moxie Marlinspike. Het feit dat de broncode van het protocol openbaar te raadplegen is en dat gebruikers met behulp van een qr-code een verificatie kunnen uitvoeren, spreekt ook in het voordeel van het bedrijf.
Het belangrijkste is dat toegankelijke encryptie hiermee voor een enorme groep mensen beschikbaar is gekomen. Hoewel het systeem nog niet perfect is, gaat het om een grote stap richting privacy by design, die als voorbeeld kan dienen voor andere ontwikkelaars en bedrijven. De gesloten broncode van WhatsApp blijft echter een zorgwekkende factor, waardoor gebruikers moeten afgaan op vertrouwen in plaats van op een geïnformeerde keuze.
Bron: Sander van Voorst