Passordhashing er en grunnleggende del av sikring av passord, som transformerer passordlagringslandskapet fra klartekst til krypterte hasher. Denne artikkelen utforsker utviklingen av passordhashing, fra tidlige algoritmer som MD5 og SHA-1 til de mer sikre metodene som anbefales i dag, og konkluderer med viktigheten av å bruke tilfeldige passord for hver nettside.
Før vi dykker dypere inn i historien og utviklingen av passordhashing, er det viktig å forstå hva hashing er. Hash-funksjoner, metodene som gjør hasjingen, er designet for å ta en hvilken som helst streng av data, eller "input", og produsere en streng av faste størrelsesbyte, vanligvis kjent som en "hash". Denne prosessen har flere nøkkelfunksjoner som gjør den spesielt nyttig for sikkerhetsformål.
En viktig egenskap ved hash-funksjoner er deres følsomhet for endringer i input. Dette er kjent som avalanche-effekten. Selv en liten endring i input – som å endre en enkelt karakter i et passord – vil produsere en helt annen hash. For eksempel, hashene for strengene "passord1" og "passord2" vil se helt forskjellige ut, selv om den eneste forskjellen mellom de to inputene er den siste karakteren. Denne egenskapen er avgjørende for å opprettholde dataintegritet, da den gjør det nesten umulig å utlede den opprinnelige inputen fra hash alene.
Videre er hash-funksjoner enveiskjørt. Dette betyr at de er designet for å være beregningsmessig umulig å reversere. Output (hashen) beholder ingen spesifikke detaljer om inputen som vil tillate noen å rekonstruere de opprinnelige dataene uten ekstraordinær datakraft. Den eneste mulige måten å "reversere" en hash er gjennom en metode kalt brute-forcing, der hver mulig kombinasjon av de opprinnelige dataene hashes igjen til en matchende hash er funnet.
I de tidlige dagene av digital sikkerhet, ble MD5 (Message-Digest Algorithm 5) og SHA-1 (Secure Hash Algorithm 1) mye brukt for passordhashing. Disse algoritmene, utviklet på begynnelsen av 90-tallet, konverterte klartekst passord til hashverdier av faste størrelser. Til tross for deres innledende sikkerhet, gjorde sårbarheter som følsomhet for kollisjonsangrep dem snart utdatert for sikre applikasjoner.
Mens hash-funksjoner er designet for å være raske og effektive, kan denne funksjonen være skadelig når det gjelder passordsikkerhet fordi det gjør brute-force angrep enklere. Passordbaserte nøkkelderivasjonsfunksjoner (PBKDFs), som PBKDF2, bcrypt og scrypt, er designet for å motvirke disse angrepene ved å inkorporere en salt (for å forsvare mot "rainbow table" angrep) og bruke en teknikk kjent som nøkkelstrekking. Nøkkelstrekking sakter bevisst ned hash-prosessen, noe som kan sterkt avskrekke forsøk på uautorisert tilgang.
Etter hvert som cybersikkerhet avanserte, ble utilstrekkeligheten til tidlige hashing-algoritmer som MD5 og SHA-1 åpenbar, noe som førte til utviklingen av algoritmer som er spesifikt designet for passordsikkerhet, som bcrypt, scrypt og Argon2 eller såkalte passordbaserte nøkkelderivasjonsfunksjoner (PBKDFs).
Ifølge OWASP (Open Web Application Security Project) er de anbefalte algoritmene for passordhashing bcrypt, scrypt og Argon2. Disse foretrekkes for deres robuste forsvar mot brute-force angrep og deres innebygde mekanismer for salt og nøkkelstrekking.
bcrypt er en passordhashing-funksjon avledet fra Blowfish-krypteringsalgoritmen. Den inkorporerer en salt for å beskytte mot "rainbow table" angrep og bruker en kostnadsparameter for å øke beregningstiden (og dermed vanskeligheten) ved å generere hashen. Denne kostnadsfaktoren er justerbar, slik at algoritmen kan skaleres med maskinvareforbedringer.
Nøkkelparametere:
OWASP anbefaler å bruke en arbeidsfaktor på 10 eller mer med en passordgrense på 72 byte.
scrypt er designet for å være både minne- og tidsintensiv for å motstå storstilt angrep med spesialtilpasset maskinvare. Den kan konfigureres til å kreve en bestemt mengde minne, og inkluderer også en salt og et antall iterasjoner, likt PBKDF2.
Nøkkelparametere:
OWASP anbefaler å bruke en minste CPU/minne-kostnadsparameter på (2^17), en minste blokkstørrelse på 8 (1024 byte), og en paralleliseringsparameter på 1.
Argon2, vinneren av Password Hashing Competition i 2015, kommer i to varianter: Argon2d og Argon2i. Argon2d er optimalisert for miljøer hvor trusselen fra sidekanalsangrep er lav, mens Argon2i er optimalisert for å motstå sidekanalsangrep. Den inkorporerer også nøkkelfunksjoner fra både bcrypt og scrypt.
Nøkkelparametere:
OWASP anbefaler å bruke Argon2id med en minimumskonfigurasjon av 19 MiB minne, et iterasjonstall på 2, og 1 grad av parallelisme.
Gitt den stadig utviklende naturen til sikkerhetstrusler og mottiltak, er det avgjørende å holde seg oppdatert med de siste praksisene innen passordsikkerhet. For de mest oppdaterte og omfattende anbefalingene, vennligst se OWASP Password Storage Cheat Sheet på den offisielle OWASP-siden. Sørg for å gjennomgå disse retningslinjene regelmessig for å tilpasse deg de beste praksisene innen cybersikkerhet.
Selv om bruk av moderne hashing-algoritmer er avgjørende, spiller også måten passord opprettes og forvaltes på en kritisk rolle i å opprettholde sikkerhet. Tilfeldige passord for hver nettside er essensielle på grunn av flere faktorer:
Fra MD5 og SHA-1 til moderne algoritmer som bcrypt og Argon2, har passordhashing gjennomgått betydelige endringer. Etter hvert som cybertrusler fortsetter å utvikle seg, er det avgjørende å ta i bruk moderne hashing-algoritmer og sørge for bruk av tilfeldige, unike passord for hver nettside som essensielle praksiser for å sikre nettbasert sikkerhet. Disse strategiene ikke bare forhindrer kompromittering av individuelle kontoer, men styrker også den generelle sikkerhets- holdningen mot stadig mer sofistikerte angrep.