====== Verschlüsselung unter Linux ======
===== Informationsquellen =====
LUKS:
* [[https://de.wikipedia.org/wiki/Dm-crypt|https://de.wikipedia.org/wiki/Dm-crypt]]
* [[https://wiki.immerda.ch/index.php/Hilfe:How-to:_Verschl%C3%BCsselung_mit_dm-crypt/LUKS|https://wiki.immerda.ch/index.php/Hilfe:How-to:_Verschl%C3%BCsselung_mit_dm-crypt/LUKS]]
* [[http://linuxwiki.de/cryptsetup|http://linuxwiki.de/cryptsetup]]
* [[https://wiki.ubuntuusers.de/LUKS/|https://wiki.ubuntuusers.de/LUKS/]]
* [[https://wiki.ubuntuusers.de/LUKS/Containerdatei/|https://wiki.ubuntuusers.de/LUKS/Containerdatei/]]
eCryptfs:
* [[http://ecryptfs.org/downloads.html|http://ecryptfs.org/downloads.html]]
* [[https://de.wikipedia.org/wiki/ECryptfs|https://de.wikipedia.org/wiki/ECryptfs]]
* [[https://wiki.ubuntuusers.de/ecryptfs/|https://wiki.ubuntuusers.de/ecryptfs/]]
EncFS
* [[https://wiki.archlinux.org/index.php/EncFS|https://wiki.archlinux.org/index.php/EncFS]]
* [[https://de.wikipedia.org/wiki/EncFS|https://de.wikipedia.org/wiki/EncFS]]
* [[https://wiki.ubuntuusers.de/Howto/EncFS_in_der_Cloud/|https://wiki.ubuntuusers.de/Howto/EncFS_in_der_Cloud/]]
Cryptomator
* [[https://cryptomator.org|https://cryptomator.org]]
===== Tools =====
Installation der notwendigen Software, hier ''cryptsetup'' und das kernel-Modul ''dm-crypt''.
# Superuser werden
sudo su
# cryptsetup installieren
apt-get install cryptsetup
# verfügbare Verschlüsselungsmethoden des Kernels anzeigen
cat /proc/crypto
===== LUKS - Linux Unified Key Setup =====
==== verschlüsselte Partition mit LUKS ====
=== erzeugen ===
sudo su
# verfügbare Partitionen anzeigen, z.B. auch eingesteckten USB-Stick
# hier wird /dev/sdb1 als Gerät gewählt
lsblk
# Gerät mit Zufallsdaten überschreiben
dd if=/dev/urandom bs=1M of=/dev/sdb1
# Gerät verschlüsseln
cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 -y /dev/sdb1
# Verschlüsselte Partition öffnen und ein sog. ''Mapper-Device'' zuweisen
cryptsetup luksOpen /dev/sdb1 encrypted_usb_stick
# Wenn das Öffnen fehlerfrei war ist die Partition jetzt unter ''/dev/mapper'' sichtbar
ls -l /dev/mapper/
# Jetzt kann die Partition ganz normal formatiert werden. Mittels der Option ''-m0'' wird statt 5% (default) 0% Speicherplatz für den Superuser reserviert.
mkfs.ext4 -m0 /dev/mapper/encrypted_usb_stick
# Label für die Partition vergeben
tune2fs -L TI-2GB-ENC /dev/mapper/encrypted_usb_stick
# Partition einbinden
mount /dev/mapper/usb-crypt /mnt
# Zugriffsrechte anpassen
chown $USER:$USER /mnt
# Status der verschlüsselten Partition ermitteln
cryptsetup status /dev/mapper/encrypted_usb_stick
=== einbinden ===
"On demand", also nur bei Bedarf, per Klick im Dateimanager einbinden:
sudo su
cd /
# UUID der LUKS Partition ermitteln
blkid /dev/sdb1
# Die Datei crypttab analog zu fstab anlegen. Sie wird von "cryptdisks_[start|stop] ausgelesen und die darin genannten Partitionen werden zum Einhängen unter /dev/mapper/ vorbereitet
touch /etc/crypttab
# Einen Eintrag für die LUKS Partition hiunzufügen
echo "encrypted_usb_stick UUID="ZUVOR_BESTIMMTE_ID" none luks,noauto" >> /etc/crypttab
# Einen passenden Eintrag in der fstab erzeugen
echo "/dev/mapper/encrypted_usb_stick /media/crypto ext4 noauto,nosuid,x-gvfs-show,x-gvfs-name=LUKS-USB-Stick,x-gvfs-icon=Symname_Luks_stick 0 0" >> /etc/fstab
==== verschlüssleter Container mit LUKS ====
=== erzeugen ===
# Superuser werden
sudo su
# Containerdatei erzeugen, hier mit einer Größe von 250 MByte
dd if=/dev/urandom of=luks_container bs=1M count=250
# Das nächste, frie Loop-Device zum einhängen der Containerdatei ermitteln
losetup -f
--> /dev/loopX
# Containerdatei zum öffnen vorbereiten in dem ein sog. Loop-Device erstellt wird
losetup /dev/loopX luks_container
# Containerdatei verschlüsseln
cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 -y /dev/loopX
# Verschlüsselte Containerdatei einhängen
cryptsetup luksOpen /dev/loopX test_luks_container
# Dateisystem (hier ext4) innerhalb der verschlüsselten Containerdatei erzeugen
mkfs.ext4 /dev/mapper/test_luks_container
# Jetzt ist die verschlüsselte containerdatei fertig zur Einbindung in das Dateisystem
# Mounten der verschlüsselten Containerdatei
mount /dev/mapper/test_luks_container /mnt/MOUNTPOINT
=== einbinden ===
# Einen Eintrag für die LUKS Partition hiunzufügen
echo "test_luks_container /home//tmp/luks_container none luks,noauto" >> /etc/crypttab
# Einen passenden Eintrag in der fstab erzeugen
echo "/dev/mapper/test_luks_container /mnt/crypto ext4 noauto,nosuid,x-gvfs-show,x-gvfs-name=LUKS-USB-Stick,x-gvfs-icon=Symname_Luks_stick 0 0" >> /etc/fstab
=== vergrößern ===
# Superuser werden
sudo su
# Containerdatei vergrößern, hier um 100 MByte
dd if=/dev/urandom bs=1M count=100 >> luks_container
# Container einhängen ohne das Dateisystem zu mounten
losetup -f
--> /dev/loop1
losetup /dev/loop1 luks_container
cryptsetup luksOpen /dev/loop1 test_luks_container
# gesamten verfügbaren Platz in der Containerdatei nutzbar machen
cryptsetup resize test_luks_container
# Dateisystem an die neue größe anpassen, Dateisystemprüfung vorher und nachher durchführen
fsck.ext4 /dev/mapper/test_luks_container
resize2fs -f/dev/mapper/test_luks_container
fsck.ext4 /dev/mapper/test_luks_container
===== EncFS =====
Laut EncFS Security Audit {en} vom 14.01.2014 enthält EncFS in der Version 1.7.4 einige potentielle Schwachstellen. Das Fazit der Prüfung: EncFS ist wahrscheinlich noch sicher, solange ein potentieller Angreifer nur (genau) eine Version der verschlüsselten Daten erhält, wie z.B. bei Diebstahl oder Verlust eines Datenträgers. Kann ein potentieller Angreifer allerdings mehr als eine Version der verschlüsselten Daten einsehen, ist EncFS laut der Sicherheitsprüfung nicht mehr geeignet. Die verbreitete Verwendung von EncFS zur Verschlüsselung von Daten in der Cloud ist ein solcher Risikofall.\\
Inzwischen wurde die Version 1.8.2 veröffentlicht, leider ohne explizite Anmerkungen oder Hinweise im Changelog {en} bezüglich des Audits (Stand: November 2015). Aus einer Diskussion zur Sicherheit im github Repository {en} geht hervor, dass die kritische Lücke Issue #9 {en} ist und voraussichtlich in Version 2.0 gefixt wird. Eine Version 2.0 {en}
wurde zwar angekündigt, aber bisher nicht veröffentlicht.\\
Quelle: [[https://wiki.ubuntuusers.de/EncFS/|https://wiki.ubuntuusers.de/EncFS/]]
# Superuser werden
sudo su
# Installation
apt-get install encfs cryptkeeper
# Gruppe "fuse" hinzufügen
groupadd fuse
# aktuellen Benutzer der Gruppe "fuse" hinzufügen
gpasswd -a fuse
# weiter als normaler Benutzer
exit
# beliebiges verschlüsseltes Verzeichnis (hier z.B. ~/foobar bzw. das versteckte Verzeichnisse ~/.foobar anlegen
encfs ~/.foobar ~/foobar
# EncFS Verzeichnis aus einem Script heraus mounten
encfs ~/.foobar ~/foobar --extpass'echo ""'
# oder auch so
echo "" | encfs -S ~/.foobar ~/foobar
# oder auch so
zenity --password | encfs -S ~/.foobar ~/foobar
# oder auch so
zenity --title="EncFS Password" --width=300 --ok-label="Mount" --entry --text="Please enter your EncFS Password" --hide-text | encfs -S ~/.foobar ~/foobar
# Verschlüsseltes Verzeichnis aushängen
fusermount -u ~/foobar
# Gnome Encfs Manager installieren
echo "deb http://ppa.launchpad.net/gencfsm/ppa/ubuntu xenial main" >> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install gnome-encfs-manager
===== eCryptfs =====
eCryptfs ist für die Verwendung mit dem [[https://www.strato.de/online-speicher/|HiDrive]] Angebot von [[http://www.strato.de|Strato]] in Verbindung mit ''rsync'' nicht geeignet da eCryptfs die Datei- und Verzeichnisnamen auf bis zu 255 Zeichen erweitert. Dem seht die maximal zulässige Dateinamenlänge von 251 bzw. eine Pfadlänge von 1020 Zeichen entgegen.\\ Quelle: [[https://www.strato.de/faq/article/2031/Wie-richte-ich-rSync-ein.html|https://www.strato.de/faq/article/2031/Wie-richte-ich-rSync-ein.html]]
# Installation
sudo apt-get install ecryptfs-utils
# weiter als normaler Benutzer
exit
# Verschlüsseltes Standardverzeichnis ~/Private bzw. die versteckten Verzeichnisse ~/.ecryptfs oder ~/.Private anlegen
ecryptfs-setup-private
# Standardverzeichnis ändern
mv .Private .Chr
ln -l .Chr .Private
mv Private Chr
cp .ecryptfs/Private.nmt .ecryptfs/Private_orig.nmt
echo "/home//Chr" > .ecryptfs/Private.nmt
# alles wieder los werden
ecryptfs-umount-private
cd ~
sudo su
rm -rf Private .Private .ecryptfs
===== Cryptomator =====
Installation über eine externe Paketquelle - hier exemplarisch für Ubuntu 18.04:
sudo add-apt-repository ppa:sebastian-stenzel/cryptomator
sudo apt-get update
sudo apt-get install cryptomator