Wat is 2FA en hoe ver-veilig je daarmee je account?

Wat is 2FA en hoe ver-veilig je daarmee je account?

25-09-2018 11:15:02

tl;dr? 2FA staat voor 'Two Factor Authentication' en ja, 2FA voegt een zinnige drempel toe aan de beveiliging van een account.

2FA, wat is dat?

Two Factor Authentication (2FA) combineert twee afzonderlijke en onafhankelijke componenten bij de controle van een geautoriseerde gebruiker. Sinds kort kan er in de BIT-Portal, zoals bij wel meer online omgevingen, voor gekozen worden om een extra vraag toe te voegen aan de toegangscontrole. In deze blog lees je wat 2FA is, hoe het werkt en wat de toegevoegde waarde er van is. Daarnaast gaan we ook dieper in op de techniek zoals die op het moment van schrijven is toegepast bij BIT, wat de voordelen zijn van deze extra veiligheidsmaatregel en welke afwegingen er bij komen kijken.

Omdat er nog te weinig afkortingen zijn in het IT-landschap, is het begrip 2FA in het leven geroepen. Met als uiteindelijk doel uiteraard de efficiëntere communicatie in alleen maar afkortingen. idk /care d^ Naar het Nederlands vertaald staat de afkorting 2FA voor 'twee factoren authenticatie'. Toegepast betekent dit dat er tijdens de toegangscontrole voor het vaststellen van de authenticiteit van de beweerde identiteit, gebruik gemaakt wordt van twee 'factoren'. Een factor kan natuurlijk veel betekenen maar hier gaat het bijvoorbeeld om iets dat de gebruiker weet, zoals de combinatie van een gebruikersnaam en een wachtwoord. Maar het woord factor kan in de context van toegangscontrole ook gebruikt worden om iets wat de gebruiker heeft aan te duiden, zoals een (encryptie)sleutel. De toegangscontrole bevat geen 2FA door alleen maar het toevoegen van een tweede stap. Wordt er bijvoorbeeld naast een gebruikersnaam en wachtwoord in een tweede scherm aan de aanmelder gevraagd om diens favoriete letter, dan zou dat alleen een uitbreiding zijn op die andere factor; iets dat de gebruiker weet.

Op het internet wordt voor de tweede factor in veel gevallen gebruik gemaakt van een gegenereerde cijfercode. Deze cijfercode wordt gegenereerd door een reeks instructies, ook wel code of algoritme genoemd. In het algoritme voor de cijfercode wordt in de opeenvolgende instructies een combinatie gemaakt van een tekenreeks en de huidige tijd. Uiteindelijk eindigt het algoritme met een cijfercode als resultaat. Het algoritme is algemeen bekend en heeft meerdere implementaties voor verschillende soorten (computer)systemen. Het resultaat van de ene implementatie is bij eenzelfde invoer exact gelijk aan het resultaat van een andere implementatie. Dit geeft de mogelijkheid om een controle uit te voeren op de aanwezigheid van dezelfde invoer zonder deze prijs te geven in de communicatie.

De tekenreeks is het eerste dat uitgewisseld wordt tussen de verlener en afnemer van de sterkere authenticatiemethode. Beide partijen hebben met die tekenreeks een "geheim" met elkaar gedeeld dat gebruikt kan worden in het algoritme. Uiteraard is het van belang dat dat goed is gegaan en daarom wordt het geheim eerst tijdelijk opgeslagen en pas permanent nadat er is gecontroleerd of de uitwisseling van de tekenreeks, oftewel "het geheim", goed is verlopen. Deze controle vindt plaats doordat de afnemer de uitkomst van het algoritme of cijfercode aan de verlener doorgeeft en de verlener die invoer controleert met de cijfercode die de verlener zelf heeft gegenereerd.

De t-wéé-de fac-tòr

In zwang als tweede factor: TOTP

Het algoritme dat de cijfercode genereert heeft, hoe kan het ook anders, een afkorting gekregen, namelijk: TOTP. Volledig uitgetypt wordt dat in het Engels: Time-based One Time Password en in het Nederlands: op tijd gebaseerd eenmalig wachtwoord. Omdat het huidige tijdstip onderdeel is van de invoer van het algoritme, is het tijdvak waarin de code geldig is, beperkt. Die beperkte geldigheid, draagt bij aan de veiligheid van de cijfercode. Daarnaast zorgt de afhankelijkheid van het tijdstip ervoor dat de code in praktische zin éénmalig bruikbaar zal zijn.

Uiteraard moet er om deze nieuwe authenticatie te laten werken eerst een uitwisseling van de geheime tekenreeks plaatsvinden tussen de identificerende en de authenticerende/verifiërende partij. Bijvoorbeeld tussen gebruikers van een website en de (beheerders van die) website. In veel uitvoeringen van dit proces wordt dat gedaan door middel van een OTP-applicatie op een mobiel en een afbeelding van een QR-code op een site. Door die QR-code vanuit de OTP-applicatie met de camera van de mobiel te scannen, krijgt de OTP-applicatie toegang tot de geheime tekenreeks.

Vanaf dat moment kan de OTP-applicatie op de mobiel met die geheime tekenreeks en de huidige tijd de TOTP, de op tijd gebaseerde éénmalig, bruikbare (cijfer)code, genereren. De gebruiker overhandigt deze cijfercode aan de online dienst door deze op een webformulier in te voeren en naar de webdienst te versturen. Vervolgens kan een deel van het programma van de webdienst de overhandigde cijfercode verifiëren en nagaan of de ingevoerde cijfercode klopt. De webdienst doet dit door gebruik te maken van het publieke algoritme, met als invoer, ook wel parameters: de uitgewisselde geheime tekenreeks en één (of meerdere) tijdstippen. Wanneer de naar de webdienst verzonden cijfercode en de door de webdienst gegeneerde cijfercode overeenkomen, wordt de eerder uitgewisselde geheime tekenreeks "goedgekeurd" door deze toe te voegen aan de opgeslagen gegevens van de gebruiker. Vanaf nu hoeft er geen communicatie meer plaats te vinden waarin de geheime tekenreeks voorkomt.

In de tweede stap van de toegangscontrole voert de gebruiker alleen nog maar de gegeneerde cijfercode in. De geheime tekenreeks is immers al onderling uitgewisseld en aan beide kanten bewaard. Als de ingevoerde cijfercode (uit de OTP-applicatie van de gebruiker) overeenkomt met de controle-cijfercode (uit de OTP-applicatie van de webdienst), is de door de gebruiker gemaakte bewering (dat de gebruiker toegang heeft tot de in de eerste stap aangegeven gebruiker) met een tweede factor vastgesteld.

En nu?

Hopelijk wordt uit het bovenstaande duidelijk dat het aan te bevelen valt om 2FA te gebruiken. Een groot voordeel van meer dan één factor gebruiken in het authenticatieproces, is de sterkere mate van beveiliging. Mocht het voorkomen dat de combinatie van gebruikersnaam en wachtwoord bekend wordt bij een malafide partij, dan is er nu nog een extra drempel, een extra factor die hopelijk dan niet bekend is. Ik schrijf hopelijk omdat ik me een vrij eenvoudig scenario kan voorstellen waarin beide factoren in bezit zouden kunnen komen van een malafide partij. Namelijk bij verlies van een mobiel apparaat zoals een telefoon, tablet of laptop. In het geval dat beide factoren op één apparaat zijn opgeslagen, is de beveiliging van de gegevens op dat apparaat de zwakste schakel in de beveiligingsketting.

In veel gevallen is de zwakste schakel, de beveiliging van die gegevens op dat apparaat, ook niet veel meer dan het aan kunnen melden als een bepaalde gebruiker in het besturingssysteem. Of meer fysiek, het simpelweg toegang krijgen tot de opgeslagen gegevens van het apparaat. Dat komt doordat gebruikers, vaak vanuit gemak, instellen dat wachtwoorden en andere applicaties direct na het aanmelden automatisch toegankelijk zijn voor gebruik. Er zijn gevallen waarin dat een acceptabel risico met zich meebrengt maar in veel gevallen lijkt het geen aanrader.

De twee factoren op verschillende apparaten opslaan valt dus aan te raden. Een andere maatregel kan zijn om een extra versleuteling toe te passen tijdens het opslaan en terughalen van de bewaarde gegevens. Applicaties die de combinatie van gebruikersnaam en wachtwoord opslaan bieden vaak al die mogelijkheid en er zijn ook OTP-applicaties die versleuteling toepassen tijdens het ophalen van de geheime tekenreeks die onderling is uitgewisseld.

Op de Engelstalige Wikipedia staan enkele voorbeelden van TOTP applicaties (de versie van 26 augustus 2018). De open source OTP-applicatie AndOTP, ook beschikbaar op F-Droid, is een voorbeeld van zo'n applicatie die een aantal mogelijkheden biedt om de geheime tekenreeks(en) op een versleuteld deel in de telefoon op te slaan en een beveiliging op het gebruik van de OTP-applicatie in te stellen.

In week 34 van 2018 werd er aan de BIT-Portal, naast andere wijzigingen, de mogelijkheid toegevoegd om aan te melden met een tweede factor. En in de afgelopen 35 dagen hebben ruim 100 mensen 2FA in de portal geactiveerd. Uiteraard valt het aan te bevelen om het te activeren maar het is aan onze klanten om daar een weloverwogen beslissing in te nemen. Zodoende kan er gekozen worden tussen: 'no 2FA policy', 'optional 2FA policy' & 'obligatory 2FA policy', drie bedrijfsbrede vormen van beleid (policies) om de extra authenticatiestap respectievelijk: uit te zetten, optioneel te houden of te verplichten voor alle portal-gebruikers die onder de betreffende organisatie vallen.


Door: Will Fris