Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Dokumente CryptHD unter Linux
Artikelaktionen

CryptHD unter Linux

von BeDaZuletzt verändert: 13.09.2006 22:58

Im 2.6 Kernel gibt es zwei interessante Punkte device mapper support und den crypt target support. Zeit sich das mal etwas genauer anzuschauen. Bisher habe ich meine Partitionen mit Crypto-loop verschlüsselt, guckmer mal was mit dem 2.6er alles möglich ist. Wie immer gilt wer abtippt ist selber Schuld. Macht fein ein Backup bevor Ihr euch euren Rechner zerschiesst und Ich bin nicht schuld! Ich habe meine Vorgehensweise etwas komprimiert um den Leser nicht unnötig mit Informationen zu überschütten.


Grundsätzlich gibt es zwei, mir sinnvoll erscheinende Möglichkeiten, mit Kennwort verschlüsseln oder mit Hilfe eines Keys. Es mag Leute geben die Key und Passwort nutzen um Ihre Daten zu schützen dies halte ich für unnütz. "Die Kette ist nur so stark wie Ihr schwächstes Glied" und das ist nuneinmal das Kennwort. Wenn man davon ausgeht das an den Key niemand herankommt, braucht man diesen auch nicht mit einem Kennwort zu verschlüsseln. Wie auch immer ich denke: "doppelt gemoppelt".
Ich habe alles unter Gentoo durchgespielt mit ein paar kleinen Modifikationen (z.B. beim initscript) sollte es aber auch unter allen anderen Distributionen laufen.

Vorbereitung
Kernel 2.6.x von http://www.kernel.org

"device drivers -> multi-device support (raid and lvm)"
[*] Multiple devices driver support (RAID and LVM)
<*> Device mapper support
<*> Crypt target support

"cryptoghraphic options"
<*> AES cipher algorithms (i586)

Das ganze gut durchrühren, Kernel übersetzen, installieren und im Anschluß unter stetigen rühren durchbooten.

Danach brauchen wir noch einen packen Software:

bash-2.05b# emerge sys-fs/cryptsetup app-arch/sharutils

Jetzt ist es an der Zeit alle Daten auf der betreffenden Partition zu sichern oder die Daten darauf zu vergessen.
Ein gezieltes Shred um die Partition mit sinnlosen Zeug zu füllen (mit shred recht schnell)
bash-2.05b# shred --verbose --iterations=1 /dev/sda9

MIT KENNWORT
Als erstes erzeugen wir unseren Mapper und binden unsere Partition mit einem Kennwort daran.
bash-2.05b# cryptsetup -c aes-cbc-essiv -s 256 -y create home /dev/sda9
Enter passphrase:
Verify passphrase:


Dannach erzeugen wir unser gewünschtes Dateisystem hier reiserfs.
bash-2.05b# mkreiserfs /dev/mapper/home
...
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok
...
ReiserFS is successfully created on /dev/mapper/home.

Jetzt den Mapper entfernen
bash-2.05b# cryptsetup remove home

und gleich danach mit dem richtigen Kennwort wieder anbinden
bash-2.05b# cryptsetup create home /dev/sda9
Enter passphrase:

mounten und fertig ist die verschlüsselte Partition
bash-2.05b# mount /dev/mapper/home /home

MIT KEYDATEI
Als erstes holen wir uns ein paar zufällige Zeichen, bringen diese in ein lesbares Format und schreiben den Schlüssel
bash-2.05b# head -c 1000 < /dev/urandom | uuencode -m - | grep -v begin | head -c 56 > rechnername_partition.key

Danach erzeugen wir unseren Mapper und binden unsere Partition mit dem KEY daran.
bash-2.05b# cryptsetup -c aes-cbc-essiv:sha256 -s 256 -d "/mnt/usbstick/crypt_keys/rechnername_partition.key" create home /dev/sda9

Dateisystem erzeugen
bash-2.05b# mkreiserfs /dev/mapper/home

mounten und fertig ist die verschlüsselte Partition
bash-2.05b# mount /dev/mapper/home /home

NACHARBEITEN
Natürlich wollen wir nicht nach jedem Start alles wieder per Hand anbinden, deshalb muss ein INITScript her.
bash-2.05b# vi /etc/init.d/mount_crypt

######### SNIPP ##########
#!/sbin/runscript
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

depend() {
need modules
after coldplug
}

start() {
ebegin "Mounting encrypted partition (home)"
# Entweder mit Kennwort oder mit Datei entschlüßeln !! eins auskommentieren
#cryptsetup create home /dev/sda9
#cryptsetup -d "/mnt/usbstick/crypt_keys/rechnername_partition.key" create home /dev/sda9
mount /dev/mapper/home /home
eend $?
}

stop() {
ebegin "Unmounting encrypted partition (home)"
umount /dev/mapper/home
cryptsetup remove home
eend $?
}

restart() {
svc_stop
svc_start
}

######### SNAPP ##########

Das INIT-Script sollte Startfähig sein, deshalb:
bash-2.05b# chmod +x /etc/init.d/mount_crypt

Im Standardrunlevel starten und die Platte kommt beim booten
bash-2.05b# rc-update add mount_crypt default
* mount_crypt added to runlevel default
* Caching service dependencies...
* rc-update complete.


Noch abschliessend kurz auf den Durchsatz geschaut und es ergibt sich, bei mir (SATA Platte):
Durchsatz auf unverschlüßelter Partition bei 47.18 MB/sec
Durchsatz auf verschlüßelter Partition bei 21.89 MB/sec

Naja wenns interessiert. Aber dafür sind die E-Mails an meine Oma jetzt endlich sicher. Um richtig sicher zu sein solltet Ihr daran denken eure swap Datei/Partition und /tmp zu verschlüsseln.

MfG BeDa