De belachelijke wachtwoordeisen van de Belastingdienst
Wachtwoorden zijn net als puisten. Iedereen heeft ze, maar je gaat er niet uitgebreid over orereren tijdens de vrijmibo. Toch moeten we het even over wachtwoorden hebben, met dank aan de Belastingdienst.
Afgelopen week deed ik aangifte. Mijn wachtwoord was verlopen vanwege “nieuwe veiligheidseisen”. Als klein tipje kreeg ik vast wat eisen waar mijn nieuwe wachtwoord aan moest voldoen:
Ik moest gelijk denken aan dit klassieke Dilbert-stripje:
<verwijderd>
Even een experimentje: dit zijn wachtwoorden die volgens deze wachtwoordtester van Dropbox ‘eeuwen’ duren om te kraken. Maar bij de Belastingdienst zijn ze niet geldig:
- zoh8Cea6ah@2Mui6iezaev4ieduo0g (te lang)
- uYiRaenoeaoV (geen speciale tekens)
- ahxaith4oov7oh! (geen hoofdletters)
- #uad2airuWah0a (vier keer de letter ‘a’)
Hier zijn een paar wachtwoorden die wél geldig zijn:
- Password1
- Welcome2
- Hello123
Leuk detail van dit lijstje: al die wachtwoorden komen uit de lijst van de 20 meest gebruikte wachtwoorden. Niet zo veilig dus, en volgens de wachtwoordtester te kraken in minder dan een seconde.
Dit is trouwens een interessant detail uit het lijstje (met dank aan Niels voor het spotten):
Dit is een beetje curieus. Het kan namelijk de suggestie wekken dat de Belastingdienst wachtwoorden niet veilig versleuteld opslaat.
Dat zit zo: als je het goed doet sla je wachtwoorden nooit ‘zo’ op in een database. Ze worden altijd versleuteld door hashing. Dat hashen gaat maar één kant op: je kan een hash berekenen van een wachtwoord, maar andersom kun je niet terug van hash naar wachtwoord.
Ondanks dat je het wachtwoord zelf niet weet kun je wel controleren dat het klopt: de hash van wat iemand intikt bij een inlogscherm moet matchen met de hash in de database. Je vergelijkt dus nooit twee wachtwoorden, altijd twee hashes!
Als je dit mechanisme gebruikt (wat praktisch alle grote internetbedrijven doen) is het onmogelijk om te zien welke karakters er in een oud wachtwoord voorkomen.
Zowel in de comments hier beneden als op Twitter wordt gesuggereerd dat de BD wél veilig toegang heeft tot je wachtwoord, namelijk op het moment dat je het oude wachtwoord moet intikken. Dan zouden ze die check kunnen doen. Dat is een goed punt, maar helaas weten we niet op welke manier de Belastingdienst die check uitvoert.
Ook is er de eis dat je wachtwoord anders moet zijn dan je vorige wachtwoorden (meervoud). Je zou alle vorige wachtwoorden als hash kunnen opslaan, en het op die manier kunnen checken. Maar waarom zou je dat doen? Het creëert alleen maar extra complexiteit in het systeem en het voegt geen echte verbeteringen toe in de veiligheid.
Wat zou de Belastingdienst dan wél moeten doen? Zoals je kan lezen in dit inmiddels klassieke stripje van XKCD en dit lange technische artikel van Jeff Atwood is de oplossing simpel: eis gewoon langere wachtwoorden (minimaal 12 tekens), zónder al die gekke regels. ‘appelmoes kerk paars konijn’ is als wachtwoord eindeloos veel veiliger én beter te onthouden dan ‘B3l@st!ng’ en alle andere lelijke varianten.
Alle huidige bizarre regels zorgen er voor dat mensen slechte wachtwoorden bedenken die niet veilig zijn. En ze maken het én niet leuker én niet makkelijker. Zonde.
Naschrift: in een eerdere versie van dit artikel werd stelliger gezegd dat de Belastingdienst wachtwoorden onveilig opslaat. Dat heb ik aangepast na commentaar op dit blog en de gelinkte tweet.
Andre Engels
Als toevoeging, wanneer je het goed doet, worden de wachtwoorden niet alleen gehasht, maar ook nog gesalt. Dat houdt in dat er een willekeurige string, een soort tweede wachtwoord, wordt aangemaakt dat de salt heet. Vervolgens wordt de hash berekend over het wachtwoord plus de salt, en de salt en de hash worden allebei in de database opgeslagen. Op die manier kan een eventuele aanvaller die de lijst met hashes te pakken heeft, niet domweg wachtwoorden gaan hashen om te zien of er misschien iemand ‘Password123’ gebruikt, maar kan hij dat slechts voor één specifieke gebruiker tegelijk doen.
hay
Klopt helemaal Andre. Ik wilde het artikel alleen eenvoudig houden voor de niet-technische lezer. Maar je hebt gelijk, uiteraard moet je salten als je veilig wachtwoorden wilt opslaan.
Anonymous
Je moet bij het veranderen van je wachtwoord ook je oude wachtwoord geven. Hierdoor is het simpel om gewoon netjes te salten en ook nog eens te controleren of je nieuwe wachtwoord niet teveel op het oude wachtwoord lijkt.
hay
Je hebt gelijk. Artikel is aangepast. Bedankt!
M
Anonymous, er staat ‘uw wachtwoord moet anders zijn dan uw vorige wachtwoordEN’ en ik neem aan da je niet alle eerder gebruikte wachtwoorden moet intypen dus die vlieger gaat niet op: blijkbaar bewaren ze alle wachtwoorden. Overigens net als de banken die beweren je pincode niet op te slaan maar alleen de hash, maar wel keurig een vervangende pas kunnen sturen met dezelfde :)?
Roel
Ehm, M, dat staat er niet…
Roel
Oh sorry, staat er wel, my bad. Ik was teveel gefocust op dat 3-tekens-stukje.
Martijn
Maar met het opslaan van oude hashes (en salts) kunnen ze wel controleren dat het wachtwoord ongelijk is aan alle vorige wachtwoorden, en de check op ‘geen drie dezelfde karakters’ kan middels het op het wijzigscherm ingevoerde oude wachtwoord. Volgens mij kun je dus niet constateren dat het onveilig wordt opgeslagen.
Wilfred
Het idiote is natuurlijk dat door al deze regels de zoekruimte alleen maar kleiner wordt voor een brute force attack. Verder wordt het gebruik van een password manager zoals 1Password bijna onmogelijk gemaakt, waardoor de kans op makelijk te raden passwords ook alleen maar toeneemt.
Ben
Je kan 1Password wel gebruiken. Je kan namelijk het wachtwoord korter maken zodat het wel voldoet aan de wat overdreven regels van de belastingdienst. Het gewijzigde wachtwoord wordt netjes bewaard door 1Password.
Wendy
Zijn dit wachtwoordeisen van de Belastingdienst? Ik zou eerder denken van DigiD. DigiD wordt veel breder gebruikt, dan alleen door de Belastingdienst.
Arnold
Er is nog een hint dat wachtwoorden onveilig opgeslagen worden – de limiet van 25 tekens.
Als wachtwoorden gehasht worden, is wat vastgelegd wordt altijd van vaste lengte en zou zo’n eis niet noodzakelijk zijn.
Anonymous
de limiet van 25 kan ook te maken hebben met het feit dat je anfers in de situatie kan komen dat je geen nieuw wachtwoord meer kan maken.
als je alle letters, cijfers en andere tekens hebt gebruikt in je oude wachtwoord kan je geen wachtwoord meer maken met 3 unieke tekens.
hay
Wat me nog een uitstekende reden lijkt om die hele eis niet t voeren :)
Anonymous
Deze blogpost precies! Wat een gebruiksonvriendelijke hel is de BD aan het worden. “Veiliger kunnen we het niet maken, wel lastiger” zou een betere pay-off zijn. Want hoe weet ik zelf welke karakters ik in eerdere wachtwoordEN heb gebruikt en ik dus nu niet meer kan toepassen? Ik zou dat lijstje van mijn eigen oude wachtwoorden dan graag bij de BD willen opvragen, want nu zoek ik me een ongeluk naar een nieuw passend wachtwoord. Het wordt dus vrees ik gewoon Helpme123!
Arnout
Bij het wijzigen van een wachtwoord moet je vaak ook je oude wachtwoord opgeven. Geen idee of dit bij de BD ook zo is. Mocht dit wel zo zijn, lijkt dit me de manier om oud en nieuw te vergelijken.
Birger Jansen
Ha, het viel mij gisteren ook op. Ik heb even nagevraagd waarom dit beleid is, met name de ‘maximaal drie speciale tekens’. Dit was het antwoord: “Dat het wachtwoord niet meer dan 3 speciale tekens kan bevatten, is een beperking die wordt opgelegd door de software waarmee het ondernemersportaal gebouwd is.”
Het laatste restje vertrouwen in Overheid & ICT is hiermee wel weg…