ich habe ein kleines How-To geschrieben, wie man Daten verschlüsselt auf DVD speichern und später wieder auf diese Daten zugreifen kann (transparente Entschlüsselung mittels dm-crypt). Vielleicht guckt Ihr es Euch mal an, ich bin für jeden Hinweis, wie ich es verbessern/ergänzen kann, dankbar!
1. Einleitung
Im folgenden Text werde ich beschreiben, wie man Daten in verschlüsselter Form auf eine DVD brennen und später wieder auf diese Daten zugreifen kann.
Die Verschlüsselung beruht auf dm-crypt (http://www.saout.de/misc/dm-crypt/), einer im Kernel eingebauten Verschlüsselungs-Schnittstelle, mit der sich eine für den Nutzer transparente Entschlüsselung realisieren läßt (transparente Entschlüsselung bedeutet, daß man das Paßwort nur ein einziges Mal eingeben muß und dann mit den Daten ganz normal arbeiten kann, weil alles vom System im Hintergrund automatisch entschlüsselt wird). Man könnte die zu brennenden Dateien natürlich auch einzeln mit z. B. GnuPG verschlüsseln, aber das ist gerade bei sehr vielen Dateien lästig (jede einzelne Datei muß vor Gebrauch entschlüsselt werden und belegt dann zusätzlichen Speicherplatz auf der Festplatte, man muß die entschlüsselten Dateien nach Gebrauch wieder löschen, und außerdem muß man für jede einzelne Datei das Paßwort erneut eingeben).
Daher wird in diesem How-To erklärt, wie man eine große Datei auf die DVD bekommt, die ein verschlüsseltes Dateisystem entählt, das nach einmaliger Eingabe des Paßwortes gemountet wird und dann wie jedes andere Dateisystem gelesen werden kann.
2. Voraussetzungen
Ich habe alle Schritte dieses How-To selbst mehrfach getestet und keine Probleme feststellen können. Die folgende Software kam zum Einsatz:
- sys-kernel/gentoo-dev-sources-2.6.10-r6
- sys-fs/udftools-1.0.0b-r4
- sys-fs/e2fsprogs-1.35-r1
- sys-fs/cryptsetup-0.1
- app-cdr/dvd+rw-tools-5.21.4.10.8
Die folgenden Optionen müssen im Kernel selektiert sein:
Code: Select all
Device Drivers --->
Block devices --->
<*> Loopback device support
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
<*> Device mapper support
<*> Crypt target support
File systems --->
CD-ROM/DVD Filesystems --->
<*> UDF file system support
Cryptographic options --->
<*> AES cipher algorithms (i586)
Falls man in der verschlüsselten Containerdatei ein anderes Dateisystem als UDF haben möchte (siehe unten), muß dieses Dateisystem natürlich auch im Kernel ausgewählt sein. Falls man einen anderen Algortihmus zur Verschlüsselung verwenden möchte (siehe unten), muß dieser natürlich anstatt von (oder zusätzlich zu) AES gewählt werden.
Die folgenden Pakete werden benötigt:
Code: Select all
emerge sys-fs/udftools sys-fs/cryptsetup app-cdr/dvd+rw-tools
3. Das Image erzeugen und brennen
Zuerst die Image-Datei erzeugen - einfach eine 4.700.000.000 Byte große Datei mit Nullen füllen:
Code: Select all
dd if=/dev/zero of=/mnt/image.udf bs=1kD count=4700000
Code: Select all
losetup /dev/loop0 /mnt/image.udf
Code: Select all
mkudffs --media-type=dvd /dev/loop0
Code: Select all
mount /dev/loop0 /mnt/image
Code: Select all
rm -r /mnt/image/lost+found
Code: Select all
df /mnt/image
Code: Select all
dd if=/dev/urandom of=/mnt/image/encrypted.image bs=1k count=4585000
Nun: Die Containerdatei an ein (anderes als das bereits benutzte!) Loop-Device binden:
Code: Select all
losetup /dev/loop1 /mnt/image/encrypted.image
Code: Select all
cryptsetup -c aes-cbc-essiv:sha256 -y create encrypted /dev/loop1
Nach Eingabe des obigen Befehls wird das Paßwort für die Verschlüsselung abgefragt. Wenn man dieses Pawort vergißt, besteht keine Möglichkeit mehr, an die Daten, die verschlüsselt werden, heranzukommen (es sei denn, man hat ein so einfaches Paßwort gewählt, daß es sich mittels Brute Force knacken läßt - aber das sollte man sowieso nie tun)!
Nun werden wir ein Dateisystem in der Containerdatei erzeugen - welchen Typ man nimmt, hängt davon ab, was für Daten man speichern möchte (und welche Dateisysteme vom Kernel unterstützt werden), prinzipiell ist hier jedes Dateisystem möglich. Ich nehme hier UDF, aber man kann genausogut ext2, ext3, reiserfs, jfs, xfs oder irgend ein anderes Dateisystem wählen:
Code: Select all
mkudffs /dev/mapper/encrypted
Code: Select all
mke2fs -m 0 -O sparse_super -T largefile4 /dev/mapper/encrypted
Das gerade erzeugte Dateisystem wird nun nach /mnt/encrypted gemountet:
Code: Select all
mount /dev/mapper/encrypted /mnt/encrypted
Code: Select all
rm -r /mnt/encrypted/lost+found/
Code: Select all
umount /mnt/encrypted
cryptsetup remove encrypted
losetup -d /dev/loop1
umount /mnt/image
losetup -d /dev/loop0
Code: Select all
growisofs -dvd-compat -Z /dev/cdroms/cdrom0=/mnt/image.udf
4. Die DVD mounten / Daten auslesen
Das Mounten der DVD und das Auslesen der Daten geschieht ähnlich wie das Erstellen, aber etwas einfacher. Zunächst wird die DVD gemountet (dazu muß das Verzeichnis /mnt/dvd natrlich existieren - /dev/cdroms/cdrom0 ist wieder das Laufwerk, in dem die DVD liegt):
Code: Select all
mount -t udf /dev/cdroms/cdrom0 /mnt/dvd
Code: Select all
losetup /dev/loop0 /mnt/dvd/encrypted.image
Code: Select all
cryptsetup -c aes-cbc-essiv:sha256 create encrypted /dev/loop0
mount /dev/mapper/encrypted /mnt/encrypted
Code: Select all
umount /mnt/encrypted
cryptsetup remove encrypted
losetup -d /dev/loop0
umount /mnt/dvd




