Hoe worden je wachtwoorden gekraakt? Hoe de wachtwoordbeveiliging verbeteren?
In dit artikel hebben we verschillende klassieke methoden voor het kraken van wachtwoorden gepresenteerd, samen met de onderliggende principes achter deze benaderingen. In aansluiting op deze concepten hebben we praktijken geboden vanuit zowel het perspectief van wachtwoordbewaarders als accounteigenaren over hoe de beveiliging van wachtwoorden te verbeteren.
We zien vaak nieuws dat wachtwoorden van gebruikers van enkele bekende apps met grote gebruikersgemeenschappen zijn gelekt. Je denkt misschien dat, omdat je die specifieke app niet gebruikt, zulke incidenten niets met jou te maken hebben, maar dat is in werkelijkheid niet het geval.
Onlangs was er ook nieuws op Twitter dat AI-methoden de snelheid van het kraken van wachtwoorden sterk kunnen versnellen. Dus wilden we de intricaties erachter begrijpen en zien hoe we de veiligheid van onze wachtwoorden kunnen verbeteren.
Hoe worden wachtwoorden gekraakt?
In het algemeen worden accountwachtwoorden doorgaans verwerkt met behulp van verschillende hash-algoritmen en vervolgens opgeslagen in databases. Je kunt verwijzen naar onze vorige blog om een beter begrip van wachtwoord-hashing te krijgen. Helaas slaan sommige serviceproviders, die gezond verstand missen, wachtwoorden in platte tekst op binnen hun databases. Deze praktijk kan nog meer aanzienlijke schade veroorzaken als de gegevens worden gelekt.
Door hashes van wachtwoorden op te slaan, kunnen zelfs databasebeheerders je oorspronkelijke wachtwoord niet openen, wat de beveiliging aanzienlijk verbetert. Bij het verifiëren van de juistheid van een ingevoerd wachtwoord, wordt hetzelfde hash-algoritme gebruikt om het ingevoerde wachtwoord te verwerken. De resulterende hash wordt vervolgens vergeleken met de opgeslagen waarde in de database. Als de twee hashwaarden overeenkomen, wordt het ingevoerde wachtwoord als correct beschouwd.
In eenvoudige bewoordingen houdt het kraken van wachtwoorden in het genereren van tekenreeksen die voldoen aan de toegestane wachtwoordregels. Het houdt vervolgens het continu controleren van deze tekenreeksen met behulp van de eerder genoemde methode in om uiteindelijk het juiste platte tekstwachtwoord te onthullen.
Veelvoorkomende methoden voor het kraken van wachtwoorden
In dit gedeelte zullen we kort drie veelvoorkomende manieren introduceren om wachtwoorden te kraken.
Brute-force attack
Brute-force-aanvallen tellen meestal alle mogelijkheden binnen de toegestane wachtwoordregels op en proberen ze een voor een.
Bijvoorbeeld, mobiele telefoons kunnen een 4-cijferig numeriek wachtwoord instellen. Brute-force-aanvallen zullen alle mogelijkheden een voor een proberen van 0000
, 0001
, 0002
, ..., helemaal tot 9999
.
Brute-force-aanvallen kosten veel tijd, omdat er te veel pogingen zijn. Stel dat de wachtwoordlengte $L$ is, en het aantal mogelijke tekens per wachtwoordcijfer is $n$, dan is het aantal mogelijkheden dat brute-force-aanvallen moeten proberen $n^L$, wat een zeer groot getal is.
De reden dat veel wachtwoorden een combinatie van cijfers, hoofdletters en kleine letters, en speciale tekens vereisen, is om $n$ te verhogen, wat het aantal mogelijkheden aanzienlijk verhoogt en daarmee de moeilijkheid van het kraken van het wachtwoord.
Dictionary attack
Dictionary-aanvallen maken gebruik van woorden uit woordenboeken, vaak gecombineerd met spaties, cijfers, speciale symbolen en andere elementen, om verschillende wachtwoordcombinaties te vormen. Deze combinaties worden vervolgens gebruikt om wachtwoordovereenkomsten te proberen.
Veel individuen kiezen ervoor om zinnen met duidelijke betekenissen als wachtwoorden te gebruiken vanwege het gemak van geheugen. Dictionary-aanvallen blijken een efficiënte methode te zijn voor het kraken van wachtwoorden met dergelijke kenmerken.
Rainbow table attack
Een regenboogtabel is een vooraf berekende koppeling van platte tekstwachtwoorden naar hun overeenkomstige hashwaarden. Door de hashwaarden die in de database zijn opgeslagen rechtstreeks te vergelijken met die in de regenboogtabel, kunnen eventuele overeenkomsten worden gebruikt om het overeenkomstige platte tekstwachtwoord op te zoeken en direct te verkrijgen.
Regenboogtabellen bieden het voordeel van directe toegang tot platte tekstwachtwoorden als de hashwaarde vooraf is berekend (en geregistreerd in de regenboogtabel). Het is echter belangrijk op te merken dat als de hashwaarde niet vooraf is berekend (en daarom niet aanwezig in de tabel), een regenboogtabel niet kan worden gebruikt.
Naast de hierboven beschreven methoden, zijn er tal van andere technieken die hier niet worden behandeld. Over het algemeen wordt een combinatie van deze methoden gebruikt om alle mogelijke wachtwoorden te omvatten en het kraakproces te versnellen.
Hoe het kraken van wachtwoorden versnellen?
In de vorige sectie hebben we kort enkele klassieke methoden voor het kraken van wachtwoorden geïntroduceerd. Hieruit kunnen we enkele ideeën samenvatten voor het verbeteren van snelheid of slagingspercentage van het kraken van wachtwoorden.
Om een wachtwoord te kraken, houdt het vaak in:
- Bepaal de zoekruimte voor het wachtwoord (genereer mogelijke wachtwoorden)
- Gebruik het hash-algoritme om hashes te genereren voor de mogelijke wachtwoorden verkregen in de vorige stap, en vergelijk ze met de hash van het wachtwoord dat moet worden gekraakt
De hierboven genoemde dictionary-aanval en regenboogtabelaanval optimaliseren respectievelijk deze twee stappen:
- De dictionary-aanval verkleint de zoekruimte voor wachtwoorden. Uitgaande van de veronderstelling dat "gebruikers de neiging hebben om wachtwoorden te maken met woordcombinaties met werkelijke betekenissen", worden woorden zoals
zzzz
niet opgenomen in het woordenboek, wat betekent dat ze niet zullen worden geprobeerd als potentiële wachtwoorden. Deze praktijk is vergelijkbaar met het vooraf uitsluiten van verkeerde antwoorden. Vergelijkbaar met het beantwoorden van meerkeuzevragen, terwijl je misschien niet zeker bent over de juiste optie, kun je identificeren welke keuzes zeker verkeerd zijn. Door deze duidelijk verkeerde opties uit te sluiten, vergroot je de kans om correct te raden tussen de resterende keuzes. - De regenboogtabelaanval versnelt de uitvoeringstijd van het hash-algoritme. Voor individuen die goed bekend zijn met datastructuren, is lookup een operatie met een complexiteit van $O(1)$, en geen enkele operatie kan eenvoudiger zijn dan $O(1)$ in termen van tijdcomplexiteit. Daarentegen, de tijdcomplexiteit van veelgebruikte hash-algoritmen zoals MD5 en SHA is $O(n)$, wat aanzienlijk langzamer is dan $O(1)$.
In de praktijk begint het optimaliseren van het wachtwoordkraakproces ook vanuit de bovenstaande twee perspectieven. Het is vermeldenswaard dat vanwege de relatief kleine ruimte voor het optimaliseren van de $O(n)$-tijdcomplexiteit voor string hash-algoritmen, er meer aandacht wordt besteed aan het verbeteren van hardware of computermethoden, die hier niet in detail zullen worden besproken.
Hoe helpt AI bij het kraken van wachtwoorden?
In de gehele poging tot wachtwoordkraken strekt de rol van AI zich uit tot het leren van bepaalde patronen en constructiemethoden van blootgelegde platte tekstwachtwoorden. Vervolgens kan AI deze wachtwoordconstructiepatronen simuleren om een reeks potentiële wachtwoorden te genereren. Hierna kan AI hash-algoritmen of zelfs gespecialiseerde hardware gebruiken om wachtwoorden te kraken.
In feite, vergeleken met andere gereedschappen voor het kraken van wachtwoorden, is het dodelijke voordeel van PassGAN dat het "de meest waarschijnlijke wachtwoorden zo snel mogelijk kan raden", wat het idee is van "het verminderen van de mogelijke wachtwoordzoekruimte" dat we hierboven hebben genoemd.
Hoe maak je wachtwoorden veiliger?
We zullen uitleggen hoe wachtwoorden te beschermen vanuit twee perspectieven. Hier beginnen we eenvoudigweg met het wachtwoord zelf, zonder andere middelen te bespreken om accountbeveiliging te garanderen, zoals multi-factor authenticatie (MFA) enzovoort.
Vanuit de kant van identiteitsserviceproviders
Als aanbieders van identiteitsservices hosten ze alle wachtwoorden van gebruikers, wat hen de verantwoordelijkheid geeft om de veiligheid van deze wachtwoorden te waarborgen. Hier zijn enkele regelingen die kunnen worden geïmplementeerd om de veiligheid van gebruikerswachtwoorden te verbeteren:
-
Vermijd het opslaan van wachtwoorden in platte tekst: Hoewel dit misschien vanzelfsprekend klinkt, slaan sommige serviceproviders nog steeds wachtwoorden in platte tekst op binnen hun databases. Het gebruiken van hashwaarden om wachtwoorden op te slaan voegt een extra laag beveiliging toe; zelfs als de database wordt gecompromitteerd, zouden hackers aanzienlijke moeite moeten doen om de gehashte wachtwoorden te kraken.
-
Pas snelheidslimieten toe op de API-interface voor wachtwoordverificatie: Laten we terugkeren naar het eerder genoemde wachtwoordkraakproces. Een integraal onderdeel van dit proces omvat "verifiëren" of een wachtwoord correct is. Aangezien wachtwoorden worden toevertrouwd aan identiteitsserviceproviders, zijn zij de enige entiteiten die uitgerust zijn om een API voor wachtwoordverificatie te bieden. Door de frequentie van toegang tot deze API te beperken, kunnen we hackers hinderen om snel verschillende wachtwoorden te proberen, zelfs als ze zeer waarschijnlijke wachtwoordgissingen hebben.
-
Dwing complexere wachtwoordsamenstellingen af: Bijvoorbeeld, zoals eerder vermeld, draagt grotere tekensortering binnen wachtwoorden van een bepaalde lengte bij aan verhoogde complexiteit. Bovendien, door AI-technieken te gebruiken die vergelijkbaar zijn met die eerder besproken, kunnen we de wachtwoordsbeveiliging evalueren voordat deze wordt ingevuld. Als een wachtwoord als zwak wordt beschouwd, kunnen gebruikers worden aangespoord om een robuustere optie te kiezen.
Vanuit gebruikersperspectief
Als accounteigenaren en bijbehorende digitale activa, moeten gebruikers de grootste aandacht besteden aan het waarborgen van de beveiliging van hun accountwachtwoorden.
-
Vermijd het gebruik van hetzelfde wachtwoord op verschillende websites: Na het verkrijgen van wachtwoorden van bepaalde websites, proberen veel hackers die accountgegevens te gebruiken om toegang te krijgen tot andere websites. Als meerdere accounts voor verschillende diensten hetzelfde wachtwoord delen, bestaat het risico van verlies van accounts en informatieflekken in het voornoemde scenario.
-
Kies waar mogelijk voor volledig willekeurige wachtwoorden: Deze benadering helpt bij het voorkomen van het hergebruik van veelvoorkomende wachtwoordpatronen die de meeste mensen gebruiken (zoals eerder vermeld, het gebruik van Engelse zinnen), waardoor het moeilijker wordt voor hackers om "de wachtwoordzoekruimte te verkleinen" en het niveau van wachtwoordcomplexiteit te verhogen.
Als de infrastructuuraanbieder voor identiteitsservices heeft Logto veel van de bovengenoemde beste praktijken geïmplementeerd om de beveiliging van gebruikersaccounts te waarborgen. Dit stelt gebruikers in staat om zich met verschillende apps bezig te houden zonder de zorg voor accountverlies, terwijl het ook online serviceproviders in staat stelt om met minimale inspanning de gebruikersgegevensbeveiliging te waarborgen, waardoor ze zich kunnen concentreren op hun kernactiviteiten.