Cover
Empieza ahora gratis Symmetric_2_AES.pdf
Summary
# Introductie tot de Advanced Encryption Standard (AES)
De Advanced Encryption Standard (AES) is een symmetrische blokcijfer die in 2001 door het National Institute of Standards and Technology (NIST) werd gepubliceerd, met als doel DES te vervangen als de goedgekeurde standaard voor diverse toepassingen. Na een open competitie werd het Rijndael-algoritme, ontworpen door Vincent Rijmen en Joan Daemen, gekozen en benoemd tot AES. In vergelijking met publieke-sleutel ciphers zoals RSA, is de structuur van AES en de meeste symmetrische ciphers aanzienlijk complexer en minder eenvoudig uit te leggen [1](#page=1).
### 1.1 Oorsprong en keuze van AES
* **Vervanging van DES:** AES werd ontwikkeld om de verouderde Data Encryption Standard (DES) te vervangen, die ontoereikend werd geacht voor moderne beveiligingsbehoeften [1](#page=1).
* **Rijndael-algoritme:** Het algoritme dat uiteindelijk als AES werd geselecteerd, was Rijndael, een creatie van de Belgische cryptografen Vincent Rijmen en Joan Daemen [1](#page=1).
* **Open competitie:** De keuze voor Rijndael was het resultaat van een open, wereldwijde competitie georganiseerd door NIST [1](#page=1).
### 1.2 Symmetrische encryptie versus publieke-sleutel encryptie
* **Complexiteit:** Symmetrische ciphers zoals AES hebben over het algemeen een complexere interne structuur dan publieke-sleutel ciphers [1](#page=1).
* **Vereiste voorkennis:** Het begrijpen van de werking van AES vereist vaak voorkennis van concepten zoals Galois-velden, wat de complexiteit onderstreept [1](#page=1).
> **Tip:** De complexiteit van AES is een van de redenen waarom het belangrijk is om de onderliggende wiskundige principes, zoals die van Galois-velden, goed te begrijpen om de veiligheid en werking ervan volledig te kunnen doorgronden.
---
# Wiskundige grondslagen van AES: Eindige velden
Eindige velden, ook wel Galois-velden genoemd, zijn essentieel voor cryptografische algoritmen die deling vereisen, aangezien deling de aanwezigheid van multiplicatieve inversen impliceert [2](#page=2).
### 2.1 Het belang van eindige velden in cryptografie
Veel encryptiealgoritmen maken gebruik van rekenkundige bewerkingen op gehele getallen. Wanneer deling een van deze bewerkingen is, is het noodzakelijk om te werken binnen een veld, omdat elk niet-nul element een multiplicatieve inverse moet hebben. Voor efficiëntie is het wenselijk om te werken met gehele getallen die precies in een bepaald aantal bits passen, zonder verspilde bitpatronen. Dit betekent dat we willen werken met gehele getallen in het bereik van 0 tot $2^n - 1$, die in een $n$-bit woord passen. De set van deze gehele getallen, $Z_{2^n}$, met modulaire rekenkunde, vormt echter geen veld. Een voorbeeld hiervan is dat het getal 2 geen multiplicatieve inverse heeft in $Z_{2^n}$, wat betekent dat er geen geheel getal $b$ bestaat zodanig dat $2b \pmod{2^n} = 1$ [2](#page=2).
Een methode om een eindig veld met $2^n$ elementen te definiëren, is door middel van polynoomrekenkunde, en zo'n veld wordt aangeduid als GF($2^n$) [2](#page=2).
#### 2.1.1 Eigenschappen van eindige velden
Eindige velden, zoals GF($p$) of GF($p^n$), hebben specifieke operaties: optelling (+) en vermenigvuldiging (*). Ze voldoen aan de typische criteria van een veld, waaronder [2](#page=2):
* **Commutativiteit:**
* $a + b = b + a$ [2](#page=2).
* $a \ast b = b \ast a$ [2](#page=2).
* **Associativiteit:**
* $a + (b + c) = (a + b) + c$ [2](#page=2).
* $a \ast (b \ast c) = (a \ast b) \ast c$ [2](#page=2).
* **Identiteitselementen:**
* $a + 0 = a$ (additieve identiteit) [2](#page=2).
* $a \ast 1 = a$ (multiplicatieve identiteit) [2](#page=2).
* **Distributiviteit:**
* $a \ast (b + c) = (a \ast b) + (a \ast c)$ [2](#page=2).
* **Inverse elementen:**
* **Additieve inverse:** Voor elk element $a$ bestaat er een element $-a$ zodanig dat $a + (-a) = 0$ [2](#page=2).
* **Multiplicatieve inverse:** Voor elk niet-nul element $a$ bestaat er een element $a^{-1}$ zodanig dat $a \ast a^{-1} = 1$. Dit maakt deling mogelijk, aangezien $b / a$ equivalent is aan $b \ast a^{-1}$ [2](#page=2).
* **Regel van annulering:** Als $a \ast b = a \ast c$ en $a \neq 0$, dan geldt $b = c$ [2](#page=2).
### 2.2 Operaties binnen GF($2^8$) voor AES
In de Advanced Encryption Standard (AES) worden alle operaties uitgevoerd op bytes van 8 bits. AES opereert binnen het eindige veld GF($2^8$) [2](#page=2).
* **Optelling:** De optelling in GF($2^8$) is de bitwise XOR-operatie [2](#page=2).
* **Vermenigvuldiging:** De vermenigvuldiging is gebaseerd op de polynoomvermenigvuldiging modulo de polynoom $x^8 + x^4 + x^3 + x + 1$, met coëfficiënten in GF [2](#page=2).
* **Efficiënte vermenigvuldiging met $x$:** Vermenigvuldigen met $x$ is rekenkundig efficiënt. Het komt neer op een verschuiving naar links met één positie (waarbij een nul wordt toegevoegd). Als de hoogste graad coëfficiënt van het resultaat 1 is, wordt er een XOR uitgevoerd met een vaste constante $00011011$ (wat overeenkomt met de priem-polynoom) [2](#page=2).
> **Tip:** Het begrijpen van de specifieke definitie van de polynoomvermenigvuldiging is cruciaal voor het doorgronden van de interne werking van AES-transformaties zoals MixColumns.
* **Voorbeeld:** Laten we de vermenigvuldiging van de polynoom $A(x) = 10110010_2$ met $x$ in GF($2^8$) bekijken.
1. **Verschuif naar links:** $A(x) \ll 1 = 01100100_2$. De hoogste graad coëfficiënt was 1, dus er is een reductie nodig.
2. **Reductie:** De reductie polynoom is $P(x) = x^8 + x^4 + x^3 + x + 1$. Wanneer we $A(x) \ast x$ berekenen, wordt het resultaat $A(x) \ast x \pmod{P(x)}$. In dit geval, na het verschuiven, als de hoogste bit (bit 7) 1 was, moeten we de resulterende polynoom XORen met de representatie van $P(x)$ (zonder $x^8$ term, ofwel $x^4 + x^3 + x + 1$ in dit specifieke context van reductie na verschuiving). De constante $00011011_2$ vertegenwoordigt de polynoom $x^7 + x^3 + x^2 + x + 1$. De exacte bewerking is $ (A(x) \ll 1) \oplus (\text{constante indien hoogste bit is 1}) $ [2](#page=2).
In het geval van $A(x) = 10110010_2$, de hoogste bit is 1. Dus $A(x) \ast x \rightarrow 01100100_2 \oplus 00011011_2 = 01111111_2$.
Deze efficiëntie is een sleutelcomponent die bijdraagt aan de snelheid van het AES-algoritme.
---
# Structuur en parameters van het AES-algoritme
Dit gedeelte beschrijft de fundamentele structuur en de configuratieparameters van het Advanced Encryption Standard (AES)-algoritme, inclusief blokgrootte, sleutellengtes en het aantal rondes [3](#page=3).
### 3.1 Algemene structuur en parameters
AES is een symmetrische blokcijfer. Het verwerkt gegevens in vaste blokken en gebruikt dezelfde sleutel voor zowel encryptie als decryptie [6](#page=6).
#### 3.1.1 Blokgrootte en sleutellengtes
* **Blokgrootte**: AES werkt met een vaste blokgrootte van 128 bits. Dit komt overeen met 16 bytes. Dit blok wordt intern gerepresenteerd als een 4x4 matrix van bytes [3](#page=3) [4](#page=4).
* **Sleutellengtes**: AES ondersteunt drie verschillende sleutellengtes:
* 128 bits (16 bytes) [3](#page=3).
* 192 bits (24 bytes) [3](#page=3).
* 256 bits (32 bytes) [3](#page=3).
De specifieke variant wordt aangeduid met de sleutellengte, zoals AES-128, AES-192, of AES-256 [3](#page=3).
#### 3.1.2 Aantal rondes
Het aantal rondes dat het AES-algoritme uitvoert, is direct afhankelijk van de gekozen sleutellengte. Elke ronde bestaat uit een reeks transformaties die de gegevens transformeren [5](#page=5).
* Voor een 128-bit sleutel (16 bytes): 10 rondes [5](#page=5).
* Voor een 192-bit sleutel (24 bytes): 12 rondes [5](#page=5).
* Voor een 256-bit sleutel (32 bytes): 14 rondes [5](#page=5).
> **Tip**: Het aantal rondes is cruciaal voor de veiligheid van het algoritme. Meer rondes bieden over het algemeen een hogere mate van beveiliging door complexere transformaties [5](#page=5).
#### 3.1.3 De State matrix
De 128-bit inputblokken worden gekopieerd naar een interne variabele genaamd de `State` array. Deze `State` is een 4x4 matrix van bytes. De bytes worden geordend per kolom in de matrix. Deze `State` matrix wordt in elke ronde van het encryptie- of decryptieproces gemanipuleerd. Na de laatste transformatie wordt de `State` gekopieerd naar de output [4](#page=4).
> **Tip**: Visualiseer de `State` matrix als een raster van 16 cellen, waarbij elke cel een byte bevat. De bewerkingen in AES werken op dit raster, wat zorgt voor zowel diffusie als substitutie.
### 3.2 Sleuteluitbreiding en rondesleutels
Het AES-algoritme maakt gebruik van een sleuteluitbreidingsproces om meerdere "rondesleutels" te genereren uit de oorspronkelijke invoersleutel [4](#page=4) [7](#page=7).
* **Woordformaat**: Een "woord" in de context van AES is 4 bytes, wat overeenkomt met 32 bits [5](#page=5).
* **Sleuteluitbreiding**: De invoersleutel wordt uitgebreid tot een reeks van 44 woorden (32-bit woorden) voor een 128-bit sleutel [4](#page=4) [5](#page=5).
* **Aantal rondesleutels**: Voor `N` rondes zijn er `N+1` subkeys nodig. Dit komt doordat er een initiële `AddRoundKey` transformatie is vóór de eerste ronde (Round 0) en één `AddRoundKey` in elke van de `N` rondes. Elk van deze rondesleutels is 128 bits (16 bytes of 4 woorden) [5](#page=5) [6](#page=6).
* **Gebruik van rondesleutels**: Elke rondesleutel dient als input voor de `AddRoundKey` transformatie in de corresponderende ronde [6](#page=6) [7](#page=7).
### 3.3 De structuur van een ronde
AES-encryptie bestaat uit een initiële `AddRoundKey` fase, gevolgd door `N-1` volledige rondes, en eindigt met een laatste ronde die drie transformaties bevat [7](#page=7).
#### 3.3.1 Transformaties binnen een ronde
Elke volledige ronde (behalve de laatste) bestaat uit vier hoofdtansformaties [6](#page=6) [7](#page=7):
1. **SubBytes**: Een byte-voor-byte substitutie waarbij elke byte in de `State` matrix wordt vervangen door een andere byte volgens een vooraf gedefinieerde S-box. Dit zorgt voor non-lineariteit [7](#page=7).
2. **ShiftRows**: Een permutatiestap waarbij de rijen van de `State` matrix cyclisch worden verschoven. De eerste rij wordt niet verschoven, de tweede rij met één positie naar links, de derde rij met twee posities, en de vierde rij met drie posities. Dit zorgt voor diffusie over de kolommen [7](#page=7).
3. **MixColumns**: Een substitutie die lineaire combinaties van de bytes binnen elke kolom van de `State` matrix uitvoert, gebaseerd op rekenkunde over het eindige veld $GF(2^8)$. Dit zorgt voor diffusie over de rijen [7](#page=7).
4. **AddRoundKey**: Een simpele bitwise XOR operatie tussen de huidige `State` matrix en de rondesleutel voor die specifieke ronde. Dit is de enige stap die de sleutel gebruikt [7](#page=7).
> **Tip**: De `AddRoundKey` transformatie kan worden gezien als een vorm van Vernam-cijfer. De andere drie transformaties (SubBytes, ShiftRows, MixColumns) zorgen voor confusie en diffusie zonder de sleutel te gebruiken.
#### 3.3.2 Initiële en finale rondes
* **Initiële fase**: Het encryptieproces begint altijd met een `AddRoundKey` fase, beschouwd als Round 0 [6](#page=6) [7](#page=7).
* **Volledige rondes**: De negen daaropvolgende rondes (voor AES-128) bevatten de volledige reeks van SubBytes, ShiftRows, MixColumns, en AddRoundKey [7](#page=7).
* **Laatste ronde**: De allerlaatste ronde (de 10e ronde voor AES-128) bevat slechts drie transformaties: SubBytes, ShiftRows, en AddRoundKey. De MixColumns transformatie wordt in de laatste ronde weggelaten [6](#page=6) [8](#page=8).
#### 3.3.3 AES is geen Feistel cijfer
Een belangrijk structureel kenmerk van AES is dat het geen Feistel-structuur gebruikt. In een Feistel-cijfer wordt een deel van het blok gebruikt om het andere deel te modificeren, waarna de delen worden verwisseld. AES daarentegen verwerkt het gehele 128-bit blok als één matrix in elke ronde, met substituties en permutaties [7](#page=7).
#### 3.3.4 Reversibiliteit
Alle transformatiestappen in AES zijn reversibel [8](#page=8).
* Voor **SubBytes**, **ShiftRows**, en **MixColumns** worden inverse functies gebruikt in het decryptiealgoritme [8](#page=8).
* Voor **AddRoundKey** is de inverse operatie het opnieuw XOR-en van het resultaat met dezelfde rondesleutel [8](#page=8).
* Het decryptiealgoritme gebruikt de uitgebreide sleutel in omgekeerde volgorde van de encryptie. Vanwege de specifieke structuur van AES is het decryptiealgoritme echter niet identiek aan het encryptiealgoritme, hoewel het wel de oorspronkelijke plaintext correct herstelt. De afwezigheid van MixColumns in de laatste ronde van encryptie is essentieel voor de reversibiliteit van het algoritme [8](#page=8).
---
# De transformaties binnen de AES-rondes
Deze sectie beschrijft de vier hoofdtransformaties die de basis vormen van de AES-encryptie- en decryptierondes: SubBytes, ShiftRows, MixColumns en AddRoundKey, inclusief hun inverse varianten en de algehele structuur van de rondes [9](#page=9).
### 4.1 SubBytes transformatie
De SubBytes transformatie is een niet-lineaire substituutiestap die elk byte van de State matrix vervangt door een andere byte. Dit wordt bereikt met behulp van een vooraf gedefinieerde S-box, die een permutatie is van alle 256 mogelijke 8-bit waarden [9](#page=9).
#### 4.1.1 Werking van de S-box
De S-box is een 16x16 matrix. Om een byte te substitueren, worden de linker 4 bits van de input byte gebruikt als rij-index en de rechter 4 bits als kolom-index. De waarde op deze positie in de S-box is de output byte. Bijvoorbeeld, de hexadecimale waarde {95} correspondeert met rij 9, kolom 5, en de S-box geeft hiervoor de waarde {2A} [10](#page=10) [9](#page=9).
> **Tip:** De S-box is cruciaal voor de niet-lineariteit van AES en is ontworpen om cryptanalytische aanvallen te weerstaan [11](#page=11).
#### 4.1.2 Constructie van de S-box
De S-box wordt geconstrueerd in twee stappen [11](#page=11):
1. **Multiplicatieve inverse in GF(2^8):** Elke byte wordt vervangen door zijn multiplicatieve inverse in het eindige veld GF(2^8). De waarde {00} wordt aan zichzelf toegewezen [11](#page=11).
2. **Lineaire transformatie:** Een additionele affiene transformatie wordt toegepast. Dit gebeurt via een matrixvermenigvuldiging over GF(2^8) gevolgd door het optellen van een constante vector. De matrixvermenigvuldiging voor een byte `b = (b7, b6, b5, b4, b3, b2, b1, b0)` kan worden uitgedrukt als [11](#page=11):
$$
b' = A \cdot b + c
$$
waarbij $A$ de transformatiematrix is en $c$ de constante vector. De optellingen in deze berekening gebeuren via XOR [11](#page=11).
#### 4.1.3 Inverse SubBytes transformatie
De inverse SubBytes transformatie, `InvSubBytes`, gebruikt de inverse S-box om de transformatie om te keren [9](#page=9).
### 4.2 ShiftRows transformatie
De ShiftRows transformatie permutatieert de bytes binnen de State matrix door de rijen cyclisch te verschuiven. De State matrix wordt beschouwd als een array van vier 4-byte kolommen [13](#page=13).
* De eerste rij van de State matrix blijft onveranderd [13](#page=13).
* De tweede rij wordt 1 byte cyclisch naar links verschoven [13](#page=13).
* De derde rij wordt 2 bytes cyclisch naar links verschoven [13](#page=13).
* De vierde rij wordt 3 bytes cyclisch naar links verschoven [13](#page=13).
> **Tip:** Deze transformatie zorgt ervoor dat bytes van dezelfde kolom zich na de verschuiving in verschillende kolommen bevinden, wat bijdraagt aan de diffusie [13](#page=13).
#### 4.2.1 Inverse ShiftRows transformatie
De `InvShiftRows` transformatie voert de cyclische verschuivingen in de tegenovergestelde richting uit. De tweede rij krijgt een 1-byte cyclische rechter verschuiving, de derde rij een 2-byte rechter verschuiving, en de vierde rij een 3-byte rechter verschuiving [13](#page=13).
### 4.3 MixColumns transformatie
De MixColumns transformatie bewerkt elke kolom van de State matrix onafhankelijk. Elke byte in een kolom wordt getransformeerd naar een nieuwe waarde die een functie is van alle vier de bytes in die kolom [14](#page=14).
De transformatie wordt gedefinieerd door een matrixvermenigvuldiging [14](#page=14):
$$
\begin{bmatrix} s'_0 \\ s'_1 \\ s'_2 \\ s'_3 \end{bmatrix}_{c} = \begin{bmatrix} 02 & 03 & 01 & 01 \\ 01 & 02 & 03 & 01 \\ 01 & 01 & 02 & 03 \\ 03 & 01 & 01 & 02 \end{bmatrix} \begin{bmatrix} s_0 \\ s_1 \\ s_2 \\ s_3 \end{bmatrix}_{c}
$$
waarbij de bewerkingen (vermenigvuldiging en optelling) plaatsvinden in GF(2^8) [14](#page=14).
> **Tip:** De keuze van de coëfficiënten ({01}, {02}, {03}) is efficiënt te implementeren met behulp van links-schuifoperaties en XOR in GF(2^8) [15](#page=15).
#### 4.3.1 Inverse MixColumns transformatie
De `InvMixColumns` transformatie keert de MixColumns operatie om, maar is complexer te implementeren [15](#page=15).
### 4.4 AddRoundKey transformatie
De AddRoundKey transformatie voegt de 128-bit ronde sleutel bit-per-bit toe aan de 128 bits van de State matrix door middel van een XOR-operatie. Deze operatie wordt conceptueel gezien als een kolomwise bewerking tussen de vier bytes van een State kolom en één woord van de ronde sleutel [16](#page=16).
> **Tip:** De complexiteit van de ronde sleutel expansie, gecombineerd met de andere transformaties, zorgt voor de algehele beveiliging [16](#page=16).
### 4.5 Structuur van de encryptie- en decryptierondes
De AES-encryptie bestaat uit een initiële AddRoundKey stap gevolgd door 10 rondes (voor 128-bit sleutels). Elke ronde bevat de vier transformaties in de volgende volgorde [17](#page=17):
1. SubBytes [9](#page=9).
2. ShiftRows [13](#page=13).
3. MixColumns [14](#page=14).
4. AddRoundKey [16](#page=16).
> **Tip:** De combinatie van de rij-gebaseerde ShiftRows en de kolom-gebaseerde transformaties zorgt voor een goede diffusie binnen elke ronde [17](#page=17).
#### 4.5.1 Equivalentie van de decryptie
De standaard AES-decryptie ronde heeft een iets andere structuur: InvShiftRows, InvSubBytes, AddRoundKey, InvMixColumns. Echter, er bestaat een equivalente decryptie-structuur die identiek is aan de encryptie-structuur, met de inverse transformaties en een aangepaste sleutel expansie. De transformaties InvShiftRows en InvSubBytes commuteren, waardoor ze omgewisseld kunnen worden. AddRoundKey en InvMixColumns opereren lineair op kolommen en kunnen ook omgewisseld worden [22](#page=22) [23](#page=23).
---
## Veelgemaakte fouten om te vermijden
- Bestudeer alle onderwerpen grondig voor examens
- Let op formules en belangrijke definities
- Oefen met de voorbeelden in elke sectie
- Memoriseer niet zonder de onderliggende concepten te begrijpen
Glossary
| Term | Definition |
|------|------------|
| Advanced Encryption Standard (AES) | Een symmetrische blokcijferstandaard gepubliceerd door NIST in 2001, ontworpen ter vervanging van DES. Het is gebaseerd op het Rijndael-algoritme. |
| Symmetrische encryptie | Een cryptografisch systeem waarbij dezelfde sleutel wordt gebruikt voor zowel encryptie als decryptie van gegevens. Dit staat tegenover asymmetrische encryptie die verschillende sleutels gebruikt. |
| Blokcijfer | Een deterministisch algoritme dat een gegevensblok van vaste grootte verwerkt en een blok van gelijke grootte produceert. AES is een voorbeeld van een blokcijfer. |
| Galois-veld (GF) | Een eindige wiskundige structuur waarop alle rekenkundige operaties van een cryptografisch algoritme worden gedefinieerd. GF(2^n) is een eindig veld met 2^n elementen. |
| Additieve inverse | In een wiskundig veld is de additieve inverse van een element 'a' het element '-a' zodanig dat a + (-a) = 0. In GF(2^n) is dit equivalent aan XOR-optelling. |
| Multiplicatieve inverse | In een wiskundig veld is de multiplicatieve inverse van een niet-nul element 'a' het element 'a^-1' zodanig dat a * (a^-1) = 1. Dit is essentieel voor deling in eindige velden. |
| State array | Een interne datastructuur binnen AES die het 128-bits blok vertegenwoordigt dat wordt verwerkt tijdens encryptie en decryptie. Het wordt gemanipuleerd in elke ronde van het algoritme. |
| SubBytes | Een transformatie in AES waarbij elke byte van de State array wordt vervangen door een andere byte via een lookup-tabel, de S-box. Dit introduceert non-lineariteit. |
| S-box | Een lookup-tabel die wordt gebruikt in de SubBytes-transformatie van AES. Het bevat een permutatie van alle mogelijke 256 8-bits waarden en zorgt voor substitutionele cryptografie. |
| ShiftRows | Een permutatietransformatie in AES waarbij de rijen van de State array cyclisch naar links worden verschoven. Dit creëert diffusie over de State array. |
| MixColumns | Een transformatie in AES die elke kolom van de State array onafhankelijk behandelt. Elke byte in een kolom wordt een functie van alle vier de bytes in die kolom, wat zorgt voor meer diffusie. |
| AddRoundKey | Een transformatie in AES waarbij de huidige State array bitwise wordt ge-XOR-ed met een deel van de uitgebreide sleutel (de ronde sleutel). Dit is de enige transformatie die de sleutel direct gebruikt. |
| Sleuteluitbreiding (Key Expansion) | Het proces waarbij de oorspronkelijke AES-sleutel wordt uitgebreid tot een reeks van ronde sleutels, die elk in een specifieke ronde van het algoritme worden gebruikt. |
| Ronde sleutel (Round Key) | Een deel van de uitgebreide sleutel dat in elke afzonderlijke ronde van het AES-algoritme wordt gebruikt voor de AddRoundKey-transformatie. |
| Non-lineariteit | Een eigenschap van een cryptografisch algoritme die ervoor zorgt dat de relatie tussen de invoer en uitvoer niet eenvoudig wiskundig kan worden beschreven. Dit is cruciaal voor de veiligheid tegen lineaire cryptanalyse. |
| Diffusie | Een eigenschap van een cryptografisch algoritme waarbij een verandering in één bit van de invoer (plaintext of sleutel) een grote verandering in veel bits van de uitvoer (ciphertext) veroorzaakt. Het "verspreidt" de invloed van de invoer. |
| Verwarring (Confusion) | Een eigenschap die de relatie tussen de sleutel en de ciphertext zo complex mogelijk maakt. Het doel is om het lastig te maken om de sleutel te achterhalen, zelfs als een deel van de ciphertext bekend is. |
| Lawine-effect (Avalanche Effect) | Een specifieke vorm van diffusie waarbij een kleine verandering in de invoer (een enkele bit) resulteert in een grote verandering in de uitvoer, waarbij ongeveer de helft van de uitvoerbits verandert. |
| GF(2^8) | Het eindige veld met 256 elementen, dat wordt gebruikt voor de rekenkundige operaties in AES. Het is gebaseerd op polynomen van graad kleiner dan 8 met coëfficiënten in GF(2). |
| Polynoomvermenigvuldiging | Een methode om vermenigvuldiging uit te voeren in een Galois-veld, waarbij polynomen worden vermenigvuldigd en de resultaten worden gereduceerd modulo een primitief polynoom. |