Als er één advies is op beveiligingsgebied dat je hopelijk in de afgelopen jaren hebt opgevolgd, is het wel dat je een uniek wachtwoord moet gebruiken. De reden is inmiddels wel bekend; het grootste gevaar als een account gehackt wordt, is dat het wachtwoord in datadumps terechtkomt die inmiddels voor luttele euro's online te koop zijn en die criminelen gebruiken bij een spray-aanval. Dat ene wachtwoord dat je gebruikt voor de webwinkel van lokale slager Het Gespeende Varken, wordt dan ook gebruikt voor veel belangrijkere accounts, et voilà: je hebt ineens een groter probleem dan dat iemand ziet hoeveel karbonaadjes je in het afgelopen jaar hebt gekocht.
Wachtwoordmanagers zijn de ideale manier om verschillende wachtwoorden te beheren. Het is voor gebruikers soms moeilijk om de keus voor een wachtwoordmanager te maken, maar dat is in de afgelopen jaren makkelijker geworden door een belangrijke ontwikkeling: wachtwoordmanagers in de browser. Die zijn rudimentair, maar gratis en makkelijk beschikbaar. In de afgelopen weken hebben de grootste browsers daar een extra functie bijgekregen. Google, Microsoft en Mozilla helpen gebruikers niet alleen met het beheren van wachtwoorden, maar waarschuwen hen ook als ze wachtwoorden gebruiken waarvan bekend is dat ze gestolen zijn. Dat is moeilijk, want daarvoor moeten ze inloggegevens opslaan en dat wil je natuurlijk niet in plaintext doen. Er wordt daarom gebruik gemaakt van 'homomorfische encryptie', een proces waarbij versleutelde datasets met elkaar kunnen worden vergeleken. Die functies zitten inmiddels in Chrome en Edge. Mozilla gebruikt sinds een paar jaar juist een andere implementatie. Maar welke er ook gebruikt wordt, het maakt wachtwoordbeheer een stukje veiliger.
Keuzestress
Vragen welke wachtwoordmanager de beste is, is een beetje hetzelfde als vragen welke auto het beste is. Het antwoord is volledig afhankelijk van je gebruik, je budget en je eisen. Een eis overheerst alle anderen: dat je er überhaupt een gebruikt. Het is moeilijk genoeg om gebruikers richting de software te krijgen, al stijgt het aantal gebruikers van wachtwoordmanagers in de laatste jaren snel. De voordelen van in de browser ingebouwde wachtwoordmanagers liggen vooral in het gemak ervan. Gebruikers hoeven geen functies te vergelijken, niets te installeren op verschillende apparaten en niets te betalen.
Daar staan voor de hand liggende nadelen tegenover. Dat zijn vooral praktische: vendor lock-in is bijvoorbeeld een risico. Een gebruiker zit dan namelijk vast in één ecosysteem en moet zowel op de desktop als op mobiel die browser gebruiken. Switchen naar een alternatief kan doorgaans wel door te im- en exporteren, maar wie gaat die moeite nemen? Andere praktische nadelen zijn de vaak gebrekkige opties. Dedicated wachtwoordmanagers zoals LastPass of Bitwarden hebben veel opties om wachtwoorden aan te maken. Gebruikers kunnen kiezen hoe lang een wachtwoord moet zijn of welke tekens het wel of juist niet moet bevatten. Browsermanagers kunnen dat meestal niet en dat maakt ze voor sommige websites die eisen stellen aan wachtwoorden, vaak onpraktisch.
Veiligheid
Bij dat laatste obstakel kom je ook al meer terecht bij het securityvraagstuk, want zijn wachtwoordmanagers in de browser wel veilig? Verschillende browsers gebruiken verschillende methodes om wachtwoorden op te slaan. Bij Safari worden wachtwoorden bijvoorbeeld opgeslagen in de Keychain van iCloud, een afgesloten container met AES-256-GCM-encryptie waarvan de veiligheid goed gedocumenteerd is. Firefox gebruikt sinds 2019 Lockwise, wat eigenlijk een samenvoeging is van eerdere tools voor iOS en Android die toen nog Lockbox heetten. Lockwise heeft goede documentatie. Maar of dat automatisch betekent dat de managers veilig zijn?
Je kunt stellen dat specifieke wachtwoordmanagers hun bestaansrecht ontlenen aan het beveiligen van hun software. Dat is bij een browsermaker als Mozilla of Opera minder het geval, maar eerlijk is eerlijk, ook bij dedicated wachtwoordmanagers zijn weleens incidenten. Zo waarschuwde beveiligingsonderzoekers van Googles Project Zero vorig jaar voor een kwetsbaarheid in LastPass waarmee het theoretisch mogelijk was om credentials via de browserplug-in te stelen. Dat was wel heel moeilijk praktisch uit te buiten; een aanvaller moest via phishing zorgen dat een gebruiker meerdere keren klikt op een geïnfecteerde website en dan nog werd alleen het laatstgebruikte wachtwoord weergegeven. Vergelijk dat met het incident bij Opera; daarbij werden inlognamen én wachtwoorden gestolen, weliswaar gehasht en met salts uitgebreid.
Er is niet veel onafhankelijk onderzoek gedaan naar de veiligheid van ingebouwde browserwachtwoordmanagers, maar er zijn her en der wel signalen te vinden dat de veiligheid ervan niet optimaal is voor iedere gebruiker. In 2019 deed bijvoorbeeld het Duitse Bundesamt für Sicherheit in der Informationstechnik, zeg maar de Duitse NCSC, onderzoek naar browsergebruik bij de overheid. Het bestudeerde daarbij de veiligheid van Firefox, Chrome, IE en Edge, en concludeerde dat die eerste de veiligste was op de meeste gebieden. In de lange lijst met beveiligingsmaatregelen stonden onder andere eisen voor de ingebouwde wachtwoordmanagers die veelzeggend waren. De BSI vond dat die minimaal wachtwoorden versleuteld moesten opslaan, dat gebruikers hun wachtwoorden moesten kunnen verwijderen en dat de wachtwoorden waren afgesloten met een masterwachtwoord. Dat laatste ontbreekt bij Google en Microsoft. Die hebben hun wachtwoordmanagers immers gekoppeld aan de accounts die gebruikers bij de dienst nodig hebben en daarvan is de beveiliging doorgaans op orde. Voor de wachtwoordmanagers betekent dat volgens de BSI echter dat toegang tot een systeem potentieel gevaarlijk is.
Je kunt daarbij optellen dat browsers in het geheel een veel aantrekkelijker doelwit zijn voor aanvallers. Dat geldt niet alleen specifiek voor wachtwoorden, maar voor eigenlijk alles. Browsers zijn zo'n integraal onderdeel van computersystemen en hebben daarin veel toegang en rechten, en dat leidt tot een cocktail van beveiligingsproblemen. Ze zijn aantrekkelijk voor bugbountyhunters die op zoek gaan naar specifieke problemen, en door de complexiteit van de codebase van browsers is de kans groter dat lekken worden ontdekt en dat die toevallig ook nog betrekking hebben op wachtwoordbeveiliging.
Sinds vrij recent hebben wachtwoordmanagers zowel in de browser als losstaand een nieuwe functie die ze nog een stuk handiger maakt. Ze controleren in steeds meer gevallen of een wachtwoord niet al eerder gebruikt is. Sinds Firefox 70 krijgen gebruikers van de Lockwise-wachtwoordmanager bijvoorbeeld een waarschuwing als het wachtwoord dat ze gebruiken, bekend is bij een datalek. Dat doen inmiddels ook Microsofts Edge en Google Chrome.
Have I Been Pwned

De manier waarop browsers gestolen wachtwoorden checken, verschilt. Mozilla maakt gebruik van de api van Have I Been Pwned, de databreachzoekmachine van Troy Hunt met wie Tweakers in januari een interview had. Voor als je er nog nooit van hebt gehoord: Have I Been Pwned is een database waarin gehackte en gestolen datasets worden verzameld, en die vervolgens een notificatie stuurt naar aangemelde gebruikers met de waarschuwing dat hun credentials op straat liggen. Have I Been Pwned, afgekort HIBP, bestaat al sinds 2013 en is inmiddels veruit de grootste van deze soort diensten. HIBP heeft een eigen api waarmee ontwikkelaars toegang kunnen krijgen tot de database, maar in het geval van Firefox heeft Mozilla samengewerkt met de website.
Have I Been Pwned ontvangt datalekken uit verschillende bronnen. Gebruikers van de site wijzen de eigenaar bijvoorbeeld op het bestaan van datasets die her en der op het web worden verhandeld. In de beginjaren van de site sloeg HIBP alleen nog e-mailadressen op waarmee je alleen kon zien waar en wanneer een adres in een database zat. Sinds 2017 heeft de dienst een aparte service voor het checken van wachtwoorden. Die worden volgens de maker apart van de bijbehorende e-mailadressen opgeslagen, zodat als HIBP wordt aangevallen, de gegevens nooit gezamenlijk worden buitgemaakt.
De browsers waar HIBP-integratie nu in zit, zoals Mozilla met Lockwise, kunnen dus alleen zien of een specifiek wachtwoord in een datalek voorkomt. Het gaat dus nadrukkelijk niet om accounts met een e-mailadres+wachtwoord-combinatie. Als je wachtwoord 123456 gebruikt, krijg je hoe dan ook een waarschuwing te zien. Omdat de credentials niet samen worden opgeslagen, is de beveiliging minder sterk dan grote bedrijven die zouden inzetten. De wachtwoorden worden op een losse server opgeslagen en hoewel HIBP-oprichter Troy Hunt niet te veel kwijt wil over zijn beveiligingsaanpak, schreef hij in 2017 wel dat de wachtwoorden in sha1 worden gehasht. Dat was destijds nog een prima algoritme, maar inmiddels verschijnen er steeds meer scheurtjes in sha-1.
Eigen aggregatie
Have I Been Pwned is slechts één manier om te controleren op gestolen wachtwoorden. Grotere clubs zoals Microsoft en Google hebben daar hun eigen methodes voor. Google begon in 2019 met Password Checkup, aanvankelijk als een Chrome-extensie, maar sinds begin dit jaar ook geïntegreerd in Chrome zelf. Google maakt geen gebruik van externe bronnen voor gestolen wachtwoorden, maar controleert tegen een lijst van bekende databreaches. Dat zijn bijvoorbeeld de datalekken van Imgur of Dropbox die ook in Have I Been Pwned zijn opgenomen. Ook zit daar een geaggregeerde lijst van 1,4 miljard wachtwoorden bij, die openbaar beschikbaar is. Google waarschuwt zelf al dat die lijst waarschijnlijk niet compleet is. Google noemt dertig bronnen van databreaches en hoewel het erkent dat er meer bronnen zijn, zegt het bedrijf niet welke dat zijn. Volgens Google heeft het bedrijf op het moment meer dan vier miljard records opgenomen in die database. Ter vergelijking: Have I Been Pwned bevat meer dan 10,5 miljard accounts verdeeld over 505 websites en 114.000 pastes, ofwel credentiallijsten die op bijvoorbeeld Pastebin worden gezet.
Anders dan de integratie met Have I Been Pwned is het bij Google wel mogelijk om te zien of een account is gehackt in plaats van alleen een wachtwoord. Dat is omdat de data niet alleen gehasht is, maar daadwerkelijk versleuteld. Google werkt samen met cryptografen van de Stanford Universiteit om dat te doen. Het bedrijf zegt voor de cryptografie verschillende hashingrondes uit te voeren op de data, en k-anonimiteit toe te passen. Dat is een discipline binnen de cryptografie waarbij een bepaald aantal gebruikers, de K, altijd dezelfde uitkomst krijgt na het de-identificeren. Binnen een bepaalde groep komt er altijd een K-aantal gebruikers met dezelfde output naar voren, waardoor een output nooit terug te voeren is naar een enkele persoon.
Googles aanpak werkt daarmee anders die van van Have I Been Pwned, waarvan de api alleen een sha1-hash vrijgeeft die kan worden afgezet tegen een in de browser opgeslagen wachtwoord. Dat moet ook wel, omdat Google van de gestolen credentials een combinatie van e-mail+wachtwoord opslaat op zijn eigen servers. Die combinatie wordt eerst met Argon2 gehasht. Vervolgens wordt die hash met elliptic curve-encryptie versleuteld. Voorafgaand aan het versleutelen wordt ook nog een onversleutelde hashprefix van twee bytes aan de hash toegevoegd. Die is nodig om in de enorme database van vier miljard records structuur aan te kunnen brengen; Google gebruikt die prefix om alleen een beperkte dataset te kunnen controleren.
Homomorfische encryptie
Tot dusver werkt de versleuteling van Google nog vrij logisch, maar het wordt lastiger. Er wordt boven op deze voorgaande encryptie gebruikgemaakt van homomorfische encryptie. Dat is een vorm van versleuteling waarbij er met versleutelde data kan worden gewerkt zonder dat dat eerst ontsleuteld moet worden. Diezelfde methode gebruikt ook Microsoft sinds Edge 88. Daarin heeft ook dat techbedrijf een eigen wachtwoordchecker gezet op basis van homomorfische encryptie. Het bedrijf doet daar in het algemeen veel onderzoek naar.
Homomorfische encryptie is geschikt voor de manier waarop Google en Microsoft willen waarschuwen voor gestolen wachtwoorden. Gebruikers willen immers niet dat hun credentials op een of andere manier ontsleuteld moeten worden. De beide bedrijven gebruiken een ongeveer gelijke methode met enigszins verschillende implementaties. De hash die van een wachtwoord wordt gemaakt, wordt bij het inloggen naar een server van Google of Microsoft gestuurd. Die hash wordt versleuteld met een secret key die de gebruiker weet, zoals het wachtwoord. Vervolgens moeten Google en Microsoft die versleutelde en gehashte data afzetten tegen de versleutelde en gehashte data die het uit databreaches heeft geaggregeerd om te controleren of dat overeenkomt.
Die check is dus homomorfisch; er worden twee versleutelde datasets met elkaar vergeleken om overeenkomsten te vinden zonder dat de data eerst moet worden ontsleuteld. Dat wordt gedaan met private set intersection, waar met name Stanford-wetenschappers veel onderzoek naar hebben gedaan. Dat PSI kreeg in het afgelopen jaar wat bekendheid toen de techniek werd gebruikt bij contacttracing in corona-apps. Via private set intersections is het mogelijk om de persoonlijke identifier in een corona-app af te zetten tegen een centrale dataset van mensen die positief zijn getest op het coronavirus, zonder dat de originele identiteit van die beide partijen bekend hoeft te worden gemaakt. Dat werkt dus ook bij wachtwoorden.
In die intersection wordt de versleutelde e-mail+wachtwoord-combinatie van de gebruiker eerst nog een keer versleuteld met de secret key van Google, en daarna als een ware encryptie-ception weer lokaal ontsleuteld met de eigen secret key. Toegegeven, het is een ingewikkeld proces, dat Google hier enigszins inzichtelijk heeft geprobeerd te maken.
Losse wachtwoordmanagers
Google en Microsoft zijn met hun browserwachtwoordmanagers zeker niet de enige partijen die controleren op datalekken en uitgelekte wachtwoorden. Losstaande wachtwoordmanagers bieden die mogelijk in recente jaren steeds vaker aan. LastPass doet dat sinds de zomer, maar wel alleen voor betalende klanten. De dienst gebruikt daar Enzoic voor, een alternatieve wachtwoordchecker die 'miljarden' records checkt en die vooral op bedrijven gericht is. Ook Dashlane biedt zo'n dienst aan, eveneens voor betalende klanten. Voor KeePass is er een Have I Been Pwned-plug-in beschikbaar. Maar in tegenstelling tot veel anderen zijn wachtwoordchecks in de browser dus gratis en toegankelijk, terwijl ze ook nog eens goede versleuteling bieden.
Wachtwoorden zijn anno 2021 een doos van Pandora die niet meer dicht kan. Ze zijn eigenlijk achterhaald, omdat ze niet geschikt zijn om te worden beheerd in de grote hoeveelheden die we er tegenwoordig op na houden. Grote internetbedrijven proberen langzaam maar zeker te sturen richting een wereld zonder wachtwoorden, maar wachtwoordmanagers met checks voor gestolen credentials lijken als oplossing tot die tijd een goede stap vooruit.