Hvis du er en hyppig denizen på internett som meg selv, er det en god sjanse for at du har mottatt en e-post som gjør noe slikt:

Kjære Verdifulle Kunde,

Nylig ble nettstedet vårt utsatt for en cyberattack på vårt bedriftsnettverk. Alle passordene ble kryptert, men som en forholdsregel krever vi alle våre kunder å tilbakestille passordene sine umiddelbart.

Takk skal du ha.

Så det var et brudd, noe av informasjonen din, inkludert ditt krypterte passord, ble lekket. Er din konto i fare?

Kort svar: Ja, men hvorfor?

For å forstå dette må du forstå konseptet "passord hashing."

Hva er en Hash?

En hash er bare en måte å representere data på som en unik tegnstrekk. Du kan hash noe: musikk, filmer, ditt navn, eller denne artikkelen. Metaforisk talt er hashing en måte å tildele et "navn" til dine data. Det lar deg ta et innspill av hvilken som helst lengde og slå den inn i en streng med tegn som alltid har samme lengde. Det er åpenbart at det finnes mange metoder (algoritmer) for å gjøre dette.

Noen av de mest populære hashingalgoritmer:

  • MD5 - Gitt data vil returnere en unik 32 karakter hash.
  • SHA1 - Gitt data vil returnere en unik 40 karakter hash.
  • SHA256 - Gitt data vil returnere en unik 64 karakter hash; designet av National Security Agency.

La oss se på et enkelt eksempel:

Mitt navn er "Jamin Becker"

MD5-hashrepresentasjonen av navnet mitt er:

 eeb7048c69b088739908f5f5144cd1f5 

SHA1-hashrepresentasjonen av mitt navn er:

 ae480b717c08b6ab36a85075864e35b9c528d7c5 

SHA256-hash-representasjonen av navnet mitt er:

 a477cc14eae5fd94fe4cb20b36ec80ac6983bad44973ae7f4f230010f01289b0 

Hvorfor er Hashing Secure?

Årsaken til hashing er sikker er enkel: hashing er en enveisoperasjon. De kan ikke reverseres. Gitt en streng "eeb7048c69b088739908f5f5144cd1f5", det er ingen måte å reversere MD5-hasen for å returnere "Jamin Becker". Dette er på grunn av måten matematikere og programmører strukturerte MD5 hashing-algoritmen på, og det kommer tilbake til et grunnleggende datavitenskapsproblem kalt "P vs NP." P og NP er bare to klasser av algoritmer.

De fleste hashingalgoritmer faller under NP, noe som betyr at de raskt kan beregnes. Imidlertid faller un-hashing-algoritmene (dvs. "eeb7048c69b088739908f5f5144cd1f5" -> "Jamin Becker") under P-klassen og kan kun effektivt løses i polynomisk tid (dvs. bruker en kvantecomputer betydelig mer avansert enn de som er tilgjengelige i dag).

Så hvorfor er dette bra for sikkerhet?

Si at du abonnerer på et nettsted og velg passordet "12345". Umiddelbart vil nettsiden ha hash ditt passord, sannsynligvis med SHA1, og lagre det i en database. Nå hver gang du logger inn, vil nettsiden rehash passordet ditt og sammenligne det med det som er lagret i databasen. Hvis de samsvarer, vil du bli godkjent. Hvis nettsiden brytes, og passorddatabasen er lekket, vil passordet vises som "8cb2237d0679ca88db6464eac60da96345513964" og ikke "12345".

Hash Attack Strategies

Så angriperen har den hakkede versjonen av passordet mitt, og det er ingen måte å reversere det til 12345. Jeg har ingenting å bekymre deg for, ikke sant? FEIL!

En metode som vanligvis brukes til å få vanlig tekstpassord fra en hash, kalles et brute force attack. I dette angrepet vil angriperen løpe gjennom en gigantisk ordliste og hash hvert ord med riktig hashingalgoritme. De kan da sammenligne hashene i ordlisten til de de har fått fra databasen. Hvis en hash fra ordlisten samsvarer med den i databasen, kan de bare finne det tilsvarende enkle tekstpassordet i den opprinnelige ordlisten de har hatt. Erfarne angripere vil bruke ekstremt store ordlister kombinert med kraftig programvare for å løpe gjennom millioner av passordmuligheter et sekund.

En annen metode for angrep forsøker å utnytte hashingalgoritmen selv ved å skape en hashkollisjon. En hashkollisjon oppstår når to forskjellige datamengder løser samme hash, og mens dette er sjeldent, kan det være dødelig. Dette vil tillate angriperen å generere en streng med tegn som ikke er passordet ditt, men fortsatt kan logge på kontoen din, siden det genererer samme hash.

Konklusjon

Hashing-algoritmer blir stadig mer avanserte. Matematikere og datavitenskapere utvikler kontinuerlig kryptografiske hashingalgoritmer med lavere sannsynlighet for kollisjoner. Det er imidlertid viktig å huske at uansett hvor sterk hashingalgoritmen er, kan den alltid bli sprukket ved hjelp av et brute force attack. Den gode nyheten er at du enkelt kan forsvare deg mot disse angrepene ved å bare følge best practices retningslinjer for passord.

  1. Størrelsen er viktig - jo lengre det opprinnelige passordet, desto mindre sannsynlig vil det vises på en ordliste
  2. Ikke vær forutsigbar - unngå å bruke ord som "passord" og "myname123"
  3. Bruk en blanding av spesialtegn, tall, store og små bokstaver

Hva er tankene dine om hashing? Del dine synspunkter i kommentaren nedenfor.

Bildetekst: Forstørrelsesglass Online Fingeravtrykk byBigStockPhot