Cover
Jetzt kostenlos starten LSS - Lecture VII - LUKS encryption.pdf
Summary
# Introductie tot LUKS-encryptie
LUKS (Linux Unified Key Setup) is de standaard voor volledige schijf- of partitie-encryptie in Linux, aangedreven door de dm-crypt kernelmodule [2](#page=2).
### 1.1 Wat is LUKS?
LUKS staat voor Linux Unified Key Setup. Het is een gestandaardiseerde manier om data op een blokapparaat (zoals een harde schijf of partitie) te versleutelen. LUKS werkt bovenop dm-crypt, een kernelmodule die zorgt voor de daadwerkelijke encryptie en decryptie van data. De 'dm' in dm-crypt staat voor Device-mapper, wat een generieke methode is om virtuele lagen van blokapparaten te creëren. LUKS is compatibel met diverse tools en wordt breed ondersteund in verschillende Linux-distributies [2](#page=2).
### 1.2 Voordelen van LUKS
De voordelen van het gebruik van LUKS omvatten:
* **Gebruiksvriendelijk sleutelbeheer:** LUKS biedt een eenvoudige manier om encryptiesleutels te beheren [3](#page=3).
* **Ondersteuning voor meerdere sleutels:** Het is mogelijk om meerdere sleutels of passphrases te koppelen aan één versleutelde partitie, wat flexibiliteit biedt [3](#page=3) [5](#page=5).
* **Brede ondersteuning:** LUKS wordt erkend en ondersteund door de meeste gangbare Linux-distributies [3](#page=3).
* **Betrouwbare technologie:** Het is een bewezen en betrouwbare technologie voor databeveiliging [3](#page=3).
* **Anti-forensische functies:** LUKS bevat technieken die het berekeningsintensief maken om brute-force aanvallen uit te voeren, wat de veiligheid verhoogt [3](#page=3).
### 1.3 Hoe LUKS werkt
LUKS werkt door een speciale LUKS-header toe te voegen aan het begin van het versleutelde apparaat. Deze header bevat metadata over de encryptieconfiguratie [5](#page=5).
Het kerncomponent is dm-crypt, dat de daadwerkelijke encryptie van de data verzorgt. dm-crypt kan ook direct worden gebruikt zonder een LUKS-header, wat nuttig kan zijn voor steganografische toepassingen en het creëren van plausibele ontkenning [5](#page=5).
Het sleutelbeheer binnen LUKS is hiërarchisch opgebouwd. Er is een 'volume key' die de data op het schijfblokniveau versleutelt. Om deze volume key te beveiligen, worden passphrases of sleutelbestanden gebruikt om de volume key zelf te versleutelen. Dit multi-laagse benadering maakt het mogelijk om bijvoorbeeld een passphrase te wijzigen zonder de volledige partitie of schijf opnieuw te hoeven versleutelen [5](#page=5).
> **Tip:** Het multi-laagse sleutelbeheer is een cruciaal voordeel van LUKS. Het betekent dat als u uw wachtwoord wilt veranderen, u niet de hele inhoud van uw versleutelde schijf hoeft te hercoderen. U hoeft alleen de verbinding tussen uw nieuwe wachtwoord en de volume key te herstellen [5](#page=5).
---
# Het correcte proces voor partitie-encryptie met LUKS
Dit onderwerp beschrijft de essentiële volgorde voor het correct instellen van partitie-encryptie met LUKS, inclusief de interactie tussen het encryptie- en bestandssysteem [4](#page=4).
### 2.1 De juiste volgorde voor partitioneren, initialiseren en formatteren
Het correct toepassen van LUKS-encryptie vereist een specifieke volgorde van handelingen om de integriteit en functionaliteit te waarborgen [4](#page=4).
#### 2.1.1 Partitioneringsfase
Allereerst dient de schijf te worden gepartitioneerd. Het is cruciaal om deze stap vóór de encryptie uit te voeren. Indien de schijf eerst zou worden versleuteld alvorens partities aan te maken, zou de partitietabel zelf gedecodeerd moeten worden om partities te creëren en beheren. Dit ondermijnt het doel van encryptie. Bovendien zouden partities niet onafhankelijk van elkaar versleuteld kunnen worden, wat het beheer ervan bemoeilijkt [4](#page=4).
> **Tip:** Partitioner eerst de schijf; dit zorgt ervoor dat de partitietabel en de partities zelf afzonderlijk beheerd en versleuteld kunnen worden.
#### 2.1.2 Initialisatie met LUKS
Na het partitioneren wordt de encryptie geïnitialiseerd met LUKS op de betreffende partitie. Dit proces schrijft essentiële metadata voor de encryptie en de sleutels naar de partitie. De daadwerkelijke encryptie vindt pas plaats wanneer er data naar de partitie wordt geschreven. De resulterende entiteit wordt een 'LUKS-container' genoemd [4](#page=4).
#### 2.1.3 Formatteren van de LUKS-container
Tot slot wordt de geopende LUKS-container geformatteerd met een bestandssysteem. Het is belangrijk om te begrijpen dat LUKS geen kennis heeft van het bestandssysteem. LUKS opereert op het niveau van blokapparaten en verzorgt de encryptie van ruwe data die naar de schijf wordt geschreven of ervan wordt gelezen. Omgekeerd is het bestandssysteem zich niet bewust van de onderliggende encryptie; het functioneert alsof het met een regulier, onversleuteld blokapparaat werkt [4](#page=4).
> **Voorbeeld:** Een gebruiker formatteert een LUKS-container met `mkfs.ext4 /dev/mapper/` en mount deze vervolgens naar `/mnt`, waarna bestanden normaal kunnen worden gelezen en geschreven.
### 2.2 Interactie tussen LUKS en het bestandssysteem
De relatie tussen LUKS en het bestandssysteem is hiërarchisch en transparant voor de gebruiker [11](#page=11) [4](#page=4).
#### 2.2.1 Het ontgrendelde blokapparaat
Na het succesvol ontgrendelen van een LUKS-partitie, wordt deze beschikbaar gemaakt via een symbolische link in `/dev/mapper/`. Dit virtuele blokapparaat kan vervolgens op dezelfde manier worden behandeld als elk ander normaal partitieblokapparaat [11](#page=11).
#### 2.2.2 Data-encryptie en -decryptie on-the-fly
Wanneer een bestandssysteem op dit gemapte apparaat is geformatteerd en gemount, communiceert het met het onderliggende blokapparaat. dm-crypt (de module achter LUKS) versleutelt en ontsleutelt data op de achtergrond ('on-the-fly') tijdens schrijf- en leesbewerkingen van de gebruiker. Dit proces is transparant; de gebruiker interacteert met een standaard bestandssysteem [11](#page=11) [4](#page=4).
> **Belangrijk:** Ongebruikte ruimte op de LUKS-container blijft onversleuteld totdat er data naar wordt geschreven [11](#page=11).
#### 2.2.3 Beveiligen van de mapping
Om de LUKS-mapping veilig te sluiten en de data weer te beveiligen, wordt de `cryptsetup close ` commando gebruikt [11](#page=11).
### 2.3 Prestatie en beveiligingsaspecten
De scheiding tussen LUKS en het bestandssysteem biedt significante voordelen op het gebied van prestaties en beveiliging [13](#page=13).
#### 2.3.1 Bestandsysteemagnostisch
LUKS-encryptie werkt onafhankelijk van het gekozen bestandssysteem. Dit betekent dat de keuze van het bestandssysteem geen invloed heeft op de prestaties of het gedrag van de encryptie. Elk bestandssysteem, inclusief swap-partities, kan worden versleuteld met LUKS. Dit staat in contrast met systemen zoals BitLocker op Windows, dat geïntegreerd is met specifieke bestandssystemen zoals NTFS/FAT/ex-FAT [13](#page=13).
#### 2.3.2 Beveiligingsborging
Omdat het bestandssysteem bovenop de LUKS-laag opereert, worden alle data, inclusief de metadata van het bestandssysteem (zoals superblokken en inodes), versleuteld. Dit zorgt voor een algehele databeveiliging op partitieniveau [13](#page=13).
---
# Gebruik van cryptsetup voor LUKS-beheer
Dit onderwerp behandelt de essentiële commando's en processen voor het beheren van LUKS-partities met behulp van het `cryptsetup`-pakket, inclusief initialisatie, toegang, gebruik en sluiting van versleutelde volumes, evenals beheer van de LUKS-header en sleutels [9](#page=9).
### 3.1 Initialiseren van een LUKS-partitie
Het initialiseren van een partitie voor LUKS-versleuteling creëert de benodigde structuur voor de beveiliging van de gegevens [9](#page=9).
#### 3.1.1 Het `luksFormat` commando
Het `cryptsetup luksFormat` commando wordt gebruikt om een LUKS-header, een volume-sleutel en de eerste wachtwoordzin-sleutel aan te maken op een gespecificeerde partitie [9](#page=9).
* **Commando:** `cryptsetup luksFormat /dev/sdXY`
* **Voorbeeld:** `cryptsetup luksFormat /dev/sdb1` [9](#page=9).
### 3.2 Openen van een LUKS-partitie
Nadat een partitie is geïnitialiseerd met LUKS, kan deze worden geopend om toegang te krijgen tot de versleutelde gegevens [10](#page=10).
#### 3.2.1 Het `open` commando
Het `cryptsetup open` commando ontgrendelt de LUKS-partitie met behulp van een correcte wachtwoordzin of sleutel. Dit proces ontsluit de volume-sleutel die nodig is voor de decryptie [10](#page=10).
* **Commando:** `cryptsetup open /dev/sdXY `
* **Resultaat:** Na succesvolle authenticatie wordt er een virtueel block device aangemaakt onder de naam `/dev/dm-*`, met een vriendelijkere symlink genaamd `/dev/mapper/` [10](#page=10).
### 3.3 Gebruik van de LUKS-partitie
Na het openen van de LUKS-partitie kan het resulterende mapper-device worden behandeld als een standaard blokapparaat voor de opslag van bestanden en systemen [11](#page=11).
* **Formatteren:** Als de partitie voor het eerst wordt gebruikt, kan deze worden geformatteerd met een bestandssysteem, bijvoorbeeld: `mkfs.ext4 /dev/mapper/` [11](#page=11).
* **Mounten:** Het gemapte device kan worden gemount op een mount point, zoals elk ander bestandssysteem: `mount /dev/mapper/ /mnt` [11](#page=11).
* **Bestandsoperaties:** Gebruikers kunnen bestanden lezen en schrijven naar het gemounte deel als een normaal bestandssysteem [11](#page=11).
* **On-the-fly encryptie/decryptie:** dm-crypt zorgt voor de encryptie en decryptie van data op de achtergrond tijdens lees- en schrijfoperaties [11](#page=11).
* **Niet-gebruikte ruimte:** Ruimte die nog niet is beschreven, blijft onversleuteld totdat er gegevens naar worden geschreven [11](#page=11).
#### 3.3.1 Het sluiten van een LUKS-partitie
Om een LUKS-mapping veilig te verwijderen en het volume weer te vergrendelen, wordt het `cryptsetup close` commando gebruikt [11](#page=11).
* **Commando:** `cryptsetup close ` [11](#page=11).
### 3.4 Beheer van de LUKS-header
De LUKS-header is een cruciaal onderdeel dat aan het begin van de versleutelde partitie staat [12](#page=12).
* **Inhoud:** De header bevat metadata zoals het gebruikte encryptie-algoritme (bijvoorbeeld AES), cipher mode (zoals XTS), hashing-algoritme voor wachtwoordvalidatie, en informatie over de sleutel-slots [12](#page=12).
* Het standaard cipher dat voor LUKS wordt gebruikt, is `aes-xts-plain64` [12](#page=12).
* De standaard sleutelgrootte voor LUKS is 512 bits [12](#page=12).
* **Sleutel-slots:** Deze slots koppelen gebruikerswachtwoorden aan de volume-sleutel [12](#page=12).
* LUKS1 kent 8 sleutel-slots [12](#page=12).
* LUKS2 kent 32 sleutel-slots [12](#page=12).
* **Belangrijk:** Verlies van de LUKS-header leidt tot onherstelbaar dataverlies, omdat decryptie onmogelijk wordt [12](#page=12).
* **Back-up en Inspectie:**
* Het wordt sterk aanbevolen om de LUKS-header te back-uppen met `cryptsetup luksHeaderBackup` [12](#page=12).
* De inhoud van de LUKS-header kan worden geanalyseerd met `cryptsetup luksDump` [12](#page=12).
### 3.5 Sleutelbeheer in LUKS
LUKS-devices ondersteunen meerdere sleutel-slots, wat de mogelijkheid biedt om back-upsleutels of alternatieve wachtwoordzinnen toe te voegen [14](#page=14).
* **LUKS1:** Ondersteunt maximaal 8 sleutels [14](#page=14).
* **LUKS2:** Ondersteunt maximaal 32 sleutels [14](#page=14).
#### 3.5.1 Toevoegen en verwijderen van sleutels
* **Een nieuwe sleutel toevoegen:**
* **Commando:** `cryptsetup luksAddKey /dev/sdXY` [14](#page=14).
* **Een sleutel verwijderen:**
* **Commando:** `cryptsetup luksRemoveKey /dev/sdXY` [14](#page=14).
> **Tip:** Het toevoegen van meerdere wachtwoordzinnen of sleutels aan een LUKS-volume is een effectieve methode om verlies van toegang tot uw versleutelde gegevens te voorkomen, mocht u een van de wachtwoordzinnen vergeten. Zorg altijd voor een veilige opslag van back-up sleutels [14](#page=14).
---
# Geavanceerde concepten en beperkingen van LUKS
Dit onderwerp behandelt de integratie van LVM bovenop LUKS, de prestatie-isolatie, beveiligingsgaranties en de inherente beperkingen van LUKS, evenals alternatieve versleutelingsoplossingen.
### 4.1 LVM op LUKS
Tijdens de installatie van een Linux-besturingssysteem wordt LVM (Logical Volume Management) doorgaans aangeboden bovenop LUKS (Linux Unified Key Setup). Dit betekent dat de versleutelde partitie, beheerd door LUKS, fungeert als de onderliggende opslag voor de logische volumes die door LVM worden gecreëerd [15](#page=15) [16](#page=16).
### 4.2 Beperkingen van LUKS
Ondanks de sterke beveiligingsvoordelen van LUKS, zijn er diverse beperkingen waarmee rekening gehouden moet worden:
* **Bescherming bij uitgeschakeld systeem:** LUKS en vergelijkbare schijfversleutelingsoplossingen beschermen de gegevens uitsluitend wanneer het systeem is uitgeschakeld. Zodra het systeem draait en LUKS de schijf heeft ontsleuteld, kunnen bestanden gelezen worden door iedereen met fysieke toegang tot het systeem [17](#page=17).
* **Sleutelbeheer:** Het correct beheren van de versleutelingssleutels is cruciaal. Het vereist een sterk wachtwoord [17](#page=17).
* **Fysieke schade:** LUKS biedt geen bescherming tegen fysieke schade aan de opslagmedia [17](#page=17).
* **Aantal sleutels:** Het aantal verschillende toegangssleutels dat voor een LUKS-container kan worden ingesteld, is beperkt tot een maximum van 32 [17](#page=17).
* **Directory-/bestandsniveau-encryptie:** LUKS biedt geen functionaliteit voor het versleutelen van individuele directories of bestanden per gebruiker [17](#page=17).
> **Tip:** Vanwege de beperking op het aantal sleutels en het ontbreken van bestandsniveau-encryptie, is LUKS voornamelijk geschikt voor het versleutelen van volledige opslagapparaten of partities, en minder voor gedetailleerde toegangscontrole op gebruikersniveau binnen een gedeelde omgeving.
### 4.3 Alternatieven voor LUKS
Voor scenario's die specifieke vereisten hebben die LUKS niet kan vervullen, zijn er alternatieve oplossingen beschikbaar, zowel op Linux als op andere platforms:
* **Directory-level encryptie op Linux:**
* Voor bestandssystemen zoals ext4 en f2fs kan `fscrypt` worden gebruikt [18](#page=18).
* ZFS biedt een ingebouwde native encryptiefunctie [18](#page=18).
* **Andere platforms dan Linux:**
* **VeraCrypt:** Een multi-platform oplossing die compatibel is met verschillende besturingssystemen [18](#page=18).
* **BitLocker:** De ingebouwde encryptieoplossing voor Windows [18](#page=18).
> **Example:** Een gebruiker die een volledige schijfversleuteling wenst voor zijn laptop, kan LUKS gebruiken. Als dezelfde gebruiker echter specifieke gevoelige documenten binnen zijn thuismap wil versleutelen met een aparte sleutel, onafhankelijk van de systeemsleutel, en met de mogelijkheid om dit per gebruiker te doen, dan zijn oplossingen zoals `fscrypt` of VeraCrypt meer geschikt.
---
## 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 |
|------|------------|
| LUKS | Linux Unified Key Setup, een standaard voor volledige schijf- of partitie-encryptie in Linux die gebruikmaakt van dm-crypt. Het biedt gebruiksvriendelijk sleutelbeheer en multi-sleutelondersteuning. |
| dm-crypt | Een kernelmodule in Linux die cryptografische operaties uitvoert op block devices. Het vormt de basis voor schijfencryptie en kan met of zonder de LUKS-header worden gebruikt. |
| Device-mapper (dm) | Een generieke framework in de Linux-kernel dat virtuele lagen van block devices creëert, waardoor complexe opslagconfiguraties zoals encryptie mogelijk worden. |
| LUKS-container | Een partitie of schijf die is geïnitialiseerd met LUKS. Het bevat een LUKS-header met metadata voor encryptie en sleutels, en dient als een beveiligde laag waarover een bestandssysteem kan worden gecreëerd. |
| LUKS-header | Een niet-versleuteld gedeelte aan het begin van een LUKS-container dat essentiële metadata bevat, zoals het gebruikte encryptie-algoritme, cipher-modus, hash-functie en sleutel-slots voor het opslaan van versleutelde volume-sleutels. |
| Volume-sleutel | Een willekeurige sleutel die wordt gebruikt om de daadwerkelijke gegevens op een schijf of partitie te versleutelen. Deze volume-sleutel wordt zelf versleuteld met behulp van wachtwoorden of sleutelbestanden die in de LUKS-header zijn opgeslagen. |
| Sleutel-slot | Een locatie binnen de LUKS-header die een versleutelde versie van de volume-sleutel bevat, beschermd door een gebruikerswachtwoord of sleutelbestand. LUKS1 ondersteunt maximaal 8 sleutel-slots, LUKS2 tot 32. |
| cryptsetup | Een command-line tool in Linux voor het beheren van LUKS-versleutelde volumes. Het wordt gebruikt voor het initialiseren, openen, sluiten en aanpassen van LUKS-partities en sleutels. |
| LVM | Logical Volume Manager, een flexibel opslagsysteem in Linux dat gebruikmaakt van virtuele opslagvolumes. LVM wordt vaak bovenop LUKS geplaatst tijdens Linux-installaties voor geavanceerd schijfbeheer. |
| fscrypt | Een methode voor directory-level encryptie op Linux-bestandssystemen zoals ext4 en f2fs. Het biedt versleuteling per directory, wat granulariteit en gebruikersspecifieke beveiliging mogelijk maakt. |
| VeraCrypt | Een open-source, multi-platform hulpprogramma voor encryptie dat wordt gebruikt voor het versleutelen van opslagapparaten of het creëren van versleutelde volumes, als alternatief voor platform-specifieke oplossingen. |