Cybersecurity

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.

Ronald Evers 9 min leestijd
OTP en QR-codes uitgelegd: zo werkt een authenticator-app

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:

1

Allebei dezelfde sleutel

Na het scannen kennen jouw app en de server precies dezelfde geheime sleutel.

2

Allebei dezelfde klok

De huidige tijd wordt afgerond op blokken van 30 seconden. Telefoon en server zitten in hetzelfde tijdsblok.

3

Allebei dezelfde berekening

Sleutel + tijdsblok gaan door dezelfde wiskundige formule (een HMAC-hash). Daar rolt steeds dezelfde 6-cijferige code uit.

4

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.

1

Open de beveiligingsinstellingen

Ga in de dienst (bijvoorbeeld Microsoft 365) naar two-factor of MFA-instellingen.

2

Kies 'authenticator-app'

Niet SMS, tenzij het echt niet anders kan. De app is veiliger en gratis.

3

Scan de QR-code

Open je authenticator-app, kies 'account toevoegen' en scan de getoonde code.

4

Bevestig met de eerste code

Typ de code uit je app in om te bewijzen dat de koppeling klopt.

5

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

Ronald Evers - IT-specialist bij Barion

Ronald Evers

IT-specialist bij Barion met meer dan 20 jaar ervaring in het MKB. Ronald schrijft over IT-trends, cybersecurity en digitale transformatie.

Hulp nodig bij uw IT?

Onze IT-specialisten helpen u graag verder. Neem vrijblijvend contact op.