Vad är AES-kryptering, exempel på hur Advanced Encryption Standard fungerar

By rik

Om du någonsin funderat över hur information skyddas på internet, särskilt med tanke på de ständiga försöken från illasinnade aktörer att bryta sig in i datasystem, är kryptografi ett av de viktigaste svaren på den frågan.

Som du kanske vet är kryptografi en avgörande metod för att skydda information och kommunikation, men det betyder inte att den är enkel. Faktum är att det är en teknik som ständigt utvecklas för att säkerställa att de underliggande standarderna håller högsta kvalitet.

Ett exempel på en sådan standard är AES, en förkortning du troligen stött på, speciellt om du ofta använder kommunikationsappar som WhatsApp, Signal eller Telegram, eller VPN-programvara. I den här artikeln kommer vi att undersöka AES närmare och förklara hur det fungerar.

Vad är AES?

AES, som står för Advanced Encryption Standard, är en välkänd krypteringsmetod som länge använts för att skydda data från obehörig åtkomst.

Det som gör AES-kryptering så populär är dess snabbhet, säkerhet och flexibilitet. Den kan användas i en mängd olika produkter, från vardagliga appar som WhatsApp och Signal till militära säkerhetssystem och till och med inbyggd i hårdvara.

Hur kryptering fungerar

Du känner antagligen till hur kryptering fungerar. Om inte, här är en kort påminnelse: kryptering omvandlar vanlig text till en kodad form, vilket gör att den ser ut som en slumpmässig serie tecken. AES är en symmetrisk krypteringsform, vilket innebär att samma nyckel används för både kryptering och dekryptering.

Denna krypteringsstandard använder en substitution-permutationsnätverksalgoritm (SPN-algoritm) som tillämpar flera krypteringsrundor för att skydda data. De många rundorna gör AES praktiskt taget ogenomträngligt.

AES är inte bara det första, utan också det enda offentligt tillgängliga chiffret som godkänts av NSA (National Security Agency) för att skydda topphemlig information. Ursprungligen kallades standarden Rijndael efter dess två utvecklare, Vincent Rijmen och Joan Daemen från Belgien.

AES olika nyckellängder

AES innefattar tre blockchiffer, och varje blockchiffer har olika antal möjliga nyckelkombinationer, enligt följande:

AES-128: 128-bitars nyckellängd = 3,4 * 1038
AES-192: 192-bitars nyckellängd = 6,2 * 1057
AES-256: 256-bitars nyckellängd = 1,1 * 1077

Även om det finns tre blockchiffer, krypterar och dekrypterar alla data i 128-bitars block, men använder olika nyckellängder (128, 192 och 256 bitar). Även om nycklarna kan variera i längd, är blockstorleken alltid densamma (128 bitar eller 16 byte).

Användare har ifrågasatt varför flera nyckellängder behövs. Vissa undrar om det är nödvändigt, med tanke på att 256-bitarsnyckeln troligen är den säkraste.

Trots att 256-bitars AES-nyckeln är den starkaste och kallas ”militärklass”, används den inte alltid som standard. Anledningen är att resurser inte alltid är tillgängliga.

AES-128 vs AES-256

Ju större en nyckel är, desto mer resurser förbrukar den. Ett mindre kraftfullt system använder troligen 128-bitars AES-nycklar istället för 256-bitarsalternativet. Att använda 256-bitars AES-kryptering på din telefon kan till exempel tömma batteriet snabbare än 128-bitarsversionen av samma standard.

256-bitars AES-nycklar är betydligt svårare att bryta än 128-bitars. Men även med enorm datorkraft är 128-bitars AES-nycklar i princip omöjliga att knäcka. Därför kan det vara ett bättre val att använda 128-bitarsversionen istället för 256-bitarsnycklar om du är bekymrad över strömförbrukning eller latens, särskilt på mobila enheter som smartphones.

De tekniska framstegen har gjort att skillnaderna i datorkraft och batteritid mellan AES-256 och AES-128 är små. Detta har gjort 256-bitars AES till det populäraste valet, då de flesta vill ha maximal säkerhet.

Fördelarna med att använda AES

AES krypteringsmetoder är snabba och lätta att förstå, vilket gör AES till ett populärt val inom många områden. AES är inte bara snabbt och säkert, utan också enkelt att implementera, vilket bidrar till dess popularitet.

Den kan också dekryptera skyddad data lika snabbt som den krypterar den. Dessutom använder den mindre minne och datorkraft än andra populära krypteringsstandarder som DES, vilket ger den en fördel.

AES är flexibelt nog att kunna kombineras med andra säkerhetsprotokoll som TKIP, WPA2, WEP, och andra krypteringstyper som SSL.

Här är några av de viktigaste fördelarna med att välja AES framför andra krypteringsstandarder:

  • Kan implementeras i både hårdvara och mjukvara
  • Tre nyckellängder ger flexibilitet gällande säkerhet och hastighet
  • Alla tre nyckeltyperna är tillräckligt långa för att göra AES till ett praktiskt taget omöjligt mål för brute-force
  • Ingen kryptografisk attack har hittills visat sig fungera mot AES
  • Används överallt, eftersom den amerikanska regeringen har definierat det som standard
  • Lätt att implementera oavsett destination (hårdvaruimplementering sägs vara enklare än mjukvara)
  • Använder inte lika mycket minne som andra krypteringstyper (t.ex. DES)
  • Lätt att kombinera med andra säkerhetsprotokoll och krypteringstyper

Vanliga användningsområden för AES

Även om vi nämnt att AES används brett, finns det vissa områden där du är mer sannolik att stöta på det. Här är några exempel:

VPN
VPN-tjänster omdirigerar din trafik och krypterar den så att den inte kan avlyssnas. Trafiken måste också dekrypteras vid sin destination, vilket gör en krypteringsstandard nödvändig. AES-256 är standard hos många VPN-leverantörer, inklusive NordVPN, Surfshark och ExpressVPN.

Lösenordshanterare
Lösenordshanterare lagrar dina lösenord skyddade med ett enda lösenord via kryptering. Många lösenordshanteringsprogramvaror använder AES som sin krypteringsstandard, eftersom den är enkel att implementera, snabb och säker.

Wi-Fi-nätverk
Utan kryptering kan angripare fånga okrypterade datapaket med en Wi-Fi-adapter och övervaka din nätverksaktivitet. AES-kryptering, ofta i kombination med säkerhetsstandarder som WPA2, hindrar detta.

Webbläsare
Webbläsare krypterar användarnas anslutningar för att skydda dem mot cyberhot som MITM-attacker, spoofing och trafikövervakning.

Diskkryptering
Även om det oftast används på bärbara enheter som smartphones och surfplattor, är diskkryptering inte ovanligt om du vill öka integritet och säkerhet. AES är en populär metod för att kryptera och dekryptera diskinnehåll.

Programvara för filkomprimering
Filkomprimeringsprogram som WinRar, WinZip och 7z använder AES som sin standardkrypteringsmetod för att förhindra dataläckor när du hanterar filer.

Kommunikationsappar
WhatsApp, Signal, Telegram, Snapchat, Messenger och andra appar använder AES-kryptering för att säkerställa fullständig integritet vid överföring av bilder, videor, dokument eller textmeddelanden.

Programmeringsspråksbibliotek
Bibliotek för olika programmeringsspråk, som C++, Java och Python, använder AES-kryptering för att skydda data och projekt mot obehörig åtkomst.

Operativsystemkomponenter
För att öka säkerheten har vissa operativsystem inbyggt AES-kryptering i flera av sina komponenter.

Hur fungerar AES?

För att fullt ut kunna dra nytta av en teknik är det bra att veta hur den fungerar. Låt oss titta närmare på hur AES fungerar innan du använder den.

1. Data delas upp i block

AES är ett blockchiffer som krypterar data i block, istället för bit för bit.

Det första steget i AES-kryptering är att dela upp data i block. Varje block innehåller en 4×4 kolumn med 128 bitar, eller 16 byte. Eftersom en byte består av 8 bitar är storleken på ett block 16 x 8 = 128 bitar.

Om du till exempel vill kryptera ”wdzwdz.com” med AES, kommer den första delen av processen att separera datan i block. Eftersom ett block kan innehålla 16 tecken kommer det första blocket inte att inkludera ”m”. ”m” skickas till nästa block.

Efter att ha tillämpat AES på ”wdzwdz.com” kommer det första blocket se ut så här:

a
c
e
s
d
t
t
.
d
i
i
c
i
v
s
o

2. Nyckelexpansion

Nyckelexpansionsprocessen är mer komplicerad. Det innebär att man tar en startnyckel och med Rijndaels nyckelgenereringsschema skapar en serie ytterligare nycklar. Dessa nycklar används sedan för varje enskild krypteringsomgång.

Om du till exempel använder nyckeln ”AESencryption12” på texten ovan (wdzwdz.com), kommer du att få en sträng med slumpmässiga tecken.

A
e
y
o
E
n
s
n
S
c
t
1
r
i
2

Rijndaels nyckelgenereringsschema använder specifika processer för att kryptera varje tecken i startfrasen.

Resultatet kan se ut så här:

7e
04
0b
20
52
6c
1c
56
a7
bf
8e
84
30
03
3d
20

Även om det ser ut som slumpmässiga siffror är det precis vad hela krypteringsprocessen handlar om: att dölja data bakom en kod, vilket gör den otillgänglig för dem som inte känner till koden.

Detta är inte slutet, eftersom nycklarna som genererades nyss kommer att behövas för varje krypteringsomgång.

3. Lägga till en rund nyckel

Det här är den första krypteringsomgången. Startnyckeln (”AES encryption12”) läggs till i meddelandeblocket (”wdzwdz.com”), som i exemplet nedan. Detta kanske inte ger någon mening till en början.

a
c
e
s
d
t
t
.
d
i
i
c
i
v
s
o

OCH

A
e
y
o
E
n
s
n
S
c
t
1
r
i
2

Det kan verka omöjligt att lägga ihop två textblock, men kom ihåg att detta endast är en grafisk representation av krypteringsprocessen. I verkligheten använder AES binär kod, vilket gör detta möjligt.

Denna operation (att lägga till två textblock) görs med hjälp av ett XOR-chiffer, och resultatet kan ses nedan:

32
d5
5c
d9
f3
24
a8
46
7e
1c
37
f3
82
5e
3f
03

4. Bytebyte

För att öka skyddet av datan kommer varje byte i blocket att ersättas med ett förutbestämt värde enligt en tabell, kallad Rijndael S-box. Du kan se tabellen nedan:

00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
00 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab
76 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72
c0 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31
15 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2
75 40 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f
84 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58
cf d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f
a8 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3
d2 80 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d
19 73 90 60 81 4f dc 22 2a 90 88 46 ee b8 14 de
5e 0b db e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91
95 e4 79 b0 e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea
65 7a ae 08 ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f
4b bd 8b 8a 70 3e b5 66 48 03 f6 0e 61 35 57 b9
86 c1 1d 9e e0 e1 f8 98 11 69 d9 8e 94 9b 1e 87
e9 ce 55 28 df f0 8c a1 89 0d bf e6 42 68 41 99
2d 0f b0 54 bb 16

Du kan använda tabellen för att kontrollera vilket värde de ersatta byten kommer att ha. Till exempel kommer c9 att bli dd, 26 blir f7 och ff blir 16.

Nu när vi har tabellen, låt oss se hur det nya blocket som genererades från den första krypteringsomgången kommer att förändras efter byten enligt Rijndael S-box:

23
03
4a
35
0d
36
c2
5a
f3
9c
9a
0d
13
58
75
7b

Vi har faktiskt ersatt blocken manuellt med Rijndael S-box tabellen, så att du kan dubbelkolla resultaten.

5. Radförskjutning

I det här steget av AES-krypteringen flyttas raderna. Första raden lämnas orörd, medan de nästa tre skiftas olika:

  • Andra raden skiftas åt vänster med en byte (cell).
  • Tredje raden skiftas åt vänster med två byte (celler).
  • Fjärde raden skiftas åt vänster med tre byte (celler).
23
03
4a
35
36
c2
5a
0d
9a
0d
f3
9c
7b
13
58
75

6. Kolonnblandning

Detta steg innebär komplexa matematiska formler som tillämpas på blocket, vilket leder till ett helt annat block i slutet av proceduren.

Varje kolumn multipliceras med en fördefinierad matris. Resultatet är ett nytt kodblock som används för att öka chiffrets styrka.

I slutet av kolonnblandningsprocessen kan ett kodblock se ut så här:

43
4d
33
85
c8
37
6d
8d
9a
33
85
9c
42
68
41
99

7. Lägg till extra rund nyckel

Nu behövs nyckeln från nyckelexpansionssteget. Den har använts en gång för att förvränga datan, och nu behövs ytterligare en förvrängning.

Vi tar datablocket efter kolonnblandningssteget och lägger till en rund nyckel till det, som i steg 3:

43
4d
33
85
c8
37
6d
8d
9a
33
85
9c
42
68
41
99

OCH

32
d5
5c
d9
f3
24
a8
46
7e
1c
37
f3
82
5e
3f
03

Detta steg genererar ytterligare ett datablock. Krypteringsprocessen är fortfarande långt ifrån över. Datablocket kommer att genomgå flera modifieringar.

8. Fler steg

Dessa modifieringar inkluderar allt som gjorts hittills: flytta rader, bytebyte, lägga till runda nycklar och blanda kolumner.

Dessa omgångar är identiska och antalet gånger de upprepas beror på AES-nyckelns längd:

  • AES-128 använder 9 omgångar
  • AES-192 använder 11 omgångar
  • AES-256 använder 13 omgångar

AES-256 repeterar stegen 13 gånger, vilket gör det mycket svårt att knäcka.

Efter 9, 11 eller 13 krypteringsomgångar, finns det ytterligare en omgång där algoritmen bara ersätter bytes, flyttar rader och lägger till en rund nyckel (kolonnblandning hoppas över).

Anledningen till att mixning av kolumner tas bort är att det är överflödigt vid det här laget.

Efter krypteringsprocessen kommer indata (den vanliga texten) att ha gått igenom 10, 12 eller 14 omgångar, beroende på nyckellängden.

För att sammanfatta så går informationen som matas in i AES-krypteringsverktygen igenom följande processer i denna ordning:

  • Blockindelning
  • Nyckelexpansion
  • Lägger till en rund nyckel
  • Bytebyte
  • Radförskjutning
  • Kolonnblandning
  • Lägger till en rund nyckel
  • Steg 4-7 upprepas 9, 11 eller 13 gånger beroende på nyckellängden
  • Bytebyte
  • Radförskjutning
  • Lägger till en rund nyckel

Efter denna komplexa process kommer wdzwdz.com, texten som vi har försökt kryptera, se ut som koden nedan om den krypteras med en 128-bitars nyckel och ”AESencryption12” som hemlig nyckel:

RcadDaLDuP5fHtor3/Rfnq5EijEfhP02pvrlGkGr1Gc=

Detta är hela syftet med kryptering: att få vanlig text att se ut som nonsens.

Hur man dekrypterar AES

AES och hela krypteringsprocessen kan verka komplicerat på grund av alla steg och upprepningar.

AES-dekryptering följer samma steg som krypteringsprocessen, men i omvänd ordning.

Om vi vill gå tillbaka till ’wdzwdz.com’ från RcadDaLDuP5fHtor3/Rfnq5EijEfhP02pvrlGkGr1Gc= måste vi spåra tillbaka alla stegen:

  • Omvänt lägga till rund nyckel
  • Omvänd radförskjutning
  • Omvänd bytesubstitution
  • Omvänt lägga till rund nyckel
  • Omvänd kolonnblandning
  • Omvänd radförskjutning
  • Omvänd bytesubstitution
  • Upprepa steg 4-7 i 9, 11 eller 13 gånger beroende på nyckellängd
  • Omvänd lägg till rund nyckel

Efter att ha utfört alla stegen ovan bör vi få vårt ursprungliga textfragment, ’wdzwdz.com’.

Är AES-kryptering säker?

En viktig fråga för alla krypteringsstandarder är: ger de tillräcklig säkerhet? Är AES-kryptering säker?

Även om det finns många steg som förvränger den ursprungliga texten, har angripare hittat sätt att kringgå dessa säkerhetsåtgärder.

Angripare letar inte efter den högsta muren i ett system, utan efter sprickor i säkerheten som kan utnyttjas. Angripare försöker hitta sårbarheter i AES-krypteringen.

Forskare söker ständigt efter sårbarheter i AES-krypteringsprocessen för att förhindra potentiella attacker.

Hittills har forskare identifierat vissa attacker som kan äventyra AES. De flesta av dessa är teoretiska eller sidokanalsattacker eller försök med kända säkerhetsnycklar.

1. Känd-nyckel särskiljande attack

En attack som utnyttjar en känd nyckel har designats och observerats. Den introducerades 2007 av Vincent Rijmen och Lars Knudsen.

Den här attacken hade två brister som gör att den är osannolik i verkliga scenarier: den använde en känd nyckel och testades mot en version med sju omgångar av AES-128.

Eftersom nyckeln oftast är okänd för angripare och AES-128 har 10 omgångar med kryptering, är attacken osannolik.

Många tjänster som erbjuder AES-128 har även stöd för AES-256. Därför kan du enkelt förstärka din kryptering om du är orolig för att bli utsatt för en attack med känd nyckel.

2. Relaterad nyckelattack

Relaterade nyckelattacker är en form av kryptoanalys där angripare analyserar hur ett chiffer fungerar med olika nycklar. Angripare känner inte till nyckelvärdena, men nycklarna har en matematisk relation.

Ett exempel är att angriparen vet att de första 16 bitarna i nycklarna alltid är desamma, men vet inte vad bitarna är.

Även om relaterade nyckelattacker kan fungera, är de inte ett problem i den verkliga världen. För att en sådan attack ska fungera måste en angripare övertala en kryptograf att kryptera data med hjälp av olika hemliga nycklar som har en matematisk relation och sedan dela hemligheten med angriparen.

Denna typ av attack visar att mänskliga misstag kan leda till sårbarheter i AES på grund av dålig implementering.

3. Sidokanalattack

Även om AES i princip är okränkbart, har det gjorts många försök att designa teoretiska attacker för att hitta sårbarheter i denna krypteringsstandard.

Tro