ID.nl logo
Huis

Jasper-tutorial: Bouw je eigen spraakassistent

Google en Amazon proberen hun spraak-gestuurde apparaten Home en Echo als een centraal punt voor slimme apparaten aan te bieden. Maar deze bedrijven hebben het niet zo op privacy. Gelukkig is er een opensource-alternatief. Lees in deze Jasper-tutorial hoe je je eigen spraakassistent bouwt!

Aan het einde van dit artikel heb je dus je eigen Google Home of Amazon Echo, maar dan een die je privacy respecteert en waar je zelf volledige controle over hebt. Daarvoor zetten we een Raspberry Pi 3 in. Dat minicomputertje heeft ingebouwde wifi, zodat we een kabel minder nodig hebben. Het besturingssysteem plaatsen we op een micro-sd-kaartje. Het enige wat we dan naast de voeding nog dienen aan te sluiten, zijn een microfoon en luidsprekers. De luidsprekers sluiten we aan op de analoge uitgang van de Pi. De geluidskwaliteit daarvan is niet geweldig, maar voor zo’n computerstem is het voldoende.

Een analoge ingang heeft de Pi niet, maar we sluiten eenvoudig een usb-microfoon aan. Het resultaat van ons knutselwerk is uiteraard niet zo mooi als een Google Home of Amazon Echo, maar als je wat handig bent, bouw je het geheel eenvoudig in een houten behuizing die niet misstaat in je woonkamer. Die afwerking laten we als oefening voor jou!

Jasper downloaden

Voor de software gebruiken we Jasper, een opensource-spraakassistent. De oorspronkelijke ontwikkelaars hebben het project al een tijdje geen update meer gegeven, maar Matt Curry heeft de ontwikkeling op zich genomen en al enkele nieuwe releases uitgebracht. We werken in deze masterclass met versie 1.5 van Matt Curry.

Let dus op dat je niet een officieel image van het Jasper-project downloadt, want dat is niet meer up-to-date. Download een image van de website van Matt Curry (http://bit.ly/2nwRBV9). Vink het bestand op de Amazon Drive van Matt Curry aan en klik onderaan op Download. Het is 1,4 GB groot en het duurt wel even voor je het binnen hebt.

Pak het tar.gz-bestand uit, bijvoorbeeld met het programma 7-Zip dat allerlei compressieformaten ondersteunt. Open het bestand daarvoor met 7-Zip en klik op Extract om het img-bestand erin uit te pakken.

Schrijf dan het uitgepakte bestand naar het micro-sd-kaartje. Dat kan met het programma Win32DiskImager. Steek je micro-sd-kaartje in de kaartlezer van je computer en kies in Win32DiskImager de schijfletter van je kaartje. Selecteer het img-bestand van Jasper en klik op Write om het naar je kaartje te schrijven.

Let op: het programma overschrijft de volledige inhoud van het kaartje! Gebruik dus alleen een kaartje waar geen data meer op staan die je nodig hebt, en controleer dubbel of je de juiste schijfletter kiest voordat je op Write klikt. Nadat het image naar het kaartje is geschreven, haal je het uit je kaartlezer en steek je het in je Pi.

Raspbian op Raspberry Pi

Sluit tijdelijk een toetsenbord en scherm op je Pi aan voor de configuratie, sluit je luidsprekers en usb-microfoon aan en tot slot de voedingskabel. Als alles goed gaat, start je Pi nu en krijg je een inlogprompt van Raspbian te zien. Log in met gebruikersnaam pi en wachtwoord raspberry. Voer het configuratieprogramma van Raspbian uit met

sudo raspi-config

Kies eerst Expand Filesystem zodat het bestandssysteem je volledige micro-sd-kaart inneemt. Kies daarna Change User Password om het standaardwachtwoord te wijzigen.

Zorg dat Wait for Network at Boot ingeschakeld is. Bij Internationalisation Options kies je je taal, tijdzone, toetsenbordindeling en je land. Ga dan naar Advanced Options en zet onder Memory Split de hoeveelheid geheugen voor de gpu op 16 megabytes, zodat je zoveel mogelijk geheugen voor de cpu overhoudt. Schakel ook de ssh-server in onder SSH, zodat je het toetsenbord en beeldscherm niet aangesloten hoeft te houden, maar met Putty via het netwerk kunt inloggen. Ga tot slot met de Tab-toets naar Finish en antwoord No bij de vraag om nu te herstarten.

Nu hoeven we alleen nog wifi te configureren. Scan naar de aanwezige wifi-netwerken met

sudo iwlist wlan0 scan

Achter ESSID staat de naam van het netwerk. Open daarna het configuratiebestand met

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

en voeg de configuratie voor je netwerk toe met regels

network={, ssid="JouwESSID", psk="JouwWifiWachtwoord"

En

}

Herstart daarna je Pi met

sudo reboot

©PXimport

Audio instellen

We gaan ervan uit dat je speakers hebt aangesloten op de 3,5mm-uitgang van de Pi en een usb-luidspreker op een usb-poort. We zorgen dat Raspbian de usb-audiodrivers eerst laadt. Open daarvoor het juiste bestand met

sudo nano /etc/modprobe.d/alsa-base.conf

en zorg dat bij snd_usb_audio als index 0 staat en bij snd_bcm2835 als index 1. Zorg ook dat op de laatste regel van dit bestand bij slots eerst snd-usb-audio komt en daarna pas snd-bcm2835. Sla het bestand op met Ctrl+O en sluit nano af met Ctrl+X. Voer daarna

sudo nano /usr/share/alsa/alsa.conf

uit en zoek met Ctrl+W naar defaults.ctl.card. Controleer of hier en bij defaults.pcm.card als waarde 0 staat en verander dit indien nodig. Controleer nu of je met de luidspreker iets kunt opnemen. Voer daarvoor de opdracht

arecord temp.wav

uit en spreek iets in. Sluit de opname af met Ctrl+C. Speel de opname daarna af met

aplay -D hw:1,0 temp.wav

Hoor je wat je zojuist hebt ingesproken, dan is je audio correct geconfigureerd.

Lees verder op de volgende pagina.

Nu is ons besturingssysteem klaar om Jasper te installeren.

Jasper installeren en configureren

Ga naar de juiste directory met

cd Jasper-RPI-Tools/installers

en voer het installatieprogramma uit met

./jasper-repo-installer.sh

Druk op Enter om te bevestigen dat je Jasper wilt downloaden, bevestig dat gebruiker pi het programma draait, dat je het programma in de directory /home/pi wilt installeren en kies de versie main. Herstart daarna je Pi.

Met de standaardinstellingen werkt Jasper al bijna, maar je hebt nog één ding nodig: een server-token voor Wit.ai. Log op die website in met een GitHub- of Facebook-account. Klik zodra je ingelogd bent bovenaan rechts op Settings en kopieer het Server Access Token. Voer dan op je Pi de opdracht

nano ~/.jasper/profile.yml

uit en vul wat gegevens in, zoals je naam, Gmail-adres, Gmail-wachtwoord, telefoonnummer, locatie, tijdzone enzovoort. Informatie die je niet wilt invullen, laat je gewoon open.

Vul bij stt_engine de engine witai in. Voeg ook de regels

witai-stt:

En

access_token: ERJKGE86SOMERANDOMTOKEN23471AB

toe, waarbij je uiteraard je eigen token van Wit.ai invult. Sla het bestand op met Ctrl+O en sluit het af met Ctrl+X. Herstart Jasper met

sudo systemctl restart jasper-daemon.service

©PXimport

Debuggen

Als Jasper niet doet wat hij moet doen, is het moeilijk om te zien wat er juist misloopt. Is het omdat Jasper je accent niet verstaat, of omdat je een fout in het configuratiebestand hebt staan? Sluit daarom alle draaiende Jasper-instanties af met

pkill python2

en start Jasper manueel op met

jasper-client/jasper.py --debug

Het programma toont nu zijn uitvoer en met de optie --debug krijg je nog meer informatie te zien. Als er iets mis is met het configuratiebestand, krijg je hier een waarschuwing of foutmelding te zien. En als je een opdracht inspreekt, krijg je de tekst te zien die Jasper uit je spraak herkent. Zo weet je onmiddellijk wanneer je wat duidelijker moet articuleren. Is je probleem opgelost, sluit Jasper dan af met Ctrl+C en start het programma terug op de achtergrond op met

sudo systemctl start jasper-daemon.service

Praten met Jasper

Wanneer Jasper start, zegt hij “How can I be of service?” gevolgd door je naam. Vanaf dan luistert je assistent naar jou. Als je “Jasper” zegt, laat Jasper een hoog biepje horen. Dan spreek je je opdracht in, bijvoorbeeld “What’s the time?”, waarna Jasper een laag biepje genereert. Daarna spreekt Jasper zijn antwoord uit. Let wel op dat je onmiddellijk na het eerste biepje je opdracht inspreekt, want Jasper wacht niet lang.

Elke opdracht die Jasper verstaat, zit in een afzonderlijke module. Standaard komt Jasper al met enkele modules, zoals de tijd, “How’s the weather”, “What’s in the news”, “What’s the meaning of life”, “Tell me a joke”, enzovoort.

Voor de integratie met Gmail vul je de variabelen gmail_address en gmail_password in het configuratiebestand ~/.jasper/profile.yml in met nano. Let op: iedereen die het micro-sd-kaartje van je Pi steelt of via het netwerk op je Pi inbreekt omdat je het standaardwachtwoord niet hebt veranderd, is zo in staat om je Gmail-wachtwoord te lezen.

Gebruik daarom authenticatie in twee stappen voor Gmail en stel een app-wachtwoord in voor Jasper, dat je in zijn configuratiebestand invult. Dit wachtwoord kun je op elk moment intrekken op https://myaccount.google.com/security. Als je Gmail-gegevens geconfigureerd zijn, vraag je aan Jasper “Do I have any email?” en antwoordt hij met het aantal ongelezen e-mails.

Ook integratie met Facebook is mogelijk: dan kun je je Facebook-notificaties opvragen of Jasper vragen wie er vandaag jarig is. En heb je Spotify Premium, dan laat je eenvoudig je afspeellijsten van Spotify door je Pi afspelen met stembesturing. Beide modules vereisen wel wat meer configuratie, we verwijzen daarvoor naar de documentatie van Jasper.

Pocketsphinx, een andere speech-to-text-engine

We hebben nu met de standaard speech-to-text-engine (STT) Wit.ai gewerkt, omdat die eenvoudig te activeren is. Een nadeel is dat die al je spraak over internet stuurt naar de servers van Wit.ai, wat vanuit privacystandpunt niet aan te raden is. Bovendien levert het sturen van je spraak over internet ook een vertraging op. We tonen hier daarom hoe je naar een offline stt-engine overschakelt, Pocketsphinx. Let wel op: die herkent iets minder goed spraak dan Wit.ai.

Ververs eerst de pakketbronnen van Raspbian met

sudo apt-get update

Installeer daarna Pocketsphinx en de Python-module voor Pocketsphinx met

sudo apt-get install pocketsphinx python-pocketsphinx

Daarna dienen we enkele afhankelijkheden zelf te compileren. Dat is nogal een omslachtig proces. We verwijzen daarvoor naar de documentatie van Jasper, maar niet alles klopt meer. Volg eerst de uitleg onder het kopje ‘Installing CMUCLMTK’.

Download nu OpenFST 1.3.4 met de opdracht

wget -O openfst_1.3.4-1_armhf.deb https://docs.google.com/uc?id=0ByR-0pXyV40pNlZZY0p6MUVpWW8&export=download

En installeer het met

sudo dpkg -i openfst_1.3.4-1_armhf.deb

Download dan m2m-aligner 1.2 met

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/m2m-aligner/m2m-aligner-1.2.tar.gz

Pak het uit met

tar xvzf m2m-alifner-1.2.tar.gz

Open de directory en compileer het met

cd m2m-aligner-1.2 en sudo make

Ga terug naar de home-directory met

cd

en download mitlm 0.4.1 met

wget https://github.com/mitlm/mitlm/releases/download/v0.4.1/mitlm_0.4.1.tar.gz

Pak het uit met

tar xvzf mitlm_0.4.1.tar.gz

Ga in de directory met

cd mitlm-0.4.1/

configureer het pakket met

./configure

en installeer het met

sudo make install

©PXimport

Ga terug naar de home-directory met

cd

en download Phonetisaurus 0.8.1 met

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/phonetisaurus/is2013-conversion.tgz

Pak het bestand uit met

tar xvzf is2013-conversion.tgz

Ga naar de juiste directory met

cd is2013-conversion/phonetisaurus/src

en compileer Phonetisaurus met

sudo make

Maak ondertussen maar een wandeling met de hond, want het compileren duurt een tijdje. Ga dan terug naar de home-directory (met cd) en kopieer enkele gecompileerde bestanden met

sudo cp ~/m2m-aligner-1.2/m2m-aligner is2013-conversion/bin/phonetisaurus-g2p /usr/local/bin

Download dan het Phonetisaurus FST-model met

wget https://www.dropbox.com/s/kfht75czdwucni1/g014b2b.tgz

en pak het uit met

tar xvzf g014b2b.tgz

Ga daarna naar de uitgepakte directory met

cd g014b2b/

en bouw het FST-model met

./compile-fst.sh

Ga daarna terug naar de home-directory en geef de uitgepakte directory een andere naam met

mv ~/g014b2b ~/phonetisaurus

Je bent nu eindelijk klaar met de installatie van Pocketsphinx! Pas daarna in ~/.jasper/profile.yml de stt-engine aan door de regel

stt_engine: sphinx

Voeg ook de regel

pocketsphinx:

En daaronder

hmm_dir: '/usr/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k'

toe. Sla op met Ctrl+O en sluit nano af met Ctrl+X. Start Jasper nu opnieuw, waarna je spraakassistent werkt zonder je spraak het internet op te sturen. Het heeft dus wat moeite gekost, maar daar krijg je wel wat voor terug!

Jasper ondersteunt dus meerdere speech-to-text engines. Drie daarvan sturen wat je tegen Jasper zegt door over internet om de spraak daar te analyseren en de herkende tekst terug te sturen. De engine van Wit.ai werkt met het Wit.ai-platform dat spraakherkenningsalgoritmes door crowdsourcing traint. De engine van Google is dezelfde als die je op Android gebruikt als je “OK, Google” zegt. En de engine van AT&T bouwt voort op de diensten van het gelijknamige telecommunicatiebedrijf.

Als je niet wilt dat anderen in principe kunnen meeluisteren in je woonkamer naar wat je tegen Jasper zegt, laat je deze engines links liggen. Maar toevallig zijn het wel de engines die het beste werken. Wil je een offline stt-engine, dan is Pocketsphinx de eerste keuze. Deze opensource-engine werkt snel en is geoptimaliseerd voor systemen met weinig processorkracht zoals de Raspberry Pi.

De spraakherkenning is wel duidelijk minder goed dan die van de online engines. Een andere offline engine is Julius. Die dien je echter met je eigen akoestisch model te trainen, wat nogal een complexe taak is.

Een andere stem voor Jasper

De stem van Jasper klinkt standaard nogal robotachtig. Dat is de verantwoordelijkheid van de standaard text-to-speech engine die Jasper gebruikt, espeak. Gelukkig is het kiezen van een andere text-to-speech-engine niet zo’n lijdensweg als de installatie van Pocketsphinx. De SVOX Pico tts-engine installeer je eenvoudig met

sudo apt-get install libttspico-utils

Ook de configuratie is eenvoudig. Open het bestand ~/.jasper/profile.yml met nano en voeg de regel

tts_engine: pico-tts

toe. Sla het bestand op met Ctrl+O en sluit nano af met Ctrl+X. Als je nu Jasper opnieuw start, krijg je een veel menselijker klinkende stem te horen. Bovendien hebben we nog altijd het voordeel Jasper zijn uitgesproken woorden niet over internet stuurt, zodat je spraakassistent je privacy garandeert.

Een schoonheidsfoutje is dat de stem van de Pico-tts-engine vrouwelijk is en onze spraakassistent nog altijd naar de mannelijke naam Jasper luistert. In Jasper 1.6 zal de naam eenvoudig te veranderen zijn.

Jasper ondersteunt maar liefst acht text-to-speech engines. Is je privacy je lief, dan vallen verschillende al af omdat ze online werken en de tekst die Jasper naar spraak wil omzetten naar een server sturen. Het zijn wel de tts-engines die de beste spraakherkenning hebben.

Google TTS gebruikt dezelfde text-to-speech-api als die van nieuwere Android-apparaten. De spraaksynthese gebeurt op servers van Google. Ivona TTS werkt met de Ivona Speech Cloud van Amazon, die we ook van in de Kindle Fire kennen. Ook hier gebeurt de spraaksynthese online. MaryTTS werkt ook met een server, maar het voordeel is dat de server opensource is en dat je ze op je eigen machine kunt installeren. Voor de Raspberry Pi is het programma echter nogal zwaar.

Maak je gebruik van een publieke MaryTTS-server, dan is je privacy uiteraard niet gegarandeerd. Tot de offline engines behoren eSpeak, Festival en Flite, die nogal robotachtig klinken. SVOX Pico TTS is de engine die in Android 1.6 gebruikt werd en heeft een vrij goede kwaliteit. Draai je Jasper op een Mac, dan kun je ook Mac OS X TTS inzetten, die de say-opdracht van macOS aanroept.

▼ Volgende artikel
Slimmer overstappen zorgverzekering 2026: pak dubbel voordeel met CashbackXL
© ID.nl
Zekerheid & gemak

Slimmer overstappen zorgverzekering 2026: pak dubbel voordeel met CashbackXL

Naar verwachting stappen dit jaar weer ruim 1,2 miljoen mensen over van zorgverzekering. Verstandig, maar het kan nóg slimmer. Wie overstapt via CashbackXL profiteert namelijk dubbel: je bespaart op de premie én ontvangt cashback-punten die je kunt inwisselen voor keiharde euro's.

We zitten midden in het overstapseizoen. Tot en met 31 december heb je de tijd om je huidige zorgverzekering op te zeggen en een nieuwe te kiezen. De ontevredenheid over de hoge premies is voor velen de belangrijkste reden om te wisselen. Daarnaast kiezen steeds meer mensen voor een minder uitgebreide aanvullende verzekering om de kosten te drukken. Er valt vaak honderden euro's per jaar te besparen door simpelweg te vergelijken. Maar waarom zou je genoegen nemen met alléén een lagere premie?

Punten scoren (en cashen!)

Als je via CashbackXL overstapt, ontvang je voor elke nieuw afgesloten zorgverzekering bij de grote vergelijkers Poliswijzer.nl, Zorgkiezer en Overstappen.nl 2.750 punten. Deze punten zijn geld waard: 1 punt staat gelijk aan € 0,01. Dit betekent dat je per overstap € 27,50 extra voordeel pakt.
Of je nu kiest voor a.s.r., VGZ Bewuzt, OHRA, Zilveren Kruis Ziezo of een van de vele andere verzekeraars uit de lijst: als je via de juiste vergelijker overstapt, pak je die bonus mee. In onderstaand overzicht zie je bij welke vergelijker je moet zijn voor een specifieke verzekeraar.

💡Slimme tip: zo krijg je meerdere cashbacks op één adres

Stappen jij en je partner allebei over? Let dan even goed op. Normaal gesproken geldt de regel: één cashback per vergelijker, per adres/gezin. Maar daar is een slimme oplossing voor. Wil je voor meerdere gezinsleden een cashback ontvangen? Sluit de verzekeringen dan af bij verschillende vergelijkers.

Voorbeeld: Jij sluit je nieuwe verzekering af via Poliswijzer.nl (2.750 punten) en je partner sluit af via Overstappen.nl (ook 2.750 punten). Zo ontvang je op hetzelfde adres twee keer de cashback!

Belangrijk om te weten: geduld wordt beloond

Overstappen doe je vóór 1 januari, maar de controle duurt even. Zorgverzekeraars keuren de aanvragen namelijk pas definitief in april 2026. Het duurt dus even voordat de punten in je account op 'goedgekeurd' staan, maar dat is het wachten waard.

Voorwaarden puntenactie zorgverzekering 2026

Wil je in aanmerking komen voor deze actie, lees dan onderstaande voorwaarden even aandachtig door:

• Je moet 18 jaar of ouder zijn.
• Het moet gaan om een nieuwe verzekering (als je verlengt bij je huidige verzekeraar (ook al sluit je een andersoortige verzekering af) dan geldt dat hier niet als overstappen.
• Alle genoemde cashbacks gelden altijd voor elk eigen risico.

Zo werkt de zorgverzekerings-cashback

Wil jij 2026 financieel goed beginnen? Volg dan deze stappen voor de perfecte tracking:

1. Maak een account aan op CashbackXL.
2. Klik bovenaan in de blauwe balk op Zorgverzekering 2026.
3. Bekijk in het overzicht welke verzekeraar via welke vergelijker (Poliswijzer, Zorgkiezer of Overstappen) beschikbaar is.
4. Klik op de link en start de vergelijking. Let op: accepteer alle cookies op de site van de vergelijker en zet je adblocker uit. Dit is noodzakelijk om de punten te kunnen registreren.
5. Sluit de verzekering af.
6. Je aankoop wordt geregistreerd en na goedkeuring in april 2026 kun je jouw punten verzilveren in euro's.

Waarom je CashbackXL kunt vertrouwen

CashbackXL is de grootste cashback-site van Nederland. De site registreert 97 procent van alle aankopen succesvol en scoort op Kiyoh een klantwaardering van een 9,0. Je ontvangt je uitbetaling maandelijks (of wanneer jij wilt, zonder minimumbedrag), krijgt de hoogste cashback-percentages en kunt terecht bij een toegankelijke klantenservice.

▼ Volgende artikel
Dit wil je weten over tweestapsverificatie, óók zonder je smartphone
© Looker_Studio - stock.adobe.com
Huis

Dit wil je weten over tweestapsverificatie, óók zonder je smartphone

Je inloggegevens alleen met een wachtwoord beveiligen is vragen om problemen. Steeds meer diensten en apps bieden daarom tweefactorauthenticatie (2FA) aan, of ze verplichten dit zelfs. Naast een wachtwoord heb je dan een tweede factor nodig. Vaak gebruik je hiervoor je smartphone, maar wat doe je als je (tijdelijk) geen telefoon hebt?

Dit artikel in het kort

Tweestapsverificatie (2FA) beschermt je accounts beter dan alleen een wachtwoord. Vaak gebruik je hiervoor je smartphone, maar dat hoeft niet. In dit artikel lees je hoe je ook zonder telefoon veilig kunt inloggen. Zo ontdek je hoe desktop-authenticators zoals Proton of KeePassXC werken, hoe je een hardwaresleutel zoals een YubiKey instelt, en hoe je back-upcodes aanmaakt voor noodgevallen. Ook wordt uitgelegd wat een digitale en fysieke token precies doen en hoe toegangssleutels (passkeys) een alternatief vormen voor klassieke wachtwoorden.

Wachtwoorden kun je vergeten, of ze worden gehackt. Daarom is het niet handig om de toegang tot een dienst of app alleen met een wachtwoord te beveiligen. Voor meer veiligheid voeg je daar een tweede authenticatiemethode aan toe. We hebben het over het aanmelden via 2FA (tweefactorauthenticatie oftewel tweestapsverificatie).

Bij 2FA heb je naast iets wat je weet, meestal een wachtwoord, ook iets wat je 'hebt' of 'bent' nodig om in te loggen. Zo'n tweede factor is vaak een unieke, eenmalige code via een authenticator-app op je smartphone. Het kan ook een sms-code, pushmelding, hardwaresleutel of een biometrische beveiliging zijn. Zo kan een aanvaller met je wachtwoord niet binnendringen, want hij heeft ook die tweede factor nodig. Een geraden of gelekt wachtwoord is dus niet meer voldoende, wat de veiligheid verhoogt.

Smartphone

Veel 2FA-oplossingen werken via een smartphone, bijvoorbeeld met de authenticator-app van Authy, Google of Microsoft, of via sms-berichten naar je telefoon. Dit is handig, maar er zijn ook nadelen. Je hebt altijd je telefoon nodig en bij een lege batterij, verlies of diefstal kom je mogelijk niet bij je accounts. Ook al je je in een gebied zonder mobiel bereik bevindt, is het lastig of onmogelijk om een sms te ontvangen.

2FA via sms is bovendien kwetsbaar voor praktijken als sim-swapping. Hierbij zet een aanvaller jouw telefoonnummer om naar een eigen simkaart om zo sms-codes te ontvangen. Je smartphone kan ook besmet raken (via phishing) met malware. Ook daarmee kan een aanvaller andere 2FA-codes onderscheppen.

Het kan ook zijn dat je geen smartphone voor je werk hebt en dat je je privételefoon liever niet gebruikt voor werkgerelateerde 2FA-authenticaties. Je kunt er natuurlijk ook nog bewust voor kiezen om geen eigen smartphone te hebben.

Gelukkig bestaan er veilige alternatieven om je ook zonder smartphone via 2FA aan te kunnen melden, zoals de rest van dit artikel duidelijk maakt.

Lees ook: Waarom je beter geen sms voor tweestapsverificatie kunt gebruiken

Een eenmalige code via een (mobiele) authenticator-app is een van de populairste 2FA-verificatiemethoden.

Desktop-authenticator

Veel mensen gebruiken als tweede factor een eenmalige code via een authenticator-app. Daarvoor bestaan verschillende gratis mobiele apps, maar je kunt ook je desktop of laptop inzetten. Je hoeft geen virtuele Android-omgeving op te zetten met een tool als BlueStacks om zo bijvoorbeeld de mobiele Android-authenticator van Google of Microsoft te kunnen draaien. Installeer gewoon de desktopversies, zoals het Zwitserse Proton of het Zweedse Yubico.

We vertellen je in het kort hoe je hiermee bij Google aanmeldt. De procedure bij andere diensten en apps gaat op een vergelijkbare manier. Surf naar https://myaccount.google.com en open Beveiliging. Kies Tweestapsverificatie en zorg dat deze is ingeschakeld. Klik bij tweede stap op Authenticator en daarna op Authenticator instellen. Er verschijnt een QR-code, maar voor je desktop-app klik je op Kun je de code niet scannen. Je krijgt nu de nodige gegevens om de geheime sleutel (zie kader Werking digitale token) handmatig in te voeren.

Als je dit in je authenticator-app hebt ingesteld (zie de alineaProton Authenticator), klik je op Volgende en voer je de code in die de app genereert. Je kunt nu definitief tweestapsverificatie bij Google aanzetten. Bij de volgende aanmeldingen voer je nu voortaan naast je wachtwoord ook de gevraagde code in.

De tweestapsverificatie bij Google is geactiveerd, met (voorlopig alleen) een authenticatorcode als tweede factor.

Proton Authenticator

We nemen Proton Authenticator voor Windows als voorbeeld (ook beschikbaar voor macOS en Linux). De installatie bedraagt slechts enkele muisklikken. Start daarna de app start op en klik op Create new code. Vul bij Title bijvoorbeeld Google account in en plak de sleutel van 32 tekens in het veld Secret.

Bij Issuer kun je Google opgeven. Via Advanced options pas je eventueel instellingen aan als de dienst specifieke eisen heeft voor het aantal cijfers (standaard 6), tijdsinterval (standaard 30 seconden), algoritme (standaard SHA1) of type (standaard TOTP, maar kies STEAM voor het Steam-gameplatform van Valve). Klik op Save code om de code toe te voegen.

Via het tandwielpictogram kun je onder meer je codes back-uppen, exporteren, importeren en ook synchroniseren tussen apparaten via een gratis Proton-account. Na het aanmaken verschijnt de code in het hoofdvenster, met een geanimeerd pictogram dat de resterende geldigheidsduur toont. Je hoeft deze code nu maar bij de juiste dienst in te vullen als tweede factor, naast je wachtwoord.

Via Proton Authenticator voeg je een TOTP-code toe aan Googles 2FA-verificatieproces.

Werking digitale token

De meeste mensen gebruiken een digitaal token als tweede factor, zoals een pushmelding of een eenmalige cijfercode. Dit laatste wordt ook wel TOTP genoemd (Time-based One-Time Password) en werkt als volgt.

Bij het instellen van 2FA genereert de dienst een unieke geheime sleutel. Deze wordt één keer met je authenticator-app gedeeld via een QR-code of handmatige invoer. Zowel de server van de dienst als je authenticator-app gebruiken deze sleutel samen met het actuele tijdstip om met dezelfde wiskundige formule een code van meestal 6 cijfers te berekenen. Zo'n code blijft standaard dertig seconden geldig. Zodra je deze code invoert, vergelijkt de server deze met zijn eigen berekening. Is er een match, dan weet de server dat jij de juiste geheime sleutel hebt en dat de code actueel is, waarna je kunt inloggen.

©TvD | ID.nl

De achterliggende werking van een TOTP-systeem.

TOTP-wachtwoordmanager

Wachtwoorden zijn vooralsnog niet verdwenen (zie ook kader Zonder wachtwoord) en daarom is een wachtwoordmanager aan te raden. Zo hoef je al je wachtwoorden niet zelf te onthouden, voorkom je dat je ze achteloos noteert en vermijd je te veel dezelfde of simpele varianten.

Enkele wachtwoordmanagers ondersteunen ook TOTP-codes voor 2FA, zodat je geen aparte authenticator-app nodig hebt. Gratis opties voor Windows-desktop zijn onder meer Bitwarden en KeePassXC.

We nemen KeePassXC als voorbeeld, dat ook voor macOS en Linux beschikbaar is. Je installeert de tool met enkele muisklikken. Bij de eerste start klik je op Database aanmaken, voer je een naam en eventueel een omschrijving in. Klik daarna op Doorgaan. Laat de instellingen gerust ongewijzigd en klik op Doorgaan. Geef een sterk hoofdwachtwoord in (twee keer) en bevestig met Gereed. Kies een locatie voor de database en klik op Opslaan.

Voer in het hoofdvenster de accountgegevens in, zoals Titel, Gebruikersnaam, Wachtwoord en URL, en bevestig met OK. Het item wordt toegevoegd. Klik er met de rechtermuisknop op, kies TOTP / TOTP instellen en vul de Geheime sleutel in. Pas via Aangepaste instellingen eventueel de parameters aan en bevestig met OK. Om de TOTP-code te zien, kies je TOTP / TOTP (QR code) weergeven in het contextmenu.

Je kunt ook de KeePassXC-browserextensie downloaden en installeren om je online wachtwoorden en TOTP-codes automatisch in de browser in te vullen.

Ook wachtwoordbeheerder KeePassXC kan TOTP-codes genereren.

Hardwaresleutel

In plaats van een digitale sleutel kun je ook een fysieke hardwaresleutel gebruiken als tweede factor. Zo'n sleutel is extra veilig omdat deze via internet niet kan worden gekopieerd of gestolen. Ook phishers maken nauwelijks kans, want de sleutel is gekoppeld aan de originele website-url van de dienst. Zelfs als iemand je sleutel heeft, blijft je wachtwoord nodig en vaak ook een pincode of biometrie om de sleutel te gebruiken. Bij verlies rest meestal alleen een alternatieve tweede factor, zoals een TOTP-code of back-upcodes (zie hieronder), tenzij je een reservesleutel hebt.

We nemen als voorbeeld een YubiKey 5 NFC USB-A van Yubico (circa 60 euro). Dit kan ook een ander merk of type zijn, zoals Feitian, Nitrokey of SoloKeys. Ga in Windows 11 naar Instellingen, kies Accounts / Aanmeldingsopties en selecteer Beveiligingssleutel / Beheren. Plaats de sleutel in de pc en activeer deze. Klik op Toevoegen bij Pincode voor beveiligingssleutel. Je kunt ook de Yubico Authenticator downloaden die ook beschikbaar is voor macOS en Linux. Ga door met installeren en start als administrator op. Open nu Passkeys, klik op Set PIN, voer tweemaal een pincode in en klik op Save.

We nemen opnieuw Google als voorbeeld, waar je inmiddels tweestapsverificatie hebt ingeschakeld. Op de webpagina van je Google-account open je Beveiliging en klik je op Toegangssleutels en beveiligingssleutels. Kies + Toegangssleutel maken, klik op Ander apparaat gebruiken, selecteer Beveiligingssleutel en klik op Volgende en daarna op OK (twee keer). Voer de pincode van de sleutel in, bevestig met OK en activeer de sleutel. Deze is nu bruikbaar als tweede factor.

Bij Google maak je eenvoudig een toegangssleutel aan.

Werking fysieke token

Je kunt als tweede factor ook een fysieke token gebruiken. Bij banken kan dit een klein kastje zijn dat codes genereert, maar het kan ook een hardwaresleutel zijn zoals een YubiKey. Zo'n sleutel koppel je aan je computer via usb of bij smartphones via bluetooth of NFC. Dit werkt als volgt.


Je koppelt de sleutel één keer aan je account, waarbij een uniek cryptografische sleutelpaar wordt aangemaakt. De publieke sleutel gaat naar de server van de dienst, terwijl de privésleutel veilig in het hardwaretoken blijft en deze nooit verlaat. Na het invoeren van je wachtwoord vraagt de server aan de sleutel om een unieke digitale handtekening te maken voor die specifieke aanmelding.

Jij bevestigt de aanvraag, bijvoorbeeld door het token te activeren. Vervolgens stuurt de sleutel de handtekening naar de server, die controleert of deze overeenkomt met de eerder opgeslagen publieke sleutel. Bij een match weet de server dat jij de echte sleutel bezit en kun je inloggen.

Onder meer Yubico heeft diverse hardwaretokens (YubiKey) in het aanbod.

Back-upcodes

We hebben nu al twee methoden om ons via een desktop-pc of laptop bij 2FA aan te melden: digitale TOTP-codes en een hardwaresleutel. Heb je ook een toegangssleutel, bijvoorbeeld gekoppeld aan je Windows Hello-inlogmethode, dan zijn het er zelfs drie opties. Al is dit eigenlijk geen klassieke 2FA maar een methode zonder wachtwoord (zie kader Zonder wachtwoord).

De meeste diensten die 2FA ondersteunen, bieden ook back-upcodes aan, hoewel deze eigenlijk bedoeld zijn als noodingreep. We raden je in elk geval aan deze te genereren of te downloaden en offline te bewaren, bijvoorbeeld in een kluis of andere water- en brandveilige plek. Laat ze zeker niet rondslingeren en deel ze nooit digitaal.

Voor je Google-account bijvoorbeeld werkt dit als volgt. Meld je opnieuw aan op je accountpagina, open Beveiliging, scrol naar beneden en klik op Back-upcodes en daarna op Back-upcodes genereren. Google maakt direct tien codes aan die je kunt downloaden en/of afdrukken. Dit is meestal voldoende om problematische aanmeldingen op te lossen. Je kunt op elk moment weer tien nieuwe codes aanmaken, waarmee de vorige tien codes automatisch ongeldig worden.

Google genereert tien back-upcodes die je goed dient te bewaren voor het geval er iets misgaat.

Zonder wachtwoord

2FA combineert dus iets dat je 'weet' (wachtwoord) met iets wat je 'hebt' (zoals een code of sleutel) of 'bent' (biometrie). Er komt ook steeds meer concurrentie van een oplossing zonder wachtwoord via zogeheten toegangssleutels (passkeys). Dit systeem is enkel gebaseerd op iets wat je 'hebt' (een hardwarematige of softwarematige sleutel), vaak gecombineerd met een vorm van biometrie.

Je hebt hierbij dus geen wachtwoord meer nodig. Je kunt direct inloggen met zo'n sleutel, meestal na een geslaagde vingerafdruk, gezichtsherkenning of pincode. Onderliggend werkt dit via de FIDO2-standaard met het hardwareprotocol CTAP2 en het webprotocol WebAuthn.

Op www.passkeys.io/ vind je een demonstratie en een lijst van enkele tientallen sites en apps die toegangssleutels als volledig wachtwoordalternatief ondersteunen. Nog meer diensten staan op https://passkeys.directory, een door de community beheerde lijst. De aanduiding MFA (Multi Factor Authenticatie) betekent hier dat toegangssleutels ook inzetbaar zijn als extra beveiligingslaag naast andere inlogmethodes. Zo kun je onder meer bij Google via een toegangssleutel, zoals een pincode, inloggen, zonder zelfs je wachtwoord te hoeven intikken.

Passkeys-directory: ook Google ondersteunt volop toegangssleutels.

Offline dingen veilig bewaren?

Haal een kluis in huis!