|
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. |