sikkerhet
Slik kan passordet ditt knekkes
Deltakere under årets Sikkerhetsfestival fikk forklart hvordan av tidligere norgesmester i cybersikkerhet.
Lillehammer: Dersom et IT-system krever at du må oppgi et passord for å autentisere deg, må IT-systemet selv ha en kopi av passordet, eller i de fleste tilfeller en representasjon av passordet, for å sjekke at passordet stemmer.
Svært ofte representeres passordet av en hash, noe som betyr at passordet har blitt matet inn i en hashingfunksjon som konverterer passordet om til en hash – en verdi som blant annet har fast lengde, uavhengig av lengden på passordet eller andre data som mates inn i funksjonen.
Under Sikkerhetsfestivalen som ble arrangert tidligere denne uken, fortalte Martin Ingesen, flere ganger norgesmester i cybersikkerhet og daglig leder i sitt eget selskap, Kovert, om passordhasher og hvordan slike bidrar til å beskytte passord, men også hvordan de kan knekkes.
Til penetrasjonstesting
Til daglig jobber Ingesen som penetrasjonstester. Det betyr blant annet at han på oppdrag fra kunder skal teste sikkerheten til kundens systemer, for eksempel ved å forsøke å bryte seg inn i systemene. I løpet av en arbeidsdag kommer han over mange passordhasher, som det kan være nyttig for ham å kunne knekke.
– Hasher dukker opp over alt når man driver med sikkerhetstesting, sa Ingesen.
Hashingfunksjoner fungerer i prinsippet bare den ene veien. Verdien som mates inn vil i de aller fleste tilfeller føre til at det regnes ut en unik hashverdi. Ingen andre inndataverdier skal føre til den samme hashverdien. I motsatt fall kalles det for en kollisjon. Hashingfunksjoner hvor det har blitt avdekket kollisjoner, regnes ikke lengre som sikre.
En annen egenskap som preger hashingfunsjoner, omtalte Ingesen som en snøskredeffekt. Dette innebærer at selv den minst endring i inndataene, for eksempel å bytte ett tegn i passordet, gir en stor endring i utdataene. Hashverdien blir en helt annen.
Bare én praktisk måte
Fordi hashingfunksjonene er enveis, er det ingen måte å dekryptere hashverdier på.
– Den eneste praktiske måten å knekke passordhasher på, er å forsøke å gjette hva som er inndataene. Dette er veldig enkelt i teorien og kan for eksempel gjøres ved å bruke en ordliste, fortalte Ingesen.
Men uten riktige verktøy og metoder vil det gå utrolig tregt.
På maskinvaresiden er GPU-er foretrukket, siden disse er mest effektive til denne typen oppgaver. Én mulighet da, er å leie dette som en tjeneste fra de store skyleverandørene.
– Dersom du har veldig lyst til å knekke hasher veldig fort – med en gang – så er skytjenester en enkel måte å komme i gang på, fortalte Ingesen.
Rå regnekraft
En annen mulighet er å kjøpe grafikkort selv og sette dem inn i en egnet datamaskin. Det er fullt mulig for et kraftig system å beregne mer enn tusen milliarder passordhasher i sekundet (terahash/s). Et eksempel på en slik maskin befinner seg hos Kovert, selskapet til Ingesen.
Ingesen fortalte at hans selskap har en server med intet mindre enn 10 stykk GeForce RTX 3080 Ti-kort.
– Dette er ikke noe du har i stua, og ikke i bøttekottet heller, for den blir veldig, veldig varm. Har dere hørt jetfly ta av? Det er høy lyd, fortalte Ingesen.
Serveren til Kovert skal kunne klare å beregne 1,2 terahasher i sekundet, avhengig av hashingfunksjonen som benyttes.
Energikrevende
For at beregningene skal gå raskest mulig, må de øvrige komponentene i serveren matche antallet grafikkort. Blant annet må du ha like mye RAM (systemminne) som grafikkortene har VRAM. Antallet CPU-er må også minst tilsvare antallet GPU-er. Og du må ha tilgang på nok strøm. Ifølge Ingesen er dette temmelig likt det som brukes til utvinning av kryptovaluta.
– En fordel er at leiekontrakten vår innebærer at vi ikke betaler for strøm, sa Ingesen, noe som førte til latter fra de mange som hørte på foredraget.
Årsaken til at Kovert har valgt å ha systemet lokalt, handler blant annet om tilgangen til systemet.
– Ulempen med å ha dette i skyen, er at du putter relativt sensitive ting på en maskin i skyen. Vi vurderte det slik at bare vi har tilgang til dette utstyret, sa Ingesen.
Men masse «jern» er ikke nok
– Hvis du ikke klarer å lage gode ordlister, samt regler som tuner disse ordlistene, så vil du praktisk ett aldri knekke en hash, uansett hvor fort du genererer hasher, fortalte Ingesen.
Som eksempler på programvare som kan hjelpe til med dette, trakk han fram verktøyene John the Ripper og Hashcat. Som eksempler på gode ordbøker sett med norske øyne, nevnte han ordlisten til Norsk Scrabbleforbund og lister over stedsnavn fra Kartverket.
Under foredraget fortalte Ingesen litt om egenskapene til Hashcat. Dette inkluderer støtte for flere typer angrep, kombinering av flere ordlister, valg av tegnsett, mulighet for å legge til spesialtegn på slutten av ordene, legge til egne tegn (som æøå) og regler for modifisering av inndataene.
Ingesen viste også til «One Rule to Rule Them All», et regelsett som kombinerer noen av de mest vellykkede reglene fra flere ulike kilder.
Mange å velge mellom
Det finnes en rekke forskjellige hashingfunksjoner, som har hver sine styrker og svakheter. Blant annet er det enkelte som tar relativt lang tid å beregne. Dette spiller liten rolle når bare én hashverdi skal generes, slik som ved opprettelse av en bruker, endring av passord eller passordsjekking ved innlogging. Men i forbindelse med passordhashknekking, hvor det er nødvendig å generere millioner eller milliarder av hashverdier, så fører det til at knekkingen tar mye lengre tid.
Samtidig oppdages det iblant snarveier, noe sikkerhetsforskere stadig ser etter. I noen hashingfunksjoner har det vist seg at det ikke alltid er nødvendig å gå gjennom hele utregningen for å kunne se om en hashverdi er identisk med en annen. På den måten kan man spare mye tid.