Inhoudsopgave
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:
aes-cbc: AES (Rijndael). AES gebruikt een 128 bit blokgrootte en accepteert een sleutel van 128, 192 of 256 bit
blowfish-cbc: Blowfish gebruikt een blokgrootte van 64 bit en accepteert 128 bit sleutels
3des-cvc: Triple DES gebruikt een blokgrootte van 64 bit en accepteert 192 bit sleutels (let op dat slechts 168 bit werkelijk voor de encryptie gebruikt worden)
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:
none: er wordt niet geverifieerd of het sleutel juist is. Dit kan gevaarlijk zijn, als een verkeerde sleutel ingevoerd is, zal cgdconfig de cgd device zoals gewoonlijk configureren, maar de gecodeerde data zal vernietigd worden (decodering van blokken met een verkeerde sleutel zal willekeurige data opleveren, omdat er geen goede schijfstructuur gevonden kan worden zal er een nieuwe disklabel aangemaakt worden, met de verkeerde sleutel).
disklabel: cgdconfig zoekt naar een geldige disklabel. Als een geldige disklabel gevonden is met de ingevoerde sleutel zal de authenticatie succesvol zijn.
ffs: cgdconfig zoekt naar een geldig FFS bestandssysteem. Als een FFS bestandssysteem gevonden wordt met de ingevoerde sleutel zal de authenticatie succesvol zijn.
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.
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.
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
.