Der Vortrag zu Festplattenverschlüsselung mit dmcrypt und truecrypt wurde am 07.05.2008 von Ove Peter gehalten.

Verschlüsselung von Datenträgern mit DM-Crypt und TrueCrypt

Einleitung

Motivation für Einsatz von Verschlüsselung

Nachteile

Rechtliches

In Deutschland gilt der Nemo-Tenetur Grundsatz: ein Angeklagter muss sich nicht selbst belasten (z.B. durch Herausgabe des Passwortes). Im Gegensatz zu dm-crypt ist bei TrueCrypt eine verschlüsselte Partition nicht als solche nachzuweisen (plausible deniability möglich).

Grossbritannien: Angeklagter muss Passwort herausgeben.

USA: bei der Einreise kann ohne konkreten Verdacht verlangt werden, Zugriff auf mitgeführte Datenträger zu gewähren. Diese dürfen gesichtet und sogar kopiert werden. Bei Verschlüsselung wird der key verlangt, sonst muss man wieder abreisen (Einreiseinformationen Homeland Security). Zur Zeit wird von der US-Regierung eine Grundsatzentscheidung angestrebt, ob Angeklagte vor Gericht Passworte offenbaren müssen. Exportkontrollbestimmungen der USA: Cryptographie=Waffen. Gilt nicht für Quellcode.

Step.By.Step: Einrichtung einer verschlüsselten Partition mit cryptsetup-luks

modprobe dm_crypt
echo dm_crypt >> /etc/modules 

Verifizieren, dass die benötigten Algorithmen unterstützt sind:

cat /proc/crypto 

Anschauen des Festplattenlayouts, um die richtige Partition zu finden:

fdisk -l 

Optional: es ist eine gute Idee, die Partition mit Zufallsdaten zu füllen. Somit werden einige mögliche Attacken auf block-level Ebene erschwert. Beispiel:

dd if=/dev/urandom of=/dev/<name_der_partion> bs=1024000 

Die Partition (z.B. /dev/sdc1) wird als verschlüsseltes Laufwerk initialisiert. Hier als AES 256bit mit dem ESSIV Modul. Luks benutzt z.Z. ausschliesslich sha1 als hash.

cryptsetup -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/sdc1 

Ein Passwort muss eingegeben werden. Das Passwort ist der am Ehesten angreifbare Teil der Verschlüsselung, also ein Gutes auswählen! Überprüfen der Initialisierung:

cryptsetup luksDump /dev/sdc1 

Nun muss man die Partition öffnen und damit auch das dm mapping anlegen. cryptsetup legt unter /dev/mapper/<name> automatisch einen Eintrag mit dem angegebenen Namen an. Im Beispiel mappe ich die Partition /dev/sdc1 auf /dev/mapper/sdc1_crypt. Das beim Initialisieren festgelegte Passwort wird hierbei abgefragt:

cryptsetup luksOpen /dev/sdc1 sdc1_crypt 

Überprüfen des mappings:

dmsetup ls
ls /dev/mapper/ 

Man kann ein beliebiges Filesystem auf dem virtuellen dm device anlegen:

mkfs.ext3 /dev/mapper/sdc1_crypt 

Mounten des verschlüsselten Laufwerks:

mount /dev/mapper/sdc1_crypt /media/grabbelkiste 

Beim Booten soll cryptsetup das volume auch automatisch entsperren. In der config Datei /etc/crypttab folgenden Eintrag einfügen:

Überprüfen, ob der Eintrag funktioniert:

/etc/init.d/cryptdisks restart 

Für automatisches mounten einen Eintrag in /etc/fstab einfügen:

Möchte man die Partition vorrübergehend nicht benutzen, hängt man sie aus und sperrt sie, dabei wird auch der dm Eintrag entfernt:

umount /media/grabbelkiste
cryptsetup luksClose /dev/mapper/sdc1_crypt 

Erstellen zusätzlicher Passwörter oder Keyfiles mit luks

Luks (Linux Unified Key Management) ist eine Erweiterung zu cryptsetup, die Informationen im Header der Partition ablegt, und ein keymanagement einführt. Multiple Passwörter und keyfiles sind möglich. Bei Ubuntu ist luks bereits in cryptsetup integriert. So kann z.B. jedem Benutzer ein Passwort zugeteilt werden.

Keyfiles sind praktisch wenn man mehrere verschlüsselte Partitionen hat. Anstatt für jede Partition ein Passwort einzugeben, können die Partitionen auch geöffnet werden, indem man keyfiles verwendet.

Passwort hinzufügen:

cryptsetup luksAddKey /dev/sdc1 

Passwort oder keyfile löschen (im Beispiel ist die key slot number = 1):

cryptsetup luksDelKey /dev/sdc1 1 

Keyfile hinzufügen:

Zunächst muss ein keyfile erzeugt werden, welches nicht zu klein (unsicher), aber auch nicht zu gross sein sollte. Das keyfile kann an beliebiger Stelle liegen, bestenfalls aber auf einem verschlüsseltem Laufwerk, welches vor der Partion gemountet wird, die mit dem keyfile entsperrt werden soll.

dd if=/dev/random of=/etc/keys/sdc1.key bs=4k count=1
chmod 600 /etc/keys/sdc1.key
cryptsetup luksAddKey /dev/sdc1 /etc/keys/sdc1.key 

Überprüfen, ob sich die Partition mit dem keyfile entsperren lässt:

cryptsetup luksDump /dev/sdc1
cryptsetup luksOpen /dev/sdc1 sdc1_crypt –key-file /etc/keys/sdc1.key 

Eintrag in /etc/crypttab ändern:

sdc1_crypt      /dev/sdc1       /etc/keys/sdc1.key      luks 

Beim nächsten Booten wird diese Partition nun ohne Passworteingabe entsperrt. NICHT GETESTET: Falls man keyfiles auf einem externen Medium (usbstick) benutzen möchte, muss cryptsetup angewiesen werden, das Medium vor dem Abarbeiten der crypttab zu mounten. Dazu muss es einen Eintrag in /etc/fstab geben, und der Mountpunkt in /etc/default/cryptdisks eingetragen werden:

Bei keyfiles, die für das Bootlaufwerk benutzt werden sollen, ist es aufwendiger - es muss dann in der initramfs ein script geben, welches alle notwendigen Aufgaben zum Mounten, Laden der Module, usw. erledigt bevor das restliche System bootet.

Externe Medien (USB-Laufwerke, CD's)

Verschlüsselter Swap

Wichtig, da das Passwort zur Laufzeit im RAM gehalten wird und somit evtl. im Swap landet (wie auch andere Daten).

Es kann ein Zufallspasswort verwendet werden, da der Swap nach dem Ausschalten des Rechners nicht mehr relevant ist. Nachteil bei dieser Methode: kein Hibernate mehr möglich. Luks wird bei Benutzung einer Zufallszahl als Schlüssel nicht verwendet!

Vorgehensweise:

Deaktivieren des Swaps:

swapoff -a 

Anlegen einer Verschlüsselung auf der Swap Partition:

cryptsetup -c aes-cbc-essiv:sha256 -s 256 -h sha256 -d /dev/urandom create cryptoswap /dev/hda7 

Falls obiges Kommando nicht klappt, in den Anfangsbereich der Partition schreiben:

dd if=/dev/zero of=/dev/hda7 count=100 

Einen Eintrag in /etc/crypttab einfügen:

Den Eintrag für swap in /etc/fstab anpassen:

Swap wieder aktivieren:

swapon -a 

Anlegen einer verschlüsselten Systempartition

Damit ist /boot angreifbar und sollte auf Änderungen überwacht werden.

Von vorhandener Systempartition mit tar Backup anlegen:

cd / ; tar -czp --one-file-system  -f /usb/archiv.tgz . 

Mit LiveCD verschlüsselte Systempartition anlegen (s.o.) und mounten Backup wieder zurückkopieren:

cd /media/newlinux ; tar -xvpzf /usb/archiv.tgz 

Eintrag für Systempartition in /etc/crypttab und /etc/fstab (mit mapper namen)

Bootloaderkonfiguration:

/boot mounten und grub-install ausführen, falls /boot nun auf anderer Partition liegt
/boot/grub/menu.lst anpassen:
# groot=(hd0,4) ggf. ändern auf neue /boot Partitionsnummer
# kopt=root=/dev/hda6 ändern in # kopt=root=/dev/mapper/hda6_crypt
update-grub ausführen
Mit update-initramfs -u die initramfs neu bauen.
Falls man anschliessend beim Booten (nach einiger Wartezeit) auf die BusyBox der initramfs geworfen wird – keine Panik! Einfach die drei benötigten Module laden (modprobe dm_crypt aes sha256), die Systempartition manuell entsperren (cryptsetup luksOpen ...) und dann mit exit die BusyBox verlassen. Anschliessend im laufenden System mit update-initramfs -k all -u alle initram images neu bauen. 

Neuinstallation:

Bei einer Neuinstallation kann auf einfache Art und Weise ein verschlüsseltes Bootlaufwerk angelegt werden: der Debian Installer und ab Ubuntu 7.10 der Textmode Installer auf der Alternate CD haben Support für Installation auf verschlüsselten Volumes. Dabei wird AES 256bit mit luks benutzt, es kann aber zunächst nur die Passwort-Variante erstellt werden. Feintuning muss man später machen. Verwendung von LVM ist empfehlenswert, da so die gesamte Volumegroup verschlüsselt werden kann.

TrueCrypt (ab Version 5.0)

TrueCrypt ist ein bekanntes OpenSource Festplattenverschlüsselungsprogramm, welches für Windows entwickelt wurde. Seit Version 5.0 ist TrueCrypt auch für MacOSX erhältlich, die Linux Version hat nun eine GTK Oberfläche und es gibt ein Ubuntu Paket auf der Homepage.

TrueCrypt ist somit die einzige Alternative mit Support für alle drei gängigen Betriebssysteme.

Unter Windows kann man die Win Bootpartition verschlüsseln. Und dies sogar ohne Umkopieren, einfach aus dem laufenden Betrieb heraus! Dabei muss dann ein Bootloader installiert werden, der die Windows Partition vor dem Booten entsperrt. Dieser Bootloader ist auch in der Lage, Linux und andere Betriebssysteme zu booten. Allerdings gibt es kein Bootmenü mit timeout, so dass immer eine Tastatureingabe nötig ist, auch wenn man eigentlich standardmässig Linux booten möchte. Vor dem Verschlüsseln der Bootpartition legt TrueCrypt ein iso image einer rescue disc an, auf der auch der Bootloader enthalten ist.

Die Linux Version kommt ohne Kernel Abhängigkeiten aus!

Kompatibilität: TrueCrypt Volumes können sowohl unter Windows als auch Linux verwendet werden. In meinen Tests war ich damit jedoch nicht sehr erfolgreich, lediglich ein mit FAT32 formatiertes volume konnte ich in beiden Betriebssystemen nutzen. Das Anlegen von Containerimages und keyfiles ist mit TrueCrypt sehr einfach.

TrueCrypt volumes können nicht als verschlüsselte Laufwerke identifiziert werden - es existiert kein Partitionsheader, der darauf hinweist (wie bei LUKS). Lediglich bei Eingabe des richtigen Passwortes wird das volume entsperrt, ansonsten meldet auch TrueCrypt selbst, es handele sich bei der Partition nicht um ein verschlüsseltes volume. Ein interessantes feature sind versteckte volumes. Hierbei wird auf dem freien Platz eines Dateisystems ein unsichtbares Containerimage im freien Speicherbereich angelegt. Beim Entsperren der 1. Partition wird das Passwort für das hidden volume mit angegeben und damit ebenfalls entsperrt. Würde man nur die 1. Partition entsperren, besteht die Gefahr, dass das hidden volume bei Schreibvorgängen auf der 1. Partition überschrieben wird. Ein hidden volume bietet sich aufgrund dieser Gefahr eigentlich nur an, wenn man befürchtet, jemanden sein Passwort offenbaren zu müssen, z.B. bei Einreise in die USA. Man kann dann das Passwort für die 1. Partition herausgeben, und verschweigt die Existenz der zweiten.

Mit den beiden letztgenannten Punkten ist vor Gericht plausible deniability möglich.

sudo truecrypt startet das Programm mit grafischer Oberfläche. Diese ist weitgehend selbsterklärend. Es ist auch möglich, mit Kommandozeilenbefehlen zu arbeiten: sudo truecrypt --help

Andere Betriebssysteme

Systemeinstellungen --> Sicherheit --> FileVault
Bezieht sich auf Home, es wird ein mitwachsendes Containerimage angelegt (Gefahr durch Stromunterbrechung, UPS benutzen)
User Password wird dabei automatisch verwendet. Swap Verschlüsselung kann in den Sicherheitseinstellungen aktiviert werden. Weitere v. Volumes werden mit dem Festplatten-Dienstprogramm erstellt.

Download

Hier gibt es zunächst nur das Handout zum Vortrag als Open Office und PDF Dokument.

Vortrag.Festplattenverschluesselung.odt

Vortrag.Festplattenverschluesselung.pdf

siehe auch:

dm-crypt Partition vergrößern

http://www.enigmacurry.com/2007/04/28/resizing-a-luks-dm-crypt-cryptsetup-filesystem/

LugOwlWiki: GLUGHF/FestplattenVerschlüsselung (zuletzt geändert am 2009-03-08 14:45:35 durch localhost)

Impressum Datenschutz