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/09/27 08:16] – linkovi katarinahmac [2025/12/01 11:40] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====HMAC==== ====HMAC====
-**HMAC (Hash-based Message Authentication Code)** je posebni tip [[[mac|MAC-a]]  temeljen na [[hash|kriptografskoj hash funkciji]] (npr[[sha2|SHA-2]] ili [[sha3|SHA-3]])  i tajnom kriptografskom ključuKao i kod „običnog“ MAC-aradi se o dodatku poruci koji služi za provjeru autentičnosti integriteta poruke, odnosno za potvrdu identiteta pošiljatelja i neizmjenjenosti zaprimljene poruke.+**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 porukuveć se služi kao provjera da poruka nije mijenjana da je pošiljatelj legitiman.
  
-HMAC ne enkriptira poruku, nego se poruka šalje uz HMAC sažetakKorisnici koji posjeduju tajni ključ mogu ponovno hashirati poruku tako potvrditi autentičnost poruke.+Klijent i poslužitelj dobiju svoj jedinstveni tajni ključ za komunikaciju. Kad šalje zahtjev, klijent prvo izračuna MAC poruke s pomoću tajnog ključa i nakon toga svoju poruku i MAC zajedno ubacuje u funkciju sažetkaTaj 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 onaj iz zahtjeva te, ako su isti, nastavlja dalje s procesiranjem zahtjeva. Ako nisu isti, zna da je zahtjev neispravan i odbacuje ga.
  
-Da bi sigurnost HMAC-a bila maksimiziranabitno je koristiti jakeodnosno dovoljno duge unikatnetajne ključeve sigurne hash funkcijeIspravno korišten HMAC otporan je na napade riječnikom (dictionary attacks) te idealan za zaštitu osobnih podataka.+ 
 +Prije ubacivanja u hash funkcijutreba izračunati MAC koji je uvijek fiksne veličine (//S// bitova). Veličinu bloka teksta poruke označavat ćemo s //b//. Takođerpostoje dva predefinirana niza bitova koji se koriste u daljnjem objašnjenju, //ipad// //opad//koji su definirani tajnim ključem. Poruku ćemo označavati s //P//, a //i//-ti blok poruke s //Pi//. 
 + 
 +  - S //lijeve// strane tajnog ključa //K// dodajemo nule dok mu veličina ne naraste do //b//. Taj nadopunjeni ključ označavat ćemo s //K+//. 
 +  - //K+// xor-amo s //ipad// i dobivamo blok //S1// koji je također veličine //b//. 
 +  - Dodajemo //S1// s lijeve strane poruke //P//. 
 +  - Nad rezultatom koraka **3** primijenimo funkciju sažetka; istovremeno primijenimo i inicijalizacijski vektor da bismo osigurali fiksnu veličinu sažetka //n//. 
 +  - //K+// xor-amo s nizom bitova //opad// da bismo dobili blok //S2//. 
 +  - //S2// dodajemo na kraj sažetka koraka **4**. 
 +  - Sve to zajedno ubacimo još jednom u funkciju sažetka. 
 + 
 +Cijeli postupak prikazan je na sljedećoj slici:  
 + 
 +{{ :hmac-postupak.png?400 |}} 
 + 
 + 
 +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čunajuDakle, 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. 
 + 
 + 
 +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=== 
 +[1] Christof Paar, Jan Pelzl, Understanding Cryptography, Springer-Verlag Berlin Heidelberg, 2009.\\ 
 +[2] Henk C. A. Tilborg, Encyclopedia of Cryptography and Security, Springer-Verlag US, 2005. \\ 
 +[3] https://www.geeksforgeeks.org/what-is-hmachash-based-message-authentication-code/\\ 
 +[4] https://book.hacktricks.xyz/crypto-and-stego/hash-length-extension-attack\\ 
 +[5] https://deeprnd.medium.com/length-extension-attack-bff5b1ad2f70\\
  
hmac.1695802604.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki