[[Vorlage(Getestet, Jammy)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis(1)]] [https://nuetzlich.net/gocryptfs GocryptFS] {de} ist als [:FUSE:] Dateisystem in der Sprache [:Go:] implementiert und erzeugt zu jeder Klartext-Datei jeweils eine verschlüsselte Datei. Das Projekt wurde von [:Archiv/EncFS:EncFS] inspiriert und hat den Anspruch, Schwachstellen von EncFS zu beheben. GocryptFS wurde für Linux entwickelt, unter Mac OS X läuft es in Beta-Qualtität (funktioniert also weitestgehend), für Windows gibt es das in C++ reimplementierte cppcryptfs. Unterstützung für Android gibt es mit DroidFS auf Github. Die Verschlüsselung des Dateiinhalts erfolgt im Forward-Modus mit AES-GCM und im Reverse-Modus 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 [:Daten_verschlüsseln: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, in dem man die Dateien vor der Verschlüsselung [:split:zerlegt] oder in Container zusammenfasst. = Installation = Folgendes Paket muss installiert werden: {{{#!vorlage Paketinstallation gocryptfs, universe }}} = Verwendung = GoCryptFS hat zwei Betriebsmodi: * Forward-Modus und * Reverse-Modus. Im Forward-Modus 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. Hierzu wird das Verzeichnis durch den Reverse-Modus als nur lesbar eingebunden und erscheinen im anderen Verzeichnis verschlüsselt. 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 (bspw. [:rsync:]) in einen dauerhaften Speicher kopiert werden. 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. == Forward-Modus == Die Dateien werden im Verzeichnis '''GEHEIMTEXT''' verschlüsselt gespeichert. Der Inhalt von '''GEHEIMTEXT''' wird im Verzeichnis '''KLARTEXT''' über das FUSE Dateisystem entschlüsselt zum lesen und schreiben angezeigt, wenn '''KLARTEXT''' eingehängt ist. 1. Verzeichnisse anlegen {{{#!vorlage Befehl mkdir ~/GEHEIMTEXT ~/KLARTEXT ~/.config/gocryptfs }}} Soll das Verzeichnis GEHEIMTEXT versteckt sein, ist dem Verzeichnisnamen ein Punkt „.“ voranzustellen. 2. GocryptFS initialisieren Mit der Initialisierung wird neben der Konfigurationsdatei eine Datei '''gocryptfs.diriv''' erstellt, welche die verschlüsselte Verzeichnisstruktur enthält. Diese Datei wird ebenfalls für das spätere Entschlüsseln benötigt! [post:9287287: Hinweis im Forum] {{{#!vorlage Befehl gocryptfs -init -config ~/.config/gocryptfs/KONFDATEI.conf ~/GEHEIMTEXT }}} 3. Verzeichnis '''KLARTEXT''' eingehängen: {{{#!vorlage Befehl gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf ~/GEHEIMTEXT ~/KLARTEXT }}} 4. Nach Gebrauch '''KLARTEXT''' aushängen: {{{#!vorlage Befehl fusermount -u ~/KLARTEXT }}} == Reverse-Modus == Im Reverse-Modus wird der Inhalt von GEHEIMTEXT über das FUSE-Dateisystem „read-only“ angezeigt, wenn dieses eingehängt ist. So kann beispielsweise ein verschlüsseltes Backup des HOME-Verzeichnisses angelegt werden. 1. Verzeichnis zum Speichern von GoCryptFS-Konfigurationsdateien erstellen {{{#!vorlage Befehl mkdir ~/.config/gocryptfs/ }}} 2. GocryptFS initialisieren Ohne die Option `-config` wird die Konfigurationsdatei als '''~/gocryptfs.conf''' gespeichert. {{{#!vorlage Befehl gocryptfs -init -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~ }}} 3. Verzeichnis '''/mnt/gocryptfs/home''' anlegen Hiermit wird ein Verzeichnis angelegt, wo später die verschlüsselten Dateien aus dem HOME-Verzeichnis zu sehen sind. Dabei dient '''/mnt/gocryptfs/home''' als Beispiel. Das Verzeichnis kann auch an anderer Stelle angelegt werden. Es sollte nur ''außerhalb'' des HOME-Verzeichnisses sein. {{{#!vorlage Befehl sudo mkdir -p /mnt/gocryptfs/home sudo chown $USER:$USER /mnt/gocryptfs/home }}} 4. Verzeichnis einhängen Im Reverse-Modus können Dateien mit den Optionen `-exclude`, `-exclude-wildcard` und `-exclude-from` von der verschlüsselten Ansicht ausgeschlossen werden. Soll rsync für die Datensicherung verwendet werden, sollte, um Fehler und Warnmeldungen zu vermeiden, der Ausschluss beim Einhängen mit GoCryptFS erfolgen. {{{#!vorlage Befehl gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~ /mnt/gocryptfs/home }}} 5. Datensicherung durchführen Innerhalb von '''/mnt/gocryptfs/home''' liegt der Inhalt des HOME-Verzeichnisses in verschlüsselter Form. Diese Dateien können nun in ein weiteres BACKUP-Verzeichnis kopiert werden. {{{#!vorlage Befehl cp -a /mnt/gocryptfs/home ~/BACKUP }}} 6. '''/mnt/gocryptfs/home''' aushängen Am Ende muss das Verzeichnis wieder ausgehangen werden. Die Dateien verbleiben im HOME-Verzeichnis und verschwinden aus '''/mnt/gocryptfs/home'''. {{{#!vorlage Befehl fusermount -u /mnt/gocryptfs/home }}} = Problembehebung = == Passwort vergessen 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. {{{#!vorlage Befehl gocryptfs -masterkey=xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx ~/GEHEIMTEXT ~/KLARTEXT }}} Mit der Option `-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 {{{#!vorlage Befehl gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -passwd ~/GEHEIMTEXT }}} 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. = Links = == intern == * [:Archiv/EncFS:EncFS] – Vorgänger von GocryptFS * [:Daten_verschlüsseln:Daten verschlüsseln] * [:FUSE:] * [:Go:] == extern == * Projektseite: [https://nuetzlich.net/gocryptfs] {en} * Quellcode und Dokumentation: [https://github.com/rfjakob/gocryptfs] {en} * AES-GCM: [https://eprint.iacr.org/2004/193.pdf] {en} * AES-SIV-512: [https://tools.ietf.org/html/rfc5297] {en} * Scrypt Schlüsselableitung: [https://tools.ietf.org/html/rfc7914] {en} * Encrypt-Mix-Encrypt : [https://github.com/rfjakob/eme] {en} * Sicherheitsgutachten: [https://defuse.ca/audits/gocryptfs.htm] {en} * Version für Windows: [https://github.com/bailey27/cppcryptfs] {en} #tag: Verschlüsselung, Dateisystem, Sicherheit