Waarom websites zout op hun hashes moeten strooien om uw wachtwoorden te beschermen
Ondanks hun tekortkomingen zijn wachtwoorden nog steeds de de facto standaard voor authenticatie op het web.
ExpressVPN heeft al geschreven over de voordelen van het maken van veilige wachtwoorden met behulp van Diceware, het gebruik van wachtwoordbeheerders en het bouwen van een nieuwe beveiligingslaag rond uw accounts met tweefactorauthenticatie.
Maar wat gebeurt er achter de schermen? Welke maatregelen kan en moet een website-exploitant nemen om uw wachtwoorden te beveiligen?
De geboorte van computerhacking
Het eerste computersysteem dat wachtwoorden gebruikte, was het compatibele tijdverdelingssysteem van het Massachusetts Institute of Technology, gebouwd in 1960. Door het delen van tijd kon de computer worden gepartitioneerd en als verschillende werkstations worden gebruikt.
Toch waren er meer onderzoekers dan werkstations en kregen gebruikers beperkte tijd op het systeem toegewezen (wat sommigen behoorlijk snel uitgeput). Om ervoor te zorgen dat de onderzoekers binnen hun limieten bleven, kreeg elk een uniek wachtwoord om in te loggen.
Maar natuurlijk, met de eerste wachtwoorden kwam de eerste hacker. Een onderzoeker, Allan Scherr, maakte gebruik van een systeem waarmee gebruikers bestanden konden afdrukken via ponskaarten (computers hadden in de jaren zestig geen schermen). Scherr heeft het bestand met de wachtwoorden gevonden en afgedrukt, zodat hij zich als andere gebruikers kan aanmelden en de computer langer kan gebruiken.
Tegenwoordig wordt het als grove nalatigheid beschouwd om wachtwoorden in duidelijke tekst op een systeem op te slaan, hoewel de hack van de Russische sociale mediasite VK.com uit 2016 laat zien dat sommige grote sites dat nog steeds doen. De VK.com-wachtwoorden van 100 miljoen gebruikers zijn gestolen en zijn nu te koop.
Waarom hash-functies eenrichtingsverkeer zijn
Een hashfunctie is een eenrichtingsversleuteling en werkt ongeveer als een vingerafdruk. Elk bestand, woord of tekstreeks wordt een hash-“vingerafdruk” genoemd, die op unieke wijze de exacte inhoud van het oorspronkelijke bestand identificeert.
Hashes kan worden gebruikt om informatie te bepalen, maar niet waar de gegevens voor staan. Een eenvoudige manier om je voor te stellen hoe hashes werken is met cijfersommen (de som van alle cijfers).
De cijfersom van 9807347 is 9 + 8 + 0 + 7 + 3 + 4 + 7 = 38
Hoewel het gemakkelijk is om te zien dat de cijfersom van 987347 38 is, is het onmogelijk om 987347 te berekenen op basis van het getal 38.
SHA-256 hashes voor verschillende tekstreeksen en een afbeeldingsbestand.
SHA-256 biedt een universum van permutaties
Ongelooflijk, 256 bits is voldoende lang om uniek te identificeren elk atoom in het waarneembare universum (2 ^ 256 = 1.157920892 × 10⁷⁷).
Hoewel, in theorie, er twee verschillende waarden kunnen zijn die beide dezelfde SHA-256 hash hebben. Een dergelijke gebeurtenis wordt een hash-botsing genoemd en de beveiliging van een hash-functie is afhankelijk van het feit dat ze niet ontdekt kunnen worden.
De voorganger van SHA-2 (waarvan SHA-256 een variant is) – het ooit populaire SHA-1-algoritme – staat bekend als kwetsbaar voor hash-botsingen. Hoewel het vermeldenswaard is, heeft niemand er ooit een gevonden.
Een andere eens populaire hash, MD5, had zoveel kwetsbaarheden dat het geen nuttige verdediging is tegen kwaadaardig geknoei met bestanden.
Afgezien van het coderen van wachtwoorden, kunnen hash-functies ook nuttig zijn om ervoor te zorgen dat niet met bestanden is geknoeid, vergelijkbaar met cryptografische handtekeningen, omdat een gewijzigde tekstreeks de hash-sleutel zal wijzigen.
Door wachtwoorden als hashes op te slaan, in plaats van als tekst, kunt u controleren of een wachtwoord correct is zonder dat het wachtwoord kwetsbaar wordt voor hackers.
Zout en hash beschermt uw wachtwoorden
Als iemand een database zou kunnen hacken die alleen gehashte wachtwoorden bevat, zou hij in theorie geen nuttige informatie krijgen. In werkelijkheid hergebruiken mensen hun wachtwoorden echter op veel sites of gebruiken ze veelvoorkomende woorden, en er zijn veel dingen die een hacker kan doen om de hashes te kraken.
Elke SHA-256 hash van het woord ExpressVPN is altijd hetzelfde, op alle systemen. Dus als uw gebruikersnaam Lexie is en u ExpressVPN als wachtwoord gebruikt (niet), zou een hacker kunnen zoeken naar de hash “c9f45 … 3d185” tussen de wachtwoorden om te zien dat Lexie’s wachtwoord ExpressVPN is.
Hoewel dit op zichzelf niet zo handig klinkt, zijn er lijsten met de top paar duizend meest gebruikte wachtwoorden (die we kennen van eerdere hacks).
Met behulp van een dergelijke lijst kan een hacker zoeken naar de hashes van de algemene wachtwoorden en deze koppelen aan gebruikersnamen.
Dit type aanval wordt een regenboogtabel of woordenboekaanval genoemd. Er is niet genoeg tijd over in het universum voor een aanvaller om elke mogelijke hash / wachtwoord-combinatie te proberen in een brute force-aanval. Maar er is genoeg tijd om de meest gebruikte wachtwoorden te proberen, wat waarschijnlijk een aanzienlijk deel van de database in gevaar zou brengen.
Salting beschermt wachtwoorden door ze unieke nummers toe te wijzen
Om te beschermen tegen woordenboekaanvallen, kan een databasebeheerder een methode genaamd ‘salting’ gebruiken, waarbij aan elk wachtwoord een uniek willekeurig nummer wordt toegewezen. Een SHA-256 hash van de combinatie van zout en wachtwoord wordt vervolgens berekend, opgeslagen en gecontroleerd.
Als alternatief kan het wachtwoord worden gehasht, gecombineerd met het zoutnummer, en het resultaat opnieuw worden gehasht.
Voorbeelden van “gezouten” hashes, opnieuw gehasht.
Vanwege de zouttechniek is het maken van een regenboogtafel niet langer aantrekkelijk. De willekeurige getallen zouden elke hash uniek maken, zelfs als de gebruiker geen uniek wachtwoord heeft gekozen.
Als een hacker gebruikers met het wachtwoord ‘Passw0rd!’ Wilde targeten, zou het salt-nummer de database veilig houden.
De toekomst van wachtwoordsystemen
Wachtwoorden zijn verre van optimaal voor online authenticatie. Een goede is moeilijk te onthouden, ze zijn moeilijk in te trekken, en eenmaal gelekt kan aanzienlijke schade veroorzaken.
Wachtwoordbeheerders kunnen wachtwoorden gebruiksvriendelijker maken en u helpen unieke te maken. Ze zullen u ook aanmoedigen om uw inloggegevens regelmatig te wijzigen, wat nodig is voor een goede online beveiliging.
Misschien zullen we in de toekomst overstappen op alternatieve vormen van authenticatie, zoals openbare / private sleutelparen, mogelijk gecombineerd met hardwaresleutels. In een dergelijk model hoeft u uw openbare sleutel slechts één keer naar een server te uploaden wanneer u zich aanmeldt, en daarna nooit meer.
Hoewel niet noodzakelijkerwijs grotere hoeveelheden veiliger zijn dan een correct geïmplementeerde wachtwoordoplossing, is het minder waarschijnlijk dat openbare / private sleutelparen door zowel de gebruiker als de service onjuist worden toegepast.
Wat u kunt doen om uw wachtwoorden te beveiligen
Houd er rekening mee dat veel van de services die u vandaag gebruikt, mogelijk al de controle over uw wachtwoorden hebben verloren. Misschien weten ze het nog niet, of weigeren ze het publiekelijk te erkennen – hun imago beschermen ten koste van de veiligheid van hun gebruikers.
Gebruik een willekeurige wachtwoordgenerator en verander uw wachtwoorden in lange willekeurige reeksen letters en tekens. U kunt bij sommige services ook tweefactorauthenticatie activeren om een extra beveiligingslaag toe te voegen.
Het is ook een goed idee om accounts te verwijderen die u niet meer gebruikt, in de hoop dat de service uw gebruikersgegevens verwijdert.