Word gematcht

OTP

Verdediging

One Time Password. Een wachtwoord dat geldig is voor de duur van één login-sessie.

OTP staat voor One-Time Password, in het Nederlands ook wel eenmalig wachtwoord genoemd. Het is een unieke code die slechts een keer en voor een beperkte tijdsperiode geldig is, en die wordt gebruikt als extra verificatiestap bij het inloggen op systemen of het autoriseren van transacties. OTP's vormen een kerncomponent van tweefactorauthenticatie (2FA) en multifactorauthenticatie (MFA), waarbij naast het reguliere wachtwoord een tweede bewijs van identiteit wordt gevraagd. Door een OTP te vereisen naast het reguliere wachtwoord, wordt het voor aanvallers aanzienlijk moeilijker om ongeautoriseerde toegang te verkrijgen, zelfs als het wachtwoord is gecompromitteerd.

Het principe achter OTP is eenvoudig maar effectief: een gestolen wachtwoord alleen is niet voldoende om in te loggen. De gebruiker heeft daarnaast iets nodig dat hij of zij fysiek bezit, zoals een telefoon die de OTP-code ontvangt of genereert. Dit concept wordt aangeduid als "iets dat je weet" (het wachtwoord) gecombineerd met "iets dat je hebt" (het apparaat dat de OTP genereert). Deze combinatie verkleint het risico op ongeautoriseerde toegang drastisch en is een van de meest effectieve beveiligingsmaatregelen die organisaties kunnen implementeren.

Hoe werkt OTP?

Er bestaan verschillende typen OTP's, die elk op een andere manier worden gegenereerd en afgeleverd. De drie meest voorkomende methoden zijn SMS-gebaseerde OTP's, e-mail-gebaseerde OTP's en op tijd gebaseerde OTP's (TOTP).

Bij SMS-gebaseerde OTP ontvangt de gebruiker een unieke code via een sms-bericht op het geregistreerde telefoonnummer. Deze methode is wijdverspreid vanwege de eenvoud en het feit dat vrijwel iedereen een mobiele telefoon bezit. De code is doorgaans zes cijfers lang en vervalt na enkele minuten. Hoewel SMS-OTP beter is dan alleen een wachtwoord gebruiken, heeft deze methode bekende kwetsbaarheden. Aanvallers kunnen via SIM-swapping het telefoonnummer van het slachtoffer overnemen, of sms-berichten onderscheppen via SS7-kwetsbaarheden in het telecomnetwerk.

E-mail-gebaseerde OTP werkt op vergelijkbare wijze, maar stuurt de code naar het e-mailadres van de gebruiker in plaats van via sms. Deze methode heeft vergelijkbare zwaktes als SMS-OTP: als het e-mailaccount is gecompromitteerd, kan een aanvaller ook de OTP-code onderscheppen. E-mail-OTP wordt daarom beschouwd als een minder veilige optie voor kritieke systemen.

TOTP (Time-based One-Time Password) is de veiligste veelgebruikte OTP-methode. Bij TOTP wordt de code lokaal gegenereerd door een authenticatie-app op het apparaat van de gebruiker, zoals Google Authenticator, Microsoft Authenticator of Authy. De app en de server delen een geheim algoritme (seed), en op basis van dit geheim en de huidige tijd genereren beide partijen onafhankelijk van elkaar dezelfde code. Omdat de code lokaal wordt berekend en niet via een netwerk wordt verzonden, kan deze niet worden onderschept door aanvallers. De codes wisselen doorgaans elke dertig seconden, wat de tijdsperiode waarin een code bruikbaar is sterk beperkt.

HOTP (HMAC-based One-Time Password) is een variant waarbij de code wordt gegenereerd op basis van een teller in plaats van de tijd. Elke keer dat een code wordt opgevraagd, wordt de teller verhoogd. HOTP-codes blijven geldig totdat ze worden gebruikt of een nieuwe code wordt gegenereerd. Hardware-tokens zoals de RSA SecurID en YubiKey maken vaak gebruik van dit principe.

Hoe implementeer je OTP?

De implementatie van OTP begint met het kiezen van de juiste methode voor jouw organisatie. Voor de meeste organisaties is TOTP via een authenticatie-app de aanbevolen aanpak, omdat het een geschikte balans biedt tussen veiligheid en gebruiksvriendelijkheid. SMS-OTP is een alternatief voor situaties waarin gebruikers geen authenticatie-app kunnen of willen installeren, maar is minder veilig.

Technisch gezien vereist het implementeren van TOTP de integratie van een TOTP-bibliotheek in je authenticatiesysteem. Voor de meeste programmeertalen zijn bewezen bibliotheken beschikbaar die het genereren en verifieren van TOTP-codes afhandelen. Bij het inschakelen van TOTP voor een gebruiker wordt een specifiek geheim gegenereerd en gedeeld via een QR-code die de gebruiker scant met de authenticatie-app. Dit geheim wordt veilig opgeslagen aan de serverzijde en vormt de basis voor alle toekomstige codeverificaties.

Bij de implementatie is het essentieel om herstelcodes aan te bieden voor het geval een gebruiker het apparaat met de authenticatie-app verliest. Deze herstelcodes zijn eenmalig te gebruiken codes die de gebruiker veilig moet opslaan bij het instellen van OTP. Zonder herstelmogelijkheid kan verlies van het apparaat leiden tot permanente uitsluiting van het account, wat zowel voor de gebruiker als de organisatie problematisch is.

Configureer de verlooptijd van OTP-codes zorgvuldig. Voor TOTP is een tijdsvenster van dertig seconden standaard, met een tolerantie van een periode ervoor en erna om tijdverschillen tussen apparaten op te vangen. Voor SMS- en e-mail-OTP's is een verlooptijd van maximaal vijf minuten aan te bevelen, hoewel kortere perioden van dertig tot honderdtwintig seconden veiliger zijn als de gebruikerservaring dat toelaat.

Implementeer ook beperkingen op het aantal pogingen om een OTP-code in te voeren. Na drie tot vijf mislukte pogingen moet het account tijdelijk worden vergrendeld of moet een nieuwe code worden gegenereerd. Dit voorkomt brute-force-aanvallen waarbij een aanvaller systematisch alle mogelijke codes probeert. Bij een zescijferige code zijn er een miljoen mogelijkheden, wat zonder pogingbeperking binnen een kort tijdsbestek te doorlopen is.

Best practices voor OTP

Gebruik TOTP boven SMS-OTP wanneer mogelijk. TOTP-codes worden lokaal gegenereerd en niet via een netwerk verzonden, waardoor ze niet kwetsbaar zijn voor onderschepping via SIM-swapping of SS7-aanvallen. Moedig gebruikers aan om een authenticatie-app te installeren en bied duidelijke instructies voor het instellen ervan.

Overweeg voor kritieke systemen het gebruik van hardware security keys die FIDO2/WebAuthn ondersteunen, zoals YubiKeys. Deze bieden nog sterkere bescherming dan TOTP omdat ze niet vatbaar zijn voor phishing. De gebruiker moet de sleutel fysiek in het apparaat steken of via NFC verbinden, wat niet op afstand kan worden nagebootst door een aanvaller.

Zorg voor een consistent OTP-beleid binnen de organisatie. Bepaal welke systemen en applicaties OTP vereisen, welke methoden acceptabel zijn, en hoe het herstelproces verloopt. Documenteer dit beleid en communiceer het duidelijk naar alle medewerkers. Consistentie in authenticatiebeleid verkleint het risico dat kritieke systemen onbeschermd blijven omdat ze over het hoofd zijn gezien.

Monitor OTP-gerelateerde activiteiten in je logging. Registreer mislukte OTP-pogingen, het aantal keer dat herstelcodes worden gebruikt, en ongebruikelijke patronen zoals OTP-verificaties vanuit onverwachte locaties. Deze informatie helpt bij het detecteren van aanvalspogingen en het identificeren van gebruikers die mogelijk ondersteuning nodig hebben bij hun authenticatieproces.

Veelgestelde vragen over OTP

Is SMS-OTP nog veilig genoeg?

SMS-OTP biedt meer bescherming dan alleen een wachtwoord, maar is kwetsbaar voor SIM-swapping en onderschepping. Voor basisbescherming is het acceptabel, maar voor kritieke systemen en accounts met hoge privileges wordt TOTP via een authenticatie-app of een hardware security key aanbevolen.

Wat als ik mijn telefoon verlies met de authenticatie-app?

Gebruik de herstelcodes die je bij het instellen van OTP hebt opgeslagen. Als je geen herstelcodes hebt, neem dan contact op met de beheerder van het systeem die je OTP-configuratie kan resetten. Bewaar herstelcodes altijd op een veilige, aparte locatie.

Wat is het verschil tussen OTP en 2FA?

OTP is een specifieke technologie die eenmalige codes genereert. 2FA (tweefactorauthenticatie) is het bredere concept van twee verschillende verificatiemethoden combineren. OTP is een van de meest gebruikte methoden om 2FA te implementeren, maar 2FA kan ook andere methoden omvatten zoals biometrie of hardware-tokens.

Hoe vaak moet een OTP-code wisselen?

Bij TOTP wisselt de code standaard elke dertig seconden. Bij SMS- en e-mail-OTP's is een verlooptijd van maximaal vijf minuten gangbaar. Kortere intervallen zijn veiliger, maar moeten in balans zijn met de gebruiksvriendelijkheid zodat gebruikers voldoende tijd hebben om de code in te voeren.

Wil je multifactorauthenticatie implementeren in jouw organisatie? Bekijk de mogelijkheden op de oplossingen-pagina en vind de juiste leverancier via IBgidsNL.