Cover
Inizia ora gratuitamente Symmetric_1_Des_Feistel.pdf
Summary
# Basisprincipes van symmetrische encryptie
Deze sectie introduceert de fundamenten van symmetrische encryptie, inclusief het doel, de werking van encryptie en decryptie met een enkele sleutel, en de vergelijking met publieke sleutelcryptografie [2](#page=2).
### 1.1 Wat is encryptie?
Encryptie is het proces waarbij gegevens worden omgezet in een vorm die onbegrijpelijk is voor onbedoelde of ongeautoriseerde partijen. De oorspronkelijke gegevens worden **plaintext** genoemd, en de onbegrijpelijke gegevens worden **ciphertext** genoemd. Een geautoriseerde partij kan dit proces omkeren door de ciphertext te decoderen om de oorspronkelijke plaintext te onthullen [2](#page=2).
> **Tip:** Encryptie beveiligt de vertrouwelijkheid van gegevens omdat alleen de geautoriseerde partij met de juiste geheime sleutel de gegevens kan lezen [2](#page=2).
### 1.2 Werking van symmetrische encryptie
Symmetrische encryptie maakt gebruik van dezelfde sleutel voor zowel encryptie als decryptie. Het encryptie-algoritme neemt de plaintext en de sleutel als input en produceert de ciphertext. Het decryptie-algoritme keert het encryptieproces om en reproduceert de oorspronkelijke plaintext uit de sleutel en de ciphertext [2](#page=2).
Symmetrische cryptografie wordt ook wel **secret-key cryptography** genoemd, in tegenstelling tot asymmetrische cryptografie, die ook wel **public-key cryptography** wordt genoemd [2](#page=2).
#### 1.2.1 Soorten symmetrische ciphers
Er zijn in essentie twee soorten symmetrische ciphers: stream ciphers en block ciphers [3](#page=3).
##### 1.2.1.1 Stream ciphers
Een stream cipher versleutelt een digitale gegevensstroom één bit of één byte tegelijk. Als de cryptografische keystream werkelijk willekeurig is en slechts één keer wordt gebruikt (een zogenaamde one-time pad), is deze cipher onbreekbaar, behalve door het verkrijgen van de keystream. De keystream moet echter even lang zijn als het bericht en moet vooraf via een onafhankelijk en veilig kanaal aan beide gebruikers worden verstrekt. Dit leidt tot onoverkomelijke logistieke problemen bij grote datastromen [3](#page=3).
Voor praktische doeleinden moet de bit-stroomgenerator als een algoritmische procedure worden geïmplementeerd, zodat de cryptografische bitstroom door beide gebruikers kan worden geproduceerd en slechts pseudo-willekeurig is. In deze benadering is de bit-stroomgenerator een sleutel- (of seed-) gecontroleerd algoritme en moet het een cryptografisch sterke bitstroom produceren. Het moet computationeel onpraktisch zijn om toekomstige delen van de bitstroom te voorspellen op basis van eerdere delen. De twee gebruikers hoeven alleen de genererende sleutel te delen, en beiden kunnen de keystream produceren [3](#page=3).
> **Tip:** De XOR-operatie is typisch voor stream ciphers [3](#page=3).
Stream ciphers kunnen ook een **Initialization Vector (IV)** bevatten. De IV is niet geheim en wordt in platte tekst verzonden vóór het ciphertextmateriaal. Dit zorgt ervoor dat identieke plaintext niet tot hetzelfde ciphertext leidt op een later tijdstip [3](#page=3).
##### 1.2.1.2 Block ciphers
Een block cipher behandelt een blok plaintext als geheel en gebruikt dit om een ciphertextblok van gelijke lengte te produceren. Typisch wordt een blokgrootte van 64 of 128 bits gebruikt. Net als bij een stream cipher delen de twee gebruikers dezelfde (dus symmetrische) encryptiesleutel [4](#page=4).
Met behulp van verschillende modi van operatie kan een block cipher worden gebruikt om plaintext van willekeurige lengte te versleutelen, waardoor hetzelfde effect als een stream cipher wordt bereikt [4](#page=4).
> **Tip:** Er is veel onderzoek gedaan naar de analyse van block ciphers. Ze lijken over het algemeen toepasbaar op een breder scala aan toepassingen dan stream ciphers. De overgrote meerderheid van netwerkgebaseerde symmetrische cryptografische toepassingen maakt gebruik van block ciphers. Stream ciphers krijgen echter ook weer meer aandacht [4](#page=4).
Block ciphers zijn slechts een gedeeltelijke oplossing omdat ze beperkt zijn tot het versleutelen van één blok. De volledige oplossing is gebaseerd op modi van operatie. Vaak is er ook hier een IV (Initialization Vector) aanwezig. De IV moet samen met het versleutelde bericht worden verzonden [4](#page=4).
> **Opmerking:** Zowel block ciphers als stream ciphers hebben doorgaans dezelfde lengte voor plaintext en ciphertext. Vanwege padding en de IV is dit niet helemaal correct omdat de IV in platte tekst moet worden verzonden [4](#page=4).
Stream ciphers zijn ook symmetrisch en vereisen dezelfde sleutel aan de zender- en ontvangerszijde [4](#page=4).
Een typische block cipher transformeert een 4-bit blok plaintext naar een 4-bit blok ciphertext. In de praktijk kan een block cipher-algoritme worden gezien als een tabel met plaintext-invoer en ciphertext-uitvoer. Een 4-bit invoer kan 16 mogelijke toestanden produceren, die door een substitutie-cipher worden omgezet in 16 mogelijke uitvoer-toestanden, elk vertegenwoordigd door 4 ciphertextbits. Deze tabel moet omkeerbaar zijn, omdat elk encryptie-algoritme vereist dat decryptie mogelijk is. Zo'n block cipher is een willekeurige block cipher. Wat men werkelijk wil is een block cipher waarbij één sleutel kan worden gebruikt om de tabel af te leiden [4](#page=4).
> **Tip:** Het 'kip-en-ei'-probleem (hoe de symmetrische sleutel te verzenden) is typerend voor symmetrische block ciphers. De symmetrische sleutel moet via een ander (en vertrouwd) kanaal worden verzonden [4](#page=4).
---
# Soorten symmetrische ciphers: stream en block ciphers
Symmetrische ciphers kunnen grofweg worden onderverdeeld in twee hoofdcategorieën: stream ciphers en block ciphers, die verschillen in de manier waarop ze gegevens verwerken [3](#page=3).
### 2.1 Stream ciphers
Een stream cipher is een type symmetrische cipher dat digitale gegevens sequentieel verwerkt, bit voor bit of byte voor byte [3](#page=3).
#### 2.1.1 Principe en werking
* **Encryptie van een datastroom:** Stream ciphers versleutelen een digitale datastroom door deze één bit of één byte tegelijk te verwerken [3](#page=3).
* **Keystream:** Het kernconcept achter stream ciphers is het gebruik van een "keystream". Deze keystream wordt XOR-gewijs gecombineerd met de plaintext om de ciphertext te genereren [3](#page=3).
* **One-time pad:** In het ideale geval wordt de keystream gegenereerd uit een werkelijk willekeurige reeks die slechts één keer wordt gebruikt (een one-time pad). Dit garandeert onbreekbaarheid, mits de keystream net zo lang is als het bericht en vooraf veilig is uitgewisseld. De praktische implementatie hiervan stuit echter op logistieke problemen bij grote hoeveelheden data [3](#page=3).
* **Pseudo-random keystreams:** Voor praktische toepassingen wordt de keystream gegenereerd door een algoritmische procedure, wat resulteert in een pseudo-willekeurige keystream. Beide partijen delen enkel de genererende sleutel (seed) en kunnen hiermee onafhankelijk de keystream produceren [3](#page=3).
* **Cryptografische sterkte:** Een pseudo-willekeurige bitstroomgenerator moet cryptografisch sterk zijn, wat betekent dat het computationeel onpraktisch moet zijn om toekomstige delen van de bitstroom te voorspellen op basis van reeds waargenomen delen [3](#page=3).
* **Initialisatievector (IV):** Stream ciphers kunnen gebruikmaken van een Initialisatievector (IV). Dit is een niet-geheime waarde die samen met de ciphertext wordt verzonden en ervoor zorgt dat identieke plaintexts niet tot dezelfde ciphertexts leiden bij verschillende encrypties. De IV wordt in klare tekst voor de ciphertext verzonden [3](#page=3).
* **Lengte van plaintext en ciphertext:** Typisch hebben stream ciphers dezelfde lengte voor de plaintext en de ciphertext, hoewel de IV en padding dit in de praktijk enigszins kunnen beïnvloeden [4](#page=4).
* **Symmetrische aard:** Net als block ciphers zijn stream ciphers symmetrisch, wat betekent dat dezelfde sleutel aan de zender- en ontvangerszijde wordt gebruikt [4](#page=4).
* **Beperkingen:** Over het algemeen scoren stream ciphers laag op het gebied van diffusie, omdat een bit in de plaintext slechts één bit in de ciphertext beïnvloedt via de XOR-operatie [7](#page=7).
> **Tip:** De XOR-operatie is een veelvoorkomende en kenmerkende methode voor de combinatie van de keystream met de plaintext in stream ciphers.
### 2.2 Block ciphers
Een block cipher is een symmetrische cipher die gegevens verwerkt in vaste blokken van een bepaalde grootte [4](#page=4).
#### 2.2.1 Principe en werking
* **Verwerking in blokken:** Een block cipher behandelt een blok plaintext als een geheel en produceert een ciphertextblok van gelijke lengte [4](#page=4).
* **Blokgrootte:** Typische blokgroottes zijn 64 of 128 bits [4](#page=4).
* **Toepassingen:** Er is significant meer onderzoek gedaan naar block ciphers, en ze lijken breder toepasbaar dan stream ciphers. De meerderheid van de symmetrische cryptografische toepassingen in netwerken maakt gebruik van block ciphers [4](#page=4).
* **Beperking en modi van operatie:** Block ciphers zijn in hun basisvorm beperkt tot het versleutelen van één blok tegelijk. Om willekeurige lengtes plaintext te kunnen versleutelen, worden "modi van operatie" gebruikt, die de werking van een block cipher uitbreiden, vergelijkbaar met hoe een stream cipher functioneert [4](#page=4).
* **IV bij block ciphers:** Net als bij veel moderne stream ciphers, maken block ciphers in verschillende modi van operatie vaak gebruik van een Initialisatievector (IV) [4](#page=4).
* **Arbitraire block ciphers:** Een theoretisch block cipher kan worden voorgesteld als een substitutietabel die elk mogelijk inputblok uniek mapt naar een outputblok. Voor cryptografische doeleinden moet deze tabel omkeerbaar zijn. Een "arbitraire block cipher" is zo'n zelfstandige, omkeerbare mapping. Het echte doel is echter een block cipher waarbij de tabel wordt afgeleid uit een (korte) sleutel [4](#page=4).
* **Het sleuteluitwisselingsprobleem:** Het overdragen van de symmetrische sleutel is een fundamenteel probleem ("chicken and egg problem") dat typisch is voor symmetrische ciphers, waaronder block ciphers. De sleutel moet via een ander, veilig kanaal worden uitgewisseld [4](#page=4).
#### 2.2.2 Fundamenten: Verwarring en Diffusie
Claude Shannon legde de theoretische basis voor moderne cryptografie door de concepten "verwarring" (confusion) en "diffusie" (diffusion) te introduceren. Deze concepten zijn cruciaal voor het ontwerpen van sterke block ciphers [5](#page=5) [6](#page=6) [7](#page=7).
* **Verwarring (Confusion):**
* **Doel:** Het bemoeilijken van de relatie tussen de sleutel en de ciphertext. Dit maakt het voor een aanvaller extreem moeilijk om de encryptiesleutel af te leiden, zelfs als deze statistische informatie over de ciphertext heeft [6](#page=6) [7](#page=7).
* **Mechanisme:** Wordt bereikt door middel van substitutie. Elk plaintext-element of groep van elementen wordt uniek vervangen door een corresponderend ciphertext-element of groep [5](#page=5) [7](#page=7).
* **Impact:** De statistieken van de ciphertext moeten op een dusdanig ingewikkelde manier afhankelijk zijn van de plaintextstatistieken dat deze niet gemakkelijk kunnen worden uitgebuit. Een eenvoudige lineaire substitutie zou weinig verwarring toevoegen [6](#page=6) [7](#page=7).
* **Diffusie (Diffusion):**
* **Doel:** Het verspreiden van de statistische structuur van de plaintext over de ciphertext. Dit zorgt ervoor dat elk bit van de plaintext invloed heeft op vele bits van de ciphertext, en vice versa. Hierdoor worden de statistische relaties tussen plaintext en ciphertext zo complex mogelijk gemaakt om te voorkomen dat de sleutel wordt afgeleid [6](#page=6) [7](#page=7).
* **Mechanisme:** Wordt bereikt door middel van permutatie (ook wel transposities genoemd). Een reeks plaintext-elementen wordt vervangen door een permutatie van die reeks, waarbij de volgorde van de elementen verandert zonder dat elementen worden toegevoegd, verwijderd of vervangen. Dit verspreidt de plaintext statistieken over een groot deel van de ciphertext [5](#page=5) [6](#page=6) [7](#page=7).
* **Impact:** Zorgt ervoor dat de statistieken van de ciphertext minder afhankelijk zijn van de oorspronkelijke plaintext statistieken, wat het moeilijker maakt om patronen te ontdekken [6](#page=6).
> **Tip:** Moderne block cipher ontwerpen zijn sterk gebaseerd op de principes van verwarring en diffusie, zoals oorspronkelijk voorgesteld door Claude Shannon.
#### 2.2.3 Product Ciphers en Feistel Ciphers
* **Product Cipher:** Dit is een methode waarbij twee of meer eenvoudige ciphers sequentieel worden uitgevoerd om een cryptografisch sterker resultaat te verkrijgen dan dat van de individuele componenten [5](#page=5).
* **Feistel Cipher:** Een concrete implementatie van het idee van een product cipher, voorgesteld door Feistel. Het benadert het concept van een "ideale block cipher" door substitutie- en permutatieoperaties af te wisselen. De structuur van de Feistel cipher, die al meer dan een kwart eeuw oud is en gebaseerd is op Shannon's voorstellen uit 1945, wordt nog steeds gebruikt in veel significante symmetrische block ciphers [5](#page=5) [6](#page=6).
> **Example:** Een klassiek voorbeeld van een substitution cipher is de Caesar cipher. Hoewel dit een vorm van verwarring is, biedt het geen diffusie. De statistische eigenschappen van de plaintext, zoals de frequentie van letters, blijven behouden in de ciphertext, wat het kwetsbaar maakt voor analyse [7](#page=7).
---
# Feistel cipher architectuur en parameters
Dit onderwerp beschrijft de architectuur van Feistel ciphers, de rol van subkeys en rondfuncties, en het belang van parameters zoals blokgrootte, sleutelgrootte en het aantal rondes voor de beveiliging.
### 3.1 De Feistel structuur
De Feistel cipher is een ontwerp dat is voorgesteld door Horst Feistel. De structuur bestaat uit meerdere rondes van verwerking, waarbij elke ronde de linker- en rechterhelft van een datablok verwerkt en deze vervolgens uitwisselt [8](#page=8).
#### 3.1.1 Algemene opbouw
Een plaintext blok van lengte $2w$ bits en een sleutel $K$ zijn de inputs voor het encryptie-algoritme. Het blok wordt gesplitst in twee helften: $L_0$ en $R_0$. Deze helften doorlopen $n$ rondes van verwerking, waarbij elke ronde gebruikmaakt van een subkey $K_i$ die is afgeleid van de hoofdsleutel $K$ [8](#page=8).
In elke ronde $i$ worden de vorige linker- en rechterhelften, $L_{i-1}$ en $R_{i-1}$, en de subkey $K_i$ gebruikt om de nieuwe helften $L_i$ en $R_i$ te genereren. De algemene structuur van een ronde is als volgt:
1. Een rondfunctie $F$ wordt toegepast op de rechterhelft van het data ($R_{i-1}$) en de subkey $K_{i+1}$. De functie $F$ neemt een invoer van $w$ bits en een subkey van $y$ bits en produceert een uitvoer van $w$ bits: $F(R_{i-1}, K_{i+1})$ [8](#page=8).
2. Het resultaat van de rondfunctie wordt geëxclusieve-OR'd met de linkerhelft van de data ($L_{i-1}$). Dit resulteert in de nieuwe linkerhelft, $L_i$.
3. De nieuwe linkerhelft ($L_i$) en de oorspronkelijke rechterhelft ($R_{i-1}$) worden vervolgens omgewisseld om de nieuwe linker- en rechterhelften voor de volgende ronde te vormen [8](#page=8).
Deze structuur is een vorm van het substitutie-permutatie netwerk (SPN) voorgesteld door Shannon [8](#page=8).
#### 3.1.2 Decryptie in een Feistel cipher
Het decryptieproces van een Feistel cipher is grotendeels identiek aan het encryptieproces. Het ciphertext wordt als invoer gebruikt, maar de subkeys $K_i$ worden in omgekeerde volgorde toegepast: $K_n$ in de eerste ronde, $K_{n-1}$ in de tweede ronde, enzovoort, tot $K_1$ in de laatste ronde. Dit maakt het mogelijk om één algoritme te implementeren voor zowel encryptie als decryptie [10](#page=10) [11](#page=11).
### 3.2 Belangrijke parameters en ontwerpkenmerken
De veiligheid en prestaties van een Feistel cipher worden bepaald door verschillende parameters en ontwerpkeuzes [9](#page=9).
#### 3.2.1 Blokgrootte
* **Definitie:** De blokgrootte bepaalt hoeveel bits tegelijkertijd door het algoritme worden verwerkt [9](#page=9).
* **Impact:** Grotere blokgroottes leiden tot hogere veiligheid (grotere diffusie), maar kunnen de encryptie/decryptie snelheid verminderen [9](#page=9).
* **Traditioneel:** Een blokgrootte van 64 bits werd lange tijd als een redelijke afweging beschouwd [9](#page=9).
* **Hedendaags:** De Advanced Encryption Standard (AES) gebruikt een blokgrootte van 128 bits [9](#page=9).
* **Eisen:** De blokgrootte moet groot genoeg zijn om aanvallen die statistische patronen in de plaintext benutten te voorkomen [15](#page=15).
#### 3.2.2 Sleutelgrootte
* **Definitie:** De sleutelgrootte is de lengte van de hoofdsleutel $K$ [9](#page=9).
* **Impact:** Grotere sleutelgroottes bieden hogere veiligheid door grotere weerstand tegen brute-force aanvallen en grotere verwarring (confusion) [9](#page=9).
* **Traditioneel en Hedendaags:** Sleutelgroottes van 64 bits of minder worden nu als onvoldoende beschouwd; 128 bits is een gangbare grootte geworden [9](#page=9).
* **Voorbeelden:**
* DES gebruikt een 64-bits sleutel, waarvan 56 bits effectief worden gebruikt voor de beveiliging (net key length) [16](#page=16) [9](#page=9).
* Triple DES met drie sleutels heeft een beveiligingsniveau van 168 bits [16](#page=16).
* AES-128 gebruikt een sleutel van 128 bits [16](#page=16).
* **Brute-force weerstand:** De sleutelgrootte moet groot genoeg zijn om brute-force aanvallen te weerstaan [15](#page=15).
#### 3.2.3 Aantal rondes
* **Definitie:** Het aantal keren dat de rondstructuur wordt doorlopen [8](#page=8).
* **Impact:** Een enkele ronde biedt doorgaans onvoldoende beveiliging; meerdere rondes verhogen de beveiliging aanzienlijk. Hoe meer rondes, hoe moeilijker cryptanalyse, zelfs met relatief zwakke rondfuncties [14](#page=14) [9](#page=9).
* **Typische waarde:** 16 rondes is een veelvoorkomend aantal [9](#page=9).
* **DES:** 16 rondes [14](#page=14) [16](#page=16).
* **AES:** AES-128 gebruikt 10 rondes AES-192 gebruikt 12 rondes en AES-256 gebruikt 14 rondes [16](#page=16).
* **Cryptanalytische criteria:** Het aantal rondes moet zodanig worden gekozen dat bekende cryptanalytische aanvallen meer moeite kosten dan een brute-force sleutelzoektocht. Voor DES zou een differentiële cryptanalyse-aanval met 15 of minder rondes minder efficiënt zijn dan brute-force [14](#page=14).
#### 3.2.4 Subkey generatie algoritme (Key Schedule)
* **Definitie:** Het algoritme dat de subkeys ($K_i$) genereert uit de hoofdsleutel ($K$) [9](#page=9).
* **Impact:** Een complexer key schedule algoritme zou de cryptanalyse moeilijker moeten maken. Een zwak key schedule kan informatie over andere subkeys onthullen, waardoor een aanval op de hoofdsleutel vereenvoudigd wordt [14](#page=14) [9](#page=9).
* **DES:** Maakt gebruik van een eenvoudig key schedule dat bestaat uit een concatenatie van P-boxes (permutatieboxen). Elke subkey is een permutatie van de bits van de originele hoofdsleutel [16](#page=16).
* **AES:** De ronde sleutelgrootte is gelijk aan de blokgrootte. AES-128 vereist 11 ronde sleutels, mede door een "ronde 0" die wel een subkey verbruikt maar niet wordt meegeteld als volledige ronde. In DES is de ronde sleutelgrootte 48 bits, wat niet de helft van de blokgrootte is [16](#page=16).
#### 3.2.5 Rondfunctie F
* **Definitie:** De kern van de Feistel block cipher, die zorgt voor de elementen van verwarring (confusion) [14](#page=14).
* **Impact:** Het moet moeilijk zijn om de door $F$ uitgevoerde substitutie "ongedaan te maken". Een hogere non-lineariteit van $F$ maakt cryptanalyse moeilijker [14](#page=14).
* **Non-lineariteit:** Een belangrijke eigenschap is non-lineariteit; hoe moeilijker $F$ te benaderen is met lineaire vergelijkingen, hoe non-lineairder $F$ is [14](#page=14).
* **Avalanche effect:** De rondfunctie moet goede avalanche-eigenschappen hebben, wat betekent dat een verandering in één bit van de invoer een verandering in veel bits van de uitvoer moet veroorzaken [12](#page=12) [15](#page=15).
* **Strict Avalanche Criterion (SAC):** Een strengere versie waarbij elke output bit met een waarschijnlijkheid van 1/2 verandert wanneer een enkele input bit wordt geïnverteerd voor alle input en output bits [15](#page=15).
* **Bit Independence Criterion (BIC):** Output bits $j$ en $k$ moeten onafhankelijk veranderen wanneer een enkele input bit $i$ wordt geïnverteerd voor alle $i$, $j$, en $k$ [15](#page=15).
* **Belangrijk:** SAC en BIC versterken de effectiviteit van de verwarringsfunctie. Let op: deze criteria worden niet vetgedrukt aangegeven, wat impliceert dat er geen examenvragen over worden verwacht [15](#page=15).
### 3.3 Additionele overwegingen
Naast de kernparameters zijn er nog twee belangrijke aspecten bij het ontwerpen van Feistel ciphers:
#### 3.3.1 Snelle software-encryptie/decryptie
In veel gevallen wordt encryptie geïntegreerd in applicaties of utility-functies waar hardware-implementatie niet mogelijk is. Daarom is de uitvoeringssnelheid van het algoritme een belangrijke overweging [9](#page=9).
#### 3.3.2 Gemak van analyse
Hoewel het doel is om het algoritme zo moeilijk mogelijk te maken voor cryptanalyse, is het erg nuttig als het algoritme ook gemakkelijk te analyseren is. Een beknopte en duidelijke uitleg maakt het makkelijker om kwetsbaarheden te identificeren en de sterkte ervan te beoordelen. DES heeft bijvoorbeeld geen gemakkelijk te analyseren functionaliteit [9](#page=9).
### 3.4 Voorbeeld: DES (Data Encryption Standard)
DES, gepubliceerd door het National Bureau of Standards (NBS) op 17 maart 1975, gebruikte een 56-bit encryptiesleutel. De sleutelgrootte werd significant gereduceerd; geschat werd dat voor 20 miljoen dollars een machine gebouwd kon worden die alle mogelijke sleutels kon proberen. Een toevoeging van slechts acht extra sleutelbits zou de moeilijkheidsgraad met een factor 256 verhogen. De reden voor de reductie en de noodzaak van een pariteitscontrole (waardoor slechts 56 van de 64 bits werden gebruikt) werd destijds in twijfel getrokken. DES is gebaseerd op een Feistel-benadering [10](#page=10) [9](#page=9).
#### 3.4.1 DES diffusie en verwarringstests
* **Diffusie:** Een test waarbij de vierde bit van de plaintext wordt gewijzigd, toont aan dat na slechts drie rondes 18 bits verschillen tussen de twee intermediate blokken, en de uiteindelijke cipherteksten verschillen in 32 bitposities. Dit valideert de diffusie-eigenschappen [12](#page=12).
* **Verwarring (Confusion):** Een vergelijkbare test met twee sleutels die slechts één bit verschillen, laat zien dat ongeveer de helft van de bits in de ciphertext varieert, wat de sterke verwarringseffecten van DES valideert [13](#page=13).
#### 3.4.2 DES parameters
| Algoritme | Blokgrootte | Gebruikte sleutellengte | Rond sleutelgrootte | Aantal rondes |
| :--------------- | :---------- | :---------------------- | :------------------ | :------------ |
| DES | 64 | 56 | 48 | 16 |
| Triple DES (3 sleutels) | 64 | 168 | 48 | 48 |
| AES-128 | 128 | 128 | 128 | 10 |
| AES-192 | 128 | 192 | 128 | 12 |
| AES-256 | 128 | 256 | 128 | 14 |
---
# Analyse van cryptografische beveiliging en aanvalsoverwegingen
Dit onderwerp onderzoekt de beveiligingsprincipes van cryptografische algoritmen, met name DES en AES, en de impact van verschillende aanvalsmethoden, zoals brute-force aanvallen, op hun effectiviteit.
### 4.1 Belangrijke concepten in cryptografische beveiliging
Een essentieel kenmerk van een veilige encryptie-algoritme is dat kleine wijzigingen in de plaintext of de sleutel aanzienlijke veranderingen in de ciphertext veroorzaken. Dit fenomeen staat bekend als het **avalanche-effect**. Concreet betekent dit dat een verandering in één enkele bit van de plaintext of de sleutel zou moeten resulteren in een verandering in een groot aantal bits van de resulterende ciphertext. Als de verandering klein zou zijn, zou dit een mogelijkheid bieden om de te doorzoeken plaintext- of sleutelruimte te verkleinen [12](#page=12).
#### 4.1.1 Avalanche-effect demonstratie
Tests tonen aan hoe het avalanche-effect werkt. Wanneer een bit in de plaintext wordt gewijzigd, kunnen na slechts enkele rondes in het encryptieproces aanzienlijke verschillen optreden in de tussenliggende waarden en de uiteindelijke ciphertext. Vergelijkbare resultaten worden verkregen wanneer een bit in de sleutel wordt gewijzigd, wat aantoont dat de avalanche-effect zowel voor de plaintext als voor de sleutel van toepassing is. Dit is cruciaal voor het valideren van zowel diffusie (verspreiding van plaintext-wijzigingen naar ciphertext) als confusie (verhulling van de relatie tussen plaintext en ciphertext) [12](#page=12) [13](#page=13).
#### 4.1.2 Rol van het aantal rondes en de ronde-functie
Het aantal rondes in een cryptografisch algoritme is een belangrijke factor voor de weerstand tegen cryptanalyse. Hoe meer rondes, hoe moeilijker het wordt om het algoritme te ontcijferen, zelfs voor relatief zwakke methoden. Het algemene principe is dat het aantal rondes zo gekozen moet worden dat bekende cryptanalytische pogingen meer rekenkracht vereisen dan een eenvoudige brute-force sleutelzoekactie [14](#page=14).
De **ronde-functie F** is het centrale element in een Feistel-blokcijfer en is verantwoordelijk voor de confusie. Het moet moeilijk zijn om de substitutie die door F wordt uitgevoerd, "onwedged" te krijgen. Een cruciale eigenschap van F is nonlineariteit; hoe nonlinearer F is, hoe moeilijker cryptanalyse wordt [14](#page=14).
Andere ontwerpcriteria voor de ronde-functie zijn onder meer goede avalanche-eigenschappen. Een strengere versie hiervan is het **Strict Avalanche Criterion (SAC)**, waarbij elke outputbit van een S-box met een kans van 1/2 verandert wanneer een enkele inputbit wordt geïnverteerd. Een ander voorgesteld criterium is het **Bit Independence Criterion (BIC)**, dat stelt dat outputbits onafhankelijk van elkaar moeten veranderen wanneer een enkele inputbit wordt geïnverteerd. Hoewel SAC en BIC niet cruciaal zijn voor examenvragen, versterken ze de effectiviteit van de confusiefunctie [15](#page=15).
#### 4.1.3 De sleutel en de sleutelschema-algoritme
De **master key lengte** en het **sleutelplanning algoritme** zijn ook bepalende factoren voor de veiligheid. Een zwak sleutelplanning algoritme kan ertoe leiden dat één sub-sleutel informatie over andere sub-sleutels prijsgeeft, waardoor een aanval op een 128-bit master key kan worden gereduceerd tot het vinden van bijvoorbeeld 12 64-bit sub-sleutels [14](#page=14).
De **blokgrootte** moet groot genoeg zijn om aanvallen te voorkomen die statistische patronen in de plaintext uitbuiten. In afwezigheid van cryptanalytische doorbraken, kan de sterkte van een algoritme dat aan dit criterium voldoet, uitsluitend worden beoordeeld op basis van de master key lengte [15](#page=15).
### 4.2 Vergelijking van DES en AES
Tabel 1 toont een vergelijking van de parameters van DES, Triple DES en AES:
| Algoritme | Blokgrootte | Gebruikte sleutellengte | Ronde sleutelgrootte | Aantal rondes |
| :------------------ | :---------- | :---------------------- | :------------------- | :------------ |
| DES | 64 | 56 | 48 | 16 |
| Triple DES (3 keys) | 64 | 168 | 48 | 48 |
| AES-128 | 128 | 128 | 128 | 10 |
| AES-192 | 128 | 192 | 128 | 12 |
| AES-256 | 128 | 256 | 128 | 14 |
Voor DES is de sleutellengte 64 bits, maar het effectieve beveiligingsniveau (netto sleutellengte) is 56 bits. Voor Triple DES met 3 sleutels is dit 3 * 56 = 168 bits. Het sleutelplanning algoritme van DES is eenvoudig en maakt gebruik van P-boxes (performatie-boxes). Elke ronde sleutel is een permutatie van de bits van de originele master key. In AES is de ronde sleutelgrootte gelijk aan de blokgrootte. AES-128 vereist bijvoorbeeld 11 ronde sleutels, inclusief een niet-getelde ronde 0 [16](#page=16).
### 4.3 Aanvalsoverwegingen: Brute-force aanvallen en rekentijd
De effectiviteit van cryptografische algoritmen wordt sterk beïnvloed door de mogelijkheid van brute-force aanvallen, waarbij alle mogelijke sleutels worden geprobeerd. De benodigde rekentijd voor een brute-force aanval is direct gerelateerd aan de sleutellengte [17](#page=17).
Tabel 2 toont de geschatte tijd die nodig is voor een brute-force aanval met verschillende sleutelgroottes en rekenkrachtniveaus:
| Algoritme | Sleutelgrootte | Tijd met 10^9 /s | Tijd met 10^13 /s | Tijd met 10^20 /s | Tijd met 10^20 /s (Moore's law gecorrigeerd) | RSA equivalente sleutellengte | Elliptic curve equivalente sleutellengte |
| :------------------ | :------------- | :--------------- | :---------------- | :---------------- | :------------------------------------------- | :----------------------------------------- |
| DES | 56 | 1.14 jaar | 1 uur | 0.3 milliseconde | 0.3 milliseconde | - |
| SHA-1 | 160 (hash) | 10^7 jaar | 1000 jaar | 1.6 uur | 1.6 uur | 1024 |
| SHA-224 | 112 (hash) | 10^16 jaar | 10^12 jaar | 10^6 jaar | 30 jaar | 2048 |
| AES-128 / SHA-256 | 128 | 10^21 jaar | 10^17 jaar | 10^10 jaar | 53 jaar | 3072 | 256 |
| AES-192 / SHA-384 | 192 | 10^40 jaar | 10^37 jaar | 10^30 jaar | 150 jaar | 7680 | 384 |
| AES-256 / SHA-512 | 256 | 10^60 jaar | 10^56 jaar | 10^49 jaar | 245 jaar | 15360 | 512 |
#### 4.3.1 Rekenkundige snelheden en Moore's Law
Moderne hardware kan snelheden bereiken van miljarden operaties per seconde (10^9/s) met standaard hardware, tot triljoenen operaties per seconde (10^12/s) met high-end CPU's. High-end GPU-systemen kunnen prestaties leveren van exaflops (10^18/s). Moore's Law, die stelt dat de capaciteit elke 18 maanden verdubbelt, heeft de rekenkracht aanzienlijk verhoogd, maar er zijn indicaties dat deze wet zijn limieten bereikt. Huang's Law wordt voorgesteld als een opvolger met nog ambitieuzere voorspellingen voor GPU-snelheden [17](#page=17) [18](#page=18).
#### 4.3.2 Bitcoin en geavanceerde hardware
Het Bitcoin-netwerk heeft een hash rate van rond de 6 * 10^20/s, wat voornamelijk te danken is aan gespecialiseerde ASIC-hardware. Dit illustreert de schaal van rekenkracht die beschikbaar is voor specifieke cryptografische taken [18](#page=18).
#### 4.3.3 Veiligheid voor de lange termijn
Het is belangrijk op te merken dat "veiligheid voor altijd" onmogelijk is. De huidige beveiligingsniveaus, met name voor de langere sleutellengtes zoals bij AES-256, bieden echter nog steeds een robuuste bescherming tegen brute-force aanvallen, zelfs met de toenemende rekenkracht. De equivalentieberekeningen voor sleutellengtes tussen symmetrische en asymmetrische cryptografie zijn echter geen exacte wetenschap. Bovendien houden deze analyses geen rekening met de impact van kwantumcomputers [17](#page=17) [18](#page=18).
> **Tip:** Begrijpen hoe de sleutellengte zich verhoudt tot de benodigde rekentijd voor brute-force aanvallen is cruciaal voor het beoordelen van de beveiliging van cryptografische algoritmen.
> **Voorbeeld:** De tijd die nodig is om een DES-sleutel van 56 bits te kraken met een rekenkracht van 10^9 operaties per seconde, is ongeveer 1.14 jaar. Met een rekenkracht van 10^13 operaties per seconde, daalt dit tot slechts 1 uur. Dit toont de exponentiële impact van rekenkracht op de beveiliging aan [17](#page=17).
---
## 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 |
|------|------------|
| Symmetrische encryptie | Een methode van encryptie waarbij dezelfde geheime sleutel wordt gebruikt voor zowel het versleutelen als het ontsleutelen van gegevens. Dit staat in contrast met asymmetrische encryptie, die twee verschillende sleutels gebruikt. |
| Plaintext | De oorspronkelijke, leesbare gegevens die worden geconverteerd naar een onbegrijpelijke vorm door middel van encryptie. Dit is de invoer voor het encryptieproces. |
| Ciphertext | De versleutelde, onbegrijpelijke gegevens die het resultaat zijn van het encryptieproces. Alleen met de juiste sleutel kan ciphertext worden gedecodeerd tot de oorspronkelijke plaintext. |
| Geheime sleutel | Een stuk informatie, meestal een reeks bits, die gebruikt wordt in cryptografische algoritmen om gegevens te versleutelen en te ontsleutelen. Bij symmetrische encryptie delen beide partijen dezelfde geheime sleutel. |
| Stream cipher | Een type symmetrisch cipher dat digitale gegevensstroom bit voor bit of byte voor byte versleutelt. Een ideaal stream cipher, de one-time pad, is onbreekbaar als de sleutel werkelijk willekeurig is en slechts eenmaal wordt gebruikt. |
| Block cipher | Een type symmetrisch cipher dat een blok plaintext verwerkt als een geheel om een ciphertextblok van gelijke lengte te produceren. Block ciphers worden vaak gebruikt in netwerkgebaseerde cryptografische toepassingen. |
| Pseudo-random | Een reeks getallen die willekeurig lijkt, maar die wordt gegenereerd door een deterministisch algoritme. Pseudo-random getallenreeksen worden gebruikt in cryptografie wanneer het genereren van werkelijk willekeurige reeksen logistiek onhaalbaar is. |
| Initialisatievector (IV) | Een willekeurig of pseudo-willekeurig beginpunt dat wordt gebruikt in sommige encryptiemodi (zowel bij stream als block ciphers) om ervoor te zorgen dat identieke plaintexts niet resulteren in identieke ciphertexts bij herhaalde encryptie. |
| Substitutie | Een cryptografische bewerking waarbij elk element (bijvoorbeeld een bit of een karakter) in de plaintext uniek wordt vervangen door een ander element in de ciphertext. Dit draagt bij aan de verwarring in een cipher. |
| Permutatie | Een cryptografische bewerking waarbij de volgorde van elementen in een reeks wordt veranderd zonder de elementen zelf te wijzigen. Dit draagt bij aan de diffusie in een cipher door de spreiding van plaintext-statistieken. |
| Verwarring (Confusion) | Een cryptografisch principe, geïntroduceerd door Claude Shannon, dat bedoeld is om de relatie tussen de ciphertext en de sleutel zo complex mogelijk te maken. Dit wordt meestal bereikt door middel van substitutie. |
| Diffusie | Een cryptografisch principe, geïntroduceerd door Claude Shannon, dat bedoeld is om de statistische structuur van de plaintext te verspreiden over een groot deel van de ciphertext. Dit wordt meestal bereikt door middel van permutatie. |
| Feistel cipher | Een specifieke architectuur voor symmetrische block ciphers, ontworpen door Horst Feistel. Het kenmerkt zich door het herhaaldelijk toepassen van een rondfunctie op delen van het datablok, met een specifieke structuur voor versleuteling en ontsleuteling. |
| Rondfunctie (F) | Het kernonderdeel van een Feistel cipher ronde. Deze functie neemt een deel van het datablok en een subkey als input en produceert een output die wordt gebruikt om het andere deel van het datablok te modificeren. |
| Subkey | Een kleinere sleutel die wordt afgeleid van de hoofdsleutel (master key) en die in elke ronde van een Feistel cipher wordt gebruikt. De generatie van subkeys staat bekend als de "key schedule". |
| Avalanche effect | Een gewenste eigenschap van encryptiealgoritmen, waarbij een kleine verandering in de plaintext of de sleutel leidt tot een significante verandering in de ciphertext. Dit maakt cryptanalyse moeilijker. |
| Brute-force attack | Een aanvalsmethode waarbij een aanvaller alle mogelijke sleutels probeert om een versleuteld bericht te ontsleutelen. De effectiviteit van brute-force aanvallen hangt af van de sleutelgrootte van het algoritme. |
| Data Encryption Standard (DES) | Een veelgebruikte symmetrische encryptiestandaard, geïntroduceerd in 1977. DES gebruikt een 56-bits sleutel en een blokgrootte van 64 bits. Vanwege de relatief kleine sleutelgrootte is het tegenwoordig kwetsbaar voor brute-force aanvallen. |
| Advanced Encryption Standard (AES) | Een moderne symmetrische encryptiestandaard die is ontworpen om DES te vervangen. AES gebruikt blokgroottes van 128 bits en variabele sleutelgroottes (128, 192 of 256 bits), wat een aanzienlijk hogere beveiliging biedt. |