Simovits

Maskininlärning för lösenordsknäckning

Maskininlärning och AI-system har en oerhörd förmåga att upptäcka mönster i data som är svår för oss människor att hitta eller definiera tydliga regler för. Maskininlärning är idag på en så pass hög nivå att många väldigt smala användningsområden kan utföras av AI-system betydligt snabbare än människor kan, och i många fall med högre eller likvärdigt kvalitet. Bildigenkänning, språköversättning, textgenerering, bilkörning, och så vidare. Dessa framsteg inom AI har inte undgått cyber-angripare, som i många fall använt AI-system för att genomföra attacker. Till exempel: 

AI har även visat sig vara användbart för lösenordsknäckning, vilket jag tänkte berätta lite om i dagens blogginlägg.

Lösenordsknäckning

Den typiska processen för att knäcka lösenord inkluderar två huvudsakliga steg. Först att gissa lösenord, och sedan att hasha gissningen och jämföra hashen med lösenordets hash. Om hasharna är lika har man knäckt lösenordet.

Det andra steget, hashning av gissningar, är svårt för AI-teknink att förbättra på ett meningsfullt sätt. Hash-funktioner som används för lösenord är designade för att ge en till synes slumpmässig output. AI-system är duktiga på att finna mönster i data. Om det finns mönster i output från en hash skulle det innebära att hash-funktionen har grova brister. Under förutsättningen att de hash-funktioner som används inte har så pass grova brister att maskininlärning skulle kunna upptäcka dem är det inte troligt att AI kan förbättra denna del av lösenordsknäckning. Hastighet (hur många gissningar man kan hasha per tidsenhet) är en viktig del, och AI-system är generellt mer komplexa (och därmed långsammare) än klassisk hantering av hash-funktioner.

Den andra delen av lösenordsknäckning, att generera gissningar för lösenord, är något som AI-system har en potential att utveckla. Idag används en rad olika metoder för att skapa gissningar.

Flera av dessa metoder handlar om att utnyttja mönster i hur människor väljer att skapa lösenord, ofta med ändamålet att lösenord ska vara lätta att memorera. Maskininlärningsbaserad lösenordsknäckning försöker utnyttja samma svaghet i lösenord. Man man låter AI-systemet försöka hitta mönster i användabeteenede och genererar nya lösenordsgissning utifrån detta.

Generative adversarial network (GAN)

Att lära en dator generera ny data är inte helt trivialt. En vanligt tillvägagångssätt för att skapa AI-system som klarar av detta är så kallade generative adversarial networks, som t.ex. Deepfake eller thispersondoesnotexist.com. Tillåt mig att sväva iväg och förklara upplägget för denna typ av AI.

Grundprincipen är att man sammanlänkar två separata AI-system, vanligtvis artificiella neuronnät; (artificial neural networks):

  1. Genererare (“generative network”). Detta nätverks mål är att skapa ny data givet en slumpad input. 
  2. Klassificerare (“discriminative network”). Detta nätverks mål är att klassificera data. 

Dessa två nätverk arbetar båda med att minimera/maximera korrektheten i bedömningen från klassificeraren. Låt oss betänka ett exempel där målet är att bilder på katter ska skapas. Flödet är ungefär:

Efter många (tusentals) iterationer av denna process kommer de två nätverken bli bättre och bättre på sina uppgifter. Ju bättre klassificeraren blir på att identifiera artificiella katter, desto bättre måste måste genereraren bli på att skapa kattbilder för att kunna lura klassificeraren. När klassificeraren sedan kopplas bort har man en AI (genereraren) som kan ta slumpat input och spotta ut bilder som är svåra, till och med för oss människor, att särskilja från riktiga katter.

Värt att notera är att inom denna metod har genereraren aldrig direkt “sett” en bild på en katt. Den enda informationen om hur en katt ser ut fås via bedömningar från klassificeraren. Ändå är den kapabel att generera bilder som är mycket lika riktiga katter. 

Applikation inom lösenordsknäcking

Samma metod som beskrivit ovan för kattbilder är applicerbar på användarvalda lösenord. Dessutom finns det mycket träningsdata från lösenordsläckor att tillgå, något som är ett måste för att kunna applicera maskininlärning på ett problem. Precis detta har testats i AI:n passGAN [2], med målet att generera nya bra gissningar på möjliga lösenord. Precis som beskrivet ovan inkluderar detta skapandet av detta två separata AI delar; en klassificerare och en genererare. Det klassificerande nätverket är tränat på en del av lösenorden från RockYou-läckan, runt 10 miljoner unika lösenord. Efter att träningen var genomförd kopplades klassificeraren bort och genereraren ombads skapa nya lösenord. För att testa kvaliteten på dessa nya lösenord jämfördes de med ny data som inte ingått i träningsdatan; den del av RockYou-läckan som inte använts som träningsdata, samt lösenord från LinkedIn-läckan. Av de lösenord som existerar i dessa databaser lyckades passGAN gissa ungefär en tredjedel av dem, vilket indikerar att passGAN har lyckats finna och applicera verkliga mönster i användarvalda lösenord. Tittar man på de lösenords som passGAN har genererat men inte matchar någon av testdatan påminner de om verkliga lösenord. Nedan är några exempel av dessa. Om de matchar något av läsarens lösenord rekommenderar jag att du byter ut det omgående.

coolarse18, iscoolin, paleyoung, toshibaod, nyc1234, vamperiosa, saddracula, @crepess, apple8487, ttybaby5

[1] https://eprint.iacr.org/2016/246.pdf

[2] https://arxiv.org/abs/1709.00440

ʇʇɐʞ ɓıʇʞıɹ uǝ ɹɐ̤ uǝplıq ǝɾpǝɹʇ uǝᗡ