Hashiranje datoteka — provjera integriteta

Kada preuzimeš datoteku s interneta, hash vrijednost dokazuje da datoteka nije promijenjena (ni slučajno, ni namjerno). Uspoređuješ hash koji je objavio autor s hashem koji sam izračunaš.

Naredbe za hashiranje na Linuxu

  • md5sum datoteka.iso — MD5 hash (128 bita)
  • sha1sum datoteka.iso — SHA-1 hash (160 bita)
  • sha256sum datoteka.iso — SHA-256 hash (256 bita)
  • sha512sum datoteka.iso — SHA-512 hash (512 bita)
  • md5sum datoteka >> provjera.txt — spremi u datoteku

Proces provjere integriteta

  1. Pronađi hash koji je objavio autor na web stranici
  2. Izračunaj hash preuzete datoteke lokalnom naredbom
  3. Usporedi oba hasha — moraju biti identični
  4. Ako se razlikuju — datoteka je oštećena ili izmjenjena
MD5 je deprecated: MD5 se više ne preporuča za provjeru integriteta jer je sklon kolizijama — dva različita ulaza mogu dati isti hash. Koristi SHA-256 ili SHA-512 gdje god je to moguće.

Algoritmi i duljine hasheva

Duljina hash vrijednosti (broj hex znakova) otkriva koji je algoritam korišten:

AlgoritamBitovaHex znakova
MD512832
SHA-116040
SHA-22422456
SHA-25625664
SHA-38438496
SHA-512512128

Formula: broj hex znakova × 4 = broj bita (jer 1 hex = 4 bita)

MetaDefender — pretraga hashem

Umjesto da uploaš sumnjivi file (čime ga javno objavljuješ), možeš potražiti samo hash vrijednost na metadefender.com. Ako je file već skeniran — dobit ćeš rezultate skeniranja.

Primjer iz laba

  • Sumnjivi file: nc.exe (netcat za Windows)
  • SHA-1: 57F0839433234285CC9DF96198A6CA58248A4707
  • Pretraga na MetaDefender → file identificiran kao netcat
  • Neki, ali ne svi AV engine-i flagaju file

Zašto hash umjesto filea?

  • ✅ Ne otkriva sadržaj sumnjivog filea javnosti
  • ✅ Brže — pretraga u bazi već skeniranih hasheva
  • ⚠️ Radi samo za poznate fileove (ne za nove/nepoznate malware)
  • ⚠️ Djelomična detekcija ne znači automatski da je file zlonamjeran — može biti PUP (Potentially Unwanted Program)

Salting — /etc/shadow

Linux automatski soli lozinke. U /etc/shadow datoteci, format pohranjene lozinke je:

$algoritam$parametri$SALT$HASH_VRIJEDNOST
  • $y$ — yescrypt algoritam (najčešći u modernom Linuxu)
  • Vrijednost između 3. i 4. $ znaka je salt
  • Vrijednost nakon 4. $ do dvotočke je salted hash lozinke

Naredba za prikaz: grep '$' /etc/shadow

John the Ripper — utjecaj salta

Generiranje hasheva (openssl)

  • openssl passwd -salt "" pass1 — MD5 hash BEZ salta
  • openssl passwd -salt SALT pass1 — MD5 hash SA saltom "SALT"
  • Bez salta: između 2. i 3. $ znaka nema vrijednosti
  • Sa saltom: između 2. i 3. $ znaka stoji "SALT"

John the Ripper — rezultati

  • john --incremental hash.txt — brute force bez salta → cracka za <10 sekundi
  • john --incremental salted-hash.txt — salt poznat JtR-u → <10 sekundi (salt u datoteci)
  • john --incremental salt-secret-hash.txt — salt uklonjen → ~25.8 godina!
  • Formula: 10s × 95⁴ (4 znaka salta, 95 ASCII znakova) = 814.506.250 sekundi

Kviz — 12 pitanja

0 / 12
Odgovori na pitanja da vidiš rezultat.

1. Preuzeo/la si ISO datoteku od 4 GB. Na web stranici distributer navodi MD5 hash. Koji je svrha usporedbe tog hasha s tvojim izračunom?

Hash se koristi za provjeru integriteta datoteke — dokazuje da je preuzeti file identičan originalu. Ne garantira odsustvo zlonamjernog koda ni identitet autora.

2. Koliko hex znakova ima SHA-256 hash?

SHA-256 ima 256 bita izlaza. 256 ÷ 4 = 64 hex znaka (jer svaki hex znak predstavlja 4 bita). MD5=32, SHA-1=40, SHA-512=128.

3. Zašto se MD5 smatra deprecated kao algoritam za provjeru integriteta?

MD5 nije "razbijen" u klasičnom smislu, ali mu je poznata veća sklonost kolizijama nego modernijim algoritmima. Kolizija znači da dva različita ulaza daju isti hash — što ugrožava integritet.

4. Pronašao/la si sumnjivi file nc.exe na klijentskom računalu. Zašto bi koristio/la MetaDefender s hash vrijednošću umjesto da uploaš file?

Hash pretraga ne šalje file vanjskoj usluzi — šalje samo hash, koji sam po sebi ne otkriva sadržaj. Bitno je za osjetljive okoline gdje file ne smije izaći iz kontroliranog okruženja.

5. MetaDefender analiza nc.exe pokazuje da 8 od 40 AV engine-a flagaju file kao prijetnju. Što to znači?

Netcat (nc.exe) je legitimni mrežni alat, ali ga mnogi AV-i flagaju kao PUP ili hakerski alat. Djelomična detekcija ne dokazuje zlonamjernost — kontekst je ključan za odluku.

6. Koji od sljedećih formata odgovara modernoj Linux lozinci iz /etc/shadow (yescrypt)?

Linux /etc/shadow koristi format: $algoritam$parametri$salt$hash. Za yescrypt je $y$. Vrijednost između 3. i 4. $ je salt, a ostatak do dvotočke je hash lozinke.

7. Koja naredba kreira MD5 hash lozinke "pass1" BEZ salta i sprema ga u datoteku?

openssl passwd generira password hasheve. -salt "" znači prazan salt (bez salta). Rezultat je MD5 hash (zadani algoritam). Za salted verziju: openssl passwd -salt SALT pass1.

8. John the Ripper crackao je unsalted MD5 hash lozinke "pass1" za manje od 10 sekundi. Isti hash sa 4-znamkastim saltom (bez otkrivanja salta) crackao bi se za ~25.8 godina. Zašto?

Salt se dodaje lozinci PRIJE hashiranja. Bez salta treba isprobati samo kombinacije za 5 znakova. Sa 4-znakovnim saltom (95 mogućih ASCII znakova po znaku), prostor je 95⁴ × veći = 10s × 81.450.625 = ~25.8 godina.

9. Koji John the Ripper parametar se koristi za brute force napad (testiranje svih kombinacija)?

John the Ripper naziva brute force napad "incremental" mode. --wordlist je rječnički napad (dictionary attack). --format specificira format hasha (npr. NT za NTLM).

10. Naredbom cat hash.txt vidiš hash koji počinje s $1$$. Koji algoritam je korišten?

U /etc/shadow formatu, $1$ označava MD5 algoritam. $y$ = yescrypt, $5$ = SHA-256, $6$ = SHA-512. openssl passwd bez parametara koristi MD5 ($1$) po defaultu.

11. Koji od ovih prikaza dokazuje da hash IMA salt primijenjen?

U openssl/Linux formatu, salt je vidljiv između 2. i 3. $ znaka. Prazan prostor ($$) znači nema salta. Salt nije skriven — njegova snaga dolazi od toga što napadač ne zna koji točno salt je korišten za određenu lozinku.

12. Gledaš hash vrijednost od 40 hex znakova. Koji algoritam je najvjerojatnije korišten?

SHA-1 producira 160-bitni hash → 160÷4 = 40 hex znakova. MD5 = 32, SHA-256 = 64, SHA-512 = 128. Broji znakove, množiš s 4 = broj bita.
0 / 12
Riješi kviz da vidiš rezultat.