OTP en QR-codes uitgelegd: zo werkt je authenticator
Wat is een OTP en waarom scan je een QR-code bij two-factor login? Lees wat er in de QR-code staat, hoe de 30-secondencode werkt en of het veilig is.
Een OTP (One-Time Password, oftewel eenmalige code) is een inlogcode die slechts één keer en kort geldig is. Je kent ze waarschijnlijk wel: die zes cijfers die je authenticator-app elke 30 seconden ververst, en die je naast je wachtwoord moet invoeren. Bij het instellen scan je daarvoor een QR-code. Maar wat doet die QR-code precies, wat staat erin, en waarom is dit eigenlijk veilig? In deze blog leggen we de techniek uit zonder jargon - en vooral: wat het in de praktijk voor je bedrijf betekent.
Deze blog is een verdieping op onze blog waarom multifactor authenticatie cruciaal is. Daar lees je het waarom; hier het hoe.
Wat is een OTP?
Een OTP is een wachtwoord dat maar één keer werkt. Vandaar de naam: One-Time Password. In plaats van een vast wachtwoord dat jaren hetzelfde blijft, krijg je telkens een verse code die binnen een halve minuut weer verloopt.
Er zijn twee smaken, en het verschil is belangrijk om te snappen waarom de app van jouw telefoon zonder internet werkt:
| Soort OTP | Waarop gebaseerd |
|---|---|
| HOTP (teller) | Een meegeteld nummer |
| TOTP (tijd) | De huidige tijd |
Vrijwel alle authenticator-apps - Microsoft Authenticator, Google Authenticator, Authy, Bitwarden - gebruiken TOTP: de tijdgebaseerde variant. Dat is de versie die we in deze blog uitleggen, want dat is wat je 99% van de tijd tegenkomt.
De OTP is bijna altijd je tweede factor. Je eerste factor is je wachtwoord (iets dat je weet), de OTP komt van iets dat je hebt (je telefoon). Die combinatie maakt multifactor authenticatie zo sterk: een hacker met alleen je wachtwoord komt er niet in.
Waarom een QR-code bij het instellen?
De QR-code is niets meer dan een handige verhuisdoos. Bij het instellen van OTP moeten jouw telefoon en de server het eens worden over één gedeelde geheime sleutel. Die sleutel is een lange, willekeurige reeks tekens - veel te foutgevoelig om met de hand over te typen. De QR-code lost dat op: je scant hem, en de hele sleutel staat in één keer correct in je app.
Je kunt diezelfde sleutel trouwens vrijwel altijd ook handmatig invoeren. Onder de QR-code staat dan een tekstcode (bijvoorbeeld JBSW Y3DP EHPK 3PXP). Dat is exact dezelfde sleutel, alleen uitgeschreven. De QR-code is dus puur gemak, geen magie.
Wat staat er precies in die QR-code?
Achter de QR-code zit gewoon een stukje tekst: een speciale link die begint met otpauth://. Als je de QR-code zou ontleden, zie je zoiets:
otpauth://totp/Barion:jij@barion.nl?secret=JBSWY3DPEHPK3PXP&issuer=Barion&algorithm=SHA1&digits=6&period=30
Dat ziet er technisch uit, maar elk stukje heeft een simpele betekenis:
| Onderdeel | Wat het betekent |
|---|---|
| type | TOTP (tijd) of HOTP (teller) |
| label | Welk account bij welke dienst |
| secret | De geheime sleutel - de kern |
| issuer | Naam van de dienst |
| algorithm | De rekenmethode |
| digits | Aantal cijfers in de code |
| period | Geldigheidsduur in seconden |
Het enige echt geheime onderdeel is secret: de gedeelde sleutel. De rest zijn instellingen die bepalen hóe de code wordt berekend en hoe je app het account toont. Die secret is wat jouw telefoon en de server allebei opslaan en gebruiken om dezelfde codes uit te rekenen.
Hoe werkt de code van 30 seconden?
Hier komt de elegantie van TOTP. Na het scannen hebben je telefoon en de server allebei dezelfde geheime sleutel. Vanaf dat moment hebben ze elkaar niet meer nodig om codes te maken. Zo gaat het:
Allebei dezelfde sleutel
Na het scannen kennen jouw app en de server precies dezelfde geheime sleutel.
Allebei dezelfde klok
De huidige tijd wordt afgerond op blokken van 30 seconden. Telefoon en server zitten in hetzelfde tijdsblok.
Allebei dezelfde berekening
Sleutel + tijdsblok gaan door dezelfde wiskundige formule (een HMAC-hash). Daar rolt steeds dezelfde 6-cijferige code uit.
Vergelijken bij het inloggen
Jij typt de code in, de server heeft hem zelf ook berekend. Komen ze overeen, dan ben je binnen.
Omdat de berekening op de tijd is gebaseerd, hoeft er niets tussen je telefoon en de server heen en weer te reizen. Daarom werkt je authenticator-app ook in vliegtuigmodus of zonder bereik: hij rekent gewoon zelf.
30
seconden geldig
standaard TOTP-tijdsblok
6
cijfers
de meest gebruikte codelengte
1 mln
combinaties
bij 6 cijfers (000000-999999)
Waarom is dit veilig (en waarom niet altijd)?
OTP via een authenticator-app is om drie redenen sterk. Maar eerlijk is eerlijk: het is geen wondermiddel tegen álles. Die nuance is belangrijk.
Toch is er één type aanval waar een gewone OTP wél gevoelig voor is: realtime phishing, ook wel ‘adversary-in-the-middle’ genoemd. Een nepsite vraagt je je code in te voeren en gebruikt die binnen die 30 seconden meteen zelf om in te loggen op de echte site.
Meer context over een gelaagde aanpak lees je op onze pagina over cybersecurity.
OTP versus andere inlogmethodes
Niet elke tweede factor is even sterk. Dit is hoe de gangbare methodes zich verhouden:
| Methode | Hoe het werkt |
|---|---|
| Authenticator-app (OTP) | Code elke 30 seconden |
| Push-melding | Tik op 'Goedkeuren' |
| SMS-code | Code via SMS |
| Hardware-sleutel / passkey | Fysieke of ingebouwde sleutel |
Zo stel je het veilig in
De koppeling zelf duurt nog geen minuut. Het verschil tussen ‘aangezet’ en ‘goed aangezet’ zit in een paar randvoorwaarden.
Open de beveiligingsinstellingen
Ga in de dienst (bijvoorbeeld Microsoft 365) naar two-factor of MFA-instellingen.
Kies 'authenticator-app'
Niet SMS, tenzij het echt niet anders kan. De app is veiliger en gratis.
Scan de QR-code
Open je authenticator-app, kies 'account toevoegen' en scan de getoonde code.
Bevestig met de eerste code
Typ de code uit je app in om te bewijzen dat de koppeling klopt.
Bewaar de herstelcodes
Sla de back-up- of herstelcodes op een veilige plek op, los van je telefoon.
In zakelijke omgevingen regel je dit het liefst centraal. Dan kan een beheerder een verloren toestel ontkoppelen en een nieuw toestel koppelen, zonder dat een medewerker buitengesloten raakt. Dat is precies het soort zaken dat we meenemen in onze cybersecurity-aanpak en bij een cyberscan.
Conclusie
Een OTP is een eenvoudig idee met een grote impact: een code die maar 30 seconden leeft, berekend uit een geheime sleutel die je telefoon en de server delen. De QR-code die je bij het instellen scant, is alleen het vehikel om die sleutel veilig over te zetten - daarna doet je app het rekenwerk zelf, zonder internet.
Hulp nodig?
Bij Barion helpen we MKB-bedrijven met het veilig en werkbaar inrichten van two-factor login - van het kiezen van de juiste methode tot centraal beheer en herstelprocedures. Geen technisch verhaal, gewoon goed geregeld.
Veelgestelde vragen
Nee. Een authenticator-app berekent de code zelf op basis van de geheime sleutel en de huidige tijd. Daarom werkt het ook in vliegtuigmodus of zonder bereik. Internet heb je alleen nodig voor de website waar je vervolgens op inlogt.
Dan kun je buitengesloten raken als je niets hebt voorbereid. Daarom bewaar je bij het instellen herstelcodes (los van je telefoon) of gebruik je een app met cloud-back-up. In een zakelijke omgeving kan een beheerder je oude toestel ontkoppelen en een nieuw toestel koppelen.
Praktisch niet. Een code van zes cijfers heeft een miljoen mogelijke combinaties en is maar 30 seconden geldig. Een aanvaller zou binnen die halve minuut de juiste moeten raken, en dan is hij alweer vervangen. Het echte risico is niet raden, maar phishing.
MFA (multifactor authenticatie) is het bredere principe: inloggen met meerdere factoren. Een OTP is één manier om die tweede factor in te vullen. Een SMS-code, push-melding of hardware-sleutel zijn andere invullingen van diezelfde tweede factor.
Dat is onverstandig, want die afbeelding bevat je geheime sleutel. Staat hij in je fotorol of cloud-back-up, verwijder hem dan. Wil je extra zeker zijn, koppel het account dan opnieuw, zodat er een nieuwe sleutel wordt gegenereerd en de oude waardeloos wordt.
Microsoft Authenticator, Google Authenticator, Authy en Bitwarden zijn allemaal prima en gratis. Gebruik je vooral Microsoft 365, dan ligt Microsoft Authenticator voor de hand. Kies bij voorkeur een app met back-upfunctie, zodat je bij een nieuw toestel niet alles opnieuw hoeft te koppelen.
Ronald Evers
IT-specialist bij Barion met meer dan 20 jaar ervaring in het MKB. Ronald schrijft over IT-trends, cybersecurity en digitale transformatie.
Meer blogs
VLANs voor MKB: drie netwerken die je écht apart wilt
VLANs scheiden je gasten-, beheer- en bedrijfsnetwerk en verkleinen het risico op datalekken. Ontdek waarom netwerksegmentatie onmisbaar is voor het MKB.
Stroomstoring op Kantoor? Zo Voorkom je Dataverlies
Een stroomstoring kan leiden tot dataverlies en corrupte bestanden. Ontdek waarom een Online Werkplek je bedrijf beschermt tegen stroomuitval.
AI Phishing: Zo Herken Je de Nieuwe Aanvallen
Phishing e-mails worden steeds overtuigender door AI. Leer hoe je AI-gestuurde phishing herkent en je bedrijf beschermt met praktische tips.
Hulp nodig bij uw IT?
Onze IT-specialisten helpen u graag verder. Neem vrijblijvend contact op.