Is de JWT authenticatie wel veilig genoeg?

4
min
leestijd
Brian Diephuis
Head of Engineering

In het kort:

  • De JWT (JSON Web Token) wordt steeds populairder als identificatiemiddel in softwareontwikkeling, maar er zijn twijfels over de veiligheid ervan.
  • Voorstanders beweren dat de versleuteling van JWT sterk genoeg is om wijzigingen te voorkomen, terwijl anderen bezorgd zijn over het risico van misbruik en hacken.
  • Ondanks verdeelde meningen blijft het belangrijk om de veiligheid van JWT te waarborgen, met voortdurende monitoring en ontwikkeling om eventuele zwakheden aan te pakken.

Is de JWT authenticatie wel veilig genoeg?

De JWT (JSON Web Token) wordt onder developers steeds populairder als ‘identifyer’: software waarmee je jezelf kunt identificeren en legitimeren. De JWT is een nieuwere techniek die de ervaring en de authenticatie sneller en krachtiger maakt. Bij ons leidt deze token tot discussies. Vooral over de veiligheid van de JWT.

Wat doet een JWT?

Eerst maar even een korte uitleg over de JWT. Waarschijnlijk heb je ongetwijfeld gemerkt dat je tegenwoordig steeds vaker kunt inloggen op een website of webshop via je Google- of Facebookaccount. Dat is makkelijk, want zo hoef je niet nog een zoveelste account aan te maken. Om dit voor elkaar te krijgen gebruik je een JWT. De website waarbij je een account aan wilt vragen stuurt een verzoek naar bijvoorbeeld Google en die stuurt via een API, waarmee de website op Google is aangesloten, een JWT naar de site.

Een token in drie delen

Deze token bestaat uit drie delen. Een titel, de inhoud en een handtekening. Hierin staat alles wat de website moet weten om jouw informatie te kunnen herkennen en te kunnen legitimeren. Inloggen is namelijk slechts de helft van het verhaal, het moet ook duidelijk zijn welke rechten de site heeft waarop je wilt inloggen. Het is natuurlijk niet de bedoeling dat hij voor de rest van je leven jouw Facebook account mag volgen.

Snelle oplossing

Zo op het eerste gezicht is een JWT ideaal. Het bespaart tijd en moeite en het wordt zeer nadrukkelijk neergezet als een veilig alternatief. Je vraagt tenslotte zelf de informatie op en geeft er zelf toestemming voor. Wat dat betreft niets anders dan bij een normale inlog. Voor programmeurs heeft het als voordeel dat het heel makkelijk te maken is. En minder tijd betekent minder geld.

Is de JWT veilig?

Maar is het ook veilig? Daarover zijn de meningen verdeeld. Sterker nog, bij ons op de werkvloer ontstaan er soms discussies over. Zo vindt developer Tyrone dat het niet veilig is, terwijl collega Joey daar wel van overtuigd is.

Tegen

“Het probleem met de JWT is dat de gebruiker met de token zelf een pakketje overhandigt dat zegt: ‘Dit ben ik en dit mag ik bij jouw website allemaal doen'”, legt Tyrone uit. “Daarmee geef je de controle over de identiteit en de rechten van de gebruiker volledig uit handen. Zolang de handtekening van het pakketje maar valide is, geloven wij alles wat er in het pakketje staat. Op dit moment is de JWT dan wel zo beveiligd dat bij wijzigingen de token automatisch ongeldig wordt, maar de geschiedenis heeft geleerd dat hackers daar vroeg of laat wel iets op weten te vinden. Het is voor hen een potentiële goudmijn om JWT’s te hacken.

Daarnaast heb je het probleem dat als een JWT token gecompromitteerd raakt, je de toegang niet zomaar kunt ontzeggen. De gebruiker heeft namelijk nog steeds een geldig pakketje van jouw website in handen met de juiste handtekening. Natuurlijk kun je dan bijhouden welke JWT pakketjes je allemaal hebt uitgegeven en daarbij zetten dat een pakketje invalide is geworden, maar dan ben je bezig met een zwaardere vorm het oude Cookies-systeem.”

Voor

Joey is het daar niet mee eens. “Ik geloof wel dat de versleuteling van de JWT in orde is. Hij is zo goed versleuteld dat het eigenlijk onmogelijk is om de inhoud te veranderen. Zelfs als iemand weet waar de token zich bevindt en deze wil wijzigen zal deze persoon onmogelijk de juiste wijzigingen kunnen maken om toegang te krijgen en de inhoud van deze token correct te valideren in de applicatie. De inhoud van een JWT staat namelijk niet vast en is dus onmogelijk te weten of te raden. Bovendien ligt de manier van versleutelen niet vast. Op het moment dat blijkt dat de JWT kwetsbaar is, is het mogelijk om deze aan te passen aan een nieuwe encryptie standaard. Er is een zeer oppervlakkig risico, maar denkend aan het menselijk vermogen om deze sleutels uit te lezen of te wijzigen en afgezet tegen de voordelen van de hedendaagse authenticatie, vind ik dat risico te verwaarlozen.”

Het laatste woord

Het is natuurlijk het belangrijkste dat de JWT veilig is voor gebruik, voor de gebruikers én voor de bedrijven die de token gebruiken. En over de veiligheid, daar is het laatste woord ongetwijfeld nog niet over gevallen. Ook niet bij Thesio. Als team zijn we natuurlijk continue bezig om dit te tackelen en op te lossen, zodat alle twijfels hierover worden weggenomen. Daarnaast zorgen wij voor uitgebreide logging en monitoring van alle applicaties in het beheer van Thesio, zodat we verdachte activiteiten direct opmerken en buitenspel zetten.

Wil je meer weten of advies over het gebruik van de JWT? Of wil je meer weten over de veiligheid daarvan? We denken graag met je mee!

Hulp nodig bij technische afwegingen?

Wij helpen dagelijks tientallen opdrachtgevers bij het maken van de juiste keuze.