Wat is HMAC?

Een schema voor berichtauthenticatiecodes dat een hashfunctie en een gedeelde sleutel gebruikt. Met twee uit de sleutel afgeleide waarden, K ⊕ ipad en K ⊕ opad, past het de hashfunctie twee keer toe: HMAC(K, m) = H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m)). Anders dan het eenvoudigweg hashen van de sleutel gevolgd door het bericht is het niet vatbaar voor lengte-extensieaanvallen, ook niet met een hashfunctie met een Merkle–Damgård-constructie zoals SHA-256. Het is vastgelegd in RFC 2104 en wordt veel gebruikt in TLS, IPsec, JWT en de sleutelafleidingsfunctie HKDF.

Japanse benaming: HMAC

“HMAC” komt voor in 4 oefenvragen uit 2 onderwerpen, bijv. Basis en toepassingen van cryptografie, Basis van informatiebeveiliging.

Vakgebied: Basis en toepassingen van cryptografie

Nu oefenen: vragen over HMAC

Welke uitspraak vergelijkt een berichtauthenticatiecode (MAC) juist met een digitale handtekening?

  1. AEen MAC kan door iedereen met een publieke sleutel worden gecontroleerd, dus het effect voor onweerlegbaarheid is sterker dan dat van een digitale handtekening
  2. BEen MAC wordt gemaakt met een symmetrische sleutel die zender en ontvanger delen, dus manipulatie kan worden gedetecteerd, maar omdat de ontvanger dezelfde MAC ook kan maken, is ze niet bruikbaar voor onweerlegbaarheid, dat wil zeggen om tegenover een derde te bewijzen dat de zender het bericht heeft gemaakt
  3. CEen MAC berekent alleen een hashwaarde zonder sleutel, dus zelfs als een aanvaller het bericht wijzigt en de MAC opnieuw berekent, kan de ontvanger dat merken
Antwoord en toelichting tonen

Antwoord: B. Een MAC wordt gemaakt met een symmetrische sleutel die zender en ontvanger delen, dus manipulatie kan worden gedetecteerd, maar omdat de ontvanger dezelfde MAC ook kan maken, is ze niet bruikbaar voor onweerlegbaarheid, dat wil zeggen om tegenover een derde te bewijzen dat de zender het bericht heeft gemaakt

Een berichtauthenticatiecode (message authentication code, MAC) is een korte waarde die uit een bericht en een symmetrische sleutel wordt berekend; HMAC, dat een hashfunctie gebruikt, komt veel voor. De ontvanger berekent haar opnieuw met dezelfde sleutel en vergelijkt; komen ze overeen, dan is het bericht afkomstig van iemand die de sleutel kent en is het onderweg niet gewijzigd. Een aanvaller die de sleutel niet kent, kan voor een gewijzigd bericht geen juiste MAC maken. De ontvanger heeft echter dezelfde sleutel en kan ook MAC's maken. Hij kan daarom tegenover een derde niet bewijzen dat de zender het bericht heeft gemaakt, dus een MAC biedt geen onweerlegbaarheid. Een digitale handtekening kan alleen met de privésleutel van de zender worden gemaakt en door iedereen met de publieke sleutel worden gecontroleerd, dus die is wel bruikbaar voor onweerlegbaarheid. MAC's zijn daarentegen licht om te berekenen en worden veel gebruikt voor controles tussen de twee partijen, zoals het detecteren van manipulatie in elk pakket van een verbinding. Een kale hashwaarde zonder sleutel kan een aanvaller samen met het gewijzigde bericht opnieuw berekenen, dus die kan opzettelijke manipulatie niet detecteren.

Het gebruik van de hashwaarde SHA-256(K ‖ m) van een geheime sleutel K gevolgd door een bericht m als tag om manipulatie te detecteren, wordt als gevaarlijk beschouwd. Wat is de reden daarvoor?

  1. AAls de tag en de lengte van de invoer bekend zijn, kan zonder K te kennen de tag worden berekend van een bericht waarbij achter m gegevens zijn toegevoegd
  2. BEr is een efficiënte methode bekend om uit de uitvoer van SHA-256 alleen de sleutel K aan het begin van de invoer terug te rekenen
  3. CDoor de sleutel K vóór het bericht te plaatsen wordt de invoer langer, en bij SHA-256 worden botsingen dan makkelijker te vinden
Antwoord en toelichting tonen

Antwoord: A. Als de tag en de lengte van de invoer bekend zijn, kan zonder K te kennen de tag worden berekend van een bericht waarbij achter m gegevens zijn toegevoegd

Bij een hashfunctie met een Merkle–Damgård-constructie zoals SHA-256 is de uitgevoerde hashwaarde precies de interne toestand na het verwerken van het laatste blok. Een aanvaller kan daarom de tag als interne toestand nemen en de berekening voortzetten, en zo zonder K te kennen de hashwaarde berekenen van een bericht dat bestaat uit K ‖ m gevolgd door padding van een vaste vorm en willekeurige gegevens (een lengte-extensieaanval). HMAC gebruikt twee uit de sleutel afgeleide waarden en hasht de binnenste hashwaarde nog een keer samen met de sleutel; deze structuur voorkomt de aanval. SHA-3 is door zijn constructie niet vatbaar voor deze aanval, en daarom is ook KMAC gestandaardiseerd, dat de sleutel eenvoudig vooraan zet.

“HMAC” in de toelichting

Vragen met “HMAC” (4)

  1. Welke uitspraak vergelijkt een berichtauthenticatiecode (MAC) juist met een digitale handtekening?
  2. Het gebruik van de hashwaarde SHA-256(K ‖ m) van een geheime sleutel K gevolgd door een bericht m als tag om manipulatie te detecteren, wordt als gevaarlijk beschouwd. Wat is de reden daarvoor?
  3. In protocollen zoals TLS 1.3 wordt het gedeelde geheim uit een ECDHE-sleuteluitwisseling niet direct als versleutelingssleutel gebruikt; in plaats daarvan worden sleutels gemaakt door het door een sleutelafleidingsfunctie (KDF) zoals HKDF te halen. Wat is daarvoor een passende reden?
  4. Welke combinatie geeft juist aan wat de cipher suite TLS_AES_128_GCM_SHA256 van TLS 1.3 vastlegt?

Verwante termen

Hashfunctie TLS (Transport Layer Security) Diffie-Hellman-sleuteluitwisseling Berichtauthenticatiecode (message authentication code) Digitale handtekening Informatie-entropie AES (Advanced Encryption Standard) Geauthenticeerde versleuteling (AEAD) RSA-cryptosysteem Certificaatautoriteit

Naar de woordenlijst