Cryptology Academy · Lektion

MAC-begreber og længdeudvidelsesangreb

Forklar, hvorfor det er usikkert at tilføje et suffiks efter et hemmeligt præfiks på grund af længdeudvidelse.

Lektion 1 af 413 trin

MAC-begreber og længdeudvidelsesangreb er en gratis Cryptology Academy-lektion på CoddyKit. Dette er lektion 1 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

Meddelelsesautentifikationskoder (MAC'er) giver integritet og autenticitet med en delt hemmelig nøgle. I denne lektion lærer vi MAC'er og deres egenskaber at kende samt en kritisk sårbarhed i naive nøglede hashfunktioner.

Hvad er en MAC?

En MAC er en kort autentifikationskode, der beregnes ud fra en meddelelse og en hemmelig nøgle. Modtageren med den samme nøgle beregner MAC'en igen og verificerer den. Det forhindrer forfalskning uden nøglen.

MAC kontra hash kontra signatur

Hash: ingen nøgle, offentlig, giver kun integritet.\nMAC: delt hemmelighed, symmetrisk, giver integritet + autenticitet.\nDigital signatur: privat nøgle, asymmetrisk, tilføjer uafviselighed.\n\nKun signaturer giver uafviselighed.

Uforfalskelighed

En sikker MAC skal være eksistentielt uforfalskelig ved angreb med valgte meddelelser (EUF-CMA): En angriber, der kan forespørge MAC'en for enhver meddelelse, kan ikke forfalske en gyldig MAC for en ny meddelelse, som der ikke tidligere er blevet forespurgt om.

Naiv nøglebaseret hash: præfiks-MAC

Naivt forsøg: MAC(K, M) = H(K || M). Det ser sikkert ud, men er sårbart over for længdeforlængelsesangreb for Merkle-Damgård-hashfunktioner (SHA-256, SHA-512, MD5).

Længdeforlængelsesangreb

SHA-256-tilstanden efter beregning af hashværdien for M er blot H(M). Ud fra H(K || M) kan en angriber beregne H(K || M || padding || extra) for enhver »ekstra« værdi uden at kende K. Angriberen udvider meddelelsen med nye data.

Praktisk betydning af angrebet

Flickr (2009): API'et brugte H(K || params). Angribere tilføjede &api_sig=forgery til autentificerede forespørgsler. Resultat: Uautoriserede API-kald så gyldige ud. Det var et rent længdeforlængelsesangreb.

Suffiks-MAC fejler også

MAC(K, M) = H(M || K): sårbar over for offlineangreb. Angriberen beregner H(message) uden K og bruger derefter et fødselsdagsangreb til at finde M' med samme hash. Nøglen tilføjes efter kollisionen.

Hvorfor HMAC løser problemet

HMAC omslutter hashfunktionen to gange med forskellige nøglepolstringer:\nHMAC(K, M) = H((K⊕opad) || H((K⊕ipad) || M))\n\nDen indre hash beregner H(ipad_key || M). Den ydre hash omslutter resultatet med opad_key. Længdeforlængelse mislykkes, fordi angriberen ikke kan sætte den ydre hashfunktions starttilstand.

SHA-3 og længdeforlængelse

SHA-3 bruger svampekonstruktionen, som i sig selv er immun over for længdeforlængelsesangreb. H_SHA3(K || M) er en gyldig enkel MAC-konstruktion. SHA-2 er ikke — brug altid HMAC med SHA-2.

Timingangreb på MAC-verificering

En MAC-sammenligning med tidlig afslutning (==) lækker tidsoplysninger. Den »korrekte« første byte tager en smule længere tid end den »forkerte« første byte. Efter 256 forespørgsler: byte 1 fundet. Efter 256 mere: byte 2. Hele MAC'en gendannes med 16×256 forespørgsler.

Hurtigt tjek

Hvorfor er MAC(K, M) = SHA256(K || M) usikker?

Opsamling

Længdeforlængelsesangreb viser, hvorfor naive nøglede hashfunktioner fejler. Dernæst ser vi på HMAC's konstruktion og sikkerhedsbevis.
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 “MAC-begreber og længdeudvidelsesangreb” gratis?

Ja — hele teksten til “MAC-begreber og længdeudvidelsesangreb” 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 “MAC-begreber og længdeudvidelsesangreb”?

Forklar, hvorfor det er usikkert at tilføje et suffiks efter et hemmeligt præfiks på grund af længdeudvidelse. 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 1 af 4.

Hvor lang tid tager lektionen “MAC-begreber og længdeudvidelsesangreb”?

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