dm-crypt und luks für eine Container-Datei

Wednesday, October 5. 2011

In einem vorigen Eintrag hatte ich die Verschlüsselung kompletter Partitionen und deren Einbindung mit dm-crypt und luks beschrieben, hier als Ergänzung, wie das mit Container-Dateien geht.

# ggf vorbereiten
modprobe loop
losetup -a

#  erstelle 2G container mit zufallsfuellung
dd if=/dev/urandom of=
testfs.bin bs=1M count=2048

# die (leere) Imagedatei auf das naechste freie Loop-Gerät legen, wird angezeigt
losetup -f --show  
testfs.bin

# und zunächst als Partition formatieren
cryptsetup luksFormat /dev/loop0

# dabei wird die Eingabe einer Passphrase verlangt, die gut verschluesselt notieren...

# jetzt kann die Datei-Partition geöffnet werden
cryptsetup luksOpen /dev/loop0 testfs

# mit einem Dateisystem formatiert
mkfs -t ext4 /dev/mapper/testfs

# und schliesslich gemounted werden
mount /dev/mapper/testfs /mnt/testfs

Damit ist ein Dateisystem in einem verschlüsselten Container angelegt und kann benutzt werden. Hier noch mal die Aufrufe im Einsatz, Einbinden und Lösen:

Einbinden:
losetup -f --show 
testfs.bin
cryptsetup luksOpen /dev/loop0 testfs
mount /dev/mapper/testfs /mnt/testfs

Lösen:
umount /mnt/testfs
cryptsetup luksClose /dev/mapper/testfs
losetup -d /dev/loop0

Am Beispiel einer externen Festplatte, die sich nach dem Anstöpseln als /dev/sdc meldet:

fdisk -l
gibt unter anderem:

Disk /dev/sdc: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x08040000

Disk /dev/sdc doesn't contain a valid partition table

Die Partition mit ziemlichem Zufall initialisieren und dabei gleichzeitig die Zuverlässigkeit der Platte prüfen:

badblocks -c 10240 -s -w -t random -v /dev/sdc
(dauert ewig.)

Formatieren und mit dem Namen silva einbinden:
luksformat -t ext3 /dev/sdc
cryptsetup luksOpen /dev/sdc silva

Optional die fsck-Frequenz etwas ausdünnen: 
tune2fs -c 1000 /dev/mapper/silva
tune2fs -i 365 /dev/mapper/silva

und ins Dateisystem holen:
mount /dev/mapper/silva /mnt/silva

und zurück:
umount /mnt/silva , falls dass mit device busy hakt, ggf fuser -m /mnt/silva
cryptsetup luksClose /dev/mapper/silva


Mehr Infos

dm-crypt vs. truecrypt:
- beide können einen Container in einer Datei, einer Partition oder einem ganzen device einrichten, beide sind opensource und bier-frei, beide sind schwer genug zu knacken dass es aussichtsreicher ist, das Versteck für den Schlüssel zu finden.
- dm-crypt ist gefühlt paarmal schneller. Bei einem Container mit Passwörtern und Tagebüchern etc. macht das keinen nennenswerten Unterschied, aber bei einer TB-Platte mit der Musiksammlung dann schon.
- dafür hat truecrypt deutlich die Nase vorn, wenn man den Container mal von win*, mal von linux her öffnen möchte
- mit dem Konzept der plausible deniability und hidden volumes hat truecrypt ein Alleinstellungsmerkmal, das unter Umständen den Abstand zwischen Kopf und Kragen regulieren helfen kann.

Vom Einsatz-Szenario her würde ich das Projekte-Device, auf dem unter anderem auch Vorhaben, die unter NDA stehen, gewiss auf dm-crypt legen, dito die Sammlung von vmware und vmbox - Maschinen oder Videos fraglicherer Herkunft.
Die MindMaps, Tagebücher, Liebesbriefe und org/finanzamt wären da eher auf einem trauecrypt-Volumen gut aufgehoben und die Sammlung von Belegen all' der schoflen  Begebenheiten, die irgendwann mal reif für ein Upload nach wikileaks sein wird, käme wohl am besten zu truecrypt in ein hidden volume.

Zertifikate: für Thunderbird

Friday, February 18. 2011

Signierte oder verschlüsselte emails versenden, mit Thunderbird und startcom - Zertifikaten: eines dieser Art bekommt man ja direkt bei der startCom - Anmeldung im Browser installiert, und man kann sich nach Belieben weitere S/MIME Client -Zertifikate für weitere email-Adressen erzeugen. 

Die Schrittfolge ist, auf startssl.com, recht schnell durchlaufen: im Validation Wizard wählt man Email Address Validation, dann eine Adresse zur Validierung eintragen, es kommt eine Mail an diese Adresse mit einem Code, den man wieder in dem Formular auf der Webseite einsetzt. Ein Klick auf Finish und nun findet man diese Adresse unter dem Reiter 'Email Validations' gelistet. 

Wechseln zum Certificates Wizard, der S/MIME gleich als default-Option hat, continue , und das koennen wir auch gleich bei der nächsten Seite (Schlüssellänge: hochgradig) klicken.

Es dauert einen Moment, während der Server bei startCom einen privaten Schlüssel generiert. Hmm, im Unterschied zur Generierung der SSL/TLS-Server certificates gibt es hier keine Option, einen selbstgenerierten privaten Schlüssel anzugeben.

In der folgenden Maske kann man aus der Menge der bislang unbedienten validierten email-Adressen eine auswählen, continue, es dauert einen Moment und dann meldet ein Popup, dass das Zertifikat im Browser installiert wurde.

Dies Zertifikat muessen wir jetzt aus dem Browser (bei mir ein Firefox/3.5.16) an einen sicheren Ort im Dateisystem und von dort hinein in Thunderbird transferieren. Der erste Schritt ist bei mir unter Bearbeiten/Einstellungen/erweitert/Verschlüsselung/Zertifikate anzeigen erreichbar, ich wähle einen der Einträge unter StartCom Ltd. aus.Mit Ansehen/Details kann man sich vergewissern, das richtige erwischt zu haben, die mail-Adresse ist als Zertifikatsgegenstand-Alternativ-Name verzeichnet. Ein Klick auf "Sichern", wenn man mehr als eine Adresse mit Zertifikaten ausruesten moechte, empfiehlt sich ein sprechender Dateiname. Nun werden Passworte abgefragt, zuerst, falls man es einsetzt, das Master-Passwort, mit dem Firefox das Sicherheitsmodul schützt und anschliessend legt man für das zu speichernde Zertifikat ein Zugangspasswort an.  Wenn man es recht bedenkt, hängt an diesen Passworten das ganze Sicherheitsversprechen des Zertifikats.

 Damit können wir den Firefox - Zertifikatsmanager schliessen und Thunderbird zum Import der Zertifikate öffnen. Edit/Preferences/Advanced/Certificates/View Certificates öffnet den Certificate Manager, unter dem Reiter 'Your Certificates' werden ggf schon vorhandene Zertifikate gelistet und auf diesem Blatt findet sich auch der Button "Import". Im Dateiauswahl-Dialog navigieren wir zum eben abgespeicherten Zertifikat und öffnen es, wieder wird erst das Master-Passwort und danach das Zertifikatspasswort abgefragt und dann ist es drin.

 Damit Thunderbird die Zertifikate nun auch nutzt, müssen sie mit bestimmten Accounts verbunden werden, dazu geht man in den Account Settings auf 'Manage Identities', markiert hier in der Liste von (ausgehenden) email-Adressen die, für die das Zertifikat ausgestellt wurde, und klickt dann Edit/Security. Unter "Digital Signing" klickt man 'Select' und hat nun oben eine Auswahl der installierten Zertifikate, zu denen darunter jeweils die wesentlichen details angezeigt werden. Hat man das rechte erwischt und klickt OK folgt die Abfrage, ob man das gleiche Zertifikat auch für verschlüsselte Mailkorrespondenzen nutzen will. Hier zustimmen und dann wird das Zertifikat auch in der Zeile Encryption eingetragen. Jetzt noch ein Häkchen bei 'Digitally sign messages (by default) und dann kann man die offenen Dialog allesamt mit OK schliessen. 

Derart signierte Mails schicken die Nachricht immer noch im Klartext durchs Netz, die Signatur garantiert nur, dass die Nachricht auf dem Wege nicht verändert wurde. Aber gleichzeitig verteilt man auf diese Art den öffentlichen Schlüssel des eigenen Zertifikates an die Empfänger, und schafft damit die Voraussetzung für die zweite Funktion, verschlüsselte Mails.
Verschlüsselte Korrespondenz ist zwischen Mailpartnern möglich, die beide ein gültiges Zertifikat installiert haben und jeweils auch den öffentlichen Schlüssel des anderen kennen. Welche Schlüssel der eigene Mailer schon kennt, listet Thunderbird im Certificate Manager unter dem Reiter 'People'.

Kostenlose S/Mime-Zertifikate  bekommt man nicht nur von startCom, mozillazine listet und diskutiert Alternativen. Mehr Infos zu Mailverschlüsselung und S/Mime. Statt mit S/Mime kann man auch mit OpenPGP verschlüsseln aber die beiden Protokolle verstehen einander nicht.

(Page 1 of 1, totaling 3 entries)