En Message Authentication Code (MAC) kan faktisk konstrueres ved hjælp af blokcifre. En MAC er en kryptografisk kontrolsum, der giver integritets- og ægthedsgarantier på en meddelelse. Det sikrer, at meddelelsen ikke er blevet ændret, og at den stammer fra en legitim afsender, der er i besiddelse af den hemmelige nøgle. Blokcifre, som er deterministiske algoritmer, der opererer på datablokke i fast størrelse med en symmetrisk nøgle, kan bruges til at bygge MAC'er gennem forskellige konstruktioner.
Forstå blokcifre
Blokcifre opererer på blokke af almindelig tekst i fast størrelse, typisk 64 eller 128 bit, og transformerer dem til chiffertekstblokke af samme størrelse ved hjælp af en symmetrisk nøgle. Almindelige eksempler på blokcifre omfatter Data Encryption Standard (DES), Triple DES (3DES) og Advanced Encryption Standard (AES). Blokcifre kan bruges i forskellige driftsformer til at kryptere data af vilkårlig længde og til at opnå forskellige kryptografiske mål.
MAC-konstruktion ved hjælp af blokcifre
Der findes adskillige metoder til at bygge en MAC ved hjælp af blokcifre, som hver især udnytter chifferens egenskaber for at sikre meddelelsens integritet og ægthed. Bemærkelsesværdige metoder omfatter CBC-MAC, HMAC og CMAC.
CBC-MAC (Cipher Block Chaining Message Authentication Code)
CBC-MAC er en af de enkleste og mest ligetil metoder til at konstruere en MAC ved hjælp af en blokcifre. Den anvender operationstilstanden Cipher Block Chaining (CBC), som almindeligvis bruges til kryptering. I CBC-tilstand XOR-behandles hver almindelig tekstblok med den forrige chiffertekstblok, før den krypteres. Til MAC-generering bruges den endelige chiffertekstblok som MAC.
Konstruktionstrin:
1. Initialisering: Vælg en symmetrisk nøgle og en initial vektor (IV), typisk sat til nul.
2. Blokvis behandling: For en besked opdelt i blokke
:
-
- Til til
:
-
3. MAC Generation: MAC'en er den sidste chiffertekstblok .
Eksempel:
Overvej en besked opdelt i tre blokke
. Ved hjælp af en blokcifre
med nøgle
:
-
-
-
-
MAC er .
Sikkerhedsovervejelser:
Mens CBC-MAC er sikker til beskeder med fast længde, er den sårbar over for visse angreb, når den bruges sammen med beskeder med variabel længde. For at afbøde dette, anvendes variationer såsom Length-Prefix CBC-MAC eller CMAC.
CMAC (Cipher-based Message Authentication Code)
CMAC er en forbedring i forhold til CBC-MAC og adresserer dens sårbarheder. Den er standardiseret i NIST SP 800-38B og er sikker til meddelelser af vilkårlig længde.
Konstruktionstrin:
1. Nøgleafledning: Udled to undernøgler og
fra hovednøglen
ved hjælp af blokchifferet.
2. polstring: Hvis meddelelseslængden ikke er et multiplum af blokstørrelsen, skal du udfylde den sidste blok.
3. Blokvis behandling: For en besked opdelt i blokke
:
-
- Til til
:
-
– Til sidste blok :
- Hvis er komplet,
- Hvis er polstret,
-
4. MAC Generation: MAC er .
Eksempel:
Overvej en besked opdelt i tre blokke
. Ved hjælp af en blokcifre
med nøgle
:
– Udled og
.
-
-
-
- Til :
– Hvis fuldført,
– Hvis polstret,
-
MAC er .
HMAC (hash-baseret meddelelsesgodkendelseskode)
Selvom HMAC primært bruger hash-funktioner, kan den bygges ved hjælp af blok-ciffer ved at anvende Davies-Meyer-konstruktionen, som gør en blok-ciffer til en hash-funktion. HMAC er meget udbredt på grund af dets enkelhed og stærke sikkerhedsgarantier.
Konstruktionstrin:
1. Nøgleforberedelse: Hvis nøglen er længere end blokstørrelsen, hash den for at få en nøgle i den passende længde. Hvis den er kortere, skal du fylde den med nuller.
2. Indre Hash: Beregn hashen for den indre polstrede nøgle sammenkædet med beskeden.
3. Ydre Hash: Beregn hashen for den ydre polstrede nøgle sammenkædet med resultatet af den indre hash.
4. MAC Generation: MAC'en er resultatet af den ydre hash.
Eksempel:
Overvej en besked og en nøgle
med blokstørrelse
:
- Hvis er længere end
,
.
- Hvis er kortere end
, pude
med nuller.
– Beregn .
– Beregn .
– Indre hash: .
– Ydre hash: .
MAC er .
Sikkerhed Analyse
Sikkerheden af en MAC konstrueret ved hjælp af blokcifre afhænger af styrken af den underliggende blokcifre og konstruktionsmetoden. CBC-MAC, CMAC og HMAC (med blokcifre) tilbyder hver især forskellige sikkerhedsegenskaber og effektivitetsafvejninger.
- CBC-MAC: Sikker til beskeder med fast længde, men sårbar over for angreb med forlængelse af længde. Varianter som Length-Prefix CBC-MAC eller CMAC anbefales til meddelelser med variabel længde.
- CMAC: Giver stærke sikkerhedsgarantier for beskeder af vilkårlig længde og er modstandsdygtig over for forskellige angreb.
- HMAC: Tilbyder robust sikkerhed ved at kombinere egenskaberne af hash-funktioner og blokcifre, hvilket gør den velegnet til en bred vifte af applikationer.
Praktiske anvendelser
MAC'er konstrueret ved hjælp af blokcifre anvendes i forskellige applikationer for at sikre dataintegritet og ægthed. Eksempler omfatter:
- Finansielle transaktioner: Sikring af integriteten af transaktionsdata i banksystemer.
- Sikker kommunikation: Autentificering af meddelelser i sikre kommunikationsprotokoller som TLS/SSL.
- Digitale signaturer: Giver et ekstra lag af sikkerhed til digitale signaturer ved at sikre beskedintegritet.
Inden for klassisk kryptografi tjener blokcifre som alsidige værktøjer til at konstruere MAC'er, der tilbyder robuste mekanismer til at sikre meddelelsesintegritet og autenticitet. Ved at udnytte egenskaberne af blokcifre gennem metoder som CBC-MAC, CMAC og HMAC, kan kryptografiske systemer give stærke sikkerhedsgarantier mod manipulation og forfalskning.
Andre seneste spørgsmål og svar vedr Anvendelser af blokkoder:
- Hvad bør en blokchiffer indeholde ifølge Shannon?
- Afhænger sikkerheden af blokchiffere af at kombinere forvirrings- og diffusionsoperationer mange gange?
- Betyder diffusion, at enkelte bits af krypteret tekst er påvirket af mange bits af klartekst?
- Opdeler ECB-tilstanden store input-klartekst i efterfølgende blokke
- Kan vi bruge en blokchiffer til at bygge en hash-funktion eller MAC?
- Kan OFB-tilstand bruges som keystream-generatorer?
- Kan en indskrivning være deterministisk?
- Hvad er driftsformer?
- Hvad gør ECB-tilstanden ved simple blokcifre
- Kan PSRNG laves med blokcifre?
Se flere spørgsmål og svar i Applications of block ciphers