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 securefs

Pakete für Fedora:

dnf install sirikali gocryptfs ecryptfs-utils
dnf copr enable fcsm/cryfs
dnf install cryfs

gocryptfs

  • 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 feature

securefs

  • 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