Hoe slaan netwerken en systemen wachtwoorden en andere inloggegevens op?

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 veranderende technologie en huurhardware van vandaag is deze tijd teruggebracht tot uren. Maar hoe worden deze wachtwoorden in de eerste plaats opgeslagen? Verifiëren Wachtwoorden behoren tot het verleden: waarom ze dit jaar worden uitgefaseerd.

Hoe worden wachtwoorden op internet opgeslagen?

Systemen slaan gebruikerswachtwoorden niet rechtstreeks op in bestanden of databases, omdat een aanvaller de database kan controleren waarin de systemen wachtwoorden bewaren. In plaats daarvan versleutelen de systemen de gegevens van de gebruiker, waardoor de aanvaller te maken krijgt met een versleutelde versie van elk wachtwoord.

Er zijn enkele geavanceerde algoritmen die systemen gebruiken om wachtwoorden te versleutelen. Een van deze algoritmen is het symmetrische encryptie-algoritme. Dit is een type codering waarbij u dezelfde sleutel kunt gebruiken voor zowel codering als decodering. De beveiliging van symmetrische versleutelingsalgoritmen brengt enkele risico's met zich mee, aangezien er slechts één sleutel is aangewezen voor ontsleuteling. Om deze reden gebruiken systemen over het algemeen geen symmetrische versleutelingsalgoritmen.

Over het algemeen is de methode die systemen gebruiken voor codering hashing-algoritmen. Ze zijn bedoeld voor het controleren en representeren van gegevensintegriteit, niet voor gegevenscodering. Hash-algoritmen zetten gegevens om in een hash met een vaste grootte. Het vertegenwoordigt meestal een unieke hash van gegevens. Wat de hash-functie zou moeten doen, is gegevens met een vaste lengte genereren van een willekeurige hoeveelheid gegevens als kaart.

Dankzij het hashing-algoritme, als een aanvaller de database met het wachtwoord overneemt, kunnen ze vanaf hier geen toegang meer krijgen tot het wachtwoord. Er is een zeer belangrijke nuance waar u hier op moet letten. Theoretisch kan een aanvaller die inbreekt op een systeem met hetzelfde hash-algoritme voor alle combinaties van wachtwoorden de verkregen resultaten vergelijken. Als de aanvaller dezelfde waarde krijgt als resultaat van deze vergelijkingen, dan heeft hij de open versie van het wachtwoord gedetecteerd. Bij deze methode gaat het om vallen en opstaan, en dit type aanval wordt over het algemeen een brute force-aanval genoemd.

Aan het begin van de jaren 8 zou het honderden jaren duren om alle combinaties van wachtwoorden van 123456 tekens te proberen, versleuteld met populaire hashing-algoritmen. Zeer eenvoudige combinaties zoals “XNUMX” of “mijnwachtwoord” vallen natuurlijk niet onder deze combinatie. Met de ontwikkeling van software- en hardwaretechnologieën vandaag, is de manier om wachtwoorden te kraken ook veel veranderd. Verifiëren Kun je de veiligheid van wachtwoordmanagers vertrouwen?

Het effect van het uiterlijk van grafische kaarten

De parallelle gegevensverwerkingsmogelijkheden van grafische processors (GPU's) zijn in de loop van de tijd verbeterd. Grafische kaarten zijn niet in staat om veelzijdige bewerkingen uit te voeren, zoals CPU's voor algemeen gebruik. Dus ook al zijn er veel kernen en parallelle verwerkingskracht, het heeft geen zin om het voor bijna elk probleem als een processor te gebruiken.

Het is echter mogelijk om sommige hash-algoritmen die voor wachtwoorden worden gebruikt zeer efficiënt op een GPU te implementeren. Het aantal hashes per seconde dat je kunt halen met traditionele CPU's is exponentieel gegroeid met nieuwe grafische kaarten.

Bekijk om een ​​idee te krijgen het aantal hashes per seconde (de term hashsnelheid verwijst naar de snelheid waarmee een computer hashberekeningen kan uitvoeren) voor hashing-algoritmen zoals NTLM, MD5 en SHA1 in de onderstaande tabel. Het is voorlopig voldoende om te weten dat deze algoritmen slechts een hashing-algoritme zijn. Om deze tabel te maken, heb ik een cluster van 25 AMD Radeon GPU's gebruikt.

algoritmeHet aantal hashes per seconde
NTLM350.000.000.000
MD5180.000.000.000
SHA163.000.000.000
SHA512Crypte364.000
Bcrypt71.000
scrypt33.000

Zie je, met zo'n systeem kun je een NTLM-hash genereren van 350 miljard keer per seconde. Dit betekent dat u alle wachtwoordcombinaties van 8 tekens in minder dan 6 uur kunt uitproberen. Bovendien is de hardware in dit voorbeeld van jaren geleden. Stel je vandaag de kracht van het kraken van wachtwoorden voor.

Wat moeten softwareontwikkelaars doen?

De manier waarop programmeurs zouden moeten gaan is heel 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 weten hoe het algoritme dat ze gebruiken presteert op een CPU, maar ook hoe veerkrachtig het is tegen het rijk van grafische kaarten.

Als ontwikkelaars werken met een softwareframework dat ook wachtwoordcryptografie verwerkt, zoals Django, Ruby on Rails en Spring Security, moeten ze controleren of de juiste beslissingen zijn genomen in het framework op het gebied van beveiliging.

Bijvoorbeeld gebruikt Valuta , 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 hash-algoritme. Het Bcrypt-algoritme is betrouwbaar omdat het nog steeds lang duurt voordat de grafische kaart op het juiste punt komt.

Kortom, hoe langer je de hashwaarde berekent, hoe veiliger je bent.

Hoeveel tekens moet uw wachtwoord bevatten?

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

Laten we deze situatie eens bekijken in 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 tekensHoofdletters/kleine letters en cijfersHoofdletters/kleine letters, cijfers en speciale symbolen
8minder dan een minuutTwee minuten
9Twee minutenTwee uur
10Twee uurEen week
11Zes dagentwee jaar
12Een jaar200 jaar
13Meer dan 100 jaar oudMeer dan 1000 jaar oud

Als u de tabel bekijkt, kunt u zien dat een wachtwoord van minimaal 12 tekens veilig is wanneer alle combinaties van hoofdletters/kleine letters, cijfers en speciale symbolen worden gebruikt. Als je geen speciale symbolen gebruikt, blijkt dat je 13 tekens moet gebruiken om de lengte van een veilig wachtwoord te bereiken. Als je in dit systeem de Bcrypt-hashmethode gebruikt in plaats van de NTLM-hash, volstaan ​​8 tekens. U hebt echter niet de mogelijkheid om te zien welke hashmethode wordt gebruikt door het systeem dat u via internet invoert en dat uw wachtwoord bevat. 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 hebben. Tegenwoordig kan worden gezegd dat de gebruiksgraad van een wachtwoord van deze lengte laag is. Daarom zal het, volgens het gebruiksscenario van het ontwikkelde systeem, nodig zijn om een ​​compromis te vinden dat gebruikers zullen accepteren 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 de gebruiker hebt gegeven. Vooral wanneer u het gebruik van een rekenkundig traag hashing-algoritme zoals Bcrypt voor veiligheidsdoeleinden inschakelt, kunt u enkele risico's lopen als u geen controle heeft over de maximale lengte van het door de gebruiker ingevoerde wachtwoord. Aanvallers kunnen bijvoorbeeld aanvallen uitvoeren door tegelijkertijd tientallen wachtwoorden van 100 tekens uit te proberen met een aantal speciaal vervaardigde verzoeken. In een dergelijke situatie is het zeer waarschijnlijk dat uw systeem niet meer reageert op andere gebruikers. Verifiëren Hoe kom je erachter of je wachtwoorden online worden verkocht?.

Advies voor eindgebruikers

Houd uw wachtwoord minimaal 12 tekens lang en zorg ervoor dat u combinaties van hoofdletters en kleine letters, cijfers en speciale 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 het systeem gebruikt om het wachtwoord te versleutelen, dus het is geheel aan u om voorzorgsmaatregelen te nemen en sterke wachtwoorden te maken. U kunt nu bekijken Hoe u online sterke wachtwoorden genereert die moeilijk te kraken zijn?.

Ga naar de bovenste knop