Een paar maanden met een Yubikey

Ik heb een Yubikey gekocht. Eindelijk. Ik wilde er al een tijd heen maar vond het prijskaartje van 50 euro toch iets te hoog. Ik ben nu toch gezwicht en wilde even wat dingen op een rij zetten. 2FA is namelijk nog steeds één grote rotzooi en hardware tokens maken het niet veel beter.

First things first: een korte opfrisser over wat een Yubikey ook alweer is. Een Yubikey is een fysieke veiligheidssleutel. Hij ziet doorgaans uit als een usb-stick, en je kunt 'em aan je sleutelbos hangen (handig!). De Yubikey werkt als een vorm van tweestapsverificatie, als alternatief voor sms'jes of TOTP-authenicator-apps. Dat heeft voordelen: 2FA via sms is niet zo veilig (maar altijd nog véél beter dan géén 2FA!), en ook TOTP-codes hebben hun nadelen zoals toegang nodig hebben tot je telefoon. Een Yubikey genereert automatisch een token voor je dat hardwarebased is, en je dus fysiek in je pc moet steken voor je het kan gebruiken. Klinkt veilig. Is het ook. Maar gebruik in de praktijk valt toch nog wat tegen.

Het kopen van een Yubikey is al best een obstakel; er zijn er namelijk nogal wat. Nu heeft Yubico zelf een keuzehulp gemaakt, maar die gaat vooral over praktische zaken: welke usb-aansluiting gebruik je, heb je NFC nodig, wil je 'em aan je sleutelhanger kunnen dragen? Belangrijke zaken, maar diepere zaken zoals welke encryptieprotocollen of cryptografische secrets bij je passen worden daarin niet uitgelegd. Yubico gaat er vanuit dat je als professional wel het verschil weet tussen termen als FIPS 140-2, FIDO-2, U2F of smart cards, óf dat je gewoon een Yubikey koopt die out of the box doet wat je wil. Als je daar meer over wilt weten heeft het bedrijf veel blogposts geschreven, maar echt toegankelijk zijn die niet als je niet diep in de encryptiewetenschap zit.

Uiteindelijk ben ik voor de Yubikey 5 NFC gegaan, de meest recente. Mijn redenering was dat die de meeste protocollen ondersteunde (FIDO, FIDO2, U2F). Zelfs als je niet exact weet wat dat betekent (☝️) dan wil je alsnog zoveel mogelijk protocollen met zoveel mogelijk opties. Ook belangrijk: ik wil een key die zowel op mijn desktop/laptop als telefoon past. Dan moet je voor een USB-A-aansluiting en NFC gaan, want mijn computer heeft geen USB-C.

Prijs

De Yubikey 5 NFC is voor € 50,- te koop. Dat vind ik veel geld. Zeker als je bedenkt dat de Yubikey niet zó veel toevoegt aan TOTP-authenticatie is het niet iets waarvan ik grootschalige adoptie snel zie gebeuren. Erg jammer.

Wat me echter meer tegenvalt is hoe weinig de Yubikey wordt ondersteund. Dat is niet een probleem dat Yubico kan oplossen; sterker nog, met de ondersteuning van FIDO2 waar WebAuthn onder valt wordt wachtwoordloos inloggen makkelijker en dat is een heel goede zaak. Maar dan moeten andere diensten het wel ondersteunen, en helaas is dat nog niet het geval. Veel diensten ondersteunen überhaupt geen 2FA-diensten zoals TOTP/OOTP, laat staan Yubikey.

Met name het aantal e-mail- en hostingproviders dat Yubikeys ondersteunt is schamel. Juist dat ene zwakke punt in je threat model wil je extra goed beveiligen, maar helaas.

Yubico heeft een lijst online staan met alle diensten die zogenaamd met Yubikey werken. Dat is een leugen. Er staan best veel diensten bij die ik gebruik (Gmail, Twitter, Mailchimp, Instagram), maar slechts een paar daarvan hebben native ondersteuning voor de Yubikey. Dat wil zeggen: je plugt de key in en drukt op de knop om in te loggen, in plaats van dat je handmatig een code overtikt vanuit Authenticator. Dat werkt bij Gmail en Twitter, maar niet bij Mailchimp en Instagram.

Wat Yubico wél bedoelt is de Yubikey Authenticator-app (voor Android, maar hij is er ook voor Windows/macOS/Linux, niet voor iOS). Dat is gewoon een authenticator-app zoals er veel zijn: Google, Authy, Microsoft... Met als grote verschil dat de Yubico-app met de Yubikey te ontgrendelen is.

Wat ook opvalt: bij veel diensten die de Yubikey wél native ondersteunen (zoals Twitter) kun je niet alléén een Yubikey instellen als tweestapsverificatie. Je moet ofwel een TOTP-app of zelfs een telefoonnummer instellen als alternatief. Als je alleen de Yubikey selecteert als 2FA-optie verwijdert Twitter 2FA in z'n geheel. Een telefoonnummer opgeven is dan heel stom. Als een malafide kwaadwillende dan je account wil overnemen kan hij gewoon een alternatieve inlogmethode kiezen en alsnog proberen een sms te onderscheppen. Wat is in dat geval de meerwaarde van de Yubikey?!

Gebruik

In de praktijk is de Yubikey wel lekker makkelijk te gebruiken, mits je de NFC-versie hebt dan. De Yubico Authenticator is lekker uitgebreid en biedt veel mogelijkheden je eigen authorisatie op te stellen. Het grote voordeel is dat je de app alleen kunt ontgrendelen met de Yubikey zelf, dus hij ís wel beveiligd. Ook moet je elke 30 seconden de Yubikey weer opnieuw pairen, of als de codes automatisch resetten. Je moet wel opletten dat je bij de 2FA van een willekeurige dienst ook gewoon de default instellingen laat staan. Ik vinkte aan dat ik een TOTP-code van 8 cijfers wilde in plaats van de default 6 en toen accepteerde de dienst de code niet meer.

Bij de handvol diensten waar ik een Yubikey kan inzetten (Twitter, Gmail etc.), werkt het gebruik doorgaans wel goed, maar bij Gmail heb ik ook een paar keer gehad dat hij de key helemaal niet herkende. Dan moet je een 'alternatieve inlogmethode gebruiken', zoals je authenticator-app of een backup-code (van papier! Hoe 2001!). Ook kun je naar g.co/sc gaan om daar een one-time-password te genereren. Dat laatste moet ook als je apps gebruikt. Zelfs als apps het Chromium Embedded Framework gebruiken werken ze niet native met de Yubikey en moet je dus gewoon een andere optie gebruiken.

Áls de Yubikey dus toe te passen is is het een heel veilige en praktische manier om tweestapsverificatie in te zetten. Het probleem is alleen dat dat nu zelden het geval is. Dat is niet zozeer Yubico's fout, maar een probleem met standaarden zoals FIDO2 en WebAuthn die moeten worden geaccepteerd. Maar het voelt niet af.