MiniTipp: Mobile Daten verschlüsseln
Inhalt
1. Einleitung
Mobile Daten zum Transfer von einem Ort zum anderen werden gerne auf einem USB-Stick gespeichert. Mittlerweile ist die Größe von USB-Sticks nun schon bei 64GB angekommen, so dass da schon so einiges drauf passt - und oft auch drauf bleibt. Einen USB-Stick kann man aber auch leicht mal verlieren. So können sensible Daten schnell in die falschen Hände kommen.
Verschlüsselung schafft Abhilfe. In diesem kleinen Artikel wollen wir eine Image-Datei auf einem NTFS-formatierten USB-Stick anlegen, die wir dann mit Linux-Mitteln verschlüsseln.
Ein kleiner Teil des Sticks bleibt dabei unsverschlüsselt und eignet sich damit z.B. noch zum Dateiaustausch mit Freunden oder Kollegen.
2. Voraussetzungen
Voraussetzung ist ein partitionierter und NTFS-formatierter USB-Stick. Wie sich ein USB-Stick unter Linux formatieren lässt, kann im unixwerk-Artikel «Schreibzugriff auf NTFS-formatierte USB-Sticks» nachgelesen werden. Folgendes Layout wird in den Beispielen verwendet.
root# fdisk -l /dev/sdb Disk /dev/sdb: 31.9 GB, 31876710400 bytes Device Boot Start End Blocks Id System /dev/sdb1 * 39232 62259199 31109984 7 HPFS/NTFS/exFAT
root# ntfsinfo -q -m /dev/sdb1 Volume Information Name of device: /dev/sdb1 Device state: 11 Volume Name: LARGEUSB Volume State: 1 Volume Version: 3.1
Der USB-Stick wird unter /media/LARGEUSB
ins Dateisystem eingehängt:
root# mount LABEL=LARGEUSB /media/LARGEUSB
3. Verschlüsselung
A. Zunächst legen wir eine 20000 MB große Datei aus Zufallszahlen auf dem USB-Stick an:
root# dd if=/dev/urandom of=/media/LARGEUSB/DATA.IMG bs=1M count=20000
B. Dann werden die nötigen Kernel-Module geladen:
root# modprobe cryptoloop root# modprobe aes
C. Die Datei wird mit einem Passwort verschlüsselt:
root# losetup -e aes /dev/loop0 /media/LARGEUSB/DATA.IMG
D. Das Dateisystem kann angelegt werden. Hier habe ich mich für das gute alte ext2 entschieden:
root# mke2fs -m 0 /dev/loop0 root# mkdir /media/transfer root# mount -o loop,encryption=aes t ext2 /media/LARGEUSB/DATA.IMG /media/transfer Password: ******** root# df /media/transfer Filesystem 1MB-blocks Used Available Use% Mounted on /dev/loop0 20643 1230 19413 6% /media/transfer
Fertig!
Man könnte /media/transfer
natürlich in der Datei /etc/fstab
mit den Optionen noauto,user
verankern.
Aufgrund der verschiedenen Voraussetzungen habe ich mich aber entschieden ein Skript auf dem unverschlüsselten Teil des Sticks zu hinterlegen,
das die verschlüsselte Image-Datei öffnet und schließt. So hat man sein Skript immer dabei.
root# vi /media/LARGEUSB/mountimage.sh #!/bin/bash MYPATH=$(readlink -f "$0") MYDIR=$(dirname "$MYPATH") MYNAME=$(basename "$MYPATH") CRYPTIMG="$MYDIR/DATA.IMG" MOUNTPOINT=/media/transfer start() { [ -r "$MOUNTPOINT" ] || mkdir -p "$MOUNTPOINT" modprobe cryptoloop modprobe aes mount -o loop,encryption=aes -t ext2 "$CRYPTIMG" "$MOUNTPOINT" } stop() { umount "$MOUNTPOINT" } restart() { stop sleep 10 start } status() { mount | grep "$CRYPTIMG" || echo "$CRYPTIMG not mounted." } case "$1" in start) start ;; stop) stop ;; status) status ;; *) echo "Usage: bash $MYNAME { start | stop | status | restart }" ; exit 1 ;; esac
Da wir auf NTFS-formatierten Bereichen keine Unix-Rechte setzen können, wird das Skript nicht direkt aufgerufen, sondern explizit an die Bash übergeben:
root# cd /media/LARGEUSB root# bash ./mountimage.sh start Password: ********
A. Weiterführende Informationen