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
unixwerk