HMAC (ang. keyed-Hash Message Authentication Code,Hash-based Message Authentication Code) – kodMAC z wmieszanym kluczem tajnym zapewniający zarówno ochronęintegralności, jak iautentyczności danych[1].
Standardowy kodMAC zapewnia ochronę integralności, ale może podlegać sfałszowaniu, jeśli nie jest zabezpieczony dodatkowym mechanizmem chroniącym jego autentyczność (np.podpisem cyfrowym). Dla ochrony integralności i autentyczności w rozwiązaniach wymagających wysokiej wydajności stworzono zmodyfikowany algorytm MAC, w którym podczas każdej operacji dodawany jest tajny klucz:
gdzie wartościopad iipad są ustalonymi wartościami dopełniającymi,m jest tekstem podlegającym ochronie zaśK jest tajnym kluczem.
Poprawny kod HMAC może stworzyć tylko osoba znająca tajny kluczK, co zapewnia autentyczność pochodzenia danych. Tylko osoba znająca kluczK może zweryfikować autentyczność danych zabezpieczonych kodem HMAC. Implementacje HMAC są oparte na standardowych kryptograficznychfunkcjach skrótu takich jakSHA-2,SHA-1 czyMD5.
Kody HMAC są stosowane w szeregu protokołów sieciowych np. wIPsec, gdzie klucze HMAC są niezależne od kluczy szyfrujących dane.
Alternatywną metodą zapewniania integralności i autentyczności danych jest stosowanie uwierzytelniajaco-szyfrujących trybówszyfrów blokowych (np.OCB,CCM).