GoCryptFS
GoCryptFS ist ein FUSE-Dateisystem zur Verschlüsselung auf Dateiebene. Es ist eine Alternative zu EncFS und eCryptfs. Unterstützt wird Linux, OS X und Windows.
Beschreibung
Installation
sudo apt install gocryptfs
Anwendungen
Verzeichnis verschlüsseln
Verzeichnisse anlegen
$ mkdir ~/CODIERT ~/KLARTEXT ~/.config/gocryptfs
Soll das Verzeichnis CODIERT versteckt sein, ist dem Verzeichnisnamen ein Punkt „.“ voranzustellen.
GoCryptFS initialisieren
Mit der Initialisierung wird neben der Konfigurationsdatei eine Datei gocryptfs.diriv erstellt, welche die verschlüsselte Verzeichnisstruktur enthält.
gocryptfs -init -config ~/.config/gocryptfs/KONFDATEI.conf ~/CODIERT
Verzeichnis KLARTEXT eingehängen
gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf ~/CODIERT ~/KLARTEXT
Nach Gebrauch KLARTEXT aushängen
fusermount -u ~/KLARTEXT
Passwörter
Verwendung
Zum Entschlüsseln der Dateien ist die GoCryptFS-Konfigurationsdatei und das Passwort erforderlich.
- Ist ein Angreifer im Besitz der GoCryptFS-Konfigurationsdatei, könnte er, z.B. durch Ausprobieren, das Passwort herausfinden und die Dateien entschlüsseln.
- Ohne Angabe der Option -config speichert GoCryptFS die Konfigurationsdatei unter dem Namen gocryptfs.conf in das Verzeichnis mit den verschlüsselten Dateien.
- Werden die verschlüsselten Dateien in einer Cloud oder auf Datenträgern gespeichert, die einem Angreifer in die Hände fallen können, ist es ratsam, die Konfigurationsdatei getrennt von den verschlüsselten Dateien zu speichern.
Passwort oder Konfigurationsdatei verloren
Liegt der Masterkey aus der Initialisierung noch vor, können die verschlüsselten Daten mit dessen Eingabe im Terminal geöffnet werden, wobei eine eventuell vorhandene Konfigurationsdatei ignoriert wird.
gocryptfs -masterkey=stdin
Mit der Option -masterkey <Masterkey> können die verschlüsselten Daten, z.B. über ein Skript, ohne Konfigurationsdatei geöffnet werden.
- Hierbei ist zu berücksichtigen, dass dann der Masterkey mit ps -auxwww aus dem Hauptspeicher ausgelesen werden kann.
- Dieses Risiko liegt bei der Option -masterkey=stdin nicht vor.
Passwort ändern
Mit dem Befehl
gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -passwd ~/CODIERT
kann man das Kennwort der verschlüsselten Ordners ändern.
- Gemeinsam mit der Option -masterkey kann ein neues Passwort vergeben werden, wenn man das Passwort vergessen hat, aber der Masterkey vorliegt.
- Weitere Informationen enthält die Manpage zu GoCryptFS.
Hintergründe
Die Verschlüsselung des Dateiinhalts erfolgt im Forward Mode mit AES-GCM und im Reverse Mode mit AES-SIV-512.
- Der hierfür benötigte Schlüssel wird mit dem Scrypt Algorithmus aus dem Masterkey abgeleitet.
- Die Dateinamen werden im Encrypt-Mix-Encrypt – Verfahren verschlüsselt.
- Jede Verschlüsselung bietet mögliche Angriffswege.
- Daher wird die Sicherheit der Verschlüsselung grundsätzlich erhöht, wenn man Daten mit verschiedenen Programmen geschichtet verschlüsselt.
- Aus den von GoCryptfs verschlüsselten Dateien kann ein Angreifer erkennen, wie viele Dateien man hat, und welche Größe diese haben.
- Daraus könnten Rückschlüsse auf den Inhalt der Dateien möglich sein.
- Dem kann man entgegenwirken, indem man die Dateien vor der Verschlüsselung zerlegt oder in Container zusammenfasst.
Forward und Reverse Mode
- Im Forward Mode werden die Daten verschlüsselt gespeichert, der entschlüsselte Lese- und Schreibzugriff erfolgt über das FUSE-Dateisystem.
- Dieser Betriebsmodus könnte beispielsweise eingesetzt werden, um die Daten in der Cloud zu speichern und auf diese von verschiedenen Geräten zuzugreifen.
- Der Reverse Modus dient dazu Dateien, die unverschlüsselt (lokal) gespeichert sind, zur Datensicherung zu verschlüsseln.
- Die verschlüsselten Dateien bestehen nur, solange das FUSE-Dateisystem eingehängt ist.
- Aus dem FUSE-Dateisystem können die verschlüsselten Dateien manuell oder mit einem Datensicherungsprogramm (z.B. rsync) in einen dauerhaften Speicher kopiert werden.
Forward Mode
Die Dateien werden im Verzeichnis CODIERT verschlüsselt gespeichert.
- Der Inhalt von CODIERT wird im Verzeichnis KLARTEXT über das FUSE Dateisystem entschlüsselt zum lesen und schreiben angezeigt, wenn KLARTEXT eingehängt ist.
Optionen
Usage: gocryptfs -init|-passwd|-info [OPTIONS] CIPHERDIR or gocryptfs [OPTIONS] CIPHERDIR MOUNTPOINT
Common Options (use -hh to show all): -aessiv Use AES-SIV encryption (with -init) -allow_other Allow other users to access the mount -i, -idle Unmount automatically after specified idle duration -config Custom path to config file -ctlsock Create control socket at location -extpass Call external program to prompt for the password -fg Stay in the foreground -fsck Check filesystem integrity -fusedebug Debug FUSE calls -h, -help This short help text -hh Long help text with all options -init Initialize encrypted directory -info Display information about encrypted directory -masterkey Mount with explicit master key instead of password -nonempty Allow mounting over non-empty directory -nosyslog Do not redirect log messages to syslog -passfile Read password from file -passwd Change password -plaintextnames Do not encrypt file names (with -init) -q, -quiet Silence informational messages -reverse Enable reverse mode -ro Mount read-only -speed Run crypto speed test -version Print version information -- Stop option parsing
Links
Interne Links
Weblinks
- Projektseite: https://nuetzlich.net/gocryptfs/
- Quellcode und Dokumentation: https://github.com/rfjakob/gocryptfs
- AES-GCM: https://eprint.iacr.org/2004/193.pdf
- AES-SIV-512: https://tools.ietf.org/html/rfc5297
- Scrypt Schlüsselableitung: https://tools.ietf.org/html/rfc7914
- Encrypt-Mix-Encrypt : https://github.com/rfjakob/eme
- Sicherheitsgutachten: https://defuse.ca/audits/gocryptfs.htm
- Version für Windows: https://github.com/bailey27/cppcryptfs