Advanced Encryption Standard (AES) är en specifikation för kryptering av elektronisk data som etablerades av U.S. National Institute of Standards and Technology (NIST) 2001. AES används flitigt idag eftersom det är mycket starkare än DES och trippel DES trots att det är svårare att genomföra.
Punkter att komma ihåg
- AES är ett blockchiffer.
- Nyckelstorleken kan vara 128/192/256 bitar.
- Krypterar data i block om 128 bitar vardera.
Det betyder att den tar 128 bitar som indata och matar ut 128 bitar krypterad chiffertext som utdata. AES förlitar sig på substitutions-permutationsnätverksprincipen vilket innebär att det utförs med hjälp av en serie länkade operationer som involverar ersättning och blandning av indata.
spärrade nummer
Arbete med chiffer:
AES utför operationer på byte av data snarare än i bitar. Eftersom blockstorleken är 128 bitar, bearbetar chiffern 128 bitar (eller 16 byte) av indata åt gången.
Antalet omgångar beror på nyckellängden enligt följande:
- 128 bitars nyckel – 10 omgångar
- 192 bitars nyckel – 12 omgångar
- 256 bitars nyckel – 14 omgångar
Skapande av runda nycklar:
En Key Schedule-algoritm används för att beräkna alla runda nycklar från nyckeln. Så den initiala nyckeln används för att skapa många olika runda nycklar som kommer att användas i motsvarande omgång av krypteringen.

Kryptering:
AES betraktar varje block som ett 16 byte (4 byte x 4 byte = 128 ) rutnät i ett kolumnhuvudarrangemang.
[ b0 | b4 | b8 | b12 | | b1 | b5 | b9 | b13 | | b2 | b6 | b10| b14 | | b3 | b7 | b11| b15 ]>
Varje omgång består av 4 steg:
- SubByte
- ShiftRows
- Blanda kolumner
- Lägg till rund nyckel
Den sista omgången har inte MixColumns-omgången.
SubBytes gör substitutionen och ShiftRows och MixColumns utför permutationen i algoritmen.
SubByte:
Detta steg implementerar substitutionen.
I detta steg ersätts varje byte med en annan byte. Det utförs med hjälp av en uppslagstabell även kallad S-box. Denna substitution görs på ett sätt så att en byte aldrig ersätts av sig själv och inte heller ersätts med en annan byte som är ett komplement till den aktuella byten. Resultatet av detta steg är en 16 byte (4 x 4) matris som tidigare.
De nästa två stegen implementerar permutationen.
ShiftRows:
Det här steget är precis som det låter. Varje rad flyttas ett visst antal gånger.
- Den första raden är inte förskjuten
- Den andra raden flyttas en gång åt vänster.
- Den tredje raden flyttas två gånger åt vänster.
- Den fjärde raden flyttas tre gånger åt vänster.
(En vänster cirkulär växling utförs.)
[ b0 | b1 | b2 | b3 ] [ b0 | b1 | b2 | b3 ] | b4 | b5 | b6 | b7 | ->| b5 | b6 | b7 | b4 | | b8 | b9 | b10 | b11 | | b10 | b11 | b8 | b9 | [ b12 | b13 | b14 | b15 ] [ b15 | b12 | b13 | b14 ]>
Blanda kolumner:
Detta steg är i grunden en matrismultiplikation. Varje kolumn multipliceras med en specifik matris och därmed ändras positionen för varje byte i kolumnen som ett resultat.
Detta steg hoppas över i den sista omgången.
[ c0 ] [ 2 3 1 1 ] [ b0 ] | c1 | = | 1 2 3 1 | | b1 | | c2 | | 1 1 2 3 | | b2 | [ c3 ] [ 3 1 1 2 ] [ b3 ]>
Lägg till runda nycklar:
Nu är den resulterande utsignalen från föregående steg XOR-ed med motsvarande runda tangent. Här betraktas de 16 byten inte som ett rutnät utan bara som 128 bitar av data.

Efter alla dessa omgångar ges 128 bitar av krypterad data tillbaka som utdata. Denna process upprepas tills all data som ska krypteras genomgår denna process.
metod delsträng java
Dekryptering:
Etappen i rundorna kan enkelt ångras eftersom dessa steg har en motsats till den som när de utförs återställer ändringarna. Varje 128 block går igenom de 10,12 eller 14 omgångarna beroende på nyckelstorleken.
Stadierna för varje omgång i dekryptering är som följer:
- Lägg till rund nyckel
- Inversa MixColumns
- ShiftRows
- Inverterad subbyte
Dekrypteringsprocessen är krypteringsprocessen som görs omvänt så jag kommer att förklara stegen med anmärkningsvärda skillnader.
Invers mixkolumner:
Detta steg liknar MixColumns-steget i kryptering, men skiljer sig i matrisen som används för att utföra operationen.
[ b0 ] [ 14 11 13 9 ] [ c0 ] | b1 | = | 9 14 11 13 | | c1 | | b2 | | 13 9 14 11 | | c2 | [ b3 ] [ 11 13 9 14 ] [ c3 ]>
Omvända subbytes:
Invers S-box används som en uppslagstabell och med vilken byte ersätts under dekryptering.
Applikationer:
AES används ofta i många applikationer som kräver säker datalagring och överföring. Några vanliga användningsfall inkluderar:
- Trådlös säkerhet: AES används för att säkra trådlösa nätverk, såsom Wi-Fi-nätverk, för att säkerställa datakonfidentialitet och förhindra obehörig åtkomst. Databaskryptering: AES kan användas för att kryptera känslig data som lagras i databaser. Detta hjälper till att skydda personlig information, finansiella register och andra konfidentiella uppgifter från obehörig åtkomst i händelse av dataintrång. Säker kommunikation: AES används ofta i protokoll som internetkommunikation, e-post, snabbmeddelanden och röst-/videosamtal. Det säkerställer att data förblir konfidentiella. Datalagring: AES används för att kryptera känslig data som lagras på hårddiskar, USB-enheter och andra lagringsmedier, vilket skyddar den från obehörig åtkomst i händelse av förlust eller stöld. Virtual Private Networks (VPN): AES används ofta i VPN-protokoll för att säkra kommunikationen mellan en användares enhet och en fjärrserver. Det säkerställer att data som skickas och tas emot via VPN förblir privat och inte kan dechiffreras av avlyssnare. Säker lagring av lösenord: AES-kryptering används ofta för att lagra lösenord säkert. Istället för att lagra klartextlösenord lagras den krypterade versionen. Detta lägger till ett extra lager av säkerhet och skyddar användaruppgifter i händelse av obehörig åtkomst till lagringen. Fil- och diskkryptering: AES används för att kryptera filer och mappar på datorer, externa lagringsenheter och molnlagring. Det skyddar känslig data som lagras på enheter eller under dataöverföring för att förhindra obehörig åtkomst.
Sammanfattning:
AES-instruktionsuppsättningen är nu integrerad i CPU:n (erbjuder en kapacitet på flera GB/s) för att förbättra hastigheten och säkerheten för applikationer som använder AES för kryptering och dekryptering. Även om det har gått 20 år sedan introduktionen har vi misslyckats med att bryta AES-algoritmen eftersom den är omöjlig även med den nuvarande tekniken. Hittills är den enda sårbarheten kvar i implementeringen av algoritmen.