Cover
立即免费开始 DH key exchange.pdf
Summary
# Het probleem van symmetrische cryptografie en de introductie van asymmetrische cryptografie
Het sleuteluitwisselingsprobleem bij symmetrische cryptografie vormt een fundamentele uitdaging, die door asymmetrische cryptografie wordt aangepakt door middel van publieke en private sleutels, hoewel er aanvullende mechanismen nodig blijven voor identiteitsverificatie en efficiënte sleuteluitwisseling in gedistribueerde omgevingen [2](#page=2) [3](#page=3).
### 1.1 Het sleuteluitwisselingsprobleem van symmetrische cryptografie
Symmetrische cryptografie, hoewel effectief voor versleuteling en ontsleuteling met een gedeelde geheime sleutel, stuit op het 'kip-en-ei'-probleem. Dit probleem betreft de uitdaging om de symmetrische sleutel veilig uit te wisselen tussen de communicerende partijen (A en B) voordat enige versleutelde communicatie kan plaatsvinden. Zonder een betrouwbare methode om de sleutel te delen, blijft het gebruik van symmetrische cryptografie beperkt [2](#page=2).
### 1.2 Introductie van asymmetrische cryptografie als oplossing
Asymmetrische cryptografie, ook bekend als publieke-sleutelcryptografie, biedt een oplossing voor het sleuteluitwisselingsprobleem door gebruik te maken van een sleutelpaar: een publieke sleutel en een private sleutel [2](#page=2).
#### 1.2.1 Werking van publieke en private sleutels
* **Publieke sleutel:** Deze sleutel kan vrijelijk worden gedeeld met iedereen. Berichten die met de publieke sleutel worden versleuteld, kunnen alleen worden ontsleuteld met de bijbehorende private sleutel [2](#page=2).
* **Private sleutel:** Deze sleutel moet strikt geheim worden gehouden door de eigenaar. De private sleutel wordt gebruikt om berichten te ontsleutelen die met de publieke sleutel zijn versleuteld, en kan ook worden gebruikt om digitale handtekeningen te creëren [2](#page=2).
#### 1.2.2 Beperkingen van asymmetrische cryptografie
Hoewel asymmetrische cryptografie het sleuteluitwisselingsprobleem oplost, introduceert het nieuwe uitdagingen:
* **Vertrouwde autoriteit:** Het gebruik van asymmetrische cryptografie vereist vaak een vertrouwde autoriteit die publieke sleutels beheert en koppelt aan specifieke identiteiten. Deze autoriteit is verantwoordelijk voor het uitgeven en intrekken van certificaten die publieke sleutels valideren. Het bestaan van meerdere (en mogelijk te veel) certificeringsinstanties getuigt hiervan [2](#page=2) [3](#page=3).
* **Identiteit en authenticatie:** Zelfs met publieke-private sleutel cryptografie is het niet altijd gegarandeerd dat men weet wie de communicerende partij is. Als partij A wil communiceren met partij B, moet A zeker weten dat het de publieke sleutel van B gebruikt en niet die van een aanvaller die zich voordoet als B. Dit vereist aanvullende mechanismen voor identiteitsverificatie [2](#page=2).
* **Efficiëntie:** Voor veel communicatie binnen een protocol, of wanneer partijen geen vooraf gedefinieerde identiteit hebben (zoals bij browsen op het internet), is het directe gebruik van publieke-private sleutel cryptografie niet altijd de meest efficiënte of praktische oplossing [2](#page=2).
### 1.3 De noodzaak van sleuteluitwisselingsprotocollen: Diffie-Hellmann
Om de beperkingen van directe toepassing van asymmetrische cryptografie te omzeilen, zijn specifieke sleuteluitwisselingsprotocollen ontwikkeld. Het Diffie-Hellmann sleuteluitwisselingsprotocol is hier een prominent voorbeeld van [2](#page=2).
#### 1.3.1 Kenmerken van het Diffie-Hellmann protocol
* **Sleutelovereenkomst zonder overdracht:** Diffie-Hellmann maakt het mogelijk voor twee partijen (A en B) die elkaar nog nooit hebben ontmoet en geen voorafgaande afspraken hebben gemaakt, om overeenstemming te bereiken over een gedeelde geheime sleutel, zonder dat deze sleutel ooit direct over het netwerk wordt verzonden [2](#page=2).
* **Gebaseerd op principes van publieke-private sleutel cryptografie:** Hoewel het niet vereist dat partijen publieke sleutels vooraf uitwisselen, is het protocol gebaseerd op de wiskundige principes die ten grondslag liggen aan publieke-private sleutel cryptografie [2](#page=2).
* **Toepassing in gedistribueerde omgevingen:** Het protocol is met name nuttig in situaties waar identiteiten niet direct beschikbaar zijn, zoals bij het browsen op het internet [2](#page=2).
> **Tip:** Begrijp dat asymmetrische cryptografie het *mechanisme* biedt voor sleuteluitwisseling, maar protocollen zoals Diffie-Hellmann de *methode* specificeren om dit efficiënt en veilig te doen, vooral in open netwerken waar identiteiten niet vooraf bekend of geverifieerd zijn.
> **Voorbeeld:** Stel dat Alice en Bob willen communiceren over een onveilig kanaal. Met symmetrische cryptografie zouden ze eerst een geheime sleutel moeten uitwisselen. Als ze dit niet veilig kunnen doen, kan Alice een asymmetrisch sleutelpaar genereren (publiek en privé). Ze deelt haar publieke sleutel met Bob. Bob gebruikt Alice's publieke sleutel om een sleutel te versleutelen die hij vervolgens naar Alice stuurt. Alice gebruikt haar private sleutel om deze sleutel te ontsleutelen. Nu hebben Alice en Bob een gedeelde geheime sleutel voor symmetrische versleuteling. Echter, het Diffie-Hellmann protocol stelt Alice en Bob in staat om een gedeelde geheime sleutel te creëren zonder dat een van hen ooit een publieke sleutel hoeft te sturen of te ontvangen, puur door wiskundige berekeningen gebaseerd op openbaar gedeelde getallen.
---
# Het Diffie-Hellman sleuteluitwisselingsprotocol
Het Diffie-Hellman sleuteluitwisselingsprotocol is een methode waarmee twee partijen, zonder vooraf gedeelde geheime informatie, een gemeenschappelijke geheime sleutel kunnen genereren over een onveilig communicatiekanaal [4](#page=4).
### 2.1 Algemene werking
Het protocol maakt gebruik van publieke parameters en individuele geheime waarden om een gedeelde geheime sleutel te creëren. Het doel is om een symmetrische encryptiesleutel te genereren die vervolgens gebruikt kan worden voor veilige communicatie [4](#page=4).
### 2.2 Publieke parameters
Voor het Diffie-Hellman protocol zijn er twee publiekelijk bekende getallen [4](#page=4):
* Een priemgetal $q$ [4](#page=4).
* Een integer $\alpha$ (alfa), die een primitieve wortel is van $q$. Een primitieve wortel betekent dat het verheffen van $\alpha$ tot verschillende machten modulo $q$ alle mogelijke waarden modulo $q$ kan voortbrengen [4](#page=4).
### 2.3 Sleutelgeneratie door gebruiker A
1. Gebruiker A selecteert een willekeurige geheime integer $X_A$, waarbij $X_A < q$. Dit is A's privésleutel [4](#page=4).
2. Gebruiker A berekent zijn publieke waarde $Y_A$ met de formule:
$$Y_A = \alpha^{X_A} \mod q$$ [4](#page=4).
3. $Y_A$ wordt publiekelijk gedeeld met gebruiker B [4](#page=4).
### 2.4 Sleutelgeneratie door gebruiker B
1. Gebruiker B selecteert een willekeurige geheime integer $X_B$, waarbij $X_B < q$. Dit is B's privésleutel [4](#page=4).
2. Gebruiker B berekent zijn publieke waarde $Y_B$ met de formule:
$$Y_B = \alpha^{X_B} \mod q$$ [4](#page=4).
3. $Y_B$ wordt publiekelijk gedeeld met gebruiker A [4](#page=4).
### 2.5 Berekening van de gedeelde geheime sleutel
Beide gebruikers kunnen nu de gedeelde geheime sleutel $K$ berekenen door gebruik te maken van hun eigen privésleutel en de publieke waarde van de ander [4](#page=4).
* **Gebruiker A berekent de sleutel als:**
$$K = (Y_B)^{X_A} \mod q$$ [4](#page=4).
Door $Y_B = \alpha^{X_B} \mod q$ te substitueren, wordt dit:
$$K = (\alpha^{X_B})^{X_A} \mod q = \alpha^{X_B \cdot X_A} \mod q$$ [4](#page=4).
* **Gebruiker B berekent de sleutel als:**
$$K = (Y_A)^{X_B} \mod q$$ [4](#page=4).
Door $Y_A = \alpha^{X_A} \mod q$ te substitueren, wordt dit:
$$K = (\alpha^{X_A})^{X_B} \mod q = \alpha^{X_A \cdot X_B} \mod q$$ [4](#page=4).
Beide berekeningen leiden tot dezelfde gedeelde geheime sleutel $K$. De privésleutels ($X_A$ en $X_B$) blijven geheim, terwijl de publieke waarden ($Y_A$ en $Y_B$) over het onveilige kanaal uitgewisseld worden [4](#page=4).
> **Tip:** De kern van het protocol is dat de exponentiële berekening van de publieke waarden, wanneer deze wordt verheven tot de macht van de andere privésleutel, dezelfde uitkomst oplevert voor beide partijen, zelfs zonder directe kennis van elkaars privésleutels.
### 2.6 Toepassingen en context
Het Diffie-Hellman protocol was een belangrijke vooruitgang op het gebied van cryptografie, aangezien het de noodzaak elimineerde om sleutels fysiek uit te wisselen, wat voorheen de standaard was (bijvoorbeeld voor de Duitse Enigma-machine tijdens de Tweede Wereldoorlog). De gegenereerde symmetrische sleutel wordt gebruikt om de verdere communicatie te beveiligen via symmetrische encryptie [4](#page=4) [5](#page=5).
---
# Kwetsbaarheid van Diffie-Hellman voor man-in-the-middle aanvallen
Het Diffie-Hellman sleuteluitwisselingsprotocol is kwetsbaar voor man-in-the-middle (MITM) aanvallen doordat het de authenticiteit van de deelnemers niet verifieert. Dit betekent dat een aanvaller zich tussen twee legitieme partijen kan positioneren en de communicatie kan onderscheppen, lezen en manipuleren zonder dat de legitieme partijen zich hiervan bewust zijn [7](#page=7) [8](#page=8).
### 3.1 Uitvoering van een man-in-the-middle aanval
Een MITM-aanval op Diffie-Hellman wordt uitgevoerd door een aanvaller, hier aangeduid als Darth, die zich voordoet als zowel Alice als Bob. Het proces verloopt als volgt [7](#page=7):
* **Voorbereiding door de aanvaller:** Darth genereert twee willekeurige geheime sleutels, $X_{D1}$ en $X_{D2}$, en berekent de bijbehorende publieke sleutels $Y_{D1}$ en $Y_{D2}$ met behulp van de Diffie-Hellman modulus $q$ en generator $g$ (hoewel $g$ niet expliciet in de aanval wordt genoemd, is dit een inherent onderdeel van DH). De berekeningen zijn van de vorm $Y = g^X \pmod{q}$ [7](#page=7).
* **Eerste onderschepping en manipulatie:**
* Alice stuurt haar publieke sleutel $Y_A$ naar Bob [7](#page=7).
* Darth onderschept $Y_A$ en stuurt zijn eigen publieke sleutel $Y_{D1}$ naar Bob [7](#page=7).
* Darth berekent een geheime sleutel $K_1$ met Bob: $K_1 = (Y_{D1})^{X_B} \pmod{q}$. Dit is de sleutel die Bob denkt te delen met Alice [7](#page=7).
* Bob ontvangt $Y_{D1}$ (denkend dat het $Y_A$ is) en berekent $K_1 = (Y_{D1})^{X_B} \pmod{q}$ [7](#page=7).
* **Tweede onderschepping en manipulatie:**
* Bob stuurt zijn publieke sleutel $Y_B$ naar Alice [7](#page=7).
* Darth onderschept $Y_B$ en stuurt zijn eigen publieke sleutel $Y_{D2}$ naar Alice [7](#page=7).
* Darth berekent een geheime sleutel $K_2$ met Alice: $K_2 = (Y_{B})^{X_{D1}} \pmod{q}$. Dit is de sleutel die Alice denkt te delen met Bob [7](#page=7).
* Alice ontvangt $Y_{D2}$ (denkend dat het $Y_B$ is) en berekent $K_2 = (Y_{D2})^{X_A} \pmod{q}$ [7](#page=7).
Na deze stappen denken zowel Alice als Bob dat ze een gedeelde geheime sleutel hebben uitgewisseld. In werkelijkheid deelt Bob de geheime sleutel $K_1$ met Darth, en deelt Alice de geheime sleutel $K_2$ met Darth [7](#page=7).
> **Tip:** De kern van de aanval is dat elke deelnemer niet weet of de publieke sleutel die hij ontvangt daadwerkelijk van de geadresseerde afkomstig is, of van de aanvaller.
### 3.2 Compromittering van verdere communicatie
Zodra Darth de twee afzonderlijke geheime sleutels ($K_1$ en $K_2$) heeft opgezet, kan hij alle communicatie tussen Alice en Bob compromitteren:
* **Alice stuurt een versleuteld bericht $M$ naar Bob:** Alice versleutelt haar bericht met de vermeende gedeelde geheime sleutel $K_2$: $E(K_2, M)$ [7](#page=7).
* **Darth onderschept en leest het bericht:** Darth onderschept het versleutelde bericht van Alice. Omdat hij de sleutel $K_2$ deelt met Alice, kan hij het bericht ontcijferen en de originele boodschap $M$ verkrijgen [7](#page=7).
* **Darth manipuleert of stuurt het bericht door:**
* **Afluisteren zonder modificatie:** Darth kan het bericht doorsturen naar Bob, versleuteld met de sleutel $K_1$ die hij deelt met Bob: $E(K_1, M)$. Bob ontvangt het bericht, ontcijfert het met $K_1$, en denkt dat het rechtstreeks van Alice komt [8](#page=8).
* **Modificatie van het bericht:** Darth kan het bericht wijzigen tot $M'$ en dit vervolgens versleuteld met $K_1$ naar Bob sturen: $E(K_1, M')$. Bob ontvangt het gemanipuleerde bericht en ontcijfert het met $K_1$, zich onbewust van de manipulatie [8](#page=8).
### 3.3 Oplossingen voor de kwetsbaarheid
De kwetsbaarheid voor MITM-aanvallen ontstaat doordat het standaard Diffie-Hellman protocol de identiteit van de deelnemers niet authentiseert. Om dit te ondervangen, kunnen de volgende technieken worden toegepast [8](#page=8):
* **Digitale handtekeningen:** Door gebruik te maken van digitale handtekeningen kunnen de identiteit van de zender van een publieke sleutel worden geverifieerd [8](#page=8).
* **Publieke-sleutelcertificaten:** Certificaten, uitgegeven door vertrouwde Certificate Authorities (CA's), koppelen een publieke sleutel aan een specifieke entiteit, waardoor de authenticiteit van de sleutel kan worden gegarandeerd [8](#page=8).
> **Tip:** Het gebruik van digitale handtekeningen of certificaten zorgt ervoor dat elke partij er zeker van kan zijn dat de publieke sleutel die zij uitwisselen daadwerkelijk van de bedoelde communicatiepartner afkomstig is, wat de MITM-aanval effectief blokkeert.
---
## 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 cryptografie | Een type cryptografisch systeem waarbij dezelfde sleutel wordt gebruikt voor zowel versleuteling als ontsleuteling van berichten. Dit vereist een veilige methode voor het uitwisselen van deze sleutel. |
| Asymmetrische cryptografie | Een cryptografisch systeem dat gebruik maakt van een paar sleutels: een publieke sleutel voor versleuteling en een private sleutel voor ontsleuteling. Dit lost het sleuteluitwisselingsprobleem op zonder directe overdracht van de geheime sleutel. |
| Sleuteluitwisselingsprotocol | Een protocol dat twee partijen in staat stelt om een gemeenschappelijke geheime sleutel te creëren en overeen te komen, zonder deze sleutel direct over te hoeven verzenden, zodat ze vervolgens via symmetrische encryptie kunnen communiceren. |
| Publieke sleutel | Een sleutel die vrijelijk gedeeld kan worden met iedereen en gebruikt wordt om berichten te versleutelen die alleen door de corresponderende private sleutel kunnen worden ontsleuteld. |
| Private sleutel | Een sleutel die geheim moet worden gehouden door de eigenaar en gebruikt wordt om berichten te ontsleutelen die met de bijbehorende publieke sleutel zijn versleuteld. |
| Diffie-Hellman sleuteluitwisseling | Een specifiek sleuteluitwisselingsprotocol dat partijen toestaat een gedeeld geheim te creëren over een onveilig communicatiekanaal, gebaseerd op de principes van discrete logaritmen. |
| Primum getal q | Een natuurlijk getal groter dan 1 dat alleen deelbaar is door 1 en zichzelf. In het Diffie-Hellman protocol is dit een publiek bekend getal dat de modulus vormt voor de berekeningen. |
| Primitieve wortel | Een getal $\alpha$ met betrekking tot een primum getal $q$, zodanig dat elke getal van 1 tot $q-1$ kan worden uitgedrukt als $\alpha^x \pmod{q}$ voor een bepaalde macht $x$. |
| $X_A$ | De private sleutel van gebruiker A, een willekeurig integer kleiner dan $q$. |
| $Y_A$ | De publieke sleutel van gebruiker A, berekend als $\alpha^{X_A} \pmod{q}$. |
| Man-in-the-middle aanval | Een aanval waarbij een kwaadwillende derde partij stiekem de communicatie tussen twee partijen onderschept, mogelijk verandert, en deze vervolgens doorstuurt, waardoor beide partijen denken dat ze rechtstreeks met elkaar communiceren. |
| Authenticatie | Het proces van het verifiëren van de identiteit van een gebruiker of apparaat dat probeert toegang te krijgen tot een systeem of informatie, om ervoor te zorgen dat de communicerende partijen zijn wie ze beweren te zijn. |