Co to jest Keyed-Hash Message Authentication Code (HMAC)?

2008-10-25 00:00:00 +0100


Inne nazwy: Keyed-Hash Message Authentication Code.

HMAC jest nowoczesną wersją MAC (Message Authentication Code. Jego zadaniem jest weryfikacja integralności oraz autentyczności wiadomości.

HMAC wykorzystuje klucz tajny znajdujący się w rękach nadawcy i odbiorcy, przy czym ten drugi zakłada że wiadomość jest autentyczna, to jest pochodzi od nadawcy, bo tylko oni dwaj znają klucz użyty do wygenerowania HMAC.

Istotną różnicą w stosunku do oryginalnej funkcji MAC (która wykorzystywała DES), jest wykorzystanie jednokierunkowych funkcji skrótu przez HMAC. Podstawą HMAC może być dowolna funkcja skrótu, na przykład MD5 lub SHA1, do której w odpowiedni sposób “domieszany” zostaje tajny klucz. Standardowo odbywa się to w następujący sposób:</p>

 

  1. na końcu bloku jawnego dołączamy tajny klucz i obliczamy skrót z całości
  2. do wynikowego skrótu znów dołączamy klucz i obliczamy skrót z całości
  3. wynik jest kodem HMAC dla danego bloku

W powyższym opisie dla uproszczenia zostały pominięte dodatkowe dwie operacje - w pierwszym kroku każdy bajt klucza jest xorowany z bajtem 0x36 (tzw. inner pad), w drugim kroku klucz jest xorowany z bajtem 0x5c (tzw. outer pad).

Jedną z zalet HMAC w stosunku do MAC jest brak ograniczenia długości bloku tekstu poddawanego ochronie - większość stosowanych obecnie funkcji skrótu może w praktycznych implementacjach sumować tekst jawny o dowolnej długości.

Bibliografia