Tips en Trucs 2011

Veilig versleutelde externe media

Om uw persoonlijke gegevens te beschermen tegen al te nieuwsgierige blikken, kun je deze gegevens opslaan op versleutelde externe media zoals een USB-stick. Het versleutelen van een USB-stick wordt in deze tip in enkele stappen uitgelegd.

Stap 1

Om de USB-stick te versleutelen, gebruiken we het hulpmiddel cryptsetup. In de meeste distributies is dit hulpmiddel standaard geïnstalleerd (ook in openSUSE 11.4). Indien cryptsetup niet op uw systeem is geïnstalleerd, is het zeker in de standaard softwarebronnen van uw distributie aanwezig waardoor je het met standaard software installatie methode van uw distributie kunt installeren.

Stap 2

Waarschuwing: Deze stap verwijderd onherroepelijk alle gegevens van de USB-stick.

In deze stap bereiden we de USB-stick voor op een versleuteld gebruik. Deze stap verandert de indeling (partitietabel) van de USB-stick, waardoor alle gegevens onherroepelijk gewist worden.

De externe media (USB-stick) identificeren

Om de USB-stick te kunnen versleutelen, moeten we deze in de map /dev/ (map met apparaten) herkennen. Hoewel er verschillende methoden zijn, belichten we er hier twee. Meestal heeft een USB-stick de naam /dev/sdb1, /dev/sdc1, enz.

De eerste methode gebruikt het hulpmiddel fdisk. Door alle beschikbare partities weer te geven, kun je de naam van de USB-stick achterhalen. Tip: gebruik de grootte (capaciteit) van het apparaat om de USB-stick te identificeren.

dany@linux-y8ny:~> sudo /sbin/fdisk -l
root's password:

Schijf /dev/sda: 500.1 GB, 500107862016 bytes
255 koppen, 63 sectoren/spoor, 60801 cilinders, totaal 976773168 sectoren
Eenheid = sectoren van 1 * 512 = 512 bytes

Sectorgrootte (logischl/fysiek): 512 bytes / 512 bytes
in-/uitvoergrootte (minimaal/optimaal): 512 bytes / 512 bytes
Schijf-ID: 0x27987793

 Apparaat Opstart   Begin       Einde     Blokken   ID  Systeem
/dev/sda1           12678     4209029     2098176   27  verborgen NTFS WinRE
/dev/sda2         4212332   245376809   120582239    7  HPFS/NTFS/exFAT
/dev/sda3       245376810   448807904   101715547+  83  Linux
/dev/sda4   *   448807905   976768064   263980080    5  uitgebreid
/dev/sda5       448807968   457193834     4192933+  82  Linux wisselgeheugen
/dev/sda6       457193898   543173714    42989908+  83  Linux
/dev/sda7       543173778   976768064   216797143+  83  Linux

Schijf /dev/sdc: 3909 MB, 3909091328 bytes
88 koppen, 16 sectoren/spoor, 5422 cilinders, totaal 7634944 sectoren
Eenheid = sectoren van 1 * 512 = 512 bytes

Sectorgrootte (logischl/fysiek): 512 bytes / 512 bytes
in-/uitvoergrootte (minimaal/optimaal): 512 bytes / 512 bytes
Schijf-ID: 0x993f397c

 Apparaat Opstart   Begin       Einde     Blokken   ID  Systeem
/dev/sdc1            2048     7634943     3816448   83  Linux

In het voorbeeld wordt mijn 4 GB USB-stick als /dev/sdc voorgesteld.

De tweede methode gebruikt het dmesg hulpmiddel. De dmesg opdracht toont de kernel berichten op de terminal. Bij het in de computer pluggen van de USB-stick wordt deze door de kernel opgemerkt en worden berichten gestuurd om de nodige acties te ondernemen om de USB-stick te activeren voor gebruik.

dany@linux-y8ny:~> dmesg
...
[   49.698070] usb 1-1.2: new high speed USB device using ehci_hcd and address 5
[   49.786575] usb 1-1.2: New USB device found, idVendor=13fe, idProduct=3100
[   49.786583] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   49.786588] usb 1-1.2: Product: USB DISK 2.0
[   49.786593] usb 1-1.2: Manufacturer:         
[   49.786596] usb 1-1.2: SerialNumber: 07A40802BB89AFFA
[   49.787131] scsi9 : usb-storage 1-1.2:1.0
[   50.816286] scsi 9:0:0:0: Direct-Access              USB DISK 2.0     PMAP PQ: 0 ANSI: 0 CCS
[   50.816615] sd 9:0:0:0: Attached scsi generic sg3 type 0
[   52.139835] sd 9:0:0:0: [sdc] 7634944 512-byte logical blocks: (3.90 GB/3.64 GiB)
[   52.144517] sd 9:0:0:0: [sdc] Write Protect is off
[   52.144525] sd 9:0:0:0: [sdc] Mode Sense: 23 00 00 00
[   52.144531] sd 9:0:0:0: [sdc] Assuming drive cache: write through
[   52.153367] sd 9:0:0:0: [sdc] Assuming drive cache: write through
[   52.175246]  sdc: sdc1
[   52.180781] sd 9:0:0:0: [sdc] Assuming drive cache: write through
[   52.180784] sd 9:0:0:0: [sdc] Attached SCSI removable disk

De USB-stick partitioneren

Nu we weten hoe we de USB-stick kunnen aanspreken, kunnen we deze partitioneren. Met het hulpmiddel fdisk verwijderen we alle oude partities (en dus alle gegevens op de USB-stick) en maken we één grote partitie aan.

dany@linux-y8ny:~> sudo /sbin/fdisk /dev/sdc
root's password:

Opdracht (m voor hulp): p

Schijf /dev/sdc: 3909 MB, 3909091328 bytes
88 koppen, 16 sectoren/spoor, 5422 cilinders, totaal 7634944 sectoren
Eenheid = sectoren van 1 * 512 = 512 bytes

Sectorgrootte (logischl/fysiek): 512 bytes / 512 bytes
in-/uitvoergrootte (minimaal/optimaal): 512 bytes / 512 bytes
Schijf-ID: 0x993f397c

 Apparaat Opstart   Begin       Einde     Blokken   ID  Systeem
/dev/sdc1            2048     7634943     3816448   83  Linux

Opdracht (m voor hulp): d
Geselecteerde partitie is 1

Opdracht (m voor hulp): p

Schijf /dev/sdc: 3909 MB, 3909091328 bytes
88 koppen, 16 sectoren/spoor, 5422 cilinders, totaal 7634944 sectoren
Eenheid = sectoren van 1 * 512 = 512 bytes

Sectorgrootte (logischl/fysiek): 512 bytes / 512 bytes
in-/uitvoergrootte (minimaal/optimaal): 512 bytes / 512 bytes
Schijf-ID: 0x993f397c

 Apparaat Opstart   Begin       Einde     Blokken   ID  Systeem

Opdracht (m voor hulp): n
Opdracht  Actie
   e      uitgebreide partitie
   p      primaire partitie (1-4)
p
Partitienummer (1-4, standaard 1): 1
Eerste sector (2048-7634943, standaard 2048): 
Standaardwaarde 2048 wordt gebruikt
Laatste sector, +sectoren of +grootte{K,M,G} (2048-7634943, standaard 7634943): 
Standaardwaarde 7634943 wordt gebruikt

Opdracht (m voor hulp): p

Schijf /dev/sdc: 3909 MB, 3909091328 bytes
88 koppen, 16 sectoren/spoor, 5422 cilinders, totaal 7634944 sectoren
Eenheid = sectoren van 1 * 512 = 512 bytes

Sectorgrootte (logischl/fysiek): 512 bytes / 512 bytes
in-/uitvoergrootte (minimaal/optimaal): 512 bytes / 512 bytes
Schijf-ID: 0x993f397c

 Apparaat Opstart   Begin       Einde     Blokken   ID  Systeem
/dev/sdc1            2048     7634943     3816448   83  Linux

Opdracht (m voor hulp): w
De partitietabel is gewijzigd!

Aanroepen van ioctl() om partitietabel opnieuw in te lezen...
Leegmaken van schijfbuffers...

Stap 3

Om de kernel op de hoogte te brengen van de nieuwe partitionering, voer je de volgende opdracht uit:
sudo /usr/sbin/partprobe
Bij recente systemen wordt de kernel automatisch op de hoogte gebracht van de nieuwe partitionering. Het uitvoeren van deze opdracht kan geen kwaad en zo zijn we zeker. Indien de kernel niet op de hoogte is van de nieuwe partitionering kun je problemen krijgen.

Stap 4

Na de voorbereiding van de USB-stick is de USB-stick klaar om versleuteld te worden. Je kunt door eerst de USB-stick te vullen met willekeurige data de versleuteling zelf nog verbeteren. De USB-stick met gegevens vullen kan op verschillende manieren. De minst veilige (dit is nog altijd zeeeeeeeeeeeeeeeeeeer veilig) verloopt relatief snel, terwijl de meest veilige manier (voor paranoïde gebruikers) zeer traag is.

Manier 1

sudo dd if=/dev/zero of=/dev/sdc bs=4K
Deze manier is snel en is in de meeste gevallen veilig genoeg.

Manier 2

sudo /sbin/badblocks -vfw /dev/sdc1
Deze opdracht schrijft 5 verschillende datapatronen naar de USB-stick en controleert daarna de data. Dit wordt gebruikt om defecte datablokken op een apparaat op te sporen, maar kan ook gebruikt worden om aanwezige data te wissen. Deze manier is vijf keer minder snel.

Manier 3

sudo dd if=/dev/urandom of=/dev/sdc bs=4K
Een USB-stick op deze manier met willekeurige data vullen is zeer veilig maar duurt ook lang.

Manier 4

sudo dd if=/dev/random of=/dev/sdc bs=4K
Dit is de meest veilige manier, die echter zeer lang duurt (kan meerdere dagen duren). Deze methode gebruikt willekeurige data afkomstig van uw systeem. De data is afkomstig van processen (gestarte programma's), invoer en uitvoer van harde schijven, muisbewegingen, enz.

Stap 5

Nu is de USB-stick klaar om versleuteld te worden. Om de USB-stick te versleutelen gebruiken we Linux Unified Key Setup (LUKS) versleuteling. Bij het uitvoeren van de opdracht wordt gewezen op het feit dat je daarbij alle data wist (is reeds gebeurt bij het uitvoeren van de vorige stappen). In deze stap bepalen we de wachtzin (wachtwoord) om de versleutelde gegevens te raadplegen of aan te passen.

Je versleutelt de USB-stick met de opdracht
sudo /sbin/cryptsetup luksFormat /dev/sdc1

Stap 6

De USB-stick is nu versleuteld. Om de versleutelde partitie te gebruiken moeten we die openen en een naam geven. De naam wordt later gebruikt bij het koppelen in de mappenstructuur.
sudo /sbin/cryptsetup luksOpen /dev/sdc1 kluis
In het voorbeeld gebruik ik de naam kluis.

Stap 7

Het versleutelde apparaat is geopend voor gebruik (toegevoegd aan het dev mapper systeem) waardoor we er nu een klassiek bestandssysteem op kunnen aanmaken.
sudo /sbin/mkfs.ext4 /dev/mapper/kluis -L kluis
In het voorbeeld gebruik ik de voordien gekozen naam kluis en geef ik het bestandssysteem hetzelfde label (-L kluis). Het gebruikte bestandssysteem is hier ext4, voor andere bestandssystemen gebruik je andere opdrachten (zie man pagina van mkfs).

De versleutelde USB-stick is nu klaar voor gebruik. Om de versleutelde USB-stick te gebruiken, moet je deze opnieuw in de computer pluggen. De kernel stuurt daarbij een bericht naar de grafische omgeving (KDE of GNOME) die op zijn beurt wacht op uw intenties. Je kunt de versleutelde USB-stick openen zoals je een gewone niet versleutelde USB-stick opent, maar de versleutelde versie zal voor het openen van de USB-stick het wachtwoord voor decoderen van de versleutelde gegevens vragen.
Cryptsetup