SMS-gestuurde twee-factor-authenticatie is niet veilig – overweeg in plaats daarvan deze alternatieve 2FA methodes

oktober 18, 2018

In de afgelopen paar jaar is het concept van twee-factor-authenticatie (2FA), lange tijd voorbehouden aan ‘geeks’, uitgegroeid tot mainstream. Het gesprek gaat echter nog vooral over 2FA voor eenmalige wachtwoorden via SMS. Helaas is dit niet de meest betrouwbare optie. Hier volgt waarom:

  • Het is eenvoudig een kijkje te nemen in de SMS-wachtwoorden als meldingen in het vergrendelscherm niet uitgeschakeld zijn.
  • Zelfs als de meldingen uitgeschakeld zijn, kan een SIM kaart verwijderd worden en in een andere smartphone geplaatst worden, waarmee toegang tot SMS-berichten met wachtwoorden verstrekt wordt.
  • SMS-berichten met wachtwoorden kunnen onderschept worden door Trojaanvirussen in je smartphone.
  • Met verschillende geniepige tactieken (overhalen, omkopen, etc.) kunnen criminelen SIM-kaarten in handen krijgen met het nummer van het slachtoffer, afkomstig uit winkels van telefoonmaatschappijen. SMS-berichten gaan dan naar dat nummer en het nummer van het slachtoffer wordt dan afgesloten van het netwerk.
  • SMS-berichten met wachtwoorden kunnen worden onderschept door middel van een simpel gebrek in het SS7 protocol dat gebruikt wordt bij het versturen van berichten.

Wees ervan bewust dat zelfs de meest high-tech en intensieve methodes voor het stelen van SMS-wachtwoorden (SS7 uitbuiting) al in de praktijk zijn gebracht. De rest is slechts dagelijkse kost voor kwajongens. Dat gezegd hebbende, we hebben niet te maken met veronderstellingen, maar met echte bedreigingen.

Al met al zijn SMS-wachtwoorden niet erg veilig, en soms zijn ze zelfs extreem onveilig. Het is dus aan te raden om je horizon te verbreden met alternatieven op het gebied van 2FA, het onderwerp van de dag.

Welke twee-factor-authenticatie te kiezen

Eenmalige codes in een bestand of op papier

De simpelste manier om eenmalige SMS-wachtwoorden te vervangen is, jazeker, eenmalige wachtwoorden, maar die van tevoren zijn voorbereid. Het is niet de ergste optie, vooral voor services waarbij je vaak inlogt. Zelfs voor goeie-ouwe-Facebook zou deze methode goed werken, vooral als back-up plan.

Het is vrij rechttoe rechtaan: de diensten genereren een dozijn eenmalige codes en geven deze weer. Later kunnen deze gebruikt worden om een login te authentiseren. Deze codes kunnen worden uitgeprint of opgeschreven en in een kluis worden bewaard. Of nóg simpeler, ze kunnen worden geëncrypteerd in een notitie in een wachtwoord manager.

Er is geen essentieel verschil tussen het opslaan van de codes in een fysieke of digitale vorm – wat van belang is, is dat deze (1) niet kwijtraken en (2) niet gestolen kunnen worden.

Daar is ook een app voor: Authenticatie-apps

Er is ook een keerzijde aan eenmalig gegenereerde eenmalige codes: vroeg of laat ben je door de codes heen en dan kan het zomaar gebeuren dat je zonder codes zit. Gelukkig is er een betere optie: eenmalige codes kunnen op aanvraag worden gegenereerd door (normaalgesproken) zeer simpele authenticatie-apps.

Hoe authenticatie-apps werken

2FA apps zijn zeer makkelijk te gebruiken. Dit moet je doen:

  • Installeer de authenticatie-app op je smartphone,
  • Ga naar de beveiligingsinstellingen van de dienst waarmee je de app wilt gebruiken,
  • Selecteer 2FA (mits de optie bestaat); de dienst zal een QR-code weergeven die direct in de 2FA app kan worden gescand,
  • Scan de code met de app – een nieuwe eenmalige code zal iedere 30 seconden worden gegenereerd.
Hoe een authenticator app in Facebook in te schakelen

De codes worden gemaakt op basis van een key (die alleen jij en de server kennen) en de huidige tijd, afgerond tot 30 seconden. Beide componenten zijn hetzelfde voor jou en de dienst, waardoor de codes synchroon worden gegenereerd. Dit algoritme wordt OATH TOTP (Time-based One-Time Password) genoemd, en het is het meest gebruikte algoritme.

Er is een alternatief, ook bekend als OATH HOTP (HMAC-based One-Time Password). In plaats van de huidige tijd, gebruikt dit algoritme een teller die voor iedere nieuw gegenereerde code met één toeneemt. Het wordt zeer zelden gebruikt, omdat het gebruik ervan het synchroon genereren van codes met de app en de dienst in de weg staat. Simpelweg gezien, is er een substantieel risico dat de teller op hol slaat op het verkeerde moment en dat je eenmalige wachtwoord niet werkt.

OATH TOTP kan dus de facto als standaard worden beschouwd (hoewel het officieel gezien niet de standaard is, iets waar de makers op hameren in de specificaties.

Compatibiliteit tussen 2FA app en service

De meerderheid van 2FA apps gebruikt hetzelfde algoritme, waardoor het niet veel uitmaakt welke van deze apps je kiest voor services die authenticatie ondersteunen.

Maar iedere vuistregel heeft uitzonderingen. Door onbekend redenen voor buitenstaanders, maken sommige van deze services liever gebruik van hun eigen 2FA apps, die alleen bij hen werken. De services zelf werken niet met andere apps dan die van henzelf.

Dit komt vooral voor bij grote uitgevers van videogames, bijvoorbeeld Blizzard Authenticator, Steam Mobile met ingebouwde Steam Guard, Wargaming Auth, en andere zijn geen van alle compatibel met derde partij apps en diensten. Alleen de op maat gebouwde apps kunnen met de relevante game-platforms worden gebruikt.

Adobe is ook deze vreemde weg ingeslagen met de Adobe Authenticator, die alleen werkt met AdobeID accounts. Desalniettemin is het toch mogelijk om andere authenticators te gebruiken om te authenticeren in AdobeID, en daarom is het volstrekt onduidelijk waarom een aparte app nodig was.

Hoe dan ook hebben de meeste normale IT-bedrijven geen restrictie voor het gebruik van andere 2FA apps. En zelfs als een bedrijf ineens besluit om zijn eigen app te creëren, dan kan de app in de meeste gevallen ook voor andere accounts gebruikt worden, behalve die van de eigen dienst.

Kies simpelweg de authenticator die het beste bij je past wat betreft extra opties – het zal met de meeste services werken die over het algemeen 2FA ondersteunen.

De beste apps voor twee-factor-authenticatie

De keuze tussen de verschillende 2FA apps is verbazingwekkend breed. De zoekterm “authenticator” geeft in Google Play of App Store tientallen opties. We raden af om de eerste de beste app te installeren die je tegenkomt; er zou weliswaar een veiligere optie kunnen zijn. Onthoud dat je de app de toegang tot je accounts zal toevertrouwen (het zal jouw wachtwoorden niet weten, natuurlijk, maar je voegt 2FA toe, omdat wachtwoorden de neiging hebben om achterhaald te worden). Over het algemeen is het de moeite waard te kiezen voor een app die door een grote en betrouwbare ontwikkelaar is gemaakt.

Hoewel de standaardfunctie van al deze apps hetzelfde is – het genereren van eenmalige codes met een en hetzelfde algoritme, hebben sommige authenticatoren extra opties of interfaceopties die aantrekkelijk zijn. Hier volgen de meest interessante opties.

1. Google Authenticator

Ondersteunde platforms: Android, iOS

Google Authenticator app

Zoals aangegeven in alle tech media, is Google Authenticator de gemakkelijkste 2FA apps die op de markt is. Het heeft zelfs geen instellingen. Het enige dat je kunt doen is een nieuwe token toevoegen (de naam voor de codegenerator voor een individueel account) of een bestaande verwijderen. Om een code te kopiëren, hoef je alleen maar te drukken. Dat is alles!

Zoveel eenvoud heeft echter een keerzijde: Mocht je niet blij zijn met de interface of wil je meer opties, dan zul je een andere authenticator app moeten installeren.
+ Zeer gemakkelijk in gebruik.

 

2. Duo Mobile

Ondersteunde platforms: Android, iOS

Duo Mobile authenticator app

Duo Mobile is ook een zeer gebruiksvriendelijke en minimalistische app, zonder extra instellingen. Het heeft een voordeel ten opzichte van Google Authenticator: Duo Mobile verbergt standaard de codes – om ze te kunnen zien, moet de gebruiker op een specifieke token drukken. Als je, net als ik, er niet van houdt dat een boel codes voor al je accounts op je scherm verschijnt bij het openen van je authenticator, dan is Duo Mobile iets voor jou.
+ Verbergt standaard de codes.

 

3. Microsoft Authenticator

Onderstuende platforms: Android, iOS

Microsoft Authenticator app

Microsoft heeft ook gekozen voor een app zonder fratsen met zijn minimalistische authenticator. Dat gezegd hebbende, valt op dat Microsoft Authenticator meer opties heeft dan Google Authenticator. Ten eerste, hoewel alle codes standaard worden verborgen, kan iedere token apart worden ingesteld om verborgen te worden of niet.

Ten tweede simplificeert Microsoft Authenticator het inloggen in Microsoftaccounts. Na het invoeren van je wachtwoord, hoef je alleen maar te drukken op de knop in de app om je login te bevestigen – en dat is alles, je hoeft niet eens een eenmalige code in te voeren.
+ Kan ingesteld worden om codes te verbergen of niet.
+ Extra functies om in te loggen in Microsoftaccounts.

 

4. FreeOTP

Ondersteunde platforms: Android, iOS

FreeOTP door Red Hat authenticator app

Er zijn vier redenen waarom je voor dit schatje van Red Hat wilt gaan. Ten eerste, omdat het een open source software is. Ten tweede, omdat het de kleinste app is uit deze lijst – de iOS versie is slechts 750KB. (Ter vergelijking, de minimalistische Google Authenticator neemt bijna 14MB in beslag, en de Authy app, hieronder uitgelicht, is zelfs 44MB.)

Ten terde, de app verbergt standaard de codes, en om ze te onthullen, moet je op de token drukken. Ten vierde, FreeOTP biedt de mogelijkheid tokens op flexibele en handmatige manier in te stellen, mocht je dit willen. Natuurlijk wordt de gebruikelijke methode voor token creatie, het scannen van een QR-code, ook ondersteund.
+ Verbergt standaard de codes.
+ Neemt slechts 750KB in beslag.
+ Open source software.
+ De meeste instellingen wat betreft het handmatig creëren van tokens.

 

5. Authy

Ondersteunde platforms: Android, iOS, Windows, macOS, Chrome

Twilio Authy authenticator app

Authy is de hipste van alle 2FA apps, met het grootste voordeel dat alle tokens in de cloud worden opgeslagen. Op deze manier heb je toegang tot de tokens vanuit al je apparaten. Tegelijkertijd vereenvoudigt het de migratie naar nieuwe apparaten. Het is niet nodig om 2FA te heractiveren in iedere service, waardoor je bestaande tokens kunt blijven gebruiken.

Tokens in de cloud zijn geëncrypteerd met een key op basis van een gebruikerswachtwoord, wat betekent dat data veilig wordt opgeslagen en allesbehalve makkelijk te stelen is. Het is ook mogelijk om een login PIN in te stellen voor de app of het te beveiligen met vingerafdrukherkenning, mits jouw smartphone de juiste scanner heeft.

Het belangrijkste nadeel van Authy is dat je een account aan een mobiel nummer moet worden gelinkt – anders werkt de app niet.
+ Tokens worden opgeslagen in de cloud, waardoor je deze op al je apparaten kunt gebruiken.
+ Migratie naar andere apparaten is om bovengenoemde reden erg makkelijk.
+ App login beveiligd met PIN of vingerafdruk.
+ Slechts de code voor de laats gebruikte token wordt vertoond op het scherm.
+ In tegenstelling tot andere apps, worden naast Android en iOS ook Windows, macOS en Chrome ondersteund.

Werkt niet zonder een Authy account dat gelinkt is aan een telefoonnummer.

 

6. Yandex.Key

Ondersteunde platforms: Android, iOS

Yandex.Key authenticator app

Ik ben van mening dat het idee achter Yandex.Key de app het meest geschikt is voor 2FA. Er is aan de ene kant geen onmiddellijke registratie vereist – je kunt er net als bij Google Authenticator onmiddellijk mee aan de slag. Daarnaast heeft de app verschillende extra functies voor diegenen die houden van instellingen op maat.

Ten eerste kan Yandex.Key vergrendeld worden met een PIN of vingerafdruk. Ten tweede biedt het de mogelijkheid een back-up met wachtwoordbeveiliging aan te maken van de tokens in de Yandex cloud (deze fase vereist wel een telefoonnummer) en deze te restaureren op welk apparaat je ook gebruikt. Op dezelfde manier is het mogelijk tokens over te dragen naar een nieuw apparaat, mocht je willen migreren.

Yandex.Key krijgt het voor elkaar de eenvoud van Google Authenticator te combineren met de uitgebreide functies van Authy, afhankelijk van je voorkeuren. De enige keerzijde van de app is dat de interface niet erg gebruiksvriendelijk is met een groot aantal tokens.
+ In essentie minimalistisch, maar met de mogelijkheid om uitgebreide functies in te stellen.
+ Back-ups van tokens kunnen worden gecreëerd in de cloud om op meerdere apparaten gebruikt te worden of om te migreren naar nieuwe apparaten.
+ De app login kan worden beveiligd met PIN of vingerafdruk.
+ Slechts de code van de laatst gebruikte token wordt vertoond op het scherm.
+ Vervangt het permanente wachtwoord voor jouw Yandex account.

Bij een groot aantal tokens is het moeilijk te achterhalen welke token je moet gebruiken.

 

FIDO U2F hardware authenticators: YubiKey en overige

Als een app die eenmalige codes genereert voor jou een te zwakke en ongrijpbare vorm van beveiliging van je accounts is, en als je een stabielere en betrouwbaardere vorm van beveiliging voor je account zoekt, in de vorm van een sleutel die je letterlijk op zak hebt, kijk dan niet verder dan hardware tokens op basis van de U2F (Universal 2nd Factor) standaard, gecreëerd door FIDO Alliance.

Hoe tokens van FIDO U2F werken

U2F hardware tokens zijn de lievelingetjes van veiligheidsspecialisten. In eerste instantie omdat ze vanuit gebruikersperspectief er simpel te werk gaan. Om te beginnen hoef je alleen de U2F token aan te sluiten op je apparaat en te registreren in een compatibele service. Het proces neemt slechts enkele kliks in beslag.

Om daarna je login te bevestigen, moet je de U2F token aansluiten op het apparaat waarmee je wilt inloggen en op de tokenknop te drukken (sommige apparaten vereisen een PIN of vingerafdrukscan, maar dat is een extra functie). Dat is alles – geen complexe instellingen, of lange willekeurige karakters invoeren, of andere poespas die vaak geassocieerd wordt met het woord cryptografie.

Hoe te authenticeren in Facebook met YubiKey

Voer de key in en druk op de knop — en meer is er eigenlijk niet

Tegelijkertijd kan gesteld worden dat onder de motorkap er een slimme en gezonde cryptografie zit: Bij het registreren van een token bij een service, wordt een paar cryptografische sleutels gecreëerd – privé en openbaar. De openbare sleutel wordt opgeslagen op de server en de privésleutel wordt opgeslagen op een Secure Element chip, het hart van de U2F token, dat nooit loskomt van het apparaat.

De privé-key wordt gebruikt om de loginbevestiging te encrypteren, wat vervolgens naar de server gestuurd wordt en gedecrypteerd kan worden met de openbare key. Als iemand zich voordoet voor jou en een loginbevestiging met de verkeerde privé-key probeert te verplaatsen, dan zal decryptie met de openbare key niets opleveren en wordt toegang tot de account geweigerd.

Wat voor typen U2F apparaten er zijn

Het bekendste en meestvoorkomende voorbeeld van U2F is YubiKey, gemaakt door Yubico. Het bedrijf heeft deze standard ondersteund, maar besloot het open aan te bieden, precies de reden waarvoor de FIDO Alliance werd opgesteld. En omdat de standaard open is, wordt je keuze niet beperkt: U2F-compatibele apparaten worden geproduceerd en verkocht door verschillende bedrijven, en online winkels bieden een breed scala aan modellen.

Yubico YubiKey — de populairste U2F token

YubiKey — misschien wel de populairste U2F token

Bijvoorbeeld, Google introduceerde recentelijk een suite authenticators onder de vlag van Google Titan Security Keys. In feite zijn het keys geproduceerd door Feitian Technologies (de tweede meest populaire fabrikant van U2F tokens, op Yubico na) waarvoor Google zijn eigen firmware ontwikkelde.

Natuurlijk werken alle hardware authenticators die compatibel zijn met de U2F standaard, even goed met de services die ook compatibel zijn met deze standaard. Er zijn echter verschillen, namelijk de interfaces die ondersteund worden door de keys. Dit bepaalt direct met welke apparaten het werkt:

USB: om aan te sluiten op PC’s (of ze nu werken op Windows, Mac, of Linux; de keys werken zonder de installatie van drivers). Naast de gebruikelijke USB-A zijn e rook keys voor USB-C.

NFC: vereist bij het gebruik van Android smartphones en tablets.

Bluetooth: vereist op mobiele apparaten zonder NFC, Bijvoorbeeld, iPhonegebruikers hebben nog steeds een Bluetooth-gestuurde authenticator. Hoewel iOS nu apps in staat stelt om NFC te gebruiken (vorig jaar had alleen Apple Pay de mogelijkheid), moeten de meeste U2F-compatibele appontwikkelaars nog hun voordeel halen uit deze functie. Bluetooth authenticators hebben enkele keerzijdes: ten eerste moeten ze opgeladen worden; ten tweede duurt het langer om te verbinden.

Basismodellen van U2F tokens ondersteunen normaalgesproken alleen U2F en kosten $10–$20. Andere, duurdere apparaten ($20–$50) kunnen ook dienen als smart card, genereren eenmalige wachtwoorden (inclusief OATH TOTP en HOTP), genereren en slaan PGP-encryptie-keys op en kunnen worden gebruikt om in te loggen met Windows, macOS, Linux, enzovoort.

Wat te kiezen: SMS, app, of YubiKey?

Dus, welke keuze te maken wat betreft twee-factor-authenticatie? Er is geen universeel antwoord op deze vraag. Verschillende 2FA versies en combinaties zijn mogelijk voor verschillende services. Bijvoorbeeld, top-prioriteit-accounts (een mailbox gelinkt aan andere accounts, etc.) zouden extreem beveiligd moeten worden – dat betekent vergrendeld met een hardware U2F token waarbij alle andere 2FA opties geblokkeerd zijn. Op die manier kun je er zeker van zijn dat niemand ooit toegang tot je account zal krijgen zonder deze token.

Een prima optie is het linken van twee keys aan je account, zoals met autosleutels: de een bevindt zich in je zak en de andere op een veilige plek in het geval van verlies. Je kunt zelfs verschillende typen keys gebruiken: bijvoorbeeld een authenticator app op je smartphone als primaire key en een U2F token of een stuk papier met eenmalige wachtwoorden in je kluis als back-up.

In ieder geval is het advies om SMS-gestuurde eenmalige wachtwoorden te vermijden, indien mogelijk. Dit is niet altijd het geval. Financiële services, bijvoorbeeld, zijn uiterst conservatief en bieden zeer zelden authenticatie aan die niet via SMS plaatsvindt.