{"id":489,"date":"2009-05-26T10:00:00","date_gmt":"2009-05-26T08:00:00","guid":{"rendered":"http:\/\/www.butschek.de\/?p=489"},"modified":"2012-03-11T12:33:19","modified_gmt":"2012-03-11T11:33:19","slug":"partition-verschlusseln-mit-luks","status":"publish","type":"post","link":"https:\/\/www.butschek.de\/2009\/05\/26\/partition-verschlusseln-mit-luks\/","title":{"rendered":"Partition verschl\u00fcsseln mit LUKS"},"content":{"rendered":"
<\/a>Mit dm-crypt \/ LUKS<\/a> lassen sich unter Linux Festplatten oder Partitionen verschl\u00fcsseln. Die Details sind auf Wikipedia<\/a> zu finden, dieser Artikel soll zeigen, wie einfach es einsetzbar ist.<\/p>\n Wir gehen von einer normalen Debian Lenny installation aus. Ich habe sda in 3 Partitionen unterteilt: Swap (2 GB), Root-FS (10 GB) und \/home (Rest). Die dritte Partition werde ich verschl\u00fcsseln.<\/p>\n Zuerst installieren wir die Software und laden das n\u00f6tige Kernel-Modul. Dies ist beim Einrichten einmalig manuell n\u00f6tig, beim sp\u00e4teren \u00d6ffnen des Containers wird das Modul automatisch geladen:<\/p>\n Nun starten wir die Einrichtung:<\/p>\n Mit luksOpen \u00f6ffnen wir den verschl\u00fcsselten Bereich. Dadurch entsteht ein neues Ger\u00e4t namens \/dev\/mapper\/{name} welches das „ge\u00f6ffnete“ \/dev\/sda3 repr\u00e4sentiert, jedoch in nichtverschl\u00fcsselter Form. Wir benutzen also k\u00fcnftig \/dev\/mapper\/{name}, wobei alles, was wir dorthin speichern transparant verschl\u00fcsselt und nach \/dev\/sda3 geschrieben wird.<\/p>\n Wir haben der Partition also nun den Ger\u00e4tenamen ‚privat‘ gegeben, daher finden wir unsere lesbare „Partition“ nun unter \/dev\/mapper\/private. Nun formatieren wir die Partition:<\/p>\n Fertig, schon kann die Partition gemountet und genutzt werden:<\/p>\n Was ich an dieser Stelle gerne empfehle ist das vollst\u00e4ndige \u00dcberschreiben der Festplatte. Beim luksFormat wird der Bereich n\u00e4mlich nicht \u00fcberschrieben, es wird nur der leere Index angelegt. Die zuvor unverschl\u00fcsselt gespeicherten Daten sind also noch rekonstruierbar.<\/p>\n Das „Ausnullen“ (\u00dcberschreiben mit lauter 0x00 Bytes) vermeide ich hier, da ein Angreifer sonst verschl\u00fcsselte und unverschl\u00fcsselte Daten gro\u00dfer Teile der Platte kennen k\u00f6nnte und somit gezielt nach dem Schl\u00fcssel suchen k\u00f6nnte. Daher benutze ich hier \/dev\/urandom:<\/p>\n Eine interessante Sache \u00fcbrigens: Das F\u00fcllen mit Zufallsdaten k\u00f6nnte theoretisch auch vor dem luksFormat direkt auf \/dev\/sda3 erfolgen, man k\u00f6nnte sogar annehmen, dass dies schneller geht, weil die Zufalldaten dann nicht verschl\u00fcsselt geschrieben werden m\u00fc\u00dften. Da die Verschl\u00fcsselung jedoch die Entropie der Zufallszahlen ganz vewaltig in die H\u00f6he treibt, geht das Erzeugen von Zufallszahlen beim \u00dcberschreiben des gecrypteten Bereiches in der Tat schneller als beim \u00dcberschreiben der Platte sda3.<\/p>\n Meine Messwerte:<\/p>\napt-get install cryptsetup\r\nmodprobe<\/a> dm_crypt<\/pre>\n
cryptsetup<\/a> luksFormat \/dev\/sda3<\/pre>\n
cryptsetup luksOpen \/dev\/sda3 private<\/pre>\n
mkfs.xfs<\/a> -L sda3-priv \/dev\/mapper\/private<\/pre>\n
mount \/dev\/mapper\/private \/home<\/pre>\n
dd<\/a> if=\/dev\/urandom of=\/home\/fillup.dat bs=1M\r\nrm \/home\/fillup.dat<\/pre>\n
\u00dcberschreiben von \/dev\/sda mit \/dev\/urandom:<\/td>\n | 5.4 MBit\/s<\/td>\n<\/tr>\n |
Datei im XFS-Dateisystem von \/dev\/urandom anlegen, welches als \/dev\/mapper\/private eingeh\u00e4ngt ist und die Daten beim Schreiben auf \/dev\/sda verschl\u00fcsselt:<\/td>\n | 6.0 MBit\/s<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n So, um die Partition nach dem Entmounten wieder zu „schlie\u00dfen“, also das Mapper Device wieder zu entfernen, damit nicht mehr auf die Daten zugegriffen werden kann, wird das Kommando luksClose genutzt:<\/p>\n umount \/dev\/mapper\/private\r\ncryptsetup luksClose private<\/pre>\n |