User Tools

Site Tools


hmac

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
hmac [2023/12/04 10:39] zrinkahmac [2025/12/01 11:40] (current) – external edit 127.0.0.1
Line 2: Line 2:
 **HMAC (Hash-based Message Authentication Code)** je posebni tip [[[mac|MAC-a]]. On dodaje još jedan korak prije slanja poruke s MAC-om, a to je da poruku i MAC zajedno ubaci u [[hash|funkciju sažetka]]. Također ne kriptira poruku, već se služi kao provjera da poruka nije mijenjana i da je pošiljatelj legitiman. **HMAC (Hash-based Message Authentication Code)** je posebni tip [[[mac|MAC-a]]. On dodaje još jedan korak prije slanja poruke s MAC-om, a to je da poruku i MAC zajedno ubaci u [[hash|funkciju sažetka]]. Također ne kriptira poruku, već se služi kao provjera da poruka nije mijenjana i da je pošiljatelj legitiman.
  
-**TODO: dodati opis kako se to izračunava HMAC malo detaljnije**\\ +Klijent i poslužitelj dobiju svoj jedinstveni tajni ključ za komunikaciju. Kad šalje zahtjev, klijent prvo izračuna MAC poruke pomoću tajnog ključa i nakon toga svoju poruku i MAC zajedno ubacuje u funkciju sažetka. Taj rezultat šalje unutar zahtjeva. Poslužitelj primi njegov zahtjev te ubacuje podatke iz zahtjeva i tajni ključ u istu funkciju sažetka da bi generirao svoj HMAC. Zatim usporedi svoj HMAC i onaj iz zahtjeva te, ako su isti, nastavlja dalje s procesiranjem zahtjeva. Ako nisu isti, zna da je zahtjev neispravan i odbacuje ga.
-Klijent i poslužitelj dobiju svoj jedinstveni tajni ključ za komunikaciju. Kad šalje zahtjev, klijent prvo izračuna MAC poruke pomoću tajnog ključa i nakon toga svoju poruku i MAC zajedno ubacuje u funkciju sažetka. Taj rezultat šalje unutar zahtjeva. Poslužitelj primi njegov zahtjev te ubacuje podatke iz zahtjeva i tajni ključ u istu funkciju sažetka da bi generirao svoj HMAC. Zatim usporedi svoj HMAC i onaj iz zahtjeva te, ako su isti, nastavlja dalje s procesiranje, zahtjeva. Ako nisu isti, zna da je zahtjev neispravan i odbacuje ga.+
  
  
Line 23: Line 22:
 HMAC danas koriste mnogi komunikacijski protokoli kao što su HTTPS, SFTP i FTPS. Koristi se i na poveznicama za resetiranje lozinke, verifikaciji email adresa pri stvaranju korisničkog računa i slično. Njegova je prednost što se koristi hash funkcijama koje se brzo računaju. Dakle, može se vrlo brzo s popriličnom sigurnošću provjeriti legitimitet korisničkog zahtjeva. Zato je idealan za internetsku komunikaciju jer ju ne usporava i time ne narušava korisničko iskustvo. Druga prednost je što, isto kao i MAC, funkcija vraća rezultat fiksne duljine. Korisnik može poslati iznimno dugačak zahtjev, ali HMAC ostaje iste veličine pa neće zauzimati puno resursa, što opet doprinosi brzini odgovora. HMAC danas koriste mnogi komunikacijski protokoli kao što su HTTPS, SFTP i FTPS. Koristi se i na poveznicama za resetiranje lozinke, verifikaciji email adresa pri stvaranju korisničkog računa i slično. Njegova je prednost što se koristi hash funkcijama koje se brzo računaju. Dakle, može se vrlo brzo s popriličnom sigurnošću provjeriti legitimitet korisničkog zahtjeva. Zato je idealan za internetsku komunikaciju jer ju ne usporava i time ne narušava korisničko iskustvo. Druga prednost je što, isto kao i MAC, funkcija vraća rezultat fiksne duljine. Korisnik može poslati iznimno dugačak zahtjev, ali HMAC ostaje iste veličine pa neće zauzimati puno resursa, što opet doprinosi brzini odgovora.
  
-**TODO: dodati kako je za razliku od MAC-a otporan na length-extension napade, čak ako se koriste hash funkcije koje koriste Merkel-Damgard konstrukciju**\\ 
- 
-//Length extension napad// ... Ako napadač zna duljinu tajnog ključa, poruku koja se prenosi i algoritam za sažimanje poruke, može provesti napad. Algoritam mora ujedno i biti ranjiv na ovu vrstu napada. Također, nije nužno da zna unaprijed duljinu tajnog ključa jer ju potencijalno može pogoditi grubom silom (//brute force//). Mora i znati koji se //padding// koristi, iako nekad može pretpostaviti da se korisiti zadani (3). U tom slučaju može dodati nove podatke i generirati novi sažetak za njih pa će poruka djelovati legitimno. \\ 
-Ranjivi algoritmi rade sažetak tako što prvi sažmu jedan blok podataka, zatim na taj sažetak dodaju novi blok podataka pa opet sve skupa sažmu i tako dok se ne dođe do kraja poruke. Dakle, to što napadač dodaje još neke informacije u poruku može djelovati samo kao još jedan korak u legitimnoj poruci. 
  
 +Dodatna prednost HMAC-a je otpornost na [[length-extension-attack|length extension]] napade. 
 +Neki algoritam hashiranja ranjiv je na njih uglavnom zato što funkcija sažetka koristi Merkle-Damgård konstrukciju. Naime, pri korištenju te konstrukcije podatak se dijeli u blokove i tako hashira. Zato je moguće iz hasha rekonstruirati interno stanje hash funkcije. Ako se nakon toga doda neki novi sadržaj, on se interpretira kao sljedeći blok poruke i neće se primijetiti da je poruka kompromitirana. \\
 +Ipak, HMAC neće biti ranjiv čak ni ako njegova funkcija sažetka koristi Merkle-Damgård konstrukciju. Razlog tomu je što on pri generiranju MAC-a ubacuje poruku i tajni ključ u hash funkciju, za razliku od MAC-a koji ubacuje samo poruku. Napadač u ovom slučaju ne može izolirati tajni ključ od poruke, odnosno ne može odrediti gdje je poruka, a gdje ključ. Dakle, ne može generirati MAC koji će primatelj interpretirati kao ispravan. Ako pokuša dodati neki novi sadržaj i pošalje zahtjev, primatelj će izračunati drugačiji sažetak poruke od onog koji je primio i shvatiti da poruka nije valjana. 
 ===Izvori=== ===Izvori===
 [1] Christof Paar, Jan Pelzl, Understanding Cryptography, Springer-Verlag Berlin Heidelberg, 2009.\\ [1] Christof Paar, Jan Pelzl, Understanding Cryptography, Springer-Verlag Berlin Heidelberg, 2009.\\
Line 33: Line 31:
 [3] https://www.geeksforgeeks.org/what-is-hmachash-based-message-authentication-code/\\ [3] https://www.geeksforgeeks.org/what-is-hmachash-based-message-authentication-code/\\
 [4] https://book.hacktricks.xyz/crypto-and-stego/hash-length-extension-attack\\ [4] https://book.hacktricks.xyz/crypto-and-stego/hash-length-extension-attack\\
 +[5] https://deeprnd.medium.com/length-extension-attack-bff5b1ad2f70\\
  
hmac.1701686389.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki