Hashing af adgangskoder er en grundlæggende del af sikringen af adgangskoder, der omdanner landskabet for opbevaring af adgangskoder fra almindelig tekst til krypterede hashes. Denne artikel udforsker udviklingen af hashing af adgangskoder, fra tidlige algoritmer som MD5 og SHA-1 til de mere sikre metoder, der anbefales i dag, og afslutter med vigtigheden af at bruge tilfældige adgangskoder til hver hjemmeside.
Før vi dykker dybere ned i historien og udviklingen af hashing af adgangskoder, er det vigtigt at forstå, hvad hashing er. Hash-funktioner, de metoder der udfører hashingen, er designet til at tage enhver streng af data, eller "input", og producere en streng af fastsstørrelse, typisk kendt som en "hash." Denne proces har flere nøgleegenskaber, der gør den særligt nyttig til sikkerhedsformål.
En vigtig egenskab ved hash-funktioner er deres følsomhed over for inputændringer. Dette er kendt som avalanche-effekten. Selv en lille ændring i input – såsom at ændre et enkelt tegn i en adgangskode – vil producere en helt anden hash. For eksempel vil hashes for strengene "password1" og "password2" se helt forskellige ud, selvom den eneste forskel mellem de to input er det sidste tegn. Denne egenskab er afgørende for at opretholde dataintegritet, da det gør det næsten umuligt at udlede den oprindelige input fra hashen alene.
Desuden er hash-funktioner envejsfunktioner. Dette betyder, at de er designet til at være beregningsmæssigt umulige at vende. Outputtet (hashen) bevarer ikke specifikke detaljer om input, der ville gøre det muligt for nogen at genskabe de oprindelige data uden ekstraordinær beregningsmæssig indsats. Den eneste mulige måde at "vende" en hash på er gennem en metode kaldet brute-forcing, hvor alle mulige kombinationer af de oprindelige data hashes igen, indtil en matchende hash findes.
I de tidlige dage af digital sikkerhed blev MD5 (Message-Digest Algorithm 5) og SHA-1 (Secure Hash Algorithm 1) bredt anvendt til hashing af adgangskoder. Udviklet i de tidlige 90'ere konverterede disse algoritmer klare tekstadgangskoder til faststørrelse hashværdier. På trods af deres oprindelige sikkerhed viste sårbarheder, såsom modtagelighed for kollisionsangreb, sig hurtigt at være forældede for sikre applikationer.
Mens hash-funktioner er designet til at være hurtige og effektive, kan denne egenskab være skadelig, når det kommer til adgangskodesikkerhed, fordi det gør brute-force angreb lettere. Passwordbaserede nøgleudledningsfunktioner (PBKDFs), såsom PBKDF2, bcrypt og scrypt, er designet til at modvirke disse angreb ved at inkorporere et salt (for at forsvare mod rainbow table angreb) og anvende en teknik kendt som nøgle strækning. Nøgle strækning forsinker intentionelt hashingprocessen, hvilket kan gøre betydelige forsøg på uautoriseret adgang.
Efterhånden som cybersikkerhed udviklede sig, blev utilstrækkelighederne ved tidlige hashingalgoritmer som MD5 og SHA-1 tydelige, hvilket førte til udviklingen af algoritmer specifikt designet til adgangskodesikkerhed, såsom bcrypt, scrypt og Argon2 eller såkaldte passwordbaserede nøgleudledningsfunktioner (PBKDFs).
Ifølge OWASP er de anbefalede algoritmer til hashing af adgangskoder bcrypt, scrypt og Argon2. Disse foretrækkes for deres robuste forsvar mod brute-force angreb og deres indbyggede mekanismer til salt og nøgle strækning.
bcrypt er en funktion til hashing af adgangskoder afledt af Blowfish cipher. Den inkorporerer et salt for at beskytte mod rainbow table angreb og bruger en kostparameter for at øge beregningstiden (og dermed vanskeligheden) ved at generere hash. Denne kostfaktor er justerbar, hvilket gør det muligt for algoritmen at skalere med hardwareforbedringer.
Nøgleparametre:
OWASP anbefaler at bruge en arbejdsfaktor på 10 eller mere med en adgangskodegrænse på 72 bytes.
scrypt er designet til at være både hukommelses- og tidsintensiv for at modstå storskala special hardwareangreb. Den kan konfigureres til at kræve en specifik mængde hukommelse, og den inkluderer også et salt og et iterationsantal, ligesom PBKDF2.
Nøgleparametre:
OWASP anbefaler at bruge en minimum CPU/hukommelsesomkostningsparameter på (2^17), en minimum blokstørrelse på 8 (1024 bytes), og en paralleliseringsparameter på 1.
Argon2, vinderen af Password Hashing Competition i 2015, kommer i to varianter: Argon2d og Argon2i. Argon2d er optimeret til miljøer, hvor truslen fra sidekanalangreb er lav, mens Argon2i er optimeret til at modstå sidekanalangreb. Den inkorporerer også nøglefunktioner fra både bcrypt og scrypt.
Nøgleparametre:
OWASP anbefaler at bruge Argon2id med en minimumskonfiguration på 19 MiB hukommelse, et iterationsantal på 2 og 1 grads parallelisme.
Givet den udviklende natur af sikkerhedstrusler og modforanstaltninger er det vigtigt at holde sig opdateret med de nyeste praksisser inden for adgangskodesikkerhed. For de mest aktuelle og omfattende anbefalinger henvises til OWASP Password Storage Cheat Sheet på OWASP's officielle side. Sørg for at gennemgå disse retningslinjer regelmæssigt for at være på linje med de bedste praksisser inden for cybersikkerhed.
Mens anvendelse af moderne hashingalgoritmer er afgørende, spiller den måde, hvorpå adgangskoder oprettes og administreres, også en kritisk rolle i at opretholde sikkerheden. Tilfældige adgangskoder til hver hjemmeside er vigtige på grund af flere faktorer:
Fra MD5 og SHA-1 til moderne algoritmer som bcrypt og Argon2 har hashing af adgangskoder gennemgået betydelige transformationer. Efterhånden som cybertrusler fortsætter med at udvikle sig, er anvendelsen af moderne hashingalgoritmer og sikringen af brugen af tilfældige, unikke adgangskoder til hver hjemmeside afgørende praksis for at beskytte online sikkerhed. Disse strategier forhindrer ikke kun kompromittering af individuelle konti, men styrker også den samlede sikkerhedsholdning mod stadig mere sofistikerede angreb.