Hoofdstuk 11. De cryptographic device driver

Inhoudsopgave

11.1. Kernel ondersteuning configureren
11.2. Een cgd device configureren
11.3. Swap encryptie

De cgd driver biedt de functionaliteit die het mogelijk maakt schijven of partities te gebruiken als gecodeerde opslagruimte. Na de authenticatie is de gecodeerde ruimte beschikbaar via cgd pseudo-devices. De cgd driver biedt de volgende encryptie-algoritmen:

Alledrie encryptie-algoritmen werken in CBC modus. Dit betekent dat elke blok ge-XORt wordt met de vorige gecodeerde blok, voordat de blok gecodeerd wordt. Dit verkleint het risico dat er een patroon gevonden kan worden in de gecodeerde informatie, die gebruikt kan worden om de encryptie te breken.

Een ander aspect van cgd dat niet onbesproken moet blijven is dat cgdconfig een aantal verificatiemethoden biedt. Deze verificatiemethoden worden gebruikt om te controleren of het sleutel goed is. De volgende verificatiemethoden zijn beschikbaar:

11.1. Kernel ondersteuning configureren

Om cgd te kunnen gebruiken heeft u een kernel nodig met ondersteuning voor de cgd pseudo-device. Zorg dat de volgende regel aanwezig is in de kernelconfiguratie:

pseudo-device   cgd     4       # cryptographic disk driver
    

Het nummer specificeert hoeveel cgd devices tegelijkertijd geconfigureerd kunnen worden. Nadat u de cgd pseudo-device toegevoegd heeft aan de kernelconfiguratie kunt u de kernel hercompileren en starten om de cgd ondersteuning te activeren.

11.2. Een cgd device configureren

De praktijk is de beste leermeester. In deze sectie zullen we naar een configuratievoorbeeld van cgd kijken. In dit voorbeeld hebben we de “h” partitie van de wd0 schijf gereserveerd voor encryptiedoeleinden, en we willen een gecodeerd FFS bestandssysteem maken. De eerste stap is het aanmaken van een configuratiebestand voor de wd0h partitie. Dit bestand noemen we /etc/cgd/wd0h. We kunnen het aanmaken met behulp van het cgdconfig commando. Stel dat we de Blowfish cipher willen gebruiken en willen controleren op een FFS bestandssysteem als verificatie. Het volgende commando zal deze configuratie aanmaken:

# cgdconfig -g -o /etc/cgd/wd0h -V ffs blowfish-cbc
    

De “-g” parameter zorgt ervoor dat cgdconfig het configuratiebestand aanmaakt, de naam van het bestand wordt opgegeven door middel van de “-o” parameter. De “-V” parameter specificeert de verificatiemethode die gebruikt moet worden, geldige keuzes zijn none, disklabel en ffs (deze methoden zijn reeds uitgelegd). Het configuratie bestand ziet er als volgt uit:

algorithm blowfish-cbc;
iv-method encblkno;
keylength 128;
verify_method ffs;
keygen pkcs5_pbkdf2 {
        iterations 71564;
	salt AAAAgOGFALVANSHf61jf4XYlnUI=;
};
    

Op dit moment hebben we een configuratiebestand aangemaakt en kunnen we deze configuratie gaan gebruiken. De volgende stap is de configuratie van een cgd pseudo-device. Dit kan gedaan worden met het volgende commando:

# cgdconfig -V none cgd0 /dev/wd0h
    

Dit commando configureert de cgd0 device, zodat het wd0h gebruikt om gecodeerde data op te slaan. Op dit moment gebruiken we nog geen verificatie, aangezien de cgd0 “schijf” nog geen geldig FFS bestandssysteem heeft. cgdconfig zal om een sleutel (wachtwoord) vragen; voer hier het wachtwoord in dat u wilt gebruiken voor deze gecodeerde partitie. U kunt de cgd0 device als een normale schijf gebruiken en met disklabel indelen. Maak een partitie aan met het type “4.2BSD” en maak een FFS bestandssysteem aan op de partitie met het newfs commando.

Na de partitionering en het aanmaken van een FFS bestandssysteem kan de cgd pseudo-device ontkoppeld worden met:

# cgdconfig -u cgd0
    

Na deze configuratiestappen kan de gecodeerde partitie gebruikt worden met:

# cgdconfig cgd0 /dev/wd0h
    

Let op dat de “-V” parameter achterwege gelaten wordt. De verificatiemethode die opgegeven is in /etc/cgd/wd0h zal gebruikt worden.

11.3. Swap encryptie

Een vraag die vaak gesteld wordt op de mailinglists is hoe NetBSD swap kan coderen. De instructies hierboven zouden genoeg informatie geven hoe u dit kunt doen, maar deze sectie geeft voor het gemak nog een korte samenvatting. In dit voorbeeld zullen we wd0b gebruiken voor het opslaan van de gecodeerde swap partitie. Swap zal gecodeerd worden met de Blowfish cipher. Zoals gewoonlijk is de eerste stap het aanmaken van een cgd configuratiebestand. Deze keer zullen we de “-k” parameter gebruiken om automatisch een sleutel te genereren, en we zullen geen verificatiemethode gebruiken (omdat de partitie na elke herstart opnieuw geļnitialiseerd zal worden). Voer de volgende commando's uit om /etc/cgd/wd0b aan te maken:

# cgdconfig -g -o /etc/cgd/wd0b -V none -k randomkey blowfish-cbc
    

Met dit configuratiebestand kunnen we de cgd0 pseudo-device configureren:

# cgdconfig cgd0 /dev/wd0b
    

Hierna kunt u een disklabel aanmaken met een swap partitie. Sla deze disklabel vervolgens op als /etc/cgd/wd0b.disklabel. Lees alstublieft disklabel(8) voor informatie over hoe u het disklabel commando kunt gebruiken om een swap partitie aan te maken.

Nu moeten we de cgd configuratie aanpassen, zodat cgd0 geconfigureerd worden tijdens het starten van NetBSD. Voeg de volgende regel toe aan /etc/cgd/cgd.conf:

cgd0 /dev/wd0b
    

cgd0 wordt opnieuw geļnitialiseerd met een lege disklabel na een herstart van het systeem, omdat er geen verificatie gebruikt wordt en er een willekeurige sleutel gemaakt wordt. Daarom moet de cgd0 device ingericht worden met het disklabel die zojuist opgeslagen is. Dit kan gedaan worden door het /etc/rc.conf.d/cgd bestand aan te maken en deze functie toe te voegen (met dank aan Lubomir Sedlacik):

swap_device="cgd0"
swap_disklabel="/etc/cgd/wd0b.disklabel"
start_postcmd="cgd_swap"

cgd_swap()
{
	if [ -f $swap_disklabel ]; then
		disklabel -R -r $swap_device $swap_disklabel
	fi
} 
    

Voeg vervolgens de cgd0 swap partitie die u geconfigureerd heeft toe aan /etc/fstab.