Hvad er AES-kryptering, og hvordan fungerer det?

I en verden, hvor ondsindede hackere leder efter muligheder for at stjæle eller ødelægge data, er kryptering blevet en essentiel del af den digitale verden. Kryptering er en måde at beskytte data på ved at kryptere det, så kun autoriserede personer med den hemmelige nøgle kan dekryptere og læse det. AES er en krypteringsalgoritme, som VPN-tjenesteudbydere og statslige agenturer bredt anvender til at beskytte data. Denne artikel fokuserer på AES-kryptering og hvordan det fungerer. 

Hvad er AES-kryptering?

Der er to hovedtyper af kryptering: Symmetrisk og Asymmetrisk. Asymmetrisk kryptering involverer brugen af to forskellige nøgler (privat og offentlig) til at kryptere og dekryptere data, mens symmetrisk kryptering involverer brugen af en enkelt nøgle til både kryptering og dekryptering. Advanced Encryption Standard (AES) tilhører kategorien af symmetrisk kryptering. Det er en undergruppe af Rijndael-familien af symmetriske blokkrypteringer udviklet af Vincent Rijmen og Joan Dae i 1998, derfor navnet “Rijndael.”

AES er en iterativ krypteringsalgoritme baseret på substitution-permutationsnetværket (SPN) algoritmen. SPN-algoritmen er en klasse af blokkrypteringer, der involverer runder af en gentagen serie af matematiske operationer. Det er på grund af disse krypteringsrunder, at AES er en formidabel krypteringsalgoritme. AES har tre forskellige typer baseret på længden af krypteringsnøglerne. De inkluderer AES-128, AES-192 og AES-256. 

Nøglelængden for hver af disse typer af AES bestemmer deres styrke; jo længere længden er, desto stærkere er krypteringen. 128-bit og 192-bit AES-krypteringscifre har henholdsvis 3,4 x 10^38 og 6,2 x 10^57 mulige nøglekombinationer. AES-256 er det mest robuste krypteringsciffer og har 1,1 x 10^77 mulige nøglekombinationer. På trods af variationen i nøglelængde forbliver AES’s blokstørrelse altid den samme–128 bits. 

Hvorfor blev AES Udviklet?

Tidligere var krypteringscifre enklere, og med den rette mængde tid og værktøjer kunne enhver knække dem. Efterhånden som teknologien skred frem, havde hackere bedre værktøjer til rådighed for at bekæmpe krypteringscifre. Det var tydeligt, at krypteringscifre behøvede at være mere sofistikerede end det, der eksisterede på det tidspunkt, hvilket var Data Encryption Standard (DES). 

Ligesom AES er DES også en symmetrisk nøglealgoritme. IBM udviklede DES i 1970’erne, og det amerikanske National Bureau of Standards (NBS) vedtog det som standardkrypteringsciffer for kryptering af følsomme regeringsoplysninger. På grund af dets vedtagelse af NBS og den amerikanske regering accepterede forskellige sektorer DES. Det vakte også interesse i det akademiske samfund, hvilket fremmede en interesse i studiet af kryptografi. I årtier viste DES sig at være formidabel indtil juni 1997, hvor DESCHALL-gruppen offentligt knækkede det.

Electronic Frontier Foundation’s (EFF) DES cracker udførte samme bedrift på 56 timer året efter. I 1999 tog det mindre end 24 timer at bryde en DES-nøgle. Disse betydningsfulde begivenheder viste, at med stigende computerkraft og fremskridt inden for teknologi, ville det kun være et spørgsmål om tid, før det blev let at knække DES. Desuden oversteg DES-nøglelængden ikke 56-bit sammenlignet med den altdominerende 256-bit AES.

I 2001 afslørede National Institute of Standards and Technology (NIST) sin adoption af AES-krypteringscifferet på grund af dets alsidige egenskaber. Det er bedre end DES med hensyn til ydeevne, let at implementere og ekstremt svært at bryde.

Hvordan AES-kryptering fungerer for at beskytte dine data

At forstå AES-krypteringsalgoritmen kan være udfordrende, hvis du ikke har en passende matematisk baggrund. Vi vil dog forsøge at forenkle processen for dig, så du kan få en grundlæggende forståelse af, hvordan den fungerer. AES-krypteringsalgoritmen krypterer og dekrypterer data i blokke af 128 bits. På trods af variationen i nøglelængde, ændres blokstørrelsen ikke.

AES-krypteringsalgoritmen kombinerer en hemmelig nøgle (128, 192 eller 256-bit nøgle) med klartekst (følsomme data, du ønsker at kryptere) for at skabe en kryptering. AES-krypteringen bruger en række matematiske transformationer (substitution-permutation) ved brug af den hemmelige nøgle og klarteksten. Før nogen operation finder sted, opdeles klartekstdataene i en 4 x 4 matrix af seksten bytes eller 128 bits (en byte svarer til 8 bits), da AES krypterer data i blokke af bits.

AES-algoritmen bruger substitution-permutation med flere runder til at konvertere plaintext-data til en endelig ciphertext. Nøglestørrelsen bestemmer antallet af runder. En nøglestørrelse på 128 bit har ti runder, en nøglestørrelse på 192 bit har tolv runder, og en nøglestørrelse på 256 bit har fjorten runder. Lad os nu se på de operationer, der er involveret i processen med at konvertere plaintext-data til ciphertext. 

1. Nøgleudvidelse og AddRoundKey

I denne operation bruger AES Rijndael Key Schedule til at producere nye 128-bit runde nøgler (subnøgle) fra den primære hemmelige nøgle. Det vil sige, det involverer brugen af den oprindelige hemmelige nøgle til at skabe en serie af nøgler for hver runde af krypteringsoperationen. I AddRoundKey operationen blandes hver byte af den aktuelle data tilstand med en byte af den aktuelle rundenøgle ved hjælp af en bitwise XOR operation. 

2. SubBytes (erstat bytes)

I denne operation køres 16-byte blokken gennem en Rijndael substitutionsboks (S-Box) for at give en alternativ værdi for hver byte. Hver byte erstattes i henhold til regler foreskrevet af de foruddefinerede Rijndael S-Boxes. S-boksen tager en værdi og erstatter den med en anden værdi. Processen er meget mere kompliceret, men den gør det næsten umuligt at bryde AES-cifferet med de databehandlingsressourcer, der findes i verden.  

3. ShiftRows

ShiftRows-operationen skifter alle rækker i en 16-byte blok undtagen den første. Det er lettere at forstå sammenlignet med SubBytes-operationen. Den første række ændrer sig ikke og forbliver den samme. Den anden række flyttes til venstre med et byte, den tredje række flyttes til venstre med to bytes, og den fjerde række flyttes til venstre med tre bytes. 

4. MixColumns

Denne operation transformerer hver kolonne i 16-byte blokken lineært. På grund af hvor kompliceret denne operation kan være, vil vi ikke dvæle for meget ved den. Ved at bruge matrixmultiplikation og bitvis XOR addition, ganger denne operation hver kolonne med en foruddefineret 4 x 4 matrix, hvilket resulterer i en ny kolonne og blok. 

Rækkefølge af operationer

Alle data, som AES krypterer, skal passere gennem hver af de ovenstående operationer. Disse operationer gentages flere gange afhængigt af antallet af runder, der kræves. En 128-bit nøgle kræver ti runder, en 192-bit nøgle kræver tolv runder, og en 256-bit nøgle kræver fjorten runder. Nedenfor vil vi se på den rækkefølge, hvori disse operationer udføres for at kryptere data. 

1. Nøgleudvidelse

2. TilføjRunde

3. De følgende operationer vil fortsætte i 9, 11 eller 13 runder i nedenstående rækkefølge:

SubBytes

ShiftRows

MixColumns

AddRound

4. Følgende operationer finder sted i den sidste runde (10., 12. eller 14. afhængigt af den hemmelige nøgles længde): 

SubBytes

ShiftRows

AddRound

Dekryptering af AES-kryptering

Vi har set, hvordan AES krypterer data, men hvordan dekrypterer det data? Dekrypteringsprocessen er simpel. Ved at omvende alle trinene, der er involveret i krypteringsprocessen, vil data blive dekrypteret. Lad os se på, hvordan processen ville være, hvis vi dekrypterede data. 

1. De følgende operationer finder sted i den sidste runde (10., 12. eller 14. afhængigt af den hemmelige nøgles længde):

Omvendt AddRound

Inverse ShiftRows

Inverse SubBytes

2. De følgende operationer vil fortsætte i 9, 11, eller 13 runder i nedenstående rækkefølge:

Omvendt AddRound

Inverse MixColumns

Inverse ShiftRows

Inverse SubBytes

Omvendt AddRound

Har AES-kryptering Sikkerhedsproblemer?

Selvom der ikke har været nogen registrerede succesfulde angreb på AES-kryptering, kan forkert implementering føre til, at hackere opdager en sårbarhed og udnytter den. Da kryptografer altid leder efter sårbarheder i AES, har der været nogle få succesfulde teoretiske og sidekanalsangreb. Lad os se på nogle af dem.

1. Kendt-Nøgle Adskillelsesangreb

I 2009 var et forsøg på at knække 8-runde versionen af AES-128 med et kendt-nøgle adskillelsesangreb succesfuldt. Da AES-128 har ti runder af kryptering, er det stadig uigennemtrængeligt. Desuden skal en angriber kende krypteringsnøglen, før det kan fungere, hvilket er yderst usandsynligt. 

2. Side-Channel Angreb

Side-channel angreb vil kun fungere, hvis nogen ikke implementerer AES-kryptering korrekt, fordi det afhænger af, at et system lækker information. Angriberen lægger mærke til datalækager som elektromagnetisk information, strømforbrug, timing information osv., for at samle information fra algoritmen. AES er ikke helt immun over for denne type angreb.

3. Andre Angreb

Andre angreb, som kryptografer har forsøgt at bruge til at bryde AES-kryptering, inkluderer nøglegenoprettelsesangreb og relaterede-nøgleangreb. I begge tilfælde rettes angrebet mod krypteringsnøglen. I et nøglegenoprettelsesangreb skal angriberen have mindst et par af krypterede og dekrypterede beskeder. I et relateret-nøgleangreb skal angriberen kende forholdet mellem to forskellige nøgler. Disse angreb virker kun på systemer, der implementerer AES forkert, og udgør ikke væsentlige trusler.

Konklusion

Den primære årsag til, at sikkerhedsagenturer og top VPN-tjenester bruger AES-kryptering, er på grund af dens immunitet over for angreb. Udover at være praktisk talt umulig at bryde, er Advanced Encryption Standard hurtig, alsidig og let at implementere. Sammenlignet med andre krypteringstyper som DES, bruger den også mindre hukommelse. Du kan også kombinere den med andre sikkerhedsprotokoller for at sikre et højt sikkerhedsniveau.