Sådan fungerer MD5-hashning
MD5 er en hashfunktion, der omdanner en besked eller en fil til en værdi med fast længde. Resultatet kaldes en hash eller et digest og skrives typisk som 32 hexadecimale tegn. Hashen er ikke en krypteret udgave af indholdet: MD5 giver ikke en praktisk metode til at genskabe den oprindelige besked. Funktionen er deterministisk, så samme input giver samme resultat, mens en lille ændring i inputtet normalt giver en helt anden hash.
Hvad MD5 bruges til
MD5 blev udviklet til at skabe korte kontrolværdier ud fra data. Hashværdier kan gøre det lettere at sammenligne indhold, fordi to beregnede værdier kan sammenholdes i stedet for at gennemgå lange tekststrenge eller filer. Metoden ses stadig i ældre arbejdsgange, i nogle filformater og som en enkel kontrol af, om data tilsyneladende er uændret.
MD5 er ikke længere egnet, når sikkerhed afhænger af, at forskellige input ikke kan give samme hash. Der findes kendte kollisioner, hvor to forskellige beskeder har samme MD5-værdi. Derfor bør MD5 ikke bruges til digitale signaturer, sikker kontrol af filers ægthed eller lagring af adgangskoder. Til adgangskoder er en langsom, særskilt adgangskodefunktion med individuel saltning mere passende; almindelig MD5-hashning beskytter utilstrækkeligt mod gæt.
Sådan beregnes en MD5-hash i hovedtræk
- Fastlæg inputtet. Afgør præcist, hvilke bytes der skal behandles. For tekst afhænger inputtet blandt andet af tegnkodningen. Mellemrum, linjeskift og tegn, der ser ens ud, kan have forskellige byteværdier.
- Tilføj udfyldning. MD5 føjer en markørbit og derefter nulbit til beskeden, indtil længden passer til et bestemt trin i blokkens opdeling. Til sidst føjes den oprindelige beskedlængde til efter algoritmens regler.
- Del dataene i blokke. Den udfyldte besked opdeles i blokke på 512 bit. Hver blok behandles i flere runder med faste konstanter, bitvise operationer og rotationer.
- Opdatér tilstanden. Algoritmen bruger fire 32-bit tilstandsværdier. Efter hver blok kombineres rundernes resultat med den eksisterende tilstand, så næste blok fortsætter fra den opdaterede værdi.
- Skriv resultatet. De fire tilstandsværdier samles til en 128-bit værdi, som ofte vises med 32 hexadecimale tegn. Denne tekstform er en repræsentation af hashværdien, ikke en beskrivelse af inputtet.
Praktisk kontrol og begrænsninger
Ved en enkel sammenligning skal samme fil eller tekst behandles med samme metode på begge sider. Hvis hashværdierne er ens, er det en nyttig indikation af, at indholdet stemmer overens, men MD5 giver ikke stærk sikkerhed mod bevidst manipulation. Hvis værdierne er forskellige, er inputtene ikke identiske efter den anvendte behandling. Ved sikkerhedskritisk kontrol bør en moderne, kollisionsresistent hashfunktion vælges i stedet.
Et vigtigt forbehold er, at en hash ikke i sig selv beviser, hvem der har lavet en fil. Hvis en angriber kan ændre både filen og den værdi, den sammenlignes med, hjælper en simpel hashkontrol ikke. En troværdig kontrol kræver derfor også en sikker måde at få kontrolværdien på, eksempelvis gennem en autentificeret kanal eller en digital signatur baseret på egnede algoritmer.