Computer Forensics.DK Sidste opdatering: 2.juni 2006
hjem | computer forensics | incident response | electronic discovery | programmer | knowledge base | links | rootkits | mig | sitemap | kontakt

                                                        Hash funktioner og computer forensics

MD-5, SHA-1, SHA-256, Whirlpool og Tiger er eksempler på "kryptografiske hash funktioner". Hash funktioner tager input af hvilken som helst størrelse og returnerer et output af fast længde, det er lettest at forestille sig output fra hash funktioner som et unikt matematisk "fingeraftryk" at en bestemt mængde data.

Rent teknisk udfører hash funktionen en række matematiske beregninger på den valgte data mængde og udregner derved en "digest" på en fast størrelse ud fra den valgte data. Det betyder kort sagt, at hvilken som helst mængde data vil resultere i en digest på en fast længde. Et dokument bestående af et enkelt tegn og et dokument på 500 sider, der køres igennem SHA-1 ville begge medføre en digest på 40 tegn (160 bit), f.eks. "86f7e437faa5a7fce15d1ddcb9eaea
ea377667b8". Denne beregning af filens "fingeraftryk" er også kendt som en "one-way hash".

 

Hash funktioner i forensics undersøgelser

For at en hash funktion skal være brugbar til computer forensics er hovedkravet, at det skal være ekstremt svært (dvs umuligt i praksis), at finde to forskellige datamængder der giver den samme hash værdi (også kendt som 'en kollision').
Det vil naturligvis være muligt at finde forskellige tekster, der kan beregnes til samme hashværdi. For SHA-1 algoritmen ville det (oprindeligt) statistisk kræve 280 tilfældige dokumenter for at finde to forskellige der beregnes til den samme hash værdi. Det betyder, at der er betydeligt større sandsynlighed for sammenfald i politiets DNA-analyser, end for at finde to forskellige dokumenter med den samme hash værdi.

Når hash værdien (eller fingeraftrykket) kan betragtes som unik for en vis datamængde medfører det, at en kendt hash værdi for en fil eller datamængde kan benyttes til at vise, at hvilken som helst fil eller datamængde der kan beregnes til den samme hash værdi, alt andet lige, vil være fuldstændig identisk. Når vi f.eks. ved, at et dokument med "a" som tekst har en SHA-1 hash på "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8", så ved vi at hvilken som helst fil med samme hash værdi præcist vil indeholde tegnet "a" og intet andet.
Kendte hash værdier bruges således i computer forensics til f.eks. at identificere ændringer i system filer. Hvis SHA-1 hashen for "net.exe" under Windows XP professional service pack 2 tidligere er beregnet til "4069ba1d5314124d6faa4dc84227f424cc3ce0db" er det let at opdage ændringer til programmet, da enhver ændring af filen medfører en helt ny hash værdi. Beregninger af hash værdier på filer på et system er den typiske måde "usermode rootkits" findes, ligesom f.eks. kendte hackerprogrammer eller kendt pornografi kan identificeres på samme måde. Der findes en række databaser med hash værdier man kan benytte til at undersøge om filer fundet på et system er kendte (se links nedenfor her på siden for eksempler).

Hash funktioner og bevismateriale
Som nævnt er data i digitalt format flygtigt, sårbart og let af forfalske. Hash funktioner bruges derfor altid i computer forensics til at vise, om der er sket ændringer af indsamlet bevismateriale, hvad enten det er sket med vilje eller ved et uheld.

1) Ændringer sket ved et uheld
Da elektronisk data er meget sårbart, kan der let ske ændringer til data under en undersøgelse uden det umiddelbart opdages. Indenfor computer forensics er første skridt derfor normalt altid at beregne hash værdien af alt potentielt bevismateriale. Hvis der efterfølgende i løbet af undersøgelsen opdages, at en hash værdi ikke stemmer med den oprindelige værdi kan man være sikker på, at der er sket en form for ændring i materialet, et eller andet sted. Da man som udgangspunkt *aldrig* laver undersøgelser på det oprindelige bevismateriale kan man tage en ny kopi af det oprindelige bevismateriale, og gentage undersøgelsen på en ren uændret kopi.

2) Ændringer foretaget med vilje
På samme måde som hash værdier kan afsløre ændringer der er opstået ved en fejl, kan hash værdierne bevise at bevismaterialet ikke er blevet ændret med vilje ved f.eks. bevidst at fjerne beviser eller ved at plante falske beviser i løbet af undersøgelsen. Når hash værdien for det endelige bevismateriale matcher hash værdien for det oprindelige materiale beregnet inden undersøgelsen blev foretaget kan undersøgeren vise, at det digitale bevismateriale er uændret og uforfalsket.

Problemer i MD-5 og SHA-1 funktionerne
I slutningen af 2004 og begyndelsen af 2005 blev der fundet en række problemer i bl.a. MD-5 og SHA-1 algoritmerne, de to mest benyttede hash funktioner i computer forensics, efterfølgende er det yderligere demonstreret, at det er muligt at skabe nye filer med en ønsket MD-5 hash værdi. Det betyder, at det f.eks. potentielt kan være muligt at fjerne potentielt bevismateriale fra en fil og derefter tilpasse filen så den matcher den oprindelige hash værdi. Det er dog på nuværende tidspunkt ikke bevist, at dette er muligt. Organisationen DFRWS (Digital Forensic Research Workshop) har startet en interessant "konkurrence" for at vise at det i øjeblikket ikke er muligt at tage en kendt fil, modificere filen på en måde hvor den stadig ser ud som en "normal" fil, og derefter få den til at matche den oprindelige MD-5 eller SHA-1 værdi.
For at forhindre, at der kan rejses tvivl om troværdigheden af ens data på baggrund af problemerne i MD-5 og SHA-1 algoritmerne, bør man aligevel benytte andre metoder eller andre algoritmer til at beregne hash værdier.

Jeg bruger selv en kombination af både MD-5 og SHA-1 sammen med indsamling af filstørrelser, da det i øjeblikket synes usandsynligt at en kollision skulle findes i begge algoritmer samtidigt og hvor den modificerede file yderligere vil være præcis samme størrelse som den oprindelige fil. Hvis man foretrækker en enkelt hash bør man benytte f.eks. SHA-256, SHA-512 eller Whirlpool, selv om beregningen af hash værdier derved kan tage betydeligt længere tid. NIST, der svarer lidt til Dansk Standard, godkender brugen af SHA-224, SHA-256, SHA-384 og SHA-512.

Links:
http://www.doxpara.com
http://theory.csail.mit.edu/~yiqun/shanote.pdf
http://www.schneier.com/blog/archives/2005/02/sha1_broken.html
http://www.financialcryptography.com/mt/archives/000355.html
http://planeta.terra.com.br/informatica/paulobarreto/hflounge.html
http://unixwiz.net/techtips/iguide-crypto-hashes.html
http://www.cits.rub.de/MD5Collisions
http://www.schneier.com/blog/archives/2005/03/more_hash_funct.html
http://eprint.iacr.org/2004/199.pdf
http://www.corest.com/corelabs/projects/research_topics.php
http://www.nsrl.nist.gov/collision.html
http://crossrealm.com/2hash
http://md5deep.sourceforge.net (indeholder også sha1deep, sha256deep og whirlpooldeep)
http://support.microsoft.com/default.aspx?scid=kb;en-us;841290
http://www.dmares.com/maresware/ps.htm#SHA_VERIFY

Solaris fingerprint database
NIST NSRL SW Fingerprint Database
RPM rpm -V -a kan bruges på Linux systemer til at identificere programmer der adskiller sig fra information i den lokale database.

 
Copyright © 2004-2008 Computerforensics.DK