Cryptology Academy · Lektion

HMAC-konstruktion og sikkerhedsbevis

Gennemgå ipad/opad-konstruktionen og dens sikkerhedsegenskaber.

Lektion 2 af 413 trin

HMAC-konstruktion og sikkerhedsbevis er en gratis Cryptology Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cryptology Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Velkommen

HMAC er standardkonstruktionen for nøglede MAC'er. Dens design med dobbelt hashberegning forhindrer længdeforlængelsesangreb og har et formelt sikkerhedsbevis, der reducerer HMAC's sikkerhed til den underliggende hashfunktion.

HMAC-konstruktion

HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)) Hvor: - K' = K nuludfyldt til blokstørrelsen B (eller H(K), hvis |K|>B) - ipad = 0x36 gentaget B gange - opad = 0x5C gentaget B gange

Hvorfor ipad og opad?

ipad (0x36) og opad (0x5C) er forskellige konstanter, som sikrer, at K' ⊕ ipad ≠ K' ⊕ opad. De danner i praksis to forskellige pseudotilfældige nøgler ud fra K, som bruges til henholdsvis indre og ydre hashberegning.

HMAC trin for trin

For K=secret, M=message, H=SHA256: 1. K' = K udfyldt til 64 bytes 2. inner_key = K' XOR ipad 3. inner_hash = SHA256(inner_key || M) 4. outer_key = K' XOR opad 5. result = SHA256(outer_key || inner_hash)

HMAC i Python

import hmac, hashlib key = b'my_secret_key' message = b'Hello, World!' mac = hmac.new(key, message, hashlib.sha256) print(mac.hexdigest()) # 64-char hex string (256 bits)

Hvorfor længdeforlængelse mislykkes med HMAC

Givet HMAC(K,M) = SHA256(outer_key || SHA256(inner_key || M)) Angriberen kender SHA256(inner_key || M) = inner_hash. Men angriberen kan ikke forlænge den — den ydre hashberegning tager (outer_key || inner_hash) som inddata, ikke kun inner_hash. outer_key er ukendt.

HMAC-sikkerhedsbevis (Bellare)

Bellare (1996) beviste: Hvis hashfunktionen H er en pseudotilfældig funktion (PRF), er HMAC en PRF. I praksis er HMAC-SHA256 lige så sikker som SHA-256 med hensyn til de tilsigtede sikkerhedsegenskaber.

Nøg​lelængde for HMAC

HMAC-nøglen skal være: - Mindst L bytes (hashens outputlængde) - Anbefalet: præcis L bytes tilfældige data - Hvis key > block_size: key hashberegnes på forhånd til block_size - Brug os.urandom(32) til HMAC-SHA256-nøgler

Afkortning af HMAC

HMAC-outputtet kan afkortes til halvdelen af outputlængden uden væsentligt tab af sikkerhed. TOTP/HOTP afkorter til 4 bytes. TLS-MAC'er afkortes. Afkort aldrig til under 80 bit (10 bytes).

HMAC i forskellige sammenhænge

HMAC-SHA256 bruges til: - TOTP: autentificeringskoder (afkortet til 6 cifre) - TLS 1.2: sessions-MAC'er (ikke nødvendigt i TLS 1.3 med AEAD) - JWT'er: HS256-signering (symmetrisk) - Signering af API-forespørgsler: GitHub-webhooks, AWS SigV4

HKDF: HMAC-baseret nøgleafledning

HKDF(IKM, salt, info, L) bruger HMAC to gange: 1. Ekstrahering: PRK = HMAC-SHA256(salt, IKM) 2. Udvidelse: OKM = HMAC-SHA256(PRK, info || counter) Bruges i TLS 1.3's nøgleplan, Signal og WireGuard til nøgleafledning.

Hurtigt tjek

Hvad er formålet med opad (0x5C gentaget) i HMAC?

Opsummering

HMAC-konstruktion og -bevis forstået. Nu anvender vi HMAC til signering af API-forespørgsler og ser, hvordan gentagelsesangreb forhindres.
Gratis at komme i gang

Lær Cryptology Academy med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
67
Lektioner
261

Ofte stillede spørgsmål

Er lektionen “HMAC-konstruktion og sikkerhedsbevis” gratis?

Ja — hele teksten til “HMAC-konstruktion og sikkerhedsbevis” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cryptology Academy-kurset, skal du opgradere til CoddyKit PRO. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “HMAC-konstruktion og sikkerhedsbevis”?

Gennemgå ipad/opad-konstruktionen og dens sikkerhedsegenskaber. Du øver dig i Cryptology Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cryptology Academy?

Der kræves ingen tidligere erfaring. Cryptology Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “HMAC-konstruktion og sikkerhedsbevis”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Cryptology Academy-lektion?

Ja. Alle Cryptology Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. MAC-begreber og længdeudvidelsesangreb
  2. HMAC-konstruktion og sikkerhedsbevis
  3. HMAC i API'er: Signering af forespørgsler
  4. CMAC og Poly1305: MAC'er baseret på blokchifre
← Tilbage til Cryptology Academy