HMAC

HMAC (ang. keyed-Hash Message Authentication Code, Hash-based Message Authentication Code) – kod MAC z wmieszanym kluczem tajnym zapewniający zarówno ochronę integralności, jak i autentyczności danych[1].

Standardowy kod MAC 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:

HMAC K ( m ) = h ( ( K o p a d ) h ( ( K i p a d ) m ) ) , {\displaystyle \operatorname {HMAC} _{K}(m)=h{\bigg (}(K\oplus \mathrm {opad} )\|h{\big (}(K\oplus \mathrm {ipad} )\|m{\big )}{\bigg )},}

gdzie wartości opad i ipad 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 klucz K, co zapewnia autentyczność pochodzenia danych. Tylko osoba znająca klucz K może zweryfikować autentyczność danych zabezpieczonych kodem HMAC. Implementacje HMAC są oparte na standardowych kryptograficznych funkcjach skrótu takich jak SHA-2, SHA-1 czy MD5.

Kody HMAC są stosowane w szeregu protokołów sieciowych np. w IPsec, 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ów szyfrów blokowych (np. OCB, CCM).

Zobacz też

Przypisy

Linki zewnętrzne

  • H.H. Krawczyk H.H., M.M. Bellare M.M., R.R. Canetti R.R., HMAC: Keyed-Hashing for Message Authentication, RFC 2104, IETF, luty 1997, DOI: 10.17487/RFC2104, ISSN 2070-1721, OCLC 943595667  (ang.).