Naar de content

Vergeet dat wachtwoord, vertrouw op hoofdrekenen

Installeer een wachtwoord-manager in je eigen hoofd

J. Blocki

Wachtwoord vergeten! Hoe vaak overkomt dit de moderne burger wel niet? Er zijn legio apps die ze voor je onthouden, maar dan staat of valt alles met één superwachtwoord en blijf je afhankelijk van software die mogelijk wordt gehackt. Cryptografen zoeken daarom naar een slim protocol waarmee je al je wachtwoorden afleidt uit één sleutel die alleen in je geheugen bestaat.

26 oktober 2015

Alle goedbedoelde adviezen over hoe je veilige wachtwoorden kiest blijven gerommel in de marge, zolang de doorsnee burger op een stuk of twintig websites en computers een account met wachtwoord heeft. Vrijwel geen mens onthoudt twintig sterke wachtwoorden. Omdat zo’n password een betekenisloze, willekeurige combinatie van letters, cijfers en leestekens is.

Nog erger is, dat je van sommige accounts het wachtwoord iedere drie maanden moet veranderen. Waarom er systeembeheerders zijn die denken ze daar veiliger van worden, is een raadsel. Dit dwingt mensen bijna om makkelijk te onthouden – en dus te raden – toegangscodes te kiezen. Of seriële wachtwoorden als ‘MijnPCopwerk10januari’, ‘MijnPCopwerk10april’, enzovoort.

Hacker

Noodgedwongen kiezen mensen wachtwoorden die ze zich associatief herinneren (‘de naam en kleur van m’n kat’) en gebruiken vaak (bijna) hetzelfde wachtwoord voor meerdere websites. Stel dat het wachtwoord waarmee je inlogt op een onbelangrijke, maar slecht beveiligde discussielijst ook je wachtwoord is voor je Gmail-account. Als dat wachtwoord uitlekt is de ellende niet te overzien, omdat de hacker daarmee toegang krijgt tot alle gegevens die je aan de google-cloud toevertrouwde. Inclusief alle accounts waarvoor je de browser het wachtwoord hebt laten bewaren.

De hacker wijzigt prompt je Gmail-wachtwoord, zodat je er zelf niet meer bij kunt. Vervolgens spit hij of zij rustig al je e-mail en data door op zoek naar nog meer gevoelige informatie. Best mogelijk dat diegene tenslotte uit pure vernielzucht alles wist. Als de hacker dat doet voordat je door hebt dat je account is overgenomen en je hebt ooit ingesteld dat je data via de cloud automatisch gesynchroniseerd worden met al je apparaten, dan kan het gebeuren dat ook je computer thuis, je laptop en je smartphone worden gewist. Als je dan geen back-up hebt die offline is, zoals een externe harde schijf, ben je in één keer alles kwijt.

Je geheugen is niet te hacken

Is er een manier om inloggen fundamenteel anders aan te pakken? Cryptograaf Jeremiah Blocki van Carnegie Mellon University raakte als student al overtuigd, dat er manieren moesten zijn die beter aansluiten bij waar een menselijk brein goed in is. Blocki was een van de tweehonderd jonge onderzoekers die in augustus 2015 aanwezig waren op het Heidelberg Laureate Forum, de jaarlijkse bijeenkomst in Duitsland met winnaars van de grootste wiskunde- en informaticaprijzen. “Het is verre van vanzelfsprekend dat het überhaupt mogelijk is om een wachtwoord-systeem te ontwerpen dat een mens uit zijn hoofd kan managen, en dat ook na een groot aantal hacks nog veilig blijft”, zegt Blocki.

Het basisidee is, dat we al onze wachtwoorden uit het hoofd kunnen berekenen uit één geheime sleutel die we alleen maar in ons eigen geheugen bewaren, zodat die zeker niet te hacken is. De berekening levert voor elk account weer een compleet ander, op zich sterk, wachtwoord op. Een belangrijke veiligheidseis is, dat de berekening maar één kant op kan: als een of meer wachtwoorden bekend worden bij een hacker, moet het niet mogelijk zijn dat die de berekening ‘omkeert’ en daaruit de geheime sleutel afleidt. Of andere wachtwoorden.

Gezouten hash

Websites waarop mensen inloggen, bewaren geen lijst met wachtwoorden van hun gebruikers. Althans, dit is een beveiligingsdoodzonde die eigenlijk niet meer voor mag komen. Want als de site wordt gehackt, liggen al die wachtwoorden op straat, die in veel gevallen ook voor andere inlogs worden gebruikt. Een goed beveiligde inlog bewaart alleen de zogeheten hashcode van het wachtwoord en een account-specifieke toevoeging, de salt (‘snufje zout’). Als een gebruiker inlogt, wordt opnieuw de hashcode van het wachtwoord plus de salt berekend, en vergeleken met de opgeslagen hashcode. Alleen als die twee overeen komen, mag de gebruiker naar binnen. Daarom heb je dus een nieuw wachtwoord nodig als je het oude wachtwoord bent vergeten: de website weet je wachtwoord ook niet.

Een hash is een onomkeerbare formule om een digitaal bestand om te zetten in een hashcode, een getal met een vaste lengte (vaak 256 bits). Elke letter of cijfer die je in het bestand verandert, levert een totaal andere hashcode op, en de formule is zo gecompliceerd, dat het in de praktijk onmogelijk is om bij een gegeven hashcode het bestand te reconstrueren – mits dit bestand lang genoeg is. Helaas zijn de meeste wachtwoorden nu juist (te) kort, zodat het voor hackers met veel computerkracht tot hun beschikking toch mogelijk is om korte wachtwoorden (van een stuk of acht tekens) uit de hashcode terug te vinden. Het salten van de hash zorgt ervoor, dat al bestaande tabellen van vele miljoenen wachtwoorden en hun hashcodes (uit eerdere hacks) niet opnieuw te gebruiken zijn.

Als een goed beveiligde site wordt gehackt, lekt meestal geen lijst met wachtwoorden uit, maar een lijst met hashcodes en salts. De hacker moet dan nog een grote investering in tijd en computercapaciteit doen om daar flink wat korte wachtwoorden uit te halen waarvan sommige misschien ook op andere websites werken. Maar als je een sterk wachtwoord van twaalf tekens (cijfers/letters/speciale tekens) of langer hebt ingesteld, is het zelfs voor de meest professionele hacker onmogelijk om je wachtwoord uit de hash te destilleren.

Passwords zijn allang niet meer honderd procent veilig. Volgens Jan Magnus heeft bijna iedereen op bijna dezelfde manier zijn password samengesteld. Iedere hacker die er een beetje verstand van heeft kan er zo achter komen.

Wikimedia Commons

Mijn uiterst geheimzinnige sleutel?

Bekijk, om een idee te krijgen van een handmatig wachtwoord-managementsysteem, dit naïeve voorbeeld (gebruik dit vooral niet in het echt): de geheime sleutel is MIJNUITERSTGEHEIMZINNIGESLEUTEL. Je wilt hier een heel stel wachtwoorden van acht letters uit afleiden. Volgens de rekenregel gebruik je voor jouw mailaccount elke derde letter, bij Facebook neem je elke vijfde letter en bij de inlog van de bankrekening kies je elke zevende letter. Tot slot maak je een wachtwoord voor LinkedIn met elke negende letter.

Dus je wachtwoord voor Facebook is dan USENSENR (aan het eind van de geheime sleutel tel je door vanaf het begin). Voor LinkedIn wordt het dan RZEUHGMS en je wachtwoord voor mail is JIRGEZNE.

Op het eerste gezicht levert dit een stel heel verschillende, schijnbaar sterke wachtwoorden op. Als iemand bijvoorbeeld je wachtwoord voor LinkedIn hackt – wat bij miljoenen gebruikers in 2012 werkelijk is gebeurd – geeft dit nog niet meteen de geheime sleutel prijs, of de wachtwoorden voor Facebook en je bankrekening.

Toch is de veiligheid van dit systeem volstrekt onvoldoende. Een hacker weet, dat elke letter in enig wachtwoord in ieder geval een letter in de sleutel is. Ook zijn er maar dertig manieren om door de 31 letters van de sleutel heen te hinkelen, dus kan hij die simpel allemaal uitproberen om te kijken welke een gehackt wachtwoord oplevert. Dat zet acht letters van de sleutel op de juiste plaats, en dat levert delen van andere wachtwoorden op, die daardoor makkelijker te hacken zijn. Waarna het hek van de dam is.

Drietrapsraket

Blocki en zijn co-auteurs bedachten een veilig, maar ingewikkelder systeem dat in principe helemaal uit je geheugen en met hoofdrekenen uit te voeren is. Zelfs de rekenregel (in het naïeve voorbeeld is dat de lijst met accounts en ‘elke x-de letter’) mag bij de hacker bekend zijn. Blocki en collega’s publiceerden hun systeem van Human Computable Passwords vorig jaar op een cryptografische conferentie en op ArXiv, een grote, open-source website met wetenschappelijke artikelen.

Het systeem van Blocki is een drietrapsraket. Ten eerste moet elke gebruiker een eigen mapping uit het hoofd leren, een associatie tussen de ene set symbolen en de andere.

Blocki gebruikt in de mapping een serie plaatjes, die je elk leert associeren met een getal van nul tot en met negen (er zijn meer dan tien plaatjes, zodat meerdere plaatjes naar hetzelfde getal verwijzen). Dus de bliksem staat voor het getal negen, de hond voor het getal drie, enzovoort. In de berekening gebruik je een mapping van getallen naar getallen, maar Blocki gebruikt de tussenstap met de plaatjes omdat die associaties volgens hem makkelijker te onthouden zijn. Deze mapping fungeert ongeveer als een super-wachtwoord, waar alle andere uit afgeleid worden.

J. Blocki

De tweede trap is het kiezen van een formule f die een set van veertien getallen omzet in één getal van nul tot en met negen. Deze f is voor alle gebruikers gelijk, en mag ook aan potentiële hackers bekend zijn.

Deze formule doet het volgende: van een rijtje getallen, genummerd nul tot en met dertien, neem je getal nummer twaalf en dertien. Vervolgens zoek je het n-de getal op, waarbij n is: de som van het tiende en elfde getal, modulo tien. (Modulo tien wil zeggen, dat je alleen het laatste cijfer van de optelling behoudt, dus bijvoorbeeld 8+6=14 wordt 4). Tel vervolgens het twaalfde, dertiende en n-de getal bij elkaar op, opnieuw modulo tien.
Je houdt nu één getal van nul tot en met negen over.

J. Blocki

De derde trap is het eigenlijke inloggen, die bestaat uit tien uitdagingen. Het aanbieden van veertien plaatjes in een welbepaalde volgorde is één zo’n challenge. De plaatjes zet je met je geheime mapping om in getallen, waaruit je met formule f een één-cijferig getal berekent. Dit getal is je respons op de uitdaging. Bij het inloggen stuurt de website jou tien challenges (altijd dezelfde), waarop je met tien ééncijferige getallen antwoordt. Als al die getallen kloppen (dat wil zeggen: als de hash van de tien responses gelijk is aan de hash van de antwoorden toen je het account aanmaakte), is de website overtuigd dat je de legitieme gebruiker bent.

De tien uitdagingen met bijbehorende respons vormen het wachtwoord voor één account. Het aantal mogelijke challenges is astronomisch groot, dus je kunt met één geheime mapping vrijwel onbeperkt wachtwoorden aanmaken. Daarom hoef je nooit meer hetzelfde wachtwoord voor meerdere accounts te gebruiken.

Hersengymnastiek

Hoewel het eigenlijke rekenwerk in de formule f heel eenvoudig is, lijkt het best lastig om bij het gegoochel met getallen die indexnummers worden, en samen weer een getal aanwijzen, de draad niet kwijt te raken. Brocki voorziet dan ook, dat een gebruiker vooral in het begin regelmatig moet oefenen. Vooral ook om de geheime mapping niet te vergeten.

De ietwat bizarre formule f is nodig om de geheime mapping te beschermen, voor het geval een of meer wachtwoorden worden gehackt. In hun artikel bewijzen Brocki en zijn collega’s zelfs, dat er wel vijftig of honderd wachtwoorden bij de hacker bekend moeten zijn, wil hij een goede kans maken om de overige wachtwoorden te kraken.

Blocki zegt dat hij zelf een challenge in 7,5 seconden uitrekent zonder hulpmiddelen, zodat inloggen toch minstens 75 seconden duurt. Dat is vrij lang als je even snel je e-mail wilt checken. Het is ook zeer de vraag of de doorsnee gebruiker even goed is in deze hersengymnastiek als Jeremiah Blocki. En als je in één van de tien challenges een rekenfout maakt, geeft de inlog pas op het eind een foutmelding en moet je alle tien uitdagingen opnieuw doen.

@annedejong314

Automatisch invullen

“Het systeem dat ik beschrijf in Human Computable Passwords is gebouwd met veiligheid als primair doel. 75 seconden is inderdaad lang voor een doorsnee gebruiker. Voor dit systeem hebben we gebruikers op het oog die zeer gemotiveerd zijn, en voor wie veiligheid van kritiek belang is, bijvoorbeeld werknemers van de NSA of de CIA”, zegt Blocki.

In dit systeem stuurt een account bij elke inlog dezelfde challenges, en ook de correcte antwoorden zijn altijd hetzelfde. Jij – of beter gezegd: jouw browser – kan die antwoorden dus opslaan en automatisch terugsturen, net zoals je browser nu desgewenst automatisch wachtwoorden invult. Dat op zich tast de veiligheid van het systeem niet aan, (al berust de veiligheid van al die wachtwoorden dan op de inlog en beveiliging van je browser) maar het grote risico is, dat je dan de geheime mapping en berekening zelden nog oefent en dus waarschijnlijk vergeet. Deze procedure is immers toch wel wat ingewikkelder dan één sterk wachtwoord onthouden.

Als websites overschakelen op dit systeem, zijn de gebruikers er bijna toe veroordeeld om altijd handmatig in te loggen, zodat ze de procedure blijven repeteren. Co-auteur Manuel Blom, ook van Carnegie Mellon University, vindt dat juist een voordeel: “Precies. Je moet je browser nooit, maar dan ook nóóit wachtwoorden laten onthouden.”

Blocki heeft ook een minder ambitieus systeem bedacht, Shared Cues , waarbij de gebruiker verhalende zinnen leert associëren met telkens vier plaatjes. Door verschillende combinaties van plaatjes te ontvangen als challenges, kan een gebruiker na wat training en regelmatig oefenen, tot wel honderd verschillende wachtwoorden reconstrueren. Maar dit systeem is al niet veilig meer als slechts één tot vier wachtwoorden gehackt worden. Vooralsnog blijft het dus een uitdaging: procedures te bedenken die zo simpel zijn dat elke gebruiker ze in de praktijk kan en wil gebruiken, terwijl ze toch bestand zijn tegen het uitlekken van veel wachtwoorden.

ReactiesReageer