Wat is 2FA, MFA en wat heb ik nodig?

Nu we meer en meer gegevens online hebben staan en er telkens meer berichten komen over diefstal van gebruikersnamen en wachtwoorden, komen er ook telkens nieuwe manieren om het traditionele inloggen op systemen te beveiligen. Op zich is dit natuurlijk heel goed nieuws, maar wat is het allemaal en zijn al die methoden even veilig?

In dit stuk gaan we in begrijpelijke taal in op de vragen:

  • Wat is MFA (en daarmee 2FA)
  • Waarom is MFA van belang
  • Welke factoren kunnen worden gebruikt
  • Wat is veilig

Wat is MFA?

Bij het aanmelden op een website of een bedrijfsnetwerk moet je als gebruiker bewijzen wie je bent. In principe zijn er vier categorieën om je identiteit te bewijzen:

  • Wat de gebruiker weet. Bijvoorbeeld een wachtwoord.
  • Wat de gebruiker heeft. Bijvoorbeeld een apparaat of een berekening.
  • Wat de gebruiker is. Bijvoorbeeld een vingerafdruk of gezichtsscan.
  • Waar de gebruiker is. Bijvoorbeeld een GPS locatie of een netwerksegment.

Elk van deze categorieën noemen we "Factoren". Factoren moeten geheim blijven en mogen niet gedeeld worden, om te zorgen dat anderen zich niet kunnen identificeren alsof ze jou zijn.

MFA, Multi Factor Authenticatie, is niets anders dan het vereisen van meer dan 1 van de bovenstaande factoren om je te identificeren; als je maar 2 factoren vereist noem je dit ook wel 2FA - 2 Factor Authenticatie.

Veel inlogsystemen gebruiken maar 1 factor, namelijk een wachtwoord waarmee de gebruiker bewijst dat hij het echt is, die achter het scherm zit.

Dus bij 2FA (2 factor authenticatie), kun je denken aan Wachtwoord (1) en een beveiligingscode uit een authenticator app (2).

Waarom is MFA van belang?

Tegenwoordig kom je overal berichten tegen over gestolen wachtwoorden, zelfs van hele bekende, grote bedrijven.

Het blijkt dat mensen voor alle plaatsen waar ze een wachtwoord moeten ingeven, over het algemeen niet heel erg origineel zijn, en vaak gewoon een ander "heel goed" wachtwoord hergebruiken. Dus als er één van je wachtwoorden is gestolen, hebben de dieven gelijk toegang tot heel veel andere sites en/of netwerken.

Als je nu zorgt dat er behalve een wachtwoord ook nog een andere factor vraagt, dan is een gestolen wachtwoord opeens een veel minder groot probleem, omdat de dief waarschijnlijk deze tweede factor niet in zijn bezit heeft. Het wordt natuurlijk nog veiliger als je nog meer factoren toevoegt.

"Waarom doen we dat dan niet gewoon?" zul je je wellicht afvragen. Het antwoord daarop is gebruiksgemak en beschikbaarheid. Mensen willen veilig zijn, maar niet heel veel extra handelingen verrichten en bijvoorbeeld hardware tokens zijn wel heel veilig, maar niet iedereen heeft ze ter beschikking. Er moet dus altijd een afweging worden gemaakt welke methoden voor welk doel gebruikt worden.

Welke factoren kunnen worden gebruikt?

Om een goede afweging te maken tussen gebruiksvriendelijkheid en veiligheid, hieronder een aantal factoren die momenteel gebruikt worden.

Eerder schreven we al dat de factoren grofweg waren:

  • Wat je weet
  • Wat je hebt
  • Wat je bent
  • Waar je bent

Wat je weet

"Wat je weet" wordt meestal ingevuld door het aloude wachtwoord. Dit is een onveilige maar heel gebruiksvriendelijke factor. Andere "Wat je weet" implementaties zijn de vraag en antwoord series, zoals "wat is de meisjesnaam van je moeder", "wat voor dier was je eerste huisdier" en dat soort zaken die vaak heel makkelijk door wat navragen (social engineering) kunnen worden achterhaald.

Wat je hebt

Voor "Wat je hebt" zijn nog veel meer mogelijkheden, die de meeste mensen ook al wel eens gezien hebben zoals:

TOTP - Time-based One Time Password - Hiervoor wordt een app op de telefoon gebruikt, zoals de google authenticator. Tijdens het aanmelden moet je een QR code scannen, waar een sleutel in zit waarmee, samen met de huidige tijd, een zes cijferige code wordt gegenereerd. Is de op de telefoon gegenereerde code hetzelfde als de code die het systeem genereerd, dan is de sleutel correct en krijg je toegang tot het systeem.

SMS - Tijdens het inloggen genereert het systeem een beveiligingscode, die dan via SMS wordt doorgestuurd naar het in het systeem bekende telefoonnummer. Alleen als je de waarde in de SMS kent, kun je verder met inloggen.

App push - Voor dit systeem moet je een app op de telefoon installeren. Als je dan probeert in te loggen wordt er een bericht naar deze app gestuurd, die je dan iets zal vragen als: "Op dit moment probeert iemand in te loggen vanaf computer xyz, klopt dit?". Als je hier op JA klikt wordt deze bevestiging teruggestuurd door je telefoon aan het systeem, die dan de login zal goedkeuren.

Email - Net als SMS, kan de code ook in een mail verstuurd worden aan de gebruiker.

Hardware token - Fysieke sleutels zoals de Yubikey werken iets anders dan voorgaande methode, omdat deze ook via een speciaal protocol kunnen valideren of de gebruiker werkelijk via de juiste website bezig is, en kan hiermee zelfs een zogenaamde "passwordless" login doen, waarbij je alleen een pincode (wat je weet) en een yubikey nodig hebt (wat je hebt), om een volledig veilige aanmelding te doen (dus zonder dat je dan nog gebruikersnaam en wachtwoord hoeft in te typen).

Wat je bent

Bij deze factor kun je denken aan systemen zoals vingerafdruk scan, gezichtsscan en dergelijke. Soms wordt zelfs een tekst gebruikt die je moet overtypen omdat de cadans van typen tussen verschillende mensen ook anders is.

Waar je bent

Deze factor wordt zelden gebruikt. Mensen werken meestal vanaf verschillende locaties, maar bijvoorbeeld een GPS locatie van een bepaalde straal rond een kantoor zou gebruikt kunnen worden om mensen als extra factor te identificeren. Soms word voor het "waar" ook gebruik gemaakt van dat alleen vanaf een bepaald netwerk toegang toegestaan wordt.

Wat is veilig?

Sowieso is het tegenwoordig duidelijk dat als je ook maar iets van waarde op een account hebt staan, je meerdere factoren moet gebruiken om het te beschermen tegen indringers.

Welke factoren je gaat gebruiken hangt helemaal af van de doelgroep, de vertrouwelijkheid van de gegevens en de mate van gebruiksvriendelijkheid die je wilt ok kunt opgeven.

Wil je bijvoorbeeld een gebruiker op een webshop beveiligen, zou je kunnen overwegen om gedurende het inloggen alleen gebruikersnaam en wachtwoord te vragen, en pas als de gebruiker een belangrijke actie gaat uitvoeren (denk aan wijzigingen in zijn account), zou je een tweede factor zoals een SMS kunnen sturen. Dit is minimale impact voor de gebruiker, maar toch een extra laag in de bescherming van zijn gegevens.

Bij inloggen op bedrijfsnetwerken daarentegen, als je eigenlijk alle gebruikers kent (je werknemers), is het mogelijk om ze uit te rusten met een hardware token zoals een Yubikey, waarmee 100% veilig kan worden ingelogd.

Helaas blijken de meeste factoren (zelfs in een MFA combinatie) niet veilig voor phishing en Man-In-The-Middle attacks, waarbij goedwillende mensen alle login informatie invoeren op een nep-website, die de gegevens direct doorstuurt naar de echte website, waardoor de login gewoon lukt. De gebruiker krijgt immers gewoon het SMS'je en geeft zijn gegevens in bij de foute website.

Op dit moment zijn hardware tokens op basis van het FIDO2 protocol eigenlijk de enige echt veilige oplossing die ook door veel grote bedrijven zoals Microsoft en Google aangeraden (en zelf ook intern gebruikt) worden.

Blue42 Europe gebruikt intern Yubikeys om de beveiliging met het FIDO2 protocol uit te voeren. Yubikeys worden goed ondersteund door de meeste grote aanbieders (Microsoft/Google/Okta/etc).

Wil je meer informatie, neem dan eens contact met ons op, zodat we ook een demo kunnen geven hoe eenvoudig een simpel phishing mailtje kan zorgen voor een inbraak op een "goed beschermd" account dat gebruik maakt van bijvoorbeeld SMS/TOTP.