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
Inhaltsverzeichnis
-
Verschlüsselung von Datenträgern mit DM-Crypt und TrueCrypt
- Einleitung
- Motivation für Einsatz von Verschlüsselung
- Nachteile
- Rechtliches
- Step.By.Step: Einrichtung einer verschlüsselten Partition mit cryptsetup-luks
- Erstellen zusätzlicher Passwörter oder Keyfiles mit luks
- Externe Medien (USB-Laufwerke, CD's)
- Verschlüsselter Swap
- Anlegen einer verschlüsselten Systempartition
- TrueCrypt (ab Version 5.0)
- Andere Betriebssysteme
- Links
- Download
- dm-crypt Partition vergrößern
Einleitung
- Bild „wie funktioniert Verschlüsselung im praktischen Umgang“
- Containerimage vs. Verschlüsselung auf Partitionsebene
- Aus dem Passwort (oder Dateischlüssel) wird der eigentliche Schlüssel abgeleitet, je nach Implementierung.
- Symmetrisches Verschlüsselungsverfahren (ein key)
- Schlüssellänge: 128 bis 256 bit. Je länger, desto sicherer und CPU-lastiger.
- Algorithmen:
- Sicherheit basiert nicht darauf, dass der Algorithmus geheim ist, sondern auf dem mathematischen Verfahren selbst.
- AES ist ein schneller Algorithmus, der ein Quasi-Standard ist, und 2003 von einem US Committee als ausreichend zur Verschlüsselung von Top Secret Informationen eingestuft wurde. Alternativ: Twofish, Serpent, Triple-DES.
- ESSIV ist ein Verfahren zur Generierung des Initialisierungsvektors, welches verhindert, dass Wasserzeichenangriffe Erfolg haben.
- „Brute Force Attacke“ - es werden alle möglichen Schlüssel durchprobiert. Wenn man alle Rechenleistung der Welt zur Verfügung hätte, dauert diese Attacke immer noch zu lange. Eine Brute Force Attacke auf das Passwort hat hingegen weitaus wahrscheinlicher Erfolg – das Passwort ist der am ehesten angreifbare Teil!
- Ersetzt nicht andere Sicherheitsmassnahmen – im laufenden Betrieb ist der Datenträger „offen“, ein Eindringling kann normal darauf zugreifen!
Motivation für Einsatz von Verschlüsselung
- „Mein Auto schliesse ich ja auch ab, wenn ich es abstelle.“
- Schutz vor Zugriff auf wichtige persönliche Daten und Firmengeheimnisse durch Dritte
- Mobile Rechner und externe Datenträger (usbsticks) können leicht geklaut werden oder verloren gehen
- Bedenken zu Massnahmen durch Ermittlungsbehörden
- Festplatten können unbedenklich verkauft werden (kein recovery möglich)
Nachteile
- Höhere Sicherheit = weniger Komfort
- Passwortabfrage bei automatisch eingebundenen Datenträgern
- Passwort vergessen oder keyfile verloren = totaler Datenverlust
- Bootlaufwerk verschlüsselt = kein remote boot möglich (ohne keyfile)
- Idee: Seriellterminal Verbindung an einen OpenWRT Router
- oder: zweites unverschlüsseltes Betriebssystem + manuelles Mounten
- Verschlüsselte Datenträger können nicht mit jedem Betriebssystem benutzt werden
- LiveCD's müssen für Zugriff die nötigen tools enthalten (ubuntu dvd = gut)
- Performance Einbussen, da alle Zugriffe auf den Datenträger ver-/entschlüsselt werden müssen. dm-crypt skaliert aber gut auf Mehrprozessorsystemen.
- Notebooks: evtl. kein Hibernate (konnte ich nicht testen)
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
- Ich gehe im Folgenden davon aus, dass Du root bist!
- Das Ausführen dieser Schritte wird alle Daten auf der Zielpartition vernichten!
- Software installieren: dm (devicemapper), dm-crypt, cryptsetup
- Laden der module dm_crypt, aes und sha256, in /etc/modules einfügen:
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:
sdc1_crypt /dev/sdc1 none luks
Überprüfen, ob der Eintrag funktioniert:
/etc/init.d/cryptdisks restart
Für automatisches mounten einen Eintrag in /etc/fstab einfügen:
/dev/mapper/sdc1_crypt /media/grabbelkiste ext3 defaults 0 1
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:
CRYPTDISKS_MOUNT=“/media/usbstick“
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)
- CD's: verschlüseltes Image mit cryptoloop oder truecrypt anlegen und raw brennen
- Externe Medien wie USB Festplatten, usbsticks, etc:
- Vorgehensweise wie oben für interne Platten beschrieben, man sollte allerdings die Partition nach dem Anlegen des Filesystems wieder schliessen:
cryptsetup luksClose /dev/mapper/sdc1_crypt
- Vorgehensweise wie oben für interne Platten beschrieben, man sollte allerdings die Partition nach dem Anlegen des Filesystems wieder schliessen:
- Das Medium wird nicht in /etc/crypttab eingetragen!!
- Beim Anschliessen des Mediums zeigt Gnome eine Passwortaufforderung.
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:
cryptoswap /dev/hda7 /dev/urandom swap
Den Eintrag für swap in /etc/fstab anpassen:
/dev/mapper/cryptoswap none swap sw 0 0
Swap wieder aktivieren:
swapon -a
Anlegen einer verschlüsselten Systempartition
- Vorraussetzung: unverschlüsselte Partition für /boot, die initramfs muss cryptsetup beinhalten!
Damit ist /boot angreifbar und sollte auf Änderungen überwacht werden.
- Vorhandenes Betriebssystem
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
- FreeBSD: es gibt ein cryptomodul als Teil des Festplattensubsystems.
Windows: TrueCrypt ist erhältlich (s.o.). Desweiteren hat Microsoft in XP Professionell eine eigene Festplattenverschlüsselung integriert, die jedoch nicht empfehlenswert ist. Für Windows 2000 ist dafür das encryption pack von Microsoft erforderlich. Vista: BitLocker.
MacOSX: TrueCrypt ab Version 5.0 auch für OSX erhältlich.
- Apple hat Verschlüsselung ebenfalls selbst integriert:
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.
Links
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/