UMAC

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 4. juni 2021; verifikation kræver 1 redigering .

UMAC ( engelsk  meddelelsesgodkendelseskode baseret på universal hashing, universal MAC , meddelelsesgodkendelseskode baseret på universal hashing) er en af ​​typerne af meddelelsesgodkendelseskode ( MAC ).

Historie

Denne algoritme blev valgt af NESSIE i 2003, og følgende personer deltog i dens udvikling: Intel Corp. (USA), University of Nevada (USA), IBM Research Laboratory (USA), Technion ( Israel ) og University of California Davis (USA). Dens forfattere var John Black, Shai Halevi og Hugo Krawczyk, Ted Krovetz og Phillip Rogaway .

Beskrivelse

Den hurtige "universelle" funktion bruges til at hash den indgående besked M til en kort streng. Denne streng XOReres derefter med en pseudo-tilfældig værdi, hvilket resulterer i et UMAC-tag:

hvor K1 og K2 er hemmelige tilfældige nøgler, som modtager og afsender har.

Dette viser, at UMAC's sikkerhed afhænger af, hvordan afsender og modtager tilfældigt vælger den hemmelige hash-funktion og den pseudo-tilfældige sekvens . I dette tilfælde ændrer værdien af ​​Nonce hver takt. På grund af brugen af ​​Nonce skal modtageren og senderen vide, hvornår beskeden blev sendt, og hvordan Nonce-værdien blev genereret. I stedet kan du bruge enhver anden ikke-gentagende værdi som Nonce, såsom sekvensnummeret på meddelelsen. Samtidig behøver dette nummer ikke at være hemmeligt, det vigtigste er, at det ikke skal gentages.

UMAC er designet til at bruge 32-bit, 64-bit, 92-bit og 128-bit tags, afhængigt af det nødvendige sikkerhedsniveau. UMAC bruges normalt sammen med AES -krypteringsalgoritmen .

Nøglegenereringsfunktion og pseudo-tilfældig sekvens

Oprettelse af pseudo-tilfældige bytes er nødvendig for at UHASH kan fungere, og når der genereres tags

Valg af blokcifre

Til sit arbejde bruger UMAC en blokcifre , hvis valg bestemmes af følgende konstanter:

Dette bruger funktionen

Eksempel: hvis AES bruges med en 16-byte nøgle, så vil BLOCLEN være 16 (fordi AES fungerer med 16-byte blokke).

KDF - nøglegenereringsfunktion

Denne funktion genererer en sekvens af pseudo-tilfældige bytes, der bruges til nøglehash-funktioner.

Indgang:

Afslut:

PDF: funktion til generering af pseudo-tilfældige tal

Denne funktion tager en nøgle og en given tid og returnerer et pseudo-tilfældigt tal, der skal bruges i genereringsmærket. Med denne funktion kan tal med en længde på 4, 8, 12 eller 16 bytes opnås.

Indgang:

Afslut:

Generering af UMAC-tags

UMAC-tags genereres ved hjælp af UHASH-funktionen ved hjælp af Nonce-værdien og den tidligere opnåede streng (se beskrivelse). Deres længde kan være 4, 8, 12 eller 16 bytes.

Indgang:

Afslut:

Tag-beregningsalgoritme:

HashedMassage = UHASH(K, M, TagLen) Pad = PDF(K, nonce, TagLen) Tag = Pad xor HashedMassage

UMAC-32 UMAC-64 UMAC-96 UMAC-128

Disse betegnelser indeholder i deres navn en vis værdi af taglængden:

Universal Hash-funktion (UHASH)

UHASH ( engelsk  Universal hashing ) er en universel hashing-funktion, kernen i UMAC-algoritmen. UHASH - funktionen fungerer i tre trin. Først påføres L1-HASH på inputmeddelelsen, derefter påføres L2-HASH på dette resultat, og til sidst påføres L3-HASH på resultatet. Hvis længden af ​​inputmeddelelsen ikke er mere end 1024 bit, bruges L2-HASH ikke. Eftersom L3-Hash-funktionen kun returnerer et ord med en længde på 4 bytes, udføres der adskillige iterationer af dette skema med tre niveauer, hvis det kræves for at opnå en hash med en længde på mere end 4 bytes.

Generisk funktion

Lad hash-funktionen vælges fra en klasse af hash-funktioner H, der knytter beskeder til D, et sæt af mulige beskedmønstre. Denne klasse kaldes universel, hvis der for ethvert separate par af meddelelser findes på sættet af H/D-funktioner, en funktion, der knytter dem til elementet D. Betydningen af ​​denne funktion er, at hvis en tredjepart ønsker at erstatte en meddelelse med en anden, men samtidig vurderer, at hash-funktionen blev valgt helt tilfældigt, så er sandsynligheden for ikke at opdage en substitution af den modtagende part til 1/D.

L1-hash - første trin

L1-Hash opdeler meddelelser i bidder på 1024 bytes og anvender en hashing-algoritme kaldet NH til hver chunk. Outputtet af NH-algoritmen er 128 gange mindre end inputtet.

L2-hash - trin 2

L2-Hash arbejder med L1-Hash output, bruger POLY polynomial algoritme. Det andet hashingtrin bruges kun, hvis længden af ​​inputmeddelelsen er større end 16 megabyte. Brugen af ​​POLY-algoritmen er påkrævet for at undgå timingangreb. Outputtet fra POLY-algoritmen er et 16-byte-tal.

L3-HASH - tredje fase

Dette trin er påkrævet for at få en 4-byte værdi fra output 16 bytes af L2-Hash algoritmen.

Sikkerhedsproblemer

Modstand mod kryptoanalyse

Styrken af ​​UMAC afhænger af dets hovedfunktioner: nøgleafledningsfunktionen (KDF) og funktionen pseudo-tilfældig sekvensgenerering (PDF). Det er grunden til, at begge funktioner implementeres ved hjælp af blokkryptering, normalt Advanced Encryption Standard (AES). UMAC tillader dog, at der bruges andre blokcifre. Den største fordel ved UMAC-algoritmen og UHASH-funktionen er, at deres styrke kun afhænger af de matematiske egenskaber af den givne algoritme og funktion. Derfor påvirker krypteringsanalyse ikke sikkerheden for UHASH-funktionen.

Længden af ​​pseudo-tilfældige tal og muligheden for substitution

MAC-algoritmen bruges til at autentificere meddelelser mellem to parter, der kender den delte hemmelige nøgle K. Godkendelsesmærker beregnes for meddelelsen ved hjælp af nøglen K, og i tilfælde af UMAC er nøglen tid. Hacking af MAC-algoritmen betyder, at angriberen selv er i stand til at generere beskeder uden at kende nøglen. Wegman-Carter-teorien og UMAC-analysen viser, at hvis en UMAC-algoritme med tilfældige nøgler og initialværdi Nonce bruges, så er sandsynligheden for, at en angriber vil knække beskeden: , , , , hvis output-tags af længden 32, 64, 96 , 128 bruges hhv. Hvis en angriber laver N forsøg, så stiger sandsynligheden for hacking i forhold til antallet af forsøg, det vil sige N gange. Med den ekstra brug af AES-algoritmen reduceres sandsynligheden for hacking betydeligt.

Sikkerhed ved brug af Nonce

UMAC bruger den aktuelle tid i området 1 til BLOCKLEN bytes. I dette tilfælde skal alle Nonce-værdier under sessionen være lige lange. For den bedste sikkerhed bør ingen Nonce-værdi gentages, når du bruger den samme sessionsnøgle.

Hvis der bruges en duplekstransmissionskanal, kan der bruges forskellige taster for hver retning. Når du bruger en nøgle i begge retninger, er det meget vigtigt at Nonce værdien ikke gentages, dette kan gøres ved at bruge lige taster i den ene retning og ulige taster i den anden retning. I dette tilfælde behøver den aktuelle værdi af Nonce ikke at blive holdt hemmelig.

Nonce-værdien kan oprettes og overføres på følgende måder:

  1. Den aktuelle værdi af Nonce er et 8-byte usigneret tal, der nulstilles i begyndelsen af ​​sessionen og øges med én efter hvert tag sendt. I dette tilfælde sendes denne tæller sammen med beskeden. Hvis der transmitteres mere end 2 ^ 64 beskeder under sessionen, opstår der en afbrydelse .
  2. Den aktuelle værdi af Nonce er et BLOCKLEN-byte usigneret tal, der er sat til nul i begyndelsen af ​​sessionen og øges med én efter hvert tag sendt. I dette tilfælde overføres tælleren ikke eksplicit mellem afsender og modtager, og hver af dem tæller selv den aktuelle værdi.
  3. Den aktuelle værdi af Nonce er en BLOCKLEN-byte pseudo-tilfældig værdi. Men så er synkroniseringen af ​​pseudo-tilfældige sekvenser hos afsender og modtager vigtig.

Gentag angreb

Replay-angreb er en angribers handlinger, der sigter mod at gentage en besked, et tilfældigt tal og godkende et tag. I UMAC vil dette angreb mislykkes, fordi hver Nonce-værdi bruges nøjagtigt én gang.

Tag præfikskontrol.

Naturen af ​​UMAC gør det muligt at implementere tag-præfikskontrol, for eksempel kan en modtager kun kontrollere et 32-bit præfiks fra et 64-bit tag. Dette bruges til optimering, hvis den beregningsmæssige belastning af checken er høj. I dette tilfælde har modtageren mulighed for at afvise hele tagget, hvis 32-bit præfikset er forkert. Denne algoritme reducerer sessionssikkerheden.

Litteratur