====MAC==== **MAC (Message Authentication Code)** je kratak dodatak poruci koji služi za potvrdu identiteta pošiljatelja i da zaprimljena poruka nije izmijenjena. Pošiljatelj i primatelj unaprijed dogovore algoritam kojim će generirati MAC za svoje poruke i tajni ključ koji će samo njih dvoje koristiti. Slično funkciji sažetka, MAC vraća rezultat fiksne duljine neovisno s o duljini poruke. Pošiljatelj pri slanju poruke generira MAC i šalje ga uz poruku. Primatelj izračuna MAC koji očekuje koristeći tajni ključ i usporedi ga s dobivenim. Ako su isti, znači da je poruka legitimna. Ako nisu, primatelj ne može znati je li sama poruka promijenjena tijekom slanja ili je pošiljatelj netko drugi. U svakom slučaju, zna da poruka nije ispravna. Proces se može prikazati ovako: {{ ::mac.png?nolink&600 | Primjer korištenja MAC-a [3]}} MAC se sastoji od 3 algoritma: - **Generator ključa G** - nasumično i uniformno bira ključ iz prostora - **Algoritam potpisa S** - vraća oznaku t za dani ulaz ključa K i poruke M - **Algoritam verifikacije V** - vraća „prihvaćeno“ ili „odbačeno“ za danu oznaku t, ključ K i poruku M MAC sam po sebi ne kriptira poruku, već samo daje informaciju o legitimitetu poruke. Ako šaljemo neku osjetljivu informaciju, treba ju zasebno kriptirati. Primatelj tad treba prvo izračunati očekivani MAC, dekriptirati poruku i usporediti dobiveni MAC sa svojim. Nekad se prije dekriptiranja poruke dekriptira samo MAC i ta se vrijednost uspoređuje s očekivanom. Taj je način vremenski efikasniji ako poruka nije autentična jer se ne troši vrijeme za dekripciju cijele poruke koja se na kraju ne koristi. Tri su metode kriptiranja: **Encrypt-then-MAC (EtM)**, **Encrypt-and-MAC (E&M)** i **MAC-then-Encrypt (MtE)**, a najsigurnijom se smatra **EtM**. Druge dvije ne pružaju integritet jasnog teksta te otvaraju vrata napadima izmjene teksta (//malleability//) ili napadima pogađanja (//oracle attack//). {{ ::mac_modes.png?nolink&600 | Načini korištenja kriptiranja uz MAC [3]}} Budući da MAC ne koristi asimetričnu kriptografiju, ne može osigurati svojstvo neporecivosti, odnosno pošiljatelj nakon slanja poruke može poreći da ju je poslao jer ne postoji dokaz o slanju poruke. Drugo ograničenje je što se ključ mora unaprijed definirati, odnosno moramo unaprijed znati kome sve poruka treba stići i sa svakom osobom zasebno definirati tajni ključ. Da bismo MAC smatrali sigurnim, mora biti otporan na egzistencijalne krivotvorine kod napada odabranim tekstom. Odnosno, ne smije se dogoditi da netko može uspješno dohvatiti MAC za odabrani jasni tekst bez posjedovanja odgovarajućeg ključa. ===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] Kriptografija i kriptoanaliza, predavanja, FER\\ [4] https://www.tutorialspoint.com/cryptography/message_authentication.htm\\ [5] https://www.geeksforgeeks.org/how-message-authentication-code-works/\\