Het soort wachtwoord dat u moet maken, heeft veel te maken met hoe het wachtwoord wordt opgeslagen.

Jaren geleden waren willekeurige wachtwoorden van acht tekens, bestaande uit hoofdletters en kleine letters, symbolen en cijfers, erg moeilijk te kraken. In sommige gevallen duurde het jaren om zo'n wachtwoord te kraken.

Dankzij de huidige veranderende technologie en verhuurbare machines is deze tijd teruggebracht tot uren. Maar hoe worden deze wachtwoorden in de eerste plaats opgeslagen?

Hoe wachtwoorden online worden opgeslagen

Systemen slaan gebruikerswachtwoorden niet rechtstreeks op in bestanden of databases, omdat aanvallers de database kunnen overnemen waar de systemen de wachtwoorden bewaren. In plaats daarvan versleutelen systemen gebruikerswachtwoorden en komen aanvallers een versleutelde versie van elk wachtwoord tegen.

Er zijn enkele algoritmen die systemen gebruiken om wachtwoorden te versleutelen. Een van deze algoritmen is het symmetrische algoritme. Het symmetrische algoritme is een vorm van codering

waar u dezelfde sleutel kunt gebruiken voor zowel codering als decodering. De sleutel die u gebruikt om de gegevens te versleutelen, is dezelfde voor zowel versleuteling als ontsleuteling. De beveiliging van symmetrische algoritmen brengt enkele risico's met zich mee, aangezien er slechts één sleutel is voor decodering. Om deze reden gebruiken systemen over het algemeen geen symmetrische algoritmen voor wachtwoordversleuteling.

Over het algemeen is de methode die systemen gebruiken voor codering hash-algoritmen. Hash-algoritmen zijn bedoeld om de integriteit van gegevens te verifiëren en weer te geven, niet om gegevens te versleutelen. Hash-algoritmen zetten gegevens om in een hash van vaste grootte. Deze hashes vertegenwoordigen meestal een unieke hash van gegevens.

Dankzij het hash-algoritme, als een aanvaller de wachtwoorddatabase heeft overgenomen, kan de aanvaller van hieruit geen toegang krijgen tot het wachtwoord. Er is een zeer belangrijke nuance waar u hier op moet letten. Theoretisch kan een aanvaller die een systeem binnendringt dat voor alle wachtwoordcombinaties hetzelfde hash-algoritme gebruikt, de verkregen resultaten vergelijken. Als de aanvaller dezelfde waarde produceert als resultaat van deze vergelijkingen, heeft de aanvaller ontdekt wat de open versie van het wachtwoord is. Bij deze methode draait alles om vallen en opstaan, en deze vorm van aanval ook over het algemeen een brute force-aanval genoemd.

Aan het begin van de jaren 2000 kon het honderden jaren duren voordat alle combinaties van wachtwoorden van 8 tekens waren versleuteld met populaire hashing-algoritmen. Uiteraard bevat deze set geen zeer eenvoudige combinaties zoals "123456" of "mijn wachtwoord". Met de ontwikkeling van de huidige software- en hardwaretechnologieën is de methode om wachtwoorden te kraken ook veel veranderd.

De impact van opkomende GPU's

De parallelle gegevensverwerkingsmogelijkheden van grafische processors (GPU's) zijn in de loop van de tijd verbeterd. GPU's zijn niet in staat om veelzijdige bewerkingen uit te voeren zoals algemene CPU's. Dus ook al zijn die er zoveel kernen en parallelle verwerkingskracht, het heeft geen zin om ze voor bijna elk probleem te gebruiken, zoals CPU.

Toch is het mogelijk om sommige hash-algoritmen die voor wachtwoorden worden gebruikt, vrij efficiënt uit te voeren op de GPU. De berekenbare hashes per seconde die je kunt bereiken met traditionele CPU's zijn enorm gegroeid met nieuwe GPU-platforms.

Bekijk, om een ​​idee te krijgen, de hash-aantallen per seconde van hash-algoritmen zoals NTLM, MD5 en SHA1 in de onderstaande tabel. Voor nu is het voldoende om te weten dat deze algoritmen slechts een hash-algoritme zijn. Om deze tabel te maken, heb ik een clustersysteem gebruikt dat bestaat uit 25 AMD Radeon GPU's.

Algoritme

Hashings per seconde

NTLM

350.000.000.000

MD5

180.000.000.000

SHA1

63.000.000.000

SHA512Crypte

364.000

Bcrypt

71.000

Versleutelen

33.000

Zoals je kunt zien, kun je met zo'n systeem NTLM-hashes 350 miljard keer per seconde genereren. Dit betekent dat je alle combinaties van een wachtwoord van 8 tekens in minder dan 6 uur kunt uitproberen. Bovendien is de hardware in dit voorbeeld van jaren geleden. Stel je de kracht van vandaag om wachtwoorden te kraken voor.

Wat moeten softwareontwikkelaars doen?

De manier waarop programmeurs zouden moeten gaan is vrij eenvoudig: ze zouden de voorkeur moeten geven aan algoritmen die er langer over doen om hash-waarden te berekenen bij het coderen van wachtwoorden. Ontwikkelaars moeten niet alleen leren over de prestaties van het algoritme dat ze gebruiken op de CPU, maar ook over hoe veerkrachtig het is tegen de GPU-wereld.

Als ontwikkelaars werken met een softwareframework dat ook wachtwoordversleutelingsprocessen aanpakt, zoals Django, Ruby on Rails en Spring Security moeten ze controleren of de juiste beslissingen zijn genomen binnen de kaders qua beveiliging.

Bijvoorbeeld, bedenken, een van de meest gebruikte bibliotheken voor gebruikersbewerkingen in Ruby on Rails, gebruikt Bcrypt als het standaard hash-algoritme. Hiermee kunt u ook een andere methode gebruiken als het hash-algoritme. Het Bcrypt-algoritme is betrouwbaar omdat het nog steeds erg lang duurt voordat de GPU kapot gaat.

Samengevat, hoe langer de berekening van de hashwaarde duurt, hoe veiliger u bent.

Hoeveel tekens moet uw wachtwoord hebben?

Elk extra teken dat u gebruikt, verhoogt geometrisch het aantal pogingen en fouten dat nodig is om uw wachtwoord te kraken en uw wachtwoord veiliger te maken.

Laten we deze situatie bekijken door middel van twee verschillende scenario's. Bekijk de waarden in de bovenstaande tabel voor het NTLM-hash-algoritme en stel je voor dat je gaat proberen het wachtwoord te kraken. Stel je voor dat je je richt op wachtwoorden van acht tekens of meer.

Aantal karakters

Hoofdletters/kleine letters en cijfers

Hoofdletters/kleine letters, cijfers en speciale symbolen

8

minder dan 1 minuut

2 minuten

9

2 minuten

twee uur

10

twee uur

1 week

11

6 dagen

2 jaar

12

1 jaar

200 jaar

13

meer dan 100 jaar

meer dan 1000 jaar

Wanneer u de tabel bekijkt, kunt u zien dat het gebruik van een wachtwoord van minimaal 12 tekens veilig is wanneer u alle combinaties van hoofdletters/kleine letters, cijfers en speciale symbolen gebruikt. Als u geen speciale symbolen gebruikt, blijkt dat u 13 tekens moet gebruiken als veilige wachtwoordlengte. Als u in dit systeem de Bcrypt-hashmethode gebruikt in plaats van NTLM-hash, zijn 8 tekens voldoende. U heeft echter niet de mogelijkheid om te weten met welke hash-methode een systeem dat u via het web betreedt, uw wachtwoord bewaart. Daarom moet u alle mogelijkheden overwegen.

Het grootste probleem voor softwareontwikkelaars is dat het bijna onmogelijk is om gebruikers te overtuigen om een ​​wachtwoord van minimaal 12 tekens te gebruiken. Tegenwoordig is het mogelijk om te zeggen dat het gebruik van wachtwoorden van deze lengte laag is. Daarom zal het, volgens het gebruiksscenario van het ontwikkelde systeem, nodig zijn om een ​​middenweg te vinden die door de gebruikers wordt geaccepteerd. om hun wachtwoordbeveiliging te verbeteren.

een laatste suggestie voor ontwikkelaars is om niet alleen de minimale lengte te controleren, maar ook de maximale lengte van de invoer die binnenkomt via de formulieren die u aan de gebruiker hebt gepresenteerd. Zeker als je het gebruik van een langzaam te berekenen hash-algoritme zoals Bcrypt voor beveiliging inschakelt doeleinden, kunt u enkele risico's tegenkomen als u de maximale lengte van het ingevoerde wachtwoord niet beheert de gebruiker. Aanvallers kunnen bijvoorbeeld aanvallen uitvoeren door tientallen wachtwoorden van 100.000 tekens tegelijk uit te proberen met enkele speciaal voorbereide verzoeken. In dat geval is het zeer waarschijnlijk dat uw systeem niet meer reageert op andere gebruikers.

Advies aan eindgebruikers

Zorg ervoor dat uw wachtwoord minimaal 12 tekens lang is en zorg ervoor dat u combinaties van hoofdletters en kleine letters, cijfers en symbolen gebruikt. Vergeet nooit dat de systemen die uw wachtwoord opslaan, kunnen worden gehackt en dat uw informatie kan worden misbruikt. U kunt niet weten welke algoritmen een systeem gebruikt om uw wachtwoord te versleutelen, dus het is geheel aan u om voorzorgsmaatregelen te nemen en sterke wachtwoorden te maken.