Datei-Verschlüsselung
Fehler, Verbesserungen oder Anmerkungen können mir gern per Email geschickt werden.
Vorraussetzungen
- Verständnis von Dateistrukturen.
- Abstraktion von Klartext-Dateistrukturen und Cipher-Dateistrukturen.
Grundlagen
Akteure
In der Kryptographie werden fiktionale Personen verwendet um Motivationen und Handlungen abzubilden. Typische Namen sind:
- Alice: Absenderin einer Nachricht, kryptografische Akteurin
- Bob: Empfänger einer Nachricht, kryptografischer Aktuer
- Carol, Carlos, Charlie: beliebige Dritte Person
- Craig: Cracker, Computerkriminelle
- Dan, Dave, David: weitere beliebige Dritte Person
- Eve: Eavesdropper, passive Mithörerin (Netzwerkbetreiber)
- Dragon: Cloudbetreiberin wie z.B. Dropbox
- Mallory, Marvin, Mercury: malicious attacker, böswillige Angreifer (oft im Fall von Man-in-the-middle-Angriffe verwendet)
In der Regel möchte Alice eine geheime Nachricht an Bob senden. Carol und Dan sind Personen die irgendwie auf dem Weg die Nachricht (ohne zutun) sehen könnten. Craig möchte die Nachricht lesen. Mallory hat sich aktiv, böswillig und geheim Zugriff auf die Kommunikation zwischen Alive und Bob verschafft und könnte diese auch verändern. Eve hat passiven Zugriff auf die Kommunikation, kann sie also nicht verändern. Dragon ist der Postdienstleister, wo die Nachrichten (zwischenzeitlich) aufbewahrt werden.
Der Standard-Fall
In einem System, welches aufgesetzt ist und läuft lässt sich am Setup durch die Nutzer nichts mehr ändern. Die Dateisysteme haben entweder eine Verschlüsseleung oder eben nicht. Es gibt Möglichkeiten, um den Nutzern eine Verschlüsselung anzubieten, welche sie selbst konfigurieren. Das kann z.B. das ganze Home oder nur einzelne Ordner und Dateien umfassen. Die Verschlüsseung von Daten bevor diese bei einem Cloud-Anbieter gespeichert werden ist essentiell. Cloud heißt anderer, fremder Leute Computer. Man würde Bankunterlagen auch nicht im Treppenhaus eines Mehrfamilienhauses aufbewahren.
Datenintegrität
Datenintegrität bildet die Grundlage für zuverlässige und vertrauensvolle Datenverarbeitung (von der Erstellung über alle Änderungen bis zur Löschung).
Zur Abgrenzung: Datensicherheit meint die Maßnahmen für die Unversehrtheit der Daten. Datenqulität bewertet die Struktur und den Inhalt von Daten (z.B. Vollständigkeit, Korrektheit und Relevanz).
Datensicherheit
Ergänzend zur Datenintegrität geht es bei der Datensicherheit um den Schutz vor unberechtigten Zugriffen oder Veränderungen und im Falle das diese geschehen sind um deren Erkennung. Hat jemand unberechtigtes meine Daten gelesen? Hat jemand Ergänzungen, Veränderungen oder Löschungen vorgenommen?
Datenqualität
Dafür sind die Urheber/Autoren von Inhalten verantwortlich und in diesem Anwendungsfall nicht relevant.
Reverse mode / Virtual filesystem
Als Standard werden leider immer noch Handies, PCs und andere Computer unverschlüsselt installiert. Die Daten liegen damit ohne Schutz auf den Datenträgern. Verloren, gestohlen oder kopiert können so leicht andere Menschen Zugriff erlangen. Man kann in diesen Fällen auf eine Ordner-basierte Verschlüsselung setzten. (Das Risiko beleibt, dass man versehentlich Daten unverschlüsselt speichert.) Der große Vorteil ist, dass man den verschlüsselten Ordner, so wie er ist, mit einer Cloud synchronisieren kann.
Höheren Schutz gibt es, wenn die Festplatte schon einen Layer Verschlüsselung für eine Partition hat. Damit stellt das Betriebssystem sicher, dass alles, was auf diese Partition geschrieben wird, verschlüsselt wird. Unachtsamkeiten bei der Ablage führen damit nicht zu einem Datenleck. Nun ergibt es für einen normalen Anwendungsfall (also kein Geheimdienstmitarbeiter) wenig sind, darin nochmals eine Ordner-basierte Verschlüsselung laufen zu haben - Doppelt verschlüsselt. Hier helfen Werkzeuge, welche die Verschlüsselung virtuell bereit stellen. Damit bleiben die Daten im Klartext auf der Festplatte lesbar. Es wird ein Mount erzeugt, welcher die Verschlüsselung repräsentiert wie diese im o.g. Beispiel auf der unverschlüsselten Partition liegen würde. Damit benötigt man nur mehr Rechenleistung zum synchronisieren.
Directory flattening
Ein Ordner mit vielen Unterordnern, welche jeweils ca. 10-20 Dateien enthalten die 3-5 MB groß sind? Klingt sehr nach einer Musiksammlung, oder? Das war noch eine triviale Analyse. Man kann sich viel komplexere Korrelationen vorstellen, Fotoalben, bis hin zu typischen Strukturen beliebter Software (z.B. Dateiablage des Profils vom Web-Browser). Viele Ordner-basierten Verschlüsselungen verschlüsseln zwar die Ordnernamen, Dateinamen, Dateiinhalte und deren Metadaten selbst, die Struktur bleibt häufig erhalten. Ändert man dann an bekannter Stelle im unverschlüsselten Bereich eine Datei kann man 1-zu-1 sehen, dass diese auch in der verschlüsselten Repräsentation wirksam wird.
Wenn alle (verschlüsselten) Dateien unabhängig von ihrer Ablage in der originalen Ordnerstruktur nebeneinander in einem Verzeichnis liegen, wäre es ziemlich schwer, die ursprüngliche Struktur zu erkennen oder erraten = Directory flattening.
Identical files leak
Oft passiert es, dass man eine Datei (versehentlich) in mehreren Ordnern speichert. Wenn die Datei an beiden Orten gleich verschlüsselt wurde, kann dies für Angriffe genutzt werden - Man findet gleiche Dateien an verschiedenen Orten.
Identical names leak
Ebenso kann es passieren, dass Dateien den gleichen Namen tragen, egal ob gleicher Inhalt oder nicht. Wenn die Dateinamenverschlüssung in diesen Fällen gleich wäre, kann dies ebenso für Angriffe verwendet werden.
Prefix leak
Ein extremes Beispiel für o.g. Problem wäre sogar, wenn gleiche Dateinamens-Bestandteile gleich verschlüsselt würden.
Container-basierte Verschlüsselungswerkzeuge
Container soll hier stellvertretend für Datei-Container, geanze Festplatten oder Partitionen auf Festplatten stehen. Sie sind wichtig für die Verschlüsselung von ganzen Systemen. Zur Laufzeit muss ein Passwort/Key für die Öffnung/Entschlüsselung eingegeben werden. Innerhalb des laufenden Systems sind die darin enthaltenen Informationen dann nutzbar.
Man sollte grundsätzlich Datenträger immer verschlüsselt verwenden. Bei Diebstahl oder Entsorgung entfallen damit viele Datensicherheits-Probleme. So muss zu Unbrauchbarmachung lediglich der Header sicher überschrieben werden.
luks / dm-crypt
- Standard-Verschlüsselungsmethode für Linux-Systeme
- luks (Linux Unified Key Setup) ist eine Erweiterung von dm-crypt
- Es erleichtert die Verwaltung von verschlüsselten Partitionen erheblich
- Kein Wissen über die verwendete Verschlüsselungsmethode zu merken (im Header gespeichert)
- Mehrere Schlüssel je Partition möglich
- Passwortänderung ohne Änderung der Verschlüsselung selbst
- dm-crypt
- erlaubt eine abstreitbare Verschlüsselung
FileVault
- Standard-Verschlüsselungsmethode für macOS
Bitlocker
- Standard-Verschlüsselungsmethode für Windows
- Längenbegrenzung bei Passwort! (WTF!)
Veracrypt / Truecrypt
- Cross-Plattform-Verschlüsselung von Partitionen und Containern
- Windows-System-Verschlüssung möglich (und BitLocker vorzuziehen)
Datei-basierte Verschlüsselungswerkzeuge
In der Regeln stehen Datei- bzw. Ordner-basierte Verschlüsselungsmethoden für mehrere Plattformen zur Verfügung. Sie sind unabhängig vom verwendeten Dateisystem oder einer Verschlüsselung der Partition. Sie eignen sich damit bestens um Dateien gegenüber Cloud-Anbietern zu verschlüsseln.
Zu beachten sind:
- Sicherheit und Zuverlässigkeit des Tools
- Effizienz in Durchsatz (Bytes pro Zeit) und Ressourcen (CPU-Auslastung)
- Verschlüsselungsmethode
- Integritätsmethode
- Schutz vor Identical names leak
- Schutz vor Prefix leak
- Schutz durch directory flattening
- Verschleierung der Dateigröße (Split oder Padding (zusätzliches Auffüllen bis zum nächsten Block))
- Reverse mode
Pakete für Debian:
apt install gocryptfs cryfs securefsPakete für Fedora:
dnf install sirikali gocryptfs ecryptfs-utils
dnf copr enable fcsm/cryfs
dnf install cryfsgocryptfs
- Sicherheit: Ein Dragon kann die Dateien und deren änderungen nachverfolgen und somit auch ändern, wenn frühere Zustände bekannt sind. Dragon hat keinen Zugriff auf die Klartext-Inhalte.
- Effizienz:
- Verschlüsselungsmethode: AES
- AES-256-GCM (forward mode), mit Key Encryption Key (KEK)
- AES-SIV (reverse mode)
- Integritätsmethode:
- Schutz vor Identical names leak: ja, kann durch einen Dragon ausgehebelt werden
- Schutz vor Prefix leak: ja
- Directory flattening: nein
- File size obfuscation: nein
- Reverse mode: ja
# Vars
DIRNAME="directory"
CIPHERPATH=/media/storage/${DIRNAME}.gocfscipher
PLAINPATH==/media/storage/${DIRNAME}.gocfsplain
# Dirs
mkdir -p ~/.config/gocryptfs/ ${CIPHERPATH} ${PLAINPATH}
# Init
gocryptfs -init -config ~/.config/gocryptfs/${DIRNAME}.conf -reverse ${DIRNAME}
# Mount
gocryptfs -config ~/.config/gocryptfs/${DIRNAME}.conf -reverse ${PLAINPATH} ${CIPHERPATH}
gocryptfs -reverse ${DIRNAME} ${PLAINPATH}
# Backup
cp -a ${CIPHERPATH} ${CLOUDPATH}
# Umount
fusermount -u ${CIPHERPATH}
# Change pwd
gocryptfs -config ~/.config/gocryptfs/${DIRNAME}.conf -passwd ${CIPHERPATH}CryFS
- Angepasst an die Anforderungen zur Nutzung mit Cloud-Speicherung.
- directory flattening
- Umfangreicher schutz vor diversen Attacken.
- Kein Reverse-Mode?
- Starker initialer Speicherverbrauch.
- “The increase in security when compared to other file systems comes at a performance cost.” [ 1 ]
# Vars
DIRNAME="directory"
CIPHERPATH="/media/storage/${DIRNAME}.cryfscipher"
PLAINPATH="/media/storage/${DIRNAME}.cryfsplain"
# Dirs
mkdir -p ${CIPHERPATH} ${PLAINPATH}
# Init
cryfs ${CIPHERPATH} ${PLAINPATH}
# Backup
cp -a ${CIPHERPATH} ${CLOUDPATH}
# Umount
fusermount -u ${PLAINPATH}
# Change pwd
# ... is a missing featuresecurefs
- directory flattening
encfs
- Nicht benutzen.
ecryptfs
- Standard für Verschlüsselung von Nutzer-Home-Verzeichnissen unter Linux
- Nicht für Cloud-Backups geeignet
- Anfällig für prefix leak:
~$ tree Private .Private
Private
├── 1234567890abcdef_x
└── 1234567890abcdef_y
.Private
├── ECRYPTFS_FNEK_ENCRYPTED.FXZq4GtMzPp81-Qjpyp9TymLdIIcJGDzYP-wOBXbOqzuQ44rdGVv7xWcENv5ufXHJ8C2otaetvM0j3U-
└── ECRYPTFS_FNEK_ENCRYPTED.FXZq4GtMzPp81-Qjpyp9TymLdIIcJGDzYP-wOBXbOqzuQ44rdGVv7xWcEOhxx2ZhSt7ar8H.w3nVpnw-DroidFS
CryptoMator
SiriKali
ZuluMount
Quellen
- gocryptfs
- https://nuetzlich.net/gocryptfs/
- https://nuetzlich.net/gocryptfs/comparison/
- https://nuetzlich.net/gocryptfs/reverse_mode_crypto/
- https://manpages.debian.org/buster/gocryptfs/gocryptfs.1.en.html
- https://packages.debian.org/de/buster/gocryptfs
- https://wiki.archlinux.org/index.php/Gocryptfs
- https://defuse.ca/audits/gocryptfs.htm
- https://github.com/rfjakob/gocryptfs/issues/90
- https://wiki.ubuntuusers.de/GoCryptFS/
- CryFS
- CryptoMator
- securefs
- DroidFS
- Scrypt - Schlüsselableitung
- Quasi die Verbesserung von: bcrypt, PBKDF2.
- https://en.wikipedia.org/wiki/Scrypt
- encfs
- ecryptfs
- Allgemein