hmac
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| hmac [2023/12/04 10:39] – zrinka | hmac [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 |
| - | 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, | + | |
| 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, | [1] Christof Paar, Jan Pelzl, Understanding Cryptography, | ||
| Line 33: | Line 31: | ||
| [3] https:// | [3] https:// | ||
| [4] https:// | [4] https:// | ||
| + | [5] https:// | ||
hmac.1701686389.txt.gz · Last modified: 2025/12/01 11:40 (external edit)